@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
@@ -63,11 +63,14 @@ const MaskedField = (props, ref) => {
63
63
  const formatted = masked.formatParsedInput(parsed.text, m, parsed.caret);
64
64
  const finalText = transform ? transform(formatted.text) : formatted.text;
65
65
  setInputValue(finalText);
66
+ // The input shows finalText after the render anyway,
67
+ // this makes the event consistent with the payload
68
+ event.currentTarget.value = finalText;
66
69
  onChange({
67
70
  caret: formatted.caret,
68
71
  isValid: formatted.isValid,
69
72
  text: finalText,
70
- });
73
+ }, event);
71
74
  // Устанавливаем caret после рендера
72
75
  requestAnimationFrame(() => {
73
76
  var _a;
@@ -83,6 +86,8 @@ const MaskedField = (props, ref) => {
83
86
  nativeProps.inputRef.current = elem;
84
87
  }
85
88
  }, [nativeProps]);
86
- return (react_1.default.createElement(TextField_1.default, Object.assign({ ref: ref }, nativeProps, { type: "text", value: inputValue, onChange: handleOnChange, inputRef: setInputRef })));
89
+ return (react_1.default.createElement(TextField_1.default, Object.assign({ ref: ref }, nativeProps, {
90
+ // The caret can be moved only in text-like inputs, `tel` also brings up the phone keypad
91
+ type: nativeProps.type === 'tel' ? 'tel' : 'text', value: inputValue, onChange: handleOnChange, inputRef: setInputRef })));
87
92
  };
88
93
  exports.default = react_1.default.forwardRef(MaskedField);
@@ -57,6 +57,8 @@ exports.ogrnip = [
57
57
  /\d/,
58
58
  /\d/,
59
59
  /\d/,
60
+ /\d/,
61
+ /\d/,
60
62
  ];
