@k2b/ui 0.29.0 → 0.30.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 +1 -1
- package/dist/base.css +2 -2
- package/dist/browser/actions/Dropdown.js +6 -3
- package/dist/browser/actions/Dropdown.js.map +1 -1
- package/dist/browser/actions/FilterChip.js +137 -7
- package/dist/browser/actions/FilterChip.js.map +1 -1
- package/dist/browser/actions/SegmentedControl.js +5 -9
- package/dist/browser/actions/SegmentedControl.js.map +1 -1
- package/dist/browser/actions/SpotlightSearch.js +6 -3
- package/dist/browser/actions/SpotlightSearch.js.map +1 -1
- package/dist/browser/actions/Tabs.js +5 -2
- package/dist/browser/actions/Tabs.js.map +1 -1
- package/dist/browser/actions/ViewTabs.js +294 -0
- package/dist/browser/actions/ViewTabs.js.map +1 -0
- package/dist/browser/actions/filter-messages.js +6 -2
- package/dist/browser/actions/filter-messages.js.map +1 -1
- package/dist/browser/actions/index.js +2 -1
- package/dist/browser/actions/index.js.map +1 -1
- package/dist/browser/chat/ChatComposer.js +1108 -604
- package/dist/browser/chat/ChatComposer.js.map +1 -1
- package/dist/browser/chat/ChatDecision.js +120 -84
- package/dist/browser/chat/ChatDecision.js.map +1 -1
- package/dist/browser/chat/ChatPrimitives.js +292 -159
- package/dist/browser/chat/ChatPrimitives.js.map +1 -1
- package/dist/browser/chat/chat-messages.js +8 -0
- package/dist/browser/chat/chat-messages.js.map +1 -1
- package/dist/browser/chat/command-search.js +26 -15
- package/dist/browser/chat/command-search.js.map +1 -1
- package/dist/browser/chat/index.js +4 -2
- package/dist/browser/chat/index.js.map +1 -1
- package/dist/browser/content/Calendar.js +143 -116
- package/dist/browser/content/Calendar.js.map +1 -1
- package/dist/browser/content/CalendarWeekView.js +291 -266
- package/dist/browser/content/CalendarWeekView.js.map +1 -1
- package/dist/browser/content/DataTable.js +224 -155
- package/dist/browser/content/DataTable.js.map +1 -1
- package/dist/browser/content/data-table-messages.js +4 -2
- package/dist/browser/content/data-table-messages.js.map +1 -1
- package/dist/browser/feedback/MovedHint.js +197 -0
- package/dist/browser/feedback/MovedHint.js.map +1 -0
- package/dist/browser/feedback/dialog-core.js +66 -9
- package/dist/browser/feedback/dialog-core.js.map +1 -1
- package/dist/browser/feedback/index.js +1 -0
- package/dist/browser/feedback/index.js.map +1 -1
- package/dist/browser/feedback/prompts.js +6 -1
- package/dist/browser/feedback/prompts.js.map +1 -1
- package/dist/browser/inputs/DatePicker.js +337 -212
- package/dist/browser/inputs/DatePicker.js.map +1 -1
- package/dist/browser/inputs/date-picker.js +59 -5
- package/dist/browser/inputs/date-picker.js.map +1 -1
- package/dist/browser/intl/messages.js +12 -0
- package/dist/browser/intl/messages.js.map +1 -1
- package/dist/browser/intl/weekend.js +39 -0
- package/dist/browser/intl/weekend.js.map +1 -0
- package/dist/browser/layout/AppOverview.js +0 -1
- package/dist/browser/layout/AppOverview.js.map +1 -1
- package/dist/browser/layout/AppWorkspace.js +688 -471
- package/dist/browser/layout/AppWorkspace.js.map +1 -1
- package/dist/browser/layout/PageTitle.js +3 -2
- package/dist/browser/layout/PageTitle.js.map +1 -1
- package/dist/browser/layout/SettingsModal.js +2 -2
- package/dist/browser/layout/SettingsModal.js.map +1 -1
- package/dist/browser/layout/SidebarSwitcher.js +13 -12
- package/dist/browser/layout/SidebarSwitcher.js.map +1 -1
- package/dist/browser/layout/TabBar.js +1 -1
- package/dist/browser/layout/TabBar.js.map +1 -1
- package/dist/browser/layout/app-host-width.js +44 -0
- package/dist/browser/layout/app-host-width.js.map +1 -0
- package/dist/browser/layout/app-workspace-controller.js +219 -39
- package/dist/browser/layout/app-workspace-controller.js.map +1 -1
- package/dist/browser/layout/index.js +1 -0
- package/dist/browser/layout/index.js.map +1 -1
- package/dist/browser/surfaces/Placeholder.js +36 -13
- package/dist/browser/surfaces/Placeholder.js.map +1 -1
- package/dist/ssr/actions/Dropdown.js +5 -2
- package/dist/ssr/actions/Dropdown.js.map +1 -1
- package/dist/ssr/actions/FilterChip.js +59 -7
- package/dist/ssr/actions/FilterChip.js.map +1 -1
- package/dist/ssr/actions/SegmentedControl.js +1 -2
- package/dist/ssr/actions/SegmentedControl.js.map +1 -1
- package/dist/ssr/actions/SpotlightSearch.js +2 -2
- package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
- package/dist/ssr/actions/Tabs.js +2 -2
- package/dist/ssr/actions/Tabs.js.map +1 -1
- package/dist/ssr/actions/ViewTabs.js +211 -0
- package/dist/ssr/actions/ViewTabs.js.map +1 -0
- package/dist/ssr/actions/filter-messages.js +6 -2
- package/dist/ssr/actions/filter-messages.js.map +1 -1
- package/dist/ssr/actions/index.js +2 -1
- package/dist/ssr/actions/index.js.map +1 -1
- package/dist/ssr/chat/ChatComposer.js +546 -131
- package/dist/ssr/chat/ChatComposer.js.map +1 -1
- package/dist/ssr/chat/ChatDecision.js +33 -19
- package/dist/ssr/chat/ChatDecision.js.map +1 -1
- package/dist/ssr/chat/ChatPrimitives.js +95 -24
- package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
- package/dist/ssr/chat/chat-messages.js +8 -0
- package/dist/ssr/chat/chat-messages.js.map +1 -1
- package/dist/ssr/chat/command-search.js +26 -15
- package/dist/ssr/chat/command-search.js.map +1 -1
- package/dist/ssr/chat/index.js +4 -2
- package/dist/ssr/chat/index.js.map +1 -1
- package/dist/ssr/content/Calendar.js +109 -100
- package/dist/ssr/content/Calendar.js.map +1 -1
- package/dist/ssr/content/CalendarWeekView.js +42 -28
- package/dist/ssr/content/CalendarWeekView.js.map +1 -1
- package/dist/ssr/content/DataTable.js +78 -31
- package/dist/ssr/content/DataTable.js.map +1 -1
- package/dist/ssr/content/data-table-messages.js +4 -2
- package/dist/ssr/content/data-table-messages.js.map +1 -1
- package/dist/ssr/feedback/MovedHint.js +166 -0
- package/dist/ssr/feedback/MovedHint.js.map +1 -0
- package/dist/ssr/feedback/dialog-core.js +66 -9
- package/dist/ssr/feedback/dialog-core.js.map +1 -1
- package/dist/ssr/feedback/index.js +1 -0
- package/dist/ssr/feedback/index.js.map +1 -1
- package/dist/ssr/feedback/prompts.js +6 -1
- package/dist/ssr/feedback/prompts.js.map +1 -1
- package/dist/ssr/inputs/DatePicker.js +138 -69
- package/dist/ssr/inputs/DatePicker.js.map +1 -1
- package/dist/ssr/inputs/date-picker.js +59 -5
- package/dist/ssr/inputs/date-picker.js.map +1 -1
- package/dist/ssr/intl/messages.js +12 -0
- package/dist/ssr/intl/messages.js.map +1 -1
- package/dist/ssr/intl/weekend.js +39 -0
- package/dist/ssr/intl/weekend.js.map +1 -0
- package/dist/ssr/layout/AppOverview.js +0 -1
- package/dist/ssr/layout/AppOverview.js.map +1 -1
- package/dist/ssr/layout/AppWorkspace.js +203 -39
- package/dist/ssr/layout/AppWorkspace.js.map +1 -1
- package/dist/ssr/layout/PageTitle.js +3 -2
- package/dist/ssr/layout/PageTitle.js.map +1 -1
- package/dist/ssr/layout/SettingsModal.js +2 -2
- package/dist/ssr/layout/SettingsModal.js.map +1 -1
- package/dist/ssr/layout/SidebarSwitcher.js +13 -12
- package/dist/ssr/layout/SidebarSwitcher.js.map +1 -1
- package/dist/ssr/layout/TabBar.js +1 -1
- package/dist/ssr/layout/TabBar.js.map +1 -1
- package/dist/ssr/layout/app-host-width.js +44 -0
- package/dist/ssr/layout/app-host-width.js.map +1 -0
- package/dist/ssr/layout/app-workspace-controller.js +219 -39
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
- package/dist/ssr/layout/index.js +1 -0
- package/dist/ssr/layout/index.js.map +1 -1
- package/dist/ssr/surfaces/Placeholder.js +24 -7
- package/dist/ssr/surfaces/Placeholder.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/actions/Dropdown.d.ts +4 -0
- package/dist/types/actions/FilterChip.d.ts +22 -0
- package/dist/types/actions/ViewTabs.d.ts +30 -0
- package/dist/types/actions/filter-messages.d.ts +2 -0
- package/dist/types/actions/index.d.ts +4 -2
- package/dist/types/chat/ChatComposer.d.ts +52 -0
- package/dist/types/chat/ChatDecision.d.ts +18 -2
- package/dist/types/chat/ChatPrimitives.d.ts +10 -0
- package/dist/types/chat/chat-messages.d.ts +4 -0
- package/dist/types/chat/command-search.d.ts +2 -0
- package/dist/types/chat/index.d.ts +9 -8
- package/dist/types/content/DataTable.d.ts +3 -0
- package/dist/types/content/data-table-messages.d.ts +1 -0
- package/dist/types/feedback/MovedHint.d.ts +25 -0
- package/dist/types/feedback/dialog-core.d.ts +5 -2
- package/dist/types/feedback/index.d.ts +2 -0
- package/dist/types/feedback/prompts.d.ts +2 -0
- package/dist/types/inputs/DatePicker.d.ts +7 -0
- package/dist/types/inputs/date-picker.d.ts +25 -1
- package/dist/types/intl/messages.d.ts +6 -0
- package/dist/types/intl/weekend.d.ts +12 -0
- package/dist/types/layout/AppWorkspace.d.ts +43 -7
- package/dist/types/layout/app-host-width.d.ts +6 -0
- package/dist/types/layout/index.d.ts +2 -1
- package/dist/types/surfaces/Placeholder.d.ts +2 -1
- package/package.json +4 -4
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { template as _$template } from "solid-js/web";
|
|
2
2
|
import { delegateEvents as _$delegateEvents } from "solid-js/web";
|
|
3
3
|
import { setProperty as _$setProperty } from "solid-js/web";
|
|
4
|
+
import { setStyleProperty as _$setStyleProperty } from "solid-js/web";
|
|
4
5
|
import { className as _$className } from "solid-js/web";
|
|
5
6
|
import { getNextMarker as _$getNextMarker } from "solid-js/web";
|
|
6
7
|
import { setAttribute as _$setAttribute } from "solid-js/web";
|
|
@@ -20,27 +21,33 @@ var _tmpl$ = /*#__PURE__*/_$template(`<button type=button class="k2b-date-trigge
|
|
|
20
21
|
_tmpl$5 = /*#__PURE__*/_$template(`<div class=k2b-date-picker><button type=button class=k2b-date-trigger aria-haspopup=dialog><i aria-hidden=true></i><span class=k2b-date-trigger__value></span><i class="ti ti-chevron-down k2b-date-trigger__chevron"aria-hidden=true></i></button><!$><!/><div class=k2b-date-popover popover=auto role=dialog><!$><!/><!$><!/>`),
|
|
21
22
|
_tmpl$6 = /*#__PURE__*/_$template(`<aside class=k2b-date-presets>`),
|
|
22
23
|
_tmpl$7 = /*#__PURE__*/_$template(`<button type=button>`),
|
|
23
|
-
_tmpl$8 = /*#__PURE__*/_$template(`<div class=k2b-date-weekdays aria-hidden=true
|
|
24
|
-
_tmpl$9 = /*#__PURE__*/_$template(`<div class=k2b-date-grid role=grid
|
|
24
|
+
_tmpl$8 = /*#__PURE__*/_$template(`<div class=k2b-date-weekdays aria-hidden=true><!$><!/><!$><!/>`),
|
|
25
|
+
_tmpl$9 = /*#__PURE__*/_$template(`<div class=k2b-date-grid role=grid><!$><!/><!$><!/>`),
|
|
25
26
|
_tmpl$0 = /*#__PURE__*/_$template(`<section class=k2b-date-calendar><header class=k2b-date-calendar__header><button type=button class=k2b-date-calendar__nav><i class="ti ti-chevron-left"aria-hidden=true></i></button><button type=button class=k2b-date-calendar__title></button><button type=button class=k2b-date-calendar__nav><i class="ti ti-chevron-right"aria-hidden=true></i></button></header><!$><!/>`),
|
|
26
27
|
_tmpl$1 = /*#__PURE__*/_$template(`<div class=k2b-date-months role=group>`),
|
|
27
|
-
_tmpl$10 = /*#__PURE__*/_$template(`<span>`),
|
|
28
|
-
_tmpl$11 = /*#__PURE__*/_$template(`<
|
|
29
|
-
_tmpl$12 = /*#__PURE__*/_$template(`<
|
|
30
|
-
_tmpl$13 = /*#__PURE__*/_$template(`<
|
|
31
|
-
_tmpl$14 = /*#__PURE__*/_$template(`<
|
|
32
|
-
_tmpl$15 = /*#__PURE__*/_$template(`<
|
|
33
|
-
_tmpl$16 = /*#__PURE__*/_$template(`<
|
|
34
|
-
_tmpl$17 = /*#__PURE__*/_$template(`<
|
|
35
|
-
_tmpl$18 = /*#__PURE__*/_$template(`<div class=k2b-date-
|
|
36
|
-
_tmpl$19 = /*#__PURE__*/_$template(`<div class=k2b-date-
|
|
28
|
+
_tmpl$10 = /*#__PURE__*/_$template(`<span class=k2b-date-weekend>`),
|
|
29
|
+
_tmpl$11 = /*#__PURE__*/_$template(`<span>`),
|
|
30
|
+
_tmpl$12 = /*#__PURE__*/_$template(`<span class=k2b-date-weekend aria-hidden=true>`),
|
|
31
|
+
_tmpl$13 = /*#__PURE__*/_$template(`<div class=k2b-date-week role=row>`),
|
|
32
|
+
_tmpl$14 = /*#__PURE__*/_$template(`<button type=button role=gridcell>`),
|
|
33
|
+
_tmpl$15 = /*#__PURE__*/_$template(`<label class=k2b-date-time><!$><!/><span class=k2b-date-time__control><input type=text inputmode=numeric placeholder=09:00><i class="ti ti-clock"aria-hidden=true>`),
|
|
34
|
+
_tmpl$16 = /*#__PURE__*/_$template(`<div class=k2b-date-popover__body><!$><!/><!$><!/>`),
|
|
35
|
+
_tmpl$17 = /*#__PURE__*/_$template(`<button type=button class=k2b-date-optional-time__remove><i class="ti ti-x"aria-hidden=true>`),
|
|
36
|
+
_tmpl$18 = /*#__PURE__*/_$template(`<div class=k2b-date-optional-time>`),
|
|
37
|
+
_tmpl$19 = /*#__PURE__*/_$template(`<div class=k2b-date-actions><!$><!/><button type=button class=k2b-date-apply>`),
|
|
38
|
+
_tmpl$20 = /*#__PURE__*/_$template(`<button type=button class=k2b-date-optional-time__add><i class="ti ti-clock-plus"aria-hidden=true></i><!$><!/>`),
|
|
39
|
+
_tmpl$21 = /*#__PURE__*/_$template(`<span class=k2b-date-range-value><span></span><i class="ti ti-arrow-narrow-right"aria-hidden=true></i><span>`),
|
|
40
|
+
_tmpl$22 = /*#__PURE__*/_$template(`<span class=k2b-date-duration><i class="ti ti-hourglass-low"aria-hidden=true></i><!$><!/>`),
|
|
41
|
+
_tmpl$23 = /*#__PURE__*/_$template(`<div class=k2b-date-range-times><!$><!/><!$><!/>`),
|
|
42
|
+
_tmpl$24 = /*#__PURE__*/_$template(`<div class=k2b-date-durations role=group>`);
|
|
37
43
|
import { dates } from "@k2b/stdlib";
|
|
38
44
|
import { createEffect, createMemo, createSignal, For, onCleanup, onMount, Show } from "solid-js";
|
|
39
45
|
import { createFieldMeta, Field, fieldControlAria, fieldDescribedBy } from "../internal/field";
|
|
40
46
|
import { returnFocus, ringOnReturn } from "../internal/focus-return";
|
|
41
47
|
import { useDateConfigLocale } from "../intl/locale";
|
|
42
48
|
import { resolveUiMessages, useUiMessages } from "../intl/messages";
|
|
43
|
-
import {
|
|
49
|
+
import { isWeekendKey } from "../intl/weekend";
|
|
50
|
+
import { dateKey, displayDate, filterTimeInput, formatDateOnlyRangeDuration, formatDateTimeValue, inRange, isCompleteTime, isDateKey, isRangeEdge, monthDate, monthNames, msUntilNextDay, normalizeTimeInput, parseDateValue, pickerContext, pickRangeDay, previewRange, rangeAnchor, resolveFocusDay, splitDateTime, toDateTimeValue, weekendBands, yearMonth } from "./date-picker";
|
|
44
51
|
import { commitFieldValue, resolveMaybeAccessor } from "./field-contract";
|
|
45
52
|
const popoverIsOpen = popover => {
|
|
46
53
|
if (!popover) return false;
|
|
@@ -375,6 +382,9 @@ function DatePickerPanel(props) {
|
|
|
375
382
|
document.addEventListener("visibilitychange", refresh);
|
|
376
383
|
onCleanup(() => document.removeEventListener("visibilitychange", refresh));
|
|
377
384
|
});
|
|
385
|
+
// The weekend columns of the locale, read from the first week so they follow the grid's first day of the week.
|
|
386
|
+
const weekendColumns = createMemo(() => (dayRows()[0] ?? []).map(cell => isWeekendKey(cell.key, context().locale)));
|
|
387
|
+
const bands = createMemo(() => weekendBands(weekendColumns()));
|
|
378
388
|
let calendar;
|
|
379
389
|
// Days that belong to the visible month; the roving tabindex must land on one
|
|
380
390
|
// of them or the grid becomes unreachable by keyboard after month navigation.
|
|
@@ -423,8 +433,8 @@ function DatePickerPanel(props) {
|
|
|
423
433
|
_el$29 = _el$28.firstChild,
|
|
424
434
|
_el$30 = _el$29.nextSibling,
|
|
425
435
|
_el$31 = _el$30.nextSibling,
|
|
426
|
-
_el$
|
|
427
|
-
[_el$
|
|
436
|
+
_el$42 = _el$28.nextSibling,
|
|
437
|
+
[_el$43, _co$10] = _$getNextMarker(_el$42.nextSibling);
|
|
428
438
|
var _ref$3 = calendar;
|
|
429
439
|
typeof _ref$3 === "function" ? _$use(_ref$3, _el$27) : calendar = _el$27;
|
|
430
440
|
_el$29.$$click = () => view() === "days" ? moveMonth(-1) : moveYear(-1);
|
|
@@ -447,61 +457,99 @@ function DatePickerPanel(props) {
|
|
|
447
457
|
},
|
|
448
458
|
get fallback() {
|
|
449
459
|
return (() => {
|
|
450
|
-
var _el$
|
|
451
|
-
_$insert(_el$
|
|
460
|
+
var _el$44 = _$getNextElement(_tmpl$1);
|
|
461
|
+
_$insert(_el$44, _$createComponent(For, {
|
|
452
462
|
get each() {
|
|
453
463
|
return months();
|
|
454
464
|
},
|
|
455
465
|
children: (name, index) => (() => {
|
|
456
|
-
var _el$
|
|
457
|
-
_el$
|
|
466
|
+
var _el$45 = _$getNextElement(_tmpl$7);
|
|
467
|
+
_el$45.$$click = () => {
|
|
458
468
|
props.setVisibleMonth(monthDate(month().year, index(), context()));
|
|
459
469
|
setView("days");
|
|
460
470
|
};
|
|
461
|
-
_$insert(_el$
|
|
471
|
+
_$insert(_el$45, name);
|
|
462
472
|
_$effect(_p$ => {
|
|
463
473
|
var _v$0 = index() === month().month,
|
|
464
474
|
_v$1 = index() === month().month ? "true" : undefined;
|
|
465
|
-
_v$0 !== _p$.e && _$setAttribute(_el$
|
|
466
|
-
_v$1 !== _p$.t && _$setAttribute(_el$
|
|
475
|
+
_v$0 !== _p$.e && _$setAttribute(_el$45, "aria-pressed", _p$.e = _v$0);
|
|
476
|
+
_v$1 !== _p$.t && _$setAttribute(_el$45, "data-selected", _p$.t = _v$1);
|
|
467
477
|
return _p$;
|
|
468
478
|
}, {
|
|
469
479
|
e: undefined,
|
|
470
480
|
t: undefined
|
|
471
481
|
});
|
|
472
482
|
_$runHydrationEvents();
|
|
473
|
-
return _el$
|
|
483
|
+
return _el$45;
|
|
474
484
|
})()
|
|
475
485
|
}));
|
|
476
|
-
_$effect(() => _$setAttribute(_el$
|
|
477
|
-
return _el$
|
|
486
|
+
_$effect(() => _$setAttribute(_el$44, "aria-label", `Months in ${month().year}`));
|
|
487
|
+
return _el$44;
|
|
478
488
|
})();
|
|
479
489
|
},
|
|
480
490
|
get children() {
|
|
481
491
|
return [(() => {
|
|
482
|
-
var _el$32 = _$getNextElement(_tmpl$8)
|
|
492
|
+
var _el$32 = _$getNextElement(_tmpl$8),
|
|
493
|
+
_el$33 = _el$32.firstChild,
|
|
494
|
+
[_el$34, _co$8] = _$getNextMarker(_el$33.nextSibling),
|
|
495
|
+
_el$35 = _el$34.nextSibling,
|
|
496
|
+
[_el$36, _co$9] = _$getNextMarker(_el$35.nextSibling);
|
|
497
|
+
_$insert(_el$32, _$createComponent(For, {
|
|
498
|
+
get each() {
|
|
499
|
+
return bands();
|
|
500
|
+
},
|
|
501
|
+
children: band => (() => {
|
|
502
|
+
var _el$46 = _$getNextElement(_tmpl$10);
|
|
503
|
+
_$effect(_$p => _$setStyleProperty(_el$46, "grid-column", `${band.start + 1} / span ${band.span}`));
|
|
504
|
+
return _el$46;
|
|
505
|
+
})()
|
|
506
|
+
}), _el$34, _co$8);
|
|
483
507
|
_$insert(_el$32, _$createComponent(For, {
|
|
484
508
|
get each() {
|
|
485
509
|
return weekdays();
|
|
486
510
|
},
|
|
487
|
-
children: day => (() => {
|
|
488
|
-
var _el$
|
|
489
|
-
_$insert(_el$
|
|
490
|
-
|
|
511
|
+
children: (day, index) => (() => {
|
|
512
|
+
var _el$47 = _$getNextElement(_tmpl$11);
|
|
513
|
+
_$insert(_el$47, day);
|
|
514
|
+
_$effect(() => _$setAttribute(_el$47, "data-weekend", weekendColumns()[index()] ? "true" : undefined));
|
|
515
|
+
return _el$47;
|
|
491
516
|
})()
|
|
492
|
-
}));
|
|
517
|
+
}), _el$36, _co$9);
|
|
493
518
|
return _el$32;
|
|
494
519
|
})(), (() => {
|
|
495
|
-
var _el$
|
|
496
|
-
|
|
520
|
+
var _el$37 = _$getNextElement(_tmpl$9),
|
|
521
|
+
_el$38 = _el$37.firstChild,
|
|
522
|
+
[_el$39, _co$0] = _$getNextMarker(_el$38.nextSibling),
|
|
523
|
+
_el$40 = _el$39.nextSibling,
|
|
524
|
+
[_el$41, _co$1] = _$getNextMarker(_el$40.nextSibling);
|
|
525
|
+
_$insert(_el$37, _$createComponent(For, {
|
|
526
|
+
get each() {
|
|
527
|
+
return bands();
|
|
528
|
+
},
|
|
529
|
+
children: band => (() => {
|
|
530
|
+
var _el$48 = _$getNextElement(_tmpl$12);
|
|
531
|
+
_$effect(_p$ => {
|
|
532
|
+
var _v$10 = `${band.start + 1} / span ${band.span}`,
|
|
533
|
+
_v$11 = `1 / span ${dayRows().length}`;
|
|
534
|
+
_v$10 !== _p$.e && _$setStyleProperty(_el$48, "grid-column", _p$.e = _v$10);
|
|
535
|
+
_v$11 !== _p$.t && _$setStyleProperty(_el$48, "grid-row", _p$.t = _v$11);
|
|
536
|
+
return _p$;
|
|
537
|
+
}, {
|
|
538
|
+
e: undefined,
|
|
539
|
+
t: undefined
|
|
540
|
+
});
|
|
541
|
+
return _el$48;
|
|
542
|
+
})()
|
|
543
|
+
}), _el$39, _co$0);
|
|
544
|
+
_$insert(_el$37, _$createComponent(For, {
|
|
497
545
|
get each() {
|
|
498
546
|
return dayRows();
|
|
499
547
|
},
|
|
500
548
|
children: week => (() => {
|
|
501
|
-
var _el$
|
|
502
|
-
_$insert(_el$
|
|
549
|
+
var _el$49 = _$getNextElement(_tmpl$13);
|
|
550
|
+
_$insert(_el$49, _$createComponent(For, {
|
|
503
551
|
each: week,
|
|
504
|
-
children: cell => {
|
|
552
|
+
children: (cell, cellIndex) => {
|
|
505
553
|
const selected = () => props.selected?.() === cell.key;
|
|
506
554
|
const range = () => props.range?.() ?? {
|
|
507
555
|
start: null,
|
|
@@ -511,36 +559,38 @@ function DatePickerPanel(props) {
|
|
|
511
559
|
const focusable = () => cell.key === defaultFocus();
|
|
512
560
|
const today = () => cell.key === todayKey();
|
|
513
561
|
return (() => {
|
|
514
|
-
var _el$
|
|
515
|
-
_el$
|
|
516
|
-
_el$
|
|
517
|
-
_el$
|
|
562
|
+
var _el$50 = _$getNextElement(_tmpl$14);
|
|
563
|
+
_el$50.addEventListener("pointerleave", () => props.onDayPreview?.(null));
|
|
564
|
+
_el$50.addEventListener("pointerenter", () => props.onDayPreview?.(cell.key));
|
|
565
|
+
_el$50.addEventListener("focus", () => {
|
|
518
566
|
setFocusedKey(cell.key);
|
|
519
567
|
props.onDayPreview?.(cell.key);
|
|
520
568
|
});
|
|
521
|
-
_el$
|
|
522
|
-
_el$
|
|
523
|
-
_el$
|
|
524
|
-
_$insert(_el$
|
|
569
|
+
_el$50.addEventListener("blur", () => props.onDayPreview?.(null));
|
|
570
|
+
_el$50.$$keydown = event => handleDayKeyDown(event, cell.day);
|
|
571
|
+
_el$50.$$click = () => props.onSelect(cell.key);
|
|
572
|
+
_$insert(_el$50, () => cell.number);
|
|
525
573
|
_$effect(_p$ => {
|
|
526
|
-
var _v$
|
|
527
|
-
_v$
|
|
528
|
-
_v$
|
|
529
|
-
_v$
|
|
530
|
-
_v$
|
|
531
|
-
_v$
|
|
532
|
-
_v$
|
|
533
|
-
_v$
|
|
534
|
-
_v$
|
|
535
|
-
|
|
536
|
-
_v$
|
|
537
|
-
_v$
|
|
538
|
-
_v$
|
|
539
|
-
_v$
|
|
540
|
-
_v$
|
|
541
|
-
_v$
|
|
542
|
-
_v$
|
|
543
|
-
_v$
|
|
574
|
+
var _v$12 = cell.key,
|
|
575
|
+
_v$13 = focusable() ? "true" : undefined,
|
|
576
|
+
_v$14 = cell.outside ? "true" : undefined,
|
|
577
|
+
_v$15 = weekendColumns()[cellIndex()] ? "true" : undefined,
|
|
578
|
+
_v$16 = inRange(cell.key, range()) && !active() ? "true" : undefined,
|
|
579
|
+
_v$17 = today() ? "true" : undefined,
|
|
580
|
+
_v$18 = today() ? "date" : undefined,
|
|
581
|
+
_v$19 = today() ? todayLabel(cell.label) : cell.label,
|
|
582
|
+
_v$20 = active(),
|
|
583
|
+
_v$21 = focusable() ? 0 : -1;
|
|
584
|
+
_v$12 !== _p$.e && _$setAttribute(_el$50, "data-date-day", _p$.e = _v$12);
|
|
585
|
+
_v$13 !== _p$.t && _$setAttribute(_el$50, "data-date-focus", _p$.t = _v$13);
|
|
586
|
+
_v$14 !== _p$.a && _$setAttribute(_el$50, "data-outside", _p$.a = _v$14);
|
|
587
|
+
_v$15 !== _p$.o && _$setAttribute(_el$50, "data-weekend", _p$.o = _v$15);
|
|
588
|
+
_v$16 !== _p$.i && _$setAttribute(_el$50, "data-in-range", _p$.i = _v$16);
|
|
589
|
+
_v$17 !== _p$.n && _$setAttribute(_el$50, "data-today", _p$.n = _v$17);
|
|
590
|
+
_v$18 !== _p$.s && _$setAttribute(_el$50, "aria-current", _p$.s = _v$18);
|
|
591
|
+
_v$19 !== _p$.h && _$setAttribute(_el$50, "aria-label", _p$.h = _v$19);
|
|
592
|
+
_v$20 !== _p$.r && _$setAttribute(_el$50, "aria-selected", _p$.r = _v$20);
|
|
593
|
+
_v$21 !== _p$.d && _$setAttribute(_el$50, "tabindex", _p$.d = _v$21);
|
|
544
594
|
return _p$;
|
|
545
595
|
}, {
|
|
546
596
|
e: undefined,
|
|
@@ -551,20 +601,21 @@ function DatePickerPanel(props) {
|
|
|
551
601
|
n: undefined,
|
|
552
602
|
s: undefined,
|
|
553
603
|
h: undefined,
|
|
554
|
-
r: undefined
|
|
604
|
+
r: undefined,
|
|
605
|
+
d: undefined
|
|
555
606
|
});
|
|
556
607
|
_$runHydrationEvents();
|
|
557
|
-
return _el$
|
|
608
|
+
return _el$50;
|
|
558
609
|
})();
|
|
559
610
|
}
|
|
560
611
|
}));
|
|
561
|
-
return _el$
|
|
612
|
+
return _el$49;
|
|
562
613
|
})()
|
|
563
|
-
}));
|
|
564
|
-
return _el$
|
|
614
|
+
}), _el$41, _co$1);
|
|
615
|
+
return _el$37;
|
|
565
616
|
})()];
|
|
566
617
|
}
|
|
567
|
-
}), _el$
|
|
618
|
+
}), _el$43, _co$10);
|
|
568
619
|
_$effect(_p$ => {
|
|
569
620
|
var _v$7 = messages().calendar,
|
|
570
621
|
_v$8 = previousLabel(),
|
|
@@ -585,29 +636,29 @@ function DatePickerPanel(props) {
|
|
|
585
636
|
function TimeInput(props) {
|
|
586
637
|
const messages = useUiMessages();
|
|
587
638
|
return (() => {
|
|
588
|
-
var _el$
|
|
589
|
-
_el$
|
|
590
|
-
[_el$
|
|
591
|
-
_el$
|
|
592
|
-
_el$
|
|
593
|
-
_$insert(_el$
|
|
639
|
+
var _el$51 = _$getNextElement(_tmpl$15),
|
|
640
|
+
_el$55 = _el$51.firstChild,
|
|
641
|
+
[_el$56, _co$11] = _$getNextMarker(_el$55.nextSibling),
|
|
642
|
+
_el$53 = _el$56.nextSibling,
|
|
643
|
+
_el$54 = _el$53.firstChild;
|
|
644
|
+
_$insert(_el$51, _$createComponent(Show, {
|
|
594
645
|
get when() {
|
|
595
646
|
return props.label;
|
|
596
647
|
},
|
|
597
648
|
get children() {
|
|
598
|
-
var _el$
|
|
599
|
-
_$insert(_el$
|
|
600
|
-
return _el$
|
|
649
|
+
var _el$52 = _$getNextElement(_tmpl$11);
|
|
650
|
+
_$insert(_el$52, () => props.label);
|
|
651
|
+
return _el$52;
|
|
601
652
|
}
|
|
602
|
-
}), _el$
|
|
603
|
-
_el$
|
|
604
|
-
_el$
|
|
605
|
-
_$effect(() => _$setAttribute(_el$
|
|
653
|
+
}), _el$56, _co$11);
|
|
654
|
+
_el$54.addEventListener("blur", () => props.onChange(normalizeTimeInput(props.time)));
|
|
655
|
+
_el$54.$$input = event => props.onChange(filterTimeInput(event.currentTarget.value));
|
|
656
|
+
_$effect(() => _$setAttribute(_el$54, "aria-label", props.label ? messages().timeLabel({
|
|
606
657
|
label: props.label
|
|
607
658
|
}) : messages().time));
|
|
608
|
-
_$effect(() => _$setProperty(_el$
|
|
659
|
+
_$effect(() => _$setProperty(_el$54, "value", props.time));
|
|
609
660
|
_$runHydrationEvents();
|
|
610
|
-
return _el$
|
|
661
|
+
return _el$51;
|
|
611
662
|
})();
|
|
612
663
|
}
|
|
613
664
|
export function DatePicker(props) {
|
|
@@ -628,12 +679,12 @@ export function DatePicker(props) {
|
|
|
628
679
|
return Boolean(props.presets?.length);
|
|
629
680
|
},
|
|
630
681
|
children: close => (() => {
|
|
631
|
-
var _el$
|
|
632
|
-
_el$
|
|
633
|
-
[_el$
|
|
634
|
-
_el$
|
|
635
|
-
[_el$
|
|
636
|
-
_$insert(_el$
|
|
682
|
+
var _el$57 = _$getNextElement(_tmpl$16),
|
|
683
|
+
_el$58 = _el$57.firstChild,
|
|
684
|
+
[_el$59, _co$12] = _$getNextMarker(_el$58.nextSibling),
|
|
685
|
+
_el$60 = _el$59.nextSibling,
|
|
686
|
+
[_el$61, _co$13] = _$getNextMarker(_el$60.nextSibling);
|
|
687
|
+
_$insert(_el$57, _$createComponent(PresetRail, {
|
|
637
688
|
get presets() {
|
|
638
689
|
return props.presets;
|
|
639
690
|
},
|
|
@@ -641,8 +692,8 @@ export function DatePicker(props) {
|
|
|
641
692
|
close();
|
|
642
693
|
commitFieldValue(props, value);
|
|
643
694
|
}
|
|
644
|
-
}), _el$
|
|
645
|
-
_$insert(_el$
|
|
695
|
+
}), _el$59, _co$12);
|
|
696
|
+
_$insert(_el$57, _$createComponent(DatePickerPanel, {
|
|
646
697
|
visibleMonth: visibleMonth,
|
|
647
698
|
setVisibleMonth: setVisibleMonth,
|
|
648
699
|
selected: value,
|
|
@@ -654,8 +705,8 @@ export function DatePicker(props) {
|
|
|
654
705
|
get dateConfig() {
|
|
655
706
|
return dateConfig();
|
|
656
707
|
}
|
|
657
|
-
}), _el$
|
|
658
|
-
return _el$
|
|
708
|
+
}), _el$61, _co$13);
|
|
709
|
+
return _el$57;
|
|
659
710
|
})()
|
|
660
711
|
});
|
|
661
712
|
}
|
|
@@ -664,19 +715,38 @@ export function DateTimePicker(props) {
|
|
|
664
715
|
const value = () => resolveMaybeAccessor(props.value);
|
|
665
716
|
const dateConfig = useDateConfigLocale(() => props.dateConfig);
|
|
666
717
|
const parts = () => splitDateTime(value(), dateConfig());
|
|
718
|
+
const defaultTime = () => props.defaultTime ?? "09:00";
|
|
719
|
+
// Without `optionalTime` every value has a time; with it a date key has none.
|
|
720
|
+
const valueHasTime = () => !props.optionalTime || Boolean(value()) && !isDateKey(value());
|
|
667
721
|
const [visibleMonth, setVisibleMonth] = createSignal(parseDateValue(parts().date, dateConfig()));
|
|
668
722
|
const [draftDate, setDraftDate] = createSignal(parts().date);
|
|
669
|
-
const [draftTime, setDraftTime] = createSignal(parts().time ||
|
|
670
|
-
const
|
|
723
|
+
const [draftTime, setDraftTime] = createSignal(parts().time || defaultTime());
|
|
724
|
+
const [withTime, setWithTime] = createSignal(valueHasTime());
|
|
725
|
+
const valueLabel = () => valueHasTime() ? formatDateTimeValue(value(), dateConfig()) : displayDate(value(), dateConfig());
|
|
726
|
+
let addTimeButton;
|
|
727
|
+
let timeField;
|
|
671
728
|
const syncDraft = () => {
|
|
672
729
|
const next = parts();
|
|
673
730
|
setDraftDate(next.date);
|
|
674
|
-
setDraftTime(next.time ||
|
|
731
|
+
setDraftTime(next.time || defaultTime());
|
|
732
|
+
setWithTime(valueHasTime());
|
|
675
733
|
setVisibleMonth(parseDateValue(next.date, dateConfig()));
|
|
676
734
|
};
|
|
735
|
+
const canApply = () => Boolean(draftDate()) && (!withTime() || isCompleteTime(draftTime()));
|
|
736
|
+
const draftValue = () => withTime() ? toDateTimeValue(draftDate(), draftTime(), dateConfig()) : draftDate() || null;
|
|
737
|
+
const addTime = () => {
|
|
738
|
+
setWithTime(true);
|
|
739
|
+
queueMicrotask(() => timeField?.querySelector("input")?.focus());
|
|
740
|
+
};
|
|
741
|
+
const removeTime = () => {
|
|
742
|
+
setWithTime(false);
|
|
743
|
+
queueMicrotask(() => addTimeButton?.focus());
|
|
744
|
+
};
|
|
677
745
|
return _$createComponent(PickerShell, {
|
|
678
746
|
owner: props,
|
|
679
|
-
icon
|
|
747
|
+
get icon() {
|
|
748
|
+
return props.optionalTime && !valueHasTime() ? "ti ti-calendar" : "ti ti-calendar-time";
|
|
749
|
+
},
|
|
680
750
|
valueLabel: valueLabel,
|
|
681
751
|
get valueContent() {
|
|
682
752
|
return props.renderValue ? () => props.renderValue(value()) : undefined;
|
|
@@ -689,57 +759,118 @@ export function DateTimePicker(props) {
|
|
|
689
759
|
get wide() {
|
|
690
760
|
return Boolean(props.presets?.length);
|
|
691
761
|
},
|
|
692
|
-
children: close =>
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
_el$55 = _el$54.nextSibling,
|
|
697
|
-
[_el$56, _co$11] = _$getNextMarker(_el$55.nextSibling);
|
|
698
|
-
_$insert(_el$52, _$createComponent(PresetRail, {
|
|
699
|
-
get presets() {
|
|
700
|
-
return props.presets;
|
|
701
|
-
},
|
|
702
|
-
onSelect: value => {
|
|
703
|
-
close();
|
|
704
|
-
commitFieldValue(props, value);
|
|
705
|
-
}
|
|
706
|
-
}), _el$54, _co$10);
|
|
707
|
-
_$insert(_el$52, _$createComponent(DatePickerPanel, {
|
|
708
|
-
visibleMonth: visibleMonth,
|
|
709
|
-
setVisibleMonth: setVisibleMonth,
|
|
710
|
-
selected: draftDate,
|
|
711
|
-
focusDate: draftDate,
|
|
712
|
-
onSelect: value => {
|
|
713
|
-
setDraftDate(value);
|
|
714
|
-
setVisibleMonth(parseDateValue(value, dateConfig()));
|
|
715
|
-
},
|
|
716
|
-
get dateConfig() {
|
|
717
|
-
return dateConfig();
|
|
718
|
-
}
|
|
719
|
-
}), _el$56, _co$11);
|
|
720
|
-
return _el$52;
|
|
721
|
-
})(), (() => {
|
|
722
|
-
var _el$57 = _$getNextElement(_tmpl$15),
|
|
723
|
-
_el$59 = _el$57.firstChild,
|
|
724
|
-
[_el$60, _co$12] = _$getNextMarker(_el$59.nextSibling),
|
|
725
|
-
_el$58 = _el$60.nextSibling;
|
|
726
|
-
_$insert(_el$57, _$createComponent(TimeInput, {
|
|
727
|
-
get time() {
|
|
728
|
-
return draftTime();
|
|
729
|
-
},
|
|
730
|
-
onChange: setDraftTime
|
|
731
|
-
}), _el$60, _co$12);
|
|
732
|
-
_el$58.$$click = () => {
|
|
733
|
-
if (!draftDate() || !isCompleteTime(draftTime())) return;
|
|
734
|
-
const value = toDateTimeValue(draftDate(), draftTime(), dateConfig());
|
|
762
|
+
children: close => {
|
|
763
|
+
const apply = () => {
|
|
764
|
+
if (!canApply()) return;
|
|
765
|
+
const next = draftValue();
|
|
735
766
|
close();
|
|
736
|
-
commitFieldValue(props,
|
|
767
|
+
commitFieldValue(props, next);
|
|
737
768
|
};
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
769
|
+
return [(() => {
|
|
770
|
+
var _el$62 = _$getNextElement(_tmpl$16),
|
|
771
|
+
_el$63 = _el$62.firstChild,
|
|
772
|
+
[_el$64, _co$14] = _$getNextMarker(_el$63.nextSibling),
|
|
773
|
+
_el$65 = _el$64.nextSibling,
|
|
774
|
+
[_el$66, _co$15] = _$getNextMarker(_el$65.nextSibling);
|
|
775
|
+
_$insert(_el$62, _$createComponent(PresetRail, {
|
|
776
|
+
get presets() {
|
|
777
|
+
return props.presets;
|
|
778
|
+
},
|
|
779
|
+
onSelect: value => {
|
|
780
|
+
close();
|
|
781
|
+
commitFieldValue(props, value);
|
|
782
|
+
}
|
|
783
|
+
}), _el$64, _co$14);
|
|
784
|
+
_$insert(_el$62, _$createComponent(DatePickerPanel, {
|
|
785
|
+
visibleMonth: visibleMonth,
|
|
786
|
+
setVisibleMonth: setVisibleMonth,
|
|
787
|
+
selected: draftDate,
|
|
788
|
+
focusDate: draftDate,
|
|
789
|
+
onSelect: value => {
|
|
790
|
+
setDraftDate(value);
|
|
791
|
+
setVisibleMonth(parseDateValue(value, dateConfig()));
|
|
792
|
+
// A date without a time is complete with the day, as in the date picker.
|
|
793
|
+
if (props.optionalTime && !withTime()) apply();
|
|
794
|
+
},
|
|
795
|
+
get dateConfig() {
|
|
796
|
+
return dateConfig();
|
|
797
|
+
}
|
|
798
|
+
}), _el$66, _co$15);
|
|
799
|
+
return _el$62;
|
|
800
|
+
})(), (() => {
|
|
801
|
+
var _el$67 = _$getNextElement(_tmpl$19),
|
|
802
|
+
_el$71 = _el$67.firstChild,
|
|
803
|
+
[_el$72, _co$16] = _$getNextMarker(_el$71.nextSibling),
|
|
804
|
+
_el$70 = _el$72.nextSibling;
|
|
805
|
+
_$insert(_el$67, _$createComponent(Show, {
|
|
806
|
+
get when() {
|
|
807
|
+
return props.optionalTime;
|
|
808
|
+
},
|
|
809
|
+
get fallback() {
|
|
810
|
+
return _$createComponent(TimeInput, {
|
|
811
|
+
get time() {
|
|
812
|
+
return draftTime();
|
|
813
|
+
},
|
|
814
|
+
onChange: setDraftTime
|
|
815
|
+
});
|
|
816
|
+
},
|
|
817
|
+
get children() {
|
|
818
|
+
var _el$68 = _$getNextElement(_tmpl$18);
|
|
819
|
+
var _ref$4 = timeField;
|
|
820
|
+
typeof _ref$4 === "function" ? _$use(_ref$4, _el$68) : timeField = _el$68;
|
|
821
|
+
_$insert(_el$68, _$createComponent(Show, {
|
|
822
|
+
get when() {
|
|
823
|
+
return withTime();
|
|
824
|
+
},
|
|
825
|
+
get fallback() {
|
|
826
|
+
return (() => {
|
|
827
|
+
var _el$73 = _$getNextElement(_tmpl$20),
|
|
828
|
+
_el$74 = _el$73.firstChild,
|
|
829
|
+
_el$75 = _el$74.nextSibling,
|
|
830
|
+
[_el$76, _co$17] = _$getNextMarker(_el$75.nextSibling);
|
|
831
|
+
_el$73.$$click = addTime;
|
|
832
|
+
var _ref$5 = addTimeButton;
|
|
833
|
+
typeof _ref$5 === "function" ? _$use(_ref$5, _el$73) : addTimeButton = _el$73;
|
|
834
|
+
_$insert(_el$73, () => messages().addTime, _el$76, _co$17);
|
|
835
|
+
_$runHydrationEvents();
|
|
836
|
+
return _el$73;
|
|
837
|
+
})();
|
|
838
|
+
},
|
|
839
|
+
get children() {
|
|
840
|
+
return [_$createComponent(TimeInput, {
|
|
841
|
+
get time() {
|
|
842
|
+
return draftTime();
|
|
843
|
+
},
|
|
844
|
+
onChange: setDraftTime
|
|
845
|
+
}), (() => {
|
|
846
|
+
var _el$69 = _$getNextElement(_tmpl$17);
|
|
847
|
+
_el$69.$$click = removeTime;
|
|
848
|
+
_$effect(_p$ => {
|
|
849
|
+
var _v$22 = messages().removeTime,
|
|
850
|
+
_v$23 = messages().removeTime;
|
|
851
|
+
_v$22 !== _p$.e && _$setAttribute(_el$69, "aria-label", _p$.e = _v$22);
|
|
852
|
+
_v$23 !== _p$.t && _$setAttribute(_el$69, "title", _p$.t = _v$23);
|
|
853
|
+
return _p$;
|
|
854
|
+
}, {
|
|
855
|
+
e: undefined,
|
|
856
|
+
t: undefined
|
|
857
|
+
});
|
|
858
|
+
_$runHydrationEvents();
|
|
859
|
+
return _el$69;
|
|
860
|
+
})()];
|
|
861
|
+
}
|
|
862
|
+
}));
|
|
863
|
+
_$effect(() => _$setAttribute(_el$68, "data-with-time", withTime() ? "true" : undefined));
|
|
864
|
+
return _el$68;
|
|
865
|
+
}
|
|
866
|
+
}), _el$72, _co$16);
|
|
867
|
+
_el$70.$$click = apply;
|
|
868
|
+
_$insert(_el$70, () => messages().apply);
|
|
869
|
+
_$effect(() => _$setProperty(_el$70, "disabled", !canApply()));
|
|
870
|
+
_$runHydrationEvents();
|
|
871
|
+
return _el$67;
|
|
872
|
+
})()];
|
|
873
|
+
}
|
|
743
874
|
});
|
|
744
875
|
}
|
|
745
876
|
export function DateRangePicker(props) {
|
|
@@ -762,16 +893,19 @@ export function DateRangePicker(props) {
|
|
|
762
893
|
start: parts().start.date || null,
|
|
763
894
|
end: parts().end.date || null
|
|
764
895
|
});
|
|
896
|
+
// The day of the last click that started a one-day range; the next click on another day extends from it.
|
|
897
|
+
const [anchor, setAnchor] = createSignal(null);
|
|
765
898
|
const [previewDate, setPreviewDate] = createSignal(null);
|
|
766
899
|
const [startTime, setStartTime] = createSignal(parts().start.time || "09:00");
|
|
767
900
|
const [endTime, setEndTime] = createSignal(parts().end.time || "10:00");
|
|
768
|
-
const displayRange = createMemo(() => previewRange(draftRange(), previewDate()));
|
|
901
|
+
const displayRange = createMemo(() => previewRange(draftRange(), anchor(), previewDate()));
|
|
769
902
|
const syncDraft = () => {
|
|
770
903
|
const next = parts();
|
|
771
904
|
setDraftRange({
|
|
772
905
|
start: next.start.date || null,
|
|
773
906
|
end: next.end.date || null
|
|
774
907
|
});
|
|
908
|
+
setAnchor(null);
|
|
775
909
|
setPreviewDate(null);
|
|
776
910
|
setStartTime(next.start.time || "09:00");
|
|
777
911
|
setEndTime(next.end.time || "10:00");
|
|
@@ -785,31 +919,25 @@ export function DateRangePicker(props) {
|
|
|
785
919
|
const valueContent = () => {
|
|
786
920
|
const format = withTime() ? formatDateTimeValue : displayDate;
|
|
787
921
|
return (() => {
|
|
788
|
-
var _el$
|
|
789
|
-
_el$
|
|
790
|
-
_el$
|
|
791
|
-
_el$
|
|
792
|
-
_$insert(_el$
|
|
922
|
+
var _el$77 = _$getNextElement(_tmpl$21),
|
|
923
|
+
_el$78 = _el$77.firstChild,
|
|
924
|
+
_el$79 = _el$78.nextSibling,
|
|
925
|
+
_el$80 = _el$79.nextSibling;
|
|
926
|
+
_$insert(_el$78, (() => {
|
|
793
927
|
var _c$ = _$memo(() => !!value().start);
|
|
794
928
|
return () => _c$() ? format(value().start, dateConfig()) : messages().start;
|
|
795
929
|
})());
|
|
796
|
-
_$insert(_el$
|
|
930
|
+
_$insert(_el$80, (() => {
|
|
797
931
|
var _c$2 = _$memo(() => !!value().end);
|
|
798
932
|
return () => _c$2() ? format(value().end, dateConfig()) : "End";
|
|
799
933
|
})());
|
|
800
|
-
return _el$
|
|
934
|
+
return _el$77;
|
|
801
935
|
})();
|
|
802
936
|
};
|
|
803
937
|
const selectDate = value => {
|
|
804
|
-
const
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
start: value,
|
|
808
|
-
end: null
|
|
809
|
-
});
|
|
810
|
-
} else {
|
|
811
|
-
setDraftRange(orderedRange(current.start, value));
|
|
812
|
-
}
|
|
938
|
+
const next = pickRangeDay(draftRange(), anchor(), value);
|
|
939
|
+
setDraftRange(next.range);
|
|
940
|
+
setAnchor(next.anchor);
|
|
813
941
|
setPreviewDate(null);
|
|
814
942
|
};
|
|
815
943
|
const applyDuration = minutes => {
|
|
@@ -874,12 +1002,12 @@ export function DateRangePicker(props) {
|
|
|
874
1002
|
return durationLabel();
|
|
875
1003
|
},
|
|
876
1004
|
get children() {
|
|
877
|
-
var _el$
|
|
878
|
-
_el$
|
|
879
|
-
_el$
|
|
880
|
-
[_el$
|
|
881
|
-
_$insert(_el$
|
|
882
|
-
return _el$
|
|
1005
|
+
var _el$81 = _$getNextElement(_tmpl$22),
|
|
1006
|
+
_el$82 = _el$81.firstChild,
|
|
1007
|
+
_el$83 = _el$82.nextSibling,
|
|
1008
|
+
[_el$84, _co$18] = _$getNextMarker(_el$83.nextSibling);
|
|
1009
|
+
_$insert(_el$81, durationLabel, _el$84, _co$18);
|
|
1010
|
+
return _el$81;
|
|
883
1011
|
}
|
|
884
1012
|
}),
|
|
885
1013
|
onOpen: syncDraft,
|
|
@@ -887,12 +1015,12 @@ export function DateRangePicker(props) {
|
|
|
887
1015
|
return Boolean(props.datePresets?.length || props.presets?.length);
|
|
888
1016
|
},
|
|
889
1017
|
children: close => [(() => {
|
|
890
|
-
var _el$
|
|
891
|
-
_el$
|
|
892
|
-
[_el$
|
|
893
|
-
_el$
|
|
894
|
-
[_el$
|
|
895
|
-
_$insert(_el$
|
|
1018
|
+
var _el$85 = _$getNextElement(_tmpl$16),
|
|
1019
|
+
_el$86 = _el$85.firstChild,
|
|
1020
|
+
[_el$87, _co$19] = _$getNextMarker(_el$86.nextSibling),
|
|
1021
|
+
_el$88 = _el$87.nextSibling,
|
|
1022
|
+
[_el$89, _co$20] = _$getNextMarker(_el$88.nextSibling);
|
|
1023
|
+
_$insert(_el$85, _$createComponent(Show, {
|
|
896
1024
|
get when() {
|
|
897
1025
|
return props.datePresets?.length;
|
|
898
1026
|
},
|
|
@@ -924,33 +1052,30 @@ export function DateRangePicker(props) {
|
|
|
924
1052
|
}
|
|
925
1053
|
});
|
|
926
1054
|
}
|
|
927
|
-
}), _el$
|
|
928
|
-
_$insert(_el$
|
|
1055
|
+
}), _el$87, _co$19);
|
|
1056
|
+
_$insert(_el$85, _$createComponent(DatePickerPanel, {
|
|
929
1057
|
visibleMonth: visibleMonth,
|
|
930
1058
|
setVisibleMonth: setVisibleMonth,
|
|
931
1059
|
range: displayRange,
|
|
932
1060
|
focusDate: () => draftRange().start,
|
|
933
1061
|
onSelect: selectDate,
|
|
934
|
-
onDayPreview: value =>
|
|
935
|
-
const current = draftRange();
|
|
936
|
-
setPreviewDate(current.start && !current.end ? value : null);
|
|
937
|
-
},
|
|
1062
|
+
onDayPreview: value => setPreviewDate(rangeAnchor(draftRange(), anchor()) ? value : null),
|
|
938
1063
|
get dateConfig() {
|
|
939
1064
|
return dateConfig();
|
|
940
1065
|
}
|
|
941
|
-
}), _el$
|
|
942
|
-
return _el$
|
|
1066
|
+
}), _el$89, _co$20);
|
|
1067
|
+
return _el$85;
|
|
943
1068
|
})(), _$createComponent(Show, {
|
|
944
1069
|
get when() {
|
|
945
1070
|
return withTime();
|
|
946
1071
|
},
|
|
947
1072
|
get children() {
|
|
948
|
-
var _el$
|
|
949
|
-
_el$
|
|
950
|
-
[_el$
|
|
951
|
-
_el$
|
|
952
|
-
[_el$
|
|
953
|
-
_$insert(_el$
|
|
1073
|
+
var _el$90 = _$getNextElement(_tmpl$23),
|
|
1074
|
+
_el$91 = _el$90.firstChild,
|
|
1075
|
+
[_el$92, _co$21] = _$getNextMarker(_el$91.nextSibling),
|
|
1076
|
+
_el$93 = _el$92.nextSibling,
|
|
1077
|
+
[_el$94, _co$22] = _$getNextMarker(_el$93.nextSibling);
|
|
1078
|
+
_$insert(_el$90, _$createComponent(TimeInput, {
|
|
954
1079
|
get label() {
|
|
955
1080
|
return messages().start;
|
|
956
1081
|
},
|
|
@@ -958,8 +1083,8 @@ export function DateRangePicker(props) {
|
|
|
958
1083
|
return startTime();
|
|
959
1084
|
},
|
|
960
1085
|
onChange: setStartTime
|
|
961
|
-
}), _el$
|
|
962
|
-
_$insert(_el$
|
|
1086
|
+
}), _el$92, _co$21);
|
|
1087
|
+
_$insert(_el$90, _$createComponent(TimeInput, {
|
|
963
1088
|
get label() {
|
|
964
1089
|
return messages().end;
|
|
965
1090
|
},
|
|
@@ -967,42 +1092,42 @@ export function DateRangePicker(props) {
|
|
|
967
1092
|
return endTime();
|
|
968
1093
|
},
|
|
969
1094
|
onChange: setEndTime
|
|
970
|
-
}), _el$
|
|
971
|
-
return _el$
|
|
1095
|
+
}), _el$94, _co$22);
|
|
1096
|
+
return _el$90;
|
|
972
1097
|
}
|
|
973
1098
|
}), (() => {
|
|
974
|
-
var _el$
|
|
975
|
-
_el$
|
|
976
|
-
[_el$
|
|
977
|
-
_el$
|
|
978
|
-
_$insert(_el$
|
|
1099
|
+
var _el$95 = _$getNextElement(_tmpl$19),
|
|
1100
|
+
_el$98 = _el$95.firstChild,
|
|
1101
|
+
[_el$99, _co$23] = _$getNextMarker(_el$98.nextSibling),
|
|
1102
|
+
_el$97 = _el$99.nextSibling;
|
|
1103
|
+
_$insert(_el$95, _$createComponent(Show, {
|
|
979
1104
|
get when() {
|
|
980
1105
|
return _$memo(() => !!withTime())() && props.durationPresets?.length;
|
|
981
1106
|
},
|
|
982
1107
|
get children() {
|
|
983
|
-
var _el$
|
|
984
|
-
_$insert(_el$
|
|
1108
|
+
var _el$96 = _$getNextElement(_tmpl$24);
|
|
1109
|
+
_$insert(_el$96, _$createComponent(For, {
|
|
985
1110
|
get each() {
|
|
986
1111
|
return props.durationPresets;
|
|
987
1112
|
},
|
|
988
1113
|
children: preset => (() => {
|
|
989
|
-
var _el$
|
|
990
|
-
_el$
|
|
991
|
-
_$insert(_el$
|
|
992
|
-
_$effect(() => _$setAttribute(_el$
|
|
1114
|
+
var _el$100 = _$getNextElement(_tmpl$7);
|
|
1115
|
+
_el$100.$$click = () => applyDuration(preset.minutes);
|
|
1116
|
+
_$insert(_el$100, () => preset.label);
|
|
1117
|
+
_$effect(() => _$setAttribute(_el$100, "aria-pressed", durationMinutes() === preset.minutes));
|
|
993
1118
|
_$runHydrationEvents();
|
|
994
|
-
return _el$
|
|
1119
|
+
return _el$100;
|
|
995
1120
|
})()
|
|
996
1121
|
}));
|
|
997
|
-
_$effect(() => _$setAttribute(_el$
|
|
998
|
-
return _el$
|
|
1122
|
+
_$effect(() => _$setAttribute(_el$96, "aria-label", messages().durationPresets));
|
|
1123
|
+
return _el$96;
|
|
999
1124
|
}
|
|
1000
|
-
}), _el$
|
|
1001
|
-
_el$
|
|
1002
|
-
_$insert(_el$
|
|
1003
|
-
_$effect(() => _$setProperty(_el$
|
|
1125
|
+
}), _el$99, _co$23);
|
|
1126
|
+
_el$97.$$click = () => commit(close);
|
|
1127
|
+
_$insert(_el$97, () => messages().apply);
|
|
1128
|
+
_$effect(() => _$setProperty(_el$97, "disabled", Boolean(draftRange().start) !== Boolean(draftRange().end) || Boolean(withTime() && draftRange().start && draftRange().end && (!isCompleteTime(startTime()) || !isCompleteTime(endTime())))));
|
|
1004
1129
|
_$runHydrationEvents();
|
|
1005
|
-
return _el$
|
|
1130
|
+
return _el$95;
|
|
1006
1131
|
})()]
|
|
1007
1132
|
});
|
|
1008
1133
|
}
|