25 lines
753 B
TypeScript
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]
|
|
}
|