Angular 日历组件 | ng-hub-ui-calendar

Angular 日历组件,支持事件视图、拖放、模板、国际化和 CSS 变量,适用于日程安排界面。

API 参考

这里是 calendar 的完整契约:你可以绑定、监听、投影和设置主题的一切,都集中在一处。接入你需要的部分,自定义你想要的样式——它是 standalone 的,且对 signal 友好。

输入

通过 17 个输入项精细调校 calendar。像绑定任意 Angular @Input 一样绑定它们。

名称类型默认值描述
variantstringundefined语义强调色,作用于今天与选中日期、当前视图按钮和事件标签:primary、secondary、success、danger、warning、info、neutral、light、dark,或任意自定义名称(读取 --hub-sys-color-<variant>)。
eventsCalendarEvent<T>[][]要在日历上显示的事件数组
view'month' | 'week' | 'day' | 'year''month'当前视图类型(与 viewChange 双向绑定)
selectedDateDatenew Date()当前聚焦的日期(与 selectedDateChange 双向绑定)
configCalendarConfig{}日历的配置选项
eventClassstring | ((event: CalendarEvent) => string)undefined应用于事件的 CSS 类,可以是静态或动态的
weekStartsOn0 | 1 | 2 | 3 | 4 | 5 | 6 | undefinedundefined一周的起始日(0 = 周日,1 = 周一,依此类推)。设置后优先于 config.weekStartsOn;未设置时由配置决定,其默认值为 0。
localestring'en'内置词典的语言代码。库自带英语和西班牙语;其他代码回退到英语。
heightnumber | stringundefined日历的高度,也决定它是滚动还是自然增高。数字按像素读取,可用任意 CSS 长度,`auto` 则随内容增高而不滚动。不设置时日历填满其容器。比写样式规则更可靠:带作用域的 `hub-calendar { … }` 选择器会压过组件自身的布局并可能破坏它。
displayFormatIntl.DateTimeFormatOptions | string | ((date: Date) => string)undefined页眉标题如何书写月份与年份。可传 Intl 选项、`MMMM yyyy` 这样的 Angular 日期模式,或一个函数。不设置时使用内置组合;年视图的标题指的是年份,因此不受影响。
timeDisplayFormatIntl.DateTimeFormatOptions{ hour: 'numeric', minute: '2-digit' }事件条与当日提示中时间的 Intl 选项,会与 `hourFormat` 合成。默认是小时与分钟。
eventTimeFormatIntl.DateTimeFormatOptions | string | ((date: Date) => string)undefined月视图事件条在定时事件前打印的时间。不设置时保留为窄单元格准备的缩写:分钟为零时省略。
slotLabelFormatIntl.DateTimeFormatOptions | string | ((date: Date) => string)undefined周视图与日视图小时标尺上的标签。不设置时仍是一直以来的 `9:00`;只要设置 `hourFormat` 就会变成真正的时钟。
hourFormat'12' | '24'undefined在日历书写时间的所有位置强制 12 小时制或 24 小时制。不设置时由语言决定——与 `hub-datepicker` 中的含义相同。
weekdayFormat'short' | 'narrow' | 'long''short' ('narrow' when compact)星期列表头的宽度。`short` 与 `long` 读取日历自身的词典,因此应用词典能够生效;`narrow` 在词典中没有条目,改由区域设置推导。
monthFormat'short' | 'long''long'月份在页眉标题与年视图卡片上的写法。默认为 `long`,也就是日历一直以来打印的形式。
compactbooleanfalse把日历画成迷你月历:工具栏消失,日和周的最小高度也消失,星期表头收缩为语言本身的缩写,有事件的日子以圆点代替色块。月份标题保留。经 `booleanAttribute` 转换,因此只写 `compact` 属性即可开启。

输出

响应 calendar 的行为——有 6 个事件可供你挂接逻辑。

名称类型描述
eventClickCalendarEvent<T>当事件被点击时触发
dayClickCalendarDay<T>当日期单元格被点击时触发
eventDrop{ event: CalendarEvent<T>; newDate: Date; previousDate: Date }当事件被拖放到不同日期时触发
viewChangeCalendarViewType当视图类型变化时触发
selectedDateChangeDate所选日期变化时发出;支持通过 [(selectedDate)] 进行双向绑定
dateChangeDate当导航改变所显示的日期时触发

模板

打造你自己的样式——2 个模板插槽让你可以投影自定义标记。

名称描述示例
eventTpt用于渲染单个事件的模板。上下文:{ event: CalendarEvent }<ng-template eventTpt let-event="event">{{ event.title }}</ng-template>
dayCellTpt用于自定义日期单元格渲染的模板。上下文:{ day: CalendarDay }<ng-template dayCellTpt let-day="day">{{ day.date | date }}</ng-template>