igniteui-webcomponents 6.1.1 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/LICENSE +1 -1
  3. package/README.md +13 -1
  4. package/animations/player.d.ts +1 -1
  5. package/animations/player.js.map +1 -1
  6. package/components/calendar/calendar.d.ts +1 -0
  7. package/components/calendar/calendar.js +5 -8
  8. package/components/calendar/calendar.js.map +1 -1
  9. package/components/calendar/themes/calendar.base.css.js +1 -1
  10. package/components/calendar/themes/calendar.base.css.js.map +1 -1
  11. package/components/calendar/themes/dark/calendar.bootstrap.css.js +1 -1
  12. package/components/calendar/themes/dark/calendar.bootstrap.css.js.map +1 -1
  13. package/components/calendar/themes/dark/calendar.fluent.css.js +1 -1
  14. package/components/calendar/themes/dark/calendar.fluent.css.js.map +1 -1
  15. package/components/calendar/themes/dark/calendar.indigo.css.js +1 -1
  16. package/components/calendar/themes/dark/calendar.indigo.css.js.map +1 -1
  17. package/components/calendar/themes/dark/calendar.material.css.js +1 -1
  18. package/components/calendar/themes/dark/calendar.material.css.js.map +1 -1
  19. package/components/calendar/themes/light/calendar.bootstrap.css.js +1 -1
  20. package/components/calendar/themes/light/calendar.bootstrap.css.js.map +1 -1
  21. package/components/calendar/themes/light/calendar.fluent.css.js +1 -1
  22. package/components/calendar/themes/light/calendar.fluent.css.js.map +1 -1
  23. package/components/calendar/themes/light/calendar.indigo.css.js +1 -1
  24. package/components/calendar/themes/light/calendar.indigo.css.js.map +1 -1
  25. package/components/calendar/themes/light/calendar.material.css.js +1 -1
  26. package/components/calendar/themes/light/calendar.material.css.js.map +1 -1
  27. package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js +1 -1
  28. package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js.map +1 -1
  29. package/components/calendar/themes/shared/fluent/calendar.fluent.css.js +1 -1
  30. package/components/calendar/themes/shared/fluent/calendar.fluent.css.js.map +1 -1
  31. package/components/calendar/themes/shared/indigo/calendar.indigo.css.js +1 -1
  32. package/components/calendar/themes/shared/indigo/calendar.indigo.css.js.map +1 -1
  33. package/components/calendar/themes/shared/material/calendar.material.css.js +1 -1
  34. package/components/calendar/themes/shared/material/calendar.material.css.js.map +1 -1
  35. package/components/card/themes/content.js +7 -0
  36. package/components/card/themes/content.js.map +1 -1
  37. package/components/card/themes/shared/content/card.content.indigo.css.d.ts +1 -0
  38. package/components/card/themes/shared/content/card.content.indigo.css.js +3 -0
  39. package/components/card/themes/shared/content/card.content.indigo.css.js.map +1 -0
  40. package/components/carousel/carousel-indicator.d.ts +1 -1
  41. package/components/carousel/carousel-indicator.js.map +1 -1
  42. package/components/carousel/carousel-slide.d.ts +3 -3
  43. package/components/carousel/carousel-slide.js +7 -13
  44. package/components/carousel/carousel-slide.js.map +1 -1
  45. package/components/carousel/carousel.d.ts +41 -42
  46. package/components/carousel/carousel.js +173 -187
  47. package/components/carousel/carousel.js.map +1 -1
  48. package/components/checkbox/checkbox-base.d.ts +3 -5
  49. package/components/checkbox/checkbox-base.js +15 -21
  50. package/components/checkbox/checkbox-base.js.map +1 -1
  51. package/components/checkbox/checkbox.d.ts +3 -4
  52. package/components/checkbox/checkbox.js +18 -17
  53. package/components/checkbox/checkbox.js.map +1 -1
  54. package/components/checkbox/switch.d.ts +0 -1
  55. package/components/checkbox/switch.js +7 -10
  56. package/components/checkbox/switch.js.map +1 -1
  57. package/components/checkbox/themes/dark/checkbox/checkbox.bootstrap.css.js +1 -1
  58. package/components/checkbox/themes/dark/checkbox/checkbox.bootstrap.css.js.map +1 -1
  59. package/components/checkbox/themes/dark/checkbox/checkbox.fluent.css.js +1 -1
  60. package/components/checkbox/themes/dark/checkbox/checkbox.fluent.css.js.map +1 -1
  61. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js +1 -1
  62. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js.map +1 -1
  63. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js +1 -1
  64. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js.map +1 -1
  65. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
  66. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
  67. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js +1 -1
  68. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js.map +1 -1
  69. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js +1 -1
  70. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js.map +1 -1
  71. package/components/chip/chip.d.ts +11 -11
  72. package/components/chip/chip.js +61 -65
  73. package/components/chip/chip.js.map +1 -1
  74. package/components/combo/combo.d.ts +3 -3
  75. package/components/combo/combo.js +12 -6
  76. package/components/combo/combo.js.map +1 -1
  77. package/components/combo/themes/dark/combo.bootstrap.css.js +1 -1
  78. package/components/combo/themes/dark/combo.bootstrap.css.js.map +1 -1
  79. package/components/combo/themes/light/combo.bootstrap.css.js +1 -1
  80. package/components/combo/themes/light/combo.bootstrap.css.js.map +1 -1
  81. package/components/combo/themes/light/combo.shared.css.js +1 -1
  82. package/components/combo/themes/light/combo.shared.css.js.map +1 -1
  83. package/components/combo/themes/shared/combo.common.css.js +1 -1
  84. package/components/combo/themes/shared/combo.common.css.js.map +1 -1
  85. package/components/combo/themes/shared/combo.indigo.css.js +1 -1
  86. package/components/combo/themes/shared/combo.indigo.css.js.map +1 -1
  87. package/components/combo/themes/shared/combo.material.css.js +1 -1
  88. package/components/combo/themes/shared/combo.material.css.js.map +1 -1
  89. package/components/common/controllers/internals.d.ts +66 -2
  90. package/components/common/controllers/internals.js +21 -0
  91. package/components/common/controllers/internals.js.map +1 -1
  92. package/components/common/controllers/slot.d.ts +87 -0
  93. package/components/common/controllers/slot.js +75 -0
  94. package/components/common/controllers/slot.js.map +1 -0
  95. package/components/common/mixins/alert.d.ts +7 -8
  96. package/components/common/mixins/alert.js +23 -34
  97. package/components/common/mixins/alert.js.map +1 -1
  98. package/components/common/mixins/forms/associated.d.ts +1 -1
  99. package/components/common/mixins/forms/associated.js +91 -36
  100. package/components/common/mixins/forms/associated.js.map +1 -1
  101. package/components/common/mixins/forms/form-transformers.d.ts +21 -0
  102. package/components/common/mixins/forms/form-transformers.js +64 -0
  103. package/components/common/mixins/forms/form-transformers.js.map +1 -0
  104. package/components/common/mixins/forms/form-value.d.ts +7 -36
  105. package/components/common/mixins/forms/form-value.js +2 -64
  106. package/components/common/mixins/forms/form-value.js.map +1 -1
  107. package/components/common/mixins/forms/types.d.ts +19 -10
  108. package/components/common/mixins/forms/types.js +2 -1
  109. package/components/common/mixins/forms/types.js.map +1 -1
  110. package/components/common/util.d.ts +1 -0
  111. package/components/common/util.js +3 -0
  112. package/components/common/util.js.map +1 -1
  113. package/components/date-picker/date-picker.d.ts +1 -3
  114. package/components/date-picker/date-picker.js +11 -13
  115. package/components/date-picker/date-picker.js.map +1 -1
  116. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js +1 -1
  117. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js.map +1 -1
  118. package/components/date-picker/themes/dark/date-picker.fluent.css.js +1 -1
  119. package/components/date-picker/themes/dark/date-picker.fluent.css.js.map +1 -1
  120. package/components/date-picker/themes/dark/date-picker.indigo.css.js +1 -1
  121. package/components/date-picker/themes/dark/date-picker.indigo.css.js.map +1 -1
  122. package/components/date-picker/themes/dark/date-picker.material.css.js +1 -1
  123. package/components/date-picker/themes/dark/date-picker.material.css.js.map +1 -1
  124. package/components/date-picker/themes/light/date-picker.bootstrap.css.js +1 -1
  125. package/components/date-picker/themes/light/date-picker.bootstrap.css.js.map +1 -1
  126. package/components/date-picker/themes/light/date-picker.fluent.css.js +1 -1
  127. package/components/date-picker/themes/light/date-picker.fluent.css.js.map +1 -1
  128. package/components/date-picker/themes/light/date-picker.indigo.css.js +1 -1
  129. package/components/date-picker/themes/light/date-picker.indigo.css.js.map +1 -1
  130. package/components/date-picker/themes/light/date-picker.material.css.js +1 -1
  131. package/components/date-picker/themes/light/date-picker.material.css.js.map +1 -1
  132. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js +1 -1
  133. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js.map +1 -1
  134. package/components/date-picker/themes/shared/date-picker.common.css.js +1 -1
  135. package/components/date-picker/themes/shared/date-picker.common.css.js.map +1 -1
  136. package/components/date-picker/themes/shared/date-picker.fluent.css.js +1 -1
  137. package/components/date-picker/themes/shared/date-picker.fluent.css.js.map +1 -1
  138. package/components/date-picker/themes/shared/date-picker.indigo.css.js +1 -1
  139. package/components/date-picker/themes/shared/date-picker.indigo.css.js.map +1 -1
  140. package/components/date-picker/themes/shared/date-picker.material.css.js +1 -1
  141. package/components/date-picker/themes/shared/date-picker.material.css.js.map +1 -1
  142. package/components/date-range-picker/date-range-picker.d.ts +1 -3
  143. package/components/date-range-picker/date-range-picker.js +19 -26
  144. package/components/date-range-picker/date-range-picker.js.map +1 -1
  145. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js +1 -1
  146. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js.map +1 -1
  147. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js +1 -1
  148. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js.map +1 -1
  149. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js +1 -1
  150. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js.map +1 -1
  151. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js +1 -1
  152. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js.map +1 -1
  153. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js +1 -1
  154. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js.map +1 -1
  155. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js +1 -1
  156. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js.map +1 -1
  157. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js +1 -1
  158. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js.map +1 -1
  159. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js +1 -1
  160. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js.map +1 -1
  161. package/components/date-range-picker/themes/shared/date-range-picker.material.css.js +1 -1
  162. package/components/date-range-picker/themes/shared/date-range-picker.material.css.js.map +1 -1
  163. package/components/date-time-input/date-time-input.d.ts +1 -2
  164. package/components/date-time-input/date-time-input.js +7 -7
  165. package/components/date-time-input/date-time-input.js.map +1 -1
  166. package/components/dialog/dialog.d.ts +23 -25
  167. package/components/dialog/dialog.js +108 -115
  168. package/components/dialog/dialog.js.map +1 -1
  169. package/components/dialog/themes/dark/dialog.bootstrap.css.js +1 -1
  170. package/components/dialog/themes/dark/dialog.bootstrap.css.js.map +1 -1
  171. package/components/expansion-panel/expansion-panel.d.ts +12 -14
  172. package/components/expansion-panel/expansion-panel.js +43 -56
  173. package/components/expansion-panel/expansion-panel.js.map +1 -1
  174. package/components/file-input/file-input.d.ts +1 -3
  175. package/components/file-input/file-input.js +6 -11
  176. package/components/file-input/file-input.js.map +1 -1
  177. package/components/file-input/themes/dark/file-input.bootstrap.css.d.ts +1 -0
  178. package/components/file-input/themes/dark/file-input.bootstrap.css.js +3 -0
  179. package/components/file-input/themes/dark/file-input.bootstrap.css.js.map +1 -0
  180. package/components/file-input/themes/dark/file-input.fluent.css.d.ts +1 -0
  181. package/components/file-input/themes/dark/file-input.fluent.css.js +3 -0
  182. package/components/file-input/themes/dark/file-input.fluent.css.js.map +1 -0
  183. package/components/file-input/themes/dark/file-input.indigo.css.d.ts +1 -0
  184. package/components/file-input/themes/dark/file-input.indigo.css.js +3 -0
  185. package/components/file-input/themes/dark/file-input.indigo.css.js.map +1 -0
  186. package/components/file-input/themes/dark/file-input.material.css.d.ts +1 -0
  187. package/components/file-input/themes/dark/file-input.material.css.js +3 -0
  188. package/components/file-input/themes/dark/file-input.material.css.js.map +1 -0
  189. package/components/file-input/themes/file-input.base.css.js +1 -1
  190. package/components/file-input/themes/file-input.base.css.js.map +1 -1
  191. package/components/file-input/themes/light/file-input.bootstrap.css.d.ts +1 -0
  192. package/components/file-input/themes/light/file-input.bootstrap.css.js +3 -0
  193. package/components/file-input/themes/light/file-input.bootstrap.css.js.map +1 -0
  194. package/components/file-input/themes/light/file-input.fluent.css.d.ts +1 -0
  195. package/components/file-input/themes/light/file-input.fluent.css.js +3 -0
  196. package/components/file-input/themes/light/file-input.fluent.css.js.map +1 -0
  197. package/components/file-input/themes/light/file-input.indigo.css.d.ts +1 -0
  198. package/components/file-input/themes/light/file-input.indigo.css.js +3 -0
  199. package/components/file-input/themes/light/file-input.indigo.css.js.map +1 -0
  200. package/components/file-input/themes/light/file-input.material.css.d.ts +1 -0
  201. package/components/file-input/themes/light/file-input.material.css.js +3 -0
  202. package/components/file-input/themes/light/file-input.material.css.js.map +1 -0
  203. package/components/file-input/themes/light/file-input.shared.css.d.ts +1 -0
  204. package/components/file-input/themes/light/file-input.shared.css.js +3 -0
  205. package/components/file-input/themes/light/file-input.shared.css.js.map +1 -0
  206. package/components/file-input/themes/shared/file-input.bootstrap.css.js +1 -1
  207. package/components/file-input/themes/shared/file-input.bootstrap.css.js.map +1 -1
  208. package/components/file-input/themes/shared/file-input.indigo.css.js +1 -1
  209. package/components/file-input/themes/shared/file-input.indigo.css.js.map +1 -1
  210. package/components/file-input/themes/shared/file-input.material.css.js +1 -1
  211. package/components/file-input/themes/shared/file-input.material.css.js.map +1 -1
  212. package/components/file-input/themes/themes.js +19 -0
  213. package/components/file-input/themes/themes.js.map +1 -1
  214. package/components/input/input.d.ts +1 -4
  215. package/components/input/input.js +7 -12
  216. package/components/input/input.js.map +1 -1
  217. package/components/input/themes/shared/input.bootstrap.css.js +1 -1
  218. package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
  219. package/components/input/themes/shared/input.common.css.js +1 -1
  220. package/components/input/themes/shared/input.common.css.js.map +1 -1
  221. package/components/input/themes/shared/input.fluent.css.js +1 -1
  222. package/components/input/themes/shared/input.fluent.css.js.map +1 -1
  223. package/components/input/themes/shared/input.indigo.css.js +1 -1
  224. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  225. package/components/input/themes/shared/input.material.css.js +1 -1
  226. package/components/input/themes/shared/input.material.css.js.map +1 -1
  227. package/components/mask-input/mask-input-base.js +1 -0
  228. package/components/mask-input/mask-input-base.js.map +1 -1
  229. package/components/mask-input/mask-input.d.ts +2 -3
  230. package/components/mask-input/mask-input.js +5 -8
  231. package/components/mask-input/mask-input.js.map +1 -1
  232. package/components/nav-drawer/nav-drawer-item.d.ts +3 -4
  233. package/components/nav-drawer/nav-drawer-item.js +15 -18
  234. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  235. package/components/nav-drawer/nav-drawer.d.ts +1 -2
  236. package/components/nav-drawer/nav-drawer.js +9 -11
  237. package/components/nav-drawer/nav-drawer.js.map +1 -1
  238. package/components/nav-drawer/themes/container.base.css.js +1 -1
  239. package/components/nav-drawer/themes/container.base.css.js.map +1 -1
  240. package/components/nav-drawer/themes/shared/container/nav-drawer.common.css.js +1 -1
  241. package/components/nav-drawer/themes/shared/container/nav-drawer.common.css.js.map +1 -1
  242. package/components/popover/popover.d.ts +17 -16
  243. package/components/popover/popover.js +81 -91
  244. package/components/popover/popover.js.map +1 -1
  245. package/components/progress/base.d.ts +8 -8
  246. package/components/progress/base.js +19 -23
  247. package/components/progress/base.js.map +1 -1
  248. package/components/progress/circular-gradient.js.map +1 -1
  249. package/components/progress/circular-progress.d.ts +3 -4
  250. package/components/progress/circular-progress.js +15 -18
  251. package/components/progress/circular-progress.js.map +1 -1
  252. package/components/progress/linear-progress.d.ts +1 -0
  253. package/components/progress/linear-progress.js +5 -1
  254. package/components/progress/linear-progress.js.map +1 -1
  255. package/components/radio/radio.d.ts +3 -5
  256. package/components/radio/radio.js +33 -31
  257. package/components/radio/radio.js.map +1 -1
  258. package/components/radio/themes/dark/radio.fluent.css.js +1 -1
  259. package/components/radio/themes/dark/radio.fluent.css.js.map +1 -1
  260. package/components/radio/themes/shared/radio.bootstrap.css.js +1 -1
  261. package/components/radio/themes/shared/radio.bootstrap.css.js.map +1 -1
  262. package/components/radio/themes/shared/radio.common.css.js +1 -1
  263. package/components/radio/themes/shared/radio.common.css.js.map +1 -1
  264. package/components/radio/themes/shared/radio.fluent.css.js +1 -1
  265. package/components/radio/themes/shared/radio.fluent.css.js.map +1 -1
  266. package/components/radio/themes/shared/radio.indigo.css.js +1 -1
  267. package/components/radio/themes/shared/radio.indigo.css.js.map +1 -1
  268. package/components/radio/themes/shared/radio.material.css.js +1 -1
  269. package/components/radio/themes/shared/radio.material.css.js.map +1 -1
  270. package/components/radio-group/radio-group.d.ts +4 -4
  271. package/components/radio-group/radio-group.js +24 -21
  272. package/components/radio-group/radio-group.js.map +1 -1
  273. package/components/rating/rating.d.ts +1 -2
  274. package/components/rating/rating.js +4 -3
  275. package/components/rating/rating.js.map +1 -1
  276. package/components/select/select.d.ts +35 -38
  277. package/components/select/select.js +138 -146
  278. package/components/select/select.js.map +1 -1
  279. package/components/select/themes/shared/select.bootstrap.css.js +1 -1
  280. package/components/select/themes/shared/select.bootstrap.css.js.map +1 -1
  281. package/components/select/themes/shared/select.common.css.js +1 -1
  282. package/components/select/themes/shared/select.common.css.js.map +1 -1
  283. package/components/select/themes/shared/select.fluent.css.js +1 -1
  284. package/components/select/themes/shared/select.fluent.css.js.map +1 -1
  285. package/components/select/themes/shared/select.indigo.css.js +1 -1
  286. package/components/select/themes/shared/select.indigo.css.js.map +1 -1
  287. package/components/select/themes/shared/select.material.css.js +1 -1
  288. package/components/select/themes/shared/select.material.css.js.map +1 -1
  289. package/components/slider/slider-label.js.map +1 -1
  290. package/components/slider/slider.d.ts +1 -2
  291. package/components/slider/slider.js +5 -2
  292. package/components/slider/slider.js.map +1 -1
  293. package/components/snackbar/snackbar.d.ts +3 -5
  294. package/components/snackbar/snackbar.js +5 -5
  295. package/components/snackbar/snackbar.js.map +1 -1
  296. package/components/stepper/stepper.d.ts +1 -0
  297. package/components/stepper/stepper.js +9 -0
  298. package/components/stepper/stepper.js.map +1 -1
  299. package/components/textarea/textarea.d.ts +13 -20
  300. package/components/textarea/textarea.js +66 -90
  301. package/components/textarea/textarea.js.map +1 -1
  302. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  303. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  304. package/components/textarea/themes/shared/textarea.common.css.js +1 -1
  305. package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
  306. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  307. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  308. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  309. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  310. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  311. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  312. package/components/tile-manager/position.js +2 -1
  313. package/components/tile-manager/position.js.map +1 -1
  314. package/components/tile-manager/tile.d.ts +8 -12
  315. package/components/tile-manager/tile.js +16 -37
  316. package/components/tile-manager/tile.js.map +1 -1
  317. package/components/toast/toast.d.ts +1 -2
  318. package/components/toast/toast.js +1 -1
  319. package/components/toast/toast.js.map +1 -1
  320. package/components/validation-container/validation-container.d.ts +9 -6
  321. package/components/validation-container/validation-container.js +56 -38
  322. package/components/validation-container/validation-container.js.map +1 -1
  323. package/custom-elements.json +9595 -6648
  324. package/igniteui-webcomponents.css-data.json +1 -1
  325. package/igniteui-webcomponents.html-data.json +1 -1
  326. package/package.json +1 -1
  327. package/web-types.json +2 -2
