@formio/js 5.0.0-rc.37 → 5.0.0-rc.38

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. package/dist/fonts/bootstrap-icons.woff +0 -0
  2. package/dist/fonts/bootstrap-icons.woff2 +0 -0
  3. package/dist/formio.embed.js +1 -1
  4. package/dist/formio.embed.min.js +1 -1
  5. package/dist/formio.embed.min.js.LICENSE.txt +1 -1
  6. package/dist/formio.form.js +853 -132
  7. package/dist/formio.form.min.js +1 -1
  8. package/dist/formio.form.min.js.LICENSE.txt +5 -3
  9. package/dist/formio.full.css +4 -4
  10. package/dist/formio.full.js +827 -136
  11. package/dist/formio.full.min.css +3 -3
  12. package/dist/formio.full.min.js +1 -1
  13. package/dist/formio.full.min.js.LICENSE.txt +5 -3
  14. package/dist/formio.js +4 -4
  15. package/dist/formio.min.js +1 -1
  16. package/dist/formio.min.js.LICENSE.txt +1 -1
  17. package/dist/formio.utils.js +25 -14
  18. package/dist/formio.utils.min.js +1 -1
  19. package/dist/formio.utils.min.js.LICENSE.txt +5 -3
  20. package/lib/cjs/Element.js +2 -2
  21. package/lib/cjs/components/_classes/component/Component.js +21 -7
  22. package/lib/cjs/components/_classes/component/fixtures/comp5.js +2 -2
  23. package/lib/cjs/components/_classes/list/ListComponent.js +5 -12
  24. package/lib/cjs/components/_classes/nested/NestedComponent.js +17 -9
  25. package/lib/cjs/components/columns/editForm/Columns.edit.display.js +1 -1
  26. package/lib/cjs/components/editgrid/EditGrid.js +11 -4
  27. package/lib/cjs/components/form/Form.js +3 -1
  28. package/lib/cjs/components/html/HTML.js +2 -2
  29. package/lib/cjs/components/html/fixtures/comp3.js +31 -0
  30. package/lib/cjs/components/html/fixtures/index.js +3 -1
  31. package/lib/cjs/components/radio/Radio.js +2 -1
  32. package/lib/cjs/components/radio/fixtures/comp10.js +23 -0
  33. package/lib/cjs/components/radio/fixtures/index.js +3 -1
  34. package/lib/cjs/components/recaptcha/ReCaptcha.js +3 -0
  35. package/lib/cjs/components/select/Select.js +84 -9
  36. package/lib/cjs/components/survey/Survey.js +10 -0
  37. package/lib/cjs/utils/conditionOperators/IsEqualTo.js +19 -1
  38. package/lib/cjs/utils/conditionOperators/IsNotEqualTo.js +4 -5
  39. package/lib/cjs/utils/utils.js +40 -2
  40. package/lib/mjs/Element.js +2 -2
  41. package/lib/mjs/components/_classes/component/Component.js +24 -8
  42. package/lib/mjs/components/_classes/component/fixtures/comp5.js +2 -2
  43. package/lib/mjs/components/_classes/list/ListComponent.js +5 -12
  44. package/lib/mjs/components/_classes/nested/NestedComponent.js +17 -9
  45. package/lib/mjs/components/columns/editForm/Columns.edit.display.js +1 -1
  46. package/lib/mjs/components/editgrid/EditGrid.js +11 -4
  47. package/lib/mjs/components/form/Form.js +3 -1
  48. package/lib/mjs/components/html/HTML.js +2 -2
  49. package/lib/mjs/components/html/fixtures/comp3.js +29 -0
  50. package/lib/mjs/components/html/fixtures/index.js +2 -1
  51. package/lib/mjs/components/radio/Radio.js +2 -1
  52. package/lib/mjs/components/radio/fixtures/comp10.js +21 -0
  53. package/lib/mjs/components/radio/fixtures/index.js +2 -1
  54. package/lib/mjs/components/recaptcha/ReCaptcha.js +3 -0
  55. package/lib/mjs/components/select/Select.js +83 -10
  56. package/lib/mjs/components/survey/Survey.js +10 -0
  57. package/lib/mjs/utils/conditionOperators/IsEqualTo.js +18 -1
  58. package/lib/mjs/utils/conditionOperators/IsNotEqualTo.js +4 -5
  59. package/lib/mjs/utils/utils.js +35 -0
  60. package/package.json +2 -2
  61. package/types/formio.d.ts +4 -0
@@ -1,5 +1,6 @@
1
1
  import ConditionOperator from './ConditionOperator';
2
2
  import _ from 'lodash';
