This commit is contained in:
dap 2025-05-22 09:20:32 +08:00
commit d039c53053
4 changed files with 23 additions and 6 deletions

View File

@ -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;
} }
/** /**

View File

@ -208,7 +208,7 @@ export const useTabbarStore = defineStore('core-tabbar', {
const keys: string[] = []; const keys: string[] = [];
for (const key of closeKeys) { for (const key of closeKeys) {
if (key !== tab.key) { if (key !== getTabKeyFromTab(tab)) {
const closeTab = this.tabs.find( const closeTab = this.tabs.find(
(item) => getTabKeyFromTab(item) === key, (item) => getTabKeyFromTab(item) === key,
); );

View File

@ -134,7 +134,7 @@ function handleClick(
} }
case 'componentRef': { case 'componentRef': {
// focus // focus
formApi.getFieldComponentRef<RefSelectProps>('fieldOptions')?.focus(); formApi.getFieldComponentRef<RefSelectProps>('fieldOptions')?.focus?.();
break; break;
} }
case 'disabled': { case 'disabled': {

View File

@ -11,7 +11,7 @@ export function getMenuTypeOptions() {
value: 'catalog', value: 'catalog',
}, },
{ color: 'default', label: $t('system.menu.typeMenu'), value: 'menu' }, { color: 'default', label: $t('system.menu.typeMenu'), value: 'menu' },
{ color: 'error', label: $t('system.menu.typeButton'), value: 'action' }, { color: 'error', label: $t('system.menu.typeButton'), value: 'button' },
{ {
color: 'success', color: 'success',
label: $t('system.menu.typeEmbedded'), label: $t('system.menu.typeEmbedded'),