@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
|
@@ -17,11 +17,13 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
17
17
|
key: 'select',
|
|
18
18
|
idPath: 'id',
|
|
19
19
|
data: {
|
|
20
|
-
values: [
|
|
20
|
+
values: [
|
|
21
|
+
{ label: '', value: '' },
|
|
22
|
+
],
|
|
21
23
|
json: '',
|
|
22
24
|
url: '',
|
|
23
25
|
resource: '',
|
|
24
|
-
custom: ''
|
|
26
|
+
custom: '',
|
|
25
27
|
},
|
|
26
28
|
clearOnRefresh: false,
|
|
27
29
|
limit: 100,
|
|
@@ -42,7 +44,7 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
42
44
|
threshold: 0.3,
|
|
43
45
|
},
|
|
44
46
|
indexeddb: {
|
|
45
|
-
filter: {}
|
|
47
|
+
filter: {},
|
|
46
48
|
},
|
|
47
49
|
customOptions: {},
|
|
48
50
|
useExactSearch: false,
|
|
@@ -55,7 +57,7 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
55
57
|
icon: 'th-list',
|
|
56
58
|
weight: 70,
|
|
57
59
|
documentation: '/userguide/form-building/form-components#select',
|
|
58
|
-
schema: SelectComponent.schema()
|
|
60
|
+
schema: SelectComponent.schema(),
|
|
59
61
|
};
|
|
60
62
|
}
|
|
61
63
|
static get serverConditionSettings() {
|
|
@@ -78,7 +80,12 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
78
80
|
}
|
|
79
81
|
return valueComp;
|
|
80
82
|
}, dataTypeOperators: {
|
|
81
|
-
number: [
|
|
83
|
+
number: [
|
|
84
|
+
'lessThan',
|
|
85
|
+
'greaterThan',
|
|
86
|
+
'lessThanOrEqual',
|
|
87
|
+
'greaterThanOrEqual',
|
|
88
|
+
],
|
|
82
89
|
}, dataTypeValueComponents: {
|
|
83
90
|
number: {
|
|
84
91
|
lessThan: numberType,
|
|
@@ -96,15 +103,28 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
96
103
|
return types;
|
|
97
104
|
}
|
|
98
105
|
if (reference) {
|
|
99
|
-
return [
|
|
106
|
+
return [
|
|
107
|
+
object,
|
|
108
|
+
];
|
|
100
109
|
}
|
|
101
110
|
if (dataType === 'object') {
|
|
102
|
-
return [
|
|
111
|
+
return [
|
|
112
|
+
object,
|
|
113
|
+
array,
|
|
114
|
+
];
|
|
103
115
|
}
|
|
104
116
|
if (utils_1.componentValueTypes[dataType]) {
|
|
105
|
-
return [
|
|
106
|
-
|
|
107
|
-
|
|
117
|
+
return [
|
|
118
|
+
utils_1.componentValueTypes[dataType],
|
|
119
|
+
];
|
|
120
|
+
}
|
|
121
|
+
return [
|
|
122
|
+
boolean,
|
|
123
|
+
string,
|
|
124
|
+
number,
|
|
125
|
+
object,
|
|
126
|
+
array,
|
|
127
|
+
];
|
|
108
128
|
}
|
|
109
129
|
init() {
|
|
110
130
|
super.init();
|
|
@@ -226,10 +246,10 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
226
246
|
return this.component.dataSrc === 'resource' && this.valueProperty === 'data';
|
|
227
247
|
}
|
|
228
248
|
selectValueAndLabel(data) {
|
|
229
|
-
const value = this.getOptionValue(
|
|
249
|
+
const value = this.getOptionValue(this.isEntireObjectDisplay() && !this.itemValue(data) ? data : this.itemValue(data));
|
|
230
250
|
return {
|
|
231
251
|
value,
|
|
232
|
-
label: this.itemTemplate(
|
|
252
|
+
label: this.itemTemplate(this.isEntireObjectDisplay() && !lodash_1.default.isObject(data.data) ? { data: data } : data, value),
|
|
233
253
|
};
|
|
234
254
|
}
|
|
235
255
|
itemTemplate(data, value) {
|
|
@@ -243,13 +263,13 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
243
263
|
// Perform a fast interpretation if we should not use the template.
|
|
244
264
|
if (data && !this.component.template) {
|
|
245
265
|
const itemLabel = data.label || data;
|
|
246
|
-
const value =
|
|
266
|
+
const value = typeof itemLabel === 'string' ? this.t(itemLabel, { _userInput: true }) : itemLabel;
|
|
247
267
|
return this.sanitize(value, this.shouldSanitizeValue);
|
|
248
268
|
}
|
|
249
269
|
// Inside DataTable component won't have dataValue set
|
|
250
270
|
const shouldUseSelectData = (this.component.multiple && lodash_1.default.isArray(this.dataValue)
|
|
251
271
|
? this.dataValue.find((val) => this.normalizeSingleValue(value) === val)
|
|
252
|
-
:
|
|
272
|
+
: this.dataValue === this.normalizeSingleValue(value)) || this.inDataTable;
|
|
253
273
|
if (shouldUseSelectData) {
|
|
254
274
|
const selectData = this.selectData;
|
|
255
275
|
if (selectData) {
|
|
@@ -281,9 +301,10 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
281
301
|
if (data.data) {
|
|
282
302
|
// checking additional fields in the template for the selected Entire Object option
|
|
283
303
|
const hasNestedFields = /item\.data\.\w*/g.test(this.component.template);
|
|
284
|
-
data.data =
|
|
285
|
-
|
|
286
|
-
|
|
304
|
+
data.data =
|
|
305
|
+
this.isEntireObjectDisplay() && lodash_1.default.isObject(data.data) && !hasNestedFields
|
|
306
|
+
? JSON.stringify(data.data)
|
|
307
|
+
: data.data;
|
|
287
308
|
}
|
|
288
309
|
return super.itemTemplate(data, value);
|
|
289
310
|
}
|
|
@@ -310,15 +331,16 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
310
331
|
if (value) {
|
|
311
332
|
this.selectOptions.push(option);
|
|
312
333
|
}
|
|
313
|
-
if (this.refs.selectContainer &&
|
|
334
|
+
if (this.refs.selectContainer && this.component.widget === 'html5') {
|
|
314
335
|
// Replace an empty Object value to an empty String.
|
|
315
336
|
if (option.value && lodash_1.default.isObject(option.value) && lodash_1.default.isEmpty(option.value)) {
|
|
316
337
|
option.value = '';
|
|
317
338
|
}
|
|
318
339
|
// Add element to option so we can reference it later.
|
|
319
340
|
const div = document.createElement('div');
|
|
341
|
+
const isInDataValue = this.component.multiple && Array.isArray(this.dataValue) && this.dataValue.includes(value);
|
|
320
342
|
div.innerHTML = this.sanitize(this.renderTemplate('selectOption', {
|
|
321
|
-
selected: lodash_1.default.isEqual(this.getOptionValue(this.dataValue), option.value),
|
|
343
|
+
selected: lodash_1.default.isEqual(this.getOptionValue(this.dataValue), option.value) || isInDataValue,
|
|
322
344
|
option,
|
|
323
345
|
attrs,
|
|
324
346
|
id,
|
|
@@ -333,14 +355,21 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
333
355
|
let added = false;
|
|
334
356
|
let data = this.dataValue;
|
|
335
357
|
// preset submission value with value property before request.
|
|
336
|
-
if (this.options.pdf &&
|
|
358
|
+
if (this.options.pdf &&
|
|
359
|
+
!items.length &&
|
|
360
|
+
this.component.dataSrc === 'url' &&
|
|
361
|
+
this.valueProperty) {
|
|
337
362
|
data = Array.isArray(data)
|
|
338
|
-
? data.map(item => lodash_1.default.set({}, this.valueProperty, item))
|
|
363
|
+
? data.map((item) => lodash_1.default.set({}, this.valueProperty, item))
|
|
339
364
|
: lodash_1.default.set({}, this.valueProperty, data);
|
|
340
365
|
}
|
|
341
366
|
if (!this.selectOptions.length) {
|
|
342
367
|
// Add the currently selected choices if they don't already exist.
|
|
343
|
-
const currentChoices = Array.isArray(data) && this.component.multiple
|
|
368
|
+
const currentChoices = Array.isArray(data) && this.component.multiple
|
|
369
|
+
? data
|
|
370
|
+
: [
|
|
371
|
+
data,
|
|
372
|
+
];
|
|
344
373
|
added = this.addCurrentChoices(currentChoices, items);
|
|
345
374
|
if (!added && !this.component.multiple) {
|
|
346
375
|
this.addPlaceholder();
|
|
@@ -367,9 +396,13 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
367
396
|
}
|
|
368
397
|
return false;
|
|
369
398
|
}
|
|
370
|
-
/* eslint-disable max-statements */
|
|
371
399
|
setItems(items, fromSearch) {
|
|
372
400
|
var _a, _b;
|
|
401
|
+
if (this.visible && this.isHtmlRenderMode() && !lodash_1.default.isEqual(items, this.selectItems)) {
|
|
402
|
+
this.itemsLoaded.then(() => {
|
|
403
|
+
this.redraw();
|
|
404
|
+
});
|
|
405
|
+
}
|
|
373
406
|
this.selectItems = items;
|
|
374
407
|
// If the items is a string, then parse as JSON.
|
|
375
408
|
if (typeof items == 'string') {
|
|
@@ -401,9 +434,9 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
401
434
|
if (this.itemsFromUrl) {
|
|
402
435
|
areItemsEqual = this.isSelectURL ? lodash_1.default.isEqual(items, this.downloadedResources) : false;
|
|
403
436
|
const areItemsEnded = this.component.limit > items.length;
|
|
404
|
-
const areItemsDownloaded = areItemsEqual
|
|
405
|
-
|
|
406
|
-
|
|
437
|
+
const areItemsDownloaded = areItemsEqual &&
|
|
438
|
+
this.downloadedResources &&
|
|
439
|
+
this.downloadedResources.length === items.length;
|
|
407
440
|
if (areItemsEnded) {
|
|
408
441
|
this.disableInfiniteScroll();
|
|
409
442
|
}
|
|
@@ -420,7 +453,8 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
420
453
|
? this.downloadedResources.concat(items)
|
|
421
454
|
: items;
|
|
422
455
|
}
|
|
423
|
-
this.downloadedResources.serverCount =
|
|
456
|
+
this.downloadedResources.serverCount =
|
|
457
|
+
items.serverCount || this.downloadedResources.serverCount;
|
|
424
458
|
}
|
|
425
459
|
else {
|
|
426
460
|
this.downloadedResources = items || [];
|
|
@@ -428,10 +462,11 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
428
462
|
// If there is new select option with same id as already selected, set the new one
|
|
429
463
|
if (!lodash_1.default.isEmpty(this.dataValue) && this.component.idPath) {
|
|
430
464
|
const selectedOptionId = lodash_1.default.get(this.dataValue, this.component.idPath, null);
|
|
431
|
-
const newOptionWithSameId = !lodash_1.default.isNil(selectedOptionId) &&
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
465
|
+
const newOptionWithSameId = !lodash_1.default.isNil(selectedOptionId) &&
|
|
466
|
+
items.find((item) => {
|
|
467
|
+
const itemId = lodash_1.default.get(item, this.component.idPath);
|
|
468
|
+
return itemId === selectedOptionId;
|
|
469
|
+
});
|
|
435
470
|
if (newOptionWithSameId) {
|
|
436
471
|
this.setValue(newOptionWithSameId);
|
|
437
472
|
}
|
|
@@ -447,7 +482,10 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
447
482
|
// Iterate through each of the items.
|
|
448
483
|
lodash_1.default.each(items, (item, index) => {
|
|
449
484
|
// preventing references of the components inside the form to the parent form when building forms
|
|
450
|
-
if (this.root &&
|
|
485
|
+
if (this.root &&
|
|
486
|
+
this.root.options.editForm &&
|
|
487
|
+
this.root.options.editForm._id &&
|
|
488
|
+
this.root.options.editForm._id === item._id)
|
|
451
489
|
return;
|
|
452
490
|
const itemValueAndLabel = this.selectValueAndLabel(item);
|
|
453
491
|
this.addOption(itemValueAndLabel.value, itemValueAndLabel.label, {}, lodash_1.default.get(item, this.component.idPath, String(index)));
|
|
@@ -467,7 +505,7 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
467
505
|
// If a value is provided, then select it.
|
|
468
506
|
if (!this.isEmpty() || this.isRemoveButtonPressed) {
|
|
469
507
|
this.setValue(this.dataValue, {
|
|
470
|
-
noUpdateEvent: true
|
|
508
|
+
noUpdateEvent: true,
|
|
471
509
|
});
|
|
472
510
|
}
|
|
473
511
|
else if (this.shouldAddDefaultValue && !this.options.readOnly) {
|
|
@@ -494,17 +532,17 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
494
532
|
return super.itemValueForHTMLMode(value);
|
|
495
533
|
}
|
|
496
534
|
if (Array.isArray(value)) {
|
|
497
|
-
const values = value.map(item => Array.isArray(item)
|
|
535
|
+
const values = value.map((item) => Array.isArray(item)
|
|
498
536
|
? this.itemValueForHTMLMode(item)
|
|
499
537
|
: this.getSingleItemValueForHTMLMode(item));
|
|
500
538
|
return values.join(', ');
|
|
501
539
|
}
|
|
502
540
|
return this.getSingleItemValueForHTMLMode(value);
|
|
503
541
|
}
|
|
504
|
-
/* eslint-enable max-statements */
|
|
505
542
|
get defaultValue() {
|
|
506
543
|
let defaultValue = super.defaultValue;
|
|
507
|
-
if (!defaultValue &&
|
|
544
|
+
if (!defaultValue &&
|
|
545
|
+
(this.component.defaultValue === false || this.component.defaultValue === 0)) {
|
|
508
546
|
defaultValue = this.component.defaultValue;
|
|
509
547
|
}
|
|
510
548
|
return defaultValue;
|
|
@@ -523,9 +561,7 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
523
561
|
}
|
|
524
562
|
// See if they have not met the minimum search requirements.
|
|
525
563
|
const minSearch = parseInt(this.component.minSearch, 10);
|
|
526
|
-
if (this.component.searchField &&
|
|
527
|
-
(minSearch > 0) &&
|
|
528
|
-
(!search || (search.length < minSearch))) {
|
|
564
|
+
if (this.component.searchField && minSearch > 0 && (!search || search.length < minSearch)) {
|
|
529
565
|
// Set empty items.
|
|
530
566
|
return this.setItems([]);
|
|
531
567
|
}
|
|
@@ -536,17 +572,19 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
536
572
|
}
|
|
537
573
|
const limit = this.component.limit || 100;
|
|
538
574
|
const skip = this.isScrollLoading ? this.selectOptions.length : 0;
|
|
539
|
-
const query = this.component.disableLimit
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
575
|
+
const query = this.component.disableLimit
|
|
576
|
+
? {}
|
|
577
|
+
: {
|
|
578
|
+
limit,
|
|
579
|
+
skip,
|
|
580
|
+
};
|
|
543
581
|
// Allow for url interpolation.
|
|
544
582
|
url = this.sanitize(this.interpolate(url, {
|
|
545
583
|
formioBase: Formio_1.Formio.getBaseUrl(),
|
|
546
584
|
search,
|
|
547
585
|
limit,
|
|
548
586
|
skip,
|
|
549
|
-
page: Math.abs(Math.floor(skip / limit))
|
|
587
|
+
page: Math.abs(Math.floor(skip / limit)),
|
|
550
588
|
}), this.shouldSanitizeValue);
|
|
551
589
|
// Add search capability.
|
|
552
590
|
if (this.component.searchField && search) {
|
|
@@ -569,7 +607,9 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
569
607
|
}
|
|
570
608
|
if (!lodash_1.default.isEmpty(query)) {
|
|
571
609
|
// Add the query string.
|
|
572
|
-
url +=
|
|
610
|
+
url +=
|
|
611
|
+
(!url.includes('?') ? '?' : '&') +
|
|
612
|
+
Formio_1.Formio.serialize(query, (item) => this.interpolate(item));
|
|
573
613
|
}
|
|
574
614
|
// Add filter capability
|
|
575
615
|
if (this.component.filter) {
|
|
@@ -630,7 +670,7 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
630
670
|
}
|
|
631
671
|
getCustomItems() {
|
|
632
672
|
const customItems = this.evaluate(this.component.data.custom, {
|
|
633
|
-
values: []
|
|
673
|
+
values: [],
|
|
634
674
|
}, 'values');
|
|
635
675
|
this.asyncValues = (0, utils_1.isPromise)(customItems);
|
|
636
676
|
return customItems;
|
|
@@ -649,11 +689,11 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
649
689
|
}
|
|
650
690
|
this.loading = true;
|
|
651
691
|
this.getCustomItems()
|
|
652
|
-
.then(items => {
|
|
692
|
+
.then((items) => {
|
|
653
693
|
this.loading = false;
|
|
654
694
|
this.setItems(items || []);
|
|
655
695
|
})
|
|
656
|
-
.catch(err => {
|
|
696
|
+
.catch((err) => {
|
|
657
697
|
this.handleLoadingError(err);
|
|
658
698
|
});
|
|
659
699
|
}
|
|
@@ -665,13 +705,13 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
665
705
|
return super.isEmpty(value) || value === undefined;
|
|
666
706
|
}
|
|
667
707
|
refresh(value, { instance }) {
|
|
668
|
-
if (this.component.clearOnRefresh &&
|
|
708
|
+
if (this.component.clearOnRefresh && instance && !instance.pristine) {
|
|
669
709
|
this.setValue(this.emptyValue);
|
|
670
710
|
}
|
|
671
711
|
this.updateItems(null, true);
|
|
672
712
|
}
|
|
673
713
|
get additionalResourcesAvailable() {
|
|
674
|
-
return lodash_1.default.isNil(this.serverCount) ||
|
|
714
|
+
return lodash_1.default.isNil(this.serverCount) || this.serverCount > this.downloadedResources.length;
|
|
675
715
|
}
|
|
676
716
|
get serverCount() {
|
|
677
717
|
if (this.isFromSearch) {
|
|
@@ -723,18 +763,22 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
723
763
|
setLoadingItem(addToCurrentList = false) {
|
|
724
764
|
if (this.choices) {
|
|
725
765
|
if (addToCurrentList) {
|
|
726
|
-
this.choices.setChoices([
|
|
766
|
+
this.choices.setChoices([
|
|
767
|
+
{
|
|
727
768
|
value: `${this.id}-loading`,
|
|
728
769
|
label: 'Loading...',
|
|
729
770
|
disabled: true,
|
|
730
|
-
}
|
|
771
|
+
},
|
|
772
|
+
], 'value', 'label');
|
|
731
773
|
}
|
|
732
774
|
else {
|
|
733
|
-
this.choices.setChoices([
|
|
775
|
+
this.choices.setChoices([
|
|
776
|
+
{
|
|
734
777
|
value: '',
|
|
735
778
|
label: `<i class="${this.iconClass('refresh')}" style="font-size:1.3em;"></i>`,
|
|
736
779
|
disabled: true,
|
|
737
|
-
}
|
|
780
|
+
},
|
|
781
|
+
], 'value', 'label', true);
|
|
738
782
|
}
|
|
739
783
|
}
|
|
740
784
|
else if (this.component.dataSrc === 'url' || this.component.dataSrc === 'resource') {
|
|
@@ -756,13 +800,15 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
756
800
|
}
|
|
757
801
|
wrapElement(element) {
|
|
758
802
|
return this.component.addResource && !this.options.readOnly
|
|
759
|
-
?
|
|
760
|
-
element
|
|
761
|
-
})
|
|
803
|
+
? this.renderTemplate('resourceAdd', {
|
|
804
|
+
element,
|
|
805
|
+
})
|
|
762
806
|
: element;
|
|
763
807
|
}
|
|
764
808
|
choicesOptions() {
|
|
765
|
-
const useSearch = this.component.hasOwnProperty('searchEnabled')
|
|
809
|
+
const useSearch = this.component.hasOwnProperty('searchEnabled')
|
|
810
|
+
? this.component.searchEnabled
|
|
811
|
+
: true;
|
|
766
812
|
const placeholderValue = this.t(this.component.placeholder, { _userInput: true });
|
|
767
813
|
let customOptions = this.component.customOptions || {};
|
|
768
814
|
if (typeof customOptions == 'string') {
|
|
@@ -778,20 +824,27 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
778
824
|
maxPatternLength: 1000,
|
|
779
825
|
distance: 1000,
|
|
780
826
|
};
|
|
781
|
-
return Object.assign({ removeItemButton: this.component.disabled
|
|
782
|
-
|
|
827
|
+
return Object.assign({ removeItemButton: this.component.disabled
|
|
828
|
+
? false
|
|
829
|
+
: lodash_1.default.get(this.component, 'removeItemButton', true), itemSelectText: '', classNames: {
|
|
830
|
+
containerOuter: [
|
|
831
|
+
'choices',
|
|
832
|
+
'form-group',
|
|
833
|
+
'formio-choices',
|
|
834
|
+
],
|
|
783
835
|
containerInner: this.transform('class', 'form-control ui fluid selection dropdown').split(' '),
|
|
784
|
-
}, addItemText: false, allowHTML: true, placeholder: !!this.component.placeholder, placeholderValue: placeholderValue, noResultsText: this.t('No results found'), noChoicesText: this.t('No choices to choose from'), searchPlaceholderValue: this.t('Type to search'), shouldSort: false, position:
|
|
836
|
+
}, addItemText: false, allowHTML: true, placeholder: !!this.component.placeholder, placeholderValue: placeholderValue, noResultsText: this.t('No results found'), noChoicesText: this.t('No choices to choose from'), searchPlaceholderValue: this.t('Type to search'), shouldSort: false, position: this.component.dropdown || 'auto', searchEnabled: useSearch, searchChoices: !this.component.searchField, searchFields: lodash_1.default.get(this, 'component.searchFields', [
|
|
837
|
+
'label',
|
|
838
|
+
]), shadowRoot: this.root ? this.root.shadowRoot : null, fuseOptions: this.component.useExactSearch
|
|
785
839
|
? Object.assign({ tokenize: true, matchAllTokens: true }, commonFuseOptions) : Object.assign({}, lodash_1.default.get(this, 'component.fuseOptions', {}), Object.assign({ include: 'score', threshold: lodash_1.default.get(this, 'component.selectThreshold', 0.3) }, commonFuseOptions)), valueComparer: lodash_1.default.isEqual, resetScrollPosition: false, duplicateItemsAllowed: false }, customOptions);
|
|
786
840
|
}
|
|
787
|
-
/* eslint-disable max-statements */
|
|
788
841
|
attach(element) {
|
|
789
842
|
var _a, _b, _c;
|
|
790
843
|
const superAttach = super.attach(element);
|
|
791
844
|
this.loadRefs(element, {
|
|
792
845
|
selectContainer: 'single',
|
|
793
846
|
addResource: 'single',
|
|
794
|
-
autocompleteInput: 'single'
|
|
847
|
+
autocompleteInput: 'single',
|
|
795
848
|
});
|
|
796
849
|
//enable autocomplete for select
|
|
797
850
|
const autocompleteInput = this.refs.autocompleteInput;
|
|
@@ -804,9 +857,18 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
804
857
|
if (!input) {
|
|
805
858
|
return;
|
|
806
859
|
}
|
|
807
|
-
this.addEventListener(input, this.inputInfo.changeEvent, () =>
|
|
808
|
-
|
|
809
|
-
|
|
860
|
+
this.addEventListener(input, this.inputInfo.changeEvent, (event) => {
|
|
861
|
+
let value = null;
|
|
862
|
+
if (this.component.widget === "html5") {
|
|
863
|
+
value = event.target.value;
|
|
864
|
+
if (this.component.multiple) {
|
|
865
|
+
value = Array.from(event.target.selectedOptions).map(opt => opt.value);
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
this.updateValue(value, {
|
|
869
|
+
modified: true
|
|
870
|
+
});
|
|
871
|
+
});
|
|
810
872
|
this.attachRefreshOnBlur();
|
|
811
873
|
if (this.component.widget === 'html5') {
|
|
812
874
|
this.addFocusBlurEvents(input);
|
|
@@ -820,7 +882,10 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
820
882
|
}
|
|
821
883
|
this.addEventListener(input, 'keydown', (event) => {
|
|
822
884
|
const { key } = event;
|
|
823
|
-
if ([
|
|
885
|
+
if ([
|
|
886
|
+
'Backspace',
|
|
887
|
+
'Delete',
|
|
888
|
+
].includes(key)) {
|
|
824
889
|
this.setValue(this.emptyValue);
|
|
825
890
|
}
|
|
826
891
|
});
|
|
@@ -887,8 +952,10 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
887
952
|
this.isFromSearch = false;
|
|
888
953
|
});
|
|
889
954
|
// avoid spamming the resource/url endpoint when we have server side filtering enabled.
|
|
890
|
-
const debounceTimeout = this.component.searchField && (this.isSelectResource || this.isSelectURL)
|
|
891
|
-
(this.component.searchDebounce === 0
|
|
955
|
+
const debounceTimeout = this.component.searchField && (this.isSelectResource || this.isSelectURL)
|
|
956
|
+
? (this.component.searchDebounce === 0
|
|
957
|
+
? 0
|
|
958
|
+
: this.component.searchDebounce || this.defaultSchema.searchDebounce) * 1000
|
|
892
959
|
: 0;
|
|
893
960
|
const updateComponent = (evt) => {
|
|
894
961
|
this.triggerUpdate(evt.detail.value);
|
|
@@ -915,8 +982,9 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
915
982
|
});
|
|
916
983
|
}
|
|
917
984
|
// Add value options.
|
|
985
|
+
const value = this.undoValueTyping(this.dataValue);
|
|
918
986
|
this.addValueOptions();
|
|
919
|
-
this.setChoicesValue(
|
|
987
|
+
this.setChoicesValue(value);
|
|
920
988
|
if (this.isSelectResource && this.refs.addResource) {
|
|
921
989
|
this.addEventListener(this.refs.addResource, 'click', (event) => {
|
|
922
990
|
event.preventDefault();
|
|
@@ -924,13 +992,15 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
924
992
|
const dialog = this.createModal(formioForm);
|
|
925
993
|
const projectUrl = lodash_1.default.get(this.root, 'formio.projectUrl', Formio_1.Formio.getProjectUrl());
|
|
926
994
|
const formUrl = `${projectUrl}/form/${this.component.data.resource}`;
|
|
927
|
-
new Form_1.default(formioForm, formUrl, {}).ready
|
|
928
|
-
.then((form) => {
|
|
995
|
+
new Form_1.default(formioForm, formUrl, {}).ready.then((form) => {
|
|
929
996
|
form.on('submit', (submission) => {
|
|
930
997
|
// If valueProperty is set, replace the submission with the corresponding value
|
|
931
998
|
let value = this.valueProperty ? lodash_1.default.get(submission, this.valueProperty) : submission;
|
|
932
999
|
if (this.component.multiple) {
|
|
933
|
-
value = [
|
|
1000
|
+
value = [
|
|
1001
|
+
...this.dataValue,
|
|
1002
|
+
value,
|
|
1003
|
+
];
|
|
934
1004
|
}
|
|
935
1005
|
this.setValue(value);
|
|
936
1006
|
this.triggerUpdate();
|
|
@@ -976,7 +1046,9 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
976
1046
|
}
|
|
977
1047
|
positionDropdown(scroll) {
|
|
978
1048
|
var _a;
|
|
979
|
-
if (!this.shouldPositionDropdown ||
|
|
1049
|
+
if (!this.shouldPositionDropdown ||
|
|
1050
|
+
!this.choices ||
|
|
1051
|
+
(!((_a = this.choices.dropdown) === null || _a === void 0 ? void 0 : _a.isActive) && scroll)) {
|
|
980
1052
|
return;
|
|
981
1053
|
}
|
|
982
1054
|
this.setDropdownPosition();
|
|
@@ -997,11 +1069,12 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
997
1069
|
attachRefreshOnBlur() {
|
|
998
1070
|
if (this.component.refreshOnBlur) {
|
|
999
1071
|
this.on('blur', (instance) => {
|
|
1000
|
-
this.checkRefreshOn([
|
|
1072
|
+
this.checkRefreshOn([
|
|
1073
|
+
{ instance, value: instance.dataValue },
|
|
1074
|
+
], { fromBlur: true });
|
|
1001
1075
|
});
|
|
1002
1076
|
}
|
|
1003
1077
|
}
|
|
1004
|
-
/* eslint-enable max-statements */
|
|
1005
1078
|
update() {
|
|
1006
1079
|
if (this.component.dataSrc === 'custom') {
|
|
1007
1080
|
this.updateCustomItems();
|
|
@@ -1030,7 +1103,7 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1030
1103
|
}
|
|
1031
1104
|
set visible(value) {
|
|
1032
1105
|
// If we go from hidden to visible, trigger a refresh.
|
|
1033
|
-
if (value &&
|
|
1106
|
+
if (value && !this._visible !== !value) {
|
|
1034
1107
|
this.triggerUpdate();
|
|
1035
1108
|
}
|
|
1036
1109
|
super.visible = value;
|
|
@@ -1057,7 +1130,7 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1057
1130
|
const isSelectOptions = items === this.selectOptions;
|
|
1058
1131
|
if (items && items.length) {
|
|
1059
1132
|
lodash_1.default.each(items, (choice) => {
|
|
1060
|
-
if (choice._id && value._id &&
|
|
1133
|
+
if (choice._id && value._id && choice._id === value._id) {
|
|
1061
1134
|
found = true;
|
|
1062
1135
|
return false;
|
|
1063
1136
|
}
|
|
@@ -1077,22 +1150,23 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1077
1150
|
if (this.choices) {
|
|
1078
1151
|
this.choices.setChoices(notFoundValuesToAdd, 'value', 'label');
|
|
1079
1152
|
}
|
|
1080
|
-
notFoundValuesToAdd.map(notFoundValue => {
|
|
1153
|
+
notFoundValuesToAdd.map((notFoundValue) => {
|
|
1081
1154
|
this.addOption(notFoundValue.value, notFoundValue.label);
|
|
1082
1155
|
});
|
|
1083
1156
|
}
|
|
1084
1157
|
return added;
|
|
1085
1158
|
}
|
|
1086
1159
|
getValueAsString(data, options) {
|
|
1087
|
-
return
|
|
1160
|
+
return this.component.multiple && Array.isArray(data)
|
|
1088
1161
|
? data.map((v) => this.asString(v, options)).join(', ')
|
|
1089
1162
|
: this.asString(data, options);
|
|
1090
1163
|
}
|
|
1091
1164
|
getValue() {
|
|
1092
1165
|
// If the widget isn't active.
|
|
1093
|
-
if (this.viewOnly ||
|
|
1094
|
-
|
|
1095
|
-
|
|
1166
|
+
if (this.viewOnly ||
|
|
1167
|
+
this.loading ||
|
|
1168
|
+
(!this.component.lazyLoad && !this.selectOptions.length) ||
|
|
1169
|
+
!this.element) {
|
|
1096
1170
|
return this.dataValue;
|
|
1097
1171
|
}
|
|
1098
1172
|
let value = this.emptyValue;
|
|
@@ -1101,7 +1175,7 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1101
1175
|
// Make sure we don't get the placeholder
|
|
1102
1176
|
if (!this.component.multiple &&
|
|
1103
1177
|
this.component.placeholder &&
|
|
1104
|
-
|
|
1178
|
+
value === this.t(this.component.placeholder, { _userInput: true })) {
|
|
1105
1179
|
value = this.emptyValue;
|
|
1106
1180
|
}
|
|
1107
1181
|
}
|
|
@@ -1111,8 +1185,7 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1111
1185
|
if (value === '') {
|
|
1112
1186
|
return {};
|
|
1113
1187
|
}
|
|
1114
|
-
const option = this.selectOptions[value] ||
|
|
1115
|
-
this.selectOptions.find(option => option.id === value);
|
|
1188
|
+
const option = this.selectOptions[value] || this.selectOptions.find((option) => option.id === value);
|
|
1116
1189
|
if (option && lodash_1.default.isObject(option.value)) {
|
|
1117
1190
|
value = option.value;
|
|
1118
1191
|
}
|
|
@@ -1147,16 +1220,18 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1147
1220
|
number() {
|
|
1148
1221
|
const numberValue = Number(this.value);
|
|
1149
1222
|
const isEquivalent = value.toString() === numberValue.toString();
|
|
1150
|
-
if (!Number.isNaN(numberValue) &&
|
|
1223
|
+
if (!Number.isNaN(numberValue) &&
|
|
1224
|
+
Number.isFinite(numberValue) &&
|
|
1225
|
+
value !== '' &&
|
|
1226
|
+
isEquivalent) {
|
|
1151
1227
|
this.value = numberValue;
|
|
1152
1228
|
}
|
|
1153
1229
|
return this;
|
|
1154
1230
|
},
|
|
1155
1231
|
boolean() {
|
|
1156
|
-
if (lodash_1.default.isString(this.value)
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
this.value = (this.value.toLowerCase() === 'true');
|
|
1232
|
+
if (lodash_1.default.isString(this.value) &&
|
|
1233
|
+
(this.value.toLowerCase() === 'true' || this.value.toLowerCase() === 'false')) {
|
|
1234
|
+
this.value = this.value.toLowerCase() === 'true';
|
|
1160
1235
|
}
|
|
1161
1236
|
return this;
|
|
1162
1237
|
},
|
|
@@ -1175,7 +1250,7 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1175
1250
|
this.value = this.string().number().boolean().value;
|
|
1176
1251
|
}
|
|
1177
1252
|
return this;
|
|
1178
|
-
}
|
|
1253
|
+
},
|
|
1179
1254
|
};
|
|
1180
1255
|
try {
|
|
1181
1256
|
return normalize[dataType]().value;
|
|
@@ -1209,7 +1284,11 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1209
1284
|
// Check to see if we need to save off the template data into our metadata.
|
|
1210
1285
|
const templateValue = this.component.reference && (value === null || value === void 0 ? void 0 : value._id) ? value._id.toString() : value;
|
|
1211
1286
|
const shouldSaveData = (!valueIsObject || this.component.reference) && !this.inDataTable;
|
|
1212
|
-
if (!lodash_1.default.isNil(templateValue) &&
|
|
1287
|
+
if (!lodash_1.default.isNil(templateValue) &&
|
|
1288
|
+
shouldSaveData &&
|
|
1289
|
+
this.templateData &&
|
|
1290
|
+
this.templateData[templateValue] &&
|
|
1291
|
+
((_a = this.root) === null || _a === void 0 ? void 0 : _a.submission)) {
|
|
1213
1292
|
const submission = this.root.submission;
|
|
1214
1293
|
if (!submission.metadata) {
|
|
1215
1294
|
submission.metadata = {};
|
|
@@ -1223,7 +1302,9 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1223
1302
|
const dataValue = this.dataValue;
|
|
1224
1303
|
if (dataValue && lodash_1.default.isArray(dataValue) && dataValue.length) {
|
|
1225
1304
|
dataValue.forEach((dataValueItem) => {
|
|
1226
|
-
const dataValueItemValue = this.component.reference
|
|
1305
|
+
const dataValueItemValue = this.component.reference
|
|
1306
|
+
? dataValueItem._id.toString()
|
|
1307
|
+
: dataValueItem;
|
|
1227
1308
|
templateData[dataValueItemValue] = this.templateData[dataValueItemValue];
|
|
1228
1309
|
});
|
|
1229
1310
|
}
|
|
@@ -1243,7 +1324,7 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1243
1324
|
const changed = super.updateValue(value, flags);
|
|
1244
1325
|
if (changed || !this.selectMetadata || flags.resetValue) {
|
|
1245
1326
|
if (this.component.multiple && Array.isArray(this.dataValue)) {
|
|
1246
|
-
this.dataValue.forEach(singleValue => this.setMetadata(singleValue, flags));
|
|
1327
|
+
this.dataValue.forEach((singleValue) => this.setMetadata(singleValue, flags));
|
|
1247
1328
|
}
|
|
1248
1329
|
else {
|
|
1249
1330
|
this.setMetadata(this.dataValue, flags);
|
|
@@ -1254,7 +1335,7 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1254
1335
|
undoValueTyping(value) {
|
|
1255
1336
|
let untypedValue = value;
|
|
1256
1337
|
if (this.component.multiple && Array.isArray(value)) {
|
|
1257
|
-
untypedValue = value.map(v => {
|
|
1338
|
+
untypedValue = value.map((v) => {
|
|
1258
1339
|
if (typeof v === 'boolean' || typeof v === 'number') {
|
|
1259
1340
|
return v.toString();
|
|
1260
1341
|
}
|
|
@@ -1271,7 +1352,9 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1271
1352
|
setValue(value, flags = {}) {
|
|
1272
1353
|
const previousValue = this.dataValue;
|
|
1273
1354
|
const changed = this.updateValue(value, flags);
|
|
1274
|
-
if (this.component.widget === 'html5' &&
|
|
1355
|
+
if (this.component.widget === 'html5' &&
|
|
1356
|
+
(lodash_1.default.isEqual(value, previousValue) || (lodash_1.default.isEqual(previousValue, {}) && lodash_1.default.isEqual(flags, {}))) &&
|
|
1357
|
+
!flags.fromSubmission) {
|
|
1275
1358
|
return false;
|
|
1276
1359
|
}
|
|
1277
1360
|
value = this.dataValue;
|
|
@@ -1295,6 +1378,9 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1295
1378
|
this.lazyLoadInit = true;
|
|
1296
1379
|
const searchProperty = this.component.searchField || this.component.valueProperty;
|
|
1297
1380
|
this.triggerUpdate(lodash_1.default.get(value.data || value, searchProperty, value), true);
|
|
1381
|
+
this.itemsLoaded.then(() => {
|
|
1382
|
+
this.setChoicesValue(value, hasPreviousValue, flags);
|
|
1383
|
+
});
|
|
1298
1384
|
return changed;
|
|
1299
1385
|
}
|
|
1300
1386
|
// Add the value options.
|
|
@@ -1305,23 +1391,28 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1305
1391
|
return changed;
|
|
1306
1392
|
}
|
|
1307
1393
|
isInitApiCallNeeded(hasValue) {
|
|
1308
|
-
return this.component.lazyLoad &&
|
|
1394
|
+
return (this.component.lazyLoad &&
|
|
1309
1395
|
!this.lazyLoadInit &&
|
|
1310
1396
|
!this.active &&
|
|
1311
1397
|
!this.selectOptions.length &&
|
|
1312
1398
|
hasValue &&
|
|
1313
1399
|
this.shouldInitialLoad &&
|
|
1314
|
-
this.visible &&
|
|
1400
|
+
this.visible &&
|
|
1401
|
+
(this.component.searchField || this.component.valueProperty));
|
|
1315
1402
|
}
|
|
1316
1403
|
setChoicesValue(value, hasPreviousValue, flags = {}) {
|
|
1317
1404
|
const hasValue = !this.isEmpty(value) || flags.fromSubmission;
|
|
1318
|
-
hasPreviousValue =
|
|
1405
|
+
hasPreviousValue = hasPreviousValue === undefined ? true : hasPreviousValue;
|
|
1319
1406
|
if (this.choices) {
|
|
1320
1407
|
// Now set the value.
|
|
1321
1408
|
if (hasValue) {
|
|
1322
1409
|
this.choices.removeActiveItems();
|
|
1323
1410
|
// Add the currently selected choices if they don't already exist.
|
|
1324
|
-
const currentChoices = Array.isArray(value) && this.component.multiple
|
|
1411
|
+
const currentChoices = Array.isArray(value) && this.component.multiple
|
|
1412
|
+
? value
|
|
1413
|
+
: [
|
|
1414
|
+
value,
|
|
1415
|
+
];
|
|
1325
1416
|
if (!this.addCurrentChoices(currentChoices, this.selectOptions, true)) {
|
|
1326
1417
|
this.choices.setChoices(this.selectOptions, 'value', 'label', true);
|
|
1327
1418
|
}
|
|
@@ -1333,9 +1424,13 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1333
1424
|
}
|
|
1334
1425
|
else {
|
|
1335
1426
|
if (hasValue) {
|
|
1336
|
-
const values = Array.isArray(value)
|
|
1337
|
-
|
|
1338
|
-
|
|
1427
|
+
const values = Array.isArray(value)
|
|
1428
|
+
? value
|
|
1429
|
+
: [
|
|
1430
|
+
value,
|
|
1431
|
+
];
|
|
1432
|
+
if ((!lodash_1.default.isEqual(this.dataValue, this.defaultValue) && this.selectOptions.length < 2) ||
|
|
1433
|
+
(this.selectData && flags.fromSubmission)) {
|
|
1339
1434
|
const { value, label } = this.selectValueAndLabel(this.dataValue);
|
|
1340
1435
|
this.addOption(value, label);
|
|
1341
1436
|
}
|
|
@@ -1375,7 +1470,7 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1375
1470
|
return false;
|
|
1376
1471
|
}
|
|
1377
1472
|
try {
|
|
1378
|
-
return
|
|
1473
|
+
return JSON.stringify(normalizedOptionValue) === JSON.stringify(value);
|
|
1379
1474
|
}
|
|
1380
1475
|
catch (err) {
|
|
1381
1476
|
console.warn.error('Error while comparing items', err);
|
|
@@ -1384,7 +1479,7 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1384
1479
|
};
|
|
1385
1480
|
return values.findIndex((optionValue) => compareComplexValues(optionValue)) !== -1;
|
|
1386
1481
|
}
|
|
1387
|
-
return values.findIndex((optionValue) => this.normalizeSingleValue(optionValue) === value) !== -1;
|
|
1482
|
+
return (values.findIndex((optionValue) => this.normalizeSingleValue(optionValue) === value) !== -1);
|
|
1388
1483
|
}
|
|
1389
1484
|
return false;
|
|
1390
1485
|
}
|
|
@@ -1443,7 +1538,7 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1443
1538
|
*/
|
|
1444
1539
|
deleteValue() {
|
|
1445
1540
|
this.setValue('', {
|
|
1446
|
-
noUpdateEvent: true
|
|
1541
|
+
noUpdateEvent: true,
|
|
1447
1542
|
});
|
|
1448
1543
|
this.unset();
|
|
1449
1544
|
}
|
|
@@ -1466,7 +1561,10 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1466
1561
|
if (!this.component || !this.component.data || !this.component.data.values) {
|
|
1467
1562
|
return;
|
|
1468
1563
|
}
|
|
1469
|
-
return this.component.data.values.map(value => ({
|
|
1564
|
+
return this.component.data.values.map((value) => ({
|
|
1565
|
+
label: value.label,
|
|
1566
|
+
value: String(this.normalizeSingleValue(value.value)),
|
|
1567
|
+
}));
|
|
1470
1568
|
}
|
|
1471
1569
|
asString(value, options = {}) {
|
|
1472
1570
|
var _a;
|
|
@@ -1475,7 +1573,7 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1475
1573
|
if (this.inDataTable) {
|
|
1476
1574
|
value = this.undoValueTyping(value);
|
|
1477
1575
|
}
|
|
1478
|
-
const templateValue =
|
|
1576
|
+
const templateValue = this.isEntireObjectDisplay() && !lodash_1.default.isObject(value.data) ? { data: value } : value;
|
|
1479
1577
|
const template = this.itemTemplate(templateValue, value, options);
|
|
1480
1578
|
return template;
|
|
1481
1579
|
}
|
|
@@ -1483,7 +1581,7 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1483
1581
|
const convertToString = (data, valueProperty) => {
|
|
1484
1582
|
if (valueProperty) {
|
|
1485
1583
|
if (Array.isArray(data)) {
|
|
1486
|
-
data.forEach((item) => item[valueProperty] = item[valueProperty].toString());
|
|
1584
|
+
data.forEach((item) => (item[valueProperty] = item[valueProperty].toString()));
|
|
1487
1585
|
}
|
|
1488
1586
|
else if (lodash_1.default.isObject(data)) {
|
|
1489
1587
|
data[valueProperty] = data[valueProperty].toString();
|
|
@@ -1493,14 +1591,18 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1493
1591
|
if (this.isBooleanOrNumber(data)) {
|
|
1494
1592
|
data = data.toString();
|
|
1495
1593
|
}
|
|
1496
|
-
if (Array.isArray(data) && data.some(item => this.isBooleanOrNumber(item))) {
|
|
1497
|
-
data = data.map(item => this.isBooleanOrNumber(item) ? item.toString() : item);
|
|
1594
|
+
if (Array.isArray(data) && data.some((item) => this.isBooleanOrNumber(item))) {
|
|
1595
|
+
data = data.map((item) => (this.isBooleanOrNumber(item) ? item.toString() : item));
|
|
1498
1596
|
}
|
|
1499
1597
|
return data;
|
|
1500
1598
|
};
|
|
1501
1599
|
value = convertToString(value);
|
|
1502
|
-
if ([
|
|
1503
|
-
|
|
1600
|
+
if ([
|
|
1601
|
+
'values',
|
|
1602
|
+
'custom',
|
|
1603
|
+
].includes(this.component.dataSrc) &&
|
|
1604
|
+
!this.asyncCustomValues()) {
|
|
1605
|
+
const { items, valueProperty } = this.component.dataSrc === 'values'
|
|
1504
1606
|
? {
|
|
1505
1607
|
items: convertToString(this.getNormalizedValues(), 'value'),
|
|
1506
1608
|
valueProperty: 'value',
|
|
@@ -1510,28 +1612,30 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1510
1612
|
valueProperty: this.valueProperty,
|
|
1511
1613
|
};
|
|
1512
1614
|
const getFromValues = () => {
|
|
1513
|
-
const initialValue = lodash_1.default.find(items, [
|
|
1615
|
+
const initialValue = lodash_1.default.find(items, [
|
|
1616
|
+
valueProperty,
|
|
1617
|
+
value,
|
|
1618
|
+
]);
|
|
1514
1619
|
const values = this.defaultSchema.data.values || [];
|
|
1515
1620
|
return lodash_1.default.isEqual(initialValue, values[0]) ? '-' : initialValue;
|
|
1516
1621
|
};
|
|
1517
|
-
value =
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1622
|
+
value =
|
|
1623
|
+
this.component.multiple && Array.isArray(value)
|
|
1624
|
+
? lodash_1.default.filter(items, (item) => value.includes(item.value))
|
|
1625
|
+
: valueProperty && items
|
|
1626
|
+
? ((_a = getFromValues()) !== null && _a !== void 0 ? _a : { value, label: value })
|
|
1627
|
+
: value;
|
|
1522
1628
|
}
|
|
1523
1629
|
if (lodash_1.default.isString(value)) {
|
|
1524
1630
|
return value;
|
|
1525
1631
|
}
|
|
1526
1632
|
const getTemplateValue = (v) => {
|
|
1527
1633
|
const itemTemplate = this.itemTemplate(v);
|
|
1528
|
-
return options.csv && itemTemplate
|
|
1529
|
-
? (0, utils_1.removeHTML)(itemTemplate)
|
|
1530
|
-
: itemTemplate;
|
|
1634
|
+
return options.csv && itemTemplate ? (0, utils_1.removeHTML)(itemTemplate) : itemTemplate;
|
|
1531
1635
|
};
|
|
1532
1636
|
if (Array.isArray(value)) {
|
|
1533
1637
|
const items = [];
|
|
1534
|
-
value.forEach(item => items.push(getTemplateValue(item)));
|
|
1638
|
+
value.forEach((item) => items.push(getTemplateValue(item)));
|
|
1535
1639
|
if (this.component.dataSrc === 'resource' && items.length > 0) {
|
|
1536
1640
|
return items.join(', ');
|
|
1537
1641
|
}
|
|
@@ -1545,9 +1649,7 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1545
1649
|
if (this.isEntireObjectDisplay() && lodash_1.default.isObject(value)) {
|
|
1546
1650
|
return JSON.stringify(value);
|
|
1547
1651
|
}
|
|
1548
|
-
return !lodash_1.default.isNil(value)
|
|
1549
|
-
? getTemplateValue(value)
|
|
1550
|
-
: '-';
|
|
1652
|
+
return !lodash_1.default.isNil(value) ? getTemplateValue(value) : '-';
|
|
1551
1653
|
}
|
|
1552
1654
|
detach() {
|
|
1553
1655
|
var _a, _b;
|
|
@@ -1569,10 +1671,14 @@ class SelectComponent extends ListComponent_1.default {
|
|
|
1569
1671
|
setErrorClasses(elements, dirty, hasError, hasMessages, element = this.element) {
|
|
1570
1672
|
super.setErrorClasses(elements, dirty, hasError, hasMessages, element);
|
|
1571
1673
|
if (this.choices) {
|
|
1572
|
-
super.setErrorClasses([
|
|
1674
|
+
super.setErrorClasses([
|
|
1675
|
+
this.choices.containerInner.element,
|
|
1676
|
+
], dirty, hasError, hasMessages, element);
|
|
1573
1677
|
}
|
|
1574
1678
|
else {
|
|
1575
|
-
super.setErrorClasses([
|
|
1679
|
+
super.setErrorClasses([
|
|
1680
|
+
this.refs.selectContainer,
|
|
1681
|
+
], dirty, hasError, hasMessages, element);
|
|
1576
1682
|
}
|
|
1577
1683
|
}
|
|
1578
1684
|
}
|