igniteui-webcomponents 3.2.0 → 3.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +54 -3
  3. package/components/accordion/accordion.d.ts +36 -0
  4. package/components/accordion/accordion.js +129 -0
  5. package/components/accordion/accordion.js.map +1 -0
  6. package/components/{nav-drawer/styles/indigo/nav-drawer-header-item.indigo.css.d.ts → accordion/themes/accordion.base.css.d.ts} +0 -0
  7. package/components/accordion/themes/accordion.base.css.js +3 -0
  8. package/components/accordion/themes/accordion.base.css.js.map +1 -0
  9. package/components/badge/themes/light/badge.bootstrap.css.js +1 -1
  10. package/components/badge/themes/light/badge.bootstrap.css.js.map +1 -1
  11. package/components/button/button-base.d.ts +1 -1
  12. package/components/button/button-base.js +7 -2
  13. package/components/button/button-base.js.map +1 -1
  14. package/components/button/icon-button.d.ts +0 -1
  15. package/components/button/icon-button.js +3 -1
  16. package/components/button/icon-button.js.map +1 -1
  17. package/components/button/themes/button/light/button.base.css.js +1 -1
  18. package/components/button/themes/button/light/button.base.css.js.map +1 -1
  19. package/components/button/themes/button/light/button.material.css.js +1 -1
  20. package/components/button/themes/button/light/button.material.css.js.map +1 -1
  21. package/components/calendar/calendar.d.ts +1 -5
  22. package/components/calendar/calendar.js +6 -4
  23. package/components/calendar/calendar.js.map +1 -1
  24. package/components/calendar/common/calendar-base.js +3 -1
  25. package/components/calendar/common/calendar-base.js.map +1 -1
  26. package/components/calendar/common/calendar.model.js.map +1 -1
  27. package/components/calendar/days-view/days-view.d.ts +2 -1
  28. package/components/calendar/days-view/days-view.js +2 -2
  29. package/components/calendar/days-view/days-view.js.map +1 -1
  30. package/components/calendar/months-view/months-view.d.ts +2 -1
  31. package/components/calendar/months-view/months-view.js +2 -2
  32. package/components/calendar/months-view/months-view.js.map +1 -1
  33. package/components/calendar/themes/bootstrap/calendar.bootstrap.css.js +1 -1
  34. package/components/calendar/themes/bootstrap/calendar.bootstrap.css.js.map +1 -1
  35. package/components/calendar/years-view/years-view.d.ts +2 -1
  36. package/components/calendar/years-view/years-view.js +2 -2
  37. package/components/calendar/years-view/years-view.js.map +1 -1
  38. package/components/card/card.header.js +2 -0
  39. package/components/card/card.header.js.map +1 -1
  40. package/components/card/card.js +6 -0
  41. package/components/card/card.js.map +1 -1
  42. package/components/card/themes/light/card.header.bootstrap.css.js +1 -1
  43. package/components/card/themes/light/card.header.bootstrap.css.js.map +1 -1
  44. package/components/{nav-drawer/styles/indigo/nav-drawer-item.indigo.css.d.ts → card/themes/light/card.header.fluent.css.d.ts} +0 -0
  45. package/components/card/themes/light/card.header.fluent.css.js +3 -0
  46. package/components/card/themes/light/card.header.fluent.css.js.map +1 -0
  47. package/components/checkbox/checkbox-base.d.ts +1 -1
  48. package/components/checkbox/checkbox-base.js +7 -2
  49. package/components/checkbox/checkbox-base.js.map +1 -1
  50. package/components/checkbox/checkbox.d.ts +1 -0
  51. package/components/checkbox/checkbox.js +6 -5
  52. package/components/checkbox/checkbox.js.map +1 -1
  53. package/components/checkbox/switch.d.ts +1 -0
  54. package/components/checkbox/switch.js +6 -5
  55. package/components/checkbox/switch.js.map +1 -1
  56. package/components/checkbox/themes/light/checkbox.base.css.js +1 -1
  57. package/components/checkbox/themes/light/checkbox.base.css.js.map +1 -1
  58. package/components/checkbox/themes/light/checkbox.bootstrap.css.js +1 -1
  59. package/components/checkbox/themes/light/checkbox.bootstrap.css.js.map +1 -1
  60. package/components/checkbox/themes/light/checkbox.fluent.css.js +1 -1
  61. package/components/checkbox/themes/light/checkbox.fluent.css.js.map +1 -1
  62. package/components/checkbox/themes/light/checkbox.indigo.css.js +1 -1
  63. package/components/checkbox/themes/light/checkbox.indigo.css.js.map +1 -1
  64. package/components/checkbox/themes/light/checkbox.material.css.js +1 -1
  65. package/components/checkbox/themes/light/checkbox.material.css.js.map +1 -1
  66. package/components/checkbox/themes/light/switch.base.css.js +1 -1
  67. package/components/checkbox/themes/light/switch.base.css.js.map +1 -1
  68. package/components/checkbox/themes/light/switch.fluent.css.js +1 -1
  69. package/components/checkbox/themes/light/switch.fluent.css.js.map +1 -1
  70. package/components/chip/chip.d.ts +1 -2
  71. package/components/chip/chip.js +3 -1
  72. package/components/chip/chip.js.map +1 -1
  73. package/components/chip/themes/chip.base.css.js +1 -1
  74. package/components/chip/themes/chip.base.css.js.map +1 -1
  75. package/components/chip/themes/chip.bootstrap.css.js +1 -1
  76. package/components/chip/themes/chip.bootstrap.css.js.map +1 -1
  77. package/components/chip/themes/chip.fluent.css.js +1 -1
  78. package/components/chip/themes/chip.fluent.css.js.map +1 -1
  79. package/components/chip/themes/chip.indigo.css.js +1 -1
  80. package/components/chip/themes/chip.indigo.css.js.map +1 -1
  81. package/components/chip/themes/chip.material.css.js +1 -1
  82. package/components/chip/themes/chip.material.css.js.map +1 -1
  83. package/components/common/decorators/blazorAdditionalDependencies.d.ts +5 -0
  84. package/components/common/decorators/blazorAdditionalDependencies.js +6 -0
  85. package/components/common/decorators/blazorAdditionalDependencies.js.map +1 -0
  86. package/components/common/decorators/blazorDeepImport.d.ts +4 -0
  87. package/components/common/decorators/blazorDeepImport.js +2 -0
  88. package/components/common/decorators/blazorDeepImport.js.map +1 -0
  89. package/components/common/decorators/index.d.ts +1 -0
  90. package/components/common/decorators/index.js +1 -0
  91. package/components/common/decorators/index.js.map +1 -1
  92. package/components/common/definitions/defineAllComponents.js +10 -0
  93. package/components/common/definitions/defineAllComponents.js.map +1 -1
  94. package/components/common/i18n/calendar.resources.js.map +1 -1
  95. package/components/common/mixins/constructor.d.ts +1 -0
  96. package/components/common/mixins/constructor.js.map +1 -1
  97. package/components/common/mixins/event-emitter.d.ts +2 -2
  98. package/components/common/mixins/event-emitter.js +2 -2
  99. package/components/common/mixins/event-emitter.js.map +1 -1
  100. package/components/common/types.d.ts +1 -0
  101. package/components/common/types.js +2 -0
  102. package/components/common/types.js.map +1 -0
  103. package/components/common/util.d.ts +18 -0
  104. package/components/common/util.js +17 -0
  105. package/components/common/util.js.map +1 -1
  106. package/components/date-time-input/date-time-input.d.ts +110 -0
  107. package/components/date-time-input/date-time-input.js +505 -0
  108. package/components/date-time-input/date-time-input.js.map +1 -0
  109. package/components/date-time-input/date-util.d.ts +89 -0
  110. package/components/date-time-input/date-util.js +597 -0
  111. package/components/date-time-input/date-util.js.map +1 -0
  112. package/components/dropdown/dropdown-group.d.ts +3 -2
  113. package/components/dropdown/dropdown-group.js +9 -10
  114. package/components/dropdown/dropdown-group.js.map +1 -1
  115. package/components/dropdown/dropdown.d.ts +25 -21
  116. package/components/dropdown/dropdown.js +63 -79
  117. package/components/dropdown/dropdown.js.map +1 -1
  118. package/components/expansion-panel/expansion-panel.d.ts +2 -1
  119. package/components/expansion-panel/expansion-panel.js +11 -5
  120. package/components/expansion-panel/expansion-panel.js.map +1 -1
  121. package/components/expansion-panel/themes/light/expansion-panel.base.css.js +1 -1
  122. package/components/expansion-panel/themes/light/expansion-panel.base.css.js.map +1 -1
  123. package/components/form/form.d.ts +1 -1
  124. package/components/form/form.js +3 -1
  125. package/components/form/form.js.map +1 -1
  126. package/components/icon/icon.js +3 -7
  127. package/components/icon/icon.js.map +1 -1
  128. package/components/icon/icon.material.css.js +1 -1
  129. package/components/icon/icon.material.css.js.map +1 -1
  130. package/components/icon/icon.registry.js +2 -0
  131. package/components/icon/icon.registry.js.map +1 -1
  132. package/components/input/input-base.d.ts +7 -3
  133. package/components/input/input-base.js +19 -12
  134. package/components/input/input-base.js.map +1 -1
  135. package/components/input/input.d.ts +1 -4
  136. package/components/input/input.js +8 -4
  137. package/components/input/input.js.map +1 -1
  138. package/components/input/themes/light/input.bootstrap.css.js +1 -1
  139. package/components/input/themes/light/input.bootstrap.css.js.map +1 -1
  140. package/components/list/list.js +4 -0
  141. package/components/list/list.js.map +1 -1
  142. package/components/list/themes/light/list-item.bootstrap.css.js +1 -1
  143. package/components/list/themes/light/list-item.bootstrap.css.js.map +1 -1
  144. package/components/list/themes/light/list-item.fluent.css.js +1 -1
  145. package/components/list/themes/light/list-item.fluent.css.js.map +1 -1
  146. package/components/list/themes/light/list-item.indigo.css.js +1 -1
  147. package/components/list/themes/light/list-item.indigo.css.js.map +1 -1
  148. package/components/mask-input/mask-input-base.d.ts +38 -0
  149. package/components/mask-input/mask-input-base.js +115 -0
  150. package/components/mask-input/mask-input-base.js.map +1 -0
  151. package/components/mask-input/mask-input.d.ts +5 -36
  152. package/components/mask-input/mask-input.js +11 -89
  153. package/components/mask-input/mask-input.js.map +1 -1
  154. package/components/nav-drawer/nav-drawer-header-item.js +4 -3
  155. package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
  156. package/components/nav-drawer/nav-drawer-item.js +4 -3
  157. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  158. package/components/nav-drawer/nav-drawer.js +6 -2
  159. package/components/nav-drawer/nav-drawer.js.map +1 -1
  160. package/components/nav-drawer/{styles → themes/dark}/nav-drawer-item.base.css.d.ts +0 -0
  161. package/components/nav-drawer/themes/dark/nav-drawer-item.base.css.js +3 -0
  162. package/components/nav-drawer/themes/dark/nav-drawer-item.base.css.js.map +1 -0
  163. package/components/nav-drawer/{styles/indigo/nav-drawer.indigo.css.d.ts → themes/dark/nav-drawer-item.bootstrap.css.d.ts} +0 -0
  164. package/components/nav-drawer/themes/dark/nav-drawer-item.bootstrap.css.js +3 -0
  165. package/components/nav-drawer/themes/dark/nav-drawer-item.bootstrap.css.js.map +1 -0
  166. package/components/nav-drawer/{styles/nav-drawer-header-item.base.css.d.ts → themes/dark/nav-drawer-item.fluent.css.d.ts} +0 -0
  167. package/components/nav-drawer/themes/dark/nav-drawer-item.fluent.css.js +3 -0
  168. package/components/nav-drawer/themes/dark/nav-drawer-item.fluent.css.js.map +1 -0
  169. package/components/nav-drawer/{styles/nav-drawer.base.css.d.ts → themes/dark/nav-drawer-item.indigo.css.d.ts} +0 -0
  170. package/components/nav-drawer/themes/dark/nav-drawer-item.indigo.css.js +3 -0
  171. package/components/nav-drawer/themes/dark/nav-drawer-item.indigo.css.js.map +1 -0
  172. package/components/{snackbar/themes/snackbar.base.css.d.ts → nav-drawer/themes/dark/nav-drawer.indigo.css.d.ts} +0 -0
  173. package/components/nav-drawer/themes/dark/nav-drawer.indigo.css.js +3 -0
  174. package/components/nav-drawer/themes/dark/nav-drawer.indigo.css.js.map +1 -0
  175. package/components/{snackbar/themes/snackbar.bootstrap.css.d.ts → nav-drawer/themes/light/fluent/nav-drawer-header-item.fluent.css.d.ts} +0 -0
  176. package/components/nav-drawer/themes/light/fluent/nav-drawer-header-item.fluent.css.js +3 -0
  177. package/components/nav-drawer/themes/light/fluent/nav-drawer-header-item.fluent.css.js.map +1 -0
  178. package/components/{snackbar/themes/snackbar.fluent.css.d.ts → nav-drawer/themes/light/fluent/nav-drawer-item.fluent.css.d.ts} +0 -0
  179. package/components/nav-drawer/themes/light/fluent/nav-drawer-item.fluent.css.js +3 -0
  180. package/components/nav-drawer/themes/light/fluent/nav-drawer-item.fluent.css.js.map +1 -0
  181. package/components/{snackbar/themes/snackbar.indigo.css.d.ts → nav-drawer/themes/light/indigo/nav-drawer-header-item.indigo.css.d.ts} +0 -0
  182. package/components/nav-drawer/{styles → themes/light}/indigo/nav-drawer-header-item.indigo.css.js +0 -0
  183. package/components/nav-drawer/themes/light/indigo/nav-drawer-header-item.indigo.css.js.map +1 -0
  184. package/components/nav-drawer/themes/light/indigo/nav-drawer-item.indigo.css.d.ts +1 -0
  185. package/components/nav-drawer/themes/light/indigo/nav-drawer-item.indigo.css.js +3 -0
  186. package/components/nav-drawer/themes/light/indigo/nav-drawer-item.indigo.css.js.map +1 -0
  187. package/components/nav-drawer/themes/light/indigo/nav-drawer.indigo.css.d.ts +1 -0
  188. package/components/nav-drawer/themes/light/indigo/nav-drawer.indigo.css.js +3 -0
  189. package/components/nav-drawer/themes/light/indigo/nav-drawer.indigo.css.js.map +1 -0
  190. package/components/nav-drawer/themes/light/nav-drawer-header-item.base.css.d.ts +1 -0
  191. package/components/nav-drawer/{styles → themes/light}/nav-drawer-header-item.base.css.js +1 -1
  192. package/components/nav-drawer/themes/light/nav-drawer-header-item.base.css.js.map +1 -0
  193. package/components/nav-drawer/themes/light/nav-drawer-item.base.css.d.ts +1 -0
  194. package/components/nav-drawer/{styles → themes/light}/nav-drawer-item.base.css.js +1 -1
  195. package/components/nav-drawer/themes/light/nav-drawer-item.base.css.js.map +1 -0
  196. package/components/nav-drawer/themes/light/nav-drawer.base.css.d.ts +1 -0
  197. package/components/nav-drawer/{styles → themes/light}/nav-drawer.base.css.js +0 -0
  198. package/components/nav-drawer/themes/light/nav-drawer.base.css.js.map +1 -0
  199. package/components/progress/circular-progress.d.ts +1 -1
  200. package/components/progress/circular-progress.js +3 -0
  201. package/components/progress/circular-progress.js.map +1 -1
  202. package/components/progress/linear-progress.js +1 -0
  203. package/components/progress/linear-progress.js.map +1 -1
  204. package/components/progress/themes/circular/circular.progress.base.css.js +1 -1
  205. package/components/progress/themes/circular/circular.progress.base.css.js.map +1 -1
  206. package/components/progress/themes/linear/linear.progress.base.css.js +1 -1
  207. package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
  208. package/components/progress/themes/linear/linear.progress.bootstrap.css.js +1 -1
  209. package/components/progress/themes/linear/linear.progress.bootstrap.css.js.map +1 -1
  210. package/components/progress/themes/linear/linear.progress.fluent.css.js +1 -1
  211. package/components/progress/themes/linear/linear.progress.fluent.css.js.map +1 -1
  212. package/components/progress/themes/linear/linear.progress.indigo.css.js +1 -1
  213. package/components/progress/themes/linear/linear.progress.indigo.css.js.map +1 -1
  214. package/components/radio/radio.d.ts +2 -1
  215. package/components/radio/radio.js +6 -5
  216. package/components/radio/radio.js.map +1 -1
  217. package/components/radio/themes/light/radio.base.css.js +1 -1
  218. package/components/radio/themes/light/radio.base.css.js.map +1 -1
  219. package/components/radio/themes/light/radio.fluent.css.js +1 -1
  220. package/components/radio/themes/light/radio.fluent.css.js.map +1 -1
  221. package/components/radio-group/radio-group.js +3 -0
  222. package/components/radio-group/radio-group.js.map +1 -1
  223. package/components/rating/rating-symbol.base.css.d.ts +1 -0
  224. package/components/rating/rating-symbol.base.css.js +3 -0
  225. package/components/rating/rating-symbol.base.css.js.map +1 -0
  226. package/components/rating/rating-symbol.d.ts +8 -2
  227. package/components/rating/rating-symbol.js +12 -3
  228. package/components/rating/rating-symbol.js.map +1 -1
  229. package/components/rating/rating.base.css.js +1 -1
  230. package/components/rating/rating.base.css.js.map +1 -1
  231. package/components/rating/rating.bootstrap.css.js +1 -1
  232. package/components/rating/rating.bootstrap.css.js.map +1 -1
  233. package/components/rating/rating.d.ts +19 -14
  234. package/components/rating/rating.fluent.css.js +1 -1
  235. package/components/rating/rating.fluent.css.js.map +1 -1
  236. package/components/rating/rating.indigo.css.js +1 -1
  237. package/components/rating/rating.indigo.css.js.map +1 -1
  238. package/components/rating/rating.js +86 -44
  239. package/components/rating/rating.js.map +1 -1
  240. package/components/slider/range-slider.d.ts +1 -1
  241. package/components/slider/range-slider.js.map +1 -1
  242. package/components/slider/slider-base.js +7 -2
  243. package/components/slider/slider-base.js.map +1 -1
  244. package/components/slider/slider.d.ts +1 -1
  245. package/components/slider/themes/light/slider.base.css.js +1 -1
  246. package/components/slider/themes/light/slider.base.css.js.map +1 -1
  247. package/components/slider/themes/light/slider.bootstrap.css.js +1 -1
  248. package/components/slider/themes/light/slider.bootstrap.css.js.map +1 -1
  249. package/components/slider/themes/light/slider.fluent.css.js +1 -1
  250. package/components/slider/themes/light/slider.fluent.css.js.map +1 -1
  251. package/components/slider/themes/light/slider.indigo.css.js +1 -1
  252. package/components/slider/themes/light/slider.indigo.css.js.map +1 -1
  253. package/components/slider/themes/light/slider.material.css.js +1 -1
  254. package/components/slider/themes/light/slider.material.css.js.map +1 -1
  255. package/components/snackbar/snackbar.d.ts +1 -1
  256. package/components/snackbar/snackbar.js +8 -4
  257. package/components/snackbar/snackbar.js.map +1 -1
  258. package/components/snackbar/themes/dark/snackbar.indigo.css.d.ts +1 -0
  259. package/components/snackbar/themes/dark/snackbar.indigo.css.js +3 -0
  260. package/components/snackbar/themes/dark/snackbar.indigo.css.js.map +1 -0
  261. package/components/snackbar/themes/light/snackbar.base.css.d.ts +1 -0
  262. package/components/snackbar/themes/light/snackbar.base.css.js +3 -0
  263. package/components/snackbar/themes/light/snackbar.base.css.js.map +1 -0
  264. package/components/snackbar/themes/light/snackbar.bootstrap.css.d.ts +1 -0
  265. package/components/snackbar/themes/light/snackbar.bootstrap.css.js +3 -0
  266. package/components/snackbar/themes/light/snackbar.bootstrap.css.js.map +1 -0
  267. package/components/snackbar/themes/light/snackbar.fluent.css.d.ts +1 -0
  268. package/components/snackbar/themes/light/snackbar.fluent.css.js +3 -0
  269. package/components/snackbar/themes/light/snackbar.fluent.css.js.map +1 -0
  270. package/components/snackbar/themes/light/snackbar.indigo.css.d.ts +1 -0
  271. package/components/snackbar/themes/light/snackbar.indigo.css.js +3 -0
  272. package/components/snackbar/themes/light/snackbar.indigo.css.js.map +1 -0
  273. package/components/tabs/tab-panel.d.ts +20 -0
  274. package/components/tabs/tab-panel.js +20 -0
  275. package/components/tabs/tab-panel.js.map +1 -0
  276. package/components/tabs/tab.d.ts +37 -0
  277. package/components/tabs/tab.js +71 -0
  278. package/components/tabs/tab.js.map +1 -0
  279. package/components/tabs/tabs.d.ts +79 -0
  280. package/components/tabs/tabs.js +316 -0
  281. package/components/tabs/tabs.js.map +1 -0
  282. package/components/tabs/themes/dark/tab.dark.base.css.d.ts +1 -0
  283. package/components/tabs/themes/dark/tab.dark.base.css.js +3 -0
  284. package/components/tabs/themes/dark/tab.dark.base.css.js.map +1 -0
  285. package/components/tabs/themes/dark/tab.dark.bootstrap.css.d.ts +1 -0
  286. package/components/tabs/themes/dark/tab.dark.bootstrap.css.js +3 -0
  287. package/components/tabs/themes/dark/tab.dark.bootstrap.css.js.map +1 -0
  288. package/components/tabs/themes/light/tab-panel.base.css.d.ts +1 -0
  289. package/components/tabs/themes/light/tab-panel.base.css.js +3 -0
  290. package/components/tabs/themes/light/tab-panel.base.css.js.map +1 -0
  291. package/components/tabs/themes/light/tab.base.css.d.ts +1 -0
  292. package/components/tabs/themes/light/tab.base.css.js +3 -0
  293. package/components/tabs/themes/light/tab.base.css.js.map +1 -0
  294. package/components/tabs/themes/light/tab.bootstrap.css.d.ts +1 -0
  295. package/components/tabs/themes/light/tab.bootstrap.css.js +3 -0
  296. package/components/tabs/themes/light/tab.bootstrap.css.js.map +1 -0
  297. package/components/tabs/themes/light/tab.fluent.css.d.ts +1 -0
  298. package/components/tabs/themes/light/tab.fluent.css.js +3 -0
  299. package/components/tabs/themes/light/tab.fluent.css.js.map +1 -0
  300. package/components/tabs/themes/light/tab.indigo.css.d.ts +1 -0
  301. package/components/tabs/themes/light/tab.indigo.css.js +3 -0
  302. package/components/tabs/themes/light/tab.indigo.css.js.map +1 -0
  303. package/components/tabs/themes/light/tabs.base.css.d.ts +1 -0
  304. package/components/tabs/themes/light/tabs.base.css.js +3 -0
  305. package/components/tabs/themes/light/tabs.base.css.js.map +1 -0
  306. package/components/tabs/themes/light/tabs.bootstrap.css.d.ts +1 -0
  307. package/components/tabs/themes/light/tabs.bootstrap.css.js +3 -0
  308. package/components/tabs/themes/light/tabs.bootstrap.css.js.map +1 -0
  309. package/components/tabs/themes/light/tabs.fluent.css.d.ts +1 -0
  310. package/components/tabs/themes/light/tabs.fluent.css.js +3 -0
  311. package/components/tabs/themes/light/tabs.fluent.css.js.map +1 -0
  312. package/components/tabs/themes/light/tabs.indigo.css.d.ts +1 -0
  313. package/components/tabs/themes/light/tabs.indigo.css.js +3 -0
  314. package/components/tabs/themes/light/tabs.indigo.css.js.map +1 -0
  315. package/components/tabs/utils.d.ts +14 -0
  316. package/components/tabs/utils.js +32 -0
  317. package/components/tabs/utils.js.map +1 -0
  318. package/components/toast/themes/toast.base.css.js +1 -1
  319. package/components/toast/themes/toast.base.css.js.map +1 -1
  320. package/components/toggle/toggle.controller.d.ts +24 -4
  321. package/components/toggle/toggle.controller.js +36 -30
  322. package/components/toggle/toggle.controller.js.map +1 -1
  323. package/components/toggle/toggle.directive.d.ts +1 -1
  324. package/components/toggle/toggle.directive.js +1 -0
  325. package/components/toggle/toggle.directive.js.map +1 -1
  326. package/components/tree/themes/light/tree.base.css.js +1 -1
  327. package/components/tree/themes/light/tree.base.css.js.map +1 -1
  328. package/components/tree/tree-item.js +21 -3
  329. package/components/tree/tree-item.js.map +1 -1
  330. package/components/tree/tree.common.js.map +1 -1
  331. package/components/tree/tree.d.ts +3 -3
  332. package/components/tree/tree.js +32 -2
  333. package/components/tree/tree.js.map +1 -1
  334. package/custom-elements.json +672 -70
  335. package/index.d.ts +8 -8
  336. package/index.js +5 -7
  337. package/index.js.map +1 -1
  338. package/package.json +10 -8
  339. package/themes/dark/bootstrap.css +1 -1
  340. package/themes/dark/fluent.css +1 -1
  341. package/themes/dark/indigo.css +1 -1
  342. package/themes/dark/material.css +1 -1
  343. package/vscode-html-custom-data.json +233 -58
  344. package/components/nav-drawer/styles/indigo/nav-drawer-header-item.indigo.css.js.map +0 -1
  345. package/components/nav-drawer/styles/indigo/nav-drawer-item.indigo.css.js +0 -3
  346. package/components/nav-drawer/styles/indigo/nav-drawer-item.indigo.css.js.map +0 -1
  347. package/components/nav-drawer/styles/indigo/nav-drawer.indigo.css.js +0 -3
  348. package/components/nav-drawer/styles/indigo/nav-drawer.indigo.css.js.map +0 -1
  349. package/components/nav-drawer/styles/nav-drawer-header-item.base.css.js.map +0 -1
  350. package/components/nav-drawer/styles/nav-drawer-item.base.css.js.map +0 -1
  351. package/components/nav-drawer/styles/nav-drawer.base.css.js.map +0 -1
  352. package/components/snackbar/themes/snackbar.base.css.js +0 -3
  353. package/components/snackbar/themes/snackbar.base.css.js.map +0 -1
  354. package/components/snackbar/themes/snackbar.bootstrap.css.js +0 -3
  355. package/components/snackbar/themes/snackbar.bootstrap.css.js.map +0 -1
  356. package/components/snackbar/themes/snackbar.fluent.css.js +0 -3
  357. package/components/snackbar/themes/snackbar.fluent.css.js.map +0 -1
  358. package/components/snackbar/themes/snackbar.indigo.css.js +0 -3
  359. package/components/snackbar/themes/snackbar.indigo.css.js.map +0 -1
