diff --git a/striker-ui/lib/convertFormikErrorsToMessages.ts b/striker-ui/lib/convertFormikErrorsToMessages.ts new file mode 100644 index 00000000..fdae0b56 --- /dev/null +++ b/striker-ui/lib/convertFormikErrorsToMessages.ts @@ -0,0 +1,26 @@ +const convertFormikErrorsToMessages = ( + errors: Tree, + { + build = (mkey, err) => ({ children: err, type: 'warning' }), + chain = '', + }: { + build?: (msgkey: keyof Tree, error: Leaf) => Messages[keyof Messages]; + chain?: keyof Tree; + } = {}, +): Messages => + Object.entries(errors).reduce((previous, [key, value]) => { + const extended = String(chain).length ? [chain, key].join('.') : key; + + if (typeof value === 'object') { + return { + ...previous, + ...convertFormikErrorsToMessages(value, { chain: extended }), + }; + } + + previous[extended] = build(extended, value); + + return previous; + }, {}); + +export default convertFormikErrorsToMessages;