@via-profit/ui-kit 0.3.0 → 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 (485) 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 +91 -35
  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 +1 -0
  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 +122 -0
  50. package/Calendar/CalendarCell.js +11 -4
  51. package/Calendar/CalendarComponent.d.ts +15 -4
  52. package/Calendar/CalendarComponent.js +150 -55
  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 +1 -1
  61. package/Checkbox/CheckboxAsterisk.d.ts +13 -0
  62. package/{Autocomplete2/Autocomplete2TextField.js → Checkbox/CheckboxAsterisk.js} +24 -10
  63. package/Checkbox/CheckboxBox.d.ts +22 -0
  64. package/Checkbox/CheckboxBox.js +88 -0
  65. package/Checkbox/CheckboxContainer.d.ts +27 -0
  66. package/Checkbox/CheckboxContainer.js +38 -0
  67. package/Checkbox/CheckboxErrorText.d.ts +6 -0
  68. package/Checkbox/CheckboxErrorText.js +76 -0
  69. package/Checkbox/CheckboxIcon.d.ts +10 -0
  70. package/Checkbox/CheckboxIcon.js +57 -0
  71. package/Checkbox/CheckboxTextWrapper.d.ts +4 -0
  72. package/Checkbox/CheckboxTextWrapper.js +29 -0
  73. package/Checkbox/CheckboxWrapper.d.ts +4 -0
  74. package/Checkbox/CheckboxWrapper.js +29 -0
  75. package/Checkbox/index.d.ts +144 -0
  76. package/Checkbox/index.js +71 -0
  77. package/Checkbox/useCheckboxColor.d.ts +6 -0
  78. package/Checkbox/useCheckboxColor.js +33 -0
  79. package/ClickOutside/index.d.ts +6 -0
  80. package/ClickOutside/index.js +7 -2
  81. package/Color/Color.d.ts +4 -4
  82. package/Color/Color.js +9 -5
  83. package/Color/ColorGenerator.d.ts +5 -1
  84. package/CountryFlags/AC.js +5 -1
  85. package/CountryFlags/AD.js +5 -1
  86. package/CountryFlags/AE.js +5 -1
  87. package/CountryFlags/AF.js +5 -1
  88. package/CountryFlags/AG.js +5 -1
  89. package/CountryFlags/AI.js +5 -1
  90. package/CountryFlags/AL.js +5 -1
  91. package/CountryFlags/AM.js +5 -1
  92. package/CountryFlags/AO.js +5 -1
  93. package/CountryFlags/AQ.js +5 -1
  94. package/CountryFlags/AR.js +5 -1
  95. package/CountryFlags/AS.js +5 -1
  96. package/CountryFlags/AT.js +5 -1
  97. package/CountryFlags/AU.js +5 -1
  98. package/CountryFlags/AW.js +5 -1
  99. package/CountryFlags/AX.js +5 -1
  100. package/CountryFlags/AZ.js +5 -1
  101. package/CountryFlags/BA.js +5 -1
  102. package/CountryFlags/BB.js +5 -1
  103. package/CountryFlags/BD.js +5 -1
  104. package/CountryFlags/BE.js +5 -1
  105. package/CountryFlags/BF.js +5 -1
  106. package/CountryFlags/BG.js +5 -1
  107. package/CountryFlags/BH.js +5 -1
  108. package/CountryFlags/BI.js +5 -1
  109. package/CountryFlags/BJ.js +5 -1
  110. package/CountryFlags/BL.js +5 -1
  111. package/CountryFlags/BM.js +5 -1
  112. package/CountryFlags/BN.js +5 -1
  113. package/CountryFlags/BO.js +5 -1
  114. package/CountryFlags/BQ.js +5 -1
  115. package/CountryFlags/BR.js +5 -1
  116. package/CountryFlags/BS.js +5 -1
  117. package/CountryFlags/BT.js +5 -1
  118. package/CountryFlags/BV.js +5 -1
  119. package/CountryFlags/BW.js +5 -1
  120. package/CountryFlags/BY.js +5 -1
  121. package/CountryFlags/BZ.js +5 -1
  122. package/CountryFlags/CA.js +5 -1
  123. package/CountryFlags/CC.js +5 -1
  124. package/CountryFlags/CD.js +5 -1
  125. package/CountryFlags/CF.js +5 -1
  126. package/CountryFlags/CG.js +5 -1
  127. package/CountryFlags/CH.js +5 -1
  128. package/CountryFlags/CI.js +5 -1
  129. package/CountryFlags/CK.js +5 -1
  130. package/CountryFlags/CL.js +5 -1
  131. package/CountryFlags/CM.js +5 -1
  132. package/CountryFlags/CN.js +5 -1
  133. package/CountryFlags/CO.js +5 -1
  134. package/CountryFlags/CR.js +5 -1
  135. package/CountryFlags/CU.js +5 -1
  136. package/CountryFlags/CV.js +5 -1
  137. package/CountryFlags/CW.js +5 -1
  138. package/CountryFlags/CX.js +5 -1
  139. package/CountryFlags/CY.js +5 -1
  140. package/CountryFlags/CZ.js +5 -1
  141. package/CountryFlags/DE.js +5 -1
  142. package/CountryFlags/DJ.js +5 -1
  143. package/CountryFlags/DK.js +5 -1
  144. package/CountryFlags/DM.js +5 -1
  145. package/CountryFlags/DO.js +5 -1
  146. package/CountryFlags/DZ.js +5 -1
  147. package/CountryFlags/EC.js +5 -1
  148. package/CountryFlags/EE.js +5 -1
  149. package/CountryFlags/EG.js +5 -1
  150. package/CountryFlags/EH.js +5 -1
  151. package/CountryFlags/ER.js +5 -1
  152. package/CountryFlags/ES.js +5 -1
  153. package/CountryFlags/ET.js +5 -1
  154. package/CountryFlags/EU.js +5 -1
  155. package/CountryFlags/FI.js +5 -1
  156. package/CountryFlags/FJ.js +5 -1
  157. package/CountryFlags/FK.js +5 -1
  158. package/CountryFlags/FM.js +5 -1
  159. package/CountryFlags/FO.js +5 -1
  160. package/CountryFlags/FR.js +5 -1
  161. package/CountryFlags/GA.js +5 -1
  162. package/CountryFlags/GB.js +5 -1
  163. package/CountryFlags/GD.js +5 -1
  164. package/CountryFlags/GE.js +5 -1
  165. package/CountryFlags/GEAB.js +5 -1
  166. package/CountryFlags/GEOS.js +5 -1
  167. package/CountryFlags/GF.js +5 -1
  168. package/CountryFlags/GG.js +5 -1
  169. package/CountryFlags/GH.js +5 -1
  170. package/CountryFlags/GI.js +5 -1
  171. package/CountryFlags/GL.js +5 -1
  172. package/CountryFlags/GM.js +5 -1
  173. package/CountryFlags/GN.js +5 -1
  174. package/CountryFlags/GP.js +5 -1
  175. package/CountryFlags/GQ.js +5 -1
  176. package/CountryFlags/GR.js +5 -1
  177. package/CountryFlags/GS.js +5 -1
  178. package/CountryFlags/GT.js +5 -1
  179. package/CountryFlags/GU.js +5 -1
  180. package/CountryFlags/GW.js +5 -1
  181. package/CountryFlags/GY.js +5 -1
  182. package/CountryFlags/HK.js +5 -1
  183. package/CountryFlags/HM.js +5 -1
  184. package/CountryFlags/HN.js +5 -1
  185. package/CountryFlags/HR.js +5 -1
  186. package/CountryFlags/HT.js +5 -1
  187. package/CountryFlags/HU.js +5 -1
  188. package/CountryFlags/IC.js +5 -1
  189. package/CountryFlags/ID.js +5 -1
  190. package/CountryFlags/IE.js +5 -1
  191. package/CountryFlags/IL.js +5 -1
  192. package/CountryFlags/IM.js +5 -1
  193. package/CountryFlags/IN.js +5 -1
  194. package/CountryFlags/IO.js +5 -1
  195. package/CountryFlags/IQ.js +5 -1
  196. package/CountryFlags/IR.js +5 -1
  197. package/CountryFlags/IS.js +5 -1
  198. package/CountryFlags/IT.js +5 -1
  199. package/CountryFlags/JE.js +5 -1
  200. package/CountryFlags/JM.js +5 -1
  201. package/CountryFlags/JO.js +5 -1
  202. package/CountryFlags/JP.js +5 -1
  203. package/CountryFlags/KE.js +5 -1
  204. package/CountryFlags/KG.js +5 -1
  205. package/CountryFlags/KH.js +5 -1
  206. package/CountryFlags/KI.js +5 -1
  207. package/CountryFlags/KM.js +5 -1
  208. package/CountryFlags/KN.js +5 -1
  209. package/CountryFlags/KP.js +5 -1
  210. package/CountryFlags/KR.js +5 -1
  211. package/CountryFlags/KW.js +5 -1
  212. package/CountryFlags/KY.js +5 -1
  213. package/CountryFlags/KZ.js +5 -1
  214. package/CountryFlags/LA.js +5 -1
  215. package/CountryFlags/LB.js +5 -1
  216. package/CountryFlags/LC.js +5 -1
  217. package/CountryFlags/LI.js +5 -1
  218. package/CountryFlags/LK.js +5 -1
  219. package/CountryFlags/LR.js +5 -1
  220. package/CountryFlags/LS.js +5 -1
  221. package/CountryFlags/LT.js +5 -1
  222. package/CountryFlags/LU.js +5 -1
  223. package/CountryFlags/LV.js +5 -1
  224. package/CountryFlags/LY.js +5 -1
  225. package/CountryFlags/MA.js +5 -1
  226. package/CountryFlags/MC.js +5 -1
  227. package/CountryFlags/MD.js +5 -1
  228. package/CountryFlags/ME.js +5 -1
  229. package/CountryFlags/MF.js +5 -1
  230. package/CountryFlags/MG.js +5 -1
  231. package/CountryFlags/MH.js +5 -1
  232. package/CountryFlags/MK.js +5 -1
  233. package/CountryFlags/ML.js +5 -1
  234. package/CountryFlags/MM.js +5 -1
  235. package/CountryFlags/MN.js +5 -1
  236. package/CountryFlags/MO.js +5 -1
  237. package/CountryFlags/MP.js +5 -1
  238. package/CountryFlags/MQ.js +5 -1
  239. package/CountryFlags/MR.js +5 -1
  240. package/CountryFlags/MS.js +5 -1
  241. package/CountryFlags/MT.js +5 -1
  242. package/CountryFlags/MU.js +5 -1
  243. package/CountryFlags/MV.js +5 -1
  244. package/CountryFlags/MW.js +5 -1
  245. package/CountryFlags/MX.js +5 -1
  246. package/CountryFlags/MY.js +5 -1
  247. package/CountryFlags/MZ.js +5 -1
  248. package/CountryFlags/NA.js +5 -1
  249. package/CountryFlags/NC.js +5 -1
  250. package/CountryFlags/NE.js +5 -1
  251. package/CountryFlags/NF.js +5 -1
  252. package/CountryFlags/NG.js +5 -1
  253. package/CountryFlags/NI.js +5 -1
  254. package/CountryFlags/NL.js +5 -1
  255. package/CountryFlags/NO.js +5 -1
  256. package/CountryFlags/NP.js +5 -1
  257. package/CountryFlags/NR.js +5 -1
  258. package/CountryFlags/NU.js +5 -1
  259. package/CountryFlags/NZ.js +5 -1
  260. package/CountryFlags/OM.js +5 -1
  261. package/CountryFlags/PA.js +5 -1
  262. package/CountryFlags/PE.js +5 -1
  263. package/CountryFlags/PF.js +5 -1
  264. package/CountryFlags/PG.js +5 -1
  265. package/CountryFlags/PH.js +5 -1
  266. package/CountryFlags/PK.js +5 -1
  267. package/CountryFlags/PL.js +5 -1
  268. package/CountryFlags/PM.js +5 -1
  269. package/CountryFlags/PN.js +5 -1
  270. package/CountryFlags/PR.js +5 -1
  271. package/CountryFlags/PS.js +5 -1
  272. package/CountryFlags/PT.js +5 -1
  273. package/CountryFlags/PW.js +5 -1
  274. package/CountryFlags/PY.js +5 -1
  275. package/CountryFlags/QA.js +5 -1
  276. package/CountryFlags/RE.js +5 -1
  277. package/CountryFlags/RO.js +5 -1
  278. package/CountryFlags/RS.js +5 -1
  279. package/CountryFlags/RU.js +5 -1
  280. package/CountryFlags/RW.js +5 -1
  281. package/CountryFlags/SA.js +5 -1
  282. package/CountryFlags/SB.js +5 -1
  283. package/CountryFlags/SC.js +5 -1
  284. package/CountryFlags/SD.js +5 -1
  285. package/CountryFlags/SE.js +5 -1
  286. package/CountryFlags/SG.js +5 -1
  287. package/CountryFlags/SH.js +5 -1
  288. package/CountryFlags/SI.js +5 -1
  289. package/CountryFlags/SJ.js +5 -1
  290. package/CountryFlags/SK.js +5 -1
  291. package/CountryFlags/SL.js +5 -1
  292. package/CountryFlags/SM.js +5 -1
  293. package/CountryFlags/SN.js +5 -1
  294. package/CountryFlags/SO.js +5 -1
  295. package/CountryFlags/SR.js +5 -1
  296. package/CountryFlags/SS.js +5 -1
  297. package/CountryFlags/ST.js +5 -1
  298. package/CountryFlags/SV.js +5 -1
  299. package/CountryFlags/SX.js +5 -1
  300. package/CountryFlags/SY.js +5 -1
  301. package/CountryFlags/SZ.js +5 -1
  302. package/CountryFlags/TA.js +5 -1
  303. package/CountryFlags/TC.js +5 -1
  304. package/CountryFlags/TD.js +5 -1
  305. package/CountryFlags/TF.js +5 -1
  306. package/CountryFlags/TG.js +5 -1
  307. package/CountryFlags/TH.js +5 -1
  308. package/CountryFlags/TJ.js +5 -1
  309. package/CountryFlags/TK.js +5 -1
  310. package/CountryFlags/TL.js +5 -1
  311. package/CountryFlags/TM.js +5 -1
  312. package/CountryFlags/TN.js +5 -1
  313. package/CountryFlags/TO.js +5 -1
  314. package/CountryFlags/TR.js +5 -1
  315. package/CountryFlags/TT.js +5 -1
  316. package/CountryFlags/TV.js +5 -1
  317. package/CountryFlags/TW.js +5 -1
  318. package/CountryFlags/TZ.js +5 -1
  319. package/CountryFlags/UA.js +5 -1
  320. package/CountryFlags/UG.js +5 -1
  321. package/CountryFlags/UM.js +5 -1
  322. package/CountryFlags/US.js +5 -1
  323. package/CountryFlags/UY.js +5 -1
  324. package/CountryFlags/UZ.js +5 -1
  325. package/CountryFlags/Uknown.d.ts +7 -3
  326. package/CountryFlags/Uknown.js +9 -31
  327. package/CountryFlags/Unknown.d.ts +3 -0
  328. package/CountryFlags/Unknown.js +42 -0
  329. package/CountryFlags/VA.js +5 -1
  330. package/CountryFlags/VC.js +5 -1
  331. package/CountryFlags/VE.js +5 -1
  332. package/CountryFlags/VG.js +5 -1
  333. package/CountryFlags/VI.js +5 -1
  334. package/CountryFlags/VN.js +5 -1
  335. package/CountryFlags/VU.js +5 -1
  336. package/CountryFlags/WF.js +5 -1
  337. package/CountryFlags/WS.js +5 -1
  338. package/CountryFlags/XK.js +5 -1
  339. package/CountryFlags/YE.js +5 -1
  340. package/CountryFlags/YT.js +5 -1
  341. package/CountryFlags/ZA.js +5 -1
  342. package/CountryFlags/ZM.js +5 -1
  343. package/CountryFlags/ZW.js +5 -1
  344. package/CountryFlags/index.d.ts +2 -1
  345. package/CountryFlags/index.js +3 -1
  346. package/CountryFlags/isLabelled.d.ts +6 -0
  347. package/CountryFlags/isLabelled.js +7 -0
  348. package/DatePicker/index.d.ts +19 -6
  349. package/DatePicker/index.js +59 -12
  350. package/Grid/index.d.ts +60 -0
  351. package/Grid/index.js +43 -0
  352. package/Highlighted/index.d.ts +1 -1
  353. package/Highlighted/index.js +14 -10
  354. package/LoadingIndicator/LoadingOverlay.d.ts +11 -0
  355. package/LoadingIndicator/LoadingOverlay.js +63 -0
  356. package/LoadingIndicator/Spinner.d.ts +34 -5
  357. package/LoadingIndicator/Spinner.js +48 -37
  358. package/LoadingIndicator/SpinnerCircle.d.ts +14 -0
  359. package/LoadingIndicator/SpinnerCircle.js +34 -0
  360. package/LoadingIndicator/index.d.ts +8 -3
  361. package/LoadingIndicator/index.js +9 -15
  362. package/MaskedField/index.d.ts +3 -2
  363. package/MaskedField/index.js +7 -2
  364. package/MaskedField/templates.js +2 -0
  365. package/MaskedField/useMasked.js +9 -6
  366. package/Menu/MenuContainer.d.ts +8 -0
  367. package/Menu/MenuContainer.js +101 -30
  368. package/Menu/MenuItem.js +1 -1
  369. package/Menu/context.js +5 -0
  370. package/Modal/BaseModal/useDialogID.d.ts +6 -0
  371. package/Modal/BaseModal/useDialogID.js +12 -0
  372. package/Modal/ConfirmBox/ConfirmBoxContainer.js +5 -1
  373. package/Modal/ConfirmBox/index.js +2 -1
  374. package/Modal/Dialog/DialogInner.js +1 -1
  375. package/Modal/Dialog/index.js +12 -7
  376. package/Modal/Drawer/DrawerHeader.d.ts +20 -0
  377. package/Modal/Drawer/DrawerHeader.js +3 -3
  378. package/Modal/Drawer/DrawerInner.js +9 -1
  379. package/Modal/Drawer/index.d.ts +7 -0
  380. package/Modal/Drawer/index.js +12 -10
  381. package/Modal/MessageBox/MessageBoxContainer.js +1 -1
  382. package/Modal/MessageBox/index.js +2 -1
  383. package/PhoneField/CountryFlagComponent.js +2 -2
  384. package/PhoneField/UnknownFlag.d.ts +6 -3
  385. package/PhoneField/UnknownFlag.js +8 -31
  386. package/PhoneField/index.js +45 -55
  387. package/PhoneField/templates.js +13 -14
  388. package/PhoneField/usePhoneUtils.d.ts +15 -0
  389. package/PhoneField/usePhoneUtils.js +30 -37
  390. package/Popper/Popper.d.ts +28 -8
  391. package/Popper/usePopper.d.ts +21 -31
  392. package/README.md +27 -10
  393. package/Radio/RadioBox.d.ts +14 -0
  394. package/Radio/RadioBox.js +100 -0
  395. package/Radio/RadioContainer.d.ts +27 -0
  396. package/Radio/RadioContainer.js +38 -0
  397. package/Radio/RadioTextWrapper.d.ts +4 -0
  398. package/Radio/RadioTextWrapper.js +29 -0
  399. package/Radio/index.d.ts +64 -0
  400. package/Radio/index.js +49 -0
  401. package/Radio/useRadioColor.d.ts +6 -0
  402. package/Radio/useRadioColor.js +33 -0
  403. package/RadioGroup/RadioGroupAsterisk.d.ts +13 -0
  404. package/RadioGroup/RadioGroupAsterisk.js +53 -0
  405. package/RadioGroup/RadioGroupContainer.d.ts +4 -0
  406. package/RadioGroup/RadioGroupContainer.js +36 -0
  407. package/RadioGroup/RadioGroupContext.d.ts +20 -0
  408. package/RadioGroup/RadioGroupContext.js +11 -0
  409. package/RadioGroup/RadioGroupErrorText.d.ts +6 -0
  410. package/RadioGroup/RadioGroupErrorText.js +76 -0
  411. package/RadioGroup/RadioGroupItems.d.ts +9 -0
  412. package/RadioGroup/RadioGroupItems.js +30 -0
  413. package/RadioGroup/RadioGroupLegend.d.ts +4 -0
  414. package/RadioGroup/RadioGroupLegend.js +37 -0
  415. package/RadioGroup/index.d.ts +134 -0
  416. package/RadioGroup/index.js +62 -0
  417. package/Selectbox/index.d.ts +18 -2
  418. package/Selectbox/index.js +23 -7
  419. package/Stack/index.d.ts +62 -0
  420. package/Stack/index.js +38 -0
  421. package/Surface/SurfaceContainer.js +6 -0
  422. package/Surface/index.js +7 -3
  423. package/Swiper/Swiper.d.ts +28 -2
  424. package/Swiper/Swiper.js +233 -90
  425. package/Swiper/SwiperContainer.js +0 -2
  426. package/Swiper/SwiperSlidesRenderer.d.ts +8 -0
  427. package/Swiper/SwiperSlidesRenderer.js +17 -14
  428. package/Swiper/SwiperTrack.d.ts +8 -0
  429. package/Swiper/SwiperTrack.js +8 -3
  430. package/Swiper/SwiperWrapper.js +9 -1
  431. package/Switch/SwitchContainer.d.ts +1 -1
  432. package/Switch/SwitchContainer.js +5 -5
  433. package/Switch/SwitchDot.js +13 -53
  434. package/Switch/SwitchToggleWrapper.d.ts +1 -1
  435. package/Switch/SwitchToggleWrapper.js +5 -6
  436. package/Switch/SwitchTrack.js +5 -41
  437. package/Switch/index.d.ts +4 -4
  438. package/Switch/index.js +21 -11
  439. package/Switch/useSwitchColor.d.ts +7 -0
  440. package/Switch/useSwitchColor.js +33 -0
  441. package/Table/Table.d.ts +6 -0
  442. package/Table/Table.js +7 -62
  443. package/Table/TableBody.d.ts +1 -1
  444. package/Table/TableBody.js +4 -2
  445. package/Table/TableCaption.d.ts +2 -2
  446. package/Table/TableCaption.js +2 -3
  447. package/Table/TableCell.js +2 -5
  448. package/Table/TableFooter.js +8 -7
  449. package/Table/TableHeader.js +6 -2
  450. package/Table/TableHeaderCell.js +8 -9
  451. package/Table/TableRow.js +1 -5
  452. package/TextArea/TextAreaIconWrapper.d.ts +1 -1
  453. package/TextArea/TextAreaInput.js +2 -0
  454. package/TextArea/index.js +1 -1
  455. package/TextField/TextFieldInput.js +2 -0
  456. package/TextField/TextFieldInputWrapper.d.ts +2 -0
  457. package/TextField/TextFieldInputWrapper.js +12 -2
  458. package/TextField/index.js +1 -1
  459. package/ThemeProvider/createTheme.js +2 -3
  460. package/ThemeProvider/index.d.ts +19 -2
  461. package/Typography/Base.d.ts +1 -1
  462. package/Typography/Base.js +1 -1
  463. package/Typography/Blockquote.js +1 -1
  464. package/Typography/Del.js +2 -2
  465. package/Typography/H4.js +1 -1
  466. package/Typography/H5.js +2 -2
  467. package/Typography/H6.d.ts +4 -0
  468. package/Typography/H6.js +28 -0
  469. package/Typography/SectionDescription.js +0 -1
  470. package/Typography/SectionTitle.d.ts +4 -7
  471. package/Typography/SectionTitle.js +26 -8
  472. package/Typography/index.d.ts +27 -0
  473. package/Typography/index.js +35 -0
  474. package/package.json +2 -4
  475. package/utils/spacing.d.ts +11 -0
  476. package/utils/spacing.js +14 -0
  477. package/Autocomplete/OverrideMenuList.d.ts +0 -4
  478. package/Autocomplete/OverrideMenuList.js +0 -39
  479. package/Autocomplete2/Autocomplete2.d.ts +0 -12
  480. package/Autocomplete2/Autocomplete2.js +0 -83
  481. package/Autocomplete2/Autocomplete2TextField.d.ts +0 -7
  482. package/Autocomplete2/index.d.ts +0 -2
  483. package/Autocomplete2/index.js +0 -7
  484. package/CountryFlags/SwiperOverview.d.ts +0 -257
  485. 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: 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, } = 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
  */
