Skip to content

Commit 7ee867f

Browse files
committed
+ calendar: add onClickDay callback and getDayEvents method
1 parent e3711c9 commit 7ee867f

4 files changed

Lines changed: 19 additions & 2 deletions

File tree

lib/calendar/dev.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ onPageLoad(() => {
2626
onClickEvent: (event, category, mouseEvent) => {
2727
console.log('> onClickEvent', {event, category, mouseEvent});
2828
},
29+
onClickDay: function (date, mouseEvent) {
30+
const dayEvents = this.getDayEvents(date);
31+
console.log('> onClickDay', {date, mouseEvent, dayEvents});
32+
},
2933
});
3034
console.log('> calendar', calendar);
3135
});

lib/calendar/src/component/calendar-month-view.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export class CalendarMonthView extends Component<CalendarMonthViewProps> {
4646
'is-weekend': weekDay === 0 || weekDay === 6,
4747
});
4848
return (
49-
<div className={className} key={dateStr} z-date={dateStr} zui-command={`.~clickDay/${dateStr}`}>
49+
<div className={className} key={dateStr} z-date={dateStr} zui-command={`.~clickDay/${dateStr}/$.event`}>
5050
<div className="calendar-month-view-day-head" title={dateStr}>
5151
{(date === 1 && monthNames) ? <span class="calendar-month-view-month-name">{monthNames[day.getMonth()]}</span> : null}
5252
<span class="calendar-month-view-day-number">{day.getDate()}</span>

lib/calendar/src/component/calendar.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {ComponentChildren, RenderableProps} from 'preact';
22
import {HElementSignals, computed, effect} from '@zui/core';
3-
import {createDate, type DateLike, getDateTime} from '@zui/helpers';
3+
import {createDate, type DateLike, formatDate, getDateTime} from '@zui/helpers';
44
import type {CalendarCategory, CalendarEvent, CalendarProps, CalendarState} from '../types';
55
import {CalendarHeader} from './calendar-header';
66
import {CalendarMonthView} from './calendar-month-view';
@@ -97,10 +97,20 @@ export class Calendar<P extends CalendarProps = CalendarProps> extends HElementS
9797
this.props.onClickEvent?.call(this, event, category!, mouseEvent);
9898
}
9999

100+
clickDay(dateStr: string, mouseEvent: MouseEvent) {
101+
const date = createDate(dateStr);
102+
this.props.onClickDay?.call(this, date, mouseEvent);
103+
}
104+
100105
getEvent(eventID: string) {
101106
return this.events.find(event => String(event.id) === String(eventID));
102107
}
103108

109+
getDayEvents(date: DateLike) {
110+
const dateStr = formatDate(date, 'yyyy-MM-dd');
111+
return this.events.filter(event => formatDate(event.start, 'yyyy-MM-dd') === dateStr);
112+
}
113+
104114
getCategory(categoryID: string) {
105115
return this.categories.find(category => String(category.id) === String(categoryID));
106116
}

lib/calendar/src/types/calendar-props.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ export type CalendarProps = HElementProps & {
5959
/** 点击日历事件 */
6060
onClickEvent?: (event: CalendarEvent, category: CalendarCategory, mouseEvent: MouseEvent) => void;
6161

62+
/** 点击日历日期 */
63+
onClickDay?: (date: Date, mouseEvent: MouseEvent) => void;
64+
6265
/** 切换日期回调函数 */
6366
onSwitchDate?: (date: Date, mode: CalendarViewMode) => void;
6467
};

0 commit comments

Comments
 (0)