@skbkontur/react-ui 6.1.7 → 6.2.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 (229) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/components/Checkbox/Checkbox.d.ts +5 -0
  3. package/components/Checkbox/Checkbox.js +42 -21
  4. package/components/Checkbox/Checkbox.js.map +1 -1
  5. package/components/Checkbox/Checkbox.mixins.d.ts +2 -0
  6. package/components/Checkbox/Checkbox.mixins.js +6 -0
  7. package/components/Checkbox/Checkbox.mixins.js.map +1 -1
  8. package/components/Checkbox/Checkbox.styles.d.ts +7 -0
  9. package/components/Checkbox/Checkbox.styles.js +23 -2
  10. package/components/Checkbox/Checkbox.styles.js.map +1 -1
  11. package/components/FileUploader/FileUploaderFile.js +3 -1
  12. package/components/FileUploader/FileUploaderFile.js.map +1 -1
  13. package/components/FileUploader/locale/locales/en.js +1 -0
  14. package/components/FileUploader/locale/locales/en.js.map +1 -1
  15. package/components/FileUploader/locale/locales/ru.js +1 -0
  16. package/components/FileUploader/locale/locales/ru.js.map +1 -1
  17. package/components/FileUploader/locale/types.d.ts +1 -0
  18. package/components/FileUploader/locale/types.js.map +1 -1
  19. package/components/FxInput/FxInput.d.ts +1 -1
  20. package/components/FxInput/FxInput.js.map +1 -1
  21. package/components/MaskedInput/MaskedInput.d.ts +6 -2
  22. package/components/MaskedInput/MaskedInput.js +10 -126
  23. package/components/MaskedInput/MaskedInput.js.map +1 -1
  24. package/components/MaskedInput/MaskedInputLegacy.d.ts +3 -0
  25. package/components/MaskedInput/MaskedInputLegacy.js +142 -0
  26. package/components/MaskedInput/MaskedInputLegacy.js.map +1 -0
  27. package/components/MaskedInput/index.d.ts +1 -0
  28. package/components/MaskedInput/index.js +1 -0
  29. package/components/MaskedInput/index.js.map +1 -1
  30. package/components/MaskedInputV2/MaskedInputV2.d.ts +62 -0
  31. package/components/MaskedInputV2/MaskedInputV2.helpers.d.ts +9 -0
  32. package/components/MaskedInputV2/MaskedInputV2.helpers.js +17 -0
  33. package/components/MaskedInputV2/MaskedInputV2.helpers.js.map +1 -0
  34. package/components/MaskedInputV2/MaskedInputV2.js +307 -0
  35. package/components/MaskedInputV2/MaskedInputV2.js.map +1 -0
  36. package/components/MaskedInputV2/MaskedInputV2.phone.d.ts +28 -0
  37. package/components/MaskedInputV2/MaskedInputV2.phone.js +38 -0
  38. package/components/MaskedInputV2/MaskedInputV2.phone.js.map +1 -0
  39. package/components/MaskedInputV2/MaskedInputV2.styles.d.ts +7 -0
  40. package/components/MaskedInputV2/MaskedInputV2.styles.js +19 -0
  41. package/components/MaskedInputV2/MaskedInputV2.styles.js.map +1 -0
  42. package/components/MaskedInputV2/index.d.ts +2 -0
  43. package/components/MaskedInputV2/index.js +3 -0
  44. package/components/MaskedInputV2/index.js.map +1 -0
  45. package/components/MaskedInputV2/internal/MaskOverlay.d.ts +19 -0
  46. package/components/MaskedInputV2/internal/MaskOverlay.js +54 -0
  47. package/components/MaskedInputV2/internal/MaskOverlay.js.map +1 -0
  48. package/components/MaskedInputV2/internal/MaskedCore.d.ts +8 -0
  49. package/components/MaskedInputV2/internal/MaskedCore.js +186 -0
  50. package/components/MaskedInputV2/internal/MaskedCore.js.map +1 -0
  51. package/components/MaskedInputV2/internal/MaskedCore.types.d.ts +37 -0
  52. package/components/MaskedInputV2/internal/MaskedCore.types.js +2 -0
  53. package/components/MaskedInputV2/internal/MaskedCore.types.js.map +1 -0
  54. package/components/MaskedInputV2/internal/MaskedInternal.styles.d.ts +15 -0
  55. package/components/MaskedInputV2/internal/MaskedInternal.styles.js +34 -0
  56. package/components/MaskedInputV2/internal/MaskedInternal.styles.js.map +1 -0
  57. package/components/MaskedInputV2/internal/buildSlotMap.d.ts +11 -0
  58. package/components/MaskedInputV2/internal/buildSlotMap.js +37 -0
  59. package/components/MaskedInputV2/internal/buildSlotMap.js.map +1 -0
  60. package/components/MaskedInputV2/internal/computeMaskAlignPadding.d.ts +6 -0
  61. package/components/MaskedInputV2/internal/computeMaskAlignPadding.js +47 -0
  62. package/components/MaskedInputV2/internal/computeMaskAlignPadding.js.map +1 -0
  63. package/components/MaskedInputV2/internal/computePasteMaskedCursor.d.ts +3 -0
  64. package/components/MaskedInputV2/internal/computePasteMaskedCursor.js +11 -0
  65. package/components/MaskedInputV2/internal/computePasteMaskedCursor.js.map +1 -0
  66. package/components/MaskedInputV2/internal/extractRaw.d.ts +10 -0
  67. package/components/MaskedInputV2/internal/extractRaw.js +16 -0
  68. package/components/MaskedInputV2/internal/extractRaw.js.map +1 -0
  69. package/components/MaskedInputV2/internal/findNearestRawLeft.d.ts +10 -0
  70. package/components/MaskedInputV2/internal/findNearestRawLeft.js +18 -0
  71. package/components/MaskedInputV2/internal/findNearestRawLeft.js.map +1 -0
  72. package/components/MaskedInputV2/internal/helpers.d.ts +8 -0
  73. package/components/MaskedInputV2/internal/helpers.js +9 -0
  74. package/components/MaskedInputV2/internal/helpers.js.map +1 -0
  75. package/components/MaskedInputV2/internal/maskedCoreClipboard.d.ts +37 -0
  76. package/components/MaskedInputV2/internal/maskedCoreClipboard.js +52 -0
  77. package/components/MaskedInputV2/internal/maskedCoreClipboard.js.map +1 -0
  78. package/components/MaskedInputV2/internal/maskedCoreDeletion.d.ts +28 -0
  79. package/components/MaskedInputV2/internal/maskedCoreDeletion.js +70 -0
  80. package/components/MaskedInputV2/internal/maskedCoreDeletion.js.map +1 -0
  81. package/components/MaskedInputV2/internal/maskedCoreInputChange.d.ts +38 -0
  82. package/components/MaskedInputV2/internal/maskedCoreInputChange.js +49 -0
  83. package/components/MaskedInputV2/internal/maskedCoreInputChange.js.map +1 -0
  84. package/components/MaskedInputV2/internal/maskedCoreNavigation.d.ts +13 -0
  85. package/components/MaskedInputV2/internal/maskedCoreNavigation.js +79 -0
  86. package/components/MaskedInputV2/internal/maskedCoreNavigation.js.map +1 -0
  87. package/components/MaskedInputV2/internal/measureInputTextWidth.d.ts +2 -0
  88. package/components/MaskedInputV2/internal/measureInputTextWidth.js +30 -0
  89. package/components/MaskedInputV2/internal/measureInputTextWidth.js.map +1 -0
  90. package/components/MaskedInputV2/internal/setMaskInputSelectionRange.d.ts +2 -0
  91. package/components/MaskedInputV2/internal/setMaskInputSelectionRange.js +25 -0
  92. package/components/MaskedInputV2/internal/setMaskInputSelectionRange.js.map +1 -0
  93. package/components/MaskedInputV2/internal/showOverlay.d.ts +3 -0
  94. package/components/MaskedInputV2/internal/showOverlay.js +16 -0
  95. package/components/MaskedInputV2/internal/showOverlay.js.map +1 -0
  96. package/components/MaskedInputV2/internal/stripMaskChars.d.ts +11 -0
  97. package/components/MaskedInputV2/internal/stripMaskChars.js +20 -0
  98. package/components/MaskedInputV2/internal/stripMaskChars.js.map +1 -0
  99. package/components/MaskedInputV2/internal/types.d.ts +74 -0
  100. package/components/MaskedInputV2/internal/types.js +2 -0
  101. package/components/MaskedInputV2/internal/types.js.map +1 -0
  102. package/components/MaskedInputV2/internal/useInputOverflow.d.ts +4 -0
  103. package/components/MaskedInputV2/internal/useInputOverflow.js +34 -0
  104. package/components/MaskedInputV2/internal/useInputOverflow.js.map +1 -0
  105. package/components/MaskedInputV2/internal/useMaskAlignPadding.d.ts +2 -0
  106. package/components/MaskedInputV2/internal/useMaskAlignPadding.js +33 -0
  107. package/components/MaskedInputV2/internal/useMaskAlignPadding.js.map +1 -0
  108. package/components/MaskedInputV2/internal/useMaskEngine.d.ts +42 -0
  109. package/components/MaskedInputV2/internal/useMaskEngine.js +128 -0
  110. package/components/MaskedInputV2/internal/useMaskEngine.js.map +1 -0
  111. package/components/MaskedInputV2/internal/useMaskedCoreHandlers.d.ts +34 -0
  112. package/components/MaskedInputV2/internal/useMaskedCoreHandlers.js +335 -0
  113. package/components/MaskedInputV2/internal/useMaskedCoreHandlers.js.map +1 -0
  114. package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.d.ts +16 -0
  115. package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.js +59 -0
  116. package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.js.map +1 -0
  117. package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.d.ts +20 -0
  118. package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.js +106 -0
  119. package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.js.map +1 -0
  120. package/components/MaskedInputV2/react-imask/imask/controls/input-history.d.ts +17 -0
  121. package/components/MaskedInputV2/react-imask/imask/controls/input-history.js +49 -0
  122. package/components/MaskedInputV2/react-imask/imask/controls/input-history.js.map +1 -0
  123. package/components/MaskedInputV2/react-imask/imask/controls/input.d.ts +95 -0
  124. package/components/MaskedInputV2/react-imask/imask/controls/input.js +420 -0
  125. package/components/MaskedInputV2/react-imask/imask/controls/input.js.map +1 -0
  126. package/components/MaskedInputV2/react-imask/imask/controls/mask-element.d.ts +30 -0
  127. package/components/MaskedInputV2/react-imask/imask/controls/mask-element.js +59 -0
  128. package/components/MaskedInputV2/react-imask/imask/controls/mask-element.js.map +1 -0
  129. package/components/MaskedInputV2/react-imask/imask/core/action-details.d.ts +30 -0
  130. package/components/MaskedInputV2/react-imask/imask/core/action-details.js +100 -0
  131. package/components/MaskedInputV2/react-imask/imask/core/action-details.js.map +1 -0
  132. package/components/MaskedInputV2/react-imask/imask/core/change-details.d.ts +20 -0
  133. package/components/MaskedInputV2/react-imask/imask/core/change-details.js +46 -0
  134. package/components/MaskedInputV2/react-imask/imask/core/change-details.js.map +1 -0
  135. package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.d.ts +21 -0
  136. package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.js +52 -0
  137. package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.js.map +1 -0
  138. package/components/MaskedInputV2/react-imask/imask/core/holder.d.ts +34 -0
  139. package/components/MaskedInputV2/react-imask/imask/core/holder.js +38 -0
  140. package/components/MaskedInputV2/react-imask/imask/core/holder.js.map +1 -0
  141. package/components/MaskedInputV2/react-imask/imask/core/tail-details.d.ts +20 -0
  142. package/components/MaskedInputV2/react-imask/imask/core/tail-details.js +2 -0
  143. package/components/MaskedInputV2/react-imask/imask/core/tail-details.js.map +1 -0
  144. package/components/MaskedInputV2/react-imask/imask/core/utils.d.ts +24 -0
  145. package/components/MaskedInputV2/react-imask/imask/core/utils.js +100 -0
  146. package/components/MaskedInputV2/react-imask/imask/core/utils.js.map +1 -0
  147. package/components/MaskedInputV2/react-imask/imask/imask.d.ts +5 -0
  148. package/components/MaskedInputV2/react-imask/imask/imask.js +7 -0
  149. package/components/MaskedInputV2/react-imask/imask/imask.js.map +1 -0
  150. package/components/MaskedInputV2/react-imask/imask/index.d.ts +17 -0
  151. package/components/MaskedInputV2/react-imask/imask/index.js +16 -0
  152. package/components/MaskedInputV2/react-imask/imask/index.js.map +1 -0
  153. package/components/MaskedInputV2/react-imask/imask/masked/base.d.ts +114 -0
  154. package/components/MaskedInputV2/react-imask/imask/masked/base.js +411 -0
  155. package/components/MaskedInputV2/react-imask/imask/masked/base.js.map +1 -0
  156. package/components/MaskedInputV2/react-imask/imask/masked/create.d.ts +14 -0
  157. package/components/MaskedInputV2/react-imask/imask/masked/create.js +11 -0
  158. package/components/MaskedInputV2/react-imask/imask/masked/create.js.map +1 -0
  159. package/components/MaskedInputV2/react-imask/imask/masked/factory.d.ts +62 -0
  160. package/components/MaskedInputV2/react-imask/imask/masked/factory.js +107 -0
  161. package/components/MaskedInputV2/react-imask/imask/masked/factory.js.map +1 -0
  162. package/components/MaskedInputV2/react-imask/imask/masked/pattern.d.ts +101 -0
  163. package/components/MaskedInputV2/react-imask/imask/masked/pattern.js +549 -0
  164. package/components/MaskedInputV2/react-imask/imask/masked/pattern.js.map +1 -0
  165. package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.d.ts +30 -0
  166. package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.js +2 -0
  167. package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.js.map +1 -0
  168. package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.d.ts +20 -0
  169. package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.js +182 -0
  170. package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.js.map +1 -0
  171. package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.d.ts +31 -0
  172. package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.js +163 -0
  173. package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.js.map +1 -0
  174. package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.d.ts +42 -0
  175. package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.js +158 -0
  176. package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.js.map +1 -0
  177. package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.d.ts +56 -0
  178. package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.js +185 -0
  179. package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.js.map +1 -0
  180. package/components/MaskedInputV2/react-imask/imask/masked/regexp.d.ts +17 -0
  181. package/components/MaskedInputV2/react-imask/imask/masked/regexp.js +36 -0
  182. package/components/MaskedInputV2/react-imask/imask/masked/regexp.js.map +1 -0
  183. package/components/MaskedInputV2/react-imask/index.d.ts +3 -0
  184. package/components/MaskedInputV2/react-imask/index.js +4 -0
  185. package/components/MaskedInputV2/react-imask/index.js.map +1 -0
  186. package/components/MaskedInputV2/react-imask/input.d.ts +8 -0
  187. package/components/MaskedInputV2/react-imask/input.js +35 -0
  188. package/components/MaskedInputV2/react-imask/input.js.map +1 -0
  189. package/components/MaskedInputV2/react-imask/mixin.d.ts +31 -0
  190. package/components/MaskedInputV2/react-imask/mixin.js +246 -0
  191. package/components/MaskedInputV2/react-imask/mixin.js.map +1 -0
  192. package/components/Radio/Radio.d.ts +4 -0
  193. package/components/Radio/Radio.js +20 -1
  194. package/components/Radio/Radio.js.map +1 -1
  195. package/components/Radio/Radio.mixins.d.ts +2 -0
  196. package/components/Radio/Radio.mixins.js +6 -0
  197. package/components/Radio/Radio.mixins.js.map +1 -1
  198. package/components/Radio/Radio.styles.d.ts +6 -0
  199. package/components/Radio/Radio.styles.js +22 -4
  200. package/components/Radio/Radio.styles.js.map +1 -1
  201. package/components/Toggle/Toggle.d.ts +5 -0
  202. package/components/Toggle/Toggle.js +46 -22
  203. package/components/Toggle/Toggle.js.map +1 -1
  204. package/components/Toggle/Toggle.mixins.d.ts +2 -0
  205. package/components/Toggle/Toggle.mixins.js +6 -0
  206. package/components/Toggle/Toggle.mixins.js.map +1 -1
  207. package/components/Toggle/Toggle.styles.d.ts +9 -0
  208. package/components/Toggle/Toggle.styles.js +29 -2
  209. package/components/Toggle/Toggle.styles.js.map +1 -1
  210. package/internal/themes/BasicTheme.d.ts +32 -1
  211. package/internal/themes/BasicTheme.js +164 -1
  212. package/internal/themes/BasicTheme.js.map +1 -1
  213. package/internal/themes/DarkTheme6_0.js +1 -0
  214. package/internal/themes/DarkTheme6_0.js.map +1 -1
  215. package/lib/events/keyboard/KeyboardEventCodes.d.ts +2 -0
  216. package/lib/events/keyboard/KeyboardEventCodes.js +2 -0
  217. package/lib/events/keyboard/KeyboardEventCodes.js.map +1 -1
  218. package/lib/events/keyboard/KeyboardMapKeys.js +2 -0
  219. package/lib/events/keyboard/KeyboardMapKeys.js.map +1 -1
  220. package/lib/events/keyboard/identifiers.d.ts +2 -0
  221. package/lib/events/keyboard/identifiers.js +6 -0
  222. package/lib/events/keyboard/identifiers.js.map +1 -1
  223. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
  224. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +1 -0
  225. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  226. package/lib/utils.d.ts +2 -1
  227. package/lib/utils.js +7 -4
  228. package/lib/utils.js.map +1 -1
  229. package/package.json +4 -1