@@ -202,7 +215,7 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
202
215
  WeekRowButton: (overrides === null || overrides === void 0 ? void 0 : overrides.WeekRowButton) || CalendarWeekRowButton_1.default,
203
216
  WeekDayWeekNumber: (overrides === null || overrides === void 0 ? void 0 : overrides.WeekDayWeekNumber) || CalendarWeekDayWeekNumber_1.default,
204
217
  }), [overrides]);
205
- const swiperRef = react_1.default.useRef(null);
218
+ const dateContainerRef = react_1.default.useRef(null);
206
219
  /**
207
220
  * Inside date value
208
221
  */
@@ -214,7 +227,16 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
214
227
  * Selected value
215
228
  */
216
229
  const inputValueRef = react_1.default.useRef(inputValue);
217
- 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);
218
240
  /**
219
241
  * Current view mode
220
242
  */
@@ -229,16 +251,11 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
229
251
  const [views, setComputedViews] = react_1.default.useState(() => computeViews(inputViews, range));
230
252
  const setViews = react_1.default.useCallback((variants) => setComputedViews(variants), []);
231
253
  const selectView = react_1.default.useCallback((view) => {
232
- var _a;
233
254
  const nextViews = views.includes(view) ? views : [...views, view];
234
255
  if (nextViews !== views) {
235
256
  setViews(nextViews);
236
257
  }
237
258
  setView(view);
238
- const index = nextViews.findIndex(v => v === view);
239
- if (index > -1) {
240
- (_a = swiperRef.current) === null || _a === void 0 ? void 0 : _a.goToIndex(index);
241
- }
242
259
  }, [setViews, views]);
