@nova-design-system/nova-webcomponents 3.0.0-beta.37 → 3.0.0-beta.39

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 (541) hide show
  1. package/dist/blazor-docs.json +996 -164
  2. package/dist/cjs/app-globals-3a1e7e63.js +7 -0
  3. package/dist/cjs/app-globals-3a1e7e63.js.map +1 -0
  4. package/dist/cjs/{constants-69b40456.js → constants-2ae3d9eb.js} +22 -2
  5. package/dist/cjs/constants-2ae3d9eb.js.map +1 -0
  6. package/dist/cjs/index-5910ba06.js +8 -4
  7. package/dist/cjs/index.cjs.js +24 -1
  8. package/dist/cjs/index.cjs.js.map +1 -1
  9. package/dist/cjs/loader.cjs.js +2 -2
  10. package/dist/cjs/native.cjs.js +2 -2
  11. package/dist/cjs/nv-alert.cjs.entry.js +1 -1
  12. package/dist/cjs/nv-avatar.cjs.entry.js +1 -1
  13. package/dist/cjs/nv-badge_2.cjs.entry.js +2 -2
  14. package/dist/cjs/nv-badge_2.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nv-button.cjs.entry.js +1 -1
  16. package/dist/cjs/nv-calendar.cjs.entry.js +984 -0
  17. package/dist/cjs/nv-calendar.cjs.entry.js.map +1 -0
  18. package/dist/cjs/nv-col.cjs.entry.js +1 -1
  19. package/dist/cjs/nv-datagrid.cjs.entry.js +2 -2
  20. package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
  21. package/dist/cjs/nv-datagridbody.cjs.entry.js +1 -1
  22. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +1 -1
  23. package/dist/cjs/nv-datagriddatacell.cjs.entry.js +1 -1
  24. package/dist/cjs/nv-datagridhead.cjs.entry.js +1 -1
  25. package/dist/cjs/nv-datagridrow.cjs.entry.js +1 -1
  26. package/dist/cjs/nv-dialog.cjs.entry.js +17 -4
  27. package/dist/cjs/nv-dialog.cjs.entry.js.map +1 -1
  28. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +2 -2
  29. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +10 -4
  30. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nv-fielddropdown.cjs.entry.js +146 -223
  32. package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
  33. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +37 -32
  34. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +12 -11
  36. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  37. package/dist/cjs/nv-fieldnumber.cjs.entry.js +10 -4
  38. package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
  39. package/dist/cjs/nv-fieldpassword.cjs.entry.js +10 -4
  40. package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
  41. package/dist/cjs/nv-fieldradio.cjs.entry.js +9 -3
  42. package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
  43. package/dist/cjs/nv-fieldselect.cjs.entry.js +11 -5
  44. package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
  45. package/dist/cjs/nv-fieldtext.cjs.entry.js +10 -4
  46. package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
  47. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +9 -3
  48. package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
  49. package/dist/cjs/nv-fieldtime.cjs.entry.js +20 -12
  50. package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -1
  51. package/dist/cjs/nv-icon.cjs.entry.js +20 -13
  52. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  53. package/dist/cjs/nv-iconbutton.cjs.entry.js +1 -1
  54. package/dist/cjs/nv-loader.cjs.entry.js +1 -1
  55. package/dist/cjs/nv-menu.cjs.entry.js +1 -1
  56. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  57. package/dist/cjs/nv-popover.cjs.entry.js +2 -2
  58. package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
  59. package/dist/cjs/nv-row.cjs.entry.js +1 -1
  60. package/dist/cjs/nv-stack.cjs.entry.js +1 -1
  61. package/dist/cjs/nv-table.cjs.entry.js +2 -2
  62. package/dist/cjs/nv-table.cjs.entry.js.map +1 -1
  63. package/dist/cjs/nv-tablebody.cjs.entry.js +1 -1
  64. package/dist/cjs/nv-tablecolumn.cjs.entry.js +1 -1
  65. package/dist/cjs/nv-tabledatacell.cjs.entry.js +1 -1
  66. package/dist/cjs/nv-tablehead.cjs.entry.js +1 -1
  67. package/dist/cjs/nv-tablerow.cjs.entry.js +1 -1
  68. package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
  69. package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
  70. package/dist/cjs/uri.utils-8523ad2b.js +26 -0
  71. package/dist/cjs/uri.utils-8523ad2b.js.map +1 -0
  72. package/dist/collection/collection-manifest.json +2 -2
  73. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.docs.js +1 -0
  74. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.docs.js.map +1 -1
  75. package/dist/collection/components/nv-calendar/nv-calendar.css +341 -0
  76. package/dist/collection/components/nv-calendar/nv-calendar.docs.js +401 -0
  77. package/dist/collection/components/nv-calendar/nv-calendar.docs.js.map +1 -0
  78. package/dist/collection/components/nv-calendar/nv-calendar.js +1328 -0
  79. package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -0
  80. package/dist/collection/components/nv-col/nv-col.js +1 -1
  81. package/dist/collection/components/nv-datagrid/nv-datagrid.js +5 -2
  82. package/dist/collection/components/nv-datagrid/nv-datagrid.js.map +1 -1
  83. package/dist/collection/components/nv-datagridbody/nv-datagridbody.js +1 -1
  84. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +1 -1
  85. package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.js +1 -1
  86. package/dist/collection/components/nv-datagridhead/nv-datagridhead.js +1 -1
  87. package/dist/collection/components/nv-datagridrow/nv-datagridrow.js +1 -1
  88. package/dist/collection/components/nv-dialog/nv-dialog.css +2 -0
  89. package/dist/collection/components/nv-dialog/nv-dialog.docs.js +6 -6
  90. package/dist/collection/components/nv-dialog/nv-dialog.docs.js.map +1 -1
  91. package/dist/collection/components/nv-dialog/nv-dialog.js +16 -3
  92. package/dist/collection/components/nv-dialog/nv-dialog.js.map +1 -1
  93. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js +1 -1
  94. package/dist/collection/components/nv-dialogheader/nv-dialogheader.js +1 -1
  95. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.docs.js +8 -0
  96. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.docs.js.map +1 -1
  97. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +30 -4
  98. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js.map +1 -1
  99. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +11 -3
  100. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
  101. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +197 -252
  102. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
  103. package/dist/collection/components/nv-fielddropdown/{nv-fielddropdown.css → styles/nv-fielddropdown.css} +10 -28
  104. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +55 -47
  105. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js.map +1 -1
  106. package/dist/collection/components/nv-fielddropdownitem/{nv-fielddropdownitem.css → styles/nv-fielddropdownitem.css} +12 -9
  107. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.css +7 -7
  108. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
  109. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.css +34 -17
  110. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +10 -2
  111. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
  112. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +34 -33
  113. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  114. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.css +2 -2
  115. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js +8 -0
  116. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js.map +1 -1
  117. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +29 -3
  118. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js.map +1 -1
  119. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.css +2 -2
  120. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js +8 -0
  121. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js.map +1 -1
  122. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +30 -4
  123. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js.map +1 -1
  124. package/dist/collection/components/nv-fieldradio/nv-fieldradio.docs.js +8 -0
  125. package/dist/collection/components/nv-fieldradio/nv-fieldradio.docs.js.map +1 -1
  126. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +29 -3
  127. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js.map +1 -1
  128. package/dist/collection/components/nv-fieldselect/nv-fieldselect.docs.js +8 -19
  129. package/dist/collection/components/nv-fieldselect/nv-fieldselect.docs.js.map +1 -1
  130. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +31 -5
  131. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js.map +1 -1
  132. package/dist/collection/components/nv-fieldtext/nv-fieldtext.css +2 -2
  133. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js +8 -0
  134. package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js.map +1 -1
  135. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +30 -4
  136. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js.map +1 -1
  137. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.docs.js +8 -0
  138. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.docs.js.map +1 -1
  139. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +29 -3
  140. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js.map +1 -1
  141. package/dist/collection/components/nv-fieldtime/nv-fieldtime.css +27 -24
  142. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js +9 -0
  143. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js.map +1 -1
  144. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +38 -10
  145. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -1
  146. package/dist/collection/components/nv-icon/nv-icon.js +19 -17
  147. package/dist/collection/components/nv-icon/nv-icon.js.map +1 -1
  148. package/dist/collection/components/nv-icon/nv-icons.js +21 -0
  149. package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
  150. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  151. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  152. package/dist/collection/components/nv-menu/nv-menu.js +1 -1
  153. package/dist/collection/components/nv-menuitem/nv-menuitem.js +2 -2
  154. package/dist/collection/components/nv-popover/nv-popover.css +3 -0
  155. package/dist/collection/components/nv-popover/nv-popover.js +1 -1
  156. package/dist/collection/components/nv-row/nv-row.js +1 -1
  157. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  158. package/dist/collection/components/nv-table/nv-table.js +5 -2
  159. package/dist/collection/components/nv-table/nv-table.js.map +1 -1
  160. package/dist/collection/components/nv-tablebody/nv-tablebody.js +1 -1
  161. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js +1 -1
  162. package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.js +1 -1
  163. package/dist/collection/components/nv-tablehead/nv-tablehead.js +1 -1
  164. package/dist/collection/components/nv-tablerow/nv-tablerow.js +1 -1
  165. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  166. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  167. package/dist/collection/index.js +2 -0
  168. package/dist/collection/index.js.map +1 -1
  169. package/dist/collection/interfaces/calendarShortcut.js +2 -0
  170. package/dist/collection/interfaces/calendarShortcut.js.map +1 -0
  171. package/dist/collection/interfaces/dateRange.js +2 -0
  172. package/dist/collection/interfaces/dateRange.js.map +1 -0
  173. package/dist/collection/interfaces/localization.js +2 -0
  174. package/dist/collection/interfaces/localization.js.map +1 -0
  175. package/dist/collection/templates/navigation.docs.js +6 -0
  176. package/dist/collection/templates/navigation.docs.js.map +1 -1
  177. package/dist/collection/utils/constants.js +18 -0
  178. package/dist/collection/utils/constants.js.map +1 -1
  179. package/dist/collection/utils/test/uri.utils.test.js +21 -0
  180. package/dist/collection/utils/test/uri.utils.test.js.map +1 -0
  181. package/dist/collection/utils/uri.utils.js +15 -0
  182. package/dist/collection/utils/uri.utils.js.map +1 -0
  183. package/dist/components/index.js +24 -2
  184. package/dist/components/index.js.map +1 -1
  185. package/dist/components/nv-alert.js +2 -2
  186. package/dist/components/nv-avatar.js +2 -2
  187. package/dist/components/nv-badge.js +1 -1
  188. package/dist/components/nv-breadcrumb.js +2 -2
  189. package/dist/components/nv-button.js +1 -1
  190. package/dist/components/nv-calendar.d.ts +11 -0
  191. package/dist/components/nv-calendar.js +1046 -0
  192. package/dist/components/nv-calendar.js.map +1 -0
  193. package/dist/components/nv-col.js +1 -1
  194. package/dist/components/nv-datagrid.js +2 -2
  195. package/dist/components/nv-datagrid.js.map +1 -1
  196. package/dist/components/nv-datagridbody.js +1 -1
  197. package/dist/components/nv-datagridcolumn.js +1 -1
  198. package/dist/components/nv-datagriddatacell.js +1 -1
  199. package/dist/components/nv-datagridhead.js +1 -1
  200. package/dist/components/nv-datagridrow.js +1 -1
  201. package/dist/components/nv-dialog.js +22 -9
  202. package/dist/components/nv-dialog.js.map +1 -1
  203. package/dist/components/nv-dialogfooter.js +1 -1
  204. package/dist/components/nv-dialogheader.js +1 -1
  205. package/dist/components/nv-fieldcheckbox.js +1 -1
  206. package/dist/components/nv-fielddropdown.js +154 -230
  207. package/dist/components/nv-fielddropdown.js.map +1 -1
  208. package/dist/components/nv-fielddropdownitem.js +1 -1
  209. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  210. package/dist/components/nv-fieldmultiselect.js +21 -19
  211. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  212. package/dist/components/nv-fieldnumber.js +13 -6
  213. package/dist/components/nv-fieldnumber.js.map +1 -1
  214. package/dist/components/nv-fieldpassword.js +14 -7
  215. package/dist/components/nv-fieldpassword.js.map +1 -1
  216. package/dist/components/nv-fieldradio.js +11 -4
  217. package/dist/components/nv-fieldradio.js.map +1 -1
  218. package/dist/components/nv-fieldselect.js +13 -6
  219. package/dist/components/nv-fieldselect.js.map +1 -1
  220. package/dist/components/nv-fieldtext.js +13 -6
  221. package/dist/components/nv-fieldtext.js.map +1 -1
  222. package/dist/components/nv-fieldtextarea.js +11 -4
  223. package/dist/components/nv-fieldtextarea.js.map +1 -1
  224. package/dist/components/nv-fieldtime.js +25 -16
  225. package/dist/components/nv-fieldtime.js.map +1 -1
  226. package/dist/components/nv-icon.js +1 -1
  227. package/dist/components/nv-iconbutton.js +1 -1
  228. package/dist/components/nv-loader.js +1 -1
  229. package/dist/components/nv-menu.js +4 -4
  230. package/dist/components/nv-menuitem.js +1 -1
  231. package/dist/components/nv-popover.js +1 -1
  232. package/dist/components/nv-row.js +1 -1
  233. package/dist/components/nv-stack.js +1 -1
  234. package/dist/components/nv-table.js +2 -2
  235. package/dist/components/nv-table.js.map +1 -1
  236. package/dist/components/nv-tablebody.js +1 -1
  237. package/dist/components/nv-tablecolumn.js +1 -1
  238. package/dist/components/nv-tabledatacell.js +1 -1
  239. package/dist/components/nv-tablehead.js +1 -1
  240. package/dist/components/nv-tablerow.js +1 -1
  241. package/dist/components/nv-toggle.js +2 -2
  242. package/dist/components/nv-tooltip.js +1 -1
  243. package/dist/components/{p-de8411ee.js → p-17b6705f.js} +5 -5
  244. package/dist/components/{p-de8411ee.js.map → p-17b6705f.js.map} +1 -1
  245. package/dist/components/{p-2768d2c0.js → p-33e07c91.js} +2 -2
  246. package/dist/components/{p-2768d2c0.js.map → p-33e07c91.js.map} +1 -1
  247. package/dist/components/{p-3859dc5c.js → p-48317c2c.js} +4 -4
  248. package/dist/components/p-48317c2c.js.map +1 -0
  249. package/dist/components/{p-a9a52105.js → p-492ad81d.js} +1178 -5
  250. package/dist/components/p-492ad81d.js.map +1 -0
  251. package/dist/components/p-5f5e2bf2.js +88 -0
  252. package/dist/components/p-5f5e2bf2.js.map +1 -0
  253. package/dist/components/{p-e431a0ad.js → p-659a5ae4.js} +4 -4
  254. package/dist/components/{p-e431a0ad.js.map → p-659a5ae4.js.map} +1 -1
  255. package/dist/components/{p-18d221e3.js → p-73e703a1.js} +2 -2
  256. package/dist/components/{p-18d221e3.js.map → p-73e703a1.js.map} +1 -1
  257. package/dist/components/p-7e58e7d1.js +23 -0
  258. package/dist/components/p-7e58e7d1.js.map +1 -0
  259. package/dist/components/{p-16badb3b.js → p-83e1177b.js} +3 -3
  260. package/dist/components/{p-16badb3b.js.map → p-83e1177b.js.map} +1 -1
  261. package/dist/components/{p-2baea6ba.js → p-842afd9a.js} +3 -3
  262. package/dist/components/{p-2baea6ba.js.map → p-842afd9a.js.map} +1 -1
  263. package/dist/components/{p-4938572a.js → p-88165c0e.js} +2 -2
  264. package/dist/components/{p-4938572a.js.map → p-88165c0e.js.map} +1 -1
  265. package/dist/components/{p-91bf0cb6.js → p-8d7a57d1.js} +3 -3
  266. package/dist/components/{p-91bf0cb6.js.map → p-8d7a57d1.js.map} +1 -1
  267. package/dist/components/p-c1765831.js +89 -0
  268. package/dist/components/p-c1765831.js.map +1 -0
  269. package/dist/components/p-f40a7e2f.js +95 -0
  270. package/dist/components/p-f40a7e2f.js.map +1 -0
  271. package/dist/{esm/constants-0181211f.js → components/p-fd65c51f.js} +22 -3
  272. package/dist/components/p-fd65c51f.js.map +1 -0
  273. package/dist/components/{p-98ff0e5f.js → p-fdf57d25.js} +13 -6
  274. package/dist/components/p-fdf57d25.js.map +1 -0
  275. package/dist/docs.json +972 -147
  276. package/dist/esm/app-globals-0f993ce5.js +5 -0
  277. package/dist/esm/app-globals-0f993ce5.js.map +1 -0
  278. package/dist/{components/p-56f71851.js → esm/constants-8243d2ea.js} +22 -3
  279. package/dist/esm/constants-8243d2ea.js.map +1 -0
  280. package/dist/esm/index-fac2d5d2.js +8 -4
  281. package/dist/esm/index.js +23 -1
  282. package/dist/esm/index.js.map +1 -1
  283. package/dist/esm/loader.js +2 -2
  284. package/dist/esm/native.js +2 -2
  285. package/dist/esm/nv-alert.entry.js +1 -1
  286. package/dist/esm/nv-avatar.entry.js +1 -1
  287. package/dist/esm/nv-badge_2.entry.js +2 -2
  288. package/dist/esm/nv-badge_2.entry.js.map +1 -1
  289. package/dist/esm/nv-button.entry.js +1 -1
  290. package/dist/esm/nv-calendar.entry.js +980 -0
  291. package/dist/esm/nv-calendar.entry.js.map +1 -0
  292. package/dist/esm/nv-col.entry.js +1 -1
  293. package/dist/esm/nv-datagrid.entry.js +2 -2
  294. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  295. package/dist/esm/nv-datagridbody.entry.js +1 -1
  296. package/dist/esm/nv-datagridcolumn.entry.js +1 -1
  297. package/dist/esm/nv-datagriddatacell.entry.js +1 -1
  298. package/dist/esm/nv-datagridhead.entry.js +1 -1
  299. package/dist/esm/nv-datagridrow.entry.js +1 -1
  300. package/dist/esm/nv-dialog.entry.js +17 -4
  301. package/dist/esm/nv-dialog.entry.js.map +1 -1
  302. package/dist/esm/nv-dialogfooter_2.entry.js +2 -2
  303. package/dist/esm/nv-fieldcheckbox.entry.js +10 -4
  304. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  305. package/dist/esm/nv-fielddropdown.entry.js +146 -223
  306. package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
  307. package/dist/esm/nv-fielddropdownitem.entry.js +37 -32
  308. package/dist/esm/nv-fielddropdownitem.entry.js.map +1 -1
  309. package/dist/esm/nv-fieldmultiselect.entry.js +12 -11
  310. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  311. package/dist/esm/nv-fieldnumber.entry.js +10 -4
  312. package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
  313. package/dist/esm/nv-fieldpassword.entry.js +10 -4
  314. package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
  315. package/dist/esm/nv-fieldradio.entry.js +9 -3
  316. package/dist/esm/nv-fieldradio.entry.js.map +1 -1
  317. package/dist/esm/nv-fieldselect.entry.js +11 -5
  318. package/dist/esm/nv-fieldselect.entry.js.map +1 -1
  319. package/dist/esm/nv-fieldtext.entry.js +10 -4
  320. package/dist/esm/nv-fieldtext.entry.js.map +1 -1
  321. package/dist/esm/nv-fieldtextarea.entry.js +9 -3
  322. package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
  323. package/dist/esm/nv-fieldtime.entry.js +20 -12
  324. package/dist/esm/nv-fieldtime.entry.js.map +1 -1
  325. package/dist/esm/nv-icon.entry.js +20 -13
  326. package/dist/esm/nv-icon.entry.js.map +1 -1
  327. package/dist/esm/nv-iconbutton.entry.js +1 -1
  328. package/dist/esm/nv-loader.entry.js +1 -1
  329. package/dist/esm/nv-menu.entry.js +1 -1
  330. package/dist/esm/nv-menuitem.entry.js +1 -1
  331. package/dist/esm/nv-popover.entry.js +2 -2
  332. package/dist/esm/nv-popover.entry.js.map +1 -1
  333. package/dist/esm/nv-row.entry.js +1 -1
  334. package/dist/esm/nv-stack.entry.js +1 -1
  335. package/dist/esm/nv-table.entry.js +2 -2
  336. package/dist/esm/nv-table.entry.js.map +1 -1
  337. package/dist/esm/nv-tablebody.entry.js +1 -1
  338. package/dist/esm/nv-tablecolumn.entry.js +1 -1
  339. package/dist/esm/nv-tabledatacell.entry.js +1 -1
  340. package/dist/esm/nv-tablehead.entry.js +1 -1
  341. package/dist/esm/nv-tablerow.entry.js +1 -1
  342. package/dist/esm/nv-toggle.entry.js +2 -2
  343. package/dist/esm/nv-tooltip.entry.js +1 -1
  344. package/dist/esm/uri.utils-4c2a1e4c.js +23 -0
  345. package/dist/esm/uri.utils-4c2a1e4c.js.map +1 -0
  346. package/dist/native/index.esm.js +1 -1
  347. package/dist/native/index.esm.js.map +1 -1
  348. package/dist/native/native.css +1 -1
  349. package/dist/native/native.esm.js +1 -1
  350. package/dist/native/native.esm.js.map +1 -1
  351. package/dist/native/{p-4d0caf4a.entry.js → p-1bae8cdd.entry.js} +2 -2
  352. package/dist/native/{p-4d0caf4a.entry.js.map → p-1bae8cdd.entry.js.map} +1 -1
  353. package/dist/native/{p-8c1a6aa6.entry.js → p-1ca72f74.entry.js} +2 -2
  354. package/dist/native/{p-d67b7502.entry.js → p-2151f564.entry.js} +2 -2
  355. package/dist/native/{p-87083363.entry.js → p-2b99e720.entry.js} +2 -2
  356. package/dist/native/{p-87083363.entry.js.map → p-2b99e720.entry.js.map} +1 -1
  357. package/dist/native/p-3422397d.entry.js +2 -0
  358. package/dist/native/{p-e3827605.entry.js → p-39b4ec02.entry.js} +2 -2
  359. package/dist/native/p-39b4ec02.entry.js.map +1 -0
  360. package/dist/native/{p-9ac790b3.entry.js → p-3b2c7871.entry.js} +2 -2
  361. package/dist/native/{p-9ac790b3.entry.js.map → p-3b2c7871.entry.js.map} +1 -1
  362. package/dist/native/{p-51ad8bcd.entry.js → p-3bfd5a30.entry.js} +2 -2
  363. package/dist/native/p-3bfd5a30.entry.js.map +1 -0
  364. package/dist/native/p-44e7e3e8.entry.js +2 -0
  365. package/dist/native/p-44e7e3e8.entry.js.map +1 -0
  366. package/dist/native/p-46c9aa04.entry.js +2 -0
  367. package/dist/native/p-46c9aa04.entry.js.map +1 -0
  368. package/dist/native/p-4a7fa613.entry.js +2 -0
  369. package/dist/native/{p-96902bb3.entry.js.map → p-4a7fa613.entry.js.map} +1 -1
  370. package/dist/native/{p-e192c25c.entry.js → p-4db7add6.entry.js} +2 -2
  371. package/dist/native/{p-a998f8df.entry.js → p-4eacd598.entry.js} +2 -2
  372. package/dist/native/p-51e0c5d3.entry.js +2 -0
  373. package/dist/native/{p-2aebf31b.entry.js.map → p-51e0c5d3.entry.js.map} +1 -1
  374. package/dist/native/p-57513eb0.entry.js +2 -0
  375. package/dist/native/{p-ab5a8ce5.entry.js.map → p-57513eb0.entry.js.map} +1 -1
  376. package/dist/native/p-5851fbed.entry.js +2 -0
  377. package/dist/native/{p-61d2cb2e.entry.js → p-634b49fe.entry.js} +2 -2
  378. package/dist/native/{p-211f7b19.entry.js → p-63c894f0.entry.js} +2 -2
  379. package/dist/native/p-6acbf729.entry.js +2 -0
  380. package/dist/native/p-6acbf729.entry.js.map +1 -0
  381. package/dist/native/p-7211a3cb.entry.js +7 -0
  382. package/dist/native/p-7211a3cb.entry.js.map +1 -0
  383. package/dist/native/p-79765c7d.entry.js +2 -0
  384. package/dist/native/p-7e58e7d1.js +2 -0
  385. package/dist/native/p-7e58e7d1.js.map +1 -0
  386. package/dist/native/{p-3c004551.entry.js → p-833af1bf.entry.js} +2 -2
  387. package/dist/native/p-833af1bf.entry.js.map +1 -0
  388. package/dist/native/p-87bd53df.entry.js +2 -0
  389. package/dist/native/p-87bd53df.entry.js.map +1 -0
  390. package/dist/native/p-8b323a15.entry.js +2 -0
  391. package/dist/native/{p-10ba289c.entry.js.map → p-8b323a15.entry.js.map} +1 -1
  392. package/dist/native/p-943a19a5.entry.js +2 -0
  393. package/dist/native/{p-8ee30013.entry.js.map → p-943a19a5.entry.js.map} +1 -1
  394. package/dist/native/{p-6d68f133.entry.js → p-9c8eadde.entry.js} +2 -2
  395. package/dist/native/p-9c8eadde.entry.js.map +1 -0
  396. package/dist/native/p-ac81e143.entry.js +2 -0
  397. package/dist/native/p-ac81e143.entry.js.map +1 -0
  398. package/dist/native/{p-99e7a452.entry.js → p-afc16010.entry.js} +2 -2
  399. package/dist/native/p-afc16010.entry.js.map +1 -0
  400. package/dist/native/p-b13b2663.entry.js +2 -0
  401. package/dist/native/p-b13b2663.entry.js.map +1 -0
  402. package/dist/native/p-b2ace8e9.entry.js +2 -0
  403. package/dist/native/p-b2ace8e9.entry.js.map +1 -0
  404. package/dist/native/{p-4f11286d.entry.js → p-bac62e20.entry.js} +2 -2
  405. package/dist/native/{p-46553ffd.entry.js → p-bfb6e22c.entry.js} +2 -2
  406. package/dist/native/p-c29be15d.entry.js +2 -0
  407. package/dist/native/{p-aa2834e2.entry.js.map → p-c29be15d.entry.js.map} +1 -1
  408. package/dist/native/p-cba14168.entry.js +2 -0
  409. package/dist/native/p-cba14168.entry.js.map +1 -0
  410. package/dist/native/p-dbb89408.entry.js +2 -0
  411. package/dist/native/p-e1255160.js +2 -0
  412. package/dist/native/p-e1255160.js.map +1 -0
  413. package/dist/native/p-e1b22ca7.entry.js +2 -0
  414. package/dist/native/p-e1b22ca7.entry.js.map +1 -0
  415. package/dist/native/{p-d776ed48.entry.js → p-ef9b66d4.entry.js} +2 -2
  416. package/dist/native/p-f867541d.entry.js +2 -0
  417. package/dist/native/p-f954a077.entry.js +2 -0
  418. package/dist/native/{p-f30ce086.entry.js.map → p-f954a077.entry.js.map} +1 -1
  419. package/dist/native/{p-d24586ed.entry.js → p-fa33ec18.entry.js} +2 -2
  420. package/dist/native/{p-56f71851.js → p-fd65c51f.js} +2 -2
  421. package/dist/native/p-fd65c51f.js.map +1 -0
  422. package/dist/native/p-ff7eea0e.entry.js +2 -0
  423. package/dist/types/components/nv-calendar/nv-calendar.d.ts +383 -0
  424. package/dist/types/components/nv-calendar/nv-calendar.docs.d.ts +4 -0
  425. package/dist/types/components/nv-datagrid/nv-datagrid.d.ts +3 -0
  426. package/dist/types/components/nv-dialog/nv-dialog.d.ts +8 -0
  427. package/dist/types/components/nv-fieldcheckbox/nv-fieldcheckbox.d.ts +6 -0
  428. package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +45 -62
  429. package/dist/types/components/nv-fielddropdownitem/nv-fielddropdownitem.d.ts +27 -13
  430. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +7 -10
  431. package/dist/types/components/nv-fieldnumber/nv-fieldnumber.d.ts +6 -0
  432. package/dist/types/components/nv-fieldpassword/nv-fieldpassword.d.ts +6 -0
  433. package/dist/types/components/nv-fieldradio/nv-fieldradio.d.ts +6 -0
  434. package/dist/types/components/nv-fieldselect/nv-fieldselect.d.ts +6 -0
  435. package/dist/types/components/nv-fieldtext/nv-fieldtext.d.ts +6 -0
  436. package/dist/types/components/nv-fieldtextarea/nv-fieldtextarea.d.ts +6 -0
  437. package/dist/types/components/nv-fieldtime/nv-fieldtime.d.ts +6 -0
  438. package/dist/types/components/nv-icon/nv-icon.d.ts +6 -4
  439. package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
  440. package/dist/types/components/nv-table/nv-table.d.ts +3 -0
  441. package/dist/types/components.d.ts +316 -28
  442. package/dist/types/index.d.ts +4 -0
  443. package/dist/types/interfaces/calendarShortcut.d.ts +17 -0
  444. package/dist/types/interfaces/dateRange.d.ts +13 -0
  445. package/dist/types/interfaces/localization.d.ts +9 -0
  446. package/dist/types/nova-docs.d.ts +1 -0
  447. package/dist/types/utils/constants.d.ts +2 -0
  448. package/dist/types/utils/uri.utils.d.ts +6 -0
  449. package/dist/vscode-data.json +243 -56
  450. package/hydrate/index.js +2545 -1507
  451. package/hydrate/index.mjs +2545 -1507
  452. package/package.json +11 -3
  453. package/dist/cjs/app-globals-bd4d701e.js +0 -11
  454. package/dist/cjs/app-globals-bd4d701e.js.map +0 -1
  455. package/dist/cjs/constants-69b40456.js.map +0 -1
  456. package/dist/collection/components/nv-fielddropdownitem/DropdownItemSelectedEventDetail.js +0 -2
  457. package/dist/collection/components/nv-fielddropdownitem/DropdownItemSelectedEventDetail.js.map +0 -1
  458. package/dist/collection/dev/dev-components.js +0 -3
  459. package/dist/collection/dev/dev-components.js.map +0 -1
  460. package/dist/collection/dev/dev-forms.js +0 -3
  461. package/dist/collection/dev/dev-forms.js.map +0 -1
  462. package/dist/collection/dev/dev-root.js +0 -23
  463. package/dist/collection/dev/dev-root.js.map +0 -1
  464. package/dist/collection/dev/dev-utils.js +0 -54
  465. package/dist/collection/dev/dev-utils.js.map +0 -1
  466. package/dist/collection/global.js +0 -6
  467. package/dist/collection/global.js.map +0 -1
  468. package/dist/components/p-11fcdad9.js +0 -90
  469. package/dist/components/p-11fcdad9.js.map +0 -1
  470. package/dist/components/p-17714233.js +0 -1263
  471. package/dist/components/p-17714233.js.map +0 -1
  472. package/dist/components/p-3859dc5c.js.map +0 -1
  473. package/dist/components/p-56f71851.js.map +0 -1
  474. package/dist/components/p-98ff0e5f.js.map +0 -1
  475. package/dist/components/p-a01bdf02.js +0 -82
  476. package/dist/components/p-a01bdf02.js.map +0 -1
  477. package/dist/components/p-a9a52105.js.map +0 -1
  478. package/dist/esm/app-globals-0a94217b.js +0 -9
  479. package/dist/esm/app-globals-0a94217b.js.map +0 -1
  480. package/dist/esm/constants-0181211f.js.map +0 -1
  481. package/dist/native/p-02bb8184.entry.js +0 -2
  482. package/dist/native/p-10ba289c.entry.js +0 -2
  483. package/dist/native/p-208accf0.entry.js +0 -2
  484. package/dist/native/p-208accf0.entry.js.map +0 -1
  485. package/dist/native/p-2aebf31b.entry.js +0 -2
  486. package/dist/native/p-3a8a9371.entry.js +0 -2
  487. package/dist/native/p-3a8a9371.entry.js.map +0 -1
  488. package/dist/native/p-3c004551.entry.js.map +0 -1
  489. package/dist/native/p-51ad8bcd.entry.js.map +0 -1
  490. package/dist/native/p-56f71851.js.map +0 -1
  491. package/dist/native/p-6d68f133.entry.js.map +0 -1
  492. package/dist/native/p-724ed8d7.entry.js +0 -7
  493. package/dist/native/p-724ed8d7.entry.js.map +0 -1
  494. package/dist/native/p-75b1ea9f.entry.js +0 -2
  495. package/dist/native/p-75b1ea9f.entry.js.map +0 -1
  496. package/dist/native/p-892052c2.entry.js +0 -2
  497. package/dist/native/p-8ee30013.entry.js +0 -2
  498. package/dist/native/p-96902bb3.entry.js +0 -2
  499. package/dist/native/p-99e7a452.entry.js.map +0 -1
  500. package/dist/native/p-9fb5db20.entry.js +0 -2
  501. package/dist/native/p-9fb5db20.entry.js.map +0 -1
  502. package/dist/native/p-aa2834e2.entry.js +0 -2
  503. package/dist/native/p-ab5a8ce5.entry.js +0 -2
  504. package/dist/native/p-bfeda21c.entry.js +0 -2
  505. package/dist/native/p-bfeda21c.entry.js.map +0 -1
  506. package/dist/native/p-c51ee6dc.entry.js +0 -2
  507. package/dist/native/p-c51ee6dc.entry.js.map +0 -1
  508. package/dist/native/p-d4e56727.entry.js +0 -2
  509. package/dist/native/p-d4e56727.entry.js.map +0 -1
  510. package/dist/native/p-dc9dd5a7.entry.js +0 -2
  511. package/dist/native/p-e3827605.entry.js.map +0 -1
  512. package/dist/native/p-e5a7596b.entry.js +0 -2
  513. package/dist/native/p-e6f45df2.entry.js +0 -2
  514. package/dist/native/p-ed47a702.entry.js +0 -2
  515. package/dist/native/p-f30ce086.entry.js +0 -2
  516. package/dist/native/p-f3fbdea6.js +0 -2
  517. package/dist/native/p-f3fbdea6.js.map +0 -1
  518. package/dist/native/p-fd2955dd.entry.js +0 -2
  519. package/dist/native/p-fd2955dd.entry.js.map +0 -1
  520. package/dist/types/components/nv-fielddropdownitem/DropdownItemSelectedEventDetail.d.ts +0 -21
  521. package/dist/types/dev/dev-components.d.ts +0 -2
  522. package/dist/types/dev/dev-forms.d.ts +0 -2
  523. package/dist/types/dev/dev-utils.d.ts +0 -17
  524. package/dist/types/global.d.ts +0 -1
  525. /package/dist/native/{p-8c1a6aa6.entry.js.map → p-1ca72f74.entry.js.map} +0 -0
  526. /package/dist/native/{p-d67b7502.entry.js.map → p-2151f564.entry.js.map} +0 -0
  527. /package/dist/native/{p-dc9dd5a7.entry.js.map → p-3422397d.entry.js.map} +0 -0
  528. /package/dist/native/{p-e192c25c.entry.js.map → p-4db7add6.entry.js.map} +0 -0
  529. /package/dist/native/{p-a998f8df.entry.js.map → p-4eacd598.entry.js.map} +0 -0
  530. /package/dist/native/{p-e5a7596b.entry.js.map → p-5851fbed.entry.js.map} +0 -0
  531. /package/dist/native/{p-61d2cb2e.entry.js.map → p-634b49fe.entry.js.map} +0 -0
  532. /package/dist/native/{p-211f7b19.entry.js.map → p-63c894f0.entry.js.map} +0 -0
  533. /package/dist/native/{p-e6f45df2.entry.js.map → p-79765c7d.entry.js.map} +0 -0
  534. /package/dist/native/{p-4f11286d.entry.js.map → p-bac62e20.entry.js.map} +0 -0
  535. /package/dist/native/{p-46553ffd.entry.js.map → p-bfb6e22c.entry.js.map} +0 -0
  536. /package/dist/native/{p-02bb8184.entry.js.map → p-dbb89408.entry.js.map} +0 -0
  537. /package/dist/native/{p-d776ed48.entry.js.map → p-ef9b66d4.entry.js.map} +0 -0
  538. /package/dist/native/{p-ed47a702.entry.js.map → p-f867541d.entry.js.map} +0 -0
  539. /package/dist/native/{p-d24586ed.entry.js.map → p-fa33ec18.entry.js.map} +0 -0
  540. /package/dist/native/{p-892052c2.entry.js.map → p-ff7eea0e.entry.js.map} +0 -0
  541. /package/dist/types/{dev/dev-root.d.ts → utils/test/uri.utils.test.d.ts} +0 -0