@@ -0,0 +1,505 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { html } from 'lit';
8
+ import { property } from 'lit/decorators.js';
9
+ import { live } from 'lit/directives/live.js';
10
+ import { DateParts, DatePart, DateTimeUtil, } from './date-util.js';
11
+ import { blazorTwoWayBind } from '../common/decorators/blazorTwoWayBind.js';
12
+ import { watch } from '../common/decorators/watch.js';
13
+ import { ifDefined } from 'lit/directives/if-defined.js';
14
+ import { IgcMaskInputBaseComponent } from '../mask-input/mask-input-base.js';
15
+ import { partNameMap } from '../common/util.js';
16
+ import { EventEmitterMixin } from '../common/mixins/event-emitter.js';
17
+ export default class IgcDateTimeInputComponent extends EventEmitterMixin(IgcMaskInputBaseComponent) {
18
+ constructor() {
19
+ super();
20
+ this._oldValue = null;
21
+ this._datePartDeltas = {
22
+ date: 1,
23
+ month: 1,
24
+ year: 1,
25
+ hours: 1,
26
+ minutes: 1,
27
+ seconds: 1,
28
+ };
29
+ this.spinLoop = true;
30
+ this.locale = 'en';
31
+ this.addEventListener('wheel', this.onWheel);
32
+ }
33
+ get inputFormat() {
34
+ return this._inputFormat || this._defaultMask;
35
+ }
36
+ set inputFormat(val) {
37
+ if (val) {
38
+ this.setMask(val);
39
+ this._inputFormat = val;
40
+ }
41
+ }
42
+ get value() {
43
+ return this._value;
44
+ }
45
+ set value(val) {
46
+ this._value = val
47
+ ? DateTimeUtil.isValidDate(val)
48
+ ? val
49
+ : DateTimeUtil.parseIsoDate(val)
50
+ : null;
51
+ this.updateMask();
52
+ this.validate();
53
+ }
54
+ setDefaultMask() {
55
+ if (!this._inputFormat) {
56
+ this.updateDefaultMask();
57
+ this.setMask(this._defaultMask);
58
+ }
59
+ if (this.value) {
60
+ this.updateMask();
61
+ }
62
+ }
63
+ setDisplayFormat() {
64
+ if (this.displayFormat) {
65
+ if (this.value) {
66
+ this.maskedValue = DateTimeUtil.formatDate(this.value, this.locale, this.displayFormat, true);
67
+ }
68
+ }
69
+ }
70
+ promptChange() {
71
+ if (!this.prompt) {
72
+ this.prompt = this.parser.prompt;
73
+ }
74
+ else {
75
+ this.parser.prompt = this.prompt;
76
+ }
77
+ }
78
+ handleInvalidState() {
79
+ this.updateComplete.then(() => (this.invalid = !this.input.checkValidity()));
80
+ }
81
+ validate() {
82
+ if (!this.value) {
83
+ return null;
84
+ }
85
+ let errors = {};
86
+ if (this.minValue || this.maxValue) {
87
+ errors = DateTimeUtil.validateMinMax(this.value, this.minValue, this.maxValue, this.hasTimeParts, this.hasDateParts);
88
+ if (Object.keys(errors).length > 0) {
89
+ this.invalid = true;
90
+ }
91
+ else {
92
+ this.invalid = false;
93
+ }
94
+ }
95
+ return errors;
96
+ }
97
+ get hasDateParts() {
98
+ const parts = this._inputDateParts ||
99
+ DateTimeUtil.parseDateTimeFormat(this.inputFormat);
100
+ return parts.some((p) => p.type === DateParts.Date ||
101
+ p.type === DateParts.Month ||
102
+ p.type === DateParts.Year);
103
+ }
104
+ get hasTimeParts() {
105
+ const parts = this._inputDateParts ||
106
+ DateTimeUtil.parseDateTimeFormat(this.inputFormat);
107
+ return parts.some((p) => p.type === DateParts.Hours ||
108
+ p.type === DateParts.Minutes ||
109
+ p.type === DateParts.Seconds);
110
+ }
111
+ get targetDatePart() {
112
+ var _a;
113
+ let result;
114
+ if (this.hasFocus) {
115
+ const partType = (_a = this._inputDateParts.find((p) => p.start <= this.inputSelection.start &&
116
+ this.inputSelection.start <= p.end &&
117
+ p.type !== DateParts.Literal)) === null || _a === void 0 ? void 0 : _a.type;
118
+ if (partType) {
119
+ result = partType;
120
+ }
121
+ }
122
+ else {
123
+ if (this._inputDateParts.some((p) => p.type === DateParts.Date)) {
124
+ result = DatePart.Date;
125
+ }
126
+ else if (this._inputDateParts.some((p) => p.type === DateParts.Hours)) {
127
+ result = DatePart.Hours;
128
+ }
129
+ else {
130
+ result = this._inputDateParts[0].type;
131
+ }
132
+ }
133
+ return result;
134
+ }
135
+ get datePartDeltas() {
136
+ return Object.assign({}, this._datePartDeltas, this.spinDelta);
137
+ }
138
+ connectedCallback() {
139
+ super.connectedCallback();
140
+ this.updateDefaultMask();
141
+ this.setMask(this.inputFormat);
142
+ if (this.value) {
143
+ this.updateMask();
144
+ }
145
+ }
146
+ reportValidity() {
147
+ const state = this._value
148
+ ? Object.keys(this.validate()).length === 0
149
+ : this.input.reportValidity();
150
+ this.invalid = !state;
151
+ return state;
152
+ }
153
+ checkValidity() {
154
+ if (this.disabled) {
155
+ return this.input.checkValidity();
156
+ }
157
+ if (!this._value) {
158
+ return !this.required;
159
+ }
160
+ return (this.input.checkValidity() && Object.keys(this.validate()).length === 0);
161
+ }
162
+ stepUp(datePart, delta) {
163
+ const targetPart = datePart || this.targetDatePart;
164
+ if (!targetPart) {
165
+ return;
166
+ }
167
+ const newValue = this.trySpinValue(targetPart, delta);
168
+ this.value = newValue;
169
+ this.handleInput();
170
+ }
171
+ stepDown(datePart, delta) {
172
+ const targetPart = datePart || this.targetDatePart;
173
+ if (!targetPart) {
174
+ return;
175
+ }
176
+ const newValue = this.trySpinValue(targetPart, delta, true);
177
+ this.value = newValue;
178
+ this.handleInput();
179
+ }
180
+ clear() {
181
+ this.maskedValue = '';
182
+ this.value = null;
183
+ }
184
+ updateMask() {
185
+ if (this.hasFocus) {
186
+ this.maskedValue = this.getMaskedValue();
187
+ }
188
+ else {
189
+ if (!this.value || !DateTimeUtil.isValidDate(this.value)) {
190
+ this.maskedValue = '';
191
+ return;
192
+ }
193
+ const format = this.displayFormat || this.inputFormat;
194
+ if (this.displayFormat) {
195
+ this.maskedValue = DateTimeUtil.formatDate(this.value, this.locale, format, true);
196
+ }
197
+ else if (this.inputFormat) {
198
+ this.maskedValue = DateTimeUtil.formatDate(this.value, this.locale, format);
199
+ }
200
+ else {
201
+ this.maskedValue = this.value.toLocaleString();
202
+ }
203
+ }
204
+ }
205
+ handleChange() {
206
+ this.emitEvent('igcChange', { detail: this.value });
207
+ this.invalid = !this.checkValidity();
208
+ }
209
+ handleInput() {
210
+ var _a;
211
+ this.emitEvent('igcInput', { detail: (_a = this.value) === null || _a === void 0 ? void 0 : _a.toString() });
212
+ }
213
+ handleDragLeave() {
214
+ if (!this.hasFocus) {
215
+ this.updateMask();
216
+ }
217
+ }
218
+ handleDragEnter() {
219
+ if (!this.hasFocus) {
220
+ this.maskedValue = this.getMaskedValue();
221
+ }
222
+ }
223
+ updateInput(part, start, finish) {
224
+ var _a;
225
+ const { value, end } = this.parser.replace(this.maskedValue, part, start, finish);
226
+ this.maskedValue = value;
227
+ this.updateValue();
228
+ this.requestUpdate();
229
+ if (start !== this.inputFormat.length) {
230
+ this.emitEvent('igcInput', { detail: (_a = this.value) === null || _a === void 0 ? void 0 : _a.toString() });
231
+ }
232
+ this.updateComplete.then(() => this.input.setSelectionRange(end, end));
233
+ }
234
+ trySpinValue(datePart, delta, negative = false) {
235
+ if (!delta) {
236
+ delta = this.datePartDeltas[datePart] || 1;
237
+ }
238
+ const spinValue = negative ? -Math.abs(delta) : Math.abs(delta);
239
+ return this.spinValue(datePart, spinValue);
240
+ }
241
+ spinValue(datePart, delta) {
242
+ if (!this.value || !DateTimeUtil.isValidDate(this.value)) {
243
+ return new Date();
244
+ }
245
+ const newDate = new Date(this.value.getTime());
246
+ let formatPart, amPmFromMask;
247
+ switch (datePart) {
248
+ case DatePart.Date:
249
+ DateTimeUtil.spinDate(delta, newDate, this.spinLoop);
250
+ break;
251
+ case DatePart.Month:
252
+ DateTimeUtil.spinMonth(delta, newDate, this.spinLoop);
253
+ break;
254
+ case DatePart.Year:
255
+ DateTimeUtil.spinYear(delta, newDate);
256
+ break;
257
+ case DatePart.Hours:
258
+ DateTimeUtil.spinHours(delta, newDate, this.spinLoop);
259
+ break;
260
+ case DatePart.Minutes:
261
+ DateTimeUtil.spinMinutes(delta, newDate, this.spinLoop);
262
+ break;
263
+ case DatePart.Seconds:
264
+ DateTimeUtil.spinSeconds(delta, newDate, this.spinLoop);
265
+ break;
266
+ case DatePart.AmPm:
267
+ formatPart = this._inputDateParts.find((dp) => dp.type === DateParts.AmPm);
268
+ if (formatPart !== undefined) {
269
+ amPmFromMask = this.maskedValue.substring(formatPart.start, formatPart.end);
270
+ return DateTimeUtil.spinAmPm(newDate, this.value, amPmFromMask);
271
+ }
272
+ break;
273
+ }
274
+ return newDate;
275
+ }
276
+ onWheel(event) {
277
+ if (!this.hasFocus) {
278
+ return;
279
+ }
280
+ this.selection = this.inputSelection;
281
+ event.preventDefault();
282
+ event.stopPropagation();
283
+ if (event.deltaY > 0) {
284
+ this.stepDown();
285
+ }
286
+ else {
287
+ this.stepUp();
288
+ }
289
+ this.updateComplete.then(() => this.setSelectionRange(this.selection.start, this.selection.end));
290
+ }
291
+ updateDefaultMask() {
292
+ this._defaultMask = DateTimeUtil.getDefaultMask(this.locale);
293
+ }
294
+ setMask(val) {
295
+ var _a;
296
+ const oldFormat = (_a = this._inputDateParts) === null || _a === void 0 ? void 0 : _a.map((p) => p.format).join('');
297
+ this._inputDateParts = DateTimeUtil.parseDateTimeFormat(val);
298
+ val = this._inputDateParts.map((p) => p.format).join('');
299
+ this._defaultMask = val;
300
+ const newMask = (val || DateTimeUtil.DEFAULT_INPUT_FORMAT).replace(new RegExp(/(?=[^t])[\w]/, 'g'), '0');
301
+ this._mask =
302
+ newMask.indexOf('tt') !== -1
303
+ ? newMask.replace(new RegExp('tt', 'g'), 'LL')
304
+ : newMask;
305
+ this.parser.mask = this._mask;
306
+ this.parser.prompt = this.prompt;
307
+ if (!this.placeholder || oldFormat === this.placeholder) {
308
+ this.placeholder = val;
309
+ }
310
+ }
311
+ parseDate(val) {
312
+ if (!val) {
313
+ return null;
314
+ }
315
+ return DateTimeUtil.parseValueFromMask(val, this._inputDateParts, this.prompt);
316
+ }
317
+ getMaskedValue() {
318
+ let mask = this.emptyMask;
319
+ if (DateTimeUtil.isValidDate(this.value)) {
320
+ for (const part of this._inputDateParts) {
321
+ if (part.type === DateParts.Literal) {
322
+ continue;
323
+ }
324
+ const targetValue = DateTimeUtil.getPartValue(part, part.format.length, this.value);
325
+ mask = this.parser.replace(mask, targetValue, part.start, part.end).value;
326
+ }
327
+ return mask;
328
+ }
329
+ return this.maskedValue === '' ? mask : this.maskedValue;
330
+ }
331
+ isComplete() {
332
+ return this.maskedValue.indexOf(this.prompt) === -1;
333
+ }
334
+ updateValue() {
335
+ if (this.isComplete()) {
336
+ const parsedDate = this.parseDate(this.maskedValue);
337
+ if (DateTimeUtil.isValidDate(parsedDate)) {
338
+ this.value = parsedDate;
339
+ }
340
+ else {
341
+ this.value = null;
342
+ }
343
+ }
344
+ else {
345
+ this.value = null;
346
+ }
347
+ }
348
+ getNewPosition(value, direction = 0) {
349
+ const literals = this._inputDateParts.filter((p) => p.type === DateParts.Literal);
350
+ let cursorPos = this.selection.start;
351
+ if (!direction) {
352
+ do {
353
+ cursorPos = cursorPos > 0 ? --cursorPos : cursorPos;
354
+ } while (!literals.some((l) => l.end === cursorPos) && cursorPos > 0);
355
+ return cursorPos;
356
+ }
357
+ else {
358
+ do {
359
+ cursorPos++;
360
+ } while (!literals.some((l) => l.start === cursorPos) &&
361
+ cursorPos < value.length);
362
+ return cursorPos;
363
+ }
364
+ }
365
+ handleFocus() {
366
+ this.hasFocus = true;
367
+ this._oldValue = this.value;
368
+ this.updateMask();
369
+ this.emitEvent('igcFocus');
370
+ }
371
+ handleBlur() {
372
+ this.hasFocus = false;
373
+ if (!this.isComplete() && this.maskedValue !== this.emptyMask) {
374
+ const parse = this.parseDate(this.maskedValue);
375
+ if (parse) {
376
+ this.value = parse;
377
+ }
378
+ else {
379
+ this.value = null;
380
+ this.maskedValue = '';
381
+ }
382
+ }
383
+ else {
384
+ this.updateMask();
385
+ }
386
+ if (this._oldValue !== this.value) {
387
+ this.handleChange();
388
+ }
389
+ this.emitEvent('igcBlur');
390
+ }
391
+ handleKeydown(e) {
392
+ super.handleKeydown(e);
393
+ const key = e.key;
394
+ switch (key) {
395
+ case 'ArrowLeft':
396
+ case 'ArrowRight':
397
+ if (e.ctrlKey) {
398
+ e.preventDefault();
399
+ const value = e.target.value;
400
+ const dir = key === 'ArrowRight' ? 1 : 0;
401
+ const pos = this.getNewPosition(value, dir);
402
+ this.setSelectionRange(pos, pos);
403
+ }
404
+ break;
405
+ case 'ArrowUp':
406
+ case 'ArrowDown':
407
+ e.preventDefault();
408
+ key === 'ArrowUp' ? this.stepUp() : this.stepDown();
409
+ this.updateComplete.then(() => this.setSelectionRange(this.selection.start, this.selection.end));
410
+ break;
411
+ case ';':
412
+ if (e.ctrlKey) {
413
+ this.value = new Date();
414
+ }
415
+ break;
416
+ }
417
+ }
418
+ renderInput() {
419
+ return html `<div>
420
+ <input
421
+ type="text"
422
+ part=${partNameMap(this.resolvePartNames('input'))}
423
+ name=${ifDefined(this.name)}
424
+ .value=${live(this.maskedValue)}
425
+ .placeholder=${live(this.placeholder || this.emptyMask)}
426
+ ?readonly=${this.readonly}
427
+ ?disabled=${this.disabled}
428
+ ?required=${this.required}
429
+ @invalid="${this.handleInvalid}"
430
+ @blur=${this.handleBlur}
431
+ @focus=${this.handleFocus}
432
+ @input=${super.handleInput}
433
+ @keydown=${this.handleKeydown}
434
+ @cut=${this.handleCut}
435
+ @compositionstart=${this.handleCompositionStart}
436
+ @compositionend=${this.handleCompositionEnd}
437
+ @dragenter=${this.handleDragEnter}
438
+ @dragleave=${this.handleDragLeave}
439
+ @dragstart=${this.handleDragStart}
440
+ />
441
+ </div>`;
442
+ }
443
+ }
444
+ IgcDateTimeInputComponent.tagName = 'igc-date-time-input';
445
+ __decorate([
446
+ property({ attribute: 'input-format' })
447
+ ], IgcDateTimeInputComponent.prototype, "inputFormat", null);
448
+ __decorate([
449
+ property({
450
+ converter: {
451
+ fromAttribute: (value) => !value ? null : DateTimeUtil.parseIsoDate(value),
452
+ toAttribute: (value) => value.toISOString(),
453
+ },
454
+ }),
455
+ blazorTwoWayBind('igcChange', 'detail')
456
+ ], IgcDateTimeInputComponent.prototype, "value", null);
457
+ __decorate([
458
+ property({
459
+ attribute: 'min-value',
460
+ converter: {
461
+ fromAttribute: (value) => !value ? null : DateTimeUtil.parseIsoDate(value),
462
+ toAttribute: (value) => value.toISOString(),
463
+ },
464
+ })
465
+ ], IgcDateTimeInputComponent.prototype, "minValue", void 0);
466
+ __decorate([
467
+ property({
468
+ attribute: 'max-value',
469
+ converter: {
470
+ fromAttribute: (value) => !value ? null : DateTimeUtil.parseIsoDate(value),
471
+ toAttribute: (value) => value.toISOString(),
472
+ },
473
+ })
474
+ ], IgcDateTimeInputComponent.prototype, "maxValue", void 0);
475
+ __decorate([
476
+ property({ attribute: 'display-format' })
477
+ ], IgcDateTimeInputComponent.prototype, "displayFormat", void 0);
478
+ __decorate([
479
+ property({ attribute: false })
480
+ ], IgcDateTimeInputComponent.prototype, "spinDelta", void 0);
481
+ __decorate([
482
+ property({ type: Boolean, attribute: 'spin-loop' })
483
+ ], IgcDateTimeInputComponent.prototype, "spinLoop", void 0);
484
+ __decorate([
485
+ property()
486
+ ], IgcDateTimeInputComponent.prototype, "locale", void 0);
487
+ __decorate([
488
+ watch('locale', { waitUntilFirstUpdate: true })
489
+ ], IgcDateTimeInputComponent.prototype, "setDefaultMask", null);
490
+ __decorate([
491
+ watch('displayFormat', { waitUntilFirstUpdate: true })
492
+ ], IgcDateTimeInputComponent.prototype, "setDisplayFormat", null);
493
+ __decorate([
494
+ watch('prompt', { waitUntilFirstUpdate: true })
495
+ ], IgcDateTimeInputComponent.prototype, "promptChange", null);
496
+ __decorate([
497
+ watch('required', { waitUntilFirstUpdate: true }),
498
+ watch('disabled', { waitUntilFirstUpdate: true }),
499
+ watch('value', { waitUntilFirstUpdate: true })
500
+ ], IgcDateTimeInputComponent.prototype, "handleInvalidState", null);
501
+ __decorate([
502
+ watch('maxValue'),
503
+ watch('minValue')
504
+ ], IgcDateTimeInputComponent.prototype, "validate", null);
505
+ //# sourceMappingURL=date-time-input.js.map
@@ -0,0 +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 { property } from 'lit/decorators.js';\nimport { live } from 'lit/directives/live.js';\nimport {\n DatePartDeltas,\n DatePartInfo,\n DateParts,\n DatePart,\n DateTimeUtil,\n} from './date-util.js';\nimport { blazorTwoWayBind } from '../common/decorators/blazorTwoWayBind.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { IgcMaskInputBaseComponent } from '../mask-input/mask-input-base.js';\nimport { partNameMap } from '../common/util.js';\nimport { IgcInputEventMap } from '../input/input-base.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { AbstractConstructor } from '../common/mixins/constructor.js';\n\nexport interface IgcDateTimeInputEventMap\n extends Omit<IgcInputEventMap, '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 *\n * @fires igcInput - Emitted when the control input receives user input.\n * @fires igcChange - Emitted when the control's checked state changes.\n * @fires igcFocus - Emitted when the control gains focus.\n * @fires igcBlur - Emitted when the control loses focus.\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 IgcDateTimeInputEventMap,\n AbstractConstructor<IgcMaskInputBaseComponent>\n>(IgcMaskInputBaseComponent) {\n public static readonly tagName = 'igc-date-time-input';\n\n protected _defaultMask!: string;\n protected _value!: Date | null;\n\n private _oldValue: Date | null = null;\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 /** The date format to apply on the input. */\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 }\n }\n\n /** The value of the input. */\n @property({\n converter: {\n fromAttribute: (value: string) =>\n !value ? null : DateTimeUtil.parseIsoDate(value),\n toAttribute: (value: Date) => value.toISOString(),\n },\n })\n @blazorTwoWayBind('igcChange', 'detail')\n public get value(): Date | null {\n return this._value;\n }\n\n public set value(val: Date | null) {\n this._value = val\n ? DateTimeUtil.isValidDate(val)\n ? val\n : DateTimeUtil.parseIsoDate(val)\n : null;\n\n this.updateMask();\n this.validate();\n }\n\n /** The minimum value required for the input to remain valid. */\n @property({\n attribute: 'min-value',\n converter: {\n fromAttribute: (value: string) =>\n !value ? null : DateTimeUtil.parseIsoDate(value),\n toAttribute: (value: Date) => value.toISOString(),\n },\n })\n public minValue!: Date | null;\n\n /** The maximum value required for the input to remain valid. */\n @property({\n attribute: 'max-value',\n converter: {\n fromAttribute: (value: string) =>\n !value ? null : DateTimeUtil.parseIsoDate(value),\n toAttribute: (value: Date) => value.toISOString(),\n },\n })\n public maxValue!: Date | null;\n\n /**\n * Format to display the value in when not editing.\n * Defaults to the input format if not set.\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 /** Sets whether to loop over the currently spun segment. */\n @property({ type: Boolean, attribute: 'spin-loop' })\n public spinLoop = true;\n\n /** The locale settings used to display the value. */\n @property()\n public locale = 'en';\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.displayFormat) {\n if (this.value) {\n this.maskedValue = DateTimeUtil.formatDate(\n this.value!,\n this.locale,\n this.displayFormat,\n true\n );\n }\n }\n }\n\n @watch('prompt', { waitUntilFirstUpdate: true })\n protected promptChange(): void {\n if (!this.prompt) {\n this.prompt = this.parser.prompt;\n } else {\n this.parser.prompt = this.prompt;\n }\n }\n\n @watch('required', { waitUntilFirstUpdate: true })\n @watch('disabled', { waitUntilFirstUpdate: true })\n @watch('value', { waitUntilFirstUpdate: true })\n protected handleInvalidState(): void {\n this.updateComplete.then(\n () => (this.invalid = !this.input.checkValidity())\n );\n }\n\n @watch('maxValue')\n @watch('minValue')\n protected validate() {\n if (!this.value) {\n return null;\n }\n\n let errors = {};\n\n if (this.minValue || this.maxValue) {\n errors = DateTimeUtil.validateMinMax(\n this.value,\n this.minValue!,\n this.maxValue!,\n this.hasTimeParts,\n this.hasDateParts\n );\n\n if (Object.keys(errors).length > 0) {\n this.invalid = true;\n } else {\n this.invalid = false;\n }\n }\n\n return errors;\n }\n\n private 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 private 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;\n\n if (this.hasFocus) {\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 {\n 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\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 this.addEventListener('wheel', this.onWheel);\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 /** Checks for validity of the control and shows the browser message if it's invalid. */\n public reportValidity() {\n const state = this._value\n ? Object.keys(this.validate()!).length === 0\n : this.input.reportValidity();\n\n this.invalid = !state;\n return state;\n }\n\n /** Check for validity of the control */\n public checkValidity() {\n if (this.disabled) {\n return this.input.checkValidity();\n }\n\n if (!this._value) {\n return !this.required;\n }\n\n return (\n this.input.checkValidity() && Object.keys(this.validate()!).length === 0\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 newValue = this.trySpinValue(targetPart, delta);\n this.value = newValue;\n this.handleInput();\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 newValue = this.trySpinValue(targetPart, delta, true);\n this.value = newValue;\n this.handleInput();\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 updateMask() {\n if (this.hasFocus) {\n this.maskedValue = this.getMaskedValue();\n } else {\n if (!this.value || !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 protected handleChange() {\n this.emitEvent('igcChange', { detail: this.value });\n this.invalid = !this.checkValidity();\n }\n\n protected override handleInput() {\n this.emitEvent('igcInput', { detail: this.value?.toString() });\n }\n\n protected handleDragLeave() {\n if (!this.hasFocus) {\n this.updateMask();\n }\n }\n\n protected handleDragEnter() {\n if (!this.hasFocus) {\n this.maskedValue = this.getMaskedValue();\n }\n }\n\n protected updateInput(part: string, start: number, finish: number) {\n const { value, end } = this.parser.replace(\n this.maskedValue,\n part,\n start,\n finish\n );\n\n this.maskedValue = value;\n\n this.updateValue();\n this.requestUpdate();\n\n if (start !== this.inputFormat.length) {\n this.emitEvent('igcInput', { detail: this.value?.toString() });\n }\n\n this.updateComplete.then(() => this.input.setSelectionRange(end, end));\n }\n\n private trySpinValue(\n datePart: DatePart,\n delta?: number,\n negative = false\n ): Date {\n if (!delta) {\n // default to 1 if a delta is set to 0 or any other falsy value\n delta = this.datePartDeltas[datePart as keyof DatePartDeltas] || 1;\n }\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, amPmFromMask;\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 private onWheel(event: WheelEvent) {\n if (!this.hasFocus) {\n return;\n }\n\n this.selection = this.inputSelection;\n\n event.preventDefault();\n event.stopPropagation();\n\n if (event.deltaY > 0) {\n this.stepDown();\n } else {\n this.stepUp();\n }\n\n this.updateComplete.then(() =>\n this.setSelectionRange(this.selection.start, this.selection.end)\n );\n }\n\n private updateDefaultMask(): void {\n this._defaultMask = DateTimeUtil.getDefaultMask(this.locale);\n }\n\n private setMask(val: string): void {\n const oldFormat = this._inputDateParts?.map((p) => p.format).join('');\n this._inputDateParts = DateTimeUtil.parseDateTimeFormat(val);\n val = this._inputDateParts.map((p) => p.format).join('');\n\n this._defaultMask = val;\n\n const newMask = (val || DateTimeUtil.DEFAULT_INPUT_FORMAT).replace(\n new RegExp(/(?=[^t])[\\w]/, 'g'),\n '0'\n );\n\n this._mask =\n newMask.indexOf('tt') !== -1\n ? newMask.replace(new RegExp('tt', 'g'), 'LL')\n : newMask;\n\n this.parser.mask = this._mask;\n this.parser.prompt = this.prompt;\n\n if (!this.placeholder || oldFormat === this.placeholder) {\n this.placeholder = val;\n }\n }\n\n private parseDate(val: string) {\n if (!val) {\n return null;\n }\n\n return DateTimeUtil.parseValueFromMask(\n val,\n this._inputDateParts,\n this.prompt\n );\n }\n\n private getMaskedValue(): string {\n let mask = this.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 return this.maskedValue === '' ? mask : this.maskedValue;\n }\n\n private isComplete(): boolean {\n return this.maskedValue.indexOf(this.prompt) === -1;\n }\n\n private updateValue(): void {\n if (this.isComplete()) {\n const parsedDate = this.parseDate(this.maskedValue);\n if (DateTimeUtil.isValidDate(parsedDate)) {\n this.value = parsedDate;\n } else {\n this.value = null;\n }\n } else {\n this.value = null;\n }\n }\n\n private getNewPosition(value: string, direction = 0): number {\n const literals = this._inputDateParts.filter(\n (p) => p.type === DateParts.Literal\n );\n let cursorPos = this.selection.start;\n\n if (!direction) {\n do {\n cursorPos = cursorPos > 0 ? --cursorPos : cursorPos;\n } while (!literals.some((l) => l.end === cursorPos) && cursorPos > 0);\n return cursorPos;\n } else {\n do {\n cursorPos++;\n } while (\n !literals.some((l) => l.start === cursorPos) &&\n cursorPos < value.length\n );\n return cursorPos;\n }\n }\n\n protected override handleFocus() {\n this.hasFocus = true;\n this._oldValue = this.value;\n this.updateMask();\n this.emitEvent('igcFocus');\n }\n\n protected override handleBlur() {\n this.hasFocus = false;\n\n if (!this.isComplete() && this.maskedValue !== this.emptyMask) {\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 if (this._oldValue !== this.value) {\n this.handleChange();\n }\n\n this.emitEvent('igcBlur');\n }\n\n protected override handleKeydown(e: KeyboardEvent) {\n super.handleKeydown(e);\n\n const key = e.key;\n\n switch (key) {\n case 'ArrowLeft':\n case 'ArrowRight':\n if (e.ctrlKey) {\n e.preventDefault();\n const value = (e.target as HTMLInputElement).value;\n const dir = key === 'ArrowRight' ? 1 : 0;\n const pos = this.getNewPosition(value, dir);\n\n this.setSelectionRange(pos, pos);\n }\n break;\n case 'ArrowUp':\n case 'ArrowDown':\n e.preventDefault();\n key === 'ArrowUp' ? this.stepUp() : this.stepDown();\n\n this.updateComplete.then(() =>\n this.setSelectionRange(this.selection.start, this.selection.end)\n );\n break;\n case ';':\n if (e.ctrlKey) {\n this.value = new Date();\n }\n break;\n }\n }\n\n protected override renderInput() {\n return html`<div>\n <input\n type=\"text\"\n part=${partNameMap(this.resolvePartNames('input'))}\n name=${ifDefined(this.name)}\n .value=${live(this.maskedValue)}\n .placeholder=${live(this.placeholder || this.emptyMask)}\n ?readonly=${this.readonly}\n ?disabled=${this.disabled}\n ?required=${this.required}\n @invalid=\"${this.handleInvalid}\"\n @blur=${this.handleBlur}\n @focus=${this.handleFocus}\n @input=${super.handleInput}\n @keydown=${this.handleKeydown}\n @cut=${this.handleCut}\n @compositionstart=${this.handleCompositionStart}\n @compositionend=${this.handleCompositionEnd}\n @dragenter=${this.handleDragEnter}\n @dragleave=${this.handleDragLeave}\n @dragstart=${this.handleDragStart}\n />\n </div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-time-input': IgcDateTimeInputComponent;\n }\n}\n"]}
@@ -0,0 +1,89 @@
1
+ export declare const enum FormatDesc {
2
+ Numeric = "numeric",
3
+ TwoDigits = "2-digit"
4
+ }
5
+ export declare enum DateParts {
6
+ Day = "day",
7
+ Month = "month",
8
+ Year = "year",
9
+ Date = "date",
10
+ Hours = "hours",
11
+ Minutes = "minutes",
12
+ Seconds = "seconds",
13
+ AmPm = "amPm",
14
+ Literal = "literal"
15
+ }
16
+ export declare enum DatePart {
17
+ Month = "month",
18
+ Year = "year",
19
+ Date = "date",
20
+ Hours = "hours",
21
+ Minutes = "minutes",
22
+ Seconds = "seconds",
23
+ AmPm = "amPm"
24
+ }
25
+ /** @ignore */
26
+ export interface DatePartInfo {
27
+ type: DateParts;
28
+ start: number;
29
+ end: number;
30
+ format: string;
31
+ }
32
+ export interface DatePartDeltas {
33
+ date?: number;
34
+ month?: number;
35
+ year?: number;
36
+ hours?: number;
37
+ minutes?: number;
38
+ seconds?: number;
39
+ }
40
+ export declare abstract class DateTimeUtil {
41
+ static readonly DEFAULT_INPUT_FORMAT = "MM/dd/yyyy";
42
+ static readonly DEFAULT_TIME_INPUT_FORMAT = "hh:mm tt";
43
+ private static readonly SEPARATOR;
44
+ private static readonly DEFAULT_LOCALE;
45
+ private static _parser;
46
+ 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[];
49
+ static parseIsoDate(value: string): Date | null;
50
+ static isValidDate(value: any): value is Date;
51
+ static formatDate(value: Date, locale: string, format: string, noLeadingZero?: boolean): string;
52
+ static getPartValue(datePartInfo: DatePartInfo, partLength: number, _dateValue: Date | null): string;
53
+ static spinYear(delta: number, newDate: Date): Date;
54
+ static spinMonth(delta: number, newDate: Date, spinLoop: boolean): void;
55
+ static spinDate(delta: number, newDate: Date, spinLoop: boolean): void;
56
+ static spinHours(delta: number, newDate: Date, spinLoop: boolean): void;
57
+ static spinMinutes(delta: number, newDate: Date, spinLoop: boolean): void;
58
+ static spinSeconds(delta: number, newDate: Date, spinLoop: boolean): void;
59
+ static spinAmPm(newDate: Date, currentDate: Date, amPmFromMask: string): Date;
60
+ static greaterThanMaxValue(value: Date, maxValue: Date, includeTime?: boolean, includeDate?: boolean): boolean;
61
+ /**
62
+ * Determines whether the provided value is less than the provided min value.
63
+ *
64
+ * @param includeTime set to false if you want to exclude time portion of the two dates
65
+ * @param includeDate set to false if you want to exclude the date portion of the two dates
66
+ * @returns true if provided value is less than provided minValue
67
+ */
68
+ static lessThanMinValue(value: Date, minValue: Date, includeTime?: boolean, includeDate?: boolean): boolean;
69
+ /**
70
+ * Validates a value within a given min and max value range.
71
+ *
72
+ * @param value The value to validate
73
+ * @param minValue The lowest possible value that `value` can take
74
+ * @param maxValue The largest possible value that `value` can take
75
+ */
76
+ static validateMinMax(value: Date, minValue: Date | string, maxValue: Date | string, includeTime?: boolean, includeDate?: boolean): {};
77
+ private static setDisplayFormatOptions;
78
+ private static getMask;
79
+ private static addCurrentPart;
80
+ private static ensureLeadingZero;
81
+ private static determineDatePart;
82
+ private static getDefaultLocaleMask;
83
+ private static fillDatePartsPositions;
84
+ private static getCleanVal;
85
+ private static trimEmptyPlaceholders;
86
+ private static daysInMonth;
87
+ private static prependValue;
88
+ private static toTwelveHourFormat;
89
+ }