@formio/js 5.2.3 → 5.2.4-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/formio.builder.css +161 -50
- package/dist/formio.builder.min.css +1 -1
- package/dist/formio.embed.js +1 -1
- package/dist/formio.embed.min.js +1 -1
- package/dist/formio.embed.min.js.LICENSE.txt +1 -1
- package/dist/formio.form.css +158 -49
- package/dist/formio.form.js +152 -108
- package/dist/formio.form.min.css +1 -1
- package/dist/formio.form.min.js +1 -1
- package/dist/formio.form.min.js.LICENSE.txt +1 -1
- package/dist/formio.full.css +161 -50
- package/dist/formio.full.js +401 -227
- package/dist/formio.full.min.css +1 -1
- package/dist/formio.full.min.js +1 -1
- package/dist/formio.full.min.js.LICENSE.txt +1 -1
- package/dist/formio.js +51 -18
- package/dist/formio.min.js +1 -1
- package/dist/formio.min.js.LICENSE.txt +1 -1
- package/dist/formio.utils.js +47 -14
- package/dist/formio.utils.min.js +1 -1
- package/dist/formio.utils.min.js.LICENSE.txt +1 -1
- package/lib/cjs/CDN.js +12 -12
- package/lib/cjs/Element.d.ts +3 -2
- package/lib/cjs/Element.js +27 -21
- package/lib/cjs/Embed.js +74 -40
- package/lib/cjs/EventEmitter.js +1 -1
- package/lib/cjs/Form.d.ts +371 -341
- package/lib/cjs/Form.js +153 -39
- package/lib/cjs/FormBuilder.d.ts +3 -3
- package/lib/cjs/FormBuilder.js +2 -3
- package/lib/cjs/Formio.js +26 -23
- package/lib/cjs/InlineEmbed.js +23 -17
- package/lib/cjs/PDF.d.ts +1 -0
- package/lib/cjs/PDF.js +18 -15
- package/lib/cjs/PDFBuilder.js +51 -36
- package/lib/cjs/Webform.d.ts +8 -366
- package/lib/cjs/Webform.js +176 -235
- package/lib/cjs/WebformBuilder.js +217 -144
- package/lib/cjs/Wizard.js +92 -62
- package/lib/cjs/WizardBuilder.js +27 -19
- package/lib/cjs/addons/FormioAddon.js +1 -1
- package/lib/cjs/addons/PasswordStrength/PasswordStrengthAddon.form.js +59 -57
- package/lib/cjs/addons/PasswordStrength/PasswordStrengthAddon.js +24 -16
- package/lib/cjs/addons/index.js +3 -3
- package/lib/cjs/components/Components.js +0 -4
- package/lib/cjs/components/_classes/component/Component.form.js +11 -11
- package/lib/cjs/components/_classes/component/Component.js +298 -179
- package/lib/cjs/components/_classes/component/editForm/Component.edit.addons.js +2 -4
- package/lib/cjs/components/_classes/component/editForm/Component.edit.api.js +5 -5
- package/lib/cjs/components/_classes/component/editForm/Component.edit.conditional.js +9 -11
- package/lib/cjs/components/_classes/component/editForm/Component.edit.data.d.ts +37 -0
- package/lib/cjs/components/_classes/component/editForm/Component.edit.data.js +39 -25
- package/lib/cjs/components/_classes/component/editForm/Component.edit.display.js +47 -29
- package/lib/cjs/components/_classes/component/editForm/Component.edit.layout.js +9 -9
- package/lib/cjs/components/_classes/component/editForm/Component.edit.logic.js +5 -7
- package/lib/cjs/components/_classes/component/editForm/Component.edit.validation.js +37 -34
- package/lib/cjs/components/_classes/component/editForm/utils.js +12 -16
- package/lib/cjs/components/_classes/componentModal/ComponentModal.js +6 -6
- package/lib/cjs/components/_classes/field/Field.js +7 -1
- package/lib/cjs/components/_classes/input/Input.js +30 -26
- package/lib/cjs/components/_classes/list/ListComponent.form.js +1 -1
- package/lib/cjs/components/_classes/list/ListComponent.js +27 -18
- package/lib/cjs/components/_classes/list/editForm/ListComponent.edit.data.js +36 -9
- package/lib/cjs/components/_classes/multivalue/Multivalue.js +32 -13
- package/lib/cjs/components/_classes/nested/NestedComponent.form.js +3 -3
- package/lib/cjs/components/_classes/nested/NestedComponent.js +36 -32
- package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +19 -14
- package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.js +19 -17
- package/lib/cjs/components/address/Address.js +52 -45
- package/lib/cjs/components/address/editForm/Address.edit.data.js +2 -2
- package/lib/cjs/components/address/editForm/Address.edit.display.js +2 -2
- package/lib/cjs/components/address/editForm/Address.edit.provider.js +53 -11
- package/lib/cjs/components/alert/Alert.js +21 -15
- package/lib/cjs/components/button/Button.form.js +1 -1
- package/lib/cjs/components/button/Button.js +50 -27
- package/lib/cjs/components/button/editForm/Button.edit.display.js +49 -9
- package/lib/cjs/components/checkbox/Checkbox.d.ts +1 -1
- package/lib/cjs/components/checkbox/Checkbox.form.js +3 -3
- package/lib/cjs/components/checkbox/Checkbox.js +28 -20
- package/lib/cjs/components/checkbox/editForm/Checkbox.edit.data.js +1 -1
- package/lib/cjs/components/checkbox/editForm/Checkbox.edit.display.js +13 -3
- package/lib/cjs/components/checkbox/editForm/Checkbox.edit.validation.js +2 -2
- package/lib/cjs/components/columns/Columns.form.js +1 -1
- package/lib/cjs/components/columns/Columns.js +24 -12
- package/lib/cjs/components/columns/editForm/Columns.edit.display.js +17 -17
- package/lib/cjs/components/container/Container.form.js +2 -2
- package/lib/cjs/components/container/Container.js +6 -4
- package/lib/cjs/components/container/editForm/Container.edit.data.js +3 -3
- package/lib/cjs/components/container/editForm/Container.edit.display.js +4 -4
- package/lib/cjs/components/content/Content.form.js +4 -2
- package/lib/cjs/components/content/Content.js +10 -8
- package/lib/cjs/components/content/editForm/Content.edit.display.js +10 -10
- package/lib/cjs/components/currency/Currency.form.js +3 -3
- package/lib/cjs/components/currency/Currency.js +19 -10
- package/lib/cjs/components/currency/editForm/Currency.edit.data.js +5 -5
- package/lib/cjs/components/currency/editForm/Currency.edit.display.js +8 -8
- package/lib/cjs/components/datagrid/DataGrid.form.js +3 -3
- package/lib/cjs/components/datagrid/DataGrid.js +89 -38
- package/lib/cjs/components/datagrid/editForm/DataGrid.edit.data.js +1 -1
- package/lib/cjs/components/datagrid/editForm/DataGrid.edit.display.js +14 -14
- package/lib/cjs/components/datagrid/editForm/DataGrid.edit.validation.js +3 -3
- package/lib/cjs/components/datamap/DataMap.form.js +2 -2
- package/lib/cjs/components/datamap/DataMap.js +44 -31
- package/lib/cjs/components/datamap/editForm/DataMap.edit.data.js +1 -1
- package/lib/cjs/components/datamap/editForm/DataMap.edit.display.js +8 -8
- package/lib/cjs/components/datetime/DateTime.form.js +5 -5
- package/lib/cjs/components/datetime/DateTime.js +30 -15
- package/lib/cjs/components/datetime/editForm/DateTime.edit.data.js +4 -3
- package/lib/cjs/components/datetime/editForm/DateTime.edit.date.js +10 -10
- package/lib/cjs/components/datetime/editForm/DateTime.edit.display.js +22 -17
- package/lib/cjs/components/datetime/editForm/DateTime.edit.time.js +5 -5
- package/lib/cjs/components/datetime/editForm/DateTime.edit.validation.js +3 -3
- package/lib/cjs/components/day/Day.form.js +5 -5
- package/lib/cjs/components/day/Day.js +146 -56
- package/lib/cjs/components/day/editForm/Day.edit.day.js +13 -9
- package/lib/cjs/components/day/editForm/Day.edit.display.js +7 -7
- package/lib/cjs/components/day/editForm/Day.edit.month.js +12 -8
- package/lib/cjs/components/day/editForm/Day.edit.validation.js +7 -7
- package/lib/cjs/components/day/editForm/Day.edit.year.js +8 -8
- package/lib/cjs/components/editgrid/EditGrid.form.js +2 -2
- package/lib/cjs/components/editgrid/EditGrid.js +137 -89
- package/lib/cjs/components/editgrid/editForm/EditGrid.edit.data.js +2 -2
- package/lib/cjs/components/editgrid/editForm/EditGrid.edit.display.js +7 -2
- package/lib/cjs/components/editgrid/editForm/EditGrid.edit.templates.js +16 -16
- package/lib/cjs/components/editgrid/editForm/EditGrid.edit.validation.js +3 -3
- package/lib/cjs/components/email/Email.js +4 -4
- package/lib/cjs/components/email/editForm/Email.edit.display.js +3 -3
- package/lib/cjs/components/email/editForm/Email.edit.validation.js +6 -6
- package/lib/cjs/components/fieldset/Fieldset.form.js +1 -1
- package/lib/cjs/components/fieldset/Fieldset.js +2 -2
- package/lib/cjs/components/fieldset/editForm/Fieldset.edit.display.js +8 -8
- package/lib/cjs/components/file/File.form.js +4 -4
- package/lib/cjs/components/file/File.js +126 -80
- package/lib/cjs/components/file/editForm/File.edit.display.js +9 -5
- package/lib/cjs/components/file/editForm/File.edit.file.d.ts +37 -16
- package/lib/cjs/components/file/editForm/File.edit.file.js +169 -72
- package/lib/cjs/components/file/editForm/File.edit.validation.js +2 -2
- package/lib/cjs/components/form/Form.form.js +3 -3
- package/lib/cjs/components/form/Form.js +67 -51
- package/lib/cjs/components/form/editForm/Form.edit.data.js +1 -3
- package/lib/cjs/components/form/editForm/Form.edit.display.js +6 -7
- package/lib/cjs/components/form/editForm/Form.edit.form.js +11 -9
- package/lib/cjs/components/hidden/Hidden.form.js +4 -4
- package/lib/cjs/components/hidden/Hidden.js +2 -2
- package/lib/cjs/components/hidden/editForm/Hidden.edit.data.js +3 -3
- package/lib/cjs/components/hidden/editForm/Hidden.edit.display.js +10 -10
- package/lib/cjs/components/html/HTML.js +23 -17
- package/lib/cjs/components/html/editForm/HTML.edit.display.js +17 -17
- package/lib/cjs/components/html/editForm/HTML.edit.logic.js +2 -2
- package/lib/cjs/components/number/Number.form.js +3 -3
- package/lib/cjs/components/number/Number.js +27 -11
- package/lib/cjs/components/number/editForm/Number.edit.data.js +3 -3
- package/lib/cjs/components/number/editForm/Number.edit.display.js +4 -4
- package/lib/cjs/components/number/editForm/Number.edit.validation.js +9 -9
- package/lib/cjs/components/panel/Panel.form.js +1 -1
- package/lib/cjs/components/panel/Panel.js +2 -2
- package/lib/cjs/components/panel/editForm/Panel.edit.conditional.js +5 -7
- package/lib/cjs/components/panel/editForm/Panel.edit.display.js +55 -29
- package/lib/cjs/components/password/Password.form.js +3 -3
- package/lib/cjs/components/password/Password.js +5 -2
- package/lib/cjs/components/password/editForm/Password.edit.data.js +11 -11
- package/lib/cjs/components/password/editForm/Password.edit.display.js +3 -3
- package/lib/cjs/components/password/editForm/Password.edit.validation.js +3 -3
- package/lib/cjs/components/phonenumber/PhoneNumber.form.js +8 -8
- package/lib/cjs/components/phonenumber/PhoneNumber.js +3 -3
- package/lib/cjs/components/phonenumber/editForm/PhoneNumber.edit.validation.js +6 -6
- package/lib/cjs/components/radio/Radio.form.js +3 -3
- package/lib/cjs/components/radio/Radio.js +55 -26
- package/lib/cjs/components/radio/editForm/Radio.edit.data.js +23 -9
- package/lib/cjs/components/radio/editForm/Radio.edit.display.js +6 -6
- package/lib/cjs/components/radio/editForm/Radio.edit.validation.js +2 -2
- package/lib/cjs/components/recaptcha/ReCaptcha.form.js +5 -5
- package/lib/cjs/components/recaptcha/ReCaptcha.js +7 -5
- package/lib/cjs/components/recaptcha/editForm/ReCaptcha.edit.display.js +24 -24
- package/lib/cjs/components/select/Select.form.js +3 -3
- package/lib/cjs/components/select/Select.js +235 -129
- package/lib/cjs/components/select/editForm/Select.edit.data.d.ts +1 -1
- package/lib/cjs/components/select/editForm/Select.edit.data.js +191 -57
- package/lib/cjs/components/select/editForm/Select.edit.display.js +2 -2
- package/lib/cjs/components/select/editForm/Select.edit.validation.js +4 -4
- package/lib/cjs/components/selectboxes/SelectBoxes.form.js +3 -3
- package/lib/cjs/components/selectboxes/SelectBoxes.js +31 -15
- package/lib/cjs/components/selectboxes/editForm/SelectBoxes.edit.validation.js +5 -5
- package/lib/cjs/components/signature/Signature.form.js +3 -3
- package/lib/cjs/components/signature/Signature.js +25 -15
- package/lib/cjs/components/signature/editForm/Signature.edit.display.js +19 -10
- package/lib/cjs/components/survey/Survey.form.js +3 -3
- package/lib/cjs/components/survey/Survey.js +30 -17
- package/lib/cjs/components/survey/editForm/Survey.edit.data.js +23 -11
- package/lib/cjs/components/survey/editForm/Survey.edit.display.js +1 -1
- package/lib/cjs/components/survey/editForm/Survey.edit.validation.js +1 -1
- package/lib/cjs/components/table/Table.form.js +1 -1
- package/lib/cjs/components/table/Table.js +7 -5
- package/lib/cjs/components/table/editForm/Table.edit.display.js +22 -22
- package/lib/cjs/components/tabs/Tabs.form.js +1 -1
- package/lib/cjs/components/tabs/Tabs.js +26 -8
- package/lib/cjs/components/tabs/editForm/Tabs.edit.display.js +21 -17
- package/lib/cjs/components/tags/Tags.form.js +1 -1
- package/lib/cjs/components/tags/Tags.js +28 -12
- package/lib/cjs/components/tags/editForm/Tags.edit.data.js +7 -7
- package/lib/cjs/components/textarea/TextArea.form.js +2 -2
- package/lib/cjs/components/textarea/TextArea.js +63 -45
- package/lib/cjs/components/textarea/editForm/TextArea.edit.display.js +96 -72
- package/lib/cjs/components/textarea/editForm/TextArea.edit.validation.js +3 -3
- package/lib/cjs/components/textfield/TextField.form.js +3 -3
- package/lib/cjs/components/textfield/TextField.js +32 -21
- package/lib/cjs/components/textfield/editForm/TextField.edit.data.js +15 -13
- package/lib/cjs/components/textfield/editForm/TextField.edit.display.js +31 -21
- package/lib/cjs/components/textfield/editForm/TextField.edit.validation.js +6 -6
- package/lib/cjs/components/time/Time.js +17 -10
- package/lib/cjs/components/time/editForm/Time.edit.display.js +2 -2
- package/lib/cjs/components/unknown/Unknown.form.js +5 -5
- package/lib/cjs/components/unknown/Unknown.js +2 -2
- package/lib/cjs/components/unknown/editForm/Unknown.edit.display.js +3 -3
- package/lib/cjs/components/url/Url.form.js +3 -3
- package/lib/cjs/components/url/Url.js +2 -2
- package/lib/cjs/components/url/editForm/Url.edit.display.js +3 -3
- package/lib/cjs/components/url/editForm/Url.edit.validation.js +1 -1
- package/lib/cjs/components/well/Well.form.js +1 -1
- package/lib/cjs/components/well/Well.js +2 -2
- package/lib/cjs/components/well/editForm/Well.edit.display.js +10 -10
- package/lib/cjs/formio.form.d.ts +2 -1
- package/lib/cjs/formio.form.js +38 -12
- package/lib/cjs/i18n.d.ts +4 -0
- package/lib/cjs/i18n.js +7 -3
- package/lib/cjs/package.json +1 -1
- package/lib/cjs/providers/address/AddressProvider.js +8 -5
- package/lib/cjs/providers/address/GoogleAddressProvider.d.ts +3 -3
- package/lib/cjs/providers/address/GoogleAddressProvider.js +24 -13
- package/lib/cjs/providers/processor/fileProcessor.js +3 -1
- package/lib/cjs/providers/storage/azure.js +5 -2
- package/lib/cjs/providers/storage/dropbox.js +4 -5
- package/lib/cjs/providers/storage/googleDrive.js +3 -4
- package/lib/cjs/providers/storage/index.js +1 -1
- package/lib/cjs/providers/storage/indexeddb.js +16 -6
- package/lib/cjs/providers/storage/s3.js +17 -6
- package/lib/cjs/providers/storage/uploadAdapter.js +17 -11
- package/lib/cjs/providers/storage/url.js +13 -11
- package/lib/cjs/providers/storage/xhr.js +17 -9
- package/lib/cjs/templates/index.js +1 -1
- package/lib/cjs/translations/de.d.ts +80 -0
- package/lib/cjs/translations/de.js +81 -0
- package/lib/cjs/translations/en.d.ts +0 -2
- package/lib/cjs/translations/en.js +7 -9
- package/lib/cjs/utils/ChoicesWrapper.js +2 -2
- package/lib/cjs/utils/builder.js +31 -7
- package/lib/cjs/utils/calendarUtils.js +7 -5
- package/lib/cjs/utils/conditionOperators/ConditionOperator.js +1 -1
- package/lib/cjs/utils/conditionOperators/DateGreaterThan.js +12 -4
- package/lib/cjs/utils/conditionOperators/IsEmptyValue.js +3 -1
- package/lib/cjs/utils/conditionOperators/IsEqualTo.js +10 -6
- package/lib/cjs/utils/conditionOperators/index.js +1 -1
- package/lib/cjs/utils/formUtils.js +1 -1
- package/lib/cjs/utils/i18n.js +7 -1
- package/lib/cjs/utils/index.d.ts +2 -1
- package/lib/cjs/utils/index.js +2 -2
- package/lib/cjs/utils/utils.d.ts +10 -1
- package/lib/cjs/utils/utils.js +175 -92
- package/lib/cjs/widgets/CalendarWidget.js +66 -49
- package/lib/cjs/widgets/InputWidget.js +6 -4
- package/lib/cjs/widgets/index.js +1 -1
- package/lib/mjs/CDN.js +12 -12
- package/lib/mjs/Element.d.ts +3 -2
- package/lib/mjs/Element.js +27 -21
- package/lib/mjs/Embed.js +76 -42
- package/lib/mjs/EventEmitter.js +1 -1
- package/lib/mjs/Form.d.ts +371 -341
- package/lib/mjs/Form.js +142 -126
- package/lib/mjs/FormBuilder.d.ts +3 -3
- package/lib/mjs/FormBuilder.js +2 -3
- package/lib/mjs/Formio.js +26 -23
- package/lib/mjs/InlineEmbed.js +23 -17
- package/lib/mjs/PDF.d.ts +1 -0
- package/lib/mjs/PDF.js +18 -15
- package/lib/mjs/PDFBuilder.js +51 -36
- package/lib/mjs/Webform.d.ts +8 -366
- package/lib/mjs/Webform.js +183 -250
- package/lib/mjs/WebformBuilder.js +220 -147
- package/lib/mjs/Wizard.js +93 -63
- package/lib/mjs/WizardBuilder.js +27 -19
- package/lib/mjs/addons/FormioAddon.js +1 -1
- package/lib/mjs/addons/PasswordStrength/PasswordStrengthAddon.form.js +59 -57
- package/lib/mjs/addons/PasswordStrength/PasswordStrengthAddon.js +24 -16
- package/lib/mjs/addons/index.js +3 -3
- package/lib/mjs/components/Components.js +0 -4
- package/lib/mjs/components/_classes/component/Component.form.js +11 -11
- package/lib/mjs/components/_classes/component/Component.js +303 -184
- package/lib/mjs/components/_classes/component/editForm/Component.edit.addons.js +2 -4
- package/lib/mjs/components/_classes/component/editForm/Component.edit.api.js +5 -5
- package/lib/mjs/components/_classes/component/editForm/Component.edit.conditional.js +9 -11
- package/lib/mjs/components/_classes/component/editForm/Component.edit.data.d.ts +37 -0
- package/lib/mjs/components/_classes/component/editForm/Component.edit.data.js +39 -25
- package/lib/mjs/components/_classes/component/editForm/Component.edit.display.js +47 -29
- package/lib/mjs/components/_classes/component/editForm/Component.edit.layout.js +9 -9
- package/lib/mjs/components/_classes/component/editForm/Component.edit.logic.js +5 -7
- package/lib/mjs/components/_classes/component/editForm/Component.edit.validation.js +37 -34
- package/lib/mjs/components/_classes/component/editForm/utils.js +12 -16
- package/lib/mjs/components/_classes/componentModal/ComponentModal.js +2 -2
- package/lib/mjs/components/_classes/field/Field.js +8 -2
- package/lib/mjs/components/_classes/input/Input.js +27 -23
- package/lib/mjs/components/_classes/list/ListComponent.form.js +1 -1
- package/lib/mjs/components/_classes/list/ListComponent.js +27 -18
- package/lib/mjs/components/_classes/list/editForm/ListComponent.edit.data.js +36 -9
- package/lib/mjs/components/_classes/multivalue/Multivalue.js +32 -13
- package/lib/mjs/components/_classes/nested/NestedComponent.form.js +3 -3
- package/lib/mjs/components/_classes/nested/NestedComponent.js +32 -28
- package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +20 -15
- package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.js +19 -17
- package/lib/mjs/components/address/Address.js +57 -46
- package/lib/mjs/components/address/editForm/Address.edit.data.js +2 -2
- package/lib/mjs/components/address/editForm/Address.edit.display.js +2 -2
- package/lib/mjs/components/address/editForm/Address.edit.provider.js +53 -11
- package/lib/mjs/components/alert/Alert.js +22 -16
- package/lib/mjs/components/button/Button.form.js +1 -1
- package/lib/mjs/components/button/Button.js +51 -28
- package/lib/mjs/components/button/editForm/Button.edit.display.js +49 -9
- package/lib/mjs/components/checkbox/Checkbox.d.ts +1 -1
- package/lib/mjs/components/checkbox/Checkbox.form.js +3 -3
- package/lib/mjs/components/checkbox/Checkbox.js +29 -21
- package/lib/mjs/components/checkbox/editForm/Checkbox.edit.data.js +1 -1
- package/lib/mjs/components/checkbox/editForm/Checkbox.edit.display.js +13 -3
- package/lib/mjs/components/checkbox/editForm/Checkbox.edit.validation.js +2 -2
- package/lib/mjs/components/columns/Columns.form.js +1 -1
- package/lib/mjs/components/columns/Columns.js +24 -12
- package/lib/mjs/components/columns/editForm/Columns.edit.display.js +17 -17
- package/lib/mjs/components/container/Container.form.js +2 -2
- package/lib/mjs/components/container/Container.js +6 -4
- package/lib/mjs/components/container/editForm/Container.edit.data.js +3 -3
- package/lib/mjs/components/container/editForm/Container.edit.display.js +4 -4
- package/lib/mjs/components/content/Content.form.js +4 -2
- package/lib/mjs/components/content/Content.js +10 -8
- package/lib/mjs/components/content/editForm/Content.edit.display.js +10 -10
- package/lib/mjs/components/currency/Currency.form.js +3 -3
- package/lib/mjs/components/currency/Currency.js +19 -10
- package/lib/mjs/components/currency/editForm/Currency.edit.data.js +5 -5
- package/lib/mjs/components/currency/editForm/Currency.edit.display.js +8 -8
- package/lib/mjs/components/datagrid/DataGrid.form.js +3 -3
- package/lib/mjs/components/datagrid/DataGrid.js +90 -39
- package/lib/mjs/components/datagrid/editForm/DataGrid.edit.data.js +1 -1
- package/lib/mjs/components/datagrid/editForm/DataGrid.edit.display.js +14 -14
- package/lib/mjs/components/datagrid/editForm/DataGrid.edit.validation.js +3 -3
- package/lib/mjs/components/datamap/DataMap.form.js +2 -2
- package/lib/mjs/components/datamap/DataMap.js +44 -31
- package/lib/mjs/components/datamap/editForm/DataMap.edit.data.js +1 -1
- package/lib/mjs/components/datamap/editForm/DataMap.edit.display.js +8 -8
- package/lib/mjs/components/datetime/DateTime.form.js +5 -5
- package/lib/mjs/components/datetime/DateTime.js +31 -16
- package/lib/mjs/components/datetime/editForm/DateTime.edit.data.js +4 -3
- package/lib/mjs/components/datetime/editForm/DateTime.edit.date.js +10 -10
- package/lib/mjs/components/datetime/editForm/DateTime.edit.display.js +22 -17
- package/lib/mjs/components/datetime/editForm/DateTime.edit.time.js +5 -5
- package/lib/mjs/components/datetime/editForm/DateTime.edit.validation.js +3 -3
- package/lib/mjs/components/day/Day.form.js +5 -5
- package/lib/mjs/components/day/Day.js +147 -57
- package/lib/mjs/components/day/editForm/Day.edit.day.js +13 -9
- package/lib/mjs/components/day/editForm/Day.edit.display.js +7 -7
- package/lib/mjs/components/day/editForm/Day.edit.month.js +12 -8
- package/lib/mjs/components/day/editForm/Day.edit.validation.js +7 -7
- package/lib/mjs/components/day/editForm/Day.edit.year.js +8 -8
- package/lib/mjs/components/editgrid/EditGrid.form.js +2 -2
- package/lib/mjs/components/editgrid/EditGrid.js +138 -90
- package/lib/mjs/components/editgrid/editForm/EditGrid.edit.data.js +2 -2
- package/lib/mjs/components/editgrid/editForm/EditGrid.edit.display.js +7 -2
- package/lib/mjs/components/editgrid/editForm/EditGrid.edit.templates.js +16 -16
- package/lib/mjs/components/editgrid/editForm/EditGrid.edit.validation.js +3 -3
- package/lib/mjs/components/email/Email.js +4 -4
- package/lib/mjs/components/email/editForm/Email.edit.display.js +3 -3
- package/lib/mjs/components/email/editForm/Email.edit.validation.js +6 -6
- package/lib/mjs/components/fieldset/Fieldset.form.js +1 -1
- package/lib/mjs/components/fieldset/Fieldset.js +2 -2
- package/lib/mjs/components/fieldset/editForm/Fieldset.edit.display.js +8 -8
- package/lib/mjs/components/file/File.form.js +4 -4
- package/lib/mjs/components/file/File.js +131 -84
- package/lib/mjs/components/file/editForm/File.edit.display.js +9 -5
- package/lib/mjs/components/file/editForm/File.edit.file.d.ts +37 -16
- package/lib/mjs/components/file/editForm/File.edit.file.js +169 -72
- package/lib/mjs/components/file/editForm/File.edit.validation.js +2 -2
- package/lib/mjs/components/form/Form.form.js +3 -3
- package/lib/mjs/components/form/Form.js +67 -51
- package/lib/mjs/components/form/editForm/Form.edit.data.js +1 -3
- package/lib/mjs/components/form/editForm/Form.edit.display.js +6 -7
- package/lib/mjs/components/form/editForm/Form.edit.form.js +10 -8
- package/lib/mjs/components/hidden/Hidden.form.js +4 -4
- package/lib/mjs/components/hidden/Hidden.js +2 -2
- package/lib/mjs/components/hidden/editForm/Hidden.edit.data.js +3 -3
- package/lib/mjs/components/hidden/editForm/Hidden.edit.display.js +10 -10
- package/lib/mjs/components/html/HTML.js +23 -17
- package/lib/mjs/components/html/editForm/HTML.edit.display.js +17 -17
- package/lib/mjs/components/html/editForm/HTML.edit.logic.js +2 -2
- package/lib/mjs/components/number/Number.form.js +3 -3
- package/lib/mjs/components/number/Number.js +28 -12
- package/lib/mjs/components/number/editForm/Number.edit.data.js +3 -3
- package/lib/mjs/components/number/editForm/Number.edit.display.js +4 -4
- package/lib/mjs/components/number/editForm/Number.edit.validation.js +9 -9
- package/lib/mjs/components/panel/Panel.form.js +1 -1
- package/lib/mjs/components/panel/Panel.js +2 -2
- package/lib/mjs/components/panel/editForm/Panel.edit.conditional.js +6 -8
- package/lib/mjs/components/panel/editForm/Panel.edit.display.js +55 -29
- package/lib/mjs/components/password/Password.form.js +3 -3
- package/lib/mjs/components/password/Password.js +5 -2
- package/lib/mjs/components/password/editForm/Password.edit.data.js +11 -11
- package/lib/mjs/components/password/editForm/Password.edit.display.js +3 -3
- package/lib/mjs/components/password/editForm/Password.edit.validation.js +3 -3
- package/lib/mjs/components/phonenumber/PhoneNumber.form.js +8 -8
- package/lib/mjs/components/phonenumber/PhoneNumber.js +3 -3
- package/lib/mjs/components/phonenumber/editForm/PhoneNumber.edit.validation.js +6 -6
- package/lib/mjs/components/radio/Radio.form.js +3 -3
- package/lib/mjs/components/radio/Radio.js +56 -27
- package/lib/mjs/components/radio/editForm/Radio.edit.data.js +23 -9
- package/lib/mjs/components/radio/editForm/Radio.edit.display.js +6 -6
- package/lib/mjs/components/radio/editForm/Radio.edit.validation.js +2 -2
- package/lib/mjs/components/recaptcha/ReCaptcha.form.js +5 -5
- package/lib/mjs/components/recaptcha/ReCaptcha.js +7 -5
- package/lib/mjs/components/recaptcha/editForm/ReCaptcha.edit.display.js +24 -24
- package/lib/mjs/components/select/Select.form.js +3 -3
- package/lib/mjs/components/select/Select.js +240 -134
- package/lib/mjs/components/select/editForm/Select.edit.data.d.ts +1 -1
- package/lib/mjs/components/select/editForm/Select.edit.data.js +191 -57
- package/lib/mjs/components/select/editForm/Select.edit.display.js +2 -2
- package/lib/mjs/components/select/editForm/Select.edit.validation.js +4 -4
- package/lib/mjs/components/selectboxes/SelectBoxes.form.js +3 -3
- package/lib/mjs/components/selectboxes/SelectBoxes.js +32 -16
- package/lib/mjs/components/selectboxes/editForm/SelectBoxes.edit.validation.js +5 -5
- package/lib/mjs/components/signature/Signature.form.js +3 -3
- package/lib/mjs/components/signature/Signature.js +25 -15
- package/lib/mjs/components/signature/editForm/Signature.edit.display.js +19 -10
- package/lib/mjs/components/survey/Survey.form.js +3 -3
- package/lib/mjs/components/survey/Survey.js +30 -17
- package/lib/mjs/components/survey/editForm/Survey.edit.data.js +23 -11
- package/lib/mjs/components/survey/editForm/Survey.edit.display.js +1 -1
- package/lib/mjs/components/survey/editForm/Survey.edit.validation.js +1 -1
- package/lib/mjs/components/table/Table.form.js +1 -1
- package/lib/mjs/components/table/Table.js +7 -5
- package/lib/mjs/components/table/editForm/Table.edit.display.js +22 -22
- package/lib/mjs/components/tabs/Tabs.form.js +1 -1
- package/lib/mjs/components/tabs/Tabs.js +26 -8
- package/lib/mjs/components/tabs/editForm/Tabs.edit.display.js +21 -17
- package/lib/mjs/components/tags/Tags.form.js +1 -1
- package/lib/mjs/components/tags/Tags.js +28 -12
- package/lib/mjs/components/tags/editForm/Tags.edit.data.js +7 -7
- package/lib/mjs/components/textarea/TextArea.form.js +2 -2
- package/lib/mjs/components/textarea/TextArea.js +75 -51
- package/lib/mjs/components/textarea/editForm/TextArea.edit.display.js +96 -72
- package/lib/mjs/components/textarea/editForm/TextArea.edit.validation.js +3 -3
- package/lib/mjs/components/textfield/TextField.form.js +3 -3
- package/lib/mjs/components/textfield/TextField.js +34 -23
- package/lib/mjs/components/textfield/editForm/TextField.edit.data.js +15 -13
- package/lib/mjs/components/textfield/editForm/TextField.edit.display.js +31 -21
- package/lib/mjs/components/textfield/editForm/TextField.edit.validation.js +6 -6
- package/lib/mjs/components/time/Time.js +17 -10
- package/lib/mjs/components/time/editForm/Time.edit.display.js +2 -2
- package/lib/mjs/components/unknown/Unknown.form.js +5 -5
- package/lib/mjs/components/unknown/Unknown.js +2 -2
- package/lib/mjs/components/unknown/editForm/Unknown.edit.display.js +3 -3
- package/lib/mjs/components/url/Url.form.js +3 -3
- package/lib/mjs/components/url/Url.js +2 -2
- package/lib/mjs/components/url/editForm/Url.edit.display.js +3 -3
- package/lib/mjs/components/url/editForm/Url.edit.validation.js +1 -1
- package/lib/mjs/components/well/Well.form.js +1 -1
- package/lib/mjs/components/well/Well.js +2 -2
- package/lib/mjs/components/well/editForm/Well.edit.display.js +10 -10
- package/lib/mjs/formio.form.d.ts +2 -1
- package/lib/mjs/formio.form.js +10 -8
- package/lib/mjs/i18n.d.ts +4 -0
- package/lib/mjs/i18n.js +7 -3
- package/lib/mjs/package.json +1 -1
- package/lib/mjs/providers/address/AddressProvider.js +8 -5
- package/lib/mjs/providers/address/GoogleAddressProvider.d.ts +3 -3
- package/lib/mjs/providers/address/GoogleAddressProvider.js +24 -13
- package/lib/mjs/providers/processor/fileProcessor.js +3 -1
- package/lib/mjs/providers/storage/azure.js +5 -2
- package/lib/mjs/providers/storage/dropbox.js +4 -5
- package/lib/mjs/providers/storage/googleDrive.js +3 -4
- package/lib/mjs/providers/storage/index.js +1 -1
- package/lib/mjs/providers/storage/indexeddb.js +16 -6
- package/lib/mjs/providers/storage/s3.js +19 -8
- package/lib/mjs/providers/storage/uploadAdapter.js +17 -11
- package/lib/mjs/providers/storage/url.js +13 -11
- package/lib/mjs/providers/storage/xhr.js +17 -9
- package/lib/mjs/templates/index.js +1 -1
- package/lib/mjs/translations/de.d.ts +80 -0
- package/lib/mjs/translations/de.js +79 -0
- package/lib/mjs/translations/en.d.ts +0 -2
- package/lib/mjs/translations/en.js +7 -9
- package/lib/mjs/utils/ChoicesWrapper.js +2 -2
- package/lib/mjs/utils/builder.js +31 -7
- package/lib/mjs/utils/calendarUtils.js +7 -5
- package/lib/mjs/utils/conditionOperators/ConditionOperator.js +1 -1
- package/lib/mjs/utils/conditionOperators/DateGreaterThan.js +16 -5
- package/lib/mjs/utils/conditionOperators/IsEmptyValue.js +3 -1
- package/lib/mjs/utils/conditionOperators/IsEqualTo.js +10 -6
- package/lib/mjs/utils/conditionOperators/index.js +1 -1
- package/lib/mjs/utils/formUtils.js +2 -2
- package/lib/mjs/utils/i18n.js +7 -1
- package/lib/mjs/utils/index.d.ts +2 -1
- package/lib/mjs/utils/index.js +3 -3
- package/lib/mjs/utils/utils.d.ts +10 -1
- package/lib/mjs/utils/utils.js +178 -91
- package/lib/mjs/widgets/CalendarWidget.js +67 -50
- package/lib/mjs/widgets/InputWidget.js +6 -4
- package/lib/mjs/widgets/index.js +1 -1
- package/package.json +3 -3
- package/lib/cjs/pdf.image.d.ts +0 -2
- package/lib/cjs/pdf.image.js +0 -94
- package/lib/cjs/utils/jsonlogic/operators.d.ts +0 -1
- package/lib/cjs/utils/jsonlogic/operators.js +0 -265
- package/lib/mjs/pdf.image.d.ts +0 -2
- package/lib/mjs/pdf.image.js +0 -94
- package/lib/mjs/utils/jsonlogic/operators.d.ts +0 -1
- package/lib/mjs/utils/jsonlogic/operators.js +0 -262
package/lib/mjs/Wizard.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
2
|
import Webform from './Webform';
|
|
3
3
|
import { Formio } from './Formio';
|
|
4
|
-
import { fastCloneDeep, checkCondition, firstNonNil, uniqueKey, eachComponent
|
|
4
|
+
import { fastCloneDeep, checkCondition, firstNonNil, uniqueKey, eachComponent } from './utils';
|
|
5
5
|
export default class Wizard extends Webform {
|
|
6
6
|
/**
|
|
7
7
|
* Constructor for wizard-based forms.
|
|
@@ -30,7 +30,9 @@ export default class Wizard extends Webform {
|
|
|
30
30
|
this.page = 0;
|
|
31
31
|
this.currentPanel = null;
|
|
32
32
|
this.currentNextPage = 0;
|
|
33
|
-
this._seenPages = [
|
|
33
|
+
this._seenPages = [
|
|
34
|
+
0,
|
|
35
|
+
];
|
|
34
36
|
this.subWizards = [];
|
|
35
37
|
this.allPages = [];
|
|
36
38
|
this.lastPromise = Promise.resolve();
|
|
@@ -48,8 +50,7 @@ export default class Wizard extends Webform {
|
|
|
48
50
|
getPages(args = {}) {
|
|
49
51
|
const { all = false } = args;
|
|
50
52
|
const pages = this.hasSubWizards ? this.components : this.pages;
|
|
51
|
-
const filteredPages = pages
|
|
52
|
-
.filter(all ? _.identity : (p, index) => this._seenPages.includes(index));
|
|
53
|
+
const filteredPages = pages.filter(all ? _.identity : (p, index) => this._seenPages.includes(index));
|
|
53
54
|
return filteredPages;
|
|
54
55
|
}
|
|
55
56
|
get hasSubWizards() {
|
|
@@ -73,9 +74,7 @@ export default class Wizard extends Webform {
|
|
|
73
74
|
});
|
|
74
75
|
}
|
|
75
76
|
getComponents() {
|
|
76
|
-
return this.submitting
|
|
77
|
-
? this.getPages({ all: this.isLastPage() })
|
|
78
|
-
: super.getComponents();
|
|
77
|
+
return this.submitting ? this.getPages({ all: this.isLastPage() }) : super.getComponents();
|
|
79
78
|
}
|
|
80
79
|
resetValue() {
|
|
81
80
|
this.getPages({ all: true }).forEach((page) => page.resetValue());
|
|
@@ -87,10 +86,10 @@ export default class Wizard extends Webform {
|
|
|
87
86
|
showPrevious: true,
|
|
88
87
|
showNext: true,
|
|
89
88
|
showSubmit: true,
|
|
90
|
-
showCancel: !this.options.readOnly
|
|
89
|
+
showCancel: !this.options.readOnly,
|
|
91
90
|
});
|
|
92
91
|
this.options.breadcrumbSettings = _.defaults(this.options.breadcrumbSettings, {
|
|
93
|
-
clickable: true
|
|
92
|
+
clickable: true,
|
|
94
93
|
});
|
|
95
94
|
this.options.allowPrevious = this.options.allowPrevious || false;
|
|
96
95
|
this.page = 0;
|
|
@@ -100,7 +99,7 @@ export default class Wizard extends Webform {
|
|
|
100
99
|
this.component = this.pages[this.page].component;
|
|
101
100
|
}
|
|
102
101
|
this.on('subWizardsUpdated', (subForm) => {
|
|
103
|
-
const subWizard = this.subWizards.find(subWizard => subForm?.id && subWizard.subForm?.id === subForm?.id);
|
|
102
|
+
const subWizard = this.subWizards.find((subWizard) => subForm?.id && subWizard.subForm?.id === subForm?.id);
|
|
104
103
|
if (this.subWizards.length && subWizard) {
|
|
105
104
|
subWizard.subForm.setValue(subForm._submission, {}, true);
|
|
106
105
|
this.establishPages();
|
|
@@ -124,7 +123,7 @@ export default class Wizard extends Webform {
|
|
|
124
123
|
{ name: 'cancel', method: 'cancel' },
|
|
125
124
|
{ name: 'previous', method: 'prevPage' },
|
|
126
125
|
{ name: 'next', method: 'nextPage' },
|
|
127
|
-
{ name: 'submit', method: 'submit' }
|
|
126
|
+
{ name: 'submit', method: 'submit' },
|
|
128
127
|
].forEach((button) => {
|
|
129
128
|
if (this.hasButton(button.name)) {
|
|
130
129
|
buttons[button.name] = button;
|
|
@@ -137,9 +136,9 @@ export default class Wizard extends Webform {
|
|
|
137
136
|
'cancel',
|
|
138
137
|
'previous',
|
|
139
138
|
'next',
|
|
140
|
-
'submit'
|
|
139
|
+
'submit',
|
|
141
140
|
];
|
|
142
|
-
return this.options.properties?.wizardButtonOrder?.toLowerCase().split(', ') ?? defaultButtonOrder;
|
|
141
|
+
return (this.options.properties?.wizardButtonOrder?.toLowerCase().split(', ') ?? defaultButtonOrder);
|
|
143
142
|
}
|
|
144
143
|
get renderContext() {
|
|
145
144
|
return {
|
|
@@ -147,7 +146,9 @@ export default class Wizard extends Webform {
|
|
|
147
146
|
wizardKey: this.wizardKey,
|
|
148
147
|
isBreadcrumbClickable: this.isBreadcrumbClickable(),
|
|
149
148
|
isSubForm: !!this.parent && !this.root?.component?.type === 'wizard',
|
|
150
|
-
panels: this.allPages.length
|
|
149
|
+
panels: this.allPages.length
|
|
150
|
+
? this.allPages.map((page) => page.component)
|
|
151
|
+
: this.pages.map((page) => page.component),
|
|
151
152
|
buttons: this.buttons,
|
|
152
153
|
currentPage: this.page,
|
|
153
154
|
buttonOrder: this.buttonOrder,
|
|
@@ -157,8 +158,10 @@ export default class Wizard extends Webform {
|
|
|
157
158
|
const currentPanel = this.currentPanel;
|
|
158
159
|
if (currentPanel && currentPanel.buttonSettings) {
|
|
159
160
|
Object.keys(currentPanel.buttonSettings).forEach(() => {
|
|
160
|
-
Object.keys(ctx.buttons).forEach(key => {
|
|
161
|
-
if (typeof currentPanel.buttonSettings[key] !== 'undefined' &&
|
|
161
|
+
Object.keys(ctx.buttons).forEach((key) => {
|
|
162
|
+
if ((typeof currentPanel.buttonSettings[key] !== 'undefined' &&
|
|
163
|
+
!currentPanel.buttonSettings[key]) ||
|
|
164
|
+
ctx.isSubForm) {
|
|
162
165
|
ctx.buttons[key] = null;
|
|
163
166
|
}
|
|
164
167
|
});
|
|
@@ -177,7 +180,7 @@ export default class Wizard extends Webform {
|
|
|
177
180
|
render() {
|
|
178
181
|
const ctx = this.renderContext;
|
|
179
182
|
if (this.component.id) {
|
|
180
|
-
ctx.panels.forEach(panel => {
|
|
183
|
+
ctx.panels.forEach((panel) => {
|
|
181
184
|
if (panel.id === this.component.id) {
|
|
182
185
|
this.currentPanel = panel;
|
|
183
186
|
ctx.wizardPageTooltip = this.getFormattedTooltip(panel.tooltip);
|
|
@@ -198,7 +201,7 @@ export default class Wizard extends Webform {
|
|
|
198
201
|
components: this.renderComponents([
|
|
199
202
|
...this.prefixComps,
|
|
200
203
|
...this.currentPage.components,
|
|
201
|
-
...this.suffixComps
|
|
204
|
+
...this.suffixComps,
|
|
202
205
|
]),
|
|
203
206
|
}, this.builderMode ? 'builder' : 'form');
|
|
204
207
|
}
|
|
@@ -228,7 +231,7 @@ export default class Wizard extends Webform {
|
|
|
228
231
|
headerElement = this.element.querySelector(`#${this.wizardKey}-header`);
|
|
229
232
|
this.loadRefs(headerElement, {
|
|
230
233
|
[`${this.wizardKey}-link`]: 'multiple',
|
|
231
|
-
[`${this.wizardKey}-tooltip`]: 'multiple'
|
|
234
|
+
[`${this.wizardKey}-tooltip`]: 'multiple',
|
|
232
235
|
});
|
|
233
236
|
this.attachHeader();
|
|
234
237
|
}
|
|
@@ -251,7 +254,7 @@ export default class Wizard extends Webform {
|
|
|
251
254
|
[`${this.wizardKey}-next`]: 'single',
|
|
252
255
|
[`${this.wizardKey}-submit`]: 'single',
|
|
253
256
|
[`${this.wizardKey}-link`]: 'multiple',
|
|
254
|
-
[`${this.wizardKey}-tooltip`]: 'multiple'
|
|
257
|
+
[`${this.wizardKey}-tooltip`]: 'multiple',
|
|
255
258
|
});
|
|
256
259
|
if ((this.options.readOnly || this.editMode) && !this.enabledIndex) {
|
|
257
260
|
this.enabledIndex = this.pages?.length - 1;
|
|
@@ -285,7 +288,7 @@ export default class Wizard extends Webform {
|
|
|
285
288
|
}
|
|
286
289
|
isBreadcrumbClickable() {
|
|
287
290
|
let currentPage = null;
|
|
288
|
-
this.pages.map(page => {
|
|
291
|
+
this.pages.map((page) => {
|
|
289
292
|
if (_.isEqual(this.currentPage.component, page.component)) {
|
|
290
293
|
currentPage = page;
|
|
291
294
|
}
|
|
@@ -300,7 +303,7 @@ export default class Wizard extends Webform {
|
|
|
300
303
|
}
|
|
301
304
|
isAllowPrevious() {
|
|
302
305
|
let currentPage = null;
|
|
303
|
-
this.pages.map(page => {
|
|
306
|
+
this.pages.map((page) => {
|
|
304
307
|
if (_.isEqual(this.currentPage.component, page.component)) {
|
|
305
308
|
currentPage = page;
|
|
306
309
|
}
|
|
@@ -348,10 +351,12 @@ export default class Wizard extends Webform {
|
|
|
348
351
|
buttonElement.setAttribute('disabled', 'disabled');
|
|
349
352
|
this.setLoading(buttonElement, true);
|
|
350
353
|
// Call the button method, then re-enable the button.
|
|
351
|
-
this[button.method]()
|
|
354
|
+
this[button.method]()
|
|
355
|
+
.then(() => {
|
|
352
356
|
buttonElement.removeAttribute('disabled');
|
|
353
357
|
this.setLoading(buttonElement, false);
|
|
354
|
-
})
|
|
358
|
+
})
|
|
359
|
+
.catch(() => {
|
|
355
360
|
buttonElement.removeAttribute('disabled');
|
|
356
361
|
this.setLoading(buttonElement, false);
|
|
357
362
|
});
|
|
@@ -409,15 +414,24 @@ export default class Wizard extends Webform {
|
|
|
409
414
|
// Get all components including all nested components and line up in the correct order
|
|
410
415
|
const getAllComponents = (nestedComp, compsArr, pushAllowed = true) => {
|
|
411
416
|
const nestedPages = [];
|
|
412
|
-
const dataArrayComponents = [
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
+
const dataArrayComponents = [
|
|
418
|
+
'datagrid',
|
|
419
|
+
'editgrid',
|
|
420
|
+
'dynamicWizard',
|
|
421
|
+
];
|
|
422
|
+
const currentComponents = nestedComp?.subForm
|
|
423
|
+
? this.getSortedComponents(nestedComp.subForm)
|
|
424
|
+
: nestedComp?.components || [];
|
|
425
|
+
const visibleComponents = currentComponents.filter((comp) => comp._visible);
|
|
426
|
+
const filteredComponents = visibleComponents.filter((comp) => !dataArrayComponents.includes(comp.component.type) &&
|
|
427
|
+
(comp.type !== 'form' || comp.isNestedWizard));
|
|
428
|
+
const additionalComponents = currentComponents.filter((comp) => comp.subForm?._form.display !== 'wizard');
|
|
417
429
|
let hasNested = false;
|
|
418
430
|
eachComponent(filteredComponents, (comp) => {
|
|
419
431
|
if (comp && comp.component) {
|
|
420
|
-
if (comp.component.type === 'panel' &&
|
|
432
|
+
if (comp.component.type === 'panel' &&
|
|
433
|
+
comp?.parent.wizard &&
|
|
434
|
+
!getAllComponents(comp, compsArr, false)) {
|
|
421
435
|
if (pushAllowed) {
|
|
422
436
|
this.setRootPanelId(comp);
|
|
423
437
|
nestedPages.push(comp);
|
|
@@ -466,10 +480,11 @@ export default class Wizard extends Webform {
|
|
|
466
480
|
this.allPages = allComponents;
|
|
467
481
|
}
|
|
468
482
|
getSortedComponents({ components, originalComponents }) {
|
|
483
|
+
// sorts components if they were shuffled after the conditional logic
|
|
469
484
|
const currentComponents = [];
|
|
470
485
|
const currentPages = [];
|
|
471
486
|
if (components && components.length) {
|
|
472
|
-
components.map(page => {
|
|
487
|
+
components.map((page) => {
|
|
473
488
|
if (page.component.type === 'panel') {
|
|
474
489
|
currentPages[page.component.key || page.component.title] = page;
|
|
475
490
|
}
|
|
@@ -502,11 +517,11 @@ export default class Wizard extends Webform {
|
|
|
502
517
|
const visible = [];
|
|
503
518
|
const currentPages = {};
|
|
504
519
|
const pageOptions = {
|
|
505
|
-
...
|
|
520
|
+
..._.clone(this.options),
|
|
506
521
|
...(this.parent ? { root: this } : {}),
|
|
507
522
|
};
|
|
508
523
|
if (this.components && this.components.length) {
|
|
509
|
-
this.components.forEach(page => {
|
|
524
|
+
this.components.forEach((page) => {
|
|
510
525
|
if (page.component.type === 'panel') {
|
|
511
526
|
currentPages[page.component.key || page.component.title] = page;
|
|
512
527
|
}
|
|
@@ -541,7 +556,7 @@ export default class Wizard extends Webform {
|
|
|
541
556
|
page.visible = isVisible;
|
|
542
557
|
this.pages.push(page);
|
|
543
558
|
page.eachComponent((component) => {
|
|
544
|
-
component.page =
|
|
559
|
+
component.page = this.pages.length - 1;
|
|
545
560
|
});
|
|
546
561
|
}
|
|
547
562
|
}
|
|
@@ -583,7 +598,7 @@ export default class Wizard extends Webform {
|
|
|
583
598
|
const pageFromPages = this.pages[num];
|
|
584
599
|
const pageFromComponents = this.components[num];
|
|
585
600
|
if (!pageFromComponents || pageFromPages?.id !== pageFromComponents.id) {
|
|
586
|
-
parentNum = this.components.findIndex(comp => {
|
|
601
|
+
parentNum = this.components.findIndex((comp) => {
|
|
587
602
|
return comp.id === this.pages?.[parentNum]?.rootPanelId;
|
|
588
603
|
});
|
|
589
604
|
}
|
|
@@ -594,7 +609,9 @@ export default class Wizard extends Webform {
|
|
|
594
609
|
return this.redraw().then(() => {
|
|
595
610
|
this.checkData(this.submission.data);
|
|
596
611
|
this.triggerCaptcha(this.currentPage.components);
|
|
597
|
-
const errors = this.submitted
|
|
612
|
+
const errors = this.submitted
|
|
613
|
+
? this.validate(this.localData, { dirty: true })
|
|
614
|
+
: this.validateCurrentPage();
|
|
598
615
|
if (this.alert) {
|
|
599
616
|
this.showErrors(errors, true, true);
|
|
600
617
|
}
|
|
@@ -617,7 +634,9 @@ export default class Wizard extends Webform {
|
|
|
617
634
|
}
|
|
618
635
|
}
|
|
619
636
|
get currentPage() {
|
|
620
|
-
return
|
|
637
|
+
return this.pages && this.pages.length >= this.page
|
|
638
|
+
? this.pages[this.page]
|
|
639
|
+
: { components: [] };
|
|
621
640
|
}
|
|
622
641
|
getNextPage() {
|
|
623
642
|
if (this.pages?.[this.page]) {
|
|
@@ -625,13 +644,13 @@ export default class Wizard extends Webform {
|
|
|
625
644
|
const form = this.pages[this.page].component;
|
|
626
645
|
// Check conditional nextPage
|
|
627
646
|
if (form) {
|
|
628
|
-
const page = this.pages.length >
|
|
647
|
+
const page = this.pages.length > this.page + 1 && !this.showAllErrors ? this.page + 1 : -1;
|
|
629
648
|
if (form.nextPage) {
|
|
630
649
|
const next = this.evaluate(form.nextPage, {
|
|
631
650
|
next: page,
|
|
632
651
|
data,
|
|
633
652
|
page,
|
|
634
|
-
form
|
|
653
|
+
form,
|
|
635
654
|
}, 'next');
|
|
636
655
|
if (next === null) {
|
|
637
656
|
this.currentNextPage = null;
|
|
@@ -694,7 +713,9 @@ export default class Wizard extends Webform {
|
|
|
694
713
|
}
|
|
695
714
|
// Validate the form before going to the next page
|
|
696
715
|
const currentPageErrors = this.validateCurrentPage({ dirty: true });
|
|
697
|
-
const errors = this.submitted
|
|
716
|
+
const errors = this.submitted
|
|
717
|
+
? this.validate(this.localData, { dirty: true })
|
|
718
|
+
: currentPageErrors;
|
|
698
719
|
// allow going to the next page if the current page is valid, even if there are form level errors
|
|
699
720
|
if (currentPageErrors.length === 0) {
|
|
700
721
|
this.checkData(this.submission.data);
|
|
@@ -767,14 +788,14 @@ export default class Wizard extends Webform {
|
|
|
767
788
|
this.originalComponents = [];
|
|
768
789
|
this.component.components.map((item) => {
|
|
769
790
|
if (item.type === 'panel') {
|
|
770
|
-
item.key = uniqueKey(pageKeys,
|
|
791
|
+
item.key = uniqueKey(pageKeys, item.key || 'panel');
|
|
771
792
|
pageKeys[item.key] = true;
|
|
772
793
|
if (this.wizard.full) {
|
|
773
794
|
this.options.show = this.options.show || {};
|
|
774
795
|
this.options.show[item.key] = true;
|
|
775
796
|
}
|
|
776
|
-
else if (Object.prototype.hasOwnProperty.call(this.wizard, 'full')
|
|
777
|
-
|
|
797
|
+
else if (Object.prototype.hasOwnProperty.call(this.wizard, 'full') &&
|
|
798
|
+
!_.isEqual(this.originalOptions.show, this.options.show)) {
|
|
778
799
|
this.options.show = { ...(this.originalOptions.show || {}) };
|
|
779
800
|
}
|
|
780
801
|
}
|
|
@@ -786,9 +807,11 @@ export default class Wizard extends Webform {
|
|
|
786
807
|
title: 'Page 1',
|
|
787
808
|
label: 'Page 1',
|
|
788
809
|
key: 'page1',
|
|
789
|
-
components: this.component.components
|
|
810
|
+
components: this.component.components,
|
|
790
811
|
};
|
|
791
|
-
this.component.components = [
|
|
812
|
+
this.component.components = [
|
|
813
|
+
newPage,
|
|
814
|
+
];
|
|
792
815
|
this.originalComponents.push(_.clone(newPage));
|
|
793
816
|
}
|
|
794
817
|
}
|
|
@@ -799,7 +822,8 @@ export default class Wizard extends Webform {
|
|
|
799
822
|
return super.setForm(form, flags);
|
|
800
823
|
}
|
|
801
824
|
onSetForm(clonedForm, initialForm) {
|
|
802
|
-
this.component.components =
|
|
825
|
+
this.component.components =
|
|
826
|
+
(this.parent ? initialForm.components : clonedForm.components) || [];
|
|
803
827
|
this.setComponentSchema();
|
|
804
828
|
}
|
|
805
829
|
setEditMode(submission) {
|
|
@@ -830,23 +854,26 @@ export default class Wizard extends Webform {
|
|
|
830
854
|
return changed;
|
|
831
855
|
}
|
|
832
856
|
isClickable(page, index) {
|
|
833
|
-
return this.page !== index &&
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
857
|
+
return (this.page !== index &&
|
|
858
|
+
firstNonNil([
|
|
859
|
+
_.get(page, 'breadcrumbClickable'),
|
|
860
|
+
this.options.breadcrumbSettings.clickable,
|
|
861
|
+
]));
|
|
837
862
|
}
|
|
838
863
|
hasButton(name, nextPage = this.getNextPage()) {
|
|
839
864
|
// get page options with global options as default values
|
|
840
|
-
const { previous = this.options.buttonSettings.showPrevious, cancel = this.options.buttonSettings.showCancel, submit = this.options.buttonSettings.showSubmit, next = this.options.buttonSettings.showNext } = _.get(this.currentPage, 'component.buttonSettings', {});
|
|
865
|
+
const { previous = this.options.buttonSettings.showPrevious, cancel = this.options.buttonSettings.showCancel, submit = this.options.buttonSettings.showSubmit, next = this.options.buttonSettings.showNext, } = _.get(this.currentPage, 'component.buttonSettings', {});
|
|
841
866
|
switch (name) {
|
|
842
867
|
case 'previous':
|
|
843
|
-
return previous &&
|
|
868
|
+
return previous && this.getPreviousPage() > -1;
|
|
844
869
|
case 'next':
|
|
845
|
-
return next &&
|
|
870
|
+
return next && nextPage !== null && nextPage !== -1;
|
|
846
871
|
case 'cancel':
|
|
847
872
|
return cancel && !this.options.readOnly;
|
|
848
873
|
case 'submit':
|
|
849
|
-
return submit &&
|
|
874
|
+
return (submit &&
|
|
875
|
+
!this.options.readOnly &&
|
|
876
|
+
(nextPage === null || this.page === this.pages.length - 1));
|
|
850
877
|
default:
|
|
851
878
|
return true;
|
|
852
879
|
}
|
|
@@ -856,8 +883,7 @@ export default class Wizard extends Webform {
|
|
|
856
883
|
// Some panels have the same key....
|
|
857
884
|
return `${page.key}-${page.title}`;
|
|
858
885
|
}
|
|
859
|
-
else if (page.components &&
|
|
860
|
-
page.components.length > 0) {
|
|
886
|
+
else if (page.components && page.components.length > 0) {
|
|
861
887
|
return this.pageId(page.components[0]);
|
|
862
888
|
}
|
|
863
889
|
else {
|
|
@@ -867,7 +893,11 @@ export default class Wizard extends Webform {
|
|
|
867
893
|
onChange(flags, changed, modified, changes) {
|
|
868
894
|
super.onChange(flags, changed, modified, changes);
|
|
869
895
|
// The onChange loop doesn't need all components for wizards
|
|
870
|
-
const errors =
|
|
896
|
+
const errors = flags?.noValidate
|
|
897
|
+
? []
|
|
898
|
+
: this.submitted
|
|
899
|
+
? this.validate(this.localData, { dirty: true })
|
|
900
|
+
: this.validateCurrentPage();
|
|
871
901
|
if (this.alert) {
|
|
872
902
|
this.showErrors(errors, true, true);
|
|
873
903
|
}
|
|
@@ -878,8 +908,10 @@ export default class Wizard extends Webform {
|
|
|
878
908
|
const newPanels = this.pages;
|
|
879
909
|
const currentNextPage = this.currentNextPage;
|
|
880
910
|
const panelsUpdated = !_.isEqual(newPanels, currentPanels);
|
|
881
|
-
if (this.currentPanel?.id &&
|
|
882
|
-
|
|
911
|
+
if (this.currentPanel?.id &&
|
|
912
|
+
this.pages.length &&
|
|
913
|
+
(!this.hasSubWizards || (this.hasSubWizards && panelsUpdated))) {
|
|
914
|
+
const newIndex = this.pages.findIndex((page) => page.id === this.currentPanel.id);
|
|
883
915
|
if (newIndex !== -1)
|
|
884
916
|
this.setPage(newIndex);
|
|
885
917
|
}
|
|
@@ -904,9 +936,7 @@ export default class Wizard extends Webform {
|
|
|
904
936
|
this.setCustomValidity('');
|
|
905
937
|
return true;
|
|
906
938
|
}
|
|
907
|
-
const components = !currentPageOnly || this.isLastPage()
|
|
908
|
-
? this.getComponents()
|
|
909
|
-
: this.currentPage.components;
|
|
939
|
+
const components = !currentPageOnly || this.isLastPage() ? this.getComponents() : this.currentPage.components;
|
|
910
940
|
return components.reduce((check, comp) => comp.checkValidity(data, dirty, row, currentPageOnly, childErrors) && check, true);
|
|
911
941
|
}
|
|
912
942
|
get errors() {
|
|
@@ -919,7 +949,7 @@ export default class Wizard extends Webform {
|
|
|
919
949
|
while (!(topPanel.parent instanceof Wizard)) {
|
|
920
950
|
topPanel = topPanel.parent;
|
|
921
951
|
}
|
|
922
|
-
const pageIndex = this.pages.findIndex(page => page.id === topPanel.id);
|
|
952
|
+
const pageIndex = this.pages.findIndex((page) => page.id === topPanel.id);
|
|
923
953
|
if (pageIndex >= 0) {
|
|
924
954
|
const page = this.pages[pageIndex];
|
|
925
955
|
if (page && page !== this.currentPage) {
|
package/lib/mjs/WizardBuilder.js
CHANGED
|
@@ -27,10 +27,10 @@ export default class WizardBuilder extends WebformBuilder {
|
|
|
27
27
|
for (const group in this.groups) {
|
|
28
28
|
if (this.groups[group] && this.groups[group].components) {
|
|
29
29
|
this.groups[group].componentOrder = Object.keys(this.groups[group].components)
|
|
30
|
-
.map(key => this.groups[group].components[key])
|
|
31
|
-
.filter(component => component && !component.ignore)
|
|
30
|
+
.map((key) => this.groups[group].components[key])
|
|
31
|
+
.filter((component) => component && !component.ignore)
|
|
32
32
|
.sort((a, b) => a.weight - b.weight)
|
|
33
|
-
.map(component => component.key);
|
|
33
|
+
.map((component) => component.key);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
const originalRenderComponentsHook = this.options.hooks.renderComponents;
|
|
@@ -83,14 +83,16 @@ export default class WizardBuilder extends WebformBuilder {
|
|
|
83
83
|
return remove;
|
|
84
84
|
}
|
|
85
85
|
allowDrop(element) {
|
|
86
|
-
return
|
|
86
|
+
return this.webform && this.webform.refs && this.webform.refs.webform === element
|
|
87
|
+
? false
|
|
88
|
+
: true;
|
|
87
89
|
}
|
|
88
90
|
get pages() {
|
|
89
91
|
return _.filter(this._form.components, { type: 'panel' });
|
|
90
92
|
}
|
|
91
93
|
get currentPage() {
|
|
92
94
|
const pages = this.pages;
|
|
93
|
-
return
|
|
95
|
+
return pages && pages.length >= this.page ? pages[this.page] : null;
|
|
94
96
|
}
|
|
95
97
|
setForm(value) {
|
|
96
98
|
this._form = value;
|
|
@@ -99,11 +101,12 @@ export default class WizardBuilder extends WebformBuilder {
|
|
|
99
101
|
}
|
|
100
102
|
if (this.pages.length === 0) {
|
|
101
103
|
const components = this._form.components.filter((component) => component.type !== 'button');
|
|
102
|
-
this._form.components = [
|
|
104
|
+
this._form.components = [
|
|
105
|
+
this.getPageConfig(1, components),
|
|
106
|
+
];
|
|
103
107
|
}
|
|
104
108
|
else {
|
|
105
|
-
const components = this._form.components
|
|
106
|
-
.filter((component) => component.type !== 'button' || component.action !== 'submit');
|
|
109
|
+
const components = this._form.components.filter((component) => component.type !== 'button' || component.action !== 'submit');
|
|
107
110
|
this._form.components = components;
|
|
108
111
|
}
|
|
109
112
|
this.rebuild();
|
|
@@ -134,7 +137,7 @@ export default class WizardBuilder extends WebformBuilder {
|
|
|
134
137
|
group,
|
|
135
138
|
groupKey: group.key,
|
|
136
139
|
groupId: `group-container-${groupKey}`,
|
|
137
|
-
subgroups: []
|
|
140
|
+
subgroups: [],
|
|
138
141
|
})),
|
|
139
142
|
})),
|
|
140
143
|
}),
|
|
@@ -151,13 +154,14 @@ export default class WizardBuilder extends WebformBuilder {
|
|
|
151
154
|
page.parentNode.dragInfo = { index };
|
|
152
155
|
});
|
|
153
156
|
if (this.dragulaLib) {
|
|
154
|
-
this.navigationDragula = this.dragulaLib([
|
|
155
|
-
|
|
157
|
+
this.navigationDragula = this.dragulaLib([
|
|
158
|
+
this.element.querySelector('.wizard-pages'),
|
|
159
|
+
], {
|
|
160
|
+
moves: (el) => !el.classList.contains('wizard-add-page'),
|
|
156
161
|
accepts: (el, target, source, sibling) => (sibling ? true : false),
|
|
157
|
-
})
|
|
158
|
-
.on('drop', this.onReorder.bind(this));
|
|
162
|
+
}).on('drop', this.onReorder.bind(this));
|
|
159
163
|
}
|
|
160
|
-
this.refs.addPage.forEach(link => {
|
|
164
|
+
this.refs.addPage.forEach((link) => {
|
|
161
165
|
this.addEventListener(link, 'click', (event) => {
|
|
162
166
|
event.preventDefault();
|
|
163
167
|
this.addPage();
|
|
@@ -183,8 +187,12 @@ export default class WizardBuilder extends WebformBuilder {
|
|
|
183
187
|
this.webform.setForm({
|
|
184
188
|
display: 'form',
|
|
185
189
|
type: 'form',
|
|
186
|
-
components: page
|
|
187
|
-
|
|
190
|
+
components: page
|
|
191
|
+
? [
|
|
192
|
+
page,
|
|
193
|
+
]
|
|
194
|
+
: [],
|
|
195
|
+
controller: this._form?.controller || '',
|
|
188
196
|
}, { keepAsReference: true });
|
|
189
197
|
return this.redraw();
|
|
190
198
|
}
|
|
@@ -192,7 +200,7 @@ export default class WizardBuilder extends WebformBuilder {
|
|
|
192
200
|
const newPage = page && page.schema ? fastCloneDeep(page.schema) : this.getPageConfig(this.pages.length + 1);
|
|
193
201
|
BuilderUtils.uniquify(this._form.components, newPage);
|
|
194
202
|
this._form.components.push(newPage);
|
|
195
|
-
this.emitSaveComponentEvent(newPage, newPage, this._form, 'components',
|
|
203
|
+
this.emitSaveComponentEvent(newPage, newPage, this._form, 'components', this._form.components.length - 1, true, newPage);
|
|
196
204
|
this.emit('change', this._form);
|
|
197
205
|
return this.rebuild();
|
|
198
206
|
}
|
|
@@ -222,7 +230,7 @@ export default class WizardBuilder extends WebformBuilder {
|
|
|
222
230
|
}
|
|
223
231
|
const oldPosition = element.dragInfo.index;
|
|
224
232
|
//should drop at next sibling position; no next sibling means drop to last position
|
|
225
|
-
const newPosition =
|
|
233
|
+
const newPosition = sibling && sibling.dragInfo ? sibling.dragInfo.index : this.pages.length;
|
|
226
234
|
const movedBelow = newPosition > oldPosition;
|
|
227
235
|
const formComponents = fastCloneDeep(this._form.components);
|
|
228
236
|
const draggedRowData = this._form.components[oldPosition];
|
|
@@ -255,7 +263,7 @@ export default class WizardBuilder extends WebformBuilder {
|
|
|
255
263
|
if (component instanceof WizardBuilder) {
|
|
256
264
|
return;
|
|
257
265
|
}
|
|
258
|
-
if (this._form.components.find(comp => _.isEqual(component.component, comp))) {
|
|
266
|
+
if (this._form.components.find((comp) => _.isEqual(component.component, comp))) {
|
|
259
267
|
this.addPage(component);
|
|
260
268
|
}
|
|
261
269
|
else {
|