Files
payload/packages/ui/src/forms/Form/getDataByPath.ts
2024-03-19 15:23:22 -04:00

25 lines
753 B
TypeScript

import type { FormState } from 'payload/types'
import flatleyImport from 'flatley'
const { unflatten } = flatleyImport
export const getDataByPath = <T = unknown>(fields: FormState, path: string): T => {
const pathPrefixToRemove = path.substring(0, path.lastIndexOf('.') + 1)
const name = path.split('.').pop()
const data = {}
Object.keys(fields).forEach((key) => {
if (!fields[key].disableFormData && (key.indexOf(`${path}.`) === 0 || key === path)) {
data[key.replace(pathPrefixToRemove, '')] = fields[key].value
if (fields[key]?.rows && fields[key].rows.length === 0) {
data[key.replace(pathPrefixToRemove, '')] = []
}
}
})
const unflattenedData = unflatten(data)
return unflattenedData?.[name]
}