31 lines
1.2 KiB
TypeScript
31 lines
1.2 KiB
TypeScript
/**
|
|
* 模态/抽屉布局模型(module 13 task 248):统一两种承载容器的尺寸与关闭语义,
|
|
* 对齐 admin.html —— 居中 modal width min(920px,100vw-48)、radius14;右侧 drawer
|
|
* width min(460px,100%);遮罩点击与 Esc 均关闭。页面接入统一尺寸与头/脚槽。
|
|
*/
|
|
export const ADMIN_MODAL_WIDTH = 'min(920px, 100vw - 48px)'
|
|
export const ADMIN_DRAWER_WIDTH = 'min(460px, 100%)'
|
|
export const ADMIN_MODAL_RADIUS = 14
|
|
|
|
export interface AdminContainerSpec {
|
|
width: string
|
|
radius?: number
|
|
maskClosable: boolean
|
|
escClosable: boolean
|
|
}
|
|
|
|
export function modalLayoutSpec(): AdminContainerSpec {
|
|
return { width: ADMIN_MODAL_WIDTH, radius: ADMIN_MODAL_RADIUS, maskClosable: true, escClosable: true }
|
|
}
|
|
|
|
export function drawerLayoutSpec(): AdminContainerSpec {
|
|
return { width: ADMIN_DRAWER_WIDTH, maskClosable: true, escClosable: true }
|
|
}
|
|
|
|
/** 页面头标题归一:空/空白标题兜底「操作」,副标题去空白后无则省略。 */
|
|
export function dialogTitleOf(opts: { title?: string; subtitle?: string }): { title: string; subtitle?: string } {
|
|
const title = opts.title?.trim()
|
|
const subtitle = opts.subtitle?.trim()
|
|
return { title: title || '操作', ...(subtitle ? { subtitle } : {}) }
|
|
}
|