@@ -0,0 +1,246 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
+ extendStatics(d, b);
12
+ function __() { this.constructor = d; }
13
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
+ };
15
+ })();
16
+ var __assign = (this && this.__assign) || function () {
17
+ __assign = Object.assign || function(t) {
18
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
19
+ s = arguments[i];
20
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
21
+ t[p] = s[p];
22
+ }
23
+ return t;
24
+ };
25
+ return __assign.apply(this, arguments);
26
+ };
27
+ var __rest = (this && this.__rest) || function (s, e) {
28
+ var t = {};
29
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
30
+ t[p] = s[p];
31
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
32
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
33
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
34
+ t[p[i]] = s[p[i]];
35
+ }
36
+ return t;
37
+ };
38
+ import React from 'react';
39
+ import { IMask } from './imask/core/holder.js';
40
+ var MASK_PROPS_NAMES = [
41
+ // common
42
+ 'mask',
43
+ 'unmask',
44
+ 'prepare',
45
+ 'prepareChar',
46
+ 'validate',
47
+ 'commit',
48
+ 'overwrite',
49
+ 'eager',
50
+ 'skipInvalid',
51
+ 'autofix',
52
+ // events
53
+ 'onAccept',
54
+ 'onComplete',
55
+ // pattern
56
+ 'placeholderChar',
57
+ 'displayChar',
58
+ 'lazy',
59
+ 'definitions',
60
+ 'blocks',
61
+ // ref
62
+ 'inputRef',
63
+ ];
64
+ var NON_MASK_OPTIONS_NAMES = ['value', 'unmask', 'onAccept', 'onComplete', 'inputRef'];
65
+ var MASK_OPTIONS_NAMES = MASK_PROPS_NAMES.filter(function (pName) { return NON_MASK_OPTIONS_NAMES.indexOf(pName) < 0; });
66
+ export function IMaskMixin(ComposedComponent) {
67
+ var MaskedComponent = /** @class */ (function (_super) {
68
+ __extends(class_1, _super);
69
+ function class_1(props) {
70
+ var _this = _super.call(this, props) || this;
71
+ _this._inputRef = _this._inputRef.bind(_this);
72
+ _this.prevMaskProp = props.mask;
73
+ _this.prevUnmaskProp = props.unmask;
74
+ return _this;
75
+ }
76
+ class_1.prototype.componentDidMount = function () {
77
+ if (!this.props.mask) {
78
+ return;
79
+ }
80
+ this.initMask();
81
+ };
82
+ class_1.prototype.componentDidUpdate = function () {
83
+ var _a, _b, _c, _d;
84
+ var props = this.props;
85
+ var maskOptions = this._extractMaskOptionsFromProps(props);
86
+ if (maskOptions.mask) {
87
+ if (this.maskRef) {
88
+ var maskPropChanged = this.prevMaskProp !== props.mask || this.prevUnmaskProp !== props.unmask;
89
+ var elementAsUnknown = this.element;
90
+ var isNativeInputField = elementAsUnknown instanceof HTMLInputElement || elementAsUnknown instanceof HTMLTextAreaElement;
91
+ var shouldKeepSelection = maskPropChanged && isNativeInputField && document.activeElement === this.element;
92
+ var prevSelection_1 = shouldKeepSelection
93
+ ? {
94
+ start: (_a = this.element.selectionStart) !== null && _a !== void 0 ? _a : 0,
95
+ end: (_b = this.element.selectionEnd) !== null && _b !== void 0 ? _b : 0,
96
+ direction: (_c = this.element.selectionDirection) !== null && _c !== void 0 ? _c : 'none',
97
+ }
98
+ : null;
99
+ this.maskRef.updateOptions(maskOptions);
100
+ if ('value' in props && props.value !== undefined) {
101
+ var nextValue = props.value;
102
+ if (this.maskValue !== nextValue) {
103
+ this.maskValue = nextValue;
104
+ }
105
+ }
106
+ if (prevSelection_1 && isNativeInputField) {
107
+ var inputElement_1 = this.element;
108
+ var restoreSelection = function () {
109
+ if (!inputElement_1.isConnected) {
110
+ return;
111
+ }
112
+ var valueLength = inputElement_1.value.length;
113
+ var nextStart = Math.min(prevSelection_1.start, valueLength);
114
+ var nextEnd = Math.min(prevSelection_1.end, valueLength);
115
+ inputElement_1.setSelectionRange(nextStart, nextEnd, prevSelection_1.direction);
116
+ };
117
+ restoreSelection();
118
+ setTimeout(restoreSelection, 0);
119
+ }
120
+ }
121
+ else {
122
+ this.initMask(maskOptions);
123
+ }
124
+ }
125
+ else {
126
+ this.destroyMask();
127
+ if ('value' in props && props.value !== undefined) {
128
+ if (((_d = this.element) === null || _d === void 0 ? void 0 : _d.isContentEditable) &&
129
+ this.element.tagName !== 'INPUT' &&
130
+ this.element.tagName !== 'TEXTAREA') {
131
+ this.element.textContent = props.value;
132
+ }
133
+ else {
134
+ this.element.value = props.value;
135
+ }
136
+ }
137
+ }
138
+ // Keep prev props in sync for next update
139
+ this.prevMaskProp = this.props.mask;
140
+ this.prevUnmaskProp = this.props.unmask;
141
+ };
142
+ class_1.prototype.componentWillUnmount = function () {
143
+ this.destroyMask();
144
+ };
145
+ class_1.prototype._inputRef = function (el) {
146
+ this.element = el;
147
+ if (this.props.inputRef) {
148
+ if (Object.prototype.hasOwnProperty.call(this.props.inputRef, 'current')) {
149
+ this.props.inputRef.current = el;
150
+ }
151
+ else {
152
+ this.props.inputRef(el);
153
+ }
154
+ }
155
+ };
156
+ class_1.prototype.initMask = function (maskOptions) {
157
+ if (maskOptions === void 0) { maskOptions = this._extractMaskOptionsFromProps(this.props); }
158
+ // eslint-disable-next-line new-cap
159
+ this.maskRef = IMask(this.element, maskOptions)
160
+ .on('accept', this._onAccept.bind(this))
161
+ .on('complete', this._onComplete.bind(this));
162
+ if ('value' in this.props && this.props.value !== undefined) {
163
+ this.maskValue = this.props.value;
164
+ }
165
+ };
166
+ class_1.prototype.destroyMask = function () {
167
+ if (this.maskRef) {
168
+ this.maskRef.destroy();
169
+ delete this.maskRef;
170
+ }
171
+ };
172
+ class_1.prototype._extractMaskOptionsFromProps = function (props) {
173
+ var cloneProps = __rest(props, []);
174
+ // keep only mask options
175
+ Object.keys(cloneProps)
176
+ .filter(function (prop) { return MASK_OPTIONS_NAMES.indexOf(prop) < 0; })
177
+ .forEach(function (nonMaskProp) {
178
+ delete cloneProps[nonMaskProp];
179
+ });
180
+ return cloneProps;
181
+ };
182
+ class_1.prototype._extractNonMaskProps = function (props) {
183
+ var cloneProps = __rest(props, []);
184
+ MASK_PROPS_NAMES.forEach(function (maskProp) {
185
+ delete cloneProps[maskProp];
186
+ });
187
+ if (!('defaultValue' in cloneProps)) {
188
+ cloneProps.defaultValue = props.mask ? '' : cloneProps.value;
189
+ }
190
+ delete cloneProps.value;
191
+ return cloneProps;
192
+ };
193
+ Object.defineProperty(class_1.prototype, "maskValue", {
194
+ get: function () {
195
+ if (!this.maskRef) {
196
+ return '';
197
+ }
198
+ if (this.props.unmask === 'typed') {
199
+ return this.maskRef.typedValue;
200
+ }
201
+ if (this.props.unmask) {
202
+ return this.maskRef.unmaskedValue;
203
+ }
204
+ return this.maskRef.value;
205
+ },
206
+ set: function (value) {
207
+ if (!this.maskRef) {
208
+ return;
209
+ }
210
+ // eslint-disable-next-line no-param-reassign, eqeqeq
211
+ value = (value == null && this.props.unmask !== 'typed' ? '' : value);
212
+ if (this.props.unmask === 'typed') {
213
+ this.maskRef.typedValue = value;
214
+ }
215
+ else if (this.props.unmask) {
216
+ this.maskRef.unmaskedValue = value;
217
+ }
218
+ else {
219
+ this.maskRef.value = value;
220
+ }
221
+ },
222
+ enumerable: false,
223
+ configurable: true
224
+ });
225
+ class_1.prototype._onAccept = function (e) {
226
+ if (this.props.onAccept && this.maskRef) {
227
+ this.props.onAccept(this.maskValue, this.maskRef, e);
228
+ }
229
+ };
230
+ class_1.prototype._onComplete = function (e) {
231
+ if (this.props.onComplete && this.maskRef) {
232
+ this.props.onComplete(this.maskValue, this.maskRef, e);
233
+ }
234
+ };
235
+ class_1.prototype.render = function () {
236
+ return React.createElement(ComposedComponent, __assign(__assign({}, this._extractNonMaskProps(this.props)), { inputRef: this._inputRef }));
237
+ };
238
+ return class_1;
239
+ }(React.Component));
240
+ var nestedComponentName = ComposedComponent.displayName || ComposedComponent.name || 'Component';
241
+ MaskedComponent.displayName = "IMask(".concat(nestedComponentName, ")");
242
+ return React.forwardRef(function (props, ref) {
243
+ return React.createElement(MaskedComponent, __assign(__assign({}, props), { ref: ref }));
244
+ });
245
+ }
246
+ //# sourceMappingURL=mixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mixin.js","sourceRoot":"","sources":["mixin.ts"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { IMask } from './imask/core/holder.js';\nimport { type InputMask, type InputMaskElement, type FactoryOpts, type UpdateOpts } from './imask/index.js';\nimport { type MaskedPatternOptions } from './imask/masked/pattern.js';\n\ntype AnyProps = Record<string, unknown>;\n\nexport type Falsy = false | 0 | '' | null | undefined;\n\n// Плоский (не union) тип для публичного API — устраняет union-распределение в JSX.\n// Опирается только на MaskedPatternOptions, т.к. проект использует исключительно строковые маски.\nexport type ReactMaskOpts = MaskedPatternOptions & { unmask?: 'typed' | boolean };\n\nexport type UnmaskValue<Opts extends ReactMaskOpts> = Opts['unmask'] extends 'typed'\n ? InputMask<Opts>['typedValue']\n : Opts['unmask'] extends Falsy\n ? InputMask<Opts>['value']\n : InputMask<Opts>['unmaskedValue'];\n\nexport type ExtractReactMaskOpts<\n MaskElement extends InputMaskElement,\n Props extends IMaskInputProps<MaskElement>,\n> = Extract<Props, ReactMaskOpts>;\n\nexport interface ReactMaskProps<\n MaskElement extends InputMaskElement,\n Props extends IMaskInputProps<MaskElement> = AnyProps,\n> {\n onAccept?: (\n value: UnmaskValue<ExtractReactMaskOpts<MaskElement, Props>>,\n maskRef: InputMask<ExtractMaskOpts<MaskElement, Props>>,\n e?: InputEvent,\n ) => void;\n onComplete?: (\n value: UnmaskValue<ExtractReactMaskOpts<MaskElement, Props>>,\n maskRef: InputMask<ExtractMaskOpts<MaskElement, Props>>,\n e?: InputEvent,\n ) => void;\n unmask?: ExtractReactMaskOpts<MaskElement, Props>['unmask'];\n value?: UnmaskValue<ExtractReactMaskOpts<MaskElement, Props>>;\n inputRef?: React.Ref<MaskElement>;\n ref?: React.Ref<React.ComponentType<Props>>;\n}\n\nconst MASK_PROPS_NAMES = [\n // common\n 'mask',\n 'unmask',\n 'prepare',\n 'prepareChar',\n 'validate',\n 'commit',\n 'overwrite',\n 'eager',\n 'skipInvalid',\n 'autofix',\n\n // events\n 'onAccept',\n 'onComplete',\n\n // pattern\n 'placeholderChar',\n 'displayChar',\n 'lazy',\n 'definitions',\n 'blocks',\n\n // ref\n 'inputRef',\n] as const;\nconst NON_MASK_OPTIONS_NAMES = ['value', 'unmask', 'onAccept', 'onComplete', 'inputRef'] as const;\n\nexport type ReactElementProps<MaskElement extends InputMaskElement> = Omit<\n React.HTMLProps<MaskElement>,\n (typeof MASK_PROPS_NAMES)[number] | 'value' | (typeof NON_MASK_OPTIONS_NAMES)[number] | 'ref'\n>;\n\ntype NonMaskProps<MaskElement extends InputMaskElement, Props extends IMaskMixinProps<MaskElement> = AnyProps> = Omit<\n Props,\n keyof FactoryOpts\n>;\n\nexport type ReactMixinComponent<\n MaskElement extends InputMaskElement,\n Props extends IMaskMixinProps<MaskElement> = AnyProps,\n> = React.ComponentType<\n ReactElementProps<MaskElement> & { inputRef: React.Ref<MaskElement> } & NonMaskProps<MaskElement, Props>\n>;\n\nexport type MaskPropsKeys = Exclude<(typeof MASK_PROPS_NAMES)[number], (typeof NON_MASK_OPTIONS_NAMES)[number]>;\nconst MASK_OPTIONS_NAMES = MASK_PROPS_NAMES.filter(\n (pName) => NON_MASK_OPTIONS_NAMES.indexOf(pName as (typeof NON_MASK_OPTIONS_NAMES)[number]) < 0,\n) as MaskPropsKeys[];\n\nexport type ExtractMaskOpts<MaskElement extends InputMaskElement, Props extends IMaskInputProps<MaskElement>> = Extract<\n Props,\n FactoryOpts\n>;\n\nexport type IMaskMixinProps<MaskElement extends InputMaskElement> = Omit<ReactMaskProps<MaskElement>, 'ref'> &\n MaskedPatternOptions;\n\nexport type IMaskInputProps<MaskElement extends InputMaskElement> = ReactElementProps<MaskElement> &\n IMaskMixinProps<MaskElement>;\n\nexport function IMaskMixin<MaskElement extends InputMaskElement, Props extends IMaskInputProps<MaskElement> = AnyProps>(\n ComposedComponent: ReactMixinComponent<MaskElement, Props>,\n): React.ComponentType<Props> {\n const MaskedComponent = class extends React.Component<Props> {\n static displayName: string;\n\n element!: MaskElement;\n maskRef?: InputMask<ExtractMaskOpts<MaskElement, Props>>;\n private prevMaskProp?: unknown;\n private prevUnmaskProp?: unknown;\n\n constructor(props: Props) {\n super(props);\n this._inputRef = this._inputRef.bind(this);\n this.prevMaskProp = props.mask;\n this.prevUnmaskProp = props.unmask;\n }\n\n componentDidMount() {\n if (!this.props.mask) {\n return;\n }\n\n this.initMask();\n }\n\n componentDidUpdate() {\n const props = this.props;\n const maskOptions = this._extractMaskOptionsFromProps(props);\n if (maskOptions.mask) {\n if (this.maskRef) {\n const maskPropChanged = this.prevMaskProp !== props.mask || this.prevUnmaskProp !== props.unmask;\n const elementAsUnknown = this.element as unknown;\n const isNativeInputField =\n elementAsUnknown instanceof HTMLInputElement || elementAsUnknown instanceof HTMLTextAreaElement;\n const shouldKeepSelection = maskPropChanged && isNativeInputField && document.activeElement === this.element;\n const prevSelection = shouldKeepSelection\n ? {\n start: (this.element as HTMLInputElement | HTMLTextAreaElement).selectionStart ?? 0,\n end: (this.element as HTMLInputElement | HTMLTextAreaElement).selectionEnd ?? 0,\n direction: (this.element as HTMLInputElement | HTMLTextAreaElement).selectionDirection ?? 'none',\n }\n : null;\n\n this.maskRef.updateOptions(maskOptions as unknown as UpdateOpts<ExtractMaskOpts<MaskElement, Props>>);\n if ('value' in props && props.value !== undefined) {\n const nextValue = props.value as UnmaskValue<ExtractReactMaskOpts<MaskElement, Props>>;\n if (this.maskValue !== nextValue) {\n this.maskValue = nextValue;\n }\n }\n\n if (prevSelection && isNativeInputField) {\n const inputElement = this.element as HTMLInputElement | HTMLTextAreaElement;\n const restoreSelection = () => {\n if (!inputElement.isConnected) {\n return;\n }\n const valueLength = inputElement.value.length;\n const nextStart = Math.min(prevSelection.start, valueLength);\n const nextEnd = Math.min(prevSelection.end, valueLength);\n inputElement.setSelectionRange(nextStart, nextEnd, prevSelection.direction);\n };\n restoreSelection();\n setTimeout(restoreSelection, 0);\n }\n } else {\n this.initMask(maskOptions);\n }\n } else {\n this.destroyMask();\n if ('value' in props && props.value !== undefined) {\n if (\n (this.element as HTMLElement)?.isContentEditable &&\n (this.element as HTMLElement).tagName !== 'INPUT' &&\n (this.element as HTMLElement).tagName !== 'TEXTAREA'\n ) {\n (this.element as HTMLElement).textContent = props.value;\n } else {\n (this.element as HTMLInputElement).value = props.value;\n }\n }\n }\n\n // Keep prev props in sync for next update\n this.prevMaskProp = (this.props as Props).mask;\n this.prevUnmaskProp = (this.props as Props).unmask;\n }\n\n componentWillUnmount() {\n this.destroyMask();\n }\n\n _inputRef(el: MaskElement) {\n this.element = el;\n if (this.props.inputRef) {\n if (Object.prototype.hasOwnProperty.call(this.props.inputRef, 'current')) {\n (this.props.inputRef as React.MutableRefObject<MaskElement>).current = el;\n } else {\n (this.props.inputRef as React.RefCallback<MaskElement>)(el);\n }\n }\n }\n\n initMask(maskOptions: ExtractMaskOpts<MaskElement, Props> = this._extractMaskOptionsFromProps(this.props)) {\n // eslint-disable-next-line new-cap\n this.maskRef = IMask(this.element, maskOptions)\n .on('accept', this._onAccept.bind(this))\n .on('complete', this._onComplete.bind(this));\n\n if ('value' in this.props && this.props.value !== undefined) {\n this.maskValue = this.props.value;\n }\n }\n\n destroyMask() {\n if (this.maskRef) {\n this.maskRef.destroy();\n delete this.maskRef;\n }\n }\n\n _extractMaskOptionsFromProps(props: Readonly<Props>): ExtractMaskOpts<MaskElement, Props> {\n const { ...cloneProps }: Readonly<Props> = props;\n\n // keep only mask options\n (Object.keys(cloneProps) as Array<keyof Props>)\n .filter((prop) => MASK_OPTIONS_NAMES.indexOf(prop as MaskPropsKeys) < 0)\n .forEach((nonMaskProp) => {\n delete cloneProps[nonMaskProp];\n });\n\n return cloneProps as ExtractMaskOpts<MaskElement, Props>;\n }\n\n _extractNonMaskProps(props: Readonly<Props>): NonMaskProps<MaskElement, Props> {\n const { ...cloneProps } = props as Props;\n\n (MASK_PROPS_NAMES as unknown as Array<keyof Props>).forEach((maskProp) => {\n delete cloneProps[maskProp];\n });\n if (!('defaultValue' in cloneProps)) {\n cloneProps.defaultValue = props.mask ? '' : cloneProps.value;\n }\n delete cloneProps.value;\n\n return cloneProps as NonMaskProps<MaskElement, Props>;\n }\n\n get maskValue(): UnmaskValue<ExtractReactMaskOpts<MaskElement, Props>> {\n if (!this.maskRef) {\n return '' as UnmaskValue<ExtractReactMaskOpts<MaskElement, Props>>;\n }\n\n if (this.props.unmask === 'typed') {\n return this.maskRef.typedValue;\n }\n if (this.props.unmask) {\n return this.maskRef.unmaskedValue;\n }\n return this.maskRef.value;\n }\n\n set maskValue(value: UnmaskValue<ExtractReactMaskOpts<MaskElement, Props>>) {\n if (!this.maskRef) {\n return;\n }\n\n // eslint-disable-next-line no-param-reassign, eqeqeq\n value = (value == null && this.props.unmask !== 'typed' ? '' : value) as UnmaskValue<\n ExtractReactMaskOpts<MaskElement, Props>\n >;\n if (this.props.unmask === 'typed') {\n this.maskRef.typedValue = value;\n } else if (this.props.unmask) {\n this.maskRef.unmaskedValue = value;\n } else {\n this.maskRef.value = value;\n }\n }\n\n _onAccept(e?: InputEvent) {\n if (this.props.onAccept && this.maskRef) {\n this.props.onAccept(this.maskValue, this.maskRef, e);\n }\n }\n\n _onComplete(e?: InputEvent) {\n if (this.props.onComplete && this.maskRef) {\n this.props.onComplete(this.maskValue, this.maskRef, e);\n }\n }\n\n render() {\n return React.createElement(ComposedComponent, {\n ...this._extractNonMaskProps(this.props),\n inputRef: this._inputRef,\n });\n }\n };\n\n const nestedComponentName = ComposedComponent.displayName || ComposedComponent.name || 'Component';\n MaskedComponent.displayName = `IMask(${nestedComponentName})`;\n\n return React.forwardRef<InstanceType<typeof MaskedComponent>, Props>((props, ref) =>\n React.createElement(MaskedComponent, { ...(props as Props), ref }),\n ) as unknown as React.ComponentType<Props>;\n}\n"]}
@@ -27,6 +27,8 @@ export interface RadioProps<T> extends Pick<AriaAttributes, 'aria-label'>, Commo
27
27
  onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;
