@done-coding/admin-core 0.3.0 → 0.3.1-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/bridge/index.mjs +24 -40
- package/es/components/display/HeightProvider.vue.mjs +26 -26
- package/es/components/display/TabsHeader.vue.mjs +7 -0
- package/es/components/display/TabsHeader.vue2.mjs +76 -0
- package/es/components/display/TabsMain.vue.mjs +100 -5
- package/es/components/display/TabsMain.vue2.mjs +2 -95
- package/es/components/display/TabsNaturalFlow.vue.mjs +17 -0
- package/es/components/display/TabsNaturalFlow.vue2.mjs +4 -0
- package/es/components/display/TabsRefineFlow.vue.mjs +62 -0
- package/es/components/display/TabsRefineFlow.vue2.mjs +4 -0
- package/es/components/display/index.mjs +11 -11
- package/es/components/form/FormSearch.vue.mjs +2 -2
- package/es/components/form/FormSearch.vue2.mjs +107 -63
- package/es/components/form/form-search-utils.mjs +25 -0
- package/es/components/list-page/ListPage.vue.mjs +2 -2
- package/es/components/list-page/ListPage.vue2.mjs +82 -76
- package/es/components/table/TableMain.vue.mjs +3 -3
- package/es/components/table/TableMain.vue2.mjs +103 -102
- package/es/hooks/use-breakpoint.mjs +40 -0
- package/es/hooks/use-channel-viewport-height.mjs +18 -0
- package/es/index.mjs +88 -84
- package/es/inject/key.mjs +7 -6
- package/es/style.css +1 -1
- package/package.json +3 -2
- package/types/bridge/index.d.ts +23 -23
- package/types/components/display/HeightProvider.vue.d.ts +10 -6
- package/types/components/display/TabsHeader.vue.d.ts +42 -0
- package/types/components/display/TabsMain.vue.d.ts +49 -7
- package/types/components/display/TabsNaturalFlow.vue.d.ts +16 -0
- package/types/components/display/TabsRefineFlow.vue.d.ts +53 -0
- package/types/components/display/index.d.ts +6 -12
- package/types/components/display/types.d.ts +46 -31
- package/types/components/form/form-search-utils.d.ts +24 -0
- package/types/components/form/types.d.ts +7 -1
- package/types/components/list-page/types.d.ts +1 -1
- package/types/components/misc/index.d.ts +10 -1
- package/types/components/modal/ConfirmModal.vue.d.ts +2 -2
- package/types/components/table/TableToolbar.vue.d.ts +8 -8
- package/types/components/table/types.d.ts +4 -0
- package/types/hooks/index.d.ts +2 -0
- package/types/hooks/use-breakpoint.d.ts +4 -0
- package/types/hooks/use-channel-viewport-height.d.ts +28 -0
- package/types/inject/key.d.ts +11 -11
|
@@ -4,23 +4,17 @@ import { default as TabsMain } from './TabsMain.vue';
|
|
|
4
4
|
import { default as HeightProvider } from './HeightProvider.vue';
|
|
5
5
|
|
|
6
6
|
export {
|
|
7
|
-
/**
|
|
8
|
-
* 尺寸监听容器:debounce 测量默认槽内容的宽 / 高,
|
|
9
|
-
* 通过 `@height-change` / `@size-change` 上报,供高度预算等场景复用。
|
|
10
|
-
*/
|
|
7
|
+
/** 尺寸监听容器:debounce 测默认槽内容宽/高,`@height-change` / `@size-change` 上报 */
|
|
11
8
|
WatchSize,
|
|
12
9
|
/**
|
|
13
|
-
* Tab
|
|
14
|
-
*
|
|
15
|
-
* 内容懒渲染(首次激活前不实例化)+ KeepAlive(切走保活、切回复用,
|
|
16
|
-
* 状态保留)。内容槽 `#{key}` > `tabs[].component`,
|
|
17
|
-
* 标题槽 `#header-{key}` > `tabs[].title`,两类槽作用域均 `{ tab, active }`。
|
|
10
|
+
* Tab 容器:手写 tab-bar + 滑动下划线 + 懒渲染 KeepAlive。
|
|
11
|
+
* 嵌套联动用 `channel="x"` / `parentChannel="x"` 字符串显式配对([MUST NOT] 响应式)。
|
|
18
12
|
*/
|
|
19
13
|
TabsMain,
|
|
20
14
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
15
|
+
* 纯数值高度预算节点:`available = max(viewportHeight - reserve, minHeight ?? 0)`,
|
|
16
|
+
* 默认槽 `{ height }` 暴露。Fragment 双根,不撑开自身,不 inject 不 provide。
|
|
17
|
+
* 消费方 [MUST] 用 slot scope `:height` 自设容器高。
|
|
24
18
|
*/
|
|
25
19
|
HeightProvider, };
|
|
26
20
|
export declare const displayInstall: Plugin;
|
|
@@ -1,46 +1,61 @@
|
|
|
1
|
-
import { Component } from 'vue';
|
|
1
|
+
import { Component, ComputedRef } from 'vue';
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* `HeightProvider` 组件 props。
|
|
5
|
-
*
|
|
6
|
-
* 单组件即一个高度预算节点:预算优先级严格为
|
|
7
|
-
* `height`(显式传入)→ 同 channel 最近祖先 HeightProvider 经 inject 下分的
|
|
8
|
-
* 剩余高度 → 兜底 `0`。节点扣除自身 `#header` 槽实测高度后,
|
|
9
|
-
* 将剩余可用高度沿同 channel `provide` 给后代,形成递归预算链。
|
|
10
|
-
*/
|
|
3
|
+
/** HeightProvider props——见组件 JSDoc */
|
|
11
4
|
export interface HeightProviderProps {
|
|
12
|
-
/** px
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
|
|
5
|
+
/** px,视口可用高度(必填) */
|
|
6
|
+
viewportHeight: number;
|
|
7
|
+
/** px,默认槽可用高度兜底下限;超 viewportHeight 时会撑破父容器(有意设计) */
|
|
8
|
+
minHeight?: number;
|
|
16
9
|
}
|
|
17
|
-
/**
|
|
18
|
-
* `TabsMain` 单个 tab 项配置。
|
|
19
|
-
*
|
|
20
|
-
* 内容渲染优先级:`#{key}` 内容槽 > `component` > 空。
|
|
21
|
-
* 标题渲染优先级:`#header-{key}` 标题槽 > `title` 文本。
|
|
22
|
-
*/
|
|
10
|
+
/** TabsMain 单个 tab 项配置 */
|
|
23
11
|
export interface TabsMainItem {
|
|
24
|
-
/**
|
|
12
|
+
/** 唯一标识,v-model 值与槽名(#{key} / #header-{key})以此为准 */
|
|
25
13
|
key: string;
|
|
26
|
-
/**
|
|
14
|
+
/** 标题文本,#header-{key} 槽缺省时回退 */
|
|
27
15
|
title: string;
|
|
28
|
-
/**
|
|
16
|
+
/** 内容组件,#{key} 槽缺省时回退渲染 */
|
|
29
17
|
component?: Component;
|
|
30
18
|
}
|
|
19
|
+
/** tabs 族跨节点高度联动 channel 的 inject payload */
|
|
20
|
+
export interface TabsChannelPayload {
|
|
21
|
+
/** 下一级 TabsMain 可消费的视口高度(响应式) */
|
|
22
|
+
viewportHeight: ComputedRef<number>;
|
|
23
|
+
/** 下一级嵌套深度(非响应式),顶层 = 1,每嵌套 +1;本期预埋不消费 */
|
|
24
|
+
level: number;
|
|
25
|
+
}
|
|
26
|
+
/** [top, right, bottom, left] px——TabsMain 默认插槽容器内置 padding(top+bottom 同步从 channel viewportHeight 扣减) */
|
|
27
|
+
export type TabsMainPadding = [number, number, number, number];
|
|
28
|
+
/**
|
|
29
|
+
* TabsHeader 视觉风格变体(与 level 字号解耦)。
|
|
30
|
+
* - card:浏览器 tabs 风格(active 三面 border + 两侧 100vw separator,真打通)
|
|
31
|
+
* - indicator:标准 2px 下划线
|
|
32
|
+
* - indicator-compact:紧凑 1px 下划线
|
|
33
|
+
* - plain:无装饰(active 加粗 + primary 字色)
|
|
34
|
+
*/
|
|
35
|
+
export type TabsHeaderVariant = "card" | "indicator" | "indicator-compact" | "plain";
|
|
31
36
|
/**
|
|
32
|
-
*
|
|
37
|
+
* TabsMain props。
|
|
33
38
|
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* 内容区消费剩余可用高度。激活 tab 由 `v-model<string>` 双向绑定,
|
|
37
|
-
* 非法或空值自动归一到首个 tab。
|
|
39
|
+
* 高度优先级:parentChannel inject > viewportHeight > inject `BODY_CONTENT_VIEWPORT_HEIGHT` > 0。
|
|
40
|
+
* channel / parentChannel [MUST NOT] 响应式变更(setup 期快照,变更 console.error 忽略)。
|
|
38
41
|
*/
|
|
39
42
|
export interface TabsMainProps {
|
|
40
43
|
/** tab 配置列表 */
|
|
41
44
|
tabs: TabsMainItem[];
|
|
42
|
-
/**
|
|
43
|
-
|
|
44
|
-
/** px
|
|
45
|
-
|
|
45
|
+
/** px,视口可用高度;未传时降级 BODY_CONTENT_VIEWPORT_HEIGHT 老链 */
|
|
46
|
+
viewportHeight?: number;
|
|
47
|
+
/** px,默认内容区高度兜底下限 */
|
|
48
|
+
minHeight?: number;
|
|
49
|
+
/** 作为父时的通道标识(字符串,内部 Symbol.for 跨包共享键) */
|
|
50
|
+
channel?: string;
|
|
51
|
+
/** 作为子时要消费的父通道标识 */
|
|
52
|
+
parentChannel?: string;
|
|
53
|
+
/** 默认插槽容器内置 padding [top,right,bottom,left],默认 [10,0,0,0];top+bottom 同步从 slot scope/channel viewportHeight 扣减 */
|
|
54
|
+
padding?: TabsMainPadding;
|
|
55
|
+
/** 精细化布局:true(默认) 走 HeightProvider 精确扣 header reserve + padding 给 available;false 不包 HeightProvider,默认槽 viewportHeight 直接给 viewportHeightFinal(不扣减),业务自然流 */
|
|
56
|
+
refine?: boolean;
|
|
57
|
+
/** 精细化预留高度(px),从 viewportHeightFinal 中预扣,refine=false 时同样生效 */
|
|
58
|
+
refineReduceHeight?: number;
|
|
59
|
+
/** 显式指定 TabsHeader 视觉风格,不传则按 visualLevel 推导默认(L1=card / L2=indicator / L3=indicator-compact / L4=plain)。字号始终跟随 level,不受 variant 影响。 */
|
|
60
|
+
variant?: TabsHeaderVariant;
|
|
46
61
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ColProps } from 'element-plus';
|
|
2
|
+
import { Breakpoint } from '../../hooks/use-breakpoint';
|
|
3
|
+
|
|
4
|
+
export declare const computeItemsPerRow: (span: number) => number;
|
|
5
|
+
/**
|
|
6
|
+
* 计算按钮 ElCol 的 offset,使其推到当前行最右。
|
|
7
|
+
* ElRow 共 24 格。
|
|
8
|
+
*
|
|
9
|
+
* @param visibleCount 可见表单项数量(不含按钮自身)
|
|
10
|
+
* @param span 当前断点下每个表单项的 span
|
|
11
|
+
*/
|
|
12
|
+
export declare const computeButtonOffset: (visibleCount: number, span: number) => number;
|
|
13
|
+
/**
|
|
14
|
+
* 按每个响应断点分别计算按钮的 { span, offset },
|
|
15
|
+
* 返回可直接 v-bind 到 ElCol 的对象。
|
|
16
|
+
*/
|
|
17
|
+
export declare const computeButtonColProps: (layout: Partial<ColProps> | undefined, visibleCount: number) => Record<string, {
|
|
18
|
+
span: number;
|
|
19
|
+
offset: number;
|
|
20
|
+
}>;
|
|
21
|
+
/**
|
|
22
|
+
* 计算当前断点下每行能容纳的表单项数。
|
|
23
|
+
*/
|
|
24
|
+
export declare const getCurrentSpan: (layout: Partial<ColProps> | undefined, breakpoint: Breakpoint) => number;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FormItemRule, ColProps, FormItemProps } from 'element-plus';
|
|
2
|
-
import { VNode } from 'vue';
|
|
2
|
+
import { VNode, ComputedRef } from 'vue';
|
|
3
3
|
|
|
4
4
|
export type OnlyOneKey<T extends Record<string, any>> = {
|
|
5
5
|
[K in keyof T]: {
|
|
@@ -143,6 +143,10 @@ export interface FormSearchInstance extends FormMainInstance {
|
|
|
143
143
|
triggerSearch: () => void;
|
|
144
144
|
/** 触发重置 */
|
|
145
145
|
triggerReset: () => void;
|
|
146
|
+
/** 切换折叠状态 */
|
|
147
|
+
toggleCollapse: (nextValue?: boolean) => void;
|
|
148
|
+
/** 当前折叠状态 */
|
|
149
|
+
isCollapsed: ComputedRef<boolean>;
|
|
146
150
|
}
|
|
147
151
|
/** FormItem props */
|
|
148
152
|
export interface FormMainItemProps {
|
|
@@ -162,6 +166,8 @@ export interface FormSearchProps<PO extends Record<string, any>, SO extends Reco
|
|
|
162
166
|
labelWidth?: string;
|
|
163
167
|
/** 静态参数(非表单 非分页参数) */
|
|
164
168
|
staticQuery?: SQ;
|
|
169
|
+
/** 最多展示行数,超出折叠。0 = 不折叠。默认 2 */
|
|
170
|
+
maxRows?: number;
|
|
165
171
|
}
|
|
166
172
|
/** form item loading 信息 */
|
|
167
173
|
export interface FormItemLoadingInfo {
|
|
@@ -3,7 +3,7 @@ import { TableApiParams, TableApiResult, TableMainInstance, TableMainProps } fro
|
|
|
3
3
|
|
|
4
4
|
export type FormSearchOptionsKey = "staticQuery";
|
|
5
5
|
export type FormSearchRewriteKey = "list";
|
|
6
|
-
export type TableMainOptionsKey = "refine" | "refineReduceHeight";
|
|
6
|
+
export type TableMainOptionsKey = "refine" | "refineReduceHeight" | "viewportHeight" | "parentChannel";
|
|
7
7
|
export type TableMainRequiredKey = "columns" | "rowKey";
|
|
8
8
|
export type TableMainRewriteKey = "api" | "query" | "injectInfo";
|
|
9
9
|
export type ListPageInnerInjectInfo<PO extends Record<string, any>,
|
|
@@ -8,5 +8,14 @@ import { default as ActionBtn } from './ActionBtn.vue';
|
|
|
8
8
|
import { default as ActionConfirm } from './ActionConfirm.vue';
|
|
9
9
|
|
|
10
10
|
export * from './types';
|
|
11
|
-
export { TriggerAutoImport, AutoRefresh,
|
|
11
|
+
export { TriggerAutoImport, AutoRefresh, ActionBtn, ActionConfirm };
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated 改用 {@link ActionBtn}——`ActionBtn` 通过 `confirmConfig` 一体化承载
|
|
14
|
+
* loading 自动接管 + 同步/异步 confirm-gate(popconfirm / message-box 两种 mode),
|
|
15
|
+
* 并对 ElButton 全部 props 透传。`ActionButton` / `ActionButtonDanger` / `ActionButtonWarn`
|
|
16
|
+
* 三个旧组件计划后续版本移除;新代码请直接使用 `ActionBtn`,
|
|
17
|
+
* 危险态用 `<ActionBtn type="danger" :confirm-config="{ type: 'danger', ... }">`,
|
|
18
|
+
* 警告态用 `<ActionBtn :confirm-config="{ type: 'warning', ... }">`。
|
|
19
|
+
*/
|
|
20
|
+
export { ActionButton, ActionButtonDanger, ActionButtonWarn };
|
|
12
21
|
export declare const miscInstall: Plugin;
|
|
@@ -72,12 +72,12 @@ declare const __VLS_component: import('vue').DefineComponent<globalThis.ExtractP
|
|
|
72
72
|
}>>> & Readonly<{
|
|
73
73
|
"onUpdate:show"?: ((value: boolean) => any) | undefined;
|
|
74
74
|
}>, {
|
|
75
|
+
width: number | string;
|
|
76
|
+
reverse: boolean;
|
|
75
77
|
showClose: boolean;
|
|
76
78
|
cancelText: string | (() => VNode);
|
|
77
79
|
confirmText: string | (() => VNode);
|
|
78
80
|
hiddenCancel: boolean;
|
|
79
|
-
width: number | string;
|
|
80
|
-
reverse: boolean;
|
|
81
81
|
closeOnPressEscape: boolean;
|
|
82
82
|
closeOnClickModal: boolean;
|
|
83
83
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
@@ -2,14 +2,14 @@ import { ExportType, TableExportContext, TableMainInstance } from './types';
|
|
|
2
2
|
|
|
3
3
|
declare const _default: import('vue').DefineComponent<globalThis.ExtractPropTypes<{
|
|
4
4
|
isAutoRefresh: import('vue').PropType<boolean>;
|
|
5
|
-
loading: {
|
|
6
|
-
type: globalThis.PropType<boolean>;
|
|
7
|
-
required: true;
|
|
8
|
-
};
|
|
9
5
|
pageSize: {
|
|
10
6
|
type: globalThis.PropType<number>;
|
|
11
7
|
required: true;
|
|
12
8
|
};
|
|
9
|
+
loading: {
|
|
10
|
+
type: globalThis.PropType<boolean>;
|
|
11
|
+
required: true;
|
|
12
|
+
};
|
|
13
13
|
showRefresh: {
|
|
14
14
|
type: globalThis.PropType<boolean>;
|
|
15
15
|
default: boolean;
|
|
@@ -52,14 +52,14 @@ declare const _default: import('vue').DefineComponent<globalThis.ExtractPropType
|
|
|
52
52
|
};
|
|
53
53
|
}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<globalThis.ExtractPropTypes<{
|
|
54
54
|
isAutoRefresh: import('vue').PropType<boolean>;
|
|
55
|
-
loading: {
|
|
56
|
-
type: globalThis.PropType<boolean>;
|
|
57
|
-
required: true;
|
|
58
|
-
};
|
|
59
55
|
pageSize: {
|
|
60
56
|
type: globalThis.PropType<number>;
|
|
61
57
|
required: true;
|
|
62
58
|
};
|
|
59
|
+
loading: {
|
|
60
|
+
type: globalThis.PropType<boolean>;
|
|
61
|
+
required: true;
|
|
62
|
+
};
|
|
63
63
|
showRefresh: {
|
|
64
64
|
type: globalThis.PropType<boolean>;
|
|
65
65
|
default: boolean;
|
|
@@ -173,4 +173,8 @@ F extends Record<string, any>> {
|
|
|
173
173
|
injectInfo?: F;
|
|
174
174
|
/** 数据视口最大高度最小值 */
|
|
175
175
|
dataViewMaxHeightMinValue?: number;
|
|
176
|
+
/** 视口可用高度(优先级高于 BODY_CONTENT_VIEWPORT_HEIGHT 老链 inject,低于 parentChannel inject);未传时回退 inject 链 + fallback 500 */
|
|
177
|
+
viewportHeight?: number;
|
|
178
|
+
/** 父级 tabs 族 channel 标识(setup 期 Symbol.for 快照,变更 console.error 忽略);命中后高度从父级 inject 取,优先级最高 */
|
|
179
|
+
parentChannel?: string;
|
|
176
180
|
}
|
package/types/hooks/index.d.ts
CHANGED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ComputedRef } from 'vue';
|
|
2
|
+
|
|
3
|
+
/** useChannelViewportHeight 第二参数 options */
|
|
4
|
+
export interface UseChannelViewportHeightOptions {
|
|
5
|
+
/** body inject 未命中时的最终兜底,默认 0 */
|
|
6
|
+
fallback?: number;
|
|
7
|
+
}
|
|
8
|
+
/** useChannelViewportHeight 入参对象形状(约定 reactive,props 即满足) */
|
|
9
|
+
export interface UseChannelViewportHeightMaybeProps {
|
|
10
|
+
/** props.viewportHeight,优先级位于 parentChannel inject 之下、body inject 之上 */
|
|
11
|
+
viewportHeight?: number;
|
|
12
|
+
/** tabs 族 channel 父级标识——setup 期 Symbol.for 快照,变更 console.error 忽略 */
|
|
13
|
+
parentChannel?: string;
|
|
14
|
+
}
|
|
15
|
+
/** useChannelViewportHeight 返回值 */
|
|
16
|
+
export interface UseChannelViewportHeightReturn {
|
|
17
|
+
/** 最终视口高度,链路 parentChannel > viewportHeight > body inject > fallback */
|
|
18
|
+
viewportHeightFinal: ComputedRef<number>;
|
|
19
|
+
/** parent inject 命中时取 payload.level,否则 0;调用方算 childLevel = parentLevel + 1 */
|
|
20
|
+
parentLevel: ComputedRef<number>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* tabs 族 channel 视口高度解析 hook。
|
|
24
|
+
* 链路:parentChannel inject > maybeProps.viewportHeight > body inject > options.fallback。
|
|
25
|
+
* `parentChannel` setup 期 Symbol.for 快照,变更 console.error 忽略(非响应式)。
|
|
26
|
+
* 入参 maybeProps 约定 reactive 对象(props 即满足);返回 viewportHeightFinal/parentLevel 均为 computed。
|
|
27
|
+
*/
|
|
28
|
+
export declare const useChannelViewportHeight: (maybeProps: UseChannelViewportHeightMaybeProps, options?: UseChannelViewportHeightOptions) => UseChannelViewportHeightReturn;
|
package/types/inject/key.d.ts
CHANGED
|
@@ -12,19 +12,19 @@ import { ModalLevel, ShelfController } from '../components/modal';
|
|
|
12
12
|
* 产生多个 Symbol → inject/provide 失配 → 列表精细化高度计算塌陷至 fallback。
|
|
13
13
|
*/
|
|
14
14
|
export declare const BODY_CONTENT_VIEWPORT_HEIGHT: unique symbol;
|
|
15
|
-
/**
|
|
16
|
-
* 全屏高度预算 channel
|
|
17
|
-
* ---
|
|
18
|
-
* HeightProvider 沿此 channel 向后代 provide「扣除自身 chrome 后剩余可用高度」,
|
|
19
|
-
* 形成与 BODY_CONTENT_VIEWPORT_HEIGHT 完全独立、并存的递归高度预算链。
|
|
20
|
-
* ---
|
|
21
|
-
* 同样使用 `Symbol.for` 全局注册表保证跨包 / 跨 chunk / 跨 ESM 实例的 Symbol 唯一性
|
|
22
|
-
* (dev 走 src、prod 走 es 双 module instance,`Symbol(key)` 会产生两个不同 Symbol
|
|
23
|
-
* 导致 provide/inject 失配 → 预算链断裂)。
|
|
24
|
-
*/
|
|
25
|
-
export declare const FULLSCREEN_HEIGHT_CHANNEL: unique symbol;
|
|
26
15
|
/**
|
|
27
16
|
* 弹窗架子 inject key 工厂——按 level 参数化。
|
|
28
17
|
* Symbol.for 全局注册表保证跨包/跨 chunk/跨 ESM 实例唯一(同 BODY_CONTENT_VIEWPORT_HEIGHT)。
|
|
29
18
|
*/
|
|
30
19
|
export declare function getModalShelfInjectionKey(level: ModalLevel): InjectionKey<ShelfController>;
|
|
20
|
+
/**
|
|
21
|
+
* TabsMain 视觉嵌套层级 inject key(独立于 channel payload.level)。
|
|
22
|
+
* ---
|
|
23
|
+
* 与 channel 体系完全解耦:
|
|
24
|
+
* - channel level:高度预算用,父未配 channel 时子 selfLevel=1(看是否 inject 命中)
|
|
25
|
+
* - 视觉 level:物理嵌套深度,每层 TabsMain(含 refine=false)+1 → provide 给后代
|
|
26
|
+
* ---
|
|
27
|
+
* 用途:TabsHeader 据此应用层级化样式(L1 卡片 / L2 下划线 / L3 紧凑 / L4+ 仅文字加粗)。
|
|
28
|
+
* setup 期一次性 provide number(不响应式);Symbol.for 跨包/chunk/ESM 实例唯一(同上)。
|
|
29
|
+
*/
|
|
30
|
+
export declare const TABS_MAIN_VISUAL_LEVEL: InjectionKey<number>;
|