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