igniteui-webcomponents 6.1.2 → 6.2.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 (502) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/LICENSE +1 -1
  3. package/README.md +13 -1
  4. package/components/accordion/accordion.js +1 -4
  5. package/components/accordion/accordion.js.map +1 -1
  6. package/components/accordion/themes/accordion.base.css.js +1 -1
  7. package/components/accordion/themes/accordion.base.css.js.map +1 -1
  8. package/components/banner/themes/banner.base.css.js +1 -1
  9. package/components/banner/themes/banner.base.css.js.map +1 -1
  10. package/components/banner/themes/shared/banner.bootstrap.css.js +1 -1
  11. package/components/banner/themes/shared/banner.bootstrap.css.js.map +1 -1
  12. package/components/banner/themes/shared/banner.fluent.css.js +1 -1
  13. package/components/banner/themes/shared/banner.fluent.css.js.map +1 -1
  14. package/components/banner/themes/shared/banner.indigo.css.js +1 -1
  15. package/components/banner/themes/shared/banner.indigo.css.js.map +1 -1
  16. package/components/banner/themes/shared/banner.material.css.js +1 -1
  17. package/components/banner/themes/shared/banner.material.css.js.map +1 -1
  18. package/components/button/themes/button/button.base.css.js +1 -1
  19. package/components/button/themes/button/button.base.css.js.map +1 -1
  20. package/components/button/themes/button/shared/button.common.css.js +1 -1
  21. package/components/button/themes/button/shared/button.common.css.js.map +1 -1
  22. package/components/button/themes/button/shared/button.fluent.css.js +1 -1
  23. package/components/button/themes/button/shared/button.fluent.css.js.map +1 -1
  24. package/components/button/themes/button/shared/button.indigo.css.js +1 -1
  25. package/components/button/themes/button/shared/button.indigo.css.js.map +1 -1
  26. package/components/button/themes/icon-button/icon-button.base.css.js +1 -1
  27. package/components/button/themes/icon-button/icon-button.base.css.js.map +1 -1
  28. package/components/button/themes/icon-button/shared/icon-button.bootstrap.css.js +1 -1
  29. package/components/button/themes/icon-button/shared/icon-button.bootstrap.css.js.map +1 -1
  30. package/components/button/themes/icon-button/shared/icon-button.fluent.css.js +1 -1
  31. package/components/button/themes/icon-button/shared/icon-button.fluent.css.js.map +1 -1
  32. package/components/button/themes/icon-button/shared/icon-button.indigo.css.js +1 -1
  33. package/components/button/themes/icon-button/shared/icon-button.indigo.css.js.map +1 -1
  34. package/components/button/themes/icon-button/shared/icon-button.material.css.js +1 -1
  35. package/components/button/themes/icon-button/shared/icon-button.material.css.js.map +1 -1
  36. package/components/button-group/themes/shared/button/button.bootstrap.css.js +1 -1
  37. package/components/button-group/themes/shared/button/button.bootstrap.css.js.map +1 -1
  38. package/components/button-group/themes/shared/button/button.common.css.js +1 -1
  39. package/components/button-group/themes/shared/button/button.common.css.js.map +1 -1
  40. package/components/button-group/themes/shared/button/button.indigo.css.js +1 -1
  41. package/components/button-group/themes/shared/button/button.indigo.css.js.map +1 -1
  42. package/components/calendar/calendar.d.ts +1 -1
  43. package/components/calendar/days-view/days-view.js +1 -3
  44. package/components/calendar/days-view/days-view.js.map +1 -1
  45. package/components/calendar/months-view/months-view.js +1 -3
  46. package/components/calendar/months-view/months-view.js.map +1 -1
  47. package/components/calendar/themes/calendar.base.css.js +1 -1
  48. package/components/calendar/themes/calendar.base.css.js.map +1 -1
  49. package/components/calendar/themes/days-view.base.css.js +1 -1
  50. package/components/calendar/themes/days-view.base.css.js.map +1 -1
  51. package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js +1 -1
  52. package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js.map +1 -1
  53. package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js +1 -1
  54. package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js.map +1 -1
  55. package/components/calendar/themes/shared/bootstrap/year-month-view.bootstrap.css.js +1 -1
  56. package/components/calendar/themes/shared/bootstrap/year-month-view.bootstrap.css.js.map +1 -1
  57. package/components/calendar/themes/shared/fluent/calendar.fluent.css.js +1 -1
  58. package/components/calendar/themes/shared/fluent/calendar.fluent.css.js.map +1 -1
  59. package/components/calendar/themes/shared/indigo/calendar.indigo.css.js +1 -1
  60. package/components/calendar/themes/shared/indigo/calendar.indigo.css.js.map +1 -1
  61. package/components/calendar/themes/shared/material/calendar.material.css.js +1 -1
  62. package/components/calendar/themes/shared/material/calendar.material.css.js.map +1 -1
  63. package/components/calendar/themes/year-month-view.base.css.js +1 -1
  64. package/components/calendar/themes/year-month-view.base.css.js.map +1 -1
  65. package/components/calendar/years-view/years-view.js +1 -3
  66. package/components/calendar/years-view/years-view.js.map +1 -1
  67. package/components/card/themes/card.actions.base.css.js +1 -1
  68. package/components/card/themes/card.actions.base.css.js.map +1 -1
  69. package/components/card/themes/card.content.base.css.js +1 -1
  70. package/components/card/themes/card.content.base.css.js.map +1 -1
  71. package/components/card/themes/card.header.base.css.js +1 -1
  72. package/components/card/themes/card.header.base.css.js.map +1 -1
  73. package/components/card/themes/content.js +7 -0
  74. package/components/card/themes/content.js.map +1 -1
  75. package/components/card/themes/shared/actions/card.actions.bootstrap.css.js +1 -1
  76. package/components/card/themes/shared/actions/card.actions.bootstrap.css.js.map +1 -1
  77. package/components/card/themes/shared/actions/card.actions.indigo.css.js +1 -1
  78. package/components/card/themes/shared/actions/card.actions.indigo.css.js.map +1 -1
  79. package/components/card/themes/shared/container/card.bootstrap.css.js +1 -1
  80. package/components/card/themes/shared/container/card.bootstrap.css.js.map +1 -1
  81. package/components/card/themes/shared/container/card.indigo.css.js +1 -1
  82. package/components/card/themes/shared/container/card.indigo.css.js.map +1 -1
  83. package/components/card/themes/shared/content/card.content.bootstrap.css.js +1 -1
  84. package/components/card/themes/shared/content/card.content.bootstrap.css.js.map +1 -1
  85. package/components/card/themes/shared/content/card.content.indigo.css.d.ts +1 -0
  86. package/components/card/themes/shared/content/card.content.indigo.css.js +3 -0
  87. package/components/card/themes/shared/content/card.content.indigo.css.js.map +1 -0
  88. package/components/card/themes/shared/header/card.header.fluent.css.js +1 -1
  89. package/components/card/themes/shared/header/card.header.fluent.css.js.map +1 -1
  90. package/components/card/themes/shared/header/card.header.indigo.css.js +1 -1
  91. package/components/card/themes/shared/header/card.header.indigo.css.js.map +1 -1
  92. package/components/carousel/carousel-indicator.d.ts +1 -1
  93. package/components/carousel/carousel-indicator.js.map +1 -1
  94. package/components/carousel/carousel-slide.d.ts +3 -3
  95. package/components/carousel/carousel-slide.js +7 -13
  96. package/components/carousel/carousel-slide.js.map +1 -1
  97. package/components/carousel/carousel.d.ts +39 -38
  98. package/components/carousel/carousel.js +160 -156
  99. package/components/carousel/carousel.js.map +1 -1
  100. package/components/carousel/themes/carousel.base.css.js +1 -1
  101. package/components/carousel/themes/carousel.base.css.js.map +1 -1
  102. package/components/carousel/themes/shared/carousel.indigo.css.js +1 -1
  103. package/components/carousel/themes/shared/carousel.indigo.css.js.map +1 -1
  104. package/components/checkbox/checkbox-base.d.ts +3 -5
  105. package/components/checkbox/checkbox-base.js +15 -21
  106. package/components/checkbox/checkbox-base.js.map +1 -1
  107. package/components/checkbox/checkbox.d.ts +3 -4
  108. package/components/checkbox/checkbox.js +18 -17
  109. package/components/checkbox/checkbox.js.map +1 -1
  110. package/components/checkbox/switch.d.ts +0 -1
  111. package/components/checkbox/switch.js +7 -10
  112. package/components/checkbox/switch.js.map +1 -1
  113. package/components/checkbox/themes/dark/checkbox/checkbox.bootstrap.css.js +1 -1
  114. package/components/checkbox/themes/dark/checkbox/checkbox.bootstrap.css.js.map +1 -1
  115. package/components/checkbox/themes/dark/checkbox/checkbox.fluent.css.js +1 -1
  116. package/components/checkbox/themes/dark/checkbox/checkbox.fluent.css.js.map +1 -1
  117. package/components/checkbox/themes/dark/switch/switch.bootstrap.css.js +1 -1
  118. package/components/checkbox/themes/dark/switch/switch.bootstrap.css.js.map +1 -1
  119. package/components/checkbox/themes/dark/switch/switch.fluent.css.js +1 -1
  120. package/components/checkbox/themes/dark/switch/switch.fluent.css.js.map +1 -1
  121. package/components/checkbox/themes/dark/switch/switch.indigo.css.js +1 -1
  122. package/components/checkbox/themes/dark/switch/switch.indigo.css.js.map +1 -1
  123. package/components/checkbox/themes/dark/switch/switch.material.css.js +1 -1
  124. package/components/checkbox/themes/dark/switch/switch.material.css.js.map +1 -1
  125. package/components/checkbox/themes/light/switch/switch.bootstrap.css.js +1 -1
  126. package/components/checkbox/themes/light/switch/switch.bootstrap.css.js.map +1 -1
  127. package/components/checkbox/themes/light/switch/switch.fluent.css.js +1 -1
  128. package/components/checkbox/themes/light/switch/switch.fluent.css.js.map +1 -1
  129. package/components/checkbox/themes/light/switch/switch.indigo.css.js +1 -1
  130. package/components/checkbox/themes/light/switch/switch.indigo.css.js.map +1 -1
  131. package/components/checkbox/themes/light/switch/switch.material.css.js +1 -1
  132. package/components/checkbox/themes/light/switch/switch.material.css.js.map +1 -1
  133. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js +1 -1
  134. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js.map +1 -1
  135. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js +1 -1
  136. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js.map +1 -1
  137. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
  138. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
  139. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js +1 -1
  140. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js.map +1 -1
  141. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js +1 -1
  142. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js.map +1 -1
  143. package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js +1 -1
  144. package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js.map +1 -1
  145. package/components/checkbox/themes/shared/switch/switch.common.css.js +1 -1
  146. package/components/checkbox/themes/shared/switch/switch.common.css.js.map +1 -1
  147. package/components/checkbox/themes/shared/switch/switch.fluent.css.js +1 -1
  148. package/components/checkbox/themes/shared/switch/switch.fluent.css.js.map +1 -1
  149. package/components/checkbox/themes/shared/switch/switch.indigo.css.js +1 -1
  150. package/components/checkbox/themes/shared/switch/switch.indigo.css.js.map +1 -1
  151. package/components/chip/chip.d.ts +11 -11
  152. package/components/chip/chip.js +61 -65
  153. package/components/chip/chip.js.map +1 -1
  154. package/components/chip/themes/chip.base.css.js +1 -1
  155. package/components/chip/themes/chip.base.css.js.map +1 -1
  156. package/components/chip/themes/shared/chip.indigo.css.js +1 -1
  157. package/components/chip/themes/shared/chip.indigo.css.js.map +1 -1
  158. package/components/combo/combo.d.ts +3 -3
  159. package/components/combo/combo.js +12 -6
  160. package/components/combo/combo.js.map +1 -1
  161. package/components/combo/controllers/navigation.js +1 -1
  162. package/components/combo/controllers/navigation.js.map +1 -1
  163. package/components/combo/themes/combo-item.base.css.js +1 -1
  164. package/components/combo/themes/combo-item.base.css.js.map +1 -1
  165. package/components/combo/themes/combo.base.css.js +1 -1
  166. package/components/combo/themes/combo.base.css.js.map +1 -1
  167. package/components/combo/themes/shared/combo.bootstrap.css.js +1 -1
  168. package/components/combo/themes/shared/combo.bootstrap.css.js.map +1 -1
  169. package/components/combo/themes/shared/combo.common.css.js +1 -1
  170. package/components/combo/themes/shared/combo.common.css.js.map +1 -1
  171. package/components/combo/themes/shared/combo.fluent.css.js +1 -1
  172. package/components/combo/themes/shared/combo.fluent.css.js.map +1 -1
  173. package/components/combo/themes/shared/combo.indigo.css.js +1 -1
  174. package/components/combo/themes/shared/combo.indigo.css.js.map +1 -1
  175. package/components/combo/themes/shared/combo.material.css.js +1 -1
  176. package/components/combo/themes/shared/combo.material.css.js.map +1 -1
  177. package/components/common/controllers/internals.d.ts +66 -2
  178. package/components/common/controllers/internals.js +21 -0
  179. package/components/common/controllers/internals.js.map +1 -1
  180. package/components/common/controllers/key-bindings.js +4 -3
  181. package/components/common/controllers/key-bindings.js.map +1 -1
  182. package/components/common/controllers/slot.d.ts +87 -0
  183. package/components/common/controllers/slot.js +75 -0
  184. package/components/common/controllers/slot.js.map +1 -0
  185. package/components/common/mixins/forms/associated.d.ts +1 -1
  186. package/components/common/mixins/forms/associated.js +91 -36
  187. package/components/common/mixins/forms/associated.js.map +1 -1
  188. package/components/common/mixins/forms/form-transformers.d.ts +21 -0
  189. package/components/common/mixins/forms/form-transformers.js +64 -0
  190. package/components/common/mixins/forms/form-transformers.js.map +1 -0
  191. package/components/common/mixins/forms/form-value.d.ts +7 -36
  192. package/components/common/mixins/forms/form-value.js +2 -64
  193. package/components/common/mixins/forms/form-value.js.map +1 -1
  194. package/components/common/mixins/forms/types.d.ts +19 -10
  195. package/components/common/mixins/forms/types.js +2 -1
  196. package/components/common/mixins/forms/types.js.map +1 -1
  197. package/components/common/util.d.ts +20 -0
  198. package/components/common/util.js +59 -1
  199. package/components/common/util.js.map +1 -1
  200. package/components/date-picker/date-picker.d.ts +1 -3
  201. package/components/date-picker/date-picker.js +13 -15
  202. package/components/date-picker/date-picker.js.map +1 -1
  203. package/components/date-picker/themes/dark/date-picker.indigo.css.js +1 -1
  204. package/components/date-picker/themes/dark/date-picker.indigo.css.js.map +1 -1
  205. package/components/date-picker/themes/date-picker.base.css.js +1 -1
  206. package/components/date-picker/themes/date-picker.base.css.js.map +1 -1
  207. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js +1 -1
  208. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js.map +1 -1
  209. package/components/date-picker/themes/shared/date-picker.common.css.js +1 -1
  210. package/components/date-picker/themes/shared/date-picker.common.css.js.map +1 -1
  211. package/components/date-picker/themes/shared/date-picker.fluent.css.js +1 -1
  212. package/components/date-picker/themes/shared/date-picker.fluent.css.js.map +1 -1
  213. package/components/date-picker/themes/shared/date-picker.indigo.css.js +1 -1
  214. package/components/date-picker/themes/shared/date-picker.indigo.css.js.map +1 -1
  215. package/components/date-picker/themes/shared/date-picker.material.css.js +1 -1
  216. package/components/date-picker/themes/shared/date-picker.material.css.js.map +1 -1
  217. package/components/date-range-picker/date-range-picker.base.css.js +1 -1
  218. package/components/date-range-picker/date-range-picker.base.css.js.map +1 -1
  219. package/components/date-range-picker/date-range-picker.d.ts +2 -4
  220. package/components/date-range-picker/date-range-picker.js +19 -27
  221. package/components/date-range-picker/date-range-picker.js.map +1 -1
  222. package/components/date-range-picker/predefined-ranges-area.base.css.js +1 -1
  223. package/components/date-range-picker/predefined-ranges-area.base.css.js.map +1 -1
  224. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js +1 -1
  225. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js.map +1 -1
  226. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js +1 -1
  227. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js.map +1 -1
  228. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js +1 -1
  229. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js.map +1 -1
  230. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js +1 -1
  231. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js.map +1 -1
  232. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js +1 -1
  233. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js.map +1 -1
  234. package/components/date-range-picker/themes/shared/date-range-picker.material.css.js +1 -1
  235. package/components/date-range-picker/themes/shared/date-range-picker.material.css.js.map +1 -1
  236. package/components/date-time-input/date-time-input.d.ts +1 -2
  237. package/components/date-time-input/date-time-input.js +8 -8
  238. package/components/date-time-input/date-time-input.js.map +1 -1
  239. package/components/dialog/dialog.d.ts +23 -25
  240. package/components/dialog/dialog.js +108 -115
  241. package/components/dialog/dialog.js.map +1 -1
  242. package/components/dialog/themes/dark/dialog.bootstrap.css.js +1 -1
  243. package/components/dialog/themes/dark/dialog.bootstrap.css.js.map +1 -1
  244. package/components/dialog/themes/dialog.base.css.js +1 -1
  245. package/components/dialog/themes/dialog.base.css.js.map +1 -1
  246. package/components/dialog/themes/shared/dialog.bootstrap.css.js +1 -1
  247. package/components/dialog/themes/shared/dialog.bootstrap.css.js.map +1 -1
  248. package/components/dialog/themes/shared/dialog.common.css.js +1 -1
  249. package/components/dialog/themes/shared/dialog.common.css.js.map +1 -1
  250. package/components/dialog/themes/shared/dialog.fluent.css.js +1 -1
  251. package/components/dialog/themes/shared/dialog.fluent.css.js.map +1 -1
  252. package/components/dialog/themes/shared/dialog.indigo.css.js +1 -1
  253. package/components/dialog/themes/shared/dialog.indigo.css.js.map +1 -1
  254. package/components/dropdown/themes/dropdown-group.base.css.js +1 -1
  255. package/components/dropdown/themes/dropdown-group.base.css.js.map +1 -1
  256. package/components/dropdown/themes/dropdown-item.base.css.js +1 -1
  257. package/components/dropdown/themes/dropdown-item.base.css.js.map +1 -1
  258. package/components/dropdown/themes/shared/dropdown.indigo.css.js +1 -1
  259. package/components/dropdown/themes/shared/dropdown.indigo.css.js.map +1 -1
  260. package/components/dropdown/themes/shared/group/dropdown-group.fluent.css.js +1 -1
  261. package/components/dropdown/themes/shared/group/dropdown-group.fluent.css.js.map +1 -1
  262. package/components/dropdown/themes/shared/header/dropdown-header.common.css.js +1 -1
  263. package/components/dropdown/themes/shared/header/dropdown-header.common.css.js.map +1 -1
  264. package/components/dropdown/themes/shared/header/dropdown-header.indigo.css.js +1 -1
  265. package/components/dropdown/themes/shared/header/dropdown-header.indigo.css.js.map +1 -1
  266. package/components/dropdown/themes/shared/item/dropdown-item.indigo.css.js +1 -1
  267. package/components/dropdown/themes/shared/item/dropdown-item.indigo.css.js.map +1 -1
  268. package/components/expansion-panel/expansion-panel.d.ts +12 -14
  269. package/components/expansion-panel/expansion-panel.js +43 -57
  270. package/components/expansion-panel/expansion-panel.js.map +1 -1
  271. package/components/expansion-panel/themes/expansion-panel.base.css.js +1 -1
  272. package/components/expansion-panel/themes/expansion-panel.base.css.js.map +1 -1
  273. package/components/expansion-panel/themes/shared/expansion-panel.indigo.css.js +1 -1
  274. package/components/expansion-panel/themes/shared/expansion-panel.indigo.css.js.map +1 -1
  275. package/components/file-input/file-input.d.ts +1 -7
  276. package/components/file-input/file-input.js +13 -21
  277. package/components/file-input/file-input.js.map +1 -1
  278. package/components/file-input/themes/shared/file-input.bootstrap.css.js +1 -1
  279. package/components/file-input/themes/shared/file-input.bootstrap.css.js.map +1 -1
  280. package/components/file-input/themes/shared/file-input.material.css.js +1 -1
  281. package/components/file-input/themes/shared/file-input.material.css.js.map +1 -1
  282. package/components/input/input.d.ts +1 -8
  283. package/components/input/input.js +16 -23
  284. package/components/input/input.js.map +1 -1
  285. package/components/input/themes/shared/input.bootstrap.css.js +1 -1
  286. package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
  287. package/components/input/themes/shared/input.common.css.js +1 -1
  288. package/components/input/themes/shared/input.common.css.js.map +1 -1
  289. package/components/input/themes/shared/input.fluent.css.js +1 -1
  290. package/components/input/themes/shared/input.fluent.css.js.map +1 -1
  291. package/components/input/themes/shared/input.indigo.css.js +1 -1
  292. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  293. package/components/input/themes/shared/input.material.css.js +1 -1
  294. package/components/input/themes/shared/input.material.css.js.map +1 -1
  295. package/components/list/themes/header.base.css.js +1 -1
  296. package/components/list/themes/header.base.css.js.map +1 -1
  297. package/components/list/themes/item.base.css.js +1 -1
  298. package/components/list/themes/item.base.css.js.map +1 -1
  299. package/components/list/themes/shared/header/list-header.indigo.css.js +1 -1
  300. package/components/list/themes/shared/header/list-header.indigo.css.js.map +1 -1
  301. package/components/list/themes/shared/item/list-item.indigo.css.js +1 -1
  302. package/components/list/themes/shared/item/list-item.indigo.css.js.map +1 -1
  303. package/components/mask-input/mask-input-base.js +1 -0
  304. package/components/mask-input/mask-input-base.js.map +1 -1
  305. package/components/mask-input/mask-input.d.ts +2 -3
  306. package/components/mask-input/mask-input.js +5 -8
  307. package/components/mask-input/mask-input.js.map +1 -1
  308. package/components/nav-drawer/nav-drawer-item.d.ts +3 -4
  309. package/components/nav-drawer/nav-drawer-item.js +15 -18
  310. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  311. package/components/nav-drawer/nav-drawer.d.ts +1 -2
  312. package/components/nav-drawer/nav-drawer.js +9 -11
  313. package/components/nav-drawer/nav-drawer.js.map +1 -1
  314. package/components/nav-drawer/themes/container.base.css.js +1 -1
  315. package/components/nav-drawer/themes/container.base.css.js.map +1 -1
  316. package/components/nav-drawer/themes/shared/container/nav-drawer.bootstrap.css.js +1 -1
  317. package/components/nav-drawer/themes/shared/container/nav-drawer.bootstrap.css.js.map +1 -1
  318. package/components/nav-drawer/themes/shared/container/nav-drawer.common.css.js +1 -1
  319. package/components/nav-drawer/themes/shared/container/nav-drawer.common.css.js.map +1 -1
  320. package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js +1 -1
  321. package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js.map +1 -1
  322. package/components/nav-drawer/themes/shared/container/nav-drawer.material.css.js +1 -1
  323. package/components/nav-drawer/themes/shared/container/nav-drawer.material.css.js.map +1 -1
  324. package/components/nav-drawer/themes/shared/header-item/header-item.bootstrap.css.js +1 -1
  325. package/components/nav-drawer/themes/shared/header-item/header-item.bootstrap.css.js.map +1 -1
  326. package/components/nav-drawer/themes/shared/header-item/header-item.fluent.css.js +1 -1
  327. package/components/nav-drawer/themes/shared/header-item/header-item.fluent.css.js.map +1 -1
  328. package/components/nav-drawer/themes/shared/header-item/header-item.indigo.css.js +1 -1
  329. package/components/nav-drawer/themes/shared/header-item/header-item.indigo.css.js.map +1 -1
  330. package/components/nav-drawer/themes/shared/header-item/header-item.material.css.js +1 -1
  331. package/components/nav-drawer/themes/shared/header-item/header-item.material.css.js.map +1 -1
  332. package/components/nav-drawer/themes/shared/item/item.bootstrap.css.js +1 -1
  333. package/components/nav-drawer/themes/shared/item/item.bootstrap.css.js.map +1 -1
  334. package/components/nav-drawer/themes/shared/item/item.fluent.css.js +1 -1
  335. package/components/nav-drawer/themes/shared/item/item.fluent.css.js.map +1 -1
  336. package/components/nav-drawer/themes/shared/item/item.indigo.css.js +1 -1
  337. package/components/nav-drawer/themes/shared/item/item.indigo.css.js.map +1 -1
  338. package/components/nav-drawer/themes/shared/item/item.material.css.js +1 -1
  339. package/components/nav-drawer/themes/shared/item/item.material.css.js.map +1 -1
  340. package/components/navbar/themes/navbar.base.css.js +1 -1
  341. package/components/navbar/themes/navbar.base.css.js.map +1 -1
  342. package/components/navbar/themes/shared/navbar.bootstrap.css.js +1 -1
  343. package/components/navbar/themes/shared/navbar.bootstrap.css.js.map +1 -1
  344. package/components/navbar/themes/shared/navbar.indigo.css.js +1 -1
  345. package/components/navbar/themes/shared/navbar.indigo.css.js.map +1 -1
  346. package/components/popover/popover.d.ts +17 -16
  347. package/components/popover/popover.js +81 -91
  348. package/components/popover/popover.js.map +1 -1
  349. package/components/progress/base.d.ts +8 -8
  350. package/components/progress/base.js +19 -23
  351. package/components/progress/base.js.map +1 -1
  352. package/components/progress/circular-gradient.js.map +1 -1
  353. package/components/progress/circular-progress.d.ts +3 -4
  354. package/components/progress/circular-progress.js +15 -18
  355. package/components/progress/circular-progress.js.map +1 -1
  356. package/components/progress/linear-progress.d.ts +1 -0
  357. package/components/progress/linear-progress.js +5 -1
  358. package/components/progress/linear-progress.js.map +1 -1
  359. package/components/progress/themes/linear/shared/linear.progress.fluent.css.js +1 -1
  360. package/components/progress/themes/linear/shared/linear.progress.fluent.css.js.map +1 -1
  361. package/components/progress/themes/linear/shared/linear.progress.indigo.css.js +1 -1
  362. package/components/progress/themes/linear/shared/linear.progress.indigo.css.js.map +1 -1
  363. package/components/radio/radio.d.ts +3 -5
  364. package/components/radio/radio.js +33 -31
  365. package/components/radio/radio.js.map +1 -1
  366. package/components/radio/themes/dark/radio.fluent.css.js +1 -1
  367. package/components/radio/themes/dark/radio.fluent.css.js.map +1 -1
  368. package/components/radio/themes/shared/radio.bootstrap.css.js +1 -1
  369. package/components/radio/themes/shared/radio.bootstrap.css.js.map +1 -1
  370. package/components/radio/themes/shared/radio.common.css.js +1 -1
  371. package/components/radio/themes/shared/radio.common.css.js.map +1 -1
  372. package/components/radio/themes/shared/radio.fluent.css.js +1 -1
  373. package/components/radio/themes/shared/radio.fluent.css.js.map +1 -1
  374. package/components/radio/themes/shared/radio.indigo.css.js +1 -1
  375. package/components/radio/themes/shared/radio.indigo.css.js.map +1 -1
  376. package/components/radio/themes/shared/radio.material.css.js +1 -1
  377. package/components/radio/themes/shared/radio.material.css.js.map +1 -1
  378. package/components/radio-group/radio-group.d.ts +4 -4
  379. package/components/radio-group/radio-group.js +24 -21
  380. package/components/radio-group/radio-group.js.map +1 -1
  381. package/components/radio-group/themes/radio-group.base.css.js +1 -1
  382. package/components/radio-group/themes/radio-group.base.css.js.map +1 -1
  383. package/components/radio-group/themes/shared/radio-group.bootstrap.css.js +1 -1
  384. package/components/radio-group/themes/shared/radio-group.bootstrap.css.js.map +1 -1
  385. package/components/radio-group/themes/shared/radio-group.fluent.css.js +1 -1
  386. package/components/radio-group/themes/shared/radio-group.fluent.css.js.map +1 -1
  387. package/components/radio-group/themes/shared/radio-group.indigo.css.js +1 -1
  388. package/components/radio-group/themes/shared/radio-group.indigo.css.js.map +1 -1
  389. package/components/radio-group/themes/shared/radio-group.material.css.js +1 -1
  390. package/components/radio-group/themes/shared/radio-group.material.css.js.map +1 -1
  391. package/components/rating/rating.d.ts +1 -2
  392. package/components/rating/rating.js +4 -4
  393. package/components/rating/rating.js.map +1 -1
  394. package/components/rating/themes/rating.base.css.js +1 -1
  395. package/components/rating/themes/rating.base.css.js.map +1 -1
  396. package/components/rating/themes/shared/rating.indigo.css.js +1 -1
  397. package/components/rating/themes/shared/rating.indigo.css.js.map +1 -1
  398. package/components/resize-container/resize-container.d.ts +1 -1
  399. package/components/select/select.d.ts +35 -38
  400. package/components/select/select.js +138 -147
  401. package/components/select/select.js.map +1 -1
  402. package/components/select/themes/dark/select.bootstrap.css.js +1 -1
  403. package/components/select/themes/dark/select.bootstrap.css.js.map +1 -1
  404. package/components/select/themes/light/select.bootstrap.css.js +1 -1
  405. package/components/select/themes/light/select.bootstrap.css.js.map +1 -1
  406. package/components/select/themes/shared/select.bootstrap.css.js +1 -1
  407. package/components/select/themes/shared/select.bootstrap.css.js.map +1 -1
  408. package/components/select/themes/shared/select.common.css.js +1 -1
  409. package/components/select/themes/shared/select.common.css.js.map +1 -1
  410. package/components/select/themes/shared/select.fluent.css.js +1 -1
  411. package/components/select/themes/shared/select.fluent.css.js.map +1 -1
  412. package/components/select/themes/shared/select.indigo.css.js +1 -1
  413. package/components/select/themes/shared/select.indigo.css.js.map +1 -1
  414. package/components/select/themes/shared/select.material.css.js +1 -1
  415. package/components/select/themes/shared/select.material.css.js.map +1 -1
  416. package/components/slider/slider-base.js +0 -1
  417. package/components/slider/slider-base.js.map +1 -1
  418. package/components/slider/slider-label.js.map +1 -1
  419. package/components/slider/slider.d.ts +1 -2
  420. package/components/slider/slider.js +5 -2
  421. package/components/slider/slider.js.map +1 -1
  422. package/components/slider/themes/shared/slider.common.css.js +1 -1
  423. package/components/slider/themes/shared/slider.common.css.js.map +1 -1
  424. package/components/slider/themes/slider.base.css.js +1 -1
  425. package/components/slider/themes/slider.base.css.js.map +1 -1
  426. package/components/snackbar/themes/shared/snackbar.indigo.css.js +1 -1
  427. package/components/snackbar/themes/shared/snackbar.indigo.css.js.map +1 -1
  428. package/components/snackbar/themes/snackbar.base.css.js +1 -1
  429. package/components/snackbar/themes/snackbar.base.css.js.map +1 -1
  430. package/components/stepper/step.d.ts +1 -1
  431. package/components/tabs/tabs.js +0 -1
  432. package/components/tabs/tabs.js.map +1 -1
  433. package/components/tabs/themes/shared/tab/tab.bootstrap.css.js +1 -1
  434. package/components/tabs/themes/shared/tab/tab.bootstrap.css.js.map +1 -1
  435. package/components/tabs/themes/shared/tab/tab.fluent.css.js +1 -1
  436. package/components/tabs/themes/shared/tab/tab.fluent.css.js.map +1 -1
  437. package/components/tabs/themes/shared/tab/tab.indigo.css.js +1 -1
  438. package/components/tabs/themes/shared/tab/tab.indigo.css.js.map +1 -1
  439. package/components/tabs/themes/shared/tab/tab.material.css.js +1 -1
  440. package/components/tabs/themes/shared/tab/tab.material.css.js.map +1 -1
  441. package/components/textarea/textarea.d.ts +14 -21
  442. package/components/textarea/textarea.js +66 -90
  443. package/components/textarea/textarea.js.map +1 -1
  444. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  445. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  446. package/components/textarea/themes/shared/textarea.common.css.js +1 -1
  447. package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
  448. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  449. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  450. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  451. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  452. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  453. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  454. package/components/textarea/themes/textarea.base.css.js +1 -1
  455. package/components/textarea/themes/textarea.base.css.js.map +1 -1
  456. package/components/tile-manager/position.js +2 -1
  457. package/components/tile-manager/position.js.map +1 -1
  458. package/components/tile-manager/resize-state.js +1 -1
  459. package/components/tile-manager/resize-state.js.map +1 -1
  460. package/components/tile-manager/tile.d.ts +8 -12
  461. package/components/tile-manager/tile.js +16 -37
  462. package/components/tile-manager/tile.js.map +1 -1
  463. package/components/toast/themes/shared/toast.bootstrap.css.js +1 -1
  464. package/components/toast/themes/shared/toast.bootstrap.css.js.map +1 -1
  465. package/components/toast/themes/shared/toast.common.css.js +1 -1
  466. package/components/toast/themes/shared/toast.common.css.js.map +1 -1
  467. package/components/toast/themes/shared/toast.fluent.css.js +1 -1
  468. package/components/toast/themes/shared/toast.fluent.css.js.map +1 -1
  469. package/components/toast/themes/toast.base.css.js +1 -1
  470. package/components/toast/themes/toast.base.css.js.map +1 -1
  471. package/components/tooltip/themes/tooltip.base.css.js +1 -1
  472. package/components/tooltip/themes/tooltip.base.css.js.map +1 -1
  473. package/components/tree/themes/item.base.css.js +1 -1
  474. package/components/tree/themes/item.base.css.js.map +1 -1
  475. package/components/tree/themes/shared/item.common.css.js +1 -1
  476. package/components/tree/themes/shared/item.common.css.js.map +1 -1
  477. package/components/tree/themes/shared/item.indigo.css.js +1 -1
  478. package/components/tree/themes/shared/item.indigo.css.js.map +1 -1
  479. package/components/tree/themes/shared/item.material.css.js +1 -1
  480. package/components/tree/themes/shared/item.material.css.js.map +1 -1
  481. package/components/tree/tree.js +3 -1
  482. package/components/tree/tree.js.map +1 -1
  483. package/components/tree/tree.navigation.js +3 -3
  484. package/components/tree/tree.navigation.js.map +1 -1
  485. package/components/tree/tree.selection.js +6 -2
  486. package/components/tree/tree.selection.js.map +1 -1
  487. package/components/validation-container/validation-container.d.ts +2 -1
  488. package/components/validation-container/validation-container.js +19 -14
  489. package/components/validation-container/validation-container.js.map +1 -1
  490. package/custom-elements.json +9456 -6460
  491. package/igniteui-webcomponents.css-data.json +1 -1
  492. package/igniteui-webcomponents.html-data.json +1 -1
  493. package/package.json +1 -1
  494. package/themes/dark/bootstrap.css +1 -1
  495. package/themes/dark/fluent.css +1 -1
  496. package/themes/dark/indigo.css +1 -1
  497. package/themes/dark/material.css +1 -1
  498. package/themes/light/bootstrap.css +1 -1
  499. package/themes/light/fluent.css +1 -1
  500. package/themes/light/indigo.css +1 -1
  501. package/themes/light/material.css +1 -1
  502. package/web-types.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"form-value.js","sourceRoot":"","sources":["../../../../../src/components/common/mixins/forms/form-value.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n convertToDate,\n convertToDateRange,\n getDateFormValue,\n} from '../../../calendar/helpers.js';\nimport type { DateRangeValue } from '../../../date-range-picker/date-range-picker.js';\nimport { asNumber } from '../../util.js';\nimport type { FormValueType, IgcFormControl } from './types.js';\n\ntype FormValueTransformers<T> = {\n setValue: (value: T) => T;\n getValue: (value: T) => T;\n setDefaultValue: (value: T) => T;\n getDefaultValue: (value: T) => T;\n setFormValue: (value: T, host: IgcFormControl) => FormValueType;\n};\n\ntype FormValueConfig<T> = {\n initialValue: T;\n initialDefaultValue?: T;\n transformers?: Partial<FormValueTransformers<T>>;\n};\n\nconst defaultTransformers: FormValueTransformers<string> = {\n setValue: (value) => value || '',\n getValue: (value) => value,\n setDefaultValue: (value) => value || '',\n getDefaultValue: (value) => value,\n setFormValue: (value, _: IgcFormControl) => value || null,\n};\n\nexport const defaultBooleanTransformers: Partial<\n FormValueTransformers<boolean>\n> = {\n setValue: Boolean,\n setDefaultValue: Boolean,\n setFormValue: (checked, host) => {\n return checked && 'value' in host ? (host.value as string) || 'on' : null;\n },\n};\n\nexport const defaultNumberTransformers: Partial<FormValueTransformers<number>> =\n {\n setValue: asNumber,\n setDefaultValue: asNumber,\n setFormValue: (value) => value.toString(),\n };\n\nexport const defaultDateTimeTransformers: Partial<\n FormValueTransformers<Date | null>\n> = {\n setValue: convertToDate,\n setDefaultValue: convertToDate,\n setFormValue: getDateFormValue,\n};\n\nexport const defaultFileListTransformer: Partial<\n FormValueTransformers<FileList | null>\n> = {\n setValue: (value) => value || null,\n getValue: (value) => value,\n setDefaultValue: (value) => value || null,\n getDefaultValue: (value) => value,\n setFormValue: (files: FileList | null, host: IgcFormControl) => {\n if (!host.name || !files) {\n return null;\n }\n\n const data = new FormData();\n\n for (const file of Array.from(files)) {\n data.append(host.name, file);\n }\n\n return data;\n },\n};\n\n/**\n * Converts a DateDateRangeValue object to FormData with\n * start and end Date values as ISO 8601 strings.\n * The keys are prefixed with the host name\n * and suffixed with 'start' or 'end' accordingly.\n * In case the host does not have a name, it does not participate in form submission.\n *\n * If the date values are null or undefined, the form data values\n * are empty strings ''.\n */\nexport function getDateRangeFormValue(\n value: DateRangeValue | null,\n host: IgcFormControl\n): FormValueType {\n if (!host.name) {\n return null;\n }\n\n const start = value?.start?.toISOString();\n const end = value?.end?.toISOString();\n\n const fd = new FormData();\n const prefix = `${host.name}-`;\n\n if (start) {\n fd.append(`${prefix}start`, start);\n }\n if (end) {\n fd.append(`${prefix}end`, end);\n }\n\n return fd;\n}\n\nexport const defaultDateRangeTransformers: Partial<\n FormValueTransformers<DateRangeValue | null>\n> = {\n setValue: convertToDateRange,\n setDefaultValue: convertToDateRange,\n setFormValue: getDateRangeFormValue,\n};\n\n/* blazorSuppress */\nexport class FormValue<T> {\n private static readonly setFormValueKey = '_setFormValue' as const;\n\n private _host: IgcFormControl;\n private _value: T;\n private _defaultValue: T;\n private _transformers: FormValueTransformers<T>;\n private _setFormValue: IgcFormControl[typeof FormValue.setFormValueKey];\n\n constructor(host: IgcFormControl, config: FormValueConfig<T>) {\n this._host = host;\n this._value = config.initialValue;\n this._defaultValue = config.initialDefaultValue ?? this._value;\n this._setFormValue = host[FormValue.setFormValueKey];\n\n this._transformers = {\n ...defaultTransformers,\n ...config.transformers,\n } as FormValueTransformers<T>;\n }\n\n public setValueAndFormState(value: T): void {\n this.value = value;\n this._setFormValue.call(\n this._host,\n this._transformers.setFormValue(this.value, this._host)\n );\n }\n\n public set defaultValue(value: T) {\n this._defaultValue = this._transformers.setDefaultValue(value);\n }\n\n public get defaultValue(): T {\n return this._transformers.getDefaultValue(this._defaultValue);\n }\n\n public set value(value: T) {\n this._value = this._transformers.setValue(value);\n }\n\n public get value(): T {\n return this._transformers.getValue(this._value);\n }\n}\n\nexport function createFormValueState<T>(\n host: IgcFormControl,\n config: FormValueConfig<T>\n): FormValue<T> {\n return new FormValue(host, config);\n}\n\nexport type FormValueOf<T> = ReturnType<typeof createFormValueState<T>>;\n"]}
