igniteui-webcomponents 7.2.3 → 7.3.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (980) hide show
  1. package/CHANGELOG.md +156 -0
  2. package/animations/player.d.ts +4 -11
  3. package/animations/player.js +4 -10
  4. package/animations/player.js.map +1 -1
  5. package/animations/view-transition.d.ts +44 -0
  6. package/animations/view-transition.js +81 -0
  7. package/animations/view-transition.js.map +1 -0
  8. package/components/accordion/accordion.d.ts +1 -1
  9. package/components/accordion/accordion.js +7 -6
  10. package/components/accordion/accordion.js.map +1 -1
  11. package/components/avatar/avatar.js +10 -10
  12. package/components/avatar/avatar.js.map +1 -1
  13. package/components/avatar/themes/themes.d.ts +1 -1
  14. package/components/avatar/themes/themes.js.map +1 -1
  15. package/components/badge/badge.d.ts +1 -1
  16. package/components/badge/badge.js +5 -5
  17. package/components/badge/badge.js.map +1 -1
  18. package/components/badge/themes/themes.d.ts +1 -1
  19. package/components/badge/themes/themes.js.map +1 -1
  20. package/components/banner/banner.d.ts +2 -2
  21. package/components/banner/banner.js +8 -8
  22. package/components/banner/banner.js.map +1 -1
  23. package/components/banner/themes/themes.d.ts +1 -1
  24. package/components/banner/themes/themes.js.map +1 -1
  25. package/components/button/button-base.d.ts +2 -2
  26. package/components/button/button-base.js +15 -12
  27. package/components/button/button-base.js.map +1 -1
  28. package/components/button/button.d.ts +3 -3
  29. package/components/button/button.js +2 -2
  30. package/components/button/button.js.map +1 -1
  31. package/components/button/icon-button.js +12 -12
  32. package/components/button/icon-button.js.map +1 -1
  33. package/components/button/themes/button/themes.d.ts +1 -1
  34. package/components/button/themes/button/themes.js.map +1 -1
  35. package/components/button/themes/icon-button/themes.d.ts +1 -1
  36. package/components/button/themes/icon-button/themes.js.map +1 -1
  37. package/components/button-group/button-group.d.ts +42 -21
  38. package/components/button-group/button-group.js +101 -106
  39. package/components/button-group/button-group.js.map +1 -1
  40. package/components/button-group/themes/button.d.ts +1 -1
  41. package/components/button-group/themes/button.js.map +1 -1
  42. package/components/button-group/themes/group.d.ts +1 -1
  43. package/components/button-group/themes/group.js.map +1 -1
  44. package/components/button-group/toggle-button.d.ts +17 -10
  45. package/components/button-group/toggle-button.js +28 -13
  46. package/components/button-group/toggle-button.js.map +1 -1
  47. package/components/calendar/base.d.ts +29 -10
  48. package/components/calendar/base.js +12 -15
  49. package/components/calendar/base.js.map +1 -1
  50. package/components/calendar/calendar.d.ts +39 -8
  51. package/components/calendar/calendar.js +96 -85
  52. package/components/calendar/calendar.js.map +1 -1
  53. package/components/calendar/days-view/days-view.d.ts +49 -22
  54. package/components/calendar/days-view/days-view.js +102 -163
  55. package/components/calendar/days-view/days-view.js.map +1 -1
  56. package/components/calendar/helpers.d.ts +3 -62
  57. package/components/calendar/helpers.js +6 -110
  58. package/components/calendar/helpers.js.map +1 -1
  59. package/components/calendar/months-view/months-view.d.ts +7 -21
  60. package/components/calendar/months-view/months-view.js +30 -83
  61. package/components/calendar/months-view/months-view.js.map +1 -1
  62. package/components/calendar/selection.d.ts +21 -0
  63. package/components/calendar/selection.js +42 -0
  64. package/components/calendar/selection.js.map +1 -0
  65. package/components/calendar/themes/calendar.d.ts +1 -1
  66. package/components/calendar/themes/calendar.js.map +1 -1
  67. package/components/calendar/themes/days.d.ts +1 -1
  68. package/components/calendar/themes/days.js.map +1 -1
  69. package/components/calendar/themes/year-month.d.ts +1 -1
  70. package/components/calendar/themes/year-month.js.map +1 -1
  71. package/components/calendar/types.d.ts +18 -0
  72. package/components/calendar/types.js.map +1 -1
  73. package/components/calendar/year-month-view.base.d.ts +44 -0
  74. package/components/calendar/year-month-view.base.js +89 -0
  75. package/components/calendar/year-month-view.base.js.map +1 -0
  76. package/components/calendar/years-view/years-view.d.ts +7 -20
  77. package/components/calendar/years-view/years-view.js +25 -79
  78. package/components/calendar/years-view/years-view.js.map +1 -1
  79. package/components/card/card.actions.js +2 -2
  80. package/components/card/card.actions.js.map +1 -1
  81. package/components/card/card.content.d.ts +1 -1
  82. package/components/card/card.content.js +2 -2
  83. package/components/card/card.content.js.map +1 -1
  84. package/components/card/card.d.ts +1 -1
  85. package/components/card/card.header.js +2 -2
  86. package/components/card/card.header.js.map +1 -1
  87. package/components/card/card.js +2 -2
  88. package/components/card/card.js.map +1 -1
  89. package/components/card/card.media.d.ts +1 -1
  90. package/components/card/card.media.js +1 -1
  91. package/components/card/card.media.js.map +1 -1
  92. package/components/card/themes/actions.d.ts +1 -1
  93. package/components/card/themes/actions.js.map +1 -1
  94. package/components/card/themes/container.d.ts +1 -1
  95. package/components/card/themes/container.js.map +1 -1
  96. package/components/card/themes/content.d.ts +1 -1
  97. package/components/card/themes/content.js.map +1 -1
  98. package/components/card/themes/header.d.ts +1 -1
  99. package/components/card/themes/header.js.map +1 -1
  100. package/components/carousel/animations.d.ts +1 -1
  101. package/components/carousel/animations.js +2 -2
  102. package/components/carousel/animations.js.map +1 -1
  103. package/components/carousel/carousel-indicator-container.js +4 -4
  104. package/components/carousel/carousel-indicator-container.js.map +1 -1
  105. package/components/carousel/carousel-indicator.d.ts +1 -1
  106. package/components/carousel/carousel-indicator.js +5 -5
  107. package/components/carousel/carousel-indicator.js.map +1 -1
  108. package/components/carousel/carousel-slide.d.ts +1 -1
  109. package/components/carousel/carousel-slide.js +9 -9
  110. package/components/carousel/carousel-slide.js.map +1 -1
  111. package/components/carousel/carousel.d.ts +7 -7
  112. package/components/carousel/carousel.js +40 -30
  113. package/components/carousel/carousel.js.map +1 -1
  114. package/components/carousel/themes/container.d.ts +1 -1
  115. package/components/carousel/themes/container.js.map +1 -1
  116. package/components/carousel/themes/indicator-container.d.ts +1 -1
  117. package/components/carousel/themes/indicator-container.js.map +1 -1
  118. package/components/chat/chat-input.d.ts +4 -4
  119. package/components/chat/chat-input.js +13 -12
  120. package/components/chat/chat-input.js.map +1 -1
  121. package/components/chat/chat-message.d.ts +1 -1
  122. package/components/chat/chat-message.js +7 -6
  123. package/components/chat/chat-message.js.map +1 -1
  124. package/components/chat/chat-state.d.ts +2 -2
  125. package/components/chat/chat-state.js +2 -1
  126. package/components/chat/chat-state.js.map +1 -1
  127. package/components/chat/chat.d.ts +4 -4
  128. package/components/chat/chat.js +13 -13
  129. package/components/chat/chat.js.map +1 -1
  130. package/components/chat/message-attachments.js +5 -5
  131. package/components/chat/message-attachments.js.map +1 -1
  132. package/components/chat/themes/attachments.d.ts +1 -1
  133. package/components/chat/themes/attachments.js.map +1 -1
  134. package/components/chat/themes/input.d.ts +1 -1
  135. package/components/chat/themes/input.js.map +1 -1
  136. package/components/chat/themes/message.d.ts +1 -1
  137. package/components/chat/themes/message.js.map +1 -1
  138. package/components/chat/themes/themes.d.ts +1 -1
  139. package/components/chat/themes/themes.js.map +1 -1
  140. package/components/chat/types.d.ts +2 -2
  141. package/components/chat/types.js.map +1 -1
  142. package/components/chat/utils.d.ts +1 -1
  143. package/components/chat/utils.js +3 -3
  144. package/components/chat/utils.js.map +1 -1
  145. package/components/checkbox/checkbox-base.d.ts +7 -7
  146. package/components/checkbox/checkbox-base.js +7 -7
  147. package/components/checkbox/checkbox-base.js.map +1 -1
  148. package/components/checkbox/checkbox.js +7 -6
  149. package/components/checkbox/checkbox.js.map +1 -1
  150. package/components/checkbox/switch.js +7 -6
  151. package/components/checkbox/switch.js.map +1 -1
  152. package/components/checkbox/themes/checkbox-themes.d.ts +1 -1
  153. package/components/checkbox/themes/checkbox-themes.js.map +1 -1
  154. package/components/checkbox/themes/switch-themes.d.ts +1 -1
  155. package/components/checkbox/themes/switch-themes.js.map +1 -1
  156. package/components/checkbox/validators.d.ts +1 -1
  157. package/components/checkbox/validators.js +1 -1
  158. package/components/checkbox/validators.js.map +1 -1
  159. package/components/chip/chip.d.ts +9 -3
  160. package/components/chip/chip.js +10 -6
  161. package/components/chip/chip.js.map +1 -1
  162. package/components/chip/themes/chip.base.css.js +1 -1
  163. package/components/chip/themes/chip.base.css.js.map +1 -1
  164. package/components/chip/themes/dark/chip.bootstrap.css.js +1 -1
  165. package/components/chip/themes/dark/chip.bootstrap.css.js.map +1 -1
  166. package/components/chip/themes/dark/chip.fluent.css.js +1 -1
  167. package/components/chip/themes/dark/chip.fluent.css.js.map +1 -1
  168. package/components/chip/themes/dark/chip.indigo.css.js +1 -1
  169. package/components/chip/themes/dark/chip.indigo.css.js.map +1 -1
  170. package/components/chip/themes/dark/chip.material.css.js +1 -1
  171. package/components/chip/themes/dark/chip.material.css.js.map +1 -1
  172. package/components/chip/themes/light/chip.bootstrap.css.js +1 -1
  173. package/components/chip/themes/light/chip.bootstrap.css.js.map +1 -1
  174. package/components/chip/themes/light/chip.fluent.css.js +1 -1
  175. package/components/chip/themes/light/chip.fluent.css.js.map +1 -1
  176. package/components/chip/themes/light/chip.indigo.css.js +1 -1
  177. package/components/chip/themes/light/chip.indigo.css.js.map +1 -1
  178. package/components/chip/themes/light/chip.material.css.js +1 -1
  179. package/components/chip/themes/light/chip.material.css.js.map +1 -1
  180. package/components/chip/themes/light/chip.shared.css.js +1 -1
  181. package/components/chip/themes/light/chip.shared.css.js.map +1 -1
  182. package/components/chip/themes/shared/chip.bootstrap.css.js +1 -1
  183. package/components/chip/themes/shared/chip.bootstrap.css.js.map +1 -1
  184. package/components/chip/themes/shared/chip.common.css.js +1 -1
  185. package/components/chip/themes/shared/chip.common.css.js.map +1 -1
  186. package/components/chip/themes/shared/chip.fluent.css.js +1 -1
  187. package/components/chip/themes/shared/chip.fluent.css.js.map +1 -1
  188. package/components/chip/themes/shared/chip.indigo.css.js +1 -1
  189. package/components/chip/themes/shared/chip.indigo.css.js.map +1 -1
  190. package/components/chip/themes/themes.d.ts +1 -1
  191. package/components/chip/themes/themes.js.map +1 -1
  192. package/components/combo/combo-header.js +2 -2
  193. package/components/combo/combo-header.js.map +1 -1
  194. package/components/combo/combo-item.d.ts +0 -2
  195. package/components/combo/combo-item.js +4 -7
  196. package/components/combo/combo-item.js.map +1 -1
  197. package/components/combo/combo.d.ts +84 -26
  198. package/components/combo/combo.js +197 -152
  199. package/components/combo/combo.js.map +1 -1
  200. package/components/combo/controllers/data.d.ts +30 -3
  201. package/components/combo/controllers/data.js +34 -9
  202. package/components/combo/controllers/data.js.map +1 -1
  203. package/components/combo/controllers/navigation.d.ts +8 -2
  204. package/components/combo/controllers/navigation.js +11 -12
  205. package/components/combo/controllers/navigation.js.map +1 -1
  206. package/components/combo/operations/filter.d.ts +17 -1
  207. package/components/combo/operations/filter.js +29 -9
  208. package/components/combo/operations/filter.js.map +1 -1
  209. package/components/combo/operations/group.js +1 -1
  210. package/components/combo/operations/group.js.map +1 -1
  211. package/components/combo/themes/combo.base.css.js +1 -1
  212. package/components/combo/themes/combo.base.css.js.map +1 -1
  213. package/components/combo/themes/themes.d.ts +1 -1
  214. package/components/combo/themes/themes.js.map +1 -1
  215. package/components/combo/types.d.ts +8 -4
  216. package/components/combo/types.js.map +1 -1
  217. package/components/combo/validators.d.ts +1 -1
  218. package/components/combo/validators.js.map +1 -1
  219. package/components/date-picker/date-picker.base.d.ts +294 -0
  220. package/components/date-picker/date-picker.base.js +480 -0
  221. package/components/date-picker/date-picker.base.js.map +1 -0
  222. package/components/date-picker/date-picker.d.ts +52 -172
  223. package/components/date-picker/date-picker.js +88 -393
  224. package/components/date-picker/date-picker.js.map +1 -1
  225. package/components/date-picker/themes/themes.d.ts +1 -1
  226. package/components/date-picker/themes/themes.js.map +1 -1
  227. package/components/date-picker/validators.d.ts +1 -1
  228. package/components/date-picker/validators.js +2 -2
  229. package/components/date-picker/validators.js.map +1 -1
  230. package/components/date-range-picker/date-range-input.d.ts +12 -14
  231. package/components/date-range-picker/date-range-input.js +42 -98
  232. package/components/date-range-picker/date-range-input.js.map +1 -1
  233. package/components/date-range-picker/date-range-mask-parser.d.ts +22 -34
  234. package/components/date-range-picker/date-range-mask-parser.js +38 -69
  235. package/components/date-range-picker/date-range-mask-parser.js.map +1 -1
  236. package/components/date-range-picker/date-range-picker.d.ts +98 -191
  237. package/components/date-range-picker/date-range-picker.js +210 -530
  238. package/components/date-range-picker/date-range-picker.js.map +1 -1
  239. package/components/date-range-picker/predefined-ranges-area.d.ts +2 -2
  240. package/components/date-range-picker/predefined-ranges-area.js +5 -5
  241. package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
  242. package/components/date-range-picker/themes/ranges-themes.d.ts +1 -1
  243. package/components/date-range-picker/themes/ranges-themes.js.map +1 -1
  244. package/components/date-range-picker/themes/themes.d.ts +1 -1
  245. package/components/date-range-picker/themes/themes.js.map +1 -1
  246. package/components/date-range-picker/validators.d.ts +1 -1
  247. package/components/date-range-picker/validators.js +15 -22
  248. package/components/date-range-picker/validators.js.map +1 -1
  249. package/components/date-time-input/date-part.d.ts +18 -1
  250. package/components/date-time-input/date-part.js +10 -0
  251. package/components/date-time-input/date-part.js.map +1 -1
  252. package/components/date-time-input/date-time-input.base.d.ts +74 -12
  253. package/components/date-time-input/date-time-input.base.js +99 -27
  254. package/components/date-time-input/date-time-input.base.js.map +1 -1
  255. package/components/date-time-input/date-time-input.d.ts +13 -23
  256. package/components/date-time-input/date-time-input.js +45 -65
  257. package/components/date-time-input/date-time-input.js.map +1 -1
  258. package/components/date-time-input/datetime-mask-parser.d.ts +45 -109
  259. package/components/date-time-input/datetime-mask-parser.js +88 -139
  260. package/components/date-time-input/datetime-mask-parser.js.map +1 -1
  261. package/components/date-time-input/validators.d.ts +1 -1
  262. package/components/date-time-input/validators.js +2 -2
  263. package/components/date-time-input/validators.js.map +1 -1
  264. package/components/dialog/dialog.d.ts +2 -2
  265. package/components/dialog/dialog.js +21 -22
  266. package/components/dialog/dialog.js.map +1 -1
  267. package/components/dialog/themes/themes.d.ts +1 -1
  268. package/components/dialog/themes/themes.js.map +1 -1
  269. package/components/divider/divider.d.ts +2 -1
  270. package/components/divider/divider.js +3 -3
  271. package/components/divider/divider.js.map +1 -1
  272. package/components/divider/themes/themes.d.ts +1 -1
  273. package/components/divider/themes/themes.js.map +1 -1
  274. package/components/dropdown/dropdown-group.d.ts +10 -3
  275. package/components/dropdown/dropdown-group.js +21 -5
  276. package/components/dropdown/dropdown-group.js.map +1 -1
  277. package/components/dropdown/dropdown-header.d.ts +2 -2
  278. package/components/dropdown/dropdown-header.js +7 -2
  279. package/components/dropdown/dropdown-header.js.map +1 -1
  280. package/components/dropdown/dropdown-item.d.ts +4 -4
  281. package/components/dropdown/dropdown-item.js +3 -3
  282. package/components/dropdown/dropdown-item.js.map +1 -1
  283. package/components/dropdown/dropdown.d.ts +75 -32
  284. package/components/dropdown/dropdown.js +189 -110
  285. package/components/dropdown/dropdown.js.map +1 -1
  286. package/components/dropdown/themes/container.d.ts +1 -1
  287. package/components/dropdown/themes/container.js.map +1 -1
  288. package/components/dropdown/themes/group.d.ts +1 -1
  289. package/components/dropdown/themes/group.js.map +1 -1
  290. package/components/dropdown/themes/header.d.ts +1 -1
  291. package/components/dropdown/themes/header.js.map +1 -1
  292. package/components/dropdown/themes/item.d.ts +1 -1
  293. package/components/dropdown/themes/item.js.map +1 -1
  294. package/components/expansion-panel/expansion-panel.d.ts +14 -5
  295. package/components/expansion-panel/expansion-panel.js +10 -9
  296. package/components/expansion-panel/expansion-panel.js.map +1 -1
  297. package/components/expansion-panel/themes/themes.d.ts +1 -1
  298. package/components/expansion-panel/themes/themes.js.map +1 -1
  299. package/components/file-input/file-input.d.ts +20 -12
  300. package/components/file-input/file-input.js +17 -12
  301. package/components/file-input/file-input.js.map +1 -1
  302. package/components/file-input/themes/themes.d.ts +1 -1
  303. package/components/file-input/themes/themes.js.map +1 -1
  304. package/components/file-input/validators.d.ts +1 -1
  305. package/components/file-input/validators.js +1 -1
  306. package/components/file-input/validators.js.map +1 -1
  307. package/components/focus-trap/focus-trap.js +3 -2
  308. package/components/focus-trap/focus-trap.js.map +1 -1
  309. package/components/highlight/highlight.js +2 -2
  310. package/components/highlight/highlight.js.map +1 -1
  311. package/components/highlight/service.d.ts +4 -1
  312. package/components/highlight/service.js +23 -7
  313. package/components/highlight/service.js.map +1 -1
  314. package/components/highlight/themes/themes.d.ts +1 -1
  315. package/components/highlight/themes/themes.js.map +1 -1
  316. package/components/icon/icon-references.d.ts +3 -2
  317. package/components/icon/icon-references.js +103 -491
  318. package/components/icon/icon-references.js.map +1 -1
  319. package/components/icon/icon-state.broadcast.d.ts +14 -17
  320. package/components/icon/icon-state.broadcast.js +19 -20
  321. package/components/icon/icon-state.broadcast.js.map +1 -1
  322. package/components/icon/icon.d.ts +14 -25
  323. package/components/icon/icon.js +37 -24
  324. package/components/icon/icon.js.map +1 -1
  325. package/components/icon/icon.registry.d.ts +69 -131
  326. package/components/icon/icon.registry.js +51 -53
  327. package/components/icon/icon.registry.js.map +1 -1
  328. package/components/icon/internal-icons-lib.js +2 -2
  329. package/components/icon/internal-icons-lib.js.map +1 -1
  330. package/components/icon/registry/parser.d.ts +15 -3
  331. package/components/icon/registry/parser.js +36 -11
  332. package/components/icon/registry/parser.js.map +1 -1
  333. package/components/icon/registry/types.d.ts +55 -11
  334. package/components/icon/registry/types.js.map +1 -1
  335. package/components/icon/themes/icon.base.css.js +1 -1
  336. package/components/icon/themes/icon.base.css.js.map +1 -1
  337. package/components/icon/themes/shared/icon.common.css.js +1 -1
  338. package/components/icon/themes/shared/icon.common.css.js.map +1 -1
  339. package/components/icon/themes/themes.d.ts +1 -1
  340. package/components/icon/themes/themes.js.map +1 -1
  341. package/components/input/input-base.d.ts +12 -12
  342. package/components/input/input-base.js +13 -15
  343. package/components/input/input-base.js.map +1 -1
  344. package/components/input/input.d.ts +15 -12
  345. package/components/input/input.js +8 -8
  346. package/components/input/input.js.map +1 -1
  347. package/components/input/themes/input.base.css.js +1 -1
  348. package/components/input/themes/input.base.css.js.map +1 -1
  349. package/components/input/themes/shared/input.bootstrap.css.js +1 -1
  350. package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
  351. package/components/input/themes/shared/input.common.css.js +1 -1
  352. package/components/input/themes/shared/input.common.css.js.map +1 -1
  353. package/components/input/themes/shared/input.fluent.css.js +1 -1
  354. package/components/input/themes/shared/input.fluent.css.js.map +1 -1
  355. package/components/input/themes/shared/input.indigo.css.js +1 -1
  356. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  357. package/components/input/themes/shared/input.material.css.js +1 -1
  358. package/components/input/themes/shared/input.material.css.js.map +1 -1
  359. package/components/input/themes/themes.d.ts +1 -1
  360. package/components/input/themes/themes.js.map +1 -1
  361. package/components/input/validators.d.ts +1 -1
  362. package/components/input/validators.js +1 -1
  363. package/components/input/validators.js.map +1 -1
  364. package/components/list/list-header.js +3 -3
  365. package/components/list/list-header.js.map +1 -1
  366. package/components/list/list-item.js +3 -3
  367. package/components/list/list-item.js.map +1 -1
  368. package/components/list/list.js +3 -3
  369. package/components/list/list.js.map +1 -1
  370. package/components/list/themes/container.d.ts +1 -1
  371. package/components/list/themes/container.js.map +1 -1
  372. package/components/list/themes/header.d.ts +1 -1
  373. package/components/list/themes/header.js.map +1 -1
  374. package/components/list/themes/item.d.ts +1 -1
  375. package/components/list/themes/item.js.map +1 -1
  376. package/components/mask-input/mask-history.d.ts +99 -0
  377. package/components/mask-input/mask-history.js +95 -0
  378. package/components/mask-input/mask-history.js.map +1 -0
  379. package/components/mask-input/mask-input.d.ts +14 -9
  380. package/components/mask-input/mask-input.js +20 -23
  381. package/components/mask-input/mask-input.js.map +1 -1
  382. package/components/mask-input/mask-parser.d.ts +20 -2
  383. package/components/mask-input/mask-parser.js +21 -13
  384. package/components/mask-input/mask-parser.js.map +1 -1
  385. package/components/mask-input/validators.d.ts +1 -1
  386. package/components/mask-input/validators.js +1 -1
  387. package/components/mask-input/validators.js.map +1 -1
  388. package/components/nav-drawer/nav-drawer-header-item.d.ts +1 -1
  389. package/components/nav-drawer/nav-drawer-header-item.js +2 -2
  390. package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
  391. package/components/nav-drawer/nav-drawer-item.d.ts +2 -2
  392. package/components/nav-drawer/nav-drawer-item.js +4 -4
  393. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  394. package/components/nav-drawer/nav-drawer.d.ts +3 -3
  395. package/components/nav-drawer/nav-drawer.js +11 -14
  396. package/components/nav-drawer/nav-drawer.js.map +1 -1
  397. package/components/nav-drawer/themes/container.base.css.js +1 -1
  398. package/components/nav-drawer/themes/container.base.css.js.map +1 -1
  399. package/components/nav-drawer/themes/container.d.ts +1 -1
  400. package/components/nav-drawer/themes/container.js +2 -3
  401. package/components/nav-drawer/themes/container.js.map +1 -1
  402. package/components/nav-drawer/themes/dark/container/nav-drawer.shared.css.js +1 -1
  403. package/components/nav-drawer/themes/dark/container/nav-drawer.shared.css.js.map +1 -1
  404. package/components/nav-drawer/themes/header-item.d.ts +1 -1
  405. package/components/nav-drawer/themes/header-item.js.map +1 -1
  406. package/components/nav-drawer/themes/item.d.ts +1 -1
  407. package/components/nav-drawer/themes/item.js.map +1 -1
  408. package/components/nav-drawer/themes/light/container/nav-drawer.bootstrap.css.js +1 -1
  409. package/components/nav-drawer/themes/light/container/nav-drawer.bootstrap.css.js.map +1 -1
  410. package/components/nav-drawer/themes/light/container/nav-drawer.fluent.css.js +1 -1
  411. package/components/nav-drawer/themes/light/container/nav-drawer.fluent.css.js.map +1 -1
  412. package/components/nav-drawer/themes/light/container/nav-drawer.indigo.css.js +1 -1
  413. package/components/nav-drawer/themes/light/container/nav-drawer.indigo.css.js.map +1 -1
  414. package/components/nav-drawer/themes/light/container/nav-drawer.shared.css.js +1 -1
  415. package/components/nav-drawer/themes/light/container/nav-drawer.shared.css.js.map +1 -1
  416. package/components/nav-drawer/themes/shared/container/nav-drawer.bootstrap.css.js +1 -1
  417. package/components/nav-drawer/themes/shared/container/nav-drawer.bootstrap.css.js.map +1 -1
  418. package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js +1 -1
  419. package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js.map +1 -1
  420. package/components/nav-drawer/themes/shared/container/nav-drawer.material.css.js +1 -1
  421. package/components/nav-drawer/themes/shared/container/nav-drawer.material.css.js.map +1 -1
  422. package/components/navbar/navbar.js +2 -2
  423. package/components/navbar/navbar.js.map +1 -1
  424. package/components/navbar/themes/themes.d.ts +1 -1
  425. package/components/navbar/themes/themes.js.map +1 -1
  426. package/components/popover/popover.d.ts +10 -3
  427. package/components/popover/popover.js +114 -99
  428. package/components/popover/popover.js.map +1 -1
  429. package/components/progress/base.d.ts +1 -1
  430. package/components/progress/base.js +5 -4
  431. package/components/progress/base.js.map +1 -1
  432. package/components/progress/circular-gradient.d.ts +2 -2
  433. package/components/progress/circular-gradient.js +1 -1
  434. package/components/progress/circular-gradient.js.map +1 -1
  435. package/components/progress/circular-progress.d.ts +15 -15
  436. package/components/progress/circular-progress.js +7 -6
  437. package/components/progress/circular-progress.js.map +1 -1
  438. package/components/progress/linear-progress.d.ts +12 -12
  439. package/components/progress/linear-progress.js +4 -4
  440. package/components/progress/linear-progress.js.map +1 -1
  441. package/components/progress/themes/circular/circular.progress.base.css.js +1 -1
  442. package/components/progress/themes/circular/circular.progress.base.css.js.map +1 -1
  443. package/components/progress/themes/circular/themes.d.ts +1 -1
  444. package/components/progress/themes/circular/themes.js.map +1 -1
  445. package/components/progress/themes/linear/linear.progress.base.css.js +1 -1
  446. package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
  447. package/components/progress/themes/linear/themes.d.ts +1 -1
  448. package/components/progress/themes/linear/themes.js.map +1 -1
  449. package/components/qr-code/model/encode.d.ts +20 -0
  450. package/components/qr-code/model/encode.js +166 -0
  451. package/components/qr-code/model/encode.js.map +1 -0
  452. package/components/qr-code/model/error-correction.d.ts +15 -0
  453. package/components/qr-code/model/error-correction.js +1114 -0
  454. package/components/qr-code/model/error-correction.js.map +1 -0
  455. package/components/qr-code/model/mask.d.ts +11 -0
  456. package/components/qr-code/model/mask.js +161 -0
  457. package/components/qr-code/model/mask.js.map +1 -0
  458. package/components/qr-code/model/matrix.d.ts +15 -0
  459. package/components/qr-code/model/matrix.js +277 -0
  460. package/components/qr-code/model/matrix.js.map +1 -0
  461. package/components/qr-code/qr-code.d.ts +134 -0
  462. package/components/qr-code/qr-code.js +221 -0
  463. package/components/qr-code/qr-code.js.map +1 -0
  464. package/components/qr-code/renderer/constants.d.ts +26 -0
  465. package/components/qr-code/renderer/constants.js +5 -0
  466. package/components/qr-code/renderer/constants.js.map +1 -0
  467. package/components/qr-code/renderer/corner.d.ts +23 -0
  468. package/components/qr-code/renderer/corner.js +25 -0
  469. package/components/qr-code/renderer/corner.js.map +1 -0
  470. package/components/qr-code/renderer/dots.d.ts +14 -0
  471. package/components/qr-code/renderer/dots.js +7 -0
  472. package/components/qr-code/renderer/dots.js.map +1 -0
  473. package/components/qr-code/renderer/helpers.d.ts +18 -0
  474. package/components/qr-code/renderer/helpers.js +158 -0
  475. package/components/qr-code/renderer/helpers.js.map +1 -0
  476. package/components/qr-code/renderer/image.d.ts +23 -0
  477. package/components/qr-code/renderer/image.js +29 -0
  478. package/components/qr-code/renderer/image.js.map +1 -0
  479. package/components/qr-code/themes/dark/qr-code.bootstrap.css.js +3 -0
  480. package/components/qr-code/themes/dark/qr-code.bootstrap.css.js.map +1 -0
  481. package/components/qr-code/themes/dark/qr-code.fluent.css.d.ts +1 -0
  482. package/components/qr-code/themes/dark/qr-code.fluent.css.js +3 -0
  483. package/components/qr-code/themes/dark/qr-code.fluent.css.js.map +1 -0
  484. package/components/qr-code/themes/dark/qr-code.indigo.css.d.ts +1 -0
  485. package/components/qr-code/themes/dark/qr-code.indigo.css.js +3 -0
  486. package/components/qr-code/themes/dark/qr-code.indigo.css.js.map +1 -0
  487. package/components/qr-code/themes/dark/qr-code.material.css.d.ts +1 -0
  488. package/components/qr-code/themes/dark/qr-code.material.css.js +3 -0
  489. package/components/qr-code/themes/dark/qr-code.material.css.js.map +1 -0
  490. package/components/qr-code/themes/light/qr-code.bootstrap.css.d.ts +1 -0
  491. package/components/qr-code/themes/light/qr-code.bootstrap.css.js +3 -0
  492. package/components/qr-code/themes/light/qr-code.bootstrap.css.js.map +1 -0
  493. package/components/qr-code/themes/light/qr-code.fluent.css.d.ts +1 -0
  494. package/components/qr-code/themes/light/qr-code.fluent.css.js +3 -0
  495. package/components/qr-code/themes/light/qr-code.fluent.css.js.map +1 -0
  496. package/components/qr-code/themes/light/qr-code.indigo.css.d.ts +1 -0
  497. package/components/qr-code/themes/light/qr-code.indigo.css.js +3 -0
  498. package/components/qr-code/themes/light/qr-code.indigo.css.js.map +1 -0
  499. package/components/qr-code/themes/light/qr-code.material.css.d.ts +1 -0
  500. package/components/qr-code/themes/light/qr-code.material.css.js +3 -0
  501. package/components/qr-code/themes/light/qr-code.material.css.js.map +1 -0
  502. package/components/qr-code/themes/light/qr-code.shared.css.d.ts +1 -0
  503. package/components/qr-code/themes/light/qr-code.shared.css.js +3 -0
  504. package/components/qr-code/themes/light/qr-code.shared.css.js.map +1 -0
  505. package/components/qr-code/themes/qr-code.base.css.d.ts +1 -0
  506. package/components/qr-code/themes/qr-code.base.css.js +3 -0
  507. package/components/qr-code/themes/qr-code.base.css.js.map +1 -0
  508. package/components/qr-code/themes/shared/qr-code.common.css.d.ts +1 -0
  509. package/components/qr-code/themes/shared/qr-code.common.css.js +3 -0
  510. package/components/qr-code/themes/shared/qr-code.common.css.js.map +1 -0
  511. package/components/qr-code/themes/themes.d.ts +2 -0
  512. package/components/qr-code/themes/themes.js +46 -0
  513. package/components/qr-code/themes/themes.js.map +1 -0
  514. package/components/qr-code/types.d.ts +16 -0
  515. package/components/qr-code/types.js +2 -0
  516. package/components/qr-code/types.js.map +1 -0
  517. package/components/radio/controller.d.ts +35 -0
  518. package/components/radio/controller.js +100 -0
  519. package/components/radio/controller.js.map +1 -0
  520. package/components/radio/radio.d.ts +26 -14
  521. package/components/radio/radio.js +47 -36
  522. package/components/radio/radio.js.map +1 -1
  523. package/components/radio/themes/themes.d.ts +1 -1
  524. package/components/radio/themes/themes.js.map +1 -1
  525. package/components/radio/validators.d.ts +1 -1
  526. package/components/radio/validators.js +5 -3
  527. package/components/radio/validators.js.map +1 -1
  528. package/components/radio-group/radio-group.d.ts +19 -10
  529. package/components/radio-group/radio-group.js +50 -41
  530. package/components/radio-group/radio-group.js.map +1 -1
  531. package/components/radio-group/themes/themes.d.ts +1 -1
  532. package/components/radio-group/themes/themes.js.map +1 -1
  533. package/components/rating/rating-symbol.d.ts +1 -1
  534. package/components/rating/rating-symbol.js +1 -1
  535. package/components/rating/rating-symbol.js.map +1 -1
  536. package/components/rating/rating.d.ts +6 -6
  537. package/components/rating/rating.js +12 -9
  538. package/components/rating/rating.js.map +1 -1
  539. package/components/rating/themes/themes.d.ts +1 -1
  540. package/components/rating/themes/themes.js.map +1 -1
  541. package/components/resize-container/resize-container.d.ts +4 -4
  542. package/components/resize-container/resize-container.js +4 -4
  543. package/components/resize-container/resize-container.js.map +1 -1
  544. package/components/resize-container/resize-controller.js +2 -2
  545. package/components/resize-container/resize-controller.js.map +1 -1
  546. package/components/resize-container/themes/themes.d.ts +1 -1
  547. package/components/resize-container/themes/themes.js.map +1 -1
  548. package/components/ripple/ripple.d.ts +1 -1
  549. package/components/ripple/ripple.js +3 -2
  550. package/components/ripple/ripple.js.map +1 -1
  551. package/components/select/select-group.d.ts +9 -2
  552. package/components/select/select-group.js +21 -5
  553. package/components/select/select-group.js.map +1 -1
  554. package/components/select/select-header.d.ts +1 -1
  555. package/components/select/select-header.js +7 -2
  556. package/components/select/select-header.js.map +1 -1
  557. package/components/select/select-item.d.ts +4 -4
  558. package/components/select/select-item.js +3 -3
  559. package/components/select/select-item.js.map +1 -1
  560. package/components/select/select.d.ts +49 -22
  561. package/components/select/select.js +132 -67
  562. package/components/select/select.js.map +1 -1
  563. package/components/select/themes/select.base.css.js +1 -1
  564. package/components/select/themes/select.base.css.js.map +1 -1
  565. package/components/select/themes/themes.d.ts +1 -1
  566. package/components/select/themes/themes.js.map +1 -1
  567. package/components/select/validators.d.ts +1 -1
  568. package/components/select/validators.js +1 -1
  569. package/components/select/validators.js.map +1 -1
  570. package/components/slider/range-slider.d.ts +2 -2
  571. package/components/slider/range-slider.js +8 -8
  572. package/components/slider/range-slider.js.map +1 -1
  573. package/components/slider/slider-base.js +18 -14
  574. package/components/slider/slider-base.js.map +1 -1
  575. package/components/slider/slider-label.js +1 -1
  576. package/components/slider/slider-label.js.map +1 -1
  577. package/components/slider/slider.d.ts +3 -3
  578. package/components/slider/slider.js +6 -6
  579. package/components/slider/slider.js.map +1 -1
  580. package/components/slider/themes/themes.d.ts +1 -1
  581. package/components/slider/themes/themes.js.map +1 -1
  582. package/components/snackbar/snackbar.d.ts +3 -3
  583. package/components/snackbar/snackbar.js +8 -8
  584. package/components/snackbar/snackbar.js.map +1 -1
  585. package/components/snackbar/themes/themes.d.ts +1 -1
  586. package/components/snackbar/themes/themes.js.map +1 -1
  587. package/components/splitter/splitter.d.ts +106 -23
  588. package/components/splitter/splitter.js +234 -147
  589. package/components/splitter/splitter.js.map +1 -1
  590. package/components/splitter/themes/themes.d.ts +1 -1
  591. package/components/splitter/themes/themes.js.map +1 -1
  592. package/components/splitter/types.d.ts +14 -3
  593. package/components/splitter/types.js.map +1 -1
  594. package/components/stepper/common/animations.d.ts +1 -1
  595. package/components/stepper/common/animations.js +2 -2
  596. package/components/stepper/common/animations.js.map +1 -1
  597. package/components/stepper/step.d.ts +1 -1
  598. package/components/stepper/step.js +7 -7
  599. package/components/stepper/step.js.map +1 -1
  600. package/components/stepper/stepper.d.ts +5 -5
  601. package/components/stepper/stepper.js +12 -9
  602. package/components/stepper/stepper.js.map +1 -1
  603. package/components/stepper/themes/step/themes.d.ts +1 -1
  604. package/components/stepper/themes/step/themes.js.map +1 -1
  605. package/components/tabs/tab-dom.d.ts +31 -28
  606. package/components/tabs/tab-dom.js +84 -34
  607. package/components/tabs/tab-dom.js.map +1 -1
  608. package/components/tabs/tab.d.ts +24 -6
  609. package/components/tabs/tab.js +34 -13
  610. package/components/tabs/tab.js.map +1 -1
  611. package/components/tabs/tabs.d.ts +36 -22
  612. package/components/tabs/tabs.js +118 -88
  613. package/components/tabs/tabs.js.map +1 -1
  614. package/components/tabs/themes/shared/tabs/tabs.indigo.css.js +1 -1
  615. package/components/tabs/themes/shared/tabs/tabs.indigo.css.js.map +1 -1
  616. package/components/tabs/themes/tab-themes.d.ts +1 -1
  617. package/components/tabs/themes/tab-themes.js.map +1 -1
  618. package/components/tabs/themes/tabs-themes.d.ts +1 -1
  619. package/components/tabs/themes/tabs-themes.js.map +1 -1
  620. package/components/tabs/themes/tabs.base.css.js +1 -1
  621. package/components/tabs/themes/tabs.base.css.js.map +1 -1
  622. package/components/textarea/textarea.d.ts +19 -14
  623. package/components/textarea/textarea.js +22 -16
  624. package/components/textarea/textarea.js.map +1 -1
  625. package/components/textarea/themes/themes.d.ts +1 -1
  626. package/components/textarea/themes/themes.js.map +1 -1
  627. package/components/textarea/validators.d.ts +1 -1
  628. package/components/textarea/validators.js +1 -1
  629. package/components/textarea/validators.js.map +1 -1
  630. package/components/theme-provider/theme-provider.d.ts +1 -1
  631. package/components/theme-provider/theme-provider.js +2 -2
  632. package/components/theme-provider/theme-provider.js.map +1 -1
  633. package/components/tile-manager/position.d.ts +1 -1
  634. package/components/tile-manager/position.js +2 -2
  635. package/components/tile-manager/position.js.map +1 -1
  636. package/components/tile-manager/resize-state.js +4 -3
  637. package/components/tile-manager/resize-state.js.map +1 -1
  638. package/components/tile-manager/themes/container.d.ts +1 -1
  639. package/components/tile-manager/themes/container.js.map +1 -1
  640. package/components/tile-manager/themes/tile.d.ts +1 -1
  641. package/components/tile-manager/themes/tile.js.map +1 -1
  642. package/components/tile-manager/tile-ghost-util.js +1 -1
  643. package/components/tile-manager/tile-ghost-util.js.map +1 -1
  644. package/components/tile-manager/tile-manager.d.ts +1 -1
  645. package/components/tile-manager/tile-manager.js +7 -7
  646. package/components/tile-manager/tile-manager.js.map +1 -1
  647. package/components/tile-manager/tile.d.ts +4 -4
  648. package/components/tile-manager/tile.js +29 -25
  649. package/components/tile-manager/tile.js.map +1 -1
  650. package/components/toast/themes/themes.d.ts +1 -1
  651. package/components/toast/themes/themes.js.map +1 -1
  652. package/components/toast/toast.d.ts +1 -1
  653. package/components/toast/toast.js +3 -3
  654. package/components/toast/toast.js.map +1 -1
  655. package/components/tooltip/controller.d.ts +18 -16
  656. package/components/tooltip/controller.js +62 -41
  657. package/components/tooltip/controller.js.map +1 -1
  658. package/components/tooltip/service.d.ts +2 -1
  659. package/components/tooltip/service.js +10 -15
  660. package/components/tooltip/service.js.map +1 -1
  661. package/components/tooltip/themes/shared/tooltip.common.css.js +1 -1
  662. package/components/tooltip/themes/shared/tooltip.common.css.js.map +1 -1
  663. package/components/tooltip/themes/shared/tooltip.indigo.css.js +1 -1
  664. package/components/tooltip/themes/shared/tooltip.indigo.css.js.map +1 -1
  665. package/components/tooltip/themes/themes.d.ts +1 -1
  666. package/components/tooltip/themes/themes.js.map +1 -1
  667. package/components/tooltip/themes/tooltip.base.css.js +1 -1
  668. package/components/tooltip/themes/tooltip.base.css.js.map +1 -1
  669. package/components/tooltip/tooltip.d.ts +64 -18
  670. package/components/tooltip/tooltip.js +112 -62
  671. package/components/tooltip/tooltip.js.map +1 -1
  672. package/components/tree/themes/container.base.css.js +1 -1
  673. package/components/tree/themes/container.base.css.js.map +1 -1
  674. package/components/tree/themes/container.d.ts +1 -1
  675. package/components/tree/themes/container.js.map +1 -1
  676. package/components/tree/themes/item.base.css.js +1 -1
  677. package/components/tree/themes/item.base.css.js.map +1 -1
  678. package/components/tree/themes/item.d.ts +1 -1
  679. package/components/tree/themes/item.js.map +1 -1
  680. package/components/tree/tree-item.d.ts +62 -36
  681. package/components/tree/tree-item.js +223 -233
  682. package/components/tree/tree-item.js.map +1 -1
  683. package/components/tree/tree.common.d.ts +16 -1
  684. package/components/tree/tree.common.js +40 -1
  685. package/components/tree/tree.common.js.map +1 -1
  686. package/components/tree/tree.d.ts +21 -14
  687. package/components/tree/tree.js +64 -72
  688. package/components/tree/tree.js.map +1 -1
  689. package/components/tree/tree.navigation.d.ts +39 -29
  690. package/components/tree/tree.navigation.js +140 -192
  691. package/components/tree/tree.navigation.js.map +1 -1
  692. package/components/tree/tree.selection.d.ts +32 -31
  693. package/components/tree/tree.selection.js +184 -178
  694. package/components/tree/tree.selection.js.map +1 -1
  695. package/components/types.js.map +1 -1
  696. package/components/validation-container/validation-container.d.ts +33 -6
  697. package/components/validation-container/validation-container.js +81 -70
  698. package/components/validation-container/validation-container.js.map +1 -1
  699. package/components/virtualization/engine.d.ts +92 -0
  700. package/components/virtualization/engine.js +217 -0
  701. package/components/virtualization/engine.js.map +1 -0
  702. package/components/virtualization/types.d.ts +53 -0
  703. package/components/virtualization/types.js +14 -0
  704. package/components/virtualization/types.js.map +1 -0
  705. package/components/virtualization/virtualization.d.ts +235 -0
  706. package/components/virtualization/virtualization.js +474 -0
  707. package/components/virtualization/virtualization.js.map +1 -0
  708. package/components/visually-hidden/visually-hidden.js +1 -1
  709. package/components/visually-hidden/visually-hidden.js.map +1 -1
  710. package/custom-elements.json +57500 -47242
  711. package/extras/chat-markdown-renderer.d.ts +1 -1
  712. package/extras/chat-markdown-renderer.js.map +1 -1
  713. package/igniteui-webcomponents.css-data.json +2 -2
  714. package/igniteui-webcomponents.html-data.json +1 -1
  715. package/index.d.ts +20 -15
  716. package/index.js +11 -9
  717. package/index.js.map +1 -1
  718. package/internals/abort-handler.js.map +1 -0
  719. package/internals/context.d.ts +39 -0
  720. package/{components/common → internals}/context.js +2 -1
  721. package/internals/context.js.map +1 -0
  722. package/internals/controllers/adopt-styles.d.ts +76 -0
  723. package/internals/controllers/adopt-styles.js +173 -0
  724. package/internals/controllers/adopt-styles.js.map +1 -0
  725. package/internals/controllers/aria-projection.d.ts +144 -0
  726. package/internals/controllers/aria-projection.js +138 -0
  727. package/internals/controllers/aria-projection.js.map +1 -0
  728. package/{components/common → internals}/controllers/async-consumer.js +8 -7
  729. package/internals/controllers/async-consumer.js.map +1 -0
  730. package/internals/controllers/command.js.map +1 -0
  731. package/{components/common → internals}/controllers/drag.js +3 -2
  732. package/internals/controllers/drag.js.map +1 -0
  733. package/{components/common → internals}/controllers/focus-ring.js +5 -2
  734. package/internals/controllers/focus-ring.js.map +1 -0
  735. package/{components/common → internals}/controllers/fullscreen.js +6 -3
  736. package/internals/controllers/fullscreen.js.map +1 -0
  737. package/{components/common → internals}/controllers/gestures.d.ts +1 -1
  738. package/{components/common → internals}/controllers/gestures.js +4 -4
  739. package/internals/controllers/gestures.js.map +1 -0
  740. package/{components/common → internals}/controllers/id-resolver.js +15 -21
  741. package/internals/controllers/id-resolver.js.map +1 -0
  742. package/{components/common → internals}/controllers/internals.d.ts +48 -3
  743. package/{components/common → internals}/controllers/internals.js +32 -0
  744. package/internals/controllers/internals.js.map +1 -0
  745. package/{components/common → internals}/controllers/key-bindings.d.ts +3 -6
  746. package/{components/common → internals}/controllers/key-bindings.js +43 -29
  747. package/internals/controllers/key-bindings.js.map +1 -0
  748. package/{components/common → internals}/controllers/mutation-observer.d.ts +5 -4
  749. package/internals/controllers/mutation-observer.js +74 -0
  750. package/internals/controllers/mutation-observer.js.map +1 -0
  751. package/{components/common → internals}/controllers/resize-observer.d.ts +11 -1
  752. package/{components/common → internals}/controllers/resize-observer.js +13 -2
  753. package/internals/controllers/resize-observer.js.map +1 -0
  754. package/{components/common → internals}/controllers/root-click.js +8 -13
  755. package/internals/controllers/root-click.js.map +1 -0
  756. package/{components/common → internals}/controllers/root-scroll.d.ts +11 -8
  757. package/internals/controllers/root-scroll.js +71 -0
  758. package/internals/controllers/root-scroll.js.map +1 -0
  759. package/{components/common → internals}/controllers/slot.d.ts +18 -2
  760. package/{components/common → internals}/controllers/slot.js +21 -6
  761. package/internals/controllers/slot.js.map +1 -0
  762. package/internals/date/compare.d.ts +2 -0
  763. package/internals/date/compare.js +23 -0
  764. package/internals/date/compare.js.map +1 -0
  765. package/internals/date/converters.d.ts +18 -0
  766. package/internals/date/converters.js +73 -0
  767. package/internals/date/converters.js.map +1 -0
  768. package/{components/calendar → internals/date}/model.d.ts +6 -3
  769. package/{components/calendar → internals/date}/model.js +23 -0
  770. package/internals/date/model.js.map +1 -0
  771. package/internals/decorators/blazorAdditionalDependencies.js.map +1 -0
  772. package/internals/decorators/blazorDeepImport.js.map +1 -0
  773. package/internals/decorators/blazorInclude.js.map +1 -0
  774. package/internals/decorators/blazorIndirectRender.js.map +1 -0
  775. package/internals/decorators/blazorSuppressComponent.js.map +1 -0
  776. package/internals/decorators/shadow-options.js.map +1 -0
  777. package/internals/decorators/watch.js.map +1 -0
  778. package/internals/definitions/defineAllComponents.js +153 -0
  779. package/internals/definitions/defineAllComponents.js.map +1 -0
  780. package/internals/definitions/defineComponents.js.map +1 -0
  781. package/internals/definitions/register.js.map +1 -0
  782. package/{components/common → internals}/i18n/EN/calendar.resources.js +1 -1
  783. package/internals/i18n/EN/calendar.resources.js.map +1 -0
  784. package/internals/i18n/EN/chat.resources.js.map +1 -0
  785. package/internals/i18n/EN/date-picker.resources.js.map +1 -0
  786. package/internals/i18n/EN/date-range-picker.resources.js.map +1 -0
  787. package/internals/i18n/i18n-controller.js.map +1 -0
  788. package/{components/common → internals}/i18n/utils.js +1 -1
  789. package/internals/i18n/utils.js.map +1 -0
  790. package/{components/common → internals}/mixins/alert.d.ts +2 -2
  791. package/{components/common → internals}/mixins/alert.js +3 -3
  792. package/internals/mixins/alert.js.map +1 -0
  793. package/{components/common → internals}/mixins/combo-box.d.ts +10 -2
  794. package/{components/common → internals}/mixins/combo-box.js +9 -4
  795. package/internals/mixins/combo-box.js.map +1 -0
  796. package/internals/mixins/constructor.js.map +1 -0
  797. package/internals/mixins/event-emitter.js.map +1 -0
  798. package/{components/common → internals}/mixins/forms/associated-required.js +10 -19
  799. package/internals/mixins/forms/associated-required.js.map +1 -0
  800. package/{components/common → internals}/mixins/forms/associated.d.ts +1 -1
  801. package/{components/common → internals}/mixins/forms/associated.js +66 -51
  802. package/internals/mixins/forms/associated.js.map +1 -0
  803. package/{components/common → internals}/mixins/forms/form-transformers.d.ts +1 -1
  804. package/{components/common → internals}/mixins/forms/form-transformers.js +2 -2
  805. package/internals/mixins/forms/form-transformers.js.map +1 -0
  806. package/internals/mixins/forms/form-value.js.map +1 -0
  807. package/{components/common → internals}/mixins/forms/types.d.ts +7 -7
  808. package/internals/mixins/forms/types.js.map +1 -0
  809. package/{components/common → internals}/mixins/mask-behavior.d.ts +11 -3
  810. package/{components/common → internals}/mixins/mask-behavior.js +117 -29
  811. package/internals/mixins/mask-behavior.js.map +1 -0
  812. package/{components/common → internals}/mixins/option.d.ts +0 -2
  813. package/{components/common → internals}/mixins/option.js +1 -4
  814. package/internals/mixins/option.js.map +1 -0
  815. package/internals/part-map.js.map +1 -0
  816. package/{components/common → internals}/templates/input-shell.d.ts +8 -1
  817. package/{components/common → internals}/templates/input-shell.js +14 -4
  818. package/internals/templates/input-shell.js.map +1 -0
  819. package/{components/common → internals}/templates/masked-input.d.ts +8 -2
  820. package/{components/common → internals}/templates/masked-input.js +5 -3
  821. package/internals/templates/masked-input.js.map +1 -0
  822. package/internals/utils/arrays.d.ts +53 -0
  823. package/internals/utils/arrays.js +31 -0
  824. package/internals/utils/arrays.js.map +1 -0
  825. package/internals/utils/dom.d.ts +92 -0
  826. package/internals/utils/dom.js +143 -0
  827. package/internals/utils/dom.js.map +1 -0
  828. package/internals/utils/events.d.ts +41 -0
  829. package/internals/utils/events.js +37 -0
  830. package/internals/utils/events.js.map +1 -0
  831. package/internals/utils/lit.d.ts +8 -0
  832. package/internals/utils/lit.js +15 -0
  833. package/internals/utils/lit.js.map +1 -0
  834. package/internals/utils/math.d.ts +50 -0
  835. package/internals/utils/math.js +38 -0
  836. package/internals/utils/math.js.map +1 -0
  837. package/internals/utils/objects.d.ts +25 -0
  838. package/internals/utils/objects.js +125 -0
  839. package/internals/utils/objects.js.map +1 -0
  840. package/internals/utils/strings.d.ts +44 -0
  841. package/internals/utils/strings.js +46 -0
  842. package/internals/utils/strings.js.map +1 -0
  843. package/internals/utils/types.d.ts +13 -0
  844. package/internals/utils/types.js +31 -0
  845. package/internals/utils/types.js.map +1 -0
  846. package/{components/common → internals}/validators.d.ts +1 -1
  847. package/{components/common → internals}/validators.js +4 -2
  848. package/internals/validators.js.map +1 -0
  849. package/package.json +15 -7
  850. package/skills/igniteui-wc-generate-from-image-design/references/gotchas.md +15 -1
  851. package/themes/dark/bootstrap.css +1 -1
  852. package/themes/dark/fluent.css +1 -1
  853. package/themes/dark/indigo.css +1 -1
  854. package/themes/dark/material.css +1 -1
  855. package/themes/light/bootstrap.css +1 -1
  856. package/themes/light/fluent.css +1 -1
  857. package/themes/light/indigo.css +1 -1
  858. package/themes/light/material.css +1 -1
  859. package/theming/theming-controller.d.ts +2 -2
  860. package/theming/theming-controller.js.map +1 -1
  861. package/web-types.json +3 -3
  862. package/components/calendar/model.js.map +0 -1
  863. package/components/combo/combo-list.d.ts +0 -11
  864. package/components/combo/combo-list.js +0 -13
  865. package/components/combo/combo-list.js.map +0 -1
  866. package/components/common/abort-handler.js.map +0 -1
  867. package/components/common/context.d.ts +0 -25
  868. package/components/common/context.js.map +0 -1
  869. package/components/common/controllers/adopt-styles.d.ts +0 -124
  870. package/components/common/controllers/adopt-styles.js +0 -75
  871. package/components/common/controllers/adopt-styles.js.map +0 -1
  872. package/components/common/controllers/async-consumer.js.map +0 -1
  873. package/components/common/controllers/command.js.map +0 -1
  874. package/components/common/controllers/drag.js.map +0 -1
  875. package/components/common/controllers/focus-ring.js.map +0 -1
  876. package/components/common/controllers/fullscreen.js.map +0 -1
  877. package/components/common/controllers/gestures.js.map +0 -1
  878. package/components/common/controllers/id-resolver.js.map +0 -1
  879. package/components/common/controllers/internals.js.map +0 -1
  880. package/components/common/controllers/key-bindings.js.map +0 -1
  881. package/components/common/controllers/mutation-observer.js +0 -69
  882. package/components/common/controllers/mutation-observer.js.map +0 -1
  883. package/components/common/controllers/resize-observer.js.map +0 -1
  884. package/components/common/controllers/root-click.js.map +0 -1
  885. package/components/common/controllers/root-scroll.js +0 -63
  886. package/components/common/controllers/root-scroll.js.map +0 -1
  887. package/components/common/controllers/slot.js.map +0 -1
  888. package/components/common/decorators/blazorAdditionalDependencies.js.map +0 -1
  889. package/components/common/decorators/blazorDeepImport.js.map +0 -1
  890. package/components/common/decorators/blazorInclude.js.map +0 -1
  891. package/components/common/decorators/blazorIndirectRender.js.map +0 -1
  892. package/components/common/decorators/blazorSuppressComponent.js.map +0 -1
  893. package/components/common/decorators/shadow-options.js.map +0 -1
  894. package/components/common/decorators/watch.js.map +0 -1
  895. package/components/common/definitions/defineAllComponents.js +0 -151
  896. package/components/common/definitions/defineAllComponents.js.map +0 -1
  897. package/components/common/definitions/defineComponents.js.map +0 -1
  898. package/components/common/definitions/register.js.map +0 -1
  899. package/components/common/i18n/EN/calendar.resources.js.map +0 -1
  900. package/components/common/i18n/EN/chat.resources.js.map +0 -1
  901. package/components/common/i18n/EN/date-picker.resources.js.map +0 -1
  902. package/components/common/i18n/EN/date-range-picker.resources.js.map +0 -1
  903. package/components/common/i18n/i18n-controller.js.map +0 -1
  904. package/components/common/i18n/utils.js.map +0 -1
  905. package/components/common/mixins/alert.js.map +0 -1
  906. package/components/common/mixins/combo-box.js.map +0 -1
  907. package/components/common/mixins/constructor.js.map +0 -1
  908. package/components/common/mixins/event-emitter.js.map +0 -1
  909. package/components/common/mixins/forms/associated-required.js.map +0 -1
  910. package/components/common/mixins/forms/associated.js.map +0 -1
  911. package/components/common/mixins/forms/form-transformers.js.map +0 -1
  912. package/components/common/mixins/forms/form-value.js.map +0 -1
  913. package/components/common/mixins/forms/types.js.map +0 -1
  914. package/components/common/mixins/mask-behavior.js.map +0 -1
  915. package/components/common/mixins/option.js.map +0 -1
  916. package/components/common/part-map.js.map +0 -1
  917. package/components/common/templates/input-shell.js.map +0 -1
  918. package/components/common/templates/masked-input.js.map +0 -1
  919. package/components/common/util.d.ts +0 -196
  920. package/components/common/util.js +0 -390
  921. package/components/common/util.js.map +0 -1
  922. package/components/common/validators.js.map +0 -1
  923. package/components/icon/registry/default-map.d.ts +0 -107
  924. package/components/icon/registry/default-map.js +0 -25
  925. package/components/icon/registry/default-map.js.map +0 -1
  926. package/components/nav-drawer/themes/shared/container/nav-drawer.fluent.css.js +0 -3
  927. package/components/nav-drawer/themes/shared/container/nav-drawer.fluent.css.js.map +0 -1
  928. package/components/radio/utils.d.ts +0 -13
  929. package/components/radio/utils.js +0 -37
  930. package/components/radio/utils.js.map +0 -1
  931. /package/components/{nav-drawer/themes/shared/container/nav-drawer.fluent.css.d.ts → qr-code/themes/dark/qr-code.bootstrap.css.d.ts} +0 -0
  932. /package/{components/common → internals}/abort-handler.d.ts +0 -0
  933. /package/{components/common → internals}/abort-handler.js +0 -0
  934. /package/{components/common → internals}/controllers/async-consumer.d.ts +0 -0
  935. /package/{components/common → internals}/controllers/command.d.ts +0 -0
  936. /package/{components/common → internals}/controllers/command.js +0 -0
  937. /package/{components/common → internals}/controllers/drag.d.ts +0 -0
  938. /package/{components/common → internals}/controllers/focus-ring.d.ts +0 -0
  939. /package/{components/common → internals}/controllers/fullscreen.d.ts +0 -0
  940. /package/{components/common → internals}/controllers/id-resolver.d.ts +0 -0
  941. /package/{components/common → internals}/controllers/root-click.d.ts +0 -0
  942. /package/{components/common → internals}/decorators/blazorAdditionalDependencies.d.ts +0 -0
  943. /package/{components/common → internals}/decorators/blazorAdditionalDependencies.js +0 -0
  944. /package/{components/common → internals}/decorators/blazorDeepImport.d.ts +0 -0
  945. /package/{components/common → internals}/decorators/blazorDeepImport.js +0 -0
  946. /package/{components/common → internals}/decorators/blazorInclude.d.ts +0 -0
  947. /package/{components/common → internals}/decorators/blazorInclude.js +0 -0
  948. /package/{components/common → internals}/decorators/blazorIndirectRender.d.ts +0 -0
  949. /package/{components/common → internals}/decorators/blazorIndirectRender.js +0 -0
  950. /package/{components/common → internals}/decorators/blazorSuppressComponent.d.ts +0 -0
  951. /package/{components/common → internals}/decorators/blazorSuppressComponent.js +0 -0
  952. /package/{components/common → internals}/decorators/shadow-options.d.ts +0 -0
  953. /package/{components/common → internals}/decorators/shadow-options.js +0 -0
  954. /package/{components/common → internals}/decorators/watch.d.ts +0 -0
  955. /package/{components/common → internals}/decorators/watch.js +0 -0
  956. /package/{components/common → internals}/definitions/defineAllComponents.d.ts +0 -0
  957. /package/{components/common → internals}/definitions/defineComponents.d.ts +0 -0
  958. /package/{components/common → internals}/definitions/defineComponents.js +0 -0
  959. /package/{components/common → internals}/definitions/register.d.ts +0 -0
  960. /package/{components/common → internals}/definitions/register.js +0 -0
  961. /package/{components/common → internals}/i18n/EN/calendar.resources.d.ts +0 -0
  962. /package/{components/common → internals}/i18n/EN/chat.resources.d.ts +0 -0
  963. /package/{components/common → internals}/i18n/EN/chat.resources.js +0 -0
  964. /package/{components/common → internals}/i18n/EN/date-picker.resources.d.ts +0 -0
  965. /package/{components/common → internals}/i18n/EN/date-picker.resources.js +0 -0
  966. /package/{components/common → internals}/i18n/EN/date-range-picker.resources.d.ts +0 -0
  967. /package/{components/common → internals}/i18n/EN/date-range-picker.resources.js +0 -0
  968. /package/{components/common → internals}/i18n/i18n-controller.d.ts +0 -0
  969. /package/{components/common → internals}/i18n/i18n-controller.js +0 -0
  970. /package/{components/common → internals}/i18n/utils.d.ts +0 -0
  971. /package/{components/common → internals}/mixins/constructor.d.ts +0 -0
  972. /package/{components/common → internals}/mixins/constructor.js +0 -0
  973. /package/{components/common → internals}/mixins/event-emitter.d.ts +0 -0
  974. /package/{components/common → internals}/mixins/event-emitter.js +0 -0
  975. /package/{components/common → internals}/mixins/forms/associated-required.d.ts +0 -0
  976. /package/{components/common → internals}/mixins/forms/form-value.d.ts +0 -0
  977. /package/{components/common → internals}/mixins/forms/form-value.js +0 -0
  978. /package/{components/common → internals}/mixins/forms/types.js +0 -0
  979. /package/{components/common → internals}/part-map.d.ts +0 -0
  980. /package/{components/common → internals}/part-map.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"date-part.js","sourceRoot":"","sources":["../../../src/components/date-time-input/date-part.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Date Part Classes Module\n *\n * This module provides structured classes for date/time parts used in date-time input.\n * Each part type has its own class with specific validation and spin behavior.\n *\n * Classes are private to this module - only types and factory function are exported.\n */\n\n//#region Types and Enums\n\nexport enum DatePart {\n Month = 'month',\n Year = 'year',\n Date = 'date',\n Hours = 'hours',\n Minutes = 'minutes',\n Seconds = 'seconds',\n AmPm = 'amPm',\n}\n\n/** Types of date/time parts that can appear in a format string */\nexport const DatePartType = {\n Month: 'month',\n Year: 'year',\n Date: 'date',\n Hours: 'hours',\n Minutes: 'minutes',\n Seconds: 'seconds',\n AmPm: 'amPm',\n Literal: 'literal',\n} as const;\n\nexport type DatePartType = (typeof DatePartType)[keyof typeof DatePartType];\n\n// Spin delta defaults\nexport const DEFAULT_DATE_PARTS_SPIN_DELTAS = Object.freeze<DatePartDeltas>({\n date: 1,\n month: 1,\n year: 1,\n hours: 1,\n minutes: 1,\n seconds: 1,\n});\n\nexport interface DatePartDeltas {\n date?: number;\n month?: number;\n year?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n}\n\n/** Options for creating a date part */\nexport interface DatePartOptions {\n /** Start position in the masked string */\n start: number;\n /** End position in the masked string */\n end: number;\n /** The format string for this part (e.g., 'MM', 'yyyy') */\n format: string;\n}\n/* blazorSuppress */\n/** Options for spin operations */\nexport interface SpinOptions {\n /** The current date value */\n date: Date;\n /** Whether to loop values at boundaries */\n spinLoop: boolean;\n /** For AM/PM: the current masked value to determine AM or PM */\n amPmValue?: string;\n /** For AM/PM: the original date (for rollover prevention) */\n originalDate?: Date;\n}\n\n/** Read-only interface for date part information */\nexport interface IDatePart {\n /** The type of date part */\n readonly type: DatePartType;\n /** Start position in the masked string */\n readonly start: number;\n /** End position in the masked string */\n readonly end: number;\n /** The format string for this part */\n readonly format: string;\n\n /**\n * Validates a numeric value for this part.\n * @param value - The value to validate\n * @param context - Optional context (year, month) for date-dependent validation\n * @returns true if the value is valid for this part\n */\n validate(value: number, context?: DateValidationContext): boolean;\n\n /**\n * Spins (increments/decrements) this part's value on the given date.\n * @param delta - The amount to spin (positive = up, negative = down)\n * @param options - Spin options including the date and loop behavior\n */\n spin(delta: number, options: SpinOptions): void;\n\n /**\n * Extracts the value of this part from a Date object.\n * @param date - The date to extract from\n * @returns The formatted string value\n */\n getValue(date: Date): string;\n}\n\n/* blazorSuppress */\n/** Context for date validation (needed for day-of-month validation) */\nexport interface DateValidationContext {\n year?: number;\n month?: number;\n}\n\n//#endregion\n\n//#region Constants\n\n/** Time bounds for validation */\nconst TIME_BOUNDS = {\n hours: { min: 0, max: 23 },\n minutes: { min: 0, max: 59 },\n seconds: { min: 0, max: 59 },\n} as const;\n\n/** Date bounds for validation */\nconst DATE_BOUNDS = {\n month: { min: 0, max: 11 },\n date: { min: 1, max: 31 },\n} as const;\n\n//#endregion\n\n//#region Helper Functions\n\n/**\n * Gets the number of days in a specific month/year.\n */\nfunction daysInMonth(year: number, month: number): number {\n return new Date(year, month + 1, 0).getDate();\n}\n\n/**\n * Pads a value with zeros to the specified length.\n */\nfunction padValue(value: string | number, length: number): string {\n return String(value).padStart(length, '0');\n}\n\n/**\n * Converts 24-hour format to 12-hour format.\n */\nfunction toTwelveHourFormat(hours: number): number {\n const h = hours % 12;\n return h === 0 ? 12 : h;\n}\n\n/**\n * Generic spin helper for time parts.\n */\nfunction spinTimePart(\n date: Date,\n delta: number,\n max: number,\n min: number,\n setter: (value: number) => number,\n getter: () => number,\n spinLoop: boolean\n): void {\n let value = getter.call(date) + delta;\n\n if (value > max) {\n value = spinLoop ? value % (max + 1) : max;\n } else if (value < min) {\n value = spinLoop ? max + 1 + (value % (max + 1)) : min;\n }\n\n setter.call(date, value);\n}\n\n//#endregion\n\n//#region Abstract Base Class\n\n/**\n * Abstract base class for all date parts.\n * Provides common functionality and defines the contract for concrete implementations.\n */\nabstract class DatePartBase implements IDatePart {\n readonly type: DatePartType;\n readonly start: number;\n readonly end: number;\n readonly format: string;\n\n constructor(type: DatePartType, options: DatePartOptions) {\n this.type = type;\n this.start = options.start;\n this.end = options.end;\n this.format = options.format;\n }\n\n abstract validate(value: number, context?: DateValidationContext): boolean;\n abstract spin(delta: number, options: SpinOptions): void;\n abstract getValue(date: Date): string;\n}\n\n//#endregion\n\n//#region Concrete Implementations\n\n/**\n * Year part (yyyy, yy)\n */\nclass YearPart extends DatePartBase {\n constructor(options: DatePartOptions) {\n super(DatePartType.Year, options);\n }\n\n validate(_value: number): boolean {\n // Years are always valid (no upper bound)\n return _value >= 0;\n }\n\n spin(delta: number, options: SpinOptions): void {\n const { date } = options;\n const maxDate = daysInMonth(date.getFullYear() + delta, date.getMonth());\n\n // Clip to max day to avoid leap year change shifting the entire value\n if (date.getDate() > maxDate) {\n date.setDate(maxDate);\n }\n\n date.setFullYear(date.getFullYear() + delta);\n }\n\n getValue(date: Date): string {\n const length = this.format.length;\n const year =\n length === 2\n ? date.getFullYear().toString().slice(-2)\n : date.getFullYear();\n return padValue(year, length);\n }\n}\n\n/**\n * Month part (MM, M)\n */\nclass MonthPart extends DatePartBase {\n constructor(options: DatePartOptions) {\n super(DatePartType.Month, options);\n }\n\n validate(value: number): boolean {\n // Month is 0-based internally, but 1-12 in display\n return value >= DATE_BOUNDS.month.min && value <= DATE_BOUNDS.month.max;\n }\n\n spin(delta: number, options: SpinOptions): void {\n const { date, spinLoop } = options;\n const { min, max } = DATE_BOUNDS.month;\n\n const maxDate = daysInMonth(date.getFullYear(), date.getMonth() + delta);\n if (date.getDate() > maxDate) {\n date.setDate(maxDate);\n }\n\n let month = date.getMonth() + delta;\n\n if (month > max) {\n month = spinLoop ? (month % max) - 1 : max;\n } else if (month < min) {\n month = spinLoop ? max + (month % max) + 1 : min;\n }\n\n date.setMonth(month);\n }\n\n getValue(date: Date): string {\n return padValue(date.getMonth() + 1, this.format.length);\n }\n}\n\n/**\n * Date (day of month) part (dd, d)\n */\nclass DateOfMonthPart extends DatePartBase {\n constructor(options: DatePartOptions) {\n super(DatePartType.Date, options);\n }\n\n validate(value: number, context?: DateValidationContext): boolean {\n if (value < DATE_BOUNDS.date.min) {\n return false;\n }\n\n if (context?.year !== undefined && context?.month !== undefined) {\n const maxDays = daysInMonth(context.year, context.month);\n return value <= maxDays;\n }\n\n return value <= DATE_BOUNDS.date.max;\n }\n\n spin(delta: number, options: SpinOptions): void {\n const { date, spinLoop } = options;\n const maxDate = daysInMonth(date.getFullYear(), date.getMonth());\n const { min } = DATE_BOUNDS.date;\n\n let dayOfMonth = date.getDate() + delta;\n\n if (dayOfMonth > maxDate) {\n dayOfMonth = spinLoop ? dayOfMonth % maxDate : maxDate;\n } else if (dayOfMonth < min) {\n dayOfMonth = spinLoop ? maxDate + (dayOfMonth % maxDate) : min;\n }\n\n date.setDate(dayOfMonth);\n }\n\n getValue(date: Date): string {\n return padValue(date.getDate(), this.format.length);\n }\n}\n\n/**\n * Hours part (HH, H, hh, h)\n */\nclass HoursPart extends DatePartBase {\n constructor(options: DatePartOptions) {\n super(DatePartType.Hours, options);\n }\n\n validate(value: number): boolean {\n return value >= TIME_BOUNDS.hours.min && value <= TIME_BOUNDS.hours.max;\n }\n\n spin(delta: number, options: SpinOptions): void {\n const { date, spinLoop } = options;\n const { min, max } = TIME_BOUNDS.hours;\n spinTimePart(date, delta, max, min, date.setHours, date.getHours, spinLoop);\n }\n\n getValue(date: Date): string {\n const isTwelveHour = this.format.includes('h');\n const hours = isTwelveHour\n ? toTwelveHourFormat(date.getHours())\n : date.getHours();\n return padValue(hours, this.format.length);\n }\n}\n\n/**\n * Minutes part (mm, m)\n */\nclass MinutesPart extends DatePartBase {\n constructor(options: DatePartOptions) {\n super(DatePartType.Minutes, options);\n }\n\n validate(value: number): boolean {\n return value >= TIME_BOUNDS.minutes.min && value <= TIME_BOUNDS.minutes.max;\n }\n\n spin(delta: number, options: SpinOptions): void {\n const { date, spinLoop } = options;\n const { min, max } = TIME_BOUNDS.minutes;\n spinTimePart(\n date,\n delta,\n max,\n min,\n date.setMinutes,\n date.getMinutes,\n spinLoop\n );\n }\n\n getValue(date: Date): string {\n return padValue(date.getMinutes(), this.format.length);\n }\n}\n\n/**\n * Seconds part (ss, s)\n */\nclass SecondsPart extends DatePartBase {\n constructor(options: DatePartOptions) {\n super(DatePartType.Seconds, options);\n }\n\n validate(value: number): boolean {\n return value >= TIME_BOUNDS.seconds.min && value <= TIME_BOUNDS.seconds.max;\n }\n\n spin(delta: number, options: SpinOptions): void {\n const { date, spinLoop } = options;\n const { min, max } = TIME_BOUNDS.seconds;\n spinTimePart(\n date,\n delta,\n max,\n min,\n date.setSeconds,\n date.getSeconds,\n spinLoop\n );\n }\n\n getValue(date: Date): string {\n return padValue(date.getSeconds(), this.format.length);\n }\n}\n\n/**\n * AM/PM part (tt, t)\n */\nclass AmPmPart extends DatePartBase {\n constructor(options: DatePartOptions) {\n super(DatePartType.AmPm, options);\n }\n\n validate(_value: number): boolean {\n // AM/PM doesn't have numeric validation\n return true;\n }\n\n spin(_delta: number, options: SpinOptions): void {\n const { date, amPmValue, originalDate } = options;\n\n if (!amPmValue) return;\n\n const isAM = amPmValue.toLowerCase() === 'am';\n const newHours = date.getHours() + (isAM ? 12 : -12);\n date.setHours(newHours);\n\n // Prevent date rollover\n if (originalDate && date.getDate() !== originalDate.getDate()) {\n date.setTime(originalDate.getTime());\n }\n }\n\n getValue(date: Date): string {\n return date.getHours() >= 12 ? 'PM' : 'AM';\n }\n}\n\n/**\n * Literal part (separators like /, -, :, space, etc.)\n */\nclass LiteralPart extends DatePartBase {\n constructor(options: DatePartOptions) {\n super(DatePartType.Literal, options);\n }\n\n validate(_value: number): boolean {\n // Literals don't have validation\n return true;\n }\n\n spin(_delta: number, _options: SpinOptions): void {\n // Literals can't be spun\n }\n\n getValue(_date: Date): string {\n return this.format;\n }\n}\n\n//#endregion\n\n//#region Factory Function\n\n/**\n * Creates a date part instance based on the type.\n * This is the only way to create date part instances outside this module.\n *\n * @param type - The type of date part to create\n * @param options - The options for the date part\n * @returns A date part instance implementing IDatePart\n */\nexport function createDatePart(\n type: DatePartType,\n options: DatePartOptions\n): IDatePart {\n switch (type) {\n case DatePartType.Year:\n return new YearPart(options);\n case DatePartType.Month:\n return new MonthPart(options);\n case DatePartType.Date:\n return new DateOfMonthPart(options);\n case DatePartType.Hours:\n return new HoursPart(options);\n case DatePartType.Minutes:\n return new MinutesPart(options);\n case DatePartType.Seconds:\n return new SecondsPart(options);\n case DatePartType.AmPm:\n return new AmPmPart(options);\n case DatePartType.Literal:\n return new LiteralPart(options);\n default:\n throw new Error(`Unknown date part type: ${type}`);\n }\n}\n\n//#endregion\n"]}
