@event-calendar/core 4.7.0 → 5.0.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.
Files changed (93) hide show
  1. package/README.md +29 -51
  2. package/dist/index.css +627 -731
  3. package/dist/index.js +2500 -3191
  4. package/package.json +2 -2
  5. package/src/Auxiliary.svelte +2 -13
  6. package/src/Buttons.svelte +62 -52
  7. package/src/Calendar.svelte +9 -3
  8. package/src/lib/a11y.js +2 -2
  9. package/src/lib/attachments.js +61 -0
  10. package/src/lib/chunks.js +117 -0
  11. package/src/lib/components/BaseDay.svelte +50 -0
  12. package/src/lib/components/BaseEvent.svelte +3 -3
  13. package/src/lib/components/ColHead.svelte +34 -0
  14. package/src/lib/components/DayHeader.svelte +14 -0
  15. package/src/lib/components/InteractableEvent.svelte +1 -3
  16. package/src/lib/components/index.js +3 -0
  17. package/src/lib/date.js +1 -1
  18. package/src/lib/dom.js +0 -4
  19. package/src/lib/events.js +10 -134
  20. package/src/lib/index.js +3 -2
  21. package/src/lib/{times.js → slots.js} +14 -19
  22. package/src/lib/stores.js +0 -33
  23. package/src/lib/utils.js +11 -2
  24. package/src/lib/view.js +0 -4
  25. package/src/plugins/day-grid/Day.svelte +36 -129
  26. package/src/plugins/day-grid/Event.svelte +42 -41
  27. package/src/plugins/day-grid/Popup.svelte +65 -48
  28. package/src/plugins/day-grid/View.svelte +76 -4
  29. package/src/plugins/day-grid/index.js +5 -5
  30. package/src/plugins/day-grid/lib.js +61 -0
  31. package/src/plugins/day-grid/stores.js +2 -20
  32. package/src/plugins/interaction/Action.svelte +40 -45
  33. package/src/plugins/interaction/Auxiliary.svelte +4 -4
  34. package/src/plugins/interaction/Pointer.svelte +8 -12
  35. package/src/plugins/interaction/Resizer.svelte +2 -2
  36. package/src/plugins/interaction/lib/utils.js +1 -5
  37. package/src/plugins/list/Day.svelte +8 -24
  38. package/src/plugins/list/View.svelte +39 -2
  39. package/src/plugins/resource-time-grid/Label.svelte +2 -2
  40. package/src/plugins/resource-time-grid/View.svelte +38 -82
  41. package/src/plugins/resource-time-grid/index.js +18 -10
  42. package/src/plugins/resource-time-grid/lib.js +31 -0
  43. package/src/plugins/resource-time-grid/options.js +10 -0
  44. package/src/plugins/resource-time-grid/stores.js +34 -0
  45. package/src/plugins/resource-timeline/Day.svelte +10 -73
  46. package/src/plugins/resource-timeline/Event.svelte +14 -23
  47. package/src/plugins/resource-timeline/Header.svelte +5 -5
  48. package/src/plugins/resource-timeline/Label.svelte +4 -12
  49. package/src/plugins/resource-timeline/NowIndicator.svelte +33 -28
  50. package/src/plugins/resource-timeline/View.svelte +129 -14
  51. package/src/plugins/resource-timeline/index.js +26 -23
  52. package/src/plugins/resource-timeline/lib.js +115 -118
  53. package/src/plugins/resource-timeline/stores.js +11 -7
  54. package/src/plugins/time-grid/AllDayEvent.svelte +31 -0
  55. package/src/plugins/time-grid/Day.svelte +11 -99
  56. package/src/plugins/time-grid/Event.svelte +18 -20
  57. package/src/plugins/time-grid/NowIndicator.svelte +32 -10
  58. package/src/plugins/time-grid/View.svelte +127 -35
  59. package/src/plugins/time-grid/index.js +10 -8
  60. package/src/plugins/time-grid/lib.js +142 -0
  61. package/src/plugins/time-grid/options.js +57 -0
  62. package/src/plugins/time-grid/stores.js +41 -8
  63. package/src/storage/options.js +4 -39
  64. package/src/storage/state.js +1 -4
  65. package/src/storage/stores.js +42 -11
  66. package/src/styles/days.css +91 -0
  67. package/src/styles/events.css +180 -0
  68. package/src/styles/index.css +126 -0
  69. package/src/styles/now-indicator.css +35 -0
  70. package/src/styles/popup.css +30 -0
  71. package/src/styles/sidebar.css +59 -0
  72. package/src/styles/slots.css +42 -0
  73. package/src/styles/theme.css +68 -0
  74. package/src/styles/toolbar.css +80 -0
  75. package/src/lib/actions.js +0 -52
  76. package/src/plugins/day-grid/Body.svelte +0 -54
  77. package/src/plugins/day-grid/Header.svelte +0 -20
  78. package/src/plugins/day-grid/Week.svelte +0 -60
  79. package/src/plugins/list/Body.svelte +0 -44
  80. package/src/plugins/resource-timeline/Body.svelte +0 -67
  81. package/src/plugins/resource-timeline/Days.svelte +0 -72
  82. package/src/plugins/resource-timeline/Sidebar.svelte +0 -35
  83. package/src/plugins/time-grid/Body.svelte +0 -43
  84. package/src/plugins/time-grid/Section.svelte +0 -29
  85. package/src/plugins/time-grid/all-day/Day.svelte +0 -65
  86. package/src/plugins/time-grid/all-day/Event.svelte +0 -37
  87. package/src/plugins/time-grid/all-day/Week.svelte +0 -65
  88. package/src/plugins/time-grid/utils.js +0 -58
  89. package/src/styles/day-grid.scss +0 -51
  90. package/src/styles/index.scss +0 -553
  91. package/src/styles/theme.scss +0 -95
  92. package/src/styles/time-grid.scss +0 -83
  93. package/src/styles/timeline.scss +0 -152
package/dist/index.css CHANGED
@@ -1,780 +1,676 @@
1
1
  /*!
2
- * EventCalendar v4.7.0
2
+ * EventCalendar v5.0.0
3
3
  * https://github.com/vkurko/calendar
4
4
  */
