@xihan-ui/styles 3.2.0 → 4.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 +441 -0
- package/component-tokens.d.ts +229 -60
- package/components.tokens.json +5124 -1555
- package/css/accordion.css +47 -20
- package/css/alert.css +14 -15
- package/css/anchor.css +2 -2
- package/css/approval.css +37 -13
- package/css/avatar-group.css +9 -12
- package/css/avatar.css +20 -18
- package/css/back-top.css +21 -7
- package/css/badge.css +5 -5
- package/css/breadcrumb.css +18 -16
- package/css/button-group.css +4 -6
- package/css/button.css +4 -7
- package/css/calendar-picker.css +177 -94
- package/css/calendar-range-picker.css +206 -121
- package/css/card.css +34 -6
- package/css/carousel.css +65 -49
- package/css/cascader.css +41 -29
- package/css/checkbox-group.css +9 -6
- package/css/checkbox.css +5 -4
- package/css/citation.css +7 -2
- package/css/clipboard.css +20 -4
- package/css/collapsible.css +29 -14
- package/css/color-field.css +4 -4
- package/css/color-picker.css +77 -23
- package/css/color-slider.css +10 -8
- package/css/color-swatch-picker.css +5 -5
- package/css/combobox.css +14 -10
- package/css/command.css +13 -8
- package/css/context-menu.css +10 -5
- package/css/date-field.css +4 -4
- package/css/date-picker.css +165 -102
- package/css/date-range-picker.css +186 -123
- package/css/description.css +10 -6
- package/css/descriptions.css +47 -19
- package/css/dialog.css +50 -35
- package/css/drawer.css +75 -21
- package/css/editable.css +15 -41
- package/css/empty-state.css +21 -3
- package/css/field-array.css +4 -1
- package/css/field.css +17 -18
- package/css/fieldset.css +33 -13
- package/css/file-upload.css +65 -32
- package/css/float-button.css +25 -15
- package/css/floating-panel.css +1 -1
- package/css/form.css +24 -10
- package/css/grid-list.css +1 -1
- package/css/highlight.css +4 -4
- package/css/hover-card.css +19 -12
- package/css/image-viewer.css +77 -27
- package/css/image.css +12 -4
- package/css/infinite-scroll.css +8 -4
- package/css/input-group.css +74 -26
- package/css/kbd.css +1 -1
- package/css/label.css +27 -11
- package/css/layout.css +17 -10
- package/css/list.css +13 -9
- package/css/listbox.css +12 -7
- package/css/loading-bar.css +3 -0
- package/css/mention.css +10 -8
- package/css/menu.css +10 -5
- package/css/menubar.css +13 -8
- package/css/navigation-menu.css +2 -2
- package/css/notification.css +114 -31
- package/css/number-animation.css +2 -2
- package/css/number-field.css +60 -37
- package/css/page-header.css +63 -26
- package/css/pagination.css +35 -38
- package/css/password-input.css +10 -66
- package/css/pin-input.css +18 -26
- package/css/popconfirm.css +20 -11
- package/css/popover.css +18 -12
- package/css/progress.css +14 -13
- package/css/prompt-input.css +3 -3
- package/css/question-flow.css +33 -7
- package/css/radio-group.css +120 -55
- package/css/rating.css +31 -14
- package/css/select.css +14 -10
- package/css/separator.css +22 -4
- package/css/side-nav.css +16 -11
- package/css/signature-pad.css +23 -9
- package/css/skeleton.css +7 -7
- package/css/slider.css +71 -42
- package/css/sparkline.css +8 -2
- package/css/spinner.css +40 -20
- package/css/statistic.css +14 -14
- package/css/steps.css +115 -84
- package/css/switch.css +9 -7
- package/css/table.css +27 -10
- package/css/tabs.css +35 -12
- package/css/tag-group.css +17 -6
- package/css/tag.css +54 -29
- package/css/tags-input.css +38 -19
- package/css/text-field.css +5 -5
- package/css/time-field.css +4 -4
- package/css/time-picker.css +150 -64
- package/css/time-range-picker.css +91 -62
- package/css/timeline.css +37 -20
- package/css/timer.css +3 -3
- package/css/toggle-group.css +4 -4
- package/css/tool-call.css +6 -4
- package/css/toolbar.css +6 -5
- package/css/tooltip.css +15 -16
- package/css/tour.css +14 -7
- package/css/transfer.css +22 -16
- package/css/tree-select.css +10 -10
- package/css/tree.css +26 -25
- package/css/typography.css +28 -25
- package/dist/css/accordion.css +47 -20
- package/dist/css/alert.css +14 -15
- package/dist/css/anchor.css +2 -2
- package/dist/css/approval.css +37 -13
- package/dist/css/avatar-group.css +9 -12
- package/dist/css/avatar.css +20 -18
- package/dist/css/back-top.css +21 -7
- package/dist/css/badge.css +5 -5
- package/dist/css/breadcrumb.css +18 -16
- package/dist/css/button-group.css +4 -6
- package/dist/css/button.css +4 -7
- package/dist/css/calendar-picker.css +177 -94
- package/dist/css/calendar-range-picker.css +206 -121
- package/dist/css/card.css +34 -6
- package/dist/css/carousel.css +65 -49
- package/dist/css/cascader.css +41 -29
- package/dist/css/checkbox-group.css +9 -6
- package/dist/css/checkbox.css +5 -4
- package/dist/css/citation.css +7 -2
- package/dist/css/clipboard.css +20 -4
- package/dist/css/collapsible.css +29 -14
- package/dist/css/color-field.css +4 -4
- package/dist/css/color-picker.css +77 -23
- package/dist/css/color-slider.css +10 -8
- package/dist/css/color-swatch-picker.css +5 -5
- package/dist/css/combobox.css +14 -10
- package/dist/css/command.css +13 -8
- package/dist/css/context-menu.css +10 -5
- package/dist/css/date-field.css +4 -4
- package/dist/css/date-picker.css +165 -102
- package/dist/css/date-range-picker.css +186 -123
- package/dist/css/description.css +10 -6
- package/dist/css/descriptions.css +47 -19
- package/dist/css/dialog.css +50 -35
- package/dist/css/drawer.css +75 -21
- package/dist/css/editable.css +15 -41
- package/dist/css/empty-state.css +21 -3
- package/dist/css/field-array.css +4 -1
- package/dist/css/field.css +17 -18
- package/dist/css/fieldset.css +33 -13
- package/dist/css/file-upload.css +65 -32
- package/dist/css/float-button.css +25 -15
- package/dist/css/floating-panel.css +1 -1
- package/dist/css/form.css +24 -10
- package/dist/css/grid-list.css +1 -1
- package/dist/css/highlight.css +4 -4
- package/dist/css/hover-card.css +19 -12
- package/dist/css/image-viewer.css +77 -27
- package/dist/css/image.css +12 -4
- package/dist/css/infinite-scroll.css +8 -4
- package/dist/css/input-group.css +74 -26
- package/dist/css/kbd.css +1 -1
- package/dist/css/label.css +27 -11
- package/dist/css/layout.css +17 -10
- package/dist/css/list.css +13 -9
- package/dist/css/listbox.css +12 -7
- package/dist/css/loading-bar.css +3 -0
- package/dist/css/mention.css +10 -8
- package/dist/css/menu.css +10 -5
- package/dist/css/menubar.css +13 -8
- package/dist/css/navigation-menu.css +2 -2
- package/dist/css/notification.css +114 -31
- package/dist/css/number-animation.css +2 -2
- package/dist/css/number-field.css +60 -37
- package/dist/css/page-header.css +63 -26
- package/dist/css/pagination.css +35 -38
- package/dist/css/password-input.css +10 -66
- package/dist/css/pin-input.css +18 -26
- package/dist/css/popconfirm.css +20 -11
- package/dist/css/popover.css +18 -12
- package/dist/css/progress.css +14 -13
- package/dist/css/prompt-input.css +3 -3
- package/dist/css/question-flow.css +33 -7
- package/dist/css/radio-group.css +120 -55
- package/dist/css/rating.css +31 -14
- package/dist/css/select.css +14 -10
- package/dist/css/separator.css +22 -4
- package/dist/css/side-nav.css +16 -11
- package/dist/css/signature-pad.css +23 -9
- package/dist/css/skeleton.css +7 -7
- package/dist/css/slider.css +71 -42
- package/dist/css/sparkline.css +8 -2
- package/dist/css/spinner.css +40 -20
- package/dist/css/statistic.css +14 -14
- package/dist/css/steps.css +115 -84
- package/dist/css/switch.css +9 -7
- package/dist/css/table.css +27 -10
- package/dist/css/tabs.css +35 -12
- package/dist/css/tag-group.css +17 -6
- package/dist/css/tag.css +54 -29
- package/dist/css/tags-input.css +38 -19
- package/dist/css/text-field.css +5 -5
- package/dist/css/time-field.css +4 -4
- package/dist/css/time-picker.css +150 -64
- package/dist/css/time-range-picker.css +91 -62
- package/dist/css/timeline.css +37 -20
- package/dist/css/timer.css +3 -3
- package/dist/css/toggle-group.css +4 -4
- package/dist/css/tool-call.css +6 -4
- package/dist/css/toolbar.css +6 -5
- package/dist/css/tooltip.css +15 -16
- package/dist/css/tour.css +14 -7
- package/dist/css/transfer.css +22 -16
- package/dist/css/tree-select.css +10 -10
- package/dist/css/tree.css +26 -25
- package/dist/css/typography.css +28 -25
- package/dist/family/action-control.css +30 -24
- package/dist/family/chart.css +57 -0
- package/dist/family/collection-item.css +12 -8
- package/dist/family/field-chrome.css +28 -19
- package/dist/family/loading-ring.css +20 -13
- package/dist/family/swatch.css +4 -4
- package/dist/family/tag-list.css +6 -0
- package/family/action-control.css +30 -24
- package/family/chart.css +57 -0
- package/family/collection-item.css +12 -8
- package/family/field-chrome.css +28 -19
- package/family/loading-ring.css +20 -13
- package/family/swatch.css +4 -4
- package/family/tag-list.css +6 -0
- package/index.css +3580 -2060
- package/index.unlayered.css +3579 -2060
- package/package.json +2 -2
|
@@ -73,7 +73,6 @@
|
|
|
73
73
|
--xh-_date-range-picker-control-px: var(--xh-control-px-md);
|
|
74
74
|
--xh-_date-range-picker-gap: var(--xh-control-gap-md);
|
|
75
75
|
--xh-_date-range-picker-font-size: var(--xh-control-font-md);
|
|
76
|
-
--xh-_date-range-picker-item-py: var(--xh-list-option-py-md);
|
|
77
76
|
|
|
78
77
|
/* 选中对号随语气走。没写 data-tone 时这几个 --xh-_tone* 没被声明,退回品牌色 */
|
|
79
78
|
/* 内嵌日期段沿用日期输入的轻强调焦点:当前段是「当前项」,淡底 + 淡底前景,不另画一套实心选择态。 */
|
|
@@ -101,12 +100,11 @@
|
|
|
101
100
|
flex-direction: column;
|
|
102
101
|
gap: var(--xh-date-range-picker-gap, var(--xh-space-1));
|
|
103
102
|
|
|
104
|
-
/*
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
inline-size: var(--xh-date-range-picker-control-w,
|
|
109
|
-
min-inline-size: min(max(var(--xh-control-w), var(--xh-date-range-picker-control-min-w, var(--xh-control-min-w))), 100%);
|
|
103
|
+
/* 与别的字段同一个缺省宽:放在一排筛选条件里不比相邻的字段宽出一截。
|
|
104
|
+
起止两组按日带时刻的段位放不进时由两组各自收住(见 segment-group),分隔符与日历钮始终留在框里;
|
|
105
|
+
要整段都露出来,经这条槽钉宽。父容器给不出这么宽时整件跟着收,地板同步让步,不越出父容器 */
|
|
106
|
+
inline-size: var(--xh-date-range-picker-control-w, var(--xh-control-w));
|
|
107
|
+
min-inline-size: min(var(--xh-date-range-picker-control-w, var(--xh-control-w)), var(--xh-date-range-picker-control-min-w, var(--xh-control-min-w)), 100%);
|
|
110
108
|
max-inline-size: 100%;
|
|
111
109
|
}
|
|
112
110
|
|
|
@@ -118,7 +116,6 @@
|
|
|
118
116
|
--xh-_date-range-picker-control-px: var(--xh-control-px-sm);
|
|
119
117
|
--xh-_date-range-picker-gap: var(--xh-control-gap-sm);
|
|
120
118
|
--xh-_date-range-picker-font-size: var(--xh-control-font-sm);
|
|
121
|
-
--xh-_date-range-picker-item-py: var(--xh-list-option-py-sm);
|
|
122
119
|
}
|
|
123
120
|
|
|
124
121
|
.xh-scope-date-range-picker:is([data-part='root'], [data-part='positioner'])[data-size='lg'] {
|
|
@@ -127,7 +124,6 @@
|
|
|
127
124
|
--xh-_date-range-picker-control-px: var(--xh-control-px-lg);
|
|
128
125
|
--xh-_date-range-picker-gap: var(--xh-control-gap-lg);
|
|
129
126
|
--xh-_date-range-picker-font-size: var(--xh-control-font-lg);
|
|
130
|
-
--xh-_date-range-picker-item-py: var(--xh-list-option-py-lg);
|
|
131
127
|
}
|
|
132
128
|
|
|
133
129
|
/* 只要声明了 display 就盖掉了 UA 的 [hidden]{display:none},收起态得自己还回去 */
|
|
@@ -136,7 +132,9 @@
|
|
|
136
132
|
}
|
|
137
133
|
|
|
138
134
|
.xh-scope-date-range-picker[data-part='label'] {
|
|
139
|
-
|
|
135
|
+
/* 竖排时标签与控件之间的距离:根的 gap 之上补一段差值,--xh-date-range-picker-label-gap 给多少最终就是多少 */
|
|
136
|
+
margin-block-end: calc(var(--xh-date-range-picker-label-gap, var(--xh-space-2)) - var(--xh-date-range-picker-gap, var(--xh-space-1)));
|
|
137
|
+
color: var(--xh-date-range-picker-label-fg, var(--xh-fg-muted));
|
|
140
138
|
font-size: var(--xh-date-range-picker-label-font-size, var(--xh-text-label-size));
|
|
141
139
|
font-weight: var(--xh-date-range-picker-label-font-weight, var(--xh-text-label-weight));
|
|
142
140
|
line-height: var(--xh-leading-none);
|
|
@@ -147,7 +145,7 @@
|
|
|
147
145
|
}
|
|
148
146
|
|
|
149
147
|
.xh-scope-date-range-picker[data-part='label'][data-disabled] {
|
|
150
|
-
color: var(--xh-date-range-picker-label-fg-disabled, var(--xh-fg-
|
|
148
|
+
color: var(--xh-date-range-picker-label-fg-disabled, var(--xh-fg-muted));
|
|
151
149
|
}
|
|
152
150
|
|
|
153
151
|
/* 画成一个框的是 control 而不是 input:段位、清空按钮、日历按钮三者要看起来是一体的,
|
|
@@ -169,8 +167,6 @@
|
|
|
169
167
|
--xh-field-border-hover: var(--xh-date-range-picker-control-border-hover, var(--xh-_field-variant-border-hover));
|
|
170
168
|
--xh-field-border-focus: var(--xh-date-range-picker-control-border-focus, var(--xh-_field-variant-border-focus));
|
|
171
169
|
--xh-field-border-invalid: var(--xh-date-range-picker-control-border-invalid, var(--xh-_field-variant-border-invalid));
|
|
172
|
-
--xh-field-ring-focus: var(--xh-ring-focus);
|
|
173
|
-
--xh-field-ring-invalid: var(--xh-ring-invalid);
|
|
174
170
|
--xh-field-shadow-rest: var(--xh-date-range-picker-control-shadow, none);
|
|
175
171
|
/* 段位靠键盘编辑,盒上不是文本光标 */
|
|
176
172
|
--xh-field-cursor-rest: default;
|
|
@@ -183,12 +179,15 @@
|
|
|
183
179
|
}
|
|
184
180
|
|
|
185
181
|
/* 段位与作者写在段间的分隔符都在这一层里:段位自己那身皮由 date-field 那份样式负责
|
|
186
|
-
|
|
182
|
+
(它们戴的是那一份解剖的标记),这里只管把一排段位横过来、占满输入行剩下的宽度。
|
|
183
|
+
框比两组段位窄时(缺省宽里放按日带时刻的区间),两组按各自内容宽的比例一起收、各在组内裁掉放不下的段位:
|
|
184
|
+
不裁的话终点那组会被挤成零宽、段位与日历钮一起冒出框外。裁掉的段位仍可聚焦,键盘走到它时组跟着滚过去 */
|
|
187
185
|
.xh-scope-date-range-picker[data-part='segment-group'] {
|
|
188
186
|
display: inline-flex;
|
|
189
187
|
flex: 1 1 auto;
|
|
190
188
|
align-items: center;
|
|
191
189
|
min-inline-size: 0;
|
|
190
|
+
overflow: hidden;
|
|
192
191
|
block-size: 100%;
|
|
193
192
|
color: inherit;
|
|
194
193
|
/* 表单控件不继承页面字体,只给字号会让段位用 UA 默认字族,与周围文本对不上 */
|
|
@@ -201,9 +200,10 @@
|
|
|
201
200
|
display: none;
|
|
202
201
|
}
|
|
203
202
|
|
|
204
|
-
/*
|
|
203
|
+
/* 起点那组只占自己的宽度,分隔符紧跟在起点后面;剩下的宽度全给终点那组。
|
|
204
|
+
放不下时它同样收缩,与终点那组一起让,不把终点那组挤成零宽 */
|
|
205
205
|
.xh-scope-date-range-picker[data-part='segment-group'][data-index='0']:has(+ [data-part='range-separator']) {
|
|
206
|
-
flex: 0
|
|
206
|
+
flex: 0 1 auto;
|
|
207
207
|
}
|
|
208
208
|
|
|
209
209
|
.xh-scope-date-range-picker[data-part='range-separator'] {
|
|
@@ -315,21 +315,22 @@
|
|
|
315
315
|
}
|
|
316
316
|
|
|
317
317
|
/* 浮层:含两张日历网格的锚定面板,走 floating 材质——实体底 + --xh-border-default 描边 +
|
|
318
|
-
--xh-elevation-floating
|
|
318
|
+
--xh-elevation-floating 落影,不透景、不画顶光。面板自己不留内衬:标题栏、网格、快捷选项列与时间列各带内衬,
|
|
319
|
+
分隔线才能从面板一边通到另一边 */
|
|
319
320
|
.xh-scope-date-range-picker[data-part='content'] {
|
|
320
321
|
position: relative;
|
|
321
322
|
display: block;
|
|
322
323
|
/* 行内轴只有落位后的可用宽度这一个上限:不夹住,浮层就会被定位层的包含块压窄,
|
|
323
324
|
网格轨道跟着缩到比日期钮还窄,相邻两颗日期钮互相盖住 */
|
|
324
325
|
max-inline-size: var(--xh-_date-range-picker-available-w);
|
|
325
|
-
padding-block: var(--xh-date-range-picker-content-py, var(--xh-space-
|
|
326
|
-
padding-inline: var(--xh-date-range-picker-content-px, var(--xh-space-
|
|
326
|
+
padding-block: var(--xh-date-range-picker-content-py, var(--xh-space-0));
|
|
327
|
+
padding-inline: var(--xh-date-range-picker-content-px, var(--xh-space-0));
|
|
327
328
|
border: var(--xh-stroke-thin) solid var(--xh-date-range-picker-content-border, var(--xh-border-default));
|
|
328
329
|
border-radius: var(--xh-date-range-picker-content-radius, var(--xh-shape-overlay));
|
|
329
330
|
background: var(--xh-date-range-picker-content-bg, var(--xh-bg-surface));
|
|
330
331
|
color: var(--xh-date-range-picker-content-fg, var(--xh-fg-default));
|
|
331
|
-
/*
|
|
332
|
-
(按 rem 的滚动面档会随根字号缩小,根字号低于 16px
|
|
332
|
+
/* 日历是定高结构:网格、时间列与底栏都按 px 排,天然高度就是它们的和,缺省不另设上限
|
|
333
|
+
(按 rem 的滚动面档会随根字号缩小,根字号低于 16px 时底栏就被挤到滚动里);
|
|
333
334
|
可用高度是定位引擎算出的视口余量,视口真放不下时再收一截 */
|
|
334
335
|
max-block-size: min(var(--xh-date-range-picker-max-h, var(--xh-_date-range-picker-available-h)), var(--xh-_date-range-picker-available-h));
|
|
335
336
|
/* 两轴都滚:块轴放不下时面板内自己竖滚,行内轴放不下时面板内自己横滚,
|
|
@@ -389,38 +390,8 @@
|
|
|
389
390
|
align-items: stretch;
|
|
390
391
|
}
|
|
391
392
|
|
|
392
|
-
/*
|
|
393
|
-
|
|
394
|
-
手机档两张月历折行堆叠,线画在块起始边 */
|
|
395
|
-
.xh-scope-date-range-picker[data-part='calendar'] + .xh-scope-date-range-picker[data-part='calendar'] {
|
|
396
|
-
padding-block-start: var(--xh-date-range-picker-panel-gap, var(--xh-space-3));
|
|
397
|
-
border-block-start: var(--xh-stroke-thin) solid var(--xh-date-range-picker-panel-divider, var(--xh-material-solid-separator));
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
/* 平板起两张月历并排放得下,线改画在行内起始边 */
|
|
401
|
-
@media (min-width: 768px) {
|
|
402
|
-
.xh-scope-date-range-picker[data-part='calendar'] + .xh-scope-date-range-picker[data-part='calendar'] {
|
|
403
|
-
padding-block-start: 0;
|
|
404
|
-
padding-inline-start: var(--xh-date-range-picker-panel-gap, var(--xh-space-3));
|
|
405
|
-
border-block-start: none;
|
|
406
|
-
border-inline-start: var(--xh-stroke-thin) solid var(--xh-date-range-picker-panel-divider, var(--xh-material-solid-separator));
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
/* 快捷选项与它旁边那张日历之间留出同样的空当。
|
|
411
|
-
手机档选项条在上、日历在下,空当留在块轴。
|
|
412
|
-
选项列后面紧跟着它自己的两条条子节点,相邻选择器接不到日历,按「前面有过选项列」取日历 */
|
|
413
|
-
.xh-scope-date-range-picker[data-part='preset-group'] ~ .xh-scope-date-range-picker[data-part='calendar'] {
|
|
414
|
-
padding-block-start: var(--xh-date-range-picker-panel-gap, var(--xh-space-3));
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
/* 平板起选项列回到日历一侧,空当跟着回到行内轴,两道分隔线左右对称 */
|
|
418
|
-
@media (min-width: 768px) {
|
|
419
|
-
.xh-scope-date-range-picker[data-part='preset-group'] ~ .xh-scope-date-range-picker[data-part='calendar'] {
|
|
420
|
-
padding-block-start: 0;
|
|
421
|
-
padding-inline-start: var(--xh-date-range-picker-panel-gap, var(--xh-space-3));
|
|
422
|
-
}
|
|
423
|
-
}
|
|
393
|
+
/* 两张日历并排时不画竖线、不另留空当:各自左右 16 的内衬合成 32 的空白就是两张网格的界,
|
|
394
|
+
两条标题栏的下沿分隔线首尾相接连成一条 */
|
|
424
395
|
|
|
425
396
|
.xh-scope-date-range-picker[data-part='calendar'] {
|
|
426
397
|
display: flex;
|
|
@@ -428,11 +399,18 @@
|
|
|
428
399
|
撑出去的那截交给面板自己横滚 */
|
|
429
400
|
min-inline-size: max-content;
|
|
430
401
|
flex-direction: column;
|
|
431
|
-
gap: var(--xh-date-range-picker-calendar-gap, var(--xh-space-
|
|
402
|
+
gap: var(--xh-date-range-picker-calendar-gap, var(--xh-space-0));
|
|
432
403
|
/* 数字等宽:1 与 7 的字形宽度在比例字体里并不相同,不定住会让整张网格随月份抖动 */
|
|
433
404
|
font-variant-numeric: tabular-nums;
|
|
434
405
|
}
|
|
435
406
|
|
|
407
|
+
/* 浮层里的日历标题取常规字重:面板标题栏只是年月的读数,不压过网格 */
|
|
408
|
+
.xh-scope-date-range-picker[data-part='calendar'] .xh-scope-calendar-range-picker[data-part='heading'],
|
|
409
|
+
.xh-scope-date-range-picker[data-part='calendar'] .xh-scope-calendar-range-picker[data-part='heading-year-trigger'],
|
|
410
|
+
.xh-scope-date-range-picker[data-part='calendar'] .xh-scope-calendar-range-picker[data-part='heading-month-trigger'] {
|
|
411
|
+
font-weight: var(--xh-date-range-picker-heading-font-weight, var(--xh-font-weight-regular));
|
|
412
|
+
}
|
|
413
|
+
|
|
436
414
|
.xh-scope-date-range-picker[data-part='calendar'][hidden] {
|
|
437
415
|
display: none;
|
|
438
416
|
}
|
|
@@ -446,15 +424,16 @@
|
|
|
446
424
|
/* 这一条的另一轴由并排的那块给:不写就按内容收,分隔线只画到最后一条选项 */
|
|
447
425
|
align-self: stretch;
|
|
448
426
|
flex-direction: row;
|
|
449
|
-
gap: var(--xh-date-range-picker-preset-group-gap, var(--xh-
|
|
427
|
+
gap: var(--xh-date-range-picker-preset-group-gap, var(--xh-space-1));
|
|
450
428
|
/* 选项多起来时这一条自己滚,不把整张面板撑大 */
|
|
451
429
|
max-block-size: var(--xh-date-range-picker-preset-group-h, var(--xh-viewport-h-lg));
|
|
452
|
-
padding: var(--xh-date-range-picker-preset-group-
|
|
430
|
+
padding-block: var(--xh-date-range-picker-preset-group-py, var(--xh-space-2_5));
|
|
431
|
+
padding-inline: var(--xh-date-range-picker-preset-group-px, var(--xh-space-2));
|
|
453
432
|
overflow-x: auto;
|
|
454
433
|
overflow-y: hidden;
|
|
455
434
|
/* 浮层滚动面:滚到头不把页面一起带走 */
|
|
456
435
|
overscroll-behavior: contain;
|
|
457
|
-
border-block-end: var(--xh-stroke-thin) solid var(--xh-date-range-picker-column-divider, var(--xh-material-solid-
|
|
436
|
+
border-block-end: var(--xh-stroke-thin) solid var(--xh-date-range-picker-column-divider, var(--xh-material-solid-border));
|
|
458
437
|
}
|
|
459
438
|
|
|
460
439
|
/* 平板起:换成贴在日历行内起始一侧的竖列,滚动轴与分隔线一起转过来 */
|
|
@@ -464,7 +443,7 @@
|
|
|
464
443
|
flex-direction: column;
|
|
465
444
|
overflow: auto;
|
|
466
445
|
border-block-end: none;
|
|
467
|
-
border-inline-end: var(--xh-stroke-thin) solid var(--xh-date-range-picker-column-divider, var(--xh-material-solid-
|
|
446
|
+
border-inline-end: var(--xh-stroke-thin) solid var(--xh-date-range-picker-column-divider, var(--xh-material-solid-border));
|
|
468
447
|
}
|
|
469
448
|
}
|
|
470
449
|
|
|
@@ -472,30 +451,37 @@
|
|
|
472
451
|
display: none;
|
|
473
452
|
}
|
|
474
453
|
|
|
475
|
-
/*
|
|
476
|
-
|
|
477
|
-
|
|
454
|
+
/* 快捷选项:每一项是一颗 24 高的淡底小钮——静息 100、悬停 / 高亮 200、按下 300(淡底承载阶梯),
|
|
455
|
+
字取说明档 12px、次级前景;禁用面由 Collection Item 家族按 overlay 语境给。headless 把它投成 listbox 的
|
|
456
|
+
option、当前值落在哪一项就报 aria-selected,选中仍画行尾对号(面与字不变),对号是这条状态唯一的视觉通道。
|
|
457
|
+
选项没有正文部件,匿名文本进不了家族网格的 text 列,行保持块级排版,末端为对号预留固定轨 */
|
|
478
458
|
.xh-scope-date-range-picker[data-part='preset'] {
|
|
479
|
-
--xh-collection-block-padding:
|
|
480
|
-
--xh-collection-inline-padding: var(--xh-date-range-picker-preset-px, var(--xh-space-
|
|
481
|
-
--xh-collection-font-size: var(--xh-text-
|
|
482
|
-
--xh-collection-radius: var(--xh-date-range-picker-preset-radius, var(--xh-shape-
|
|
483
|
-
|
|
484
|
-
--xh-collection-fg-
|
|
485
|
-
|
|
486
|
-
--xh-collection-fg-
|
|
487
|
-
--xh-collection-fg-
|
|
488
|
-
--xh-collection-fg-
|
|
489
|
-
--xh-collection-fg-selected-highlight: var(--xh-date-range-picker-preset-fg-
|
|
490
|
-
--xh-collection-fg-selected-hover: var(--xh-date-range-picker-preset-fg-
|
|
491
|
-
--xh-collection-fg-selected-pressed: var(--xh-date-range-picker-preset-fg-
|
|
459
|
+
--xh-collection-block-padding: 0;
|
|
460
|
+
--xh-collection-inline-padding: var(--xh-date-range-picker-preset-px, var(--xh-space-2));
|
|
461
|
+
--xh-collection-font-size: var(--xh-date-range-picker-preset-font-size, var(--xh-text-caption-size));
|
|
462
|
+
--xh-collection-radius: var(--xh-date-range-picker-preset-radius, var(--xh-shape-control));
|
|
463
|
+
--xh-collection-fg-rest: var(--xh-date-range-picker-preset-fg, var(--xh-fg-muted));
|
|
464
|
+
--xh-collection-fg-selected: var(--xh-date-range-picker-preset-fg, var(--xh-fg-muted));
|
|
465
|
+
/* 悬停 / 高亮 / 按下时字换正文色:底升到 200 / 300 之后,次级前景在暗色下不足 4.5:1 */
|
|
466
|
+
--xh-collection-fg-hover: var(--xh-date-range-picker-preset-fg-hover, var(--xh-fg-default));
|
|
467
|
+
--xh-collection-fg-keyboard-highlight: var(--xh-date-range-picker-preset-fg-hover, var(--xh-fg-default));
|
|
468
|
+
--xh-collection-fg-pressed: var(--xh-date-range-picker-preset-fg-hover, var(--xh-fg-default));
|
|
469
|
+
--xh-collection-fg-selected-highlight: var(--xh-date-range-picker-preset-fg-hover, var(--xh-fg-default));
|
|
470
|
+
--xh-collection-fg-selected-hover: var(--xh-date-range-picker-preset-fg-hover, var(--xh-fg-default));
|
|
471
|
+
--xh-collection-fg-selected-pressed: var(--xh-date-range-picker-preset-fg-hover, var(--xh-fg-default));
|
|
492
472
|
--xh-collection-fg-disabled: var(--xh-date-range-picker-preset-fg-disabled, var(--xh-fg-disabled));
|
|
493
|
-
--xh-collection-
|
|
494
|
-
--xh-collection-
|
|
495
|
-
--xh-collection-
|
|
496
|
-
--xh-collection-
|
|
497
|
-
--xh-collection-bg-
|
|
498
|
-
--xh-collection-bg-selected
|
|
473
|
+
--xh-collection-font-weight-selected: var(--xh-font-weight-regular);
|
|
474
|
+
--xh-collection-font-weight-selected-highlight: var(--xh-font-weight-regular);
|
|
475
|
+
--xh-collection-font-weight-selected-hover: var(--xh-font-weight-regular);
|
|
476
|
+
--xh-collection-font-weight-selected-pressed: var(--xh-font-weight-regular);
|
|
477
|
+
--xh-collection-bg-rest: var(--xh-date-range-picker-preset-bg, var(--xh-bg-subtle));
|
|
478
|
+
--xh-collection-bg-selected: var(--xh-date-range-picker-preset-bg, var(--xh-bg-subtle));
|
|
479
|
+
--xh-collection-bg-hover: var(--xh-date-range-picker-preset-bg-hover, var(--xh-bg-subtle-hover));
|
|
480
|
+
--xh-collection-bg-keyboard-highlight: var(--xh-date-range-picker-preset-bg-hover, var(--xh-bg-subtle-hover));
|
|
481
|
+
--xh-collection-bg-selected-highlight: var(--xh-date-range-picker-preset-bg-hover, var(--xh-bg-subtle-hover));
|
|
482
|
+
--xh-collection-bg-selected-hover: var(--xh-date-range-picker-preset-bg-hover, var(--xh-bg-subtle-hover));
|
|
483
|
+
--xh-collection-bg-pressed: var(--xh-date-range-picker-preset-bg-pressed, var(--xh-bg-subtle-active));
|
|
484
|
+
--xh-collection-bg-selected-pressed: var(--xh-date-range-picker-preset-bg-pressed, var(--xh-bg-subtle-active));
|
|
499
485
|
--xh-collection-outline-keyboard-highlight: transparent;
|
|
500
486
|
--xh-collection-outline-selected-highlight: transparent;
|
|
501
487
|
|
|
@@ -503,12 +489,15 @@
|
|
|
503
489
|
position: relative;
|
|
504
490
|
display: block;
|
|
505
491
|
flex: none;
|
|
492
|
+
block-size: var(--xh-date-range-picker-preset-h, var(--xh-control-action-size));
|
|
506
493
|
/* 对号的末端轨始终留着,切换选中时文字与整列宽度都不移动。 */
|
|
507
494
|
padding-inline-end: calc(
|
|
508
|
-
var(--xh-date-range-picker-preset-px, var(--xh-space-
|
|
509
|
-
var(--xh-date-range-picker-preset-check-size, var(--xh-control-indicator-
|
|
495
|
+
var(--xh-date-range-picker-preset-px, var(--xh-space-2)) +
|
|
496
|
+
var(--xh-date-range-picker-preset-check-size, var(--xh-control-indicator-sm)) +
|
|
510
497
|
var(--xh-space-1)
|
|
511
498
|
);
|
|
499
|
+
/* 一行字在 24 高的钮里垂直居中 */
|
|
500
|
+
line-height: var(--xh-date-range-picker-preset-h, var(--xh-control-action-size));
|
|
512
501
|
white-space: nowrap;
|
|
513
502
|
user-select: none;
|
|
514
503
|
}
|
|
@@ -530,9 +519,9 @@
|
|
|
530
519
|
content: '';
|
|
531
520
|
position: absolute;
|
|
532
521
|
inset-block-start: 50%;
|
|
533
|
-
inset-inline-end: var(--xh-date-range-picker-preset-px, var(--xh-space-
|
|
534
|
-
inline-size: var(--xh-date-range-picker-preset-check-size, var(--xh-control-indicator-
|
|
535
|
-
block-size: var(--xh-date-range-picker-preset-check-size, var(--xh-control-indicator-
|
|
522
|
+
inset-inline-end: var(--xh-date-range-picker-preset-px, var(--xh-space-2));
|
|
523
|
+
inline-size: var(--xh-date-range-picker-preset-check-size, var(--xh-control-indicator-sm));
|
|
524
|
+
block-size: var(--xh-date-range-picker-preset-check-size, var(--xh-control-indicator-sm));
|
|
536
525
|
translate: 0 -50%;
|
|
537
526
|
background-color: var(--xh-date-range-picker-preset-check-fg, var(--xh-_date-range-picker-check-fg));
|
|
538
527
|
opacity: 0;
|
|
@@ -558,24 +547,30 @@
|
|
|
558
547
|
align-items: flex-start;
|
|
559
548
|
}
|
|
560
549
|
|
|
561
|
-
/*
|
|
550
|
+
/* 确认按钮沉到所在那一行的底边:它是整块面板的出口,不跟日历顶边对齐。面板不留内衬,
|
|
551
|
+
钮自己与底边、末边各让一档空当 */
|
|
562
552
|
.xh-scope-date-range-picker[data-part='content']:has(> [data-part='column-group']) > [data-part='confirm-trigger']:where(.xh-scope-date-range-picker) {
|
|
563
553
|
align-self: flex-end;
|
|
554
|
+
margin: var(--xh-date-range-picker-confirm-trigger-margin, var(--xh-space-2));
|
|
564
555
|
}
|
|
565
556
|
|
|
566
|
-
/*
|
|
557
|
+
/* 一端的几列成组并排,小标题落在与日历标题栏等高的顶带里(不含它下沿那道线);
|
|
558
|
+
组的行内起始边画一道整高的竖线,日历与起点组、起点组与终点组之间各一道,组内列与列之间不画线 */
|
|
567
559
|
.xh-scope-date-range-picker[data-part='column-group'] {
|
|
560
|
+
--xh-_date-range-picker-column-group-offset: var(
|
|
561
|
+
--xh-date-range-picker-column-group-offset,
|
|
562
|
+
calc(var(--xh-control-action-size) + 2 * var(--xh-space-2))
|
|
563
|
+
);
|
|
564
|
+
|
|
568
565
|
position: relative;
|
|
569
566
|
display: flex;
|
|
570
567
|
flex: none;
|
|
571
568
|
flex-wrap: nowrap;
|
|
572
569
|
align-items: stretch;
|
|
573
570
|
min-inline-size: 0;
|
|
574
|
-
/*
|
|
575
|
-
padding-block-start: var(
|
|
576
|
-
|
|
577
|
-
calc(var(--xh-control-h-sm) + var(--xh-date-range-picker-calendar-gap, var(--xh-space-2)))
|
|
578
|
-
);
|
|
571
|
+
/* 让出与日历标题栏等高的一带放小标题;列自己的上沿描边接着标题栏的分隔线画过去 */
|
|
572
|
+
padding-block-start: var(--xh-_date-range-picker-column-group-offset);
|
|
573
|
+
border-inline-start: var(--xh-stroke-thin) solid var(--xh-date-range-picker-column-divider, var(--xh-material-solid-border));
|
|
579
574
|
}
|
|
580
575
|
|
|
581
576
|
.xh-scope-date-range-picker[data-part='column-group'][hidden] {
|
|
@@ -583,10 +578,11 @@
|
|
|
583
578
|
}
|
|
584
579
|
|
|
585
580
|
.xh-scope-date-range-picker[data-part='column-group'] + .xh-scope-date-range-picker[data-part='column-group'] {
|
|
586
|
-
margin-inline-start: var(--xh-date-range-picker-column-group-gap, var(--xh-space-
|
|
581
|
+
margin-inline-start: var(--xh-date-range-picker-column-group-gap, var(--xh-space-0));
|
|
587
582
|
}
|
|
588
583
|
|
|
589
|
-
/*
|
|
584
|
+
/* 组的小标题:辅助文本档、次要前景,起止两组同一副样式(与时间范围选择器一致)。正在编辑的那一端虽然投影了
|
|
585
|
+
data-editing,这里不拿它分档:并排的两个标题一深一浅,读起来像一个可用、一个不可用 */
|
|
590
586
|
.xh-scope-date-range-picker[data-part='column-group-label'] {
|
|
591
587
|
position: absolute;
|
|
592
588
|
inset-block-start: 0;
|
|
@@ -595,7 +591,7 @@
|
|
|
595
591
|
box-sizing: border-box;
|
|
596
592
|
align-items: center;
|
|
597
593
|
justify-content: center;
|
|
598
|
-
block-size: var(--xh-
|
|
594
|
+
block-size: var(--xh-_date-range-picker-column-group-offset);
|
|
599
595
|
padding-inline: var(--xh-date-range-picker-column-group-label-px, var(--xh-space-1));
|
|
600
596
|
color: var(--xh-date-range-picker-column-group-label-fg, var(--xh-fg-subtle));
|
|
601
597
|
font-size: var(--xh-text-caption-size);
|
|
@@ -604,48 +600,57 @@
|
|
|
604
600
|
user-select: none;
|
|
605
601
|
}
|
|
606
602
|
|
|
607
|
-
.xh-scope-date-range-picker[data-part='column-group-label'][data-editing] {
|
|
608
|
-
color: var(--xh-date-range-picker-column-group-label-fg-active, var(--xh-fg-default));
|
|
609
|
-
font-weight: var(--xh-date-range-picker-column-group-label-font-weight-active, var(--xh-font-weight-medium));
|
|
610
|
-
}
|
|
611
|
-
|
|
612
603
|
.xh-scope-date-range-picker[data-part='column-group-label'][hidden] {
|
|
613
604
|
display: none;
|
|
614
605
|
}
|
|
615
606
|
|
|
607
|
+
/* 时间列:列高与日历网格同高(再加列顶那道线),列底与网格底边对齐;列与列之间不画线 */
|
|
616
608
|
.xh-scope-date-range-picker[data-part='time-column'] {
|
|
609
|
+
--xh-_date-range-picker-time-column-h: var(--xh-date-range-picker-time-column-h, var(--xh-overlay-calendar-column-h));
|
|
610
|
+
--xh-_date-range-picker-time-column-py: var(--xh-date-range-picker-time-column-py, var(--xh-space-1));
|
|
611
|
+
|
|
617
612
|
display: flex;
|
|
618
613
|
flex: none;
|
|
619
614
|
flex-direction: column;
|
|
620
|
-
gap: var(--xh-date-range-picker-time-column-gap,
|
|
615
|
+
gap: var(--xh-date-range-picker-time-column-gap, var(--xh-space-2));
|
|
621
616
|
min-inline-size: var(--xh-date-range-picker-time-column-min-w, var(--xh-overlay-column-min-w));
|
|
622
617
|
/* 几列并排:定高而不是随内容收,否则时列与分列的可选值一多一少就错位 */
|
|
623
|
-
block-size: var(--xh-
|
|
624
|
-
|
|
618
|
+
block-size: calc(var(--xh-_date-range-picker-time-column-h) + var(--xh-stroke-thin));
|
|
619
|
+
/* 列底留出一截空白:末尾几格(23 时、55–59 分)也能滚到列顶,各列的选中落在同一行 */
|
|
620
|
+
padding-block: var(--xh-_date-range-picker-time-column-py)
|
|
621
|
+
calc(var(--xh-_date-range-picker-time-column-h) - var(--xh-date-range-picker-time-item-h, var(--xh-control-action-size)) - var(--xh-_date-range-picker-time-column-py));
|
|
625
622
|
padding-inline: var(--xh-date-range-picker-time-column-px, 0);
|
|
626
623
|
overflow-x: hidden;
|
|
627
624
|
overflow-y: auto;
|
|
628
625
|
/* 浮层滚动面:滚到头不把页面一起带走 */
|
|
629
626
|
overscroll-behavior: contain;
|
|
630
|
-
border-
|
|
627
|
+
border-block-start: var(--xh-stroke-thin) solid var(--xh-date-range-picker-column-divider, var(--xh-material-solid-border));
|
|
631
628
|
}
|
|
632
629
|
|
|
633
630
|
.xh-scope-date-range-picker[data-part='time-column'][hidden] {
|
|
634
631
|
display: none;
|
|
635
632
|
}
|
|
636
633
|
|
|
637
|
-
/*
|
|
638
|
-
|
|
639
|
-
|
|
634
|
+
/* 粗指针下日历格长到 44 见方(行距从 36 加到 44),网格多出六行的那截;列高跟着加,列底仍与网格底边对齐 */
|
|
635
|
+
@media (pointer: coarse) {
|
|
636
|
+
.xh-scope-date-range-picker[data-part='time-column'] {
|
|
637
|
+
--xh-_date-range-picker-time-column-h: var(--xh-date-range-picker-time-column-h, var(--xh-overlay-calendar-column-h-coarse));
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
/* 时间格:24 高的通栏条,列内间距 8 撑出 32 的行距;悬停 / 高亮 100、按下 200 由 Collection Item 家族按
|
|
642
|
+
overlay 语境给,选中透明底 + 中等字重 + 末端对号(对号集合的选中),不上品牌淡底、不变字色。
|
|
643
|
+
格里只有数字、没有正文部件,保持自己的居中排版与等宽标记轨,家族只给状态面 */
|
|
640
644
|
.xh-scope-date-range-picker[data-part='time-item'] {
|
|
641
645
|
--xh-_date-range-picker-time-item-rail: max(
|
|
642
646
|
var(--xh-date-range-picker-time-item-px, var(--xh-space-0_5)),
|
|
643
647
|
calc(var(--xh-date-range-picker-time-item-check-size, var(--xh-_date-range-picker-time-item-check-size)) + var(--xh-space-0_5))
|
|
644
648
|
);
|
|
645
|
-
--xh-collection-block-padding:
|
|
649
|
+
--xh-collection-block-padding: 0;
|
|
646
650
|
--xh-collection-inline-padding: var(--xh-_date-range-picker-time-item-rail);
|
|
647
651
|
--xh-collection-font-size: var(--xh-date-range-picker-time-item-font-size, var(--xh-_date-range-picker-font-size));
|
|
648
|
-
|
|
652
|
+
/* 浮层里的列表是通栏行:格铺满列宽、不取圆角 */
|
|
653
|
+
--xh-collection-radius: var(--xh-date-range-picker-time-item-radius, 0);
|
|
649
654
|
--xh-collection-fg-rest: var(--xh-date-range-picker-time-item-fg, var(--xh-material-frosted-fg));
|
|
650
655
|
--xh-collection-fg-hover: var(--xh-date-range-picker-time-item-fg, var(--xh-material-frosted-fg));
|
|
651
656
|
--xh-collection-fg-keyboard-highlight: var(--xh-date-range-picker-time-item-fg, var(--xh-material-frosted-fg));
|
|
@@ -654,10 +659,10 @@
|
|
|
654
659
|
--xh-collection-fg-selected-highlight: var(--xh-date-range-picker-time-item-fg-selected, var(--xh-date-range-picker-time-item-fg, var(--xh-material-frosted-fg)));
|
|
655
660
|
--xh-collection-fg-selected-hover: var(--xh-date-range-picker-time-item-fg-selected, var(--xh-date-range-picker-time-item-fg, var(--xh-material-frosted-fg)));
|
|
656
661
|
--xh-collection-fg-selected-pressed: var(--xh-date-range-picker-time-item-fg-selected, var(--xh-date-range-picker-time-item-fg, var(--xh-material-frosted-fg)));
|
|
657
|
-
--xh-collection-font-weight-selected: var(--xh-date-range-picker-time-item-font-weight-selected, var(--xh-font-weight-
|
|
658
|
-
--xh-collection-font-weight-selected-highlight: var(--xh-date-range-picker-time-item-font-weight-selected, var(--xh-font-weight-
|
|
659
|
-
--xh-collection-font-weight-selected-hover: var(--xh-date-range-picker-time-item-font-weight-selected, var(--xh-font-weight-
|
|
660
|
-
--xh-collection-font-weight-selected-pressed: var(--xh-date-range-picker-time-item-font-weight-selected, var(--xh-font-weight-
|
|
662
|
+
--xh-collection-font-weight-selected: var(--xh-date-range-picker-time-item-font-weight-selected, var(--xh-font-weight-medium));
|
|
663
|
+
--xh-collection-font-weight-selected-highlight: var(--xh-date-range-picker-time-item-font-weight-selected, var(--xh-font-weight-medium));
|
|
664
|
+
--xh-collection-font-weight-selected-hover: var(--xh-date-range-picker-time-item-font-weight-selected, var(--xh-font-weight-medium));
|
|
665
|
+
--xh-collection-font-weight-selected-pressed: var(--xh-date-range-picker-time-item-font-weight-selected, var(--xh-font-weight-medium));
|
|
661
666
|
--xh-collection-bg-hover: var(--xh-date-range-picker-time-item-bg-hover, var(--xh-bg-subtle));
|
|
662
667
|
--xh-collection-bg-keyboard-highlight: var(--xh-date-range-picker-time-item-bg-hover, var(--xh-bg-subtle));
|
|
663
668
|
--xh-collection-bg-selected-highlight: var(--xh-date-range-picker-time-item-bg-hover, var(--xh-bg-subtle));
|
|
@@ -672,7 +677,7 @@
|
|
|
672
677
|
flex: none;
|
|
673
678
|
align-items: center;
|
|
674
679
|
justify-content: center;
|
|
675
|
-
block-size: var(--xh-date-range-picker-time-item-h,
|
|
680
|
+
block-size: var(--xh-date-range-picker-time-item-h, var(--xh-control-action-size));
|
|
676
681
|
font-variant-numeric: tabular-nums;
|
|
677
682
|
line-height: var(--xh-leading-normal);
|
|
678
683
|
text-align: center;
|
|
@@ -680,6 +685,14 @@
|
|
|
680
685
|
user-select: none;
|
|
681
686
|
}
|
|
682
687
|
|
|
688
|
+
/* 命中区向上下各补半个列内间距:两格之间那 8px 缝归上下两格各一半,指针落在缝里不落空 */
|
|
689
|
+
.xh-scope-date-range-picker[data-part='time-item']::before {
|
|
690
|
+
content: '';
|
|
691
|
+
position: absolute;
|
|
692
|
+
inset-block: calc(-0.5 * var(--xh-date-range-picker-time-column-gap, var(--xh-space-2)));
|
|
693
|
+
inset-inline: 0;
|
|
694
|
+
}
|
|
695
|
+
|
|
683
696
|
.xh-scope-date-range-picker[data-part='time-item'][hidden] {
|
|
684
697
|
display: none;
|
|
685
698
|
}
|
|
@@ -764,11 +777,11 @@
|
|
|
764
777
|
background-color: var(--xh-fg-disabled);
|
|
765
778
|
}
|
|
766
779
|
|
|
767
|
-
/* 确认钮是面板里唯一的主要动作:品牌实心、悬停 /
|
|
768
|
-
|
|
780
|
+
/* 确认钮是面板里唯一的主要动作:品牌实心、悬停 / 按下换面、焦点环全由 Action Control 的 text solid 档给,
|
|
781
|
+
xs 档 24 高、字取说明档 12px;槽名统一按部件取 --xh-date-range-picker-confirm-trigger-*,只映射到家族桥接槽 */
|
|
769
782
|
.xh-scope-date-range-picker[data-part='confirm-trigger'] {
|
|
770
783
|
--xh-action-visual-size: var(--xh-date-range-picker-confirm-trigger-h, var(--xh-_action-profile-visual-size));
|
|
771
|
-
--xh-action-padding-inline: var(--xh-date-range-picker-confirm-trigger-px, var(--xh-
|
|
784
|
+
--xh-action-padding-inline: var(--xh-date-range-picker-confirm-trigger-px, var(--xh-space-2));
|
|
772
785
|
--xh-action-radius: var(--xh-date-range-picker-confirm-trigger-radius, var(--xh-shape-control));
|
|
773
786
|
--xh-action-bg-rest: var(--xh-date-range-picker-confirm-trigger-bg, var(--xh-_action-variant-bg-rest));
|
|
774
787
|
--xh-action-bg-hover: var(--xh-date-range-picker-confirm-trigger-bg-hover, var(--xh-_action-variant-bg-hover));
|
|
@@ -781,7 +794,7 @@
|
|
|
781
794
|
--xh-action-shadow-rest: var(--xh-date-range-picker-confirm-trigger-shadow, none);
|
|
782
795
|
--xh-action-shadow-hover: var(--xh-date-range-picker-confirm-trigger-shadow, none);
|
|
783
796
|
--xh-action-shadow-pressed: var(--xh-date-range-picker-confirm-trigger-shadow, none);
|
|
784
|
-
--xh-action-font-size: var(--xh-text-
|
|
797
|
+
--xh-action-font-size: var(--xh-date-range-picker-confirm-trigger-font-size, var(--xh-text-caption-size));
|
|
785
798
|
|
|
786
799
|
border-width: 0;
|
|
787
800
|
}
|
|
@@ -791,6 +804,61 @@
|
|
|
791
804
|
display: none;
|
|
792
805
|
}
|
|
793
806
|
|
|
807
|
+
/* 底栏:面板底部通栏的一条操作区,上沿一道 border-default 线与日历、时间组隔开,四周 8 的内衬;
|
|
808
|
+
面板换行排布(并排两张日历、快捷选项列、起止两组时间列)时独占一整行,落在它们下面。
|
|
809
|
+
首个子节点落在撑满余宽的那条轨道上,其后的各自按内容宽排在行尾:作者另放的文字与链接排在行首,
|
|
810
|
+
确认钮总落在行尾;只放了确认钮时它独占那条轨道,靠 justify-self 贴到行尾。
|
|
811
|
+
底栏不参与撑宽:面板换行排布时,Chrome 把每个子项的固有宽相加当作面板的固有宽,
|
|
812
|
+
底栏的字与钮会把面板多撑出一截、日历与时间组末端空出一块。inline-size 包含让它的内容不计入固有宽,
|
|
813
|
+
行内内衬也就不能写在它自己身上(内衬照样计入),改由两端各一个定宽占位让出(见下面那条) */
|
|
814
|
+
.xh-scope-date-range-picker[data-part='footer'] {
|
|
815
|
+
/* 两端占位的宽:占位与相邻项之间本来就隔着一道 gap,占位自己只补到内衬的差额 */
|
|
816
|
+
--xh-_date-range-picker-footer-inset: max(
|
|
817
|
+
var(--xh-space-0),
|
|
818
|
+
calc(var(--xh-date-range-picker-footer-px, var(--xh-space-2)) - var(--xh-date-range-picker-footer-gap, var(--xh-space-2)))
|
|
819
|
+
);
|
|
820
|
+
|
|
821
|
+
display: grid;
|
|
822
|
+
contain: inline-size;
|
|
823
|
+
flex-basis: 100%;
|
|
824
|
+
grid-auto-flow: column;
|
|
825
|
+
grid-template-columns: minmax(0, 1fr);
|
|
826
|
+
align-items: center;
|
|
827
|
+
gap: var(--xh-date-range-picker-footer-gap, var(--xh-space-2));
|
|
828
|
+
padding-block: var(--xh-date-range-picker-footer-py, var(--xh-space-2));
|
|
829
|
+
border-block-start: var(--xh-stroke-thin) solid var(--xh-date-range-picker-footer-border, var(--xh-material-solid-border));
|
|
830
|
+
color: var(--xh-date-range-picker-footer-fg, var(--xh-fg-muted));
|
|
831
|
+
font-size: var(--xh-date-range-picker-footer-font-size, var(--xh-text-caption-size));
|
|
832
|
+
}
|
|
833
|
+
|
|
834
|
+
/* 上面给了 display,UA 的 [hidden]{display:none} 已被盖掉,这里补回来 */
|
|
835
|
+
.xh-scope-date-range-picker[data-part='footer'][hidden] {
|
|
836
|
+
display: none;
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
/* 底栏里只放了确认钮、而确认钮按状态收起(没开 showTime)时,底栏一并让位,不留一条空栏 */
|
|
840
|
+
.xh-scope-date-range-picker[data-part='footer']:has(> .xh-scope-date-range-picker[data-part='confirm-trigger'][hidden]:only-child) {
|
|
841
|
+
display: none;
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
.xh-scope-date-range-picker[data-part='footer'] > .xh-scope-date-range-picker[data-part='confirm-trigger'] {
|
|
845
|
+
justify-self: end;
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
/* 行首行尾的内衬由两端的定宽占位让出,不挂在首末子节点上:首个子节点可能是裸文本,
|
|
849
|
+
末一个可能是按状态收起的确认钮,外边距都接不住。占位与其余子项一样在 inline-size 包含之内,不计入面板的固有宽 */
|
|
850
|
+
.xh-scope-date-range-picker[data-part='footer']::before,
|
|
851
|
+
.xh-scope-date-range-picker[data-part='footer']::after {
|
|
852
|
+
content: '';
|
|
853
|
+
inline-size: var(--xh-_date-range-picker-footer-inset);
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
/* 行首占位落在那条撑满余宽的显式轨道之前(在它前面长出一条隐式列),首个子节点仍落在那条轨道上。
|
|
857
|
+
占位不进显式轨道:尺寸包含照样计入显式轨道与轨道间的 gap,多一条显式列面板就多撑出一道 gap */
|
|
858
|
+
.xh-scope-date-range-picker[data-part='footer']::before {
|
|
859
|
+
grid-column: span 1 / 1;
|
|
860
|
+
}
|
|
861
|
+
|
|
794
862
|
/* 没写内容就由皮肤画兜底字形;作者往部件里塞了自己的图形,这几条即不命中 */
|
|
795
863
|
.xh-scope-date-range-picker[data-part='clear-trigger']:empty::before {
|
|
796
864
|
content: '';
|
|
@@ -848,11 +916,6 @@
|
|
|
848
916
|
.xh-scope-date-range-picker[data-part='time-column'][aria-disabled='true'] [data-part='time-item']:where(.xh-scope-date-range-picker) {
|
|
849
917
|
color: GrayText;
|
|
850
918
|
}
|
|
851
|
-
|
|
852
|
-
/* 正在编辑的那一端靠字重与系统前景区分,不靠颜色 */
|
|
853
|
-
.xh-scope-date-range-picker[data-part='column-group-label'][data-editing] {
|
|
854
|
-
color: CanvasText;
|
|
855
|
-
}
|
|
856
919
|
}
|
|
857
920
|
|
|
858
921
|
@media (forced-colors: active) {
|
package/dist/css/description.css
CHANGED
|
@@ -7,9 +7,10 @@
|
|
|
7
7
|
* 字段族说明与错误文案的公共层,按 [data-part='description'] / [data-part='error-text']
|
|
8
8
|
* 匹配下面逐个列出的 scope。
|
|
9
9
|
*
|
|
10
|
-
* 收在这里的是逐值相同的角色规则:说明 = --xh-text-
|
|
11
|
-
* --xh-leading-normal;错误文案 = --xh-text-
|
|
12
|
-
*
|
|
10
|
+
* 收在这里的是逐值相同的角色规则:说明 = --xh-text-caption-size / --xh-fg-subtle /
|
|
11
|
+
* --xh-leading-normal;错误文案 = --xh-text-caption-size / --xh-fg-danger / --xh-leading-normal;
|
|
12
|
+
* 两者外边距归零、紧贴控件(字段根的 gap 缺省为 0),最小高 --xh-space-5:这一行辅助行在表单里
|
|
13
|
+
* 就是字段之间的项距,有它的字段不再另留项距。挂了 --xh-<组件>-description-* /
|
|
13
14
|
* --xh-<组件>-error-* 覆盖槽的组件在各自皮肤里只另写带槽的 color / font-size 压过这里,
|
|
14
15
|
* margin 与 line-height 不再重写。
|
|
15
16
|
*
|
|
@@ -30,9 +31,10 @@
|
|
|
30
31
|
.xh-scope-field[data-part='description'],
|
|
31
32
|
.xh-scope-fieldset[data-part='description'] {
|
|
32
33
|
margin: 0;
|
|
33
|
-
|
|
34
|
+
min-block-size: var(--xh-space-5);
|
|
35
|
+
font-size: var(--xh-text-caption-size);
|
|
34
36
|
line-height: var(--xh-leading-normal);
|
|
35
|
-
color: var(--xh-fg-
|
|
37
|
+
color: var(--xh-fg-subtle);
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
/* 错误文案出现时淡入。不 invalid 时节点带 hidden,但不交给浏览器的 [hidden] 规则收成 display: none:
|
|
@@ -43,7 +45,8 @@
|
|
|
43
45
|
.xh-scope-field[data-part='error-text'],
|
|
44
46
|
.xh-scope-fieldset[data-part='error-text'] {
|
|
45
47
|
margin: 0;
|
|
46
|
-
|
|
48
|
+
min-block-size: var(--xh-space-5);
|
|
49
|
+
font-size: var(--xh-text-caption-size);
|
|
47
50
|
line-height: var(--xh-leading-normal);
|
|
48
51
|
color: var(--xh-fg-danger);
|
|
49
52
|
transition: opacity var(--xh-motion-duration-enter) var(--xh-motion-ease-enter);
|
|
@@ -54,6 +57,7 @@
|
|
|
54
57
|
display: block;
|
|
55
58
|
position: absolute;
|
|
56
59
|
block-size: 0;
|
|
60
|
+
min-block-size: 0;
|
|
57
61
|
overflow: clip;
|
|
58
62
|
visibility: hidden;
|
|
59
63
|
opacity: 0;
|