@xihan-ui/styles 3.1.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 +470 -0
- package/component-tokens.d.ts +230 -60
- package/components.tokens.json +5156 -1557
- package/css/accordion.css +47 -20
- package/css/alert.css +16 -17
- package/css/anchor.css +2 -2
- package/css/approval.css +41 -17
- 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 +13 -12
- package/css/calendar-picker.css +178 -95
- package/css/calendar-range-picker.css +207 -122
- package/css/card.css +34 -6
- package/css/carousel.css +94 -46
- package/css/cartesian-chart.css +11 -11
- package/css/cascader.css +51 -39
- package/css/checkbox-group.css +9 -6
- package/css/checkbox.css +5 -4
- package/css/citation.css +9 -4
- package/css/clipboard.css +20 -4
- package/css/code-view.css +6 -6
- 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 +14 -9
- package/css/combobox.css +26 -14
- package/css/command.css +14 -9
- package/css/context-menu.css +10 -5
- package/css/date-field.css +12 -6
- package/css/date-picker.css +178 -109
- package/css/date-range-picker.css +199 -130
- package/css/description.css +10 -6
- package/css/descriptions.css +47 -19
- package/css/dialog.css +50 -35
- package/css/diff-view.css +8 -8
- package/css/drawer.css +75 -21
- package/css/editable.css +15 -41
- package/css/empty-state.css +21 -3
- package/css/field-array.css +5 -2
- package/css/field.css +17 -18
- package/css/fieldset.css +33 -13
- package/css/file-upload.css +66 -33
- package/css/float-button.css +60 -35
- package/css/floating-panel.css +1 -1
- package/css/form.css +30 -16
- package/css/graph-chart.css +2 -2
- package/css/grid-list.css +1 -1
- package/css/highlight.css +5 -5
- package/css/hover-card.css +19 -12
- package/css/image-viewer.css +77 -27
- package/css/image.css +13 -5
- 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 +11 -9
- package/css/menu.css +10 -5
- package/css/menubar.css +13 -8
- package/css/message-feed.css +1 -1
- package/css/navigation-menu.css +2 -2
- package/css/notification.css +132 -49
- package/css/number-animation.css +2 -2
- package/css/number-field.css +75 -52
- package/css/page-header.css +64 -27
- package/css/pagination.css +35 -38
- package/css/password-input.css +12 -68
- package/css/pin-input.css +18 -26
- package/css/popconfirm.css +23 -14
- package/css/popover.css +18 -12
- package/css/progress.css +14 -13
- package/css/prompt-input.css +3 -3
- package/css/question-flow.css +41 -15
- package/css/radar-chart.css +6 -6
- package/css/radio-group.css +120 -55
- package/css/rating.css +32 -15
- package/css/select.css +16 -12
- package/css/separator.css +24 -6
- package/css/side-nav.css +29 -24
- package/css/signature-pad.css +23 -9
- package/css/skeleton.css +12 -12
- package/css/slider.css +77 -48
- package/css/sortable.css +2 -2
- 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 +29 -12
- package/css/tabs.css +35 -12
- package/css/tag-group.css +17 -6
- package/css/tag.css +54 -29
- package/css/tags-input.css +39 -20
- 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 +13 -11
- package/css/toolbar.css +6 -5
- package/css/tooltip.css +16 -17
- package/css/tour.css +14 -7
- package/css/transfer.css +22 -16
- package/css/tree-select.css +12 -12
- package/css/tree.css +26 -25
- package/css/typography.css +28 -25
- package/dist/css/accordion.css +296 -0
- package/dist/css/affix.css +47 -0
- package/dist/css/alert.css +246 -0
- package/dist/css/anchor.css +252 -0
- package/dist/css/approval.css +525 -0
- package/dist/css/avatar-group.css +96 -0
- package/dist/css/avatar.css +100 -0
- package/dist/css/back-top.css +175 -0
- package/dist/css/badge.css +205 -0
- package/dist/css/bar-code.css +62 -0
- package/dist/css/breadcrumb.css +232 -0
- package/dist/css/button-group.css +261 -0
- package/dist/css/button.css +216 -0
- package/dist/css/calendar-picker.css +550 -0
- package/dist/css/calendar-range-picker.css +639 -0
- package/dist/css/card.css +249 -0
- package/dist/css/carousel.css +726 -0
- package/dist/css/cartesian-chart.css +830 -0
- package/dist/css/cascader.css +973 -0
- package/dist/css/checkbox-group.css +361 -0
- package/dist/css/checkbox.css +258 -0
- package/dist/css/citation.css +475 -0
- package/dist/css/clipboard.css +331 -0
- package/dist/css/code-view.css +374 -0
- package/dist/css/collapsible.css +200 -0
- package/dist/css/color-field.css +176 -0
- package/dist/css/color-picker.css +649 -0
- package/dist/css/color-slider.css +283 -0
- package/dist/css/color-swatch-picker.css +250 -0
- package/dist/css/color-swatch.css +35 -0
- package/dist/css/combobox.css +578 -0
- package/dist/css/command.css +404 -0
- package/dist/css/context-menu.css +425 -0
- package/dist/css/date-field.css +317 -0
- package/dist/css/date-picker.css +931 -0
- package/dist/css/date-range-picker.css +949 -0
- package/dist/css/description.css +71 -0
- package/dist/css/descriptions.css +327 -0
- package/dist/css/dialog.css +470 -0
- package/dist/css/diff-view.css +513 -0
- package/dist/css/download-trigger.css +151 -0
- package/dist/css/drawer.css +606 -0
- package/dist/css/editable.css +269 -0
- package/dist/css/empty-state.css +181 -0
- package/dist/css/field-array.css +229 -0
- package/dist/css/field.css +165 -0
- package/dist/css/fieldset.css +122 -0
- package/dist/css/file-upload.css +462 -0
- package/dist/css/flex.css +441 -0
- package/dist/css/float-button.css +579 -0
- package/dist/css/floating-panel.css +429 -0
- package/dist/css/focus.css +46 -0
- package/dist/css/forced-colors.css +93 -0
- package/dist/css/form.css +407 -0
- package/dist/css/funnel-chart.css +106 -0
- package/dist/css/graph-chart.css +205 -0
- package/dist/css/grid-list.css +235 -0
- package/dist/css/grid.css +1201 -0
- package/dist/css/heatmap.css +552 -0
- package/dist/css/hierarchy-chart.css +298 -0
- package/dist/css/highlight.css +41 -0
- package/dist/css/hover-card.css +233 -0
- package/dist/css/icon.css +225 -0
- package/dist/css/image-cropper.css +373 -0
- package/dist/css/image-viewer.css +588 -0
- package/dist/css/image.css +106 -0
- package/dist/css/infinite-scroll.css +81 -0
- package/dist/css/input-group.css +323 -0
- package/dist/css/json-viewer.css +379 -0
- package/dist/css/kbd.css +72 -0
- package/dist/css/label.css +94 -0
- package/dist/css/layers.css +7 -0
- package/dist/css/layout.css +379 -0
- package/dist/css/liquid.css +106 -0
- package/dist/css/list.css +156 -0
- package/dist/css/listbox.css +395 -0
- package/dist/css/loading-bar.css +144 -0
- package/dist/css/log.css +306 -0
- package/dist/css/markdown-stream.css +149 -0
- package/dist/css/marquee.css +378 -0
- package/dist/css/masonry.css +70 -0
- package/dist/css/matrix-code.css +67 -0
- package/dist/css/mention.css +395 -0
- package/dist/css/menu.css +369 -0
- package/dist/css/menubar.css +461 -0
- package/dist/css/message-feed.css +318 -0
- package/dist/css/navigation-menu.css +513 -0
- package/dist/css/notification.css +865 -0
- package/dist/css/number-animation.css +44 -0
- package/dist/css/number-field.css +275 -0
- package/dist/css/overlay-arrow.css +56 -0
- package/dist/css/page-header.css +221 -0
- package/dist/css/pagination.css +447 -0
- package/dist/css/password-input.css +335 -0
- package/dist/css/pie-chart.css +247 -0
- package/dist/css/pin-input.css +191 -0
- package/dist/css/pointer.css +36 -0
- package/dist/css/popconfirm.css +329 -0
- package/dist/css/popover.css +285 -0
- package/dist/css/progress.css +502 -0
- package/dist/css/prompt-input.css +260 -0
- package/dist/css/question-flow.css +579 -0
- package/dist/css/radar-chart.css +233 -0
- package/dist/css/radio-group.css +663 -0
- package/dist/css/rating.css +311 -0
- package/dist/css/reasoning.css +343 -0
- package/dist/css/reset.css +117 -0
- package/dist/css/resizable.css +242 -0
- package/dist/css/sankey-chart.css +174 -0
- package/dist/css/scroll-area.css +240 -0
- package/dist/css/scrollbar.css +204 -0
- package/dist/css/select.css +616 -0
- package/dist/css/separator.css +140 -0
- package/dist/css/side-nav.css +481 -0
- package/dist/css/signature-pad.css +193 -0
- package/dist/css/skeleton.css +161 -0
- package/dist/css/slider.css +403 -0
- package/dist/css/sortable.css +228 -0
- package/dist/css/sparkline.css +170 -0
- package/dist/css/spinner.css +256 -0
- package/dist/css/splitter.css +159 -0
- package/dist/css/statistic.css +137 -0
- package/dist/css/steps.css +658 -0
- package/dist/css/switch.css +353 -0
- package/dist/css/table.css +1162 -0
- package/dist/css/tabs.css +967 -0
- package/dist/css/tag-group.css +258 -0
- package/dist/css/tag.css +335 -0
- package/dist/css/tags-input.css +341 -0
- package/dist/css/text-field.css +197 -0
- package/dist/css/time-field.css +277 -0
- package/dist/css/time-picker.css +793 -0
- package/dist/css/time-range-picker.css +775 -0
- package/dist/css/timeline.css +440 -0
- package/dist/css/timer.css +123 -0
- package/dist/css/timestamp.css +34 -0
- package/dist/css/toggle-group.css +424 -0
- package/dist/css/toggle.css +146 -0
- package/dist/css/tone.css +189 -0
- package/dist/css/tool-call.css +431 -0
- package/dist/css/toolbar.css +366 -0
- package/dist/css/tooltip.css +217 -0
- package/dist/css/tour.css +446 -0
- package/dist/css/transfer.css +644 -0
- package/dist/css/tree-select.css +878 -0
- package/dist/css/tree.css +734 -0
- package/dist/css/truncate.css +108 -0
- package/dist/css/typography.css +475 -0
- package/dist/css/undefined.css +58 -0
- package/dist/css/virtualizer.css +166 -0
- package/dist/css/visually-hidden.css +20 -0
- package/dist/css/watermark.css +82 -0
- package/dist/family/action-control.css +493 -0
- package/dist/family/chart.css +537 -0
- package/dist/family/check-mark.css +94 -0
- package/dist/family/choice-card.css +97 -0
- package/dist/family/collection-item.css +768 -0
- package/dist/family/field-chrome.css +296 -0
- package/dist/family/loading-ring.css +102 -0
- package/dist/family/material.css +72 -0
- package/dist/family/menu-choice.css +56 -0
- package/dist/family/motion.css +363 -0
- package/dist/family/swatch.css +59 -0
- package/dist/family/tag-list.css +65 -0
- package/family/action-control.css +33 -36
- 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 +10349 -8756
- package/index.unlayered.css +10350 -8758
- package/package.json +165 -164
package/css/date-field.css
CHANGED
|
@@ -63,7 +63,9 @@
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
[data-scope='date-field'][data-part='label'] {
|
|
66
|
-
|
|
66
|
+
/* 竖排时标签与控件之间的距离:根的 gap 之上补一段差值,--xh-date-field-label-gap 给多少最终就是多少 */
|
|
67
|
+
margin-block-end: calc(var(--xh-date-field-label-gap, var(--xh-space-2)) - var(--xh-date-field-gap, var(--xh-space-1)));
|
|
68
|
+
color: var(--xh-date-field-label-fg, var(--xh-fg-muted));
|
|
67
69
|
font-size: var(--xh-date-field-label-font-size, var(--xh-text-label-size));
|
|
68
70
|
font-weight: var(--xh-date-field-label-font-weight, var(--xh-text-label-weight));
|
|
69
71
|
}
|
|
@@ -73,7 +75,7 @@
|
|
|
73
75
|
}
|
|
74
76
|
|
|
75
77
|
[data-scope='date-field'][data-part='label'][data-disabled] {
|
|
76
|
-
color: var(--xh-date-field-label-fg-disabled, var(--xh-fg-
|
|
78
|
+
color: var(--xh-date-field-label-fg-disabled, var(--xh-fg-muted));
|
|
77
79
|
}
|
|
78
80
|
|
|
79
81
|
/* 分段框整体长得像一个输入框:描边、底色、圆角、聚焦环、五态与悬停由 Field Chrome 家族画在
|
|
@@ -93,8 +95,6 @@
|
|
|
93
95
|
--xh-field-border-hover: var(--xh-date-field-control-border-hover, var(--xh-_field-variant-border-hover));
|
|
94
96
|
--xh-field-border-focus: var(--xh-date-field-control-border-focus, var(--xh-_field-variant-border-focus));
|
|
95
97
|
--xh-field-border-invalid: var(--xh-date-field-control-border-invalid, var(--xh-_field-variant-border-invalid));
|
|
96
|
-
--xh-field-ring-focus: var(--xh-ring-focus);
|
|
97
|
-
--xh-field-ring-invalid: var(--xh-ring-invalid);
|
|
98
98
|
--xh-field-shadow-rest: var(--xh-date-field-control-shadow, none);
|
|
99
99
|
--xh-field-cursor-rest: default;
|
|
100
100
|
/* 家族 chrome 会重写 --xh-icon-size,使用者图标槽必须经桥接槽下发才能在盒内生效 */
|
|
@@ -130,8 +130,14 @@
|
|
|
130
130
|
color: transparent;
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
|
|
134
|
-
|
|
133
|
+
/* 段位与分隔符(后者是不带解剖的文字节点)一起淡出:显隐写在 segment-group 自己的私有槽上,
|
|
134
|
+
子节点只读槽——主体无特征的规则不挂在 data-placeholder-shown 后面,输入时翻转只让这一组失效 */
|
|
135
|
+
[data-scope='date-field'][data-part='segment-group'][data-placeholder-shown] {
|
|
136
|
+
--xh-_date-field-segment-opacity: 0;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
[data-scope='date-field'][data-part='segment-group'] > * {
|
|
140
|
+
opacity: var(--xh-_date-field-segment-opacity, 1);
|
|
135
141
|
}
|
|
136
142
|
|
|
137
143
|
[data-scope='date-field'][data-part='segment-group'][data-placeholder-shown]::before {
|
package/css/date-picker.css
CHANGED
|
@@ -74,7 +74,6 @@
|
|
|
74
74
|
--xh-_date-picker-control-px: var(--xh-control-px-md);
|
|
75
75
|
--xh-_date-picker-gap: var(--xh-control-gap-md);
|
|
76
76
|
--xh-_date-picker-font-size: var(--xh-control-font-md);
|
|
77
|
-
--xh-_date-picker-item-py: var(--xh-list-option-py-md);
|
|
78
77
|
|
|
79
78
|
/* 选中对号随语气走。没写 data-tone 时这几个 --xh-_tone* 没被声明,退回品牌色 */
|
|
80
79
|
/* 内嵌日期段沿用日期输入的轻强调焦点:当前段是「当前项」,淡底 + 淡底前景,不另画一套实心选择态。 */
|
|
@@ -110,7 +109,6 @@
|
|
|
110
109
|
--xh-_date-picker-control-px: var(--xh-control-px-sm);
|
|
111
110
|
--xh-_date-picker-gap: var(--xh-control-gap-sm);
|
|
112
111
|
--xh-_date-picker-font-size: var(--xh-control-font-sm);
|
|
113
|
-
--xh-_date-picker-item-py: var(--xh-list-option-py-sm);
|
|
114
112
|
}
|
|
115
113
|
|
|
116
114
|
[data-scope='date-picker']:is([data-part='root'], [data-part='positioner'])[data-size='lg'] {
|
|
@@ -119,7 +117,6 @@
|
|
|
119
117
|
--xh-_date-picker-control-px: var(--xh-control-px-lg);
|
|
120
118
|
--xh-_date-picker-gap: var(--xh-control-gap-lg);
|
|
121
119
|
--xh-_date-picker-font-size: var(--xh-control-font-lg);
|
|
122
|
-
--xh-_date-picker-item-py: var(--xh-list-option-py-lg);
|
|
123
120
|
}
|
|
124
121
|
|
|
125
122
|
/* 375px 复合面板要同时容下日历与时/分两列;手机档用正式小指示符,平板起恢复16px。 */
|
|
@@ -135,7 +132,9 @@
|
|
|
135
132
|
}
|
|
136
133
|
|
|
137
134
|
[data-scope='date-picker'][data-part='label'] {
|
|
138
|
-
|
|
135
|
+
/* 竖排时标签与控件之间的距离:根的 gap 之上补一段差值,--xh-date-picker-label-gap 给多少最终就是多少 */
|
|
136
|
+
margin-block-end: calc(var(--xh-date-picker-label-gap, var(--xh-space-2)) - var(--xh-date-picker-gap, var(--xh-space-1)));
|
|
137
|
+
color: var(--xh-date-picker-label-fg, var(--xh-fg-muted));
|
|
139
138
|
font-size: var(--xh-date-picker-label-font-size, var(--xh-text-label-size));
|
|
140
139
|
font-weight: var(--xh-date-picker-label-font-weight, var(--xh-text-label-weight));
|
|
141
140
|
line-height: var(--xh-leading-none);
|
|
@@ -146,7 +145,7 @@
|
|
|
146
145
|
}
|
|
147
146
|
|
|
148
147
|
[data-scope='date-picker'][data-part='label'][data-disabled] {
|
|
149
|
-
color: var(--xh-date-picker-label-fg-disabled, var(--xh-fg-
|
|
148
|
+
color: var(--xh-date-picker-label-fg-disabled, var(--xh-fg-muted));
|
|
150
149
|
}
|
|
151
150
|
|
|
152
151
|
/* 画成一个框的是 control 而不是 input:段位、清空按钮、日历按钮三者要看起来是一体的,
|
|
@@ -168,8 +167,6 @@
|
|
|
168
167
|
--xh-field-border-hover: var(--xh-date-picker-control-border-hover, var(--xh-_field-variant-border-hover));
|
|
169
168
|
--xh-field-border-focus: var(--xh-date-picker-control-border-focus, var(--xh-_field-variant-border-focus));
|
|
170
169
|
--xh-field-border-invalid: var(--xh-date-picker-control-border-invalid, var(--xh-_field-variant-border-invalid));
|
|
171
|
-
--xh-field-ring-focus: var(--xh-ring-focus);
|
|
172
|
-
--xh-field-ring-invalid: var(--xh-ring-invalid);
|
|
173
170
|
--xh-field-shadow-rest: var(--xh-date-picker-control-shadow, none);
|
|
174
171
|
/* 段位靠键盘编辑,盒上不是文本光标 */
|
|
175
172
|
--xh-field-cursor-rest: default;
|
|
@@ -211,8 +208,14 @@
|
|
|
211
208
|
color: transparent;
|
|
212
209
|
}
|
|
213
210
|
|
|
214
|
-
|
|
215
|
-
|
|
211
|
+
/* 段位与分隔符(后者是不带解剖的文字节点)一起淡出:显隐写在 segment-group 自己的私有槽上,
|
|
212
|
+
子节点只读槽——主体无特征的规则不挂在 data-placeholder-shown 后面,输入时翻转只让这一组失效 */
|
|
213
|
+
[data-scope='date-picker'][data-part='segment-group'][data-placeholder-shown] {
|
|
214
|
+
--xh-_date-picker-segment-opacity: 0;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
[data-scope='date-picker'][data-part='segment-group'] > * {
|
|
218
|
+
opacity: var(--xh-_date-picker-segment-opacity, 1);
|
|
216
219
|
}
|
|
217
220
|
|
|
218
221
|
[data-scope='date-picker'][data-part='segment-group'][data-placeholder-shown]::before {
|
|
@@ -316,21 +319,22 @@
|
|
|
316
319
|
}
|
|
317
320
|
|
|
318
321
|
/* 浮层:含日历网格与时间列的锚定面板,走 floating 材质——实体底 + --xh-border-default 描边 +
|
|
319
|
-
--xh-elevation-floating
|
|
322
|
+
--xh-elevation-floating 落影,不透景、不画顶光。面板自己不留内衬:标题栏、网格、快捷选项列与时间列各带内衬,
|
|
323
|
+
分隔线才能从面板一边通到另一边 */
|
|
320
324
|
[data-scope='date-picker'][data-part='content'] {
|
|
321
325
|
position: relative;
|
|
322
326
|
display: block;
|
|
323
327
|
/* 行内轴只有落位后的可用宽度这一个上限:不夹住,浮层就会被定位层的包含块压窄,
|
|
324
328
|
网格轨道跟着缩到比日期钮还窄,相邻两颗日期钮互相盖住 */
|
|
325
329
|
max-inline-size: var(--xh-_date-picker-available-w);
|
|
326
|
-
padding-block: var(--xh-date-picker-content-py, var(--xh-space-
|
|
327
|
-
padding-inline: var(--xh-date-picker-content-px, var(--xh-space-
|
|
330
|
+
padding-block: var(--xh-date-picker-content-py, var(--xh-space-0));
|
|
331
|
+
padding-inline: var(--xh-date-picker-content-px, var(--xh-space-0));
|
|
328
332
|
border: var(--xh-stroke-thin) solid var(--xh-date-picker-content-border, var(--xh-border-default));
|
|
329
333
|
border-radius: var(--xh-date-picker-content-radius, var(--xh-shape-overlay));
|
|
330
334
|
background: var(--xh-date-picker-content-bg, var(--xh-bg-surface));
|
|
331
335
|
color: var(--xh-date-picker-content-fg, var(--xh-fg-default));
|
|
332
|
-
/*
|
|
333
|
-
(按 rem 的滚动面档会随根字号缩小,根字号低于 16px
|
|
336
|
+
/* 日历是定高结构:网格、时间列与底栏都按 px 排,天然高度就是它们的和,缺省不另设上限
|
|
337
|
+
(按 rem 的滚动面档会随根字号缩小,根字号低于 16px 时底栏就被挤到滚动里);
|
|
334
338
|
可用高度是定位引擎算出的视口余量,视口真放不下时再收一截 */
|
|
335
339
|
max-block-size: min(var(--xh-date-picker-max-h, var(--xh-_date-picker-available-h)), var(--xh-_date-picker-available-h));
|
|
336
340
|
/* 两轴都滚:块轴放不下时面板内自己竖滚,行内轴放不下时面板内自己横滚,
|
|
@@ -371,7 +375,7 @@
|
|
|
371
375
|
[data-scope='calendar-picker'][data-part='root'] 上,而这里没有那个节点,
|
|
372
376
|
所以网格外层该有的排布得在这儿补齐(网格内部的皮仍归 calendar-picker 那一份) */
|
|
373
377
|
/* 真的摆了两张日历才横过来。写成 :has 而不是无条件 flex 行:
|
|
374
|
-
showTime 那套结构里 content
|
|
378
|
+
showTime 那套结构里 content 直属子节点是作者自己的包裹块与底栏,
|
|
375
379
|
无条件横排会把它们并到日历旁边去。
|
|
376
380
|
不加 :not([hidden]):content 收起态带 hidden 但仍在播退场动画,
|
|
377
381
|
排除掉会让它在那几帧退回 block、两张日历竖着堆一下。
|
|
@@ -400,43 +404,15 @@
|
|
|
400
404
|
align-items: flex-start;
|
|
401
405
|
}
|
|
402
406
|
|
|
403
|
-
/*
|
|
404
|
-
|
|
407
|
+
/* 确认按钮沉到所在那一行的底边:它是整块面板的出口,不跟日历顶边对齐。面板不留内衬,
|
|
408
|
+
钮自己与底边、末边各让一档空当 */
|
|
409
|
+
[data-scope='date-picker'][data-part='content']:has(> [data-part='time-column']) > [data-part='confirm-trigger']:where([data-scope='date-picker']) {
|
|
405
410
|
align-self: flex-end;
|
|
411
|
+
margin: var(--xh-date-picker-confirm-trigger-margin, var(--xh-space-2));
|
|
406
412
|
}
|
|
407
413
|
|
|
408
|
-
/*
|
|
409
|
-
|
|
410
|
-
手机档两张月历折行堆叠,线画在块起始边 */
|
|
411
|
-
[data-scope='date-picker'][data-part='calendar'] + [data-scope='date-picker'][data-part='calendar'] {
|
|
412
|
-
padding-block-start: var(--xh-date-picker-panel-gap, var(--xh-space-3));
|
|
413
|
-
border-block-start: var(--xh-stroke-thin) solid var(--xh-date-picker-panel-divider, var(--xh-material-solid-separator));
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
/* 平板起两张月历并排放得下,线改画在行内起始边 */
|
|
417
|
-
@media (min-width: 768px) {
|
|
418
|
-
[data-scope='date-picker'][data-part='calendar'] + [data-scope='date-picker'][data-part='calendar'] {
|
|
419
|
-
padding-block-start: 0;
|
|
420
|
-
padding-inline-start: var(--xh-date-picker-panel-gap, var(--xh-space-3));
|
|
421
|
-
border-block-start: none;
|
|
422
|
-
border-inline-start: var(--xh-stroke-thin) solid var(--xh-date-picker-panel-divider, var(--xh-material-solid-separator));
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
/* 快捷选项与它旁边那张日历之间留出同样的空当。
|
|
427
|
-
手机档选项条在上、日历在下,空当留在块轴。
|
|
428
|
-
选项列后面紧跟着它自己的两条条子节点,相邻选择器接不到日历,按「前面有过选项列」取日历 */
|
|
429
|
-
[data-scope='date-picker'][data-part='preset-group'] ~ [data-scope='date-picker'][data-part='calendar'] {
|
|
430
|
-
padding-block-start: var(--xh-date-picker-panel-gap, var(--xh-space-3));
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
/* 平板起选项列回到日历一侧,空当跟着回到行内轴,两道分隔线左右对称 */
|
|
434
|
-
@media (min-width: 768px) {
|
|
435
|
-
[data-scope='date-picker'][data-part='preset-group'] ~ [data-scope='date-picker'][data-part='calendar'] {
|
|
436
|
-
padding-block-start: 0;
|
|
437
|
-
padding-inline-start: var(--xh-date-picker-panel-gap, var(--xh-space-3));
|
|
438
|
-
}
|
|
439
|
-
}
|
|
414
|
+
/* 两张日历并排时不画竖线、不另留空当:各自左右 16 的内衬合成 32 的空白就是两张网格的界,
|
|
415
|
+
两条标题栏的下沿分隔线首尾相接连成一条 */
|
|
440
416
|
|
|
441
417
|
[data-scope='date-picker'][data-part='calendar'] {
|
|
442
418
|
display: flex;
|
|
@@ -444,11 +420,18 @@
|
|
|
444
420
|
撑出去的那截交给面板自己横滚 */
|
|
445
421
|
min-inline-size: max-content;
|
|
446
422
|
flex-direction: column;
|
|
447
|
-
gap: var(--xh-date-picker-calendar-gap, var(--xh-space-
|
|
423
|
+
gap: var(--xh-date-picker-calendar-gap, var(--xh-space-0));
|
|
448
424
|
/* 数字等宽:1 与 7 的字形宽度在比例字体里并不相同,不定住会让整张网格随月份抖动 */
|
|
449
425
|
font-variant-numeric: tabular-nums;
|
|
450
426
|
}
|
|
451
427
|
|
|
428
|
+
/* 浮层里的日历标题取常规字重:面板标题栏只是年月的读数,不压过网格 */
|
|
429
|
+
[data-scope='date-picker'][data-part='calendar'] [data-scope='calendar-picker'][data-part='heading'],
|
|
430
|
+
[data-scope='date-picker'][data-part='calendar'] [data-scope='calendar-picker'][data-part='heading-year-trigger'],
|
|
431
|
+
[data-scope='date-picker'][data-part='calendar'] [data-scope='calendar-picker'][data-part='heading-month-trigger'] {
|
|
432
|
+
font-weight: var(--xh-date-picker-heading-font-weight, var(--xh-font-weight-regular));
|
|
433
|
+
}
|
|
434
|
+
|
|
452
435
|
[data-scope='date-picker'][data-part='calendar']:has(+ [data-part='time-column']) {
|
|
453
436
|
position: relative;
|
|
454
437
|
}
|
|
@@ -459,7 +442,7 @@
|
|
|
459
442
|
inset-block: 0;
|
|
460
443
|
inset-inline-end: calc(-1 * var(--xh-stroke-thin));
|
|
461
444
|
inline-size: var(--xh-stroke-thin);
|
|
462
|
-
background: var(--xh-date-picker-column-divider, var(--xh-material-solid-
|
|
445
|
+
background: var(--xh-date-picker-column-divider, var(--xh-material-solid-border));
|
|
463
446
|
pointer-events: none;
|
|
464
447
|
}
|
|
465
448
|
|
|
@@ -476,15 +459,16 @@
|
|
|
476
459
|
/* 这一条的另一轴由并排的那块给:不写就按内容收,分隔线只画到最后一条选项 */
|
|
477
460
|
align-self: stretch;
|
|
478
461
|
flex-direction: row;
|
|
479
|
-
gap: var(--xh-date-picker-preset-group-gap, var(--xh-
|
|
462
|
+
gap: var(--xh-date-picker-preset-group-gap, var(--xh-space-1));
|
|
480
463
|
/* 选项多起来时这一条自己滚,不把整张面板撑大 */
|
|
481
464
|
max-block-size: var(--xh-date-picker-preset-group-h, var(--xh-viewport-h-lg));
|
|
482
|
-
padding: var(--xh-date-picker-preset-group-
|
|
465
|
+
padding-block: var(--xh-date-picker-preset-group-py, var(--xh-space-2_5));
|
|
466
|
+
padding-inline: var(--xh-date-picker-preset-group-px, var(--xh-space-2));
|
|
483
467
|
overflow-x: auto;
|
|
484
468
|
overflow-y: hidden;
|
|
485
469
|
/* 浮层滚动面:滚到头不把页面一起带走 */
|
|
486
470
|
overscroll-behavior: contain;
|
|
487
|
-
border-block-end: var(--xh-stroke-thin) solid var(--xh-date-picker-column-divider, var(--xh-material-solid-
|
|
471
|
+
border-block-end: var(--xh-stroke-thin) solid var(--xh-date-picker-column-divider, var(--xh-material-solid-border));
|
|
488
472
|
}
|
|
489
473
|
|
|
490
474
|
/* 平板起:换成贴在日历行内起始一侧的竖列,滚动轴与分隔线一起转过来 */
|
|
@@ -494,7 +478,7 @@
|
|
|
494
478
|
flex-direction: column;
|
|
495
479
|
overflow: auto;
|
|
496
480
|
border-block-end: none;
|
|
497
|
-
border-inline-end: var(--xh-stroke-thin) solid var(--xh-date-picker-column-divider, var(--xh-material-solid-
|
|
481
|
+
border-inline-end: var(--xh-stroke-thin) solid var(--xh-date-picker-column-divider, var(--xh-material-solid-border));
|
|
498
482
|
}
|
|
499
483
|
}
|
|
500
484
|
|
|
@@ -502,30 +486,37 @@
|
|
|
502
486
|
display: none;
|
|
503
487
|
}
|
|
504
488
|
|
|
505
|
-
/*
|
|
506
|
-
|
|
507
|
-
|
|
489
|
+
/* 快捷选项:每一项是一颗 24 高的淡底小钮——静息 100、悬停 / 高亮 200、按下 300(淡底承载阶梯),
|
|
490
|
+
字取说明档 12px、次级前景;禁用面由 Collection Item 家族按 overlay 语境给。headless 把它投成 listbox 的
|
|
491
|
+
option、当前值落在哪一项就报 aria-selected,选中仍画行尾对号(面与字不变),对号是这条状态唯一的视觉通道。
|
|
492
|
+
选项没有正文部件,匿名文本进不了家族网格的 text 列,行保持块级排版,末端为对号预留固定轨 */
|
|
508
493
|
[data-scope='date-picker'][data-part='preset'] {
|
|
509
|
-
--xh-collection-block-padding:
|
|
510
|
-
--xh-collection-inline-padding: var(--xh-date-picker-preset-px, var(--xh-space-
|
|
511
|
-
--xh-collection-font-size: var(--xh-text-
|
|
512
|
-
--xh-collection-radius: var(--xh-date-picker-preset-radius, var(--xh-shape-
|
|
513
|
-
|
|
514
|
-
--xh-collection-fg-
|
|
515
|
-
|
|
516
|
-
--xh-collection-fg-
|
|
517
|
-
--xh-collection-fg-
|
|
518
|
-
--xh-collection-fg-
|
|
519
|
-
--xh-collection-fg-selected-highlight: var(--xh-date-picker-preset-fg-
|
|
520
|
-
--xh-collection-fg-selected-hover: var(--xh-date-picker-preset-fg-
|
|
521
|
-
--xh-collection-fg-selected-pressed: var(--xh-date-picker-preset-fg-
|
|
494
|
+
--xh-collection-block-padding: 0;
|
|
495
|
+
--xh-collection-inline-padding: var(--xh-date-picker-preset-px, var(--xh-space-2));
|
|
496
|
+
--xh-collection-font-size: var(--xh-date-picker-preset-font-size, var(--xh-text-caption-size));
|
|
497
|
+
--xh-collection-radius: var(--xh-date-picker-preset-radius, var(--xh-shape-control));
|
|
498
|
+
--xh-collection-fg-rest: var(--xh-date-picker-preset-fg, var(--xh-fg-muted));
|
|
499
|
+
--xh-collection-fg-selected: var(--xh-date-picker-preset-fg, var(--xh-fg-muted));
|
|
500
|
+
/* 悬停 / 高亮 / 按下时字换正文色:底升到 200 / 300 之后,次级前景在暗色下不足 4.5:1 */
|
|
501
|
+
--xh-collection-fg-hover: var(--xh-date-picker-preset-fg-hover, var(--xh-fg-default));
|
|
502
|
+
--xh-collection-fg-keyboard-highlight: var(--xh-date-picker-preset-fg-hover, var(--xh-fg-default));
|
|
503
|
+
--xh-collection-fg-pressed: var(--xh-date-picker-preset-fg-hover, var(--xh-fg-default));
|
|
504
|
+
--xh-collection-fg-selected-highlight: var(--xh-date-picker-preset-fg-hover, var(--xh-fg-default));
|
|
505
|
+
--xh-collection-fg-selected-hover: var(--xh-date-picker-preset-fg-hover, var(--xh-fg-default));
|
|
506
|
+
--xh-collection-fg-selected-pressed: var(--xh-date-picker-preset-fg-hover, var(--xh-fg-default));
|
|
522
507
|
--xh-collection-fg-disabled: var(--xh-date-picker-preset-fg-disabled, var(--xh-fg-disabled));
|
|
523
|
-
--xh-collection-
|
|
524
|
-
--xh-collection-
|
|
525
|
-
--xh-collection-
|
|
526
|
-
--xh-collection-
|
|
527
|
-
--xh-collection-bg-
|
|
528
|
-
--xh-collection-bg-selected
|
|
508
|
+
--xh-collection-font-weight-selected: var(--xh-font-weight-regular);
|
|
509
|
+
--xh-collection-font-weight-selected-highlight: var(--xh-font-weight-regular);
|
|
510
|
+
--xh-collection-font-weight-selected-hover: var(--xh-font-weight-regular);
|
|
511
|
+
--xh-collection-font-weight-selected-pressed: var(--xh-font-weight-regular);
|
|
512
|
+
--xh-collection-bg-rest: var(--xh-date-picker-preset-bg, var(--xh-bg-subtle));
|
|
513
|
+
--xh-collection-bg-selected: var(--xh-date-picker-preset-bg, var(--xh-bg-subtle));
|
|
514
|
+
--xh-collection-bg-hover: var(--xh-date-picker-preset-bg-hover, var(--xh-bg-subtle-hover));
|
|
515
|
+
--xh-collection-bg-keyboard-highlight: var(--xh-date-picker-preset-bg-hover, var(--xh-bg-subtle-hover));
|
|
516
|
+
--xh-collection-bg-selected-highlight: var(--xh-date-picker-preset-bg-hover, var(--xh-bg-subtle-hover));
|
|
517
|
+
--xh-collection-bg-selected-hover: var(--xh-date-picker-preset-bg-hover, var(--xh-bg-subtle-hover));
|
|
518
|
+
--xh-collection-bg-pressed: var(--xh-date-picker-preset-bg-pressed, var(--xh-bg-subtle-active));
|
|
519
|
+
--xh-collection-bg-selected-pressed: var(--xh-date-picker-preset-bg-pressed, var(--xh-bg-subtle-active));
|
|
529
520
|
--xh-collection-outline-keyboard-highlight: transparent;
|
|
530
521
|
--xh-collection-outline-selected-highlight: transparent;
|
|
531
522
|
|
|
@@ -533,12 +524,15 @@
|
|
|
533
524
|
position: relative;
|
|
534
525
|
display: block;
|
|
535
526
|
flex: none;
|
|
527
|
+
block-size: var(--xh-date-picker-preset-h, var(--xh-control-action-size));
|
|
536
528
|
/* 对号的末端轨始终留着,切换选中时文字与整列宽度都不移动。 */
|
|
537
529
|
padding-inline-end: calc(
|
|
538
|
-
var(--xh-date-picker-preset-px, var(--xh-space-
|
|
539
|
-
var(--xh-date-picker-preset-check-size, var(--xh-control-indicator-
|
|
530
|
+
var(--xh-date-picker-preset-px, var(--xh-space-2)) +
|
|
531
|
+
var(--xh-date-picker-preset-check-size, var(--xh-control-indicator-sm)) +
|
|
540
532
|
var(--xh-space-1)
|
|
541
533
|
);
|
|
534
|
+
/* 一行字在 24 高的钮里垂直居中 */
|
|
535
|
+
line-height: var(--xh-date-picker-preset-h, var(--xh-control-action-size));
|
|
542
536
|
white-space: nowrap;
|
|
543
537
|
user-select: none;
|
|
544
538
|
}
|
|
@@ -560,9 +554,9 @@
|
|
|
560
554
|
content: '';
|
|
561
555
|
position: absolute;
|
|
562
556
|
inset-block-start: 50%;
|
|
563
|
-
inset-inline-end: var(--xh-date-picker-preset-px, var(--xh-space-
|
|
564
|
-
inline-size: var(--xh-date-picker-preset-check-size, var(--xh-control-indicator-
|
|
565
|
-
block-size: var(--xh-date-picker-preset-check-size, var(--xh-control-indicator-
|
|
557
|
+
inset-inline-end: var(--xh-date-picker-preset-px, var(--xh-space-2));
|
|
558
|
+
inline-size: var(--xh-date-picker-preset-check-size, var(--xh-control-indicator-sm));
|
|
559
|
+
block-size: var(--xh-date-picker-preset-check-size, var(--xh-control-indicator-sm));
|
|
566
560
|
translate: 0 -50%;
|
|
567
561
|
background-color: var(--xh-date-picker-preset-check-fg, var(--xh-_date-picker-check-fg));
|
|
568
562
|
opacity: 0;
|
|
@@ -581,34 +575,49 @@
|
|
|
581
575
|
}
|
|
582
576
|
|
|
583
577
|
/* —— showTime:时间列贴在日历右侧、逐列滚动,确认按钮收口 ——
|
|
584
|
-
content 是 block
|
|
578
|
+
content 是 block,作者把日历与时间列包进一行排布;列自身只管滚与选项画法。
|
|
579
|
+
列顶让出与日历标题栏等高的一带(不含它下沿那道线;作者改了标题栏的内衬就同步改 --xh-date-picker-time-column-offset),列自己的上沿描边接着标题栏的分隔线画过去,
|
|
580
|
+
两段连成一条;列与列之间不画线,日历与时间区之间那道竖线由日历的 ::after 画。
|
|
581
|
+
列高与日历网格同高(再加列顶那道线),列底与网格底边对齐 */
|
|
585
582
|
[data-scope='date-picker'][data-part='time-column'] {
|
|
583
|
+
--xh-_date-picker-time-column-h: var(--xh-date-picker-time-column-h, var(--xh-overlay-calendar-column-h));
|
|
584
|
+
--xh-_date-picker-time-column-py: var(--xh-date-picker-time-column-py, var(--xh-space-1));
|
|
585
|
+
|
|
586
586
|
display: flex;
|
|
587
587
|
flex: none;
|
|
588
588
|
flex-direction: column;
|
|
589
|
-
gap: var(--xh-date-picker-time-column-gap,
|
|
589
|
+
gap: var(--xh-date-picker-time-column-gap, var(--xh-space-2));
|
|
590
590
|
min-inline-size: var(--xh-date-picker-time-column-min-w, var(--xh-overlay-column-min-w));
|
|
591
591
|
/* 几列并排:定高而不是随内容收,否则时列与分列的可选值一多一少就错位 */
|
|
592
|
-
block-size: var(--xh-
|
|
592
|
+
block-size: calc(var(--xh-_date-picker-time-column-h) + var(--xh-stroke-thin));
|
|
593
593
|
margin-block-start: var(
|
|
594
594
|
--xh-date-picker-time-column-offset,
|
|
595
|
-
calc(var(--xh-control-
|
|
595
|
+
calc(var(--xh-control-action-size) + 2 * var(--xh-space-2))
|
|
596
596
|
);
|
|
597
|
-
|
|
597
|
+
/* 列底留出一截空白:末尾几格(23 时、55–59 分)也能滚到列顶,各列的选中落在同一行 */
|
|
598
|
+
padding-block: var(--xh-_date-picker-time-column-py)
|
|
599
|
+
calc(var(--xh-_date-picker-time-column-h) - var(--xh-date-picker-time-item-h, var(--xh-control-action-size)) - var(--xh-_date-picker-time-column-py));
|
|
598
600
|
padding-inline: var(--xh-date-picker-time-column-px, 0);
|
|
599
601
|
overflow-x: hidden;
|
|
600
602
|
overflow-y: auto;
|
|
601
603
|
/* 浮层滚动面:滚到头不把页面一起带走 */
|
|
602
604
|
overscroll-behavior: contain;
|
|
603
|
-
border-
|
|
605
|
+
border-block-start: var(--xh-stroke-thin) solid var(--xh-date-picker-column-divider, var(--xh-material-solid-border));
|
|
604
606
|
}
|
|
605
607
|
|
|
606
608
|
[data-scope='date-picker'][data-part='time-column'][hidden] {
|
|
607
609
|
display: none;
|
|
608
610
|
}
|
|
609
611
|
|
|
610
|
-
/*
|
|
611
|
-
|
|
612
|
+
/* 粗指针下日历格长到 44 见方(行距从 36 加到 44),网格多出六行的那截;列高跟着加,列底仍与网格底边对齐 */
|
|
613
|
+
@media (pointer: coarse) {
|
|
614
|
+
[data-scope='date-picker'][data-part='time-column'] {
|
|
615
|
+
--xh-_date-picker-time-column-h: var(--xh-date-picker-time-column-h, var(--xh-overlay-calendar-column-h-coarse));
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
/* 时间格:24 高的通栏条,列内间距 8 撑出 32 的行距;悬停 / 高亮 100、按下 200 由 Collection Item 家族按
|
|
620
|
+
overlay 语境给,选中透明底 + 中等字重 + 末端对号(对号集合的选中),不上品牌淡底、不变字色。格里只有数字、没有正文部件,保持自己的
|
|
612
621
|
居中排版与等宽标记轨,家族只给状态面。行的字色与字重按值选择族的同一套映射写(--xh-date-picker-time-item-fg
|
|
613
622
|
/ -fg-selected / -font-weight-selected 使用者槽,缺省落家族配方的行字色 --xh-material-frosted-fg:
|
|
614
623
|
它在各主题与 forced-colors 下都等于 --xh-fg-default,floating 面板上的面色仍由 content 自己给) */
|
|
@@ -617,10 +626,11 @@
|
|
|
617
626
|
var(--xh-date-picker-time-item-px, var(--xh-space-0_5)),
|
|
618
627
|
calc(var(--xh-date-picker-time-item-check-size, var(--xh-_date-picker-time-item-check-size)) + var(--xh-space-0_5))
|
|
619
628
|
);
|
|
620
|
-
--xh-collection-block-padding:
|
|
629
|
+
--xh-collection-block-padding: 0;
|
|
621
630
|
--xh-collection-inline-padding: var(--xh-_date-picker-time-item-rail);
|
|
622
631
|
--xh-collection-font-size: var(--xh-date-picker-time-item-font-size, var(--xh-_date-picker-font-size));
|
|
623
|
-
|
|
632
|
+
/* 浮层里的列表是通栏行:格铺满列宽、不取圆角 */
|
|
633
|
+
--xh-collection-radius: var(--xh-date-picker-time-item-radius, 0);
|
|
624
634
|
--xh-collection-fg-rest: var(--xh-date-picker-time-item-fg, var(--xh-material-frosted-fg));
|
|
625
635
|
--xh-collection-fg-hover: var(--xh-date-picker-time-item-fg, var(--xh-material-frosted-fg));
|
|
626
636
|
--xh-collection-fg-keyboard-highlight: var(--xh-date-picker-time-item-fg, var(--xh-material-frosted-fg));
|
|
@@ -629,10 +639,10 @@
|
|
|
629
639
|
--xh-collection-fg-selected-highlight: var(--xh-date-picker-time-item-fg-selected, var(--xh-date-picker-time-item-fg, var(--xh-material-frosted-fg)));
|
|
630
640
|
--xh-collection-fg-selected-hover: var(--xh-date-picker-time-item-fg-selected, var(--xh-date-picker-time-item-fg, var(--xh-material-frosted-fg)));
|
|
631
641
|
--xh-collection-fg-selected-pressed: var(--xh-date-picker-time-item-fg-selected, var(--xh-date-picker-time-item-fg, var(--xh-material-frosted-fg)));
|
|
632
|
-
--xh-collection-font-weight-selected: var(--xh-date-picker-time-item-font-weight-selected, var(--xh-font-weight-
|
|
633
|
-
--xh-collection-font-weight-selected-highlight: var(--xh-date-picker-time-item-font-weight-selected, var(--xh-font-weight-
|
|
634
|
-
--xh-collection-font-weight-selected-hover: var(--xh-date-picker-time-item-font-weight-selected, var(--xh-font-weight-
|
|
635
|
-
--xh-collection-font-weight-selected-pressed: var(--xh-date-picker-time-item-font-weight-selected, var(--xh-font-weight-
|
|
642
|
+
--xh-collection-font-weight-selected: var(--xh-date-picker-time-item-font-weight-selected, var(--xh-font-weight-medium));
|
|
643
|
+
--xh-collection-font-weight-selected-highlight: var(--xh-date-picker-time-item-font-weight-selected, var(--xh-font-weight-medium));
|
|
644
|
+
--xh-collection-font-weight-selected-hover: var(--xh-date-picker-time-item-font-weight-selected, var(--xh-font-weight-medium));
|
|
645
|
+
--xh-collection-font-weight-selected-pressed: var(--xh-date-picker-time-item-font-weight-selected, var(--xh-font-weight-medium));
|
|
636
646
|
--xh-collection-bg-hover: var(--xh-date-picker-time-item-bg-hover, var(--xh-bg-subtle));
|
|
637
647
|
--xh-collection-bg-keyboard-highlight: var(--xh-date-picker-time-item-bg-hover, var(--xh-bg-subtle));
|
|
638
648
|
--xh-collection-bg-selected-highlight: var(--xh-date-picker-time-item-bg-hover, var(--xh-bg-subtle));
|
|
@@ -647,7 +657,7 @@
|
|
|
647
657
|
flex: none;
|
|
648
658
|
align-items: center;
|
|
649
659
|
justify-content: center;
|
|
650
|
-
block-size: var(--xh-date-picker-time-item-h,
|
|
660
|
+
block-size: var(--xh-date-picker-time-item-h, var(--xh-control-action-size));
|
|
651
661
|
font-variant-numeric: tabular-nums;
|
|
652
662
|
line-height: var(--xh-leading-normal);
|
|
653
663
|
text-align: center;
|
|
@@ -655,6 +665,14 @@
|
|
|
655
665
|
user-select: none;
|
|
656
666
|
}
|
|
657
667
|
|
|
668
|
+
/* 命中区向上下各补半个列内间距:两格之间那 8px 缝归上下两格各一半,指针落在缝里不落空 */
|
|
669
|
+
[data-scope='date-picker'][data-part='time-item']::before {
|
|
670
|
+
content: '';
|
|
671
|
+
position: absolute;
|
|
672
|
+
inset-block: calc(-0.5 * var(--xh-date-picker-time-column-gap, var(--xh-space-2)));
|
|
673
|
+
inset-inline: 0;
|
|
674
|
+
}
|
|
675
|
+
|
|
658
676
|
[data-scope='date-picker'][data-part='time-item'][hidden] {
|
|
659
677
|
display: none;
|
|
660
678
|
}
|
|
@@ -698,10 +716,6 @@
|
|
|
698
716
|
}
|
|
699
717
|
|
|
700
718
|
@media not all and (min-width: 768px) {
|
|
701
|
-
[data-scope='date-picker'][data-part='content'] {
|
|
702
|
-
padding-inline: var(--xh-date-picker-content-px, var(--xh-space-2));
|
|
703
|
-
}
|
|
704
|
-
|
|
705
719
|
[data-scope='date-picker'][data-part='time-column'] {
|
|
706
720
|
min-inline-size: var(--xh-date-picker-time-column-min-w-mobile, 2.75rem);
|
|
707
721
|
padding-inline: var(--xh-date-picker-time-column-px-mobile, 0);
|
|
@@ -721,7 +735,7 @@
|
|
|
721
735
|
|
|
722
736
|
/* 列整体禁用时格没有自己的 aria-disabled,禁用面按列的 aria-disabled 映射到家族槽:
|
|
723
737
|
字色降级、悬停 / 高亮 / 按下不换面、光标 not-allowed */
|
|
724
|
-
[data-scope='date-picker'][data-part='time-column'][aria-disabled='true'] [data-part='time-item'] {
|
|
738
|
+
[data-scope='date-picker'][data-part='time-column'][aria-disabled='true'] [data-part='time-item']:where([data-scope='date-picker']) {
|
|
725
739
|
--xh-collection-fg-rest: var(--xh-fg-disabled);
|
|
726
740
|
--xh-collection-fg-hover: var(--xh-fg-disabled);
|
|
727
741
|
--xh-collection-fg-keyboard-highlight: var(--xh-fg-disabled);
|
|
@@ -740,15 +754,15 @@
|
|
|
740
754
|
--xh-collection-cursor-selected: not-allowed;
|
|
741
755
|
}
|
|
742
756
|
|
|
743
|
-
[data-scope='date-picker'][data-part='time-column'][aria-disabled='true'] [data-part='time-item']::after {
|
|
757
|
+
[data-scope='date-picker'][data-part='time-column'][aria-disabled='true'] [data-part='time-item']:where([data-scope='date-picker'])::after {
|
|
744
758
|
background-color: var(--xh-fg-disabled);
|
|
745
759
|
}
|
|
746
760
|
|
|
747
|
-
/* 确认钮是面板里唯一的主要动作:品牌实心、悬停 /
|
|
748
|
-
|
|
761
|
+
/* 确认钮是面板里唯一的主要动作:品牌实心、悬停 / 按下换面、焦点环全由 Action Control 的 text solid 档给,
|
|
762
|
+
xs 档 24 高、字取说明档 12px;槽名统一按部件取 --xh-date-picker-confirm-trigger-*,只映射到家族桥接槽 */
|
|
749
763
|
[data-scope='date-picker'][data-part='confirm-trigger'] {
|
|
750
764
|
--xh-action-visual-size: var(--xh-date-picker-confirm-trigger-h, var(--xh-_action-profile-visual-size));
|
|
751
|
-
--xh-action-padding-inline: var(--xh-date-picker-confirm-trigger-px, var(--xh-
|
|
765
|
+
--xh-action-padding-inline: var(--xh-date-picker-confirm-trigger-px, var(--xh-space-2));
|
|
752
766
|
--xh-action-radius: var(--xh-date-picker-confirm-trigger-radius, var(--xh-shape-control));
|
|
753
767
|
--xh-action-bg-rest: var(--xh-date-picker-confirm-trigger-bg, var(--xh-_action-variant-bg-rest));
|
|
754
768
|
--xh-action-bg-hover: var(--xh-date-picker-confirm-trigger-bg-hover, var(--xh-_action-variant-bg-hover));
|
|
@@ -761,7 +775,7 @@
|
|
|
761
775
|
--xh-action-shadow-rest: var(--xh-date-picker-confirm-trigger-shadow, none);
|
|
762
776
|
--xh-action-shadow-hover: var(--xh-date-picker-confirm-trigger-shadow, none);
|
|
763
777
|
--xh-action-shadow-pressed: var(--xh-date-picker-confirm-trigger-shadow, none);
|
|
764
|
-
--xh-action-font-size: var(--xh-text-
|
|
778
|
+
--xh-action-font-size: var(--xh-date-picker-confirm-trigger-font-size, var(--xh-text-caption-size));
|
|
765
779
|
|
|
766
780
|
border-width: 0;
|
|
767
781
|
}
|
|
@@ -771,6 +785,61 @@
|
|
|
771
785
|
display: none;
|
|
772
786
|
}
|
|
773
787
|
|
|
788
|
+
/* 底栏:面板底部通栏的一条操作区,上沿一道 border-default 线与日历、时间列隔开,四周 8 的内衬;
|
|
789
|
+
面板换行排布(并排两张日历、快捷选项列、直接排在面板里的时间列)时独占一整行,落在它们下面。
|
|
790
|
+
首个子节点落在撑满余宽的那条轨道上,其后的各自按内容宽排在行尾:作者另放的文字与链接排在行首,
|
|
791
|
+
确认钮总落在行尾;只放了确认钮时它独占那条轨道,靠 justify-self 贴到行尾。
|
|
792
|
+
底栏不参与撑宽:面板换行排布时,Chrome 把每个子项的固有宽相加当作面板的固有宽,
|
|
793
|
+
底栏的字与钮会把面板多撑出一截、日历与时间列末端空出一块。inline-size 包含让它的内容不计入固有宽,
|
|
794
|
+
行内内衬也就不能写在它自己身上(内衬照样计入),改由两端各一个定宽占位让出(见下面那条) */
|
|
795
|
+
[data-scope='date-picker'][data-part='footer'] {
|
|
796
|
+
/* 两端占位的宽:占位与相邻项之间本来就隔着一道 gap,占位自己只补到内衬的差额 */
|
|
797
|
+
--xh-_date-picker-footer-inset: max(
|
|
798
|
+
var(--xh-space-0),
|
|
799
|
+
calc(var(--xh-date-picker-footer-px, var(--xh-space-2)) - var(--xh-date-picker-footer-gap, var(--xh-space-2)))
|
|
800
|
+
);
|
|
801
|
+
|
|
802
|
+
display: grid;
|
|
803
|
+
contain: inline-size;
|
|
804
|
+
flex-basis: 100%;
|
|
805
|
+
grid-auto-flow: column;
|
|
806
|
+
grid-template-columns: minmax(0, 1fr);
|
|
807
|
+
align-items: center;
|
|
808
|
+
gap: var(--xh-date-picker-footer-gap, var(--xh-space-2));
|
|
809
|
+
padding-block: var(--xh-date-picker-footer-py, var(--xh-space-2));
|
|
810
|
+
border-block-start: var(--xh-stroke-thin) solid var(--xh-date-picker-footer-border, var(--xh-material-solid-border));
|
|
811
|
+
color: var(--xh-date-picker-footer-fg, var(--xh-fg-muted));
|
|
812
|
+
font-size: var(--xh-date-picker-footer-font-size, var(--xh-text-caption-size));
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
/* 上面给了 display,UA 的 [hidden]{display:none} 已被盖掉,这里补回来 */
|
|
816
|
+
[data-scope='date-picker'][data-part='footer'][hidden] {
|
|
817
|
+
display: none;
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
/* 底栏里只放了确认钮、而确认钮按状态收起(没开 showTime)时,底栏一并让位,不留一条空栏 */
|
|
821
|
+
[data-scope='date-picker'][data-part='footer']:has(> [data-scope='date-picker'][data-part='confirm-trigger'][hidden]:only-child) {
|
|
822
|
+
display: none;
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
[data-scope='date-picker'][data-part='footer'] > [data-scope='date-picker'][data-part='confirm-trigger'] {
|
|
826
|
+
justify-self: end;
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
/* 行首行尾的内衬由两端的定宽占位让出,不挂在首末子节点上:首个子节点可能是裸文本,
|
|
830
|
+
末一个可能是按状态收起的确认钮,外边距都接不住。占位与其余子项一样在 inline-size 包含之内,不计入面板的固有宽 */
|
|
831
|
+
[data-scope='date-picker'][data-part='footer']::before,
|
|
832
|
+
[data-scope='date-picker'][data-part='footer']::after {
|
|
833
|
+
content: '';
|
|
834
|
+
inline-size: var(--xh-_date-picker-footer-inset);
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
/* 行首占位落在那条撑满余宽的显式轨道之前(在它前面长出一条隐式列),首个子节点仍落在那条轨道上。
|
|
838
|
+
占位不进显式轨道:尺寸包含照样计入显式轨道与轨道间的 gap,多一条显式列面板就多撑出一道 gap */
|
|
839
|
+
[data-scope='date-picker'][data-part='footer']::before {
|
|
840
|
+
grid-column: span 1 / 1;
|
|
841
|
+
}
|
|
842
|
+
|
|
774
843
|
/* 没写内容就由皮肤画兜底字形;作者往部件里塞了自己的图形,这几条即不命中 */
|
|
775
844
|
[data-scope='date-picker'][data-part='clear-trigger']:empty::before {
|
|
776
845
|
content: '';
|
|
@@ -820,13 +889,13 @@
|
|
|
820
889
|
|
|
821
890
|
[data-scope='date-picker'][data-part='preset'][data-disabled]::after,
|
|
822
891
|
[data-scope='date-picker'][data-part='time-item'][data-disabled]::after,
|
|
823
|
-
[data-scope='date-picker'][data-part='time-column'][aria-disabled='true'] [data-part='time-item']::after {
|
|
892
|
+
[data-scope='date-picker'][data-part='time-column'][aria-disabled='true'] [data-part='time-item']:where([data-scope='date-picker'])::after {
|
|
824
893
|
background-color: GrayText;
|
|
825
894
|
}
|
|
826
895
|
|
|
827
896
|
[data-scope='date-picker'][data-part='preset'][data-disabled],
|
|
828
897
|
[data-scope='date-picker'][data-part='time-item'][data-disabled],
|
|
829
|
-
[data-scope='date-picker'][data-part='time-column'][aria-disabled='true'] [data-part='time-item'] {
|
|
898
|
+
[data-scope='date-picker'][data-part='time-column'][aria-disabled='true'] [data-part='time-item']:where([data-scope='date-picker']) {
|
|
830
899
|
color: GrayText;
|
|
831
900
|
}
|
|
832
901
|
}
|