243
260
  /**
244
261
  * Controlled `view` property was changed
@@ -330,6 +347,7 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
330
347
  }, [calendarDate, view]);
331
348
  const handleCellDateClick = react_1.default.useCallback((selectedDate) => () => {
332
349
  var _a;
350
+ setFocusedDate(selectedDate);
333
351
  const nextView = getNextAvailableView();
334
352
  if (nextView) {
335
353
  setView(nextView);
@@ -373,7 +391,7 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
373
391
  setValue(selectedValue);
374
392
  }
375
393
  }
376
- }, [calendarDate, getNextAvailableView, onChange, selectView, range, inputValue]);
394
+ }, [getNextAvailableView, onChange, selectView, range, inputValue]);
377
395
  /**
378
396
  * Handle of click on month item
379
397
  */
@@ -449,7 +467,97 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
449
467
  const weeks = react_1.default.useMemo(() => getWeeks(calendarDate), [calendarDate, getWeeks]);
450
468
  const yearsRange = react_1.default.useMemo(() => getYearsRange(minDate, maxDate), [minDate, maxDate, getYearsRange]);
451
469
  const monthsRange = react_1.default.useMemo(() => getMonthsRange(minDate, maxDate, calendarDate.getFullYear()), [minDate, maxDate, getMonthsRange, calendarDate]);
