@manohub/ui 1.0.3 → 1.0.5
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/dist/components/card/index.d.ts +7 -8
- package/dist/components/dialog/index.d.ts +3 -3
- package/dist/components/dialog/index.js +3 -2
- package/dist/components/form/index.d.ts +54 -106
- package/dist/components/input/index.d.ts +35 -50
- package/dist/components/input/index.js +7 -10
- package/dist/components/page/index.d.ts +21 -28
- package/dist/components/panel/index.d.ts +6 -8
- package/dist/components/radio/index.d.ts +11 -14
- package/dist/components/select/index.d.ts +23 -35
- package/dist/components/table/index.d.ts +9 -9
- package/dist/components/tree/index.d.ts +16 -24
- package/dist/services/dialog.d.ts +3 -1
- package/dist/services/dialog.js +2 -0
- package/dist/styles/components/avatar.css +5 -7
- package/dist/styles/components/avatar.tokens.css +4 -9
- package/dist/styles/components/badge.css +3 -6
- package/dist/styles/components/badge.tokens.css +5 -17
- package/dist/styles/components/button.css +33 -57
- package/dist/styles/components/button.tokens.css +5 -14
- package/dist/styles/components/capsule.css +11 -20
- package/dist/styles/components/capsule.tokens.css +4 -9
- package/dist/styles/components/card.css +13 -24
- package/dist/styles/components/checkbox.css +9 -15
- package/dist/styles/components/checkbox.tokens.css +4 -9
- package/dist/styles/components/code-block.css +30 -40
- package/dist/styles/components/code-block.tokens.css +7 -20
- package/dist/styles/components/collapse.css +6 -10
- package/dist/styles/components/collapse.tokens.css +4 -9
- package/dist/styles/components/dialog.css +19 -27
- package/dist/styles/components/dialog.tokens.css +9 -9
- package/dist/styles/components/divider.css +9 -14
- package/dist/styles/components/divider.tokens.css +4 -9
- package/dist/styles/components/drawer.css +12 -16
- package/dist/styles/components/drawer.tokens.css +7 -9
- package/dist/styles/components/filter.css +13 -24
- package/dist/styles/components/form.css +76 -143
- package/dist/styles/components/form.tokens.css +9 -6
- package/dist/styles/components/input.css +80 -166
- package/dist/styles/components/input.tokens.css +5 -13
- package/dist/styles/components/layout.css +13 -29
- package/dist/styles/components/loading.css +6 -10
- package/dist/styles/components/loading.tokens.css +4 -9
- package/dist/styles/components/notice.css +1 -1
- package/dist/styles/components/notice.tokens.css +8 -6
- package/dist/styles/components/notification.css +9 -12
- package/dist/styles/components/notification.tokens.css +4 -12
- package/dist/styles/components/page.css +12 -22
- package/dist/styles/components/pagination.css +10 -15
- package/dist/styles/components/pagination.tokens.css +4 -9
- package/dist/styles/components/query-state.css +1 -1
- package/dist/styles/components/query-state.tokens.css +6 -0
- package/dist/styles/components/radio.css +10 -25
- package/dist/styles/components/radio.tokens.css +4 -9
- package/dist/styles/components/search.css +10 -18
- package/dist/styles/components/select.css +63 -109
- package/dist/styles/components/select.tokens.css +4 -12
- package/dist/styles/components/skeleton.css +4 -7
- package/dist/styles/components/skeleton.tokens.css +4 -9
- package/dist/styles/components/steps.css +9 -12
- package/dist/styles/components/steps.tokens.css +4 -12
- package/dist/styles/components/switch.css +5 -8
- package/dist/styles/components/switch.tokens.css +4 -9
- package/dist/styles/components/tabbar.css +10 -11
- package/dist/styles/components/tabbar.tokens.css +4 -9
- package/dist/styles/components/table.css +52 -86
- package/dist/styles/components/table.tokens.css +5 -6
- package/dist/styles/components/tag.css +13 -23
- package/dist/styles/components/tag.tokens.css +5 -11
- package/dist/styles/components/text.css +11 -23
- package/dist/styles/components/toast.css +11 -18
- package/dist/styles/components/toast.tokens.css +6 -9
- package/dist/styles/components/tooltip.css +9 -11
- package/dist/styles/components/tooltip.tokens.css +5 -9
- package/dist/styles/components/tree.css +14 -27
- package/dist/styles/components/tree.tokens.css +5 -6
- package/dist/styles/components/upload.css +8 -13
- package/dist/styles/components/upload.tokens.css +4 -9
- package/dist/styles/index.css +27 -50
- package/dist/styles/operations/collapse.css +12 -25
- package/dist/styles/operations/popup.css +41 -79
- package/dist/styles/operations/tabs.css +14 -32
- package/dist/styles/reset.css +0 -61
- package/package.json +2 -2
|
@@ -1,23 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Checkbox —— 复选框(真实 input 负责可访问性,方块自绘,状态走 data-state 协议)。
|
|
3
3
|
*
|
|
4
|
-
* 几何取自设计稿《MH后台-0911》`控件`
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* - `表单/checkbox/0.5`(`0:4095`):14×14 / `#2660ff` 实底 / 白横杠(半选)。
|
|
4
|
+
* 几何取自设计稿《MH后台-0911》`控件` 画布的三枚原子件(逐个实测):`0:4101` 未选 14×14 / 白底 /
|
|
5
|
+
* 边 `#dcdcdc` / **r3**;`0:4098` 选中 14×14 / `#2660ff` 实底 / 白勾;`0:4095` 半选 / 实底 / 白横杠。
|
|
6
|
+
* **标准档是 14**;勾图标 **10px**(白勾在设计里占 8×6、对角线 ≈ 10,恰是 14 框体内的视觉满宽)。
|
|
8
7
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* **框体圆角走主题的 `--ui-radius-xs`(3px),不写字面量**:写死会把 farris 主题声明的 3px 挡住
|
|
9
|
+
* (那主题注释写着「复选框框体 3px ✓」,实际从未生效)。框体边取 `--ui-base-400`:设计让勾选框比容器线
|
|
10
|
+
* 深一档(`#dcdcdc` vs `#e6e6e6`),否则 14px 的小方块在浅底上看不见。
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* 否则 14px 的小方块在浅底上看不见。
|
|
16
|
-
*
|
|
17
|
-
* 档位只覆盖令牌、不复制规则体(与 `Switch` 同一口径)。
|
|
18
|
-
* 勾 / 横杠一律由内容承载,框体只管底与边:勾取 `@manohub/icon` 的 `check` 字形,
|
|
19
|
-
* 半选取一条横杠;**未选态靠框体的 `color: transparent` 让 currentColor 图标隐形** ——
|
|
20
|
-
* 不需要 `::after` 描画,也不需要为三态各备一套 DOM。
|
|
12
|
+
* 档位只覆盖令牌、不复制规则体(与 `Switch` 同口径)。勾 / 横杠一律由内容承载,框体只管底与边:
|
|
13
|
+
* **未选态靠框体的 `color: transparent` 让 currentColor 图标隐形** —— 不需要 `::after` 描画,
|
|
14
|
+
* 也不需要为三态各备一套 DOM。
|
|
21
15
|
*/
|
|
22
16
|
.mh-checkbox {
|
|
23
17
|
display: inline-flex;
|
|
@@ -3,16 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 本件自己的几何 / 尺寸 / 色彩槽位;只服务本件,故不随主题进 `@manohub/theme`。
|
|
5
5
|
*
|
|
6
|
-
* ## 抽出说明
|
|
7
|
-
* 本文件从面文件里抽出(原先混写在 `checkbox.css` 顶部):这些是**基础值**,锚在
|
|
8
|
-
* `[data-manohub-ui]` —— 跨包唯一作用域锚,由入口层无条件写在应用容器上,因此**任何落在
|
|
9
|
-
* 容器里的分件都取得到值**,不再依赖「声明在某个组件根类上」这条脆弱假设
|
|
10
|
-
* (历史症状:跨件消费的 `--ui-*-group-*` 取不到值,组内间距变 0)。
|
|
11
6
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
|
|
7
|
+
* 令牌锚 `[data-manohub-ui]`(容器是每个分件的祖先 ⇒ 落在容器里的分件都取得到值)。
|
|
8
|
+
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里(搬走会让档位失效);
|
|
9
|
+
* 新增组件要登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
10
|
+
*/
|
|
16
11
|
[data-manohub-ui] {
|
|
17
12
|
/* 单件令牌(标准档 14 / 小 12 / 大 20;圆角取主题的 xs 档) */
|
|
18
13
|
--ui-checkbox-size: 14px;
|
|
@@ -1,39 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CodeBlock —— 代码块族(只读面 + 编辑面 + 语言角标 + 复制位)。
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* 族根 `.mh-code-block` 承载两形态共用部分(底 / 圆角 / 等宽字族 / 字号 / 行高 / 定位上下文),
|
|
5
|
+
* 差异只在槽位上:只读面 `__view`(`<pre>`,横向滚动、缺省不折行)、编辑面 `__editor`(`<textarea>`,
|
|
6
|
+
* 软换行)。共用同一个根 ⇒ 互切时块体不跳,且同源是**一处定义**(`code-block.tokens.css`)。
|
|
7
|
+
* 观感基准:无边框浅底块 + 方圆角 + 右上角语言角标 + 悬浮/聚焦让位后出现的方形图标复制按钮。
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* 故标记是 `class="mh-button mh-button--icon mh-code-block__copy"`。
|
|
15
|
-
* - **复制按钮与语言角标都不能放进代码面里**:只读面是 `overflow-x: auto` 的滚动容器,会裁掉
|
|
16
|
-
* 外挂的绝对定位件 —— 故两者都挂在**族根**上(族根只做 `position: relative`)。
|
|
9
|
+
* 三条结构决定:
|
|
10
|
+
* - **复制按钮的面归按钮族**(`.mh-button--icon`),本族只补定位与浮底,故标记是
|
|
11
|
+
* `class="mh-button mh-button--icon mh-code-block__copy"`;
|
|
12
|
+
* - **复制按钮与语言角标都挂在族根上**(族根只做 `position: relative`):只读面是 `overflow-x: auto`
|
|
13
|
+
* 的滚动容器,会裁掉外挂的绝对定位件;
|
|
17
14
|
* - **隐藏用 `opacity` + `pointer-events`**(不是 `visibility` / `display`):键盘仍能 Tab 到它,
|
|
18
|
-
* `:focus-within`
|
|
15
|
+
* `:focus-within` 会把它显出来,且隐藏时不残留看不见的可点区。
|
|
19
16
|
* - **编辑面画框的是根**(圆角归根、面自身透明无框):原生 `textarea` 的框模型(内距 / 滚动条 /
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* ## 本族与按钮族的层序
|
|
17
|
+
* 聚焦轮廓)会把框画歪。
|
|
23
18
|
*
|
|
24
|
-
*
|
|
25
|
-
* `box-shadow`
|
|
26
|
-
*
|
|
27
|
-
* 修法不是调层序,而是让本族的声明**升一档特异性**(`.mh-code-block > .mh-code-block__copy`,
|
|
28
|
-
* 悬停 / 成功态再各叠一层)—— 按钮族日后换皮肤也压不掉它。
|
|
19
|
+
* ⚠️ **层序**:`styles/index.css` 里本文件在 `button.css` **之前**导入 ⇒ 同特异性的
|
|
20
|
+
* `background` / `color` / `box-shadow` 会被按钮族压掉。修法不是调层序,而是把本族声明**升一档**
|
|
21
|
+
* (`.mh-code-block > .mh-code-block__copy`)—— 按钮族日后换皮肤也压不掉它。
|
|
29
22
|
*
|
|
30
|
-
* 零 JS
|
|
23
|
+
* 零 JS 可表达全部皮肤 + 角标让位 + 复制位显隐;**真正的复制动作归组件层**(要 `navigator.clipboard`)。
|
|
31
24
|
*/
|
|
32
25
|
|
|
33
|
-
/* ===== 族根:两形态共用的底 / 圆角 /
|
|
26
|
+
/* ===== 族根:两形态共用的底 / 圆角 / 字族 + 角标与复制位的定位上下文 ===== */
|
|
34
27
|
.mh-code-block {
|
|
35
28
|
position: relative;
|
|
36
|
-
min-width: 0; /* flex / grid 里能被压到容器宽(否则长行的 min-content
|
|
29
|
+
min-width: 0; /* flex / grid 里能被压到容器宽(否则长行的 min-content 会撑宽轨道、页面横向溢出) */
|
|
37
30
|
border-radius: var(--ui-code-block-radius);
|
|
38
31
|
background: var(--ui-code-block-bg);
|
|
39
32
|
font-family: var(--ui-font-mono);
|
|
@@ -41,8 +34,8 @@
|
|
|
41
34
|
line-height: var(--ui-code-block-line-height);
|
|
42
35
|
color: var(--ui-base-content);
|
|
43
36
|
}
|
|
44
|
-
/*
|
|
45
|
-
|
|
37
|
+
/* 聚焦环与输入框族同一句(主色弱底当环)。**只在编辑档给**:只读面本身不可聚焦,
|
|
38
|
+
给它加环会在「键盘聚焦复制位」时冒出一圈 —— 只读块从前没有这一圈,保持原样。 */
|
|
46
39
|
.mh-code-block--editable {
|
|
47
40
|
transition: box-shadow 0.15s ease, background-color 0.15s ease, color 0.15s ease;
|
|
48
41
|
}
|
|
@@ -81,7 +74,7 @@
|
|
|
81
74
|
line-height: inherit;
|
|
82
75
|
color: inherit;
|
|
83
76
|
outline: none;
|
|
84
|
-
resize: none; /* 高度由 autoSize / maxHeight
|
|
77
|
+
resize: none; /* 高度由 autoSize / maxHeight 决定,不留拖拽把手 */
|
|
85
78
|
overflow: auto;
|
|
86
79
|
tab-size: 2;
|
|
87
80
|
}
|
|
@@ -89,8 +82,7 @@
|
|
|
89
82
|
color: var(--ui-base-content-subtle);
|
|
90
83
|
}
|
|
91
84
|
|
|
92
|
-
/* 只读档(原生 `readonly
|
|
93
|
-
代码是拿来读的;只是光标不再是文本输入那一支(与只读面观感一致) */
|
|
85
|
+
/* 只读档(原生 `readonly`:仍可选中 / 滚动 / 复制)—— **不弱化字色**(代码是拿来读的),只换光标 */
|
|
94
86
|
.mh-code-block--editable:has(> .mh-code-block__editor[readonly]) {
|
|
95
87
|
cursor: default;
|
|
96
88
|
}
|
|
@@ -106,9 +98,9 @@
|
|
|
106
98
|
}
|
|
107
99
|
|
|
108
100
|
/* ===== 语言角标(可选):两形态的槽位**有意不同** =====
|
|
109
|
-
* 共用部分(绝对定位 + 等宽小字 +
|
|
110
|
-
*
|
|
111
|
-
*
|
|
101
|
+
* 共用部分(绝对定位 + 等宽小字 + 不吃指针)写在基类;只读面与复制位**同槽位**(等高 32),
|
|
102
|
+
* 悬停 / 聚焦时淡出让位(零 JS 互斥);编辑面**不叠在文字上**(内容会折行,压住就看不见了),
|
|
103
|
+
* 而是让首行右端**预留**出它的宽度。 */
|
|
112
104
|
.mh-code-block__lang {
|
|
113
105
|
position: absolute;
|
|
114
106
|
display: flex;
|
|
@@ -118,7 +110,7 @@
|
|
|
118
110
|
line-height: 1;
|
|
119
111
|
color: var(--ui-base-content-subtle);
|
|
120
112
|
user-select: none;
|
|
121
|
-
pointer-events: none; /*
|
|
113
|
+
pointer-events: none; /* 装饰位不吃指针,否则会挡住复制位的悬停热区 */
|
|
122
114
|
}
|
|
123
115
|
/* 只读档:与复制位同槽位(让位互换时基线不跳) */
|
|
124
116
|
.mh-code-block:not(.mh-code-block--editable) > .mh-code-block__lang {
|
|
@@ -132,7 +124,7 @@
|
|
|
132
124
|
.mh-code-block.is-hover > .mh-code-block__lang {
|
|
133
125
|
opacity: 0;
|
|
134
126
|
}
|
|
135
|
-
/*
|
|
127
|
+
/* 编辑档:贴编辑面右上角,并给编辑面首行右端预留出它的宽度 */
|
|
136
128
|
.mh-code-block--editable > .mh-code-block__lang {
|
|
137
129
|
top: var(--ui-code-block-editor-padding-y);
|
|
138
130
|
right: var(--ui-code-block-editor-padding-x);
|
|
@@ -150,8 +142,7 @@
|
|
|
150
142
|
border-radius: var(--ui-radius-full);
|
|
151
143
|
background: var(--ui-code-block-chip-bg);
|
|
152
144
|
color: var(--ui-primary);
|
|
153
|
-
/*
|
|
154
|
-
同一元素上两条规则,后者胜出,故这里写 inherit 即等价于旧行为 */
|
|
145
|
+
/* 回到「继承外部行高」:族根那枚等宽行高是给代码面的,chip 要跟正文行 */
|
|
155
146
|
line-height: inherit;
|
|
156
147
|
}
|
|
157
148
|
/* 中性档(规范 `.chip--plain`:规则 ID 这类不强调的短标识) */
|
|
@@ -161,8 +152,7 @@
|
|
|
161
152
|
border-radius: var(--ui-code-block-radius);
|
|
162
153
|
}
|
|
163
154
|
|
|
164
|
-
/* ===== 复制位(面归按钮族,本族只给定位、浮底、方形几何、显隐) =====
|
|
165
|
-
* 选择器**刻意升一档**(`.mh-code-block >`):同特异性下按钮族的档位规则会压掉这几条(见文件头) */
|
|
155
|
+
/* ===== 复制位(面归按钮族,本族只给定位、浮底、方形几何、显隐) ===== */
|
|
166
156
|
.mh-code-block > .mh-code-block__copy {
|
|
167
157
|
position: absolute;
|
|
168
158
|
top: var(--ui-code-block-copy-inset);
|
|
@@ -179,7 +169,7 @@
|
|
|
179
169
|
pointer-events: none;
|
|
180
170
|
transition: opacity 0.15s ease, border-color 0.15s ease, color 0.15s ease;
|
|
181
171
|
}
|
|
182
|
-
/* 显形:族根悬停 / 键盘聚焦进入(`.is-hover`
|
|
172
|
+
/* 显形:族根悬停 / 键盘聚焦进入(`.is-hover` 是**静态档**:静态页与读图对状态,与全库三源等价) */
|
|
183
173
|
.mh-code-block:hover > .mh-code-block__copy,
|
|
184
174
|
.mh-code-block:focus-within > .mh-code-block__copy,
|
|
185
175
|
.mh-code-block.is-hover > .mh-code-block__copy {
|
|
@@ -194,7 +184,7 @@
|
|
|
194
184
|
color: var(--ui-primary);
|
|
195
185
|
box-shadow: none;
|
|
196
186
|
}
|
|
197
|
-
/* 复制成功态(组件下发 `data-state
|
|
187
|
+
/* 复制成功态(组件下发 `data-state`;静态档 `.is-copied` 供读图) */
|
|
198
188
|
.mh-code-block > .mh-code-block__copy.is-copied,
|
|
199
189
|
.mh-code-block > .mh-code-block__copy[data-state='copied'] {
|
|
200
190
|
border-color: var(--ui-success);
|
|
@@ -1,26 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* code-block ——
|
|
2
|
+
* code-block —— 单件令牌(**基础值**;只服务本族,故不随主题进 `@manohub/theme`)。
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* **两形态共用同一份令牌**(只读面 `__view` 与编辑面 `__editor` 共用底 / 圆角 / 字族 / 字号 / 行高):
|
|
5
|
+
* 一处定义、两形态一起变,「视觉同源、互切不跳」就落在这里(从前是两套令牌各写一份同值、靠注释互相提醒)。
|
|
6
|
+
* 有意不同的只有内距:只读面上下 12(与左右齐)、编辑面上下 8(`textarea` 行高自带行距,再给 12 会显空)。
|
|
5
7
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* 这正是「视觉同源、互切不跳」的落点:一处定义,两形态一起变。
|
|
10
|
-
* 从前是两套单件令牌各写一份同值(`--ui-code-*` 与 `--ui-code-editor-*`),
|
|
11
|
-
* 靠注释互相提醒"要一致";0.9.0 收成一族(见 `docs/guide/migration-0-9.md`)。
|
|
12
|
-
*
|
|
13
|
-
* 两形态**有意不同**的只有内距:只读面上下 12(与左右齐)、编辑面上下 8
|
|
14
|
-
* (`textarea` 的行高自带行距,上下再给 12 会显得空)—— 它们各自保留一枚令牌。
|
|
15
|
-
*
|
|
16
|
-
* ## 抽出说明
|
|
17
|
-
*
|
|
18
|
-
* 这些是**基础值**,锚在 `[data-manohub-ui]` —— 跨包唯一作用域锚,由入口层无条件写在应用容器上,
|
|
19
|
-
* 因此**任何落在容器里的分件都取得到值**(历史症状:跨件消费的 `--ui-*-group-*` 取不到值,组内间距变 0)。
|
|
20
|
-
*
|
|
21
|
-
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里 —— 它们靠「同一元素上两个
|
|
22
|
-
* 选择器改写同一个令牌」生效,搬到本文件会让档位失效。
|
|
23
|
-
* ⚠️ 新增组件要登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
8
|
+
* 令牌是**基础值**、锚 `[data-manohub-ui]`:任何落在容器里的分件都取得到值(「跨件消费的令牌取不到值」
|
|
9
|
+
* 那类静默失效由此消失)。⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里(搬来会失效);
|
|
10
|
+
* 新增组件登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
24
11
|
*/
|
|
25
12
|
[data-manohub-ui] {
|
|
26
13
|
/* 单件令牌(挂在容器上:族根 / 只读面 / 编辑面 / 复制位都在其下) */
|
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Collapse 的头行皮肤(**操作层 `../operations/collapse.css` 只给行为,这里给折叠头的面**)。
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* 之所以不并进操作层:操作层要能伺候任意皮肤(卡片头 / 分组头 / 面板头),而本件是**自带头的折叠**。
|
|
4
|
+
* 分工:操作层 → 开合派生、触发器钩子、键盘焦点环、箭头转向(不写任何底 / 边 / 内距 / 字号 / gap);
|
|
5
|
+
* 本文件 → 「头行怎么排」:标题排版、标题位与尾部的分布、箭头尺寸与色。不并进操作层的原因:操作层要能
|
|
6
|
+
* 伺候任意皮肤(卡片头 / 分组头 / 面板头),而本件是**自带头的折叠**。
|
|
8
7
|
*
|
|
9
|
-
* 类名沿用操作层的「词根-角色」写法(`mh-collapse-header`
|
|
10
|
-
* `
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* 出处:`@aihub/theme` 的 `playground/components/collapse.html` 与 `components/card.css`
|
|
14
|
-
* (头行「标题 + 箭头」、标题与箭头间距 8px、标题 14/600 同二级标题档)。
|
|
8
|
+
* 类名沿用操作层的「词根-角色」写法(`mh-collapse-header` 一类,与规范同名便于对照);本仓既有组件的
|
|
9
|
+
* `__` 写法不适用于操作层挂点 —— 那些元素互不为父子(触发器 ↔ 浮层)。
|
|
10
|
+
* 出处:规范的 `collapse.html` 与 `card.css`(头行「标题 + 箭头」、间距 8px、标题 14/600 同二级标题档)。
|
|
15
11
|
*/
|
|
16
12
|
|
|
17
13
|
/* 头行(触发器本体):标题位 ←→ 尾部(箭头 + 额外位),整行可点 */
|
|
@@ -3,16 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 本件自己的几何 / 尺寸 / 色彩槽位;只服务本件,故不随主题进 `@manohub/theme`。
|
|
5
5
|
*
|
|
6
|
-
* ## 抽出说明
|
|
7
|
-
* 本文件从面文件里抽出(原先混写在 `collapse.css` 顶部):这些是**基础值**,锚在
|
|
8
|
-
* `[data-manohub-ui]` —— 跨包唯一作用域锚,由入口层无条件写在应用容器上,因此**任何落在
|
|
9
|
-
* 容器里的分件都取得到值**,不再依赖「声明在某个组件根类上」这条脆弱假设
|
|
10
|
-
* (历史症状:跨件消费的 `--ui-*-group-*` 取不到值,组内间距变 0)。
|
|
11
6
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
|
|
7
|
+
* 令牌锚 `[data-manohub-ui]`(容器是每个分件的祖先 ⇒ 落在容器里的分件都取得到值)。
|
|
8
|
+
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里(搬走会让档位失效);
|
|
9
|
+
* 新增组件要登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
10
|
+
*/
|
|
16
11
|
[data-manohub-ui] {
|
|
17
12
|
/* 单件几何(只服务本件,故写在这里;跨件令牌才进 theme/) */
|
|
18
13
|
--ui-collapse-header-gap: var(--ui-space-2); /* 标题位与尾部间距 8px(规范实测) */
|
|
@@ -1,19 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Dialog —— 对话框皮肤(与操作层并列组合:`class="mh-popup mh-dialog"`)。
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* 关闭件 20×20;真实遮罩按 Mask01 黑 45% —— 用户裁定,浅灰 25% + 模糊只留给静态样张)。
|
|
4
|
+
* 出处:规范(面板 520 / 小档 400 / 大档 760 / 圆角 16 / 软投影;页头 16 上内距 + 24 行高、内容内距 24、
|
|
5
|
+
* 底栏 0/24/16;**三段之间无分割线**(原页头 border-bottom 与底栏 border-top 已按反馈撤除);
|
|
6
|
+
* 关闭件 20×20;真实遮罩按 Mask01 黑 45% —— 用户裁定,浅灰 25% + 模糊只留给静态样张)。
|
|
8
7
|
*
|
|
9
|
-
* 行为全在原生与操作层:`<dialog>`
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
|
|
14
|
-
*
|
|
15
|
-
* 边界(有意不做):规范的 `.popconfirm`(气泡确认)不在本件 —— 它是「浮层 + 按钮族」的组合用法
|
|
16
|
-
* (`class="mh-popup mh-card"` + 按钮),不需要新的面;尺寸 220/r10 那组值也不值得为它单开一族。
|
|
8
|
+
* 行为全在原生与操作层:`<dialog>` 给模态语义、Esc 关闭、焦点陷阱与 `::backdrop`;开合与定位归
|
|
9
|
+
* `styles/operations/popup.css`(它认 `[open]`)—— 本件只给面;类名与面文件名同根(`.mh-dialog*`)。
|
|
10
|
+
* 边界:规范的 `.popconfirm`(气泡确认)不在本件 —— 那是「浮层 + 按钮族」的组合用法
|
|
11
|
+
* (`class="mh-popup mh-card"` + 按钮),不需要新的面;尺寸 220/r10 也不值得单开一族。
|
|
17
12
|
*/
|
|
18
13
|
.mh-dialog {
|
|
19
14
|
/* 三段式列布局:页头 / 底栏由内容定高(`flex: none`),内容区吃掉剩余高度。
|
|
@@ -25,18 +20,11 @@
|
|
|
25
20
|
(特异性 0-3-0,高于本行)—— **那条兜底不能删**。 */
|
|
26
21
|
display: flex;
|
|
27
22
|
flex-direction: column;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
* 一旦命中就把 UA 的 `auto` 归零 ⇒ 弹窗**贴上贴左**(`inset: 0` + 无 margin 的必然结果)。
|
|
34
|
-
* 2026-09-30 实测:在 `apps/skill`(还带 Tailwind)里 `getComputedStyle` 读到 `margin: 0px`、
|
|
35
|
-
* `rect = (0, 0)`;显式补 `auto` 后立刻回到 `(432, 43)` 的精确居中。
|
|
36
|
-
*
|
|
37
|
-
* 与 `Drawer` 那条 `margin: 0` 是**同一件事的两面**:那边要贴侧、必须把 `auto` 归零,
|
|
38
|
-
* 这边要居中、必须把 `auto` 写实 —— 两边都**不能交给 UA**。`Toast` 同(它也显式归零)。
|
|
39
|
-
*/
|
|
23
|
+
/* **`margin: auto` 必须写**(居中靠 `inset: 0` + `margin: auto`):不能依赖 UA 给 `dialog` 的那条
|
|
24
|
+
`margin: auto` —— 作者源无条件压过 UA 源(与特异性无关),而**几乎每个宿主的 reset 都把 `*` 的
|
|
25
|
+
margin 归零**(Tailwind preflight / 本仓 ui reset 都会发下),一旦命中 `auto` 就没了 ⇒ 弹窗
|
|
26
|
+
**贴上贴左**(实测 `getComputedStyle` 读到 `margin: 0px`、`rect = (0, 0)`;显式补 `auto` 后精确居中)。
|
|
27
|
+
与 `Drawer` 那条 `margin: 0` 是同一件事的两面(那边要贴侧、必须归零),两边都**不能交给 UA**。 */
|
|
40
28
|
margin: auto;
|
|
41
29
|
width: var(--ui-dialog-width);
|
|
42
30
|
max-width: var(--ui-dialog-width);
|
|
@@ -48,6 +36,10 @@
|
|
|
48
36
|
box-shadow: var(--ui-shadow-card);
|
|
49
37
|
color: var(--ui-base-content);
|
|
50
38
|
}
|
|
39
|
+
.mh-dialog--sm {
|
|
40
|
+
width: var(--ui-dialog-width-sm);
|
|
41
|
+
max-width: var(--ui-dialog-width-sm);
|
|
42
|
+
}
|
|
51
43
|
.mh-dialog--lg {
|
|
52
44
|
width: var(--ui-dialog-width-lg);
|
|
53
45
|
max-width: var(--ui-dialog-width-lg);
|
|
@@ -65,7 +57,7 @@
|
|
|
65
57
|
justify-content: space-between;
|
|
66
58
|
gap: var(--ui-space-2);
|
|
67
59
|
flex: none; /* 高度受控时不被压缩(同 Drawer) */
|
|
68
|
-
padding: var(--ui-
|
|
60
|
+
padding: var(--ui-dialog-padding-y) var(--ui-dialog-padding-x) 0;
|
|
69
61
|
font-size: var(--ui-font-heading); /* 规范 16px */
|
|
70
62
|
line-height: var(--ui-line-heading);
|
|
71
63
|
font-weight: var(--ui-weight-medium);
|
|
@@ -135,7 +127,7 @@
|
|
|
135
127
|
flex: 1 1 auto;
|
|
136
128
|
min-height: 0;
|
|
137
129
|
overflow-y: auto;
|
|
138
|
-
padding: var(--ui-
|
|
130
|
+
padding: var(--ui-dialog-padding-x);
|
|
139
131
|
font-size: var(--ui-font-body);
|
|
140
132
|
line-height: var(--ui-line-body);
|
|
141
133
|
color: var(--ui-base-content);
|
|
@@ -154,5 +146,5 @@
|
|
|
154
146
|
justify-content: flex-end;
|
|
155
147
|
gap: var(--ui-space-2);
|
|
156
148
|
flex: none; /* 高度受控时贴底且不被压缩(同 Drawer) */
|
|
157
|
-
padding: 0 var(--ui-
|
|
149
|
+
padding: 0 var(--ui-dialog-padding-x) var(--ui-dialog-padding-y);
|
|
158
150
|
}
|
|
@@ -3,20 +3,20 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 本件自己的几何 / 尺寸 / 色彩槽位;只服务本件,故不随主题进 `@manohub/theme`。
|
|
5
5
|
*
|
|
6
|
-
* ## 抽出说明
|
|
7
|
-
* 本文件从面文件里抽出(原先混写在 `dialog.css` 顶部):这些是**基础值**,锚在
|
|
8
|
-
* `[data-manohub-ui]` —— 跨包唯一作用域锚,由入口层无条件写在应用容器上,因此**任何落在
|
|
9
|
-
* 容器里的分件都取得到值**,不再依赖「声明在某个组件根类上」这条脆弱假设
|
|
10
|
-
* (历史症状:跨件消费的 `--ui-*-group-*` 取不到值,组内间距变 0)。
|
|
11
6
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
|
|
7
|
+
* 令牌锚 `[data-manohub-ui]`(容器是每个分件的祖先 ⇒ 落在容器里的分件都取得到值)。
|
|
8
|
+
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里(搬走会让档位失效);
|
|
9
|
+
* 新增组件要登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
10
|
+
*/
|
|
16
11
|
[data-manohub-ui] {
|
|
17
12
|
/* 单件令牌 */
|
|
18
13
|
--ui-dialog-width: 520px; /* 规范标准宽 */
|
|
14
|
+
--ui-dialog-width-sm: 400px; /* 小档:一句话确认(命令式缺省) */
|
|
19
15
|
--ui-dialog-width-lg: 760px;
|
|
16
|
+
/* 内距两档:x = 正文四边 + 页头与底栏左右(正文上下与左右同值,故四边取 x)/ y = 页头上与底栏下。
|
|
17
|
+
要单独改某一段,在那段上就地覆盖即可(令牌会继承) */
|
|
18
|
+
--ui-dialog-padding-x: var(--ui-space-6);
|
|
19
|
+
--ui-dialog-padding-y: var(--ui-space-4);
|
|
20
20
|
--ui-dialog-radius: 16px; /* 规范 r16(本仓圆角刻度最大 8,故按实测给) */
|
|
21
21
|
--ui-dialog-close-size: 28px; /* 关闭件的点击热区(字形 14 居中) */
|
|
22
22
|
/* 规范 Mask01 黑 45%(用户 2026-09-15 裁定:真实遮罩用黑透明;浅灰 25% + blur 是专页样张特征) */
|
|
@@ -1,22 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Divider —— 分隔线(水平 / 垂直 × 实线 / 虚线 × 可带中段文字)。
|
|
3
3
|
*
|
|
4
|
-
* 出处:设计稿《MH后台-0911》内容区**用了 44 处** 1px
|
|
5
|
-
*
|
|
6
|
-
* -
|
|
7
|
-
*
|
|
8
|
-
* 虚线档另按**线型档**走 `--ui-line-dashed`(= `base-400`,见 `@manohub/theme` 的 `default/colors.css`
|
|
9
|
-
* 头「三条口径」第 2 条):同样粗细下虚线的墨迹只有实线的一半,取实线色会整条发虚。
|
|
4
|
+
* 出处:设计稿《MH后台-0911》内容区**用了 44 处** 1px 分隔线,取值统一:水平 `0:2128` = 1200×1、
|
|
5
|
+
* 垂直 `0:3920` = 1×708、色 `#e6e6e6` = `--ui-base-300`(与页头下边线、表格线、卡片描边同源 ——
|
|
6
|
+
* 实线只有这一条「线」色)。虚线档按**线型档**走 `--ui-line-dashed`(= `base-400`,见 theme 的
|
|
7
|
+
* `default/colors.css` 第 2 条):同粗细下虚线的墨迹只有实线一半,取实线色会整条发虚。
|
|
10
8
|
*
|
|
11
|
-
* **为什么单独成件**:这条线在业务里被自绘了 44 次(`border-bottom: 1px solid #e6e6e6`
|
|
12
|
-
*
|
|
9
|
+
* **为什么单独成件**:这条线在业务里被自绘了 44 次(`border-bottom: 1px solid #e6e6e6` 一类),于是
|
|
10
|
+
* 「线色改一处漏一处」必然发生;收进一件后改线色 / 粗细只需动本文件。与 `Panel` / `Card` / `Table` 的
|
|
11
|
+
* 关系:那三件的框线**是它们自己的边界**(写在各件的面里),本件服务的是**内容之间**的分隔。
|
|
13
12
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* 垂直档的高度:`align-self: stretch` 走父容器的拉伸(父级是 flex 行时即整行高),
|
|
18
|
-
* 父级没有确定高度时退到 `min-height: 1em`。**不写 `height: 100%`** —— 那要求父级先有高度,
|
|
19
|
-
* 在 auto 高度的行内会塌成 0。
|
|
13
|
+
* 垂直档高度:`align-self: stretch` 走父容器的拉伸(父级是 flex 行时即整行高),父级无确定高度时退到
|
|
14
|
+
* `min-height: 1em`。**不写 `height: 100%`** —— 那要求父级先有高度,在 auto 高度的行内会塌成 0。
|
|
20
15
|
*/
|
|
21
16
|
.mh-divider {
|
|
22
17
|
box-sizing: border-box;
|
|
@@ -3,16 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 本件自己的几何 / 尺寸 / 色彩槽位;只服务本件,故不随主题进 `@manohub/theme`。
|
|
5
5
|
*
|
|
6
|
-
* ## 抽出说明
|
|
7
|
-
* 本文件从面文件里抽出(原先混写在 `divider.css` 顶部):这些是**基础值**,锚在
|
|
8
|
-
* `[data-manohub-ui]` —— 跨包唯一作用域锚,由入口层无条件写在应用容器上,因此**任何落在
|
|
9
|
-
* 容器里的分件都取得到值**,不再依赖「声明在某个组件根类上」这条脆弱假设
|
|
10
|
-
* (历史症状:跨件消费的 `--ui-*-group-*` 取不到值,组内间距变 0)。
|
|
11
6
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
|
|
7
|
+
* 令牌锚 `[data-manohub-ui]`(容器是每个分件的祖先 ⇒ 落在容器里的分件都取得到值)。
|
|
8
|
+
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里(搬走会让档位失效);
|
|
9
|
+
* 新增组件要登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
10
|
+
*/
|
|
16
11
|
[data-manohub-ui] {
|
|
17
12
|
/* 单件令牌 */
|
|
18
13
|
--ui-divider-line: var(--ui-base-300); /* **实线**档的线色(与卡片描边、表格线同源)——
|
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Drawer —— 抽屉皮肤(与操作层并列组合:`class="mh-popup mh-drawer"`)。
|
|
3
3
|
*
|
|
4
|
-
* 与 `Dialog` 同一套行为、只换落位:模态语义 / Esc / 焦点陷阱 / `::backdrop`
|
|
5
|
-
*
|
|
6
|
-
* 只把居中的面板改成贴屏幕某一侧、整屏高。
|
|
4
|
+
* 与 `Dialog` 同一套行为、只换落位:模态语义 / Esc / 焦点陷阱 / `::backdrop` / top layer 全由原生
|
|
5
|
+
* `<dialog>` 给(见 `dialog.css`)—— 本件**不新建任何浮层机制**,只把居中的面板改成贴某一侧、整屏高。
|
|
7
6
|
*
|
|
8
7
|
* 三条几何决策:
|
|
9
|
-
* - **`margin: 0` 必须写**:UA 给 `<dialog>` 的 `margin: auto`
|
|
10
|
-
*
|
|
11
|
-
* - **整屏高不切圆角**(`--ui-drawer-radius: 0
|
|
12
|
-
*
|
|
13
|
-
* -
|
|
14
|
-
* (`min(520px, 90vw)` 这类响应式写法),比在面里堆尺寸档更省事,也让「一屏窄了要收窄」可控。
|
|
8
|
+
* - **`margin: 0` 必须写**:UA 给 `<dialog>` 的 `margin: auto` 正是「居中」的来源,不归零则
|
|
9
|
+
* `inset-inline` 与它对冲、面板回到中线(实测)。
|
|
10
|
+
* - **整屏高不切圆角**(`--ui-drawer-radius: 0`):面板上下贴视口边缘,切角会在边缘露出遮罩缺口;
|
|
11
|
+
* 保留成令牌是让主题能改(如浮起式抽屉),不是默认切角。
|
|
12
|
+
* - **宽度由组件行内下发**:接受像素数与任意合法宽度串(`min(520px, 90vw)` 这类),比在面里堆尺寸档省事。
|
|
15
13
|
*
|
|
16
|
-
* 进出场用 **animation**(不用 transition):位移只碰独立的 `translate
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* **类名与面文件名同根**:`.mh-drawer*`(元素走 `__`),一律 `mh-` 前缀。
|
|
14
|
+
* 进出场用 **animation**(不用 transition):位移只碰独立的 `translate`、不碰 `transform` —— 与全库动画
|
|
15
|
+
* 令牌口径一致,且不会覆盖定位;`prefers-reduced-motion` 下整体关闭。类名与面文件名同根(`.mh-drawer*`)。
|
|
20
16
|
*/
|
|
21
17
|
.mh-drawer {
|
|
22
18
|
position: fixed;
|
|
@@ -75,7 +71,7 @@
|
|
|
75
71
|
justify-content: space-between;
|
|
76
72
|
gap: var(--ui-space-2);
|
|
77
73
|
flex: none;
|
|
78
|
-
padding: var(--ui-
|
|
74
|
+
padding: var(--ui-drawer-padding-y) var(--ui-drawer-padding-x) 0;
|
|
79
75
|
font-size: var(--ui-font-heading);
|
|
80
76
|
line-height: var(--ui-line-heading);
|
|
81
77
|
font-weight: var(--ui-weight-medium);
|
|
@@ -120,7 +116,7 @@
|
|
|
120
116
|
flex: 1 1 auto;
|
|
121
117
|
min-height: 0;
|
|
122
118
|
overflow-y: auto;
|
|
123
|
-
padding: var(--ui-
|
|
119
|
+
padding: var(--ui-drawer-padding-x);
|
|
124
120
|
font-size: var(--ui-font-body);
|
|
125
121
|
line-height: var(--ui-line-body);
|
|
126
122
|
color: var(--ui-base-content);
|
|
@@ -139,5 +135,5 @@
|
|
|
139
135
|
justify-content: flex-end;
|
|
140
136
|
gap: var(--ui-space-2);
|
|
141
137
|
flex: none;
|
|
142
|
-
padding: 0 var(--ui-
|
|
138
|
+
padding: 0 var(--ui-drawer-padding-x) var(--ui-drawer-padding-y);
|
|
143
139
|
}
|
|
@@ -3,19 +3,17 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 本件自己的几何 / 尺寸 / 色彩槽位;只服务本件,故不随主题进 `@manohub/theme`。
|
|
5
5
|
*
|
|
6
|
-
* ## 抽出说明
|
|
7
|
-
* 本文件从面文件里抽出(原先混写在 `drawer.css` 顶部):这些是**基础值**,锚在
|
|
8
|
-
* `[data-manohub-ui]` —— 跨包唯一作用域锚,由入口层无条件写在应用容器上,因此**任何落在
|
|
9
|
-
* 容器里的分件都取得到值**,不再依赖「声明在某个组件根类上」这条脆弱假设
|
|
10
|
-
* (历史症状:跨件消费的 `--ui-*-group-*` 取不到值,组内间距变 0)。
|
|
11
6
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
|
|
7
|
+
* 令牌锚 `[data-manohub-ui]`(容器是每个分件的祖先 ⇒ 落在容器里的分件都取得到值)。
|
|
8
|
+
* ⚠️ `.mh-<件>--<档>` 这类**档位改写**留在面文件的修饰符块里(搬走会让档位失效);
|
|
9
|
+
* 新增组件要登记两处:本文件 + `src/styles/index.css`(见其文件头「五处齐备」)。
|
|
10
|
+
*/
|
|
16
11
|
[data-manohub-ui] {
|
|
17
12
|
/* 单件令牌 */
|
|
18
13
|
--ui-drawer-radius: 0; /* 整屏高面板不切角;改它才会出现内缘圆角 */
|
|
14
|
+
/* 内距两档:与 dialog 同构(x = 正文四边 + 页头与底栏左右 / y = 页头上与底栏下) */
|
|
15
|
+
--ui-drawer-padding-x: var(--ui-space-6);
|
|
16
|
+
--ui-drawer-padding-y: var(--ui-space-4);
|
|
19
17
|
--ui-drawer-close-size: 28px; /* 关闭件的点击热区(字形 14 居中) */
|
|
20
18
|
/* 与 Dialog 同一份遮罩取值(规范 Mask01 黑 45%):两件并列出现时不该有两种遮罩深度 */
|
|
21
19
|
--ui-drawer-mask: rgba(0, 0, 0, 0.45);
|
|
@@ -1,29 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Filter(筛选条):**本件无自有面 —— 零规则**。
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* 它是一层**纯壳**:只给 `Form` 传「排布档 + label 列宽(可选)+ 值模型 + 字段区回车」,字段行的排布与
|
|
5
|
+
* 几何**全部沿用 `Form`**:
|
|
6
|
+
* 1. 字段排布 = `Form` 的多列动态档(本件传 `columns="auto"`)—— 网格轨道**跨行共用**,故换行下来的字段
|
|
7
|
+
* 与上一行**逐列对齐**。从前本件自建 flex 字段区,而 flex 的 `grow` 是**按行分配**的:末行只剩一项时
|
|
8
|
+
* 它独占该行剩余宽度、被拉成通栏。
|
|
9
|
+
* 2. label 列宽 / 行距 / 列距 / 字段最小宽 = `Form` 的默认档;本件**不设默认值、也不落行内值**(写死就是
|
|
10
|
+
* 第二份默认值,`Form` 调档时不会跟着变),消费方要收紧就在容器上覆盖那两个令牌。
|
|
11
|
+
* 3. 表头与字段行一律沿用 `Form`,本件不重画任何一个。
|
|
6
12
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* 本件**不设默认值、也不落行内值** —— 写死就是第二份默认值,`Form` 调档时不会跟着变;
|
|
13
|
-
* 消费方要收紧筛选条的几何,在容器上覆盖 `Form` 的那两个令牌即可(继承生效);
|
|
14
|
-
* 3. 表头(`Form.Header`)与字段行(`Form.Item`)一律沿用 `Form`,本件不重画任何一个。
|
|
15
|
-
*
|
|
16
|
-
* ## 为什么还留着这个文件(而不是删掉)
|
|
17
|
-
*
|
|
18
|
-
* 「组件与面一一配对」是本包的机械护栏(用例 `contract-class-surface` 要求每个组件目录
|
|
19
|
-
* 都有同名面文件)。本件确实没有自己的类与几何,故这里只留说明文字。它对外的唯一类名是
|
|
20
|
-
* `.mh-filter__form` —— **结构锚点**(消费方与用例靠它定位这个壳,几何沿用 `.mh-form`),
|
|
21
|
-
* 已登记在共用台账「只做结构 / 测试锚点、面上没有样式声明的类」里。
|
|
22
|
-
*
|
|
23
|
-
* ## 与设计稿的关系
|
|
24
|
-
*
|
|
25
|
-
* 稿(Figma「MH后台 0911」node 0:3355,页面「01.1 技能权限分配」的筛选区)只用来确定
|
|
26
|
-
* **筛选条由哪些部件组成**(上行两颗按钮 + 下行若干字段);几何**不再照抄**稿里的
|
|
27
|
-
* 68 / 16 / 24 / 240,自 2026-09 起统一走 `Form` 的默认档 —— 取舍见
|
|
28
|
-
* `components/filter/index.tsx` 的文件头。
|
|
13
|
+
* **为什么还留着这个文件**:「组件与面一一配对」是机械护栏(`contract-class-surface` 要求每个组件目录都
|
|
14
|
+
* 有同名面文件),故这里只留说明文字。它对外唯一类名是 `.mh-filter__form` —— **结构锚点**(消费方与用例
|
|
15
|
+
* 靠它定位这个壳,几何沿用 `.mh-form`),已登记在共用台账里。
|
|
16
|
+
* 与设计稿的关系:稿(`0:3355` 的筛选区)只用来确定**筛选条由哪些部件组成**(上行两颗按钮 + 下行若干
|
|
17
|
+
* 字段);几何**不再照抄**稿里的 68 / 16 / 24 / 240,自 2026-09 起统一走 `Form` 的默认档。
|
|
29
18
|
*/
|