igniteui-webcomponents 7.2.4 → 7.3.0-beta.1

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 (1012) hide show
  1. package/CHANGELOG.md +162 -0
  2. package/animations/player.d.ts +7 -2
  3. package/animations/player.js +2 -3
  4. package/animations/player.js.map +1 -1
  5. package/animations/view-transition.js +1 -1
  6. package/animations/view-transition.js.map +1 -1
  7. package/components/accordion/accordion.d.ts +1 -1
  8. package/components/accordion/accordion.js +11 -22
  9. package/components/accordion/accordion.js.map +1 -1
  10. package/components/avatar/avatar.d.ts +0 -1
  11. package/components/avatar/avatar.js +8 -12
  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 +2 -4
  16. package/components/badge/badge.js +9 -13
  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 +8 -7
  21. package/components/banner/banner.js +27 -25
  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 +3 -3
  26. package/components/button/button-base.js +9 -8
  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 +3 -3
  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 +41 -21
  38. package/components/button-group/button-group.js +95 -105
  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 +28 -19
  48. package/components/calendar/base.js +20 -44
  49. package/components/calendar/base.js.map +1 -1
  50. package/components/calendar/calendar.d.ts +38 -7
  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 +8 -22
  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 +2 -2
  106. package/components/carousel/carousel-indicator.js +17 -17
  107. package/components/carousel/carousel-indicator.js.map +1 -1
  108. package/components/carousel/carousel-slide.d.ts +1 -3
  109. package/components/carousel/carousel-slide.js +16 -18
  110. package/components/carousel/carousel-slide.js.map +1 -1
  111. package/components/carousel/carousel.d.ts +58 -41
  112. package/components/carousel/carousel.js +170 -145
  113. package/components/carousel/carousel.js.map +1 -1
  114. package/components/carousel/themes/carousel.base.css.js +1 -1
  115. package/components/carousel/themes/carousel.base.css.js.map +1 -1
  116. package/components/carousel/themes/container.d.ts +1 -1
  117. package/components/carousel/themes/container.js.map +1 -1
  118. package/components/carousel/themes/indicator-container.d.ts +1 -1
  119. package/components/carousel/themes/indicator-container.js.map +1 -1
  120. package/components/chat/chat-input.d.ts +4 -4
  121. package/components/chat/chat-input.js +28 -27
  122. package/components/chat/chat-input.js.map +1 -1
  123. package/components/chat/chat-message.d.ts +1 -1
  124. package/components/chat/chat-message.js +7 -6
  125. package/components/chat/chat-message.js.map +1 -1
  126. package/components/chat/chat-state.d.ts +2 -2
  127. package/components/chat/chat-state.js +2 -1
  128. package/components/chat/chat-state.js.map +1 -1
  129. package/components/chat/chat.d.ts +4 -6
  130. package/components/chat/chat.js +13 -19
  131. package/components/chat/chat.js.map +1 -1
  132. package/components/chat/message-attachments.js +5 -5
  133. package/components/chat/message-attachments.js.map +1 -1
  134. package/components/chat/themes/attachments.d.ts +1 -1
  135. package/components/chat/themes/attachments.js.map +1 -1
  136. package/components/chat/themes/input.d.ts +1 -1
  137. package/components/chat/themes/input.js.map +1 -1
  138. package/components/chat/themes/message.d.ts +1 -1
  139. package/components/chat/themes/message.js.map +1 -1
  140. package/components/chat/themes/themes.d.ts +1 -1
  141. package/components/chat/themes/themes.js.map +1 -1
  142. package/components/chat/types.d.ts +2 -2
  143. package/components/chat/types.js.map +1 -1
  144. package/components/chat/utils.d.ts +1 -1
  145. package/components/chat/utils.js +3 -3
  146. package/components/chat/utils.js.map +1 -1
  147. package/components/checkbox/checkbox-base.d.ts +7 -7
  148. package/components/checkbox/checkbox-base.js +7 -7
  149. package/components/checkbox/checkbox-base.js.map +1 -1
  150. package/components/checkbox/checkbox.d.ts +3 -5
  151. package/components/checkbox/checkbox.js +40 -50
  152. package/components/checkbox/checkbox.js.map +1 -1
  153. package/components/checkbox/switch.d.ts +1 -1
  154. package/components/checkbox/switch.js +30 -40
  155. package/components/checkbox/switch.js.map +1 -1
  156. package/components/checkbox/themes/checkbox-themes.d.ts +1 -1
  157. package/components/checkbox/themes/checkbox-themes.js.map +1 -1
  158. package/components/checkbox/themes/switch-themes.d.ts +1 -1
  159. package/components/checkbox/themes/switch-themes.js.map +1 -1
  160. package/components/checkbox/validators.d.ts +1 -1
  161. package/components/checkbox/validators.js +1 -1
  162. package/components/checkbox/validators.js.map +1 -1
  163. package/components/chip/chip.d.ts +9 -16
  164. package/components/chip/chip.js +21 -38
  165. package/components/chip/chip.js.map +1 -1
  166. package/components/chip/themes/chip.base.css.js +1 -1
  167. package/components/chip/themes/chip.base.css.js.map +1 -1
  168. package/components/chip/themes/dark/chip.bootstrap.css.js +1 -1
  169. package/components/chip/themes/dark/chip.bootstrap.css.js.map +1 -1
  170. package/components/chip/themes/dark/chip.fluent.css.js +1 -1
  171. package/components/chip/themes/dark/chip.fluent.css.js.map +1 -1
  172. package/components/chip/themes/dark/chip.indigo.css.js +1 -1
  173. package/components/chip/themes/dark/chip.indigo.css.js.map +1 -1
  174. package/components/chip/themes/dark/chip.material.css.js +1 -1
  175. package/components/chip/themes/dark/chip.material.css.js.map +1 -1
  176. package/components/chip/themes/light/chip.bootstrap.css.js +1 -1
  177. package/components/chip/themes/light/chip.bootstrap.css.js.map +1 -1
  178. package/components/chip/themes/light/chip.fluent.css.js +1 -1
  179. package/components/chip/themes/light/chip.fluent.css.js.map +1 -1
  180. package/components/chip/themes/light/chip.indigo.css.js +1 -1
  181. package/components/chip/themes/light/chip.indigo.css.js.map +1 -1
  182. package/components/chip/themes/light/chip.material.css.js +1 -1
  183. package/components/chip/themes/light/chip.material.css.js.map +1 -1
  184. package/components/chip/themes/light/chip.shared.css.js +1 -1
  185. package/components/chip/themes/light/chip.shared.css.js.map +1 -1
  186. package/components/chip/themes/shared/chip.bootstrap.css.js +1 -1
  187. package/components/chip/themes/shared/chip.bootstrap.css.js.map +1 -1
  188. package/components/chip/themes/shared/chip.common.css.js +1 -1
  189. package/components/chip/themes/shared/chip.common.css.js.map +1 -1
  190. package/components/chip/themes/shared/chip.fluent.css.js +1 -1
  191. package/components/chip/themes/shared/chip.fluent.css.js.map +1 -1
  192. package/components/chip/themes/shared/chip.indigo.css.js +1 -1
  193. package/components/chip/themes/shared/chip.indigo.css.js.map +1 -1
  194. package/components/chip/themes/themes.d.ts +1 -1
  195. package/components/chip/themes/themes.js.map +1 -1
  196. package/components/combo/combo-header.js +2 -2
  197. package/components/combo/combo-header.js.map +1 -1
  198. package/components/combo/combo-item.d.ts +1 -5
  199. package/components/combo/combo-item.js +8 -18
  200. package/components/combo/combo-item.js.map +1 -1
  201. package/components/combo/combo.d.ts +89 -45
  202. package/components/combo/combo.js +244 -229
  203. package/components/combo/combo.js.map +1 -1
  204. package/components/combo/controllers/data.d.ts +30 -3
  205. package/components/combo/controllers/data.js +34 -9
  206. package/components/combo/controllers/data.js.map +1 -1
  207. package/components/combo/controllers/navigation.d.ts +8 -2
  208. package/components/combo/controllers/navigation.js +11 -12
  209. package/components/combo/controllers/navigation.js.map +1 -1
  210. package/components/combo/operations/filter.d.ts +17 -1
  211. package/components/combo/operations/filter.js +29 -9
  212. package/components/combo/operations/filter.js.map +1 -1
  213. package/components/combo/operations/group.js +1 -1
  214. package/components/combo/operations/group.js.map +1 -1
  215. package/components/combo/themes/combo.base.css.js +1 -1
  216. package/components/combo/themes/combo.base.css.js.map +1 -1
  217. package/components/combo/themes/themes.d.ts +1 -1
  218. package/components/combo/themes/themes.js.map +1 -1
  219. package/components/combo/types.d.ts +8 -4
  220. package/components/combo/types.js.map +1 -1
  221. package/components/combo/validators.d.ts +1 -1
  222. package/components/combo/validators.js.map +1 -1
  223. package/components/date-picker/date-picker.base.d.ts +297 -0
  224. package/components/date-picker/date-picker.base.js +473 -0
  225. package/components/date-picker/date-picker.base.js.map +1 -0
  226. package/components/date-picker/date-picker.d.ts +53 -174
  227. package/components/date-picker/date-picker.js +90 -403
  228. package/components/date-picker/date-picker.js.map +1 -1
  229. package/components/date-picker/themes/themes.d.ts +1 -1
  230. package/components/date-picker/themes/themes.js.map +1 -1
  231. package/components/date-picker/validators.d.ts +1 -1
  232. package/components/date-picker/validators.js +2 -2
  233. package/components/date-picker/validators.js.map +1 -1
  234. package/components/date-range-picker/date-range-input.d.ts +14 -18
  235. package/components/date-range-picker/date-range-input.js +39 -126
  236. package/components/date-range-picker/date-range-input.js.map +1 -1
  237. package/components/date-range-picker/date-range-mask-parser.d.ts +22 -34
  238. package/components/date-range-picker/date-range-mask-parser.js +38 -69
  239. package/components/date-range-picker/date-range-mask-parser.js.map +1 -1
  240. package/components/date-range-picker/date-range-picker.d.ts +93 -190
  241. package/components/date-range-picker/date-range-picker.js +208 -543
  242. package/components/date-range-picker/date-range-picker.js.map +1 -1
  243. package/components/date-range-picker/predefined-ranges-area.d.ts +4 -4
  244. package/components/date-range-picker/predefined-ranges-area.js +8 -10
  245. package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
  246. package/components/date-range-picker/themes/ranges-themes.d.ts +1 -1
  247. package/components/date-range-picker/themes/ranges-themes.js.map +1 -1
  248. package/components/date-range-picker/themes/themes.d.ts +1 -1
  249. package/components/date-range-picker/themes/themes.js.map +1 -1
  250. package/components/date-range-picker/validators.d.ts +1 -1
  251. package/components/date-range-picker/validators.js +10 -30
  252. package/components/date-range-picker/validators.js.map +1 -1
  253. package/components/date-time-input/date-part.d.ts +20 -2
  254. package/components/date-time-input/date-part.js +48 -75
  255. package/components/date-time-input/date-part.js.map +1 -1
  256. package/components/date-time-input/date-time-input.base.d.ts +101 -35
  257. package/components/date-time-input/date-time-input.base.js +142 -46
  258. package/components/date-time-input/date-time-input.base.js.map +1 -1
  259. package/components/date-time-input/date-time-input.d.ts +14 -26
  260. package/components/date-time-input/date-time-input.js +37 -90
  261. package/components/date-time-input/date-time-input.js.map +1 -1
  262. package/components/date-time-input/datetime-mask-parser.d.ts +53 -109
  263. package/components/date-time-input/datetime-mask-parser.js +93 -144
  264. package/components/date-time-input/datetime-mask-parser.js.map +1 -1
  265. package/components/date-time-input/validators.d.ts +1 -1
  266. package/components/date-time-input/validators.js +3 -14
  267. package/components/date-time-input/validators.js.map +1 -1
  268. package/components/dialog/dialog.d.ts +8 -9
  269. package/components/dialog/dialog.js +38 -44
  270. package/components/dialog/dialog.js.map +1 -1
  271. package/components/dialog/themes/themes.d.ts +1 -1
  272. package/components/dialog/themes/themes.js.map +1 -1
  273. package/components/divider/divider.d.ts +3 -5
  274. package/components/divider/divider.js +11 -20
  275. package/components/divider/divider.js.map +1 -1
  276. package/components/divider/themes/themes.d.ts +1 -1
  277. package/components/divider/themes/themes.js.map +1 -1
  278. package/components/dropdown/dropdown-group.d.ts +10 -3
  279. package/components/dropdown/dropdown-group.js +16 -5
  280. package/components/dropdown/dropdown-group.js.map +1 -1
  281. package/components/dropdown/dropdown-header.d.ts +2 -2
  282. package/components/dropdown/dropdown-header.js +7 -2
  283. package/components/dropdown/dropdown-header.js.map +1 -1
  284. package/components/dropdown/dropdown-item.d.ts +4 -4
  285. package/components/dropdown/dropdown-item.js +3 -3
  286. package/components/dropdown/dropdown-item.js.map +1 -1
  287. package/components/dropdown/dropdown.d.ts +75 -32
  288. package/components/dropdown/dropdown.js +189 -110
  289. package/components/dropdown/dropdown.js.map +1 -1
  290. package/components/dropdown/themes/container.d.ts +1 -1
  291. package/components/dropdown/themes/container.js.map +1 -1
  292. package/components/dropdown/themes/group.d.ts +1 -1
  293. package/components/dropdown/themes/group.js.map +1 -1
  294. package/components/dropdown/themes/header.d.ts +1 -1
  295. package/components/dropdown/themes/header.js.map +1 -1
  296. package/components/dropdown/themes/item.d.ts +1 -1
  297. package/components/dropdown/themes/item.js.map +1 -1
  298. package/components/expansion-panel/expansion-panel.d.ts +27 -8
  299. package/components/expansion-panel/expansion-panel.js +33 -43
  300. package/components/expansion-panel/expansion-panel.js.map +1 -1
  301. package/components/expansion-panel/themes/themes.d.ts +1 -1
  302. package/components/expansion-panel/themes/themes.js.map +1 -1
  303. package/components/file-input/file-input.d.ts +19 -23
  304. package/components/file-input/file-input.js +21 -34
  305. package/components/file-input/file-input.js.map +1 -1
  306. package/components/file-input/themes/themes.d.ts +1 -1
  307. package/components/file-input/themes/themes.js.map +1 -1
  308. package/components/file-input/validators.d.ts +1 -1
  309. package/components/file-input/validators.js +1 -1
  310. package/components/file-input/validators.js.map +1 -1
  311. package/components/focus-trap/focus-trap.js +3 -2
  312. package/components/focus-trap/focus-trap.js.map +1 -1
  313. package/components/highlight/highlight.d.ts +6 -8
  314. package/components/highlight/highlight.js +14 -22
  315. package/components/highlight/highlight.js.map +1 -1
  316. package/components/highlight/service.d.ts +4 -1
  317. package/components/highlight/service.js +23 -7
  318. package/components/highlight/service.js.map +1 -1
  319. package/components/highlight/themes/themes.d.ts +1 -1
  320. package/components/highlight/themes/themes.js.map +1 -1
  321. package/components/icon/icon-references.d.ts +3 -2
  322. package/components/icon/icon-references.js +103 -491
  323. package/components/icon/icon-references.js.map +1 -1
  324. package/components/icon/icon-state.broadcast.d.ts +14 -17
  325. package/components/icon/icon-state.broadcast.js +19 -20
  326. package/components/icon/icon-state.broadcast.js.map +1 -1
  327. package/components/icon/icon.d.ts +11 -23
  328. package/components/icon/icon.js +36 -28
  329. package/components/icon/icon.js.map +1 -1
  330. package/components/icon/icon.registry.d.ts +69 -131
  331. package/components/icon/icon.registry.js +51 -53
  332. package/components/icon/icon.registry.js.map +1 -1
  333. package/components/icon/internal-icons-lib.js +2 -2
  334. package/components/icon/internal-icons-lib.js.map +1 -1
  335. package/components/icon/registry/parser.d.ts +15 -3
  336. package/components/icon/registry/parser.js +36 -11
  337. package/components/icon/registry/parser.js.map +1 -1
  338. package/components/icon/registry/types.d.ts +55 -11
  339. package/components/icon/registry/types.js.map +1 -1
  340. package/components/icon/themes/icon.base.css.js +1 -1
  341. package/components/icon/themes/icon.base.css.js.map +1 -1
  342. package/components/icon/themes/shared/icon.common.css.js +1 -1
  343. package/components/icon/themes/shared/icon.common.css.js.map +1 -1
  344. package/components/icon/themes/themes.d.ts +1 -1
  345. package/components/icon/themes/themes.js.map +1 -1
  346. package/components/input/input-base.d.ts +10 -25
  347. package/components/input/input-base.js +14 -23
  348. package/components/input/input-base.js.map +1 -1
  349. package/components/input/input.d.ts +23 -30
  350. package/components/input/input.js +38 -69
  351. package/components/input/input.js.map +1 -1
  352. package/components/input/themes/input.base.css.js +1 -1
  353. package/components/input/themes/input.base.css.js.map +1 -1
  354. package/components/input/themes/shared/input.bootstrap.css.js +1 -1
  355. package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
  356. package/components/input/themes/shared/input.common.css.js +1 -1
  357. package/components/input/themes/shared/input.common.css.js.map +1 -1
  358. package/components/input/themes/shared/input.fluent.css.js +1 -1
  359. package/components/input/themes/shared/input.fluent.css.js.map +1 -1
  360. package/components/input/themes/shared/input.indigo.css.js +1 -1
  361. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  362. package/components/input/themes/shared/input.material.css.js +1 -1
  363. package/components/input/themes/shared/input.material.css.js.map +1 -1
  364. package/components/input/themes/themes.d.ts +1 -1
  365. package/components/input/themes/themes.js.map +1 -1
  366. package/components/input/validators.d.ts +1 -1
  367. package/components/input/validators.js +1 -1
  368. package/components/input/validators.js.map +1 -1
  369. package/components/list/list-header.js +3 -3
  370. package/components/list/list-header.js.map +1 -1
  371. package/components/list/list-item.js +3 -3
  372. package/components/list/list-item.js.map +1 -1
  373. package/components/list/list.js +3 -3
  374. package/components/list/list.js.map +1 -1
  375. package/components/list/themes/container.d.ts +1 -1
  376. package/components/list/themes/container.js.map +1 -1
  377. package/components/list/themes/header.d.ts +1 -1
  378. package/components/list/themes/header.js.map +1 -1
  379. package/components/list/themes/item.d.ts +1 -1
  380. package/components/list/themes/item.js.map +1 -1
  381. package/components/mask-input/mask-history.d.ts +99 -0
  382. package/components/mask-input/mask-history.js +95 -0
  383. package/components/mask-input/mask-history.js.map +1 -0
  384. package/components/mask-input/mask-input.d.ts +14 -9
  385. package/components/mask-input/mask-input.js +20 -26
  386. package/components/mask-input/mask-input.js.map +1 -1
  387. package/components/mask-input/mask-parser.d.ts +20 -2
  388. package/components/mask-input/mask-parser.js +21 -13
  389. package/components/mask-input/mask-parser.js.map +1 -1
  390. package/components/mask-input/validators.d.ts +1 -1
  391. package/components/mask-input/validators.js +1 -1
  392. package/components/mask-input/validators.js.map +1 -1
  393. package/components/nav-drawer/nav-drawer-header-item.d.ts +1 -1
  394. package/components/nav-drawer/nav-drawer-header-item.js +2 -2
  395. package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
  396. package/components/nav-drawer/nav-drawer-item.d.ts +2 -2
  397. package/components/nav-drawer/nav-drawer-item.js +4 -4
  398. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  399. package/components/nav-drawer/nav-drawer.d.ts +10 -10
  400. package/components/nav-drawer/nav-drawer.js +23 -37
  401. package/components/nav-drawer/nav-drawer.js.map +1 -1
  402. package/components/nav-drawer/themes/container.base.css.js +1 -1
  403. package/components/nav-drawer/themes/container.base.css.js.map +1 -1
  404. package/components/nav-drawer/themes/container.d.ts +1 -1
  405. package/components/nav-drawer/themes/container.js +2 -3
  406. package/components/nav-drawer/themes/container.js.map +1 -1
  407. package/components/nav-drawer/themes/dark/container/nav-drawer.shared.css.js +1 -1
  408. package/components/nav-drawer/themes/dark/container/nav-drawer.shared.css.js.map +1 -1
  409. package/components/nav-drawer/themes/header-item.d.ts +1 -1
  410. package/components/nav-drawer/themes/header-item.js.map +1 -1
  411. package/components/nav-drawer/themes/item.d.ts +1 -1
  412. package/components/nav-drawer/themes/item.js.map +1 -1
  413. package/components/nav-drawer/themes/light/container/nav-drawer.bootstrap.css.js +1 -1
  414. package/components/nav-drawer/themes/light/container/nav-drawer.bootstrap.css.js.map +1 -1
  415. package/components/nav-drawer/themes/light/container/nav-drawer.fluent.css.js +1 -1
  416. package/components/nav-drawer/themes/light/container/nav-drawer.fluent.css.js.map +1 -1
  417. package/components/nav-drawer/themes/light/container/nav-drawer.indigo.css.js +1 -1
  418. package/components/nav-drawer/themes/light/container/nav-drawer.indigo.css.js.map +1 -1
  419. package/components/nav-drawer/themes/light/container/nav-drawer.shared.css.js +1 -1
  420. package/components/nav-drawer/themes/light/container/nav-drawer.shared.css.js.map +1 -1
  421. package/components/nav-drawer/themes/shared/container/nav-drawer.bootstrap.css.js +1 -1
  422. package/components/nav-drawer/themes/shared/container/nav-drawer.bootstrap.css.js.map +1 -1
  423. package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js +1 -1
  424. package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js.map +1 -1
  425. package/components/nav-drawer/themes/shared/container/nav-drawer.material.css.js +1 -1
  426. package/components/nav-drawer/themes/shared/container/nav-drawer.material.css.js.map +1 -1
  427. package/components/navbar/navbar.js +2 -2
  428. package/components/navbar/navbar.js.map +1 -1
  429. package/components/navbar/themes/themes.d.ts +1 -1
  430. package/components/navbar/themes/themes.js.map +1 -1
  431. package/components/popover/popover.d.ts +10 -3
  432. package/components/popover/popover.js +114 -99
  433. package/components/popover/popover.js.map +1 -1
  434. package/components/progress/base.d.ts +5 -8
  435. package/components/progress/base.js +25 -48
  436. package/components/progress/base.js.map +1 -1
  437. package/components/progress/circular-gradient.d.ts +2 -2
  438. package/components/progress/circular-gradient.js +1 -1
  439. package/components/progress/circular-gradient.js.map +1 -1
  440. package/components/progress/circular-progress.d.ts +15 -15
  441. package/components/progress/circular-progress.js +7 -6
  442. package/components/progress/circular-progress.js.map +1 -1
  443. package/components/progress/linear-progress.d.ts +12 -12
  444. package/components/progress/linear-progress.js +4 -4
  445. package/components/progress/linear-progress.js.map +1 -1
  446. package/components/progress/themes/circular/circular.progress.base.css.js +1 -1
  447. package/components/progress/themes/circular/circular.progress.base.css.js.map +1 -1
  448. package/components/progress/themes/circular/themes.d.ts +1 -1
  449. package/components/progress/themes/circular/themes.js.map +1 -1
  450. package/components/progress/themes/linear/linear.progress.base.css.js +1 -1
  451. package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
  452. package/components/progress/themes/linear/themes.d.ts +1 -1
  453. package/components/progress/themes/linear/themes.js.map +1 -1
  454. package/components/qr-code/model/encode.d.ts +20 -0
  455. package/components/qr-code/model/encode.js +166 -0
  456. package/components/qr-code/model/encode.js.map +1 -0
  457. package/components/qr-code/model/error-correction.d.ts +15 -0
  458. package/components/qr-code/model/error-correction.js +1114 -0
  459. package/components/qr-code/model/error-correction.js.map +1 -0
  460. package/components/qr-code/model/mask.d.ts +11 -0
  461. package/components/qr-code/model/mask.js +161 -0
  462. package/components/qr-code/model/mask.js.map +1 -0
  463. package/components/qr-code/model/matrix.d.ts +15 -0
  464. package/components/qr-code/model/matrix.js +277 -0
  465. package/components/qr-code/model/matrix.js.map +1 -0
  466. package/components/qr-code/qr-code.d.ts +134 -0
  467. package/components/qr-code/qr-code.js +222 -0
  468. package/components/qr-code/qr-code.js.map +1 -0
  469. package/components/qr-code/renderer/constants.d.ts +26 -0
  470. package/components/qr-code/renderer/constants.js +5 -0
  471. package/components/qr-code/renderer/constants.js.map +1 -0
  472. package/components/qr-code/renderer/corner.d.ts +23 -0
  473. package/components/qr-code/renderer/corner.js +25 -0
  474. package/components/qr-code/renderer/corner.js.map +1 -0
  475. package/components/qr-code/renderer/dots.d.ts +14 -0
  476. package/components/qr-code/renderer/dots.js +7 -0
  477. package/components/qr-code/renderer/dots.js.map +1 -0
  478. package/components/qr-code/renderer/helpers.d.ts +18 -0
  479. package/components/qr-code/renderer/helpers.js +158 -0
  480. package/components/qr-code/renderer/helpers.js.map +1 -0
  481. package/components/qr-code/renderer/image.d.ts +23 -0
  482. package/components/qr-code/renderer/image.js +29 -0
  483. package/components/qr-code/renderer/image.js.map +1 -0
  484. package/components/qr-code/themes/dark/qr-code.bootstrap.css.js +3 -0
  485. package/components/qr-code/themes/dark/qr-code.bootstrap.css.js.map +1 -0
  486. package/components/qr-code/themes/dark/qr-code.fluent.css.d.ts +1 -0
  487. package/components/qr-code/themes/dark/qr-code.fluent.css.js +3 -0
  488. package/components/qr-code/themes/dark/qr-code.fluent.css.js.map +1 -0
  489. package/components/qr-code/themes/dark/qr-code.indigo.css.d.ts +1 -0
  490. package/components/qr-code/themes/dark/qr-code.indigo.css.js +3 -0
  491. package/components/qr-code/themes/dark/qr-code.indigo.css.js.map +1 -0
  492. package/components/qr-code/themes/dark/qr-code.material.css.d.ts +1 -0
  493. package/components/qr-code/themes/dark/qr-code.material.css.js +3 -0
  494. package/components/qr-code/themes/dark/qr-code.material.css.js.map +1 -0
  495. package/components/qr-code/themes/light/qr-code.bootstrap.css.d.ts +1 -0
  496. package/components/qr-code/themes/light/qr-code.bootstrap.css.js +3 -0
  497. package/components/qr-code/themes/light/qr-code.bootstrap.css.js.map +1 -0
  498. package/components/qr-code/themes/light/qr-code.fluent.css.d.ts +1 -0
  499. package/components/qr-code/themes/light/qr-code.fluent.css.js +3 -0
  500. package/components/qr-code/themes/light/qr-code.fluent.css.js.map +1 -0
  501. package/components/qr-code/themes/light/qr-code.indigo.css.d.ts +1 -0
  502. package/components/qr-code/themes/light/qr-code.indigo.css.js +3 -0
  503. package/components/qr-code/themes/light/qr-code.indigo.css.js.map +1 -0
  504. package/components/qr-code/themes/light/qr-code.material.css.d.ts +1 -0
  505. package/components/qr-code/themes/light/qr-code.material.css.js +3 -0
  506. package/components/qr-code/themes/light/qr-code.material.css.js.map +1 -0
  507. package/components/qr-code/themes/light/qr-code.shared.css.d.ts +1 -0
  508. package/components/qr-code/themes/light/qr-code.shared.css.js +3 -0
  509. package/components/qr-code/themes/light/qr-code.shared.css.js.map +1 -0
  510. package/components/qr-code/themes/qr-code.base.css.d.ts +1 -0
  511. package/components/qr-code/themes/qr-code.base.css.js +3 -0
  512. package/components/qr-code/themes/qr-code.base.css.js.map +1 -0
  513. package/components/qr-code/themes/shared/qr-code.common.css.d.ts +1 -0
  514. package/components/qr-code/themes/shared/qr-code.common.css.js +3 -0
  515. package/components/qr-code/themes/shared/qr-code.common.css.js.map +1 -0
  516. package/components/qr-code/themes/themes.d.ts +2 -0
  517. package/components/qr-code/themes/themes.js +46 -0
  518. package/components/qr-code/themes/themes.js.map +1 -0
  519. package/components/qr-code/types.d.ts +16 -0
  520. package/components/qr-code/types.js +2 -0
  521. package/components/qr-code/types.js.map +1 -0
  522. package/components/radio/controller.d.ts +7 -0
  523. package/components/radio/controller.js +14 -0
  524. package/components/radio/controller.js.map +1 -0
  525. package/components/radio/radio.d.ts +30 -18
  526. package/components/radio/radio.js +90 -89
  527. package/components/radio/radio.js.map +1 -1
  528. package/components/radio/themes/themes.d.ts +1 -1
  529. package/components/radio/themes/themes.js.map +1 -1
  530. package/components/radio/validators.d.ts +1 -1
  531. package/components/radio/validators.js +5 -3
  532. package/components/radio/validators.js.map +1 -1
  533. package/components/radio-group/radio-group.d.ts +17 -9
  534. package/components/radio-group/radio-group.js +46 -44
  535. package/components/radio-group/radio-group.js.map +1 -1
  536. package/components/radio-group/themes/themes.d.ts +1 -1
  537. package/components/radio-group/themes/themes.js.map +1 -1
  538. package/components/rating/rating-symbol.d.ts +1 -1
  539. package/components/rating/rating-symbol.js +1 -1
  540. package/components/rating/rating-symbol.js.map +1 -1
  541. package/components/rating/rating.d.ts +30 -18
  542. package/components/rating/rating.js +90 -81
  543. package/components/rating/rating.js.map +1 -1
  544. package/components/rating/themes/themes.d.ts +1 -1
  545. package/components/rating/themes/themes.js.map +1 -1
  546. package/components/resize-container/default-ghost.js +4 -3
  547. package/components/resize-container/default-ghost.js.map +1 -1
  548. package/components/resize-container/resize-container.d.ts +3 -3
  549. package/components/resize-container/resize-container.js +9 -7
  550. package/components/resize-container/resize-container.js.map +1 -1
  551. package/components/resize-container/resize-controller.js +6 -5
  552. package/components/resize-container/resize-controller.js.map +1 -1
  553. package/components/resize-container/themes/themes.d.ts +1 -1
  554. package/components/resize-container/themes/themes.js.map +1 -1
  555. package/components/ripple/ripple.d.ts +1 -1
  556. package/components/ripple/ripple.js +3 -2
  557. package/components/ripple/ripple.js.map +1 -1
  558. package/components/select/select-group.d.ts +11 -3
  559. package/components/select/select-group.js +21 -9
  560. package/components/select/select-group.js.map +1 -1
  561. package/components/select/select-header.d.ts +1 -1
  562. package/components/select/select-header.js +7 -2
  563. package/components/select/select-header.js.map +1 -1
  564. package/components/select/select-item.d.ts +4 -4
  565. package/components/select/select-item.js +3 -3
  566. package/components/select/select-item.js.map +1 -1
  567. package/components/select/select.d.ts +48 -28
  568. package/components/select/select.js +143 -94
  569. package/components/select/select.js.map +1 -1
  570. package/components/select/themes/select.base.css.js +1 -1
  571. package/components/select/themes/select.base.css.js.map +1 -1
  572. package/components/select/themes/themes.d.ts +1 -1
  573. package/components/select/themes/themes.js.map +1 -1
  574. package/components/select/validators.d.ts +1 -1
  575. package/components/select/validators.js +1 -1
  576. package/components/select/validators.js.map +1 -1
  577. package/components/slider/range-slider.d.ts +5 -4
  578. package/components/slider/range-slider.js +25 -73
  579. package/components/slider/range-slider.js.map +1 -1
  580. package/components/slider/slider-base.d.ts +9 -6
  581. package/components/slider/slider-base.js +35 -32
  582. package/components/slider/slider-base.js.map +1 -1
  583. package/components/slider/slider-label.js +1 -1
  584. package/components/slider/slider-label.js.map +1 -1
  585. package/components/slider/slider.d.ts +3 -3
  586. package/components/slider/slider.js +15 -11
  587. package/components/slider/slider.js.map +1 -1
  588. package/components/slider/themes/themes.d.ts +1 -1
  589. package/components/slider/themes/themes.js.map +1 -1
  590. package/components/snackbar/snackbar.d.ts +3 -3
  591. package/components/snackbar/snackbar.js +4 -4
  592. package/components/snackbar/snackbar.js.map +1 -1
  593. package/components/snackbar/themes/themes.d.ts +1 -1
  594. package/components/snackbar/themes/themes.js.map +1 -1
  595. package/components/splitter/splitter.d.ts +107 -24
  596. package/components/splitter/splitter.js +234 -147
  597. package/components/splitter/splitter.js.map +1 -1
  598. package/components/splitter/themes/themes.d.ts +1 -1
  599. package/components/splitter/themes/themes.js.map +1 -1
  600. package/components/splitter/types.d.ts +14 -3
  601. package/components/splitter/types.js.map +1 -1
  602. package/components/stepper/common/animations.d.ts +1 -1
  603. package/components/stepper/common/animations.js +2 -2
  604. package/components/stepper/common/animations.js.map +1 -1
  605. package/components/stepper/step.d.ts +4 -1
  606. package/components/stepper/step.js +16 -12
  607. package/components/stepper/step.js.map +1 -1
  608. package/components/stepper/stepper.d.ts +5 -16
  609. package/components/stepper/stepper.js +27 -89
  610. package/components/stepper/stepper.js.map +1 -1
  611. package/components/stepper/themes/step/themes.d.ts +1 -1
  612. package/components/stepper/themes/step/themes.js.map +1 -1
  613. package/components/tabs/tab-dom.d.ts +31 -28
  614. package/components/tabs/tab-dom.js +84 -34
  615. package/components/tabs/tab-dom.js.map +1 -1
  616. package/components/tabs/tab.d.ts +24 -6
  617. package/components/tabs/tab.js +36 -14
  618. package/components/tabs/tab.js.map +1 -1
  619. package/components/tabs/tabs.d.ts +37 -27
  620. package/components/tabs/tabs.js +118 -129
  621. package/components/tabs/tabs.js.map +1 -1
  622. package/components/tabs/themes/shared/tabs/tabs.indigo.css.js +1 -1
  623. package/components/tabs/themes/shared/tabs/tabs.indigo.css.js.map +1 -1
  624. package/components/tabs/themes/tab-themes.d.ts +1 -1
  625. package/components/tabs/themes/tab-themes.js.map +1 -1
  626. package/components/tabs/themes/tabs-themes.d.ts +1 -1
  627. package/components/tabs/themes/tabs-themes.js.map +1 -1
  628. package/components/tabs/themes/tabs.base.css.js +1 -1
  629. package/components/tabs/themes/tabs.base.css.js.map +1 -1
  630. package/components/textarea/textarea.d.ts +24 -20
  631. package/components/textarea/textarea.js +25 -27
  632. package/components/textarea/textarea.js.map +1 -1
  633. package/components/textarea/themes/themes.d.ts +1 -1
  634. package/components/textarea/themes/themes.js.map +1 -1
  635. package/components/textarea/validators.d.ts +1 -1
  636. package/components/textarea/validators.js +1 -1
  637. package/components/textarea/validators.js.map +1 -1
  638. package/components/theme-provider/theme-provider.d.ts +3 -5
  639. package/components/theme-provider/theme-provider.js +13 -23
  640. package/components/theme-provider/theme-provider.js.map +1 -1
  641. package/components/tile-manager/position.d.ts +1 -1
  642. package/components/tile-manager/position.js +2 -2
  643. package/components/tile-manager/position.js.map +1 -1
  644. package/components/tile-manager/resize-state.js +4 -3
  645. package/components/tile-manager/resize-state.js.map +1 -1
  646. package/components/tile-manager/themes/container.d.ts +1 -1
  647. package/components/tile-manager/themes/container.js.map +1 -1
  648. package/components/tile-manager/themes/tile.d.ts +1 -1
  649. package/components/tile-manager/themes/tile.js.map +1 -1
  650. package/components/tile-manager/tile-ghost-util.js +1 -1
  651. package/components/tile-manager/tile-ghost-util.js.map +1 -1
  652. package/components/tile-manager/tile-manager.d.ts +11 -22
  653. package/components/tile-manager/tile-manager.js +50 -81
  654. package/components/tile-manager/tile-manager.js.map +1 -1
  655. package/components/tile-manager/tile.d.ts +14 -22
  656. package/components/tile-manager/tile.js +66 -80
  657. package/components/tile-manager/tile.js.map +1 -1
  658. package/components/toast/themes/themes.d.ts +1 -1
  659. package/components/toast/themes/themes.js.map +1 -1
  660. package/components/toast/toast.d.ts +1 -1
  661. package/components/toast/toast.js +3 -3
  662. package/components/toast/toast.js.map +1 -1
  663. package/components/tooltip/controller.d.ts +18 -16
  664. package/components/tooltip/controller.js +62 -41
  665. package/components/tooltip/controller.js.map +1 -1
  666. package/components/tooltip/service.d.ts +2 -1
  667. package/components/tooltip/service.js +10 -15
  668. package/components/tooltip/service.js.map +1 -1
  669. package/components/tooltip/themes/shared/tooltip.common.css.js +1 -1
  670. package/components/tooltip/themes/shared/tooltip.common.css.js.map +1 -1
  671. package/components/tooltip/themes/shared/tooltip.indigo.css.js +1 -1
  672. package/components/tooltip/themes/shared/tooltip.indigo.css.js.map +1 -1
  673. package/components/tooltip/themes/themes.d.ts +1 -1
  674. package/components/tooltip/themes/themes.js.map +1 -1
  675. package/components/tooltip/themes/tooltip.base.css.js +1 -1
  676. package/components/tooltip/themes/tooltip.base.css.js.map +1 -1
  677. package/components/tooltip/tooltip.d.ts +68 -25
  678. package/components/tooltip/tooltip.js +130 -88
  679. package/components/tooltip/tooltip.js.map +1 -1
  680. package/components/tree/themes/container.base.css.js +1 -1
  681. package/components/tree/themes/container.base.css.js.map +1 -1
  682. package/components/tree/themes/container.d.ts +1 -1
  683. package/components/tree/themes/container.js.map +1 -1
  684. package/components/tree/themes/item.base.css.js +1 -1
  685. package/components/tree/themes/item.base.css.js.map +1 -1
  686. package/components/tree/themes/item.d.ts +1 -1
  687. package/components/tree/themes/item.js.map +1 -1
  688. package/components/tree/tree-item.d.ts +62 -36
  689. package/components/tree/tree-item.js +198 -208
  690. package/components/tree/tree-item.js.map +1 -1
  691. package/components/tree/tree.common.d.ts +16 -1
  692. package/components/tree/tree.common.js +40 -1
  693. package/components/tree/tree.common.js.map +1 -1
  694. package/components/tree/tree.d.ts +17 -23
  695. package/components/tree/tree.js +68 -94
  696. package/components/tree/tree.js.map +1 -1
  697. package/components/tree/tree.navigation.d.ts +39 -29
  698. package/components/tree/tree.navigation.js +140 -192
  699. package/components/tree/tree.navigation.js.map +1 -1
  700. package/components/tree/tree.selection.d.ts +32 -31
  701. package/components/tree/tree.selection.js +184 -178
  702. package/components/tree/tree.selection.js.map +1 -1
  703. package/components/types.js.map +1 -1
  704. package/components/validation-container/validation-container.d.ts +2 -3
  705. package/components/validation-container/validation-container.js +7 -6
  706. package/components/validation-container/validation-container.js.map +1 -1
  707. package/components/virtualization/engine.d.ts +94 -0
  708. package/components/virtualization/engine.js +217 -0
  709. package/components/virtualization/engine.js.map +1 -0
  710. package/components/virtualization/types.d.ts +54 -0
  711. package/components/virtualization/types.js +14 -0
  712. package/components/virtualization/types.js.map +1 -0
  713. package/components/virtualization/virtualization.d.ts +249 -0
  714. package/components/virtualization/virtualization.js +482 -0
  715. package/components/virtualization/virtualization.js.map +1 -0
  716. package/components/visually-hidden/visually-hidden.js +1 -1
  717. package/components/visually-hidden/visually-hidden.js.map +1 -1
  718. package/custom-elements.json +50649 -38832
  719. package/extras/chat-markdown-renderer.d.ts +1 -1
  720. package/extras/chat-markdown-renderer.js.map +1 -1
  721. package/igniteui-webcomponents.css-data.json +2 -2
  722. package/igniteui-webcomponents.html-data.json +1 -1
  723. package/index.d.ts +17 -12
  724. package/index.js +11 -9
  725. package/index.js.map +1 -1
  726. package/internals/abort-handler.js.map +1 -0
  727. package/internals/context.d.ts +39 -0
  728. package/{components/common → internals}/context.js +2 -1
  729. package/internals/context.js.map +1 -0
  730. package/internals/controllers/adopt-styles.d.ts +76 -0
  731. package/internals/controllers/adopt-styles.js +173 -0
  732. package/internals/controllers/adopt-styles.js.map +1 -0
  733. package/internals/controllers/aria-projection.d.ts +144 -0
  734. package/internals/controllers/aria-projection.js +138 -0
  735. package/internals/controllers/aria-projection.js.map +1 -0
  736. package/{components/common → internals}/controllers/async-consumer.js +8 -7
  737. package/internals/controllers/async-consumer.js.map +1 -0
  738. package/internals/controllers/command.js.map +1 -0
  739. package/internals/controllers/context-provider.d.ts +48 -0
  740. package/internals/controllers/context-provider.js +29 -0
  741. package/internals/controllers/context-provider.js.map +1 -0
  742. package/{components/common → internals}/controllers/drag.js +8 -7
  743. package/internals/controllers/drag.js.map +1 -0
  744. package/{components/common → internals}/controllers/focus-ring.js +5 -2
  745. package/internals/controllers/focus-ring.js.map +1 -0
  746. package/{components/common → internals}/controllers/fullscreen.js +6 -3
  747. package/internals/controllers/fullscreen.js.map +1 -0
  748. package/{components/common → internals}/controllers/gestures.d.ts +1 -1
  749. package/{components/common → internals}/controllers/gestures.js +7 -4
  750. package/internals/controllers/gestures.js.map +1 -0
  751. package/internals/controllers/group.d.ts +64 -0
  752. package/internals/controllers/group.js +104 -0
  753. package/internals/controllers/group.js.map +1 -0
  754. package/{components/common → internals}/controllers/id-resolver.js +15 -21
  755. package/internals/controllers/id-resolver.js.map +1 -0
  756. package/{components/common → internals}/controllers/internals.d.ts +52 -3
  757. package/{components/common → internals}/controllers/internals.js +35 -0
  758. package/internals/controllers/internals.js.map +1 -0
  759. package/{components/common → internals}/controllers/key-bindings.d.ts +8 -5
  760. package/{components/common → internals}/controllers/key-bindings.js +46 -29
  761. package/internals/controllers/key-bindings.js.map +1 -0
  762. package/{components/common → internals}/controllers/mutation-observer.d.ts +3 -2
  763. package/{components/common → internals}/controllers/mutation-observer.js +24 -22
  764. package/internals/controllers/mutation-observer.js.map +1 -0
  765. package/{components/common → internals}/controllers/resize-observer.d.ts +11 -1
  766. package/{components/common → internals}/controllers/resize-observer.js +13 -2
  767. package/internals/controllers/resize-observer.js.map +1 -0
  768. package/{components/common → internals}/controllers/root-click.js +8 -13
  769. package/internals/controllers/root-click.js.map +1 -0
  770. package/{components/common → internals}/controllers/root-scroll.d.ts +11 -8
  771. package/internals/controllers/root-scroll.js +71 -0
  772. package/internals/controllers/root-scroll.js.map +1 -0
  773. package/internals/controllers/roving-focus.d.ts +72 -0
  774. package/internals/controllers/roving-focus.js +61 -0
  775. package/internals/controllers/roving-focus.js.map +1 -0
  776. package/{components/common → internals}/controllers/slot.d.ts +25 -1
  777. package/{components/common → internals}/controllers/slot.js +22 -6
  778. package/internals/controllers/slot.js.map +1 -0
  779. package/internals/controllers/toggle.d.ts +96 -0
  780. package/internals/controllers/toggle.js +65 -0
  781. package/internals/controllers/toggle.js.map +1 -0
  782. package/internals/date/compare.d.ts +2 -0
  783. package/internals/date/compare.js +23 -0
  784. package/internals/date/compare.js.map +1 -0
  785. package/internals/date/converters.d.ts +18 -0
  786. package/internals/date/converters.js +70 -0
  787. package/internals/date/converters.js.map +1 -0
  788. package/{components/calendar → internals/date}/model.d.ts +10 -3
  789. package/{components/calendar → internals/date}/model.js +29 -0
  790. package/internals/date/model.js.map +1 -0
  791. package/internals/decorators/blazorAdditionalDependencies.js.map +1 -0
  792. package/internals/decorators/blazorDeepImport.js.map +1 -0
  793. package/internals/decorators/blazorInclude.js.map +1 -0
  794. package/internals/decorators/blazorIndirectRender.js.map +1 -0
  795. package/internals/decorators/blazorSuppressComponent.js.map +1 -0
  796. package/internals/decorators/coerced-property.d.ts +47 -0
  797. package/internals/decorators/coerced-property.js +36 -0
  798. package/internals/decorators/coerced-property.js.map +1 -0
  799. package/internals/decorators/shadow-options.js.map +1 -0
  800. package/internals/definitions/defineAllComponents.js +153 -0
  801. package/internals/definitions/defineAllComponents.js.map +1 -0
  802. package/internals/definitions/defineComponents.js.map +1 -0
  803. package/internals/definitions/register.js.map +1 -0
  804. package/{components/common → internals}/i18n/EN/calendar.resources.js +1 -1
  805. package/internals/i18n/EN/calendar.resources.js.map +1 -0
  806. package/internals/i18n/EN/chat.resources.js.map +1 -0
  807. package/internals/i18n/EN/date-picker.resources.js.map +1 -0
  808. package/internals/i18n/EN/date-range-picker.resources.js.map +1 -0
  809. package/{components/common → internals}/i18n/i18n-controller.d.ts +22 -3
  810. package/{components/common → internals}/i18n/i18n-controller.js +28 -6
  811. package/internals/i18n/i18n-controller.js.map +1 -0
  812. package/{components/common → internals}/i18n/utils.js +1 -1
  813. package/internals/i18n/utils.js.map +1 -0
  814. package/{components/common → internals}/mixins/alert.d.ts +3 -3
  815. package/{components/common → internals}/mixins/alert.js +8 -6
  816. package/internals/mixins/alert.js.map +1 -0
  817. package/{components/common → internals}/mixins/combo-box.d.ts +13 -14
  818. package/{components/common → internals}/mixins/combo-box.js +15 -36
  819. package/internals/mixins/combo-box.js.map +1 -0
  820. package/internals/mixins/constructor.js.map +1 -0
  821. package/internals/mixins/event-emitter.js.map +1 -0
  822. package/{components/common → internals}/mixins/forms/associated-required.js +10 -19
  823. package/internals/mixins/forms/associated-required.js.map +1 -0
  824. package/{components/common → internals}/mixins/forms/associated.js +63 -38
  825. package/internals/mixins/forms/associated.js.map +1 -0
  826. package/{components/common → internals}/mixins/forms/form-transformers.d.ts +1 -1
  827. package/{components/common → internals}/mixins/forms/form-transformers.js +2 -2
  828. package/internals/mixins/forms/form-transformers.js.map +1 -0
  829. package/internals/mixins/forms/form-value.js.map +1 -0
  830. package/{components/common → internals}/mixins/forms/types.d.ts +25 -7
  831. package/internals/mixins/forms/types.js.map +1 -0
  832. package/internals/mixins/i18n.d.ts +31 -0
  833. package/internals/mixins/i18n.js +36 -0
  834. package/internals/mixins/i18n.js.map +1 -0
  835. package/{components/common → internals}/mixins/mask-behavior.d.ts +17 -8
  836. package/{components/common → internals}/mixins/mask-behavior.js +118 -31
  837. package/internals/mixins/mask-behavior.js.map +1 -0
  838. package/{components/common → internals}/mixins/option.d.ts +0 -2
  839. package/{components/common → internals}/mixins/option.js +5 -6
  840. package/internals/mixins/option.js.map +1 -0
  841. package/internals/part-map.js.map +1 -0
  842. package/{components/common → internals}/templates/input-shell.d.ts +8 -1
  843. package/{components/common → internals}/templates/input-shell.js +14 -4
  844. package/internals/templates/input-shell.js.map +1 -0
  845. package/{components/common → internals}/templates/masked-input.d.ts +8 -4
  846. package/{components/common → internals}/templates/masked-input.js +4 -3
  847. package/internals/templates/masked-input.js.map +1 -0
  848. package/internals/templates/slotted-icon.d.ts +32 -0
  849. package/internals/templates/slotted-icon.js +19 -0
  850. package/internals/templates/slotted-icon.js.map +1 -0
  851. package/internals/templates/toggle-shell.d.ts +46 -0
  852. package/internals/templates/toggle-shell.js +38 -0
  853. package/internals/templates/toggle-shell.js.map +1 -0
  854. package/internals/timing.d.ts +32 -0
  855. package/internals/timing.js +20 -0
  856. package/internals/timing.js.map +1 -0
  857. package/internals/utils/arrays.d.ts +53 -0
  858. package/internals/utils/arrays.js +31 -0
  859. package/internals/utils/arrays.js.map +1 -0
  860. package/internals/utils/dom.d.ts +114 -0
  861. package/internals/utils/dom.js +157 -0
  862. package/internals/utils/dom.js.map +1 -0
  863. package/internals/utils/events.d.ts +41 -0
  864. package/internals/utils/events.js +37 -0
  865. package/internals/utils/events.js.map +1 -0
  866. package/internals/utils/lit.d.ts +8 -0
  867. package/internals/utils/lit.js +15 -0
  868. package/internals/utils/lit.js.map +1 -0
  869. package/internals/utils/math.d.ts +50 -0
  870. package/internals/utils/math.js +38 -0
  871. package/internals/utils/math.js.map +1 -0
  872. package/internals/utils/objects.d.ts +25 -0
  873. package/internals/utils/objects.js +125 -0
  874. package/internals/utils/objects.js.map +1 -0
  875. package/internals/utils/strings.d.ts +44 -0
  876. package/internals/utils/strings.js +46 -0
  877. package/internals/utils/strings.js.map +1 -0
  878. package/internals/utils/types.d.ts +13 -0
  879. package/internals/utils/types.js +31 -0
  880. package/internals/utils/types.js.map +1 -0
  881. package/{components/common → internals}/validators.d.ts +24 -1
  882. package/{components/common → internals}/validators.js +25 -2
  883. package/internals/validators.js.map +1 -0
  884. package/package.json +15 -7
  885. package/themes/dark/bootstrap.css +1 -1
  886. package/themes/dark/fluent.css +1 -1
  887. package/themes/dark/indigo.css +1 -1
  888. package/themes/dark/material.css +1 -1
  889. package/themes/light/bootstrap.css +1 -1
  890. package/themes/light/fluent.css +1 -1
  891. package/themes/light/indigo.css +1 -1
  892. package/themes/light/material.css +1 -1
  893. package/theming/theming-controller.d.ts +5 -5
  894. package/theming/theming-controller.js.map +1 -1
  895. package/web-types.json +3 -3
  896. package/components/calendar/model.js.map +0 -1
  897. package/components/combo/combo-list.d.ts +0 -11
  898. package/components/combo/combo-list.js +0 -13
  899. package/components/combo/combo-list.js.map +0 -1
  900. package/components/common/abort-handler.js.map +0 -1
  901. package/components/common/context.d.ts +0 -25
  902. package/components/common/context.js.map +0 -1
  903. package/components/common/controllers/adopt-styles.d.ts +0 -124
  904. package/components/common/controllers/adopt-styles.js +0 -75
  905. package/components/common/controllers/adopt-styles.js.map +0 -1
  906. package/components/common/controllers/async-consumer.js.map +0 -1
  907. package/components/common/controllers/command.js.map +0 -1
  908. package/components/common/controllers/drag.js.map +0 -1
  909. package/components/common/controllers/focus-ring.js.map +0 -1
  910. package/components/common/controllers/fullscreen.js.map +0 -1
  911. package/components/common/controllers/gestures.js.map +0 -1
  912. package/components/common/controllers/id-resolver.js.map +0 -1
  913. package/components/common/controllers/internals.js.map +0 -1
  914. package/components/common/controllers/key-bindings.js.map +0 -1
  915. package/components/common/controllers/mutation-observer.js.map +0 -1
  916. package/components/common/controllers/resize-observer.js.map +0 -1
  917. package/components/common/controllers/root-click.js.map +0 -1
  918. package/components/common/controllers/root-scroll.js +0 -63
  919. package/components/common/controllers/root-scroll.js.map +0 -1
  920. package/components/common/controllers/slot.js.map +0 -1
  921. package/components/common/decorators/blazorAdditionalDependencies.js.map +0 -1
  922. package/components/common/decorators/blazorDeepImport.js.map +0 -1
  923. package/components/common/decorators/blazorInclude.js.map +0 -1
  924. package/components/common/decorators/blazorIndirectRender.js.map +0 -1
  925. package/components/common/decorators/blazorSuppressComponent.js.map +0 -1
  926. package/components/common/decorators/shadow-options.js.map +0 -1
  927. package/components/common/decorators/watch.d.ts +0 -5
  928. package/components/common/decorators/watch.js +0 -19
  929. package/components/common/decorators/watch.js.map +0 -1
  930. package/components/common/definitions/defineAllComponents.js +0 -151
  931. package/components/common/definitions/defineAllComponents.js.map +0 -1
  932. package/components/common/definitions/defineComponents.js.map +0 -1
  933. package/components/common/definitions/register.js.map +0 -1
  934. package/components/common/i18n/EN/calendar.resources.js.map +0 -1
  935. package/components/common/i18n/EN/chat.resources.js.map +0 -1
  936. package/components/common/i18n/EN/date-picker.resources.js.map +0 -1
  937. package/components/common/i18n/EN/date-range-picker.resources.js.map +0 -1
  938. package/components/common/i18n/i18n-controller.js.map +0 -1
  939. package/components/common/i18n/utils.js.map +0 -1
  940. package/components/common/mixins/alert.js.map +0 -1
  941. package/components/common/mixins/combo-box.js.map +0 -1
  942. package/components/common/mixins/constructor.js.map +0 -1
  943. package/components/common/mixins/event-emitter.js.map +0 -1
  944. package/components/common/mixins/forms/associated-required.js.map +0 -1
  945. package/components/common/mixins/forms/associated.js.map +0 -1
  946. package/components/common/mixins/forms/form-transformers.js.map +0 -1
  947. package/components/common/mixins/forms/form-value.js.map +0 -1
  948. package/components/common/mixins/forms/types.js.map +0 -1
  949. package/components/common/mixins/mask-behavior.js.map +0 -1
  950. package/components/common/mixins/option.js.map +0 -1
  951. package/components/common/part-map.js.map +0 -1
  952. package/components/common/templates/input-shell.js.map +0 -1
  953. package/components/common/templates/masked-input.js.map +0 -1
  954. package/components/common/util.d.ts +0 -196
  955. package/components/common/util.js +0 -390
  956. package/components/common/util.js.map +0 -1
  957. package/components/common/validators.js.map +0 -1
  958. package/components/icon/registry/default-map.d.ts +0 -107
  959. package/components/icon/registry/default-map.js +0 -25
  960. package/components/icon/registry/default-map.js.map +0 -1
  961. package/components/nav-drawer/themes/shared/container/nav-drawer.fluent.css.js +0 -3
  962. package/components/nav-drawer/themes/shared/container/nav-drawer.fluent.css.js.map +0 -1
  963. package/components/radio/utils.d.ts +0 -13
  964. package/components/radio/utils.js +0 -37
  965. package/components/radio/utils.js.map +0 -1
  966. /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
  967. /package/{components/common → internals}/abort-handler.d.ts +0 -0
  968. /package/{components/common → internals}/abort-handler.js +0 -0
  969. /package/{components/common → internals}/controllers/async-consumer.d.ts +0 -0
  970. /package/{components/common → internals}/controllers/command.d.ts +0 -0
  971. /package/{components/common → internals}/controllers/command.js +0 -0
  972. /package/{components/common → internals}/controllers/drag.d.ts +0 -0
  973. /package/{components/common → internals}/controllers/focus-ring.d.ts +0 -0
  974. /package/{components/common → internals}/controllers/fullscreen.d.ts +0 -0
  975. /package/{components/common → internals}/controllers/id-resolver.d.ts +0 -0
  976. /package/{components/common → internals}/controllers/root-click.d.ts +0 -0
  977. /package/{components/common → internals}/decorators/blazorAdditionalDependencies.d.ts +0 -0
  978. /package/{components/common → internals}/decorators/blazorAdditionalDependencies.js +0 -0
  979. /package/{components/common → internals}/decorators/blazorDeepImport.d.ts +0 -0
  980. /package/{components/common → internals}/decorators/blazorDeepImport.js +0 -0
  981. /package/{components/common → internals}/decorators/blazorInclude.d.ts +0 -0
  982. /package/{components/common → internals}/decorators/blazorInclude.js +0 -0
  983. /package/{components/common → internals}/decorators/blazorIndirectRender.d.ts +0 -0
  984. /package/{components/common → internals}/decorators/blazorIndirectRender.js +0 -0
  985. /package/{components/common → internals}/decorators/blazorSuppressComponent.d.ts +0 -0
  986. /package/{components/common → internals}/decorators/blazorSuppressComponent.js +0 -0
  987. /package/{components/common → internals}/decorators/shadow-options.d.ts +0 -0
  988. /package/{components/common → internals}/decorators/shadow-options.js +0 -0
  989. /package/{components/common → internals}/definitions/defineAllComponents.d.ts +0 -0
  990. /package/{components/common → internals}/definitions/defineComponents.d.ts +0 -0
  991. /package/{components/common → internals}/definitions/defineComponents.js +0 -0
  992. /package/{components/common → internals}/definitions/register.d.ts +0 -0
  993. /package/{components/common → internals}/definitions/register.js +0 -0
  994. /package/{components/common → internals}/i18n/EN/calendar.resources.d.ts +0 -0
  995. /package/{components/common → internals}/i18n/EN/chat.resources.d.ts +0 -0
  996. /package/{components/common → internals}/i18n/EN/chat.resources.js +0 -0
  997. /package/{components/common → internals}/i18n/EN/date-picker.resources.d.ts +0 -0
  998. /package/{components/common → internals}/i18n/EN/date-picker.resources.js +0 -0
  999. /package/{components/common → internals}/i18n/EN/date-range-picker.resources.d.ts +0 -0
  1000. /package/{components/common → internals}/i18n/EN/date-range-picker.resources.js +0 -0
  1001. /package/{components/common → internals}/i18n/utils.d.ts +0 -0
  1002. /package/{components/common → internals}/mixins/constructor.d.ts +0 -0
  1003. /package/{components/common → internals}/mixins/constructor.js +0 -0
  1004. /package/{components/common → internals}/mixins/event-emitter.d.ts +0 -0
  1005. /package/{components/common → internals}/mixins/event-emitter.js +0 -0
  1006. /package/{components/common → internals}/mixins/forms/associated-required.d.ts +0 -0
  1007. /package/{components/common → internals}/mixins/forms/associated.d.ts +0 -0
  1008. /package/{components/common → internals}/mixins/forms/form-value.d.ts +0 -0
  1009. /package/{components/common → internals}/mixins/forms/form-value.js +0 -0
  1010. /package/{components/common → internals}/mixins/forms/types.js +0 -0
  1011. /package/{components/common → internals}/part-map.d.ts +0 -0
  1012. /package/{components/common → internals}/part-map.js +0 -0