452
- 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 => {
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 => {
453
561
  if (day.date.getMonth() === calendarDate.getMonth()) {
454
562
  const badge = badges.find(b => isSameDay(b.date, day.date));
455
563
  let fill = false;
@@ -465,26 +573,30 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
465
573
  else if (isNotRangeValue(value)) {
466
574
  isSelected = Boolean(value && isSameDay(value, day.date));
467
575
  }
468
- 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) },
469
578
  getDayLabel(day.date),
470
579
  badge && (react_1.default.createElement(overridesMap.DayBadge, { badgeContent: badge.badgeContent, isToday: day.isToday, accentColor: badge.accentColor }))));
471
580
  }
472
- 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)));
473
582
  })))))), [
474
583
  accentColor,
475
584
  badges,
476
585
  calendarDate,
586
+ dayLabelFormatter,
477
587
  getDayLabel,
478
- getWeeks,
479
588
  handleCellDateClick,
589
+ handleDaysKeyDown,
480
590
  isSameDay,
481
591
  markToday,
482
592
  overridesMap,
593
+ tabbableDateKey,
483
594
  value,
595
+ weeks,
484
596
  ]);
485
597
  const renderViewMonths = react_1.default.useCallback(() => (react_1.default.createElement(overridesMap.MonthsSelector, null, monthsRange.map(monthIndex => {
486
598
  const isSelected = calendarDate.getMonth() === monthIndex;
487
- return (react_1.default.createElement(overridesMap.MonthCell, { key: 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))));
488
600
  }))), [accentColor, calendarDate, getMonthLabel, handleMonthSelected, monthsRange, overridesMap]);
