@xihan-ui/styles 1.0.0-alpha.3 → 1.0.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/CHANGELOG.md +1730 -0
- package/css/accordion.css +25 -2
- package/css/alert.css +13 -9
- package/css/anchor.css +1 -1
- package/css/avatar-group.css +5 -1
- package/css/avatar.css +6 -0
- package/css/back-top.css +6 -0
- package/css/badge.css +94 -36
- package/css/breadcrumb.css +1 -1
- package/css/button-group.css +4 -0
- package/css/button.css +6 -0
- package/css/calendar.css +39 -13
- package/css/card.css +15 -6
- package/css/cascader.css +29 -23
- package/css/checkbox-group.css +38 -10
- package/css/checkbox.css +21 -10
- package/css/collapsible.css +7 -1
- package/css/color-picker.css +22 -2
- package/css/combobox.css +18 -7
- package/css/context-menu.css +17 -6
- package/css/date-field.css +2 -2
- package/css/date-picker.css +27 -17
- package/css/descriptions.css +9 -3
- package/css/dialog.css +7 -1
- package/css/drawer.css +15 -5
- package/css/dynamic-input.css +7 -0
- package/css/ellipsis.css +6 -0
- package/css/empty-state.css +16 -6
- package/css/field.css +7 -0
- package/css/file-upload.css +1 -1
- package/css/flex.css +13 -7
- package/css/float-button.css +7 -0
- package/css/floating-panel.css +6 -0
- package/css/grid.css +11 -5
- package/css/heatmap.css +3 -2
- package/css/highlight.css +1 -1
- package/css/hotkeys.css +1 -1
- package/css/hover-card.css +3 -0
- package/css/image-cropper.css +4 -2
- package/css/image-viewer.css +18 -5
- package/css/json-viewer.css +34 -1
- package/css/layout.css +15 -7
- package/css/list.css +14 -5
- package/css/listbox.css +4 -2
- package/css/loading-bar.css +5 -4
- package/css/log.css +6 -2
- package/css/masonry.css +5 -5
- package/css/mention.css +13 -3
- package/css/menu.css +16 -5
- package/css/menubar.css +14 -6
- package/css/navigation-menu.css +2 -2
- package/css/notification.css +377 -0
- package/css/number-field.css +9 -3
- package/css/page-header.css +7 -0
- package/css/pagination.css +158 -1
- package/css/password-input.css +4 -4
- package/css/pin-input.css +2 -2
- package/css/popconfirm.css +9 -2
- package/css/popover.css +3 -0
- package/css/popselect.css +24 -4
- package/css/progress.css +8 -2
- package/css/radio-group.css +17 -6
- package/css/rating.css +2 -2
- package/css/result.css +15 -5
- package/css/scrollbar.css +3 -0
- package/css/segmented.css +1 -1
- package/css/select.css +25 -7
- package/css/side-nav.css +16 -5
- package/css/slider.css +4 -2
- package/css/space.css +6 -6
- package/css/steps.css +6 -6
- package/css/switch.css +9 -2
- package/css/table.css +16 -8
- package/css/tabs.css +9 -1
- package/css/tag.css +3 -1
- package/css/tags-input.css +3 -3
- package/css/text-field.css +3 -3
- package/css/thread.css +10 -2
- package/css/time-field.css +2 -2
- package/css/time-picker.css +6 -6
- package/css/timeline.css +7 -7
- package/css/toast.css +103 -53
- package/css/toggle-group.css +30 -4
- package/css/toggle.css +6 -0
- package/css/tone.css +47 -17
- package/css/tooltip.css +7 -1
- package/css/tour.css +9 -3
- package/css/transfer.css +38 -12
- package/css/tree-select.css +30 -5
- package/css/tree.css +46 -4
- package/css/typography.css +1 -1
- package/css/undefined.css +1 -0
- package/index.css +1 -1
- package/index.unlayered.css +1746 -505
- package/package.json +3 -3
- package/css/toaster.css +0 -74
package/css/checkbox-group.css
CHANGED
|
@@ -129,25 +129,51 @@
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
/* 全选格的三态:checked 打勾、indeterminate 打横杠、unchecked 留空。
|
|
132
|
-
indeterminate 就是读屏听到的 aria-checked=mixed,两者同源,样式只认 data-state
|
|
133
|
-
|
|
132
|
+
indeterminate 就是读屏听到的 aria-checked=mixed,两者同源,样式只认 data-state。
|
|
133
|
+
|
|
134
|
+
字形走 ::after 而不是画方框的那颗 ::before:mask 会把所在元素的描边与底色一并裁成
|
|
135
|
+
字形的轮廓,写在 ::before 上就等于把方框本身裁没了,只剩一枚白勾。条目那一侧是
|
|
136
|
+
真实节点当方框、它的 ::before 当字形的两层结构,这里 anatomy 到 trigger 为止、
|
|
137
|
+
没有第二个节点,只能用第二个伪元素补上那一层。
|
|
138
|
+
方框是行首那颗 ::before、宽度即指示符尺寸,所以字形按「盒与字形的宽度差之半」
|
|
139
|
+
内推即落在圆心;纵向靠 inset-block: 0 + margin-block: auto 居中。
|
|
140
|
+
font-size 与 ::before 同值,--xh-icon-size 的 1em 兜底才和条目那侧量得一样大 */
|
|
141
|
+
[data-scope='checkbox-group'][data-part='trigger'][data-state='checked']::after {
|
|
134
142
|
content: '';
|
|
135
|
-
|
|
143
|
+
position: absolute;
|
|
144
|
+
inset-block: 0;
|
|
145
|
+
inset-inline-start: 0;
|
|
146
|
+
margin-block: auto;
|
|
147
|
+
margin-inline-start: calc(
|
|
148
|
+
(
|
|
149
|
+
var(--xh-checkbox-group-indicator-size, var(--xh-control-indicator-size)) -
|
|
150
|
+
var(--xh-icon-size, var(--xh-glyph-size-text))
|
|
151
|
+
) / 2
|
|
152
|
+
);
|
|
136
153
|
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
137
154
|
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
138
|
-
|
|
139
|
-
|
|
155
|
+
background-color: var(--xh-checkbox-group-indicator-fg, var(--xh-fg-on-brand));
|
|
156
|
+
font-size: var(--xh-checkbox-group-indicator-font-size, calc(var(--xh-control-indicator-size) * 0.75));
|
|
140
157
|
-webkit-mask: var(--xh-glyph-mark-check) center / contain no-repeat;
|
|
141
158
|
mask: var(--xh-glyph-mark-check) center / contain no-repeat;
|
|
142
159
|
}
|
|
143
160
|
|
|
144
|
-
[data-scope='checkbox-group'][data-part='trigger'][data-state='indeterminate']::
|
|
161
|
+
[data-scope='checkbox-group'][data-part='trigger'][data-state='indeterminate']::after {
|
|
145
162
|
content: '';
|
|
146
|
-
|
|
163
|
+
position: absolute;
|
|
164
|
+
inset-block: 0;
|
|
165
|
+
inset-inline-start: 0;
|
|
166
|
+
margin-block: auto;
|
|
167
|
+
margin-inline-start: calc(
|
|
168
|
+
(
|
|
169
|
+
var(--xh-checkbox-group-indicator-size, var(--xh-control-indicator-size)) -
|
|
170
|
+
var(--xh-icon-size, var(--xh-glyph-size-text))
|
|
171
|
+
) / 2
|
|
172
|
+
);
|
|
147
173
|
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
148
174
|
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
149
|
-
|
|
150
|
-
|
|
175
|
+
background-color: var(--xh-checkbox-group-indicator-fg, var(--xh-fg-on-brand));
|
|
176
|
+
font-size: var(--xh-checkbox-group-indicator-font-size, calc(var(--xh-control-indicator-size) * 0.75));
|
|
151
177
|
-webkit-mask: var(--xh-glyph-mark-minus) center / contain no-repeat;
|
|
152
178
|
mask: var(--xh-glyph-mark-minus) center / contain no-repeat;
|
|
153
179
|
}
|
|
@@ -164,8 +190,10 @@
|
|
|
164
190
|
}
|
|
165
191
|
|
|
166
192
|
/* 全选格与条目同形,但字重加一档,读起来才不像又一个普通选项。
|
|
167
|
-
它是普通元素而非原生控件(三态只有非原生控件表达得出),禁用态同样只能读 data-disabled
|
|
193
|
+
它是普通元素而非原生控件(三态只有非原生控件表达得出),禁用态同样只能读 data-disabled。
|
|
194
|
+
position 是给叠在方框上的那颗字形 ::after 当定位基准 */
|
|
168
195
|
[data-scope='checkbox-group'][data-part='trigger'] {
|
|
196
|
+
position: relative;
|
|
169
197
|
display: inline-flex;
|
|
170
198
|
align-items: center;
|
|
171
199
|
gap: var(--xh-checkbox-group-trigger-gap, var(--xh-control-gap-md));
|
package/css/checkbox.css
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
/* 尺寸档只换方框边长这一个私有槽,勾的字号按边长的比例跟着走;
|
|
12
12
|
指示器从 root 继承这两个槽,换档不必给每个部件各写一条选择器 */
|
|
13
|
-
--xh-_checkbox-box: var(--xh-control-indicator-
|
|
13
|
+
--xh-_checkbox-box: var(--xh-control-indicator-md);
|
|
14
14
|
--xh-_checkbox-glyph: calc(var(--xh-_checkbox-box) * 0.75);
|
|
15
15
|
|
|
16
16
|
/* 选中态的底与描边随语气走。没写 data-tone 时 --xh-_tone 没被声明,退回原来的品牌色 */
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
block-size: var(--xh-_checkbox-box);
|
|
28
28
|
padding: 0;
|
|
29
29
|
border: var(--xh-stroke-thin) solid var(--xh-checkbox-border, var(--xh-border-control));
|
|
30
|
-
border-radius: var(--xh-shape-inset);
|
|
30
|
+
border-radius: var(--xh-checkbox-radius, var(--xh-shape-inset));
|
|
31
31
|
background: var(--xh-checkbox-bg, var(--xh-bg-canvas));
|
|
32
32
|
color: var(--xh-checkbox-fg, var(--xh-_checkbox-on-accent));
|
|
33
33
|
cursor: pointer;
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
/* 半选与全选同样是「有值」,方框都得填上:
|
|
40
|
-
|
|
40
|
+
只填全选的话,半选那条横杠是实心底上的前景色,压在同色画布上等于没画 */
|
|
41
41
|
[data-scope='checkbox'][data-part='root'][data-state='checked'],
|
|
42
42
|
[data-scope='checkbox'][data-part='root'][data-state='indeterminate'] {
|
|
43
43
|
border-color: var(--xh-checkbox-border-checked, var(--xh-_checkbox-accent));
|
|
@@ -71,11 +71,11 @@
|
|
|
71
71
|
/* —— 尺寸 —— */
|
|
72
72
|
/* 缺省档写在上面的基础规则里 */
|
|
73
73
|
[data-scope='checkbox'][data-part='root'][data-size='sm'] {
|
|
74
|
-
--xh-_checkbox-box:
|
|
74
|
+
--xh-_checkbox-box: var(--xh-control-indicator-sm);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
[data-scope='checkbox'][data-part='root'][data-size='lg'] {
|
|
78
|
-
--xh-_checkbox-box:
|
|
78
|
+
--xh-_checkbox-box: var(--xh-control-indicator-lg);
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
[data-scope='checkbox'][data-part='indicator'] {
|
|
@@ -104,7 +104,9 @@
|
|
|
104
104
|
display: none;
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
/*
|
|
107
|
+
/* 半选换一枚横杠字形盖住勾:aria-checked=mixed 在视觉上也得与「全选」分得开。
|
|
108
|
+
横杠与勾同走字形令牌,作者换掉标记时两态一起换;此前这条是手画的几何盒
|
|
109
|
+
(60% × stroke-thick),同一页上会出现两种横杠 */
|
|
108
110
|
[data-scope='checkbox'][data-part='indicator'][data-state='indeterminate'] {
|
|
109
111
|
position: relative;
|
|
110
112
|
color: transparent;
|
|
@@ -112,11 +114,12 @@
|
|
|
112
114
|
|
|
113
115
|
[data-scope='checkbox'][data-part='indicator'][data-state='indeterminate']::after {
|
|
114
116
|
position: absolute;
|
|
115
|
-
inline-size:
|
|
116
|
-
block-size: var(--xh-
|
|
117
|
-
|
|
118
|
-
background: var(--xh-checkbox-indicator-fg, var(--xh-_checkbox-on-accent));
|
|
117
|
+
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
118
|
+
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
119
|
+
background-color: var(--xh-checkbox-indicator-fg, var(--xh-_checkbox-on-accent));
|
|
119
120
|
content: '';
|
|
121
|
+
-webkit-mask: var(--xh-glyph-mark-minus) center / contain no-repeat;
|
|
122
|
+
mask: var(--xh-glyph-mark-minus) center / contain no-repeat;
|
|
120
123
|
}
|
|
121
124
|
|
|
122
125
|
/* —— 带文字的整行:<label> 包住控件与文字,与 checkbox-group 的条目同一副样子 —— */
|
|
@@ -139,4 +142,12 @@
|
|
|
139
142
|
color: inherit;
|
|
140
143
|
user-select: none;
|
|
141
144
|
}
|
|
145
|
+
|
|
146
|
+
/* 声明过任何 display 就盖掉了 UA 的 [hidden]{display:none},收起态得自己还回去。
|
|
147
|
+
写在文件末尾:兜底必须排在该部件所有 display 声明之后 */
|
|
148
|
+
[data-scope='checkbox'][data-part='root'][hidden],
|
|
149
|
+
[data-scope='checkbox'][data-part='indicator'][hidden],
|
|
150
|
+
[data-scope='checkbox'][data-part='label'][hidden] {
|
|
151
|
+
display: none;
|
|
152
|
+
}
|
|
142
153
|
}
|
package/css/collapsible.css
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
--xh-_collapsible-trigger-h: var(--xh-control-h-md);
|
|
11
11
|
--xh-_collapsible-trigger-px: var(--xh-control-px-md);
|
|
12
12
|
--xh-_collapsible-trigger-gap: var(--xh-control-gap-md);
|
|
13
|
-
--xh-_collapsible-trigger-font-size: var(--xh-
|
|
13
|
+
--xh-_collapsible-trigger-font-size: var(--xh-control-font-md);
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
/* —— 尺寸 —— */
|
|
@@ -105,4 +105,10 @@
|
|
|
105
105
|
padding-block: 0;
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
|
+
|
|
109
|
+
/* 声明过任何 display 就盖掉了 UA 的 [hidden]{display:none},收起态得自己还回去。
|
|
110
|
+
写在文件末尾:兜底必须排在该部件所有 display 声明之后 */
|
|
111
|
+
[data-scope='collapsible'][data-part='trigger'][hidden] {
|
|
112
|
+
display: none;
|
|
113
|
+
}
|
|
108
114
|
}
|
package/css/color-picker.css
CHANGED
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
--xh-_color-picker-h: var(--xh-control-h-md);
|
|
41
41
|
--xh-_color-picker-px: var(--xh-control-px-md);
|
|
42
42
|
--xh-_color-picker-gap: var(--xh-control-gap-md);
|
|
43
|
-
--xh-_color-picker-label-font-size: var(--xh-
|
|
43
|
+
--xh-_color-picker-label-font-size: var(--xh-control-font-md);
|
|
44
44
|
|
|
45
45
|
/* 聚焦环恒用固定环色 */
|
|
46
46
|
--xh-_color-picker-ring: var(--xh-ring-focus);
|
|
@@ -50,6 +50,23 @@
|
|
|
50
50
|
gap: var(--xh-color-picker-gap, var(--xh-space-1));
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
/* —— 尺寸 —— */
|
|
54
|
+
/* 缺省档写在上面的基础规则里。浮层那一侧也要挂:positioner 被搬到 portal 落点,
|
|
55
|
+
继承不到根上的私有槽,所以两个部件一起收 */
|
|
56
|
+
[data-scope='color-picker']:is([data-part='root'], [data-part='positioner'])[data-size='sm'] {
|
|
57
|
+
--xh-_color-picker-h: var(--xh-control-h-sm);
|
|
58
|
+
--xh-_color-picker-px: var(--xh-control-px-sm);
|
|
59
|
+
--xh-_color-picker-gap: var(--xh-control-gap-sm);
|
|
60
|
+
--xh-_color-picker-label-font-size: var(--xh-control-font-sm);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
[data-scope='color-picker']:is([data-part='root'], [data-part='positioner'])[data-size='lg'] {
|
|
64
|
+
--xh-_color-picker-h: var(--xh-control-h-lg);
|
|
65
|
+
--xh-_color-picker-px: var(--xh-control-px-lg);
|
|
66
|
+
--xh-_color-picker-gap: var(--xh-control-gap-lg);
|
|
67
|
+
--xh-_color-picker-label-font-size: var(--xh-control-font-lg);
|
|
68
|
+
}
|
|
69
|
+
|
|
53
70
|
[data-scope='color-picker'][data-part='label'] {
|
|
54
71
|
color: var(--xh-color-picker-label-fg, var(--xh-fg-default));
|
|
55
72
|
font-size: var(--xh-color-picker-label-font-size, var(--xh-_color-picker-label-font-size));
|
|
@@ -161,6 +178,9 @@
|
|
|
161
178
|
引擎没算(尚未落位 / 无引擎 / 贴边归零)时不额外限高 */
|
|
162
179
|
--xh-_color-picker-available-h: 100vh;
|
|
163
180
|
|
|
181
|
+
/* 面板的自绘条浮在内容之上:轨道不上底色,实色轨道会在面板右缘糊出一条竖灰带 */
|
|
182
|
+
--xh-scrollbar-track-bg: transparent;
|
|
183
|
+
|
|
164
184
|
position: fixed;
|
|
165
185
|
z-index: var(--xh-color-picker-layer, var(--xh-layer-popover));
|
|
166
186
|
/* 空壳不吃指针,交互只发生在 content 上 */
|
|
@@ -456,7 +476,7 @@
|
|
|
456
476
|
inline-size: var(--xh-color-picker-swatch-item-size, 1.25rem);
|
|
457
477
|
block-size: var(--xh-color-picker-swatch-item-size, 1.25rem);
|
|
458
478
|
padding: 0;
|
|
459
|
-
border: var(--xh-stroke-thin) solid var(--xh-color-picker-swatch-border, var(--xh-border-
|
|
479
|
+
border: var(--xh-stroke-thin) solid var(--xh-color-picker-swatch-border, var(--xh-border-default));
|
|
460
480
|
border-radius: var(--xh-color-picker-swatch-radius, var(--xh-shape-inset));
|
|
461
481
|
cursor: pointer;
|
|
462
482
|
}
|
package/css/combobox.css
CHANGED
|
@@ -37,6 +37,9 @@
|
|
|
37
37
|
引擎没算(尚未落位 / 无引擎)时不额外限高 */
|
|
38
38
|
--xh-_combobox-available-h: 100vh;
|
|
39
39
|
|
|
40
|
+
/* 候选列表的自绘条浮在内容之上:轨道不上底色,实色轨道会在列表右缘糊一条竖灰带 */
|
|
41
|
+
--xh-scrollbar-track-bg: transparent;
|
|
42
|
+
|
|
40
43
|
position: fixed;
|
|
41
44
|
z-index: var(--xh-combobox-layer, var(--xh-layer-popover));
|
|
42
45
|
/* 空壳不吃指针,交互只发生在 content 与 empty 上 */
|
|
@@ -54,9 +57,11 @@
|
|
|
54
57
|
换档不必给每个部件各写一条选择器 */
|
|
55
58
|
--xh-_combobox-h: var(--xh-control-h-md);
|
|
56
59
|
--xh-_combobox-px: var(--xh-control-px-md);
|
|
60
|
+
--xh-_combobox-item-py: var(--xh-list-option-py-md);
|
|
61
|
+
--xh-_combobox-item-px: var(--xh-control-px-md);
|
|
57
62
|
--xh-_combobox-gap: var(--xh-control-gap-md);
|
|
58
|
-
--xh-_combobox-font-size: var(--xh-
|
|
59
|
-
--xh-_combobox-label-font-size: var(--xh-
|
|
63
|
+
--xh-_combobox-font-size: var(--xh-control-font-md);
|
|
64
|
+
--xh-_combobox-label-font-size: var(--xh-control-font-md);
|
|
60
65
|
|
|
61
66
|
/* 作者塞进指示符槽的图标跟着控件的尺寸档走;它自己写了 size 时仍以作者的为准 */
|
|
62
67
|
--xh-icon-size: var(--xh-combobox-icon-size, var(--xh-glyph-size-md));
|
|
@@ -69,7 +74,7 @@
|
|
|
69
74
|
/* 聚焦环恒用固定环色;强调色随语气走,只落在勾选标记与选中文字上,正文文字色不动。
|
|
70
75
|
没写 data-tone 时 --xh-_tone 没被声明,两处都退回原来的取值 */
|
|
71
76
|
--xh-_combobox-ring: var(--xh-ring-focus);
|
|
72
|
-
--xh-_combobox-accent: var(--xh-_tone, var(--xh-
|
|
77
|
+
--xh-_combobox-accent: var(--xh-_tone, var(--xh-fg-brand));
|
|
73
78
|
--xh-_combobox-item-selected-fg: var(--xh-_tone-fg, var(--xh-fg-brand-strong));
|
|
74
79
|
}
|
|
75
80
|
|
|
@@ -89,6 +94,8 @@
|
|
|
89
94
|
[data-scope='combobox']:is([data-part='root'], [data-part='positioner'])[data-size='sm'] {
|
|
90
95
|
--xh-_combobox-h: var(--xh-control-h-sm);
|
|
91
96
|
--xh-_combobox-px: var(--xh-control-px-sm);
|
|
97
|
+
--xh-_combobox-item-py: var(--xh-list-option-py-sm);
|
|
98
|
+
--xh-_combobox-item-px: var(--xh-control-px-sm);
|
|
92
99
|
--xh-_combobox-gap: var(--xh-control-gap-sm);
|
|
93
100
|
--xh-_combobox-font-size: var(--xh-control-font-sm);
|
|
94
101
|
--xh-_combobox-label-font-size: var(--xh-control-font-sm);
|
|
@@ -99,6 +106,8 @@
|
|
|
99
106
|
[data-scope='combobox']:is([data-part='root'], [data-part='positioner'])[data-size='lg'] {
|
|
100
107
|
--xh-_combobox-h: var(--xh-control-h-lg);
|
|
101
108
|
--xh-_combobox-px: var(--xh-control-px-lg);
|
|
109
|
+
--xh-_combobox-item-py: var(--xh-list-option-py-lg);
|
|
110
|
+
--xh-_combobox-item-px: var(--xh-control-px-lg);
|
|
102
111
|
--xh-_combobox-gap: var(--xh-control-gap-lg);
|
|
103
112
|
--xh-_combobox-font-size: var(--xh-control-font-lg);
|
|
104
113
|
--xh-_combobox-label-font-size: var(--xh-control-font-lg);
|
|
@@ -217,7 +226,7 @@
|
|
|
217
226
|
[data-scope='combobox'][data-part='control']:has([data-part='input'][data-multiline]) {
|
|
218
227
|
align-items: start;
|
|
219
228
|
block-size: auto;
|
|
220
|
-
padding-block: var(--xh-field-py);
|
|
229
|
+
padding-block: var(--xh-combobox-input-py, var(--xh-field-py));
|
|
221
230
|
}
|
|
222
231
|
|
|
223
232
|
[data-scope='combobox'][data-part='input'][data-multiline] {
|
|
@@ -331,6 +340,7 @@
|
|
|
331
340
|
[data-scope='combobox'][data-part='content'] {
|
|
332
341
|
display: flex;
|
|
333
342
|
flex-direction: column;
|
|
343
|
+
gap: var(--xh-combobox-content-gap, var(--xh-list-option-gap));
|
|
334
344
|
min-inline-size: var(--xh-combobox-content-min-w, var(--xh-overlay-min-w));
|
|
335
345
|
max-inline-size: var(--xh-combobox-content-max-w, var(--xh-overlay-max-w));
|
|
336
346
|
max-block-size: min(var(--xh-combobox-content-max-h, var(--xh-overlay-max-h)), var(--xh-_combobox-available-h));
|
|
@@ -370,6 +380,7 @@
|
|
|
370
380
|
[data-scope='combobox'][data-part='item-group'] {
|
|
371
381
|
display: flex;
|
|
372
382
|
flex-direction: column;
|
|
383
|
+
gap: var(--xh-combobox-item-group-gap, var(--xh-list-option-gap));
|
|
373
384
|
}
|
|
374
385
|
|
|
375
386
|
[data-scope='combobox'][data-part='item-group'][hidden] {
|
|
@@ -378,7 +389,7 @@
|
|
|
378
389
|
|
|
379
390
|
/* 组间留白只加在后继分组上:首组顶上已经有 content 的内边距,再加一层会显得头重 */
|
|
380
391
|
[data-scope='combobox'][data-part='item-group'] + [data-scope='combobox'][data-part='item-group'] {
|
|
381
|
-
margin-block-start: var(--xh-combobox-group-gap, var(--xh-space-
|
|
392
|
+
margin-block-start: var(--xh-combobox-group-gap, var(--xh-space-1_5));
|
|
382
393
|
}
|
|
383
394
|
|
|
384
395
|
/* 分组标题不是候选、进不了导航,画成小号次要文字,内缩与候选对齐(同一个 padding-inline) */
|
|
@@ -401,8 +412,8 @@
|
|
|
401
412
|
display: flex;
|
|
402
413
|
align-items: center;
|
|
403
414
|
gap: var(--xh-combobox-item-gap, var(--xh-_combobox-gap));
|
|
404
|
-
padding-block: var(--xh-combobox-item-py, var(--xh-
|
|
405
|
-
padding-inline: var(--xh-combobox-item-px, var(--xh-
|
|
415
|
+
padding-block: var(--xh-combobox-item-py, var(--xh-_combobox-item-py));
|
|
416
|
+
padding-inline: var(--xh-combobox-item-px, var(--xh-_combobox-item-px));
|
|
406
417
|
border-radius: var(--xh-combobox-item-radius, var(--xh-shape-control));
|
|
407
418
|
color: var(--xh-combobox-item-fg, var(--xh-fg-default));
|
|
408
419
|
font-size: var(--xh-combobox-item-font-size, var(--xh-_combobox-font-size));
|
package/css/context-menu.css
CHANGED
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
引擎没算(尚未落位 / 无引擎)时不额外限高 */
|
|
11
11
|
--xh-_context-menu-available-h: 100vh;
|
|
12
12
|
|
|
13
|
+
/* 条目列表的自绘条浮在内容之上:轨道不上底色,实色轨道会在菜单右缘糊一条竖灰带 */
|
|
14
|
+
--xh-scrollbar-track-bg: transparent;
|
|
15
|
+
|
|
13
16
|
position: fixed;
|
|
14
17
|
z-index: var(--xh-context-menu-layer, var(--xh-layer-popover));
|
|
15
18
|
/* 空壳不吃指针,交互只发生在 content 上 */
|
|
@@ -25,10 +28,10 @@
|
|
|
25
28
|
[data-scope='context-menu']:is([data-part='root'], [data-part='positioner']) {
|
|
26
29
|
/* 尺寸档只换这四个私有槽,条目与分组标题都从这两处继承它们,
|
|
27
30
|
换档不必给每个部件各写一条选择器 */
|
|
28
|
-
--xh-_context-menu-item-py: var(--xh-
|
|
31
|
+
--xh-_context-menu-item-py: var(--xh-list-option-py-md);
|
|
29
32
|
--xh-_context-menu-item-px: var(--xh-control-px-md);
|
|
30
33
|
--xh-_context-menu-item-gap: var(--xh-control-gap-md);
|
|
31
|
-
--xh-_context-menu-font-size: var(--xh-
|
|
34
|
+
--xh-_context-menu-font-size: var(--xh-control-font-md);
|
|
32
35
|
|
|
33
36
|
/* 打开子菜单的触发条目走品牌淡底强档,随语气换色相;没写 data-tone 时退回品牌淡底。
|
|
34
37
|
悬停与键盘焦点恒中性灰轻档、不接语气槽——两档同色相的话打开路径就认不出来了 */
|
|
@@ -43,6 +46,12 @@
|
|
|
43
46
|
display: contents;
|
|
44
47
|
}
|
|
45
48
|
|
|
49
|
+
/* 浮层被搬到 portal 落点,继承不到 root 上的槽:这把尺在被搬走的那一侧再声明一次,
|
|
50
|
+
关闭钮与条目里作者塞的图标才和皮肤画的兜底字形一样大 */
|
|
51
|
+
[data-scope='context-menu'][data-part='content'] {
|
|
52
|
+
--xh-icon-size: var(--xh-context-menu-icon-size, var(--xh-glyph-size-text));
|
|
53
|
+
}
|
|
54
|
+
|
|
46
55
|
[data-scope='context-menu'][data-part='root'][hidden] {
|
|
47
56
|
display: none;
|
|
48
57
|
}
|
|
@@ -51,14 +60,14 @@
|
|
|
51
60
|
/* 缺省档写在上面的基础规则里。条目高度由 padding 撑出来:
|
|
52
61
|
纵向走 space 档、行内内缩走 control-px 档(随密度轴),换档各挪一级 */
|
|
53
62
|
[data-scope='context-menu']:is([data-part='root'], [data-part='positioner'])[data-size='sm'] {
|
|
54
|
-
--xh-_context-menu-item-py: var(--xh-
|
|
63
|
+
--xh-_context-menu-item-py: var(--xh-list-option-py-sm);
|
|
55
64
|
--xh-_context-menu-item-px: var(--xh-control-px-sm);
|
|
56
65
|
--xh-_context-menu-item-gap: var(--xh-control-gap-sm);
|
|
57
66
|
--xh-_context-menu-font-size: var(--xh-control-font-sm);
|
|
58
67
|
}
|
|
59
68
|
|
|
60
69
|
[data-scope='context-menu']:is([data-part='root'], [data-part='positioner'])[data-size='lg'] {
|
|
61
|
-
--xh-_context-menu-item-py: var(--xh-
|
|
70
|
+
--xh-_context-menu-item-py: var(--xh-list-option-py-lg);
|
|
62
71
|
--xh-_context-menu-item-px: var(--xh-control-px-lg);
|
|
63
72
|
--xh-_context-menu-item-gap: var(--xh-control-gap-lg);
|
|
64
73
|
--xh-_context-menu-font-size: var(--xh-control-font-lg);
|
|
@@ -79,6 +88,7 @@
|
|
|
79
88
|
[data-scope='context-menu'][data-part='content'] {
|
|
80
89
|
display: flex;
|
|
81
90
|
flex-direction: column;
|
|
91
|
+
gap: var(--xh-context-menu-content-gap, var(--xh-list-option-gap));
|
|
82
92
|
min-inline-size: var(--xh-context-menu-min-w, var(--xh-overlay-menu-min-w));
|
|
83
93
|
max-inline-size: var(--xh-context-menu-max-w, var(--xh-overlay-max-w));
|
|
84
94
|
/* 两道上限取更小的那道:自己的高度上限,以及落定那一侧真正剩下的空间。
|
|
@@ -128,6 +138,7 @@
|
|
|
128
138
|
[data-scope='context-menu'][data-part='group'] {
|
|
129
139
|
display: flex;
|
|
130
140
|
flex-direction: column;
|
|
141
|
+
gap: var(--xh-context-menu-group-gap, var(--xh-list-option-gap));
|
|
131
142
|
}
|
|
132
143
|
|
|
133
144
|
[data-scope='context-menu'][data-part='group'][hidden] {
|
|
@@ -241,7 +252,7 @@
|
|
|
241
252
|
align-items: center;
|
|
242
253
|
justify-content: center;
|
|
243
254
|
inline-size: var(--xh-context-menu-item-indicator-size, var(--xh-control-indicator-size));
|
|
244
|
-
color: var(--xh-context-menu-item-indicator-fg, var(--xh-fg-brand));
|
|
255
|
+
color: var(--xh-context-menu-item-indicator-fg, var(--xh-_tone, var(--xh-fg-brand)));
|
|
245
256
|
}
|
|
246
257
|
|
|
247
258
|
[data-scope='context-menu'][data-part='item-indicator'][hidden] {
|
|
@@ -254,7 +265,7 @@
|
|
|
254
265
|
|
|
255
266
|
[data-scope='context-menu'][data-part='separator'] {
|
|
256
267
|
block-size: var(--xh-context-menu-separator-thickness, var(--xh-stroke-thin));
|
|
257
|
-
margin-block: var(--xh-context-menu-separator-my, var(--xh-space-
|
|
268
|
+
margin-block: var(--xh-context-menu-separator-my, var(--xh-space-0_5));
|
|
258
269
|
background: var(--xh-context-menu-separator-color, var(--xh-border-default));
|
|
259
270
|
}
|
|
260
271
|
|
package/css/date-field.css
CHANGED
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
--xh-_date-field-control-h: var(--xh-control-h-md);
|
|
14
14
|
--xh-_date-field-control-px: var(--xh-control-px-md);
|
|
15
15
|
--xh-_date-field-gap: var(--xh-control-gap-md);
|
|
16
|
-
--xh-_date-field-font-size: var(--xh-
|
|
17
|
-
--xh-_date-field-label-font-size: var(--xh-
|
|
16
|
+
--xh-_date-field-font-size: var(--xh-control-font-md);
|
|
17
|
+
--xh-_date-field-label-font-size: var(--xh-control-font-md);
|
|
18
18
|
/* 形态档只换这三个私有槽:底色与两档描边 */
|
|
19
19
|
--xh-_date-field-control-bg: var(--xh-bg-canvas);
|
|
20
20
|
--xh-_date-field-control-border: var(--xh-border-control);
|
package/css/date-picker.css
CHANGED
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
引擎没算(尚未落位 / 无引擎 / 贴边归零)时不额外限高 */
|
|
11
11
|
--xh-_date-picker-available-h: 100vh;
|
|
12
12
|
|
|
13
|
+
/* 面板的自绘条浮在内容之上:轨道不上底色,实色轨道会在面板右缘糊出一条竖灰带 */
|
|
14
|
+
--xh-scrollbar-track-bg: transparent;
|
|
15
|
+
|
|
13
16
|
position: fixed;
|
|
14
17
|
z-index: var(--xh-date-picker-layer, var(--xh-layer-popover));
|
|
15
18
|
/* 空壳不吃指针,交互只发生在 content 里 */
|
|
@@ -28,8 +31,8 @@
|
|
|
28
31
|
--xh-_date-picker-control-h: var(--xh-control-h-md);
|
|
29
32
|
--xh-_date-picker-control-px: var(--xh-control-px-md);
|
|
30
33
|
--xh-_date-picker-gap: var(--xh-control-gap-md);
|
|
31
|
-
--xh-_date-picker-font-size: var(--xh-
|
|
32
|
-
--xh-_date-picker-label-font-size: var(--xh-
|
|
34
|
+
--xh-_date-picker-font-size: var(--xh-control-font-md);
|
|
35
|
+
--xh-_date-picker-label-font-size: var(--xh-control-font-md);
|
|
33
36
|
|
|
34
37
|
/* 形态档只换这三个私有槽:底色与两档描边 */
|
|
35
38
|
--xh-_date-picker-control-bg: var(--xh-bg-canvas);
|
|
@@ -326,6 +329,11 @@
|
|
|
326
329
|
border-inline-start: var(--xh-stroke-thin) solid var(--xh-date-picker-panel-divider, var(--xh-border-subtle));
|
|
327
330
|
}
|
|
328
331
|
|
|
332
|
+
/* 快捷选项列与它旁边那张日历之间留出同样的空当,两道分隔线左右对称 */
|
|
333
|
+
[data-scope='date-picker'][data-part='presets'] + [data-scope='date-picker'][data-part='calendar'] {
|
|
334
|
+
padding-inline-start: var(--xh-date-picker-panel-gap, var(--xh-space-3));
|
|
335
|
+
}
|
|
336
|
+
|
|
329
337
|
[data-scope='date-picker'][data-part='calendar'] {
|
|
330
338
|
display: flex;
|
|
331
339
|
flex-direction: column;
|
|
@@ -342,13 +350,15 @@
|
|
|
342
350
|
[data-scope='date-picker'][data-part='presets'] {
|
|
343
351
|
display: flex;
|
|
344
352
|
flex: none;
|
|
353
|
+
/* 这一列的高度由并排的日历给:不写就按内容收,右侧那道分隔线只画到最后一条选项 */
|
|
354
|
+
align-self: stretch;
|
|
345
355
|
flex-direction: column;
|
|
346
|
-
gap: var(--xh-date-picker-presets-gap, var(--xh-
|
|
356
|
+
gap: var(--xh-date-picker-presets-gap, var(--xh-list-option-gap));
|
|
347
357
|
/* 选项多起来时这一列自己滚,不把整张面板撑高 */
|
|
348
|
-
max-block-size: var(--xh-date-picker-presets-h, var(--xh-viewport-h-
|
|
349
|
-
padding: var(--xh-space-1);
|
|
358
|
+
max-block-size: var(--xh-date-picker-presets-h, var(--xh-viewport-h-lg));
|
|
359
|
+
padding: var(--xh-date-picker-presets-padding, var(--xh-space-1));
|
|
350
360
|
overflow-y: auto;
|
|
351
|
-
border-inline-end: var(--xh-stroke-thin) solid var(--xh-date-picker-
|
|
361
|
+
border-inline-end: var(--xh-stroke-thin) solid var(--xh-date-picker-column-divider, var(--xh-border-subtle));
|
|
352
362
|
}
|
|
353
363
|
|
|
354
364
|
[data-scope='date-picker'][data-part='presets'][hidden] {
|
|
@@ -356,9 +366,9 @@
|
|
|
356
366
|
}
|
|
357
367
|
|
|
358
368
|
[data-scope='date-picker'][data-part='preset'] {
|
|
359
|
-
padding-block: var(--xh-space-1);
|
|
360
|
-
padding-inline: var(--xh-space-3);
|
|
361
|
-
border-radius: var(--xh-shape-control);
|
|
369
|
+
padding-block: var(--xh-date-picker-preset-py, var(--xh-space-1));
|
|
370
|
+
padding-inline: var(--xh-date-picker-preset-px, var(--xh-space-3));
|
|
371
|
+
border-radius: var(--xh-date-picker-preset-radius, var(--xh-shape-control));
|
|
362
372
|
font-size: var(--xh-text-secondary-size);
|
|
363
373
|
line-height: var(--xh-leading-normal);
|
|
364
374
|
white-space: nowrap;
|
|
@@ -393,12 +403,12 @@
|
|
|
393
403
|
[data-scope='date-picker'][data-part='time-column'] {
|
|
394
404
|
display: flex;
|
|
395
405
|
flex-direction: column;
|
|
396
|
-
gap: var(--xh-date-picker-time-column-gap, var(--xh-
|
|
406
|
+
gap: var(--xh-date-picker-time-column-gap, var(--xh-list-option-gap));
|
|
397
407
|
/* 几列并排:定高而不是随内容收,否则时列与分列的可选值一多一少就错位 */
|
|
398
408
|
block-size: var(--xh-date-picker-time-column-h, var(--xh-viewport-h-sm));
|
|
399
|
-
padding: var(--xh-space-1);
|
|
409
|
+
padding: var(--xh-date-picker-time-column-padding, var(--xh-space-1));
|
|
400
410
|
overflow-y: auto;
|
|
401
|
-
border-inline-start: var(--xh-stroke-thin) solid var(--xh-date-picker-
|
|
411
|
+
border-inline-start: var(--xh-stroke-thin) solid var(--xh-date-picker-column-divider, var(--xh-border-subtle));
|
|
402
412
|
}
|
|
403
413
|
|
|
404
414
|
[data-scope='date-picker'][data-part='time-column'][hidden] {
|
|
@@ -406,9 +416,9 @@
|
|
|
406
416
|
}
|
|
407
417
|
|
|
408
418
|
[data-scope='date-picker'][data-part='time-item'] {
|
|
409
|
-
padding-block: var(--xh-space-1);
|
|
410
|
-
padding-inline: var(--xh-space-3);
|
|
411
|
-
border-radius: var(--xh-shape-control);
|
|
419
|
+
padding-block: var(--xh-date-picker-time-item-py, var(--xh-space-1));
|
|
420
|
+
padding-inline: var(--xh-date-picker-time-item-px, var(--xh-space-3));
|
|
421
|
+
border-radius: var(--xh-date-picker-time-item-radius, var(--xh-shape-control));
|
|
412
422
|
font-size: var(--xh-text-secondary-size);
|
|
413
423
|
line-height: var(--xh-leading-normal);
|
|
414
424
|
text-align: center;
|
|
@@ -438,9 +448,9 @@
|
|
|
438
448
|
align-items: center;
|
|
439
449
|
justify-content: center;
|
|
440
450
|
block-size: var(--xh-control-h-sm);
|
|
441
|
-
padding-inline: var(--xh-control-px-sm);
|
|
451
|
+
padding-inline: var(--xh-date-picker-confirm-trigger-px, var(--xh-control-px-sm));
|
|
442
452
|
border: none;
|
|
443
|
-
border-radius: var(--xh-shape-control);
|
|
453
|
+
border-radius: var(--xh-date-picker-confirm-trigger-radius, var(--xh-shape-control));
|
|
444
454
|
background: var(--xh-date-picker-confirm-bg, var(--xh-_date-picker-accent));
|
|
445
455
|
color: var(--xh-date-picker-confirm-fg, var(--xh-_date-picker-accent-fg));
|
|
446
456
|
font-size: var(--xh-text-secondary-size);
|
package/css/descriptions.css
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
--xh-_descriptions-label-gap: var(--xh-space-2);
|
|
13
13
|
--xh-_descriptions-py: var(--xh-space-2);
|
|
14
14
|
--xh-_descriptions-px: var(--xh-space-3);
|
|
15
|
-
--xh-_descriptions-font-size: var(--xh-
|
|
15
|
+
--xh-_descriptions-font-size: var(--xh-control-font-md);
|
|
16
16
|
/* 标签在左时那一列的宽度:收到最长的那个标签 */
|
|
17
17
|
--xh-_descriptions-label-w: max-content;
|
|
18
18
|
|
|
@@ -117,9 +117,9 @@
|
|
|
117
117
|
> [data-scope='descriptions'][data-part='item'] {
|
|
118
118
|
padding-block: var(--xh-descriptions-item-py, var(--xh-_descriptions-py));
|
|
119
119
|
padding-inline: var(--xh-descriptions-item-px, var(--xh-_descriptions-px));
|
|
120
|
-
border-block-start: var(--xh-stroke-thin) solid var(--xh-descriptions-
|
|
120
|
+
border-block-start: var(--xh-stroke-thin) solid var(--xh-descriptions-divider, var(--xh-border-subtle));
|
|
121
121
|
/* 每行一组时左边没有邻居,宽度按列数补回来 */
|
|
122
|
-
border-inline-start: 0 solid var(--xh-descriptions-
|
|
122
|
+
border-inline-start: 0 solid var(--xh-descriptions-divider, var(--xh-border-subtle));
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
[data-scope='descriptions'][data-part='root'][data-bordered]
|
|
@@ -202,4 +202,10 @@
|
|
|
202
202
|
> [data-scope='descriptions'][data-part='item']:nth-child(-n + 6) {
|
|
203
203
|
border-block-start-width: 0;
|
|
204
204
|
}
|
|
205
|
+
|
|
206
|
+
/* 声明过任何 display 就盖掉了 UA 的 [hidden]{display:none},收起态得自己还回去。
|
|
207
|
+
写在文件末尾:兜底必须排在该部件所有 display 声明之后 */
|
|
208
|
+
[data-scope='descriptions'][data-part='item'][hidden] {
|
|
209
|
+
display: none;
|
|
210
|
+
}
|
|
205
211
|
}
|
package/css/dialog.css
CHANGED
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
display: flex;
|
|
82
82
|
align-items: center;
|
|
83
83
|
justify-content: center;
|
|
84
|
-
padding: var(--xh-space-4);
|
|
84
|
+
padding: var(--xh-dialog-positioner-padding, var(--xh-space-4));
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
[data-scope='dialog'][data-part='positioner'][data-position='top'] {
|
|
@@ -211,4 +211,10 @@
|
|
|
211
211
|
-webkit-mask: var(--xh-glyph-mark-close) center / contain no-repeat;
|
|
212
212
|
mask: var(--xh-glyph-mark-close) center / contain no-repeat;
|
|
213
213
|
}
|
|
214
|
+
|
|
215
|
+
/* 声明过任何 display 就盖掉了 UA 的 [hidden]{display:none},收起态得自己还回去。
|
|
216
|
+
写在文件末尾:兜底必须排在该部件所有 display 声明之后 */
|
|
217
|
+
[data-scope='dialog'][data-part='positioner'][hidden] {
|
|
218
|
+
display: none;
|
|
219
|
+
}
|
|
214
220
|
}
|
package/css/drawer.css
CHANGED
|
@@ -124,6 +124,12 @@
|
|
|
124
124
|
display: contents;
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
+
/* 浮层被搬到 portal 落点,继承不到 root 上的槽:这把尺在被搬走的那一侧再声明一次,
|
|
128
|
+
关闭钮与条目里作者塞的图标才和皮肤画的兜底字形一样大 */
|
|
129
|
+
[data-scope='drawer'][data-part='content'] {
|
|
130
|
+
--xh-icon-size: var(--xh-drawer-icon-size, var(--xh-glyph-size-text));
|
|
131
|
+
}
|
|
132
|
+
|
|
127
133
|
/* 声明了 display 就盖掉了 UA 的 [hidden]{display:none},作者手写 hidden 时得还回去 */
|
|
128
134
|
[data-scope='drawer'][data-part='root'][hidden] {
|
|
129
135
|
display: none;
|
|
@@ -184,11 +190,14 @@
|
|
|
184
190
|
background: var(--xh-drawer-backdrop-bg, var(--xh-bg-overlay));
|
|
185
191
|
}
|
|
186
192
|
|
|
187
|
-
/*
|
|
193
|
+
/* 挂在局部容器里:遮罩、定位层与面板一起从视口坐标换成容器坐标,只罩住那个容器。
|
|
188
194
|
作者要给那个容器加 position(relative 之类),否则 absolute 会往上找到别的定位祖先——
|
|
189
|
-
这一条写进了示例与 props
|
|
195
|
+
这一条写进了示例与 props 说明。
|
|
196
|
+
content 必须一起换:它的贴边是 inset-block/inline 参照包含块算的,留在 fixed 上就会
|
|
197
|
+
照旧贴视口边,遮罩缩进容器、面板却跑到屏幕边上——与 contained 的承诺正好相反 */
|
|
190
198
|
[data-scope='drawer'][data-part='backdrop'][data-contained],
|
|
191
|
-
[data-scope='drawer'][data-part='positioner'][data-contained]
|
|
199
|
+
[data-scope='drawer'][data-part='positioner'][data-contained],
|
|
200
|
+
[data-scope='drawer'][data-part='content'][data-contained] {
|
|
192
201
|
position: absolute;
|
|
193
202
|
}
|
|
194
203
|
|
|
@@ -214,8 +223,9 @@
|
|
|
214
223
|
/* 贴边写在 content 自己身上,而不是交给 positioner:
|
|
215
224
|
positioner 在抽屉里不是必需部件,最小合规结构只有 root + content,
|
|
216
225
|
贴边若挂在 positioner 上,那种结构下面板会直接塌回文档流。
|
|
217
|
-
content 是 fixed,包住它的 positioner 没有 transform / filter,
|
|
218
|
-
|
|
226
|
+
非 contained 时 content 是 fixed,包住它的 positioner 没有 transform / filter,
|
|
227
|
+
不构成固定定位的包含块,两种结构下参照的都是视口,位置一致;
|
|
228
|
+
contained 时上面那条把它一并换成 absolute,参照的就是作者那个容器。 */
|
|
219
229
|
[data-scope='drawer'][data-part='content'] {
|
|
220
230
|
/* 位移方向的私有槽位:默认按 LTR,RTL 在下面整体翻符号 */
|
|
221
231
|
--xh-_drawer-shift-inline: 100%;
|
package/css/dynamic-input.css
CHANGED
|
@@ -210,4 +210,11 @@
|
|
|
210
210
|
-webkit-mask: var(--xh-glyph-mark-close) center / contain no-repeat;
|
|
211
211
|
mask: var(--xh-glyph-mark-close) center / contain no-repeat;
|
|
212
212
|
}
|
|
213
|
+
|
|
214
|
+
/* 声明过任何 display 就盖掉了 UA 的 [hidden]{display:none},收起态得自己还回去。
|
|
215
|
+
写在文件末尾:兜底必须排在该部件所有 display 声明之后 */
|
|
216
|
+
[data-scope='dynamic-input'][data-part='item-content'][hidden],
|
|
217
|
+
[data-scope='dynamic-input'][data-part='item-action'][hidden] {
|
|
218
|
+
display: none;
|
|
219
|
+
}
|
|
213
220
|
}
|
package/css/ellipsis.css
CHANGED
|
@@ -43,4 +43,10 @@
|
|
|
43
43
|
outline: var(--xh-ring-width) solid var(--xh-ring-focus);
|
|
44
44
|
outline-offset: var(--xh-ring-offset);
|
|
45
45
|
}
|
|
46
|
+
|
|
47
|
+
/* 声明过任何 display 就盖掉了 UA 的 [hidden]{display:none},收起态得自己还回去。
|
|
48
|
+
写在文件末尾:兜底必须排在该部件所有 display 声明之后 */
|
|
49
|
+
[data-scope='ellipsis'][data-part='root'][hidden] {
|
|
50
|
+
display: none;
|
|
51
|
+
}
|
|
46
52
|
}
|