@oneblink/apps-react 1.2.1-beta.1 → 1.2.1-beta.2

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.
@@ -2,7 +2,7 @@ import { checkIsUsingLegacyStorage } from './attachments';
2
2
  function cleanElementValue(submission, elements, formElementsConditionallyShown, stripBinaryData, captchaTokens) {
3
3
  // Clear data from submission on fields that are hidden on visible pages
4
4
  return elements.reduce((model, element) => {
5
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
5
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
6
6
  switch (element.type) {
7
7
  // For content element types, we just need to set true for shown and false for hidden.
8
8
  // This is to allow renderers of the data to know when to show/hide the content
@@ -120,13 +120,33 @@ function cleanElementValue(submission, elements, formElementsConditionallyShown,
120
120
  }
121
121
  break;
122
122
  }
123
- case 'compliance': {
123
+ case 'freshdeskDependentField': {
124
124
  if (((_f = formElementsConditionallyShown === null || formElementsConditionallyShown === void 0 ? void 0 : formElementsConditionallyShown[element.name]) === null || _f === void 0 ? void 0 : _f.isHidden) ||
125
125
  !submission[element.name]) {
126
126
  break;
127
127
  }
128
+ const value = submission[element.name];
129
+ if (value === null || value === void 0 ? void 0 : value.category) {
130
+ const newValue = {
131
+ category: value.category,
132
+ };
133
+ if (value === null || value === void 0 ? void 0 : value.subCategory) {
134
+ newValue.subCategory = value === null || value === void 0 ? void 0 : value.subCategory;
135
+ if (value === null || value === void 0 ? void 0 : value.item) {
136
+ newValue.item = value === null || value === void 0 ? void 0 : value.item;
137
+ }
138
+ }
139
+ model[element.name] = newValue;
140
+ }
141
+ break;
142
+ }
143
+ case 'compliance': {
144
+ if (((_g = formElementsConditionallyShown === null || formElementsConditionallyShown === void 0 ? void 0 : formElementsConditionallyShown[element.name]) === null || _g === void 0 ? void 0 : _g.isHidden) ||
145
+ !submission[element.name]) {
146
+ break;
147
+ }
128
148
  const checklistObject = submission[element.name];
129
- const notes = (_g = checklistObject === null || checklistObject === void 0 ? void 0 : checklistObject.notes) === null || _g === void 0 ? void 0 : _g.trim();
149
+ const notes = (_h = checklistObject === null || checklistObject === void 0 ? void 0 : checklistObject.notes) === null || _h === void 0 ? void 0 : _h.trim();
130
150
  if (stripBinaryData) {
131
151
  model[element.name] = {
132
152
  ...checklistObject,
@@ -144,14 +164,14 @@ function cleanElementValue(submission, elements, formElementsConditionallyShown,
144
164
  }
145
165
  case 'page':
146
166
  case 'section': {
147
- if (!((_h = formElementsConditionallyShown === null || formElementsConditionallyShown === void 0 ? void 0 : formElementsConditionallyShown[element.id]) === null || _h === void 0 ? void 0 : _h.isHidden)) {
167
+ if (!((_j = formElementsConditionallyShown === null || formElementsConditionallyShown === void 0 ? void 0 : formElementsConditionallyShown[element.id]) === null || _j === void 0 ? void 0 : _j.isHidden)) {
148
168
  const nestedModel = cleanElementValue(submission, element.elements, formElementsConditionallyShown, stripBinaryData, captchaTokens);
149
169
  Object.assign(model, nestedModel);
150
170
  }
151
171
  break;
152
172
  }
153
173
  default: {
154
- if (!((_j = formElementsConditionallyShown === null || formElementsConditionallyShown === void 0 ? void 0 : formElementsConditionallyShown[element.name]) === null || _j === void 0 ? void 0 : _j.isHidden)) {
174
+ if (!((_k = formElementsConditionallyShown === null || formElementsConditionallyShown === void 0 ? void 0 : formElementsConditionallyShown[element.name]) === null || _k === void 0 ? void 0 : _k.isHidden)) {
155
175
  const value = submission[element.name];
156
176
  switch (element.type) {
157
177
  case 'text':
@@ -1 +1 @@
1
- {"version":3,"file":"cleanFormSubmissionModel.js","sourceRoot":"","sources":["../../src/services/cleanFormSubmissionModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { CivicaTypes, FormTypes, GeoscapeTypes } from '@oneblink/types'\nimport { Value as ComplianceValue } from '../form-elements/FormElementCompliance'\nimport {\n FormElementsConditionallyShown,\n FormSubmissionModel,\n} from '../types/form'\nimport { checkIsUsingLegacyStorage } from './attachments'\n\nfunction cleanElementValue(\n submission: FormSubmissionModel,\n elements: FormTypes.FormElement[],\n formElementsConditionallyShown: FormElementsConditionallyShown | undefined,\n stripBinaryData: boolean,\n captchaTokens: string[],\n): FormSubmissionModel {\n // Clear data from submission on fields that are hidden on visible pages\n return elements.reduce<FormSubmissionModel>((model, element) => {\n switch (element.type) {\n // For content element types, we just need to set true for shown and false for hidden.\n // This is to allow renderers of the data to know when to show/hide the content\n case 'image':\n case 'heading':\n case 'html': {\n if (\n !stripBinaryData &&\n !formElementsConditionallyShown?.[element.name]?.isHidden\n ) {\n model[element.name] = true\n }\n break\n }\n // Need to remove captcha tokens and save\n // them to POST them to the server for validation\n case 'captcha': {\n const token = submission[element.name]\n if (typeof token === 'string') {\n captchaTokens.push(token)\n }\n break\n }\n case 'files': {\n const value = submission[element.name] as\n | Array<Record<string, unknown>>\n | undefined\n const hasBinaryData =\n checkIsUsingLegacyStorage(element) ||\n (Array.isArray(value) &&\n value.some((attachment) => !!attachment.data))\n if (\n (!stripBinaryData || !hasBinaryData) &&\n !formElementsConditionallyShown?.[element.name]?.isHidden\n ) {\n model[element.name] = submission[element.name]\n }\n break\n }\n case 'camera':\n case 'draw': {\n const value = submission[element.name] as\n | Record<string, unknown>\n | undefined\n const hasBinaryData =\n checkIsUsingLegacyStorage(element) || !!value?.data\n if (\n (!stripBinaryData || !hasBinaryData) &&\n !formElementsConditionallyShown?.[element.name]?.isHidden\n ) {\n model[element.name] = submission[element.name]\n }\n break\n }\n case 'infoPage':\n case 'form': {\n // Here we will check to make sure that each embedded form\n // also has its values wiped if the element is hidden based on conditional logic\n const nestedElements = element.elements\n const nestedModel = submission[element.name] as\n | FormSubmissionModel\n | undefined\n const nestedFormElementConditionallyShown =\n formElementsConditionallyShown?.[element.name]\n if (\n !formElementsConditionallyShown?.[element.name]?.isHidden &&\n Array.isArray(nestedElements)\n ) {\n model[element.name] = cleanElementValue(\n nestedModel || {},\n nestedElements,\n nestedFormElementConditionallyShown?.type === 'formElements'\n ? nestedFormElementConditionallyShown.formElements\n : undefined,\n stripBinaryData,\n captchaTokens,\n )\n }\n break\n }\n case 'repeatableSet': {\n // Here we will check to make sure that each repeatable set entry\n // also has its values wiped if the element is hidden based on conditional logic\n const nestedElements = element.elements\n const entries = submission[element.name] as\n | Array<FormSubmissionModel>\n | undefined\n const formElementConditionallyShown =\n formElementsConditionallyShown?.[element.name]\n if (\n !formElementConditionallyShown?.isHidden &&\n Array.isArray(nestedElements) &&\n Array.isArray(entries) &&\n entries.length\n ) {\n model[element.name] = entries.map((entry, index) => {\n return cleanElementValue(\n entry || {},\n nestedElements,\n formElementConditionallyShown?.type === 'repeatableSet'\n ? formElementConditionallyShown.entries?.[index.toString()]\n : undefined,\n stripBinaryData,\n captchaTokens,\n )\n })\n }\n break\n }\n case 'civicaNameRecord': {\n const civicaNameRecord = submission[element.name] as\n | CivicaTypes.CivicaNameRecord\n | undefined\n if (\n formElementsConditionallyShown?.[element.name]?.isHidden ||\n !civicaNameRecord\n ) {\n break\n }\n\n for (const key in civicaNameRecord) {\n if (\n civicaNameRecord[key as keyof CivicaTypes.CivicaNameRecord] ===\n undefined\n ) {\n continue\n }\n\n if (\n !element.useGeoscapeAddressing ||\n !Array.isArray(civicaNameRecord.streetAddress)\n ) {\n model[element.name] = civicaNameRecord\n break\n }\n\n const streetAddresses = civicaNameRecord.streetAddress.map(\n (streetAddress) => {\n if (typeof streetAddress.address1 === 'object') {\n const geoscapeAddress = streetAddress.address1 as\n | GeoscapeTypes.GeoscapeAddress\n | undefined\n return {\n address1: [\n geoscapeAddress?.addressDetails?.streetNumber1,\n geoscapeAddress?.addressDetails?.streetName,\n geoscapeAddress?.addressDetails?.streetType,\n ]\n .filter((str) => !!str)\n .join(' '),\n address2: geoscapeAddress?.addressDetails?.localityName,\n postcode: geoscapeAddress?.addressDetails?.postcode,\n }\n }\n return streetAddress\n },\n )\n model[element.name] = {\n ...civicaNameRecord,\n streetAddress: streetAddresses,\n }\n }\n break\n }\n case 'compliance': {\n if (\n formElementsConditionallyShown?.[element.name]?.isHidden ||\n !submission[element.name]\n ) {\n break\n }\n const checklistObject = submission[element.name] as ComplianceValue\n const notes = checklistObject?.notes?.trim()\n if (stripBinaryData) {\n model[element.name] = {\n ...checklistObject,\n notes: notes,\n files: undefined,\n }\n } else {\n model[element.name] = {\n ...checklistObject,\n notes: notes,\n }\n }\n break\n }\n case 'page':\n case 'section': {\n if (!formElementsConditionallyShown?.[element.id]?.isHidden) {\n const nestedModel = cleanElementValue(\n submission,\n element.elements,\n formElementsConditionallyShown,\n stripBinaryData,\n captchaTokens,\n )\n Object.assign(model, nestedModel)\n }\n break\n }\n default: {\n if (!formElementsConditionallyShown?.[element.name]?.isHidden) {\n const value = submission[element.name]\n switch (element.type) {\n case 'text':\n case 'textarea':\n case 'email':\n case 'barcodeScanner':\n case 'telephone': {\n model[element.name] =\n typeof value === 'string'\n ? value.trim()\n : submission[element.name]\n break\n }\n default: {\n model[element.name] = value\n }\n }\n }\n }\n }\n\n return model\n }, {})\n}\n\nexport default function cleanFormSubmissionModel(\n submission: FormSubmissionModel,\n elements: FormTypes.FormElement[],\n formElementsConditionallyShown: FormElementsConditionallyShown | undefined,\n stripBinaryData: boolean,\n): {\n model: FormSubmissionModel\n captchaTokens: string[]\n} {\n // Clear data from submission on fields that are hidden on visible pages\n const captchaTokens: string[] = []\n const model = cleanElementValue(\n submission,\n elements,\n formElementsConditionallyShown,\n stripBinaryData,\n captchaTokens,\n )\n return {\n model,\n captchaTokens,\n }\n}\n"]}
1
+ {"version":3,"file":"cleanFormSubmissionModel.js","sourceRoot":"","sources":["../../src/services/cleanFormSubmissionModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { CivicaTypes, FormTypes, GeoscapeTypes } from '@oneblink/types'\nimport { Value as ComplianceValue } from '../form-elements/FormElementCompliance'\nimport {\n FormElementsConditionallyShown,\n FormSubmissionModel,\n} from '../types/form'\nimport { checkIsUsingLegacyStorage } from './attachments'\n\nfunction cleanElementValue(\n submission: FormSubmissionModel,\n elements: FormTypes.FormElement[],\n formElementsConditionallyShown: FormElementsConditionallyShown | undefined,\n stripBinaryData: boolean,\n captchaTokens: string[],\n): FormSubmissionModel {\n // Clear data from submission on fields that are hidden on visible pages\n return elements.reduce<FormSubmissionModel>((model, element) => {\n switch (element.type) {\n // For content element types, we just need to set true for shown and false for hidden.\n // This is to allow renderers of the data to know when to show/hide the content\n case 'image':\n case 'heading':\n case 'html': {\n if (\n !stripBinaryData &&\n !formElementsConditionallyShown?.[element.name]?.isHidden\n ) {\n model[element.name] = true\n }\n break\n }\n // Need to remove captcha tokens and save\n // them to POST them to the server for validation\n case 'captcha': {\n const token = submission[element.name]\n if (typeof token === 'string') {\n captchaTokens.push(token)\n }\n break\n }\n case 'files': {\n const value = submission[element.name] as\n | Array<Record<string, unknown>>\n | undefined\n const hasBinaryData =\n checkIsUsingLegacyStorage(element) ||\n (Array.isArray(value) &&\n value.some((attachment) => !!attachment.data))\n if (\n (!stripBinaryData || !hasBinaryData) &&\n !formElementsConditionallyShown?.[element.name]?.isHidden\n ) {\n model[element.name] = submission[element.name]\n }\n break\n }\n case 'camera':\n case 'draw': {\n const value = submission[element.name] as\n | Record<string, unknown>\n | undefined\n const hasBinaryData =\n checkIsUsingLegacyStorage(element) || !!value?.data\n if (\n (!stripBinaryData || !hasBinaryData) &&\n !formElementsConditionallyShown?.[element.name]?.isHidden\n ) {\n model[element.name] = submission[element.name]\n }\n break\n }\n case 'infoPage':\n case 'form': {\n // Here we will check to make sure that each embedded form\n // also has its values wiped if the element is hidden based on conditional logic\n const nestedElements = element.elements\n const nestedModel = submission[element.name] as\n | FormSubmissionModel\n | undefined\n const nestedFormElementConditionallyShown =\n formElementsConditionallyShown?.[element.name]\n if (\n !formElementsConditionallyShown?.[element.name]?.isHidden &&\n Array.isArray(nestedElements)\n ) {\n model[element.name] = cleanElementValue(\n nestedModel || {},\n nestedElements,\n nestedFormElementConditionallyShown?.type === 'formElements'\n ? nestedFormElementConditionallyShown.formElements\n : undefined,\n stripBinaryData,\n captchaTokens,\n )\n }\n break\n }\n case 'repeatableSet': {\n // Here we will check to make sure that each repeatable set entry\n // also has its values wiped if the element is hidden based on conditional logic\n const nestedElements = element.elements\n const entries = submission[element.name] as\n | Array<FormSubmissionModel>\n | undefined\n const formElementConditionallyShown =\n formElementsConditionallyShown?.[element.name]\n if (\n !formElementConditionallyShown?.isHidden &&\n Array.isArray(nestedElements) &&\n Array.isArray(entries) &&\n entries.length\n ) {\n model[element.name] = entries.map((entry, index) => {\n return cleanElementValue(\n entry || {},\n nestedElements,\n formElementConditionallyShown?.type === 'repeatableSet'\n ? formElementConditionallyShown.entries?.[index.toString()]\n : undefined,\n stripBinaryData,\n captchaTokens,\n )\n })\n }\n break\n }\n case 'civicaNameRecord': {\n const civicaNameRecord = submission[element.name] as\n | CivicaTypes.CivicaNameRecord\n | undefined\n if (\n formElementsConditionallyShown?.[element.name]?.isHidden ||\n !civicaNameRecord\n ) {\n break\n }\n\n for (const key in civicaNameRecord) {\n if (\n civicaNameRecord[key as keyof CivicaTypes.CivicaNameRecord] ===\n undefined\n ) {\n continue\n }\n\n if (\n !element.useGeoscapeAddressing ||\n !Array.isArray(civicaNameRecord.streetAddress)\n ) {\n model[element.name] = civicaNameRecord\n break\n }\n\n const streetAddresses = civicaNameRecord.streetAddress.map(\n (streetAddress) => {\n if (typeof streetAddress.address1 === 'object') {\n const geoscapeAddress = streetAddress.address1 as\n | GeoscapeTypes.GeoscapeAddress\n | undefined\n return {\n address1: [\n geoscapeAddress?.addressDetails?.streetNumber1,\n geoscapeAddress?.addressDetails?.streetName,\n geoscapeAddress?.addressDetails?.streetType,\n ]\n .filter((str) => !!str)\n .join(' '),\n address2: geoscapeAddress?.addressDetails?.localityName,\n postcode: geoscapeAddress?.addressDetails?.postcode,\n }\n }\n return streetAddress\n },\n )\n model[element.name] = {\n ...civicaNameRecord,\n streetAddress: streetAddresses,\n }\n }\n break\n }\n case 'freshdeskDependentField': {\n if (\n formElementsConditionallyShown?.[element.name]?.isHidden ||\n !submission[element.name]\n ) {\n break\n }\n const value = submission[\n element.name\n ] as FormTypes.FreshdeskDependentFieldElementValue\n if (value?.category) {\n const newValue: FormTypes.FreshdeskDependentFieldElementValue = {\n category: value.category,\n }\n if (value?.subCategory) {\n newValue.subCategory = value?.subCategory\n if (value?.item) {\n newValue.item = value?.item\n }\n }\n model[element.name] = newValue\n }\n break\n }\n case 'compliance': {\n if (\n formElementsConditionallyShown?.[element.name]?.isHidden ||\n !submission[element.name]\n ) {\n break\n }\n const checklistObject = submission[element.name] as ComplianceValue\n const notes = checklistObject?.notes?.trim()\n if (stripBinaryData) {\n model[element.name] = {\n ...checklistObject,\n notes: notes,\n files: undefined,\n }\n } else {\n model[element.name] = {\n ...checklistObject,\n notes: notes,\n }\n }\n break\n }\n case 'page':\n case 'section': {\n if (!formElementsConditionallyShown?.[element.id]?.isHidden) {\n const nestedModel = cleanElementValue(\n submission,\n element.elements,\n formElementsConditionallyShown,\n stripBinaryData,\n captchaTokens,\n )\n Object.assign(model, nestedModel)\n }\n break\n }\n default: {\n if (!formElementsConditionallyShown?.[element.name]?.isHidden) {\n const value = submission[element.name]\n switch (element.type) {\n case 'text':\n case 'textarea':\n case 'email':\n case 'barcodeScanner':\n case 'telephone': {\n model[element.name] =\n typeof value === 'string'\n ? value.trim()\n : submission[element.name]\n break\n }\n default: {\n model[element.name] = value\n }\n }\n }\n }\n }\n\n return model\n }, {})\n}\n\nexport default function cleanFormSubmissionModel(\n submission: FormSubmissionModel,\n elements: FormTypes.FormElement[],\n formElementsConditionallyShown: FormElementsConditionallyShown | undefined,\n stripBinaryData: boolean,\n): {\n model: FormSubmissionModel\n captchaTokens: string[]\n} {\n // Clear data from submission on fields that are hidden on visible pages\n const captchaTokens: string[] = []\n const model = cleanElementValue(\n submission,\n elements,\n formElementsConditionallyShown,\n stripBinaryData,\n captchaTokens,\n )\n return {\n model,\n captchaTokens,\n }\n}\n"]}
@@ -37,27 +37,34 @@ export default function generateFreshdeskDependentFieldElements(element, value)
37
37
  defaultValue: (_a = element.defaultValue) === null || _a === void 0 ? void 0 : _a.category,
38
38
  options: element.options,
39
39
  };
40
- const subCategoryOptions = getNestedOptions(element.options, value === null || value === void 0 ? void 0 : value.category);
41
- const subCategoryElement = {
42
- ...createFormElement(),
43
- name: 'subCategory',
44
- required: element.required,
45
- readOnly: element.readOnly,
46
- label: element.subCategoryLabel,
47
- hint: element.subCategoryHint,
48
- defaultValue: (_b = element.defaultValue) === null || _b === void 0 ? void 0 : _b.subCategory,
49
- options: subCategoryOptions,
50
- };
51
- const itemElement = {
52
- ...createFormElement(),
53
- name: 'item',
54
- required: element.required,
55
- readOnly: element.readOnly,
56
- label: element.itemLabel,
57
- hint: element.itemHint,
58
- defaultValue: (_c = element.defaultValue) === null || _c === void 0 ? void 0 : _c.item,
59
- options: getNestedOptions(subCategoryOptions, value === null || value === void 0 ? void 0 : value.subCategory),
60
- };
61
- return [categoryElement, subCategoryElement, itemElement];
40
+ const formElements = [categoryElement];
41
+ if (value === null || value === void 0 ? void 0 : value.category) {
42
+ const subCategoryOptions = getNestedOptions(element.options, value === null || value === void 0 ? void 0 : value.category);
43
+ const subCategoryElement = {
44
+ ...createFormElement(),
45
+ name: 'subCategory',
46
+ required: element.required,
47
+ readOnly: element.readOnly,
48
+ label: element.subCategoryLabel,
49
+ hint: element.subCategoryHint,
50
+ defaultValue: (_b = element.defaultValue) === null || _b === void 0 ? void 0 : _b.subCategory,
51
+ options: subCategoryOptions,
52
+ };
53
+ formElements.push(subCategoryElement);
54
+ if (value === null || value === void 0 ? void 0 : value.subCategory) {
55
+ const itemElement = {
56
+ ...createFormElement(),
57
+ name: 'item',
58
+ required: element.required,
59
+ readOnly: element.readOnly,
60
+ label: element.itemLabel,
61
+ hint: element.itemHint,
62
+ defaultValue: (_c = element.defaultValue) === null || _c === void 0 ? void 0 : _c.item,
63
+ options: getNestedOptions(subCategoryOptions, value === null || value === void 0 ? void 0 : value.subCategory),
64
+ };
65
+ formElements.push(itemElement);
66
+ }
67
+ }
68
+ return formElements;
62
69
  }
63
70
  //# sourceMappingURL=generateFreshdeskDependentFieldElements.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateFreshdeskDependentFieldElements.js","sourceRoot":"","sources":["../../src/services/generateFreshdeskDependentFieldElements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAA;AAGjC,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,CAAC;IAC/B,EAAE,EAAE,IAAI,EAAE;IACV,IAAI,EAAE,QAAiB;IACvB,KAAK,EAAE,KAAK;IACZ,WAAW,EAAE,iBAA0B;IACvC,iBAAiB,EAAE,KAAK;IACxB,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,QAAQ,EAAE,KAAK;IACf,sCAAsC,EAAE,KAAK;CAC9C,CAAC,CAAA;AAEF,SAAS,gBAAgB,CACvB,aAA0D,EAC1D,WAA+B;IAE/B,MAAM,oBAAoB,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,CAC9C,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,KAAK,WAAW,CACrD,CAAA;IACD,IAAI,aAAa,EAAE;QACjB,IAAI,oBAAoB,EAAE;YACxB,OAAO,oBAAoB,CAAC,OAA0C,CAAA;SACvE;aAAM;YACL,OAAO,aAAa,CAAC,MAAM,CACzB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;gBAChB,GAAG,IAAI;gBACP,GAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAqC;aAC/D,EACD,EAAE,CACH,CAAA;SACF;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,uCAAuC,CAC7D,OAAiD,EACjD,KAAgE;;IAEhE,MAAM,eAAe,GAA4B;QAC/C,GAAG,iBAAiB,EAAE;QACtB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,YAAY,EAAE,MAAA,OAAO,CAAC,YAAY,0CAAE,QAAQ;QAC5C,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAA;IAED,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAC,CAAA;IAC7E,MAAM,kBAAkB,GAA4B;QAClD,GAAG,iBAAiB,EAAE;QACtB,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,gBAAgB;QAC/B,IAAI,EAAE,OAAO,CAAC,eAAe;QAC7B,YAAY,EAAE,MAAA,OAAO,CAAC,YAAY,0CAAE,WAAW;QAC/C,OAAO,EAAE,kBAAkB;KAC5B,CAAA;IAED,MAAM,WAAW,GAA4B;QAC3C,GAAG,iBAAiB,EAAE;QACtB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,SAAS;QACxB,IAAI,EAAE,OAAO,CAAC,QAAQ;QACtB,YAAY,EAAE,MAAA,OAAO,CAAC,YAAY,0CAAE,IAAI;QACxC,OAAO,EAAE,gBAAgB,CAAC,kBAAkB,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,CAAC;KAClE,CAAA;IAED,OAAO,CAAC,eAAe,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAA;AAC3D,CAAC","sourcesContent":["import { v4 as uuid } from 'uuid'\nimport { FormTypes } from '@oneblink/types'\n\nconst createFormElement = () => ({\n id: uuid(),\n type: 'select' as const,\n multi: false,\n optionsType: 'FRESHDESK_FIELD' as const,\n conditionallyShow: false,\n isDataLookup: false,\n isElementLookup: false,\n required: false,\n requiresAllConditionallyShowPredicates: false,\n})\n\nfunction getNestedOptions(\n parentOptions: FormTypes.ChoiceElementOption[] | undefined,\n parentValue: string | undefined,\n): FormTypes.ChoiceElementOption[] | undefined {\n const selectedParentOption = parentOptions?.find(\n (parentOption) => parentOption.value === parentValue,\n )\n if (parentOptions) {\n if (selectedParentOption) {\n return selectedParentOption.options as FormTypes.ChoiceElementOption[]\n } else {\n return parentOptions.reduce<FormTypes.ChoiceElementOption[]>(\n (memo, option) => [\n ...memo,\n ...((option.options || []) as FormTypes.ChoiceElementOption[]),\n ],\n [],\n )\n }\n }\n return undefined\n}\n\nexport default function generateFreshdeskDependentFieldElements(\n element: FormTypes.FreshdeskDependentFieldElement,\n value: FormTypes.FreshdeskDependentFieldElementValue | undefined,\n): FormTypes.FormElement[] {\n const categoryElement: FormTypes.SelectElement = {\n ...createFormElement(),\n name: 'category',\n required: element.required,\n readOnly: element.readOnly,\n label: element.label,\n hint: element.hint,\n defaultValue: element.defaultValue?.category,\n options: element.options,\n }\n\n const subCategoryOptions = getNestedOptions(element.options, value?.category)\n const subCategoryElement: FormTypes.SelectElement = {\n ...createFormElement(),\n name: 'subCategory',\n required: element.required,\n readOnly: element.readOnly,\n label: element.subCategoryLabel,\n hint: element.subCategoryHint,\n defaultValue: element.defaultValue?.subCategory,\n options: subCategoryOptions,\n }\n\n const itemElement: FormTypes.SelectElement = {\n ...createFormElement(),\n name: 'item',\n required: element.required,\n readOnly: element.readOnly,\n label: element.itemLabel,\n hint: element.itemHint,\n defaultValue: element.defaultValue?.item,\n options: getNestedOptions(subCategoryOptions, value?.subCategory),\n }\n\n return [categoryElement, subCategoryElement, itemElement]\n}\n"]}
1
+ {"version":3,"file":"generateFreshdeskDependentFieldElements.js","sourceRoot":"","sources":["../../src/services/generateFreshdeskDependentFieldElements.ts"],"names":[],"mappings":"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","sourcesContent":["import { v4 as uuid } from 'uuid'\nimport { FormTypes } from '@oneblink/types'\n\nconst createFormElement = () => ({\n id: uuid(),\n type: 'select' as const,\n multi: false,\n optionsType: 'FRESHDESK_FIELD' as const,\n conditionallyShow: false,\n isDataLookup: false,\n isElementLookup: false,\n required: false,\n requiresAllConditionallyShowPredicates: false,\n})\n\nfunction getNestedOptions(\n parentOptions: FormTypes.ChoiceElementOption[] | undefined,\n parentValue: string | undefined,\n): FormTypes.ChoiceElementOption[] | undefined {\n const selectedParentOption = parentOptions?.find(\n (parentOption) => parentOption.value === parentValue,\n )\n if (parentOptions) {\n if (selectedParentOption) {\n return selectedParentOption.options as FormTypes.ChoiceElementOption[]\n } else {\n return parentOptions.reduce<FormTypes.ChoiceElementOption[]>(\n (memo, option) => [\n ...memo,\n ...((option.options || []) as FormTypes.ChoiceElementOption[]),\n ],\n [],\n )\n }\n }\n return undefined\n}\n\nexport default function generateFreshdeskDependentFieldElements(\n element: FormTypes.FreshdeskDependentFieldElement,\n value: FormTypes.FreshdeskDependentFieldElementValue | undefined,\n): FormTypes.FormElement[] {\n const categoryElement: FormTypes.SelectElement = {\n ...createFormElement(),\n name: 'category',\n required: element.required,\n readOnly: element.readOnly,\n label: element.label,\n hint: element.hint,\n defaultValue: element.defaultValue?.category,\n options: element.options,\n }\n const formElements = [categoryElement]\n\n if (value?.category) {\n const subCategoryOptions = getNestedOptions(\n element.options,\n value?.category,\n )\n const subCategoryElement: FormTypes.SelectElement = {\n ...createFormElement(),\n name: 'subCategory',\n required: element.required,\n readOnly: element.readOnly,\n label: element.subCategoryLabel,\n hint: element.subCategoryHint,\n defaultValue: element.defaultValue?.subCategory,\n options: subCategoryOptions,\n }\n formElements.push(subCategoryElement)\n\n if (value?.subCategory) {\n const itemElement: FormTypes.SelectElement = {\n ...createFormElement(),\n name: 'item',\n required: element.required,\n readOnly: element.readOnly,\n label: element.itemLabel,\n hint: element.itemHint,\n defaultValue: element.defaultValue?.item,\n options: getNestedOptions(subCategoryOptions, value?.subCategory),\n }\n formElements.push(itemElement)\n }\n }\n\n return formElements\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": "1.2.1-beta.1",
4
+ "version": "1.2.1-beta.2",
5
5
  "author": "OneBlink <developers@oneblink.io> (https://oneblink.io)",
6
6
  "bugs": {
7
7
  "url": "https://github.com/oneblink/apps-react/issues"