489
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 })), [
490
602
  accentColor,
@@ -528,7 +640,6 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
528
640
  overridesMap,
529
641
  value,
530
642
  ]);
531
- const initialIndex = react_1.default.useMemo(() => views.findIndex(v => v === view), [views, view]);
532
643
  const getActiveView = react_1.default.useCallback(() => view, [view]);
533
644
  const getCalendarDate = react_1.default.useCallback(() => calendarDate, [calendarDate]);
534
645
  /**
@@ -548,7 +659,7 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
548
659
  typeof heading !== 'undefined' && react_1.default.createElement(overridesMap.Heading, null, heading),
549
660
  typeof subheading !== 'undefined' && (react_1.default.createElement(overridesMap.Subheading, null, subheading)),
550
661
  react_1.default.createElement(overridesMap.Toolbar, null,
551
- 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 },
552
663
  react_1.default.createElement(overridesMap.IconPrev, null)),
553
664
  react_1.default.createElement(overridesMap.ControlButton, { disabled: !views.includes('months'), onClick: () => {
554
665
  if (view === 'months' && views.includes('days')) {
@@ -566,31 +677,15 @@ const CalendarComponent = react_1.default.forwardRef((props, ref) => {
566
677
  selectView('years');
567
678
  }
568
679
  } }, getYearLabel(calendarDate)),
569
- 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 },
570
681
  react_1.default.createElement(overridesMap.IconNext, null)))),
571
682
  view === 'days' && (react_1.default.createElement(overridesMap.WeekDaysBar, { locale: locale, week: weeks[0], format: weekDayLabelFormat || 'short' })),
572
683
  react_1.default.createElement(overridesMap.Body, null,
573
- react_1.default.createElement(StyledSwiper, { draggable: false, ref: swiperRef, initialIndex: initialIndex }, views.map(viewName => {
574
- let renderedView;
575
- switch (viewName) {
576
- case 'days':
577
- renderedView = renderViewDays();
578
- break;
579
- case 'weeks':
580
- renderedView = renderViewWeeks();
581
- break;
582
- case 'months':
583
- renderedView = renderViewMonths();
584
- break;
585
- case 'years':
586
- renderedView = renderViewYears();
587
- break;
588
- default:
589
- renderedView = null;
590
- break;
591
- }
592
- return react_1.default.createElement(Swiper_1.SwiperSlide, { key: viewName }, renderedView);
593
- }))),
684
+ react_1.default.createElement(ViewContainer, { key: view },
685
+ view === 'days' && renderViewDays(),
686
+ view === 'weeks' && renderViewWeeks(),
687
+ view === 'months' && renderViewMonths(),
688
+ view === 'years' && renderViewYears())),
594
689
  (typeof resetButtonLabel !== 'undefined' ||
595
690
  typeof todayButtonLabel !== 'undefined' ||
596
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
  /**
@@ -7,27 +7,23 @@ const react_1 = __importDefault(require("react"));
7
7
  const styled_1 = __importDefault(require("@emotion/styled"));
8
8
  const CalendarYearCell_1 = __importDefault(require("./CalendarYearCell"));
9
9
  const use_calendar_1 = __importDefault(require("./use-calendar"));
10
- const VirtualizedList_1 = __importDefault(require("../Menu/VirtualizedList"));
10
+ /**
11
+ * A plain scrollable grid: a couple of hundreds buttons do not need the virtualization
12
+ */
11
13
  const SelectorContainer = styled_1.default.div `
12
- display: flex;
13
14
  flex: 1;
15
+ display: flex;
16
+ flex-wrap: wrap;
17
+ align-content: flex-start;
18
+ overflow-y: auto;
14
19
  padding: 0.8em;
15
20
  height: 100%;
16
- width: 100%;
17
- `;
18
- const SelectorContainerInner = styled_1.default.div `
19
- flex: 1;
20
- position: relative;
21
- `;
22
- const Chunk = styled_1.default.div `
23
- display: flex;
24
- align-items: center;
25
- justify-content: space-between;
21
+ box-sizing: border-box;
26
22
  `;