61
63
  exports.vin = [
62
64
  /[A-HJ-NPR-Z0-9]/i,
@@ -11,10 +11,12 @@ const useMasked = () => {
11
11
  text: '',
12
12
  caret: 0,
13
13
  };
14
- value
15
- .replace(/\s+/g, '')
16
- .split('')
17
- .forEach((character, charIndex) => {
14
+ // Whitespaces are skipped in place, not stripped beforehand:
15
+ // charIndex must stay the index in the original value to be compared with the caret
16
+ value.split('').forEach((character, charIndex) => {
17
+ if (/\s/.test(character)) {
18
+ return;
19
+ }
18
20
  const isMatch = mask.some(pattern => {
19
21
  if (typeof pattern === 'string') {
20
22
  return character === pattern && character;
@@ -42,7 +44,7 @@ const useMasked = () => {
42
44
  charIndex: 0,
43
45
  };
44
46
  if (parsedValue === '') {
45
- return data;
47
+ return { text: '', caret, isValid: false };
46
48
  }
47
49
  const requiredCount = mask.filter(pattern => pattern instanceof RegExp).length;
48
50
  let filledCount = 0;
@@ -90,7 +92,8 @@ const useMasked = () => {
90
92
  }
91
93
  const result = {
92
94
  text: data.text,
93
- caret: data.caret,
95
+ // Extra input beyond the mask is dropped, the caret must not point past the text
96
+ caret: Math.min(data.caret, data.text.length),
94
97
  // Valid when every RegExp position of the mask is filled
95
98
  isValid: requiredCount > 0 && filledCount === requiredCount,
96
99
  };
@@ -71,6 +71,14 @@ export interface MenuProps<T, Multiple extends boolean | undefined = undefined>
71
71
  * **Default**: `true`
72
72
  */
73
73
  readonly closeOutsideClick?: boolean;
74
+ /**
75
+ * Also close the list when the anchor element is clicked.\
76
+ * Leave it `false` when the anchor toggles the list by itself,
77
+ * otherwise the anchor click closes the list and the anchor opens it again\
78
+ * \
79
+ * **Default**: `false`
80
+ */
81
+ readonly closeOnAnchorClick?: boolean;
74
82
  /**
75
83
  * Allow the multiple selection
76
84
  * \
@@ -46,7 +46,7 @@ const isEqual = (a, b) => {
46
46
  return keysA.every(key => Object.prototype.hasOwnProperty.call(b, key) && a[key] === b[key]);
47
47
  };
48
48
  const MenuContainer = react_1.default.forwardRef((props, ref) => {
49
- const { items, value, anchorElement = null, overrides, children, closeOutsideClick = true, isOpen = false, anchorPos = 'bottom', alternativePlacements = ['bottom', 'top'], positionStrategy, autoFlip, viewportMargin, offset, multiple = false, autofocus = true, closeOnSelect = !multiple, onRequestClose = onRequestCloseDefault, onAnchorPosChanged, zIndex, onSelectItem, getOptionSelected, maxWidth, } = props;
49
+ const { items, value, anchorElement = null, overrides, children, closeOutsideClick = true, closeOnAnchorClick = false, isOpen = false, anchorPos = 'bottom', alternativePlacements = ['bottom', 'top'], positionStrategy, autoFlip, viewportMargin, offset, multiple = false, autofocus = true, closeOnSelect = !multiple, onRequestClose = onRequestCloseDefault, onAnchorPosChanged, zIndex, onSelectItem, getOptionSelected, maxWidth, } = props;
50
50
  const overridesMap = react_1.default.useMemo(() => ({
51
51
  List: (overrides === null || overrides === void 0 ? void 0 : overrides.List) || MenuList_1.default,
52
52
  Popper: (overrides === null || overrides === void 0 ? void 0 : overrides.Popper) || Popper_1.default,
@@ -56,6 +56,16 @@ const MenuContainer = react_1.default.forwardRef((props, ref) => {
56
56
  // Starts as `false` so that a menu mounted in the open state is focused and scrolled too
57
57
  const isOpenRef = react_1.default.useRef(false);
58
58
  const focusTimeoutRef = react_1.default.useRef();
59
+ // Whether the focus is inside the list: then it is returned to the anchor on close
60
+ const hasFocusRef = react_1.default.useRef(false);
61
+ // The parent often resets the anchor together with isOpen, so the last one is kept
62
+ const lastAnchorRef = react_1.default.useRef(anchorElement);
63
+ if (anchorElement) {
64
+ lastAnchorRef.current = anchorElement;
65
+ }
66
+ // Keyboard navigation scrolls the list under a still pointer, and the browser fires
67
+ // mouseenter on the item that appears under it. Such events must not move the highlight
68
+ const isKeyboardNavigationRef = react_1.default.useRef(false);
59
69
  const { dispatch, state: { selectedIndexes, markedIndex, hoveredIndex }, } = (0, context_1.default)();
60
70
  const selectedIndexesRef = react_1.default.useRef(selectedIndexes);
61
71
  const compareFunc = react_1.default.useCallback((item, val) => getOptionSelected ? getOptionSelected({ item, value: val }) : isEqual(item, val), [getOptionSelected]);
@@ -113,7 +123,8 @@ const MenuContainer = react_1.default.forwardRef((props, ref) => {
113
123
  if (index < 0 || index >= items.length)
114
124
  return;
115
125
  const item = items[index];
116
- if (!item)
126
+ // Falsy items such as 0 or an empty string are valid options
127
+ if (item === undefined)
117
128
  return;
118
129
  if (typeof onSelectItem === 'function') {
119
130
  if (multiple) {
@@ -137,11 +148,13 @@ const MenuContainer = react_1.default.forwardRef((props, ref) => {
137
148
  }, [onSelectItem, onRequestClose, compareFunc, closeOnSelect, items, value, multiple]);
138
149
  const highlightIndex = react_1.default.useCallback((index) => {
139
150
  const validIndex = Math.max(-1, Math.min(index, items.length - 1));
140
- if (validIndex !== markedIndex) {
141
- dispatch((0, context_1.actionSetmenuState)({ markedIndex: validIndex }));
142
- scrollToIndex(validIndex);
143
- }
144
- }, [dispatch, items.length, markedIndex, scrollToIndex]);
151
+ isKeyboardNavigationRef.current = true;
152
+ // Always dispatched: markedIndex of this closure can be outdated (e.g. the items effect
153
+ // has just reset it), the reducer skips the update when nothing changes.
154
+ // The mouse and the keyboard share one highlight
155
+ dispatch((0, context_1.actionSetmenuState)({ markedIndex: validIndex, hoveredIndex: -1 }));
156
+ scrollToIndex(validIndex);
157
+ }, [dispatch, items.length, scrollToIndex]);
145
158
  const highlightPrevItem = react_1.default.useCallback(() => {
146
159
  const newIndex = markedIndex - 1;
147
160
  highlightIndex(newIndex >= 0 ? newIndex : 0);
@@ -216,6 +229,12 @@ const MenuContainer = react_1.default.forwardRef((props, ref) => {
216
229
  event.preventDefault();
217
230
  onRequestClose(event);
218
231
  break;
232
+ case 'Tab':
233
+ // The list is rendered in a portal at the end of the page, so the next Tab stop
234
+ // would be lost: close the menu instead, the focus returns to the anchor
235
+ event.preventDefault();
236
+ onRequestClose(event);
237
+ break;
219
238
  default:
220
239
  break;
221
240
  }
@@ -231,26 +250,34 @@ const MenuContainer = react_1.default.forwardRef((props, ref) => {
231
250
  ]);
232
251
  // Управление открытием/закрытием меню
233
252
  react_1.default.useEffect(() => {
253
+ var _a;
234
254
  if (isOpenRef.current === isOpen)
235
255
  return;
236
256
  isOpenRef.current = isOpen;
237
257
  if (!isOpen) {
238
258
  // The menu is already closed by the parent, so onRequestClose must not be called again
239
259
  dispatch((0, context_1.actionSetmenuState)({ markedIndex: -1, hoveredIndex: -1 }));
260
+ // Otherwise the focus is lost together with the unmounted list
261
+ if (hasFocusRef.current) {
262
+ hasFocusRef.current = false;
263
+ (_a = lastAnchorRef.current) === null || _a === void 0 ? void 0 : _a.focus();
264
+ }
240
265
  return;
241
266
  }
242
267
  // При открытии
243
268
  scrollToFirstSelected();
244
- if (autofocus) {
245
- // Очищаем предыдущий таймаут
246
- if (focusTimeoutRef.current) {
247
- clearTimeout(focusTimeoutRef.current);
248
- }
249
- focusTimeoutRef.current = setTimeout(() => {
250
- var _a;
251
- (_a = menuListRef.current) === null || _a === void 0 ? void 0 : _a.focus();
252
- }, 15);
269
+ if (focusTimeoutRef.current) {
270
+ clearTimeout(focusTimeoutRef.current);
253
271
  }
272
+ // A menu mounted in the open state gets its list only after the portal is mounted,
273
+ // so the scroll is repeated when the list surely exists
274
+ focusTimeoutRef.current = setTimeout(() => {
275
+ var _a;
276
+ scrollToFirstSelected();
277
+ if (autofocus) {
278
+ (_a = menuListRef.current) === null || _a === void 0 ? void 0 : _a.focus();
279
+ }
280
+ }, 15);
254
281
  }, [isOpen, autofocus, dispatch, scrollToFirstSelected]);
255
282
  // Обновление выбранных индексов
256
283
  react_1.default.useEffect(() => {
@@ -266,23 +293,65 @@ const MenuContainer = react_1.default.forwardRef((props, ref) => {
266
293
  });
267
294
  }
268
295
  }, [getSelectedIndexes, dispatch]);
296
+ // The highlight is an index, so when the items change it follows the same item
297
+ // or is removed. Otherwise a filtered list highlights a random item at the old index
298
+ const prevItemsRef = react_1.default.useRef(items);
299
+ const markedIndexRef = react_1.default.useRef(markedIndex);
300
+ markedIndexRef.current = markedIndex;
301
+ react_1.default.useEffect(() => {
302
+ const prevItems = prevItemsRef.current;
303
+ prevItemsRef.current = items;
304
+ // A new array with the same items (e.g. `items={list.filter(...)}`) is not a change
305
+ const isSameList = prevItems.length === items.length && prevItems.every((item, i) => item === items[i]);
306
+ if (isSameList) {
307
+ return;
308
+ }
309
+ const prevIndex = markedIndexRef.current;
310
+ const markedItem = prevIndex === -1 ? undefined : prevItems[prevIndex];
311
+ const newIndex = markedItem === undefined
312
+ ? -1
313
+ : items.findIndex(item => item === markedItem || compareFunc(item, markedItem));
314
+ if (newIndex !== prevIndex) {
315
+ dispatch((0, context_1.actionSetmenuState)({ markedIndex: newIndex, hoveredIndex: -1 }));
316
+ }
317
+ // The old scroll position means nothing for the new list
318
+ if (newIndex === -1) {
319
+ if (menuListRef.current) {
320
+ menuListRef.current.scrollTop = 0;
321
+ }
322
+ }
323
+ else {
324
+ scrollToIndex(newIndex);
325
+ }
326
+ }, [items, compareFunc, dispatch, scrollToIndex]);
269
327
  const itemClickHandler = react_1.default.useCallback((index) => () => selectItem(index), [selectItem]);
328
+ // The hovered item becomes the highlighted one, so the keyboard continues from it
329
+ // and Enter selects it
270
330
  const itemMouseEnterHandler = react_1.default.useCallback((index) => () => {
271
- if (index !== hoveredIndex) {
272
- dispatch((0, context_1.actionSetmenuState)({
273
- hoveredIndex: index,
274
- markedIndex: -1,
275
- }));
331
+ if (isKeyboardNavigationRef.current) {
332
+ return;
276
333
  }
277
- }, [dispatch, hoveredIndex]);
334
+ if (index !== markedIndex || index !== hoveredIndex) {
335
+ dispatch((0, context_1.actionSetmenuState)({ hoveredIndex: index, markedIndex: index }));
336
+ }
337
+ }, [dispatch, hoveredIndex, markedIndex]);
278
338
  const itemMouseLeaveHandler = react_1.default.useCallback((index) => () => {
279
339
  if (index === hoveredIndex) {
280
- dispatch((0, context_1.actionSetmenuState)({
281
- hoveredIndex: -1,
282
- markedIndex: -1,
283
- }));
340
+ dispatch((0, context_1.actionSetmenuState)({ hoveredIndex: -1 }));
284
341
  }
285
342
  }, [dispatch, hoveredIndex]);
343
+ // A real pointer movement ends the keyboard navigation
344
+ const listMouseMoveHandler = react_1.default.useCallback(() => {
345
+ isKeyboardNavigationRef.current = false;
346
+ }, []);
347
+ const listFocusHandler = react_1.default.useCallback(() => {
348
+ hasFocusRef.current = true;
349
+ }, []);
350
+ const listBlurHandler = react_1.default.useCallback((event) => {
351
+ if (!event.currentTarget.contains(event.relatedTarget)) {
352
+ hasFocusRef.current = false;
353
+ }
354
+ }, []);
286
355
  const onAnchorPosChangedMemo = react_1.default.useCallback((newPlacement) => {
287
356
  if (typeof onAnchorPosChanged === 'function') {
288
357
  onAnchorPosChanged(newPlacement);
@@ -291,15 +360,17 @@ const MenuContainer = react_1.default.forwardRef((props, ref) => {
291
360
  const renderedChildren = react_1.default.useMemo(() => items.map((item, index) => children({ item, index }, {
292
361
  key: index,
293
362
  onMouseEnter: itemMouseEnterHandler(index),
363
+ // mouseenter is skipped during the keyboard navigation, so the item under a moving
364
+ // pointer is highlighted by mousemove
365
+ onMouseMove: itemMouseEnterHandler(index),
294
366
  onMouseLeave: itemMouseLeaveHandler(index),
295
367
  onClick: itemClickHandler(index),
296
368
  selected: selectedIndexes.includes(index),
297
- hovered: hoveredIndex === index || markedIndex === index,
369
+ hovered: markedIndex === index,
298
370
  })), [
299
371
  items,
300
372
  children,
301
373
  selectedIndexes,
302
- hoveredIndex,
303
374
  markedIndex,
304
375
  itemMouseEnterHandler,
305
376
  itemMouseLeaveHandler,
@@ -314,9 +385,9 @@ const MenuContainer = react_1.default.forwardRef((props, ref) => {
314
385
  // Мемоизация компонентов
315
386
  const PopperComponent = overridesMap.Popper;
316
387
  const ListComponent = overridesMap.List;
317
- return (react_1.default.createElement(ClickOutside_1.default, { onOutsideClick: onRequestClose, mouseEvent: isOpen && closeOutsideClick ? 'onMouseDown' : false },
388
+ return (react_1.default.createElement(ClickOutside_1.default, { onOutsideClick: onRequestClose, mouseEvent: isOpen && closeOutsideClick ? 'onMouseDown' : false, ignoreElements: closeOnAnchorClick ? undefined : [anchorElement] },
318
389
  react_1.default.createElement(PopperComponent, { isOpen: Boolean(isOpen), ref: menuPopperRef, zIndex: zIndex, anchorPos: anchorPos, alternativePlacements: alternativePlacements, anchorElement: anchorElement, onAnchorPosChanged: onAnchorPosChangedMemo, positionStrategy: positionStrategy, autoFlip: autoFlip, viewportMargin: viewportMargin, offset: offset },
319
- react_1.default.createElement(ListComponent, { anchorPos: anchorPos, isOpen: Boolean(isOpen), ref: menuListRef, maxWidth: maxWidth, onKeyDown: listKeydownEvent }, renderedChildren))));
390
+ react_1.default.createElement(ListComponent, { anchorPos: anchorPos, isOpen: Boolean(isOpen), ref: menuListRef, maxWidth: maxWidth, onKeyDown: listKeydownEvent, onMouseMoveCapture: listMouseMoveHandler, onFocus: listFocusHandler, onBlur: listBlurHandler, role: "listbox", "aria-multiselectable": multiple || undefined }, renderedChildren))));
320
391
  });
321
392
  MenuContainer.displayName = 'MenuContainer';
322
393
  exports.default = MenuContainer;
package/Menu/MenuItem.js CHANGED
@@ -62,7 +62,7 @@ exports.MenuItem = react_1.default.forwardRef((props, ref) => {
62
62
  }
63
63
  return react_1.default.createElement(ItemIconWrapper, null, startIcon);
64
64
  }, [startIcon]);
65
- return (react_1.default.createElement(StyledMenuItem, Object.assign({}, nativeProps, { ref: ref, onMouseLeave: onMouseLeave, onMouseEnter: onMouseEnter, onClick: onClick, selected: selected, hovered: hovered }),
65
+ return (react_1.default.createElement(StyledMenuItem, Object.assign({}, nativeProps, { ref: ref, onMouseLeave: onMouseLeave, onMouseEnter: onMouseEnter, onClick: onClick, role: "option", "aria-selected": selected, selected: selected, hovered: hovered }),
66
66
  renderStartIcon(),
67
67
  children));
68
68
  });
package/Menu/context.js CHANGED
@@ -18,6 +18,11 @@ exports.defaultState = {
18
18
  const reducer = (state, action) => {
19
19
  switch (action.type) {
20
20
  case 'setMenuState': {
21
+ const keys = Object.keys(action.payload);
22
+ // Keep the state object when nothing changes, so the menu is not re-rendered
23
+ if (keys.every(key => state[key] === action.payload[key])) {
24
+ return state;
25
+ }
21
26
  return Object.assign(Object.assign({}, state), action.payload);
22
27
  }
23
28
  default:
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Unique and SSR-stable id of a modal, used to link its title and content by aria attributes.
3
+ * The colons of React.useId are removed, so the id can be used in CSS selectors too
4
+ */
5
+ declare const useDialogID: (prefix: string) => string;
6
+ export default useDialogID;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ /**
8
+ * Unique and SSR-stable id of a modal, used to link its title and content by aria attributes.
9
+ * The colons of React.useId are removed, so the id can be used in CSS selectors too
10
+ */
11
+ const useDialogID = (prefix) => `${prefix}-${react_1.default.useId().replace(/:/g, '')}`;
12
+ exports.default = useDialogID;
@@ -23,6 +23,10 @@ const StyledConfirmBoxContainer = styled_1.default.div `
23
23
  `;
24
24
  const ConfirmBoxContainer = (props, ref) => {
25
25
  const { children, dialogID } = props, nativeProps = __rest(props, ["children", "dialogID"]);
26
- return (react_1.default.createElement(StyledConfirmBoxContainer, Object.assign({ role: "modal-confirmbox", "aria-labelledby": `${dialogID}-title`, "aria-describedby": `${dialogID}-description` }, nativeProps, { ref: ref }), children));
26
+ return (react_1.default.createElement(StyledConfirmBoxContainer
27
+ // A confirmation requires the user's response
28
+ , Object.assign({
29
+ // A confirmation requires the user's response
30
+ role: "alertdialog", "aria-modal": "true", "aria-labelledby": `${dialogID}-title`, "aria-describedby": `${dialogID}-description` }, nativeProps, { ref: ref }), children));
27
31
  };
28
32
  exports.default = react_1.default.forwardRef(ConfirmBoxContainer);
@@ -21,9 +21,10 @@ const ConfirmBoxContent_1 = __importDefault(require("./ConfirmBoxContent"));
21
21
  const ConfirmBoxFooter_1 = __importDefault(require("./ConfirmBoxFooter"));
22
22
  const ConfirmBoxHeader_1 = __importDefault(require("./ConfirmBoxHeader"));
23
23
  const ModalOverlay_1 = __importDefault(require("../BaseModal/ModalOverlay"));
24
+ const useDialogID_1 = __importDefault(require("../BaseModal/useDialogID"));
24
25
  const ConfirmBox = props => {
25
26
  const { header, children, onRequestYes, onRequestClose, overrides, isOpen, dismissButtonLabel, confirmButtonLabel } = props, otherProps = __rest(props, ["header", "children", "onRequestYes", "onRequestClose", "overrides", "isOpen", "dismissButtonLabel", "confirmButtonLabel"]);
26
- const dialogID = react_1.default.useMemo(() => `dialog-confirm-${new Date().getTime()}`, []);
27
+ const dialogID = (0, useDialogID_1.default)('dialog-confirm');
27
28
  const overridesMap = react_1.default.useMemo(() => ({
28
29
  Container: (overrides === null || overrides === void 0 ? void 0 : overrides.Container) || ConfirmBoxContainer_1.default,
29
30
  Content: (overrides === null || overrides === void 0 ? void 0 : overrides.Content) || ConfirmBoxContent_1.default,
@@ -22,6 +22,6 @@ const StyledDialogInner = (0, styled_1.default)(ModalInner_1.default) `
22
22
  `;
23
23
  const DialogInner = (props, ref) => {
24
24
  const { children, dialogID } = props, restProps = __rest(props, ["children", "dialogID"]);
25
- return (react_1.default.createElement(StyledDialogInner, Object.assign({ id: `${dialogID}-description` }, restProps, { ref: ref }), children));
25
+ return (react_1.default.createElement(StyledDialogInner, Object.assign({ role: "dialog", "aria-modal": "true", id: `${dialogID}-description` }, restProps, { ref: ref }), children));
26
26
  };
27
27
  exports.default = react_1.default.forwardRef(DialogInner);
@@ -40,14 +40,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
40
40
  const React = __importStar(require("react"));
41
41
  const BaseModal_1 = __importDefault(require("../BaseModal"));
42
42
  const DialogInner_1 = __importDefault(require("./DialogInner"));
43
+ const useDialogID_1 = __importDefault(require("../BaseModal/useDialogID"));
43
44
  const Dialog = props => {
44
- var _a;
45
45
  const { children, overrides } = props, restProps = __rest(props, ["children", "overrides"]);
46
- const dialogID = React.useMemo(() => `dialog-${new Date().getTime()}`, []);
47
- return (React.createElement(React.Fragment, null,
48
- React.createElement(BaseModal_1.default, Object.assign({}, restProps, { overrides: Object.assign(Object.assign({}, overrides), { Inner: (_a = overrides === null || overrides === void 0 ? void 0 : overrides.Inner) !== null && _a !== void 0 ? _a : React.forwardRef(function Inner(props, ref) {
49
- const { children } = props;
50
- return (React.createElement(DialogInner_1.default, Object.assign({ dialogID: dialogID, ref: ref }, props), children));
51
- }) }) }), children)));
46
+ const dialogID = (0, useDialogID_1.default)('dialog');
47
+ // Created once: a component created during the render is a new type on every render,
48
+ // so React would remount the whole dialog content (inputs lose the focus and the state)
49
+ const Inner = React.useMemo(() => {
50
+ var _a;
51
+ return (_a = overrides === null || overrides === void 0 ? void 0 : overrides.Inner) !== null && _a !== void 0 ? _a : React.forwardRef(function Inner(innerProps, ref) {
52
+ return React.createElement(DialogInner_1.default, Object.assign({ dialogID: dialogID, ref: ref }, innerProps));
53
+ });
54
+ }, [overrides === null || overrides === void 0 ? void 0 : overrides.Inner, dialogID]);
55
+ const modalOverrides = React.useMemo(() => (Object.assign(Object.assign({}, overrides), { Inner })), [overrides, Inner]);
56
+ return (React.createElement(BaseModal_1.default, Object.assign({}, restProps, { overrides: modalOverrides }), children));
52
57
  };
53
58
  exports.default = Dialog;
@@ -8,6 +8,16 @@ export type DrawerHeaderProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'titl
8
8
  * Display close button in the header
9
9
  */
10
10
  readonly showCloseButton?: boolean;
11
+ /**
12
+ * Accessible label of the close button\
13
+ * \
14
+ * **Default**: `'Close'`
15
+ */
16
+ readonly closeButtonLabel?: string;
17
+ /**
18
+ * Drawer unique ID, the title gets the `${dialogID}-title` id for `aria-labelledby`
19
+ */
20
+ readonly dialogID?: string;
11
21
  /**
12
22
  * On close request
13
23
  */
@@ -22,6 +32,16 @@ declare const _default: React.ForwardRefExoticComponent<Omit<React.HTMLAttribute
22
32
  * Display close button in the header
23
33
  */
24
34
  readonly showCloseButton?: boolean | undefined;
35
+ /**
36
+ * Accessible label of the close button\
37
+ * \
38
+ * **Default**: `'Close'`
39
+ */
40
+ readonly closeButtonLabel?: string | undefined;
41
+ /**
42
+ * Drawer unique ID, the title gets the `${dialogID}-title` id for `aria-labelledby`
43
+ */
44
+ readonly dialogID?: string | undefined;
25
45
  /**
26
46
  * On close request
27
47
  */
@@ -51,11 +51,11 @@ const StyledDrawerCloseButton = (0, styled_1.default)(Button_1.default) `
51
51
  cursor: pointer;
52
52
  `;
53
53
  const DrawerHeader = (props, ref) => {
54
- const { header, children, showCloseButton, onRequestClose } = props, nativeProps = __rest(props, ["header", "children", "showCloseButton", "onRequestClose"]);
54
+ const { header, children, showCloseButton, closeButtonLabel = 'Close', dialogID, onRequestClose } = props, nativeProps = __rest(props, ["header", "children", "showCloseButton", "closeButtonLabel", "dialogID", "onRequestClose"]);
55
55
  return (react_1.default.createElement(StyledDrawerHeader, Object.assign({}, nativeProps, { ref: ref }),
56
- typeof header !== 'undefined' && react_1.default.createElement(DrawerTitle, null, header),
56
+ typeof header !== 'undefined' && (react_1.default.createElement(DrawerTitle, { id: dialogID ? `${dialogID}-title` : undefined }, header)),
57
57
  typeof children !== 'undefined' && react_1.default.createElement(DrawerToolbar, null, children),
58
- typeof onRequestClose === 'function' && showCloseButton && (react_1.default.createElement(StyledDrawerCloseButton, { type: "button", "$withToolbar": Boolean(toolbar), onClick: onRequestClose },
58
+ typeof onRequestClose === 'function' && showCloseButton && (react_1.default.createElement(StyledDrawerCloseButton, { type: "button", "$withToolbar": typeof children !== 'undefined' && children !== null, "aria-label": closeButtonLabel, onClick: onRequestClose },
59
59
  react_1.default.createElement(DrawerCloseIcon_1.default, null)))));
60
60
  };
61
61
  exports.default = react_1.default.forwardRef(DrawerHeader);
@@ -30,6 +30,8 @@ const StyledDrawerBottomInner = (0, styled_1.default)(ModalInner_1.default) `
30
30
  flex-direction: column;
31
31
  z-index: ${({ theme }) => theme.zIndex.modal};
32
32
  background-color: ${({ theme }) => theme.color.surface.toString()};
33
+ /* Only the corners facing the page are rounded: the others touch the edge of the window */
34
+ border-radius: 0;
33
35
  border-top-left-radius: ${({ theme }) => theme.shape.radiusFactor * 2}em;
34
36
  border-top-right-radius: ${({ theme }) => theme.shape.radiusFactor * 2}em;
35
37
  transition:
@@ -56,6 +58,8 @@ const StyledDrawerTopInner = (0, styled_1.default)(ModalInner_1.default) `
56
58
  flex-direction: column;
57
59
  z-index: ${({ theme }) => theme.zIndex.modal};
58
60
  background-color: ${({ theme }) => theme.color.surface.toString()};
61
+ /* Only the corners facing the page are rounded: the others touch the edge of the window */
62
+ border-radius: 0;
59
63
  border-bottom-left-radius: ${({ theme }) => theme.shape.radiusFactor * 2}em;
60
64
  border-bottom-right-radius: ${({ theme }) => theme.shape.radiusFactor * 2}em;
61
65
  transition:
@@ -82,6 +86,8 @@ const StyledDrawerRightInner = (0, styled_1.default)(ModalInner_1.default) `
82
86
  flex-direction: column;
83
87
  z-index: ${({ theme }) => theme.zIndex.modal};
84
88
  background-color: ${({ theme }) => theme.color.surface.toString()};
89
+ /* Only the corners facing the page are rounded: the others touch the edge of the window */
90
+ border-radius: 0;
85
91
  border-top-left-radius: ${({ theme }) => theme.shape.radiusFactor * 2}em;
86
92
  border-bottom-left-radius: ${({ theme }) => theme.shape.radiusFactor * 2}em;
87
93
  transition:
@@ -108,6 +114,8 @@ const StyledDrawerLeftInner = (0, styled_1.default)(ModalInner_1.default) `
108
114
  flex-direction: column;
109
115
  z-index: ${({ theme }) => theme.zIndex.modal};
110
116
  background-color: ${({ theme }) => theme.color.surface.toString()};
117
+ /* Only the corners facing the page are rounded: the others touch the edge of the window */
118
+ border-radius: 0;
111
119
  border-top-right-radius: ${({ theme }) => theme.shape.radiusFactor * 2}em;
112
120
  border-bottom-right-radius: ${({ theme }) => theme.shape.radiusFactor * 2}em;
113
121
  transition:
@@ -137,6 +145,6 @@ const DrawerInner = (props, ref) => {
137
145
  return StyledDrawerBottomInner;
138
146
  }
139
147
  }, [anchor]);
140
- return (react_1.default.createElement(Element, Object.assign({ isOpen: isOpen, id: `${dialogID}-description`, onRequestClose: onRequestClose }, nativeProps, { ref: ref }), children));
148
+ return (react_1.default.createElement(Element, Object.assign({ role: "dialog", "aria-modal": "true", isOpen: isOpen, id: `${dialogID}-description`, onRequestClose: onRequestClose }, nativeProps, { ref: ref }), children));
141
149
  };
142
150
  exports.default = react_1.default.forwardRef(DrawerInner);
@@ -6,6 +6,7 @@ import { DrawerHeaderProps } from './DrawerHeader';
6
6
  import { DrawerContentProps } from './DrawerContent';
7
7
  import { DrawerFooterProps } from './DrawerFooter';
8
8
  import { ModalOverlayProps } from '../BaseModal/ModalOverlay';
9
+ export type { AnchorVariant } from './DrawerInner';
9
10
  export interface DrawerProps extends Omit<BaseModalProps, 'overrides'> {
10
11
  /**
11
12
  * Drawer position\
@@ -34,6 +35,12 @@ export interface DrawerProps extends Omit<BaseModalProps, 'overrides'> {
34
35
  * Display close button in the header
35
36
  */
36
37
  readonly showCloseButton?: boolean;
38
+ /**
39
+ * Accessible label of the close button (it contains only an icon)\
40
+ * \
41
+ * **Default**: `'Close'`
42
+ */
43
+ readonly closeButtonLabel?: string;
37
44
  /**
38
45
  * Overridable components map
39
46
  */
@@ -45,13 +45,20 @@ const DrawerHeader_1 = __importDefault(require("./DrawerHeader"));
45
45
  const DrawerContent_1 = __importDefault(require("./DrawerContent"));
46
46
  const DrawerFooter_1 = __importDefault(require("./DrawerFooter"));
47
47
  const ModalOverlay_1 = __importDefault(require("../BaseModal/ModalOverlay"));
48
+ const useDialogID_1 = __importDefault(require("../BaseModal/useDialogID"));
48
49
  const Drawer = props => {
49
- const { children, onRequestClose, showCloseButton, header, anchor, toolbar, footer, overrides } = props, otherProps = __rest(props, ["children", "onRequestClose", "showCloseButton", "header", "anchor", "toolbar", "footer", "overrides"]);
50
+ const { children, onRequestClose, showCloseButton, header, closeButtonLabel, anchor, toolbar, footer, overrides } = props, otherProps = __rest(props, ["children", "onRequestClose", "showCloseButton", "header", "closeButtonLabel", "anchor", "toolbar", "footer", "overrides"]);
50
51
  const hasFooter = React.useMemo(() => typeof footer !== 'undefined' && footer !== null, [footer]);
51
52
  const hasHeader = React.useMemo(() => typeof header !== 'undefined' ||
52
53
  typeof toolbar !== 'undefined' ||
53
54
  typeof showCloseButton !== 'undefined', [showCloseButton, header, toolbar]);
54
- const dialogID = React.useMemo(() => `drawer-${new Date().getTime()}`, []);
55
+ const dialogID = (0, useDialogID_1.default)('drawer');
56
+ const hasTitle = typeof header !== 'undefined' && header !== null;
57
+ // Created once: a component created during the render is a new type on every render,
58
+ // so React would remount the whole drawer content (inputs lose the focus and the state)
59
+ const Inner = React.useMemo(() => React.forwardRef(function Inner(innerProps, ref) {
60
+ return (React.createElement(DrawerInner_1.default, Object.assign({ anchor: anchor, dialogID: dialogID, "aria-labelledby": hasTitle ? `${dialogID}-title` : undefined, ref: ref }, innerProps)));
61
+ }), [anchor, dialogID, hasTitle]);
55
62
  const overridesMap = React.useMemo(() => ({
56
63
  Container: (overrides === null || overrides === void 0 ? void 0 : overrides.Container) || DrawerContainer_1.default,
57
64
  Header: (overrides === null || overrides === void 0 ? void 0 : overrides.Header) || DrawerHeader_1.default,
@@ -59,16 +66,11 @@ const Drawer = props => {
59
66
  Footer: (overrides === null || overrides === void 0 ? void 0 : overrides.Footer) || DrawerFooter_1.default,
60
67
  Overlay: (overrides === null || overrides === void 0 ? void 0 : overrides.Overlay) || ModalOverlay_1.default,
61
68
  }), [overrides]);
69
+ const modalOverrides = React.useMemo(() => ({ Overlay: overridesMap.Overlay, Inner }), [overridesMap.Overlay, Inner]);
62
70
  return (React.createElement(React.Fragment, null,
63
- React.createElement(BaseModal_1.default, Object.assign({ onRequestClose: onRequestClose }, otherProps, { overrides: {
64
- Overlay: overridesMap.Overlay,
65
- Inner: React.forwardRef(function Inner(props, ref) {
66
- const { children } = props;
67
- return (React.createElement(DrawerInner_1.default, Object.assign({ anchor: anchor, dialogID: dialogID, ref: ref }, props), children));
68
- }),
69
- } }),
71
+ React.createElement(BaseModal_1.default, Object.assign({ onRequestClose: onRequestClose }, otherProps, { overrides: modalOverrides }),
70
72
  React.createElement(overridesMap.Container, { anchor: anchor },
71
- hasHeader && (React.createElement(overridesMap.Header, { showCloseButton: showCloseButton, header: header, onRequestClose: onRequestClose }, toolbar)),
73
+ hasHeader && (React.createElement(overridesMap.Header, { showCloseButton: showCloseButton, closeButtonLabel: closeButtonLabel, dialogID: dialogID, header: header, onRequestClose: onRequestClose }, toolbar)),
72
74
  React.createElement(overridesMap.Content, { anchor: anchor }, children),
73
75
  hasFooter && React.createElement(overridesMap.Footer, { anchor: anchor }, footer)))));
74
76
  };
@@ -23,6 +23,6 @@ const Container = styled_1.default.div `
23
23
  `;
24
24
  const MessageBoxContainer = (props, ref) => {
25
25
  const { children, dialogID } = props, nativeProps = __rest(props, ["children", "dialogID"]);
26
- return (react_1.default.createElement(Container, Object.assign({ role: "modal-MessageBox", "aria-labelledby": `${dialogID}-title`, "aria-describedby": `${dialogID}-description` }, nativeProps, { ref: ref }), children));
26
+ return (react_1.default.createElement(Container, Object.assign({ role: "dialog", "aria-modal": "true", "aria-labelledby": `${dialogID}-title`, "aria-describedby": `${dialogID}-description` }, nativeProps, { ref: ref }), children));
27
27
  };
28
28
  exports.default = react_1.default.forwardRef(MessageBoxContainer);
@@ -44,9 +44,10 @@ const MessageBoxContent_1 = __importDefault(require("./MessageBoxContent"));
44
44
  const MessageBoxFooter_1 = __importDefault(require("./MessageBoxFooter"));
45
45
  const MessageBoxHeader_1 = __importDefault(require("./MessageBoxHeader"));
46
46
  const ModalOverlay_1 = __importDefault(require("../BaseModal/ModalOverlay"));
47
+ const useDialogID_1 = __importDefault(require("../BaseModal/useDialogID"));
47
48
  const MessageBox = props => {
48
49
  const { header, children, onRequestClose, overrides, okButtonLabel, isOpen } = props, otherProps = __rest(props, ["header", "children", "onRequestClose", "overrides", "okButtonLabel", "isOpen"]);
49
- const dialogID = React.useMemo(() => `dialog-Message-${new Date().getTime()}`, []);
50
+ const dialogID = (0, useDialogID_1.default)('dialog-message');
50
51
  const buttonRef = React.useRef(null);
51
52
  React.useEffect(() => {
52
53
  setTimeout(() => {
@@ -16,7 +16,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  const react_1 = __importDefault(require("react"));
18
18
  const styled_1 = __importDefault(require("@emotion/styled"));
19
- const UnknownFlag_1 = __importDefault(require("./UnknownFlag"));
19
+ const Unknown_1 = __importDefault(require("../CountryFlags/Unknown"));
20
20
  const CountryFlagContainer = styled_1.default.span `
21
21
  display: flex;
22
22
  align-items: center;
@@ -39,6 +39,6 @@ const CountryFlagContainer = styled_1.default.span `
39
39
  `;
40
40
  const CountryFlagComponent = props => {
41
41
  const { flag } = props, otherProps = __rest(props, ["flag"]);
42
- return (react_1.default.createElement(CountryFlagContainer, Object.assign({}, otherProps), typeof flag === 'undefined' || flag === null ? react_1.default.createElement(UnknownFlag_1.default, null) : flag));
42
+ return (react_1.default.createElement(CountryFlagContainer, Object.assign({}, otherProps), typeof flag === 'undefined' || flag === null ? react_1.default.createElement(Unknown_1.default, null) : flag));
43
43
  };
44
44
  exports.default = CountryFlagComponent;
@@ -1,3 +1,6 @@
1
- import * as React from 'react';
2
- declare const _default: React.ForwardRefExoticComponent<Omit<React.SVGProps<SVGSVGElement>, "ref"> & React.RefAttributes<SVGSVGElement>>;
3
- export default _default;
1
+ /// <reference types="react" />
2
+ /**
3
+ * @deprecated Use `Unknown` from `@via-profit/ui-kit/CountryFlags/Unknown`
4
+ */
5
+ declare const UnknownFlag: import("react").ForwardRefExoticComponent<Omit<import("react").SVGProps<SVGSVGElement>, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
6
+ export default UnknownFlag;