28
28
  /** Значение. */
29
29
  value: T;
30
+ /** Задаёт второстепенный пояснительный текст под основным текстом радиокнопки. */
31
+ comment?: React.ReactNode;
30
32
  }> {
31
33
  }
32
34
  export interface RadioState {
@@ -76,6 +78,8 @@ export declare class Radio<T> extends React.Component<RadioProps<T>, RadioState>
76
78
  renderMain: (props: CommonWrapperRestProps<RadioProps<T>>) => React.JSX.Element;
77
79
  private _isInRadioGroup;
78
80
  private renderCaption;
81
+ private getSubcaptionSizeClassName;
82
+ private renderComment;
79
83
  private handleChange;
80
84
  private handleMouseOver;
81
85
  private handleMouseEnter;
@@ -120,7 +120,9 @@ var Radio = /** @class */ (function (_super) {
120
120
  React.createElement("input", __assign({}, inputProps))),
121
121
  React.createElement("span", __assign({}, radioProps),
122
122
  React.createElement("span", { className: _this.styles.placeholder() })),
123
- _this.props.children && _this.renderCaption()));
123
+ _this.props.children && (React.createElement("div", { className: _this.styles.captionWrapper(_this.theme) },
124
+ _this.renderCaption(),
125
+ _this.props.comment && _this.renderComment()))));
124
126
  };
