@via-profit/ui-kit 0.2.6 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (498) hide show
  1. package/Accordion/AccordionContainer.js +11 -11
  2. package/Accordion/AccordionContent.js +16 -7
  3. package/Accordion/AccordionHeader.d.ts +22 -0
  4. package/Accordion/AccordionHeader.js +35 -18
  5. package/Accordion/Chevron.js +3 -3
  6. package/Accordion/index.d.ts +12 -8
  7. package/Accordion/index.js +21 -6
  8. package/Autocomplete/AutocompleteContainer.d.ts +5 -9
  9. package/Autocomplete/AutocompleteContainer.js +125 -57
  10. package/Autocomplete/AutocompleteTagsInput.d.ts +15 -0
  11. package/Autocomplete/AutocompleteTagsInput.js +65 -0
  12. package/Autocomplete/context.d.ts +1 -0
  13. package/Autocomplete/context.js +5 -5
  14. package/Autocomplete/index.js +10 -7
  15. package/Avatar/AvatarBase.js +1 -1
  16. package/Avatar/AvatarContainer.js +6 -11
  17. package/Avatar/AvatarPicture.d.ts +9 -1
  18. package/Avatar/AvatarPicture.js +4 -3
  19. package/Avatar/index.js +10 -10
  20. package/Badge/BadgeBase.d.ts +9 -0
  21. package/Badge/BadgeBase.js +21 -3
  22. package/Badge/BadgeContainer.js +2 -1
  23. package/Badge/BadgeDeleteButton.d.ts +1 -1
  24. package/Badge/BadgeOutlined.d.ts +1 -1
  25. package/Badge/BadgeOutlined.js +5 -80
  26. package/Badge/BadgeStandard.d.ts +1 -1
  27. package/Badge/BadgeStandard.js +5 -91
  28. package/Badge/BadgeStyled.d.ts +5 -0
  29. package/Badge/BadgeStyled.js +125 -0
  30. package/Badge/index.d.ts +2 -2
  31. package/Badge/index.js +3 -20
  32. package/Button/ButtonBase.js +8 -4
  33. package/Button/ButtonContainer.js +2 -0
  34. package/Button/ButtonIconWrapper.d.ts +1 -1
  35. package/Button/ButtonOutlined.d.ts +1 -1
  36. package/Button/ButtonOutlined.js +5 -80
  37. package/Button/ButtonPlain.d.ts +1 -1
  38. package/Button/ButtonPlain.js +5 -85
  39. package/Button/ButtonStandard.d.ts +1 -1
  40. package/Button/ButtonStandard.js +5 -97
  41. package/Button/ButtonStyled.d.ts +10 -0
  42. package/Button/ButtonStyled.js +205 -0
  43. package/Button/index.d.ts +5 -5
  44. package/Button/index.js +3 -24
  45. package/ButtonGroup/ButtonGroupContext.d.ts +21 -0
  46. package/ButtonGroup/ButtonGroupContext.js +11 -0
  47. package/ButtonGroup/index.d.ts +76 -0
  48. package/ButtonGroup/index.js +132 -0
  49. package/CHANGELOG.md +160 -0
  50. package/Calendar/CalendarCell.js +11 -4
  51. package/Calendar/CalendarComponent.d.ts +15 -4
  52. package/Calendar/CalendarComponent.js +201 -103
  53. package/Calendar/CalendarDayBadge.d.ts +1 -1
  54. package/Calendar/CalendarMonthCell.js +1 -11
  55. package/Calendar/CalendarWeekDayLabel.js +3 -1
  56. package/Calendar/CalendarWeekDaysBar.js +6 -1
  57. package/Calendar/CalendarYearCell.js +1 -16
  58. package/Calendar/CalendarYearsSelector.d.ts +0 -1
  59. package/Calendar/CalendarYearsSelector.js +33 -35
  60. package/Calendar/use-calendar.d.ts +4 -3
  61. package/Calendar/use-calendar.js +31 -24
  62. package/Checkbox/CheckboxAsterisk.d.ts +13 -0
  63. package/{Autocomplete2/Autocomplete2TextField.js → Checkbox/CheckboxAsterisk.js} +24 -10
  64. package/Checkbox/CheckboxBox.d.ts +22 -0
  65. package/Checkbox/CheckboxBox.js +88 -0
  66. package/Checkbox/CheckboxContainer.d.ts +27 -0
  67. package/Checkbox/CheckboxContainer.js +38 -0
  68. package/Checkbox/CheckboxErrorText.d.ts +6 -0
  69. package/Checkbox/CheckboxErrorText.js +76 -0
  70. package/Checkbox/CheckboxIcon.d.ts +10 -0
  71. package/Checkbox/CheckboxIcon.js +57 -0
  72. package/Checkbox/CheckboxTextWrapper.d.ts +4 -0
  73. package/Checkbox/CheckboxTextWrapper.js +29 -0
  74. package/Checkbox/CheckboxWrapper.d.ts +4 -0
  75. package/Checkbox/CheckboxWrapper.js +29 -0
  76. package/Checkbox/index.d.ts +144 -0
  77. package/Checkbox/index.js +71 -0
  78. package/Checkbox/useCheckboxColor.d.ts +6 -0
  79. package/Checkbox/useCheckboxColor.js +33 -0
  80. package/ClickOutside/index.d.ts +6 -0
  81. package/ClickOutside/index.js +19 -3
  82. package/Color/Color.d.ts +4 -4
  83. package/Color/Color.js +9 -5
  84. package/Color/ColorGenerator.d.ts +5 -1
  85. package/Color/ColorParser.d.ts +9 -0
  86. package/Color/ColorParser.js +52 -12
  87. package/CountryFlags/AC.js +5 -1
  88. package/CountryFlags/AD.js +5 -1
  89. package/CountryFlags/AE.js +5 -1
  90. package/CountryFlags/AF.js +5 -1
  91. package/CountryFlags/AG.js +5 -1
  92. package/CountryFlags/AI.js +5 -1
  93. package/CountryFlags/AL.js +5 -1
  94. package/CountryFlags/AM.js +5 -1
  95. package/CountryFlags/AO.js +5 -1
  96. package/CountryFlags/AQ.js +5 -1
  97. package/CountryFlags/AR.js +5 -1
  98. package/CountryFlags/AS.js +5 -1
  99. package/CountryFlags/AT.js +5 -1
  100. package/CountryFlags/AU.js +5 -1
  101. package/CountryFlags/AW.js +5 -1
  102. package/CountryFlags/AX.js +5 -1
  103. package/CountryFlags/AZ.js +5 -1
  104. package/CountryFlags/BA.js +5 -1
  105. package/CountryFlags/BB.js +5 -1
  106. package/CountryFlags/BD.js +5 -1
  107. package/CountryFlags/BE.js +5 -1
  108. package/CountryFlags/BF.js +5 -1
  109. package/CountryFlags/BG.js +5 -1
  110. package/CountryFlags/BH.js +5 -1
  111. package/CountryFlags/BI.js +5 -1
  112. package/CountryFlags/BJ.js +5 -1
  113. package/CountryFlags/BL.js +5 -1
  114. package/CountryFlags/BM.js +5 -1
  115. package/CountryFlags/BN.js +5 -1
  116. package/CountryFlags/BO.js +5 -1
  117. package/CountryFlags/BQ.js +5 -1
  118. package/CountryFlags/BR.js +5 -1
  119. package/CountryFlags/BS.js +5 -1
  120. package/CountryFlags/BT.js +5 -1
  121. package/CountryFlags/BV.js +5 -1
  122. package/CountryFlags/BW.js +5 -1
  123. package/CountryFlags/BY.js +5 -1
  124. package/CountryFlags/BZ.js +5 -1
  125. package/CountryFlags/CA.js +5 -1
  126. package/CountryFlags/CC.js +5 -1
  127. package/CountryFlags/CD.js +5 -1
  128. package/CountryFlags/CF.js +5 -1
  129. package/CountryFlags/CG.js +5 -1
  130. package/CountryFlags/CH.js +5 -1
  131. package/CountryFlags/CI.js +5 -1
  132. package/CountryFlags/CK.js +5 -1
  133. package/CountryFlags/CL.js +5 -1
  134. package/CountryFlags/CM.js +5 -1
  135. package/CountryFlags/CN.js +5 -1
  136. package/CountryFlags/CO.js +5 -1
  137. package/CountryFlags/CR.js +5 -1
  138. package/CountryFlags/CU.js +5 -1
  139. package/CountryFlags/CV.js +5 -1
  140. package/CountryFlags/CW.js +5 -1
  141. package/CountryFlags/CX.js +5 -1
  142. package/CountryFlags/CY.js +5 -1
  143. package/CountryFlags/CZ.js +5 -1
  144. package/CountryFlags/DE.js +5 -1
  145. package/CountryFlags/DJ.js +5 -1
  146. package/CountryFlags/DK.js +5 -1
  147. package/CountryFlags/DM.js +5 -1
  148. package/CountryFlags/DO.js +5 -1
  149. package/CountryFlags/DZ.js +5 -1
  150. package/CountryFlags/EC.js +5 -1
  151. package/CountryFlags/EE.js +5 -1
  152. package/CountryFlags/EG.js +5 -1
  153. package/CountryFlags/EH.js +5 -1
  154. package/CountryFlags/ER.js +5 -1
  155. package/CountryFlags/ES.js +5 -1
  156. package/CountryFlags/ET.js +5 -1
  157. package/CountryFlags/EU.js +5 -1
  158. package/CountryFlags/FI.js +5 -1
  159. package/CountryFlags/FJ.js +5 -1
  160. package/CountryFlags/FK.js +5 -1
  161. package/CountryFlags/FM.js +5 -1
  162. package/CountryFlags/FO.js +5 -1
  163. package/CountryFlags/FR.js +5 -1
  164. package/CountryFlags/GA.js +5 -1
  165. package/CountryFlags/GB.js +5 -1
  166. package/CountryFlags/GD.js +5 -1
  167. package/CountryFlags/GE.js +5 -1
  168. package/CountryFlags/GEAB.js +5 -1
  169. package/CountryFlags/GEOS.js +5 -1
  170. package/CountryFlags/GF.js +5 -1
  171. package/CountryFlags/GG.js +5 -1
  172. package/CountryFlags/GH.js +5 -1
  173. package/CountryFlags/GI.js +5 -1
  174. package/CountryFlags/GL.js +5 -1
  175. package/CountryFlags/GM.js +5 -1
  176. package/CountryFlags/GN.js +5 -1
  177. package/CountryFlags/GP.js +5 -1
  178. package/CountryFlags/GQ.js +5 -1
  179. package/CountryFlags/GR.js +5 -1
  180. package/CountryFlags/GS.js +5 -1
  181. package/CountryFlags/GT.js +5 -1
  182. package/CountryFlags/GU.js +5 -1
  183. package/CountryFlags/GW.js +5 -1
  184. package/CountryFlags/GY.js +5 -1
  185. package/CountryFlags/HK.js +5 -1
  186. package/CountryFlags/HM.js +5 -1
  187. package/CountryFlags/HN.js +5 -1
  188. package/CountryFlags/HR.js +5 -1
  189. package/CountryFlags/HT.js +5 -1
  190. package/CountryFlags/HU.js +5 -1
  191. package/CountryFlags/IC.js +5 -1
  192. package/CountryFlags/ID.js +5 -1
  193. package/CountryFlags/IE.js +5 -1
  194. package/CountryFlags/IL.js +5 -1
  195. package/CountryFlags/IM.js +5 -1
  196. package/CountryFlags/IN.js +5 -1
  197. package/CountryFlags/IO.js +5 -1
  198. package/CountryFlags/IQ.js +5 -1
  199. package/CountryFlags/IR.js +5 -1
  200. package/CountryFlags/IS.js +5 -1
  201. package/CountryFlags/IT.js +5 -1
  202. package/CountryFlags/JE.js +5 -1
  203. package/CountryFlags/JM.js +5 -1
  204. package/CountryFlags/JO.js +5 -1
  205. package/CountryFlags/JP.js +5 -1
  206. package/CountryFlags/KE.js +5 -1
  207. package/CountryFlags/KG.js +5 -1
  208. package/CountryFlags/KH.js +5 -1
  209. package/CountryFlags/KI.js +5 -1
  210. package/CountryFlags/KM.js +5 -1
  211. package/CountryFlags/KN.js +5 -1
  212. package/CountryFlags/KP.js +5 -1
  213. package/CountryFlags/KR.js +5 -1
  214. package/CountryFlags/KW.js +5 -1
  215. package/CountryFlags/KY.js +5 -1
  216. package/CountryFlags/KZ.js +5 -1
  217. package/CountryFlags/LA.js +5 -1
  218. package/CountryFlags/LB.js +5 -1
  219. package/CountryFlags/LC.js +5 -1
  220. package/CountryFlags/LI.js +5 -1
  221. package/CountryFlags/LK.js +5 -1
  222. package/CountryFlags/LR.js +5 -1
  223. package/CountryFlags/LS.js +5 -1
  224. package/CountryFlags/LT.js +5 -1
  225. package/CountryFlags/LU.js +5 -1
  226. package/CountryFlags/LV.js +5 -1
  227. package/CountryFlags/LY.js +5 -1
  228. package/CountryFlags/MA.js +5 -1
  229. package/CountryFlags/MC.js +5 -1
  230. package/CountryFlags/MD.js +5 -1
  231. package/CountryFlags/ME.js +5 -1
  232. package/CountryFlags/MF.js +5 -1
  233. package/CountryFlags/MG.js +5 -1
  234. package/CountryFlags/MH.js +5 -1
  235. package/CountryFlags/MK.js +5 -1
  236. package/CountryFlags/ML.js +5 -1
  237. package/CountryFlags/MM.js +5 -1
  238. package/CountryFlags/MN.js +5 -1
  239. package/CountryFlags/MO.js +5 -1
  240. package/CountryFlags/MP.js +5 -1
  241. package/CountryFlags/MQ.js +5 -1
  242. package/CountryFlags/MR.js +5 -1
  243. package/CountryFlags/MS.js +5 -1
  244. package/CountryFlags/MT.js +5 -1
  245. package/CountryFlags/MU.js +5 -1
  246. package/CountryFlags/MV.js +5 -1
  247. package/CountryFlags/MW.js +5 -1
  248. package/CountryFlags/MX.js +5 -1
  249. package/CountryFlags/MY.js +5 -1
  250. package/CountryFlags/MZ.js +5 -1
  251. package/CountryFlags/NA.js +5 -1
  252. package/CountryFlags/NC.js +5 -1
  253. package/CountryFlags/NE.js +5 -1
  254. package/CountryFlags/NF.js +5 -1
  255. package/CountryFlags/NG.js +5 -1
  256. package/CountryFlags/NI.js +5 -1
  257. package/CountryFlags/NL.js +5 -1
  258. package/CountryFlags/NO.js +5 -1
  259. package/CountryFlags/NP.js +5 -1
  260. package/CountryFlags/NR.js +5 -1
  261. package/CountryFlags/NU.js +5 -1
  262. package/CountryFlags/NZ.js +5 -1
  263. package/CountryFlags/OM.js +5 -1
  264. package/CountryFlags/PA.js +5 -1
  265. package/CountryFlags/PE.js +5 -1
  266. package/CountryFlags/PF.js +5 -1
  267. package/CountryFlags/PG.js +5 -1
  268. package/CountryFlags/PH.js +5 -1
  269. package/CountryFlags/PK.js +5 -1
  270. package/CountryFlags/PL.js +5 -1
  271. package/CountryFlags/PM.js +5 -1
  272. package/CountryFlags/PN.js +5 -1
  273. package/CountryFlags/PR.js +5 -1
  274. package/CountryFlags/PS.js +5 -1
  275. package/CountryFlags/PT.js +5 -1
  276. package/CountryFlags/PW.js +5 -1
  277. package/CountryFlags/PY.js +5 -1
  278. package/CountryFlags/QA.js +5 -1
  279. package/CountryFlags/RE.js +5 -1
  280. package/CountryFlags/RO.js +5 -1
  281. package/CountryFlags/RS.js +5 -1
  282. package/CountryFlags/RU.js +5 -1
  283. package/CountryFlags/RW.js +5 -1
  284. package/CountryFlags/SA.js +5 -1
  285. package/CountryFlags/SB.js +5 -1
  286. package/CountryFlags/SC.js +5 -1
  287. package/CountryFlags/SD.js +5 -1
  288. package/CountryFlags/SE.js +5 -1
  289. package/CountryFlags/SG.js +5 -1
  290. package/CountryFlags/SH.js +5 -1
  291. package/CountryFlags/SI.js +5 -1
  292. package/CountryFlags/SJ.js +5 -1
  293. package/CountryFlags/SK.js +5 -1
  294. package/CountryFlags/SL.js +5 -1
  295. package/CountryFlags/SM.js +5 -1
  296. package/CountryFlags/SN.js +5 -1
  297. package/CountryFlags/SO.js +5 -1
  298. package/CountryFlags/SR.js +5 -1
  299. package/CountryFlags/SS.js +5 -1
  300. package/CountryFlags/ST.js +5 -1
  301. package/CountryFlags/SV.js +5 -1
  302. package/CountryFlags/SX.js +5 -1
  303. package/CountryFlags/SY.js +5 -1
  304. package/CountryFlags/SZ.js +5 -1
  305. package/CountryFlags/TA.js +5 -1
  306. package/CountryFlags/TC.js +5 -1
  307. package/CountryFlags/TD.js +5 -1
  308. package/CountryFlags/TF.js +5 -1
  309. package/CountryFlags/TG.js +5 -1
  310. package/CountryFlags/TH.js +5 -1
  311. package/CountryFlags/TJ.js +5 -1
  312. package/CountryFlags/TK.js +5 -1
  313. package/CountryFlags/TL.js +5 -1
  314. package/CountryFlags/TM.js +5 -1
  315. package/CountryFlags/TN.js +5 -1
  316. package/CountryFlags/TO.js +5 -1
  317. package/CountryFlags/TR.js +5 -1
  318. package/CountryFlags/TT.js +5 -1
  319. package/CountryFlags/TV.js +5 -1
  320. package/CountryFlags/TW.js +5 -1
  321. package/CountryFlags/TZ.js +5 -1
  322. package/CountryFlags/UA.js +5 -1
  323. package/CountryFlags/UG.js +5 -1
  324. package/CountryFlags/UM.js +5 -1
  325. package/CountryFlags/US.js +5 -1
  326. package/CountryFlags/UY.js +5 -1
  327. package/CountryFlags/UZ.js +5 -1
  328. package/CountryFlags/Uknown.d.ts +7 -3
  329. package/CountryFlags/Uknown.js +9 -31
  330. package/CountryFlags/Unknown.d.ts +3 -0
  331. package/CountryFlags/Unknown.js +42 -0
  332. package/CountryFlags/VA.js +5 -1
  333. package/CountryFlags/VC.js +5 -1
  334. package/CountryFlags/VE.js +5 -1
  335. package/CountryFlags/VG.js +5 -1
  336. package/CountryFlags/VI.js +5 -1
  337. package/CountryFlags/VN.js +5 -1
  338. package/CountryFlags/VU.js +5 -1
  339. package/CountryFlags/WF.js +5 -1
  340. package/CountryFlags/WS.js +5 -1
  341. package/CountryFlags/XK.js +5 -1
  342. package/CountryFlags/YE.js +5 -1
  343. package/CountryFlags/YT.js +5 -1
  344. package/CountryFlags/ZA.js +5 -1
  345. package/CountryFlags/ZM.js +5 -1
  346. package/CountryFlags/ZW.js +5 -1
  347. package/CountryFlags/index.d.ts +2 -1
  348. package/CountryFlags/index.js +3 -1
  349. package/CountryFlags/isLabelled.d.ts +6 -0
  350. package/CountryFlags/isLabelled.js +7 -0
  351. package/DatePicker/index.d.ts +23 -6
  352. package/DatePicker/index.js +84 -23
  353. package/DatePicker/useDatePickerFormat.js +20 -3
  354. package/Grid/index.d.ts +60 -0
  355. package/Grid/index.js +43 -0
  356. package/Highlighted/index.d.ts +1 -1
  357. package/Highlighted/index.js +14 -10
  358. package/LoadingIndicator/LoadingOverlay.d.ts +11 -0
  359. package/LoadingIndicator/LoadingOverlay.js +63 -0
  360. package/LoadingIndicator/Spinner.d.ts +34 -5
  361. package/LoadingIndicator/Spinner.js +48 -37
  362. package/LoadingIndicator/SpinnerCircle.d.ts +14 -0
  363. package/LoadingIndicator/SpinnerCircle.js +34 -0
  364. package/LoadingIndicator/index.d.ts +8 -3
  365. package/LoadingIndicator/index.js +9 -15
  366. package/MaskedField/index.d.ts +3 -2
  367. package/MaskedField/index.js +7 -2
  368. package/MaskedField/templates.js +2 -0
  369. package/MaskedField/useMasked.js +26 -12
  370. package/Menu/MenuContainer.d.ts +11 -3
  371. package/Menu/MenuContainer.js +127 -65
  372. package/Menu/MenuItem.js +1 -1
  373. package/Menu/VirtualizedList.js +1 -3
  374. package/Menu/context.js +5 -0
  375. package/Modal/BaseModal/ModalWrapper.js +65 -38
  376. package/Modal/BaseModal/context.js +6 -0
  377. package/Modal/BaseModal/index.js +0 -8
  378. package/Modal/BaseModal/useDialogID.d.ts +6 -0
  379. package/Modal/BaseModal/useDialogID.js +12 -0
  380. package/Modal/ConfirmBox/ConfirmBoxContainer.js +5 -1
  381. package/Modal/ConfirmBox/index.js +2 -1
  382. package/Modal/Dialog/DialogInner.js +1 -1
  383. package/Modal/Dialog/index.js +12 -7
  384. package/Modal/Drawer/DrawerHeader.d.ts +20 -0
  385. package/Modal/Drawer/DrawerHeader.js +3 -3
  386. package/Modal/Drawer/DrawerInner.js +9 -1
  387. package/Modal/Drawer/index.d.ts +7 -0
  388. package/Modal/Drawer/index.js +12 -10
  389. package/Modal/MessageBox/MessageBoxContainer.js +1 -1
  390. package/Modal/MessageBox/index.js +2 -1
  391. package/PhoneField/CountryFlagComponent.js +2 -2
  392. package/PhoneField/UnknownFlag.d.ts +6 -3
  393. package/PhoneField/UnknownFlag.js +8 -31
  394. package/PhoneField/index.js +45 -55
  395. package/PhoneField/templates.js +13 -14
  396. package/PhoneField/usePhoneUtils.d.ts +15 -0
  397. package/PhoneField/usePhoneUtils.js +30 -37
  398. package/Popper/Popper.d.ts +30 -10
  399. package/Popper/Popper.js +9 -7
  400. package/Popper/usePopper.d.ts +21 -31
  401. package/Popper/usePopper.js +79 -46
  402. package/README.md +27 -10
  403. package/Radio/RadioBox.d.ts +14 -0
  404. package/Radio/RadioBox.js +100 -0
  405. package/Radio/RadioContainer.d.ts +27 -0
  406. package/Radio/RadioContainer.js +38 -0
  407. package/Radio/RadioTextWrapper.d.ts +4 -0
  408. package/Radio/RadioTextWrapper.js +29 -0
  409. package/Radio/index.d.ts +64 -0
  410. package/Radio/index.js +49 -0
  411. package/Radio/useRadioColor.d.ts +6 -0
  412. package/Radio/useRadioColor.js +33 -0
  413. package/RadioGroup/RadioGroupAsterisk.d.ts +13 -0
  414. package/RadioGroup/RadioGroupAsterisk.js +53 -0
  415. package/RadioGroup/RadioGroupContainer.d.ts +4 -0
  416. package/RadioGroup/RadioGroupContainer.js +36 -0
  417. package/RadioGroup/RadioGroupContext.d.ts +20 -0
  418. package/RadioGroup/RadioGroupContext.js +11 -0
  419. package/RadioGroup/RadioGroupErrorText.d.ts +6 -0
  420. package/RadioGroup/RadioGroupErrorText.js +76 -0
  421. package/RadioGroup/RadioGroupItems.d.ts +9 -0
  422. package/RadioGroup/RadioGroupItems.js +30 -0
  423. package/RadioGroup/RadioGroupLegend.d.ts +4 -0
  424. package/RadioGroup/RadioGroupLegend.js +37 -0
  425. package/RadioGroup/index.d.ts +134 -0
  426. package/RadioGroup/index.js +62 -0
  427. package/Selectbox/SelectboxMenu.d.ts +1 -1
  428. package/Selectbox/index.d.ts +18 -2
  429. package/Selectbox/index.js +32 -32
  430. package/Stack/index.d.ts +62 -0
  431. package/Stack/index.js +38 -0
  432. package/Surface/SurfaceContainer.js +6 -0
  433. package/Surface/index.js +7 -3
  434. package/Swiper/Swiper.d.ts +28 -2
  435. package/Swiper/Swiper.js +246 -91
  436. package/Swiper/SwiperContainer.js +0 -2
  437. package/Swiper/SwiperSlidesRenderer.d.ts +8 -0
  438. package/Swiper/SwiperSlidesRenderer.js +17 -14
  439. package/Swiper/SwiperTrack.d.ts +8 -0
  440. package/Swiper/SwiperTrack.js +8 -3
  441. package/Swiper/SwiperWrapper.js +9 -1
  442. package/Switch/SwitchContainer.d.ts +1 -1
  443. package/Switch/SwitchContainer.js +5 -5
  444. package/Switch/SwitchDot.js +13 -53
  445. package/Switch/SwitchToggleWrapper.d.ts +1 -1
  446. package/Switch/SwitchToggleWrapper.js +5 -6
  447. package/Switch/SwitchTrack.js +5 -41
  448. package/Switch/index.d.ts +4 -4
  449. package/Switch/index.js +21 -11
  450. package/Switch/useSwitchColor.d.ts +7 -0
  451. package/Switch/useSwitchColor.js +33 -0
  452. package/Table/Table.d.ts +6 -0
  453. package/Table/Table.js +7 -62
  454. package/Table/TableBody.d.ts +1 -1
  455. package/Table/TableBody.js +4 -2
  456. package/Table/TableCaption.d.ts +2 -2
  457. package/Table/TableCaption.js +2 -3
  458. package/Table/TableCell.js +2 -5
  459. package/Table/TableFooter.js +8 -7
  460. package/Table/TableHeader.js +6 -2
  461. package/Table/TableHeaderCell.js +8 -9
  462. package/Table/TableRow.js +1 -5
  463. package/TextArea/TextAreaIconWrapper.d.ts +1 -1
  464. package/TextArea/TextAreaInput.js +2 -0
  465. package/TextArea/index.js +7 -15
  466. package/TextField/TextFieldInput.js +2 -0
  467. package/TextField/TextFieldInputWrapper.d.ts +2 -0
  468. package/TextField/TextFieldInputWrapper.js +12 -2
  469. package/TextField/index.js +7 -19
  470. package/ThemeProvider/createTheme.js +2 -3
  471. package/ThemeProvider/index.d.ts +19 -2
  472. package/Typography/Base.d.ts +1 -1
  473. package/Typography/Base.js +1 -1
  474. package/Typography/Blockquote.js +1 -1
  475. package/Typography/Del.js +2 -2
  476. package/Typography/H4.js +1 -1
  477. package/Typography/H5.js +2 -2
  478. package/Typography/H6.d.ts +4 -0
  479. package/Typography/H6.js +28 -0
  480. package/Typography/SectionDescription.js +0 -1
  481. package/Typography/SectionTitle.d.ts +4 -7
  482. package/Typography/SectionTitle.js +26 -8
  483. package/Typography/index.d.ts +27 -0
  484. package/Typography/index.js +35 -0
  485. package/package.json +2 -4
  486. package/utils/TabManager.d.ts +7 -1
  487. package/utils/TabManager.js +39 -45
  488. package/utils/spacing.d.ts +11 -0
  489. package/utils/spacing.js +14 -0
  490. package/Autocomplete/OverrideMenuList.d.ts +0 -4
  491. package/Autocomplete/OverrideMenuList.js +0 -39
  492. package/Autocomplete2/Autocomplete2.d.ts +0 -12
  493. package/Autocomplete2/Autocomplete2.js +0 -83
  494. package/Autocomplete2/Autocomplete2TextField.d.ts +0 -7
  495. package/Autocomplete2/index.d.ts +0 -2
  496. package/Autocomplete2/index.js +0 -7
  497. package/CountryFlags/SwiperOverview.d.ts +0 -257
  498. package/CountryFlags/SwiperOverview.js +0 -524
