@skbkontur/react-ui 3.8.5 → 3.10.0-fileuploader.1

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 (376) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/cjs/components/Button/Button.d.ts +66 -10
  3. package/cjs/components/Button/Button.js +55 -0
  4. package/cjs/components/Button/Button.js.map +1 -1
  5. package/cjs/components/Button/Button.md +42 -30
  6. package/cjs/components/Checkbox/Checkbox.d.ts +2 -2
  7. package/cjs/components/Checkbox/Checkbox.js +2 -2
  8. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  9. package/cjs/components/ComboBox/ComboBox.d.ts +6 -0
  10. package/cjs/components/ComboBox/ComboBox.js +4 -0
  11. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  12. package/cjs/components/DateInput/DateInput.d.ts +6 -0
  13. package/cjs/components/DateInput/DateInput.js +6 -0
  14. package/cjs/components/DateInput/DateInput.js.map +1 -1
  15. package/cjs/components/DatePicker/DatePicker.d.ts +6 -0
  16. package/cjs/components/DatePicker/DatePicker.js +6 -0
  17. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  18. package/cjs/components/Dropdown/Dropdown.d.ts +2 -2
  19. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  20. package/cjs/components/FileUploader/FileUploader.d.ts +31 -0
  21. package/cjs/components/FileUploader/FileUploader.js +270 -0
  22. package/cjs/components/FileUploader/FileUploader.js.map +1 -0
  23. package/cjs/components/FileUploader/FileUploader.md +67 -0
  24. package/cjs/components/FileUploader/FileUploader.styles.d.ts +19 -0
  25. package/cjs/components/FileUploader/FileUploader.styles.js +159 -0
  26. package/cjs/components/FileUploader/FileUploader.styles.js.map +1 -0
  27. package/cjs/components/FileUploader/index.d.ts +4 -0
  28. package/cjs/components/FileUploader/index.js +4 -0
  29. package/cjs/components/FileUploader/index.js.map +1 -0
  30. package/cjs/components/FileUploader/locale/index.d.ts +4 -0
  31. package/cjs/components/FileUploader/locale/index.js +11 -0
  32. package/cjs/components/FileUploader/locale/index.js.map +1 -0
  33. package/cjs/components/FileUploader/locale/locales/en.d.ts +2 -0
  34. package/cjs/components/FileUploader/locale/locales/en.js +7 -0
  35. package/cjs/components/FileUploader/locale/locales/en.js.map +1 -0
  36. package/cjs/components/FileUploader/locale/locales/ru.d.ts +2 -0
  37. package/cjs/components/FileUploader/locale/locales/ru.js +7 -0
  38. package/cjs/components/FileUploader/locale/locales/ru.js.map +1 -0
  39. package/cjs/components/FileUploader/locale/types.d.ts +6 -0
  40. package/cjs/components/FileUploader/locale/types.js +1 -0
  41. package/cjs/components/FileUploader/locale/types.js.map +1 -0
  42. package/cjs/components/Hint/Hint.d.ts +5 -0
  43. package/cjs/components/Hint/Hint.js +5 -0
  44. package/cjs/components/Hint/Hint.js.map +1 -1
  45. package/cjs/components/Input/Input.d.ts +6 -2
  46. package/cjs/components/Input/Input.js +4 -0
  47. package/cjs/components/Input/Input.js.map +1 -1
  48. package/cjs/components/Link/Link.js +3 -6
  49. package/cjs/components/Link/Link.js.map +1 -1
  50. package/cjs/components/Link/Link.mixins.js +2 -1
  51. package/cjs/components/Link/Link.mixins.js.map +1 -1
  52. package/cjs/components/Radio/Radio.d.ts +27 -11
  53. package/cjs/components/Radio/Radio.js +19 -6
  54. package/cjs/components/Radio/Radio.js.map +1 -1
  55. package/cjs/components/Radio/Radio.md +36 -12
  56. package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -2
  57. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  58. package/cjs/components/Select/Select.d.ts +4 -1
  59. package/cjs/components/Select/Select.js +3 -0
  60. package/cjs/components/Select/Select.js.map +1 -1
  61. package/cjs/components/SidePage/SidePage.d.ts +5 -0
  62. package/cjs/components/SidePage/SidePage.js +10 -1
  63. package/cjs/components/SidePage/SidePage.js.map +1 -1
  64. package/cjs/components/SidePage/SidePage.styles.d.ts +0 -1
  65. package/cjs/components/SidePage/SidePage.styles.js +16 -24
  66. package/cjs/components/SidePage/SidePage.styles.js.map +1 -1
  67. package/cjs/components/Tabs/Tab.d.ts +2 -2
  68. package/cjs/components/Tabs/Tab.js.map +1 -1
  69. package/cjs/components/Textarea/Textarea.d.ts +6 -2
  70. package/cjs/components/Textarea/Textarea.js +9 -2
  71. package/cjs/components/Textarea/Textarea.js.map +1 -1
  72. package/cjs/components/Textarea/Textarea.styles.d.ts +1 -0
  73. package/cjs/components/Textarea/Textarea.styles.js +22 -19
  74. package/cjs/components/Textarea/Textarea.styles.js.map +1 -1
  75. package/cjs/components/Toggle/Toggle.d.ts +2 -2
  76. package/cjs/components/Toggle/Toggle.js.map +1 -1
  77. package/cjs/components/Token/Token.d.ts +6 -0
  78. package/cjs/components/Token/Token.js +6 -0
  79. package/cjs/components/Token/Token.js.map +1 -1
  80. package/cjs/components/TokenInput/TokenInput.d.ts +6 -0
  81. package/cjs/components/TokenInput/TokenInput.js +23 -17
  82. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  83. package/cjs/components/TokenInput/TokenInputMenu.js +1 -1
  84. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  85. package/cjs/components/Tooltip/Tooltip.d.ts +3 -3
  86. package/cjs/components/Tooltip/Tooltip.js +2 -1
  87. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  88. package/cjs/hooks/useDrop.d.ts +11 -0
  89. package/cjs/hooks/useDrop.js +75 -0
  90. package/cjs/hooks/useDrop.js.map +1 -0
  91. package/cjs/hooks/useMemoObject.d.ts +1 -0
  92. package/cjs/hooks/useMemoObject.js +5 -0
  93. package/cjs/hooks/useMemoObject.js.map +1 -0
  94. package/cjs/index.d.ts +1 -0
  95. package/cjs/index.js +1 -0
  96. package/cjs/index.js.map +1 -1
  97. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +6 -0
  98. package/cjs/internal/CustomComboBox/ComboBoxView.js +6 -0
  99. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  100. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +6 -0
  101. package/cjs/internal/CustomComboBox/CustomComboBox.js +11 -9
  102. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  103. package/cjs/internal/FileUploaderControl/FileUploaderControlContext.d.ts +11 -0
  104. package/cjs/internal/FileUploaderControl/FileUploaderControlContext.js +15 -0
  105. package/cjs/internal/FileUploaderControl/FileUploaderControlContext.js.map +1 -0
  106. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +14 -0
  107. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +107 -0
  108. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -0
  109. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +10 -0
  110. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +187 -0
  111. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -0
  112. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.d.ts +11 -0
  113. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.js +66 -0
  114. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.js.map +1 -0
  115. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +4 -0
  116. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +24 -0
  117. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -0
  118. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.d.ts +4 -0
  119. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.js +17 -0
  120. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.js.map +1 -0
  121. package/cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.d.ts +7 -0
  122. package/cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.js +16 -0
  123. package/cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.js.map +1 -0
  124. package/cjs/internal/FileUploaderControl/fileUtils.d.ts +18 -0
  125. package/cjs/internal/FileUploaderControl/fileUtils.js +55 -0
  126. package/cjs/internal/FileUploaderControl/fileUtils.js.map +1 -0
  127. package/cjs/internal/FileUploaderControl/hooks/useControlLocale.d.ts +1 -0
  128. package/cjs/internal/FileUploaderControl/hooks/useControlLocale.js +4 -0
  129. package/cjs/internal/FileUploaderControl/hooks/useControlLocale.js.map +1 -0
  130. package/cjs/internal/FileUploaderControl/hooks/useUpload.d.ts +3 -0
  131. package/cjs/internal/FileUploaderControl/hooks/useUpload.js +51 -0
  132. package/cjs/internal/FileUploaderControl/hooks/useUpload.js.map +1 -0
  133. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +3 -0
  134. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js +18 -0
  135. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js.map +1 -0
  136. package/cjs/internal/InputLikeText/InputLikeText.js +2 -2
  137. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  138. package/cjs/internal/Popup/Popup.d.ts +13 -0
  139. package/cjs/internal/Popup/Popup.js +25 -3
  140. package/cjs/internal/Popup/Popup.js.map +1 -1
  141. package/cjs/internal/Popup/PopupHelper.js +1 -0
  142. package/cjs/internal/Popup/PopupHelper.js.map +1 -1
  143. package/cjs/internal/TextWidthHelper/TextWidthHelper.d.ts +15 -0
  144. package/cjs/internal/TextWidthHelper/TextWidthHelper.js +34 -0
  145. package/cjs/internal/TextWidthHelper/TextWidthHelper.js.map +1 -0
  146. package/cjs/internal/TextWidthHelper/TextWidthHelper.styles.d.ts +4 -0
  147. package/cjs/internal/TextWidthHelper/TextWidthHelper.styles.js +23 -0
  148. package/cjs/internal/TextWidthHelper/TextWidthHelper.styles.js.map +1 -0
  149. package/cjs/internal/ThemePlayground/Playground.d.ts +1 -0
  150. package/cjs/internal/ThemePlayground/Playground.js +11 -1
  151. package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
  152. package/cjs/internal/ThemePlayground/darkTheme.d.ts +15 -0
  153. package/cjs/internal/ThemePlayground/darkTheme.js +25 -1
  154. package/cjs/internal/ThemePlayground/darkTheme.js.map +1 -1
  155. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  156. package/cjs/internal/icons/16px/index.d.ts +3 -0
  157. package/cjs/internal/icons/16px/index.js +38 -2
  158. package/cjs/internal/icons/16px/index.js.map +1 -1
  159. package/cjs/internal/themes/DefaultTheme.d.ts +23 -0
  160. package/cjs/internal/themes/DefaultTheme.js +64 -1
  161. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  162. package/cjs/lib/forwardRefAndName.d.ts +5 -0
  163. package/cjs/lib/forwardRefAndName.js +23 -0
  164. package/cjs/lib/forwardRefAndName.js.map +1 -0
  165. package/cjs/lib/guidUtils.d.ts +1 -0
  166. package/cjs/lib/guidUtils.js +5 -0
  167. package/cjs/lib/guidUtils.js.map +1 -0
  168. package/cjs/lib/locale/types.d.ts +2 -0
  169. package/cjs/lib/locale/types.js +2 -0
  170. package/cjs/lib/locale/types.js.map +1 -1
  171. package/cjs/lib/locale/useLocaleForControl.d.ts +3 -0
  172. package/cjs/lib/locale/useLocaleForControl.js +14 -0
  173. package/cjs/lib/locale/useLocaleForControl.js.map +1 -0
  174. package/cjs/lib/stringUtils.d.ts +1 -0
  175. package/cjs/lib/stringUtils.js +13 -0
  176. package/cjs/lib/stringUtils.js.map +1 -0
  177. package/cjs/lib/utils.d.ts +1 -0
  178. package/cjs/lib/utils.js +20 -2
  179. package/cjs/lib/utils.js.map +1 -1
  180. package/components/Button/Button/Button.js.map +1 -1
  181. package/components/Button/Button.d.ts +66 -10
  182. package/components/Button/Button.md +42 -30
  183. package/components/Checkbox/Checkbox/Checkbox.js +1 -1
  184. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  185. package/components/Checkbox/Checkbox.d.ts +2 -2
  186. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  187. package/components/ComboBox/ComboBox.d.ts +6 -0
  188. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  189. package/components/DateInput/DateInput.d.ts +6 -0
  190. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  191. package/components/DatePicker/DatePicker.d.ts +6 -0
  192. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  193. package/components/Dropdown/Dropdown.d.ts +2 -2
  194. package/components/FileUploader/FileUploader/FileUploader.js +277 -0
  195. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -0
  196. package/components/FileUploader/FileUploader/package.json +6 -0
  197. package/components/FileUploader/FileUploader.d.ts +31 -0
  198. package/components/FileUploader/FileUploader.md +67 -0
  199. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js +56 -0
  200. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js.map +1 -0
  201. package/components/FileUploader/FileUploader.styles/package.json +6 -0
  202. package/components/FileUploader/FileUploader.styles.d.ts +19 -0
  203. package/components/FileUploader/index/index.js +3 -0
  204. package/components/FileUploader/index/index.js.map +1 -0
  205. package/components/FileUploader/index/package.json +6 -0
  206. package/components/FileUploader/index.d.ts +4 -0
  207. package/components/FileUploader/locale/index/index.js +8 -0
  208. package/components/FileUploader/locale/index/index.js.map +1 -0
  209. package/components/FileUploader/locale/index/package.json +6 -0
  210. package/components/FileUploader/locale/index.d.ts +4 -0
  211. package/components/FileUploader/locale/locales/en/en.js +6 -0
  212. package/components/FileUploader/locale/locales/en/en.js.map +1 -0
  213. package/components/FileUploader/locale/locales/en/package.json +6 -0
  214. package/components/FileUploader/locale/locales/en.d.ts +2 -0
  215. package/components/FileUploader/locale/locales/ru/package.json +6 -0
  216. package/components/FileUploader/locale/locales/ru/ru.js +6 -0
  217. package/components/FileUploader/locale/locales/ru/ru.js.map +1 -0
  218. package/components/FileUploader/locale/locales/ru.d.ts +2 -0
  219. package/components/FileUploader/locale/package.json +6 -0
  220. package/components/FileUploader/locale/types/package.json +6 -0
  221. package/components/FileUploader/locale/types/types.js +0 -0
  222. package/components/FileUploader/locale/types/types.js.map +1 -0
  223. package/components/FileUploader/locale/types.d.ts +6 -0
  224. package/components/FileUploader/package.json +6 -0
  225. package/components/Hint/Hint/Hint.js.map +1 -1
  226. package/components/Hint/Hint.d.ts +5 -0
  227. package/components/Input/Input/Input.js.map +1 -1
  228. package/components/Input/Input.d.ts +6 -2
  229. package/components/Link/Link/Link.js +4 -8
  230. package/components/Link/Link/Link.js.map +1 -1
  231. package/components/Link/Link.mixins/Link.mixins.js +1 -1
  232. package/components/Link/Link.mixins/Link.mixins.js.map +1 -1
  233. package/components/Radio/Radio/Radio.js +6 -5
  234. package/components/Radio/Radio/Radio.js.map +1 -1
  235. package/components/Radio/Radio.d.ts +27 -11
  236. package/components/Radio/Radio.md +36 -12
  237. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  238. package/components/RadioGroup/RadioGroup.d.ts +2 -2
  239. package/components/Select/Select/Select.js.map +1 -1
  240. package/components/Select/Select.d.ts +4 -1
  241. package/components/SidePage/SidePage/SidePage.js +8 -4
  242. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  243. package/components/SidePage/SidePage.d.ts +5 -0
  244. package/components/SidePage/SidePage.styles/SidePage.styles.js +16 -19
  245. package/components/SidePage/SidePage.styles/SidePage.styles.js.map +1 -1
  246. package/components/SidePage/SidePage.styles.d.ts +0 -1
  247. package/components/Tabs/Tab/Tab.js.map +1 -1
  248. package/components/Tabs/Tab.d.ts +2 -2
  249. package/components/Textarea/Textarea/Textarea.js +5 -3
  250. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  251. package/components/Textarea/Textarea.d.ts +6 -2
  252. package/components/Textarea/Textarea.styles/Textarea.styles.js +12 -9
  253. package/components/Textarea/Textarea.styles/Textarea.styles.js.map +1 -1
  254. package/components/Textarea/Textarea.styles.d.ts +1 -0
  255. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  256. package/components/Toggle/Toggle.d.ts +2 -2
  257. package/components/Token/Token/Token.js.map +1 -1
  258. package/components/Token/Token.d.ts +6 -0
  259. package/components/TokenInput/TokenInput/TokenInput.js +30 -19
  260. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  261. package/components/TokenInput/TokenInput.d.ts +6 -0
  262. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +1 -1
  263. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  264. package/components/Tooltip/Tooltip/Tooltip.js +2 -1
  265. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  266. package/components/Tooltip/Tooltip.d.ts +3 -3
  267. package/hooks/useDrop/package.json +6 -0
  268. package/hooks/useDrop/useDrop.js +57 -0
  269. package/hooks/useDrop/useDrop.js.map +1 -0
  270. package/hooks/useDrop.d.ts +11 -0
  271. package/hooks/useMemoObject/package.json +6 -0
  272. package/hooks/useMemoObject/useMemoObject.js +6 -0
  273. package/hooks/useMemoObject/useMemoObject.js.map +1 -0
  274. package/hooks/useMemoObject.d.ts +1 -0
  275. package/index.d.ts +1 -0
  276. package/index.js +1 -0
  277. package/index.js.map +1 -1
  278. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  279. package/internal/CustomComboBox/ComboBoxView.d.ts +6 -0
  280. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +5 -12
  281. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  282. package/internal/CustomComboBox/CustomComboBox.d.ts +6 -0
  283. package/internal/FileUploaderControl/FileUploaderControlContext/FileUploaderControlContext.js +2 -0
  284. package/internal/FileUploaderControl/FileUploaderControlContext/FileUploaderControlContext.js.map +1 -0
  285. package/internal/FileUploaderControl/FileUploaderControlContext/package.json +6 -0
  286. package/internal/FileUploaderControl/FileUploaderControlContext.d.ts +11 -0
  287. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +79 -0
  288. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -0
  289. package/internal/FileUploaderControl/FileUploaderControlProvider/package.json +6 -0
  290. package/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +14 -0
  291. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +176 -0
  292. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -0
  293. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/package.json +6 -0
  294. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +10 -0
  295. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/FileUploaderFile.styles.js +32 -0
  296. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/FileUploaderFile.styles.js.map +1 -0
  297. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/package.json +6 -0
  298. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.d.ts +11 -0
  299. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +23 -0
  300. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -0
  301. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/package.json +6 -0
  302. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +4 -0
  303. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/FileUploaderFileList.styles.js +11 -0
  304. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/FileUploaderFileList.styles.js.map +1 -0
  305. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/package.json +6 -0
  306. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.d.ts +4 -0
  307. package/internal/FileUploaderControl/FileUploaderFileValidationResult/FileUploaderFileValidationResult.js +18 -0
  308. package/internal/FileUploaderControl/FileUploaderFileValidationResult/FileUploaderFileValidationResult.js.map +1 -0
  309. package/internal/FileUploaderControl/FileUploaderFileValidationResult/package.json +6 -0
  310. package/internal/FileUploaderControl/FileUploaderFileValidationResult.d.ts +7 -0
  311. package/internal/FileUploaderControl/fileUtils/fileUtils.js +85 -0
  312. package/internal/FileUploaderControl/fileUtils/fileUtils.js.map +1 -0
  313. package/internal/FileUploaderControl/fileUtils/package.json +6 -0
  314. package/internal/FileUploaderControl/fileUtils.d.ts +18 -0
  315. package/internal/FileUploaderControl/hooks/useControlLocale/package.json +6 -0
  316. package/internal/FileUploaderControl/hooks/useControlLocale/useControlLocale.js +5 -0
  317. package/internal/FileUploaderControl/hooks/useControlLocale/useControlLocale.js.map +1 -0
  318. package/internal/FileUploaderControl/hooks/useControlLocale.d.ts +1 -0
  319. package/internal/FileUploaderControl/hooks/useUpload/package.json +6 -0
  320. package/internal/FileUploaderControl/hooks/useUpload/useUpload.js +56 -0
  321. package/internal/FileUploaderControl/hooks/useUpload/useUpload.js.map +1 -0
  322. package/internal/FileUploaderControl/hooks/useUpload.d.ts +3 -0
  323. package/internal/FileUploaderControl/withFileUploaderControlProvider/package.json +6 -0
  324. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js +16 -0
  325. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js.map +1 -0
  326. package/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +3 -0
  327. package/internal/InputLikeText/InputLikeText/InputLikeText.js +1 -1
  328. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  329. package/internal/Popup/Popup/Popup.js +9 -2
  330. package/internal/Popup/Popup/Popup.js.map +1 -1
  331. package/internal/Popup/Popup.d.ts +13 -0
  332. package/internal/Popup/PopupHelper/PopupHelper.js +2 -1
  333. package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
  334. package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js +49 -0
  335. package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js.map +1 -0
  336. package/internal/TextWidthHelper/TextWidthHelper/package.json +6 -0
  337. package/internal/TextWidthHelper/TextWidthHelper.d.ts +15 -0
  338. package/internal/TextWidthHelper/TextWidthHelper.styles/TextWidthHelper.styles.js +14 -0
  339. package/internal/TextWidthHelper/TextWidthHelper.styles/TextWidthHelper.styles.js.map +1 -0
  340. package/internal/TextWidthHelper/TextWidthHelper.styles/package.json +6 -0
  341. package/internal/TextWidthHelper/TextWidthHelper.styles.d.ts +4 -0
  342. package/internal/ThemePlayground/Playground/Playground.js +11 -1
  343. package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
  344. package/internal/ThemePlayground/Playground.d.ts +1 -0
  345. package/internal/ThemePlayground/darkTheme/darkTheme.js +26 -1
  346. package/internal/ThemePlayground/darkTheme/darkTheme.js.map +1 -1
  347. package/internal/ThemePlayground/darkTheme.d.ts +15 -0
  348. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  349. package/internal/icons/16px/index/index.js +27 -0
  350. package/internal/icons/16px/index/index.js.map +1 -1
  351. package/internal/icons/16px/index.d.ts +3 -0
  352. package/internal/themes/DefaultTheme/DefaultTheme.js +67 -0
  353. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  354. package/internal/themes/DefaultTheme.d.ts +23 -0
  355. package/lib/forwardRefAndName/forwardRefAndName.js +11 -0
  356. package/lib/forwardRefAndName/forwardRefAndName.js.map +1 -0
  357. package/lib/forwardRefAndName/package.json +6 -0
  358. package/lib/forwardRefAndName.d.ts +5 -0
  359. package/lib/guidUtils/guidUtils.js +4 -0
  360. package/lib/guidUtils/guidUtils.js.map +1 -0
  361. package/lib/guidUtils/package.json +6 -0
  362. package/lib/guidUtils.d.ts +1 -0
  363. package/lib/locale/types/types.js.map +1 -1
  364. package/lib/locale/types.d.ts +2 -0
  365. package/lib/locale/useLocaleForControl/package.json +6 -0
  366. package/lib/locale/useLocaleForControl/useLocaleForControl.js +12 -0
  367. package/lib/locale/useLocaleForControl/useLocaleForControl.js.map +1 -0
  368. package/lib/locale/useLocaleForControl.d.ts +3 -0
  369. package/lib/stringUtils/package.json +6 -0
  370. package/lib/stringUtils/stringUtils.js +12 -0
  371. package/lib/stringUtils/stringUtils.js.map +1 -0
  372. package/lib/stringUtils.d.ts +1 -0
  373. package/lib/utils/utils.js +18 -0
  374. package/lib/utils/utils.js.map +1 -1
  375. package/lib/utils.d.ts +1 -0
  376. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -3,6 +3,46 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.9.2](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.9.1...@skbkontur/react-ui@3.9.2) (2021-11-26)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **TokenInput:** non-null assertion operator replaced with optional chaining ([#2670](https://github.com/skbkontur/retail-ui/issues/2670)) ([b7532d0](https://github.com/skbkontur/retail-ui/commit/b7532d03cea7e06277fdd2b1d827c53b1c4eaa49))
12
+
13
+
14
+
15
+
16
+
17
+ ## [3.9.1](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.9.0...@skbkontur/react-ui@3.9.1) (2021-11-19)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * **ComboBox:** fix blur in Chrome ([#2665](https://github.com/skbkontur/retail-ui/issues/2665)) ([dab2ef0](https://github.com/skbkontur/retail-ui/commit/dab2ef0a16f878e179dd1ae98cebc3d69a6b7987))
23
+ * **react-ui:** fix disabled and error state ([#2663](https://github.com/skbkontur/retail-ui/issues/2663)) ([4c2d542](https://github.com/skbkontur/retail-ui/commit/4c2d5420797b26cdeabd892bc87473c446d59bef))
24
+ * **SidePage:** add offset prop ([#2626](https://github.com/skbkontur/retail-ui/issues/2626)) ([59b0257](https://github.com/skbkontur/retail-ui/commit/59b0257634a82bde15bca415e4f803076c89cf7a))
25
+
26
+
27
+
28
+
29
+
30
+ # [3.9.0](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.8.5...@skbkontur/react-ui@3.9.0) (2021-11-16)
31
+
32
+
33
+ ### Bug Fixes
34
+
35
+ * **Link:** disable interactions on link with disabled and loading states ([#2621](https://github.com/skbkontur/retail-ui/issues/2621)) ([e78401e](https://github.com/skbkontur/retail-ui/commit/e78401e5c92e39e0d83f64664bdcd7e61fb9747c))
36
+
37
+
38
+ ### Features
39
+
40
+ * **Popup/TokenInput/Kebab/DropdownMenu/TooltipMenu:** adjust position to fit viewport automatically ([#2638](https://github.com/skbkontur/retail-ui/issues/2638)) ([3f8d530](https://github.com/skbkontur/retail-ui/commit/3f8d530a06a22bc06c4294f4b509d4e9e6907a58))
41
+
42
+
43
+
44
+
45
+
6
46
  ## [3.8.5](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.8.4...@skbkontur/react-ui@3.8.5) (2021-11-15)
7
47
 
8
48
 
@@ -9,55 +9,111 @@ export interface ButtonProps extends CommonProps {
9
9
  /** @ignore */
10
10
  _noRightPadding?: boolean;
11
11
  /**
12
- * Визуально нажатое состояние.
12
+ * Применяет к кнопке стили псевдокласса `:active`.
13
13
  */
14
14
  active?: boolean;
15
- /** `type TextAlignProperty = "inherit" | "initial" | "unset" | "center" | "end" | "justify" | "left" | "match-parent" | "right" | "start"` */
15
+ /**
16
+ * CSS-свойство `text-align`.
17
+ */
16
18
  align?: React.CSSProperties['textAlign'];
17
19
  /**
18
- * Кнопка со стрелкой.
19
- *
20
- * `type ButtonArrow = boolean | "left"`
20
+ * Превращает обычную кнопку в кнопку со стрелкой.
21
21
  */
22
22
  arrow?: boolean | 'left';
23
+ /**
24
+ * Даёт кнопке фокус после окончания загрузки страницы.
25
+ */
23
26
  autoFocus?: boolean;
27
+ /**
28
+ * Убирает обводку у кнопки.
29
+ */
24
30
  borderless?: boolean;
31
+ /**
32
+ * @ignore
33
+ */
25
34
  checked?: boolean;
26
35
  children?: React.ReactNode;
27
36
  /** @ignore */
28
37
  corners?: number;
38
+ /**
39
+ * Отключенное состояние кнопки.
40
+ */
29
41
  disabled?: boolean;
30
42
  /** @ignore */
31
43
  disableFocus?: boolean;
44
+ /**
45
+ * Cостояние валидации при ошибке.
46
+ */
32
47
  error?: boolean;
33
- focused?: boolean;
34
48
  /**
35
49
  * Иконка слева от текста кнопки.
36
50
  */
37
51
  icon?: React.ReactElement<any>;
52
+ /**
53
+ * Переводит кнопку в состояние загрузки.
54
+ */
38
55
  loading?: boolean;
56
+ /**
57
+ * Сужает кнопку.
58
+ */
39
59
  narrow?: boolean;
60
+ /**
61
+ * HTML-событие `onblur`.
62
+ */
40
63
  onBlur?: React.FocusEventHandler<HTMLButtonElement>;
64
+ /**
65
+ * HTML-событие `onclick`.
66
+ */
41
67
  onClick?: React.MouseEventHandler<HTMLButtonElement>;
68
+ /**
69
+ * HTML-событие `onfocus`.
70
+ */
42
71
  onFocus?: React.FocusEventHandler<HTMLButtonElement>;
72
+ /**
73
+ * HTML-событие `keydown`.
74
+ */
43
75
  onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;
76
+ /**
77
+ * HTML-событие `onmouseenter`.
78
+ */
44
79
  onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;
80
+ /**
81
+ * HTML-событие `mouseleave`.
82
+ */
45
83
  onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;
84
+ /**
85
+ * HTML-событие `onmouseover`.
86
+ */
46
87
  onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;
47
- /** `type ButtonSize = "small" | "medium" | "large"` */
88
+ /**
89
+ * Задаёт размер кнопки.
90
+ *
91
+ * **Допустимые значения**: `"small"`, `"medium"`, `"large"`.
92
+ */
48
93
  size?: ButtonSize;
49
- /** `type ButtonType = "button" | "submit" | "reset"` */
94
+ /**
95
+ * HTML-атрибут `type`.
96
+ */
50
97
  type?: ButtonType;
98
+ /**
99
+ * HTML-атрибут `title`.
100
+ */
51
101
  title?: string;
52
102
  /**
53
- * Вариант использования. Влияет на цвет кнопки.
103
+ * Стиль кнопки.
54
104
  *
55
- * `type ButtonUse = "default" | "primary" | "success" | "danger" | "pay" | "link"`
105
+ * **Допустимые значения**: `"default"`, `"primary"`, `"success"`, `"danger"`, `"pay"`, `"link"`.
56
106
  */
57
107
  use?: ButtonUse;
58
108
  /** @ignore */
59
109
  visuallyFocused?: boolean;
110
+ /**
111
+ * Cостояние валидации при предупреждении.
112
+ */
60
113
  warning?: boolean;
114
+ /**
115
+ * CSS-свойство `width`.
116
+ */
61
117
  width?: number | string;
62
118
  }
63
119
  export interface ButtonState {
@@ -1 +1 @@
1
- {"version":3,"sources":["Button.tsx"],"names":["Button","state","focusedByTab","theme","node","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","keyListener","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","blur","render","renderMain","corners","active","borderless","checked","error","warning","loading","arrow","narrow","icon","_noPadding","_noRightPadding","use","defaultProps","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onClick","width","children","sizeClass","getSizeClassName","isFocused","isLink","rootProps","type","className","styles","root","activeStyles","checkedDisabled","noPadding","noRightPadding","style","borderTopLeftRadius","Corners","TOP_LEFT","undefined","borderTopRightRadius","TOP_RIGHT","borderBottomRightRadius","BOTTOM_RIGHT","borderBottomLeftRadius","BOTTOM_LEFT","textAlign","tabIndex","title","wrapProps","wrap","wrapArrow","wrapArrowLeft","outlineNode","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","loadingNode","getLoadingSpinner","iconNode","getSizeIconClassName","iconNoRightPadding","iconLink","arrowNode","arrowWarning","arrowError","arrowFocus","arrowLeft","globalClasses","arrowHelper","arrowHelperTop","arrowHelperBottom","link","linkFocus","linkDisabled","Object","assign","wrapLink","caption","captionTranslated","captionLink","captionDisabled","visibilityHidden","size","sizeLarge","sizeLargeIE11","isIE11","isEdge","sizeMedium","sizeMediumIE11","sizeSmall","sizeSmallIE11","iconLarge","iconMedium","iconSmall","React","Component","__KONTUR_REACT_UI__","__BUTTON__","isButton","child","isValidElement","prototype","hasOwnProperty","call"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isIE11, isEdge } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Spinner } from '../Spinner';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { Corners } from './Corners';\n\nexport type ButtonSize = 'small' | 'medium' | 'large';\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link';\n\nexport interface ButtonProps extends CommonProps {\n /** @ignore */\n _noPadding?: boolean;\n\n /** @ignore */\n _noRightPadding?: boolean;\n\n /**\n * Визуально нажатое состояние.\n */\n active?: boolean;\n\n /** `type TextAlignProperty = \"inherit\" | \"initial\" | \"unset\" | \"center\" | \"end\" | \"justify\" | \"left\" | \"match-parent\" | \"right\" | \"start\"` */\n align?: React.CSSProperties['textAlign'];\n\n /**\n * Кнопка со стрелкой.\n *\n * `type ButtonArrow = boolean | \"left\"`\n */\n arrow?: boolean | 'left';\n\n autoFocus?: boolean;\n\n borderless?: boolean;\n\n checked?: boolean;\n\n children?: React.ReactNode;\n\n /** @ignore */\n corners?: number;\n\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n error?: boolean;\n\n focused?: boolean;\n\n /**\n * Иконка слева от текста кнопки.\n */\n icon?: React.ReactElement<any>;\n\n loading?: boolean;\n\n narrow?: boolean;\n\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n\n onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;\n\n /** `type ButtonSize = \"small\" | \"medium\" | \"large\"` */\n size?: ButtonSize;\n\n /** `type ButtonType = \"button\" | \"submit\" | \"reset\"` */\n type?: ButtonType;\n\n title?: string;\n\n /**\n * Вариант использования. Влияет на цвет кнопки.\n *\n * `type ButtonUse = \"default\" | \"primary\" | \"success\" | \"danger\" | \"pay\" | \"link\"`\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n warning?: boolean;\n\n width?: number | string;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static __BUTTON__ = true;\n public static TOP_LEFT = Corners.TOP_LEFT;\n public static TOP_RIGHT = Corners.TOP_RIGHT;\n public static BOTTOM_RIGHT = Corners.BOTTOM_RIGHT;\n public static BOTTOM_LEFT = Corners.BOTTOM_LEFT;\n\n public static defaultProps = {\n use: 'default' as ButtonUse,\n size: 'small' as ButtonSize,\n type: 'button' as ButtonType,\n };\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private node: HTMLButtonElement | null = null;\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n /**\n * @public\n */\n public focus() {\n this.node?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.node?.blur();\n }\n\n public render(): JSX.Element {\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 {\n corners = 0,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n arrow,\n narrow,\n icon,\n _noPadding,\n _noRightPadding,\n use = Button.defaultProps.use,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onClick,\n width,\n children,\n } = this.props;\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n const rootProps = {\n // By default the type attribute is 'submit'. IE8 will fire a click event\n // on this button if somewhere on the page user presses Enter while some\n // input is focused. So we set type to 'button' by default.\n type: this.props.type,\n className: cx({\n [styles.root(this.theme)]: true,\n [styles[use](this.theme)]: true,\n [activeStyles[use](this.theme)]: active,\n [sizeClass]: true,\n [styles.focus(this.theme)]: isFocused && !checked,\n [styles.checked(this.theme)]: checked,\n [styles.disabled(this.theme)]: disabled || loading,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n [styles.borderless()]: borderless && !disabled && !loading && !checked && !isFocused && !active,\n [styles.narrow()]: narrow,\n [styles.noPadding()]: _noPadding,\n [styles.noRightPadding()]: _noRightPadding,\n }),\n style: {\n borderTopLeftRadius: corners & Corners.TOP_LEFT ? 0 : undefined,\n borderTopRightRadius: corners & Corners.TOP_RIGHT ? 0 : undefined,\n borderBottomRightRadius: corners & Corners.BOTTOM_RIGHT ? 0 : undefined,\n borderBottomLeftRadius: corners & Corners.BOTTOM_LEFT ? 0 : undefined,\n textAlign: align,\n },\n disabled: disabled || loading,\n onClick: onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown: onKeyDown,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseOver: onMouseOver,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx({\n [styles.wrap()]: true,\n [styles.wrapArrow()]: arrow === true,\n [styles.wrapArrowLeft()]: arrow === 'left',\n }),\n style: {\n width: width,\n },\n };\n\n let outlineNode = null;\n if (!isFocused || isLink) {\n outlineNode = (\n <div\n className={cx(styles.outline(), {\n [styles.outlineWarning(this.theme)]: warning,\n [styles.outlineError(this.theme)]: error,\n [styles.outlineLink()]: isLink,\n [styles.outlineLinkWarning(this.theme)]: isLink && warning,\n [styles.outlineLinkError(this.theme)]: isLink && error,\n })}\n />\n );\n }\n\n let loadingNode = null;\n if (loading && !icon) {\n loadingNode = <div className={styles.loading()}>{this.getLoadingSpinner()}</div>;\n }\n\n let iconNode = null;\n if (icon) {\n iconNode = (\n <span\n className={cx(styles.icon(), this.getSizeIconClassName(), {\n [styles.iconNoRightPadding()]: !children,\n [styles.iconLink(this.theme)]: isLink,\n })}\n >\n {loading ? this.getLoadingSpinner() : icon}\n </span>\n );\n }\n\n let arrowNode = null;\n if (arrow) {\n arrowNode = (\n <div\n className={cx({\n [styles.arrow()]: true,\n [styles.arrowWarning(this.theme)]: !checked && warning,\n [styles.arrowError(this.theme)]: !checked && error,\n [styles.arrowFocus(this.theme)]: !checked && isFocused,\n [styles.arrowLeft()]: arrow === 'left',\n })}\n >\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperTop)} />\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperBottom)} />\n </div>\n );\n }\n\n // Force disable all props and features, that cannot be use with Link\n if (isLink) {\n rootProps.className = cx({\n [styles.root(this.theme)]: true,\n [sizeClass]: true,\n [styles.link(this.theme)]: true,\n [styles.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n arrowNode = null;\n }\n\n return (\n <CommonWrapper {...this.props}>\n <span {...wrapProps}>\n <button ref={this._ref} {...rootProps}>\n {outlineNode}\n {loadingNode}\n {arrowNode}\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: active || checked,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {iconNode}\n <span className={cx({ [styles.visibilityHidden()]: !!loadingNode })}>{children}</span>\n </div>\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private getLoadingSpinner() {\n return <Spinner caption={null} dimmed type=\"mini\" />;\n }\n\n private getSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), { [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), { [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), { [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge });\n }\n }\n\n private getSizeIconClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(this.theme);\n }\n }\n\n private handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n if (!this.props.disabled && !this.props.disableFocus) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n this.props.onFocus?.(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n this.setState({ focusedByTab: false });\n if (!this.props.disabled && !this.props.disableFocus) {\n this.props.onBlur?.(e);\n }\n };\n\n private _ref = (node: HTMLButtonElement | null) => {\n this.node = node;\n };\n}\n\nexport const isButton = (child: React.ReactChild): child is React.ReactElement<ButtonProps> => {\n return React.isValidElement<ButtonProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__BUTTON__')\n : false;\n};\n"]}
1
+ {"version":3,"sources":["Button.tsx"],"names":["Button","state","focusedByTab","theme","node","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","keyListener","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","blur","render","renderMain","corners","active","borderless","checked","error","warning","loading","arrow","narrow","icon","_noPadding","_noRightPadding","use","defaultProps","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onClick","width","children","sizeClass","getSizeClassName","isFocused","isLink","rootProps","type","className","styles","root","activeStyles","checkedDisabled","noPadding","noRightPadding","style","borderTopLeftRadius","Corners","TOP_LEFT","undefined","borderTopRightRadius","TOP_RIGHT","borderBottomRightRadius","BOTTOM_RIGHT","borderBottomLeftRadius","BOTTOM_LEFT","textAlign","tabIndex","title","wrapProps","wrap","wrapArrow","wrapArrowLeft","outlineNode","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","loadingNode","getLoadingSpinner","iconNode","getSizeIconClassName","iconNoRightPadding","iconLink","arrowNode","arrowWarning","arrowError","arrowFocus","arrowLeft","globalClasses","arrowHelper","arrowHelperTop","arrowHelperBottom","link","linkFocus","linkDisabled","Object","assign","wrapLink","caption","captionTranslated","captionLink","captionDisabled","visibilityHidden","size","sizeLarge","sizeLargeIE11","isIE11","isEdge","sizeMedium","sizeMediumIE11","sizeSmall","sizeSmallIE11","iconLarge","iconMedium","iconSmall","React","Component","__KONTUR_REACT_UI__","__BUTTON__","isButton","child","isValidElement","prototype","hasOwnProperty","call"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isIE11, isEdge } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Spinner } from '../Spinner';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { Corners } from './Corners';\n\nexport type ButtonSize = 'small' | 'medium' | 'large';\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link';\n\nexport interface ButtonProps extends CommonProps {\n /** @ignore */\n _noPadding?: boolean;\n\n /** @ignore */\n _noRightPadding?: boolean;\n\n /**\n * Применяет к кнопке стили псевдокласса `:active`.\n */\n active?: boolean;\n\n /**\n * CSS-свойство `text-align`.\n */\n align?: React.CSSProperties['textAlign'];\n\n /**\n * Превращает обычную кнопку в кнопку со стрелкой.\n */\n arrow?: boolean | 'left';\n\n /**\n * Даёт кнопке фокус после окончания загрузки страницы.\n */\n autoFocus?: boolean;\n\n /**\n * Убирает обводку у кнопки.\n */\n borderless?: boolean;\n\n /**\n * @ignore\n */\n checked?: boolean;\n\n children?: React.ReactNode;\n\n /** @ignore */\n corners?: number;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n\n /**\n * Иконка слева от текста кнопки.\n */\n icon?: React.ReactElement<any>;\n\n /**\n * Переводит кнопку в состояние загрузки.\n */\n loading?: boolean;\n\n /**\n * Сужает кнопку.\n */\n narrow?: boolean;\n\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onclick`.\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onfocus`.\n */\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `keydown`.\n */\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * Задаёт размер кнопки.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: ButtonSize;\n\n /**\n * HTML-атрибут `type`.\n */\n type?: ButtonType;\n\n /**\n * HTML-атрибут `title`.\n */\n title?: string;\n\n /**\n * Стиль кнопки.\n *\n * **Допустимые значения**: `\"default\"`, `\"primary\"`, `\"success\"`, `\"danger\"`, `\"pay\"`, `\"link\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static __BUTTON__ = true;\n public static TOP_LEFT = Corners.TOP_LEFT;\n public static TOP_RIGHT = Corners.TOP_RIGHT;\n public static BOTTOM_RIGHT = Corners.BOTTOM_RIGHT;\n public static BOTTOM_LEFT = Corners.BOTTOM_LEFT;\n\n public static defaultProps = {\n use: 'default' as ButtonUse,\n size: 'small' as ButtonSize,\n type: 'button' as ButtonType,\n };\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private node: HTMLButtonElement | null = null;\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n /**\n * @public\n */\n public focus() {\n this.node?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.node?.blur();\n }\n\n public render(): JSX.Element {\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 {\n corners = 0,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n arrow,\n narrow,\n icon,\n _noPadding,\n _noRightPadding,\n use = Button.defaultProps.use,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onClick,\n width,\n children,\n } = this.props;\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n const rootProps = {\n // By default the type attribute is 'submit'. IE8 will fire a click event\n // on this button if somewhere on the page user presses Enter while some\n // input is focused. So we set type to 'button' by default.\n type: this.props.type,\n className: cx({\n [styles.root(this.theme)]: true,\n [styles[use](this.theme)]: true,\n [activeStyles[use](this.theme)]: active,\n [sizeClass]: true,\n [styles.focus(this.theme)]: isFocused && !checked,\n [styles.checked(this.theme)]: checked,\n [styles.disabled(this.theme)]: disabled || loading,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n [styles.borderless()]: borderless && !disabled && !loading && !checked && !isFocused && !active,\n [styles.narrow()]: narrow,\n [styles.noPadding()]: _noPadding,\n [styles.noRightPadding()]: _noRightPadding,\n }),\n style: {\n borderTopLeftRadius: corners & Corners.TOP_LEFT ? 0 : undefined,\n borderTopRightRadius: corners & Corners.TOP_RIGHT ? 0 : undefined,\n borderBottomRightRadius: corners & Corners.BOTTOM_RIGHT ? 0 : undefined,\n borderBottomLeftRadius: corners & Corners.BOTTOM_LEFT ? 0 : undefined,\n textAlign: align,\n },\n disabled: disabled || loading,\n onClick: onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown: onKeyDown,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseOver: onMouseOver,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx({\n [styles.wrap()]: true,\n [styles.wrapArrow()]: arrow === true,\n [styles.wrapArrowLeft()]: arrow === 'left',\n }),\n style: {\n width: width,\n },\n };\n\n let outlineNode = null;\n if (!isFocused || isLink) {\n outlineNode = (\n <div\n className={cx(styles.outline(), {\n [styles.outlineWarning(this.theme)]: warning,\n [styles.outlineError(this.theme)]: error,\n [styles.outlineLink()]: isLink,\n [styles.outlineLinkWarning(this.theme)]: isLink && warning,\n [styles.outlineLinkError(this.theme)]: isLink && error,\n })}\n />\n );\n }\n\n let loadingNode = null;\n if (loading && !icon) {\n loadingNode = <div className={styles.loading()}>{this.getLoadingSpinner()}</div>;\n }\n\n let iconNode = null;\n if (icon) {\n iconNode = (\n <span\n className={cx(styles.icon(), this.getSizeIconClassName(), {\n [styles.iconNoRightPadding()]: !children,\n [styles.iconLink(this.theme)]: isLink,\n })}\n >\n {loading ? this.getLoadingSpinner() : icon}\n </span>\n );\n }\n\n let arrowNode = null;\n if (arrow) {\n arrowNode = (\n <div\n className={cx({\n [styles.arrow()]: true,\n [styles.arrowWarning(this.theme)]: !checked && warning,\n [styles.arrowError(this.theme)]: !checked && error,\n [styles.arrowFocus(this.theme)]: !checked && isFocused,\n [styles.arrowLeft()]: arrow === 'left',\n })}\n >\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperTop)} />\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperBottom)} />\n </div>\n );\n }\n\n // Force disable all props and features, that cannot be use with Link\n if (isLink) {\n rootProps.className = cx({\n [styles.root(this.theme)]: true,\n [sizeClass]: true,\n [styles.link(this.theme)]: true,\n [styles.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n arrowNode = null;\n }\n\n return (\n <CommonWrapper {...this.props}>\n <span {...wrapProps}>\n <button ref={this._ref} {...rootProps}>\n {outlineNode}\n {loadingNode}\n {arrowNode}\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: active || checked,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {iconNode}\n <span className={cx({ [styles.visibilityHidden()]: !!loadingNode })}>{children}</span>\n </div>\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private getLoadingSpinner() {\n return <Spinner caption={null} dimmed type=\"mini\" />;\n }\n\n private getSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), { [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), { [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), { [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge });\n }\n }\n\n private getSizeIconClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(this.theme);\n }\n }\n\n private handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n if (!this.props.disabled && !this.props.disableFocus) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n this.props.onFocus?.(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n this.setState({ focusedByTab: false });\n if (!this.props.disabled && !this.props.disableFocus) {\n this.props.onBlur?.(e);\n }\n };\n\n private _ref = (node: HTMLButtonElement | null) => {\n this.node = node;\n };\n}\n\nexport const isButton = (child: React.ReactChild): child is React.ReactElement<ButtonProps> => {\n return React.isValidElement<ButtonProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__BUTTON__')\n : false;\n};\n"]}
@@ -1,13 +1,12 @@
1
- Button example
1
+ Базовый пример кнопки.
2
2
 
3
3
  ```jsx harmony
4
- import OkIcon from '@skbkontur/react-icons/Ok';
5
4
  import { Button } from '@skbkontur/react-ui';
6
5
 
7
- <Button icon={<OkIcon />}>Ok</Button>;
6
+ <Button>Создать отчёт</Button>;
8
7
  ```
9
8
 
10
- Button has different use styles
9
+ У кнопки есть различные стили.
11
10
 
12
11
  ```jsx harmony
13
12
  import { Gapped } from '@skbkontur/react-ui';
@@ -22,19 +21,32 @@ import { Gapped } from '@skbkontur/react-ui';
22
21
  </Gapped>;
23
22
  ```
24
23
 
25
- Button can have different sizes
24
+ Пример кнопки с иконкой.
26
25
 
27
26
  ```jsx harmony
28
- import { Gapped } from '@skbkontur/react-ui';
27
+ import PrintIcon from '@skbkontur/react-icons/Print';
28
+ import { Button } from '@skbkontur/react-ui';
29
29
 
30
- <Gapped>
31
- <Button size="small">Small</Button>
32
- <Button size="medium">Medium</Button>
33
- <Button size="large">Large</Button>
34
- </Gapped>;
30
+ <Button icon={<PrintIcon />}>Напечатать</Button>;
35
31
  ```
36
32
 
37
- Кнопки-стрелки
33
+ У кнопки есть 3 стандартных размера.
34
+
35
+ ```jsx harmony
36
+ <div
37
+ style={{
38
+ display: "flex",
39
+ alignItems: "end",
40
+ justifyContent: "space-between",
41
+ width: "330px"
42
+ }}>
43
+ <Button size="small">Маленькая</Button>
44
+ <Button size="medium">Средняя</Button>
45
+ <Button size="large">Большая</Button>
46
+ </div>
47
+ ```
48
+
49
+ Кнопки в виде стрелок.
38
50
 
39
51
  ```jsx harmony
40
52
  import { Gapped, Button } from '@skbkontur/react-ui';
@@ -48,25 +60,23 @@ import { Gapped, Button } from '@skbkontur/react-ui';
48
60
  Далее
49
61
  </Button>
50
62
  </Gapped>
51
- <Gapped gap={5}>
52
- <Button arrow="left" size="large">
53
- Назад
54
- </Button>
55
- <Button arrow size="large">
56
- Далее
57
- </Button>
58
- </Gapped>
59
63
  </Gapped>;
60
64
  ```
61
65
 
62
- Кнопка в состоянии загрузки
66
+ Кнопка в состоянии загрузки.
67
+
68
+ **Поведение:**
69
+
70
+ Кнопка на время нахождения в состоянии загрузки отключается.
71
+
72
+ Если в кнопке есть иконка, на время загрузки иконка заменяется на спиннер, если иконки нет - весь контент кнопки заменяется на спиннер.
63
73
 
64
74
  ```jsx harmony
75
+ import { Button, Gapped } from '@skbkontur/react-ui';
65
76
  import OkIcon from '@skbkontur/react-icons/Ok';
66
- import { Button } from '@skbkontur/react-ui';
77
+ import BookmarkIcon from '@skbkontur/react-icons/Bookmark';
67
78
 
68
79
  const [loading, setLoading] = React.useState(false);
69
- const [success, setSuccess] = React.useState(false);
70
80
 
71
81
  const delay = time => args => new Promise(resolve => setTimeout(resolve, time, args));
72
82
 
@@ -74,19 +84,21 @@ const handleLoadingStart = () => {
74
84
  delay(2000)()
75
85
  .then(() => {
76
86
  setLoading(false);
77
- setSuccess(true);
78
87
  })
79
- .then(delay(1000))
80
- .then(() => setSuccess(false));
81
88
  };
82
89
 
83
90
  const handleClick = () => {
84
91
  setLoading(true);
85
- setSuccess(false);
86
92
  handleLoadingStart();
87
93
  };
88
94
 
89
- <Button width={150} onClick={handleClick} loading={loading}>
90
- {success ? <OkIcon /> : 'Сохранить'}
91
- </Button>;
95
+ <Gapped>
96
+ <Button width={150} onClick={handleClick} loading={loading}>
97
+ Сохранить
98
+ </Button>
99
+ <Button icon={<BookmarkIcon />} width={150} onClick={handleClick} loading={loading}>
100
+ Сохранить
101
+ </Button>
102
+ </Gapped>
103
+
92
104
  ```
@@ -8,11 +8,11 @@ export interface CheckboxProps extends CommonProps, Override<React.InputHTMLAttr
8
8
  */
9
9
  children?: React.ReactNode;
10
10
  /**
11
- * Цветовая схема ошибки.
11
+ * Cостояние валидации при ошибке.
12
12
  */
13
13
  error?: boolean;
14
14
  /**
15
- * Цветовая схема предупреждения.
15
+ * Cостояние валидации при предупреждении.
16
16
  */
17
17
  warning?: boolean;
18
18
  /**
@@ -201,10 +201,10 @@ Checkbox = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default
201
201
  _react.default.createElement("span", {
202
202
  className: (0, _Emotion.cx)(_Checkbox.styles.box(_this.theme), _Checkbox.globalClasses.box, (_cx4 = {}, _cx4[
203
203
  _Checkbox.styles.boxChecked(_this.theme)] = props.checked || isIndeterminate, _cx4[
204
+ _Checkbox.styles.boxDisabled(_this.theme)] = props.disabled, _cx4[
204
205
  _Checkbox.styles.boxFocus(_this.theme)] = _this.state.focusedByTab, _cx4[
205
206
  _Checkbox.styles.boxError(_this.theme)] = props.error, _cx4[
206
- _Checkbox.styles.boxWarning(_this.theme)] = props.warning, _cx4[
207
- _Checkbox.styles.boxDisabled(_this.theme)] = props.disabled, _cx4)) },
207
+ _Checkbox.styles.boxWarning(_this.theme)] = props.warning, _cx4)) },
208
208
 
209
209
 
210
210
  isIndeterminate && /*#__PURE__*/_react.default.createElement(_px.SquareIcon, { className: iconClass }) || /*#__PURE__*/_react.default.createElement(_px.OkIcon, { className: iconClass }));
@@ -1 +1 @@
1
- {"version":3,"sources":["Checkbox.tsx"],"names":["Checkbox","state","focusedByTab","indeterminate","props","initialIndeterminate","theme","input","componentDidMount","setIndeterminate","setState","resetIndeterminate","renderMain","error","warning","onMouseEnter","onMouseLeave","onMouseOver","onValueChange","type","rest","isIndeterminate","rootClass","styles","root","rootFallback","isIE11","isEdge","rootChecked","checked","disabled","Boolean","inputProps","className","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","onClick","handleClick","ref","inputRef","caption","children","captionClass","captionIE11","iconClass","iconUnchecked","iconFixBaseline","isFirefox","box","globalClasses","boxChecked","boxFocus","boxError","boxWarning","boxDisabled","e","requestAnimationFrame","keyListener","isTabPressed","event","currentTarget","undefined","UNSAFE_componentWillReceiveProps","nextProps","render","focus","blur","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { OkIcon, SquareIcon } from '../../internal/icons/16px';\nimport { isEdge, isFirefox, isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles, globalClasses } from './Checkbox.styles';\n\nexport interface CheckboxProps\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Контент `label`\n */\n children?: React.ReactNode;\n /**\n * Цветовая схема ошибки.\n */\n error?: boolean;\n /**\n * Цветовая схема предупреждения.\n */\n warning?: boolean;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * Функция, вызываемая при изменении `value`.\n */\n onValueChange?: (value: boolean) => void;\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n /**\n * [Неопределённое состояние](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#attr-indeterminate) чекбокса из HTML.\n */\n initialIndeterminate?: boolean;\n }\n > {}\n\nexport interface CheckboxState {\n focusedByTab: boolean;\n indeterminate: boolean;\n}\n\nexport class Checkbox extends React.Component<CheckboxProps, CheckboxState> {\n public static __KONTUR_REACT_UI__ = 'Checkbox';\n\n public static propTypes = {\n checked: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n warning: PropTypes.bool,\n onValueChange: PropTypes.func,\n onBlur: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n };\n\n public state = {\n focusedByTab: false,\n indeterminate: this.props.initialIndeterminate || false,\n };\n\n private theme!: Theme;\n private input: Nullable<HTMLInputElement>;\n\n public componentDidMount = () => {\n if (this.state.indeterminate && this.input) {\n this.input.indeterminate = true;\n }\n };\n\n public UNSAFE_componentWillReceiveProps(nextProps: CheckboxProps) {\n if (nextProps.checked !== this.props.checked) {\n this.resetIndeterminate();\n }\n }\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 * Программная установка фокуса чекбоксу.\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.input?.focus();\n }\n\n /**\n * Программное снятие фокуса с чекбокса.\n * @public\n */\n public blur() {\n this.input?.blur();\n }\n\n /**\n * Устанавливает чекбокс в HTML-состояние `indeterminate`.\n * @public\n */\n public setIndeterminate = () => {\n this.setState({\n indeterminate: true,\n });\n if (this.input) {\n this.input.indeterminate = true;\n }\n };\n\n /**\n * Снимает с чекбокса HTML-состояние `indeterminate`.\n * @public\n */\n public resetIndeterminate = () => {\n this.setState({\n indeterminate: false,\n });\n if (this.input) {\n this.input.indeterminate = false;\n }\n };\n\n private renderMain = (props: CommonWrapperRestProps<CheckboxProps>) => {\n const {\n error,\n warning,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onValueChange,\n type,\n initialIndeterminate,\n ...rest\n } = props;\n const isIndeterminate = this.state.indeterminate;\n\n const rootClass = cx({\n [styles.root(this.theme)]: true,\n [styles.rootFallback()]: isIE11 || isEdge,\n [styles.rootChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n\n const inputProps = {\n ...rest,\n type: 'checkbox',\n className: styles.input(),\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onClick: this.handleClick,\n ref: this.inputRef,\n };\n\n let caption = null;\n if (this.props.children) {\n const captionClass = cx({\n [styles.caption(this.theme)]: true,\n [styles.captionIE11()]: isIE11 || isEdge,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n caption = <span className={captionClass}>{this.props.children}</span>;\n }\n\n const iconClass = cx({\n [styles.iconUnchecked()]: !props.checked && !isIndeterminate,\n [styles.iconFixBaseline()]: isFirefox || isIE11 || isEdge,\n });\n\n const box = (\n <span\n className={cx(styles.box(this.theme), globalClasses.box, {\n [styles.boxChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.boxFocus(this.theme)]: this.state.focusedByTab,\n [styles.boxError(this.theme)]: props.error,\n [styles.boxWarning(this.theme)]: props.warning,\n [styles.boxDisabled(this.theme)]: props.disabled,\n })}\n >\n {(isIndeterminate && <SquareIcon className={iconClass} />) || <OkIcon className={iconClass} />}\n </span>\n );\n\n return (\n <label className={rootClass} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave} onMouseOver={onMouseOver}>\n <input {...inputProps} />\n {box}\n {caption}\n </label>\n );\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: 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({ focusedByTab: false });\n };\n\n private inputRef = (ref: HTMLInputElement | null) => {\n this.input = ref;\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const checked = event.currentTarget.checked;\n this.props.onValueChange?.(checked);\n\n this.resetIndeterminate();\n\n this.props.onChange?.(event);\n };\n\n private handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n this.props.onClick?.(e);\n // support IE11's and old Edge's special behavior\n // https://github.com/jquery/jquery/issues/1698\n if (this.state.indeterminate && (isIE11 || isEdge)) {\n this.resetIndeterminate();\n // simulate correct behavior only if onValueChange is used\n // because we cant simulate real native onChange event\n if (this.props.onValueChange && this.input) {\n const checked = !this.input.checked;\n\n if (this.props.checked === undefined) {\n // in case of uncontrolled mode\n this.input.checked = checked;\n }\n\n this.props.onValueChange(checked);\n }\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["Checkbox.tsx"],"names":["Checkbox","state","focusedByTab","indeterminate","props","initialIndeterminate","theme","input","componentDidMount","setIndeterminate","setState","resetIndeterminate","renderMain","error","warning","onMouseEnter","onMouseLeave","onMouseOver","onValueChange","type","rest","isIndeterminate","rootClass","styles","root","rootFallback","isIE11","isEdge","rootChecked","checked","disabled","Boolean","inputProps","className","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","onClick","handleClick","ref","inputRef","caption","children","captionClass","captionIE11","iconClass","iconUnchecked","iconFixBaseline","isFirefox","box","globalClasses","boxChecked","boxDisabled","boxFocus","boxError","boxWarning","e","requestAnimationFrame","keyListener","isTabPressed","event","currentTarget","undefined","UNSAFE_componentWillReceiveProps","nextProps","render","focus","blur","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { OkIcon, SquareIcon } from '../../internal/icons/16px';\nimport { isEdge, isFirefox, isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles, globalClasses } from './Checkbox.styles';\n\nexport interface CheckboxProps\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Контент `label`\n */\n children?: React.ReactNode;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * Функция, вызываемая при изменении `value`.\n */\n onValueChange?: (value: boolean) => void;\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n /**\n * [Неопределённое состояние](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#attr-indeterminate) чекбокса из HTML.\n */\n initialIndeterminate?: boolean;\n }\n > {}\n\nexport interface CheckboxState {\n focusedByTab: boolean;\n indeterminate: boolean;\n}\n\nexport class Checkbox extends React.Component<CheckboxProps, CheckboxState> {\n public static __KONTUR_REACT_UI__ = 'Checkbox';\n\n public static propTypes = {\n checked: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n warning: PropTypes.bool,\n onValueChange: PropTypes.func,\n onBlur: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n };\n\n public state = {\n focusedByTab: false,\n indeterminate: this.props.initialIndeterminate || false,\n };\n\n private theme!: Theme;\n private input: Nullable<HTMLInputElement>;\n\n public componentDidMount = () => {\n if (this.state.indeterminate && this.input) {\n this.input.indeterminate = true;\n }\n };\n\n public UNSAFE_componentWillReceiveProps(nextProps: CheckboxProps) {\n if (nextProps.checked !== this.props.checked) {\n this.resetIndeterminate();\n }\n }\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 * Программная установка фокуса чекбоксу.\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.input?.focus();\n }\n\n /**\n * Программное снятие фокуса с чекбокса.\n * @public\n */\n public blur() {\n this.input?.blur();\n }\n\n /**\n * Устанавливает чекбокс в HTML-состояние `indeterminate`.\n * @public\n */\n public setIndeterminate = () => {\n this.setState({\n indeterminate: true,\n });\n if (this.input) {\n this.input.indeterminate = true;\n }\n };\n\n /**\n * Снимает с чекбокса HTML-состояние `indeterminate`.\n * @public\n */\n public resetIndeterminate = () => {\n this.setState({\n indeterminate: false,\n });\n if (this.input) {\n this.input.indeterminate = false;\n }\n };\n\n private renderMain = (props: CommonWrapperRestProps<CheckboxProps>) => {\n const {\n error,\n warning,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onValueChange,\n type,\n initialIndeterminate,\n ...rest\n } = props;\n const isIndeterminate = this.state.indeterminate;\n\n const rootClass = cx({\n [styles.root(this.theme)]: true,\n [styles.rootFallback()]: isIE11 || isEdge,\n [styles.rootChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n\n const inputProps = {\n ...rest,\n type: 'checkbox',\n className: styles.input(),\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onClick: this.handleClick,\n ref: this.inputRef,\n };\n\n let caption = null;\n if (this.props.children) {\n const captionClass = cx({\n [styles.caption(this.theme)]: true,\n [styles.captionIE11()]: isIE11 || isEdge,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n caption = <span className={captionClass}>{this.props.children}</span>;\n }\n\n const iconClass = cx({\n [styles.iconUnchecked()]: !props.checked && !isIndeterminate,\n [styles.iconFixBaseline()]: isFirefox || isIE11 || isEdge,\n });\n\n const box = (\n <span\n className={cx(styles.box(this.theme), globalClasses.box, {\n [styles.boxChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.boxDisabled(this.theme)]: props.disabled,\n [styles.boxFocus(this.theme)]: this.state.focusedByTab,\n [styles.boxError(this.theme)]: props.error,\n [styles.boxWarning(this.theme)]: props.warning,\n })}\n >\n {(isIndeterminate && <SquareIcon className={iconClass} />) || <OkIcon className={iconClass} />}\n </span>\n );\n\n return (\n <label className={rootClass} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave} onMouseOver={onMouseOver}>\n <input {...inputProps} />\n {box}\n {caption}\n </label>\n );\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: 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({ focusedByTab: false });\n };\n\n private inputRef = (ref: HTMLInputElement | null) => {\n this.input = ref;\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const checked = event.currentTarget.checked;\n this.props.onValueChange?.(checked);\n\n this.resetIndeterminate();\n\n this.props.onChange?.(event);\n };\n\n private handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n this.props.onClick?.(e);\n // support IE11's and old Edge's special behavior\n // https://github.com/jquery/jquery/issues/1698\n if (this.state.indeterminate && (isIE11 || isEdge)) {\n this.resetIndeterminate();\n // simulate correct behavior only if onValueChange is used\n // because we cant simulate real native onChange event\n if (this.props.onValueChange && this.input) {\n const checked = !this.input.checked;\n\n if (this.props.checked === undefined) {\n // in case of uncontrolled mode\n this.input.checked = checked;\n }\n\n this.props.onValueChange(checked);\n }\n }\n };\n}\n"]}
@@ -24,6 +24,9 @@ export interface ComboBoxProps<T> extends CommonProps {
24
24
  */
25
25
  disablePortal?: boolean;
26
26
  disabled?: boolean;
27
+ /**
28
+ * Cостояние валидации при ошибке.
29
+ */
27
30
  error?: boolean;
28
31
  leftIcon?: InputIconType;
29
32
  rightIcon?: InputIconType;
@@ -109,6 +112,9 @@ export interface ComboBoxProps<T> extends CommonProps {
109
112
  */
110
113
  valueToString: (item: T) => string;
111
114
  size?: 'small' | 'medium' | 'large';
115
+ /**
116
+ * Cостояние валидации при предупреждении.
117
+ */
112
118
  warning?: boolean;
113
119
  width?: string | number;
114
120
  maxMenuHeight?: number | string;
@@ -156,6 +156,10 @@ var _CustomComboBox = require("../../internal/CustomComboBox");var
156
156
 
157
157
 
158
158
 
159
+
160
+
161
+
162
+
159
163
 
160
164
 
161
165