5
5
  .ec {
6
- /* HSL */
7
- color-scheme: light;
8
- --ec-h: 0;
9
- --ec-s: 0%;
10
- --ec-l-300: 91.00%;
11
- --ec-l-500: 83.50%;
12
- --ec-l-600: 78.40%;
13
- --ec-l-700: 71.40%;
14
- --ec-bg-fallback-color: #fff;
15
- --ec-hs: var(--ec-h), var(--ec-s);
16
- /* Main color */
17
- --ec-color-300: hsl(var(--ec-hs), var(--ec-l-300));
18
- --ec-color-500: hsl(var(--ec-hs), var(--ec-l-500));
19
- --ec-color-600: hsl(var(--ec-hs), var(--ec-l-600));
20
- --ec-color-700: hsl(var(--ec-hs), var(--ec-l-700));
21
- /* General props */
22
- --ec-border-color: var(--ec-color-500);
23
- --ec-accent-color: var(--ec-color-600);
24
- /* Buttons */
25
- --ec-button-bg-color: var(--ec-bg-color);
26
- --ec-button-border-color: var(--ec-color-600);
27
- --ec-button-text-color: var(--ec-text-color);
28
- --ec-button-active-bg-color: var(--ec-color-300);
29
- --ec-button-active-border-color: var(--ec-color-700);
30
- --ec-button-active-text-color: var(--ec-button-text-color);
31
- /* Events */
32
- --ec-event-bg-color: #039be5;
33
- --ec-event-text-color: #fff;
34
- --ec-bg-event-color: var(--ec-color-500);
35
- --ec-bg-event-opacity: 0.3;
36
- /* Days */
37
- --ec-list-day-bg-color: var(--ec-bg-color, var(--ec-bg-fallback-color));
38
- --ec-today-bg-color: rgba(255, 220, 40, .15);
39
- --ec-highlight-color: rgba(188, 232, 241, .3);
40
- /* Popup */
41
- --ec-popup-bg-color: var(--ec-bg-color, var(--ec-bg-fallback-color));
42
- /* Now Indicator */
43
- --ec-now-indicator-color: #ea4335;
44
- }
45
- .ec-dark .ec {
46
- color-scheme: dark;
47
- --ec-h: 215;
48
- --ec-s: 15%;
49
- --ec-l-300: 25.50%;
50
- --ec-l-500: 42.40%;
51
- --ec-l-600: 49.80%;
52
- --ec-l-700: 57.30%;
53
- --ec-bg-fallback-color: #22272e;
54
- }
55
- @media (prefers-color-scheme: dark) {
56
- .ec-auto-dark .ec {
57
- color-scheme: dark;
58
- --ec-h: 215;
59
- --ec-s: 15%;
60
- --ec-l-300: 25.50%;
61
- --ec-l-500: 42.40%;
62
- --ec-l-600: 49.80%;
63
- --ec-l-700: 57.30%;
64
- --ec-bg-fallback-color: #22272e;
65
- }
66
- }
67
-
68
- .ec-timeline .ec-container {
69
- display: flex;
70
- flex: 1 1 0%;
71
- min-height: 0;
72
- }
73
- .ec-timeline .ec-main {
74
- display: flex;
75
- flex-direction: column;
76
- min-width: 0;
77
- position: relative;
78
- }
79
- .ec-timeline .ec-content {
80
- flex-direction: column;
81
- }
82
- .ec-timeline .ec-body {
83
- flex: 1 1 auto;
84
- overflow: auto;
85
- }
86
- .ec-timeline .ec-body .ec-content {
87
- min-height: 100%;
88
- min-width: max-content;
89
- position: relative;
90
- }
91
- .ec-timeline .ec-body .ec-days {
92
- flex-shrink: 0;
93
- }
94
- .ec-timeline .ec-body .ec-days:not(:last-child) {
95
- flex-grow: 0;
96
- }
97
- .ec-timeline .ec-header {
98
- overflow: hidden;
99
- }
100
- .ec-timeline .ec-header .ec-days {
101
- min-width: max-content;
102
- }
103
- .ec-timeline .ec-header .ec-day {
104
- flex-basis: auto;
105
- display: flex;
106
- flex-direction: column;
107
- }
108
- .ec-timeline .ec-header .ec-day:first-child .ec-day-head,
109
- .ec-timeline .ec-header .ec-day:first-child .ec-time:first-child {
110
- border: none;
111
- }
112
- .ec-timeline .ec-day {
113
- border: none;
114
- }
115
- .ec-timeline .ec-day-head {
116
- border-style: none none none solid;
117
- }
118
- .ec-timeline .ec-times {
119
- display: flex;
120
- border-top: 1px solid var(--ec-border-color);
121
- }
122
- .ec-timeline .ec-time {
123
- border-left: 1px solid var(--ec-border-color);
124
- box-sizing: border-box;
125
- font-size: 0.95em;
126
- min-height: 24px;
127
- overflow: hidden;
128
- text-overflow: ellipsis;
129
- }
130
- .ec-timeline .ec-time.ec-minor {
131
- visibility: hidden;
132
- }
133
- .ec-timeline .ec-time, .ec-timeline .ec-line {
134
- width: 72px;
135
- }
136
- .ec-timeline .ec-events {
137
- position: relative;
138
- height: 100%;
139
- margin: 0;
140
- }
141
- .ec-timeline .ec-event {
142
- position: absolute;
143
- }
144
- .ec-timeline .ec-bg-event {
145
- height: 100%;
146
- z-index: auto;
147
- }
148
- .ec-timeline .ec-lines {
149
- display: flex;
150
- }
151
- .ec-timeline .ec-line:not(:first-child):after {
152
- content: "";
153
- position: absolute;
154
- height: 100%;
155
- border-left: 1px solid var(--ec-border-color);
156
- pointer-events: none;
157
- }
158
- .ec-timeline .ec-line.ec-minor:after {
159
- border-left-style: dotted;
160
- }
161
- .ec-timeline .ec-sidebar {
162
- padding: 0;
163
- border: 1px solid var(--ec-border-color);
164
- border-right-style: none;
6
+ color-scheme: light;
7
+
8
+ /* Main colors */
9
+ --ec-color-400: oklch(70.8% 0 0);
10
+ --ec-color-300: oklch(87% 0 0);
11
+ --ec-color-200: oklch(92.2% 0 0);
12
+ --ec-color-100: oklch(97% 0 0);
13
+ --ec-color-50: oklch(98.5% 0 0);
14
+
15
+ /* General props */
16
+ --ec-bg-color: #fff;
17
+ --ec-text-color: currentcolor;
18
+ --ec-border-color: var(--ec-color-300);
19
+
20
+ /* Buttons */
21
+ --ec-button-bg-color: var(--ec-bg-color);
22
+ --ec-button-border-color: var(--ec-border-color);
23
+ --ec-button-text-color: var(--ec-text-color);
24
+ --ec-button-active-bg-color: var(--ec-color-200);
25
+ --ec-button-active-border-color: var(--ec-color-400);
26
+ --ec-button-active-text-color: var(--ec-button-text-color);
27
+
28
+ /* Days */
29
+ --ec-today-bg-color: oklch(98.7% 0.026 102.212);
30
+ --ec-highlight-color: oklch(98.4% 0.019 200.873);
31
+
32
+ /* Events */
33
+ --ec-event-bg-color: oklch(70.7% 0.165 254.624);
34
+ --ec-event-text-color: #fff;
35
+ --ec-bg-event-color: var(--ec-color-300);
36
+ --ec-bg-event-opacity: 0.3;
37
+ --ec-event-col-gap: .375rem;
38
+
39
+ /* Now Indicator */
40
+ --ec-now-indicator-color: oklch(63.7% 0.237 25.331);
41
+
42
+ /* Popup */
43
+ --ec-popup-bg-color: var(--ec-bg-color);
44
+
45
+ .ec-dark & {
46
+ color-scheme: dark;
47
+ --ec-color-400: oklch(43.9% 0 0);
48
+ --ec-color-300: oklch(37.1% 0 0);
49
+ --ec-color-200: oklch(26.9% 0 0);
50
+ --ec-color-100: oklch(20.5% 0 0);
51
+ --ec-color-50: oklch(14.5% 0 0);
52
+ --ec-bg-color: var(--ec-color-100);
53
+ --ec-today-bg-color: oklch(28.6% 0.066 53.813);
54
+ --ec-highlight-color: oklch(30.2% 0.056 229.695);
55
+ --ec-bg-event-opacity: 0.5;
56
+ }
57
+
58
+ @media (prefers-color-scheme: dark) {
59
+ .ec-auto-dark & {
60
+ color-scheme: dark;
61
+ --ec-color-400: oklch(43.9% 0 0);
62
+ --ec-color-300: oklch(37.1% 0 0);
63
+ --ec-color-200: oklch(26.9% 0 0);
64
+ --ec-color-100: oklch(20.5% 0 0);
65
+ --ec-color-50: oklch(14.5% 0 0);
66
+ --ec-bg-color: var(--ec-color-100);
67
+ --ec-today-bg-color: oklch(28.6% 0.066 53.813);
68
+ --ec-highlight-color: oklch(30.2% 0.056 229.695);
69
+ --ec-bg-event-opacity: 0.5;
70
+ }
71
+ }
165
72
  }
