@event-calendar/build 3.8.0 → 3.10.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
@@ -4,7 +4,7 @@ See [demo](https://vkurko.github.io/calendar/) and [changelog](CHANGELOG.md).
4
4
 
5
5
  Full-sized drag & drop JavaScript event calendar with resource & timeline views:
6
6
 
7
- * Lightweight (37kb [br](https://en.wikipedia.org/wiki/Brotli) compressed)
7
+ * Lightweight (38kb [br](https://en.wikipedia.org/wiki/Brotli) compressed)
8
8
  * Zero-dependency (pre-built bundle)
9
9
  * Used on over 70,000 websites with [Bookly](https://wordpress.org/plugins/bookly-responsive-appointment-booking-tool/)
10
10
 
@@ -47,9 +47,9 @@ Inspired by [FullCalendar](https://fullcalendar.io/), implements similar options
47
47
  - [eventDragMinDistance](#eventdragmindistance)
48
48
  - [eventDragStart](#eventdragstart)
49
49
  - [eventDragStop](#eventdragstop)
50
+ - [eventDrop](#eventdrop)
50
51
  </td><td>
51
52
 
52
- - [eventDrop](#eventdrop)
53
53
  - [eventDurationEditable](#eventdurationeditable)
54
54
  - [eventLongPressDelay](#eventlongpressdelay)
55
55
  - [eventMouseEnter](#eventmouseenter)
@@ -77,10 +77,10 @@ Inspired by [FullCalendar](https://fullcalendar.io/), implements similar options
77
77
  - [locale](#locale)
78
78
  - [longPressDelay](#longpressdelay)
79
79
  - [moreLinkContent](#morelinkcontent)
80
- </td><td>
81
-
82
80
  - [noEventsClick](#noeventsclick)
83
81
  - [noEventsContent](#noeventscontent)
82
+ </td><td>
83
+
84
84
  - [nowIndicator](#nowindicator)
85
85
  - [pointer](#pointer)
86
86
  - [resources](#resources)
@@ -104,9 +104,12 @@ Inspired by [FullCalendar](https://fullcalendar.io/), implements similar options
104
104
  - [unselect](#unselect)
105
105
  - [unselectAuto](#unselectauto)
106
106
  - [unselectCancel](#unselectcancel)
107
+ - [validRange](#validrange)
107
108
  - [view](#view)
108
109
  - [viewDidMount](#viewdidmount)
109
110
  - [views](#views)
111
+ - [weekNumberContent](#weeknumbercontent)
112
+ - [weekNumbers](#weeknumbers)
110
113
  </td></tr>
111
114
  </table>
112
115
  - [Methods](#methods)
@@ -204,8 +207,8 @@ Or in your Svelte component, use the calendar like this:
204
207
  ### Pre-built browser ready bundle
205
208
  Include the following lines of code in the `<head>` section of your page:
206
209
  ```html
207
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@event-calendar/build@3.8.0/event-calendar.min.css">
208
- <script src="https://cdn.jsdelivr.net/npm/@event-calendar/build@3.8.0/event-calendar.min.js"></script>
210
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@event-calendar/build@3.10.0/event-calendar.min.css">
211
+ <script src="https://cdn.jsdelivr.net/npm/@event-calendar/build@3.10.0/event-calendar.min.js"></script>
209
212
  ```
210
213
 
211
214
  <details>
@@ -2228,6 +2231,38 @@ A CSS selector that specifies elements that will ignore the [unselectAuto](#unse
2228
2231
 
2229
2232
  Clicking on elements that match this CSS selector will prevent the current selection from being cleared (because of the [unselectAuto](#unselectauto) option).
2230
2233
 
2234
+ ### validRange
2235
+ - Type `object`
2236
+ - Default `undefined`
2237
+
2238
+ If set, the calendar will allow navigation only within the specified date range. Navigation buttons will be grayed out to prevent the user from navigating to an invalid range.
2239
+
2240
+ The range should be an object with the following properties:
2241
+ <table>
2242
+ <tr>
2243
+ <td>
2244
+
2245
+ `start`
2246
+ </td>
2247
+ <td>
2248
+
2249
+ `string` or `Date` This should be either an ISO8601 date string like `'2025-12-31'`, or a JavaScript Date object holding the range start date
2250
+ </td>
2251
+ </tr>
2252
+ <tr>
2253
+ <td>
2254
+
2255
+ `end`
2256
+ </td>
2257
+ <td>
2258
+
2259
+ `string` or `Date` This should be either an ISO8601 date string like `'2025-12-31'`, or a JavaScript Date object holding the range end date
2260
+ </td>
2261
+ </tr>
2262
+ </table>
2263
+
2264
+ It is not necessary to specify both properties. The range may have only `start` and no `end`, or vice versa.
2265
+
2231
2266
  ### view
2232
2267
  - Type `string`
2233
2268
  - Default `'resourceTimeGridWeek'`
@@ -2263,6 +2298,45 @@ The mounted [View](#view-object) object
2263
2298
 
2264
2299
  You can specify options that apply only to specific views. To do so provide separate options objects within the `views` option, keyed by the name of the view.
2265
2300
 
2301
+ ### weekNumberContent
2302
+ - Type `Content` or `function`
2303
+ - Default `undefined`
2304
+
2305
+ Defines the text that is displayed in place of the default week number (such as `W01`).
2306
+
2307
+ This value can be either a [Content](#content) or a function that returns content:
2308
+
2309
+ ```js
2310
+ function (arg) {
2311
+ // return Content
2312
+ }
2313
+ ```
2314
+ `arg` is an object with the following properties:
2315
+ <table>
2316
+ <tr>
2317
+ <td>
2318
+
2319
+ `date`
2320
+ </td>
2321
+ <td>JavaScript Date object containing the day within which the week number will be displayed</td>
2322
+ </tr>
2323
+ <tr>
2324
+ <td>
2325
+
2326
+ `week`
2327
+ </td>
2328
+ <td>Calculated week number</td>
2329
+ </tr>
2330
+ </table>
2331
+
2332
+ ### weekNumbers
2333
+ - Type `boolean`
2334
+ - Default `false`
2335
+
2336
+ Determines whether week numbers should be displayed in the `dayGrid` view.
2337
+
2338
+ 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.
2339
+
2266
2340
  ## Methods
2267
2341
  Methods allow you to manipulate the Event Calendar after initialization. They are accessible from the calendar instance.
2268
2342
 
@@ -1 +1 @@
1
- .ec{color-scheme:light;--ec-h:0;--ec-s:0%;--ec-l-300:91.00%;--ec-l-500:83.50%;--ec-l-600:78.40%;--ec-l-700:71.40%;--ec-bg-fallback-color:#fff;--ec-hs:var(--ec-h),var(--ec-s);--ec-color-300:hsl(var(--ec-hs),var(--ec-l-300));--ec-color-500:hsl(var(--ec-hs),var(--ec-l-500));--ec-color-600:hsl(var(--ec-hs),var(--ec-l-600));--ec-color-700:hsl(var(--ec-hs),var(--ec-l-700));--ec-border-color:var(--ec-color-500);--ec-accent-color:var(--ec-color-600);--ec-button-bg-color:var(--ec-bg-color);--ec-button-border-color:var(--ec-color-600);--ec-button-text-color:var(--ec-text-color);--ec-button-active-bg-color:var(--ec-color-300);--ec-button-active-border-color:var(--ec-color-700);--ec-button-active-text-color:var(--ec-button-text-color);--ec-event-bg-color:#039be5;--ec-event-text-color:#fff;--ec-bg-event-color:var(--ec-color-500);--ec-bg-event-opacity:0.3;--ec-list-day-bg-color:var(--ec-bg-color,var(--ec-bg-fallback-color));--ec-today-bg-color:rgba(255,220,40,.15);--ec-highlight-color:rgba(188,232,241,.3);--ec-popup-bg-color:var(--ec-bg-color,var(--ec-bg-fallback-color));--ec-now-indicator-color:#ea4335}.ec-dark .ec{color-scheme:dark;--ec-h:215;--ec-s:15%;--ec-l-300:25.50%;--ec-l-500:42.40%;--ec-l-600:49.80%;--ec-l-700:57.30%;--ec-bg-fallback-color:#22272e}@media(prefers-color-scheme:dark){.ec-auto-dark .ec{color-scheme:dark;--ec-h:215;--ec-s:15%;--ec-l-300:25.50%;--ec-l-500:42.40%;--ec-l-600:49.80%;--ec-l-700:57.30%;--ec-bg-fallback-color:#22272e}}.ec-timeline .ec-container{display:flex;flex:1 1 0%;min-height:0}.ec-timeline .ec-main{display:flex;flex-direction:column;min-width:0}.ec-timeline .ec-content{flex-direction:column}.ec-timeline .ec-body{flex:1 1 auto;overflow:auto}.ec-timeline .ec-body .ec-content{min-height:100%;min-width:-moz-max-content;min-width:max-content;position:relative}.ec-timeline .ec-body .ec-days{flex-shrink:0}.ec-timeline .ec-body .ec-days:not(:last-child){flex-grow:0}.ec-timeline .ec-header{overflow:hidden}.ec-timeline .ec-header .ec-days{min-width:-moz-max-content;min-width:max-content}.ec-timeline .ec-header .ec-day{display:flex;flex-basis:auto;flex-direction:column}.ec-timeline .ec-day,.ec-timeline .ec-header .ec-day:first-child .ec-day-head,.ec-timeline .ec-header .ec-day:first-child .ec-time:first-child{border:none}.ec-timeline .ec-day-head{border-style:none none none solid}.ec-timeline .ec-times{border-top:1px solid var(--ec-border-color);display:flex}.ec-timeline .ec-time{border-left:1px solid var(--ec-border-color);box-sizing:border-box;font-size:.95em;min-height:24px;overflow:hidden;text-overflow:ellipsis}.ec-timeline .ec-line,.ec-timeline .ec-time{width:72px}.ec-timeline .ec-events{height:100%;margin:0;position:relative}.ec-timeline .ec-event{position:absolute}.ec-timeline .ec-bg-event{height:100%;z-index:auto}.ec-timeline .ec-lines{display:flex}.ec-timeline .ec-line:not(:first-child):after{border-left:1px solid var(--ec-border-color);content:"";height:100%;pointer-events:none;position:absolute}.ec-timeline .ec-sidebar{border-right-style:solid;border:1px solid var(--ec-border-color);border-right:1px var(--ec-border-color);padding:0}.ec-timeline .ec-sidebar .ec-sidebar-title{border-bottom:1px solid var(--ec-border-color);box-sizing:initial;flex-shrink:0}.ec-timeline .ec-sidebar .ec-content{flex:1;overflow:hidden}.ec-timeline .ec-sidebar .ec-resource{flex-shrink:0;padding:0 8px}.ec-timeline .ec-sidebar .ec-resource:not(:last-child){border-bottom:1px solid var(--ec-border-color);flex-grow:0}.ec-timeline .ec-sidebar .ec-resource:last-child{flex-basis:100%!important}.ec-timeline .ec-sidebar .ec-resource span{padding-top:8px}.ec-time-grid .ec-body .ec-event{position:absolute}.ec-time-grid .ec-body .ec-event-title{position:sticky;top:0}.ec-time-grid .ec-body .ec-resizer{bottom:0;cursor:ns-resize;height:50%;left:0;max-height:8px;right:0}.ec-time-grid .ec-body .ec-resizer.ec-start{bottom:auto;top:0}.ec-time-grid .ec-bg-event{width:100%;z-index:1}.ec-time-grid .ec-time{line-height:24px;position:relative;text-align:right;top:-12px}.ec-time-grid .ec-all-day .ec-time,.ec-time-grid .ec-header .ec-time{height:0;overflow-y:hidden;visibility:hidden}.ec-time-grid .ec-line,.ec-time-grid .ec-time{height:24px}.ec-time-grid .ec-lines{width:8px}.ec-time-grid .ec-line:not(:first-child):after{border-bottom:1px solid var(--ec-border-color);content:"";pointer-events:none;position:absolute;width:100%}.ec-time-grid .ec-body:not(.ec-compact) .ec-line:nth-child(2n):after{border-bottom-style:dotted}.ec-time-grid .ec-sidebar-title{height:0;overflow-y:hidden;text-align:right;visibility:hidden}.ec-time-grid .ec-all-day .ec-sidebar-title{height:auto;padding:8px 0;visibility:visible}.ec-day-grid .ec-body{flex:1 1 auto}.ec-day-grid .ec-body .ec-day{min-height:5em;position:relative}.ec-day-grid .ec-content{flex-direction:column;height:100%}.ec-day-grid .ec-uniform .ec-content{overflow:hidden}.ec-day-grid .ec-uniform .ec-days{flex:1 1 0%;min-height:0}.ec-day-grid .ec-uniform .ec-day{min-height:0}.ec-day-grid .ec-day:first-child{border-left:none}.ec-day-grid .ec-day-head{border:none;display:block;padding:4px 4px 3px;text-align:right}.ec-day-grid .ec-day-foot{bottom:0;font-size:.85em;padding:2px;position:absolute}.ec-day-grid .ec-day-foot a{cursor:pointer}.ec-day,.ec-days,.ec-resource{flex:1 1 0;max-width:100%;min-width:0}.ec{background-color:var(--ec-bg-color);color:var(--ec-text-color);display:flex;flex-direction:column;-webkit-tap-highlight-color:rgba(0,0,0,0)}.ec ::-webkit-scrollbar{background-color:transparent}.ec ::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:var(--ec-border-color);border:4px solid transparent;border-radius:8px;box-shadow:none;min-height:40px}.ec :hover::-webkit-scrollbar-thumb{background-color:var(--ec-accent-color)}.ec-hidden-scroll{display:none;flex-shrink:0;overflow-y:scroll;visibility:hidden}.ec-with-scroll .ec-hidden-scroll{display:block}.ec-toolbar{align-items:center;display:flex;flex:0 0 auto;justify-content:space-between;margin-bottom:1em}.ec-toolbar>*{margin-bottom:-.5em}.ec-toolbar>*>*{margin-bottom:.5em}.ec-toolbar>*>:not(:last-child){margin-right:.75em}.ec-title{margin:0}.ec-button{background-color:var(--ec-button-bg-color);border:1px solid var(--ec-button-border-color);border-radius:.25rem;font-size:1rem;line-height:1.5;padding:.375rem .75rem}.ec-button:not(:disabled){color:var(--ec-button-text-color);cursor:pointer}.ec-button.ec-active,.ec-button:not(:disabled):hover{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-expander{margin-right:.25em;width:1.25em}.ec-expander .ec-button{aspect-ratio:1;height:1.25em;line-height:normal;padding:0}.ec-button-group{display:inline-flex}.ec-button-group .ec-button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.ec-button-group .ec-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.ec-icon{display:inline-block;width:1em}.ec-icon.ec-next:after,.ec-icon.ec-prev:after{border-right:2px solid;border-top:2px solid;content:"";display:inline-block;height:.5em;position:relative;width:.5em}.ec-icon.ec-prev:after{transform:rotate(-135deg) translate(-2px,2px)}.ec-icon.ec-next:after{transform:rotate(45deg) translate(-2px,2px)}.ec-all-day,.ec-body,.ec-day,.ec-day-head,.ec-days,.ec-header{border:1px solid var(--ec-border-color)}.ec-header{display:flex;flex-shrink:0}.ec-header .ec-resource{flex-direction:column}.ec-header .ec-resource .ec-days{border-top-style:solid}.ec-header .ec-days{border-bottom:none}.ec-header .ec-day{line-height:24px;min-height:24px;overflow:hidden;text-align:center;text-overflow:ellipsis}.ec-all-day{border-top:none;flex-shrink:0}.ec-all-day .ec-days{border-bottom:none}.ec-all-day .ec-day{padding-bottom:4px;position:relative}.ec-body{overflow-x:hidden;overflow-y:auto;position:relative}.ec:not(.ec-list) .ec-body{border-top:none}.ec-sidebar{flex:0 0 auto;flex-direction:column;max-width:100%;padding:0 4px 0 8px;width:auto}.ec-content,.ec-sidebar{display:flex}.ec-list .ec-content{flex-direction:column}.ec-days,.ec-resource{display:flex}.ec-days{border-style:none none solid}.ec-days:last-child{border-bottom:none}.ec-day-grid .ec-days,.ec-resource .ec-days{flex:1 0 auto}.ec-day{border-style:none none none solid}.ec-day.ec-today{background-color:var(--ec-today-bg-color)}.ec-day.ec-highlight{background-color:var(--ec-highlight-color)}.ec-day.ec-other-month .ec-day-head{opacity:.3}.ec-list .ec-day{border:none}.ec-list .ec-day-head{background-color:var(--ec-list-day-bg-color);border-style:solid none;margin:-1px 0 0;padding:8px 14px;position:sticky;top:0;z-index:2}.ec-list .ec-day:first-child .ec-day-head{border-top:none}.ec-list .ec-day-side{float:right}.ec-list .ec-no-events{padding:5em 0;text-align:center}.ec-events{margin:0 6px 0 0}.ec-events.ec-preview,.ec-time-grid .ec-events{position:relative}.ec-all-day .ec-events,.ec-day-grid .ec-events{display:flow-root}.ec-event{background-color:var(--ec-event-bg-color);border-radius:3px;box-shadow:0 0 1px 0 var(--ec-border-color);box-sizing:border-box;color:var(--ec-event-text-color);display:flex;font-size:.85em;line-height:1.5;padding:2px;z-index:1}.ec-all-day .ec-event,.ec-day-grid .ec-event{position:relative}.ec-list .ec-event{background-color:transparent;border-radius:0;color:inherit;flex-direction:row;padding:8px 14px}.ec-event.ec-preview{opacity:.8;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;z-index:1000}.ec-event.ec-pointer{box-shadow:none;color:inherit;display:flex;pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:0}.ec-event-body{display:flex;flex-direction:column;width:100%}.ec-all-day .ec-event-body,.ec-day-grid .ec-event-body,.ec-timeline .ec-event-body{flex-direction:row}.ec-event-tag{border-radius:2px;margin-right:8px;width:4px}.ec-event-time{flex-shrink:0;margin:0 0 1px;max-height:100%;overflow:hidden;white-space:nowrap}.ec-day-grid .ec-event-time,.ec-timeline .ec-event-time{margin:0 3px 0 0;max-width:100%;text-overflow:ellipsis}.ec-event-title{font-weight:inherit;margin:unset;overflow:hidden}.ec-all-day .ec-event-title,.ec-day-grid .ec-event-title,.ec-timeline .ec-event-title{min-height:1.5em;text-overflow:ellipsis;white-space:nowrap}.ec-list .ec-event-title{font-size:1rem}.ec-draggable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ec-ghost{opacity:.5;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ec-bg-events{position:relative}.ec-all-day .ec-bg-events,.ec-day-grid .ec-bg-events{inset:0;position:absolute}.ec-bg-event{background-color:var(--ec-bg-event-color);opacity:var(--ec-bg-event-opacity);position:absolute}.ec-all-day .ec-bg-event,.ec-day-grid .ec-bg-event{height:100%;z-index:auto}.ec-time{white-space:nowrap}.ec-popup{background-color:var(--ec-popup-bg-color);border:1px solid var(--ec-border-color);border-radius:6px;box-shadow:0 1px 3px 0 hsla(var(--ec-hs),50%,.15),0 4px 8px 3px hsla(var(--ec-hs),50%,.15);display:flex;flex-direction:column;min-width:180px;outline:1px solid transparent;padding:8px 10px 14px;position:absolute;top:0;width:110%;z-index:1010}.ec-popup .ec-day-head{display:flex;justify-content:space-between;text-align:left}.ec-popup .ec-day-head a{cursor:pointer;font-size:1.5em;line-height:.8}.ec-popup .ec-events{margin:0;min-height:0;overflow:auto}.ec-extra{height:100%;margin-left:-6.5px;overflow:hidden;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ec-now-indicator{border-top:2px solid var(--ec-now-indicator-color);pointer-events:none;position:absolute;width:100%;z-index:1005}.ec-now-indicator:before{background:var(--ec-now-indicator-color);border-radius:50%;content:"";height:12px;margin-top:-7px;pointer-events:none;position:absolute;width:12px}.ec-resizer{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ec-all-day .ec-resizer,.ec-day-grid .ec-resizer,.ec-timeline .ec-resizer{bottom:0;cursor:ew-resize;max-width:8px;right:0;top:0;width:50%}.ec-all-day .ec-resizer.ec-start,.ec-day-grid .ec-resizer.ec-start,.ec-timeline .ec-resizer.ec-start{left:0;right:auto}.ec-dragging{cursor:pointer!important}.ec-resizing-y{cursor:ns-resize!important}.ec-resizing-x{cursor:ew-resize!important}
1
+ .ec{color-scheme:light;--ec-h:0;--ec-s:0%;--ec-l-300:91.00%;--ec-l-500:83.50%;--ec-l-600:78.40%;--ec-l-700:71.40%;--ec-bg-fallback-color:#fff;--ec-hs:var(--ec-h),var(--ec-s);--ec-color-300:hsl(var(--ec-hs),var(--ec-l-300));--ec-color-500:hsl(var(--ec-hs),var(--ec-l-500));--ec-color-600:hsl(var(--ec-hs),var(--ec-l-600));--ec-color-700:hsl(var(--ec-hs),var(--ec-l-700));--ec-border-color:var(--ec-color-500);--ec-accent-color:var(--ec-color-600);--ec-button-bg-color:var(--ec-bg-color);--ec-button-border-color:var(--ec-color-600);--ec-button-text-color:var(--ec-text-color);--ec-button-active-bg-color:var(--ec-color-300);--ec-button-active-border-color:var(--ec-color-700);--ec-button-active-text-color:var(--ec-button-text-color);--ec-event-bg-color:#039be5;--ec-event-text-color:#fff;--ec-bg-event-color:var(--ec-color-500);--ec-bg-event-opacity:0.3;--ec-list-day-bg-color:var(--ec-bg-color,var(--ec-bg-fallback-color));--ec-today-bg-color:rgba(255,220,40,.15);--ec-highlight-color:rgba(188,232,241,.3);--ec-popup-bg-color:var(--ec-bg-color,var(--ec-bg-fallback-color));--ec-now-indicator-color:#ea4335}.ec-dark .ec{color-scheme:dark;--ec-h:215;--ec-s:15%;--ec-l-300:25.50%;--ec-l-500:42.40%;--ec-l-600:49.80%;--ec-l-700:57.30%;--ec-bg-fallback-color:#22272e}@media(prefers-color-scheme:dark){.ec-auto-dark .ec{color-scheme:dark;--ec-h:215;--ec-s:15%;--ec-l-300:25.50%;--ec-l-500:42.40%;--ec-l-600:49.80%;--ec-l-700:57.30%;--ec-bg-fallback-color:#22272e}}.ec-timeline .ec-container{display:flex;flex:1 1 0%;min-height:0}.ec-timeline .ec-main{display:flex;flex-direction:column;min-width:0}.ec-timeline .ec-content{flex-direction:column}.ec-timeline .ec-body{flex:1 1 auto;overflow:auto}.ec-timeline .ec-body .ec-content{min-height:100%;min-width:-moz-max-content;min-width:max-content;position:relative}.ec-timeline .ec-body .ec-days{flex-shrink:0}.ec-timeline .ec-body .ec-days:not(:last-child){flex-grow:0}.ec-timeline .ec-header{overflow:hidden}.ec-timeline .ec-header .ec-days{min-width:-moz-max-content;min-width:max-content}.ec-timeline .ec-header .ec-day{display:flex;flex-basis:auto;flex-direction:column}.ec-timeline .ec-day,.ec-timeline .ec-header .ec-day:first-child .ec-day-head,.ec-timeline .ec-header .ec-day:first-child .ec-time:first-child{border:none}.ec-timeline .ec-day-head{border-style:none none none solid}.ec-timeline .ec-times{border-top:1px solid var(--ec-border-color);display:flex}.ec-timeline .ec-time{border-left:1px solid var(--ec-border-color);box-sizing:border-box;font-size:.95em;min-height:24px;overflow:hidden;text-overflow:ellipsis}.ec-timeline .ec-line,.ec-timeline .ec-time{width:72px}.ec-timeline .ec-events{height:100%;margin:0;position:relative}.ec-timeline .ec-event{position:absolute}.ec-timeline .ec-bg-event{height:100%;z-index:auto}.ec-timeline .ec-lines{display:flex}.ec-timeline .ec-line:not(:first-child):after{border-left:1px solid var(--ec-border-color);content:"";height:100%;pointer-events:none;position:absolute}.ec-timeline .ec-sidebar{border-right-style:solid;border:1px solid var(--ec-border-color);border-right:1px var(--ec-border-color);padding:0}.ec-timeline .ec-sidebar .ec-sidebar-title{border-bottom:1px solid var(--ec-border-color);box-sizing:initial;flex-shrink:0}.ec-timeline .ec-sidebar .ec-content{flex:1;overflow:hidden}.ec-timeline .ec-sidebar .ec-resource{flex-shrink:0;padding:0 8px}.ec-timeline .ec-sidebar .ec-resource:not(:last-child){border-bottom:1px solid var(--ec-border-color);flex-grow:0}.ec-timeline .ec-sidebar .ec-resource:last-child{flex-basis:100%!important}.ec-timeline .ec-sidebar .ec-resource span{padding-top:8px}.ec-time-grid .ec-body .ec-event{position:absolute}.ec-time-grid .ec-body .ec-event-title{position:sticky;top:0}.ec-time-grid .ec-body .ec-resizer{bottom:0;cursor:ns-resize;height:50%;left:0;max-height:8px;right:0}.ec-time-grid .ec-body .ec-resizer.ec-start{bottom:auto;top:0}.ec-time-grid .ec-bg-event{width:100%;z-index:1}.ec-time-grid .ec-time{line-height:24px;position:relative;text-align:right;top:-12px}.ec-time-grid .ec-all-day .ec-time,.ec-time-grid .ec-header .ec-time{height:0;overflow-y:hidden;visibility:hidden}.ec-time-grid .ec-line,.ec-time-grid .ec-time{height:24px}.ec-time-grid .ec-lines{width:8px}.ec-time-grid .ec-line:not(:first-child):after{border-bottom:1px solid var(--ec-border-color);content:"";pointer-events:none;position:absolute;width:100%}.ec-time-grid .ec-body:not(.ec-compact) .ec-line:nth-child(2n):after{border-bottom-style:dotted}.ec-time-grid .ec-sidebar-title{height:0;overflow-y:hidden;text-align:right;visibility:hidden}.ec-time-grid .ec-all-day .ec-sidebar-title{height:auto;padding:8px 0;visibility:visible}.ec-day-grid .ec-body{flex:1 1 auto}.ec-day-grid .ec-body .ec-day{min-height:5em;position:relative}.ec-day-grid .ec-content{flex-direction:column;height:100%}.ec-day-grid .ec-uniform .ec-content{overflow:hidden}.ec-day-grid .ec-uniform .ec-days{flex:1 1 0%;min-height:0}.ec-day-grid .ec-uniform .ec-day{min-height:0}.ec-day-grid .ec-day:first-child{border-left:none}.ec-day-grid .ec-day-head{border:none;display:flex;flex-direction:row-reverse;justify-content:space-between;padding:4px 4px 3px}.ec-day-grid .ec-day-foot{bottom:0;font-size:.85em;padding:2px;position:absolute}.ec-day-grid .ec-day-foot a{cursor:pointer}.ec-day,.ec-days,.ec-resource{flex:1 1 0;max-width:100%;min-width:0}.ec{background-color:var(--ec-bg-color);color:var(--ec-text-color);display:flex;flex-direction:column;-webkit-tap-highlight-color:rgba(0,0,0,0)}.ec ::-webkit-scrollbar{background-color:transparent}.ec ::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:var(--ec-border-color);border:4px solid transparent;border-radius:8px;box-shadow:none;min-height:40px}.ec :hover::-webkit-scrollbar-thumb{background-color:var(--ec-accent-color)}.ec-hidden-scroll{display:none;flex-shrink:0;overflow-y:scroll;visibility:hidden}.ec-with-scroll .ec-hidden-scroll{display:block}.ec-toolbar{align-items:center;display:flex;flex:0 0 auto;justify-content:space-between;margin-bottom:1em}.ec-toolbar>*{margin-bottom:-.5em}.ec-toolbar>*>*{margin-bottom:.5em}.ec-toolbar>*>:not(:last-child){margin-right:.75em}.ec-title{margin:0}.ec-button{background-color:var(--ec-button-bg-color);border:1px solid var(--ec-button-border-color);border-radius:.25rem;font-size:1rem;line-height:1.5;padding:.375rem .75rem}.ec-button:not(:disabled){color:var(--ec-button-text-color);cursor:pointer}.ec-button.ec-active,.ec-button:not(:disabled):hover{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-expander{margin-right:.25em;width:1.25em}.ec-expander .ec-button{aspect-ratio:1;height:1.25em;line-height:normal;padding:0}.ec-button-group{display:inline-flex}.ec-button-group .ec-button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.ec-button-group .ec-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.ec-icon{display:inline-block;width:1em}.ec-icon.ec-next:after,.ec-icon.ec-prev:after{border-right:2px solid;border-top:2px solid;content:"";display:inline-block;height:.5em;position:relative;width:.5em}.ec-icon.ec-prev:after{transform:rotate(-135deg) translate(-2px,2px)}.ec-icon.ec-next:after{transform:rotate(45deg) translate(-2px,2px)}.ec-all-day,.ec-body,.ec-day,.ec-day-head,.ec-days,.ec-header{border:1px solid var(--ec-border-color)}.ec-header{display:flex;flex-shrink:0}.ec-header .ec-resource{flex-direction:column}.ec-header .ec-resource .ec-days{border-top-style:solid}.ec-header .ec-days{border-bottom:none}.ec-header .ec-day{line-height:24px;min-height:24px;overflow:hidden;text-align:center;text-overflow:ellipsis}.ec-all-day{border-top:none;flex-shrink:0}.ec-all-day .ec-days{border-bottom:none}.ec-all-day .ec-day{padding-bottom:4px;position:relative}.ec-body{overflow-x:hidden;overflow-y:auto;position:relative}.ec:not(.ec-list) .ec-body{border-top:none}.ec-sidebar{flex:0 0 auto;flex-direction:column;max-width:100%;padding:0 4px 0 8px;width:auto}.ec-content,.ec-sidebar{display:flex}.ec-list .ec-content{flex-direction:column}.ec-days,.ec-resource{display:flex}.ec-days{border-style:none none solid}.ec-days:last-child{border-bottom:none}.ec-day-grid .ec-days,.ec-resource .ec-days{flex:1 0 auto}.ec-day{border-style:none none none solid}.ec-day.ec-today{background-color:var(--ec-today-bg-color)}.ec-day.ec-highlight{background-color:var(--ec-highlight-color)}.ec-day.ec-disabled{position:relative}.ec-day.ec-disabled:after{background-color:var(--ec-bg-event-color);content:"";inset:0 0 0 0;opacity:.3;position:absolute}.ec-day.ec-other-month .ec-day-head time{opacity:.3}.ec-list .ec-day{border:none}.ec-list .ec-day-head{background-color:var(--ec-list-day-bg-color);border-style:solid none;margin:-1px 0 0;padding:8px 14px;position:sticky;top:0;z-index:2}.ec-list .ec-day:first-child .ec-day-head{border-top:none}.ec-list .ec-day-side{float:right}.ec-list .ec-no-events{padding:5em 0;text-align:center}.ec-events{margin:0 6px 0 0}.ec-events.ec-preview,.ec-time-grid .ec-events{position:relative}.ec-all-day .ec-events,.ec-day-grid .ec-events{display:flow-root}.ec-event{background-color:var(--ec-event-bg-color);border-radius:3px;box-shadow:0 0 1px 0 var(--ec-border-color);box-sizing:border-box;color:var(--ec-event-text-color);display:flex;font-size:.85em;line-height:1.5;padding:2px;z-index:1}.ec-all-day .ec-event,.ec-day-grid .ec-event{position:relative}.ec-list .ec-event{background-color:transparent;border-radius:0;color:inherit;flex-direction:row;padding:8px 14px}.ec-event.ec-preview{opacity:.8;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;z-index:1000}.ec-event.ec-pointer{box-shadow:none;color:inherit;display:flex;pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:0}.ec-event-body{display:flex;flex-direction:column;width:100%}.ec-all-day .ec-event-body,.ec-day-grid .ec-event-body,.ec-timeline .ec-event-body{flex-direction:row}.ec-event-tag{border-radius:2px;margin-right:8px;width:4px}.ec-event-time{flex-shrink:0;margin:0 0 1px;max-height:100%;overflow:hidden;white-space:nowrap}.ec-day-grid .ec-event-time,.ec-timeline .ec-event-time{margin:0 3px 0 0;max-width:100%;text-overflow:ellipsis}.ec-event-title{font-weight:inherit;margin:unset;overflow:hidden}.ec-all-day .ec-event-title,.ec-day-grid .ec-event-title,.ec-timeline .ec-event-title{min-height:1.5em;text-overflow:ellipsis;white-space:nowrap}.ec-list .ec-event-title{font-size:1rem}.ec-draggable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ec-ghost{opacity:.5;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ec-bg-events{position:relative}.ec-all-day .ec-bg-events,.ec-day-grid .ec-bg-events{inset:0;position:absolute}.ec-bg-event{background-color:var(--ec-bg-event-color);opacity:var(--ec-bg-event-opacity);position:absolute}.ec-all-day .ec-bg-event,.ec-day-grid .ec-bg-event{height:100%;z-index:auto}.ec-time{white-space:nowrap}.ec-popup{background-color:var(--ec-popup-bg-color);border:1px solid var(--ec-border-color);border-radius:6px;box-shadow:0 1px 3px 0 hsla(var(--ec-hs),50%,.15),0 4px 8px 3px hsla(var(--ec-hs),50%,.15);display:flex;flex-direction:column;min-width:180px;outline:1px solid transparent;padding:8px 10px 14px;position:absolute;top:0;width:110%;z-index:1010}.ec-popup .ec-day-head{display:flex;justify-content:space-between;text-align:left}.ec-popup .ec-day-head a{cursor:pointer;font-size:1.5em;line-height:.8}.ec-popup .ec-events{margin:0;min-height:0;overflow:auto}.ec-extra{height:100%;margin-left:-6.5px;overflow:hidden;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ec-now-indicator{border-top:2px solid var(--ec-now-indicator-color);pointer-events:none;position:absolute;width:100%;z-index:1005}.ec-now-indicator:before{background:var(--ec-now-indicator-color);border-radius:50%;content:"";height:12px;margin-top:-7px;pointer-events:none;position:absolute;width:12px}.ec-resizer{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ec-all-day .ec-resizer,.ec-day-grid .ec-resizer,.ec-timeline .ec-resizer{bottom:0;cursor:ew-resize;max-width:8px;right:0;top:0;width:50%}.ec-all-day .ec-resizer.ec-start,.ec-day-grid .ec-resizer.ec-start,.ec-timeline .ec-resizer.ec-start{left:0;right:auto}.ec-dragging{cursor:pointer!important}.ec-resizing-y{cursor:ns-resize!important}.ec-resizing-x{cursor:ew-resize!important}