125
127
  _this._isInRadioGroup = function () { return Boolean(_this.context.name); };
126
128
  _this.handleChange = function (e) {
@@ -234,6 +236,23 @@ var Radio = /** @class */ (function (_super) {
234
236
  _a));
235
237
  return React.createElement("div", { className: captionClassNames }, this.props.children);
236
238
  };
239
+ Radio.prototype.getSubcaptionSizeClassName = function () {
240
+ switch (this.size) {
241
+ case 'large':
242
+ return this.styles.subcaptionLarge(this.theme);
243
+ case 'medium':
244
+ return this.styles.subcaptionMedium(this.theme);
245
+ case 'small':
246
+ default:
247
+ return this.styles.subcaptionSmall(this.theme);
248
+ }
249
+ };
250
+ Radio.prototype.renderComment = function () {
251
+ var _a;
252
+ return (React.createElement("div", { className: this.cx(this.styles.subcaption(this.theme), this.getSubcaptionSizeClassName(), (_a = {},
253
+ _a[this.styles.subcaptionDisabled(this.theme)] = !!(this.props.disabled || this.context.disabled),
254
+ _a)) }, this.props.comment));
255
+ };
237
256
  var Radio_1;
238
257
  Radio.__KONTUR_REACT_UI__ = 'Radio';
239
258
  Radio.displayName = 'Radio';