3
+ import { getItemTemplateKeys, isSelectResourceWithObjectValue } from '../utils';
3
4
  export default class IsEqualTo extends ConditionOperator {
4
5
  static get operatorKey() {
5
6
  return 'isEqual';
@@ -7,7 +8,7 @@ export default class IsEqualTo extends ConditionOperator {
7
8
  static get displayedName() {
8
9
  return 'Is Equal To';
9
10
  }
10
- execute({ value, comparedValue }) {
11
+ execute({ value, comparedValue, instance, conditionComponentPath }) {
11
12
  if (value && comparedValue && typeof value !== typeof comparedValue && _.isString(comparedValue)) {
12
13
  try {
13
14
  comparedValue = JSON.parse(comparedValue);
@@ -15,6 +16,22 @@ export default class IsEqualTo extends ConditionOperator {
15
16
  // eslint-disable-next-line no-empty
16
17
  catch (e) { }
17
18
  }
19
+ if (instance && instance.root) {
20
+ const conditionTriggerComponent = instance.root.getComponent(conditionComponentPath);
21
+ if (conditionTriggerComponent
22
+ && isSelectResourceWithObjectValue(conditionTriggerComponent.component)
23
+ && conditionTriggerComponent.component?.template) {
24
+ if (!value || !_.isPlainObject(value)) {
25
+ return false;
26
+ }
27
+ const { template, valueProperty } = conditionTriggerComponent.component;
28
+ if (valueProperty === 'data') {
29
+ value = { data: value };
30
+ comparedValue = { data: comparedValue };
31
+ }
32
+ return _.every(getItemTemplateKeys(template) || [], k => _.isEqual(_.get(value, k), _.get(comparedValue, k)));
33
+ }
34
+ }
18
35
  //special check for select boxes
19
36
  if (_.isObject(value) && comparedValue && _.isString(comparedValue)) {
20
37
  return value[comparedValue];
@@ -1,13 +1,12 @@
1
- import ConditionOperator from './ConditionOperator';
2
- import _ from 'lodash';
3
- export default class IsNotEqualTo extends ConditionOperator {
1
+ import IsEqualTo from './IsEqualTo';
2
+ export default class IsNotEqualTo extends IsEqualTo {
4
3
  static get operatorKey() {
5
4
  return 'isNotEqual';
6
5
  }
7
6
  static get displayedName() {
8
7
  return 'Is Not Equal To';
9
8
  }
10
- execute({ value, comparedValue }) {
11
- return !_.isEqual(value, comparedValue);
9
+ execute(options) {
10
+ return !super.execute(options);
12
11
  }
13
12
  }
@@ -394,6 +394,21 @@ export function unescapeHTML(str) {
394
394
  const doc = new window.DOMParser().parseFromString(str, 'text/html');
395
395
  return doc.documentElement.textContent;
396
396
  }
397
+ /**
398
+ * Escape HTML characters like <, >, & and etc.
399
+ * @param str
400
+ * @returns {string}
401
+ */
402
+ export function escapeHTML(html) {
403
+ if (html) {
404
+ return html.replace(/&/g, '&amp;')
405
+ .replace(/</g, '&lt;')
406
+ .replace(/>/g, '&gt;')
407
+ .replace(/"/g, '&quot;')
408
+ .replace(/'/g, '&#39;');
409
+ }
410
+ return '';
411
+ }
397
412
  /**
398
413
  * Make HTML element from string
399
414
  * @param str
@@ -1407,3 +1422,23 @@ export const interpolateErrors = (component, errors, interpolateFn) => {
1407
1422
  return { ...error, message: unescapeHTML(interpolateFn(toInterpolate, context)), context: { ...context } };
1408
1423
  });
1409
1424
  };
1425
+ export function getItemTemplateKeys(template) {
1426
+ const templateKeys = [];
1427
+ if (!template) {
1428
+ return templateKeys;
1429
+ }
1430
+ const keys = template.match(/({{\s*(.*?)\s*}})/g);
1431
+ if (keys) {
1432
+ keys.forEach((key) => {
1433
+ const propKey = key.match(/{{\s*item\.(.*?)\s*}}/);
1434
+ if (propKey && propKey.length > 1) {
1435
+ templateKeys.push(propKey[1]);
1436
+ }
1437
+ });
1438
+ }
1439
+ return templateKeys;
1440
+ }
1441
+ export function isSelectResourceWithObjectValue(comp = {}) {
1442
+ const { reference, dataSrc, valueProperty } = comp;
1443
+ return reference || (dataSrc === 'resource' && (!valueProperty || valueProperty === 'data'));
1444
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@formio/js",
3
- "version": "5.0.0-rc.37",
3
+ "version": "5.0.0-rc.38",
4
4
  "description": "JavaScript powered Forms with JSON Form Builder",
5
5
  "main": "lib/cjs/index.js",
6
6
  "exports": {
@@ -86,7 +86,7 @@
86
86
  "dependencies": {
87
87
  "@formio/bootstrap": "^3.0.0-rc.20",
88
88
  "@formio/choices.js": "^10.2.0",
89
- "@formio/core": "^2.0.0-rc.2",
89
+ "@formio/core": "^2.0.0-rc.6",
90
90
  "@formio/text-mask-addons": "^3.8.0-formio.2",
91
91
  "@formio/vanilla-text-mask": "^5.1.1-formio.1",
92
92
  "abortcontroller-polyfill": "^1.7.5",
package/types/formio.d.ts CHANGED
@@ -159,6 +159,10 @@ export declare class Formio {
159
159
  * Stores all of the libraries lazy loaded with ```Formio.requireLibrary``` method.
160
160
  */
161
161
  static libraries: any;
162
+ /**
163
+ * The Library license for this application.
164
+ */
165
+ static license: string;
162
166
  /**
163
167
  * A direct interface to the Form.io fetch polyfill.
164
168
  */