@skbkontur/react-ui 3.8.4 → 3.9.2
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 +53 -0
- package/cjs/components/Button/Button.d.ts +66 -10
- package/cjs/components/Button/Button.js +55 -0
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Button/Button.md +42 -30
- package/cjs/components/Checkbox/Checkbox.d.ts +31 -14
- package/cjs/components/Checkbox/Checkbox.js +26 -7
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.md +92 -51
- package/cjs/components/ComboBox/ComboBox.d.ts +6 -0
- package/cjs/components/ComboBox/ComboBox.js +4 -0
- package/cjs/components/ComboBox/ComboBox.js.map +1 -1
- package/cjs/components/DateInput/DateInput.d.ts +6 -0
- package/cjs/components/DateInput/DateInput.js +6 -0
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.d.ts +6 -0
- package/cjs/components/DatePicker/DatePicker.js +6 -0
- package/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.d.ts +2 -2
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/Hint/Hint.d.ts +38 -0
- package/cjs/components/Hint/Hint.js +39 -1
- package/cjs/components/Hint/Hint.js.map +1 -1
- package/cjs/components/Hint/Hint.md +40 -1
- package/cjs/components/Input/Input.d.ts +6 -2
- package/cjs/components/Input/Input.js +4 -0
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Link/Link.d.ts +28 -10
- package/cjs/components/Link/Link.js +25 -10
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Link/Link.md +73 -7
- package/cjs/components/Link/Link.mixins.js +2 -1
- package/cjs/components/Link/Link.mixins.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.d.ts +42 -7
- package/cjs/components/MenuItem/MenuItem.js +30 -0
- package/cjs/components/MenuItem/MenuItem.js.map +1 -1
- package/cjs/components/Radio/Radio.d.ts +27 -11
- package/cjs/components/Radio/Radio.js +19 -6
- package/cjs/components/Radio/Radio.js.map +1 -1
- package/cjs/components/Radio/Radio.md +36 -12
- package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -2
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/Select/Select.d.ts +4 -1
- package/cjs/components/Select/Select.js +3 -0
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/SidePage/SidePage.d.ts +5 -1
- package/cjs/components/SidePage/SidePage.js +11 -16
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/SidePage/SidePage.styles.d.ts +5 -2
- package/cjs/components/SidePage/SidePage.styles.js +52 -35
- package/cjs/components/SidePage/SidePage.styles.js.map +1 -1
- package/cjs/components/SidePage/SidePageFooter.js +1 -1
- package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
- package/cjs/components/SidePage/SidePageHeader.js +1 -1
- package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
- package/cjs/components/Tabs/Tab.d.ts +2 -2
- package/cjs/components/Tabs/Tab.js.map +1 -1
- package/cjs/components/Textarea/Textarea.d.ts +6 -2
- package/cjs/components/Textarea/Textarea.js +9 -2
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Textarea/Textarea.styles.d.ts +1 -0
- package/cjs/components/Textarea/Textarea.styles.js +22 -19
- package/cjs/components/Textarea/Textarea.styles.js.map +1 -1
- package/cjs/components/Toggle/Toggle.d.ts +2 -2
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/components/Token/Token.d.ts +6 -0
- package/cjs/components/Token/Token.js +6 -0
- package/cjs/components/Token/Token.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.d.ts +6 -0
- package/cjs/components/TokenInput/TokenInput.js +23 -17
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/TokenInput/TokenInputMenu.js +1 -1
- package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.d.ts +3 -2
- package/cjs/components/Tooltip/Tooltip.js +3 -1
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/internal/Calendar/Calendar.js +1 -1
- package/cjs/internal/Calendar/Calendar.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +6 -0
- package/cjs/internal/CustomComboBox/ComboBoxView.js +6 -0
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +6 -0
- package/cjs/internal/CustomComboBox/CustomComboBox.js +11 -9
- package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.js +2 -2
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +13 -0
- package/cjs/internal/Popup/Popup.js +34 -6
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/Popup/PopupHelper.js +1 -0
- package/cjs/internal/Popup/PopupHelper.js.map +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.d.ts +0 -1
- package/cjs/internal/PopupMenu/PopupMenu.js +1 -2
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/lib/forwardRefAndName.d.ts +5 -0
- package/cjs/lib/forwardRefAndName.js +23 -0
- package/cjs/lib/forwardRefAndName.js.map +1 -0
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +66 -10
- package/components/Button/Button.md +42 -30
- package/components/Checkbox/Checkbox/Checkbox.js +4 -6
- package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
- package/components/Checkbox/Checkbox.d.ts +31 -14
- package/components/Checkbox/Checkbox.md +92 -51
- package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
- package/components/ComboBox/ComboBox.d.ts +6 -0
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DateInput/DateInput.d.ts +6 -0
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +6 -0
- package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/Dropdown.d.ts +2 -2
- package/components/Hint/Hint/Hint.js +4 -0
- package/components/Hint/Hint/Hint.js.map +1 -1
- package/components/Hint/Hint.d.ts +38 -0
- package/components/Hint/Hint.md +40 -1
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +6 -2
- package/components/Link/Link/Link.js +5 -12
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Link/Link.d.ts +28 -10
- package/components/Link/Link.md +73 -7
- package/components/Link/Link.mixins/Link.mixins.js +1 -1
- package/components/Link/Link.mixins/Link.mixins.js.map +1 -1
- package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +42 -7
- package/components/Radio/Radio/Radio.js +6 -5
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.d.ts +27 -11
- package/components/Radio/Radio.md +36 -12
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/RadioGroup.d.ts +2 -2
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.d.ts +4 -1
- package/components/SidePage/SidePage/SidePage.js +16 -28
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePage.d.ts +5 -1
- package/components/SidePage/SidePage.styles/SidePage.styles.js +39 -30
- package/components/SidePage/SidePage.styles/SidePage.styles.js.map +1 -1
- package/components/SidePage/SidePage.styles.d.ts +5 -2
- package/components/SidePage/SidePageFooter/SidePageFooter.js +1 -0
- package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
- package/components/SidePage/SidePageHeader/SidePageHeader.js +2 -1
- package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
- package/components/Tabs/Tab/Tab.js.map +1 -1
- package/components/Tabs/Tab.d.ts +2 -2
- package/components/Textarea/Textarea/Textarea.js +5 -3
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.d.ts +6 -2
- package/components/Textarea/Textarea.styles/Textarea.styles.js +12 -9
- package/components/Textarea/Textarea.styles/Textarea.styles.js.map +1 -1
- package/components/Textarea/Textarea.styles.d.ts +1 -0
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.d.ts +2 -2
- package/components/Token/Token/Token.js.map +1 -1
- package/components/Token/Token.d.ts +6 -0
- package/components/TokenInput/TokenInput/TokenInput.js +30 -19
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +6 -0
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +2 -2
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
- package/components/Tooltip/Tooltip/Tooltip.js +2 -1
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +3 -2
- package/internal/Calendar/Calendar/Calendar.js +2 -1
- package/internal/Calendar/Calendar/Calendar.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +4 -2
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.d.ts +6 -0
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +5 -12
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox.d.ts +6 -0
- package/internal/InputLikeText/InputLikeText/InputLikeText.js +1 -1
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/Popup/Popup/Popup.js +15 -6
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +13 -0
- package/internal/Popup/PopupHelper/PopupHelper.js +2 -1
- package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
- package/internal/PopupMenu/PopupMenu/PopupMenu.js +0 -1
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +0 -1
- package/lib/forwardRefAndName/forwardRefAndName.js +11 -0
- package/lib/forwardRefAndName/forwardRefAndName.js.map +1 -0
- package/lib/forwardRefAndName/package.json +6 -0
- package/lib/forwardRefAndName.d.ts +5 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,59 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [3.9.2](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.9.1...@skbkontur/react-ui@3.9.2) (2021-11-26)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **TokenInput:** non-null assertion operator replaced with optional chaining ([#2670](https://github.com/skbkontur/retail-ui/issues/2670)) ([b7532d0](https://github.com/skbkontur/retail-ui/commit/b7532d03cea7e06277fdd2b1d827c53b1c4eaa49))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [3.9.1](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.9.0...@skbkontur/react-ui@3.9.1) (2021-11-19)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* **ComboBox:** fix blur in Chrome ([#2665](https://github.com/skbkontur/retail-ui/issues/2665)) ([dab2ef0](https://github.com/skbkontur/retail-ui/commit/dab2ef0a16f878e179dd1ae98cebc3d69a6b7987))
|
|
23
|
+
* **react-ui:** fix disabled and error state ([#2663](https://github.com/skbkontur/retail-ui/issues/2663)) ([4c2d542](https://github.com/skbkontur/retail-ui/commit/4c2d5420797b26cdeabd892bc87473c446d59bef))
|
|
24
|
+
* **SidePage:** add offset prop ([#2626](https://github.com/skbkontur/retail-ui/issues/2626)) ([59b0257](https://github.com/skbkontur/retail-ui/commit/59b0257634a82bde15bca415e4f803076c89cf7a))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# [3.9.0](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.8.5...@skbkontur/react-ui@3.9.0) (2021-11-16)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Bug Fixes
|
|
34
|
+
|
|
35
|
+
* **Link:** disable interactions on link with disabled and loading states ([#2621](https://github.com/skbkontur/retail-ui/issues/2621)) ([e78401e](https://github.com/skbkontur/retail-ui/commit/e78401e5c92e39e0d83f64664bdcd7e61fb9747c))
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
### Features
|
|
39
|
+
|
|
40
|
+
* **Popup/TokenInput/Kebab/DropdownMenu/TooltipMenu:** adjust position to fit viewport automatically ([#2638](https://github.com/skbkontur/retail-ui/issues/2638)) ([3f8d530](https://github.com/skbkontur/retail-ui/commit/3f8d530a06a22bc06c4294f4b509d4e9e6907a58))
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## [3.8.5](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.8.4...@skbkontur/react-ui@3.8.5) (2021-11-15)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
### Bug Fixes
|
|
50
|
+
|
|
51
|
+
* **popup:** respect zero values for margin prop ([#2615](https://github.com/skbkontur/retail-ui/issues/2615)) ([416cc68](https://github.com/skbkontur/retail-ui/commit/416cc68d3ecbb9fcea8b2943326baef7f6028580))
|
|
52
|
+
* **Popup:** fix shadow in Safari ([#2636](https://github.com/skbkontur/retail-ui/issues/2636)) ([bddf178](https://github.com/skbkontur/retail-ui/commit/bddf1785eba5cb2a40875a568249f590a09a209b)), closes [#2459](https://github.com/skbkontur/retail-ui/issues/2459) [#1677](https://github.com/skbkontur/retail-ui/issues/1677) [#1495](https://github.com/skbkontur/retail-ui/issues/1495)
|
|
53
|
+
* **SidePage:** body takes 100% of available height ([#2567](https://github.com/skbkontur/retail-ui/issues/2567)) ([4dc607a](https://github.com/skbkontur/retail-ui/commit/4dc607abf33aa953ab1602fe68df39373c8c6481))
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
6
59
|
## [3.8.4](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.8.3...@skbkontur/react-ui@3.8.4) (2021-11-03)
|
|
7
60
|
|
|
8
61
|
|
|
@@ -9,55 +9,111 @@ export interface ButtonProps extends CommonProps {
|
|
|
9
9
|
/** @ignore */
|
|
10
10
|
_noRightPadding?: boolean;
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* Применяет к кнопке стили псевдокласса `:active`.
|
|
13
13
|
*/
|
|
14
14
|
active?: boolean;
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* CSS-свойство `text-align`.
|
|
17
|
+
*/
|
|
16
18
|
align?: React.CSSProperties['textAlign'];
|
|
17
19
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* `type ButtonArrow = boolean | "left"`
|
|
20
|
+
* Превращает обычную кнопку в кнопку со стрелкой.
|
|
21
21
|
*/
|
|
22
22
|
arrow?: boolean | 'left';
|
|
23
|
+
/**
|
|
24
|
+
* Даёт кнопке фокус после окончания загрузки страницы.
|
|
25
|
+
*/
|
|
23
26
|
autoFocus?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Убирает обводку у кнопки.
|
|
29
|
+
*/
|
|
24
30
|
borderless?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* @ignore
|
|
33
|
+
*/
|
|
25
34
|
checked?: boolean;
|
|
26
35
|
children?: React.ReactNode;
|
|
27
36
|
/** @ignore */
|
|
28
37
|
corners?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Отключенное состояние кнопки.
|
|
40
|
+
*/
|
|
29
41
|
disabled?: boolean;
|
|
30
42
|
/** @ignore */
|
|
31
43
|
disableFocus?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Cостояние валидации при ошибке.
|
|
46
|
+
*/
|
|
32
47
|
error?: boolean;
|
|
33
|
-
focused?: boolean;
|
|
34
48
|
/**
|
|
35
49
|
* Иконка слева от текста кнопки.
|
|
36
50
|
*/
|
|
37
51
|
icon?: React.ReactElement<any>;
|
|
52
|
+
/**
|
|
53
|
+
* Переводит кнопку в состояние загрузки.
|
|
54
|
+
*/
|
|
38
55
|
loading?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Сужает кнопку.
|
|
58
|
+
*/
|
|
39
59
|
narrow?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* HTML-событие `onblur`.
|
|
62
|
+
*/
|
|
40
63
|
onBlur?: React.FocusEventHandler<HTMLButtonElement>;
|
|
64
|
+
/**
|
|
65
|
+
* HTML-событие `onclick`.
|
|
66
|
+
*/
|
|
41
67
|
onClick?: React.MouseEventHandler<HTMLButtonElement>;
|
|
68
|
+
/**
|
|
69
|
+
* HTML-событие `onfocus`.
|
|
70
|
+
*/
|
|
42
71
|
onFocus?: React.FocusEventHandler<HTMLButtonElement>;
|
|
72
|
+
/**
|
|
73
|
+
* HTML-событие `keydown`.
|
|
74
|
+
*/
|
|
43
75
|
onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;
|
|
76
|
+
/**
|
|
77
|
+
* HTML-событие `onmouseenter`.
|
|
78
|
+
*/
|
|
44
79
|
onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;
|
|
80
|
+
/**
|
|
81
|
+
* HTML-событие `mouseleave`.
|
|
82
|
+
*/
|
|
45
83
|
onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;
|
|
84
|
+
/**
|
|
85
|
+
* HTML-событие `onmouseover`.
|
|
86
|
+
*/
|
|
46
87
|
onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;
|
|
47
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Задаёт размер кнопки.
|
|
90
|
+
*
|
|
91
|
+
* **Допустимые значения**: `"small"`, `"medium"`, `"large"`.
|
|
92
|
+
*/
|
|
48
93
|
size?: ButtonSize;
|
|
49
|
-
/**
|
|
94
|
+
/**
|
|
95
|
+
* HTML-атрибут `type`.
|
|
96
|
+
*/
|
|
50
97
|
type?: ButtonType;
|
|
98
|
+
/**
|
|
99
|
+
* HTML-атрибут `title`.
|
|
100
|
+
*/
|
|
51
101
|
title?: string;
|
|
52
102
|
/**
|
|
53
|
-
*
|
|
103
|
+
* Стиль кнопки.
|
|
54
104
|
*
|
|
55
|
-
*
|
|
105
|
+
* **Допустимые значения**: `"default"`, `"primary"`, `"success"`, `"danger"`, `"pay"`, `"link"`.
|
|
56
106
|
*/
|
|
57
107
|
use?: ButtonUse;
|
|
58
108
|
/** @ignore */
|
|
59
109
|
visuallyFocused?: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Cостояние валидации при предупреждении.
|
|
112
|
+
*/
|
|
60
113
|
warning?: boolean;
|
|
114
|
+
/**
|
|
115
|
+
* CSS-свойство `width`.
|
|
116
|
+
*/
|
|
61
117
|
width?: number | string;
|
|
62
118
|
}
|
|
63
119
|
export interface ButtonState {
|
|
@@ -86,6 +86,61 @@ var _Corners = require("./Corners");var
|
|
|
86
86
|
|
|
87
87
|
|
|
88
88
|
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
89
144
|
|
|
90
145
|
|
|
91
146
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Button.tsx"],"names":["Button","state","focusedByTab","theme","node","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","keyListener","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","blur","render","renderMain","corners","active","borderless","checked","error","warning","loading","arrow","narrow","icon","_noPadding","_noRightPadding","use","defaultProps","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onClick","width","children","sizeClass","getSizeClassName","isFocused","isLink","rootProps","type","className","styles","root","activeStyles","checkedDisabled","noPadding","noRightPadding","style","borderTopLeftRadius","Corners","TOP_LEFT","undefined","borderTopRightRadius","TOP_RIGHT","borderBottomRightRadius","BOTTOM_RIGHT","borderBottomLeftRadius","BOTTOM_LEFT","textAlign","tabIndex","title","wrapProps","wrap","wrapArrow","wrapArrowLeft","outlineNode","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","loadingNode","getLoadingSpinner","iconNode","getSizeIconClassName","iconNoRightPadding","iconLink","arrowNode","arrowWarning","arrowError","arrowFocus","arrowLeft","globalClasses","arrowHelper","arrowHelperTop","arrowHelperBottom","link","linkFocus","linkDisabled","Object","assign","wrapLink","caption","captionTranslated","captionLink","captionDisabled","visibilityHidden","size","sizeLarge","sizeLargeIE11","isIE11","isEdge","sizeMedium","sizeMediumIE11","sizeSmall","sizeSmallIE11","iconLarge","iconMedium","iconSmall","React","Component","__KONTUR_REACT_UI__","__BUTTON__","isButton","child","isValidElement","prototype","hasOwnProperty","call"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isIE11, isEdge } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Spinner } from '../Spinner';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { Corners } from './Corners';\n\nexport type ButtonSize = 'small' | 'medium' | 'large';\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link';\n\nexport interface ButtonProps extends CommonProps {\n /** @ignore */\n _noPadding?: boolean;\n\n /** @ignore */\n _noRightPadding?: boolean;\n\n /**\n * Визуально нажатое состояние.\n */\n active?: boolean;\n\n /** `type TextAlignProperty = \"inherit\" | \"initial\" | \"unset\" | \"center\" | \"end\" | \"justify\" | \"left\" | \"match-parent\" | \"right\" | \"start\"` */\n align?: React.CSSProperties['textAlign'];\n\n /**\n * Кнопка со стрелкой.\n *\n * `type ButtonArrow = boolean | \"left\"`\n */\n arrow?: boolean | 'left';\n\n autoFocus?: boolean;\n\n borderless?: boolean;\n\n checked?: boolean;\n\n children?: React.ReactNode;\n\n /** @ignore */\n corners?: number;\n\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n error?: boolean;\n\n focused?: boolean;\n\n /**\n * Иконка слева от текста кнопки.\n */\n icon?: React.ReactElement<any>;\n\n loading?: boolean;\n\n narrow?: boolean;\n\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n\n onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;\n\n /** `type ButtonSize = \"small\" | \"medium\" | \"large\"` */\n size?: ButtonSize;\n\n /** `type ButtonType = \"button\" | \"submit\" | \"reset\"` */\n type?: ButtonType;\n\n title?: string;\n\n /**\n * Вариант использования. Влияет на цвет кнопки.\n *\n * `type ButtonUse = \"default\" | \"primary\" | \"success\" | \"danger\" | \"pay\" | \"link\"`\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n warning?: boolean;\n\n width?: number | string;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static __BUTTON__ = true;\n public static TOP_LEFT = Corners.TOP_LEFT;\n public static TOP_RIGHT = Corners.TOP_RIGHT;\n public static BOTTOM_RIGHT = Corners.BOTTOM_RIGHT;\n public static BOTTOM_LEFT = Corners.BOTTOM_LEFT;\n\n public static defaultProps = {\n use: 'default' as ButtonUse,\n size: 'small' as ButtonSize,\n type: 'button' as ButtonType,\n };\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private node: HTMLButtonElement | null = null;\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n /**\n * @public\n */\n public focus() {\n this.node?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.node?.blur();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const {\n corners = 0,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n arrow,\n narrow,\n icon,\n _noPadding,\n _noRightPadding,\n use = Button.defaultProps.use,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onClick,\n width,\n children,\n } = this.props;\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n const rootProps = {\n // By default the type attribute is 'submit'. IE8 will fire a click event\n // on this button if somewhere on the page user presses Enter while some\n // input is focused. So we set type to 'button' by default.\n type: this.props.type,\n className: cx({\n [styles.root(this.theme)]: true,\n [styles[use](this.theme)]: true,\n [activeStyles[use](this.theme)]: active,\n [sizeClass]: true,\n [styles.focus(this.theme)]: isFocused && !checked,\n [styles.checked(this.theme)]: checked,\n [styles.disabled(this.theme)]: disabled || loading,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n [styles.borderless()]: borderless && !disabled && !loading && !checked && !isFocused && !active,\n [styles.narrow()]: narrow,\n [styles.noPadding()]: _noPadding,\n [styles.noRightPadding()]: _noRightPadding,\n }),\n style: {\n borderTopLeftRadius: corners & Corners.TOP_LEFT ? 0 : undefined,\n borderTopRightRadius: corners & Corners.TOP_RIGHT ? 0 : undefined,\n borderBottomRightRadius: corners & Corners.BOTTOM_RIGHT ? 0 : undefined,\n borderBottomLeftRadius: corners & Corners.BOTTOM_LEFT ? 0 : undefined,\n textAlign: align,\n },\n disabled: disabled || loading,\n onClick: onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown: onKeyDown,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseOver: onMouseOver,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx({\n [styles.wrap()]: true,\n [styles.wrapArrow()]: arrow === true,\n [styles.wrapArrowLeft()]: arrow === 'left',\n }),\n style: {\n width: width,\n },\n };\n\n let outlineNode = null;\n if (!isFocused || isLink) {\n outlineNode = (\n <div\n className={cx(styles.outline(), {\n [styles.outlineWarning(this.theme)]: warning,\n [styles.outlineError(this.theme)]: error,\n [styles.outlineLink()]: isLink,\n [styles.outlineLinkWarning(this.theme)]: isLink && warning,\n [styles.outlineLinkError(this.theme)]: isLink && error,\n })}\n />\n );\n }\n\n let loadingNode = null;\n if (loading && !icon) {\n loadingNode = <div className={styles.loading()}>{this.getLoadingSpinner()}</div>;\n }\n\n let iconNode = null;\n if (icon) {\n iconNode = (\n <span\n className={cx(styles.icon(), this.getSizeIconClassName(), {\n [styles.iconNoRightPadding()]: !children,\n [styles.iconLink(this.theme)]: isLink,\n })}\n >\n {loading ? this.getLoadingSpinner() : icon}\n </span>\n );\n }\n\n let arrowNode = null;\n if (arrow) {\n arrowNode = (\n <div\n className={cx({\n [styles.arrow()]: true,\n [styles.arrowWarning(this.theme)]: !checked && warning,\n [styles.arrowError(this.theme)]: !checked && error,\n [styles.arrowFocus(this.theme)]: !checked && isFocused,\n [styles.arrowLeft()]: arrow === 'left',\n })}\n >\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperTop)} />\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperBottom)} />\n </div>\n );\n }\n\n // Force disable all props and features, that cannot be use with Link\n if (isLink) {\n rootProps.className = cx({\n [styles.root(this.theme)]: true,\n [sizeClass]: true,\n [styles.link(this.theme)]: true,\n [styles.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n arrowNode = null;\n }\n\n return (\n <CommonWrapper {...this.props}>\n <span {...wrapProps}>\n <button ref={this._ref} {...rootProps}>\n {outlineNode}\n {loadingNode}\n {arrowNode}\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: active || checked,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {iconNode}\n <span className={cx({ [styles.visibilityHidden()]: !!loadingNode })}>{children}</span>\n </div>\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private getLoadingSpinner() {\n return <Spinner caption={null} dimmed type=\"mini\" />;\n }\n\n private getSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), { [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), { [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), { [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge });\n }\n }\n\n private getSizeIconClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(this.theme);\n }\n }\n\n private handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n if (!this.props.disabled && !this.props.disableFocus) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n this.props.onFocus?.(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n this.setState({ focusedByTab: false });\n if (!this.props.disabled && !this.props.disableFocus) {\n this.props.onBlur?.(e);\n }\n };\n\n private _ref = (node: HTMLButtonElement | null) => {\n this.node = node;\n };\n}\n\nexport const isButton = (child: React.ReactChild): child is React.ReactElement<ButtonProps> => {\n return React.isValidElement<ButtonProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__BUTTON__')\n : false;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["Button.tsx"],"names":["Button","state","focusedByTab","theme","node","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","keyListener","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","blur","render","renderMain","corners","active","borderless","checked","error","warning","loading","arrow","narrow","icon","_noPadding","_noRightPadding","use","defaultProps","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onClick","width","children","sizeClass","getSizeClassName","isFocused","isLink","rootProps","type","className","styles","root","activeStyles","checkedDisabled","noPadding","noRightPadding","style","borderTopLeftRadius","Corners","TOP_LEFT","undefined","borderTopRightRadius","TOP_RIGHT","borderBottomRightRadius","BOTTOM_RIGHT","borderBottomLeftRadius","BOTTOM_LEFT","textAlign","tabIndex","title","wrapProps","wrap","wrapArrow","wrapArrowLeft","outlineNode","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","loadingNode","getLoadingSpinner","iconNode","getSizeIconClassName","iconNoRightPadding","iconLink","arrowNode","arrowWarning","arrowError","arrowFocus","arrowLeft","globalClasses","arrowHelper","arrowHelperTop","arrowHelperBottom","link","linkFocus","linkDisabled","Object","assign","wrapLink","caption","captionTranslated","captionLink","captionDisabled","visibilityHidden","size","sizeLarge","sizeLargeIE11","isIE11","isEdge","sizeMedium","sizeMediumIE11","sizeSmall","sizeSmallIE11","iconLarge","iconMedium","iconSmall","React","Component","__KONTUR_REACT_UI__","__BUTTON__","isButton","child","isValidElement","prototype","hasOwnProperty","call"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isIE11, isEdge } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Spinner } from '../Spinner';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { Corners } from './Corners';\n\nexport type ButtonSize = 'small' | 'medium' | 'large';\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link';\n\nexport interface ButtonProps extends CommonProps {\n /** @ignore */\n _noPadding?: boolean;\n\n /** @ignore */\n _noRightPadding?: boolean;\n\n /**\n * Применяет к кнопке стили псевдокласса `:active`.\n */\n active?: boolean;\n\n /**\n * CSS-свойство `text-align`.\n */\n align?: React.CSSProperties['textAlign'];\n\n /**\n * Превращает обычную кнопку в кнопку со стрелкой.\n */\n arrow?: boolean | 'left';\n\n /**\n * Даёт кнопке фокус после окончания загрузки страницы.\n */\n autoFocus?: boolean;\n\n /**\n * Убирает обводку у кнопки.\n */\n borderless?: boolean;\n\n /**\n * @ignore\n */\n checked?: boolean;\n\n children?: React.ReactNode;\n\n /** @ignore */\n corners?: number;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n\n /**\n * Иконка слева от текста кнопки.\n */\n icon?: React.ReactElement<any>;\n\n /**\n * Переводит кнопку в состояние загрузки.\n */\n loading?: boolean;\n\n /**\n * Сужает кнопку.\n */\n narrow?: boolean;\n\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onclick`.\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onfocus`.\n */\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `keydown`.\n */\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * Задаёт размер кнопки.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: ButtonSize;\n\n /**\n * HTML-атрибут `type`.\n */\n type?: ButtonType;\n\n /**\n * HTML-атрибут `title`.\n */\n title?: string;\n\n /**\n * Стиль кнопки.\n *\n * **Допустимые значения**: `\"default\"`, `\"primary\"`, `\"success\"`, `\"danger\"`, `\"pay\"`, `\"link\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static __BUTTON__ = true;\n public static TOP_LEFT = Corners.TOP_LEFT;\n public static TOP_RIGHT = Corners.TOP_RIGHT;\n public static BOTTOM_RIGHT = Corners.BOTTOM_RIGHT;\n public static BOTTOM_LEFT = Corners.BOTTOM_LEFT;\n\n public static defaultProps = {\n use: 'default' as ButtonUse,\n size: 'small' as ButtonSize,\n type: 'button' as ButtonType,\n };\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private node: HTMLButtonElement | null = null;\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n /**\n * @public\n */\n public focus() {\n this.node?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.node?.blur();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const {\n corners = 0,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n arrow,\n narrow,\n icon,\n _noPadding,\n _noRightPadding,\n use = Button.defaultProps.use,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onClick,\n width,\n children,\n } = this.props;\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n const rootProps = {\n // By default the type attribute is 'submit'. IE8 will fire a click event\n // on this button if somewhere on the page user presses Enter while some\n // input is focused. So we set type to 'button' by default.\n type: this.props.type,\n className: cx({\n [styles.root(this.theme)]: true,\n [styles[use](this.theme)]: true,\n [activeStyles[use](this.theme)]: active,\n [sizeClass]: true,\n [styles.focus(this.theme)]: isFocused && !checked,\n [styles.checked(this.theme)]: checked,\n [styles.disabled(this.theme)]: disabled || loading,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n [styles.borderless()]: borderless && !disabled && !loading && !checked && !isFocused && !active,\n [styles.narrow()]: narrow,\n [styles.noPadding()]: _noPadding,\n [styles.noRightPadding()]: _noRightPadding,\n }),\n style: {\n borderTopLeftRadius: corners & Corners.TOP_LEFT ? 0 : undefined,\n borderTopRightRadius: corners & Corners.TOP_RIGHT ? 0 : undefined,\n borderBottomRightRadius: corners & Corners.BOTTOM_RIGHT ? 0 : undefined,\n borderBottomLeftRadius: corners & Corners.BOTTOM_LEFT ? 0 : undefined,\n textAlign: align,\n },\n disabled: disabled || loading,\n onClick: onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown: onKeyDown,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseOver: onMouseOver,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx({\n [styles.wrap()]: true,\n [styles.wrapArrow()]: arrow === true,\n [styles.wrapArrowLeft()]: arrow === 'left',\n }),\n style: {\n width: width,\n },\n };\n\n let outlineNode = null;\n if (!isFocused || isLink) {\n outlineNode = (\n <div\n className={cx(styles.outline(), {\n [styles.outlineWarning(this.theme)]: warning,\n [styles.outlineError(this.theme)]: error,\n [styles.outlineLink()]: isLink,\n [styles.outlineLinkWarning(this.theme)]: isLink && warning,\n [styles.outlineLinkError(this.theme)]: isLink && error,\n })}\n />\n );\n }\n\n let loadingNode = null;\n if (loading && !icon) {\n loadingNode = <div className={styles.loading()}>{this.getLoadingSpinner()}</div>;\n }\n\n let iconNode = null;\n if (icon) {\n iconNode = (\n <span\n className={cx(styles.icon(), this.getSizeIconClassName(), {\n [styles.iconNoRightPadding()]: !children,\n [styles.iconLink(this.theme)]: isLink,\n })}\n >\n {loading ? this.getLoadingSpinner() : icon}\n </span>\n );\n }\n\n let arrowNode = null;\n if (arrow) {\n arrowNode = (\n <div\n className={cx({\n [styles.arrow()]: true,\n [styles.arrowWarning(this.theme)]: !checked && warning,\n [styles.arrowError(this.theme)]: !checked && error,\n [styles.arrowFocus(this.theme)]: !checked && isFocused,\n [styles.arrowLeft()]: arrow === 'left',\n })}\n >\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperTop)} />\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperBottom)} />\n </div>\n );\n }\n\n // Force disable all props and features, that cannot be use with Link\n if (isLink) {\n rootProps.className = cx({\n [styles.root(this.theme)]: true,\n [sizeClass]: true,\n [styles.link(this.theme)]: true,\n [styles.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n arrowNode = null;\n }\n\n return (\n <CommonWrapper {...this.props}>\n <span {...wrapProps}>\n <button ref={this._ref} {...rootProps}>\n {outlineNode}\n {loadingNode}\n {arrowNode}\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: active || checked,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {iconNode}\n <span className={cx({ [styles.visibilityHidden()]: !!loadingNode })}>{children}</span>\n </div>\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private getLoadingSpinner() {\n return <Spinner caption={null} dimmed type=\"mini\" />;\n }\n\n private getSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), { [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), { [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), { [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge });\n }\n }\n\n private getSizeIconClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(this.theme);\n }\n }\n\n private handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n if (!this.props.disabled && !this.props.disableFocus) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n this.props.onFocus?.(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n this.setState({ focusedByTab: false });\n if (!this.props.disabled && !this.props.disableFocus) {\n this.props.onBlur?.(e);\n }\n };\n\n private _ref = (node: HTMLButtonElement | null) => {\n this.node = node;\n };\n}\n\nexport const isButton = (child: React.ReactChild): child is React.ReactElement<ButtonProps> => {\n return React.isValidElement<ButtonProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__BUTTON__')\n : false;\n};\n"]}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
Базовый пример кнопки.
|
|
2
2
|
|
|
3
3
|
```jsx harmony
|
|
4
|
-
import OkIcon from '@skbkontur/react-icons/Ok';
|
|
5
4
|
import { Button } from '@skbkontur/react-ui';
|
|
6
5
|
|
|
7
|
-
<Button
|
|
6
|
+
<Button>Создать отчёт</Button>;
|
|
8
7
|
```
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
У кнопки есть различные стили.
|
|
11
10
|
|
|
12
11
|
```jsx harmony
|
|
13
12
|
import { Gapped } from '@skbkontur/react-ui';
|
|
@@ -22,19 +21,32 @@ import { Gapped } from '@skbkontur/react-ui';
|
|
|
22
21
|
</Gapped>;
|
|
23
22
|
```
|
|
24
23
|
|
|
25
|
-
|
|
24
|
+
Пример кнопки с иконкой.
|
|
26
25
|
|
|
27
26
|
```jsx harmony
|
|
28
|
-
import
|
|
27
|
+
import PrintIcon from '@skbkontur/react-icons/Print';
|
|
28
|
+
import { Button } from '@skbkontur/react-ui';
|
|
29
29
|
|
|
30
|
-
<
|
|
31
|
-
<Button size="small">Small</Button>
|
|
32
|
-
<Button size="medium">Medium</Button>
|
|
33
|
-
<Button size="large">Large</Button>
|
|
34
|
-
</Gapped>;
|
|
30
|
+
<Button icon={<PrintIcon />}>Напечатать</Button>;
|
|
35
31
|
```
|
|
36
32
|
|
|
37
|
-
|
|
33
|
+
У кнопки есть 3 стандартных размера.
|
|
34
|
+
|
|
35
|
+
```jsx harmony
|
|
36
|
+
<div
|
|
37
|
+
style={{
|
|
38
|
+
display: "flex",
|
|
39
|
+
alignItems: "end",
|
|
40
|
+
justifyContent: "space-between",
|
|
41
|
+
width: "330px"
|
|
42
|
+
}}>
|
|
43
|
+
<Button size="small">Маленькая</Button>
|
|
44
|
+
<Button size="medium">Средняя</Button>
|
|
45
|
+
<Button size="large">Большая</Button>
|
|
46
|
+
</div>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Кнопки в виде стрелок.
|
|
38
50
|
|
|
39
51
|
```jsx harmony
|
|
40
52
|
import { Gapped, Button } from '@skbkontur/react-ui';
|
|
@@ -48,25 +60,23 @@ import { Gapped, Button } from '@skbkontur/react-ui';
|
|
|
48
60
|
Далее
|
|
49
61
|
</Button>
|
|
50
62
|
</Gapped>
|
|
51
|
-
<Gapped gap={5}>
|
|
52
|
-
<Button arrow="left" size="large">
|
|
53
|
-
Назад
|
|
54
|
-
</Button>
|
|
55
|
-
<Button arrow size="large">
|
|
56
|
-
Далее
|
|
57
|
-
</Button>
|
|
58
|
-
</Gapped>
|
|
59
63
|
</Gapped>;
|
|
60
64
|
```
|
|
61
65
|
|
|
62
|
-
Кнопка в состоянии
|
|
66
|
+
Кнопка в состоянии загрузки.
|
|
67
|
+
|
|
68
|
+
**Поведение:**
|
|
69
|
+
|
|
70
|
+
Кнопка на время нахождения в состоянии загрузки отключается.
|
|
71
|
+
|
|
72
|
+
Если в кнопке есть иконка, на время загрузки иконка заменяется на спиннер, если иконки нет - весь контент кнопки заменяется на спиннер.
|
|
63
73
|
|
|
64
74
|
```jsx harmony
|
|
75
|
+
import { Button, Gapped } from '@skbkontur/react-ui';
|
|
65
76
|
import OkIcon from '@skbkontur/react-icons/Ok';
|
|
66
|
-
import
|
|
77
|
+
import BookmarkIcon from '@skbkontur/react-icons/Bookmark';
|
|
67
78
|
|
|
68
79
|
const [loading, setLoading] = React.useState(false);
|
|
69
|
-
const [success, setSuccess] = React.useState(false);
|
|
70
80
|
|
|
71
81
|
const delay = time => args => new Promise(resolve => setTimeout(resolve, time, args));
|
|
72
82
|
|
|
@@ -74,19 +84,21 @@ const handleLoadingStart = () => {
|
|
|
74
84
|
delay(2000)()
|
|
75
85
|
.then(() => {
|
|
76
86
|
setLoading(false);
|
|
77
|
-
setSuccess(true);
|
|
78
87
|
})
|
|
79
|
-
.then(delay(1000))
|
|
80
|
-
.then(() => setSuccess(false));
|
|
81
88
|
};
|
|
82
89
|
|
|
83
90
|
const handleClick = () => {
|
|
84
91
|
setLoading(true);
|
|
85
|
-
setSuccess(false);
|
|
86
92
|
handleLoadingStart();
|
|
87
93
|
};
|
|
88
94
|
|
|
89
|
-
<
|
|
90
|
-
|
|
91
|
-
|
|
95
|
+
<Gapped>
|
|
96
|
+
<Button width={150} onClick={handleClick} loading={loading}>
|
|
97
|
+
Сохранить
|
|
98
|
+
</Button>
|
|
99
|
+
<Button icon={<BookmarkIcon />} width={150} onClick={handleClick} loading={loading}>
|
|
100
|
+
Сохранить
|
|
101
|
+
</Button>
|
|
102
|
+
</Gapped>
|
|
103
|
+
|
|
92
104
|
```
|
|
@@ -3,23 +3,41 @@ import PropTypes from 'prop-types';
|
|
|
3
3
|
import { Override } from '../../typings/utility-types';
|
|
4
4
|
import { CommonProps } from '../../internal/CommonWrapper';
|
|
5
5
|
export interface CheckboxProps extends CommonProps, Override<React.InputHTMLAttributes<HTMLInputElement>, {
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Контент `label`
|
|
8
|
+
*/
|
|
7
9
|
children?: React.ReactNode;
|
|
8
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Cостояние валидации при ошибке.
|
|
12
|
+
*/
|
|
9
13
|
error?: boolean;
|
|
10
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Cостояние валидации при предупреждении.
|
|
16
|
+
*/
|
|
11
17
|
warning?: boolean;
|
|
12
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* HTML-событие `mouseenter`.
|
|
20
|
+
*/
|
|
13
21
|
onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;
|
|
14
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* HTML-событие `mouseleave`.
|
|
24
|
+
*/
|
|
15
25
|
onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;
|
|
16
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* HTML-событие `mouseover`.
|
|
28
|
+
*/
|
|
17
29
|
onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;
|
|
18
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* Функция, вызываемая при изменении `value`.
|
|
32
|
+
*/
|
|
19
33
|
onValueChange?: (value: boolean) => void;
|
|
20
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* HTML-событие `onblur`.
|
|
36
|
+
*/
|
|
21
37
|
onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;
|
|
22
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* [Неопределённое состояние](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#attr-indeterminate) чекбокса из HTML.
|
|
40
|
+
*/
|
|
23
41
|
initialIndeterminate?: boolean;
|
|
24
42
|
}> {
|
|
25
43
|
}
|
|
@@ -27,9 +45,6 @@ export interface CheckboxState {
|
|
|
27
45
|
focusedByTab: boolean;
|
|
28
46
|
indeterminate: boolean;
|
|
29
47
|
}
|
|
30
|
-
/**
|
|
31
|
-
* Все свойства, кроме перечисленных, `className` и `style` передаются в `input`.
|
|
32
|
-
*/
|
|
33
48
|
export declare class Checkbox extends React.Component<CheckboxProps, CheckboxState> {
|
|
34
49
|
static __KONTUR_REACT_UI__: string;
|
|
35
50
|
static propTypes: {
|
|
@@ -53,20 +68,22 @@ export declare class Checkbox extends React.Component<CheckboxProps, CheckboxSta
|
|
|
53
68
|
UNSAFE_componentWillReceiveProps(nextProps: CheckboxProps): void;
|
|
54
69
|
render(): JSX.Element;
|
|
55
70
|
/**
|
|
71
|
+
* Программная установка фокуса чекбоксу.
|
|
56
72
|
* @public
|
|
57
73
|
*/
|
|
58
74
|
focus(): void;
|
|
59
75
|
/**
|
|
76
|
+
* Программное снятие фокуса с чекбокса.
|
|
60
77
|
* @public
|
|
61
78
|
*/
|
|
62
79
|
blur(): void;
|
|
63
80
|
/**
|
|
64
|
-
*
|
|
81
|
+
* Устанавливает чекбокс в HTML-состояние `indeterminate`.
|
|
65
82
|
* @public
|
|
66
83
|
*/
|
|
67
84
|
setIndeterminate: () => void;
|
|
68
85
|
/**
|
|
69
|
-
*
|
|
86
|
+
* Снимает с чекбокса HTML-состояние `indeterminate`.
|
|
70
87
|
* @public
|
|
71
88
|
*/
|
|
72
89
|
resetIndeterminate: () => void;
|
|
@@ -10,7 +10,25 @@ var _client = require("../../lib/client");
|
|
|
10
10
|
var _CommonWrapper = require("../../internal/CommonWrapper");
|
|
11
11
|
var _Emotion = require("../../lib/theming/Emotion");
|
|
12
12
|
|
|
13
|
-
var _Checkbox = require("./Checkbox.styles");
|
|
13
|
+
var _Checkbox = require("./Checkbox.styles");var
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
14
32
|
|
|
15
33
|
|
|
16
34
|
|
|
@@ -43,9 +61,6 @@ var _Checkbox = require("./Checkbox.styles");
|
|
|
43
61
|
|
|
44
62
|
|
|
45
63
|
|
|
46
|
-
/**
|
|
47
|
-
* Все свойства, кроме перечисленных, `className` и `style` передаются в `input`.
|
|
48
|
-
*/var
|
|
49
64
|
Checkbox = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(Checkbox, _React$Component);function Checkbox() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
|
|
50
65
|
|
|
51
66
|
|
|
@@ -108,6 +123,8 @@ Checkbox = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default
|
|
|
108
123
|
|
|
109
124
|
|
|
110
125
|
|
|
126
|
+
|
|
127
|
+
|
|
111
128
|
|
|
112
129
|
|
|
113
130
|
|
|
@@ -184,10 +201,10 @@ Checkbox = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default
|
|
|
184
201
|
_react.default.createElement("span", {
|
|
185
202
|
className: (0, _Emotion.cx)(_Checkbox.styles.box(_this.theme), _Checkbox.globalClasses.box, (_cx4 = {}, _cx4[
|
|
186
203
|
_Checkbox.styles.boxChecked(_this.theme)] = props.checked || isIndeterminate, _cx4[
|
|
204
|
+
_Checkbox.styles.boxDisabled(_this.theme)] = props.disabled, _cx4[
|
|
187
205
|
_Checkbox.styles.boxFocus(_this.theme)] = _this.state.focusedByTab, _cx4[
|
|
188
206
|
_Checkbox.styles.boxError(_this.theme)] = props.error, _cx4[
|
|
189
|
-
_Checkbox.styles.boxWarning(_this.theme)] = props.warning, _cx4
|
|
190
|
-
_Checkbox.styles.boxDisabled(_this.theme)] = props.disabled, _cx4)) },
|
|
207
|
+
_Checkbox.styles.boxWarning(_this.theme)] = props.warning, _cx4)) },
|
|
191
208
|
|
|
192
209
|
|
|
193
210
|
isIndeterminate && /*#__PURE__*/_react.default.createElement(_px.SquareIcon, { className: iconClass }) || /*#__PURE__*/_react.default.createElement(_px.OkIcon, { className: iconClass }));
|
|
@@ -257,10 +274,12 @@ Checkbox = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default
|
|
|
257
274
|
}
|
|
258
275
|
}
|
|
259
276
|
};return _this;}var _proto = Checkbox.prototype;_proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {if (nextProps.checked !== this.props.checked) {this.resetIndeterminate();}};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, _this2.props, _this2.renderMain);});} /**
|
|
277
|
+
* Программная установка фокуса чекбоксу.
|
|
260
278
|
* @public
|
|
261
279
|
*/;_proto.focus = function focus() {var _this$input;_keyListener.keyListener.isTabPressed = true;(_this$input = this.input) == null ? void 0 : _this$input.focus();} /**
|
|
280
|
+
* Программное снятие фокуса с чекбокса.
|
|
262
281
|
* @public
|
|
263
282
|
*/;_proto.blur = function blur() {var _this$input2;(_this$input2 = this.input) == null ? void 0 : _this$input2.blur();} /**
|
|
264
|
-
*
|
|
283
|
+
* Устанавливает чекбокс в HTML-состояние `indeterminate`.
|
|
265
284
|
* @public
|
|
266
285
|
*/;return Checkbox;}(_react.default.Component);exports.Checkbox = Checkbox;Checkbox.__KONTUR_REACT_UI__ = 'Checkbox';Checkbox.propTypes = { checked: _propTypes.default.bool, disabled: _propTypes.default.bool, error: _propTypes.default.bool, warning: _propTypes.default.bool, onValueChange: _propTypes.default.func, onBlur: _propTypes.default.func, onMouseEnter: _propTypes.default.func, onMouseLeave: _propTypes.default.func, onMouseOver: _propTypes.default.func };
|