@skbkontur/react-ui 4.2.2 → 4.3.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 (337) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/cjs/components/Autocomplete/Autocomplete.d.ts +9 -17
  3. package/cjs/components/Autocomplete/Autocomplete.js +10 -6
  4. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  5. package/cjs/components/Button/Button.d.ts +4 -5
  6. package/cjs/components/Button/Button.js +8 -3
  7. package/cjs/components/Button/Button.js.map +1 -1
  8. package/cjs/components/Button/Button.mixins.js +1 -1
  9. package/cjs/components/Button/Button.mixins.js.map +1 -1
  10. package/cjs/components/Button/Button.styles.js +18 -18
  11. package/cjs/components/Button/Button.styles.js.map +1 -1
  12. package/cjs/components/Center/Center.d.ts +4 -3
  13. package/cjs/components/Center/Center.js +9 -3
  14. package/cjs/components/Center/Center.js.map +1 -1
  15. package/cjs/components/ComboBox/ComboBox.d.ts +8 -13
  16. package/cjs/components/ComboBox/ComboBox.js +12 -2
  17. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  18. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +6 -9
  19. package/cjs/components/CurrencyInput/CurrencyInput.js +15 -6
  20. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  21. package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +3 -9
  22. package/cjs/components/CurrencyLabel/CurrencyLabel.js +15 -15
  23. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  24. package/cjs/components/DateInput/DateInput.d.ts +8 -11
  25. package/cjs/components/DateInput/DateInput.js +11 -3
  26. package/cjs/components/DateInput/DateInput.js.map +1 -1
  27. package/cjs/components/DatePicker/DatePicker.d.ts +6 -8
  28. package/cjs/components/DatePicker/DatePicker.js +12 -6
  29. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  30. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +5 -5
  31. package/cjs/components/DropdownMenu/DropdownMenu.js +9 -3
  32. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  33. package/cjs/components/FxInput/FxInput.d.ts +6 -6
  34. package/cjs/components/FxInput/FxInput.js +13 -10
  35. package/cjs/components/FxInput/FxInput.js.map +1 -1
  36. package/cjs/components/Gapped/Gapped.d.ts +7 -8
  37. package/cjs/components/Gapped/Gapped.js +12 -6
  38. package/cjs/components/Gapped/Gapped.js.map +1 -1
  39. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +7 -14
  40. package/cjs/components/GlobalLoader/GlobalLoader.js +13 -9
  41. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  42. package/cjs/components/Hint/Hint.d.ts +7 -11
  43. package/cjs/components/Hint/Hint.js +15 -5
  44. package/cjs/components/Hint/Hint.js.map +1 -1
  45. package/cjs/components/Input/Input.d.ts +4 -3
  46. package/cjs/components/Input/Input.js +7 -4
  47. package/cjs/components/Input/Input.js.map +1 -1
  48. package/cjs/components/Kebab/Kebab.d.ts +7 -11
  49. package/cjs/components/Kebab/Kebab.js +14 -5
  50. package/cjs/components/Kebab/Kebab.js.map +1 -1
  51. package/cjs/components/Link/Link.d.ts +4 -4
  52. package/cjs/components/Link/Link.js +11 -4
  53. package/cjs/components/Link/Link.js.map +1 -1
  54. package/cjs/components/Loader/Loader.d.ts +7 -4
  55. package/cjs/components/Loader/Loader.js +14 -4
  56. package/cjs/components/Loader/Loader.js.map +1 -1
  57. package/cjs/components/Modal/Modal.d.ts +4 -3
  58. package/cjs/components/Modal/Modal.js +8 -3
  59. package/cjs/components/Modal/Modal.js.map +1 -1
  60. package/cjs/components/Paging/Paging.d.ts +6 -9
  61. package/cjs/components/Paging/Paging.js +15 -5
  62. package/cjs/components/Paging/Paging.js.map +1 -1
  63. package/cjs/components/Paging/PagingDefaultComponent.d.ts +1 -1
  64. package/cjs/components/Paging/PagingDefaultComponent.js.map +1 -1
  65. package/cjs/components/PasswordInput/PasswordInput.d.ts +4 -3
  66. package/cjs/components/PasswordInput/PasswordInput.js +8 -3
  67. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  68. package/cjs/components/Radio/Radio.d.ts +4 -3
  69. package/cjs/components/Radio/Radio.js +8 -3
  70. package/cjs/components/Radio/Radio.js.map +1 -1
  71. package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -4
  72. package/cjs/components/RadioGroup/RadioGroup.js +4 -2
  73. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  74. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +6 -7
  75. package/cjs/components/ScrollContainer/ScrollContainer.js +11 -5
  76. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  77. package/cjs/components/Select/Select.d.ts +3 -12
  78. package/cjs/components/Select/Select.js +6 -1
  79. package/cjs/components/Select/Select.js.map +1 -1
  80. package/cjs/components/Select/Select.styles.js +4 -4
  81. package/cjs/components/Select/Select.styles.js.map +1 -1
  82. package/cjs/components/SidePage/SidePage.d.ts +5 -6
  83. package/cjs/components/SidePage/SidePage.js +8 -1
  84. package/cjs/components/SidePage/SidePage.js.map +1 -1
  85. package/cjs/components/Spinner/Spinner.d.ts +4 -2
  86. package/cjs/components/Spinner/Spinner.js +9 -3
  87. package/cjs/components/Spinner/Spinner.js.map +1 -1
  88. package/cjs/components/Sticky/Sticky.d.ts +5 -4
  89. package/cjs/components/Sticky/Sticky.js +9 -2
  90. package/cjs/components/Sticky/Sticky.js.map +1 -1
  91. package/cjs/components/Tabs/Tab.d.ts +4 -4
  92. package/cjs/components/Tabs/Tab.js +11 -13
  93. package/cjs/components/Tabs/Tab.js.map +1 -1
  94. package/cjs/components/Tabs/Tabs.d.ts +4 -4
  95. package/cjs/components/Tabs/Tabs.js +12 -3
  96. package/cjs/components/Tabs/Tabs.js.map +1 -1
  97. package/cjs/components/Textarea/Textarea.d.ts +8 -10
  98. package/cjs/components/Textarea/Textarea.js +10 -6
  99. package/cjs/components/Textarea/Textarea.js.map +1 -1
  100. package/cjs/components/Toggle/Toggle.d.ts +5 -6
  101. package/cjs/components/Toggle/Toggle.js +10 -4
  102. package/cjs/components/Toggle/Toggle.js.map +1 -1
  103. package/cjs/components/TokenInput/TokenInput.d.ts +19 -16
  104. package/cjs/components/TokenInput/TokenInput.js +75 -57
  105. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  106. package/cjs/components/Tooltip/Tooltip.d.ts +10 -14
  107. package/cjs/components/Tooltip/Tooltip.js +23 -12
  108. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  109. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +5 -4
  110. package/cjs/components/TooltipMenu/TooltipMenu.js +11 -5
  111. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  112. package/cjs/internal/BGRuler.d.ts +13 -15
  113. package/cjs/internal/BGRuler.js +16 -8
  114. package/cjs/internal/BGRuler.js.map +1 -1
  115. package/cjs/internal/Calendar/Calendar.d.ts +4 -13
  116. package/cjs/internal/Calendar/Calendar.js +10 -5
  117. package/cjs/internal/Calendar/Calendar.js.map +1 -1
  118. package/cjs/internal/Calendar/DayCellView.styles.js +1 -1
  119. package/cjs/internal/Calendar/DayCellView.styles.js.map +1 -1
  120. package/cjs/internal/Calendar/Month.js +16 -11
  121. package/cjs/internal/Calendar/Month.js.map +1 -1
  122. package/cjs/internal/ComponentCombinator.d.ts +6 -8
  123. package/cjs/internal/ComponentCombinator.js +6 -2
  124. package/cjs/internal/ComponentCombinator.js.map +1 -1
  125. package/cjs/internal/ComponentTable.d.ts +5 -6
  126. package/cjs/internal/ComponentTable.js +11 -2
  127. package/cjs/internal/ComponentTable.js.map +1 -1
  128. package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +4 -4
  129. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +7 -1
  130. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  131. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +4 -12
  132. package/cjs/internal/CustomComboBox/ComboBoxView.js +18 -10
  133. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  134. package/cjs/internal/DateSelect/DateSelect.d.ts +4 -6
  135. package/cjs/internal/DateSelect/DateSelect.js +15 -9
  136. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  137. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +3 -6
  138. package/cjs/internal/DropdownContainer/DropdownContainer.js +8 -5
  139. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  140. package/cjs/internal/InputLikeText/InputLikeText.d.ts +4 -3
  141. package/cjs/internal/InputLikeText/InputLikeText.js +7 -2
  142. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  143. package/cjs/internal/InternalMenu/InternalMenu.d.ts +3 -9
  144. package/cjs/internal/InternalMenu/InternalMenu.js +16 -6
  145. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  146. package/cjs/internal/MaskedInput/MaskedInput.d.ts +4 -2
  147. package/cjs/internal/MaskedInput/MaskedInput.js +7 -2
  148. package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
  149. package/cjs/internal/Menu/Menu.d.ts +4 -7
  150. package/cjs/internal/Menu/Menu.js +7 -1
  151. package/cjs/internal/Menu/Menu.js.map +1 -1
  152. package/cjs/internal/Popup/Popup.d.ts +10 -16
  153. package/cjs/internal/Popup/Popup.js +21 -7
  154. package/cjs/internal/Popup/Popup.js.map +1 -1
  155. package/cjs/internal/PopupMenu/PopupMenu.d.ts +8 -11
  156. package/cjs/internal/PopupMenu/PopupMenu.js +8 -1
  157. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  158. package/cjs/internal/RenderLayer/RenderLayer.d.ts +4 -3
  159. package/cjs/internal/RenderLayer/RenderLayer.js +8 -2
  160. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  161. package/cjs/internal/ThemePlayground/VariableValue.d.ts +5 -4
  162. package/cjs/internal/ThemePlayground/VariableValue.js +6 -1
  163. package/cjs/internal/ThemePlayground/VariableValue.js.map +1 -1
  164. package/cjs/internal/ZIndex/ZIndex.d.ts +7 -11
  165. package/cjs/internal/ZIndex/ZIndex.js +10 -3
  166. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  167. package/cjs/lib/createPropsGetter.d.ts +2 -1
  168. package/cjs/lib/createPropsGetter.js +2 -0
  169. package/cjs/lib/createPropsGetter.js.map +1 -1
  170. package/components/Autocomplete/Autocomplete/Autocomplete.js +22 -12
  171. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  172. package/components/Autocomplete/Autocomplete.d.ts +9 -17
  173. package/components/Button/Button/Button.js +11 -5
  174. package/components/Button/Button/Button.js.map +1 -1
  175. package/components/Button/Button.d.ts +4 -5
  176. package/components/Button/Button.mixins/Button.mixins.js +1 -1
  177. package/components/Button/Button.mixins/Button.mixins.js.map +1 -1
  178. package/components/Button/Button.styles/Button.styles.js +18 -18
  179. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  180. package/components/Center/Center/Center.js +7 -5
  181. package/components/Center/Center/Center.js.map +1 -1
  182. package/components/Center/Center.d.ts +4 -3
  183. package/components/ComboBox/ComboBox/ComboBox.js +3 -1
  184. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  185. package/components/ComboBox/ComboBox.d.ts +8 -13
  186. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +21 -18
  187. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  188. package/components/CurrencyInput/CurrencyInput.d.ts +6 -9
  189. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +21 -15
  190. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  191. package/components/CurrencyLabel/CurrencyLabel.d.ts +3 -9
  192. package/components/DateInput/DateInput/DateInput.js +17 -4
  193. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  194. package/components/DateInput/DateInput.d.ts +8 -11
  195. package/components/DatePicker/DatePicker/DatePicker.js +12 -9
  196. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  197. package/components/DatePicker/DatePicker.d.ts +6 -8
  198. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +8 -2
  199. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  200. package/components/DropdownMenu/DropdownMenu.d.ts +5 -5
  201. package/components/FxInput/FxInput/FxInput.js +11 -9
  202. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  203. package/components/FxInput/FxInput.d.ts +6 -6
  204. package/components/Gapped/Gapped/Gapped.js +17 -8
  205. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  206. package/components/Gapped/Gapped.d.ts +7 -8
  207. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +35 -16
  208. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  209. package/components/GlobalLoader/GlobalLoader.d.ts +7 -14
  210. package/components/Hint/Hint/Hint.js +30 -18
  211. package/components/Hint/Hint/Hint.js.map +1 -1
  212. package/components/Hint/Hint.d.ts +7 -11
  213. package/components/Input/Input/Input.js +9 -7
  214. package/components/Input/Input/Input.js.map +1 -1
  215. package/components/Input/Input.d.ts +4 -3
  216. package/components/Kebab/Kebab/Kebab.js +19 -8
  217. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  218. package/components/Kebab/Kebab.d.ts +7 -11
  219. package/components/Link/Link/Link.js +9 -6
  220. package/components/Link/Link/Link.js.map +1 -1
  221. package/components/Link/Link.d.ts +4 -4
  222. package/components/Loader/Loader/Loader.js +22 -17
  223. package/components/Loader/Loader/Loader.js.map +1 -1
  224. package/components/Loader/Loader.d.ts +7 -4
  225. package/components/Modal/Modal/Modal.js +3 -1
  226. package/components/Modal/Modal/Modal.js.map +1 -1
  227. package/components/Modal/Modal.d.ts +4 -3
  228. package/components/Paging/Paging/Paging.js +24 -14
  229. package/components/Paging/Paging/Paging.js.map +1 -1
  230. package/components/Paging/Paging.d.ts +6 -9
  231. package/components/Paging/PagingDefaultComponent/PagingDefaultComponent.js.map +1 -1
  232. package/components/Paging/PagingDefaultComponent.d.ts +1 -1
  233. package/components/PasswordInput/PasswordInput/PasswordInput.js +7 -5
  234. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  235. package/components/PasswordInput/PasswordInput.d.ts +4 -3
  236. package/components/Radio/Radio/Radio.js +7 -5
  237. package/components/Radio/Radio/Radio.js.map +1 -1
  238. package/components/Radio/Radio.d.ts +4 -3
  239. package/components/RadioGroup/RadioGroup/RadioGroup.js +10 -10
  240. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  241. package/components/RadioGroup/RadioGroup.d.ts +2 -4
  242. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +10 -6
  243. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  244. package/components/ScrollContainer/ScrollContainer.d.ts +6 -7
  245. package/components/Select/Select/Select.js +4 -3
  246. package/components/Select/Select/Select.js.map +1 -1
  247. package/components/Select/Select.d.ts +3 -12
  248. package/components/Select/Select.styles/Select.styles.js +4 -4
  249. package/components/Select/Select.styles/Select.styles.js.map +1 -1
  250. package/components/SidePage/SidePage/SidePage.js +14 -9
  251. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  252. package/components/SidePage/SidePage.d.ts +5 -6
  253. package/components/Spinner/Spinner/Spinner.js +7 -5
  254. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  255. package/components/Spinner/Spinner.d.ts +4 -2
  256. package/components/Sticky/Sticky/Sticky.js +7 -4
  257. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  258. package/components/Sticky/Sticky.d.ts +5 -4
  259. package/components/Tabs/Tab/Tab.js +15 -7
  260. package/components/Tabs/Tab/Tab.js.map +1 -1
  261. package/components/Tabs/Tab.d.ts +4 -4
  262. package/components/Tabs/Tabs/Tabs.js +10 -8
  263. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  264. package/components/Tabs/Tabs.d.ts +4 -4
  265. package/components/Textarea/Textarea/Textarea.js +19 -14
  266. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  267. package/components/Textarea/Textarea.d.ts +8 -10
  268. package/components/Toggle/Toggle/Toggle.js +12 -7
  269. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  270. package/components/Toggle/Toggle.d.ts +5 -6
  271. package/components/TokenInput/TokenInput/TokenInput.js +107 -77
  272. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  273. package/components/TokenInput/TokenInput.d.ts +19 -16
  274. package/components/Tooltip/Tooltip/Tooltip.js +51 -30
  275. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  276. package/components/Tooltip/Tooltip.d.ts +10 -14
  277. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +15 -13
  278. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  279. package/components/TooltipMenu/TooltipMenu.d.ts +5 -4
  280. package/internal/BGRuler/BGRuler.js +11 -6
  281. package/internal/BGRuler/BGRuler.js.map +1 -1
  282. package/internal/BGRuler.d.ts +13 -15
  283. package/internal/Calendar/Calendar/Calendar.js +11 -5
  284. package/internal/Calendar/Calendar/Calendar.js.map +1 -1
  285. package/internal/Calendar/Calendar.d.ts +4 -13
  286. package/internal/Calendar/DayCellView.styles/DayCellView.styles.js +1 -1
  287. package/internal/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
  288. package/internal/Calendar/Month/Month.js +20 -11
  289. package/internal/Calendar/Month/Month.js.map +1 -1
  290. package/internal/ComponentCombinator/ComponentCombinator.js +8 -5
  291. package/internal/ComponentCombinator/ComponentCombinator.js.map +1 -1
  292. package/internal/ComponentCombinator.d.ts +6 -8
  293. package/internal/ComponentTable/ComponentTable.js +16 -4
  294. package/internal/ComponentTable/ComponentTable.js.map +1 -1
  295. package/internal/ComponentTable.d.ts +5 -6
  296. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +4 -2
  297. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  298. package/internal/CustomComboBox/ComboBoxMenu.d.ts +4 -4
  299. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +21 -10
  300. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  301. package/internal/CustomComboBox/ComboBoxView.d.ts +4 -12
  302. package/internal/DateSelect/DateSelect/DateSelect.js +14 -11
  303. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  304. package/internal/DateSelect/DateSelect.d.ts +4 -6
  305. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +6 -10
  306. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  307. package/internal/DropdownContainer/DropdownContainer.d.ts +3 -6
  308. package/internal/InputLikeText/InputLikeText/InputLikeText.js +4 -2
  309. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  310. package/internal/InputLikeText/InputLikeText.d.ts +4 -3
  311. package/internal/InternalMenu/InternalMenu/InternalMenu.js +21 -10
  312. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  313. package/internal/InternalMenu/InternalMenu.d.ts +3 -9
  314. package/internal/MaskedInput/MaskedInput/MaskedInput.js +3 -1
  315. package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  316. package/internal/MaskedInput/MaskedInput.d.ts +4 -2
  317. package/internal/Menu/Menu/Menu.js +10 -3
  318. package/internal/Menu/Menu/Menu.js.map +1 -1
  319. package/internal/Menu/Menu.d.ts +4 -7
  320. package/internal/Popup/Popup/Popup.js +32 -23
  321. package/internal/Popup/Popup/Popup.js.map +1 -1
  322. package/internal/Popup/Popup.d.ts +10 -16
  323. package/internal/PopupMenu/PopupMenu/PopupMenu.js +12 -4
  324. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  325. package/internal/PopupMenu/PopupMenu.d.ts +8 -11
  326. package/internal/RenderLayer/RenderLayer/RenderLayer.js +8 -4
  327. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  328. package/internal/RenderLayer/RenderLayer.d.ts +4 -3
  329. package/internal/ThemePlayground/VariableValue/VariableValue.js +4 -2
  330. package/internal/ThemePlayground/VariableValue/VariableValue.js.map +1 -1
  331. package/internal/ThemePlayground/VariableValue.d.ts +5 -4
  332. package/internal/ZIndex/ZIndex/ZIndex.js +15 -13
  333. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  334. package/internal/ZIndex/ZIndex.d.ts +7 -11
  335. package/lib/createPropsGetter/createPropsGetter.js.map +1 -1
  336. package/lib/createPropsGetter.d.ts +2 -1
  337. package/package.json +2 -2