@@ -1 +1 @@
1
- {"version":3,"file":"Radio.js","sourceRoot":"","sources":["Radio.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes } from 'react';\nimport React from 'react';\n\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { fixFirefoxModifiedClickOnLabel } from '../../lib/events/fixFirefoxModifiedClickOnLabel.js';\nimport { KeyListener } from '../../lib/events/keyListener.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { Override } from '../../typings/utility-types.js';\nimport { RadioGroupContext } from '../RadioGroup/RadioGroupContext.js';\nimport type { RadioGroupContextType } from '../RadioGroup/RadioGroupContext.js';\nimport { getStyles, globalClasses } from './Radio.styles.js';\n\nexport interface RadioProps<T>\n extends\n Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /** Переводит контрол в состояние ошибки. */\n error?: boolean;\n\n /** Переводит контрол в состояние предупреждения. */\n warning?: boolean;\n\n /** Размер радиокнопки. */\n size?: SizeProp;\n\n /** Задаёт состояние фокуса. */\n focused?: boolean;\n\n /** Событие изменения `value`. */\n onValueChange?: (value: T) => void;\n\n /** HTML-событие `onmouseenter`.\n * @ignore */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** HTML-событие `onmouseleave`.\n * @ignore */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** HTML-событие `onmouseover`.\n * @ignore */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** Значение. */\n value: T;\n }\n > {}\n\nexport interface RadioState {\n focusedByKeyboard: boolean;\n}\n\nexport const RadioDataTids = {\n root: 'Radio__root',\n} as const;\n\ntype DefaultProps = Required<Pick<RadioProps<any>, 'focused'>>;\n\n/** Радиокнопка позволяет выбрать одно значение из нескольких. Подходит при небольшом количестве вариантов — 2–5.\n *\n * Для создания группы радиокнопок используйте специальный контейнер — компонент [RadioGroup](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-radiogroup--docs).\n */\n@withRenderEnvironment\n@rootNode\n@withSize\nexport class Radio<T> extends React.Component<RadioProps<T>, RadioState> {\n public static __KONTUR_REACT_UI__ = 'Radio';\n public static displayName = 'Radio';\n\n public state = {\n focusedByKeyboard: false,\n };\n\n public static defaultProps: DefaultProps = {\n focused: false,\n };\n\n private getProps = createPropsGetter(Radio.defaultProps);\n\n public static contextType = RadioGroupContext;\n public context: RadioGroupContextType<T> = this.context;\n private size!: SizeProp;\n\n private inputEl = React.createRef<HTMLInputElement>();\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private keyListener!: KeyListener;\n\n private getRootSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.rootLarge(this.theme);\n case 'medium':\n return this.styles.rootMedium(this.theme);\n case 'small':\n default:\n return this.styles.rootSmall(this.theme);\n }\n }\n\n private getCircleSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.circleLarge(this.theme);\n case 'medium':\n return this.styles.circleMedium(this.theme);\n case 'small':\n default:\n return this.styles.circleSmall(this.theme);\n }\n }\n\n private getCheckedSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.checkedLarge(this.theme);\n case 'medium':\n return this.styles.checkedMedium(this.theme);\n case 'small':\n default:\n return this.styles.checkedSmall(this.theme);\n }\n }\n\n public componentDidMount() {\n this.keyListener = new KeyListener(this.globalObject);\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /** Программно устанавливает фокус на радиокнопку. Появляется фокусная обводка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.\n * @public\n */\n public focus(): void {\n this.keyListener.isTabPressed = true;\n this.inputEl.current?.focus();\n }\n\n /** Программно снимает фокус с радиокнопки.\n * @public\n */\n public blur(): void {\n this.inputEl.current?.blur();\n }\n\n public renderMain = (props: CommonWrapperRestProps<RadioProps<T>>): React.JSX.Element => {\n const {\n disabled = this.context.disabled,\n warning = this.context.warning,\n error = this.context.error,\n size,\n focused,\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n onValueChange,\n ...rest\n } = props;\n\n const radioProps = {\n className: this.cx({\n [this.styles.circle(this.theme)]: true,\n [this.getCircleSizeClassName()]: true,\n [this.styles.checked(this.theme)]: this.props.checked,\n [this.getCheckedSizeClassName()]: this.props.checked,\n [this.styles.focus(this.theme)]: this.getProps().focused || this.state.focusedByKeyboard,\n [this.styles.error(this.theme)]: error,\n [this.styles.warning(this.theme)]: warning,\n [this.styles.disabled(this.theme)]: disabled,\n [this.styles.checkedDisabled(this.theme)]: this.props.checked && disabled,\n [globalClasses.circle]: true,\n }),\n };\n\n let value: string | number | undefined;\n if (typeof this.props.value === 'string' || typeof this.props.value === 'number') {\n value = this.props.value;\n }\n\n const inputProps = {\n ...rest,\n type: 'radio',\n className: this.styles.input(),\n disabled,\n tabIndex: this.props.tabIndex,\n value,\n ref: this.inputEl,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n };\n\n const labelProps = {\n className: this.cx(this.styles.root(this.theme), this.getRootSizeClassName(), {\n [this.styles.rootChecked(this.theme)]: this.props.checked,\n }),\n onMouseOver: this.handleMouseOver,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n onClick: fixFirefoxModifiedClickOnLabel(this.inputEl),\n };\n\n if (this._isInRadioGroup()) {\n const checked = this.props.value === this.context.activeItem;\n inputProps.checked = checked;\n inputProps.name = this.context.name;\n inputProps.suppressHydrationWarning = true;\n labelProps.className = this.cx(this.styles.root(this.theme), this.getRootSizeClassName(), {\n [this.styles.rootChecked(this.theme)]: checked,\n });\n radioProps.className = this.cx(radioProps.className, {\n [this.styles.checked(this.theme)]: checked,\n [this.getCheckedSizeClassName()]: checked,\n [this.styles.checkedDisabled(this.theme)]: checked && disabled,\n });\n }\n\n return (\n <label data-tid={RadioDataTids.root} {...labelProps}>\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <input {...inputProps} />\n </FocusControlWrapper>\n <span {...radioProps}>\n <span className={this.styles.placeholder()} />\n </span>\n {this.props.children && this.renderCaption()}\n </label>\n );\n };\n\n private _isInRadioGroup = () => Boolean(this.context.name);\n\n private renderCaption() {\n const captionClassNames = this.cx({\n [this.styles.caption(this.theme)]: true,\n [this.styles.captionDisabled(this.theme)]: !!(this.props.disabled || this.context.disabled),\n });\n\n return <div className={captionClassNames}>{this.props.children}</div>;\n }\n\n private handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n this.props.onValueChange?.(this.props.value);\n\n if (this._isInRadioGroup()) {\n this.context.onSelect(this.props.value);\n }\n\n this.props.onChange?.(e);\n };\n\n private handleMouseOver: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseOver?.(e);\n };\n\n private handleMouseEnter: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseEnter?.(e);\n };\n\n private handleMouseLeave: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseLeave?.(e);\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.context.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n this.globalObject.requestAnimationFrame?.(() => {\n if (this.keyListener.isArrowPressed || this.keyListener.isTabPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private resetFocus = () => this.setState({ focusedByKeyboard: false });\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.resetFocus();\n this.props.onBlur?.(e);\n };\n}\n"]}
1
+ {"version":3,"file":"Radio.js","sourceRoot":"","sources":["Radio.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes } from 'react';\nimport React from 'react';\n\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { fixFirefoxModifiedClickOnLabel } from '../../lib/events/fixFirefoxModifiedClickOnLabel.js';\nimport { KeyListener } from '../../lib/events/keyListener.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { Override } from '../../typings/utility-types.js';\nimport { RadioGroupContext } from '../RadioGroup/RadioGroupContext.js';\nimport type { RadioGroupContextType } from '../RadioGroup/RadioGroupContext.js';\nimport { getStyles, globalClasses } from './Radio.styles.js';\n\nexport interface RadioProps<T>\n extends\n Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /** Переводит контрол в состояние ошибки. */\n error?: boolean;\n\n /** Переводит контрол в состояние предупреждения. */\n warning?: boolean;\n\n /** Размер радиокнопки. */\n size?: SizeProp;\n\n /** Задаёт состояние фокуса. */\n focused?: boolean;\n\n /** Событие изменения `value`. */\n onValueChange?: (value: T) => void;\n\n /** HTML-событие `onmouseenter`.\n * @ignore */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** HTML-событие `onmouseleave`.\n * @ignore */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** HTML-событие `onmouseover`.\n * @ignore */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** Значение. */\n value: T;\n\n /** Задаёт второстепенный пояснительный текст под основным текстом радиокнопки. */\n comment?: React.ReactNode;\n }\n > {}\n\nexport interface RadioState {\n focusedByKeyboard: boolean;\n}\n\nexport const RadioDataTids = {\n root: 'Radio__root',\n} as const;\n\ntype DefaultProps = Required<Pick<RadioProps<any>, 'focused'>>;\n\n/** Радиокнопка позволяет выбрать одно значение из нескольких. Подходит при небольшом количестве вариантов — 2–5.\n *\n * Для создания группы радиокнопок используйте специальный контейнер — компонент [RadioGroup](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-radiogroup--docs).\n */\n@withRenderEnvironment\n@rootNode\n@withSize\nexport class Radio<T> extends React.Component<RadioProps<T>, RadioState> {\n public static __KONTUR_REACT_UI__ = 'Radio';\n public static displayName = 'Radio';\n\n public state = {\n focusedByKeyboard: false,\n };\n\n public static defaultProps: DefaultProps = {\n focused: false,\n };\n\n private getProps = createPropsGetter(Radio.defaultProps);\n\n public static contextType = RadioGroupContext;\n public context: RadioGroupContextType<T> = this.context;\n private size!: SizeProp;\n\n private inputEl = React.createRef<HTMLInputElement>();\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private keyListener!: KeyListener;\n\n private getRootSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.rootLarge(this.theme);\n case 'medium':\n return this.styles.rootMedium(this.theme);\n case 'small':\n default:\n return this.styles.rootSmall(this.theme);\n }\n }\n\n private getCircleSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.circleLarge(this.theme);\n case 'medium':\n return this.styles.circleMedium(this.theme);\n case 'small':\n default:\n return this.styles.circleSmall(this.theme);\n }\n }\n\n private getCheckedSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.checkedLarge(this.theme);\n case 'medium':\n return this.styles.checkedMedium(this.theme);\n case 'small':\n default:\n return this.styles.checkedSmall(this.theme);\n }\n }\n\n public componentDidMount() {\n this.keyListener = new KeyListener(this.globalObject);\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /** Программно устанавливает фокус на радиокнопку. Появляется фокусная обводка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.\n * @public\n */\n public focus(): void {\n this.keyListener.isTabPressed = true;\n this.inputEl.current?.focus();\n }\n\n /** Программно снимает фокус с радиокнопки.\n * @public\n */\n public blur(): void {\n this.inputEl.current?.blur();\n }\n\n public renderMain = (props: CommonWrapperRestProps<RadioProps<T>>): React.JSX.Element => {\n const {\n disabled = this.context.disabled,\n warning = this.context.warning,\n error = this.context.error,\n size,\n focused,\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n onValueChange,\n ...rest\n } = props;\n\n const radioProps = {\n className: this.cx({\n [this.styles.circle(this.theme)]: true,\n [this.getCircleSizeClassName()]: true,\n [this.styles.checked(this.theme)]: this.props.checked,\n [this.getCheckedSizeClassName()]: this.props.checked,\n [this.styles.focus(this.theme)]: this.getProps().focused || this.state.focusedByKeyboard,\n [this.styles.error(this.theme)]: error,\n [this.styles.warning(this.theme)]: warning,\n [this.styles.disabled(this.theme)]: disabled,\n [this.styles.checkedDisabled(this.theme)]: this.props.checked && disabled,\n [globalClasses.circle]: true,\n }),\n };\n\n let value: string | number | undefined;\n if (typeof this.props.value === 'string' || typeof this.props.value === 'number') {\n value = this.props.value;\n }\n\n const inputProps = {\n ...rest,\n type: 'radio',\n className: this.styles.input(),\n disabled,\n tabIndex: this.props.tabIndex,\n value,\n ref: this.inputEl,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n };\n\n const labelProps = {\n className: this.cx(this.styles.root(this.theme), this.getRootSizeClassName(), {\n [this.styles.rootChecked(this.theme)]: this.props.checked,\n }),\n onMouseOver: this.handleMouseOver,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n onClick: fixFirefoxModifiedClickOnLabel(this.inputEl),\n };\n\n if (this._isInRadioGroup()) {\n const checked = this.props.value === this.context.activeItem;\n inputProps.checked = checked;\n inputProps.name = this.context.name;\n inputProps.suppressHydrationWarning = true;\n labelProps.className = this.cx(this.styles.root(this.theme), this.getRootSizeClassName(), {\n [this.styles.rootChecked(this.theme)]: checked,\n });\n radioProps.className = this.cx(radioProps.className, {\n [this.styles.checked(this.theme)]: checked,\n [this.getCheckedSizeClassName()]: checked,\n [this.styles.checkedDisabled(this.theme)]: checked && disabled,\n });\n }\n\n return (\n <label data-tid={RadioDataTids.root} {...labelProps}>\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <input {...inputProps} />\n </FocusControlWrapper>\n <span {...radioProps}>\n <span className={this.styles.placeholder()} />\n </span>\n {this.props.children && (\n <div className={this.styles.captionWrapper(this.theme)}>\n {this.renderCaption()}\n {this.props.comment && this.renderComment()}\n </div>\n )}\n </label>\n );\n };\n\n private _isInRadioGroup = () => Boolean(this.context.name);\n\n private renderCaption() {\n const captionClassNames = this.cx({\n [this.styles.caption(this.theme)]: true,\n [this.styles.captionDisabled(this.theme)]: !!(this.props.disabled || this.context.disabled),\n });\n\n return <div className={captionClassNames}>{this.props.children}</div>;\n }\n\n private getSubcaptionSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.subcaptionLarge(this.theme);\n case 'medium':\n return this.styles.subcaptionMedium(this.theme);\n case 'small':\n default:\n return this.styles.subcaptionSmall(this.theme);\n }\n }\n\n private renderComment() {\n return (\n <div\n className={this.cx(this.styles.subcaption(this.theme), this.getSubcaptionSizeClassName(), {\n [this.styles.subcaptionDisabled(this.theme)]: !!(this.props.disabled || this.context.disabled),\n })}\n >\n {this.props.comment}\n </div>\n );\n }\n\n private handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n this.props.onValueChange?.(this.props.value);\n\n if (this._isInRadioGroup()) {\n this.context.onSelect(this.props.value);\n }\n\n this.props.onChange?.(e);\n };\n\n private handleMouseOver: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseOver?.(e);\n };\n\n private handleMouseEnter: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseEnter?.(e);\n };\n\n private handleMouseLeave: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseLeave?.(e);\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.context.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n this.globalObject.requestAnimationFrame?.(() => {\n if (this.keyListener.isArrowPressed || this.keyListener.isTabPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private resetFocus = () => this.setState({ focusedByKeyboard: false });\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.resetFocus();\n this.props.onBlur?.(e);\n };\n}\n"]}
@@ -3,3 +3,5 @@ export declare const circleSizeMixin: (labGrotesqueBaselineCompensation: string,
3
3
  export declare const radioCheckedMixin: (bulletSize: string) => string;
4
4
  export declare const afterOutlineMixin: (radioOutlineWidth: string) => string;
5
5
  export declare const outlineColorMixin: (shadow: string, borderColor: string) => string;
6
+ export declare const subcaptionMixin: (fontSize: string, lineHeight: string) => string;
7
+ export declare const disabledTextColorMixin: (textColor: string) => string;
@@ -21,4 +21,10 @@ export var afterOutlineMixin = function (radioOutlineWidth) {
21
21
  export var outlineColorMixin = function (shadow, borderColor) {
22
22
  return "\n box-shadow: ".concat(shadow, ";\n border-color: ").concat(borderColor, ";\n ");
23
23
  };
24
+ export var subcaptionMixin = function (fontSize, lineHeight) {
25
+ return "\n font-size: ".concat(fontSize, ";\n line-height: ").concat(lineHeight, ";\n ");
26
+ };
27
+ export var disabledTextColorMixin = function (textColor) {
28
+ return "\n color: ".concat(textColor, ";\n ");
29
+ };
24
30
  //# sourceMappingURL=Radio.mixins.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Radio.mixins.js","sourceRoot":"","sources":["Radio.mixins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,mCAAmC,EAAE,MAAM,yDAAyD,CAAC;AAE9G,MAAM,CAAC,IAAM,cAAc,GAAG,UAAC,QAAgB,EAAE,UAAkB,EAAE,QAAgB,EAAE,SAAiB;IACtG,OAAO,2BACQ,QAAQ,iCACN,UAAU,6BACd,QAAQ,gDAER,SAAS,iBAErB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,eAAe,GAAG,UAC7B,gCAAwC,EACxC,QAAgB,EAChB,SAAiB,EACjB,4BAAoC,EACpC,kBAA0B;IAE1B,IAAM,yBAAyB,GAAG,QAAQ,CAAC,gCAAgC,CAAC,CAAC;IAC7E,IAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEzC,IAAM,oBAAoB,GAAG,mCAAmC,CAC9D,aAAa,EACb,yBAAyB,EACzB,QAAQ,EACR,SAAS,CACV,CAAC;IACF,IAAM,UAAU,GAAG,eAAQ,SAAS,oBAAU,4BAA4B,MAAG,CAAC;IAC9E,IAAM,aAAa,GAAG,eAAQ,kBAAkB,gBAAM,4BAA4B,gBAAM,oBAAoB,QAAK,CAAC;IAClH,IAAM,aAAa,GAAG,4BAA4B,CAAC;IACnD,OAAO,wBACK,UAAU,2BACX,UAAU,4BACT,aAAa,cAAI,aAAa,YACzC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,UAAkB;IAClD,OAAO,2CAEO,UAAU,6BACX,UAAU,iBAEtB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,iBAAyB;IACzD,OAAO,kEAGG,iBAAiB,6BACd,iBAAiB,2BACnB,iBAAiB,4BAChB,iBAAiB,kCACX,iBAAiB,0FAIlC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,MAAc,EAAE,WAAmB;IACnE,OAAO,4BACS,MAAM,kCACJ,WAAW,UAC5B,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { isChrome, isFirefox } from '../../lib/client.js';\nimport { getLabGrotesqueBaselineCompensation } from '../../lib/styles/getLabGrotesqueBaselineCompensation.js';\n\nexport const radioSizeMixin = (fontSize: string, lineHeight: string, paddingY: string, radioSize: string): string => {\n return `\n font-size: ${fontSize};\n line-height: ${lineHeight};\n padding: ${paddingY} 0;\n &::before {\n width: ${radioSize};\n }\n `;\n};\n\nexport const circleSizeMixin = (\n labGrotesqueBaselineCompensation: string,\n fontSize: string,\n radioSize: string,\n radioBorderWidthCompensation: string,\n radioCircleOffsetY: string,\n): string => {\n const labGrotesqueCompenstation = parseInt(labGrotesqueBaselineCompensation);\n const radioFontSize = parseInt(fontSize);\n\n const baselineCompensation = getLabGrotesqueBaselineCompensation(\n radioFontSize,\n labGrotesqueCompenstation,\n isChrome,\n isFirefox,\n );\n const circleSize = `calc(${radioSize} - 2 * ${radioBorderWidthCompensation})`;\n const circleOffsetY = `calc(${radioCircleOffsetY} + ${radioBorderWidthCompensation} + ${baselineCompensation}px)`;\n const circleMarginX = radioBorderWidthCompensation;\n return `\n height: ${circleSize};\n width: ${circleSize};\n margin: ${circleOffsetY} ${circleMarginX} 0;\n `;\n};\n\nexport const radioCheckedMixin = (bulletSize: string): string => {\n return `\n &::before {\n height: ${bulletSize};\n width: ${bulletSize};\n }\n `;\n};\n\nexport const afterOutlineMixin = (radioOutlineWidth: string): string => {\n return `\n content: ' ';\n position: absolute;\n top: -${radioOutlineWidth};\n bottom: -${radioOutlineWidth};\n left: -${radioOutlineWidth};\n right: -${radioOutlineWidth};\n border-width: ${radioOutlineWidth};\n border-style: solid;\n border-radius: 50%;\n box-sizing: border-box;\n `;\n};\n\nexport const outlineColorMixin = (shadow: string, borderColor: string): string => {\n return `\n box-shadow: ${shadow};\n border-color: ${borderColor};\n `;\n};\n"]}
1
+ {"version":3,"file":"Radio.mixins.js","sourceRoot":"","sources":["Radio.mixins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,mCAAmC,EAAE,MAAM,yDAAyD,CAAC;AAE9G,MAAM,CAAC,IAAM,cAAc,GAAG,UAAC,QAAgB,EAAE,UAAkB,EAAE,QAAgB,EAAE,SAAiB;IACtG,OAAO,2BACQ,QAAQ,iCACN,UAAU,6BACd,QAAQ,gDAER,SAAS,iBAErB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,eAAe,GAAG,UAC7B,gCAAwC,EACxC,QAAgB,EAChB,SAAiB,EACjB,4BAAoC,EACpC,kBAA0B;IAE1B,IAAM,yBAAyB,GAAG,QAAQ,CAAC,gCAAgC,CAAC,CAAC;IAC7E,IAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEzC,IAAM,oBAAoB,GAAG,mCAAmC,CAC9D,aAAa,EACb,yBAAyB,EACzB,QAAQ,EACR,SAAS,CACV,CAAC;IACF,IAAM,UAAU,GAAG,eAAQ,SAAS,oBAAU,4BAA4B,MAAG,CAAC;IAC9E,IAAM,aAAa,GAAG,eAAQ,kBAAkB,gBAAM,4BAA4B,gBAAM,oBAAoB,QAAK,CAAC;IAClH,IAAM,aAAa,GAAG,4BAA4B,CAAC;IACnD,OAAO,wBACK,UAAU,2BACX,UAAU,4BACT,aAAa,cAAI,aAAa,YACzC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,UAAkB;IAClD,OAAO,2CAEO,UAAU,6BACX,UAAU,iBAEtB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,iBAAyB;IACzD,OAAO,kEAGG,iBAAiB,6BACd,iBAAiB,2BACnB,iBAAiB,4BAChB,iBAAiB,kCACX,iBAAiB,0FAIlC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,MAAc,EAAE,WAAmB;IACnE,OAAO,4BACS,MAAM,kCACJ,WAAW,UAC5B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,eAAe,GAAG,UAAC,QAAgB,EAAE,UAAkB;IAClE,OAAO,2BACQ,QAAQ,iCACN,UAAU,UAC1B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,sBAAsB,GAAG,UAAC,SAAiB;IACtD,OAAO,uBACI,SAAS,UACnB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { isChrome, isFirefox } from '../../lib/client.js';\nimport { getLabGrotesqueBaselineCompensation } from '../../lib/styles/getLabGrotesqueBaselineCompensation.js';\n\nexport const radioSizeMixin = (fontSize: string, lineHeight: string, paddingY: string, radioSize: string): string => {\n return `\n font-size: ${fontSize};\n line-height: ${lineHeight};\n padding: ${paddingY} 0;\n &::before {\n width: ${radioSize};\n }\n `;\n};\n\nexport const circleSizeMixin = (\n labGrotesqueBaselineCompensation: string,\n fontSize: string,\n radioSize: string,\n radioBorderWidthCompensation: string,\n radioCircleOffsetY: string,\n): string => {\n const labGrotesqueCompenstation = parseInt(labGrotesqueBaselineCompensation);\n const radioFontSize = parseInt(fontSize);\n\n const baselineCompensation = getLabGrotesqueBaselineCompensation(\n radioFontSize,\n labGrotesqueCompenstation,\n isChrome,\n isFirefox,\n );\n const circleSize = `calc(${radioSize} - 2 * ${radioBorderWidthCompensation})`;\n const circleOffsetY = `calc(${radioCircleOffsetY} + ${radioBorderWidthCompensation} + ${baselineCompensation}px)`;\n const circleMarginX = radioBorderWidthCompensation;\n return `\n height: ${circleSize};\n width: ${circleSize};\n margin: ${circleOffsetY} ${circleMarginX} 0;\n `;\n};\n\nexport const radioCheckedMixin = (bulletSize: string): string => {\n return `\n &::before {\n height: ${bulletSize};\n width: ${bulletSize};\n }\n `;\n};\n\nexport const afterOutlineMixin = (radioOutlineWidth: string): string => {\n return `\n content: ' ';\n position: absolute;\n top: -${radioOutlineWidth};\n bottom: -${radioOutlineWidth};\n left: -${radioOutlineWidth};\n right: -${radioOutlineWidth};\n border-width: ${radioOutlineWidth};\n border-style: solid;\n border-radius: 50%;\n box-sizing: border-box;\n `;\n};\n\nexport const outlineColorMixin = (shadow: string, borderColor: string): string => {\n return `\n box-shadow: ${shadow};\n border-color: ${borderColor};\n `;\n};\n\nexport const subcaptionMixin = (fontSize: string, lineHeight: string): string => {\n return `\n font-size: ${fontSize};\n line-height: ${lineHeight};\n `;\n};\n\nexport const disabledTextColorMixin = (textColor: string): string => {\n return `\n color: ${textColor};\n `;\n};\n"]}
@@ -25,4 +25,10 @@ export declare const getStyles: import("../../lib/theming/Emotion.js").StylesGet
25
25
  caption(t: Theme): string;
26
26
  captionDisabled(t: Theme): string;
27
27
  placeholder(): string;
28
+ captionWrapper(t: Theme): string;
29
+ subcaption(t: Theme): string;
30
+ subcaptionDisabled(t: Theme): string;
31
+ subcaptionSmall(t: Theme): string;
32
+ subcaptionMedium(t: Theme): string;
33
+ subcaptionLarge(t: Theme): string;
28
34
  }>;
@@ -3,7 +3,7 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook
3
3
  return cooked;
4
4
  };
