igniteui-webcomponents 6.4.0-alpha.4 → 6.5.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 (431) hide show
  1. package/CHANGELOG.md +141 -2
  2. package/README.md +65 -56
  3. package/components/button/themes/button/dark/button.indigo.css.js +1 -1
  4. package/components/button/themes/button/dark/button.indigo.css.js.map +1 -1
  5. package/components/button/themes/button/dark/button.material.css.js +1 -1
  6. package/components/button/themes/button/dark/button.material.css.js.map +1 -1
  7. package/components/button/themes/button/light/button.indigo.css.js +1 -1
  8. package/components/button/themes/button/light/button.indigo.css.js.map +1 -1
  9. package/components/button/themes/button/light/button.material.css.js +1 -1
  10. package/components/button/themes/button/light/button.material.css.js.map +1 -1
  11. package/components/button/themes/button/shared/button.bootstrap.css.js +1 -1
  12. package/components/button/themes/button/shared/button.bootstrap.css.js.map +1 -1
  13. package/components/button/themes/button/shared/button.common.css.js +1 -1
  14. package/components/button/themes/button/shared/button.common.css.js.map +1 -1
  15. package/components/button/themes/button/shared/button.fluent.css.js +1 -1
  16. package/components/button/themes/button/shared/button.fluent.css.js.map +1 -1
  17. package/components/button/themes/button/shared/button.indigo.css.js +1 -1
  18. package/components/button/themes/button/shared/button.indigo.css.js.map +1 -1
  19. package/components/button/themes/button/shared/button.material.css.js +1 -1
  20. package/components/button/themes/button/shared/button.material.css.js.map +1 -1
  21. package/components/button-group/themes/dark/button-group.material.css.js +1 -1
  22. package/components/button-group/themes/dark/button-group.material.css.js.map +1 -1
  23. package/components/button-group/themes/light/button-group.material.css.js +1 -1
  24. package/components/button-group/themes/light/button-group.material.css.js.map +1 -1
  25. package/components/button-group/themes/shared/button/button.bootstrap.css.js +1 -1
  26. package/components/button-group/themes/shared/button/button.bootstrap.css.js.map +1 -1
  27. package/components/button-group/themes/shared/button/button.material.css.js +1 -1
  28. package/components/button-group/themes/shared/button/button.material.css.js.map +1 -1
  29. package/components/calendar/base.d.ts +7 -3
  30. package/components/calendar/base.js +10 -14
  31. package/components/calendar/base.js.map +1 -1
  32. package/components/calendar/calendar.d.ts +48 -44
  33. package/components/calendar/calendar.js +263 -259
  34. package/components/calendar/calendar.js.map +1 -1
  35. package/components/calendar/days-view/days-view.d.ts +49 -27
  36. package/components/calendar/days-view/days-view.js +170 -168
  37. package/components/calendar/days-view/days-view.js.map +1 -1
  38. package/components/calendar/helpers.js +40 -28
  39. package/components/calendar/helpers.js.map +1 -1
  40. package/components/calendar/model.d.ts +9 -3
  41. package/components/calendar/model.js +29 -19
  42. package/components/calendar/model.js.map +1 -1
  43. package/components/calendar/months-view/months-view.d.ts +6 -8
  44. package/components/calendar/months-view/months-view.js +25 -38
  45. package/components/calendar/months-view/months-view.js.map +1 -1
  46. package/components/calendar/themes/dark/calendar.bootstrap.css.js +1 -1
  47. package/components/calendar/themes/dark/calendar.bootstrap.css.js.map +1 -1
  48. package/components/calendar/themes/dark/calendar.fluent.css.js +1 -1
  49. package/components/calendar/themes/dark/calendar.fluent.css.js.map +1 -1
  50. package/components/calendar/themes/dark/calendar.indigo.css.js +1 -1
  51. package/components/calendar/themes/dark/calendar.indigo.css.js.map +1 -1
  52. package/components/calendar/themes/dark/calendar.material.css.js +1 -1
  53. package/components/calendar/themes/dark/calendar.material.css.js.map +1 -1
  54. package/components/calendar/themes/days.js +8 -23
  55. package/components/calendar/themes/days.js.map +1 -1
  56. package/components/calendar/themes/light/calendar.bootstrap.css.js +1 -1
  57. package/components/calendar/themes/light/calendar.bootstrap.css.js.map +1 -1
  58. package/components/calendar/themes/light/calendar.fluent.css.js +1 -1
  59. package/components/calendar/themes/light/calendar.fluent.css.js.map +1 -1
  60. package/components/calendar/themes/light/calendar.indigo.css.js +1 -1
  61. package/components/calendar/themes/light/calendar.indigo.css.js.map +1 -1
  62. package/components/calendar/themes/light/calendar.material.css.js +1 -1
  63. package/components/calendar/themes/light/calendar.material.css.js.map +1 -1
  64. package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js +1 -1
  65. package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js.map +1 -1
  66. package/components/calendar/themes/shared/bootstrap/year-month-view.bootstrap.css.js +1 -1
  67. package/components/calendar/themes/shared/bootstrap/year-month-view.bootstrap.css.js.map +1 -1
  68. package/components/calendar/themes/shared/fluent/days-view.fluent.css.js +1 -1
  69. package/components/calendar/themes/shared/fluent/days-view.fluent.css.js.map +1 -1
  70. package/components/calendar/themes/shared/indigo/days-view.indigo.css.js +1 -1
  71. package/components/calendar/themes/shared/indigo/days-view.indigo.css.js.map +1 -1
  72. package/components/calendar/themes/shared/material/days-view.material.css.js +1 -1
  73. package/components/calendar/themes/shared/material/days-view.material.css.js.map +1 -1
  74. package/components/calendar/themes/year-month.js +8 -23
  75. package/components/calendar/themes/year-month.js.map +1 -1
  76. package/components/calendar/years-view/years-view.d.ts +6 -5
  77. package/components/calendar/years-view/years-view.js +11 -14
  78. package/components/calendar/years-view/years-view.js.map +1 -1
  79. package/components/carousel/carousel.d.ts +2 -1
  80. package/components/carousel/carousel.js.map +1 -1
  81. package/components/checkbox/checkbox-base.d.ts +1 -1
  82. package/components/checkbox/themes/light/checkbox/checkbox.material.css.js +1 -1
  83. package/components/checkbox/themes/light/checkbox/checkbox.material.css.js.map +1 -1
  84. package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js +1 -1
  85. package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js.map +1 -1
  86. package/components/checkbox/themes/shared/switch/switch.common.css.js +1 -1
  87. package/components/checkbox/themes/shared/switch/switch.common.css.js.map +1 -1
  88. package/components/checkbox/themes/shared/switch/switch.fluent.css.js +1 -1
  89. package/components/checkbox/themes/shared/switch/switch.fluent.css.js.map +1 -1
  90. package/components/checkbox/themes/shared/switch/switch.indigo.css.js +1 -1
  91. package/components/checkbox/themes/shared/switch/switch.indigo.css.js.map +1 -1
  92. package/components/checkbox/themes/shared/switch/switch.material.css.js +1 -1
  93. package/components/checkbox/themes/shared/switch/switch.material.css.js.map +1 -1
  94. package/components/chip/chip.d.ts +2 -1
  95. package/components/chip/chip.js.map +1 -1
  96. package/components/chip/themes/dark/chip.fluent.css.js +1 -1
  97. package/components/chip/themes/dark/chip.fluent.css.js.map +1 -1
  98. package/components/chip/themes/dark/chip.indigo.css.js +1 -1
  99. package/components/chip/themes/dark/chip.indigo.css.js.map +1 -1
  100. package/components/chip/themes/light/chip.fluent.css.js +1 -1
  101. package/components/chip/themes/light/chip.fluent.css.js.map +1 -1
  102. package/components/chip/themes/light/chip.indigo.css.js +1 -1
  103. package/components/chip/themes/light/chip.indigo.css.js.map +1 -1
  104. package/components/chip/themes/light/chip.shared.css.js +1 -1
  105. package/components/chip/themes/light/chip.shared.css.js.map +1 -1
  106. package/components/chip/themes/shared/chip.indigo.css.js +1 -1
  107. package/components/chip/themes/shared/chip.indigo.css.js.map +1 -1
  108. package/components/combo/combo.d.ts +3 -2
  109. package/components/combo/combo.js +7 -0
  110. package/components/combo/combo.js.map +1 -1
  111. package/components/combo/controllers/selection.js.map +1 -1
  112. package/components/combo/validators.js +2 -2
  113. package/components/combo/validators.js.map +1 -1
  114. package/components/common/controllers/async-consumer.js.map +1 -1
  115. package/components/common/controllers/focus-ring.js +1 -5
  116. package/components/common/controllers/focus-ring.js.map +1 -1
  117. package/components/common/controllers/root-click.js +46 -21
  118. package/components/common/controllers/root-click.js.map +1 -1
  119. package/components/common/definitions/defineAllComponents.js +2 -0
  120. package/components/common/definitions/defineAllComponents.js.map +1 -1
  121. package/components/common/i18n/EN/calendar.resources.js +4 -1
  122. package/components/common/i18n/EN/calendar.resources.js.map +1 -1
  123. package/components/common/i18n/EN/date-range-picker.resources.js.map +1 -1
  124. package/components/common/i18n/i18n-controller.js +6 -9
  125. package/components/common/i18n/i18n-controller.js.map +1 -1
  126. package/components/common/i18n/utils.d.ts +0 -12
  127. package/components/common/i18n/utils.js +0 -12
  128. package/components/common/i18n/utils.js.map +1 -1
  129. package/components/common/mixins/forms/associated.js +3 -23
  130. package/components/common/mixins/forms/associated.js.map +1 -1
  131. package/components/common/util.d.ts +5 -0
  132. package/components/common/util.js +5 -0
  133. package/components/common/util.js.map +1 -1
  134. package/components/common/validators.d.ts +2 -4
  135. package/components/common/validators.js +13 -19
  136. package/components/common/validators.js.map +1 -1
  137. package/components/date-picker/date-picker.d.ts +7 -3
  138. package/components/date-picker/date-picker.js +2 -2
  139. package/components/date-picker/date-picker.js.map +1 -1
  140. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js +1 -1
  141. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js.map +1 -1
  142. package/components/date-picker/themes/dark/date-picker.fluent.css.js +1 -1
  143. package/components/date-picker/themes/dark/date-picker.fluent.css.js.map +1 -1
  144. package/components/date-picker/themes/dark/date-picker.indigo.css.js +1 -1
  145. package/components/date-picker/themes/dark/date-picker.indigo.css.js.map +1 -1
  146. package/components/date-picker/themes/dark/date-picker.material.css.js +1 -1
  147. package/components/date-picker/themes/dark/date-picker.material.css.js.map +1 -1
  148. package/components/date-picker/themes/light/date-picker.bootstrap.css.js +1 -1
  149. package/components/date-picker/themes/light/date-picker.bootstrap.css.js.map +1 -1
  150. package/components/date-picker/themes/light/date-picker.fluent.css.js +1 -1
  151. package/components/date-picker/themes/light/date-picker.fluent.css.js.map +1 -1
  152. package/components/date-picker/themes/light/date-picker.indigo.css.js +1 -1
  153. package/components/date-picker/themes/light/date-picker.indigo.css.js.map +1 -1
  154. package/components/date-picker/themes/light/date-picker.material.css.js +1 -1
  155. package/components/date-picker/themes/light/date-picker.material.css.js.map +1 -1
  156. package/components/date-picker/validators.js +2 -3
  157. package/components/date-picker/validators.js.map +1 -1
  158. package/components/date-range-picker/date-range-picker.d.ts +7 -2
  159. package/components/date-range-picker/date-range-picker.js +13 -10
  160. package/components/date-range-picker/date-range-picker.js.map +1 -1
  161. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js +1 -1
  162. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js.map +1 -1
  163. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js +1 -1
  164. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js.map +1 -1
  165. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js +1 -1
  166. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js.map +1 -1
  167. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js +1 -1
  168. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js.map +1 -1
  169. package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.js +1 -1
  170. package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.js.map +1 -1
  171. package/components/date-range-picker/themes/light/date-range-picker.fluent.css.js +1 -1
  172. package/components/date-range-picker/themes/light/date-range-picker.fluent.css.js.map +1 -1
  173. package/components/date-range-picker/themes/light/date-range-picker.indigo.css.js +1 -1
  174. package/components/date-range-picker/themes/light/date-range-picker.indigo.css.js.map +1 -1
  175. package/components/date-range-picker/themes/light/date-range-picker.material.css.js +1 -1
  176. package/components/date-range-picker/themes/light/date-range-picker.material.css.js.map +1 -1
  177. package/components/date-range-picker/validators.js +5 -8
  178. package/components/date-range-picker/validators.js.map +1 -1
  179. package/components/date-time-input/date-time-input.d.ts +10 -3
  180. package/components/date-time-input/date-time-input.js +39 -21
  181. package/components/date-time-input/date-time-input.js.map +1 -1
  182. package/components/date-time-input/date-util.d.ts +11 -9
  183. package/components/date-time-input/date-util.js +23 -219
  184. package/components/date-time-input/date-util.js.map +1 -1
  185. package/components/dialog/dialog.d.ts +2 -0
  186. package/components/dialog/dialog.js +18 -9
  187. package/components/dialog/dialog.js.map +1 -1
  188. package/components/dialog/themes/dark/dialog.fluent.css.js +1 -1
  189. package/components/dialog/themes/dark/dialog.fluent.css.js.map +1 -1
  190. package/components/dialog/themes/light/dialog.fluent.css.js +1 -1
  191. package/components/dialog/themes/light/dialog.fluent.css.js.map +1 -1
  192. package/components/dialog/themes/shared/dialog.bootstrap.css.js +1 -1
  193. package/components/dialog/themes/shared/dialog.bootstrap.css.js.map +1 -1
  194. package/components/dialog/themes/shared/dialog.indigo.css.js +1 -1
  195. package/components/dialog/themes/shared/dialog.indigo.css.js.map +1 -1
  196. package/components/expansion-panel/themes/light/expansion-panel.bootstrap.css.js +1 -1
  197. package/components/expansion-panel/themes/light/expansion-panel.bootstrap.css.js.map +1 -1
  198. package/components/file-input/file-input.d.ts +28 -13
  199. package/components/file-input/file-input.js +73 -46
  200. package/components/file-input/file-input.js.map +1 -1
  201. package/components/input/input-base.d.ts +31 -34
  202. package/components/input/input-base.js +58 -83
  203. package/components/input/input-base.js.map +1 -1
  204. package/components/input/input.d.ts +18 -7
  205. package/components/input/input.js +34 -19
  206. package/components/input/input.js.map +1 -1
  207. package/components/input/themes/dark/input.indigo.css.js +1 -1
  208. package/components/input/themes/dark/input.indigo.css.js.map +1 -1
  209. package/components/input/themes/light/input.indigo.css.js +1 -1
  210. package/components/input/themes/light/input.indigo.css.js.map +1 -1
  211. package/components/input/themes/light/input.shared.css.js +1 -1
  212. package/components/input/themes/light/input.shared.css.js.map +1 -1
  213. package/components/input/themes/shared/input.bootstrap.css.js +1 -1
  214. package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
  215. package/components/input/themes/shared/input.common.css.js +1 -1
  216. package/components/input/themes/shared/input.common.css.js.map +1 -1
  217. package/components/input/themes/shared/input.fluent.css.js +1 -1
  218. package/components/input/themes/shared/input.fluent.css.js.map +1 -1
  219. package/components/input/themes/shared/input.indigo.css.js +1 -1
  220. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  221. package/components/input/themes/shared/input.material.css.js +1 -1
  222. package/components/input/themes/shared/input.material.css.js.map +1 -1
  223. package/components/input/validators.js +3 -3
  224. package/components/input/validators.js.map +1 -1
  225. package/components/list/themes/dark/container/list.bootstrap.css.js +1 -1
  226. package/components/list/themes/dark/container/list.bootstrap.css.js.map +1 -1
  227. package/components/list/themes/light/container/list.fluent.css.js +1 -1
  228. package/components/list/themes/light/container/list.fluent.css.js.map +1 -1
  229. package/components/list/themes/shared/item/list-item.common.css.js +1 -1
  230. package/components/list/themes/shared/item/list-item.common.css.js.map +1 -1
  231. package/components/list/themes/shared/item/list-item.indigo.css.js +1 -1
  232. package/components/list/themes/shared/item/list-item.indigo.css.js.map +1 -1
  233. package/components/mask-input/mask-input-base.d.ts +10 -4
  234. package/components/mask-input/mask-input-base.js +21 -16
  235. package/components/mask-input/mask-input-base.js.map +1 -1
  236. package/components/mask-input/mask-input.d.ts +9 -3
  237. package/components/mask-input/mask-input.js +26 -6
  238. package/components/mask-input/mask-input.js.map +1 -1
  239. package/components/mask-input/mask-parser.d.ts +30 -7
  240. package/components/mask-input/mask-parser.js +70 -42
  241. package/components/mask-input/mask-parser.js.map +1 -1
  242. package/components/mask-input/validators.js +3 -3
  243. package/components/mask-input/validators.js.map +1 -1
  244. package/components/nav-drawer/themes/dark/container/nav-drawer.fluent.css.js +1 -1
  245. package/components/nav-drawer/themes/dark/container/nav-drawer.fluent.css.js.map +1 -1
  246. package/components/nav-drawer/themes/light/container/nav-drawer.fluent.css.js +1 -1
  247. package/components/nav-drawer/themes/light/container/nav-drawer.fluent.css.js.map +1 -1
  248. package/components/nav-drawer/themes/light/container/nav-drawer.material.css.js +1 -1
  249. package/components/nav-drawer/themes/light/container/nav-drawer.material.css.js.map +1 -1
  250. package/components/navbar/themes/shared/navbar.common.css.js +1 -1
  251. package/components/navbar/themes/shared/navbar.common.css.js.map +1 -1
  252. package/components/radio/themes/light/radio.material.css.js +1 -1
  253. package/components/radio/themes/light/radio.material.css.js.map +1 -1
  254. package/components/radio/themes/shared/radio.bootstrap.css.js +1 -1
  255. package/components/radio/themes/shared/radio.bootstrap.css.js.map +1 -1
  256. package/components/radio/themes/shared/radio.common.css.js +1 -1
  257. package/components/radio/themes/shared/radio.common.css.js.map +1 -1
  258. package/components/radio/themes/shared/radio.fluent.css.js +1 -1
  259. package/components/radio/themes/shared/radio.fluent.css.js.map +1 -1
  260. package/components/radio/themes/shared/radio.indigo.css.js +1 -1
  261. package/components/radio/themes/shared/radio.indigo.css.js.map +1 -1
  262. package/components/radio/themes/shared/radio.material.css.js +1 -1
  263. package/components/radio/themes/shared/radio.material.css.js.map +1 -1
  264. package/components/radio/validators.js +2 -2
  265. package/components/radio/validators.js.map +1 -1
  266. package/components/rating/themes/dark/rating.indigo.css.js +1 -1
  267. package/components/rating/themes/dark/rating.indigo.css.js.map +1 -1
  268. package/components/rating/themes/light/rating.indigo.css.js +1 -1
  269. package/components/rating/themes/light/rating.indigo.css.js.map +1 -1
  270. package/components/ripple/ripple.d.ts +3 -3
  271. package/components/ripple/ripple.js +34 -31
  272. package/components/ripple/ripple.js.map +1 -1
  273. package/components/stepper/step.js +2 -2
  274. package/components/stepper/step.js.map +1 -1
  275. package/components/stepper/themes/step/dark/step.bootstrap.css.js +1 -1
  276. package/components/stepper/themes/step/dark/step.bootstrap.css.js.map +1 -1
  277. package/components/stepper/themes/step/dark/step.fluent.css.js +1 -1
  278. package/components/stepper/themes/step/dark/step.fluent.css.js.map +1 -1
  279. package/components/stepper/themes/step/dark/step.indigo.css.js +1 -1
  280. package/components/stepper/themes/step/dark/step.indigo.css.js.map +1 -1
  281. package/components/stepper/themes/step/dark/step.material.css.js +1 -1
  282. package/components/stepper/themes/step/dark/step.material.css.js.map +1 -1
  283. package/components/stepper/themes/step/light/step.bootstrap.css.js +1 -1
  284. package/components/stepper/themes/step/light/step.bootstrap.css.js.map +1 -1
  285. package/components/stepper/themes/step/light/step.fluent.css.js +1 -1
  286. package/components/stepper/themes/step/light/step.fluent.css.js.map +1 -1
  287. package/components/stepper/themes/step/light/step.indigo.css.js +1 -1
  288. package/components/stepper/themes/step/light/step.indigo.css.js.map +1 -1
  289. package/components/stepper/themes/step/light/step.material.css.js +1 -1
  290. package/components/stepper/themes/step/light/step.material.css.js.map +1 -1
  291. package/components/stepper/themes/step/light/step.shared.css.js +1 -1
  292. package/components/stepper/themes/step/light/step.shared.css.js.map +1 -1
  293. package/components/stepper/themes/step/shared/step.common.css.js +1 -1
  294. package/components/stepper/themes/step/shared/step.common.css.js.map +1 -1
  295. package/components/stepper/themes/step/shared/step.indigo.css.js +1 -1
  296. package/components/stepper/themes/step/shared/step.indigo.css.js.map +1 -1
  297. package/components/tabs/tab-dom.js +8 -9
  298. package/components/tabs/tab-dom.js.map +1 -1
  299. package/components/tabs/themes/dark/tab.bootstrap.css.js +1 -1
  300. package/components/tabs/themes/dark/tab.bootstrap.css.js.map +1 -1
  301. package/components/tabs/themes/dark/tab.fluent.css.js +1 -1
  302. package/components/tabs/themes/dark/tab.fluent.css.js.map +1 -1
  303. package/components/tabs/themes/dark/tab.indigo.css.js +1 -1
  304. package/components/tabs/themes/dark/tab.indigo.css.js.map +1 -1
  305. package/components/tabs/themes/dark/tab.material.css.js +1 -1
  306. package/components/tabs/themes/dark/tab.material.css.js.map +1 -1
  307. package/components/tabs/themes/dark/tab.shared.css.js +1 -1
  308. package/components/tabs/themes/dark/tab.shared.css.js.map +1 -1
  309. package/components/tabs/themes/light/tab.bootstrap.css.js +1 -1
  310. package/components/tabs/themes/light/tab.bootstrap.css.js.map +1 -1
  311. package/components/tabs/themes/light/tab.fluent.css.js +1 -1
  312. package/components/tabs/themes/light/tab.fluent.css.js.map +1 -1
  313. package/components/tabs/themes/light/tab.indigo.css.js +1 -1
  314. package/components/tabs/themes/light/tab.indigo.css.js.map +1 -1
  315. package/components/tabs/themes/light/tab.material.css.js +1 -1
  316. package/components/tabs/themes/light/tab.material.css.js.map +1 -1
  317. package/components/tabs/themes/light/tab.shared.css.js +1 -1
  318. package/components/tabs/themes/light/tab.shared.css.js.map +1 -1
  319. package/components/tabs/themes/shared/tab/tab.bootstrap.css.js +1 -1
  320. package/components/tabs/themes/shared/tab/tab.bootstrap.css.js.map +1 -1
  321. package/components/tabs/themes/shared/tab/tab.common.css.js +1 -1
  322. package/components/tabs/themes/shared/tab/tab.common.css.js.map +1 -1
  323. package/components/tabs/themes/shared/tab/tab.fluent.css.js +1 -1
  324. package/components/tabs/themes/shared/tab/tab.fluent.css.js.map +1 -1
  325. package/components/tabs/themes/shared/tab/tab.indigo.css.js +1 -1
  326. package/components/tabs/themes/shared/tab/tab.indigo.css.js.map +1 -1
  327. package/components/tabs/themes/shared/tab/tab.material.css.js +1 -1
  328. package/components/tabs/themes/shared/tab/tab.material.css.js.map +1 -1
  329. package/components/tabs/themes/shared/tabs/tabs.bootstrap.css.js +1 -1
  330. package/components/tabs/themes/shared/tabs/tabs.bootstrap.css.js.map +1 -1
  331. package/components/tabs/themes/shared/tabs/tabs.common.css.js +1 -1
  332. package/components/tabs/themes/shared/tabs/tabs.common.css.js.map +1 -1
  333. package/components/tabs/themes/shared/tabs/tabs.indigo.css.js +1 -1
  334. package/components/tabs/themes/shared/tabs/tabs.indigo.css.js.map +1 -1
  335. package/components/tabs/themes/shared/tabs/tabs.material.css.js +1 -1
  336. package/components/tabs/themes/shared/tabs/tabs.material.css.js.map +1 -1
  337. package/components/tabs/themes/tabs.base.css.js +1 -1
  338. package/components/tabs/themes/tabs.base.css.js.map +1 -1
  339. package/components/textarea/themes/dark/textarea.indigo.css.js +1 -1
  340. package/components/textarea/themes/dark/textarea.indigo.css.js.map +1 -1
  341. package/components/textarea/themes/light/textarea.indigo.css.js +1 -1
  342. package/components/textarea/themes/light/textarea.indigo.css.js.map +1 -1
  343. package/components/textarea/themes/light/textarea.shared.css.js +1 -1
  344. package/components/textarea/themes/light/textarea.shared.css.js.map +1 -1
  345. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  346. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  347. package/components/textarea/themes/shared/textarea.common.css.js +1 -1
  348. package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
  349. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  350. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  351. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  352. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  353. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  354. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  355. package/components/theme-provider/theme-provider.d.ts +65 -0
  356. package/components/theme-provider/theme-provider.js +58 -0
  357. package/components/theme-provider/theme-provider.js.map +1 -0
  358. package/components/tile-manager/tile.js +6 -3
  359. package/components/tile-manager/tile.js.map +1 -1
  360. package/components/tree/themes/dark/container.bootstrap.css.js +1 -1
  361. package/components/tree/themes/dark/container.bootstrap.css.js.map +1 -1
  362. package/components/tree/themes/light/container.bootstrap.css.js +1 -1
  363. package/components/tree/themes/light/container.bootstrap.css.js.map +1 -1
  364. package/components/tree/tree-item.js +4 -0
  365. package/components/tree/tree-item.js.map +1 -1
  366. package/components/tree/tree.d.ts +14 -0
  367. package/components/tree/tree.js +23 -0
  368. package/components/tree/tree.js.map +1 -1
  369. package/components/validation-container/validation-container.d.ts +0 -1
  370. package/components/validation-container/validation-container.js +6 -9
  371. package/components/validation-container/validation-container.js.map +1 -1
  372. package/custom-elements.json +3176 -2986
  373. package/extras/chat-markdown-renderer.d.ts +72 -4
  374. package/extras/chat-markdown-renderer.js +19 -7
  375. package/extras/chat-markdown-renderer.js.map +1 -1
  376. package/igniteui-webcomponents.html-data.json +1 -1
  377. package/index.d.ts +5 -1
  378. package/index.js +4 -1
  379. package/index.js.map +1 -1
  380. package/package.json +9 -4
  381. package/themes/dark/bootstrap.css +1 -1
  382. package/themes/dark/fluent.css +1 -1
  383. package/themes/dark/indigo.css +1 -1
  384. package/themes/dark/material.css +1 -1
  385. package/themes/light/bootstrap.css +1 -1
  386. package/themes/light/fluent.css +1 -1
  387. package/themes/light/indigo.css +1 -1
  388. package/themes/light/material.css +1 -1
  389. package/theming/context.d.ts +36 -0
  390. package/theming/context.js +3 -0
  391. package/theming/context.js.map +1 -0
  392. package/theming/theming-controller.d.ts +7 -1
  393. package/theming/theming-controller.js +48 -12
  394. package/theming/theming-controller.js.map +1 -1
  395. package/theming/utils.d.ts +10 -0
  396. package/theming/utils.js +8 -42
  397. package/theming/utils.js.map +1 -1
  398. package/web-types.json +1 -1
  399. package/components/common/localization/intl-formatters.d.ts +0 -17
  400. package/components/common/localization/intl-formatters.js +0 -46
  401. package/components/common/localization/intl-formatters.js.map +0 -1
  402. package/components/validation-container/themes/dark/validator.bootstrap.css.d.ts +0 -1
  403. package/components/validation-container/themes/dark/validator.bootstrap.css.js +0 -3
  404. package/components/validation-container/themes/dark/validator.bootstrap.css.js.map +0 -1
  405. package/components/validation-container/themes/dark/validator.fluent.css.d.ts +0 -1
  406. package/components/validation-container/themes/dark/validator.fluent.css.js +0 -3
  407. package/components/validation-container/themes/dark/validator.fluent.css.js.map +0 -1
  408. package/components/validation-container/themes/dark/validator.indigo.css.d.ts +0 -1
  409. package/components/validation-container/themes/dark/validator.indigo.css.js +0 -3
  410. package/components/validation-container/themes/dark/validator.indigo.css.js.map +0 -1
  411. package/components/validation-container/themes/dark/validator.material.css.d.ts +0 -1
  412. package/components/validation-container/themes/dark/validator.material.css.js +0 -3
  413. package/components/validation-container/themes/dark/validator.material.css.js.map +0 -1
  414. package/components/validation-container/themes/light/validator.bootstrap.css.d.ts +0 -1
  415. package/components/validation-container/themes/light/validator.bootstrap.css.js +0 -3
  416. package/components/validation-container/themes/light/validator.bootstrap.css.js.map +0 -1
  417. package/components/validation-container/themes/light/validator.fluent.css.d.ts +0 -1
  418. package/components/validation-container/themes/light/validator.fluent.css.js +0 -3
  419. package/components/validation-container/themes/light/validator.fluent.css.js.map +0 -1
  420. package/components/validation-container/themes/light/validator.indigo.css.d.ts +0 -1
  421. package/components/validation-container/themes/light/validator.indigo.css.js +0 -3
  422. package/components/validation-container/themes/light/validator.indigo.css.js.map +0 -1
  423. package/components/validation-container/themes/light/validator.material.css.d.ts +0 -1
  424. package/components/validation-container/themes/light/validator.material.css.js +0 -3
  425. package/components/validation-container/themes/light/validator.material.css.js.map +0 -1
  426. package/components/validation-container/themes/light/validator.shared.css.d.ts +0 -1
  427. package/components/validation-container/themes/light/validator.shared.css.js +0 -3
  428. package/components/validation-container/themes/light/validator.shared.css.js.map +0 -1
  429. package/components/validation-container/themes/themes.d.ts +0 -2
  430. package/components/validation-container/themes/themes.js +0 -46
  431. package/components/validation-container/themes/themes.js.map +0 -1
