MujicaUI

Calendar · #431

AvailabilityPicker 浅色主题渲染快照
浅色 · 渲染快照
AvailabilityPicker 深色主题渲染快照
深色 · 渲染快照

431 AvailabilityPicker · 空闲时段选择

用途

按天与时间的网格,拖动涂抹自己的空闲时段,并显示其他人在每个时段的空闲人数。

最小示例

days := []core.Date{{Year: 2026, Month: time.October, Day: 12}, {Year: 2026, Month: time.October, Day: 13}}
mine := [][]bool{make([]bool, 18), make([]bool, 18)}
view := func(c *ui.Context) {
	core.Use(c, core.Settings{})
	if datetime.AvailabilityPicker(c, &mine, datetime.AvailabilityPickerOptions{Days: days}).Changed() {
		fmt.Println("availability changed")
	}
}
ui.Render(view, 400, 300, 1)

参数

func AvailabilityPicker(c *ui.Context, mine *[][]bool, opts AvailabilityPickerOptions) ChoiceResult

字段类型默认值含义
Days[]Date必填网格的列。
From / Toint9 / 18起止小时,0 ≤ From < To ≤ 24。
SlotMinutesint0(即 30)时段长度。
Others[]AvailabilityPersonnil其他人的空闲表,维度须与值一致。
Hour12boolfalse12 小时制显示时间。
Disabledboolfalse禁用:不响应点击、拖动与快捷键,弹层随之关闭。
Labelstring内置文案辅助技术读出的名称。

状态

默认、自己空闲(选中底色 + 勾)、他人空闲(数量 + 条形)、全员可行(加粗强调)、键盘光标(内嵌框)、禁用。

事件

Changed() 报告自己的空闲表变化。

键盘操作

  • Tab 聚焦网格,方向键移动光标,Space 或 Enter 切换。

限制

  • 值的维度为 [天][时段],与选项不符时 panic。