@kne/react-calendar 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["style.module.scss"],"names":[],"mappings":"AAAA;EACE,aAAa;EACb,mBAAmB;EACnB,8BAA8B;EAC9B,iBAAiB;AACnB;;AAEA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,gBAAgB;AAClB;;AAEA;EACE,SAAS;EACT,uBAAuB;EACvB,cAAc;EACd,cAAc;EACd,eAAe;EACf,gBAAgB;EAChB,iBAAiB;EACjB,eAAe;EACf,kBAAkB;EAClB,iCAAiC;AACnC;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,yCAAyC;EACzC,mBAAmB;AACrB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,8BAA8B;EAC9B,QAAQ;EACR,mBAAmB;AACrB;;AAEA;EACE,OAAO;EACP,cAAc;EACd,eAAe;EACf,gBAAgB;EAChB,kBAAkB;EAClB,mBAAmB;AACrB;;AAEA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,WAAW;EACX,YAAY;EACZ,UAAU;EACV,SAAS;EACT,uBAAuB;EACvB,cAAc;EACd,kBAAkB;EAClB,eAAe;EACf,cAAc;AAChB;;AAEA;EACE,cAAc;EACd,mBAAmB;AACrB;;AAEA;EACE,cAAc;EACd,WAAW;EACX,YAAY;AACd;;AAEA;EACE,aAAa;EACb,gDAAgD;EAChD,QAAQ;AACV;;AAEA;EACE,YAAY;EACZ,SAAS;EACT,kBAAkB;EAClB,uBAAuB;EACvB,cAAc;EACd,eAAe;EACf,gBAAgB;EAChB,eAAe;EACf,mDAAmD;AACrD;;AAEA;EACE,mBAAmB;AACrB;;AAEA;;EAEE,WAAW;EACX,yCAAyC;AAC3C;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,YAAY;EACZ,eAAe;EACf,cAAc;EACd,eAAe;EACf,gBAAgB;EAChB,oBAAoB;AACtB;;AAEA;EACE,cAAc;EACd,mBAAmB;AACrB;;AAEA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,WAAW;EACX,YAAY;EACZ,UAAU;EACV,SAAS;EACT,uBAAuB;EACvB,cAAc;EACd,kBAAkB;EAClB,eAAe;EACf,mDAAmD;AACrD;;AAEA;EACE,cAAc;EACd,WAAW;EACX,YAAY;AACd;;AAEA;EACE,cAAc;EACd,mBAAmB;AACrB;;AAEA;EACE,yCAAyC;EACzC,mBAAmB;AACrB;AAjKA;EACE,kBAAkB;EAClB,aAAa;EACb,WAAW;EACX,eAAe;EACf,gBAAgB;EAChB,eAAe;EACf,kBAAkB;EAClB,uBAAuB;EACvB,sBAAsB;EACtB,mBAAmB;EACnB,uBAAuB;EACvB,OAAO;EACP,eAAe;EACf,sBAAsB;EACtB,oBAAoB;EACpB,yBAAyB;EACzB,gGAAgG;AAClG;;AAEA;EACE,2CAA2C;EAC3C,2BAA2B;AAC7B;;AAEA;EACE,qCAAqC;EACrC,cAAc;EACd,gBAAgB;AAClB;;AAEA;EACE,2CAA2C;AAC7C;;AAEA;EACE,WAAW;EACX,yCAAyC;EACzC,gBAAgB;EAChB,6CAA6C;AAC/C;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,WAAW;EACX,yCAAyC;EACzC,2BAA2B;AAC7B;;AAEA;EACE,yCAAyC;AAC3C;;AAEA;EACE,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,SAAS;EACT,WAAW;EACX,YAAY;EACZ,cAAc;EACd,sBAAsB;EACtB,+BAA+B;EAC/B,iBAAiB;EACjB,oBAAoB;EACpB,UAAU;AACZ;;AAEA;EACE,gBAAgB;EAChB,qCAAqC;EACrC,kCAAkC;EAClC,kCAAkC;EAClC,6BAA6B;EAC7B,kCAAkC;EAClC,gBAAgB;EAChB,oCAAoC;EACpC,uCAAuC;AACzC;;AAEA;EACE,gCAAgC;EAChC,qCAAqC;AACvC;;AAEA;EACE,0BAA0B;AAC5B;;AAEA;EACE,0BAA0B;EAC1B,mBAAmB;EACnB,uBAAuB;AACzB;;AAEA;EACE,uBAAuB;EACvB,eAAe;AACjB;;AAEA;EACE,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;AACpB;AACA;EACE,iBAAiB;EACjB,eAAe;AACjB;AACA;EACE,WAAW;AACb;AAlHA;EACE,4BAA4B;AAC9B;;AAEA;EACE,aAAa;EACb,WAAW;EACX,sBAAsB;EACtB,QAAQ;EACR,kBAAkB;EAClB,mBAAmB;EACnB,gBAAgB;EAChB,4CAA4C;EAC5C,uDAAuD;AACzD;;AAEA;EACE,6CAA6C;EAC7C,2BAA2B;AAC7B;;AAEA;EACE,aAAa;EACb,eAAe;EACf,mBAAmB;EACnB,QAAQ;AACV;;AAEA;EACE,oBAAoB;AACtB;;AAEA;EACE,cAAc;EACd,eAAe;EACf,gBAAgB;EAChB,iBAAiB;AACnB;;AAEA;EACE,cAAc;EACd,eAAe;EACf,gBAAgB;EAChB,gBAAgB;AAClB;;AAEA;EACE,cAAc;EACd,eAAe;EACf,iBAAiB;AACnB;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,yCAAyC;EACzC,mBAAmB;AACrB;;AAEA;EACE,aAAa;EACb,mBAAmB;AACrB;;AAEA;EACE,4CAA4C;EAC5C,eAAe;AACjB;AArEA;EACE,WAAW;EACX,WAAW;EACX,aAAa;EACb,gBAAgB;EAChB,aAAa;EACb,sBAAsB;EACtB,gBAAgB;EAChB,uBAAuB;AACzB;;AAEA;EACE,mBAAmB;EACnB,gBAAgB;AAClB;;AAEA;EACE,SAAS;AACX;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,SAAS;AACX;;AAEA;;EAEE,sBAAsB;AACxB;;AAEA;;EAEE,UAAU;AACZ;;AAEA;EACE,sBAAsB;AACxB;;AAEA;EACE,cAAc;EACd,gBAAgB;EAChB,eAAe;EACf,gBAAgB;EAChB,uBAAuB;AACzB;;AAEA;EACE,mBAAmB;EACnB,iBAAiB;EACjB,mBAAmB;EACnB,mBAAmB;AACrB;;AAEA;EACE,uBAAuB;AACzB;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,kBAAkB;EAClB,WAAW;EACX,aAAa;EACb,gBAAgB;EAChB,aAAa;EACb,sBAAsB;EACtB,UAAU;EACV,uBAAuB;AACzB;;AAEA;EACE,WAAW;EACX,aAAa;EACb,YAAY;EACZ,gBAAgB;EAChB,aAAa;EACb,sBAAsB;EACtB,uBAAuB;AACzB;;AAEA;;;EAGE,WAAW;EACX,aAAa;EACb,YAAY;EACZ,gBAAgB;EAChB,aAAa;EACb,sBAAsB;EACtB,uBAAuB;AACzB;;AAEA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,aAAa;EACb,cAAc;EACd,uBAAuB;EACvB,qBAAqB;EACrB,mDAAmD;AACrD;AACA;EACE,UAAU;EACV,WAAW;EACX,uBAAuB;AACzB;AACA;EACE,uBAAuB;AACzB;AACA;EACE,kCAAkC;EAClC,oBAAoB;AACtB;AACA;EACE,uBAAuB;AACzB;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,QAAQ;EACR,cAAc;EACd,eAAe;EACf,gBAAgB;EAChB,gBAAgB;EAChB,mBAAmB;AACrB;;AAEA;EACE,cAAc;EACd,eAAe;EACf,gBAAgB;EAChB,iBAAiB;AACnB;;AAEA;EACE,gBAAgB;EAChB,MAAM;EACN,UAAU;EACV,YAAY;EACZ,oBAAoB;EACpB,cAAc;EACd,oBAAoB;EACpB,2EAA2E;EAC3E,UAAU;EACV,6BAA6B;AAC/B;;AAEA;EACE,UAAU;AACZ;;AAEA;EACE,gBAAgB;EAChB,SAAS;EACT,mBAAmB;EACnB,6CAA6C;AAC/C;AAlKA;EACE,kBAAkB;EAClB,aAAa;EACb,sBAAsB;EACtB,WAAW;EACX,YAAY;EACZ,aAAa;EACb,cAAc;EACd,UAAU;EACV,uBAAuB;EACvB,mBAAmB;EACnB,qBAAqB;EACrB,mDAAmD;AACrD;AACA;EACE,UAAU;EACV,WAAW;EACX,uBAAuB;AACzB;AACA;EACE,uBAAuB;AACzB;AACA;EACE,kCAAkC;EAClC,oBAAoB;AACtB;AACA;EACE,uBAAuB;AACzB;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,QAAQ;EACR,sBAAsB;AACxB;;AAEA;EACE,kBAAkB;EAClB,yBAAiB;UAAjB,iBAAiB;AACnB;;AAEA;EACE,6BAA6B;EAC7B,4BAA4B;EAC5B,yBAAiB;UAAjB,iBAAiB;AACnB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,aAAa;EACb,WAAW;EACX,gBAAgB;EAChB,SAAS;EACT,mBAAmB;EACnB,gBAAgB;EAChB,mBAAmB;EACnB,uBAAuB;EACvB,QAAQ;EACR,iBAAiB;EACjB,gBAAgB;EAChB,eAAe;EACf,4CAA4C;EAC5C,gFAAgF;AAClF;;AAEA;EACE,6CAA6C;EAC7C,2BAA2B;AAC7B;;AAEA;EACE,UAAU;EACV,WAAW;EACX,kBAAkB;EAClB,mBAAmB;EACnB,cAAc;AAChB;;AAEA;EACE,eAAe;EACf,cAAc;EACd,eAAe;EACf,gBAAgB;EAChB,kBAAkB;AACpB;;AAEA;EACE,0BAA0B;EAC1B,gBAAgB;EAChB,uBAAuB;EACvB,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,mBAAmB;EACnB,4BAA4B;EAC5B,mBAAmB;AACrB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;;EAEE,4BAA4B;AAC9B;;AAEA;EACE,gBAAgB;EAChB,eAAe;AACjB;;AAEA;EACE,yCAAyC;EACzC,6CAA6C;AAC/C;;AAEA;;EAEE,WAAW;AACb;;AAEA;EACE,oBAAoB;EACpB,SAAS;EACT,oBAAoB;EACpB,kCAAkC;EAClC,6BAA6B;EAC7B,eAAe;AACjB;;AAEA;EACE,iCAAiC;EACjC,6BAA6B;AAC/B;;AAEA;EACE,YAAY;EACZ,6BAA6B;AAC/B;;AAEA;EACE,6BAA6B;AAC/B;;AAEA;EACE,6BAA6B;EAC7B,8BAA8B;EAC9B,cAAc;AAChB;;AAEA;EACE,6BAA6B;AAC/B;;AAEA;EACE,mBAAmB;EACnB,cAAc;EACd,eAAe;EACf,gBAAgB;AAClB;;AAEA;EACE,YAAY;EACZ,6BAA6B;AAC/B;;AAEA;EACE,kBAAkB;EAClB,cAAc;EACd,eAAe;EACf,gBAAgB;AAClB;;AAEA;EACE,aAAa;EACb,yBAAyB;EACzB,QAAQ;EACR,gBAAgB;AAClB;;AAEA;;EAEE,8BAA8B;EAC9B,4BAA4B;EAC5B,4BAA4B;EAC5B,cAAc;AAChB;AACA;EACE,gBAAgB;EAChB,SAAS;EACT,iBAAiB;EACjB,gBAAgB;AAClB;AAlNA;EACE,WAAW;EACX,oDAAoD;EACpD,+EAA+E;AACjF;;AAEA;EACE,mCAAmC;EACnC,iCAAiC;EACjC,qCAAqC;EACrC,gCAAgC;EAChC,kBAAkB;EAClB,aAAa;EACb,mBAAmB;EACnB,oBAAoB;EACpB,WAAW;EACX,iBAAiB;EACjB,gBAAgB;EAChB,gBAAgB;EAChB,iDAAiD;EACjD,8CAA8C;EAC9C,4CAA4C;AAC9C;;AAEA;EACE,aAAa;EACb,UAAU;EACV,YAAY;EACZ,uBAAuB;EACvB,4CAA4C;AAC9C;;AAEA;EACE,kBAAkB;EAClB,MAAM;EACN,QAAQ;EACR,UAAU;EACV,YAAY;EACZ,YAAY;EACZ,aAAa;EACb,aAAa;EACb,sBAAsB;EACtB,gBAAgB;EAChB,6CAA6C;AAC/C;;AAEA;EACE,cAAc;EACd,aAAa;EACb,YAAY;EACZ,gBAAgB;AAClB;;AAEA;EACE,sBAAsB;EACtB,aAAa;EACb,YAAY;AACd;;AAEA;EACE,UAAU;EACV,WAAW;EACX,kBAAkB;EAClB,UAAU;AACZ;;AAEA;EACE,iCAAiC;EACjC,WAAW;EACX,OAAO;EACP,WAAW;EACX,2CAA2C;EAC3C,0DAA0D;EAC1D,2DAA2D;AAC7D;;AAEA;EACE,uBAAuB;AACzB;;AAEA;EACE,SAAS;AACX;;AAEA;EACE,YAAY;EACZ,cAAc;EACd,eAAe;EACf,gBAAgB;EAChB,sBAAsB;AACxB;;AAEA;EACE,mBAAmB;EACnB,WAAW;AACb;;AAEA;EACE,YAAY;EACZ,mBAAmB;AACrB;;AAEA;EACE,cAAc;EACd,WAAW;EACX,YAAY;EACZ,aAAa;EACb,UAAU;EACV,SAAS;EACT,mBAAmB;AACrB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,uBAAuB;AACzB","file":"index.css","sourcesContent":[".schedule-calendar-shell {\n width: 100%;\n border-radius: var(--schedule-calendar-radius, 16px);\n box-shadow: var(--schedule-calendar-shadow, 0 18px 48px rgba(15, 23, 42, 0.08));\n}\n\n.schedule-calendar {\n --schedule-calendar-border: #eceef3;\n --schedule-calendar-surface: #fff;\n --schedule-calendar-panel-bg: #f2f3f6;\n --schedule-calendar-radius: 16px;\n position: relative;\n display: flex;\n flex-direction: row;\n align-items: stretch;\n width: 100%;\n min-height: 560px;\n max-height: 100%;\n overflow: hidden;\n border: 1px solid var(--schedule-calendar-border);\n border-radius: var(--schedule-calendar-radius);\n background: var(--schedule-calendar-surface);\n}\n\n.calendar-side {\n flex: 0 0 50%;\n width: 50%;\n min-width: 0;\n padding: 18px 22px 22px;\n background: var(--schedule-calendar-surface);\n}\n\n.panel-side {\n position: absolute;\n top: 0;\n right: 0;\n width: 50%;\n height: 100%;\n min-width: 0;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: var(--schedule-calendar-panel-bg);\n}\n\n.panel-side > * {\n flex: 1 1 auto;\n min-height: 0;\n height: 100%;\n overflow: hidden;\n}\n\n.schedule-calendar-stacked {\n flex-direction: column;\n min-height: 0;\n height: auto;\n}\n\n.schedule-calendar-stacked .calendar-side {\n flex: none;\n width: 100%;\n position: relative;\n z-index: 1;\n}\n\n.schedule-calendar-stacked .panel-side {\n top: var(--schedule-panel-top, 0);\n right: auto;\n left: 0;\n width: 100%;\n height: var(--schedule-panel-height, 560px);\n border-bottom-left-radius: var(--schedule-calendar-radius);\n border-bottom-right-radius: var(--schedule-calendar-radius);\n}\n\n.schedule-calendar :global(.ant-picker-calendar) {\n background: transparent;\n}\n\n.schedule-calendar :global(.ant-picker-calendar .ant-picker-panel) {\n border: 0;\n}\n\n.schedule-calendar :global(.ant-picker-calendar .ant-picker-content th) {\n height: 36px;\n color: #27272a;\n font-size: 12px;\n font-weight: 700;\n letter-spacing: 0.08em;\n}\n\n.schedule-calendar :global(.ant-picker-calendar .ant-picker-content) {\n table-layout: fixed;\n width: 100%;\n}\n\n.schedule-calendar :global(.ant-picker-calendar .ant-picker-cell) {\n padding: 3px;\n vertical-align: top;\n}\n\n.schedule-calendar :global(.ant-picker-calendar .ant-picker-cell-inner) {\n display: block;\n width: 100%;\n height: auto;\n min-height: 0;\n padding: 0;\n margin: 0;\n line-height: normal;\n}\n\n.schedule-calendar :global(.ant-picker-calendar .ant-picker-cell::before) {\n display: none;\n}\n\n.schedule-calendar :global(.ant-picker-cell-in-view.ant-picker-cell-selected) {\n background: transparent;\n}"]}
@@ -0,0 +1,115 @@
1
+ import { CSSProperties, FC, ReactNode } from 'react';
2
+
3
+ export type DateLike = string | Date;
4
+
5
+ export type CalendarMode = 'view' | 'schedule';
6
+
7
+ export type CalendarEvent = {
8
+ id: string | number;
9
+ title: string;
10
+ detail?: ReactNode;
11
+ date?: DateLike;
12
+ start: DateLike;
13
+ end: DateLike;
14
+ disabled?: boolean;
15
+ color?: string;
16
+ raw?: unknown;
17
+ onClick?: (event: CalendarEvent, ctx: { date: Date; mode: CalendarMode }) => void;
18
+ };
19
+
20
+ export type TimeSlot = {
21
+ key: string;
22
+ date: string;
23
+ start: Date;
24
+ end: Date;
25
+ status: 'free' | 'occupied' | 'disabled';
26
+ disabledReason?: ReactNode;
27
+ events: CalendarEvent[];
28
+ };
29
+
30
+ export type ScheduleDateTimeRuleContext = {
31
+ date: Date;
32
+ slot?: {
33
+ start: Date;
34
+ end: Date;
35
+ };
36
+ mode: CalendarMode;
37
+ };
38
+
39
+ export type ScheduleChangeInfo = {
40
+ source: 'date' | 'today';
41
+ };
42
+
43
+ export type CurrentChangeInfo = {
44
+ source: 'prevMonth' | 'nextMonth' | 'picker' | 'today';
45
+ };
46
+
47
+ export type SlotRangeChangeInfo = {
48
+ action: 'select' | 'clear';
49
+ };
50
+
51
+ export type ScheduleCalendarProps = {
52
+ mode?: CalendarMode;
53
+ locale?: 'zh-CN' | 'en-US' | string;
54
+ value?: DateLike;
55
+ defaultValue?: DateLike;
56
+ onChange?: (date: Date, info: ScheduleChangeInfo) => void;
57
+ onDateChange?: (date: Date, info: ScheduleChangeInfo) => void;
58
+ onEventClick?: (event: CalendarEvent, ctx: { date: Date; mode: CalendarMode }) => void;
59
+ current?: DateLike;
60
+ defaultCurrent?: DateLike;
61
+ onCurrentChange?: (date: Date, info: CurrentChangeInfo) => void;
62
+ events?: CalendarEvent[];
63
+ loading?: boolean;
64
+ disabledDate?: (date: Date) => boolean;
65
+ disabledDateTime?: (ctx: ScheduleDateTimeRuleContext) => boolean | { disabled?: boolean; reason?: ReactNode };
66
+ availableDateTime?: (ctx: ScheduleDateTimeRuleContext) => boolean;
67
+ badgeMaxCount?: number;
68
+ timeUnit?: number;
69
+ dayStart?: string;
70
+ dayEnd?: string;
71
+ allowMultiSelect?: boolean;
72
+ renderEventItem?: (event: CalendarEvent, ctx: { date: Date; mode: CalendarMode; onEventClick?: ScheduleCalendarProps['onEventClick'] }) => ReactNode;
73
+ renderDateCell?: (date: Date, ctx: { events: CalendarEvent[]; selected: boolean; currentMonth: boolean }) => ReactNode;
74
+ renderTimeSlot?: (slot: TimeSlot, ctx: { selected: boolean }) => ReactNode;
75
+ renderOccupiedSlot?: (slot: TimeSlot, ctx: { events: CalendarEvent[] }) => ReactNode;
76
+ renderPanelHeader?: (ctx: { date: Date; mode: CalendarMode; events: CalendarEvent[] }) => ReactNode;
77
+ formInner?: ReactNode;
78
+ formProps?: Record<string, unknown>;
79
+ defaultFormValues?: Record<string, unknown> | ((ctx: { date: Date; slots: TimeSlot[] }) => Record<string, unknown>);
80
+ onFreeSlotClick?: (slot: TimeSlot) => void;
81
+ onSlotRangeChange?: (slots: TimeSlot[], info: SlotRangeChangeInfo) => void;
82
+ onCreate?: (values: Record<string, unknown>, ctx: { date: Date; slots: TimeSlot[] }) => void | Promise<void>;
83
+ className?: string;
84
+ style?: CSSProperties;
85
+ stackAt?: number;
86
+ calendarProps?: Record<string, unknown>;
87
+ panelProps?: Record<string, unknown>;
88
+ };
89
+
90
+ export type GenerateTimeSlotsOptions = {
91
+ date: DateLike;
92
+ events?: CalendarEvent[];
93
+ timeUnit?: number;
94
+ dayStart?: string;
95
+ dayEnd?: string;
96
+ disabledDate?: (date: Date) => boolean;
97
+ disabledDateTime?: ScheduleCalendarProps['disabledDateTime'];
98
+ availableDateTime?: ScheduleCalendarProps['availableDateTime'];
99
+ mode?: CalendarMode;
100
+ };
101
+
102
+ export declare const ScheduleCalendar: FC<ScheduleCalendarProps>;
103
+ export declare const ReactCalendar: FC<ScheduleCalendarProps>;
104
+
105
+ export declare function groupEventsByDate(events: CalendarEvent[]): Record<string, CalendarEvent[]>;
106
+ export declare function generateTimeSlots(options: GenerateTimeSlotsOptions): TimeSlot[];
107
+ export declare function normalizeEvent(event: CalendarEvent): CalendarEvent & {
108
+ start: import('dayjs').Dayjs | null;
109
+ end: import('dayjs').Dayjs | null;
110
+ };
111
+ export declare function sortEventsByStart(events: CalendarEvent[]): CalendarEvent[];
112
+ export declare function dedupeEventsById(events: CalendarEvent[]): CalendarEvent[];
113
+
114
+ declare const _default: FC<ScheduleCalendarProps>;
115
+ export default _default;