27
23
  const CalendarYearsSelector = (props, ref) => {
28
- const containerRef = react_1.default.useRef(null);
29
24
  const { years, date, overrides, accentColor = 'primary', locale = 'ru-RU', minDate, maxDate, onChange, } = props;
30
- const [maxHeight, setMaxHeight] = react_1.default.useState(undefined);
25
+ const containerRef = react_1.default.useRef(null);
26
+ const selectedRef = react_1.default.useRef(null);
31
27
  const overridesMap = react_1.default.useMemo(() => ({
32
28
  YearCell: (overrides === null || overrides === void 0 ? void 0 : overrides.YearCell) || CalendarYearCell_1.default,
33
29
  }), [overrides]);
@@ -38,29 +34,31 @@ const CalendarYearsSelector = (props, ref) => {
38
34
  weekStartDay: 'monday',
39
35
  displayLeadingZero: false,
40
36
  });
41
- const items2 = react_1.default.useMemo(() => {
42
- const list = [];
43
- for (let i = 0; i < years.length; i += 3) {
44
- list.push(years.slice(i, i + 3).map(year => {
45
- const item = {
46
- value: year,
47
- label: getYearLabel(new Date(year, date.getMonth(), date.getDate(), 0, 0, 0, 0)),
48
- };
49
- return item;
50
- }));
51
- }
52
- return list;
53
- }, [date, getYearLabel, years]);
37
+ // Show the selected year in the middle of the list.
38
+ // The container is scrolled directly: scrollIntoView would scroll the page too
54
39
  react_1.default.useLayoutEffect(() => {
55
- if (containerRef.current) {
56
- setMaxHeight(containerRef.current.getBoundingClientRect().height);
40
+ const container = containerRef.current;
41
+ const selected = selectedRef.current;
42
+ if (container && selected) {
43
+ container.scrollTop =
44
+ selected.offsetTop -
45
+ container.offsetTop -
46
+ container.clientHeight / 2 +
47
+ selected.offsetHeight / 2;
57
48
  }
58
49
  }, []);
59
- const renderItem = react_1.default.useCallback((item) => (react_1.default.createElement(Chunk, null, item.map(item => {
60
- const isSelected = date.getFullYear() === item.value;
61
- return (react_1.default.createElement(overridesMap.YearCell, { key: item.value, accentColor: accentColor, isSelected: isSelected, onClick: () => onChange(item.value) }, item.label));
62
- }))), [accentColor, date, onChange, overridesMap]);
63
- return (react_1.default.createElement(SelectorContainer, { ref: ref },
64
- react_1.default.createElement(SelectorContainerInner, { ref: containerRef }, maxHeight && react_1.default.createElement(VirtualizedList_1.default, { items: items2, renderItem: renderItem }))));
50
+ const setRefs = (el) => {
51
+ containerRef.current = el;
52
+ if (typeof ref === 'function') {
53
+ ref(el);
54
+ }
55
+ else if (ref) {
56
+ ref.current = el;
57
+ }
58
+ };
59
+ return (react_1.default.createElement(SelectorContainer, { ref: setRefs }, years.map(year => {
60
+ const isSelected = date.getFullYear() === year;
61
+ return (react_1.default.createElement(overridesMap.YearCell, { key: year, ref: isSelected ? selectedRef : undefined, accentColor: accentColor, isSelected: isSelected, "aria-pressed": isSelected, onClick: () => onChange(year) }, getYearLabel(new Date(year, 0, 1))));
62
+ })));
65
63
  };