@@ -8,6 +8,7 @@ var _CommonWrapper = require("../../internal/CommonWrapper");
8
8
  var _Emotion = require("../../lib/theming/Emotion");
9
9
  var _getRootNode = require("../../lib/rootNode/getRootNode");
10
10
  var _rootNode = require("../../lib/rootNode");
11
+ var _createPropsGetter = require("../../lib/createPropsGetter");
11
12
 
12
13
  var _Indicator = require("./Indicator");
13
14
  var _Tabs = require("./Tabs.styles");
@@ -55,14 +56,16 @@ var _Tab = require("./Tab");var _class, _class2, _temp;
55
56
 
56
57
  var TabsDataTids = {
57
58
  root: 'Tabs__root',
58
- indicatorRoot: 'Indicator__root' };
59
+ indicatorRoot: 'Indicator__root' };exports.TabsDataTids = TabsDataTids;
60
+
61
+
59
62
 
60
63
 
61
64
  /**
62
65
  * Tabs wrapper
63
66
  *
64
67
  * contains static property `Tab`
65
- */exports.TabsDataTids = TabsDataTids;var
68
+ */var
66
69
 
67
70
  Tabs = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(Tabs, _React$Component);function Tabs() {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.
68
71
 
@@ -78,6 +81,8 @@ Tabs = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/function
78
81
 
79
82
 
80
83
 
84
+ getProps = (0, _createPropsGetter.createPropsGetter)(Tabs.defaultProps);_this.
85
+
81
86
 
82
87
 
83
88
 
@@ -128,6 +133,10 @@ Tabs = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/function
128
133
 
129
134
 
130
135
 
136
+
137
+
138
+
139
+
131
140
 
132
141
 
133
142
 
@@ -169,4 +178,4 @@ Tabs = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/function
169
178
 
170
179
  removeTab = function (id) {
171
180
  _this.tabs = _this.tabs.filter(function (tab) {return tab.id !== id;});
172
- };return _this;}var _proto = Tabs.prototype;_proto.render = function render() {var _this2 = this;var _this$props2 = this.props,vertical = _this$props2.vertical,value = _this$props2.value,width = _this$props2.width,children = _this$props2.children,indicatorClassName = _this$props2.indicatorClassName;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: _this2.setRootNode }, _this2.props), /*#__PURE__*/_react.default.createElement("div", { "data-tid": TabsDataTids.root, className: (0, _Emotion.cx)(_Tabs.styles.root(_this2.theme), vertical && _Tabs.styles.vertical()), style: { width: width } }, /*#__PURE__*/_react.default.createElement(_TabsContext.TabsContext.Provider, { value: { vertical: vertical, activeTab: value, getTab: _this2.getTab, addTab: _this2.addTab, removeTab: _this2.removeTab, notifyUpdate: _this2.notifyUpdate, shiftFocus: _this2.shiftFocus, switchTab: _this2.switchTab } }, children, /*#__PURE__*/_react.default.createElement(_Indicator.Indicator, { className: indicatorClassName, tabUpdates: _this2.tabUpdates, vertical: vertical }))));});};return Tabs;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Tabs', _class2.propTypes = { children: _propTypes.default.node, indicatorClassName: _propTypes.default.string, value: _propTypes.default.string.isRequired, vertical: _propTypes.default.bool, width: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]) }, _class2.defaultProps = { vertical: false }, _class2.Tab = _Tab.Tab, _temp)) || _class;exports.Tabs = Tabs;
181
+ };return _this;}var _proto = Tabs.prototype;_proto.render = function render() {var _this2 = this;var _this$props2 = this.props,value = _this$props2.value,width = _this$props2.width,children = _this$props2.children,indicatorClassName = _this$props2.indicatorClassName;var vertical = this.getProps().vertical;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: _this2.setRootNode }, _this2.props), /*#__PURE__*/_react.default.createElement("div", { "data-tid": TabsDataTids.root, className: (0, _Emotion.cx)(_Tabs.styles.root(_this2.theme), vertical && _Tabs.styles.vertical()), style: { width: width } }, /*#__PURE__*/_react.default.createElement(_TabsContext.TabsContext.Provider, { value: { vertical: vertical, activeTab: value, getTab: _this2.getTab, addTab: _this2.addTab, removeTab: _this2.removeTab, notifyUpdate: _this2.notifyUpdate, shiftFocus: _this2.shiftFocus, switchTab: _this2.switchTab } }, children, /*#__PURE__*/_react.default.createElement(_Indicator.Indicator, { className: indicatorClassName, tabUpdates: _this2.tabUpdates, vertical: _this2.getProps().vertical }))));});};return Tabs;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Tabs', _class2.propTypes = { children: _propTypes.default.node, indicatorClassName: _propTypes.default.string, value: _propTypes.default.string.isRequired, vertical: _propTypes.default.bool, width: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]) }, _class2.defaultProps = { vertical: false }, _class2.Tab = _Tab.Tab, _temp)) || _class;exports.Tabs = Tabs;
@@ -1 +1 @@
1
- {"version":3,"sources":["Tabs.tsx"],"names":["TabsDataTids","root","indicatorRoot","Tabs","rootNode","tabs","tabUpdates","on","cb","index","listeners","push","splice","shiftFocus","fromTab","delta","findIndex","x","id","newIndex","Math","max","min","length","tab","tabNode","getNode","htmlNode","HTMLElement","focus","notifyUpdate","forEach","switchTab","props","onValueChange","value","getTab","find","addTab","concat","removeTab","filter","render","vertical","width","children","indicatorClassName","theme","setRootNode","styles","activeTab","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","node","string","isRequired","bool","oneOfType","number","defaultProps","Tab"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { emptyHandler } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode } from '../../lib/rootNode/getRootNode';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { Indicator } from './Indicator';\nimport { styles } from './Tabs.styles';\nimport { TabsContext, TabsContextType } from './TabsContext';\nimport { Tab } from './Tab';\n\ntype ValueBaseType = string;\ntype TabType<T extends ValueBaseType> = {\n getNode: () => Tab<T> | null;\n id: T;\n};\n\nexport interface TabsProps<T extends ValueBaseType = string> extends CommonProps {\n /**\n * Tab component should be child of Tabs component\n */\n children?: React.ReactNode;\n\n /**\n * Classname of indicator\n */\n indicatorClassName?: string;\n\n /**\n * Tabs change event\n */\n onValueChange?: (value: T) => void;\n\n /**\n * Active tab identifier\n */\n value: T;\n\n /**\n * Vertical indicator\n * @default false\n */\n vertical: boolean;\n\n /**\n * Width of tabs container\n */\n width?: number | string;\n}\n\nexport const TabsDataTids = {\n root: 'Tabs__root',\n indicatorRoot: 'Indicator__root',\n} as const;\n\n/**\n * Tabs wrapper\n *\n * contains static property `Tab`\n */\n@rootNode\nexport class Tabs<T extends string = string> extends React.Component<TabsProps<T>> {\n public static __KONTUR_REACT_UI__ = 'Tabs';\n\n public static propTypes = {\n children: PropTypes.node,\n indicatorClassName: PropTypes.string,\n value: PropTypes.string.isRequired,\n vertical: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n };\n public static defaultProps = {\n vertical: false,\n };\n\n public static Tab = Tab;\n\n private theme!: Theme;\n\n private tabs: Array<TabType<T>> = [];\n\n private tabUpdates = {\n on: (cb: () => void) => {\n const index = this.listeners.push(cb);\n return () => {\n this.listeners.splice(index, 1);\n };\n },\n };\n\n private listeners: Array<typeof emptyHandler> = [];\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n const { vertical, value, width, children, indicatorClassName } = this.props;\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={TabsDataTids.root}\n className={cx(styles.root(this.theme), vertical && styles.vertical())}\n style={{ width }}\n >\n <TabsContext.Provider\n value={{\n vertical,\n activeTab: value,\n getTab: this.getTab,\n addTab: this.addTab,\n removeTab: this.removeTab,\n notifyUpdate: this.notifyUpdate,\n shiftFocus: this.shiftFocus,\n switchTab: this.switchTab,\n }}\n >\n {children}\n <Indicator className={indicatorClassName} tabUpdates={this.tabUpdates} vertical={vertical} />\n </TabsContext.Provider>\n </div>\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private shiftFocus: TabsContextType<T>['shiftFocus'] = (fromTab, delta) => {\n const { tabs } = this;\n const index = tabs.findIndex((x) => x.id === fromTab);\n const newIndex = Math.max(0, Math.min(index + delta, tabs.length - 1));\n const tab = tabs[newIndex];\n\n const tabNode = tab.getNode();\n const htmlNode = getRootNode(tabNode);\n\n if (htmlNode && htmlNode instanceof HTMLElement && typeof htmlNode.focus === 'function') {\n htmlNode.focus();\n }\n };\n\n private notifyUpdate: TabsContextType<T>['notifyUpdate'] = () => {\n this.listeners.forEach((cb) => cb());\n };\n\n private switchTab: TabsContextType<T>['switchTab'] = (id) => {\n const { onValueChange, value } = this.props;\n if (id !== value && onValueChange) {\n onValueChange(id);\n }\n };\n\n private getTab: TabsContextType<T>['getTab'] = (id) => {\n const { getNode = null } = this.tabs.find((x) => x.id === id) || {};\n return getNode && getNode();\n };\n\n private addTab: TabsContextType<T>['addTab'] = (id, getNode) => {\n this.tabs = this.tabs.concat({ id, getNode });\n };\n\n private removeTab: TabsContextType<T>['removeTab'] = (id) => {\n this.tabs = this.tabs.filter((tab) => tab.id !== id);\n };\n}\n"]}
1
+ {"version":3,"sources":["Tabs.tsx"],"names":["TabsDataTids","root","indicatorRoot","Tabs","rootNode","getProps","defaultProps","tabs","tabUpdates","on","cb","index","listeners","push","splice","shiftFocus","fromTab","delta","findIndex","x","id","newIndex","Math","max","min","length","tab","tabNode","getNode","htmlNode","HTMLElement","focus","notifyUpdate","forEach","switchTab","props","onValueChange","value","getTab","find","addTab","concat","removeTab","filter","render","width","children","indicatorClassName","vertical","theme","setRootNode","styles","activeTab","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","node","string","isRequired","bool","oneOfType","number","Tab"],"mappings":"ucAAA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCO,IAAMA,YAAY,GAAG;AAC1BC,EAAAA,IAAI,EAAE,YADoB;AAE1BC,EAAAA,aAAa,EAAE,iBAFW,EAArB,C;;;;;AAOP;AACA;AACA;AACA;AACA,G;;AAEaC,I,OADZC,kB;;;;;;;;;;;;;;AAeSC,IAAAA,Q,GAAW,0CAAkBF,IAAI,CAACG,YAAvB,C;;;;;;AAMXC,IAAAA,I,GAA0B,E;;AAE1BC,IAAAA,U,GAAa;AACnBC,MAAAA,EAAE,EAAE,YAACC,EAAD,EAAoB;AACtB,YAAMC,KAAK,GAAG,MAAKC,SAAL,CAAeC,IAAf,CAAoBH,EAApB,CAAd;AACA,eAAO,YAAM;AACX,gBAAKE,SAAL,CAAeE,MAAf,CAAsBH,KAAtB,EAA6B,CAA7B;AACD,SAFD;AAGD,OANkB,E;;;AASbC,IAAAA,S,GAAwC,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CxCG,IAAAA,U,GAA+C,UAACC,OAAD,EAAUC,KAAV,EAAoB;AACzE,8EAAQV,IAAR,yBAAQA,IAAR;AACA,UAAMI,KAAK,GAAGJ,IAAI,CAACW,SAAL,CAAe,UAACC,CAAD,UAAOA,CAAC,CAACC,EAAF,KAASJ,OAAhB,EAAf,CAAd;AACA,UAAMK,QAAQ,GAAGC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYD,IAAI,CAACE,GAAL,CAASb,KAAK,GAAGM,KAAjB,EAAwBV,IAAI,CAACkB,MAAL,GAAc,CAAtC,CAAZ,CAAjB;AACA,UAAMC,GAAG,GAAGnB,IAAI,CAACc,QAAD,CAAhB;;AAEA,UAAMM,OAAO,GAAGD,GAAG,CAACE,OAAJ,EAAhB;AACA,UAAMC,QAAQ,GAAG,8BAAYF,OAAZ,CAAjB;;AAEA,UAAIE,QAAQ,IAAIA,QAAQ,YAAYC,WAAhC,IAA+C,OAAOD,QAAQ,CAACE,KAAhB,KAA0B,UAA7E,EAAyF;AACvFF,QAAAA,QAAQ,CAACE,KAAT;AACD;AACF,K;;AAEOC,IAAAA,Y,GAAmD,YAAM;AAC/D,YAAKpB,SAAL,CAAeqB,OAAf,CAAuB,UAACvB,EAAD,UAAQA,EAAE,EAAV,EAAvB;AACD,K;;AAEOwB,IAAAA,S,GAA6C,UAACd,EAAD,EAAQ;AAC3D,wBAAiC,MAAKe,KAAtC,CAAQC,aAAR,eAAQA,aAAR,CAAuBC,KAAvB,eAAuBA,KAAvB;AACA,UAAIjB,EAAE,KAAKiB,KAAP,IAAgBD,aAApB,EAAmC;AACjCA,QAAAA,aAAa,CAAChB,EAAD,CAAb;AACD;AACF,K;;AAEOkB,IAAAA,M,GAAuC,UAAClB,EAAD,EAAQ;AACrD,iBAA2B,MAAKb,IAAL,CAAUgC,IAAV,CAAe,UAACpB,CAAD,UAAOA,CAAC,CAACC,EAAF,KAASA,EAAhB,EAAf,KAAsC,EAAjE,qBAAQQ,OAAR,CAAQA,OAAR,6BAAkB,IAAlB;AACA,aAAOA,OAAO,IAAIA,OAAO,EAAzB;AACD,K;;AAEOY,IAAAA,M,GAAuC,UAACpB,EAAD,EAAKQ,OAAL,EAAiB;AAC9D,YAAKrB,IAAL,GAAY,MAAKA,IAAL,CAAUkC,MAAV,CAAiB,EAAErB,EAAE,EAAFA,EAAF,EAAMQ,OAAO,EAAPA,OAAN,EAAjB,CAAZ;AACD,K;;AAEOc,IAAAA,S,GAA6C,UAACtB,EAAD,EAAQ;AAC3D,YAAKb,IAAL,GAAY,MAAKA,IAAL,CAAUoC,MAAV,CAAiB,UAACjB,GAAD,UAASA,GAAG,CAACN,EAAJ,KAAWA,EAApB,EAAjB,CAAZ;AACD,K,kDA7EMwB,M,GAAP,kBAA6B,mBAC3B,mBAAuD,KAAKT,KAA5D,CAAQE,KAAR,gBAAQA,KAAR,CAAeQ,KAAf,gBAAeA,KAAf,CAAsBC,QAAtB,gBAAsBA,QAAtB,CAAgCC,kBAAhC,gBAAgCA,kBAAhC,CACA,IAAMC,QAAQ,GAAG,KAAK3C,QAAL,GAAgB2C,QAAjC,CACA,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAACC,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,oBACE,6BAAC,4BAAD,2BAAe,WAAW,EAAE,MAAI,CAACC,WAAjC,IAAkD,MAAI,CAACf,KAAvD,gBACE,sCACE,YAAUnC,YAAY,CAACC,IADzB,EAEE,SAAS,EAAE,iBAAGkD,aAAOlD,IAAP,CAAY,MAAI,CAACgD,KAAjB,CAAH,EAA4BD,QAAQ,IAAIG,aAAOH,QAAP,EAAxC,CAFb,EAGE,KAAK,EAAE,EAAEH,KAAK,EAALA,KAAF,EAHT,iBAKE,6BAAC,wBAAD,CAAa,QAAb,IACE,KAAK,EAAE,EACLG,QAAQ,EAARA,QADK,EAELI,SAAS,EAAEf,KAFN,EAGLC,MAAM,EAAE,MAAI,CAACA,MAHR,EAILE,MAAM,EAAE,MAAI,CAACA,MAJR,EAKLE,SAAS,EAAE,MAAI,CAACA,SALX,EAMLV,YAAY,EAAE,MAAI,CAACA,YANd,EAOLjB,UAAU,EAAE,MAAI,CAACA,UAPZ,EAQLmB,SAAS,EAAE,MAAI,CAACA,SARX,EADT,IAYGY,QAZH,eAaE,6BAAC,oBAAD,IACE,SAAS,EAAEC,kBADb,EAEE,UAAU,EAAE,MAAI,CAACvC,UAFnB,EAGE,QAAQ,EAAE,MAAI,CAACH,QAAL,GAAgB2C,QAH5B,GAbF,CALF,CADF,CADF,CA6BD,CAhCH,CADF,CAoCD,C,eAzEkDK,eAAMC,S,WAC3CC,mB,GAAsB,M,UAEtBC,S,GAAY,EACxBV,QAAQ,EAAEW,mBAAUC,IADI,EAExBX,kBAAkB,EAAEU,mBAAUE,MAFN,EAGxBtB,KAAK,EAAEoB,mBAAUE,MAAV,CAAiBC,UAHA,EAIxBZ,QAAQ,EAAES,mBAAUI,IAJI,EAKxBhB,KAAK,EAAEY,mBAAUK,SAAV,CAAoB,CAACL,mBAAUE,MAAX,EAAmBF,mBAAUM,MAA7B,CAApB,CALiB,E,UAOZzD,Y,GAA6B,EACzC0C,QAAQ,EAAE,KAD+B,E,UAM7BgB,G,GAAMA,Q","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { emptyHandler } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode } from '../../lib/rootNode/getRootNode';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { Indicator } from './Indicator';\nimport { styles } from './Tabs.styles';\nimport { TabsContext, TabsContextType } from './TabsContext';\nimport { Tab } from './Tab';\n\ntype ValueBaseType = string;\ntype TabType<T extends ValueBaseType> = {\n getNode: () => Tab<T> | null;\n id: T;\n};\n\nexport interface TabsProps<T extends ValueBaseType = string> extends CommonProps {\n /**\n * Tab component should be child of Tabs component\n */\n children?: React.ReactNode;\n\n /**\n * Classname of indicator\n */\n indicatorClassName?: string;\n\n /**\n * Tabs change event\n */\n onValueChange?: (value: T) => void;\n\n /**\n * Active tab identifier\n */\n value: T;\n\n /**\n * Vertical indicator\n * @default false\n */\n vertical?: boolean;\n\n /**\n * Width of tabs container\n */\n width?: number | string;\n}\n\nexport const TabsDataTids = {\n root: 'Tabs__root',\n indicatorRoot: 'Indicator__root',\n} as const;\n\ntype DefaultProps = Required<Pick<TabsProps, 'vertical'>>;\n\n/**\n * Tabs wrapper\n *\n * contains static property `Tab`\n */\n@rootNode\nexport class Tabs<T extends string = string> extends React.Component<TabsProps<T>> {\n public static __KONTUR_REACT_UI__ = 'Tabs';\n\n public static propTypes = {\n children: PropTypes.node,\n indicatorClassName: PropTypes.string,\n value: PropTypes.string.isRequired,\n vertical: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n };\n public static defaultProps: DefaultProps = {\n vertical: false,\n };\n\n private getProps = createPropsGetter(Tabs.defaultProps);\n\n public static Tab = Tab;\n\n private theme!: Theme;\n\n private tabs: Array<TabType<T>> = [];\n\n private tabUpdates = {\n on: (cb: () => void) => {\n const index = this.listeners.push(cb);\n return () => {\n this.listeners.splice(index, 1);\n };\n },\n };\n\n private listeners: Array<typeof emptyHandler> = [];\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n const { value, width, children, indicatorClassName } = this.props;\n const vertical = this.getProps().vertical;\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={TabsDataTids.root}\n className={cx(styles.root(this.theme), vertical && styles.vertical())}\n style={{ width }}\n >\n <TabsContext.Provider\n value={{\n vertical,\n activeTab: value,\n getTab: this.getTab,\n addTab: this.addTab,\n removeTab: this.removeTab,\n notifyUpdate: this.notifyUpdate,\n shiftFocus: this.shiftFocus,\n switchTab: this.switchTab,\n }}\n >\n {children}\n <Indicator\n className={indicatorClassName}\n tabUpdates={this.tabUpdates}\n vertical={this.getProps().vertical}\n />\n </TabsContext.Provider>\n </div>\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private shiftFocus: TabsContextType<T>['shiftFocus'] = (fromTab, delta) => {\n const { tabs } = this;\n const index = tabs.findIndex((x) => x.id === fromTab);\n const newIndex = Math.max(0, Math.min(index + delta, tabs.length - 1));\n const tab = tabs[newIndex];\n\n const tabNode = tab.getNode();\n const htmlNode = getRootNode(tabNode);\n\n if (htmlNode && htmlNode instanceof HTMLElement && typeof htmlNode.focus === 'function') {\n htmlNode.focus();\n }\n };\n\n private notifyUpdate: TabsContextType<T>['notifyUpdate'] = () => {\n this.listeners.forEach((cb) => cb());\n };\n\n private switchTab: TabsContextType<T>['switchTab'] = (id) => {\n const { onValueChange, value } = this.props;\n if (id !== value && onValueChange) {\n onValueChange(id);\n }\n };\n\n private getTab: TabsContextType<T>['getTab'] = (id) => {\n const { getNode = null } = this.tabs.find((x) => x.id === id) || {};\n return getNode && getNode();\n };\n\n private addTab: TabsContextType<T>['addTab'] = (id, getNode) => {\n this.tabs = this.tabs.concat({ id, getNode });\n };\n\n private removeTab: TabsContextType<T>['removeTab'] = (id) => {\n this.tabs = this.tabs.filter((tab) => tab.id !== id);\n };\n}\n"]}
@@ -21,12 +21,12 @@ export interface TextareaProps extends CommonProps, Override<React.TextareaHTMLA
21
21
  /**
22
22
  * Число строк
23
23
  */
