@formio/js 5.0.0-rc.20 → 5.0.0-rc.22
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/formio.embed.css +1 -39
- package/dist/formio.embed.js +2 -90
- package/dist/formio.embed.min.js +1 -1
- package/dist/formio.embed.min.js.LICENSE.txt +1 -1
- package/dist/formio.form.js +58 -36
- package/dist/formio.form.min.js +1 -1
- package/dist/formio.form.min.js.LICENSE.txt +1 -1
- package/dist/formio.full.js +59 -37
- package/dist/formio.full.min.js +1 -1
- package/dist/formio.full.min.js.LICENSE.txt +1 -1
- package/dist/formio.js +2 -2
- package/dist/formio.min.js +1 -1
- package/dist/formio.min.js.LICENSE.txt +1 -1
- package/dist/formio.utils.js +1 -1
- package/dist/formio.utils.min.js +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 +1 -0
- package/lib/cjs/Element.js +5 -0
- package/lib/cjs/Embed.d.ts +21 -1
- package/lib/cjs/Embed.js +211 -308
- package/lib/cjs/Form.d.ts +1 -1
- package/lib/cjs/Form.js +1 -1
- package/lib/cjs/Webform.d.ts +6 -6
- package/lib/cjs/Webform.js +6 -6
- package/lib/cjs/WebformBuilder.js +1 -1
- package/lib/cjs/components/_classes/component/Component.d.ts +16 -6
- package/lib/cjs/components/_classes/component/Component.js +26 -6
- package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +1 -0
- package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +4 -0
- package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.d.ts +1 -0
- package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.js +4 -0
- package/lib/cjs/components/address/Address.js +5 -0
- package/lib/cjs/components/button/Button.d.ts +1 -0
- package/lib/cjs/components/button/Button.js +3 -0
- package/lib/cjs/components/checkbox/Checkbox.d.ts +28 -0
- package/lib/cjs/components/checkbox/Checkbox.js +17 -2
- package/lib/cjs/components/columns/Columns.d.ts +1 -0
- package/lib/cjs/components/columns/Columns.js +3 -0
- package/lib/cjs/components/container/Container.js +3 -0
- package/lib/cjs/components/content/Content.d.ts +1 -0
- package/lib/cjs/components/content/Content.js +3 -0
- package/lib/cjs/components/datamap/DataMap.d.ts +1 -0
- package/lib/cjs/components/datamap/DataMap.js +3 -0
- package/lib/cjs/components/datetime/DateTime.d.ts +19 -0
- package/lib/cjs/components/datetime/DateTime.js +9 -10
- package/lib/cjs/components/day/Day.d.ts +21 -0
- package/lib/cjs/components/day/Day.js +12 -10
- package/lib/cjs/components/day/fixtures/comp5.d.ts +29 -0
- package/lib/cjs/components/day/fixtures/comp5.js +32 -0
- package/lib/cjs/components/day/fixtures/index.d.ts +2 -1
- package/lib/cjs/components/day/fixtures/index.js +3 -1
- package/lib/cjs/components/fieldset/Fieldset.d.ts +1 -0
- package/lib/cjs/components/fieldset/Fieldset.js +3 -0
- package/lib/cjs/components/file/File.d.ts +21 -1
- package/lib/cjs/components/file/File.js +15 -7
- package/lib/cjs/components/form/Form.d.ts +1 -0
- package/lib/cjs/components/form/Form.js +5 -1
- package/lib/cjs/components/html/HTML.d.ts +1 -0
- package/lib/cjs/components/html/HTML.js +3 -0
- package/lib/cjs/components/number/Number.d.ts +20 -1
- package/lib/cjs/components/number/Number.js +10 -15
- package/lib/cjs/components/panel/Panel.d.ts +1 -0
- package/lib/cjs/components/panel/Panel.js +3 -0
- package/lib/cjs/components/radio/Radio.d.ts +19 -0
- package/lib/cjs/components/radio/Radio.js +30 -0
- package/lib/cjs/components/recaptcha/ReCaptcha.d.ts +1 -0
- package/lib/cjs/components/recaptcha/ReCaptcha.js +3 -0
- package/lib/cjs/components/select/Select.d.ts +19 -1
- package/lib/cjs/components/select/Select.js +39 -4
- package/lib/cjs/components/select/fixtures/comp19.d.ts +23 -0
- package/lib/cjs/components/select/fixtures/comp19.js +36 -0
- package/lib/cjs/components/select/fixtures/index.d.ts +2 -1
- package/lib/cjs/components/select/fixtures/index.js +3 -1
- package/lib/cjs/components/selectboxes/SelectBoxes.d.ts +26 -1
- package/lib/cjs/components/selectboxes/SelectBoxes.js +8 -1
- package/lib/cjs/components/signature/Signature.d.ts +21 -0
- package/lib/cjs/components/signature/Signature.js +9 -1
- package/lib/cjs/components/survey/Survey.d.ts +21 -0
- package/lib/cjs/components/survey/Survey.js +7 -1
- package/lib/cjs/components/table/Table.d.ts +1 -0
- package/lib/cjs/components/table/Table.js +3 -0
- package/lib/cjs/components/tabs/Tabs.d.ts +1 -0
- package/lib/cjs/components/tabs/Tabs.js +3 -0
- package/lib/cjs/components/tags/Tags.d.ts +21 -0
- package/lib/cjs/components/tags/Tags.js +11 -1
- package/lib/cjs/components/tags/fixtures/comp6.d.ts +17 -0
- package/lib/cjs/components/tags/fixtures/comp6.js +20 -0
- package/lib/cjs/components/tags/fixtures/index.d.ts +2 -1
- package/lib/cjs/components/tags/fixtures/index.js +3 -1
- package/lib/cjs/components/textfield/TextField.d.ts +21 -0
- package/lib/cjs/components/textfield/TextField.js +7 -1
- package/lib/cjs/components/time/Time.d.ts +8 -1
- package/lib/cjs/components/well/Well.d.ts +1 -0
- package/lib/cjs/components/well/Well.js +3 -0
- package/lib/cjs/formio.embed.d.ts +2 -1
- package/lib/cjs/formio.embed.js +96 -1
- package/lib/cjs/formio.form.d.ts +4 -3
- package/lib/cjs/formio.form.js +17 -8
- package/lib/cjs/licenses/Licenses.d.ts +7 -0
- package/lib/cjs/licenses/Licenses.js +22 -0
- package/lib/cjs/licenses/index.d.ts +2 -0
- package/lib/cjs/licenses/index.js +7 -0
- package/lib/cjs/utils/utils.d.ts +10 -0
- package/lib/cjs/utils/utils.js +21 -1
- package/lib/mjs/CDN.d.ts +1 -0
- package/lib/mjs/CDN.js +1 -0
- package/lib/mjs/Element.js +5 -0
- package/lib/mjs/Embed.d.ts +21 -1
- package/lib/mjs/Embed.js +208 -322
- package/lib/mjs/Form.d.ts +1 -1
- package/lib/mjs/Form.js +1 -1
- package/lib/mjs/Webform.d.ts +6 -6
- package/lib/mjs/Webform.js +6 -6
- package/lib/mjs/WebformBuilder.js +1 -1
- package/lib/mjs/components/_classes/component/Component.d.ts +16 -6
- package/lib/mjs/components/_classes/component/Component.js +26 -6
- package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +1 -0
- package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +4 -0
- package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.d.ts +1 -0
- package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.js +4 -0
- package/lib/mjs/components/address/Address.js +5 -0
- package/lib/mjs/components/button/Button.d.ts +1 -0
- package/lib/mjs/components/button/Button.js +4 -1
- package/lib/mjs/components/checkbox/Checkbox.d.ts +28 -0
- package/lib/mjs/components/checkbox/Checkbox.js +18 -3
- package/lib/mjs/components/columns/Columns.d.ts +1 -0
- package/lib/mjs/components/columns/Columns.js +3 -0
- package/lib/mjs/components/container/Container.js +4 -1
- package/lib/mjs/components/content/Content.d.ts +1 -0
- package/lib/mjs/components/content/Content.js +3 -0
- package/lib/mjs/components/datamap/DataMap.d.ts +1 -0
- package/lib/mjs/components/datamap/DataMap.js +4 -1
- package/lib/mjs/components/datetime/DateTime.d.ts +19 -0
- package/lib/mjs/components/datetime/DateTime.js +11 -12
- package/lib/mjs/components/day/Day.d.ts +21 -0
- package/lib/mjs/components/day/Day.js +16 -14
- package/lib/mjs/components/day/fixtures/comp5.d.ts +29 -0
- package/lib/mjs/components/day/fixtures/comp5.js +30 -0
- package/lib/mjs/components/day/fixtures/index.d.ts +2 -1
- package/lib/mjs/components/day/fixtures/index.js +2 -1
- package/lib/mjs/components/fieldset/Fieldset.d.ts +1 -0
- package/lib/mjs/components/fieldset/Fieldset.js +3 -0
- package/lib/mjs/components/file/File.d.ts +21 -1
- package/lib/mjs/components/file/File.js +16 -8
- package/lib/mjs/components/form/Form.d.ts +1 -0
- package/lib/mjs/components/form/Form.js +6 -2
- package/lib/mjs/components/html/HTML.d.ts +1 -0
- package/lib/mjs/components/html/HTML.js +3 -0
- package/lib/mjs/components/number/Number.d.ts +20 -1
- package/lib/mjs/components/number/Number.js +11 -12
- package/lib/mjs/components/panel/Panel.d.ts +1 -0
- package/lib/mjs/components/panel/Panel.js +3 -0
- package/lib/mjs/components/radio/Radio.d.ts +19 -0
- package/lib/mjs/components/radio/Radio.js +34 -1
- package/lib/mjs/components/recaptcha/ReCaptcha.d.ts +1 -0
- package/lib/mjs/components/recaptcha/ReCaptcha.js +3 -0
- package/lib/mjs/components/select/Select.d.ts +19 -1
- package/lib/mjs/components/select/Select.js +41 -6
- package/lib/mjs/components/select/fixtures/comp19.d.ts +23 -0
- package/lib/mjs/components/select/fixtures/comp19.js +34 -0
- package/lib/mjs/components/select/fixtures/index.d.ts +2 -1
- package/lib/mjs/components/select/fixtures/index.js +2 -1
- package/lib/mjs/components/selectboxes/SelectBoxes.d.ts +26 -1
- package/lib/mjs/components/selectboxes/SelectBoxes.js +8 -1
- package/lib/mjs/components/signature/Signature.d.ts +21 -0
- package/lib/mjs/components/signature/Signature.js +9 -1
- package/lib/mjs/components/survey/Survey.d.ts +21 -0
- package/lib/mjs/components/survey/Survey.js +8 -2
- package/lib/mjs/components/table/Table.d.ts +1 -0
- package/lib/mjs/components/table/Table.js +3 -0
- package/lib/mjs/components/tabs/Tabs.d.ts +1 -0
- package/lib/mjs/components/tabs/Tabs.js +3 -0
- package/lib/mjs/components/tags/Tags.d.ts +21 -0
- package/lib/mjs/components/tags/Tags.js +12 -2
- package/lib/mjs/components/tags/fixtures/comp6.d.ts +17 -0
- package/lib/mjs/components/tags/fixtures/comp6.js +18 -0
- package/lib/mjs/components/tags/fixtures/index.d.ts +2 -1
- package/lib/mjs/components/tags/fixtures/index.js +2 -1
- package/lib/mjs/components/textfield/TextField.d.ts +21 -0
- package/lib/mjs/components/textfield/TextField.js +8 -2
- package/lib/mjs/components/time/Time.d.ts +8 -1
- package/lib/mjs/components/well/Well.d.ts +1 -0
- package/lib/mjs/components/well/Well.js +3 -0
- package/lib/mjs/formio.embed.d.ts +2 -1
- package/lib/mjs/formio.embed.js +96 -2
- package/lib/mjs/formio.form.d.ts +4 -3
- package/lib/mjs/formio.form.js +16 -8
- package/lib/mjs/licenses/Licenses.d.ts +7 -0
- package/lib/mjs/licenses/Licenses.js +17 -0
- package/lib/mjs/licenses/index.d.ts +2 -0
- package/lib/mjs/licenses/index.js +2 -0
- package/lib/mjs/utils/utils.d.ts +10 -0
- package/lib/mjs/utils/utils.js +19 -0
- package/package.json +5 -1
- package/types/index.d.ts +1 -0
- package/types/licenses.d.ts +7 -0
- package/types/utils.d.ts +2 -0
package/lib/mjs/Embed.d.ts
CHANGED
@@ -1 +1,21 @@
|
|
1
|
-
export
|
1
|
+
export class Formio {
|
2
|
+
static baseUrl: any;
|
3
|
+
static projectUrl: any;
|
4
|
+
static language: any;
|
5
|
+
static wrapper: any;
|
6
|
+
static element: any;
|
7
|
+
static config: {};
|
8
|
+
static loader: null;
|
9
|
+
static cdn: null;
|
10
|
+
static proxy: boolean;
|
11
|
+
static setBaseUrl(url: any): Promise<void>;
|
12
|
+
static setProjectUrl(url: any): Promise<void>;
|
13
|
+
static debug(...args: any[]): void;
|
14
|
+
static global(prop: any): any;
|
15
|
+
static createElement(type: any, attrs: any, children: any): any;
|
16
|
+
static addScript(src: any, name: any): Promise<any>;
|
17
|
+
static addStyles(href: any, addGlobally?: boolean): Promise<void>;
|
18
|
+
static submitDone(instance: any, submission: any): Promise<void>;
|
19
|
+
static renderForm(form: any, options: any): Promise<any>;
|
20
|
+
static createForm(element: any, form: any, options: any): Promise<any>;
|
21
|
+
}
|
package/lib/mjs/Embed.js
CHANGED
@@ -1,181 +1,179 @@
|
|
1
|
-
import CDN from './CDN';
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
1
|
+
import CDN from './CDN.js';
|
2
|
+
class Formio {
|
3
|
+
static baseUrl;
|
4
|
+
static projectUrl;
|
5
|
+
static language;
|
6
|
+
static wrapper;
|
7
|
+
static element;
|
8
|
+
static config = {};
|
9
|
+
static loader = null;
|
10
|
+
static cdn = null;
|
11
|
+
static proxy = true;
|
12
|
+
static async setBaseUrl(url) {
|
13
|
+
Formio.baseUrl = url;
|
14
|
+
}
|
15
|
+
static async setProjectUrl(url) {
|
16
|
+
Formio.projectUrl = url;
|
17
|
+
}
|
18
|
+
static debug(...args) {
|
19
|
+
if (Formio.config.debug) {
|
20
|
+
console.log(...args);
|
21
|
+
}
|
22
|
+
}
|
23
|
+
static global(prop) {
|
24
|
+
const globalValue = window[prop];
|
25
|
+
if (globalValue && globalValue.proxy) {
|
26
|
+
return null;
|
13
27
|
}
|
28
|
+
Formio.debug(`Getting global ${prop}`, globalValue);
|
29
|
+
return globalValue;
|
14
30
|
}
|
15
|
-
|
16
|
-
const
|
17
|
-
|
18
|
-
|
19
|
-
query[item.split('=')[0]] = item.split('=')[1] && decodeURIComponent(item.split('=')[1]);
|
31
|
+
static createElement(type, attrs, children) {
|
32
|
+
const element = document.createElement(type);
|
33
|
+
Object.keys(attrs).forEach(key => {
|
34
|
+
element.setAttribute(key, attrs[key]);
|
20
35
|
});
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
36
|
+
(children || []).forEach(child => {
|
37
|
+
element.appendChild(Formio.createElement(child.tag, child.attrs, child.children));
|
38
|
+
});
|
39
|
+
return element;
|
40
|
+
}
|
41
|
+
static async addScript(src, name) {
|
42
|
+
if (!src) {
|
43
|
+
return Promise.resolve();
|
25
44
|
}
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
libs.uswds.js = `${url}/uswds/${cdn.getVersion('uswds')}/uswds.min.js`;
|
48
|
-
libs.uswds.css = `${url}/uswds/${cdn.getVersion('uswds')}/uswds.min.css`;
|
49
|
-
libs.fontawesome.css = `${url}/font-awesome/${cdn.getVersion('font-awesome')}/css/font-awesome.min.css`;
|
50
|
-
libs.bootstrap.css = `${url}/bootstrap/${cdn.getVersion('bootstrap')}/css/bootstrap.min.css`;
|
51
|
-
}
|
52
|
-
return libs;
|
53
|
-
};
|
54
|
-
config = Object.assign({
|
55
|
-
script: query.script,
|
56
|
-
style: query.styles,
|
57
|
-
class: (query.class || 'formio-form-wrapper'),
|
58
|
-
src: query.src,
|
59
|
-
form: null,
|
60
|
-
submission: null,
|
61
|
-
project: query.project,
|
62
|
-
base: query.base,
|
63
|
-
submit: query.submit,
|
64
|
-
includeLibs: (query.libs === 'true' || query.libs === '1'),
|
65
|
-
template: query.template,
|
66
|
-
debug: (query.debug === 'true' || query.debug === '1'),
|
67
|
-
config: {},
|
68
|
-
redirect: (query.return || query.redirect),
|
69
|
-
before: () => { },
|
70
|
-
after: () => { }
|
71
|
-
}, config);
|
72
|
-
/**
|
73
|
-
* Print debug statements.
|
74
|
-
*
|
75
|
-
* @param {...any} args Arguments to pass to the console.log method.
|
76
|
-
*/
|
77
|
-
const debug = (...args) => {
|
78
|
-
if (config.debug) {
|
79
|
-
console.log(...args);
|
80
|
-
}
|
81
|
-
};
|
82
|
-
/**
|
83
|
-
* Creates a new DOM element.
|
84
|
-
*
|
85
|
-
* @param {string} tag The HTMLElement to add to the wrapper or shadow dom.
|
86
|
-
* @param {Object} attrs The attributes to add to this element.
|
87
|
-
* @param {Array<Object>} children The children attached to this element.
|
88
|
-
*/
|
89
|
-
const createElement = (tag, attrs, children) => {
|
90
|
-
const element = document.createElement(tag);
|
91
|
-
for (const attr in attrs) {
|
92
|
-
if (attrs.hasOwnProperty(attr)) {
|
93
|
-
element.setAttribute(attr, attrs[attr]);
|
45
|
+
if (typeof src !== 'string' && src.length) {
|
46
|
+
return Promise.all(src.map(ref => Formio.addScript(ref)));
|
47
|
+
}
|
48
|
+
if (name && Formio.global(name)) {
|
49
|
+
Formio.debug(`${name} already loaded.`);
|
50
|
+
return Promise.resolve(Formio.global(name));
|
51
|
+
}
|
52
|
+
Formio.debug('Adding Script', src);
|
53
|
+
Formio.wrapper.appendChild(Formio.createElement('script', {
|
54
|
+
src
|
55
|
+
}));
|
56
|
+
if (!name) {
|
57
|
+
return Promise.resolve();
|
58
|
+
}
|
59
|
+
return new Promise((resolve) => {
|
60
|
+
Formio.debug(`Waiting to load ${name}`);
|
61
|
+
const wait = setInterval(() => {
|
62
|
+
if (Formio.global(name)) {
|
63
|
+
clearInterval(wait);
|
64
|
+
Formio.debug(`${name} loaded.`);
|
65
|
+
resolve(Formio.global(name));
|
94
66
|
}
|
95
|
-
}
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
if (
|
103
|
-
|
67
|
+
}, 100);
|
68
|
+
});
|
69
|
+
}
|
70
|
+
static async addStyles(href, addGlobally = false) {
|
71
|
+
if (!href) {
|
72
|
+
return;
|
73
|
+
}
|
74
|
+
if (typeof href !== 'string' && href.length) {
|
75
|
+
href.forEach(ref => Formio.addStyles(ref));
|
76
|
+
return;
|
104
77
|
}
|
105
|
-
|
106
|
-
const
|
107
|
-
|
108
|
-
|
109
|
-
let wrapper = createElement('div', {
|
110
|
-
'id': `"${id}-wrapper"`
|
78
|
+
Formio.debug('Adding Styles', href);
|
79
|
+
const link = Formio.createElement('link', {
|
80
|
+
rel: 'stylesheet',
|
81
|
+
href
|
111
82
|
});
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
if (config.includeLibs && (typeof wrapper.attachShadow === 'function') && !config.premium) {
|
116
|
-
wrapper = wrapper.attachShadow({
|
117
|
-
mode: 'open'
|
118
|
-
});
|
119
|
-
config.config.shadowRoot = wrapper;
|
83
|
+
if (addGlobally) {
|
84
|
+
// Add globally as well.
|
85
|
+
document.head.appendChild(link);
|
120
86
|
}
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
}
|
147
|
-
|
148
|
-
|
149
|
-
if (
|
150
|
-
|
151
|
-
}
|
152
|
-
if (typeof src !== 'string' && src.length) {
|
153
|
-
src.forEach(ref => addScript(ref));
|
154
|
-
return;
|
155
|
-
}
|
156
|
-
if (globalProp && global(globalProp)) {
|
157
|
-
debug(`${globalProp} already loaded.`);
|
158
|
-
return global(globalProp);
|
87
|
+
Formio.wrapper.appendChild(Formio.createElement('link', {
|
88
|
+
rel: 'stylesheet',
|
89
|
+
href
|
90
|
+
}));
|
91
|
+
}
|
92
|
+
static async submitDone(instance, submission) {
|
93
|
+
Formio.debug('Submision Complete', submission);
|
94
|
+
let returnUrl = Formio.config.redirect;
|
95
|
+
// Allow form based configuration for return url.
|
96
|
+
if (!returnUrl &&
|
97
|
+
(instance._form &&
|
98
|
+
instance._form.settings &&
|
99
|
+
(instance._form.settings.returnUrl ||
|
100
|
+
instance._form.settings.redirect))) {
|
101
|
+
Formio.debug('Return url found in form configuration');
|
102
|
+
returnUrl = instance._form.settings.returnUrl || instance._form.settings.redirect;
|
103
|
+
}
|
104
|
+
if (returnUrl) {
|
105
|
+
const formSrc = instance.formio ? instance.formio.formUrl : '';
|
106
|
+
const hasQuery = !!returnUrl.match(/\?/);
|
107
|
+
const isOrigin = returnUrl.indexOf(location.origin) === 0;
|
108
|
+
returnUrl += hasQuery ? '&' : '?';
|
109
|
+
returnUrl += `sub=${submission._id}`;
|
110
|
+
if (!isOrigin && formSrc) {
|
111
|
+
returnUrl += `&form=${encodeURIComponent(formSrc)}`;
|
112
|
+
}
|
113
|
+
Formio.debug('Return URL', returnUrl);
|
114
|
+
window.location.href = returnUrl;
|
115
|
+
if (isOrigin) {
|
116
|
+
window.location.reload();
|
159
117
|
}
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
118
|
+
}
|
119
|
+
}
|
120
|
+
static async renderForm(form, options) {
|
121
|
+
if (Formio.config.before) {
|
122
|
+
await Formio.config.before(Formio.FormioClass, Formio.element, Formio.config);
|
123
|
+
}
|
124
|
+
Formio.FormioClass.license = true;
|
125
|
+
return Formio.FormioClass.createForm(Formio.element, form, {
|
126
|
+
...options,
|
127
|
+
...{ noLoader: true }
|
128
|
+
}).then((instance) => {
|
129
|
+
Formio.debug('Form created', instance);
|
130
|
+
// Remove the loader.
|
131
|
+
Formio.debug('Removing loader');
|
132
|
+
Formio.wrapper.removeChild(Formio.loader);
|
133
|
+
// Set the default submission data.
|
134
|
+
if (Formio.config.submission) {
|
135
|
+
Formio.debug('Setting submission', Formio.config.submission);
|
136
|
+
instance.submission = Formio.config.submission;
|
137
|
+
}
|
138
|
+
// Allow them to provide additional configs.
|
139
|
+
Formio.debug('Triggering embed event');
|
140
|
+
Formio.FormioClass.events.emit('formEmbedded', instance);
|
141
|
+
// Trigger the after handler.
|
142
|
+
if (Formio.config.after) {
|
143
|
+
Formio.debug('Calling ready callback');
|
144
|
+
Formio.config.after(instance, Formio.config);
|
145
|
+
}
|
146
|
+
return instance;
|
147
|
+
});
|
148
|
+
}
|
149
|
+
// eslint-disable-next-line max-statements
|
150
|
+
static async createForm(element, form, options) {
|
151
|
+
Formio.element = element;
|
152
|
+
Formio.cdn = new CDN(Formio.config.cdn);
|
153
|
+
Formio.config.libs = Formio.config.libs || {
|
154
|
+
uswds: {
|
155
|
+
fa: true,
|
156
|
+
js: `${Formio.cdn.uswds}/uswds.min.js`,
|
157
|
+
css: `${Formio.cdn.uswds}/uswds.min.css`,
|
158
|
+
},
|
159
|
+
fontawesome: {
|
160
|
+
css: `${Formio.cdn['font-awesome']}/css/font-awesome.min.css`
|
161
|
+
},
|
162
|
+
bootstrap: {
|
163
|
+
css: `${Formio.cdn.bootstrap}/css/bootstrap.min.css`
|
173
164
|
}
|
174
165
|
};
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
166
|
+
Formio.config.id = Formio.config.id || `formio-${Math.random().toString(36).substring(7)}`;
|
167
|
+
// Create a new wrapper and add the element inside of a new wrapper.
|
168
|
+
Formio.wrapper = Formio.createElement('div', {
|
169
|
+
'id': `"${Formio.config.id}-wrapper"`
|
170
|
+
});
|
171
|
+
element.parentNode.insertBefore(Formio.wrapper, element);
|
172
|
+
element.parentNode.removeChild(element);
|
173
|
+
Formio.wrapper.appendChild(element);
|
174
|
+
// Load the renderer styles.
|
175
|
+
await Formio.addStyles(Formio.config.embedCSS || `${Formio.cdn.js}/formio.embed.css`);
|
176
|
+
Formio.loader = Formio.createElement('div', {
|
179
177
|
'class': 'formio-loader'
|
180
178
|
}, [{
|
181
179
|
tag: 'div',
|
@@ -189,163 +187,51 @@ export function embed(config = {}) {
|
|
189
187
|
}
|
190
188
|
}]
|
191
189
|
}]);
|
192
|
-
wrapper.appendChild(loader);
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
const submitDone = (submission) => {
|
213
|
-
debug('Submision Complete', submission);
|
214
|
-
let returnUrl = config.redirect;
|
215
|
-
// Allow form based configuration for return url.
|
216
|
-
if (!returnUrl &&
|
217
|
-
(instance._form &&
|
218
|
-
instance._form.settings &&
|
219
|
-
(instance._form.settings.returnUrl ||
|
220
|
-
instance._form.settings.redirect))) {
|
221
|
-
debug('Return url found in form configuration');
|
222
|
-
returnUrl = instance._form.settings.returnUrl || instance._form.settings.redirect;
|
223
|
-
}
|
224
|
-
if (returnUrl) {
|
225
|
-
const formSrc = instance.formio ? instance.formio.formUrl : '';
|
226
|
-
const hasQuery = !!returnUrl.match(/\?/);
|
227
|
-
const isOrigin = returnUrl.indexOf(location.origin) === 0;
|
228
|
-
returnUrl += hasQuery ? '&' : '?';
|
229
|
-
returnUrl += `sub=${submission._id}`;
|
230
|
-
if (!isOrigin && formSrc) {
|
231
|
-
returnUrl += `&form=${encodeURIComponent(formSrc)}`;
|
232
|
-
}
|
233
|
-
debug('Return URL', returnUrl);
|
234
|
-
window.location.href = returnUrl;
|
235
|
-
if (isOrigin) {
|
236
|
-
window.location.reload();
|
237
|
-
}
|
238
|
-
}
|
239
|
-
};
|
240
|
-
if (config.submit) {
|
241
|
-
instance.nosubmit = true;
|
242
|
-
}
|
243
|
-
debug('Form created', instance);
|
244
|
-
// Remove the loader.
|
245
|
-
debug('Removing loader');
|
246
|
-
wrapper.removeChild(loader);
|
247
|
-
// Set the default submission data.
|
248
|
-
if (config.submission) {
|
249
|
-
debug('Setting submission', config.submission);
|
250
|
-
instance.submission = config.submission;
|
251
|
-
}
|
252
|
-
// Allow them to provide additional configs.
|
253
|
-
debug('Triggering embed event');
|
254
|
-
Formio.events.emit('formEmbedded', instance);
|
255
|
-
debug('Calling ready callback');
|
256
|
-
config.after(instance, config);
|
257
|
-
// Configure a redirect.
|
258
|
-
instance.on('submit', (submission) => {
|
259
|
-
debug("on('submit')", submission);
|
260
|
-
if (config.submit) {
|
261
|
-
debug(`Sending submission to ${config.submit}`);
|
262
|
-
const headers = {
|
263
|
-
'content-type': 'application/json'
|
264
|
-
};
|
265
|
-
const token = Formio.getToken();
|
266
|
-
if (token) {
|
267
|
-
headers['x-jwt-token'] = token;
|
268
|
-
}
|
269
|
-
Formio.fetch(config.submit, {
|
270
|
-
body: JSON.stringify(submission),
|
271
|
-
headers: headers,
|
272
|
-
method: 'POST',
|
273
|
-
mode: 'cors',
|
274
|
-
})
|
275
|
-
.then(resp => resp.json())
|
276
|
-
.then(submission => submitDone(submission));
|
277
|
-
}
|
278
|
-
else {
|
279
|
-
submitDone(submission);
|
280
|
-
}
|
281
|
-
});
|
282
|
-
});
|
283
|
-
});
|
284
|
-
};
|
285
|
-
if (config.base) {
|
286
|
-
Formio.setBaseUrl(config.base);
|
287
|
-
}
|
288
|
-
if (config.project) {
|
289
|
-
Formio.setProjectUrl(config.project);
|
290
|
-
}
|
291
|
-
// Add premium modules
|
292
|
-
if (global('premium')) {
|
293
|
-
debug('Using premium module.');
|
294
|
-
Formio.use(global('premium'));
|
295
|
-
}
|
296
|
-
if (global('vpat')) {
|
297
|
-
debug('Using vpat module.');
|
298
|
-
Formio.use(global('vpat'));
|
299
|
-
}
|
300
|
-
if (config.template) {
|
301
|
-
if (config.includeLibs) {
|
302
|
-
addStyles(config.libs[config.template].css);
|
303
|
-
addScript(config.libs[config.template].js);
|
304
|
-
if (config.libs[config.template].fa) {
|
305
|
-
addStyles(config.libs.fontawesome.css, true);
|
306
|
-
}
|
307
|
-
}
|
308
|
-
let templateSrc;
|
309
|
-
if (cdn instanceof CDN) {
|
310
|
-
templateSrc = `${cdn[config.template]}/${config.template}.min`;
|
311
|
-
}
|
312
|
-
else {
|
313
|
-
templateSrc = `${cdn}/@formio/${config.template}@latest/dist/${config.template}.min`;
|
190
|
+
Formio.wrapper.appendChild(Formio.loader);
|
191
|
+
Formio.FormioClass = await Formio.addScript(Formio.config.script || `${Formio.cdn.js}/formio.form.min.js`, 'Formio');
|
192
|
+
Formio.FormioClass.setBaseUrl(Formio.baseUrl || Formio.config.base);
|
193
|
+
Formio.FormioClass.setProjectUrl(Formio.projectUrl || Formio.config.project);
|
194
|
+
Formio.FormioClass.language = Formio.language;
|
195
|
+
// Add premium modules
|
196
|
+
if (Formio.global('premium')) {
|
197
|
+
Formio.debug('Using premium module.');
|
198
|
+
Formio.FormioClass.use(Formio.global('premium'));
|
199
|
+
}
|
200
|
+
if (Formio.global('vpat')) {
|
201
|
+
Formio.debug('Using vpat module.');
|
202
|
+
Formio.FormioClass.use(Formio.global('vpat'));
|
203
|
+
}
|
204
|
+
if (Formio.config.template) {
|
205
|
+
if (Formio.config.includeLibs) {
|
206
|
+
await Formio.addStyles(Formio.config.libs[Formio.config.template].css);
|
207
|
+
await Formio.addScript(Formio.config.libs[Formio.config.template].js);
|
208
|
+
if (Formio.config.libs[Formio.config.template].fa) {
|
209
|
+
await Formio.addStyles(Formio.config.libs.fontawesome.css, true);
|
314
210
|
}
|
315
|
-
addStyles(`${templateSrc}.css`);
|
316
|
-
addScript(`${templateSrc}.js`, config.template, (template) => {
|
317
|
-
debug(`Using ${config.template}`);
|
318
|
-
Formio.use(template);
|
319
|
-
renderForm();
|
320
|
-
});
|
321
|
-
}
|
322
|
-
else if (global('uswds')) {
|
323
|
-
debug('Using uswds module.');
|
324
|
-
Formio.use(global('uswds'));
|
325
|
-
}
|
326
|
-
// Default bootstrap + fontawesome.
|
327
|
-
else if (config.includeLibs) {
|
328
|
-
Formio.cdn = new CDN();
|
329
|
-
config.libs = resolveLibs(query.cdn || Formio.cdn);
|
330
|
-
addStyles(config.libs.fontawesome.css, true);
|
331
|
-
addStyles(config.libs.bootstrap.css);
|
332
211
|
}
|
333
|
-
if (config.
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
renderForm();
|
339
|
-
});
|
212
|
+
if (Formio.cdn[Formio.config.template]) {
|
213
|
+
const templateSrc = `${Formio.cdn[Formio.config.template]}/${Formio.config.template}.min`;
|
214
|
+
await Formio.addStyles(`${templateSrc}.css`);
|
215
|
+
Formio.debug(`Using ${Formio.config.template}`);
|
216
|
+
Formio.FormioClass.use(await Formio.addScript(`${templateSrc}.js`, Formio.config.template));
|
340
217
|
}
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
}
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
218
|
+
}
|
219
|
+
else if (Formio.global('uswds')) {
|
220
|
+
Formio.debug('Using uswds module.');
|
221
|
+
Formio.FormioClass.use(Formio.global('uswds'));
|
222
|
+
}
|
223
|
+
// Default bootstrap + fontawesome.
|
224
|
+
else if (Formio.config.includeLibs) {
|
225
|
+
await Formio.addStyles(Formio.config.libs.fontawesome.css, true);
|
226
|
+
await Formio.addStyles(Formio.config.libs.bootstrap.css);
|
227
|
+
}
|
228
|
+
if (Formio.config.premium) {
|
229
|
+
await Formio.addStyles(Formio.config.premium.css);
|
230
|
+
Formio.debug('Using premium');
|
231
|
+
Formio.FormioClass.use(await Formio.addScript(Formio.config.premium.js, 'premium'));
|
232
|
+
}
|
233
|
+
await Formio.addStyles(Formio.config.style || `${Formio.cdn.js}/formio.form.min.css`);
|
234
|
+
return await Formio.renderForm(form, options);
|
350
235
|
}
|
351
236
|
}
|
237
|
+
export { Formio };
|
package/lib/mjs/Form.d.ts
CHANGED
@@ -12,7 +12,7 @@ export default class Form extends Element {
|
|
12
12
|
* @param {boolean} options.template - Provides a way to inject custom logic into the creation of every element rendered within the form.
|
13
13
|
*
|
14
14
|
* @example
|
15
|
-
* import Form from '
|
15
|
+
* import Form from '@formio/js/Form';
|
16
16
|
* const form = new Form(document.getElementById('formio'), 'https://examples.form.io/example');
|
17
17
|
* form.build();
|
18
18
|
*/
|
package/lib/mjs/Form.js
CHANGED
@@ -16,7 +16,7 @@ export default class Form extends Element {
|
|
16
16
|
* @param {boolean} options.template - Provides a way to inject custom logic into the creation of every element rendered within the form.
|
17
17
|
*
|
18
18
|
* @example
|
19
|
-
* import Form from '
|
19
|
+
* import Form from '@formio/js/Form';
|
20
20
|
* const form = new Form(document.getElementById('formio'), 'https://examples.form.io/example');
|
21
21
|
* form.build();
|
22
22
|
*/
|
package/lib/mjs/Webform.d.ts
CHANGED
@@ -65,7 +65,7 @@ declare class Webform extends NestedDataComponent {
|
|
65
65
|
* @type {Promise}
|
66
66
|
*
|
67
67
|
* @example
|
68
|
-
* import Webform from '
|
68
|
+
* import Webform from '@formio/js/Webform';
|
69
69
|
* let form = new Webform(document.getElementById('formio'));
|
70
70
|
* form.formReady.then(() => {
|
71
71
|
* console.log('The form is ready!');
|
@@ -90,7 +90,7 @@ declare class Webform extends NestedDataComponent {
|
|
90
90
|
* @type {Promise}
|
91
91
|
*
|
92
92
|
* @example
|
93
|
-
* import Webform from '
|
93
|
+
* import Webform from '@formio/js/Webform';
|
94
94
|
* let form = new Webform(document.getElementById('formio'));
|
95
95
|
* form.submissionReady.then(() => {
|
96
96
|
* console.log('The submission is ready!');
|
@@ -140,7 +140,7 @@ declare class Webform extends NestedDataComponent {
|
|
140
140
|
* @param {string} value - The value of the form embed url.
|
141
141
|
*
|
142
142
|
* @example
|
143
|
-
* import Webform from '
|
143
|
+
* import Webform from '@formio/js/Webform';
|
144
144
|
* let form = new Webform(document.getElementById('formio'));
|
145
145
|
* form.formReady.then(() => {
|
146
146
|
* console.log('The form is formReady!');
|
@@ -207,7 +207,7 @@ declare class Webform extends NestedDataComponent {
|
|
207
207
|
* Sets the JSON schema for the form to be rendered.
|
208
208
|
*
|
209
209
|
* @example
|
210
|
-
* import Webform from '
|
210
|
+
* import Webform from '@formio/js/Webform';
|
211
211
|
* let form = new Webform(document.getElementById('formio'));
|
212
212
|
* form.setForm({
|
213
213
|
* components: [
|
@@ -257,7 +257,7 @@ declare class Webform extends NestedDataComponent {
|
|
257
257
|
* Sets the submission of a form.
|
258
258
|
*
|
259
259
|
* @example
|
260
|
-
* import Webform from '
|
260
|
+
* import Webform from '@formio/js/Webform';
|
261
261
|
* let form = new Webform(document.getElementById('formio'));
|
262
262
|
* form.src = 'https://examples.form.io/example';
|
263
263
|
* form.submission = {data: {
|
@@ -372,7 +372,7 @@ declare class Webform extends NestedDataComponent {
|
|
372
372
|
* Submits the form.
|
373
373
|
*
|
374
374
|
* @example
|
375
|
-
* import Webform from '
|
375
|
+
* import Webform from '@formio/js/Webform';
|
376
376
|
* let form = new Webform(document.getElementById('formio'));
|
377
377
|
* form.src = 'https://examples.form.io/example';
|
378
378
|
* form.submission = {data: {
|