@event-calendar/build 5.5.0 → 5.6.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
@@ -48,8 +48,10 @@ Inspired by [FullCalendar](https://fullcalendar.io/), it implements similar opti
48
48
  - [customScrollbars](#customscrollbars)
49
49
  - [date](#date)
50
50
  - [dateClick](#dateclick)
51
+ - [dateIncrement](#dateincrement)
51
52
  - [datesAboveResources](#datesaboveresources)
52
53
  - [datesSet](#datesset)
54
+ - [dayCellContent](#daycellcontent)
53
55
  - [dayCellFormat](#daycellformat)
54
56
  - [dayHeaderAriaLabelFormat](#dayheaderarialabelformat)
55
57
  - [dayHeaderFormat](#dayheaderformat)
@@ -72,9 +74,9 @@ Inspired by [FullCalendar](https://fullcalendar.io/), it implements similar opti
72
74
  - [eventDragStart](#eventdragstart)
73
75
  - [eventDragStop](#eventdragstop)
74
76
  - [eventDrop](#eventdrop)
75
- - [eventDurationEditable](#eventdurationeditable)
76
77
  </td><td>
77
78
 
79
+ - [eventDurationEditable](#eventdurationeditable)
78
80
  - [eventFilter](#eventfilter)
79
81
  - [eventLongPressDelay](#eventlongpressdelay)
80
82
  - [eventMouseEnter](#eventmouseenter)
@@ -103,13 +105,14 @@ Inspired by [FullCalendar](https://fullcalendar.io/), it implements similar opti
103
105
  - [loading](#loading)
104
106
  - [locale](#locale)
105
107
  - [longPressDelay](#longpressdelay)
108
+ - [monthHeaderFormat](#monthheaderformat)
106
109
  - [moreLinkContent](#morelinkcontent)
107
110
  - [noEventsClick](#noeventsclick)
108
111
  - [noEventsContent](#noeventscontent)
109
112
  - [nowIndicator](#nowindicator)
110
- - [pointer](#pointer)
111
113
  </td><td>
112
114
 
115
+ - [pointer](#pointer)
113
116
  - [refetchResourcesOnNavigate](#refetchresourcesonnavigate)
114
117
  - [resizeConstraint](#resizeconstraint)
115
118
  - [resourceExpand](#resourceexpand)
@@ -257,8 +260,8 @@ This bundle contains a version of the calendar that includes all plugins and is
257
260
 
258
261
  The first step is to include the following lines of code in the `<head>` section of your page:
259
262
  ```html
260
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@event-calendar/build@5.4.2/dist/event-calendar.min.css">
261
- <script src="https://cdn.jsdelivr.net/npm/@event-calendar/build@5.4.2/dist/event-calendar.min.js"></script>
263
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@event-calendar/build@5.6.0/dist/event-calendar.min.css">
264
+ <script src="https://cdn.jsdelivr.net/npm/@event-calendar/build@5.6.0/dist/event-calendar.min.js"></script>
262
265
  ```
263
266
 
264
267
  <details>
@@ -353,7 +356,7 @@ When hidden with `false`, all-day events will not be displayed in `timeGrid`/`re
353
356
  <details>
354
357
  <summary>Default</summary>
355
358
 
356
- `{collapse: 'Collapse', close: 'Close', dayGridDay: 'day', dayGridMonth: 'month', dayGridWeek: 'week', expand: 'Expand', listDay: 'list', listMonth: 'list', listWeek: 'list', listYear: 'list', resourceTimeGridDay: 'resources', resourceTimeGridWeek: 'resources', resourceTimelineDay: 'timeline', resourceTimelineMonth: 'timeline', resourceTimelineWeek: 'timeline', timeGridDay: 'day', timeGridWeek: 'week', today: 'today'}`
359
+ `{collapse: 'Collapse', close: 'Close', dayGridDay: 'day', dayGridMonth: 'month', dayGridWeek: 'week', expand: 'Expand', listDay: 'day', listMonth: 'month', listWeek: 'week', listYear: 'year', resourceTimeGridDay: 'day', resourceTimeGridWeek: 'week', resourceTimelineDay: 'day', resourceTimelineMonth: 'month', resourceTimelineWeek: 'week', resourceTimelineYear: 'year', timeGridDay: 'day', timeGridWeek: 'week', today: 'today'}`
357
360
  > Views override the default value as follows:
358
361
  > - dayGridDay `text => ({...text, next: 'Next day', prev: 'Previous day'})`
359
362
  > - dayGridMonth `text => ({...text, next: 'Next month', prev: 'Previous month'})`
@@ -367,6 +370,7 @@ When hidden with `false`, all-day events will not be displayed in `timeGrid`/`re
367
370
  > - resourceTimelineDay `text => ({...text, next: 'Next day', prev: 'Previous day'})`
368
371
  > - resourceTimelineMonth `text => ({...text, next: 'Next month', prev: 'Previous month'})`
369
372
  > - resourceTimelineWeek `text => ({...text, next: 'Next week', prev: 'Previous week'})`
373
+ > - resourceTimelineYear `text => ({...text, next: 'Next year', prev: 'Previous year'})`
370
374
  > - timeGridDay `text => ({...text, next: 'Next day', prev: 'Previous day'})`
371
375
  > - timeGridWeek `text => ({...text, next: 'Next week', prev: 'Previous week'})`
372
376
 
@@ -568,6 +572,16 @@ If the current view is a resource view, the [Resource](#resource-object) object
568
572
  </tr>
569
573
  </table>
570
574
 
575
+ ### dateIncrement
576
+ - Type `string`, `integer` or `object`
577
+ - Default `undefined`
578
+
579
+ Defines the interval by which the displayed view is shifted when pressing the prev/next buttons or when the [prev()](#prev)/[next()](#next) methods are called.
580
+
581
+ This should be a value that can be parsed into a [Duration](#duration-object) object.
582
+
583
+ If not specified, then equal to [duration](#duration).
584
+
571
585
  ### datesAboveResources
572
586
  - Type `boolean`
573
587
  - Default `false`
@@ -625,6 +639,60 @@ The current [View](#view-object) object
625
639
  </tr>
626
640
  </table>
627
641
 
642
+ ### dayCellContent
643
+ - Type `Content` or `function`
644
+ - Default `undefined`
645
+
646
+ Defines the content that is rendered inside the day cell.
647
+
648
+ This value can be either a [Content](#content) or a function that returns content:
649
+
650
+ ```js
651
+ function (arg) {
652
+ // return Content
653
+ }
654
+ ```
655
+ `arg` is an object with the following properties:
656
+ <table>
657
+ <tr>
658
+ <td>
659
+
660
+ `allDay`
661
+ </td>
662
+ <td>
663
+
664
+ `true` or `false`. Determines if the cell is within `all-day` slot. Month and list views are also considered as all-day slots
665
+ </td>
666
+ </tr>
667
+ <tr>
668
+ <td>
669
+
670
+ `date`
671
+ </td>
672
+ <td>JavaScript Date object corresponding to the day</td>
673
+ </tr>
674
+ <tr>
675
+ <td>
676
+
677
+ `isToday`
678
+ </td>
679
+ <td>
680
+
681
+ `true` or `false`. Determines if the cell is for today
682
+ </td>
683
+ </tr>
684
+ <tr>
685
+ <td>
686
+
687
+ `resource`
688
+ </td>
689
+ <td>
690
+
691
+ If the current view is a resource view, the [Resource](#resource-object) object that owns this cell
692
+ </td>
693
+ </tr>
694
+ </table>
695
+
628
696
  ### dayCellFormat
629
697
  - Type `object` or `function`
630
698
  - Default `{day: 'numeric'}`
@@ -680,6 +748,7 @@ function (date) {
680
748
  > - dayGridDay `{weekday: 'long'}`
681
749
  > - dayGridMonth `{weekday: 'short'}`
682
750
  > - resourceTimelineMonth `{weekday: 'short', day: 'numeric'}`
751
+ > - resourceTimelineYear `{weekday: 'short', day: 'numeric'}`
683
752
  > - timeGridDay `{weekday: 'long'}`
684
753
 
685
754
  Defines the text that is displayed on the calendar’s column headings.
@@ -734,6 +803,7 @@ function (date) {
734
803
  > - resourceTimelineDay `false`
735
804
  > - resourceTimelineMonth `false`
736
805
  > - resourceTimelineWeek `false`
806
+ > - resourceTimelineYear `false`
737
807
 
738
808
  Determines whether to display an event’s end time.
739
809
 
@@ -765,6 +835,7 @@ Determines whether the calendar should automatically scroll during the event dra
765
835
  > - resourceTimeGridDay `{days: 1}`
766
836
  > - resourceTimelineDay `{days: 1}`
767
837
  > - resourceTimelineMonth `{months: 1}`
838
+ > - resourceTimelineYear `{years: 1}`
768
839
  > - timeGridDay `{days: 1}`
769
840
 
770
841
  Sets the duration of a view.
@@ -1954,6 +2025,29 @@ For touch devices, the amount of time (in milliseconds) the user must hold down
1954
2025
 
1955
2026
  For a more granular configuration, see [eventLongPressDelay](#eventlongpressdelay) and [selectLongPressDelay](#selectlongpressdelay).
1956
2027
 
2028
+ ### monthHeaderFormat
2029
+ - Type `object` or `function`
2030
+ - Default `{month: 'long'}`
2031
+
2032
+ Defines the text that is displayed in month headings in `resourceTimelineYear` view.
2033
+
2034
+ This value can be either an object with options for the native JavaScript [Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat) object, or a callback function that returns a [Content](#content) with the formatted string:
2035
+
2036
+ ```js
2037
+ function (date) {
2038
+ // return Content with the formatted date string
2039
+ }
2040
+ ```
2041
+ <table>
2042
+ <tr>
2043
+ <td>
2044
+
2045
+ `date`
2046
+ </td>
2047
+ <td>JavaScript Date object that needs to be formatted</td>
2048
+ </tr>
2049
+ </table>
2050
+
1957
2051
  ### moreLinkContent
1958
2052
  - Type `Content` or `function`
1959
2053
  - Default `undefined`
@@ -2412,6 +2506,7 @@ Defines how many pixels the user’s mouse must move before the selection begins
2412
2506
  - Default `'00:30:00'`
2413
2507
  > Views override the default value as follows:
2414
2508
  > - resourceTimelineMonth `{days: 1}`
2509
+ > - resourceTimelineYear `{days: 1}`
2415
2510
 
2416
2511
  Defines the frequency for displaying time slots.
2417
2512
 
@@ -2519,6 +2614,7 @@ If not specified, then equal to [slotDuration](#slotduration).
2519
2614
  > - resourceTimelineDay `theme => ({...theme, view: 'ec-resource ec-timeline ec-day-view'})`
2520
2615
  > - resourceTimelineMonth `theme => ({...theme, view: 'ec-resource ec-timeline ec-month-view'})`
2521
2616
  > - resourceTimelineWeek `theme => ({...theme, view: 'ec-resource ec-timeline ec-week-view'})`
2617
+ > - resourceTimelineYear `theme => ({...theme, view: 'ec-resource ec-timeline ec-year-view'})`
2522
2618
  > - timeGridDay `theme => ({...theme, view: 'ec-time-grid ec-day-view'})`
2523
2619
  > - timeGridWeek `theme => ({...theme, view: 'ec-time-grid ec-week-view'})`
2524
2620
  </details>
@@ -2549,6 +2645,9 @@ function (theme) {
2549
2645
  - Default `{year: 'numeric', month: 'short', day: 'numeric'}`
2550
2646
  > Views override the default value as follows:
2551
2647
  > - dayGridMonth `{year: 'numeric', month: 'long'}`
2648
+ > - listDay `{year: 'numeric', month: 'long', day: 'numeric'}`
2649
+ > - listMonth `{year: 'numeric', month: 'long'}`
2650
+ > - listYear `{year: 'numeric'}`
2552
2651
  > - timeGridDay `{year: 'numeric', month: 'long', day: 'numeric'}`
2553
2652
 
2554
2653
  Defines the text that is displayed in the header toolbar’s title.
@@ -2686,6 +2785,7 @@ The following values are available:
2686
2785
  - `'resourceTimelineDay'`
2687
2786
  - `'resourceTimelineWeek'`
2688
2787
  - `'resourceTimelineMonth'`
2788
+ - `'resourceTimelineYear'`
2689
2789
  - `'timeGridDay'`
2690
2790
  - `'timeGridWeek'`
2691
2791
 
@@ -2765,7 +2865,7 @@ function (arg) {
2765
2865
  - Type `boolean`
2766
2866
  - Default `false`
2767
2867
 
2768
- Determines whether week numbers should be displayed in the `dayGrid` view.
2868
+ Determines whether week numbers should be displayed in `dayGrid`/`resourceTimeline` views.
2769
2869
 
2770
2870
  The numbering of weeks depends on the value of [firstDay](#firstday). When `firstDay` is `0`, the [Western](https://en.wikipedia.org/wiki/Week#Other_week_numbering_systems) system is used. Any other value uses the [ISO](https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system) system.
2771
2871
 
@@ -2775,20 +2875,20 @@ Methods allow you to manipulate EventCalendar after initialization. They are acc
2775
2875
  In Svelte, methods are available from a component instance:
2776
2876
  ```html
2777
2877
  <script>
2778
- import {Calendar, TimeGrid} from '@event-calendar/core';
2779
-
2780
- let ec = $state();
2781
- let options = $state({
2782
- view: 'timeGridWeek',
2783
- eventSources: [{events: function() {
2784
- console.log('fetching...');
2785
- return [];
2786
- }}]
2787
- });
2878
+ import {Calendar, TimeGrid} from '@event-calendar/core';
2788
2879
 
2789
- function invokeMethod() {
2790
- ec.refetchEvents();
2791
- }
2880
+ let ec = $state();
2881
+ let options = $state({
2882
+ view: 'timeGridWeek',
2883
+ eventSources: [{events: function() {
2884
+ console.log('fetching...');
2885
+ return [];
2886
+ }}]
2887
+ });
2888
+
2889
+ function invokeMethod() {
2890
+ ec.refetchEvents();
2891
+ }
2792
2892
  </script>
2793
2893
 
2794
2894
  <button onclick={invokeMethod}>Refetch events</button>
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * EventCalendar v5.5.0
2
+ * EventCalendar v5.6.0
3
3
  * https://github.com/vkurko/calendar
4
4
  */
5
5
  .ec{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ec-color-400:oklch(70.8% 0 0);--ec-color-300:oklch(87% 0 0);--ec-color-200:oklch(92.2% 0 0);--ec-color-100:oklch(97% 0 0);--ec-color-50:oklch(98.5% 0 0);--ec-bg-color:#fff;--ec-text-color:currentcolor;--ec-border-color:var(--ec-color-300);--ec-button-bg-color:var(--ec-bg-color);--ec-button-border-color:var(--ec-border-color);--ec-button-text-color:var(--ec-text-color);--ec-button-active-bg-color:var(--ec-color-200);--ec-button-active-border-color:var(--ec-color-400);--ec-button-active-text-color:var(--ec-button-text-color);--ec-today-bg-color:oklch(98.7% .026 102.212);--ec-highlight-color:oklch(98.4% .019 200.873);--ec-event-bg-color:oklch(70.7% .165 254.624);--ec-event-text-color:#fff;--ec-bg-event-color:var(--ec-color-300);--ec-bg-event-opacity:.3;--ec-event-col-gap:.375rem;--ec-now-indicator-color:oklch(63.7% .237 25.331);--ec-popup-bg-color:var(--ec-bg-color)}.ec-dark .ec{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ec-color-400:oklch(43.9% 0 0);--ec-color-300:oklch(37.1% 0 0);--ec-color-200:oklch(26.9% 0 0);--ec-color-100:oklch(20.5% 0 0);--ec-color-50:oklch(14.5% 0 0);--ec-bg-color:var(--ec-color-100);--ec-today-bg-color:oklch(28.6% .066 53.813);--ec-highlight-color:oklch(30.2% .056 229.695);--ec-bg-event-opacity:.5}@media (prefers-color-scheme:dark){.ec-auto-dark .ec{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ec-color-400:oklch(43.9% 0 0);--ec-color-300:oklch(37.1% 0 0);--ec-color-200:oklch(26.9% 0 0);--ec-color-100:oklch(20.5% 0 0);--ec-color-50:oklch(14.5% 0 0);--ec-bg-color:var(--ec-color-100);--ec-today-bg-color:oklch(28.6% .066 53.813);--ec-highlight-color:oklch(30.2% .056 229.695);--ec-bg-event-opacity:.5}}.ec-day{--ec-day-bg-color:var(--ec-bg-color);background-color:var(--ec-day-bg-color);border:1px solid var(--ec-border-color);border-block-start:none;border-inline-start:none}.ec-day.ec-today{--ec-day-bg-color:var(--ec-today-bg-color)}.ec-day.ec-highlight{--ec-day-bg-color:var(--ec-highlight-color)}.ec-time-grid .ec-body .ec-day{background-image:linear-gradient(to top, var(--ec-day-bg-color) 1px, transparent 1px), linear-gradient(to top, var(--ec-border-color) 1px, transparent 1px), linear-gradient(to right, var(--ec-day-bg-color) 1px, transparent 1px), linear-gradient(to top, var(--ec-border-color) 1px, transparent 1px);background-size:100% 100%, 100% calc(var(--ec-slot-height) * var(--ec-slot-label-periodicity)), 2px 100%, 100% var(--ec-slot-height)}.ec-timeline:not(.ec-month-view,.ec-year-view) .ec-body .ec-day{--ec-last-line-color:transparent;--ec-direction:to left}[dir=rtl] :is(.ec-timeline:not(.ec-month-view,.ec-year-view) .ec-body .ec-day){--ec-direction:to right}.ec-timeline:not(.ec-month-view,.ec-year-view) .ec-body .ec-day{background-image:linear-gradient(var(--ec-direction), var(--ec-last-line-color) 1px, transparent 1px), linear-gradient(var(--ec-direction), var(--ec-border-color) 1px, transparent 1px), linear-gradient(var(--ec-day-bg-color) 1px, transparent 1px), linear-gradient(var(--ec-direction), var(--ec-border-color) 1px, transparent 1px);background-size:100% 100%, calc(var(--ec-slot-width) * var(--ec-slot-label-periodicity)) 100%, 100% 2px, var(--ec-slot-width) 100%;border-inline:none}.ec-timeline:not(.ec-month-view,.ec-year-view) .ec-body .ec-day.ec-no-ieb{--ec-last-line-color:var(--ec-day-bg-color)}.ec-day-grid .ec-day{flex-direction:column;justify-content:space-between;min-block-size:5em;display:flex}.ec-day-grid .ec-uniform .ec-day{min-block-size:auto}.ec-list .ec-day{border-inline:none}.ec-list .ec-day:last-child{border:none}.ec-day.ec-no-ieb{border-inline-end:none}.ec-day.ec-no-beb{border-block-end:none}.ec-day-head{flex-direction:row-reverse;justify-content:space-between;display:flex}.ec-day-grid.ec-month-view .ec-day-head{padding:.375rem}.ec-day.ec-other-month .ec-day-head time{opacity:.3}.ec-list .ec-day-head{background-color:var(--ec-day-bg-color);border-block-end:1px solid var(--ec-border-color);flex-direction:unset;z-index:2;margin:0 0 -1px;padding:.5em 1.5em;position:sticky;inset-block-start:0}.ec-day-foot{padding:.18rem;font-size:.85em}.ec-day-foot a{cursor:pointer}.ec-disabled{position:relative}.ec-disabled:after{content:"";background-color:var(--ec-bg-event-color);opacity:var(--ec-bg-event-opacity);position:absolute;inset:0}.ec-toolbar{justify-content:space-between;align-items:center;margin-block-end:1em;display:flex}.ec-toolbar>*{flex-wrap:wrap;gap:.5rem .75rem;display:inline-flex}.ec-title{margin:0}.ec-button{background-color:var(--ec-button-bg-color);border:1px solid var(--ec-button-border-color);border-radius:.25rem;padding:.375rem .75rem;font-size:1rem;line-height:1.5}.ec-button:not(:disabled){color:var(--ec-button-text-color);cursor:pointer}.ec-button:not(:disabled):hover,.ec-button.ec-active{background-color:var(--ec-button-active-bg-color);border-color:var(--ec-button-active-border-color);color:var(--ec-button-active-text-color);z-index:1}.ec-button-group{vertical-align:top;display:inline-flex}.ec-button-group .ec-button:not(:first-child){border-start-start-radius:0;border-end-start-radius:0;margin-inline-start:-1px}.ec-button-group .ec-button:not(:last-child){border-start-end-radius:0;border-end-end-radius:0}.ec-icon{inline-size:1em;display:inline-block}.ec-icon.ec-prev:after,.ec-icon.ec-next:after{content:"";border-block-start:2px solid;border-inline-end:2px solid;block-size:.5em;inline-size:.5em;display:inline-block;position:relative}.ec-icon.ec-prev:after{inset-inline-start:3px;rotate:-135deg}[dir=rtl] .ec-icon.ec-prev:after{rotate:135deg}.ec-icon.ec-next:after{inset-inline-start:-3px;rotate:45deg}[dir=rtl] .ec-icon.ec-next:after{rotate:-45deg}.ec-sidebar{z-index:1;background-color:var(--ec-bg-color);border-inline-end:1px solid var(--ec-border-color);text-align:end;position:sticky;inset-inline-start:0;overflow:clip}.ec-header .ec-sidebar{border-block-end:1px solid var(--ec-border-color);padding-block:.375rem}.ec-time-grid .ec-sidebar{padding-inline:.75rem}.ec-time-grid .ec-body .ec-sidebar{--ec-direction:to left}[dir=rtl] :is(.ec-time-grid .ec-body .ec-sidebar){--ec-direction:to right}.ec-time-grid .ec-body .ec-sidebar{background-image:linear-gradient(var(--ec-direction), transparent .375rem, var(--ec-bg-color) .375rem), linear-gradient(to top, var(--ec-bg-color) 1px, transparent 1px), linear-gradient(to top, var(--ec-border-color) 1px, transparent 1px), linear-gradient(to right, var(--ec-bg-color) 1px, transparent 1px), linear-gradient(to top, var(--ec-border-color) 1px, transparent 1px);background-size:100% 100%, 100% 100%, 100% calc(var(--ec-slot-height) * var(--ec-slot-label-periodicity)), 2px 100%, 100% var(--ec-slot-height)}.ec-timeline .ec-body .ec-sidebar{grid-area:1/1/-1/2;grid-template-rows:subgrid;display:grid}.ec-row-head{border-block-end:1px solid var(--ec-border-color);min-block-size:1.5em;padding:.375em .75rem;display:flex}.ec-row-head:last-child{border:none}.ec-expander{inline-size:1.25em;margin-block-start:-1px;margin-inline-end:.25em}.ec-expander .ec-button{aspect-ratio:1;block-size:1.25em;padding:0;line-height:normal}.ec-slot{white-space:nowrap}.ec-time-grid .ec-slot{block-size:calc(var(--ec-slot-height) * var(--ec-slot-label-periodicity));position:relative;inset-block-start:-.5lh}.ec-timeline .ec-slot{grid-column:span var(--ec-slot-label-periodicity);text-overflow:ellipsis;padding:.18rem 0;font-size:.95em;overflow:clip}.ec-slots{grid-auto-flow:column;grid-auto-columns:var(--ec-slot-width);text-align:center;--ec-day-bg-color:var(--ec-bg-color);background-color:var(--ec-day-bg-color);border-block-end:1px solid var(--ec-border-color);display:grid}.ec-slots.ec-today{--ec-day-bg-color:var(--ec-today-bg-color)}.ec-slots.ec-highlight{--ec-day-bg-color:var(--ec-highlight-color)}.ec-slots{--ec-last-line-color:transparent;--ec-direction:to left}[dir=rtl] .ec-slots{--ec-direction:to right}.ec-slots{background-image:linear-gradient(var(--ec-direction), var(--ec-last-line-color) 1px, transparent 1px), linear-gradient(var(--ec-direction), var(--ec-border-color) 1px, transparent 1px);background-size:100% 100%, calc(var(--ec-slot-width) * var(--ec-slot-label-periodicity)) 100%}.ec-slots:last-child{--ec-last-line-color:var(--ec-day-bg-color)}.ec-events{grid-area:1/2/-1/-1;grid-template:subgrid / subgrid;isolation:isolate;pointer-events:none;display:grid}.ec-day-grid .ec-events{grid-column-start:1}.ec-event{color:var(--ec-event-text-color);box-sizing:border-box;box-shadow:0 0 1px 0 var(--ec-border-color);background-color:var(--ec-event-bg-color);z-index:1;pointer-events:all;inline-size:calc(100% - var(--ec-event-col-gap));border-radius:3px;padding:2px;font-size:.85em;line-height:1.5;display:flex;position:relative}.ec-time-grid .ec-event{grid-row:1}.ec-day-grid .ec-event,.ec-all-day .ec-event,.ec-timeline .ec-event{block-size:max-content;margin-block-end:var(--ec-event-col-gap)}.ec-list .ec-event{color:inherit;background-color:var(--ec-day-bg-color);border-radius:0;flex-direction:row;padding:.5em 1.5em}.ec-event.ec-preview{z-index:1000;-webkit-user-select:none;user-select:none;opacity:.8}.ec-event.ec-pointer{color:inherit;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:0;box-shadow:none}.ec-bg-event{background-color:var(--ec-bg-event-color);opacity:var(--ec-bg-event-opacity);grid-row:1;position:relative}.ec-draggable{cursor:pointer;-webkit-user-select:none;user-select:none}.ec-ghost{opacity:.5;-webkit-user-select:none;user-select:none;pointer-events:none}.ec-event-body{flex-direction:column;inline-size:100%;display:flex}.ec-day-grid .ec-event-body,.ec-all-day .ec-event-body,.ec-timeline .ec-event-body{flex-direction:row}.ec-event-tag{border-radius:2px;inline-size:4px;margin-inline-end:8px}.ec-event-time{white-space:nowrap;flex-shrink:0;max-block-size:100%;margin:0 0 1px;overflow:hidden}.ec-day-grid .ec-event-time,.ec-timeline .ec-event-time{text-overflow:ellipsis;max-inline-size:100%;margin:0 3px 0 0}.ec-event-title{font-weight:inherit;margin:0;overflow:hidden}.ec-time-grid .ec-event-title{position:sticky;inset-block-start:var(--ec-header-height)}.ec-day-grid .ec-event-title,.ec-all-day .ec-event-title,.ec-timeline .ec-event-title{white-space:nowrap;text-overflow:ellipsis;min-block-size:1.5em;position:sticky;inset-inline-start:calc(var(--ec-sidebar-width) + .18em)}.ec-list .ec-event-title{font-size:1rem}.ec-resizer{-webkit-user-select:none;user-select:none;position:absolute}.ec-time-grid .ec-body .ec-resizer{cursor:ns-resize;block-size:50%;max-block-size:8px;inset:auto 0 0}.ec-time-grid .ec-body .ec-resizer.ec-start{inset:0 0 auto}.ec-day-grid .ec-resizer,.ec-all-day .ec-resizer,.ec-timeline .ec-resizer{cursor:ew-resize;inline-size:50%;max-inline-size:8px;inset:0 0 0 auto}:is(.ec-day-grid .ec-resizer,.ec-all-day .ec-resizer,.ec-timeline .ec-resizer).ec-start{inset:0 auto 0 0}.ec-dragging,.ec-dragging *{cursor:pointer!important}.ec-resizing-y,.ec-resizing-y *{cursor:ns-resize!important}.ec-resizing-x,.ec-resizing-x *{cursor:ew-resize!important}.ec-no-events{text-align:center;background-color:var(--ec-bg-color);padding:5em 0}.ec-now-indicator{pointer-events:none;will-change:inset;grid-row:2;position:relative}.ec-time-grid .ec-now-indicator{border-block-start:var(--ec-now-indicator-color) solid 2px;block-size:0;inline-size:100%}.ec-timeline .ec-now-indicator{border-inline-start:var(--ec-now-indicator-color) solid 2px;inline-size:0}.ec-timeline .ec-now-indicator:before{z-index:2;inset-block-start:calc(var(--ec-header-height) - 6.5px)}.ec-now-indicator:before{background:var(--ec-now-indicator-color);content:"";block-size:12px;inline-size:12px;z-index:1;border-radius:50%;margin-block-start:-7px;margin-inline-start:-7px;display:block;position:sticky;inset-inline-start:calc(var(--ec-sidebar-width) - 6.5px)}.ec-popup{box-sizing:border-box;background-color:var(--ec-popup-bg-color);border:1px solid var(--ec-border-color);block-size:max-content;min-block-size:8em;inline-size:125%;min-inline-size:12em;box-shadow:var(--ec-color-300) 0 10px 15px -3px, var(--ec-color-300) 0 4px 6px -4px;border-radius:.25rem;flex-direction:column;padding:.375rem .75rem .75rem;display:flex;position:relative}.ec-popup .ec-day-head{flex-direction:row;padding-inline:0}.ec-popup .ec-day-head a{cursor:pointer;font-size:1.5em;line-height:.8}.ec-popup .ec-events{--ec-event-col-gap:0;pointer-events:auto;display:block;overflow-y:auto}.ec-custom-scrollbars .ec-main::-webkit-scrollbar{background-color:#0000}.ec-custom-scrollbars .ec-main::-webkit-scrollbar-thumb{box-shadow:none;background-color:var(--ec-border-color);background-clip:padding-box;border:4px solid #0000;border-radius:8px}.ec-custom-scrollbars .ec-main::-webkit-scrollbar-thumb:hover{background-color:var(--ec-color-400)}.ec{flex-direction:column;display:flex}.ec-main{border:1px solid var(--ec-border-color);display:grid;overflow:auto}.ec-time-grid .ec-main{grid-template-columns:max-content repeat(var(--ec-grid-cols), var(--ec-col-width));grid-template-rows:repeat(2,max-content)}.ec-day-grid .ec-main{--ec-row-height:auto;grid-template-columns:repeat(var(--ec-grid-cols), minmax(0, 1fr));grid-template-rows:max-content repeat(var(--ec-grid-rows), var(--ec-row-height))}.ec-day-grid .ec-main.ec-uniform{--ec-row-height:minmax(0, 1fr);flex-grow:1;overflow:hidden}.ec-timeline .ec-main{grid-template-columns:max-content repeat(var(--ec-grid-cols), min-content);grid-template-rows:max-content var(--ec-grid-rows);flex-grow:1}.ec-timeline:is(.ec-month-view,.ec-year-view) .ec-main{grid-template-columns:max-content repeat(var(--ec-grid-cols), var(--ec-col-width))}.ec-header{grid-area:1/1/2/-1;grid-template-columns:subgrid;z-index:2;display:grid;position:sticky;inset-block-start:0}.ec-grid{grid-area:1/1/-1/-1;grid-template-columns:subgrid;display:grid}.ec-body .ec-grid{grid-template-rows:subgrid}.ec-time-grid .ec-grid,.ec-timeline .ec-grid{grid-column-start:2}.ec-all-day{grid-area:2/1/auto/-1;grid-template-columns:subgrid;min-block-size:var(--ec-slot-height);display:grid}.ec-col-group{grid-column:span var(--ec-col-group-span)}.ec-col-group,.ec-col-head{text-align:center;background-color:var(--ec-bg-color);border:1px solid var(--ec-border-color);text-overflow:ellipsis;border-block-start:none;border-inline-start:none;padding:.375rem .18em;overflow:clip}:is(.ec-col-group,.ec-col-head).ec-today{background-color:var(--ec-today-bg-color)}:is(.ec-col-group,.ec-col-head).ec-highlight{background-color:var(--ec-highlight-color)}.ec-col-group:nth-last-child(1 of .ec-col-group),.ec-col-head:nth-last-child(1 of .ec-col-head){border-inline-end:none}.ec-col-group>*,.ec-timeline .ec-col-head>*{position:sticky;inset-inline-start:calc(var(--ec-sidebar-width) + .18em)}.ec-body{grid-area:2/1/-1/-1;grid-template:subgrid / subgrid;display:grid}.ec-hidden{visibility:hidden}