24
- rows: number;
24
+ rows?: number;
25
25
  /**
26
26
  * Максимальное число строк при
27
27
  * автоматическом ресайзе
28
28
  */
29
- maxRows: string | number;
29
+ maxRows?: string | number;
30
30
  /**
31
31
  * Стандартный ресайз
32
32
  * Попадает в `style`
@@ -62,11 +62,11 @@ export interface TextareaProps extends CommonProps, Override<React.TextareaHTMLA
62
62
  /** Добавлять дополнительную свободную строку при авто-ресайзе.
63
63
  * @see https://guides.kontur.ru/components/textarea/#04
64
64
  * */
65
- extraRow: boolean;
65
+ extraRow?: boolean;
66
66
  /** Отключать анимацию при авто-ресайзе.
67
67
  * Автоматически отключается когда в `extraRow` передан `false`.
68
68
  */
69
- disableAnimations: boolean;
69
+ disableAnimations?: boolean;
70
70
  }> {
71
71
  }
72
72
  export interface TextareaState {
@@ -77,6 +77,7 @@ export declare const TextareaDataTids: {
77
77
  readonly root: "Textarea__root";
78
78
  readonly counter: "TextareaCounter__root";
79
79
  };
80
+ declare type DefaultProps = Required<Pick<TextareaProps, 'rows' | 'maxRows' | 'extraRow' | 'disableAnimations'>>;
80
81
  /**
81
82
  * Компонент для ввода многострочного текста.
82
83
  *
@@ -129,12 +130,8 @@ export declare class Textarea extends React.Component<TextareaProps, TextareaSta
129
130
  onPaste: PropTypes.Requireable<(...args: any[]) => any>;
130
131
  onCopy: PropTypes.Requireable<(...args: any[]) => any>;
131
132
  };
132
- static defaultProps: {
133
- rows: number;
134
- maxRows: number;
135
- extraRow: boolean;
136
- disableAnimations: boolean;
137
- };
133
+ static defaultProps: DefaultProps;
134
+ private getProps;
138
135
  state: {
139
136
  needsPolyfillPlaceholder: boolean;
140
137
  isCounterVisible: boolean;
@@ -187,3 +184,4 @@ export declare class Textarea extends React.Component<TextareaProps, TextareaSta
187
184
  private handlePaste;
188
185
  private handleFocus;
189
186
  }
187
+ export {};
@@ -16,6 +16,7 @@ var _CommonWrapper = require("../../internal/CommonWrapper");
16
16
  var _currentEnvironment = require("../../lib/currentEnvironment");
17
17
  var _Emotion = require("../../lib/theming/Emotion");
18
18
  var _rootNode = require("../../lib/rootNode");
19
+ var _createPropsGetter = require("../../lib/createPropsGetter");
19
20
 
20
21
  var _TextareaHelpers = require("./TextareaHelpers");
21
22
  var _Textarea = require("./Textarea.styles");
@@ -113,7 +114,9 @@ var AUTORESIZE_THROTTLE_DEFAULT_WAIT = 100;
113
114
 
114
115
  var TextareaDataTids = {
115
116
  root: 'Textarea__root',
116
- counter: 'TextareaCounter__root' };
117
+ counter: 'TextareaCounter__root' };exports.TextareaDataTids = TextareaDataTids;
118
+
119
+
117
120
 
118
121
 
119
122
  /**
@@ -122,7 +125,7 @@ var TextareaDataTids = {
122
125
  * Принимает все атрибуты `React.TextareaHTMLAttributes<HTMLTextAreaElement>`
123
126
  *
124
127
  * ** `className` и `style` игнорируются**
125
- */exports.TextareaDataTids = TextareaDataTids;var
128
+ */var
126
129
 
127
130
  Textarea = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(Textarea, _React$Component);function Textarea() {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.
128
131
 
@@ -187,6 +190,8 @@ Textarea = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/func
187
190
 
188
191
 
189
192
 
193
+
194
+ getProps = (0, _createPropsGetter.createPropsGetter)(Textarea.defaultProps);_this.
190
195
 
191
196
  state = {
192
197
  needsPolyfillPlaceholder: _needsPolyfillPlaceholder.needsPolyfillPlaceholder,
@@ -286,7 +291,6 @@ Textarea = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/func
286
291
 
287
292
 
288
293
 
289
-
290
294
 
291
295
 
292
296
  setSelectionRange = function (start, end) {
@@ -488,7 +492,7 @@ Textarea = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/func
488
492
  fakeNode.value = node.value;
489
493
  }
490
494
 
491
- var _this$props = _this.props,rows = _this$props.rows,maxRows = _this$props.maxRows,extraRow = _this$props.extraRow;
495
+ var _this$getProps = _this.getProps(),rows = _this$getProps.rows,maxRows = _this$getProps.maxRows;
492
496
  if (rows === undefined || maxRows === undefined) {
493
497
  return;
494
498
  }
@@ -496,7 +500,7 @@ Textarea = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/func
496
500
  node: fakeNode,
497
501
  minRows: typeof rows === 'number' ? rows : parseInt(rows, 10),
498
502
  maxRows: typeof maxRows === 'number' ? maxRows : parseInt(maxRows, 10),
499
- extraRow: extraRow }),height = _getTextAreaHeight.height,exceededMaxHeight = _getTextAreaHeight.exceededMaxHeight;
503
+ extraRow: _this.getProps().extraRow }),height = _getTextAreaHeight.height,exceededMaxHeight = _getTextAreaHeight.exceededMaxHeight;
500
504
 
