@formio/js 5.0.0-rc.20 → 5.0.0-rc.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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: {
|