@@ -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"]}
@@ -115,4 +115,5 @@ export declare function equal<T>(a: unknown, b: T, visited?: WeakSet<WeakKey>):
115
115
  export type RequiredProps<T, K extends keyof T> = T & {
116
116
  [P in K]-?: T[P];
117
117
  };
118
+ export declare function setStyles(element: HTMLElement, styles: Partial<CSSStyleDeclaration>): void;
118
119
  export {};
@@ -295,4 +295,7 @@ export function equal(a, b, visited = new WeakSet()) {
295
295
  }
296
296
  return false;
297
297
  }
298
+ export function setStyles(element, styles) {
299
+ Object.assign(element.style, styles);
300
+ }
298
301
  //# sourceMappingURL=util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/components/common/util.ts"],"names":[],"mappings":"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","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 } 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\nexport function setStyles(\n element: HTMLElement,\n styles: Partial<CSSStyleDeclaration>\n): void {\n Object.assign(element.style, styles);\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,7 +126,6 @@ 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,
@@ -172,12 +170,9 @@ let IgcDatePickerComponent = IgcDatePickerComponent_1 = class IgcDatePickerCompo
172
170
  this._input.focus();
173
171
  }
174
172
  }
175
- _handleFocusIn() {
176
- this._dirty = true;
177
- }
178
173
  _handleFocusOut({ relatedTarget }) {
179
174
  if (!this.contains(relatedTarget)) {
180
- this.checkValidity();
175
+ this._handleBlur();
181
176
  }
182
177
  }
183
178
  _handlerCalendarIconSlotPointerDown(event) {
@@ -196,11 +191,13 @@ let IgcDatePickerComponent = IgcDatePickerComponent_1 = class IgcDatePickerCompo
196
191
  }
197
192
  _handleInputChangeEvent(event) {
198
193
  event.stopPropagation();
194
+ this._setTouchedState();
199
195
  this.value = event.target.value;
200
196
  this.emitEvent('igcChange', { detail: this.value });
201
197
  }
