@xihan-ui/styles 4.0.0 → 4.1.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 +18 -0
- package/components.tokens.json +2 -1
- package/css/cascader.css +6 -0
- package/css/clipboard.css +6 -0
- package/css/color-field.css +6 -0
- package/css/color-picker.css +6 -0
- package/css/combobox.css +6 -0
- package/css/date-field.css +6 -0
- package/css/date-picker.css +6 -0
- package/css/date-range-picker.css +6 -0
- package/css/editable.css +6 -0
- package/css/form.css +6 -1
- package/css/image-viewer.css +15 -3
- package/css/input-group.css +6 -0
- package/css/mention.css +6 -0
- package/css/notification.css +3 -0
- package/css/number-field.css +6 -0
- package/css/password-input.css +6 -0
- package/css/select.css +6 -0
- package/css/tags-input.css +6 -0
- package/css/text-field.css +6 -0
- package/css/time-field.css +6 -0
- package/css/time-picker.css +6 -0
- package/css/time-range-picker.css +6 -0
- package/css/tree-select.css +6 -0
- package/dist/css/cascader.css +6 -0
- package/dist/css/clipboard.css +6 -0
- package/dist/css/color-field.css +6 -0
- package/dist/css/color-picker.css +6 -0
- package/dist/css/combobox.css +6 -0
- package/dist/css/date-field.css +6 -0
- package/dist/css/date-picker.css +6 -0
- package/dist/css/date-range-picker.css +6 -0
- package/dist/css/editable.css +6 -0
- package/dist/css/form.css +6 -1
- package/dist/css/image-viewer.css +15 -3
- package/dist/css/input-group.css +6 -0
- package/dist/css/mention.css +6 -0
- package/dist/css/notification.css +3 -0
- package/dist/css/number-field.css +6 -0
- package/dist/css/password-input.css +6 -0
- package/dist/css/select.css +6 -0
- package/dist/css/tags-input.css +6 -0
- package/dist/css/text-field.css +6 -0
- package/dist/css/time-field.css +6 -0
- package/dist/css/time-picker.css +6 -0
- package/dist/css/time-range-picker.css +6 -0
- package/dist/css/tree-select.css +6 -0
- package/index.css +144 -4
- package/index.unlayered.css +144 -4
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @xihan-ui/styles
|
|
2
2
|
|
|
3
|
+
## 4.1.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- e3bdc1f: 看片工具条的复原钮不写内容时改由皮肤画图标,与其余六颗变换钮一致:此前 Vue / React 在钮里塞「1:1」文字,工具条上只有它是字。图标集新增 `undo`(U 形回转箭头,与旋转的整圈箭头区分开),令牌新增 `--xh-glyph-mark-undo`;可及名仍取语言包里的「复原」,高对比档与其余工具钮同一条系统色补救。Web Components 由作者写空的 `reset-trigger` 按钮即可。
|
|
8
|
+
- 7ee6c0d: 通知(卡片与轻提示)的标题与说明里,凭证号、令牌、文件路径这类没有断点的长串就地折行:此前标题会顶出卡片,说明因限高带着竖向滚动,另一轴随之可滚,长串在说明里撑出一条横向滚动条。
|
|
9
|
+
- Updated dependencies [e3bdc1f]
|
|
10
|
+
- @xihan-ui/tokens@4.1.0
|
|
11
|
+
|
|
12
|
+
## 4.0.1
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- bb1721f: Web Components 字段族宿主的 `display: contents` 改由皮肤声明(零特指度),元素不再在连接时往宿主写内联 `display`。作者给宿主写的 `display` 无论在内联还是样式表里都照层叠胜出,写在宿主上的宽度与外边距随之生效;此前样式表里的规则会被内联的 `contents` 压过。带 `hidden` 的宿主也不再被内联 `contents` 掀开。不加载皮肤时宿主回到行内盒。
|
|
17
|
+
- 775b17b: 字段不包 `XhFormFieldGroup`、直接放进 Form 时,辅助行同样算项距:带说明或预留了错误文案行的字段不再另留 20px 项距,与字段集的组内项距一致。此前只有包在 field-group 里的字段归零,直接放进表单的字段辅助行 20px 与项距 20px 叠成两段。
|
|
18
|
+
- Updated dependencies [14da7fe]
|
|
19
|
+
- @xihan-ui/tokens@4.0.1
|
|
20
|
+
|
|
3
21
|
## 4.0.0
|
|
4
22
|
|
|
5
23
|
### Major Changes
|
package/components.tokens.json
CHANGED
|
@@ -41190,6 +41190,7 @@
|
|
|
41190
41190
|
"path-item",
|
|
41191
41191
|
"prev-trigger",
|
|
41192
41192
|
"prev-year-trigger",
|
|
41193
|
+
"reset-trigger",
|
|
41193
41194
|
"root",
|
|
41194
41195
|
"rotate-left-trigger",
|
|
41195
41196
|
"rotate-right-trigger",
|
|
@@ -41255,7 +41256,7 @@
|
|
|
41255
41256
|
"--xh-glyph-size-xl"
|
|
41256
41257
|
],
|
|
41257
41258
|
"visibility": "public",
|
|
41258
|
-
"description": "icon 的 autoplay-trigger、branch-error、branch-indicator、branch-loading、branch-trigger、cancel-trigger、caps-lock-indicator、clear-trigger、close-trigger、comment-trigger、control、decrement-trigger、dismiss-trigger、edit-trigger、ellipsis-trigger、expand-trigger、first-trigger、flip-horizontal-trigger、flip-vertical-trigger、increment-trigger、indicator、item、item-close-trigger、item-delete-trigger、item-indicator、item-preview、last-trigger、line-content、line-fold-trigger、loading、move-down-trigger、move-up-trigger、next-trigger、next-year-trigger、overflow-trigger、path、path-item、prev-trigger、prev-year-trigger、root、rotate-left-trigger、rotate-right-trigger、scroll-to-end-trigger、separator、sort-trigger、submit-trigger、to-source-trigger、to-target-trigger、trend、trigger、trigger-indicator、truncation、viewport、visibility-trigger、window-state-trigger、zoom-in-trigger、zoom-out-trigger 部件 block-size、column-gap、inline-size 覆盖槽。"
|
|
41259
|
+
"description": "icon 的 autoplay-trigger、branch-error、branch-indicator、branch-loading、branch-trigger、cancel-trigger、caps-lock-indicator、clear-trigger、close-trigger、comment-trigger、control、decrement-trigger、dismiss-trigger、edit-trigger、ellipsis-trigger、expand-trigger、first-trigger、flip-horizontal-trigger、flip-vertical-trigger、increment-trigger、indicator、item、item-close-trigger、item-delete-trigger、item-indicator、item-preview、last-trigger、line-content、line-fold-trigger、loading、move-down-trigger、move-up-trigger、next-trigger、next-year-trigger、overflow-trigger、path、path-item、prev-trigger、prev-year-trigger、reset-trigger、root、rotate-left-trigger、rotate-right-trigger、scroll-to-end-trigger、separator、sort-trigger、submit-trigger、to-source-trigger、to-target-trigger、trend、trigger、trigger-indicator、truncation、viewport、visibility-trigger、window-state-trigger、zoom-in-trigger、zoom-out-trigger 部件 block-size、column-gap、inline-size 覆盖槽。"
|
|
41259
41260
|
},
|
|
41260
41261
|
{
|
|
41261
41262
|
"name": "--xh-icon-stroke",
|
package/css/cascader.css
CHANGED
|
@@ -20,6 +20,12 @@
|
|
|
20
20
|
--xh-cascader-skin: 1;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
24
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
25
|
+
:where(xh-cascader:not([hidden])) {
|
|
26
|
+
display: contents;
|
|
27
|
+
}
|
|
28
|
+
|
|
23
29
|
/* 坐标由定位引擎写进 style(inset-inline-start / inset-block-start),这里只定位模式与层级 */
|
|
24
30
|
[data-scope='cascader'][data-part='positioner'] {
|
|
25
31
|
/* 落定那一侧的可用宽度,由定位引擎经内联自定义属性写进来,列区据此夹住行内轴;
|
package/css/clipboard.css
CHANGED
|
@@ -16,6 +16,12 @@
|
|
|
16
16
|
--xh-clipboard-skin: 1;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
20
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
21
|
+
:where(xh-clipboard:not([hidden])) {
|
|
22
|
+
display: contents;
|
|
23
|
+
}
|
|
24
|
+
|
|
19
25
|
/* 与文本框同一套堆叠:标签一行、输入行一行 */
|
|
20
26
|
[data-scope='clipboard'][data-part='root'] {
|
|
21
27
|
/* 输入框与按钮同取一档高度,换尺寸只改这一个私有槽 */
|
package/css/color-field.css
CHANGED
|
@@ -13,6 +13,12 @@
|
|
|
13
13
|
--xh-color-field-skin: 1;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
17
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
18
|
+
:where(xh-color-field:not([hidden])) {
|
|
19
|
+
display: contents;
|
|
20
|
+
}
|
|
21
|
+
|
|
16
22
|
/* 组件层只把既有公开槽映射到家族合同;形态三档由家族按 control 上的 data-variant 生成,皮肤不再声明;
|
|
17
23
|
色块吃 Swatch 家族,只在这里补一条与输入框的间距。 */
|
|
18
24
|
[data-scope='color-field'][data-part='root'] {
|
package/css/color-picker.css
CHANGED
|
@@ -17,6 +17,12 @@
|
|
|
17
17
|
--xh-color-picker-skin: 1;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
21
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
22
|
+
:where(xh-color-picker:not([hidden])) {
|
|
23
|
+
display: contents;
|
|
24
|
+
}
|
|
25
|
+
|
|
20
26
|
/* 定位分工:取色区拇指的两条轴(inset-inline-start / inset-block-start)、浮层坐标、取色区底色,
|
|
21
27
|
全都由连接层每帧写进内联样式。这份皮肤一个都不碰:内联优先级高于样式表,
|
|
22
28
|
写了不但是死声明,还会跟连接层抢位置。皮肤只管尺寸、颜色、圆角与状态表现。
|
package/css/combobox.css
CHANGED
|
@@ -20,6 +20,12 @@
|
|
|
20
20
|
--xh-combobox-skin: 1;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
24
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
25
|
+
:where(xh-combobox:not([hidden])) {
|
|
26
|
+
display: contents;
|
|
27
|
+
}
|
|
28
|
+
|
|
23
29
|
/* 坐标由定位引擎写进 style(inset-inline-start / inset-block-start),这里只定位模式与层级 */
|
|
24
30
|
[data-scope='combobox'][data-part='positioner'] {
|
|
25
31
|
/* 落定那一侧的可用高度,由定位引擎经内联自定义属性写进来,内容层继承它限高;
|
package/css/date-field.css
CHANGED
|
@@ -13,6 +13,12 @@
|
|
|
13
13
|
--xh-date-field-skin: 1;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
17
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
18
|
+
:where(xh-date-field:not([hidden])) {
|
|
19
|
+
display: contents;
|
|
20
|
+
}
|
|
21
|
+
|
|
16
22
|
/* 与文本框、数字框同一套堆叠:标签一行、分段框一行。
|
|
17
23
|
组件层只把既有公开槽映射到家族合同;形态三档由家族按 control 上的 data-variant 生成,皮肤不再声明。 */
|
|
18
24
|
[data-scope='date-field'][data-part='root'] {
|
package/css/date-picker.css
CHANGED
|
@@ -20,6 +20,12 @@
|
|
|
20
20
|
--xh-date-picker-skin: 1;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
24
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
25
|
+
:where(xh-date-picker:not([hidden])) {
|
|
26
|
+
display: contents;
|
|
27
|
+
}
|
|
28
|
+
|
|
23
29
|
/* 坐标由定位引擎写进 style(inset-inline-start / inset-block-start),这里只定位模式与层级 */
|
|
24
30
|
[data-scope='date-picker'][data-part='positioner'] {
|
|
25
31
|
/* 落定那一侧的可用高度,由定位引擎经内联自定义属性写进来,内容层继承它限高;
|
|
@@ -19,6 +19,12 @@
|
|
|
19
19
|
--xh-date-range-picker-skin: 1;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
23
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
24
|
+
:where(xh-date-range-picker:not([hidden])) {
|
|
25
|
+
display: contents;
|
|
26
|
+
}
|
|
27
|
+
|
|
22
28
|
/* 坐标由定位引擎写进 style(inset-inline-start / inset-block-start),这里只定位模式与层级 */
|
|
23
29
|
[data-scope='date-range-picker'][data-part='positioner'] {
|
|
24
30
|
/* 落定那一侧的可用高度,由定位引擎经内联自定义属性写进来,内容层继承它限高;
|
package/css/editable.css
CHANGED
|
@@ -13,6 +13,12 @@
|
|
|
13
13
|
--xh-editable-skin: 1;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
17
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
18
|
+
:where(xh-editable:not([hidden])) {
|
|
19
|
+
display: contents;
|
|
20
|
+
}
|
|
21
|
+
|
|
16
22
|
/* 与 NumberField 同构:标题独占一行,control 是下面唯一的视觉盒;
|
|
17
23
|
预览/输入占据盒内左侧,编辑或确认/取消动作收在同一盒的逻辑末端。
|
|
18
24
|
组件层只把既有公开槽映射到家族合同;形态三档由家族按 control 上的 data-variant 生成,皮肤不再声明。 */
|
package/css/form.css
CHANGED
|
@@ -35,10 +35,15 @@
|
|
|
35
35
|
|
|
36
36
|
/* 字段带辅助行:辅助行(最小高 --xh-space-5)紧贴控件、自己就是项距,这一项不再另留;
|
|
37
37
|
说明收起、只留错误文案占位的那一行同样算。字段无效时它的直接子说明被收起(见 description.css),
|
|
38
|
-
|
|
38
|
+
不占那一行,不算辅助行:没渲染错误文案的无效字段照常留项距。
|
|
39
|
+
字段不包 field-group、直接放进表单时同一条(与字段集的组内项距一致) */
|
|
39
40
|
[data-scope='form'][data-part='field-group']:has(
|
|
40
41
|
[data-scope='field'][data-part='error-text'],
|
|
41
42
|
[data-scope='field'][data-part='description']:not([hidden], [data-scope='field'][data-part='root'][data-invalid] > *)
|
|
43
|
+
),
|
|
44
|
+
[data-scope='form'][data-part='root'] > [data-scope='field'][data-part='root']:has(
|
|
45
|
+
[data-scope='field'][data-part='error-text'],
|
|
46
|
+
[data-scope='field'][data-part='description']:not([hidden], [data-scope='field'][data-part='root'][data-invalid] > *)
|
|
42
47
|
) {
|
|
43
48
|
margin-block-end: 0;
|
|
44
49
|
}
|
package/css/image-viewer.css
CHANGED
|
@@ -509,6 +509,18 @@
|
|
|
509
509
|
mask: var(--xh-glyph-mark-flip-vertical) center / contain no-repeat;
|
|
510
510
|
}
|
|
511
511
|
|
|
512
|
+
/* 复原:回转箭头,与旋转的整圈箭头区分开;与其余工具钮一样不写内容时由皮肤画 */
|
|
513
|
+
[data-scope='image-viewer'][data-part='reset-trigger']:empty::before {
|
|
514
|
+
content: '';
|
|
515
|
+
display: inline-block;
|
|
516
|
+
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
517
|
+
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
518
|
+
vertical-align: var(--xh-glyph-baseline-shift);
|
|
519
|
+
background-color: currentColor;
|
|
520
|
+
-webkit-mask: var(--xh-glyph-mark-undo) center / contain no-repeat;
|
|
521
|
+
mask: var(--xh-glyph-mark-undo) center / contain no-repeat;
|
|
522
|
+
}
|
|
523
|
+
|
|
512
524
|
[data-scope='image-viewer'][data-part='prev-trigger']:empty::before {
|
|
513
525
|
content: '';
|
|
514
526
|
display: inline-block;
|
|
@@ -572,16 +584,16 @@
|
|
|
572
584
|
background-color: CanvasText;
|
|
573
585
|
}
|
|
574
586
|
|
|
575
|
-
[data-scope='image-viewer']:is([data-part='zoom-in-trigger'], [data-part='zoom-out-trigger'], [data-part='rotate-left-trigger'], [data-part='rotate-right-trigger'], [data-part='flip-horizontal-trigger'], [data-part='flip-vertical-trigger'], [data-part='prev-trigger'], [data-part='next-trigger'], [data-part='close-trigger']):empty::before {
|
|
587
|
+
[data-scope='image-viewer']:is([data-part='zoom-in-trigger'], [data-part='zoom-out-trigger'], [data-part='rotate-left-trigger'], [data-part='rotate-right-trigger'], [data-part='flip-horizontal-trigger'], [data-part='flip-vertical-trigger'], [data-part='reset-trigger'], [data-part='prev-trigger'], [data-part='next-trigger'], [data-part='close-trigger']):empty::before {
|
|
576
588
|
forced-color-adjust: none;
|
|
577
589
|
background-color: ButtonText;
|
|
578
590
|
}
|
|
579
591
|
|
|
580
|
-
[data-scope='image-viewer']:is([data-part='zoom-in-trigger'], [data-part='zoom-out-trigger'], [data-part='rotate-left-trigger'], [data-part='rotate-right-trigger'], [data-part='flip-horizontal-trigger'], [data-part='flip-vertical-trigger'], [data-part='prev-trigger'], [data-part='next-trigger'], [data-part='close-trigger']):not([data-disabled]):not([data-loading]):is(:hover, :active, [data-pressed]):empty::before {
|
|
592
|
+
[data-scope='image-viewer']:is([data-part='zoom-in-trigger'], [data-part='zoom-out-trigger'], [data-part='rotate-left-trigger'], [data-part='rotate-right-trigger'], [data-part='flip-horizontal-trigger'], [data-part='flip-vertical-trigger'], [data-part='reset-trigger'], [data-part='prev-trigger'], [data-part='next-trigger'], [data-part='close-trigger']):not([data-disabled]):not([data-loading]):is(:hover, :active, [data-pressed]):empty::before {
|
|
581
593
|
background-color: HighlightText;
|
|
582
594
|
}
|
|
583
595
|
|
|
584
|
-
[data-scope='image-viewer']:is([data-part='zoom-in-trigger'], [data-part='zoom-out-trigger'], [data-part='rotate-left-trigger'], [data-part='rotate-right-trigger'], [data-part='flip-horizontal-trigger'], [data-part='flip-vertical-trigger'], [data-part='prev-trigger'], [data-part='next-trigger'], [data-part='close-trigger'])[data-disabled]:empty::before {
|
|
596
|
+
[data-scope='image-viewer']:is([data-part='zoom-in-trigger'], [data-part='zoom-out-trigger'], [data-part='rotate-left-trigger'], [data-part='rotate-right-trigger'], [data-part='flip-horizontal-trigger'], [data-part='flip-vertical-trigger'], [data-part='reset-trigger'], [data-part='prev-trigger'], [data-part='next-trigger'], [data-part='close-trigger'])[data-disabled]:empty::before {
|
|
585
597
|
background-color: GrayText;
|
|
586
598
|
}
|
|
587
599
|
}
|
package/css/input-group.css
CHANGED
|
@@ -11,6 +11,12 @@
|
|
|
11
11
|
--xh-input-group-skin: 1;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
15
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
16
|
+
:where(xh-input-group:not([hidden])) {
|
|
17
|
+
display: contents;
|
|
18
|
+
}
|
|
19
|
+
|
|
14
20
|
/* 输入框、前后缀和动作共用一个输入表面。组只统一材质与外轮廓,语义仍归各子控件。 */
|
|
15
21
|
[data-scope='input-group'][data-part='root'] {
|
|
16
22
|
/* 段之间那几档层号只在自己人之间排序:建一个层叠上下文把它们关起来,
|
package/css/mention.css
CHANGED
|
@@ -18,6 +18,12 @@
|
|
|
18
18
|
--xh-mention-skin: 1;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
22
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
23
|
+
:where(xh-mention:not([hidden])) {
|
|
24
|
+
display: contents;
|
|
25
|
+
}
|
|
26
|
+
|
|
21
27
|
/* 坐标由定位引擎写进 style(inset-inline-start / inset-block-start),这里只定位模式与层级 */
|
|
22
28
|
[data-scope='mention'][data-part='positioner'] {
|
|
23
29
|
/* 落定那一侧的可用高度,由定位引擎经内联自定义属性写进来,内容层继承它限高;
|
package/css/notification.css
CHANGED
|
@@ -573,6 +573,9 @@
|
|
|
573
573
|
flex-direction: column;
|
|
574
574
|
row-gap: var(--xh-notification-item-row-gap, var(--xh-space-2));
|
|
575
575
|
min-inline-size: 0;
|
|
576
|
+
/* 凭证号、令牌、文件路径这类没有断点的长串就地折行,标题与说明一并继承:不折行时标题顶出卡片,
|
|
577
|
+
说明因限高带着 overflow-y: auto、另一轴随之成 auto,撑出一条横向滚动条 */
|
|
578
|
+
overflow-wrap: anywhere;
|
|
576
579
|
}
|
|
577
580
|
|
|
578
581
|
[data-scope='notification'][data-part='item'][data-preset='toast'] [data-part='item-content']:where([data-scope='notification']) {
|
package/css/number-field.css
CHANGED
|
@@ -13,6 +13,12 @@
|
|
|
13
13
|
--xh-number-field-skin: 1;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
17
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
18
|
+
:where(xh-number-field:not([hidden])) {
|
|
19
|
+
display: contents;
|
|
20
|
+
}
|
|
21
|
+
|
|
16
22
|
/* 与文本框同一套堆叠:标签一行、输入行一行。
|
|
17
23
|
control 是必需的唯一视觉盒,输入框、加减钮与前后缀都放在里面;
|
|
18
24
|
输入与前后缀在左,减、加两颗动作依次收在逻辑末端。
|
package/css/password-input.css
CHANGED
|
@@ -13,6 +13,12 @@
|
|
|
13
13
|
--xh-password-input-skin: 1;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
17
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
18
|
+
:where(xh-password-input:not([hidden])) {
|
|
19
|
+
display: contents;
|
|
20
|
+
}
|
|
21
|
+
|
|
16
22
|
/* root 只负责纵向堆叠:标签一行、输入行一行。
|
|
17
23
|
输入框、切换钮与大写锁定提示收进 control 部件即得一体式:视觉盒由 Field Chrome 家族画在 control 上,
|
|
18
24
|
框内三件都退成透明分段,整枚控件从头到尾只有一道描边。
|
package/css/select.css
CHANGED
|
@@ -18,6 +18,12 @@
|
|
|
18
18
|
--xh-select-skin: 1;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
22
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
23
|
+
:where(xh-select:not([hidden])) {
|
|
24
|
+
display: contents;
|
|
25
|
+
}
|
|
26
|
+
|
|
21
27
|
/* 坐标由定位引擎写进 style(inset-inline-start / inset-block-start),这里只定位模式与层级 */
|
|
22
28
|
[data-scope='select'][data-part='positioner'] {
|
|
23
29
|
/* 落定那一侧的可用高度,由定位引擎经内联自定义属性写进来,内容层继承它限高;
|
package/css/tags-input.css
CHANGED
|
@@ -15,6 +15,12 @@
|
|
|
15
15
|
--xh-tags-input-skin: 1;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
19
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
20
|
+
:where(xh-tags-input:not([hidden])) {
|
|
21
|
+
display: contents;
|
|
22
|
+
}
|
|
23
|
+
|
|
18
24
|
/* root 只负责纵向堆叠:标题一行、控件一行。可见的那个"框"长在 control 上,
|
|
19
25
|
因为标签、输入框、清空按钮都在它里面,边框必须把三者一起圈住。
|
|
20
26
|
组件层只把既有公开槽映射到家族合同;形态三档由家族按 control 上的 data-variant 生成,皮肤不再声明 */
|
package/css/text-field.css
CHANGED
|
@@ -12,6 +12,12 @@
|
|
|
12
12
|
--xh-text-field-skin: 1;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
16
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
17
|
+
:where(xh-text-field:not([hidden])) {
|
|
18
|
+
display: contents;
|
|
19
|
+
}
|
|
20
|
+
|
|
15
21
|
/* 组件层只把既有公开槽映射到家族合同,并保留 label/count 等 TextField 专属结构;
|
|
16
22
|
形态三档由家族按 control 上的 data-variant 生成,皮肤不再声明。 */
|
|
17
23
|
[data-scope='text-field'][data-part='root'] {
|
package/css/time-field.css
CHANGED
|
@@ -13,6 +13,12 @@
|
|
|
13
13
|
--xh-time-field-skin: 1;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
17
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
18
|
+
:where(xh-time-field:not([hidden])) {
|
|
19
|
+
display: contents;
|
|
20
|
+
}
|
|
21
|
+
|
|
16
22
|
/* 与文本框、数字框同一套堆叠:标签一行、控件一行。
|
|
17
23
|
组件层只把既有公开槽映射到家族合同;形态三档由家族按 control 上的 data-variant 生成,皮肤不再声明。 */
|
|
18
24
|
[data-scope='time-field'][data-part='root'] {
|
package/css/time-picker.css
CHANGED
|
@@ -20,6 +20,12 @@
|
|
|
20
20
|
--xh-time-picker-skin: 1;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
24
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
25
|
+
:where(xh-time-picker:not([hidden])) {
|
|
26
|
+
display: contents;
|
|
27
|
+
}
|
|
28
|
+
|
|
23
29
|
/* 坐标由定位引擎写进 style(inset-inline-start / inset-block-start),这里只定位模式与层级 */
|
|
24
30
|
[data-scope='time-picker'][data-part='positioner'] {
|
|
25
31
|
/* 每个浮层独立声明方向,避免嵌套浮层继承祖先的进场位移。 */
|
|
@@ -19,6 +19,12 @@
|
|
|
19
19
|
--xh-time-range-picker-skin: 1;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
23
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
24
|
+
:where(xh-time-range-picker:not([hidden])) {
|
|
25
|
+
display: contents;
|
|
26
|
+
}
|
|
27
|
+
|
|
22
28
|
/* 坐标由定位引擎写进 style(inset-inline-start / inset-block-start),这里只定位模式与层级 */
|
|
23
29
|
[data-scope='time-range-picker'][data-part='positioner'] {
|
|
24
30
|
/* 落定那一侧的可用宽度,由定位引擎经内联自定义属性写进来,内容层据此夹住行内轴;
|
package/css/tree-select.css
CHANGED
|
@@ -20,6 +20,12 @@
|
|
|
20
20
|
--xh-tree-select-skin: 1;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
24
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
25
|
+
:where(xh-tree-select:not([hidden])) {
|
|
26
|
+
display: contents;
|
|
27
|
+
}
|
|
28
|
+
|
|
23
29
|
/* 坐标由定位引擎写进 style(inset-inline-start / inset-block-start),这里只定位模式与层级 */
|
|
24
30
|
[data-scope='tree-select'][data-part='positioner'] {
|
|
25
31
|
/* 落定那一侧的可用高度,由定位引擎经内联自定义属性写进来,内容层继承它限高;
|
package/dist/css/cascader.css
CHANGED
|
@@ -20,6 +20,12 @@
|
|
|
20
20
|
--xh-cascader-skin: 1;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
24
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
25
|
+
:where(xh-cascader:not([hidden])) {
|
|
26
|
+
display: contents;
|
|
27
|
+
}
|
|
28
|
+
|
|
23
29
|
/* 坐标由定位引擎写进 style(inset-inline-start / inset-block-start),这里只定位模式与层级 */
|
|
24
30
|
.xh-scope-cascader[data-part='positioner'] {
|
|
25
31
|
/* 落定那一侧的可用宽度,由定位引擎经内联自定义属性写进来,列区据此夹住行内轴;
|
package/dist/css/clipboard.css
CHANGED
|
@@ -16,6 +16,12 @@
|
|
|
16
16
|
--xh-clipboard-skin: 1;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
20
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
21
|
+
:where(xh-clipboard:not([hidden])) {
|
|
22
|
+
display: contents;
|
|
23
|
+
}
|
|
24
|
+
|
|
19
25
|
/* 与文本框同一套堆叠:标签一行、输入行一行 */
|
|
20
26
|
.xh-scope-clipboard[data-part='root'] {
|
|
21
27
|
/* 输入框与按钮同取一档高度,换尺寸只改这一个私有槽 */
|
package/dist/css/color-field.css
CHANGED
|
@@ -13,6 +13,12 @@
|
|
|
13
13
|
--xh-color-field-skin: 1;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
17
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
18
|
+
:where(xh-color-field:not([hidden])) {
|
|
19
|
+
display: contents;
|
|
20
|
+
}
|
|
21
|
+
|
|
16
22
|
/* 组件层只把既有公开槽映射到家族合同;形态三档由家族按 control 上的 data-variant 生成,皮肤不再声明;
|
|
17
23
|
色块吃 Swatch 家族,只在这里补一条与输入框的间距。 */
|
|
18
24
|
.xh-scope-color-field[data-part='root'] {
|
|
@@ -17,6 +17,12 @@
|
|
|
17
17
|
--xh-color-picker-skin: 1;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
21
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
22
|
+
:where(xh-color-picker:not([hidden])) {
|
|
23
|
+
display: contents;
|
|
24
|
+
}
|
|
25
|
+
|
|
20
26
|
/* 定位分工:取色区拇指的两条轴(inset-inline-start / inset-block-start)、浮层坐标、取色区底色,
|
|
21
27
|
全都由连接层每帧写进内联样式。这份皮肤一个都不碰:内联优先级高于样式表,
|
|
22
28
|
写了不但是死声明,还会跟连接层抢位置。皮肤只管尺寸、颜色、圆角与状态表现。
|
package/dist/css/combobox.css
CHANGED
|
@@ -20,6 +20,12 @@
|
|
|
20
20
|
--xh-combobox-skin: 1;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
24
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
25
|
+
:where(xh-combobox:not([hidden])) {
|
|
26
|
+
display: contents;
|
|
27
|
+
}
|
|
28
|
+
|
|
23
29
|
/* 坐标由定位引擎写进 style(inset-inline-start / inset-block-start),这里只定位模式与层级 */
|
|
24
30
|
.xh-scope-combobox[data-part='positioner'] {
|
|
25
31
|
/* 落定那一侧的可用高度,由定位引擎经内联自定义属性写进来,内容层继承它限高;
|
package/dist/css/date-field.css
CHANGED
|
@@ -13,6 +13,12 @@
|
|
|
13
13
|
--xh-date-field-skin: 1;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
17
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
18
|
+
:where(xh-date-field:not([hidden])) {
|
|
19
|
+
display: contents;
|
|
20
|
+
}
|
|
21
|
+
|
|
16
22
|
/* 与文本框、数字框同一套堆叠:标签一行、分段框一行。
|
|
17
23
|
组件层只把既有公开槽映射到家族合同;形态三档由家族按 control 上的 data-variant 生成,皮肤不再声明。 */
|
|
18
24
|
.xh-scope-date-field[data-part='root'] {
|
package/dist/css/date-picker.css
CHANGED
|
@@ -20,6 +20,12 @@
|
|
|
20
20
|
--xh-date-picker-skin: 1;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
24
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
25
|
+
:where(xh-date-picker:not([hidden])) {
|
|
26
|
+
display: contents;
|
|
27
|
+
}
|
|
28
|
+
|
|
23
29
|
/* 坐标由定位引擎写进 style(inset-inline-start / inset-block-start),这里只定位模式与层级 */
|
|
24
30
|
.xh-scope-date-picker[data-part='positioner'] {
|
|
25
31
|
/* 落定那一侧的可用高度,由定位引擎经内联自定义属性写进来,内容层继承它限高;
|
|
@@ -19,6 +19,12 @@
|
|
|
19
19
|
--xh-date-range-picker-skin: 1;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
23
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
24
|
+
:where(xh-date-range-picker:not([hidden])) {
|
|
25
|
+
display: contents;
|
|
26
|
+
}
|
|
27
|
+
|
|
22
28
|
/* 坐标由定位引擎写进 style(inset-inline-start / inset-block-start),这里只定位模式与层级 */
|
|
23
29
|
.xh-scope-date-range-picker[data-part='positioner'] {
|
|
24
30
|
/* 落定那一侧的可用高度,由定位引擎经内联自定义属性写进来,内容层继承它限高;
|
package/dist/css/editable.css
CHANGED
|
@@ -13,6 +13,12 @@
|
|
|
13
13
|
--xh-editable-skin: 1;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
17
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
18
|
+
:where(xh-editable:not([hidden])) {
|
|
19
|
+
display: contents;
|
|
20
|
+
}
|
|
21
|
+
|
|
16
22
|
/* 与 NumberField 同构:标题独占一行,control 是下面唯一的视觉盒;
|
|
17
23
|
预览/输入占据盒内左侧,编辑或确认/取消动作收在同一盒的逻辑末端。
|
|
18
24
|
组件层只把既有公开槽映射到家族合同;形态三档由家族按 control 上的 data-variant 生成,皮肤不再声明。 */
|
package/dist/css/form.css
CHANGED
|
@@ -35,10 +35,15 @@
|
|
|
35
35
|
|
|
36
36
|
/* 字段带辅助行:辅助行(最小高 --xh-space-5)紧贴控件、自己就是项距,这一项不再另留;
|
|
37
37
|
说明收起、只留错误文案占位的那一行同样算。字段无效时它的直接子说明被收起(见 description.css),
|
|
38
|
-
|
|
38
|
+
不占那一行,不算辅助行:没渲染错误文案的无效字段照常留项距。
|
|
39
|
+
字段不包 field-group、直接放进表单时同一条(与字段集的组内项距一致) */
|
|
39
40
|
.xh-scope-form[data-part='field-group']:has(
|
|
40
41
|
.xh-scope-field[data-part='error-text'],
|
|
41
42
|
.xh-scope-field[data-part='description']:not([hidden], .xh-scope-field[data-part='root'][data-invalid] > *)
|
|
43
|
+
),
|
|
44
|
+
.xh-scope-form[data-part='root'] > .xh-scope-field[data-part='root']:has(
|
|
45
|
+
.xh-scope-field[data-part='error-text'],
|
|
46
|
+
.xh-scope-field[data-part='description']:not([hidden], .xh-scope-field[data-part='root'][data-invalid] > *)
|
|
42
47
|
) {
|
|
43
48
|
margin-block-end: 0;
|
|
44
49
|
}
|
|
@@ -509,6 +509,18 @@
|
|
|
509
509
|
mask: var(--xh-glyph-mark-flip-vertical) center / contain no-repeat;
|
|
510
510
|
}
|
|
511
511
|
|
|
512
|
+
/* 复原:回转箭头,与旋转的整圈箭头区分开;与其余工具钮一样不写内容时由皮肤画 */
|
|
513
|
+
.xh-scope-image-viewer[data-part='reset-trigger']:empty::before {
|
|
514
|
+
content: '';
|
|
515
|
+
display: inline-block;
|
|
516
|
+
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
517
|
+
block-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
518
|
+
vertical-align: var(--xh-glyph-baseline-shift);
|
|
519
|
+
background-color: currentColor;
|
|
520
|
+
-webkit-mask: var(--xh-glyph-mark-undo) center / contain no-repeat;
|
|
521
|
+
mask: var(--xh-glyph-mark-undo) center / contain no-repeat;
|
|
522
|
+
}
|
|
523
|
+
|
|
512
524
|
.xh-scope-image-viewer[data-part='prev-trigger']:empty::before {
|
|
513
525
|
content: '';
|
|
514
526
|
display: inline-block;
|
|
@@ -572,16 +584,16 @@
|
|
|
572
584
|
background-color: CanvasText;
|
|
573
585
|
}
|
|
574
586
|
|
|
575
|
-
.xh-scope-image-viewer:is([data-part='zoom-in-trigger'], [data-part='zoom-out-trigger'], [data-part='rotate-left-trigger'], [data-part='rotate-right-trigger'], [data-part='flip-horizontal-trigger'], [data-part='flip-vertical-trigger'], [data-part='prev-trigger'], [data-part='next-trigger'], [data-part='close-trigger']):empty::before {
|
|
587
|
+
.xh-scope-image-viewer:is([data-part='zoom-in-trigger'], [data-part='zoom-out-trigger'], [data-part='rotate-left-trigger'], [data-part='rotate-right-trigger'], [data-part='flip-horizontal-trigger'], [data-part='flip-vertical-trigger'], [data-part='reset-trigger'], [data-part='prev-trigger'], [data-part='next-trigger'], [data-part='close-trigger']):empty::before {
|
|
576
588
|
forced-color-adjust: none;
|
|
577
589
|
background-color: ButtonText;
|
|
578
590
|
}
|
|
579
591
|
|
|
580
|
-
.xh-scope-image-viewer:is([data-part='zoom-in-trigger'], [data-part='zoom-out-trigger'], [data-part='rotate-left-trigger'], [data-part='rotate-right-trigger'], [data-part='flip-horizontal-trigger'], [data-part='flip-vertical-trigger'], [data-part='prev-trigger'], [data-part='next-trigger'], [data-part='close-trigger']):not([data-disabled]):not([data-loading]):is(:hover, :active, [data-pressed]):empty::before {
|
|
592
|
+
.xh-scope-image-viewer:is([data-part='zoom-in-trigger'], [data-part='zoom-out-trigger'], [data-part='rotate-left-trigger'], [data-part='rotate-right-trigger'], [data-part='flip-horizontal-trigger'], [data-part='flip-vertical-trigger'], [data-part='reset-trigger'], [data-part='prev-trigger'], [data-part='next-trigger'], [data-part='close-trigger']):not([data-disabled]):not([data-loading]):is(:hover, :active, [data-pressed]):empty::before {
|
|
581
593
|
background-color: HighlightText;
|
|
582
594
|
}
|
|
583
595
|
|
|
584
|
-
.xh-scope-image-viewer:is([data-part='zoom-in-trigger'], [data-part='zoom-out-trigger'], [data-part='rotate-left-trigger'], [data-part='rotate-right-trigger'], [data-part='flip-horizontal-trigger'], [data-part='flip-vertical-trigger'], [data-part='prev-trigger'], [data-part='next-trigger'], [data-part='close-trigger'])[data-disabled]:empty::before {
|
|
596
|
+
.xh-scope-image-viewer:is([data-part='zoom-in-trigger'], [data-part='zoom-out-trigger'], [data-part='rotate-left-trigger'], [data-part='rotate-right-trigger'], [data-part='flip-horizontal-trigger'], [data-part='flip-vertical-trigger'], [data-part='reset-trigger'], [data-part='prev-trigger'], [data-part='next-trigger'], [data-part='close-trigger'])[data-disabled]:empty::before {
|
|
585
597
|
background-color: GrayText;
|
|
586
598
|
}
|
|
587
599
|
}
|
package/dist/css/input-group.css
CHANGED
|
@@ -11,6 +11,12 @@
|
|
|
11
11
|
--xh-input-group-skin: 1;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
15
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
16
|
+
:where(xh-input-group:not([hidden])) {
|
|
17
|
+
display: contents;
|
|
18
|
+
}
|
|
19
|
+
|
|
14
20
|
/* 输入框、前后缀和动作共用一个输入表面。组只统一材质与外轮廓,语义仍归各子控件。 */
|
|
15
21
|
.xh-scope-input-group[data-part='root'] {
|
|
16
22
|
/* 段之间那几档层号只在自己人之间排序:建一个层叠上下文把它们关起来,
|
package/dist/css/mention.css
CHANGED
|
@@ -18,6 +18,12 @@
|
|
|
18
18
|
--xh-mention-skin: 1;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
/* Web Components 的宿主不占一层盒子:作者写的 root 直接参与外层排布、按控件宽铺满,与 Vue / React
|
|
22
|
+
直接渲染 root 一致。零特指度,作者给宿主写的 display 照层叠胜出;带 hidden 的宿主不掀开 */
|
|
23
|
+
:where(xh-mention:not([hidden])) {
|
|
24
|
+
display: contents;
|
|
25
|
+
}
|
|
26
|
+
|
|
21
27
|
/* 坐标由定位引擎写进 style(inset-inline-start / inset-block-start),这里只定位模式与层级 */
|
|
22
28
|
.xh-scope-mention[data-part='positioner'] {
|
|
23
29
|
/* 落定那一侧的可用高度,由定位引擎经内联自定义属性写进来,内容层继承它限高;
|
|
@@ -573,6 +573,9 @@
|
|
|
573
573
|
flex-direction: column;
|
|
574
574
|
row-gap: var(--xh-notification-item-row-gap, var(--xh-space-2));
|
|
575
575
|
min-inline-size: 0;
|
|
576
|
+
/* 凭证号、令牌、文件路径这类没有断点的长串就地折行,标题与说明一并继承:不折行时标题顶出卡片,
|
|
577
|
+
说明因限高带着 overflow-y: auto、另一轴随之成 auto,撑出一条横向滚动条 */
|
|
578
|
+
overflow-wrap: anywhere;
|
|
576
579
|
}
|
|
577
580
|
|
|
578
581
|
.xh-scope-notification[data-part='item'][data-preset='toast'] [data-part='item-content']:where(.xh-scope-notification) {
|