1
+ {"version":3,"file":"date-part.js","sourceRoot":"","sources":["../../../src/components/date-time-input/date-part.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Date Part Classes Module\n *\n * This module provides structured classes for date/time parts used in date-time input.\n * Each part type has its own class with specific validation and spin behavior.\n *\n * Classes are private to this module - only types and factory function are exported.\n */\n\n//#region Types and Enums\n\nexport enum DatePart {\n Month = 'month',\n Year = 'year',\n Date = 'date',\n Hours = 'hours',\n Minutes = 'minutes',\n Seconds = 'seconds',\n AmPm = 'amPm',\n}\n\n/** Types of date/time parts that can appear in a format string */\nexport const DatePartType = {\n Month: 'month',\n Year: 'year',\n Date: 'date',\n Hours: 'hours',\n Minutes: 'minutes',\n Seconds: 'seconds',\n AmPm: 'amPm',\n Literal: 'literal',\n} as const;\n\nexport type DatePartType = (typeof DatePartType)[keyof typeof DatePartType];\n\n/** The part types that make up a calendar date. */\nexport const DATE_PART_TYPES = new Set<DatePartType>([\n DatePartType.Date,\n DatePartType.Month,\n DatePartType.Year,\n]);\n\n/** The part types that make up a time of day. */\nexport const TIME_PART_TYPES = new Set<DatePartType>([\n DatePartType.Hours,\n DatePartType.Minutes,\n DatePartType.Seconds,\n]);\n\n// Spin delta defaults\nexport const DEFAULT_DATE_PARTS_SPIN_DELTAS = Object.freeze<DatePartDeltas>({\n date: 1,\n month: 1,\n year: 1,\n hours: 1,\n minutes: 1,\n seconds: 1,\n});\n\n/**\n * The amounts by which each date or time part is incremented or decremented on\n * a step action in date-time input; every part defaults to `1`.\n */\nexport interface DatePartDeltas {\n /** The number of days the date part is spun by. */\n date?: number;\n /** The number of months the month part is spun by. */\n month?: number;\n /** The number of years the year part is spun by. */\n year?: number;\n /** The number of hours the hours part is spun by. */\n hours?: number;\n /** The number of minutes the minutes part is spun by. */\n minutes?: number;\n /** The number of seconds the seconds part is spun by. */\n seconds?: number;\n}\n\n/** Options for creating a date part */\nexport interface DatePartOptions {\n /** Start position in the masked string */\n start: number;\n /** End position in the masked string */\n end: number;\n /** The format string for this part (e.g., 'MM', 'yyyy') */\n format: string;\n}\n/* blazorSuppress */\n/** Options for spin operations */\nexport interface SpinOptions {\n /** The current date value */\n date: Date;\n /** Whether to loop values at boundaries */\n spinLoop: boolean;\n /** For AM/PM: the current masked value to determine AM or PM */\n amPmValue?: string;\n /** For AM/PM: the original date (for rollover prevention) */\n originalDate?: Date;\n}\n\n/**\n * Read-only interface for date part information\n * @hidden\n */\nexport interface IDatePart {\n /** The type of date part */\n readonly type: DatePartType;\n /** Start position in the masked string */\n readonly start: number;\n /** End position in the masked string */\n readonly end: number;\n /** The format string for this part */\n readonly format: string;\n\n /**\n * Validates a numeric value for this part.\n * @param value - The value to validate\n * @param context - Optional context (year, month) for date-dependent validation\n * @returns true if the value is valid for this part\n */\n validate(value: number, context?: DateValidationContext): boolean;\n\n /**\n * Spins (increments/decrements) this part's value on the given date.\n * @param delta - The amount to spin (positive = up, negative = down)\n * @param options - Spin options including the date and loop behavior\n */\n spin(delta: number, options: SpinOptions): void;\n\n /**\n * Extracts the value of this part from a Date object.\n * @param date - The date to extract from\n * @returns The formatted string value\n */\n getValue(date: Date): string;\n}\n\n/* blazorSuppress */\n/** Context for date validation (needed for day-of-month validation) */\nexport interface DateValidationContext {\n year?: number;\n month?: number;\n}\n\n//#endregion\n\n//#region Constants\n\n/** Time bounds for validation */\nconst TIME_BOUNDS = {\n hours: { min: 0, max: 23 },\n minutes: { min: 0, max: 59 },\n seconds: { min: 0, max: 59 },\n} as const;\n\n/** Date bounds for validation */\nconst DATE_BOUNDS = {\n month: { min: 0, max: 11 },\n date: { min: 1, max: 31 },\n} as const;\n\n//#endregion\n\n//#region Helper Functions\n\n/**\n * Gets the number of days in a specific month/year.\n */\nfunction daysInMonth(year: number, month: number): number {\n return new Date(year, month + 1, 0).getDate();\n}\n\n/**\n * Pads a value with zeros to the specified length.\n */\nfunction padValue(value: string | number, length: number): string {\n return String(value).padStart(length, '0');\n}\n\n/**\n * Converts 24-hour format to 12-hour format.\n */\nfunction toTwelveHourFormat(hours: number): number {\n const h = hours % 12;\n return h === 0 ? 12 : h;\n}\n\n/**\n * Generic spin helper for time parts.\n */\nfunction spinTimePart(\n date: Date,\n delta: number,\n max: number,\n min: number,\n setter: (value: number) => number,\n getter: () => number,\n spinLoop: boolean\n): void {\n let value = getter.call(date) + delta;\n\n if (value > max) {\n value = spinLoop ? value % (max + 1) : max;\n } else if (value < min) {\n value = spinLoop ? max + 1 + (value % (max + 1)) : min;\n }\n\n setter.call(date, value);\n}\n\n//#endregion\n\n//#region Abstract Base Class\n\n/**\n * Abstract base class for all date parts.\n * Provides common functionality and defines the contract for concrete implementations.\n */\nabstract class DatePartBase implements IDatePart {\n readonly type: DatePartType;\n readonly start: number;\n readonly end: number;\n readonly format: string;\n\n constructor(type: DatePartType, options: DatePartOptions) {\n this.type = type;\n this.start = options.start;\n this.end = options.end;\n this.format = options.format;\n }\n\n abstract validate(value: number, context?: DateValidationContext): boolean;\n abstract spin(delta: number, options: SpinOptions): void;\n abstract getValue(date: Date): string;\n}\n\n//#endregion\n\n//#region Concrete Implementations\n\n/**\n * Year part (yyyy, yy)\n */\nclass YearPart extends DatePartBase {\n constructor(options: DatePartOptions) {\n super(DatePartType.Year, options);\n }\n\n validate(_value: number): boolean {\n // Years are always valid (no upper bound)\n return _value >= 0;\n }\n\n spin(delta: number, options: SpinOptions): void {\n const { date } = options;\n const maxDate = daysInMonth(date.getFullYear() + delta, date.getMonth());\n\n // Clip to max day to avoid leap year change shifting the entire value\n if (date.getDate() > maxDate) {\n date.setDate(maxDate);\n }\n\n date.setFullYear(date.getFullYear() + delta);\n }\n\n getValue(date: Date): string {\n const length = this.format.length;\n const year =\n length === 2\n ? date.getFullYear().toString().slice(-2)\n : date.getFullYear();\n return padValue(year, length);\n }\n}\n\n/**\n * Month part (MM, M)\n */\nclass MonthPart extends DatePartBase {\n constructor(options: DatePartOptions) {\n super(DatePartType.Month, options);\n }\n\n validate(value: number): boolean {\n // Month is 0-based internally, but 1-12 in display\n return value >= DATE_BOUNDS.month.min && value <= DATE_BOUNDS.month.max;\n }\n\n spin(delta: number, options: SpinOptions): void {\n const { date, spinLoop } = options;\n const { min, max } = DATE_BOUNDS.month;\n\n const maxDate = daysInMonth(date.getFullYear(), date.getMonth() + delta);\n if (date.getDate() > maxDate) {\n date.setDate(maxDate);\n }\n\n let month = date.getMonth() + delta;\n\n if (month > max) {\n month = spinLoop ? (month % max) - 1 : max;\n } else if (month < min) {\n month = spinLoop ? max + (month % max) + 1 : min;\n }\n\n date.setMonth(month);\n }\n\n getValue(date: Date): string {\n return padValue(date.getMonth() + 1, this.format.length);\n }\n}\n\n/**\n * Date (day of month) part (dd, d)\n */\nclass DateOfMonthPart extends DatePartBase {\n constructor(options: DatePartOptions) {\n super(DatePartType.Date, options);\n }\n\n validate(value: number, context?: DateValidationContext): boolean {\n if (value < DATE_BOUNDS.date.min) {\n return false;\n }\n\n if (context?.year !== undefined && context?.month !== undefined) {\n const maxDays = daysInMonth(context.year, context.month);\n return value <= maxDays;\n }\n\n return value <= DATE_BOUNDS.date.max;\n }\n\n spin(delta: number, options: SpinOptions): void {\n const { date, spinLoop } = options;\n const maxDate = daysInMonth(date.getFullYear(), date.getMonth());\n const { min } = DATE_BOUNDS.date;\n\n let dayOfMonth = date.getDate() + delta;\n\n if (dayOfMonth > maxDate) {\n dayOfMonth = spinLoop ? dayOfMonth % maxDate : maxDate;\n } else if (dayOfMonth < min) {\n dayOfMonth = spinLoop ? maxDate + (dayOfMonth % maxDate) : min;\n }\n\n date.setDate(dayOfMonth);\n }\n\n getValue(date: Date): string {\n return padValue(date.getDate(), this.format.length);\n }\n}\n\n/**\n * Hours part (HH, H, hh, h)\n */\nclass HoursPart extends DatePartBase {\n constructor(options: DatePartOptions) {\n super(DatePartType.Hours, options);\n }\n\n validate(value: number): boolean {\n return value >= TIME_BOUNDS.hours.min && value <= TIME_BOUNDS.hours.max;\n }\n\n spin(delta: number, options: SpinOptions): void {\n const { date, spinLoop } = options;\n const { min, max } = TIME_BOUNDS.hours;\n spinTimePart(date, delta, max, min, date.setHours, date.getHours, spinLoop);\n }\n\n getValue(date: Date): string {\n const isTwelveHour = this.format.includes('h');\n const hours = isTwelveHour\n ? toTwelveHourFormat(date.getHours())\n : date.getHours();\n return padValue(hours, this.format.length);\n }\n}\n\n/**\n * Minutes part (mm, m)\n */\nclass MinutesPart extends DatePartBase {\n constructor(options: DatePartOptions) {\n super(DatePartType.Minutes, options);\n }\n\n validate(value: number): boolean {\n return value >= TIME_BOUNDS.minutes.min && value <= TIME_BOUNDS.minutes.max;\n }\n\n spin(delta: number, options: SpinOptions): void {\n const { date, spinLoop } = options;\n const { min, max } = TIME_BOUNDS.minutes;\n spinTimePart(\n date,\n delta,\n max,\n min,\n date.setMinutes,\n date.getMinutes,\n spinLoop\n );\n }\n\n getValue(date: Date): string {\n return padValue(date.getMinutes(), this.format.length);\n }\n}\n\n/**\n * Seconds part (ss, s)\n */\nclass SecondsPart extends DatePartBase {\n constructor(options: DatePartOptions) {\n super(DatePartType.Seconds, options);\n }\n\n validate(value: number): boolean {\n return value >= TIME_BOUNDS.seconds.min && value <= TIME_BOUNDS.seconds.max;\n }\n\n spin(delta: number, options: SpinOptions): void {\n const { date, spinLoop } = options;\n const { min, max } = TIME_BOUNDS.seconds;\n spinTimePart(\n date,\n delta,\n max,\n min,\n date.setSeconds,\n date.getSeconds,\n spinLoop\n );\n }\n\n getValue(date: Date): string {\n return padValue(date.getSeconds(), this.format.length);\n }\n}\n\n/**\n * AM/PM part (tt, t)\n */\nclass AmPmPart extends DatePartBase {\n constructor(options: DatePartOptions) {\n super(DatePartType.AmPm, options);\n }\n\n validate(_value: number): boolean {\n // AM/PM doesn't have numeric validation\n return true;\n }\n\n spin(_delta: number, options: SpinOptions): void {\n const { date, amPmValue, originalDate } = options;\n\n if (!amPmValue) return;\n\n const isAM = amPmValue.toLowerCase() === 'am';\n const newHours = date.getHours() + (isAM ? 12 : -12);\n date.setHours(newHours);\n\n // Prevent date rollover\n if (originalDate && date.getDate() !== originalDate.getDate()) {\n date.setTime(originalDate.getTime());\n }\n }\n\n getValue(date: Date): string {\n return date.getHours() >= 12 ? 'PM' : 'AM';\n }\n}\n\n/**\n * Literal part (separators like /, -, :, space, etc.)\n */\nclass LiteralPart extends DatePartBase {\n constructor(options: DatePartOptions) {\n super(DatePartType.Literal, options);\n }\n\n validate(_value: number): boolean {\n // Literals don't have validation\n return true;\n }\n\n spin(_delta: number, _options: SpinOptions): void {\n // Literals can't be spun\n }\n\n getValue(_date: Date): string {\n return this.format;\n }\n}\n\n//#endregion\n\n//#region Factory Function\n\n/**\n * Creates a date part instance based on the type.\n * This is the only way to create date part instances outside this module.\n *\n * @param type - The type of date part to create\n * @param options - The options for the date part\n * @returns A date part instance implementing IDatePart\n */\nexport function createDatePart(\n type: DatePartType,\n options: DatePartOptions\n): IDatePart {\n switch (type) {\n case DatePartType.Year:\n return new YearPart(options);\n case DatePartType.Month:\n return new MonthPart(options);\n case DatePartType.Date:\n return new DateOfMonthPart(options);\n case DatePartType.Hours:\n return new HoursPart(options);\n case DatePartType.Minutes:\n return new MinutesPart(options);\n case DatePartType.Seconds:\n return new SecondsPart(options);\n case DatePartType.AmPm:\n return new AmPmPart(options);\n case DatePartType.Literal:\n return new LiteralPart(options);\n default:\n throw new Error(`Unknown date part type: ${type}`);\n }\n}\n\n//#endregion\n"]}
@@ -1,15 +1,22 @@
1
1
  import { LitElement, type PropertyValues, type TemplateResult } from 'lit';