202
198
  async _handleCalendarChangeEvent(event) {
203
199
  event.stopPropagation();
200
+ this._setTouchedState();
204
201
  if (this.readOnly) {
205
202
  await this._calendar.updateComplete;
206
203
  this._calendar.value = this.value;
@@ -212,6 +209,7 @@ let IgcDatePickerComponent = IgcDatePickerComponent_1 = class IgcDatePickerCompo
212
209
  }
213
210
  _handleInputEvent(event) {
214
211
  event.stopPropagation();
212
+ this._setTouchedState();
215
213
  if (this.nonEditable) {
216
214
  event.preventDefault();
217
215
  return;
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"date-picker.js","sourceRoot":"","sources":["../../../src/components/date-picker/date-picker.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, type TemplateResult } from 'lit';\nimport { property, query, queryAssignedElements } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\n\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcCalendarComponent, { focusActiveDate } from '../calendar/calendar.js';\nimport { convertToDate } from '../calendar/helpers.js';\nimport {\n type CalendarHeaderOrientation,\n type DateRangeDescriptor,\n DateRangeType,\n type WeekDays,\n} from '../calendar/types.js';\nimport {\n addKeybindings,\n altKey,\n arrowDown,\n arrowUp,\n escapeKey,\n} from '../common/controllers/key-bindings.js';\nimport { addRootClickController } from '../common/controllers/root-click.js';\nimport { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.js';\nimport { shadowOptions } from '../common/decorators/shadow-options.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport {\n IgcCalendarResourceStringEN,\n type IgcCalendarResourceStrings,\n} from '../common/i18n/calendar.resources.js';\nimport { IgcBaseComboBoxLikeComponent } from '../common/mixins/combo-box.js';\nimport type { AbstractConstructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormAssociatedRequiredMixin } from '../common/mixins/forms/associated-required.js';\nimport {\n createFormValueState,\n defaultDateTimeTransformers,\n type FormValueOf,\n} from '../common/mixins/forms/form-value.js';\nimport {\n addSafeEventListener,\n createCounter,\n findElementFromEventPath,\n isEmpty,\n} from '../common/util.js';\nimport IgcDateTimeInputComponent from '../date-time-input/date-time-input.js';\nimport { type DatePart, DateTimeUtil } from '../date-time-input/date-util.js';\nimport IgcDialogComponent from '../dialog/dialog.js';\nimport IgcFocusTrapComponent from '../focus-trap/focus-trap.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcPopoverComponent from '../popover/popover.js';\nimport type {\n ContentOrientation,\n PickerMode,\n RangeTextSelectMode,\n SelectionRangeDirection,\n} from '../types.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport { styles } from './themes/date-picker.base.css.js';\nimport { styles as shared } from './themes/shared/date-picker.common.css.js';\nimport { all } from './themes/themes.js';\nimport { datePickerValidators } from './validators.js';\n\nexport interface IgcDatePickerComponentEventMap {\n igcOpening: CustomEvent<void>;\n igcOpened: CustomEvent<void>;\n igcClosing: CustomEvent<void>;\n igcClosed: CustomEvent<void>;\n igcChange: CustomEvent<Date>;\n igcInput: CustomEvent<Date>;\n}\n\n/* blazorIndirectRender */\n/* blazorSupportsVisualChildren */\n/**\n * igc-date-picker is a feature rich component used for entering a date through manual text input or\n * choosing date values from a calendar dialog that pops up.\n *\n * @element igc-date-picker\n *\n * @slot prefix - Renders content before the input.\n * @slot suffix - Renders content after the input.\n * @slot helper-text - Renders content below the input.\n * @slot bad-input - Renders content when the value is in the disabledDates ranges.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot range-overflow - Renders content when the max validation fails.\n * @slot range-underflow - Renders content when the min validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n * @slot title - Renders content in the calendar title.\n * @slot header-date - Renders content instead of the current date/range in the calendar header.\n * @slot clear-icon - Renders a clear icon template.\n * @slot calendar-icon - Renders the icon/content for the calendar picker.\n * @slot calendar-icon-open - Renders the icon/content for the picker in open state.\n * @slot actions - Renders content in the action part of the picker in open state.\n *\n * @fires igcOpening - Emitted just before the calendar dropdown is shown.\n * @fires igcOpened - Emitted after the calendar dropdown is shown.\n * @fires igcClosing - Emitted just before the calendar dropdown is hidden.\n * @fires igcClosed - Emitted after the calendar dropdown is hidden.\n * @fires igcChange - Emitted when the user modifies and commits the elements's value.\n * @fires igcInput - Emitted when when the user types in the element.\n *\n * @csspart label - The label wrapper that renders content above the target input.\n * @csspart container - The main wrapper that holds all main input elements.\n * @csspart input - The native input element.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart calendar-icon - The calendar icon wrapper for closed state.\n * @csspart calendar-icon-open - The calendar icon wrapper for opened state.\n * @csspart clear-icon - The clear icon wrapper.\n * @csspart actions - The actions wrapper.\n * @csspart helper-text - The helper-text wrapper that renders content below the target input.\n * @csspart header - The calendar header element.\n * @csspart header-title - The calendar header title element.\n * @csspart header-date - The calendar header date element.\n * @csspart calendar-content - The calendar content element which contains the views and navigation elements.\n * @csspart navigation - The calendar navigation container element.\n * @csspart months-navigation - The calendar months navigation button element.\n * @csspart years-navigation - The calendar years navigation button element.\n * @csspart years-range - The calendar years range element.\n * @csspart navigation-buttons - The calendar navigation buttons container.\n * @csspart navigation-button - The calendar previous/next navigation button.\n * @csspart days-view-container - The calendar days view container element.\n * @csspart days-view - The calendar days view element.\n * @csspart months-view - The calendar months view element.\n * @csspart years-view - The calendar years view element.\n * @csspart days-row - The calendar days row element.\n * @csspart calendar-label - The calendar week header label element.\n * @csspart week-number - The calendar week number element.\n * @csspart week-number-inner - The calendar week number inner element.\n * @csspart date - The calendar date element.\n * @csspart date-inner - The calendar date inner element.\n * @csspart first - The calendar first selected date element in range selection.\n * @csspart last - The calendar last selected date element in range selection.\n * @csspart inactive - The calendar inactive date element.\n * @csspart hidden - The calendar hidden date element.\n * @csspart weekend - The calendar weekend date element.\n * @csspart range - The calendar range selected element.\n * @csspart special - The calendar special date element.\n * @csspart disabled - The calendar disabled date element.\n * @csspart single - The calendar single selected date element.\n * @csspart preview - The calendar range selection preview date element.\n * @csspart month - The calendar month element.\n * @csspart month-inner - The calendar month inner element.\n * @csspart year - The calendar year element.\n * @csspart year-inner - The calendar year inner element.\n * @csspart selected - The calendar selected state for element(s). Applies to date, month and year elements.\n * @csspart current - The calendar current state for element(s). Applies to date, month and year elements.\n */\n@blazorAdditionalDependencies(\n 'IgcCalendarComponent, IgcDateTimeInputComponent, IgcDialogComponent, IgcIconComponent'\n)\n@shadowOptions({ delegatesFocus: true })\nexport default class IgcDatePickerComponent extends FormAssociatedRequiredMixin(\n EventEmitterMixin<\n IgcDatePickerComponentEventMap,\n AbstractConstructor<IgcBaseComboBoxLikeComponent>\n >(IgcBaseComboBoxLikeComponent)\n) {\n public static readonly tagName = 'igc-date-picker';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcDatePickerComponent,\n IgcCalendarComponent,\n IgcDateTimeInputComponent,\n IgcFocusTrapComponent,\n IgcIconComponent,\n IgcPopoverComponent,\n IgcDialogComponent,\n IgcValidationContainerComponent\n );\n }\n\n //#region Private properties and state\n\n private static readonly _increment = createCounter();\n protected _inputId = `date-picker-${IgcDatePickerComponent._increment()}`;\n\n private readonly _themes = addThemingController(this, all);\n\n protected override get __validators() {\n return datePickerValidators;\n }\n\n private _activeDate: Date | null = null;\n private _min: Date | null = null;\n private _max: Date | null = null;\n private _disabledDates?: DateRangeDescriptor[];\n private _dateConstraints?: DateRangeDescriptor[];\n private _displayFormat?: string;\n private _inputFormat?: string;\n\n protected override readonly _formValue: FormValueOf<Date | null> =\n createFormValueState(this, {\n initialValue: null,\n transformers: defaultDateTimeTransformers,\n });\n\n protected override readonly _rootClickController = addRootClickController(\n this,\n {\n onHide: this._handleClosing,\n }\n );\n\n @query(IgcDateTimeInputComponent.tagName)\n private readonly _input!: IgcDateTimeInputComponent;\n\n @query(IgcCalendarComponent.tagName)\n private readonly _calendar!: IgcCalendarComponent;\n\n @queryAssignedElements({ slot: 'prefix' })\n private readonly _prefixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'suffix' })\n private readonly _suffixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'actions' })\n private readonly _actions!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'header-date' })\n private readonly _headerSlotItems!: HTMLElement[];\n\n private get _isDropDown(): boolean {\n return this.mode === 'dropdown';\n }\n\n //#endregion\n\n //#region Public properties and attributes\n\n /**\n * Sets the state of the datepicker dropdown.\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public override open = false;\n\n /**\n * The label of the datepicker.\n * @attr label\n */\n @property()\n public label!: string;\n\n /**\n * Determines whether the calendar is opened in a dropdown or a modal dialog\n * @attr mode\n */\n @property()\n public mode: PickerMode = 'dropdown';\n\n /**\n * Whether to allow typing in the input.\n * @attr non-editable\n */\n @property({ type: Boolean, reflect: true, attribute: 'non-editable' })\n public nonEditable = false;\n\n /**\n * Makes the control a readonly field.\n * @attr readonly\n */\n @property({ type: Boolean, reflect: true, attribute: 'readonly' })\n public readOnly = false;\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The value of the picker\n * @attr\n */\n @property({ converter: convertToDate })\n public set value(value: Date | string | null | undefined) {\n this._formValue.setValueAndFormState(value as Date | null);\n this._validate();\n }\n\n public get value(): Date | null {\n return this._formValue.value;\n }\n\n /**\n * Gets/Sets the date which is shown in the calendar picker and is highlighted.\n * By default it is the current date.\n */\n @property({ attribute: 'active-date', converter: convertToDate })\n public set activeDate(value: Date | string | null | undefined) {\n this._activeDate = convertToDate(value);\n }\n\n public get activeDate(): Date {\n return this._activeDate ?? this._calendar?.activeDate;\n }\n\n /**\n * The minimum value required for the date picker to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set min(value: Date | string | null | undefined) {\n this._min = convertToDate(value);\n this._setDateConstraints();\n this._updateValidity();\n }\n\n public get min(): Date | null {\n return this._min;\n }\n\n /**\n * The maximum value required for the date picker to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set max(value: Date | string | null | undefined) {\n this._max = convertToDate(value);\n this._setDateConstraints();\n this._updateValidity();\n }\n\n public get max(): Date | null {\n return this._max;\n }\n\n /**\n * The orientation of the calendar header.\n * @attr header-orientation\n */\n @property({ attribute: 'header-orientation', reflect: true })\n public headerOrientation: CalendarHeaderOrientation = 'horizontal';\n\n /**\n * The orientation of the multiple months displayed in the calendar's days view.\n * @attr\n */\n @property()\n public orientation: ContentOrientation = 'horizontal';\n\n /**\n * Determines whether the calendar hides its header.\n * @attr hide-header\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-header' })\n public hideHeader = false;\n\n /**\n * Controls the visibility of the dates that do not belong to the current month.\n * @attr hide-outside-days\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-outside-days' })\n public hideOutsideDays = false;\n\n /** Gets/sets disabled dates. */\n @property({ attribute: false })\n public set disabledDates(dates: DateRangeDescriptor[]) {\n this._disabledDates = dates;\n this._setDateConstraints();\n this._updateValidity();\n }\n\n public get disabledDates() {\n return this._disabledDates as DateRangeDescriptor[];\n }\n\n /** Gets/sets special dates. */\n @property({ attribute: false })\n public specialDates!: DateRangeDescriptor[];\n\n /**\n * Whether the control will have outlined appearance.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public outlined = false;\n\n /**\n * The placeholder attribute of the control.\n * @attr\n */\n @property()\n public placeholder!: string;\n\n /**\n * The number of months displayed in the calendar.\n * @attr visible-months\n */\n @property({ type: Number, attribute: 'visible-months' })\n public visibleMonths = 1;\n\n /**\n * Whether to show the number of the week in the calendar.\n * @attr show-week-numbers\n */\n @property({ type: Boolean, reflect: true, attribute: 'show-week-numbers' })\n public showWeekNumbers = false;\n\n /**\n * Format to display the value in when not editing.\n * Defaults to the input format if not set.\n * @attr display-format\n */\n @property({ attribute: 'display-format' })\n public set displayFormat(value: string) {\n this._displayFormat = value;\n }\n\n public get displayFormat(): string {\n return this._displayFormat ?? this.inputFormat;\n }\n\n /**\n * The date format to apply on the input.\n * Defaults to the current locale Intl.DateTimeFormat\n * @attr input-format\n */\n @property({ attribute: 'input-format' })\n public set inputFormat(value: string) {\n this._inputFormat = value;\n }\n\n public get inputFormat(): string {\n return this._inputFormat ?? this._input?.inputFormat;\n }\n\n /**\n * The locale settings used to display the value.\n * @attr\n */\n @property()\n public locale = 'en';\n\n /** The prompt symbol to use for unfilled parts of the mask.\n * @attr\n */\n @property()\n public prompt = '_';\n\n /** The resource strings of the calendar. */\n @property({ attribute: false })\n public resourceStrings: IgcCalendarResourceStrings =\n IgcCalendarResourceStringEN;\n\n /** Sets the start day of the week for the calendar. */\n @property({ attribute: 'week-start' })\n public weekStart: WeekDays = 'sunday';\n\n //#endregion\n\n //#region Watchers\n\n @watch('open')\n protected _openChange(): void {\n this._rootClickController.update();\n }\n\n //#endregion\n\n //#region Life-cycle hooks\n\n constructor() {\n super();\n\n addSafeEventListener(this, 'focusin', this._handleFocusIn);\n addSafeEventListener(this, 'focusout', this._handleFocusOut);\n\n addKeybindings(this, {\n skip: () => this.disabled || this.readOnly,\n bindingDefaults: { preventDefault: true },\n })\n .set([altKey, arrowDown], this.handleAnchorClick)\n .set([altKey, arrowUp], this._onEscapeKey)\n .set(escapeKey, this._onEscapeKey);\n }\n\n protected override createRenderRoot(): HTMLElement | DocumentFragment {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', () => this.requestUpdate());\n return root;\n }\n\n //#endregion\n\n //#region Private methods\n\n private _setDateConstraints(): void {\n const dates: DateRangeDescriptor[] = [];\n if (this._min) {\n dates.push({\n type: DateRangeType.Before,\n dateRange: [this._min],\n });\n }\n if (this._max) {\n dates.push({\n type: DateRangeType.After,\n dateRange: [this._max],\n });\n }\n if (!isEmpty(this._disabledDates ?? [])) {\n dates.push(...this.disabledDates);\n }\n\n this._dateConstraints = isEmpty(dates) ? undefined : dates;\n }\n\n private async _shouldCloseCalendarDropdown(): Promise<void> {\n if (!this.keepOpenOnSelect && (await this._hide(true))) {\n this._input.focus();\n this._input.select();\n }\n }\n\n //#endregion\n\n //#region Event handlers\n\n protected async _onEscapeKey(): Promise<void> {\n if (await this._hide(true)) {\n this._input.focus();\n }\n }\n\n protected _handleFocusIn(): void {\n this._dirty = true;\n }\n\n protected _handleFocusOut({ relatedTarget }: FocusEvent): void {\n if (!this.contains(relatedTarget as Node)) {\n this.checkValidity();\n }\n }\n\n protected _handlerCalendarIconSlotPointerDown(event: PointerEvent) {\n // This is where the delegateFocus of the underlying input is a chore.\n // If we have a required validator we don't want the input to enter an invalid\n // state right off the bat when opening the picker which will happen since focus is transferred to the calendar element.\n // So we call preventDefault on the event in order to not focus the input and trigger its validation logic on blur.\n event.preventDefault();\n }\n\n protected _handleInputClick(event: Event): void {\n if (findElementFromEventPath('input', event)) {\n // Open only if the click originates from the underlying input\n this.handleAnchorClick();\n }\n }\n\n protected override async handleAnchorClick(): Promise<void> {\n this._calendar.activeDate = this.value ?? this._calendar.activeDate;\n\n super.handleAnchorClick();\n await this.updateComplete;\n this._calendar[focusActiveDate]();\n }\n\n protected _handleInputChangeEvent(event: CustomEvent<Date>): void {\n event.stopPropagation();\n this.value = (event.target as IgcDateTimeInputComponent).value!;\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n protected async _handleCalendarChangeEvent(\n event: CustomEvent<Date>\n ): Promise<void> {\n event.stopPropagation();\n\n if (this.readOnly) {\n // Wait till the calendar finishes updating and then restore the current value from the date-picker.\n await this._calendar.updateComplete;\n this._calendar.value = this.value;\n return;\n }\n\n this.value = (event.target as IgcCalendarComponent).value!;\n this.emitEvent('igcChange', { detail: this.value });\n\n this._shouldCloseCalendarDropdown();\n }\n\n protected _handleInputEvent(event: CustomEvent<Date>): void {\n event.stopPropagation();\n\n if (this.nonEditable) {\n event.preventDefault();\n return;\n }\n\n this.value = (event.target as IgcDateTimeInputComponent).value!;\n this.emitEvent('igcInput', { detail: this.value });\n }\n\n protected _handleClosing(): void {\n this._hide(true);\n }\n\n protected _handleDialogClosing(event: Event): void {\n event.stopPropagation();\n this._hide(true);\n }\n\n protected _handleDialogClosed(event: Event): void {\n event.stopPropagation();\n }\n\n //#endregion\n\n //#region Public methods\n\n /** Clears the input part of the component of any user input */\n public clear(): void {\n this.value = null;\n this._input?.clear();\n }\n\n /** Increments the passed in date part */\n public stepUp(datePart?: DatePart, delta?: number): void {\n this._input.stepUp(datePart, delta);\n }\n\n /** Decrements the passed in date part */\n public stepDown(datePart?: DatePart, delta?: number): void {\n this._input.stepDown(datePart, delta);\n }\n\n /** Selects the text in the input of the component */\n public select(): void {\n this._input.select();\n }\n\n /** Sets the text selection range in the input of the component */\n public setSelectionRange(\n start: number,\n end: number,\n direction?: SelectionRangeDirection\n ): void {\n this._input.setSelectionRange(start, end, direction);\n }\n\n /* Replaces the selected text in the input and re-applies the mask */\n public setRangeText(\n replacement: string,\n start: number,\n end: number,\n mode?: RangeTextSelectMode\n ): void {\n this._input.setRangeText(replacement, start, end, mode);\n this.value = this._input.value;\n }\n\n //#endregion\n\n //#region Render methods\n\n private _renderClearIcon() {\n return this.value\n ? html`\n <span\n slot=\"suffix\"\n part=\"clear-icon\"\n @click=${this.readOnly ? nothing : this.clear}\n >\n <slot name=\"clear-icon\">\n <igc-icon\n name=\"input_clear\"\n collection=\"default\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n </span>\n `\n : nothing;\n }\n\n private _renderCalendarIcon() {\n const defaultIcon = html`\n <igc-icon name=\"today\" collection=\"default\" aria-hidden=\"true\"></igc-icon>\n `;\n\n const state = this.open ? 'calendar-icon-open' : 'calendar-icon';\n\n return html`\n <span\n slot=\"prefix\"\n part=${state}\n @pointerdown=${this._handlerCalendarIconSlotPointerDown}\n @click=${this.readOnly ? nothing : this.handleAnchorClick}\n >\n <slot name=${state}>${defaultIcon}</slot>\n </span>\n `;\n }\n\n private _renderCalendarSlots() {\n if (this._isDropDown) {\n return nothing;\n }\n\n const hasHeaderDate = isEmpty(this._headerSlotItems) ? '' : 'header-date';\n\n return html`\n <slot name=\"title\" slot=\"title\">\n ${this.resourceStrings.selectDate}\n </slot>\n <slot name=\"header-date\" slot=${hasHeaderDate}></slot>\n `;\n }\n\n private _renderCalendar(id: string) {\n const hideHeader = this._isDropDown ? true : this.hideHeader;\n\n return html`\n <igc-calendar\n aria-labelledby=${id}\n role=\"dialog\"\n .inert=${!this.open || this.disabled}\n ?show-week-numbers=${this.showWeekNumbers}\n ?hide-outside-days=${this.hideOutsideDays}\n ?hide-header=${hideHeader}\n .activeDate=${this.activeDate ?? this.value}\n .value=${this.value}\n .headerOrientation=${this.headerOrientation}\n .orientation=${this.orientation}\n .visibleMonths=${this.visibleMonths}\n .locale=${this.locale}\n .disabledDates=${this._dateConstraints!}\n .specialDates=${this.specialDates}\n .weekStart=${this.weekStart}\n @igcChange=${this._handleCalendarChangeEvent}\n exportparts=\"header, header-title, header-date, content: calendar-content, navigation, months-navigation,\n years-navigation, years-range, navigation-buttons, navigation-button, days-view-container,\n days-view, months-view, years-view, days-row, label: calendar-label, week-number, week-number-inner, date,\n date-inner, first, last, inactive, hidden, weekend, range, special, disabled, single, preview,\n month, month-inner, year, year-inner, selected, current\"\n >\n ${this._renderCalendarSlots()}\n </igc-calendar>\n `;\n }\n\n protected _renderActions() {\n const hasActions = !isEmpty(this._actions);\n const slot = this._isDropDown || hasActions ? undefined : 'footer';\n\n // If in dialog mode use the dialog footer slot\n return html`\n <div part=\"actions\" ?hidden=${!hasActions} slot=${ifDefined(slot)}>\n <slot name=\"actions\"></slot>\n </div>\n `;\n }\n\n protected _renderPicker(id: string) {\n return this._isDropDown\n ? html`\n <igc-popover ?open=${this.open} anchor=${id} flip shift>\n <igc-focus-trap ?disabled=${!this.open || this.disabled}>\n ${this._renderCalendar(id)}${this._renderActions()}\n </igc-focus-trap>\n </igc-popover>\n `\n : html`\n <igc-dialog\n aria-label=${ifDefined(this.resourceStrings.selectDate)}\n role=\"dialog\"\n ?open=${this.open}\n ?close-on-outside-click=${!this.keepOpenOnOutsideClick}\n hide-default-action\n @igcClosing=${this._handleDialogClosing}\n @igcClosed=${this._handleDialogClosed}\n exportparts=\"base: dialog-base, title, footer, overlay\"\n >\n ${this._renderCalendar(id)}${this._renderActions()}\n </igc-dialog>\n `;\n }\n\n private _renderLabel(id: string) {\n const isDisabled = this._isDropDown || this.readOnly;\n\n return this.label\n ? html`\n <label\n part=\"label\"\n for=${id}\n @click=${isDisabled ? nothing : this.handleAnchorClick}\n >\n ${this.label}\n </label>\n `\n : nothing;\n }\n\n private _renderHelperText(): TemplateResult {\n return IgcValidationContainerComponent.create(this);\n }\n\n protected _renderInput(id: string) {\n const format = DateTimeUtil.predefinedToDateDisplayFormat(\n this._displayFormat!\n );\n\n // Dialog mode is always readonly, rest depends on configuration\n const readOnly = !this._isDropDown || this.readOnly || this.nonEditable;\n\n const prefix = isEmpty(this._prefixes) ? undefined : 'prefix';\n const suffix = isEmpty(this._suffixes) ? undefined : 'suffix';\n const isMaterial = this._themes.theme === 'material';\n\n return html`\n <igc-date-time-input\n id=${id}\n aria-haspopup=\"dialog\"\n label=${ifDefined(isMaterial ? this.label : undefined)}\n input-format=${ifDefined(this._inputFormat)}\n display-format=${ifDefined(format)}\n ?disabled=${this.disabled}\n ?readonly=${readOnly}\n ?required=${this.required}\n .value=${this.value}\n .locale=${this.locale}\n .prompt=${this.prompt}\n .outlined=${this.outlined}\n .placeholder=${this.placeholder}\n .min=${this.min}\n .max=${this.max}\n .invalid=${live(this.invalid)}\n @igcChange=${this._handleInputChangeEvent}\n @igcInput=${this._handleInputEvent}\n @click=${this._isDropDown || this.readOnly\n ? nothing\n : this._handleInputClick}\n exportparts=\"input, label, prefix, suffix\"\n >\n ${this._renderCalendarIcon()}\n <slot name=\"prefix\" slot=${ifDefined(prefix)}></slot>\n ${this._renderClearIcon()}\n <slot name=\"suffix\" slot=${ifDefined(suffix)}></slot>\n </igc-date-time-input>\n `;\n }\n\n protected override render() {\n const id = this.id || this._inputId;\n const isMaterial = this._themes.theme === 'material';\n\n return html`\n ${isMaterial ? nothing : this._renderLabel(id)} ${this._renderInput(id)}\n ${this._renderPicker(id)} ${this._renderHelperText()}\n `;\n }\n\n //#endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-picker': IgcDatePickerComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"date-picker.js","sourceRoot":"","sources":["../../../src/components/date-picker/date-picker.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,oBAAoB,EAAE,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAGL,aAAa,GAEd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,MAAM,EACN,SAAS,EACT,OAAO,EACP,SAAS,GACV,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,sDAAsD,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EACL,2BAA2B,GAE5B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAE7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAC5F,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,wBAAwB,EACxB,OAAO,GACR,MAAM,mBAAmB,CAAC;AAC3B,OAAO,yBAAyB,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAiB,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,kBAAkB,MAAM,qBAAqB,CAAC;AACrD,OAAO,qBAAqB,MAAM,6BAA6B,CAAC;AAChE,OAAO,gBAAgB,MAAM,iBAAiB,CAAC;AAC/C,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AAOxD,OAAO,+BAA+B,MAAM,iDAAiD,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AA6FxC,IAAM,sBAAsB,8BAA5B,MAAM,sBAAuB,SAAQ,2BAA2B,CAC7E,iBAAiB,CAGf,4BAA4B,CAAC,CAChC;IAKQ,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CACf,wBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,+BAA+B,CAChC,CAAC;IACJ,CAAC;IASD,IAAuB,YAAY;QACjC,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAwCD,IAAY,WAAW;QACrB,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;IAClC,CAAC;IA+CD,IAAW,KAAK,CAAC,KAAuC;QACtD,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAoB,CAAC,CAAC;IAC7D,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IAC/B,CAAC;IAOD,IAAW,UAAU,CAAC,KAAuC;QAC3D,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IACxD,CAAC;IAOD,IAAW,GAAG,CAAC,KAAuC;QACpD,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAOD,IAAW,GAAG,CAAC,KAAuC;QACpD,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAgCD,IAAW,aAAa,CAAC,KAA4B;QACnD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,cAAuC,CAAC;IACtD,CAAC;IAwCD,IAAW,aAAa,CAAC,KAAa;QACpC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,WAAW,CAAC;IACjD,CAAC;IAQD,IAAW,WAAW,CAAC,KAAa;QAClC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC;IACvD,CAAC;IA6BS,WAAW;QACnB,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC;IACrC,CAAC;IAMD;QACE,KAAK,EAAE,CAAC;QA1RA,aAAQ,GAAG,eAAe,wBAAsB,CAAC,UAAU,EAAE,EAAE,CAAC;QAEzD,YAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAMnD,gBAAW,GAAgB,IAAI,CAAC;QAChC,SAAI,GAAgB,IAAI,CAAC;QACzB,SAAI,GAAgB,IAAI,CAAC;QAML,eAAU,GAAG,oBAAoB,CAAC,IAAI,EAAE;YAClE,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,6BAA6B;SAC5C,CAAC,CAAC;QAEyB,yBAAoB,GAAG,sBAAsB,CACvE,IAAI,EACJ;YACE,MAAM,EAAE,IAAI,CAAC,cAAc;SAC5B,CACF,CAAC;QAiCc,SAAI,GAAG,KAAK,CAAC;QActB,SAAI,GAAe,UAAU,CAAC;QAO9B,gBAAW,GAAG,KAAK,CAAC;QAOpB,aAAQ,GAAG,KAAK,CAAC;QAgEjB,sBAAiB,GAA8B,YAAY,CAAC;QAO5D,gBAAW,GAAuB,YAAY,CAAC;QAO/C,eAAU,GAAG,KAAK,CAAC;QAOnB,oBAAe,GAAG,KAAK,CAAC;QAuBxB,aAAQ,GAAG,KAAK,CAAC;QAcjB,kBAAa,GAAG,CAAC,CAAC;QAOlB,oBAAe,GAAG,KAAK,CAAC;QAmCxB,WAAM,GAAG,IAAI,CAAC;QAMd,WAAM,GAAG,GAAG,CAAC;QAIb,oBAAe,GACpB,2BAA2B,CAAC;QAIvB,cAAS,GAAa,QAAQ,CAAC;QAkBpC,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAE7D,cAAc,CAAC,IAAI,EAAE;YACnB,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;YAC1C,eAAe,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1C,CAAC;aACC,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC;aAChD,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC;aACzC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAEkB,gBAAgB;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACtC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAMO,mBAAmB;QACzB,MAAM,KAAK,GAA0B,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,aAAa,CAAC,MAAM;gBAC1B,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;aACvB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,aAAa,CAAC,KAAK;gBACzB,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;aACvB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7D,CAAC;IAEO,KAAK,CAAC,4BAA4B;QACxC,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAMS,KAAK,CAAC,YAAY;QAC1B,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAES,eAAe,CAAC,EAAE,aAAa,EAAc;QACrD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAqB,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAES,mCAAmC,CAAC,KAAmB;QAK/D,KAAK,CAAC,cAAc,EAAE,CAAC;IACzB,CAAC;IAES,iBAAiB,CAAC,KAAY;QACtC,IAAI,wBAAwB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YAE7C,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAEkB,KAAK,CAAC,iBAAiB;QACxC,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QAEpE,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,cAAc,CAAC;QAC1B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC;IACpC,CAAC;IAES,uBAAuB,CAAC,KAAwB;QACxD,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,GAAI,KAAK,CAAC,MAAoC,CAAC,KAAM,CAAC;QAChE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAES,KAAK,CAAC,0BAA0B,CACxC,KAAwB;QAExB,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAElB,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;YACpC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAClC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,GAAI,KAAK,CAAC,MAA+B,CAAC,KAAM,CAAC;QAC3D,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAEpD,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACtC,CAAC;IAES,iBAAiB,CAAC,KAAwB;QAClD,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,GAAI,KAAK,CAAC,MAAoC,CAAC,KAAM,CAAC;QAChE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;IAES,cAAc;QACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAES,oBAAoB,CAAC,KAAY;QACzC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAES,mBAAmB,CAAC,KAAY;QACxC,KAAK,CAAC,eAAe,EAAE,CAAC;IAC1B,CAAC;IAOM,KAAK;QACV,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;IAGM,MAAM,CAAC,QAAmB,EAAE,KAAc;QAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAGM,QAAQ,CAAC,QAAmB,EAAE,KAAc;QACjD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAGM,MAAM;QACX,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAGM,iBAAiB,CACtB,KAAa,EACb,GAAW,EACX,SAAmC;QAEnC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAGM,YAAY,CACjB,WAAmB,EACnB,KAAa,EACb,GAAW,EACX,IAA0B;QAE1B,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IACjC,CAAC;IAMO,gBAAgB;QACtB,OAAO,IAAI,CAAC,KAAK;YACf,CAAC,CAAC,IAAI,CAAA;;;;qBAIS,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;;;;;;;;;;SAUhD;YACH,CAAC,CAAC,OAAO,CAAC;IACd,CAAC;IAEO,mBAAmB;QACzB,MAAM,WAAW,GAAG,IAAI,CAAA;;KAEvB,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,eAAe,CAAC;QAEjE,OAAO,IAAI,CAAA;;;eAGA,KAAK;uBACG,IAAI,CAAC,mCAAmC;iBAC9C,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB;;qBAE5C,KAAK,IAAI,WAAW;;KAEpC,CAAC;IACJ,CAAC;IAEO,oBAAoB;QAC1B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;QAE1E,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,eAAe,CAAC,UAAU;;sCAEH,aAAa;KAC9C,CAAC;IACJ,CAAC;IAEO,eAAe,CAAC,EAAU;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QAE7D,OAAO,IAAI,CAAA;;0BAEW,EAAE;;iBAEX,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;6BACf,IAAI,CAAC,eAAe;6BACpB,IAAI,CAAC,eAAe;uBAC1B,UAAU;sBACX,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK;iBAClC,IAAI,CAAC,KAAK;6BACE,IAAI,CAAC,iBAAiB;uBAC5B,IAAI,CAAC,WAAW;yBACd,IAAI,CAAC,aAAa;kBACzB,IAAI,CAAC,MAAM;yBACJ,IAAI,CAAC,gBAAiB;wBACvB,IAAI,CAAC,YAAY;qBACpB,IAAI,CAAC,SAAS;qBACd,IAAI,CAAC,0BAA0B;;;;;;;UAO1C,IAAI,CAAC,oBAAoB,EAAE;;KAEhC,CAAC;IACJ,CAAC;IAES,cAAc;QACtB,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QAGnE,OAAO,IAAI,CAAA;oCACqB,CAAC,UAAU,SAAS,SAAS,CAAC,IAAI,CAAC;;;KAGlE,CAAC;IACJ,CAAC;IAES,aAAa,CAAC,EAAU;QAChC,OAAO,IAAI,CAAC,WAAW;YACrB,CAAC,CAAC,IAAI,CAAA;+BACmB,IAAI,CAAC,IAAI,WAAW,EAAE;wCACb,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;gBACnD,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE;;;SAGvD;YACH,CAAC,CAAC,IAAI,CAAA;;yBAEa,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;;oBAE/C,IAAI,CAAC,IAAI;sCACS,CAAC,IAAI,CAAC,sBAAsB;;0BAExC,IAAI,CAAC,oBAAoB;yBAC1B,IAAI,CAAC,mBAAmB;;;cAGnC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE;;SAErD,CAAC;IACR,CAAC;IAEO,YAAY,CAAC,EAAU;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC;QAErD,OAAO,IAAI,CAAC,KAAK;YACf,CAAC,CAAC,IAAI,CAAA;;;kBAGM,EAAE;qBACC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB;;cAEpD,IAAI,CAAC,KAAK;;SAEf;YACH,CAAC,CAAC,OAAO,CAAC;IACd,CAAC;IAEO,iBAAiB;QACvB,OAAO,+BAA+B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAES,YAAY,CAAC,EAAU;QAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,6BAA6B,CACvD,IAAI,CAAC,cAAe,CACrB,CAAC;QAGF,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC;QAExE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,CAAC;QAErD,OAAO,IAAI,CAAA;;aAEF,EAAE;;gBAEC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;uBACvC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;yBAC1B,SAAS,CAAC,MAAM,CAAC;oBACtB,IAAI,CAAC,QAAQ;oBACb,QAAQ;oBACR,IAAI,CAAC,QAAQ;iBAChB,IAAI,CAAC,KAAK;kBACT,IAAI,CAAC,MAAM;kBACX,IAAI,CAAC,MAAM;oBACT,IAAI,CAAC,QAAQ;uBACV,IAAI,CAAC,WAAW;eACxB,IAAI,CAAC,GAAG;eACR,IAAI,CAAC,GAAG;mBACJ,IAAI,CAAC,OAAO;qBACV,IAAI,CAAC,uBAAuB;oBAC7B,IAAI,CAAC,iBAAiB;iBACzB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ;YACxC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,IAAI,CAAC,iBAAiB;;;UAGxB,IAAI,CAAC,mBAAmB,EAAE;mCACD,SAAS,CAAC,MAAM,CAAC;UAC1C,IAAI,CAAC,gBAAgB,EAAE;mCACE,SAAS,CAAC,MAAM,CAAC;;KAE/C,CAAC;IACJ,CAAC;IAEkB,MAAM;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,CAAC;QAErD,OAAO,IAAI,CAAA;QACP,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACrE,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE;KACrD,CAAC;IACJ,CAAC;;AAprBsB,8BAAO,GAAG,iBAAiB,AAApB,CAAqB;AACrC,6BAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,AAAnB,CAAoB;AAkBhB,iCAAU,GAAG,aAAa,EAAE,AAAlB,CAAmB;AA8BpC;IADhB,KAAK,CAAC,yBAAyB,CAAC,OAAO,CAAC;sDACW;AAGnC;IADhB,KAAK,CAAC,oBAAoB,CAAC,OAAO,CAAC;yDACc;AAGjC;IADhB,qBAAqB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;yDACC;AAG1B;IADhB,qBAAqB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;yDACC;AAG1B;IADhB,qBAAqB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;wDACD;AAGzB;IADhB,qBAAqB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;gEACG;AAelC;IADf,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oDACd;AAOtB;IADN,QAAQ,EAAE;qDACW;AAOf;IADN,QAAQ,EAAE;oDAC0B;AAO9B;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;2DAC3C;AAOpB;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;wDAC1C;AAQxB;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;mDAGtC;AAWD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;wDAGhE;AAWD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;iDAKtC;AAWD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;iDAKtC;AAWM;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;iEACM;AAO5D;IADN,QAAQ,EAAE;2DAC2C;AAO/C;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;0DAC3C;AAOnB;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;+DAC5C;AAI/B;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;2DAK9B;AAQM;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;4DACa;AAOrC;IADN,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;wDACnB;AAOjB;IADN,QAAQ,EAAE;2DACiB;AAOrB;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;6DAC/B;AAOlB;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;+DAC5C;AAQ/B;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;2DAGzC;AAYD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;yDAGvC;AAWM;IADN,QAAQ,EAAE;sDACU;AAMd;IADN,QAAQ,EAAE;sDACS;AAIb;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;+DAED;AAIvB;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;yDACA;AAO5B;IADT,KAAK,CAAC,MAAM,CAAC;yDAGb;AA7SkB,sBAAsB;IAJ1C,4BAA4B,CAC3B,uFAAuF,CACxF;IACA,aAAa,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;GACnB,sBAAsB,CA6rB1C;eA7rBoB,sBAAsB","sourcesContent":["import { html, nothing, type TemplateResult } from 'lit';\nimport { property, query, queryAssignedElements } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcCalendarComponent, { focusActiveDate } from '../calendar/calendar.js';\nimport { convertToDate } from '../calendar/helpers.js';\nimport {\n type CalendarHeaderOrientation,\n type DateRangeDescriptor,\n DateRangeType,\n type WeekDays,\n} from '../calendar/types.js';\nimport {\n addKeybindings,\n altKey,\n arrowDown,\n arrowUp,\n escapeKey,\n} from '../common/controllers/key-bindings.js';\nimport { addRootClickController } from '../common/controllers/root-click.js';\nimport { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.js';\nimport { shadowOptions } from '../common/decorators/shadow-options.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport {\n IgcCalendarResourceStringEN,\n type IgcCalendarResourceStrings,\n} from '../common/i18n/calendar.resources.js';\nimport { IgcBaseComboBoxLikeComponent } from '../common/mixins/combo-box.js';\nimport type { AbstractConstructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormAssociatedRequiredMixin } from '../common/mixins/forms/associated-required.js';\nimport { FormValueDateTimeTransformers } from '../common/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '../common/mixins/forms/form-value.js';\nimport {\n addSafeEventListener,\n createCounter,\n findElementFromEventPath,\n isEmpty,\n} from '../common/util.js';\nimport IgcDateTimeInputComponent from '../date-time-input/date-time-input.js';\nimport { type DatePart, DateTimeUtil } from '../date-time-input/date-util.js';\nimport IgcDialogComponent from '../dialog/dialog.js';\nimport IgcFocusTrapComponent from '../focus-trap/focus-trap.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcPopoverComponent from '../popover/popover.js';\nimport type {\n ContentOrientation,\n PickerMode,\n RangeTextSelectMode,\n SelectionRangeDirection,\n} from '../types.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport { styles } from './themes/date-picker.base.css.js';\nimport { styles as shared } from './themes/shared/date-picker.common.css.js';\nimport { all } from './themes/themes.js';\nimport { datePickerValidators } from './validators.js';\n\nexport interface IgcDatePickerComponentEventMap {\n igcOpening: CustomEvent<void>;\n igcOpened: CustomEvent<void>;\n igcClosing: CustomEvent<void>;\n igcClosed: CustomEvent<void>;\n igcChange: CustomEvent<Date>;\n igcInput: CustomEvent<Date>;\n}\n\n/* blazorIndirectRender */\n/* blazorSupportsVisualChildren */\n/**\n * igc-date-picker is a feature rich component used for entering a date through manual text input or\n * choosing date values from a calendar dialog that pops up.\n *\n * @element igc-date-picker\n *\n * @slot prefix - Renders content before the input.\n * @slot suffix - Renders content after the input.\n * @slot helper-text - Renders content below the input.\n * @slot bad-input - Renders content when the value is in the disabledDates ranges.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot range-overflow - Renders content when the max validation fails.\n * @slot range-underflow - Renders content when the min validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n * @slot title - Renders content in the calendar title.\n * @slot header-date - Renders content instead of the current date/range in the calendar header.\n * @slot clear-icon - Renders a clear icon template.\n * @slot calendar-icon - Renders the icon/content for the calendar picker.\n * @slot calendar-icon-open - Renders the icon/content for the picker in open state.\n * @slot actions - Renders content in the action part of the picker in open state.\n *\n * @fires igcOpening - Emitted just before the calendar dropdown is shown.\n * @fires igcOpened - Emitted after the calendar dropdown is shown.\n * @fires igcClosing - Emitted just before the calendar dropdown is hidden.\n * @fires igcClosed - Emitted after the calendar dropdown is hidden.\n * @fires igcChange - Emitted when the user modifies and commits the elements's value.\n * @fires igcInput - Emitted when when the user types in the element.\n *\n * @csspart label - The label wrapper that renders content above the target input.\n * @csspart container - The main wrapper that holds all main input elements.\n * @csspart input - The native input element.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart calendar-icon - The calendar icon wrapper for closed state.\n * @csspart calendar-icon-open - The calendar icon wrapper for opened state.\n * @csspart clear-icon - The clear icon wrapper.\n * @csspart actions - The actions wrapper.\n * @csspart helper-text - The helper-text wrapper that renders content below the target input.\n * @csspart header - The calendar header element.\n * @csspart header-title - The calendar header title element.\n * @csspart header-date - The calendar header date element.\n * @csspart calendar-content - The calendar content element which contains the views and navigation elements.\n * @csspart navigation - The calendar navigation container element.\n * @csspart months-navigation - The calendar months navigation button element.\n * @csspart years-navigation - The calendar years navigation button element.\n * @csspart years-range - The calendar years range element.\n * @csspart navigation-buttons - The calendar navigation buttons container.\n * @csspart navigation-button - The calendar previous/next navigation button.\n * @csspart days-view-container - The calendar days view container element.\n * @csspart days-view - The calendar days view element.\n * @csspart months-view - The calendar months view element.\n * @csspart years-view - The calendar years view element.\n * @csspart days-row - The calendar days row element.\n * @csspart calendar-label - The calendar week header label element.\n * @csspart week-number - The calendar week number element.\n * @csspart week-number-inner - The calendar week number inner element.\n * @csspart date - The calendar date element.\n * @csspart date-inner - The calendar date inner element.\n * @csspart first - The calendar first selected date element in range selection.\n * @csspart last - The calendar last selected date element in range selection.\n * @csspart inactive - The calendar inactive date element.\n * @csspart hidden - The calendar hidden date element.\n * @csspart weekend - The calendar weekend date element.\n * @csspart range - The calendar range selected element.\n * @csspart special - The calendar special date element.\n * @csspart disabled - The calendar disabled date element.\n * @csspart single - The calendar single selected date element.\n * @csspart preview - The calendar range selection preview date element.\n * @csspart month - The calendar month element.\n * @csspart month-inner - The calendar month inner element.\n * @csspart year - The calendar year element.\n * @csspart year-inner - The calendar year inner element.\n * @csspart selected - The calendar selected state for element(s). Applies to date, month and year elements.\n * @csspart current - The calendar current state for element(s). Applies to date, month and year elements.\n */\n@blazorAdditionalDependencies(\n 'IgcCalendarComponent, IgcDateTimeInputComponent, IgcDialogComponent, IgcIconComponent'\n)\n@shadowOptions({ delegatesFocus: true })\nexport default class IgcDatePickerComponent extends FormAssociatedRequiredMixin(\n EventEmitterMixin<\n IgcDatePickerComponentEventMap,\n AbstractConstructor<IgcBaseComboBoxLikeComponent>\n >(IgcBaseComboBoxLikeComponent)\n) {\n public static readonly tagName = 'igc-date-picker';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcDatePickerComponent,\n IgcCalendarComponent,\n IgcDateTimeInputComponent,\n IgcFocusTrapComponent,\n IgcIconComponent,\n IgcPopoverComponent,\n IgcDialogComponent,\n IgcValidationContainerComponent\n );\n }\n\n //#region Private properties and state\n\n private static readonly _increment = createCounter();\n protected _inputId = `date-picker-${IgcDatePickerComponent._increment()}`;\n\n private readonly _themes = addThemingController(this, all);\n\n protected override get __validators() {\n return datePickerValidators;\n }\n\n private _activeDate: Date | null = null;\n private _min: Date | null = null;\n private _max: Date | null = null;\n private _disabledDates?: DateRangeDescriptor[];\n private _dateConstraints?: DateRangeDescriptor[];\n private _displayFormat?: string;\n private _inputFormat?: string;\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: null,\n transformers: FormValueDateTimeTransformers,\n });\n\n protected override readonly _rootClickController = addRootClickController(\n this,\n {\n onHide: this._handleClosing,\n }\n );\n\n @query(IgcDateTimeInputComponent.tagName)\n private readonly _input!: IgcDateTimeInputComponent;\n\n @query(IgcCalendarComponent.tagName)\n private readonly _calendar!: IgcCalendarComponent;\n\n @queryAssignedElements({ slot: 'prefix' })\n private readonly _prefixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'suffix' })\n private readonly _suffixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'actions' })\n private readonly _actions!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'header-date' })\n private readonly _headerSlotItems!: HTMLElement[];\n\n private get _isDropDown(): boolean {\n return this.mode === 'dropdown';\n }\n\n //#endregion\n\n //#region Public properties and attributes\n\n /**\n * Sets the state of the datepicker dropdown.\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public override open = false;\n\n /**\n * The label of the datepicker.\n * @attr label\n */\n @property()\n public label!: string;\n\n /**\n * Determines whether the calendar is opened in a dropdown or a modal dialog\n * @attr mode\n */\n @property()\n public mode: PickerMode = 'dropdown';\n\n /**\n * Whether to allow typing in the input.\n * @attr non-editable\n */\n @property({ type: Boolean, reflect: true, attribute: 'non-editable' })\n public nonEditable = false;\n\n /**\n * Makes the control a readonly field.\n * @attr readonly\n */\n @property({ type: Boolean, reflect: true, attribute: 'readonly' })\n public readOnly = false;\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The value of the picker\n * @attr\n */\n @property({ converter: convertToDate })\n public set value(value: Date | string | null | undefined) {\n this._formValue.setValueAndFormState(value as Date | null);\n }\n\n public get value(): Date | null {\n return this._formValue.value;\n }\n\n /**\n * Gets/Sets the date which is shown in the calendar picker and is highlighted.\n * By default it is the current date.\n */\n @property({ attribute: 'active-date', converter: convertToDate })\n public set activeDate(value: Date | string | null | undefined) {\n this._activeDate = convertToDate(value);\n }\n\n public get activeDate(): Date {\n return this._activeDate ?? this._calendar?.activeDate;\n }\n\n /**\n * The minimum value required for the date picker to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set min(value: Date | string | null | undefined) {\n this._min = convertToDate(value);\n this._setDateConstraints();\n this._validate();\n }\n\n public get min(): Date | null {\n return this._min;\n }\n\n /**\n * The maximum value required for the date picker to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set max(value: Date | string | null | undefined) {\n this._max = convertToDate(value);\n this._setDateConstraints();\n this._validate();\n }\n\n public get max(): Date | null {\n return this._max;\n }\n\n /**\n * The orientation of the calendar header.\n * @attr header-orientation\n */\n @property({ attribute: 'header-orientation', reflect: true })\n public headerOrientation: CalendarHeaderOrientation = 'horizontal';\n\n /**\n * The orientation of the multiple months displayed in the calendar's days view.\n * @attr\n */\n @property()\n public orientation: ContentOrientation = 'horizontal';\n\n /**\n * Determines whether the calendar hides its header.\n * @attr hide-header\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-header' })\n public hideHeader = false;\n\n /**\n * Controls the visibility of the dates that do not belong to the current month.\n * @attr hide-outside-days\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-outside-days' })\n public hideOutsideDays = false;\n\n /** Gets/sets disabled dates. */\n @property({ attribute: false })\n public set disabledDates(dates: DateRangeDescriptor[]) {\n this._disabledDates = dates;\n this._setDateConstraints();\n this._validate();\n }\n\n public get disabledDates() {\n return this._disabledDates as DateRangeDescriptor[];\n }\n\n /** Gets/sets special dates. */\n @property({ attribute: false })\n public specialDates!: DateRangeDescriptor[];\n\n /**\n * Whether the control will have outlined appearance.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public outlined = false;\n\n /**\n * The placeholder attribute of the control.\n * @attr\n */\n @property()\n public placeholder!: string;\n\n /**\n * The number of months displayed in the calendar.\n * @attr visible-months\n */\n @property({ type: Number, attribute: 'visible-months' })\n public visibleMonths = 1;\n\n /**\n * Whether to show the number of the week in the calendar.\n * @attr show-week-numbers\n */\n @property({ type: Boolean, reflect: true, attribute: 'show-week-numbers' })\n public showWeekNumbers = false;\n\n /**\n * Format to display the value in when not editing.\n * Defaults to the input format if not set.\n * @attr display-format\n */\n @property({ attribute: 'display-format' })\n public set displayFormat(value: string) {\n this._displayFormat = value;\n }\n\n public get displayFormat(): string {\n return this._displayFormat ?? this.inputFormat;\n }\n\n /**\n * The date format to apply on the input.\n * Defaults to the current locale Intl.DateTimeFormat\n * @attr input-format\n */\n @property({ attribute: 'input-format' })\n public set inputFormat(value: string) {\n this._inputFormat = value;\n }\n\n public get inputFormat(): string {\n return this._inputFormat ?? this._input?.inputFormat;\n }\n\n /**\n * The locale settings used to display the value.\n * @attr\n */\n @property()\n public locale = 'en';\n\n /** The prompt symbol to use for unfilled parts of the mask.\n * @attr\n */\n @property()\n public prompt = '_';\n\n /** The resource strings of the calendar. */\n @property({ attribute: false })\n public resourceStrings: IgcCalendarResourceStrings =\n IgcCalendarResourceStringEN;\n\n /** Sets the start day of the week for the calendar. */\n @property({ attribute: 'week-start' })\n public weekStart: WeekDays = 'sunday';\n\n //#endregion\n\n //#region Watchers\n\n @watch('open')\n protected _openChange(): void {\n this._rootClickController.update();\n }\n\n //#endregion\n\n //#region Life-cycle hooks\n\n constructor() {\n super();\n\n addSafeEventListener(this, 'focusout', this._handleFocusOut);\n\n addKeybindings(this, {\n skip: () => this.disabled || this.readOnly,\n bindingDefaults: { preventDefault: true },\n })\n .set([altKey, arrowDown], this.handleAnchorClick)\n .set([altKey, arrowUp], this._onEscapeKey)\n .set(escapeKey, this._onEscapeKey);\n }\n\n protected override createRenderRoot(): HTMLElement | DocumentFragment {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', () => this.requestUpdate());\n return root;\n }\n\n //#endregion\n\n //#region Private methods\n\n private _setDateConstraints(): void {\n const dates: DateRangeDescriptor[] = [];\n if (this._min) {\n dates.push({\n type: DateRangeType.Before,\n dateRange: [this._min],\n });\n }\n if (this._max) {\n dates.push({\n type: DateRangeType.After,\n dateRange: [this._max],\n });\n }\n if (!isEmpty(this._disabledDates ?? [])) {\n dates.push(...this.disabledDates);\n }\n\n this._dateConstraints = isEmpty(dates) ? undefined : dates;\n }\n\n private async _shouldCloseCalendarDropdown(): Promise<void> {\n if (!this.keepOpenOnSelect && (await this._hide(true))) {\n this._input.focus();\n this._input.select();\n }\n }\n\n //#endregion\n\n //#region Event handlers\n\n protected async _onEscapeKey(): Promise<void> {\n if (await this._hide(true)) {\n this._input.focus();\n }\n }\n\n protected _handleFocusOut({ relatedTarget }: FocusEvent): void {\n if (!this.contains(relatedTarget as Node)) {\n this._handleBlur();\n }\n }\n\n protected _handlerCalendarIconSlotPointerDown(event: PointerEvent) {\n // This is where the delegateFocus of the underlying input is a chore.\n // If we have a required validator we don't want the input to enter an invalid\n // state right off the bat when opening the picker which will happen since focus is transferred to the calendar element.\n // So we call preventDefault on the event in order to not focus the input and trigger its validation logic on blur.\n event.preventDefault();\n }\n\n protected _handleInputClick(event: Event): void {\n if (findElementFromEventPath('input', event)) {\n // Open only if the click originates from the underlying input\n this.handleAnchorClick();\n }\n }\n\n protected override async handleAnchorClick(): Promise<void> {\n this._calendar.activeDate = this.value ?? this._calendar.activeDate;\n\n super.handleAnchorClick();\n await this.updateComplete;\n this._calendar[focusActiveDate]();\n }\n\n protected _handleInputChangeEvent(event: CustomEvent<Date>): void {\n event.stopPropagation();\n\n this._setTouchedState();\n this.value = (event.target as IgcDateTimeInputComponent).value!;\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n protected async _handleCalendarChangeEvent(\n event: CustomEvent<Date>\n ): Promise<void> {\n event.stopPropagation();\n\n this._setTouchedState();\n\n if (this.readOnly) {\n // Wait till the calendar finishes updating and then restore the current value from the date-picker.\n await this._calendar.updateComplete;\n this._calendar.value = this.value;\n return;\n }\n\n this.value = (event.target as IgcCalendarComponent).value!;\n this.emitEvent('igcChange', { detail: this.value });\n\n this._shouldCloseCalendarDropdown();\n }\n\n protected _handleInputEvent(event: CustomEvent<Date>): void {\n event.stopPropagation();\n\n this._setTouchedState();\n\n if (this.nonEditable) {\n event.preventDefault();\n return;\n }\n\n this.value = (event.target as IgcDateTimeInputComponent).value!;\n this.emitEvent('igcInput', { detail: this.value });\n }\n\n protected _handleClosing(): void {\n this._hide(true);\n }\n\n protected _handleDialogClosing(event: Event): void {\n event.stopPropagation();\n this._hide(true);\n }\n\n protected _handleDialogClosed(event: Event): void {\n event.stopPropagation();\n }\n\n //#endregion\n\n //#region Public methods\n\n /** Clears the input part of the component of any user input */\n public clear(): void {\n this.value = null;\n this._input?.clear();\n }\n\n /** Increments the passed in date part */\n public stepUp(datePart?: DatePart, delta?: number): void {\n this._input.stepUp(datePart, delta);\n }\n\n /** Decrements the passed in date part */\n public stepDown(datePart?: DatePart, delta?: number): void {\n this._input.stepDown(datePart, delta);\n }\n\n /** Selects the text in the input of the component */\n public select(): void {\n this._input.select();\n }\n\n /** Sets the text selection range in the input of the component */\n public setSelectionRange(\n start: number,\n end: number,\n direction?: SelectionRangeDirection\n ): void {\n this._input.setSelectionRange(start, end, direction);\n }\n\n /* Replaces the selected text in the input and re-applies the mask */\n public setRangeText(\n replacement: string,\n start: number,\n end: number,\n mode?: RangeTextSelectMode\n ): void {\n this._input.setRangeText(replacement, start, end, mode);\n this.value = this._input.value;\n }\n\n //#endregion\n\n //#region Render methods\n\n private _renderClearIcon() {\n return this.value\n ? html`\n <span\n slot=\"suffix\"\n part=\"clear-icon\"\n @click=${this.readOnly ? nothing : this.clear}\n >\n <slot name=\"clear-icon\">\n <igc-icon\n name=\"input_clear\"\n collection=\"default\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n </span>\n `\n : nothing;\n }\n\n private _renderCalendarIcon() {\n const defaultIcon = html`\n <igc-icon name=\"today\" collection=\"default\" aria-hidden=\"true\"></igc-icon>\n `;\n\n const state = this.open ? 'calendar-icon-open' : 'calendar-icon';\n\n return html`\n <span\n slot=\"prefix\"\n part=${state}\n @pointerdown=${this._handlerCalendarIconSlotPointerDown}\n @click=${this.readOnly ? nothing : this.handleAnchorClick}\n >\n <slot name=${state}>${defaultIcon}</slot>\n </span>\n `;\n }\n\n private _renderCalendarSlots() {\n if (this._isDropDown) {\n return nothing;\n }\n\n const hasHeaderDate = isEmpty(this._headerSlotItems) ? '' : 'header-date';\n\n return html`\n <slot name=\"title\" slot=\"title\">\n ${this.resourceStrings.selectDate}\n </slot>\n <slot name=\"header-date\" slot=${hasHeaderDate}></slot>\n `;\n }\n\n private _renderCalendar(id: string) {\n const hideHeader = this._isDropDown ? true : this.hideHeader;\n\n return html`\n <igc-calendar\n aria-labelledby=${id}\n role=\"dialog\"\n .inert=${!this.open || this.disabled}\n ?show-week-numbers=${this.showWeekNumbers}\n ?hide-outside-days=${this.hideOutsideDays}\n ?hide-header=${hideHeader}\n .activeDate=${this.activeDate ?? this.value}\n .value=${this.value}\n .headerOrientation=${this.headerOrientation}\n .orientation=${this.orientation}\n .visibleMonths=${this.visibleMonths}\n .locale=${this.locale}\n .disabledDates=${this._dateConstraints!}\n .specialDates=${this.specialDates}\n .weekStart=${this.weekStart}\n @igcChange=${this._handleCalendarChangeEvent}\n exportparts=\"header, header-title, header-date, content: calendar-content, navigation, months-navigation,\n years-navigation, years-range, navigation-buttons, navigation-button, days-view-container,\n days-view, months-view, years-view, days-row, label: calendar-label, week-number, week-number-inner, date,\n date-inner, first, last, inactive, hidden, weekend, range, special, disabled, single, preview,\n month, month-inner, year, year-inner, selected, current\"\n >\n ${this._renderCalendarSlots()}\n </igc-calendar>\n `;\n }\n\n protected _renderActions() {\n const hasActions = !isEmpty(this._actions);\n const slot = this._isDropDown || hasActions ? undefined : 'footer';\n\n // If in dialog mode use the dialog footer slot\n return html`\n <div part=\"actions\" ?hidden=${!hasActions} slot=${ifDefined(slot)}>\n <slot name=\"actions\"></slot>\n </div>\n `;\n }\n\n protected _renderPicker(id: string) {\n return this._isDropDown\n ? html`\n <igc-popover ?open=${this.open} anchor=${id} flip shift>\n <igc-focus-trap ?disabled=${!this.open || this.disabled}>\n ${this._renderCalendar(id)}${this._renderActions()}\n </igc-focus-trap>\n </igc-popover>\n `\n : html`\n <igc-dialog\n aria-label=${ifDefined(this.resourceStrings.selectDate)}\n role=\"dialog\"\n ?open=${this.open}\n ?close-on-outside-click=${!this.keepOpenOnOutsideClick}\n hide-default-action\n @igcClosing=${this._handleDialogClosing}\n @igcClosed=${this._handleDialogClosed}\n exportparts=\"base: dialog-base, title, footer, overlay\"\n >\n ${this._renderCalendar(id)}${this._renderActions()}\n </igc-dialog>\n `;\n }\n\n private _renderLabel(id: string) {\n const isDisabled = this._isDropDown || this.readOnly;\n\n return this.label\n ? html`\n <label\n part=\"label\"\n for=${id}\n @click=${isDisabled ? nothing : this.handleAnchorClick}\n >\n ${this.label}\n </label>\n `\n : nothing;\n }\n\n private _renderHelperText(): TemplateResult {\n return IgcValidationContainerComponent.create(this);\n }\n\n protected _renderInput(id: string) {\n const format = DateTimeUtil.predefinedToDateDisplayFormat(\n this._displayFormat!\n );\n\n // Dialog mode is always readonly, rest depends on configuration\n const readOnly = !this._isDropDown || this.readOnly || this.nonEditable;\n\n const prefix = isEmpty(this._prefixes) ? undefined : 'prefix';\n const suffix = isEmpty(this._suffixes) ? undefined : 'suffix';\n const isMaterial = this._themes.theme === 'material';\n\n return html`\n <igc-date-time-input\n id=${id}\n aria-haspopup=\"dialog\"\n label=${ifDefined(isMaterial ? this.label : undefined)}\n input-format=${ifDefined(this._inputFormat)}\n display-format=${ifDefined(format)}\n ?disabled=${this.disabled}\n ?readonly=${readOnly}\n ?required=${this.required}\n .value=${this.value}\n .locale=${this.locale}\n .prompt=${this.prompt}\n .outlined=${this.outlined}\n .placeholder=${this.placeholder}\n .min=${this.min}\n .max=${this.max}\n .invalid=${this.invalid}\n @igcChange=${this._handleInputChangeEvent}\n @igcInput=${this._handleInputEvent}\n @click=${this._isDropDown || this.readOnly\n ? nothing\n : this._handleInputClick}\n exportparts=\"input, label, prefix, suffix\"\n >\n ${this._renderCalendarIcon()}\n <slot name=\"prefix\" slot=${ifDefined(prefix)}></slot>\n ${this._renderClearIcon()}\n <slot name=\"suffix\" slot=${ifDefined(suffix)}></slot>\n </igc-date-time-input>\n `;\n }\n\n protected override render() {\n const id = this.id || this._inputId;\n const isMaterial = this._themes.theme === 'material';\n\n return html`\n ${isMaterial ? nothing : this._renderLabel(id)} ${this._renderInput(id)}\n ${this._renderPicker(id)} ${this._renderHelperText()}\n `;\n }\n\n //#endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-picker': IgcDatePickerComponent;\n }\n}\n"]}
@@ -1,3 +1,3 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{--border-color: var(--ig-datepicker-border-color, var(--ig-gray-400));--picker-background: var(--ig-datepicker-picker-background, var(--ig-gray-100));--picker-hover-foreground: var(--ig-datepicker-picker-hover-foreground, var(--ig-secondary-200));--picker-focus-foreground: var(--ig-datepicker-picker-focus-foreground, var(--ig-secondary-200));--navigation-hover-color: var(--ig-datepicker-navigation-hover-color, var(--ig-secondary-200));--navigation-focus-color: var(--ig-datepicker-navigation-focus-color, var(--ig-secondary-200));--size: var(--ig-datepicker-size, max(var(--is-large, 1) * max(3rem, -1 * 3rem), var(--is-medium, 1) * max(2.375rem, -1 * 2.375rem), var(--is-small, 1) * max(1.9375rem, -1 * 1.9375rem)));--date-border-radius: var(--ig-datepicker-date-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 0.2) * 1.25rem), 1.25rem));--date-range-border-radius: var(--ig-datepicker-date-range-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 0.2) * 1.25rem), 1.25rem));--week-number-background: var(--ig-datepicker-week-number-background, transparent);--weekday-color: var(--ig-datepicker-weekday-color, var(--ig-info-300));--date-range-preview-border-color: var(--ig-datepicker-date-range-preview-border-color, transparent);--ym-border-radius: var(--ig-datepicker-ym-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 0.2) * 1.25rem), 1.25rem));--picker-foreground: var(--ig-datepicker-picker-foreground, var(--ig-gray-900));--header-background: var(--ig-datepicker-header-background, var(--ig-gray-100));--header-foreground: var(--ig-datepicker-header-foreground, var(--ig-gray-100-contrast));--actions-divider-color: var(--ig-datepicker-actions-divider-color, var(--ig-gray-300));--week-number-border-radius: var(--ig-datepicker-week-number-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 0) * 0.5rem), 0.5rem));--date-special-hover-background: var(--ig-datepicker-date-special-hover-background, var(--ig-gray-100));--date-special-focus-background: var(--ig-datepicker-date-special-focus-background, var(--ig-gray-100));--date-special-range-hover-background: var(--ig-datepicker-date-special-range-hover-background, var(--ig-gray-100));--date-special-range-focus-background: var(--ig-datepicker-date-special-range-focus-background, var(--ig-gray-100));--date-special-foreground: var(--ig-datepicker-date-special-foreground, var(--ig-gray-900));--date-special-hover-foreground: var(--ig-datepicker-date-special-hover-foreground, var(--ig-gray-900));--date-special-focus-foreground: var(--ig-datepicker-date-special-focus-foreground, var(--ig-gray-900));--date-special-border-color: var(--ig-datepicker-date-special-border-color, var(--ig-primary-200));--date-special-hover-border-color: var(--ig-datepicker-date-special-hover-border-color, var(--ig-primary-200));--date-special-range-border-color: var(--ig-datepicker-date-special-range-border-color, var(--ig-primary-200));--date-hover-background: var(--ig-datepicker-date-hover-background, var(--ig-gray-100));--date-focus-background: var(--ig-datepicker-date-focus-background, var(--ig-gray-100));--date-selected-foreground: var(--ig-datepicker-date-selected-foreground, var(--ig-primary-900-contrast));--date-selected-background: var(--ig-datepicker-date-selected-background, var(--ig-primary-500));--date-selected-hover-foreground: var(--ig-datepicker-date-selected-hover-foreground, var(--ig-primary-900-contrast));--date-selected-hover-background: var(--ig-datepicker-date-selected-hover-background, var(--ig-primary-600));--date-selected-focus-foreground: var(--ig-datepicker-date-selected-focus-foreground, var(--ig-primary-900-contrast));--date-selected-focus-background: var(--ig-datepicker-date-selected-focus-background, var(--ig-primary-600));--date-current-foreground: var(--ig-datepicker-date-current-foreground, var(--ig-gray-900));--date-current-hover-background: var(--ig-datepicker-date-current-hover-background, var(--ig-gray-100));--date-selected-current-background: var(--ig-datepicker-date-selected-current-background, var(--ig-primary-500));--date-selected-current-foreground: var(--ig-datepicker-date-selected-current-foreground, var(--ig-primary-900-contrast));--date-selected-current-hover-foreground: var(--ig-datepicker-date-selected-current-hover-foreground, var(--ig-primary-900-contrast));--date-selected-current-hover-background: var(--ig-datepicker-date-selected-current-hover-background, var(--ig-primary-600));--date-selected-current-focus-foreground: var(--ig-datepicker-date-selected-current-focus-foreground, var(--ig-primary-900-contrast));--date-selected-current-focus-background: var(--ig-datepicker-date-selected-current-focus-background, var(--ig-primary-600));--date-selected-current-range-background: var(--ig-datepicker-date-selected-current-range-background, transparent);--date-selected-current-range-hover-background: var(--ig-datepicker-date-selected-current-range-hover-background, var(--ig-gray-100));--date-selected-current-range-focus-background: var(--ig-datepicker-date-selected-current-range-focus-background, var(--ig-gray-100));--date-selected-special-border-color: var(--ig-datepicker-date-selected-special-border-color, var(--ig-primary-900-contrast));--date-selected-special-hover-border-color: var(--ig-datepicker-date-selected-special-hover-border-color, var(--ig-primary-900-contrast));--date-selected-special-focus-border-color: var(--ig-datepicker-date-selected-special-focus-border-color, var(--ig-primary-900-contrast));--date-selected-range-foreground: var(--ig-datepicker-date-selected-range-foreground, var(--ig-gray-900));--date-selected-range-background: var(--ig-datepicker-date-selected-range-background, hsl(from var(--ig-primary-500) h s l/0.24));--date-selected-range-hover-background: var(--ig-datepicker-date-selected-range-hover-background, var(--ig-gray-100));--date-selected-range-focus-background: var(--ig-datepicker-date-selected-range-focus-background, var(--ig-gray-100));--date-current-border-color: var(--ig-datepicker-date-current-border-color, var(--ig-gray-900));--date-current-hover-border-color: var(--ig-datepicker-date-current-hover-border-color, var(--ig-gray-900));--date-current-focus-border-color: var(--ig-datepicker-date-current-focus-border-color, var(--ig-gray-900));--date-selected-current-border-color: var(--ig-datepicker-date-selected-current-border-color, var(--ig-gray-900));--date-selected-current-hover-border-color: var(--ig-datepicker-date-selected-current-hover-border-color, var(--ig-gray-900));--date-selected-current-focus-border-color: var(--ig-datepicker-date-selected-current-focus-border-color, var(--ig-gray-900));--date-special-range-foreground: var(--ig-datepicker-date-special-range-foreground, var(--ig-gray-900));--ym-selected-current-hover-foreground: var(--ig-datepicker-ym-selected-current-hover-foreground, var(--ig-primary-900-contrast));--ym-selected-current-hover-background: var(--ig-datepicker-ym-selected-current-hover-background, var(--ig-primary-600));--ym-hover-foreground: var(--ig-datepicker-ym-hover-foreground, var(--ig-gray-900));--ym-hover-background: var(--ig-datepicker-ym-hover-background, var(--ig-gray-100));--ym-current-foreground: var(--ig-datepicker-ym-current-foreground, var(--ig-gray-900));--ym-current-background: var(--ig-datepicker-ym-current-background, transparent);--ym-current-hover-foreground: var(--ig-datepicker-ym-current-hover-foreground, var(--ig-gray-900));--ym-current-hover-background: var(--ig-datepicker-ym-current-hover-background, var(--ig-gray-100));--ym-selected-foreground: var(--ig-datepicker-ym-selected-foreground, var(--ig-primary-900-contrast));--ym-selected-background: var(--ig-datepicker-ym-selected-background, var(--ig-primary-500));--ym-selected-hover-foreground: var(--ig-datepicker-ym-selected-hover-foreground, var(--ig-primary-900-contrast));--ym-selected-hover-background: var(--ig-datepicker-ym-selected-hover-background, var(--ig-primary-600));--ym-selected-current-foreground: var(--ig-datepicker-ym-selected-current-foreground, var(--ig-primary-900-contrast));--ym-selected-current-background: var(--ig-datepicker-ym-selected-current-background, var(--ig-primary-500));--ym-current-outline-color: var(--ig-datepicker-ym-current-outline-color, var(--ig-gray-900));--ym-selected-current-outline-color: var(--ig-datepicker-ym-selected-current-outline-color, var(--ig-gray-900));--ym-selected-current-outline-hover-color: var(--ig-datepicker-ym-selected-current-outline-hover-color, var(--ig-gray-900));--ym-selected-current-outline-focus-color: var(--ig-datepicker-ym-selected-current-outline-focus-color, var(--ig-gray-900));--helper-text-color: var(--ig-datepicker-helper-text-color, var(--ig-gray-700));--input-prefix-background: var(--ig-datepicker-input-prefix-background, var(--ig-gray-300));--input-prefix-color: var(--ig-datepicker-input-prefix-color, var(--ig-gray-800));--input-prefix-background--filled: var(--ig-datepicker-input-prefix-background--filled, var(--ig-gray-300));--input-prefix-color--filled: var(--ig-datepicker-input-prefix-color--filled, var(--ig-gray-900));--input-prefix-background--focused: var(--ig-datepicker-input-prefix-background--focused, var(--ig-gray-300));--input-prefix-color--focused: var(--ig-datepicker-input-prefix-color--focused, var(--ig-gray-900));--input-suffix-background: var(--ig-datepicker-input-suffix-background, var(--ig-gray-300));--input-suffix-color: var(--ig-datepicker-input-suffix-color, var(--ig-gray-800));--input-suffix-background--filled: var(--ig-datepicker-input-suffix-background--filled, var(--ig-gray-300));--input-suffix-color--filled: var(--ig-datepicker-input-suffix-color--filled, var(--ig-gray-900));--input-suffix-background--focused: var(--ig-datepicker-input-suffix-background--focused, var(--ig-gray-300));--input-suffix-color--focused: var(--ig-datepicker-input-suffix-color--focused, var(--ig-gray-900));--idle-text-color: var(--ig-datepicker-idle-text-color, var(--ig-gray-700));--filled-text-color: var(--ig-datepicker-filled-text-color, var(--ig-gray-900));--filled-text-hover-color: var(--ig-datepicker-filled-text-hover-color, var(--ig-gray-900));--focused-text-color: var(--ig-datepicker-focused-text-color, var(--ig-gray-900));--disabled-text-color: var(--ig-datepicker-disabled-text-color, var(--ig-gray-400));--idle-secondary-color: var(--ig-datepicker-idle-secondary-color, var(--ig-gray-700));--filled-secondary-color: var(--ig-datepicker-filled-secondary-color, var(--ig-gray-600));--focused-secondary-color: var(--ig-datepicker-focused-secondary-color, hsl(from var(--ig-primary-500) h s l/0.38));--idle-bottom-line-color: var(--ig-datepicker-idle-bottom-line-color, var(--ig-gray-500));--hover-bottom-line-color: var(--ig-datepicker-hover-bottom-line-color, var(--ig-gray-800));--focused-bottom-line-color: var(--ig-datepicker-focused-bottom-line-color, var(--ig-primary-500));--disabled-bottom-line-color: var(--ig-datepicker-disabled-bottom-line-color, var(--ig-gray-500));--disabled-border-color: var(--ig-datepicker-disabled-border-color, var(--ig-gray-300));--hover-border-color: var(--ig-datepicker-hover-border-color, var(--ig-gray-900));--focused-border-color: var(--ig-datepicker-focused-border-color, var(--ig-primary-500));--border-background: var(--ig-datepicker-border-background, transparent);--border-disabled-background: var(--ig-datepicker-border-disabled-background, var(--ig-gray-100));--search-background: var(--ig-datepicker-search-background, transparent);--search-disabled-background: var(--ig-datepicker-search-disabled-background, var(--ig-gray-100));--success-secondary-color: var(--ig-datepicker-success-secondary-color, var(--ig-success-500));--warning-secondary-color: var(--ig-datepicker-warning-secondary-color, var(--ig-warn-500));--error-secondary-color: var(--ig-datepicker-error-secondary-color, var(--ig-error-500));--placeholder-color: var(--ig-datepicker-placeholder-color, var(--ig-gray-700));--hover-placeholder-color: var(--ig-datepicker-hover-placeholder-color, var(--ig-gray-700));--disabled-placeholder-color: var(--ig-datepicker-disabled-placeholder-color, var(--ig-gray-400));--box-background: var(--ig-datepicker-box-background, var(--ig-gray-200));--box-background-hover: var(--ig-datepicker-box-background-hover, var(--ig-gray-200));--box-background-focus: var(--ig-datepicker-box-background-focus, var(--ig-gray-300));--box-disabled-background: var(--ig-datepicker-box-disabled-background, var(--ig-gray-100));--box-border-radius: var(--ig-datepicker-box-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 0.2) * 1.25rem), 1.25rem));--border-border-radius: var(--ig-datepicker-border-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 0.2) * 1.25rem), 1.25rem));--search-border-radius: var(--ig-datepicker-search-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 0.2) * 1.25rem), 1.25rem));--success-shadow-color: var(--ig-datepicker-success-shadow-color, hsl(from var(--ig-success-500) h s l/0.38));--error-shadow-color: var(--ig-datepicker-error-shadow-color, hsl(from var(--ig-error-500) h s l/0.38));--search-resting-elevation: var(--ig-datepicker-search-resting-elevation, var(--ig-elevation-0));--search-hover-elevation: var(--ig-datepicker-search-hover-elevation, var(--ig-elevation-0));--search-disabled-elevation: var(--ig-datepicker-search-disabled-elevation, var(--ig-elevation-0));--ig-theme: bootstrap}`;
2
+ export const styles = css `:host{--border-color: var(--ig-datepicker-border-color, var(--ig-gray-400));--picker-background: var(--ig-datepicker-picker-background, var(--ig-gray-100));--picker-hover-foreground: var(--ig-datepicker-picker-hover-foreground, var(--ig-secondary-200));--picker-focus-foreground: var(--ig-datepicker-picker-focus-foreground, var(--ig-secondary-200));--navigation-hover-color: var(--ig-datepicker-navigation-hover-color, var(--ig-secondary-200));--navigation-focus-color: var(--ig-datepicker-navigation-focus-color, var(--ig-secondary-200));--size: var(--ig-datepicker-size, max(var(--is-large, 1) * max(3rem, -1 * 3rem), var(--is-medium, 1) * max(2.375rem, -1 * 2.375rem), var(--is-small, 1) * max(1.9375rem, -1 * 1.9375rem)));--date-border-radius: var(--ig-datepicker-date-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 0.2) * 1.25rem), 1.25rem));--date-range-border-radius: var(--ig-datepicker-date-range-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 0.2) * 1.25rem), 1.25rem));--week-number-background: var(--ig-datepicker-week-number-background, transparent);--weekday-color: var(--ig-datepicker-weekday-color, var(--ig-info-300));--date-range-preview-border-color: var(--ig-datepicker-date-range-preview-border-color, transparent);--ym-border-radius: var(--ig-datepicker-ym-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 0.2) * 1.25rem), 1.25rem));--picker-foreground: var(--ig-datepicker-picker-foreground, var(--ig-gray-900));--header-background: var(--ig-datepicker-header-background, var(--ig-gray-100));--header-foreground: var(--ig-datepicker-header-foreground, var(--ig-gray-100-contrast));--actions-divider-color: var(--ig-datepicker-actions-divider-color, var(--ig-gray-300));--date-current-border-radius: var(--ig-datepicker-date-current-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 1) * 1.25rem), 1.25rem));--date-special-border-radius: var(--ig-datepicker-date-special-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 1) * 1.25rem), 1.25rem));--week-number-border-radius: var(--ig-datepicker-week-number-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 0) * 0.5rem), 0.5rem));--date-special-hover-background: var(--ig-datepicker-date-special-hover-background, var(--ig-gray-100));--date-special-focus-background: var(--ig-datepicker-date-special-focus-background, var(--ig-gray-100));--date-special-range-hover-background: var(--ig-datepicker-date-special-range-hover-background, var(--ig-gray-100));--date-special-range-focus-background: var(--ig-datepicker-date-special-range-focus-background, var(--ig-gray-100));--date-special-foreground: var(--ig-datepicker-date-special-foreground, var(--ig-gray-900));--date-special-hover-foreground: var(--ig-datepicker-date-special-hover-foreground, var(--ig-gray-900));--date-special-focus-foreground: var(--ig-datepicker-date-special-focus-foreground, var(--ig-gray-900));--date-special-border-color: var(--ig-datepicker-date-special-border-color, var(--ig-primary-200));--date-special-hover-border-color: var(--ig-datepicker-date-special-hover-border-color, var(--ig-primary-200));--date-special-range-border-color: var(--ig-datepicker-date-special-range-border-color, var(--ig-primary-200));--date-hover-background: var(--ig-datepicker-date-hover-background, var(--ig-gray-100));--date-focus-background: var(--ig-datepicker-date-focus-background, var(--ig-gray-100));--date-selected-foreground: var(--ig-datepicker-date-selected-foreground, var(--ig-primary-900-contrast));--date-selected-background: var(--ig-datepicker-date-selected-background, var(--ig-primary-500));--date-selected-hover-foreground: var(--ig-datepicker-date-selected-hover-foreground, var(--ig-primary-900-contrast));--date-selected-hover-background: var(--ig-datepicker-date-selected-hover-background, var(--ig-primary-600));--date-selected-focus-foreground: var(--ig-datepicker-date-selected-focus-foreground, var(--ig-primary-900-contrast));--date-selected-focus-background: var(--ig-datepicker-date-selected-focus-background, var(--ig-primary-600));--date-current-foreground: var(--ig-datepicker-date-current-foreground, var(--ig-gray-900));--date-current-hover-background: var(--ig-datepicker-date-current-hover-background, var(--ig-gray-100));--date-selected-current-background: var(--ig-datepicker-date-selected-current-background, var(--ig-primary-500));--date-selected-current-foreground: var(--ig-datepicker-date-selected-current-foreground, var(--ig-primary-900-contrast));--date-selected-current-hover-foreground: var(--ig-datepicker-date-selected-current-hover-foreground, var(--ig-primary-900-contrast));--date-selected-current-hover-background: var(--ig-datepicker-date-selected-current-hover-background, var(--ig-primary-600));--date-selected-current-focus-foreground: var(--ig-datepicker-date-selected-current-focus-foreground, var(--ig-primary-900-contrast));--date-selected-current-focus-background: var(--ig-datepicker-date-selected-current-focus-background, var(--ig-primary-600));--date-selected-current-range-background: var(--ig-datepicker-date-selected-current-range-background, transparent);--date-selected-current-range-hover-background: var(--ig-datepicker-date-selected-current-range-hover-background, var(--ig-gray-100));--date-selected-current-range-focus-background: var(--ig-datepicker-date-selected-current-range-focus-background, var(--ig-gray-100));--date-selected-special-border-color: var(--ig-datepicker-date-selected-special-border-color, var(--ig-primary-900-contrast));--date-selected-special-hover-border-color: var(--ig-datepicker-date-selected-special-hover-border-color, var(--ig-primary-900-contrast));--date-selected-special-focus-border-color: var(--ig-datepicker-date-selected-special-focus-border-color, var(--ig-primary-900-contrast));--date-selected-range-foreground: var(--ig-datepicker-date-selected-range-foreground, var(--ig-gray-900));--date-selected-range-background: var(--ig-datepicker-date-selected-range-background, hsl(from var(--ig-primary-500) h s l/0.24));--date-selected-range-hover-background: var(--ig-datepicker-date-selected-range-hover-background, var(--ig-gray-100));--date-selected-range-focus-background: var(--ig-datepicker-date-selected-range-focus-background, var(--ig-gray-100));--date-current-border-color: var(--ig-datepicker-date-current-border-color, var(--ig-gray-900));--date-current-hover-border-color: var(--ig-datepicker-date-current-hover-border-color, var(--ig-gray-900));--date-current-focus-border-color: var(--ig-datepicker-date-current-focus-border-color, var(--ig-gray-900));--date-selected-current-border-color: var(--ig-datepicker-date-selected-current-border-color, var(--ig-gray-900));--date-selected-current-hover-border-color: var(--ig-datepicker-date-selected-current-hover-border-color, var(--ig-gray-900));--date-selected-current-focus-border-color: var(--ig-datepicker-date-selected-current-focus-border-color, var(--ig-gray-900));--date-special-range-foreground: var(--ig-datepicker-date-special-range-foreground, var(--ig-gray-900));--ym-selected-current-hover-foreground: var(--ig-datepicker-ym-selected-current-hover-foreground, var(--ig-primary-900-contrast));--ym-selected-current-hover-background: var(--ig-datepicker-ym-selected-current-hover-background, var(--ig-primary-600));--ym-hover-foreground: var(--ig-datepicker-ym-hover-foreground, var(--ig-gray-900));--ym-hover-background: var(--ig-datepicker-ym-hover-background, var(--ig-gray-100));--ym-current-foreground: var(--ig-datepicker-ym-current-foreground, var(--ig-gray-900));--ym-current-background: var(--ig-datepicker-ym-current-background, transparent);--ym-current-hover-foreground: var(--ig-datepicker-ym-current-hover-foreground, var(--ig-gray-900));--ym-current-hover-background: var(--ig-datepicker-ym-current-hover-background, var(--ig-gray-100));--ym-selected-foreground: var(--ig-datepicker-ym-selected-foreground, var(--ig-primary-900-contrast));--ym-selected-background: var(--ig-datepicker-ym-selected-background, var(--ig-primary-500));--ym-selected-hover-foreground: var(--ig-datepicker-ym-selected-hover-foreground, var(--ig-primary-900-contrast));--ym-selected-hover-background: var(--ig-datepicker-ym-selected-hover-background, var(--ig-primary-600));--ym-selected-current-foreground: var(--ig-datepicker-ym-selected-current-foreground, var(--ig-primary-900-contrast));--ym-selected-current-background: var(--ig-datepicker-ym-selected-current-background, var(--ig-primary-500));--ym-current-outline-color: var(--ig-datepicker-ym-current-outline-color, var(--ig-gray-900));--ym-selected-current-outline-color: var(--ig-datepicker-ym-selected-current-outline-color, var(--ig-gray-900));--ym-selected-current-outline-hover-color: var(--ig-datepicker-ym-selected-current-outline-hover-color, var(--ig-gray-900));--ym-selected-current-outline-focus-color: var(--ig-datepicker-ym-selected-current-outline-focus-color, var(--ig-gray-900));--helper-text-color: var(--ig-datepicker-helper-text-color, var(--ig-gray-700));--input-prefix-background: var(--ig-datepicker-input-prefix-background, var(--ig-gray-300));--input-prefix-color: var(--ig-datepicker-input-prefix-color, var(--ig-gray-800));--input-prefix-background--filled: var(--ig-datepicker-input-prefix-background--filled, var(--ig-gray-300));--input-prefix-color--filled: var(--ig-datepicker-input-prefix-color--filled, var(--ig-gray-900));--input-prefix-background--focused: var(--ig-datepicker-input-prefix-background--focused, var(--ig-gray-300));--input-prefix-color--focused: var(--ig-datepicker-input-prefix-color--focused, var(--ig-gray-900));--input-suffix-background: var(--ig-datepicker-input-suffix-background, var(--ig-gray-300));--input-suffix-color: var(--ig-datepicker-input-suffix-color, var(--ig-gray-800));--input-suffix-background--filled: var(--ig-datepicker-input-suffix-background--filled, var(--ig-gray-300));--input-suffix-color--filled: var(--ig-datepicker-input-suffix-color--filled, var(--ig-gray-900));--input-suffix-background--focused: var(--ig-datepicker-input-suffix-background--focused, var(--ig-gray-300));--input-suffix-color--focused: var(--ig-datepicker-input-suffix-color--focused, var(--ig-gray-900));--idle-text-color: var(--ig-datepicker-idle-text-color, var(--ig-gray-700));--filled-text-color: var(--ig-datepicker-filled-text-color, var(--ig-gray-900));--filled-text-hover-color: var(--ig-datepicker-filled-text-hover-color, var(--ig-gray-900));--focused-text-color: var(--ig-datepicker-focused-text-color, var(--ig-gray-900));--disabled-text-color: var(--ig-datepicker-disabled-text-color, var(--ig-gray-400));--idle-secondary-color: var(--ig-datepicker-idle-secondary-color, var(--ig-gray-700));--filled-secondary-color: var(--ig-datepicker-filled-secondary-color, var(--ig-gray-600));--focused-secondary-color: var(--ig-datepicker-focused-secondary-color, hsl(from var(--ig-primary-500) h s l/0.38));--idle-bottom-line-color: var(--ig-datepicker-idle-bottom-line-color, var(--ig-gray-500));--hover-bottom-line-color: var(--ig-datepicker-hover-bottom-line-color, var(--ig-gray-800));--focused-bottom-line-color: var(--ig-datepicker-focused-bottom-line-color, var(--ig-primary-500));--disabled-bottom-line-color: var(--ig-datepicker-disabled-bottom-line-color, var(--ig-gray-500));--disabled-border-color: var(--ig-datepicker-disabled-border-color, var(--ig-gray-300));--hover-border-color: var(--ig-datepicker-hover-border-color, var(--ig-gray-900));--focused-border-color: var(--ig-datepicker-focused-border-color, var(--ig-primary-500));--border-background: var(--ig-datepicker-border-background, transparent);--border-disabled-background: var(--ig-datepicker-border-disabled-background, var(--ig-gray-100));--search-background: var(--ig-datepicker-search-background, transparent);--search-disabled-background: var(--ig-datepicker-search-disabled-background, var(--ig-gray-100));--success-secondary-color: var(--ig-datepicker-success-secondary-color, var(--ig-success-500));--warning-secondary-color: var(--ig-datepicker-warning-secondary-color, var(--ig-warn-500));--error-secondary-color: var(--ig-datepicker-error-secondary-color, var(--ig-error-500));--placeholder-color: var(--ig-datepicker-placeholder-color, var(--ig-gray-700));--hover-placeholder-color: var(--ig-datepicker-hover-placeholder-color, var(--ig-gray-700));--disabled-placeholder-color: var(--ig-datepicker-disabled-placeholder-color, var(--ig-gray-400));--box-background: var(--ig-datepicker-box-background, var(--ig-gray-200));--box-background-hover: var(--ig-datepicker-box-background-hover, var(--ig-gray-200));--box-background-focus: var(--ig-datepicker-box-background-focus, var(--ig-gray-300));--box-disabled-background: var(--ig-datepicker-box-disabled-background, var(--ig-gray-100));--box-border-radius: var(--ig-datepicker-box-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 0.2) * 1.25rem), 1.25rem));--border-border-radius: var(--ig-datepicker-border-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 0.2) * 1.25rem), 1.25rem));--search-border-radius: var(--ig-datepicker-search-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 0.2) * 1.25rem), 1.25rem));--success-shadow-color: var(--ig-datepicker-success-shadow-color, hsl(from var(--ig-success-500) h s l/0.38));--error-shadow-color: var(--ig-datepicker-error-shadow-color, hsl(from var(--ig-error-500) h s l/0.38));--search-resting-elevation: var(--ig-datepicker-search-resting-elevation, var(--ig-elevation-0));--search-hover-elevation: var(--ig-datepicker-search-hover-elevation, var(--ig-elevation-0));--search-disabled-elevation: var(--ig-datepicker-search-disabled-elevation, var(--ig-elevation-0));--ig-theme: bootstrap;--calendar-border-color: var(--ig-gray-300)}`;
3
3
  //# sourceMappingURL=date-picker.bootstrap.css.js.map