5
5
  import { memoizeGetStyles, prefix } from '../../lib/theming/Emotion.js';
6
- import { afterOutlineMixin, circleSizeMixin, outlineColorMixin, radioCheckedMixin, radioSizeMixin, } from './Radio.mixins.js';
6
+ import { afterOutlineMixin, circleSizeMixin, disabledTextColorMixin, outlineColorMixin, radioCheckedMixin, radioSizeMixin, subcaptionMixin, } from './Radio.mixins.js';
7
7
  export var globalClasses = prefix('radio')({
8
8
  circle: 'circle',
9
9
  });
@@ -68,15 +68,33 @@ export var getStyles = memoizeGetStyles(function (_a) {
68
68
  return css(templateObject_19 || (templateObject_19 = __makeTemplateObject(["\n background: ", " !important; // override root hover/active styles\n border-color: transparent !important; // override root hover/active styles\n box-shadow: ", " !important; // override root hover/active styles\n "], ["\n background: ", " !important; // override root hover/active styles\n border-color: transparent !important; // override root hover/active styles\n box-shadow: ", " !important; // override root hover/active styles\n "])), t.radioDisabledBg, t.radioDisabledShadow);
69
69
  },
70
70
  caption: function (t) {
71
- return css(templateObject_20 || (templateObject_20 = __makeTemplateObject(["\n display: ", ";\n padding-left: ", ";\n white-space: normal;\n color: ", ";\n "], ["\n display: ", ";\n padding-left: ", ";\n white-space: normal;\n color: ", ";\n "])), t.radioCaptionDisplay, t.radioCaptionGap, t.radioTextColor);
71
+ return css(templateObject_20 || (templateObject_20 = __makeTemplateObject(["\n display: ", ";\n white-space: normal;\n color: ", ";\n "], ["\n display: ", ";\n white-space: normal;\n color: ", ";\n "])), t.radioCaptionDisplay, t.radioTextColor);
72
72
  },
73
73
  captionDisabled: function (t) {
74
- return css(templateObject_21 || (templateObject_21 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), t.textColorDisabled);
74
+ return css(templateObject_21 || (templateObject_21 = __makeTemplateObject(["\n ", ";\n "], ["\n ", ";\n "])), disabledTextColorMixin(t.textColorDisabled));
75
75
  },
76
76
  placeholder: function () {
77
77
  return css(templateObject_22 || (templateObject_22 = __makeTemplateObject(["\n display: inline-block;\n "], ["\n display: inline-block;\n "])));
78
78
  },
79
+ captionWrapper: function (t) {
80
+ return css(templateObject_23 || (templateObject_23 = __makeTemplateObject(["\n display: inline-block;\n padding-left: ", ";\n "], ["\n display: inline-block;\n padding-left: ", ";\n "])), t.radioCaptionGap);
81
+ },
82
+ subcaption: function (t) {
83
+ return css(templateObject_24 || (templateObject_24 = __makeTemplateObject(["\n margin-top: 2px;\n color: ", ";\n "], ["\n margin-top: 2px;\n color: ", ";\n "])), t.radioCommentTextColor);
84
+ },
85
+ subcaptionDisabled: function (t) {
86
+ return css(templateObject_25 || (templateObject_25 = __makeTemplateObject(["\n ", ";\n "], ["\n ", ";\n "])), disabledTextColorMixin(t.textColorDisabled));
87
+ },
88
+ subcaptionSmall: function (t) {
89
+ return css(templateObject_26 || (templateObject_26 = __makeTemplateObject(["\n ", ";\n "], ["\n ", ";\n "])), subcaptionMixin(t.radioCommentFontSizeSmall, t.radioCommentLineHeightSmall));
90
+ },
91
+ subcaptionMedium: function (t) {
92
+ return css(templateObject_27 || (templateObject_27 = __makeTemplateObject(["\n ", ";\n "], ["\n ", ";\n "])), subcaptionMixin(t.radioCommentFontSizeMedium, t.radioCommentLineHeightMedium));
93
+ },
94
+ subcaptionLarge: function (t) {
95
+ return css(templateObject_28 || (templateObject_28 = __makeTemplateObject(["\n ", ";\n "], ["\n ", ";\n "])), subcaptionMixin(t.radioCommentFontSizeLarge, t.radioCommentLineHeightLarge));
96
+ },
79
97
  });