@@ -77,6 +77,12 @@ export class NvFieldtime {
77
77
  * This affects how the time changes when using arrow keys or spinners.
78
78
  */
79
79
  this.step = 60000; // In secondes
80
+ /**
81
+ * Applies focus to the input field as soon as the component is mounted. This
82
+ * is equivalent to setting the native autofocus attribute on an <input>
83
+ * element.
84
+ */
85
+ this.autofocus = false;
80
86
  }
81
87
  //#endregion EVENTS
82
88
  /****************************************************************************/
@@ -955,30 +961,32 @@ export class NvFieldtime {
955
961
  RenderTimeOptionsColumn(type) {
956
962
  return (h("div", { class: `time-column time-column-${type}`, onScroll: e => this.handleScroll(e, type) }, this.generateInfiniteTimeOptions(type).map((option, index) => (h("div", { class: {
957
963
  'time-option': true,
958
- 'selected': option === this.hours,
964
+ 'selected': (type === TimeType.Hours && option === this.hours) ||
965
+ (type === TimeType.Minutes && option === this.minutes) ||
966
+ (type === TimeType.Seconds && option === this.seconds),
959
967
  }, key: `${option}-${index}`, onClick: e => this.handleTimeOptionClick(e, type) }, option)))));
960
968
  }
961
969
  render() {
962
- return (h(Host, { key: '4eefb9bb8c2bfd63cc229cb9d3f5e51dbe2f5351', onclick: e => this.handleHostClick(e) }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: '8b191f1bca869f85b6186a3cfa66d8f9d886dc07', htmlFor: this.inputId }, h("slot", { key: '84438c62746d81ccf65d76a40ac62e8d445adcf0', name: "label" }, this.label))), h("nv-popover", { key: '1cc212b0ae814a50a288c195d1b7aa7b378f452a', ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, h("div", { key: '1584b3842cbd13989cdd5492baa0588a8aa0015e', class: "input-wrapper", slot: "trigger" }, h("slot", { key: '3f747181762dee542935fa5ee614a315e1aa8413', name: "before-input" }), h("div", { key: '93f2329aa6a09bad318d2a461e87d69fcff8df30', class: "input-container" }, h("slot", { key: '13d2b3f6e3868065cf982690f35996f2f652403b', name: "leading-input" }), startsWithIgnoreCase(this.format, 'HH') && [
963
- h("input", { key: 'a15dd9dab27ed4918b81680718601d57bac56f2c', ref: el => (this.inputElements[TimeType.Hours] = el), type: "number", class: "time-input", pattern: "[0-9]*", maxlength: "3", value: this.hours, onInput: e => this.handleInputChange(e, TimeType.Hours), placeholder: this.format.includes('hh') ? 'hh' : 'HH', inputMode: "numeric", onFocus: () => this.handleFocus(TimeType.Hours), name: this.name
970
+ return (h(Host, { key: '35ff4b2a7eb1eb3f2503eec2216f0acf8a4087b7', onclick: e => this.handleHostClick(e) }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: 'a137feb35c8ac11429c0ec5226ce02a4ad8c188f', htmlFor: this.inputId }, h("slot", { key: 'cdffe9bec4c87fabe1fd37dba0783d2d1389393d', name: "label" }, this.label))), h("nv-popover", { key: '9735238d52307520ab18519f85c7b91e29095564', ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, h("div", { key: '7b15d62b4a49ad6dc1cb6f487bd9e32678aab32b', class: "input-wrapper", slot: "trigger" }, h("slot", { key: '6d29417ed7997302d22ab883b8e16eea576a6970', name: "before-input" }), h("div", { key: '0ea68d72d9360a76dbbd9670dcc76ed40df7d817', class: "input-container" }, h("slot", { key: '145986a835cc308f6691df969411a23bca0765ab', name: "leading-input" }), startsWithIgnoreCase(this.format, 'HH') && [
971
+ h("input", { key: '62f50adf4dd6bd8a1daa795808443a73ba907910', ref: el => (this.inputElements[TimeType.Hours] = el), type: "number", autofocus: this.autofocus, class: "time-input", pattern: "[0-9]*", maxlength: "3", value: this.hours, onInput: e => this.handleInputChange(e, TimeType.Hours), placeholder: this.format.includes('hh') ? 'hh' : 'HH', inputMode: "numeric", onFocus: () => this.handleFocus(TimeType.Hours), name: this.name
964
972
  ? `${TimeType.Hours}-${this.name}`
965
973
  : TimeType.Hours, id: this.inputId, readonly: this.readonly, disabled: this.disabled, required: this.required, onKeyDown: e => this.handleKeyDown(e), onBlur: () => this.handleInputBlur() }),
966
974
  ], this.format.includes('mm') && [
967
- h("span", { key: '0cae25476bdb8a8d70c2d0bb94bffa20e23879a7' }, ":"),
968
- h("input", { key: 'bc6b4ff8a8eda66d51726d34d6aedc43e304c670', ref: el => (this.inputElements[TimeType.Minutes] = el), type: "number", class: "time-input", pattern: "[0-9]*", maxlength: "3", value: this.minutes, onInput: e => this.handleInputChange(e, TimeType.Minutes), placeholder: "mm", inputMode: "numeric", onFocus: () => this.handleFocus(TimeType.Minutes), name: this.name
975
+ h("span", { key: '9b58e67ba5e138f78feebc5e84c67506c6d3a3c2' }, ":"),
976
+ h("input", { key: '5c2e673f5a3f34c6e1c4619e793ac0e042bdc2f2', ref: el => (this.inputElements[TimeType.Minutes] = el), type: "number", autofocus: this.autofocus, class: "time-input", pattern: "[0-9]*", maxlength: "3", value: this.minutes, onInput: e => this.handleInputChange(e, TimeType.Minutes), placeholder: "mm", inputMode: "numeric", onFocus: () => this.handleFocus(TimeType.Minutes), name: this.name
969
977
  ? `${TimeType.Minutes}-${this.name}`
970
978
  : TimeType.Minutes, id: `${this.inputId}-minutes`, readonly: this.readonly, disabled: this.disabled, required: this.required, onKeyDown: e => this.handleKeyDown(e), onBlur: () => this.handleInputBlur() }),
971
979
  ], this.format.includes('ss') && [
972
- h("span", { key: 'b4faefcaa20ffc346757e6a7454fa6474a5aeb97' }, ":"),
973
- h("input", { key: 'd94a79e3120bad51df44cb3528ac36bb0a39783d', ref: el => (this.inputElements[TimeType.Seconds] = el), type: "number", class: "time-input", pattern: "[0-9]*", maxlength: "3", value: this.seconds, onInput: e => this.handleInputChange(e, TimeType.Seconds), placeholder: "ss", inputMode: "numeric", onFocus: () => this.handleFocus(TimeType.Seconds), name: this.name
980
+ h("span", { key: '52c86d913b1d312cda254b24f22e5c0fe3f7ff3b' }, ":"),
981
+ h("input", { key: 'b882cb0061bcebc3c487857e2d1f4907a9c82a92', ref: el => (this.inputElements[TimeType.Seconds] = el), type: "number", autofocus: this.autofocus, class: "time-input", pattern: "[0-9]*", maxlength: "3", value: this.seconds, onInput: e => this.handleInputChange(e, TimeType.Seconds), placeholder: "ss", inputMode: "numeric", onFocus: () => this.handleFocus(TimeType.Seconds), name: this.name
974
982
  ? `${TimeType.Seconds}-${this.name}`
975
983
  : TimeType.Seconds, id: `${this.inputId}-seconds`, readonly: this.readonly, disabled: this.disabled, required: this.required, onKeyDown: e => this.handleKeyDown(e), onBlur: () => this.handleInputBlur() }),
976
- ], h("nv-iconbutton", { key: '791265d0c8ce93514a5d1972784f824723dc66b8', class: "toggle-time-icon", name: this.open ? 'chevron-top' : 'chevron-down', size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide time picker' : 'Show time picker', "aria-pressed": this.open.toString(), onClick: () => this.HandleDropdownIconClick() }), this.error && (h("nv-icon", { key: '9c19922e738549938040f36b015bb7c85b09453c', name: "alert-circle", class: "validation", size: "sm" })), this.success && (h("nv-icon", { key: '4669516002acd3d1936d3beec1e91950fbdca647', name: "circle-check", class: "validation", size: "sm" }))), h("slot", { key: '263ec0dc7d5cbe1f6360522975d74a41a2ad73a8', name: "after-input" })), h("div", { key: '7ced75636f91d7079f11ecabe31f4cc9150c6771', class: "time-dropdown", slot: "content" }, h("div", { key: '719a8d6720ca4d17a90d614a955d5449f4334e89', class: "time-columns" }, startsWithIgnoreCase(this.format, 'HH') &&
984
+ ], h("nv-iconbutton", { key: 'b6916d20ca835471169d2c8bc9c9506b5896d14d', class: "toggle-time-icon", name: this.open ? 'chevron-top' : 'chevron-down', size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide time picker' : 'Show time picker', "aria-pressed": this.open.toString(), onClick: () => this.HandleDropdownIconClick() }), this.error && (h("nv-icon", { key: 'a40f6ca94e578c85d30fb59ea7f8719ed18b9feb', name: "alert-circle", class: "validation", size: "sm" })), this.success && (h("nv-icon", { key: '9e042ce055d8369d74d09f3c1fb483b69693a348', name: "circle-check", class: "validation", size: "sm" }))), h("slot", { key: '47ac01deec7af0b6632ed424ab772713bfc3ce50', name: "after-input" })), h("div", { key: '654b9176d6f04161a855c249f086aa6f40389977', class: "time-dropdown", slot: "content" }, h("div", { key: '422b4c774aa084fa2a8062b9b53ff37abf9c2296', class: "time-columns" }, startsWithIgnoreCase(this.format, 'HH') &&
977
985
  this.RenderTimeOptionsColumn(TimeType.Hours), this.format.includes('mm') &&
978
986
  this.RenderTimeOptionsColumn(TimeType.Minutes), this.format.includes('ss') &&
979
987
  this.RenderTimeOptionsColumn(TimeType.Seconds)))), (this.description ||
980
- this.el.querySelector('[slot="description"]')) && (h("div", { key: 'f1845d065526c7b73cd95fb66278dcff001c477b', class: "description" }, h("slot", { key: 'b4d4c050815f36cdbae73eb0ccd99a12040d5cd9', name: "description" }, this.description))), (this.errorDescription ||
981
- this.el.querySelector('[slot="error-description"]')) && (h("div", { key: '4b5a39a8d8b6370ffe13dd0db969348e283701ae', hidden: !this.error, class: "error-description" }, h("slot", { key: 'f07ca5b51fe39ff8d7c64b674515aa0c57c04a6e', name: "error-description" }, this.errorDescription)))));
988
+ this.el.querySelector('[slot="description"]')) && (h("div", { key: 'f66ec4ddce5d506f6bf845dd77257d8c401fd9d8', class: "description" }, h("slot", { key: '454bd29d86f8f100062db5ff81bb3f31df225d72', name: "description" }, this.description))), (this.errorDescription ||
989
+ this.el.querySelector('[slot="error-description"]')) && (h("div", { key: 'e170ea292e2b4b90f78dcaa82e2b9985634d7aec', hidden: !this.error, class: "error-description" }, h("slot", { key: '57a04082aaf4869e8f63db68975208e64769bc07', name: "error-description" }, this.errorDescription)))));
982
990
  }
983
991
  static get is() { return "nv-fieldtime"; }
984
992
  static get formAssociated() { return true; }
@@ -1312,6 +1320,26 @@ export class NvFieldtime {
1312
1320
  "setter": false,
1313
1321
  "attribute": "min",
1314
1322
  "reflect": true
1323
+ },
1324
+ "autofocus": {
1325
+ "type": "boolean",
1326
+ "mutable": false,
1327
+ "complexType": {
1328
+ "original": "boolean",
1329
+ "resolved": "boolean",
1330
+ "references": {}
1331
+ },
1332
+ "required": false,
1333
+ "optional": false,
1334
+ "docs": {
1335
+ "tags": [],
1336
+ "text": "Applies focus to the input field as soon as the component is mounted. This\nis equivalent to setting the native autofocus attribute on an <input>\nelement."
1337
+ },
1338
+ "getter": false,
1339
+ "setter": false,
1340
+ "attribute": "autofocus",
1341
+ "reflect": true,
1342
+ "defaultValue": "false"
1315
1343
  }
1316
1344
  };
1317
1345
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nv-fieldtime.js","sourceRoot":"","sources":["../../../src/components/nv-fieldtime/nv-fieldtime.tsx"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable react/jsx-no-bind */\nimport {\n Component,\n Host,\n h,\n State,\n Element,\n Event,\n EventEmitter,\n Prop,\n Watch,\n Listen,\n} from '@stencil/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport { startsWithIgnoreCase } from '../../utils/string.utils';\nimport { TimeType } from '../../utils/constants';\n\n/**\n * @slot label - Content to be placed as the label, will override the label prop.\n * @slot before-input - Content to be placed before the input text, outside the input container.\n * @slot after-input - Content to be placed after the input text, outside the input container.\n * @slot leading-input - Content to be placed before the input text, within the input container.\n * @slot error-description - Content to be placed as the error description, will override the errorDescription prop.\n * @slot description - Content to be placed as the description, will override the description prop.\n */\n@Component({\n tag: 'nv-fieldtime',\n styleUrl: 'nv-fieldtime.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NvFieldtime {\n @Element() el: HTMLNvFieldtimeElement;\n\n // Input elements for hours, minutes, and seconds\n private inputElements: { [key: string]: HTMLInputElement } = {};\n\n private inputZeroAdded: { [key: string]: boolean } = {};\n\n private popoverElement!: HTMLNvPopoverElement;\n\n private typeFocused: TimeType = TimeType.Hours;\n\n /****************************************************************************/\n //#region STATES\n\n @State()\n hours: string = '00';\n @State()\n minutes: string = '00';\n @State()\n seconds: string = '00';\n\n //#endregion STATES\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * The current value of the time input in the specified format.\n */\n @Prop({ reflect: true, mutable: true })\n value: string;\n\n /**\n * Lets you define the text that explains what users should enter in the time\n * input field. It's a crucial element for making forms clear and\n * user-friendly.\n */\n @Prop({ reflect: true })\n readonly label: string;\n\n /**\n * Sets the ID for the input element and the for attribute of the associated\n * label. If no ID is provided, a random one will be automatically generated\n * to ensure unique identification, facilitating proper label association and\n * accessibility.\n */\n @Prop({ reflect: true })\n readonly inputId: string = uuidv4();\n\n /**\n * Display the input field's content without allowing users to change it.\n * Users can still click on it, select, and copy the text, but they won't be\n * able to type or delete anything.\n */\n @Prop({ reflect: true })\n readonly readonly: boolean = false;\n\n /**\n * The disabled prop lets you turn off the input field so that users can't\n * interact with it. When disabled, the field is grayed out and won't respond to\n * clicks or touches.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * Marks the input field as required, ensuring that the user must fill it out\n * before submitting the form.\n */\n @Prop({ reflect: true })\n readonly required: boolean = false;\n\n /**\n * Defines the name attribute of the input field, which is crucial for form\n * submission. This value is used as the key in the key-value pair sent to\n * the server, representing the input's data in form submissions.\n */\n @Prop({ reflect: true })\n readonly name: string;\n\n /**\n * Changes the input field’s appearance to indicate successful input or\n * validation.\n */\n @Prop({ reflect: true })\n readonly success: boolean = false;\n\n /**\n * Alters the input field's appearance to indicate an error, helping users\n * identify fields that need correction.\n * @validator error\n */\n @Prop({ reflect: true })\n readonly error: boolean = false;\n\n /**\n * A description that appears when there is an error related to the time\n * field.\n * @validator message\n */\n @Prop({ reflect: true })\n readonly errorDescription: string;\n\n /**\n * Specifies the time format to be used.\n * Available formats:\n * - HH: 24-hour format (00-23)\n * - HH:mm: 24-hour format with minutes (00:00-23:59)\n * - HH:mm:ss: 24-hour format with minutes and seconds (00:00:00-23:59:59)\n * - hh: 12-hour format (01-12)\n * - hh:mm: 12-hour format with minutes (01:00-12:59)\n * - hh:mm:ss: 12-hour format with minutes and seconds (01:00:00-12:59:59)\n */\n @Prop({ reflect: true })\n readonly format: 'HH' | 'HH:mm' | 'HH:mm:ss' | 'hh' | 'hh:mm' | 'hh:mm:ss' =\n 'HH:mm:ss';\n\n /**\n * Add helpful hints or extra information under the time input field. This is\n * where you can clarify what users should enter or provide additional\n * instructions.\n */\n @Prop({ reflect: true })\n readonly description: string;\n\n /**\n * State of the time picker popover.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\n\n /**\n * The step interval in milliseconds for time increments/decrements.\n * This affects how the time changes when using arrow keys or spinners.\n */\n @Prop({ reflect: true })\n readonly step: number = 60000; // In secondes\n\n /**\n * The maximum time value that can be selected.\n */\n @Prop({ reflect: true })\n readonly max: string;\n\n /**\n * The minimum time value that can be selected.\n */\n @Prop({ reflect: true })\n readonly min: string;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emit an event when the time value changes.\n * The event detail contains the new time value (HH, HH:mm or HH:mm:ss).\n */\n @Event()\n valueChanged: EventEmitter<string>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region LISTENERS\n\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n this.open = event.detail; // Update `open` based on the popover state\n }\n\n @Listen('keydown', { passive: false })\n handleKeyDown(event: KeyboardEvent) {\n if (!this.open) {\n if (event.key === 'ArrowDown') {\n this.open = true;\n\n event.preventDefault();\n return;\n }\n return;\n }\n\n // Verify if the popover element is defined\n if (!this.popoverElement) {\n console.warn('nv-fieldtime -> Popover element is not defined');\n return;\n }\n\n const stringSelector = `.time-column.time-column-${this.typeFocused} div`;\n const items = Array.from(\n this.el.querySelectorAll<HTMLElement>(stringSelector),\n );\n\n // Verify if there are items to navigate\n if (items.length === 0) {\n console.warn('nv-fieldtime -> No dropdown items found to navigate');\n return;\n }\n\n let currentIndex = items.findIndex(item =>\n item.classList.contains('highlighted'),\n );\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n currentIndex = (currentIndex + 1) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n currentIndex = (currentIndex - 1 + items.length) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'Enter' && currentIndex >= 0) {\n event.preventDefault();\n items[currentIndex].click();\n\n if (this.typeFocused === TimeType.Hours) {\n this.inputElements[TimeType.Minutes]?.focus();\n this.inputElements[TimeType.Minutes]?.select();\n } else if (\n this.typeFocused === TimeType.Minutes ||\n this.typeFocused === TimeType.Seconds\n ) {\n this.inputElements[TimeType.Seconds]?.focus();\n this.inputElements[TimeType.Seconds]?.select();\n }\n } else if (event.key === 'Escape') {\n event.preventDefault();\n\n if (this.inputElements[TimeType.Hours]) {\n this.inputElements[TimeType.Hours].blur();\n }\n }\n }\n\n //#endregion LISTENERS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('value')\n handleValueChange(newValue: string) {\n this.valueChanged.emit(newValue);\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region METHODS\n\n private handleInputChange(e: InputEvent, type: TimeType): void {\n const inputElement = e.target as HTMLInputElement;\n const inputValue = inputElement.value.replace(/[^0-9]/g, ''); // Only keep numeric input\n\n // Update the time value based on the type\n switch (type) {\n case TimeType.Hours:\n this.handleHoursChange(inputValue, type);\n break;\n case TimeType.Minutes:\n this.handleMinutesChange(inputValue, type);\n break;\n case TimeType.Seconds:\n this.handleSecondsChange(inputValue, type);\n break;\n }\n\n // Reconstruct time from inputs\n const currentValue = this.reconstructTime();\n\n this.value = currentValue;\n }\n\n private handleHoursChange(inputValue: string, type: TimeType): void {\n const isHHFormat = this.format.startsWith('HH');\n const maxHours = isHHFormat ? 24 : 12;\n let reputedToZero = false;\n const maxHour =\n this.parseHour(this.max, this.format) ||\n (this.format.startsWith('hh') ? '12' : '24');\n const minHour = this.parseHour(this.min, this.format) || '00';\n\n if (inputValue.length === 1) {\n this.inputZeroAdded[type] = true;\n\n const newInputValue = inputValue.padStart(2, '0');\n\n if (maxHour && parseInt(newInputValue, 10) > parseInt(maxHour, 10)) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = newInputValue;\n }\n }\n } else if (this.inputZeroAdded[type]) {\n this.inputZeroAdded[type] = false;\n\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxHours) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (maxHour && parseInt(newInputValue, 10) > parseInt(maxHour, 10)) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = newInputValue;\n }\n }\n }\n } else if (inputValue.length > 2) {\n if (inputValue.startsWith('00')) {\n this.inputZeroAdded[type] = true;\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n\n if (maxHour && parseInt(newInputValue, 10) > parseInt(maxHour, 10)) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = newInputValue;\n }\n }\n } else {\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxHours) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n reputedToZero = true;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (maxHour && parsedNewInputValue > parseInt(maxHour, 10)) {\n if (\n minHour &&\n parseInt(newInputValue, 10) < parseInt(minHour, 10)\n ) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parsedNewInputValue < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = parsedNewInputValue.toString();\n }\n }\n }\n }\n } else {\n const newInputValue = inputValue.padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxHours) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (maxHour && parsedNewInputValue > parseInt(maxHour, 10)) {\n this.hours = '00';\n reputedToZero = true;\n } else {\n if (minHour && parsedNewInputValue < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = parsedNewInputValue.toString();\n }\n }\n }\n }\n\n if (\n this.hours.length === 2 &&\n !this.inputZeroAdded[type] &&\n !reputedToZero\n ) {\n this.inputElements[TimeType.Minutes]?.focus();\n this.inputElements[TimeType.Minutes]?.select();\n } else if (reputedToZero) {\n this.inputElements[TimeType.Hours]?.focus();\n this.inputElements[TimeType.Hours]?.select();\n }\n }\n\n private handleMinutesChange(inputValue: string, type: TimeType): void {\n const maxMinutes = 60;\n let reputedToZero = false;\n const minMinute = this.parseMinute(this.min) ?? 0;\n const maxMinute = this.parseMinute(this.max) ?? 59;\n\n if (inputValue.length === 1) {\n this.inputZeroAdded[type] = true;\n\n const newInputValue = inputValue.padStart(2, '0');\n\n if (maxMinute && parseInt(newInputValue, 10) > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = newInputValue;\n }\n }\n } else if (this.inputZeroAdded[type]) {\n this.inputZeroAdded[type] = false;\n\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxMinutes) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (maxMinute && parsedNewInputValue > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parsedNewInputValue < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = newInputValue;\n }\n }\n }\n } else if (inputValue.length > 2) {\n if (inputValue.startsWith('00')) {\n this.inputZeroAdded[type] = true;\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n\n if (maxMinute && parseInt(newInputValue, 10) > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = newInputValue;\n }\n }\n } else {\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxMinutes) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (maxMinute && parsedNewInputValue > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parsedNewInputValue < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = parsedNewInputValue.toString();\n }\n }\n }\n }\n } else {\n const newInputValue = inputValue.padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxMinutes) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (maxMinute && parsedNewInputValue > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parsedNewInputValue < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = parsedNewInputValue.toString();\n }\n }\n }\n }\n\n if (\n this.minutes.length === 2 &&\n !this.inputZeroAdded[type] &&\n !reputedToZero\n ) {\n this.inputElements[TimeType.Seconds]?.focus();\n this.inputElements[TimeType.Seconds]?.select();\n } else if (reputedToZero) {\n this.inputElements[TimeType.Minutes]?.focus();\n this.inputElements[TimeType.Minutes]?.select();\n }\n }\n\n private handleSecondsChange(inputValue: string, type: TimeType): void {\n const maxSeconds = 60;\n let reputedToZero = false;\n const minSecond = this.parseSecond(this.min) ?? 0;\n const maxSecond = this.parseSecond(this.max) ?? 59;\n\n if (inputValue.length === 1) {\n this.inputZeroAdded[type] = true;\n const newInputValue = inputValue.padStart(2, '0');\n\n if (maxSecond && parseInt(newInputValue, 10) > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = newInputValue;\n }\n }\n } else if (this.inputZeroAdded[type]) {\n this.inputZeroAdded[type] = false;\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxSeconds) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (maxSecond && parsedNewInputValue > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parsedNewInputValue < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = newInputValue;\n }\n }\n }\n } else if (inputValue.length > 2) {\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxSeconds) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (maxSecond && parsedNewInputValue > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parsedNewInputValue < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = parsedNewInputValue.toString();\n }\n }\n }\n } else {\n const newInputValue = inputValue.padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxSeconds) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (maxSecond && parsedNewInputValue > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parsedNewInputValue < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = parsedNewInputValue.toString();\n }\n }\n }\n }\n\n if (reputedToZero) {\n this.inputElements[TimeType.Seconds]?.focus();\n this.inputElements[TimeType.Seconds]?.select();\n }\n }\n\n // Parse a continuous time string (e.g., \"123456\") into hours, minutes, and seconds\n private parseTime(timeString: string): void {\n if (!timeString) {\n return;\n }\n\n const cleanedTime = timeString.replace(/[^0-9]/g, '').padStart(6, '0');\n const hour = cleanedTime.slice(0, 2);\n const minute = cleanedTime.slice(2, 4);\n const second = cleanedTime.slice(4, 6);\n\n const minHour = this.parseHour(this.min, this.format) || hour;\n const minMinute = this.parseMinute(this.min) || minute;\n const minSecond = this.parseSecond(this.min) || second;\n\n this.hours = minHour.padStart(2, '0');\n this.minutes = minMinute.toString().padStart(2, '0');\n this.seconds = minSecond.toString().padStart(2, '0');\n }\n\n private reconstructTime(): string {\n if (this.format === 'HH' || this.format === 'hh') {\n return this.hours;\n } else if (this.format === 'HH:mm' || this.format === 'hh:mm') {\n return `${this.hours}:${this.minutes}`;\n } else if (this.format === 'HH:mm:ss' || this.format === 'hh:mm:ss') {\n return `${this.hours}:${this.minutes}:${this.seconds}`;\n } else {\n return `${this.hours}:${this.minutes}:${this.seconds}`;\n }\n }\n\n private handleFocus(type: TimeType): void {\n if (this.readonly || this.disabled) {\n return;\n }\n\n if (!this.open) {\n this.open = true; // Force the popover to open\n }\n\n // Refocus on the input if it loses focus and is empty\n if (\n this.inputElements[type]?.value.length === 0 ||\n this.inputElements[type]?.value === '00'\n ) {\n this.inputElements[type]?.focus();\n this.inputElements[type]?.select();\n }\n\n this.typeFocused = type;\n }\n\n private HandleDropdownIconClick(): void {\n if (this.disabled || this.readonly) {\n return; // Do not toggle if disabled or read-only\n }\n\n if (this.open && this.inputElements[TimeType.Hours]) {\n this.open = false; // Close the popover if it is open\n } else if (this.open && this.inputElements[TimeType.Minutes]) {\n this.open = false; // Close the popover if it is open\n } else if (this.open && this.inputElements[TimeType.Seconds]) {\n this.open = false; // Close the popover if it is open\n } else if (!this.open && this.inputElements[TimeType.Hours]) {\n this.inputElements[TimeType.Hours]?.focus(); // Focus will open the popover\n this.inputElements[TimeType.Hours]?.select();\n } else if (!this.open && this.inputElements[TimeType.Minutes]) {\n this.inputElements[TimeType.Minutes]?.focus(); // Focus will open the popover\n this.inputElements[TimeType.Minutes]?.select();\n } else if (!this.open && this.inputElements[TimeType.Seconds]) {\n this.inputElements[TimeType.Seconds]?.focus(); // Focus will open the popover\n this.inputElements[TimeType.Seconds]?.select();\n } else {\n console.warn(\n 'nv-fieldtime -> No input elements found to focus or to blur',\n );\n }\n }\n\n private updateHighlightedItem(items: HTMLElement[], index: number) {\n items.forEach((item, i) => {\n if (i === index) {\n item.classList.add('highlighted');\n item.setAttribute('tabindex', '0');\n item.focus(); // Forcer le focus ici\n item.scrollIntoView({ block: 'nearest' });\n } else {\n item.classList.remove('highlighted');\n item.setAttribute('tabindex', '-1');\n }\n });\n }\n\n private handleTimeOptionClick(event: MouseEvent, type: TimeType): void {\n const option = parseInt(\n (event.target as HTMLElement).textContent || '0',\n 10,\n );\n\n if (type === TimeType.Hours) {\n this.hours = option.toString().padStart(2, '0');\n } else if (type === TimeType.Minutes) {\n this.minutes = option.toString().padStart(2, '0');\n } else if (type === TimeType.Seconds) {\n this.seconds = option.toString().padStart(2, '0');\n }\n\n const reconstructTime = this.reconstructTime();\n this.value = reconstructTime;\n }\n\n private handleInputBlur(): void {\n // Use a delay to check if the focus is still within the popover\n setTimeout(() => {\n if (!this.el.contains(document.activeElement)) {\n if (this.open) {\n this.open = false; // Close the popover if the focus is outside the component\n }\n }\n }, 150);\n }\n\n private handleClickOutside(event: MouseEvent) {\n const target = event.target as Node;\n\n // Check if the click is inside the component or any of the input elements\n if (\n this.el.contains(target) ||\n Object.values(this.inputElements).some(input => input.contains(target))\n ) {\n return;\n }\n\n if (this.open) {\n this.open = false; // Close the popover if the click is outside\n }\n }\n\n private handleScroll(e: Event, type: TimeType): void {\n const target = e.target as HTMLElement;\n const scrollTop = target.scrollTop;\n const containerHeight = target.clientHeight;\n const scrollHeight = target.scrollHeight;\n\n // Define the height of each item, this could be dynamic if the height varies\n const itemHeight = 40; // Consider making this configurable or dynamic\n const options = this.generateTimeOptions(type); // Generates the list of time options\n const singleSetHeight = options.length * itemHeight;\n\n // Check if the scroll is near the bottom or top and reset to the first set\n if (\n scrollTop + containerHeight >= scrollHeight - itemHeight ||\n scrollTop <= 0\n ) {\n target.scrollTop = singleSetHeight; // Reset to the first set from the bottom\n }\n }\n\n private generateTimeOptions(type: TimeType) {\n // Convert the step in seconds\n const stepInSeconds = this.step / 1000;\n\n // Handle edge case for zero step\n if (stepInSeconds === 0) {\n return ['00']; // Just return the default value\n }\n\n // Generate the time options based on the type\n switch (type) {\n case TimeType.Hours:\n return this.generateHourOptions(stepInSeconds);\n\n case TimeType.Minutes:\n return this.generateMinuteOptions(stepInSeconds);\n\n case TimeType.Seconds:\n return this.generateSecondOptions(stepInSeconds);\n\n default:\n return [];\n }\n }\n\n private generateHourOptions(stepInSeconds: number): string[] {\n const hourStep = Math.max(1, Math.floor(stepInSeconds / 3600)); // Prevent step < 1\n const maxHour =\n this.parseHour(this.max, this.format) ||\n (this.format.startsWith('hh') ? '12' : '24');\n const minHour = this.parseHour(this.min, this.format) || '00';\n\n const maxHourValue = parseInt(maxHour, 10);\n const minHourValue = parseInt(minHour, 10);\n const values: string[] = [];\n\n for (let i = minHourValue; i < maxHourValue; i += hourStep) {\n values.push(i.toString().padStart(2, '0'));\n }\n\n return values;\n }\n\n private parseHour(value: string | null, format: string): string | null {\n if (!value) return null;\n const [hourStr] = value.split(':');\n const hour = parseInt(hourStr, 10);\n if (isNaN(hour)) return null;\n if (format.startsWith('hh'))\n return hour > 0 && hour <= 12 ? hourStr.padStart(2, '0') : null;\n return hour >= 0 && hour <= 24 ? hourStr.padStart(2, '0') : null;\n }\n\n private generateMinuteOptions(stepInSeconds: number): string[] {\n const minuteStep = Math.max(1, Math.floor((stepInSeconds % 3600) / 60)); // Ensure step >= 1\n const minMinute = this.parseMinute(this.min) ?? 0;\n const maxMinute = this.parseMinute(this.max) ?? 59;\n\n if (minMinute === 0 && maxMinute === 0) return ['00']; // Handle edge case for zero seconds\n\n const values: string[] = [];\n\n for (let i = minMinute; i <= maxMinute; i += minuteStep) {\n values.push(i.toString().padStart(2, '0'));\n }\n\n return values;\n }\n\n private parseMinute(value: string | null): number | null {\n if (!value) return null;\n const parts = value.split(':');\n if (parts.length < 2) return null; // Expect at least \"hh:mm\"\n const minute = parseInt(parts[1], 10);\n return isNaN(minute) || minute < 0 || minute >= 60 ? null : minute;\n }\n\n private generateSecondOptions(stepInSeconds: number): string[] {\n const secondStep = Math.max(1, stepInSeconds % 60); // Ensure step >= 1\n const minSecond = this.parseSecond(this.min) ?? 0;\n const maxSecond = this.parseSecond(this.max) ?? 59;\n\n if (minSecond === 0 && maxSecond === 0) return ['00']; // Handle edge case for zero seconds\n\n const values: string[] = [];\n\n for (let i = minSecond; i <= maxSecond; i += secondStep) {\n values.push(i.toString().padStart(2, '0'));\n }\n\n return values;\n }\n\n private parseSecond(value: string | null): number | null {\n if (!value) return null;\n const parts = value.split(':');\n if (parts.length < 3) return null; // Expect \"hh:mm:ss\" or \"HH:mm:ss\"\n const second = parseInt(parts[2], 10);\n return isNaN(second) || second < 0 || second >= 60 ? null : second;\n }\n\n private generateInfiniteTimeOptions(type: TimeType): string[] {\n const options = this.generateTimeOptions(type);\n const totalOptions = options.length;\n\n // Dynamically calculate repetitions based on a target number of items (e.g., 300 items)\n const repetitions = Math.ceil(300 / totalOptions);\n return Array(repetitions).fill(options).flat();\n }\n\n private getCurrentTime(): string {\n const currentTime = new Date();\n return currentTime.toLocaleTimeString(); // Returns the time in the locale's format\n }\n\n private updateColumnHighlight(selector, value): void {\n const items = Array.from(this.el.querySelectorAll<HTMLElement>(selector));\n\n const index = items.findIndex(x => x.textContent === value);\n this.updateHighlightedItem(items, index);\n }\n\n private handleHostClick(event: MouseEvent): void {\n if (this.disabled || this.readonly) {\n return;\n }\n\n const targetElement = event.target as HTMLElement;\n\n // Check if the click target or its ancestors are inside an nv-iconbutton element\n if (targetElement.closest('nv-iconbutton')) {\n return; // Handle icon button click separately\n }\n\n if (!this.open) {\n if (this.inputElements) {\n this.inputElements[TimeType.Hours]?.focus();\n this.inputElements[TimeType.Hours]?.select();\n }\n\n event.preventDefault();\n }\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n // If an initial value is passed, parse it\n if (this.value) {\n this.parseTime(this.value);\n } else {\n const minHour = this.parseHour(this.min, this.format) || '00';\n const minMinute = this.parseMinute(this.min) || 0;\n const minSecond = this.parseSecond(this.min) || 0;\n\n this.hours = minHour.padStart(2, '0');\n this.minutes = minMinute.toString().padStart(2, '0');\n this.seconds = minSecond.toString().padStart(2, '0');\n }\n }\n\n connectedCallback() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n }\n\n componentDidLoad() {\n if (!this.value) {\n const currentTime = this.getCurrentTime();\n\n // Split time into components\n // eslint-disable-next-line prefer-const\n let [hour, minute, secondAmPm] = currentTime.split(':');\n let second, amPm;\n\n // Check if AM/PM is present and split accordingly\n if (secondAmPm.includes(' ')) {\n [second, amPm] = secondAmPm.split(' ');\n } else {\n second = secondAmPm;\n }\n\n // Parse hour as integer for calculations\n let parsedHour = parseInt(hour, 10);\n\n // Convert hour to 24-hour format based on AM/PM (if present)\n if (amPm) {\n if (amPm === 'PM' && parsedHour < 12) {\n parsedHour += 12; // Convert PM to 24-hour\n } else if (amPm === 'AM' && parsedHour === 12) {\n parsedHour = 0; // Midnight in 24-hour format\n }\n }\n\n // Adjust for 12-hour format if necessary\n if (this.format.startsWith('hh')) {\n if (parsedHour === 0) {\n hour = '12'; // Midnight in 12-hour format\n } else if (parsedHour > 12) {\n hour = (parsedHour - 12).toString(); // Convert 24-hour to 12-hour\n } else {\n hour = parsedHour.toString();\n }\n } else {\n hour = parsedHour.toString(); // Use 24-hour format directly\n }\n\n // Pad hour, minute, and second to ensure two digits\n hour = hour.padStart(2, '0');\n minute = minute.padStart(2, '0');\n second = second.padStart(2, '0');\n\n // Update highlighted items for hours\n const hourSelector = `.time-column.time-column-hours div`;\n this.updateColumnHighlight(hourSelector, hour);\n\n // Update highlighted items for minutes\n const minuteSelector = `.time-column.time-column-minutes div`;\n this.updateColumnHighlight(minuteSelector, minute);\n\n // Update highlighted items for seconds\n const secondSelector = `.time-column.time-column-seconds div`;\n this.updateColumnHighlight(secondSelector, second);\n }\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n private RenderTimeOptionsColumn(type: TimeType): HTMLElement {\n return (\n <div\n class={`time-column time-column-${type}`}\n onScroll={e => this.handleScroll(e, type)}\n >\n {/* Hours */}\n {this.generateInfiniteTimeOptions(type).map((option, index) => (\n <div\n class={{\n 'time-option': true,\n 'selected': option === this.hours,\n }}\n key={`${option}-${index}`}\n onClick={e => this.handleTimeOptionClick(e, type)}\n >\n {option}\n </div>\n ))}\n </div>\n );\n }\n\n render() {\n return (\n <Host onclick={e => this.handleHostClick(e)}>\n {(this.label || this.el.querySelector('[slot=\"label\"]')) && (\n <label htmlFor={this.inputId}>\n <slot name=\"label\">{this.label}</slot>\n </label>\n )}\n\n <nv-popover\n ref={el => (this.popoverElement = el as HTMLNvPopoverElement)}\n triggerMode=\"controlled\"\n placement=\"bottom-start\"\n open={this.open}\n >\n <div class=\"input-wrapper\" slot=\"trigger\">\n <slot name=\"before-input\"></slot>\n\n <div class=\"input-container\">\n <slot name=\"leading-input\"></slot>\n {/* Input fields for hours, minutes, and seconds */}\n {/* Hours */}\n {startsWithIgnoreCase(this.format, 'HH') && [\n <input\n ref={el => (this.inputElements[TimeType.Hours] = el)}\n type=\"number\"\n class=\"time-input\"\n pattern=\"[0-9]*\"\n maxlength=\"3\"\n value={this.hours}\n onInput={e => this.handleInputChange(e, TimeType.Hours)}\n placeholder={this.format.includes('hh') ? 'hh' : 'HH'}\n inputMode=\"numeric\"\n onFocus={() => this.handleFocus(TimeType.Hours)}\n name={\n this.name\n ? `${TimeType.Hours}-${this.name}`\n : TimeType.Hours\n }\n id={this.inputId}\n readonly={this.readonly}\n disabled={this.disabled}\n required={this.required}\n onKeyDown={e => this.handleKeyDown(e)} // Handle arrow keys\n onBlur={() => this.handleInputBlur()}\n />,\n ]}\n {/* Minutes */}\n {this.format.includes('mm') && [\n <span>:</span>,\n <input\n ref={el => (this.inputElements[TimeType.Minutes] = el)}\n type=\"number\"\n class=\"time-input\"\n pattern=\"[0-9]*\"\n maxlength=\"3\"\n value={this.minutes}\n onInput={e => this.handleInputChange(e, TimeType.Minutes)}\n placeholder=\"mm\"\n inputMode=\"numeric\"\n onFocus={() => this.handleFocus(TimeType.Minutes)}\n name={\n this.name\n ? `${TimeType.Minutes}-${this.name}`\n : TimeType.Minutes\n }\n id={`${this.inputId}-minutes`}\n readonly={this.readonly}\n disabled={this.disabled}\n required={this.required}\n onKeyDown={e => this.handleKeyDown(e)} // Handle arrow keys\n onBlur={() => this.handleInputBlur()}\n />,\n ]}\n {/* Seconds */}\n {this.format.includes('ss') && [\n <span>:</span>,\n\n <input\n ref={el => (this.inputElements[TimeType.Seconds] = el)}\n type=\"number\"\n class=\"time-input\"\n pattern=\"[0-9]*\"\n maxlength=\"3\"\n value={this.seconds}\n onInput={e => this.handleInputChange(e, TimeType.Seconds)}\n placeholder=\"ss\"\n inputMode=\"numeric\"\n onFocus={() => this.handleFocus(TimeType.Seconds)}\n name={\n this.name\n ? `${TimeType.Seconds}-${this.name}`\n : TimeType.Seconds\n }\n id={`${this.inputId}-seconds`}\n readonly={this.readonly}\n disabled={this.disabled}\n required={this.required}\n onKeyDown={e => this.handleKeyDown(e)} // Handle arrow keys\n onBlur={() => this.handleInputBlur()}\n />,\n ]}\n\n <nv-iconbutton\n class=\"toggle-time-icon\"\n name={this.open ? 'chevron-top' : 'chevron-down'}\n size=\"md\"\n emphasis=\"lower\"\n aria-label={this.open ? 'Hide time picker' : 'Show time picker'}\n aria-pressed={this.open.toString()}\n onClick={() => this.HandleDropdownIconClick()}\n />\n\n {this.error && (\n <nv-icon name=\"alert-circle\" class=\"validation\" size=\"sm\" />\n )}\n {this.success && (\n <nv-icon name=\"circle-check\" class=\"validation\" size=\"sm\" />\n )}\n </div>\n\n <slot name=\"after-input\"></slot>\n </div>\n\n <div class=\"time-dropdown\" slot=\"content\">\n <div class=\"time-columns\">\n {startsWithIgnoreCase(this.format, 'HH') &&\n this.RenderTimeOptionsColumn(TimeType.Hours)}\n {this.format.includes('mm') &&\n this.RenderTimeOptionsColumn(TimeType.Minutes)}\n {this.format.includes('ss') &&\n this.RenderTimeOptionsColumn(TimeType.Seconds)}\n </div>\n </div>\n </nv-popover>\n\n {(this.description ||\n this.el.querySelector('[slot=\"description\"]')) && (\n <div class=\"description\">\n <slot name=\"description\">{this.description}</slot>\n </div>\n )}\n\n {(this.errorDescription ||\n this.el.querySelector('[slot=\"error-description\"]')) && (\n <div hidden={!this.error} class=\"error-description\">\n <slot name=\"error-description\">{this.errorDescription}</slot>\n </div>\n )}\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"]}
1
+ {"version":3,"file":"nv-fieldtime.js","sourceRoot":"","sources":["../../../src/components/nv-fieldtime/nv-fieldtime.tsx"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable react/jsx-no-bind */\nimport {\n Component,\n Host,\n h,\n State,\n Element,\n Event,\n EventEmitter,\n Prop,\n Watch,\n Listen,\n} from '@stencil/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport { startsWithIgnoreCase } from '../../utils/string.utils';\nimport { TimeType } from '../../utils/constants';\n\n/**\n * @slot label - Content to be placed as the label, will override the label prop.\n * @slot before-input - Content to be placed before the input text, outside the input container.\n * @slot after-input - Content to be placed after the input text, outside the input container.\n * @slot leading-input - Content to be placed before the input text, within the input container.\n * @slot error-description - Content to be placed as the error description, will override the errorDescription prop.\n * @slot description - Content to be placed as the description, will override the description prop.\n */\n@Component({\n tag: 'nv-fieldtime',\n styleUrl: 'nv-fieldtime.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NvFieldtime {\n @Element() el: HTMLNvFieldtimeElement;\n\n // Input elements for hours, minutes, and seconds\n private inputElements: { [key: string]: HTMLInputElement } = {};\n\n private inputZeroAdded: { [key: string]: boolean } = {};\n\n private popoverElement!: HTMLNvPopoverElement;\n\n private typeFocused: TimeType = TimeType.Hours;\n\n /****************************************************************************/\n //#region STATES\n\n @State()\n hours: string = '00';\n @State()\n minutes: string = '00';\n @State()\n seconds: string = '00';\n\n //#endregion STATES\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * The current value of the time input in the specified format.\n */\n @Prop({ reflect: true, mutable: true })\n value: string;\n\n /**\n * Lets you define the text that explains what users should enter in the time\n * input field. It's a crucial element for making forms clear and\n * user-friendly.\n */\n @Prop({ reflect: true })\n readonly label: string;\n\n /**\n * Sets the ID for the input element and the for attribute of the associated\n * label. If no ID is provided, a random one will be automatically generated\n * to ensure unique identification, facilitating proper label association and\n * accessibility.\n */\n @Prop({ reflect: true })\n readonly inputId: string = uuidv4();\n\n /**\n * Display the input field's content without allowing users to change it.\n * Users can still click on it, select, and copy the text, but they won't be\n * able to type or delete anything.\n */\n @Prop({ reflect: true })\n readonly readonly: boolean = false;\n\n /**\n * The disabled prop lets you turn off the input field so that users can't\n * interact with it. When disabled, the field is grayed out and won't respond to\n * clicks or touches.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * Marks the input field as required, ensuring that the user must fill it out\n * before submitting the form.\n */\n @Prop({ reflect: true })\n readonly required: boolean = false;\n\n /**\n * Defines the name attribute of the input field, which is crucial for form\n * submission. This value is used as the key in the key-value pair sent to\n * the server, representing the input's data in form submissions.\n */\n @Prop({ reflect: true })\n readonly name: string;\n\n /**\n * Changes the input field’s appearance to indicate successful input or\n * validation.\n */\n @Prop({ reflect: true })\n readonly success: boolean = false;\n\n /**\n * Alters the input field's appearance to indicate an error, helping users\n * identify fields that need correction.\n * @validator error\n */\n @Prop({ reflect: true })\n readonly error: boolean = false;\n\n /**\n * A description that appears when there is an error related to the time\n * field.\n * @validator message\n */\n @Prop({ reflect: true })\n readonly errorDescription: string;\n\n /**\n * Specifies the time format to be used.\n * Available formats:\n * - HH: 24-hour format (00-23)\n * - HH:mm: 24-hour format with minutes (00:00-23:59)\n * - HH:mm:ss: 24-hour format with minutes and seconds (00:00:00-23:59:59)\n * - hh: 12-hour format (01-12)\n * - hh:mm: 12-hour format with minutes (01:00-12:59)\n * - hh:mm:ss: 12-hour format with minutes and seconds (01:00:00-12:59:59)\n */\n @Prop({ reflect: true })\n readonly format: 'HH' | 'HH:mm' | 'HH:mm:ss' | 'hh' | 'hh:mm' | 'hh:mm:ss' =\n 'HH:mm:ss';\n\n /**\n * Add helpful hints or extra information under the time input field. This is\n * where you can clarify what users should enter or provide additional\n * instructions.\n */\n @Prop({ reflect: true })\n readonly description: string;\n\n /**\n * State of the time picker popover.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\n\n /**\n * The step interval in milliseconds for time increments/decrements.\n * This affects how the time changes when using arrow keys or spinners.\n */\n @Prop({ reflect: true })\n readonly step: number = 60000; // In secondes\n\n /**\n * The maximum time value that can be selected.\n */\n @Prop({ reflect: true })\n readonly max: string;\n\n /**\n * The minimum time value that can be selected.\n */\n @Prop({ reflect: true })\n readonly min: string;\n\n /**\n * Applies focus to the input field as soon as the component is mounted. This\n * is equivalent to setting the native autofocus attribute on an <input>\n * element.\n */\n @Prop({ reflect: true })\n // eslint-disable-next-line @stencil-community/reserved-member-names\n readonly autofocus: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emit an event when the time value changes.\n * The event detail contains the new time value (HH, HH:mm or HH:mm:ss).\n */\n @Event()\n valueChanged: EventEmitter<string>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region LISTENERS\n\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n this.open = event.detail; // Update `open` based on the popover state\n }\n\n @Listen('keydown', { passive: false })\n handleKeyDown(event: KeyboardEvent) {\n if (!this.open) {\n if (event.key === 'ArrowDown') {\n this.open = true;\n\n event.preventDefault();\n return;\n }\n return;\n }\n\n // Verify if the popover element is defined\n if (!this.popoverElement) {\n console.warn('nv-fieldtime -> Popover element is not defined');\n return;\n }\n\n const stringSelector = `.time-column.time-column-${this.typeFocused} div`;\n const items = Array.from(\n this.el.querySelectorAll<HTMLElement>(stringSelector),\n );\n\n // Verify if there are items to navigate\n if (items.length === 0) {\n console.warn('nv-fieldtime -> No dropdown items found to navigate');\n return;\n }\n\n let currentIndex = items.findIndex(item =>\n item.classList.contains('highlighted'),\n );\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n currentIndex = (currentIndex + 1) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n currentIndex = (currentIndex - 1 + items.length) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'Enter' && currentIndex >= 0) {\n event.preventDefault();\n items[currentIndex].click();\n\n if (this.typeFocused === TimeType.Hours) {\n this.inputElements[TimeType.Minutes]?.focus();\n this.inputElements[TimeType.Minutes]?.select();\n } else if (\n this.typeFocused === TimeType.Minutes ||\n this.typeFocused === TimeType.Seconds\n ) {\n this.inputElements[TimeType.Seconds]?.focus();\n this.inputElements[TimeType.Seconds]?.select();\n }\n } else if (event.key === 'Escape') {\n event.preventDefault();\n\n if (this.inputElements[TimeType.Hours]) {\n this.inputElements[TimeType.Hours].blur();\n }\n }\n }\n\n //#endregion LISTENERS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('value')\n handleValueChange(newValue: string) {\n this.valueChanged.emit(newValue);\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region METHODS\n\n private handleInputChange(e: InputEvent, type: TimeType): void {\n const inputElement = e.target as HTMLInputElement;\n const inputValue = inputElement.value.replace(/[^0-9]/g, ''); // Only keep numeric input\n\n // Update the time value based on the type\n switch (type) {\n case TimeType.Hours:\n this.handleHoursChange(inputValue, type);\n break;\n case TimeType.Minutes:\n this.handleMinutesChange(inputValue, type);\n break;\n case TimeType.Seconds:\n this.handleSecondsChange(inputValue, type);\n break;\n }\n\n // Reconstruct time from inputs\n const currentValue = this.reconstructTime();\n\n this.value = currentValue;\n }\n\n private handleHoursChange(inputValue: string, type: TimeType): void {\n const isHHFormat = this.format.startsWith('HH');\n const maxHours = isHHFormat ? 24 : 12;\n let reputedToZero = false;\n const maxHour =\n this.parseHour(this.max, this.format) ||\n (this.format.startsWith('hh') ? '12' : '24');\n const minHour = this.parseHour(this.min, this.format) || '00';\n\n if (inputValue.length === 1) {\n this.inputZeroAdded[type] = true;\n\n const newInputValue = inputValue.padStart(2, '0');\n\n if (maxHour && parseInt(newInputValue, 10) > parseInt(maxHour, 10)) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = newInputValue;\n }\n }\n } else if (this.inputZeroAdded[type]) {\n this.inputZeroAdded[type] = false;\n\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxHours) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (maxHour && parseInt(newInputValue, 10) > parseInt(maxHour, 10)) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = newInputValue;\n }\n }\n }\n } else if (inputValue.length > 2) {\n if (inputValue.startsWith('00')) {\n this.inputZeroAdded[type] = true;\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n\n if (maxHour && parseInt(newInputValue, 10) > parseInt(maxHour, 10)) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = newInputValue;\n }\n }\n } else {\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxHours) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n reputedToZero = true;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (maxHour && parsedNewInputValue > parseInt(maxHour, 10)) {\n if (\n minHour &&\n parseInt(newInputValue, 10) < parseInt(minHour, 10)\n ) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parsedNewInputValue < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = parsedNewInputValue.toString();\n }\n }\n }\n }\n } else {\n const newInputValue = inputValue.padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxHours) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (maxHour && parsedNewInputValue > parseInt(maxHour, 10)) {\n this.hours = '00';\n reputedToZero = true;\n } else {\n if (minHour && parsedNewInputValue < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = parsedNewInputValue.toString();\n }\n }\n }\n }\n\n if (\n this.hours.length === 2 &&\n !this.inputZeroAdded[type] &&\n !reputedToZero\n ) {\n this.inputElements[TimeType.Minutes]?.focus();\n this.inputElements[TimeType.Minutes]?.select();\n } else if (reputedToZero) {\n this.inputElements[TimeType.Hours]?.focus();\n this.inputElements[TimeType.Hours]?.select();\n }\n }\n\n private handleMinutesChange(inputValue: string, type: TimeType): void {\n const maxMinutes = 60;\n let reputedToZero = false;\n const minMinute = this.parseMinute(this.min) ?? 0;\n const maxMinute = this.parseMinute(this.max) ?? 59;\n\n if (inputValue.length === 1) {\n this.inputZeroAdded[type] = true;\n\n const newInputValue = inputValue.padStart(2, '0');\n\n if (maxMinute && parseInt(newInputValue, 10) > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = newInputValue;\n }\n }\n } else if (this.inputZeroAdded[type]) {\n this.inputZeroAdded[type] = false;\n\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxMinutes) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (maxMinute && parsedNewInputValue > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parsedNewInputValue < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = newInputValue;\n }\n }\n }\n } else if (inputValue.length > 2) {\n if (inputValue.startsWith('00')) {\n this.inputZeroAdded[type] = true;\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n\n if (maxMinute && parseInt(newInputValue, 10) > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = newInputValue;\n }\n }\n } else {\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxMinutes) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (maxMinute && parsedNewInputValue > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parsedNewInputValue < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = parsedNewInputValue.toString();\n }\n }\n }\n }\n } else {\n const newInputValue = inputValue.padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxMinutes) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (maxMinute && parsedNewInputValue > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parsedNewInputValue < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = parsedNewInputValue.toString();\n }\n }\n }\n }\n\n if (\n this.minutes.length === 2 &&\n !this.inputZeroAdded[type] &&\n !reputedToZero\n ) {\n this.inputElements[TimeType.Seconds]?.focus();\n this.inputElements[TimeType.Seconds]?.select();\n } else if (reputedToZero) {\n this.inputElements[TimeType.Minutes]?.focus();\n this.inputElements[TimeType.Minutes]?.select();\n }\n }\n\n private handleSecondsChange(inputValue: string, type: TimeType): void {\n const maxSeconds = 60;\n let reputedToZero = false;\n const minSecond = this.parseSecond(this.min) ?? 0;\n const maxSecond = this.parseSecond(this.max) ?? 59;\n\n if (inputValue.length === 1) {\n this.inputZeroAdded[type] = true;\n const newInputValue = inputValue.padStart(2, '0');\n\n if (maxSecond && parseInt(newInputValue, 10) > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = newInputValue;\n }\n }\n } else if (this.inputZeroAdded[type]) {\n this.inputZeroAdded[type] = false;\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxSeconds) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (maxSecond && parsedNewInputValue > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parsedNewInputValue < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = newInputValue;\n }\n }\n }\n } else if (inputValue.length > 2) {\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxSeconds) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (maxSecond && parsedNewInputValue > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parsedNewInputValue < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = parsedNewInputValue.toString();\n }\n }\n }\n } else {\n const newInputValue = inputValue.padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxSeconds) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (maxSecond && parsedNewInputValue > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parsedNewInputValue < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = parsedNewInputValue.toString();\n }\n }\n }\n }\n\n if (reputedToZero) {\n this.inputElements[TimeType.Seconds]?.focus();\n this.inputElements[TimeType.Seconds]?.select();\n }\n }\n\n // Parse a continuous time string (e.g., \"123456\") into hours, minutes, and seconds\n private parseTime(timeString: string): void {\n if (!timeString) {\n return;\n }\n\n const cleanedTime = timeString.replace(/[^0-9]/g, '').padStart(6, '0');\n const hour = cleanedTime.slice(0, 2);\n const minute = cleanedTime.slice(2, 4);\n const second = cleanedTime.slice(4, 6);\n\n const minHour = this.parseHour(this.min, this.format) || hour;\n const minMinute = this.parseMinute(this.min) || minute;\n const minSecond = this.parseSecond(this.min) || second;\n\n this.hours = minHour.padStart(2, '0');\n this.minutes = minMinute.toString().padStart(2, '0');\n this.seconds = minSecond.toString().padStart(2, '0');\n }\n\n private reconstructTime(): string {\n if (this.format === 'HH' || this.format === 'hh') {\n return this.hours;\n } else if (this.format === 'HH:mm' || this.format === 'hh:mm') {\n return `${this.hours}:${this.minutes}`;\n } else if (this.format === 'HH:mm:ss' || this.format === 'hh:mm:ss') {\n return `${this.hours}:${this.minutes}:${this.seconds}`;\n } else {\n return `${this.hours}:${this.minutes}:${this.seconds}`;\n }\n }\n\n private handleFocus(type: TimeType): void {\n if (this.readonly || this.disabled) {\n return;\n }\n\n if (!this.open) {\n this.open = true; // Force the popover to open\n }\n\n // Refocus on the input if it loses focus and is empty\n if (\n this.inputElements[type]?.value.length === 0 ||\n this.inputElements[type]?.value === '00'\n ) {\n this.inputElements[type]?.focus();\n this.inputElements[type]?.select();\n }\n\n this.typeFocused = type;\n }\n\n private HandleDropdownIconClick(): void {\n if (this.disabled || this.readonly) {\n return; // Do not toggle if disabled or read-only\n }\n\n if (this.open && this.inputElements[TimeType.Hours]) {\n this.open = false; // Close the popover if it is open\n } else if (this.open && this.inputElements[TimeType.Minutes]) {\n this.open = false; // Close the popover if it is open\n } else if (this.open && this.inputElements[TimeType.Seconds]) {\n this.open = false; // Close the popover if it is open\n } else if (!this.open && this.inputElements[TimeType.Hours]) {\n this.inputElements[TimeType.Hours]?.focus(); // Focus will open the popover\n this.inputElements[TimeType.Hours]?.select();\n } else if (!this.open && this.inputElements[TimeType.Minutes]) {\n this.inputElements[TimeType.Minutes]?.focus(); // Focus will open the popover\n this.inputElements[TimeType.Minutes]?.select();\n } else if (!this.open && this.inputElements[TimeType.Seconds]) {\n this.inputElements[TimeType.Seconds]?.focus(); // Focus will open the popover\n this.inputElements[TimeType.Seconds]?.select();\n } else {\n console.warn(\n 'nv-fieldtime -> No input elements found to focus or to blur',\n );\n }\n }\n\n private updateHighlightedItem(items: HTMLElement[], index: number) {\n items.forEach((item, i) => {\n if (i === index) {\n item.classList.add('highlighted');\n item.setAttribute('tabindex', '0');\n item.focus(); // Forcer le focus ici\n item.scrollIntoView({ block: 'nearest' });\n } else {\n item.classList.remove('highlighted');\n item.setAttribute('tabindex', '-1');\n }\n });\n }\n\n private handleTimeOptionClick(event: MouseEvent, type: TimeType): void {\n const option = parseInt(\n (event.target as HTMLElement).textContent || '0',\n 10,\n );\n\n if (type === TimeType.Hours) {\n this.hours = option.toString().padStart(2, '0');\n } else if (type === TimeType.Minutes) {\n this.minutes = option.toString().padStart(2, '0');\n } else if (type === TimeType.Seconds) {\n this.seconds = option.toString().padStart(2, '0');\n }\n\n const reconstructTime = this.reconstructTime();\n this.value = reconstructTime;\n }\n\n private handleInputBlur(): void {\n // Use a delay to check if the focus is still within the popover\n setTimeout(() => {\n if (!this.el.contains(document.activeElement)) {\n if (this.open) {\n this.open = false; // Close the popover if the focus is outside the component\n }\n }\n }, 150);\n }\n\n private handleClickOutside(event: MouseEvent) {\n const target = event.target as Node;\n\n // Check if the click is inside the component or any of the input elements\n if (\n this.el.contains(target) ||\n Object.values(this.inputElements).some(input => input.contains(target))\n ) {\n return;\n }\n\n if (this.open) {\n this.open = false; // Close the popover if the click is outside\n }\n }\n\n private handleScroll(e: Event, type: TimeType): void {\n const target = e.target as HTMLElement;\n const scrollTop = target.scrollTop;\n const containerHeight = target.clientHeight;\n const scrollHeight = target.scrollHeight;\n\n // Define the height of each item, this could be dynamic if the height varies\n const itemHeight = 40; // Consider making this configurable or dynamic\n const options = this.generateTimeOptions(type); // Generates the list of time options\n const singleSetHeight = options.length * itemHeight;\n\n // Check if the scroll is near the bottom or top and reset to the first set\n if (\n scrollTop + containerHeight >= scrollHeight - itemHeight ||\n scrollTop <= 0\n ) {\n target.scrollTop = singleSetHeight; // Reset to the first set from the bottom\n }\n }\n\n private generateTimeOptions(type: TimeType) {\n // Convert the step in seconds\n const stepInSeconds = this.step / 1000;\n\n // Handle edge case for zero step\n if (stepInSeconds === 0) {\n return ['00']; // Just return the default value\n }\n\n // Generate the time options based on the type\n switch (type) {\n case TimeType.Hours:\n return this.generateHourOptions(stepInSeconds);\n\n case TimeType.Minutes:\n return this.generateMinuteOptions(stepInSeconds);\n\n case TimeType.Seconds:\n return this.generateSecondOptions(stepInSeconds);\n\n default:\n return [];\n }\n }\n\n private generateHourOptions(stepInSeconds: number): string[] {\n const hourStep = Math.max(1, Math.floor(stepInSeconds / 3600)); // Prevent step < 1\n const maxHour =\n this.parseHour(this.max, this.format) ||\n (this.format.startsWith('hh') ? '12' : '24');\n const minHour = this.parseHour(this.min, this.format) || '00';\n\n const maxHourValue = parseInt(maxHour, 10);\n const minHourValue = parseInt(minHour, 10);\n const values: string[] = [];\n\n for (let i = minHourValue; i < maxHourValue; i += hourStep) {\n values.push(i.toString().padStart(2, '0'));\n }\n\n return values;\n }\n\n private parseHour(value: string | null, format: string): string | null {\n if (!value) return null;\n const [hourStr] = value.split(':');\n const hour = parseInt(hourStr, 10);\n if (isNaN(hour)) return null;\n if (format.startsWith('hh'))\n return hour > 0 && hour <= 12 ? hourStr.padStart(2, '0') : null;\n return hour >= 0 && hour <= 24 ? hourStr.padStart(2, '0') : null;\n }\n\n private generateMinuteOptions(stepInSeconds: number): string[] {\n const minuteStep = Math.max(1, Math.floor((stepInSeconds % 3600) / 60)); // Ensure step >= 1\n const minMinute = this.parseMinute(this.min) ?? 0;\n const maxMinute = this.parseMinute(this.max) ?? 59;\n\n if (minMinute === 0 && maxMinute === 0) return ['00']; // Handle edge case for zero seconds\n\n const values: string[] = [];\n\n for (let i = minMinute; i <= maxMinute; i += minuteStep) {\n values.push(i.toString().padStart(2, '0'));\n }\n\n return values;\n }\n\n private parseMinute(value: string | null): number | null {\n if (!value) return null;\n const parts = value.split(':');\n if (parts.length < 2) return null; // Expect at least \"hh:mm\"\n const minute = parseInt(parts[1], 10);\n return isNaN(minute) || minute < 0 || minute >= 60 ? null : minute;\n }\n\n private generateSecondOptions(stepInSeconds: number): string[] {\n const secondStep = Math.max(1, stepInSeconds % 60); // Ensure step >= 1\n const minSecond = this.parseSecond(this.min) ?? 0;\n const maxSecond = this.parseSecond(this.max) ?? 59;\n\n if (minSecond === 0 && maxSecond === 0) return ['00']; // Handle edge case for zero seconds\n\n const values: string[] = [];\n\n for (let i = minSecond; i <= maxSecond; i += secondStep) {\n values.push(i.toString().padStart(2, '0'));\n }\n\n return values;\n }\n\n private parseSecond(value: string | null): number | null {\n if (!value) return null;\n const parts = value.split(':');\n if (parts.length < 3) return null; // Expect \"hh:mm:ss\" or \"HH:mm:ss\"\n const second = parseInt(parts[2], 10);\n return isNaN(second) || second < 0 || second >= 60 ? null : second;\n }\n\n private generateInfiniteTimeOptions(type: TimeType): string[] {\n const options = this.generateTimeOptions(type);\n const totalOptions = options.length;\n\n // Dynamically calculate repetitions based on a target number of items (e.g., 300 items)\n const repetitions = Math.ceil(300 / totalOptions);\n return Array(repetitions).fill(options).flat();\n }\n\n private getCurrentTime(): string {\n const currentTime = new Date();\n return currentTime.toLocaleTimeString(); // Returns the time in the locale's format\n }\n\n private updateColumnHighlight(selector, value): void {\n const items = Array.from(this.el.querySelectorAll<HTMLElement>(selector));\n\n const index = items.findIndex(x => x.textContent === value);\n this.updateHighlightedItem(items, index);\n }\n\n private handleHostClick(event: MouseEvent): void {\n if (this.disabled || this.readonly) {\n return;\n }\n\n const targetElement = event.target as HTMLElement;\n\n // Check if the click target or its ancestors are inside an nv-iconbutton element\n if (targetElement.closest('nv-iconbutton')) {\n return; // Handle icon button click separately\n }\n\n if (!this.open) {\n if (this.inputElements) {\n this.inputElements[TimeType.Hours]?.focus();\n this.inputElements[TimeType.Hours]?.select();\n }\n\n event.preventDefault();\n }\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n // If an initial value is passed, parse it\n if (this.value) {\n this.parseTime(this.value);\n } else {\n const minHour = this.parseHour(this.min, this.format) || '00';\n const minMinute = this.parseMinute(this.min) || 0;\n const minSecond = this.parseSecond(this.min) || 0;\n\n this.hours = minHour.padStart(2, '0');\n this.minutes = minMinute.toString().padStart(2, '0');\n this.seconds = minSecond.toString().padStart(2, '0');\n }\n }\n\n connectedCallback() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n }\n\n componentDidLoad() {\n if (!this.value) {\n const currentTime = this.getCurrentTime();\n\n // Split time into components\n // eslint-disable-next-line prefer-const\n let [hour, minute, secondAmPm] = currentTime.split(':');\n let second, amPm;\n\n // Check if AM/PM is present and split accordingly\n if (secondAmPm.includes(' ')) {\n [second, amPm] = secondAmPm.split(' ');\n } else {\n second = secondAmPm;\n }\n\n // Parse hour as integer for calculations\n let parsedHour = parseInt(hour, 10);\n\n // Convert hour to 24-hour format based on AM/PM (if present)\n if (amPm) {\n if (amPm === 'PM' && parsedHour < 12) {\n parsedHour += 12; // Convert PM to 24-hour\n } else if (amPm === 'AM' && parsedHour === 12) {\n parsedHour = 0; // Midnight in 24-hour format\n }\n }\n\n // Adjust for 12-hour format if necessary\n if (this.format.startsWith('hh')) {\n if (parsedHour === 0) {\n hour = '12'; // Midnight in 12-hour format\n } else if (parsedHour > 12) {\n hour = (parsedHour - 12).toString(); // Convert 24-hour to 12-hour\n } else {\n hour = parsedHour.toString();\n }\n } else {\n hour = parsedHour.toString(); // Use 24-hour format directly\n }\n\n // Pad hour, minute, and second to ensure two digits\n hour = hour.padStart(2, '0');\n minute = minute.padStart(2, '0');\n second = second.padStart(2, '0');\n\n // Update highlighted items for hours\n const hourSelector = `.time-column.time-column-hours div`;\n this.updateColumnHighlight(hourSelector, hour);\n\n // Update highlighted items for minutes\n const minuteSelector = `.time-column.time-column-minutes div`;\n this.updateColumnHighlight(minuteSelector, minute);\n\n // Update highlighted items for seconds\n const secondSelector = `.time-column.time-column-seconds div`;\n this.updateColumnHighlight(secondSelector, second);\n }\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n private RenderTimeOptionsColumn(type: TimeType): HTMLElement {\n return (\n <div\n class={`time-column time-column-${type}`}\n onScroll={e => this.handleScroll(e, type)}\n >\n {/* Hours */}\n {this.generateInfiniteTimeOptions(type).map((option, index) => (\n <div\n class={{\n 'time-option': true,\n 'selected':\n (type === TimeType.Hours && option === this.hours) ||\n (type === TimeType.Minutes && option === this.minutes) ||\n (type === TimeType.Seconds && option === this.seconds),\n }}\n key={`${option}-${index}`}\n onClick={e => this.handleTimeOptionClick(e, type)}\n >\n {option}\n </div>\n ))}\n </div>\n );\n }\n\n render() {\n return (\n <Host onclick={e => this.handleHostClick(e)}>\n {(this.label || this.el.querySelector('[slot=\"label\"]')) && (\n <label htmlFor={this.inputId}>\n <slot name=\"label\">{this.label}</slot>\n </label>\n )}\n\n <nv-popover\n ref={el => (this.popoverElement = el as HTMLNvPopoverElement)}\n triggerMode=\"controlled\"\n placement=\"bottom-start\"\n open={this.open}\n >\n <div class=\"input-wrapper\" slot=\"trigger\">\n <slot name=\"before-input\"></slot>\n\n <div class=\"input-container\">\n <slot name=\"leading-input\"></slot>\n {/* Input fields for hours, minutes, and seconds */}\n {/* Hours */}\n {startsWithIgnoreCase(this.format, 'HH') && [\n <input\n ref={el => (this.inputElements[TimeType.Hours] = el)}\n type=\"number\"\n autofocus={this.autofocus}\n class=\"time-input\"\n pattern=\"[0-9]*\"\n maxlength=\"3\"\n value={this.hours}\n onInput={e => this.handleInputChange(e, TimeType.Hours)}\n placeholder={this.format.includes('hh') ? 'hh' : 'HH'}\n inputMode=\"numeric\"\n onFocus={() => this.handleFocus(TimeType.Hours)}\n name={\n this.name\n ? `${TimeType.Hours}-${this.name}`\n : TimeType.Hours\n }\n id={this.inputId}\n readonly={this.readonly}\n disabled={this.disabled}\n required={this.required}\n onKeyDown={e => this.handleKeyDown(e)} // Handle arrow keys\n onBlur={() => this.handleInputBlur()}\n />,\n ]}\n {/* Minutes */}\n {this.format.includes('mm') && [\n <span>:</span>,\n <input\n ref={el => (this.inputElements[TimeType.Minutes] = el)}\n type=\"number\"\n autofocus={this.autofocus}\n class=\"time-input\"\n pattern=\"[0-9]*\"\n maxlength=\"3\"\n value={this.minutes}\n onInput={e => this.handleInputChange(e, TimeType.Minutes)}\n placeholder=\"mm\"\n inputMode=\"numeric\"\n onFocus={() => this.handleFocus(TimeType.Minutes)}\n name={\n this.name\n ? `${TimeType.Minutes}-${this.name}`\n : TimeType.Minutes\n }\n id={`${this.inputId}-minutes`}\n readonly={this.readonly}\n disabled={this.disabled}\n required={this.required}\n onKeyDown={e => this.handleKeyDown(e)} // Handle arrow keys\n onBlur={() => this.handleInputBlur()}\n />,\n ]}\n {/* Seconds */}\n {this.format.includes('ss') && [\n <span>:</span>,\n\n <input\n ref={el => (this.inputElements[TimeType.Seconds] = el)}\n type=\"number\"\n autofocus={this.autofocus}\n class=\"time-input\"\n pattern=\"[0-9]*\"\n maxlength=\"3\"\n value={this.seconds}\n onInput={e => this.handleInputChange(e, TimeType.Seconds)}\n placeholder=\"ss\"\n inputMode=\"numeric\"\n onFocus={() => this.handleFocus(TimeType.Seconds)}\n name={\n this.name\n ? `${TimeType.Seconds}-${this.name}`\n : TimeType.Seconds\n }\n id={`${this.inputId}-seconds`}\n readonly={this.readonly}\n disabled={this.disabled}\n required={this.required}\n onKeyDown={e => this.handleKeyDown(e)} // Handle arrow keys\n onBlur={() => this.handleInputBlur()}\n />,\n ]}\n\n <nv-iconbutton\n class=\"toggle-time-icon\"\n name={this.open ? 'chevron-top' : 'chevron-down'}\n size=\"md\"\n emphasis=\"lower\"\n aria-label={this.open ? 'Hide time picker' : 'Show time picker'}\n aria-pressed={this.open.toString()}\n onClick={() => this.HandleDropdownIconClick()}\n />\n\n {this.error && (\n <nv-icon name=\"alert-circle\" class=\"validation\" size=\"sm\" />\n )}\n {this.success && (\n <nv-icon name=\"circle-check\" class=\"validation\" size=\"sm\" />\n )}\n </div>\n\n <slot name=\"after-input\"></slot>\n </div>\n\n <div class=\"time-dropdown\" slot=\"content\">\n <div class=\"time-columns\">\n {startsWithIgnoreCase(this.format, 'HH') &&\n this.RenderTimeOptionsColumn(TimeType.Hours)}\n {this.format.includes('mm') &&\n this.RenderTimeOptionsColumn(TimeType.Minutes)}\n {this.format.includes('ss') &&\n this.RenderTimeOptionsColumn(TimeType.Seconds)}\n </div>\n </div>\n </nv-popover>\n\n {(this.description ||\n this.el.querySelector('[slot=\"description\"]')) && (\n <div class=\"description\">\n <slot name=\"description\">{this.description}</slot>\n </div>\n )}\n\n {(this.errorDescription ||\n this.el.querySelector('[slot=\"error-description\"]')) && (\n <div hidden={!this.error} class=\"error-description\">\n <slot name=\"error-description\">{this.errorDescription}</slot>\n </div>\n )}\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"]}
@@ -1,7 +1,8 @@
1
1
  import { Host, h } from "@stencil/core";
2
2
  import clsx from "clsx";
3
- import { SemanticSizes } from "../../utils/constants";
4
3
  import iconSprite from "@nova-design-system/nova-base/assets/icons/icon-sprite.svg";
4
+ import { SemanticSizes } from "../../utils/constants";
5
+ import { dataURIToString } from "../../utils/uri.utils";
5
6
  export class NvIcon {
6
7
  constructor() {
7
8
  /**
@@ -9,6 +10,20 @@ export class NvIcon {
9
10
  */
10
11
  this.size = SemanticSizes.Medium;
11
12
  }
13
+ /**
14
+ * Ensures the icon sprite is loaded into the document.
15
+ */
16
+ static ensureSpriteInlined() {
17
+ if (!document)
18
+ return; // SSR & node env fallback safety
19
+ if (!document.getElementById('nv-icon-sprite')) {
20
+ const container = document.createElement('div');
21
+ container.id = 'nv-icon-sprite';
22
+ container.style.display = 'none';
23
+ container.innerHTML = dataURIToString(iconSprite);
24
+ document.body.insertAdjacentElement('afterbegin', container);
25
+ }
26
+ }
12
27
  componentWillRender() {
13
28
  if (this.xsmall) {
14
29
  this.size = SemanticSizes.ExtraSmall;
@@ -26,22 +41,14 @@ export class NvIcon {
26
41
  this.size = SemanticSizes.ExtraLarge;
27
42
  }
28
43
  }
29
- async componentWillLoad() {
30
- const response = await fetch(iconSprite);
31
- const blob = await response.blob();
32
- this.spriteUrl = URL.createObjectURL(blob);
33
- }
34
- disconnectedCallback() {
35
- if (this.spriteUrl) {
36
- URL.revokeObjectURL(this.spriteUrl);
37
- }
44
+ componentWillLoad() {
45
+ NvIcon.ensureSpriteInlined();
38
46
  }
39
47
  //#endregion PROPERTIES
40
48
  /****************************************************************************/
41
49
  //#region RENDER
42
50
  render() {
43
- //const iconSprite = getAssetPath('assets/icon-sprite.svg');
44
- return (h(Host, { key: 'eae21ee4abade3ac2c5b41da246f4026449783ca', class: clsx(this.color && `${this.color}`), role: "img", "aria-label": `${this.name}-icon` }, h("svg", { key: '36831601bda0afb5b5b02ebf26ebcc034638a0a9', stroke: "currentColor", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", class: `nv-icon-${this.size}` }, h("use", { key: '6d42595c0fe9c491d519769df8a4bef745eb4167', href: `${this.spriteUrl}#${this.name}` }))));
51
+ return (h(Host, { key: 'b2a8b70af671a5deec62c8bf56776f3eca07a752', class: clsx(this.color && `${this.color}`), role: "img", "aria-label": `${this.name}-icon` }, h("svg", { key: 'a4e4ca00acf0ab9a08b855cbcd64090e591f7d84', stroke: "currentColor", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", class: `nv-icon-${this.size}` }, h("use", { key: 'db4a82f69fca502c66082901e02174ca4aeaa112', href: `#${this.name}` }))));
45
52
  }
46
53
  static get is() { return "nv-icon"; }
47
54
  static get originalStyleUrls() {
@@ -247,10 +254,5 @@ export class NvIcon {
247
254
  }
248
255
  };
249
256
  }
250
- static get states() {
251
- return {
252
- "spriteUrl": {}
253
- };
254
- }
255
257
  }
256
258
  //# sourceMappingURL=nv-icon.js.map