66
64
  exports.default = react_1.default.forwardRef(CalendarYearsSelector);
@@ -1,4 +1,4 @@
1
- export type CalendarValue<Range> = Range extends undefined ? Date | null : [Date, Date] | [Date, Date | null] | null;
1
+ export type CalendarValue<Range> = Range extends true ? [Date, Date] | [Date, Date | null] | null : Date | null;
2
2
  export type WeekDayName = 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday';
3
3
  export type Day = {
4
4
  readonly date: Date;
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ export interface CheckboxAsteriskProps extends React.HTMLAttributes<HTMLSpanElement> {
3
+ /**
4
+ * If true, the asterisk will be set the error color
5
+ */
6
+ readonly error?: boolean;
7
+ /**
8
+ * Not used
9
+ */
10
+ readonly focused?: boolean;
11
+ }
12
+ declare const _default: React.ForwardRefExoticComponent<CheckboxAsteriskProps & React.RefAttributes<HTMLSpanElement>>;
13
+ export default _default;
@@ -22,18 +22,32 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
+ var __rest = (this && this.__rest) || function (s, e) {
26
+ var t = {};
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
+ t[p] = s[p];
29
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
+ t[p[i]] = s[p[i]];
33
+ }
34
+ return t;
35
+ };
25
36
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
37
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
38
  };
