Files
MujicaUI/docs/components/057-month-picker.md
T

2.4 KiB

057 MonthPicker · 月份选择器

用途

按年份分页选择月份。

最小示例

var month datetime.YearMonth
view := func(c *ui.Context) {
	core.Use(c, core.Settings{})
	opts := datetime.MonthPickerOptions{Label: "Billing month", Clearable: true}
	if datetime.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,返回值的 Element 字段是组件元素。

字段 类型 默认值 含义
Min YearMonth 零值 最早月份。
Max YearMonth 零值 最晚月份。
DisableMonth func(YearMonth) bool nil 不可选月份。
Clearable bool false 有值时显示清空按钮。
Today Date 零值(系统时钟) 标记当前月份。
ReadOnly bool false 只读:可聚焦、可复制(Cmd/Ctrl+C),不能修改,不打开弹层。
Disabled bool false 禁用。
Label string 内置“选择月份” 辅助技术名称。

状态

默认、悬停、聚焦、选中(酒红填充 + 内嵌细框)、当前月(加粗 + 菱形)、不可选(删除线)、禁用。

事件

Changed():选择或清空导致值变化时为 true。

键盘操作

  • Enter/Space/↓:打开。
  • ←/→:前后一月;↑/↓:前后三月(一行)。
  • PageUp/PageDown:上/下一年。
  • Home/End:一月/十二月。
  • Enter:选择并关闭;Escape:关闭。

限制

  • 键盘移到不可选月份时焦点保持在原处,可继续移动。
  • 日期与时间值不带时区:Date、YearMonth、TimeOfDay 只保存日历字段,组件内部计算不做 UTC 转换。
  • Today 为零值时读取 c.Now()(系统本地时区);需要固定“今天”(测试、跨时区应用)时显式传入。
  • 无障碍:MyGo v0.2.10 没有公开设置弹出按钮展开状态(expanded)、数值范围(hasRange/accRange)与值(accValue)的接口,这些字段只在 MyGo 内部组件中赋值(ui/element.go:286-295,例如 ui/base.go:297、ui/indicators.go:61)。因此触发器只能声明为 RolePopUpButton 而无法报告展开状态;时间段以 Description 读出当前值与范围,错误通过 Error() 关联。