@luzmo/lucero 1.0.1-alpha.14 → 1.0.1-alpha.16

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 (275) hide show
  1. package/components/accordion/index.cjs +183 -6
  2. package/components/accordion/index.js +136 -88
  3. package/components/action-bar/index.cjs +85 -4
  4. package/components/action-bar/index.js +72 -50
  5. package/components/action-button/index.cjs +205 -3
  6. package/components/action-button/index.js +167 -93
  7. package/components/action-group/index.cjs +7 -1
  8. package/components/action-group/index.js +12 -8
  9. package/components/action-group-DHp8RHDf.js +392 -0
  10. package/components/action-group-MPf19RPV.cjs +391 -0
  11. package/components/action-menu/index.cjs +91 -11
  12. package/components/action-menu/index.js +66 -47
  13. package/components/avatar/index.cjs +63 -3
  14. package/components/avatar/index.js +54 -42
  15. package/components/base-COw9n7UR.cjs +119 -0
  16. package/components/base-DmeVy0cq.js +120 -0
  17. package/components/button/index.cjs +134 -2
  18. package/components/button/index.js +106 -72
  19. package/components/button-base-7Ak55xFd.cjs +206 -0
  20. package/components/button-base-C3kf6BTK.js +207 -0
  21. package/components/button-group/index.cjs +45 -1
  22. package/components/button-group/index.js +37 -25
  23. package/components/calendar/index.cjs +632 -1
  24. package/components/calendar/index.js +637 -7
  25. package/components/checkbox/index.cjs +111 -4
  26. package/components/checkbox/index.js +98 -53
  27. package/components/checkbox-mixin-8cL-vfDy.js +84 -0
  28. package/components/checkbox-mixin-CE7dJj3J.cjs +83 -0
  29. package/components/clear-button-Co6oKSgl.js +59 -0
  30. package/components/clear-button-X_HDY2eH.cjs +58 -0
  31. package/components/close-button-DPBK6Kpu.cjs +59 -0
  32. package/components/close-button-Miw9ZjoJ.js +60 -0
  33. package/components/color-area/index.cjs +440 -13
  34. package/components/color-area/index.js +322 -187
  35. package/components/color-controller-BjDZaxhX.js +491 -0
  36. package/components/color-controller-C3c_vb2P.cjs +490 -0
  37. package/components/color-field/index.cjs +95 -2
  38. package/components/color-field/index.js +77 -41
  39. package/components/color-handle/index.cjs +64 -3
  40. package/components/color-handle/index.js +58 -37
  41. package/components/color-loupe/index.cjs +7 -1
  42. package/components/color-loupe/index.js +12 -8
  43. package/components/color-loupe-BQqNR8YD.cjs +88 -0
  44. package/components/color-loupe-B_DDFv8l.js +89 -0
  45. package/components/color-menu/index.cjs +217 -12
  46. package/components/color-menu/index.js +187 -93
  47. package/components/color-palette/index.cjs +89 -1
  48. package/components/color-palette/index.js +78 -51
  49. package/components/color-palette-group/index.cjs +259 -3
  50. package/components/color-palette-group/index.js +193 -105
  51. package/components/color-picker/index.cjs +114 -6
  52. package/components/color-picker/index.js +92 -72
  53. package/components/color-slider/index.cjs +585 -1
  54. package/components/color-slider/index.js +590 -7
  55. package/components/{directive-oAbCiebi.js → condition-attribute-with-id-Cn815e9W.js} +22 -22
  56. package/components/condition-attribute-with-id-DEc2Yjne.cjs +43 -0
  57. package/components/date-time-picker/index.cjs +1357 -31
  58. package/components/date-time-picker/index.js +951 -637
  59. package/components/dependency-manger-CcIE1uvQ.cjs +63 -0
  60. package/components/{dependency-manger-CEXvGQUV.js → dependency-manger-XHpQjFgK.js} +24 -14
  61. package/components/divider/index.cjs +54 -1
  62. package/components/divider/index.js +49 -30
  63. package/components/divider.module-Cm5LcDRV.cjs +20 -0
  64. package/components/divider.module-DauH6k2_.js +21 -0
  65. package/components/element-resolution-DCsrhGZO.cjs +112 -0
  66. package/components/element-resolution-nMlmW4Jy.js +113 -0
  67. package/components/field-group/index.cjs +7 -1
  68. package/components/field-group/index.js +12 -8
  69. package/components/field-group-DNmY8W9v.cjs +86 -0
  70. package/components/field-group-DVdAWCQF.js +87 -0
  71. package/components/field-label/index.cjs +7 -1
  72. package/components/field-label/index.js +12 -8
  73. package/components/field-label-CKH9EXpR.cjs +156 -0
  74. package/components/field-label-Dpsecoc6.js +157 -0
  75. package/components/focus-group-BqDAk9Is.js +337 -0
  76. package/components/focus-group-DFzOlalL.cjs +336 -0
  77. package/components/focus-visible-B-B8-P9R.cjs +104 -0
  78. package/components/focus-visible-BUPRWlsh.js +105 -0
  79. package/components/focusable-BPrTcZPd.cjs +262 -0
  80. package/components/focusable-ChCLg1k4.js +263 -0
  81. package/components/{directive-C7oCP5Bh.cjs → focusable-selectors-D0t_5P7C.cjs} +16 -5
  82. package/components/{focusable-selectors-B4YgbghQ.js → focusable-selectors-IltOAOd9.js} +7 -4
  83. package/components/icon/index.cjs +90 -1
  84. package/components/icon/index.js +74 -46
  85. package/components/index.cjs +174 -1
  86. package/components/index.js +174 -172
  87. package/components/infield-button/index.cjs +46 -2
  88. package/components/infield-button/index.js +41 -30
  89. package/components/label/index.cjs +37 -1
  90. package/components/label/index.js +36 -24
  91. package/components/{language-resolution-8yZa5r_P.js → language-resolution-BSGJAWiQ.js} +21 -16
  92. package/components/language-resolution-iN9EImbb.cjs +57 -0
  93. package/components/like-anchor-D62faRNG.cjs +79 -0
  94. package/components/like-anchor-v3cJ9RWM.js +80 -0
  95. package/components/manage-help-text-BYx84zZR.cjs +125 -0
  96. package/components/manage-help-text-DOuMTGht.js +126 -0
  97. package/components/menu/index.cjs +1297 -29
  98. package/components/menu/index.js +954 -499
  99. package/components/multi-language-field/index.cjs +132 -2
  100. package/components/multi-language-field/index.js +118 -88
  101. package/components/number-field/index.cjs +613 -10
  102. package/components/number-field/index.js +442 -243
  103. package/components/observe-slot-presence-9AwLGUQ_.cjs +78 -0
  104. package/components/observe-slot-presence-DcMdoumP.js +79 -0
  105. package/components/observe-slot-text-CSofZeeF.cjs +104 -0
  106. package/components/observe-slot-text-CjnkkBPn.js +105 -0
  107. package/components/options/index.cjs +693 -60
  108. package/components/options/index.js +519 -953
  109. package/components/overlay/index.cjs +367 -21
  110. package/components/overlay/index.js +273 -189
  111. package/components/overlay-CN8ISP1F.js +2485 -0
  112. package/components/overlay-LViy9VWM.cjs +2484 -0
  113. package/components/{pending-state-DTX7ggyF.js → pending-state-CXbe-Xul.js} +28 -13
  114. package/components/pending-state-e4RbXe9u.cjs +75 -0
  115. package/components/picker/index.cjs +9 -1
  116. package/components/picker/index.js +15 -11
  117. package/components/picker-DNde3awt.cjs +672 -0
  118. package/components/picker-PfUAF05y.js +673 -0
  119. package/components/picker-button/index.cjs +56 -4
  120. package/components/picker-button/index.js +45 -34
  121. package/components/platform-CxDar3Dn.cjs +68 -0
  122. package/components/platform-Cxn0WbyT.js +69 -0
  123. package/components/popover/index.cjs +7 -1
  124. package/components/popover/index.js +12 -8
  125. package/components/popover-BkbYhl3i.js +74 -0
  126. package/components/popover-BkgUf0kL.cjs +74 -0
  127. package/components/progress-circle/index.cjs +7 -1
  128. package/components/progress-circle/index.js +12 -8
  129. package/components/progress-circle-Hu_ivPHf.js +133 -0
  130. package/components/progress-circle-_Etqsj9f.cjs +132 -0
  131. package/components/radio/index.cjs +244 -2
  132. package/components/radio/index.js +192 -110
  133. package/components/{when-CDK1Tt5Y.js → random-id-BE6HA503.cjs} +7 -10
  134. package/components/{random-id-ByCz1xaq.js → random-id-BEc6QIUL.js} +3 -3
  135. package/components/roving-tabindex-AsmAh2In.cjs +95 -0
  136. package/components/roving-tabindex-DPF9NmrH.js +96 -0
  137. package/components/search/index.cjs +115 -8
  138. package/components/search/index.js +96 -66
  139. package/components/select/index.cjs +720 -51
  140. package/components/select/index.js +563 -347
  141. package/components/sized-mixin-DmkrNdWB.js +80 -0
  142. package/components/sized-mixin-UaTVa-AE.cjs +79 -0
  143. package/components/slider/index.cjs +119 -1
  144. package/components/slider/index.js +100 -1113
  145. package/components/{condition-attribute-with-id-Dv4lSRbe.js → slottable-request-event-CANixJnR.cjs} +15 -13
  146. package/components/{slottable-request-event-DggLA4Rx.js → slottable-request-event-D9WzrdWv.js} +12 -9
  147. package/components/strategies-DlMlaSJR.cjs +317 -0
  148. package/components/strategies-DlPQoTFE.js +318 -0
  149. package/components/streaming-listener-D4sHaMub.cjs +145 -0
  150. package/components/streaming-listener-cAz5zJyk.js +146 -0
  151. package/components/swatch/index.cjs +436 -7
  152. package/components/swatch/index.js +350 -205
  153. package/components/switch/index.cjs +61 -2
  154. package/components/switch/index.js +51 -34
  155. package/components/tabs/index.cjs +693 -26
  156. package/components/tabs/index.js +521 -388
  157. package/components/tags/index.cjs +201 -4
  158. package/components/tags/index.js +152 -87
  159. package/components/text-field/index.cjs +49 -3
  160. package/components/text-field/index.js +44 -30
  161. package/components/text-field-11tcnftU.cjs +338 -0
  162. package/components/text-field-Chi9J2Cz.js +339 -0
  163. package/components/text-field.module-CMBS0jSL.js +21 -0
  164. package/components/text-field.module-DIJdV_sA.cjs +20 -0
  165. package/components/toast/index.cjs +177 -12
  166. package/components/toast/index.js +145 -73
  167. package/components/tooltip/index.cjs +221 -6
  168. package/components/tooltip/index.js +156 -109
  169. package/components/unit-input/index.cjs +232 -8
  170. package/components/unit-input/index.js +201 -108
  171. package/components/utils.cjs +25 -1
  172. package/components/utils.js +22 -22
  173. package/package.json +1 -1
  174. package/components/NumberFormatter-DewVDY5w.cjs +0 -18
  175. package/components/NumberFormatter-DgOUVrge.js +0 -136
  176. package/components/NumberParser-Dik4a0h-.cjs +0 -18
  177. package/components/NumberParser-ci9J5EKv.js +0 -173
  178. package/components/action-group-DBImibFn.js +0 -258
  179. package/components/action-group-DJGMcRHb.cjs +0 -20
  180. package/components/async-directive-BX1T1e1_.cjs +0 -22
  181. package/components/async-directive-BfcqVjDp.js +0 -82
  182. package/components/base-BjTwmyRF.cjs +0 -22
  183. package/components/base-CBCg3yyw.cjs +0 -40
  184. package/components/base-D76d76ww.js +0 -26
  185. package/components/base-WsynuqaS.js +0 -677
  186. package/components/button-base-DbkDzb71.js +0 -144
  187. package/components/button-base-XgPLmwP-.cjs +0 -25
  188. package/components/checkbox-mixin-BDN0dBtS.cjs +0 -27
  189. package/components/checkbox-mixin-Do7EgtpQ.js +0 -70
  190. package/components/class-map-Di1D_rCm.cjs +0 -22
  191. package/components/class-map-NbVXqBU0.js +0 -51
  192. package/components/clear-button-DQcRdcUa.js +0 -53
  193. package/components/clear-button-OFUFFe7G.cjs +0 -18
  194. package/components/close-button-Cbnb7XXj.cjs +0 -18
  195. package/components/close-button-CqHYZhum.js +0 -51
  196. package/components/color-controller-B0uX6Zso.js +0 -3230
  197. package/components/color-controller-CoUL5f9K.cjs +0 -18
  198. package/components/color-loupe-CaA_Lfkk.cjs +0 -56
  199. package/components/color-loupe-CmMsXbjT.js +0 -81
  200. package/components/condition-attribute-with-id-DrQYZzFS.cjs +0 -18
  201. package/components/dependency-manger-C5HCkMMB.cjs +0 -18
  202. package/components/directive-helpers-Cm6gitnu.js +0 -62
  203. package/components/directive-helpers-DyIRTWwA.cjs +0 -22
  204. package/components/divider.module-DDvBo9zo.cjs +0 -18
  205. package/components/divider.module-DoQWQEIJ.js +0 -21
  206. package/components/element-resolution-BvRLGqIU.cjs +0 -18
  207. package/components/element-resolution-FCUT-wql.js +0 -91
  208. package/components/field-group-DXfBWrkO.js +0 -66
  209. package/components/field-group-DkGst3r5.cjs +0 -23
  210. package/components/field-label-CZ2zzChK.js +0 -106
  211. package/components/field-label-mO1AkUgR.cjs +0 -25
  212. package/components/flow-D-0MTYCm.js +0 -527
  213. package/components/flow-DM3dNAKs.cjs +0 -30
  214. package/components/focus-group-DHeTq18L.js +0 -218
  215. package/components/focus-group-DnxZUBhQ.cjs +0 -18
  216. package/components/focus-visible-B0P9aY_G.cjs +0 -18
  217. package/components/focus-visible-DBlJGoEW.js +0 -74
  218. package/components/focusable-BxtpnzWp.js +0 -153
  219. package/components/focusable-EbipgXRh.cjs +0 -18
  220. package/components/focusable-selectors-BgFlyFcY.cjs +0 -18
  221. package/components/if-defined-C9YGdo33.cjs +0 -22
  222. package/components/if-defined-DOaE2coe.js +0 -27
  223. package/components/index-BwxgAdzi.cjs +0 -57
  224. package/components/index-Cl54m8Yh.js +0 -1490
  225. package/components/index-HjQa8tew.js +0 -1174
  226. package/components/index-Wq3qZJGh.cjs +0 -113
  227. package/components/language-resolution-DJzmyzZq.cjs +0 -18
  228. package/components/like-anchor-Bvn_vLQ8.js +0 -69
  229. package/components/like-anchor-sod1C1fR.cjs +0 -32
  230. package/components/luzmo-icons-4nDFv1Lq.js +0 -229
  231. package/components/luzmo-icons-D4IvHgVd.cjs +0 -29
  232. package/components/manage-help-text-DhgARkZX.cjs +0 -30
  233. package/components/manage-help-text-syYnjKGL.js +0 -92
  234. package/components/mutation-controller-DH7YOCyj.js +0 -52
  235. package/components/mutation-controller-DkOMCW-c.cjs +0 -22
  236. package/components/observe-slot-presence-CmVi0zTc.js +0 -68
  237. package/components/observe-slot-presence-bc9chhsi.cjs +0 -18
  238. package/components/observe-slot-text-BPfIQQtz.js +0 -87
  239. package/components/observe-slot-text-Ceb7SvYT.cjs +0 -18
  240. package/components/overlay-Cig9r6uU.js +0 -2747
  241. package/components/overlay-KSKMzzkh.cjs +0 -47
  242. package/components/pending-state-CaH1si5b.cjs +0 -26
  243. package/components/picker-BfBP7XJN.js +0 -461
  244. package/components/picker-xIphqE6d.cjs +0 -123
  245. package/components/platform-BM-uMWpX.js +0 -69
  246. package/components/platform-BiXhwqk3.cjs +0 -18
  247. package/components/popover-DjX0aAnY.js +0 -67
  248. package/components/popover-KFfO0IYL.cjs +0 -30
  249. package/components/progress-circle-BvRJNuNo.cjs +0 -33
  250. package/components/progress-circle-DXH9z8-6.js +0 -97
  251. package/components/query-BL-TJj7K.cjs +0 -22
  252. package/components/query-D_KR_GUc.js +0 -51
  253. package/components/query-assigned-elements-DjfhL1cl.js +0 -36
  254. package/components/query-assigned-elements-DsKsfk7G.cjs +0 -22
  255. package/components/query-assigned-nodes-BcKWmGzy.cjs +0 -22
  256. package/components/query-assigned-nodes-C76XVPWY.js +0 -36
  257. package/components/random-id-CqvckpWe.cjs +0 -18
  258. package/components/roving-tabindex-By_fCy_e.cjs +0 -18
  259. package/components/roving-tabindex-DOg4z6ZU.js +0 -66
  260. package/components/sized-mixin-CPxE5C96.cjs +0 -18
  261. package/components/sized-mixin-D4ACoVUr.js +0 -63
  262. package/components/slottable-request-event-BfUUt1Mh.cjs +0 -18
  263. package/components/state-D8JEtYqe.cjs +0 -22
  264. package/components/state-Deh-vKYE.js +0 -29
  265. package/components/strategies-9indNIEb.js +0 -195
  266. package/components/strategies-BACP6MhR.cjs +0 -18
  267. package/components/streaming-listener-B00MvALi.cjs +0 -18
  268. package/components/streaming-listener-CP-JE6Fa.js +0 -91
  269. package/components/style-map-CeilmSgs.cjs +0 -22
  270. package/components/style-map-IgqIKvlE.js +0 -53
  271. package/components/text-field-CeG75PPO.cjs +0 -85
  272. package/components/text-field-DCl-AFM-.js +0 -314
  273. package/components/text-field.module-C2KVUJcX.js +0 -21
  274. package/components/text-field.module-DXhFA9G-.cjs +0 -18
  275. package/components/when-CDZyJPvd.cjs +0 -22
