igniteui-webcomponents 4.3.1 → 4.5.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (464) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/animations/presets/fade/index.d.ts +2 -2
  3. package/animations/presets/fade/index.js +4 -6
  4. package/animations/presets/fade/index.js.map +1 -1
  5. package/animations/presets/grow/index.d.ts +2 -2
  6. package/animations/presets/grow/index.js +8 -10
  7. package/animations/presets/grow/index.js.map +1 -1
  8. package/animations/presets/index.d.ts +1 -0
  9. package/animations/presets/index.js +1 -0
  10. package/animations/presets/index.js.map +1 -1
  11. package/animations/presets/slide/index.d.ts +3 -0
  12. package/animations/presets/slide/index.js +16 -0
  13. package/animations/presets/slide/index.js.map +1 -0
  14. package/components/avatar/avatar.js +7 -7
  15. package/components/avatar/avatar.js.map +1 -1
  16. package/components/avatar/themes/{light/avatar.base.css.js → avatar.base.css.js} +2 -32
  17. package/components/avatar/themes/avatar.base.css.js.map +1 -0
  18. package/components/{nav-drawer/themes/dark/nav-drawer-item.base.css.js → avatar/themes/dark/avatar.bootstrap.css.js} +1 -1
  19. package/components/avatar/themes/dark/avatar.bootstrap.css.js.map +1 -0
  20. package/components/avatar/themes/dark/{avatar.base.bootstrap.css.js → avatar.fluent.css.js} +1 -1
  21. package/components/avatar/themes/dark/avatar.fluent.css.js.map +1 -0
  22. package/components/{nav-drawer/themes/dark/nav-drawer-item.indigo.css.js → avatar/themes/dark/avatar.indigo.css.js} +1 -1
  23. package/components/avatar/themes/dark/avatar.indigo.css.js.map +1 -0
  24. package/components/{nav-drawer/themes/dark/nav-drawer-item.fluent.css.js → avatar/themes/dark/avatar.material.css.js} +1 -1
  25. package/components/avatar/themes/dark/avatar.material.css.js.map +1 -0
  26. package/components/avatar/themes/light/avatar.bootstrap.css.js +17 -3
  27. package/components/avatar/themes/light/avatar.bootstrap.css.js.map +1 -1
  28. package/components/avatar/themes/light/avatar.fluent.css.js +27 -0
  29. package/components/avatar/themes/light/avatar.fluent.css.js.map +1 -0
  30. package/components/avatar/themes/light/avatar.indigo.css.js +27 -0
  31. package/components/avatar/themes/light/avatar.indigo.css.js.map +1 -0
  32. package/components/avatar/themes/light/avatar.material.css.js +27 -0
  33. package/components/avatar/themes/light/avatar.material.css.js.map +1 -0
  34. package/components/button/button-base.d.ts +14 -6
  35. package/components/button/button-base.js +51 -18
  36. package/components/button/button-base.js.map +1 -1
  37. package/components/button/button.d.ts +0 -3
  38. package/components/button/button.js +1 -4
  39. package/components/button/button.js.map +1 -1
  40. package/components/button/themes/button/light/button.base.css.js +4 -16
  41. package/components/button/themes/button/light/button.base.css.js.map +1 -1
  42. package/components/button/themes/button/light/button.bootstrap.css.js +64 -32
  43. package/components/button/themes/button/light/button.bootstrap.css.js.map +1 -1
  44. package/components/button/themes/button/light/button.fluent.css.js +75 -40
  45. package/components/button/themes/button/light/button.fluent.css.js.map +1 -1
  46. package/components/button/themes/button/light/button.indigo.css.js +86 -42
  47. package/components/button/themes/button/light/button.indigo.css.js.map +1 -1
  48. package/components/button/themes/button/light/button.material.css.js +88 -38
  49. package/components/button/themes/button/light/button.material.css.js.map +1 -1
  50. package/components/button/themes/icon-button/light/icon-button.base.css.js +2 -13
  51. package/components/button/themes/icon-button/light/icon-button.base.css.js.map +1 -1
  52. package/components/button/themes/icon-button/light/icon-button.bootstrap.css.js +12 -7
  53. package/components/button/themes/icon-button/light/icon-button.bootstrap.css.js.map +1 -1
  54. package/components/button/themes/icon-button/light/icon-button.fluent.css.js +4 -3
  55. package/components/button/themes/icon-button/light/icon-button.fluent.css.js.map +1 -1
  56. package/components/button/themes/icon-button/light/icon-button.indigo.css.js +6 -4
  57. package/components/button/themes/icon-button/light/icon-button.indigo.css.js.map +1 -1
  58. package/components/button/themes/icon-button/light/icon-button.material.css.js +7 -4
  59. package/components/button/themes/icon-button/light/icon-button.material.css.js.map +1 -1
  60. package/components/calendar/themes/bootstrap/calendar.bootstrap.css.js +3 -10
  61. package/components/calendar/themes/bootstrap/calendar.bootstrap.css.js.map +1 -1
  62. package/components/calendar/themes/bootstrap/days-view.bootstrap.css.js +2 -2
  63. package/components/calendar/themes/bootstrap/days-view.bootstrap.css.js.map +1 -1
  64. package/components/calendar/themes/bootstrap/year-month-view.bootstrap.css.js +2 -2
  65. package/components/calendar/themes/bootstrap/year-month-view.bootstrap.css.js.map +1 -1
  66. package/components/calendar/themes/calendar.base.css.js +14 -12
  67. package/components/calendar/themes/calendar.base.css.js.map +1 -1
  68. package/components/calendar/themes/fluent/calendar.fluent.css.js +18 -23
  69. package/components/calendar/themes/fluent/calendar.fluent.css.js.map +1 -1
  70. package/components/calendar/themes/fluent/days-view.fluent.css.js +7 -23
  71. package/components/calendar/themes/fluent/days-view.fluent.css.js.map +1 -1
  72. package/components/calendar/themes/indigo/calendar.indigo.css.js +3 -10
  73. package/components/calendar/themes/indigo/calendar.indigo.css.js.map +1 -1
  74. package/components/checkbox/checkbox-base.d.ts +8 -35
  75. package/components/checkbox/checkbox-base.js +28 -41
  76. package/components/checkbox/checkbox-base.js.map +1 -1
  77. package/components/checkbox/checkbox.d.ts +0 -1
  78. package/components/checkbox/checkbox.js +5 -16
  79. package/components/checkbox/checkbox.js.map +1 -1
  80. package/components/checkbox/switch.d.ts +0 -2
  81. package/components/checkbox/switch.js +4 -16
  82. package/components/checkbox/switch.js.map +1 -1
  83. package/components/checkbox/themes/light/checkbox.base.css.js +2 -1
  84. package/components/checkbox/themes/light/checkbox.base.css.js.map +1 -1
  85. package/components/checkbox/themes/light/checkbox.bootstrap.css.js +27 -10
  86. package/components/checkbox/themes/light/checkbox.bootstrap.css.js.map +1 -1
  87. package/components/checkbox/themes/light/checkbox.fluent.css.js +31 -15
  88. package/components/checkbox/themes/light/checkbox.fluent.css.js.map +1 -1
  89. package/components/checkbox/themes/light/checkbox.indigo.css.js +47 -21
  90. package/components/checkbox/themes/light/checkbox.indigo.css.js.map +1 -1
  91. package/components/checkbox/themes/light/checkbox.material.css.js +24 -12
  92. package/components/checkbox/themes/light/checkbox.material.css.js.map +1 -1
  93. package/components/checkbox/themes/light/switch.base.css.js +2 -1
  94. package/components/checkbox/themes/light/switch.base.css.js.map +1 -1
  95. package/components/checkbox/themes/light/switch.bootstrap.css.js +12 -4
  96. package/components/checkbox/themes/light/switch.bootstrap.css.js.map +1 -1
  97. package/components/checkbox/themes/light/switch.fluent.css.js +33 -15
  98. package/components/checkbox/themes/light/switch.fluent.css.js.map +1 -1
  99. package/components/checkbox/themes/light/switch.indigo.css.js +26 -11
  100. package/components/checkbox/themes/light/switch.indigo.css.js.map +1 -1
  101. package/components/checkbox/themes/light/switch.material.css.js +14 -7
  102. package/components/checkbox/themes/light/switch.material.css.js.map +1 -1
  103. package/components/chip/themes/chip.base.css.js +12 -40
  104. package/components/chip/themes/chip.base.css.js.map +1 -1
  105. package/components/chip/themes/chip.bootstrap.css.js +14 -40
  106. package/components/chip/themes/chip.bootstrap.css.js.map +1 -1
  107. package/components/chip/themes/chip.fluent.css.js +14 -40
  108. package/components/chip/themes/chip.fluent.css.js.map +1 -1
  109. package/components/chip/themes/chip.indigo.css.js +14 -40
  110. package/components/chip/themes/chip.indigo.css.js.map +1 -1
  111. package/components/chip/themes/chip.material.css.js +14 -40
  112. package/components/chip/themes/chip.material.css.js.map +1 -1
  113. package/components/combo/combo.d.ts +7 -32
  114. package/components/combo/combo.js +57 -49
  115. package/components/combo/combo.js.map +1 -1
  116. package/components/combo/controllers/selection.js +1 -3
  117. package/components/combo/controllers/selection.js.map +1 -1
  118. package/components/combo/themes/light/combo.base.css.js +5 -0
  119. package/components/combo/themes/light/combo.base.css.js.map +1 -1
  120. package/components/combo/themes/light/combo.bootstrap.css.js +27 -24
  121. package/components/combo/themes/light/combo.bootstrap.css.js.map +1 -1
  122. package/components/combo/themes/light/combo.fluent.css.js +27 -24
  123. package/components/combo/themes/light/combo.fluent.css.js.map +1 -1
  124. package/components/combo/themes/light/combo.indigo.css.js +26 -23
  125. package/components/combo/themes/light/combo.indigo.css.js.map +1 -1
  126. package/components/combo/themes/light/combo.material.css.js +32 -23
  127. package/components/combo/themes/light/combo.material.css.js.map +1 -1
  128. package/components/combo/themes/light/item/combo-item.base.css.js +0 -1
  129. package/components/combo/themes/light/item/combo-item.base.css.js.map +1 -1
  130. package/components/common/localization/validation-en.d.ts +10 -0
  131. package/components/common/localization/validation-en.js +10 -0
  132. package/components/common/localization/validation-en.js.map +1 -0
  133. package/components/common/mixins/form-associated-required.d.ts +16 -0
  134. package/components/common/mixins/form-associated-required.js +29 -0
  135. package/components/common/mixins/form-associated-required.js.map +1 -0
  136. package/components/common/mixins/form-associated.d.ts +92 -0
  137. package/components/common/mixins/form-associated.js +151 -0
  138. package/components/common/mixins/form-associated.js.map +1 -0
  139. package/components/common/mixins/sizable.d.ts +3 -0
  140. package/components/common/mixins/sizable.js +7 -0
  141. package/components/common/mixins/sizable.js.map +1 -1
  142. package/components/common/util.d.ts +38 -0
  143. package/components/common/util.js +34 -0
  144. package/components/common/util.js.map +1 -1
  145. package/components/common/validators.d.ts +45 -0
  146. package/components/common/validators.js +54 -0
  147. package/components/common/validators.js.map +1 -0
  148. package/components/date-time-input/date-time-input.d.ts +30 -11
  149. package/components/date-time-input/date-time-input.js +147 -135
  150. package/components/date-time-input/date-time-input.js.map +1 -1
  151. package/components/date-time-input/date-util.d.ts +1 -0
  152. package/components/date-time-input/date-util.js +6 -3
  153. package/components/date-time-input/date-util.js.map +1 -1
  154. package/components/dialog/dialog.js +1 -1
  155. package/components/dialog/dialog.js.map +1 -1
  156. package/components/dialog/themes/light/dialog.base.css.js +1 -1
  157. package/components/dialog/themes/light/dialog.base.css.js.map +1 -1
  158. package/components/dropdown/dropdown-group.js +0 -2
  159. package/components/dropdown/dropdown-group.js.map +1 -1
  160. package/components/dropdown/dropdown-item.js +2 -6
  161. package/components/dropdown/dropdown-item.js.map +1 -1
  162. package/components/dropdown/dropdown.d.ts +0 -1
  163. package/components/dropdown/dropdown.js +0 -6
  164. package/components/dropdown/dropdown.js.map +1 -1
  165. package/components/dropdown/themes/light/dropdown.base.css.js +0 -12
  166. package/components/dropdown/themes/light/dropdown.base.css.js.map +1 -1
  167. package/components/dropdown/themes/light/dropdown.bootstrap.css.js +1 -1
  168. package/components/dropdown/themes/light/dropdown.bootstrap.css.js.map +1 -1
  169. package/components/dropdown/themes/light/dropdown.fluent.css.js +1 -1
  170. package/components/dropdown/themes/light/dropdown.fluent.css.js.map +1 -1
  171. package/components/dropdown/themes/light/dropdown.indigo.css.js +1 -1
  172. package/components/dropdown/themes/light/dropdown.indigo.css.js.map +1 -1
  173. package/components/dropdown/themes/light/dropdown.material.css.js +1 -1
  174. package/components/dropdown/themes/light/dropdown.material.css.js.map +1 -1
  175. package/components/dropdown/themes/light/group/dropdown-group.bootstrap.css.js +1 -1
  176. package/components/dropdown/themes/light/group/dropdown-group.bootstrap.css.js.map +1 -1
  177. package/components/dropdown/themes/light/group/dropdown-group.fluent.css.js +1 -1
  178. package/components/dropdown/themes/light/group/dropdown-group.fluent.css.js.map +1 -1
  179. package/components/dropdown/themes/light/group/dropdown-group.indigo.css.js +1 -1
  180. package/components/dropdown/themes/light/group/dropdown-group.indigo.css.js.map +1 -1
  181. package/components/dropdown/themes/light/group/dropdown-group.material.css.js +1 -1
  182. package/components/dropdown/themes/light/group/dropdown-group.material.css.js.map +1 -1
  183. package/components/dropdown/themes/light/header/dropdown-header.bootstrap.css.js +1 -1
  184. package/components/dropdown/themes/light/header/dropdown-header.bootstrap.css.js.map +1 -1
  185. package/components/dropdown/themes/light/header/dropdown-header.fluent.css.js +1 -1
  186. package/components/dropdown/themes/light/header/dropdown-header.fluent.css.js.map +1 -1
  187. package/components/dropdown/themes/light/header/dropdown-header.indigo.css.js +1 -1
  188. package/components/dropdown/themes/light/header/dropdown-header.indigo.css.js.map +1 -1
  189. package/components/dropdown/themes/light/header/dropdown-header.material.css.js +1 -1
  190. package/components/dropdown/themes/light/header/dropdown-header.material.css.js.map +1 -1
  191. package/components/dropdown/themes/light/item/dropdown-item.bootstrap.css.js +1 -1
  192. package/components/dropdown/themes/light/item/dropdown-item.bootstrap.css.js.map +1 -1
  193. package/components/dropdown/themes/light/item/dropdown-item.fluent.css.js +1 -1
  194. package/components/dropdown/themes/light/item/dropdown-item.fluent.css.js.map +1 -1
  195. package/components/dropdown/themes/light/item/dropdown-item.indigo.css.js +1 -1
  196. package/components/dropdown/themes/light/item/dropdown-item.indigo.css.js.map +1 -1
  197. package/components/dropdown/themes/light/item/dropdown-item.material.css.js +1 -1
  198. package/components/dropdown/themes/light/item/dropdown-item.material.css.js.map +1 -1
  199. package/components/expansion-panel/expansion-panel.js +1 -1
  200. package/components/expansion-panel/expansion-panel.js.map +1 -1
  201. package/components/expansion-panel/themes/light/expansion-panel.base.css.js +1 -2
  202. package/components/expansion-panel/themes/light/expansion-panel.base.css.js.map +1 -1
  203. package/components/form/form.d.ts +3 -0
  204. package/components/form/form.js.map +1 -1
  205. package/components/icon/icon.base.css.js +6 -8
  206. package/components/icon/icon.base.css.js.map +1 -1
  207. package/components/icon/light/icon.bootstrap.css.js +6 -1
  208. package/components/icon/light/icon.bootstrap.css.js.map +1 -1
  209. package/components/icon/light/icon.fluent.css.js +6 -1
  210. package/components/icon/light/icon.fluent.css.js.map +1 -1
  211. package/components/icon/light/icon.indigo.css.js +6 -1
  212. package/components/icon/light/icon.indigo.css.js.map +1 -1
  213. package/components/icon/light/icon.material.css.js +6 -1
  214. package/components/icon/light/icon.material.css.js.map +1 -1
  215. package/components/input/input-base.d.ts +10 -20
  216. package/components/input/input-base.js +23 -22
  217. package/components/input/input-base.js.map +1 -1
  218. package/components/input/input.d.ts +24 -15
  219. package/components/input/input.js +106 -48
  220. package/components/input/input.js.map +1 -1
  221. package/components/input/themes/light/input.base.css.js +0 -15
  222. package/components/input/themes/light/input.base.css.js.map +1 -1
  223. package/components/input/themes/light/input.bootstrap.css.js +7 -17
  224. package/components/input/themes/light/input.bootstrap.css.js.map +1 -1
  225. package/components/input/themes/light/input.fluent.css.js +6 -19
  226. package/components/input/themes/light/input.fluent.css.js.map +1 -1
  227. package/components/input/themes/light/input.indigo.css.js +16 -1
  228. package/components/input/themes/light/input.indigo.css.js.map +1 -1
  229. package/components/input/themes/light/input.material.css.js +30 -11
  230. package/components/input/themes/light/input.material.css.js.map +1 -1
  231. package/components/list/themes/light/list-header.base.css.js +0 -32
  232. package/components/list/themes/light/list-header.base.css.js.map +1 -1
  233. package/components/list/themes/light/list-item.base.css.js +4 -33
  234. package/components/list/themes/light/list-item.base.css.js.map +1 -1
  235. package/components/list/themes/light/list-item.bootstrap.css.js +1 -1
  236. package/components/list/themes/light/list-item.bootstrap.css.js.map +1 -1
  237. package/components/list/themes/light/list-item.fluent.css.js +1 -1
  238. package/components/list/themes/light/list-item.fluent.css.js.map +1 -1
  239. package/components/list/themes/light/list-item.indigo.css.js +1 -1
  240. package/components/list/themes/light/list-item.indigo.css.js.map +1 -1
  241. package/components/list/themes/light/list.base.css.js +1 -13
  242. package/components/list/themes/light/list.base.css.js.map +1 -1
  243. package/components/list/themes/light/list.bootstrap.css.js +1 -1
  244. package/components/list/themes/light/list.bootstrap.css.js.map +1 -1
  245. package/components/mask-input/mask-input-base.d.ts +2 -9
  246. package/components/mask-input/mask-input-base.js +7 -12
  247. package/components/mask-input/mask-input-base.js.map +1 -1
  248. package/components/mask-input/mask-input.d.ts +5 -6
  249. package/components/mask-input/mask-input.js +42 -51
  250. package/components/mask-input/mask-input.js.map +1 -1
  251. package/components/mask-input/mask-parser.js +1 -0
  252. package/components/mask-input/mask-parser.js.map +1 -1
  253. package/components/nav-drawer/nav-drawer-header-item.js +6 -4
  254. package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
  255. package/components/nav-drawer/nav-drawer-item.js +6 -4
  256. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  257. package/components/nav-drawer/nav-drawer.js +5 -2
  258. package/components/nav-drawer/nav-drawer.js.map +1 -1
  259. package/components/nav-drawer/themes/dark/nav-drawer.bootstrap.css.js +3 -0
  260. package/components/nav-drawer/themes/dark/{nav-drawer-item.base.css.js.map → nav-drawer.bootstrap.css.js.map} +1 -1
  261. package/components/nav-drawer/themes/dark/nav-drawer.fluent.css.js +3 -0
  262. package/components/nav-drawer/themes/dark/nav-drawer.fluent.css.js.map +1 -0
  263. package/components/nav-drawer/themes/dark/nav-drawer.material.css.js +3 -0
  264. package/components/nav-drawer/themes/dark/nav-drawer.material.css.js.map +1 -0
  265. package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.base.css.js +7 -0
  266. package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.base.css.js.map +1 -0
  267. package/components/nav-drawer/themes/light/{fluent/nav-drawer-header-item.fluent.css.js → header-item/nav-drawer-header-item.bootstrap.css.js} +2 -1
  268. package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.bootstrap.css.js.map +1 -0
  269. package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.fluent.css.d.ts +1 -0
  270. package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.fluent.css.js +14 -0
  271. package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.fluent.css.js.map +1 -0
  272. package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.indigo.css.d.ts +1 -0
  273. package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.indigo.css.js +14 -0
  274. package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.indigo.css.js.map +1 -0
  275. package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.material.css.d.ts +1 -0
  276. package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.material.css.js +14 -0
  277. package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.material.css.js.map +1 -0
  278. package/components/nav-drawer/themes/light/item/nav-drawer-item.base.css.d.ts +1 -0
  279. package/components/nav-drawer/themes/light/item/nav-drawer-item.base.css.js +65 -0
  280. package/components/nav-drawer/themes/light/item/nav-drawer-item.base.css.js.map +1 -0
  281. package/components/nav-drawer/themes/light/item/nav-drawer-item.bootstrap.css.d.ts +1 -0
  282. package/components/nav-drawer/themes/light/item/nav-drawer-item.bootstrap.css.js +54 -0
  283. package/components/nav-drawer/themes/light/item/nav-drawer-item.bootstrap.css.js.map +1 -0
  284. package/components/nav-drawer/themes/light/item/nav-drawer-item.fluent.css.d.ts +1 -0
  285. package/components/nav-drawer/themes/light/item/nav-drawer-item.fluent.css.js +54 -0
  286. package/components/nav-drawer/themes/light/item/nav-drawer-item.fluent.css.js.map +1 -0
  287. package/components/nav-drawer/themes/light/item/nav-drawer-item.indigo.css.d.ts +1 -0
  288. package/components/nav-drawer/themes/light/{indigo → item}/nav-drawer-item.indigo.css.js +32 -11
  289. package/components/nav-drawer/themes/light/item/nav-drawer-item.indigo.css.js.map +1 -0
  290. package/components/nav-drawer/themes/light/item/nav-drawer-item.material.css.d.ts +1 -0
  291. package/components/nav-drawer/themes/light/item/nav-drawer-item.material.css.js +54 -0
  292. package/components/nav-drawer/themes/light/item/nav-drawer-item.material.css.js.map +1 -0
  293. package/components/nav-drawer/themes/light/nav-drawer.base.css.js +11 -19
  294. package/components/nav-drawer/themes/light/nav-drawer.base.css.js.map +1 -1
  295. package/components/nav-drawer/themes/light/nav-drawer.bootstrap.css.d.ts +1 -0
  296. package/components/nav-drawer/themes/light/nav-drawer.bootstrap.css.js +60 -0
  297. package/components/nav-drawer/themes/light/nav-drawer.bootstrap.css.js.map +1 -0
  298. package/components/nav-drawer/themes/light/nav-drawer.fluent.css.d.ts +1 -0
  299. package/components/nav-drawer/themes/light/nav-drawer.fluent.css.js +60 -0
  300. package/components/nav-drawer/themes/light/nav-drawer.fluent.css.js.map +1 -0
  301. package/components/nav-drawer/themes/light/nav-drawer.indigo.css.d.ts +1 -0
  302. package/components/nav-drawer/themes/light/{indigo/nav-drawer.indigo.css.js → nav-drawer.indigo.css.js} +35 -4
  303. package/components/nav-drawer/themes/light/nav-drawer.indigo.css.js.map +1 -0
  304. package/components/nav-drawer/themes/light/nav-drawer.material.css.d.ts +1 -0
  305. package/components/nav-drawer/themes/light/nav-drawer.material.css.js +60 -0
  306. package/components/nav-drawer/themes/light/nav-drawer.material.css.js.map +1 -0
  307. package/components/navbar/themes/light/navbar.bootstrap.css.js +0 -32
  308. package/components/navbar/themes/light/navbar.bootstrap.css.js.map +1 -1
  309. package/components/navbar/themes/light/navbar.fluent.css.js +0 -32
  310. package/components/navbar/themes/light/navbar.fluent.css.js.map +1 -1
  311. package/components/navbar/themes/light/navbar.indigo.css.js +0 -32
  312. package/components/navbar/themes/light/navbar.indigo.css.js.map +1 -1
  313. package/components/navbar/themes/light/navbar.material.css.js +0 -32
  314. package/components/navbar/themes/light/navbar.material.css.js.map +1 -1
  315. package/components/navbar/themes/navbar.base.css.js +4 -10
  316. package/components/navbar/themes/navbar.base.css.js.map +1 -1
  317. package/components/progress/themes/linear/linear.progress.base.css.js +1 -0
  318. package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
  319. package/components/progress/themes/linear/linear.progress.indigo.css.js +0 -32
  320. package/components/progress/themes/linear/linear.progress.indigo.css.js.map +1 -1
  321. package/components/radio/radio.d.ts +13 -37
  322. package/components/radio/radio.js +135 -97
  323. package/components/radio/radio.js.map +1 -1
  324. package/components/radio/themes/light/radio.bootstrap.css.js +8 -36
  325. package/components/radio/themes/light/radio.bootstrap.css.js.map +1 -1
  326. package/components/radio/themes/light/radio.fluent.css.js +0 -32
  327. package/components/radio/themes/light/radio.fluent.css.js.map +1 -1
  328. package/components/radio/themes/light/radio.indigo.css.js +11 -37
  329. package/components/radio/themes/light/radio.indigo.css.js.map +1 -1
  330. package/components/radio/themes/light/radio.material.css.js +1 -33
  331. package/components/radio/themes/light/radio.material.css.js.map +1 -1
  332. package/components/radio-group/radio-group.d.ts +0 -4
  333. package/components/radio-group/radio-group.js +3 -54
  334. package/components/radio-group/radio-group.js.map +1 -1
  335. package/components/rating/dark/rating.fluent.css.d.ts +1 -0
  336. package/components/rating/dark/rating.fluent.css.js +3 -0
  337. package/components/rating/dark/rating.fluent.css.js.map +1 -0
  338. package/components/rating/rating-symbol.base.css.js +1 -1
  339. package/components/rating/rating-symbol.base.css.js.map +1 -1
  340. package/components/rating/rating.base.css.js +8 -16
  341. package/components/rating/rating.base.css.js.map +1 -1
  342. package/components/rating/rating.d.ts +10 -11
  343. package/components/rating/rating.fluent.css.js +13 -7
  344. package/components/rating/rating.fluent.css.js.map +1 -1
  345. package/components/rating/rating.js +19 -15
  346. package/components/rating/rating.js.map +1 -1
  347. package/components/select/select-item.d.ts +0 -2
  348. package/components/select/select-item.js +0 -3
  349. package/components/select/select-item.js.map +1 -1
  350. package/components/select/select.d.ts +7 -34
  351. package/components/select/select.js +27 -37
  352. package/components/select/select.js.map +1 -1
  353. package/components/select/themes/light/select.base.css.js +1 -12
  354. package/components/select/themes/light/select.base.css.js.map +1 -1
  355. package/components/select/themes/light/select.bootstrap.css.js +5 -37
  356. package/components/select/themes/light/select.bootstrap.css.js.map +1 -1
  357. package/components/select/themes/light/select.fluent.css.js +5 -37
  358. package/components/select/themes/light/select.fluent.css.js.map +1 -1
  359. package/components/select/themes/light/select.indigo.css.js +4 -36
  360. package/components/select/themes/light/select.indigo.css.js.map +1 -1
  361. package/components/select/themes/light/select.material.css.js +14 -46
  362. package/components/select/themes/light/select.material.css.js.map +1 -1
  363. package/components/slider/slider.d.ts +4 -12
  364. package/components/slider/slider.js +16 -25
  365. package/components/slider/slider.js.map +1 -1
  366. package/components/slider/themes/light/slider.base.css.js +17 -8
  367. package/components/slider/themes/light/slider.base.css.js.map +1 -1
  368. package/components/slider/themes/light/slider.fluent.css.js +6 -3
  369. package/components/slider/themes/light/slider.fluent.css.js.map +1 -1
  370. package/components/slider/themes/light/slider.indigo.css.js +4 -1
  371. package/components/slider/themes/light/slider.indigo.css.js.map +1 -1
  372. package/components/snackbar/snackbar.js +1 -1
  373. package/components/snackbar/snackbar.js.map +1 -1
  374. package/components/stepper/animations.d.ts +2 -0
  375. package/components/stepper/animations.js +22 -0
  376. package/components/stepper/animations.js.map +1 -0
  377. package/components/stepper/step.d.ts +17 -8
  378. package/components/stepper/step.js +29 -0
  379. package/components/stepper/step.js.map +1 -1
  380. package/components/stepper/stepper.d.ts +19 -3
  381. package/components/stepper/stepper.js +58 -7
  382. package/components/stepper/stepper.js.map +1 -1
  383. package/components/stepper/themes/step/light/step.base.css.js +44 -165
  384. package/components/stepper/themes/step/light/step.base.css.js.map +1 -1
  385. package/components/stepper/themes/step/light/step.bootstrap.css.js +116 -19
  386. package/components/stepper/themes/step/light/step.bootstrap.css.js.map +1 -1
  387. package/components/stepper/themes/step/light/step.fluent.css.js +112 -12
  388. package/components/stepper/themes/step/light/step.fluent.css.js.map +1 -1
  389. package/components/stepper/themes/step/light/step.indigo.css.js +112 -25
  390. package/components/stepper/themes/step/light/step.indigo.css.js.map +1 -1
  391. package/components/stepper/themes/step/light/step.material.css.js +112 -4
  392. package/components/stepper/themes/step/light/step.material.css.js.map +1 -1
  393. package/components/stepper/themes/stepper/stepper.base.css.js +2 -0
  394. package/components/stepper/themes/stepper/stepper.base.css.js.map +1 -1
  395. package/components/tabs/themes/light/tab.base.css.js +3 -4
  396. package/components/tabs/themes/light/tab.base.css.js.map +1 -1
  397. package/components/tabs/themes/light/tabs.base.css.js +1 -0
  398. package/components/tabs/themes/light/tabs.base.css.js.map +1 -1
  399. package/components/toast/toast.js +1 -1
  400. package/components/toast/toast.js.map +1 -1
  401. package/components/tree/themes/light/tree-item.base.css.js +5 -19
  402. package/components/tree/themes/light/tree-item.base.css.js.map +1 -1
  403. package/components/tree/themes/light/tree-item.bootstrap.css.js +60 -3
  404. package/components/tree/themes/light/tree-item.bootstrap.css.js.map +1 -1
  405. package/components/tree/themes/light/tree-item.fluent.css.js +58 -1
  406. package/components/tree/themes/light/tree-item.fluent.css.js.map +1 -1
  407. package/components/tree/themes/light/tree-item.indigo.css.js +58 -1
  408. package/components/tree/themes/light/tree-item.indigo.css.js.map +1 -1
  409. package/components/tree/themes/light/tree-item.material.css.d.ts +1 -0
  410. package/components/tree/themes/light/tree-item.material.css.js +58 -0
  411. package/components/tree/themes/light/tree-item.material.css.js.map +1 -0
  412. package/components/tree/themes/light/tree.base.css.js +0 -12
  413. package/components/tree/themes/light/tree.base.css.js.map +1 -1
  414. package/components/tree/tree-item.js +10 -17
  415. package/components/tree/tree-item.js.map +1 -1
  416. package/components/tree/tree.d.ts +0 -6
  417. package/components/tree/tree.js +0 -4
  418. package/components/tree/tree.js.map +1 -1
  419. package/components/tree/tree.navigation.js +3 -2
  420. package/components/tree/tree.navigation.js.map +1 -1
  421. package/custom-elements.json +854 -553
  422. package/package.json +4 -4
  423. package/themes/dark/bootstrap.css +277 -66
  424. package/themes/dark/fluent.css +293 -67
  425. package/themes/dark/indigo.css +498 -15
  426. package/themes/dark/material.css +246 -58
  427. package/themes/light/bootstrap.css +5 -2
  428. package/themes/light/fluent.css +5 -2
  429. package/themes/light/indigo.css +229 -2
  430. package/themes/light/material.css +5 -2
  431. package/vscode-html-custom-data.json +240 -287
  432. package/components/avatar/themes/dark/avatar.base.bootstrap.css.js.map +0 -1
  433. package/components/avatar/themes/light/avatar.base.css.js.map +0 -1
  434. package/components/common/types.d.ts +0 -1
  435. package/components/common/types.js +0 -2
  436. package/components/common/types.js.map +0 -1
  437. package/components/nav-drawer/themes/dark/nav-drawer-item.bootstrap.css.js +0 -3
  438. package/components/nav-drawer/themes/dark/nav-drawer-item.bootstrap.css.js.map +0 -1
  439. package/components/nav-drawer/themes/dark/nav-drawer-item.fluent.css.js.map +0 -1
  440. package/components/nav-drawer/themes/dark/nav-drawer-item.indigo.css.js.map +0 -1
  441. package/components/nav-drawer/themes/light/fluent/nav-drawer-header-item.fluent.css.js.map +0 -1
  442. package/components/nav-drawer/themes/light/fluent/nav-drawer-item.fluent.css.js +0 -17
  443. package/components/nav-drawer/themes/light/fluent/nav-drawer-item.fluent.css.js.map +0 -1
  444. package/components/nav-drawer/themes/light/indigo/nav-drawer-header-item.indigo.css.js +0 -5
  445. package/components/nav-drawer/themes/light/indigo/nav-drawer-header-item.indigo.css.js.map +0 -1
  446. package/components/nav-drawer/themes/light/indigo/nav-drawer-item.indigo.css.js.map +0 -1
  447. package/components/nav-drawer/themes/light/indigo/nav-drawer.indigo.css.js.map +0 -1
  448. package/components/nav-drawer/themes/light/nav-drawer-header-item.base.css.js +0 -49
  449. package/components/nav-drawer/themes/light/nav-drawer-header-item.base.css.js.map +0 -1
  450. package/components/nav-drawer/themes/light/nav-drawer-item.base.css.js +0 -137
  451. package/components/nav-drawer/themes/light/nav-drawer-item.base.css.js.map +0 -1
  452. /package/components/avatar/themes/{light/avatar.base.css.d.ts → avatar.base.css.d.ts} +0 -0
  453. /package/components/avatar/themes/dark/{avatar.base.bootstrap.css.d.ts → avatar.bootstrap.css.d.ts} +0 -0
  454. /package/components/{nav-drawer/themes/dark/nav-drawer-item.base.css.d.ts → avatar/themes/dark/avatar.fluent.css.d.ts} +0 -0
  455. /package/components/{nav-drawer/themes/dark/nav-drawer-item.bootstrap.css.d.ts → avatar/themes/dark/avatar.indigo.css.d.ts} +0 -0
  456. /package/components/{nav-drawer/themes/dark/nav-drawer-item.fluent.css.d.ts → avatar/themes/dark/avatar.material.css.d.ts} +0 -0
  457. /package/components/{nav-drawer/themes/dark/nav-drawer-item.indigo.css.d.ts → avatar/themes/light/avatar.fluent.css.d.ts} +0 -0
  458. /package/components/{nav-drawer/themes/light/fluent/nav-drawer-header-item.fluent.css.d.ts → avatar/themes/light/avatar.indigo.css.d.ts} +0 -0
  459. /package/components/{nav-drawer/themes/light/fluent/nav-drawer-item.fluent.css.d.ts → avatar/themes/light/avatar.material.css.d.ts} +0 -0
  460. /package/components/nav-drawer/themes/{light/indigo/nav-drawer-header-item.indigo.css.d.ts → dark/nav-drawer.bootstrap.css.d.ts} +0 -0
  461. /package/components/nav-drawer/themes/{light/indigo/nav-drawer-item.indigo.css.d.ts → dark/nav-drawer.fluent.css.d.ts} +0 -0
  462. /package/components/nav-drawer/themes/{light/indigo/nav-drawer.indigo.css.d.ts → dark/nav-drawer.material.css.d.ts} +0 -0
  463. /package/components/nav-drawer/themes/light/{nav-drawer-header-item.base.css.d.ts → header-item/nav-drawer-header-item.base.css.d.ts} +0 -0
  464. /package/components/nav-drawer/themes/light/{nav-drawer-item.base.css.d.ts → header-item/nav-drawer-header-item.bootstrap.css.d.ts} +0 -0
