@event-calendar/core 4.0.3 → 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 CHANGED
@@ -227,8 +227,8 @@ This bundle contains a version of the calendar that includes all plugins and is
227
227
 
228
228
  The first step is to include the following lines of code in the `<head>` section of your page:
229
229
  ```html
230
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@event-calendar/build@4.0.3/dist/event-calendar.min.css">
231
- <script src="https://cdn.jsdelivr.net/npm/@event-calendar/build@4.0.3/dist/event-calendar.min.js"></script>
230
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@event-calendar/build@4.1.0/dist/event-calendar.min.css">
231
+ <script src="https://cdn.jsdelivr.net/npm/@event-calendar/build@4.1.0/dist/event-calendar.min.js"></script>
232
232
  ```
233
233
 
234
234
  <details>
@@ -2138,13 +2138,13 @@ function (time) {
2138
2138
  - Type `string`, `integer` or `object`
2139
2139
  - Default `undefined`
2140
2140
 
2141
- The interval at which slot labels should be displayed in `timeGrid` views.
2141
+ The interval at which slot labels should be displayed in `timeGrid`/`resourceTimeline` views.
2142
2142
 
2143
2143
  This should be a value that can be parsed into a [Duration](#duration-object) object.
2144
2144
 
2145
2145
  If not specified, then if `slotDuration` is less than 1 hour, the interval is considered to be twice as long, i.e. the labels are displayed every other time.
2146
2146
 
2147
- If the interval is set to zero, then labels are displayed for all slots, including the very first one, which is not normally displayed.
2147
+ If the interval is set to zero, then labels are displayed for all slots, including the very first one, which is not normally displayed in `timeGrid` views.
2148
2148
 
2149
2149
  ### slotMaxTime
2150
2150
  - Type `string`, `integer` or `object`
@@ -2176,7 +2176,7 @@ Defines the time slot width in pixels in `resourceTimeline` views. When changing
2176
2176
 
2177
2177
  ### theme
2178
2178
  - Type `object` or `function`
2179
- - Default `{allDay: 'ec-all-day', active: 'ec-active', bgEvent: 'ec-bg-event', bgEvents: 'ec-bg-events', body: 'ec-body', button: 'ec-button', buttonGroup: 'ec-button-group', calendar: 'ec', compact: 'ec-compact', container: 'ec-container', content: 'ec-content', day: 'ec-day', dayHead: 'ec-day-head', dayFoot: 'ec-day-foot', days: 'ec-days', daySide: 'ec-day-side', draggable: 'ec-draggable', dragging: 'ec-dragging', event: 'ec-event', eventBody: 'ec-event-body', eventTag: 'ec-event-tag', eventTime: 'ec-event-time', eventTitle: 'ec-event-title', events: 'ec-events', expander: 'ec-expander', extra: 'ec-extra', ghost: 'ec-ghost', handle: 'ec-handle', header: 'ec-header', hiddenScroll: 'ec-hidden-scroll', highlight: 'ec-highlight', icon: 'ec-icon', line: 'ec-line', lines: 'ec-lines', main: 'ec-main', noEvents: 'ec-no-events', nowIndicator: 'ec-now-indicator', otherMonth: 'ec-other-month', pointer: 'ec-pointer', popup: 'ec-popup', preview: 'ec-preview', resizer: 'ec-resizer', resizingX: 'ec-resizing-x', resizingY: 'ec-resizing-y', resource: 'ec-resource', selecting: 'ec-selecting', sidebar: 'ec-sidebar', sidebarTitle: 'ec-sidebar-title', today: 'ec-today', time: 'ec-time', times: 'ec-times', title: 'ec-title', toolbar: 'ec-toolbar', view: 'ec-timeline ec-resource-week-view', weekdays: ['ec-sun', 'ec-mon', 'ec-tue', 'ec-wed', 'ec-thu', 'ec-fri', 'ec-sat'], withScroll: 'ec-with-scroll', uniform: 'ec-uniform'}`
2179
+ - Default `{allDay: 'ec-all-day', active: 'ec-active', bgEvent: 'ec-bg-event', bgEvents: 'ec-bg-events', body: 'ec-body', button: 'ec-button', buttonGroup: 'ec-button-group', calendar: 'ec', container: 'ec-container', content: 'ec-content', day: 'ec-day', dayHead: 'ec-day-head', dayFoot: 'ec-day-foot', days: 'ec-days', daySide: 'ec-day-side', draggable: 'ec-draggable', dragging: 'ec-dragging', event: 'ec-event', eventBody: 'ec-event-body', eventTag: 'ec-event-tag', eventTime: 'ec-event-time', eventTitle: 'ec-event-title', events: 'ec-events', expander: 'ec-expander', extra: 'ec-extra', ghost: 'ec-ghost', handle: 'ec-handle', header: 'ec-header', hiddenScroll: 'ec-hidden-scroll', highlight: 'ec-highlight', icon: 'ec-icon', line: 'ec-line', lines: 'ec-lines', main: 'ec-main', minor: 'ec-minor', noEvents: 'ec-no-events', nowIndicator: 'ec-now-indicator', otherMonth: 'ec-other-month', pointer: 'ec-pointer', popup: 'ec-popup', preview: 'ec-preview', resizer: 'ec-resizer', resizingX: 'ec-resizing-x', resizingY: 'ec-resizing-y', resource: 'ec-resource', selecting: 'ec-selecting', sidebar: 'ec-sidebar', sidebarTitle: 'ec-sidebar-title', today: 'ec-today', time: 'ec-time', times: 'ec-times', title: 'ec-title', toolbar: 'ec-toolbar', view: 'ec-timeline ec-resource-week-view', weekdays: ['ec-sun', 'ec-mon', 'ec-tue', 'ec-wed', 'ec-thu', 'ec-fri', 'ec-sat'], withScroll: 'ec-with-scroll', uniform: 'ec-uniform'}`
2180
2180
  > Views override the default value as follows:
2181
2181
  > - dayGridMonth `theme => ({...theme, view: 'ec-day-grid ec-month-view'})`
2182
2182
  > - listDay `theme => ({...theme, view: 'ec-list ec-day-view'})`
package/dist/index.css CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * EventCalendar v4.0.3
2
+ * EventCalendar v4.1.0
3
3
  * https://github.com/vkurko/calendar
4
4
  */
5
5
  .ec {
@@ -126,6 +126,9 @@
126
126
  overflow: hidden;
127
127
  text-overflow: ellipsis;
128
128
  }
129
+ .ec-timeline .ec-time.ec-minor {
130
+ visibility: hidden;
131
+ }
129
132
  .ec-timeline .ec-time, .ec-timeline .ec-line {
130
133
  width: 72px;
131
134
  }
@@ -151,6 +154,9 @@
151
154
  border-left: 1px solid var(--ec-border-color);
152
155
  pointer-events: none;
153
156
  }
157
+ .ec-timeline .ec-line.ec-minor:after {
158
+ border-left-style: dotted;
159
+ }
154
160
  .ec-timeline .ec-sidebar {
155
161
  padding: 0;
156
162
  border: 1px solid var(--ec-border-color);
@@ -209,6 +215,9 @@
209
215
  top: -12px;
210
216
  text-align: right;
211
217
  }
218
+ .ec-time-grid .ec-time.ec-minor {
219
+ visibility: hidden;
220
+ }
212
221
  .ec-time-grid .ec-header .ec-time,
213
222
  .ec-time-grid .ec-all-day .ec-time {
214
223
  visibility: hidden;
@@ -229,7 +238,7 @@
229
238
  border-bottom: 1px solid var(--ec-border-color);
230
239
  pointer-events: none;
231
240
  }
232
- .ec-time-grid .ec-body:not(.ec-compact) .ec-line:nth-child(even):after {
241
+ .ec-time-grid .ec-line.ec-minor:after {
233
242
  border-bottom-style: dotted;
234
243
  }
235
244
  .ec-time-grid .ec-sidebar-title {
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * EventCalendar v4.0.3
2
+ * EventCalendar v4.1.0
3
3
  * https://github.com/vkurko/calendar
4
4
  */
5
5
  import { tick, getContext, untrack, setContext, onMount, mount, unmount } from "svelte";
@@ -304,7 +304,7 @@ function getElementWithPayload(x, y, root2 = document) {
304
304
  if (hasPayload(el)) {
305
305
  return el;
306
306
  }
307
- if (el.shadowRoot) {
307
+ if (el.shadowRoot && el.shadowRoot !== root2) {
308
308
  let shadowEl = getElementWithPayload(x, y, el.shadowRoot);
309
309
  if (shadowEl) {
310
310
  return shadowEl;
@@ -748,18 +748,14 @@ function createTimes(date, $slotDuration, $slotLabelInterval, $_slotTimeLimits,
748
748
  if ($slotLabelInterval === void 0) {
749
749
  $slotLabelInterval = $slotDuration.seconds < 3600 ? createDuration($slotDuration.seconds * 2) : $slotDuration;
750
750
  }
751
- let showAll = $slotLabelInterval.seconds <= 0;
752
- let label;
753
- if (!showAll) {
754
- label = cloneDate(date);
755
- }
751
+ let label = cloneDate(date);
756
752
  while (date < end) {
757
753
  times2.push([
758
754
  toISOString(date),
759
755
  $_intlSlotLabel.format(date),
760
- showAll || times2.length && date >= label
756
+ date >= label
761
757
  ]);
762
- while (!showAll && date >= label) {
758
+ while ($slotLabelInterval.seconds && date >= label) {
763
759
  addDuration(label, $slotLabelInterval);
764
760
  }
765
761
  addDuration(date, $slotDuration);
@@ -882,7 +878,6 @@ function createOptions(plugins) {
882
878
  button: "ec-button",
883
879
  buttonGroup: "ec-button-group",
884
880
  calendar: "ec",
885
- compact: "ec-compact",
886
881
  content: "ec-content",
887
882
  day: "ec-day",
888
883
  dayHead: "ec-day-head",
@@ -901,6 +896,7 @@ function createOptions(plugins) {
901
896
  icon: "ec-icon",
902
897
  line: "ec-line",
903
898
  lines: "ec-lines",
899
+ minor: "ec-minor",
904
900
  nowIndicator: "ec-now-indicator",
905
901
  otherMonth: "ec-other-month",
906
902
  resource: "ec-resource",
@@ -1968,15 +1964,16 @@ function InteractableEvent($$anchor, $$props) {
1968
1964
  let el = $.prop($$props, "el", 15);
1969
1965
  let { _interaction, _iClasses } = getContext("state");
1970
1966
  let event = $.derived(() => $$props.chunk.event);
1967
+ let display = $.derived(() => $$props.chunk.event.display);
1971
1968
  let classes = $.derived(() => (classNames) => $_iClasses()(classNames, $.get(event)));
1972
1969
  function createDragHandler(event2) {
1973
- var _a;
1970
+ var _a, _b;
1974
1971
  return ((_a = $_interaction().action) == null ? void 0 : _a.draggable(event2)) ? (jsEvent) => {
1975
- var _a2, _b;
1976
- return $_interaction().action.drag(event2, jsEvent, (_a2 = $$props.forceDate) == null ? void 0 : _a2.call($$props), (_b = $$props.forceMargin) == null ? void 0 : _b.call($$props));
1977
- } : void 0;
1972
+ var _a2, _b2;
1973
+ return $_interaction().action.drag(event2, jsEvent, (_a2 = $$props.forceDate) == null ? void 0 : _a2.call($$props), (_b2 = $$props.forceMargin) == null ? void 0 : _b2.call($$props));
1974
+ } : (_b = $_interaction().action) == null ? void 0 : _b.noAction;
1978
1975
  }
1979
- let onpointerdown = $.derived(() => createDragHandler($.get(event)));
1976
+ let onpointerdown = $.derived(() => !bgEvent($.get(display)) && !helperEvent($.get(display)) ? createDragHandler($.get(event)) : void 0);
1980
1977
  let Resizer2 = $.derived(() => $_interaction().resizer);
1981
1978
  {
1982
1979
  const body = ($$anchor2, defaultBody = $.noop) => {
@@ -2787,10 +2784,10 @@ const index$4 = {
2787
2784
  }
2788
2785
  };
2789
2786
  function eventDraggable(event, $eventStartEditable, $editable) {
2790
- return (event.startEditable ?? $eventStartEditable ?? event.editable ?? $editable) && !bgEvent(event.display) && !helperEvent(event.display);
2787
+ return event.startEditable ?? $eventStartEditable ?? event.editable ?? $editable;
2791
2788
  }
2792
2789
  function eventResizable(event, $eventDurationEditable, $editable) {
2793
- return (event.durationEditable ?? $eventDurationEditable ?? event.editable ?? $editable) && !bgEvent(event.display) && !helperEvent(event.display);
2790
+ return event.durationEditable ?? $eventDurationEditable ?? event.editable ?? $editable;
2794
2791
  }
2795
2792
  let busy = false;
2796
2793
  function animate(fn) {
@@ -3514,7 +3511,8 @@ function Resizer($$anchor, $$props) {
3514
3511
  _interaction
3515
3512
  } = getContext("state");
3516
3513
  let event = $.derived(() => $$props.chunk.event);
3517
- let resizable = $.derived(() => eventResizable($.get(event), $eventDurationEditable(), $editable()));
3514
+ let display = $.derived(() => $$props.chunk.event.display);
3515
+ let resizable = $.derived(() => !bgEvent($.get(display)) && !helperEvent($.get(display)) && eventResizable($.get(event), $eventDurationEditable(), $editable()));
3518
3516
  function createResizeHandler(start) {
3519
3517
  return (jsEvent) => {
3520
3518
  var _a, _b;
@@ -3589,7 +3587,7 @@ function Auxiliary($$anchor, $$props) {
3589
3587
  let { display } = event;
3590
3588
  return [
3591
3589
  ...classNames,
3592
- helperEvent(display) ? [$theme()[display]] : eventDraggable(event, $eventStartEditable(), $editable()) ? [$theme().draggable] : []
3590
+ helperEvent(display) ? [$theme()[display]] : !bgEvent(display) && eventDraggable(event, $eventStartEditable(), $editable()) ? [$theme().draggable] : []
3593
3591
  ];
3594
3592
  });
3595
3593
  });
@@ -4027,20 +4025,27 @@ function Section($$anchor, $$props) {
4027
4025
  $.push($$props, true);
4028
4026
  const [$$stores, $$cleanup] = $.setup_stores();
4029
4027
  const $allDayContent = () => $.store_get(allDayContent, "$allDayContent", $$stores);
4028
+ const $slotLabelInterval = () => $.store_get(slotLabelInterval, "$slotLabelInterval", $$stores);
4030
4029
  const $theme = () => $.store_get(theme, "$theme", $$stores);
4031
4030
  const $_times = () => $.store_get(_times, "$_times", $$stores);
4032
- let { allDayContent, theme, _times } = getContext("state");
4031
+ let {
4032
+ allDayContent,
4033
+ slotLabelInterval,
4034
+ theme,
4035
+ _times
4036
+ } = getContext("state");
4033
4037
  let allDayText = $.derived(() => createAllDayContent($allDayContent()));
4038
+ let showAllTimes = $.derived(() => $slotLabelInterval() && $slotLabelInterval().seconds <= 0);
4034
4039
  var fragment = root$f();
4035
4040
  var div = $.first_child(fragment);
4036
4041
  var div_1 = $.child(div);
4037
4042
  $.action(div_1, ($$node, $$action_arg) => setContent == null ? void 0 : setContent($$node, $$action_arg), () => $.get(allDayText));
4038
4043
  var node = $.sibling(div_1, 2);
4039
- $.each(node, 1, $_times, $.index, ($$anchor2, time) => {
4044
+ $.each(node, 1, $_times, $.index, ($$anchor2, time, i) => {
4040
4045
  var time_1 = root_1$4();
4041
- $.action(time_1, ($$node, $$action_arg) => setContent == null ? void 0 : setContent($$node, $$action_arg), () => $.get(time)[2] ? $.get(time)[1] : "");
4046
+ $.action(time_1, ($$node, $$action_arg) => setContent == null ? void 0 : setContent($$node, $$action_arg), () => $.get(time)[1]);
4042
4047
  $.template_effect(() => {
4043
- $.set_class(time_1, 1, $theme().time);
4048
+ $.set_class(time_1, 1, `${$theme().time ?? ""}${(i || $.get(showAllTimes)) && $.get(time)[2] ? "" : " " + $theme().minor}`);
4044
4049
  $.set_attribute(time_1, "datetime", $.get(time)[0]);
4045
4050
  });
4046
4051
  $.append($$anchor2, time_1);
@@ -4089,10 +4094,10 @@ var root$e = $.template(`<div><div><!></div></div>`);
4089
4094
  function Body$1($$anchor, $$props) {
4090
4095
  $.push($$props, true);
4091
4096
  const [$$stores, $$cleanup] = $.setup_stores();
4092
- const $slotDuration = () => $.store_get(slotDuration, "$slotDuration", $$stores);
4093
4097
  const $_viewDates = () => $.store_get(_viewDates, "$_viewDates", $$stores);
4094
4098
  const $scrollTime = () => $.store_get(scrollTime, "$scrollTime", $$stores);
4095
4099
  const $_slotTimeLimits = () => $.store_get(_slotTimeLimits, "$_slotTimeLimits", $$stores);
4100
+ const $slotDuration = () => $.store_get(slotDuration, "$slotDuration", $$stores);
4096
4101
  const $slotHeight = () => $.store_get(slotHeight, "$slotHeight", $$stores);
4097
4102
  const $theme = () => $.store_get(theme, "$theme", $$stores);
4098
4103
  const $_times = () => $.store_get(_times, "$_times", $$stores);
@@ -4108,7 +4113,6 @@ function Body$1($$anchor, $$props) {
4108
4113
  theme
4109
4114
  } = getContext("state");
4110
4115
  let el = $.state(void 0);
4111
- let compact = $.derived(() => $slotDuration().seconds >= 3600);
4112
4116
  $.user_effect(() => {
4113
4117
  $.store_set(_bodyEl, $.get(el));
4114
4118
  });
@@ -4127,9 +4131,9 @@ function Body$1($$anchor, $$props) {
4127
4131
  const lines = ($$anchor2) => {
4128
4132
  var fragment = $.comment();
4129
4133
  var node_1 = $.first_child(fragment);
4130
- $.each(node_1, 1, () => new Array($_times().length), $.index, ($$anchor3, line) => {
4134
+ $.each(node_1, 1, $_times, $.index, ($$anchor3, time) => {
4131
4135
  var div_2 = root_2$5();
4132
- $.template_effect(() => $.set_class(div_2, 1, $theme().line));
4136
+ $.template_effect(() => $.set_class(div_2, 1, `${$theme().line ?? ""}${$.get(time)[2] ? "" : " " + $theme().minor}`));
4133
4137
  $.append($$anchor3, div_2);
4134
4138
  });
4135
4139
  $.append($$anchor2, fragment);
@@ -4147,7 +4151,7 @@ function Body$1($$anchor, $$props) {
4147
4151
  $.bind_this(div, ($$value) => $.set(el, $$value), () => $.get(el));
4148
4152
  $.action(div, ($$node, $$action_arg) => observeResize == null ? void 0 : observeResize($$node, $$action_arg), () => () => $.store_set(_recheckScrollable, true));
4149
4153
  $.template_effect(() => {
4150
- $.set_class(div, 1, `${$theme().body ?? ""}${$.get(compact) ? " " + $theme().compact : ""}`);
4154
+ $.set_class(div, 1, $theme().body);
4151
4155
  $.set_class(div_1, 1, $theme().content);
4152
4156
  });
4153
4157
  $.append($$anchor, div);
@@ -5437,7 +5441,7 @@ function Header($$anchor, $$props) {
5437
5441
  $.action(time_2, ($$node, $$action_arg) => setContent == null ? void 0 : setContent($$node, $$action_arg), () => $.get(time)[1]);
5438
5442
  $.reset(div_5);
5439
5443
  $.template_effect(() => {
5440
- $.set_class(div_5, 1, $theme().time);
5444
+ $.set_class(div_5, 1, `${$theme().time ?? ""}${$.get(time)[2] ? "" : " " + $theme().minor}`);
5441
5445
  $.set_attribute(time_2, "datetime", $.get(time)[0]);
5442
5446
  });
5443
5447
  $.append($$anchor4, div_5);
@@ -6024,7 +6028,7 @@ function Body($$anchor, $$props) {
6024
6028
  var node = $.first_child(fragment);
6025
6029
  $.each(node, 1, () => $_dayTimes()[$.get(date).getTime()], $.index, ($$anchor3, time) => {
6026
6030
  var div_3 = root_2();
6027
- $.template_effect(() => $.set_class(div_3, 1, $theme().line));
6031
+ $.template_effect(() => $.set_class(div_3, 1, `${$theme().line ?? ""}${$.get(time)[2] ? "" : " " + $theme().minor}`));
6028
6032
  $.append($$anchor3, div_3);
6029
6033
  });
6030
6034
  $.append($$anchor2, fragment);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@event-calendar/core",
3
- "version": "4.0.3",
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": [
@@ -34,4 +34,4 @@
34
34
  "dependencies": {
35
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
- : undefined;
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 showAll = $slotLabelInterval.seconds <= 0;
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
- showAll || (times.length && date >= label)
23
+ date >= label
28
24
  ]);
29
- while (!showAll && date >= label) {
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
- : (eventDraggable(event, $eventStartEditable, $editable) ? [$theme.draggable] : [])
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(eventResizable(event, $eventDurationEditable, $editable));
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
  }
@@ -50,7 +50,7 @@
50
50
  <div class="{$theme.lines}">
51
51
  {#each $_viewDates as date}
52
52
  {#each $_dayTimes[date.getTime()] as time}
53
- <div class="{$theme.line}"></div>
53
+ <div class="{$theme.line}{time[2] ? '' : ' ' + $theme.minor}"></div>
54
54
  {/each}
55
55
  {/each}
56
56
  </div>
@@ -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
- <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>
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}{compact ? ' ' + $theme.compact : ''}"
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 new Array($_times.length) as line}
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 class="{$theme.time}" datetime="{time[0]}" use:setContent={time[2] ? time[1] : ''}></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">
@@ -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-body:not(.ec-compact) .ec-line:nth-child(even):after {
67
+ .ec-line.ec-minor:after {
64
68
  border-bottom-style: dotted;
65
69
  }
66
70
 
@@ -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
- //.ec-body:not(.ec-compact) .ec-line:nth-child(even):after {
111
- // border-bottom-style: dotted;
112
- //}
114
+ .ec-line.ec-minor:after {
115
+ border-left-style: dotted;
116
+ }
113
117
 
114
118
  .ec-sidebar {
115
119
  padding: 0;