@oneblink/apps-react 13.0.0-beta.12 → 13.0.0-beta.13

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.
@@ -1,6 +1,76 @@
1
+ import { getGeneratedByFormElementId } from '../services/dynamic-elements';
1
2
  export function checkIsFormElementIdEditable(element, editableFormElementIds) {
2
3
  return (editableFormElementIds === null || editableFormElementIds === void 0 ? void 0 : editableFormElementIds.includes(element.id)) === true;
3
4
  }
5
+ /**
6
+ * Returns the editable ids to provide while rendering or validating a nested
7
+ * form. Nested forms get their own whitelist so an id reused by the parent form
8
+ * cannot unlock a nested element (or vice versa).
9
+ *
10
+ * Selecting the nested form itself makes all of its descendants editable.
11
+ */
12
+ export function getNestedEditableFormElementIds(formElement, editableFormElementIds) {
13
+ if (editableFormElementIds === undefined) {
14
+ return undefined;
15
+ }
16
+ if (!editableFormElementIds.includes(formElement.id)) {
17
+ return [];
18
+ }
19
+ const nestedIds = new Set();
20
+ const addIds = (elements) => {
21
+ for (const element of elements) {
22
+ nestedIds.add(element.id);
23
+ if ('elements' in element && Array.isArray(element.elements)) {
24
+ addIds(element.elements);
25
+ }
26
+ }
27
+ };
28
+ addIds(formElement.elements || []);
29
+ return [...nestedIds];
30
+ }
31
+ /**
32
+ * Expands a whitelist to cover the elements a lookup has injected into the
33
+ * form. An element naming an editable id in `injectedByElementId` becomes
34
+ * editable, as do its descendants, so an approver can correct answers that only
35
+ * appeared after a lookup they are allowed to re-run. A dynamic element is
36
+ * included whenever the element it was generated from is editable, since it
37
+ * sits beside that element rather than within it.
38
+ *
39
+ * Only applies to the root whitelist; ids inside a nested form are scoped by
40
+ * `getNestedEditableFormElementIds`. Returns `undefined` when no whitelist was
41
+ * provided, matching the “everything is editable” convention used by the rest
42
+ * of these helpers.
43
+ */
44
+ export function expandEditableFormElementIds(editableFormElementIds, formElements) {
45
+ if (editableFormElementIds === undefined) {
46
+ return undefined;
47
+ }
48
+ const expanded = new Set(editableFormElementIds);
49
+ const addInjected = (elements, isWithinInjectedElement = false) => {
50
+ for (const element of elements) {
51
+ const injectedByElementId = getInjectedByElementId(element);
52
+ const generatedByFormElementId = getGeneratedByFormElementId(element);
53
+ const isInjected = isWithinInjectedElement ||
54
+ (injectedByElementId !== undefined && expanded.has(injectedByElementId));
55
+ if (isInjected ||
56
+ (generatedByFormElementId !== undefined &&
57
+ expanded.has(generatedByFormElementId))) {
58
+ expanded.add(element.id);
59
+ }
60
+ if ('elements' in element && Array.isArray(element.elements)) {
61
+ addInjected(element.elements, isInjected);
62
+ }
63
+ }
64
+ };
65
+ addInjected(formElements);
66
+ return [...expanded];
67
+ }
68
+ function getInjectedByElementId(element) {
69
+ if ('injectedByElementId' in element &&
70
+ typeof element.injectedByElementId === 'string') {
71
+ return element.injectedByElementId;
72
+ }
73
+ }
4
74
  function checkHasEditableFormElement(elements, editableFormElementIds) {
5
75
  return elements.some((element) => checkIsFormElementIdEditable(element, editableFormElementIds) ||
6
76
  ('elements' in element &&
@@ -1 +1 @@
1
- {"version":3,"file":"read-only-form-elements.js","sourceRoot":"","sources":["../../src/utils/read-only-form-elements.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,4BAA4B,CAC1C,OAAmC,EACnC,sBAAiC;IAEjC,OAAO,CAAA,sBAAsB,aAAtB,sBAAsB,uBAAtB,sBAAsB,CAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAK,IAAI,CAAA;AAC9D,CAAC;AAED,SAAS,2BAA2B,CAClC,QAAiC,EACjC,sBAAiC;IAEjC,OAAO,QAAQ,CAAC,IAAI,CAClB,CAAC,OAAO,EAAE,EAAE,CACV,4BAA4B,CAAC,OAAO,EAAE,sBAAsB,CAAC;QAC7D,CAAC,UAAU,IAAI,OAAO;YACpB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC/B,2BAA2B,CACzB,OAAO,CAAC,QAAQ,EAChB,sBAAsB,CACvB,CAAC,CACP,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAAmC,EACnC,sBAAiC;IAEjC,IAAI,sBAAsB,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,CACL,4BAA4B,CAAC,OAAO,EAAE,sBAAsB,CAAC;QAC7D,CAAC,UAAU,IAAI,OAAO;YACpB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC/B,2BAA2B,CAAC,OAAO,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CACzE,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAAmC,EACnC,EACE,cAAc,EACd,mBAAmB,EACnB,sBAAsB,MAKpB,EAAE;IAEN,IAAI,4BAA4B,CAAC,OAAO,EAAE,sBAAsB,CAAC,EAAE,CAAC;QAClE,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,sBAAsB,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,cAAc,IAAI,mBAAmB,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,UAAU,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAA;AAC3D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAmC,EACnC,EACE,cAAc,EACd,sBAAsB,MAIpB,EAAE;IAEN,IAAI,4BAA4B,CAAC,OAAO,EAAE,sBAAsB,CAAC,EAAE,CAAC;QAClE,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,sBAAsB,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,cAAc,KAAK,IAAI,CAAA;AAChC,CAAC","sourcesContent":["import { FormTypes } from '@oneblink/types'\r\n\r\ntype FormElementWithEditability =\r\n | FormTypes.FormElement\r\n | FormTypes.LookupFormElement\r\n\r\nexport function checkIsFormElementIdEditable(\r\n element: FormElementWithEditability,\r\n editableFormElementIds?: string[],\r\n): boolean {\r\n return editableFormElementIds?.includes(element.id) === true\r\n}\r\n\r\nfunction checkHasEditableFormElement(\r\n elements: FormTypes.FormElement[],\r\n editableFormElementIds?: string[],\r\n): boolean {\r\n return elements.some(\r\n (element) =>\r\n checkIsFormElementIdEditable(element, editableFormElementIds) ||\r\n ('elements' in element &&\r\n Array.isArray(element.elements) &&\r\n checkHasEditableFormElement(\r\n element.elements,\r\n editableFormElementIds,\r\n )),\r\n )\r\n}\r\n\r\n/**\r\n * Whether this element, or anything nested inside it, can be changed.\r\n *\r\n * When `editableFormElementIds` is omitted, every element is treated as\r\n * editable. When it is provided, only listed ids and containers that wrap them\r\n * are editable. Used to skip validating what the user has no way to correct.\r\n */\r\nexport function checkIsFormElementEditable(\r\n element: FormElementWithEditability,\r\n editableFormElementIds?: string[],\r\n): boolean {\r\n if (editableFormElementIds === undefined) {\r\n return true\r\n }\r\n\r\n return (\r\n checkIsFormElementIdEditable(element, editableFormElementIds) ||\r\n ('elements' in element &&\r\n Array.isArray(element.elements) &&\r\n checkHasEditableFormElement(element.elements, editableFormElementIds))\r\n )\r\n}\r\n\r\n/**\r\n * Whether a form element’s own controls should be locked.\r\n *\r\n * An id in `editableFormElementIds` always wins. When that list is provided,\r\n * every other element is locked (whitelist). Otherwise the whole-form read-only\r\n * flag and the element’s own `readOnly` apply.\r\n */\r\nexport function checkIsFormElementReadOnly(\r\n element: FormElementWithEditability,\r\n {\r\n isFormReadOnly,\r\n isInheritedReadOnly,\r\n editableFormElementIds,\r\n }: {\r\n isFormReadOnly?: boolean\r\n isInheritedReadOnly?: boolean\r\n editableFormElementIds?: string[]\r\n } = {},\r\n): boolean {\r\n if (checkIsFormElementIdEditable(element, editableFormElementIds)) {\r\n return false\r\n }\r\n\r\n if (editableFormElementIds !== undefined) {\r\n return true\r\n }\r\n\r\n if (isFormReadOnly || isInheritedReadOnly) {\r\n return true\r\n }\r\n\r\n return 'readOnly' in element && element.readOnly === true\r\n}\r\n\r\n/**\r\n * Whether lookups (and reverse geocode) must not run for this element.\r\n *\r\n * Definition `readOnly` and inherited container locks still allow submitter\r\n * lookups from prefills, defaults, and chained lookup buttons. Lookups are\r\n * blocked on a read-only form, or when a whitelist is provided and this id is\r\n * not on it (an approver must not re-run a lookup that could overwrite\r\n * persisted answers). An id in the whitelist always wins.\r\n */\r\nexport function checkAreLookupsDisallowed(\r\n element: FormElementWithEditability,\r\n {\r\n isFormReadOnly,\r\n editableFormElementIds,\r\n }: {\r\n isFormReadOnly?: boolean\r\n editableFormElementIds?: string[]\r\n } = {},\r\n): boolean {\r\n if (checkIsFormElementIdEditable(element, editableFormElementIds)) {\r\n return false\r\n }\r\n\r\n if (editableFormElementIds !== undefined) {\r\n return true\r\n }\r\n\r\n return isFormReadOnly === true\r\n}\r\n"]}
1
+ {"version":3,"file":"read-only-form-elements.js","sourceRoot":"","sources":["../../src/utils/read-only-form-elements.ts"],"names":[],"mappings":"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","sourcesContent":["import { FormTypes } from '@oneblink/types'\nimport { getGeneratedByFormElementId } from '../services/dynamic-elements'\n\ntype FormElementWithEditability =\n | FormTypes.FormElement\n | FormTypes.LookupFormElement\n\nexport function checkIsFormElementIdEditable(\n element: FormElementWithEditability,\n editableFormElementIds?: string[],\n): boolean {\n return editableFormElementIds?.includes(element.id) === true\n}\n\n/**\n * Returns the editable ids to provide while rendering or validating a nested\n * form. Nested forms get their own whitelist so an id reused by the parent form\n * cannot unlock a nested element (or vice versa).\n *\n * Selecting the nested form itself makes all of its descendants editable.\n */\nexport function getNestedEditableFormElementIds(\n formElement: FormTypes.FormFormElement,\n editableFormElementIds: string[] | undefined,\n): string[] | undefined {\n if (editableFormElementIds === undefined) {\n return undefined\n }\n\n if (!editableFormElementIds.includes(formElement.id)) {\n return []\n }\n\n const nestedIds = new Set<string>()\n const addIds = (elements: FormTypes.FormElement[]) => {\n for (const element of elements) {\n nestedIds.add(element.id)\n if ('elements' in element && Array.isArray(element.elements)) {\n addIds(element.elements)\n }\n }\n }\n addIds(formElement.elements || [])\n return [...nestedIds]\n}\n\n/**\n * Expands a whitelist to cover the elements a lookup has injected into the\n * form. An element naming an editable id in `injectedByElementId` becomes\n * editable, as do its descendants, so an approver can correct answers that only\n * appeared after a lookup they are allowed to re-run. A dynamic element is\n * included whenever the element it was generated from is editable, since it\n * sits beside that element rather than within it.\n *\n * Only applies to the root whitelist; ids inside a nested form are scoped by\n * `getNestedEditableFormElementIds`. Returns `undefined` when no whitelist was\n * provided, matching the “everything is editable” convention used by the rest\n * of these helpers.\n */\nexport function expandEditableFormElementIds(\n editableFormElementIds: string[] | undefined,\n formElements: FormTypes.FormElement[],\n): string[] | undefined {\n if (editableFormElementIds === undefined) {\n return undefined\n }\n\n const expanded = new Set(editableFormElementIds)\n\n const addInjected = (\n elements: FormTypes.FormElement[],\n isWithinInjectedElement = false,\n ) => {\n for (const element of elements) {\n const injectedByElementId = getInjectedByElementId(element)\n const generatedByFormElementId = getGeneratedByFormElementId(element)\n const isInjected =\n isWithinInjectedElement ||\n (injectedByElementId !== undefined && expanded.has(injectedByElementId))\n\n if (\n isInjected ||\n (generatedByFormElementId !== undefined &&\n expanded.has(generatedByFormElementId))\n ) {\n expanded.add(element.id)\n }\n\n if ('elements' in element && Array.isArray(element.elements)) {\n addInjected(element.elements, isInjected)\n }\n }\n }\n addInjected(formElements)\n\n return [...expanded]\n}\n\nfunction getInjectedByElementId(\n element: FormTypes.FormElement,\n): string | undefined {\n if (\n 'injectedByElementId' in element &&\n typeof element.injectedByElementId === 'string'\n ) {\n return element.injectedByElementId\n }\n}\n\nfunction checkHasEditableFormElement(\n elements: FormTypes.FormElement[],\n editableFormElementIds?: string[],\n): boolean {\n return elements.some(\n (element) =>\n checkIsFormElementIdEditable(element, editableFormElementIds) ||\n ('elements' in element &&\n Array.isArray(element.elements) &&\n checkHasEditableFormElement(element.elements, editableFormElementIds)),\n )\n}\n\n/**\n * Whether this element, or anything nested inside it, can be changed.\n *\n * When `editableFormElementIds` is omitted, every element is treated as\n * editable. When it is provided, only listed ids and containers that wrap them\n * are editable. Used to skip validating what the user has no way to correct.\n */\nexport function checkIsFormElementEditable(\n element: FormElementWithEditability,\n editableFormElementIds?: string[],\n): boolean {\n if (editableFormElementIds === undefined) {\n return true\n }\n\n return (\n checkIsFormElementIdEditable(element, editableFormElementIds) ||\n ('elements' in element &&\n Array.isArray(element.elements) &&\n checkHasEditableFormElement(element.elements, editableFormElementIds))\n )\n}\n\n/**\n * Whether a form element’s own controls should be locked.\n *\n * An id in `editableFormElementIds` always wins. When that list is provided,\n * every other element is locked (whitelist). Otherwise the whole-form read-only\n * flag and the element’s own `readOnly` apply.\n */\nexport function checkIsFormElementReadOnly(\n element: FormElementWithEditability,\n {\n isFormReadOnly,\n isInheritedReadOnly,\n editableFormElementIds,\n }: {\n isFormReadOnly?: boolean\n isInheritedReadOnly?: boolean\n editableFormElementIds?: string[]\n } = {},\n): boolean {\n if (checkIsFormElementIdEditable(element, editableFormElementIds)) {\n return false\n }\n\n if (editableFormElementIds !== undefined) {\n return true\n }\n\n if (isFormReadOnly || isInheritedReadOnly) {\n return true\n }\n\n return 'readOnly' in element && element.readOnly === true\n}\n\n/**\n * Whether lookups (and reverse geocode) must not run for this element.\n *\n * Definition `readOnly` and inherited container locks still allow submitter\n * lookups from prefills, defaults, and chained lookup buttons. Lookups are\n * blocked on a read-only form, or when a whitelist is provided and this id is\n * not on it (an approver must not re-run a lookup that could overwrite\n * persisted answers). An id in the whitelist always wins.\n */\nexport function checkAreLookupsDisallowed(\n element: FormElementWithEditability,\n {\n isFormReadOnly,\n editableFormElementIds,\n }: {\n isFormReadOnly?: boolean\n editableFormElementIds?: string[]\n } = {},\n): boolean {\n if (checkIsFormElementIdEditable(element, editableFormElementIds)) {\n return false\n }\n\n if (editableFormElementIds !== undefined) {\n return true\n }\n\n return isFormReadOnly === true\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@oneblink/apps-react",
3
3
  "description": "Helper functions for OneBlink apps in ReactJS.",
4
- "version": "13.0.0-beta.12",
4
+ "version": "13.0.0-beta.13",
5
5
  "author": "OneBlink <developers@oneblink.io> (https://oneblink.io)",
6
6
  "bugs": {
7
7
  "url": "https://github.com/oneblink/apps-react/issues"