igniteui-webcomponents 6.4.0-alpha.4 → 6.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/CHANGELOG.md +79 -2
  2. package/README.md +65 -56
  3. package/components/button/themes/button/dark/button.indigo.css.js +1 -1
  4. package/components/button/themes/button/dark/button.indigo.css.js.map +1 -1
  5. package/components/button/themes/button/dark/button.material.css.js +1 -1
  6. package/components/button/themes/button/dark/button.material.css.js.map +1 -1
  7. package/components/button/themes/button/light/button.indigo.css.js +1 -1
  8. package/components/button/themes/button/light/button.indigo.css.js.map +1 -1
  9. package/components/button/themes/button/light/button.material.css.js +1 -1
  10. package/components/button/themes/button/light/button.material.css.js.map +1 -1
  11. package/components/button/themes/button/shared/button.bootstrap.css.js +1 -1
  12. package/components/button/themes/button/shared/button.bootstrap.css.js.map +1 -1
  13. package/components/button/themes/button/shared/button.common.css.js +1 -1
  14. package/components/button/themes/button/shared/button.common.css.js.map +1 -1
  15. package/components/button/themes/button/shared/button.fluent.css.js +1 -1
  16. package/components/button/themes/button/shared/button.fluent.css.js.map +1 -1
  17. package/components/button/themes/button/shared/button.indigo.css.js +1 -1
  18. package/components/button/themes/button/shared/button.indigo.css.js.map +1 -1
  19. package/components/button/themes/button/shared/button.material.css.js +1 -1
  20. package/components/button/themes/button/shared/button.material.css.js.map +1 -1
  21. package/components/button-group/themes/dark/button-group.material.css.js +1 -1
  22. package/components/button-group/themes/dark/button-group.material.css.js.map +1 -1
  23. package/components/button-group/themes/light/button-group.material.css.js +1 -1
  24. package/components/button-group/themes/light/button-group.material.css.js.map +1 -1
  25. package/components/button-group/themes/shared/button/button.bootstrap.css.js +1 -1
  26. package/components/button-group/themes/shared/button/button.bootstrap.css.js.map +1 -1
  27. package/components/button-group/themes/shared/button/button.material.css.js +1 -1
  28. package/components/button-group/themes/shared/button/button.material.css.js.map +1 -1
  29. package/components/calendar/calendar.d.ts +5 -3
  30. package/components/calendar/calendar.js +22 -35
  31. package/components/calendar/calendar.js.map +1 -1
  32. package/components/calendar/days-view/days-view.d.ts +3 -3
  33. package/components/calendar/days-view/days-view.js +15 -22
  34. package/components/calendar/days-view/days-view.js.map +1 -1
  35. package/components/calendar/months-view/months-view.d.ts +2 -3
  36. package/components/calendar/months-view/months-view.js +9 -19
  37. package/components/calendar/months-view/months-view.js.map +1 -1
  38. package/components/calendar/themes/dark/calendar.bootstrap.css.js +1 -1
  39. package/components/calendar/themes/dark/calendar.bootstrap.css.js.map +1 -1
  40. package/components/calendar/themes/dark/calendar.fluent.css.js +1 -1
  41. package/components/calendar/themes/dark/calendar.fluent.css.js.map +1 -1
  42. package/components/calendar/themes/dark/calendar.indigo.css.js +1 -1
  43. package/components/calendar/themes/dark/calendar.indigo.css.js.map +1 -1
  44. package/components/calendar/themes/dark/calendar.material.css.js +1 -1
  45. package/components/calendar/themes/dark/calendar.material.css.js.map +1 -1
  46. package/components/calendar/themes/days.js +8 -23
  47. package/components/calendar/themes/days.js.map +1 -1
  48. package/components/calendar/themes/light/calendar.bootstrap.css.js +1 -1
  49. package/components/calendar/themes/light/calendar.bootstrap.css.js.map +1 -1
  50. package/components/calendar/themes/light/calendar.fluent.css.js +1 -1
  51. package/components/calendar/themes/light/calendar.fluent.css.js.map +1 -1
  52. package/components/calendar/themes/light/calendar.indigo.css.js +1 -1
  53. package/components/calendar/themes/light/calendar.indigo.css.js.map +1 -1
  54. package/components/calendar/themes/light/calendar.material.css.js +1 -1
  55. package/components/calendar/themes/light/calendar.material.css.js.map +1 -1
  56. package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js +1 -1
  57. package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js.map +1 -1
  58. package/components/calendar/themes/shared/bootstrap/year-month-view.bootstrap.css.js +1 -1
  59. package/components/calendar/themes/shared/bootstrap/year-month-view.bootstrap.css.js.map +1 -1
  60. package/components/calendar/themes/shared/fluent/days-view.fluent.css.js +1 -1
  61. package/components/calendar/themes/shared/fluent/days-view.fluent.css.js.map +1 -1
  62. package/components/calendar/themes/shared/indigo/days-view.indigo.css.js +1 -1
  63. package/components/calendar/themes/shared/indigo/days-view.indigo.css.js.map +1 -1
  64. package/components/calendar/themes/shared/material/days-view.material.css.js +1 -1
  65. package/components/calendar/themes/shared/material/days-view.material.css.js.map +1 -1
  66. package/components/calendar/themes/year-month.js +8 -23
  67. package/components/calendar/themes/year-month.js.map +1 -1
  68. package/components/carousel/carousel.d.ts +2 -1
  69. package/components/carousel/carousel.js.map +1 -1
  70. package/components/checkbox/themes/light/checkbox/checkbox.material.css.js +1 -1
  71. package/components/checkbox/themes/light/checkbox/checkbox.material.css.js.map +1 -1
  72. package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js +1 -1
  73. package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js.map +1 -1
  74. package/components/checkbox/themes/shared/switch/switch.common.css.js +1 -1
  75. package/components/checkbox/themes/shared/switch/switch.common.css.js.map +1 -1
  76. package/components/checkbox/themes/shared/switch/switch.fluent.css.js +1 -1
  77. package/components/checkbox/themes/shared/switch/switch.fluent.css.js.map +1 -1
  78. package/components/checkbox/themes/shared/switch/switch.indigo.css.js +1 -1
  79. package/components/checkbox/themes/shared/switch/switch.indigo.css.js.map +1 -1
  80. package/components/checkbox/themes/shared/switch/switch.material.css.js +1 -1
  81. package/components/checkbox/themes/shared/switch/switch.material.css.js.map +1 -1
  82. package/components/chip/chip.d.ts +2 -1
  83. package/components/chip/chip.js.map +1 -1
  84. package/components/combo/combo.d.ts +3 -2
  85. package/components/combo/combo.js +7 -0
  86. package/components/combo/combo.js.map +1 -1
  87. package/components/combo/controllers/selection.js.map +1 -1
  88. package/components/combo/validators.js +2 -2
  89. package/components/combo/validators.js.map +1 -1
  90. package/components/common/controllers/async-consumer.js.map +1 -1
  91. package/components/common/controllers/focus-ring.js +1 -5
  92. package/components/common/controllers/focus-ring.js.map +1 -1
  93. package/components/common/controllers/root-click.js +46 -21
  94. package/components/common/controllers/root-click.js.map +1 -1
  95. package/components/common/i18n/EN/calendar.resources.js +4 -1
  96. package/components/common/i18n/EN/calendar.resources.js.map +1 -1
  97. package/components/common/i18n/EN/date-range-picker.resources.js.map +1 -1
  98. package/components/common/i18n/i18n-controller.js +6 -9
  99. package/components/common/i18n/i18n-controller.js.map +1 -1
  100. package/components/common/i18n/utils.d.ts +0 -12
  101. package/components/common/i18n/utils.js +0 -12
  102. package/components/common/i18n/utils.js.map +1 -1
  103. package/components/common/mixins/forms/associated.js +3 -23
  104. package/components/common/mixins/forms/associated.js.map +1 -1
  105. package/components/common/util.d.ts +5 -0
  106. package/components/common/util.js +5 -0
  107. package/components/common/util.js.map +1 -1
  108. package/components/common/validators.d.ts +2 -4
  109. package/components/common/validators.js +13 -19
  110. package/components/common/validators.js.map +1 -1
  111. package/components/date-picker/date-picker.d.ts +7 -3
  112. package/components/date-picker/date-picker.js +2 -2
  113. package/components/date-picker/date-picker.js.map +1 -1
  114. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js +1 -1
  115. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js.map +1 -1
  116. package/components/date-picker/themes/dark/date-picker.fluent.css.js +1 -1
  117. package/components/date-picker/themes/dark/date-picker.fluent.css.js.map +1 -1
  118. package/components/date-picker/themes/dark/date-picker.indigo.css.js +1 -1
  119. package/components/date-picker/themes/dark/date-picker.indigo.css.js.map +1 -1
  120. package/components/date-picker/themes/dark/date-picker.material.css.js +1 -1
  121. package/components/date-picker/themes/dark/date-picker.material.css.js.map +1 -1
  122. package/components/date-picker/themes/light/date-picker.bootstrap.css.js +1 -1
  123. package/components/date-picker/themes/light/date-picker.bootstrap.css.js.map +1 -1
  124. package/components/date-picker/themes/light/date-picker.fluent.css.js +1 -1
  125. package/components/date-picker/themes/light/date-picker.fluent.css.js.map +1 -1
  126. package/components/date-picker/themes/light/date-picker.indigo.css.js +1 -1
  127. package/components/date-picker/themes/light/date-picker.indigo.css.js.map +1 -1
  128. package/components/date-picker/themes/light/date-picker.material.css.js +1 -1
  129. package/components/date-picker/themes/light/date-picker.material.css.js.map +1 -1
  130. package/components/date-picker/validators.js +2 -3
  131. package/components/date-picker/validators.js.map +1 -1
  132. package/components/date-range-picker/date-range-picker.d.ts +7 -2
  133. package/components/date-range-picker/date-range-picker.js +12 -9
  134. package/components/date-range-picker/date-range-picker.js.map +1 -1
  135. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js +1 -1
  136. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js.map +1 -1
  137. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js +1 -1
  138. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js.map +1 -1
  139. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js +1 -1
  140. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js.map +1 -1
  141. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js +1 -1
  142. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js.map +1 -1
  143. package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.js +1 -1
  144. package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.js.map +1 -1
  145. package/components/date-range-picker/themes/light/date-range-picker.fluent.css.js +1 -1
  146. package/components/date-range-picker/themes/light/date-range-picker.fluent.css.js.map +1 -1
  147. package/components/date-range-picker/themes/light/date-range-picker.indigo.css.js +1 -1
  148. package/components/date-range-picker/themes/light/date-range-picker.indigo.css.js.map +1 -1
  149. package/components/date-range-picker/themes/light/date-range-picker.material.css.js +1 -1
  150. package/components/date-range-picker/themes/light/date-range-picker.material.css.js.map +1 -1
  151. package/components/date-range-picker/validators.js +5 -8
  152. package/components/date-range-picker/validators.js.map +1 -1
  153. package/components/date-time-input/date-time-input.d.ts +6 -2
  154. package/components/date-time-input/date-time-input.js +22 -15
  155. package/components/date-time-input/date-time-input.js.map +1 -1
  156. package/components/date-time-input/date-util.d.ts +11 -9
  157. package/components/date-time-input/date-util.js +23 -219
  158. package/components/date-time-input/date-util.js.map +1 -1
  159. package/components/dialog/dialog.d.ts +2 -0
  160. package/components/dialog/dialog.js +18 -9
  161. package/components/dialog/dialog.js.map +1 -1
  162. package/components/dialog/themes/dark/dialog.fluent.css.js +1 -1
  163. package/components/dialog/themes/dark/dialog.fluent.css.js.map +1 -1
  164. package/components/dialog/themes/light/dialog.fluent.css.js +1 -1
  165. package/components/dialog/themes/light/dialog.fluent.css.js.map +1 -1
  166. package/components/dialog/themes/shared/dialog.bootstrap.css.js +1 -1
  167. package/components/dialog/themes/shared/dialog.bootstrap.css.js.map +1 -1
  168. package/components/dialog/themes/shared/dialog.indigo.css.js +1 -1
  169. package/components/dialog/themes/shared/dialog.indigo.css.js.map +1 -1
  170. package/components/expansion-panel/themes/light/expansion-panel.bootstrap.css.js +1 -1
  171. package/components/expansion-panel/themes/light/expansion-panel.bootstrap.css.js.map +1 -1
  172. package/components/file-input/file-input.d.ts +13 -0
  173. package/components/file-input/file-input.js +27 -2
  174. package/components/file-input/file-input.js.map +1 -1
  175. package/components/input/themes/dark/input.indigo.css.js +1 -1
  176. package/components/input/themes/dark/input.indigo.css.js.map +1 -1
  177. package/components/input/themes/light/input.indigo.css.js +1 -1
  178. package/components/input/themes/light/input.indigo.css.js.map +1 -1
  179. package/components/input/themes/light/input.shared.css.js +1 -1
  180. package/components/input/themes/light/input.shared.css.js.map +1 -1
  181. package/components/input/themes/shared/input.bootstrap.css.js +1 -1
  182. package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
  183. package/components/input/themes/shared/input.common.css.js +1 -1
  184. package/components/input/themes/shared/input.common.css.js.map +1 -1
  185. package/components/input/themes/shared/input.fluent.css.js +1 -1
  186. package/components/input/themes/shared/input.fluent.css.js.map +1 -1
  187. package/components/input/themes/shared/input.indigo.css.js +1 -1
  188. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  189. package/components/input/themes/shared/input.material.css.js +1 -1
  190. package/components/input/themes/shared/input.material.css.js.map +1 -1
  191. package/components/input/validators.js +3 -3
  192. package/components/input/validators.js.map +1 -1
  193. package/components/list/themes/dark/container/list.bootstrap.css.js +1 -1
  194. package/components/list/themes/dark/container/list.bootstrap.css.js.map +1 -1
  195. package/components/list/themes/light/container/list.fluent.css.js +1 -1
  196. package/components/list/themes/light/container/list.fluent.css.js.map +1 -1
  197. package/components/list/themes/shared/item/list-item.common.css.js +1 -1
  198. package/components/list/themes/shared/item/list-item.common.css.js.map +1 -1
  199. package/components/list/themes/shared/item/list-item.indigo.css.js +1 -1
  200. package/components/list/themes/shared/item/list-item.indigo.css.js.map +1 -1
  201. package/components/mask-input/mask-input-base.js +3 -2
  202. package/components/mask-input/mask-input-base.js.map +1 -1
  203. package/components/mask-input/mask-parser.d.ts +30 -7
  204. package/components/mask-input/mask-parser.js +70 -42
  205. package/components/mask-input/mask-parser.js.map +1 -1
  206. package/components/mask-input/validators.js +2 -2
  207. package/components/mask-input/validators.js.map +1 -1
  208. package/components/nav-drawer/themes/dark/container/nav-drawer.fluent.css.js +1 -1
  209. package/components/nav-drawer/themes/dark/container/nav-drawer.fluent.css.js.map +1 -1
  210. package/components/nav-drawer/themes/light/container/nav-drawer.fluent.css.js +1 -1
  211. package/components/nav-drawer/themes/light/container/nav-drawer.fluent.css.js.map +1 -1
  212. package/components/nav-drawer/themes/light/container/nav-drawer.material.css.js +1 -1
  213. package/components/nav-drawer/themes/light/container/nav-drawer.material.css.js.map +1 -1
  214. package/components/navbar/themes/shared/navbar.common.css.js +1 -1
  215. package/components/navbar/themes/shared/navbar.common.css.js.map +1 -1
  216. package/components/radio/themes/light/radio.material.css.js +1 -1
  217. package/components/radio/themes/light/radio.material.css.js.map +1 -1
  218. package/components/radio/themes/shared/radio.bootstrap.css.js +1 -1
  219. package/components/radio/themes/shared/radio.bootstrap.css.js.map +1 -1
  220. package/components/radio/themes/shared/radio.common.css.js +1 -1
  221. package/components/radio/themes/shared/radio.common.css.js.map +1 -1
  222. package/components/radio/themes/shared/radio.fluent.css.js +1 -1
  223. package/components/radio/themes/shared/radio.fluent.css.js.map +1 -1
  224. package/components/radio/themes/shared/radio.indigo.css.js +1 -1
  225. package/components/radio/themes/shared/radio.indigo.css.js.map +1 -1
  226. package/components/radio/themes/shared/radio.material.css.js +1 -1
  227. package/components/radio/themes/shared/radio.material.css.js.map +1 -1
  228. package/components/radio/validators.js +2 -2
  229. package/components/radio/validators.js.map +1 -1
  230. package/components/rating/themes/dark/rating.indigo.css.js +1 -1
  231. package/components/rating/themes/dark/rating.indigo.css.js.map +1 -1
  232. package/components/rating/themes/light/rating.indigo.css.js +1 -1
  233. package/components/rating/themes/light/rating.indigo.css.js.map +1 -1
  234. package/components/ripple/ripple.d.ts +3 -3
  235. package/components/ripple/ripple.js +34 -31
  236. package/components/ripple/ripple.js.map +1 -1
  237. package/components/stepper/step.js +2 -2
  238. package/components/stepper/step.js.map +1 -1
  239. package/components/stepper/themes/step/dark/step.bootstrap.css.js +1 -1
  240. package/components/stepper/themes/step/dark/step.bootstrap.css.js.map +1 -1
  241. package/components/stepper/themes/step/dark/step.fluent.css.js +1 -1
  242. package/components/stepper/themes/step/dark/step.fluent.css.js.map +1 -1
  243. package/components/stepper/themes/step/dark/step.indigo.css.js +1 -1
  244. package/components/stepper/themes/step/dark/step.indigo.css.js.map +1 -1
  245. package/components/stepper/themes/step/dark/step.material.css.js +1 -1
  246. package/components/stepper/themes/step/dark/step.material.css.js.map +1 -1
  247. package/components/stepper/themes/step/light/step.bootstrap.css.js +1 -1
  248. package/components/stepper/themes/step/light/step.bootstrap.css.js.map +1 -1
  249. package/components/stepper/themes/step/light/step.fluent.css.js +1 -1
  250. package/components/stepper/themes/step/light/step.fluent.css.js.map +1 -1
  251. package/components/stepper/themes/step/light/step.indigo.css.js +1 -1
  252. package/components/stepper/themes/step/light/step.indigo.css.js.map +1 -1
  253. package/components/stepper/themes/step/light/step.material.css.js +1 -1
  254. package/components/stepper/themes/step/light/step.material.css.js.map +1 -1
  255. package/components/stepper/themes/step/light/step.shared.css.js +1 -1
  256. package/components/stepper/themes/step/light/step.shared.css.js.map +1 -1
  257. package/components/stepper/themes/step/shared/step.common.css.js +1 -1
  258. package/components/stepper/themes/step/shared/step.common.css.js.map +1 -1
  259. package/components/stepper/themes/step/shared/step.indigo.css.js +1 -1
  260. package/components/stepper/themes/step/shared/step.indigo.css.js.map +1 -1
  261. package/components/tabs/tab-dom.js +8 -9
  262. package/components/tabs/tab-dom.js.map +1 -1
  263. package/components/tabs/themes/dark/tab.bootstrap.css.js +1 -1
  264. package/components/tabs/themes/dark/tab.bootstrap.css.js.map +1 -1
  265. package/components/tabs/themes/dark/tab.fluent.css.js +1 -1
  266. package/components/tabs/themes/dark/tab.fluent.css.js.map +1 -1
  267. package/components/tabs/themes/dark/tab.indigo.css.js +1 -1
  268. package/components/tabs/themes/dark/tab.indigo.css.js.map +1 -1
  269. package/components/tabs/themes/dark/tab.material.css.js +1 -1
  270. package/components/tabs/themes/dark/tab.material.css.js.map +1 -1
  271. package/components/tabs/themes/dark/tab.shared.css.js +1 -1
  272. package/components/tabs/themes/dark/tab.shared.css.js.map +1 -1
  273. package/components/tabs/themes/light/tab.bootstrap.css.js +1 -1
  274. package/components/tabs/themes/light/tab.bootstrap.css.js.map +1 -1
  275. package/components/tabs/themes/light/tab.fluent.css.js +1 -1
  276. package/components/tabs/themes/light/tab.fluent.css.js.map +1 -1
  277. package/components/tabs/themes/light/tab.indigo.css.js +1 -1
  278. package/components/tabs/themes/light/tab.indigo.css.js.map +1 -1
  279. package/components/tabs/themes/light/tab.material.css.js +1 -1
  280. package/components/tabs/themes/light/tab.material.css.js.map +1 -1
  281. package/components/tabs/themes/light/tab.shared.css.js +1 -1
  282. package/components/tabs/themes/light/tab.shared.css.js.map +1 -1
  283. package/components/tabs/themes/shared/tab/tab.bootstrap.css.js +1 -1
  284. package/components/tabs/themes/shared/tab/tab.bootstrap.css.js.map +1 -1
  285. package/components/tabs/themes/shared/tab/tab.common.css.js +1 -1
  286. package/components/tabs/themes/shared/tab/tab.common.css.js.map +1 -1
  287. package/components/tabs/themes/shared/tab/tab.fluent.css.js +1 -1
  288. package/components/tabs/themes/shared/tab/tab.fluent.css.js.map +1 -1
  289. package/components/tabs/themes/shared/tab/tab.indigo.css.js +1 -1
  290. package/components/tabs/themes/shared/tab/tab.indigo.css.js.map +1 -1
  291. package/components/tabs/themes/shared/tab/tab.material.css.js +1 -1
  292. package/components/tabs/themes/shared/tab/tab.material.css.js.map +1 -1
  293. package/components/tabs/themes/shared/tabs/tabs.bootstrap.css.js +1 -1
  294. package/components/tabs/themes/shared/tabs/tabs.bootstrap.css.js.map +1 -1
  295. package/components/tabs/themes/shared/tabs/tabs.common.css.js +1 -1
  296. package/components/tabs/themes/shared/tabs/tabs.common.css.js.map +1 -1
  297. package/components/tabs/themes/shared/tabs/tabs.indigo.css.js +1 -1
  298. package/components/tabs/themes/shared/tabs/tabs.indigo.css.js.map +1 -1
  299. package/components/tabs/themes/shared/tabs/tabs.material.css.js +1 -1
  300. package/components/tabs/themes/shared/tabs/tabs.material.css.js.map +1 -1
  301. package/components/tabs/themes/tabs.base.css.js +1 -1
  302. package/components/tabs/themes/tabs.base.css.js.map +1 -1
  303. package/components/textarea/themes/dark/textarea.indigo.css.js +1 -1
  304. package/components/textarea/themes/dark/textarea.indigo.css.js.map +1 -1
  305. package/components/textarea/themes/light/textarea.indigo.css.js +1 -1
  306. package/components/textarea/themes/light/textarea.indigo.css.js.map +1 -1
  307. package/components/textarea/themes/light/textarea.shared.css.js +1 -1
  308. package/components/textarea/themes/light/textarea.shared.css.js.map +1 -1
  309. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  310. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  311. package/components/textarea/themes/shared/textarea.common.css.js +1 -1
  312. package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
  313. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  314. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  315. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  316. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  317. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  318. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  319. package/components/tree/themes/dark/container.bootstrap.css.js +1 -1
  320. package/components/tree/themes/dark/container.bootstrap.css.js.map +1 -1
  321. package/components/tree/themes/light/container.bootstrap.css.js +1 -1
  322. package/components/tree/themes/light/container.bootstrap.css.js.map +1 -1
  323. package/components/tree/tree-item.js +4 -0
  324. package/components/tree/tree-item.js.map +1 -1
  325. package/components/tree/tree.d.ts +14 -0
  326. package/components/tree/tree.js +23 -0
  327. package/components/tree/tree.js.map +1 -1
  328. package/components/validation-container/validation-container.d.ts +0 -1
  329. package/components/validation-container/validation-container.js +6 -9
  330. package/components/validation-container/validation-container.js.map +1 -1
  331. package/custom-elements.json +706 -1056
  332. package/igniteui-webcomponents.html-data.json +1 -1
  333. package/index.d.ts +2 -1
  334. package/index.js +2 -1
  335. package/index.js.map +1 -1
  336. package/package.json +9 -4
  337. package/web-types.json +1 -1
  338. package/components/common/localization/intl-formatters.d.ts +0 -17
  339. package/components/common/localization/intl-formatters.js +0 -46
  340. package/components/common/localization/intl-formatters.js.map +0 -1
  341. package/components/validation-container/themes/dark/validator.bootstrap.css.d.ts +0 -1
  342. package/components/validation-container/themes/dark/validator.bootstrap.css.js +0 -3
  343. package/components/validation-container/themes/dark/validator.bootstrap.css.js.map +0 -1
  344. package/components/validation-container/themes/dark/validator.fluent.css.d.ts +0 -1
  345. package/components/validation-container/themes/dark/validator.fluent.css.js +0 -3
  346. package/components/validation-container/themes/dark/validator.fluent.css.js.map +0 -1
  347. package/components/validation-container/themes/dark/validator.indigo.css.d.ts +0 -1
  348. package/components/validation-container/themes/dark/validator.indigo.css.js +0 -3
  349. package/components/validation-container/themes/dark/validator.indigo.css.js.map +0 -1
  350. package/components/validation-container/themes/dark/validator.material.css.d.ts +0 -1
  351. package/components/validation-container/themes/dark/validator.material.css.js +0 -3
  352. package/components/validation-container/themes/dark/validator.material.css.js.map +0 -1
  353. package/components/validation-container/themes/light/validator.bootstrap.css.d.ts +0 -1
  354. package/components/validation-container/themes/light/validator.bootstrap.css.js +0 -3
  355. package/components/validation-container/themes/light/validator.bootstrap.css.js.map +0 -1
  356. package/components/validation-container/themes/light/validator.fluent.css.d.ts +0 -1
  357. package/components/validation-container/themes/light/validator.fluent.css.js +0 -3
  358. package/components/validation-container/themes/light/validator.fluent.css.js.map +0 -1
  359. package/components/validation-container/themes/light/validator.indigo.css.d.ts +0 -1
  360. package/components/validation-container/themes/light/validator.indigo.css.js +0 -3
  361. package/components/validation-container/themes/light/validator.indigo.css.js.map +0 -1
  362. package/components/validation-container/themes/light/validator.material.css.d.ts +0 -1
  363. package/components/validation-container/themes/light/validator.material.css.js +0 -3
  364. package/components/validation-container/themes/light/validator.material.css.js.map +0 -1
  365. package/components/validation-container/themes/light/validator.shared.css.d.ts +0 -1
  366. package/components/validation-container/themes/light/validator.shared.css.js +0 -3
  367. package/components/validation-container/themes/light/validator.shared.css.js.map +0 -1
  368. package/components/validation-container/themes/themes.d.ts +0 -2
  369. package/components/validation-container/themes/themes.js +0 -46
  370. package/components/validation-container/themes/themes.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"date-time-input.js","sourceRoot":"","sources":["../../../src/components/date-time-input/date-time-input.ts"],"names":[],"mappings":"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","sourcesContent":["import { html } from 'lit';\nimport { eventOptions, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\n\nimport { convertToDate } from '../calendar/helpers.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n ctrlKey,\n} from '../common/controllers/key-bindings.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { addI18nController } from '../common/i18n/i18n-controller.js';\nimport type { AbstractConstructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormValueDateTimeTransformers } from '../common/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '../common/mixins/forms/form-value.js';\nimport { partMap } from '../common/part-map.js';\nimport type { IgcInputComponentEventMap } from '../input/input-base.js';\nimport {\n IgcMaskInputBaseComponent,\n type MaskSelection,\n} from '../mask-input/mask-input-base.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport {\n DatePart,\n type DatePartDeltas,\n type DatePartInfo,\n DateParts,\n DateTimeUtil,\n} from './date-util.js';\nimport { dateTimeInputValidators } from './validators.js';\n\nexport interface IgcDateTimeInputComponentEventMap\n extends Omit<IgcInputComponentEventMap, 'igcChange'> {\n igcChange: CustomEvent<Date | null>;\n}\n\n/**\n * A date time input is an input field that lets you set and edit the date and time in a chosen input element\n * using customizable display and input formats.\n *\n * @element igc-date-time-input\n *\n * @slot prefix - Renders content before the input.\n * @slot suffix - Renders content after input.\n * @slot helper-text - Renders content below the input.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot range-overflow - Renders content when the max validation fails.\n * @slot range-underflow - Renders content when the min validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n *\n * @fires igcInput - Emitted when the control input receives user input.\n * @fires igcChange - Emitted when the control's checked state changes.\n *\n * @csspart container - The main wrapper that holds all main input elements.\n * @csspart input - The native input element.\n * @csspart label - The native label element.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart helper-text - The helper text wrapper.\n */\nexport default class IgcDateTimeInputComponent extends EventEmitterMixin<\n IgcDateTimeInputComponentEventMap,\n AbstractConstructor<IgcMaskInputBaseComponent>\n>(IgcMaskInputBaseComponent) {\n public static readonly tagName = 'igc-date-time-input';\n\n /* blazorSuppress */\n public static register() {\n registerComponent(\n IgcDateTimeInputComponent,\n IgcValidationContainerComponent\n );\n }\n\n protected override get __validators() {\n return dateTimeInputValidators;\n }\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: null,\n transformers: FormValueDateTimeTransformers,\n });\n\n private readonly _i18nController = addI18nController<object>(this, {\n defaultEN: {},\n });\n\n protected _defaultMask!: string;\n private _oldValue: Date | null = null;\n private _min: Date | null = null;\n private _max: Date | null = null;\n\n private _inputDateParts!: DatePartInfo[];\n private _inputFormat!: string;\n private _datePartDeltas: DatePartDeltas = {\n date: 1,\n month: 1,\n year: 1,\n hours: 1,\n minutes: 1,\n seconds: 1,\n };\n\n /**\n * The date format to apply on the input.\n * @attr input-format\n */\n @property({ attribute: 'input-format' })\n public get inputFormat(): string {\n return this._inputFormat || this._defaultMask;\n }\n\n public set inputFormat(val: string) {\n if (val) {\n this.setMask(val);\n this._inputFormat = val;\n if (this.value) {\n this.updateMask();\n }\n }\n }\n\n public get value(): Date | null {\n return this._formValue.value;\n }\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The value of the input.\n * @attr\n */\n @property({ converter: convertToDate })\n public set value(value: Date | string | null | undefined) {\n this._formValue.setValueAndFormState(value as Date | null);\n this.updateMask();\n }\n\n /**\n * The minimum value required for the input to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set min(value: Date | string | null | undefined) {\n this._min = convertToDate(value);\n this._validate();\n }\n\n public get min(): Date | null {\n return this._min;\n }\n\n /**\n * The maximum value required for the input to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set max(value: Date | string | null | undefined) {\n this._max = convertToDate(value);\n this._validate();\n }\n\n public get max(): Date | null {\n return this._max;\n }\n\n /**\n * Format to display the value in when not editing.\n * Defaults to the input format if not set.\n * @attr display-format\n */\n @property({ attribute: 'display-format' })\n public displayFormat!: string;\n\n /**\n * Delta values used to increment or decrement each date part on step actions.\n * All values default to `1`.\n */\n @property({ attribute: false })\n public spinDelta!: DatePartDeltas;\n\n /**\n * Sets whether to loop over the currently spun segment.\n * @attr spin-loop\n */\n @property({ type: Boolean, attribute: 'spin-loop' })\n public spinLoop = true;\n\n /**\n * Gets/Sets the locale used for formatting the display value.\n * @attr locale\n */\n @property()\n public set locale(value: string) {\n this._i18nController.locale = value;\n }\n\n public get locale() {\n return this._i18nController.locale;\n }\n\n @watch('locale', { waitUntilFirstUpdate: true })\n protected setDefaultMask(): void {\n if (!this._inputFormat) {\n this.updateDefaultMask();\n this.setMask(this._defaultMask);\n }\n\n if (this.value) {\n this.updateMask();\n }\n }\n\n @watch('displayFormat', { waitUntilFirstUpdate: true })\n protected setDisplayFormat(): void {\n if (this.value) {\n this.updateMask();\n }\n }\n\n protected get hasDateParts(): boolean {\n const parts =\n this._inputDateParts ||\n DateTimeUtil.parseDateTimeFormat(this.inputFormat);\n\n return parts.some(\n (p) =>\n p.type === DateParts.Date ||\n p.type === DateParts.Month ||\n p.type === DateParts.Year\n );\n }\n\n protected get hasTimeParts(): boolean {\n const parts =\n this._inputDateParts ||\n DateTimeUtil.parseDateTimeFormat(this.inputFormat);\n return parts.some(\n (p) =>\n p.type === DateParts.Hours ||\n p.type === DateParts.Minutes ||\n p.type === DateParts.Seconds\n );\n }\n\n private get targetDatePart(): DatePart | undefined {\n let result: DatePart | undefined;\n\n if (this._focused) {\n const partType = this._inputDateParts.find(\n (p) =>\n p.start <= this._inputSelection.start &&\n this._inputSelection.start <= p.end &&\n p.type !== DateParts.Literal\n )?.type as string as DatePart;\n\n if (partType) {\n result = partType;\n }\n } else if (this._inputDateParts.some((p) => p.type === DateParts.Date)) {\n result = DatePart.Date;\n } else if (this._inputDateParts.some((p) => p.type === DateParts.Hours)) {\n result = DatePart.Hours;\n } else {\n result = this._inputDateParts[0].type as string as DatePart;\n }\n\n return result;\n }\n\n private get datePartDeltas(): DatePartDeltas {\n return Object.assign({}, this._datePartDeltas, this.spinDelta);\n }\n\n constructor() {\n super();\n\n addKeybindings(this, {\n skip: () => this.readOnly,\n bindingDefaults: { triggers: ['keydownRepeat'] },\n })\n .set([ctrlKey, ';'], this.setToday)\n .set(arrowUp, this.keyboardSpin.bind(this, 'up'))\n .set(arrowDown, this.keyboardSpin.bind(this, 'down'))\n .set([ctrlKey, arrowLeft], this.navigateParts.bind(this, 0))\n .set([ctrlKey, arrowRight], this.navigateParts.bind(this, 1));\n }\n\n public override connectedCallback() {\n super.connectedCallback();\n this.updateDefaultMask();\n this.setMask(this.inputFormat);\n if (this.value) {\n this.updateMask();\n }\n }\n\n /** Increments a date/time portion. */\n public stepUp(datePart?: DatePart, delta?: number): void {\n const targetPart = datePart || this.targetDatePart;\n\n if (!targetPart) {\n return;\n }\n\n const { start, end } = this._inputSelection;\n const newValue = this.trySpinValue(targetPart, delta);\n this.value = newValue;\n this.updateComplete.then(() => this.input.setSelectionRange(start, end));\n }\n\n /** Decrements a date/time portion. */\n public stepDown(datePart?: DatePart, delta?: number): void {\n const targetPart = datePart || this.targetDatePart;\n\n if (!targetPart) {\n return;\n }\n\n const { start, end } = this._inputSelection;\n const newValue = this.trySpinValue(targetPart, delta, true);\n this.value = newValue;\n this.updateComplete.then(() => this.input.setSelectionRange(start, end));\n }\n\n /** Clears the input element of user input. */\n public clear(): void {\n this._maskedValue = '';\n this.value = null;\n }\n\n protected setToday() {\n this.value = new Date();\n this._fireInputEvent();\n }\n\n protected updateMask() {\n if (this._focused) {\n this._maskedValue = this.getMaskedValue();\n } else {\n if (!DateTimeUtil.isValidDate(this.value)) {\n this._maskedValue = '';\n return;\n }\n\n const format = this.displayFormat || this.inputFormat;\n\n if (this.displayFormat) {\n this._maskedValue = DateTimeUtil.formatDate(\n this.value,\n this.locale,\n format,\n true\n );\n } else if (this.inputFormat) {\n this._maskedValue = DateTimeUtil.formatDate(\n this.value,\n this.locale,\n format\n );\n } else {\n this._maskedValue = this.value.toLocaleString();\n }\n }\n }\n\n private _fireInputEvent(): void {\n this._setTouchedState();\n this.emitEvent('igcInput', { detail: this.value?.toString() });\n }\n\n protected handleDragLeave() {\n if (!this._focused) {\n this.updateMask();\n }\n }\n\n protected handleDragEnter() {\n if (!this._focused) {\n this._maskedValue = this.getMaskedValue();\n }\n }\n\n protected async _updateInput(\n text: string,\n { start, end }: MaskSelection\n ): Promise<void> {\n const result = this._parser.replace(this._maskedValue, text, start, end);\n\n this._maskedValue = result.value;\n\n this.updateValue();\n this.requestUpdate();\n\n if (start !== this.inputFormat.length) {\n this._fireInputEvent();\n }\n\n await this.updateComplete;\n this.input.setSelectionRange(result.end, result.end);\n }\n\n private trySpinValue(\n datePart: DatePart,\n delta?: number,\n negative = false\n ): Date {\n // default to 1 if a delta is set to 0 or any other falsy value\n const _delta =\n delta || this.datePartDeltas[datePart as keyof DatePartDeltas] || 1;\n\n const spinValue = negative ? -Math.abs(_delta) : Math.abs(_delta);\n return this.spinValue(datePart, spinValue);\n }\n\n private spinValue(datePart: DatePart, delta: number): Date {\n if (!(this.value && DateTimeUtil.isValidDate(this.value))) {\n return new Date();\n }\n\n const newDate = new Date(this.value.getTime());\n let formatPart: DatePartInfo | undefined;\n let amPmFromMask: string;\n\n switch (datePart) {\n case DatePart.Date:\n DateTimeUtil.spinDate(delta, newDate, this.spinLoop);\n break;\n case DatePart.Month:\n DateTimeUtil.spinMonth(delta, newDate, this.spinLoop);\n break;\n case DatePart.Year:\n DateTimeUtil.spinYear(delta, newDate);\n break;\n case DatePart.Hours:\n DateTimeUtil.spinHours(delta, newDate, this.spinLoop);\n break;\n case DatePart.Minutes:\n DateTimeUtil.spinMinutes(delta, newDate, this.spinLoop);\n break;\n case DatePart.Seconds:\n DateTimeUtil.spinSeconds(delta, newDate, this.spinLoop);\n break;\n case DatePart.AmPm:\n formatPart = this._inputDateParts.find(\n (dp) => dp.type === DateParts.AmPm\n );\n if (formatPart !== undefined) {\n amPmFromMask = this._maskedValue.substring(\n formatPart!.start,\n formatPart!.end\n );\n return DateTimeUtil.spinAmPm(newDate, this.value, amPmFromMask);\n }\n break;\n }\n\n return newDate;\n }\n\n @eventOptions({ passive: false })\n private async onWheel(event: WheelEvent) {\n if (!this._focused || this.readOnly) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const { start, end } = this._inputSelection;\n event.deltaY > 0 ? this.stepDown() : this.stepUp();\n this._fireInputEvent();\n\n await this.updateComplete;\n this.setSelectionRange(start, end);\n }\n\n private updateDefaultMask(): void {\n this._defaultMask = DateTimeUtil.getDefaultMask(this.locale);\n }\n\n private setMask(string: string): void {\n const oldFormat = this._inputDateParts?.map((p) => p.format).join('');\n this._inputDateParts = DateTimeUtil.parseDateTimeFormat(string);\n const value = this._inputDateParts.map((p) => p.format).join('');\n\n this._defaultMask = value;\n\n const newMask = (value || DateTimeUtil.DEFAULT_INPUT_FORMAT).replace(\n new RegExp(/(?=[^t])[\\w]/, 'g'),\n '0'\n );\n\n this.mask = newMask.includes('tt') ? newMask.replace(/tt/g, 'LL') : newMask;\n\n if (!this.placeholder || oldFormat === this.placeholder) {\n this.placeholder = value;\n }\n }\n\n private parseDate(val: string) {\n return val\n ? DateTimeUtil.parseValueFromMask(val, this._inputDateParts, this.prompt)\n : null;\n }\n\n private getMaskedValue(): string {\n let mask = this._parser.emptyMask;\n\n if (DateTimeUtil.isValidDate(this.value)) {\n for (const part of this._inputDateParts) {\n if (part.type === DateParts.Literal) {\n continue;\n }\n\n const targetValue = DateTimeUtil.getPartValue(\n part,\n part.format.length,\n this.value\n );\n\n mask = this._parser.replace(\n mask,\n targetValue,\n part.start,\n part.end\n ).value;\n }\n return mask;\n }\n\n if (this.readOnly) {\n return '';\n }\n\n return this._maskedValue === '' ? mask : this._maskedValue;\n }\n\n private isComplete(): boolean {\n return !this._maskedValue.includes(this.prompt);\n }\n\n private updateValue(): void {\n if (this.isComplete()) {\n const parsedDate = this.parseDate(this._maskedValue);\n this.value = DateTimeUtil.isValidDate(parsedDate) ? parsedDate : null;\n } else {\n this.value = null;\n }\n }\n\n protected override _updateSetRangeTextValue() {\n this.updateValue();\n }\n\n private getNewPosition(value: string, direction = 0): number {\n const cursorPos = this._maskSelection.start;\n\n if (!direction) {\n // Last literal before the current cursor position or start of input value\n const part = this._inputDateParts.findLast(\n (part) => part.type === DateParts.Literal && part.end < cursorPos\n );\n return part?.end ?? 0;\n }\n\n // First literal after the current cursor position or end of input value\n const part = this._inputDateParts.find(\n (part) => part.type === DateParts.Literal && part.start > cursorPos\n );\n return part?.start ?? value.length;\n }\n\n protected async handleFocus() {\n this._focused = true;\n\n if (this.readOnly) {\n return;\n }\n\n this._oldValue = this.value;\n const areFormatsDifferent = this.displayFormat !== this.inputFormat;\n\n if (!this.value) {\n this._maskedValue = this._parser.emptyMask;\n await this.updateComplete;\n this.select();\n } else if (areFormatsDifferent) {\n this.updateMask();\n }\n }\n\n protected handleBlur() {\n const isEmptyMask = this._maskedValue === this._parser.emptyMask;\n\n this._focused = false;\n\n if (!(this.isComplete() || isEmptyMask)) {\n const parse = this.parseDate(this._maskedValue);\n\n if (parse) {\n this.value = parse;\n } else {\n this.value = null;\n this._maskedValue = '';\n }\n } else {\n this.updateMask();\n }\n\n const isSameValue = this._oldValue === this.value;\n\n if (!(this.readOnly || isSameValue)) {\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n super._handleBlur();\n }\n\n protected navigateParts(delta: number) {\n const position = this.getNewPosition(this.input.value, delta);\n this.setSelectionRange(position, position);\n }\n\n protected async keyboardSpin(direction: 'up' | 'down') {\n direction === 'up' ? this.stepUp() : this.stepDown();\n this._fireInputEvent();\n await this.updateComplete;\n this.setSelectionRange(this._maskSelection.start, this._maskSelection.end);\n }\n\n protected override renderInput() {\n return html`\n <input\n type=\"text\"\n part=${partMap(this.resolvePartNames('input'))}\n name=${ifDefined(this.name)}\n .value=${live(this._maskedValue)}\n .placeholder=${this.placeholder || this._parser.emptyMask}\n ?readonly=${this.readOnly}\n ?disabled=${this.disabled}\n @blur=${this.handleBlur}\n @focus=${this.handleFocus}\n @input=${this._handleInput}\n @wheel=${this.onWheel}\n @keydown=${this._setMaskSelection}\n @click=${this._handleClick}\n @cut=${this._setMaskSelection}\n @compositionstart=${this._handleCompositionStart}\n @compositionend=${this._handleCompositionEnd}\n @dragenter=${this.handleDragEnter}\n @dragleave=${this.handleDragLeave}\n @dragstart=${this._setMaskSelection}\n />\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-time-input': IgcDateTimeInputComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"date-time-input.js","sourceRoot":"","sources":["../../../src/components/date-time-input/date-time-input.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EACL,cAAc,EACd,SAAS,EACT,SAAS,EACT,UAAU,EACV,OAAO,EACP,OAAO,GACR,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EACL,yBAAyB,GAE1B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,+BAA+B,MAAM,iDAAiD,CAAC;AAC9F,OAAO,EACL,QAAQ,EAGR,SAAS,EACT,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAkC1D,MAAM,CAAC,OAAO,OAAO,yBAA0B,SAAQ,iBAAiB,CAGtE,yBAAyB,CAAC;aACH,YAAO,GAAG,qBAAqB,AAAxB,CAAyB;IAGhD,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CACf,yBAAyB,EACzB,+BAA+B,CAChC,CAAC;IACJ,CAAC;IAED,IAAuB,YAAY;QACjC,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAqCD,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC;IAChD,CAAC;IAED,IAAW,WAAW,CAAC,GAAW;QAChC,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;YACxB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IAC/B,CAAC;IAQD,IAAW,KAAK,CAAC,KAAuC;QACtD,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAoB,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAOD,IAAW,GAAG,CAAC,KAAuC;QACpD,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAOD,IAAW,GAAG,CAAC,KAAuC;QACpD,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAQD,IAAW,aAAa,CAAC,KAAa;QACpC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,IAAW,aAAa;QACtB,OAAO,CACL,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,qBAAqB,CACvE,CAAC;IACJ,CAAC;IAqBD,IAAW,MAAM,CAAC,KAAa;QAC7B,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,KAAK,CAAC;IACtC,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;IACrC,CAAC;IAGS,cAAc;QACtB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAGS,gBAAgB;QACxB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED,IAAc,YAAY;QACxB,MAAM,KAAK,GACT,IAAI,CAAC,eAAe;YACpB,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAElE,OAAO,KAAK,CAAC,IAAI,CACf,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI;YACzB,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK;YAC1B,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAC5B,CAAC;IACJ,CAAC;IAED,IAAc,YAAY;QACxB,MAAM,KAAK,GACT,IAAI,CAAC,eAAe;YACpB,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClE,OAAO,KAAK,CAAC,IAAI,CACf,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK;YAC1B,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO;YAC5B,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,CAC/B,CAAC;IACJ,CAAC;IAED,IAAY,cAAc;QACxB,IAAI,MAA4B,CAAC;QAEjC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK;gBACrC,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG;gBACnC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,CAC/B,EAAE,IAA0B,CAAC;YAE9B,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,GAAG,QAAQ,CAAC;YACpB,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACvE,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;QACzB,CAAC;aAAM,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACxE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAA0B,CAAC;QAC9D,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAY,cAAc;QACxB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;IAED;QACE,KAAK,EAAE,CAAC;QApNkB,eAAU,GAAG,oBAAoB,CAAC,IAAI,EAAE;YAClE,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,6BAA6B;SAC5C,CAAC,CAAC;QAEc,oBAAe,GAAG,iBAAiB,CAAS,IAAI,EAAE;YACjE,SAAS,EAAE,EAAE;YACb,gBAAgB,EAAE,GAAG,EAAE;gBACrB,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC;SACF,CAAC,CAAC;QAKK,cAAS,GAAgB,IAAI,CAAC;QAC9B,SAAI,GAAgB,IAAI,CAAC;QACzB,SAAI,GAAgB,IAAI,CAAC;QAIzB,oBAAe,GAAmB;YACxC,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;SACX,CAAC;QA4FK,aAAQ,GAAG,IAAI,CAAC;QA8FrB,cAAc,CAAC,IAAI,EAAE;YACnB,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ;YACzB,eAAe,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;SACjD,CAAC;aACC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;aAClC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aAChD,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;aACpD,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;aAC3D,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAEe,iBAAiB;QAC/B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAGM,MAAM,CAAC,QAAmB,EAAE,KAAc;QAC/C,MAAM,UAAU,GAAG,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC;QAEnD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3E,CAAC;IAGM,QAAQ,CAAC,QAAmB,EAAE,KAAc;QACjD,MAAM,UAAU,GAAG,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC;QAEnD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3E,CAAC;IAGM,KAAK;QACV,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAES,QAAQ;QAChB,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAES,UAAU;QAClB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,iBAAiB,CAChD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,aAAa,CACnB,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACjE,CAAC;IAES,eAAe;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAES,eAAe;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5C,CAAC;IACH,CAAC;IAES,KAAK,CAAC,YAAY,CAC1B,IAAY,EACZ,EAAE,KAAK,EAAE,GAAG,EAAiB;QAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAEzE,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;QAEjC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;QAED,MAAM,IAAI,CAAC,cAAc,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAEO,YAAY,CAClB,QAAkB,EAClB,KAAc,EACd,QAAQ,GAAG,KAAK;QAGhB,MAAM,MAAM,GACV,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,QAAgC,CAAC,IAAI,CAAC,CAAC;QAEtE,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC;IAEO,SAAS,CAAC,QAAkB,EAAE,KAAa;QACjD,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,IAAI,UAAoC,CAAC;QACzC,IAAI,YAAoB,CAAC;QAEzB,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,QAAQ,CAAC,IAAI;gBAChB,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,QAAQ,CAAC,KAAK;gBACjB,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtD,MAAM;YACR,KAAK,QAAQ,CAAC,IAAI;gBAChB,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACtC,MAAM;YACR,KAAK,QAAQ,CAAC,KAAK;gBACjB,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtD,MAAM;YACR,KAAK,QAAQ,CAAC,OAAO;gBACnB,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACxD,MAAM;YACR,KAAK,QAAQ,CAAC,OAAO;gBACnB,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACxD,MAAM;YACR,KAAK,QAAQ,CAAC,IAAI;gBAChB,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CACpC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CACnC,CAAC;gBACF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC7B,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CACxC,UAAW,CAAC,KAAK,EACjB,UAAW,CAAC,GAAG,CAChB,CAAC;oBACF,OAAO,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;gBAClE,CAAC;gBACD,MAAM;QACV,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAGa,AAAN,KAAK,CAAC,OAAO,CAAC,KAAiB;QACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACnD,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,MAAM,IAAI,CAAC,cAAc,CAAC;QAC1B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpE,CAAC;IAEO,0BAA0B;QAChC,IAAI,CAAC,qBAAqB,GAAG,gBAAgB,EAAE,CAAC,uBAAuB,CACrE,IAAI,CAAC,MAAM,CACZ,CAAC;IACJ,CAAC;IAEO,OAAO,CAAC,MAAc;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,mBAAmB,CACrD,MAAM,EACN,IAAI,CAAC,MAAM,EACX,IAAI,CACL,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEjE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,YAAY,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAClE,IAAI,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,EAC/B,GAAG,CACJ,CAAC;QAEF,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAE5E,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;YACxD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,GAAW;QAC3B,OAAO,GAAG;YACR,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC;YACzE,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAElC,IAAI,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACxC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;oBACpC,SAAS;gBACX,CAAC;gBAED,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,CAC3C,IAAI,EACJ,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,IAAI,CAAC,KAAK,CACX,CAAC;gBAEF,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CACzB,IAAI,EACJ,WAAW,EACX,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,CACT,CAAC,KAAK,CAAC;YACV,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IAC7D,CAAC;IAEO,UAAU;QAChB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACtB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAEkB,wBAAwB;QACzC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEO,cAAc,CAAC,KAAa,EAAE,SAAS,GAAG,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAE5C,IAAI,CAAC,SAAS,EAAE,CAAC;YAEf,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CACxC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,GAAG,SAAS,CAClE,CAAC;YACF,OAAO,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QACxB,CAAC;QAGD,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CACpC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,GAAG,SAAS,CACpE,CAAC;QACF,OAAO,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;IACrC,CAAC;IAES,KAAK,CAAC,WAAW;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,WAAW,CAAC;QAEpE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YAC3C,MAAM,IAAI,CAAC,cAAc,CAAC;YAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;aAAM,IAAI,mBAAmB,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAES,UAAU;QAClB,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAEjE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEtB,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEhD,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,CAAC;QAElD,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,WAAW,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,KAAK,CAAC,WAAW,EAAE,CAAC;IACtB,CAAC;IAES,aAAa,CAAC,KAAa;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9D,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAES,KAAK,CAAC,YAAY,CAAC,SAAwB;QACnD,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,IAAI,CAAC,cAAc,CAAC;QAC1B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC7E,CAAC;IAEkB,WAAW;QAC5B,OAAO,IAAI,CAAA;;;eAGA,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;eACvC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;iBAClB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;uBACjB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS;oBAC7C,IAAI,CAAC,QAAQ;oBACb,IAAI,CAAC,QAAQ;gBACjB,IAAI,CAAC,UAAU;iBACd,IAAI,CAAC,WAAW;iBAChB,IAAI,CAAC,YAAY;iBACjB,IAAI,CAAC,OAAO;mBACV,IAAI,CAAC,iBAAiB;iBACxB,IAAI,CAAC,YAAY;eACnB,IAAI,CAAC,iBAAiB;4BACT,IAAI,CAAC,uBAAuB;0BAC9B,IAAI,CAAC,qBAAqB;qBAC/B,IAAI,CAAC,eAAe;qBACpB,IAAI,CAAC,eAAe;qBACpB,IAAI,CAAC,iBAAiB;;KAEtC,CAAC;IACJ,CAAC;;AA3iBD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;4DAGvC;AAsBD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;sDAItC;AAOD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;oDAItC;AAWD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;oDAItC;AAYD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;8DAGzC;AAaM;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;4DACG;AAO3B;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;2DAC7B;AAOvB;IADC,QAAQ,EAAE;uDAGV;AAOS;IADT,KAAK,CAAC,QAAQ,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;+DAY/C;AAGS;IADT,KAAK,CAAC,eAAe,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;iEAMtD;AAuOa;IADb,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;wDAehC","sourcesContent":["import { getDateFormatter } from 'igniteui-i18n-core';\nimport { html } from 'lit';\nimport { eventOptions, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { convertToDate } from '../calendar/helpers.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n ctrlKey,\n} from '../common/controllers/key-bindings.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { addI18nController } from '../common/i18n/i18n-controller.js';\nimport type { AbstractConstructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormValueDateTimeTransformers } from '../common/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '../common/mixins/forms/form-value.js';\nimport { partMap } from '../common/part-map.js';\nimport type { IgcInputComponentEventMap } from '../input/input-base.js';\nimport {\n IgcMaskInputBaseComponent,\n type MaskSelection,\n} from '../mask-input/mask-input-base.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport {\n DatePart,\n type DatePartDeltas,\n type DatePartInfo,\n DateParts,\n DateTimeUtil,\n} from './date-util.js';\nimport { dateTimeInputValidators } from './validators.js';\n\nexport interface IgcDateTimeInputComponentEventMap extends Omit<\n IgcInputComponentEventMap,\n 'igcChange'\n> {\n igcChange: CustomEvent<Date | null>;\n}\n\n/**\n * A date time input is an input field that lets you set and edit the date and time in a chosen input element\n * using customizable display and input formats.\n *\n * @element igc-date-time-input\n *\n * @slot prefix - Renders content before the input.\n * @slot suffix - Renders content after input.\n * @slot helper-text - Renders content below the input.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot range-overflow - Renders content when the max validation fails.\n * @slot range-underflow - Renders content when the min validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n *\n * @fires igcInput - Emitted when the control input receives user input.\n * @fires igcChange - Emitted when the control's checked state changes.\n *\n * @csspart container - The main wrapper that holds all main input elements.\n * @csspart input - The native input element.\n * @csspart label - The native label element.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart helper-text - The helper text wrapper.\n */\nexport default class IgcDateTimeInputComponent extends EventEmitterMixin<\n IgcDateTimeInputComponentEventMap,\n AbstractConstructor<IgcMaskInputBaseComponent>\n>(IgcMaskInputBaseComponent) {\n public static readonly tagName = 'igc-date-time-input';\n\n /* blazorSuppress */\n public static register() {\n registerComponent(\n IgcDateTimeInputComponent,\n IgcValidationContainerComponent\n );\n }\n\n protected override get __validators() {\n return dateTimeInputValidators;\n }\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: null,\n transformers: FormValueDateTimeTransformers,\n });\n\n private readonly _i18nController = addI18nController<object>(this, {\n defaultEN: {},\n onResourceChange: () => {\n this.setDefaultMask();\n },\n });\n\n protected _defaultMask!: string;\n private _defaultDisplayFormat!: string;\n private _displayFormat?: string;\n private _oldValue: Date | null = null;\n private _min: Date | null = null;\n private _max: Date | null = null;\n\n private _inputDateParts!: DatePartInfo[];\n private _inputFormat!: string;\n private _datePartDeltas: DatePartDeltas = {\n date: 1,\n month: 1,\n year: 1,\n hours: 1,\n minutes: 1,\n seconds: 1,\n };\n\n /**\n * The date format to apply on the input.\n * @attr input-format\n */\n @property({ attribute: 'input-format' })\n public get inputFormat(): string {\n return this._inputFormat || this._defaultMask;\n }\n\n public set inputFormat(val: string) {\n if (val) {\n this.setMask(val);\n this._inputFormat = val;\n if (this.value) {\n this.updateMask();\n }\n }\n }\n\n public get value(): Date | null {\n return this._formValue.value;\n }\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The value of the input.\n * @attr\n */\n @property({ converter: convertToDate })\n public set value(value: Date | string | null | undefined) {\n this._formValue.setValueAndFormState(value as Date | null);\n this.updateMask();\n }\n\n /**\n * The minimum value required for the input to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set min(value: Date | string | null | undefined) {\n this._min = convertToDate(value);\n this._validate();\n }\n\n public get min(): Date | null {\n return this._min;\n }\n\n /**\n * The maximum value required for the input to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set max(value: Date | string | null | undefined) {\n this._max = convertToDate(value);\n this._validate();\n }\n\n public get max(): Date | null {\n return this._max;\n }\n\n /**\n * Format to display the value in when not editing.\n * Defaults to the locale format if not set.\n * @attr display-format\n */\n @property({ attribute: 'display-format' })\n public set displayFormat(value: string) {\n this._displayFormat = value;\n }\n\n public get displayFormat(): string {\n return (\n this._displayFormat ?? this._inputFormat ?? this._defaultDisplayFormat\n );\n }\n\n /**\n * Delta values used to increment or decrement each date part on step actions.\n * All values default to `1`.\n */\n @property({ attribute: false })\n public spinDelta!: DatePartDeltas;\n\n /**\n * Sets whether to loop over the currently spun segment.\n * @attr spin-loop\n */\n @property({ type: Boolean, attribute: 'spin-loop' })\n public spinLoop = true;\n\n /**\n * Gets/Sets the locale used for formatting the display value.\n * @attr locale\n */\n @property()\n public set locale(value: string) {\n this._i18nController.locale = value;\n }\n\n public get locale() {\n return this._i18nController.locale;\n }\n\n @watch('locale', { waitUntilFirstUpdate: true })\n protected setDefaultMask(): void {\n this.updateDefaultDisplayFormat();\n\n if (!this._inputFormat) {\n this.updateDefaultMask();\n this.setMask(this._defaultMask);\n }\n\n if (this.value) {\n this.updateMask();\n }\n }\n\n @watch('displayFormat', { waitUntilFirstUpdate: true })\n protected setDisplayFormat(): void {\n this.updateDefaultDisplayFormat();\n if (this.value) {\n this.updateMask();\n }\n }\n\n protected get hasDateParts(): boolean {\n const parts =\n this._inputDateParts ||\n DateTimeUtil.parseDateTimeFormat(this.inputFormat, this.locale);\n\n return parts.some(\n (p) =>\n p.type === DateParts.Date ||\n p.type === DateParts.Month ||\n p.type === DateParts.Year\n );\n }\n\n protected get hasTimeParts(): boolean {\n const parts =\n this._inputDateParts ||\n DateTimeUtil.parseDateTimeFormat(this.inputFormat, this.locale);\n return parts.some(\n (p) =>\n p.type === DateParts.Hours ||\n p.type === DateParts.Minutes ||\n p.type === DateParts.Seconds\n );\n }\n\n private get targetDatePart(): DatePart | undefined {\n let result: DatePart | undefined;\n\n if (this._focused) {\n const partType = this._inputDateParts.find(\n (p) =>\n p.start <= this._inputSelection.start &&\n this._inputSelection.start <= p.end &&\n p.type !== DateParts.Literal\n )?.type as string as DatePart;\n\n if (partType) {\n result = partType;\n }\n } else if (this._inputDateParts.some((p) => p.type === DateParts.Date)) {\n result = DatePart.Date;\n } else if (this._inputDateParts.some((p) => p.type === DateParts.Hours)) {\n result = DatePart.Hours;\n } else {\n result = this._inputDateParts[0].type as string as DatePart;\n }\n\n return result;\n }\n\n private get datePartDeltas(): DatePartDeltas {\n return Object.assign({}, this._datePartDeltas, this.spinDelta);\n }\n\n constructor() {\n super();\n\n addKeybindings(this, {\n skip: () => this.readOnly,\n bindingDefaults: { triggers: ['keydownRepeat'] },\n })\n .set([ctrlKey, ';'], this.setToday)\n .set(arrowUp, this.keyboardSpin.bind(this, 'up'))\n .set(arrowDown, this.keyboardSpin.bind(this, 'down'))\n .set([ctrlKey, arrowLeft], this.navigateParts.bind(this, 0))\n .set([ctrlKey, arrowRight], this.navigateParts.bind(this, 1));\n }\n\n public override connectedCallback() {\n super.connectedCallback();\n this.updateDefaultMask();\n this.updateDefaultDisplayFormat();\n this.setMask(this.inputFormat);\n if (this.value) {\n this.updateMask();\n }\n }\n\n /** Increments a date/time portion. */\n public stepUp(datePart?: DatePart, delta?: number): void {\n const targetPart = datePart || this.targetDatePart;\n\n if (!targetPart) {\n return;\n }\n\n const { start, end } = this._inputSelection;\n const newValue = this.trySpinValue(targetPart, delta);\n this.value = newValue;\n this.updateComplete.then(() => this.input.setSelectionRange(start, end));\n }\n\n /** Decrements a date/time portion. */\n public stepDown(datePart?: DatePart, delta?: number): void {\n const targetPart = datePart || this.targetDatePart;\n\n if (!targetPart) {\n return;\n }\n\n const { start, end } = this._inputSelection;\n const newValue = this.trySpinValue(targetPart, delta, true);\n this.value = newValue;\n this.updateComplete.then(() => this.input.setSelectionRange(start, end));\n }\n\n /** Clears the input element of user input. */\n public clear(): void {\n this._maskedValue = '';\n this.value = null;\n }\n\n protected setToday() {\n this.value = new Date();\n this._fireInputEvent();\n }\n\n protected updateMask() {\n if (this._focused) {\n this._maskedValue = this.getMaskedValue();\n } else {\n if (!DateTimeUtil.isValidDate(this.value)) {\n this._maskedValue = '';\n return;\n }\n\n this._maskedValue = DateTimeUtil.formatDisplayDate(\n this.value,\n this.locale,\n this.displayFormat\n );\n }\n }\n\n private _fireInputEvent(): void {\n this._setTouchedState();\n this.emitEvent('igcInput', { detail: this.value?.toString() });\n }\n\n protected handleDragLeave() {\n if (!this._focused) {\n this.updateMask();\n }\n }\n\n protected handleDragEnter() {\n if (!this._focused) {\n this._maskedValue = this.getMaskedValue();\n }\n }\n\n protected async _updateInput(\n text: string,\n { start, end }: MaskSelection\n ): Promise<void> {\n const result = this._parser.replace(this._maskedValue, text, start, end);\n\n this._maskedValue = result.value;\n\n this.updateValue();\n this.requestUpdate();\n\n if (start !== this.inputFormat.length) {\n this._fireInputEvent();\n }\n\n await this.updateComplete;\n this.input.setSelectionRange(result.end, result.end);\n }\n\n private trySpinValue(\n datePart: DatePart,\n delta?: number,\n negative = false\n ): Date {\n // default to 1 if a delta is set to 0 or any other falsy value\n const _delta =\n delta || this.datePartDeltas[datePart as keyof DatePartDeltas] || 1;\n\n const spinValue = negative ? -Math.abs(_delta) : Math.abs(_delta);\n return this.spinValue(datePart, spinValue);\n }\n\n private spinValue(datePart: DatePart, delta: number): Date {\n if (!(this.value && DateTimeUtil.isValidDate(this.value))) {\n return new Date();\n }\n\n const newDate = new Date(this.value.getTime());\n let formatPart: DatePartInfo | undefined;\n let amPmFromMask: string;\n\n switch (datePart) {\n case DatePart.Date:\n DateTimeUtil.spinDate(delta, newDate, this.spinLoop);\n break;\n case DatePart.Month:\n DateTimeUtil.spinMonth(delta, newDate, this.spinLoop);\n break;\n case DatePart.Year:\n DateTimeUtil.spinYear(delta, newDate);\n break;\n case DatePart.Hours:\n DateTimeUtil.spinHours(delta, newDate, this.spinLoop);\n break;\n case DatePart.Minutes:\n DateTimeUtil.spinMinutes(delta, newDate, this.spinLoop);\n break;\n case DatePart.Seconds:\n DateTimeUtil.spinSeconds(delta, newDate, this.spinLoop);\n break;\n case DatePart.AmPm:\n formatPart = this._inputDateParts.find(\n (dp) => dp.type === DateParts.AmPm\n );\n if (formatPart !== undefined) {\n amPmFromMask = this._maskedValue.substring(\n formatPart!.start,\n formatPart!.end\n );\n return DateTimeUtil.spinAmPm(newDate, this.value, amPmFromMask);\n }\n break;\n }\n\n return newDate;\n }\n\n @eventOptions({ passive: false })\n private async onWheel(event: WheelEvent) {\n if (!this._focused || this.readOnly) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const { start, end } = this._inputSelection;\n event.deltaY > 0 ? this.stepDown() : this.stepUp();\n this._fireInputEvent();\n\n await this.updateComplete;\n this.setSelectionRange(start, end);\n }\n\n private updateDefaultMask(): void {\n this._defaultMask = DateTimeUtil.getDefaultInputMask(this.locale);\n }\n\n private updateDefaultDisplayFormat(): void {\n this._defaultDisplayFormat = getDateFormatter().getLocaleDateTimeFormat(\n this.locale\n );\n }\n\n private setMask(string: string): void {\n const oldFormat = this._inputDateParts?.map((p) => p.format).join('');\n this._inputDateParts = DateTimeUtil.parseDateTimeFormat(\n string,\n this.locale,\n true\n );\n const value = this._inputDateParts.map((p) => p.format).join('');\n\n this._defaultMask = value;\n\n const newMask = (value || DateTimeUtil.DEFAULT_INPUT_FORMAT).replace(\n new RegExp(/(?=[^t])[\\w]/, 'g'),\n '0'\n );\n\n this.mask = newMask.includes('tt') ? newMask.replace(/tt/g, 'LL') : newMask;\n\n if (!this.placeholder || oldFormat === this.placeholder) {\n this.placeholder = value;\n }\n }\n\n private parseDate(val: string) {\n return val\n ? DateTimeUtil.parseValueFromMask(val, this._inputDateParts, this.prompt)\n : null;\n }\n\n private getMaskedValue(): string {\n let mask = this._parser.emptyMask;\n\n if (DateTimeUtil.isValidDate(this.value)) {\n for (const part of this._inputDateParts) {\n if (part.type === DateParts.Literal) {\n continue;\n }\n\n const targetValue = DateTimeUtil.getPartValue(\n part,\n part.format.length,\n this.value\n );\n\n mask = this._parser.replace(\n mask,\n targetValue,\n part.start,\n part.end\n ).value;\n }\n return mask;\n }\n\n if (this.readOnly) {\n return '';\n }\n\n return this._maskedValue === '' ? mask : this._maskedValue;\n }\n\n private isComplete(): boolean {\n return !this._maskedValue.includes(this.prompt);\n }\n\n private updateValue(): void {\n if (this.isComplete()) {\n const parsedDate = this.parseDate(this._maskedValue);\n this.value = DateTimeUtil.isValidDate(parsedDate) ? parsedDate : null;\n } else {\n this.value = null;\n }\n }\n\n protected override _updateSetRangeTextValue() {\n this.updateValue();\n }\n\n private getNewPosition(value: string, direction = 0): number {\n const cursorPos = this._maskSelection.start;\n\n if (!direction) {\n // Last literal before the current cursor position or start of input value\n const part = this._inputDateParts.findLast(\n (part) => part.type === DateParts.Literal && part.end < cursorPos\n );\n return part?.end ?? 0;\n }\n\n // First literal after the current cursor position or end of input value\n const part = this._inputDateParts.find(\n (part) => part.type === DateParts.Literal && part.start > cursorPos\n );\n return part?.start ?? value.length;\n }\n\n protected async handleFocus() {\n this._focused = true;\n\n if (this.readOnly) {\n return;\n }\n\n this._oldValue = this.value;\n const areFormatsDifferent = this.displayFormat !== this.inputFormat;\n\n if (!this.value) {\n this._maskedValue = this._parser.emptyMask;\n await this.updateComplete;\n this.select();\n } else if (areFormatsDifferent) {\n this.updateMask();\n }\n }\n\n protected handleBlur() {\n const isEmptyMask = this._maskedValue === this._parser.emptyMask;\n\n this._focused = false;\n\n if (!(this.isComplete() || isEmptyMask)) {\n const parse = this.parseDate(this._maskedValue);\n\n if (parse) {\n this.value = parse;\n } else {\n this.value = null;\n this._maskedValue = '';\n }\n } else {\n this.updateMask();\n }\n\n const isSameValue = this._oldValue === this.value;\n\n if (!(this.readOnly || isSameValue)) {\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n super._handleBlur();\n }\n\n protected navigateParts(delta: number) {\n const position = this.getNewPosition(this.input.value, delta);\n this.setSelectionRange(position, position);\n }\n\n protected async keyboardSpin(direction: 'up' | 'down') {\n direction === 'up' ? this.stepUp() : this.stepDown();\n this._fireInputEvent();\n await this.updateComplete;\n this.setSelectionRange(this._maskSelection.start, this._maskSelection.end);\n }\n\n protected override renderInput() {\n return html`\n <input\n type=\"text\"\n part=${partMap(this.resolvePartNames('input'))}\n name=${ifDefined(this.name)}\n .value=${live(this._maskedValue)}\n .placeholder=${this.placeholder || this._parser.emptyMask}\n ?readonly=${this.readOnly}\n ?disabled=${this.disabled}\n @blur=${this.handleBlur}\n @focus=${this.handleFocus}\n @input=${this._handleInput}\n @wheel=${this.onWheel}\n @keydown=${this._setMaskSelection}\n @click=${this._handleClick}\n @cut=${this._setMaskSelection}\n @compositionstart=${this._handleCompositionStart}\n @compositionend=${this._handleCompositionEnd}\n @dragenter=${this.handleDragEnter}\n @dragleave=${this.handleDragLeave}\n @dragstart=${this._setMaskSelection}\n />\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-time-input': IgcDateTimeInputComponent;\n }\n}\n"]}
@@ -40,15 +40,21 @@ export interface DatePartDeltas {
40
40
  export declare abstract class DateTimeUtil {
41
41
  static readonly DEFAULT_INPUT_FORMAT = "MM/dd/yyyy";
42
42
  static readonly DEFAULT_TIME_INPUT_FORMAT = "hh:mm tt";
43
- private static readonly SEPARATOR;
44
- private static readonly DEFAULT_LOCALE;
45
43
  private static readonly PREDEFINED_FORMATS;
46
44
  static parseValueFromMask(inputData: string, dateTimeParts: DatePartInfo[], promptChar?: string): Date | null;
47
- static getDefaultMask(locale: string): string;
48
- static parseDateTimeFormat(mask: string, locale?: string, noLeadingZero?: boolean): DatePartInfo[];
45
+ static getDefaultInputMask(locale: string): string;
46
+ static parseDateTimeFormat(mask: string, locale: string, leadingZero?: boolean): DatePartInfo[];
49
47
  static parseIsoDate(value: string): Date | null;
50
48
  static isValidDate(value: any): value is Date;
51
- static formatDate(value: Date, locale: string, format: string, noLeadingZero?: boolean): string;
49
+ /**
50
+ * Format date for display.
51
+ * @param value Date value
52
+ * @param locale Locale of the component
53
+ * @param displayFormat Display format specified by the user. Can be undefined.
54
+ * @param inputFormat Input format, so it is not calculated again and used for leading zero format.
55
+ * @returns
56
+ */
57
+ static formatDisplayDate(value: Date, locale: string, displayFormat: string | undefined): string;
52
58
  static getPartValue(datePartInfo: DatePartInfo, partLength: number, _dateValue: Date | null): string;
53
59
  private static _spinTimePart;
54
60
  static spinYear(delta: number, newDate: Date): Date;
@@ -81,13 +87,9 @@ export declare abstract class DateTimeUtil {
81
87
  * @param format The format to check and transform
82
88
  */
83
89
  static predefinedToDateDisplayFormat(format?: string): string | undefined;
84
- private static setDisplayFormatOptions;
85
- private static getMask;
86
90
  private static addCurrentPart;
87
91
  private static ensureLeadingZero;
88
92
  private static determineDatePart;
89
- private static getDefaultLocaleMask;
90
- private static fillDatePartsPositions;
91
93
  private static getCleanVal;
92
94
  private static escapeRegExp;
93
95
  private static trimEmptyPlaceholders;
@@ -1,3 +1,4 @@
1
+ import { getDateFormatter } from 'igniteui-i18n-core';
1
2
  import { parseISODate } from '../calendar/helpers.js';
2
3
  import { clamp } from '../common/util.js';
3
4
  export var FormatDesc;
@@ -33,8 +34,6 @@ function isDate(value) {
33
34
  export class DateTimeUtil {
34
35
  static { this.DEFAULT_INPUT_FORMAT = 'MM/dd/yyyy'; }
35
36
  static { this.DEFAULT_TIME_INPUT_FORMAT = 'hh:mm tt'; }
36
- static { this.SEPARATOR = 'literal'; }
37
- static { this.DEFAULT_LOCALE = 'en'; }
38
37
  static { this.PREDEFINED_FORMATS = new Set([
39
38
  'short',
40
39
  'medium',
@@ -78,20 +77,11 @@ export class DateTimeUtil {
78
77
  }
79
78
  return new Date(parts[DateParts.Year] || 2000, parts[DateParts.Month] || 0, parts[DateParts.Date] || 1, parts[DateParts.Hours] || 0, parts[DateParts.Minutes] || 0, parts[DateParts.Seconds] || 0);
80
79
  }
81
- static getDefaultMask(locale) {
82
- const parts = DateTimeUtil.getDefaultLocaleMask(locale || DateTimeUtil.DEFAULT_LOCALE);
83
- if (parts !== undefined) {
84
- parts.forEach((p) => {
85
- if (p.type !== DateParts.Year && p.type !== DateTimeUtil.SEPARATOR) {
86
- p.formatType = FormatDesc.TwoDigits;
87
- }
88
- });
89
- return DateTimeUtil.getMask(parts);
90
- }
91
- return '';
80
+ static getDefaultInputMask(locale) {
81
+ return getDateFormatter().getLocaleDateTimeFormat(locale, true);
92
82
  }
93
- static parseDateTimeFormat(mask, locale = DateTimeUtil.DEFAULT_LOCALE, noLeadingZero = false) {
94
- const format = mask || DateTimeUtil.getDefaultMask(locale);
83
+ static parseDateTimeFormat(mask, locale, leadingZero = false) {
84
+ const format = mask || DateTimeUtil.getDefaultInputMask(locale);
95
85
  const dateTimeParts = [];
96
86
  const formatArray = Array.from(format);
97
87
  let currentPart = null;
@@ -105,7 +95,7 @@ export class DateTimeUtil {
105
95
  continue;
106
96
  }
107
97
  }
108
- DateTimeUtil.addCurrentPart(currentPart, dateTimeParts, noLeadingZero);
98
+ DateTimeUtil.addCurrentPart(currentPart, dateTimeParts, leadingZero);
109
99
  position = currentPart.end;
110
100
  }
111
101
  currentPart = {
@@ -117,7 +107,7 @@ export class DateTimeUtil {
117
107
  }
118
108
  if (!dateTimeParts.filter((p) => p.format.includes(currentPart.format))
119
109
  .length) {
120
- DateTimeUtil.addCurrentPart(currentPart, dateTimeParts, noLeadingZero);
110
+ DateTimeUtil.addCurrentPart(currentPart, dateTimeParts, leadingZero);
121
111
  }
122
112
  const yearPart = dateTimeParts.filter((p) => p.type === DateParts.Year)[0];
123
113
  if (yearPart && yearPart.format !== 'yy') {
@@ -135,41 +125,34 @@ export class DateTimeUtil {
135
125
  }
136
126
  return false;
137
127
  }
138
- static formatDate(value, locale, format, noLeadingZero = false) {
128
+ static formatDisplayDate(value, locale, displayFormat) {
139
129
  const options = {};
140
- let formattedDate = '';
141
- switch (format) {
130
+ switch (displayFormat) {
142
131
  case 'short':
143
132
  case 'long':
144
133
  case 'medium':
145
134
  case 'full':
146
- options.dateStyle = format;
147
- options.timeStyle = format;
135
+ options.dateStyle = displayFormat;
136
+ options.timeStyle = displayFormat;
148
137
  break;
149
138
  case 'shortDate':
150
139
  case 'longDate':
151
140
  case 'mediumDate':
152
141
  case 'fullDate':
153
- options.dateStyle = format.toLowerCase().split('date')[0];
142
+ options.dateStyle = displayFormat.toLowerCase().split('date')[0];
154
143
  break;
155
144
  case 'shortTime':
156
145
  case 'longTime':
157
146
  case 'mediumTime':
158
147
  case 'fullTime':
159
- options.timeStyle = format.toLowerCase().split('time')[0];
148
+ options.timeStyle = displayFormat.toLowerCase().split('time')[0];
160
149
  break;
161
150
  default:
162
- return DateTimeUtil.setDisplayFormatOptions(value, format, locale, noLeadingZero);
163
- }
164
- let formatter;
165
- try {
166
- formatter = new Intl.DateTimeFormat(locale, options);
167
- }
168
- catch {
169
- formatter = new Intl.DateTimeFormat(DateTimeUtil.DEFAULT_LOCALE, options);
151
+ if (displayFormat) {
152
+ return getDateFormatter().formatDateCustomFormat(value, displayFormat, { locale });
153
+ }
170
154
  }
171
- formattedDate = formatter.format(value);
172
- return formattedDate;
155
+ return getDateFormatter().formatDateTime(value, locale, options);
173
156
  }
174
157
  static getPartValue(datePartInfo, partLength, _dateValue) {
175
158
  let maskedValue;
@@ -270,9 +253,11 @@ export class DateTimeUtil {
270
253
  static spinAmPm(newDate, currentDate, amPmFromMask) {
271
254
  let date = new Date(newDate);
272
255
  switch (amPmFromMask) {
256
+ case 'am':
273
257
  case 'AM':
274
258
  date = new Date(newDate.setHours(newDate.getHours() + 12));
275
259
  break;
260
+ case 'pm':
276
261
  case 'PM':
277
262
  date = new Date(newDate.setHours(newDate.getHours() - 12));
278
263
  break;
@@ -339,130 +324,19 @@ export class DateTimeUtil {
339
324
  ? `${format}Date`
340
325
  : format;
341
326
  }
342
- static setDisplayFormatOptions(value, format, locale, noLeadingZero = false) {
343
- const options = {};
344
- const parts = DateTimeUtil.parseDateTimeFormat(format, locale, noLeadingZero);
345
- const datePartFormatOptionMap = new Map([
346
- [DateParts.Date, 'day'],
347
- [DateParts.Month, 'month'],
348
- [DateParts.Year, 'year'],
349
- [DateParts.Hours, 'hour'],
350
- [DateParts.Minutes, 'minute'],
351
- [DateParts.Seconds, 'second'],
352
- [DateParts.AmPm, 'dayPeriod'],
353
- ]);
354
- const dateFormatMap = new Map([
355
- ['d', 'numeric'],
356
- ['dd', '2-digit'],
357
- ['M', 'numeric'],
358
- ['MM', '2-digit'],
359
- ['MMM', 'short'],
360
- ['MMMM', 'long'],
361
- ['MMMMM', 'narrow'],
362
- ['y', 'numeric'],
363
- ['yy', '2-digit'],
364
- ['yyy', 'numeric'],
365
- ['yyyy', 'numeric'],
366
- ['h', 'numeric'],
367
- ['hh', '2-digit'],
368
- ['H', 'numeric'],
369
- ['HH', '2-digit'],
370
- ['m', 'numeric'],
371
- ['mm', '2-digit'],
372
- ['s', 'numeric'],
373
- ['ss', '2-digit'],
374
- ['ttt', 'short'],
375
- ['tttt', 'long'],
376
- ['ttttt', 'narrow'],
377
- ]);
378
- for (const part of parts) {
379
- if (part.type !== DateParts.Literal) {
380
- const option = datePartFormatOptionMap.get(part.type);
381
- const format = dateFormatMap.get(part.format) ||
382
- dateFormatMap.get(part.format.substring(0, 2));
383
- if (option && format) {
384
- options[option] = format;
385
- if (part.type === DateParts.Hours) {
386
- if (part.format.charAt(0) === 'h') {
387
- options.hourCycle = 'h12';
388
- }
389
- else {
390
- options.hourCycle = 'h23';
391
- }
392
- }
393
- }
394
- if (part.type === DateParts.AmPm && part.format.length <= 2) {
395
- options.hour = '2-digit';
396
- options.hourCycle = 'h12';
397
- }
398
- }
399
- }
400
- let formatter;
401
- try {
402
- formatter = new Intl.DateTimeFormat(locale, options);
403
- }
404
- catch {
405
- formatter = new Intl.DateTimeFormat(DateTimeUtil.DEFAULT_LOCALE, options);
406
- }
407
- const formattedParts = formatter.formatToParts(value);
408
- let result = '';
409
- for (const part of parts) {
410
- if (part.type === DateParts.Literal) {
411
- result += part.format;
412
- continue;
413
- }
414
- const option = datePartFormatOptionMap.get(part.type);
415
- result += formattedParts.filter((p) => p.type === option)[0]?.value || '';
416
- }
417
- return result;
418
- }
419
- static getMask(dateStruct) {
420
- const mask = [];
421
- for (const part of dateStruct) {
422
- switch (part.formatType) {
423
- case FormatDesc.Numeric: {
424
- if (part.type === DateParts.Day) {
425
- mask.push('d');
426
- }
427
- else if (part.type === DateParts.Month) {
428
- mask.push('M');
429
- }
430
- else {
431
- mask.push('yyyy');
432
- }
433
- break;
434
- }
435
- case FormatDesc.TwoDigits: {
436
- if (part.type === DateParts.Day) {
437
- mask.push('dd');
438
- }
439
- else if (part.type === DateParts.Month) {
440
- mask.push('MM');
441
- }
442
- else {
443
- mask.push('yy');
444
- }
445
- }
446
- }
447
- if (part.type === DateTimeUtil.SEPARATOR) {
448
- mask.push(part.value);
449
- }
450
- }
451
- return mask.join('');
452
- }
453
- static addCurrentPart(currentPart, dateTimeParts, noLeadingZero = false) {
454
- DateTimeUtil.ensureLeadingZero(currentPart, noLeadingZero);
327
+ static addCurrentPart(currentPart, dateTimeParts, leadingZero = false) {
328
+ DateTimeUtil.ensureLeadingZero(currentPart, leadingZero);
455
329
  currentPart.end = currentPart.start + currentPart.format.length;
456
330
  dateTimeParts.push(currentPart);
457
331
  }
458
- static ensureLeadingZero(part, noLeadingZero = false) {
332
+ static ensureLeadingZero(part, leadingZero = false) {
459
333
  switch (part.type) {
460
334
  case DateParts.Date:
461
335
  case DateParts.Month:
462
336
  case DateParts.Hours:
463
337
  case DateParts.Minutes:
464
338
  case DateParts.Seconds:
465
- if (part.format.length === 1 && !noLeadingZero) {
339
+ if (part.format.length === 1 && leadingZero) {
466
340
  part.format = part.format.repeat(2);
467
341
  }
468
342
  break;
@@ -493,76 +367,6 @@ export class DateTimeUtil {
493
367
  return DateParts.Literal;
494
368
  }
495
369
  }
496
- static getDefaultLocaleMask(locale) {
497
- const dateStruct = [];
498
- let formatter;
499
- try {
500
- formatter = new Intl.DateTimeFormat(locale);
501
- }
502
- catch {
503
- return;
504
- }
505
- const formatToParts = formatter.formatToParts(new Date());
506
- for (const part of formatToParts) {
507
- if (part.type === DateTimeUtil.SEPARATOR) {
508
- dateStruct.push({
509
- type: DateTimeUtil.SEPARATOR,
510
- value: part.value,
511
- });
512
- }
513
- else {
514
- dateStruct.push({
515
- type: part.type,
516
- });
517
- }
518
- }
519
- const formatterOptions = formatter.resolvedOptions();
520
- for (const part of dateStruct) {
521
- switch (part.type) {
522
- case DateParts.Day: {
523
- part.formatType = formatterOptions.day;
524
- break;
525
- }
526
- case DateParts.Month: {
527
- part.formatType = formatterOptions.month;
528
- break;
529
- }
530
- case DateParts.Year: {
531
- part.formatType = formatterOptions.year;
532
- break;
533
- }
534
- }
535
- }
536
- DateTimeUtil.fillDatePartsPositions(dateStruct);
537
- return dateStruct;
538
- }
539
- static fillDatePartsPositions(dateArray) {
540
- let currentPos = 0;
541
- for (const part of dateArray) {
542
- if (part.type === DateParts.Day || part.type === DateParts.Month) {
543
- part.position = [currentPos, currentPos + 2];
544
- currentPos += 2;
545
- }
546
- else if (part.type === DateParts.Year) {
547
- switch (part.formatType) {
548
- case FormatDesc.Numeric: {
549
- part.position = [currentPos, currentPos + 4];
550
- currentPos += 4;
551
- break;
552
- }
553
- case FormatDesc.TwoDigits: {
554
- part.position = [currentPos, currentPos + 2];
555
- currentPos += 2;
556
- break;
557
- }
558
- }
559
- }
560
- else if (part.type === DateTimeUtil.SEPARATOR) {
561
- part.position = [currentPos, currentPos + 1];
562
- currentPos++;
563
- }
564
- }
565
- }
566
370
  static getCleanVal(inputData, datePart, prompt) {
567
371
  return DateTimeUtil.trimEmptyPlaceholders(inputData.substring(datePart.start, datePart.end), prompt);
568
372
  }