@luzmo/lucero 0.0.16 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/components/NumberFormatter-DewVDY5w.cjs +18 -0
  2. package/components/NumberFormatter-DgOUVrge.js +136 -0
  3. package/components/NumberParser-Dik4a0h-.cjs +18 -0
  4. package/components/NumberParser-ci9J5EKv.js +173 -0
  5. package/components/accordion/index.cjs +1 -1
  6. package/components/accordion/index.js +2 -2
  7. package/components/action-bar/index.cjs +1 -1
  8. package/components/action-bar/index.js +2 -2
  9. package/components/action-button/index.cjs +1 -1
  10. package/components/action-button/index.js +2 -2
  11. package/components/action-group/index.js +1 -1
  12. package/components/action-menu/index.cjs +1 -1
  13. package/components/action-menu/index.js +3 -3
  14. package/components/avatar/index.js +1 -1
  15. package/components/button/index.cjs +1 -1
  16. package/components/button/index.js +3 -3
  17. package/components/button-group/index.js +1 -1
  18. package/components/calendar/calendar.d.ts +218 -0
  19. package/components/calendar/index.cjs +18 -0
  20. package/components/calendar/index.d.ts +7 -0
  21. package/components/calendar/index.js +28 -0
  22. package/components/checkbox/index.cjs +1 -1
  23. package/components/checkbox/index.js +2 -2
  24. package/components/class-map-Buyb1CLm.cjs +22 -0
  25. package/components/class-map-CJko4aXp.js +51 -0
  26. package/components/{close-button-DOA-6eL0.cjs → close-button-BQJ2wHkM.cjs} +1 -1
  27. package/components/{close-button-DU58NTKR.js → close-button-DN2cjFRq.js} +1 -1
  28. package/components/color-area/index.js +1 -1
  29. package/components/color-field/index.cjs +1 -1
  30. package/components/color-field/index.js +2 -2
  31. package/components/color-handle/index.js +1 -1
  32. package/components/color-loupe/index.js +1 -1
  33. package/components/color-menu/index.js +1 -1
  34. package/components/color-picker/index.js +1 -1
  35. package/components/color-slider/index.js +1 -1
  36. package/components/date-time-picker/date-time-picker.d.ts +269 -0
  37. package/components/date-time-picker/helpers.d.ts +10 -0
  38. package/components/date-time-picker/index.cjs +105 -0
  39. package/components/date-time-picker/index.d.ts +7 -0
  40. package/components/date-time-picker/index.js +1126 -0
  41. package/components/date-time-picker/segments/date/day-segment.d.ts +9 -0
  42. package/components/date-time-picker/segments/date/month-segment.d.ts +9 -0
  43. package/components/date-time-picker/segments/date/year-segment.d.ts +12 -0
  44. package/components/date-time-picker/segments/date-time-segments.d.ts +35 -0
  45. package/components/date-time-picker/segments/editable-segment.d.ts +21 -0
  46. package/components/date-time-picker/segments/literal-segment.d.ts +6 -0
  47. package/components/date-time-picker/segments/modifiers/clear-modifier.d.ts +5 -0
  48. package/components/date-time-picker/segments/modifiers/decrement-modifier.d.ts +5 -0
  49. package/components/date-time-picker/segments/modifiers/increment-modifier.d.ts +5 -0
  50. package/components/date-time-picker/segments/modifiers/input-modifier.d.ts +13 -0
  51. package/components/date-time-picker/segments/modifiers/segments-modifier.d.ts +18 -0
  52. package/components/date-time-picker/segments/segments-factory.d.ts +16 -0
  53. package/components/date-time-picker/segments/segments-formatter.d.ts +17 -0
  54. package/components/date-time-picker/segments/time/day-period-segment.d.ts +18 -0
  55. package/components/date-time-picker/segments/time/hour-segment.d.ts +19 -0
  56. package/components/date-time-picker/segments/time/millisecond-segment.d.ts +7 -0
  57. package/components/date-time-picker/segments/time/minute-segment.d.ts +7 -0
  58. package/components/date-time-picker/segments/time/second-segment.d.ts +7 -0
  59. package/components/date-time-picker/types.d.ts +41 -0
  60. package/components/divider/index.js +1 -1
  61. package/components/field-group/index.js +1 -1
  62. package/components/field-label/index.js +1 -1
  63. package/components/icon/index.cjs +1 -1
  64. package/components/icon/index.js +2 -2
  65. package/components/index-BziWAe4P.cjs +113 -0
  66. package/components/index-vWdA-LXe.js +1490 -0
  67. package/components/index.cjs +1 -1
  68. package/components/index.js +135 -129
  69. package/components/infield-button/index.cjs +1 -1
  70. package/components/infield-button/index.js +2 -2
  71. package/components/label/index.js +1 -1
  72. package/components/menu/index.cjs +66 -1
  73. package/components/menu/index.js +874 -10
  74. package/components/multi-language-field/index.js +1 -1
  75. package/components/number-field/index.cjs +6 -6
  76. package/components/number-field/index.js +128 -394
  77. package/components/observe-slot-presence-CmVi0zTc.js +68 -0
  78. package/components/observe-slot-presence-bc9chhsi.cjs +18 -0
  79. package/components/overlay/index.js +1 -1
  80. package/components/picker/index.cjs +1 -1
  81. package/components/picker/index.js +3 -3
  82. package/components/{picker-C9HmjRgR.js → picker-BxEG2NdV.js} +110 -138
  83. package/components/picker-DROquiIZ.cjs +123 -0
  84. package/components/picker-button/index.cjs +37 -0
  85. package/components/picker-button/index.d.ts +7 -0
  86. package/components/picker-button/index.js +87 -0
  87. package/components/picker-button/picker-button.d.ts +21 -0
  88. package/components/popover/index.js +1 -1
  89. package/components/progress-circle/index.js +1 -1
  90. package/components/radio/index.cjs +1 -1
  91. package/components/radio/index.js +2 -2
  92. package/components/search/index.cjs +1 -1
  93. package/components/search/index.js +3 -3
  94. package/components/slider/index.js +1 -1
  95. package/components/swatch/index.cjs +1 -1
  96. package/components/swatch/index.js +2 -2
  97. package/components/switch/index.cjs +1 -1
  98. package/components/switch/index.js +2 -2
  99. package/components/tags/index.cjs +1 -1
  100. package/components/tags/index.js +2 -2
  101. package/components/text-field/index.cjs +1 -1
  102. package/components/text-field/index.js +3 -3
  103. package/components/text-field-BTnBJoP9.js +314 -0
  104. package/components/text-field-mxJCYues.cjs +85 -0
  105. package/components/text-field.module-ColtFhf_.js +21 -0
  106. package/components/text-field.module-p_VF2tC_.cjs +18 -0
  107. package/components/toast/index.cjs +1 -1
  108. package/components/toast/index.js +3 -3
  109. package/components/tooltip/index.js +1 -1
  110. package/components/unit-input/index.cjs +1 -1
  111. package/components/unit-input/index.js +2 -2
  112. package/custom-elements.json +1 -1
  113. package/index.d.ts +3 -0
  114. package/package.json +16 -1
  115. package/components/index-4SZZSkew.cjs +0 -83
  116. package/components/index-AM-58E5r.js +0 -936
  117. package/components/picker-B05XA8I1.cjs +0 -127
  118. package/components/text-field-5_ev9way.cjs +0 -85
  119. package/components/text-field-CvKSS59x.js +0 -313
