Files
MujicaUI/docs/components/058-year-picker.md
T

1.7 KiB

058 YearPicker · 年份选择器

用途

按十年分页浏览并选择年份。

最小示例

year := 2026
view := func(c *ui.Context) {
	mujica.Use(c, mujica.Settings{})
	opts := mujica.YearPickerOptions{Label: "Vintage", Min: 1990, Max: 2030}
	if mujica.YearPicker(c, &year, opts).Changed() {
		fmt.Println("year", year)
	}
}
ui.Render(view, 400, 300, 1)

参数

func YearPicker(c *ui.Context, value *int, opts YearPickerOptions) DateTimeResult,返回值嵌入 *ui.Element。

字段 类型 默认值 含义
Min int 0 最早年份;0 不限制。
Max int 0 最晚年份;0 不限制。
DisableYear func(int) bool nil 不可选年份。
Clearable bool false 有值时显示清空按钮。
Today Date 零值(系统时钟) 标记当前年份。
Disabled bool false 禁用。
Label string 内置“选择年份” 辅助技术名称。

状态

默认、悬停、聚焦、选中、当前年、不可选、相邻十年(弱化)、禁用。

事件

Changed():选择或清空导致值变化时为 true。*value 为 0 表示未选择。

键盘操作

  • Enter/Space/↓:打开。
  • ←/→:前后一年;↑/↓:前后三年。
  • PageUp/PageDown:上/下一个十年。
  • Home/End:页首/页尾。
  • Enter:选择并关闭;Escape:关闭。

限制

  • 只支持公元 1 年及以后;值为负数时 panic。
  • 日期与时间值不带时区:Date、YearMonth、TimeOfDay 只保存日历字段,组件内部计算不做 UTC 转换。
  • Today 为零值时读取 c.Now()(系统本地时区);需要固定“今天”(测试、跨时区应用)时显式传入。