80
98
  });
81
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20, templateObject_21, templateObject_22;
99
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20, templateObject_21, templateObject_22, templateObject_23, templateObject_24, templateObject_25, templateObject_26, templateObject_27, templateObject_28;
82
100
  //# sourceMappingURL=Radio.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Radio.styles.js","sourceRoot":"","sources":["Radio.styles.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles, prefix } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport {\n afterOutlineMixin,\n circleSizeMixin,\n outlineColorMixin,\n radioCheckedMixin,\n radioSizeMixin,\n} from './Radio.mixins.js';\n\nexport const globalClasses = prefix('radio')({\n circle: 'circle',\n});\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root(t: Theme) {\n return css`\n cursor: pointer;\n position: relative;\n white-space: nowrap;\n display: inline-flex;\n align-items: baseline;\n\n .${globalClasses.circle} {\n transition: background ${t.transitionDuration} ${t.transitionTimingFunction};\n }\n\n &:hover .${globalClasses.circle} {\n background: ${t.radioHoverBg};\n box-shadow: ${t.radioHoverShadow};\n }\n &:active .${globalClasses.circle} {\n background: ${t.radioActiveBg};\n box-shadow: ${t.radioActiveShadow};\n }\n\n &::before {\n // non-breaking space.\n // makes a correct space for absolutely positioned circle,\n // and also height and baseline for radio without caption.\n content: '\\\\00A0';\n display: inline-block;\n flex: 0 0 auto;\n }\n `;\n },\n rootSmall(t: Theme) {\n return css`\n ${radioSizeMixin(t.radioFontSizeSmall, t.radioLineHeightSmall, t.radioPaddingYSmall, t.radioSizeSmall)};\n `;\n },\n rootMedium(t: Theme) {\n return css`\n ${radioSizeMixin(t.radioFontSizeMedium, t.radioLineHeightMedium, t.radioPaddingYMedium, t.radioSizeMedium)};\n `;\n },\n rootLarge(t: Theme) {\n return css`\n ${radioSizeMixin(t.radioFontSizeLarge, t.radioLineHeightLarge, t.radioPaddingYLarge, t.radioSizeLarge)};\n `;\n },\n\n rootChecked(t: Theme) {\n return css`\n &:hover .${globalClasses.circle} {\n background: ${t.radioCheckedHoverBgColor};\n }\n `;\n },\n\n circle(t: Theme) {\n return css`\n background-image: ${t.radioBgImage};\n border-radius: 50%;\n border: ${t.radioBorder};\n box-shadow: ${t.radioBoxShadow};\n box-sizing: border-box;\n display: inline-block;\n position: absolute;\n left: 0;\n background-color: ${t.radioBgColor};\n `;\n },\n circleSmall(t: Theme) {\n return css`\n ${circleSizeMixin(\n t.labGrotesqueBaselineCompensation,\n t.radioFontSizeSmall,\n t.radioSizeSmall,\n t.radioBorderWidthCompensation,\n t.radioCircleOffsetY,\n )};\n `;\n },\n circleMedium(t: Theme) {\n return css`\n ${circleSizeMixin(\n t.labGrotesqueBaselineCompensation,\n t.radioFontSizeMedium,\n t.radioSizeMedium,\n t.radioBorderWidthCompensation,\n t.radioCircleOffsetY,\n )};\n `;\n },\n circleLarge(t: Theme) {\n return css`\n ${circleSizeMixin(\n t.labGrotesqueBaselineCompensation,\n t.radioFontSizeLarge,\n t.radioSizeLarge,\n t.radioBorderWidthCompensation,\n t.radioCircleOffsetY,\n )};\n `;\n },\n\n focus(t: Theme) {\n return css`\n &::after {\n ${afterOutlineMixin(t.radioOutlineWidth)};\n ${outlineColorMixin(t.radioFocusShadow, t.radioBorderColorFocus)};\n }\n `;\n },\n\n warning(t: Theme) {\n return css`\n &::after {\n ${afterOutlineMixin(t.radioOutlineWidth)};\n ${outlineColorMixin(t.radioFocusShadow, t.radioBorderColorWarning)};\n }\n `;\n },\n\n error(t: Theme) {\n return css`\n &::after {\n ${afterOutlineMixin(t.radioOutlineWidth)};\n ${outlineColorMixin(t.radioFocusShadow, t.radioBorderColorError)};\n }\n `;\n },\n\n checked(t: Theme) {\n return css`\n background-color: ${t.radioCheckedBgColor};\n border-color: ${t.radioCheckedBorderColor};\n\n &::before {\n content: ' ';\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n margin: auto;\n border-radius: 50%;\n background: ${t.radioCheckedBulletColor};\n }\n `;\n },\n checkedSmall(t: Theme) {\n return css`\n ${radioCheckedMixin(t.radioBulletSizeSmall)};\n `;\n },\n checkedMedium(t: Theme) {\n return css`\n ${radioCheckedMixin(t.radioBulletSizeMedium)};\n `;\n },\n checkedLarge(t: Theme) {\n return css`\n ${radioCheckedMixin(t.radioBulletSizeLarge)};\n `;\n },\n\n checkedDisabled(t: Theme) {\n return css`\n &::before {\n background: ${t.radioCheckedDisabledBulletBg};\n }\n `;\n },\n\n input() {\n return css`\n display: inline-block;\n height: 0;\n opacity: 0;\n position: absolute;\n width: 0;\n z-index: -1;\n `;\n },\n\n disabled(t: Theme) {\n return css`\n background: ${t.radioDisabledBg} !important; // override root hover/active styles\n border-color: transparent !important; // override root hover/active styles\n box-shadow: ${t.radioDisabledShadow} !important; // override root hover/active styles\n `;\n },\n\n caption(t: Theme) {\n return css`\n display: ${t.radioCaptionDisplay};\n padding-left: ${t.radioCaptionGap};\n white-space: normal;\n color: ${t.radioTextColor};\n `;\n },\n\n captionDisabled(t: Theme) {\n return css`\n color: ${t.textColorDisabled};\n `;\n },\n\n placeholder() {\n return css`\n display: inline-block;\n `;\n },\n}));\n"]}
