|
|
@ -11,7 +11,7 @@ import type { Recordable } from '@vben-core/typings'; |
|
|
|
|
|
|
|
|
import type { FormActions, FormSchema, VbenFormProps } from './types'; |
|
|
import type { FormActions, FormSchema, VbenFormProps } from './types'; |
|
|
|
|
|
|
|
|
import { toRaw } from 'vue'; |
|
|
import { isRef, toRaw } from 'vue'; |
|
|
|
|
|
|
|
|
import { Store } from '@vben-core/shared/store'; |
|
|
import { Store } from '@vben-core/shared/store'; |
|
|
import { |
|
|
import { |
|
|
@ -100,9 +100,26 @@ export class FormApi { |
|
|
getFieldComponentRef<T = ComponentPublicInstance>( |
|
|
getFieldComponentRef<T = ComponentPublicInstance>( |
|
|
fieldName: string, |
|
|
fieldName: string, |
|
|
): T | undefined { |
|
|
): T | undefined { |
|
|
return this.componentRefMap.has(fieldName) |
|
|
let target = this.componentRefMap.has(fieldName) |
|
|
? (this.componentRefMap.get(fieldName) as T) |
|
|
? (this.componentRefMap.get(fieldName) as ComponentPublicInstance) |
|
|
: undefined; |
|
|
: undefined; |
|
|
|
|
|
if ( |
|
|
|
|
|
target && |
|
|
|
|
|
target.$.type.name === 'AsyncComponentWrapper' && |
|
|
|
|
|
target.$.subTree.ref |
|
|
|
|
|
) { |
|
|
|
|
|
if (Array.isArray(target.$.subTree.ref)) { |
|
|
|
|
|
if ( |
|
|
|
|
|
target.$.subTree.ref.length > 0 && |
|
|
|
|
|
isRef(target.$.subTree.ref[0]?.r) |
|
|
|
|
|
) { |
|
|
|
|
|
target = target.$.subTree.ref[0]?.r.value as ComponentPublicInstance; |
|
|
|
|
|
} |
|
|
|
|
|
} else if (isRef(target.$.subTree.ref.r)) { |
|
|
|
|
|
target = target.$.subTree.ref.r.value as ComponentPublicInstance; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return target as T; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
|