Files

130 lines
5.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Select Design Token
Select 控件使用 `SelectToken`(Token ID: `"Select"`)作为组件级 Design Token,所有视觉属性均从全局 `SharedToken` 派生,不硬编码任何具体值。
---
## Token 资源访问方式
在 AXAML 中使用组件级 Token:
```xml
{atom:SelectTokenResource MultipleItemBg}
{atom:SelectTokenResource OptionSelectedBg}
{atom:SelectTokenResource Padding}
```
在 AXAML 中使用全局共享 Token:
```xml
{atom:SharedTokenResource ColorPrimary}
{atom:SharedTokenResource ControlHeight}
{atom:SharedTokenResource ColorTextPlaceholder}
```
---
## 组件级 Token 一览
以下是 `SelectToken` 定义的全部组件级 Token,按功能分组说明。
### 多选标签 Token
| Token 名 | 类型 | 来源 | 说明 |
|---|---|---|---|
| `MultipleItemBg` | `Color` | `SharedToken.ColorFillSecondary` | 多选标签背景色 |
| `MultipleItemHeight` | `double` | 基于 `SharedToken.ControlHeight` 和 `PaddingXXS` 计算 | 多选标签高度(中号) |
| `MultipleItemHeightSM` | `double` | 基于 `SharedToken.ControlHeightSM` 和 `PaddingXXS` 计算 | 多选标签高度(小号) |
| `MultipleItemHeightLG` | `double` | 基于 `SharedToken.ControlHeightLG` 和 `PaddingXXS` 计算 | 多选标签高度(大号) |
| `MultipleSelectorBgDisabled` | `Color` | `SharedToken.ColorBgContainerDisabled` | 多选框禁用背景色 |
| `MultipleItemColorDisabled` | `Color` | `SharedToken.ColorTextDisabled` | 多选标签禁用文本颜色 |
### 选项样式 Token
| Token 名 | 类型 | 来源 | 说明 |
|---|---|---|---|
| `OptionSelectedColor` | `Color` | `SharedToken.ColorText` | 选项选中时文本颜色 |
| `OptionSelectedFontWeight` | `FontWeight` | `SharedToken.FontWeightStrong` | 选项选中时文本字重 |
| `OptionSelectedBg` | `Color` | `SharedToken.ControlItemBgActive` | 选项选中时背景色 |
| `OptionActiveBg` | `Color` | `SharedToken.ControlItemBgHover` | 选项激活(悬浮)时背景色 |
| `OptionPadding` | `Thickness` | 基于 `SharedToken.ControlPaddingHorizontal` 和 `ControlHeight` 计算 | 选项内间距 |
| `OptionFontSize` | `double` | `SharedToken.FontSize` | 选项字体大小 |
| `OptionHeight` | `double` | `SharedToken.ControlHeight` | 选项高度 |
### 内间距 Token
| Token 名 | 类型 | 来源 | 说明 |
|---|---|---|---|
| `Padding` | `Thickness` | 基于 `SharedToken.UniformlyPaddingSM` 和 `ControlHeight` 计算 | 输入框内边距(中号) |
| `PaddingSM` | `Thickness` | 基于 `SharedToken.ControlPaddingHorizontalSM` 和 `ControlHeightSM` 计算 | 输入框内边距(小号) |
| `PaddingLG` | `Thickness` | 基于 `SharedToken.ControlPaddingHorizontal` 和 `ControlHeightLG` 计算 | 输入框内边距(大号) |
| `MultiModePadding` | `Thickness` | 基于 `SharedToken.ControlHeight` 和 `UniformlyPaddingSM` 计算 | 多选模式下的输入框内边距(中号) |
| `MultiModePaddingSM` | `Thickness` | 基于 `SharedToken.ControlHeightSM` 和 `ControlPaddingHorizontalSM` 计算 | 多选模式下的输入框内边距(小号) |
| `MultiModePaddingLG` | `Thickness` | 基于 `SharedToken.ControlHeightLG` 和 `ControlPaddingHorizontal` 计算 | 多选模式下的输入框内边距(大号) |
### 其他 Token
| Token 名 | 类型 | 来源 | 说明 |
|---|---|---|---|
| `SelectAffixPadding` | `Thickness` | `SharedToken.PaddingXXS` | 前缀/后缀区域间距 |
| `FixedItemMargin` | `Thickness` | 基于 `SharedToken.UniformlyPaddingXXS / 2` 计算 | 固定项外边距 |
| `PopupContentPadding` | `Thickness` | 基于 `SharedToken.UniformlyPaddingXXS / 2` 计算 | 弹出面板内容边距 |
---
## 主题中使用的全局 SharedToken
除组件级 Token 外,Select 的 ControlTheme 还直接引用了以下全局 `SharedToken`:
| Token 资源键 | 使用场景 |
|---|---|
| `FontSize` | 中号/小号 Select 字体大小 |
| `FontSizeLG` | 大号 Select 字体大小 |
| `ControlHeight` | 选项高度基准 |
| `ColorBgElevated` | 弹出面板背景色 |
| `ColorTextPlaceholder` | 占位文本颜色 |
| `ColorText` | 搜索输入框占位文本颜色(非搜索状态) |
| `ColorTextDisabled` | 禁用状态前景色 |
| `SpacingXS` | ContentRightAddOn 区域内子元素间距 |
| `EnableMotion` | 全局动画开关 |
### 弹出面板 Token
Select 的弹出面板还引用了 `PopupHostToken` 中的以下 Token:
| Token 资源键 | 使用场景 |
|---|---|
| `PopupHostTokenResource MarginToAnchor` | 弹出面板与锚点的间距 |
| `PopupHostTokenResource BoxShadows` | 弹出面板阴影效果 |
| `PopupHostTokenResource BorderRadius` | 弹出面板圆角 |
---
## Token 对外观的具体影响
### 选择模式与模板可见性
| 模式 | `SingleSelectResultPresenter` | `SingleFilterInput` | `SelectedOptionsBox` | `SelectCandidateList` |
|---|---|---|---|---|
| **Single(无搜索)** | ✅ 可见 | ❌ 隐藏 | ❌ 隐藏 | `SelectionMode=Single`,无选中指示器 |
| **Single(有搜索)** | ❌ 隐藏 | ✅ 可见 | ❌ 隐藏 | `SelectionMode=Single`,无选中指示器 |
| **Multiple** | ❌ 隐藏 | ❌ 隐藏 | ✅ 可见 | `SelectionMode=Multiple`,有选中指示器 |
| **Tags** | ❌ 隐藏 | ❌ 隐藏 | ✅ 可见 | `SelectionMode=Multiple`,有选中指示器 |
### 尺寸与 Token 映射
| 尺寸 | 字号 | 输入框内边距 | 多选模式内边距 | 多选标签高度 |
|---|---|---|---|---|
| `Large` | `FontSizeLG` | `PaddingLG` | `MultiModePaddingLG` | `MultipleItemHeightLG` |
| `Middle` | `FontSize` | `Padding` | `MultiModePadding` | `MultipleItemHeight` |
| `Small` | `FontSize` | `PaddingSM` | `MultiModePaddingSM` | `MultipleItemHeightSM` |
### 选项交互状态颜色
| 状态 | 背景色 | 文本颜色 | 字重 |
|---|---|---|---|
| **默认** | 透明 | 继承 | 正常 |
| **悬浮** | `OptionActiveBg` | 继承 | 正常 |
| **选中** | `OptionSelectedBg` | `OptionSelectedColor` | `OptionSelectedFontWeight` |
| **禁用** | 透明 | `ColorTextDisabled` | 正常 |