1
+ {"version":3,"file":"Radio.styles.js","sourceRoot":"","sources":["Radio.styles.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles, prefix } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport {\n afterOutlineMixin,\n circleSizeMixin,\n disabledTextColorMixin,\n outlineColorMixin,\n radioCheckedMixin,\n radioSizeMixin,\n subcaptionMixin,\n} from './Radio.mixins.js';\n\nexport const globalClasses = prefix('radio')({\n circle: 'circle',\n});\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root(t: Theme) {\n return css`\n cursor: pointer;\n position: relative;\n white-space: nowrap;\n display: inline-flex;\n align-items: baseline;\n\n .${globalClasses.circle} {\n transition: background ${t.transitionDuration} ${t.transitionTimingFunction};\n }\n\n &:hover .${globalClasses.circle} {\n background: ${t.radioHoverBg};\n box-shadow: ${t.radioHoverShadow};\n }\n &:active .${globalClasses.circle} {\n background: ${t.radioActiveBg};\n box-shadow: ${t.radioActiveShadow};\n }\n\n &::before {\n // non-breaking space.\n // makes a correct space for absolutely positioned circle,\n // and also height and baseline for radio without caption.\n content: '\\\\00A0';\n display: inline-block;\n flex: 0 0 auto;\n }\n `;\n },\n rootSmall(t: Theme) {\n return css`\n ${radioSizeMixin(t.radioFontSizeSmall, t.radioLineHeightSmall, t.radioPaddingYSmall, t.radioSizeSmall)};\n `;\n },\n rootMedium(t: Theme) {\n return css`\n ${radioSizeMixin(t.radioFontSizeMedium, t.radioLineHeightMedium, t.radioPaddingYMedium, t.radioSizeMedium)};\n `;\n },\n rootLarge(t: Theme) {\n return css`\n ${radioSizeMixin(t.radioFontSizeLarge, t.radioLineHeightLarge, t.radioPaddingYLarge, t.radioSizeLarge)};\n `;\n },\n\n rootChecked(t: Theme) {\n return css`\n &:hover .${globalClasses.circle} {\n background: ${t.radioCheckedHoverBgColor};\n }\n `;\n },\n\n circle(t: Theme) {\n return css`\n background-image: ${t.radioBgImage};\n border-radius: 50%;\n border: ${t.radioBorder};\n box-shadow: ${t.radioBoxShadow};\n box-sizing: border-box;\n display: inline-block;\n position: absolute;\n left: 0;\n background-color: ${t.radioBgColor};\n `;\n },\n circleSmall(t: Theme) {\n return css`\n ${circleSizeMixin(\n t.labGrotesqueBaselineCompensation,\n t.radioFontSizeSmall,\n t.radioSizeSmall,\n t.radioBorderWidthCompensation,\n t.radioCircleOffsetY,\n )};\n `;\n },\n circleMedium(t: Theme) {\n return css`\n ${circleSizeMixin(\n t.labGrotesqueBaselineCompensation,\n t.radioFontSizeMedium,\n t.radioSizeMedium,\n t.radioBorderWidthCompensation,\n t.radioCircleOffsetY,\n )};\n `;\n },\n circleLarge(t: Theme) {\n return css`\n ${circleSizeMixin(\n t.labGrotesqueBaselineCompensation,\n t.radioFontSizeLarge,\n t.radioSizeLarge,\n t.radioBorderWidthCompensation,\n t.radioCircleOffsetY,\n )};\n `;\n },\n\n focus(t: Theme) {\n return css`\n &::after {\n ${afterOutlineMixin(t.radioOutlineWidth)};\n ${outlineColorMixin(t.radioFocusShadow, t.radioBorderColorFocus)};\n }\n `;\n },\n\n warning(t: Theme) {\n return css`\n &::after {\n ${afterOutlineMixin(t.radioOutlineWidth)};\n ${outlineColorMixin(t.radioFocusShadow, t.radioBorderColorWarning)};\n }\n `;\n },\n\n error(t: Theme) {\n return css`\n &::after {\n ${afterOutlineMixin(t.radioOutlineWidth)};\n ${outlineColorMixin(t.radioFocusShadow, t.radioBorderColorError)};\n }\n `;\n },\n\n checked(t: Theme) {\n return css`\n background-color: ${t.radioCheckedBgColor};\n border-color: ${t.radioCheckedBorderColor};\n\n &::before {\n content: ' ';\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n margin: auto;\n border-radius: 50%;\n background: ${t.radioCheckedBulletColor};\n }\n `;\n },\n checkedSmall(t: Theme) {\n return css`\n ${radioCheckedMixin(t.radioBulletSizeSmall)};\n `;\n },\n checkedMedium(t: Theme) {\n return css`\n ${radioCheckedMixin(t.radioBulletSizeMedium)};\n `;\n },\n checkedLarge(t: Theme) {\n return css`\n ${radioCheckedMixin(t.radioBulletSizeLarge)};\n `;\n },\n\n checkedDisabled(t: Theme) {\n return css`\n &::before {\n background: ${t.radioCheckedDisabledBulletBg};\n }\n `;\n },\n\n input() {\n return css`\n display: inline-block;\n height: 0;\n opacity: 0;\n position: absolute;\n width: 0;\n z-index: -1;\n `;\n },\n\n disabled(t: Theme) {\n return css`\n background: ${t.radioDisabledBg} !important; // override root hover/active styles\n border-color: transparent !important; // override root hover/active styles\n box-shadow: ${t.radioDisabledShadow} !important; // override root hover/active styles\n `;\n },\n\n caption(t: Theme) {\n return css`\n display: ${t.radioCaptionDisplay};\n white-space: normal;\n color: ${t.radioTextColor};\n `;\n },\n\n captionDisabled(t: Theme) {\n return css`\n ${disabledTextColorMixin(t.textColorDisabled)};\n `;\n },\n\n placeholder() {\n return css`\n display: inline-block;\n `;\n },\n\n captionWrapper(t: Theme) {\n return css`\n display: inline-block;\n padding-left: ${t.radioCaptionGap};\n `;\n },\n\n subcaption(t: Theme) {\n return css`\n margin-top: 2px;\n color: ${t.radioCommentTextColor};\n `;\n },\n\n subcaptionDisabled(t: Theme) {\n return css`\n ${disabledTextColorMixin(t.textColorDisabled)};\n `;\n },\n\n subcaptionSmall(t: Theme) {\n return css`\n ${subcaptionMixin(t.radioCommentFontSizeSmall, t.radioCommentLineHeightSmall)};\n `;\n },\n subcaptionMedium(t: Theme) {\n return css`\n ${subcaptionMixin(t.radioCommentFontSizeMedium, t.radioCommentLineHeightMedium)};\n `;\n },\n subcaptionLarge(t: Theme) {\n return css`\n ${subcaptionMixin(t.radioCommentFontSizeLarge, t.radioCommentLineHeightLarge)};\n `;\n },\n}));\n"]}
@@ -39,6 +39,8 @@ export interface ToggleProps extends Pick<AriaAttributes, 'aria-label' | 'aria-d
39
39
  onBlur?: React.FocusEventHandler<HTMLInputElement>;
40
40
  /** Отключает анимацию. */
41
41
  disableAnimations?: boolean;
42
+ /** Задаёт второстепенный пояснительный текст под основным текстом тогла. */
43
+ comment?: React.ReactNode;
42
44
  }
43
45
  export interface ToggleState {
44
46
  checked?: boolean;
@@ -80,7 +82,10 @@ export declare class Toggle extends React.Component<ToggleProps, ToggleState> {
80
82
  private getRootSizeClassName;
81
83
  private getInputSizeClassName;
82
84
  private getCaptionSizeClassName;
85
+ private getSubcaptionSizeClassName;
83
86
  private renderMain;
87
+ private renderCaption;
88
+ private renderComment;
84
89
  private inputRef;
85
90
  private handleChange;
86
91
  private handleFocus;