diff --git a/packages/vue-components/src/components/OmegaForm/OmegaWrapper.vue b/packages/vue-components/src/components/OmegaForm/OmegaWrapper.vue index 89cecd935..43cae6c5e 100644 --- a/packages/vue-components/src/components/OmegaForm/OmegaWrapper.vue +++ b/packages/vue-components/src/components/OmegaForm/OmegaWrapper.vue @@ -107,28 +107,36 @@ onBeforeMount(() => { if (!props.form) return const formOptionsKeys = Object.keys(props.form.options || {}) - const excludedKeys: Set = new Set([ + const excludedKeys = new Set([ "omegaConfig", "subscribe", "showErrorsOn", "asyncAlways", "form", "schema", - ]) + ]) satisfies Set + type ExcludedKeys = typeof excludedKeys extends Set ? U : never const filteredProps = Object.fromEntries( Object.entries(props).filter( ([key, value]) => - !excludedKeys.has(key as keyof typeof props) && value !== undefined, + !excludedKeys.has(key as ExcludedKeys) && value !== undefined, ), - ) as Partial + ) as typeof props extends infer TOP + ? { + [K in keyof TOP as K extends ExcludedKeys ? never : K]-?: NonNullable< + TOP[K] + > + } + : never const propsKeys = Object.keys(filteredProps) const overlappingKeys = formOptionsKeys.filter( key => propsKeys.includes(key) && - filteredProps[key as keyof typeof props] !== undefined, + key in filteredProps && + filteredProps[key as keyof typeof filteredProps] !== undefined, ) if (overlappingKeys.length > 0) { @@ -146,9 +154,7 @@ onBeforeMount(() => { formToUse.value.options = Object.fromEntries( // TODO - (Object.entries(mergedOptions) as any).filter( - ([_, value]: any) => value !== undefined, - ), + Object.entries(mergedOptions).filter(([_, value]) => value !== undefined), ) })