501
505
  node.style.height = height + 'px';
502
506
  node.style.overflowY = exceededMaxHeight ? 'scroll' : 'hidden';
@@ -542,7 +546,7 @@ Textarea = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/func
542
546
  }
543
547
  };return _this;}var _proto = Textarea.prototype;_proto.getAutoResizeThrottleWait = function getAutoResizeThrottleWait(props) {if (props === void 0) {props = this.props;} // NOTE: При отключении анимации остается эффект дергания при авто-ресайзе из-за троттлинга расчета высоты
544
548
  // Поэтому выставляем таймаут троттла в ноль. Подробности - https://github.com/skbkontur/retail-ui/issues/2120
545
- return this.isAnimationsDisabled(props) ? 0 : AUTORESIZE_THROTTLE_DEFAULT_WAIT;};_proto.isAnimationsDisabled = function isAnimationsDisabled(_temp2) {var _ref2 = _temp2 === void 0 ? this.props : _temp2,disableAnimations = _ref2.disableAnimations,extraRow = _ref2.extraRow;return disableAnimations || !extraRow;};_proto.componentDidMount = function componentDidMount() {if (this.props.autoResize) {this.autoResize();this.layoutEvents = LayoutEvents.addListener(this.autoResize);}if (this.node && this.props.showLengthCounter && this.textareaObserver) {this.textareaObserver.observe(this.node, { attributes: true });}};_proto.componentWillUnmount = function componentWillUnmount() {if (this.layoutEvents) {this.layoutEvents.remove();}if (this.props.showLengthCounter && this.textareaObserver) {this.textareaObserver.disconnect();}this.cancelDelayedSelectAll();};_proto.componentDidUpdate = function componentDidUpdate(prevProps) {if (this.getAutoResizeThrottleWait() !== this.getAutoResizeThrottleWait(prevProps)) {this.autoResize.cancel();this.autoResize = (0, _lodash.default)(this.autoResizeHandler, this.getAutoResizeThrottleWait());}if (this.props.autoResize && (this.props.rows !== prevProps.rows || this.props.maxRows !== prevProps.maxRows || this.props.value !== prevProps.value)) {this.autoResize();}};_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, (0, _extends2.default)({ rootNodeRef: _this2.setRootNode }, _this2.props), _this2.renderMain);});} /**
549
+ return this.isAnimationsDisabled(props) ? 0 : AUTORESIZE_THROTTLE_DEFAULT_WAIT;};_proto.isAnimationsDisabled = function isAnimationsDisabled(_temp2) {var _ref2 = _temp2 === void 0 ? this.props : _temp2,disableAnimations = _ref2.disableAnimations,extraRow = _ref2.extraRow;return disableAnimations || !extraRow;};_proto.componentDidMount = function componentDidMount() {if (this.props.autoResize) {this.autoResize();this.layoutEvents = LayoutEvents.addListener(this.autoResize);}if (this.node && this.props.showLengthCounter && this.textareaObserver) {this.textareaObserver.observe(this.node, { attributes: true });}};_proto.componentWillUnmount = function componentWillUnmount() {if (this.layoutEvents) {this.layoutEvents.remove();}if (this.props.showLengthCounter && this.textareaObserver) {this.textareaObserver.disconnect();}this.cancelDelayedSelectAll();};_proto.componentDidUpdate = function componentDidUpdate(prevProps) {if (this.getAutoResizeThrottleWait() !== this.getAutoResizeThrottleWait(prevProps)) {this.autoResize.cancel();this.autoResize = (0, _lodash.default)(this.autoResizeHandler, this.getAutoResizeThrottleWait());}var _this$getProps2 = this.getProps(),rows = _this$getProps2.rows,maxRows = _this$getProps2.maxRows;if (this.props.autoResize && (rows !== prevProps.rows || maxRows !== prevProps.maxRows || this.props.value !== prevProps.value)) {this.autoResize();}};_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, (0, _extends2.default)({ rootNodeRef: _this2.setRootNode }, _this2.props), _this2.renderMain);});} /**
546
550
  * @public
547
551
  */;_proto.focus = function focus() {if (this.node) {this.node.focus();}} /**
548
552
  * @public
@@ -1 +1 @@
1
- {"version":3,"sources":["Textarea.tsx"],"names":["DEFAULT_WIDTH","AUTORESIZE_THROTTLE_DEFAULT_WAIT","TextareaDataTids","root","counter","Textarea","rootNode","state","needsPolyfillPlaceholder","isCounterVisible","reflowCounter","reflow","selectAllId","textareaObserver","isBrowser","MutationObserver","setSelectionRange","start","end","node","Error","document","activeElement","focus","selectAll","value","length","delaySelectAll","cancelDelayedSelectAll","raf","cancel","renderMain","props","width","error","warning","autoResize","resize","onCut","onPaste","maxRows","onFocus","selectAllOnFocus","placeholder","onValueChange","showLengthCounter","lengthCounter","counterHelp","extraRow","disableAnimations","disabled","textareaProps","rootProps","style","textareaClassNames","styles","textarea","theme","isAnimationsDisabled","textareaStyle","placeholderPolyfill","defaultValue","fakeTextarea","fakeProps","className","fake","readOnly","refFake","maxLength","handleCloseCounterHelp","refCounter","undefined","ref","handleChange","handleCut","handlePaste","handleFocus","handleKeyDown","children","setState","e","toString","isBlockEnter","preventDefault","onKeyDown","fieldIsEmpty","target","onChange","element","fakeNode","autoResizeHandler","rows","minRows","parseInt","height","exceededMaxHeight","overflowY","getAutoResizeThrottleWait","event","isIE11","componentDidMount","layoutEvents","LayoutEvents","addListener","observe","attributes","componentWillUnmount","remove","disconnect","componentDidUpdate","prevProps","render","setRootNode","blur","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","oneOfType","string","number","id","name","title","spellCheck","role","tabIndex","func","onMouseEnter","onMouseLeave","onMouseOver","onMouseMove","onMouseOut","onMouseUp","onMouseDown","onClick","onDoubleClick","onKeyPress","onKeyUp","onInput","onBlur","onScroll","onWheel","onCopy","defaultProps","isTestEnv"],"mappings":"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","sourcesContent":["import React, { ReactNode } from 'react';\nimport PropTypes from 'prop-types';\nimport throttle from 'lodash.throttle';\nimport raf from 'raf';\n\nimport { isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { needsPolyfillPlaceholder } from '../../lib/needsPolyfillPlaceholder';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { ResizeDetector } from '../../internal/ResizeDetector';\nimport { isBrowser, isIE11 } from '../../lib/client';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { getTextAreaHeight } from './TextareaHelpers';\nimport { styles } from './Textarea.styles';\nimport { TextareaCounter, TextareaCounterRef } from './TextareaCounter';\n\nconst DEFAULT_WIDTH = 250;\nconst AUTORESIZE_THROTTLE_DEFAULT_WAIT = 100;\n\nexport interface TextareaProps\n extends CommonProps,\n Override<\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n {\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n /** Не активное состояние */\n disabled?: boolean;\n\n /**\n * Автоматический ресайз\n * в зависимости от содержимого\n */\n autoResize?: boolean;\n /**\n * Число строк\n */\n rows: number;\n /**\n * Максимальное число строк при\n * автоматическом ресайзе\n */\n maxRows: string | number;\n\n /**\n * Стандартный ресайз\n * Попадает в `style`\n */\n resize?: React.CSSProperties['resize'];\n\n /**\n * Ширина\n */\n width?: React.CSSProperties['width'];\n\n /**\n * Вызывается при изменении `value`\n */\n onValueChange?: (value: string) => void;\n\n /** Выделение значения при фокусе */\n selectAllOnFocus?: boolean;\n\n /** Показывать счетчик символов */\n showLengthCounter?: boolean;\n\n /** Допустимое количество символов в поле. Отображается в счетчике.\n * Если не указано, равно `maxLength`\n */\n lengthCounter?: number;\n\n /** Подсказка к счетчику символов.\n *\n * По умолчанию - тултип с содержимым из пропа, если передан`ReactNode`.\n *\n * Передав функцию, можно переопределить подсказку целиком, вместе с иконкой. Например,\n *\n * ```\n * counterHelp={() => <Tooltip render={...}><HelpIcon /></Tooltip>}\n * ```\n * */\n counterHelp?: ReactNode | (() => ReactNode);\n\n /** Добавлять дополнительную свободную строку при авто-ресайзе.\n * @see https://guides.kontur.ru/components/textarea/#04\n * */\n extraRow: boolean;\n\n /** Отключать анимацию при авто-ресайзе.\n * Автоматически отключается когда в `extraRow` передан `false`.\n */\n disableAnimations: boolean;\n }\n > {}\n\nexport interface TextareaState {\n needsPolyfillPlaceholder: boolean;\n isCounterVisible: boolean;\n}\n\nexport const TextareaDataTids = {\n root: 'Textarea__root',\n counter: 'TextareaCounter__root',\n} as const;\n\n/**\n * Компонент для ввода многострочного текста.\n *\n * Принимает все атрибуты `React.TextareaHTMLAttributes<HTMLTextAreaElement>`\n *\n * ** `className` и `style` игнорируются**\n */\n@rootNode\nexport class Textarea extends React.Component<TextareaProps, TextareaState> {\n public static __KONTUR_REACT_UI__ = 'Textarea';\n\n public static propTypes = {\n error: PropTypes.bool,\n warning: PropTypes.bool,\n disabled: PropTypes.bool,\n\n autoResize: PropTypes.bool,\n extraRow: PropTypes.bool,\n disableAnimations: PropTypes.bool,\n maxRows: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n resize: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n id: PropTypes.string,\n name: PropTypes.string,\n title: PropTypes.string,\n spellCheck: PropTypes.bool,\n role: PropTypes.string,\n maxLength: PropTypes.number,\n tabIndex: PropTypes.number,\n rows: PropTypes.number,\n placeholder: PropTypes.string,\n\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n onValueChange: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n onMouseMove: PropTypes.func,\n onMouseOut: PropTypes.func,\n\n onMouseUp: PropTypes.func,\n onMouseDown: PropTypes.func,\n onClick: PropTypes.func,\n onDoubleClick: PropTypes.func,\n\n onKeyDown: PropTypes.func,\n onKeyPress: PropTypes.func,\n onKeyUp: PropTypes.func,\n onInput: PropTypes.func,\n\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n\n onScroll: PropTypes.func,\n onWheel: PropTypes.func,\n\n onCut: PropTypes.func,\n onPaste: PropTypes.func,\n onCopy: PropTypes.func,\n };\n\n public static defaultProps = {\n rows: 3,\n maxRows: 15,\n extraRow: true,\n disableAnimations: isTestEnv,\n };\n\n public state = {\n needsPolyfillPlaceholder,\n isCounterVisible: false,\n };\n private reflowCounter = () => {\n if (this.counter) {\n this.counter.reflow();\n }\n };\n\n private theme!: Theme;\n private selectAllId: number | null = null;\n private node: Nullable<HTMLTextAreaElement>;\n private fakeNode: Nullable<HTMLTextAreaElement>;\n private counter: Nullable<TextareaCounterRef>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private textareaObserver = isBrowser ? new MutationObserver(this.reflowCounter) : null;\n private setRootNode!: TSetRootNode;\n private getAutoResizeThrottleWait(props: TextareaProps = this.props): number {\n // NOTE: При отключении анимации остается эффект дергания при авто-ресайзе из-за троттлинга расчета высоты\n // Поэтому выставляем таймаут троттла в ноль. Подробности - https://github.com/skbkontur/retail-ui/issues/2120\n return this.isAnimationsDisabled(props) ? 0 : AUTORESIZE_THROTTLE_DEFAULT_WAIT;\n }\n private isAnimationsDisabled({ disableAnimations, extraRow }: TextareaProps = this.props): boolean {\n return disableAnimations || !extraRow;\n }\n\n public componentDidMount() {\n if (this.props.autoResize) {\n this.autoResize();\n this.layoutEvents = LayoutEvents.addListener(this.autoResize);\n }\n\n if (this.node && this.props.showLengthCounter && this.textareaObserver) {\n this.textareaObserver.observe(this.node, { attributes: true });\n }\n }\n\n public componentWillUnmount() {\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n if (this.props.showLengthCounter && this.textareaObserver) {\n this.textareaObserver.disconnect();\n }\n this.cancelDelayedSelectAll();\n }\n\n public componentDidUpdate(prevProps: TextareaProps) {\n if (this.getAutoResizeThrottleWait() !== this.getAutoResizeThrottleWait(prevProps)) {\n this.autoResize.cancel();\n this.autoResize = throttle(this.autoResizeHandler, this.getAutoResizeThrottleWait());\n }\n if (\n this.props.autoResize &&\n (this.props.rows !== prevProps.rows ||\n this.props.maxRows !== prevProps.maxRows ||\n this.props.value !== prevProps.value)\n ) {\n this.autoResize();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n if (this.node) {\n this.node.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.node) {\n this.node.blur();\n }\n }\n\n /**\n * @public\n * @param {number} start\n * @param {number} end\n */\n public setSelectionRange = (start: number, end: number) => {\n if (!this.node) {\n throw new Error('Cannot call \"setSelectionRange\" on unmounted Input');\n }\n\n if (document.activeElement !== this.node) {\n this.focus();\n }\n\n this.node.setSelectionRange(start, end);\n };\n\n /**\n * @public\n */\n public selectAll = () => {\n if (this.node) {\n this.setSelectionRange(0, this.node.value.length);\n }\n };\n\n private delaySelectAll = (): number => (this.selectAllId = raf(this.selectAll));\n\n private cancelDelayedSelectAll = (): void => {\n if (this.selectAllId) {\n raf.cancel(this.selectAllId);\n this.selectAllId = null;\n }\n };\n\n private renderMain = (props: CommonWrapperRestProps<TextareaProps>) => {\n const {\n width = DEFAULT_WIDTH,\n error,\n warning,\n autoResize,\n resize,\n onCut,\n onPaste,\n maxRows,\n onFocus,\n selectAllOnFocus,\n placeholder,\n onValueChange,\n showLengthCounter,\n lengthCounter,\n counterHelp,\n extraRow,\n disableAnimations,\n disabled,\n ...textareaProps\n } = props;\n\n const { isCounterVisible } = this.state;\n\n const rootProps = {\n style: {\n width,\n },\n };\n\n const textareaClassNames = cx({\n [styles.textarea(this.theme)]: true,\n [styles.disabled(this.theme)]: disabled,\n [styles.error(this.theme)]: !!error,\n [styles.warning(this.theme)]: !!warning,\n [styles.disableAnimations()]: this.isAnimationsDisabled(),\n });\n\n const textareaStyle = {\n resize: autoResize ? 'none' : resize,\n };\n\n let placeholderPolyfill = null;\n\n if (this.state.needsPolyfillPlaceholder && !textareaProps.value && !textareaProps.defaultValue) {\n placeholderPolyfill = <span className={styles.placeholder()}>{placeholder}</span>;\n }\n\n let fakeTextarea = null;\n if (autoResize) {\n const fakeProps = {\n value: this.props.value,\n defaultValue: this.props.defaultValue,\n className: cx(textareaClassNames, styles.fake()),\n readOnly: true,\n };\n fakeTextarea = <textarea {...fakeProps} ref={this.refFake} />;\n }\n\n const counter = showLengthCounter && isCounterVisible && this.node && (\n <TextareaCounter\n textarea={this.node}\n help={counterHelp}\n value={textareaProps.value}\n length={textareaProps.maxLength ?? lengthCounter ?? 0}\n onCloseHelp={this.handleCloseCounterHelp}\n ref={this.refCounter}\n />\n );\n\n return (\n <RenderLayer\n onFocusOutside={this.handleCloseCounterHelp}\n onClickOutside={this.handleCloseCounterHelp}\n active={this.state.isCounterVisible}\n >\n <label data-tid={TextareaDataTids.root} {...rootProps} className={styles.root(this.theme)}>\n {placeholderPolyfill}\n <ResizeDetector onResize={this.reflowCounter}>\n <textarea\n {...textareaProps}\n className={textareaClassNames}\n style={textareaStyle}\n placeholder={!placeholderPolyfill ? placeholder : undefined}\n ref={this.ref}\n onChange={this.handleChange}\n onCut={this.handleCut}\n onPaste={this.handlePaste}\n onFocus={this.handleFocus}\n onKeyDown={this.handleKeyDown}\n disabled={disabled}\n >\n {this.props.children}\n </textarea>\n </ResizeDetector>\n {fakeTextarea}\n {counter}\n </label>\n </RenderLayer>\n );\n };\n\n private handleCloseCounterHelp = () => this.setState({ isCounterVisible: false });\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n // Edge bug: textarea maxlength doesn't work after new line\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/18833616/\n const value = this.props.value !== undefined ? this.props.value.toString() : null;\n const isBlockEnter = isKeyEnter(e) && value !== null && value.length === this.props.maxLength;\n\n if (isBlockEnter) {\n e.preventDefault();\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (needsPolyfillPlaceholder) {\n const fieldIsEmpty = e.target.value === '';\n\n if (this.state.needsPolyfillPlaceholder !== fieldIsEmpty) {\n this.setState({ needsPolyfillPlaceholder: fieldIsEmpty });\n }\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(e.target.value);\n }\n\n if (this.props.autoResize) {\n this.autoResize();\n }\n\n if (this.props.onChange) {\n this.props.onChange(e);\n }\n\n this.reflowCounter();\n };\n\n private ref = (element: HTMLTextAreaElement) => {\n this.node = element;\n };\n\n private refFake = (element: HTMLTextAreaElement) => {\n this.fakeNode = element;\n };\n\n private refCounter = (ref: TextareaCounterRef | null) => {\n this.counter = ref;\n };\n\n private autoResizeHandler = () => {\n const fakeNode = this.fakeNode;\n if (!fakeNode) {\n return;\n }\n const node = this.node;\n if (!node) {\n return;\n }\n if (this.props.value === undefined) {\n fakeNode.value = node.value;\n }\n\n const { rows, maxRows, extraRow } = this.props;\n if (rows === undefined || maxRows === undefined) {\n return;\n }\n const { height, exceededMaxHeight } = getTextAreaHeight({\n node: fakeNode,\n minRows: typeof rows === 'number' ? rows : parseInt(rows, 10),\n maxRows: typeof maxRows === 'number' ? maxRows : parseInt(maxRows, 10),\n extraRow,\n });\n node.style.height = height + 'px';\n node.style.overflowY = exceededMaxHeight ? 'scroll' : 'hidden';\n fakeNode.style.overflowY = exceededMaxHeight ? 'scroll' : 'hidden';\n };\n\n private autoResize = throttle(this.autoResizeHandler, this.getAutoResizeThrottleWait());\n\n private handleCut = (event: React.ClipboardEvent<HTMLTextAreaElement>) => {\n if (this.props.autoResize) {\n this.autoResize();\n }\n\n if (this.props.onCut) {\n this.props.onCut(event);\n }\n\n this.reflowCounter();\n };\n\n private handlePaste = (event: React.ClipboardEvent<HTMLTextAreaElement>) => {\n if (this.props.autoResize) {\n this.autoResize();\n }\n\n if (this.props.onPaste) {\n this.props.onPaste(event);\n }\n\n this.reflowCounter();\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLTextAreaElement>) => {\n this.setState({ isCounterVisible: true });\n\n if (this.props.selectAllOnFocus) {\n // https://github.com/facebook/react/issues/7769\n this.node && !isIE11 ? this.selectAll() : this.delaySelectAll();\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["Textarea.tsx"],"names":["DEFAULT_WIDTH","AUTORESIZE_THROTTLE_DEFAULT_WAIT","TextareaDataTids","root","counter","Textarea","rootNode","getProps","defaultProps","state","needsPolyfillPlaceholder","isCounterVisible","reflowCounter","reflow","selectAllId","textareaObserver","isBrowser","MutationObserver","setSelectionRange","start","end","node","Error","document","activeElement","focus","selectAll","value","length","delaySelectAll","cancelDelayedSelectAll","raf","cancel","renderMain","props","width","error","warning","autoResize","resize","onCut","onPaste","maxRows","onFocus","selectAllOnFocus","placeholder","onValueChange","showLengthCounter","lengthCounter","counterHelp","extraRow","disableAnimations","disabled","textareaProps","rootProps","style","textareaClassNames","styles","textarea","theme","isAnimationsDisabled","textareaStyle","placeholderPolyfill","defaultValue","fakeTextarea","fakeProps","className","fake","readOnly","refFake","maxLength","handleCloseCounterHelp","refCounter","undefined","ref","handleChange","handleCut","handlePaste","handleFocus","handleKeyDown","children","setState","e","toString","isBlockEnter","preventDefault","onKeyDown","fieldIsEmpty","target","onChange","element","fakeNode","autoResizeHandler","rows","minRows","parseInt","height","exceededMaxHeight","overflowY","getAutoResizeThrottleWait","event","isIE11","componentDidMount","layoutEvents","LayoutEvents","addListener","observe","attributes","componentWillUnmount","remove","disconnect","componentDidUpdate","prevProps","render","setRootNode","blur","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","oneOfType","string","number","id","name","title","spellCheck","role","tabIndex","func","onMouseEnter","onMouseLeave","onMouseOver","onMouseMove","onMouseOut","onMouseUp","onMouseDown","onClick","onDoubleClick","onKeyPress","onKeyUp","onInput","onBlur","onScroll","onWheel","onCopy","isTestEnv"],"mappings":"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","sourcesContent":["import React, { ReactNode } from 'react';\nimport PropTypes from 'prop-types';\nimport throttle from 'lodash.throttle';\nimport raf from 'raf';\n\nimport { isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { needsPolyfillPlaceholder } from '../../lib/needsPolyfillPlaceholder';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { ResizeDetector } from '../../internal/ResizeDetector';\nimport { isBrowser, isIE11 } from '../../lib/client';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { getTextAreaHeight } from './TextareaHelpers';\nimport { styles } from './Textarea.styles';\nimport { TextareaCounter, TextareaCounterRef } from './TextareaCounter';\n\nconst DEFAULT_WIDTH = 250;\nconst AUTORESIZE_THROTTLE_DEFAULT_WAIT = 100;\n\nexport interface TextareaProps\n extends CommonProps,\n Override<\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n {\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n /** Не активное состояние */\n disabled?: boolean;\n\n /**\n * Автоматический ресайз\n * в зависимости от содержимого\n */\n autoResize?: boolean;\n /**\n * Число строк\n */\n rows?: number;\n /**\n * Максимальное число строк при\n * автоматическом ресайзе\n */\n maxRows?: string | number;\n\n /**\n * Стандартный ресайз\n * Попадает в `style`\n */\n resize?: React.CSSProperties['resize'];\n\n /**\n * Ширина\n */\n width?: React.CSSProperties['width'];\n\n /**\n * Вызывается при изменении `value`\n */\n onValueChange?: (value: string) => void;\n\n /** Выделение значения при фокусе */\n selectAllOnFocus?: boolean;\n\n /** Показывать счетчик символов */\n showLengthCounter?: boolean;\n\n /** Допустимое количество символов в поле. Отображается в счетчике.\n * Если не указано, равно `maxLength`\n */\n lengthCounter?: number;\n\n /** Подсказка к счетчику символов.\n *\n * По умолчанию - тултип с содержимым из пропа, если передан`ReactNode`.\n *\n * Передав функцию, можно переопределить подсказку целиком, вместе с иконкой. Например,\n *\n * ```\n * counterHelp={() => <Tooltip render={...}><HelpIcon /></Tooltip>}\n * ```\n * */\n counterHelp?: ReactNode | (() => ReactNode);\n\n /** Добавлять дополнительную свободную строку при авто-ресайзе.\n * @see https://guides.kontur.ru/components/textarea/#04\n * */\n extraRow?: boolean;\n\n /** Отключать анимацию при авто-ресайзе.\n * Автоматически отключается когда в `extraRow` передан `false`.\n */\n disableAnimations?: boolean;\n }\n > {}\n\nexport interface TextareaState {\n needsPolyfillPlaceholder: boolean;\n isCounterVisible: boolean;\n}\n\nexport const TextareaDataTids = {\n root: 'Textarea__root',\n counter: 'TextareaCounter__root',\n} as const;\n\ntype DefaultProps = Required<Pick<TextareaProps, 'rows' | 'maxRows' | 'extraRow' | 'disableAnimations'>>;\n\n/**\n * Компонент для ввода многострочного текста.\n *\n * Принимает все атрибуты `React.TextareaHTMLAttributes<HTMLTextAreaElement>`\n *\n * ** `className` и `style` игнорируются**\n */\n@rootNode\nexport class Textarea extends React.Component<TextareaProps, TextareaState> {\n public static __KONTUR_REACT_UI__ = 'Textarea';\n\n public static propTypes = {\n error: PropTypes.bool,\n warning: PropTypes.bool,\n disabled: PropTypes.bool,\n\n autoResize: PropTypes.bool,\n extraRow: PropTypes.bool,\n disableAnimations: PropTypes.bool,\n maxRows: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n resize: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n id: PropTypes.string,\n name: PropTypes.string,\n title: PropTypes.string,\n spellCheck: PropTypes.bool,\n role: PropTypes.string,\n maxLength: PropTypes.number,\n tabIndex: PropTypes.number,\n rows: PropTypes.number,\n placeholder: PropTypes.string,\n\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n onValueChange: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n onMouseMove: PropTypes.func,\n onMouseOut: PropTypes.func,\n\n onMouseUp: PropTypes.func,\n onMouseDown: PropTypes.func,\n onClick: PropTypes.func,\n onDoubleClick: PropTypes.func,\n\n onKeyDown: PropTypes.func,\n onKeyPress: PropTypes.func,\n onKeyUp: PropTypes.func,\n onInput: PropTypes.func,\n\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n\n onScroll: PropTypes.func,\n onWheel: PropTypes.func,\n\n onCut: PropTypes.func,\n onPaste: PropTypes.func,\n onCopy: PropTypes.func,\n };\n\n public static defaultProps: DefaultProps = {\n rows: 3,\n maxRows: 15,\n extraRow: true,\n disableAnimations: isTestEnv,\n };\n\n private getProps = createPropsGetter(Textarea.defaultProps);\n\n public state = {\n needsPolyfillPlaceholder,\n isCounterVisible: false,\n };\n private reflowCounter = () => {\n if (this.counter) {\n this.counter.reflow();\n }\n };\n\n private theme!: Theme;\n private selectAllId: number | null = null;\n private node: Nullable<HTMLTextAreaElement>;\n private fakeNode: Nullable<HTMLTextAreaElement>;\n private counter: Nullable<TextareaCounterRef>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private textareaObserver = isBrowser ? new MutationObserver(this.reflowCounter) : null;\n private setRootNode!: TSetRootNode;\n private getAutoResizeThrottleWait(props: TextareaProps = this.props): number {\n // NOTE: При отключении анимации остается эффект дергания при авто-ресайзе из-за троттлинга расчета высоты\n // Поэтому выставляем таймаут троттла в ноль. Подробности - https://github.com/skbkontur/retail-ui/issues/2120\n return this.isAnimationsDisabled(props) ? 0 : AUTORESIZE_THROTTLE_DEFAULT_WAIT;\n }\n private isAnimationsDisabled({ disableAnimations, extraRow }: TextareaProps = this.props): boolean {\n return disableAnimations || !extraRow;\n }\n\n public componentDidMount() {\n if (this.props.autoResize) {\n this.autoResize();\n this.layoutEvents = LayoutEvents.addListener(this.autoResize);\n }\n\n if (this.node && this.props.showLengthCounter && this.textareaObserver) {\n this.textareaObserver.observe(this.node, { attributes: true });\n }\n }\n\n public componentWillUnmount() {\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n if (this.props.showLengthCounter && this.textareaObserver) {\n this.textareaObserver.disconnect();\n }\n this.cancelDelayedSelectAll();\n }\n\n public componentDidUpdate(prevProps: TextareaProps) {\n if (this.getAutoResizeThrottleWait() !== this.getAutoResizeThrottleWait(prevProps)) {\n this.autoResize.cancel();\n this.autoResize = throttle(this.autoResizeHandler, this.getAutoResizeThrottleWait());\n }\n const { rows, maxRows } = this.getProps();\n if (\n this.props.autoResize &&\n (rows !== prevProps.rows || maxRows !== prevProps.maxRows || this.props.value !== prevProps.value)\n ) {\n this.autoResize();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n if (this.node) {\n this.node.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.node) {\n this.node.blur();\n }\n }\n\n /**\n * @public\n * @param {number} start\n * @param {number} end\n */\n public setSelectionRange = (start: number, end: number) => {\n if (!this.node) {\n throw new Error('Cannot call \"setSelectionRange\" on unmounted Input');\n }\n\n if (document.activeElement !== this.node) {\n this.focus();\n }\n\n this.node.setSelectionRange(start, end);\n };\n\n /**\n * @public\n */\n public selectAll = () => {\n if (this.node) {\n this.setSelectionRange(0, this.node.value.length);\n }\n };\n\n private delaySelectAll = (): number => (this.selectAllId = raf(this.selectAll));\n\n private cancelDelayedSelectAll = (): void => {\n if (this.selectAllId) {\n raf.cancel(this.selectAllId);\n this.selectAllId = null;\n }\n };\n\n private renderMain = (props: CommonWrapperRestProps<TextareaProps>) => {\n const {\n width = DEFAULT_WIDTH,\n error,\n warning,\n autoResize,\n resize,\n onCut,\n onPaste,\n maxRows,\n onFocus,\n selectAllOnFocus,\n placeholder,\n onValueChange,\n showLengthCounter,\n lengthCounter,\n counterHelp,\n extraRow,\n disableAnimations,\n disabled,\n ...textareaProps\n } = props;\n\n const { isCounterVisible } = this.state;\n\n const rootProps = {\n style: {\n width,\n },\n };\n\n const textareaClassNames = cx({\n [styles.textarea(this.theme)]: true,\n [styles.disabled(this.theme)]: disabled,\n [styles.error(this.theme)]: !!error,\n [styles.warning(this.theme)]: !!warning,\n [styles.disableAnimations()]: this.isAnimationsDisabled(),\n });\n\n const textareaStyle = {\n resize: autoResize ? 'none' : resize,\n };\n\n let placeholderPolyfill = null;\n\n if (this.state.needsPolyfillPlaceholder && !textareaProps.value && !textareaProps.defaultValue) {\n placeholderPolyfill = <span className={styles.placeholder()}>{placeholder}</span>;\n }\n\n let fakeTextarea = null;\n if (autoResize) {\n const fakeProps = {\n value: this.props.value,\n defaultValue: this.props.defaultValue,\n className: cx(textareaClassNames, styles.fake()),\n readOnly: true,\n };\n fakeTextarea = <textarea {...fakeProps} ref={this.refFake} />;\n }\n\n const counter = showLengthCounter && isCounterVisible && this.node && (\n <TextareaCounter\n textarea={this.node}\n help={counterHelp}\n value={textareaProps.value}\n length={textareaProps.maxLength ?? lengthCounter ?? 0}\n onCloseHelp={this.handleCloseCounterHelp}\n ref={this.refCounter}\n />\n );\n\n return (\n <RenderLayer\n onFocusOutside={this.handleCloseCounterHelp}\n onClickOutside={this.handleCloseCounterHelp}\n active={this.state.isCounterVisible}\n >\n <label data-tid={TextareaDataTids.root} {...rootProps} className={styles.root(this.theme)}>\n {placeholderPolyfill}\n <ResizeDetector onResize={this.reflowCounter}>\n <textarea\n {...textareaProps}\n className={textareaClassNames}\n style={textareaStyle}\n placeholder={!placeholderPolyfill ? placeholder : undefined}\n ref={this.ref}\n onChange={this.handleChange}\n onCut={this.handleCut}\n onPaste={this.handlePaste}\n onFocus={this.handleFocus}\n onKeyDown={this.handleKeyDown}\n disabled={disabled}\n >\n {this.props.children}\n </textarea>\n </ResizeDetector>\n {fakeTextarea}\n {counter}\n </label>\n </RenderLayer>\n );\n };\n\n private handleCloseCounterHelp = () => this.setState({ isCounterVisible: false });\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n // Edge bug: textarea maxlength doesn't work after new line\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/18833616/\n const value = this.props.value !== undefined ? this.props.value.toString() : null;\n const isBlockEnter = isKeyEnter(e) && value !== null && value.length === this.props.maxLength;\n\n if (isBlockEnter) {\n e.preventDefault();\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (needsPolyfillPlaceholder) {\n const fieldIsEmpty = e.target.value === '';\n\n if (this.state.needsPolyfillPlaceholder !== fieldIsEmpty) {\n this.setState({ needsPolyfillPlaceholder: fieldIsEmpty });\n }\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(e.target.value);\n }\n\n if (this.props.autoResize) {\n this.autoResize();\n }\n\n if (this.props.onChange) {\n this.props.onChange(e);\n }\n\n this.reflowCounter();\n };\n\n private ref = (element: HTMLTextAreaElement) => {\n this.node = element;\n };\n\n private refFake = (element: HTMLTextAreaElement) => {\n this.fakeNode = element;\n };\n\n private refCounter = (ref: TextareaCounterRef | null) => {\n this.counter = ref;\n };\n\n private autoResizeHandler = () => {\n const fakeNode = this.fakeNode;\n if (!fakeNode) {\n return;\n }\n const node = this.node;\n if (!node) {\n return;\n }\n if (this.props.value === undefined) {\n fakeNode.value = node.value;\n }\n\n const { rows, maxRows } = this.getProps();\n if (rows === undefined || maxRows === undefined) {\n return;\n }\n const { height, exceededMaxHeight } = getTextAreaHeight({\n node: fakeNode,\n minRows: typeof rows === 'number' ? rows : parseInt(rows, 10),\n maxRows: typeof maxRows === 'number' ? maxRows : parseInt(maxRows, 10),\n extraRow: this.getProps().extraRow,\n });\n node.style.height = height + 'px';\n node.style.overflowY = exceededMaxHeight ? 'scroll' : 'hidden';\n fakeNode.style.overflowY = exceededMaxHeight ? 'scroll' : 'hidden';\n };\n\n private autoResize = throttle(this.autoResizeHandler, this.getAutoResizeThrottleWait());\n\n private handleCut = (event: React.ClipboardEvent<HTMLTextAreaElement>) => {\n if (this.props.autoResize) {\n this.autoResize();\n }\n\n if (this.props.onCut) {\n this.props.onCut(event);\n }\n\n this.reflowCounter();\n };\n\n private handlePaste = (event: React.ClipboardEvent<HTMLTextAreaElement>) => {\n if (this.props.autoResize) {\n this.autoResize();\n }\n\n if (this.props.onPaste) {\n this.props.onPaste(event);\n }\n\n this.reflowCounter();\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLTextAreaElement>) => {\n this.setState({ isCounterVisible: true });\n\n if (this.props.selectAllOnFocus) {\n // https://github.com/facebook/react/issues/7769\n this.node && !isIE11 ? this.selectAll() : this.delaySelectAll();\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n}\n"]}
@@ -7,7 +7,7 @@ export interface ToggleProps extends CommonProps {
7
7
  * Положение `children` относительно переключателя.
8
8
  * @default 'right'
9
9
  */
10
- captionPosition: 'left' | 'right';
10
+ captionPosition?: 'left' | 'right';
11
11
  /**
12
12
  * Состояние `тогла`, если `true` - `тогл` будет включён, иначе выключен.
13
13
  * @default false
@@ -71,6 +71,7 @@ export interface ToggleState {
71
71
  export declare const ToggleDataTids: {
72
72
  readonly root: "Toggle__root";
73
73
  };
74
+ declare type DefaultProps = Required<Pick<ToggleProps, 'disabled' | 'loading' | 'captionPosition'>>;
74
75
  /**
75
76
  * _Примечание:_ под тоглом понимается полный компонент т.е. надпись + переключатель, а не просто переключатель.
76
77
  */
@@ -86,11 +87,8 @@ export declare class Toggle extends React.Component<ToggleProps, ToggleState> {
86
87
  onValueChange: PropTypes.Requireable<(...args: any[]) => any>;
87
88
  color: (props: ToggleProps) => void;
88
89
  };
89
- static defaultProps: {
90
- disabled: boolean;
91
- loading: boolean;
92
- captionPosition: string;
93
- };
90
+ static defaultProps: DefaultProps;
91
+ private getProps;
94
92
  private theme;
95
93
  private input;
96
94
  private setRootNode;
@@ -108,3 +106,4 @@ export declare class Toggle extends React.Component<ToggleProps, ToggleState> {
108
106
  private handleBlur;
109
107
  private isUncontrolled;
110
108
  }
109
+ export {};
@@ -8,6 +8,7 @@ var _ThemeContext = require("../../lib/theming/ThemeContext");
8
8
  var _CommonWrapper = require("../../internal/CommonWrapper");
9
9
  var _Emotion = require("../../lib/theming/Emotion");
10
10
  var _rootNode = require("../../lib/rootNode");
11
+ var _createPropsGetter = require("../../lib/createPropsGetter");
11
12
 
12
13
  var _Toggle = require("./Toggle.styles");var _class, _class2, _temp;
13
14
 
@@ -83,12 +84,14 @@ var colorWarningShown = false;
83
84
 
84
85
 
85
86
  var ToggleDataTids = {
86
- root: 'Toggle__root' };
87
+ root: 'Toggle__root' };exports.ToggleDataTids = ToggleDataTids;
88
+
89
+
87
90
 
88
91
 
89
92
  /**
90
93
  * _Примечание:_ под тоглом понимается полный компонент т.е. надпись + переключатель, а не просто переключатель.
91
- */exports.ToggleDataTids = ToggleDataTids;var
94
+ */var
92
95
 
93
96
  Toggle = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(Toggle, _React$Component);
94
97
 
@@ -116,11 +119,13 @@ Toggle = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functi
116
119
 
117
120
 
118
121
 
122
+
123
+
119
124
 
120
125
 
121
126
 
122
127
  function Toggle(props) {var _this;
123
- _this = _React$Component.call(this, props) || this;_this.input = null;_this.
128
+ _this = _React$Component.call(this, props) || this;_this.getProps = (0, _createPropsGetter.createPropsGetter)(Toggle.defaultProps);_this.input = null;_this.
124
129
 
125
130
 
126
131
 
@@ -241,6 +246,7 @@ Toggle = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functi
241
246
 
242
247
 
243
248
 
249
+
244
250
 
245
251
 
246
252
  inputRef = function (element) {
@@ -282,6 +288,6 @@ Toggle = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functi
282
288
 
283
289
  };_this.state = { focusByTab: false, checked: props.defaultChecked };return _this;}var _proto = Toggle.prototype;_proto.componentDidMount = function componentDidMount() {if (this.props.autoFocus) {_keyListener.keyListener.isTabPressed = true;this.focus();}} /**
284
290
  * @public
285
- */;_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.renderMain = function renderMain() {var _cx, _cx2, _cx4, _cx5, _cx6;var _this$props = this.props,children = _this$props.children,captionPosition = _this$props.captionPosition,warning = _this$props.warning,error = _this$props.error,loading = _this$props.loading,color = _this$props.color,id = _this$props.id;var disabled = this.props.disabled || loading;var checked = this.isUncontrolled() ? this.state.checked : this.props.checked;var containerClassNames = (0, _Emotion.cx)(_Toggle.styles.container(this.theme), (_cx = {}, _cx[_Toggle.styles.containerDisabled(this.theme)] = !!disabled, _cx[_Toggle.globalClasses.container] = true, _cx[_Toggle.globalClasses.containerDisabled] = !!disabled, _cx[_Toggle.globalClasses.containerLoading] = loading, _cx));var labelClassNames = (0, _Emotion.cx)(_Toggle.styles.root(this.theme), (_cx2 = {}, _cx2[_Toggle.styles.rootLeft()] = captionPosition === 'left', _cx2[_Toggle.styles.disabled()] = !!disabled, _cx2[_Toggle.globalClasses.disabled] = !!disabled, _cx2));var caption = null;if (children) {var _cx3;var captionClass = (0, _Emotion.cx)(_Toggle.styles.caption(this.theme), (_cx3 = {}, _cx3[_Toggle.styles.captionLeft(this.theme)] = captionPosition === 'left', _cx3[_Toggle.styles.disabledCaption(this.theme)] = !!disabled, _cx3));caption = /*#__PURE__*/_react.default.createElement("span", { className: captionClass }, children);}return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("label", { "data-tid": ToggleDataTids.root, className: labelClassNames }, /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_Toggle.styles.button(this.theme), (_cx4 = {}, _cx4[_Toggle.styles.buttonRight()] = captionPosition === 'left', _cx4[_Toggle.styles.isWarning(this.theme)] = !!warning, _cx4[_Toggle.styles.isError(this.theme)] = !!error, _cx4[_Toggle.styles.focused(this.theme)] = !disabled && !!this.state.focusByTab, _cx4)) }, /*#__PURE__*/_react.default.createElement("input", { type: "checkbox", checked: checked, onChange: this.handleChange, className: _Toggle.styles.input(this.theme), onFocus: this.handleFocus, onBlur: this.handleBlur, ref: this.inputRef, disabled: disabled, id: id }), /*#__PURE__*/_react.default.createElement("div", { className: containerClassNames, style: checked && color && !disabled ? { backgroundColor: color, boxShadow: "inset 0 0 0 1px " + color } : undefined }, /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_Toggle.styles.activeBackground(), _Toggle.globalClasses.background, (_cx5 = {}, _cx5[_Toggle.styles.activeBackgroundLoading(this.theme)] = loading, _cx5[_Toggle.styles.disabledBackground(this.theme)] = disabled, _cx5)), style: checked && color && !disabled ? { backgroundColor: color, boxShadow: "inset 0 0 0 1px " + color } : undefined })), /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_Toggle.styles.handle(this.theme), _Toggle.globalClasses.handle, (_cx6 = {}, _cx6[_Toggle.styles.handleDisabled(this.theme)] = disabled, _cx6)) })), caption));};_proto.isUncontrolled = function isUncontrolled() {
291
+ */;_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.renderMain = function renderMain() {var _cx, _cx2, _cx4, _cx5, _cx6;var _this$props = this.props,children = _this$props.children,warning = _this$props.warning,error = _this$props.error,color = _this$props.color,id = _this$props.id;var _this$getProps = this.getProps(),loading = _this$getProps.loading,captionPosition = _this$getProps.captionPosition;var disabled = this.getProps().disabled || loading;var checked = this.isUncontrolled() ? this.state.checked : this.props.checked;var containerClassNames = (0, _Emotion.cx)(_Toggle.styles.container(this.theme), (_cx = {}, _cx[_Toggle.styles.containerDisabled(this.theme)] = !!disabled, _cx[_Toggle.globalClasses.container] = true, _cx[_Toggle.globalClasses.containerDisabled] = !!disabled, _cx[_Toggle.globalClasses.containerLoading] = loading, _cx));var labelClassNames = (0, _Emotion.cx)(_Toggle.styles.root(this.theme), (_cx2 = {}, _cx2[_Toggle.styles.rootLeft()] = captionPosition === 'left', _cx2[_Toggle.styles.disabled()] = !!disabled, _cx2[_Toggle.globalClasses.disabled] = !!disabled, _cx2));var caption = null;if (children) {var _cx3;var captionClass = (0, _Emotion.cx)(_Toggle.styles.caption(this.theme), (_cx3 = {}, _cx3[_Toggle.styles.captionLeft(this.theme)] = captionPosition === 'left', _cx3[_Toggle.styles.disabledCaption(this.theme)] = !!disabled, _cx3));caption = /*#__PURE__*/_react.default.createElement("span", { className: captionClass }, children);}return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("label", { "data-tid": ToggleDataTids.root, className: labelClassNames }, /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_Toggle.styles.button(this.theme), (_cx4 = {}, _cx4[_Toggle.styles.buttonRight()] = captionPosition === 'left', _cx4[_Toggle.styles.isWarning(this.theme)] = !!warning, _cx4[_Toggle.styles.isError(this.theme)] = !!error, _cx4[_Toggle.styles.focused(this.theme)] = !disabled && !!this.state.focusByTab, _cx4)) }, /*#__PURE__*/_react.default.createElement("input", { type: "checkbox", checked: checked, onChange: this.handleChange, className: _Toggle.styles.input(this.theme), onFocus: this.handleFocus, onBlur: this.handleBlur, ref: this.inputRef, disabled: disabled, id: id }), /*#__PURE__*/_react.default.createElement("div", { className: containerClassNames, style: checked && color && !disabled ? { backgroundColor: color, boxShadow: "inset 0 0 0 1px " + color } : undefined }, /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_Toggle.styles.activeBackground(), _Toggle.globalClasses.background, (_cx5 = {}, _cx5[_Toggle.styles.activeBackgroundLoading(this.theme)] = loading, _cx5[_Toggle.styles.disabledBackground(this.theme)] = disabled, _cx5)), style: checked && color && !disabled ? { backgroundColor: color, boxShadow: "inset 0 0 0 1px " + color } : undefined })), /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_Toggle.styles.handle(this.theme), _Toggle.globalClasses.handle, (_cx6 = {}, _cx6[_Toggle.styles.handleDisabled(this.theme)] = disabled, _cx6)) })), caption));};_proto.isUncontrolled = function isUncontrolled() {
286
292
  return this.props.checked === undefined;
287
293
  };return Toggle;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Toggle', _class2.propTypes = { checked: _propTypes.default.bool, defaultChecked: _propTypes.default.bool, disabled: _propTypes.default.bool, error: _propTypes.default.bool, loading: _propTypes.default.bool, warning: _propTypes.default.bool, onValueChange: _propTypes.default.func, color: function color(props) {if (props.color && !colorWarningShown) {(0, _warning.default)(false, "[Toggle]: prop 'color' is deprecated. Please, use theme variable 'toggleBgChecked' instead. ");colorWarningShown = true;}} }, _class2.defaultProps = { disabled: false, loading: false, captionPosition: 'right' }, _temp)) || _class;exports.Toggle = Toggle;
