@via-profit/ui-kit 0.2.6 → 0.4.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 (498) hide show
  1. package/Accordion/AccordionContainer.js +11 -11
  2. package/Accordion/AccordionContent.js +16 -7
  3. package/Accordion/AccordionHeader.d.ts +22 -0
  4. package/Accordion/AccordionHeader.js +35 -18
  5. package/Accordion/Chevron.js +3 -3
  6. package/Accordion/index.d.ts +12 -8
  7. package/Accordion/index.js +21 -6
  8. package/Autocomplete/AutocompleteContainer.d.ts +5 -9
  9. package/Autocomplete/AutocompleteContainer.js +125 -57
  10. package/Autocomplete/AutocompleteTagsInput.d.ts +15 -0
  11. package/Autocomplete/AutocompleteTagsInput.js +65 -0
  12. package/Autocomplete/context.d.ts +1 -0
  13. package/Autocomplete/context.js +5 -5
  14. package/Autocomplete/index.js +10 -7
  15. package/Avatar/AvatarBase.js +1 -1
  16. package/Avatar/AvatarContainer.js +6 -11
  17. package/Avatar/AvatarPicture.d.ts +9 -1
  18. package/Avatar/AvatarPicture.js +4 -3
  19. package/Avatar/index.js +10 -10
  20. package/Badge/BadgeBase.d.ts +9 -0
  21. package/Badge/BadgeBase.js +21 -3
  22. package/Badge/BadgeContainer.js +2 -1
  23. package/Badge/BadgeDeleteButton.d.ts +1 -1
  24. package/Badge/BadgeOutlined.d.ts +1 -1
  25. package/Badge/BadgeOutlined.js +5 -80
  26. package/Badge/BadgeStandard.d.ts +1 -1
  27. package/Badge/BadgeStandard.js +5 -91
  28. package/Badge/BadgeStyled.d.ts +5 -0
  29. package/Badge/BadgeStyled.js +125 -0
  30. package/Badge/index.d.ts +2 -2
  31. package/Badge/index.js +3 -20
  32. package/Button/ButtonBase.js +8 -4
  33. package/Button/ButtonContainer.js +2 -0
  34. package/Button/ButtonIconWrapper.d.ts +1 -1
  35. package/Button/ButtonOutlined.d.ts +1 -1
  36. package/Button/ButtonOutlined.js +5 -80
  37. package/Button/ButtonPlain.d.ts +1 -1
  38. package/Button/ButtonPlain.js +5 -85
  39. package/Button/ButtonStandard.d.ts +1 -1
  40. package/Button/ButtonStandard.js +5 -97
  41. package/Button/ButtonStyled.d.ts +10 -0
  42. package/Button/ButtonStyled.js +205 -0
  43. package/Button/index.d.ts +5 -5
  44. package/Button/index.js +3 -24
  45. package/ButtonGroup/ButtonGroupContext.d.ts +21 -0
  46. package/ButtonGroup/ButtonGroupContext.js +11 -0
  47. package/ButtonGroup/index.d.ts +76 -0
  48. package/ButtonGroup/index.js +132 -0
  49. package/CHANGELOG.md +160 -0
  50. package/Calendar/CalendarCell.js +11 -4
  51. package/Calendar/CalendarComponent.d.ts +15 -4
  52. package/Calendar/CalendarComponent.js +201 -103
  53. package/Calendar/CalendarDayBadge.d.ts +1 -1
  54. package/Calendar/CalendarMonthCell.js +1 -11
  55. package/Calendar/CalendarWeekDayLabel.js +3 -1
  56. package/Calendar/CalendarWeekDaysBar.js +6 -1
  57. package/Calendar/CalendarYearCell.js +1 -16
  58. package/Calendar/CalendarYearsSelector.d.ts +0 -1
  59. package/Calendar/CalendarYearsSelector.js +33 -35
  60. package/Calendar/use-calendar.d.ts +4 -3
  61. package/Calendar/use-calendar.js +31 -24
  62. package/Checkbox/CheckboxAsterisk.d.ts +13 -0
  63. package/{Autocomplete2/Autocomplete2TextField.js → Checkbox/CheckboxAsterisk.js} +24 -10
  64. package/Checkbox/CheckboxBox.d.ts +22 -0
  65. package/Checkbox/CheckboxBox.js +88 -0
  66. package/Checkbox/CheckboxContainer.d.ts +27 -0
  67. package/Checkbox/CheckboxContainer.js +38 -0
  68. package/Checkbox/CheckboxErrorText.d.ts +6 -0
  69. package/Checkbox/CheckboxErrorText.js +76 -0
  70. package/Checkbox/CheckboxIcon.d.ts +10 -0
  71. package/Checkbox/CheckboxIcon.js +57 -0
  72. package/Checkbox/CheckboxTextWrapper.d.ts +4 -0
  73. package/Checkbox/CheckboxTextWrapper.js +29 -0
  74. package/Checkbox/CheckboxWrapper.d.ts +4 -0
  75. package/Checkbox/CheckboxWrapper.js +29 -0
  76. package/Checkbox/index.d.ts +144 -0
  77. package/Checkbox/index.js +71 -0
  78. package/Checkbox/useCheckboxColor.d.ts +6 -0
  79. package/Checkbox/useCheckboxColor.js +33 -0
  80. package/ClickOutside/index.d.ts +6 -0
  81. package/ClickOutside/index.js +19 -3
  82. package/Color/Color.d.ts +4 -4
  83. package/Color/Color.js +9 -5
  84. package/Color/ColorGenerator.d.ts +5 -1
  85. package/Color/ColorParser.d.ts +9 -0
  86. package/Color/ColorParser.js +52 -12
  87. package/CountryFlags/AC.js +5 -1
  88. package/CountryFlags/AD.js +5 -1
  89. package/CountryFlags/AE.js +5 -1
  90. package/CountryFlags/AF.js +5 -1
  91. package/CountryFlags/AG.js +5 -1
  92. package/CountryFlags/AI.js +5 -1
  93. package/CountryFlags/AL.js +5 -1
  94. package/CountryFlags/AM.js +5 -1
  95. package/CountryFlags/AO.js +5 -1
  96. package/CountryFlags/AQ.js +5 -1
  97. package/CountryFlags/AR.js +5 -1
  98. package/CountryFlags/AS.js +5 -1
  99. package/CountryFlags/AT.js +5 -1
  100. package/CountryFlags/AU.js +5 -1
  101. package/CountryFlags/AW.js +5 -1
  102. package/CountryFlags/AX.js +5 -1
  103. package/CountryFlags/AZ.js +5 -1
  104. package/CountryFlags/BA.js +5 -1
  105. package/CountryFlags/BB.js +5 -1
  106. package/CountryFlags/BD.js +5 -1
  107. package/CountryFlags/BE.js +5 -1
  108. package/CountryFlags/BF.js +5 -1
  109. package/CountryFlags/BG.js +5 -1
  110. package/CountryFlags/BH.js +5 -1
  111. package/CountryFlags/BI.js +5 -1
  112. package/CountryFlags/BJ.js +5 -1
  113. package/CountryFlags/BL.js +5 -1
  114. package/CountryFlags/BM.js +5 -1
  115. package/CountryFlags/BN.js +5 -1
  116. package/CountryFlags/BO.js +5 -1
  117. package/CountryFlags/BQ.js +5 -1
  118. package/CountryFlags/BR.js +5 -1
  119. package/CountryFlags/BS.js +5 -1
  120. package/CountryFlags/BT.js +5 -1
  121. package/CountryFlags/BV.js +5 -1
  122. package/CountryFlags/BW.js +5 -1
  123. package/CountryFlags/BY.js +5 -1
  124. package/CountryFlags/BZ.js +5 -1
  125. package/CountryFlags/CA.js +5 -1
  126. package/CountryFlags/CC.js +5 -1
  127. package/CountryFlags/CD.js +5 -1
  128. package/CountryFlags/CF.js +5 -1
  129. package/CountryFlags/CG.js +5 -1
  130. package/CountryFlags/CH.js +5 -1
  131. package/CountryFlags/CI.js +5 -1
  132. package/CountryFlags/CK.js +5 -1
  133. package/CountryFlags/CL.js +5 -1
  134. package/CountryFlags/CM.js +5 -1
  135. package/CountryFlags/CN.js +5 -1
  136. package/CountryFlags/CO.js +5 -1
  137. package/CountryFlags/CR.js +5 -1
  138. package/CountryFlags/CU.js +5 -1
  139. package/CountryFlags/CV.js +5 -1
  140. package/CountryFlags/CW.js +5 -1
  141. package/CountryFlags/CX.js +5 -1
  142. package/CountryFlags/CY.js +5 -1
  143. package/CountryFlags/CZ.js +5 -1
  144. package/CountryFlags/DE.js +5 -1
  145. package/CountryFlags/DJ.js +5 -1
  146. package/CountryFlags/DK.js +5 -1
  147. package/CountryFlags/DM.js +5 -1
  148. package/CountryFlags/DO.js +5 -1
  149. package/CountryFlags/DZ.js +5 -1
  150. package/CountryFlags/EC.js +5 -1
  151. package/CountryFlags/EE.js +5 -1
  152. package/CountryFlags/EG.js +5 -1
  153. package/CountryFlags/EH.js +5 -1
  154. package/CountryFlags/ER.js +5 -1
  155. package/CountryFlags/ES.js +5 -1
  156. package/CountryFlags/ET.js +5 -1
  157. package/CountryFlags/EU.js +5 -1
  158. package/CountryFlags/FI.js +5 -1
  159. package/CountryFlags/FJ.js +5 -1
  160. package/CountryFlags/FK.js +5 -1
  161. package/CountryFlags/FM.js +5 -1
  162. package/CountryFlags/FO.js +5 -1
  163. package/CountryFlags/FR.js +5 -1
  164. package/CountryFlags/GA.js +5 -1
  165. package/CountryFlags/GB.js +5 -1
  166. package/CountryFlags/GD.js +5 -1
  167. package/CountryFlags/GE.js +5 -1
  168. package/CountryFlags/GEAB.js +5 -1
  169. package/CountryFlags/GEOS.js +5 -1
  170. package/CountryFlags/GF.js +5 -1
  171. package/CountryFlags/GG.js +5 -1
  172. package/CountryFlags/GH.js +5 -1
  173. package/CountryFlags/GI.js +5 -1
  174. package/CountryFlags/GL.js +5 -1
  175. package/CountryFlags/GM.js +5 -1
  176. package/CountryFlags/GN.js +5 -1
  177. package/CountryFlags/GP.js +5 -1
  178. package/CountryFlags/GQ.js +5 -1
  179. package/CountryFlags/GR.js +5 -1
  180. package/CountryFlags/GS.js +5 -1
  181. package/CountryFlags/GT.js +5 -1
  182. package/CountryFlags/GU.js +5 -1
  183. package/CountryFlags/GW.js +5 -1
  184. package/CountryFlags/GY.js +5 -1
  185. package/CountryFlags/HK.js +5 -1
  186. package/CountryFlags/HM.js +5 -1
  187. package/CountryFlags/HN.js +5 -1
  188. package/CountryFlags/HR.js +5 -1
  189. package/CountryFlags/HT.js +5 -1
  190. package/CountryFlags/HU.js +5 -1
  191. package/CountryFlags/IC.js +5 -1
  192. package/CountryFlags/ID.js +5 -1
  193. package/CountryFlags/IE.js +5 -1
  194. package/CountryFlags/IL.js +5 -1
  195. package/CountryFlags/IM.js +5 -1
  196. package/CountryFlags/IN.js +5 -1
  197. package/CountryFlags/IO.js +5 -1
  198. package/CountryFlags/IQ.js +5 -1
  199. package/CountryFlags/IR.js +5 -1
  200. package/CountryFlags/IS.js +5 -1
  201. package/CountryFlags/IT.js +5 -1
  202. package/CountryFlags/JE.js +5 -1
  203. package/CountryFlags/JM.js +5 -1
  204. package/CountryFlags/JO.js +5 -1
  205. package/CountryFlags/JP.js +5 -1
  206. package/CountryFlags/KE.js +5 -1
  207. package/CountryFlags/KG.js +5 -1
  208. package/CountryFlags/KH.js +5 -1
  209. package/CountryFlags/KI.js +5 -1
  210. package/CountryFlags/KM.js +5 -1
  211. package/CountryFlags/KN.js +5 -1
  212. package/CountryFlags/KP.js +5 -1
  213. package/CountryFlags/KR.js +5 -1
  214. package/CountryFlags/KW.js +5 -1
  215. package/CountryFlags/KY.js +5 -1
  216. package/CountryFlags/KZ.js +5 -1
  217. package/CountryFlags/LA.js +5 -1
  218. package/CountryFlags/LB.js +5 -1
  219. package/CountryFlags/LC.js +5 -1
  220. package/CountryFlags/LI.js +5 -1
  221. package/CountryFlags/LK.js +5 -1
  222. package/CountryFlags/LR.js +5 -1
  223. package/CountryFlags/LS.js +5 -1
  224. package/CountryFlags/LT.js +5 -1
  225. package/CountryFlags/LU.js +5 -1
  226. package/CountryFlags/LV.js +5 -1
  227. package/CountryFlags/LY.js +5 -1
  228. package/CountryFlags/MA.js +5 -1
  229. package/CountryFlags/MC.js +5 -1
  230. package/CountryFlags/MD.js +5 -1
  231. package/CountryFlags/ME.js +5 -1
  232. package/CountryFlags/MF.js +5 -1
  233. package/CountryFlags/MG.js +5 -1
  234. package/CountryFlags/MH.js +5 -1
  235. package/CountryFlags/MK.js +5 -1
  236. package/CountryFlags/ML.js +5 -1
  237. package/CountryFlags/MM.js +5 -1
  238. package/CountryFlags/MN.js +5 -1
  239. package/CountryFlags/MO.js +5 -1
  240. package/CountryFlags/MP.js +5 -1
  241. package/CountryFlags/MQ.js +5 -1
  242. package/CountryFlags/MR.js +5 -1
  243. package/CountryFlags/MS.js +5 -1
  244. package/CountryFlags/MT.js +5 -1
  245. package/CountryFlags/MU.js +5 -1
  246. package/CountryFlags/MV.js +5 -1
  247. package/CountryFlags/MW.js +5 -1
  248. package/CountryFlags/MX.js +5 -1
  249. package/CountryFlags/MY.js +5 -1
  250. package/CountryFlags/MZ.js +5 -1
  251. package/CountryFlags/NA.js +5 -1
  252. package/CountryFlags/NC.js +5 -1
  253. package/CountryFlags/NE.js +5 -1
  254. package/CountryFlags/NF.js +5 -1
  255. package/CountryFlags/NG.js +5 -1
  256. package/CountryFlags/NI.js +5 -1
  257. package/CountryFlags/NL.js +5 -1
  258. package/CountryFlags/NO.js +5 -1
  259. package/CountryFlags/NP.js +5 -1
  260. package/CountryFlags/NR.js +5 -1
  261. package/CountryFlags/NU.js +5 -1
  262. package/CountryFlags/NZ.js +5 -1
  263. package/CountryFlags/OM.js +5 -1
  264. package/CountryFlags/PA.js +5 -1
  265. package/CountryFlags/PE.js +5 -1
  266. package/CountryFlags/PF.js +5 -1
  267. package/CountryFlags/PG.js +5 -1
  268. package/CountryFlags/PH.js +5 -1
  269. package/CountryFlags/PK.js +5 -1
  270. package/CountryFlags/PL.js +5 -1
  271. package/CountryFlags/PM.js +5 -1
  272. package/CountryFlags/PN.js +5 -1
  273. package/CountryFlags/PR.js +5 -1
  274. package/CountryFlags/PS.js +5 -1
  275. package/CountryFlags/PT.js +5 -1
  276. package/CountryFlags/PW.js +5 -1
  277. package/CountryFlags/PY.js +5 -1
  278. package/CountryFlags/QA.js +5 -1
  279. package/CountryFlags/RE.js +5 -1
  280. package/CountryFlags/RO.js +5 -1
  281. package/CountryFlags/RS.js +5 -1
  282. package/CountryFlags/RU.js +5 -1
  283. package/CountryFlags/RW.js +5 -1
  284. package/CountryFlags/SA.js +5 -1
  285. package/CountryFlags/SB.js +5 -1
  286. package/CountryFlags/SC.js +5 -1
  287. package/CountryFlags/SD.js +5 -1
  288. package/CountryFlags/SE.js +5 -1
  289. package/CountryFlags/SG.js +5 -1
  290. package/CountryFlags/SH.js +5 -1
  291. package/CountryFlags/SI.js +5 -1
  292. package/CountryFlags/SJ.js +5 -1
  293. package/CountryFlags/SK.js +5 -1
  294. package/CountryFlags/SL.js +5 -1
  295. package/CountryFlags/SM.js +5 -1
  296. package/CountryFlags/SN.js +5 -1
  297. package/CountryFlags/SO.js +5 -1
  298. package/CountryFlags/SR.js +5 -1
  299. package/CountryFlags/SS.js +5 -1
  300. package/CountryFlags/ST.js +5 -1
  301. package/CountryFlags/SV.js +5 -1
  302. package/CountryFlags/SX.js +5 -1
  303. package/CountryFlags/SY.js +5 -1
  304. package/CountryFlags/SZ.js +5 -1
  305. package/CountryFlags/TA.js +5 -1
  306. package/CountryFlags/TC.js +5 -1
  307. package/CountryFlags/TD.js +5 -1
  308. package/CountryFlags/TF.js +5 -1
  309. package/CountryFlags/TG.js +5 -1
  310. package/CountryFlags/TH.js +5 -1
  311. package/CountryFlags/TJ.js +5 -1
  312. package/CountryFlags/TK.js +5 -1
  313. package/CountryFlags/TL.js +5 -1
  314. package/CountryFlags/TM.js +5 -1
  315. package/CountryFlags/TN.js +5 -1
  316. package/CountryFlags/TO.js +5 -1
  317. package/CountryFlags/TR.js +5 -1
  318. package/CountryFlags/TT.js +5 -1
  319. package/CountryFlags/TV.js +5 -1
  320. package/CountryFlags/TW.js +5 -1
  321. package/CountryFlags/TZ.js +5 -1
  322. package/CountryFlags/UA.js +5 -1
  323. package/CountryFlags/UG.js +5 -1
  324. package/CountryFlags/UM.js +5 -1
  325. package/CountryFlags/US.js +5 -1
  326. package/CountryFlags/UY.js +5 -1
  327. package/CountryFlags/UZ.js +5 -1
  328. package/CountryFlags/Uknown.d.ts +7 -3
  329. package/CountryFlags/Uknown.js +9 -31
  330. package/CountryFlags/Unknown.d.ts +3 -0
  331. package/CountryFlags/Unknown.js +42 -0
  332. package/CountryFlags/VA.js +5 -1
  333. package/CountryFlags/VC.js +5 -1
  334. package/CountryFlags/VE.js +5 -1
  335. package/CountryFlags/VG.js +5 -1
  336. package/CountryFlags/VI.js +5 -1
  337. package/CountryFlags/VN.js +5 -1
  338. package/CountryFlags/VU.js +5 -1
  339. package/CountryFlags/WF.js +5 -1
  340. package/CountryFlags/WS.js +5 -1
  341. package/CountryFlags/XK.js +5 -1
  342. package/CountryFlags/YE.js +5 -1
  343. package/CountryFlags/YT.js +5 -1
  344. package/CountryFlags/ZA.js +5 -1
  345. package/CountryFlags/ZM.js +5 -1
  346. package/CountryFlags/ZW.js +5 -1
  347. package/CountryFlags/index.d.ts +2 -1
  348. package/CountryFlags/index.js +3 -1
  349. package/CountryFlags/isLabelled.d.ts +6 -0
  350. package/CountryFlags/isLabelled.js +7 -0
  351. package/DatePicker/index.d.ts +23 -6
  352. package/DatePicker/index.js +84 -23
  353. package/DatePicker/useDatePickerFormat.js +20 -3
  354. package/Grid/index.d.ts +60 -0
  355. package/Grid/index.js +43 -0
  356. package/Highlighted/index.d.ts +1 -1
  357. package/Highlighted/index.js +14 -10
  358. package/LoadingIndicator/LoadingOverlay.d.ts +11 -0
  359. package/LoadingIndicator/LoadingOverlay.js +63 -0
  360. package/LoadingIndicator/Spinner.d.ts +34 -5
  361. package/LoadingIndicator/Spinner.js +48 -37
  362. package/LoadingIndicator/SpinnerCircle.d.ts +14 -0
  363. package/LoadingIndicator/SpinnerCircle.js +34 -0
  364. package/LoadingIndicator/index.d.ts +8 -3
  365. package/LoadingIndicator/index.js +9 -15
  366. package/MaskedField/index.d.ts +3 -2
  367. package/MaskedField/index.js +7 -2
  368. package/MaskedField/templates.js +2 -0
  369. package/MaskedField/useMasked.js +26 -12
  370. package/Menu/MenuContainer.d.ts +11 -3
  371. package/Menu/MenuContainer.js +127 -65
  372. package/Menu/MenuItem.js +1 -1
  373. package/Menu/VirtualizedList.js +1 -3
  374. package/Menu/context.js +5 -0
  375. package/Modal/BaseModal/ModalWrapper.js +65 -38
  376. package/Modal/BaseModal/context.js +6 -0
  377. package/Modal/BaseModal/index.js +0 -8
  378. package/Modal/BaseModal/useDialogID.d.ts +6 -0
  379. package/Modal/BaseModal/useDialogID.js +12 -0
  380. package/Modal/ConfirmBox/ConfirmBoxContainer.js +5 -1
  381. package/Modal/ConfirmBox/index.js +2 -1
  382. package/Modal/Dialog/DialogInner.js +1 -1
  383. package/Modal/Dialog/index.js +12 -7
  384. package/Modal/Drawer/DrawerHeader.d.ts +20 -0
  385. package/Modal/Drawer/DrawerHeader.js +3 -3
  386. package/Modal/Drawer/DrawerInner.js +9 -1
  387. package/Modal/Drawer/index.d.ts +7 -0
  388. package/Modal/Drawer/index.js +12 -10
  389. package/Modal/MessageBox/MessageBoxContainer.js +1 -1
  390. package/Modal/MessageBox/index.js +2 -1
  391. package/PhoneField/CountryFlagComponent.js +2 -2
  392. package/PhoneField/UnknownFlag.d.ts +6 -3
  393. package/PhoneField/UnknownFlag.js +8 -31
  394. package/PhoneField/index.js +45 -55
  395. package/PhoneField/templates.js +13 -14
  396. package/PhoneField/usePhoneUtils.d.ts +15 -0
  397. package/PhoneField/usePhoneUtils.js +30 -37
  398. package/Popper/Popper.d.ts +30 -10
  399. package/Popper/Popper.js +9 -7
  400. package/Popper/usePopper.d.ts +21 -31
  401. package/Popper/usePopper.js +79 -46
  402. package/README.md +27 -10
  403. package/Radio/RadioBox.d.ts +14 -0
  404. package/Radio/RadioBox.js +100 -0
  405. package/Radio/RadioContainer.d.ts +27 -0
  406. package/Radio/RadioContainer.js +38 -0
  407. package/Radio/RadioTextWrapper.d.ts +4 -0
  408. package/Radio/RadioTextWrapper.js +29 -0
  409. package/Radio/index.d.ts +64 -0
  410. package/Radio/index.js +49 -0
  411. package/Radio/useRadioColor.d.ts +6 -0
  412. package/Radio/useRadioColor.js +33 -0
  413. package/RadioGroup/RadioGroupAsterisk.d.ts +13 -0
  414. package/RadioGroup/RadioGroupAsterisk.js +53 -0
  415. package/RadioGroup/RadioGroupContainer.d.ts +4 -0
  416. package/RadioGroup/RadioGroupContainer.js +36 -0
  417. package/RadioGroup/RadioGroupContext.d.ts +20 -0
  418. package/RadioGroup/RadioGroupContext.js +11 -0
  419. package/RadioGroup/RadioGroupErrorText.d.ts +6 -0
  420. package/RadioGroup/RadioGroupErrorText.js +76 -0
  421. package/RadioGroup/RadioGroupItems.d.ts +9 -0
  422. package/RadioGroup/RadioGroupItems.js +30 -0
  423. package/RadioGroup/RadioGroupLegend.d.ts +4 -0
  424. package/RadioGroup/RadioGroupLegend.js +37 -0
  425. package/RadioGroup/index.d.ts +134 -0
  426. package/RadioGroup/index.js +62 -0
  427. package/Selectbox/SelectboxMenu.d.ts +1 -1
  428. package/Selectbox/index.d.ts +18 -2
  429. package/Selectbox/index.js +32 -32
  430. package/Stack/index.d.ts +62 -0
  431. package/Stack/index.js +38 -0
  432. package/Surface/SurfaceContainer.js +6 -0
  433. package/Surface/index.js +7 -3
  434. package/Swiper/Swiper.d.ts +28 -2
  435. package/Swiper/Swiper.js +246 -91
  436. package/Swiper/SwiperContainer.js +0 -2
  437. package/Swiper/SwiperSlidesRenderer.d.ts +8 -0
  438. package/Swiper/SwiperSlidesRenderer.js +17 -14
  439. package/Swiper/SwiperTrack.d.ts +8 -0
  440. package/Swiper/SwiperTrack.js +8 -3
  441. package/Swiper/SwiperWrapper.js +9 -1
  442. package/Switch/SwitchContainer.d.ts +1 -1
  443. package/Switch/SwitchContainer.js +5 -5
  444. package/Switch/SwitchDot.js +13 -53
  445. package/Switch/SwitchToggleWrapper.d.ts +1 -1
  446. package/Switch/SwitchToggleWrapper.js +5 -6
  447. package/Switch/SwitchTrack.js +5 -41
  448. package/Switch/index.d.ts +4 -4
  449. package/Switch/index.js +21 -11
  450. package/Switch/useSwitchColor.d.ts +7 -0
  451. package/Switch/useSwitchColor.js +33 -0
  452. package/Table/Table.d.ts +6 -0
  453. package/Table/Table.js +7 -62
  454. package/Table/TableBody.d.ts +1 -1
  455. package/Table/TableBody.js +4 -2
  456. package/Table/TableCaption.d.ts +2 -2
  457. package/Table/TableCaption.js +2 -3
  458. package/Table/TableCell.js +2 -5
  459. package/Table/TableFooter.js +8 -7
  460. package/Table/TableHeader.js +6 -2
  461. package/Table/TableHeaderCell.js +8 -9
  462. package/Table/TableRow.js +1 -5
  463. package/TextArea/TextAreaIconWrapper.d.ts +1 -1
  464. package/TextArea/TextAreaInput.js +2 -0
  465. package/TextArea/index.js +7 -15
  466. package/TextField/TextFieldInput.js +2 -0
  467. package/TextField/TextFieldInputWrapper.d.ts +2 -0
  468. package/TextField/TextFieldInputWrapper.js +12 -2
  469. package/TextField/index.js +7 -19
  470. package/ThemeProvider/createTheme.js +2 -3
  471. package/ThemeProvider/index.d.ts +19 -2
  472. package/Typography/Base.d.ts +1 -1
  473. package/Typography/Base.js +1 -1
  474. package/Typography/Blockquote.js +1 -1
  475. package/Typography/Del.js +2 -2
  476. package/Typography/H4.js +1 -1
  477. package/Typography/H5.js +2 -2
  478. package/Typography/H6.d.ts +4 -0
  479. package/Typography/H6.js +28 -0
  480. package/Typography/SectionDescription.js +0 -1
  481. package/Typography/SectionTitle.d.ts +4 -7
  482. package/Typography/SectionTitle.js +26 -8
  483. package/Typography/index.d.ts +27 -0
  484. package/Typography/index.js +35 -0
  485. package/package.json +2 -4
  486. package/utils/TabManager.d.ts +7 -1
  487. package/utils/TabManager.js +39 -45
  488. package/utils/spacing.d.ts +11 -0
  489. package/utils/spacing.js +14 -0
  490. package/Autocomplete/OverrideMenuList.d.ts +0 -4
  491. package/Autocomplete/OverrideMenuList.js +0 -39
  492. package/Autocomplete2/Autocomplete2.d.ts +0 -12
  493. package/Autocomplete2/Autocomplete2.js +0 -83
  494. package/Autocomplete2/Autocomplete2TextField.d.ts +0 -7
  495. package/Autocomplete2/index.d.ts +0 -2
  496. package/Autocomplete2/index.js +0 -7
  497. package/CountryFlags/SwiperOverview.d.ts +0 -257
  498. package/CountryFlags/SwiperOverview.js +0 -524
