@skbkontur/react-ui 3.8.0 → 3.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/README.md +1 -1
- package/cjs/components/Checkbox/Checkbox.styles.js +1 -2
- package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
- package/cjs/components/Kebab/Kebab.js +2 -1
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Textarea/Textarea.d.ts +0 -2
- package/cjs/components/Textarea/Textarea.js +6 -3
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Toggle/Toggle.d.ts +43 -1
- package/cjs/components/Toggle/Toggle.js +45 -2
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/components/Toggle/Toggle.md +70 -9
- package/cjs/components/Toggle/Toggle.styles.d.ts +1 -0
- package/cjs/components/Toggle/Toggle.styles.js +8 -2
- package/cjs/components/Toggle/Toggle.styles.js.map +1 -1
- package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +1 -1
- package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
- package/components/Kebab/Kebab/Kebab.js +2 -1
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Textarea/Textarea/Textarea.js +1 -2
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.d.ts +0 -2
- package/components/Toggle/Toggle/Toggle.js +5 -1
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.d.ts +43 -1
- package/components/Toggle/Toggle.md +70 -9
- package/components/Toggle/Toggle.styles/Toggle.styles.js +5 -2
- package/components/Toggle/Toggle.styles/Toggle.styles.js.map +1 -1
- package/components/Toggle/Toggle.styles.d.ts +1 -0
- package/package.json +2 -2
|
@@ -1,20 +1,81 @@
|
|
|
1
|
+
Базовый пример тогла.
|
|
2
|
+
|
|
1
3
|
```jsx harmony
|
|
2
4
|
const [checked, setChecked] = React.useState(false);
|
|
3
5
|
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
</
|
|
6
|
+
<Toggle checked={checked} onValueChange={setChecked}>
|
|
7
|
+
{checked ? 'On' : 'Off'}
|
|
8
|
+
</Toggle>
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Пример тогла включенного по умолчанию.
|
|
12
|
+
|
|
13
|
+
```jsx harmony
|
|
14
|
+
<Toggle defaultChecked>
|
|
15
|
+
Включен по умолчанию
|
|
16
|
+
</Toggle>
|
|
7
17
|
```
|
|
8
18
|
|
|
9
|
-
|
|
10
|
-
Положение `children` относительно переключателя указывается в `captionPosition`.
|
|
19
|
+
Тогл с надписью слева от переключателя.
|
|
11
20
|
|
|
12
21
|
```jsx harmony
|
|
13
22
|
const [checked, setChecked] = React.useState(false);
|
|
14
23
|
|
|
15
|
-
<
|
|
16
|
-
|
|
17
|
-
|
|
24
|
+
<Toggle checked={checked} onValueChange={setChecked} captionPosition="left">
|
|
25
|
+
Показывать уведомления
|
|
26
|
+
</Toggle>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Тогл получающий фокус после загрузки страницы.
|
|
30
|
+
|
|
31
|
+
```jsx harmony
|
|
32
|
+
<Toggle autoFocus>
|
|
33
|
+
Сразу с фокусом
|
|
34
|
+
</Toggle>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Тоглы в различных стилях.
|
|
38
|
+
|
|
39
|
+
```jsx harmony
|
|
40
|
+
import { Gapped } from '@skbkontur/react-ui';
|
|
41
|
+
|
|
42
|
+
<Gapped gap="20px">
|
|
43
|
+
<Toggle warning>
|
|
44
|
+
Warning
|
|
45
|
+
</Toggle>
|
|
46
|
+
<Toggle error>
|
|
47
|
+
Error
|
|
18
48
|
</Toggle>
|
|
19
|
-
|
|
49
|
+
<Toggle loading>
|
|
50
|
+
Loading
|
|
51
|
+
</Toggle>
|
|
52
|
+
<Toggle disabled>
|
|
53
|
+
Disabled
|
|
54
|
+
</Toggle>
|
|
55
|
+
</Gapped>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Тогл с кастомным действием при получении и потере фокуса.
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
```jsx harmony
|
|
62
|
+
import { Toast } from '@skbkontur/react-ui';
|
|
63
|
+
|
|
64
|
+
<Toggle
|
|
65
|
+
onFocus={() => Toast.push('Я получил фокус!')}
|
|
66
|
+
onBlur={() => Toast.push('И потерял его...')}
|
|
67
|
+
>
|
|
68
|
+
С кастомными действиями при фокусе и его потере
|
|
69
|
+
</Toggle>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
Тогл с кастомным действием при переключении.
|
|
74
|
+
|
|
75
|
+
```jsx harmony
|
|
76
|
+
import { Toast } from '@skbkontur/react-ui';
|
|
77
|
+
|
|
78
|
+
<Toggle onChange={() => Toast.push("Запускаю кастомное действие")}>
|
|
79
|
+
Кастомное действие при переключении
|
|
80
|
+
</Toggle>
|
|
20
81
|
```
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.styles = exports.globalClasses = void 0;var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _Emotion = require("../../lib/theming/Emotion");var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18;
|
|
1
|
+
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.styles = exports.globalClasses = void 0;var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _Emotion = require("../../lib/theming/Emotion");var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19;
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
var globalClasses = (0, _Emotion.prefix)('toggle')({
|
|
@@ -197,8 +197,14 @@ var styles = (0, _Emotion.memoizeStyle)({
|
|
|
197
197
|
|
|
198
198
|
},
|
|
199
199
|
|
|
200
|
+
disabledCaption: function disabledCaption(t) {
|
|
201
|
+
return (0, _Emotion.css)(_templateObject18 || (_templateObject18 = (0, _taggedTemplateLiteralLoose2.default)(["\n color: ", ";\n "])),
|
|
202
|
+
t.textColorDisabled);
|
|
203
|
+
|
|
204
|
+
},
|
|
205
|
+
|
|
200
206
|
captionLeft: function captionLeft(t) {
|
|
201
|
-
return (0, _Emotion.css)(
|
|
207
|
+
return (0, _Emotion.css)(_templateObject19 || (_templateObject19 = (0, _taggedTemplateLiteralLoose2.default)(["\n color: ", ";\n padding: 0 ", " 0 0;\n "])),
|
|
202
208
|
t.toggleTextColor,
|
|
203
209
|
t.toggleCaptionGap);
|
|
204
210
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Toggle.styles.ts"],"names":["globalClasses","handle","container","containerDisabled","containerLoading","background","styles","root","t","handleWidthWithBorders","toggleHeight","handleActiveWidth","toggleBorderWidth","toggleHandleActiveWidthIncrement","css","toggleBgHover","toggleWidth","handleSize","toggleBg","toggleHandleBorderRadius","handleDisabled","toggleDisabledHandleBg","input","toggleBgChecked","toggleBorderColorDisabledChecked","toggleBgDisabledChecked","toggleBorderColor","toggleBorderRadius","toggleBgDisabled","toggleBorderColorDisabled","focused","outlineColorFocus","toggleOutlineWidth","toggleFocusShadowColor","activeBackground","disabledBackground","activeBackgroundLoading","toggleBgActive","isWarning","toggleShadowColorWarning","isError","toggleShadowColorError","outline","toggleBaseBg","wrapper","disabled","rootLeft","caption","toggleTextColor","toggleCaptionGap","captionLeft"],"mappings":"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","sourcesContent":["import { css, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const globalClasses = prefix('toggle')({\n handle: 'handle',\n container: 'container',\n containerDisabled: 'container-disabled',\n containerLoading: 'container-loading',\n background: 'background',\n});\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n const handleWidthWithBorders = t.toggleHeight;\n const handleActiveWidth = `calc(${handleWidthWithBorders} - 2 * ${t.toggleBorderWidth} + ${t.toggleHandleActiveWidthIncrement})`;\n return css`\n display: inline-flex;\n cursor: pointer;\n\n &:hover .${globalClasses.handle} {\n background: ${t.toggleBgHover};\n }\n &:active .${globalClasses.handle} {\n width: ${handleActiveWidth};\n }\n &:active input:checked ~ .${globalClasses.handle} {\n transform: translateX(${t.toggleWidth}) translateX(-${handleWidthWithBorders})\n translateX(-${t.toggleHandleActiveWidthIncrement});\n }\n `;\n },\n\n handle(t: Theme) {\n const handleSize = `calc(${t.toggleHeight} - 2 * ${t.toggleBorderWidth})`;\n return css`\n background: ${t.toggleBg};\n border-radius: ${t.toggleHandleBorderRadius};\n bottom: ${t.toggleBorderWidth};\n box-shadow: 0 ${t.toggleBorderWidth} 0 0 rgba(0, 0, 0, 0.15), 0 0 0 ${t.toggleBorderWidth} rgba(0, 0, 0, 0.15);\n height: ${handleSize};\n left: ${t.toggleBorderWidth};\n position: absolute;\n top: ${t.toggleBorderWidth};\n transition: 0.2s ease-in;\n width: ${handleSize};\n `;\n },\n\n handleDisabled(t: Theme) {\n const handleSize = `calc(${t.toggleHeight} - 2 * ${t.toggleBorderWidth})`;\n return css`\n background: ${t.toggleDisabledHandleBg} !important; // override root hover/active styles\n width: ${handleSize} !important; // override root active styles\n `;\n },\n\n input(t: Theme) {\n const handleWidthWithBorders = t.toggleHeight;\n return css`\n position: absolute;\n opacity: 0;\n\n &:focus {\n outline: none;\n }\n &:checked ~ .${globalClasses.container} {\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBgChecked};\n background: ${t.toggleBgChecked};\n transition: background 0s 0.2s;\n }\n &:checked ~ .${globalClasses.containerDisabled} {\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBorderColorDisabledChecked};\n background: ${t.toggleBgDisabledChecked};\n transition: background 0s 0.2s;\n }\n &:checked ~ .${globalClasses.containerLoading} {\n background: ${t.toggleBorderColor};\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBorderColor};\n }\n &:checked ~ .${globalClasses.container} .${globalClasses.background} {\n width: 70%;\n background: ${t.toggleBgChecked};\n }\n &:checked ~ .${globalClasses.containerDisabled} .${globalClasses.background} {\n width: 70%;\n background: ${t.toggleBgDisabledChecked};\n border-radius: calc(${t.toggleHeight} * 0.5) 0 0 calc(${t.toggleHeight} * 0.5);\n box-shadow: inset 0 0 0 1px ${t.toggleBorderColorDisabledChecked};\n }\n &:checked ~ .${globalClasses.handle} {\n transform: translateX(${t.toggleWidth}) translateX(-${handleWidthWithBorders});\n }\n `;\n },\n\n container(t: Theme) {\n return css`\n border-radius: ${t.toggleBorderRadius};\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBorderColor};\n height: 100%;\n overflow: hidden;\n position: absolute;\n width: 100%;\n /* fixes overflow issue in Safari: https://bugs.webkit.org/show_bug.cgi?id=98538 */\n z-index: 0;\n `;\n },\n\n containerDisabled(t: Theme) {\n return css`\n background: ${t.toggleBgDisabled};\n box-shadow: inset 0 0 0 1px ${t.toggleBorderColorDisabled};\n `;\n },\n\n focused(t: Theme) {\n return css`\n box-shadow: 0 0 0 1px ${t.outlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleFocusShadowColor};\n `;\n },\n\n activeBackground() {\n return css`\n background: inherit;\n bottom: 0;\n left: 0;\n position: absolute;\n top: 0;\n transition: 0.2s ease-in;\n width: 10px;\n `;\n },\n\n disabledBackground(t: Theme) {\n return css`\n box-shadow: inset 0 0 0 1px ${t.toggleBorderColorDisabled};\n width: 0;\n `;\n },\n\n activeBackgroundLoading(t: Theme) {\n return css`\n background: ${t.toggleBgActive};\n `;\n },\n\n isWarning(t: Theme) {\n return css`\n box-shadow: 0 0 0 1px ${t.outlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleShadowColorWarning};\n `;\n },\n\n isError(t: Theme) {\n return css`\n box-shadow: 0 0 0 1px ${t.outlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleShadowColorError};\n `;\n },\n\n outline(t: Theme) {\n return css`\n background: ${t.toggleBaseBg};\n border-radius: ${t.toggleBorderRadius};\n `;\n },\n\n wrapper(t: Theme) {\n return css`\n display: inline-block;\n height: ${t.toggleHeight};\n position: relative;\n width: ${t.toggleWidth};\n flex: 1 0 ${t.toggleWidth};\n\n &::after {\n content: '';\n display: inline-block;\n }\n `;\n },\n\n disabled() {\n return css`\n cursor: default;\n `;\n },\n\n rootLeft() {\n return css`\n flex-direction: row-reverse;\n `;\n },\n\n caption(t: Theme) {\n return css`\n color: ${t.toggleTextColor};\n padding: 0 0 0 ${t.toggleCaptionGap};\n `;\n },\n\n captionLeft(t: Theme) {\n return css`\n color: ${t.toggleTextColor};\n padding: 0 ${t.toggleCaptionGap} 0 0;\n `;\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["Toggle.styles.ts"],"names":["globalClasses","handle","container","containerDisabled","containerLoading","background","styles","root","t","handleWidthWithBorders","toggleHeight","handleActiveWidth","toggleBorderWidth","toggleHandleActiveWidthIncrement","css","toggleBgHover","toggleWidth","handleSize","toggleBg","toggleHandleBorderRadius","handleDisabled","toggleDisabledHandleBg","input","toggleBgChecked","toggleBorderColorDisabledChecked","toggleBgDisabledChecked","toggleBorderColor","toggleBorderRadius","toggleBgDisabled","toggleBorderColorDisabled","focused","outlineColorFocus","toggleOutlineWidth","toggleFocusShadowColor","activeBackground","disabledBackground","activeBackgroundLoading","toggleBgActive","isWarning","toggleShadowColorWarning","isError","toggleShadowColorError","outline","toggleBaseBg","wrapper","disabled","rootLeft","caption","toggleTextColor","toggleCaptionGap","disabledCaption","textColorDisabled","captionLeft"],"mappings":"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","sourcesContent":["import { css, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const globalClasses = prefix('toggle')({\n handle: 'handle',\n container: 'container',\n containerDisabled: 'container-disabled',\n containerLoading: 'container-loading',\n background: 'background',\n});\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n const handleWidthWithBorders = t.toggleHeight;\n const handleActiveWidth = `calc(${handleWidthWithBorders} - 2 * ${t.toggleBorderWidth} + ${t.toggleHandleActiveWidthIncrement})`;\n return css`\n display: inline-flex;\n cursor: pointer;\n\n &:hover .${globalClasses.handle} {\n background: ${t.toggleBgHover};\n }\n &:active .${globalClasses.handle} {\n width: ${handleActiveWidth};\n }\n &:active input:checked ~ .${globalClasses.handle} {\n transform: translateX(${t.toggleWidth}) translateX(-${handleWidthWithBorders})\n translateX(-${t.toggleHandleActiveWidthIncrement});\n }\n `;\n },\n\n handle(t: Theme) {\n const handleSize = `calc(${t.toggleHeight} - 2 * ${t.toggleBorderWidth})`;\n return css`\n background: ${t.toggleBg};\n border-radius: ${t.toggleHandleBorderRadius};\n bottom: ${t.toggleBorderWidth};\n box-shadow: 0 ${t.toggleBorderWidth} 0 0 rgba(0, 0, 0, 0.15), 0 0 0 ${t.toggleBorderWidth} rgba(0, 0, 0, 0.15);\n height: ${handleSize};\n left: ${t.toggleBorderWidth};\n position: absolute;\n top: ${t.toggleBorderWidth};\n transition: 0.2s ease-in;\n width: ${handleSize};\n `;\n },\n\n handleDisabled(t: Theme) {\n const handleSize = `calc(${t.toggleHeight} - 2 * ${t.toggleBorderWidth})`;\n return css`\n background: ${t.toggleDisabledHandleBg} !important; // override root hover/active styles\n width: ${handleSize} !important; // override root active styles\n `;\n },\n\n input(t: Theme) {\n const handleWidthWithBorders = t.toggleHeight;\n return css`\n position: absolute;\n opacity: 0;\n\n &:focus {\n outline: none;\n }\n &:checked ~ .${globalClasses.container} {\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBgChecked};\n background: ${t.toggleBgChecked};\n transition: background 0s 0.2s;\n }\n &:checked ~ .${globalClasses.containerDisabled} {\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBorderColorDisabledChecked};\n background: ${t.toggleBgDisabledChecked};\n transition: background 0s 0.2s;\n }\n &:checked ~ .${globalClasses.containerLoading} {\n background: ${t.toggleBorderColor};\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBorderColor};\n }\n &:checked ~ .${globalClasses.container} .${globalClasses.background} {\n width: 70%;\n background: ${t.toggleBgChecked};\n }\n &:checked ~ .${globalClasses.containerDisabled} .${globalClasses.background} {\n width: 70%;\n background: ${t.toggleBgDisabledChecked};\n border-radius: calc(${t.toggleHeight} * 0.5) 0 0 calc(${t.toggleHeight} * 0.5);\n box-shadow: inset 0 0 0 1px ${t.toggleBorderColorDisabledChecked};\n }\n &:checked ~ .${globalClasses.handle} {\n transform: translateX(${t.toggleWidth}) translateX(-${handleWidthWithBorders});\n }\n `;\n },\n\n container(t: Theme) {\n return css`\n border-radius: ${t.toggleBorderRadius};\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBorderColor};\n height: 100%;\n overflow: hidden;\n position: absolute;\n width: 100%;\n /* fixes overflow issue in Safari: https://bugs.webkit.org/show_bug.cgi?id=98538 */\n z-index: 0;\n `;\n },\n\n containerDisabled(t: Theme) {\n return css`\n background: ${t.toggleBgDisabled};\n box-shadow: inset 0 0 0 1px ${t.toggleBorderColorDisabled};\n `;\n },\n\n focused(t: Theme) {\n return css`\n box-shadow: 0 0 0 1px ${t.outlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleFocusShadowColor};\n `;\n },\n\n activeBackground() {\n return css`\n background: inherit;\n bottom: 0;\n left: 0;\n position: absolute;\n top: 0;\n transition: 0.2s ease-in;\n width: 10px;\n `;\n },\n\n disabledBackground(t: Theme) {\n return css`\n box-shadow: inset 0 0 0 1px ${t.toggleBorderColorDisabled};\n width: 0;\n `;\n },\n\n activeBackgroundLoading(t: Theme) {\n return css`\n background: ${t.toggleBgActive};\n `;\n },\n\n isWarning(t: Theme) {\n return css`\n box-shadow: 0 0 0 1px ${t.outlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleShadowColorWarning};\n `;\n },\n\n isError(t: Theme) {\n return css`\n box-shadow: 0 0 0 1px ${t.outlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleShadowColorError};\n `;\n },\n\n outline(t: Theme) {\n return css`\n background: ${t.toggleBaseBg};\n border-radius: ${t.toggleBorderRadius};\n `;\n },\n\n wrapper(t: Theme) {\n return css`\n display: inline-block;\n height: ${t.toggleHeight};\n position: relative;\n width: ${t.toggleWidth};\n flex: 1 0 ${t.toggleWidth};\n\n &::after {\n content: '';\n display: inline-block;\n }\n `;\n },\n\n disabled() {\n return css`\n cursor: default;\n `;\n },\n\n rootLeft() {\n return css`\n flex-direction: row-reverse;\n `;\n },\n\n caption(t: Theme) {\n return css`\n color: ${t.toggleTextColor};\n padding: 0 0 0 ${t.toggleCaptionGap};\n `;\n },\n\n disabledCaption(t: Theme) {\n return css`\n color: ${t.textColorDisabled};\n `;\n },\n\n captionLeft(t: Theme) {\n return css`\n color: ${t.toggleTextColor};\n padding: 0 ${t.toggleCaptionGap} 0 0;\n `;\n },\n});\n"]}
|
|
@@ -8,7 +8,7 @@ export var globalClasses = prefix('checkbox')({
|
|
|
8
8
|
});
|
|
9
9
|
export var styles = memoizeStyle({
|
|
10
10
|
root: function root(t) {
|
|
11
|
-
return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n align-items: baseline;\n cursor: pointer;\n position: relative;\n
|
|
11
|
+
return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n align-items: baseline;\n cursor: pointer;\n position: relative;\n line-height: ", ";\n font-size: ", ";\n padding: ", " 0;\n\n &:hover .", " {\n background: ", ";\n box-shadow: ", ";\n }\n\n &:active .", " {\n box-shadow: ", ";\n background: ", ";\n }\n "])), t.checkboxLineHeight, t.checkboxFontSize, t.checkboxPaddingY, globalClasses.box, t.checkboxHoverBg, t.checkboxShadowHover, globalClasses.box, t.checkboxShadowActive, t.checkboxActiveBg);
|
|
12
12
|
},
|
|
13
13
|
rootChecked: function rootChecked(t) {
|
|
14
14
|
return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n &:hover .", " {\n box-shadow: ", ";\n background: ", ";\n }\n\n &:active .", " {\n background: ", ";\n box-shadow: ", ";\n }\n "])), globalClasses.box, t.checkboxCheckedHoverShadow, t.checkboxCheckedHoverBg, globalClasses.box, t.checkboxCheckedActiveBg, t.checkboxCheckedActiveShadow);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Checkbox.styles.ts"],"names":["css","memoizeStyle","prefix","globalClasses","box","styles","root","t","checkboxLineHeight","checkboxFontSize","checkboxPaddingY","checkboxHoverBg","checkboxShadowHover","checkboxShadowActive","checkboxActiveBg","rootChecked","checkboxCheckedHoverShadow","checkboxCheckedHoverBg","checkboxCheckedActiveBg","checkboxCheckedActiveShadow","rootFallback","rootWrapperIE11","boxSize","checkboxBoxSize","checkboxBorderWidthCompensation","checkboxTextColorDefault","checkboxBorder","checkboxBorderRadius","checkboxShadow","checkboxBg","input","boxWarning","checkboxOutlineColorFocus","checkboxOutlineWidth","checkboxBorderColorWarning","boxError","checkboxBorderColorError","boxChecked","checkboxCheckedBg","checkboxCheckedColor","checkboxCheckedShadow","boxFocus","checkboxBorderColorFocus","boxDisabled","checkboxShadowDisabled","checkboxBgDisabled","checkboxTextColorDisabled","disabled","iconFixBaseline","iconUnchecked","caption","checkboxLabelGap","captionIE11"],"mappings":"yYAAA,SAASA,GAAT,EAAcC,YAAd,EAA4BC,MAA5B,QAA0C,2BAA1C;;;AAGA,OAAO,IAAMC,aAAa,GAAGD,MAAM,CAAC,UAAD,CAAN,CAAmB;AAC9CE,EAAAA,GAAG,EAAE,KADyC,EAAnB,CAAtB;;;AAIP,OAAO,IAAMC,MAAM,GAAGJ,YAAY,CAAC;AACjCK,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,WAAOP,GAAP
|
|
1
|
+
{"version":3,"sources":["Checkbox.styles.ts"],"names":["css","memoizeStyle","prefix","globalClasses","box","styles","root","t","checkboxLineHeight","checkboxFontSize","checkboxPaddingY","checkboxHoverBg","checkboxShadowHover","checkboxShadowActive","checkboxActiveBg","rootChecked","checkboxCheckedHoverShadow","checkboxCheckedHoverBg","checkboxCheckedActiveBg","checkboxCheckedActiveShadow","rootFallback","rootWrapperIE11","boxSize","checkboxBoxSize","checkboxBorderWidthCompensation","checkboxTextColorDefault","checkboxBorder","checkboxBorderRadius","checkboxShadow","checkboxBg","input","boxWarning","checkboxOutlineColorFocus","checkboxOutlineWidth","checkboxBorderColorWarning","boxError","checkboxBorderColorError","boxChecked","checkboxCheckedBg","checkboxCheckedColor","checkboxCheckedShadow","boxFocus","checkboxBorderColorFocus","boxDisabled","checkboxShadowDisabled","checkboxBgDisabled","checkboxTextColorDisabled","disabled","iconFixBaseline","iconUnchecked","caption","checkboxLabelGap","captionIE11"],"mappings":"yYAAA,SAASA,GAAT,EAAcC,YAAd,EAA4BC,MAA5B,QAA0C,2BAA1C;;;AAGA,OAAO,IAAMC,aAAa,GAAGD,MAAM,CAAC,UAAD,CAAN,CAAmB;AAC9CE,EAAAA,GAAG,EAAE,KADyC,EAAnB,CAAtB;;;AAIP,OAAO,IAAMC,MAAM,GAAGJ,YAAY,CAAC;AACjCK,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,WAAOP,GAAP;;;;;AAKiBO,IAAAA,CAAC,CAACC,kBALnB;AAMeD,IAAAA,CAAC,CAACE,gBANjB;AAOaF,IAAAA,CAAC,CAACG,gBAPf;;AASaP,IAAAA,aAAa,CAACC,GAT3B;AAUkBG,IAAAA,CAAC,CAACI,eAVpB;AAWkBJ,IAAAA,CAAC,CAACK,mBAXpB;;;AAccT,IAAAA,aAAa,CAACC,GAd5B;AAekBG,IAAAA,CAAC,CAACM,oBAfpB;AAgBkBN,IAAAA,CAAC,CAACO,gBAhBpB;;;AAmBD,GArBgC;;AAuBjCC,EAAAA,WAvBiC,uBAuBrBR,CAvBqB,EAuBX;AACpB,WAAOP,GAAP;AACaG,IAAAA,aAAa,CAACC,GAD3B;AAEkBG,IAAAA,CAAC,CAACS,0BAFpB;AAGkBT,IAAAA,CAAC,CAACU,sBAHpB;;;AAMcd,IAAAA,aAAa,CAACC,GAN5B;AAOkBG,IAAAA,CAAC,CAACW,uBAPpB;AAQkBX,IAAAA,CAAC,CAACY,2BARpB;;;AAWD,GAnCgC;;AAqCjCC,EAAAA,YArCiC,0BAqClB;AACb,WAAOpB,GAAP;;;;;;;;AAQD,GA9CgC;;AAgDjCqB,EAAAA,eAhDiC,6BAgDf;AAChB,WAAOrB,GAAP;;;AAGD,GApDgC;;AAsDjCI,EAAAA,GAtDiC,eAsD7BG,CAtD6B,EAsDnB;AACZ,QAAMe,OAAO,aAAWf,CAAC,CAACgB,eAAb,eAAsChB,CAAC,CAACiB,+BAAxC,MAAb;AACA,WAAOxB,GAAP;;;;;AAKWsB,IAAAA,OALX;AAMYA,IAAAA,OANZ;;AAQef,IAAAA,CAAC,CAACE,gBARjB;AASWF,IAAAA,CAAC,CAACkB,wBATb;AAUYlB,IAAAA,CAAC,CAACmB,cAVd;AAWmBnB,IAAAA,CAAC,CAACoB,oBAXrB;AAYgBpB,IAAAA,CAAC,CAACqB,cAZlB;AAagBrB,IAAAA,CAAC,CAACsB,UAblB;;AAeYtB,IAAAA,CAAC,CAACiB,+BAfd;;AAiBD,GAzEgC;;AA2EjCM,EAAAA,KA3EiC,mBA2EzB;AACN,WAAO9B,GAAP;;;;;;;;AAQD,GApFgC;;AAsFjC+B,EAAAA,UAtFiC,sBAsFtBxB,CAtFsB,EAsFZ;AACnB,WAAOP,GAAP;AACgCO,IAAAA,CAAC,CAACyB,yBADlC;AAEYzB,IAAAA,CAAC,CAAC0B,oBAFd,EAEsC1B,CAAC,CAAC2B,0BAFxC;;AAID,GA3FgC;;AA6FjCC,EAAAA,QA7FiC,oBA6FxB5B,CA7FwB,EA6Fd;AACjB,WAAOP,GAAP;AACgCO,IAAAA,CAAC,CAACyB,yBADlC;AAEYzB,IAAAA,CAAC,CAAC0B,oBAFd,EAEsC1B,CAAC,CAAC6B,wBAFxC;;AAID,GAlGgC;;AAoGjCC,EAAAA,UApGiC,sBAoGtB9B,CApGsB,EAoGZ;AACnB,WAAOP,GAAP;AACgBO,IAAAA,CAAC,CAAC+B,iBADlB;AAEW/B,IAAAA,CAAC,CAACgC,oBAFb;AAGgBhC,IAAAA,CAAC,CAACiC,qBAHlB;;AAKD,GA1GgC;;AA4GjCC,EAAAA,QA5GiC,oBA4GxBlC,CA5GwB,EA4Gd;AACjB,WAAOP,GAAP;AACgCO,IAAAA,CAAC,CAACyB,yBADlC;AAEYzB,IAAAA,CAAC,CAAC0B,oBAFd,EAEsC1B,CAAC,CAACmC,wBAFxC;;AAID,GAjHgC;;AAmHjCC,EAAAA,WAnHiC,uBAmHrBpC,CAnHqB,EAmHX;AACpB,WAAOP,GAAP;AACgBO,IAAAA,CAAC,CAACqC,sBADlB;AAEgBrC,IAAAA,CAAC,CAACsC,kBAFlB;AAGWtC,IAAAA,CAAC,CAACuC,yBAHb;;AAKD,GAzHgC;;AA2HjCC,EAAAA,QA3HiC,oBA2HxBxC,CA3HwB,EA2Hd;AACjB,WAAOP,GAAP;AACWO,IAAAA,CAAC,CAACuC,yBADb;;;AAID,GAhIgC;;AAkIjCE,EAAAA,eAlIiC,6BAkIf;AAChB,WAAOhD,GAAP;;;AAGD,GAtIgC;;AAwIjCiD,EAAAA,aAxIiC,2BAwIjB;AACd,WAAOjD,GAAP;;;AAGD,GA5IgC;;AA8IjCkD,EAAAA,OA9IiC,mBA8IzB3C,CA9IyB,EA8If;AAChB,WAAOP,GAAP;AACWO,IAAAA,CAAC,CAACkB,wBADb;AAEkBlB,IAAAA,CAAC,CAAC4C,gBAFpB;;AAID,GAnJgC;;AAqJjCC,EAAAA,WArJiC,yBAqJnB;AACZ,WAAOpD,GAAP;;;AAGD,GAzJgC,EAAD,CAA3B","sourcesContent":["import { css, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const globalClasses = prefix('checkbox')({\n box: 'box',\n});\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n display: inline-flex;\n align-items: baseline;\n cursor: pointer;\n position: relative;\n line-height: ${t.checkboxLineHeight};\n font-size: ${t.checkboxFontSize};\n padding: ${t.checkboxPaddingY} 0;\n\n &:hover .${globalClasses.box} {\n background: ${t.checkboxHoverBg};\n box-shadow: ${t.checkboxShadowHover};\n }\n\n &:active .${globalClasses.box} {\n box-shadow: ${t.checkboxShadowActive};\n background: ${t.checkboxActiveBg};\n }\n `;\n },\n\n rootChecked(t: Theme) {\n return css`\n &:hover .${globalClasses.box} {\n box-shadow: ${t.checkboxCheckedHoverShadow};\n background: ${t.checkboxCheckedHoverBg};\n }\n\n &:active .${globalClasses.box} {\n background: ${t.checkboxCheckedActiveBg};\n box-shadow: ${t.checkboxCheckedActiveShadow};\n }\n `;\n },\n\n rootFallback() {\n return css`\n display: inline-table;\n\n & > * {\n // fix root's :active state in IE11 that gets blocked by nested elements\n pointer-events: none;\n }\n `;\n },\n\n rootWrapperIE11() {\n return css`\n display: inline;\n `;\n },\n\n box(t: Theme) {\n const boxSize = `calc(${t.checkboxBoxSize} - 2 * ${t.checkboxBorderWidthCompensation})`;\n return css`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: ${boxSize};\n height: ${boxSize};\n flex: none;\n font-size: ${t.checkboxFontSize};\n color: ${t.checkboxTextColorDefault};\n border: ${t.checkboxBorder};\n border-radius: ${t.checkboxBorderRadius};\n box-shadow: ${t.checkboxShadow};\n background: ${t.checkboxBg};\n align-self: baseline;\n margin: ${t.checkboxBorderWidthCompensation};\n `;\n },\n\n input() {\n return css`\n display: inline-block;\n opacity: 0;\n width: 0;\n height: 0;\n position: absolute;\n z-index: -1;\n `;\n },\n\n boxWarning(t: Theme) {\n return css`\n box-shadow: inset 0 0 0 1px ${t.checkboxOutlineColorFocus},\n 0 0 0 ${t.checkboxOutlineWidth} ${t.checkboxBorderColorWarning} !important; // override hover and active\n `;\n },\n\n boxError(t: Theme) {\n return css`\n box-shadow: inset 0 0 0 1px ${t.checkboxOutlineColorFocus},\n 0 0 0 ${t.checkboxOutlineWidth} ${t.checkboxBorderColorError} !important; // override hover and active\n `;\n },\n\n boxChecked(t: Theme) {\n return css`\n background: ${t.checkboxCheckedBg};\n color: ${t.checkboxCheckedColor};\n box-shadow: ${t.checkboxCheckedShadow};\n `;\n },\n\n boxFocus(t: Theme) {\n return css`\n box-shadow: inset 0 0 0 1px ${t.checkboxOutlineColorFocus},\n 0 0 0 ${t.checkboxOutlineWidth} ${t.checkboxBorderColorFocus} !important; // override hover and active\n `;\n },\n\n boxDisabled(t: Theme) {\n return css`\n box-shadow: ${t.checkboxShadowDisabled} !important; // override hover and active\n background: ${t.checkboxBgDisabled} !important; // override hover and active\n color: ${t.checkboxTextColorDisabled};\n `;\n },\n\n disabled(t: Theme) {\n return css`\n color: ${t.checkboxTextColorDisabled};\n cursor: default;\n `;\n },\n\n iconFixBaseline() {\n return css`\n margin-top: -2px;\n `;\n },\n\n iconUnchecked() {\n return css`\n color: transparent;\n `;\n },\n\n caption(t: Theme) {\n return css`\n color: ${t.checkboxTextColorDefault};\n padding-left: ${t.checkboxLabelGap};\n `;\n },\n\n captionIE11() {\n return css`\n display: table-cell;\n `;\n },\n});\n"]}
|
|
@@ -146,7 +146,8 @@ export var Kebab = /*#__PURE__*/function (_React$Component) {
|
|
|
146
146
|
positions: positions,
|
|
147
147
|
onChangeMenuState: this.handleChangeMenuState,
|
|
148
148
|
caption: this.renderCaption,
|
|
149
|
-
disableAnimations: this.props.disableAnimations
|
|
149
|
+
disableAnimations: this.props.disableAnimations,
|
|
150
|
+
menuMaxHeight: this.props.menuMaxHeight
|
|
150
151
|
}, !disabled && this.props.children));
|
|
151
152
|
};
|
|
152
153
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Kebab.tsx"],"names":["React","PropTypes","isKeyArrowVertical","isKeyEnter","isKeySpace","someKeys","LayoutEvents","keyListener","PopupMenu","ThemeContext","MenuKebabIcon","isTestEnv","ThemeFactory","CommonWrapper","cx","styles","Kebab","state","opened","focusedByTab","anchor","theme","listener","remove","undefined","renderCaption","captionProps","disabled","props","handleCaptionKeyDown","event","openMenu","handleCaptionClick","toggleMenu","handleFocus","handleBlur","kebab","focused","renderIcon","e","preventDefault","handleChangeMenuState","isOpened","restoreFocus","setState","onOpen","onClose","requestAnimationFrame","isTabPressed","componentDidMount","addListener","componentWillUnmount","render","create","popupPinOffset","kebabPinOffset","popupMargin","kebabMargin","popupPinSize","kebabPinSize","renderMain","positions","disableAnimations","children","icon","iconsmall","size","iconmedium","iconlarge","Component","__KONTUR_REACT_UI__","propTypes","defaultProps","node","bool","menuMaxHeight","oneOfType","string","number","func"],"mappings":"sEAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;;AAEA,SAASC,kBAAT,EAA6BC,UAA7B,EAAyCC,UAAzC,EAAqDC,QAArD,QAAqE,uCAArE;AACA,OAAO,KAAKC,YAAZ,MAA8B,wBAA9B;AACA,SAASC,WAAT,QAA4B,8BAA5B;AACA,SAASC,SAAT,QAAiD,0BAAjD;;;AAGA,SAASC,YAAT,QAA6B,gCAA7B;;AAEA,SAASC,aAAT,QAA8B,2BAA9B;AACA,SAASC,SAAT,QAA0B,8BAA1B;AACA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,aAAT,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;;AAEA,SAASC,MAAT,QAAuB,gBAAvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,WAAaC,KAAb;;;;;;;;;;;;;;AAcSC,IAAAA,KAdT,GAciB;AACbC,MAAAA,MAAM,EAAE,KADK;AAEbC,MAAAA,YAAY,EAAE,KAFD;AAGbC,MAAAA,MAAM,EAAE,IAHK,EAdjB;;;AAoBUC,IAAAA,KApBV;;AAsBUC,IAAAA,QAtBV;;AAwBM;AACFC,MAAAA,MAAM,EAAE,0BAAMC,SAAN,EADN,EAxBN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8EUC,IAAAA,aA9EV,GA8E0B,UAACC,YAAD,EAAyC;AACvDC,MAAAA,QADuD,GAC1C,MAAKC,KADqC,CACvDD,QADuD;AAE/D,UAAME,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,KAAD,EAAgD;AAC3E,YAAI,CAACH,QAAL,EAAe;AACb,gBAAKE,oBAAL,CAA0BC,KAA1B,EAAiCJ,YAAY,CAACK,QAA9C;AACD;AACF,OAJD;;AAMA,UAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,GAAM;AAC/B,YAAI,CAACL,QAAL,EAAe;AACbD,UAAAA,YAAY,CAACO,UAAb;AACD;AACF,OAJD;;AAMA;AACE;AACE,UAAA,QAAQ,EAAEN,QAAQ,GAAG,CAAC,CAAJ,GAAQ,CAD5B;AAEE,UAAA,OAAO,EAAEK,kBAFX;AAGE,UAAA,SAAS,EAAEH,oBAHb;AAIE,UAAA,OAAO,EAAE,MAAKK,WAJhB;AAKE,UAAA,MAAM,EAAE,MAAKC,UALf;AAME,UAAA,SAAS,EAAErB,EAAE;AACVC,UAAAA,MAAM,CAACqB,KAAP,CAAa,MAAKf,KAAlB,CADU,IACiB,IADjB;AAEVN,UAAAA,MAAM,CAACG,MAAP,CAAc,MAAKG,KAAnB,CAFU,IAEkBK,YAAY,CAACR,MAF/B;AAGVH,UAAAA,MAAM,CAACY,QAAP,EAHU,IAGUA,QAHV;AAIVZ,UAAAA,MAAM,CAACsB,OAAP,CAAe,MAAKhB,KAApB,CAJU,IAImB,MAAKJ,KAAL,CAAWE,YAJ9B,OANf;;;AAaG,cAAKmB,UAAL,EAbH,CADF;;;AAiBD,KA7GH;;AA+GUT,IAAAA,oBA/GV,GA+GiC;AAC7BU,IAAAA,CAD6B;AAE7BR,IAAAA,QAF6B;AAG1B;AACH,UAAI1B,QAAQ,CAACF,UAAD,EAAaC,UAAb,EAAyBF,kBAAzB,CAAR,CAAqDqC,CAArD,CAAJ,EAA6D;AAC3DA,QAAAA,CAAC,CAACC,cAAF;AACAT,QAAAA,QAAQ,CAAC,IAAD,CAAR;AACD;AACF,KAvHH;;AAyHUU,IAAAA,qBAzHV,GAyHkC,UAACC,QAAD,EAAoBC,YAApB,EAAoD;AAClF,YAAKC,QAAL;AACE;AACE1B,QAAAA,MAAM,EAAEwB,QADV;AAEEvB,QAAAA,YAAY,EAAE,CAACuB,QAAD,IAAaC,YAF7B,EADF;;AAKE,kBAAM;AACJ,YAAI,MAAKf,KAAL,CAAWD,QAAf,EAAyB;AACvB;AACD;;AAED,YAAI,MAAKV,KAAL,CAAWC,MAAf,EAAuB;AACrB,gBAAKU,KAAL,CAAWiB,MAAX;AACD,SAFD,MAEO;AACL,gBAAKjB,KAAL,CAAWkB,OAAX;AACD;AACF,OAfH;;AAiBD,KA3IH;;AA6IUZ,IAAAA,WA7IV,GA6IwB,YAAM;AAC1B,UAAI,CAAC,MAAKN,KAAL,CAAWD,QAAhB,EAA0B;AACxB;AACA;AACAoB,QAAAA,qBAAqB,CAAC,YAAM;AAC1B,cAAIxC,WAAW,CAACyC,YAAhB,EAA8B;AAC5B,kBAAKJ,QAAL,CAAc,EAAEzB,YAAY,EAAE,IAAhB,EAAd;AACD;AACF,SAJoB,CAArB;AAKD;AACF,KAvJH;;AAyJUgB,IAAAA,UAzJV,GAyJuB,YAAM;AACzB,YAAKS,QAAL,CAAc;AACZzB,QAAAA,YAAY,EAAE,KADF,EAAd;;AAGD,KA7JH,mDA4BS8B,iBA5BT,GA4BE,6BAA2B,CACzB,4CACA,KAAK3B,QAAL,GAAgBhB,YAAY,CAAC4C,WAAb,CAAyB,oBAAM1B,SAAN,EAAzB,CAAhB,CACD,CA/BH,QAiCS2B,oBAjCT,GAiCE,gCAA8B,CAC5B,KAAK7B,QAAL,CAAcC,MAAd,GACD,CAnCH,QAqCS6B,MArCT,GAqCE,kBAA6B,mBAC3B,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAAC/B,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,oBACE,oBAAC,YAAD,CAAc,QAAd,IACE,KAAK,EAAET,YAAY,CAACyC,MAAb,CACL,EACEC,cAAc,EAAEjC,KAAK,CAACkC,cADxB,EAEEC,WAAW,EAAEnC,KAAK,CAACoC,WAFrB,EAGEC,YAAY,EAAErC,KAAK,CAACsC,YAHtB,EADK,EAMLtC,KANK,CADT,IAUG,MAAI,CAACuC,UAAL,EAVH,CADF,CAcD,CAjBH,CADF,CAqBD,CA3DH,QA6DUA,UA7DV,GA6DE,sBAAqB,mBACa,KAAKhC,KADlB,CACXD,QADW,eACXA,QADW,CACDkC,SADC,eACDA,SADC,CAEnB,oBACE,oBAAC,aAAD,EAAmB,KAAKjC,KAAxB,eACE,oBAAC,SAAD,IACE,WAAW,MADb,EAEE,SAAS,EAAEiC,SAFb,EAGE,iBAAiB,EAAE,KAAKpB,qBAH1B,EAIE,OAAO,EAAE,KAAKhB,aAJhB,EAKE,iBAAiB,EAAE,KAAKG,KAAL,CAAWkC,iBALhC,IAOG,CAACnC,QAAD,IAAa,KAAKC,KAAL,CAAWmC,QAP3B,CADF,CADF,CAaD,CA5EH;;AA+JUzB,EAAAA,UA/JV,GA+JE,sBAAqB;AACnB;AACE;AACE,QAAA,SAAS,EAAExB,EAAE;AACVC,QAAAA,MAAM,CAACiD,IAAP,EADU,IACM,IADN;AAEVjD,QAAAA,MAAM,CAACkD,SAAP,EAFU,IAEW,KAAKrC,KAAL,CAAWsC,IAAX,KAAoB,OAF/B;AAGVnD,QAAAA,MAAM,CAACoD,UAAP,EAHU,IAGY,KAAKvC,KAAL,CAAWsC,IAAX,KAAoB,QAHhC;AAIVnD,QAAAA,MAAM,CAACqD,SAAP,EAJU,IAIW,KAAKxC,KAAL,CAAWsC,IAAX,KAAoB,OAJ/B,QADf;;;AAQG,WAAKtC,KAAL,CAAWoC,IARd,CADF;;;AAYD,GA5KH,gBAA2BhE,KAAK,CAACqE,SAAjC,EAAarD,K,CACGsD,mB,GAAsB,O,CADzBtD,K,CAGGuD,S,GAAY,E,CAHfvD,K,CAKGwD,Y,GAAe,EAC3B3B,MAAM,EAAE,0BAAMrB,SAAN,EADmB,EAE3BsB,OAAO,EAAE,2BAAMtB,SAAN,EAFkB,EAG3BqC,SAAS,EAAE,CAAC,aAAD,EAAgB,cAAhB,EAAgC,UAAhC,EAA4C,WAA5C,CAHgB,EAI3BK,IAAI,EAAE,OAJqB,EAK3BJ,iBAAiB,EAAEnD,SALQ,EAM3BqD,IAAI,eAAE,oBAAC,aAAD,OANqB,E;;;AA0K/BhD,KAAK,CAACuD,SAAN,GAAkB;AAChBR,EAAAA,QAAQ,EAAE9D,SAAS,CAACwE,IADJ;AAEhB9C,EAAAA,QAAQ,EAAE1B,SAAS,CAACyE,IAFJ;AAGhBC,EAAAA,aAAa,EAAE1E,SAAS,CAAC2E,SAAV,CAAoB,CAAC3E,SAAS,CAAC4E,MAAX,EAAmB5E,SAAS,CAAC6E,MAA7B,CAApB,CAHC;;AAKhB;AACF;AACA;AACEZ,EAAAA,IAAI,EAAEjE,SAAS,CAAC4E,MARA;;AAUhB;AACF;AACA;AACE/B,EAAAA,OAAO,EAAE7C,SAAS,CAAC8E,IAbH;;AAehB;AACF;AACA;AACElC,EAAAA,MAAM,EAAE5C,SAAS,CAAC8E,IAlBF,EAAlB","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isKeyArrowVertical, isKeyEnter, isKeySpace, someKeys } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { PopupMenu, PopupMenuCaptionProps } from '../../internal/PopupMenu';\nimport { Nullable } from '../../typings/utility-types';\nimport { PopupPosition } from '../../internal/Popup';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { MenuKebabIcon } from '../../internal/icons/16px';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './Kebab.styles';\n\nexport interface KebabProps extends CommonProps {\n disabled?: boolean;\n /**\n * Функция вызываемая при закрытии выпадашки\n * @default () => undefined\n */\n onClose: () => void;\n /**\n * Функция вызываемая при открытии выпадашки\n * @default () => undefined\n */\n onOpen: () => void;\n size: 'small' | 'medium' | 'large';\n /**\n * Список позиций доступных для расположения выпадашки\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использоваться первая из этого списка\n * @default ['bottom left', 'bottom right', 'top left', 'top right']\n */\n positions: PopupPosition[];\n menuMaxHeight?: number | string;\n /**\n * Не показывать анимацию\n */\n disableAnimations: boolean;\n /**\n * Кастомная иконка\n */\n icon?: React.ReactNode;\n}\n\nexport interface KebabState {\n anchor: Nullable<HTMLElement>;\n focusedByTab: boolean;\n opened: boolean;\n}\n\nexport class Kebab extends React.Component<KebabProps, KebabState> {\n public static __KONTUR_REACT_UI__ = 'Kebab';\n\n public static propTypes = {};\n\n public static defaultProps = {\n onOpen: () => undefined,\n onClose: () => undefined,\n positions: ['bottom left', 'bottom right', 'top left', 'top right'],\n size: 'small',\n disableAnimations: isTestEnv,\n icon: <MenuKebabIcon />,\n };\n\n public state = {\n opened: false,\n focusedByTab: false,\n anchor: null,\n };\n\n private theme!: Theme;\n\n private listener: {\n remove: () => void;\n } = {\n remove: () => undefined,\n };\n\n public componentDidMount() {\n /** addListener'у нужен колбэк в аргумент */\n this.listener = LayoutEvents.addListener(() => undefined);\n }\n\n public componentWillUnmount() {\n this.listener.remove();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.kebabPinOffset,\n popupMargin: theme.kebabMargin,\n popupPinSize: theme.kebabPinSize,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { disabled, positions } = this.props;\n return (\n <CommonWrapper {...this.props}>\n <PopupMenu\n popupHasPin\n positions={positions}\n onChangeMenuState={this.handleChangeMenuState}\n caption={this.renderCaption}\n disableAnimations={this.props.disableAnimations}\n >\n {!disabled && this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n\n private renderCaption = (captionProps: PopupMenuCaptionProps) => {\n const { disabled } = this.props;\n const handleCaptionKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disabled) {\n this.handleCaptionKeyDown(event, captionProps.openMenu);\n }\n };\n\n const handleCaptionClick = () => {\n if (!disabled) {\n captionProps.toggleMenu();\n }\n };\n\n return (\n <span\n tabIndex={disabled ? -1 : 0}\n onClick={handleCaptionClick}\n onKeyDown={handleCaptionKeyDown}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n className={cx({\n [styles.kebab(this.theme)]: true,\n [styles.opened(this.theme)]: captionProps.opened,\n [styles.disabled()]: disabled,\n [styles.focused(this.theme)]: this.state.focusedByTab,\n })}\n >\n {this.renderIcon()}\n </span>\n );\n };\n\n private handleCaptionKeyDown = (\n e: React.KeyboardEvent<HTMLDivElement>,\n openMenu: PopupMenuCaptionProps['openMenu'],\n ) => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n openMenu(true);\n }\n };\n\n private handleChangeMenuState = (isOpened: boolean, restoreFocus: boolean): void => {\n this.setState(\n {\n opened: isOpened,\n focusedByTab: !isOpened && restoreFocus,\n },\n () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.state.opened) {\n this.props.onOpen();\n } else {\n this.props.onClose();\n }\n },\n );\n };\n\n private handleFocus = () => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private handleBlur = () => {\n this.setState({\n focusedByTab: false,\n });\n };\n\n private renderIcon() {\n return (\n <div\n className={cx({\n [styles.icon()]: true,\n [styles.iconsmall()]: this.props.size === 'small',\n [styles.iconmedium()]: this.props.size === 'medium',\n [styles.iconlarge()]: this.props.size === 'large',\n })}\n >\n {this.props.icon}\n </div>\n );\n }\n}\n\nKebab.propTypes = {\n children: PropTypes.node,\n disabled: PropTypes.bool,\n menuMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n /**\n * Размер кебаба small 14px | large 20px\n */\n size: PropTypes.string,\n\n /**\n * Коллбек, вызывающийся перед закрытием кебаба\n */\n onClose: PropTypes.func,\n\n /**\n * Коллбек, вызывающийся перед открытием кебаба\n */\n onOpen: PropTypes.func,\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["Kebab.tsx"],"names":["React","PropTypes","isKeyArrowVertical","isKeyEnter","isKeySpace","someKeys","LayoutEvents","keyListener","PopupMenu","ThemeContext","MenuKebabIcon","isTestEnv","ThemeFactory","CommonWrapper","cx","styles","Kebab","state","opened","focusedByTab","anchor","theme","listener","remove","undefined","renderCaption","captionProps","disabled","props","handleCaptionKeyDown","event","openMenu","handleCaptionClick","toggleMenu","handleFocus","handleBlur","kebab","focused","renderIcon","e","preventDefault","handleChangeMenuState","isOpened","restoreFocus","setState","onOpen","onClose","requestAnimationFrame","isTabPressed","componentDidMount","addListener","componentWillUnmount","render","create","popupPinOffset","kebabPinOffset","popupMargin","kebabMargin","popupPinSize","kebabPinSize","renderMain","positions","disableAnimations","menuMaxHeight","children","icon","iconsmall","size","iconmedium","iconlarge","Component","__KONTUR_REACT_UI__","propTypes","defaultProps","node","bool","oneOfType","string","number","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isKeyArrowVertical, isKeyEnter, isKeySpace, someKeys } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { PopupMenu, PopupMenuCaptionProps } from '../../internal/PopupMenu';\nimport { Nullable } from '../../typings/utility-types';\nimport { PopupPosition } from '../../internal/Popup';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { MenuKebabIcon } from '../../internal/icons/16px';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './Kebab.styles';\n\nexport interface KebabProps extends CommonProps {\n disabled?: boolean;\n /**\n * Функция вызываемая при закрытии выпадашки\n * @default () => undefined\n */\n onClose: () => void;\n /**\n * Функция вызываемая при открытии выпадашки\n * @default () => undefined\n */\n onOpen: () => void;\n size: 'small' | 'medium' | 'large';\n /**\n * Список позиций доступных для расположения выпадашки\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использоваться первая из этого списка\n * @default ['bottom left', 'bottom right', 'top left', 'top right']\n */\n positions: PopupPosition[];\n menuMaxHeight?: number | string;\n /**\n * Не показывать анимацию\n */\n disableAnimations: boolean;\n /**\n * Кастомная иконка\n */\n icon?: React.ReactNode;\n}\n\nexport interface KebabState {\n anchor: Nullable<HTMLElement>;\n focusedByTab: boolean;\n opened: boolean;\n}\n\nexport class Kebab extends React.Component<KebabProps, KebabState> {\n public static __KONTUR_REACT_UI__ = 'Kebab';\n\n public static propTypes = {};\n\n public static defaultProps = {\n onOpen: () => undefined,\n onClose: () => undefined,\n positions: ['bottom left', 'bottom right', 'top left', 'top right'],\n size: 'small',\n disableAnimations: isTestEnv,\n icon: <MenuKebabIcon />,\n };\n\n public state = {\n opened: false,\n focusedByTab: false,\n anchor: null,\n };\n\n private theme!: Theme;\n\n private listener: {\n remove: () => void;\n } = {\n remove: () => undefined,\n };\n\n public componentDidMount() {\n /** addListener'у нужен колбэк в аргумент */\n this.listener = LayoutEvents.addListener(() => undefined);\n }\n\n public componentWillUnmount() {\n this.listener.remove();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.kebabPinOffset,\n popupMargin: theme.kebabMargin,\n popupPinSize: theme.kebabPinSize,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { disabled, positions } = this.props;\n return (\n <CommonWrapper {...this.props}>\n <PopupMenu\n popupHasPin\n positions={positions}\n onChangeMenuState={this.handleChangeMenuState}\n caption={this.renderCaption}\n disableAnimations={this.props.disableAnimations}\n menuMaxHeight={this.props.menuMaxHeight}\n >\n {!disabled && this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n\n private renderCaption = (captionProps: PopupMenuCaptionProps) => {\n const { disabled } = this.props;\n const handleCaptionKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disabled) {\n this.handleCaptionKeyDown(event, captionProps.openMenu);\n }\n };\n\n const handleCaptionClick = () => {\n if (!disabled) {\n captionProps.toggleMenu();\n }\n };\n\n return (\n <span\n tabIndex={disabled ? -1 : 0}\n onClick={handleCaptionClick}\n onKeyDown={handleCaptionKeyDown}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n className={cx({\n [styles.kebab(this.theme)]: true,\n [styles.opened(this.theme)]: captionProps.opened,\n [styles.disabled()]: disabled,\n [styles.focused(this.theme)]: this.state.focusedByTab,\n })}\n >\n {this.renderIcon()}\n </span>\n );\n };\n\n private handleCaptionKeyDown = (\n e: React.KeyboardEvent<HTMLDivElement>,\n openMenu: PopupMenuCaptionProps['openMenu'],\n ) => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n openMenu(true);\n }\n };\n\n private handleChangeMenuState = (isOpened: boolean, restoreFocus: boolean): void => {\n this.setState(\n {\n opened: isOpened,\n focusedByTab: !isOpened && restoreFocus,\n },\n () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.state.opened) {\n this.props.onOpen();\n } else {\n this.props.onClose();\n }\n },\n );\n };\n\n private handleFocus = () => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private handleBlur = () => {\n this.setState({\n focusedByTab: false,\n });\n };\n\n private renderIcon() {\n return (\n <div\n className={cx({\n [styles.icon()]: true,\n [styles.iconsmall()]: this.props.size === 'small',\n [styles.iconmedium()]: this.props.size === 'medium',\n [styles.iconlarge()]: this.props.size === 'large',\n })}\n >\n {this.props.icon}\n </div>\n );\n }\n}\n\nKebab.propTypes = {\n children: PropTypes.node,\n disabled: PropTypes.bool,\n menuMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n /**\n * Размер кебаба small 14px | large 20px\n */\n size: PropTypes.string,\n\n /**\n * Коллбек, вызывающийся перед закрытием кебаба\n */\n onClose: PropTypes.func,\n\n /**\n * Коллбек, вызывающийся перед открытием кебаба\n */\n onOpen: PropTypes.func,\n};\n"]}
|
|
@@ -41,7 +41,6 @@ export var Textarea = /*#__PURE__*/function (_React$Component) {
|
|
|
41
41
|
_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
|
|
42
42
|
_this.state = {
|
|
43
43
|
polyfillPlaceholder: polyfillPlaceholder,
|
|
44
|
-
rows: 1,
|
|
45
44
|
isCounterVisible: false
|
|
46
45
|
};
|
|
47
46
|
|
|
@@ -367,7 +366,7 @@ export var Textarea = /*#__PURE__*/function (_React$Component) {
|
|
|
367
366
|
this.autoResize = throttle(this.autoResizeHandler, this.getAutoResizeThrottleWait());
|
|
368
367
|
}
|
|
369
368
|
|
|
370
|
-
if (this.props.autoResize && this.props.rows
|
|
369
|
+
if (this.props.autoResize && (this.props.rows !== prevProps.rows || this.props.maxRows !== prevProps.maxRows || this.props.value !== prevProps.value)) {
|
|
371
370
|
this.autoResize();
|
|
372
371
|
}
|
|
373
372
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Textarea.tsx"],"names":["React","PropTypes","throttle","raf","isKeyEnter","polyfillPlaceholder","LayoutEvents","ThemeContext","RenderLayer","ResizeDetector","isBrowser","isIE11","CommonWrapper","isTestEnv","cx","getTextAreaHeight","styles","TextareaCounter","DEFAULT_WIDTH","AUTORESIZE_THROTTLE_DEFAULT_WAIT","Textarea","state","rows","isCounterVisible","reflowCounter","counter","reflow","theme","selectAllId","node","fakeNode","layoutEvents","textareaObserver","MutationObserver","setSelectionRange","start","end","Error","document","activeElement","focus","selectAll","value","length","delaySelectAll","cancelDelayedSelectAll","cancel","renderMain","props","width","error","warning","autoResize","resize","onCut","onPaste","maxRows","onFocus","selectAllOnFocus","placeholder","onValueChange","showLengthCounter","lengthCounter","counterHelp","extraRow","disableAnimations","textareaProps","rootProps","style","textareaClassNames","textarea","isAnimationsDisabled","textareaStyle","placeholderPolyfill","fakeTextarea","fakeProps","defaultValue","className","fake","readOnly","refFake","maxLength","handleCloseCounterHelp","refCounter","root","undefined","ref","handleChange","handleCut","handlePaste","handleFocus","handleKeyDown","children","setState","e","toString","isBlockEnter","preventDefault","onKeyDown","fieldIsEmpty","target","onChange","element","autoResizeHandler","minRows","parseInt","height","exceededMaxHeight","overflowY","getAutoResizeThrottleWait","event","componentDidMount","addListener","observe","attributes","componentWillUnmount","remove","disconnect","componentDidUpdate","prevProps","render","blur","Component","__KONTUR_REACT_UI__","propTypes","bool","disabled","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"],"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 { polyfillPlaceholder } from '../../lib/polyfillPlaceholder';\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';\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 error?: boolean;\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 polyfillPlaceholder: boolean;\n rows: number | string;\n isCounterVisible: boolean;\n}\n\n/**\n * Компонент для ввода многострочного текста.\n *\n * Принимает все атрибуты `React.TextareaHTMLAttributes<HTMLTextAreaElement>`\n *\n * ** `className` и `style` игнорируются**\n */\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 polyfillPlaceholder,\n rows: 1,\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 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 ((this.props.autoResize && this.props.rows > this.state.rows) || this.props.value !== prevProps.value) {\n this.autoResize();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @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 ...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.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.polyfillPlaceholder && !textareaProps.value) {\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 {...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 >\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 (polyfillPlaceholder) {\n const fieldIsEmpty = e.target.value === '';\n\n if (this.state.polyfillPlaceholder !== fieldIsEmpty) {\n this.setState({ polyfillPlaceholder: 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":["React","PropTypes","throttle","raf","isKeyEnter","polyfillPlaceholder","LayoutEvents","ThemeContext","RenderLayer","ResizeDetector","isBrowser","isIE11","CommonWrapper","isTestEnv","cx","getTextAreaHeight","styles","TextareaCounter","DEFAULT_WIDTH","AUTORESIZE_THROTTLE_DEFAULT_WAIT","Textarea","state","isCounterVisible","reflowCounter","counter","reflow","theme","selectAllId","node","fakeNode","layoutEvents","textareaObserver","MutationObserver","setSelectionRange","start","end","Error","document","activeElement","focus","selectAll","value","length","delaySelectAll","cancelDelayedSelectAll","cancel","renderMain","props","width","error","warning","autoResize","resize","onCut","onPaste","maxRows","onFocus","selectAllOnFocus","placeholder","onValueChange","showLengthCounter","lengthCounter","counterHelp","extraRow","disableAnimations","textareaProps","rootProps","style","textareaClassNames","textarea","isAnimationsDisabled","textareaStyle","placeholderPolyfill","fakeTextarea","fakeProps","defaultValue","className","fake","readOnly","refFake","maxLength","handleCloseCounterHelp","refCounter","root","undefined","ref","handleChange","handleCut","handlePaste","handleFocus","handleKeyDown","children","setState","e","toString","isBlockEnter","preventDefault","onKeyDown","fieldIsEmpty","target","onChange","element","autoResizeHandler","rows","minRows","parseInt","height","exceededMaxHeight","overflowY","getAutoResizeThrottleWait","event","componentDidMount","addListener","observe","attributes","componentWillUnmount","remove","disconnect","componentDidUpdate","prevProps","render","blur","Component","__KONTUR_REACT_UI__","propTypes","bool","disabled","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"],"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 { polyfillPlaceholder } from '../../lib/polyfillPlaceholder';\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';\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 error?: boolean;\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 polyfillPlaceholder: boolean;\n isCounterVisible: boolean;\n}\n\n/**\n * Компонент для ввода многострочного текста.\n *\n * Принимает все атрибуты `React.TextareaHTMLAttributes<HTMLTextAreaElement>`\n *\n * ** `className` и `style` игнорируются**\n */\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 polyfillPlaceholder,\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 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 <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\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 ...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.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.polyfillPlaceholder && !textareaProps.value) {\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 {...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 >\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 (polyfillPlaceholder) {\n const fieldIsEmpty = e.target.value === '';\n\n if (this.state.polyfillPlaceholder !== fieldIsEmpty) {\n this.setState({ polyfillPlaceholder: 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"]}
|
|
@@ -67,7 +67,6 @@ export interface TextareaProps extends CommonProps, Override<React.TextareaHTMLA
|
|
|
67
67
|
}
|
|
68
68
|
export interface TextareaState {
|
|
69
69
|
polyfillPlaceholder: boolean;
|
|
70
|
-
rows: number | string;
|
|
71
70
|
isCounterVisible: boolean;
|
|
72
71
|
}
|
|
73
72
|
/**
|
|
@@ -130,7 +129,6 @@ export declare class Textarea extends React.Component<TextareaProps, TextareaSta
|
|
|
130
129
|
};
|
|
131
130
|
state: {
|
|
132
131
|
polyfillPlaceholder: boolean;
|
|
133
|
-
rows: number;
|
|
134
132
|
isCounterVisible: boolean;
|
|
135
133
|
};
|
|
136
134
|
private reflowCounter;
|
|
@@ -8,6 +8,10 @@ import { CommonWrapper } from "../../../internal/CommonWrapper";
|
|
|
8
8
|
import { cx } from "../../../lib/theming/Emotion";
|
|
9
9
|
import { styles, globalClasses } from "../Toggle.styles";
|
|
10
10
|
var colorWarningShown = false;
|
|
11
|
+
/**
|
|
12
|
+
* _Примечание:_ под тоглом понимается полный компонент т.е. надпись + переключатель, а не просто переключатель.
|
|
13
|
+
*/
|
|
14
|
+
|
|
11
15
|
export var Toggle = /*#__PURE__*/function (_React$Component) {
|
|
12
16
|
_inheritsLoose(Toggle, _React$Component);
|
|
13
17
|
|
|
@@ -116,7 +120,7 @@ export var Toggle = /*#__PURE__*/function (_React$Component) {
|
|
|
116
120
|
if (children) {
|
|
117
121
|
var _cx3;
|
|
118
122
|
|
|
119
|
-
var captionClass = cx(styles.caption(this.theme), (_cx3 = {}, _cx3[styles.captionLeft(this.theme)] = captionPosition === 'left', _cx3));
|
|
123
|
+
var captionClass = cx(styles.caption(this.theme), (_cx3 = {}, _cx3[styles.captionLeft(this.theme)] = captionPosition === 'left', _cx3[styles.disabledCaption(this.theme)] = !!disabled, _cx3));
|
|
120
124
|
caption = /*#__PURE__*/React.createElement("span", {
|
|
121
125
|
className: captionClass
|
|
122
126
|
}, children);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Toggle.tsx"],"names":["React","PropTypes","warning","keyListener","ThemeContext","CommonWrapper","cx","styles","globalClasses","colorWarningShown","Toggle","props","theme","input","focus","isTabPressed","inputRef","element","handleChange","event","onValueChange","target","checked","isUncontrolled","setState","onChange","handleFocus","onFocus","focusByTab","handleBlur","onBlur","state","defaultChecked","componentDidMount","autoFocus","render","renderMain","children","captionPosition","error","loading","color","disabled","containerClassNames","container","containerDisabled","containerLoading","labelClassNames","root","rootLeft","caption","captionClass","captionLeft","outline","isWarning","isError","focused","wrapper","backgroundColor","boxShadow","undefined","activeBackground","background","activeBackgroundLoading","disabledBackground","handle","handleDisabled","Component","__KONTUR_REACT_UI__","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';\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 checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n onValueChange?: (value: boolean) => void;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n warning?: boolean;\n error?: boolean;\n loading?: boolean;\n autoFocus?: boolean;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n color?: React.CSSProperties['color'];\n}\n\nexport interface ToggleState {\n checked?: boolean;\n focusByTab?: boolean;\n}\n\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\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 } = 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 });\n\n let caption = null;\n if (children) {\n const captionClass = cx(styles.caption(this.theme), {\n [styles.captionLeft(this.theme)]: captionPosition === 'left',\n });\n caption = <span className={captionClass}>{children}</span>;\n }\n\n return (\n <CommonWrapper {...this.props}>\n <label className={labelClassNames}>\n <div\n className={cx(styles.outline(this.theme), {\n [styles.isWarning(this.theme)]: !!warning,\n [styles.isError(this.theme)]: !!error,\n [styles.focused(this.theme)]: !disabled && !!this.state.focusByTab,\n })}\n >\n <span className={cx(styles.wrapper(this.theme))}>\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 />\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 </span>\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":["React","PropTypes","warning","keyListener","ThemeContext","CommonWrapper","cx","styles","globalClasses","colorWarningShown","Toggle","props","theme","input","focus","isTabPressed","inputRef","element","handleChange","event","onValueChange","target","checked","isUncontrolled","setState","onChange","handleFocus","onFocus","focusByTab","handleBlur","onBlur","state","defaultChecked","componentDidMount","autoFocus","render","renderMain","children","captionPosition","error","loading","color","disabled","containerClassNames","container","containerDisabled","containerLoading","labelClassNames","root","rootLeft","caption","captionClass","captionLeft","disabledCaption","outline","isWarning","isError","focused","wrapper","backgroundColor","boxShadow","undefined","activeBackground","background","activeBackgroundLoading","disabledBackground","handle","handleDisabled","Component","__KONTUR_REACT_UI__","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';\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\nexport interface ToggleState {\n checked?: boolean;\n focusByTab?: boolean;\n}\n\n/**\n * _Примечание:_ под тоглом понимается полный компонент т.е. надпись + переключатель, а не просто переключатель.\n */\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\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 } = 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 });\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 {...this.props}>\n <label className={labelClassNames}>\n <div\n className={cx(styles.outline(this.theme), {\n [styles.isWarning(this.theme)]: !!warning,\n [styles.isError(this.theme)]: !!error,\n [styles.focused(this.theme)]: !disabled && !!this.state.focusByTab,\n })}\n >\n <span className={cx(styles.wrapper(this.theme))}>\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 />\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 </span>\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"]}
|