@formio/js 5.0.0-rc.18 → 5.0.0-rc.20
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +1 -1
- package/dist/formio.builder.css +14 -22
- package/dist/formio.builder.min.css +1 -1
- package/dist/formio.embed.css +1 -2
- package/dist/formio.embed.js +2 -2
- package/dist/formio.embed.min.css +1 -1
- package/dist/formio.embed.min.js +1 -1
- package/dist/formio.embed.min.js.LICENSE.txt +1 -1
- package/dist/formio.form.css +10 -2
- package/dist/formio.form.js +333 -361
- package/dist/formio.form.min.css +1 -1
- package/dist/formio.form.min.js +1 -1
- package/dist/formio.form.min.js.LICENSE.txt +3 -8
- package/dist/formio.full.css +14 -22
- package/dist/formio.full.js +353 -370
- package/dist/formio.full.min.css +1 -1
- package/dist/formio.full.min.js +1 -1
- package/dist/formio.full.min.js.LICENSE.txt +3 -8
- package/dist/formio.js +208 -121
- package/dist/formio.min.js +1 -1
- package/dist/formio.min.js.LICENSE.txt +2 -7
- package/dist/formio.utils.js +220 -13
- package/dist/formio.utils.min.js +1 -1
- package/dist/formio.utils.min.js.LICENSE.txt +2 -7
- package/lib/cjs/CDN.js +1 -1
- package/lib/cjs/Element.js +7 -2
- package/lib/cjs/Embed.js +1 -1
- package/lib/cjs/Form.d.ts +8 -5
- package/lib/cjs/Form.js +52 -10
- package/lib/cjs/PDF.d.ts +11 -3
- package/lib/cjs/PDF.js +4 -5
- package/lib/cjs/PDFBuilder.js +2 -3
- package/lib/cjs/Webform.d.ts +4 -7
- package/lib/cjs/Webform.js +40 -119
- package/lib/cjs/WebformBuilder.d.ts +6 -1
- package/lib/cjs/WebformBuilder.js +104 -64
- package/lib/cjs/Wizard.d.ts +8 -5
- package/lib/cjs/Wizard.js +14 -14
- package/lib/cjs/WizardBuilder.d.ts +6 -4
- package/lib/cjs/WizardBuilder.js +20 -3
- package/lib/cjs/addons/FormioAddon.d.ts +1 -1
- package/lib/cjs/addons/FormioAddon.js +1 -2
- package/lib/cjs/components/_classes/component/Component.d.ts +17 -8
- package/lib/cjs/components/_classes/component/Component.js +52 -18
- package/lib/cjs/components/_classes/input/Input.d.ts +1 -1
- package/lib/cjs/components/_classes/input/Input.js +1 -2
- package/lib/cjs/components/_classes/list/ListComponent.d.ts +4 -0
- package/lib/cjs/components/_classes/list/ListComponent.js +43 -6
- package/lib/cjs/components/_classes/multivalue/Multivalue.d.ts +1 -0
- package/lib/cjs/components/_classes/multivalue/Multivalue.js +10 -4
- package/lib/cjs/components/_classes/nested/NestedComponent.d.ts +5 -2
- package/lib/cjs/components/_classes/nested/NestedComponent.js +11 -12
- package/lib/cjs/components/address/Address.d.ts +8 -0
- package/lib/cjs/components/button/Button.js +2 -3
- package/lib/cjs/components/checkbox/Checkbox.d.ts +13 -0
- package/lib/cjs/components/checkbox/Checkbox.js +17 -5
- package/lib/cjs/components/columns/Columns.d.ts +1 -0
- package/lib/cjs/components/columns/Columns.js +1 -0
- package/lib/cjs/components/container/Container.d.ts +1 -0
- package/lib/cjs/components/container/Container.js +1 -0
- package/lib/cjs/components/content/Content.d.ts +1 -0
- package/lib/cjs/components/content/Content.js +1 -2
- package/lib/cjs/components/currency/editForm/Currency.edit.data.d.ts +14 -2
- package/lib/cjs/components/currency/editForm/Currency.edit.data.js +4 -0
- package/lib/cjs/components/currency/editForm/Currency.edit.display.js +4 -0
- package/lib/cjs/components/datagrid/DataGrid.d.ts +1 -0
- package/lib/cjs/components/datagrid/DataGrid.js +8 -1
- package/lib/cjs/components/datamap/DataMap.js +1 -0
- package/lib/cjs/components/datetime/DateTime.d.ts +4 -0
- package/lib/cjs/components/datetime/DateTime.js +21 -1
- package/lib/cjs/components/day/Day.d.ts +1 -1
- package/lib/cjs/components/day/Day.js +22 -6
- package/lib/cjs/components/day/fixtures/comp3.js +2 -2
- package/lib/cjs/components/editgrid/EditGrid.d.ts +4 -3
- package/lib/cjs/components/editgrid/EditGrid.js +11 -6
- package/lib/cjs/components/editgrid/fixtures/comp-with-custom-default-value.d.ts +190 -0
- package/lib/cjs/components/editgrid/fixtures/comp-with-custom-default-value.js +227 -0
- package/lib/cjs/components/editgrid/fixtures/comp15.d.ts +54 -0
- package/lib/cjs/components/editgrid/fixtures/comp15.js +51 -0
- package/lib/cjs/components/editgrid/fixtures/index.d.ts +3 -1
- package/lib/cjs/components/editgrid/fixtures/index.js +5 -1
- package/lib/cjs/components/fieldset/Fieldset.d.ts +1 -0
- package/lib/cjs/components/fieldset/Fieldset.js +1 -0
- package/lib/cjs/components/file/File.d.ts +7 -5
- package/lib/cjs/components/file/File.js +26 -9
- package/lib/cjs/components/file/editForm/File.edit.file.d.ts +62 -0
- package/lib/cjs/components/file/editForm/File.edit.file.js +29 -2
- package/lib/cjs/components/form/Form.d.ts +3 -0
- package/lib/cjs/components/form/Form.js +9 -10
- package/lib/cjs/components/hidden/Hidden.d.ts +1 -0
- package/lib/cjs/components/hidden/Hidden.js +1 -0
- package/lib/cjs/components/html/HTML.d.ts +1 -0
- package/lib/cjs/components/html/HTML.js +1 -0
- package/lib/cjs/components/number/Number.d.ts +5 -1
- package/lib/cjs/components/number/Number.js +24 -7
- package/lib/cjs/components/phonenumber/PhoneNumber.form.js +9 -0
- package/lib/cjs/components/radio/Radio.d.ts +5 -3
- package/lib/cjs/components/radio/Radio.js +59 -18
- package/lib/cjs/components/recaptcha/ReCaptcha.d.ts +1 -1
- package/lib/cjs/components/recaptcha/ReCaptcha.js +4 -5
- package/lib/cjs/components/resource/Resource.d.ts +7 -0
- package/lib/cjs/components/resource/Resource.js +0 -1
- package/lib/cjs/components/resource/editForm/Resource.edit.display.js +1 -1
- package/lib/cjs/components/select/Select.d.ts +7 -5
- package/lib/cjs/components/select/Select.js +15 -49
- package/lib/cjs/components/selectboxes/SelectBoxes.d.ts +12 -0
- package/lib/cjs/components/selectboxes/SelectBoxes.js +53 -25
- package/lib/cjs/components/selectboxes/fixtures/comp4.d.ts +30 -27
- package/lib/cjs/components/selectboxes/fixtures/comp4.js +47 -32
- package/lib/cjs/components/selectboxes/fixtures/comp6.d.ts +14 -0
- package/lib/cjs/components/selectboxes/fixtures/comp6.js +15 -0
- package/lib/cjs/components/selectboxes/fixtures/index.d.ts +2 -1
- package/lib/cjs/components/selectboxes/fixtures/index.js +3 -1
- package/lib/cjs/components/signature/Signature.d.ts +1 -1
- package/lib/cjs/components/signature/Signature.js +8 -3
- package/lib/cjs/components/survey/Survey.js +3 -0
- package/lib/cjs/components/table/Table.d.ts +1 -0
- package/lib/cjs/components/table/Table.js +1 -0
- package/lib/cjs/components/tabs/Tabs.d.ts +1 -0
- package/lib/cjs/components/tabs/Tabs.js +1 -0
- package/lib/cjs/components/tags/Tags.js +3 -0
- package/lib/cjs/components/textarea/TextArea.d.ts +3 -2
- package/lib/cjs/components/textarea/TextArea.js +4 -5
- package/lib/cjs/components/textarea/fixtures/comp4.d.ts +30 -0
- package/lib/cjs/components/textarea/fixtures/comp4.js +27 -0
- package/lib/cjs/components/textarea/fixtures/index.d.ts +2 -1
- package/lib/cjs/components/textarea/fixtures/index.js +3 -1
- package/lib/cjs/components/textfield/TextField.d.ts +1 -0
- package/lib/cjs/components/textfield/TextField.js +5 -3
- package/lib/cjs/components/time/Time.d.ts +4 -0
- package/lib/cjs/components/time/Time.js +6 -1
- package/lib/cjs/components/tree/Tree.d.ts +5 -4
- package/lib/cjs/components/tree/Tree.form.js +5 -0
- package/lib/cjs/components/tree/Tree.js +8 -9
- package/lib/cjs/components/tree/editForm/Tree.edit.display.d.ts +9 -0
- package/lib/cjs/components/tree/editForm/Tree.edit.display.js +12 -0
- package/lib/cjs/components/well/Well.d.ts +1 -0
- package/lib/cjs/components/well/Well.js +1 -0
- package/lib/cjs/providers/Providers.d.ts +31 -11
- package/lib/cjs/providers/address/GoogleAddressProvider.d.ts +2 -2
- package/lib/cjs/providers/address/GoogleAddressProvider.js +2 -3
- package/lib/cjs/providers/processor/fileProcessor.d.ts +1 -1
- package/lib/cjs/providers/processor/fileProcessor.js +1 -5
- package/lib/cjs/providers/storage/azure.d.ts +10 -1
- package/lib/cjs/providers/storage/azure.js +7 -2
- package/lib/cjs/providers/storage/base64.d.ts +2 -2
- package/lib/cjs/providers/storage/base64.js +2 -6
- package/lib/cjs/providers/storage/dropbox.d.ts +2 -2
- package/lib/cjs/providers/storage/dropbox.js +2 -6
- package/lib/cjs/providers/storage/googleDrive.d.ts +3 -2
- package/lib/cjs/providers/storage/googleDrive.js +6 -6
- package/lib/cjs/providers/storage/indexeddb.d.ts +3 -3
- package/lib/cjs/providers/storage/indexeddb.js +9 -13
- package/lib/cjs/providers/storage/s3.d.ts +11 -1
- package/lib/cjs/providers/storage/s3.js +5 -2
- package/lib/cjs/providers/storage/uploadAdapter.js +1 -5
- package/lib/cjs/providers/storage/url.d.ts +2 -2
- package/lib/cjs/providers/storage/url.js +12 -8
- package/lib/cjs/providers/storage/xhr.d.ts +1 -1
- package/lib/cjs/providers/storage/xhr.js +1 -2
- package/lib/cjs/templates/index.d.ts +226 -1
- package/lib/cjs/utils/Evaluator.js +4 -33
- package/lib/cjs/utils/i18n.d.ts +16 -0
- package/lib/cjs/utils/i18n.js +88 -0
- package/lib/cjs/utils/utils.d.ts +1 -1
- package/lib/cjs/utils/utils.js +8 -9
- package/lib/cjs/validator/Validator.d.ts +30 -2
- package/lib/cjs/validator/Validator.js +32 -9
- package/lib/cjs/validator/rules/Select.js +1 -2
- package/lib/cjs/validator/rules/Unique.d.ts +1 -1
- package/lib/cjs/validator/rules/Unique.js +1 -2
- package/lib/cjs/widgets/CalendarWidget.d.ts +1 -0
- package/lib/cjs/widgets/InputWidget.d.ts +1 -1
- package/lib/cjs/widgets/InputWidget.js +1 -2
- package/lib/mjs/CDN.js +1 -1
- package/lib/mjs/Element.js +6 -2
- package/lib/mjs/Embed.js +4 -1
- package/lib/mjs/Form.d.ts +8 -5
- package/lib/mjs/Form.js +52 -10
- package/lib/mjs/PDF.d.ts +11 -3
- package/lib/mjs/PDF.js +4 -5
- package/lib/mjs/PDFBuilder.js +2 -3
- package/lib/mjs/Webform.d.ts +4 -7
- package/lib/mjs/Webform.js +40 -122
- package/lib/mjs/WebformBuilder.d.ts +6 -1
- package/lib/mjs/WebformBuilder.js +102 -64
- package/lib/mjs/Wizard.d.ts +8 -5
- package/lib/mjs/Wizard.js +14 -14
- package/lib/mjs/WizardBuilder.d.ts +6 -4
- package/lib/mjs/WizardBuilder.js +20 -3
- package/lib/mjs/addons/FormioAddon.d.ts +1 -1
- package/lib/mjs/addons/FormioAddon.js +1 -2
- package/lib/mjs/components/_classes/component/Component.d.ts +17 -8
- package/lib/mjs/components/_classes/component/Component.js +52 -18
- package/lib/mjs/components/_classes/input/Input.d.ts +1 -1
- package/lib/mjs/components/_classes/input/Input.js +1 -2
- package/lib/mjs/components/_classes/list/ListComponent.d.ts +4 -0
- package/lib/mjs/components/_classes/list/ListComponent.js +43 -5
- package/lib/mjs/components/_classes/multivalue/Multivalue.d.ts +1 -0
- package/lib/mjs/components/_classes/multivalue/Multivalue.js +10 -4
- package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +5 -2
- package/lib/mjs/components/_classes/nested/NestedComponent.js +11 -12
- package/lib/mjs/components/address/Address.d.ts +8 -0
- package/lib/mjs/components/button/Button.js +2 -3
- package/lib/mjs/components/checkbox/Checkbox.d.ts +13 -0
- package/lib/mjs/components/checkbox/Checkbox.js +21 -5
- package/lib/mjs/components/columns/Columns.d.ts +1 -0
- package/lib/mjs/components/columns/Columns.js +1 -0
- package/lib/mjs/components/container/Container.d.ts +1 -0
- package/lib/mjs/components/container/Container.js +1 -0
- package/lib/mjs/components/content/Content.d.ts +1 -0
- package/lib/mjs/components/content/Content.js +1 -2
- package/lib/mjs/components/currency/editForm/Currency.edit.data.d.ts +14 -2
- package/lib/mjs/components/currency/editForm/Currency.edit.data.js +4 -0
- package/lib/mjs/components/currency/editForm/Currency.edit.display.js +4 -0
- package/lib/mjs/components/datagrid/DataGrid.d.ts +1 -0
- package/lib/mjs/components/datagrid/DataGrid.js +8 -1
- package/lib/mjs/components/datamap/DataMap.js +1 -0
- package/lib/mjs/components/datetime/DateTime.d.ts +4 -0
- package/lib/mjs/components/datetime/DateTime.js +28 -1
- package/lib/mjs/components/day/Day.d.ts +1 -1
- package/lib/mjs/components/day/Day.js +25 -6
- package/lib/mjs/components/day/fixtures/comp3.js +2 -2
- package/lib/mjs/components/editgrid/EditGrid.d.ts +4 -3
- package/lib/mjs/components/editgrid/EditGrid.js +11 -6
- package/lib/mjs/components/editgrid/fixtures/comp-with-custom-default-value.d.ts +190 -0
- package/lib/mjs/components/editgrid/fixtures/comp-with-custom-default-value.js +225 -0
- package/lib/mjs/components/editgrid/fixtures/comp15.d.ts +54 -0
- package/lib/mjs/components/editgrid/fixtures/comp15.js +49 -0
- package/lib/mjs/components/editgrid/fixtures/index.d.ts +3 -1
- package/lib/mjs/components/editgrid/fixtures/index.js +3 -1
- package/lib/mjs/components/fieldset/Fieldset.d.ts +1 -0
- package/lib/mjs/components/fieldset/Fieldset.js +1 -0
- package/lib/mjs/components/file/File.d.ts +7 -5
- package/lib/mjs/components/file/File.js +29 -9
- package/lib/mjs/components/file/editForm/File.edit.file.d.ts +62 -0
- package/lib/mjs/components/file/editForm/File.edit.file.js +29 -2
- package/lib/mjs/components/form/Form.d.ts +3 -0
- package/lib/mjs/components/form/Form.js +9 -10
- package/lib/mjs/components/hidden/Hidden.d.ts +1 -0
- package/lib/mjs/components/hidden/Hidden.js +1 -0
- package/lib/mjs/components/html/HTML.d.ts +1 -0
- package/lib/mjs/components/html/HTML.js +1 -0
- package/lib/mjs/components/number/Number.d.ts +5 -1
- package/lib/mjs/components/number/Number.js +24 -7
- package/lib/mjs/components/phonenumber/PhoneNumber.form.js +9 -0
- package/lib/mjs/components/radio/Radio.d.ts +5 -3
- package/lib/mjs/components/radio/Radio.js +59 -18
- package/lib/mjs/components/recaptcha/ReCaptcha.d.ts +1 -1
- package/lib/mjs/components/recaptcha/ReCaptcha.js +4 -5
- package/lib/mjs/components/resource/Resource.d.ts +7 -0
- package/lib/mjs/components/resource/Resource.js +0 -1
- package/lib/mjs/components/resource/editForm/Resource.edit.display.js +1 -1
- package/lib/mjs/components/select/Select.d.ts +7 -5
- package/lib/mjs/components/select/Select.js +18 -49
- package/lib/mjs/components/selectboxes/SelectBoxes.d.ts +12 -0
- package/lib/mjs/components/selectboxes/SelectBoxes.js +56 -25
- package/lib/mjs/components/selectboxes/fixtures/comp4.d.ts +30 -27
- package/lib/mjs/components/selectboxes/fixtures/comp4.js +47 -32
- package/lib/mjs/components/selectboxes/fixtures/comp6.d.ts +14 -0
- package/lib/mjs/components/selectboxes/fixtures/comp6.js +13 -0
- package/lib/mjs/components/selectboxes/fixtures/index.d.ts +2 -1
- package/lib/mjs/components/selectboxes/fixtures/index.js +2 -1
- package/lib/mjs/components/signature/Signature.d.ts +1 -1
- package/lib/mjs/components/signature/Signature.js +11 -3
- package/lib/mjs/components/survey/Survey.js +6 -0
- package/lib/mjs/components/table/Table.d.ts +1 -0
- package/lib/mjs/components/table/Table.js +1 -0
- package/lib/mjs/components/tabs/Tabs.d.ts +1 -0
- package/lib/mjs/components/tabs/Tabs.js +1 -0
- package/lib/mjs/components/tags/Tags.js +6 -0
- package/lib/mjs/components/textarea/TextArea.d.ts +3 -2
- package/lib/mjs/components/textarea/TextArea.js +4 -5
- package/lib/mjs/components/textarea/fixtures/comp4.d.ts +30 -0
- package/lib/mjs/components/textarea/fixtures/comp4.js +25 -0
- package/lib/mjs/components/textarea/fixtures/index.d.ts +2 -1
- package/lib/mjs/components/textarea/fixtures/index.js +2 -1
- package/lib/mjs/components/textfield/TextField.d.ts +1 -0
- package/lib/mjs/components/textfield/TextField.js +8 -3
- package/lib/mjs/components/time/Time.d.ts +4 -0
- package/lib/mjs/components/time/Time.js +12 -1
- package/lib/mjs/components/tree/Tree.d.ts +5 -4
- package/lib/mjs/components/tree/Tree.form.js +5 -0
- package/lib/mjs/components/tree/Tree.js +8 -9
- package/lib/mjs/components/tree/editForm/Tree.edit.display.d.ts +9 -0
- package/lib/mjs/components/tree/editForm/Tree.edit.display.js +10 -0
- package/lib/mjs/components/well/Well.d.ts +1 -0
- package/lib/mjs/components/well/Well.js +1 -0
- package/lib/mjs/providers/Providers.d.ts +31 -11
- package/lib/mjs/providers/address/GoogleAddressProvider.d.ts +2 -2
- package/lib/mjs/providers/address/GoogleAddressProvider.js +2 -3
- package/lib/mjs/providers/processor/fileProcessor.d.ts +1 -1
- package/lib/mjs/providers/processor/fileProcessor.js +1 -2
- package/lib/mjs/providers/storage/azure.d.ts +10 -1
- package/lib/mjs/providers/storage/azure.js +7 -2
- package/lib/mjs/providers/storage/base64.d.ts +2 -2
- package/lib/mjs/providers/storage/base64.js +2 -3
- package/lib/mjs/providers/storage/dropbox.d.ts +2 -2
- package/lib/mjs/providers/storage/dropbox.js +2 -3
- package/lib/mjs/providers/storage/googleDrive.d.ts +3 -2
- package/lib/mjs/providers/storage/googleDrive.js +6 -3
- package/lib/mjs/providers/storage/indexeddb.d.ts +3 -3
- package/lib/mjs/providers/storage/indexeddb.js +9 -10
- package/lib/mjs/providers/storage/s3.d.ts +11 -1
- package/lib/mjs/providers/storage/s3.js +5 -2
- package/lib/mjs/providers/storage/uploadAdapter.js +1 -2
- package/lib/mjs/providers/storage/url.d.ts +2 -2
- package/lib/mjs/providers/storage/url.js +12 -5
- package/lib/mjs/providers/storage/xhr.d.ts +1 -1
- package/lib/mjs/providers/storage/xhr.js +1 -2
- package/lib/mjs/templates/index.d.ts +226 -1
- package/lib/mjs/utils/Evaluator.js +4 -33
- package/lib/mjs/utils/i18n.d.ts +16 -0
- package/lib/mjs/utils/i18n.js +81 -0
- package/lib/mjs/utils/utils.d.ts +1 -1
- package/lib/mjs/utils/utils.js +8 -9
- package/lib/mjs/validator/Validator.d.ts +30 -2
- package/lib/mjs/validator/Validator.js +31 -9
- package/lib/mjs/validator/rules/Select.js +1 -2
- package/lib/mjs/validator/rules/Unique.d.ts +1 -1
- package/lib/mjs/validator/rules/Unique.js +1 -2
- package/lib/mjs/widgets/CalendarWidget.d.ts +1 -0
- package/lib/mjs/widgets/InputWidget.d.ts +1 -1
- package/lib/mjs/widgets/InputWidget.js +1 -2
- package/package.json +24 -25
package/lib/mjs/utils/utils.js
CHANGED
@@ -1,18 +1,17 @@
|
|
1
|
-
/* global
|
1
|
+
/* global jQuery */
|
2
2
|
import _ from 'lodash';
|
3
3
|
import fetchPonyfill from 'fetch-ponyfill';
|
4
4
|
import jsonLogic from 'json-logic-js';
|
5
5
|
import moment from 'moment-timezone/moment-timezone';
|
6
6
|
import jtz from 'jstimezonedetect';
|
7
7
|
import { lodashOperators } from './jsonlogic/operators';
|
8
|
-
import NativePromise from 'native-promise-only';
|
9
8
|
import dompurify from 'dompurify';
|
10
9
|
import { getValue } from './formUtils';
|
11
10
|
import Evaluator from './Evaluator';
|
12
11
|
import ConditionOperators from './conditionOperators';
|
13
12
|
const interpolate = Evaluator.interpolate;
|
14
13
|
const { fetch } = fetchPonyfill({
|
15
|
-
Promise:
|
14
|
+
Promise: Promise
|
16
15
|
});
|
17
16
|
export * from './formUtils';
|
18
17
|
// Configure JsonLogic
|
@@ -337,7 +336,7 @@ export function checkCondition(component, row, data, form, instance) {
|
|
337
336
|
*/
|
338
337
|
export function checkTrigger(component, trigger, row, data, form, instance) {
|
339
338
|
// If trigger is empty, don't fire it
|
340
|
-
if (!trigger[trigger.type]) {
|
339
|
+
if (!trigger || !trigger[trigger.type]) {
|
341
340
|
return false;
|
342
341
|
}
|
343
342
|
switch (trigger.type) {
|
@@ -550,7 +549,7 @@ export function shouldLoadZones(timezone) {
|
|
550
549
|
export function loadZones(url, timezone) {
|
551
550
|
if (timezone && !shouldLoadZones(timezone)) {
|
552
551
|
// Return non-resolving promise.
|
553
|
-
return new
|
552
|
+
return new Promise(_.noop);
|
554
553
|
}
|
555
554
|
if (moment.zonesPromise) {
|
556
555
|
return moment.zonesPromise;
|
@@ -824,7 +823,7 @@ export function getNumberDecimalLimit(component, defaultLimit) {
|
|
824
823
|
}
|
825
824
|
return decimalLimit;
|
826
825
|
}
|
827
|
-
export function getCurrencyAffixes({ currency
|
826
|
+
export function getCurrencyAffixes({ currency, decimalLimit, decimalSeparator, lang, }) {
|
828
827
|
// Get the prefix and suffix from the localized string.
|
829
828
|
let regex = `(.*)?${(100).toLocaleString(lang)}`;
|
830
829
|
if (decimalLimit) {
|
@@ -833,7 +832,7 @@ export function getCurrencyAffixes({ currency = 'USD', decimalLimit, decimalSepa
|
|
833
832
|
regex += '(.*)?';
|
834
833
|
const parts = (100).toLocaleString(lang, {
|
835
834
|
style: 'currency',
|
836
|
-
currency,
|
835
|
+
currency: currency ? currency : 'USD',
|
837
836
|
useGrouping: true,
|
838
837
|
maximumFractionDigits: decimalLimit || 0,
|
839
838
|
minimumFractionDigits: decimalLimit || 0
|
@@ -952,8 +951,8 @@ export function bootstrapVersion(options) {
|
|
952
951
|
if (options.bootstrap) {
|
953
952
|
return options.bootstrap;
|
954
953
|
}
|
955
|
-
if ((typeof
|
956
|
-
return parseInt(
|
954
|
+
if ((typeof jQuery === 'function') && (typeof jQuery().collapse === 'function')) {
|
955
|
+
return parseInt(jQuery.fn.collapse.Constructor.VERSION.split('.')[0], 10);
|
957
956
|
}
|
958
957
|
if (window.bootstrap && window.bootstrap.Collapse) {
|
959
958
|
return parseInt(window.bootstrap.Collapse.VERSION.split('.')[0], 10);
|
@@ -21,7 +21,7 @@ export class ValidationChecker {
|
|
21
21
|
key: string;
|
22
22
|
hasLabel: boolean;
|
23
23
|
message(component: any): any;
|
24
|
-
check(component: any, setting: any, value: any): any
|
24
|
+
check(component: any, setting: any, value: any): true | Promise<any>;
|
25
25
|
};
|
26
26
|
multiple: {
|
27
27
|
key: string;
|
@@ -170,7 +170,35 @@ export class ValidationChecker {
|
|
170
170
|
};
|
171
171
|
};
|
172
172
|
checkValidator(component: any, validator: any, setting: any, value: any, data: any, index: any, row: any, async: any): any;
|
173
|
-
validate(component: any, validatorName: any, value: any, data: any, index: any, row: any, async: any, conditionallyVisible: any, validationObj: any):
|
173
|
+
validate(component: any, validatorName: any, value: any, data: any, index: any, row: any, async: any, conditionallyVisible: any, validationObj: any): false | {
|
174
|
+
message: string;
|
175
|
+
level: string;
|
176
|
+
path: any;
|
177
|
+
context: {
|
178
|
+
validator: any;
|
179
|
+
hasLabel: any;
|
180
|
+
setting: any;
|
181
|
+
key: any;
|
182
|
+
label: any;
|
183
|
+
value: any;
|
184
|
+
index: any;
|
185
|
+
input: any;
|
186
|
+
};
|
187
|
+
} | Promise<false | {
|
188
|
+
message: string;
|
189
|
+
level: string;
|
190
|
+
path: any;
|
191
|
+
context: {
|
192
|
+
validator: any;
|
193
|
+
hasLabel: any;
|
194
|
+
setting: any;
|
195
|
+
key: any;
|
196
|
+
label: any;
|
197
|
+
value: any;
|
198
|
+
index: any;
|
199
|
+
input: any;
|
200
|
+
};
|
201
|
+
}>;
|
174
202
|
checkComponent(component: any, data: any, row: any, includeWarnings?: boolean, async?: boolean): any;
|
175
203
|
/**
|
176
204
|
* Use the new validations engine to evaluate any errors.
|
@@ -1,10 +1,9 @@
|
|
1
1
|
import _ from 'lodash';
|
2
2
|
import { boolValue, getInputMask, matchInputMask, getDateSetting, escapeRegExCharacters, interpolate, convertFormatToMoment, getArrayFromComponentPath, unescapeHTML } from '../utils/utils';
|
3
3
|
import moment from 'moment';
|
4
|
-
import NativePromise from 'native-promise-only';
|
5
4
|
import fetchPonyfill from 'fetch-ponyfill';
|
6
5
|
const { fetch, Headers, Request } = fetchPonyfill({
|
7
|
-
Promise:
|
6
|
+
Promise: Promise
|
8
7
|
});
|
9
8
|
import { checkInvalidDate, CALENDAR_ERROR_MESSAGES } from '../utils/calendarUtils';
|
10
9
|
import Rules from './Rules';
|
@@ -69,7 +68,7 @@ class ValidationChecker {
|
|
69
68
|
if (!this.config.db) {
|
70
69
|
return true;
|
71
70
|
}
|
72
|
-
return new
|
71
|
+
return new Promise(resolve => {
|
73
72
|
const form = this.config.form;
|
74
73
|
const submission = this.config.submission;
|
75
74
|
const path = `data.${component.path}`;
|
@@ -95,10 +94,19 @@ class ValidationChecker {
|
|
95
94
|
};
|
96
95
|
// Build the query
|
97
96
|
const query = { form: form._id };
|
97
|
+
let collationOptions = {};
|
98
98
|
if (_.isString(value)) {
|
99
99
|
if (component.component.dbIndex) {
|
100
100
|
addPathQueryParams(value, query, path);
|
101
101
|
}
|
102
|
+
// These are kind of hacky but provides for a more efficient "unique" validation when the string is an email,
|
103
|
+
// because we (by and large) only have to worry about ASCII and partial unicode; this way, we can use collation-
|
104
|
+
// aware indexes with case insensitive email searches to make things like login and registration a whole lot faster
|
105
|
+
else if (component.component.type === 'email' ||
|
106
|
+
(component.component.type === 'textfield' && component.component.validate?.pattern === '[A-Za-z0-9]+')) {
|
107
|
+
addPathQueryParams(value, query, path);
|
108
|
+
collationOptions = { collation: { locale: 'en', strength: 2 } };
|
109
|
+
}
|
102
110
|
else {
|
103
111
|
addPathQueryParams({
|
104
112
|
$regex: new RegExp(`^${escapeRegExCharacters(value)}$`),
|
@@ -126,8 +134,7 @@ class ValidationChecker {
|
|
126
134
|
// Only search for non-deleted items
|
127
135
|
query.deleted = { $eq: null };
|
128
136
|
query.state = 'submitted';
|
129
|
-
|
130
|
-
this.config.db.findOne(query, (err, result) => {
|
137
|
+
const uniqueValidationCallback = (err, result) => {
|
131
138
|
if (err) {
|
132
139
|
return resolve(false);
|
133
140
|
}
|
@@ -144,6 +151,21 @@ class ValidationChecker {
|
|
144
151
|
else {
|
145
152
|
return resolve(true);
|
146
153
|
}
|
154
|
+
};
|
155
|
+
// Try to find an existing value within the form
|
156
|
+
this.config.db.findOne(query, null, collationOptions, (err, result) => {
|
157
|
+
if (err && collationOptions.collation) {
|
158
|
+
// presume this error comes from db compatibility, try again as regex
|
159
|
+
delete query[path];
|
160
|
+
addPathQueryParams({
|
161
|
+
$regex: new RegExp(`^${escapeRegExCharacters(value)}$`),
|
162
|
+
$options: 'i'
|
163
|
+
}, query, path);
|
164
|
+
this.config.db.findOne(query, uniqueValidationCallback);
|
165
|
+
}
|
166
|
+
else {
|
167
|
+
return uniqueValidationCallback(err, result);
|
168
|
+
}
|
147
169
|
});
|
148
170
|
}).catch(() => false);
|
149
171
|
}
|
@@ -819,7 +841,7 @@ class ValidationChecker {
|
|
819
841
|
return '';
|
820
842
|
};
|
821
843
|
if (async) {
|
822
|
-
return
|
844
|
+
return Promise.resolve(resultOrPromise).then(processResult);
|
823
845
|
}
|
824
846
|
else {
|
825
847
|
return processResult(resultOrPromise);
|
@@ -860,7 +882,7 @@ class ValidationChecker {
|
|
860
882
|
}
|
861
883
|
};
|
862
884
|
if (async) {
|
863
|
-
return
|
885
|
+
return Promise.resolve(resultOrPromise).then(processResult);
|
864
886
|
}
|
865
887
|
else {
|
866
888
|
return processResult(resultOrPromise);
|
@@ -872,7 +894,7 @@ class ValidationChecker {
|
|
872
894
|
&& !_.defaultTo(component.component.persistent, true);
|
873
895
|
// If we're server-side and it's not a persistent component, don't run validation at all
|
874
896
|
if (isServerSidePersistent || component.component.validate === false) {
|
875
|
-
return async ?
|
897
|
+
return async ? Promise.resolve([]) : [];
|
876
898
|
}
|
877
899
|
data = data || component.rootValue;
|
878
900
|
row = row || component.data;
|
@@ -993,7 +1015,7 @@ class ValidationChecker {
|
|
993
1015
|
};
|
994
1016
|
// Wait for results if using async mode, otherwise process and return immediately
|
995
1017
|
if (async) {
|
996
|
-
return
|
1018
|
+
return Promise.all(resultsOrPromises).then(formatResults);
|
997
1019
|
}
|
998
1020
|
else {
|
999
1021
|
return formatResults(resultsOrPromises);
|
@@ -1,8 +1,7 @@
|
|
1
1
|
import { interpolate } from '../../utils/utils';
|
2
|
-
import NativePromise from 'native-promise-only';
|
3
2
|
import fetchPonyfill from 'fetch-ponyfill';
|
4
3
|
const { fetch, Headers, Request } = fetchPonyfill({
|
5
|
-
Promise:
|
4
|
+
Promise: Promise
|
6
5
|
});
|
7
6
|
import _ from 'lodash';
|
8
7
|
import Rule from './Rule';
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { escapeRegExCharacters } from '../../utils/utils';
|
2
2
|
import _ from 'lodash';
|
3
|
-
import NativePromise from 'native-promise-only';
|
4
3
|
import Rule from './Rule';
|
5
4
|
export default class Unique extends Rule {
|
6
5
|
defaultMessage = '{{field}} must be unique';
|
@@ -13,7 +12,7 @@ export default class Unique extends Rule {
|
|
13
12
|
if (!this.config.db) {
|
14
13
|
return true;
|
15
14
|
}
|
16
|
-
return new
|
15
|
+
return new Promise(resolve => {
|
17
16
|
const form = this.config.form;
|
18
17
|
const submission = this.config.submission;
|
19
18
|
const path = `data.${this.component.path}`;
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import _ from 'lodash';
|
2
2
|
import Element from '../Element';
|
3
|
-
import NativePromise from 'native-promise-only';
|
4
3
|
export default class InputWidget extends Element {
|
5
4
|
static get defaultSettings() {
|
6
5
|
return {
|
@@ -17,7 +16,7 @@ export default class InputWidget extends Element {
|
|
17
16
|
}
|
18
17
|
attach(input) {
|
19
18
|
this._input = input;
|
20
|
-
return
|
19
|
+
return Promise.resolve();
|
21
20
|
}
|
22
21
|
get defaultSettings() {
|
23
22
|
return {};
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@formio/js",
|
3
|
-
"version": "5.0.0-rc.
|
3
|
+
"version": "5.0.0-rc.20",
|
4
4
|
"description": "JavaScript powered Forms with JSON Form Builder",
|
5
5
|
"main": "lib/cjs/index.js",
|
6
6
|
"module": "lib/mjs/index.js",
|
@@ -33,24 +33,24 @@
|
|
33
33
|
"lint"
|
34
34
|
],
|
35
35
|
"scripts": {
|
36
|
-
"build": "
|
36
|
+
"build": "yarn doc && yarn lib && yarn dist",
|
37
|
+
"doc": "esdoc",
|
37
38
|
"dist": "gulp clean:dist && webpack --config webpack.config.js && webpack --config webpack.prod.js && gulp build",
|
38
|
-
"lib": "gulp clean:lib && tsc --project tsconfig.cjs.json && tsc --project tsconfig.mjs.json &&
|
39
|
+
"lib": "gulp clean:lib && tsc --project tsconfig.cjs.json && tsc --project tsconfig.mjs.json && yarn lib:package",
|
39
40
|
"lib:package": "node ./libpackage.js",
|
40
|
-
"version": "node -e '
|
41
|
-
"build-app": "
|
41
|
+
"version": "node -e 'console.log(require(`./package.json`).version)'",
|
42
|
+
"build-app": "yarn build-app:create-app && yarn build-app:jekyll && yarn build-app:remove-app",
|
42
43
|
"build-app:create-app": "node -e 'var fs=require(`fs`);fs.writeFileSync(`./_config.app.yml`, `baseurl: /` + require(`./package.json`).version + `/`);'",
|
43
44
|
"build-app:remove-app": "rm ./_config.app.yml",
|
44
45
|
"build-app:jekyll": "jekyll build --config _config.yml,_config.app.yml",
|
45
46
|
"deploy-s3": "$(node -e 'process.stdout.write(`aws s3 cp _site s3://formiojs.test-form.io/` + require(`./package.json`).version + `/ --recursive`)')",
|
46
|
-
"invalidate": "VERSION=$(
|
47
|
-
"release": "
|
48
|
-
"tag": "VERSION=$(
|
49
|
-
"dopublish": "npm test;gulp build;
|
47
|
+
"invalidate": "VERSION=$(yarn version);aws cloudfront create-invalidation --distribution-id E1MXNA5A4ZKRMZ --paths \"/$VERSION/*\"",
|
48
|
+
"release": "yarn build-app && yarn deploy-s3",
|
49
|
+
"tag": "VERSION=$(yarn version);git add -A; git commit -m \"Build $Version\";git push origin master;git tag v$VERSION;git push origin --tags;",
|
50
|
+
"dopublish": "npm test;gulp build;yarn tag;npm publish lib --tag=rc;",
|
50
51
|
"lint": "gulp eslint",
|
51
52
|
"serve": "jekyll serve --config _config.yml,_config.dev.yml",
|
52
|
-
"test": "
|
53
|
-
"test:unit": "npm run lib && mocha --require ts-node/register 'src/**/*.unit.js'",
|
53
|
+
"test": "mocha 'src/**/*.unit.js'",
|
54
54
|
"test:updateRenders": "npm run lib && TZ=UTC node --require jsdom-global/register test/updateRenders.js",
|
55
55
|
"test:e2e": "NODE_OPTIONS=\"--max-old-space-size=4096\" karma start --verbose --single-run"
|
56
56
|
},
|
@@ -73,17 +73,17 @@
|
|
73
73
|
},
|
74
74
|
"homepage": "https://github.com/formio/formio.js#readme",
|
75
75
|
"dependencies": {
|
76
|
-
"@formio/bootstrap": "^3.0.0-rc.
|
76
|
+
"@formio/bootstrap": "^3.0.0-rc.12",
|
77
77
|
"@formio/choices.js": "^10.2.0",
|
78
|
-
"@formio/core": "1.3.0-rc.
|
78
|
+
"@formio/core": "1.3.0-rc.16",
|
79
79
|
"@formio/text-mask-addons": "^3.8.0-formio.2",
|
80
80
|
"@formio/vanilla-text-mask": "^5.1.1-formio.1",
|
81
|
-
"autocompleter": "^8.0.
|
81
|
+
"autocompleter": "^8.0.4",
|
82
82
|
"bootstrap": "^5.3.0",
|
83
83
|
"browser-cookies": "^1.2.0",
|
84
84
|
"browser-md5-file": "^1.1.1",
|
85
|
-
"compare-versions": "^6.0.0-rc.
|
86
|
-
"core-js": "^3.
|
85
|
+
"compare-versions": "^6.0.0-rc.2",
|
86
|
+
"core-js": "^3.31.0",
|
87
87
|
"dialog-polyfill": "^0.5.6",
|
88
88
|
"dom-autoscroller": "^2.3.4",
|
89
89
|
"dompurify": "^3.0.3",
|
@@ -93,7 +93,6 @@
|
|
93
93
|
"fast-deep-equal": "^3.1.3",
|
94
94
|
"fast-json-patch": "^3.1.1",
|
95
95
|
"fetch-ponyfill": "^7.1.0",
|
96
|
-
"i18next": "22.5.1",
|
97
96
|
"idb": "^7.1.1",
|
98
97
|
"ismobilejs": "^1.1.1",
|
99
98
|
"json-logic-js": "^2.0.2",
|
@@ -102,7 +101,6 @@
|
|
102
101
|
"lodash": "^4.17.21",
|
103
102
|
"moment": "^2.29.4",
|
104
103
|
"moment-timezone": "^0.5.43",
|
105
|
-
"native-promise-only": "^0.8.1",
|
106
104
|
"quill": "^2.0.0-dev.3",
|
107
105
|
"resize-observer-polyfill": "^1.5.1",
|
108
106
|
"signature_pad": "^4.1.4",
|
@@ -112,8 +110,9 @@
|
|
112
110
|
"vanilla-picker": "^2.12.1"
|
113
111
|
},
|
114
112
|
"devDependencies": {
|
115
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
116
|
-
"@typescript-eslint/parser": "^5.
|
113
|
+
"@typescript-eslint/eslint-plugin": "^5.60.1",
|
114
|
+
"@typescript-eslint/parser": "^5.60.1",
|
115
|
+
"ace-builds": "^1.4.12",
|
117
116
|
"async-limiter": "^2.0.0",
|
118
117
|
"bootstrap-icons": "^1.10.5",
|
119
118
|
"bootswatch": "^5.3.0",
|
@@ -125,7 +124,7 @@
|
|
125
124
|
"esdoc": "^1.1.0",
|
126
125
|
"esdoc-ecmascript-proposal-plugin": "^1.0.0",
|
127
126
|
"esdoc-standard-plugin": "^1.0.0",
|
128
|
-
"eslint": "^8.
|
127
|
+
"eslint": "^8.43.0",
|
129
128
|
"eslint-config-formio": "^1.1.4",
|
130
129
|
"fetch-mock": "^9.11.0",
|
131
130
|
"file-loader": "^6.2.0",
|
@@ -160,14 +159,14 @@
|
|
160
159
|
"pretty": "^2.0.0",
|
161
160
|
"pygments-css": "^1.0.0",
|
162
161
|
"raw-loader": "^4.0.2",
|
163
|
-
"sass": "^1.63.
|
162
|
+
"sass": "^1.63.6",
|
164
163
|
"shortcut-buttons-flatpickr": "^0.4.0",
|
165
|
-
"sinon": "^15.
|
164
|
+
"sinon": "^15.2.0",
|
166
165
|
"string-replace-loader": "^3.1.0",
|
167
|
-
"ts-loader": "^9.4.
|
166
|
+
"ts-loader": "^9.4.4",
|
168
167
|
"ts-node": "^10.9.1",
|
169
168
|
"typescript": "~5.0.4",
|
170
|
-
"webpack": "^5.
|
169
|
+
"webpack": "^5.88.1",
|
171
170
|
"webpack-bundle-analyzer": "^4.9.0",
|
172
171
|
"webpack-cli": "^5.1.1",
|
173
172
|
"webpack-node-externals": "^3.0.0",
|