@skbkontur/react-ui 3.6.0 → 3.8.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 (281) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/cjs/components/Button/Button.d.ts +1 -0
  3. package/cjs/components/Button/Button.js +7 -4
  4. package/cjs/components/Button/Button.js.map +1 -1
  5. package/cjs/components/Button/Button.styles.js +2 -2
  6. package/cjs/components/Button/Button.styles.js.map +1 -1
  7. package/cjs/components/Checkbox/Checkbox.js +9 -8
  8. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  9. package/cjs/components/Checkbox/Checkbox.styles.js +3 -2
  10. package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
  11. package/cjs/components/CurrencyLabel/CurrencyLabel.js +14 -5
  12. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  13. package/cjs/components/CurrencyLabel/CurrencyLabel.styles.d.ts +4 -0
  14. package/cjs/components/CurrencyLabel/CurrencyLabel.styles.js +9 -0
  15. package/cjs/components/CurrencyLabel/CurrencyLabel.styles.js.map +1 -0
  16. package/cjs/components/FxInput/FxInput.js +1 -1
  17. package/cjs/components/FxInput/FxInput.js.map +1 -1
  18. package/cjs/components/Input/Input.styles.js +1 -1
  19. package/cjs/components/Input/Input.styles.js.map +1 -1
  20. package/cjs/components/Kebab/Kebab.js +2 -2
  21. package/cjs/components/Kebab/Kebab.js.map +1 -1
  22. package/cjs/components/Link/Link.js +2 -2
  23. package/cjs/components/Link/Link.js.map +1 -1
  24. package/cjs/components/Loader/Loader.d.ts +3 -1
  25. package/cjs/components/Loader/Loader.js +20 -1
  26. package/cjs/components/Loader/Loader.js.map +1 -1
  27. package/cjs/components/MenuItem/MenuItem.md +1 -1
  28. package/cjs/components/MenuItem/MenuItem.styles.js +3 -2
  29. package/cjs/components/MenuItem/MenuItem.styles.js.map +1 -1
  30. package/cjs/components/Modal/Modal.styles.d.ts +1 -0
  31. package/cjs/components/Modal/Modal.styles.js +24 -21
  32. package/cjs/components/Modal/Modal.styles.js.map +1 -1
  33. package/cjs/components/Modal/ModalClose.js +23 -3
  34. package/cjs/components/Modal/ModalClose.js.map +1 -1
  35. package/cjs/components/Paging/Paging.js +2 -2
  36. package/cjs/components/Paging/Paging.js.map +1 -1
  37. package/cjs/components/Paging/Paging.styles.js +2 -1
  38. package/cjs/components/Paging/Paging.styles.js.map +1 -1
  39. package/cjs/components/Radio/Radio.d.ts +9 -1
  40. package/cjs/components/Radio/Radio.js +37 -4
  41. package/cjs/components/Radio/Radio.js.map +1 -1
  42. package/cjs/components/Radio/Radio.styles.d.ts +1 -1
  43. package/cjs/components/Radio/Radio.styles.js +5 -10
  44. package/cjs/components/Radio/Radio.styles.js.map +1 -1
  45. package/cjs/components/ScrollContainer/ScrollBar.d.ts +37 -0
  46. package/cjs/components/ScrollContainer/ScrollBar.js +244 -0
  47. package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -0
  48. package/cjs/components/ScrollContainer/ScrollContainer.constants.d.ts +23 -0
  49. package/cjs/components/ScrollContainer/ScrollContainer.constants.js +33 -0
  50. package/cjs/components/ScrollContainer/ScrollContainer.constants.js.map +1 -0
  51. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +38 -23
  52. package/cjs/components/ScrollContainer/ScrollContainer.helpers.d.ts +10 -0
  53. package/cjs/components/ScrollContainer/ScrollContainer.helpers.js +62 -0
  54. package/cjs/components/ScrollContainer/ScrollContainer.helpers.js.map +1 -0
  55. package/cjs/components/ScrollContainer/ScrollContainer.js +81 -153
  56. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  57. package/cjs/components/ScrollContainer/ScrollContainer.md +62 -13
  58. package/cjs/components/ScrollContainer/ScrollContainer.styles.d.ts +12 -3
  59. package/cjs/components/ScrollContainer/ScrollContainer.styles.js +72 -9
  60. package/cjs/components/ScrollContainer/ScrollContainer.styles.js.map +1 -1
  61. package/cjs/components/SidePage/SidePage.d.ts +1 -2
  62. package/cjs/components/SidePage/SidePage.js +1 -5
  63. package/cjs/components/SidePage/SidePage.js.map +1 -1
  64. package/cjs/components/SidePage/SidePage.styles.d.ts +2 -1
  65. package/cjs/components/SidePage/SidePage.styles.js +44 -28
  66. package/cjs/components/SidePage/SidePage.styles.js.map +1 -1
  67. package/cjs/components/SidePage/SidePageHeader.d.ts +4 -1
  68. package/cjs/components/SidePage/SidePageHeader.js +33 -23
  69. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  70. package/cjs/components/Switcher/Switcher.js +1 -1
  71. package/cjs/components/Switcher/Switcher.js.map +1 -1
  72. package/cjs/components/Switcher/Switcher.styles.d.ts +1 -1
  73. package/cjs/components/Switcher/Switcher.styles.js +3 -2
  74. package/cjs/components/Switcher/Switcher.styles.js.map +1 -1
  75. package/cjs/components/Tabs/Tab.d.ts +0 -3
  76. package/cjs/components/Tabs/Tab.js +3 -13
  77. package/cjs/components/Tabs/Tab.js.map +1 -1
  78. package/cjs/components/Tabs/Tab.styles.js +2 -2
  79. package/cjs/components/Tabs/Tab.styles.js.map +1 -1
  80. package/cjs/components/Toggle/Toggle.js +6 -5
  81. package/cjs/components/Toggle/Toggle.js.map +1 -1
  82. package/cjs/components/Toggle/Toggle.styles.d.ts +1 -0
  83. package/cjs/components/Toggle/Toggle.styles.js +26 -16
  84. package/cjs/components/Toggle/Toggle.styles.js.map +1 -1
  85. package/cjs/components/Token/Token.styles.js +8 -9
  86. package/cjs/components/Token/Token.styles.js.map +1 -1
  87. package/cjs/components/TokenInput/TokenInput.d.ts +8 -0
  88. package/cjs/components/TokenInput/TokenInput.js +24 -2
  89. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  90. package/cjs/components/Tooltip/Tooltip.styles.js +2 -1
  91. package/cjs/components/Tooltip/Tooltip.styles.js.map +1 -1
  92. package/cjs/internal/CustomComboBox/ComboBoxView.js +2 -1
  93. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  94. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js +3 -2
  95. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js.map +1 -1
  96. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js +5 -7
  97. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  98. package/cjs/internal/InputLikeText/InputLikeText.js +2 -1
  99. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  100. package/cjs/internal/PopupMenu/PopupMenu.js +1 -1
  101. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  102. package/cjs/internal/RenderContainer/RenderContainer.js +2 -1
  103. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  104. package/cjs/internal/ThemePlayground/darkTheme.js +3 -3
  105. package/cjs/internal/ThemePlayground/darkTheme.js.map +1 -1
  106. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  107. package/cjs/internal/icons/CrossIcon.js +8 -1
  108. package/cjs/internal/icons/CrossIcon.js.map +1 -1
  109. package/cjs/internal/themes/DefaultTheme.d.ts +23 -7
  110. package/cjs/internal/themes/DefaultTheme.js +77 -32
  111. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  112. package/cjs/internal/themes/FlatTheme.d.ts +4 -4
  113. package/cjs/internal/themes/FlatTheme.js +16 -8
  114. package/cjs/internal/themes/FlatTheme.js.map +1 -1
  115. package/cjs/internal/themes/Theme8px.d.ts +0 -5
  116. package/cjs/internal/themes/Theme8px.js +2 -12
  117. package/cjs/internal/themes/Theme8px.js.map +1 -1
  118. package/cjs/lib/Upgrades.d.ts +2 -0
  119. package/cjs/lib/Upgrades.js +14 -0
  120. package/cjs/lib/Upgrades.js.map +1 -1
  121. package/cjs/lib/events/keyListener.d.ts +7 -0
  122. package/cjs/lib/events/keyListener.js +22 -0
  123. package/cjs/lib/events/keyListener.js.map +1 -0
  124. package/cjs/lib/events/keyboard/identifiers.d.ts +1 -0
  125. package/cjs/lib/events/keyboard/identifiers.js +6 -1
  126. package/cjs/lib/events/keyboard/identifiers.js.map +1 -1
  127. package/cjs/lib/events/tabListener.d.ts +1 -6
  128. package/cjs/lib/events/tabListener.js +2 -15
  129. package/cjs/lib/events/tabListener.js.map +1 -1
  130. package/cjs/lib/locale/LOCALECONTEXT.md +1 -1
  131. package/cjs/lib/styles/ColorFunctions.js +1 -1
  132. package/cjs/lib/styles/ColorFunctions.js.map +1 -1
  133. package/cjs/lib/theming/Emotion.js +1 -1
  134. package/cjs/lib/theming/Emotion.js.map +1 -1
  135. package/cjs/lib/theming/ThemeContext.md +1 -1
  136. package/cjs/lib/utils.d.ts +7 -0
  137. package/cjs/lib/utils.js +12 -2
  138. package/cjs/lib/utils.js.map +1 -1
  139. package/components/Button/Button/Button.js +5 -4
  140. package/components/Button/Button/Button.js.map +1 -1
  141. package/components/Button/Button.d.ts +1 -0
  142. package/components/Button/Button.styles/Button.styles.js +1 -1
  143. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  144. package/components/Checkbox/Checkbox/Checkbox.js +5 -5
  145. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  146. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +2 -2
  147. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
  148. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +11 -5
  149. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  150. package/components/CurrencyLabel/CurrencyLabel.styles/CurrencyLabel.styles.js +10 -0
  151. package/components/CurrencyLabel/CurrencyLabel.styles/CurrencyLabel.styles.js.map +1 -0
  152. package/components/CurrencyLabel/CurrencyLabel.styles/package.json +6 -0
  153. package/components/CurrencyLabel/CurrencyLabel.styles.d.ts +4 -0
  154. package/components/FxInput/FxInput/FxInput.js +2 -1
  155. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  156. package/components/Input/Input.styles/Input.styles.js +1 -1
  157. package/components/Input/Input.styles/Input.styles.js.map +1 -1
  158. package/components/Kebab/Kebab/Kebab.js +2 -2
  159. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  160. package/components/Link/Link/Link.js +2 -2
  161. package/components/Link/Link/Link.js.map +1 -1
  162. package/components/Loader/Loader/Loader.js +34 -14
  163. package/components/Loader/Loader/Loader.js.map +1 -1
  164. package/components/Loader/Loader.d.ts +3 -1
  165. package/components/MenuItem/MenuItem.md +1 -1
  166. package/components/MenuItem/MenuItem.styles/MenuItem.styles.js +1 -1
  167. package/components/MenuItem/MenuItem.styles/MenuItem.styles.js.map +1 -1
  168. package/components/Modal/Modal.styles/Modal.styles.js +18 -15
  169. package/components/Modal/Modal.styles/Modal.styles.js.map +1 -1
  170. package/components/Modal/Modal.styles.d.ts +1 -0
  171. package/components/Modal/ModalClose/ModalClose.js +25 -2
  172. package/components/Modal/ModalClose/ModalClose.js.map +1 -1
  173. package/components/Paging/Paging/Paging.js +2 -2
  174. package/components/Paging/Paging/Paging.js.map +1 -1
  175. package/components/Paging/Paging.styles/Paging.styles.js +1 -1
  176. package/components/Paging/Paging.styles/Paging.styles.js.map +1 -1
  177. package/components/Radio/Radio/Radio.js +36 -3
  178. package/components/Radio/Radio/Radio.js.map +1 -1
  179. package/components/Radio/Radio.d.ts +9 -1
  180. package/components/Radio/Radio.styles/Radio.styles.js +3 -3
  181. package/components/Radio/Radio.styles/Radio.styles.js.map +1 -1
  182. package/components/Radio/Radio.styles.d.ts +1 -1
  183. package/components/ScrollContainer/ScrollBar/ScrollBar.js +254 -0
  184. package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -0
  185. package/components/ScrollContainer/ScrollBar/package.json +6 -0
  186. package/components/ScrollContainer/ScrollBar.d.ts +37 -0
  187. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +121 -205
  188. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  189. package/components/ScrollContainer/ScrollContainer.constants/ScrollContainer.constants.js +31 -0
  190. package/components/ScrollContainer/ScrollContainer.constants/ScrollContainer.constants.js.map +1 -0
  191. package/components/ScrollContainer/ScrollContainer.constants/package.json +6 -0
  192. package/components/ScrollContainer/ScrollContainer.constants.d.ts +23 -0
  193. package/components/ScrollContainer/ScrollContainer.d.ts +38 -23
  194. package/components/ScrollContainer/ScrollContainer.helpers/ScrollContainer.helpers.js +55 -0
  195. package/components/ScrollContainer/ScrollContainer.helpers/ScrollContainer.helpers.js.map +1 -0
  196. package/components/ScrollContainer/ScrollContainer.helpers/package.json +6 -0
  197. package/components/ScrollContainer/ScrollContainer.helpers.d.ts +10 -0
  198. package/components/ScrollContainer/ScrollContainer.md +62 -13
  199. package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js +23 -9
  200. package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js.map +1 -1
  201. package/components/ScrollContainer/ScrollContainer.styles.d.ts +12 -3
  202. package/components/SidePage/SidePage/SidePage.js +2 -4
  203. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  204. package/components/SidePage/SidePage.d.ts +1 -2
  205. package/components/SidePage/SidePage.styles/SidePage.styles.js +20 -16
  206. package/components/SidePage/SidePage.styles/SidePage.styles.js.map +1 -1
  207. package/components/SidePage/SidePage.styles.d.ts +2 -1
  208. package/components/SidePage/SidePageHeader/SidePageHeader.js +40 -22
  209. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  210. package/components/SidePage/SidePageHeader.d.ts +4 -1
  211. package/components/Switcher/Switcher/Switcher.js +1 -1
  212. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  213. package/components/Switcher/Switcher.styles/Switcher.styles.js +2 -2
  214. package/components/Switcher/Switcher.styles/Switcher.styles.js.map +1 -1
  215. package/components/Switcher/Switcher.styles.d.ts +1 -1
  216. package/components/Tabs/Tab/Tab.js +2 -16
  217. package/components/Tabs/Tab/Tab.js.map +1 -1
  218. package/components/Tabs/Tab.d.ts +0 -3
  219. package/components/Tabs/Tab.styles/Tab.styles.js +1 -1
  220. package/components/Tabs/Tab.styles/Tab.styles.js.map +1 -1
  221. package/components/Toggle/Toggle/Toggle.js +5 -5
  222. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  223. package/components/Toggle/Toggle.styles/Toggle.styles.js +15 -12
  224. package/components/Toggle/Toggle.styles/Toggle.styles.js.map +1 -1
  225. package/components/Toggle/Toggle.styles.d.ts +1 -0
  226. package/components/Token/Token.styles/Token.styles.js +2 -2
  227. package/components/Token/Token.styles/Token.styles.js.map +1 -1
  228. package/components/TokenInput/TokenInput/TokenInput.js +24 -2
  229. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  230. package/components/TokenInput/TokenInput.d.ts +8 -0
  231. package/components/Tooltip/Tooltip.styles/Tooltip.styles.js +1 -1
  232. package/components/Tooltip/Tooltip.styles/Tooltip.styles.js.map +1 -1
  233. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +2 -1
  234. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  235. package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js +3 -2
  236. package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js.map +1 -1
  237. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js +4 -4
  238. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  239. package/internal/InputLikeText/InputLikeText/InputLikeText.js +2 -1
  240. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  241. package/internal/PopupMenu/PopupMenu/PopupMenu.js +2 -2
  242. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  243. package/internal/RenderContainer/RenderContainer/RenderContainer.js +2 -1
  244. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  245. package/internal/ThemePlayground/darkTheme/darkTheme.js +3 -3
  246. package/internal/ThemePlayground/darkTheme/darkTheme.js.map +1 -1
  247. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  248. package/internal/icons/CrossIcon/CrossIcon.js +2 -1
  249. package/internal/icons/CrossIcon/CrossIcon.js.map +1 -1
  250. package/internal/themes/DefaultTheme/DefaultTheme.js +100 -19
  251. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  252. package/internal/themes/DefaultTheme.d.ts +23 -7
  253. package/internal/themes/FlatTheme/FlatTheme.js +18 -6
  254. package/internal/themes/FlatTheme/FlatTheme.js.map +1 -1
  255. package/internal/themes/FlatTheme.d.ts +4 -4
  256. package/internal/themes/Theme8px/Theme8px.js +1 -14
  257. package/internal/themes/Theme8px/Theme8px.js.map +1 -1
  258. package/internal/themes/Theme8px.d.ts +0 -5
  259. package/lib/Upgrades/Upgrades.js +13 -0
  260. package/lib/Upgrades/Upgrades.js.map +1 -1
  261. package/lib/Upgrades.d.ts +2 -0
  262. package/lib/events/keyListener/keyListener.js +22 -0
  263. package/lib/events/keyListener/keyListener.js.map +1 -0
  264. package/lib/events/keyListener/package.json +6 -0
  265. package/lib/events/keyListener.d.ts +7 -0
  266. package/lib/events/keyboard/identifiers/identifiers.js +10 -1
  267. package/lib/events/keyboard/identifiers/identifiers.js.map +1 -1
  268. package/lib/events/keyboard/identifiers.d.ts +1 -0
  269. package/lib/events/tabListener/tabListener.js +2 -19
  270. package/lib/events/tabListener/tabListener.js.map +1 -1
  271. package/lib/events/tabListener.d.ts +1 -6
  272. package/lib/locale/LOCALECONTEXT.md +1 -1
  273. package/lib/styles/ColorFunctions/ColorFunctions.js +1 -1
  274. package/lib/styles/ColorFunctions/ColorFunctions.js.map +1 -1
  275. package/lib/theming/Emotion/Emotion.js +1 -1
  276. package/lib/theming/Emotion/Emotion.js.map +1 -1
  277. package/lib/theming/ThemeContext.md +1 -1
  278. package/lib/utils/utils.js +10 -0
  279. package/lib/utils/utils.js.map +1 -1
  280. package/lib/utils.d.ts +7 -0
  281. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["Paging.styles.ts"],"names":["styles","paging","t","css","pagingFontSize","pagingLineHeight","dots","pagingDotsColor","pagingDotsPadding","forwardLink","pagingForwardLinkColor","pagingPageForwardLinkMarginTop","pagingPageForwardLinkMarginLeft","pagingPageForwardLinkPaddingRight","forwardLinkFocused","forwardIcon","pagingForwardIconMarginTop","disabled","pagingForwardLinkDisabledColor","pageLinkWrapper","pageLink","pagingPageLinkBorderRadius","pagingPageLinkMargin","pagingPageLinkMinWidth","pagingPageLinkPaddingY","pagingPageLinkPaddingX","pagingPageLinkLegacyPaddingY","pagingPageLinkHoverBg","active","pagingPageLinkActiveBg","pagingPageLinkActiveColor","pageLinkFocused","borderColorFocus","transparent","pageLinkHintPlaceHolder","pagingPageLinkHintLineHeight","pageLinkHint","pagingPageLinkHintFontSize","pagingPageLinkHintColor"],"mappings":"4QAAA;AACA,oD;;;AAGO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,MADiC,kBAC1BC,CAD0B,EAChB;AACf,eAAOC,YAAP;;;AAGeD,IAAAA,CAAC,CAACE,cAHjB;AAIiBF,IAAAA,CAAC,CAACG,gBAJnB;;AAMD,GARgC;;AAUjCC,EAAAA,IAViC,gBAU5BJ,CAV4B,EAUlB;AACb,eAAOC,YAAP;AACWD,IAAAA,CAAC,CAACK,eADb;;AAGaL,IAAAA,CAAC,CAACM,iBAHf;;AAKD,GAhBgC;;AAkBjCC,EAAAA,WAlBiC,uBAkBrBP,CAlBqB,EAkBX;AACpB,eAAOC,YAAP;AACWD,IAAAA,CAAC,CAACQ,sBADb;;;AAIgBR,IAAAA,CAAC,CAACS,8BAJlB;AAKiBT,IAAAA,CAAC,CAACU,+BALnB;;AAOmBV,IAAAA,CAAC,CAACW,iCAPrB;;;;;;AAaD,GAhCgC;;AAkCjCC,EAAAA,kBAlCiC,gCAkCZ;AACnB,eAAOX,YAAP;;;AAGD,GAtCgC;;AAwCjCY,EAAAA,WAxCiC,uBAwCrBb,CAxCqB,EAwCX;AACpB,eAAOC,YAAP;;;AAGgBD,IAAAA,CAAC,CAACc,0BAHlB;;;AAMD,GA/CgC;;AAiDjCC,EAAAA,QAjDiC,oBAiDxBf,CAjDwB,EAiDd;AACjB,eAAOC,YAAP;AACWD,IAAAA,CAAC,CAACgB,8BADb;;AAGD,GArDgC;;AAuDjCC,EAAAA,eAvDiC,6BAuDf;AAChB,eAAOhB,YAAP;;;;;;;AAOD,GA/DgC;;AAiEjCiB,EAAAA,QAjEiC,oBAiExBlB,CAjEwB,EAiEd;AACjB,eAAOC,YAAP;AACmBD,IAAAA,CAAC,CAACmB,0BADrB;AAEWnB,IAAAA,CAAC,CAACQ,sBAFb;;;AAKYR,IAAAA,CAAC,CAACoB,oBALd;;AAOepB,IAAAA,CAAC,CAACqB,sBAPjB;AAQarB,IAAAA,CAAC,CAACsB,sBARf,EAQyCtB,CAAC,CAACuB,sBAR3C;AASM,kCAAWvB,CAAX,IAAgBA,CAAC,CAACsB,sBAAlB,GAA2CtB,CAAC,CAACwB,4BATnD;;;;AAakBxB,IAAAA,CAAC,CAACyB,qBAbpB;;;AAgBD,GAlFgC;;AAoFjCC,EAAAA,MApFiC,kBAoF1B1B,CApF0B,EAoFhB;AACf,eAAOC,YAAP;;AAEgBD,IAAAA,CAAC,CAAC2B,sBAFlB;AAGW3B,IAAAA,CAAC,CAAC4B,yBAHb;;AAKD,GA1FgC;;AA4FjCC,EAAAA,eA5FiC,2BA4FjB7B,CA5FiB,EA4FP;AACxB,eAAOC,YAAP;AACI,kCAAWD,CAAX;;AAE0BA,IAAAA,CAAC,CAAC8B,gBAF5B;;;;AAMsB9B,IAAAA,CAAC,CAAC8B,gBANxB,MADJ;;AASD,GAtGgC;;AAwGjCC,EAAAA,WAxGiC,yBAwGnB;AACZ,eAAO9B,YAAP;;;AAGD,GA5GgC;;AA8GjC+B,EAAAA,uBA9GiC,mCA8GThC,CA9GS,EA8GC;AAChC,eAAOC,YAAP;AACYD,IAAAA,CAAC,CAACiC,4BADd;AAEiBjC,IAAAA,CAAC,CAACiC,4BAFnB;;AAID,GAnHgC;;AAqHjCC,EAAAA,YArHiC,wBAqHpBlC,CArHoB,EAqHV;AACrB,eAAOC,YAAP;;;AAGeD,IAAAA,CAAC,CAACmC,0BAHjB;AAIiBnC,IAAAA,CAAC,CAACiC,4BAJnB;AAKWjC,IAAAA,CAAC,CAACoC,uBALb;;AAOD,GA7HgC,EAAb,CAAf,C","sourcesContent":["import { is8pxTheme } from '../../lib/theming/ThemeHelpers';\nimport { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n paging(t: Theme) {\n return css`\n user-select: none;\n outline: 0;\n font-size: ${t.pagingFontSize};\n line-height: ${t.pagingLineHeight};\n `;\n },\n\n dots(t: Theme) {\n return css`\n color: ${t.pagingDotsColor};\n display: inline-block;\n padding: ${t.pagingDotsPadding};\n `;\n },\n\n forwardLink(t: Theme) {\n return css`\n color: ${t.pagingForwardLinkColor};\n cursor: pointer;\n display: inline-block;\n margin-top: ${t.pagingPageForwardLinkMarginTop};\n margin-left: ${t.pagingPageForwardLinkMarginLeft};\n outline: none;\n padding-right: ${t.pagingPageForwardLinkPaddingRight};\n position: relative;\n text-decoration: none;\n user-select: none;\n vertical-align: top;\n `;\n },\n\n forwardLinkFocused() {\n return css`\n text-decoration: underline;\n `;\n },\n\n forwardIcon(t: Theme) {\n return css`\n vertical-align: -2px;\n position: absolute;\n margin-top: ${t.pagingForwardIconMarginTop};\n right: 0;\n `;\n },\n\n disabled(t: Theme) {\n return css`\n color: ${t.pagingForwardLinkDisabledColor};\n `;\n },\n\n pageLinkWrapper() {\n return css`\n display: inline-flex;\n flex-flow: column nowrap;\n text-align: center;\n user-select: none;\n vertical-align: top;\n `;\n },\n\n pageLink(t: Theme) {\n return css`\n border-radius: ${t.pagingPageLinkBorderRadius};\n color: ${t.pagingForwardLinkColor};\n cursor: pointer;\n display: block;\n margin: ${t.pagingPageLinkMargin};\n outline: none;\n min-width: ${t.pagingPageLinkMinWidth};\n padding: ${t.pagingPageLinkPaddingY} ${t.pagingPageLinkPaddingX}\n ${is8pxTheme(t) ? t.pagingPageLinkPaddingY : t.pagingPageLinkLegacyPaddingY};\n text-decoration: none;\n\n &:hover {\n background: ${t.pagingPageLinkHoverBg};\n }\n `;\n },\n\n active(t: Theme) {\n return css`\n cursor: default;\n background: ${t.pagingPageLinkActiveBg} !important; // override hover styles\n color: ${t.pagingPageLinkActiveColor};\n `;\n },\n\n pageLinkFocused(t: Theme) {\n return css`\n ${is8pxTheme(t)\n ? `\n box-shadow: 0 0 0 2px ${t.borderColorFocus};\n `\n : `\n margin: 0 -1px;\n border: solid 2px ${t.borderColorFocus};`}\n `;\n },\n\n transparent() {\n return css`\n color: transparent;\n `;\n },\n\n pageLinkHintPlaceHolder(t: Theme) {\n return css`\n height: ${t.pagingPageLinkHintLineHeight};\n line-height: ${t.pagingPageLinkHintLineHeight};\n `;\n },\n\n pageLinkHint(t: Theme) {\n return css`\n display: inline-block;\n margin: 0 -20px;\n font-size: ${t.pagingPageLinkHintFontSize};\n line-height: ${t.pagingPageLinkHintLineHeight};\n color: ${t.pagingPageLinkHintColor};\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["Paging.styles.ts"],"names":["styles","paging","t","css","pagingFontSize","pagingLineHeight","dots","pagingDotsColor","pagingDotsPadding","forwardLink","pagingForwardLinkColor","pagingPageForwardLinkMarginTop","pagingPageForwardLinkMarginLeft","pagingPageForwardLinkPaddingRight","forwardLinkFocused","forwardIcon","pagingForwardIconMarginTop","disabled","pagingForwardLinkDisabledColor","pageLinkWrapper","pageLink","pagingPageLinkBorderRadius","pagingPageLinkMargin","pagingPageLinkMinWidth","pagingPageLinkPaddingY","pagingPageLinkPaddingX","pagingPageLinkLegacyPaddingY","pagingPageLinkHoverBg","active","pagingPageLinkActiveBg","pagingPageLinkActiveColor","pageLinkFocused","borderColorFocus","transparent","pageLinkHintPlaceHolder","pagingPageLinkHintLineHeight","pageLinkHint","pagingPageLinkHintFontSize","pagingPageLinkHintColor"],"mappings":"4QAAA;AACA,oD;;;AAGO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,MADiC,kBAC1BC,CAD0B,EAChB;AACf,eAAOC,YAAP;;;AAGeD,IAAAA,CAAC,CAACE,cAHjB;AAIiBF,IAAAA,CAAC,CAACG,gBAJnB;;AAMD,GARgC;;AAUjCC,EAAAA,IAViC,gBAU5BJ,CAV4B,EAUlB;AACb,eAAOC,YAAP;AACWD,IAAAA,CAAC,CAACK,eADb;;AAGaL,IAAAA,CAAC,CAACM,iBAHf;;AAKD,GAhBgC;;AAkBjCC,EAAAA,WAlBiC,uBAkBrBP,CAlBqB,EAkBX;AACpB,eAAOC,YAAP;AACWD,IAAAA,CAAC,CAACQ,sBADb;;;AAIgBR,IAAAA,CAAC,CAACS,8BAJlB;AAKiBT,IAAAA,CAAC,CAACU,+BALnB;;AAOmBV,IAAAA,CAAC,CAACW,iCAPrB;;;;;;AAaD,GAhCgC;;AAkCjCC,EAAAA,kBAlCiC,gCAkCZ;AACnB,eAAOX,YAAP;;;AAGD,GAtCgC;;AAwCjCY,EAAAA,WAxCiC,uBAwCrBb,CAxCqB,EAwCX;AACpB,eAAOC,YAAP;;;AAGgBD,IAAAA,CAAC,CAACc,0BAHlB;;;AAMD,GA/CgC;;AAiDjCC,EAAAA,QAjDiC,oBAiDxBf,CAjDwB,EAiDd;AACjB,eAAOC,YAAP;AACWD,IAAAA,CAAC,CAACgB,8BADb;;;AAID,GAtDgC;;AAwDjCC,EAAAA,eAxDiC,6BAwDf;AAChB,eAAOhB,YAAP;;;;;;;AAOD,GAhEgC;;AAkEjCiB,EAAAA,QAlEiC,oBAkExBlB,CAlEwB,EAkEd;AACjB,eAAOC,YAAP;AACmBD,IAAAA,CAAC,CAACmB,0BADrB;AAEWnB,IAAAA,CAAC,CAACQ,sBAFb;;;AAKYR,IAAAA,CAAC,CAACoB,oBALd;;AAOepB,IAAAA,CAAC,CAACqB,sBAPjB;AAQarB,IAAAA,CAAC,CAACsB,sBARf,EAQyCtB,CAAC,CAACuB,sBAR3C;AASM,kCAAWvB,CAAX,IAAgBA,CAAC,CAACsB,sBAAlB,GAA2CtB,CAAC,CAACwB,4BATnD;;;;AAakBxB,IAAAA,CAAC,CAACyB,qBAbpB;;;AAgBD,GAnFgC;;AAqFjCC,EAAAA,MArFiC,kBAqF1B1B,CArF0B,EAqFhB;AACf,eAAOC,YAAP;;AAEgBD,IAAAA,CAAC,CAAC2B,sBAFlB;AAGW3B,IAAAA,CAAC,CAAC4B,yBAHb;;AAKD,GA3FgC;;AA6FjCC,EAAAA,eA7FiC,2BA6FjB7B,CA7FiB,EA6FP;AACxB,eAAOC,YAAP;AACI,kCAAWD,CAAX;;AAE0BA,IAAAA,CAAC,CAAC8B,gBAF5B;;;;AAMsB9B,IAAAA,CAAC,CAAC8B,gBANxB,MADJ;;AASD,GAvGgC;;AAyGjCC,EAAAA,WAzGiC,yBAyGnB;AACZ,eAAO9B,YAAP;;;AAGD,GA7GgC;;AA+GjC+B,EAAAA,uBA/GiC,mCA+GThC,CA/GS,EA+GC;AAChC,eAAOC,YAAP;AACYD,IAAAA,CAAC,CAACiC,4BADd;AAEiBjC,IAAAA,CAAC,CAACiC,4BAFnB;;AAID,GApHgC;;AAsHjCC,EAAAA,YAtHiC,wBAsHpBlC,CAtHoB,EAsHV;AACrB,eAAOC,YAAP;;;AAGeD,IAAAA,CAAC,CAACmC,0BAHjB;AAIiBnC,IAAAA,CAAC,CAACiC,4BAJnB;AAKWjC,IAAAA,CAAC,CAACoC,uBALb;;AAOD,GA9HgC,EAAb,CAAf,C","sourcesContent":["import { is8pxTheme } from '../../lib/theming/ThemeHelpers';\nimport { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n paging(t: Theme) {\n return css`\n user-select: none;\n outline: 0;\n font-size: ${t.pagingFontSize};\n line-height: ${t.pagingLineHeight};\n `;\n },\n\n dots(t: Theme) {\n return css`\n color: ${t.pagingDotsColor};\n display: inline-block;\n padding: ${t.pagingDotsPadding};\n `;\n },\n\n forwardLink(t: Theme) {\n return css`\n color: ${t.pagingForwardLinkColor};\n cursor: pointer;\n display: inline-block;\n margin-top: ${t.pagingPageForwardLinkMarginTop};\n margin-left: ${t.pagingPageForwardLinkMarginLeft};\n outline: none;\n padding-right: ${t.pagingPageForwardLinkPaddingRight};\n position: relative;\n text-decoration: none;\n user-select: none;\n vertical-align: top;\n `;\n },\n\n forwardLinkFocused() {\n return css`\n text-decoration: underline;\n `;\n },\n\n forwardIcon(t: Theme) {\n return css`\n vertical-align: -2px;\n position: absolute;\n margin-top: ${t.pagingForwardIconMarginTop};\n right: 0;\n `;\n },\n\n disabled(t: Theme) {\n return css`\n color: ${t.pagingForwardLinkDisabledColor};\n cursor: default;\n `;\n },\n\n pageLinkWrapper() {\n return css`\n display: inline-flex;\n flex-flow: column nowrap;\n text-align: center;\n user-select: none;\n vertical-align: top;\n `;\n },\n\n pageLink(t: Theme) {\n return css`\n border-radius: ${t.pagingPageLinkBorderRadius};\n color: ${t.pagingForwardLinkColor};\n cursor: pointer;\n display: block;\n margin: ${t.pagingPageLinkMargin};\n outline: none;\n min-width: ${t.pagingPageLinkMinWidth};\n padding: ${t.pagingPageLinkPaddingY} ${t.pagingPageLinkPaddingX}\n ${is8pxTheme(t) ? t.pagingPageLinkPaddingY : t.pagingPageLinkLegacyPaddingY};\n text-decoration: none;\n\n &:hover {\n background: ${t.pagingPageLinkHoverBg};\n }\n `;\n },\n\n active(t: Theme) {\n return css`\n cursor: default;\n background: ${t.pagingPageLinkActiveBg} !important; // override hover styles\n color: ${t.pagingPageLinkActiveColor};\n `;\n },\n\n pageLinkFocused(t: Theme) {\n return css`\n ${is8pxTheme(t)\n ? `\n box-shadow: 0 0 0 2px ${t.borderColorFocus};\n `\n : `\n margin: 0 -1px;\n border: solid 2px ${t.borderColorFocus};`}\n `;\n },\n\n transparent() {\n return css`\n color: transparent;\n `;\n },\n\n pageLinkHintPlaceHolder(t: Theme) {\n return css`\n height: ${t.pagingPageLinkHintLineHeight};\n line-height: ${t.pagingPageLinkHintLineHeight};\n `;\n },\n\n pageLinkHint(t: Theme) {\n return css`\n display: inline-block;\n margin: 0 -20px;\n font-size: ${t.pagingPageLinkHintFontSize};\n line-height: ${t.pagingPageLinkHintLineHeight};\n color: ${t.pagingPageLinkHintColor};\n `;\n },\n});\n"]}
