@veracity/vui 2.14.0-beta.0 → 2.14.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 (411) hide show
  1. package/dist/cjs/calendar/calendar.d.ts +5 -0
  2. package/dist/cjs/calendar/calendar.d.ts.map +1 -0
  3. package/dist/cjs/calendar/calendar.js +130 -0
  4. package/dist/cjs/calendar/calendar.styles.d.ts +14 -0
  5. package/dist/cjs/calendar/calendar.styles.d.ts.map +1 -0
  6. package/dist/cjs/calendar/calendar.styles.js +71 -0
  7. package/dist/cjs/calendar/calendar.types.d.ts +81 -0
  8. package/dist/cjs/calendar/calendar.types.d.ts.map +1 -0
  9. package/dist/cjs/calendar/calendar.types.js +2 -0
  10. package/dist/cjs/calendar/components/calendarHeader.d.ts +16 -0
  11. package/dist/cjs/calendar/components/calendarHeader.d.ts.map +1 -0
  12. package/dist/cjs/calendar/components/calendarHeader.js +22 -0
  13. package/dist/cjs/calendar/components/dayPicker.d.ts +9 -0
  14. package/dist/cjs/calendar/components/dayPicker.d.ts.map +1 -0
  15. package/dist/cjs/calendar/components/dayPicker.js +29 -0
  16. package/dist/cjs/calendar/components/index.d.ts +6 -0
  17. package/dist/cjs/calendar/components/index.d.ts.map +1 -0
  18. package/dist/cjs/calendar/components/index.js +21 -0
  19. package/dist/cjs/calendar/components/monthPicker.d.ts +9 -0
  20. package/dist/cjs/calendar/components/monthPicker.d.ts.map +1 -0
  21. package/dist/cjs/calendar/components/monthPicker.js +12 -0
  22. package/dist/cjs/calendar/components/timeUnitHeader.d.ts +13 -0
  23. package/dist/cjs/calendar/components/timeUnitHeader.d.ts.map +1 -0
  24. package/dist/cjs/calendar/components/timeUnitHeader.js +26 -0
  25. package/dist/cjs/calendar/components/yearPicker.d.ts +9 -0
  26. package/dist/cjs/calendar/components/yearPicker.d.ts.map +1 -0
  27. package/dist/cjs/calendar/components/yearPicker.js +10 -0
  28. package/dist/cjs/calendar/consts.d.ts +7 -0
  29. package/dist/cjs/calendar/consts.d.ts.map +1 -0
  30. package/dist/cjs/calendar/consts.js +22 -0
  31. package/dist/cjs/calendar/hooks/index.d.ts +5 -0
  32. package/dist/cjs/calendar/hooks/index.d.ts.map +1 -0
  33. package/dist/cjs/calendar/hooks/index.js +20 -0
  34. package/dist/cjs/calendar/hooks/useBoundaries.d.ts +12 -0
  35. package/dist/cjs/calendar/hooks/useBoundaries.d.ts.map +1 -0
  36. package/dist/cjs/calendar/hooks/useBoundaries.js +16 -0
  37. package/dist/cjs/calendar/hooks/useCalendar.d.ts +8 -0
  38. package/dist/cjs/calendar/hooks/useCalendar.d.ts.map +1 -0
  39. package/dist/cjs/calendar/hooks/useCalendar.js +143 -0
  40. package/dist/cjs/calendar/hooks/useDefaultViewMonth.d.ts +8 -0
  41. package/dist/cjs/calendar/hooks/useDefaultViewMonth.d.ts.map +1 -0
  42. package/dist/cjs/calendar/hooks/useDefaultViewMonth.js +21 -0
  43. package/dist/cjs/calendar/hooks/useSelectedDate.d.ts +15 -0
  44. package/dist/cjs/calendar/hooks/useSelectedDate.d.ts.map +1 -0
  45. package/dist/cjs/calendar/hooks/useSelectedDate.js +20 -0
  46. package/dist/cjs/calendar/index.d.ts +5 -0
  47. package/dist/cjs/calendar/index.d.ts.map +1 -0
  48. package/dist/cjs/calendar/index.js +25 -0
  49. package/dist/cjs/calendar/theme.d.ts +8 -0
  50. package/dist/cjs/calendar/theme.d.ts.map +1 -0
  51. package/dist/cjs/calendar/theme.js +12 -0
  52. package/dist/cjs/calendar/utils.d.ts +26 -0
  53. package/dist/cjs/calendar/utils.d.ts.map +1 -0
  54. package/dist/cjs/calendar/utils.js +95 -0
  55. package/dist/cjs/core/theme.d.ts.map +1 -1
  56. package/dist/cjs/core/theme.js +2 -4
  57. package/dist/cjs/datePicker/components/pickerPanel.d.ts +6 -0
  58. package/dist/cjs/datePicker/components/pickerPanel.d.ts.map +1 -0
  59. package/dist/cjs/datePicker/components/pickerPanel.js +25 -0
  60. package/dist/cjs/datePicker/dateInput.d.ts +11 -0
  61. package/dist/cjs/datePicker/dateInput.d.ts.map +1 -0
  62. package/dist/cjs/datePicker/dateInput.js +92 -0
  63. package/dist/cjs/datePicker/datePicker.d.ts +5 -0
  64. package/dist/cjs/datePicker/datePicker.d.ts.map +1 -0
  65. package/dist/cjs/datePicker/datePicker.js +138 -0
  66. package/dist/cjs/datePicker/datePicker.types.d.ts +22 -0
  67. package/dist/cjs/datePicker/datePicker.types.d.ts.map +1 -0
  68. package/dist/cjs/datePicker/datePicker.types.js +2 -0
  69. package/dist/cjs/datePicker/index.d.ts +4 -0
  70. package/dist/cjs/datePicker/index.d.ts.map +1 -0
  71. package/dist/cjs/datePicker/index.js +24 -0
  72. package/dist/cjs/datePicker/theme.d.ts +8 -0
  73. package/dist/cjs/datePicker/theme.d.ts.map +1 -0
  74. package/dist/cjs/datePicker/theme.js +12 -0
  75. package/dist/cjs/footer/footer.js +1 -1
  76. package/dist/cjs/header/loggedInHeader.d.ts.map +1 -1
  77. package/dist/cjs/icons/baseIcons/conc/conAnalytics.d.ts +4 -0
  78. package/dist/cjs/icons/baseIcons/conc/conAnalytics.d.ts.map +1 -0
  79. package/dist/cjs/icons/baseIcons/conc/conAnalytics.js +8 -0
  80. package/dist/cjs/icons/baseIcons/conc/conCircularEconomy.d.ts +4 -0
  81. package/dist/cjs/icons/baseIcons/conc/conCircularEconomy.d.ts.map +1 -0
  82. package/dist/cjs/icons/baseIcons/conc/conCircularEconomy.js +8 -0
  83. package/dist/cjs/icons/baseIcons/conc/conCleanAir.d.ts +4 -0
  84. package/dist/cjs/icons/baseIcons/conc/conCleanAir.d.ts.map +1 -0
  85. package/dist/cjs/icons/baseIcons/conc/conCleanAir.js +7 -0
  86. package/dist/cjs/icons/baseIcons/conc/conCleanWater.d.ts +4 -0
  87. package/dist/cjs/icons/baseIcons/conc/conCleanWater.d.ts.map +1 -0
  88. package/dist/cjs/icons/baseIcons/conc/conCleanWater.js +7 -0
  89. package/dist/cjs/icons/baseIcons/conc/conDataFabric.d.ts +4 -0
  90. package/dist/cjs/icons/baseIcons/conc/conDataFabric.d.ts.map +1 -0
  91. package/dist/cjs/icons/baseIcons/conc/conDataFabric.js +7 -0
  92. package/dist/cjs/icons/baseIcons/conc/conDeepSearch.d.ts +4 -0
  93. package/dist/cjs/icons/baseIcons/conc/conDeepSearch.d.ts.map +1 -0
  94. package/dist/cjs/icons/baseIcons/conc/conDeepSearch.js +8 -0
  95. package/dist/cjs/icons/baseIcons/conc/conElectricCar.d.ts +4 -0
  96. package/dist/cjs/icons/baseIcons/conc/conElectricCar.d.ts.map +1 -0
  97. package/dist/cjs/icons/baseIcons/conc/conElectricCar.js +8 -0
  98. package/dist/cjs/icons/baseIcons/conc/conEnergyEfficiency.d.ts +4 -0
  99. package/dist/cjs/icons/baseIcons/conc/conEnergyEfficiency.d.ts.map +1 -0
  100. package/dist/cjs/icons/baseIcons/conc/conEnergyEfficiency.js +7 -0
  101. package/dist/cjs/icons/baseIcons/conc/conIdentitySafe.d.ts +4 -0
  102. package/dist/cjs/icons/baseIcons/conc/conIdentitySafe.d.ts.map +1 -0
  103. package/dist/cjs/icons/baseIcons/conc/conIdentitySafe.js +7 -0
  104. package/dist/cjs/icons/baseIcons/conc/conMarketplace.d.ts +4 -0
  105. package/dist/cjs/icons/baseIcons/conc/conMarketplace.d.ts.map +1 -0
  106. package/dist/cjs/icons/baseIcons/conc/conMarketplace.js +7 -0
  107. package/dist/cjs/icons/baseIcons/conc/conNetwork.d.ts +4 -0
  108. package/dist/cjs/icons/baseIcons/conc/conNetwork.d.ts.map +1 -0
  109. package/dist/cjs/icons/baseIcons/conc/conNetwork.js +7 -0
  110. package/dist/cjs/icons/baseIcons/conc/conNotifications.d.ts +4 -0
  111. package/dist/cjs/icons/baseIcons/conc/conNotifications.d.ts.map +1 -0
  112. package/dist/cjs/icons/baseIcons/conc/conNotifications.js +7 -0
  113. package/dist/cjs/icons/baseIcons/conc/conNotifications2.d.ts +4 -0
  114. package/dist/cjs/icons/baseIcons/conc/conNotifications2.d.ts.map +1 -0
  115. package/dist/cjs/icons/baseIcons/conc/conNotifications2.js +7 -0
  116. package/dist/cjs/icons/baseIcons/conc/conRecycling.d.ts +4 -0
  117. package/dist/cjs/icons/baseIcons/conc/conRecycling.d.ts.map +1 -0
  118. package/dist/cjs/icons/baseIcons/conc/conRecycling.js +8 -0
  119. package/dist/cjs/icons/baseIcons/conc/conRenewableCertificateWater.d.ts +4 -0
  120. package/dist/cjs/icons/baseIcons/conc/conRenewableCertificateWater.d.ts.map +1 -0
  121. package/dist/cjs/icons/baseIcons/conc/conRenewableCertificateWater.js +8 -0
  122. package/dist/cjs/icons/baseIcons/conc/conRenewableCertificateWind.d.ts +4 -0
  123. package/dist/cjs/icons/baseIcons/conc/conRenewableCertificateWind.d.ts.map +1 -0
  124. package/dist/cjs/icons/baseIcons/conc/conRenewableCertificateWind.js +8 -0
  125. package/dist/cjs/icons/baseIcons/conc/conServices.d.ts +4 -0
  126. package/dist/cjs/icons/baseIcons/conc/conServices.d.ts.map +1 -0
  127. package/dist/cjs/icons/baseIcons/conc/conServices.js +7 -0
  128. package/dist/cjs/icons/baseIcons/conc/conSmartPowerGrid.d.ts +4 -0
  129. package/dist/cjs/icons/baseIcons/conc/conSmartPowerGrid.d.ts.map +1 -0
  130. package/dist/cjs/icons/baseIcons/conc/conSmartPowerGrid.js +8 -0
  131. package/dist/cjs/icons/baseIcons/conc/conSustainableForestry.d.ts +4 -0
  132. package/dist/cjs/icons/baseIcons/conc/conSustainableForestry.d.ts.map +1 -0
  133. package/dist/cjs/icons/baseIcons/conc/conSustainableForestry.js +7 -0
  134. package/dist/cjs/icons/baseIcons/conc/conVeracityAdapter.d.ts +4 -0
  135. package/dist/cjs/icons/baseIcons/conc/conVeracityAdapter.d.ts.map +1 -0
  136. package/dist/cjs/icons/baseIcons/conc/conVeracityAdapter.js +7 -0
  137. package/dist/cjs/icons/baseIcons/conc/conWindmill.d.ts +4 -0
  138. package/dist/cjs/icons/baseIcons/conc/conWindmill.d.ts.map +1 -0
  139. package/dist/cjs/icons/baseIcons/conc/conWindmill.js +8 -0
  140. package/dist/cjs/icons/baseIcons/icons.d.ts +24 -3
  141. package/dist/cjs/icons/baseIcons/icons.d.ts.map +1 -1
  142. package/dist/cjs/icons/baseIcons/icons.js +57 -14
  143. package/dist/cjs/icons/baseIcons/types.d.ts +1 -1
  144. package/dist/cjs/icons/baseIcons/types.d.ts.map +1 -1
  145. package/dist/cjs/index.d.ts +2 -0
  146. package/dist/cjs/index.d.ts.map +1 -1
  147. package/dist/cjs/index.js +2 -0
  148. package/dist/cjs/input/consts.js +1 -1
  149. package/dist/cjs/input/helpText.d.ts.map +1 -1
  150. package/dist/cjs/input/helpText.js +1 -1
  151. package/dist/cjs/input/input.d.ts.map +1 -1
  152. package/dist/cjs/input/input.js +5 -1
  153. package/dist/cjs/input/inputInput.d.ts.map +1 -1
  154. package/dist/cjs/input/inputInput.js +1 -0
  155. package/dist/cjs/tabs/tabs.d.ts.map +1 -1
  156. package/dist/cjs/tabs/tabs.js +8 -5
  157. package/dist/cjs/tabs/tabsNavBar.d.ts.map +1 -1
  158. package/dist/cjs/tabs/tabsNavBar.js +1 -1
  159. package/dist/cjs/tabs/theme.d.ts.map +1 -1
  160. package/dist/cjs/tabs/theme.js +0 -1
  161. package/dist/cjs/theme/components.d.ts +12 -0
  162. package/dist/cjs/theme/components.d.ts.map +1 -1
  163. package/dist/cjs/theme/components.js +78 -74
  164. package/dist/cjs/theme/defaultTheme.d.ts +12 -0
  165. package/dist/cjs/theme/defaultTheme.d.ts.map +1 -1
  166. package/dist/cjs/utils/dates.d.ts +20 -0
  167. package/dist/cjs/utils/dates.d.ts.map +1 -1
  168. package/dist/cjs/utils/dates.js +60 -1
  169. package/dist/cjs/utils/formatDate.d.ts +15 -0
  170. package/dist/cjs/utils/formatDate.d.ts.map +1 -0
  171. package/dist/cjs/utils/formatDate.js +51 -0
  172. package/dist/cjs/utils/index.d.ts +1 -0
  173. package/dist/cjs/utils/index.d.ts.map +1 -1
  174. package/dist/cjs/utils/index.js +1 -0
  175. package/dist/esm/calendar/calendar.d.ts +5 -0
  176. package/dist/esm/calendar/calendar.d.ts.map +1 -0
  177. package/dist/esm/calendar/calendar.js +89 -0
  178. package/dist/esm/calendar/calendar.styles.d.ts +14 -0
  179. package/dist/esm/calendar/calendar.styles.d.ts.map +1 -0
  180. package/dist/esm/calendar/calendar.styles.js +65 -0
  181. package/dist/esm/calendar/calendar.types.d.ts +81 -0
  182. package/dist/esm/calendar/calendar.types.d.ts.map +1 -0
  183. package/dist/esm/calendar/calendar.types.js +1 -0
  184. package/dist/esm/calendar/components/calendarHeader.d.ts +16 -0
  185. package/dist/esm/calendar/components/calendarHeader.d.ts.map +1 -0
  186. package/dist/esm/calendar/components/calendarHeader.js +15 -0
  187. package/dist/esm/calendar/components/dayPicker.d.ts +9 -0
  188. package/dist/esm/calendar/components/dayPicker.d.ts.map +1 -0
  189. package/dist/esm/calendar/components/dayPicker.js +22 -0
  190. package/dist/esm/calendar/components/index.d.ts +6 -0
  191. package/dist/esm/calendar/components/index.d.ts.map +1 -0
  192. package/dist/esm/calendar/components/index.js +5 -0
  193. package/dist/esm/calendar/components/monthPicker.d.ts +9 -0
  194. package/dist/esm/calendar/components/monthPicker.d.ts.map +1 -0
  195. package/dist/esm/calendar/components/monthPicker.js +5 -0
  196. package/dist/esm/calendar/components/timeUnitHeader.d.ts +13 -0
  197. package/dist/esm/calendar/components/timeUnitHeader.d.ts.map +1 -0
  198. package/dist/esm/calendar/components/timeUnitHeader.js +19 -0
  199. package/dist/esm/calendar/components/yearPicker.d.ts +9 -0
  200. package/dist/esm/calendar/components/yearPicker.d.ts.map +1 -0
  201. package/dist/esm/calendar/components/yearPicker.js +3 -0
  202. package/dist/esm/calendar/consts.d.ts +7 -0
  203. package/dist/esm/calendar/consts.d.ts.map +1 -0
  204. package/dist/esm/calendar/consts.js +19 -0
  205. package/dist/esm/calendar/hooks/index.d.ts +5 -0
  206. package/dist/esm/calendar/hooks/index.d.ts.map +1 -0
  207. package/dist/esm/calendar/hooks/index.js +4 -0
  208. package/dist/esm/calendar/hooks/useBoundaries.d.ts +12 -0
  209. package/dist/esm/calendar/hooks/useBoundaries.d.ts.map +1 -0
  210. package/dist/esm/calendar/hooks/useBoundaries.js +12 -0
  211. package/dist/esm/calendar/hooks/useCalendar.d.ts +8 -0
  212. package/dist/esm/calendar/hooks/useCalendar.d.ts.map +1 -0
  213. package/dist/esm/calendar/hooks/useCalendar.js +139 -0
  214. package/dist/esm/calendar/hooks/useDefaultViewMonth.d.ts +8 -0
  215. package/dist/esm/calendar/hooks/useDefaultViewMonth.d.ts.map +1 -0
  216. package/dist/esm/calendar/hooks/useDefaultViewMonth.js +17 -0
  217. package/dist/esm/calendar/hooks/useSelectedDate.d.ts +15 -0
  218. package/dist/esm/calendar/hooks/useSelectedDate.d.ts.map +1 -0
  219. package/dist/esm/calendar/hooks/useSelectedDate.js +16 -0
  220. package/dist/esm/calendar/index.d.ts +5 -0
  221. package/dist/esm/calendar/index.d.ts.map +1 -0
  222. package/dist/esm/calendar/index.js +4 -0
  223. package/dist/esm/calendar/theme.d.ts +8 -0
  224. package/dist/esm/calendar/theme.d.ts.map +1 -0
  225. package/dist/esm/calendar/theme.js +10 -0
  226. package/dist/esm/calendar/utils.d.ts +26 -0
  227. package/dist/esm/calendar/utils.d.ts.map +1 -0
  228. package/dist/esm/calendar/utils.js +81 -0
  229. package/dist/esm/core/theme.d.ts.map +1 -1
  230. package/dist/esm/core/theme.js +2 -4
  231. package/dist/esm/datePicker/components/pickerPanel.d.ts +6 -0
  232. package/dist/esm/datePicker/components/pickerPanel.d.ts.map +1 -0
  233. package/dist/esm/datePicker/components/pickerPanel.js +19 -0
  234. package/dist/esm/datePicker/dateInput.d.ts +11 -0
  235. package/dist/esm/datePicker/dateInput.d.ts.map +1 -0
  236. package/dist/esm/datePicker/dateInput.js +53 -0
  237. package/dist/esm/datePicker/datePicker.d.ts +5 -0
  238. package/dist/esm/datePicker/datePicker.d.ts.map +1 -0
  239. package/dist/esm/datePicker/datePicker.js +98 -0
  240. package/dist/esm/datePicker/datePicker.types.d.ts +22 -0
  241. package/dist/esm/datePicker/datePicker.types.d.ts.map +1 -0
  242. package/dist/esm/datePicker/datePicker.types.js +1 -0
  243. package/dist/esm/datePicker/index.d.ts +4 -0
  244. package/dist/esm/datePicker/index.d.ts.map +1 -0
  245. package/dist/esm/datePicker/index.js +3 -0
  246. package/dist/esm/datePicker/theme.d.ts +8 -0
  247. package/dist/esm/datePicker/theme.d.ts.map +1 -0
  248. package/dist/esm/datePicker/theme.js +10 -0
  249. package/dist/esm/footer/footer.js +1 -1
  250. package/dist/esm/header/loggedInHeader.d.ts.map +1 -1
  251. package/dist/esm/icons/baseIcons/conc/conAnalytics.d.ts +4 -0
  252. package/dist/esm/icons/baseIcons/conc/conAnalytics.d.ts.map +1 -0
  253. package/dist/esm/icons/baseIcons/conc/conAnalytics.js +6 -0
  254. package/dist/esm/icons/baseIcons/conc/conCircularEconomy.d.ts +4 -0
  255. package/dist/esm/icons/baseIcons/conc/conCircularEconomy.d.ts.map +1 -0
  256. package/dist/esm/icons/baseIcons/conc/conCircularEconomy.js +6 -0
  257. package/dist/esm/icons/baseIcons/conc/conCleanAir.d.ts +4 -0
  258. package/dist/esm/icons/baseIcons/conc/conCleanAir.d.ts.map +1 -0
  259. package/dist/esm/icons/baseIcons/conc/conCleanAir.js +5 -0
  260. package/dist/esm/icons/baseIcons/conc/conCleanWater.d.ts +4 -0
  261. package/dist/esm/icons/baseIcons/conc/conCleanWater.d.ts.map +1 -0
  262. package/dist/esm/icons/baseIcons/conc/conCleanWater.js +5 -0
  263. package/dist/esm/icons/baseIcons/conc/conDataFabric.d.ts +4 -0
  264. package/dist/esm/icons/baseIcons/conc/conDataFabric.d.ts.map +1 -0
  265. package/dist/esm/icons/baseIcons/conc/conDataFabric.js +5 -0
  266. package/dist/esm/icons/baseIcons/conc/conDeepSearch.d.ts +4 -0
  267. package/dist/esm/icons/baseIcons/conc/conDeepSearch.d.ts.map +1 -0
  268. package/dist/esm/icons/baseIcons/conc/conDeepSearch.js +6 -0
  269. package/dist/esm/icons/baseIcons/conc/conElectricCar.d.ts +4 -0
  270. package/dist/esm/icons/baseIcons/conc/conElectricCar.d.ts.map +1 -0
  271. package/dist/esm/icons/baseIcons/conc/conElectricCar.js +6 -0
  272. package/dist/esm/icons/baseIcons/conc/conEnergyEfficiency.d.ts +4 -0
  273. package/dist/esm/icons/baseIcons/conc/conEnergyEfficiency.d.ts.map +1 -0
  274. package/dist/esm/icons/baseIcons/conc/conEnergyEfficiency.js +5 -0
  275. package/dist/esm/icons/baseIcons/conc/conIdentitySafe.d.ts +4 -0
  276. package/dist/esm/icons/baseIcons/conc/conIdentitySafe.d.ts.map +1 -0
  277. package/dist/esm/icons/baseIcons/conc/conIdentitySafe.js +5 -0
  278. package/dist/esm/icons/baseIcons/conc/conMarketplace.d.ts +4 -0
  279. package/dist/esm/icons/baseIcons/conc/conMarketplace.d.ts.map +1 -0
  280. package/dist/esm/icons/baseIcons/conc/conMarketplace.js +5 -0
  281. package/dist/esm/icons/baseIcons/conc/conNetwork.d.ts +4 -0
  282. package/dist/esm/icons/baseIcons/conc/conNetwork.d.ts.map +1 -0
  283. package/dist/esm/icons/baseIcons/conc/conNetwork.js +5 -0
  284. package/dist/esm/icons/baseIcons/conc/conNotifications.d.ts +4 -0
  285. package/dist/esm/icons/baseIcons/conc/conNotifications.d.ts.map +1 -0
  286. package/dist/esm/icons/baseIcons/conc/conNotifications.js +5 -0
  287. package/dist/esm/icons/baseIcons/conc/conNotifications2.d.ts +4 -0
  288. package/dist/esm/icons/baseIcons/conc/conNotifications2.d.ts.map +1 -0
  289. package/dist/esm/icons/baseIcons/conc/conNotifications2.js +5 -0
  290. package/dist/esm/icons/baseIcons/conc/conRecycling.d.ts +4 -0
  291. package/dist/esm/icons/baseIcons/conc/conRecycling.d.ts.map +1 -0
  292. package/dist/esm/icons/baseIcons/conc/conRecycling.js +6 -0
  293. package/dist/esm/icons/baseIcons/conc/conRenewableCertificateWater.d.ts +4 -0
  294. package/dist/esm/icons/baseIcons/conc/conRenewableCertificateWater.d.ts.map +1 -0
  295. package/dist/esm/icons/baseIcons/conc/conRenewableCertificateWater.js +6 -0
  296. package/dist/esm/icons/baseIcons/conc/conRenewableCertificateWind.d.ts +4 -0
  297. package/dist/esm/icons/baseIcons/conc/conRenewableCertificateWind.d.ts.map +1 -0
  298. package/dist/esm/icons/baseIcons/conc/conRenewableCertificateWind.js +6 -0
  299. package/dist/esm/icons/baseIcons/conc/conServices.d.ts +4 -0
  300. package/dist/esm/icons/baseIcons/conc/conServices.d.ts.map +1 -0
  301. package/dist/esm/icons/baseIcons/conc/conServices.js +5 -0
  302. package/dist/esm/icons/baseIcons/conc/conSmartPowerGrid.d.ts +4 -0
  303. package/dist/esm/icons/baseIcons/conc/conSmartPowerGrid.d.ts.map +1 -0
  304. package/dist/esm/icons/baseIcons/conc/conSmartPowerGrid.js +6 -0
  305. package/dist/esm/icons/baseIcons/conc/conSustainableForestry.d.ts +4 -0
  306. package/dist/esm/icons/baseIcons/conc/conSustainableForestry.d.ts.map +1 -0
  307. package/dist/esm/icons/baseIcons/conc/conSustainableForestry.js +5 -0
  308. package/dist/esm/icons/baseIcons/conc/conVeracityAdapter.d.ts +4 -0
  309. package/dist/esm/icons/baseIcons/conc/conVeracityAdapter.d.ts.map +1 -0
  310. package/dist/esm/icons/baseIcons/conc/conVeracityAdapter.js +5 -0
  311. package/dist/esm/icons/baseIcons/conc/conWindmill.d.ts +4 -0
  312. package/dist/esm/icons/baseIcons/conc/conWindmill.d.ts.map +1 -0
  313. package/dist/esm/icons/baseIcons/conc/conWindmill.js +6 -0
  314. package/dist/esm/icons/baseIcons/icons.d.ts +24 -3
  315. package/dist/esm/icons/baseIcons/icons.d.ts.map +1 -1
  316. package/dist/esm/icons/baseIcons/icons.js +24 -3
  317. package/dist/esm/icons/baseIcons/types.d.ts +1 -1
  318. package/dist/esm/icons/baseIcons/types.d.ts.map +1 -1
  319. package/dist/esm/index.d.ts +2 -0
  320. package/dist/esm/index.d.ts.map +1 -1
  321. package/dist/esm/index.js +2 -0
  322. package/dist/esm/input/consts.js +1 -1
  323. package/dist/esm/input/helpText.d.ts.map +1 -1
  324. package/dist/esm/input/helpText.js +1 -1
  325. package/dist/esm/input/input.d.ts.map +1 -1
  326. package/dist/esm/input/input.js +5 -1
  327. package/dist/esm/input/inputInput.d.ts.map +1 -1
  328. package/dist/esm/input/inputInput.js +1 -0
  329. package/dist/esm/tabs/tabs.d.ts.map +1 -1
  330. package/dist/esm/tabs/tabs.js +7 -4
  331. package/dist/esm/tabs/tabsNavBar.d.ts.map +1 -1
  332. package/dist/esm/tabs/tabsNavBar.js +1 -1
  333. package/dist/esm/tabs/theme.d.ts.map +1 -1
  334. package/dist/esm/tabs/theme.js +0 -1
  335. package/dist/esm/theme/components.d.ts +12 -0
  336. package/dist/esm/theme/components.d.ts.map +1 -1
  337. package/dist/esm/theme/components.js +4 -0
  338. package/dist/esm/theme/defaultTheme.d.ts +12 -0
  339. package/dist/esm/theme/defaultTheme.d.ts.map +1 -1
  340. package/dist/esm/utils/dates.d.ts +20 -0
  341. package/dist/esm/utils/dates.d.ts.map +1 -1
  342. package/dist/esm/utils/dates.js +51 -0
  343. package/dist/esm/utils/formatDate.d.ts +15 -0
  344. package/dist/esm/utils/formatDate.d.ts.map +1 -0
  345. package/dist/esm/utils/formatDate.js +36 -0
  346. package/dist/esm/utils/index.d.ts +1 -0
  347. package/dist/esm/utils/index.d.ts.map +1 -1
  348. package/dist/esm/utils/index.js +1 -0
  349. package/package.json +1 -1
  350. package/src/calendar/calendar.styles.ts +75 -0
  351. package/src/calendar/calendar.tsx +145 -0
  352. package/src/calendar/calendar.types.ts +91 -0
  353. package/src/calendar/components/calendarHeader.tsx +56 -0
  354. package/src/calendar/components/dayPicker.tsx +55 -0
  355. package/src/calendar/components/index.ts +5 -0
  356. package/src/calendar/components/monthPicker.tsx +26 -0
  357. package/src/calendar/components/timeUnitHeader.tsx +47 -0
  358. package/src/calendar/components/yearPicker.tsx +24 -0
  359. package/src/calendar/consts.ts +24 -0
  360. package/src/calendar/hooks/index.ts +4 -0
  361. package/src/calendar/hooks/useBoundaries.ts +16 -0
  362. package/src/calendar/hooks/useCalendar.ts +181 -0
  363. package/src/calendar/hooks/useDefaultViewMonth.ts +18 -0
  364. package/src/calendar/hooks/useSelectedDate.ts +20 -0
  365. package/src/calendar/index.ts +4 -0
  366. package/src/calendar/theme.ts +14 -0
  367. package/src/calendar/utils.ts +100 -0
  368. package/src/core/theme.ts +2 -4
  369. package/src/datePicker/components/pickerPanel.tsx +22 -0
  370. package/src/datePicker/dateInput.tsx +77 -0
  371. package/src/datePicker/datePicker.tsx +172 -0
  372. package/src/datePicker/datePicker.types.ts +25 -0
  373. package/src/datePicker/index.ts +3 -0
  374. package/src/datePicker/theme.ts +14 -0
  375. package/src/footer/footer.tsx +1 -1
  376. package/src/header/loggedInHeader.tsx +0 -1
  377. package/src/icons/baseIcons/conc/conAnalytics.ts +9 -0
  378. package/src/icons/baseIcons/conc/conCircularEconomy.ts +9 -0
  379. package/src/icons/baseIcons/conc/conCleanAir.ts +8 -0
  380. package/src/icons/baseIcons/conc/conCleanWater.ts +8 -0
  381. package/src/icons/baseIcons/conc/conDataFabric.ts +8 -0
  382. package/src/icons/baseIcons/conc/conDeepSearch.ts +9 -0
  383. package/src/icons/baseIcons/conc/conElectricCar.ts +9 -0
  384. package/src/icons/baseIcons/conc/conEnergyEfficiency.ts +8 -0
  385. package/src/icons/baseIcons/conc/conIdentitySafe.ts +8 -0
  386. package/src/icons/baseIcons/conc/conMarketplace.ts +8 -0
  387. package/src/icons/baseIcons/conc/conNetwork.ts +8 -0
  388. package/src/icons/baseIcons/conc/conNotifications.ts +8 -0
  389. package/src/icons/baseIcons/conc/conNotifications2.ts +8 -0
  390. package/src/icons/baseIcons/conc/conRecycling.ts +9 -0
  391. package/src/icons/baseIcons/conc/conRenewableCertificateWater.ts +9 -0
  392. package/src/icons/baseIcons/conc/conRenewableCertificateWind.ts +9 -0
  393. package/src/icons/baseIcons/conc/conServices.ts +8 -0
  394. package/src/icons/baseIcons/conc/conSmartPowerGrid.ts +9 -0
  395. package/src/icons/baseIcons/conc/conSustainableForestry.ts +8 -0
  396. package/src/icons/baseIcons/conc/conVeracityAdapter.ts +8 -0
  397. package/src/icons/baseIcons/conc/conWindmill.ts +9 -0
  398. package/src/icons/baseIcons/icons.ts +24 -3
  399. package/src/icons/baseIcons/types.ts +24 -3
  400. package/src/index.ts +2 -0
  401. package/src/input/consts.ts +1 -1
  402. package/src/input/helpText.tsx +1 -0
  403. package/src/input/input.tsx +5 -1
  404. package/src/input/inputInput.tsx +1 -0
  405. package/src/tabs/tabs.tsx +7 -4
  406. package/src/tabs/tabsNavBar.tsx +3 -1
  407. package/src/tabs/theme.ts +0 -1
  408. package/src/theme/components.ts +4 -0
  409. package/src/utils/dates.ts +60 -0
  410. package/src/utils/formatDate.ts +63 -0
  411. package/src/utils/index.ts +1 -0