@@ -5,21 +5,20 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  var IgcDaysViewComponent_1;
8
+ import { getDateFormatter } from 'igniteui-i18n-core';
8
9
  import { html, nothing } from 'lit';
9
10
  import { property, query, state } from 'lit/decorators.js';
10
11
  import { addThemingController } from '../../../theming/theming-controller.js';
11
12
  import { addKeybindings } from '../../common/controllers/key-bindings.js';
12
13
  import { blazorIndirectRender } from '../../common/decorators/blazorIndirectRender.js';
13
14
  import { blazorSuppressComponent } from '../../common/decorators/blazorSuppressComponent.js';
14
- import { watch } from '../../common/decorators/watch.js';
15
15
  import { registerComponent } from '../../common/definitions/register.js';
16
- import { createDateTimeFormatters } from '../../common/localization/intl-formatters.js';
17
16
  import { EventEmitterMixin } from '../../common/mixins/event-emitter.js';
18
17
  import { partMap } from '../../common/part-map.js';
19
18
  import { addSafeEventListener, chunk, first, last, take, } from '../../common/util.js';
20
19
  import { IgcCalendarBaseComponent } from '../base.js';
21
20
  import { areSameMonth, calendarRange, generateMonth, getViewElement, isDateInRanges, isNextMonth, isPreviousMonth, } from '../helpers.js';