@@ -12,9 +12,57 @@ import { blazorTwoWayBind } from '../common/decorators/blazorTwoWayBind.js';
12
12
  import { watch } from '../common/decorators/watch.js';
13
13
  import { ifDefined } from 'lit/directives/if-defined.js';
14
14
  import { IgcMaskInputBaseComponent, } from '../mask-input/mask-input-base.js';
15
- import { partNameMap } from '../common/util.js';
15
+ import { format, partNameMap } from '../common/util.js';
16
16
  import { EventEmitterMixin } from '../common/mixins/event-emitter.js';
17
+ import messages from '../common/localization/validation-en.js';
18
+ const converter = {
19
+ fromAttribute: (value) => !value ? null : DateTimeUtil.parseIsoDate(value),
20
+ toAttribute: (value) => value.toISOString(),
21
+ };
17
22
  class IgcDateTimeInputComponent extends EventEmitterMixin(IgcMaskInputBaseComponent) {
23
+ constructor() {
24
+ super(...arguments);
25
+ this.validators = [
26
+ {
27
+ key: 'valueMissing',
28
+ message: messages.required,
29
+ isValid: () => (this.required ? !!this.value : true),
30
+ },
31
+ {
32
+ key: 'rangeUnderflow',
33
+ message: () => format(messages.min, `${this.min}`),
34
+ isValid: () => this.min
35
+ ? !DateTimeUtil.lessThanMinValue(this.value || new Date(), this.min, this.hasTimeParts, this.hasDateParts)
36
+ : true,
37
+ },
38
+ {
39
+ key: 'rangeOverflow',
40
+ message: () => format(messages.max, `${this.max}`),
41
+ isValid: () => this.max
42
+ ? !DateTimeUtil.greaterThanMaxValue(this.value || new Date(), this.max, this.hasTimeParts, this.hasDateParts)
43
+ : true,
44
+ },
45
+ ];
46
+ this._value = null;
47
+ this._oldValue = null;
48
+ this._datePartDeltas = {
49
+ date: 1,
50
+ month: 1,
51
+ year: 1,
52
+ hours: 1,
53
+ minutes: 1,
54
+ seconds: 1,
55
+ };
56
+ this.spinLoop = true;
57
+ this.locale = 'en';
58
+ this.keyMap = new Map(Object.entries({
59
+ ArrowLeft: this.handleHorizontalArrows,
60
+ ArrowRight: this.handleHorizontalArrows,
61
+ ArrowUp: this.handleVerticalArrows,
62
+ ArrowDown: this.handleVerticalArrows,
63
+ ';': this.handleSemicolon,
64
+ }));
65
+ }
18
66
  get inputFormat() {
19
67
  return this._inputFormat || this._defaultMask;
20
68
  }
@@ -34,7 +82,26 @@ class IgcDateTimeInputComponent extends EventEmitterMixin(IgcMaskInputBaseCompon
34
82
  : DateTimeUtil.parseIsoDate(val)
35
83
  : null;
36
84
  this.updateMask();
37
- this.validate();
85
+ this.updateFormValue();
86
+ this.updateValidity();
87
+ this.setInvalidState();
88
+ }
89
+ updateFormValue() {
90
+ this._value
91
+ ? this.setFormValue(this._value.toISOString())
92
+ : this.setFormValue(null);
93
+ }
94
+ get minValue() {
95
+ return this.min;
96
+ }
97
+ set minValue(value) {
98
+ this.min = value;
99
+ }
100
+ get maxValue() {
101
+ return this.max;
102
+ }
103
+ set maxValue(value) {
104
+ this.max = value;
38
105
  }
39
106
  setDefaultMask() {
40
107
  if (!this._inputFormat) {
@@ -60,24 +127,8 @@ class IgcDateTimeInputComponent extends EventEmitterMixin(IgcMaskInputBaseCompon
60
127
  this.parser.prompt = this.prompt;
61
128
  }
62
129
  }
63
- handleInvalidState() {
64
- this.updateComplete.then(() => (this.invalid = !this.input.checkValidity()));
65
- }
66
- validate() {
67
- if (!this.value) {
68
- return null;
69
- }
70
- let errors = {};
71
- if (this.minValue || this.maxValue) {
72
- errors = DateTimeUtil.validateMinMax(this.value, this.minValue, this.maxValue, this.hasTimeParts, this.hasDateParts);
73
- if (Object.keys(errors).length > 0) {
74
- this.invalid = true;
75
- }
76
- else {
77
- this.invalid = false;
78
- }
79
- }
80
- return errors;
130
+ constraintChange() {
131
+ this.updateValidity();
81
132
  }
82
133
  get hasDateParts() {
83
134
  const parts = this._inputDateParts ||
@@ -96,7 +147,7 @@ class IgcDateTimeInputComponent extends EventEmitterMixin(IgcMaskInputBaseCompon
96
147
  get targetDatePart() {
97
148
  var _a;
98
149
  let result;
99
- if (this.hasFocus) {
150
+ if (this.focused) {
100
151
  const partType = (_a = this._inputDateParts.find((p) => p.start <= this.inputSelection.start &&
101
152
  this.inputSelection.start <= p.end &&
102
153
  p.type !== DateParts.Literal)) === null || _a === void 0 ? void 0 : _a.type;
@@ -120,73 +171,45 @@ class IgcDateTimeInputComponent extends EventEmitterMixin(IgcMaskInputBaseCompon
120
171
  get datePartDeltas() {
121
172
  return Object.assign({}, this._datePartDeltas, this.spinDelta);
122
173
  }
123
- constructor() {
124
- super();
125
- this._oldValue = null;
126
- this._datePartDeltas = {
127
- date: 1,
128
- month: 1,
129
- year: 1,
130
- hours: 1,
131
- minutes: 1,
132
- seconds: 1,
133
- };
134
- this.spinLoop = true;
135
- this.locale = 'en';
136
- this.addEventListener('wheel', this.onWheel);
137
- }
138
174
  connectedCallback() {
139
175
  super.connectedCallback();
140
176
  this.updateDefaultMask();
141
177
  this.setMask(this.inputFormat);
178
+ this.updateValidity();
142
179
  if (this.value) {
143
180
  this.updateMask();
144
181
  }
145
182
  }
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
183
  stepUp(datePart, delta) {
163
184
  const targetPart = datePart || this.targetDatePart;
164
185
  if (!targetPart) {
165
186
  return;
166
187
  }
188
+ const { start, end } = this.inputSelection;
167
189
  const newValue = this.trySpinValue(targetPart, delta);
168
190
  this.value = newValue;
169
- this.handleInput();
191
+ this.updateComplete.then(() => this.input.setSelectionRange(start, end));
170
192
  }
171
193
  stepDown(datePart, delta) {
172
194
  const targetPart = datePart || this.targetDatePart;
173
195
  if (!targetPart) {
174
196
  return;
175
197
  }
198
+ const { start, end } = this.inputSelection;
176
199
  const newValue = this.trySpinValue(targetPart, delta, true);
177
200
  this.value = newValue;
178
- this.handleInput();
201
+ this.updateComplete.then(() => this.input.setSelectionRange(start, end));
179
202
  }
180
203
  clear() {
181
204
  this.maskedValue = '';
182
205
  this.value = null;
183
206
  }
184
207
  updateMask() {
185
- if (this.hasFocus) {
208
+ if (this.focused) {
186
209
  this.maskedValue = this.getMaskedValue();
187
210
  }
188
211
  else {
189
- if (!this.value || !DateTimeUtil.isValidDate(this.value)) {
212
+ if (!DateTimeUtil.isValidDate(this.value)) {
190
213
  this.maskedValue = '';
191
214
  return;
192
215
  }
@@ -204,30 +227,28 @@ class IgcDateTimeInputComponent extends EventEmitterMixin(IgcMaskInputBaseCompon
204
227
  }
205
228
  handleChange() {
206
229
  this.emitEvent('igcChange', { detail: this.value });
207
- this.invalid = !this.checkValidity();
208
230
  }
209
231
  handleInput() {
210
232
  var _a;
211
233
  this.emitEvent('igcInput', { detail: (_a = this.value) === null || _a === void 0 ? void 0 : _a.toString() });
212
234
  }
213
235
  handleDragLeave() {
214
- if (!this.hasFocus) {
236
+ if (!this.focused) {
215
237
  this.updateMask();
216
238
  }
217
239
  }
218
240
  handleDragEnter() {
219
- if (!this.hasFocus) {
241
+ if (!this.focused) {
220
242
  this.maskedValue = this.getMaskedValue();
221
243
  }
222
244
  }
223
245
  async updateInput(string, range) {
224
- var _a;
225
246
  const { value, end } = this.parser.replace(this.maskedValue, string, range.start, range.end);
226
247
  this.maskedValue = value;
227
248
  this.updateValue();
228
249
  this.requestUpdate();
229
250
  if (range.start !== this.inputFormat.length) {
230
- this.emitEvent('igcInput', { detail: (_a = this.value) === null || _a === void 0 ? void 0 : _a.toString() });
251
+ this.handleInput();
231
252
  }
232
253
  await this.updateComplete;
233
254
  this.input.setSelectionRange(end, end);
@@ -274,20 +295,17 @@ class IgcDateTimeInputComponent extends EventEmitterMixin(IgcMaskInputBaseCompon
274
295
  }
275
296
  return newDate;
276
297
  }
277
- onWheel(event) {
278
- if (!this.hasFocus) {
298
+ async onWheel(event) {
299
+ if (!this.focused || this.readonly) {
279
300
  return;
280
301
  }
281
- this.selection = this.inputSelection;
282
302
  event.preventDefault();
283
303
  event.stopPropagation();
284
- if (event.deltaY > 0) {
285
- this.stepDown();
286
- }
287
- else {
288
- this.stepUp();
289
- }
290
- this.updateComplete.then(() => this.setSelectionRange(this.selection.start, this.selection.end));
304
+ const { start, end } = this.inputSelection;
305
+ event.deltaY > 0 ? this.stepDown() : this.stepUp();
306
+ this.handleInput();
307
+ await this.updateComplete;
308
+ this.setSelectionRange(start, end);
291
309
  }
292
310
  updateDefaultMask() {
293
311
  this._defaultMask = DateTimeUtil.getDefaultMask(this.locale);
@@ -363,14 +381,22 @@ class IgcDateTimeInputComponent extends EventEmitterMixin(IgcMaskInputBaseCompon
363
381
  return cursorPos;
364
382
  }
365
383
  }
366
- handleFocus() {
367
- this.hasFocus = true;
368
- this._oldValue = this.value;
384
+ async handleFocus() {
385
+ this.focused = true;
369
386
  this.updateMask();
370
- this.emitEvent('igcFocus');
387
+ super.handleFocus();
388
+ if (this.readOnly) {
389
+ return;
390
+ }
391
+ this._oldValue = this.value;
392
+ if (!this._value) {
393
+ this.maskedValue = this.emptyMask;
394
+ await this.updateComplete;
395
+ this.select();
396
+ }
371
397
  }
372
398
  handleBlur() {
373
- this.hasFocus = false;
399
+ this.focused = false;
374
400
  if (!this.isComplete() && this.maskedValue !== this.emptyMask) {
375
401
  const parse = this.parseDate(this.maskedValue);
376
402
  if (parse) {
@@ -387,34 +413,35 @@ class IgcDateTimeInputComponent extends EventEmitterMixin(IgcMaskInputBaseCompon
387
413
  if (this._oldValue !== this.value) {
388
414
  this.handleChange();
389
415
  }
390
- this.emitEvent('igcBlur');
416
+ this.checkValidity();
417
+ super.handleBlur();
391
418
  }
392
- handleKeydown(e) {
393
- super.handleKeydown(e);
394
- const key = e.key;
395
- switch (key) {
396
- case 'ArrowLeft':
397
- case 'ArrowRight':
398
- if (e.ctrlKey) {
399
- e.preventDefault();
400
- const value = e.target.value;
401
- const dir = key === 'ArrowRight' ? 1 : 0;
402
- const pos = this.getNewPosition(value, dir);
403
- this.setSelectionRange(pos, pos);
404
- }
405
- break;
406
- case 'ArrowUp':
407
- case 'ArrowDown':
408
- e.preventDefault();
409
- key === 'ArrowUp' ? this.stepUp() : this.stepDown();
410
- this.updateComplete.then(() => this.setSelectionRange(this.selection.start, this.selection.end));
411
- break;
412
- case ';':
413
- if (e.ctrlKey) {
414
- this.value = new Date();
415
- }
416
- break;
419
+ handleHorizontalArrows(event) {
420
+ if (event.ctrlKey) {
421
+ event.preventDefault();
417
422
  }
423
+ const position = this.getNewPosition(this.input.value, event.key === 'ArrowRight' ? 1 : 0);
424
+ this.setSelectionRange(position, position);
425
+ }
426
+ async handleVerticalArrows(event) {
427
+ event.preventDefault();
428
+ event.key === 'ArrowUp' ? this.stepUp() : this.stepDown();
429
+ this.handleInput();
430
+ await this.updateComplete;
431
+ this.setSelectionRange(this.selection.start, this.selection.end);
432
+ }
433
+ handleSemicolon(event) {
434
+ if (event.ctrlKey) {
435
+ this.value = new Date();
436
+ }
437
+ }
438
+ async handleKeydown(e) {
439
+ var _a;
440
+ if (this.readOnly) {
441
+ return;
442
+ }
443
+ super.handleKeydown(e);
444
+ (_a = this.keyMap.get(e.key)) === null || _a === void 0 ? void 0 : _a.call(this, e);
418
445
  }
419
446
  renderInput() {
420
447
  return html `
@@ -424,15 +451,16 @@ class IgcDateTimeInputComponent extends EventEmitterMixin(IgcMaskInputBaseCompon
424
451
  name=${ifDefined(this.name)}
425
452
  .value=${live(this.maskedValue)}
426
453
  .placeholder=${live(this.placeholder || this.emptyMask)}
427
- ?readonly=${this.readonly}
454
+ ?readonly=${this.readOnly}
428
455
  ?disabled=${this.disabled}
429
- ?required=${this.required}
430
- @invalid="${this.handleInvalid}"
431
456
  @blur=${this.handleBlur}
432
457
  @focus=${this.handleFocus}
433
458
  @input=${super.handleInput}
459
+ @wheel=${this.onWheel}
434
460
  @keydown=${this.handleKeydown}
461
+ @click=${this.handleClick}
435
462
  @cut=${this.handleCut}
463
+ @change=${this.handleChange}
436
464
  @compositionstart=${this.handleCompositionStart}
437
465
  @compositionend=${this.handleCompositionEnd}
438
466
  @dragenter=${this.handleDragEnter}
@@ -447,32 +475,21 @@ __decorate([
447
475
  property({ attribute: 'input-format' })
448
476
  ], IgcDateTimeInputComponent.prototype, "inputFormat", null);
449
477
  __decorate([
450
- property({
451
- converter: {
452
- fromAttribute: (value) => !value ? null : DateTimeUtil.parseIsoDate(value),
453
- toAttribute: (value) => value.toISOString(),
454
- },
455
- }),
478
+ property({ converter: converter }),
456
479
  blazorTwoWayBind('igcChange', 'detail')
457
480
  ], IgcDateTimeInputComponent.prototype, "value", null);
458
481
  __decorate([
459
- property({
460
- attribute: 'min-value',
461
- converter: {
462
- fromAttribute: (value) => !value ? null : DateTimeUtil.parseIsoDate(value),
463
- toAttribute: (value) => value.toISOString(),
464
- },
465
- })
466
- ], IgcDateTimeInputComponent.prototype, "minValue", void 0);
482
+ property({ converter: converter })
483
+ ], IgcDateTimeInputComponent.prototype, "min", void 0);
484
+ __decorate([
485
+ property({ converter: converter })
486
+ ], IgcDateTimeInputComponent.prototype, "max", void 0);
467
487
  __decorate([
468
- property({
469
- attribute: 'max-value',
470
- converter: {
471
- fromAttribute: (value) => !value ? null : DateTimeUtil.parseIsoDate(value),
472
- toAttribute: (value) => value.toISOString(),
473
- },
474
- })
475
- ], IgcDateTimeInputComponent.prototype, "maxValue", void 0);
488
+ property({ attribute: 'min-value', converter: converter })
489
+ ], IgcDateTimeInputComponent.prototype, "minValue", null);
490
+ __decorate([
491
+ property({ attribute: 'max-value', converter: converter })
492
+ ], IgcDateTimeInputComponent.prototype, "maxValue", null);
476
493
  __decorate([
477
494
  property({ attribute: 'display-format' })
478
495
  ], IgcDateTimeInputComponent.prototype, "displayFormat", void 0);
@@ -495,13 +512,8 @@ __decorate([
495
512
  watch('prompt', { waitUntilFirstUpdate: true })
496
513
  ], IgcDateTimeInputComponent.prototype, "promptChange", null);
497
514
  __decorate([
498
- watch('required', { waitUntilFirstUpdate: true }),
499
- watch('disabled', { waitUntilFirstUpdate: true }),
500
- watch('value', { waitUntilFirstUpdate: true })
501
- ], IgcDateTimeInputComponent.prototype, "handleInvalidState", null);
502
- __decorate([
503
- watch('maxValue'),
504
- watch('minValue')
505
- ], IgcDateTimeInputComponent.prototype, "validate", null);
515
+ watch('min', { waitUntilFirstUpdate: true }),
516
+ watch('max', { waitUntilFirstUpdate: true })
517
+ ], IgcDateTimeInputComponent.prototype, "constraintChange", null);
506
518
  export default IgcDateTimeInputComponent;
507
519
  //# sourceMappingURL=date-time-input.js.map
@@ -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 { 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 {\n IgcMaskInputBaseComponent,\n MaskRange,\n} 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 /**\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 }\n }\n\n /**\n * The value of the input.\n * @attr\n */\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 /**\n * The minimum value required for the input to remain valid.\n * @attr min-value\n */\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 /**\n * The maximum value required for the input to remain valid.\n * @attr max-value\n */\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 * @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 * The locale settings used to display the value.\n * @attr\n */\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 async updateInput(string: string, range: MaskRange) {\n const { value, end } = this.parser.replace(\n this.maskedValue,\n string,\n range.start,\n range.end\n );\n\n this.maskedValue = value;\n\n this.updateValue();\n this.requestUpdate();\n\n if (range.start !== this.inputFormat.length) {\n this.emitEvent('igcInput', { detail: this.value?.toString() });\n }\n await this.updateComplete;\n 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`\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 `;\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":"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","sourcesContent":["import { ComplexAttributeConverter, 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 {\n IgcMaskInputBaseComponent,\n MaskRange,\n} from '../mask-input/mask-input-base.js';\nimport { format, 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';\nimport messages from '../common/localization/validation-en.js';\nimport { Validator } from '../common/validators.js';\n\nexport interface IgcDateTimeInputEventMap\n extends Omit<IgcInputEventMap, 'igcChange'> {\n igcChange: CustomEvent<Date | null>;\n}\n\nconst converter: ComplexAttributeConverter<Date | null> = {\n fromAttribute: (value: string) =>\n !value ? null : DateTimeUtil.parseIsoDate(value),\n toAttribute: (value: Date) => value.toISOString(),\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 override validators: Validator<this>[] = [\n {\n key: 'valueMissing',\n message: messages.required,\n isValid: () => (this.required ? !!this.value : true),\n },\n {\n key: 'rangeUnderflow',\n message: () => format(messages.min, `${this.min}`),\n isValid: () =>\n this.min\n ? !DateTimeUtil.lessThanMinValue(\n this.value || new Date(),\n this.min,\n this.hasTimeParts,\n this.hasDateParts\n )\n : true,\n },\n {\n key: 'rangeOverflow',\n message: () => format(messages.max, `${this.max}`),\n isValid: () =>\n this.max\n ? !DateTimeUtil.greaterThanMaxValue(\n this.value || new Date(),\n this.max,\n this.hasTimeParts,\n this.hasDateParts\n )\n : true,\n },\n ];\n\n protected _defaultMask!: string;\n protected _value: Date | null = 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 /**\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 }\n }\n\n /**\n * The value of the input.\n * @attr\n */\n @property({ converter: converter })\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.updateFormValue();\n this.updateValidity();\n this.setInvalidState();\n }\n\n protected updateFormValue() {\n this._value\n ? this.setFormValue(this._value.toISOString())\n : this.setFormValue(null);\n }\n\n /**\n * The minimum value required for the input to remain valid.\n * @attr\n */\n @property({ converter: converter })\n public min!: Date;\n\n /**\n * The maximum value required for the input to remain valid.\n * @attr\n */\n @property({ converter: converter })\n public max!: Date;\n\n /**\n * The minimum value required for the input to remain valid.\n * @attr min-value\n *\n * @deprecated - since v4.4.0\n * Use the `min` property instead.\n */\n @property({ attribute: 'min-value', converter: converter })\n public get minValue() {\n return this.min;\n }\n\n public set minValue(value: Date) {\n this.min = value;\n }\n\n /**\n * The maximum value required for the input to remain valid.\n * @attr max-value\n *\n * @deprecated - since v4.4.0\n * Use the `max` property instead.\n */\n @property({ attribute: 'max-value', converter: converter })\n public get maxValue() {\n return this.max;\n }\n\n public set maxValue(value: Date) {\n this.max = value;\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 * The locale settings used to display the value.\n * @attr\n */\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('min', { waitUntilFirstUpdate: true })\n @watch('max', { waitUntilFirstUpdate: true })\n protected constraintChange() {\n this.updateValidity();\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.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 {\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 public override connectedCallback() {\n super.connectedCallback();\n this.updateDefaultMask();\n this.setMask(this.inputFormat);\n this.updateValidity();\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 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 protected handleChange() {\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n protected override handleInput() {\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(string: string, range: MaskRange) {\n const { value, end } = this.parser.replace(\n this.maskedValue,\n string,\n range.start,\n range.end\n );\n\n this.maskedValue = value;\n\n this.updateValue();\n this.requestUpdate();\n\n if (range.start !== this.inputFormat.length) {\n this.handleInput();\n }\n await this.updateComplete;\n 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 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.handleInput();\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(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 async handleFocus() {\n this.focused = true;\n this.updateMask();\n super.handleFocus();\n\n if (this.readOnly) {\n return;\n }\n\n this._oldValue = this.value;\n\n if (!this._value) {\n this.maskedValue = this.emptyMask;\n await this.updateComplete;\n this.select();\n }\n }\n\n protected override handleBlur() {\n this.focused = 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 this.checkValidity();\n super.handleBlur();\n }\n\n protected handleHorizontalArrows(event: KeyboardEvent) {\n if (event.ctrlKey) {\n event.preventDefault();\n }\n const position = this.getNewPosition(\n this.input.value,\n event.key === 'ArrowRight' ? 1 : 0\n );\n this.setSelectionRange(position, position);\n }\n\n protected async handleVerticalArrows(event: KeyboardEvent) {\n event.preventDefault();\n event.key === 'ArrowUp' ? this.stepUp() : this.stepDown();\n this.handleInput();\n await this.updateComplete;\n this.setSelectionRange(this.selection.start, this.selection.end);\n }\n\n protected handleSemicolon(event: KeyboardEvent) {\n if (event.ctrlKey) {\n this.value = new Date();\n }\n }\n\n protected keyMap = new Map(\n Object.entries({\n ArrowLeft: this.handleHorizontalArrows,\n ArrowRight: this.handleHorizontalArrows,\n ArrowUp: this.handleVerticalArrows,\n ArrowDown: this.handleVerticalArrows,\n ';': this.handleSemicolon,\n })\n );\n\n protected override async handleKeydown(e: KeyboardEvent) {\n if (this.readOnly) {\n return;\n }\n\n super.handleKeydown(e);\n this.keyMap.get(e.key)?.call(this, e);\n }\n\n protected override renderInput() {\n return html`\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 @blur=${this.handleBlur}\n @focus=${this.handleFocus}\n @input=${super.handleInput}\n @wheel=${this.onWheel}\n @keydown=${this.handleKeydown}\n @click=${this.handleClick}\n @cut=${this.handleCut}\n @change=${this.handleChange}\n @compositionstart=${this.handleCompositionStart}\n @compositionend=${this.handleCompositionEnd}\n @dragenter=${this.handleDragEnter}\n @dragleave=${this.handleDragLeave}\n @dragstart=${this.handleDragStart}\n />\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-time-input': IgcDateTimeInputComponent;\n }\n}\n"]}
@@ -82,6 +82,7 @@ export declare abstract class DateTimeUtil {
82
82
  private static getDefaultLocaleMask;
83
83
  private static fillDatePartsPositions;
84
84
  private static getCleanVal;
85
+ private static escapeRegExp;
85
86
  private static trimEmptyPlaceholders;
86
87
  private static daysInMonth;
87
88
  private static prependValue;
@@ -118,7 +118,7 @@ class DateTimeUtil {
118
118
  regex = /^\d{2}/g;
119
119
  if (regex.test(value)) {
120
120
  const dateNow = new Date().toISOString();
121
- let [datePart, _timePart] = dateNow.split(timeLiteral);
121
+ const [datePart, _timePart] = dateNow.split(timeLiteral);
122
122
  return new Date(`${datePart}T${value}`);
123
123
  }
124
124
  return null;
@@ -568,8 +568,11 @@ class DateTimeUtil {
568
568
  static getCleanVal(inputData, datePart, prompt) {
569
569
  return DateTimeUtil.trimEmptyPlaceholders(inputData.substring(datePart.start, datePart.end), prompt);
570
570
  }
571
+ static escapeRegExp(string) {
572
+ return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
573
+ }
571
574
  static trimEmptyPlaceholders(value, prompt) {
572
- const result = value.replace(new RegExp(prompt || '_', 'g'), '');
575
+ const result = value.replace(new RegExp(this.escapeRegExp(prompt !== null && prompt !== void 0 ? prompt : '_'), 'g'), '');
573
576
  return result;
574
577
  }
575
578
  static daysInMonth(fullYear, month) {
@@ -579,7 +582,7 @@ class DateTimeUtil {
579
582
  return (prependChar + value.toString()).slice(-partLength);
580
583
  }
581
584
  static toTwelveHourFormat(value) {
582
- let hour = parseInt(value.replace(new RegExp(this._parser.prompt, 'g'), '0'), 10);
585
+ let hour = parseInt(value.replace(new RegExp(this.escapeRegExp(this._parser.prompt), 'g'), '0'), 10);
583
586
  if (hour > 12) {
584
587
  hour -= 12;
585
588
  }