mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-19 06:58:57 +08:00
154 lines
7.0 KiB
Markdown
154 lines
7.0 KiB
Markdown
# TreeSelect Design Token
|
||
|
||
TreeSelect 控件使用 `TreeSelectToken`(Token ID: `"TreeSelect"`)作为组件级 Design Token。由于 TreeSelect 是一个复合控件,它还依赖 `SelectToken`(Select 共享 Token)和 `AddOnDecoratedBoxToken`、`PopupHostToken` 等共享 Token 来控制视觉表现。
|
||
|
||
---
|
||
|
||
## Token 资源访问方式
|
||
|
||
在 AXAML 中使用 TreeSelect 组件级 Token:
|
||
|
||
```xml
|
||
{atom:TreeSelectTokenResource MinPopupWidth}
|
||
```
|
||
|
||
在 AXAML 中使用 Select 共享 Token:
|
||
|
||
```xml
|
||
{atom:SelectTokenResource PopupContentPadding}
|
||
{atom:SelectTokenResource MultiModePadding}
|
||
{atom:SelectTokenResource Padding}
|
||
```
|
||
|
||
在 AXAML 中使用全局共享 Token:
|
||
|
||
```xml
|
||
{atom:SharedTokenResource ColorPrimary}
|
||
{atom:SharedTokenResource ColorBgElevated}
|
||
{atom:SharedTokenResource ControlHeight}
|
||
```
|
||
|
||
---
|
||
|
||
## 组件级 Token 一览
|
||
|
||
### TreeSelectToken
|
||
|
||
TreeSelect 自身定义的组件级 Token 较少,大部分视觉属性通过 `SelectToken` 和全局 `SharedToken` 控制。
|
||
|
||
| Token 名 | 类型 | 来源 | 说明 |
|
||
|---|---|---|---|
|
||
| `MinPopupWidth` | `double` | 固定 `300` | 弹窗的最小宽度,防止弹窗在数据较少时过窄 |
|
||
|
||
### SelectToken(继承使用)
|
||
|
||
TreeSelect 的装饰框(`TreeSelectAddOnDecoratedBox`)大量引用了 `SelectToken` 中的 Token,用于控制内边距和多选模式下的间距:
|
||
|
||
| Token 名 | 类型 | 来源 | 说明 |
|
||
|---|---|---|---|
|
||
| `PopupContentPadding` | `Thickness` | 基于 `SharedToken.UniformlyPaddingXXS` | 弹窗内容区域内边距 |
|
||
| `Padding` | `Thickness` | 基于 `SharedToken.ControlPaddingHorizontal` | 中号选择框内边距 |
|
||
| `PaddingSM` | `Thickness` | 基于 `SharedToken.ControlPaddingHorizontalSM` | 小号选择框内边距 |
|
||
| `PaddingLG` | `Thickness` | 基于 `SharedToken.ControlPaddingHorizontal` | 大号选择框内边距 |
|
||
| `MultiModePadding` | `Thickness` | 基于 `SharedToken.UniformlyPaddingSM` 等 | 多选模式下中号选择框内边距 |
|
||
| `MultiModePaddingSM` | `Thickness` | 基于 `SharedToken.ControlPaddingHorizontalSM` 等 | 多选模式下小号选择框内边距 |
|
||
| `MultiModePaddingLG` | `Thickness` | 基于 `SharedToken.ControlPaddingHorizontal` 等 | 多选模式下大号选择框内边距 |
|
||
| `MultipleItemBg` | `Color` | `SharedToken.ColorFillSecondary` | 多选标签背景色 |
|
||
| `MultipleItemHeight` | `double` | 基于 `SharedToken.ControlHeight` | 多选标签高度 |
|
||
| `MultipleItemHeightSM` | `double` | 基于 `SharedToken.ControlHeightSM` | 小号多选标签高度 |
|
||
| `MultipleItemHeightLG` | `double` | 基于 `SharedToken.ControlHeightLG` | 大号多选标签高度 |
|
||
| `MultipleSelectorBgDisabled` | `Color` | `SharedToken.ColorBgContainerDisabled` | 多选框禁用背景色 |
|
||
| `MultipleItemColorDisabled` | `Color` | `SharedToken.ColorTextDisabled` | 多选标签禁用文本颜色 |
|
||
| `OptionSelectedColor` | `Color` | `SharedToken.ColorText` | 选项选中时文本颜色 |
|
||
| `OptionSelectedFontWeight` | `FontWeight` | `SharedToken.FontWeightStrong` | 选项选中时字重 |
|
||
| `OptionSelectedBg` | `Color` | `SharedToken.ControlItemBgActive` | 选项选中时背景色 |
|
||
| `OptionActiveBg` | `Color` | `SharedToken.ControlItemBgHover` | 选项激活态背景色 |
|
||
| `OptionPadding` | `Thickness` | 基于 `SharedToken.ControlPaddingHorizontal` | 选项内间距 |
|
||
| `OptionFontSize` | `double` | `SharedToken.FontSize` | 选项字体大小 |
|
||
| `OptionHeight` | `double` | `SharedToken.ControlHeight` | 选项高度 |
|
||
|
||
---
|
||
|
||
## 主题中使用的全局 SharedToken
|
||
|
||
除组件级 Token 外,TreeSelect 的 ControlTheme 还直接引用了以下全局 `SharedToken`:
|
||
|
||
| Token 资源键 | 使用场景 |
|
||
|---|---|
|
||
| `EnableMotion` | 全局动画开关,控制弹窗展开/收起动画 |
|
||
| `ColorPrimary` | 默认的筛选高亮颜色(`FilterHighlightForeground` 默认值) |
|
||
| `ColorText` | 单选模式下选中项文本颜色 |
|
||
| `ColorTextPlaceholder` | 占位文本颜色,单选搜索时选中项降级显示颜色 |
|
||
| `ColorTextDisabled` | 禁用状态下文本颜色 |
|
||
| `ColorBgElevated` | 弹窗背景色 |
|
||
| `ColorBorder` | Outline 变体默认边框颜色 |
|
||
| `ColorError` | 错误状态边框颜色(Outline 变体) |
|
||
| `ColorErrorBorderHover` | 错误状态悬浮边框颜色 |
|
||
| `ColorErrorBg` | 错误状态背景色(Filled 变体) |
|
||
| `ColorErrorBgHover` | 错误状态悬浮背景色(Filled 变体) |
|
||
| `ColorWarning` | 警告状态边框颜色(Outline 变体) |
|
||
| `ColorWarningBorderHover` | 警告状态悬浮边框颜色 |
|
||
| `ColorWarningBg` | 警告状态背景色(Filled 变体) |
|
||
| `ColorWarningBgHover` | 警告状态悬浮背景色(Filled 变体) |
|
||
| `ColorFillTertiary` | Filled 变体默认背景色 |
|
||
| `ColorFillSecondary` | Filled 变体悬浮背景色 |
|
||
| `ControlHeight` | 选项高度(`ItemHeight`) |
|
||
| `FontSize` | 中号/小号字体大小 |
|
||
| `FontSizeLG` | 大号字体大小 |
|
||
| `SpacingXS` | 右侧附加内容区域元素间距 |
|
||
|
||
### AddOnDecoratedBoxToken(通过装饰框引用)
|
||
|
||
| Token 资源键 | 使用场景 |
|
||
|---|---|
|
||
| `HoverBorderColor` | 装饰框悬浮时边框颜色 |
|
||
| `ActiveBorderColor` | 装饰框激活/聚焦/下拉打开时边框颜色 |
|
||
| `ActiveBg` | Filled 变体聚焦时背景色 |
|
||
|
||
### PopupHostToken(弹窗层引用)
|
||
|
||
| Token 资源键 | 使用场景 |
|
||
|---|---|
|
||
| `MarginToAnchor` | 弹窗与锚点控件之间的间距 |
|
||
| `BoxShadows` | 弹窗阴影效果 |
|
||
| `BorderRadius` | 弹窗圆角半径 |
|
||
|
||
---
|
||
|
||
## Token 对外观的具体影响
|
||
|
||
### 样式变体与 Token 映射
|
||
|
||
| 样式变体 | 正常态 | 悬浮态 | 聚焦/激活态 | 禁用态 |
|
||
|---|---|---|---|---|
|
||
| **Outline** | `ColorBorder` 边框 | `HoverBorderColor` 边框 | `ActiveBorderColor` 边框 | 灰色调 |
|
||
| **Filled** | `ColorFillTertiary` 背景,透明边框 | `ColorFillSecondary` 背景 | `ActiveBorderColor` 边框,透明背景 | 灰色调 |
|
||
| **Borderless** | 无边框无背景 | — | — | — |
|
||
| **Underlined** | 仅底部边框 | — | — | — |
|
||
|
||
### 状态与 Token 映射
|
||
|
||
| 状态 | Outline 变体 | Filled 变体 |
|
||
|---|---|---|
|
||
| **Error** | `ColorError` 边框;悬浮 `ColorErrorBorderHover` | `ColorErrorBg` 背景;悬浮 `ColorErrorBgHover`;聚焦 `ColorError` 边框 |
|
||
| **Warning** | `ColorWarning` 边框;悬浮 `ColorWarningBorderHover` | `ColorWarningBg` 背景;悬浮 `ColorWarningBgHover`;聚焦 `ColorWarning` 边框 |
|
||
|
||
### 尺寸与 Token 映射
|
||
|
||
| 尺寸 | 字号 | 单选内边距 | 多选内边距 |
|
||
|---|---|---|---|
|
||
| `Large` | `FontSizeLG` | `SelectToken.PaddingLG` | `SelectToken.MultiModePaddingLG` |
|
||
| `Middle` | `FontSize` | `SelectToken.Padding` | `SelectToken.MultiModePadding` |
|
||
| `Small` | `FontSize` | `SelectToken.Padding` | `SelectToken.MultiModePaddingSM` |
|
||
|
||
### 弹窗相关 Token
|
||
|
||
| Token | 影响 |
|
||
|---|---|
|
||
| `TreeSelectToken.MinPopupWidth` | 弹窗最小宽度(默认 300px) |
|
||
| `SelectToken.PopupContentPadding` | 弹窗内部 TreeView 周围的内边距 |
|
||
| `PopupHostToken.BoxShadows` | 弹窗投影效果 |
|
||
| `PopupHostToken.BorderRadius` | 弹窗圆角 |
|
||
| `PopupHostToken.MarginToAnchor` | 弹窗与选择框之间的间距 |
|
||
| `SharedToken.ColorBgElevated` | 弹窗背景色 |
|