@formio/js 5.0.0-rc.19 → 5.0.0-rc.21
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -49,6 +49,7 @@ export default class WebformBuilder extends Component {
|
|
49
49
|
weight: number;
|
50
50
|
};
|
51
51
|
};
|
52
|
+
redraw(): Promise<void> | Promise<boolean>;
|
52
53
|
set form(arg: any);
|
53
54
|
get form(): any;
|
54
55
|
get container(): any;
|
@@ -60,6 +61,7 @@ export default class WebformBuilder extends Component {
|
|
60
61
|
findNamespaceRoot(component: any): any;
|
61
62
|
recurseNamespace(component: any): any;
|
62
63
|
render(): any;
|
64
|
+
attach(element: any): Promise<any>;
|
63
65
|
searchFields(searchString?: string): void;
|
64
66
|
orderComponents(groupInfo: any, foundComponents: any): void;
|
65
67
|
updateDragAndDrop(): any;
|
@@ -86,6 +88,9 @@ export default class WebformBuilder extends Component {
|
|
86
88
|
saveComponent(component: any, parent: any, isNew: any, original: any): boolean;
|
87
89
|
isComponentCreated: boolean | undefined;
|
88
90
|
emitSaveComponentEvent(schema: any, originalComp: any, parentComponentSchema: any, path: any, index: any, isNew: any, originalComponentSchema: any): void;
|
91
|
+
attachEditComponentControls(component: any, parent: any, isNew: any, original: any, ComponentClass: any): void;
|
92
|
+
saved: boolean | undefined;
|
93
|
+
showPreview: any;
|
89
94
|
editComponent(component: any, parent: any, isNew: any, isJsonEdit: any, original: any, flags?: {}): void;
|
90
95
|
editForm: Webform | undefined;
|
91
96
|
preview: Webform | null | undefined;
|
@@ -93,7 +98,7 @@ export default class WebformBuilder extends Component {
|
|
93
98
|
dialog: any;
|
94
99
|
updateComponentKey(data: any): any;
|
95
100
|
moveComponent(component: any): void;
|
96
|
-
|
101
|
+
selectedComponent: any;
|
97
102
|
moveHandler: (e: any) => void;
|
98
103
|
updateComponentPlacement(direction: any): void;
|
99
104
|
stopMoving(comp: any): void;
|
@@ -1,7 +1,6 @@
|
|
1
1
|
import Webform from './Webform';
|
2
2
|
import Component from './components/_classes/component/Component';
|
3
3
|
import tippy from 'tippy.js';
|
4
|
-
import NativePromise from 'native-promise-only';
|
5
4
|
import Components from './components/Components';
|
6
5
|
import { Formio } from './Formio';
|
7
6
|
import { fastCloneDeep, bootstrapVersion, getArrayFromComponentPath, getStringFromComponentPath } from './utils/utils';
|
@@ -305,6 +304,9 @@ export default class WebformBuilder extends Component {
|
|
305
304
|
});
|
306
305
|
}
|
307
306
|
attachComponent(element, component) {
|
307
|
+
if (component instanceof WebformBuilder) {
|
308
|
+
return;
|
309
|
+
}
|
308
310
|
// Add component to element for later reference.
|
309
311
|
element.formioComponent = component;
|
310
312
|
component.loadRefs(element, {
|
@@ -391,7 +393,7 @@ export default class WebformBuilder extends Component {
|
|
391
393
|
premium: {
|
392
394
|
title: 'Premium',
|
393
395
|
weight: 40
|
394
|
-
}
|
396
|
+
}
|
395
397
|
};
|
396
398
|
}
|
397
399
|
redraw() {
|
@@ -571,7 +573,7 @@ export default class WebformBuilder extends Component {
|
|
571
573
|
const { subgroups = [], components } = result;
|
572
574
|
const filteredComponents = [];
|
573
575
|
for (const key in components) {
|
574
|
-
const isMatchedToTitle = components[key].title.toLowerCase().match(searchValue);
|
576
|
+
const isMatchedToTitle = this.t(components[key].title).toLowerCase().match(searchValue);
|
575
577
|
const isMatchedToKey = components[key].key.toLowerCase().match(searchValue);
|
576
578
|
if (isMatchedToTitle || isMatchedToKey) {
|
577
579
|
filteredComponents.push(components[key]);
|
@@ -689,8 +691,17 @@ export default class WebformBuilder extends Component {
|
|
689
691
|
}
|
690
692
|
getComponentInfo(key, group) {
|
691
693
|
let info;
|
694
|
+
// Need to check in first order as resource component key can be the same as from webform default components
|
695
|
+
if (group && group.slice(0, group.indexOf('-')) === 'resource') {
|
696
|
+
// This is an existing resource field.
|
697
|
+
const resourceGroups = this.groups.resource.subgroups;
|
698
|
+
const resourceGroup = _.find(resourceGroups, { key: group });
|
699
|
+
if (resourceGroup && resourceGroup.components.hasOwnProperty(`component-${key}`)) {
|
700
|
+
info = fastCloneDeep(resourceGroup.components[`component-${key}`].schema);
|
701
|
+
}
|
702
|
+
}
|
692
703
|
// This is a new component
|
693
|
-
if (this.schemas.hasOwnProperty(key)) {
|
704
|
+
else if (this.schemas.hasOwnProperty(key)) {
|
694
705
|
info = fastCloneDeep(this.schemas[key]);
|
695
706
|
}
|
696
707
|
else if (this.groups.hasOwnProperty(group)) {
|
@@ -699,14 +710,6 @@ export default class WebformBuilder extends Component {
|
|
699
710
|
info = fastCloneDeep(groupComponents[key].schema);
|
700
711
|
}
|
701
712
|
}
|
702
|
-
else if (group.slice(0, group.indexOf('-')) === 'resource') {
|
703
|
-
// This is an existing resource field.
|
704
|
-
const resourceGroups = this.groups.resource.subgroups;
|
705
|
-
const resourceGroup = _.find(resourceGroups, { key: group });
|
706
|
-
if (resourceGroup && resourceGroup.components.hasOwnProperty(`component-${key}`)) {
|
707
|
-
info = fastCloneDeep(resourceGroup.components[`component-${key}`].schema);
|
708
|
-
}
|
709
|
-
}
|
710
713
|
else if (group === 'searchFields') { //Search components go into this group
|
711
714
|
const resourceGroups = this.groups.resource.subgroups;
|
712
715
|
for (let ix = 0; ix < resourceGroups.length; ix++) {
|
@@ -853,7 +856,7 @@ export default class WebformBuilder extends Component {
|
|
853
856
|
rebuild = target.formioComponent.rebuild();
|
854
857
|
}
|
855
858
|
if (!rebuild) {
|
856
|
-
rebuild =
|
859
|
+
rebuild = Promise.resolve();
|
857
860
|
}
|
858
861
|
return rebuild.then(() => {
|
859
862
|
this.emit('addComponent', info, parent, path, index, isNew && !this.options.noNewEdit && !info.noNewEdit);
|
@@ -871,7 +874,7 @@ export default class WebformBuilder extends Component {
|
|
871
874
|
}
|
872
875
|
this.keyboardActionsEnabled = _.get(this.options, 'keyboardBuilder', false) || this.options.properties?.keyboardBuilder;
|
873
876
|
const isShowSubmitButton = !this.options.noDefaultSubmitButton
|
874
|
-
&& !form.components.length;
|
877
|
+
&& (!form.components.length || !form.components.find(comp => comp.key === 'submit'));
|
875
878
|
// Ensure there is at least a submit button.
|
876
879
|
if (isShowSubmitButton) {
|
877
880
|
form.components.push({
|
@@ -898,7 +901,7 @@ export default class WebformBuilder extends Component {
|
|
898
901
|
return this.rebuild().then(() => this.form);
|
899
902
|
});
|
900
903
|
}
|
901
|
-
return
|
904
|
+
return Promise.resolve(form);
|
902
905
|
}
|
903
906
|
populateRecaptchaSettings(form) {
|
904
907
|
//populate isEnabled for recaptcha form settings
|
@@ -947,7 +950,7 @@ export default class WebformBuilder extends Component {
|
|
947
950
|
else if (parent.formioComponent && parent.formioComponent.removeChildComponent) {
|
948
951
|
parent.formioComponent.removeChildComponent(component);
|
949
952
|
}
|
950
|
-
const rebuild = parent.formioComponent.rebuild() ||
|
953
|
+
const rebuild = parent.formioComponent.rebuild() || Promise.resolve();
|
951
954
|
rebuild.then(() => {
|
952
955
|
this.emit('removeComponent', component, parent.formioComponent.schema, path, index);
|
953
956
|
this.emit('change', this.form);
|
@@ -996,6 +999,9 @@ export default class WebformBuilder extends Component {
|
|
996
999
|
_.assign(defaultValueComponent.component, _.omit({ ...component }, [
|
997
1000
|
'key',
|
998
1001
|
'label',
|
1002
|
+
'labelPosition',
|
1003
|
+
'labelMargin',
|
1004
|
+
'labelWidth',
|
999
1005
|
'placeholder',
|
1000
1006
|
'tooltip',
|
1001
1007
|
'hidden',
|
@@ -1124,7 +1130,7 @@ export default class WebformBuilder extends Component {
|
|
1124
1130
|
else if (isParentSaveChildMethod) {
|
1125
1131
|
parent.formioComponent.saveChildComponent(submissionData);
|
1126
1132
|
}
|
1127
|
-
const rebuild = parentComponent.rebuild() ||
|
1133
|
+
const rebuild = parentComponent.rebuild() || Promise.resolve();
|
1128
1134
|
return rebuild.then(() => {
|
1129
1135
|
const schema = parentContainer ? parentContainer[index] : (comp ? comp.schema : []);
|
1130
1136
|
this.emitSaveComponentEvent(schema, originalComp, parentComponent.schema, path, index, isNew, originalComponentSchema);
|
@@ -1138,16 +1144,70 @@ export default class WebformBuilder extends Component {
|
|
1138
1144
|
});
|
1139
1145
|
}
|
1140
1146
|
this.highlightInvalidComponents();
|
1141
|
-
return
|
1147
|
+
return Promise.resolve();
|
1142
1148
|
}
|
1143
1149
|
emitSaveComponentEvent(schema, originalComp, parentComponentSchema, path, index, isNew, originalComponentSchema) {
|
1144
1150
|
this.emit('saveComponent', schema, originalComp, parentComponentSchema, path, index, isNew, originalComponentSchema);
|
1145
1151
|
}
|
1152
|
+
attachEditComponentControls(component, parent, isNew, original, ComponentClass) {
|
1153
|
+
const cancelButtons = this.componentEdit.querySelectorAll('[ref="cancelButton"]');
|
1154
|
+
cancelButtons.forEach((cancelButton) => {
|
1155
|
+
this.editForm.addEventListener(cancelButton, 'click', (event) => {
|
1156
|
+
event.preventDefault();
|
1157
|
+
this.editForm.detach();
|
1158
|
+
this.emit('cancelComponent', component);
|
1159
|
+
this.dialog.close();
|
1160
|
+
this.highlightInvalidComponents();
|
1161
|
+
});
|
1162
|
+
});
|
1163
|
+
const removeButtons = this.componentEdit.querySelectorAll('[ref="removeButton"]');
|
1164
|
+
removeButtons.forEach((removeButton) => {
|
1165
|
+
this.editForm.addEventListener(removeButton, 'click', (event) => {
|
1166
|
+
event.preventDefault();
|
1167
|
+
// Since we are already removing the component, don't trigger another remove.
|
1168
|
+
this.saved = true;
|
1169
|
+
this.editForm.detach();
|
1170
|
+
this.removeComponent(component, parent, original);
|
1171
|
+
this.dialog.close();
|
1172
|
+
this.highlightInvalidComponents();
|
1173
|
+
});
|
1174
|
+
});
|
1175
|
+
const saveButtons = this.componentEdit.querySelectorAll('[ref="saveButton"]');
|
1176
|
+
saveButtons.forEach((saveButton) => {
|
1177
|
+
this.editForm.addEventListener(saveButton, 'click', (event) => {
|
1178
|
+
event.preventDefault();
|
1179
|
+
if (!this.editForm.checkValidity(this.editForm.data, true, this.editForm.data)) {
|
1180
|
+
this.editForm.setPristine(false);
|
1181
|
+
this.editForm.showErrors();
|
1182
|
+
return false;
|
1183
|
+
}
|
1184
|
+
this.saved = true;
|
1185
|
+
this.saveComponent(component, parent, isNew, original);
|
1186
|
+
});
|
1187
|
+
});
|
1188
|
+
const previewButtons = this.componentEdit.querySelectorAll('[ref="previewButton"]');
|
1189
|
+
previewButtons.forEach((previewButton) => {
|
1190
|
+
this.editForm.addEventListener(previewButton, 'click', (event) => {
|
1191
|
+
event.preventDefault();
|
1192
|
+
this.showPreview = !this.showPreview;
|
1193
|
+
this.editForm.detach();
|
1194
|
+
this.setContent(this.componentEdit, this.renderTemplate('builderEditForm', {
|
1195
|
+
componentInfo: ComponentClass.builderInfo,
|
1196
|
+
editForm: this.editForm.render(),
|
1197
|
+
preview: this.preview ? this.preview.render() : false,
|
1198
|
+
showPreview: this.showPreview,
|
1199
|
+
helplinks: this.helplinks,
|
1200
|
+
}));
|
1201
|
+
this.editForm.attach(this.componentEdit.querySelector('[ref="editForm"]'));
|
1202
|
+
this.attachEditComponentControls(component, parent, isNew, original, ComponentClass);
|
1203
|
+
});
|
1204
|
+
});
|
1205
|
+
}
|
1146
1206
|
editComponent(component, parent, isNew, isJsonEdit, original, flags = {}) {
|
1147
1207
|
if (!component.key) {
|
1148
1208
|
return;
|
1149
1209
|
}
|
1150
|
-
|
1210
|
+
this.saved = false;
|
1151
1211
|
const componentCopy = fastCloneDeep(component);
|
1152
1212
|
let ComponentClass = Components.components[componentCopy.type];
|
1153
1213
|
const isCustom = ComponentClass === undefined;
|
@@ -1195,7 +1255,9 @@ export default class WebformBuilder extends Component {
|
|
1195
1255
|
}
|
1196
1256
|
]
|
1197
1257
|
} : ComponentClass.editForm(_.cloneDeep(overrides));
|
1198
|
-
const instanceOptions = {
|
1258
|
+
const instanceOptions = {
|
1259
|
+
inFormBuilder: true,
|
1260
|
+
};
|
1199
1261
|
this.hook('instanceOptionsPreview', instanceOptions);
|
1200
1262
|
const instance = new ComponentClass(componentCopy, instanceOptions);
|
1201
1263
|
const schema = this.hook('builderComponentSchema', component, instance);
|
@@ -1220,12 +1282,14 @@ export default class WebformBuilder extends Component {
|
|
1220
1282
|
]));
|
1221
1283
|
this.hook('previewFormSettitngs', schema, isJsonEdit);
|
1222
1284
|
}
|
1285
|
+
this.showPreview = ComponentClass.builderInfo.showPreview ?? true;
|
1223
1286
|
this.componentEdit = this.ce('div', { 'class': 'component-edit-container' });
|
1224
1287
|
this.setContent(this.componentEdit, this.renderTemplate('builderEditForm', {
|
1225
1288
|
componentInfo: ComponentClass.builderInfo,
|
1226
1289
|
editForm: this.editForm.render(),
|
1227
1290
|
preview: this.preview ? this.preview.render() : false,
|
1228
|
-
|
1291
|
+
showPreview: this.showPreview,
|
1292
|
+
helplinks: this.helplinks
|
1229
1293
|
}));
|
1230
1294
|
this.dialog = this.createModal(this.componentEdit, _.get(this.options, 'dialogAttr', {}));
|
1231
1295
|
// This is the attach step.
|
@@ -1279,48 +1343,14 @@ export default class WebformBuilder extends Component {
|
|
1279
1343
|
this.updateComponent(event.data.componentJson || event.data, event.changed);
|
1280
1344
|
}
|
1281
1345
|
});
|
1282
|
-
|
1283
|
-
cancelButtons.forEach((cancelButton) => {
|
1284
|
-
this.addEventListener(cancelButton, 'click', (event) => {
|
1285
|
-
event.preventDefault();
|
1286
|
-
this.editForm.detach();
|
1287
|
-
this.emit('cancelComponent', component);
|
1288
|
-
this.dialog.close();
|
1289
|
-
this.highlightInvalidComponents();
|
1290
|
-
});
|
1291
|
-
});
|
1292
|
-
const removeButtons = this.componentEdit.querySelectorAll('[ref="removeButton"]');
|
1293
|
-
removeButtons.forEach((removeButton) => {
|
1294
|
-
this.addEventListener(removeButton, 'click', (event) => {
|
1295
|
-
event.preventDefault();
|
1296
|
-
// Since we are already removing the component, don't trigger another remove.
|
1297
|
-
saved = true;
|
1298
|
-
this.editForm.detach();
|
1299
|
-
this.removeComponent(component, parent, original);
|
1300
|
-
this.dialog.close();
|
1301
|
-
this.highlightInvalidComponents();
|
1302
|
-
});
|
1303
|
-
});
|
1304
|
-
const saveButtons = this.componentEdit.querySelectorAll('[ref="saveButton"]');
|
1305
|
-
saveButtons.forEach((saveButton) => {
|
1306
|
-
this.addEventListener(saveButton, 'click', (event) => {
|
1307
|
-
event.preventDefault();
|
1308
|
-
if (!this.editForm.checkValidity(this.editForm.data, true, this.editForm.data)) {
|
1309
|
-
this.editForm.setPristine(false);
|
1310
|
-
this.editForm.showErrors();
|
1311
|
-
return false;
|
1312
|
-
}
|
1313
|
-
saved = true;
|
1314
|
-
this.saveComponent(component, parent, isNew, original);
|
1315
|
-
});
|
1316
|
-
});
|
1346
|
+
this.attachEditComponentControls(component, parent, isNew, original, ComponentClass);
|
1317
1347
|
const dialogClose = () => {
|
1318
1348
|
this.editForm.destroy(true);
|
1319
1349
|
if (this.preview) {
|
1320
1350
|
this.preview.destroy(true);
|
1321
1351
|
this.preview = null;
|
1322
1352
|
}
|
1323
|
-
if (isNew && !saved) {
|
1353
|
+
if (isNew && !this.saved) {
|
1324
1354
|
this.removeComponent(component, parent, original);
|
1325
1355
|
this.highlightInvalidComponents();
|
1326
1356
|
}
|
@@ -1339,15 +1369,21 @@ export default class WebformBuilder extends Component {
|
|
1339
1369
|
data.type).replace(/^[0-9]*/, '');
|
1340
1370
|
}
|
1341
1371
|
moveComponent(component) {
|
1372
|
+
if (this.selectedComponent) {
|
1373
|
+
const prevSelected = this.selectedComponent;
|
1374
|
+
prevSelected.element?.classList.remove('builder-component-selected');
|
1375
|
+
this.removeEventListener(document, 'keydown');
|
1376
|
+
}
|
1342
1377
|
component.element.focus();
|
1343
|
-
component.element.classList.add('builder-selected');
|
1344
|
-
this.
|
1345
|
-
this.
|
1346
|
-
this.addEventListener(component.element, 'keydown', this.moveHandler.bind(this));
|
1378
|
+
component.element.classList.add('builder-component-selected');
|
1379
|
+
this.selectedComponent = component;
|
1380
|
+
this.addEventListener(document, 'keydown', this.moveHandler.bind(this));
|
1347
1381
|
}
|
1348
1382
|
moveHandler = (e) => {
|
1349
|
-
e.
|
1350
|
-
|
1383
|
+
if (e.keyCode === 38 || e.keyCode === 40 || e.keyCode === 13) {
|
1384
|
+
e.stopPropagation();
|
1385
|
+
e.preventDefault();
|
1386
|
+
}
|
1351
1387
|
if (e.keyCode === 38) {
|
1352
1388
|
this.updateComponentPlacement(true);
|
1353
1389
|
}
|
@@ -1355,11 +1391,11 @@ export default class WebformBuilder extends Component {
|
|
1355
1391
|
this.updateComponentPlacement(false);
|
1356
1392
|
}
|
1357
1393
|
if (e.keyCode === 13) {
|
1358
|
-
this.stopMoving(this.
|
1394
|
+
this.stopMoving(this.selectedComponent);
|
1359
1395
|
}
|
1360
1396
|
};
|
1361
1397
|
updateComponentPlacement(direction) {
|
1362
|
-
const component = this.
|
1398
|
+
const component = this.selectedComponent;
|
1363
1399
|
let index, info;
|
1364
1400
|
const step = direction ? -1 : 1;
|
1365
1401
|
if (component) {
|
@@ -1402,7 +1438,9 @@ export default class WebformBuilder extends Component {
|
|
1402
1438
|
}
|
1403
1439
|
stopMoving(comp) {
|
1404
1440
|
const parent = comp.element.parentNode;
|
1441
|
+
this.removeEventListener(document, 'keydown');
|
1405
1442
|
parent.formioComponent.rebuild();
|
1443
|
+
this.selectedComponent = null;
|
1406
1444
|
}
|
1407
1445
|
addNewComponent(element) {
|
1408
1446
|
const source = document.querySelector('.formio-builder-form');
|
package/lib/mjs/Wizard.d.ts
CHANGED
@@ -11,7 +11,7 @@ declare class Wizard extends Webform {
|
|
11
11
|
_seenPages: number[];
|
12
12
|
subWizards: any[];
|
13
13
|
allPages: any[];
|
14
|
-
lastPromise:
|
14
|
+
lastPromise: Promise<void>;
|
15
15
|
enabledIndex: number;
|
16
16
|
editMode: boolean;
|
17
17
|
originalOptions: any;
|
@@ -40,6 +40,7 @@ declare class Wizard extends Webform {
|
|
40
40
|
prepareHeaderSettings(ctx: any, headerType: any): any;
|
41
41
|
redrawNavigation(): void;
|
42
42
|
redrawHeader(): void;
|
43
|
+
attach(element: any): Promise<void>;
|
43
44
|
scrollPageToTop(): void;
|
44
45
|
isBreadcrumbClickable(): any;
|
45
46
|
isAllowPrevious(): any;
|
@@ -60,16 +61,18 @@ declare class Wizard extends Webform {
|
|
60
61
|
establishPages(data?: any): any[];
|
61
62
|
updatePages(): void;
|
62
63
|
addComponents(): void;
|
63
|
-
setPage(num: any):
|
64
|
+
setPage(num: any): Promise<void>;
|
64
65
|
pageFieldLogic(page: any): void;
|
65
66
|
get currentPage(): any;
|
66
67
|
getNextPage(): number | null;
|
67
68
|
getPreviousPage(): number;
|
69
|
+
beforeSubmit(): Promise<any[]>;
|
70
|
+
beforePage(next: any): Promise<any>;
|
68
71
|
emitNextPage(): void;
|
69
|
-
nextPage():
|
72
|
+
nextPage(): Promise<void>;
|
70
73
|
emitPrevPage(): void;
|
71
|
-
prevPage():
|
72
|
-
cancel(noconfirm: any):
|
74
|
+
prevPage(): Promise<void>;
|
75
|
+
cancel(noconfirm: any): Promise<void> | Promise<number>;
|
73
76
|
getPageIndexByKey(key: any): number;
|
74
77
|
get schema(): Object;
|
75
78
|
setComponentSchema(): void;
|
package/lib/mjs/Wizard.js
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
import NativePromise from 'native-promise-only';
|
2
1
|
import _ from 'lodash';
|
3
2
|
import Webform from './Webform';
|
4
3
|
import { Formio } from './Formio';
|
@@ -35,7 +34,7 @@ export default class Wizard extends Webform {
|
|
35
34
|
this._seenPages = [0];
|
36
35
|
this.subWizards = [];
|
37
36
|
this.allPages = [];
|
38
|
-
this.lastPromise =
|
37
|
+
this.lastPromise = Promise.resolve();
|
39
38
|
this.enabledIndex = 0;
|
40
39
|
this.editMode = false;
|
41
40
|
this.originalOptions = _.cloneDeep(this.options);
|
@@ -550,7 +549,7 @@ export default class Wizard extends Webform {
|
|
550
549
|
}
|
551
550
|
setPage(num) {
|
552
551
|
if (num === this.page) {
|
553
|
-
return
|
552
|
+
return Promise.resolve();
|
554
553
|
}
|
555
554
|
if (num >= 0 && num < this.pages.length) {
|
556
555
|
this.page = num;
|
@@ -572,13 +571,13 @@ export default class Wizard extends Webform {
|
|
572
571
|
this.redraw().then(() => {
|
573
572
|
this.checkData(this.submission.data);
|
574
573
|
});
|
575
|
-
return
|
574
|
+
return Promise.resolve();
|
576
575
|
}
|
577
576
|
else if (!this.pages.length) {
|
578
577
|
this.redraw();
|
579
|
-
return
|
578
|
+
return Promise.resolve();
|
580
579
|
}
|
581
|
-
return
|
580
|
+
return Promise.reject('Page not found');
|
582
581
|
}
|
583
582
|
pageFieldLogic(page) {
|
584
583
|
if (this.pages?.[page]) {
|
@@ -631,13 +630,13 @@ export default class Wizard extends Webform {
|
|
631
630
|
}
|
632
631
|
beforeSubmit() {
|
633
632
|
const pages = this.getPages();
|
634
|
-
return
|
633
|
+
return Promise.all(pages.map((page) => {
|
635
634
|
page.options.beforeSubmit = true;
|
636
635
|
return page.beforeSubmit();
|
637
636
|
}));
|
638
637
|
}
|
639
638
|
beforePage(next) {
|
640
|
-
return new
|
639
|
+
return new Promise((resolve, reject) => {
|
641
640
|
this.hook(next ? 'beforeNext' : 'beforePrev', this.currentPage, this.submission, (err) => {
|
642
641
|
if (err) {
|
643
642
|
this.showErrors(err, true);
|
@@ -681,7 +680,7 @@ export default class Wizard extends Webform {
|
|
681
680
|
else {
|
682
681
|
this.currentPage.components.forEach((comp) => comp.setPristine(false));
|
683
682
|
this.scrollIntoView(this.element);
|
684
|
-
return
|
683
|
+
return Promise.reject(this.showErrors([], true));
|
685
684
|
}
|
686
685
|
}
|
687
686
|
emitPrevPage() {
|
@@ -696,7 +695,7 @@ export default class Wizard extends Webform {
|
|
696
695
|
}
|
697
696
|
cancel(noconfirm) {
|
698
697
|
if (this.options.readOnly) {
|
699
|
-
return
|
698
|
+
return Promise.resolve();
|
700
699
|
}
|
701
700
|
if (super.cancel(noconfirm)) {
|
702
701
|
this.setPristine(true);
|
@@ -709,7 +708,7 @@ export default class Wizard extends Webform {
|
|
709
708
|
return this.page;
|
710
709
|
});
|
711
710
|
}
|
712
|
-
return
|
711
|
+
return Promise.resolve();
|
713
712
|
}
|
714
713
|
getPageIndexByKey(key) {
|
715
714
|
let pageIndex = this.page;
|
@@ -772,7 +771,8 @@ export default class Wizard extends Webform {
|
|
772
771
|
setValue(submission, flags = {}, ignoreEstablishment) {
|
773
772
|
this._submission = submission;
|
774
773
|
if ((flags && flags.fromSubmission && (this.options.readOnly || this.editMode) && !this.isHtmlRenderMode()) ||
|
775
|
-
(flags && flags.fromSubmission && (this.prefixComps.length || this.suffixComps.length) && submission._id)
|
774
|
+
(flags && flags.fromSubmission && (this.prefixComps.length || this.suffixComps.length) && submission._id) ||
|
775
|
+
(this.options.server && (this.prefixComps.length || this.suffixComps.length))) {
|
776
776
|
this._data = submission.data;
|
777
777
|
}
|
778
778
|
if (!ignoreEstablishment) {
|
@@ -30,10 +30,12 @@ export default class WizardBuilder extends WebformBuilder {
|
|
30
30
|
components: any[];
|
31
31
|
}[];
|
32
32
|
};
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
navigationDragula: any;
|
34
|
+
rebuild(): Promise<void> | Promise<boolean>;
|
35
|
+
addPage(page: any): Promise<void> | Promise<boolean>;
|
36
|
+
removePage(pageIndex: any, componentIndex: any): Promise<void> | Promise<boolean> | undefined;
|
37
|
+
onReorder(element: any, _target: any, _source: any, sibling: any): Promise<void> | undefined;
|
38
|
+
setPage(index: any): Promise<void> | Promise<boolean> | undefined;
|
37
39
|
getPageConfig(index: any, components?: any[]): {
|
38
40
|
title: string;
|
39
41
|
label: string;
|
package/lib/mjs/WizardBuilder.js
CHANGED
@@ -101,6 +101,11 @@ export default class WizardBuilder extends WebformBuilder {
|
|
101
101
|
const components = this._form.components.filter((component) => component.type !== 'button');
|
102
102
|
this._form.components = [this.getPageConfig(1, components)];
|
103
103
|
}
|
104
|
+
else {
|
105
|
+
const components = this._form.components
|
106
|
+
.filter((component) => component.type !== 'button' || component.action !== 'submit');
|
107
|
+
this._form.components = components;
|
108
|
+
}
|
104
109
|
this.rebuild();
|
105
110
|
}
|
106
111
|
get form() {
|
@@ -143,7 +148,10 @@ export default class WizardBuilder extends WebformBuilder {
|
|
143
148
|
page.parentNode.dragInfo = { index };
|
144
149
|
});
|
145
150
|
if (this.dragulaLib) {
|
146
|
-
this.dragulaLib([this.element.querySelector('.wizard-pages')]
|
151
|
+
this.navigationDragula = this.dragulaLib([this.element.querySelector('.wizard-pages')], {
|
152
|
+
moves: (el) => (!el.classList.contains('wizard-add-page')),
|
153
|
+
accepts: (el, target, source, sibling) => (sibling ? true : false),
|
154
|
+
})
|
147
155
|
.on('drop', this.onReorder.bind(this));
|
148
156
|
}
|
149
157
|
this.refs.addPage.forEach(link => {
|
@@ -160,6 +168,13 @@ export default class WizardBuilder extends WebformBuilder {
|
|
160
168
|
});
|
161
169
|
return super.attach(element);
|
162
170
|
}
|
171
|
+
detach() {
|
172
|
+
if (this.navigationDragula) {
|
173
|
+
this.navigationDragula.destroy();
|
174
|
+
}
|
175
|
+
this.navigationDragula = null;
|
176
|
+
super.detach();
|
177
|
+
}
|
163
178
|
rebuild() {
|
164
179
|
const page = this.currentPage;
|
165
180
|
this.webform.setForm({
|
@@ -196,13 +211,15 @@ export default class WizardBuilder extends WebformBuilder {
|
|
196
211
|
}
|
197
212
|
}
|
198
213
|
onReorder(element, _target, _source, sibling) {
|
199
|
-
|
214
|
+
const isSiblingAnAddPageButton = sibling?.classList.contains('wizard-add-page');
|
215
|
+
// We still can paste before Add Page button
|
216
|
+
if (!element.dragInfo || (sibling && !sibling.dragInfo && !isSiblingAnAddPageButton)) {
|
200
217
|
console.warn('There is no Drag Info available for either dragged or sibling element');
|
201
218
|
return;
|
202
219
|
}
|
203
220
|
const oldPosition = element.dragInfo.index;
|
204
221
|
//should drop at next sibling position; no next sibling means drop to last position
|
205
|
-
const newPosition = (sibling ? sibling.dragInfo.index : this.pages.length);
|
222
|
+
const newPosition = (sibling && sibling.dragInfo ? sibling.dragInfo.index : this.pages.length);
|
206
223
|
const movedBelow = newPosition > oldPosition;
|
207
224
|
const formComponents = fastCloneDeep(this._form.components);
|
208
225
|
const draggedRowData = this._form.components[oldPosition];
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import Element from '../Element';
|
2
|
-
import NativePromise from 'native-promise-only';
|
3
2
|
import _ from 'lodash';
|
4
3
|
export default class FormioAddon extends Element {
|
5
4
|
static get info() {
|
@@ -25,7 +24,7 @@ export default class FormioAddon extends Element {
|
|
25
24
|
}
|
26
25
|
attach(element) {
|
27
26
|
this._element = element;
|
28
|
-
return
|
27
|
+
return Promise.resolve();
|
29
28
|
}
|
30
29
|
destroy() { }
|
31
30
|
}
|
@@ -4,6 +4,21 @@
|
|
4
4
|
*/
|
5
5
|
declare class Component extends Element {
|
6
6
|
static schema(...sources: any[]): any;
|
7
|
+
/**
|
8
|
+
* Return the simple condition settings as part of the component.
|
9
|
+
*
|
10
|
+
* @return {Object}
|
11
|
+
*
|
12
|
+
*/
|
13
|
+
static get conditionOperatorsSettings(): Object;
|
14
|
+
/**
|
15
|
+
* Return the array of possible types of component value absed on its schema.
|
16
|
+
*
|
17
|
+
* @param schema
|
18
|
+
* @return {Array}
|
19
|
+
*
|
20
|
+
*/
|
21
|
+
static savedValueTypes(schema: any): any[];
|
7
22
|
/**
|
8
23
|
* Provides a table view for this component. Override if you wish to do something different than using getView
|
9
24
|
* method of your instance.
|
@@ -12,6 +27,7 @@ declare class Component extends Element {
|
|
12
27
|
* @param options
|
13
28
|
*/
|
14
29
|
static tableView(value: any, options: any): void;
|
30
|
+
static get serverConditionSettings(): Object;
|
15
31
|
/**
|
16
32
|
* Initialize a new Component.
|
17
33
|
*
|
@@ -151,7 +167,7 @@ declare class Component extends Element {
|
|
151
167
|
set data(arg: any);
|
152
168
|
get data(): any;
|
153
169
|
mergeSchema(component?: {}): any;
|
154
|
-
get ready():
|
170
|
+
get ready(): Promise<Component>;
|
155
171
|
get isPDFReadOnlyMode(): any;
|
156
172
|
get labelInfo(): {
|
157
173
|
hidden: any;
|
@@ -293,12 +309,12 @@ declare class Component extends Element {
|
|
293
309
|
loadRefs(element: any, refs: any): void;
|
294
310
|
setOpenModalElement(template: any): void;
|
295
311
|
getModalPreviewTemplate(): any;
|
296
|
-
build(element: any):
|
312
|
+
build(element: any): Promise<void>;
|
297
313
|
get hasModalSaveButton(): boolean;
|
298
314
|
render(children?: string, topLevel?: boolean): any;
|
299
315
|
attachTooltips(toolTipsRefs: any): void;
|
300
316
|
createComponentModal(element: any, modalShouldBeOpened: any, currentValue: any): ComponentModal;
|
301
|
-
attach(element: any):
|
317
|
+
attach(element: any): Promise<void>;
|
302
318
|
componentModal: any;
|
303
319
|
restoreFocus(): void;
|
304
320
|
addShortcut(element: any, shortcut: any): void;
|
@@ -402,8 +418,8 @@ declare class Component extends Element {
|
|
402
418
|
errorMessage(type: any): any;
|
403
419
|
setContent(element: any, content: any, forceSanitize: any, sanitizeOptions: any): boolean;
|
404
420
|
restoreCaretPosition(): void;
|
405
|
-
redraw():
|
406
|
-
rebuild():
|
421
|
+
redraw(): Promise<void>;
|
422
|
+
rebuild(): Promise<void>;
|
407
423
|
hasClass(element: any, className: any): boolean | undefined;
|
408
424
|
addClass(element: any, className: any): Component | undefined;
|
409
425
|
removeClass(element: any, className: any): Component | undefined;
|
@@ -694,7 +710,7 @@ declare class Component extends Element {
|
|
694
710
|
*/
|
695
711
|
checkComponentValidity(data: any, dirty: any, row: any, options?: {}): boolean;
|
696
712
|
checkValidity(data: any, dirty: any, row: any, silentCheck: any): boolean;
|
697
|
-
checkAsyncValidity(data: any, dirty: any, row: any, silentCheck: any):
|
713
|
+
checkAsyncValidity(data: any, dirty: any, row: any, silentCheck: any): Promise<boolean>;
|
698
714
|
/**
|
699
715
|
* Check the conditions, calculations, and validity of a single component and triggers an update if
|
700
716
|
* something changed.
|
@@ -728,8 +744,8 @@ declare class Component extends Element {
|
|
728
744
|
*/
|
729
745
|
isValueHidden(): boolean | any;
|
730
746
|
shouldSkipValidation(data: any, dirty: any, row: any): boolean;
|
731
|
-
whenReady():
|
732
|
-
get dataReady():
|
747
|
+
whenReady(): Promise<void>;
|
748
|
+
get dataReady(): Promise<void>;
|
733
749
|
/**
|
734
750
|
* Prints out the value of this component as a string value.
|
735
751
|
*/
|