diff --git a/packages/renderer/src/render/node.ts b/packages/renderer/src/render/node.ts index 6b837875114b167d4285bc5562ef919abd62e689..0676cbe8f071200f37830828979b8b2fe043f140 100644 --- a/packages/renderer/src/render/node.ts +++ b/packages/renderer/src/render/node.ts @@ -13,7 +13,7 @@ import { } from '@vtj/core'; import { camelCase, upperFirst, isString, pick, isObject } from '@vtj/utils'; import { type Context } from './context'; -import { BUILT_IN_DIRECTIVES } from '../constants'; +import { BUILT_IN_DIRECTIVES, ContextMode } from '../constants'; import { toString, isJSExpression, @@ -81,6 +81,14 @@ export function nodeRender( const props = parseNodeProps(id, dsl.props ?? {}, context); const events = parseNodeEvents(Vue, dsl.events ?? {}, context); + if ( + context.__mode === ContextMode.Design && + shouldOutlineControlVisibility(dsl.name) && + typeof props.modelValue === 'boolean' + ) { + props.modelValue = true; + } + // 插槽 if (dsl.name === 'slot') { return renderSlot(Vue, dsl, props, context, loader); @@ -143,6 +151,15 @@ export function nodeRender( return render(context); } +const DESIGN_VISIBILITY_KEYWORDS = ['dialog', 'drawer', 'modal', 'popup', 'dlg']; + +function shouldOutlineControlVisibility(name: string = '') { + const lower = name.toLowerCase(); + return DESIGN_VISIBILITY_KEYWORDS.some((keyword) => + lower.includes(keyword) + ); +} + function createWithDirectives( appContext: AppContext, directives: NodeDirective[],