1
+ {"version":3,"file":"form-value.js","sourceRoot":"","sources":["../../../../../src/components/common/mixins/forms/form-value.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,4BAA4B,GAE7B,MAAM,wBAAwB,CAAC;AAIhC,MAAM,OAAO,SAAS;IAUpB,YAAY,IAAoB,EAAE,MAA0B;QAC1D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,mBAAmB,IAAI,IAAI,CAAC,MAAM,CAAC;QAC/D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAErD,IAAI,CAAC,aAAa,GAAG;YACnB,GAAG,4BAA4B;YAC/B,GAAG,MAAM,CAAC,YAAY;SACK,CAAC;IAChC,CAAC;IAEM,oBAAoB,CAAC,KAAQ;QAClC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CACxD,CAAC;IACJ,CAAC;IAED,IAAW,YAAY,CAAC,KAAQ;QAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC;IAED,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAChE,CAAC;IAED,IAAW,KAAK,CAAC,KAAQ;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;;AA3CuB,yBAAe,GAAG,eAAwB,CAAC;AA8CrE,MAAM,UAAU,oBAAoB,CAClC,IAAgB,EAChB,MAA0B;IAE1B,OAAO,IAAI,SAAS,CAAC,IAAsB,EAAE,MAAM,CAAC,CAAC;AACvD,CAAC","sourcesContent":["import type { LitElement } from 'lit';\nimport {\n type FormValueConfig,\n FormValueDefaultTransformers,\n type FormValueTransformers,\n} from './form-transformers.js';\nimport type { IgcFormControl } from './types.js';\n\n/* blazorSuppress */\nexport class FormValue<T> {\n private static readonly setFormValueKey = '_setFormValue' as const;\n\n private readonly _host: IgcFormControl;\n private readonly _transformers: FormValueTransformers<T>;\n private readonly _setFormValue: IgcFormControl[typeof FormValue.setFormValueKey];\n\n private _value: T;\n private _defaultValue: T;\n\n constructor(host: IgcFormControl, config: FormValueConfig<T>) {\n this._host = host;\n this._value = config.initialValue;\n this._defaultValue = config.initialDefaultValue ?? this._value;\n this._setFormValue = host[FormValue.setFormValueKey];\n\n this._transformers = {\n ...FormValueDefaultTransformers,\n ...config.transformers,\n } as FormValueTransformers<T>;\n }\n\n public setValueAndFormState(value: T): void {\n this.value = value;\n this._setFormValue.call(\n this._host,\n this._transformers.setFormValue(this.value, this._host)\n );\n }\n\n public set defaultValue(value: T) {\n this._defaultValue = this._transformers.setDefaultValue(value);\n }\n\n public get defaultValue(): T {\n return this._transformers.getDefaultValue(this._defaultValue);\n }\n\n public set value(value: T) {\n this._value = this._transformers.setValue(value);\n }\n\n public get value(): T {\n return this._transformers.getValue(this._value);\n }\n}\n\nexport function createFormValueState<T>(\n host: LitElement,\n config: FormValueConfig<T>\n): FormValue<T> {\n return new FormValue(host as IgcFormControl, config);\n}\n"]}
@@ -5,9 +5,8 @@ export type FormValueType = string | File | FormData | null;
5
5
  export type IgcFormControl = LitElement & (FormAssociatedElementInterface | FormAssociatedCheckboxElementInterface);
6
6
  declare class BaseFormAssociatedElement {
7
7
  static readonly formAssociated: boolean;
8
- private __internals;
9
- protected _formValue: unknown;
10
- protected _dirty: boolean;
8
+ private readonly __internals;
9
+ protected readonly _formValue: unknown;
11
10
  protected _pristine: boolean;
12
11
  protected _disabled: boolean;
13
12
  protected _invalid: boolean;
@@ -43,6 +42,20 @@ declare class BaseFormAssociatedElement {
43
42
  * that is a candidate for constraint validation.
44
43
  */
45
44
  get willValidate(): boolean;
45
+ /**
46
+ * Sets the **touched** state of the component and invokes {@link BaseFormAssociatedElement._validate | `_validate()`} method.
47
+ *
48
+ * As the naming of the method suggests, this should be invoked either on **blur** or **focusout**, depending
49
+ * on the DOM structure and how focus state is managed by the component.
50
+ */
51
+ protected _handleBlur(): void;
52
+ /**
53
+ * Sets the **touched** state of the component and **DOES NOT** invoke {@link BaseFormAssociatedElement._validate | `_validate()`} method.
54
+ *
55
+ * This should be called whenever a user interaction triggers a response, usually an event, from the component in
56
+ * regards to its value.
57
+ */
58
+ protected _setTouchedState(): void;
46
59
  /**
47
60
  * Sets the default value of the component.
48
61
  * Called in `attributeChangedCallback`(i.e. when the `value` attribute of the control is set).
@@ -53,15 +66,9 @@ declare class BaseFormAssociatedElement {
53
66
  */
54
67
  protected _restoreDefaultValue(): void;
55
68
  /**
56
- * Executes the {@link BaseFormAssociatedElement._updateValidity | `_updateValidity()`} hook and then applies
57
- * the {@link BaseFormAssociatedElement.invalid | `invalid`} attribute on the control and the associated styles
58
- * if the element has completed the first update cycle or it has been interacted with by the user.
69
+ * Executes the component validators and updates the internal validity state.
59
70
  */
60
71
  protected _validate(message?: string): void;
61
- /**
62
- * Executes the component's validators and updates the internal validity state.
63
- */
64
- protected _updateValidity(message?: string): void;
65
72
  /**
66
73
  * Sets the component's submission value and state.
67
74
  */
@@ -125,4 +132,6 @@ export declare class FormRequiredInterface {
125
132
  set required(value: boolean);
126
133
  get required(): boolean;
127
134
  }
135
+ export declare const InternalInvalidEvent = "igc-form-internal-invalid";
136
+ export declare const InternalResetEvent = "igc-form-internal-reset";
128
137
  export {};
@@ -1,2 +1,3 @@
1
- export {};
1
+ export const InternalInvalidEvent = 'igc-form-internal-invalid';
2
+ export const InternalResetEvent = 'igc-form-internal-reset';
2
3
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/components/common/mixins/forms/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { LitElement } from 'lit';\nimport type { Validator } from '../../validators.js';\n\nexport type FormRestoreMode = 'autocomplete' | 'restore';\nexport type FormValueType = string | File | FormData | null;\nexport type IgcFormControl = LitElement &\n (FormAssociatedElementInterface | FormAssociatedCheckboxElementInterface);\n\ndeclare class BaseFormAssociatedElement {\n public static readonly formAssociated: boolean;\n\n private __internals: ElementInternals;\n\n // Properties\n protected _formValue: unknown;\n protected _dirty: boolean;\n protected _pristine: boolean;\n protected _disabled: boolean;\n protected _invalid: boolean;\n\n protected get __validators(): Validator[];\n\n /**\n * The disabled state of the component.\n * @attr\n * @default false\n */\n public disabled: boolean;\n\n /**\n * Sets the control into invalid state (visual state only).\n * @attr\n * @default false\n */\n public invalid: boolean;\n\n /**\n * The name attribute of the control.\n * @attr\n */\n public name: string;\n\n /** Returns the HTMLFormElement associated with this element. */\n public get form(): HTMLFormElement | null;\n\n /**\n * Returns a ValidityState object which represents the different validity states\n * the element can be in, with respect to constraint validation.\n */\n public get validity(): ValidityState;\n\n /** A string containing the validation message of this element. */\n public get validationMessage(): string;\n\n /**\n * A boolean value which returns true if the element is a submittable element\n * that is a candidate for constraint validation.\n */\n public get willValidate(): boolean;\n\n // Methods\n\n /**\n * Sets the default value of the component.\n * Called in `attributeChangedCallback`(i.e. when the `value` attribute of the control is set).\n */\n protected _setDefaultValue(current: string | null): void;\n\n /**\n * Called when the associated parent form is reset.\n */\n protected _restoreDefaultValue(): void;\n\n /**\n * Executes the {@link BaseFormAssociatedElement._updateValidity | `_updateValidity()`} hook and then applies\n * the {@link BaseFormAssociatedElement.invalid | `invalid`} attribute on the control and the associated styles\n * if the element has completed the first update cycle or it has been interacted with by the user.\n */\n protected _validate(message?: string): void;\n\n /**\n * Executes the component's validators and updates the internal validity state.\n */\n protected _updateValidity(message?: string): void;\n\n /**\n * Sets the component's submission value and state.\n */\n protected _setFormValue(value: FormValueType, state?: FormValueType): void;\n\n /**\n * Called by the browser when it associates/disassociates the component with/from a given form element.\n * Receives the form element as a parameter.\n *\n * @remarks\n * This is not implemented currently.\n */\n protected formAssociatedCallback(form: HTMLFormElement): void;\n\n /**\n * Called whenever the component or a parent `fieldset` elements are disabled.\n * Receives the current disabled state.\n */\n protected formDisabledCallback(state: boolean): void;\n\n /**\n * Called when the form is reset.\n * Resets the component value/checked state to the default one, internal state and validation.\n *\n * @remarks\n * The default implementation calls {@link BaseFormAssociatedElement._restoreDefaultValue | `_restoreDefaultValue`}.\n * If additional customization is needed, it is better to override that method instead of this callback.\n */\n protected formResetCallback(): void;\n\n /**\n * Called when the browser attempts to automatically fill out the component.\n *\n * @remarks\n * This is not implemented currently.\n */\n protected formStateRestoreCallback(\n state: FormValueType,\n mode: FormRestoreMode\n ): void;\n\n /** Checks for validity of the control and emits the invalid event if it invalid. */\n public checkValidity(): boolean;\n\n /** Checks for validity of the control and shows the browser message if it invalid. */\n public reportValidity(): boolean;\n\n /**\n * Sets a custom validation message for the control.\n * As long as `message` is not empty, the control is considered invalid.\n */\n public setCustomValidity(message: string): void;\n}\n\nexport declare class FormAssociatedElementInterface extends BaseFormAssociatedElement {\n /** The initial value of the component. */\n public set defaultValue(value: unknown);\n public get defaultValue(): unknown;\n}\n\nexport declare class FormAssociatedCheckboxElementInterface extends BaseFormAssociatedElement {\n /** The initial checked state of the component. */\n public set defaultChecked(value: boolean);\n public get defaultChecked(): boolean;\n}\n\nexport declare class FormRequiredInterface {\n protected _required: boolean;\n\n /**\n * When set, makes the component a required field for validation.\n * @attr\n * @default false\n */\n public set required(value: boolean);\n public get required(): boolean;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/components/common/mixins/forms/types.ts"],"names":[],"mappings":"AAiLA,MAAM,CAAC,MAAM,oBAAoB,GAAG,2BAA2B,CAAC;AAChE,MAAM,CAAC,MAAM,kBAAkB,GAAG,yBAAyB,CAAC","sourcesContent":["import type { LitElement } from 'lit';\nimport type { ElementInternalsController } from '../../controllers/internals.js';\nimport type { Validator } from '../../validators.js';\n\nexport type FormRestoreMode = 'autocomplete' | 'restore';\nexport type FormValueType = string | File | FormData | null;\nexport type IgcFormControl = LitElement &\n (FormAssociatedElementInterface | FormAssociatedCheckboxElementInterface);\n\ndeclare class BaseFormAssociatedElement {\n public static readonly formAssociated: boolean;\n\n //#region Properties\n\n private readonly __internals: ElementInternalsController;\n protected readonly _formValue: unknown;\n\n protected _pristine: boolean;\n protected _disabled: boolean;\n protected _invalid: boolean;\n\n protected get __validators(): Validator[];\n\n /**\n * The disabled state of the component.\n * @attr\n * @default false\n */\n public disabled: boolean;\n\n /**\n * Sets the control into invalid state (visual state only).\n * @attr\n * @default false\n */\n public invalid: boolean;\n\n /**\n * The name attribute of the control.\n * @attr\n */\n public name: string;\n\n /** Returns the HTMLFormElement associated with this element. */\n public get form(): HTMLFormElement | null;\n\n /**\n * Returns a ValidityState object which represents the different validity states\n * the element can be in, with respect to constraint validation.\n */\n public get validity(): ValidityState;\n\n /** A string containing the validation message of this element. */\n public get validationMessage(): string;\n\n /**\n * A boolean value which returns true if the element is a submittable element\n * that is a candidate for constraint validation.\n */\n public get willValidate(): boolean;\n\n //#endregion\n\n //#region Methods\n\n /**\n * Sets the **touched** state of the component and invokes {@link BaseFormAssociatedElement._validate | `_validate()`} method.\n *\n * As the naming of the method suggests, this should be invoked either on **blur** or **focusout**, depending\n * on the DOM structure and how focus state is managed by the component.\n */\n protected _handleBlur(): void;\n\n /**\n * Sets the **touched** state of the component and **DOES NOT** invoke {@link BaseFormAssociatedElement._validate | `_validate()`} method.\n *\n * This should be called whenever a user interaction triggers a response, usually an event, from the component in\n * regards to its value.\n */\n protected _setTouchedState(): void;\n\n /**\n * Sets the default value of the component.\n * Called in `attributeChangedCallback`(i.e. when the `value` attribute of the control is set).\n */\n protected _setDefaultValue(current: string | null): void;\n\n /**\n * Called when the associated parent form is reset.\n */\n protected _restoreDefaultValue(): void;\n\n /**\n * Executes the component validators and updates the internal validity state.\n */\n protected _validate(message?: string): void;\n\n /**\n * Sets the component's submission value and state.\n */\n protected _setFormValue(value: FormValueType, state?: FormValueType): void;\n\n /**\n * Called by the browser when it associates/disassociates the component with/from a given form element.\n * Receives the form element as a parameter.\n *\n * @remarks\n * This is not implemented currently.\n */\n protected formAssociatedCallback(form: HTMLFormElement): void;\n\n /**\n * Called whenever the component or a parent `fieldset` elements are disabled.\n * Receives the current disabled state.\n */\n protected formDisabledCallback(state: boolean): void;\n\n /**\n * Called when the form is reset.\n * Resets the component value/checked state to the default one, internal state and validation.\n *\n * @remarks\n * The default implementation calls {@link BaseFormAssociatedElement._restoreDefaultValue | `_restoreDefaultValue`}.\n * If additional customization is needed, it is better to override that method instead of this callback.\n */\n protected formResetCallback(): void;\n\n /**\n * Called when the browser attempts to automatically fill out the component.\n *\n * @remarks\n * This is not implemented currently.\n */\n protected formStateRestoreCallback(\n state: FormValueType,\n mode: FormRestoreMode\n ): void;\n\n /** Checks for validity of the control and emits the invalid event if it invalid. */\n public checkValidity(): boolean;\n\n /** Checks for validity of the control and shows the browser message if it invalid. */\n public reportValidity(): boolean;\n\n /**\n * Sets a custom validation message for the control.\n * As long as `message` is not empty, the control is considered invalid.\n */\n public setCustomValidity(message: string): void;\n\n //#endregion\n}\n\nexport declare class FormAssociatedElementInterface extends BaseFormAssociatedElement {\n /** The initial value of the component. */\n public set defaultValue(value: unknown);\n public get defaultValue(): unknown;\n}\n\nexport declare class FormAssociatedCheckboxElementInterface extends BaseFormAssociatedElement {\n /** The initial checked state of the component. */\n public set defaultChecked(value: boolean);\n public get defaultChecked(): boolean;\n}\n\nexport declare class FormRequiredInterface {\n protected _required: boolean;\n\n /**\n * When set, makes the component a required field for validation.\n * @attr\n * @default false\n */\n public set required(value: boolean);\n public get required(): boolean;\n}\n\nexport const InternalInvalidEvent = 'igc-form-internal-invalid';\nexport const InternalResetEvent = 'igc-form-internal-reset';\n"]}
@@ -86,6 +86,7 @@ export declare function toKebabCase(text: string): string;
86
86
  export declare function isFunction(value: unknown): value is CallableFunction;
87
87
  export declare function isString(value: unknown): value is string;
88
88
  export declare function isObject(value: unknown): value is object;
89
+ export declare function isPlainObject(value: unknown): value is Record<PropertyKey, unknown>;
89
90
  export declare function isEventListenerObject(x: unknown): x is EventListenerObject;
90
91
  export declare function addWeakEventListener(element: Element, event: string, listener: EventListenerOrEventListenerObject, options?: AddEventListenerOptions | boolean): void;
91
92
  type EventTypeOf<T extends keyof HTMLElementEventMap | keyof WindowEventMap> = (HTMLElementEventMap & WindowEventMap)[T];
@@ -115,4 +116,23 @@ export declare function equal<T>(a: unknown, b: T, visited?: WeakSet<WeakKey>):
115
116
  export type RequiredProps<T, K extends keyof T> = T & {
116
117
  [P in K]-?: T[P];
117
118
  };
119
+ export declare function setStyles(element: HTMLElement, styles: Partial<CSSStyleDeclaration>): void;
120
+ /**
121
+ * Merges the properties of `source` into `target` performing a recursive deep merge over POJOs and arrays.
122
+ *
123
+ * @remarks
124
+ * This function mutates the `target` object.
125
+ * If that is not the desired outcome, see {@link toMerged} for another approach.
126
+ */
127
+ export declare function merge<T extends Record<PropertyKey, any>, S extends Record<PropertyKey, any>>(target: T, source: S): T & S;
128
+ /**
129
+ * Just like {@link merge} but it does not mutate the `target` object instead
130
+ * mutating a structured clone of it.
131
+ */
132
+ export declare function toMerged<T extends Record<PropertyKey, any>, S extends Record<PropertyKey, any>>(target: T, source: S): T & S;
133
+ /**
134
+ * Similar to Lit's `ifDefined` directive except one can check `assertion`
135
+ * and bind a different `value` through this wrapper.
136
+ */
137
+ export declare function bindIf<T>(assertion: unknown, value: T): NonNullable<T>;
118
138
  export {};
@@ -1,4 +1,4 @@
1
- import { isServer } from 'lit';
1
+ import { isServer, nothing } from 'lit';
2
2
  export const asPercent = (part, whole) => (part / whole) * 100;
3
3
  export const clamp = (number, min, max) => Math.max(min, Math.min(number, max));
4
4
  export function numberOfDecimals(number) {
@@ -144,6 +144,21 @@ export function isString(value) {
144
144
  export function isObject(value) {
145
145
  return value != null && typeof value === 'object';
146
146
  }
147
+ export function isPlainObject(value) {
148
+ if (!isObject(value)) {
149
+ return false;
150
+ }
151
+ const proto = Object.getPrototypeOf(value);
152
+ const hasObjectPrototype = proto === null ||
153
+ proto === Object.prototype ||
154
+ Object.getPrototypeOf(proto) === null;
155
+ return hasObjectPrototype
156
+ ? Object.prototype.toString.call(value) === '[object Object]'
157
+ : false;
158
+ }
159
+ function isUnsafeProperty(key) {
160
+ return key === '__proto__' || key === 'constructor' || key === 'prototype';
161
+ }
147
162
  export function isEventListenerObject(x) {
148
163
  return isObject(x) && 'handleEvent' in x;
149
164
  }
@@ -295,4 +310,47 @@ export function equal(a, b, visited = new WeakSet()) {
295
310
  }
296
311
  return false;
297
312
  }
313
+ export function setStyles(element, styles) {
314
+ merge(element.style, styles);
315
+ }
316
+ export function merge(target, source) {
317
+ const sourceKeys = Object.keys(source);
318
+ const length = sourceKeys.length;
319
+ for (let i = 0; i < length; i++) {
320
+ const key = sourceKeys[i];
321
+ if (isUnsafeProperty(key)) {
322
+ continue;
323
+ }
324
+ const sourceValue = source[key];
325
+ const targetValue = target[key];
326
+ if (Array.isArray(sourceValue)) {
327
+ if (Array.isArray(targetValue)) {
328
+ target[key] = merge(targetValue, sourceValue);
329
+ }
330
+ else {
331
+ target[key] = merge([], sourceValue);
332
+ }
333
+ }
334
+ else if (isPlainObject(sourceValue)) {
335
+ if (isPlainObject(targetValue)) {
336
+ target[key] = merge(targetValue, sourceValue);
337
+ }
338
+ else {
339
+ target[key] = merge({}, sourceValue);
340
+ }
341
+ }
342
+ else if (targetValue === undefined || sourceValue !== undefined) {
343
+ target[key] = sourceValue;
344
+ }
345
+ }
346
+ return target;
347
+ }
348
+ export function toMerged(target, source) {
349
+ return merge(structuredClone(target), source);
350
+ }
351
+ export function bindIf(assertion, value) {
352
+ return assertion
353
+ ? (value ?? nothing)
354
+ : nothing;
355
+ }
298
356
  //# sourceMappingURL=util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/components/common/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAE/B,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;AAE/E,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,MAAc,EAAE,GAAW,EAAE,GAAW,EAAE,EAAE,CAChE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAEvC,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,SAAS,GAAG,CAAC;IACxD,MAAM,MAAM,GAAG,EAAE,IAAI,SAAS,CAAC;IAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAa,EACb,GAAW,EACX,GAAW;IAEX,OAAO,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,GAAG,EAAE;QACV,CAAC,EAAE,CAAC;QACJ,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;AACJ,CAAC;AAKD,MAAM,UAAU,KAAK,CAAC,OAAoB;IACxC,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACtC,CAAC;AAYD,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,GAAG,MAAiB;IACjE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE7B,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE,CACnE,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7C,CAAC;AACJ,CAAC;AAaD,MAAM,UAAU,QAAQ,CAAC,KAAc,EAAE,QAAQ,GAAG,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAe,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,CAAC;AAeD,MAAM,UAAU,IAAI,CAAC,GAAW,EAAE,GAAW,EAAE,KAAa;IAC1D,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QAChB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QAChB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAc,KAAQ;IAC7C,OAAO,KAAK,KAAK,SAAS,CAAC;AAC7B,CAAC;AAOD,SAAS,gBAAgB,CAAiB,SAA+B;IACvE,OAAO;QACL,UAAU,EAAE,CAAC,IAAO,EAAU,EAAE,CAC9B,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC;YAC3B,CAAC,CAAC,UAAU,CAAC,aAAa;YAC1B,CAAC,CAAC,UAAU,CAAC,WAAW;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,CAAC,CAAC,SAAS,CACxB,IAAU,EACV,OAA6B;IAE7B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,EAAE,IAAI;QAC9B,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;QAC1B,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;IAExB,MAAM,UAAU,GAAG,OAAO,EAAE,MAAM;QAChC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC;QAClC,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAE3E,OAAO,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC7B,MAAM,UAAU,CAAC,WAAgB,CAAC;IACpC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,OAAgB,EAChB,OAA4B;IAE5B,OAAO,OAAO,CAAC,WAAW,CAAC,OAAO,CAA0B,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAiB,EAAE,EAAU;IAClE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,OAAO,IAAI,YAAY,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAoB,KAAY;IACtE,OAAO,KAAK,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAQ,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,SAAmD,EACnD,KAAY;IAEZ,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC;QAC9B,CAAC,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QACtC,CAAC,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEjC,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAkB,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,OAAO,CAAI,KAAU,EAAE,GAAiC;IACtE,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE/B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,KAAK,CAAI,GAAQ;IAC/B,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAM,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,IAAI,CAAI,GAAQ;IAC9B,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAM,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,CAAS,EAAE,CAAS;IACzC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAMD,MAAM,UAAU,IAAI,CAAI,QAA6B,EAAE,CAAS;IAC9D,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAE9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC,EAAE,CAAC;IACN,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAiBD,MAAM,SAAS,CAAC,CAAC,KAAK,CAAI,GAAQ,EAAE,IAAY;IAC9C,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1C,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IACvD,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,CAAU;IAC9C,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,aAAa,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAgB,EAChB,KAAa,EACb,QAA4C,EAC5C,OAA2C;IAE3C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,CAAC,GAAU,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhC,OAAO,qBAAqB,CAAC,OAAO,CAAC;YACnC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC;YAC1B,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC;AAWD,MAAM,UAAU,oBAAoB,CAGlC,MAAmB,EACnB,SAAY,EACZ,OAA2C,EAC3C,OAA2C;IAE3C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,KAAY,EAAE,EAAE,CACpC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAuB,CAAC,CAAC;IAEhD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC;AAKD,MAAM,UAAU,OAAO,CACrB,CAAoC;IAEpC,OAAO,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,OAAO,CAAI,KAAe;IACxC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,KAAU,EACV,QAA+B;IAE/B,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,MAAM,KAAK,GAAQ,EAAE,CAAC;IAEtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACzB,CAAC;AAGD,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAErE,OAAO;QACL,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,GAAG;QACrB,CAAC,EAAE,GAAG,GAAG,MAAM,GAAG,GAAG;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,MAAM,GAAG,GAAG,UAAU,CAAC,gBAAgB,IAAI,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,OAAqB,EACrB,MAA8B;IAE9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,OAAO,CAAC,cAAc,CACpB,MAAM,CAAC,MAAM,CACX;QACE,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS;KAClB,EACD,MAAM,CACP,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,KAAK,CAAI,CAAU,EAAE,CAAI,EAAE,OAAO,GAAG,IAAI,OAAO,EAAE;IAEhE,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QAGD,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAGf,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;QACtD,CAAC;QAGD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACzC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;gBACtB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzC,IAAI,KAAK,GAAG,KAAK,CAAC;gBAClB,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;oBACzC,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;wBACjE,KAAK,GAAG,IAAI,CAAC;wBACb,MAAM;oBACR,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAGD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACzC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;gBACtB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,CAAC,EAAE,CAAC;gBACvB,IAAI,KAAK,GAAG,KAAK,CAAC;gBAClB,KAAK,MAAM,MAAM,IAAI,CAAC,EAAE,CAAC;oBACvB,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;wBACnC,KAAK,GAAG,IAAI,CAAC;wBACb,MAAM;oBACR,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAGD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;YACxB,IAAI,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;gBACxB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;oBAChC,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAGD,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC3C,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC7C,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;QACvC,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAqB,CAAC,EAAE,CAAC,CAAC,GAAqB,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;gBACxE,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAElB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import { isServer } from 'lit';\n\nexport const asPercent = (part: number, whole: number) => (part / whole) * 100;\n\nexport const clamp = (number: number, min: number, max: number) =>\n Math.max(min, Math.min(number, max));\n\nexport function numberOfDecimals(number: number): number {\n const [_, decimals] = number.toString().split('.');\n return decimals ? decimals.length : 0;\n}\n\nexport function roundPrecise(number: number, magnitude = 1): number {\n const factor = 10 ** magnitude;\n return Math.round(number * factor) / factor;\n}\n\nexport function numberInRangeInclusive(\n value: number,\n min: number,\n max: number\n) {\n return value >= min && value <= max;\n}\n\nexport function createCounter() {\n let i = 0;\n return () => {\n i++;\n return i;\n };\n}\n\n/**\n * Returns whether an element has a Left-to-Right directionality.\n */\nexport function isLTR(element: HTMLElement) {\n return element.matches(':dir(ltr)');\n}\n\n/**\n * Builds a string from format specifiers and replacement parameters.\n * Will coerce non-string parameters to their string representations.\n *\n * @example\n * ```typescript\n * formatString('{0} says \"{1}\".', 'John', 'Hello'); // 'John says \"Hello\".'\n * formatString('{1} is greater than {0}', 0, 1); // '1 is greater than 0'\n * ```\n */\nexport function formatString(template: string, ...params: unknown[]): string {\n const length = params.length;\n\n return template.replace(/{(\\d+)}/g, (match: string, index: number) =>\n index >= length ? match : `${params[index]}`\n );\n}\n\n/**\n * Parse the passed `value` as a number or return the `fallback` if it can't be done.\n *\n * @example\n * ```typescript\n * asNumber('5'); // 5\n * asNumber('3.14'); // 3.14\n * asNumber('five'); // 0\n * asNUmber('five', 5); // 5\n * ```\n */\nexport function asNumber(value: unknown, fallback = 0) {\n const parsed = Number.parseFloat(value as string);\n return Number.isNaN(parsed) ? fallback : parsed;\n}\n\n/**\n * Returns the value wrapped between the min and max bounds.\n *\n * If the value is greater than max, returns the min and vice-versa.\n * If the value is between the bounds, it is returned unchanged.\n *\n * @example\n * ```typescript\n * wrap(1, 4, 2); // 2\n * wrap(1, 4, 5); // 1\n * wrap(1, 4, -1); // 4\n * ```\n */\nexport function wrap(min: number, max: number, value: number) {\n if (value < min) {\n return max;\n }\n if (value > max) {\n return min;\n }\n\n return value;\n}\n\nexport function isDefined<T = unknown>(value: T) {\n return value !== undefined;\n}\n\nexport type IterNodesOptions<T = Node> = {\n show?: keyof typeof NodeFilter;\n filter?: (node: T) => boolean;\n};\n\nfunction createNodeFilter<T extends Node>(predicate: (node: T) => boolean) {\n return {\n acceptNode: (node: T): number =>\n !predicate || predicate(node)\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_SKIP,\n };\n}\n\nexport function* iterNodes<T extends Node>(\n root: Node,\n options?: IterNodesOptions<T>\n): Generator<T> {\n if (!isDefined(globalThis.document)) {\n return;\n }\n\n const whatToShow = options?.show\n ? NodeFilter[options.show]\n : NodeFilter.SHOW_ALL;\n\n const nodeFilter = options?.filter\n ? createNodeFilter(options.filter)\n : undefined;\n\n const treeWalker = document.createTreeWalker(root, whatToShow, nodeFilter);\n\n while (treeWalker.nextNode()) {\n yield treeWalker.currentNode as T;\n }\n}\n\nexport function getRoot(\n element: Element,\n options?: GetRootNodeOptions\n): Document | ShadowRoot {\n return element.getRootNode(options) as Document | ShadowRoot;\n}\n\nexport function getElementByIdFromRoot(root: HTMLElement, id: string) {\n return getRoot(root).getElementById(id);\n}\n\nexport function isElement(node: unknown): node is Element {\n return node instanceof Node && node.nodeType === Node.ELEMENT_NODE;\n}\n\nexport function getElementsFromEventPath<T extends Element>(event: Event) {\n return event.composedPath().filter((item) => isElement(item)) as T[];\n}\n\nexport function findElementFromEventPath<T extends Element>(\n predicate: string | ((element: Element) => boolean),\n event: Event\n) {\n const func = isString(predicate)\n ? (e: Element) => e.matches(predicate)\n : (e: Element) => predicate(e);\n\n return getElementsFromEventPath(event).find(func) as T | undefined;\n}\n\nexport function groupBy<T>(array: T[], key: keyof T | ((item: T) => any)) {\n const result: Record<string, T[]> = {};\n const _get = isFunction(key) ? key : (item: T) => item[key];\n\n for (const item of array) {\n const category = _get(item);\n const group = result[category];\n\n if (Array.isArray(group)) {\n group.push(item);\n } else {\n result[category] = [item];\n }\n }\n\n return result;\n}\n\nexport function first<T>(arr: T[]) {\n return arr.at(0) as T;\n}\n\nexport function last<T>(arr: T[]) {\n return arr.at(-1) as T;\n}\n\nexport function modulo(n: number, d: number) {\n return ((n % d) + d) % d;\n}\n\n/**\n * Creates an array of `n` elements from a given iterator.\n *\n */\nexport function take<T>(iterable: IterableIterator<T>, n: number) {\n const result: T[] = [];\n let i = 0;\n let current = iterable.next();\n\n while (i < n && !current.done) {\n result.push(current.value);\n current = iterable.next();\n i++;\n }\n\n return result;\n}\n\n/**\n * Splits an array into chunks of length `size` and returns a generator\n * yielding each chunk.\n * The last chunk may contain less than `size` elements.\n *\n * @example\n * ```typescript\n * const arr = [0,1,2,3,4,5,6,7,8,9];\n *\n * Array.from(chunk(arr, 2)) // [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]]\n * Array.from(chunk(arr, 3)) // [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]]\n * Array.from(chunk([], 3)) // []\n * Array.from(chunk(arr, -3)) // Error\n * ```\n */\nexport function* chunk<T>(arr: T[], size: number) {\n if (size < 1) {\n throw new Error('size must be an integer >= 1');\n }\n for (let i = 0; i < arr.length; i += size) {\n yield arr.slice(i, i + size);\n }\n}\n\nexport function splitToWords(text: string) {\n const input = text.replaceAll(/[^a-zA-Z0-9\\s-_]/g, '');\n if (/[\\s-_]+/.test(input)) return input.split(/[\\s-_]+/);\n return input.split(/(?=[A-Z])+/);\n}\n\nexport function toKebabCase(text: string): string {\n const input = text.trim();\n return splitToWords(input).join('-').toLocaleLowerCase();\n}\n\nexport function isFunction(value: unknown): value is CallableFunction {\n return typeof value === 'function';\n}\n\nexport function isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n\nexport function isObject(value: unknown): value is object {\n return value != null && typeof value === 'object';\n}\n\nexport function isEventListenerObject(x: unknown): x is EventListenerObject {\n return isObject(x) && 'handleEvent' in x;\n}\n\nexport function addWeakEventListener(\n element: Element,\n event: string,\n listener: EventListenerOrEventListenerObject,\n options?: AddEventListenerOptions | boolean\n): void {\n const weakRef = new WeakRef(listener);\n const wrapped = (evt: Event) => {\n const handler = weakRef.deref();\n\n return isEventListenerObject(handler)\n ? handler.handleEvent(evt)\n : handler?.(evt);\n };\n\n element.addEventListener(event, wrapped, options);\n}\n\ntype EventTypeOf<T extends keyof HTMLElementEventMap | keyof WindowEventMap> =\n (HTMLElementEventMap & WindowEventMap)[T];\n\n/**\n * Safely adds an event listener to an HTMLElement, automatically handling\n * server-side rendering environments by doing nothing if `isServer` is true.\n * This function also correctly binds the `handler`'s `this` context to the `target` element\n * and ensures proper event type inference.\n */\nexport function addSafeEventListener<\n E extends keyof HTMLElementEventMap | keyof WindowEventMap,\n>(\n target: HTMLElement,\n eventName: E,\n handler: (event: EventTypeOf<E>) => unknown,\n options?: boolean | AddEventListenerOptions\n): void {\n if (isServer) {\n return;\n }\n\n const boundHandler = (event: Event) =>\n handler.call(target, event as EventTypeOf<E>);\n\n target.addEventListener(eventName, boundHandler, options);\n}\n\n/**\n * Returns whether a given collection is empty.\n */\nexport function isEmpty<T, U extends object>(\n x: ArrayLike<T> | Set<T> | Map<U, T>\n): boolean {\n return 'length' in x ? x.length < 1 : x.size < 1;\n}\n\nexport function asArray<T>(value?: T | T[]): T[] {\n if (!isDefined(value)) return [];\n return Array.isArray(value) ? value : [value];\n}\n\nexport function partition<T>(\n array: T[],\n isTruthy: (value: T) => boolean\n): [truthy: T[], falsy: T[]] {\n const truthy: T[] = [];\n const falsy: T[] = [];\n\n for (const item of array) {\n (isTruthy(item) ? truthy : falsy).push(item);\n }\n\n return [truthy, falsy];\n}\n\n/** Returns the center x/y coordinate of a given element. */\nexport function getCenterPoint(element: Element) {\n const { left, top, width, height } = element.getBoundingClientRect();\n\n return {\n x: left + width * 0.5,\n y: top + height * 0.5,\n };\n}\n\nexport function roundByDPR(value: number): number {\n const dpr = globalThis.devicePixelRatio || 1;\n return Math.round(value * dpr) / dpr;\n}\n\nexport function scrollIntoView(\n element?: HTMLElement,\n config?: ScrollIntoViewOptions\n): void {\n if (!element) {\n return;\n }\n\n element.scrollIntoView(\n Object.assign(\n {\n behavior: 'auto',\n block: 'nearest',\n inline: 'nearest',\n },\n config\n )\n );\n}\n\nexport function isRegExp(value: unknown): value is RegExp {\n return value != null && value.constructor === RegExp;\n}\n\nexport function equal<T>(a: unknown, b: T, visited = new WeakSet()): boolean {\n // Early return\n if (Object.is(a, b)) {\n return true;\n }\n\n if (isObject(a) && isObject(b)) {\n if (a.constructor !== b.constructor) {\n return false;\n }\n\n // Circular references\n if (visited.has(a) && visited.has(b)) {\n return true;\n }\n\n visited.add(a);\n visited.add(b);\n\n // RegExp\n if (isRegExp(a) && isRegExp(b)) {\n return a.source === b.source && a.flags === b.flags;\n }\n\n // Maps\n if (a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) {\n return false;\n }\n for (const [keyA, valueA] of a.entries()) {\n let found = false;\n for (const [keyB, valueB] of b.entries()) {\n if (equal(keyA, keyB, visited) && equal(valueA, valueB, visited)) {\n found = true;\n break;\n }\n }\n if (!found) {\n return false;\n }\n }\n return true;\n }\n\n // Sets\n if (a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) {\n return false;\n }\n for (const valueA of a) {\n let found = false;\n for (const valueB of b) {\n if (equal(valueA, valueB, visited)) {\n found = true;\n break;\n }\n }\n if (!found) {\n return false;\n }\n }\n return true;\n }\n\n // Arrays\n if (Array.isArray(a) && Array.isArray(b)) {\n const length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (let i = 0; i < length; i++) {\n if (!equal(a[i], b[i], visited)) {\n return false;\n }\n }\n return true;\n }\n\n // toPrimitive\n if (a.valueOf !== Object.prototype.valueOf) {\n return a.valueOf() === b.valueOf();\n }\n // Strings based\n if (a.toString !== Object.prototype.toString) {\n return a.toString() === b.toString();\n }\n\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n\n for (const key of aKeys) {\n if (!Object.hasOwn(b, key)) {\n return false;\n }\n }\n\n for (const key of aKeys) {\n if (!equal(a[key as keyof typeof a], b[key as keyof typeof b], visited)) {\n return false;\n }\n }\n\n visited.delete(a);\n visited.delete(b);\n\n return true;\n }\n\n return false;\n}\n\n/** Required utility type for specific props */\nexport type RequiredProps<T, K extends keyof T> = T & {\n [P in K]-?: T[P];\n};\n"]}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/components/common/util.ts"],"names":[],"mappings":"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","sourcesContent":["import { isServer, nothing } from 'lit';\n\nexport const asPercent = (part: number, whole: number) => (part / whole) * 100;\n\nexport const clamp = (number: number, min: number, max: number) =>\n Math.max(min, Math.min(number, max));\n\nexport function numberOfDecimals(number: number): number {\n const [_, decimals] = number.toString().split('.');\n return decimals ? decimals.length : 0;\n}\n\nexport function roundPrecise(number: number, magnitude = 1): number {\n const factor = 10 ** magnitude;\n return Math.round(number * factor) / factor;\n}\n\nexport function numberInRangeInclusive(\n value: number,\n min: number,\n max: number\n) {\n return value >= min && value <= max;\n}\n\nexport function createCounter() {\n let i = 0;\n return () => {\n i++;\n return i;\n };\n}\n\n/**\n * Returns whether an element has a Left-to-Right directionality.\n */\nexport function isLTR(element: HTMLElement) {\n return element.matches(':dir(ltr)');\n}\n\n/**\n * Builds a string from format specifiers and replacement parameters.\n * Will coerce non-string parameters to their string representations.\n *\n * @example\n * ```typescript\n * formatString('{0} says \"{1}\".', 'John', 'Hello'); // 'John says \"Hello\".'\n * formatString('{1} is greater than {0}', 0, 1); // '1 is greater than 0'\n * ```\n */\nexport function formatString(template: string, ...params: unknown[]): string {\n const length = params.length;\n\n return template.replace(/{(\\d+)}/g, (match: string, index: number) =>\n index >= length ? match : `${params[index]}`\n );\n}\n\n/**\n * Parse the passed `value` as a number or return the `fallback` if it can't be done.\n *\n * @example\n * ```typescript\n * asNumber('5'); // 5\n * asNumber('3.14'); // 3.14\n * asNumber('five'); // 0\n * asNUmber('five', 5); // 5\n * ```\n */\nexport function asNumber(value: unknown, fallback = 0) {\n const parsed = Number.parseFloat(value as string);\n return Number.isNaN(parsed) ? fallback : parsed;\n}\n\n/**\n * Returns the value wrapped between the min and max bounds.\n *\n * If the value is greater than max, returns the min and vice-versa.\n * If the value is between the bounds, it is returned unchanged.\n *\n * @example\n * ```typescript\n * wrap(1, 4, 2); // 2\n * wrap(1, 4, 5); // 1\n * wrap(1, 4, -1); // 4\n * ```\n */\nexport function wrap(min: number, max: number, value: number) {\n if (value < min) {\n return max;\n }\n if (value > max) {\n return min;\n }\n\n return value;\n}\n\nexport function isDefined<T = unknown>(value: T) {\n return value !== undefined;\n}\n\nexport type IterNodesOptions<T = Node> = {\n show?: keyof typeof NodeFilter;\n filter?: (node: T) => boolean;\n};\n\nfunction createNodeFilter<T extends Node>(predicate: (node: T) => boolean) {\n return {\n acceptNode: (node: T): number =>\n !predicate || predicate(node)\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_SKIP,\n };\n}\n\nexport function* iterNodes<T extends Node>(\n root: Node,\n options?: IterNodesOptions<T>\n): Generator<T> {\n if (!isDefined(globalThis.document)) {\n return;\n }\n\n const whatToShow = options?.show\n ? NodeFilter[options.show]\n : NodeFilter.SHOW_ALL;\n\n const nodeFilter = options?.filter\n ? createNodeFilter(options.filter)\n : undefined;\n\n const treeWalker = document.createTreeWalker(root, whatToShow, nodeFilter);\n\n while (treeWalker.nextNode()) {\n yield treeWalker.currentNode as T;\n }\n}\n\nexport function getRoot(\n element: Element,\n options?: GetRootNodeOptions\n): Document | ShadowRoot {\n return element.getRootNode(options) as Document | ShadowRoot;\n}\n\nexport function getElementByIdFromRoot(root: HTMLElement, id: string) {\n return getRoot(root).getElementById(id);\n}\n\nexport function isElement(node: unknown): node is Element {\n return node instanceof Node && node.nodeType === Node.ELEMENT_NODE;\n}\n\nexport function getElementsFromEventPath<T extends Element>(event: Event) {\n return event.composedPath().filter((item) => isElement(item)) as T[];\n}\n\nexport function findElementFromEventPath<T extends Element>(\n predicate: string | ((element: Element) => boolean),\n event: Event\n) {\n const func = isString(predicate)\n ? (e: Element) => e.matches(predicate)\n : (e: Element) => predicate(e);\n\n return getElementsFromEventPath(event).find(func) as T | undefined;\n}\n\nexport function groupBy<T>(array: T[], key: keyof T | ((item: T) => any)) {\n const result: Record<string, T[]> = {};\n const _get = isFunction(key) ? key : (item: T) => item[key];\n\n for (const item of array) {\n const category = _get(item);\n const group = result[category];\n\n if (Array.isArray(group)) {\n group.push(item);\n } else {\n result[category] = [item];\n }\n }\n\n return result;\n}\n\nexport function first<T>(arr: T[]) {\n return arr.at(0) as T;\n}\n\nexport function last<T>(arr: T[]) {\n return arr.at(-1) as T;\n}\n\nexport function modulo(n: number, d: number) {\n return ((n % d) + d) % d;\n}\n\n/**\n * Creates an array of `n` elements from a given iterator.\n *\n */\nexport function take<T>(iterable: IterableIterator<T>, n: number) {\n const result: T[] = [];\n let i = 0;\n let current = iterable.next();\n\n while (i < n && !current.done) {\n result.push(current.value);\n current = iterable.next();\n i++;\n }\n\n return result;\n}\n\n/**\n * Splits an array into chunks of length `size` and returns a generator\n * yielding each chunk.\n * The last chunk may contain less than `size` elements.\n *\n * @example\n * ```typescript\n * const arr = [0,1,2,3,4,5,6,7,8,9];\n *\n * Array.from(chunk(arr, 2)) // [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]]\n * Array.from(chunk(arr, 3)) // [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]]\n * Array.from(chunk([], 3)) // []\n * Array.from(chunk(arr, -3)) // Error\n * ```\n */\nexport function* chunk<T>(arr: T[], size: number) {\n if (size < 1) {\n throw new Error('size must be an integer >= 1');\n }\n for (let i = 0; i < arr.length; i += size) {\n yield arr.slice(i, i + size);\n }\n}\n\nexport function splitToWords(text: string) {\n const input = text.replaceAll(/[^a-zA-Z0-9\\s-_]/g, '');\n if (/[\\s-_]+/.test(input)) return input.split(/[\\s-_]+/);\n return input.split(/(?=[A-Z])+/);\n}\n\nexport function toKebabCase(text: string): string {\n const input = text.trim();\n return splitToWords(input).join('-').toLocaleLowerCase();\n}\n\nexport function isFunction(value: unknown): value is CallableFunction {\n return typeof value === 'function';\n}\n\nexport function isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n\nexport function isObject(value: unknown): value is object {\n return value != null && typeof value === 'object';\n}\n\nexport function isPlainObject(\n value: unknown\n): value is Record<PropertyKey, unknown> {\n if (!isObject(value)) {\n return false;\n }\n\n const proto = Object.getPrototypeOf(value) as typeof Object.prototype | null;\n\n const hasObjectPrototype =\n proto === null ||\n proto === Object.prototype ||\n Object.getPrototypeOf(proto) === null;\n\n return hasObjectPrototype\n ? Object.prototype.toString.call(value) === '[object Object]'\n : false;\n}\n\nfunction isUnsafeProperty(key: PropertyKey) {\n return key === '__proto__' || key === 'constructor' || key === 'prototype';\n}\n\nexport function isEventListenerObject(x: unknown): x is EventListenerObject {\n return isObject(x) && 'handleEvent' in x;\n}\n\nexport function addWeakEventListener(\n element: Element,\n event: string,\n listener: EventListenerOrEventListenerObject,\n options?: AddEventListenerOptions | boolean\n): void {\n const weakRef = new WeakRef(listener);\n const wrapped = (evt: Event) => {\n const handler = weakRef.deref();\n\n return isEventListenerObject(handler)\n ? handler.handleEvent(evt)\n : handler?.(evt);\n };\n\n element.addEventListener(event, wrapped, options);\n}\n\ntype EventTypeOf<T extends keyof HTMLElementEventMap | keyof WindowEventMap> =\n (HTMLElementEventMap & WindowEventMap)[T];\n\n/**\n * Safely adds an event listener to an HTMLElement, automatically handling\n * server-side rendering environments by doing nothing if `isServer` is true.\n * This function also correctly binds the `handler`'s `this` context to the `target` element\n * and ensures proper event type inference.\n */\nexport function addSafeEventListener<\n E extends keyof HTMLElementEventMap | keyof WindowEventMap,\n>(\n target: HTMLElement,\n eventName: E,\n handler: (event: EventTypeOf<E>) => unknown,\n options?: boolean | AddEventListenerOptions\n): void {\n if (isServer) {\n return;\n }\n\n const boundHandler = (event: Event) =>\n handler.call(target, event as EventTypeOf<E>);\n\n target.addEventListener(eventName, boundHandler, options);\n}\n\n/**\n * Returns whether a given collection is empty.\n */\nexport function isEmpty<T, U extends object>(\n x: ArrayLike<T> | Set<T> | Map<U, T>\n): boolean {\n return 'length' in x ? x.length < 1 : x.size < 1;\n}\n\nexport function asArray<T>(value?: T | T[]): T[] {\n if (!isDefined(value)) return [];\n return Array.isArray(value) ? value : [value];\n}\n\nexport function partition<T>(\n array: T[],\n isTruthy: (value: T) => boolean\n): [truthy: T[], falsy: T[]] {\n const truthy: T[] = [];\n const falsy: T[] = [];\n\n for (const item of array) {\n (isTruthy(item) ? truthy : falsy).push(item);\n }\n\n return [truthy, falsy];\n}\n\n/** Returns the center x/y coordinate of a given element. */\nexport function getCenterPoint(element: Element) {\n const { left, top, width, height } = element.getBoundingClientRect();\n\n return {\n x: left + width * 0.5,\n y: top + height * 0.5,\n };\n}\n\nexport function roundByDPR(value: number): number {\n const dpr = globalThis.devicePixelRatio || 1;\n return Math.round(value * dpr) / dpr;\n}\n\nexport function scrollIntoView(\n element?: HTMLElement,\n config?: ScrollIntoViewOptions\n): void {\n if (!element) {\n return;\n }\n\n element.scrollIntoView(\n Object.assign(\n {\n behavior: 'auto',\n block: 'nearest',\n inline: 'nearest',\n },\n config\n )\n );\n}\n\nexport function isRegExp(value: unknown): value is RegExp {\n return value != null && value.constructor === RegExp;\n}\n\nexport function equal<T>(a: unknown, b: T, visited = new WeakSet()): boolean {\n // Early return\n if (Object.is(a, b)) {\n return true;\n }\n\n if (isObject(a) && isObject(b)) {\n if (a.constructor !== b.constructor) {\n return false;\n }\n\n // Circular references\n if (visited.has(a) && visited.has(b)) {\n return true;\n }\n\n visited.add(a);\n visited.add(b);\n\n // RegExp\n if (isRegExp(a) && isRegExp(b)) {\n return a.source === b.source && a.flags === b.flags;\n }\n\n // Maps\n if (a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) {\n return false;\n }\n for (const [keyA, valueA] of a.entries()) {\n let found = false;\n for (const [keyB, valueB] of b.entries()) {\n if (equal(keyA, keyB, visited) && equal(valueA, valueB, visited)) {\n found = true;\n break;\n }\n }\n if (!found) {\n return false;\n }\n }\n return true;\n }\n\n // Sets\n if (a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) {\n return false;\n }\n for (const valueA of a) {\n let found = false;\n for (const valueB of b) {\n if (equal(valueA, valueB, visited)) {\n found = true;\n break;\n }\n }\n if (!found) {\n return false;\n }\n }\n return true;\n }\n\n // Arrays\n if (Array.isArray(a) && Array.isArray(b)) {\n const length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (let i = 0; i < length; i++) {\n if (!equal(a[i], b[i], visited)) {\n return false;\n }\n }\n return true;\n }\n\n // toPrimitive\n if (a.valueOf !== Object.prototype.valueOf) {\n return a.valueOf() === b.valueOf();\n }\n // Strings based\n if (a.toString !== Object.prototype.toString) {\n return a.toString() === b.toString();\n }\n\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n\n for (const key of aKeys) {\n if (!Object.hasOwn(b, key)) {\n return false;\n }\n }\n\n for (const key of aKeys) {\n if (!equal(a[key as keyof typeof a], b[key as keyof typeof b], visited)) {\n return false;\n }\n }\n\n visited.delete(a);\n visited.delete(b);\n\n return true;\n }\n\n return false;\n}\n\n/** Required utility type for specific props */\nexport type RequiredProps<T, K extends keyof T> = T & {\n [P in K]-?: T[P];\n};\n\nexport function setStyles(\n element: HTMLElement,\n styles: Partial<CSSStyleDeclaration>\n): void {\n merge(element.style, styles);\n}\n\n/**\n * Merges the properties of `source` into `target` performing a recursive deep merge over POJOs and arrays.\n *\n * @remarks\n * This function mutates the `target` object.\n * If that is not the desired outcome, see {@link toMerged} for another approach.\n */\nexport function merge<\n T extends Record<PropertyKey, any>,\n S extends Record<PropertyKey, any>,\n>(target: T, source: S): T & S {\n const sourceKeys = Object.keys(source) as Array<keyof S>;\n const length = sourceKeys.length;\n\n for (let i = 0; i < length; i++) {\n const key = sourceKeys[i];\n\n if (isUnsafeProperty(key)) {\n continue;\n }\n\n const sourceValue = source[key];\n const targetValue = target[key];\n\n if (Array.isArray(sourceValue)) {\n if (Array.isArray(targetValue)) {\n target[key] = merge(targetValue, sourceValue);\n } else {\n target[key] = merge([], sourceValue);\n }\n } else if (isPlainObject(sourceValue)) {\n if (isPlainObject(targetValue)) {\n target[key] = merge(targetValue, sourceValue);\n } else {\n target[key] = merge({}, sourceValue);\n }\n } else if (targetValue === undefined || sourceValue !== undefined) {\n target[key] = sourceValue;\n }\n }\n\n return target;\n}\n\n/**\n * Just like {@link merge} but it does not mutate the `target` object instead\n * mutating a structured clone of it.\n */\nexport function toMerged<\n T extends Record<PropertyKey, any>,\n S extends Record<PropertyKey, any>,\n>(target: T, source: S): T & S {\n return merge(structuredClone(target), source);\n}\n\n/**\n * Similar to Lit's `ifDefined` directive except one can check `assertion`\n * and bind a different `value` through this wrapper.\n */\nexport function bindIf<T>(assertion: unknown, value: T): NonNullable<T> {\n return assertion\n ? (value ?? (nothing as NonNullable<T>))\n : (nothing as NonNullable<T>);\n}\n"]}
@@ -3,7 +3,6 @@ import { type CalendarHeaderOrientation, type DateRangeDescriptor, type WeekDays
3
3
  import { type IgcCalendarResourceStrings } from '../common/i18n/calendar.resources.js';
4
4
  import { IgcBaseComboBoxLikeComponent } from '../common/mixins/combo-box.js';
5
5
  import type { AbstractConstructor } from '../common/mixins/constructor.js';
6
- import { type FormValueOf } from '../common/mixins/forms/form-value.js';
7
6
  import { type DatePart } from '../date-time-input/date-util.js';
8
7
  import type { ContentOrientation, PickerMode, RangeTextSelectMode, SelectionRangeDirection } from '../types.js';
9
8
  export interface IgcDatePickerComponentEventMap {
@@ -106,7 +105,7 @@ export default class IgcDatePickerComponent extends IgcDatePickerComponent_base
106
105
  private _dateConstraints?;
107
106
  private _displayFormat?;
108
107
  private _inputFormat?;
109
- protected readonly _formValue: FormValueOf<Date | null>;
108
+ protected readonly _formValue: import("../common/mixins/forms/form-value.js").FormValue<Date | null>;
110
109
  protected readonly _rootClickController: import("../common/controllers/root-click.js").RootClickController;
111
110
  private readonly _input;
112
111
  private readonly _calendar;
@@ -242,7 +241,6 @@ export default class IgcDatePickerComponent extends IgcDatePickerComponent_base
242
241
  private _setDateConstraints;
243
242
  private _shouldCloseCalendarDropdown;
244
243
  protected _onEscapeKey(): Promise<void>;
245
- protected _handleFocusIn(): void;
246
244
  protected _handleFocusOut({ relatedTarget }: FocusEvent): void;
247
245
  protected _handlerCalendarIconSlotPointerDown(event: PointerEvent): void;
248
246
  protected _handleInputClick(event: Event): void;
@@ -8,7 +8,6 @@ var IgcDatePickerComponent_1;
8
8
  import { html, nothing } from 'lit';
9
9
  import { property, query, queryAssignedElements } from 'lit/decorators.js';
10
10
  import { ifDefined } from 'lit/directives/if-defined.js';
11
- import { live } from 'lit/directives/live.js';
12
11
  import { addThemingController } from '../../theming/theming-controller.js';
13
12
  import IgcCalendarComponent, { focusActiveDate } from '../calendar/calendar.js';
14
13
  import { convertToDate } from '../calendar/helpers.js';
@@ -23,7 +22,8 @@ import { IgcCalendarResourceStringEN, } from '../common/i18n/calendar.resources.
23
22
  import { IgcBaseComboBoxLikeComponent } from '../common/mixins/combo-box.js';
24
23
  import { EventEmitterMixin } from '../common/mixins/event-emitter.js';
25
24
  import { FormAssociatedRequiredMixin } from '../common/mixins/forms/associated-required.js';
26
- import { createFormValueState, defaultDateTimeTransformers, } from '../common/mixins/forms/form-value.js';
25
+ import { FormValueDateTimeTransformers } from '../common/mixins/forms/form-transformers.js';
26
+ import { createFormValueState } from '../common/mixins/forms/form-value.js';
27
27
  import { addSafeEventListener, createCounter, findElementFromEventPath, isEmpty, } from '../common/util.js';
28
28
  import IgcDateTimeInputComponent from '../date-time-input/date-time-input.js';
29
29
  import { DateTimeUtil } from '../date-time-input/date-util.js';
@@ -48,7 +48,6 @@ let IgcDatePickerComponent = IgcDatePickerComponent_1 = class IgcDatePickerCompo
48
48
  }
49
49
  set value(value) {
50
50
  this._formValue.setValueAndFormState(value);
51
- this._validate();
52
51
  }
53
52
  get value() {
54
53
  return this._formValue.value;
@@ -62,7 +61,7 @@ let IgcDatePickerComponent = IgcDatePickerComponent_1 = class IgcDatePickerCompo
62
61
  set min(value) {
63
62
  this._min = convertToDate(value);
64
63
  this._setDateConstraints();
65
- this._updateValidity();
64
+ this._validate();
66
65
  }
67
66
  get min() {
68
67
  return this._min;
@@ -70,7 +69,7 @@ let IgcDatePickerComponent = IgcDatePickerComponent_1 = class IgcDatePickerCompo
70
69
  set max(value) {
71
70
  this._max = convertToDate(value);
72
71
  this._setDateConstraints();
73
- this._updateValidity();
72
+ this._validate();
74
73
  }
75
74
  get max() {
76
75
  return this._max;
@@ -78,7 +77,7 @@ let IgcDatePickerComponent = IgcDatePickerComponent_1 = class IgcDatePickerCompo
78
77
  set disabledDates(dates) {
79
78
  this._disabledDates = dates;
80
79
  this._setDateConstraints();
81
- this._updateValidity();
80
+ this._validate();
82
81
  }
83
82
  get disabledDates() {
84
83
  return this._disabledDates;
@@ -107,7 +106,7 @@ let IgcDatePickerComponent = IgcDatePickerComponent_1 = class IgcDatePickerCompo
107
106
  this._max = null;
108
107
  this._formValue = createFormValueState(this, {
109
108
  initialValue: null,
110
- transformers: defaultDateTimeTransformers,
109
+ transformers: FormValueDateTimeTransformers,
111
110
  });
112
111
  this._rootClickController = addRootClickController(this, {
113
112
  onHide: this._handleClosing,
@@ -127,11 +126,9 @@ let IgcDatePickerComponent = IgcDatePickerComponent_1 = class IgcDatePickerCompo
127
126
  this.prompt = '_';
128
127
  this.resourceStrings = IgcCalendarResourceStringEN;
129
128
  this.weekStart = 'sunday';
130
- addSafeEventListener(this, 'focusin', this._handleFocusIn);
131
129
  addSafeEventListener(this, 'focusout', this._handleFocusOut);
132
130
  addKeybindings(this, {
133
131
  skip: () => this.disabled || this.readOnly,
134
- bindingDefaults: { preventDefault: true },
135
132
  })
136
133
  .set([altKey, arrowDown], this.handleAnchorClick)
137
134
  .set([altKey, arrowUp], this._onEscapeKey)
@@ -172,12 +169,9 @@ let IgcDatePickerComponent = IgcDatePickerComponent_1 = class IgcDatePickerCompo
172
169
  this._input.focus();
173
170
  }
174
171
  }
175
- _handleFocusIn() {
176
- this._dirty = true;
177
- }
178
172
  _handleFocusOut({ relatedTarget }) {
179
173
  if (!this.contains(relatedTarget)) {
180
- this.checkValidity();
174
+ this._handleBlur();
181
175
  }
182
176
  }
183
177
  _handlerCalendarIconSlotPointerDown(event) {
@@ -192,15 +186,17 @@ let IgcDatePickerComponent = IgcDatePickerComponent_1 = class IgcDatePickerCompo
192
186
  this._calendar.activeDate = this.value ?? this._calendar.activeDate;
193
187
  super.handleAnchorClick();
194
188
  await this.updateComplete;
195
- this._calendar[focusActiveDate]();
189
+ this._calendar[focusActiveDate]({ preventScroll: true });
196
190
  }
197
191
  _handleInputChangeEvent(event) {
198
192
  event.stopPropagation();
193
+ this._setTouchedState();
199
194
  this.value = event.target.value;
200
195
  this.emitEvent('igcChange', { detail: this.value });
201
196
  }
202
197
  async _handleCalendarChangeEvent(event) {
203
198
  event.stopPropagation();
199
+ this._setTouchedState();
204
200
  if (this.readOnly) {
205
201
  await this._calendar.updateComplete;
206
202
  this._calendar.value = this.value;
@@ -212,11 +208,13 @@ let IgcDatePickerComponent = IgcDatePickerComponent_1 = class IgcDatePickerCompo
212
208
  }
213
209
  _handleInputEvent(event) {
214
210
  event.stopPropagation();
211
+ this._setTouchedState();
215
212
  if (this.nonEditable) {
216
213
  event.preventDefault();
217
214
  return;
218
215
  }
219
216
  this.value = event.target.value;
217
+ this._calendar.activeDate = this.value ?? this._calendar.activeDate;
220
218
  this.emitEvent('igcInput', { detail: this.value });
221
219
  }
222
220
  _handleClosing() {
@@ -399,7 +397,7 @@ let IgcDatePickerComponent = IgcDatePickerComponent_1 = class IgcDatePickerCompo
399
397
  .placeholder=${this.placeholder}
400
398
  .min=${this.min}
401
399
  .max=${this.max}
402
- .invalid=${live(this.invalid)}
400
+ .invalid=${this.invalid}
403
401
  @igcChange=${this._handleInputChangeEvent}
404
402
  @igcInput=${this._handleInputEvent}
405
403
  @click=${this._isDropDown || this.readOnly