@formio/js 5.0.0-rc.19 → 5.0.0-rc.21
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/README.md +1 -1
- package/dist/formio.builder.css +14 -22
- package/dist/formio.builder.min.css +1 -1
- package/dist/formio.embed.css +1 -40
- package/dist/formio.embed.js +2 -90
- package/dist/formio.embed.min.css +1 -1
- package/dist/formio.embed.min.js +1 -1
- package/dist/formio.embed.min.js.LICENSE.txt +1 -1
- package/dist/formio.form.css +10 -2
- package/dist/formio.form.js +1267 -1103
- package/dist/formio.form.min.css +1 -1
- package/dist/formio.form.min.js +1 -1
- package/dist/formio.form.min.js.LICENSE.txt +3 -8
- package/dist/formio.full.css +14 -22
- package/dist/formio.full.js +1302 -1127
- package/dist/formio.full.min.css +1 -1
- package/dist/formio.full.min.js +1 -1
- package/dist/formio.full.min.js.LICENSE.txt +3 -8
- package/dist/formio.js +713 -626
- package/dist/formio.min.js +1 -1
- package/dist/formio.min.js.LICENSE.txt +2 -7
- package/dist/formio.utils.js +220 -13
- package/dist/formio.utils.min.js +1 -1
- package/dist/formio.utils.min.js.LICENSE.txt +2 -7
- package/lib/cjs/CDN.d.ts +1 -0
- package/lib/cjs/CDN.js +2 -1
- package/lib/cjs/Element.js +7 -2
- package/lib/cjs/Embed.d.ts +21 -1
- package/lib/cjs/Embed.js +211 -308
- package/lib/cjs/Form.d.ts +9 -6
- package/lib/cjs/Form.js +53 -11
- package/lib/cjs/PDF.d.ts +11 -3
- package/lib/cjs/PDF.js +4 -5
- package/lib/cjs/PDFBuilder.js +2 -3
- package/lib/cjs/Webform.d.ts +10 -13
- package/lib/cjs/Webform.js +46 -125
- package/lib/cjs/WebformBuilder.d.ts +6 -1
- package/lib/cjs/WebformBuilder.js +105 -65
- package/lib/cjs/Wizard.d.ts +8 -5
- package/lib/cjs/Wizard.js +12 -12
- package/lib/cjs/WizardBuilder.d.ts +6 -4
- package/lib/cjs/WizardBuilder.js +20 -3
- package/lib/cjs/addons/FormioAddon.d.ts +1 -1
- package/lib/cjs/addons/FormioAddon.js +1 -2
- package/lib/cjs/components/_classes/component/Component.d.ts +24 -8
- package/lib/cjs/components/_classes/component/Component.js +44 -14
- package/lib/cjs/components/_classes/input/Input.d.ts +1 -1
- package/lib/cjs/components/_classes/input/Input.js +1 -2
- package/lib/cjs/components/_classes/list/ListComponent.d.ts +4 -0
- package/lib/cjs/components/_classes/list/ListComponent.js +43 -6
- package/lib/cjs/components/_classes/multivalue/Multivalue.d.ts +1 -0
- package/lib/cjs/components/_classes/multivalue/Multivalue.js +10 -4
- package/lib/cjs/components/_classes/nested/NestedComponent.d.ts +5 -2
- package/lib/cjs/components/_classes/nested/NestedComponent.js +9 -10
- 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.d.ts +8 -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 +5 -3
- package/lib/cjs/components/checkbox/Checkbox.d.ts +41 -0
- package/lib/cjs/components/checkbox/Checkbox.js +32 -5
- package/lib/cjs/components/columns/Columns.d.ts +2 -0
- package/lib/cjs/components/columns/Columns.js +4 -0
- package/lib/cjs/components/container/Container.d.ts +1 -0
- package/lib/cjs/components/container/Container.js +4 -0
- package/lib/cjs/components/content/Content.d.ts +2 -0
- package/lib/cjs/components/content/Content.js +4 -2
- package/lib/cjs/components/currency/editForm/Currency.edit.data.d.ts +14 -2
- package/lib/cjs/components/currency/editForm/Currency.edit.data.js +4 -0
- package/lib/cjs/components/currency/editForm/Currency.edit.display.js +4 -0
- package/lib/cjs/components/datagrid/DataGrid.d.ts +1 -0
- package/lib/cjs/components/datagrid/DataGrid.js +8 -1
- package/lib/cjs/components/datamap/DataMap.d.ts +1 -0
- package/lib/cjs/components/datamap/DataMap.js +4 -0
- package/lib/cjs/components/datetime/DateTime.d.ts +23 -0
- package/lib/cjs/components/datetime/DateTime.js +20 -1
- package/lib/cjs/components/day/Day.d.ts +22 -1
- package/lib/cjs/components/day/Day.js +20 -6
- package/lib/cjs/components/day/fixtures/comp3.js +2 -2
- package/lib/cjs/components/editgrid/EditGrid.d.ts +4 -3
- package/lib/cjs/components/editgrid/EditGrid.js +11 -6
- package/lib/cjs/components/editgrid/fixtures/comp-with-custom-default-value.d.ts +190 -0
- package/lib/cjs/components/editgrid/fixtures/comp-with-custom-default-value.js +227 -0
- package/lib/cjs/components/editgrid/fixtures/comp15.d.ts +54 -0
- package/lib/cjs/components/editgrid/fixtures/comp15.js +51 -0
- package/lib/cjs/components/editgrid/fixtures/index.d.ts +3 -1
- package/lib/cjs/components/editgrid/fixtures/index.js +5 -1
- package/lib/cjs/components/fieldset/Fieldset.d.ts +2 -0
- package/lib/cjs/components/fieldset/Fieldset.js +4 -0
- package/lib/cjs/components/file/File.d.ts +28 -6
- package/lib/cjs/components/file/File.js +40 -15
- package/lib/cjs/components/file/editForm/File.edit.file.d.ts +62 -0
- package/lib/cjs/components/file/editForm/File.edit.file.js +29 -2
- package/lib/cjs/components/form/Form.d.ts +4 -0
- package/lib/cjs/components/form/Form.js +12 -10
- package/lib/cjs/components/hidden/Hidden.d.ts +1 -0
- package/lib/cjs/components/hidden/Hidden.js +1 -0
- package/lib/cjs/components/html/HTML.d.ts +2 -0
- package/lib/cjs/components/html/HTML.js +4 -0
- package/lib/cjs/components/number/Number.d.ts +24 -1
- package/lib/cjs/components/number/Number.js +18 -6
- package/lib/cjs/components/panel/Panel.d.ts +1 -0
- package/lib/cjs/components/panel/Panel.js +3 -0
- package/lib/cjs/components/phonenumber/PhoneNumber.form.js +9 -0
- package/lib/cjs/components/radio/Radio.d.ts +24 -3
- package/lib/cjs/components/radio/Radio.js +89 -18
- package/lib/cjs/components/recaptcha/ReCaptcha.d.ts +2 -1
- package/lib/cjs/components/recaptcha/ReCaptcha.js +7 -5
- package/lib/cjs/components/resource/Resource.d.ts +7 -0
- package/lib/cjs/components/resource/Resource.js +0 -1
- package/lib/cjs/components/resource/editForm/Resource.edit.display.js +1 -1
- package/lib/cjs/components/select/Select.d.ts +25 -5
- package/lib/cjs/components/select/Select.js +51 -51
- package/lib/cjs/components/selectboxes/SelectBoxes.d.ts +37 -0
- package/lib/cjs/components/selectboxes/SelectBoxes.js +60 -25
- package/lib/cjs/components/selectboxes/fixtures/comp4.d.ts +30 -27
- package/lib/cjs/components/selectboxes/fixtures/comp4.js +47 -32
- package/lib/cjs/components/selectboxes/fixtures/comp6.d.ts +14 -0
- package/lib/cjs/components/selectboxes/fixtures/comp6.js +15 -0
- package/lib/cjs/components/selectboxes/fixtures/index.d.ts +2 -1
- package/lib/cjs/components/selectboxes/fixtures/index.js +3 -1
- package/lib/cjs/components/signature/Signature.d.ts +22 -1
- package/lib/cjs/components/signature/Signature.js +16 -3
- package/lib/cjs/components/survey/Survey.d.ts +21 -0
- package/lib/cjs/components/survey/Survey.js +9 -0
- package/lib/cjs/components/table/Table.d.ts +2 -0
- package/lib/cjs/components/table/Table.js +4 -0
- package/lib/cjs/components/tabs/Tabs.d.ts +2 -0
- package/lib/cjs/components/tabs/Tabs.js +4 -0
- package/lib/cjs/components/tags/Tags.d.ts +21 -0
- package/lib/cjs/components/tags/Tags.js +11 -0
- package/lib/cjs/components/textarea/TextArea.d.ts +3 -2
- package/lib/cjs/components/textarea/TextArea.js +4 -5
- package/lib/cjs/components/textarea/fixtures/comp4.d.ts +30 -0
- package/lib/cjs/components/textarea/fixtures/comp4.js +27 -0
- package/lib/cjs/components/textarea/fixtures/index.d.ts +2 -1
- package/lib/cjs/components/textarea/fixtures/index.js +3 -1
- package/lib/cjs/components/textfield/TextField.d.ts +22 -0
- package/lib/cjs/components/textfield/TextField.js +11 -3
- package/lib/cjs/components/time/Time.d.ts +11 -0
- package/lib/cjs/components/time/Time.js +6 -1
- package/lib/cjs/components/tree/Tree.d.ts +5 -4
- package/lib/cjs/components/tree/Tree.form.js +5 -0
- package/lib/cjs/components/tree/Tree.js +8 -9
- package/lib/cjs/components/tree/editForm/Tree.edit.display.d.ts +9 -0
- package/lib/cjs/components/tree/editForm/Tree.edit.display.js +12 -0
- package/lib/cjs/components/well/Well.d.ts +2 -0
- package/lib/cjs/components/well/Well.js +4 -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/providers/Providers.d.ts +31 -11
- package/lib/cjs/providers/address/GoogleAddressProvider.d.ts +2 -2
- package/lib/cjs/providers/address/GoogleAddressProvider.js +2 -3
- package/lib/cjs/providers/processor/fileProcessor.d.ts +1 -1
- package/lib/cjs/providers/processor/fileProcessor.js +1 -5
- package/lib/cjs/providers/storage/azure.d.ts +10 -1
- package/lib/cjs/providers/storage/azure.js +7 -2
- package/lib/cjs/providers/storage/base64.d.ts +2 -2
- package/lib/cjs/providers/storage/base64.js +2 -6
- package/lib/cjs/providers/storage/dropbox.d.ts +2 -2
- package/lib/cjs/providers/storage/dropbox.js +2 -6
- package/lib/cjs/providers/storage/googleDrive.d.ts +3 -2
- package/lib/cjs/providers/storage/googleDrive.js +6 -6
- package/lib/cjs/providers/storage/indexeddb.d.ts +3 -3
- package/lib/cjs/providers/storage/indexeddb.js +9 -13
- package/lib/cjs/providers/storage/s3.d.ts +11 -1
- package/lib/cjs/providers/storage/s3.js +5 -2
- package/lib/cjs/providers/storage/uploadAdapter.js +1 -5
- package/lib/cjs/providers/storage/url.d.ts +2 -2
- package/lib/cjs/providers/storage/url.js +12 -8
- package/lib/cjs/providers/storage/xhr.d.ts +1 -1
- package/lib/cjs/providers/storage/xhr.js +1 -2
- package/lib/cjs/templates/index.d.ts +226 -1
- package/lib/cjs/utils/Evaluator.js +4 -33
- package/lib/cjs/utils/i18n.d.ts +16 -0
- package/lib/cjs/utils/i18n.js +88 -0
- package/lib/cjs/utils/utils.d.ts +11 -1
- package/lib/cjs/utils/utils.js +29 -10
- package/lib/cjs/validator/Validator.d.ts +30 -2
- package/lib/cjs/validator/Validator.js +32 -9
- package/lib/cjs/validator/rules/Select.js +1 -2
- package/lib/cjs/validator/rules/Unique.d.ts +1 -1
- package/lib/cjs/validator/rules/Unique.js +1 -2
- package/lib/cjs/widgets/CalendarWidget.d.ts +1 -0
- package/lib/cjs/widgets/InputWidget.d.ts +1 -1
- package/lib/cjs/widgets/InputWidget.js +1 -2
- package/lib/mjs/CDN.d.ts +1 -0
- package/lib/mjs/CDN.js +2 -1
- package/lib/mjs/Element.js +6 -2
- package/lib/mjs/Embed.d.ts +21 -1
- package/lib/mjs/Embed.js +208 -319
- package/lib/mjs/Form.d.ts +9 -6
- package/lib/mjs/Form.js +53 -11
- package/lib/mjs/PDF.d.ts +11 -3
- package/lib/mjs/PDF.js +4 -5
- package/lib/mjs/PDFBuilder.js +2 -3
- package/lib/mjs/Webform.d.ts +10 -13
- package/lib/mjs/Webform.js +46 -128
- package/lib/mjs/WebformBuilder.d.ts +6 -1
- package/lib/mjs/WebformBuilder.js +103 -65
- package/lib/mjs/Wizard.d.ts +8 -5
- package/lib/mjs/Wizard.js +12 -12
- package/lib/mjs/WizardBuilder.d.ts +6 -4
- package/lib/mjs/WizardBuilder.js +20 -3
- package/lib/mjs/addons/FormioAddon.d.ts +1 -1
- package/lib/mjs/addons/FormioAddon.js +1 -2
- package/lib/mjs/components/_classes/component/Component.d.ts +24 -8
- package/lib/mjs/components/_classes/component/Component.js +44 -14
- package/lib/mjs/components/_classes/input/Input.d.ts +1 -1
- package/lib/mjs/components/_classes/input/Input.js +1 -2
- package/lib/mjs/components/_classes/list/ListComponent.d.ts +4 -0
- package/lib/mjs/components/_classes/list/ListComponent.js +43 -5
- package/lib/mjs/components/_classes/multivalue/Multivalue.d.ts +1 -0
- package/lib/mjs/components/_classes/multivalue/Multivalue.js +10 -4
- package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +5 -2
- package/lib/mjs/components/_classes/nested/NestedComponent.js +9 -10
- 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.d.ts +8 -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 +6 -4
- package/lib/mjs/components/checkbox/Checkbox.d.ts +41 -0
- package/lib/mjs/components/checkbox/Checkbox.js +36 -5
- package/lib/mjs/components/columns/Columns.d.ts +2 -0
- package/lib/mjs/components/columns/Columns.js +4 -0
- package/lib/mjs/components/container/Container.d.ts +1 -0
- package/lib/mjs/components/container/Container.js +5 -1
- package/lib/mjs/components/content/Content.d.ts +2 -0
- package/lib/mjs/components/content/Content.js +4 -2
- package/lib/mjs/components/currency/editForm/Currency.edit.data.d.ts +14 -2
- package/lib/mjs/components/currency/editForm/Currency.edit.data.js +4 -0
- package/lib/mjs/components/currency/editForm/Currency.edit.display.js +4 -0
- package/lib/mjs/components/datagrid/DataGrid.d.ts +1 -0
- package/lib/mjs/components/datagrid/DataGrid.js +8 -1
- package/lib/mjs/components/datamap/DataMap.d.ts +1 -0
- package/lib/mjs/components/datamap/DataMap.js +5 -1
- package/lib/mjs/components/datetime/DateTime.d.ts +23 -0
- package/lib/mjs/components/datetime/DateTime.js +27 -1
- package/lib/mjs/components/day/Day.d.ts +22 -1
- package/lib/mjs/components/day/Day.js +24 -7
- package/lib/mjs/components/day/fixtures/comp3.js +2 -2
- package/lib/mjs/components/editgrid/EditGrid.d.ts +4 -3
- package/lib/mjs/components/editgrid/EditGrid.js +11 -6
- package/lib/mjs/components/editgrid/fixtures/comp-with-custom-default-value.d.ts +190 -0
- package/lib/mjs/components/editgrid/fixtures/comp-with-custom-default-value.js +225 -0
- package/lib/mjs/components/editgrid/fixtures/comp15.d.ts +54 -0
- package/lib/mjs/components/editgrid/fixtures/comp15.js +49 -0
- package/lib/mjs/components/editgrid/fixtures/index.d.ts +3 -1
- package/lib/mjs/components/editgrid/fixtures/index.js +3 -1
- package/lib/mjs/components/fieldset/Fieldset.d.ts +2 -0
- package/lib/mjs/components/fieldset/Fieldset.js +4 -0
- package/lib/mjs/components/file/File.d.ts +28 -6
- package/lib/mjs/components/file/File.js +44 -16
- package/lib/mjs/components/file/editForm/File.edit.file.d.ts +62 -0
- package/lib/mjs/components/file/editForm/File.edit.file.js +29 -2
- package/lib/mjs/components/form/Form.d.ts +4 -0
- package/lib/mjs/components/form/Form.js +13 -11
- package/lib/mjs/components/hidden/Hidden.d.ts +1 -0
- package/lib/mjs/components/hidden/Hidden.js +1 -0
- package/lib/mjs/components/html/HTML.d.ts +2 -0
- package/lib/mjs/components/html/HTML.js +4 -0
- package/lib/mjs/components/number/Number.d.ts +24 -1
- package/lib/mjs/components/number/Number.js +23 -7
- package/lib/mjs/components/panel/Panel.d.ts +1 -0
- package/lib/mjs/components/panel/Panel.js +3 -0
- package/lib/mjs/components/phonenumber/PhoneNumber.form.js +9 -0
- package/lib/mjs/components/radio/Radio.d.ts +24 -3
- package/lib/mjs/components/radio/Radio.js +93 -19
- package/lib/mjs/components/recaptcha/ReCaptcha.d.ts +2 -1
- package/lib/mjs/components/recaptcha/ReCaptcha.js +7 -5
- package/lib/mjs/components/resource/Resource.d.ts +7 -0
- package/lib/mjs/components/resource/Resource.js +0 -1
- package/lib/mjs/components/resource/editForm/Resource.edit.display.js +1 -1
- package/lib/mjs/components/select/Select.d.ts +25 -5
- package/lib/mjs/components/select/Select.js +55 -52
- package/lib/mjs/components/selectboxes/SelectBoxes.d.ts +37 -0
- package/lib/mjs/components/selectboxes/SelectBoxes.js +63 -25
- package/lib/mjs/components/selectboxes/fixtures/comp4.d.ts +30 -27
- package/lib/mjs/components/selectboxes/fixtures/comp4.js +47 -32
- package/lib/mjs/components/selectboxes/fixtures/comp6.d.ts +14 -0
- package/lib/mjs/components/selectboxes/fixtures/comp6.js +13 -0
- package/lib/mjs/components/selectboxes/fixtures/index.d.ts +2 -1
- package/lib/mjs/components/selectboxes/fixtures/index.js +2 -1
- package/lib/mjs/components/signature/Signature.d.ts +22 -1
- package/lib/mjs/components/signature/Signature.js +19 -3
- package/lib/mjs/components/survey/Survey.d.ts +21 -0
- package/lib/mjs/components/survey/Survey.js +13 -1
- package/lib/mjs/components/table/Table.d.ts +2 -0
- package/lib/mjs/components/table/Table.js +4 -0
- package/lib/mjs/components/tabs/Tabs.d.ts +2 -0
- package/lib/mjs/components/tabs/Tabs.js +4 -0
- package/lib/mjs/components/tags/Tags.d.ts +21 -0
- package/lib/mjs/components/tags/Tags.js +14 -0
- package/lib/mjs/components/textarea/TextArea.d.ts +3 -2
- package/lib/mjs/components/textarea/TextArea.js +4 -5
- package/lib/mjs/components/textarea/fixtures/comp4.d.ts +30 -0
- package/lib/mjs/components/textarea/fixtures/comp4.js +25 -0
- package/lib/mjs/components/textarea/fixtures/index.d.ts +2 -1
- package/lib/mjs/components/textarea/fixtures/index.js +2 -1
- package/lib/mjs/components/textfield/TextField.d.ts +22 -0
- package/lib/mjs/components/textfield/TextField.js +14 -3
- package/lib/mjs/components/time/Time.d.ts +11 -0
- package/lib/mjs/components/time/Time.js +12 -1
- package/lib/mjs/components/tree/Tree.d.ts +5 -4
- package/lib/mjs/components/tree/Tree.form.js +5 -0
- package/lib/mjs/components/tree/Tree.js +8 -9
- package/lib/mjs/components/tree/editForm/Tree.edit.display.d.ts +9 -0
- package/lib/mjs/components/tree/editForm/Tree.edit.display.js +10 -0
- package/lib/mjs/components/well/Well.d.ts +2 -0
- package/lib/mjs/components/well/Well.js +4 -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/providers/Providers.d.ts +31 -11
- package/lib/mjs/providers/address/GoogleAddressProvider.d.ts +2 -2
- package/lib/mjs/providers/address/GoogleAddressProvider.js +2 -3
- package/lib/mjs/providers/processor/fileProcessor.d.ts +1 -1
- package/lib/mjs/providers/processor/fileProcessor.js +1 -2
- package/lib/mjs/providers/storage/azure.d.ts +10 -1
- package/lib/mjs/providers/storage/azure.js +7 -2
- package/lib/mjs/providers/storage/base64.d.ts +2 -2
- package/lib/mjs/providers/storage/base64.js +2 -3
- package/lib/mjs/providers/storage/dropbox.d.ts +2 -2
- package/lib/mjs/providers/storage/dropbox.js +2 -3
- package/lib/mjs/providers/storage/googleDrive.d.ts +3 -2
- package/lib/mjs/providers/storage/googleDrive.js +6 -3
- package/lib/mjs/providers/storage/indexeddb.d.ts +3 -3
- package/lib/mjs/providers/storage/indexeddb.js +9 -10
- package/lib/mjs/providers/storage/s3.d.ts +11 -1
- package/lib/mjs/providers/storage/s3.js +5 -2
- package/lib/mjs/providers/storage/uploadAdapter.js +1 -2
- package/lib/mjs/providers/storage/url.d.ts +2 -2
- package/lib/mjs/providers/storage/url.js +12 -5
- package/lib/mjs/providers/storage/xhr.d.ts +1 -1
- package/lib/mjs/providers/storage/xhr.js +1 -2
- package/lib/mjs/templates/index.d.ts +226 -1
- package/lib/mjs/utils/Evaluator.js +4 -33
- package/lib/mjs/utils/i18n.d.ts +16 -0
- package/lib/mjs/utils/i18n.js +81 -0
- package/lib/mjs/utils/utils.d.ts +11 -1
- package/lib/mjs/utils/utils.js +27 -9
- package/lib/mjs/validator/Validator.d.ts +30 -2
- package/lib/mjs/validator/Validator.js +31 -9
- package/lib/mjs/validator/rules/Select.js +1 -2
- package/lib/mjs/validator/rules/Unique.d.ts +1 -1
- package/lib/mjs/validator/rules/Unique.js +1 -2
- package/lib/mjs/widgets/CalendarWidget.d.ts +1 -0
- package/lib/mjs/widgets/InputWidget.d.ts +1 -1
- package/lib/mjs/widgets/InputWidget.js +1 -2
- package/package.json +18 -15
- package/types/index.d.ts +1 -0
- package/types/licenses.d.ts +7 -0
- package/types/utils.d.ts +2 -0
package/lib/mjs/Form.js
CHANGED
|
@@ -3,7 +3,6 @@ import { Formio } from './Formio';
|
|
|
3
3
|
import Displays from './displays';
|
|
4
4
|
import templates from './templates';
|
|
5
5
|
import * as FormioUtils from './utils/utils';
|
|
6
|
-
import NativePromise from 'native-promise-only';
|
|
7
6
|
export default class Form extends Element {
|
|
8
7
|
/**
|
|
9
8
|
* Creates an easy to use interface for embedding webforms, pdfs, and wizards into your application.
|
|
@@ -17,7 +16,7 @@ export default class Form extends Element {
|
|
|
17
16
|
* @param {boolean} options.template - Provides a way to inject custom logic into the creation of every element rendered within the form.
|
|
18
17
|
*
|
|
19
18
|
* @example
|
|
20
|
-
* import Form from '
|
|
19
|
+
* import Form from '@formio/js/Form';
|
|
21
20
|
* const form = new Form(document.getElementById('formio'), 'https://examples.form.io/example');
|
|
22
21
|
* form.build();
|
|
23
22
|
*/
|
|
@@ -30,7 +29,7 @@ export default class Form extends Element {
|
|
|
30
29
|
if (this.options.useSessionToken) {
|
|
31
30
|
Formio.useSessionToken(this.options);
|
|
32
31
|
}
|
|
33
|
-
this.ready = new
|
|
32
|
+
this.ready = new Promise((resolve, reject) => {
|
|
34
33
|
this.readyResolve = resolve;
|
|
35
34
|
this.readyReject = reject;
|
|
36
35
|
});
|
|
@@ -61,6 +60,47 @@ export default class Form extends Element {
|
|
|
61
60
|
}
|
|
62
61
|
this.display = '';
|
|
63
62
|
}
|
|
63
|
+
createElement(tag, attrs, children) {
|
|
64
|
+
const element = document.createElement(tag);
|
|
65
|
+
for (const attr in attrs) {
|
|
66
|
+
if (attrs.hasOwnProperty(attr)) {
|
|
67
|
+
element.setAttribute(attr, attrs[attr]);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
(children || []).forEach(child => {
|
|
71
|
+
element.appendChild(this.createElement(child.tag, child.attrs, child.children));
|
|
72
|
+
});
|
|
73
|
+
return element;
|
|
74
|
+
}
|
|
75
|
+
set loading(load) {
|
|
76
|
+
if (!this.element || this.options.noLoader) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (load) {
|
|
80
|
+
if (this.loader) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
this.loader = this.createElement('div', {
|
|
84
|
+
'class': 'formio-loader'
|
|
85
|
+
}, [{
|
|
86
|
+
tag: 'div',
|
|
87
|
+
attrs: {
|
|
88
|
+
class: 'loader-wrapper'
|
|
89
|
+
},
|
|
90
|
+
children: [{
|
|
91
|
+
tag: 'div',
|
|
92
|
+
attrs: {
|
|
93
|
+
class: 'loader text-center'
|
|
94
|
+
}
|
|
95
|
+
}]
|
|
96
|
+
}]);
|
|
97
|
+
this.element.appendChild(this.loader);
|
|
98
|
+
}
|
|
99
|
+
else if (this.loader) {
|
|
100
|
+
this.element.removeChild(this.loader);
|
|
101
|
+
this.loader = null;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
64
104
|
/**
|
|
65
105
|
* Create a new form instance provided the display of the form.
|
|
66
106
|
*
|
|
@@ -116,6 +156,7 @@ export default class Form extends Element {
|
|
|
116
156
|
if (typeof formParam === 'string') {
|
|
117
157
|
const formio = new Formio(formParam);
|
|
118
158
|
let error;
|
|
159
|
+
this.loading = true;
|
|
119
160
|
result = this.getSubmission(formio, this.options)
|
|
120
161
|
.catch((err) => {
|
|
121
162
|
error = err;
|
|
@@ -131,6 +172,7 @@ export default class Form extends Element {
|
|
|
131
172
|
if (error) {
|
|
132
173
|
form = this.errorForm(error);
|
|
133
174
|
}
|
|
175
|
+
this.loading = false;
|
|
134
176
|
this.instance = this.instance || this.create(form.display);
|
|
135
177
|
this.instance.url = formParam;
|
|
136
178
|
this.instance.nosubmit = false;
|
|
@@ -163,7 +205,7 @@ export default class Form extends Element {
|
|
|
163
205
|
if (formio.submissionId) {
|
|
164
206
|
return formio.loadSubmission(null, opts);
|
|
165
207
|
}
|
|
166
|
-
return
|
|
208
|
+
return Promise.resolve();
|
|
167
209
|
}
|
|
168
210
|
/**
|
|
169
211
|
* Returns the loaded forms JSON.
|
|
@@ -181,7 +223,7 @@ export default class Form extends Element {
|
|
|
181
223
|
*/
|
|
182
224
|
setDisplay(display) {
|
|
183
225
|
if ((this.display === display) && this.instance) {
|
|
184
|
-
return
|
|
226
|
+
return Promise.resolve(this.instance);
|
|
185
227
|
}
|
|
186
228
|
this.form.display = display;
|
|
187
229
|
this.instance.destroy();
|
|
@@ -196,7 +238,7 @@ export default class Form extends Element {
|
|
|
196
238
|
}
|
|
197
239
|
}
|
|
198
240
|
static embed(embed) {
|
|
199
|
-
return new
|
|
241
|
+
return new Promise((resolve) => {
|
|
200
242
|
if (!embed || !embed.src) {
|
|
201
243
|
resolve();
|
|
202
244
|
}
|
|
@@ -243,10 +285,10 @@ export default class Form extends Element {
|
|
|
243
285
|
*/
|
|
244
286
|
build() {
|
|
245
287
|
if (!this.instance) {
|
|
246
|
-
return
|
|
288
|
+
return Promise.reject('Form not ready. Use form.ready promise');
|
|
247
289
|
}
|
|
248
290
|
if (!this.element) {
|
|
249
|
-
return
|
|
291
|
+
return Promise.reject('No DOM element for form.');
|
|
250
292
|
}
|
|
251
293
|
// Add temporary loader.
|
|
252
294
|
const template = (this.options && this.options.template) ? this.options.template : 'bootstrap';
|
|
@@ -263,9 +305,9 @@ export default class Form extends Element {
|
|
|
263
305
|
}
|
|
264
306
|
render() {
|
|
265
307
|
if (!this.instance) {
|
|
266
|
-
return
|
|
308
|
+
return Promise.reject('Form not ready. Use form.ready promise');
|
|
267
309
|
}
|
|
268
|
-
return
|
|
310
|
+
return Promise.resolve(this.instance.render())
|
|
269
311
|
.then((param) => {
|
|
270
312
|
this.emit('render', param);
|
|
271
313
|
return param;
|
|
@@ -273,7 +315,7 @@ export default class Form extends Element {
|
|
|
273
315
|
}
|
|
274
316
|
attach(element) {
|
|
275
317
|
if (!this.instance) {
|
|
276
|
-
return
|
|
318
|
+
return Promise.reject('Form not ready. Use form.ready promise');
|
|
277
319
|
}
|
|
278
320
|
if (this.element) {
|
|
279
321
|
delete this.element.component;
|
package/lib/mjs/PDF.d.ts
CHANGED
|
@@ -4,9 +4,10 @@ export default class PDF extends Webform {
|
|
|
4
4
|
init(): void;
|
|
5
5
|
submitButton: any;
|
|
6
6
|
attachComponents(element: any, components: any, container: any): Promise<void>;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
attach(element: any): Promise<void>;
|
|
8
|
+
iframeReady: Promise<any> | undefined;
|
|
9
|
+
iframeReadyResolve: ((value: any) => void) | undefined;
|
|
10
|
+
iframeReadyReject: ((reason?: any) => void) | undefined;
|
|
10
11
|
iframeElement: any;
|
|
11
12
|
/**
|
|
12
13
|
* Get the submission from the iframe.
|
|
@@ -14,6 +15,13 @@ export default class PDF extends Webform {
|
|
|
14
15
|
* @return {Promise<any>}
|
|
15
16
|
*/
|
|
16
17
|
getSubmission(): Promise<any>;
|
|
18
|
+
/**
|
|
19
|
+
* Ensure we have the submission from the iframe before we submit the form.
|
|
20
|
+
*
|
|
21
|
+
* @param options
|
|
22
|
+
* @return {*}
|
|
23
|
+
*/
|
|
24
|
+
submitForm(options?: {}): any;
|
|
17
25
|
getSrc(): string;
|
|
18
26
|
setForm(form: any, flags?: {}): any;
|
|
19
27
|
/**
|
package/lib/mjs/PDF.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import NativePromise from 'native-promise-only';
|
|
2
1
|
import { Formio } from './Formio';
|
|
3
2
|
import Webform from './Webform';
|
|
4
3
|
import { fastCloneDeep, eachComponent } from './utils/utils';
|
|
@@ -56,7 +55,7 @@ export default class PDF extends Webform {
|
|
|
56
55
|
}
|
|
57
56
|
redraw() {
|
|
58
57
|
this.postMessage({ name: 'redraw' });
|
|
59
|
-
return this.builderMode ?
|
|
58
|
+
return this.builderMode ? Promise.resolve() : super.redraw();
|
|
60
59
|
}
|
|
61
60
|
destroy(all = false) {
|
|
62
61
|
if (this.iframeElement) {
|
|
@@ -69,7 +68,7 @@ export default class PDF extends Webform {
|
|
|
69
68
|
if (this.attached && this.builderMode && this.component.components) {
|
|
70
69
|
this.destroyComponents();
|
|
71
70
|
this.addComponents();
|
|
72
|
-
return
|
|
71
|
+
return Promise.resolve();
|
|
73
72
|
}
|
|
74
73
|
this.postMessage({ name: 'redraw' });
|
|
75
74
|
return super.rebuild();
|
|
@@ -94,7 +93,7 @@ export default class PDF extends Webform {
|
|
|
94
93
|
this.submitButton.refs = { ...this.refs };
|
|
95
94
|
this.submitButton.attachButton();
|
|
96
95
|
// Reset the iframeReady promise.
|
|
97
|
-
this.iframeReady = new
|
|
96
|
+
this.iframeReady = new Promise((resolve, reject) => {
|
|
98
97
|
this.iframeReadyResolve = resolve;
|
|
99
98
|
this.iframeReadyReject = reject;
|
|
100
99
|
});
|
|
@@ -143,7 +142,7 @@ export default class PDF extends Webform {
|
|
|
143
142
|
* @return {Promise<any>}
|
|
144
143
|
*/
|
|
145
144
|
getSubmission() {
|
|
146
|
-
return new
|
|
145
|
+
return new Promise((resolve) => {
|
|
147
146
|
this.once('iframe-submission', resolve);
|
|
148
147
|
this.postMessage({ name: 'getSubmission' });
|
|
149
148
|
});
|
package/lib/mjs/PDFBuilder.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
|
-
import NativePromise from 'native-promise-only';
|
|
3
2
|
import { Formio } from './Formio';
|
|
4
3
|
import WebformBuilder from './WebformBuilder';
|
|
5
4
|
import { fastCloneDeep, getElementRect, getBrowserInfo } from './utils/utils';
|
|
@@ -152,7 +151,7 @@ export default class PDFBuilder extends WebformBuilder {
|
|
|
152
151
|
this.refs.hiddenFileInputElement.value = '';
|
|
153
152
|
});
|
|
154
153
|
}
|
|
155
|
-
return
|
|
154
|
+
return Promise.resolve();
|
|
156
155
|
}
|
|
157
156
|
// Normal PDF Builder
|
|
158
157
|
return super.attach(element).then(() => {
|
|
@@ -411,7 +410,7 @@ export default class PDFBuilder extends WebformBuilder {
|
|
|
411
410
|
if (!this.dropEvent) {
|
|
412
411
|
// a 'drop' event may not be emited in the chrome browser when using a Mac, therefore an additional check has been added
|
|
413
412
|
// eslint-disable-next-line no-undef
|
|
414
|
-
if (!this.dropEmitted && getBrowserInfo().chrome && globalThis.navigator.userAgentData.platform === 'macOS' && iframeRect.left < e.clientX && iframeRect.top < e.clientY) {
|
|
413
|
+
if (!this.dropEmitted && (getBrowserInfo().chrome || getBrowserInfo().edge) && globalThis.navigator.userAgentData.platform === 'macOS' && iframeRect.left < e.clientX && iframeRect.top < e.clientY) {
|
|
415
414
|
this.dropEvent = e;
|
|
416
415
|
this.dropEvent.dataTransfer.effectAllowed = 'all';
|
|
417
416
|
this.dropEmitted = true;
|
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!');
|
|
@@ -132,11 +132,6 @@ declare class Webform extends NestedDataComponent {
|
|
|
132
132
|
* @return {*}
|
|
133
133
|
*/
|
|
134
134
|
addLanguage(code: any, lang: any, active?: boolean): any;
|
|
135
|
-
/**
|
|
136
|
-
* Perform the localization initialization.
|
|
137
|
-
* @returns {*}
|
|
138
|
-
*/
|
|
139
|
-
localize(): any;
|
|
140
135
|
keyboardCatchableElement(element: any): boolean;
|
|
141
136
|
executeShortcuts: (event: any) => void;
|
|
142
137
|
/**
|
|
@@ -145,7 +140,7 @@ declare class Webform extends NestedDataComponent {
|
|
|
145
140
|
* @param {string} value - The value of the form embed url.
|
|
146
141
|
*
|
|
147
142
|
* @example
|
|
148
|
-
* import Webform from '
|
|
143
|
+
* import Webform from '@formio/js/Webform';
|
|
149
144
|
* let form = new Webform(document.getElementById('formio'));
|
|
150
145
|
* form.formReady.then(() => {
|
|
151
146
|
* console.log('The form is formReady!');
|
|
@@ -212,7 +207,7 @@ declare class Webform extends NestedDataComponent {
|
|
|
212
207
|
* Sets the JSON schema for the form to be rendered.
|
|
213
208
|
*
|
|
214
209
|
* @example
|
|
215
|
-
* import Webform from '
|
|
210
|
+
* import Webform from '@formio/js/Webform';
|
|
216
211
|
* let form = new Webform(document.getElementById('formio'));
|
|
217
212
|
* form.setForm({
|
|
218
213
|
* components: [
|
|
@@ -262,7 +257,7 @@ declare class Webform extends NestedDataComponent {
|
|
|
262
257
|
* Sets the submission of a form.
|
|
263
258
|
*
|
|
264
259
|
* @example
|
|
265
|
-
* import Webform from '
|
|
260
|
+
* import Webform from '@formio/js/Webform';
|
|
266
261
|
* let form = new Webform(document.getElementById('formio'));
|
|
267
262
|
* form.src = 'https://examples.form.io/example';
|
|
268
263
|
* form.submission = {data: {
|
|
@@ -308,6 +303,8 @@ declare class Webform extends NestedDataComponent {
|
|
|
308
303
|
build(element: any): Promise<any>;
|
|
309
304
|
getClassName(): string;
|
|
310
305
|
render(): any;
|
|
306
|
+
redraw(): Promise<void> | Promise<boolean>;
|
|
307
|
+
attach(element: any): Promise<boolean>;
|
|
311
308
|
hasRequiredFields(): boolean;
|
|
312
309
|
/**
|
|
313
310
|
* Sets a new alert to display in the error dialog of the form.
|
|
@@ -365,17 +362,17 @@ declare class Webform extends NestedDataComponent {
|
|
|
365
362
|
*/
|
|
366
363
|
cancel(noconfirm: any): boolean;
|
|
367
364
|
setMetadata(submission: any): void;
|
|
368
|
-
submitForm(options?: {}): any
|
|
365
|
+
submitForm(options?: {}): Promise<any>;
|
|
369
366
|
setServerErrors(error: any): void;
|
|
370
367
|
serverErrors: any;
|
|
371
|
-
executeSubmit(options: any):
|
|
368
|
+
executeSubmit(options: any): Promise<object>;
|
|
372
369
|
submissionInProcess: boolean | undefined;
|
|
373
370
|
clearServerErrors(): void;
|
|
374
371
|
/**
|
|
375
372
|
* Submits the form.
|
|
376
373
|
*
|
|
377
374
|
* @example
|
|
378
|
-
* import Webform from '
|
|
375
|
+
* import Webform from '@formio/js/Webform';
|
|
379
376
|
* let form = new Webform(document.getElementById('formio'));
|
|
380
377
|
* form.src = 'https://examples.form.io/example';
|
|
381
378
|
* form.submission = {data: {
|
package/lib/mjs/Webform.js
CHANGED
|
@@ -4,7 +4,6 @@ import { compareVersions } from 'compare-versions';
|
|
|
4
4
|
import EventEmitter from './EventEmitter';
|
|
5
5
|
import i18nDefaults from './i18n';
|
|
6
6
|
import { Formio } from './Formio';
|
|
7
|
-
import NativePromise from 'native-promise-only';
|
|
8
7
|
import Components from './components/Components';
|
|
9
8
|
import NestedDataComponent from './components/_classes/nesteddata/NestedDataComponent';
|
|
10
9
|
import { fastCloneDeep, currentTimezone, unescapeHTML, getStringFromComponentPath, searchComponents, convertStringToHTMLElement, getArrayFromComponentPath } from './utils/utils';
|
|
@@ -68,42 +67,6 @@ export default class Webform extends NestedDataComponent {
|
|
|
68
67
|
if (this.options.baseUrl) {
|
|
69
68
|
Formio.setBaseUrl(this.options.baseUrl);
|
|
70
69
|
}
|
|
71
|
-
/**
|
|
72
|
-
* The i18n configuration for this component.
|
|
73
|
-
*/
|
|
74
|
-
let i18n = i18nDefaults;
|
|
75
|
-
if (options && options.i18n && !options.i18nReady) {
|
|
76
|
-
// Support legacy way of doing translations.
|
|
77
|
-
if (options.i18n.resources) {
|
|
78
|
-
i18n = options.i18n;
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
_.each(options.i18n, (lang, code) => {
|
|
82
|
-
if (code === 'options') {
|
|
83
|
-
_.merge(i18n, lang);
|
|
84
|
-
}
|
|
85
|
-
else if (!i18n.resources[code]) {
|
|
86
|
-
// extend the default translations (validations, buttons etc.) in case they are not in the options.
|
|
87
|
-
i18n.resources[code] = { translation: _.assign(fastCloneDeep(i18nDefaults.resources.en.translation), lang) };
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
_.assign(i18n.resources[code].translation, lang);
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
options.i18n = i18n;
|
|
95
|
-
options.i18nReady = true;
|
|
96
|
-
}
|
|
97
|
-
if (options && options.i18n) {
|
|
98
|
-
this.options.i18n = options.i18n;
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
this.options.i18n = i18n;
|
|
102
|
-
}
|
|
103
|
-
// Set the language.
|
|
104
|
-
if (this.options.language) {
|
|
105
|
-
this.options.i18n.lng = this.options.language;
|
|
106
|
-
}
|
|
107
70
|
/**
|
|
108
71
|
* The type of this element.
|
|
109
72
|
* @type {string}
|
|
@@ -168,14 +131,14 @@ export default class Webform extends NestedDataComponent {
|
|
|
168
131
|
* @type {Promise}
|
|
169
132
|
*
|
|
170
133
|
* @example
|
|
171
|
-
* import Webform from '
|
|
134
|
+
* import Webform from '@formio/js/Webform';
|
|
172
135
|
* let form = new Webform(document.getElementById('formio'));
|
|
173
136
|
* form.formReady.then(() => {
|
|
174
137
|
* console.log('The form is ready!');
|
|
175
138
|
* });
|
|
176
139
|
* form.src = 'https://examples.form.io/example';
|
|
177
140
|
*/
|
|
178
|
-
this.formReady = new
|
|
141
|
+
this.formReady = new Promise((resolve, reject) => {
|
|
179
142
|
/**
|
|
180
143
|
* Called when the formReady state of this form has been resolved.
|
|
181
144
|
*
|
|
@@ -194,14 +157,14 @@ export default class Webform extends NestedDataComponent {
|
|
|
194
157
|
* @type {Promise}
|
|
195
158
|
*
|
|
196
159
|
* @example
|
|
197
|
-
* import Webform from '
|
|
160
|
+
* import Webform from '@formio/js/Webform';
|
|
198
161
|
* let form = new Webform(document.getElementById('formio'));
|
|
199
162
|
* form.submissionReady.then(() => {
|
|
200
163
|
* console.log('The submission is ready!');
|
|
201
164
|
* });
|
|
202
165
|
* form.src = 'https://examples.form.io/example/submission/234234234234234243';
|
|
203
166
|
*/
|
|
204
|
-
this.submissionReady = new
|
|
167
|
+
this.submissionReady = new Promise((resolve, reject) => {
|
|
205
168
|
/**
|
|
206
169
|
* Called when the formReady state of this form has been resolved.
|
|
207
170
|
*
|
|
@@ -217,9 +180,7 @@ export default class Webform extends NestedDataComponent {
|
|
|
217
180
|
});
|
|
218
181
|
this.shortcuts = [];
|
|
219
182
|
// Set language after everything is established.
|
|
220
|
-
this.
|
|
221
|
-
this.language = this.options.language;
|
|
222
|
-
});
|
|
183
|
+
this.language = this.i18next.language;
|
|
223
184
|
// See if we need to restore the draft from a user.
|
|
224
185
|
if (this.options.saveDraft && !this.options.skipDraftRestore) {
|
|
225
186
|
const user = Formio.getUser();
|
|
@@ -253,32 +214,17 @@ export default class Webform extends NestedDataComponent {
|
|
|
253
214
|
if (!this.i18next) {
|
|
254
215
|
return;
|
|
255
216
|
}
|
|
256
|
-
|
|
257
|
-
if (
|
|
258
|
-
return;
|
|
259
|
-
}
|
|
260
|
-
cleanupThis.options.language = lang;
|
|
261
|
-
if (cleanupThis.i18next.language === lang) {
|
|
262
|
-
cleanupThis = null;
|
|
263
|
-
return;
|
|
264
|
-
}
|
|
265
|
-
try {
|
|
266
|
-
cleanupThis.i18next.changeLanguage(lang, (err) => {
|
|
267
|
-
if (err) {
|
|
268
|
-
cleanupThis = null;
|
|
269
|
-
return;
|
|
270
|
-
}
|
|
271
|
-
if (cleanupThis) {
|
|
272
|
-
cleanupThis.rebuild();
|
|
273
|
-
cleanupThis.emit('languageChanged');
|
|
274
|
-
cleanupThis = null;
|
|
275
|
-
}
|
|
276
|
-
});
|
|
277
|
-
}
|
|
278
|
-
catch (err) {
|
|
279
|
-
cleanupThis = null;
|
|
217
|
+
this.options.language = lang;
|
|
218
|
+
if (this.i18next.language === lang) {
|
|
280
219
|
return;
|
|
281
220
|
}
|
|
221
|
+
this.i18next.changeLanguage(lang, (err) => {
|
|
222
|
+
if (err) {
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
this.rebuild();
|
|
226
|
+
this.emit('languageChanged');
|
|
227
|
+
});
|
|
282
228
|
}
|
|
283
229
|
get componentComponents() {
|
|
284
230
|
return this.form.components;
|
|
@@ -303,48 +249,6 @@ export default class Webform extends NestedDataComponent {
|
|
|
303
249
|
}
|
|
304
250
|
}
|
|
305
251
|
}
|
|
306
|
-
/**
|
|
307
|
-
* Perform the localization initialization.
|
|
308
|
-
* @returns {*}
|
|
309
|
-
*/
|
|
310
|
-
localize() {
|
|
311
|
-
if (!this.i18next) {
|
|
312
|
-
return NativePromise.resolve(null);
|
|
313
|
-
}
|
|
314
|
-
if (this.i18next.initialized) {
|
|
315
|
-
return NativePromise.resolve(this.i18next);
|
|
316
|
-
}
|
|
317
|
-
this.i18next.initialized = true;
|
|
318
|
-
let cleanupThis = this;
|
|
319
|
-
return new NativePromise((resolve, reject) => {
|
|
320
|
-
try {
|
|
321
|
-
if (!cleanupThis) {
|
|
322
|
-
return;
|
|
323
|
-
}
|
|
324
|
-
cleanupThis.i18next.init({
|
|
325
|
-
...cleanupThis.options.i18n,
|
|
326
|
-
...{ compatibilityJSON: 'v3' }
|
|
327
|
-
}, (err) => {
|
|
328
|
-
if (!cleanupThis) {
|
|
329
|
-
reject(new Error('Lost reference to `this` while initializing i18next.'));
|
|
330
|
-
}
|
|
331
|
-
// Get language but remove any ;q=1 that might exist on it.
|
|
332
|
-
cleanupThis.options.language = cleanupThis.i18next.language.split(';')[0];
|
|
333
|
-
if (err) {
|
|
334
|
-
cleanupThis = null;
|
|
335
|
-
return reject(err);
|
|
336
|
-
}
|
|
337
|
-
const i18next = cleanupThis.i18next;
|
|
338
|
-
cleanupThis = null;
|
|
339
|
-
resolve(i18next);
|
|
340
|
-
});
|
|
341
|
-
}
|
|
342
|
-
catch (err) {
|
|
343
|
-
cleanupThis = null;
|
|
344
|
-
return reject(err);
|
|
345
|
-
}
|
|
346
|
-
});
|
|
347
|
-
}
|
|
348
252
|
keyboardCatchableElement(element) {
|
|
349
253
|
if (element.nodeName === 'TEXTAREA') {
|
|
350
254
|
return false;
|
|
@@ -456,7 +360,7 @@ export default class Webform extends NestedDataComponent {
|
|
|
456
360
|
this.formReadyReject(err);
|
|
457
361
|
});
|
|
458
362
|
}
|
|
459
|
-
return
|
|
363
|
+
return Promise.resolve();
|
|
460
364
|
}
|
|
461
365
|
/**
|
|
462
366
|
* Set the Form source, which is typically the Form.io embed URL.
|
|
@@ -464,7 +368,7 @@ export default class Webform extends NestedDataComponent {
|
|
|
464
368
|
* @param {string} value - The value of the form embed url.
|
|
465
369
|
*
|
|
466
370
|
* @example
|
|
467
|
-
* import Webform from '
|
|
371
|
+
* import Webform from '@formio/js/Webform';
|
|
468
372
|
* let form = new Webform(document.getElementById('formio'));
|
|
469
373
|
* form.formReady.then(() => {
|
|
470
374
|
* console.log('The form is formReady!');
|
|
@@ -569,7 +473,7 @@ export default class Webform extends NestedDataComponent {
|
|
|
569
473
|
* Sets the JSON schema for the form to be rendered.
|
|
570
474
|
*
|
|
571
475
|
* @example
|
|
572
|
-
* import Webform from '
|
|
476
|
+
* import Webform from '@formio/js/Webform';
|
|
573
477
|
* let form = new Webform(document.getElementById('formio'));
|
|
574
478
|
* form.setForm({
|
|
575
479
|
* components: [
|
|
@@ -605,7 +509,7 @@ export default class Webform extends NestedDataComponent {
|
|
|
605
509
|
try {
|
|
606
510
|
// Do not set the form again if it has been already set
|
|
607
511
|
if (isFormAlreadySet && JSON.stringify(this._form) === JSON.stringify(form)) {
|
|
608
|
-
return
|
|
512
|
+
return Promise.resolve();
|
|
609
513
|
}
|
|
610
514
|
// Create the form.
|
|
611
515
|
this._form = flags?.keepAsReference ? form : _.cloneDeep(form);
|
|
@@ -613,13 +517,13 @@ export default class Webform extends NestedDataComponent {
|
|
|
613
517
|
this.onSetForm(_.cloneDeep(this._form), form);
|
|
614
518
|
}
|
|
615
519
|
if (this.parent?.component?.modalEdit) {
|
|
616
|
-
return
|
|
520
|
+
return Promise.resolve();
|
|
617
521
|
}
|
|
618
522
|
}
|
|
619
523
|
catch (err) {
|
|
620
524
|
console.warn(err);
|
|
621
525
|
// If provided form is not a valid JSON object, do not set it too
|
|
622
|
-
return
|
|
526
|
+
return Promise.resolve();
|
|
623
527
|
}
|
|
624
528
|
// Allow the form to provide component overrides.
|
|
625
529
|
if (form && form.settings && form.settings.components) {
|
|
@@ -656,7 +560,7 @@ export default class Webform extends NestedDataComponent {
|
|
|
656
560
|
}
|
|
657
561
|
}
|
|
658
562
|
this.initialized = false;
|
|
659
|
-
const rebuild = this.rebuild() ||
|
|
563
|
+
const rebuild = this.rebuild() || Promise.resolve();
|
|
660
564
|
return rebuild.then(() => {
|
|
661
565
|
this.emit('formLoad', form);
|
|
662
566
|
this.triggerRecaptcha();
|
|
@@ -702,7 +606,7 @@ export default class Webform extends NestedDataComponent {
|
|
|
702
606
|
* Sets the submission of a form.
|
|
703
607
|
*
|
|
704
608
|
* @example
|
|
705
|
-
* import Webform from '
|
|
609
|
+
* import Webform from '@formio/js/Webform';
|
|
706
610
|
* let form = new Webform(document.getElementById('formio'));
|
|
707
611
|
* form.src = 'https://examples.form.io/example';
|
|
708
612
|
* form.submission = {data: {
|
|
@@ -815,7 +719,10 @@ export default class Webform extends NestedDataComponent {
|
|
|
815
719
|
}
|
|
816
720
|
setValue(submission, flags = {}) {
|
|
817
721
|
if (!submission || !submission.data) {
|
|
818
|
-
submission = {
|
|
722
|
+
submission = {
|
|
723
|
+
data: {},
|
|
724
|
+
metadata: submission.metadata,
|
|
725
|
+
};
|
|
819
726
|
}
|
|
820
727
|
// Metadata needs to be available before setValue
|
|
821
728
|
this._submission.metadata = submission.metadata || {};
|
|
@@ -849,7 +756,14 @@ export default class Webform extends NestedDataComponent {
|
|
|
849
756
|
* Build the form.
|
|
850
757
|
*/
|
|
851
758
|
init() {
|
|
852
|
-
|
|
759
|
+
if (this.options.submission) {
|
|
760
|
+
const submission = _.extend({}, this.options.submission);
|
|
761
|
+
this._submission = submission;
|
|
762
|
+
this._data = submission.data;
|
|
763
|
+
}
|
|
764
|
+
else {
|
|
765
|
+
this._submission = this._submission || { data: {} };
|
|
766
|
+
}
|
|
853
767
|
// Remove any existing components.
|
|
854
768
|
if (this.components && this.components.length) {
|
|
855
769
|
this.destroyComponents();
|
|
@@ -930,7 +844,7 @@ export default class Webform extends NestedDataComponent {
|
|
|
930
844
|
redraw() {
|
|
931
845
|
// Don't bother if we have not built yet.
|
|
932
846
|
if (!this.element) {
|
|
933
|
-
return
|
|
847
|
+
return Promise.resolve();
|
|
934
848
|
}
|
|
935
849
|
this.clear();
|
|
936
850
|
this.setContent(this.element, this.render());
|
|
@@ -1303,7 +1217,7 @@ export default class Webform extends NestedDataComponent {
|
|
|
1303
1217
|
}
|
|
1304
1218
|
submitForm(options = {}) {
|
|
1305
1219
|
this.clearServerErrors();
|
|
1306
|
-
return new
|
|
1220
|
+
return new Promise((resolve, reject) => {
|
|
1307
1221
|
// Read-only forms should never submit.
|
|
1308
1222
|
if (this.options.readOnly) {
|
|
1309
1223
|
return resolve({
|
|
@@ -1327,6 +1241,9 @@ export default class Webform extends NestedDataComponent {
|
|
|
1327
1241
|
return reject();
|
|
1328
1242
|
}
|
|
1329
1243
|
this.everyComponent((comp) => {
|
|
1244
|
+
if (submission._vnote && comp.type === 'form' && comp.component.reference) {
|
|
1245
|
+
_.get(submission.data, comp.path, {})._vnote = submission._vnote;
|
|
1246
|
+
}
|
|
1330
1247
|
const { persistent } = comp.component;
|
|
1331
1248
|
if (persistent === 'client-only') {
|
|
1332
1249
|
_.unset(submission.data, comp.path);
|
|
@@ -1404,7 +1321,7 @@ export default class Webform extends NestedDataComponent {
|
|
|
1404
1321
|
})
|
|
1405
1322
|
.catch((err) => {
|
|
1406
1323
|
this.submissionInProcess = false;
|
|
1407
|
-
return
|
|
1324
|
+
return Promise.reject(this.onSubmissionError(err));
|
|
1408
1325
|
});
|
|
1409
1326
|
}
|
|
1410
1327
|
clearServerErrors() {
|
|
@@ -1423,7 +1340,7 @@ export default class Webform extends NestedDataComponent {
|
|
|
1423
1340
|
* Submits the form.
|
|
1424
1341
|
*
|
|
1425
1342
|
* @example
|
|
1426
|
-
* import Webform from '
|
|
1343
|
+
* import Webform from '@formio/js/Webform';
|
|
1427
1344
|
* let form = new Webform(document.getElementById('formio'));
|
|
1428
1345
|
* form.src = 'https://examples.form.io/example';
|
|
1429
1346
|
* form.submission = {data: {
|
|
@@ -1470,10 +1387,11 @@ export default class Webform extends NestedDataComponent {
|
|
|
1470
1387
|
this.emit('requestDone');
|
|
1471
1388
|
this.setAlert('success', '<p> Success </p>');
|
|
1472
1389
|
}).catch((e) => {
|
|
1473
|
-
|
|
1474
|
-
this.emit('error',
|
|
1475
|
-
console.error(
|
|
1476
|
-
this.setAlert('danger', `<p> ${
|
|
1390
|
+
const message = `${e.statusText ? e.statusText : ''} ${e.status ? e.status : e}`;
|
|
1391
|
+
this.emit('error', message);
|
|
1392
|
+
console.error(message);
|
|
1393
|
+
this.setAlert('danger', `<p> ${message} </p>`);
|
|
1394
|
+
return Promise.reject(this.onSubmissionError(e));
|
|
1477
1395
|
});
|
|
1478
1396
|
}
|
|
1479
1397
|
else {
|