@event-calendar/core 5.0.0 → 5.0.1
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.md +2 -2
- package/dist/index.css +16 -7
- package/dist/index.js +187 -97
- package/package.json +2 -2
- package/src/plugins/interaction/Action.svelte +18 -11
- package/src/plugins/resource-time-grid/View.svelte +29 -13
- package/src/plugins/resource-time-grid/index.js +1 -0
- package/src/plugins/time-grid/NowIndicator.svelte +7 -4
- package/src/plugins/time-grid/View.svelte +9 -7
- package/src/storage/stores.js +3 -3
- package/src/styles/sidebar.css +4 -3
- package/src/styles/toolbar.css +11 -3
package/README.md
CHANGED
|
@@ -245,8 +245,8 @@ This bundle contains a version of the calendar that includes all plugins and is
|
|
|
245
245
|
|
|
246
246
|
The first step is to include the following lines of code in the `<head>` section of your page:
|
|
247
247
|
```html
|
|
248
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@event-calendar/build@5.0.
|
|
249
|
-
<script src="https://cdn.jsdelivr.net/npm/@event-calendar/build@5.0.
|
|
248
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@event-calendar/build@5.0.1/dist/event-calendar.min.css">
|
|
249
|
+
<script src="https://cdn.jsdelivr.net/npm/@event-calendar/build@5.0.1/dist/event-calendar.min.js"></script>
|
|
250
250
|
```
|
|
251
251
|
|
|
252
252
|
<details>
|
package/dist/index.css
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* EventCalendar v5.0.
|
|
2
|
+
* EventCalendar v5.0.1
|
|
3
3
|
* https://github.com/vkurko/calendar
|
|
4
4
|
*/
|
|
5
5
|
.ec {
|
|
@@ -213,7 +213,7 @@
|
|
|
213
213
|
}
|
|
214
214
|
.ec-icon {
|
|
215
215
|
display: inline-block;
|
|
216
|
-
|
|
216
|
+
inline-size: 1em;
|
|
217
217
|
|
|
218
218
|
&.ec-prev:after,
|
|
219
219
|
&.ec-next:after {
|
|
@@ -227,11 +227,19 @@
|
|
|
227
227
|
}
|
|
228
228
|
|
|
229
229
|
&.ec-prev:after {
|
|
230
|
-
|
|
230
|
+
inset-inline-start: 3px;
|
|
231
|
+
rotate: -135deg;
|
|
232
|
+
}
|
|
233
|
+
[dir="rtl"] &.ec-prev:after {
|
|
234
|
+
rotate: 135deg;
|
|
231
235
|
}
|
|
232
236
|
|
|
233
237
|
&.ec-next:after {
|
|
234
|
-
|
|
238
|
+
inset-inline-start: -3px;
|
|
239
|
+
rotate: 45deg;
|
|
240
|
+
}
|
|
241
|
+
[dir="rtl"] &.ec-next:after {
|
|
242
|
+
rotate: -45deg;
|
|
235
243
|
}
|
|
236
244
|
}
|
|
237
245
|
.ec-sidebar {
|
|
@@ -281,14 +289,15 @@
|
|
|
281
289
|
min-block-size: 1.5em;
|
|
282
290
|
}
|
|
283
291
|
.ec-expander {
|
|
284
|
-
|
|
285
|
-
|
|
292
|
+
inline-size: 1.25em;
|
|
293
|
+
margin-inline-end: .25em;
|
|
294
|
+
margin-block-start: -1px;
|
|
286
295
|
|
|
287
296
|
.ec-button {
|
|
288
297
|
line-height: normal;
|
|
289
298
|
padding: 0;
|
|
290
299
|
aspect-ratio: 1;
|
|
291
|
-
|
|
300
|
+
block-size: 1.25em;
|
|
292
301
|
}
|
|
293
302
|
}
|
|
294
303
|
.ec-slot {
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* EventCalendar v5.0.
|
|
2
|
+
* EventCalendar v5.0.1
|
|
3
3
|
* https://github.com/vkurko/calendar
|
|
4
4
|
*/
|
|
5
5
|
import { tick, getContext, untrack, setContext, onMount, mount, unmount } from "svelte";
|
|
@@ -1025,8 +1025,9 @@ function filteredEvents(state) {
|
|
|
1025
1025
|
let [$_events, $eventFilter, $eventOrder, $filterEventsWithResources, $resources] = values;
|
|
1026
1026
|
let result = [...$_events];
|
|
1027
1027
|
if (isFunction($eventFilter)) {
|
|
1028
|
-
|
|
1029
|
-
|
|
1028
|
+
let events2 = $_events.map(toEventWithLocalDates);
|
|
1029
|
+
result = result.filter((event, index2) => $eventFilter({
|
|
1030
|
+
event: toEventWithLocalDates(event),
|
|
1030
1031
|
index: index2,
|
|
1031
1032
|
events: events2,
|
|
1032
1033
|
view: view2
|
|
@@ -2761,7 +2762,7 @@ function Action($$anchor, $$props) {
|
|
|
2761
2762
|
let toX;
|
|
2762
2763
|
let toY;
|
|
2763
2764
|
let gridEl;
|
|
2764
|
-
let
|
|
2765
|
+
let allDaySlot;
|
|
2765
2766
|
let delta;
|
|
2766
2767
|
let allDay;
|
|
2767
2768
|
let iClass;
|
|
@@ -2873,7 +2874,7 @@ function Action($$anchor, $$props) {
|
|
|
2873
2874
|
fromY = toY = jsEvent.clientY;
|
|
2874
2875
|
let dayEl = getElementWithPayload(toX, toY);
|
|
2875
2876
|
({ allDay, date, resource } = getPayload(dayEl)(toX, toY));
|
|
2876
|
-
|
|
2877
|
+
allDaySlot = $_mainEl() !== ancestor(dayEl, 3);
|
|
2877
2878
|
gridEl = ancestor(dayEl, 1);
|
|
2878
2879
|
calcViewport();
|
|
2879
2880
|
if (jsEvent.pointerType !== "mouse") {
|
|
@@ -2960,19 +2961,19 @@ function Action($$anchor, $$props) {
|
|
|
2960
2961
|
let thresholdX = 24;
|
|
2961
2962
|
animate(() => {
|
|
2962
2963
|
if (viewport) {
|
|
2963
|
-
if (
|
|
2964
|
+
if (!allDaySlot) {
|
|
2964
2965
|
if (toY < viewport.top + thresholdY) {
|
|
2965
2966
|
$.store_mutate(_mainEl, $.untrack($_mainEl).scrollTop += max(-8, (toY - viewport.top - thresholdY) / 3), $.untrack($_mainEl));
|
|
2966
2967
|
}
|
|
2967
2968
|
if (toY > viewport.bottom - thresholdY) {
|
|
2968
2969
|
$.store_mutate(_mainEl, $.untrack($_mainEl).scrollTop += min(8, (toY - viewport.bottom + thresholdY) / 3), $.untrack($_mainEl));
|
|
2969
2970
|
}
|
|
2970
|
-
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
2975
|
-
|
|
2971
|
+
}
|
|
2972
|
+
if (toX < viewport.left + thresholdX) {
|
|
2973
|
+
$.store_mutate(_mainEl, $.untrack($_mainEl).scrollLeft += max(-8, (toX - viewport.left - thresholdX) / 3), $.untrack($_mainEl));
|
|
2974
|
+
}
|
|
2975
|
+
if (toX > viewport.right - thresholdX) {
|
|
2976
|
+
$.store_mutate(_mainEl, $.untrack($_mainEl).scrollLeft += min(8, (toX - viewport.right + thresholdX) / 3), $.untrack($_mainEl));
|
|
2976
2977
|
}
|
|
2977
2978
|
if (toY < thresholdY) {
|
|
2978
2979
|
window.scrollBy(0, max(-8, (toY - thresholdY) / 3));
|
|
@@ -3077,6 +3078,13 @@ function Action($$anchor, $$props) {
|
|
|
3077
3078
|
return findPayload(dayEl.previousElementSibling);
|
|
3078
3079
|
}
|
|
3079
3080
|
} else {
|
|
3081
|
+
if (selecting() && payload.resource && !$_iEvents()[0].resourceIds.includes(payload.resource.id)) {
|
|
3082
|
+
if (toX > fromX) {
|
|
3083
|
+
return findPayload(dayEl.previousElementSibling);
|
|
3084
|
+
} else {
|
|
3085
|
+
return findPayload(dayEl.nextElementSibling);
|
|
3086
|
+
}
|
|
3087
|
+
}
|
|
3080
3088
|
return payload;
|
|
3081
3089
|
}
|
|
3082
3090
|
}
|
|
@@ -3088,8 +3096,8 @@ function Action($$anchor, $$props) {
|
|
|
3088
3096
|
viewport = {
|
|
3089
3097
|
left: max(0, gridRect.left + $_mainEl().scrollLeft),
|
|
3090
3098
|
right: min(document.documentElement.clientWidth, mainRect.left + $_mainEl().clientWidth) - 2,
|
|
3091
|
-
top: max(0, gridRect.top + (
|
|
3092
|
-
bottom: min(document.documentElement.clientHeight,
|
|
3099
|
+
top: max(0, gridRect.top + (!allDaySlot ? $_mainEl().scrollTop : 0)),
|
|
3100
|
+
bottom: min(document.documentElement.clientHeight, !allDaySlot ? mainRect.top + $_mainEl().clientHeight : gridRect.bottom) - 2
|
|
3093
3101
|
};
|
|
3094
3102
|
}
|
|
3095
3103
|
function createIEvent(jsEvent, callback) {
|
|
@@ -4179,14 +4187,14 @@ var root_1$3 = $.from_html(`<div></div>`);
|
|
|
4179
4187
|
function NowIndicator$1($$anchor, $$props) {
|
|
4180
4188
|
$.push($$props, true);
|
|
4181
4189
|
const $_today = () => $.store_get(_today, "$_today", $$stores);
|
|
4182
|
-
const $slotDuration = () => $.store_get(slotDuration, "$slotDuration", $$stores);
|
|
4183
4190
|
const $_now = () => $.store_get(_now, "$_now", $$stores);
|
|
4191
|
+
const $slotDuration = () => $.store_get(slotDuration, "$slotDuration", $$stores);
|
|
4184
4192
|
const $slotHeight = () => $.store_get(slotHeight, "$slotHeight", $$stores);
|
|
4185
4193
|
const $_mainEl = () => $.store_get(_mainEl, "$_mainEl", $$stores);
|
|
4186
4194
|
const $_sidebarWidth = () => $.store_get(_sidebarWidth, "$_sidebarWidth", $$stores);
|
|
4187
4195
|
const $theme = () => $.store_get(theme, "$theme", $$stores);
|
|
4188
4196
|
const [$$stores, $$cleanup] = $.setup_stores();
|
|
4189
|
-
let
|
|
4197
|
+
let span = $.prop($$props, "span", 3, 1);
|
|
4190
4198
|
let {
|
|
4191
4199
|
_mainEl,
|
|
4192
4200
|
_now,
|
|
@@ -4203,8 +4211,11 @@ function NowIndicator$1($$anchor, $$props) {
|
|
|
4203
4211
|
}
|
|
4204
4212
|
}
|
|
4205
4213
|
return {};
|
|
4206
|
-
}), gridColumn = $.derived(() => $.get($$d).gridColumn), start = $.derived(() => $.get($$d).start);
|
|
4214
|
+
}), gridColumn = $.derived(() => $.get($$d).gridColumn), start = $.derived(() => $.get($$d).start), end = $.derived(() => $.get($$d).end);
|
|
4207
4215
|
let top = $.derived(() => {
|
|
4216
|
+
if ($_now() < $.get(start) || $_now() > $.get(end)) {
|
|
4217
|
+
return null;
|
|
4218
|
+
}
|
|
4208
4219
|
let step = toSeconds($slotDuration());
|
|
4209
4220
|
return ($_now() - $.get(start)) / 1e3 / step * $slotHeight();
|
|
4210
4221
|
});
|
|
@@ -4226,14 +4237,14 @@ function NowIndicator$1($$anchor, $$props) {
|
|
|
4226
4237
|
$.template_effect(() => {
|
|
4227
4238
|
$.set_class(div, 1, $theme().nowIndicator);
|
|
4228
4239
|
styles = $.set_style(div, "", styles, {
|
|
4229
|
-
"grid-column": `${$.get(gridColumn) + 1}
|
|
4240
|
+
"grid-column": `${$.get(gridColumn) + 1} / span ${span() ?? ""}`,
|
|
4230
4241
|
"inset-block-start": `${$.get(top) ?? ""}px`
|
|
4231
4242
|
});
|
|
4232
4243
|
});
|
|
4233
4244
|
$.append($$anchor2, div);
|
|
4234
4245
|
};
|
|
4235
4246
|
$.if(node, ($$render) => {
|
|
4236
|
-
if ($.get(gridColumn)) $$render(consequent);
|
|
4247
|
+
if ($.get(gridColumn) && $.get(top) !== null) $$render(consequent);
|
|
4237
4248
|
});
|
|
4238
4249
|
}
|
|
4239
4250
|
$.append($$anchor, fragment);
|
|
@@ -4262,7 +4273,7 @@ function View$1($$anchor, $$props) {
|
|
|
4262
4273
|
const $_sidebarWidth = () => $.store_get(_sidebarWidth, "$_sidebarWidth", $$stores);
|
|
4263
4274
|
const $allDaySlot = () => $.store_get(allDaySlot, "$allDaySlot", $$stores);
|
|
4264
4275
|
const $_slots = () => $.store_get(_slots, "$_slots", $$stores);
|
|
4265
|
-
const $
|
|
4276
|
+
const $showNowIndicator = () => $.store_get(showNowIndicator, "$showNowIndicator", $$stores);
|
|
4266
4277
|
const [$$stores, $$cleanup] = $.setup_stores();
|
|
4267
4278
|
let {
|
|
4268
4279
|
_mainEl,
|
|
@@ -4277,7 +4288,7 @@ function View$1($$anchor, $$props) {
|
|
|
4277
4288
|
allDaySlot,
|
|
4278
4289
|
columnWidth,
|
|
4279
4290
|
highlightedDates,
|
|
4280
|
-
nowIndicator,
|
|
4291
|
+
nowIndicator: showNowIndicator,
|
|
4281
4292
|
scrollTime,
|
|
4282
4293
|
slotHeight,
|
|
4283
4294
|
slotDuration,
|
|
@@ -4476,23 +4487,32 @@ function View$1($$anchor, $$props) {
|
|
|
4476
4487
|
$.reset(div_4);
|
|
4477
4488
|
var node_12 = $.sibling(div_4, 2);
|
|
4478
4489
|
{
|
|
4479
|
-
var
|
|
4490
|
+
var consequent_3 = ($$anchor2) => {
|
|
4480
4491
|
var fragment_14 = $.comment();
|
|
4481
4492
|
var node_13 = $.first_child(fragment_14);
|
|
4482
|
-
|
|
4483
|
-
|
|
4484
|
-
|
|
4485
|
-
|
|
4486
|
-
|
|
4487
|
-
|
|
4488
|
-
|
|
4489
|
-
|
|
4493
|
+
{
|
|
4494
|
+
var consequent_2 = ($$anchor3) => {
|
|
4495
|
+
var fragment_15 = $.comment();
|
|
4496
|
+
var node_14 = $.first_child(fragment_15);
|
|
4497
|
+
$.snippet(node_14, () => $$props.nowIndicator, () => $.get(grid));
|
|
4498
|
+
$.append($$anchor3, fragment_15);
|
|
4499
|
+
};
|
|
4500
|
+
var alternate_1 = ($$anchor3) => {
|
|
4501
|
+
NowIndicator$1($$anchor3, {
|
|
4502
|
+
get days() {
|
|
4503
|
+
return $.get(grid)[0];
|
|
4504
|
+
}
|
|
4505
|
+
});
|
|
4506
|
+
};
|
|
4507
|
+
$.if(node_13, ($$render) => {
|
|
4508
|
+
if ($$props.nowIndicator) $$render(consequent_2);
|
|
4509
|
+
else $$render(alternate_1, false);
|
|
4490
4510
|
});
|
|
4491
|
-
}
|
|
4511
|
+
}
|
|
4492
4512
|
$.append($$anchor2, fragment_14);
|
|
4493
4513
|
};
|
|
4494
4514
|
$.if(node_12, ($$render) => {
|
|
4495
|
-
if ($
|
|
4515
|
+
if ($showNowIndicator()) $$render(consequent_3);
|
|
4496
4516
|
});
|
|
4497
4517
|
}
|
|
4498
4518
|
$.reset(section);
|
|
@@ -4554,15 +4574,16 @@ function View_1($$anchor, $$props) {
|
|
|
4554
4574
|
return { date, resource, disabled, highlight };
|
|
4555
4575
|
});
|
|
4556
4576
|
{
|
|
4557
|
-
let $0 = $.derived(() =>
|
|
4558
|
-
let $1 = $.derived(() =>
|
|
4559
|
-
let $2 = $.derived(() => $datesAboveResources() && $.get(computed_const).
|
|
4577
|
+
let $0 = $.derived(() => grid()[0].length > 1 ? $theme().colGroup : void 0);
|
|
4578
|
+
let $1 = $.derived(() => 1 + i * $.get(days).length);
|
|
4579
|
+
let $2 = $.derived(() => $datesAboveResources() && $.get(computed_const).disabled);
|
|
4580
|
+
let $3 = $.derived(() => $datesAboveResources() && $.get(computed_const).highlight);
|
|
4560
4581
|
ColHead($$anchor3, {
|
|
4561
4582
|
get date() {
|
|
4562
4583
|
return $.get(computed_const).date;
|
|
4563
4584
|
},
|
|
4564
4585
|
get className() {
|
|
4565
|
-
return $
|
|
4586
|
+
return $.get($0);
|
|
4566
4587
|
},
|
|
4567
4588
|
get weekday() {
|
|
4568
4589
|
return $datesAboveResources();
|
|
@@ -4571,13 +4592,13 @@ function View_1($$anchor, $$props) {
|
|
|
4571
4592
|
return $.get(days).length;
|
|
4572
4593
|
},
|
|
4573
4594
|
get colIndex() {
|
|
4574
|
-
return $.get($
|
|
4595
|
+
return $.get($1);
|
|
4575
4596
|
},
|
|
4576
4597
|
get disabled() {
|
|
4577
|
-
return $.get($
|
|
4598
|
+
return $.get($2);
|
|
4578
4599
|
},
|
|
4579
4600
|
get highlight() {
|
|
4580
|
-
return $.get($
|
|
4601
|
+
return $.get($3);
|
|
4581
4602
|
},
|
|
4582
4603
|
children: ($$anchor4, $$slotProps) => {
|
|
4583
4604
|
var fragment_3 = $.comment();
|
|
@@ -4610,75 +4631,143 @@ function View_1($$anchor, $$props) {
|
|
|
4610
4631
|
}
|
|
4611
4632
|
});
|
|
4612
4633
|
var node_2 = $.sibling(node, 2);
|
|
4613
|
-
|
|
4614
|
-
var
|
|
4615
|
-
|
|
4616
|
-
|
|
4617
|
-
|
|
4618
|
-
|
|
4619
|
-
|
|
4634
|
+
{
|
|
4635
|
+
var consequent_2 = ($$anchor3) => {
|
|
4636
|
+
var fragment_6 = $.comment();
|
|
4637
|
+
var node_3 = $.first_child(fragment_6);
|
|
4638
|
+
$.each(node_3, 17, grid, $.index, ($$anchor4, days, i) => {
|
|
4639
|
+
var fragment_7 = $.comment();
|
|
4640
|
+
var node_4 = $.first_child(fragment_7);
|
|
4641
|
+
$.each(node_4, 17, () => $.get(days), $.index, ($$anchor5, day, j) => {
|
|
4642
|
+
const computed_const_1 = $.derived(() => {
|
|
4643
|
+
const { dayStart: date, resource, disabled, highlight } = $.get(day);
|
|
4644
|
+
return { date, resource, disabled, highlight };
|
|
4645
|
+
});
|
|
4646
|
+
{
|
|
4647
|
+
let $0 = $.derived(() => 1 + j + i * $.get(days).length);
|
|
4648
|
+
ColHead($$anchor5, {
|
|
4649
|
+
get date() {
|
|
4650
|
+
return $.get(computed_const_1).date;
|
|
4651
|
+
},
|
|
4652
|
+
get colIndex() {
|
|
4653
|
+
return $.get($0);
|
|
4654
|
+
},
|
|
4655
|
+
get disabled() {
|
|
4656
|
+
return $.get(computed_const_1).disabled;
|
|
4657
|
+
},
|
|
4658
|
+
get highlight() {
|
|
4659
|
+
return $.get(computed_const_1).highlight;
|
|
4660
|
+
},
|
|
4661
|
+
children: ($$anchor6, $$slotProps) => {
|
|
4662
|
+
var fragment_9 = $.comment();
|
|
4663
|
+
var node_5 = $.first_child(fragment_9);
|
|
4664
|
+
{
|
|
4665
|
+
var consequent_1 = ($$anchor7) => {
|
|
4666
|
+
Label$1($$anchor7, {
|
|
4667
|
+
get resource() {
|
|
4668
|
+
return $.get(computed_const_1).resource;
|
|
4669
|
+
},
|
|
4670
|
+
get date() {
|
|
4671
|
+
return $.get(computed_const_1).date;
|
|
4672
|
+
}
|
|
4673
|
+
});
|
|
4674
|
+
};
|
|
4675
|
+
var alternate_1 = ($$anchor7) => {
|
|
4676
|
+
DayHeader($$anchor7, {
|
|
4677
|
+
get date() {
|
|
4678
|
+
return $.get(computed_const_1).date;
|
|
4679
|
+
},
|
|
4680
|
+
get alPrefix() {
|
|
4681
|
+
return resourceLabels[i];
|
|
4682
|
+
}
|
|
4683
|
+
});
|
|
4684
|
+
};
|
|
4685
|
+
$.if(node_5, ($$render) => {
|
|
4686
|
+
if ($datesAboveResources()) $$render(consequent_1);
|
|
4687
|
+
else $$render(alternate_1, false);
|
|
4688
|
+
});
|
|
4689
|
+
}
|
|
4690
|
+
$.append($$anchor6, fragment_9);
|
|
4691
|
+
},
|
|
4692
|
+
$$slots: { default: true }
|
|
4693
|
+
});
|
|
4694
|
+
}
|
|
4695
|
+
});
|
|
4696
|
+
$.append($$anchor4, fragment_7);
|
|
4620
4697
|
});
|
|
4698
|
+
$.append($$anchor3, fragment_6);
|
|
4699
|
+
};
|
|
4700
|
+
$.if(node_2, ($$render) => {
|
|
4701
|
+
if (grid()[0].length > 1) $$render(consequent_2);
|
|
4702
|
+
});
|
|
4703
|
+
}
|
|
4704
|
+
$.append($$anchor2, fragment_1);
|
|
4705
|
+
};
|
|
4706
|
+
const nowIndicator = ($$anchor2, grid = $.noop) => {
|
|
4707
|
+
var fragment_12 = $.comment();
|
|
4708
|
+
var node_6 = $.first_child(fragment_12);
|
|
4709
|
+
{
|
|
4710
|
+
var consequent_3 = ($$anchor3) => {
|
|
4621
4711
|
{
|
|
4622
|
-
let $0 = $.derived(() =>
|
|
4623
|
-
|
|
4624
|
-
get
|
|
4625
|
-
return $.get(computed_const_1).date;
|
|
4626
|
-
},
|
|
4627
|
-
get colIndex() {
|
|
4712
|
+
let $0 = $.derived(() => grid().flat());
|
|
4713
|
+
NowIndicator$1($$anchor3, {
|
|
4714
|
+
get days() {
|
|
4628
4715
|
return $.get($0);
|
|
4629
4716
|
},
|
|
4630
|
-
get
|
|
4631
|
-
return
|
|
4632
|
-
}
|
|
4633
|
-
get highlight() {
|
|
4634
|
-
return $.get(computed_const_1).highlight;
|
|
4635
|
-
},
|
|
4636
|
-
children: ($$anchor5, $$slotProps) => {
|
|
4637
|
-
var fragment_8 = $.comment();
|
|
4638
|
-
var node_4 = $.first_child(fragment_8);
|
|
4639
|
-
{
|
|
4640
|
-
var consequent_1 = ($$anchor6) => {
|
|
4641
|
-
Label$1($$anchor6, {
|
|
4642
|
-
get resource() {
|
|
4643
|
-
return $.get(computed_const_1).resource;
|
|
4644
|
-
},
|
|
4645
|
-
get date() {
|
|
4646
|
-
return $.get(computed_const_1).date;
|
|
4647
|
-
}
|
|
4648
|
-
});
|
|
4649
|
-
};
|
|
4650
|
-
var alternate_1 = ($$anchor6) => {
|
|
4651
|
-
DayHeader($$anchor6, {
|
|
4652
|
-
get date() {
|
|
4653
|
-
return $.get(computed_const_1).date;
|
|
4654
|
-
},
|
|
4655
|
-
get alPrefix() {
|
|
4656
|
-
return resourceLabels[i];
|
|
4657
|
-
}
|
|
4658
|
-
});
|
|
4659
|
-
};
|
|
4660
|
-
$.if(node_4, ($$render) => {
|
|
4661
|
-
if ($datesAboveResources()) $$render(consequent_1);
|
|
4662
|
-
else $$render(alternate_1, false);
|
|
4663
|
-
});
|
|
4664
|
-
}
|
|
4665
|
-
$.append($$anchor5, fragment_8);
|
|
4666
|
-
},
|
|
4667
|
-
$$slots: { default: true }
|
|
4717
|
+
get span() {
|
|
4718
|
+
return grid()[0].length;
|
|
4719
|
+
}
|
|
4668
4720
|
});
|
|
4669
4721
|
}
|
|
4722
|
+
};
|
|
4723
|
+
var alternate_3 = ($$anchor3) => {
|
|
4724
|
+
var fragment_14 = $.comment();
|
|
4725
|
+
var node_7 = $.first_child(fragment_14);
|
|
4726
|
+
{
|
|
4727
|
+
var consequent_4 = ($$anchor4) => {
|
|
4728
|
+
var fragment_15 = $.comment();
|
|
4729
|
+
var node_8 = $.first_child(fragment_15);
|
|
4730
|
+
$.each(node_8, 17, grid, $.index, ($$anchor5, days) => {
|
|
4731
|
+
NowIndicator$1($$anchor5, {
|
|
4732
|
+
get days() {
|
|
4733
|
+
return $.get(days);
|
|
4734
|
+
}
|
|
4735
|
+
});
|
|
4736
|
+
});
|
|
4737
|
+
$.append($$anchor4, fragment_15);
|
|
4738
|
+
};
|
|
4739
|
+
var alternate_2 = ($$anchor4) => {
|
|
4740
|
+
{
|
|
4741
|
+
let $0 = $.derived(() => grid().flat());
|
|
4742
|
+
NowIndicator$1($$anchor4, {
|
|
4743
|
+
get days() {
|
|
4744
|
+
return $.get($0);
|
|
4745
|
+
},
|
|
4746
|
+
get span() {
|
|
4747
|
+
return grid().length;
|
|
4748
|
+
}
|
|
4749
|
+
});
|
|
4750
|
+
}
|
|
4751
|
+
};
|
|
4752
|
+
$.if(node_7, ($$render) => {
|
|
4753
|
+
if (grid()[0].length > 1) $$render(consequent_4);
|
|
4754
|
+
else $$render(alternate_2, false);
|
|
4755
|
+
});
|
|
4756
|
+
}
|
|
4757
|
+
$.append($$anchor3, fragment_14);
|
|
4758
|
+
};
|
|
4759
|
+
$.if(node_6, ($$render) => {
|
|
4760
|
+
if ($datesAboveResources()) $$render(consequent_3);
|
|
4761
|
+
else $$render(alternate_3, false);
|
|
4670
4762
|
});
|
|
4671
|
-
|
|
4672
|
-
|
|
4673
|
-
$.append($$anchor2, fragment_1);
|
|
4763
|
+
}
|
|
4764
|
+
$.append($$anchor2, fragment_12);
|
|
4674
4765
|
};
|
|
4675
4766
|
View$1($$anchor, {
|
|
4676
4767
|
createGridFn: () => createGrid$2($_viewDates(), $_viewResources(), $_slotTimeLimits(), $datesAboveResources(), $validRange(), $highlightedDates()),
|
|
4677
|
-
get fullwidthNowIndicator() {
|
|
4678
|
-
return $datesAboveResources();
|
|
4679
|
-
},
|
|
4680
4768
|
header,
|
|
4681
|
-
|
|
4769
|
+
nowIndicator,
|
|
4770
|
+
$$slots: { header: true, nowIndicator: true }
|
|
4682
4771
|
});
|
|
4683
4772
|
}
|
|
4684
4773
|
$.pop();
|
|
@@ -4697,6 +4786,7 @@ const index$2 = {
|
|
|
4697
4786
|
options.views.resourceTimeGridDay = {
|
|
4698
4787
|
buttonText: btnTextDay,
|
|
4699
4788
|
component: View_1,
|
|
4789
|
+
dayHeaderFormat: { weekday: "long" },
|
|
4700
4790
|
duration: { days: 1 },
|
|
4701
4791
|
theme: themeView("ec-resource ec-time-grid ec-day-view")
|
|
4702
4792
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@event-calendar/core",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.1",
|
|
4
4
|
"title": "Event Calendar Core package",
|
|
5
5
|
"description": "Full-sized drag & drop event calendar with resource & timeline views",
|
|
6
6
|
"keywords": [
|
|
@@ -32,6 +32,6 @@
|
|
|
32
32
|
"#components": "./src/lib/components/index.js"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"svelte": "^5.45.
|
|
35
|
+
"svelte": "^5.45.10"
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
let resource, newResource;
|
|
28
28
|
let fromX, fromY;
|
|
29
29
|
let toX, toY;
|
|
30
|
-
let gridEl,
|
|
30
|
+
let gridEl, allDaySlot;
|
|
31
31
|
let delta;
|
|
32
32
|
let allDay;
|
|
33
33
|
let iClass;
|
|
@@ -180,7 +180,7 @@
|
|
|
180
180
|
let dayEl = getElementWithPayload(toX, toY);
|
|
181
181
|
({allDay, date, resource} = getPayload(dayEl)(toX, toY));
|
|
182
182
|
|
|
183
|
-
|
|
183
|
+
allDaySlot = $_mainEl !== ancestor(dayEl, 3);
|
|
184
184
|
gridEl = ancestor(dayEl, 1);
|
|
185
185
|
calcViewport();
|
|
186
186
|
|
|
@@ -285,19 +285,19 @@
|
|
|
285
285
|
let thresholdX = 24;
|
|
286
286
|
animate(() => {
|
|
287
287
|
if (viewport) {
|
|
288
|
-
if (
|
|
288
|
+
if (!allDaySlot) {
|
|
289
289
|
if (toY < viewport.top + thresholdY) {
|
|
290
290
|
$_mainEl.scrollTop += max(-8, (toY - viewport.top - thresholdY) / 3);
|
|
291
291
|
}
|
|
292
292
|
if (toY > viewport.bottom - thresholdY) {
|
|
293
293
|
$_mainEl.scrollTop += min(8, (toY - viewport.bottom + thresholdY) / 3);
|
|
294
294
|
}
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
295
|
+
}
|
|
296
|
+
if (toX < viewport.left + thresholdX) {
|
|
297
|
+
$_mainEl.scrollLeft += max(-8, (toX - viewport.left - thresholdX) / 3);
|
|
298
|
+
}
|
|
299
|
+
if (toX > viewport.right - thresholdX) {
|
|
300
|
+
$_mainEl.scrollLeft += min(8, (toX - viewport.right + thresholdX) / 3);
|
|
301
301
|
}
|
|
302
302
|
if (toY < thresholdY) {
|
|
303
303
|
window.scrollBy(0, max(-8, (toY - thresholdY) / 3));
|
|
@@ -417,6 +417,13 @@
|
|
|
417
417
|
return findPayload(dayEl.previousElementSibling);
|
|
418
418
|
}
|
|
419
419
|
} else {
|
|
420
|
+
if (selecting() && payload.resource && !$_iEvents[0].resourceIds.includes(payload.resource.id)) {
|
|
421
|
+
if (toX > fromX) {
|
|
422
|
+
return findPayload(dayEl.previousElementSibling);
|
|
423
|
+
} else {
|
|
424
|
+
return findPayload(dayEl.nextElementSibling);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
420
427
|
return payload;
|
|
421
428
|
}
|
|
422
429
|
}
|
|
@@ -429,8 +436,8 @@
|
|
|
429
436
|
viewport = {
|
|
430
437
|
left: max(0, gridRect.left + $_mainEl.scrollLeft),
|
|
431
438
|
right: min(document.documentElement.clientWidth, mainRect.left + $_mainEl.clientWidth) - 2,
|
|
432
|
-
top: max(0, gridRect.top + (
|
|
433
|
-
bottom: min(document.documentElement.clientHeight,
|
|
439
|
+
top: max(0, gridRect.top + (!allDaySlot ? $_mainEl.scrollTop : 0)),
|
|
440
|
+
bottom: min(document.documentElement.clientHeight, !allDaySlot ? mainRect.top + $_mainEl.clientHeight : gridRect.bottom) - 2
|
|
434
441
|
};
|
|
435
442
|
}
|
|
436
443
|
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import {ColHead, DayHeader} from '#components';
|
|
5
5
|
import Label from './Label.svelte';
|
|
6
6
|
import View from '../time-grid/View.svelte';
|
|
7
|
+
import NowIndicator from '../time-grid/NowIndicator.svelte';
|
|
7
8
|
|
|
8
9
|
let {_viewDates, _viewResources, _slotTimeLimits, datesAboveResources, highlightedDates, validRange, theme} = getContext('state');
|
|
9
10
|
|
|
@@ -14,14 +15,13 @@
|
|
|
14
15
|
createGridFn={() => createGrid(
|
|
15
16
|
$_viewDates, $_viewResources, $_slotTimeLimits, $datesAboveResources, $validRange, $highlightedDates
|
|
16
17
|
)}
|
|
17
|
-
fullwidthNowIndicator={$datesAboveResources}
|
|
18
18
|
>
|
|
19
19
|
{#snippet header(grid)}
|
|
20
20
|
{#each grid as days, i}
|
|
21
21
|
{@const {dayStart: date, resource, disabled, highlight} = days[0]}
|
|
22
22
|
<ColHead
|
|
23
23
|
{date}
|
|
24
|
-
className={$theme.colGroup}
|
|
24
|
+
className={grid[0].length > 1 ? $theme.colGroup : undefined}
|
|
25
25
|
weekday={$datesAboveResources}
|
|
26
26
|
colSpan={days.length}
|
|
27
27
|
colIndex={1 + i * days.length}
|
|
@@ -35,17 +35,33 @@
|
|
|
35
35
|
{/if}
|
|
36
36
|
</ColHead>
|
|
37
37
|
{/each}
|
|
38
|
-
{#
|
|
39
|
-
{#each
|
|
40
|
-
{
|
|
41
|
-
|
|
42
|
-
{
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
38
|
+
{#if grid[0].length > 1}
|
|
39
|
+
{#each grid as days, i}
|
|
40
|
+
{#each days as day, j}
|
|
41
|
+
{@const {dayStart: date, resource, disabled, highlight} = day}
|
|
42
|
+
<ColHead {date} colIndex={1 + j + i * days.length} {disabled} {highlight}>
|
|
43
|
+
{#if $datesAboveResources}
|
|
44
|
+
<Label {resource} {date}/>
|
|
45
|
+
{:else}
|
|
46
|
+
<DayHeader {date} alPrefix={resourceLabels[i]}/>
|
|
47
|
+
{/if}
|
|
48
|
+
</ColHead>
|
|
49
|
+
{/each}
|
|
48
50
|
{/each}
|
|
49
|
-
{/
|
|
51
|
+
{/if}
|
|
52
|
+
{/snippet}
|
|
53
|
+
|
|
54
|
+
{#snippet nowIndicator(grid)}
|
|
55
|
+
{#if $datesAboveResources}
|
|
56
|
+
<NowIndicator days={grid.flat()} span={grid[0].length}/>
|
|
57
|
+
{:else}
|
|
58
|
+
{#if grid[0].length > 1}
|
|
59
|
+
{#each grid as days}
|
|
60
|
+
<NowIndicator {days} />
|
|
61
|
+
{/each}
|
|
62
|
+
{:else}
|
|
63
|
+
<NowIndicator days={grid.flat()} span={grid.length}/>
|
|
64
|
+
{/if}
|
|
65
|
+
{/if}
|
|
50
66
|
{/snippet}
|
|
51
67
|
</View>
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
import {getContext} from 'svelte';
|
|
3
3
|
import {datesEqual, toSeconds, intersectionObserver} from '#lib';
|
|
4
4
|
|
|
5
|
-
let {days,
|
|
5
|
+
let {days, span = 1} = $props();
|
|
6
6
|
|
|
7
7
|
let {_mainEl, _now, _today, _sidebarWidth, slotDuration, slotHeight, theme} = getContext('state');
|
|
8
8
|
|
|
9
9
|
// Layout
|
|
10
|
-
let {gridColumn, start} = $derived.by(() => {
|
|
10
|
+
let {gridColumn, start, end} = $derived.by(() => {
|
|
11
11
|
for (let day of days) {
|
|
12
12
|
if (datesEqual(day.dayStart, $_today)) {
|
|
13
13
|
return day;
|
|
@@ -16,6 +16,9 @@
|
|
|
16
16
|
return {};
|
|
17
17
|
});
|
|
18
18
|
let top = $derived.by(() => {
|
|
19
|
+
if ($_now < start || $_now > end) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
19
22
|
let step = toSeconds($slotDuration);
|
|
20
23
|
return ($_now - start) / 1000 / step * $slotHeight;
|
|
21
24
|
});
|
|
@@ -31,10 +34,10 @@
|
|
|
31
34
|
}
|
|
32
35
|
</script>
|
|
33
36
|
|
|
34
|
-
{#if gridColumn}
|
|
37
|
+
{#if gridColumn && top !== null}
|
|
35
38
|
<div {@attach intersectionObserver(onIntersect, observerOptions)}
|
|
36
39
|
class="{$theme.nowIndicator}"
|
|
37
|
-
style:grid-column="{gridColumn + 1}
|
|
40
|
+
style:grid-column="{gridColumn + 1} / span {span}"
|
|
38
41
|
style:inset-block-start="{top}px"
|
|
39
42
|
></div>
|
|
40
43
|
{/if}
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
import AllDayEvent from './AllDayEvent.svelte';
|
|
9
9
|
import NowIndicator from './NowIndicator.svelte';
|
|
10
10
|
|
|
11
|
-
let {header,
|
|
11
|
+
let {header, nowIndicator, createGridFn} = $props();
|
|
12
12
|
|
|
13
13
|
let {_mainEl, _filteredEvents, _iEvents, _sidebarWidth, _slotLabelPeriodicity, _slotTimeLimits, _slots,
|
|
14
|
-
_viewDates, allDayContent, allDaySlot, columnWidth, highlightedDates, nowIndicator
|
|
15
|
-
slotDuration, theme, validRange} = getContext('state');
|
|
14
|
+
_viewDates, allDayContent, allDaySlot, columnWidth, highlightedDates, nowIndicator: showNowIndicator,
|
|
15
|
+
scrollTime, slotHeight, slotDuration, theme, validRange} = getContext('state');
|
|
16
16
|
|
|
17
17
|
let headerHeight = $state(0);
|
|
18
18
|
let allDayText = $derived(createAllDayContent($allDayContent));
|
|
@@ -127,9 +127,11 @@
|
|
|
127
127
|
</div>
|
|
128
128
|
</div>
|
|
129
129
|
|
|
130
|
-
{#if $
|
|
131
|
-
{#
|
|
132
|
-
|
|
133
|
-
{
|
|
130
|
+
{#if $showNowIndicator}
|
|
131
|
+
{#if nowIndicator}
|
|
132
|
+
{@render nowIndicator(grid)}
|
|
133
|
+
{:else}
|
|
134
|
+
<NowIndicator days={grid[0]}/>
|
|
135
|
+
{/if}
|
|
134
136
|
{/if}
|
|
135
137
|
</section>
|
package/src/storage/stores.js
CHANGED
|
@@ -193,10 +193,10 @@ export function filteredEvents(state){
|
|
|
193
193
|
|
|
194
194
|
// Filter events
|
|
195
195
|
if (isFunction($eventFilter)) {
|
|
196
|
+
let events = $_events.map(toEventWithLocalDates);
|
|
196
197
|
result = result
|
|
197
|
-
.
|
|
198
|
-
|
|
199
|
-
event,
|
|
198
|
+
.filter((event, index) => $eventFilter({
|
|
199
|
+
event: toEventWithLocalDates(event),
|
|
200
200
|
index,
|
|
201
201
|
events,
|
|
202
202
|
view
|
package/src/styles/sidebar.css
CHANGED
|
@@ -47,13 +47,14 @@
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
.ec-expander {
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
inline-size: 1.25em;
|
|
51
|
+
margin-inline-end: .25em;
|
|
52
|
+
margin-block-start: -1px;
|
|
52
53
|
|
|
53
54
|
.ec-button {
|
|
54
55
|
line-height: normal;
|
|
55
56
|
padding: 0;
|
|
56
57
|
aspect-ratio: 1;
|
|
57
|
-
|
|
58
|
+
block-size: 1.25em;
|
|
58
59
|
}
|
|
59
60
|
}
|
package/src/styles/toolbar.css
CHANGED
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
|
|
58
58
|
.ec-icon {
|
|
59
59
|
display: inline-block;
|
|
60
|
-
|
|
60
|
+
inline-size: 1em;
|
|
61
61
|
|
|
62
62
|
&.ec-prev:after,
|
|
63
63
|
&.ec-next:after {
|
|
@@ -71,10 +71,18 @@
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
&.ec-prev:after {
|
|
74
|
-
|
|
74
|
+
inset-inline-start: 3px;
|
|
75
|
+
rotate: -135deg;
|
|
76
|
+
}
|
|
77
|
+
[dir="rtl"] &.ec-prev:after {
|
|
78
|
+
rotate: 135deg;
|
|
75
79
|
}
|
|
76
80
|
|
|
77
81
|
&.ec-next:after {
|
|
78
|
-
|
|
82
|
+
inset-inline-start: -3px;
|
|
83
|
+
rotate: 45deg;
|
|
84
|
+
}
|
|
85
|
+
[dir="rtl"] &.ec-next:after {
|
|
86
|
+
rotate: -45deg;
|
|
79
87
|
}
|
|
80
88
|
}
|