166
- .ec-timeline .ec-sidebar .ec-sidebar-title {
167
- flex-shrink: 0;
168
- border-bottom: 1px solid var(--ec-border-color);
169
- box-sizing: content-box;
170
- }
171
- .ec-timeline .ec-sidebar .ec-content {
172
- flex: 1;
173
- overflow: hidden;
174
- }
175
- .ec-timeline .ec-sidebar .ec-resource {
176
- padding: 0 8px;
177
- flex-shrink: 0;
178
- }
179
- .ec-timeline .ec-sidebar .ec-resource:not(:last-child) {
180
- flex-grow: 0;
181
- border-bottom: 1px solid var(--ec-border-color);
182
- }
183
- .ec-timeline .ec-sidebar .ec-resource:last-child {
184
- flex-basis: 100% !important;
185
- }
186
- .ec-timeline .ec-sidebar .ec-resource span {
187
- padding-top: 8px;
188
- height: fit-content;
189
- }
190
-
191
- .ec-time-grid .ec-body .ec-event {
192
- position: absolute;
193
- }
194
- .ec-time-grid .ec-body .ec-event-title {
195
- position: sticky;
196
- top: 0;
197
- }
198
- .ec-time-grid .ec-body .ec-resizer {
199
- left: 0;
200
- right: 0;
201
- bottom: 0;
202
- height: 50%;
203
- max-height: 8px;
204
- cursor: ns-resize;
205
- }
206
- .ec-time-grid .ec-body .ec-resizer.ec-start {
207
- bottom: auto;
208
- top: 0;
209
- }
210
- .ec-time-grid .ec-bg-event {
211
- width: 100%;
212
- z-index: 1;
213
- }
214
- .ec-time-grid .ec-time {
215
- position: relative;
216
- line-height: 24px;
217
- top: -12px;
218
- text-align: right;
219
- }
220
- .ec-time-grid .ec-time.ec-minor {
221
- visibility: hidden;
222
- }
223
- .ec-time-grid .ec-header .ec-time,
224
- .ec-time-grid .ec-all-day .ec-time {
225
- visibility: hidden;
226
- overflow-y: hidden;
227
- height: 0;
228
- }
229
- .ec-time-grid .ec-time,
230
- .ec-time-grid .ec-line {
231
- height: 24px;
232
- }
233
- .ec-time-grid .ec-lines {
234
- width: 8px;
235
- }
236
- .ec-time-grid .ec-line:not(:first-child):after {
237
- content: "";
238
- position: absolute;
239
- width: 100%;
240
- border-bottom: 1px solid var(--ec-border-color);
241
- pointer-events: none;
242
- }
243
- .ec-time-grid .ec-line.ec-minor:after {
244
- border-bottom-style: dotted;
245
- }
246
- .ec-time-grid .ec-sidebar-title {
247
- visibility: hidden;
248
- overflow-y: hidden;
249
- height: 0;
250
- text-align: right;
251
- }
252
- .ec-time-grid .ec-all-day .ec-sidebar-title {
253
- visibility: visible;
254
- height: auto;
255
- padding: 8px 0;
256
- }
257
-
258
- .ec-day-grid .ec-body {
259
- flex: 1 1 auto;
260
- }
261
- .ec-day-grid .ec-body .ec-day {
262
- min-height: 5em;
263
- position: relative;
264
- }
265
- .ec-day-grid .ec-content {
266
- flex-direction: column;
267
- height: 100%;
268
- }
269
- .ec-day-grid .ec-uniform .ec-content {
270
- overflow: hidden;
271
- }
272
- .ec-day-grid .ec-uniform .ec-days {
273
- flex: 1 1 0%;
274
- min-height: 0;
275
- }
276
- .ec-day-grid .ec-uniform .ec-day {
277
- min-height: 0;
278
- }
279
- .ec-day-grid .ec-day:first-child {
280
- border-left: none;
281
- }
282
- .ec-day-grid .ec-day-head {
283
- display: flex;
284
- flex-direction: row-reverse;
285
- justify-content: space-between;
286
- border: none;
287
- padding: 4px 4px 3px;
288
- }
289
- .ec-day-grid .ec-day-foot {
290
- position: absolute;
291
- bottom: 0;
292
- padding: 2px;
293
- font-size: 0.85em;
294
- }
295
- .ec-day-grid .ec-day-foot a {
296
- cursor: pointer;
297
- }
298
-
299
- /* Grid */
300
- .ec-days,
301
- .ec-day,
302
- .ec-resource {
303
- flex: 1 1 0;
304
- min-width: 0;
305
- max-width: 100%;
306
- }
307
-
308
- .ec {
309
- display: flex;
310
- flex-direction: column;
311
- color: var(--ec-text-color);
312
- background-color: var(--ec-bg-color);
313
- -webkit-tap-highlight-color: transparent;
314
- /* Scrollbar */
315
- }
316
- .ec ::-webkit-scrollbar {
317
- background-color: transparent;
318
- }
319
- .ec ::-webkit-scrollbar-thumb {
320
- border: 4px solid transparent;
321
- box-shadow: none;
322
- background-color: var(--ec-border-color);
323
- background-clip: padding-box;
324
- border-radius: 8px;
325
- min-height: 40px;
326
- }
327
- .ec :hover::-webkit-scrollbar-thumb {
328
- background-color: var(--ec-accent-color);
329
- }
330
-
331
- .ec-hidden-scroll {
332
- display: none;
333
- overflow-y: scroll;
334
- visibility: hidden;
335
- flex-shrink: 0;
73
+ .ec-day {
74
+ --ec-day-bg-color: var(--ec-bg-color);
75
+ background-color: var(--ec-day-bg-color);
76
+
77
+ &.ec-today {
78
+ --ec-day-bg-color: var(--ec-today-bg-color);
79
+ }
80
+
81
+ &.ec-highlight {
82
+ --ec-day-bg-color: var(--ec-highlight-color);
83
+ }
84
+
85
+ .ec-time-grid .ec-body & {
86
+ background-image:
87
+ linear-gradient(var(--ec-day-bg-color) 1px, transparent 1px),
88
+ linear-gradient(var(--ec-border-color) 1px, transparent 1px),
89
+ linear-gradient(to right, var(--ec-day-bg-color) 1px, transparent 1px),
90
+ linear-gradient(var(--ec-border-color) 1px, transparent 1px);
91
+ background-size:
92
+ 100% 100%,
93
+ 100% calc(var(--ec-slot-height) * var(--ec-slot-label-periodicity)),
94
+ 2px 100%,
95
+ 100% var(--ec-slot-height);
96
+ }
97
+
98
+ .ec-timeline:not(.ec-month-view) .ec-body & {
99
+ background-image:
100
+ linear-gradient(to right, var(--ec-day-bg-color) 1px, transparent 1px),
101
+ linear-gradient(to right, var(--ec-border-color) 1px, transparent 1px),
102
+ linear-gradient(var(--ec-day-bg-color) 1px, transparent 1px),
103
+ linear-gradient(to right, var(--ec-border-color) 1px, transparent 1px);
104
+ background-size:
105
+ 100% 100%,
106
+ calc(var(--ec-slot-width) * var(--ec-slot-label-periodicity)) 100%,
107
+ 100% 2px,
108
+ var(--ec-slot-width) 100%;
109
+ }
110
+
111
+ .ec-day-grid & {
112
+ display: flex;
113
+ flex-direction: column;
114
+ justify-content: space-between;
115
+ min-block-size: 5em;
116
+ }
117
+
118
+ .ec-day-grid .ec-uniform & {
119
+ min-block-size: auto;
120
+ }
336
121
  }
337
- .ec-with-scroll .ec-hidden-scroll {
338
- display: block;
122
+ .ec-day-head {
123
+ display: flex;
124
+ flex-direction: row-reverse;
125
+ justify-content: space-between;
126
+ padding: .375rem;
127
+
128
+ .ec-day.ec-other-month & time {
129
+ opacity: .3;
130
+ }
131
+
132
+ .ec-list & {
133
+ background-color: var(--ec-day-bg-color);
134
+ border-block-end: 1px solid var(--ec-border-color);
135
+ flex-direction: unset;
136
+ margin: 0 0 -1px;
137
+ padding: .5em 1.5em;
138
+ position: sticky;
139
+ inset-block-start: 0;
140
+ z-index: 2;
141
+ }
142
+ }
143
+ .ec-day-foot {
144
+ padding: .18rem;
145
+ font-size: .85em;
146
+
147
+ a {
148
+ cursor: pointer;
149
+ }
150
+ }
151
+ .ec-disabled {
152
+ position: relative;
153
+ &:after {
154
+ content: '';
155
+ position: absolute;
156
+ inset: 0 0 0 0;
157
+ background-color: var(--ec-bg-event-color);
158
+ opacity: var(--ec-bg-event-opacity);
159
+ }
339
160
  }
340
-
341
161
  /* Toolbar */
342
162
  .ec-toolbar {
343
- flex: 0 0 auto;
344
- display: flex;
345
- justify-content: space-between;
346
- align-items: center;
347
- margin-bottom: 1em;
348
- }
349
- .ec-toolbar > * {
350
- margin-bottom: -0.5em;
351
- }
352
- .ec-toolbar > * > * {
353
- margin-bottom: 0.5em;
163
+ display: flex;
164
+ justify-content: space-between;
165
+ align-items: center;
166
+ margin-block-end: 1em;
167
+
168
+ > * {
169
+ display: inline-flex;
170
+ flex-wrap: wrap;
171
+ column-gap: .75rem;
172
+ row-gap: .5rem;
173
+ }
354
174
  }
355
- .ec-toolbar > * > *:not(:last-child) {
356
- margin-right: 0.75em;
357
- }
358
-
359
175
  .ec-title {
360
- margin: 0;
176
+ margin: 0;
361
177
  }
362
-
363
178
  .ec-button {
364
- background-color: var(--ec-button-bg-color);
365
- border: 1px solid var(--ec-button-border-color);
366
- padding: 0.375rem 0.75rem;
367
- font-size: 1rem;
368
- line-height: 1.5;
369
- border-radius: 0.25rem;
370
- }
371
- .ec-button:not(:disabled) {
372
- color: var(--ec-button-text-color);
373
- cursor: pointer;
374
- }
375
- .ec-button:not(:disabled):hover, .ec-button.ec-active {
376
- background-color: var(--ec-button-active-bg-color);
377
- border-color: var(--ec-button-active-border-color);
378
- color: var(--ec-button-active-text-color);
379
- z-index: 1;
380
- }
381
-
382
- .ec-expander {
383
- margin-right: 0.25em;
384
- width: 1.25em;
385
- }
386
- .ec-expander .ec-button {
387
- line-height: normal;
388
- padding: 0;
389
- aspect-ratio: 1;
390
- height: 1.25em;
179
+ background-color: var(--ec-button-bg-color);
180
+ border: 1px solid var(--ec-button-border-color);
181
+ padding: .375rem .75rem;
182
+ font-size: 1rem;
183
+ line-height: 1.5;
184
+ border-radius: .25rem;
185
+
186
+ &:not(:disabled) {
187
+ color: var(--ec-button-text-color);
188
+ cursor: pointer;
189
+ }
190
+
191
+ &:not(:disabled):hover,
192
+ &.ec-active {
193
+ background-color: var(--ec-button-active-bg-color);
194
+ border-color: var(--ec-button-active-border-color);
195
+ color: var(--ec-button-active-text-color);
196
+ z-index: 1; /* make all borders visible */
197
+ }
391
198
  }
392
-
393
199
  .ec-button-group {
394
- display: inline-flex;
395
- }
396
- .ec-button-group .ec-button:not(:first-child) {
397
- border-top-left-radius: 0;
398
- border-bottom-left-radius: 0;
399
- margin-left: -1px;
400
- }
401
- .ec-button-group .ec-button:not(:last-child) {
402
- border-top-right-radius: 0;
403
- border-bottom-right-radius: 0;
404
- }
200
+ display: inline-flex;
201
+ vertical-align: top;
405
202
 
406
- .ec-icon {
407
- display: inline-block;
408
- width: 1em;
409
- }
410
- .ec-icon.ec-prev:after, .ec-icon.ec-next:after {
411
- content: "";
412
- position: relative;
413
- width: 0.5em;
414
- height: 0.5em;
415
- border-top: 2px solid currentcolor;
416
- border-right: 2px solid currentcolor;
417
- display: inline-block;
418
- }
419
- .ec-icon.ec-prev:after {
420
- transform: rotate(-135deg) translate(-2px, 2px);
421
- }
422
- .ec-icon.ec-next:after {
423
- transform: rotate(45deg) translate(-2px, 2px);
424
- }
425
-
426
- /* Header */
427
- .ec-header,
428
- .ec-all-day,
429
- .ec-body,
430
- .ec-days,
431
- .ec-day,
432
- .ec-day-head {
433
- border: 1px solid var(--ec-border-color);
434
- }
203
+ .ec-button:not(:first-child) {
204
+ border-start-start-radius: 0;
205
+ border-end-start-radius: 0;
206
+ margin-inline-start: -1px;
207
+ }
435
208
 
436
- .ec-header {
437
- display: flex;
438
- flex-shrink: 0;
439
- }
440
- .ec-header .ec-resource {
441
- flex-direction: column;
209
+ .ec-button:not(:last-child) {
210
+ border-start-end-radius: 0;
211
+ border-end-end-radius: 0;
212
+ }
442
213
  }
443
- .ec-header .ec-resource .ec-days {
444
- border-top-style: solid;
445
- }
446
- .ec-header .ec-days {
447
- border-bottom: none;
448
- }
449
- .ec-header .ec-day {
450
- min-height: 24px;
451
- line-height: 24px;
452
- text-align: center;
453
- overflow: hidden;
454
- text-overflow: ellipsis;
455
- }
456
-
457
- /* All Day */
458
- .ec-all-day {
459
- flex-shrink: 0;
460
- border-top: none;
461
- }
462
- .ec-all-day .ec-days {
463
- border-bottom: none;
464
- }
465
- .ec-all-day .ec-day {
466
- padding-bottom: 4px;
467
- position: relative;
468
- }
469
-
470
- /* Body */
471
- .ec-body {
472
- position: relative;
473
- overflow-x: hidden;
474
- overflow-y: auto;
475
- }
476
- .ec:not(.ec-list) .ec-body {
477
- border-top: none;
214
+ .ec-icon {
215
+ display: inline-block;
216
+ width: 1em;
217
+
218
+ &.ec-prev:after,
219
+ &.ec-next:after {
220
+ content: '';
221
+ position: relative;
222
+ inline-size: .5em;
223
+ block-size: .5em;
224
+ border-block-start: 2px solid currentcolor;
225
+ border-inline-end: 2px solid currentcolor;
226
+ display: inline-block;
227
+ }
228
+
229
+ &.ec-prev:after {
230
+ transform: rotate(-135deg) translate(-2px, 2px);
231
+ }
232
+
233
+ &.ec-next:after {
234
+ transform: rotate(45deg) translate(-2px, 2px);
235
+ }
478
236
  }
479
-
480
237
  .ec-sidebar {
481
- flex: 0 0 auto;
482
- width: auto;
483
- max-width: 100%;
484
- padding: 0 4px 0 8px;
485
- display: flex;
486
- flex-direction: column;
238
+ position: sticky;
239
+ inset-inline-start: 0;
240
+ z-index: 1;
241
+ background-color: var(--ec-bg-color);
242
+ border-inline-end: 1px solid var(--ec-border-color);
243
+ margin-inline-end: -1px;
244
+ text-align: end;
245
+ overflow: clip;
246
+
247
+ .ec-header & {
248
+ padding-block: .375rem;
249
+ }
250
+
251
+ .ec-time-grid & {
252
+ padding-inline: .75rem;
253
+ }
254
+
255
+ .ec-time-grid .ec-body & {
256
+ background-image:
257
+ linear-gradient(to left, transparent .375rem, var(--ec-bg-color) .375rem),
258
+ linear-gradient(var(--ec-bg-color) 1px, transparent 1px),
259
+ linear-gradient(var(--ec-border-color) 1px, transparent 1px),
260
+ linear-gradient(to right, var(--ec-bg-color) 1px, transparent 1px),
261
+ linear-gradient(var(--ec-border-color) 1px, transparent 1px);
262
+ background-size:
263
+ 100% 100%,
264
+ 100% 100%,
265
+ 100% calc(var(--ec-slot-height) * var(--ec-slot-label-periodicity)),
266
+ 2px 100%,
267
+ 100% var(--ec-slot-height);
268
+ }
269
+
270
+ .ec-timeline .ec-body & {
271
+ grid-area: 1 / 1 / -1 / 2;
272
+ display: grid;
273
+ grid-template-rows: subgrid;
274
+ background-color: var(--ec-border-color);
275
+ }
276
+ }
277
+ .ec-row-head {
278
+ display: flex;
279
+ background-color: var(--ec-bg-color);
280
+ padding: .375em .75rem;
281
+ min-block-size: 1.5em;
487
282
  }
488
-
489
- .ec-content {
490
- display: flex;
491
- }
492
- .ec-list .ec-content {
493
- flex-direction: column;
494
- }
495
-
496
- .ec-resource {
497
- display: flex;
498
- }
499
-
500
- .ec-days {
501
- display: flex;
502
- border-style: none none solid;
503
- }
504
- .ec-days:last-child {
505
- border-bottom: none;
506
- }
507
- .ec-day-grid .ec-days, .ec-resource .ec-days {
508
- flex: 1 0 auto;
509
- }
510
-
511
- .ec-day {
512
- border-style: none none none solid;
513
- }
514
- .ec-day.ec-today {
515
- background-color: var(--ec-today-bg-color);
516
- }
517
- .ec-day.ec-highlight {
518
- background-color: var(--ec-highlight-color);
519
- }
520
- .ec-day.ec-disabled {
521
- position: relative;
522
- }
523
- .ec-day.ec-disabled:after {
524
- content: "";
525
- position: absolute;
526
- inset: 0 0 0 0;
527
- background-color: var(--ec-bg-event-color);
528
- opacity: 0.3;
529
- }
530
- .ec-day.ec-other-month .ec-day-head time {
531
- opacity: 0.3;
532
- }
533
- .ec-list .ec-day {
534
- border: none;
283
+ .ec-expander {
284
+ margin-right: .25em;
285
+ width: 1.25em;
286
+
287
+ .ec-button {
288
+ line-height: normal;
289
+ padding: 0;
290
+ aspect-ratio: 1;
291
+ height: 1.25em;
292
+ }
293
+ }
294
+ .ec-slot {
295
+ white-space: nowrap;
296
+
297
+ .ec-time-grid & {
298
+ block-size: calc(var(--ec-slot-height) * var(--ec-slot-label-periodicity));
299
+ position: relative;
300
+ inset-block-start: -.5em;
301
+ }
302
+
303
+ .ec-timeline & {
304
+ grid-column: span var(--ec-slot-label-periodicity);
305
+ font-size: .95em;
306
+ padding: .18rem 0;
307
+ overflow: clip;
308
+ text-overflow: ellipsis;
309
+ }
310
+ }
311
+ .ec-slots {
312
+ display: grid;
313
+ grid-auto-flow: column;
314
+ grid-auto-columns: var(--ec-slot-width);
315
+ text-align: center;
316
+
317
+ --ec-day-bg-color: var(--ec-bg-color);
318
+ background-color: var(--ec-day-bg-color);
319
+
320
+ &.ec-today {
321
+ --ec-day-bg-color: var(--ec-today-bg-color);
322
+ }
323
+
324
+ &.ec-highlight {
325
+ --ec-day-bg-color: var(--ec-highlight-color);
326
+ }
327
+
328
+ background-image:
329
+ linear-gradient(to right, var(--ec-day-bg-color) 1px, transparent 1px),
330
+ linear-gradient(to right, var(--ec-border-color) 1px, transparent 1px);
331
+ background-size:
332
+ 100% 100%,
333
+ calc(var(--ec-slot-width) * var(--ec-slot-label-periodicity)) 100%;
535
334
  }
335
+ .ec-events {
336
+ grid-area: 1 / 2 / -1 / -1;
337
+ display: grid;
338
+ grid-template: subgrid / subgrid;
339
+ isolation: isolate;
340
+ pointer-events: none;
536
341
 
537
- .ec-list .ec-day-head {
538
- background-color: var(--ec-list-day-bg-color);
539
- border-style: solid none;
540
- margin: -1px 0 0;
541
- padding: 8px 14px;
542
- position: sticky;
543
- top: 0;
544
- z-index: 2;
545
- }
546
- .ec-list .ec-day.ec-today .ec-day-head:before {
547
- content: "";
548
- position: absolute;
549
- inset: 0;
550
- z-index: -1;
551
- background-color: var(--ec-today-bg-color);
552
- }
553
- .ec-list .ec-day:first-child .ec-day-head {
554
- border-top: none;
555
- }
556
- .ec-list .ec-day-side {
557
- float: right;
342
+ .ec-day-grid & {
343
+ grid-column-start: 1;
344
+ }
558
345
  }
559
- .ec-list .ec-no-events {
560
- text-align: center;
561
- padding: 5em 0;
562
- }
563
-
564
- .ec-events {
565
- margin: 0 6px 0 0;
346
+ .ec-event {
347
+ display: flex;
348
+ position: relative;
349
+ padding: 2px;
350
+ color: var(--ec-event-text-color);
351
+ box-sizing: border-box;
352
+ box-shadow: 0 0 1px 0 var(--ec-border-color);
353
+ background-color: var(--ec-event-bg-color);
354
+ border-radius: 3px;
355
+ font-size: .85em;
356
+ line-height: 1.5;
357
+ z-index: 1;
358
+ pointer-events: all;
359
+ inline-size: calc(100% - var(--ec-event-col-gap));
360
+
361
+ .ec-time-grid & {
362
+ grid-row: 1;
363
+ }
364
+
365
+ .ec-day-grid &,
366
+ .ec-all-day &,
367
+ .ec-timeline & {
368
+ block-size: fit-content;
369
+ margin-block-end: var(--ec-event-col-gap);
370
+ }
371
+
372
+ .ec-list & {
373
+ flex-direction: row;
374
+ padding: .5em 1.5em;
375
+ color: inherit;
376
+ background-color: var(--ec-day-bg-color);
377
+ border-radius: 0;
378
+ }
379
+
380
+ &.ec-preview {
381
+ z-index: 1000;
382
+ user-select: none;
383
+ opacity: .8;
384
+ }
385
+
386
+ &.ec-pointer {
387
+ color: inherit;
388
+ pointer-events: none;
389
+ user-select: none;
390
+ z-index: 0;
391
+ box-shadow: none;
392
+ }
566
393
  }
567
- .ec-time-grid .ec-events, .ec-events.ec-preview {
568
- position: relative;
394
+ .ec-bg-event {
395
+ grid-row: 1;
396
+ position: relative;
397
+ background-color: var(--ec-bg-event-color);
398
+ opacity: var(--ec-bg-event-opacity);
569
399
  }
570
- .ec-day-grid .ec-events, .ec-all-day .ec-events {
571
- display: flow-root;
400
+ .ec-draggable {
401
+ cursor: pointer;
402
+ user-select: none;
572
403
  }
573
-
574
- .ec-event {
575
- display: flex;
576
- padding: 2px;
577
- color: var(--ec-event-text-color);
578
- box-sizing: border-box;
579
- box-shadow: 0 0 1px 0 var(--ec-border-color);
580
- background-color: var(--ec-event-bg-color);
581
- border-radius: 3px;
582
- font-size: 0.85em;
583
- line-height: 1.5;
584
- z-index: 1;
585
- }
586
- .ec-day-grid .ec-event, .ec-all-day .ec-event {
587
- position: relative;
588
- }
589
- .ec-list .ec-event {
590
- flex-direction: row;
591
- padding: 8px 14px;
592
- color: inherit;
593
- background-color: transparent;
594
- border-radius: 0;
595
- }
596
- .ec-event.ec-preview {
597
- position: absolute;
598
- z-index: 1000;
599
- width: 100%;
600
- user-select: none;
601
- opacity: 0.8;
602
- }
603
- .ec-event.ec-pointer {
604
- color: inherit;
605
- pointer-events: none;
606
- user-select: none;
607
- position: absolute;
608
- z-index: 0;
609
- box-shadow: none;
610
- display: flex;
404
+ .ec-ghost {
405
+ opacity: .5;
406
+ user-select: none;
407
+ pointer-events: none;
611
408
  }
612
-
613
409
  .ec-event-body {
614
- display: flex;
615
- flex-direction: column;
616
- width: 100%;
617
- }
618
- .ec-day-grid .ec-event-body, .ec-all-day .ec-event-body, .ec-timeline .ec-event-body {
619
- flex-direction: row;
620
- }
410
+ display: flex;
411
+ flex-direction: column;
412
+ inline-size: 100%;
621
413
 
414
+ .ec-day-grid &,
415
+ .ec-all-day &,
416
+ .ec-timeline & {
417
+ flex-direction: row;
418
+ }
419
+ }
622
420
  .ec-event-tag {
623
- width: 4px;
624
- border-radius: 2px;
625
- margin-right: 8px;
421
+ inline-size: 4px;
422
+ border-radius: 2px;
423
+ margin-inline-end: 8px;
626
424
  }
627
-
628
425
  .ec-event-time {
629
- overflow: hidden;
630
- white-space: nowrap;
631
- margin: 0 0 1px 0;
632
- flex-shrink: 0;
633
- max-height: 100%;
634
- }
635
- .ec-day-grid .ec-event-time, .ec-timeline .ec-event-time {
636
- margin: 0 3px 0 0;
637
- max-width: 100%;
638
- text-overflow: ellipsis;
426
+ overflow: hidden;
427
+ white-space: nowrap;
428
+ margin: 0 0 1px 0;
429
+ flex-shrink: 0;
430
+ max-block-size: 100%;
431
+
432
+ .ec-day-grid &,
433
+ .ec-timeline & {
434
+ margin: 0 3px 0 0;
435
+ max-inline-size: 100%;
436
+ text-overflow: ellipsis;
437
+ }
639
438
  }
640
-
641
439
  .ec-event-title {
642
- overflow: hidden;
643
- margin: unset;
644
- font-weight: inherit;
645
- }
646
- .ec-day-grid .ec-event-title, .ec-all-day .ec-event-title, .ec-timeline .ec-event-title {
647
- min-height: 1.5em;
648
- white-space: nowrap;
649
- text-overflow: ellipsis;
440
+ overflow: hidden;
441
+ margin: 0;
442
+ font-weight: inherit;
443
+
444
+ .ec-time-grid & {
445
+ position: sticky;
446
+ inset-block-start: var(--ec-header-height);
447
+ }
448
+
449
+ .ec-day-grid &,
450
+ .ec-all-day &,
451
+ .ec-timeline & {
452
+ min-block-size: 1.5em;
453
+ white-space: nowrap;
454
+ text-overflow: ellipsis;
455
+ position: sticky;
456
+ inset-inline-start: calc(var(--ec-sidebar-width) + .18em);
457
+ }
458
+
459
+ .ec-list & {
460
+ font-size: 1rem;
461
+ }
650
462
  }
651
- .ec-list .ec-event-title {
652
- font-size: 1rem;
653
- }
654
-
655
- .ec-draggable {
656
- cursor: pointer;
657
- user-select: none;
658
- }
659
-
660
- .ec-ghost {
661
- opacity: 0.5;
662
- user-select: none;
663
- pointer-events: none;
664
- }
665
-
666
- .ec-bg-events {
667
- position: relative;
668
- }
669
- .ec-day-grid .ec-bg-events, .ec-all-day .ec-bg-events {
670
- position: absolute;
671
- inset: 0;
463
+ .ec-resizer {
464
+ position: absolute;
465
+ user-select: none;
466
+
467
+ .ec-time-grid .ec-body & {
468
+ inset: auto 0 0 0;
469
+ block-size: 50%;
470
+ max-block-size: 8px;
471
+ cursor: ns-resize;
472
+
473
+ &.ec-start {
474
+ inset: 0 0 auto 0;
475
+ }
476
+ }
477
+ .ec-day-grid &,
478
+ .ec-all-day &,
479
+ .ec-timeline & {
480
+ inset: 0 0 0 auto;
481
+ inline-size: 50%;
482
+ max-inline-size: 8px;
483
+ cursor: ew-resize;
484
+
485
+ &.ec-start {
486
+ inset: 0 auto 0 0;
487
+ }
488
+ }
672
489
  }
673
-
674
- .ec-bg-event {
675
- position: absolute;
676
- background-color: var(--ec-bg-event-color);
677
- opacity: var(--ec-bg-event-opacity);
490
+ .ec-dragging, .ec-dragging * {
491
+ cursor: pointer!important;
678
492
  }
679
- .ec-day-grid .ec-bg-event, .ec-all-day .ec-bg-event {
680
- height: 100%;
681
- z-index: auto;
493
+ .ec-resizing-y, .ec-resizing-y * {
494
+ cursor: ns-resize!important;
682
495
  }
683
-
684
- .ec-time {
685
- white-space: nowrap;
496
+ .ec-resizing-x, .ec-resizing-x * {
497
+ cursor: ew-resize!important;
686
498
  }
687
-
688
- .ec-popup {
689
- position: absolute;
690
- top: 0;
691
- display: flex;
692
- flex-direction: column;
693
- width: 110%;
694
- min-width: 180px;
695
- z-index: 1010;
696
- padding: 8px 10px 14px;
697
- background-color: var(--ec-popup-bg-color);
698
- border: 1px solid var(--ec-border-color);
699
- border-radius: 6px;
700
- outline: 1px solid transparent;
701
- box-shadow: 0 1px 3px 0 hsla(var(--ec-hs), 50%, 0.15), 0 4px 8px 3px hsla(var(--ec-hs), 50%, 0.15);
702
- }
703
- .ec-popup .ec-day-head {
704
- text-align: left;
705
- display: flex;
706
- justify-content: space-between;
707
- }
708
- .ec-popup .ec-day-head a {
709
- cursor: pointer;
710
- font-size: 1.5em;
711
- line-height: 0.8;
712
- }
713
- .ec-popup .ec-events {
714
- margin: 0;
715
- min-height: 0;
716
- overflow: auto;
717
- }
718
-
719
- .ec-extra {
720
- position: relative;
721
- height: 100%;
722
- overflow: hidden;
723
- margin-left: -6.5px;
724
- user-select: none;
499
+ .ec-no-events {
500
+ text-align: center;
501
+ padding: 5em 0;
502
+ background-color: var(--ec-bg-color);
725
503
  }
726
-
727
504
  .ec-now-indicator {
728
- position: absolute;
729
- z-index: 1005;
730
- pointer-events: none;
731
- }
732
- .ec-time-grid .ec-now-indicator {
733
- width: 100%;
734
- border-top: var(--ec-now-indicator-color) solid 2px;
735
- }
736
- .ec-timeline .ec-now-indicator {
737
- border-left: var(--ec-now-indicator-color) solid 2px;
738
- will-change: transform;
505
+ grid-row: 2;
506
+ position: relative;
507
+ pointer-events: none;
508
+ will-change: inset;
509
+
510
+ .ec-time-grid & {
511
+ inline-size: 100%;
512
+ block-size: 0;
513
+ border-block-start: var(--ec-now-indicator-color) solid 2px;
514
+ }
515
+
516
+ .ec-timeline & {
517
+ inline-size: 0;
518
+ border-inline-start: var(--ec-now-indicator-color) solid 2px;
519
+
520
+ &:before {
521
+ inset-block-start: calc(var(--ec-header-height) - 6.5px);
522
+ z-index: 2;
523
+ }
524
+ }
525
+
526
+ &:before {
527
+ background: var(--ec-now-indicator-color);
528
+ border-radius: 50%;
529
+ content: "";
530
+ display: block;
531
+ block-size: 12px;
532
+ inline-size: 12px;
533
+ margin: -7px 0 0 -7px;
534
+ position: sticky;
535
+ inset-inline-start: calc(var(--ec-sidebar-width) - 6.5px);
536
+ z-index: 1;
537
+ }
739
538
  }
740
- .ec-now-indicator:before {
741
- background: var(--ec-now-indicator-color);
742
- border-radius: 50%;
743
- content: "";
744
- display: block;
745
- height: 12px;
746
- margin-top: -7px;
747
- width: 12px;
748
- }
749
- .ec-timeline .ec-now-indicator:before {
750
- margin-left: -7px;
539
+ .ec-popup {
540
+ position: relative;
541
+ display: flex;
542
+ flex-direction: column;
543
+ block-size: max-content;
544
+ inline-size: 110%;
545
+ min-block-size: 6em;
546
+ min-inline-size: 10em;
547
+ padding: .375rem .75rem .75rem;
548
+ background-color: var(--ec-popup-bg-color);
549
+ border: 1px solid var(--ec-border-color);
550
+ border-radius: .25rem;
551
+ box-shadow: var(--ec-color-300) 0 10px 15px -3px, var(--ec-color-300) 0 4px 6px -4px;
552
+
553
+ .ec-day-head {
554
+ flex-direction: row;
555
+ padding-inline: 0;
556
+
557
+ a {
558
+ cursor: pointer;
559
+ font-size: 1.5em;
560
+ line-height: .8;
561
+ }
562
+ }
563
+
564
+ .ec-events {
565
+ --ec-event-col-gap: 0;
566
+ display: block;
567
+ }
751
568
  }
752
-
753
- .ec-resizer {
754
- position: absolute;
755
- user-select: none;
569
+ .ec {
570
+ display: flex;
571
+ flex-direction: column;
572
+ }
573
+ .ec-main {
574
+ display: grid;
575
+ gap: 1px;
576
+ background-color: var(--ec-border-color);
577
+ border: 1px solid var(--ec-border-color);
578
+ overflow: auto;
579
+ /*scrollbar-width: thin;*/
580
+
581
+ .ec-time-grid & {
582
+ grid-template-columns: max-content repeat(var(--ec-grid-cols), var(--ec-col-width));
583
+ grid-template-rows: repeat(2, max-content);
584
+ }
585
+
586
+ .ec-day-grid & {
587
+ --ec-row-height: auto;
588
+ grid-template-columns: repeat(var(--ec-grid-cols), minmax(0, 1fr));
589
+ grid-template-rows: max-content repeat(var(--ec-grid-rows), var(--ec-row-height));
590
+
591
+ &.ec-uniform {
592
+ --ec-row-height: minmax(0, 1fr);
593
+ overflow: hidden;
594
+ flex-grow: 1;
595
+ }
596
+ }
597
+
598
+ .ec-timeline & {
599
+ grid-template-columns: max-content repeat(var(--ec-grid-cols), min-content);
600
+ grid-template-rows: max-content repeat(calc(var(--ec-grid-rows) - 1), auto) minmax(auto, 1fr);
601
+ flex-grow: 1;
602
+ }
603
+
604
+ .ec-timeline.ec-month-view & {
605
+ grid-template-columns: max-content repeat(var(--ec-grid-cols), var(--ec-col-width));
606
+ }
607
+
608
+ .ec-list & {
609
+
610
+ }
756
611
  }
757
- .ec-day-grid .ec-resizer, .ec-all-day .ec-resizer, .ec-timeline .ec-resizer {
758
- top: 0;
759
- right: 0;
760
- bottom: 0;
761
- width: 50%;
762
- max-width: 8px;
763
- cursor: ew-resize;
612
+ .ec-header {
613
+ grid-area: 1 / 1 / 2 / -1;
614
+ display: grid;
615
+ grid-template-columns: subgrid;
616
+ gap: 1px;
617
+ background-color: var(--ec-border-color);
618
+ position: sticky;
619
+ inset-block-start: 0;
620
+ z-index: 2;
621
+ border-block-end: 1px solid var(--ec-border-color);
622
+ margin-block-end: -1px;
623
+ }
624
+ .ec-grid {
625
+ grid-area: 1 / 1 / -1 / -1;
626
+ display: grid;
627
+ grid-template-columns: subgrid;
628
+ gap: 1px;
629
+
630
+ .ec-body & {
631
+ grid-template-rows: subgrid;
632
+ }
633
+
634
+ .ec-time-grid &,
635
+ .ec-timeline & {
636
+ grid-column-start: 2;
637
+ }
764
638
  }
765
- .ec-day-grid .ec-resizer.ec-start, .ec-all-day .ec-resizer.ec-start, .ec-timeline .ec-resizer.ec-start {
766
- right: auto;
767
- left: 0;
639
+ .ec-all-day {
640
+ grid-area: 2 / 1 / auto / -1;
641
+ display: grid;
642
+ grid-template-columns: subgrid;
643
+ min-block-size: var(--ec-slot-height);
644
+ }
645
+ .ec-col-group {
646
+ grid-column: span var(--ec-col-group-span);
647
+ }
648
+ .ec-col-group,
649
+ .ec-col-head {
650
+ text-align: center;
651
+ padding: .375rem .18em;
652
+ background-color: var(--ec-bg-color);
653
+ overflow: clip;
654
+ text-overflow: ellipsis;
655
+
656
+ &.ec-today {
657
+ background-color: var(--ec-today-bg-color);
658
+ }
659
+
660
+ &.ec-highlight {
661
+ background-color: var(--ec-highlight-color);
662
+ }
663
+ }
664
+ .ec-col-group > *,
665
+ .ec-timeline .ec-col-head > * {
666
+ position: sticky;
667
+ inset-inline-start: calc(var(--ec-sidebar-width) + .18em);
768
668
  }
769
-
770
- .ec-dragging, .ec-dragging * {
771
- cursor: pointer !important;
669
+ .ec-body {
670
+ grid-area: 2 / 1 / -1 / -1;
671
+ display: grid;
672
+ grid-template: subgrid / subgrid;
772
673
  }
773
-
774
- .ec-resizing-y, .ec-resizing-y * {
775
- cursor: ns-resize !important;
674
+ .ec-hidden {
675
+ visibility: hidden;
776
676
  }
777
-
778
- .ec-resizing-x, .ec-resizing-x * {
779
- cursor: ew-resize !important;
780
- }