@@ -0,0 +1,1126 @@
1
+ /*! * Lucero - The design system for Luzmo.
2
+ *
3
+ * Copyright © 2025 Luzmo
4
+ * All rights reserved.
5
+ * Lucero (“Luzmo Design System”) must be used according to the Luzmo Terms of Service.
6
+ * This license allows users with a current active Luzmo account to use Lucero.
7
+ * This license terminates automatically if a user no longer has an active Luzmo account.
8
+ * Please view the Luzmo Terms of Service at: https://www.luzmo.com/information-pages/terms-of-use.
9
+ *
10
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
11
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
12
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
13
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
14
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
15
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
16
+ * SOFTWARE.
17
+ * */
18
+ import { $ as ae, a as F, b as H, c as j, d as G, e as E, f as re, g as S, h as A, i as D, j as C, k as oe, l as ne, m as N } from "../index-vWdA-LXe.js";
19
+ import { $ as se } from "../NumberParser-ci9J5EKv.js";
20
+ import { r as Z, x as _, E as U, n as b } from "../base-CawdqE7p.js";
21
+ import { r as M } from "../state-CYxk12SV.js";
22
+ import { e as W } from "../query-D_KR_GUc.js";
23
+ import { e as le } from "../class-map-CJko4aXp.js";
24
+ import { o as $ } from "../if-defined-BSAr_4u4.js";
25
+ import { o as ce } from "../style-map-Ct2LiEds.js";
26
+ import { n as Y } from "../when-CDK1Tt5Y.js";
27
+ import { F as de } from "../focusable-cj2QhwDT.js";
28
+ import { S as ue, E as me } from "../sized-mixin-BxMraZLS.js";
29
+ import { luzmoAlert as he, luzmoCalendar as pe } from "@luzmo/icons";
30
+ import "../icon/index.js";
31
+ import "../overlay/index.js";
32
+ import "../picker-button/index.js";
33
+ import "../popover/index.js";
34
+ import { M as fe } from "../manage-help-text-Cozl9Sgn.js";
35
+ import { $ as K } from "../NumberFormatter-DgOUVrge.js";
36
+ import { t as ve } from "../text-field.module-ColtFhf_.js";
37
+ const ie = () => {
38
+ if (typeof document < "u" && !document.querySelector("style[data-luzmo-vars]")) {
39
+ const n = document.createElement("style");
40
+ n.setAttribute("data-luzmo-vars", ""), n.textContent = 'html{--luzmo-animation-duration: 0.15s;--luzmo-border-color: rgba(var(--luzmo-border-color-rgb), 0.1);--luzmo-border-color-hover: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-down: rgba(var(--luzmo-border-color-rgb), 0.3);--luzmo-border-color-focus: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-rgb: 0, 0, 0;--luzmo-border-color-full: rgb(180, 180, 180);--luzmo-border-color-full-hover: rgb(140, 140, 140);--luzmo-border-color-full-down: rgb(110, 110, 110);--luzmo-border-color-full-focus: rgb(140, 140, 140);--luzmo-border-color-disabled: #dddddd;--luzmo-border-radius: 6px;--luzmo-border-radius-s: 4px;--luzmo-border-radius-l: 8px;--luzmo-border-radius-xl: 12px;--luzmo-border-radius-full: 999rem;--luzmo-background-color: #ffffff;--luzmo-background-color-rgb: 255, 255, 255;--luzmo-background-color-disabled: #eeeeee;--luzmo-background-color-hover: #f0f0fc;--luzmo-background-color-down: #f1f1ff;--luzmo-background-color-focus: #f0f0fc;--luzmo-background-color-highlight: rgb(240, 240, 240);--luzmo-background-color-highlight-disabled: rgb(245, 245, 245);--luzmo-background-color-highlight-hover: rgb(225, 225, 225);--luzmo-background-color-highlight-down: rgb(215, 215, 215);--luzmo-background-color-highlight-focus: rgb(225, 225, 225);--luzmo-border-width: 1px;--luzmo-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;--luzmo-font-size-xs: 10px;--luzmo-font-size-s: 12px;--luzmo-font-size-m: 14px;--luzmo-font-size: 14px;--luzmo-font-size-l: 16px;--luzmo-font-size-xl: 18px;--luzmo-font-size-xxl: 20px;--luzmo-font-style: normal;--luzmo-line-height: normal;--luzmo-font-weight: 400;--luzmo-font-weight-semibold: 500;--luzmo-font-weight-bold: 600;--luzmo-font-color: #333;--luzmo-font-color-hard: #000;--luzmo-font-color-disabled: var(--luzmo-disabled-color);--luzmo-font-color-extra-dimmed: #888;--luzmo-font-color-hover: #333;--luzmo-font-color-down: #111;--luzmo-font-color-focus: #333;--luzmo-primary: #4434ff;--luzmo-primary-hover: #4234e4;--luzmo-primary-down: #392cc7;--luzmo-primary-focus: #4234e4;--luzmo-primary-inverse-color: #ffffff;--luzmo-primary-rgb: 68, 52, 255;--luzmo-secondary: #ff00ff;--luzmo-secondary-hover: #e309e3;--luzmo-secondary-down: #c711c7;--luzmo-secondary-focus: #e309e3;--luzmo-secondary-inverse-color: #ffffff;--luzmo-secondary-rgb: 255, 0, 255;--luzmo-negative-color: #ca221c;--luzmo-negative-color-hover: #b3241f;--luzmo-negative-color-down: #9f231f;--luzmo-negative-color-focus: #b3241f;--luzmo-negative-color-rgb: 202, 34, 28;--luzmo-positive-color: rgb(20, 150, 101);--luzmo-positive-color-hover: rgb(17, 128, 86);--luzmo-positive-color-down: rgb(16, 105, 71);--luzmo-positive-color-focus: rgb(17, 128, 86);--luzmo-positive-color-rgb: 20, 150, 101;--luzmo-selected-color: rgb(110, 110, 110);--luzmo-selected-color-hover: rgb(70, 70, 70);--luzmo-selected-color-down: rgb(40, 40, 40);--luzmo-selected-color-focus: rgb(70, 70, 70);--luzmo-selected-color-hard: #1e1e1e;--luzmo-selected-color-hard-hover: rgb(0, 0, 0);--luzmo-selected-color-hard-down: rgb(0, 0, 0);--luzmo-selected-color-hard-focus: rgb(0, 0, 0);--luzmo-informative-color: #1a77e9;--luzmo-informative-color-rgb: 26, 119, 233;--luzmo-disabled-color: #aaaaaa;--luzmo-spacing-1: 2px;--luzmo-spacing-2: 4px;--luzmo-spacing-3: 8px;--luzmo-spacing-4: 12px;--luzmo-spacing-5: 16px;--luzmo-indicator-gap: 2px;--luzmo-indicator-width: 1px;--luzmo-indicator-color: var(--luzmo-primary);--luzmo-component-height-xxs: 20px;--luzmo-component-height-xs: 24px;--luzmo-component-height-s: 28px;--luzmo-component-height: 32px;--luzmo-component-height-l: 40px;--luzmo-component-height-xl: 48px;--luzmo-component-height-xxl: 64px;--luzmo-icon-size-xxs: 12px;--luzmo-icon-size-xs: 14px;--luzmo-icon-size-s: 16px;--luzmo-icon-size-m: 18px;--luzmo-icon-size-l: 20px;--luzmo-icon-size-xl: 22px;--luzmo-icon-size-xxl: 32px}', document.head.appendChild(n);
41
+ }
42
+ };
43
+ ie();
44
+ const o = {
45
+ Year: "year",
46
+ Month: "month",
47
+ Day: "day",
48
+ Hour: "hour",
49
+ Minute: "minute",
50
+ Second: "second",
51
+ Millisecond: "fractionalSecond",
52
+ DayPeriod: "dayPeriod",
53
+ Literal: "literal"
54
+ }, ge = {
55
+ [o.Year]: "––––",
56
+ [o.Month]: "––",
57
+ [o.Day]: "––",
58
+ [o.Hour]: "––",
59
+ [o.Minute]: "––",
60
+ [o.Second]: "––",
61
+ [o.Millisecond]: "–––",
62
+ [o.DayPeriod]: "––"
63
+ }, p = {
64
+ Day: "day",
65
+ Hour: "hour",
66
+ Minute: "minute",
67
+ Second: "second",
68
+ Millisecond: "millisecond"
69
+ }, q = 0, V = 12, X = 2e3, ze = 31;
70
+ function k(n) {
71
+ return typeof n == "number";
72
+ }
73
+ function P(n) {
74
+ return n instanceof ae;
75
+ }
76
+ function B(n) {
77
+ return n instanceof F;
78
+ }
79
+ function L(n) {
80
+ return n instanceof H;
81
+ }
82
+ function J(n, e) {
83
+ return n = n % V + e;
84
+ }
85
+ function Q(n) {
86
+ return n >= V ? V : q;
87
+ }
88
+ function R(n, e) {
89
+ return n.length === e.length && n.every((t, i) => t === e[i]);
90
+ }
91
+ function ee(n) {
92
+ return L(n) ? new Date(n.year, n.month - 1, n.day) : new Date(
93
+ n.year,
94
+ n.month - 1,
95
+ n.day,
96
+ n.hour,
97
+ n.minute,
98
+ n.second,
99
+ n.millisecond
100
+ );
101
+ }
102
+ class y {
103
+ constructor(e, t, i) {
104
+ this.type = e, this.formatted = t, this.label = i, this.placeholder = ge[e];
105
+ }
106
+ increment(e) {
107
+ this.value === void 0 ? this.value = this.minValue : (this.value = this.value + 1, this.value > this.maxValue && (this.value = this.minValue));
108
+ }
109
+ decrement(e) {
110
+ this.value === void 0 ? this.value = this.maxValue : (this.value = this.value - 1, this.value < this.minValue && (this.value = this.maxValue));
111
+ }
112
+ setValueFromDate(e) {
113
+ this.type === "fractionalSecond" ? this.value = e.millisecond : this.type !== o.DayPeriod && (this.value = e[this.type]);
114
+ }
115
+ clear() {
116
+ this.value = void 0;
117
+ }
118
+ handleInput(e, t) {
119
+ const i = t.parse(e);
120
+ if (Number.isNaN(i)) return;
121
+ const a = t.parse(
122
+ `${this.value ?? ""}${i}`
123
+ );
124
+ if (this.isInputValueCompliant(a)) {
125
+ this.value = a;
126
+ return;
127
+ }
128
+ this.isInputValueCompliant(i) && (this.value = i);
129
+ }
130
+ isInputValueCompliant(e) {
131
+ const { minValue: t, maxValue: i } = this.inputValidationLimits;
132
+ return e >= t && e <= i;
133
+ }
134
+ get inputValidationLimits() {
135
+ return {
136
+ minValue: this.minValue,
137
+ maxValue: this.maxValue
138
+ };
139
+ }
140
+ updateValueToLimits() {
141
+ this.value !== void 0 && (this.value < this.minValue && (this.value = this.minValue), this.value > this.maxValue && (this.value = this.maxValue));
142
+ }
143
+ }
144
+ class te extends y {
145
+ constructor(e, t) {
146
+ super(o.Year, e, t), this.minValue = 1, this.maxValue = 9999;
147
+ }
148
+ setLimits(e) {
149
+ this.minValue = 1, this.maxValue = e.calendar.getYearsInEra(e), this.updateValueToLimits();
150
+ }
151
+ increment(e) {
152
+ this.value === void 0 ? this.value = e.year : super.increment();
153
+ }
154
+ decrement(e) {
155
+ this.value === void 0 ? this.value = e.year : super.decrement();
156
+ }
157
+ clear() {
158
+ if (this.value === void 0) return;
159
+ const e = Math.floor(this.value / 10);
160
+ this.value = e > 0 ? e : void 0;
161
+ }
162
+ }
163
+ class I {
164
+ constructor(e) {
165
+ this.segments = e;
166
+ }
167
+ get all() {
168
+ return this.segments;
169
+ }
170
+ get editableValues() {
171
+ return this.all.filter((e) => e instanceof y).map((e) => e.value);
172
+ }
173
+ get year() {
174
+ const e = this.getByType(o.Year);
175
+ if (e && e instanceof te) return e;
176
+ }
177
+ get month() {
178
+ const e = this.getByType(o.Month);
179
+ if (e) return e;
180
+ }
181
+ get day() {
182
+ const e = this.getByType(o.Day);
183
+ if (e) return e;
184
+ }
185
+ get hour() {
186
+ const e = this.getByType(o.Hour);
187
+ if (e) return e;
188
+ }
189
+ get minute() {
190
+ const e = this.getByType(o.Minute);
191
+ if (e) return e;
192
+ }
193
+ get second() {
194
+ const e = this.getByType(o.Second);
195
+ if (e) return e;
196
+ }
197
+ get millisecond() {
198
+ const e = this.getByType(o.Millisecond);
199
+ if (e) return e;
200
+ }
201
+ get dayPeriod() {
202
+ const e = this.getByType(o.DayPeriod);
203
+ if (e) return e;
204
+ }
205
+ getByType(e) {
206
+ return this.segments.find(
207
+ (t) => t.type === e
208
+ );
209
+ }
210
+ /**
211
+ * Returns a `CalendarDate` object with the year, month and day values of the segments if they are all defined. The time values
212
+ * are checked and included based on the precision provided, returning a `CalendarDateTime` instead.
213
+ *
214
+ * @param precision - The precision to use when creating the date object
215
+ */
216
+ getFormattedDate(e = p.Day) {
217
+ var c, f, v, g, h, z, x;
218
+ const t = (c = this.year) == null ? void 0 : c.value, i = (f = this.month) == null ? void 0 : f.value, a = (v = this.day) == null ? void 0 : v.value;
219
+ if (!k(t) || !k(i) || !k(a)) return;
220
+ if (e === p.Day) return new H(t, i, a);
221
+ let r = (g = this.hour) == null ? void 0 : g.value;
222
+ if (!k(r)) return;
223
+ if (this.dayPeriod) {
224
+ const w = this.dayPeriod.value;
225
+ if (!k(w)) return;
226
+ r = J(r, w);
227
+ }
228
+ if (e === p.Hour)
229
+ return new F(t, i, a, r);
230
+ const s = (h = this.minute) == null ? void 0 : h.value;
231
+ if (!k(s)) return;
232
+ if (e === p.Minute)
233
+ return new F(t, i, a, r, s);
234
+ const l = (z = this.second) == null ? void 0 : z.value;
235
+ if (!k(l)) return;
236
+ if (e === p.Second)
237
+ return new F(t, i, a, r, s, l);
238
+ const d = (x = this.millisecond) == null ? void 0 : x.value;
239
+ if (k(d))
240
+ return new F(
241
+ t,
242
+ i,
243
+ a,
244
+ r,
245
+ s,
246
+ l,
247
+ d
248
+ );
249
+ }
250
+ }
251
+ class be {
252
+ constructor(e, t) {
253
+ this.dateFormatter = e, this.currentDate = t, this.numberFormatter = new K(
254
+ this.dateFormatter.resolvedOptions().locale,
255
+ { useGrouping: !1 }
256
+ );
257
+ }
258
+ /**
259
+ * Formats all the `DateTimeSegments` to have the formatted property based on the value property, according to the date formatter.
260
+ * @param segments - `DateTimeSegments` to format
261
+ * @returns Formatted DateTimeSegments
262
+ */
263
+ format(e) {
264
+ if (!e.year || !e.month || !e.day) return e;
265
+ const t = this.getDateInfoWithDefaults(e);
266
+ return t && (this.setSegmentsFormatted(e, t), this.padSegmentsFormatted(e)), e;
267
+ }
268
+ setSegmentsFormatted(e, t) {
269
+ var h;
270
+ e = new I(e.all);
271
+ const { year: i, month: a, day: r, hour: s, minute: l, second: d, millisecond: c } = t, f = new Date(
272
+ i,
273
+ a - 1,
274
+ r,
275
+ s,
276
+ l,
277
+ d,
278
+ c
279
+ );
280
+ if (!e.year) return;
281
+ e.year.formatted = this.numberFormatter.format(i);
282
+ const v = [
283
+ o.Month,
284
+ o.Day,
285
+ o.Hour,
286
+ o.Minute,
287
+ o.Second,
288
+ o.DayPeriod
289
+ ], g = this.dateFormatter.formatToParts(f);
290
+ for (const z of v) {
291
+ const x = e[z];
292
+ if (!x) continue;
293
+ const w = (h = g.find(
294
+ (T) => T.type === z
295
+ )) == null ? void 0 : h.value;
296
+ w && (x.formatted = w);
297
+ }
298
+ }
299
+ padSegmentsFormatted(e) {
300
+ if (!e.hour) return;
301
+ const t = [
302
+ o.Month,
303
+ o.Day,
304
+ o.Hour,
305
+ o.Minute,
306
+ o.Second
307
+ ];
308
+ for (const i of t) {
309
+ const a = e[i];
310
+ a && (a.formatted = a.formatted.padStart(
311
+ 2,
312
+ this.numberFormatter.format(0)
313
+ ));
314
+ }
315
+ }
316
+ getDateInfoWithDefaults(e) {
317
+ var f, v, g, h, z;
318
+ if (!e.year || !e.month || !e.day) return;
319
+ const t = e.day.value ?? j(this.currentDate), i = e.month.value ?? G(this.currentDate), a = e.year.value ?? X, r = (f = e.dayPeriod) == null ? void 0 : f.value;
320
+ let s = (v = e.hour) == null ? void 0 : v.value;
321
+ k(s) ? k(r) && (s = J(s, r)) : s = k(r) ? r : this.currentDate.hour;
322
+ const l = ((g = e.minute) == null ? void 0 : g.value) ?? this.currentDate.minute, d = ((h = e.second) == null ? void 0 : h.value) ?? this.currentDate.second, c = ((z = e.millisecond) == null ? void 0 : z.value) ?? this.currentDate.millisecond;
323
+ return { year: a, month: i, day: t, hour: s, minute: l, second: d, millisecond: c };
324
+ }
325
+ }
326
+ class O {
327
+ constructor(e) {
328
+ const { dateFormatter: t, segments: i, currentDate: a } = e;
329
+ this.segments = new I(i.all), this.dateFormatter = t, this.currentDate = a;
330
+ }
331
+ modify(e) {
332
+ const t = this.segments.getByType(e);
333
+ if (!t) return this.segments;
334
+ this.modifySegment(t), this.updateSegmentsLimits(e);
335
+ const i = new be(
336
+ this.dateFormatter,
337
+ this.currentDate
338
+ );
339
+ return this.segments = i.format(this.segments), this.segments;
340
+ }
341
+ updateSegmentsLimits(e) {
342
+ const t = e === o.Year, i = e === o.Month, a = this.segments.year, r = this.segments.month, s = this.segments.day;
343
+ t && (r == null || r.setLimits(this.currentDate), s == null || s.setLimits(this.currentDate, r == null ? void 0 : r.value, a == null ? void 0 : a.value)), i && (s == null || s.setLimits(this.currentDate, r == null ? void 0 : r.value, a == null ? void 0 : a.value));
344
+ }
345
+ }
346
+ class ke extends O {
347
+ modifySegment(e) {
348
+ e.clear();
349
+ }
350
+ }
351
+ class xe extends O {
352
+ modifySegment(e) {
353
+ e.decrement(this.currentDate);
354
+ }
355
+ }
356
+ class ye extends O {
357
+ modifySegment(e) {
358
+ e.increment(this.currentDate);
359
+ }
360
+ }
361
+ class we extends O {
362
+ constructor(e) {
363
+ const { dateFormatter: t, segments: i, currentDate: a } = e;
364
+ super({ dateFormatter: t, segments: i, currentDate: a }), this.eventData = e.eventData, this.numberParser = e.numberParser;
365
+ }
366
+ modifySegment(e) {
367
+ this.eventData !== null && e.handleInput(this.eventData, this.numberParser);
368
+ }
369
+ }
370
+ class Se extends y {
371
+ constructor(e, t) {
372
+ super(o.Day, e, t), this.minValue = 1, this.maxValue = 31;
373
+ }
374
+ setLimits(e, t, i) {
375
+ if (!k(t)) {
376
+ this.minValue = 1, this.maxValue = ze;
377
+ return;
378
+ }
379
+ k(i) || (i = X);
380
+ const a = new H(i, t, 1);
381
+ this.maxValue = e.calendar.getDaysInMonth(a), this.minValue = j(a), this.updateValueToLimits();
382
+ }
383
+ }
384
+ class De extends y {
385
+ constructor(e, t) {
386
+ super(o.Month, e, t), this.minValue = 1, this.maxValue = 12;
387
+ }
388
+ setLimits(e) {
389
+ this.minValue = G(e), this.maxValue = e.calendar.getMonthsInYear(e), this.updateValueToLimits();
390
+ }
391
+ }
392
+ class _e {
393
+ constructor(e) {
394
+ this.formatted = e, this.type = o.Literal;
395
+ }
396
+ }
397
+ class Ve extends y {
398
+ constructor(e, t) {
399
+ super(o.DayPeriod, e, t), this.minValue = q, this.maxValue = V, this.localizedMinValue = "AM", this.localizedMaxValue = "PM";
400
+ }
401
+ toggleAmPm() {
402
+ this.value = this.value === q ? V : q;
403
+ }
404
+ increment() {
405
+ this.value === void 0 ? this.value = this.minValue : this.toggleAmPm();
406
+ }
407
+ decrement() {
408
+ this.value === void 0 ? this.value = this.maxValue : this.toggleAmPm();
409
+ }
410
+ setValueFromDate(e) {
411
+ this.value = Q(e.hour);
412
+ }
413
+ handleInput(e) {
414
+ const t = e.toLowerCase(), i = this.localizedMinValue.toLowerCase().includes(t), a = this.localizedMaxValue.toLowerCase().includes(t);
415
+ i && a || (i && (this.value = q), a && (this.value = V));
416
+ }
417
+ setLocalizedLimits(e) {
418
+ const t = new Date(0, 0, 0, this.minValue, 0), i = new Date(0, 0, 0, this.maxValue, 0), [a, r] = [t, i].map(
419
+ this.getDayPeriodFromDate.bind(this, e)
420
+ );
421
+ a && (this.localizedMinValue = a), r && (this.localizedMaxValue = r);
422
+ }
423
+ getDayPeriodFromDate(e, t) {
424
+ var i;
425
+ return (i = e.formatToParts(t).find((a) => a.type === this.type)) == null ? void 0 : i.value;
426
+ }
427
+ }
428
+ class $e extends y {
429
+ constructor(e, t) {
430
+ super(o.Hour, e, t), this.minValue = 0, this.maxValue = 23;
431
+ }
432
+ setLimits(e) {
433
+ this.minValue = 0, this.maxValue = 23, e && (this.minValue = 0, this.maxValue = 11), this.updateValueToLimits();
434
+ }
435
+ setValueFromDate(e, t) {
436
+ t ? this.value = e.hour - Q(e.hour) : super.setValueFromDate(e);
437
+ }
438
+ /**
439
+ * Returns the limits used to validate a user typed-in value.
440
+ *
441
+ * Different limits are needed when the user is typing in the hour segment and the clock is in 12-hour format due to the fact that
442
+ * the hour value of 0 should be displayed as 12. Therefore, in the 12h format, the user should be able to type in "12" but not "00",
443
+ * for the 00 time, which is represented by the value of 0 of the hour segment.
444
+ */
445
+ get inputValidationLimits() {
446
+ const e = this.maxValue === 11;
447
+ return {
448
+ minValue: e ? 1 : 0,
449
+ maxValue: e ? 12 : 23
450
+ };
451
+ }
452
+ }
453
+ class Pe extends y {
454
+ constructor(e, t) {
455
+ super(o.Millisecond, e, t), this.minValue = 0, this.maxValue = 999;
456
+ }
457
+ }
458
+ class Fe extends y {
459
+ constructor(e, t) {
460
+ super(o.Minute, e, t), this.minValue = 0, this.maxValue = 59;
461
+ }
462
+ }
463
+ class qe extends y {
464
+ constructor(e, t) {
465
+ super(o.Second, e, t), this.minValue = 0, this.maxValue = 59;
466
+ }
467
+ }
468
+ class Me {
469
+ constructor(e) {
470
+ this.dateFormatter = e;
471
+ const t = this.dateFormatter.resolvedOptions().locale;
472
+ this.numberFormatter = new K(t, {
473
+ useGrouping: !1
474
+ }), this.dateTimeFieldDisplayNames = new Intl.DisplayNames([t], {
475
+ type: "dateTimeField"
476
+ });
477
+ }
478
+ /**
479
+ * Creates the `DateTimeSegments` needed for the DateTimePicker
480
+ * @param currentDate - The date to create the segments from. This is used to set the limits and values of the segments.
481
+ * @param setValues - If true, the segments will have their values set from the currentDate. If false, the segments will have no values.
482
+ */
483
+ createSegments(e, t = !1) {
484
+ const i = ee(e), a = this.dateFormatter.formatToParts(i).map((x) => {
485
+ const w = x.type;
486
+ let T = x.value;
487
+ return w === "year" && (T = this.numberFormatter.format(e.year)), this.createSegment(w, T);
488
+ }), r = new I(a), s = r.year, l = r.month, d = r.day;
489
+ s.setLimits(e), l.setLimits(e), t && (s.setValueFromDate(e), l.setValueFromDate(e)), d.setLimits(e, l.value, s.value), t && d.setValueFromDate(e);
490
+ const c = r.hour, f = r.minute, v = r.second, g = r.millisecond, h = r.dayPeriod;
491
+ if (h && h.setLocalizedLimits(this.dateFormatter), !c) return r;
492
+ const z = !!h;
493
+ if (c.setLimits(z), t) {
494
+ if (c.setValueFromDate(e, z), z && r.dayPeriod.setValueFromDate(e), !f || (f.setValueFromDate(e), !v) || (v.setValueFromDate(e), !g)) return r;
495
+ g.setValueFromDate(e);
496
+ }
497
+ return r;
498
+ }
499
+ createSegment(e, t) {
500
+ if (e === o.Literal) return new _e(t);
501
+ const i = this.displayNameOfType(e);
502
+ switch (e) {
503
+ case o.Year:
504
+ return new te(t, i);
505
+ case o.Month:
506
+ return new De(t, i);
507
+ case o.Day:
508
+ return new Se(t, i);
509
+ case o.Hour:
510
+ return new $e(t, i);
511
+ case o.Minute:
512
+ return new Fe(t, i);
513
+ case o.Second:
514
+ return new qe(t, i);
515
+ case o.Millisecond:
516
+ return new Pe(t, i);
517
+ case o.DayPeriod:
518
+ return new Ve(t, i);
519
+ }
520
+ }
521
+ displayNameOfType(e) {
522
+ const t = e === "fractionalSecond" ? "millisecond" : this.dateTimeFieldDisplayNames.of(e);
523
+ return t ? t.charAt(0).toUpperCase() + t.slice(1) : "";
524
+ }
525
+ }
526
+ const Te = '@charset "UTF-8";:host{font-family:var(--luzmo-font-family);--date-time-picker-border-radius: var( --luzmo-date-time-picker-border-radius, var(--luzmo-border-radius) );--date-time-picker-border-radius-quiet: var( --luzmo-date-time-picker-border-radius-quiet, 0 );--date-time-picker-border-width: var(--luzmo-border-width);--date-time-picker-button-border-color: var( --highcontrast-datepicker-pickerbutton-border-color, var( --luzmo-date-time-picker-pickerbutton-border-color, var(--luzmo-border-color) ) );--date-time-picker-button-border-color-focus: var( --highcontrast-datepicker-pickerbutton-border-color, var( --luzmo-date-time-picker-pickerbutton-border-color-focus, var(--luzmo-primary) ) );--date-time-picker-button-border-color-invalid: var( --highcontrast-datepicker-pickerbutton-border-color, var( --luzmo-date-time-picker-pickerbutton-border-color-invalid, var(--luzmo-negative-color) ) );--date-time-picker-button-width: calc( var(--date-time-picker-edge-to-disclosure-icon) * 2 + var(--date-time-picker-icon-size) );--date-time-picker-quiet-button-offset: var( --luzmo-date-time-picker-quiet-button-offset, var(--date-time-picker-text-to-visual) );--date-time-picker-icon-to-text: var(--date-time-picker-edge-to-text);--date-time-picker-button-width-quiet: calc( var(--date-time-picker-button-width) - var( --date-time-picker-quiet-button-offset ) );--date-time-picker-focus-ring-gap: var( --luzmo-date-time-picker-focus-ring-gap, var(--luzmo-indicator-gap) );--date-time-picker-focus-thickness: var( --luzmo-date-time-picker-focus-thickness, var(--luzmo-indicator-width) );--date-time-picker-focus-animation: var( --luzmo-date-time-picker-focus-animation, var(--luzmo-animation-duration) );--date-time-picker-focus-ring-width: var( --luzmo-date-time-picker-focus-ring-width, var(--luzmo-border-width) );--date-time-picker-focus-ring-color: var( --highcontrast-datepicker-focus-ring-color, var(--luzmo-date-time-picker-focus-ring-color, var(--luzmo-indicator-color)) );--date-time-picker-focus-line-gap: var( --luzmo-date-time-picker-focus-line-gap, var(--luzmo-spacing-2) );--date-time-picker-invalid-quiet-color: var( --luzmo-date-time-picker-invalid-quiet-color, var(--luzmo-negative-color) );--date-time-picker-quiet-border-color-hover: var( --luzmo-date-time-picker-quiet-border-color-hover, var(--luzmo-border-color-hover) );--date-time-picker-border-color-disabled: var( --luzmo-date-time-picker-border-color-disabled, var(--luzmo-border-color-disabled) );--date-time-picker-dash-font-size: var( --luzmo-date-time-picker-dash-font-size, var(--date-time-picker-dash-font-size) );--date-time-picker-dash-color: var( --highcontrast-datepicker-dash-color, var(--luzmo-date-time-picker-dash-color, var(--luzmo-font-color)) );--date-time-picker-range-dash-padding-top: var( --luzmo-date-time-picker-range-dash-padding-top, 0 );--date-time-picker-range-dash-margin-inline-start: var( --luzmo-date-time-picker-range-dash-margin-left, calc(var(--date-time-picker-dash-font-size) * -.5) );--date-time-picker-range-input-width-first: var( --luzmo-date-time-picker-range-input-width-first, calc( var(--date-time-picker-initial-width) - var( --date-time-picker-generic-padding ) * 2 ) );--date-time-picker-input-width-base: calc( var(--date-time-picker-range-input-width-first) + var(--date-time-picker-icon-size) );--date-time-picker-input-width: var( --luzmo-date-time-picker-input-width, calc( var(--date-time-picker-input-width-base) + var(--date-time-picker-initial-height) ) );--date-time-picker-range-input-width-quiet-first: var( --luzmo-date-time-picker-range-input-width-quiet-first, calc( var(--date-time-picker-width-quiet-first) + var(--date-time-picker-width-quiet-second) ) );--date-time-picker-input-width-quiet: var( --luzmo-date-time-picker-input-width-quiet, calc( var(--date-time-picker-range-input-width-quiet-first) + var(--date-time-picker-icon-size) + var(--date-time-picker-initial-height) ) );--date-time-picker-datetime-input-width-first: var( --luzmo-date-time-picker-datetime-input-width-first, calc( var(--date-time-picker-input-width-base) + var(--date-time-picker-datetime-width-first) ) );--date-time-picker-datetime-input-width: var( --luzmo-date-time-picker-datetime-input-width, calc( var(--date-time-picker-datetime-input-width-first) + var(--date-time-picker-icon-size) + var(--date-time-picker-initial-height) ) );--date-time-picker-datetime-quiet-input-width-first: var( --luzmo-date-time-picker-datetime-quiet-input-width-first, calc( var(--date-time-picker-input-width-base) + var(--date-time-picker-input-datetime-width) ) );--date-time-picker-datetime-quiet-input-width: var( --luzmo-date-time-picker-datetime-quiet-input-width, calc( var(--date-time-picker-datetime-quiet-input-width-first) + var(--date-time-picker-icon-size) + var(--date-time-picker-initial-height) ) );--date-time-picker-padding-inline-end: var( --luzmo-date-time-picker-padding-inline, calc( var(--date-time-picker-button-width) + var(--date-time-picker-edge-to-text) - var( --date-time-picker-border-width ) * 2 ) );--date-time-picker-padding-inline-end-quiet: var( --luzmo-date-time-picker-padding-inline-quiet, calc( var(--date-time-picker-button-width) + var(--date-time-picker-edge-to-text) - var( --date-time-picker-quiet-button-offset ) ) );--date-time-picker-padding-inline-end-invalid-quiet: var( --luzmo-date-time-picker-padding-inline-end-invalid-quiet, calc( var(--date-time-picker-button-width-quiet) + var(--date-time-picker-icon-size) + var(--date-time-picker-icon-to-text) ) );min-inline-size:var(--luzmo-date-time-picker-min-width, var(--date-time-picker-min-width));border-radius:var(--date-time-picker-border-radius);flex-flow:row;display:inline-flex;position:relative}:host([disabled]){--luzmo-date-time-picker-dash-color: var( --luzmo-date-time-picker-dash-color-disabled, var(--disabled-content-color) );--luzmo-text-field-border-color-disabled: transparent}:host([invalid]),:host([invalid]) #text-field .icon{--luzmo-text-field-icon-spacing-inline-end-invalid: calc( var(--date-time-picker-button-width) + var(--date-time-picker-invalid-icon-to-button) );--luzmo-text-field-icon-spacing-inline-end-quiet-invalid: calc( var(--date-time-picker-button-width-quiet) + var(--date-time-picker-invalid-icon-to-button-quiet) )}:host(:not([quiet])){inline-size:var(--luzmo-date-time-picker-width, var(--date-time-picker-width))}:host([quiet]){inline-size:var(--luzmo-date-time-picker-width-quiet, var(--date-time-picker-width-quiet, var(--date-time-picker-width)))}:host(:not([quiet],[disabled])){--luzmo-picker-button-border-color: var( --date-time-picker-button-border-color )}:host([focused]),:host([focused]:not([quiet],[disabled])){--luzmo-picker-button-border-color: var( --date-time-picker-button-border-color-focus )}:host([invalid]:not([quiet],[disabled])){--luzmo-picker-button-border-color: var( --date-time-picker-button-border-color-invalid )}.input{inline-size:100%;flex:1;padding-inline-end:var(--date-time-picker-padding-inline-end);border-color:var(--luzmo-date-time-picker-border-color, var(--datepicker-border-color))}:host .input:read-only{border-color:var(--luzmo-date-time-picker-border-color, var(--datepicker-border-color))}.input.luzmo-DatePicker-startField{border-inline-end:0;border-start-end-radius:0;border-end-end-radius:0;padding-inline-end:var(--luzmo-date-time-picker-generic-padding, var(--date-time-picker-generic-padding))}.input.luzmo-DatePicker-endField{border-inline-start:0;border-start-start-radius:0;border-end-start-radius:0;padding-inline-start:var(--luzmo-date-time-picker-generic-padding, var(--date-time-picker-generic-padding))}luzmo-picker-button{position:absolute;inset-inline-end:0}.luzmo-DatePicker-rangeDash{color:var(--date-time-picker-dash-color);line-height:var(--luzmo-date-time-picker-dash-line-height, var(--date-time-picker-dash-line-height));flex:initial;inline-size:0;z-index:1;padding-block-start:var(--date-time-picker-range-dash-padding-top)}.luzmo-DatePicker-rangeDash:before{content:"–";margin-block:0;margin-inline:var(--date-time-picker-range-dash-margin-inline-start);text-align:center;vertical-align:middle;inline-size:var(--date-time-picker-dash-font-size);display:inline-block;overflow:hidden}:host([quiet]){--luzmo-date-time-picker-border-radius: var( --date-time-picker-border-radius-quiet );--luzmo-date-time-picker-padding-inline: var( --date-time-picker-padding-inline-end-quiet );--luzmo-picker-button-border-color-disabled: var( --date-time-picker-border-color-disabled );--luzmo-picker-button-background-color-hover-disabled: var( --date-time-picker-border-color-disabled )}:host([quiet][disabled]){--luzmo-text-field-border-color-disabled: var( --date-time-picker-border-color-disabled )}:host([quiet][invalid]) .input:not(.luzmo-DatePicker-startField){padding-inline-end:var(--date-time-picker-padding-inline-end-invalid-quiet)}@media (hover: hover){:host(:hover):not([focused],[disabled],[invalid]){--luzmo-picker-button-border-color: var( --date-time-picker-quiet-border-color-hover )}}:host([quiet][invalid]){--luzmo-picker-button-border-color: var( --date-time-picker-invalid-quiet-color )}:host([quiet]) luzmo-picker-button{inline-size:auto;inset-inline-end:calc(var(--date-time-picker-quiet-button-offset) * -1)}:host([quiet]) luzmo-picker-button:not(.is-open){--luzmo-picker-button-border-color-disabled: transparent}:host([quiet]) luzmo-picker-button:not(:disabled,.is-open){--luzmo-picker-button-background-color: transparent}.luzmo-DatePicker--range{--luzmo-date-time-picker-border-radius: var(--date-time-picker-border-radius)}.luzmo-DatePicker--range:after{pointer-events:none;content:"";margin:calc(var(--date-time-picker-focus-ring-gap) * -1);border-radius:calc(var(--date-time-picker-border-radius) + var(--date-time-picker-focus-ring-gap));transition:box-shadow var(--date-time-picker-focus-animation) ease-in-out,border-color var(--date-time-picker-focus-animation) ease-in-out;border-color:#0000;position:absolute;top:0;right:0;bottom:0;left:0}:host([focused]) .luzmo-DatePicker--range:not(.luzmo-DatePicker--quiet):after{box-shadow:0 0 0 var(--date-time-picker-focus-ring-width) var(--date-time-picker-focus-ring-color)}:host([focused]) .luzmo-DatePicker--range:not(.luzmo-DatePicker--quiet) #text-field:after{display:none}:host([quiet]) .luzmo-DatePicker--range{--luzmo-date-time-picker-border-radius: var( --date-time-picker-border-radius-quiet )}:host([quiet][focused]) .luzmo-DatePicker--range:after{box-shadow:none;border-block-end:var(--date-time-picker-focus-thickness) solid var(--date-time-picker-focus-ring-color);border-radius:0;margin:0;inset-block-end:calc(var(--date-time-picker-focus-line-gap) * -1)}:host([quiet]) .luzmo-DatePicker--range #text-field{min-inline-size:0;inline-size:var(--date-time-picker-input-width-quiet)}:host([quiet]) .luzmo-DatePicker--range #text-field:first-of-type{inline-size:var(--date-time-picker-range-input-width-quiet-first)}.luzmo-DatePicker--range.luzmo-DatePicker--datetimeRange #text-field{inline-size:var(--date-time-picker-datetime-input-width);min-inline-size:0}.luzmo-DatePicker--range.luzmo-DatePicker--datetimeRange #text-field:first-of-type{inline-size:var(--date-time-picker-datetime-input-width-first)}:host([quiet]) .luzmo-DatePicker--range.luzmo-DatePicker--datetimeRange #text-field{inline-size:var(--date-time-picker-datetime-quiet-input-width)}:host([quiet]) .luzmo-DatePicker--range.luzmo-DatePicker--datetimeRange #text-field:first-of-type{inline-size:var(--date-time-picker-datetime-quiet-input-width-first)}.luzmo-DatePicker--range #text-field{flex:initial;min-inline-size:0;inline-size:var(--date-time-picker-input-width)}.luzmo-DatePicker--range #text-field:first-of-type{inline-size:var(--date-time-picker-range-input-width-first)}@media (forced-colors: active){:host{--highcontrast-datepicker-dash-color: CanvasText;--highcontrast-datepicker-focus-ring-color: Highlight;--highcontrast-datepicker-pickerbutton-border-color: Highlight}:host([disabled]){--highcontrast-datepicker-dash-color: GrayText}:host([quiet][invalid]){--highcontrast-datepicker-pickerbutton-border-color: Highlight}}:host{--date-time-picker-width: auto;--date-time-picker-initial-height: var(--system-date-picker-initial-height);--date-time-picker-font-color-default: var(--luzmo-font-color);--datepicker-border-color: var(--luzmo-border-color);--date-time-picker-button-indicator-color: var(--luzmo-indicator-color);--text-field-focus-indicator-color: var(--luzmo-background-color-highlight);--date-time-picker-initial-width: 120px;--date-time-picker-min-width: 160px;--date-time-picker-calendar-padding: var(--luzmo-spacing-4);--date-time-picker-icon-size: 18px;--date-time-picker-dash-font-size: var(--luzmo-font-size);--date-time-picker-text-to-visual: var(--luzmo-spacing-3);--date-time-picker-edge-to-disclosure-icon: var(--luzmo-spacing-3);--date-time-picker-edge-to-text: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--date-time-picker-icon-to-text: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--date-time-picker-invalid-icon-to-button: var(--luzmo-spacing-3);--date-time-picker-generic-padding: var(--luzmo-spacing-4)}:host([size=s]){--date-time-picker-min-width: 140px;--date-time-picker-calendar-padding: var(--luzmo-spacing-3);--date-time-picker-icon-size: 16px;--date-time-picker-dash-font-size: var(--luzmo-font-size-s);--date-time-picker-text-to-visual: calc( var(--luzmo-spacing-2) + var(--luzmo-spacing-1) );--date-time-picker-edge-to-disclosure-icon: calc( var(--luzmo-spacing-2) + var(--luzmo-spacing-1) );--date-time-picker-edge-to-text: var(--luzmo-spacing-3);--date-time-picker-invalid-icon-to-button: calc( var(--luzmo-spacing-2) + var(--luzmo-spacing-1) );--date-time-picker-icon-to-text: var(--luzmo-spacing-3)}:host([invalid][size=s]){--text-field-icon-spacing-block-invalid: calc( var(--luzmo-spacing-2) + var(--luzmo-spacing-1) )}:host([size=m]){--date-time-picker-min-width: 160px;--date-time-picker-calendar-padding: var(--luzmo-spacing-4);--date-time-picker-icon-size: 18px;--date-time-picker-dash-font-size: var(--luzmo-font-size-m);--date-time-picker-text-to-visual: var(--luzmo-spacing-3);--date-time-picker-edge-to-disclosure-icon: var(--luzmo-spacing-3);--date-time-picker-edge-to-text: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--date-time-picker-invalid-icon-to-button: var(--luzmo-spacing-3);--date-time-picker-icon-to-text: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) )}:host([size=l]){--date-time-picker-min-width: 180px;--date-time-picker-calendar-padding: var(--luzmo-spacing-5);--date-time-picker-icon-size: 20px;--date-time-picker-dash-font-size: var(--luzmo-font-size-l);--date-time-picker-text-to-visual: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--date-time-picker-edge-to-disclosure-icon: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--date-time-picker-edge-to-text: var(--luzmo-spacing-4);--date-time-picker-invalid-icon-to-button: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--date-time-picker-icon-to-text: var(--luzmo-spacing-4)}:host([size=xl]){--date-time-picker-min-width: 200px;--date-time-picker-calendar-padding: calc( var(--luzmo-spacing-5) + var(--luzmo-spacing-1) );--date-time-picker-icon-size: 22px;--date-time-picker-dash-font-size: var(--luzmo-font-size-xl);--date-time-picker-text-to-visual: var(--luzmo-spacing-4);--date-time-picker-edge-to-disclosure-icon: var(--luzmo-spacing-4);--date-time-picker-edge-to-text: calc( var(--luzmo-spacing-4) + var(--luzmo-spacing-1) );--date-time-picker-invalid-icon-to-button: var(--luzmo-spacing-4);--date-time-picker-icon-to-text: calc( var(--luzmo-spacing-4) + var(--luzmo-spacing-1) )}:host{--status-icon-size: var( --luzmo-text-field-icon-size-invalid, var(--text-field-icon-size-invalid) );--picker-button-size: var( --luzmo-text-field-height, var(--text-field-height) );--input-spacing: var( --luzmo-text-field-spacing-inline, var(--text-field-spacing-inline) );--input-border-width: var( --luzmo-text-field-border-width, var(--luzmo-border-width) );--text-to-icon: var( --luzmo-text-field-icon-spacing-inline-start-invalid, var(--text-field-icon-spacing-inline-start-invalid) );--date-time-picker-input-width: var(--date-time-picker-width);flex-wrap:wrap}:host #text-field{display:inline-block}:host #text-field .input,:host([quiet]) #text-field .input,:host([valid]) #text-field .input,:host([invalid]) #text-field .input{inline-size:100%}:host #text-field .input,:host([quiet]) #text-field .input{padding-inline-end:calc(var(--picker-button-size) + var(--input-spacing) - var(--input-border-width))}:host([valid]) #text-field .input,:host([invalid]) #text-field .input{inline-size:100%;padding-inline-end:calc(var(--status-icon-size) + var(--picker-button-size) + var(--input-spacing) - var(--input-border-width) + var(--text-to-icon))}@media (hover: hover){:host([invalid]) #text-field:hover .input,:host([focused][invalid]) .input:hover,:host([focused][invalid]) #text-field:hover .input{border-color:var(--highcontrast-text-field-border-color-invalid-default, var(--luzmo-text-field-border-color-invalid-default, var(--luzmo-negative-color-hover)))}}luzmo-picker-button:focus-visible{outline:none}luzmo-popover{overflow-y:auto}luzmo-popover .popover-content{padding:var(--luzmo-date-time-picker-calendar-padding, var(--date-time-picker-calendar-padding))}.input-content{display:flex;align-items:center;height:100%;overflow:auto hidden;scrollbar-width:none;line-height:normal}.input-content::-webkit-scrollbar{display:none;width:0;height:0}.literal-segment,.editable-segment{display:inline-block;color:var(--luzmo-date-time-picker-font-color-default, var(--date-time-picker-font-color-default))}.editable-segment{padding:0 .15em;font-variant-numeric:tabular-nums;text-align:end;white-space:nowrap;caret-color:transparent;outline:none}[dir=ltr] .editable-segment{text-align:start}.literal-segment{white-space:pre;user-select:none;-webkit-user-select:none}.is-placeholder,.is-placeholder+.literal-segment{color:var(--luzmo-font-color-disabled)}.editable-segment:focus-visible{color:var(--white);background-color:var(--highcontrast-text-field-focus-indicator-color, var(--luzmo-text-field-focus-indicator-color, var(--text-field-focus-indicator-color)))}.editable-segment::selection{background-color:transparent}';
527
+ var Ce = Object.defineProperty, Le = Object.getOwnPropertyDescriptor, m = (n, e, t, i) => {
528
+ for (var a = i > 1 ? void 0 : i ? Le(e, t) : e, r = n.length - 1, s; r >= 0; r--)
529
+ (s = n[r]) && (a = (i ? s(e, t, a) : s(a)) || a);
530
+ return i && a && Ce(e, t, a), a;
531
+ };
532
+ class u extends fe(
533
+ ue(de, {
534
+ validSizes: Object.values(me)
535
+ })
536
+ ) {
537
+ constructor() {
538
+ super(), this._precision = p.Minute, this.isUserSetPrecision = !1, this.invalid = !1, this.readonly = !1, this.quiet = !1, this.placement = "bottom", this.language = "en", this.labels = {
539
+ previous: "Previous",
540
+ next: "Next",
541
+ today: "Today",
542
+ selected: "Selected",
543
+ empty: "Empty",
544
+ calendar: "Calendar"
545
+ }, this.focused = !1, this.segments = new I([]), this.isCalendarOpen = !1, this._timeZone = this.timeZone ?? E(), this.cachedLocalTime = re(this._timeZone), this.setNumberParser(), this.setDateFormatter(), this.setAriaDateFormatter(), this.addEventListener(
546
+ "focusin",
547
+ () => this.previousCommitedValue = this._value
548
+ ), this.addEventListener("focusout", () => this.commitValue());
549
+ }
550
+ /**
551
+ * The styles of the calendar
552
+ * @internal
553
+ */
554
+ static get styles() {
555
+ return [Z(Te), Z(ve)];
556
+ }
557
+ get precision() {
558
+ return this._precision;
559
+ }
560
+ set precision(e) {
561
+ this.isUserSetPrecision = !0;
562
+ const t = this._precision;
563
+ e !== t && (this._precision = e, this.requestUpdate("precision", t));
564
+ }
565
+ /**
566
+ * The language used to format the dates and weekdays.
567
+ * @internal
568
+ */
569
+ get _language() {
570
+ try {
571
+ return this.language ? new Intl.Locale(this.language).language : "en";
572
+ } catch {
573
+ return "en";
574
+ }
575
+ }
576
+ /**
577
+ * The focus element of the component
578
+ * @internal
579
+ */
580
+ get focusElement() {
581
+ return this.firstEditableSegment;
582
+ }
583
+ /**
584
+ * The current date of the component
585
+ * @internal
586
+ */
587
+ get currentDate() {
588
+ return this._value ? S(this._value, this._timeZone) : this.cachedLocalTime;
589
+ }
590
+ /**
591
+ * @return Whether the component's precision includes time segments (hour, minute, second, millisecond)
592
+ * @internal
593
+ */
594
+ get includesTime() {
595
+ return [
596
+ p.Hour,
597
+ p.Minute,
598
+ p.Second,
599
+ p.Millisecond
600
+ ].includes(this.precision);
601
+ }
602
+ /**
603
+ * Resets the component's value and segments
604
+ */
605
+ clear() {
606
+ this._value = void 0, this.setSegments();
607
+ }
608
+ willUpdate(e) {
609
+ const t = e.has("value"), i = e.has("timeZone"), a = e.has("min"), r = e.has("max"), s = e.has("language"), l = e.has("dateFormat"), d = e.has("dateSeparator"), c = e.has("precision"), f = e.has("segments"), v = e.has("disabled");
610
+ if (s && this.setNumberParser(), (s || c) && (this.setDateFormatter(), this.setAriaDateFormatter()), t || a || r || i) {
611
+ this._value = this.value ? A(new Date(this.value).toISOString(), "UTC") : void 0, this._min = this.min ? A(new Date(this.min).toISOString(), "UTC") : void 0, this._max = this.max ? A(new Date(this.max).toISOString(), "UTC") : void 0;
612
+ const h = this.mostSpecificDateValue;
613
+ h && (this.convertDatePropsToMatch(h), this.checkDatePropsCompliance(a || r), this.updateDateProps(), this.updateDefaultPrecision());
614
+ }
615
+ (t || s || c || l || i || d) && this.setSegments(), f && this.setValueFromSegments(), v && this.isCalendarOpen && (this.isCalendarOpen = !1);
616
+ const g = this._value && this.labels.selected + ": " + this.ariaDateFormatter.format(ee(this._value));
617
+ this.setAttribute("aria-label", g ?? this.labels.empty);
618
+ }
619
+ /**
620
+ * Computes the component's most precise date property (min, max or value) or undefined if none is defined.
621
+ * The order of precedence is: ZonedDateTime, CalendarDateTime, CalendarDate.
622
+ * @internal
623
+ */
624
+ get mostSpecificDateValue() {
625
+ const e = [this._value, this._min, this._max].filter(
626
+ (r) => r !== void 0
627
+ );
628
+ if (e.length === 0) return;
629
+ const t = e.filter((r) => P(r));
630
+ if (t.length > 0) return t[0];
631
+ const i = e.filter((r) => B(r));
632
+ return i.length > 0 ? i[0] : e.find((r) => L(r));
633
+ }
634
+ /**
635
+ * Converts the DateTimePicker's date properties (min, max and value) to match the provided date's type.
636
+ *
637
+ * @param dateValue - The date value to be used as a reference for the conversion
638
+ */
639
+ convertDatePropsToMatch(e) {
640
+ if (P(e)) {
641
+ console.log("dateValueZ", e), this._timeZone = this.timeZone ?? e.timeZone, this._value = this._value && S(this._value, this._timeZone), this._min = this._min && S(this._min, this._timeZone), this._max = this._max && S(this._max, this._timeZone);
642
+ return;
643
+ }
644
+ if (this._timeZone = this.timeZone ?? E(), B(e)) {
645
+ console.log("dateValue", e), this._value = this._value && D(this._value), this._min = this._min && D(this._min), this._max = this._max && D(this._max);
646
+ return;
647
+ }
648
+ this._value = this._value && C(this._value), this._min = this._min && C(this._min), this._max = this._max && C(this._max);
649
+ }
650
+ /**
651
+ * Validates the component's date properties (min, max and value) compliance with one another.
652
+ * If the [min, max] constraint interval is invalid, both properties are reset.
653
+ * If the value is not within the [min, max] (valid) interval, it is reset.
654
+ *
655
+ * @param checkInterval - Whether to check the [min, max] interval
656
+ */
657
+ checkDatePropsCompliance(e) {
658
+ e && this._min && this._max && (this._min.compare(this._max) < 0 || (console.warn(
659
+ this,
660
+ `<${this.localName}> expects the 'min' to be less than 'max'. Please ensure that 'min' property's date is earlier than 'max' property's date.`
661
+ ), this._min = void 0, this._max = void 0)), this.isNonCompliantValue() && (console.warn(
662
+ this,
663
+ `<${this.localName}> expects the preselected value to comply with the min and max constraints. Please ensure that 'value' property's date is in between the dates for the 'min' and 'max' properties.`
664
+ ), this._value = void 0), !this._min && !this._max && !this._value && (this._timeZone = E());
665
+ }
666
+ isNonCompliantValue() {
667
+ return this._value === void 0 ? !1 : !!(this._min && this._value.compare(this._min) < 0 || this._max && this._value.compare(this._max) > 0);
668
+ }
669
+ /**
670
+ * Update the component's date properties' types to include the provided precision.
671
+ */
672
+ updateDateProps() {
673
+ const e = this.mostSpecificDateValue;
674
+ if (!e || !this.isUserSetPrecision) return;
675
+ this.includesTime && L(e) && this.convertDatePropsToMatch(D(e));
676
+ }
677
+ /**
678
+ * Changes the component's default precision according to the most specific date property (min, max or value).
679
+ */
680
+ updateDefaultPrecision() {
681
+ if (this.isUserSetPrecision) return;
682
+ const e = this.mostSpecificDateValue;
683
+ e && (this._precision = L(e) ? p.Day : p.Minute);
684
+ }
685
+ render() {
686
+ return _`
687
+ <div id="text-field">
688
+ ${this.renderStateIcons()} ${this.renderInputContent()}
689
+ </div>
690
+ ${this.renderHelpText(this.invalid)}${this.renderPicker()}
691
+ `;
692
+ }
693
+ renderStateIcons() {
694
+ return this.invalid ? _`
695
+ <luzmo-icon
696
+ .icon=${he}
697
+ .size=${this.size}
698
+ id="invalid"
699
+ class="icon"
700
+ ></luzmo-icon>
701
+ ` : U;
702
+ }
703
+ renderPicker() {
704
+ if (this.readonly) return U;
705
+ const e = () => this.isCalendarOpen = !1, t = () => this.isCalendarOpen = !0;
706
+ return _`
707
+ <luzmo-picker-button
708
+ ?open=${this.isCalendarOpen}
709
+ ?quiet=${this.quiet}
710
+ ?invalid=${this.invalid}
711
+ ?disabled=${this.disabled}
712
+ .size=${this.size}
713
+ @click=${t}
714
+ label=${this.labels.calendar}
715
+ >
716
+ <slot name="calendar-icon" slot="icon">
717
+ <luzmo-icon
718
+ .icon=${pe}
719
+ .size=${this.size}
720
+ block
721
+ ></luzmo-icon>
722
+ </slot>
723
+ </luzmo-picker-button>
724
+
725
+ <luzmo-overlay
726
+ .triggerElement=${this.input}
727
+ type="modal"
728
+ placement=${this.placement ?? "bottom"}
729
+ offset="0"
730
+ ?open=${this.isCalendarOpen}
731
+ @luzmo-closed=${e}
732
+ >
733
+ <luzmo-popover>
734
+ <div class="popover-content">
735
+ <luzmo-calendar
736
+ .value=${this._value ? (
737
+ // TODO: check if this is the correct way to handle the value with TZ
738
+ this._value.toString().slice(0, 10)
739
+ ) : void 0}
740
+ .min=${this._min ? this._min.toString() : void 0}
741
+ .max=${this._max ? this._max.toString() : void 0}
742
+ .labels=${this.labels}
743
+ .size=${this.size}
744
+ .language=${this.language}
745
+ @change=${this.handleChange}
746
+ ></luzmo-calendar>
747
+ </div>
748
+ </luzmo-popover>
749
+ </luzmo-overlay>
750
+ `;
751
+ }
752
+ handleChange(e) {
753
+ var i, a, r, s, l, d, c;
754
+ e.stopPropagation(), this.isCalendarOpen = !1, (i = e.target) != null && i.value && (this.value = (a = e.target) == null ? void 0 : a.value);
755
+ const t = oe(
756
+ ((r = e.target) == null ? void 0 : r.value) ?? ""
757
+ );
758
+ if (this.includesTime) {
759
+ const f = ((s = this.segments.hour) == null ? void 0 : s.value) ?? 0, v = ((l = this.segments.minute) == null ? void 0 : l.value) ?? 0, g = ((d = this.segments.second) == null ? void 0 : d.value) ?? 0, h = ((c = this.segments.millisecond) == null ? void 0 : c.value) ?? 0, z = new ne(f, v, g, h), x = this.mostSpecificDateValue;
760
+ this._value = D(t, z), x && P(x) && (this._value = S(this._value, this._timeZone));
761
+ } else
762
+ this._value = t;
763
+ this.commitValue();
764
+ }
765
+ renderInputContent() {
766
+ return _`
767
+ <div class="input">
768
+ <span
769
+ class="input-content"
770
+ @focusin=${() => this.focused = !this.readonly}
771
+ @focusout=${() => this.focused = !1}
772
+ @keydown=${this.handleKeydown}
773
+ @input=${this.handleInput}
774
+ >
775
+ ${this.renderSegments()}
776
+ </span>
777
+ </div>
778
+ `;
779
+ }
780
+ renderSegments() {
781
+ return this.segments.all.map(
782
+ (e) => Y(
783
+ e.type === o.Literal,
784
+ () => this.renderLiteralSegment(e),
785
+ () => this.renderEditableSegment(e)
786
+ )
787
+ );
788
+ }
789
+ renderLiteralSegment(e) {
790
+ return _`
791
+ <span
792
+ class="literal-segment"
793
+ data-test-id=${e.type}
794
+ aria-hidden="true"
795
+ >${e.formatted}</span>
796
+ `;
797
+ }
798
+ renderEditableSegment(e) {
799
+ const t = !this.disabled && !this.readonly, i = e.value === void 0, a = e.type === o.DayPeriod ? "text" : "numeric", r = {
800
+ "editable-segment": !0,
801
+ "is-placeholder": i
802
+ }, s = e.type !== o.Year && String(e.maxValue).length > 0, l = {
803
+ minWidth: s ? `${s}ch` : void 0
804
+ };
805
+ return _`
806
+ <div
807
+ role="spinbutton"
808
+ aria-valuenow=${$(e.value)}
809
+ aria-valuemin=${e.minValue}
810
+ aria-valuemax=${e.maxValue}
811
+ aria-label=${e.label}
812
+ aria-valuetext=${$(
813
+ e.value === void 0 ? this.labels.empty : e.formatted
814
+ )}
815
+ contenteditable=${$(t ? !0 : void 0)}
816
+ inputmode=${$(t ? a : void 0)}
817
+ tabindex=${$(t ? "0" : void 0)}
818
+ class=${le(r)}
819
+ style=${ce(l)}
820
+ data-type=${e.type}
821
+ .innerText=${this.renderSegmentText(e)}
822
+ ></div>
823
+ `;
824
+ }
825
+ renderSegmentText(e) {
826
+ const t = e.value === void 0;
827
+ return Y(
828
+ t,
829
+ () => e.placeholder ?? "",
830
+ () => e.formatted ?? ""
831
+ );
832
+ }
833
+ handleKeydown(e) {
834
+ var a;
835
+ const t = e.target, i = t.dataset.type;
836
+ if (i)
837
+ switch (e.code) {
838
+ case "ArrowUp": {
839
+ this.incrementValue(i);
840
+ break;
841
+ }
842
+ case "ArrowDown": {
843
+ this.decrementValue(i);
844
+ break;
845
+ }
846
+ case "ArrowRight": {
847
+ this.focusSegment(t, "next");
848
+ break;
849
+ }
850
+ case "ArrowLeft": {
851
+ this.focusSegment(t, "previous");
852
+ break;
853
+ }
854
+ case "Enter":
855
+ case "Space": {
856
+ this.commitValue();
857
+ break;
858
+ }
859
+ case "Backspace":
860
+ case "Delete": {
861
+ e.preventDefault(), ((a = this.segments.getByType(i)) == null ? void 0 : a.value) === void 0 ? this.focusSegment(t, "previous") : this.clearSegmentContent(i);
862
+ break;
863
+ }
864
+ }
865
+ }
866
+ /**
867
+ * The modifier parameters of the component
868
+ * @internal
869
+ */
870
+ get modifierParams() {
871
+ return {
872
+ dateFormatter: this.dateFormatter,
873
+ segments: this.segments,
874
+ currentDate: this.currentDate
875
+ };
876
+ }
877
+ incrementValue(e) {
878
+ const t = new ye(this.modifierParams);
879
+ this.segments = t.modify(e), this.dispatchInput();
880
+ }
881
+ decrementValue(e) {
882
+ const t = new xe(this.modifierParams);
883
+ this.segments = t.modify(e), this.dispatchInput();
884
+ }
885
+ /**
886
+ * Focuses the segment according to the direction, if there is one to focus on
887
+ *
888
+ * @param segment - Segment on which the event was triggered (the segment being changed)
889
+ * @param elementToFocus - Defines which element will be focused: is it the previous one or the next one?
890
+ */
891
+ focusSegment(e, t) {
892
+ let i = !1, a = e;
893
+ for (; !i; ) {
894
+ const r = t === "previous" ? a.previousElementSibling : a.nextElementSibling;
895
+ if (!r)
896
+ break;
897
+ r.getAttribute("contenteditable") && (r.focus(), i = !0), a = r;
898
+ }
899
+ }
900
+ /**
901
+ * Mark the user intent to commit the selected value. If the current value
902
+ * is different from the previous commited value, dispatch a change event.
903
+ */
904
+ commitValue() {
905
+ if (!(this._value && this.previousCommitedValue && this._value.compare(this.previousCommitedValue) === 0)) {
906
+ if (this._value === void 0 && this.previousCommitedValue === void 0) {
907
+ const e = this.segments.editableValues.every(
908
+ (t) => t === void 0
909
+ );
910
+ this.invalid = !e;
911
+ return;
912
+ }
913
+ this.invalid = !!(this._value === void 0 || this.isNonCompliantValue()), this.previousCommitedValue = this._value, this.dispatchChange();
914
+ }
915
+ }
916
+ clearSegmentContent(e) {
917
+ const t = this.segments.editableValues, i = new ke(this.modifierParams);
918
+ this.segments = i.modify(e);
919
+ const a = this.segments.editableValues;
920
+ R(t, a) || this.dispatchInput();
921
+ }
922
+ handleInput(e) {
923
+ e.stopPropagation();
924
+ const t = e.target.dataset.type, i = this.segments.editableValues, a = new we({
925
+ ...this.modifierParams,
926
+ eventData: e.data,
927
+ numberParser: this.numberParser
928
+ });
929
+ this.segments = a.modify(t), this.updateSegmentContent(
930
+ this.segments.getByType(t),
931
+ e.target
932
+ );
933
+ const r = this.segments.editableValues;
934
+ R(i, r) || this.dispatchInput();
935
+ }
936
+ /**
937
+ * Updates the content of the segments by binding it to the `.innerText` property of the element,
938
+ * instead of using string interpolation. This allows to not show user typed characters, but
939
+ * only the formatted content of the segment, needed for the 'contenteditable' elements.
940
+ *
941
+ * @param segment - Segment on which the event was triggered (the segment being changed)
942
+ * @param event - Triggered event details
943
+ */
944
+ updateSegmentContent(e, t) {
945
+ t.textContent = e.value === void 0 ? e.placeholder : e.formatted;
946
+ }
947
+ createOutputString(e) {
948
+ return e ? P(e) ? this._value.toAbsoluteString() : new Date(this._value.toString()).toISOString() : "";
949
+ }
950
+ dispatchChange() {
951
+ const e = this.createOutputString(this._value);
952
+ this.dispatchEvent(
953
+ new CustomEvent("change", {
954
+ bubbles: !0,
955
+ composed: !0,
956
+ cancelable: !0,
957
+ detail: {
958
+ value: e
959
+ }
960
+ })
961
+ );
962
+ }
963
+ dispatchInput() {
964
+ const e = this.createOutputString(this._value);
965
+ this.dispatchEvent(
966
+ new CustomEvent("input", {
967
+ bubbles: !0,
968
+ composed: !0,
969
+ cancelable: !0,
970
+ detail: {
971
+ value: e
972
+ }
973
+ })
974
+ );
975
+ }
976
+ setValueFromSegments() {
977
+ const e = this.segments.getFormattedDate(this.precision);
978
+ if (!e) {
979
+ this._value && this.dispatchChange(), this._value = void 0;
980
+ return;
981
+ }
982
+ this._value === void 0 && this.dispatchChange();
983
+ const t = this.mostSpecificDateValue;
984
+ t ? P(t) ? this._value = S(e, this._timeZone) : B(t) ? this._value = D(e) : this._value = C(e) : this._value = e;
985
+ }
986
+ setSegments() {
987
+ var i, a, r, s;
988
+ const t = new Me(this.dateFormatter).createSegments(
989
+ this.currentDate,
990
+ this._value !== void 0
991
+ );
992
+ if (this.dateFormat) {
993
+ const l = t.all.findIndex(
994
+ (c) => c.type === o.Month
995
+ ), d = t.all.findIndex(
996
+ (c) => c.type === o.Day
997
+ );
998
+ if (l !== -1 && d !== -1) {
999
+ if (this.dateFormat === "mmdd" && l > d) {
1000
+ const c = t.all[l];
1001
+ t.all[l] = t.all[d], t.all[d] = c;
1002
+ } else if (this.dateFormat === "ddmm" && d > l) {
1003
+ const c = t.all[d];
1004
+ t.all[d] = t.all[l], t.all[l] = c;
1005
+ }
1006
+ }
1007
+ }
1008
+ typeof this.dateSeparator == "string" && this.dateSeparator && (((a = (i = t.all) == null ? void 0 : i[1]) == null ? void 0 : a.type) === o.Literal && (t.all[1].formatted = this.dateSeparator), ((s = (r = t.all) == null ? void 0 : r[3]) == null ? void 0 : s.type) === o.Literal && (t.all[3].formatted = this.dateSeparator)), this.segments = t;
1009
+ }
1010
+ setNumberParser() {
1011
+ this.numberParser = new se(this._language, {
1012
+ maximumFractionDigits: 0
1013
+ });
1014
+ }
1015
+ setDateFormatter() {
1016
+ this.dateFormatter = new N(this._language, {
1017
+ day: "2-digit",
1018
+ month: "2-digit",
1019
+ year: "numeric",
1020
+ ...this.getTimeOptions("2-digit")
1021
+ });
1022
+ }
1023
+ setAriaDateFormatter() {
1024
+ this.ariaDateFormatter = new N(this._language, {
1025
+ day: "numeric",
1026
+ month: "long",
1027
+ year: "numeric",
1028
+ ...this.getTimeOptions("numeric")
1029
+ });
1030
+ }
1031
+ getTimeOptions(e) {
1032
+ switch (this.precision) {
1033
+ case p.Millisecond:
1034
+ return {
1035
+ hour: e,
1036
+ minute: e,
1037
+ second: e,
1038
+ fractionalSecondDigits: 3
1039
+ };
1040
+ case p.Second:
1041
+ return {
1042
+ hour: e,
1043
+ minute: e,
1044
+ second: e
1045
+ };
1046
+ case p.Minute:
1047
+ return {
1048
+ hour: e,
1049
+ minute: e
1050
+ };
1051
+ case p.Hour:
1052
+ return {
1053
+ hour: e
1054
+ };
1055
+ default:
1056
+ return {};
1057
+ }
1058
+ }
1059
+ }
1060
+ m([
1061
+ b({ type: String, reflect: !0 })
1062
+ ], u.prototype, "value", 2);
1063
+ m([
1064
+ b({ type: String, reflect: !0 })
1065
+ ], u.prototype, "min", 2);
1066
+ m([
1067
+ b({ type: String, reflect: !0 })
1068
+ ], u.prototype, "max", 2);
1069
+ m([
1070
+ b({ type: String, attribute: "date-format", reflect: !0 })
1071
+ ], u.prototype, "dateFormat", 2);
1072
+ m([
1073
+ b({ type: String, attribute: "date-separator", reflect: !0 })
1074
+ ], u.prototype, "dateSeparator", 2);
1075
+ m([
1076
+ b({ type: String, reflect: !0 })
1077
+ ], u.prototype, "precision", 1);
1078
+ m([
1079
+ b({ type: Boolean, reflect: !0 })
1080
+ ], u.prototype, "invalid", 2);
1081
+ m([
1082
+ b({ type: Boolean, reflect: !0 })
1083
+ ], u.prototype, "readonly", 2);
1084
+ m([
1085
+ b({ type: Boolean, reflect: !0 })
1086
+ ], u.prototype, "quiet", 2);
1087
+ m([
1088
+ b({ type: String, reflect: !0 })
1089
+ ], u.prototype, "placement", 2);
1090
+ m([
1091
+ b({ type: String, attribute: "time-zone", reflect: !0 })
1092
+ ], u.prototype, "timeZone", 2);
1093
+ m([
1094
+ b({ type: String, reflect: !0 })
1095
+ ], u.prototype, "language", 2);
1096
+ m([
1097
+ b({ attribute: !1 })
1098
+ ], u.prototype, "labels", 2);
1099
+ m([
1100
+ b({ type: Boolean, reflect: !0 })
1101
+ ], u.prototype, "focused", 2);
1102
+ m([
1103
+ M()
1104
+ ], u.prototype, "_value", 2);
1105
+ m([
1106
+ M()
1107
+ ], u.prototype, "_min", 2);
1108
+ m([
1109
+ M()
1110
+ ], u.prototype, "_max", 2);
1111
+ m([
1112
+ M()
1113
+ ], u.prototype, "segments", 2);
1114
+ m([
1115
+ M()
1116
+ ], u.prototype, "isCalendarOpen", 2);
1117
+ m([
1118
+ W(".editable-segment")
1119
+ ], u.prototype, "firstEditableSegment", 2);
1120
+ m([
1121
+ W(".input")
1122
+ ], u.prototype, "input", 2);
1123
+ customElements.get("luzmo-date-time-picker") || customElements.define("luzmo-date-time-picker", u);
1124
+ export {
1125
+ u as LuzmoDateTimePicker
1126
+ };