@@ -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;
@@ -1,34 +1,11 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
4
  };
25
5
  Object.defineProperty(exports, "__esModule", { value: true });
26
- const React = __importStar(require("react"));
27
- const react_1 = require("@emotion/react");
28
- const UnknownFlag = (props, ref) => {
29
- const { color } = (0, react_1.useTheme)();
30
- return (React.createElement("svg", Object.assign({ xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 512 512", ref: ref }, props),
31
- React.createElement("path", { transform: "translate(78.682 31.951)", d: "m-78.682-31.951h512v512h-512z", fill: color.surface.toString(), strokeLinejoin: "round", strokeWidth: "2.176" }),
32
- React.createElement("path", { transform: "translate(78.682 31.951)", d: "m177.32 288.09q-4.915 0-8.0953-3.1803-3.1803-3.4694-3.1803-8.3844 0-11.854 5.7824-25.153 5.7823-13.299 15.612-22.551l7.2279-6.6497q9.83-9.2518 15.323-15.323 5.4932-6.3606 8.9626-15.034 3.7585-8.9626 3.7585-20.527 0-11.276-5.4932-20.527-5.4932-9.5409-15.612-15.034-10.119-5.4932-23.129-5.4932-21.395 0-34.116 13.01-12.432 12.721-12.432 33.248 0 4.915-3.1803 8.0953-2.8912 2.8912-7.8062 2.8912t-8.0953-2.8912q-3.1803-3.1803-3.1803-8.0953 0-19.66 8.6735-34.983 8.6735-15.323 24.286-23.997 15.612-8.6735 35.851-8.6735 19.082 0 34.116 8.3844 15.323 8.0953 23.708 22.551 8.6735 14.456 8.6735 32.67 0 14.167-4.6259 24.864-4.6259 10.408-11.854 18.503-6.9388 8.0953-19.949 19.949l-5.2041 4.6259q-8.0953 7.2279-11.565 17.058-3.1803 9.5409-3.1803 19.082 0 4.915-3.1803 8.3844-3.1803 3.1803-8.0953 3.1803zm0 51.174q-7.2279 0-12.143-4.915-4.6259-4.915-4.6259-11.854 0-7.2279 4.915-12.143 4.915-4.915 11.854-4.915t11.854 4.915q5.2041 4.915 5.2041 12.143 0 6.9388-5.2041 11.854-4.915 4.915-11.854 4.915z", fill: color.textPrimary.toString(), strokeWidth: ".72279" })));
33
- };
34
- exports.default = React.forwardRef(UnknownFlag);
6
+ const Unknown_1 = __importDefault(require("../CountryFlags/Unknown"));
7
+ /**
8
+ * @deprecated Use `Unknown` from `@via-profit/ui-kit/CountryFlags/Unknown`
9
+ */
10
+ const UnknownFlag = Unknown_1.default;
11
+ exports.default = UnknownFlag;
@@ -29,71 +29,61 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
29
29
  };
30
30
  Object.defineProperty(exports, "__esModule", { value: true });
31
31
  const react_1 = __importDefault(require("react"));
32
- const TextField_1 = __importDefault(require("../TextField"));
32
+ const MaskedField_1 = __importDefault(require("../MaskedField"));
33
33
  const usePhoneUtils_1 = require("./usePhoneUtils");
34
34
  const CountryFlagComponent_1 = __importDefault(require("./CountryFlagComponent"));
35
35
  const PhoneField = (props, ref) => {
36
+ var _a, _b;
36
37
  const { value, templates, inputRef, withoutCountryFlag, onChange } = props, textFieldProps = __rest(props, ["value", "templates", "inputRef", "withoutCountryFlag", "onChange"]);
37
- const { formatParsedInput, parseInput, parseAndFormat } = (0, usePhoneUtils_1.usePhoneUtils)({ templates });
38
+ const { parseInput, parseAndFormat, getTemplateInfo } = (0, usePhoneUtils_1.usePhoneUtils)({ templates });
38
39
  const textInputRef = react_1.default.useRef(null);
39
- const initialValue = react_1.default.useRef(value);
40
- const [state, setState] = react_1.default.useState(() => {
41
- const { text, countryCode, placeholder, number, CountryFlag } = parseAndFormat(String(initialValue.current));
42
- return {
43
- currentValue: text,
44
- number,
45
- countryCode,
46
- placeholder,
47
- CountryFlag,
48
- };
49
- });
50
- const { countryCode, currentValue, placeholder, CountryFlag } = state;
40
+ // The current text of the field: the flag and the placeholder follow it
41
+ const [currentValue, setCurrentValue] = react_1.default.useState(() => parseAndFormat(String(value)).text);
42
+ const lastValue = react_1.default.useRef(value);
51
43
  react_1.default.useEffect(() => {
52
- if (initialValue.current !== value) {
53
- initialValue.current = value;
54
- const formatted = parseAndFormat(String(value));
55
- if (formatted.text !== currentValue) {
56
- setState(prev => (Object.assign(Object.assign({}, prev), { currentValue: formatted.text, countryCode: formatted.countryCode, placeholder: formatted.placeholder, CountryFlag: formatted.CountryFlag })));
57
- }
44
+ if (lastValue.current !== value) {
45
+ lastValue.current = value;
46
+ setCurrentValue(parseAndFormat(String(value)).text);
58
47
  }
59
- }, [countryCode, currentValue, parseAndFormat, placeholder, value]);
60
- const handleChange = event => {
48
+ }, [parseAndFormat, value]);
49
+ const { CountryFlag, placeholder } = react_1.default.useMemo(() => parseAndFormat(currentValue), [parseAndFormat, currentValue]);
50
+ // <MaskedField> gets the phone-specific parsing and the mask of the detected template
51
+ const parsePhone = react_1.default.useCallback((input, _mask, caret) => (0, usePhoneUtils_1.dropExtraPluses)(parseInput(input, caret)), [parseInput]);
52
+ const getMask = react_1.default.useCallback((input) => (0, usePhoneUtils_1.templateToMask)(getTemplateInfo(parsePhone(input, []).text).template), [getTemplateInfo, parsePhone]);
53
+ const handleChange = react_1.default.useCallback((payload, event) => {
61
54
  var _a;
62
- const parsed = parseInput(String(event.currentTarget.value), ((_a = textInputRef.current) === null || _a === void 0 ? void 0 : _a.selectionStart) || 0);
63
- const { caret, text, template, placeholder, countryCode, callingCode, CountryFlag, number, isValid, } = formatParsedInput(parsed.text, parsed.caret);
64
- onChange(Object.assign(Object.assign({}, event), { currentTarget: Object.assign(Object.assign({}, event.currentTarget), { value: text }) }), {
65
- value: text,
66
- placeholder,
67
- CountryFlag,
68
- template,
69
- countryCode,
70
- callingCode,
71
- number,
72
- isValid,
73
- combined: `${callingCode !== null && callingCode !== void 0 ? callingCode : ''}${number}`,
55
+ const formatted = parseAndFormat(payload.text);
56
+ setCurrentValue(payload.text);
57
+ onChange(event, {
58
+ value: payload.text,
59
+ placeholder: formatted.placeholder,
60
+ CountryFlag: formatted.CountryFlag,
61
+ template: formatted.template,
62
+ countryCode: formatted.countryCode,
63
+ callingCode: formatted.callingCode,
64
+ number: formatted.number,
65
+ isValid: formatted.isValid,
66
+ combined: `${(_a = formatted.callingCode) !== null && _a !== void 0 ? _a : ''}${formatted.number}`,
74
67
  });
75
- setState(prev => (Object.assign(Object.assign({}, prev), { currentValue: text, countryCode,
76
- placeholder,
77
- CountryFlag })));
78
- setTimeout(() => {
79
- var _a;
80
- (_a = textInputRef.current) === null || _a === void 0 ? void 0 : _a.setSelectionRange(caret, caret);
81
- }, 15);
82
- };
83
- return (react_1.default.createElement(TextField_1.default, Object.assign({ ref: ref, startIcon: react_1.default.useMemo(() => withoutCountryFlag ? undefined : (react_1.default.createElement(CountryFlagComponent_1.default, { flag: CountryFlag, onClick: () => {
84
- if (textInputRef.current) {
85
- textInputRef.current.select();
86
- textInputRef.current.focus();
87
- }
88
- } })), [CountryFlag, withoutCountryFlag]) }, textFieldProps, { value: currentValue, placeholder: placeholder, onChange: handleChange, inputRef: input => {
89
- textInputRef.current = input;
90
- if (typeof inputRef === 'function') {
91
- inputRef(input);
92
- }
93
- if (inputRef && typeof inputRef === 'object') {
94
- inputRef.current = input;
68
+ }, [onChange, parseAndFormat]);
69
+ const setInputRef = react_1.default.useCallback((input) => {
70
+ textInputRef.current = input;
71
+ if (typeof inputRef === 'function') {
72
+ inputRef(input);
73
+ }
74
+ if (inputRef && typeof inputRef === 'object') {
75
+ inputRef.current = input;
76
+ }
77
+ }, [inputRef]);
78
+ const startIcon = react_1.default.useMemo(() => withoutCountryFlag ? undefined : (react_1.default.createElement(CountryFlagComponent_1.default, { flag: CountryFlag, onClick: () => {
79
+ if (textInputRef.current) {
80
+ textInputRef.current.select();
81
+ textInputRef.current.focus();
95
82
  }
96
- } })));
83
+ } })), [CountryFlag, withoutCountryFlag]);
84
+ return (react_1.default.createElement(MaskedField_1.default, Object.assign({ ref: ref }, textFieldProps, {
85
+ // An explicit `startIcon={undefined}` (e.g. from <Autocomplete>) must not hide the flag
86
+ startIcon: (_a = textFieldProps.startIcon) !== null && _a !== void 0 ? _a : startIcon, value: value, mask: getMask, parseInput: parsePhone, placeholder: (_b = textFieldProps.placeholder) !== null && _b !== void 0 ? _b : placeholder, onChange: handleChange, inputRef: setInputRef })));
97
87
  };
98
88
  exports.default = react_1.default.forwardRef(PhoneField);
99
89
  __exportStar(require("./usePhoneUtils"), exports);
@@ -17,30 +17,29 @@ const CN_1 = __importDefault(require("../CountryFlags/CN"));
17
17
  exports.templates = [
18
18
  // Russian template
19
19
  ['RU', react_1.default.createElement(RU_1.default, { key: "ru-1" }), '7', '+x (xxx) xxx-xx-xx', '+7 (987) 654-32-10', /^\+$/], // must be at first (Default RU)
20
- ['RU', react_1.default.createElement(RU_1.default, { key: "ru-2" }), '7', '8 (xxx) xxx-xx-xx', '8 (987) 654-32-10', /^8[^1]{0,}/], // 8912...
20
+ // 81... is Japan without «+»: Russian area codes never start with 1
21
+ ['RU', react_1.default.createElement(RU_1.default, { key: "ru-2" }), '7', '8 (xxx) xxx-xx-xx', '8 (987) 654-32-10', /^8(?!1)/], // 8912...
21
22
  [
22
23
  'RU',
23
24
  react_1.default.createElement(RU_1.default, { key: "ru-3" }),
24
25
  '7',
25
26
  '+7 (xxx) xxx-xx-xx',
26
27
  '+7 (987) 654-32-10',
27
- /^\+{0,1}7([0-5]|[8-9])[0-9][0-9]/,
28
+ // Also matches a bare «+7» while typing, so the flag does not blink; 76 and 77 are Kazakhstan
29
+ /^\+{0,1}7(?![67])/,
28
30
  ], // +79...
29
31
  // Other fucking countries
30
32
  ['BY', react_1.default.createElement(BY_1.default, { key: "by" }), '375', '+375 (xx) xxx-xx-xx', '+375 (98) 765-43-21', /^\+{0,1}375/],
31
33
  ['CN', react_1.default.createElement(CN_1.default, { key: "cn" }), '86', '+86 (xxx) xxxx-xxxx', '+86 (138) 0013-8000', /^\+{0,1}86/],
32
- ['KZ', react_1.default.createElement(KZ_1.default, { key: "kz-1" }), '7', '+997 (xx) xxx-xx-xx', '+997 (98) 765-43-21', /^\+{0,1}997/],
33
- [
34
- 'KZ',
35
- react_1.default.createElement(KZ_1.default, { key: "kz-2" }),
36
- '7',
37
- '+7 (xxx) xxx-xx-xx',
38
- '+7 (600) 765-43-21',
39
- /^\+{0,1}7[6-7][0-9][0-9]/,
40
- ], // +7600 - +7700
34
+ ['KZ', react_1.default.createElement(KZ_1.default, { key: "kz-1" }), '997', '+997 (xx) xxx-xx-xx', '+997 (98) 765-43-21', /^\+{0,1}997/],
35
+ ['KZ', react_1.default.createElement(KZ_1.default, { key: "kz-2" }), '7', '+7 (xxx) xxx-xx-xx', '+7 (600) 765-43-21', /^\+{0,1}7[67]/], // +76, +77
41
36
  ['UA', react_1.default.createElement(UA_1.default, { key: "ua" }), '380', '+380 (xx) xxx-xxxx', '+380 (98) 765-4321', /^\+{0,1}380/],
42
- ['JP', react_1.default.createElement(JP_1.default, { key: "jp" }), '81', '+81 (xx) xxx-xxxx', '+81 (98) 765-4321', /^\+{0,1}81/],
43
- ['US', react_1.default.createElement(US_1.default, { key: "us" }), '1', '+1 xxx xxx-xx-xx', '+1 987 654-32-10', /^\+{0,1}1/],
44
- ['IL', react_1.default.createElement(IL_1.default, { key: "il" }), '972', '+972 xx xxx-xx-xx', '+972 65 432-10-01', /^\+972/],
37
+ // Mobile numbers (070, 080, 090) have 10 digits, landlines have 9
38
+ ['JP', react_1.default.createElement(JP_1.default, { key: "jp-1" }), '81', '+81 (xx) xxxx-xxxx', '+81 (90) 1234-5678', /^\+{0,1}81[789]0/],
39
+ ['JP', react_1.default.createElement(JP_1.default, { key: "jp-2" }), '81', '+81 (xx) xxx-xxxx', '+81 (98) 765-4321', /^\+{0,1}81/],
40
+ ['US', react_1.default.createElement(US_1.default, { key: "us" }), '1', '+1 (xxx) xxx-xxxx', '+1 (987) 654-3210', /^\+{0,1}1/],
41
+ // Mobile (5x) and VoIP (7x) numbers have 9 digits, landlines have 8
42
+ ['IL', react_1.default.createElement(IL_1.default, { key: "il-1" }), '972', '+972 xx xxx-xx-xx', '+972 50 432-10-01', /^\+{0,1}972[57]/],
43
+ ['IL', react_1.default.createElement(IL_1.default, { key: "il-2" }), '972', '+972 x xxx-xxxx', '+972 3 432-1001', /^\+{0,1}972/],
45
44
  ];
46
45
  exports.default = exports.templates;
@@ -1,4 +1,5 @@
1
1
  import type { CountryCode, PhoneTemplate, CountryFlag } from './templates';
2
+ import { Mask } from '../MaskedField/useMasked';
2
3
  export interface Formatted {
3
4
  readonly text: string;
4
5
  readonly caret: number;
@@ -26,6 +27,20 @@ type Validate = (inputValue: string, template: string) => boolean;
26
27
  type Format = (text: string, caret: number, defaultCountry?: string | null) => Formatted;
27
28
  type ParseAndValidate = (inputValue: string) => boolean;
28
29
  type ParseAndFormat = (inputValue: string, caret?: number) => Formatted;
30
+ /**
31
+ * Converts a phone template to a mask: «x» is a digit, other chars are literals
32
+ */
33
+ export declare const templateToMask: (template: string) => Mask;
34
+ /**
35
+ * «+» is allowed only as the first char of a parsed phone, the other ones are dropped
36
+ */
37
+ export declare const dropExtraPluses: (parsed: {
38
+ readonly text: string;
39
+ readonly caret: number;
40
+ }) => {
41
+ text: string;
42
+ caret: number;
43
+ };
29
44
  export declare const usePhoneUtils: (params: {
30
45
  templates: readonly PhoneTemplate[];
31
46
  }) => {
@@ -3,15 +3,34 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.usePhoneUtils = void 0;
6
+ exports.usePhoneUtils = exports.dropExtraPluses = exports.templateToMask = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
- const UnknownFlag_1 = __importDefault(require("./UnknownFlag"));
8
+ const Unknown_1 = __importDefault(require("../CountryFlags/Unknown"));
9
+ const useMasked_1 = require("../MaskedField/useMasked");
10
+ /**
11
+ * Converts a phone template to a mask: «x» is a digit, other chars are literals
12
+ */
13
+ const templateToMask = (template) => template.split('').map(char => (char === 'x' ? /\d/ : char));
14
+ exports.templateToMask = templateToMask;
15
+ /**
16
+ * «+» is allowed only as the first char of a parsed phone, the other ones are dropped
17
+ */
18
+ const dropExtraPluses = (parsed) => {
19
+ const { text, caret } = parsed;
20
+ const removedBeforeCaret = (text.slice(1, Math.max(caret, 1)).match(/\+/g) || []).length;
21
+ return {
22
+ text: text.charAt(0) + text.slice(1).replace(/\+/g, ''),
23
+ caret: caret - removedBeforeCaret,
24
+ };
25
+ };
26
+ exports.dropExtraPluses = dropExtraPluses;
9
27
  const usePhoneUtils = (params) => {
10
28
  const { templates } = params;
29
+ const masked = (0, useMasked_1.useMasked)();
11
30
  const templatesList = react_1.default.useMemo(() => templates.concat([
12
31
  [
13
32
  null,
14
- react_1.default.createElement(UnknownFlag_1.default, { key: "unknnown" }),
33
+ react_1.default.createElement(Unknown_1.default, { key: "unknnown" }),
15
34
  null,
16
35
  '+x xxx xxx-xx-xx',
17
36
  '+7 987 654-32-10',
@@ -61,44 +80,18 @@ const usePhoneUtils = (params) => {
61
80
  if (inputValue === '') {
62
81
  return data;
63
82
  }
64
- const { countryCode, callingCode, CountryFlag, template, placeholder } = getTemplateInfo(inputValue);
65
- const mask = template.split('').map(c => (c === 'x' ? /\d/ : c));
66
- let charIndex = 0;
67
- for (let patternIndex = 0; patternIndex < mask.length; patternIndex++) {
68
- if (charIndex >= inputValue.length) {
69
- break;
70
- }
71
- const char = inputValue[charIndex];
72
- const template = mask[patternIndex];
73
- // If put +, but not first
74
- if (charIndex !== 0 && char === '+') {
75
- break;
76
- }
77
- if (template instanceof RegExp && new RegExp(template).test(char)) {
78
- data.text = `${data.text}${char}`;
79
- charIndex += 1;
80
- }
81
- if (typeof template === 'string' && template === char) {
82
- data.text = `${data.text}${char}`;
83
- charIndex += 1;
84
- }
85
- if (typeof template === 'string' && template !== char) {
86
- data.text = `${data.text}${template}`;
87
- if (charIndex < caret) {
88
- data.caret += 1;
89
- }
90
- }
91
- }
92
- // const templateLength = template.replace(/[^x\d]/g, '').split('').length;
93
- // const valueLength = inputValue.replace(/[^\d]/g, '').split('').length;
94
- const number = data.text.replace(/[^0-9]/g, '').substring((callingCode === null || callingCode === void 0 ? void 0 : callingCode.length) || 0);
95
- return Object.assign(Object.assign({}, data), { countryCode,
83
+ // The mask engine is shared with <MaskedField>, only the template is phone-specific
84
+ const normalized = (0, exports.dropExtraPluses)({ text: inputValue, caret });
85
+ const { countryCode, callingCode, CountryFlag, template, placeholder } = getTemplateInfo(normalized.text);
86
+ const formatted = masked.formatParsedInput(normalized.text, (0, exports.templateToMask)(template), normalized.caret);
87
+ const number = formatted.text.replace(/[^0-9]/g, '').substring((callingCode === null || callingCode === void 0 ? void 0 : callingCode.length) || 0);
88
+ return Object.assign(Object.assign({}, data), { text: formatted.text, caret: formatted.caret, countryCode,
96
89
  callingCode,
97
90
  CountryFlag,
98
91
  template,
99
92
  placeholder,
100
- number, isValid: validateParsedInput(data.text, template) });
101
- }, [getTemplateInfo, templatesList, validateParsedInput]);
93
+ number, isValid: validateParsedInput(formatted.text, template) });
94
+ }, [getTemplateInfo, templatesList, validateParsedInput, masked]);
102
95
  /**
103
96
  * Parse phone string
104
97
  */
@@ -16,9 +16,9 @@ export interface PopperProps extends React.HTMLAttributes<HTMLDivElement> {
16
16
  readonly isOpen: boolean;
17
17
  /**
18
18
  * The HTML element to which the popper will be attached and positioned relative to.
19
- * If `null` or undefined, the popper will not be positioned.
19
+ * While it is `null`, the popper stays hidden even if `isOpen` is `true`.
20
20
  *
21
- * @default undefined
21
+ * @required
22
22
  * @example
23
23
  * ```tsx
24
24
  * const [anchor, setAnchor] = useState<HTMLButtonElement | null>(null);
@@ -38,13 +38,33 @@ export interface PopperProps extends React.HTMLAttributes<HTMLDivElement> {
38
38
  * ```
39
39
  */
40
40
  readonly anchorPos?: AnchorPos;
41
+ /**
42
+ * Placements to try right after `anchorPos` when `autoFlip` is enabled.
43
+ * For `auto` placements this is the full list of placements to try.
44
+ * For the other placements `auto` and `*-fill` values of this list are ignored.
45
+ *
46
+ * @default undefined
47
+ * @example
48
+ * ```tsx
49
+ * <Popper anchorPos="bottom-fill" autoFlip alternativePlacements={['top-fill']}>...</Popper>
50
+ * ```
51
+ */
41
52
  readonly alternativePlacements?: readonly AnchorPos[];
53
+ /**
54
+ * Called when the actual placement changes, e.g. after a flip caused by `autoFlip`
55
+ *
56
+ * @default undefined
57
+ * @example
58
+ * ```tsx
59
+ * <Popper autoFlip onAnchorPosChanged={placement => setArrowSide(placement)}>...</Popper>
60
+ * ```
61
+ */
42
62
  readonly onAnchorPosChanged?: (anchorPos: AnchorPos) => void;
43
63
  /**
44
64
  * The z-index value for the popper container.
45
65
  * Used to control the stacking order of the popper relative to other elements.
46
66
  *
47
- * @default theme.zIndex.modal
67
+ * @default theme.zIndex.modal for the `fixed` strategy, not set for `absolute`
48
68
  * @example
49
69
  * ```tsx
50
70
  * <Popper zIndex={9999}>...</Popper>
@@ -56,7 +76,7 @@ export interface PopperProps extends React.HTMLAttributes<HTMLDivElement> {
56
76
  * if the preferred placement doesn't fit in the viewport.
57
77
  * The component will iterate through possible placements until it finds one that fits.
58
78
  *
59
- * @default true
79
+ * @default false
60
80
  * @example
61
81
  * ```tsx
62
82
  * <Popper autoFlip={true}>...</Popper> // Will flip if needed
@@ -78,8 +98,9 @@ export interface PopperProps extends React.HTMLAttributes<HTMLDivElement> {
78
98
  readonly offset?: number;
79
99
  /**
80
100
  * The positioning strategy to use.
81
- * - `'fixed'`: Positions relative to the viewport. Works reliably in all cases.
82
- * - `'absolute'`: Positions relative to the nearest positioned ancestor.
101
+ * - `'fixed'`: Renders into a portal and positions relative to the viewport.
102
+ * The popper is kept inside the viewport and is not clipped by `overflow: hidden` parents.
103
+ * - `'absolute'`: Renders in place and positions relative to the nearest positioned ancestor.
83
104
  * When using 'absolute', make sure a parent element has `position: relative`.
84
105
  *
85
106
  * @default 'fixed'
@@ -92,13 +113,12 @@ export interface PopperProps extends React.HTMLAttributes<HTMLDivElement> {
92
113
  readonly positionStrategy?: PositionStrategy;
93
114
  /**
94
115
  * Minimum distance (in pixels) that the popper must maintain from the viewport edges.
95
- * Used to prevent the popper from being positioned too close to the screen boundaries.
96
- * The popper will try to flip to another placement if it cannot maintain this margin.
116
+ * With `autoFlip` a placement that breaks this margin is skipped.
117
+ * With the `fixed` strategy the popper is also shifted to keep this margin.
97
118
  *
98
- * @default 8
119
+ * @default 30
99
120
  * @example
100
121
  * ```tsx
101
- * // Larger margin for better visibility
102
122
  * <Popper viewportMargin={16}>...</Popper>
103
123
  *
104
124
  * // No margin (allow touching edges)
package/Popper/Popper.js CHANGED
@@ -67,17 +67,19 @@ const Popper = (props, ref) => {
67
67
  }
68
68
  const newNode = window.document.createElement('div');
69
69
  newNode.setAttribute('id', exports.PORTAL_ID);
70
- if (positionStrategy === 'absolute') {
71
- newNode.style.position = 'relative';
72
- }
73
70
  window.document.body.appendChild(newNode);
74
71
  return newNode;
75
- }, [positionStrategy]);
72
+ }, []);
73
+ const onAnchorPosChangedRef = react_1.default.useRef(onAnchorPosChanged);
74
+ onAnchorPosChangedRef.current = onAnchorPosChanged;
75
+ const prevPlacementRef = react_1.default.useRef(actualPlacement);
76
76
  react_1.default.useEffect(() => {
77
- if (anchorPos !== actualPlacement && typeof onAnchorPosChanged === 'function') {
78
- onAnchorPosChanged(actualPlacement);
77
+ var _a;
78
+ if (prevPlacementRef.current !== actualPlacement) {
79
+ prevPlacementRef.current = actualPlacement;
80
+ (_a = onAnchorPosChangedRef.current) === null || _a === void 0 ? void 0 : _a.call(onAnchorPosChangedRef, actualPlacement);
79
81
  }
80
- }, [anchorPos, actualPlacement, onAnchorPosChanged]);
82
+ }, [actualPlacement]);
81
83
  const childrenMemo = react_1.default.useMemo(() => children, [children]);
82
84
  const renderNode = react_1.default.useCallback(() => (react_1.default.createElement(overridesMap.Container, Object.assign({}, nativeProps, { style: Object.assign(Object.assign(Object.assign(Object.assign({}, style), nativeProps.style), { opacity: isVisible ? 1 : 0, pointerEvents: isVisible ? 'auto' : 'none' }), (positionStrategy === 'fixed' && {
83
85
  position: 'fixed',