56 lines
1.8 KiB
Markdown
56 lines
1.8 KiB
Markdown
# 057 MonthPicker · 月份选择器
|
|
|
|
## 用途
|
|
|
|
按年份分页选择月份。
|
|
|
|
## 最小示例
|
|
|
|
```go
|
|
var month mujica.YearMonth
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
opts := mujica.MonthPickerOptions{Label: "Billing month", Clearable: true}
|
|
if mujica.MonthPicker(c, &month, opts).Changed() {
|
|
fmt.Println("month", month)
|
|
}
|
|
}
|
|
ui.Render(view, 400, 300, 1)
|
|
```
|
|
|
|
## 参数
|
|
|
|
`func MonthPicker(c *ui.Context, value *YearMonth, opts MonthPickerOptions) DateTimeResult`,返回值嵌入 `*ui.Element`。
|
|
|
|
| 字段 | 类型 | 默认值 | 含义 |
|
|
| --- | --- | --- | --- |
|
|
| `Min` | `YearMonth` | 零值 | 最早月份。 |
|
|
| `Max` | `YearMonth` | 零值 | 最晚月份。 |
|
|
| `DisableMonth` | `func(YearMonth) bool` | nil | 不可选月份。 |
|
|
| `Clearable` | `bool` | false | 有值时显示清空按钮。 |
|
|
| `Today` | `Date` | 零值(系统时钟) | 标记当前月份。 |
|
|
| `Disabled` | `bool` | false | 禁用。 |
|
|
| `Label` | `string` | 内置“选择月份” | 辅助技术名称。 |
|
|
|
|
## 状态
|
|
|
|
默认、悬停、聚焦、选中(酒红填充)、当前月(加粗 + 菱形)、不可选(删除线)、禁用。
|
|
|
|
## 事件
|
|
|
|
`Changed()`:选择或清空导致值变化时为 true。
|
|
|
|
## 键盘操作
|
|
|
|
- Enter/Space/↓:打开。
|
|
- ←/→:前后一月;↑/↓:前后三月(一行)。
|
|
- PageUp/PageDown:上/下一年。
|
|
- Home/End:一月/十二月。
|
|
- Enter:选择并关闭;Escape:关闭。
|
|
|
|
## 限制
|
|
|
|
- 键盘移到不可选月份时焦点保持在原处,可继续移动。
|
|
- 日期与时间值不带时区:`Date`、`YearMonth`、`TimeOfDay` 只保存日历字段,组件内部计算不做 UTC 转换。
|
|
- `Today` 为零值时读取 `c.Now()`(系统本地时区);需要固定“今天”(测试、跨时区应用)时显式传入。
|