@@ -24,8 +24,14 @@ export interface RadioProps<T> extends CommonProps, Override<React.InputHTMLAttr
24
24
  value: T;
25
25
  }> {
26
26
  }
27
- export declare class Radio<T> extends React.Component<RadioProps<T>> {
27
+ export interface RadioState {
28
+ focusedByKeyboard: boolean;
29
+ }
30
+ export declare class Radio<T> extends React.Component<RadioProps<T>, RadioState> {
28
31
  static __KONTUR_REACT_UI__: string;
32
+ state: {
33
+ focusedByKeyboard: boolean;
34
+ };
29
35
  static contextTypes: {
30
36
  activeItem: PropTypes.Requireable<any>;
31
37
  onSelect: PropTypes.Requireable<(...args: any[]) => any>;
@@ -55,4 +61,6 @@ export declare class Radio<T> extends React.Component<RadioProps<T>> {
55
61
  private handleMouseOver;
56
62
  private handleMouseEnter;
57
63
  private handleMouseLeave;
64
+ private handleFocus;
65
+ private handleBlur;
58
66
  }
@@ -6,6 +6,7 @@ var _ThemeContext = require("../../lib/theming/ThemeContext");
6
6
 
7
7
  var _CommonWrapper = require("../../internal/CommonWrapper");
8
8
  var _Emotion = require("../../lib/theming/Emotion");
9
+ var _keyListener = require("../../lib/events/keyListener");
9
10
 
10
11
  var _Radio = require("./Radio.styles");var
11
12
 
@@ -31,6 +32,10 @@ var _Radio = require("./Radio.styles");var
31
32
 
32
33
 
33
34
 
35
+
36
+
37
+
38
+
34
39
 
35
40
 
36
41
 
@@ -39,6 +44,10 @@ var _Radio = require("./Radio.styles");var
39
44
  Radio = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(Radio, _React$Component);function Radio() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
40
45
 
41
46
 
47
+ state = {
48
+ focusedByKeyboard: false };_this.
49
+
50
+
42
51
 
43
52
 
44
53
 
@@ -78,6 +87,7 @@ Radio = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(R
78
87
 
79
88
 
80
89
 
90
+
81
91
 
82
92
 
83
93
  renderMain = function (props) {var _cx;var
@@ -100,7 +110,7 @@ Radio = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(R
100
110
  className: (0, _Emotion.cx)((_cx = {}, _cx[
101
111
  _Radio.styles.radio(_this.theme)] = true, _cx[
102
112
  _Radio.styles.checked(_this.theme)] = _this.props.checked, _cx[
103
- _Radio.styles.focus(_this.theme)] = _this.props.focused, _cx[
113
+ _Radio.styles.focus(_this.theme)] = _this.props.focused || _this.state.focusedByKeyboard, _cx[
104
114
  _Radio.styles.error(_this.theme)] = error, _cx[
105
115
  _Radio.styles.warning(_this.theme)] = warning, _cx[
106
116
  _Radio.styles.disabled(_this.theme)] = disabled, _cx[
@@ -117,12 +127,14 @@ Radio = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(R
117
127
  var inputProps = (0, _extends2.default)({},
118
128
  rest, {
119
129
  type: 'radio',
120
- className: _Radio.styles.input(_this.theme),
130
+ className: _Radio.styles.input(),
121
131
  disabled: disabled,
122
132
  tabIndex: _this.props.tabIndex,
123
133
  value: value,
124
134
  ref: _this.inputEl,
125
- onChange: _this.handleChange });
135
+ onChange: _this.handleChange,
136
+ onFocus: _this.handleFocus,
137
+ onBlur: _this.handleBlur });
126
138
 
127
139
 
128
140
  var labelProps = {
@@ -185,8 +197,29 @@ Radio = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(R
185
197
 
186
198
  handleMouseLeave = function (e) {
187
199
  _this.props.onMouseLeave == null ? void 0 : _this.props.onMouseLeave(e);
200
+ };_this.
201
+
202
+ handleFocus = function (e) {
203
+ if (!_this.context.disabled) {
204
+ // focus event fires before keyDown eventlistener
205
+ // so we should check tabPressed in async way
206
+ requestAnimationFrame(function () {
207
+ if (_keyListener.keyListener.isArrowPressed || _keyListener.keyListener.isTabPressed) {
208
+ _this.setState({ focusedByKeyboard: true });
209
+ }
210
+ });
211
+
212
+ if (_this.props.onFocus) {
213
+ _this.props.onFocus(e);
214
+ }
215
+ }
216
+ };_this.
217
+
218
+ handleBlur = function (e) {
219
+ _this.props.onBlur == null ? void 0 : _this.props.onBlur(e);
220
+ _this.setState({ focusedByKeyboard: false });
188
221
  };return _this;}var _proto = Radio.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, _this2.props, _this2.renderMain);});} /**
189
222
  * @public
190
- */;_proto.focus = function focus() {var _this$inputEl$current;(_this$inputEl$current = this.inputEl.current) == null ? void 0 : _this$inputEl$current.focus();} /**
223
+ */;_proto.focus = function focus() {var _this$inputEl$current;_keyListener.keyListener.isTabPressed = true;(_this$inputEl$current = this.inputEl.current) == null ? void 0 : _this$inputEl$current.focus();} /**
191
224
  * @public
192
225
  */;_proto.blur = function blur() {var _this$inputEl$current2;(_this$inputEl$current2 = this.inputEl.current) == null ? void 0 : _this$inputEl$current2.blur();};_proto.renderLabel = function renderLabel() {var _cx3;var labelClassNames = (0, _Emotion.cx)((_cx3 = {}, _cx3[_Radio.styles.label(this.theme)] = true, _cx3[_Radio.styles.labelDisabled()] = !!(this.props.disabled || this.context.disabled), _cx3));return /*#__PURE__*/_react.default.createElement("div", { className: labelClassNames }, this.props.children);};return Radio;}(_react.default.Component);exports.Radio = Radio;Radio.__KONTUR_REACT_UI__ = 'Radio';Radio.contextTypes = { activeItem: _propTypes.default.any, onSelect: _propTypes.default.func, name: _propTypes.default.string, disabled: _propTypes.default.bool, error: _propTypes.default.bool, warning: _propTypes.default.bool };Radio.defaultProps = { focused: false };
@@ -1 +1 @@
1
- {"version":3,"sources":["Radio.tsx"],"names":["Radio","theme","inputEl","React","createRef","renderMain","props","active","disabled","context","warning","error","focused","pressed","hovered","onMouseOver","onMouseEnter","onMouseLeave","onValueChange","rest","radioProps","className","styles","radio","checked","focus","checkedDisabled","globalClasses","value","inputProps","type","input","tabIndex","ref","onChange","handleChange","labelProps","root","rootChecked","handleMouseOver","handleMouseEnter","handleMouseLeave","_isInRadioGroup","activeItem","name","suppressHydrationWarning","placeholder","children","renderLabel","Boolean","e","onSelect","render","current","blur","labelClassNames","label","labelDisabled","Component","__KONTUR_REACT_UI__","contextTypes","PropTypes","any","func","string","bool","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Override } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles, globalClasses } from './Radio.styles';\n\nexport interface RadioProps<T>\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /** Состояние ошибки */\n error?: boolean;\n /** Состояние Предупреждения */\n warning?: boolean;\n /** Состояние фокуса */\n focused?: boolean;\n /** Состояние нажатия */\n pressed?: boolean;\n /** Состояние hover */\n hovered?: boolean;\n /** Состояние active */\n active?: boolean;\n /** Вызывается при изменении `value` */\n onValueChange?: (value: T) => void;\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /** Значение */\n value: T;\n }\n > {}\n\nexport class Radio<T> extends React.Component<RadioProps<T>> {\n public static __KONTUR_REACT_UI__ = 'Radio';\n\n public static contextTypes = {\n activeItem: PropTypes.any,\n onSelect: PropTypes.func,\n name: PropTypes.string,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n warning: PropTypes.bool,\n };\n\n public static defaultProps = {\n focused: false,\n };\n\n private theme!: Theme;\n private inputEl = React.createRef<HTMLInputElement>();\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n this.inputEl.current?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.inputEl.current?.blur();\n }\n\n public renderMain = (props: CommonWrapperRestProps<RadioProps<T>>) => {\n const {\n active,\n disabled = this.context.disabled,\n warning = this.context.warning,\n error = this.context.error,\n focused,\n pressed,\n hovered,\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n onValueChange,\n ...rest\n } = props;\n\n const radioProps = {\n className: cx({\n [styles.radio(this.theme)]: true,\n [styles.checked(this.theme)]: this.props.checked,\n [styles.focus(this.theme)]: this.props.focused,\n [styles.error(this.theme)]: error,\n [styles.warning(this.theme)]: warning,\n [styles.disabled(this.theme)]: disabled,\n [styles.checkedDisabled(this.theme)]: this.props.checked && disabled,\n [globalClasses.radio]: true,\n }),\n };\n\n let value: string | number | undefined;\n if (typeof this.props.value === 'string' || typeof this.props.value === 'number') {\n value = this.props.value;\n }\n\n const inputProps = {\n ...rest,\n type: 'radio',\n className: styles.input(this.theme),\n disabled,\n tabIndex: this.props.tabIndex,\n value,\n ref: this.inputEl,\n onChange: this.handleChange,\n };\n\n const labelProps = {\n className: cx(styles.root(this.theme), this.props.checked && styles.rootChecked(this.theme)),\n onMouseOver: this.handleMouseOver,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n };\n\n if (this._isInRadioGroup()) {\n const checked = this.props.value === this.context.activeItem;\n inputProps.checked = checked;\n inputProps.name = this.context.name;\n inputProps.suppressHydrationWarning = true;\n radioProps.className = cx(radioProps.className, {\n [styles.checked(this.theme)]: checked,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n });\n }\n\n return (\n <label {...labelProps}>\n <input {...inputProps} />\n <span {...radioProps}>\n <span className={styles.placeholder()} />\n </span>\n {this.props.children && this.renderLabel()}\n </label>\n );\n };\n\n private _isInRadioGroup = () => Boolean(this.context.name);\n\n private renderLabel() {\n const labelClassNames = cx({\n [styles.label(this.theme)]: true,\n [styles.labelDisabled()]: !!(this.props.disabled || this.context.disabled),\n });\n\n return <div className={labelClassNames}>{this.props.children}</div>;\n }\n\n private handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n this.props.onValueChange?.(this.props.value);\n\n if (this._isInRadioGroup()) {\n this.context.onSelect(this.props.value);\n }\n\n this.props.onChange?.(e);\n };\n\n private handleMouseOver: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseOver?.(e);\n };\n\n private handleMouseEnter: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseEnter?.(e);\n };\n\n private handleMouseLeave: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseLeave?.(e);\n };\n}\n"]}
1
+ {"version":3,"sources":["Radio.tsx"],"names":["Radio","state","focusedByKeyboard","theme","inputEl","React","createRef","renderMain","props","active","disabled","context","warning","error","focused","pressed","hovered","onMouseOver","onMouseEnter","onMouseLeave","onValueChange","rest","radioProps","className","styles","radio","checked","focus","checkedDisabled","globalClasses","value","inputProps","type","input","tabIndex","ref","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","labelProps","root","rootChecked","handleMouseOver","handleMouseEnter","handleMouseLeave","_isInRadioGroup","activeItem","name","suppressHydrationWarning","placeholder","children","renderLabel","Boolean","e","onSelect","requestAnimationFrame","keyListener","isArrowPressed","isTabPressed","setState","render","current","blur","labelClassNames","label","labelDisabled","Component","__KONTUR_REACT_UI__","contextTypes","PropTypes","any","func","string","bool","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Override } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { keyListener } from '../../lib/events/keyListener';\n\nimport { styles, globalClasses } from './Radio.styles';\n\nexport interface RadioProps<T>\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /** Состояние ошибки */\n error?: boolean;\n /** Состояние Предупреждения */\n warning?: boolean;\n /** Состояние фокуса */\n focused?: boolean;\n /** Состояние нажатия */\n pressed?: boolean;\n /** Состояние hover */\n hovered?: boolean;\n /** Состояние active */\n active?: boolean;\n /** Вызывается при изменении `value` */\n onValueChange?: (value: T) => void;\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /** Значение */\n value: T;\n }\n > {}\n\nexport interface RadioState {\n focusedByKeyboard: boolean;\n}\n\nexport class Radio<T> extends React.Component<RadioProps<T>, RadioState> {\n public static __KONTUR_REACT_UI__ = 'Radio';\n\n public state = {\n focusedByKeyboard: false,\n };\n\n public static contextTypes = {\n activeItem: PropTypes.any,\n onSelect: PropTypes.func,\n name: PropTypes.string,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n warning: PropTypes.bool,\n };\n\n public static defaultProps = {\n focused: false,\n };\n\n private theme!: Theme;\n private inputEl = React.createRef<HTMLInputElement>();\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.inputEl.current?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.inputEl.current?.blur();\n }\n\n public renderMain = (props: CommonWrapperRestProps<RadioProps<T>>) => {\n const {\n active,\n disabled = this.context.disabled,\n warning = this.context.warning,\n error = this.context.error,\n focused,\n pressed,\n hovered,\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n onValueChange,\n ...rest\n } = props;\n\n const radioProps = {\n className: cx({\n [styles.radio(this.theme)]: true,\n [styles.checked(this.theme)]: this.props.checked,\n [styles.focus(this.theme)]: this.props.focused || this.state.focusedByKeyboard,\n [styles.error(this.theme)]: error,\n [styles.warning(this.theme)]: warning,\n [styles.disabled(this.theme)]: disabled,\n [styles.checkedDisabled(this.theme)]: this.props.checked && disabled,\n [globalClasses.radio]: true,\n }),\n };\n\n let value: string | number | undefined;\n if (typeof this.props.value === 'string' || typeof this.props.value === 'number') {\n value = this.props.value;\n }\n\n const inputProps = {\n ...rest,\n type: 'radio',\n className: styles.input(),\n disabled,\n tabIndex: this.props.tabIndex,\n value,\n ref: this.inputEl,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n };\n\n const labelProps = {\n className: cx(styles.root(this.theme), this.props.checked && styles.rootChecked(this.theme)),\n onMouseOver: this.handleMouseOver,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n };\n\n if (this._isInRadioGroup()) {\n const checked = this.props.value === this.context.activeItem;\n inputProps.checked = checked;\n inputProps.name = this.context.name;\n inputProps.suppressHydrationWarning = true;\n radioProps.className = cx(radioProps.className, {\n [styles.checked(this.theme)]: checked,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n });\n }\n\n return (\n <label {...labelProps}>\n <input {...inputProps} />\n <span {...radioProps}>\n <span className={styles.placeholder()} />\n </span>\n {this.props.children && this.renderLabel()}\n </label>\n );\n };\n\n private _isInRadioGroup = () => Boolean(this.context.name);\n\n private renderLabel() {\n const labelClassNames = cx({\n [styles.label(this.theme)]: true,\n [styles.labelDisabled()]: !!(this.props.disabled || this.context.disabled),\n });\n\n return <div className={labelClassNames}>{this.props.children}</div>;\n }\n\n private handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n this.props.onValueChange?.(this.props.value);\n\n if (this._isInRadioGroup()) {\n this.context.onSelect(this.props.value);\n }\n\n this.props.onChange?.(e);\n };\n\n private handleMouseOver: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseOver?.(e);\n };\n\n private handleMouseEnter: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseEnter?.(e);\n };\n\n private handleMouseLeave: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseLeave?.(e);\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.context.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isArrowPressed || keyListener.isTabPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.props.onBlur?.(e);\n this.setState({ focusedByKeyboard: false });\n };\n}\n"]}
@@ -11,7 +11,7 @@ export declare const styles: {
11
11
  error(t: Theme): string;
12
12
  checked(t: Theme): string;
13
13
  checkedDisabled(t: Theme): string;
14
- input(t: Theme): string;
14
+ input(): string;
15
15
  disabled(t: Theme): string;
16
16
  label(t: Theme): string;
17
17
  labelDisabled(): string;
@@ -136,8 +136,8 @@ var styles = (0, _Emotion.memoizeStyle)({
136
136
 
137
137
  },
138
138
 
139
- input: function input(t) {
140
- return (0, _Emotion.css)(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteralLoose2.default)(["\n display: inline-block;\n height: 0;\n opacity: 0;\n position: absolute;\n width: 0;\n z-index: -1;\n\n &:focus + .", "::after {\n ", ";\n box-shadow: ", ";\n border-color: ", ";\n }\n "])),
139
+ input: function input() {
140
+ return (0, _Emotion.css)(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteralLoose2.default)(["\n display: inline-block;\n height: 0;\n opacity: 0;\n position: absolute;\n width: 0;\n z-index: -1;\n "])));
141
141
 
142
142
 
143
143
 
@@ -145,12 +145,6 @@ var styles = (0, _Emotion.memoizeStyle)({
145
145
 
146
146
 
147
147
 
148
- globalClasses.radio,
149
- mixins.afterOutline(t),
150
- t.radioFocusShadow,
151
- t.radioBorderColorFocus);
152
-
153
-
154
148
  },
155
149
 
156
150
  disabled: function disabled(t) {
@@ -162,12 +156,13 @@ var styles = (0, _Emotion.memoizeStyle)({
162
156
  },
163
157
 
164
158
  label: function label(t) {
165
- return (0, _Emotion.css)(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteralLoose2.default)(["\n display: ", ";\n line-height: ", ";\n margin-left: ", ";\n white-space: normal;\n font-size: ", ";\n "])),
159
+ return (0, _Emotion.css)(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteralLoose2.default)(["\n display: ", ";\n line-height: ", ";\n margin-left: ", ";\n white-space: normal;\n font-size: ", ";\n color: ", ";\n "])),
166
160
  t.radioLabelDisplay,
167
161
  t.radioLineHeight,
168
162
  t.radioLabelGap,
169
163
 
170
- t.radioFontSize);
164
+ t.radioFontSize,
165
+ t.radioTextColor);
171
166
 
172
167
  },
173
168
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Radio.styles.ts"],"names":["globalClasses","radio","mixins","afterOutline","t","css","radioOutlineWidth","radioSizeAfter","styles","root","radioPaddingY","radioHoverBg","radioHoverShadow","radioActiveBg","radioActiveShadow","rootChecked","radioCheckedHoverBgColor","radioSize","radioBorderWidthCompensation","radioMarginY","radioMarginX","radioBgImage","radioBorder","radioBoxShadow","radioVerticalAlign","radioBgColor","focus","radioFocusShadow","radioBorderColorFocus","warning","radioBorderColorWarning","error","radioBorderColorError","checked","radioCheckedBgColor","radioCheckedBorderColor","radioBulletSize","radioCheckedBulletColor","checkedDisabled","gray","input","disabled","radioDisabledBg","radioDisabledShadow","label","radioLabelDisplay","radioLineHeight","radioLabelGap","radioFontSize","labelDisabled","placeholder"],"mappings":"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","sourcesContent":["import { css, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const globalClasses = prefix('radio')({\n radio: 'radio',\n});\n\nconst mixins = {\n afterOutline(t: Theme) {\n return css`\n content: ' ';\n position: absolute;\n left: -${t.radioOutlineWidth};\n top: -${t.radioOutlineWidth};\n width: ${t.radioSizeAfter};\n height: ${t.radioSizeAfter};\n border-width: ${t.radioOutlineWidth};\n border-style: solid;\n border-radius: 50%;\n box-sizing: border-box;\n `;\n },\n};\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n cursor: pointer;\n position: relative;\n white-space: nowrap;\n padding-top: ${t.radioPaddingY};\n padding-bottom: ${t.radioPaddingY};\n display: inline-block;\n\n &:hover .${globalClasses.radio} {\n background: ${t.radioHoverBg};\n box-shadow: ${t.radioHoverShadow};\n }\n &:active .${globalClasses.radio} {\n background: ${t.radioActiveBg};\n box-shadow: ${t.radioActiveShadow};\n }\n `;\n },\n\n rootChecked(t: Theme) {\n return css`\n &:hover .${globalClasses.radio} {\n background: ${t.radioCheckedHoverBgColor};\n }\n `;\n },\n\n radio(t: Theme) {\n const radioSize = `calc(${t.radioSize} - 2 * ${t.radioBorderWidthCompensation})`;\n const radioMarginY = `calc(${t.radioMarginY} + ${t.radioBorderWidthCompensation})`;\n const radioMarginX = t.radioBorderWidthCompensation;\n return css`\n background-image: ${t.radioBgImage};\n border-radius: 50%;\n border: ${t.radioBorder};\n box-shadow: ${t.radioBoxShadow};\n box-sizing: border-box;\n display: inline-block;\n height: ${radioSize};\n width: ${radioSize};\n position: relative;\n vertical-align: ${t.radioVerticalAlign};\n margin: ${radioMarginY} ${radioMarginX};\n background-color: ${t.radioBgColor};\n\n &::after {\n content: ' ';\n display: inline-block;\n }\n `;\n },\n\n focus(t: Theme) {\n return css`\n &::after {\n ${mixins.afterOutline(t)};\n box-shadow: ${t.radioFocusShadow};\n border-color: ${t.radioBorderColorFocus};\n }\n `;\n },\n\n warning(t: Theme) {\n return css`\n &::after {\n ${mixins.afterOutline(t)};\n box-shadow: ${t.radioFocusShadow};\n border-color: ${t.radioBorderColorWarning};\n }\n `;\n },\n\n error(t: Theme) {\n return css`\n &::after {\n ${mixins.afterOutline(t)};\n box-shadow: ${t.radioFocusShadow};\n border-color: ${t.radioBorderColorError};\n }\n `;\n },\n\n checked(t: Theme) {\n return css`\n position: relative;\n background-color: ${t.radioCheckedBgColor};\n border-color: ${t.radioCheckedBorderColor};\n\n &::before {\n content: ' ';\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n margin: auto;\n height: ${t.radioBulletSize};\n width: ${t.radioBulletSize};\n border-radius: 50%;\n background: ${t.radioCheckedBulletColor};\n }\n `;\n },\n\n checkedDisabled(t: Theme) {\n return css`\n &::before {\n background: ${t.gray};\n }\n `;\n },\n\n input(t: Theme) {\n return css`\n display: inline-block;\n height: 0;\n opacity: 0;\n position: absolute;\n width: 0;\n z-index: -1;\n\n &:focus + .${globalClasses.radio}::after {\n ${mixins.afterOutline(t)};\n box-shadow: ${t.radioFocusShadow};\n border-color: ${t.radioBorderColorFocus};\n }\n `;\n },\n\n disabled(t: Theme) {\n return css`\n background: ${t.radioDisabledBg} !important; // override root hover/active styles\n border-color: transparent !important; // override root hover/active styles\n box-shadow: ${t.radioDisabledShadow} !important; // override root hover/active styles\n `;\n },\n\n label(t: Theme) {\n return css`\n display: ${t.radioLabelDisplay};\n line-height: ${t.radioLineHeight};\n margin-left: ${t.radioLabelGap};\n white-space: normal;\n font-size: ${t.radioFontSize};\n `;\n },\n\n labelDisabled() {\n return css`\n color: #a0a0a0;\n `;\n },\n\n placeholder() {\n return css`\n display: inline-block;\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["Radio.styles.ts"],"names":["globalClasses","radio","mixins","afterOutline","t","css","radioOutlineWidth","radioSizeAfter","styles","root","radioPaddingY","radioHoverBg","radioHoverShadow","radioActiveBg","radioActiveShadow","rootChecked","radioCheckedHoverBgColor","radioSize","radioBorderWidthCompensation","radioMarginY","radioMarginX","radioBgImage","radioBorder","radioBoxShadow","radioVerticalAlign","radioBgColor","focus","radioFocusShadow","radioBorderColorFocus","warning","radioBorderColorWarning","error","radioBorderColorError","checked","radioCheckedBgColor","radioCheckedBorderColor","radioBulletSize","radioCheckedBulletColor","checkedDisabled","gray","input","disabled","radioDisabledBg","radioDisabledShadow","label","radioLabelDisplay","radioLineHeight","radioLabelGap","radioFontSize","radioTextColor","labelDisabled","placeholder"],"mappings":"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","sourcesContent":["import { css, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const globalClasses = prefix('radio')({\n radio: 'radio',\n});\n\nconst mixins = {\n afterOutline(t: Theme) {\n return css`\n content: ' ';\n position: absolute;\n left: -${t.radioOutlineWidth};\n top: -${t.radioOutlineWidth};\n width: ${t.radioSizeAfter};\n height: ${t.radioSizeAfter};\n border-width: ${t.radioOutlineWidth};\n border-style: solid;\n border-radius: 50%;\n box-sizing: border-box;\n `;\n },\n};\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n cursor: pointer;\n position: relative;\n white-space: nowrap;\n padding-top: ${t.radioPaddingY};\n padding-bottom: ${t.radioPaddingY};\n display: inline-block;\n\n &:hover .${globalClasses.radio} {\n background: ${t.radioHoverBg};\n box-shadow: ${t.radioHoverShadow};\n }\n &:active .${globalClasses.radio} {\n background: ${t.radioActiveBg};\n box-shadow: ${t.radioActiveShadow};\n }\n `;\n },\n\n rootChecked(t: Theme) {\n return css`\n &:hover .${globalClasses.radio} {\n background: ${t.radioCheckedHoverBgColor};\n }\n `;\n },\n\n radio(t: Theme) {\n const radioSize = `calc(${t.radioSize} - 2 * ${t.radioBorderWidthCompensation})`;\n const radioMarginY = `calc(${t.radioMarginY} + ${t.radioBorderWidthCompensation})`;\n const radioMarginX = t.radioBorderWidthCompensation;\n return css`\n background-image: ${t.radioBgImage};\n border-radius: 50%;\n border: ${t.radioBorder};\n box-shadow: ${t.radioBoxShadow};\n box-sizing: border-box;\n display: inline-block;\n height: ${radioSize};\n width: ${radioSize};\n position: relative;\n vertical-align: ${t.radioVerticalAlign};\n margin: ${radioMarginY} ${radioMarginX};\n background-color: ${t.radioBgColor};\n\n &::after {\n content: ' ';\n display: inline-block;\n }\n `;\n },\n\n focus(t: Theme) {\n return css`\n &::after {\n ${mixins.afterOutline(t)};\n box-shadow: ${t.radioFocusShadow};\n border-color: ${t.radioBorderColorFocus};\n }\n `;\n },\n\n warning(t: Theme) {\n return css`\n &::after {\n ${mixins.afterOutline(t)};\n box-shadow: ${t.radioFocusShadow};\n border-color: ${t.radioBorderColorWarning};\n }\n `;\n },\n\n error(t: Theme) {\n return css`\n &::after {\n ${mixins.afterOutline(t)};\n box-shadow: ${t.radioFocusShadow};\n border-color: ${t.radioBorderColorError};\n }\n `;\n },\n\n checked(t: Theme) {\n return css`\n position: relative;\n background-color: ${t.radioCheckedBgColor};\n border-color: ${t.radioCheckedBorderColor};\n\n &::before {\n content: ' ';\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n margin: auto;\n height: ${t.radioBulletSize};\n width: ${t.radioBulletSize};\n border-radius: 50%;\n background: ${t.radioCheckedBulletColor};\n }\n `;\n },\n\n checkedDisabled(t: Theme) {\n return css`\n &::before {\n background: ${t.gray};\n }\n `;\n },\n\n input() {\n return css`\n display: inline-block;\n height: 0;\n opacity: 0;\n position: absolute;\n width: 0;\n z-index: -1;\n `;\n },\n\n disabled(t: Theme) {\n return css`\n background: ${t.radioDisabledBg} !important; // override root hover/active styles\n border-color: transparent !important; // override root hover/active styles\n box-shadow: ${t.radioDisabledShadow} !important; // override root hover/active styles\n `;\n },\n\n label(t: Theme) {\n return css`\n display: ${t.radioLabelDisplay};\n line-height: ${t.radioLineHeight};\n margin-left: ${t.radioLabelGap};\n white-space: normal;\n font-size: ${t.radioFontSize};\n color: ${t.radioTextColor};\n `;\n },\n\n labelDisabled() {\n return css`\n color: #a0a0a0;\n `;\n },\n\n placeholder() {\n return css`\n display: inline-block;\n `;\n },\n});\n"]}
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ import { Nullable } from '../../typings/utility-types';
3
+ export declare type ScrollAxis = 'x' | 'y';
4
+ export declare type ScrollBarScrollState = 'begin' | 'middle' | 'end';
5
+ export interface ScrollBarState {
6
+ active: boolean;
7
+ hover: boolean;
8
+ scrolling: boolean;
9
+ size: number;
10
+ pos: number;
11
+ scrollState: ScrollBarScrollState;
12
+ }
13
+ export interface ScrollBarProps {
14
+ invert: boolean;
15
+ axis: ScrollAxis;
16
+ className?: string;
17
+ onScrollStateChange?: (state: ScrollBarScrollState, axis: ScrollAxis) => void;
18
+ }
19
+ export declare class ScrollBar extends React.Component<ScrollBarProps, ScrollBarState> {
20
+ private inner;
21
+ private theme;
22
+ node: Nullable<HTMLElement>;
23
+ state: ScrollBarState;
24
+ componentDidMount(): void;
25
+ componentDidUpdate(): void;
26
+ render(): JSX.Element;
27
+ private renderMain;
28
+ reflow: () => void;
29
+ setInnerElement: (inner: Nullable<HTMLElement>) => void;
30
+ setHover(hover: boolean): void;
31
+ get scrollBarState(): ScrollBarScrollState;
32
+ private get scrollBarStyles();
33
+ private refScroll;
34
+ private handleScrollMouseDown;
35
+ private handleScrollWheel;
36
+ private getImmediateScrollState;
37
+ }
@@ -0,0 +1,244 @@
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.ScrollBar = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
2
+
3
+
4
+
5
+ var _ThemeContext = require("../../lib/theming/ThemeContext");
6
+ var _Emotion = require("../../lib/theming/Emotion");
7
+
8
+ var _ScrollContainer = require("./ScrollContainer.constants");
9
+ var _ScrollContainer2 = require("./ScrollContainer.styles");
10
+ var _ScrollContainer3 = require("./ScrollContainer.helpers");var
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+ ScrollBar = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(ScrollBar, _React$Component);function ScrollBar() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
32
+ inner = void 0;_this.
33
+ theme = void 0;_this.
34
+
35
+ node = void 0;_this.
36
+ state = (0, _extends2.default)({},
37
+ _ScrollContainer.defaultScrollbarState);_this.
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+ renderMain = function () {var _cx, _inlineStyles;
60
+ var state = _this.state;
61
+ var props = _this.props;
62
+
63
+ if (!state.active) {
64
+ return null;
65
+ }var _scrollSizeParameters =
66
+
67
+ _ScrollContainer.scrollSizeParametersNames[_this.props.axis],customScrollPos = _scrollSizeParameters.customScrollPos,customScrollSize = _scrollSizeParameters.customScrollSize;
68
+
69
+ var classNames = (0, _Emotion.cx)(props.className, _ScrollContainer2.styles.scrollBar(_this.theme), _this.scrollBarStyles, (_cx = {}, _cx[
70
+ _ScrollContainer2.styles.scrollBarInvert(_this.theme)] = props.invert, _cx));
71
+
72
+
73
+ var inlineStyles = (_inlineStyles = {}, _inlineStyles[
74
+ customScrollPos] = state.pos, _inlineStyles[
75
+ customScrollSize] = state.size, _inlineStyles);
76
+
77
+
78
+ return /*#__PURE__*/(
79
+ _react.default.createElement("div", {
80
+ ref: _this.refScroll,
81
+ style: inlineStyles,
82
+ className: classNames,
83
+ onMouseDown: _this.handleScrollMouseDown,
84
+ "data-tid": "ScrollContainer__ScrollBar-" + props.axis }));
85
+
86
+
87
+ };_this.
88
+
89
+ reflow = function () {
90
+ if (!_this.inner) {
91
+ return;
92
+ }
93
+
94
+ var props = _this.props;
95
+ var state = _this.state;var _getScrollSizeParams =
96
+
97
+ (0, _ScrollContainer3.getScrollSizeParams)(_this.inner, props.axis),scrollSize = _getScrollSizeParams.scrollSize,scrollPos = _getScrollSizeParams.scrollPos,scrollActive = _getScrollSizeParams.scrollActive;
98
+
99
+ if (!scrollActive && !state.active) {
100
+ return;
101
+ }
102
+
103
+ if (state.active !== scrollActive || state.size !== scrollSize || state.pos !== scrollPos) {
104
+ var scrollState = _this.getImmediateScrollState();
105
+
106
+ if (scrollState !== state.scrollState) {
107
+ _this.props.onScrollStateChange == null ? void 0 : _this.props.onScrollStateChange(scrollState, props.axis);
108
+ }
109
+
110
+ _this.setState((0, _extends2.default)({},
111
+ _this.state, {
112
+ active: scrollActive,
113
+ size: scrollSize,
114
+ pos: scrollPos,
115
+ scrollState: scrollState }));
116
+
117
+ }
118
+ };_this.
119
+
120
+ setInnerElement = function (inner) {
121
+ _this.inner = inner;
122
+ _this.reflow();
123
+ };_this.
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+
146
+
147
+
148
+
149
+ refScroll = function (element) {
150
+ var handleScrollWheel = function handleScrollWheel(event) {return _this.handleScrollWheel(event, _this.props.axis);};
151
+
152
+ if (!_this.node && element) {
153
+ element.addEventListener('wheel', handleScrollWheel, { passive: false });
154
+ }
155
+ if (_this.node && !element) {
156
+ _this.node.removeEventListener('wheel', handleScrollWheel);
157
+ }
158
+ _this.node = element;
159
+ };_this.
160
+
161
+ handleScrollMouseDown = function (event) {
162
+ if (!_this.inner) {
163
+ return;
164
+ }var _scrollSizeParameters2 =
165
+
166
+ _ScrollContainer.scrollSizeParametersNames[_this.props.axis],offset = _scrollSizeParameters2.offset,size = _scrollSizeParameters2.size,pos = _scrollSizeParameters2.pos,coord = _scrollSizeParameters2.coord;
167
+
168
+ var initialCoord = event[coord];
169
+ var target = window.document;
170
+ var initialScrollPos = _this.inner[pos];
171
+ var state = _this.state;
172
+
173
+ var mouseMove = function mouseMove(mouseMoveEvent) {
174
+ if (!_this.inner) {
175
+ return;
176
+ }
177
+
178
+ var ratio = (_this.inner[size] - _this.inner[offset]) / (_this.inner[offset] - state.size);
179
+ var delta = (mouseMoveEvent[coord] - initialCoord) * ratio;
180
+
181
+ _this.inner[pos] = initialScrollPos + delta;
182
+
183
+ if (mouseMoveEvent.preventDefault) {
184
+ mouseMoveEvent.preventDefault();
185
+ }
186
+
187
+ if (Object.prototype.hasOwnProperty.call(mouseMoveEvent, 'returnValue')) {
188
+
189
+ mouseMoveEvent.
190
+
191
+
192
+ returnValue = false;
193
+ }
194
+ };
195
+
196
+ var mouseUp = function mouseUp() {
197
+ target.removeEventListener('mousemove', mouseMove);
198
+ target.removeEventListener('mouseup', mouseUp);
199
+ _this.setState((0, _extends2.default)({}, _this.state, { scrolling: false }));
200
+ };
201
+
202
+ target.addEventListener('mousemove', mouseMove);
203
+ target.addEventListener('mouseup', mouseUp);
204
+ _this.setState((0, _extends2.default)({}, _this.state, { scrolling: true }));
205
+
206
+ event.preventDefault();
207
+ };_this.
208
+
209
+ handleScrollWheel = function (event, axis) {
210
+ if (!_this.inner || !(event instanceof WheelEvent) || axis === 'x' && !event.shiftKey) {
211
+ return;
212
+ }var _scrollSizeParameters3 =
213
+
214
+ _ScrollContainer.scrollSizeParametersNames[axis],offset = _scrollSizeParameters3.offset,size = _scrollSizeParameters3.size,pos = _scrollSizeParameters3.pos;
215
+
216
+ var scrollSize = _this.inner[size];
217
+ var scrollPos = _this.inner[pos];
218
+ var offsetHeight = _this.inner[offset];
219
+
220
+ if (event.deltaY > 0 && scrollSize <= scrollPos + offsetHeight) {
221
+ return;
222
+ }
223
+ if (event.deltaY < 0 && scrollPos <= 0) {
224
+ return;
225
+ }
226
+
227
+ _this.inner[pos] += event.deltaY;
228
+
229
+ event.preventDefault();
230
+ };_this.
231
+
232
+ getImmediateScrollState = function () {var _scrollSizeParameters4 =
233
+ _ScrollContainer.scrollSizeParametersNames[_this.props.axis],pos = _scrollSizeParameters4.pos,size = _scrollSizeParameters4.size,clientSize = _scrollSizeParameters4.clientSize;
234
+
235
+ if (!_this.inner || _this.inner[pos] === 0) {
236
+ return 'begin';
237
+ }
238
+
239
+ if (_this.inner[pos] === _this.inner[size] - _this.inner[clientSize]) {
240
+ return 'end';
241
+ }
242
+
243
+ return 'middle';
244
+ };return _this;}var _proto = ScrollBar.prototype;_proto.componentDidMount = function componentDidMount() {this.reflow();};_proto.componentDidUpdate = function componentDidUpdate() {this.reflow();};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.setHover = function setHover(hover) {if (this.state.active && this.state.hover !== hover) {this.setState((0, _extends2.default)({}, this.state, { hover: hover }));}};(0, _createClass2.default)(ScrollBar, [{ key: "scrollBarState", get: function get() {return this.state.scrollState;} }, { key: "scrollBarStyles", get: function get() {var _cx3;var state = this.state;if (this.props.axis === 'x') {var _cx2;return (0, _Emotion.cx)(_ScrollContainer2.styles.scrollBarX(this.theme), _ScrollContainer2.globalClasses.scrollbarX, (_cx2 = {}, _cx2[_ScrollContainer2.styles.scrollBarXHover(this.theme)] = state.hover || state.scrolling, _cx2));}return (0, _Emotion.cx)(_ScrollContainer2.styles.scrollBarY(this.theme), _ScrollContainer2.globalClasses.scrollbarY, (_cx3 = {}, _cx3[_ScrollContainer2.styles.scrollBarYHover(this.theme)] = state.hover || state.scrolling, _cx3));} }]);return ScrollBar;}(_react.default.Component);exports.ScrollBar = ScrollBar;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ScrollBar.tsx"],"names":["ScrollBar","inner","theme","node","state","defaultScrollbarState","renderMain","props","active","scrollSizeParametersNames","axis","customScrollPos","customScrollSize","classNames","className","styles","scrollBar","scrollBarStyles","scrollBarInvert","invert","inlineStyles","pos","size","refScroll","handleScrollMouseDown","reflow","scrollSize","scrollPos","scrollActive","scrollState","getImmediateScrollState","onScrollStateChange","setState","setInnerElement","element","handleScrollWheel","event","addEventListener","passive","removeEventListener","offset","coord","initialCoord","target","window","document","initialScrollPos","mouseMove","mouseMoveEvent","ratio","delta","preventDefault","Object","prototype","hasOwnProperty","call","returnValue","mouseUp","scrolling","WheelEvent","shiftKey","offsetHeight","deltaY","clientSize","componentDidMount","componentDidUpdate","render","setHover","hover","scrollBarX","globalClasses","scrollbarX","scrollBarXHover","scrollBarY","scrollbarY","scrollBarYHover","React","Component"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { defaultScrollbarState, scrollSizeParametersNames } from './ScrollContainer.constants';\nimport { styles, globalClasses } from './ScrollContainer.styles';\nimport { getScrollSizeParams } from './ScrollContainer.helpers';\n\nexport type ScrollAxis = 'x' | 'y';\nexport type ScrollBarScrollState = 'begin' | 'middle' | 'end';\n\nexport interface ScrollBarState {\n active: boolean;\n hover: boolean;\n scrolling: boolean;\n size: number;\n pos: number;\n scrollState: ScrollBarScrollState;\n}\n\nexport interface ScrollBarProps {\n invert: boolean;\n axis: ScrollAxis;\n className?: string;\n onScrollStateChange?: (state: ScrollBarScrollState, axis: ScrollAxis) => void;\n}\n\nexport class ScrollBar extends React.Component<ScrollBarProps, ScrollBarState> {\n private inner: Nullable<HTMLElement>;\n private theme!: Theme;\n\n public node: Nullable<HTMLElement>;\n public state: ScrollBarState = {\n ...defaultScrollbarState,\n };\n\n public componentDidMount() {\n this.reflow();\n }\n\n public componentDidUpdate() {\n this.reflow();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = () => {\n const state = this.state;\n const props = this.props;\n\n if (!state.active) {\n return null;\n }\n\n const { customScrollPos, customScrollSize } = scrollSizeParametersNames[this.props.axis];\n\n const classNames = cx(props.className, styles.scrollBar(this.theme), this.scrollBarStyles, {\n [styles.scrollBarInvert(this.theme)]: props.invert,\n });\n\n const inlineStyles: React.CSSProperties = {\n [customScrollPos]: state.pos,\n [customScrollSize]: state.size,\n };\n\n return (\n <div\n ref={this.refScroll}\n style={inlineStyles}\n className={classNames}\n onMouseDown={this.handleScrollMouseDown}\n data-tid={`ScrollContainer__ScrollBar-${props.axis}`}\n />\n );\n };\n\n public reflow = () => {\n if (!this.inner) {\n return;\n }\n\n const props = this.props;\n const state = this.state;\n\n const { scrollSize, scrollPos, scrollActive } = getScrollSizeParams(this.inner, props.axis);\n\n if (!scrollActive && !state.active) {\n return;\n }\n\n if (state.active !== scrollActive || state.size !== scrollSize || state.pos !== scrollPos) {\n const scrollState = this.getImmediateScrollState();\n\n if (scrollState !== state.scrollState) {\n this.props.onScrollStateChange?.(scrollState, props.axis);\n }\n\n this.setState({\n ...this.state,\n active: scrollActive,\n size: scrollSize,\n pos: scrollPos,\n scrollState,\n });\n }\n };\n\n public setInnerElement = (inner: Nullable<HTMLElement>) => {\n this.inner = inner;\n this.reflow();\n };\n\n public setHover(hover: boolean) {\n if (this.state.active && this.state.hover !== hover) {\n this.setState({ ...this.state, hover });\n }\n }\n\n public get scrollBarState() {\n return this.state.scrollState;\n }\n\n private get scrollBarStyles() {\n const state = this.state;\n\n if (this.props.axis === 'x') {\n return cx(styles.scrollBarX(this.theme), globalClasses.scrollbarX, {\n [styles.scrollBarXHover(this.theme)]: state.hover || state.scrolling,\n });\n }\n\n return cx(styles.scrollBarY(this.theme), globalClasses.scrollbarY, {\n [styles.scrollBarYHover(this.theme)]: state.hover || state.scrolling,\n });\n }\n\n private refScroll = (element: HTMLElement | null) => {\n const handleScrollWheel = (event: Event) => this.handleScrollWheel(event, this.props.axis);\n\n if (!this.node && element) {\n element.addEventListener('wheel', handleScrollWheel, { passive: false });\n }\n if (this.node && !element) {\n this.node.removeEventListener('wheel', handleScrollWheel);\n }\n this.node = element;\n };\n\n private handleScrollMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!this.inner) {\n return;\n }\n\n const { offset, size, pos, coord } = scrollSizeParametersNames[this.props.axis];\n\n const initialCoord = event[coord];\n const target: Document = window.document;\n const initialScrollPos = this.inner[pos];\n const state = this.state;\n\n const mouseMove = (mouseMoveEvent: MouseEvent) => {\n if (!this.inner) {\n return;\n }\n\n const ratio = (this.inner[size] - this.inner[offset]) / (this.inner[offset] - state.size);\n const delta = (mouseMoveEvent[coord] - initialCoord) * ratio;\n\n this.inner[pos] = initialScrollPos + delta;\n\n if (mouseMoveEvent.preventDefault) {\n mouseMoveEvent.preventDefault();\n }\n\n if (Object.prototype.hasOwnProperty.call(mouseMoveEvent, 'returnValue')) {\n (\n mouseMoveEvent as MouseEvent & {\n returnValue: boolean;\n }\n ).returnValue = false;\n }\n };\n\n const mouseUp = () => {\n target.removeEventListener('mousemove', mouseMove);\n target.removeEventListener('mouseup', mouseUp);\n this.setState({ ...this.state, scrolling: false });\n };\n\n target.addEventListener('mousemove', mouseMove);\n target.addEventListener('mouseup', mouseUp);\n this.setState({ ...this.state, scrolling: true });\n\n event.preventDefault();\n };\n\n private handleScrollWheel = (event: Event, axis: ScrollAxis) => {\n if (!this.inner || !(event instanceof WheelEvent) || (axis === 'x' && !event.shiftKey)) {\n return;\n }\n\n const { offset, size, pos } = scrollSizeParametersNames[axis];\n\n const scrollSize = this.inner[size];\n const scrollPos = this.inner[pos];\n const offsetHeight = this.inner[offset];\n\n if (event.deltaY > 0 && scrollSize <= scrollPos + offsetHeight) {\n return;\n }\n if (event.deltaY < 0 && scrollPos <= 0) {\n return;\n }\n\n this.inner[pos] += event.deltaY;\n\n event.preventDefault();\n };\n\n private getImmediateScrollState = (): ScrollBarScrollState => {\n const { pos, size, clientSize } = scrollSizeParametersNames[this.props.axis];\n\n if (!this.inner || this.inner[pos] === 0) {\n return 'begin';\n }\n\n if (this.inner[pos] === this.inner[size] - this.inner[clientSize]) {\n return 'end';\n }\n\n return 'middle';\n };\n}\n"]}
@@ -0,0 +1,23 @@
1
+ import { ScrollBarState } from './ScrollBar';
2
+ export declare const MIN_SCROLL_SIZE = 20;
3
+ export declare const defaultScrollbarState: ScrollBarState;
4
+ export declare const scrollSizeParametersNames: {
5
+ readonly x: {
6
+ readonly offset: "offsetWidth";
7
+ readonly size: "scrollWidth";
8
+ readonly pos: "scrollLeft";
9
+ readonly coord: "clientX";
10
+ readonly clientSize: "clientWidth";
11
+ readonly customScrollPos: "left";
12
+ readonly customScrollSize: "width";
13
+ };
14
+ readonly y: {
15
+ readonly offset: "offsetHeight";
16
+ readonly size: "scrollHeight";
17
+ readonly pos: "scrollTop";
18
+ readonly coord: "clientY";
19
+ readonly clientSize: "clientHeight";
20
+ readonly customScrollPos: "top";
21
+ readonly customScrollSize: "height";
22
+ };
23
+ };