@bimetal/calendar-svelte-components 0.30.0 → 0.32.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/dist/components/Calendar.svelte +63 -30
- package/dist/components/Calendar.svelte.d.ts +14 -2
- package/dist/components/Calendar.svelte.d.ts.map +1 -1
- package/dist/components/CalendarHeader.svelte +10 -10
- package/dist/components/CategoryFilter.svelte +2 -2
- package/dist/components/EventBar.svelte +10 -12
- package/dist/components/EventDialog.svelte +50 -50
- package/dist/components/EventHistory.svelte +17 -21
- package/dist/components/EventHistory.svelte.d.ts.map +1 -1
- package/dist/components/ResourceFilter.svelte +2 -2
- package/dist/components/UndoToast.svelte +5 -5
- package/dist/views/agenda/AgendaEvent.svelte +6 -6
- package/dist/views/agenda/AgendaView.svelte +9 -9
- package/dist/views/day/AllDayEvent.svelte +1 -1
- package/dist/views/day/DayView.svelte +16 -16
- package/dist/views/month/MonthView.svelte +4 -4
- package/dist/views/month/TimedEntry.svelte +4 -4
- package/dist/views/month/WeekRow.svelte +13 -13
- package/dist/views/resource/ResourceView.svelte +18 -18
- package/dist/views/timeline/TimelineView.svelte +13 -13
- package/dist/views/week/AllDayRow.svelte +3 -3
- package/dist/views/week/TimeEvent.svelte +5 -7
- package/dist/views/week/WeekView.svelte +15 -15
- package/dist/views/year/YearView.svelte +12 -12
- package/package.json +9 -8
|
@@ -120,14 +120,14 @@
|
|
|
120
120
|
|
|
121
121
|
function handleGridClick(e: MouseEvent) {
|
|
122
122
|
if (!click.accept(config.clickThresholdMs)) return;
|
|
123
|
-
if ((e.target as HTMLElement).closest('.time-event')) return;
|
|
123
|
+
if ((e.target as HTMLElement).closest('.bm-cal-time-event')) return;
|
|
124
124
|
// Single click on empty grid deselects; create-dialog moves to dblclick.
|
|
125
125
|
if (ctx.selectedEventId !== null) ctx.onClearSelection();
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
function handleGridDoubleClick(e: MouseEvent) {
|
|
129
129
|
if (!click.accept(config.clickThresholdMs)) return;
|
|
130
|
-
if ((e.target as HTMLElement).closest('.time-event')) return;
|
|
130
|
+
if ((e.target as HTMLElement).closest('.bm-cal-time-event')) return;
|
|
131
131
|
if (!gridInnerEl) return;
|
|
132
132
|
const gridRect = gridInnerEl.getBoundingClientRect();
|
|
133
133
|
const hit = timeGridHit({ x: e.clientX, y: e.clientY }, gridRect, { labelWidth: DEFAULT_TIME_LABEL_WIDTH_WEEK, hourHeight: DEFAULT_HOUR_HEIGHT, snapMinutes: timeSnapMinutes });
|
|
@@ -139,15 +139,15 @@
|
|
|
139
139
|
}
|
|
140
140
|
</script>
|
|
141
141
|
|
|
142
|
-
<div class="week
|
|
142
|
+
<div class="bm-cal-week">
|
|
143
143
|
<!-- Header -->
|
|
144
|
-
<div class="
|
|
145
|
-
<div class="
|
|
144
|
+
<div class="bm-cal-week__header">
|
|
145
|
+
<div class="bm-cal-week__corner">{config.locale.calendarWeek} {weekNumber}</div>
|
|
146
146
|
{#each weekDates as date, i (i)}
|
|
147
147
|
{@const isToday = isSameDay(date, currentNow)}
|
|
148
|
-
<div class="
|
|
149
|
-
<span class="
|
|
150
|
-
<span class="
|
|
148
|
+
<div class="bm-cal-week__day-header{isToday ? ' bm-cal-week__day-header--today' : ''}">
|
|
149
|
+
<span class="bm-cal-week__day-name">{config.locale.dayNamesShort[i]}</span>
|
|
150
|
+
<span class="bm-cal-week__day-number{isToday ? ' bm-cal-week__day-number--today' : ''}">
|
|
151
151
|
{getDayOfMonth(date)}
|
|
152
152
|
</span>
|
|
153
153
|
</div>
|
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
<!-- Time grid -->
|
|
161
161
|
<div
|
|
162
162
|
bind:this={timeGridEl}
|
|
163
|
-
class="
|
|
163
|
+
class="bm-cal-week__time-grid"
|
|
164
164
|
role="grid"
|
|
165
165
|
tabindex="0"
|
|
166
166
|
ondragover={handleGridDragOver}
|
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
>
|
|
174
174
|
<div
|
|
175
175
|
bind:this={gridInnerEl}
|
|
176
|
-
class="
|
|
176
|
+
class="bm-cal-week__time-grid-inner"
|
|
177
177
|
style="height: {24 * DEFAULT_HOUR_HEIGHT}px;"
|
|
178
178
|
>
|
|
179
179
|
<!-- Hour rows -->
|
|
@@ -181,10 +181,10 @@
|
|
|
181
181
|
{@const wh = config.core.workingHours}
|
|
182
182
|
{@const isOff = wh ? (hr < wh.start || hr >= wh.end) : false}
|
|
183
183
|
<div
|
|
184
|
-
class="
|
|
184
|
+
class="bm-cal-week__hour-row{isOff ? ' bm-cal__hour-slot--off' : ''}"
|
|
185
185
|
style="top: {hr * DEFAULT_HOUR_HEIGHT}px; height: {DEFAULT_HOUR_HEIGHT}px;"
|
|
186
186
|
>
|
|
187
|
-
<div class="
|
|
187
|
+
<div class="bm-cal-week__hour-label">
|
|
188
188
|
{hr > 0 ? `${String(hr).padStart(2, '0')}:00` : ''}
|
|
189
189
|
</div>
|
|
190
190
|
</div>
|
|
@@ -193,7 +193,7 @@
|
|
|
193
193
|
<!-- Day columns -->
|
|
194
194
|
{#each weekDates as _, col (col)}
|
|
195
195
|
<div
|
|
196
|
-
class="
|
|
196
|
+
class="bm-cal-week__day-col"
|
|
197
197
|
style="left: calc({DEFAULT_TIME_LABEL_WIDTH_WEEK}px + {col} * (100% - {DEFAULT_TIME_LABEL_WIDTH_WEEK}px) / 7); width: calc((100% - {DEFAULT_TIME_LABEL_WIDTH_WEEK}px) / 7);"
|
|
198
198
|
></div>
|
|
199
199
|
{/each}
|
|
@@ -221,10 +221,10 @@
|
|
|
221
221
|
<!-- Now line -->
|
|
222
222
|
{#if nowCol >= 0}
|
|
223
223
|
<div
|
|
224
|
-
class="
|
|
224
|
+
class="bm-cal-week__now-line"
|
|
225
225
|
style="top: {nowHours * DEFAULT_HOUR_HEIGHT}px; left: calc({DEFAULT_TIME_LABEL_WIDTH_WEEK}px + {nowCol} * (100% - {DEFAULT_TIME_LABEL_WIDTH_WEEK}px) / 7); width: calc((100% - {DEFAULT_TIME_LABEL_WIDTH_WEEK}px) / 7);"
|
|
226
226
|
>
|
|
227
|
-
<div class="
|
|
227
|
+
<div class="bm-cal-week__now-dot"></div>
|
|
228
228
|
</div>
|
|
229
229
|
{/if}
|
|
230
230
|
</div>
|
|
@@ -51,22 +51,22 @@
|
|
|
51
51
|
}
|
|
52
52
|
</script>
|
|
53
53
|
|
|
54
|
-
<div class="year
|
|
54
|
+
<div class="bm-cal-year">
|
|
55
55
|
{#each months as { month, label, weeks } (month)}
|
|
56
|
-
<div class="year-month">
|
|
56
|
+
<div class="bm-cal-year-month">
|
|
57
57
|
{#if onMonthClick}
|
|
58
|
-
<button type="button" class="year-month__header" onclick={() => onMonthClick?.(year, month)}>
|
|
58
|
+
<button type="button" class="bm-cal-year-month__header" onclick={() => onMonthClick?.(year, month)}>
|
|
59
59
|
{label}
|
|
60
60
|
</button>
|
|
61
61
|
{:else}
|
|
62
|
-
<div class="year-month__header">{label}</div>
|
|
62
|
+
<div class="bm-cal-year-month__header">{label}</div>
|
|
63
63
|
{/if}
|
|
64
|
-
<div class="year-month__day-headers">
|
|
64
|
+
<div class="bm-cal-year-month__day-headers">
|
|
65
65
|
{#each config.locale.dayNamesShort as n (n)}
|
|
66
|
-
<div class="year-month__day-header">{n[0]}</div>
|
|
66
|
+
<div class="bm-cal-year-month__day-header">{n[0]}</div>
|
|
67
67
|
{/each}
|
|
68
68
|
</div>
|
|
69
|
-
<div class="year-month__days">
|
|
69
|
+
<div class="bm-cal-year-month__days">
|
|
70
70
|
{#each weeks as week, wIdx (wIdx)}
|
|
71
71
|
{#each week as date (date.epochMs)}
|
|
72
72
|
{@const inMonth = getMonth(date) === month}
|
|
@@ -75,14 +75,14 @@
|
|
|
75
75
|
<button
|
|
76
76
|
type="button"
|
|
77
77
|
class={
|
|
78
|
-
'year-month__day'
|
|
79
|
-
+ (inMonth ? '' : ' year-month__day--outside')
|
|
80
|
-
+ (isToday ? ' year-month__day--today' : '')
|
|
81
|
-
+ (hasEvents ? ' year-month__day--has-events' : '')
|
|
78
|
+
'bm-cal-year-month__day'
|
|
79
|
+
+ (inMonth ? '' : ' bm-cal-year-month__day--outside')
|
|
80
|
+
+ (isToday ? ' bm-cal-year-month__day--today' : '')
|
|
81
|
+
+ (hasEvents ? ' bm-cal-year-month__day--has-events' : '')
|
|
82
82
|
}
|
|
83
83
|
onclick={(e) => dayClick(e, date)}
|
|
84
84
|
>
|
|
85
|
-
<span class="year-month__day-num">{getDayOfMonth(date)}</span>
|
|
85
|
+
<span class="bm-cal-year-month__day-num">{getDayOfMonth(date)}</span>
|
|
86
86
|
</button>
|
|
87
87
|
{/each}
|
|
88
88
|
{/each}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bimetal/calendar-svelte-components",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.32.0",
|
|
4
4
|
"description": "Default Svelte 5 calendar UI components",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"svelte": "./dist/index.js",
|
|
@@ -27,13 +27,14 @@
|
|
|
27
27
|
"prepublishOnly": "npm run build"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@bimetal/svelte": "^0.
|
|
31
|
-
"@bimetal/core": "^0.
|
|
32
|
-
"@bimetal/calendar-core": "^0.
|
|
33
|
-
"@bimetal/calendar-data": "^0.
|
|
34
|
-
"@bimetal/calendar-headless": "^0.
|
|
35
|
-
"@bimetal/
|
|
36
|
-
"@bimetal/calendar-
|
|
30
|
+
"@bimetal/svelte": "^0.32.0",
|
|
31
|
+
"@bimetal/core": "^0.32.0",
|
|
32
|
+
"@bimetal/calendar-core": "^0.32.0",
|
|
33
|
+
"@bimetal/calendar-data": "^0.32.0",
|
|
34
|
+
"@bimetal/calendar-headless": "^0.32.0",
|
|
35
|
+
"@bimetal/a11y-dom": "^0.32.0",
|
|
36
|
+
"@bimetal/calendar-rules": "^0.32.0",
|
|
37
|
+
"@bimetal/calendar-themes": "^0.32.0"
|
|
37
38
|
},
|
|
38
39
|
"peerDependencies": {
|
|
39
40
|
"svelte": "^5.46.4"
|