@@ -1 +1 @@
1
- {"version":3,"sources":["Toggle.tsx"],"names":["colorWarningShown","ToggleDataTids","root","Toggle","rootNode","props","input","focus","keyListener","isTabPressed","inputRef","element","handleChange","event","onValueChange","target","checked","isUncontrolled","setState","onChange","handleFocus","onFocus","focusByTab","handleBlur","onBlur","state","defaultChecked","componentDidMount","autoFocus","render","theme","renderMain","children","captionPosition","warning","error","loading","color","id","disabled","containerClassNames","styles","container","containerDisabled","globalClasses","containerLoading","labelClassNames","rootLeft","caption","captionClass","captionLeft","disabledCaption","setRootNode","button","buttonRight","isWarning","isError","focused","backgroundColor","boxShadow","undefined","activeBackground","background","activeBackgroundLoading","disabledBackground","handle","handleDisabled","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","func","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\n\nimport { keyListener } from '../../lib/events/keyListener';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles, globalClasses } from './Toggle.styles';\n\nlet colorWarningShown = false;\n\nexport interface ToggleProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Положение `children` относительно переключателя.\n * @default 'right'\n */\n captionPosition: 'left' | 'right';\n /**\n * Состояние `тогла`, если `true` - `тогл` будет включён, иначе выключен.\n * @default false\n */\n checked?: boolean;\n /**\n * Делает `тогл` включенным по умолчанию.\n */\n defaultChecked?: boolean;\n /**\n * Отключает `тогл`.\n */\n disabled?: boolean;\n /**\n * Событие вызывающееся, когда значение `тогла` меняется, передаёт текущее значение тогла в переданную функцию.\n */\n onValueChange?: (value: boolean) => void;\n /**\n * Событие вызывающееся при клике на `тогл`.\n */\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n /**\n * Состояние валидации при предупреждении.\n * @default false\n */\n warning?: boolean;\n /**\n * Состояние валидации при ошибке.\n * @default false\n */\n error?: boolean;\n /**\n * Добавляет стили для состояния `loading` и отключает `тогл`.\n */\n loading?: boolean;\n /**\n * Если true, выставляет фокус на `тогле` после загрузки страницы.\n */\n autoFocus?: boolean;\n /**\n * Событие вызывающееся, когда `тогл` получает фокус.\n */\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n /**\n * Событие вызывающееся, когда `тогл` теряет фокус.\n */\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n /**\n * @deprecated используйте переменную темы `toggleBgChecked` вместо этого пропа.\n */\n color?: React.CSSProperties['color'];\n /**\n * HTML-атрибут `id` для передачи во внутренний `<input />`.\n */\n id?: string;\n}\n\nexport interface ToggleState {\n checked?: boolean;\n focusByTab?: boolean;\n}\n\nexport const ToggleDataTids = {\n root: 'Toggle__root',\n} as const;\n\n/**\n * _Примечание:_ под тоглом понимается полный компонент т.е. надпись + переключатель, а не просто переключатель.\n */\n@rootNode\nexport class Toggle extends React.Component<ToggleProps, ToggleState> {\n public static __KONTUR_REACT_UI__ = 'Toggle';\n\n public static propTypes = {\n checked: PropTypes.bool,\n defaultChecked: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n loading: PropTypes.bool,\n warning: PropTypes.bool,\n onValueChange: PropTypes.func,\n color: (props: ToggleProps) => {\n if (props.color && !colorWarningShown) {\n warning(false, `[Toggle]: prop 'color' is deprecated. Please, use theme variable 'toggleBgChecked' instead. `);\n colorWarningShown = true;\n }\n },\n };\n\n public static defaultProps = {\n disabled: false,\n loading: false,\n captionPosition: 'right',\n };\n\n private theme!: Theme;\n private input: HTMLInputElement | null = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: ToggleProps) {\n super(props);\n\n this.state = {\n focusByTab: false,\n checked: props.defaultChecked,\n };\n }\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 if (this.input) {\n keyListener.isTabPressed = true;\n this.input.focus();\n }\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 { children, captionPosition, warning, error, loading, color, id } = this.props;\n const disabled = this.props.disabled || loading;\n const checked = this.isUncontrolled() ? this.state.checked : this.props.checked;\n\n const containerClassNames = cx(styles.container(this.theme), {\n [styles.containerDisabled(this.theme)]: !!disabled,\n [globalClasses.container]: true,\n [globalClasses.containerDisabled]: !!disabled,\n [globalClasses.containerLoading]: loading,\n });\n\n const labelClassNames = cx(styles.root(this.theme), {\n [styles.rootLeft()]: captionPosition === 'left',\n [styles.disabled()]: !!disabled,\n [globalClasses.disabled]: !!disabled,\n });\n\n let caption = null;\n if (children) {\n const captionClass = cx(styles.caption(this.theme), {\n [styles.captionLeft(this.theme)]: captionPosition === 'left',\n [styles.disabledCaption(this.theme)]: !!disabled,\n });\n caption = <span className={captionClass}>{children}</span>;\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <label data-tid={ToggleDataTids.root} className={labelClassNames}>\n <div\n className={cx(styles.button(this.theme), {\n [styles.buttonRight()]: captionPosition === 'left',\n [styles.isWarning(this.theme)]: !!warning,\n [styles.isError(this.theme)]: !!error,\n [styles.focused(this.theme)]: !disabled && !!this.state.focusByTab,\n })}\n >\n <input\n type=\"checkbox\"\n checked={checked}\n onChange={this.handleChange}\n className={styles.input(this.theme)}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n ref={this.inputRef}\n disabled={disabled}\n id={id}\n />\n <div\n className={containerClassNames}\n style={\n checked && color && !disabled\n ? {\n backgroundColor: color,\n boxShadow: `inset 0 0 0 1px ${color}`,\n }\n : undefined\n }\n >\n <div\n className={cx(styles.activeBackground(), globalClasses.background, {\n [styles.activeBackgroundLoading(this.theme)]: loading,\n [styles.disabledBackground(this.theme)]: disabled,\n })}\n style={\n checked && color && !disabled\n ? {\n backgroundColor: color,\n boxShadow: `inset 0 0 0 1px ${color}`,\n }\n : undefined\n }\n />\n </div>\n <div\n className={cx(styles.handle(this.theme), globalClasses.handle, {\n [styles.handleDisabled(this.theme)]: disabled,\n })}\n />\n </div>\n {caption}\n </label>\n </CommonWrapper>\n );\n }\n\n private inputRef = (element: HTMLInputElement) => {\n this.input = element;\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.checked);\n }\n\n if (this.isUncontrolled()) {\n this.setState({\n checked: event.target.checked,\n });\n }\n\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n\n if (keyListener.isTabPressed) {\n this.setState({ focusByTab: true });\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n this.setState({\n focusByTab: false,\n });\n };\n\n private isUncontrolled() {\n return this.props.checked === undefined;\n }\n}\n"]}
1
+ {"version":3,"sources":["Toggle.tsx"],"names":["colorWarningShown","ToggleDataTids","root","Toggle","rootNode","props","getProps","defaultProps","input","focus","keyListener","isTabPressed","inputRef","element","handleChange","event","onValueChange","target","checked","isUncontrolled","setState","onChange","handleFocus","onFocus","focusByTab","handleBlur","onBlur","state","defaultChecked","componentDidMount","autoFocus","render","theme","renderMain","children","warning","error","color","id","loading","captionPosition","disabled","containerClassNames","styles","container","containerDisabled","globalClasses","containerLoading","labelClassNames","rootLeft","caption","captionClass","captionLeft","disabledCaption","setRootNode","button","buttonRight","isWarning","isError","focused","backgroundColor","boxShadow","undefined","activeBackground","background","activeBackgroundLoading","disabledBackground","handle","handleDisabled","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\n\nimport { keyListener } from '../../lib/events/keyListener';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles, globalClasses } from './Toggle.styles';\n\nlet colorWarningShown = false;\n\nexport interface ToggleProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Положение `children` относительно переключателя.\n * @default 'right'\n */\n captionPosition?: 'left' | 'right';\n /**\n * Состояние `тогла`, если `true` - `тогл` будет включён, иначе выключен.\n * @default false\n */\n checked?: boolean;\n /**\n * Делает `тогл` включенным по умолчанию.\n */\n defaultChecked?: boolean;\n /**\n * Отключает `тогл`.\n */\n disabled?: boolean;\n /**\n * Событие вызывающееся, когда значение `тогла` меняется, передаёт текущее значение тогла в переданную функцию.\n */\n onValueChange?: (value: boolean) => void;\n /**\n * Событие вызывающееся при клике на `тогл`.\n */\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n /**\n * Состояние валидации при предупреждении.\n * @default false\n */\n warning?: boolean;\n /**\n * Состояние валидации при ошибке.\n * @default false\n */\n error?: boolean;\n /**\n * Добавляет стили для состояния `loading` и отключает `тогл`.\n */\n loading?: boolean;\n /**\n * Если true, выставляет фокус на `тогле` после загрузки страницы.\n */\n autoFocus?: boolean;\n /**\n * Событие вызывающееся, когда `тогл` получает фокус.\n */\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n /**\n * Событие вызывающееся, когда `тогл` теряет фокус.\n */\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n /**\n * @deprecated используйте переменную темы `toggleBgChecked` вместо этого пропа.\n */\n color?: React.CSSProperties['color'];\n /**\n * HTML-атрибут `id` для передачи во внутренний `<input />`.\n */\n id?: string;\n}\n\nexport interface ToggleState {\n checked?: boolean;\n focusByTab?: boolean;\n}\n\nexport const ToggleDataTids = {\n root: 'Toggle__root',\n} as const;\n\ntype DefaultProps = Required<Pick<ToggleProps, 'disabled' | 'loading' | 'captionPosition'>>;\n\n/**\n * _Примечание:_ под тоглом понимается полный компонент т.е. надпись + переключатель, а не просто переключатель.\n */\n@rootNode\nexport class Toggle extends React.Component<ToggleProps, ToggleState> {\n public static __KONTUR_REACT_UI__ = 'Toggle';\n\n public static propTypes = {\n checked: PropTypes.bool,\n defaultChecked: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n loading: PropTypes.bool,\n warning: PropTypes.bool,\n onValueChange: PropTypes.func,\n color: (props: ToggleProps) => {\n if (props.color && !colorWarningShown) {\n warning(false, `[Toggle]: prop 'color' is deprecated. Please, use theme variable 'toggleBgChecked' instead. `);\n colorWarningShown = true;\n }\n },\n };\n\n public static defaultProps: DefaultProps = {\n disabled: false,\n loading: false,\n captionPosition: 'right',\n };\n\n private getProps = createPropsGetter(Toggle.defaultProps);\n\n private theme!: Theme;\n private input: HTMLInputElement | null = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: ToggleProps) {\n super(props);\n\n this.state = {\n focusByTab: false,\n checked: props.defaultChecked,\n };\n }\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 if (this.input) {\n keyListener.isTabPressed = true;\n this.input.focus();\n }\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 { children, warning, error, color, id } = this.props;\n const { loading, captionPosition } = this.getProps();\n const disabled = this.getProps().disabled || loading;\n const checked = this.isUncontrolled() ? this.state.checked : this.props.checked;\n\n const containerClassNames = cx(styles.container(this.theme), {\n [styles.containerDisabled(this.theme)]: !!disabled,\n [globalClasses.container]: true,\n [globalClasses.containerDisabled]: !!disabled,\n [globalClasses.containerLoading]: loading,\n });\n\n const labelClassNames = cx(styles.root(this.theme), {\n [styles.rootLeft()]: captionPosition === 'left',\n [styles.disabled()]: !!disabled,\n [globalClasses.disabled]: !!disabled,\n });\n\n let caption = null;\n if (children) {\n const captionClass = cx(styles.caption(this.theme), {\n [styles.captionLeft(this.theme)]: captionPosition === 'left',\n [styles.disabledCaption(this.theme)]: !!disabled,\n });\n caption = <span className={captionClass}>{children}</span>;\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <label data-tid={ToggleDataTids.root} className={labelClassNames}>\n <div\n className={cx(styles.button(this.theme), {\n [styles.buttonRight()]: captionPosition === 'left',\n [styles.isWarning(this.theme)]: !!warning,\n [styles.isError(this.theme)]: !!error,\n [styles.focused(this.theme)]: !disabled && !!this.state.focusByTab,\n })}\n >\n <input\n type=\"checkbox\"\n checked={checked}\n onChange={this.handleChange}\n className={styles.input(this.theme)}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n ref={this.inputRef}\n disabled={disabled}\n id={id}\n />\n <div\n className={containerClassNames}\n style={\n checked && color && !disabled\n ? {\n backgroundColor: color,\n boxShadow: `inset 0 0 0 1px ${color}`,\n }\n : undefined\n }\n >\n <div\n className={cx(styles.activeBackground(), globalClasses.background, {\n [styles.activeBackgroundLoading(this.theme)]: loading,\n [styles.disabledBackground(this.theme)]: disabled,\n })}\n style={\n checked && color && !disabled\n ? {\n backgroundColor: color,\n boxShadow: `inset 0 0 0 1px ${color}`,\n }\n : undefined\n }\n />\n </div>\n <div\n className={cx(styles.handle(this.theme), globalClasses.handle, {\n [styles.handleDisabled(this.theme)]: disabled,\n })}\n />\n </div>\n {caption}\n </label>\n </CommonWrapper>\n );\n }\n\n private inputRef = (element: HTMLInputElement) => {\n this.input = element;\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.checked);\n }\n\n if (this.isUncontrolled()) {\n this.setState({\n checked: event.target.checked,\n });\n }\n\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n\n if (keyListener.isTabPressed) {\n this.setState({ focusByTab: true });\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n this.setState({\n focusByTab: false,\n });\n };\n\n private isUncontrolled() {\n return this.props.checked === undefined;\n }\n}\n"]}