@@ -15,33 +15,34 @@
15
15
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
16
16
  * SOFTWARE.
17
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-Cl54m8Yh.js";
19
- import { $ as se } from "../NumberParser-ci9J5EKv.js";
20
- import { r as Z, x as _, E as U, n as b } from "../base-WsynuqaS.js";
21
- import { r as M } from "../state-Deh-vKYE.js";
22
- import { e as W } from "../query-D_KR_GUc.js";
23
- import { e as le } from "../class-map-NbVXqBU0.js";
24
- import { o as $ } from "../if-defined-DOaE2coe.js";
25
- import { o as ce } from "../style-map-IgqIKvlE.js";
26
- import { n as Y } from "../when-CDK1Tt5Y.js";
27
- import { F as de } from "../focusable-BxtpnzWp.js";
28
- import { S as ue, E as me } from "../sized-mixin-D4ACoVUr.js";
29
- import { $ as he, o as pe } from "../luzmo-icons-4nDFv1Lq.js";
18
+ const initializeGlobalLuzmoCSSVariables = () => {
19
+ if (typeof document !== "undefined" && !document.querySelector("style[data-luzmo-vars]")) {
20
+ const styleElement = document.createElement("style");
21
+ styleElement.setAttribute("data-luzmo-vars", "");
22
+ styleElement.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}`;
23
+ document.head.appendChild(styleElement);
24
+ }
25
+ };
26
+ initializeGlobalLuzmoCSSVariables();
27
+ import { ZonedDateTime, CalendarDateTime, CalendarDate, getMinimumDayInMonth, getMinimumMonthInYear, getLocalTimeZone, now, toZoned, parseAbsolute, toCalendarDateTime, toCalendarDate, parseDate, Time, DateFormatter } from "@internationalized/date";
28
+ import { NumberFormatter, NumberParser } from "@internationalized/number";
29
+ import { unsafeCSS, html, nothing } from "lit";
30
+ import { property, state, query } from "lit/decorators.js";
31
+ import { classMap } from "lit/directives/class-map.js";
32
+ import { ifDefined } from "lit/directives/if-defined.js";
33
+ import { styleMap } from "lit/directives/style-map.js";
34
+ import { when } from "lit/directives/when.js";
35
+ import { F as Focusable } from "../focusable-ChCLg1k4.js";
36
+ import { S as SizedMixin, E as ElementSizes } from "../sized-mixin-DmkrNdWB.js";
37
+ import { luzmoAlert, luzmoCalendar } from "@luzmo/icons";
38
+ import "../calendar/index.js";
30
39
  import "../icon/index.js";
31
40
  import "../overlay/index.js";
32
41
  import "../picker-button/index.js";
33
42
  import "../popover/index.js";
34
- import { M as fe } from "../manage-help-text-syYnjKGL.js";
35
- import { $ as K } from "../NumberFormatter-DgOUVrge.js";
36
- import { t as ve } from "../text-field.module-C2KVUJcX.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 = {
43
+ import { M as ManageHelpText } from "../manage-help-text-DOuMTGht.js";
44
+ import { t as textFieldStyles } from "../text-field.module-CMBS0jSL.js";
45
+ const SegmentTypes = {
45
46
  Year: "year",
46
47
  Month: "month",
47
48
  Day: "day",
@@ -51,85 +52,109 @@ const o = {
51
52
  Millisecond: "fractionalSecond",
52
53
  DayPeriod: "dayPeriod",
53
54
  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 = {
55
+ };
56
+ const SegmentPlaceholders = {
57
+ [SegmentTypes.Year]: "––––",
58
+ [SegmentTypes.Month]: "––",
59
+ [SegmentTypes.Day]: "––",
60
+ [SegmentTypes.Hour]: "––",
61
+ [SegmentTypes.Minute]: "––",
62
+ [SegmentTypes.Second]: "––",
63
+ [SegmentTypes.Millisecond]: "–––",
64
+ [SegmentTypes.DayPeriod]: "––"
65
+ };
66
+ const Precisions = {
64
67
  Day: "day",
65
68
  Hour: "hour",
66
69
  Minute: "minute",
67
70
  Second: "second",
68
71
  Millisecond: "millisecond"
69
- }, q = 0, V = 12, X = 2e3, ze = 31;
70
- function k(n) {
71
- return typeof n == "number";
72
+ };
73
+ const AM = 0;
74
+ const PM = 12;
75
+ const DEFAULT_LEAP_YEAR = 2e3;
76
+ const MAX_DAYS_PER_MONTH = 31;
77
+ function isNumber(value) {
78
+ return typeof value === "number";
72
79
  }
73
- function P(n) {
74
- return n instanceof ae;
80
+ function isZonedDateTime(date) {
81
+ return date instanceof ZonedDateTime;
75
82
  }
76
- function B(n) {
77
- return n instanceof F;
83
+ function isCalendarDateTime(date) {
84
+ return date instanceof CalendarDateTime;
78
85
  }
79
- function L(n) {
80
- return n instanceof H;
86
+ function isCalendarDate(date) {
87
+ return date instanceof CalendarDate;
81
88
  }
82
- function J(n, e) {
83
- return n = n % V + e;
89
+ function convertHourTo24hFormat(hour, dayPeriod) {
90
+ return hour = hour % PM + dayPeriod;
84
91
  }
85
- function Q(n) {
86
- return n >= V ? V : q;
92
+ function getDayPeriodModifier(hour) {
93
+ return hour >= PM ? PM : AM;
87
94
  }
88
- function R(n, e) {
89
- return n.length === e.length && n.every((t, i) => t === e[i]);
95
+ function equalSegmentValues(a, b) {
96
+ return a.length === b.length && a.every((value, index) => value === b[index]);
90
97
  }
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
98
+ function dateValueToDate(dateValue) {
99
+ if (isCalendarDate(dateValue)) {
100
+ return new Date(dateValue.year, dateValue.month - 1, dateValue.day);
101
+ }
102
+ return new Date(
103
+ dateValue.year,
104
+ dateValue.month - 1,
105
+ dateValue.day,
106
+ dateValue.hour,
107
+ dateValue.minute,
108
+ dateValue.second,
109
+ dateValue.millisecond
100
110
  );
101
111
  }
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));
112
+ class EditableSegment {
113
+ constructor(type, formatted, label) {
114
+ this.type = type;
115
+ this.formatted = formatted;
116
+ this.label = label;
117
+ this.placeholder = SegmentPlaceholders[type];
118
+ }
119
+ increment(_value) {
120
+ if (this.value === void 0) this.value = this.minValue;
121
+ else {
122
+ this.value = this.value + 1;
123
+ if (this.value > this.maxValue) this.value = this.minValue;
124
+ }
108
125
  }
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));
126
+ decrement(_value) {
127
+ if (this.value === void 0) this.value = this.maxValue;
128
+ else {
129
+ this.value = this.value - 1;
130
+ if (this.value < this.minValue) this.value = this.maxValue;
131
+ }
111
132
  }
112
- setValueFromDate(e) {
113
- this.type === "fractionalSecond" ? this.value = e.millisecond : this.type !== o.DayPeriod && (this.value = e[this.type]);
133
+ setValueFromDate(currentDate) {
134
+ if (this.type === "fractionalSecond") {
135
+ this.value = currentDate.millisecond;
136
+ } else if (this.type !== SegmentTypes.DayPeriod) {
137
+ this.value = currentDate[this.type];
138
+ }
114
139
  }
115
140
  clear() {
116
141
  this.value = void 0;
117
142
  }
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}`
143
+ handleInput(eventData, numberParser) {
144
+ const typedValue = numberParser.parse(eventData);
145
+ if (Number.isNaN(typedValue)) return;
146
+ const newValue = numberParser.parse(
147
+ `${this.value ?? ""}${typedValue}`
123
148
  );
124
- if (this.isInputValueCompliant(a)) {
125
- this.value = a;
149
+ if (this.isInputValueCompliant(newValue)) {
150
+ this.value = newValue;
126
151
  return;
127
152
  }
128
- this.isInputValueCompliant(i) && (this.value = i);
153
+ if (this.isInputValueCompliant(typedValue)) this.value = typedValue;
129
154
  }
130
- isInputValueCompliant(e) {
131
- const { minValue: t, maxValue: i } = this.inputValidationLimits;
132
- return e >= t && e <= i;
155
+ isInputValueCompliant(value) {
156
+ const { minValue, maxValue } = this.inputValidationLimits;
157
+ return value >= minValue && value <= maxValue;
133
158
  }
134
159
  get inputValidationLimits() {
135
160
  return {
@@ -138,73 +163,89 @@ class y {
138
163
  };
139
164
  }
140
165
  updateValueToLimits() {
141
- this.value !== void 0 && (this.value < this.minValue && (this.value = this.minValue), this.value > this.maxValue && (this.value = this.maxValue));
166
+ if (this.value === void 0) return;
167
+ if (this.value < this.minValue) this.value = this.minValue;
168
+ if (this.value > this.maxValue) this.value = this.maxValue;
142
169
  }
143
170
  }
144
- class te extends y {
145
- constructor(e, t) {
146
- super(o.Year, e, t), this.minValue = 1, this.maxValue = 9999;
171
+ class YearSegment extends EditableSegment {
172
+ constructor(formatted, label) {
173
+ super(SegmentTypes.Year, formatted, label);
174
+ this.minValue = 1;
175
+ this.maxValue = 9999;
147
176
  }
148
- setLimits(e) {
149
- this.minValue = 1, this.maxValue = e.calendar.getYearsInEra(e), this.updateValueToLimits();
177
+ setLimits(currentDate) {
178
+ this.minValue = 1;
179
+ this.maxValue = currentDate.calendar.getYearsInEra(currentDate);
180
+ this.updateValueToLimits();
150
181
  }
151
- increment(e) {
152
- this.value === void 0 ? this.value = e.year : super.increment();
182
+ increment(currentDate) {
183
+ if (this.value === void 0) this.value = currentDate.year;
184
+ else super.increment();
153
185
  }
154
- decrement(e) {
155
- this.value === void 0 ? this.value = e.year : super.decrement();
186
+ decrement(currentDate) {
187
+ if (this.value === void 0) this.value = currentDate.year;
188
+ else super.decrement();
156
189
  }
157
190
  clear() {
158
191
  if (this.value === void 0) return;
159
- const e = Math.floor(this.value / 10);
160
- this.value = e > 0 ? e : void 0;
192
+ const newValue = Math.floor(this.value / 10);
193
+ this.value = newValue > 0 ? newValue : void 0;
161
194
  }
162
195
  }
163
- class I {
164
- constructor(e) {
165
- this.segments = e;
196
+ class DateTimeSegments {
197
+ constructor(segments) {
198
+ this.segments = segments;
166
199
  }
167
200
  get all() {
168
201
  return this.segments;
169
202
  }
170
203
  get editableValues() {
171
- return this.all.filter((e) => e instanceof y).map((e) => e.value);
204
+ return this.all.filter((segment) => segment instanceof EditableSegment).map((segment) => segment.value);
172
205
  }
173
206
  get year() {
174
- const e = this.getByType(o.Year);
175
- if (e && e instanceof te) return e;
207
+ const yearSegment = this.getByType(SegmentTypes.Year);
208
+ if (yearSegment && yearSegment instanceof YearSegment) return yearSegment;
209
+ return void 0;
176
210
  }
177
211
  get month() {
178
- const e = this.getByType(o.Month);
179
- if (e) return e;
212
+ const monthSegment = this.getByType(SegmentTypes.Month);
213
+ if (monthSegment) return monthSegment;
214
+ return;
180
215
  }
181
216
  get day() {
182
- const e = this.getByType(o.Day);
183
- if (e) return e;
217
+ const daySegment = this.getByType(SegmentTypes.Day);
218
+ if (daySegment) return daySegment;
219
+ return;
184
220
  }
185
221
  get hour() {
186
- const e = this.getByType(o.Hour);
187
- if (e) return e;
222
+ const hourSegment = this.getByType(SegmentTypes.Hour);
223
+ if (hourSegment) return hourSegment;
224
+ return;
188
225
  }
189
226
  get minute() {
190
- const e = this.getByType(o.Minute);
191
- if (e) return e;
227
+ const minuteSegment = this.getByType(SegmentTypes.Minute);
228
+ if (minuteSegment) return minuteSegment;
229
+ return;
192
230
  }
193
231
  get second() {
194
- const e = this.getByType(o.Second);
195
- if (e) return e;
232
+ const secondSegment = this.getByType(SegmentTypes.Second);
233
+ if (secondSegment) return secondSegment;
234
+ return;
196
235
  }
197
236
  get millisecond() {
198
- const e = this.getByType(o.Millisecond);
199
- if (e) return e;
237
+ const millisecondSegment = this.getByType(SegmentTypes.Millisecond);
238
+ if (millisecondSegment) return millisecondSegment;
239
+ return;
200
240
  }
201
241
  get dayPeriod() {
202
- const e = this.getByType(o.DayPeriod);
203
- if (e) return e;
242
+ const dayPeriodSegment = this.getByType(SegmentTypes.DayPeriod);
243
+ if (dayPeriodSegment) return dayPeriodSegment;
244
+ return;
204
245
  }
205
- getByType(e) {
246
+ getByType(type) {
206
247
  return this.segments.find(
207
- (t) => t.type === e
248
+ (segment) => segment.type === type
208
249
  );
209
250
  }
210
251
  /**
@@ -213,46 +254,50 @@ class I {
213
254
  *
214
255
  * @param precision - The precision to use when creating the date object
215
256
  */
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;
257
+ getFormattedDate(precision = Precisions.Day) {
258
+ var _a, _b, _c, _d, _e, _f, _g;
259
+ const year = (_a = this.year) == null ? void 0 : _a.value;
260
+ const month = (_b = this.month) == null ? void 0 : _b.value;
261
+ const day = (_c = this.day) == null ? void 0 : _c.value;
262
+ if (!isNumber(year) || !isNumber(month) || !isNumber(day)) return;
263
+ if (precision === Precisions.Day) return new CalendarDate(year, month, day);
264
+ let hour = (_d = this.hour) == null ? void 0 : _d.value;
265
+ if (!isNumber(hour)) return;
223
266
  if (this.dayPeriod) {
224
- const w = this.dayPeriod.value;
225
- if (!k(w)) return;
226
- r = J(r, w);
267
+ const dayPeriod = this.dayPeriod.value;
268
+ if (!isNumber(dayPeriod)) return;
269
+ hour = convertHourTo24hFormat(hour, dayPeriod);
227
270
  }
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
- );
271
+ if (precision === Precisions.Hour)
272
+ return new CalendarDateTime(year, month, day, hour);
273
+ const minute = (_e = this.minute) == null ? void 0 : _e.value;
274
+ if (!isNumber(minute)) return;
275
+ if (precision === Precisions.Minute)
276
+ return new CalendarDateTime(year, month, day, hour, minute);
277
+ const second = (_f = this.second) == null ? void 0 : _f.value;
278
+ if (!isNumber(second)) return;
279
+ if (precision === Precisions.Second)
280
+ return new CalendarDateTime(year, month, day, hour, minute, second);
281
+ const millisecond = (_g = this.millisecond) == null ? void 0 : _g.value;
282
+ if (!isNumber(millisecond)) return;
283
+ return new CalendarDateTime(
284
+ year,
285
+ month,
286
+ day,
287
+ hour,
288
+ minute,
289
+ second,
290
+ millisecond
291
+ );
249
292
  }
250
293
  }
251
- class be {
252
- constructor(e, t) {
253
- this.dateFormatter = e, this.currentDate = t, this.numberFormatter = new K(
294
+ class SegmentsFormatter {
295
+ constructor(dateFormatter, currentDate) {
296
+ this.dateFormatter = dateFormatter;
297
+ this.currentDate = currentDate;
298
+ this.numberFormatter = new NumberFormatter(
254
299
  this.dateFormatter.resolvedOptions().locale,
255
- { useGrouping: !1 }
300
+ { useGrouping: false }
256
301
  );
257
302
  }
258
303
  /**
@@ -260,180 +305,246 @@ class be {
260
305
  * @param segments - `DateTimeSegments` to format
261
306
  * @returns Formatted DateTimeSegments
262
307
  */
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
308
+ format(segments) {
309
+ if (!segments.year || !segments.month || !segments.day) return segments;
310
+ const dateInfo = this.getDateInfoWithDefaults(segments);
311
+ if (!dateInfo) return segments;
312
+ this.setSegmentsFormatted(segments, dateInfo);
313
+ this.padSegmentsFormatted(segments);
314
+ return segments;
315
+ }
316
+ setSegmentsFormatted(segments, dateInfo) {
317
+ var _a;
318
+ segments = new DateTimeSegments(segments.all);
319
+ const { year, month, day, hour, minute, second, millisecond } = dateInfo;
320
+ const date = new Date(
321
+ year,
322
+ month - 1,
323
+ day,
324
+ hour,
325
+ minute,
326
+ second,
327
+ millisecond
279
328
  );
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);
329
+ if (!segments.year) return;
330
+ segments.year.formatted = this.numberFormatter.format(year);
331
+ const segmentTypesToFormat = [
332
+ SegmentTypes.Month,
333
+ SegmentTypes.Day,
334
+ SegmentTypes.Hour,
335
+ SegmentTypes.Minute,
336
+ SegmentTypes.Second,
337
+ SegmentTypes.DayPeriod
338
+ ];
339
+ const formattedDateParts = this.dateFormatter.formatToParts(date);
340
+ for (const segmentType of segmentTypesToFormat) {
341
+ const segment = segments[segmentType];
342
+ if (!segment) continue;
343
+ const formattedPart = (_a = formattedDateParts.find(
344
+ (part) => part.type === segmentType
345
+ )) == null ? void 0 : _a.value;
346
+ if (!formattedPart) continue;
347
+ segment.formatted = formattedPart;
297
348
  }
298
349
  }
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
350
+ padSegmentsFormatted(segments) {
351
+ if (!segments.hour) return;
352
+ const segmentTypesToPad = [
353
+ SegmentTypes.Month,
354
+ SegmentTypes.Day,
355
+ SegmentTypes.Hour,
356
+ SegmentTypes.Minute,
357
+ SegmentTypes.Second
307
358
  ];
308
- for (const i of t) {
309
- const a = e[i];
310
- a && (a.formatted = a.formatted.padStart(
359
+ for (const segmentType of segmentTypesToPad) {
360
+ const segment = segments[segmentType];
361
+ if (!segment) continue;
362
+ segment.formatted = segment.formatted.padStart(
311
363
  2,
312
364
  this.numberFormatter.format(0)
313
- ));
365
+ );
314
366
  }
315
367
  }
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 };
368
+ getDateInfoWithDefaults(segments) {
369
+ var _a, _b, _c, _d, _e;
370
+ if (!segments.year || !segments.month || !segments.day) return;
371
+ const day = segments.day.value ?? getMinimumDayInMonth(this.currentDate);
372
+ const month = segments.month.value ?? getMinimumMonthInYear(this.currentDate);
373
+ const year = segments.year.value ?? DEFAULT_LEAP_YEAR;
374
+ const dayPeriod = (_a = segments.dayPeriod) == null ? void 0 : _a.value;
375
+ let hour = (_b = segments.hour) == null ? void 0 : _b.value;
376
+ if (!isNumber(hour)) {
377
+ hour = isNumber(dayPeriod) ? dayPeriod : this.currentDate.hour;
378
+ } else if (isNumber(dayPeriod)) {
379
+ hour = convertHourTo24hFormat(hour, dayPeriod);
380
+ }
381
+ const minute = ((_c = segments.minute) == null ? void 0 : _c.value) ?? this.currentDate.minute;
382
+ const second = ((_d = segments.second) == null ? void 0 : _d.value) ?? this.currentDate.second;
383
+ const millisecond = ((_e = segments.millisecond) == null ? void 0 : _e.value) ?? this.currentDate.millisecond;
384
+ return { year, month, day, hour, minute, second, millisecond };
324
385
  }
325
386
  }
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(
387
+ class SegmentsModifier {
388
+ constructor(params) {
389
+ const { dateFormatter, segments, currentDate } = params;
390
+ this.segments = new DateTimeSegments(segments.all);
391
+ this.dateFormatter = dateFormatter;
392
+ this.currentDate = currentDate;
393
+ }
394
+ modify(segmentType) {
395
+ const segment = this.segments.getByType(segmentType);
396
+ if (!segment) return this.segments;
397
+ this.modifySegment(segment);
398
+ this.updateSegmentsLimits(segmentType);
399
+ const segmentsFormatter = new SegmentsFormatter(
336
400
  this.dateFormatter,
337
401
  this.currentDate
338
402
  );
339
- return this.segments = i.format(this.segments), this.segments;
403
+ this.segments = segmentsFormatter.format(this.segments);
404
+ return this.segments;
340
405
  }
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));
406
+ updateSegmentsLimits(modifiedSegmentType) {
407
+ const changedYear = modifiedSegmentType === SegmentTypes.Year;
408
+ const changedMonth = modifiedSegmentType === SegmentTypes.Month;
409
+ const year = this.segments.year;
410
+ const month = this.segments.month;
411
+ const day = this.segments.day;
412
+ if (changedYear) {
413
+ month == null ? void 0 : month.setLimits(this.currentDate);
414
+ day == null ? void 0 : day.setLimits(this.currentDate, month == null ? void 0 : month.value, year == null ? void 0 : year.value);
415
+ }
416
+ if (changedMonth)
417
+ day == null ? void 0 : day.setLimits(this.currentDate, month == null ? void 0 : month.value, year == null ? void 0 : year.value);
344
418
  }
345
419
  }
346
- class ke extends O {
347
- modifySegment(e) {
348
- e.clear();
420
+ class ClearModifier extends SegmentsModifier {
421
+ modifySegment(segment) {
422
+ segment.clear();
349
423
  }
350
424
  }
351
- class xe extends O {
352
- modifySegment(e) {
353
- e.decrement(this.currentDate);
425
+ class DecrementModifier extends SegmentsModifier {
426
+ modifySegment(segment) {
427
+ segment.decrement(this.currentDate);
354
428
  }
355
429
  }
356
- class ye extends O {
357
- modifySegment(e) {
358
- e.increment(this.currentDate);
430
+ class IncrementModifier extends SegmentsModifier {
431
+ modifySegment(segment) {
432
+ segment.increment(this.currentDate);
359
433
  }
360
434
  }
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;
435
+ class InputModifier extends SegmentsModifier {
436
+ constructor(params) {
437
+ const { dateFormatter, segments, currentDate } = params;
438
+ super({ dateFormatter, segments, currentDate });
439
+ this.eventData = params.eventData;
440
+ this.numberParser = params.numberParser;
365
441
  }
366
- modifySegment(e) {
367
- this.eventData !== null && e.handleInput(this.eventData, this.numberParser);
442
+ modifySegment(segment) {
443
+ if (this.eventData === null) return;
444
+ segment.handleInput(this.eventData, this.numberParser);
368
445
  }
369
446
  }
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;
447
+ class DaySegment extends EditableSegment {
448
+ constructor(formatted, label) {
449
+ super(SegmentTypes.Day, formatted, label);
450
+ this.minValue = 1;
451
+ this.maxValue = 31;
452
+ }
453
+ setLimits(currentDate, month, year) {
454
+ if (!isNumber(month)) {
455
+ this.minValue = 1;
456
+ this.maxValue = MAX_DAYS_PER_MONTH;
377
457
  return;
378
458
  }
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();
459
+ if (!isNumber(year)) year = DEFAULT_LEAP_YEAR;
460
+ const dateToUse = new CalendarDate(year, month, 1);
461
+ this.maxValue = currentDate.calendar.getDaysInMonth(dateToUse);
462
+ this.minValue = getMinimumDayInMonth(dateToUse);
463
+ this.updateValueToLimits();
382
464
  }
383
465
  }
384
- class De extends y {
385
- constructor(e, t) {
386
- super(o.Month, e, t), this.minValue = 1, this.maxValue = 12;
466
+ class MonthSegment extends EditableSegment {
467
+ constructor(formatted, label) {
468
+ super(SegmentTypes.Month, formatted, label);
469
+ this.minValue = 1;
470
+ this.maxValue = 12;
387
471
  }
388
- setLimits(e) {
389
- this.minValue = G(e), this.maxValue = e.calendar.getMonthsInYear(e), this.updateValueToLimits();
472
+ setLimits(currentDate) {
473
+ this.minValue = getMinimumMonthInYear(currentDate);
474
+ this.maxValue = currentDate.calendar.getMonthsInYear(currentDate);
475
+ this.updateValueToLimits();
390
476
  }
391
477
  }
392
- class _e {
393
- constructor(e) {
394
- this.formatted = e, this.type = o.Literal;
478
+ class LiteralSegment {
479
+ constructor(formatted) {
480
+ this.formatted = formatted;
481
+ this.type = SegmentTypes.Literal;
395
482
  }
396
483
  }
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";
484
+ class DayPeriodSegment extends EditableSegment {
485
+ constructor(formatted, label) {
486
+ super(SegmentTypes.DayPeriod, formatted, label);
487
+ this.minValue = AM;
488
+ this.maxValue = PM;
489
+ this.localizedMinValue = "AM";
490
+ this.localizedMaxValue = "PM";
400
491
  }
401
492
  toggleAmPm() {
402
- this.value = this.value === q ? V : q;
493
+ this.value = this.value === AM ? PM : AM;
403
494
  }
404
495
  increment() {
405
- this.value === void 0 ? this.value = this.minValue : this.toggleAmPm();
496
+ if (this.value === void 0) this.value = this.minValue;
497
+ else this.toggleAmPm();
406
498
  }
407
499
  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)
500
+ if (this.value === void 0) this.value = this.maxValue;
501
+ else this.toggleAmPm();
502
+ }
503
+ setValueFromDate(currentDate) {
504
+ this.value = getDayPeriodModifier(currentDate.hour);
505
+ }
506
+ handleInput(eventData) {
507
+ const charTypedIn = eventData.toLowerCase();
508
+ const isCharFromAM = this.localizedMinValue.toLowerCase().includes(charTypedIn);
509
+ const isCharFromPM = this.localizedMaxValue.toLowerCase().includes(charTypedIn);
510
+ if (isCharFromAM && isCharFromPM) return;
511
+ if (isCharFromAM) this.value = AM;
512
+ if (isCharFromPM) this.value = PM;
513
+ return;
514
+ }
515
+ setLocalizedLimits(dateFormatter) {
516
+ const amDate = new Date(0, 0, 0, this.minValue, 0);
517
+ const pmDate = new Date(0, 0, 0, this.maxValue, 0);
518
+ const [am, pm] = [amDate, pmDate].map(
519
+ this.getDayPeriodFromDate.bind(this, dateFormatter)
420
520
  );
421
- a && (this.localizedMinValue = a), r && (this.localizedMaxValue = r);
521
+ if (am) this.localizedMinValue = am;
522
+ if (pm) this.localizedMaxValue = pm;
422
523
  }
423
- getDayPeriodFromDate(e, t) {
424
- var i;
425
- return (i = e.formatToParts(t).find((a) => a.type === this.type)) == null ? void 0 : i.value;
524
+ getDayPeriodFromDate(dateFormatter, date) {
525
+ var _a;
526
+ return (_a = dateFormatter.formatToParts(date).find((part) => part.type === this.type)) == null ? void 0 : _a.value;
426
527
  }
427
528
  }
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();
529
+ class HourSegment extends EditableSegment {
530
+ constructor(formatted, label) {
531
+ super(SegmentTypes.Hour, formatted, label);
532
+ this.minValue = 0;
533
+ this.maxValue = 23;
534
+ }
535
+ setLimits(is12HourClock) {
536
+ this.minValue = 0;
537
+ this.maxValue = 23;
538
+ if (is12HourClock) {
539
+ this.minValue = 0;
540
+ this.maxValue = 11;
541
+ }
542
+ this.updateValueToLimits();
434
543
  }
435
- setValueFromDate(e, t) {
436
- t ? this.value = e.hour - Q(e.hour) : super.setValueFromDate(e);
544
+ setValueFromDate(currentDate, is12HourClock) {
545
+ if (is12HourClock)
546
+ this.value = currentDate.hour - getDayPeriodModifier(currentDate.hour);
547
+ else super.setValueFromDate(currentDate);
437
548
  }
438
549
  /**
439
550
  * Returns the limits used to validate a user typed-in value.
@@ -443,35 +554,42 @@ class $e extends y {
443
554
  * for the 00 time, which is represented by the value of 0 of the hour segment.
444
555
  */
445
556
  get inputValidationLimits() {
446
- const e = this.maxValue === 11;
557
+ const isAmPm = this.maxValue === 11;
447
558
  return {
448
- minValue: e ? 1 : 0,
449
- maxValue: e ? 12 : 23
559
+ minValue: isAmPm ? 1 : 0,
560
+ maxValue: isAmPm ? 12 : 23
450
561
  };
451
562
  }
452
563
  }
453
- class Pe extends y {
454
- constructor(e, t) {
455
- super(o.Millisecond, e, t), this.minValue = 0, this.maxValue = 999;
564
+ class MillisecondSegment extends EditableSegment {
565
+ constructor(formatted, label) {
566
+ super(SegmentTypes.Millisecond, formatted, label);
567
+ this.minValue = 0;
568
+ this.maxValue = 999;
456
569
  }
457
570
  }
458
- class Fe extends y {
459
- constructor(e, t) {
460
- super(o.Minute, e, t), this.minValue = 0, this.maxValue = 59;
571
+ class MinuteSegment extends EditableSegment {
572
+ constructor(formatted, label) {
573
+ super(SegmentTypes.Minute, formatted, label);
574
+ this.minValue = 0;
575
+ this.maxValue = 59;
461
576
  }
462
577
  }
463
- class qe extends y {
464
- constructor(e, t) {
465
- super(o.Second, e, t), this.minValue = 0, this.maxValue = 59;
578
+ class SecondSegment extends EditableSegment {
579
+ constructor(formatted, label) {
580
+ super(SegmentTypes.Second, formatted, label);
581
+ this.minValue = 0;
582
+ this.maxValue = 59;
466
583
  }
467
584
  }
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], {
585
+ class SegmentsFactory {
586
+ constructor(dateFormatter) {
587
+ this.dateFormatter = dateFormatter;
588
+ const locale = this.dateFormatter.resolvedOptions().locale;
589
+ this.numberFormatter = new NumberFormatter(locale, {
590
+ useGrouping: false
591
+ });
592
+ this.dateTimeFieldDisplayNames = new Intl.DisplayNames([locale], {
475
593
  type: "dateTimeField"
476
594
  });
477
595
  }
@@ -480,87 +598,150 @@ class Me {
480
598
  * @param currentDate - The date to create the segments from. This is used to set the limits and values of the segments.
481
599
  * @param setValues - If true, the segments will have their values set from the currentDate. If false, the segments will have no values.
482
600
  */
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);
601
+ createSegments(currentDate, setValues = false) {
602
+ const date = dateValueToDate(currentDate);
603
+ const createdSegments = this.dateFormatter.formatToParts(date).map((part) => {
604
+ const type = part.type;
605
+ let formatted = part.value;
606
+ if (type === "year")
607
+ formatted = this.numberFormatter.format(currentDate.year);
608
+ return this.createSegment(type, formatted);
609
+ });
610
+ const segments = new DateTimeSegments(createdSegments);
611
+ const year = segments.year;
612
+ const month = segments.month;
613
+ const day = segments.day;
614
+ year.setLimits(currentDate);
615
+ month.setLimits(currentDate);
616
+ if (setValues) {
617
+ year.setValueFromDate(currentDate);
618
+ month.setValueFromDate(currentDate);
496
619
  }
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);
620
+ day.setLimits(currentDate, month.value, year.value);
621
+ if (setValues) day.setValueFromDate(currentDate);
622
+ const hour = segments.hour;
623
+ const minute = segments.minute;
624
+ const second = segments.second;
625
+ const millisecond = segments.millisecond;
626
+ const dayPeriod = segments.dayPeriod;
627
+ if (dayPeriod) dayPeriod.setLocalizedLimits(this.dateFormatter);
628
+ if (!hour) return segments;
629
+ const is12HourFormat = Boolean(dayPeriod);
630
+ hour.setLimits(is12HourFormat);
631
+ if (setValues) {
632
+ hour.setValueFromDate(currentDate, is12HourFormat);
633
+ if (is12HourFormat) {
634
+ const dayPeriodSegment = segments.dayPeriod;
635
+ dayPeriodSegment.setValueFromDate(currentDate);
636
+ }
637
+ if (!minute) return segments;
638
+ minute.setValueFromDate(currentDate);
639
+ if (!second) return segments;
640
+ second.setValueFromDate(currentDate);
641
+ if (!millisecond) return segments;
642
+ millisecond.setValueFromDate(currentDate);
643
+ }
644
+ return segments;
645
+ }
646
+ createSegment(type, formatted) {
647
+ if (type === SegmentTypes.Literal) return new LiteralSegment(formatted);
648
+ const label = this.displayNameOfType(type);
649
+ switch (type) {
650
+ case SegmentTypes.Year: {
651
+ return new YearSegment(formatted, label);
652
+ }
653
+ case SegmentTypes.Month: {
654
+ return new MonthSegment(formatted, label);
655
+ }
656
+ case SegmentTypes.Day: {
657
+ return new DaySegment(formatted, label);
658
+ }
659
+ case SegmentTypes.Hour: {
660
+ return new HourSegment(formatted, label);
661
+ }
662
+ case SegmentTypes.Minute: {
663
+ return new MinuteSegment(formatted, label);
664
+ }
665
+ case SegmentTypes.Second: {
666
+ return new SecondSegment(formatted, label);
667
+ }
668
+ case SegmentTypes.Millisecond: {
669
+ return new MillisecondSegment(formatted, label);
670
+ }
671
+ case SegmentTypes.DayPeriod: {
672
+ return new DayPeriodSegment(formatted, label);
673
+ }
519
674
  }
520
675
  }
521
- displayNameOfType(e) {
522
- const t = e === "fractionalSecond" ? "millisecond" : this.dateTimeFieldDisplayNames.of(e);
523
- return t ? t.charAt(0).toUpperCase() + t.slice(1) : "";
676
+ displayNameOfType(type) {
677
+ const label = type === "fractionalSecond" ? "millisecond" : this.dateTimeFieldDisplayNames.of(type);
678
+ if (!label) return "";
679
+ return label.charAt(0).toUpperCase() + label.slice(1);
524
680
  }
525
681
  }
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-picker-button{cursor:default}: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{cursor:pointer;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;
682
+ const dateTimePickerStyles = '@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-picker-button{cursor:default}: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{cursor:pointer;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}';
683
+ var __defProp = Object.defineProperty;
684
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
685
+ var __decorateClass = (decorators, target, key, kind) => {
686
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
687
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
688
+ if (decorator = decorators[i])
689
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
690
+ if (kind && result) __defProp(target, key, result);
691
+ return result;
531
692
  };
532
- class u extends fe(
533
- ue(de, {
534
- validSizes: Object.values(me)
693
+ class LuzmoDateTimePicker extends ManageHelpText(
694
+ SizedMixin(Focusable, {
695
+ validSizes: Object.values(ElementSizes)
535
696
  })
536
697
  ) {
537
698
  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 = {
699
+ super();
700
+ this._precision = Precisions.Minute;
701
+ this.isUserSetPrecision = false;
702
+ this.invalid = false;
703
+ this.readonly = false;
704
+ this.quiet = false;
705
+ this.placement = "bottom";
706
+ this.language = "en";
707
+ this.labels = {
539
708
  previous: "Previous",
540
709
  next: "Next",
541
710
  today: "Today",
542
711
  selected: "Selected",
543
712
  empty: "Empty",
544
713
  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(
714
+ };
715
+ this.focused = false;
716
+ this.segments = new DateTimeSegments([]);
717
+ this.isCalendarOpen = false;
718
+ this._timeZone = this.timeZone ?? getLocalTimeZone();
719
+ this.cachedLocalTime = now(this._timeZone);
720
+ this.setNumberParser();
721
+ this.setDateFormatter();
722
+ this.setAriaDateFormatter();
723
+ this.addEventListener(
546
724
  "focusin",
547
725
  () => this.previousCommitedValue = this._value
548
- ), this.addEventListener("focusout", () => this.commitValue());
726
+ );
727
+ this.addEventListener("focusout", () => this.commitValue());
549
728
  }
550
729
  /**
551
730
  * The styles of the calendar
552
731
  * @internal
553
732
  */
554
733
  static get styles() {
555
- return [Z(Te), Z(ve)];
734
+ return [unsafeCSS(dateTimePickerStyles), unsafeCSS(textFieldStyles)];
556
735
  }
557
736
  get precision() {
558
737
  return this._precision;
559
738
  }
560
- set precision(e) {
561
- this.isUserSetPrecision = !0;
562
- const t = this._precision;
563
- e !== t && (this._precision = e, this.requestUpdate("precision", t));
739
+ set precision(value) {
740
+ this.isUserSetPrecision = true;
741
+ const oldValue = this._precision;
742
+ if (value === oldValue) return;
743
+ this._precision = value;
744
+ this.requestUpdate("precision", oldValue);
564
745
  }
565
746
  /**
566
747
  * The language used to format the dates and weekdays.
@@ -568,7 +749,11 @@ class u extends fe(
568
749
  */
569
750
  get _language() {
570
751
  try {
571
- return this.language ? new Intl.Locale(this.language).language : "en";
752
+ if (this.language) {
753
+ const locale = new Intl.Locale(this.language);
754
+ return locale.language;
755
+ }
756
+ return "en";
572
757
  } catch {
573
758
  return "en";
574
759
  }
@@ -585,36 +770,63 @@ class u extends fe(
585
770
  * @internal
586
771
  */
587
772
  get currentDate() {
588
- return this._value ? S(this._value, this._timeZone) : this.cachedLocalTime;
773
+ if (this._value) return toZoned(this._value, this._timeZone);
774
+ return this.cachedLocalTime;
589
775
  }
590
776
  /**
591
777
  * @return Whether the component's precision includes time segments (hour, minute, second, millisecond)
592
778
  * @internal
593
779
  */
594
780
  get includesTime() {
595
- return [
596
- p.Hour,
597
- p.Minute,
598
- p.Second,
599
- p.Millisecond
600
- ].includes(this.precision);
781
+ const timePrecisions = [
782
+ Precisions.Hour,
783
+ Precisions.Minute,
784
+ Precisions.Second,
785
+ Precisions.Millisecond
786
+ ];
787
+ return timePrecisions.includes(this.precision);
601
788
  }
602
789
  /**
603
790
  * Resets the component's value and segments
604
791
  */
605
792
  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());
793
+ this._value = void 0;
794
+ this.setSegments();
795
+ }
796
+ willUpdate(changedProperties) {
797
+ const changesValue = changedProperties.has("value");
798
+ const changesTimeZone = changedProperties.has("timeZone");
799
+ const changesMin = changedProperties.has("min");
800
+ const changesMax = changedProperties.has("max");
801
+ const changesLocale = changedProperties.has("language");
802
+ const changesDateFormat = changedProperties.has("dateFormat");
803
+ const changesDateSeparator = changedProperties.has("dateSeparator");
804
+ const changesPrecision = changedProperties.has("precision");
805
+ const changesSegments = changedProperties.has("segments");
806
+ const changesDisabled = changedProperties.has("disabled");
807
+ if (changesLocale) this.setNumberParser();
808
+ if (changesLocale || changesPrecision) {
809
+ this.setDateFormatter();
810
+ this.setAriaDateFormatter();
614
811
  }
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);
812
+ if (changesValue || changesMin || changesMax || changesTimeZone) {
813
+ this._value = this.value ? parseAbsolute(new Date(this.value).toISOString(), "UTC") : void 0;
814
+ this._min = this.min ? parseAbsolute(new Date(this.min).toISOString(), "UTC") : void 0;
815
+ this._max = this.max ? parseAbsolute(new Date(this.max).toISOString(), "UTC") : void 0;
816
+ const mostSpecificDateValue = this.mostSpecificDateValue;
817
+ if (mostSpecificDateValue) {
818
+ this.convertDatePropsToMatch(mostSpecificDateValue);
819
+ this.checkDatePropsCompliance(changesMin || changesMax);
820
+ this.updateDateProps();
821
+ this.updateDefaultPrecision();
822
+ }
823
+ }
824
+ if (changesValue || changesLocale || changesPrecision || changesDateFormat || changesTimeZone || changesDateSeparator)
825
+ this.setSegments();
826
+ if (changesSegments) this.setValueFromSegments();
827
+ if (changesDisabled && this.isCalendarOpen) this.isCalendarOpen = false;
828
+ const selectedDateLabel = this._value && this.labels.selected + ": " + this.ariaDateFormatter.format(dateValueToDate(this._value));
829
+ this.setAttribute("aria-label", selectedDateLabel ?? this.labels.empty);
618
830
  }
619
831
  /**
620
832
  * Computes the component's most precise date property (min, max or value) or undefined if none is defined.
@@ -622,30 +834,40 @@ class u extends fe(
622
834
  * @internal
623
835
  */
624
836
  get mostSpecificDateValue() {
625
- const e = [this._value, this._min, this._max].filter(
626
- (r) => r !== void 0
837
+ const dateValuesDefined = [this._value, this._min, this._max].filter(
838
+ (date) => date !== void 0
627
839
  );
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));
840
+ if (dateValuesDefined.length === 0) return;
841
+ const zonedDateTimes = dateValuesDefined.filter((d) => isZonedDateTime(d));
842
+ if (zonedDateTimes.length > 0) return zonedDateTimes[0];
843
+ const dateTimes = dateValuesDefined.filter((d) => isCalendarDateTime(d));
844
+ if (dateTimes.length > 0) return dateTimes[0];
845
+ const mostSpecificDate = dateValuesDefined.find((d) => isCalendarDate(d));
846
+ return mostSpecificDate;
633
847
  }
634
848
  /**
635
849
  * Converts the DateTimePicker's date properties (min, max and value) to match the provided date's type.
636
850
  *
637
851
  * @param dateValue - The date value to be used as a reference for the conversion
638
852
  */
639
- convertDatePropsToMatch(e) {
640
- if (P(e)) {
641
- 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);
853
+ convertDatePropsToMatch(dateValue) {
854
+ if (isZonedDateTime(dateValue)) {
855
+ this._timeZone = this.timeZone ?? dateValue.timeZone;
856
+ this._value = this._value && toZoned(this._value, this._timeZone);
857
+ this._min = this._min && toZoned(this._min, this._timeZone);
858
+ this._max = this._max && toZoned(this._max, this._timeZone);
642
859
  return;
643
860
  }
644
- if (this._timeZone = this.timeZone ?? E(), B(e)) {
645
- this._value = this._value && D(this._value), this._min = this._min && D(this._min), this._max = this._max && D(this._max);
861
+ this._timeZone = this.timeZone ?? getLocalTimeZone();
862
+ if (isCalendarDateTime(dateValue)) {
863
+ this._value = this._value && toCalendarDateTime(this._value);
864
+ this._min = this._min && toCalendarDateTime(this._min);
865
+ this._max = this._max && toCalendarDateTime(this._max);
646
866
  return;
647
867
  }
648
- this._value = this._value && C(this._value), this._min = this._min && C(this._min), this._max = this._max && C(this._max);
868
+ this._value = this._value && toCalendarDate(this._value);
869
+ this._min = this._min && toCalendarDate(this._min);
870
+ this._max = this._max && toCalendarDate(this._max);
649
871
  }
650
872
  /**
651
873
  * Validates the component's date properties (min, max and value) compliance with one another.
@@ -654,36 +876,55 @@ class u extends fe(
654
876
  *
655
877
  * @param checkInterval - Whether to check the [min, max] interval
656
878
  */
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());
879
+ checkDatePropsCompliance(checkInterval) {
880
+ if (checkInterval && this._min && this._max) {
881
+ const isValidInterval = this._min.compare(this._max) < 0;
882
+ if (!isValidInterval) {
883
+ console.warn(
884
+ this,
885
+ `<${this.localName}> expects the 'min' to be less than 'max'. Please ensure that 'min' property's date is earlier than 'max' property's date.`
886
+ );
887
+ this._min = void 0;
888
+ this._max = void 0;
889
+ }
890
+ }
891
+ if (this.isNonCompliantValue()) {
892
+ console.warn(
893
+ this,
894
+ `<${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.`
895
+ );
896
+ this._value = void 0;
897
+ }
898
+ if (!this._min && !this._max && !this._value)
899
+ this._timeZone = getLocalTimeZone();
665
900
  }
666
901
  isNonCompliantValue() {
667
- return this._value === void 0 ? !1 : !!(this._min && this._value.compare(this._min) < 0 || this._max && this._value.compare(this._max) > 0);
902
+ if (this._value === void 0) return false;
903
+ return Boolean(
904
+ this._min && this._value.compare(this._min) < 0 || this._max && this._value.compare(this._max) > 0
905
+ );
668
906
  }
669
907
  /**
670
908
  * Update the component's date properties' types to include the provided precision.
671
909
  */
672
910
  updateDateProps() {
673
- const e = this.mostSpecificDateValue;
674
- if (!e || !this.isUserSetPrecision) return;
675
- this.includesTime && L(e) && this.convertDatePropsToMatch(D(e));
911
+ const mostSpecificDateValue = this.mostSpecificDateValue;
912
+ if (!mostSpecificDateValue || !this.isUserSetPrecision) return;
913
+ const shouldConvertToDateTime = this.includesTime && isCalendarDate(mostSpecificDateValue);
914
+ if (shouldConvertToDateTime)
915
+ this.convertDatePropsToMatch(toCalendarDateTime(mostSpecificDateValue));
676
916
  }
677
917
  /**
678
918
  * Changes the component's default precision according to the most specific date property (min, max or value).
679
919
  */
680
920
  updateDefaultPrecision() {
681
921
  if (this.isUserSetPrecision) return;
682
- const e = this.mostSpecificDateValue;
683
- e && (this._precision = L(e) ? p.Day : p.Minute);
922
+ const mostSpecificDateValue = this.mostSpecificDateValue;
923
+ if (!mostSpecificDateValue) return;
924
+ this._precision = isCalendarDate(mostSpecificDateValue) ? Precisions.Day : Precisions.Minute;
684
925
  }
685
926
  render() {
686
- return _`
927
+ return html`
687
928
  <div id="text-field">
688
929
  ${this.renderStateIcons()} ${this.renderInputContent()}
689
930
  </div>
@@ -691,31 +932,34 @@ class u extends fe(
691
932
  `;
692
933
  }
693
934
  renderStateIcons() {
694
- return this.invalid ? _`
935
+ if (this.invalid)
936
+ return html`
695
937
  <luzmo-icon
696
- .icon=${he}
938
+ .icon=${luzmoAlert}
697
939
  .size=${this.size}
698
940
  id="invalid"
699
941
  class="icon"
700
942
  ></luzmo-icon>
701
- ` : U;
943
+ `;
944
+ return nothing;
702
945
  }
703
946
  renderPicker() {
704
- if (this.readonly) return U;
705
- const e = () => this.isCalendarOpen = !1, t = () => this.isCalendarOpen = !0;
706
- return _`
947
+ if (this.readonly) return nothing;
948
+ const closeCalendar = () => this.isCalendarOpen = false;
949
+ const openCalendar = () => this.isCalendarOpen = true;
950
+ return html`
707
951
  <luzmo-picker-button
708
952
  ?open=${this.isCalendarOpen}
709
953
  ?quiet=${this.quiet}
710
954
  ?invalid=${this.invalid}
711
955
  ?disabled=${this.disabled}
712
956
  .size=${this.size}
713
- @click=${t}
957
+ @click=${openCalendar}
714
958
  label=${this.labels.calendar}
715
959
  >
716
960
  <slot name="calendar-icon" slot="icon">
717
961
  <luzmo-icon
718
- .icon=${pe}
962
+ .icon=${luzmoCalendar}
719
963
  .size=${this.size}
720
964
  block
721
965
  ></luzmo-icon>
@@ -728,7 +972,7 @@ class u extends fe(
728
972
  placement=${this.placement ?? "bottom"}
729
973
  offset="0"
730
974
  ?open=${this.isCalendarOpen}
731
- @luzmo-closed=${e}
975
+ @luzmo-closed=${closeCalendar}
732
976
  >
733
977
  <luzmo-popover>
734
978
  <div class="popover-content">
@@ -749,26 +993,40 @@ class u extends fe(
749
993
  </luzmo-overlay>
750
994
  `;
751
995
  }
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) ?? ""
996
+ handleChange(event) {
997
+ var _a, _b, _c, _d, _e, _f, _g;
998
+ event.stopPropagation();
999
+ this.isCalendarOpen = false;
1000
+ if ((_a = event.target) == null ? void 0 : _a.value) {
1001
+ this.value = (_b = event.target) == null ? void 0 : _b.value;
1002
+ }
1003
+ const calendarValue = parseDate(
1004
+ ((_c = event.target) == null ? void 0 : _c.value) ?? ""
757
1005
  );
758
1006
  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;
1007
+ const hour = ((_d = this.segments.hour) == null ? void 0 : _d.value) ?? 0;
1008
+ const minute = ((_e = this.segments.minute) == null ? void 0 : _e.value) ?? 0;
1009
+ const second = ((_f = this.segments.second) == null ? void 0 : _f.value) ?? 0;
1010
+ const millisecond = ((_g = this.segments.millisecond) == null ? void 0 : _g.value) ?? 0;
1011
+ const time = new Time(hour, minute, second, millisecond);
1012
+ const mostSpecificDateValue = this.mostSpecificDateValue;
1013
+ this._value = toCalendarDateTime(calendarValue, time);
1014
+ if (mostSpecificDateValue && isZonedDateTime(mostSpecificDateValue))
1015
+ this._value = toZoned(this._value, this._timeZone);
1016
+ } else {
1017
+ this._value = calendarValue;
1018
+ }
763
1019
  this.commitValue();
764
1020
  }
765
1021
  renderInputContent() {
766
- return _`
1022
+ const focusIn = () => this.focused = !this.readonly;
1023
+ const focusOut = () => this.focused = false;
1024
+ return html`
767
1025
  <div class="input">
768
1026
  <span
769
1027
  class="input-content"
770
- @focusin=${() => this.focused = !this.readonly}
771
- @focusout=${() => this.focused = !1}
1028
+ @focusin=${focusIn}
1029
+ @focusout=${focusOut}
772
1030
  @keydown=${this.handleKeydown}
773
1031
  @input=${this.handleInput}
774
1032
  >
@@ -779,89 +1037,98 @@ class u extends fe(
779
1037
  }
780
1038
  renderSegments() {
781
1039
  return this.segments.all.map(
782
- (e) => Y(
783
- e.type === o.Literal,
784
- () => this.renderLiteralSegment(e),
785
- () => this.renderEditableSegment(e)
1040
+ (segment) => when(
1041
+ segment.type === SegmentTypes.Literal,
1042
+ () => this.renderLiteralSegment(segment),
1043
+ () => this.renderEditableSegment(segment)
786
1044
  )
787
1045
  );
788
1046
  }
789
- renderLiteralSegment(e) {
790
- return _`
1047
+ renderLiteralSegment(segment) {
1048
+ return html`
791
1049
  <span
792
1050
  class="literal-segment"
793
- data-test-id=${e.type}
1051
+ data-test-id=${segment.type}
794
1052
  aria-hidden="true"
795
- >${e.formatted}</span>
1053
+ >${segment.formatted}</span>
796
1054
  `;
797
1055
  }
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
1056
+ renderEditableSegment(segment) {
1057
+ const isActive = !this.disabled && !this.readonly;
1058
+ const usePlaceholder = segment.value === void 0;
1059
+ const inputMode = segment.type === SegmentTypes.DayPeriod ? "text" : "numeric";
1060
+ const segmentClasses = {
1061
+ "editable-segment": true,
1062
+ "is-placeholder": usePlaceholder
1063
+ };
1064
+ const minWidth = segment.type !== SegmentTypes.Year && String(segment.maxValue).length > 0;
1065
+ const segmentStyles = {
1066
+ minWidth: minWidth ? `${minWidth}ch` : void 0
804
1067
  };
805
- return _`
1068
+ return html`
806
1069
  <div
807
1070
  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
1071
+ aria-valuenow=${ifDefined(segment.value)}
1072
+ aria-valuemin=${segment.minValue}
1073
+ aria-valuemax=${segment.maxValue}
1074
+ aria-label=${segment.label}
1075
+ aria-valuetext=${ifDefined(
1076
+ segment.value === void 0 ? this.labels.empty : segment.formatted
814
1077
  )}
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)}
1078
+ contenteditable=${ifDefined(isActive ? true : void 0)}
1079
+ inputmode=${ifDefined(isActive ? inputMode : void 0)}
1080
+ tabindex=${ifDefined(isActive ? "0" : void 0)}
1081
+ class=${classMap(segmentClasses)}
1082
+ style=${styleMap(segmentStyles)}
1083
+ data-type=${segment.type}
1084
+ .innerText=${this.renderSegmentText(segment)}
822
1085
  ></div>
823
1086
  `;
824
1087
  }
825
- renderSegmentText(e) {
826
- const t = e.value === void 0;
827
- return Y(
828
- t,
829
- () => e.placeholder ?? "",
830
- () => e.formatted ?? ""
1088
+ renderSegmentText(segment) {
1089
+ const usePlaceholder = segment.value === void 0;
1090
+ return when(
1091
+ usePlaceholder,
1092
+ () => segment.placeholder ?? "",
1093
+ () => segment.formatted ?? ""
831
1094
  );
832
1095
  }
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
- }
1096
+ handleKeydown(event) {
1097
+ var _a;
1098
+ const segmentElement = event.target;
1099
+ const segmentType = segmentElement.dataset.type;
1100
+ if (!segmentType) return;
1101
+ switch (event.code) {
1102
+ case "ArrowUp": {
1103
+ this.incrementValue(segmentType);
1104
+ break;
1105
+ }
1106
+ case "ArrowDown": {
1107
+ this.decrementValue(segmentType);
1108
+ break;
1109
+ }
1110
+ case "ArrowRight": {
1111
+ this.focusSegment(segmentElement, "next");
1112
+ break;
1113
+ }
1114
+ case "ArrowLeft": {
1115
+ this.focusSegment(segmentElement, "previous");
1116
+ break;
1117
+ }
1118
+ case "Enter":
1119
+ case "Space": {
1120
+ this.commitValue();
1121
+ break;
1122
+ }
1123
+ case "Backspace":
1124
+ case "Delete": {
1125
+ event.preventDefault();
1126
+ if (((_a = this.segments.getByType(segmentType)) == null ? void 0 : _a.value) === void 0)
1127
+ this.focusSegment(segmentElement, "previous");
1128
+ else this.clearSegmentContent(segmentType);
1129
+ break;
864
1130
  }
1131
+ }
865
1132
  }
866
1133
  /**
867
1134
  * The modifier parameters of the component
@@ -874,13 +1141,15 @@ class u extends fe(
874
1141
  currentDate: this.currentDate
875
1142
  };
876
1143
  }
877
- incrementValue(e) {
878
- const t = new ye(this.modifierParams);
879
- this.segments = t.modify(e), this.dispatchInput();
1144
+ incrementValue(segmentType) {
1145
+ const incrementModifier = new IncrementModifier(this.modifierParams);
1146
+ this.segments = incrementModifier.modify(segmentType);
1147
+ this.dispatchInput();
880
1148
  }
881
- decrementValue(e) {
882
- const t = new xe(this.modifierParams);
883
- this.segments = t.modify(e), this.dispatchInput();
1149
+ decrementValue(segmentType) {
1150
+ const decrementModifier = new DecrementModifier(this.modifierParams);
1151
+ this.segments = decrementModifier.modify(segmentType);
1152
+ this.dispatchInput();
884
1153
  }
885
1154
  /**
886
1155
  * Focuses the segment according to the direction, if there is one to focus on
@@ -888,13 +1157,19 @@ class u extends fe(
888
1157
  * @param segment - Segment on which the event was triggered (the segment being changed)
889
1158
  * @param elementToFocus - Defines which element will be focused: is it the previous one or the next one?
890
1159
  */
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)
1160
+ focusSegment(segment, elementToFocus) {
1161
+ let segmentFound = false;
1162
+ let currentSegment = segment;
1163
+ while (!segmentFound) {
1164
+ const siblingSegment = elementToFocus === "previous" ? currentSegment.previousElementSibling : currentSegment.nextElementSibling;
1165
+ if (!siblingSegment) {
896
1166
  break;
897
- r.getAttribute("contenteditable") && (r.focus(), i = !0), a = r;
1167
+ }
1168
+ if (siblingSegment.getAttribute("contenteditable")) {
1169
+ siblingSegment.focus();
1170
+ segmentFound = true;
1171
+ }
1172
+ currentSegment = siblingSegment;
898
1173
  }
899
1174
  }
900
1175
  /**
@@ -902,36 +1177,42 @@ class u extends fe(
902
1177
  * is different from the previous commited value, dispatch a change event.
903
1178
  */
904
1179
  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();
1180
+ if (this._value && this.previousCommitedValue && this._value.compare(this.previousCommitedValue) === 0)
1181
+ return;
1182
+ if (this._value === void 0 && this.previousCommitedValue === void 0) {
1183
+ const allSegmentsEmpty = this.segments.editableValues.every(
1184
+ (value) => value === void 0
1185
+ );
1186
+ this.invalid = allSegmentsEmpty ? false : true;
1187
+ return;
914
1188
  }
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({
1189
+ this.invalid = this._value === void 0 || this.isNonCompliantValue() ? true : false;
1190
+ this.previousCommitedValue = this._value;
1191
+ this.dispatchChange();
1192
+ }
1193
+ clearSegmentContent(segmentType) {
1194
+ const valuesBefore = this.segments.editableValues;
1195
+ const clearModifier = new ClearModifier(this.modifierParams);
1196
+ this.segments = clearModifier.modify(segmentType);
1197
+ const valuesAfter = this.segments.editableValues;
1198
+ if (!equalSegmentValues(valuesBefore, valuesAfter)) this.dispatchInput();
1199
+ }
1200
+ handleInput(event) {
1201
+ event.stopPropagation();
1202
+ const segmentType = event.target.dataset.type;
1203
+ const valuesBefore = this.segments.editableValues;
1204
+ const inputModifier = new InputModifier({
925
1205
  ...this.modifierParams,
926
- eventData: e.data,
1206
+ eventData: event.data,
927
1207
  numberParser: this.numberParser
928
1208
  });
929
- this.segments = a.modify(t), this.updateSegmentContent(
930
- this.segments.getByType(t),
931
- e.target
1209
+ this.segments = inputModifier.modify(segmentType);
1210
+ this.updateSegmentContent(
1211
+ this.segments.getByType(segmentType),
1212
+ event.target
932
1213
  );
933
- const r = this.segments.editableValues;
934
- R(i, r) || this.dispatchInput();
1214
+ const valuesAfter = this.segments.editableValues;
1215
+ if (!equalSegmentValues(valuesBefore, valuesAfter)) this.dispatchInput();
935
1216
  }
936
1217
  /**
937
1218
  * Updates the content of the segments by binding it to the `.innerText` property of the element,
@@ -941,79 +1222,105 @@ class u extends fe(
941
1222
  * @param segment - Segment on which the event was triggered (the segment being changed)
942
1223
  * @param event - Triggered event details
943
1224
  */
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() : "";
1225
+ updateSegmentContent(segment, segmentElement) {
1226
+ segmentElement.textContent = segment.value === void 0 ? segment.placeholder : segment.formatted;
1227
+ }
1228
+ createOutputString(value) {
1229
+ if (value) {
1230
+ if (isZonedDateTime(value))
1231
+ return this._value.toAbsoluteString();
1232
+ return new Date(this._value.toString()).toISOString();
1233
+ }
1234
+ return "";
949
1235
  }
950
1236
  dispatchChange() {
951
- const e = this.createOutputString(this._value);
1237
+ const value = this.createOutputString(this._value);
952
1238
  this.dispatchEvent(
953
1239
  new CustomEvent("change", {
954
- bubbles: !0,
955
- composed: !0,
956
- cancelable: !0,
1240
+ bubbles: true,
1241
+ composed: true,
1242
+ cancelable: true,
957
1243
  detail: {
958
- value: e
1244
+ value
959
1245
  }
960
1246
  })
961
1247
  );
962
1248
  }
963
1249
  dispatchInput() {
964
- const e = this.createOutputString(this._value);
1250
+ const value = this.createOutputString(this._value);
965
1251
  this.dispatchEvent(
966
1252
  new CustomEvent("input", {
967
- bubbles: !0,
968
- composed: !0,
969
- cancelable: !0,
1253
+ bubbles: true,
1254
+ composed: true,
1255
+ cancelable: true,
970
1256
  detail: {
971
- value: e
1257
+ value
972
1258
  }
973
1259
  })
974
1260
  );
975
1261
  }
976
1262
  setValueFromSegments() {
977
- const e = this.segments.getFormattedDate(this.precision);
978
- if (!e) {
979
- this._value && this.dispatchChange(), this._value = void 0;
1263
+ const formattedDate = this.segments.getFormattedDate(this.precision);
1264
+ if (!formattedDate) {
1265
+ if (this._value) this.dispatchChange();
1266
+ this._value = void 0;
980
1267
  return;
981
1268
  }
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;
1269
+ if (this._value === void 0) this.dispatchChange();
1270
+ const mostSpecificDateValue = this.mostSpecificDateValue;
1271
+ if (mostSpecificDateValue) {
1272
+ if (isZonedDateTime(mostSpecificDateValue))
1273
+ this._value = toZoned(formattedDate, this._timeZone);
1274
+ else if (isCalendarDateTime(mostSpecificDateValue))
1275
+ this._value = toCalendarDateTime(formattedDate);
1276
+ else this._value = toCalendarDate(formattedDate);
1277
+ } else {
1278
+ this._value = formattedDate;
1279
+ }
985
1280
  }
986
1281
  setSegments() {
987
- var i, a, r, s;
988
- const t = new Me(this.dateFormatter).createSegments(
1282
+ var _a, _b, _c, _d;
1283
+ const segmentsFactory = new SegmentsFactory(this.dateFormatter);
1284
+ const segments = segmentsFactory.createSegments(
989
1285
  this.currentDate,
990
1286
  this._value !== void 0
991
1287
  );
992
1288
  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
1289
+ const monthIndex = segments.all.findIndex(
1290
+ (d) => d.type === SegmentTypes.Month
1291
+ );
1292
+ const dayIndex = segments.all.findIndex(
1293
+ (d) => d.type === SegmentTypes.Day
997
1294
  );
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;
1295
+ if (monthIndex !== -1 && dayIndex !== -1) {
1296
+ if (this.dateFormat === "mmdd" && monthIndex > dayIndex) {
1297
+ const temp = segments.all[monthIndex];
1298
+ segments.all[monthIndex] = segments.all[dayIndex];
1299
+ segments.all[dayIndex] = temp;
1300
+ } else if (this.dateFormat === "ddmm" && dayIndex > monthIndex) {
1301
+ const temp = segments.all[dayIndex];
1302
+ segments.all[dayIndex] = segments.all[monthIndex];
1303
+ segments.all[monthIndex] = temp;
1005
1304
  }
1006
1305
  }
1007
1306
  }
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;
1307
+ if (typeof this.dateSeparator === "string" && this.dateSeparator) {
1308
+ if (((_b = (_a = segments.all) == null ? void 0 : _a[1]) == null ? void 0 : _b.type) === SegmentTypes.Literal) {
1309
+ segments.all[1].formatted = this.dateSeparator;
1310
+ }
1311
+ if (((_d = (_c = segments.all) == null ? void 0 : _c[3]) == null ? void 0 : _d.type) === SegmentTypes.Literal) {
1312
+ segments.all[3].formatted = this.dateSeparator;
1313
+ }
1314
+ }
1315
+ this.segments = segments;
1009
1316
  }
1010
1317
  setNumberParser() {
1011
- this.numberParser = new se(this._language, {
1318
+ this.numberParser = new NumberParser(this._language, {
1012
1319
  maximumFractionDigits: 0
1013
1320
  });
1014
1321
  }
1015
1322
  setDateFormatter() {
1016
- this.dateFormatter = new N(this._language, {
1323
+ this.dateFormatter = new DateFormatter(this._language, {
1017
1324
  day: "2-digit",
1018
1325
  month: "2-digit",
1019
1326
  year: "numeric",
@@ -1021,106 +1328,113 @@ class u extends fe(
1021
1328
  });
1022
1329
  }
1023
1330
  setAriaDateFormatter() {
1024
- this.ariaDateFormatter = new N(this._language, {
1331
+ this.ariaDateFormatter = new DateFormatter(this._language, {
1025
1332
  day: "numeric",
1026
1333
  month: "long",
1027
1334
  year: "numeric",
1028
1335
  ...this.getTimeOptions("numeric")
1029
1336
  });
1030
1337
  }
1031
- getTimeOptions(e) {
1338
+ getTimeOptions(digitType) {
1032
1339
  switch (this.precision) {
1033
- case p.Millisecond:
1340
+ case Precisions.Millisecond: {
1034
1341
  return {
1035
- hour: e,
1036
- minute: e,
1037
- second: e,
1342
+ hour: digitType,
1343
+ minute: digitType,
1344
+ second: digitType,
1038
1345
  fractionalSecondDigits: 3
1039
1346
  };
1040
- case p.Second:
1347
+ }
1348
+ case Precisions.Second: {
1041
1349
  return {
1042
- hour: e,
1043
- minute: e,
1044
- second: e
1350
+ hour: digitType,
1351
+ minute: digitType,
1352
+ second: digitType
1045
1353
  };
1046
- case p.Minute:
1354
+ }
1355
+ case Precisions.Minute: {
1047
1356
  return {
1048
- hour: e,
1049
- minute: e
1357
+ hour: digitType,
1358
+ minute: digitType
1050
1359
  };
1051
- case p.Hour:
1360
+ }
1361
+ case Precisions.Hour: {
1052
1362
  return {
1053
- hour: e
1363
+ hour: digitType
1054
1364
  };
1055
- default:
1365
+ }
1366
+ default: {
1056
1367
  return {};
1368
+ }
1057
1369
  }
1058
1370
  }
1059
1371
  }
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);
1372
+ __decorateClass([
1373
+ property({ type: String, reflect: true })
1374
+ ], LuzmoDateTimePicker.prototype, "value", 2);
1375
+ __decorateClass([
1376
+ property({ type: String, reflect: true })
1377
+ ], LuzmoDateTimePicker.prototype, "min", 2);
1378
+ __decorateClass([
1379
+ property({ type: String, reflect: true })
1380
+ ], LuzmoDateTimePicker.prototype, "max", 2);
1381
+ __decorateClass([
1382
+ property({ type: String, attribute: "date-format", reflect: true })
1383
+ ], LuzmoDateTimePicker.prototype, "dateFormat", 2);
1384
+ __decorateClass([
1385
+ property({ type: String, attribute: "date-separator", reflect: true })
1386
+ ], LuzmoDateTimePicker.prototype, "dateSeparator", 2);
1387
+ __decorateClass([
1388
+ property({ type: String, reflect: true })
1389
+ ], LuzmoDateTimePicker.prototype, "precision", 1);
1390
+ __decorateClass([
1391
+ property({ type: Boolean, reflect: true })
1392
+ ], LuzmoDateTimePicker.prototype, "invalid", 2);
1393
+ __decorateClass([
1394
+ property({ type: Boolean, reflect: true })
1395
+ ], LuzmoDateTimePicker.prototype, "readonly", 2);
1396
+ __decorateClass([
1397
+ property({ type: Boolean, reflect: true })
1398
+ ], LuzmoDateTimePicker.prototype, "quiet", 2);
1399
+ __decorateClass([
1400
+ property({ type: String, reflect: true })
1401
+ ], LuzmoDateTimePicker.prototype, "placement", 2);
1402
+ __decorateClass([
1403
+ property({ type: String, attribute: "time-zone", reflect: true })
1404
+ ], LuzmoDateTimePicker.prototype, "timeZone", 2);
1405
+ __decorateClass([
1406
+ property({ type: String, reflect: true })
1407
+ ], LuzmoDateTimePicker.prototype, "language", 2);
1408
+ __decorateClass([
1409
+ property({ attribute: false })
1410
+ ], LuzmoDateTimePicker.prototype, "labels", 2);
1411
+ __decorateClass([
1412
+ property({ type: Boolean, reflect: true })
1413
+ ], LuzmoDateTimePicker.prototype, "focused", 2);
1414
+ __decorateClass([
1415
+ state()
1416
+ ], LuzmoDateTimePicker.prototype, "_value", 2);
1417
+ __decorateClass([
1418
+ state()
1419
+ ], LuzmoDateTimePicker.prototype, "_min", 2);
1420
+ __decorateClass([
1421
+ state()
1422
+ ], LuzmoDateTimePicker.prototype, "_max", 2);
1423
+ __decorateClass([
1424
+ state()
1425
+ ], LuzmoDateTimePicker.prototype, "segments", 2);
1426
+ __decorateClass([
1427
+ state()
1428
+ ], LuzmoDateTimePicker.prototype, "isCalendarOpen", 2);
1429
+ __decorateClass([
1430
+ query(".editable-segment")
1431
+ ], LuzmoDateTimePicker.prototype, "firstEditableSegment", 2);
1432
+ __decorateClass([
1433
+ query(".input")
1434
+ ], LuzmoDateTimePicker.prototype, "input", 2);
1435
+ if (!customElements.get("luzmo-date-time-picker")) {
1436
+ customElements.define("luzmo-date-time-picker", LuzmoDateTimePicker);
1437
+ }
1124
1438
  export {
1125
- u as LuzmoDateTimePicker
1439
+ LuzmoDateTimePicker
1126
1440
  };