in packages/core/src/shared/wizards/wizardForm.ts [167:205]
private convertElement<TProp>(
prop: string,
element: FormDataElement<TProp, any>,
options?: ContextOptions<TState, TProp>
): FormDataElement<TState, any> {
const wrappedElement: FormDataElement<TState, any> = {}
if (element.provider !== undefined) {
wrappedElement.provider = (state) => {
const stateWithCache = Object.assign(_.get(state, prop, {}), {
stepCache: state.stepCache,
estimator: state.estimator,
})
return element.provider!(stateWithCache as StateWithCache<WizardState<TProp>, any>)
}
}
if (element.showWhen !== undefined || options?.showWhen !== undefined || options?.requireParent === true) {
wrappedElement.showWhen = (state) =>
(options?.requireParent !== true || _.get(state, prop) !== undefined) &&
(element.showWhen !== undefined ? element.showWhen!(_.get(state, prop, {})) : true) &&
(options?.showWhen !== undefined ? options.showWhen!(state) : true)
}
wrappedElement.setDefault =
element.setDefault !== undefined
? (state) =>
options?.requireParent !== true || _.get(state, prop) !== undefined
? options?.showWhen === undefined || options.showWhen(state)
? element.setDefault!(_.get(state, prop, {}))
: undefined
: undefined
: undefined
wrappedElement.requireParent = element.requireParent
return wrappedElement
}