28
39
  Object.defineProperty(exports, "__esModule", { value: true });
29
40
  const React = __importStar(require("react"));
30
- const TextField_1 = __importDefault(require("../TextField"));
31
- const Autocomplete2TextField = React.forwardRef((props, ref) => {
32
- const { value, onChange } = props;
33
- const handleChange = React.useCallback(event => {
34
- onChange(event.target.value);
35
- }, [onChange]);
36
- return React.createElement(TextField_1.default, { value: value, onChange: handleChange, ref: ref });
37
- });
38
- Autocomplete2TextField.displayName = 'Autocomplete2TextField';
39
- exports.default = Autocomplete2TextField;
41
+ const styled_1 = __importDefault(require("@emotion/styled"));
42
+ const Asterisk = styled_1.default.span `
43
+ font-size: 0.8em;
44
+ margin-left: 0.2em;
45
+ position: relative;
46
+ top: -0.4em;
47
+ color: ${({ theme }) => theme.color.error.toString()};
48
+ `;
49
+ const CheckboxAsterisk = (props, ref) => {
50
+ const { children, error, focused } = props, nativeProps = __rest(props, ["children", "error", "focused"]);
51
+ return (React.createElement(Asterisk, Object.assign({}, nativeProps, { "$error": error, "$focused": focused, ref: ref }), children));
52
+ };
53
+ exports.default = React.forwardRef(CheckboxAsterisk);
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ export type CheckboxBoxProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> & {
3
+ /**
4
+ * Shows the dash instead of the check mark (e.g. «select all» when only some items are selected)
5
+ */
6
+ readonly indeterminate?: boolean;
7
+ /**
8
+ * Paints the border with the error color
9
+ */
10
+ readonly error?: boolean;
11
+ };
12
+ declare const _default: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<HTMLInputElement>, "type"> & {
13
+ /**
14
+ * Shows the dash instead of the check mark (e.g. «select all» when only some items are selected)
15
+ */
16
+ readonly indeterminate?: boolean | undefined;
17
+ /**
18
+ * Paints the border with the error color
19
+ */
20
+ readonly error?: boolean | undefined;
21
+ } & React.RefAttributes<HTMLInputElement>>;
22
+ export default _default;