rotion 3.4.2 → 3.5.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.
- package/README.ja.md +23 -1
- package/README.md +23 -1
- package/dist/ui/components/Calendar/Calendar.d.ts +5 -0
- package/dist/ui/components/Calendar/Calendar.types.d.ts +19 -0
- package/dist/ui/components/Calendar/CalendarCell/CalendarCell.d.ts +4 -0
- package/dist/ui/components/Calendar/CalendarCell/CalendarCell.types.d.ts +7 -0
- package/dist/ui/components/Calendar/CalendarCell/index.d.ts +2 -0
- package/dist/ui/components/Calendar/CalendarEvent/CalendarEvent.d.ts +4 -0
- package/dist/ui/components/Calendar/CalendarEvent/CalendarEvent.types.d.ts +10 -0
- package/dist/ui/components/Calendar/CalendarEvent/index.d.ts +2 -0
- package/dist/ui/components/Calendar/CalendarHeader/CalendarHeader.d.ts +4 -0
- package/dist/ui/components/Calendar/CalendarHeader/CalendarHeader.types.d.ts +8 -0
- package/dist/ui/components/Calendar/CalendarHeader/index.d.ts +2 -0
- package/dist/ui/components/Calendar/CalendarWeek/CalendarWeek.d.ts +4 -0
- package/dist/ui/components/Calendar/CalendarWeek/CalendarWeek.types.d.ts +20 -0
- package/dist/ui/components/Calendar/CalendarWeek/index.d.ts +2 -0
- package/dist/ui/components/Calendar/index.d.ts +2 -0
- package/dist/ui/components/Calendar/lib.d.ts +1 -0
- package/dist/ui/components/index.d.ts +5 -0
- package/dist/ui/esm/components/Calendar/Calendar.js +185 -0
- package/dist/ui/esm/components/Calendar/Calendar.js.map +1 -0
- package/dist/ui/esm/components/Calendar/Calendar.types.js +3 -0
- package/dist/ui/esm/components/Calendar/Calendar.types.js.map +1 -0
- package/dist/ui/esm/components/Calendar/CalendarCell/CalendarCell.js +18 -0
- package/dist/ui/esm/components/Calendar/CalendarCell/CalendarCell.js.map +1 -0
- package/dist/ui/esm/components/Calendar/CalendarCell/CalendarCell.types.js +3 -0
- package/dist/ui/esm/components/Calendar/CalendarCell/CalendarCell.types.js.map +1 -0
- package/dist/ui/esm/components/Calendar/CalendarCell/index.js +4 -0
- package/dist/ui/esm/components/Calendar/CalendarCell/index.js.map +1 -0
- package/dist/ui/esm/components/Calendar/CalendarEvent/CalendarEvent.js +103 -0
- package/dist/ui/esm/components/Calendar/CalendarEvent/CalendarEvent.js.map +1 -0
- package/dist/ui/esm/components/Calendar/CalendarEvent/CalendarEvent.types.js +3 -0
- package/dist/ui/esm/components/Calendar/CalendarEvent/CalendarEvent.types.js.map +1 -0
- package/dist/ui/esm/components/Calendar/CalendarEvent/index.js +4 -0
- package/dist/ui/esm/components/Calendar/CalendarEvent/index.js.map +1 -0
- package/dist/ui/esm/components/Calendar/CalendarHeader/CalendarHeader.js +34 -0
- package/dist/ui/esm/components/Calendar/CalendarHeader/CalendarHeader.js.map +1 -0
- package/dist/ui/esm/components/Calendar/CalendarHeader/CalendarHeader.types.js +3 -0
- package/dist/ui/esm/components/Calendar/CalendarHeader/CalendarHeader.types.js.map +1 -0
- package/dist/ui/esm/components/Calendar/CalendarHeader/index.js +4 -0
- package/dist/ui/esm/components/Calendar/CalendarHeader/index.js.map +1 -0
- package/dist/ui/esm/components/Calendar/CalendarWeek/CalendarWeek.js +38 -0
- package/dist/ui/esm/components/Calendar/CalendarWeek/CalendarWeek.js.map +1 -0
- package/dist/ui/esm/components/Calendar/CalendarWeek/CalendarWeek.types.js +3 -0
- package/dist/ui/esm/components/Calendar/CalendarWeek/CalendarWeek.types.js.map +1 -0
- package/dist/ui/esm/components/Calendar/CalendarWeek/index.js +4 -0
- package/dist/ui/esm/components/Calendar/CalendarWeek/index.js.map +1 -0
- package/dist/ui/esm/components/Calendar/index.js +4 -0
- package/dist/ui/esm/components/Calendar/index.js.map +1 -0
- package/dist/ui/esm/components/Calendar/lib.js +5 -0
- package/dist/ui/esm/components/Calendar/lib.js.map +1 -0
- package/dist/ui/esm/components/index.js +5 -0
- package/dist/ui/esm/components/index.js.map +1 -1
- package/dist/ui/index-without-dark.css +1 -1
- package/dist/ui/index.css +1 -1
- package/package.json +3 -3
package/README.ja.md
CHANGED
|
@@ -134,7 +134,7 @@ export default function MyPage({ blocks }) {
|
|
|
134
134
|
Notionデータベースをさまざまな形式で表示:
|
|
135
135
|
|
|
136
136
|
```tsx
|
|
137
|
-
import { Gallery, Table, List } from 'rotion/ui'
|
|
137
|
+
import { Gallery, Table, List, Calendar } from 'rotion/ui'
|
|
138
138
|
import { FetchDatabase } from 'rotion'
|
|
139
139
|
|
|
140
140
|
const db = await FetchDatabase({ database_id: 'YOUR_DATABASE_ID' })
|
|
@@ -147,6 +147,27 @@ const db = await FetchDatabase({ database_id: 'YOUR_DATABASE_ID' })
|
|
|
147
147
|
|
|
148
148
|
// リストビュー
|
|
149
149
|
<List db={db} keys={['Name', 'Tags']} />
|
|
150
|
+
|
|
151
|
+
// カレンダービュー
|
|
152
|
+
<Calendar db={db} date="Date" keys={['Name', 'Tags']} />
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
##### Calendar オプション
|
|
156
|
+
|
|
157
|
+
カレンダービューは月単位のグリッドを描画します。`start` と `end` を持つ複数日のイベントは、対象のセルにまたがる1本の帯としてレンダリングされ、週境界では帯が分割されて続きが描かれます。
|
|
158
|
+
|
|
159
|
+
```tsx
|
|
160
|
+
<Calendar
|
|
161
|
+
db={db}
|
|
162
|
+
date="Date" // 必須: 使用するdateプロパティ名
|
|
163
|
+
keys={['Name', 'Tags']} // イベント帯の中に表示するプロパティ
|
|
164
|
+
options={{
|
|
165
|
+
initialDate: '2026-04-01', // YYYY-MM-DD または YYYY-MM (既定: 今日)
|
|
166
|
+
weekStart: 'monday', // 'sunday' | 'monday' (既定: 'sunday')
|
|
167
|
+
locale: 'ja-JP', // navigator.language を上書き
|
|
168
|
+
href: { Name: '/blog/[id]' }, // 他のビューと同じ href/link/query API
|
|
169
|
+
}}
|
|
170
|
+
/>
|
|
150
171
|
```
|
|
151
172
|
|
|
152
173
|
主なエクスポート
|
|
@@ -165,6 +186,7 @@ const db = await FetchDatabase({ database_id: 'YOUR_DATABASE_ID' })
|
|
|
165
186
|
- `Gallery` - ギャラリービュー
|
|
166
187
|
- `Table` - テーブルビュー
|
|
167
188
|
- `List` - リストビュー
|
|
189
|
+
- `Calendar` - 月単位のカレンダービュー(指定したdateプロパティに従って予定を配置)
|
|
168
190
|
|
|
169
191
|
**ページとブロック:**
|
|
170
192
|
- `Page` - Notionページ全体を表示
|
package/README.md
CHANGED
|
@@ -133,7 +133,7 @@ export default function MyPage({ blocks }) {
|
|
|
133
133
|
Display Notion databases in different formats:
|
|
134
134
|
|
|
135
135
|
```tsx
|
|
136
|
-
import { Gallery, Table, List } from 'rotion/ui'
|
|
136
|
+
import { Gallery, Table, List, Calendar } from 'rotion/ui'
|
|
137
137
|
import { FetchDatabase } from 'rotion'
|
|
138
138
|
|
|
139
139
|
const db = await FetchDatabase({ database_id: 'YOUR_DATABASE_ID' })
|
|
@@ -146,6 +146,27 @@ const db = await FetchDatabase({ database_id: 'YOUR_DATABASE_ID' })
|
|
|
146
146
|
|
|
147
147
|
// List view
|
|
148
148
|
<List db={db} keys={['Name', 'Tags']} />
|
|
149
|
+
|
|
150
|
+
// Calendar view
|
|
151
|
+
<Calendar db={db} date="Date" keys={['Name', 'Tags']} />
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
##### Calendar options
|
|
155
|
+
|
|
156
|
+
Calendar view renders a monthly grid. Multi-day events (date properties with both `start` and `end`) are drawn as a single bar that spans the matching cells, with continuation across week boundaries.
|
|
157
|
+
|
|
158
|
+
```tsx
|
|
159
|
+
<Calendar
|
|
160
|
+
db={db}
|
|
161
|
+
date="Date" // required: name of the date property
|
|
162
|
+
keys={['Name', 'Tags']} // properties to render inside each event bar
|
|
163
|
+
options={{
|
|
164
|
+
initialDate: '2026-04-01', // YYYY-MM-DD or YYYY-MM (default: today)
|
|
165
|
+
weekStart: 'monday', // 'sunday' | 'monday' (default: 'sunday')
|
|
166
|
+
locale: 'ja-JP', // overrides navigator.language for labels
|
|
167
|
+
href: { Name: '/blog/[id]' }, // same href/link/query API as other views
|
|
168
|
+
}}
|
|
169
|
+
/>
|
|
149
170
|
```
|
|
150
171
|
|
|
151
172
|
Main Exports
|
|
@@ -164,6 +185,7 @@ Main Exports
|
|
|
164
185
|
- `Gallery` – Gallery view for databases
|
|
165
186
|
- `Table` – Table view for databases
|
|
166
187
|
- `List` – List view for databases
|
|
188
|
+
- `Calendar` – Monthly calendar view for databases (events placed on a date property)
|
|
167
189
|
|
|
168
190
|
**Page & Blocks:**
|
|
169
191
|
- `Page` – Renders a complete Notion page
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ParsedUrlQueryInput } from 'node:querystring';
|
|
2
|
+
import type { QueryDatabaseResponseEx } from '../../../exporter/index.js';
|
|
3
|
+
import type { Link } from '../types.js';
|
|
4
|
+
export interface CalendarProps {
|
|
5
|
+
keys: string[];
|
|
6
|
+
date: string;
|
|
7
|
+
db: QueryDatabaseResponseEx;
|
|
8
|
+
options?: CalendarOptions;
|
|
9
|
+
}
|
|
10
|
+
export interface CalendarOptions {
|
|
11
|
+
href?: {
|
|
12
|
+
[key: string]: string;
|
|
13
|
+
};
|
|
14
|
+
link?: Link;
|
|
15
|
+
query?: ParsedUrlQueryInput;
|
|
16
|
+
initialDate?: string;
|
|
17
|
+
weekStart?: 'sunday' | 'monday';
|
|
18
|
+
locale?: string;
|
|
19
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PageObjectResponseEx } from '../../../../exporter/index.js';
|
|
2
|
+
import type { CalendarOptions } from '../Calendar.types.js';
|
|
3
|
+
export interface CalendarEventProps {
|
|
4
|
+
page: PageObjectResponseEx;
|
|
5
|
+
keys: string[];
|
|
6
|
+
date: string;
|
|
7
|
+
options?: CalendarOptions;
|
|
8
|
+
continuationLeft?: boolean;
|
|
9
|
+
continuationRight?: boolean;
|
|
10
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { PageObjectResponseEx } from '../../../../exporter/index.js';
|
|
2
|
+
import type { CalendarOptions } from '../Calendar.types.js';
|
|
3
|
+
export interface PlacedEvent {
|
|
4
|
+
page: PageObjectResponseEx;
|
|
5
|
+
startCol: number;
|
|
6
|
+
span: number;
|
|
7
|
+
slot: number;
|
|
8
|
+
isStart: boolean;
|
|
9
|
+
isEnd: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface CalendarWeekProps {
|
|
12
|
+
weekStart: Date;
|
|
13
|
+
monthInView: number;
|
|
14
|
+
todayKey: string;
|
|
15
|
+
placed: PlacedEvent[];
|
|
16
|
+
slotCount: number;
|
|
17
|
+
keys: string[];
|
|
18
|
+
date: string;
|
|
19
|
+
options?: CalendarOptions;
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function dateKey(d: Date): string;
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
export * from './Calendar/index.js';
|
|
2
|
+
export * from './Calendar/CalendarCell/index.js';
|
|
3
|
+
export * from './Calendar/CalendarEvent/index.js';
|
|
4
|
+
export * from './Calendar/CalendarHeader/index.js';
|
|
5
|
+
export * from './Calendar/CalendarWeek/index.js';
|
|
1
6
|
export * from './Checkbox/index.js';
|
|
2
7
|
export * from './Gallery/GalleryCard/index.js';
|
|
3
8
|
export * from './Gallery/GalleryCheckboxField/index.js';
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useMemo, useState } from 'react';
|
|
4
|
+
import CalendarHeader from './CalendarHeader/CalendarHeader.js';
|
|
5
|
+
import CalendarWeek from './CalendarWeek/CalendarWeek.js';
|
|
6
|
+
import { dateKey } from './lib.js';
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
const WEEKDAYS_SUN = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
|
|
10
|
+
const WEEKDAYS_MON = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
|
|
11
|
+
const WEEKDAYS_SUN_JA = ['日', '月', '火', '水', '木', '金', '土'];
|
|
12
|
+
const WEEKDAYS_MON_JA = ['月', '火', '水', '木', '金', '土', '日'];
|
|
13
|
+
function detectLang(locale) {
|
|
14
|
+
return locale || (typeof navigator !== 'undefined' ? navigator.language : undefined);
|
|
15
|
+
}
|
|
16
|
+
function getWeekdayLabels(weekStart, locale) {
|
|
17
|
+
const lang = detectLang(locale);
|
|
18
|
+
try {
|
|
19
|
+
const formatter = new Intl.DateTimeFormat(lang, { weekday: 'short' });
|
|
20
|
+
const baseSunday = new Date(Date.UTC(2024, 0, 7));
|
|
21
|
+
const labels = Array.from({ length: 7 }, (_, i) => {
|
|
22
|
+
const d = new Date(baseSunday);
|
|
23
|
+
d.setUTCDate(baseSunday.getUTCDate() + i);
|
|
24
|
+
return formatter.format(d);
|
|
25
|
+
});
|
|
26
|
+
if (weekStart === 'monday') {
|
|
27
|
+
return [...labels.slice(1), labels[0]];
|
|
28
|
+
}
|
|
29
|
+
return labels;
|
|
30
|
+
}
|
|
31
|
+
catch (_a) {
|
|
32
|
+
const isJa = lang === null || lang === void 0 ? void 0 : lang.includes('ja');
|
|
33
|
+
if (weekStart === 'monday')
|
|
34
|
+
return isJa ? WEEKDAYS_MON_JA : WEEKDAYS_MON;
|
|
35
|
+
return isJa ? WEEKDAYS_SUN_JA : WEEKDAYS_SUN;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function parseInitialDate(initialDate) {
|
|
39
|
+
if (!initialDate)
|
|
40
|
+
return new Date();
|
|
41
|
+
const m = /^(\d{4})-(\d{2})(?:-(\d{2}))?/.exec(initialDate);
|
|
42
|
+
if (!m)
|
|
43
|
+
return new Date();
|
|
44
|
+
const year = Number.parseInt(m[1], 10);
|
|
45
|
+
const month = Number.parseInt(m[2], 10) - 1;
|
|
46
|
+
const day = m[3] ? Number.parseInt(m[3], 10) : 1;
|
|
47
|
+
return new Date(year, month, day);
|
|
48
|
+
}
|
|
49
|
+
function buildCalendarDays(year, month, weekStart) {
|
|
50
|
+
const firstOfMonth = new Date(year, month, 1);
|
|
51
|
+
const startOffset = weekStart === 'monday' ? (firstOfMonth.getDay() + 6) % 7 : firstOfMonth.getDay();
|
|
52
|
+
const start = new Date(year, month, 1 - startOffset);
|
|
53
|
+
const days = [];
|
|
54
|
+
for (let i = 0; i < 42; i++) {
|
|
55
|
+
days.push(new Date(start.getFullYear(), start.getMonth(), start.getDate() + i));
|
|
56
|
+
}
|
|
57
|
+
// Trim to 5 weeks if the 6th week is entirely in the next month
|
|
58
|
+
const sixthWeekStart = days[35];
|
|
59
|
+
if (sixthWeekStart && sixthWeekStart.getMonth() !== month) {
|
|
60
|
+
return days.slice(0, 35);
|
|
61
|
+
}
|
|
62
|
+
return days;
|
|
63
|
+
}
|
|
64
|
+
function dayDiff(a, b) {
|
|
65
|
+
const ms = new Date(a.getFullYear(), a.getMonth(), a.getDate()).getTime() - new Date(b.getFullYear(), b.getMonth(), b.getDate()).getTime();
|
|
66
|
+
return Math.round(ms / 86400000);
|
|
67
|
+
}
|
|
68
|
+
function getEventDateRange(page, dateKeyName) {
|
|
69
|
+
const property = page.properties[dateKeyName];
|
|
70
|
+
if (!property || property.type !== 'date' || !property.date) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
const startStr = property.date.start;
|
|
74
|
+
const endStr = property.date.end || property.date.start;
|
|
75
|
+
const start = parseDateOnly(startStr);
|
|
76
|
+
const end = parseDateOnly(endStr);
|
|
77
|
+
if (!(start && end))
|
|
78
|
+
return null;
|
|
79
|
+
return { start, end };
|
|
80
|
+
}
|
|
81
|
+
function parseDateOnly(s) {
|
|
82
|
+
// Accept either YYYY-MM-DD or full ISO; treat as local date (date-only).
|
|
83
|
+
const m = /^(\d{4})-(\d{2})-(\d{2})/.exec(s);
|
|
84
|
+
if (!m)
|
|
85
|
+
return null;
|
|
86
|
+
return new Date(Number.parseInt(m[1], 10), Number.parseInt(m[2], 10) - 1, Number.parseInt(m[3], 10));
|
|
87
|
+
}
|
|
88
|
+
function parseAllEvents(pages, dateKeyName) {
|
|
89
|
+
const list = [];
|
|
90
|
+
for (const page of pages) {
|
|
91
|
+
const range = getEventDateRange(page, dateKeyName);
|
|
92
|
+
if (!range)
|
|
93
|
+
continue;
|
|
94
|
+
list.push({ page, range });
|
|
95
|
+
}
|
|
96
|
+
list.sort((a, b) => {
|
|
97
|
+
const sd = a.range.start.getTime() - b.range.start.getTime();
|
|
98
|
+
if (sd !== 0)
|
|
99
|
+
return sd;
|
|
100
|
+
return b.range.end.getTime() - a.range.end.getTime();
|
|
101
|
+
});
|
|
102
|
+
return list;
|
|
103
|
+
}
|
|
104
|
+
function placeWeekEvents(weekStart, events) {
|
|
105
|
+
const weekEnd = new Date(weekStart.getFullYear(), weekStart.getMonth(), weekStart.getDate() + 6);
|
|
106
|
+
const occupancy = [];
|
|
107
|
+
const placed = [];
|
|
108
|
+
for (const { page, range } of events) {
|
|
109
|
+
if (range.end < weekStart || range.start > weekEnd)
|
|
110
|
+
continue;
|
|
111
|
+
const startCol = Math.max(0, dayDiff(range.start, weekStart));
|
|
112
|
+
const endCol = Math.min(6, dayDiff(range.end, weekStart));
|
|
113
|
+
const span = endCol - startCol + 1;
|
|
114
|
+
if (span <= 0)
|
|
115
|
+
continue;
|
|
116
|
+
let slot = 0;
|
|
117
|
+
while (true) {
|
|
118
|
+
if (!occupancy[slot])
|
|
119
|
+
occupancy[slot] = [false, false, false, false, false, false, false];
|
|
120
|
+
let free = true;
|
|
121
|
+
for (let c = startCol; c <= endCol; c++) {
|
|
122
|
+
if (occupancy[slot][c]) {
|
|
123
|
+
free = false;
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (free) {
|
|
128
|
+
for (let c = startCol; c <= endCol; c++) {
|
|
129
|
+
occupancy[slot][c] = true;
|
|
130
|
+
}
|
|
131
|
+
placed.push({
|
|
132
|
+
page,
|
|
133
|
+
startCol,
|
|
134
|
+
span,
|
|
135
|
+
slot,
|
|
136
|
+
isStart: dayDiff(range.start, weekStart) >= 0,
|
|
137
|
+
isEnd: dayDiff(range.end, weekStart) <= 6,
|
|
138
|
+
});
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
slot++;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return { placed, slotCount: occupancy.length };
|
|
145
|
+
}
|
|
146
|
+
const Calendar = ({ keys, date, db, options }) => {
|
|
147
|
+
const weekStart = (options === null || options === void 0 ? void 0 : options.weekStart) || 'sunday';
|
|
148
|
+
const initial = parseInitialDate(options === null || options === void 0 ? void 0 : options.initialDate);
|
|
149
|
+
const [cursor, setCursor] = useState({
|
|
150
|
+
year: initial.getFullYear(),
|
|
151
|
+
month: initial.getMonth(),
|
|
152
|
+
});
|
|
153
|
+
const today = new Date();
|
|
154
|
+
const days = useMemo(() => buildCalendarDays(cursor.year, cursor.month, weekStart), [cursor.year, cursor.month, weekStart]);
|
|
155
|
+
const parsedEvents = useMemo(() => parseAllEvents(db.results, date), [db.results, date]);
|
|
156
|
+
const weeks = useMemo(() => {
|
|
157
|
+
const result = [];
|
|
158
|
+
for (let i = 0; i < days.length; i += 7) {
|
|
159
|
+
const ws = days[i];
|
|
160
|
+
result.push({ weekStart: ws, placement: placeWeekEvents(ws, parsedEvents) });
|
|
161
|
+
}
|
|
162
|
+
return result;
|
|
163
|
+
}, [days, parsedEvents]);
|
|
164
|
+
const weekdayLabels = getWeekdayLabels(weekStart, options === null || options === void 0 ? void 0 : options.locale);
|
|
165
|
+
const goPrev = () => {
|
|
166
|
+
setCursor((c) => {
|
|
167
|
+
const next = new Date(c.year, c.month - 1, 1);
|
|
168
|
+
return { year: next.getFullYear(), month: next.getMonth() };
|
|
169
|
+
});
|
|
170
|
+
};
|
|
171
|
+
const goNext = () => {
|
|
172
|
+
setCursor((c) => {
|
|
173
|
+
const next = new Date(c.year, c.month + 1, 1);
|
|
174
|
+
return { year: next.getFullYear(), month: next.getMonth() };
|
|
175
|
+
});
|
|
176
|
+
};
|
|
177
|
+
const goToday = () => {
|
|
178
|
+
const now = new Date();
|
|
179
|
+
setCursor({ year: now.getFullYear(), month: now.getMonth() });
|
|
180
|
+
};
|
|
181
|
+
const todayKey = dateKey(today);
|
|
182
|
+
return (_jsxs("div", { className: "rotion-calendar", children: [_jsx(CalendarHeader, { year: cursor.year, month: cursor.month, locale: options === null || options === void 0 ? void 0 : options.locale, onPrev: goPrev, onNext: goNext, onToday: goToday }), _jsxs("div", { className: "rotion-calendar-grid", children: [_jsx("div", { className: "rotion-calendar-weekdays", children: weekdayLabels.map((label) => (_jsx("div", { className: "rotion-calendar-weekday", children: label }, label))) }), _jsx("div", { className: "rotion-calendar-days", children: weeks.map((w) => (_jsx(CalendarWeek, { weekStart: w.weekStart, monthInView: cursor.month, todayKey: todayKey, placed: w.placement.placed, slotCount: w.placement.slotCount, keys: keys, date: date, options: options }, dateKey(w.weekStart)))) })] })] }));
|
|
183
|
+
};
|
|
184
|
+
export default Calendar;
|
|
185
|
+
//# sourceMappingURL=Calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Calendar.js","sourceRoot":"","sources":["../../../../../../src/ui/components/Calendar/Calendar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Calendar.types.js","sourceRoot":"","sources":["../../../../../../src/ui/components/Calendar/Calendar.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
|
|
4
|
+
const CalendarCell = ({ year, month, day, inMonth, isToday }) => {
|
|
5
|
+
const dow = new Date(year, month, day).getDay();
|
|
6
|
+
const isWeekend = dow === 0 || dow === 6;
|
|
7
|
+
const className = [
|
|
8
|
+
'rotion-calendar-cell',
|
|
9
|
+
inMonth ? 'rotion-calendar-cell-in' : 'rotion-calendar-cell-out',
|
|
10
|
+
isToday ? 'rotion-calendar-cell-today' : '',
|
|
11
|
+
isWeekend ? 'rotion-calendar-cell-weekend' : '',
|
|
12
|
+
]
|
|
13
|
+
.filter(Boolean)
|
|
14
|
+
.join(' ');
|
|
15
|
+
return (_jsx("div", { className: className, "data-date": `${year}-${String(month + 1).padStart(2, '0')}-${String(day).padStart(2, '0')}`, children: _jsx("div", { className: "rotion-calendar-cell-day", children: day }) }));
|
|
16
|
+
};
|
|
17
|
+
export default CalendarCell;
|
|
18
|
+
//# sourceMappingURL=CalendarCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CalendarCell.js","sourceRoot":"","sources":["../../../../../../../src/ui/components/Calendar/CalendarCell/CalendarCell.tsx"],"names":[],"mappings":";AACA,OAAO,oBAAoB,CAAA;AAE3B,MAAM,YAAY,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAqB,EAAE,EAAE;IACjF,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAA;IAC/C,MAAM,SAAS,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAA;IAExC,MAAM,SAAS,GAAG;QAChB,sBAAsB;QACtB,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,0BAA0B;QAChE,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE;QAC3C,SAAS,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,EAAE;KAChD;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAA;IAEZ,OAAO,CACL,cAAK,SAAS,EAAE,SAAS,eAAa,GAAG,IAAI,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,YACnH,cAAK,SAAS,EAAC,0BAA0B,YAAE,GAAG,GAAO,GACjD,CACP,CAAA;AACH,CAAC,CAAA;AAED,eAAe,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CalendarCell.types.js","sourceRoot":"","sources":["../../../../../../../src/ui/components/Calendar/CalendarCell/CalendarCell.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/ui/components/Calendar/CalendarCell/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,CAAA"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { getLinkPathAndLinkKey, getSlug, richTextKey } from '../../lib.js';
|
|
4
|
+
import { RichText } from '../../RichText/index.js';
|
|
5
|
+
|
|
6
|
+
function findTitlePropertyName(page) {
|
|
7
|
+
for (const key in page.properties) {
|
|
8
|
+
const p = page.properties[key];
|
|
9
|
+
if (p.type === 'title') {
|
|
10
|
+
return key;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function renderIcon(page) {
|
|
15
|
+
if (!page.icon)
|
|
16
|
+
return null;
|
|
17
|
+
if (page.icon.type === 'emoji') {
|
|
18
|
+
return _jsx("span", { className: "rotion-calendar-event-emoji", children: page.icon.emoji });
|
|
19
|
+
}
|
|
20
|
+
if (page.icon.type === 'external' || page.icon.type === 'file') {
|
|
21
|
+
return _jsx("img", { className: "rotion-calendar-event-icon-img", src: page.icon.src, alt: "" });
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
function renderTitle(page, key) {
|
|
26
|
+
const property = page.properties[key];
|
|
27
|
+
if (!property || property.type !== 'title') {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
const text = property.title;
|
|
31
|
+
return (_jsx("span", { className: "rotion-calendar-event-title", children: text.map((t, i) => (_jsx(RichText, { textObject: t }, richTextKey(t.plain_text, i)))) }));
|
|
32
|
+
}
|
|
33
|
+
function renderProperty(page, key) {
|
|
34
|
+
const property = page.properties[key];
|
|
35
|
+
if (!property) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
switch (property.type) {
|
|
39
|
+
case 'select': {
|
|
40
|
+
const select = property.select;
|
|
41
|
+
if (!select)
|
|
42
|
+
return null;
|
|
43
|
+
return (_jsx("span", { className: `rotion-calendar-event-tag rotion-tag-${select.color}`, children: select.name }));
|
|
44
|
+
}
|
|
45
|
+
case 'multi_select': {
|
|
46
|
+
const items = property.multi_select;
|
|
47
|
+
if (!(items === null || items === void 0 ? void 0 : items.length))
|
|
48
|
+
return null;
|
|
49
|
+
return (_jsx("span", { className: "rotion-calendar-event-tags", children: items.map((s) => (_jsx("span", { className: `rotion-calendar-event-tag rotion-tag-${s.color}`, children: s.name }, s.id))) }));
|
|
50
|
+
}
|
|
51
|
+
case 'rich_text': {
|
|
52
|
+
const text = property.rich_text;
|
|
53
|
+
if (!(text === null || text === void 0 ? void 0 : text.length))
|
|
54
|
+
return null;
|
|
55
|
+
return (_jsx("span", { className: "rotion-calendar-event-text", children: text.map((t, i) => (_jsx(RichText, { textObject: t }, richTextKey(t.plain_text, i)))) }));
|
|
56
|
+
}
|
|
57
|
+
default:
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const CalendarEvent = ({ page, keys, date, options, continuationLeft, continuationRight }) => {
|
|
62
|
+
const titleKey = findTitlePropertyName(page);
|
|
63
|
+
const { href, link, query } = options || {};
|
|
64
|
+
let pathname;
|
|
65
|
+
if (titleKey && (href === null || href === void 0 ? void 0 : href[titleKey])) {
|
|
66
|
+
const [path, slugKey] = getLinkPathAndLinkKey(href[titleKey]);
|
|
67
|
+
pathname = slugKey === '' ? path : `${path}${getSlug(slugKey, page)}`;
|
|
68
|
+
}
|
|
69
|
+
const className = [
|
|
70
|
+
'rotion-calendar-event',
|
|
71
|
+
pathname ? 'rotion-calendar-event-link' : '',
|
|
72
|
+
continuationLeft ? 'rotion-calendar-event-cont-left' : '',
|
|
73
|
+
continuationRight ? 'rotion-calendar-event-cont-right' : '',
|
|
74
|
+
]
|
|
75
|
+
.filter(Boolean)
|
|
76
|
+
.join(' ');
|
|
77
|
+
const renderedKeys = keys.includes(titleKey || '') || !titleKey ? keys : [titleKey, ...keys];
|
|
78
|
+
const body = (_jsxs(_Fragment, { children: [page.icon && _jsx("span", { className: "rotion-calendar-event-icon", children: renderIcon(page) }), _jsx("span", { className: "rotion-calendar-event-body", children: renderedKeys.map((name) => {
|
|
79
|
+
if (name === date)
|
|
80
|
+
return null;
|
|
81
|
+
if (name === titleKey) {
|
|
82
|
+
return _jsx("span", { children: renderTitle(page, name) }, name);
|
|
83
|
+
}
|
|
84
|
+
const rendered = renderProperty(page, name);
|
|
85
|
+
if (!rendered)
|
|
86
|
+
return null;
|
|
87
|
+
return _jsx("span", { children: rendered }, name);
|
|
88
|
+
}) })] }));
|
|
89
|
+
if (pathname && link && query) {
|
|
90
|
+
const L = link;
|
|
91
|
+
return (_jsx(L, { className: className, href: { pathname, query }, children: body }));
|
|
92
|
+
}
|
|
93
|
+
if (pathname && link) {
|
|
94
|
+
const L = link;
|
|
95
|
+
return (_jsx(L, { className: className, href: pathname, children: body }));
|
|
96
|
+
}
|
|
97
|
+
if (pathname) {
|
|
98
|
+
return (_jsx("a", { className: className, href: pathname, children: body }));
|
|
99
|
+
}
|
|
100
|
+
return _jsx("div", { className: className, children: body });
|
|
101
|
+
};
|
|
102
|
+
export default CalendarEvent;
|
|
103
|
+
//# sourceMappingURL=CalendarEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CalendarEvent.js","sourceRoot":"","sources":["../../../../../../../src/ui/components/Calendar/CalendarEvent/CalendarEvent.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CalendarEvent.types.js","sourceRoot":"","sources":["../../../../../../../src/ui/components/Calendar/CalendarEvent/CalendarEvent.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/ui/components/Calendar/CalendarEvent/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,CAAA"}
|