@@ -1,3 +1,4 @@
1
+ import { clamp, modulo } from '#internals/utils/math.js';
1
2
  export var DatePart;
2
3
  (function (DatePart) {
3
4
  DatePart["Month"] = "month";
@@ -18,6 +19,16 @@ export const DatePartType = {
18
19
  AmPm: 'amPm',
19
20
  Literal: 'literal',
20
21
  };
22
+ export const DATE_PART_TYPES = new Set([
23
+ DatePartType.Date,
24
+ DatePartType.Month,
25
+ DatePartType.Year,
26
+ ]);
27
+ export const TIME_PART_TYPES = new Set([
28
+ DatePartType.Hours,
29
+ DatePartType.Minutes,
30
+ DatePartType.Seconds,
31
+ ]);
21
32
  export const DEFAULT_DATE_PARTS_SPIN_DELTAS = Object.freeze({
22
33
  date: 1,
23
34
  month: 1,
@@ -26,10 +37,26 @@ export const DEFAULT_DATE_PARTS_SPIN_DELTAS = Object.freeze({
26
37
  minutes: 1,
27
38
  seconds: 1,
28
39
  });
29
- const TIME_BOUNDS = {
30
- hours: { min: 0, max: 23 },
31
- minutes: { min: 0, max: 59 },
32
- seconds: { min: 0, max: 59 },
40
+ const TIME_PART_CONFIG = {
41
+ hours: {
42
+ min: 0,
43
+ max: 23,
44
+ get: (date) => date.getHours(),
45
+ set: (date, value) => date.setHours(value),
46
+ display: (value, format) => format.includes('h') ? toTwelveHourFormat(value) : value,
47
+ },
48
+ minutes: {
49
+ min: 0,
50
+ max: 59,
51
+ get: (date) => date.getMinutes(),
52
+ set: (date, value) => date.setMinutes(value),
53
+ },
54
+ seconds: {
55
+ min: 0,
56
+ max: 59,
57
+ get: (date) => date.getSeconds(),
58
+ set: (date, value) => date.setSeconds(value),
59
+ },
33
60
  };
34
61
  const DATE_BOUNDS = {
35
62
  month: { min: 0, max: 11 },
@@ -45,15 +72,10 @@ function toTwelveHourFormat(hours) {
45
72
  const h = hours % 12;
46
73
  return h === 0 ? 12 : h;
47
74
  }
48
- function spinTimePart(date, delta, max, min, setter, getter, spinLoop) {
49
- let value = getter.call(date) + delta;
50
- if (value > max) {
51
- value = spinLoop ? value % (max + 1) : max;
52
- }
53
- else if (value < min) {
54
- value = spinLoop ? max + 1 + (value % (max + 1)) : min;
55
- }
56
- setter.call(date, value);
75
+ function wrapOrClamp(value, min, max, spinLoop) {
76
+ return spinLoop
77
+ ? min + modulo(value - min, max - min + 1)
78
+ : clamp(value, min, max);
57
79
  }
58
80
  class DatePartBase {
59
81
  constructor(type, options) {
@@ -100,14 +122,7 @@ class MonthPart extends DatePartBase {
100
122
  if (date.getDate() > maxDate) {
101
123
  date.setDate(maxDate);
102
124
  }
103
- let month = date.getMonth() + delta;
104
- if (month > max) {
105
- month = spinLoop ? (month % max) - 1 : max;
106
- }
107
- else if (month < min) {
108
- month = spinLoop ? max + (month % max) + 1 : min;
109
- }
110
- date.setMonth(month);
125
+ date.setMonth(wrapOrClamp(date.getMonth() + delta, min, max, spinLoop));
111
126
  }
112
127
  getValue(date) {
113
128
  return padValue(date.getMonth() + 1, this.format.length);
@@ -131,69 +146,29 @@ class DateOfMonthPart extends DatePartBase {
131
146
  const { date, spinLoop } = options;
132
147
  const maxDate = daysInMonth(date.getFullYear(), date.getMonth());
133
148
  const { min } = DATE_BOUNDS.date;
134
- let dayOfMonth = date.getDate() + delta;
135
- if (dayOfMonth > maxDate) {
136
- dayOfMonth = spinLoop ? dayOfMonth % maxDate : maxDate;
137
- }
138
- else if (dayOfMonth < min) {
139
- dayOfMonth = spinLoop ? maxDate + (dayOfMonth % maxDate) : min;
140
- }
141
- date.setDate(dayOfMonth);
149
+ date.setDate(wrapOrClamp(date.getDate() + delta, min, maxDate, spinLoop));
142
150
  }
143
151
  getValue(date) {
144
152
  return padValue(date.getDate(), this.format.length);
145
153
  }
146
154
  }
147
- class HoursPart extends DatePartBase {
148
- constructor(options) {
149
- super(DatePartType.Hours, options);
150
- }
151
- validate(value) {
152
- return value >= TIME_BOUNDS.hours.min && value <= TIME_BOUNDS.hours.max;
153
- }
154
- spin(delta, options) {
155
- const { date, spinLoop } = options;
156
- const { min, max } = TIME_BOUNDS.hours;
157
- spinTimePart(date, delta, max, min, date.setHours, date.getHours, spinLoop);
158
- }
159
- getValue(date) {
160
- const isTwelveHour = this.format.includes('h');
161
- const hours = isTwelveHour
162
- ? toTwelveHourFormat(date.getHours())
163
- : date.getHours();
164
- return padValue(hours, this.format.length);
165
- }
166
- }
167
- class MinutesPart extends DatePartBase {
168
- constructor(options) {
169
- super(DatePartType.Minutes, options);
170
- }
171
- validate(value) {
172
- return value >= TIME_BOUNDS.minutes.min && value <= TIME_BOUNDS.minutes.max;
173
- }
174
- spin(delta, options) {
175
- const { date, spinLoop } = options;
176
- const { min, max } = TIME_BOUNDS.minutes;
177
- spinTimePart(date, delta, max, min, date.setMinutes, date.getMinutes, spinLoop);
178
- }
179
- getValue(date) {
180
- return padValue(date.getMinutes(), this.format.length);
181
- }
182
- }
183
- class SecondsPart extends DatePartBase {
184
- constructor(options) {
185
- super(DatePartType.Seconds, options);
155
+ class TimePart extends DatePartBase {
156
+ constructor(type, options) {
157
+ super(type, options);
158
+ this._config = TIME_PART_CONFIG[type];
186
159
  }
187
160
  validate(value) {
188
- return value >= TIME_BOUNDS.seconds.min && value <= TIME_BOUNDS.seconds.max;
161
+ return value >= this._config.min && value <= this._config.max;
189
162
  }
190
163
  spin(delta, options) {
191
164
  const { date, spinLoop } = options;
192
- const { min, max } = TIME_BOUNDS.seconds;
193
- spinTimePart(date, delta, max, min, date.setSeconds, date.getSeconds, spinLoop);
165
+ const { min, max, get, set } = this._config;
166
+ set(date, wrapOrClamp(get(date) + delta, min, max, spinLoop));
194
167
  }
195
168
  getValue(date) {
196
- return padValue(date.getSeconds(), this.format.length);
169
+ const { get, display } = this._config;
170
+ const value = get(date);
171
+ return padValue(display ? display(value, this.format) : value, this.format.length);
197
172
  }
198
173
  }
199
174
  class AmPmPart extends DatePartBase {
@@ -240,11 +215,9 @@ export function createDatePart(type, options) {
240
215
  case DatePartType.Date:
241
216
  return new DateOfMonthPart(options);
242
217
  case DatePartType.Hours:
243
- return new HoursPart(options);
244
218
  case DatePartType.Minutes:
245
- return new MinutesPart(options);
246
219
  case DatePartType.Seconds:
247
- return new SecondsPart(options);
220
+ return new TimePart(type, options);
248
221
  case DatePartType.AmPm:
249
222
  return new AmPmPart(options);
250
223
  case DatePartType.Literal:
@@ -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 date part type has its own class with specific validation and spin behavior;\n * the time part types share one class driven by a bounds/accessor lookup.\n *\n * Classes are private to this module - only types and factory function are exported.\n */\n\nimport { clamp, modulo } from '#internals/utils/math.js';\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\ntype TimePartType =\n | typeof DatePartType.Hours\n | typeof DatePartType.Minutes\n | typeof DatePartType.Seconds;\n\n/** Per-part bounds and `Date` accessors driving the shared {@link TimePart}. */\ninterface TimePartConfig {\n /** Inclusive lower bound for validation and spinning. */\n min: number;\n /** Inclusive upper bound for validation and spinning. */\n max: number;\n get(date: Date): number;\n set(date: Date, value: number): void;\n /** Maps the raw value to its rendered form - 12-hour hours, say. */\n display?(value: number, format: string): number;\n}\n\nconst TIME_PART_CONFIG: Record<TimePartType, TimePartConfig> = {\n hours: {\n min: 0,\n max: 23,\n get: (date) => date.getHours(),\n set: (date, value) => date.setHours(value),\n display: (value, format) =>\n format.includes('h') ? toTwelveHourFormat(value) : value,\n },\n minutes: {\n min: 0,\n max: 59,\n get: (date) => date.getMinutes(),\n set: (date, value) => date.setMinutes(value),\n },\n seconds: {\n min: 0,\n max: 59,\n get: (date) => date.getSeconds(),\n set: (date, value) => date.setSeconds(value),\n },\n};\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 * Wraps a spun value around the inclusive `[min, max]` range, or clamps it to\n * the nearest bound when looping is off.\n */\nfunction wrapOrClamp(\n value: number,\n min: number,\n max: number,\n spinLoop: boolean\n): number {\n return spinLoop\n ? min + modulo(value - min, max - min + 1)\n : clamp(value, min, max);\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 date.setMonth(wrapOrClamp(date.getMonth() + delta, min, max, spinLoop));\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 date.setDate(wrapOrClamp(date.getDate() + delta, min, maxDate, spinLoop));\n }\n\n getValue(date: Date): string {\n return padValue(date.getDate(), this.format.length);\n }\n}\n\n/**\n * Time part (HH/hh hours, mm minutes, ss seconds) - a single implementation\n * over the per-part bounds and accessors in {@link TIME_PART_CONFIG}.\n */\nclass TimePart extends DatePartBase {\n private readonly _config: TimePartConfig;\n\n constructor(type: TimePartType, options: DatePartOptions) {\n super(type, options);\n this._config = TIME_PART_CONFIG[type];\n }\n\n validate(value: number): boolean {\n return value >= this._config.min && value <= this._config.max;\n }\n\n spin(delta: number, options: SpinOptions): void {\n const { date, spinLoop } = options;\n const { min, max, get, set } = this._config;\n\n set(date, wrapOrClamp(get(date) + delta, min, max, spinLoop));\n }\n\n getValue(date: Date): string {\n const { get, display } = this._config;\n const value = get(date);\n\n return padValue(\n display ? display(value, this.format) : value,\n this.format.length\n );\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 case DatePartType.Minutes:\n case DatePartType.Seconds:\n return new TimePart(type, 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,37 +1,51 @@
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';
4
- import type { DatePartDeltas } from './date-part.js';
2
+ import type { FormValue } from '#internals/mixins/forms/form-value.js';
3
+ import { type MaskSelection } from '#internals/mixins/mask-behavior.js';
4
+ import type { ThemingController } from '#theming/theming-controller.js';
5
+ import type { RangeTextSelectMode } from '../types.js';
6
+ import { type DatePartDeltas, type IDatePart } from './date-part.js';
5
7
  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 {
8
+ 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;
9
+ export declare abstract class IgcDateTimeInputBaseComponent<T> extends IgcDateTimeInputBaseComponent_base {
8
10
  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">;
11
+ protected readonly _slots: import("#internals/controllers/slot.js").SlotController<"invalid" | "prefix" | "helper-text" | "[default]" | "suffix" | "value-missing" | "custom-error" | "range-overflow" | "range-underflow">;
10
12
  protected readonly _inputId: string;
11
13
  protected readonly _input?: HTMLInputElement;
12
14
  /**
13
- * Externally supplied label elements forwarded by a composite host (e.g. `igc-date-picker`)
14
- * so that the host's associated labels reach the inner native input. When set, these take
15
- * precedence over the component's own `ElementInternals` labels.
16
- *
17
- * @hidden @internal
15
+ * Receives ARIA semantics projected by a composite host
16
+ * (e.g. `igc-date-picker`) onto the inner native input.
17
+ * See {@link addAriaTarget}.
18
18
  */
19
- _labelElements: ReadonlyArray<Element> | null;
20
- /**
21
- * Resolves the label elements applied to the native input as `aria-labelledby` targets,
22
- * preferring forwarded labels over the component's own `ElementInternals` labels.
23
- *
24
- * @hidden @internal
25
- */
26
- protected get _resolvedLabelElements(): ReadonlyArray<Element> | null;
27
- protected get __validators(): import("../common/validators.js").Validator<import("./date-time-input.js").default>[];
19
+ protected readonly _ariaTarget: import("#internals/controllers/aria-projection.js").AriaTargetController;
20
+ protected get __validators(): import("../../internals/validators.js").Validator<import("./date-time-input.js").default>[];
28
21
  private readonly _i18nController;
29
22
  protected _min: Date | null;
30
23
  protected _max: Date | null;
31
- protected _defaultMask: string;
32
- protected _defaultDisplayFormat: string;
33
24
  protected _displayFormat?: string;
34
25
  protected _inputFormat?: string;
26
+ /** The locale-default display format, resolved by the i18n controller. */
27
+ protected get _defaultDisplayFormat(): string;
28
+ /**
29
+ * Whether the user has an uncommitted edit in progress.
30
+ *
31
+ * While set, the masked text - not the public `value` - is the source of truth:
32
+ * typing updates the mask only, and the parsed result reaches `value` (together
33
+ * with `igcChange`) when the edit is committed on blur. Keeping `value` in sync
34
+ * with the last emitted `igcChange` is what stops a host that two-way binds the
35
+ * property from clobbering a half-typed mask on an unrelated re-render.
36
+ */
37
+ protected _isEditing: boolean;
38
+ /** The value the input was focused with, used to detect a committed change. */
39
+ protected _oldValue: T | null;
40
+ /**
41
+ * The value currently in the editor - the parsed draft while an edit is in
42
+ * progress, otherwise the committed public value.
43
+ *
44
+ * @hidden @internal
45
+ */
46
+ get _uncommittedValue(): T | null;
47
+ /** The spin amount for each date part - the defaults overlaid with `spinDelta`. */
48
+ protected get _datePartDeltas(): DatePartDeltas;
35
49
  protected get _targetDatePart(): unknown;
36
50
  /**
37
51
  * Whether the control will have outlined appearance.
@@ -41,7 +55,7 @@ export declare abstract class IgcDateTimeInputBaseComponent extends IgcDateTimeI
41
55
  */
42
56
  outlined: boolean;
43
57
  /**
44
- * The placeholder attribute of the control.
58
+ * The placeholder text of the control.
45
59
  * @attr
46
60
  */
47
61
  placeholder: string;
@@ -86,7 +100,8 @@ export declare abstract class IgcDateTimeInputBaseComponent extends IgcDateTimeI
86
100
  */
87
101
  spinLoop: boolean;
88
102
  /**
89
- * Gets/Sets the locale used for formatting the display value.
103
+ * The locale used to format the display value and to resolve the
104
+ * component's resource strings. Falls back to the global locale when not set.
90
105
  * @attr locale
91
106
  */
92
107
  set locale(value: string);
@@ -96,6 +111,8 @@ export declare abstract class IgcDateTimeInputBaseComponent extends IgcDateTimeI
96
111
  private _handleResourceChange;
97
112
  protected _handleDragLeave(): void;
98
113
  protected _handleDragEnter(): void;
114
+ protected _handleFocus(): Promise<void>;
115
+ protected _handleBlur(): void;
99
116
  /**
100
117
  * Handles wheel events for spinning date parts.
101
118
  */
@@ -118,6 +135,44 @@ export declare abstract class IgcDateTimeInputBaseComponent extends IgcDateTimeI
118
135
  * When focused, shows the editable mask. When unfocused, defers to the leaf's display formatter.
119
136
  */
120
137
  protected _updateMaskDisplay(): void;
138
+ /** Builds the editable mask shown while the input is focused. */
139
+ protected _buildMaskedValue(): string;
140
+ /**
141
+ * Applies a value produced by an interactive edit (spinning, `Ctrl + ;`).
142
+ * While focused this only moves the draft; outside of an editing session - e.g. a
143
+ * programmatic `stepUp()` - there is no blur coming to commit it.
144
+ */
145
+ protected _setDraftValue(value: T): void;
146
+ /**
147
+ * Whether the committed value is empty, i.e. gaining focus should start the
148
+ * edit from the empty mask rather than the formatted value.
149
+ */
150
+ protected _isValueEmpty(): boolean;
151
+ /**
152
+ * Applies a programmatic value assignment: bails when the value is unchanged,
153
+ * cancels any edit in progress, and re-renders the mask from the new value.
154
+ */
155
+ protected _applyValue(value: T | null): void;
156
+ /**
157
+ * Reads the AM/PM designator as currently typed in the mask for the given
158
+ * format part, so spinning it toggles from what the user sees rather than
159
+ * from the underlying date.
160
+ */
161
+ protected _readAmPmFromMask(part?: IDatePart): string | undefined;
162
+ /** Applies the masked text to the public value without emitting anything. */
163
+ protected _applyDraft(): void;
164
+ /**
165
+ * Commits the current draft to the public value, emitting `igcChange` when the
166
+ * committed value differs from the one the input was focused with.
167
+ */
168
+ protected _commitEdit(): void;
169
+ /**
170
+ * Marks the masked text as an uncommitted edit. The parsed result deliberately
171
+ * does not reach the public `value` here - that happens on commit - so that the
172
+ * property stays in sync with the last emitted `igcChange`. See {@link _isEditing}.
173
+ */
174
+ protected _syncValueFromMask(): void;
175
+ protected _restoreDefaultValue(): void;
121
176
  /**
122
177
  * Checks if all mask positions are filled (no prompt characters remain).
123
178
  */
@@ -126,10 +181,7 @@ export declare abstract class IgcDateTimeInputBaseComponent extends IgcDateTimeI
126
181
  * Applies a mask pattern to the input, parsing the format string into date parts.
127
182
  */
128
183
  protected _applyMask(formatString: string): void;
129
- /**
130
- * Updates the default display format based on current locale.
131
- */
132
- private _updateDefaultDisplayFormat;
184
+ /** Applies the locale-default mask, unless an explicit input format is set. */
133
185
  protected _initializeDefaultMask(): void;
134
186
  /**
135
187
  * Resolves the part names for the container based on the current state.
@@ -145,19 +197,33 @@ export declare abstract class IgcDateTimeInputBaseComponent extends IgcDateTimeI
145
197
  stepUp(datePart?: unknown, delta?: number): void;
146
198
  /** Decrements a date/time portion. */
147
199
  stepDown(datePart?: unknown, delta?: number): void;
200
+ /** Replaces the selected text in the control and re-applies the mask. */
201
+ setRangeText(replacement: string, start?: number, end?: number, selectMode?: RangeTextSelectMode): void;
148
202
  /** Clears the input element of user input. */
149
- abstract clear(): void;
203
+ clear(): void;
150
204
  protected _renderInput(): TemplateResult;
151
205
  protected render(): import("lit-html/directive.js").DirectiveResult<typeof import("lit-html/directives/cache.js").CacheDirective>;
152
- protected abstract get _datePartDeltas(): DatePartDeltas;
153
- protected abstract _buildMaskedValue(): string;
206
+ protected abstract readonly _formValue: FormValue<T | null>;
207
+ /** Provided by `EventEmitterMixin` in the concrete components. */
208
+ abstract emitEvent(name: string, init?: CustomEventInit): boolean;
209
+ /** The committed value of the input. */
210
+ abstract get value(): T | null;
211
+ abstract set value(value: T | null);
212
+ /**
213
+ * Parses the current masked text into the leaf's value type.
214
+ *
215
+ * A `strict` parse mirrors the committed value semantics - an incomplete mask has
216
+ * no value yet and resolves to `null` rather than to a defaults-filled one. A lenient
217
+ * parse completes the missing parts from their defaults, an empty mask excepted - that
218
+ * one holds no value to complete and resolves to `null` as well.
219
+ */
220
+ protected abstract _parseMask(strict: boolean): T | null;
221
+ /** Formats a value into the editable mask. */
222
+ protected abstract _formatValue(value: T | null): string;
154
223
  protected abstract _buildDisplayValue(): string;
155
- protected abstract _syncValueFromMask(): void;
156
224
  protected abstract _calculatePartNavigationPosition(value: string, direction: number): number;
157
- protected abstract _calculateSpunValue(part: unknown, delta: number | undefined, isDecrement: boolean): unknown;
158
- protected abstract _commitSpunValue(value: unknown): void;
225
+ protected abstract _calculateSpunValue(part: unknown, delta: number | undefined, isDecrement: boolean): T;
159
226
  protected abstract _setCurrentDateTime(): void;
160
- protected abstract _handleFocus(): Promise<void>;
161
227
  protected abstract _getDatePartAtCursor(): unknown;
162
228
  protected abstract _getDefaultDatePart(): unknown;
163
229
  abstract hasDateParts(): boolean;