@@ -0,0 +1,15 @@
1
+ export type DateFormat = 'DD MM YYYY' | 'DD MM YYYY, HH:MM' | 'DD MMM' | 'DD MMM YYYY' | 'DD MMM YYYY, HH:MM' | 'DD MMM, HH:MM' | 'HH:MM' | 'MMM D, YYYY' | 'YYYY/MM/DD' | 'YYYY-MM-DD' | 'YYYY/MM/DD, HH:MM' | 'YYYY-MM-DD, HH:MM' | 'YYYY-MM-DD, HH:MM:SS';
2
+ export type FormatDateOptions = Intl.DateTimeFormatOptions & {
3
+ locales?: string | string[];
4
+ };
5
+ /** Predefined selection of date formats using DateTimeFormatOptions. */
6
+ export declare const dateFormats: Record<DateFormat, FormatDateOptions>;
7
+ /**
8
+ * Structures given date string, milliseconds number or Date object according to the chosen format.
9
+ * Uses toLocalDateString internally. Predefined formats specify initial options, which can be overwritten.
10
+ * @param date - string, number or Date object accepted by Date() constructor
11
+ * @param format - predefined configuration of DateTimeFormatOptions
12
+ * @param options - configuration of toLocaleDateString method
13
+ */
14
+ export declare function formatDate(date?: string | number | Date, format?: DateFormat, options?: FormatDateOptions): string;
15
+ //# sourceMappingURL=formatDate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatDate.d.ts","sourceRoot":"","sources":["../../../src/utils/formatDate.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAClB,YAAY,GACZ,mBAAmB,GACnB,QAAQ,GACR,aAAa,GACb,oBAAoB,GACpB,eAAe,GACf,OAAO,GACP,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,mBAAmB,GACnB,mBAAmB,GACnB,sBAAsB,CAAA;AAE1B,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,GAAG;IAC3D,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAC5B,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,iBAAiB,CAc7D,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAC7B,MAAM,GAAE,UAAyB,EACjC,OAAO,CAAC,EAAE,iBAAiB,UAgB5B"}
@@ -0,0 +1,36 @@
1
+ /** Predefined selection of date formats using DateTimeFormatOptions. */
2
+ export const dateFormats = {
3
+ 'DD MM YYYY': { year: 'numeric', month: '2-digit', day: '2-digit' },
4
+ 'DD MM YYYY, HH:MM': { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' },
5
+ 'DD MMM': { month: 'short', day: '2-digit' },
6
+ 'DD MMM YYYY': { year: 'numeric', month: 'short', day: '2-digit' },
7
+ 'DD MMM YYYY, HH:MM': { year: 'numeric', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' },
8
+ 'DD MMM, HH:MM': { month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' },
9
+ 'HH:MM': { locales: 'en-GB', hour: '2-digit', minute: '2-digit', hourCycle: 'h23' },
10
+ 'MMM D, YYYY': { locales: 'en-US', year: 'numeric', month: 'short', day: 'numeric' },
11
+ 'YYYY/MM/DD': { locales: 'en-ZA' },
12
+ 'YYYY-MM-DD': { locales: 'fr-CA' },
13
+ 'YYYY/MM/DD, HH:MM': { locales: 'en-ZA', hour: '2-digit', minute: '2-digit' },
14
+ 'YYYY-MM-DD, HH:MM': { locales: 'fr-CA', timeStyle: 'short' },
15
+ 'YYYY-MM-DD, HH:MM:SS': { locales: 'fr-CA' }
16
+ };
17
+ /**
18
+ * Structures given date string, milliseconds number or Date object according to the chosen format.
19
+ * Uses toLocalDateString internally. Predefined formats specify initial options, which can be overwritten.
20
+ * @param date - string, number or Date object accepted by Date() constructor
21
+ * @param format - predefined configuration of DateTimeFormatOptions
22
+ * @param options - configuration of toLocaleDateString method
23
+ */
24
+ export function formatDate(date, format = 'DD MM YYYY', options) {
25
+ const formatOptions = dateFormats[format];
26
+ const { locales, ...mergedOptions } = { ...formatOptions, ...options };
27
+ if (format === 'YYYY-MM-DD, HH:MM:SS' || format === 'YYYY-MM-DD, HH:MM') {
28
+ return date
29
+ ? new Date(date).toLocaleDateString(locales) + ', ' + new Date(date).toLocaleTimeString(undefined, mergedOptions)
30
+ : '';
31
+ }
32
+ if (format === 'HH:MM') {
33
+ return date ? new Date(date).toLocaleTimeString(locales, mergedOptions) : '';
34
+ }
35
+ return date ? new Date(date).toLocaleDateString(locales, mergedOptions) : '';
36
+ }
@@ -3,6 +3,7 @@ export * from './assertion';
3
3
  export * from './consts';
4
4
  export * from './dates';
5
5
  export * from './dom';
6
+ export * from './formatDate';
6
7
  export * from './function';
7
8
  export * from './number';
8
9
  export * from './object';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA;AACrB,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA"}
@@ -3,6 +3,7 @@ export * from './assertion';
3
3
  export * from './consts';
4
4
  export * from './dates';
5
5
  export * from './dom';
6
+ export * from './formatDate';
6
7
  export * from './function';
7
8
  export * from './number';
8
9
  export * from './object';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veracity/vui",
3
- "version": "2.14.0-beta.0",
3
+ "version": "2.14.0",
4
4
  "description": "Veracity UI is a React component library crafted for use within Veracity applications and pages. Based on Styled Components and @xstyled.",
5
5
  "module": "./dist/esm/index.js",
6
6
  "main": "./dist/cjs/index.js",
@@ -0,0 +1,75 @@
1
+ import Box from '../box'
2
+ import { css, styled, th } from '../core'
3
+ import Link from '../link'
4
+ import { ItemProps } from './calendar.types'
5
+
6
+ export const boundary = css`
7
+ background-color: ${th.color('seaBlue.main')};
8
+ color: white !important;
9
+ border-radius: 0;
10
+ `
11
+
12
+ export const current = css`
13
+ background-color: ${th.color('seaBlue.main')};
14
+ color: white !important;
15
+ border-radius: 0;
16
+ `
17
+
18
+ export const isDisabled = css`
19
+ color: ${th.color('sandstone.main')} !important;
20
+ cursor: not-allowed;
21
+ `
22
+
23
+ export const isHidden = css`
24
+ color: ${th.color('darkBlue.75')} !important;
25
+ `
26
+
27
+ export const isToday = css`
28
+ border: 1px solid ${th.color('seaBlue.main')};
29
+ `
30
+
31
+ export const hover = css`
32
+ background-color: ${th.color('skyBlue.85')};
33
+ color: ${th.color('seaBlue.main')};
34
+ border-radius: 0;
35
+ `
36
+
37
+ export const isSelected = css`
38
+ background-color: ${th.color('skyBlue.85')};
39
+ border-radius: 0;
40
+ color: white;
41
+ `
42
+
43
+ export const CalendarItem = styled(Link)<ItemProps>`
44
+ aspect-ratio: 1;
45
+ border: 0;
46
+ cursor: pointer;
47
+ height: 100%;
48
+ justify-content: center;
49
+ text-decoration: none;
50
+ width: 100%;
51
+
52
+ ${p => p.isHidden && isHidden}
53
+ ${p => p.isToday && isToday}
54
+ ${p => p.isDisabled && isDisabled}
55
+ ${p => p.isSelected && isSelected}
56
+ ${p => p.boundary && boundary}
57
+ ${p => p.current && current}
58
+
59
+ &:hover {
60
+ color: inherit;
61
+ text-decoration: none;
62
+
63
+ ${p => !p.isDisabled && hover}
64
+ }
65
+ `
66
+
67
+ export const CalendarItemsContainer = styled(Box)`
68
+ align-items: center;
69
+ column-gap: 0;
70
+ display: grid;
71
+ grid-template-columns: repeat(3, 1fr);
72
+ grid-template-rows: repeat(4, 62px);
73
+ justify-items: center;
74
+ row-gap: 0;
75
+ `
@@ -0,0 +1,145 @@
1
+ import React, { useEffect, useRef, useState } from 'react'
2
+
3
+ import Box from '../box'
4
+ import { omitThemingProps, useStyleConfig, vui } from '../core'
5
+ import { cs } from '../utils'
6
+ import { CalendarProps, DateRange, FlowDirection, TimeResult, TimeUnitMode } from './calendar.types'
7
+ import { CalendarHeader, DayPicker, MonthPicker, YearPicker } from './components'
8
+ import { useCalendar, useDefaultViewMonth } from './hooks'
9
+ import {
10
+ isDay,
11
+ isExact,
12
+ isFrom,
13
+ isMonth,
14
+ isTo,
15
+ isYear,
16
+ processSelectMonth,
17
+ processSelectYear,
18
+ processViewDate
19
+ } from './utils'
20
+
21
+ /** [Beta] Displays calendar. */
22
+ export const Calendar = vui<'div', CalendarProps>((props, ref) => {
23
+ const {
24
+ boundaries,
25
+ className,
26
+ fixedNumberOfWeeks = false,
27
+ disabled,
28
+ isStartDate,
29
+ mode,
30
+ onSelectDates,
31
+ selectedDates,
32
+ ...rest
33
+ } = omitThemingProps(props)
34
+ const styles = useStyleConfig('Calendar', props)
35
+
36
+ const currentDateRef = useRef(isFrom(mode) || isExact(mode) ? selectedDates?.startDate : selectedDates?.endDate)
37
+
38
+ /**
39
+ * Effect to reset viewDate when selectedDates changes (onReset)
40
+ */
41
+ useEffect(() => {
42
+ currentDateRef.current = isFrom(mode) || isExact(mode) ? selectedDates?.startDate : selectedDates?.endDate
43
+ currentDateRef.current && setViewDate(currentDateRef.current)
44
+ }, [selectedDates])
45
+
46
+ const calendarRef = useRef<TimeResult | null>(null)
47
+
48
+ const defaultViewMonth = useDefaultViewMonth({
49
+ boundaries,
50
+ selectedDate: currentDateRef.current,
51
+ isStartDate
52
+ })
53
+
54
+ const [timeUnitMode, setTimeUnitMode] = useState<TimeUnitMode>('day')
55
+ const [viewDate, setViewDate] = useState<Date>(defaultViewMonth)
56
+
57
+ /**
58
+ * Handles clicking next/prev in header
59
+ */
60
+ const onChangeViewItem = (direction: FlowDirection) => {
61
+ const newViewMonth = processViewDate(viewDate, direction, timeUnitMode, calendarRef?.current?.items)
62
+ newViewMonth && setViewDate(newViewMonth)
63
+ }
64
+
65
+ /**
66
+ * Handles clicking on a day
67
+ */
68
+ const onSelectDay = (clickedDate: Date) => () => {
69
+ updateDateState(clickedDate)
70
+ setViewDate(clickedDate)
71
+ }
72
+
73
+ /**
74
+ * Handles clicking on a month
75
+ */
76
+ const onSelectMonth = (clickedDate: Date) => () => {
77
+ const processedNewDate = processSelectMonth(clickedDate, mode, boundaries)
78
+ updateDateState(processedNewDate)
79
+ setViewDate(processedNewDate)
80
+ setTimeUnitMode('day')
81
+ }
82
+
83
+ /**
84
+ * Handles clicking on a year
85
+ */
86
+ const onSelectYear = (clickedDate: Date) => () => {
87
+ const processedNewDate = processSelectYear(clickedDate, mode, boundaries)
88
+ updateDateState(processedNewDate)
89
+ setViewDate(processedNewDate)
90
+ setTimeUnitMode('month')
91
+ }
92
+
93
+ /**
94
+ * Send update date to parent component
95
+ */
96
+ const updateDateState = (newDate: Date) => {
97
+ const dateRange: DateRange = { ...selectedDates }
98
+
99
+ if (dateRange) {
100
+ if (isTo(mode)) dateRange.endDate = newDate
101
+ else dateRange.startDate = newDate
102
+ }
103
+
104
+ if (newDate && !disabled) onSelectDates && onSelectDates(dateRange)
105
+ }
106
+
107
+ const calendar = (calendarRef.current = useCalendar({
108
+ boundaries,
109
+ mode,
110
+ selectedDates,
111
+ timeUnitMode,
112
+ viewDate,
113
+ fixedNumberOfWeeks
114
+ }))
115
+
116
+ return (
117
+ <Box
118
+ className={cs('vui-calendar', className)}
119
+ column
120
+ cursor="default"
121
+ minW={280}
122
+ position="relative"
123
+ ref={ref}
124
+ w="fit-content"
125
+ {...styles}
126
+ {...rest}
127
+ >
128
+ <CalendarHeader
129
+ nextDisabled={calendar.nextDisabled}
130
+ onChangeViewItem={onChangeViewItem}
131
+ onSetTimeUnitMode={(mode: TimeUnitMode) => setTimeUnitMode(mode)}
132
+ prevDisabled={calendar.prevDisabled}
133
+ timeUnitMode={timeUnitMode}
134
+ viewMonth={viewDate}
135
+ />
136
+ {isDay(timeUnitMode) && <DayPicker calendar={calendar} onSelectDay={onSelectDay} />}
137
+ {isMonth(timeUnitMode) && <MonthPicker calendar={calendar} onSelectMonth={onSelectMonth} />}
138
+ {isYear(timeUnitMode) && <YearPicker calendar={calendar} onSelectYear={onSelectYear} />}
139
+ </Box>
140
+ )
141
+ })
142
+
143
+ Calendar.displayName = 'Calendar'
144
+
145
+ export default Calendar
@@ -0,0 +1,91 @@
1
+ import { BoxProps } from '../box'
2
+ import { ThemingProps } from '../theme'
3
+
4
+ export interface DateRange {
5
+ startDate?: Date
6
+ endDate?: Date
7
+ }
8
+
9
+ export type FlowDirection = 'next' | 'prev'
10
+
11
+ /**
12
+ * Mode for this calendar
13
+ * Should it handle from date, to date or single date mode
14
+ */
15
+ export type CalendarMode = 'exact' | 'from' | 'to' | 'range'
16
+
17
+ export interface DefaultViewMonthProps {
18
+ boundaries?: DateRange
19
+ isStartDate?: boolean
20
+ selectedDate?: Date
21
+ }
22
+
23
+ export interface MonthProps {
24
+ boundaries?: DateRange
25
+ fixedNumberOfWeeks?: boolean
26
+ mode: CalendarMode
27
+ selectedDates?: DateRange
28
+ timeUnitMode?: TimeUnitMode
29
+ viewDate: Date
30
+ }
31
+
32
+ export type ItemProps = {
33
+ boundary?: boolean
34
+ current?: boolean
35
+ isDisabled?: boolean
36
+ isHidden?: boolean
37
+ isToday?: boolean
38
+ isSelected?: boolean
39
+ }
40
+
41
+ /**
42
+ * Single time item like day in a month, month in a year and year in multiple years
43
+ */
44
+ export interface TimeItem {
45
+ /** item is at the edge for a range, marking either start or end of it */
46
+ boundary: boolean
47
+ /** item is clicked and selected by the user */
48
+ current: boolean
49
+ /** the actual time item */
50
+ date: Date
51
+ /** disabled because out of bounds */
52
+ isDisabled: boolean
53
+ /** item should be hidden, for days we hide days that are not in the current month,
54
+ * but still are rendered due to weekDays */
55
+ isHidden: boolean
56
+ /** item is in the selected range between two dates */
57
+ isSelected: boolean
58
+ /** the date is today*/
59
+ isToday: boolean
60
+ }
61
+
62
+ /**
63
+ * All the date items in a view and whether next/prev button should be disabled
64
+ */
65
+ export interface TimeResult {
66
+ items: TimeItem[]
67
+ nextDisabled: boolean
68
+ prevDisabled: boolean
69
+ }
70
+
71
+ /**
72
+ * Time mode for calendar, display days in month, months in year or years in multiple years
73
+ */
74
+ export type TimeUnitMode = 'day' | 'month' | 'year'
75
+
76
+ export type CalendarProps = Omit<BoxProps, 'size' | 'variant'> &
77
+ ThemingProps<'Calendar'> & {
78
+ /** Allowed range to select from */
79
+ boundaries?: DateRange
80
+ className?: string
81
+ disabled?: boolean
82
+ /** Including always 6 weeks into a month (used to have stable height in the calendar) */
83
+ fixedNumberOfWeeks?: boolean
84
+ isStartDate?: boolean
85
+ /** Calendar select mode: 'exact' | 'from' | 'to' | 'range' @default 'exact' */
86
+ mode: CalendarMode
87
+ /** On selecting a day */
88
+ onSelectDates?: (value: DateRange) => void
89
+ /** Selected date */
90
+ selectedDates?: DateRange
91
+ }
@@ -0,0 +1,56 @@
1
+ import React, { FC } from 'react'
2
+
3
+ import Box from '../../box'
4
+ import { IconButton } from '../../button'
5
+ import { cs } from '../../utils'
6
+ import { FlowDirection, TimeUnitMode } from '../calendar.types'
7
+ import { TimeUnitHeader } from './timeUnitHeader'
8
+
9
+ type Props = {
10
+ nextDisabled?: boolean
11
+ onChangeViewItem: (direction: FlowDirection) => void
12
+ onSetTimeUnitMode: (mode: TimeUnitMode) => void
13
+ prevDisabled?: boolean
14
+ timeUnitMode: TimeUnitMode
15
+ viewMonth: Date
16
+ }
17
+
18
+ const size = 40
19
+
20
+ /**
21
+ * Header for the calendar
22
+ */
23
+ export const CalendarHeader: FC<Props> = ({
24
+ nextDisabled,
25
+ onChangeViewItem,
26
+ onSetTimeUnitMode,
27
+ prevDisabled,
28
+ timeUnitMode,
29
+ viewMonth
30
+ }) => (
31
+ <Box borderBottom="1px solid lightgray" centerV className={cs('vui-calendar-header')}>
32
+ <Box className="vui-calendar-header-left">
33
+ <TimeUnitHeader onSetTimeUnitMode={onSetTimeUnitMode} timeUnitMode={timeUnitMode} viewMonth={viewMonth} />
34
+ </Box>
35
+ <Box className="vui-calendar-header-right" flex="1" justify="flex-end">
36
+ <IconButton
37
+ className="icon"
38
+ disabled={prevDisabled}
39
+ h={size}
40
+ icon="falChevronLeft"
41
+ onClick={() => onChangeViewItem('prev')}
42
+ size="sm"
43
+ w={size}
44
+ />
45
+ <IconButton
46
+ className="icon"
47
+ disabled={nextDisabled}
48
+ h={size}
49
+ icon="falChevronRight"
50
+ onClick={() => onChangeViewItem('next')}
51
+ size="sm"
52
+ w={size}
53
+ />
54
+ </Box>
55
+ </Box>
56
+ )
@@ -0,0 +1,55 @@
1
+ import React from 'react'
2
+
3
+ import Box from '../../box'
4
+ import { styled, th } from '../../core'
5
+ import { cs } from '../../utils'
6
+ import { CalendarItem, CalendarItemsContainer } from '../calendar.styles'
7
+ import { ItemProps, TimeResult } from '../calendar.types'
8
+ import { weekDays } from '../consts'
9
+
10
+ type DayPickerProps = {
11
+ calendar: TimeResult
12
+ onSelectDay?: (date: Date) => void
13
+ }
14
+
15
+ const DayItem = styled(CalendarItem)<ItemProps>`
16
+ aspect-ratio: 1;
17
+ position: relative;
18
+ font-size: 14px;
19
+ font-weight: 500;
20
+ width: 40px;
21
+ height: 40px;
22
+ color: ${th.color('seaBlue.main')};
23
+ `
24
+
25
+ const DaysContainer = styled(CalendarItemsContainer)`
26
+ grid-template-columns: repeat(7, 1fr);
27
+ grid-template-rows: auto;
28
+ `
29
+
30
+ export const DayPicker = ({ calendar, onSelectDay }: DayPickerProps) => (
31
+ <DaysContainer className={cs('vui-day-picker')} mt={1} wrap>
32
+ {weekDays.map((day, index) => (
33
+ <Box
34
+ border={0}
35
+ className="dayHeader"
36
+ color="seaBlue.main"
37
+ fontSize={16}
38
+ fontWeight={500}
39
+ key={`week-day-${index}`}
40
+ >
41
+ {day}
42
+ </Box>
43
+ ))}
44
+ {calendar.items.map(item => (
45
+ <DayItem
46
+ className={cs('vui-day-item')}
47
+ key={item.date.getTime()}
48
+ onClick={(!item.isDisabled && onSelectDay?.(item.date)) || undefined}
49
+ {...item}
50
+ >
51
+ {item.date.getUTCDate()}
52
+ </DayItem>
53
+ ))}
54
+ </DaysContainer>
55
+ )
@@ -0,0 +1,5 @@
1
+ export * from './dayPicker'
2
+ export * from './calendarHeader'
3
+ export * from './monthPicker'
4
+ export * from './timeUnitHeader'
5
+ export * from './yearPicker'
@@ -0,0 +1,26 @@
1
+ import React from 'react'
2
+
3
+ import { cs } from '../../utils'
4
+ import { CalendarItem as MonthItem, CalendarItemsContainer } from '../calendar.styles'
5
+ import { TimeResult } from '../calendar.types'
6
+ import { monthsShort } from '../consts'
7
+
8
+ type MonthPickerProps = {
9
+ calendar: TimeResult
10
+ onSelectMonth?: (date: Date) => void
11
+ }
12
+
13
+ export const MonthPicker = ({ calendar, onSelectMonth }: MonthPickerProps) => (
14
+ <CalendarItemsContainer className={cs('vui-month-picker')} gridTemplateRows="repeat(4, 65px)">
15
+ {calendar.items.map(item => (
16
+ <MonthItem
17
+ fontWeight={500}
18
+ key={item.date.getTime()}
19
+ onClick={(!item.isDisabled && onSelectMonth && onSelectMonth(item.date)) || undefined}
20
+ {...item}
21
+ >
22
+ {monthsShort[item.date.getUTCMonth()]}
23
+ </MonthItem>
24
+ ))}
25
+ </CalendarItemsContainer>
26
+ )
@@ -0,0 +1,47 @@
1
+ import React, { FC } from 'react'
2
+
3
+ import { Box } from '../../box'
4
+ import { Button } from '../../button'
5
+ import { cs } from '../../utils'
6
+ import { TimeUnitMode } from '../calendar.types'
7
+ import { months } from '../consts'
8
+ import { isDay, isMonth, isYear } from '../utils'
9
+
10
+ const h = 40
11
+ const fontSize = 16
12
+
13
+ type TimeUnitHeaderProps = {
14
+ onSetTimeUnitMode: (mode: TimeUnitMode) => void
15
+ timeUnitMode: TimeUnitMode
16
+ viewMonth: Date
17
+ }
18
+
19
+ /**
20
+ * Displays the header title with the month and year being viewed
21
+ */
22
+ export const TimeUnitHeader: FC<TimeUnitHeaderProps> = ({ onSetTimeUnitMode, timeUnitMode, viewMonth }) => {
23
+ return (
24
+ <Box center className={cs('vui-time-unit-header')} cursor="pointer" flex="1" justify="start">
25
+ {isDay(timeUnitMode) && (
26
+ <>
27
+ <Button fontSize={fontSize} h={h} onClick={() => onSetTimeUnitMode('month')} variant="tertiaryDark">
28
+ {months[viewMonth.getUTCMonth()]}
29
+ </Button>
30
+ <Button fontSize={fontSize} h={h} onClick={() => onSetTimeUnitMode('year')} variant="tertiaryDark">
31
+ {viewMonth.getUTCFullYear()}
32
+ </Button>
33
+ </>
34
+ )}
35
+ {isMonth(timeUnitMode) && (
36
+ <Button fontSize={fontSize} h={h} onClick={() => onSetTimeUnitMode('year')} variant="tertiaryDark">
37
+ {viewMonth.getUTCFullYear()}
38
+ </Button>
39
+ )}
40
+ {isYear(timeUnitMode) && (
41
+ <Button fontSize={fontSize} h={h} onClick={() => onSetTimeUnitMode('day')} variant="tertiaryDark">
42
+ Year
43
+ </Button>
44
+ )}
45
+ </Box>
46
+ )
47
+ }
@@ -0,0 +1,24 @@
1
+ import React from 'react'
2
+
3
+ import { CalendarItem as YearItem, CalendarItemsContainer } from '../calendar.styles'
4
+ import { TimeResult } from '../calendar.types'
5
+
6
+ type YearPickerProps = {
7
+ calendar: TimeResult
8
+ onSelectYear?: (date: Date) => void
9
+ }
10
+
11
+ export const YearPicker = ({ calendar, onSelectYear }: YearPickerProps) => (
12
+ <CalendarItemsContainer className="vui-year-picker">
13
+ {calendar.items.map(item => (
14
+ <YearItem
15
+ fontWeight={500}
16
+ key={item.date.getTime()}
17
+ onClick={(!item.isDisabled && onSelectYear?.(item.date)) || undefined}
18
+ {...item}
19
+ >
20
+ {item.date.getUTCFullYear()}
21
+ </YearItem>
22
+ ))}
23
+ </CalendarItemsContainer>
24
+ )
@@ -0,0 +1,24 @@
1
+ export const viewYears = 12
2
+
3
+ export const maxDateTimestamp = '9000-12-31T23:59:59Z'
4
+
5
+ export const minDateTimestamp = '1753-01-02T00:00:00Z'
6
+
7
+ export const months = [
8
+ 'January',
9
+ 'February',
10
+ 'March',
11
+ 'April',
12
+ 'May',
13
+ 'June',
14
+ 'July',
15
+ 'August',
16
+ 'September',
17
+ 'October',
18
+ 'November',
19
+ 'December'
20
+ ]
21
+
22
+ export const monthsShort = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
23
+
24
+ export const weekDays = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']
@@ -0,0 +1,4 @@
1
+ export * from './useBoundaries'
2
+ export * from './useCalendar'
3
+ export * from './useDefaultViewMonth'
4
+ export * from './useSelectedDate'
@@ -0,0 +1,16 @@
1
+ import { DateRange } from '../calendar.types'
2
+ import { maxDateTimestamp, minDateTimestamp } from '../consts'
3
+
4
+ /**
5
+ * Calculates boundaries for max/min dates allowed
6
+ * Memoized so it will only recalculate when the boundaries changes
7
+ */
8
+ export const useBoundaries = ({ boundaries }: { boundaries?: DateRange }) => {
9
+ const min = new Date(minDateTimestamp)
10
+ const max = new Date(maxDateTimestamp)
11
+
12
+ const minDateTime = boundaries?.startDate || min
13
+ const maxDateTime = boundaries?.endDate || max
14
+
15
+ return { maxDateTime, minDateTime }
16
+ }