@dodlhuat/basix 1.2.4 → 1.2.6
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 +1 -1
- package/css/calendar.css +928 -0
- package/css/calendar.scss +114 -63
- package/css/form.scss +224 -54
- package/css/style.css +349 -266
- package/css/style.css.map +1 -1
- package/css/style.min.css +1 -1
- package/css/style.min.css.map +1 -0
- package/css/virtual-dropdown.scss +107 -45
- package/js/calendar.js +276 -187
- package/js/calendar.ts +370 -307
- package/js/docs-nav.js +1 -0
- package/js/timepicker.js +2 -12
- package/js/virtual-dropdown.js +31 -4
- package/js/virtual-dropdown.ts +39 -5
- package/package.json +1 -1
package/css/calendar.scss
CHANGED
|
@@ -170,11 +170,14 @@
|
|
|
170
170
|
// ------------------------------------------------------------------
|
|
171
171
|
|
|
172
172
|
.cal__month-grid {
|
|
173
|
-
display: grid;
|
|
174
|
-
grid-template-columns: repeat(7, minmax(0, 1fr));
|
|
175
173
|
border: 1px solid var(--cal-border);
|
|
176
174
|
border-radius: var(--cal-radius);
|
|
177
175
|
overflow: hidden;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.cal__month-head {
|
|
179
|
+
display: grid;
|
|
180
|
+
grid-template-columns: repeat(7, minmax(0, 1fr));
|
|
178
181
|
gap: 1px;
|
|
179
182
|
background: var(--cal-border);
|
|
180
183
|
}
|
|
@@ -190,27 +193,30 @@
|
|
|
190
193
|
text-transform: uppercase;
|
|
191
194
|
}
|
|
192
195
|
|
|
196
|
+
// Each week row is a 7-column subgrid with span bars overlaid
|
|
197
|
+
.cal__week-row {
|
|
198
|
+
display: grid;
|
|
199
|
+
grid-template-columns: repeat(7, minmax(0, 1fr));
|
|
200
|
+
gap: 1px;
|
|
201
|
+
background: var(--cal-border);
|
|
202
|
+
position: relative;
|
|
203
|
+
border-top: 1px solid var(--cal-border);
|
|
204
|
+
|
|
205
|
+
// Push event pills below span bars
|
|
206
|
+
.cal__day-events {
|
|
207
|
+
margin-top: calc(var(--span-lanes, 0) * var(--cal-span-lane-height, 20px));
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
193
211
|
.cal__day {
|
|
194
212
|
background: var(--cal-bg);
|
|
195
213
|
padding: var(--cal-spacing-xs) var(--cal-spacing-sm);
|
|
196
214
|
min-height: 88px;
|
|
197
|
-
cursor:
|
|
198
|
-
transition: background 0.15s ease;
|
|
215
|
+
cursor: default;
|
|
199
216
|
position: relative;
|
|
200
217
|
|
|
201
|
-
&:hover {
|
|
202
|
-
background: var(--cal-bg-hover);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
&:focus-visible {
|
|
206
|
-
outline: 2px solid var(--cal-accent);
|
|
207
|
-
outline-offset: -2px;
|
|
208
|
-
z-index: 1;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
218
|
&--empty {
|
|
212
219
|
background: var(--cal-bg-alt);
|
|
213
|
-
cursor: default;
|
|
214
220
|
pointer-events: none;
|
|
215
221
|
}
|
|
216
222
|
|
|
@@ -231,18 +237,6 @@
|
|
|
231
237
|
box-shadow: 0 0 0 3px color-mix(in srgb, var(--cal-accent) 20%, transparent);
|
|
232
238
|
}
|
|
233
239
|
|
|
234
|
-
&.is-selected {
|
|
235
|
-
background: color-mix(in srgb, var(--cal-accent) 6%, var(--cal-bg));
|
|
236
|
-
|
|
237
|
-
.cal__day-num {
|
|
238
|
-
background: var(--cal-accent);
|
|
239
|
-
color: var(--cal-accent-text);
|
|
240
|
-
border-radius: 50%;
|
|
241
|
-
font-weight: 700;
|
|
242
|
-
box-shadow: 0 2px 8px color-mix(in srgb, var(--cal-accent) 35%, transparent);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
|
|
246
240
|
&.has-events::after {
|
|
247
241
|
content: '';
|
|
248
242
|
display: none;
|
|
@@ -326,6 +320,56 @@
|
|
|
326
320
|
cursor: pointer;
|
|
327
321
|
}
|
|
328
322
|
|
|
323
|
+
// ------------------------------------------------------------------
|
|
324
|
+
// Span bars — multi-day events in month and week all-day row
|
|
325
|
+
// ------------------------------------------------------------------
|
|
326
|
+
|
|
327
|
+
.cal__span-bar {
|
|
328
|
+
position: absolute;
|
|
329
|
+
height: 18px;
|
|
330
|
+
line-height: 18px;
|
|
331
|
+
font-size: 0.6875rem;
|
|
332
|
+
font-weight: 500;
|
|
333
|
+
padding: 0 6px;
|
|
334
|
+
border-radius: var(--cal-radius-sm);
|
|
335
|
+
background: var(--cal-bg-alt);
|
|
336
|
+
border-left: 2px solid var(--cal-accent-light);
|
|
337
|
+
color: var(--cal-text);
|
|
338
|
+
white-space: nowrap;
|
|
339
|
+
overflow: hidden;
|
|
340
|
+
text-overflow: ellipsis;
|
|
341
|
+
cursor: pointer;
|
|
342
|
+
z-index: 2;
|
|
343
|
+
transition: filter 0.12s ease, transform 0.1s ease;
|
|
344
|
+
|
|
345
|
+
// Position via CSS custom props set inline
|
|
346
|
+
left: calc(var(--span-col) * 100% / 7);
|
|
347
|
+
width: calc(var(--span-len) * 100% / 7 - 4px);
|
|
348
|
+
|
|
349
|
+
&:hover { filter: brightness(0.94); }
|
|
350
|
+
&:active { transform: scale(0.97); }
|
|
351
|
+
&:focus-visible {
|
|
352
|
+
outline: 2px solid var(--cal-accent);
|
|
353
|
+
outline-offset: 1px;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
// Rounded end removed when event continues past week boundary
|
|
357
|
+
&--cont-before { border-left: none; border-radius: 0 var(--cal-radius-sm) var(--cal-radius-sm) 0; padding-left: 4px; }
|
|
358
|
+
&--cont-after { border-radius: var(--cal-radius-sm) 0 0 var(--cal-radius-sm); }
|
|
359
|
+
&--cont-before#{&}--cont-after { border-radius: 0; }
|
|
360
|
+
|
|
361
|
+
// Color variants — match badge semantics
|
|
362
|
+
&.badge-success { border-left-color: var(--success); background: color-mix(in srgb, var(--success) 14%, var(--cal-bg)); }
|
|
363
|
+
&.badge-warning { border-left-color: var(--warning); background: color-mix(in srgb, var(--warning) 14%, var(--cal-bg)); }
|
|
364
|
+
&.badge-error { border-left-color: var(--error); background: color-mix(in srgb, var(--error) 14%, var(--cal-bg)); }
|
|
365
|
+
&.badge-info { border-left-color: var(--accent-color); background: color-mix(in srgb, var(--accent-color) 14%, var(--cal-bg)); }
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
// Month view: bars sit just below the date number
|
|
369
|
+
.cal__week-row > .cal__span-bar {
|
|
370
|
+
top: calc(36px + var(--span-lane) * var(--cal-span-lane-height, 20px));
|
|
371
|
+
}
|
|
372
|
+
|
|
329
373
|
.cal__event-time {
|
|
330
374
|
font-weight: 600;
|
|
331
375
|
margin-right: 3px;
|
|
@@ -375,7 +419,7 @@
|
|
|
375
419
|
font-weight: 600;
|
|
376
420
|
color: var(--cal-text-muted);
|
|
377
421
|
border-left: 1px solid var(--cal-border);
|
|
378
|
-
cursor:
|
|
422
|
+
cursor: default;
|
|
379
423
|
text-transform: uppercase;
|
|
380
424
|
letter-spacing: 0.04em;
|
|
381
425
|
|
|
@@ -402,31 +446,21 @@
|
|
|
402
446
|
box-shadow: 0 0 0 3px color-mix(in srgb, var(--cal-accent) 20%, transparent);
|
|
403
447
|
}
|
|
404
448
|
|
|
405
|
-
&.is-selected span {
|
|
406
|
-
background: var(--cal-accent);
|
|
407
|
-
color: var(--cal-accent-text);
|
|
408
|
-
}
|
|
409
449
|
}
|
|
410
450
|
|
|
411
451
|
.cal__allday {
|
|
412
452
|
display: grid;
|
|
413
|
-
grid-template-columns: var(--cal-time-col-width)
|
|
453
|
+
grid-template-columns: var(--cal-time-col-width) 1fr;
|
|
414
454
|
border-bottom: 1px solid var(--cal-border);
|
|
415
|
-
min-height: 32px;
|
|
416
455
|
background: var(--cal-bg);
|
|
417
456
|
overflow-y: auto;
|
|
418
457
|
scrollbar-gutter: stable;
|
|
419
458
|
scrollbar-width: thin;
|
|
420
459
|
scrollbar-color: transparent transparent;
|
|
421
460
|
|
|
422
|
-
&::-webkit-scrollbar {
|
|
423
|
-
width: 5px;
|
|
424
|
-
}
|
|
425
|
-
|
|
461
|
+
&::-webkit-scrollbar { width: 5px; }
|
|
426
462
|
&::-webkit-scrollbar-track,
|
|
427
|
-
&::-webkit-scrollbar-thumb {
|
|
428
|
-
background: transparent;
|
|
429
|
-
}
|
|
463
|
+
&::-webkit-scrollbar-thumb { background: transparent; }
|
|
430
464
|
}
|
|
431
465
|
|
|
432
466
|
.cal__allday-label {
|
|
@@ -439,12 +473,26 @@
|
|
|
439
473
|
font-weight: 500;
|
|
440
474
|
}
|
|
441
475
|
|
|
476
|
+
// Span container for all-day events in week view
|
|
477
|
+
.cal__allday-spans {
|
|
478
|
+
position: relative;
|
|
479
|
+
display: grid;
|
|
480
|
+
grid-template-columns: repeat(7, minmax(0, 1fr));
|
|
481
|
+
min-height: calc(max(var(--allday-lanes, 1), 1) * var(--cal-span-lane-height, 20px) + 6px);
|
|
482
|
+
|
|
483
|
+
// Week view span bars: no date-num offset, 2px top padding per lane
|
|
484
|
+
> .cal__span-bar {
|
|
485
|
+
top: calc(var(--span-lane) * var(--cal-span-lane-height, 20px) + 3px);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
|
|
442
489
|
.cal__allday-col {
|
|
443
490
|
border-left: 1px solid var(--cal-border);
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
491
|
+
min-height: 100%;
|
|
492
|
+
|
|
493
|
+
&:first-child {
|
|
494
|
+
border-left: none;
|
|
495
|
+
}
|
|
448
496
|
}
|
|
449
497
|
|
|
450
498
|
.cal__week-body {
|
|
@@ -583,7 +631,7 @@
|
|
|
583
631
|
// Now-line
|
|
584
632
|
.cal__now-line {
|
|
585
633
|
position: absolute;
|
|
586
|
-
left:
|
|
634
|
+
left: var(--cal-time-col-width);
|
|
587
635
|
right: 0;
|
|
588
636
|
height: 2px;
|
|
589
637
|
background: var(--error);
|
|
@@ -764,10 +812,19 @@
|
|
|
764
812
|
.cal__month-grid {
|
|
765
813
|
border: none;
|
|
766
814
|
border-radius: 0;
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
.cal__month-head {
|
|
767
818
|
gap: 0;
|
|
768
819
|
background: transparent;
|
|
769
820
|
}
|
|
770
821
|
|
|
822
|
+
.cal__week-row {
|
|
823
|
+
gap: 0;
|
|
824
|
+
background: transparent;
|
|
825
|
+
border-top: none;
|
|
826
|
+
}
|
|
827
|
+
|
|
771
828
|
.cal__weekday {
|
|
772
829
|
background: transparent;
|
|
773
830
|
padding: var(--cal-spacing-sm) 0;
|
|
@@ -783,14 +840,6 @@
|
|
|
783
840
|
justify-content: flex-start;
|
|
784
841
|
background: transparent;
|
|
785
842
|
|
|
786
|
-
&:hover {
|
|
787
|
-
background: transparent;
|
|
788
|
-
|
|
789
|
-
.cal__day-num {
|
|
790
|
-
background: var(--cal-bg-hover);
|
|
791
|
-
}
|
|
792
|
-
}
|
|
793
|
-
|
|
794
843
|
&--empty {
|
|
795
844
|
background: transparent;
|
|
796
845
|
}
|
|
@@ -801,10 +850,6 @@
|
|
|
801
850
|
}
|
|
802
851
|
}
|
|
803
852
|
|
|
804
|
-
&.is-selected {
|
|
805
|
-
background: transparent;
|
|
806
|
-
}
|
|
807
|
-
|
|
808
853
|
&.has-events::after {
|
|
809
854
|
display: block;
|
|
810
855
|
position: static;
|
|
@@ -822,10 +867,16 @@
|
|
|
822
867
|
|
|
823
868
|
.cal__day-events,
|
|
824
869
|
.cal__event-pill,
|
|
825
|
-
.cal__event-more
|
|
870
|
+
.cal__event-more,
|
|
871
|
+
.cal__span-bar {
|
|
826
872
|
display: none;
|
|
827
873
|
}
|
|
828
874
|
|
|
875
|
+
// Reset span-lane-based margin since bars are hidden
|
|
876
|
+
.cal__week-row .cal__day-events {
|
|
877
|
+
margin-top: 0;
|
|
878
|
+
}
|
|
879
|
+
|
|
829
880
|
// Week view — compact
|
|
830
881
|
.cal {
|
|
831
882
|
--cal-time-col-width: 40px;
|
|
@@ -909,10 +960,10 @@
|
|
|
909
960
|
animation: cal-cell-in 0.3s cubic-bezier(0.2, 0, 0, 1) both;
|
|
910
961
|
}
|
|
911
962
|
|
|
912
|
-
// Stagger
|
|
913
|
-
@for $i from 1 through
|
|
914
|
-
.
|
|
915
|
-
animation-delay: #{0.
|
|
963
|
+
// Stagger day cells across week rows
|
|
964
|
+
@for $i from 1 through 7 {
|
|
965
|
+
.cal__week-row:nth-child(#{$i}) .cal__day {
|
|
966
|
+
animation-delay: #{0.03s * ($i - 1) + 0.01s};
|
|
916
967
|
}
|
|
917
968
|
}
|
|
918
969
|
|