@@ -54,13 +54,35 @@ const CalendarIconPrev_1 = __importDefault(require("./CalendarIconPrev"));
54
54
  const CalendarIconNext_1 = __importDefault(require("./CalendarIconNext"));
55
55
  const CalendarWeekDaysBar_1 = __importDefault(require("./CalendarWeekDaysBar"));
56
56
  const use_calendar_1 = require("./use-calendar");
57
- const Swiper_1 = __importStar(require("../Swiper"));
58
57
  const styled_1 = __importDefault(require("@emotion/styled"));
58
+ const react_2 = require("@emotion/react");
59
59
  __exportStar(require("./use-calendar"), exports);
60
60
  __exportStar(require("./CalendarWeekDaysBar"), exports);
61
- const StyledSwiper = (0, styled_1.default)(Swiper_1.default) `
62
- height: 100%;
61
+ const viewAppear = (0, react_2.keyframes) `
62
+ from {
63
+ opacity: 0;
64
+ transform: scale(0.97);
65
+ }
66
+ to {
67
+ opacity: 1;
68
+ transform: none;
69
+ }
63
70
  `;
71
+ /**
72
+ * Only the active view is rendered: the hidden views are not focusable and not announced
73
+ */
74
+ const ViewContainer = styled_1.default.div `
75
+ flex: 1;
76
+ display: flex;
77
+ flex-direction: column;
78
+ min-height: 0;
79
+ animation: ${viewAppear} 0.2s ease-out;
80
+
81
+ @media (prefers-reduced-motion: reduce) {
82
+ animation: none;
83
+ }
84
+ `;
85
+ const dateKey = (date) => `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;
64
86
  const isRangeValue = (value) => {
65
87
  if (value instanceof Array) {
66
88
  return value.every(v => v instanceof Date || v === null);
@@ -80,21 +102,12 @@ const computeViews = (inputViews, range) => {
80
102
  const computeView = (inputParams) => {
81
103
  var _a;
82
104
  const { inputView, inputViews, inputInitialView } = inputParams;
83
- if (typeof inputView === 'undefined' && inputViews) {
84
- return inputViews[0];
85
- }
86
- if (typeof inputView === 'undefined' && inputViews) {
87
- return inputViews[0];
88
- }
89
- if (inputViews && typeof inputView === 'string') {
90
- if (!inputViews.includes(inputView)) {
91
- throw new Error('Property views must be contained property initialView');
92
- }
93
- }
94
- if (typeof inputView === 'string') {
95
- return inputView;
105
+ const requested = inputView !== null && inputView !== void 0 ? inputView : inputInitialView;
106
+ if (requested && inputViews && !inputViews.includes(requested)) {
107
+ throw new Error(`The view «${requested}» must be one of the \`views\`: ${inputViews.join(', ')}`);
96
108
  }
97
- return (_a = inputInitialView !== null && inputInitialView !== void 0 ? inputInitialView : inputView) !== null && _a !== void 0 ? _a : 'days';
109
+ // The requested view wins over the first of the views
110
+ return (_a = requested !== null && requested !== void 0 ? requested : inputViews === null || inputViews === void 0 ? void 0 : inputViews[0]) !== null && _a !== void 0 ? _a : 'days';
98
111
  };
99
112
  const computeCalendarDate = (params) => {
100
113
  const { inputValue, defaultValue } = params;
@@ -135,7 +148,7 @@ const computeCalendarDate = (params) => {
135
148
  };
136
149
  const CalendarComponent = react_1.default.forwardRef((props, ref) => {
137
150
  var _a;
138
- const { minDate = new Date(new Date().getFullYear() - 100, 0, 1, 0, 0, 0), maxDate = new Date(new Date().getFullYear() + 100, 0, 1, 0, 0, 0), weekStartDay = 'monday', locale = 'ru-RU', displayLeadingZero = false, onChange, badges = [], markToday, weekDayLabelFormat = 'short', accentColor = 'primary', defaultValue, value: inputValue, initialView: inputInitialView, view: inputView, views: inputViews, resetButtonLabel, todayButtonLabel, heading, subheading, footer, overrides, range = false, } = props;
151
+ const { minDate: inputMinDate, maxDate: inputMaxDate, weekStartDay = 'monday', locale = 'ru-RU', displayLeadingZero = false, onChange, badges = [], markToday = true, weekDayLabelFormat = 'short', accentColor = 'primary', defaultValue, value: inputValue, initialView: inputInitialView, view: inputView, views: inputViews, resetButtonLabel, todayButtonLabel, heading, subheading, footer, overrides, range = false, prevButtonLabel = 'Previous', nextButtonLabel = 'Next', } = props;
139
152
  /**
140
153
  * Validations
141
154
  */
@@ -160,12 +173,21 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
160
173
  throw new Error('The `weeks` view allowed only in range mode');
161
174
  }
162
175
  }
163
- if (!inputValue && typeof onChange === 'undefined') {
176
+ if (typeof inputValue !== 'undefined' && typeof onChange !== 'function') {
164
177
  throw new Error('You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange`.');
165
178
  }
166
179
  if (inputView && inputInitialView) {
167
180
  throw new Error('You can not use view and initialView at the same time.');
168
181
  }
182
+ // Default limits are created once, otherwise every render gets new Date instances
183
+ // and invalidates all memoized values depending on them
184
+ const minDate = react_1.default.useMemo(() => inputMinDate !== null && inputMinDate !== void 0 ? inputMinDate : new Date(new Date().getFullYear() - 100, 0, 1, 0, 0, 0), [inputMinDate]);
185
+ const maxDate = react_1.default.useMemo(() => inputMaxDate !== null && inputMaxDate !== void 0 ? inputMaxDate : new Date(new Date().getFullYear() + 100, 0, 1, 0, 0, 0), [inputMaxDate]);
186
+ const emitChange = react_1.default.useCallback((newValue) => {
187
+ if (typeof onChange === 'function') {
188
+ onChange(newValue);
189
+ }
190
+ }, [onChange]);
169
191
  /**
170
192
  * Overrides
171
193
  */
@@ -193,7 +215,7 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
193
215
  WeekRowButton: (overrides === null || overrides === void 0 ? void 0 : overrides.WeekRowButton) || CalendarWeekRowButton_1.default,
194
216
  WeekDayWeekNumber: (overrides === null || overrides === void 0 ? void 0 : overrides.WeekDayWeekNumber) || CalendarWeekDayWeekNumber_1.default,
195
217
  }), [overrides]);
196
- const swiperRef = react_1.default.useRef(null);
218
+ const dateContainerRef = react_1.default.useRef(null);
197
219
  /**
198
220
  * Inside date value
199
221
  */
@@ -205,7 +227,16 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
205
227
  * Selected value
206
228
  */
207
229
  const inputValueRef = react_1.default.useRef(inputValue);
208
- const [value, setValue] = react_1.default.useState((_a = inputValue !== null && inputValue !== void 0 ? inputValue : defaultValue) !== null && _a !== void 0 ? _a : null);
230
+ const [internalValue, setValue] = react_1.default.useState((_a = inputValue !== null && inputValue !== void 0 ? inputValue : defaultValue) !== null && _a !== void 0 ? _a : null);
231
+ // Controlled: the value is always the `value` property, even if the parent did not accept the change
232
+ const value = typeof inputValue !== 'undefined'
233
+ ? inputValue
234
+ : internalValue;
235
+ /**
236
+ * The day with the keyboard focus in the days view (roving tabindex)
237
+ */
238
+ const [focusedDate, setFocusedDate] = react_1.default.useState(null);
239
+ const shouldMoveFocus = react_1.default.useRef(false);
209
240
  /**
210
241
  * Current view mode
211
242
  */
@@ -220,16 +251,22 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
220
251
  const [views, setComputedViews] = react_1.default.useState(() => computeViews(inputViews, range));
221
252
  const setViews = react_1.default.useCallback((variants) => setComputedViews(variants), []);
222
253
  const selectView = react_1.default.useCallback((view) => {
223
- var _a;
224
- if (!views.includes(view)) {
225
- setViews([...views, view]);
254
+ const nextViews = views.includes(view) ? views : [...views, view];
255
+ if (nextViews !== views) {
256
+ setViews(nextViews);
226
257
  }
227
258
  setView(view);
228
- const index = views.findIndex(v => v === view);
229
- if (index > -1) {
230
- (_a = swiperRef.current) === null || _a === void 0 ? void 0 : _a.goToIndex(index);
231
- }
232
259
  }, [setViews, views]);
260
+ /**
261
+ * Controlled `view` property was changed
262
+ */
263
+ const inputViewRef = react_1.default.useRef(inputView);
264
+ react_1.default.useEffect(() => {
265
+ if (inputView && inputView !== inputViewRef.current) {
266
+ inputViewRef.current = inputView;
267
+ selectView(inputView);
268
+ }
269
+ }, [inputView, selectView]);
233
270
  const resetVariablesRef = react_1.default.useRef({
234
271
  calendarDate,
235
272
  value,
@@ -292,10 +329,10 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
292
329
  }
293
330
  if (view === 'months') {
294
331
  if (type === 'prev') {
295
- newCalendarDate.setFullYear(newCalendarDate.getFullYear() + 1);
332
+ newCalendarDate.setFullYear(newCalendarDate.getFullYear() - 1);
296
333
  }
297
334
  else {
298
- newCalendarDate.setFullYear(newCalendarDate.getFullYear() - 1);
335
+ newCalendarDate.setFullYear(newCalendarDate.getFullYear() + 1);
299
336
  }
300
337
  }
301
338
  if (view === 'days' || view === 'weeks') {
@@ -310,51 +347,36 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
310
347
  }, [calendarDate, view]);
311
348
  const handleCellDateClick = react_1.default.useCallback((selectedDate) => () => {
312
349
  var _a;
350
+ setFocusedDate(selectedDate);
313
351
  const nextView = getNextAvailableView();
314
352
  if (nextView) {
315
353
  setView(nextView);
316
354
  }
317
355
  // Single-date mode
318
356
  if (!range) {
319
- onChange(selectedDate);
357
+ emitChange(selectedDate);
320
358
  setValue(selectedDate);
321
359
  return;
322
360
  }
323
361
  // Range-date mode
324
362
  const [from, to] = (_a = value) !== null && _a !== void 0 ? _a : [];
325
- // начало нового периода
326
- if (from && to) {
327
- setValue([selectedDate, null]);
328
- onChange([selectedDate, null]);
329
- return;
330
- }
331
- // если выбрана только первая дата или обе даты равны - завершение периода
332
- if ((from && to === null) || (from && to && from.getTime() === to.getTime())) {
363
+ // выбрана только первая дата - завершение периода
364
+ if (from && !to) {
333
365
  /// check to swap
334
- if (selectedDate.getTime() < from.getTime()) {
335
- onChange([selectedDate, from]);
336
- setValue([selectedDate, from]);
337
- }
338
- else {
339
- onChange([from, selectedDate]);
340
- setValue([from, selectedDate]);
341
- }
342
- }
343
- else {
344
- // обе даты выбраны или ничего не выбрано ([Date, Date] | [null, null] | null) - начало нового периода
345
- if ((from && to) || (from === null && to === null) || value === null) {
346
- setValue([selectedDate, null]);
347
- return;
348
- }
366
+ const newValue = selectedDate.getTime() < from.getTime() ? [selectedDate, from] : [from, selectedDate];
367
+ emitChange(newValue);
368
+ setValue(newValue);
369
+ return;
349
370
  }
350
- }, [onChange, getNextAvailableView, range, value]);
371
+ // обе даты выбраны или ничего не выбрано ([Date, Date] | [null, null] | null) - начало нового периода
372
+ setValue([selectedDate, null]);
373
+ emitChange([selectedDate, null]);
374
+ }, [emitChange, getNextAvailableView, range, value]);
351
375
  /**
352
376
  * Handle of click on year item
353
377
  */
354
378
  const handleYearSelected = react_1.default.useCallback((selectedYear) => () => {
355
- const newDate = new Date(calendarDate);
356
- newDate.setFullYear(selectedYear, 0, 1);
357
- newDate.setHours(0, 0, 0);
379
+ const newDate = new Date(selectedYear, 0, 1, 0, 0, 0, 0);
358
380
  setCalendarDate(newDate);
359
381
  const nextView = getNextAvailableView();
360
382
  if (nextView) {
@@ -362,23 +384,19 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
362
384
  }
363
385
  // if the next `view` does not exist
364
386
  if (!nextView && typeof onChange === 'function') {
365
- const a = new Date();
366
- a.setFullYear(newDate.getFullYear(), 11, 31);
367
- a.setHours(23, 59, 59);
387
+ const a = new Date(newDate.getFullYear(), 11, 31, 23, 59, 59, 999);
368
388
  const selectedValue = range ? [newDate, a] : newDate;
369
389
  onChange(selectedValue);
370
390
  if (!inputValue) {
371
391
  setValue(selectedValue);
372
392
  }
373
393
  }
374
- }, [calendarDate, getNextAvailableView, onChange, selectView, range, inputValue]);
394
+ }, [getNextAvailableView, onChange, selectView, range, inputValue]);
375
395
  /**
376
396
  * Handle of click on month item
377
397
  */
378
398
  const handleMonthSelected = react_1.default.useCallback((monthIndex) => () => {
379
- const newDate = new Date();
380
- newDate.setFullYear(calendarDate.getFullYear(), monthIndex, 1);
381
- newDate.setHours(0, 0, 0);
399
+ const newDate = new Date(calendarDate.getFullYear(), monthIndex, 1, 0, 0, 0, 0);
382
400
  setCalendarDate(newDate);
383
401
  const nextView = getNextAvailableView();
384
402
  if (nextView) {
@@ -386,9 +404,8 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
386
404
  }
387
405
  // if the next `view` does not exist
388
406
  if (!nextView && typeof onChange === 'function') {
389
- const a = new Date();
390
- a.setFullYear(newDate.getFullYear(), newDate.getMonth() + 1, 0);
391
- a.setHours(0, 0, 0);
407
+ // The end of the last day of the month, the same way as for the year range
408
+ const a = new Date(newDate.getFullYear(), newDate.getMonth() + 1, 0, 23, 59, 59, 999);
392
409
  const selectedValue = range ? [newDate, a] : newDate;
393
410
  onChange(selectedValue);
394
411
  if (!inputValue) {
@@ -411,12 +428,16 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
411
428
  * Handle click on «Today» button
412
429
  */
413
430
  const handleToday = react_1.default.useCallback(() => {
414
- const today = new Date();
415
- today.setHours(0, 0, 0);
431
+ const now = new Date();
432
+ const today = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0, 0);
433
+ const newValue = (range ? [today, today] : today);
416
434
  setCalendarDate(today);
417
- setValue((range ? [today, today] : today));
418
- handleCellDateClick(today)();
419
- }, [handleCellDateClick, range]);
435
+ setValue(newValue);
436
+ emitChange(newValue);
437
+ if (view !== 'days' && views.includes('days')) {
438
+ selectView('days');
439
+ }
440
+ }, [emitChange, range, selectView, view, views]);
420
441
  const handleClickWeek = react_1.default.useCallback((week) => () => {
421
442
  const days = week.days;
422
443
  const dates = [days[0].date, days[days.length - 1].date];
@@ -445,8 +466,98 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
445
466
  }, [views, range, selectView, onChange]);
446
467
  const weeks = react_1.default.useMemo(() => getWeeks(calendarDate), [calendarDate, getWeeks]);
447
468
  const yearsRange = react_1.default.useMemo(() => getYearsRange(minDate, maxDate), [minDate, maxDate, getYearsRange]);
448
- const monthsRange = react_1.default.useMemo(() => getMonthsRange(minDate, maxDate), [minDate, maxDate, getMonthsRange]);
449
- const renderViewDays = react_1.default.useCallback(() => (react_1.default.createElement(overridesMap.DateContainer, null, getWeeks(calendarDate).map(week => (react_1.default.createElement(overridesMap.WeekRow, { key: week.weekNumber }, week.days.map(day => {
469
+ const monthsRange = react_1.default.useMemo(() => getMonthsRange(minDate, maxDate, calendarDate.getFullYear()), [minDate, maxDate, getMonthsRange, calendarDate]);
470
+ const minDay = react_1.default.useMemo(() => new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()), [minDate]);
471
+ const maxDay = react_1.default.useMemo(() => new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()), [maxDate]);
472
+ const dayLabelFormatter = react_1.default.useMemo(() => typeof Intl !== 'undefined'
473
+ ? new Intl.DateTimeFormat(locale, {
474
+ weekday: 'long',
475
+ day: 'numeric',
476
+ month: 'long',
477
+ year: 'numeric',
478
+ })
479
+ : null, [locale]);
480
+ /**
481
+ * The only day in the tab order: the focused, the selected, today or the first available one
482
+ */
483
+ const tabbableDateKey = react_1.default.useMemo(() => {
484
+ const month = calendarDate.getMonth();
485
+ const days = weeks
486
+ .flatMap(week => week.days)
487
+ .filter(day => day.date.getMonth() === month && !day.isDisabled);
488
+ const selected = isRangeValue(value) ? value === null || value === void 0 ? void 0 : value[0] : isNotRangeValue(value) ? value : null;
489
+ const candidates = [focusedDate, selected, new Date()];
490
+ const found = candidates
491
+ .map(candidate => candidate && days.find(day => isSameDay(day.date, candidate)))
492
+ .find(Boolean);
493
+ return found ? dateKey(found.date) : days[0] ? dateKey(days[0].date) : null;
494
+ }, [calendarDate, weeks, value, focusedDate, isSameDay]);
495
+ /**
496
+ * Arrows move by a day and a week, Home/End — to the start/end of the week,
497
+ * PageUp/PageDown — by a month. Crossing the month border switches the month
498
+ */
499
+ const handleDaysKeyDown = react_1.default.useCallback((event) => {
500
+ var _a;
501
+ const key = (_a = event.target.closest('[data-date]')) === null || _a === void 0 ? void 0 : _a.dataset.date;
502
+ if (!key)
503
+ return;
504
+ const [y, m, d] = key.split('-').map(Number);
505
+ const current = new Date(y, m, d);
506
+ const weekDay = (current.getDay() -
507
+ ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'].indexOf(weekStartDay) +
508
+ 7) %
509
+ 7;
510
+ let target;
511
+ switch (event.key) {
512
+ case 'ArrowLeft':
513
+ target = new Date(y, m, d - 1);
514
+ break;
515
+ case 'ArrowRight':
516
+ target = new Date(y, m, d + 1);
517
+ break;
518
+ case 'ArrowUp':
519
+ target = new Date(y, m, d - 7);
520
+ break;
521
+ case 'ArrowDown':
522
+ target = new Date(y, m, d + 7);
523
+ break;
524
+ case 'Home':
525
+ target = new Date(y, m, d - weekDay);
526
+ break;
527
+ case 'End':
528
+ target = new Date(y, m, d + 6 - weekDay);
529
+ break;
530
+ case 'PageUp':
531
+ target = new Date(y, m - 1, Math.min(d, new Date(y, m, 0).getDate()));
532
+ break;
533
+ case 'PageDown':
534
+ target = new Date(y, m + 1, Math.min(d, new Date(y, m + 2, 0).getDate()));
535
+ break;
536
+ default:
537
+ return;
538
+ }
539
+ event.preventDefault();
540
+ // Stay inside minDate/maxDate
541
+ if (target.getTime() < minDay.getTime())
542
+ target = minDay;
543
+ if (target.getTime() > maxDay.getTime())
544
+ target = maxDay;
545
+ setFocusedDate(target);
546
+ shouldMoveFocus.current = true;
547
+ if (target.getMonth() !== calendarDate.getMonth() ||
548
+ target.getFullYear() !== calendarDate.getFullYear()) {
549
+ setCalendarDate(new Date(target.getFullYear(), target.getMonth(), 1));
550
+ }
551
+ }, [weekStartDay, minDay, maxDay, calendarDate]);
552
+ // Move the DOM focus after the keyboard navigation has rendered the new day
553
+ react_1.default.useEffect(() => {
554
+ var _a, _b;
555
+ if (shouldMoveFocus.current && focusedDate) {
556
+ shouldMoveFocus.current = false;
557
+ (_b = (_a = dateContainerRef.current) === null || _a === void 0 ? void 0 : _a.querySelector(`[data-date="${dateKey(focusedDate)}"]`)) === null || _b === void 0 ? void 0 : _b.focus();
558
+ }
559
+ }, [focusedDate, calendarDate]);
560
+ const renderViewDays = react_1.default.useCallback(() => (react_1.default.createElement(overridesMap.DateContainer, { ref: dateContainerRef, onKeyDown: handleDaysKeyDown }, weeks.map(week => (react_1.default.createElement(overridesMap.WeekRow, { key: week.weekNumber }, week.days.map(day => {
450
561
  if (day.date.getMonth() === calendarDate.getMonth()) {
451
562
  const badge = badges.find(b => isSameDay(b.date, day.date));
452
563
  let fill = false;
@@ -462,26 +573,30 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
462
573
  else if (isNotRangeValue(value)) {
463
574
  isSelected = Boolean(value && isSameDay(value, day.date));
464
575
  }
465
- return (react_1.default.createElement(overridesMap.Cell, { key: day.date.getTime(), isToday: markToday && day.isToday, isDisabled: day.isDisabled, accentColor: accentColor, isSelected: isSelected, fill: fill, onClick: handleCellDateClick(day.date) },
576
+ const key = dateKey(day.date);
577
+ return (react_1.default.createElement(overridesMap.Cell, { key: day.date.getTime(), "data-date": key, tabIndex: key === tabbableDateKey ? 0 : -1, "aria-label": dayLabelFormatter === null || dayLabelFormatter === void 0 ? void 0 : dayLabelFormatter.format(day.date), "aria-pressed": isSelected || fill, "aria-current": day.isToday ? 'date' : undefined, isToday: markToday && day.isToday, isDisabled: day.isDisabled, accentColor: accentColor, isSelected: isSelected, fill: fill, onClick: handleCellDateClick(day.date) },
466
578
  getDayLabel(day.date),
467
579
  badge && (react_1.default.createElement(overridesMap.DayBadge, { badgeContent: badge.badgeContent, isToday: day.isToday, accentColor: badge.accentColor }))));
468
580
  }
469
- return (react_1.default.createElement(overridesMap.EmptyCell, { key: day.date.getTime() }, getDayLabel(day.date)));
581
+ return (react_1.default.createElement(overridesMap.EmptyCell, { key: day.date.getTime(), "aria-hidden": true }, getDayLabel(day.date)));
470
582
  })))))), [
471
583
  accentColor,
472
584
  badges,
473
585
  calendarDate,
586
+ dayLabelFormatter,
474
587
  getDayLabel,
475
- getWeeks,
476
588
  handleCellDateClick,
589
+ handleDaysKeyDown,
477
590
  isSameDay,
478
591
  markToday,
479
592
  overridesMap,
593
+ tabbableDateKey,
480
594
  value,
595
+ weeks,
481
596
  ]);
482
597
  const renderViewMonths = react_1.default.useCallback(() => (react_1.default.createElement(overridesMap.MonthsSelector, null, monthsRange.map(monthIndex => {
483
598
  const isSelected = calendarDate.getMonth() === monthIndex;
484
- return (react_1.default.createElement(overridesMap.MonthCell, { key: monthIndex + monthsRange[monthIndex], accentColor: accentColor, isSelected: isSelected, onClick: handleMonthSelected(monthIndex) }, getMonthLabel(new Date(calendarDate.getFullYear(), monthIndex, 1, 0, 0, 0, 0))));
599
+ return (react_1.default.createElement(overridesMap.MonthCell, { key: monthIndex, accentColor: accentColor, isSelected: isSelected, "aria-pressed": isSelected, onClick: handleMonthSelected(monthIndex) }, getMonthLabel(new Date(calendarDate.getFullYear(), monthIndex, 1, 0, 0, 0, 0))));
485
600
  }))), [accentColor, calendarDate, getMonthLabel, handleMonthSelected, monthsRange, overridesMap]);
486
601
  const renderViewYears = react_1.default.useCallback(() => (react_1.default.createElement(overridesMap.YearsSelector, { accentColor: accentColor, date: calendarDate, onChange: y => handleYearSelected(y)(), years: yearsRange, locale: locale, minDate: minDate, maxDate: maxDate })), [
487
602
  accentColor,
@@ -525,7 +640,6 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
525
640
  overridesMap,
526
641
  value,
527
642
  ]);
528
- const initialIndex = react_1.default.useMemo(() => views.findIndex(v => v === view), [views, view]);
529
643
  const getActiveView = react_1.default.useCallback(() => view, [view]);
530
644
  const getCalendarDate = react_1.default.useCallback(() => calendarDate, [calendarDate]);
531
645
  /**
@@ -545,7 +659,7 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
545
659
  typeof heading !== 'undefined' && react_1.default.createElement(overridesMap.Heading, null, heading),
546
660
  typeof subheading !== 'undefined' && (react_1.default.createElement(overridesMap.Subheading, null, subheading)),
547
661
  react_1.default.createElement(overridesMap.Toolbar, null,
548
- react_1.default.createElement(overridesMap.ControlButton, { iconOnly: true, onClick: handlePrevNextClick('prev'), disabled: ['months', 'years'].includes(view) },
662
+ react_1.default.createElement(overridesMap.ControlButton, { iconOnly: true, onClick: handlePrevNextClick('prev'), disabled: view === 'years', "aria-label": prevButtonLabel, title: prevButtonLabel },
549
663
  react_1.default.createElement(overridesMap.IconPrev, null)),
550
664
  react_1.default.createElement(overridesMap.ControlButton, { disabled: !views.includes('months'), onClick: () => {
551
665
  if (view === 'months' && views.includes('days')) {
@@ -563,31 +677,15 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
563
677
  selectView('years');
564
678
  }
565
679
  } }, getYearLabel(calendarDate)),
566
- react_1.default.createElement(overridesMap.ControlButton, { iconOnly: true, onClick: handlePrevNextClick('next'), disabled: ['months', 'years'].includes(view) },
680
+ react_1.default.createElement(overridesMap.ControlButton, { iconOnly: true, onClick: handlePrevNextClick('next'), disabled: view === 'years', "aria-label": nextButtonLabel, title: nextButtonLabel },
567
681
  react_1.default.createElement(overridesMap.IconNext, null)))),
568
682
  view === 'days' && (react_1.default.createElement(overridesMap.WeekDaysBar, { locale: locale, week: weeks[0], format: weekDayLabelFormat || 'short' })),
569
683
  react_1.default.createElement(overridesMap.Body, null,
570
- react_1.default.createElement(StyledSwiper, { draggable: false, ref: swiperRef, initialIndex: initialIndex }, views.map(viewName => {
571
- let renderedView;
572
- switch (viewName) {
573
- case 'days':
574
- renderedView = renderViewDays();
575
- break;
576
- case 'weeks':
577
- renderedView = renderViewWeeks();
578
- break;
579
- case 'months':
580
- renderedView = renderViewMonths();
581
- break;
582
- case 'years':
583
- renderedView = renderViewYears();
584
- break;
585
- default:
586
- renderedView = null;
587
- break;
588
- }
589
- return react_1.default.createElement(Swiper_1.SwiperSlide, { key: viewName }, renderedView);
590
- }))),
684
+ react_1.default.createElement(ViewContainer, { key: view },
685
+ view === 'days' && renderViewDays(),
686
+ view === 'weeks' && renderViewWeeks(),
687
+ view === 'months' && renderViewMonths(),
688
+ view === 'years' && renderViewYears())),
591
689
  (typeof resetButtonLabel !== 'undefined' ||
592
690
  typeof todayButtonLabel !== 'undefined' ||
593
691
  typeof footer !== 'undefined') && (react_1.default.createElement(overridesMap.Footer, null,
@@ -4,5 +4,5 @@ export interface CalendarDayBadgeProps extends React.HTMLAttributes<HTMLSpanElem
4
4
  readonly isToday: boolean;
5
5
  readonly badgeContent: React.ReactNode;
6
6
  }
7
- declare const _default: React.ForwardRefExoticComponent<CalendarDayBadgeProps & React.RefAttributes<HTMLButtonElement>>;
7
+ declare const _default: React.ForwardRefExoticComponent<CalendarDayBadgeProps & React.RefAttributes<HTMLSpanElement>>;
8
8
  export default _default;
@@ -24,20 +24,10 @@ const Btn = (0, styled_1.default)(Button_1.default) `
24
24
  font-size: 0.8em;
25
25
  margin: 0;
26
26
  min-width: 0;
27
- outline: none;
28
27
  flex-basis: 50%;
29
28
  `;
30
29
  const CalendarMonthCell = (props, ref) => {
31
30
  const { children, isSelected, accentColor } = props, restProps = __rest(props, ["children", "isSelected", "accentColor"]);
32
- const myRef = react_1.default.useRef(null);
33
- return (react_1.default.createElement(Btn, Object.assign({}, restProps, { type: "button", variant: isSelected ? 'standard' : 'plain', color: isSelected ? accentColor : 'default', ref: el => {
34
- if (typeof ref === 'function') {
35
- ref(el);
36
- }
37
- if (ref && typeof ref === 'object') {
38
- ref.current = el;
39
- }
40
- myRef.current = el;
41
- } }), children));
31
+ return (react_1.default.createElement(Btn, Object.assign({}, restProps, { type: "button", variant: isSelected ? 'standard' : 'plain', color: isSelected ? accentColor : 'default', ref: ref }), children));
42
32
  };
43
33
  exports.default = react_1.default.forwardRef(CalendarMonthCell);
@@ -6,7 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = __importDefault(require("react"));
7
7
  const styled_1 = __importDefault(require("@emotion/styled"));
8
8
  const CalendarWeekDayLabel = styled_1.default.div `
9
- text-align: center;
9
+ display: flex;
10
+ align-items: center;
11
+ justify-content: center;
10
12
  font-weight: 200;
11
13
  font-size: 0.8em;
12
14
  user-select: none;
@@ -29,6 +29,11 @@ const CalendarWeekDaysBar = (props, ref) => {
29
29
  weekday: format,
30
30
  }).format(day.date)
31
31
  : '\u{0020}'), [format, locale, week]);
32
- return (react_1.default.createElement(Container, Object.assign({}, restProps, { ref: ref }), weekDayLabels.map(label => (react_1.default.createElement(CalendarWeekDayLabel_1.default, { key: label }, label)))));
32
+ return (
33
+ // Hidden from screen readers: every day cell has the full date label with the weekday
34
+ react_1.default.createElement(Container, Object.assign({ "aria-hidden": true }, restProps, { ref: ref }), weekDayLabels.map((label, index) => (
35
+ // The narrow labels repeat (e.g. «С» for Wednesday and Saturday), so the key is the index
36
+ // eslint-disable-next-line react/no-array-index-key
37
+ react_1.default.createElement(CalendarWeekDayLabel_1.default, { key: index }, label)))));
33
38
  };
34
39
  exports.default = react_1.default.forwardRef(CalendarWeekDaysBar);
@@ -24,25 +24,10 @@ const Btn = (0, styled_1.default)(Button_1.default) `
24
24
  font-size: 0.9em;
25
25
  margin: 0;
26
26
  min-width: 0;
27
- outline: none;
28
27
  flex-basis: 33%;
29
28
  `;
30
29
  const CalendarYearCell = (props, ref) => {
31
30
  const { children, isSelected, accentColor } = props, restProps = __rest(props, ["children", "isSelected", "accentColor"]);
32
- const myRef = react_1.default.useRef(null);
33
- // React.useEffect(() => {
34
- // if (isSelected && myRef.current) {
35
- // myRef.current.scrollIntoView({ behavior: 'instant' });
36
- // }
37
- // }, [isSelected]);
38
- return (react_1.default.createElement(Btn, Object.assign({}, restProps, { type: "button", variant: isSelected ? 'standard' : 'plain', color: isSelected ? accentColor : 'default', ref: el => {
39
- if (typeof ref === 'function') {
40
- ref(el);
41
- }
42
- if (ref && typeof ref === 'object') {
43
- ref.current = el;
44
- }
45
- myRef.current = el;
46
- } }), children));
31
+ return (react_1.default.createElement(Btn, Object.assign({}, restProps, { type: "button", variant: isSelected ? 'standard' : 'plain', color: isSelected ? accentColor : 'default', ref: ref }), children));
47
32
  };
48
33
  exports.default = react_1.default.forwardRef(CalendarYearCell);
@@ -16,7 +16,6 @@ export type CalendarYearsSelectorProps = {
16
16
  readonly date: Date;
17
17
  /**
18
18
  * Minimum date limit
19
-
20
19
  */
21
20
  readonly minDate: Date;
22
21
  /**