@lekoala/date-picker 0.5.1 → 0.5.2
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 +296 -294
- package/custom-elements.json +3 -0
- package/dist/date-picker.js +116 -56
- package/dist/date-picker.min.css +1 -1
- package/dist/date-picker.min.js +12 -12
- package/dist/date-picker.standalone.min.js +12 -505
- package/dist/types/activation-intents.d.ts +10 -0
- package/dist/types/activation-intents.d.ts.map +1 -0
- package/dist/types/date-calendar.d.ts +13 -2
- package/dist/types/date-calendar.d.ts.map +1 -1
- package/dist/types/date-field.d.ts +14 -0
- package/dist/types/date-field.d.ts.map +1 -1
- package/dist/types/date-picker.d.ts +44 -30
- package/dist/types/date-picker.d.ts.map +1 -1
- package/docs/API.md +442 -442
- package/docs/DECISIONS.md +74 -74
- package/docs/USE_CASES.md +156 -156
- package/package.json +2 -2
- package/src/activation-intents.js +9 -0
- package/src/date-calendar.js +38 -12
- package/src/date-field.js +32 -1
- package/src/date-picker.js +111 -68
package/dist/date-picker.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*** @lekoala/date-picker v0.5.
|
|
1
|
+
/*** @lekoala/date-picker v0.5.2 - https://github.com/lekoala/date-picker ***/
|
|
2
2
|
(() => {
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
@@ -44,6 +44,9 @@
|
|
|
44
44
|
defineDatePicker: () => defineDatePicker
|
|
45
45
|
});
|
|
46
46
|
|
|
47
|
+
// src/activation-intents.js
|
|
48
|
+
var activationIntents = new WeakMap;
|
|
49
|
+
|
|
47
50
|
// src/date.js
|
|
48
51
|
var DATE_RE = /^(\d{4})-(\d{2})-(\d{2})$/;
|
|
49
52
|
var MONTH_RE = /^(\d{4})-(\d{2})$/;
|
|
@@ -848,6 +851,7 @@
|
|
|
848
851
|
this._connected = false;
|
|
849
852
|
this._rendering = false;
|
|
850
853
|
this._source = null;
|
|
854
|
+
this._hostIntent = null;
|
|
851
855
|
this._sourceStates = new Map;
|
|
852
856
|
this._loadedRanges = new Set;
|
|
853
857
|
this._loadController = null;
|
|
@@ -1284,6 +1288,15 @@
|
|
|
1284
1288
|
this.focusGrid();
|
|
1285
1289
|
}
|
|
1286
1290
|
}
|
|
1291
|
+
_syncRovingDom(date) {
|
|
1292
|
+
for (const cell of this.querySelectorAll('.dp-day[tabindex="0"]')) {
|
|
1293
|
+
if (cell instanceof HTMLElement && cell.dataset.date !== date)
|
|
1294
|
+
cell.tabIndex = -1;
|
|
1295
|
+
}
|
|
1296
|
+
const cell = this.querySelector(`.dp-day[data-date="${CSS.escape(date)}"]`);
|
|
1297
|
+
if (cell instanceof HTMLElement)
|
|
1298
|
+
cell.tabIndex = 0;
|
|
1299
|
+
}
|
|
1287
1300
|
_moveSelectionDom(previousValue, nextValue) {
|
|
1288
1301
|
if (previousValue) {
|
|
1289
1302
|
const prev = this.querySelector(`.dp-day[data-date="${CSS.escape(previousValue)}"]`);
|
|
@@ -1344,17 +1357,24 @@
|
|
|
1344
1357
|
target.focus();
|
|
1345
1358
|
}
|
|
1346
1359
|
async activateDate(date) {
|
|
1360
|
+
const hostIntent = this._hostIntent?.date === date ? this._hostIntent.intent : undefined;
|
|
1361
|
+
this._hostIntent = null;
|
|
1362
|
+
const tagged = (event) => {
|
|
1363
|
+
if (hostIntent !== undefined)
|
|
1364
|
+
activationIntents.set(event, hostIntent);
|
|
1365
|
+
return event;
|
|
1366
|
+
};
|
|
1347
1367
|
const confirmed = await this.ensureDate(date);
|
|
1348
1368
|
const state = this.getDateState(date);
|
|
1349
1369
|
if (!confirmed || state.disabled) {
|
|
1350
|
-
this.dispatchEvent(new CustomEvent("dateinvalid", { detail: { date, state }, bubbles: true }));
|
|
1370
|
+
this.dispatchEvent(tagged(new CustomEvent("dateinvalid", { detail: { date, state }, bubbles: true })));
|
|
1351
1371
|
return false;
|
|
1352
1372
|
}
|
|
1353
|
-
const accepted = this.dispatchEvent(new CustomEvent("dateactivate", {
|
|
1373
|
+
const accepted = this.dispatchEvent(tagged(new CustomEvent("dateactivate", {
|
|
1354
1374
|
detail: { date, state },
|
|
1355
1375
|
bubbles: true,
|
|
1356
1376
|
cancelable: true
|
|
1357
|
-
}));
|
|
1377
|
+
})));
|
|
1358
1378
|
if (!accepted)
|
|
1359
1379
|
return false;
|
|
1360
1380
|
if (this.selection === "single") {
|
|
@@ -1399,6 +1419,8 @@
|
|
|
1399
1419
|
this._reflect("display", this._model.display);
|
|
1400
1420
|
if (previousDisplay !== this.display)
|
|
1401
1421
|
this._emitDisplayChange();
|
|
1422
|
+
else
|
|
1423
|
+
this._syncRovingDom(this._model.focused);
|
|
1402
1424
|
this.activateDate(date);
|
|
1403
1425
|
}
|
|
1404
1426
|
_onChange(event) {
|
|
@@ -1409,7 +1431,7 @@
|
|
|
1409
1431
|
}
|
|
1410
1432
|
if (target instanceof HTMLInputElement && target.matches(".dp-year-input")) {
|
|
1411
1433
|
const year = Number(target.value);
|
|
1412
|
-
if (!Number.isInteger(year) || year < 1 || year >
|
|
1434
|
+
if (!Number.isInteger(year) || year < 1 || year > 9999) {
|
|
1413
1435
|
if (this._connected)
|
|
1414
1436
|
this.render(false);
|
|
1415
1437
|
return;
|
|
@@ -1425,6 +1447,7 @@
|
|
|
1425
1447
|
if (!isDate(date))
|
|
1426
1448
|
return;
|
|
1427
1449
|
this._model.focused = date;
|
|
1450
|
+
this._syncRovingDom(date);
|
|
1428
1451
|
this.dispatchEvent(new CustomEvent("datefocus", { detail: { date, state: this.getDateState(date) }, bubbles: true }));
|
|
1429
1452
|
}
|
|
1430
1453
|
_onKeyDown(event) {
|
|
@@ -1487,8 +1510,8 @@
|
|
|
1487
1510
|
const nextKey = stepMonthKey(display, 1);
|
|
1488
1511
|
const prevDisabled = Boolean(minMonth && prevKey !== null && prevKey < minMonth);
|
|
1489
1512
|
const nextDisabled = Boolean(maxMonth && nextKey !== null && nextKey > maxMonth);
|
|
1490
|
-
const minYearAttr =
|
|
1491
|
-
const maxYearAttr =
|
|
1513
|
+
const minYearAttr = ` min="${this.min ? Number(this.min.slice(0, 4)) : 1}"`;
|
|
1514
|
+
const maxYearAttr = ` max="${this.max ? Number(this.max.slice(0, 4)) : 9999}"`;
|
|
1492
1515
|
const showWeeks = this.showWeekNumbers && this.firstDay === 1;
|
|
1493
1516
|
const weekHeader = showWeeks ? `<th scope="col" class="dp-week-heading" abbr="${escapeHtml(this.messages.week)}">#</th>` : "";
|
|
1494
1517
|
const monthOptions = names.map((name, index) => {
|
|
@@ -1946,6 +1969,10 @@
|
|
|
1946
1969
|
}
|
|
1947
1970
|
|
|
1948
1971
|
// src/date-field.js
|
|
1972
|
+
function isEditable(input) {
|
|
1973
|
+
return !input.matches(":disabled") && !input.readOnly;
|
|
1974
|
+
}
|
|
1975
|
+
|
|
1949
1976
|
class DateFieldController {
|
|
1950
1977
|
constructor(input, options = {}) {
|
|
1951
1978
|
this.input = input;
|
|
@@ -1959,9 +1986,22 @@
|
|
|
1959
1986
|
this._attributeObserver = null;
|
|
1960
1987
|
this.onAttributesChanged = null;
|
|
1961
1988
|
this.confirm = null;
|
|
1989
|
+
this._generatedDefault = null;
|
|
1962
1990
|
}
|
|
1963
1991
|
setLocale(locale) {
|
|
1992
|
+
const generated = this._generatedDefault;
|
|
1993
|
+
const previous = generated ? this.adapter.format(generated) : null;
|
|
1964
1994
|
this.adapter = createDateAdapter(locale || "");
|
|
1995
|
+
if (generated && this.input.defaultValue === previous) {
|
|
1996
|
+
this.input.defaultValue = this.adapter.format(generated);
|
|
1997
|
+
}
|
|
1998
|
+
}
|
|
1999
|
+
adoptDefault() {
|
|
2000
|
+
const input = this.input;
|
|
2001
|
+
if (input.getAttribute("value") != null || input.defaultValue !== "")
|
|
2002
|
+
return;
|
|
2003
|
+
input.defaultValue = input.value;
|
|
2004
|
+
this._generatedDefault = this.canonical && input.value ? this.canonical : null;
|
|
1965
2005
|
}
|
|
1966
2006
|
setMessages(messages) {
|
|
1967
2007
|
this.messages = messages || {};
|
|
@@ -1976,7 +2016,7 @@
|
|
|
1976
2016
|
return this.adapter.placeholder;
|
|
1977
2017
|
}
|
|
1978
2018
|
get isDisabled() {
|
|
1979
|
-
return this.input.disabled;
|
|
2019
|
+
return this.input.matches(":disabled");
|
|
1980
2020
|
}
|
|
1981
2021
|
get isReadOnly() {
|
|
1982
2022
|
return this.input.readOnly;
|
|
@@ -2163,8 +2203,7 @@
|
|
|
2163
2203
|
this._timeFields = [null, null];
|
|
2164
2204
|
this._timeOrderOwned = new Set;
|
|
2165
2205
|
this._lastFocusEndpoint = "";
|
|
2166
|
-
this.
|
|
2167
|
-
this._pendingIntents = new Map;
|
|
2206
|
+
this._activationId = 0;
|
|
2168
2207
|
this._previewDate = "";
|
|
2169
2208
|
this._drag = null;
|
|
2170
2209
|
this._suppressGridClick = false;
|
|
@@ -2219,6 +2258,7 @@
|
|
|
2219
2258
|
if (this._messages === null)
|
|
2220
2259
|
this._refreshMessages();
|
|
2221
2260
|
});
|
|
2261
|
+
this.validate();
|
|
2222
2262
|
}
|
|
2223
2263
|
}
|
|
2224
2264
|
_connectSingle() {
|
|
@@ -2248,9 +2288,7 @@
|
|
|
2248
2288
|
input.setCustomValidity(this.messages.invalidDate);
|
|
2249
2289
|
if (this._field.hidden)
|
|
2250
2290
|
this._field.hidden.defaultValue = this._value;
|
|
2251
|
-
|
|
2252
|
-
input.defaultValue = input.value;
|
|
2253
|
-
}
|
|
2291
|
+
this._field.adoptDefault();
|
|
2254
2292
|
}
|
|
2255
2293
|
_discoverTimeFields() {
|
|
2256
2294
|
this._timeFields = [null, null];
|
|
@@ -2307,21 +2345,24 @@
|
|
|
2307
2345
|
const adapter = this._adapter();
|
|
2308
2346
|
const initialStart = isDate(startInput.value) ? startInput.value : adapter.parse(startInput.value);
|
|
2309
2347
|
const initialEnd = isDate(endInput.value) ? endInput.value : adapter.parse(endInput.value);
|
|
2348
|
+
const startText = startInput.value;
|
|
2349
|
+
const endText = endInput.value;
|
|
2310
2350
|
this._setRange(initialStart || "", initialEnd || "", { emit: false });
|
|
2311
|
-
|
|
2312
|
-
startInput
|
|
2313
|
-
|
|
2314
|
-
|
|
2351
|
+
for (const [input, text, initial] of [
|
|
2352
|
+
[startInput, startText, initialStart],
|
|
2353
|
+
[endInput, endText, initialEnd]
|
|
2354
|
+
]) {
|
|
2355
|
+
if (!text.trim() || isDate(initial))
|
|
2356
|
+
continue;
|
|
2357
|
+
input.value = text;
|
|
2358
|
+
input.setCustomValidity(this.messages.invalidDate);
|
|
2359
|
+
}
|
|
2315
2360
|
if (this._fields[0].hidden)
|
|
2316
2361
|
this._fields[0].hidden.defaultValue = this._range.start;
|
|
2317
2362
|
if (this._fields[1].hidden)
|
|
2318
2363
|
this._fields[1].hidden.defaultValue = this._range.end;
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
}
|
|
2322
|
-
if (endInput.getAttribute("value") == null && endInput.defaultValue === "") {
|
|
2323
|
-
endInput.defaultValue = endInput.value;
|
|
2324
|
-
}
|
|
2364
|
+
for (const field of this._fields)
|
|
2365
|
+
field.adoptDefault();
|
|
2325
2366
|
}
|
|
2326
2367
|
disconnectedCallback() {
|
|
2327
2368
|
this._stopDefaultMessages?.();
|
|
@@ -2372,8 +2413,10 @@
|
|
|
2372
2413
|
if (name === "value") {
|
|
2373
2414
|
if (this._rangeMode())
|
|
2374
2415
|
return;
|
|
2375
|
-
if (!newValue || isDate(newValue))
|
|
2416
|
+
if (!newValue || isDate(newValue)) {
|
|
2417
|
+
this._supersedeActivations();
|
|
2376
2418
|
this._setValue(newValue || "", { emit: false, format: true, reflect: false });
|
|
2419
|
+
}
|
|
2377
2420
|
return;
|
|
2378
2421
|
}
|
|
2379
2422
|
if (name === "locale")
|
|
@@ -2398,6 +2441,7 @@
|
|
|
2398
2441
|
}
|
|
2399
2442
|
if (value && !isDate(value))
|
|
2400
2443
|
throw new TypeError(`Invalid date-picker value: ${value}`);
|
|
2444
|
+
this._supersedeActivations();
|
|
2401
2445
|
this._setValue(value || "", { emit: false, format: true });
|
|
2402
2446
|
}
|
|
2403
2447
|
get range() {
|
|
@@ -2407,6 +2451,7 @@
|
|
|
2407
2451
|
if (!this._rangeMode())
|
|
2408
2452
|
throw new TypeError("range is only available on <date-picker range>");
|
|
2409
2453
|
const { start, end } = normalizeRange(value);
|
|
2454
|
+
this._supersedeActivations();
|
|
2410
2455
|
this._setRange(start, end);
|
|
2411
2456
|
}
|
|
2412
2457
|
get locale() {
|
|
@@ -2547,7 +2592,7 @@
|
|
|
2547
2592
|
const button = this._buttons[0]?.button;
|
|
2548
2593
|
if (button)
|
|
2549
2594
|
button.disabled = input.disabled || input.readOnly;
|
|
2550
|
-
if (this._open && (input
|
|
2595
|
+
if (this._open && !isEditable(input))
|
|
2551
2596
|
this.hide(false);
|
|
2552
2597
|
}
|
|
2553
2598
|
_syncRangeFields() {
|
|
@@ -2562,9 +2607,9 @@
|
|
|
2562
2607
|
}
|
|
2563
2608
|
this._syncDragAffordance();
|
|
2564
2609
|
const active = this._range?.activeEndpoint === "end" ? 1 : 0;
|
|
2565
|
-
|
|
2610
|
+
const activeInput = this._fields[active]?.input;
|
|
2611
|
+
if (this._open && activeInput && !isEditable(activeInput))
|
|
2566
2612
|
this.hide(false);
|
|
2567
|
-
}
|
|
2568
2613
|
}
|
|
2569
2614
|
_setRangeAria() {
|
|
2570
2615
|
if (!this._fields || !this._panel || !this._formatHint)
|
|
@@ -2701,15 +2746,23 @@
|
|
|
2701
2746
|
this.show({ returnFocus: button });
|
|
2702
2747
|
}, { signal });
|
|
2703
2748
|
button.addEventListener("keydown", (event) => this._onTriggerKeyDown("", event), { signal });
|
|
2749
|
+
calendar.addEventListener("click", (event) => this._captureGridIntent(event), { capture: true, signal });
|
|
2750
|
+
calendar.addEventListener("keydown", (event) => this._captureGridIntent(event), {
|
|
2751
|
+
capture: true,
|
|
2752
|
+
signal
|
|
2753
|
+
});
|
|
2704
2754
|
calendar.addEventListener("dateactivate", (event) => {
|
|
2705
2755
|
const custom = event;
|
|
2706
2756
|
const date = custom.detail?.date;
|
|
2707
2757
|
if (!isDate(date))
|
|
2708
2758
|
return;
|
|
2759
|
+
const intent = activationIntents.get(custom);
|
|
2709
2760
|
queueMicrotask(() => {
|
|
2710
2761
|
if (custom.defaultPrevented || !this._connected)
|
|
2711
2762
|
return;
|
|
2712
|
-
if (
|
|
2763
|
+
if (intent && intent.id !== this._activationId)
|
|
2764
|
+
return;
|
|
2765
|
+
if (!this._input || !isEditable(this._input))
|
|
2713
2766
|
return;
|
|
2714
2767
|
this._field?.dirty();
|
|
2715
2768
|
this._setValue(date, { emit: true, format: true });
|
|
@@ -2729,7 +2782,12 @@
|
|
|
2729
2782
|
const { signal } = controller;
|
|
2730
2783
|
for (const [index, field] of this._fields.entries()) {
|
|
2731
2784
|
const endpoint = index === 1 ? "end" : "start";
|
|
2732
|
-
field.input.addEventListener("input", () =>
|
|
2785
|
+
field.input.addEventListener("input", () => {
|
|
2786
|
+
field.handleInput();
|
|
2787
|
+
this._orderTags.delete(index);
|
|
2788
|
+
if (!field.isDirty)
|
|
2789
|
+
this._revalidateRange(endpoint);
|
|
2790
|
+
}, { signal });
|
|
2733
2791
|
field.input.addEventListener("change", () => void this._commitFieldText(endpoint), { signal });
|
|
2734
2792
|
field.input.addEventListener("blur", () => void this._commitFieldText(endpoint), { signal });
|
|
2735
2793
|
field.input.addEventListener("focus", (event) => this._onFieldFocus(endpoint, event), { signal });
|
|
@@ -2767,10 +2825,9 @@
|
|
|
2767
2825
|
queueMicrotask(() => {
|
|
2768
2826
|
if (custom.defaultPrevented || !this._connected || !this._range)
|
|
2769
2827
|
return;
|
|
2770
|
-
const intent =
|
|
2771
|
-
if (intent === undefined || intent.id !== this.
|
|
2828
|
+
const intent = activationIntents.get(custom);
|
|
2829
|
+
if (intent === undefined || intent.id !== this._activationId)
|
|
2772
2830
|
return;
|
|
2773
|
-
this._pendingIntents.delete(date);
|
|
2774
2831
|
const editable = (bound) => this._boundEditable(bound);
|
|
2775
2832
|
const result = intent.endpoint ? this._range.moveEndpoint(date, intent.endpoint, editable) : this._range.activate(date, editable);
|
|
2776
2833
|
if (result.status === "refused") {
|
|
@@ -2805,8 +2862,7 @@
|
|
|
2805
2862
|
if (!this._range || !calendar)
|
|
2806
2863
|
return;
|
|
2807
2864
|
this._range.focus(endpoint);
|
|
2808
|
-
this.
|
|
2809
|
-
this._pendingIntents.clear();
|
|
2865
|
+
this._activationId++;
|
|
2810
2866
|
this._lastFocusEndpoint = endpoint;
|
|
2811
2867
|
const target = this._boundCanonical(endpoint) || todayISO();
|
|
2812
2868
|
calendar.display = monthKey(target);
|
|
@@ -2868,8 +2924,7 @@
|
|
|
2868
2924
|
this._lastFocusEndpoint = endpoint;
|
|
2869
2925
|
this._range?.focus(endpoint);
|
|
2870
2926
|
if (switched) {
|
|
2871
|
-
this.
|
|
2872
|
-
this._pendingIntents.clear();
|
|
2927
|
+
this._activationId++;
|
|
2873
2928
|
}
|
|
2874
2929
|
if (!this.openOnFocus || this._suppressFocusOpen)
|
|
2875
2930
|
return;
|
|
@@ -2880,25 +2935,34 @@
|
|
|
2880
2935
|
this.show({ moveFocus: false });
|
|
2881
2936
|
}
|
|
2882
2937
|
_captureGridIntent(event) {
|
|
2883
|
-
if (
|
|
2938
|
+
if (this._rangeMode() ? !this._range : !this._field)
|
|
2884
2939
|
return;
|
|
2885
2940
|
if (event.type === "keydown") {
|
|
2886
2941
|
const key = event.key;
|
|
2887
2942
|
if (key !== "Enter" && key !== " ")
|
|
2888
2943
|
return;
|
|
2889
2944
|
}
|
|
2945
|
+
if (event.type === "click" && this._suppressGridClick)
|
|
2946
|
+
return;
|
|
2890
2947
|
if (!(event.target instanceof Element))
|
|
2891
2948
|
return;
|
|
2892
2949
|
const cell = event.target.closest(".dp-day[data-date]");
|
|
2893
2950
|
const date = cell?.getAttribute("data-date") || "";
|
|
2894
2951
|
if (!isDate(date))
|
|
2895
2952
|
return;
|
|
2896
|
-
this.
|
|
2897
|
-
|
|
2953
|
+
this._attachIntent(date, "");
|
|
2954
|
+
}
|
|
2955
|
+
_attachIntent(date, endpoint) {
|
|
2956
|
+
if (!this._calendar)
|
|
2957
|
+
return;
|
|
2958
|
+
this._calendar._hostIntent = { date, intent: { id: ++this._activationId, endpoint } };
|
|
2959
|
+
}
|
|
2960
|
+
_supersedeActivations() {
|
|
2961
|
+
this._activationId++;
|
|
2898
2962
|
}
|
|
2899
2963
|
_boundEditable(bound) {
|
|
2900
2964
|
const field = this._fields?.[bound === "end" ? 1 : 0];
|
|
2901
|
-
return field != null &&
|
|
2965
|
+
return field != null && isEditable(field.input);
|
|
2902
2966
|
}
|
|
2903
2967
|
_applyRangeTransition(transition) {
|
|
2904
2968
|
const fields = this._fields;
|
|
@@ -3046,8 +3110,7 @@
|
|
|
3046
3110
|
return;
|
|
3047
3111
|
}
|
|
3048
3112
|
const target = drag.endpoint === "start" ? transition.range.start : transition.range.end;
|
|
3049
|
-
this.
|
|
3050
|
-
this._pendingIntents.set(target, { id: ++this._rangeCommitId, endpoint: drag.endpoint });
|
|
3113
|
+
this._attachIntent(target, drag.endpoint);
|
|
3051
3114
|
this._calendar?.activateDate(target);
|
|
3052
3115
|
}
|
|
3053
3116
|
_onGridPointerCancel(event) {
|
|
@@ -3253,7 +3316,7 @@
|
|
|
3253
3316
|
const field = fields[index];
|
|
3254
3317
|
if (!field)
|
|
3255
3318
|
return false;
|
|
3256
|
-
if (options.user === true && (field.input
|
|
3319
|
+
if (options.user === true && !isEditable(field.input))
|
|
3257
3320
|
return false;
|
|
3258
3321
|
const next = value || "";
|
|
3259
3322
|
const previous = field.canonical;
|
|
@@ -3337,8 +3400,8 @@
|
|
|
3337
3400
|
const [startInput, endInput] = this._timeFields;
|
|
3338
3401
|
const bounds = ["start", "end"];
|
|
3339
3402
|
const inputs = [startInput, endInput];
|
|
3340
|
-
const startValue = startInput && !startInput.disabled ? startInput.value.trim() : "";
|
|
3341
|
-
const endValue = endInput && !endInput.disabled ? endInput.value.trim() : "";
|
|
3403
|
+
const startValue = startInput && !startInput.matches(":disabled") ? startInput.value.trim() : "";
|
|
3404
|
+
const endValue = endInput && !endInput.matches(":disabled") ? endInput.value.trim() : "";
|
|
3342
3405
|
const inverted = Boolean(startInput && endInput && startValue && endValue) && isTime(startValue) && isTime(endValue) && compareTimes(endValue, startValue) < 0;
|
|
3343
3406
|
for (const [index, bound] of bounds.entries()) {
|
|
3344
3407
|
const input = inputs[index];
|
|
@@ -3417,12 +3480,12 @@
|
|
|
3417
3480
|
return "";
|
|
3418
3481
|
const preferred = this._lastFocusEndpoint || "start";
|
|
3419
3482
|
const preferredIndex = preferred === "end" ? 1 : 0;
|
|
3420
|
-
if (
|
|
3483
|
+
if (isEditable(this._fields[preferredIndex].input)) {
|
|
3421
3484
|
return preferred;
|
|
3422
3485
|
}
|
|
3423
3486
|
const alternative = preferred === "end" ? "start" : "end";
|
|
3424
3487
|
const alternativeIndex = alternative === "end" ? 1 : 0;
|
|
3425
|
-
if (
|
|
3488
|
+
if (isEditable(this._fields[alternativeIndex].input)) {
|
|
3426
3489
|
return alternative;
|
|
3427
3490
|
}
|
|
3428
3491
|
return "";
|
|
@@ -3434,6 +3497,8 @@
|
|
|
3434
3497
|
return true;
|
|
3435
3498
|
for (const [index, field] of fields.entries()) {
|
|
3436
3499
|
const result = await field.commit({ moveDisplay: false });
|
|
3500
|
+
if (result.status === "invalid")
|
|
3501
|
+
this._orderTags.delete(index);
|
|
3437
3502
|
if (result.status === "ok" || result.status === "clear") {
|
|
3438
3503
|
const which = index === 1 ? "end" : "start";
|
|
3439
3504
|
this._setBound(which, result.value || "", { format: result.status === "ok" });
|
|
@@ -3446,11 +3511,7 @@
|
|
|
3446
3511
|
const input = this._field?.input;
|
|
3447
3512
|
if (!input)
|
|
3448
3513
|
return true;
|
|
3449
|
-
|
|
3450
|
-
input.setCustomValidity("");
|
|
3451
|
-
} else {
|
|
3452
|
-
await this._commitText(false, { force: true, moveDisplay: false });
|
|
3453
|
-
}
|
|
3514
|
+
await this._commitText(false, { force: true, moveDisplay: false });
|
|
3454
3515
|
this._revalidateTimeOrder("start");
|
|
3455
3516
|
this._revalidateTimeOrder("end");
|
|
3456
3517
|
const timesValid = this._timeFields.every((timeInput) => timeInput?.checkValidity() ?? true);
|
|
@@ -3468,7 +3529,7 @@
|
|
|
3468
3529
|
this._activateRangeEndpoint(endpoint);
|
|
3469
3530
|
} else {
|
|
3470
3531
|
const input = this._input;
|
|
3471
|
-
if (!input || input
|
|
3532
|
+
if (!input || !isEditable(input))
|
|
3472
3533
|
return;
|
|
3473
3534
|
const target = this._value || this._adapter().parse(input.value) || todayISO();
|
|
3474
3535
|
calendar.display = monthKey(target);
|
|
@@ -3510,8 +3571,7 @@
|
|
|
3510
3571
|
} catch {}
|
|
3511
3572
|
this._open = false;
|
|
3512
3573
|
this._setExpanded(false);
|
|
3513
|
-
this.
|
|
3514
|
-
this._pendingIntents.clear();
|
|
3574
|
+
this._supersedeActivations();
|
|
3515
3575
|
this._suppressGridClick = false;
|
|
3516
3576
|
if (this._drag) {
|
|
3517
3577
|
this._releaseDragCapture(this._drag.pointerId);
|
|
@@ -3534,7 +3594,7 @@
|
|
|
3534
3594
|
if (active) {
|
|
3535
3595
|
const index = active === "end" ? 1 : 0;
|
|
3536
3596
|
const field = this._fields?.[index];
|
|
3537
|
-
if (field &&
|
|
3597
|
+
if (field && isEditable(field.input))
|
|
3538
3598
|
return active;
|
|
3539
3599
|
}
|
|
3540
3600
|
return this._resolveRangeEndpoint();
|
package/dist/date-picker.min.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:where(date-calendar,date-picker){--dp-bg:#fff;--dp-fg:#1f2328;--dp-muted:color-mix(in srgb,var(--dp-fg)58%,var(--dp-bg));--dp-border:color-mix(in srgb,var(--dp-fg)16%,var(--dp-bg));--dp-hover:color-mix(in srgb,var(--dp-fg)5%,var(--dp-bg));--dp-accent:#2563eb;--dp-accent-fg:#fff;--dp-focus:var(--dp-accent);--dp-focus-width:2px;--dp-radius:.5rem;--dp-day-size:2.75rem;--dp-gap:.375rem;--dp-header-control-size:2.25rem;--dp-header-block-gap:.75rem;--dp-row-gap:.375rem;--dp-picker-button-size:2.5rem;--dp-year-inline-size:5.5rem;--dp-day-radius:calc(var(--dp-radius)*.75);color:var(--dp-fg);font:inherit}.dp-visually-hidden{position:absolute!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important;border:0!important;block-size:1px!important;inline-size:1px!important;margin:-1px!important;padding:0!important}date-calendar{display:block;inline-size:max-content;max-inline-size:100%}.dp-calendar-shell{inline-size:max-content;max-inline-size:100%}.dp-calendar-header{display:grid;grid-template-columns:minmax(0,1fr)var(--dp-year-inline-size)auto auto;align-items:stretch;gap:var(--dp-gap);margin-block-end:var(--dp-header-block-gap)}date-calendar[data-year-first] .dp-calendar-header{grid-template-columns:var(--dp-year-inline-size)minmax(0,1fr)auto auto}.dp-calendar-header :where(button,select,input){box-sizing:border-box;min-inline-size:0}.dp-calendar-header .dp-skin{min-block-size:var(--dp-header-control-size);border:1px solid var(--dp-border);border-radius:calc(var(--dp-radius)*.75);background:var(--dp-bg);color:var(--dp-fg);font:inherit;padding-block-start:.15rem;padding-block-end:.15rem;line-height:1.2}.dp-calendar-header input.dp-skin{padding-inline-start:.45rem;padding-inline-end:.45rem}.dp-month-select{overflow:hidden;text-overflow:ellipsis;inline-size:100%}.dp-month-select.dp-skin{appearance:none;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - .9rem),calc(100% - .65rem);background-repeat:no-repeat;background-size:.3rem .3rem;padding-inline-start:.45rem;padding-inline-end:2rem}[dir=rtl] .dp-month-select.dp-skin,html[dir=rtl] .dp-month-select.dp-skin{background-position:.9rem,.65rem}.dp-year-input{inline-size:100%}.dp-nav.dp-skin{display:grid;inline-size:var(--dp-header-control-size);cursor:pointer;place-items: center;padding:0;font-size:1.35rem;line-height:1}.dp-nav svg{display:block;pointer-events:none;block-size:1rem;inline-size:1rem}.dp-calendar-header .dp-skin:disabled,.dp-picker-button:disabled{cursor:not-allowed;opacity:.45}.dp-nav.dp-skin:hover:not(:disabled){background:var(--dp-hover)}.dp-calendar-header .dp-skin:focus-visible{outline:var(--dp-focus-width)solid var(--dp-focus);outline-offset:calc(var(--dp-focus-width)*-1)}date-picker>input:not([type=hidden]):focus-visible{outline:var(--dp-focus-width)solid var(--dp-focus);outline-offset:calc(var(--dp-focus-width)*-1)}.dp-day:focus-visible{outline:var(--dp-focus-width)solid var(--dp-focus);outline-offset:calc(var(--dp-focus-width)*-1)}.dp-day:hover:not([data-disabled=true]):not([data-selected=true]):not([data-range-start=true]):not([data-range-end=true]){background:var(--dp-hover)}.dp-grid{border-collapse:separate;border-spacing:0 var(--dp-row-gap);table-layout:fixed}.dp-grid :where(th,td){box-sizing:border-box;inline-size:var(--dp-day-size);block-size:var(--dp-day-size);text-align:center;padding:0}.dp-grid thead th{color:var(--dp-muted);block-size:1.5rem;font-size:.72rem;font-weight:500}.dp-day{position:relative;border-radius:var(--dp-day-radius);cursor:pointer;outline:none;vertical-align:middle;border:1px solid #0000;font-size:.875rem}.dp-day:-webkit-any([data-selected=true],[data-range-start=true],[data-range-end=true]):focus-visible{outline-color:var(--dp-accent-fg)}.dp-day:-moz-any([data-selected=true],[data-range-start=true],[data-range-end=true]):focus-visible{outline-color:var(--dp-accent-fg)}.dp-day:is([data-selected=true],[data-range-start=true],[data-range-end=true]):focus-visible{outline-color:var(--dp-accent-fg)}.dp-day[data-outside-month=true]{color:var(--dp-muted)}.dp-day[data-selected=true]{background:var(--dp-accent);color:var(--dp-accent-fg)}.dp-day[data-today=true]:not(:-webkit-any([data-selected=true],[data-range-start=true],[data-range-end=true])){border-color:var(--dp-accent)}.dp-day[data-today=true]:not(:-moz-any([data-selected=true],[data-range-start=true],[data-range-end=true])){border-color:var(--dp-accent)}.dp-day[data-today=true]:not(:is([data-selected=true],[data-range-start=true],[data-range-end=true])){border-color:var(--dp-accent)}.dp-day[data-disabled=true]{cursor:not-allowed;opacity:.42}.dp-day[data-range-start=true],.dp-day[data-range-end=true]{background:var(--dp-accent);color:var(--dp-accent-fg)}.dp-day[data-in-range=true]{background:color-mix(in srgb,var(--dp-accent)18%,var(--dp-bg));border-radius:0}.dp-day[data-range-start=true]:has(+[data-in-range=true],+[data-range-end=true]):not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-right-radius:0;border-bottom-right-radius:0}.dp-day[data-range-start=true]:has(+[data-in-range=true],+[data-range-end=true]):not(:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-right-radius:0;border-bottom-right-radius:0}.dp-day[data-range-start=true]:has(+[data-in-range=true],+[data-range-end=true]):not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-right-radius:0;border-bottom-right-radius:0}.dp-day[data-range-start=true]:has(+[data-in-range=true],+[data-range-end=true]):-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-left-radius:0;border-bottom-left-radius:0}.dp-day[data-range-start=true]:has(+[data-in-range=true],+[data-range-end=true]):-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-left-radius:0;border-bottom-left-radius:0}.dp-day[data-range-start=true]:has(+[data-in-range=true],+[data-range-end=true]):is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-left-radius:0;border-bottom-left-radius:0}.dp-day:-webkit-any([data-in-range=true],[data-range-start=true])+.dp-day[data-range-end=true]:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-left-radius:0;border-bottom-left-radius:0}.dp-day:-moz-any([data-in-range=true],[data-range-start=true])+.dp-day[data-range-end=true]:not(:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-left-radius:0;border-bottom-left-radius:0}.dp-day:is([data-in-range=true],[data-range-start=true])+.dp-day[data-range-end=true]:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-left-radius:0;border-bottom-left-radius:0}.dp-day:-webkit-any([data-in-range=true],[data-range-start=true])+.dp-day[data-range-end=true]:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-right-radius:0;border-bottom-right-radius:0}.dp-day:-moz-any([data-in-range=true],[data-range-start=true])+.dp-day[data-range-end=true]:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-right-radius:0;border-bottom-right-radius:0}.dp-day:is([data-in-range=true],[data-range-start=true])+.dp-day[data-range-end=true]:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-right-radius:0;border-bottom-right-radius:0}.dp-day[data-in-range=true]:first-of-type:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-left-radius:var(--dp-day-radius);border-bottom-left-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:first-of-type:not(:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-left-radius:var(--dp-day-radius);border-bottom-left-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:first-of-type:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-left-radius:var(--dp-day-radius);border-bottom-left-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:first-of-type:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-right-radius:var(--dp-day-radius);border-bottom-right-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:first-of-type:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-right-radius:var(--dp-day-radius);border-bottom-right-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:first-of-type:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-right-radius:var(--dp-day-radius);border-bottom-right-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:last-of-type:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-right-radius:var(--dp-day-radius);border-bottom-right-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:last-of-type:not(:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-right-radius:var(--dp-day-radius);border-bottom-right-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:last-of-type:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-right-radius:var(--dp-day-radius);border-bottom-right-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:last-of-type:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-left-radius:var(--dp-day-radius);border-bottom-left-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:last-of-type:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-left-radius:var(--dp-day-radius);border-bottom-left-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:last-of-type:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-left-radius:var(--dp-day-radius);border-bottom-left-radius:var(--dp-day-radius)}[data-range-preview] .dp-day:-webkit-any([data-range-start=true],[data-range-end=true]){background:color-mix(in srgb,var(--dp-accent)58%,var(--dp-bg))}[data-range-preview] .dp-day:-moz-any([data-range-start=true],[data-range-end=true]){background:color-mix(in srgb,var(--dp-accent)58%,var(--dp-bg))}[data-range-preview] .dp-day:is([data-range-start=true],[data-range-end=true]){background:color-mix(in srgb,var(--dp-accent)58%,var(--dp-bg))}[data-range-preview] .dp-day[data-in-range=true]{background:color-mix(in srgb,var(--dp-accent)11%,var(--dp-bg))}[data-range-drag] .dp-day:-webkit-any([data-range-start=true],[data-range-end=true]){cursor:grab}[data-range-drag] .dp-day:-moz-any([data-range-start=true],[data-range-end=true]){cursor:grab}[data-range-drag] .dp-day:is([data-range-start=true],[data-range-end=true]){cursor:grab}[data-range-drag=active],[data-range-drag=active] .dp-day{cursor:grabbing}.dp-day-number{display:block;font-variant-numeric:tabular-nums}.dp-day[data-disabled=true]:focus-visible{opacity:1}.dp-day[data-disabled=true]:focus-visible .dp-day-number{color:var(--dp-muted)}.dp-day-extra{position:absolute;display:flex;pointer-events:none;justify-content:center;gap:2px;min-block-size:.35rem;font-size:.55rem;line-height:1;bottom:1px;left:2px;right:2px}.dp-week-number,.dp-week-heading{color:var(--dp-muted);font-size:.65rem;font-weight:500;inline-size:1.6rem!important}date-picker{position:relative;display:inline-grid;grid-template-columns:minmax(0,1fr);align-items:stretch;max-inline-size:100%}date-picker>input:not([type=hidden]){min-inline-size:0}date-picker>input:not([type=hidden]):not([type=time]){grid-column:1;grid-row:1;box-sizing:border-box;inline-size:100%;padding-inline-end:calc(var(--dp-picker-button-size) + .5rem)}.dp-picker-button{display:grid;grid-column:1;grid-row:1;inline-size:var(--dp-picker-button-size);color:var(--dp-fg);font:inherit;cursor:pointer;background:0 0;border:0;place-self:stretch end;place-items: center;min-inline-size:0}.dp-picker-button:focus-visible{outline:var(--dp-focus-width)solid var(--dp-focus);outline-offset:-5px;border-radius:var(--dp-radius)}date-picker:has(>[data-time-start],>[data-time-end]){grid-template-columns:minmax(0,1fr)minmax(0,1fr);column-gap:var(--dp-gap)}date-picker:has(>[data-time-start]):has(>[data-time-end]){grid-template-columns:minmax(0,1fr)minmax(0,1fr)minmax(0,1fr)}date-picker>input[data-time-start]{grid-column:2;grid-row:1;min-inline-size:0}date-picker>input[data-time-end]{grid-column:3;grid-row:1;min-inline-size:0}date-picker[range]{row-gap:var(--dp-gap)}date-picker[range]>input[data-range-start]{grid-row:1}date-picker[range]>input[data-range-end]{grid-row:2}date-picker[range]>.dp-picker-button[data-endpoint=start]{grid-row:1}date-picker[range]>.dp-picker-button[data-endpoint=end]{grid-row:2}.dp-picker-panel[popover]{position:fixed;border:1px solid var(--dp-border);border-radius:var(--dp-radius);background:var(--dp-bg);color:var(--dp-fg);max-block-size:var(--available-height,90svh);overflow:auto;max-inline-size:calc(100vi - 1rem);margin:0;padding:.875rem 1rem;inset:auto;box-shadow:0 .5rem 1.5rem #0f172a1f}.dp-picker-panel:not(:popover-open){display:none}@media (forced-colors:active){.dp-month-select.dp-skin,[dir=rtl] .dp-month-select.dp-skin{appearance:auto;background-image:none;padding-inline-start:.45rem;padding-inline-end:.45rem}.dp-day:-webkit-any([data-selected=true],[data-range-start=true],[data-range-end=true]){color:canvastext;background-color:canvas;border:2px solid highlight}.dp-day:-moz-any([data-selected=true],[data-range-start=true],[data-range-end=true]){color:canvastext;background-color:canvas;border:2px solid highlight}.dp-day:is([data-selected=true],[data-range-start=true],[data-range-end=true]){color:canvastext;background-color:canvas;border:2px solid highlight}.dp-day[data-in-range=true]{color:canvastext}.dp-day[data-in-range=true]:after{content:"";position:absolute;background-color:highlight;block-size:1px;bottom:4px;left:3px;right:3px}.dp-day[data-today=true]{border-color:highlight}.dp-day-extra{color:canvastext;forced-color-adjust:none}}
|
|
1
|
+
:where(date-calendar,date-picker){--dp-bg: #ffffff;--dp-fg: #1f2328;--dp-muted: color-mix(in srgb,var(--dp-fg) 58%,var(--dp-bg));--dp-border: color-mix(in srgb,var(--dp-fg) 16%,var(--dp-bg));--dp-hover: color-mix(in srgb,var(--dp-fg) 5%,var(--dp-bg));--dp-accent: #2563eb;--dp-accent-fg: #fff;--dp-focus: var(--dp-accent);--dp-focus-width: 2px;--dp-radius: 0.5rem;--dp-day-size: 2.75rem;--dp-gap: 0.375rem;--dp-header-control-size: 2.25rem;--dp-header-block-gap: 0.75rem;--dp-row-gap: 0.375rem;--dp-picker-button-size: 2.5rem;--dp-year-inline-size: 5.5rem;--dp-day-radius: calc(var(--dp-radius) * 0.75);color: var(--dp-fg);font: inherit}.dp-visually-hidden{position: absolute !important;inline-size: 1px !important;block-size: 1px !important;padding: 0 !important;margin: -1px !important;overflow: hidden !important;clip: rect(0 0 0 0) !important;white-space: nowrap !important;border: 0 !important}date-calendar{display: block;inline-size: max-content;max-inline-size: 100%}.dp-calendar-shell{inline-size: max-content;max-inline-size: 100%}.dp-calendar-header{display: grid;grid-template-columns: minmax(0,1fr) var(--dp-year-inline-size) auto auto;align-items: stretch;gap: var(--dp-gap);margin-block-end: var(--dp-header-block-gap)}date-calendar[data-year-first] .dp-calendar-header{grid-template-columns: var(--dp-year-inline-size) minmax(0,1fr) auto auto}.dp-calendar-header :where(button,select,input){box-sizing: border-box;min-inline-size: 0}.dp-calendar-header .dp-skin{min-block-size: var(--dp-header-control-size);padding-block: 0.15rem;border: 1px solid var(--dp-border);border-radius: calc(var(--dp-radius) * 0.75);background: var(--dp-bg);color: var(--dp-fg);font: inherit;line-height: 1.2}.dp-calendar-header input.dp-skin{padding-inline: 0.45rem}.dp-month-select{inline-size: 100%;overflow: hidden;text-overflow: ellipsis}.dp-month-select.dp-skin{appearance: none;padding-inline: 0.45rem 2rem;background-image: linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position: calc(100% - 0.9rem) 50%,calc(100% - 0.65rem) 50%;background-size: 0.3rem 0.3rem;background-repeat: no-repeat}[dir="rtl"] .dp-month-select.dp-skin,html[dir="rtl"] .dp-month-select.dp-skin{background-position: 0.9rem 50%,0.65rem 50%}.dp-year-input{inline-size: 100%}.dp-nav.dp-skin{display: grid;place-items: center;inline-size: var(--dp-header-control-size);padding: 0;font-size: 1.35rem;line-height: 1;cursor: pointer}.dp-nav svg{display: block;inline-size: 1rem;block-size: 1rem;pointer-events: none}.dp-calendar-header .dp-skin:disabled,.dp-picker-button:disabled{cursor: not-allowed;opacity: 0.45}.dp-nav.dp-skin:hover:not(:disabled){background: var(--dp-hover)}.dp-calendar-header .dp-skin:focus-visible,date-picker>input:not([type="hidden"]):focus-visible,.dp-day:focus-visible{outline: var(--dp-focus-width) solid var(--dp-focus);outline-offset: calc(var(--dp-focus-width) * -1)}.dp-day:hover:not([data-disabled="true"]):not([data-selected="true"]):not([data-range-start="true"]):not( [data-range-end="true"] ){background: var(--dp-hover)}.dp-grid{border-collapse: separate;border-spacing: 0 var(--dp-row-gap);table-layout: fixed}.dp-grid :where(th,td){box-sizing: border-box;inline-size: var(--dp-day-size);block-size: var(--dp-day-size);padding: 0;text-align: center}.dp-grid thead th{block-size: 1.5rem;color: var(--dp-muted);font-size: 0.72rem;font-weight: 500}.dp-day{position: relative;border: 1px solid transparent;border-radius: var(--dp-day-radius);cursor: pointer;outline: none;vertical-align: middle;font-size: 0.875rem}.dp-day:is([data-selected="true"],[data-range-start="true"],[data-range-end="true"]):focus-visible{outline-color: var(--dp-accent-fg)}.dp-day[data-outside-month="true"]{color: var(--dp-muted)}.dp-day[data-selected="true"]{background: var(--dp-accent);color: var(--dp-accent-fg)}.dp-day[data-today="true"]:not([data-selected="true"],[data-range-start="true"],[data-range-end="true"]){border-color: var(--dp-accent)}.dp-day[data-disabled="true"]{cursor: not-allowed;opacity: 0.42}.dp-day[data-range-start="true"],.dp-day[data-range-end="true"]{background: var(--dp-accent);color: var(--dp-accent-fg)}.dp-day[data-in-range="true"]{border-radius: 0;background: color-mix(in srgb,var(--dp-accent) 18%,var(--dp-bg))}.dp-day[data-range-start="true"]:has(+ [data-in-range="true"],+ [data-range-end="true"]){border-start-end-radius: 0;border-end-end-radius: 0}.dp-day:is([data-in-range="true"],[data-range-start="true"]) + .dp-day[data-range-end="true"]{border-start-start-radius: 0;border-end-start-radius: 0}.dp-day[data-in-range="true"]:first-of-type{border-start-start-radius: var(--dp-day-radius);border-end-start-radius: var(--dp-day-radius)}.dp-day[data-in-range="true"]:last-of-type{border-start-end-radius: var(--dp-day-radius);border-end-end-radius: var(--dp-day-radius)}[data-range-preview] .dp-day:is([data-range-start="true"],[data-range-end="true"]){background: color-mix(in srgb,var(--dp-accent) 58%,var(--dp-bg))}[data-range-preview] .dp-day[data-in-range="true"]{background: color-mix(in srgb,var(--dp-accent) 11%,var(--dp-bg))}[data-range-drag] .dp-day:is([data-range-start="true"],[data-range-end="true"]){cursor: grab}[data-range-drag="active"],[data-range-drag="active"] .dp-day{cursor: grabbing}.dp-day-number{display: block;font-variant-numeric: tabular-nums}.dp-day[data-disabled="true"]:focus-visible{opacity: 1}.dp-day[data-disabled="true"]:focus-visible .dp-day-number{color: var(--dp-muted)}.dp-day-extra{position: absolute;inset-inline: 2px;inset-block-end: 1px;display: flex;justify-content: center;gap: 2px;min-block-size: 0.35rem;font-size: 0.55rem;line-height: 1;pointer-events: none}.dp-week-number,.dp-week-heading{inline-size: 1.6rem !important;color: var(--dp-muted);font-size: 0.65rem;font-weight: 500}date-picker{position: relative;display: inline-grid;grid-template-columns: minmax(0,1fr);align-items: stretch;max-inline-size: 100%}date-picker>input:not([type="hidden"]){min-inline-size: 0}date-picker>input:not([type="hidden"]):not([type="time"]){grid-column: 1;grid-row: 1;box-sizing: border-box;inline-size: 100%;padding-inline-end: calc(var(--dp-picker-button-size) + 0.5rem)}.dp-picker-button{display: grid;place-items: center;grid-column: 1;grid-row: 1;justify-self: end;align-self: stretch;inline-size: var(--dp-picker-button-size);min-inline-size: 0;border: 0;background: transparent;color: var(--dp-fg);font: inherit;cursor: pointer}.dp-picker-button:focus-visible{outline: var(--dp-focus-width) solid var(--dp-focus);outline-offset: -5px;border-radius: var(--dp-radius)}date-picker:has(>[data-time-start],>[data-time-end]){grid-template-columns: minmax(0,1fr) minmax(0,1fr);column-gap: var(--dp-gap)}date-picker:has(>[data-time-start]):has(>[data-time-end]){grid-template-columns: minmax(0,1fr) minmax(0,1fr) minmax(0,1fr)}date-picker>input[data-time-start]{grid-column: 2;grid-row: 1;min-inline-size: 0}date-picker>input[data-time-end]{grid-column: 3;grid-row: 1;min-inline-size: 0}date-picker[range]{row-gap: var(--dp-gap)}date-picker[range]>input[data-range-start]{grid-row: 1}date-picker[range]>input[data-range-end]{grid-row: 2}date-picker[range]>.dp-picker-button[data-endpoint="start"]{grid-row: 1}date-picker[range]>.dp-picker-button[data-endpoint="end"]{grid-row: 2}.dp-picker-panel[popover]{position: fixed;inset: auto;margin: 0;padding: 0.875rem 1rem;border: 1px solid var(--dp-border);border-radius: var(--dp-radius);background: var(--dp-bg);color: var(--dp-fg);box-shadow: 0 0.5rem 1.5rem rgb(15 23 42 / 0.12);max-block-size: var(--available-height,90svh);max-inline-size: calc(100vi - 1rem);overflow: auto}.dp-picker-panel:not(:popover-open){display: none}@media (forced-colors: active){.dp-month-select.dp-skin,[dir="rtl"] .dp-month-select.dp-skin{appearance: auto;background-image: none;padding-inline: 0.45rem}.dp-day:is([data-selected="true"],[data-range-start="true"],[data-range-end="true"]){border: 2px solid Highlight;background-color: Canvas;color: CanvasText}.dp-day[data-in-range="true"]{color: CanvasText}.dp-day[data-in-range="true"]::after{content: "";position: absolute;inset-inline: 3px;inset-block-end: 4px;block-size: 1px;background-color: Highlight}.dp-day[data-today="true"]{border-color: Highlight}.dp-day-extra{color: CanvasText;forced-color-adjust: none}}
|