@event-calendar/core 4.0.2 → 4.1.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.md +5 -5
- package/dist/index.css +11 -2
- package/dist/index.js +2092 -4592
- package/package.json +3 -3
- package/src/lib/components/InteractableEvent.svelte +4 -2
- package/src/lib/dom.js +1 -1
- package/src/lib/times.js +3 -7
- package/src/plugins/interaction/Auxiliary.svelte +6 -2
- package/src/plugins/interaction/Resizer.svelte +5 -1
- package/src/plugins/interaction/lib/events.js +2 -6
- package/src/plugins/resource-timeline/Body.svelte +1 -1
- package/src/plugins/resource-timeline/Header.svelte +8 -8
- package/src/plugins/time-grid/Body.svelte +3 -5
- package/src/plugins/time-grid/Section.svelte +8 -3
- package/src/storage/options.js +1 -1
- package/src/styles/time-grid.scss +5 -1
- package/src/styles/timeline.scss +7 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@event-calendar/core",
|
|
3
|
-
"version": "4.0
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"title": "Event Calendar Core package",
|
|
5
5
|
"description": "Full-sized drag & drop event calendar with resource & timeline views",
|
|
6
6
|
"keywords": [
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"#lib": "./src/lib/index.js",
|
|
32
32
|
"#components": "./src/lib/components/index.js"
|
|
33
33
|
},
|
|
34
|
-
"
|
|
35
|
-
"svelte": "^5.
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"svelte": "^5.28.2"
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import {getContext} from 'svelte';
|
|
3
3
|
import BaseEvent from './BaseEvent.svelte';
|
|
4
|
+
import {bgEvent, helperEvent} from "#lib";
|
|
4
5
|
|
|
5
6
|
let {
|
|
6
7
|
el = $bindable(),
|
|
@@ -14,6 +15,7 @@
|
|
|
14
15
|
let {_interaction, _iClasses} = getContext('state');
|
|
15
16
|
|
|
16
17
|
let event = $derived(chunk.event);
|
|
18
|
+
let display = $derived(chunk.event.display);
|
|
17
19
|
|
|
18
20
|
// Class
|
|
19
21
|
let classes = $derived(classNames => $_iClasses(classNames, event));
|
|
@@ -23,9 +25,9 @@
|
|
|
23
25
|
? jsEvent => $_interaction.action.drag(
|
|
24
26
|
event, jsEvent, forceDate?.(), forceMargin?.()
|
|
25
27
|
)
|
|
26
|
-
:
|
|
28
|
+
: $_interaction.action?.noAction;
|
|
27
29
|
}
|
|
28
|
-
let onpointerdown = $derived(createDragHandler(event));
|
|
30
|
+
let onpointerdown = $derived(!bgEvent(display) && !helperEvent(display) ? createDragHandler(event) : undefined);
|
|
29
31
|
|
|
30
32
|
let Resizer = $derived($_interaction.resizer);
|
|
31
33
|
</script>
|
package/src/lib/dom.js
CHANGED
|
@@ -41,7 +41,7 @@ export function getElementWithPayload(x, y, root = document) {
|
|
|
41
41
|
return el;
|
|
42
42
|
}
|
|
43
43
|
/** @see https://github.com/vkurko/calendar/issues/142 */
|
|
44
|
-
if (el.shadowRoot) {
|
|
44
|
+
if (el.shadowRoot && el.shadowRoot !== root) {
|
|
45
45
|
let shadowEl = getElementWithPayload(x, y, el.shadowRoot);
|
|
46
46
|
if (shadowEl) {
|
|
47
47
|
return shadowEl;
|
package/src/lib/times.js
CHANGED
|
@@ -14,19 +14,15 @@ export function createTimes(date, $slotDuration, $slotLabelInterval, $_slotTimeL
|
|
|
14
14
|
? createDuration($slotDuration.seconds * 2)
|
|
15
15
|
: $slotDuration;
|
|
16
16
|
}
|
|
17
|
-
let
|
|
18
|
-
let label;
|
|
19
|
-
if (!showAll) {
|
|
20
|
-
label = cloneDate(date);
|
|
21
|
-
}
|
|
17
|
+
let label = cloneDate(date);
|
|
22
18
|
// Build times
|
|
23
19
|
while (date < end) {
|
|
24
20
|
times.push([
|
|
25
21
|
toISOString(date),
|
|
26
22
|
$_intlSlotLabel.format(date),
|
|
27
|
-
|
|
23
|
+
date >= label
|
|
28
24
|
]);
|
|
29
|
-
while (
|
|
25
|
+
while ($slotLabelInterval.seconds && date >= label) {
|
|
30
26
|
addDuration(label, $slotLabelInterval);
|
|
31
27
|
}
|
|
32
28
|
addDuration(date, $slotDuration);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import {getContext} from 'svelte';
|
|
3
|
-
import {helperEvent, listen} from '#lib';
|
|
3
|
+
import {bgEvent, helperEvent, listen} from '#lib';
|
|
4
4
|
import {eventDraggable} from './lib';
|
|
5
5
|
import Action from './Action.svelte';
|
|
6
6
|
import Pointer from './Pointer.svelte';
|
|
@@ -21,7 +21,11 @@
|
|
|
21
21
|
...classNames,
|
|
22
22
|
helperEvent(display)
|
|
23
23
|
? [$theme[display]]
|
|
24
|
-
: (
|
|
24
|
+
: (
|
|
25
|
+
!bgEvent(display) && eventDraggable(event, $eventStartEditable, $editable)
|
|
26
|
+
? [$theme.draggable]
|
|
27
|
+
: []
|
|
28
|
+
)
|
|
25
29
|
];
|
|
26
30
|
};
|
|
27
31
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import {getContext} from 'svelte';
|
|
3
|
+
import {bgEvent, helperEvent} from '#lib';
|
|
3
4
|
import {eventResizable} from './lib';
|
|
4
5
|
|
|
5
6
|
let {chunk, axis, forceDate = undefined, forceMargin = undefined, children} = $props();
|
|
@@ -7,8 +8,11 @@
|
|
|
7
8
|
let {theme, eventDurationEditable, eventResizableFromStart, editable, _interaction} = getContext('state');
|
|
8
9
|
|
|
9
10
|
let event = $derived(chunk.event);
|
|
11
|
+
let display = $derived(chunk.event.display);
|
|
10
12
|
|
|
11
|
-
let resizable = $derived(
|
|
13
|
+
let resizable = $derived(
|
|
14
|
+
!bgEvent(display) && !helperEvent(display) && eventResizable(event, $eventDurationEditable, $editable)
|
|
15
|
+
);
|
|
12
16
|
|
|
13
17
|
function createResizeHandler(start) {
|
|
14
18
|
return jsEvent => $_interaction.action.resize(
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import {bgEvent, helperEvent} from '#lib';
|
|
2
2
|
|
|
3
3
|
export function eventDraggable(event, $eventStartEditable, $editable) {
|
|
4
|
-
return (event.startEditable ?? $eventStartEditable ?? event.editable ?? $editable)
|
|
5
|
-
!bgEvent(event.display) &&
|
|
6
|
-
!helperEvent(event.display);
|
|
4
|
+
return (event.startEditable ?? $eventStartEditable ?? event.editable ?? $editable);
|
|
7
5
|
}
|
|
8
6
|
|
|
9
7
|
export function eventResizable(event, $eventDurationEditable, $editable) {
|
|
10
|
-
return (event.durationEditable ?? $eventDurationEditable ?? event.editable ?? $editable)
|
|
11
|
-
!bgEvent(event.display) &&
|
|
12
|
-
!helperEvent(event.display);
|
|
8
|
+
return (event.durationEditable ?? $eventDurationEditable ?? event.editable ?? $editable);
|
|
13
9
|
}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
</div>
|
|
20
20
|
<div class="{$theme.times}">
|
|
21
21
|
{#each $_dayTimes[date.getTime()] as time}
|
|
22
|
-
<div class="{$theme.time}" role="columnheader">
|
|
22
|
+
<div class="{$theme.time}{time[2] ? '' : ' ' + $theme.minor}" role="columnheader">
|
|
23
23
|
<time
|
|
24
24
|
datetime="{time[0]}"
|
|
25
25
|
use:setContent={time[1]}
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
{/each}
|
|
29
29
|
</div>
|
|
30
30
|
{:else}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
31
|
+
<div class="{$theme.time}" role="columnheader">
|
|
32
|
+
<time
|
|
33
|
+
datetime="{toISOString(date, 10)}"
|
|
34
|
+
aria-label="{$_intlDayHeaderAL.format(date)}"
|
|
35
|
+
use:setContent={$_intlDayHeader.format(date)}
|
|
36
|
+
></time>
|
|
37
|
+
</div>
|
|
38
38
|
{/if}
|
|
39
39
|
</div>
|
|
40
40
|
{/each}
|
|
@@ -11,8 +11,6 @@
|
|
|
11
11
|
|
|
12
12
|
let el = $state();
|
|
13
13
|
|
|
14
|
-
let compact = $derived($slotDuration.seconds >= 3600);
|
|
15
|
-
|
|
16
14
|
$effect(() => {
|
|
17
15
|
$_bodyEl = el;
|
|
18
16
|
});
|
|
@@ -30,14 +28,14 @@
|
|
|
30
28
|
|
|
31
29
|
<div
|
|
32
30
|
bind:this={el}
|
|
33
|
-
class="{$theme.body}
|
|
31
|
+
class="{$theme.body}"
|
|
34
32
|
use:observeResize={() => $_recheckScrollable = true}
|
|
35
33
|
>
|
|
36
34
|
<div class="{$theme.content}">
|
|
37
35
|
<Section {children}>
|
|
38
36
|
{#snippet lines()}
|
|
39
|
-
{#each
|
|
40
|
-
<div class="{$theme.line}"></div>
|
|
37
|
+
{#each $_times as time}
|
|
38
|
+
<div class="{$theme.line}{time[2] ? '' : ' ' + $theme.minor}"></div>
|
|
41
39
|
{/each}
|
|
42
40
|
{/snippet}
|
|
43
41
|
</Section>
|
|
@@ -5,15 +5,20 @@
|
|
|
5
5
|
|
|
6
6
|
let {children, lines} = $props();
|
|
7
7
|
|
|
8
|
-
let {allDayContent, theme, _times} = getContext('state');
|
|
8
|
+
let {allDayContent, slotLabelInterval, theme, _times} = getContext('state');
|
|
9
9
|
|
|
10
10
|
let allDayText = $derived(createAllDayContent($allDayContent));
|
|
11
|
+
let showAllTimes = $derived($slotLabelInterval && $slotLabelInterval.seconds <= 0);
|
|
11
12
|
</script>
|
|
12
13
|
|
|
13
14
|
<div class="{$theme.sidebar}">
|
|
14
15
|
<div class="{$theme.sidebarTitle}" use:setContent={allDayText}></div>
|
|
15
|
-
{#each $_times as time}
|
|
16
|
-
<time
|
|
16
|
+
{#each $_times as time, i}
|
|
17
|
+
<time
|
|
18
|
+
class="{$theme.time}{(i || showAllTimes) && time[2] ? '' : ' ' + $theme.minor}"
|
|
19
|
+
datetime="{time[0]}"
|
|
20
|
+
use:setContent={time[1]}
|
|
21
|
+
></time>
|
|
17
22
|
{/each}
|
|
18
23
|
</div>
|
|
19
24
|
<div class="{$theme.days}" role="row">
|
package/src/storage/options.js
CHANGED
|
@@ -79,7 +79,6 @@ export function createOptions(plugins) {
|
|
|
79
79
|
button: 'ec-button',
|
|
80
80
|
buttonGroup: 'ec-button-group',
|
|
81
81
|
calendar: 'ec',
|
|
82
|
-
compact: 'ec-compact',
|
|
83
82
|
content: 'ec-content',
|
|
84
83
|
day: 'ec-day',
|
|
85
84
|
dayHead: 'ec-day-head',
|
|
@@ -98,6 +97,7 @@ export function createOptions(plugins) {
|
|
|
98
97
|
icon: 'ec-icon',
|
|
99
98
|
line: 'ec-line',
|
|
100
99
|
lines: 'ec-lines',
|
|
100
|
+
minor: 'ec-minor',
|
|
101
101
|
nowIndicator: 'ec-now-indicator',
|
|
102
102
|
otherMonth: 'ec-other-month',
|
|
103
103
|
resource: 'ec-resource',
|
|
@@ -34,6 +34,10 @@
|
|
|
34
34
|
line-height: 24px;
|
|
35
35
|
top: -12px;
|
|
36
36
|
text-align: right;
|
|
37
|
+
|
|
38
|
+
&.ec-minor {
|
|
39
|
+
visibility: hidden;
|
|
40
|
+
}
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
.ec-header .ec-time ,
|
|
@@ -60,7 +64,7 @@
|
|
|
60
64
|
pointer-events: none;
|
|
61
65
|
}
|
|
62
66
|
|
|
63
|
-
.ec-
|
|
67
|
+
.ec-line.ec-minor:after {
|
|
64
68
|
border-bottom-style: dotted;
|
|
65
69
|
}
|
|
66
70
|
|
package/src/styles/timeline.scss
CHANGED
|
@@ -74,6 +74,10 @@
|
|
|
74
74
|
min-height: 24px;
|
|
75
75
|
overflow: hidden;
|
|
76
76
|
text-overflow: ellipsis;
|
|
77
|
+
|
|
78
|
+
&.ec-minor {
|
|
79
|
+
visibility: hidden;
|
|
80
|
+
}
|
|
77
81
|
}
|
|
78
82
|
|
|
79
83
|
.ec-time, .ec-line {
|
|
@@ -107,9 +111,9 @@
|
|
|
107
111
|
pointer-events: none;
|
|
108
112
|
}
|
|
109
113
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
114
|
+
.ec-line.ec-minor:after {
|
|
115
|
+
border-left-style: dotted;
|
|
116
|
+
}
|
|
113
117
|
|
|
114
118
|
.ec-sidebar {
|
|
115
119
|
padding: 0;
|