2
- import type { ThemingController } from '../../theming/theming-controller.js';
3
- import { type MaskSelection } from '../common/mixins/mask-behavior.js';
2
+ import { type MaskSelection } from '#internals/mixins/mask-behavior.js';
3
+ import type { ThemingController } from '#theming/theming-controller.js';
4
+ import type { RangeTextSelectMode } from '../types.js';
4
5
  import type { DatePartDeltas } from './date-part.js';
5
6
  export type { MaskSelection };
6
- declare const IgcDateTimeInputBaseComponent_base: import("../common/mixins/constructor.js").AbstractConstructor<import("../common/mixins/mask-behavior.js").MaskBehaviorElementInterface> & import("../common/mixins/constructor.js").Constructor<import("../common/mixins/forms/types.js").FormRequiredInterface & import("../common/mixins/forms/types.js").FormAssociatedElementInterface> & typeof LitElement;
7
- export declare abstract class IgcDateTimeInputBaseComponent extends IgcDateTimeInputBaseComponent_base {
7
+ declare const IgcDateTimeInputBaseComponent_base: import("../../internals/mixins/constructor.js").AbstractConstructor<import("#internals/mixins/mask-behavior.js").MaskBehaviorElementInterface> & import("../../internals/mixins/constructor.js").Constructor<import("../../internals/mixins/forms/types.js").FormRequiredInterface & import("../../internals/mixins/forms/types.js").FormAssociatedElementInterface> & typeof LitElement;
8
+ export declare abstract class IgcDateTimeInputBaseComponent<T> extends IgcDateTimeInputBaseComponent_base {
8
9
  protected abstract readonly _themes: ThemingController;
9
- protected readonly _slots: import("../common/controllers/slot.js").SlotController<"invalid" | "prefix" | "[default]" | "helper-text" | "suffix" | "value-missing" | "custom-error" | "range-overflow" | "range-underflow">;
10
+ protected readonly _slots: import("#internals/controllers/slot.js").SlotController<"invalid" | "prefix" | "[default]" | "suffix" | "helper-text" | "value-missing" | "custom-error" | "range-overflow" | "range-underflow">;
10
11
  protected readonly _inputId: string;
11
12
  protected readonly _input?: HTMLInputElement;
12
- protected get __validators(): import("../common/validators.js").Validator<import("./date-time-input.js").default>[];
13
+ /**
14
+ * Receives ARIA semantics projected by a composite host
15
+ * (e.g. `igc-date-picker`) onto the inner native input.
16
+ * See {@link addAriaTarget}.
17
+ */
18
+ protected readonly _ariaTarget: import("#internals/controllers/aria-projection.js").AriaTargetController;
19
+ protected get __validators(): import("../../internals/validators.js").Validator<import("./date-time-input.js").default>[];
13
20
  private readonly _i18nController;
14
21
  protected _min: Date | null;
15
22
  protected _max: Date | null;
@@ -17,6 +24,25 @@ export declare abstract class IgcDateTimeInputBaseComponent extends IgcDateTimeI
17
24
  protected _defaultDisplayFormat: string;
18
25
  protected _displayFormat?: string;
19
26
  protected _inputFormat?: string;
27
+ /**
28
+ * Whether the user has an uncommitted edit in progress.
29
+ *
30
+ * While set, the masked text - not the public `value` - is the source of truth:
31
+ * typing updates the mask only, and the parsed result reaches `value` (together
32
+ * with `igcChange`) when the edit is committed on blur. Keeping `value` in sync
33
+ * with the last emitted `igcChange` is what stops a host that two-way binds the
34
+ * property from clobbering a half-typed mask on an unrelated re-render.
35
+ */
36
+ protected _isEditing: boolean;
37
+ /** The value the input was focused with, used to detect a committed change. */
38
+ protected _oldValue: T | null;
39
+ /**
40
+ * The value currently in the editor - the parsed draft while an edit is in
41
+ * progress, otherwise the committed public value.
42
+ *
43
+ * @hidden @internal
44
+ */
45
+ get _uncommittedValue(): T | null;
20
46
  protected get _targetDatePart(): unknown;
21
47
  /**
22
48
  * Whether the control will have outlined appearance.
@@ -26,7 +52,7 @@ export declare abstract class IgcDateTimeInputBaseComponent extends IgcDateTimeI
26
52
  */
27
53
  outlined: boolean;
28
54
  /**
29
- * The placeholder attribute of the control.
55
+ * The placeholder text of the control.
30
56
  * @attr
31
57
  */
32
58
  placeholder: string;
@@ -81,6 +107,7 @@ export declare abstract class IgcDateTimeInputBaseComponent extends IgcDateTimeI
81
107
  private _handleResourceChange;
82
108
  protected _handleDragLeave(): void;
83
109
  protected _handleDragEnter(): void;
110
+ protected _handleBlur(): void;
84
111
  /**
85
112
  * Handles wheel events for spinning date parts.
86
113
  */
@@ -103,6 +130,28 @@ export declare abstract class IgcDateTimeInputBaseComponent extends IgcDateTimeI
103
130
  * When focused, shows the editable mask. When unfocused, defers to the leaf's display formatter.
104
131
  */
105
132
  protected _updateMaskDisplay(): void;
133
+ /** Builds the editable mask shown while the input is focused. */
134
+ protected _buildMaskedValue(): string;
135
+ /**
136
+ * Applies a value produced by an interactive edit (spinning, `Ctrl + ;`).
137
+ * While focused this only moves the draft; outside of an editing session - e.g. a
138
+ * programmatic `stepUp()` - there is no blur coming to commit it.
139
+ */
140
+ protected _setDraftValue(value: T): void;
141
+ /** Applies the masked text to the public value without emitting anything. */
142
+ protected _applyDraft(): void;
143
+ /**
144
+ * Commits the current draft to the public value, emitting `igcChange` when the
145
+ * committed value differs from the one the input was focused with.
146
+ */
147
+ protected _commitEdit(): void;
148
+ /**
149
+ * Marks the masked text as an uncommitted edit. The parsed result deliberately
150
+ * does not reach the public `value` here - that happens on commit - so that the
151
+ * property stays in sync with the last emitted `igcChange`. See {@link _isEditing}.
152
+ */
153
+ protected _syncValueFromMask(): void;
154
+ protected _restoreDefaultValue(): void;
106
155
  /**
107
156
  * Checks if all mask positions are filled (no prompt characters remain).
108
157
  */
@@ -130,17 +179,30 @@ export declare abstract class IgcDateTimeInputBaseComponent extends IgcDateTimeI
130
179
  stepUp(datePart?: unknown, delta?: number): void;
131
180
  /** Decrements a date/time portion. */
132
181
  stepDown(datePart?: unknown, delta?: number): void;
182
+ /** Replaces the selected text in the control and re-applies the mask. */
183
+ setRangeText(replacement: string, start?: number, end?: number, selectMode?: RangeTextSelectMode): void;
133
184
  /** Clears the input element of user input. */
134
- abstract clear(): void;
185
+ clear(): void;
135
186
  protected _renderInput(): TemplateResult;
136
187
  protected render(): import("lit-html/directive.js").DirectiveResult<typeof import("lit-html/directives/cache.js").CacheDirective>;
137
188
  protected abstract get _datePartDeltas(): DatePartDeltas;
138
- protected abstract _buildMaskedValue(): string;
189
+ /** Provided by `EventEmitterMixin` in the concrete components. */
190
+ abstract emitEvent(name: string, init?: CustomEventInit): boolean;
191
+ /** The committed value of the input. */
192
+ abstract get value(): T | null;
193
+ abstract set value(value: T | null);
194
+ /**
195
+ * Parses the current masked text into the leaf's value type.
196
+ *
197
+ * A `strict` parse mirrors the committed value semantics - an incomplete mask has
198
+ * no value yet and resolves to `null` rather than to a defaults-filled one.
199
+ */
200
+ protected abstract _parseMask(strict: boolean): T | null;
201
+ /** Formats a value into the editable mask. */
202
+ protected abstract _formatValue(value: T | null): string;
139
203
  protected abstract _buildDisplayValue(): string;
140
- protected abstract _syncValueFromMask(): void;
141
204
  protected abstract _calculatePartNavigationPosition(value: string, direction: number): number;
142
- protected abstract _calculateSpunValue(part: unknown, delta: number | undefined, isDecrement: boolean): unknown;
143
- protected abstract _commitSpunValue(value: unknown): void;
205
+ protected abstract _calculateSpunValue(part: unknown, delta: number | undefined, isDecrement: boolean): T;
144
206
  protected abstract _setCurrentDateTime(): void;
145
207
  protected abstract _handleFocus(): Promise<void>;
146
208
  protected abstract _getDatePartAtCursor(): unknown;
@@ -8,22 +8,27 @@ import { getDateFormatter } from 'igniteui-i18n-core';
8
8
  import { LitElement } from 'lit';
9
9
  import { eventOptions, property, query } from 'lit/decorators.js';
10
10
  import { cache } from 'lit/directives/cache.js';
11
- import { convertToDate } from '../calendar/helpers.js';
12
- import { addKeybindings, arrowDown, arrowLeft, arrowRight, arrowUp, ctrlKey, } from '../common/controllers/key-bindings.js';
13
- import { addSlotController, setSlots } from '../common/controllers/slot.js';
14
- import { blazorDeepImport } from '../common/decorators/blazorDeepImport.js';
15
- import { shadowOptions } from '../common/decorators/shadow-options.js';
16
- import { addI18nController, getDefaultDateTimeFormat, } from '../common/i18n/i18n-controller.js';
17
- import { FormAssociatedRequiredMixin } from '../common/mixins/forms/associated-required.js';
18
- import { MaskBehaviorMixin, } from '../common/mixins/mask-behavior.js';
19
- import { nextInputId, renderInputShell, } from '../common/templates/input-shell.js';
20
- import { renderMaskedNativeInput } from '../common/templates/masked-input.js';
11
+ import { addAriaTarget } from '#internals/controllers/aria-projection.js';
12
+ import { addKeybindings, arrowDown, arrowLeft, arrowRight, arrowUp, ctrlKey, } from '#internals/controllers/key-bindings.js';
13
+ import { addSlotController, setSlots } from '#internals/controllers/slot.js';
14
+ import { convertToDate } from '#internals/date/converters.js';
15
+ import { blazorDeepImport } from '#internals/decorators/blazorDeepImport.js';
16
+ import { shadowOptions } from '#internals/decorators/shadow-options.js';
17
+ import { addI18nController, getDefaultDateTimeFormat, } from '#internals/i18n/i18n-controller.js';
18
+ import { FormAssociatedRequiredMixin } from '#internals/mixins/forms/associated-required.js';
19
+ import { MaskBehaviorMixin, } from '#internals/mixins/mask-behavior.js';
20
+ import { nextInputId, renderInputShell, resolveInputPartNames, } from '#internals/templates/input-shell.js';
21
+ import { renderMaskedNativeInput } from '#internals/templates/masked-input.js';
22
+ import { equal } from '#internals/utils/objects.js';
21
23
  import { dateTimeInputValidators } from './validators.js';
22
24
  const Slots = setSlots('prefix', 'suffix', 'helper-text', 'value-missing', 'range-overflow', 'range-underflow', 'custom-error', 'invalid');
23
25
  let IgcDateTimeInputBaseComponent = class IgcDateTimeInputBaseComponent extends MaskBehaviorMixin(FormAssociatedRequiredMixin(LitElement)) {
24
26
  get __validators() {
25
27
  return dateTimeInputValidators;
26
28
  }
29
+ get _uncommittedValue() {
30
+ return this._isEditing ? this._parseMask(true) : this.value;
31
+ }
27
32
  get _targetDatePart() {
28
33
  return this._focused
29
34
  ? this._getDatePartAtCursor()
@@ -69,6 +74,12 @@ let IgcDateTimeInputBaseComponent = class IgcDateTimeInputBaseComponent extends
69
74
  super();
70
75
  this._slots = addSlotController(this, { slots: Slots });
71
76
  this._inputId = nextInputId();
77
+ this._ariaTarget = addAriaTarget(this, {
78
+ labels: () => this._internals.labels,
79
+ description: () => this._slots.hasAssignedElements('helper-text')
80
+ ? this.renderRoot.querySelector('#helper-text')
81
+ : null,
82
+ });
72
83
  this._i18nController = addI18nController(this, {
73
84
  defaultEN: {},
74
85
  onResourceChange: this._handleResourceChange,
@@ -76,6 +87,8 @@ let IgcDateTimeInputBaseComponent = class IgcDateTimeInputBaseComponent extends
76
87
  this._min = null;
77
88
  this._max = null;
78
89
  this._defaultDisplayFormat = '';
90
+ this._isEditing = false;
91
+ this._oldValue = null;
79
92
  this.outlined = false;
80
93
  this.spinLoop = true;
81
94
  addKeybindings(this, {
@@ -114,6 +127,11 @@ let IgcDateTimeInputBaseComponent = class IgcDateTimeInputBaseComponent extends
114
127
  this._maskedValue = this._buildMaskedValue();
115
128
  }
116
129
  }
130
+ _handleBlur() {
131
+ this._focused = false;
132
+ this._commitEdit();
133
+ super._handleBlur();
134
+ }
117
135
  async _handleWheel(event) {
118
136
  if (!this._focused || this.readOnly)
119
137
  return;
@@ -140,14 +158,67 @@ let IgcDateTimeInputBaseComponent = class IgcDateTimeInputBaseComponent extends
140
158
  if (!part)
141
159
  return;
142
160
  const { start, end } = this._inputSelection;
143
- const newValue = this._calculateSpunValue(part, delta, isDecrement);
144
- this._commitSpunValue(newValue);
161
+ this._setDraftValue(this._calculateSpunValue(part, delta, isDecrement));
145
162
  this.updateComplete.then(() => this._input?.setSelectionRange(start, end));
146
163
  }
147
164
  _updateMaskDisplay() {
148
- this._maskedValue = this._focused
149
- ? this._buildMaskedValue()
150
- : this._buildDisplayValue();
165
+ if (!this._focused) {
166
+ this._maskedValue = this._buildDisplayValue();
167
+ }
168
+ else if (!this._isEditing) {
169
+ this._maskedValue = this._buildMaskedValue();
170
+ }
171
+ }
172
+ _buildMaskedValue() {
173
+ const masked = this._formatValue(this.value);
174
+ return masked === this._parser.emptyMask
175
+ ? this._maskedValue || masked
176
+ : masked;
177
+ }
178
+ _setDraftValue(value) {
179
+ if (!this._focused) {
180
+ this.value = value;
181
+ return;
182
+ }
183
+ const next = this._formatValue(value);
184
+ this._recordHistory('atomic', next, this._inputSelection.start);
185
+ this._isEditing = true;
186
+ this._maskedValue = next;
187
+ this.requestUpdate();
188
+ }
189
+ _applyDraft() {
190
+ this._isEditing = false;
191
+ this.value = this._parseMask(true);
192
+ this._updateMaskDisplay();
193
+ }
194
+ _commitEdit() {
195
+ if (this._isEditing) {
196
+ this._isEditing = false;
197
+ const parsed = this._parseMask(false);
198
+ if (parsed === null) {
199
+ this.clear();
200
+ }
201
+ else {
202
+ this.value = parsed;
203
+ }
204
+ }
205
+ this._updateMaskDisplay();
206
+ if (!this.readOnly && !equal(this._oldValue, this.value)) {
207
+ this._oldValue = this.value;
208
+ this.emitEvent('igcChange', { detail: this.value });
209
+ }
210
+ }
211
+ _syncValueFromMask() {
212
+ if (this._focused) {
213
+ this._isEditing = true;
214
+ return;
215
+ }
216
+ this._applyDraft();
217
+ }
218
+ _restoreDefaultValue() {
219
+ this._isEditing = false;
220
+ super._restoreDefaultValue();
221
+ this._updateMaskDisplay();
151
222
  }
152
223
  _isMaskComplete() {
153
224
  return !this._maskedValue.includes(this.prompt);
@@ -169,16 +240,7 @@ let IgcDateTimeInputBaseComponent = class IgcDateTimeInputBaseComponent extends
169
240
  }
170
241
  }
171
242
  _resolvePartNames(base) {
172
- return {
173
- [base]: true,
174
- prefixed: this._slots.hasAssignedElements('prefix', {
175
- selector: '[slot="prefix"]:not([hidden])',
176
- }),
177
- suffixed: this._slots.hasAssignedElements('suffix', {
178
- selector: '[slot="suffix"]:not([hidden])',
179
- }),
180
- filled: !this._isEmptyMask,
181
- };
243
+ return resolveInputPartNames(this._slots, base, !this._isEmptyMask);
182
244
  }
183
245
  select() {
184
246
  this._input?.select();
@@ -195,9 +257,18 @@ let IgcDateTimeInputBaseComponent = class IgcDateTimeInputBaseComponent extends
195
257
  stepDown(datePart, delta) {
196
258
  this._performStep(datePart, delta, true);
197
259
  }
260
+ setRangeText(replacement, start, end, selectMode) {
261
+ super.setRangeText(replacement, start, end, selectMode);
262
+ this._applyDraft();
263
+ }
264
+ clear() {
265
+ this._isEditing = false;
266
+ this._maskedValue = '';
267
+ this.value = null;
268
+ this._updateMaskDisplay();
269
+ }
198
270
  _renderInput() {
199
271
  const hasNegativeTabIndex = this.getAttribute('tabindex') === '-1';
200
- const hasHelperText = this._slots.hasAssignedElements('helper-text');
201
272
  return renderMaskedNativeInput({
202
273
  id: this._inputId,
203
274
  partNames: this._resolvePartNames('input'),
@@ -207,8 +278,9 @@ let IgcDateTimeInputBaseComponent = class IgcDateTimeInputBaseComponent extends
207
278
  readOnly: this.readOnly,
208
279
  disabled: this.disabled,
209
280
  tabindex: hasNegativeTabIndex ? -1 : undefined,
210
- ariaDescribedBy: hasHelperText ? 'helper-text' : undefined,
281
+ aria: this._ariaTarget.resolveBindings(),
211
282
  onInput: this._handleInput,
283
+ onBeforeInput: this._handleBeforeInput,
212
284
  onFocus: this._handleFocus,
213
285
  onBlur: this._handleBlur,
214
286
  onClick: this._handleClick,
@@ -1 +1 @@
1
- {"version":3,"file":"date-time-input.base.js","sourceRoot":"","sources":["../../../src/components/date-time-input/date-time-input.base.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAA4C,MAAM,KAAK,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EACL,cAAc,EACd,SAAS,EACT,SAAS,EACT,UAAU,EACV,OAAO,EACP,OAAO,GACR,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EACL,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAC5F,OAAO,EACL,iBAAiB,GAElB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,WAAW,EACX,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAE9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAI1D,MAAM,KAAK,GAAG,QAAQ,CACpB,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,SAAS,CACV,CAAC;AAMK,IAAe,6BAA6B,GAA5C,MAAe,6BAA8B,SAAQ,iBAAiB,CAC3E,2BAA2B,CAAC,UAAU,CAAC,CACxC;IAYC,IAAuB,YAAY;QACjC,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAgBD,IAAc,eAAe;QAC3B,OAAO,IAAI,CAAC,QAAQ;YAClB,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC7B,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACjC,CAAC;IAkCD,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAChD,CAAC;IAED,IAAW,WAAW,CAAC,GAAW;QAChC,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;YACxB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAOD,IAAW,GAAG,CAAC,KAAuC;QACpD,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAOD,IAAW,GAAG,CAAC,KAAuC;QACpD,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAQD,IAAW,aAAa,CAAC,KAAa;QACpC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,IAAW,aAAa;QACtB,OAAO,CACL,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,qBAAqB,CACvE,CAAC;IACJ,CAAC;IAqBD,IAAW,MAAM,CAAC,KAAa;QAC7B,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,KAAK,CAAC;IACtC,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;IACrC,CAAC;IAMD;QACE,KAAK,EAAE,CAAC;QAvJS,WAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAEnD,aAAQ,GAAG,WAAW,EAAE,CAAC;QAS3B,oBAAe,GAAG,iBAAiB,CAAC,IAAI,EAAE;YACzD,SAAS,EAAE,EAAE;YACb,gBAAgB,EAAE,IAAI,CAAC,qBAAqB;SAC7C,CAAC,CAAC;QAEO,SAAI,GAAgB,IAAI,CAAC;QACzB,SAAI,GAAgB,IAAI,CAAC;QAIzB,0BAAqB,GAAG,EAAE,CAAC;QAqB9B,aAAQ,GAAG,KAAK,CAAC;QAyFjB,aAAQ,GAAG,IAAI,CAAC;QAsBrB,cAAc,CAAC,IAAI,EAAE;YACnB,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ;YACzB,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;SAClC,CAAC;aACC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC;aAC7C,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aACjD,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;aACrD,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;aAC5D,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAEkB,MAAM,CAAC,KAA2B;QACnD,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACrC,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAMO,qBAAqB;QAC3B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAES,gBAAgB;QACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAES,gBAAgB;QACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/C,CAAC;IACH,CAAC;IAMe,AAAN,KAAK,CAAC,YAAY,CAAC,KAAiB;QAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE5C,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACnD,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,MAAM,IAAI,CAAC,cAAc,CAAC;QAC1B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IASS,cAAc,CAAC,SAAiB;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,gCAAgC,CACpD,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,EACxB,SAAS,CACV,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAKS,KAAK,CAAC,aAAa,CAAC,SAAwB;QACpD,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,IAAI,CAAC,cAAc,CAAC;QAC1B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC7E,CAAC;IAUS,YAAY,CACpB,QAAiB,EACjB,KAAyB,EACzB,WAAoB;QAEpB,MAAM,IAAI,GAAG,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC;QAC9C,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QACpE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7E,CAAC;IAMS,kBAAkB;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ;YAC/B,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC1B,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAChC,CAAC;IAKS,eAAe;QACvB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAKS,UAAU,CAAC,YAAoB;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;QAGjC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,QAAQ,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;YACvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACvC,CAAC;IACH,CAAC;IAKO,2BAA2B;QACjC,IAAI,CAAC,qBAAqB,GAAG,gBAAgB,EAAE,CAAC,uBAAuB,CACrE,IAAI,CAAC,MAAM,CACZ,CAAC;IACJ,CAAC;IAES,sBAAsB;QAC9B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAEnC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAKS,iBAAiB,CAAC,IAAY;QACtC,OAAO;YACL,CAAC,IAAI,CAAC,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE;gBAClD,QAAQ,EAAE,+BAA+B;aAC1C,CAAC;YACF,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE;gBAClD,QAAQ,EAAE,+BAA+B;aAC1C,CAAC;YACF,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY;SAC3B,CAAC;IACJ,CAAC;IAOM,MAAM;QACX,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IACxB,CAAC;IAIe,KAAK,CAAC,OAAsB;QAC1C,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAIe,IAAI;QAClB,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAIM,MAAM,CAAC,QAAkB,EAAE,KAAc;QAC9C,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAIM,QAAQ,CAAC,QAAkB,EAAE,KAAc;QAChD,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IASS,YAAY;QACpB,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;QACnE,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAErE,OAAO,uBAAuB,CAAC;YAC7B,EAAE,EAAE,IAAI,CAAC,QAAQ;YACjB,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC1C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,YAAY;YACxB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS;YACvD,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAC9C,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;YAC1D,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,kBAAkB,EAAE,IAAI,CAAC,iBAAiB;YAC1C,kBAAkB,EAAE,IAAI,CAAC,uBAAuB;YAChD,gBAAgB,EAAE,IAAI,CAAC,qBAAqB;YAC5C,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,WAAW,EAAE,IAAI,CAAC,gBAAgB;YAClC,WAAW,EAAE,IAAI,CAAC,gBAAgB;SACnC,CAAC,CAAC;IACL,CAAC;IAEkB,MAAM;QACvB,OAAO,KAAK,CACV,gBAAgB,CAAC,IAAI,EAAE;YACrB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;YACnD,WAAW,EAAE,IAAI,CAAC,YAAY;SAC/B,CAAC,CACH,CAAC;IACJ,CAAC;CA8BF,CAAA;AA/a6B;IAD3B,KAAK,CAAC,OAAO,CAAC;6DACuC;AAqC/C;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;+DACnB;AAOjB;IADN,QAAQ,EAAE;kEACiB;AAOrB;IADN,QAAQ,EAAE;4DACW;AAOtB;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;gEAGvC;AAeD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;wDAItC;AAWD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;wDAItC;AAYD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;kEAGzC;AAaM;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gEACG;AAO3B;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;+DAC7B;AAOvB;IADC,QAAQ,EAAE;2DAGV;AAiEe;IADf,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;iEAahC;AAhOmB,6BAA6B;IAFlD,gBAAgB;IAChB,aAAa,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;GAClB,6BAA6B,CA2blD","sourcesContent":["import { getDateFormatter } from 'igniteui-i18n-core';\nimport { LitElement, type PropertyValues, type TemplateResult } from 'lit';\nimport { eventOptions, property, query } from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport type { ThemingController } from '../../theming/theming-controller.js';\nimport { convertToDate } from '../calendar/helpers.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n ctrlKey,\n} from '../common/controllers/key-bindings.js';\nimport { addSlotController, setSlots } from '../common/controllers/slot.js';\nimport { blazorDeepImport } from '../common/decorators/blazorDeepImport.js';\nimport { shadowOptions } from '../common/decorators/shadow-options.js';\nimport {\n addI18nController,\n getDefaultDateTimeFormat,\n} from '../common/i18n/i18n-controller.js';\nimport { FormAssociatedRequiredMixin } from '../common/mixins/forms/associated-required.js';\nimport {\n MaskBehaviorMixin,\n type MaskSelection,\n} from '../common/mixins/mask-behavior.js';\nimport {\n nextInputId,\n renderInputShell,\n} from '../common/templates/input-shell.js';\nimport { renderMaskedNativeInput } from '../common/templates/masked-input.js';\nimport type { DatePartDeltas } from './date-part.js';\nimport { dateTimeInputValidators } from './validators.js';\n\nexport type { MaskSelection };\n\nconst Slots = setSlots(\n 'prefix',\n 'suffix',\n 'helper-text',\n 'value-missing',\n 'range-overflow',\n 'range-underflow',\n 'custom-error',\n 'invalid'\n);\n\n/* blazorIndirectRender */\n/* blazorSupportsVisualChildren */\n@blazorDeepImport\n@shadowOptions({ delegatesFocus: true })\nexport abstract class IgcDateTimeInputBaseComponent extends MaskBehaviorMixin(\n FormAssociatedRequiredMixin(LitElement)\n) {\n // #region Internal state and properties\n\n protected abstract readonly _themes: ThemingController;\n\n protected readonly _slots = addSlotController(this, { slots: Slots });\n\n protected readonly _inputId = nextInputId();\n\n @query('input')\n protected override readonly _input?: HTMLInputElement;\n\n protected override get __validators() {\n return dateTimeInputValidators;\n }\n\n private readonly _i18nController = addI18nController(this, {\n defaultEN: {},\n onResourceChange: this._handleResourceChange,\n });\n\n protected _min: Date | null = null;\n protected _max: Date | null = null;\n\n protected _defaultMask!: string;\n\n protected _defaultDisplayFormat = '';\n protected _displayFormat?: string;\n protected _inputFormat?: string;\n\n protected get _targetDatePart(): unknown {\n return this._focused\n ? this._getDatePartAtCursor()\n : this._getDefaultDatePart();\n }\n\n // #endregion\n\n // #region Public attributes and properties\n\n /**\n * Whether the control will have outlined appearance.\n *\n * @attr\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public outlined = false;\n\n /**\n * The placeholder attribute of the control.\n * @attr\n */\n @property()\n public placeholder!: string;\n\n /**\n * The label for the control.\n * @attr\n */\n @property()\n public label!: string;\n\n /**\n * The date format to apply on the input.\n * @attr input-format\n */\n @property({ attribute: 'input-format' })\n public get inputFormat(): string {\n return this._inputFormat || this._parser.mask;\n }\n\n public set inputFormat(val: string) {\n if (val) {\n this._applyMask(val);\n this._inputFormat = val;\n this._updateMaskDisplay();\n }\n }\n\n /**\n * The minimum value required for the input to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set min(value: Date | string | null | undefined) {\n this._min = convertToDate(value);\n this._validate();\n }\n\n public get min(): Date | null {\n return this._min;\n }\n\n /**\n * The maximum value required for the input to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set max(value: Date | string | null | undefined) {\n this._max = convertToDate(value);\n this._validate();\n }\n\n public get max(): Date | null {\n return this._max;\n }\n\n /**\n * Format to display the value in when not editing.\n * Defaults to the locale format if not set.\n * @attr display-format\n */\n @property({ attribute: 'display-format' })\n public set displayFormat(value: string) {\n this._displayFormat = value;\n }\n\n public get displayFormat(): string {\n return (\n this._displayFormat ?? this._inputFormat ?? this._defaultDisplayFormat\n );\n }\n\n /**\n * Delta values used to increment or decrement each date part on step actions.\n * All values default to `1`.\n */\n @property({ attribute: false })\n public spinDelta?: DatePartDeltas;\n\n /**\n * Sets whether to loop over the currently spun segment.\n * @attr spin-loop\n */\n @property({ type: Boolean, attribute: 'spin-loop' })\n public spinLoop = true;\n\n /**\n * Gets/Sets the locale used for formatting the display value.\n * @attr locale\n */\n @property()\n public set locale(value: string) {\n this._i18nController.locale = value;\n }\n\n public get locale(): string {\n return this._i18nController.locale;\n }\n\n // #endregion\n\n //#region Lifecycle Hooks\n\n constructor() {\n super();\n\n addKeybindings(this, {\n skip: () => this.readOnly,\n bindingDefaults: { repeat: true },\n })\n .set([ctrlKey, ';'], this._setCurrentDateTime)\n .set(arrowUp, this._keyboardSpin.bind(this, 'up'))\n .set(arrowDown, this._keyboardSpin.bind(this, 'down'))\n .set([ctrlKey, arrowLeft], this._navigateParts.bind(this, 0))\n .set([ctrlKey, arrowRight], this._navigateParts.bind(this, 1));\n }\n\n protected override update(props: PropertyValues<this>): void {\n if (props.has('displayFormat')) {\n this._updateDefaultDisplayFormat();\n }\n\n if (props.has('locale')) {\n this._initializeDefaultMask();\n }\n\n if (props.has('displayFormat') || props.has('locale')) {\n this._updateMaskDisplay();\n }\n\n super.update(props);\n }\n\n //#endregion\n\n // #region Event handlers\n\n private _handleResourceChange(): void {\n this._initializeDefaultMask();\n this._updateMaskDisplay();\n }\n\n protected _handleDragLeave(): void {\n if (!this._focused) {\n this._updateMaskDisplay();\n }\n }\n\n protected _handleDragEnter(): void {\n if (!this._focused) {\n this._maskedValue = this._buildMaskedValue();\n }\n }\n\n /**\n * Handles wheel events for spinning date parts.\n */\n @eventOptions({ passive: false })\n protected async _handleWheel(event: WheelEvent): Promise<void> {\n if (!this._focused || this.readOnly) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n const { start, end } = this._inputSelection;\n event.deltaY > 0 ? this.stepDown() : this.stepUp();\n this._emitInputEvent();\n\n await this.updateComplete;\n this.setSelectionRange(start, end);\n }\n\n // #endregion\n\n //#region Keybindings\n\n /**\n * Navigates to the previous or next date part.\n */\n protected _navigateParts(direction: number): void {\n const position = this._calculatePartNavigationPosition(\n this._input?.value ?? '',\n direction\n );\n this.setSelectionRange(position, position);\n }\n\n /**\n * Handles keyboard-triggered spinning (arrow up/down).\n */\n protected async _keyboardSpin(direction: 'up' | 'down'): Promise<void> {\n direction === 'up' ? this.stepUp() : this.stepDown();\n this._emitInputEvent();\n await this.updateComplete;\n this.setSelectionRange(this._maskSelection.start, this._maskSelection.end);\n }\n\n // #endregion\n\n //#region Internal API\n\n /**\n * Common logic for stepping up or down a date part.\n * @internal\n */\n protected _performStep(\n datePart: unknown,\n delta: number | undefined,\n isDecrement: boolean\n ): void {\n const part = datePart || this._targetDatePart;\n if (!part) return;\n\n const { start, end } = this._inputSelection;\n const newValue = this._calculateSpunValue(part, delta, isDecrement);\n this._commitSpunValue(newValue);\n this.updateComplete.then(() => this._input?.setSelectionRange(start, end));\n }\n\n /**\n * Updates the displayed mask value based on focus state.\n * When focused, shows the editable mask. When unfocused, defers to the leaf's display formatter.\n */\n protected _updateMaskDisplay(): void {\n this._maskedValue = this._focused\n ? this._buildMaskedValue()\n : this._buildDisplayValue();\n }\n\n /**\n * Checks if all mask positions are filled (no prompt characters remain).\n */\n protected _isMaskComplete(): boolean {\n return !this._maskedValue.includes(this.prompt);\n }\n\n /**\n * Applies a mask pattern to the input, parsing the format string into date parts.\n */\n protected _applyMask(formatString: string): void {\n const previous = this._parser.mask;\n this._parser.mask = formatString;\n\n // Update placeholder if not set or if it matches the old format\n if (!this.placeholder || previous === this.placeholder) {\n this.placeholder = this._parser.mask;\n }\n }\n\n /**\n * Updates the default display format based on current locale.\n */\n private _updateDefaultDisplayFormat(): void {\n this._defaultDisplayFormat = getDateFormatter().getLocaleDateTimeFormat(\n this.locale\n );\n }\n\n protected _initializeDefaultMask(): void {\n this._updateDefaultDisplayFormat();\n\n if (!this._inputFormat) {\n this._applyMask(getDefaultDateTimeFormat(this.locale));\n }\n }\n\n /**\n * Resolves the part names for the container based on the current state.\n */\n protected _resolvePartNames(base: string): Record<string, boolean> {\n return {\n [base]: true,\n prefixed: this._slots.hasAssignedElements('prefix', {\n selector: '[slot=\"prefix\"]:not([hidden])',\n }),\n suffixed: this._slots.hasAssignedElements('suffix', {\n selector: '[slot=\"suffix\"]:not([hidden])',\n }),\n filled: !this._isEmptyMask,\n };\n }\n\n // #endregion\n\n // #region Public API\n\n /** Selects all the text inside the input. */\n public select(): void {\n this._input?.select();\n }\n\n /* alternateName: focusComponent */\n /** Sets focus on the control. */\n public override focus(options?: FocusOptions): void {\n this._input?.focus(options);\n }\n\n /* alternateName: blurComponent */\n /** Removes focus from the control. */\n public override blur(): void {\n this._input?.blur();\n }\n\n /* blazorSuppress */\n /** Increments a date/time portion. */\n public stepUp(datePart?: unknown, delta?: number): void {\n this._performStep(datePart, delta, false);\n }\n\n /* blazorSuppress */\n /** Decrements a date/time portion. */\n public stepDown(datePart?: unknown, delta?: number): void {\n this._performStep(datePart, delta, true);\n }\n\n /** Clears the input element of user input. */\n public abstract clear(): void;\n\n //#endregion\n\n //#region Render\n\n protected _renderInput(): TemplateResult {\n const hasNegativeTabIndex = this.getAttribute('tabindex') === '-1';\n const hasHelperText = this._slots.hasAssignedElements('helper-text');\n\n return renderMaskedNativeInput({\n id: this._inputId,\n partNames: this._resolvePartNames('input'),\n name: this.name,\n value: this._maskedValue,\n placeholder: this.placeholder || this._parser.emptyMask,\n readOnly: this.readOnly,\n disabled: this.disabled,\n tabindex: hasNegativeTabIndex ? -1 : undefined,\n ariaDescribedBy: hasHelperText ? 'helper-text' : undefined,\n onInput: this._handleInput,\n onFocus: this._handleFocus,\n onBlur: this._handleBlur,\n onClick: this._handleClick,\n onSetMaskSelection: this._setMaskSelection,\n onCompositionStart: this._handleCompositionStart,\n onCompositionEnd: this._handleCompositionEnd,\n onWheel: this._handleWheel,\n onDragEnter: this._handleDragEnter,\n onDragLeave: this._handleDragLeave,\n });\n }\n\n protected override render() {\n return cache(\n renderInputShell(this, {\n theme: this._themes.theme,\n label: this.label,\n labelId: this._inputId,\n containerParts: this._resolvePartNames('container'),\n renderInput: this._renderInput,\n })\n );\n }\n\n //#endregion\n\n // #region Abstract methods and properties\n\n protected abstract get _datePartDeltas(): DatePartDeltas;\n\n protected abstract _buildMaskedValue(): string;\n protected abstract _buildDisplayValue(): string;\n protected abstract override _syncValueFromMask(): void;\n protected abstract _calculatePartNavigationPosition(\n value: string,\n direction: number\n ): number;\n protected abstract _calculateSpunValue(\n part: unknown,\n delta: number | undefined,\n isDecrement: boolean\n ): unknown;\n protected abstract _commitSpunValue(value: unknown): void;\n protected abstract _setCurrentDateTime(): void;\n protected abstract _handleFocus(): Promise<void>;\n protected abstract _getDatePartAtCursor(): unknown;\n protected abstract _getDefaultDatePart(): unknown;\n\n public abstract hasDateParts(): boolean;\n public abstract hasTimeParts(): boolean;\n\n // #endregion\n}\n"]}
1
+ {"version":3,"file":"date-time-input.base.js","sourceRoot":"","sources":["../../../src/components/date-time-input/date-time-input.base.ts"],"names":[],"mappings":"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","sourcesContent":["import { getDateFormatter } from 'igniteui-i18n-core';\nimport { LitElement, type PropertyValues, type TemplateResult } from 'lit';\nimport { eventOptions, property, query } from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { addAriaTarget } from '#internals/controllers/aria-projection.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n ctrlKey,\n} from '#internals/controllers/key-bindings.js';\nimport { addSlotController, setSlots } from '#internals/controllers/slot.js';\nimport { convertToDate } from '#internals/date/converters.js';\nimport { blazorDeepImport } from '#internals/decorators/blazorDeepImport.js';\nimport { shadowOptions } from '#internals/decorators/shadow-options.js';\nimport {\n addI18nController,\n getDefaultDateTimeFormat,\n} from '#internals/i18n/i18n-controller.js';\nimport { FormAssociatedRequiredMixin } from '#internals/mixins/forms/associated-required.js';\nimport {\n MaskBehaviorMixin,\n type MaskSelection,\n} from '#internals/mixins/mask-behavior.js';\nimport {\n nextInputId,\n renderInputShell,\n resolveInputPartNames,\n} from '#internals/templates/input-shell.js';\nimport { renderMaskedNativeInput } from '#internals/templates/masked-input.js';\nimport { equal } from '#internals/utils/objects.js';\nimport type { ThemingController } from '#theming/theming-controller.js';\nimport type { RangeTextSelectMode } from '../types.js';\nimport type { DatePartDeltas } from './date-part.js';\nimport { dateTimeInputValidators } from './validators.js';\n\nexport type { MaskSelection };\n\nconst Slots = setSlots(\n 'prefix',\n 'suffix',\n 'helper-text',\n 'value-missing',\n 'range-overflow',\n 'range-underflow',\n 'custom-error',\n 'invalid'\n);\n\n/* blazorIndirectRender */\n/* blazorSupportsVisualChildren */\n/* omitModule */\n@blazorDeepImport\n@shadowOptions({ delegatesFocus: true })\nexport abstract class IgcDateTimeInputBaseComponent<\n T,\n> extends MaskBehaviorMixin(FormAssociatedRequiredMixin(LitElement)) {\n // #region Internal state and properties\n\n protected abstract readonly _themes: ThemingController;\n\n protected readonly _slots = addSlotController(this, { slots: Slots });\n\n protected readonly _inputId = nextInputId();\n\n @query('input')\n protected override readonly _input?: HTMLInputElement;\n\n /**\n * Receives ARIA semantics projected by a composite host\n * (e.g. `igc-date-picker`) onto the inner native input.\n * See {@link addAriaTarget}.\n */\n protected readonly _ariaTarget = addAriaTarget(this, {\n labels: () => this._internals.labels,\n description: () =>\n this._slots.hasAssignedElements('helper-text')\n ? this.renderRoot.querySelector('#helper-text')\n : null,\n });\n\n protected override get __validators() {\n return dateTimeInputValidators;\n }\n\n private readonly _i18nController = addI18nController(this, {\n defaultEN: {},\n onResourceChange: this._handleResourceChange,\n });\n\n protected _min: Date | null = null;\n protected _max: Date | null = null;\n\n protected _defaultMask!: string;\n\n protected _defaultDisplayFormat = '';\n protected _displayFormat?: string;\n protected _inputFormat?: string;\n\n /**\n * Whether the user has an uncommitted edit in progress.\n *\n * While set, the masked text - not the public `value` - is the source of truth:\n * typing updates the mask only, and the parsed result reaches `value` (together\n * with `igcChange`) when the edit is committed on blur. Keeping `value` in sync\n * with the last emitted `igcChange` is what stops a host that two-way binds the\n * property from clobbering a half-typed mask on an unrelated re-render.\n */\n protected _isEditing = false;\n\n /** The value the input was focused with, used to detect a committed change. */\n protected _oldValue: T | null = null;\n\n /**\n * The value currently in the editor - the parsed draft while an edit is in\n * progress, otherwise the committed public value.\n *\n * @hidden @internal\n */\n public get _uncommittedValue(): T | null {\n return this._isEditing ? this._parseMask(true) : this.value;\n }\n\n protected get _targetDatePart(): unknown {\n return this._focused\n ? this._getDatePartAtCursor()\n : this._getDefaultDatePart();\n }\n\n // #endregion\n\n // #region Public attributes and properties\n\n /**\n * Whether the control will have outlined appearance.\n *\n * @attr\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public outlined = false;\n\n /**\n * The placeholder text of the control.\n * @attr\n */\n @property()\n public placeholder!: string;\n\n /**\n * The label for the control.\n * @attr\n */\n @property()\n public label!: string;\n\n /**\n * The date format to apply on the input.\n * @attr input-format\n */\n @property({ attribute: 'input-format' })\n public get inputFormat(): string {\n return this._inputFormat || this._parser.mask;\n }\n\n public set inputFormat(val: string) {\n if (val) {\n this._applyMask(val);\n this._inputFormat = val;\n this._updateMaskDisplay();\n }\n }\n\n /**\n * The minimum value required for the input to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set min(value: Date | string | null | undefined) {\n this._min = convertToDate(value);\n this._validate();\n }\n\n public get min(): Date | null {\n return this._min;\n }\n\n /**\n * The maximum value required for the input to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set max(value: Date | string | null | undefined) {\n this._max = convertToDate(value);\n this._validate();\n }\n\n public get max(): Date | null {\n return this._max;\n }\n\n /**\n * Format to display the value in when not editing.\n * Defaults to the locale format if not set.\n * @attr display-format\n */\n @property({ attribute: 'display-format' })\n public set displayFormat(value: string) {\n this._displayFormat = value;\n }\n\n public get displayFormat(): string {\n return (\n this._displayFormat ?? this._inputFormat ?? this._defaultDisplayFormat\n );\n }\n\n /**\n * Delta values used to increment or decrement each date part on step actions.\n * All values default to `1`.\n */\n @property({ attribute: false })\n public spinDelta?: DatePartDeltas;\n\n /**\n * Sets whether to loop over the currently spun segment.\n * @attr spin-loop\n */\n @property({ type: Boolean, attribute: 'spin-loop' })\n public spinLoop = true;\n\n /**\n * Gets/Sets the locale used for formatting the display value.\n * @attr locale\n */\n @property()\n public set locale(value: string) {\n this._i18nController.locale = value;\n }\n\n public get locale(): string {\n return this._i18nController.locale;\n }\n\n // #endregion\n\n //#region Lifecycle Hooks\n\n constructor() {\n super();\n\n addKeybindings(this, {\n skip: () => this.readOnly,\n bindingDefaults: { repeat: true },\n })\n .set([ctrlKey, ';'], this._setCurrentDateTime)\n .set(arrowUp, this._keyboardSpin.bind(this, 'up'))\n .set(arrowDown, this._keyboardSpin.bind(this, 'down'))\n .set([ctrlKey, arrowLeft], this._navigateParts.bind(this, 0))\n .set([ctrlKey, arrowRight], this._navigateParts.bind(this, 1));\n }\n\n protected override update(props: PropertyValues<this>): void {\n if (props.has('displayFormat')) {\n this._updateDefaultDisplayFormat();\n }\n\n if (props.has('locale')) {\n this._initializeDefaultMask();\n }\n\n if (props.has('displayFormat') || props.has('locale')) {\n this._updateMaskDisplay();\n }\n\n super.update(props);\n }\n\n //#endregion\n\n // #region Event handlers\n\n private _handleResourceChange(): void {\n this._initializeDefaultMask();\n this._updateMaskDisplay();\n }\n\n protected _handleDragLeave(): void {\n if (!this._focused) {\n this._updateMaskDisplay();\n }\n }\n\n protected _handleDragEnter(): void {\n if (!this._focused) {\n this._maskedValue = this._buildMaskedValue();\n }\n }\n\n protected override _handleBlur(): void {\n this._focused = false;\n this._commitEdit();\n super._handleBlur();\n }\n\n /**\n * Handles wheel events for spinning date parts.\n */\n @eventOptions({ passive: false })\n protected async _handleWheel(event: WheelEvent): Promise<void> {\n if (!this._focused || this.readOnly) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n const { start, end } = this._inputSelection;\n event.deltaY > 0 ? this.stepDown() : this.stepUp();\n this._emitInputEvent();\n\n await this.updateComplete;\n this.setSelectionRange(start, end);\n }\n\n // #endregion\n\n //#region Keybindings\n\n /**\n * Navigates to the previous or next date part.\n */\n protected _navigateParts(direction: number): void {\n const position = this._calculatePartNavigationPosition(\n this._input?.value ?? '',\n direction\n );\n this.setSelectionRange(position, position);\n }\n\n /**\n * Handles keyboard-triggered spinning (arrow up/down).\n */\n protected async _keyboardSpin(direction: 'up' | 'down'): Promise<void> {\n direction === 'up' ? this.stepUp() : this.stepDown();\n this._emitInputEvent();\n await this.updateComplete;\n this.setSelectionRange(this._maskSelection.start, this._maskSelection.end);\n }\n\n // #endregion\n\n //#region Internal API\n\n /**\n * Common logic for stepping up or down a date part.\n * @internal\n */\n protected _performStep(\n datePart: unknown,\n delta: number | undefined,\n isDecrement: boolean\n ): void {\n const part = datePart || this._targetDatePart;\n if (!part) return;\n\n const { start, end } = this._inputSelection;\n this._setDraftValue(this._calculateSpunValue(part, delta, isDecrement));\n this.updateComplete.then(() => this._input?.setSelectionRange(start, end));\n }\n\n /**\n * Updates the displayed mask value based on focus state.\n * When focused, shows the editable mask. When unfocused, defers to the leaf's display formatter.\n */\n protected _updateMaskDisplay(): void {\n if (!this._focused) {\n this._maskedValue = this._buildDisplayValue();\n } else if (!this._isEditing) {\n // An edit in progress owns the masked text. Rebuilding it from `value` here\n // would discard whatever the user has typed so far.\n this._maskedValue = this._buildMaskedValue();\n }\n }\n\n /** Builds the editable mask shown while the input is focused. */\n protected _buildMaskedValue(): string {\n const masked = this._formatValue(this.value);\n\n // A value-less mask formats to the empty mask; prefer whatever is already in\n // the editor so that a partially typed mask survives a re-render.\n return masked === this._parser.emptyMask\n ? this._maskedValue || masked\n : masked;\n }\n\n /**\n * Applies a value produced by an interactive edit (spinning, `Ctrl + ;`).\n * While focused this only moves the draft; outside of an editing session - e.g. a\n * programmatic `stepUp()` - there is no blur coming to commit it.\n */\n protected _setDraftValue(value: T): void {\n if (!this._focused) {\n this.value = value;\n return;\n }\n\n const next = this._formatValue(value);\n\n this._recordHistory('atomic', next, this._inputSelection.start);\n\n this._isEditing = true;\n this._maskedValue = next;\n this.requestUpdate();\n }\n\n /** Applies the masked text to the public value without emitting anything. */\n protected _applyDraft(): void {\n this._isEditing = false;\n this.value = this._parseMask(true);\n this._updateMaskDisplay();\n }\n\n /**\n * Commits the current draft to the public value, emitting `igcChange` when the\n * committed value differs from the one the input was focused with.\n */\n protected _commitEdit(): void {\n // Only an actual edit is re-parsed. Without this guard a mask holding a\n // display-formatted value - a read-only or untouched input - would be read back\n // under the input format and mangled.\n if (this._isEditing) {\n this._isEditing = false;\n\n // A partially filled mask is parsed leniently, missing parts falling back to\n // their defaults; only a mask that resolves to nothing clears the value.\n const parsed = this._parseMask(false);\n\n if (parsed === null) {\n this.clear();\n } else {\n this.value = parsed;\n }\n }\n\n // The assignments above are no-ops when the value did not change, so the mask\n // still has to be flipped back to the display format explicitly.\n this._updateMaskDisplay();\n\n // The value can also have moved without an edit - `clear()` or a programmatic\n // assignment while focused - and that is a committed change just the same.\n if (!this.readOnly && !equal(this._oldValue, this.value)) {\n this._oldValue = this.value;\n this.emitEvent('igcChange', { detail: this.value });\n }\n }\n\n /**\n * Marks the masked text as an uncommitted edit. The parsed result deliberately\n * does not reach the public `value` here - that happens on commit - so that the\n * property stays in sync with the last emitted `igcChange`. See {@link _isEditing}.\n */\n protected override _syncValueFromMask(): void {\n if (this._focused) {\n this._isEditing = true;\n return;\n }\n\n // A mask mutation outside of an editing session - e.g. text dropped onto an\n // unfocused input - has no blur coming to commit it.\n this._applyDraft();\n }\n\n protected override _restoreDefaultValue(): void {\n this._isEditing = false;\n super._restoreDefaultValue();\n this._updateMaskDisplay();\n }\n\n /**\n * Checks if all mask positions are filled (no prompt characters remain).\n */\n protected _isMaskComplete(): boolean {\n return !this._maskedValue.includes(this.prompt);\n }\n\n /**\n * Applies a mask pattern to the input, parsing the format string into date parts.\n */\n protected _applyMask(formatString: string): void {\n const previous = this._parser.mask;\n this._parser.mask = formatString;\n\n // Update placeholder if not set or if it matches the old format\n if (!this.placeholder || previous === this.placeholder) {\n this.placeholder = this._parser.mask;\n }\n }\n\n /**\n * Updates the default display format based on current locale.\n */\n private _updateDefaultDisplayFormat(): void {\n this._defaultDisplayFormat = getDateFormatter().getLocaleDateTimeFormat(\n this.locale\n );\n }\n\n protected _initializeDefaultMask(): void {\n this._updateDefaultDisplayFormat();\n\n if (!this._inputFormat) {\n this._applyMask(getDefaultDateTimeFormat(this.locale));\n }\n }\n\n /**\n * Resolves the part names for the container based on the current state.\n */\n protected _resolvePartNames(base: string): Record<string, boolean> {\n return resolveInputPartNames(this._slots, base, !this._isEmptyMask);\n }\n\n // #endregion\n\n // #region Public API\n\n /** Selects all the text inside the input. */\n public select(): void {\n this._input?.select();\n }\n\n /* alternateName: focusComponent */\n /** Sets focus on the control. */\n public override focus(options?: FocusOptions): void {\n this._input?.focus(options);\n }\n\n /* alternateName: blurComponent */\n /** Removes focus from the control. */\n public override blur(): void {\n this._input?.blur();\n }\n\n /* blazorSuppress */\n /** Increments a date/time portion. */\n public stepUp(datePart?: unknown, delta?: number): void {\n this._performStep(datePart, delta, false);\n }\n\n /* blazorSuppress */\n /** Decrements a date/time portion. */\n public stepDown(datePart?: unknown, delta?: number): void {\n this._performStep(datePart, delta, true);\n }\n\n /* blazorSuppress */\n /** Replaces the selected text in the control and re-applies the mask. */\n public override setRangeText(\n replacement: string,\n start?: number,\n end?: number,\n selectMode?: RangeTextSelectMode\n ): void {\n super.setRangeText(replacement, start, end, selectMode);\n this._applyDraft();\n }\n\n /** Clears the input element of user input. */\n public clear(): void {\n this._isEditing = false;\n this._maskedValue = '';\n this.value = null;\n this._updateMaskDisplay();\n }\n\n //#endregion\n\n //#region Render\n\n protected _renderInput(): TemplateResult {\n const hasNegativeTabIndex = this.getAttribute('tabindex') === '-1';\n\n return renderMaskedNativeInput({\n id: this._inputId,\n partNames: this._resolvePartNames('input'),\n name: this.name,\n value: this._maskedValue,\n placeholder: this.placeholder || this._parser.emptyMask,\n readOnly: this.readOnly,\n disabled: this.disabled,\n tabindex: hasNegativeTabIndex ? -1 : undefined,\n aria: this._ariaTarget.resolveBindings(),\n onInput: this._handleInput,\n onBeforeInput: this._handleBeforeInput,\n onFocus: this._handleFocus,\n onBlur: this._handleBlur,\n onClick: this._handleClick,\n onSetMaskSelection: this._setMaskSelection,\n onCompositionStart: this._handleCompositionStart,\n onCompositionEnd: this._handleCompositionEnd,\n onWheel: this._handleWheel,\n onDragEnter: this._handleDragEnter,\n onDragLeave: this._handleDragLeave,\n });\n }\n\n protected override render() {\n return cache(\n renderInputShell(this, {\n theme: this._themes.theme,\n label: this.label,\n labelId: this._inputId,\n containerParts: this._resolvePartNames('container'),\n renderInput: this._renderInput,\n })\n );\n }\n\n //#endregion\n\n // #region Abstract methods and properties\n\n protected abstract get _datePartDeltas(): DatePartDeltas;\n\n /** Provided by `EventEmitterMixin` in the concrete components. */\n public abstract emitEvent(name: string, init?: CustomEventInit): boolean;\n\n /** The committed value of the input. */\n public abstract get value(): T | null;\n public abstract set value(value: T | null);\n\n /**\n * Parses the current masked text into the leaf's value type.\n *\n * A `strict` parse mirrors the committed value semantics - an incomplete mask has\n * no value yet and resolves to `null` rather than to a defaults-filled one.\n */\n protected abstract _parseMask(strict: boolean): T | null;\n\n /** Formats a value into the editable mask. */\n protected abstract _formatValue(value: T | null): string;\n\n protected abstract _buildDisplayValue(): string;\n protected abstract _calculatePartNavigationPosition(\n value: string,\n direction: number\n ): number;\n protected abstract _calculateSpunValue(\n part: unknown,\n delta: number | undefined,\n isDecrement: boolean\n ): T;\n protected abstract _setCurrentDateTime(): void;\n protected abstract _handleFocus(): Promise<void>;\n protected abstract _getDatePartAtCursor(): unknown;\n protected abstract _getDefaultDatePart(): unknown;\n\n public abstract hasDateParts(): boolean;\n public abstract hasTimeParts(): boolean;\n\n // #endregion\n}\n"]}