@availity/native-form
Version:
Submit JSON data via a native form, not AJAX. Useful when you need to open a new page with a POST action.
23 lines (18 loc) • 818 B
JavaScript
// Copied from https://github.com/Availity/sdk-js/blob/master/packages/native-form/flattenObject.js
const parseValue = (value) => (value === undefined || value === null ? value : value.toString());
const flattenObject = (ob) =>
Object.keys(ob).reduce((toReturn, k) => {
if (Object.prototype.toString.call(ob[k]) === '[object Date]') {
toReturn[k] = ob[k].toJSON();
} else if (ob[k] && typeof ob[k] === 'object') {
const flatObject = flattenObject(ob[k]);
const isArray = Array.isArray(ob[k]);
for (const k2 of Object.keys(flatObject)) {
toReturn[`${k}${isArray ? k2.replace(/^(\d+)(\..*)?/, '[$1]$2') : `.${k2}`}`] = parseValue(flatObject[k2]);
}
} else {
toReturn[k] = parseValue(ob[k]);
}
return toReturn;
}, {});
export default flattenObject;