@oneblink/sdk-core
Advanced tools
Comparing version 6.0.1-beta.1 to 6.0.1-beta.2
@@ -60,3 +60,3 @@ import { FormTypes } from '@oneblink/types'; | ||
*/ | ||
declare function findFormElement(elements: FormTypes.FormElement[], predicate: (element: FormTypes.FormElement, elements: FormTypes.FormElement[]) => boolean, parentElements?: FormTypes.FormElement[]): FormTypes.FormElement | void; | ||
declare function findFormElement(elements: FormTypes.FormElement[], predicate: (element: FormTypes.FormElement, elements: FormTypes.FormElement[]) => boolean, parentElements?: FormTypes.FormElement[]): FormTypes.FormElement | undefined; | ||
/** | ||
@@ -63,0 +63,0 @@ * Parse unknown data as valid dynamic options for a forms element. This will |
@@ -70,5 +70,4 @@ import { FormTypes, MiscTypes, ScheduledTasksTypes, SubmissionTypes } from '@oneblink/types'; | ||
*/ | ||
export declare function getElementSubmissionValue({ elementId, propertyName, submission, formElements, formatDate, formatDateTime, formatTime, formatNumber, formatCurrency, }: { | ||
elementId?: string; | ||
propertyName?: string; | ||
export declare function getElementSubmissionValue({ propertyName, submission, formElements, formatDate, formatDateTime, formatTime, formatNumber, formatCurrency, }: { | ||
propertyName: string; | ||
formElements: FormTypes.FormElement[]; | ||
@@ -80,2 +79,10 @@ submission: SubmissionTypes.S3SubmissionData['submission']; | ||
} | undefined; | ||
export declare function getElementSubmissionValue({ elementId, submission, formElements, formatDate, formatDateTime, formatTime, formatNumber, formatCurrency, }: { | ||
elementId: string; | ||
formElements: FormTypes.FormElement[]; | ||
submission: SubmissionTypes.S3SubmissionData['submission']; | ||
} & ReplaceInjectablesFormatters): { | ||
element: FormTypes.FormElement | undefined; | ||
value: unknown; | ||
} | undefined; | ||
/** | ||
@@ -82,0 +89,0 @@ * Replace the `{ELEMENT:<elementName>}` values in text while a form is being |
@@ -6,2 +6,3 @@ "use strict"; | ||
const form_elements_regex_1 = require("./form-elements-regex"); | ||
const formElementsService_1 = require("./formElementsService"); | ||
const SUBMISSION_VALUES = [ | ||
@@ -72,44 +73,47 @@ { | ||
]; | ||
/** | ||
* Function to get the display value of a property in submission, if elementId | ||
* is provided propertyName will be ignored | ||
* | ||
* #### Example | ||
* | ||
* ```typescript | ||
* const result = submissionService.getElementSubmissionValue({ | ||
* propertyName: 'search', | ||
* submission: { | ||
* search: 'Entered By User', | ||
* }, | ||
* formElements: [ | ||
* { | ||
* id: 'd4135b47-9004-4d75-aeb3-d2f6232da111', | ||
* name: 'search', | ||
* type: 'text', | ||
* label: 'Search', | ||
* readOnly: false, | ||
* required: false, | ||
* conditionallyShow: false, | ||
* requiresAllConditionallyShowPredicates: false, | ||
* isElementLookup: false, | ||
* isDataLookup: false, | ||
* }, | ||
* ], | ||
* formatDate: (value) => new Date(value).toDateString(), | ||
* formatDateTime: (value) => new Date(value).toString(), | ||
* formatTime: (value) => new Date(value).toTimeString(), | ||
* formatNumber: (value) => Number(value).toString(), | ||
* formatCurrency: (value) => Number(value).toFixed(2), | ||
* }) | ||
* ``` | ||
* | ||
* @param options | ||
* @returns | ||
*/ | ||
function getElementSubmissionValue({ elementId, propertyName, submission, formElements, formatDate, formatDateTime, formatTime, formatNumber, formatCurrency, }) { | ||
var _a, _b, _c, _d, _e; | ||
if (elementId === undefined && propertyName === undefined) { | ||
return undefined; | ||
} | ||
let result = undefined; | ||
if (elementId) { | ||
result = getElementSubmissionValueById({ | ||
elementId, | ||
formElements, | ||
submission, | ||
}); | ||
} | ||
else if (propertyName) { | ||
result = getElementSubmissionValueByName({ | ||
propertyName, | ||
formElements, | ||
submission, | ||
}); | ||
} | ||
if (!result) { | ||
return; | ||
} | ||
return formatValue({ | ||
element: result.formElement, | ||
unknownValue: result.unknownValue, | ||
formatDate, | ||
formatTime, | ||
formatDateTime, | ||
formatCurrency, | ||
formatNumber, | ||
}); | ||
} | ||
exports.getElementSubmissionValue = getElementSubmissionValue; | ||
function getElementSubmissionValueByName({ propertyName, formElements, submission, }) { | ||
const unknownValue = submission[propertyName]; | ||
if (unknownValue === undefined || unknownValue === null) { | ||
return undefined; | ||
} | ||
const formElement = (0, formElementsService_1.findFormElement)(formElements, (element) => element.type !== 'page' && | ||
element.type !== 'section' && | ||
element.name === propertyName); | ||
return { formElement, unknownValue }; | ||
} | ||
function getElementSubmissionValueById({ elementId, formElements, submission, }) { | ||
var _a; | ||
// make sure submission is an object | ||
@@ -119,67 +123,56 @@ if (Object(submission) !== submission) { | ||
} | ||
// initialise if propertyName provided and not elementId | ||
let unknown = elementId ? undefined : submission[propertyName !== null && propertyName !== void 0 ? propertyName : '']; | ||
const flattenedElements = (0, formElementsService_1.flattenFormElements)(formElements); | ||
let unknown = undefined; | ||
let formElement = undefined; | ||
const matchFn = (element) => { | ||
if (elementId) { | ||
return elementId === element.id; | ||
} | ||
return 'name' in element && element.name === propertyName; | ||
}; | ||
for (const element of formElements) { | ||
if (matchFn(element)) { | ||
for (const element of flattenedElements) { | ||
if (elementId === element.id) { | ||
if ('name' in element) { | ||
unknown = submission[element.name]; | ||
formElement = element; | ||
break; | ||
} | ||
break; | ||
} | ||
if ('elements' in element) { | ||
const newSubmissionData = 'name' in element ? submission[element.name] : submission; | ||
if (Array.isArray(newSubmissionData) || !element.elements) { | ||
continue; | ||
} | ||
const result = getElementSubmissionValue({ | ||
if (element.type === 'form') { | ||
const newSubmissionData = submission[element.name]; | ||
const result = getElementSubmissionValueById({ | ||
elementId, | ||
propertyName, | ||
formElements: element.elements, | ||
formElements: (_a = element.elements) !== null && _a !== void 0 ? _a : [], | ||
submission: newSubmissionData, | ||
formatDate, | ||
formatDateTime, | ||
formatTime, | ||
formatNumber, | ||
formatCurrency, | ||
}); | ||
if (result) { | ||
return result.value !== undefined || result.value !== null | ||
? result | ||
: undefined; | ||
unknown = result.unknownValue; | ||
formElement = result.formElement; | ||
break; | ||
} | ||
} | ||
} | ||
if (unknown === undefined || unknown === null) { | ||
if (unknown === undefined || unknown === null || formElement === undefined) { | ||
return undefined; | ||
} | ||
switch (formElement === null || formElement === void 0 ? void 0 : formElement.type) { | ||
return { unknownValue: unknown, formElement }; | ||
} | ||
function formatValue({ element, unknownValue, formatDate, formatTime, formatDateTime, formatCurrency, formatNumber, }) { | ||
var _a, _b, _c, _d, _e; | ||
switch (element === null || element === void 0 ? void 0 : element.type) { | ||
case 'datetime': { | ||
const value = unknown; | ||
return { element: formElement, value: formatDateTime(value) }; | ||
const value = unknownValue; | ||
return { element: element, value: formatDateTime(value) }; | ||
} | ||
case 'date': { | ||
const value = unknown; | ||
return { element: formElement, value: formatDate(value) }; | ||
const value = unknownValue; | ||
return { element: element, value: formatDate(value) }; | ||
} | ||
case 'time': { | ||
const value = unknown; | ||
return { element: formElement, value: formatTime(value) }; | ||
const value = unknownValue; | ||
return { element: element, value: formatTime(value) }; | ||
} | ||
case 'radio': | ||
case 'autocomplete': { | ||
const value = unknown; | ||
const option = (_a = formElement.options) === null || _a === void 0 ? void 0 : _a.find((opt) => opt.value === value); | ||
return { element: formElement, value: (option === null || option === void 0 ? void 0 : option.label) || value }; | ||
const value = unknownValue; | ||
const option = (_a = element.options) === null || _a === void 0 ? void 0 : _a.find((opt) => opt.value === value); | ||
return { element: element, value: (option === null || option === void 0 ? void 0 : option.label) || value }; | ||
} | ||
case 'checkboxes': { | ||
const value = unknown; | ||
const options = formElement.options; | ||
const value = unknownValue; | ||
const options = element.options; | ||
const selectedOptionLabels = value.reduce((labels, selectedOption) => { | ||
@@ -192,3 +185,3 @@ const foundOption = options === null || options === void 0 ? void 0 : options.find((o) => o.value === selectedOption); | ||
return { | ||
element: formElement, | ||
element: element, | ||
value: selectedOptionLabels.length ? selectedOptionLabels : undefined, | ||
@@ -198,6 +191,6 @@ }; | ||
case 'compliance': { | ||
const value = unknown; | ||
const option = (formElement.options || []).find((option) => option.value === value.value); | ||
const value = unknownValue; | ||
const option = (element.options || []).find((option) => option.value === value.value); | ||
return { | ||
element: formElement, | ||
element: element, | ||
value: { | ||
@@ -210,5 +203,5 @@ ...value, | ||
case 'select': { | ||
if (formElement.multi) { | ||
const value = unknown; | ||
const options = formElement.options; | ||
if (element.multi) { | ||
const value = unknownValue; | ||
const options = element.options; | ||
const selectedOptionLabels = value.reduce((labels, selectedOption) => { | ||
@@ -221,3 +214,3 @@ const foundOption = options === null || options === void 0 ? void 0 : options.find((o) => o.value === selectedOption); | ||
return { | ||
element: formElement, | ||
element: element, | ||
value: selectedOptionLabels.length ? selectedOptionLabels : undefined, | ||
@@ -227,16 +220,16 @@ }; | ||
else { | ||
const value = unknown; | ||
const option = (_b = formElement.options) === null || _b === void 0 ? void 0 : _b.find((opt) => opt.value === value); | ||
return { element: formElement, value: option === null || option === void 0 ? void 0 : option.label }; | ||
const value = unknownValue; | ||
const option = (_b = element.options) === null || _b === void 0 ? void 0 : _b.find((opt) => opt.value === value); | ||
return { element: element, value: option === null || option === void 0 ? void 0 : option.label }; | ||
} | ||
} | ||
case 'boolean': { | ||
const value = unknown; | ||
return { element: formElement, value: value ? 'Yes' : 'No' }; | ||
const value = unknownValue; | ||
return { element: element, value: value ? 'Yes' : 'No' }; | ||
} | ||
case 'calculation': { | ||
const value = unknown; | ||
const value = unknownValue; | ||
if (!Number.isNaN(value) && Number.isFinite(value)) { | ||
let text; | ||
if (formElement.displayAsCurrency) { | ||
if (element.displayAsCurrency) { | ||
text = formatCurrency(value); | ||
@@ -247,3 +240,3 @@ } | ||
} | ||
return { element: formElement, value: text }; | ||
return { element: element, value: text }; | ||
} | ||
@@ -254,5 +247,5 @@ return undefined; | ||
case 'geoscapeAddress': { | ||
const value = unknown; | ||
const value = unknownValue; | ||
return { | ||
element: formElement, | ||
element: element, | ||
value: ((_c = value === null || value === void 0 ? void 0 : value.addressDetails) === null || _c === void 0 ? void 0 : _c.formattedAddress) || (value === null || value === void 0 ? void 0 : value.addressId), | ||
@@ -262,9 +255,9 @@ }; | ||
case 'civicaStreetName': { | ||
const value = unknown; | ||
return { element: formElement, value: value === null || value === void 0 ? void 0 : value.formattedStreet }; | ||
const value = unknownValue; | ||
return { element: element, value: value === null || value === void 0 ? void 0 : value.formattedStreet }; | ||
} | ||
case 'civicaNameRecord': { | ||
const value = unknown; | ||
const value = unknownValue; | ||
return { | ||
element: formElement, | ||
element: element, | ||
value: [value === null || value === void 0 ? void 0 : value.title, value === null || value === void 0 ? void 0 : value.givenName1, value === null || value === void 0 ? void 0 : value.familyName] | ||
@@ -276,5 +269,5 @@ .filter((t) => t) | ||
case 'abn': { | ||
const value = unknown; | ||
const value = unknownValue; | ||
return { | ||
element: formElement, | ||
element: element, | ||
value: value ? (0, abnService_1.getABNNumberFromABNRecord)(value) : undefined, | ||
@@ -284,5 +277,5 @@ }; | ||
case 'apiNSWLiquorLicence': { | ||
const value = unknown; | ||
const value = unknownValue; | ||
return { | ||
element: formElement, | ||
element: element, | ||
value: `${(_d = value === null || value === void 0 ? void 0 : value.licenceDetail) === null || _d === void 0 ? void 0 : _d.licenceNumber} | ${(_e = value === null || value === void 0 ? void 0 : value.licenceDetail) === null || _e === void 0 ? void 0 : _e.licenceName}`.trim(), | ||
@@ -292,7 +285,6 @@ }; | ||
default: { | ||
return { element: formElement, value: unknown }; | ||
return { element: element, value: unknownValue }; | ||
} | ||
} | ||
} | ||
exports.getElementSubmissionValue = getElementSubmissionValue; | ||
/** | ||
@@ -299,0 +291,0 @@ * Replace the `{ELEMENT:<elementName>}` values in text while a form is being |
{ | ||
"name": "@oneblink/sdk-core", | ||
"description": "OneBlink SDK for JavaScript (works in Browsers and NodeJS)", | ||
"version": "6.0.1-beta.1", | ||
"version": "6.0.1-beta.2", | ||
"author": "OneBlink <developers@oneblink.io> (https://oneblink.io)", | ||
@@ -6,0 +6,0 @@ "bugs": { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
283219
3195