22
- import { CalendarDay, daysInWeek } from '../model.js';
21
+ import { CalendarDay, DAYS_IN_WEEK } from '../model.js';
23
22
  import { all } from '../themes/days.js';
24
23
  import { styles } from '../themes/days-view.base.css.js';
25
24
  import { DateRangeType } from '../types.js';
@@ -30,231 +29,236 @@ let IgcDaysViewComponent = class IgcDaysViewComponent extends EventEmitterMixin(
30
29
  static register() {
31
30
  registerComponent(IgcDaysViewComponent_1);
32
31
  }
32
+ get _rangeStart() {
33
+ return this._hasValues ? first(this._values) : undefined;
34
+ }
35
+ get _rangeEnd() {
36
+ return this._hasValues ? last(this._values) : undefined;
37
+ }
33
38
  set rangePreviewDate(value) {
34
39
  this._rangePreviewDate = value ? CalendarDay.from(value) : undefined;
35
40
  }
36
41
  get rangePreviewDate() {
37
42
  return this._rangePreviewDate?.native;
38
43
  }
39
- localeChange() {
40
- this._intl.locale = this.locale;
41
- }
42
- weekDayFormatChange() {
43
- this._intl.update({ weekday: { weekday: this.weekDayFormat } });
44
- }
45
- datesChange() {
46
- this.dates = Array.from(generateMonth(this._activeDate, this._firstDayOfWeek));
47
- }
48
44
  constructor() {
49
45
  super();
46
+ this._dates = [];
50
47
  this.active = false;
51
48
  this.hideLeadingDays = false;
52
49
  this.hideTrailingDays = false;
53
50
  this.weekDayFormat = 'narrow';
54
- this._intl = createDateTimeFormatters(this.locale, {
55
- weekday: { weekday: this.weekDayFormat },
56
- label: { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' },
57
- ariaWeekday: { weekday: 'long' },
58
- });
59
51
  addThemingController(this, all);
60
- addKeybindings(this).setActivateHandler(this.handleInteraction);
61
- addSafeEventListener(this, 'click', this.handleInteraction);
52
+ addKeybindings(this).setActivateHandler(this._handleInteraction);
53
+ addSafeEventListener(this, 'click', this._handleInteraction);
62
54
  }
63
55
  connectedCallback() {
64
56
  super.connectedCallback();
65
57
  this.role = 'grid';
66
58
  }
67
- focusActiveDate(options) {
68
- this.activeDay.focus(options);
59
+ update(props) {
60
+ if (props.has('activeDate') || props.has('weekStart')) {
61
+ this._dates = Array.from(generateMonth(this._activeDate, this._firstDayOfWeek));
62
+ }
63
+ super.update(props);
69
64
  }
70
- handleInteraction(event) {
65
+ _handleInteraction(event) {
71
66
  const value = getViewElement(event);
72
67
  if (value !== -1) {
73
68
  const date = CalendarDay.from(new Date(value));
74
69
  if (this._rangePreviewDate) {
75
- this.setRangePreviewDate();
70
+ this._setRangePreviewDate();
76
71
  }
77
- if (this.selectDate(date)) {
72
+ if (this._selectDate(date)) {
78
73
  this.emitEvent('igcChange', { detail: date.native });
79
74
  }
80
75
  if (event.type === 'click') {
81
- event.stopPropagation();
82
76
  this.emitEvent('igcActiveDateChange', { detail: date.native });
83
77
  this._activeDate = date;
84
78
  }
85
79
  }
86
80
  }
87
- _selectMultiple(day) {
88
- const values = this._values;
89
- const idx = values.findIndex((v) => v.equalTo(day));
90
- idx < 0 ? values.push(day) : values.splice(idx, 1);
91
- values.sort((a, b) => a.timestamp - b.timestamp);
92
- this._values = Array.from(values);
93
- }
94
- _selectRange(day) {
95
- let values = this._values;
96
- if (values.length !== 1) {
97
- values = [day];
98
- }
99
- else {
100
- const beginning = first(values);
101
- if (beginning.equalTo(day)) {
102
- this._values = [];
103
- return;
104
- }
105
- values = beginning.greaterThan(day)
106
- ? Array.from(calendarRange({ start: day, end: beginning }))
107
- : Array.from(calendarRange({ start: beginning, end: day }));
108
- values.push(last(values).add('day', 1));
109
- }
110
- this._values = values.filter((v) => !isDateInRanges(v, this._disabledDates));
111
- }
112
- selectDate(value) {
81
+ _selectDate(value) {
113
82
  if (isDateInRanges(value, this._disabledDates)) {
114
83
  return false;
115
84
  }
116
- if (this._isSingle) {
117
- if (this._value?.equalTo(value)) {
118
- return false;
119
- }
120
- this._value = value;
85
+ switch (this.selection) {
86
+ case 'single':
87
+ if (this._value?.equalTo(value)) {
88
+ return false;
89
+ }
90
+ this._value = value;
91
+ break;
92
+ case 'multiple':
93
+ this._selectMultiple(value);
94
+ break;
95
+ case 'range':
96
+ this._selectRange(value);
97
+ break;
121
98
  }
122
- if (this._isMultiple) {
123
- this._selectMultiple(value);
99
+ return true;
100
+ }
101
+ _selectMultiple(day) {
102
+ const idx = this._values.findIndex((v) => v.equalTo(day));
103
+ if (idx < 0) {
104
+ this._values.push(day);
124
105
  }
125
- if (this._isRange) {
126
- this._selectRange(value);
106
+ else {
107
+ this._values.splice(idx, 1);
127
108
  }
128
- return true;
109
+ this._values = this._values.toSorted((a, b) => a.timestamp - b.timestamp);
129
110
  }
130
- isSelected(day) {
131
- if (isDateInRanges(day, this._disabledDates)) {
132
- return false;
111
+ _selectRange(day) {
112
+ if (this._values.length !== 1) {
113
+ this._values = [day];
114
+ return;
133
115
  }
134
- if (this._isSingle) {
135
- return !!this._value && this._value.equalTo(day);
116
+ const rangeStart = this._rangeStart;
117
+ if (rangeStart.equalTo(day)) {
118
+ this._values = [];
119
+ return;
136
120
  }
137
- if (!this._hasValues) {
121
+ const [start, end] = rangeStart.greaterThan(day)
122
+ ? [day, rangeStart]
123
+ : [rangeStart, day];
124
+ const range = Array.from(calendarRange({ start, end }));
125
+ range.push(last(range).add('day', 1));
126
+ this._values = range.filter((v) => !isDateInRanges(v, this._disabledDates));
127
+ }
128
+ _isSelected(day) {
129
+ if (isDateInRanges(day, this._disabledDates)) {
138
130
  return false;
139
131
  }
140
- if (this._isMultiple) {
141
- return isDateInRanges(day, [
142
- {
143
- type: DateRangeType.Specific,
144
- dateRange: this.values,
145
- },
146
- ]);
132
+ switch (this.selection) {
133
+ case 'single':
134
+ return Boolean(this._value?.equalTo(day));
135
+ case 'multiple':
136
+ return (this._hasValues &&
137
+ isDateInRanges(day, [
138
+ { type: DateRangeType.Specific, dateRange: this.values },
139
+ ]));
140
+ case 'range':
141
+ return (this._hasValues &&
142
+ isDateInRanges(day, [
143
+ {
144
+ type: DateRangeType.Between,
145
+ dateRange: [this._rangeStart.native, this._rangeEnd.native],
146
+ },
147
+ ]));
147
148
  }
148
- return isDateInRanges(day, [
149
- {
150
- type: DateRangeType.Between,
151
- dateRange: [first(this._values).native, last(this._values).native],
152
- },
153
- ]);
154
149
  }
155
- setRangePreviewDate(day) {
150
+ _setRangePreviewDate(day) {
156
151
  this._rangePreviewDate = day;
157
152
  this.emitEvent('igcRangePreviewDateChange', {
158
153
  detail: day ? day.native : undefined,
159
154
  });
160
155
  }
161
- changeRangePreview(day) {
156
+ _changeRangePreview(day) {
162
157
  if (this._values.length === 1 && !first(this._values).equalTo(day)) {
163
- this.setRangePreviewDate(day);
158
+ this._setRangePreviewDate(day);
164
159
  }
165
160
  }
166
- clearRangePreview() {
161
+ _clearRangePreview() {
167
162
  if (this._rangePreviewDate) {
168
- this.setRangePreviewDate();
163
+ this._setRangePreviewDate();
169
164
  }
170
165
  }
171
- isFirstInRange(day) {
172
- if (this._isSingle || !this._hasValues) {
173
- return false;
174
- }
175
- const target = this._rangePreviewDate?.lessThan(first(this._values))
166
+ _getEffectiveRangeStart() {
167
+ if (!this._rangeStart)
168
+ return undefined;
169
+ return this._rangePreviewDate?.lessThan(this._rangeStart)
176
170
  ? this._rangePreviewDate
177
- : first(this._values);
178
- return target.equalTo(day);
171
+ : this._rangeStart;
179
172
  }
180
- isLastInRange(day) {
181
- if (this._isSingle || !this._hasValues) {
182
- return false;
183
- }
184
- const target = this._rangePreviewDate?.greaterThan(last(this._values))
173
+ _getEffectiveRangeEnd() {
174
+ if (!this._rangeEnd)
175
+ return undefined;
176
+ return this._rangePreviewDate?.greaterThan(this._rangeEnd)
185
177
  ? this._rangePreviewDate
186
- : last(this._values);
187
- return target.equalTo(day);
178
+ : this._rangeEnd;
188
179
  }
189
- isRangeDate(day) {
190
- const isSingleRange = this._values.length === 1;
191
- if (!this._hasValues || (isSingleRange && !this._rangePreviewDate)) {
180
+ _isFirstInRange(day) {
181
+ const effectiveStart = this._getEffectiveRangeStart();
182
+ return this._isRange && Boolean(effectiveStart?.equalTo(day));
183
+ }
184
+ _isLastInRange(day) {
185
+ const effectiveEnd = this._getEffectiveRangeEnd();
186
+ return this._isRange && Boolean(effectiveEnd?.equalTo(day));
187
+ }
188
+ _isRangeDate(day) {
189
+ if (!this._hasValues)
192
190
  return false;
193
- }
194
- const min = first(this._values);
195
- const max = isSingleRange ? this._rangePreviewDate : last(this._values);
191
+ const isSingleSelection = this._values.length === 1;
192
+ if (isSingleSelection && !this._rangePreviewDate)
193
+ return false;
194
+ const max = isSingleSelection ? this._rangePreviewDate : this._rangeEnd;
196
195
  return isDateInRanges(day, [
197
196
  {
198
197
  type: DateRangeType.Between,
199
- dateRange: [min.native, max.native],
198
+ dateRange: [this._rangeStart.native, max.native],
200
199
  },
201
200
  ]);
202
201
  }
203
- isRangePreview(day) {
204
- if (!(this._hasValues && this._rangePreviewDate)) {
202
+ _isRangePreview(day) {
203
+ if (!this._hasValues || !this._rangePreviewDate)
205
204
  return false;
206
- }
207
205
  return isDateInRanges(day, [
208
206
  {
209
207
  type: DateRangeType.Between,
210
- dateRange: [first(this._values).native, this._rangePreviewDate.native],
208
+ dateRange: [this._rangeStart.native, this._rangePreviewDate.native],
211
209
  },
212
210
  ]);
213
211
  }
214
- intlFormatDay(day) {
215
- const fmt = this._intl.get('label');
212
+ _intlFormatDay(day) {
213
+ const fmt = getDateFormatter().getIntlFormatter(this.locale, {
214
+ weekday: 'long',
215
+ year: 'numeric',
216
+ month: 'long',
217
+ day: 'numeric',
218
+ });
216
219
  if (this._rangePreviewDate?.equalTo(day)) {
217
220
  return fmt.formatRange(first(this._values).native, this._rangePreviewDate.native);
218
221
  }
219
- if (this.isFirstInRange(day) || this.isLastInRange(day)) {
222
+ if (this._isFirstInRange(day) || this._isLastInRange(day)) {
220
223
  return fmt.formatRange(first(this._values).native, last(this._values).native);
221
224
  }
222
225
  return fmt.format(day.native);
223
226
  }
224
- getDayHandlers(day) {
225
- const range = this._isRange;
226
- const changePreview = range
227
- ? this.changeRangePreview.bind(this, day)
228
- : nothing;
229
- const clearPreview = range ? this.clearRangePreview : nothing;
230
- return { changePreview, clearPreview };
227
+ _getDayHandlers(day) {
228
+ if (!this._isRange) {
229
+ return { changePreview: nothing, clearPreview: nothing };
230
+ }
231
+ return {
232
+ changePreview: this._changeRangePreview.bind(this, day),
233
+ clearPreview: this._clearRangePreview.bind(this),
234
+ };
231
235
  }
232
- getDayProperties(day, today) {
233
- const isRange = this._isRange;
234
- const disabled = isDateInRanges(day, this._disabledDates);
235
- const hiddenLeading = this.hideLeadingDays && isPreviousMonth(day, this._activeDate);
236
- const hiddenTrailing = this.hideTrailingDays && isNextMonth(day, this._activeDate);
237
- const hidden = hiddenLeading || hiddenTrailing;
236
+ _getDayProperties(day, today) {
238
237
  const inactive = !areSameMonth(day, this._activeDate);
238
+ const disabled = isDateInRanges(day, this._disabledDates);
239
+ const hidden = (this.hideLeadingDays && isPreviousMonth(day, this._activeDate)) ||
240
+ (this.hideTrailingDays && isNextMonth(day, this._activeDate));
239
241
  return {
240
242
  disabled: disabled || hidden,
241
- first: this.isFirstInRange(day),
242
- last: this.isLastInRange(day),
243
- range: isRange && this.isRangeDate(day),
244
- preview: isRange && this.isRangePreview(day),
243
+ first: this._isFirstInRange(day),
244
+ last: this._isLastInRange(day),
245
+ range: this._isRange && this._isRangeDate(day),
246
+ preview: this._isRange && this._isRangePreview(day),
245
247
  current: !inactive && day.equalTo(today),
246
248
  inactive,
247
249
  hidden,
248
250
  weekend: day.weekend,
249
- single: !isRange,
250
- selected: !disabled && this.isSelected(day),
251
- special: isDateInRanges(day, this._specialDates) && !inactive,
251
+ single: !this._isRange,
252
+ selected: !disabled && this._isSelected(day),
253
+ special: !inactive && isDateInRanges(day, this._specialDates),
252
254
  };
253
255
  }
254
- renderDay(day, today) {
255
- const ariaLabel = this.intlFormatDay(day);
256
- const { changePreview, clearPreview } = this.getDayHandlers(day);
257
- const props = this.getDayProperties(day, today);
256
+ focusActiveDate(options) {
257
+ this._activeDay?.focus(options);
258
+ }
259
+ _renderDayWithProps(day, props) {
260
+ const ariaLabel = this._intlFormatDay(day);
261
+ const { changePreview, clearPreview } = this._getDayHandlers(day);
258
262
  return html `
259
263
  <span part=${partMap({ date: true, ...props })}>
260
264
  <span
@@ -267,15 +271,15 @@ let IgcDaysViewComponent = class IgcDaysViewComponent extends EventEmitterMixin(
267
271
  tabindex=${day.equalTo(this._activeDate) ? 0 : -1}
268
272
  @focus=${changePreview}
269
273
  @blur=${clearPreview}
270
- @mouseenter=${changePreview}
271
- @mouseleave=${clearPreview}
274
+ @pointerenter=${changePreview}
275
+ @pointerleave=${clearPreview}
272
276
  >
273
277
  ${day.date}
274
278
  </span>
275
279
  </span>
276
280
  `;
277
281
  }
278
- renderHeaderWeekNumber() {
282
+ _renderHeaderWeekNumber() {
279
283
  return html `
280
284
  <span role="columnheader" part="label week-number first">
281
285
  <span part="week-number-inner first">
@@ -284,7 +288,7 @@ let IgcDaysViewComponent = class IgcDaysViewComponent extends EventEmitterMixin(
284
288
  </span>
285
289
  `;
286
290
  }
287
- renderWeekNumber(start, last) {
291
+ _renderWeekNumber(start, last) {
288
292
  return html `
289
293
  <span role="rowheader" part=${partMap({ 'week-number': true, last })}>
290
294
  <span part=${partMap({ 'week-number-inner': true, last })}>
@@ -293,12 +297,16 @@ let IgcDaysViewComponent = class IgcDaysViewComponent extends EventEmitterMixin(
293
297
  </span>
294
298
  `;
295
299
  }
296
- renderHeaders() {
297
- const label = this._intl.get('weekday');
298
- const aria = this._intl.get('ariaWeekday');
299
- const days = take(generateMonth(this._activeDate, this._firstDayOfWeek), daysInWeek);
300
+ _renderHeaders() {
301
+ const label = getDateFormatter().getIntlFormatter(this.locale, {
302
+ weekday: this.weekDayFormat,
303
+ });
304
+ const aria = getDateFormatter().getIntlFormatter(this.locale, {
305
+ weekday: 'long',
306
+ });
307
+ const days = take(generateMonth(this._activeDate, this._firstDayOfWeek), DAYS_IN_WEEK);
300
308
  const weekNumber = this.showWeekNumbers
301
- ? this.renderHeaderWeekNumber()
309
+ ? this._renderHeaderWeekNumber()
302
310
  : nothing;
303
311
  const headers = days.map((day) => html `
304
312
  <span
@@ -313,35 +321,39 @@ let IgcDaysViewComponent = class IgcDaysViewComponent extends EventEmitterMixin(
313
321
  <div role="row" part="days-row first">${weekNumber}${headers}</div>
314
322
  `;
315
323
  }
316
- *renderWeeks() {
324
+ *_renderWeeks() {
317
325
  const today = CalendarDay.today;
318
- const weeks = Array.from(chunk(this.dates, daysInWeek));
319
- const last = weeks.length - 1;
326
+ const weeks = Array.from(chunk(this._dates, DAYS_IN_WEEK));
327
+ const lastIndex = weeks.length - 1;
328
+ const dayPropertiesMap = new Map();
329
+ for (const day of this._dates) {
330
+ dayPropertiesMap.set(day.timestamp, this._getDayProperties(day, today));
331
+ }
320
332
  for (const [idx, week] of weeks.entries()) {
321
- let hidden = false;
322
- if (idx === 0 || idx === last) {
323
- hidden = week.every((day) => this.getDayProperties(day, today).hidden);
324
- }
333
+ const isEdgeWeek = idx === 0 || idx === lastIndex;
334
+ const isLast = idx === lastIndex;
335
+ const hidden = isEdgeWeek &&
336
+ week.every((day) => dayPropertiesMap.get(day.timestamp).hidden);
325
337
  yield html `
326
338
  <div role="row" part="days-row" aria-hidden=${hidden}>
327
339
  ${this.showWeekNumbers
328
- ? this.renderWeekNumber(week[0], idx === last)
340
+ ? this._renderWeekNumber(week[0], isLast)
329
341
  : nothing}
330
- ${week.map((day) => this.renderDay(day, today))}
342
+ ${week.map((day) => this._renderDayWithProps(day, dayPropertiesMap.get(day.timestamp)))}
331
343
  </div>
332
344
  `;
333
345
  }
334
346
  }
335
347
  render() {
336
- return html `${this.renderHeaders()}${this.renderWeeks()}`;
348
+ return html `${this._renderHeaders()}${this._renderWeeks()}`;
337
349
  }
338
350
  };
339
351
  __decorate([
340
352
  state()
341
- ], IgcDaysViewComponent.prototype, "dates", void 0);
353
+ ], IgcDaysViewComponent.prototype, "_dates", void 0);
342
354
  __decorate([
343
355
  query('[tabindex="0"]')
344
- ], IgcDaysViewComponent.prototype, "activeDay", void 0);
356
+ ], IgcDaysViewComponent.prototype, "_activeDay", void 0);
345
357
  __decorate([
346
358
  property({ type: Boolean })
347
359
  ], IgcDaysViewComponent.prototype, "active", void 0);
@@ -357,16 +369,6 @@ __decorate([
357
369
  __decorate([
358
370
  property({ attribute: 'week-day-format' })
359
371
  ], IgcDaysViewComponent.prototype, "weekDayFormat", void 0);
360
- __decorate([
361
- watch('locale')
362
- ], IgcDaysViewComponent.prototype, "localeChange", null);
363
- __decorate([
364
- watch('weekDayFormat')
365
- ], IgcDaysViewComponent.prototype, "weekDayFormatChange", null);
366
- __decorate([
367
- watch('weekStart'),
368
- watch('activeDate')
369
- ], IgcDaysViewComponent.prototype, "datesChange", null);
370
372
  IgcDaysViewComponent = IgcDaysViewComponent_1 = __decorate([
371
373
  blazorSuppressComponent,
372
374
  blazorIndirectRender
@@ -1 +1 @@
1
- {"version":3,"file":"days-view.js","sourceRoot":"","sources":["../../../../src/components/calendar/days-view/days-view.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\n\nimport { addThemingController } from '../../../theming/theming-controller.js';\nimport { addKeybindings } from '../../common/controllers/key-bindings.js';\nimport { blazorIndirectRender } from '../../common/decorators/blazorIndirectRender.js';\nimport { blazorSuppressComponent } from '../../common/decorators/blazorSuppressComponent.js';\nimport { watch } from '../../common/decorators/watch.js';\nimport { registerComponent } from '../../common/definitions/register.js';\nimport { createDateTimeFormatters } from '../../common/localization/intl-formatters.js';\nimport type { Constructor } from '../../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../../common/mixins/event-emitter.js';\nimport { partMap } from '../../common/part-map.js';\nimport {\n addSafeEventListener,\n chunk,\n first,\n last,\n take,\n} from '../../common/util.js';\nimport { IgcCalendarBaseComponent } from '../base.js';\nimport {\n areSameMonth,\n calendarRange,\n generateMonth,\n getViewElement,\n isDateInRanges,\n isNextMonth,\n isPreviousMonth,\n} from '../helpers.js';\nimport { CalendarDay, daysInWeek } from '../model.js';\nimport { all } from '../themes/days.js';\nimport { styles } from '../themes/days-view.base.css.js';\nimport { DateRangeType, type IgcCalendarComponentEventMap } from '../types.js';\n\nexport interface IgcDaysViewEventMap extends IgcCalendarComponentEventMap {\n igcActiveDateChange: CustomEvent<Date>;\n igcRangePreviewDateChange: CustomEvent<Date>;\n}\n\n/**\n * Instantiate a days view as a separate component in the calendar.\n *\n * @element igc-days-view\n *\n * @fires igcActiveDateChange - Emitted when the active date changes.\n * @fires igcRangePreviewDateChange - Emitted when the range preview date changes.\n *\n * @csspart days-row - The days row container.\n * @csspart label - The label container.\n * @csspart label-inner - The inner label container.\n * @csspart week-number - The week number container.\n * @csspart week-number-inner - The inner week number container.\n */\n@blazorSuppressComponent\n@blazorIndirectRender\nexport default class IgcDaysViewComponent extends EventEmitterMixin<\n IgcDaysViewEventMap,\n Constructor<IgcCalendarBaseComponent>\n>(IgcCalendarBaseComponent) {\n public static readonly tagName = 'igc-days-view';\n public static styles = styles;\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcDaysViewComponent);\n }\n\n @state()\n private dates!: CalendarDay[];\n\n @query('[tabindex=\"0\"]')\n private activeDay!: HTMLElement;\n\n /** The active state of the component. */\n @property({ type: Boolean })\n public active = false;\n\n /**\n * Whether to show leading days which do not belong to the current month.\n * @attr hide-leading-days\n */\n @property({ type: Boolean, attribute: 'hide-leading-days' })\n public hideLeadingDays = false;\n\n /**\n * Whether to show trailing days which do not belong to the current month.\n * @attr hide-trailing-days\n */\n @property({ type: Boolean, attribute: 'hide-trailing-days' })\n public hideTrailingDays = false;\n\n /** The range preview date. */\n @property({ attribute: false })\n public set rangePreviewDate(value) {\n this._rangePreviewDate = value ? CalendarDay.from(value) : undefined;\n }\n\n public get rangePreviewDate() {\n return this._rangePreviewDate?.native;\n }\n\n /**\n * The format of the days. Defaults to narrow.\n * @attr week-day-format\n */\n @property({ attribute: 'week-day-format' })\n public weekDayFormat: 'long' | 'short' | 'narrow' = 'narrow';\n\n private _intl = createDateTimeFormatters(this.locale, {\n weekday: { weekday: this.weekDayFormat },\n label: { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' },\n ariaWeekday: { weekday: 'long' },\n });\n\n @watch('locale')\n protected localeChange() {\n this._intl.locale = this.locale;\n }\n\n @watch('weekDayFormat')\n protected weekDayFormatChange() {\n this._intl.update({ weekday: { weekday: this.weekDayFormat } });\n }\n\n @watch('weekStart')\n @watch('activeDate')\n protected datesChange() {\n this.dates = Array.from(\n generateMonth(this._activeDate, this._firstDayOfWeek)\n );\n }\n\n constructor() {\n super();\n\n addThemingController(this, all);\n addKeybindings(this).setActivateHandler(this.handleInteraction);\n addSafeEventListener(this, 'click', this.handleInteraction);\n }\n\n public override connectedCallback() {\n super.connectedCallback();\n this.role = 'grid';\n }\n\n /** Focuses the active date. */\n public focusActiveDate(options?: FocusOptions) {\n this.activeDay.focus(options);\n }\n\n protected handleInteraction(event: Event) {\n const value = getViewElement(event);\n\n if (value !== -1) {\n const date = CalendarDay.from(new Date(value));\n\n if (this._rangePreviewDate) {\n this.setRangePreviewDate();\n }\n\n if (this.selectDate(date)) {\n this.emitEvent('igcChange', { detail: date.native });\n }\n\n if (event.type === 'click') {\n // XXX: Why ?\n event.stopPropagation();\n this.emitEvent('igcActiveDateChange', { detail: date.native });\n this._activeDate = date;\n }\n }\n }\n\n private _selectMultiple(day: CalendarDay) {\n const values = this._values;\n const idx = values.findIndex((v) => v.equalTo(day));\n\n idx < 0 ? values.push(day) : values.splice(idx, 1);\n values.sort((a, b) => a.timestamp - b.timestamp);\n this._values = Array.from(values);\n }\n\n private _selectRange(day: CalendarDay) {\n let values = this._values;\n\n if (values.length !== 1) {\n values = [day];\n } else {\n const beginning = first(values);\n\n if (beginning.equalTo(day)) {\n this._values = [];\n return;\n }\n\n values = beginning.greaterThan(day)\n ? Array.from(calendarRange({ start: day, end: beginning }))\n : Array.from(calendarRange({ start: beginning, end: day }));\n\n values.push(last(values).add('day', 1));\n }\n\n this._values = values.filter(\n (v) => !isDateInRanges(v, this._disabledDates)\n );\n }\n\n private selectDate(value: CalendarDay) {\n if (isDateInRanges(value, this._disabledDates)) {\n return false;\n }\n\n if (this._isSingle) {\n if (this._value?.equalTo(value)) {\n return false;\n }\n this._value = value;\n }\n\n if (this._isMultiple) {\n this._selectMultiple(value);\n }\n\n if (this._isRange) {\n this._selectRange(value);\n }\n\n return true;\n }\n\n private isSelected(day: CalendarDay) {\n if (isDateInRanges(day, this._disabledDates)) {\n return false;\n }\n\n if (this._isSingle) {\n return !!this._value && this._value.equalTo(day);\n }\n\n if (!this._hasValues) {\n return false;\n }\n\n if (this._isMultiple) {\n return isDateInRanges(day, [\n {\n type: DateRangeType.Specific,\n dateRange: this.values,\n },\n ]);\n }\n return isDateInRanges(day, [\n {\n type: DateRangeType.Between,\n dateRange: [first(this._values).native, last(this._values).native],\n },\n ]);\n }\n\n // XXX: Range interaction\n private setRangePreviewDate(day?: CalendarDay) {\n this._rangePreviewDate = day;\n this.emitEvent('igcRangePreviewDateChange', {\n detail: day ? day.native : undefined,\n });\n }\n\n private changeRangePreview(day: CalendarDay) {\n if (this._values.length === 1 && !first(this._values).equalTo(day)) {\n this.setRangePreviewDate(day);\n }\n }\n\n private clearRangePreview() {\n if (this._rangePreviewDate) {\n this.setRangePreviewDate();\n }\n }\n\n // XXX: Ranges\n\n private isFirstInRange(day: CalendarDay) {\n if (this._isSingle || !this._hasValues) {\n return false;\n }\n\n const target = this._rangePreviewDate?.lessThan(first(this._values))\n ? this._rangePreviewDate\n : first(this._values);\n\n return target.equalTo(day);\n }\n\n private isLastInRange(day: CalendarDay) {\n if (this._isSingle || !this._hasValues) {\n return false;\n }\n\n const target = this._rangePreviewDate?.greaterThan(last(this._values))\n ? this._rangePreviewDate\n : last(this._values);\n\n return target.equalTo(day);\n }\n\n private isRangeDate(day: CalendarDay) {\n const isSingleRange = this._values.length === 1;\n\n if (!this._hasValues || (isSingleRange && !this._rangePreviewDate)) {\n return false;\n }\n\n const min = first(this._values);\n const max = isSingleRange ? this._rangePreviewDate! : last(this._values);\n\n return isDateInRanges(day, [\n {\n type: DateRangeType.Between,\n dateRange: [min.native, max.native],\n },\n ]);\n }\n\n private isRangePreview(day: CalendarDay) {\n if (!(this._hasValues && this._rangePreviewDate)) {\n return false;\n }\n\n return isDateInRanges(day, [\n {\n type: DateRangeType.Between,\n dateRange: [first(this._values).native, this._rangePreviewDate.native],\n },\n ]);\n }\n\n private intlFormatDay(day: CalendarDay) {\n const fmt = this._intl.get('label');\n\n // Range selection in progress\n if (this._rangePreviewDate?.equalTo(day)) {\n return fmt.formatRange(\n first(this._values).native,\n this._rangePreviewDate.native\n );\n }\n\n // Range selection finished\n if (this.isFirstInRange(day) || this.isLastInRange(day)) {\n return fmt.formatRange(\n first(this._values).native,\n last(this._values).native\n );\n }\n\n // Default\n return fmt.format(day.native);\n }\n\n private getDayHandlers(day: CalendarDay) {\n const range = this._isRange;\n const changePreview = range\n ? this.changeRangePreview.bind(this, day)\n : nothing;\n const clearPreview = range ? this.clearRangePreview : nothing;\n\n return { changePreview, clearPreview };\n }\n\n private getDayProperties(day: CalendarDay, today: CalendarDay) {\n const isRange = this._isRange;\n const disabled = isDateInRanges(day, this._disabledDates);\n\n const hiddenLeading =\n this.hideLeadingDays && isPreviousMonth(day, this._activeDate);\n const hiddenTrailing =\n this.hideTrailingDays && isNextMonth(day, this._activeDate);\n\n const hidden = hiddenLeading || hiddenTrailing;\n const inactive = !areSameMonth(day, this._activeDate);\n\n return {\n disabled: disabled || hidden,\n first: this.isFirstInRange(day),\n last: this.isLastInRange(day),\n range: isRange && this.isRangeDate(day),\n preview: isRange && this.isRangePreview(day),\n current: !inactive && day.equalTo(today),\n inactive,\n hidden,\n weekend: day.weekend,\n single: !isRange,\n selected: !disabled && this.isSelected(day),\n special: isDateInRanges(day, this._specialDates) && !inactive,\n };\n }\n\n protected renderDay(day: CalendarDay, today: CalendarDay) {\n const ariaLabel = this.intlFormatDay(day);\n const { changePreview, clearPreview } = this.getDayHandlers(day);\n\n const props = this.getDayProperties(day, today);\n\n return html`\n <span part=${partMap({ date: true, ...props })}>\n <span\n role=\"gridcell\"\n part=${partMap({ 'date-inner': true, ...props })}\n aria-label=${ariaLabel}\n aria-disabled=${props.disabled}\n aria-selected=${props.selected}\n data-value=${day.timestamp}\n tabindex=${day.equalTo(this._activeDate) ? 0 : -1}\n @focus=${changePreview}\n @blur=${clearPreview}\n @mouseenter=${changePreview}\n @mouseleave=${clearPreview}\n >\n ${day.date}\n </span>\n </span>\n `;\n }\n\n protected renderHeaderWeekNumber() {\n return html`\n <span role=\"columnheader\" part=\"label week-number first\">\n <span part=\"week-number-inner first\">\n ${this.resourceStrings.weekLabel}\n </span>\n </span>\n `;\n }\n\n protected renderWeekNumber(start: CalendarDay, last: boolean) {\n return html`\n <span role=\"rowheader\" part=${partMap({ 'week-number': true, last })}>\n <span part=${partMap({ 'week-number-inner': true, last })}>\n ${start.week}\n </span>\n </span>\n `;\n }\n\n protected renderHeaders() {\n const label = this._intl.get('weekday');\n const aria = this._intl.get('ariaWeekday');\n const days = take(\n generateMonth(this._activeDate, this._firstDayOfWeek),\n daysInWeek\n );\n\n const weekNumber = this.showWeekNumbers\n ? this.renderHeaderWeekNumber()\n : nothing;\n\n const headers = days.map(\n (day) => html`\n <span\n role=\"columnheader\"\n part=\"label\"\n aria-label=${aria.format(day.native)}\n >\n <span part=\"label-inner\">${label.format(day.native)}</span>\n </span>\n `\n );\n\n return html`\n <div role=\"row\" part=\"days-row first\">${weekNumber}${headers}</div>\n `;\n }\n\n protected *renderWeeks() {\n const today = CalendarDay.today;\n const weeks = Array.from(chunk(this.dates, daysInWeek));\n const last = weeks.length - 1;\n\n for (const [idx, week] of weeks.entries()) {\n let hidden = false;\n if (idx === 0 || idx === last) {\n hidden = week.every((day) => this.getDayProperties(day, today).hidden);\n }\n yield html`\n <div role=\"row\" part=\"days-row\" aria-hidden=${hidden}>\n ${this.showWeekNumbers\n ? this.renderWeekNumber(week[0], idx === last)\n : nothing}\n ${week.map((day) => this.renderDay(day, today))}\n </div>\n `;\n }\n }\n\n protected override render() {\n return html`${this.renderHeaders()}${this.renderWeeks()}`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-days-view': IgcDaysViewComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"days-view.js","sourceRoot":"","sources":["../../../../src/components/calendar/days-view/days-view.ts"],"names":[],"mappings":"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","sourcesContent":["import { getDateFormatter } from 'igniteui-i18n-core';\nimport { html, nothing, type PropertyValues, type TemplateResult } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { addThemingController } from '../../../theming/theming-controller.js';\nimport { addKeybindings } from '../../common/controllers/key-bindings.js';\nimport { blazorIndirectRender } from '../../common/decorators/blazorIndirectRender.js';\nimport { blazorSuppressComponent } from '../../common/decorators/blazorSuppressComponent.js';\nimport { registerComponent } from '../../common/definitions/register.js';\nimport type { Constructor } from '../../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../../common/mixins/event-emitter.js';\nimport { partMap } from '../../common/part-map.js';\nimport {\n addSafeEventListener,\n chunk,\n first,\n last,\n take,\n} from '../../common/util.js';\nimport { IgcCalendarBaseComponent } from '../base.js';\nimport {\n areSameMonth,\n calendarRange,\n generateMonth,\n getViewElement,\n isDateInRanges,\n isNextMonth,\n isPreviousMonth,\n} from '../helpers.js';\nimport { CalendarDay, DAYS_IN_WEEK } from '../model.js';\nimport { all } from '../themes/days.js';\nimport { styles } from '../themes/days-view.base.css.js';\nimport { DateRangeType, type IgcCalendarComponentEventMap } from '../types.js';\n\nexport interface IgcDaysViewEventMap extends IgcCalendarComponentEventMap {\n igcActiveDateChange: CustomEvent<Date>;\n igcRangePreviewDateChange: CustomEvent<Date>;\n}\n\ninterface DayProperties {\n disabled: boolean;\n first: boolean;\n last: boolean;\n range: boolean;\n preview: boolean;\n current: boolean;\n inactive: boolean;\n hidden: boolean;\n weekend: boolean;\n single: boolean;\n selected: boolean;\n special: boolean;\n}\n\n/**\n * Instantiate a days view as a separate component in the calendar.\n *\n * @element igc-days-view\n *\n * @fires igcActiveDateChange - Emitted when the active date changes.\n * @fires igcRangePreviewDateChange - Emitted when the range preview date changes.\n *\n * @csspart days-row - The days row container.\n * @csspart label - The label container.\n * @csspart label-inner - The inner label container.\n * @csspart week-number - The week number container.\n * @csspart week-number-inner - The inner week number container.\n */\n@blazorSuppressComponent\n@blazorIndirectRender\nexport default class IgcDaysViewComponent extends EventEmitterMixin<\n IgcDaysViewEventMap,\n Constructor<IgcCalendarBaseComponent>\n>(IgcCalendarBaseComponent) {\n public static readonly tagName = 'igc-days-view';\n public static styles = styles;\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcDaysViewComponent);\n }\n\n //#region Internal properties and state\n\n @state()\n private _dates: CalendarDay[] = [];\n\n @query('[tabindex=\"0\"]')\n private _activeDay?: HTMLElement;\n\n /** Returns the first date in the current range selection. */\n private get _rangeStart(): CalendarDay | undefined {\n return this._hasValues ? first(this._values) : undefined;\n }\n\n /** Returns the last date in the current range selection. */\n private get _rangeEnd(): CalendarDay | undefined {\n return this._hasValues ? last(this._values) : undefined;\n }\n\n //#endregion\n\n //#region Public attributes and properties\n\n /** The active state of the component. */\n @property({ type: Boolean })\n public active = false;\n\n /**\n * Whether to show leading days which do not belong to the current month.\n * @attr hide-leading-days\n */\n @property({ type: Boolean, attribute: 'hide-leading-days' })\n public hideLeadingDays = false;\n\n /**\n * Whether to show trailing days which do not belong to the current month.\n * @attr hide-trailing-days\n */\n @property({ type: Boolean, attribute: 'hide-trailing-days' })\n public hideTrailingDays = false;\n\n /** The range preview date. */\n @property({ attribute: false })\n public set rangePreviewDate(value: Date | undefined) {\n this._rangePreviewDate = value ? CalendarDay.from(value) : undefined;\n }\n\n public get rangePreviewDate(): Date | undefined {\n return this._rangePreviewDate?.native;\n }\n\n /**\n * The format of the days. Defaults to narrow.\n * @attr week-day-format\n */\n @property({ attribute: 'week-day-format' })\n public weekDayFormat: 'long' | 'short' | 'narrow' = 'narrow';\n\n //#endregion\n\n //#region Lifecycle hooks\n\n constructor() {\n super();\n\n addThemingController(this, all);\n addKeybindings(this).setActivateHandler(this._handleInteraction);\n addSafeEventListener(this, 'click', this._handleInteraction);\n }\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.role = 'grid';\n }\n\n /** @internal */\n protected override update(props: PropertyValues<this>): void {\n if (props.has('activeDate') || props.has('weekStart')) {\n this._dates = Array.from(\n generateMonth(this._activeDate, this._firstDayOfWeek)\n );\n }\n\n super.update(props);\n }\n\n //#endregion\n\n //#region Event handlers\n\n protected _handleInteraction(event: Event): void {\n const value = getViewElement(event);\n\n if (value !== -1) {\n const date = CalendarDay.from(new Date(value));\n\n if (this._rangePreviewDate) {\n this._setRangePreviewDate();\n }\n\n if (this._selectDate(date)) {\n this.emitEvent('igcChange', { detail: date.native });\n }\n\n if (event.type === 'click') {\n this.emitEvent('igcActiveDateChange', { detail: date.native });\n this._activeDate = date;\n }\n }\n }\n\n //#endregion\n\n //#region Internal selection methods\n\n private _selectDate(value: CalendarDay): boolean {\n if (isDateInRanges(value, this._disabledDates)) {\n return false;\n }\n\n switch (this.selection) {\n case 'single':\n if (this._value?.equalTo(value)) {\n return false;\n }\n this._value = value;\n break;\n case 'multiple':\n this._selectMultiple(value);\n break;\n case 'range':\n this._selectRange(value);\n break;\n }\n\n return true;\n }\n\n private _selectMultiple(day: CalendarDay): void {\n const idx = this._values.findIndex((v) => v.equalTo(day));\n\n if (idx < 0) {\n this._values.push(day);\n } else {\n this._values.splice(idx, 1);\n }\n\n this._values = this._values.toSorted((a, b) => a.timestamp - b.timestamp);\n }\n\n private _selectRange(day: CalendarDay): void {\n // Start a new range selection\n if (this._values.length !== 1) {\n this._values = [day];\n return;\n }\n\n const rangeStart = this._rangeStart!;\n\n // Clicking the same date clears the selection\n if (rangeStart.equalTo(day)) {\n this._values = [];\n return;\n }\n\n // Build the complete range, ensuring correct order\n const [start, end] = rangeStart.greaterThan(day)\n ? [day, rangeStart]\n : [rangeStart, day];\n\n const range = Array.from(calendarRange({ start, end }));\n range.push(last(range).add('day', 1));\n\n // Filter out disabled dates\n this._values = range.filter((v) => !isDateInRanges(v, this._disabledDates));\n }\n\n private _isSelected(day: CalendarDay): boolean {\n if (isDateInRanges(day, this._disabledDates)) {\n return false;\n }\n\n switch (this.selection) {\n case 'single':\n return Boolean(this._value?.equalTo(day));\n\n case 'multiple':\n return (\n this._hasValues &&\n isDateInRanges(day, [\n { type: DateRangeType.Specific, dateRange: this.values },\n ])\n );\n\n case 'range':\n return (\n this._hasValues &&\n isDateInRanges(day, [\n {\n type: DateRangeType.Between,\n dateRange: [this._rangeStart!.native, this._rangeEnd!.native],\n },\n ])\n );\n }\n }\n\n //#endregion\n\n //#region Range helpers\n\n private _setRangePreviewDate(day?: CalendarDay): void {\n this._rangePreviewDate = day;\n this.emitEvent('igcRangePreviewDateChange', {\n detail: day ? day.native : undefined,\n });\n }\n\n private _changeRangePreview(day: CalendarDay): void {\n if (this._values.length === 1 && !first(this._values).equalTo(day)) {\n this._setRangePreviewDate(day);\n }\n }\n\n private _clearRangePreview(): void {\n if (this._rangePreviewDate) {\n this._setRangePreviewDate();\n }\n }\n\n /** Gets the effective start of the visual range, accounting for preview. */\n private _getEffectiveRangeStart(): CalendarDay | undefined {\n if (!this._rangeStart) return undefined;\n\n return this._rangePreviewDate?.lessThan(this._rangeStart)\n ? this._rangePreviewDate\n : this._rangeStart;\n }\n\n /** Gets the effective end of the visual range, accounting for preview. */\n private _getEffectiveRangeEnd(): CalendarDay | undefined {\n if (!this._rangeEnd) return undefined;\n\n return this._rangePreviewDate?.greaterThan(this._rangeEnd)\n ? this._rangePreviewDate\n : this._rangeEnd;\n }\n\n private _isFirstInRange(day: CalendarDay): boolean {\n const effectiveStart = this._getEffectiveRangeStart();\n return this._isRange && Boolean(effectiveStart?.equalTo(day));\n }\n\n private _isLastInRange(day: CalendarDay): boolean {\n const effectiveEnd = this._getEffectiveRangeEnd();\n return this._isRange && Boolean(effectiveEnd?.equalTo(day));\n }\n\n private _isRangeDate(day: CalendarDay): boolean {\n if (!this._hasValues) return false;\n\n const isSingleSelection = this._values.length === 1;\n if (isSingleSelection && !this._rangePreviewDate) return false;\n\n const max = isSingleSelection ? this._rangePreviewDate! : this._rangeEnd!;\n\n return isDateInRanges(day, [\n {\n type: DateRangeType.Between,\n dateRange: [this._rangeStart!.native, max.native],\n },\n ]);\n }\n\n private _isRangePreview(day: CalendarDay): boolean {\n if (!this._hasValues || !this._rangePreviewDate) return false;\n\n return isDateInRanges(day, [\n {\n type: DateRangeType.Between,\n dateRange: [this._rangeStart!.native, this._rangePreviewDate.native],\n },\n ]);\n }\n\n //#endregion\n\n //#region Internal methods\n\n private _intlFormatDay(day: CalendarDay): string {\n const fmt = getDateFormatter().getIntlFormatter(this.locale, {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n\n // Range selection in progress\n if (this._rangePreviewDate?.equalTo(day)) {\n return fmt.formatRange(\n first(this._values).native,\n this._rangePreviewDate.native\n );\n }\n\n // Range selection finished\n if (this._isFirstInRange(day) || this._isLastInRange(day)) {\n return fmt.formatRange(\n first(this._values).native,\n last(this._values).native\n );\n }\n\n // Default\n return fmt.format(day.native);\n }\n\n private _getDayHandlers(day: CalendarDay) {\n if (!this._isRange) {\n return { changePreview: nothing, clearPreview: nothing };\n }\n\n return {\n changePreview: this._changeRangePreview.bind(this, day),\n clearPreview: this._clearRangePreview.bind(this),\n };\n }\n\n private _getDayProperties(\n day: CalendarDay,\n today: CalendarDay\n ): DayProperties {\n const inactive = !areSameMonth(day, this._activeDate);\n const disabled = isDateInRanges(day, this._disabledDates);\n\n const hidden =\n (this.hideLeadingDays && isPreviousMonth(day, this._activeDate)) ||\n (this.hideTrailingDays && isNextMonth(day, this._activeDate));\n\n return {\n disabled: disabled || hidden,\n first: this._isFirstInRange(day),\n last: this._isLastInRange(day),\n range: this._isRange && this._isRangeDate(day),\n preview: this._isRange && this._isRangePreview(day),\n current: !inactive && day.equalTo(today),\n inactive,\n hidden,\n weekend: day.weekend,\n single: !this._isRange,\n selected: !disabled && this._isSelected(day),\n special: !inactive && isDateInRanges(day, this._specialDates),\n };\n }\n\n //#endregion\n\n //#region Public methods\n\n /** Focuses the active date. */\n public focusActiveDate(options?: FocusOptions): void {\n this._activeDay?.focus(options);\n }\n\n //#endregion\n\n protected _renderDayWithProps(\n day: CalendarDay,\n props: DayProperties\n ): TemplateResult {\n const ariaLabel = this._intlFormatDay(day);\n const { changePreview, clearPreview } = this._getDayHandlers(day);\n\n return html`\n <span part=${partMap({ date: true, ...props })}>\n <span\n role=\"gridcell\"\n part=${partMap({ 'date-inner': true, ...props })}\n aria-label=${ariaLabel}\n aria-disabled=${props.disabled}\n aria-selected=${props.selected}\n data-value=${day.timestamp}\n tabindex=${day.equalTo(this._activeDate) ? 0 : -1}\n @focus=${changePreview}\n @blur=${clearPreview}\n @pointerenter=${changePreview}\n @pointerleave=${clearPreview}\n >\n ${day.date}\n </span>\n </span>\n `;\n }\n\n protected _renderHeaderWeekNumber() {\n return html`\n <span role=\"columnheader\" part=\"label week-number first\">\n <span part=\"week-number-inner first\">\n ${this.resourceStrings.weekLabel}\n </span>\n </span>\n `;\n }\n\n protected _renderWeekNumber(start: CalendarDay, last: boolean) {\n return html`\n <span role=\"rowheader\" part=${partMap({ 'week-number': true, last })}>\n <span part=${partMap({ 'week-number-inner': true, last })}>\n ${start.week}\n </span>\n </span>\n `;\n }\n\n protected _renderHeaders() {\n const label = getDateFormatter().getIntlFormatter(this.locale, {\n weekday: this.weekDayFormat,\n });\n const aria = getDateFormatter().getIntlFormatter(this.locale, {\n weekday: 'long',\n });\n const days = take(\n generateMonth(this._activeDate, this._firstDayOfWeek),\n DAYS_IN_WEEK\n );\n\n const weekNumber = this.showWeekNumbers\n ? this._renderHeaderWeekNumber()\n : nothing;\n\n const headers = days.map(\n (day) => html`\n <span\n role=\"columnheader\"\n part=\"label\"\n aria-label=${aria.format(day.native)}\n >\n <span part=\"label-inner\">${label.format(day.native)}</span>\n </span>\n `\n );\n\n return html`\n <div role=\"row\" part=\"days-row first\">${weekNumber}${headers}</div>\n `;\n }\n\n protected *_renderWeeks(): Generator<TemplateResult> {\n const today = CalendarDay.today;\n const weeks = Array.from(chunk(this._dates, DAYS_IN_WEEK));\n const lastIndex = weeks.length - 1;\n\n // Pre-compute day properties for all dates to avoid redundant calculations\n const dayPropertiesMap = new Map<number, DayProperties>();\n for (const day of this._dates) {\n dayPropertiesMap.set(day.timestamp, this._getDayProperties(day, today));\n }\n\n for (const [idx, week] of weeks.entries()) {\n const isEdgeWeek = idx === 0 || idx === lastIndex;\n const isLast = idx === lastIndex;\n\n // Only check hidden state for first and last weeks\n const hidden =\n isEdgeWeek &&\n week.every((day) => dayPropertiesMap.get(day.timestamp)!.hidden);\n\n yield html`\n <div role=\"row\" part=\"days-row\" aria-hidden=${hidden}>\n ${this.showWeekNumbers\n ? this._renderWeekNumber(week[0], isLast)\n : nothing}\n ${week.map((day) =>\n this._renderDayWithProps(day, dayPropertiesMap.get(day.timestamp)!)\n )}\n </div>\n `;\n }\n }\n\n protected override render() {\n return html`${this._renderHeaders()}${this._renderWeeks()}`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-days-view': IgcDaysViewComponent;\n }\n}\n"]}