@skbkontur/react-ui 3.8.4 → 3.8.5
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 +13 -0
- package/cjs/components/Checkbox/Checkbox.d.ts +31 -14
- package/cjs/components/Checkbox/Checkbox.js +24 -5
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.md +92 -51
- package/cjs/components/Hint/Hint.d.ts +33 -0
- package/cjs/components/Hint/Hint.js +34 -1
- package/cjs/components/Hint/Hint.js.map +1 -1
- package/cjs/components/Hint/Hint.md +40 -1
- package/cjs/components/Link/Link.d.ts +28 -10
- package/cjs/components/Link/Link.js +22 -4
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Link/Link.md +73 -7
- 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/SidePage/SidePage.d.ts +0 -1
- package/cjs/components/SidePage/SidePage.js +2 -16
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/SidePage/SidePage.styles.d.ts +5 -1
- package/cjs/components/SidePage/SidePage.styles.js +52 -27
- 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/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 +1 -0
- 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/Popup/Popup.js +9 -3
- package/cjs/internal/Popup/Popup.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/components/Checkbox/Checkbox/Checkbox.js +3 -5
- 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/Hint/Hint/Hint.js +4 -0
- package/components/Hint/Hint/Hint.js.map +1 -1
- package/components/Hint/Hint.d.ts +33 -0
- package/components/Hint/Hint.md +40 -1
- package/components/Link/Link/Link.js +1 -4
- 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/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +42 -7
- package/components/SidePage/SidePage/SidePage.js +8 -24
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePage.d.ts +0 -1
- package/components/SidePage/SidePage.styles/SidePage.styles.js +39 -27
- package/components/SidePage/SidePage.styles/SidePage.styles.js.map +1 -1
- package/components/SidePage/SidePage.styles.d.ts +5 -1
- 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/TokenInput/TokenInputMenu/TokenInputMenu.js +1 -1
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -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/Popup/Popup/Popup.js +6 -4
- package/internal/Popup/Popup/Popup.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/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,19 @@
|
|
|
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.8.5](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.8.4...@skbkontur/react-ui@3.8.5) (2021-11-15)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **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))
|
|
12
|
+
* **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)
|
|
13
|
+
* **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))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
6
19
|
## [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
20
|
|
|
8
21
|
|
|
@@ -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
|
+
* Цветовая схема ошибки.
|
|
12
|
+
*/
|
|
9
13
|
error?: boolean;
|
|
10
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Цветовая схема предупреждения.
|
|
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
|
|
|
@@ -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 };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Checkbox.tsx"],"names":["Checkbox","state","focusedByTab","indeterminate","props","initialIndeterminate","theme","input","componentDidMount","setIndeterminate","setState","resetIndeterminate","renderMain","error","warning","onMouseEnter","onMouseLeave","onMouseOver","onValueChange","type","rest","isIndeterminate","rootClass","styles","root","rootFallback","isIE11","isEdge","rootChecked","checked","disabled","Boolean","inputProps","className","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","onClick","handleClick","ref","inputRef","caption","children","captionClass","captionIE11","iconClass","iconUnchecked","iconFixBaseline","isFirefox","box","globalClasses","boxChecked","boxFocus","boxError","boxWarning","boxDisabled","e","requestAnimationFrame","keyListener","isTabPressed","event","currentTarget","undefined","UNSAFE_componentWillReceiveProps","nextProps","render","focus","blur","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { OkIcon, SquareIcon } from '../../internal/icons/16px';\nimport { isEdge, isFirefox, isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles, globalClasses } from './Checkbox.styles';\n\nexport interface CheckboxProps\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /** Контент `label` */\n children?: React.ReactNode;\n /** Состояние ошибки */\n error?: boolean;\n /** Состояние Предупреждения */\n warning?: boolean;\n /** Вызывается на label */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается при изменении `value` */\n onValueChange?: (value: boolean) => void;\n /** onBlur */\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n /** Состояние частичного выделения */\n initialIndeterminate?: boolean;\n }\n > {}\n\nexport interface CheckboxState {\n focusedByTab: boolean;\n indeterminate: boolean;\n}\n\n/**\n * Все свойства, кроме перечисленных, `className` и `style` передаются в `input`.\n */\nexport class Checkbox extends React.Component<CheckboxProps, CheckboxState> {\n public static __KONTUR_REACT_UI__ = 'Checkbox';\n\n public static propTypes = {\n checked: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n warning: PropTypes.bool,\n onValueChange: PropTypes.func,\n onBlur: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n };\n\n public state = {\n focusedByTab: false,\n indeterminate: this.props.initialIndeterminate || false,\n };\n\n private theme!: Theme;\n private input: Nullable<HTMLInputElement>;\n\n public componentDidMount = () => {\n if (this.state.indeterminate && this.input) {\n this.input.indeterminate = true;\n }\n };\n\n public UNSAFE_componentWillReceiveProps(nextProps: CheckboxProps) {\n if (nextProps.checked !== this.props.checked) {\n this.resetIndeterminate();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.input?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.input?.blur();\n }\n\n /**\n * Установить промежуточное значение\n * @public\n */\n public setIndeterminate = () => {\n this.setState({\n indeterminate: true,\n });\n if (this.input) {\n this.input.indeterminate = true;\n }\n };\n\n /**\n * Сбросить промежуточное значение\n * @public\n */\n public resetIndeterminate = () => {\n this.setState({\n indeterminate: false,\n });\n if (this.input) {\n this.input.indeterminate = false;\n }\n };\n\n private renderMain = (props: CommonWrapperRestProps<CheckboxProps>) => {\n const {\n error,\n warning,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onValueChange,\n type,\n initialIndeterminate,\n ...rest\n } = props;\n const isIndeterminate = this.state.indeterminate;\n\n const rootClass = cx({\n [styles.root(this.theme)]: true,\n [styles.rootFallback()]: isIE11 || isEdge,\n [styles.rootChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n\n const inputProps = {\n ...rest,\n type: 'checkbox',\n className: styles.input(),\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onClick: this.handleClick,\n ref: this.inputRef,\n };\n\n let caption = null;\n if (this.props.children) {\n const captionClass = cx({\n [styles.caption(this.theme)]: true,\n [styles.captionIE11()]: isIE11 || isEdge,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n caption = <span className={captionClass}>{this.props.children}</span>;\n }\n\n const iconClass = cx({\n [styles.iconUnchecked()]: !props.checked && !isIndeterminate,\n [styles.iconFixBaseline()]: isFirefox || isIE11 || isEdge,\n });\n\n const box = (\n <span\n className={cx(styles.box(this.theme), globalClasses.box, {\n [styles.boxChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.boxFocus(this.theme)]: this.state.focusedByTab,\n [styles.boxError(this.theme)]: props.error,\n [styles.boxWarning(this.theme)]: props.warning,\n [styles.boxDisabled(this.theme)]: props.disabled,\n })}\n >\n {(isIndeterminate && <SquareIcon className={iconClass} />) || <OkIcon className={iconClass} />}\n </span>\n );\n\n return (\n <label className={rootClass} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave} onMouseOver={onMouseOver}>\n <input {...inputProps} />\n {box}\n {caption}\n </label>\n );\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.props.onBlur?.(e);\n this.setState({ focusedByTab: false });\n };\n\n private inputRef = (ref: HTMLInputElement | null) => {\n this.input = ref;\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const checked = event.currentTarget.checked;\n this.props.onValueChange?.(checked);\n\n this.resetIndeterminate();\n\n this.props.onChange?.(event);\n };\n\n private handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n this.props.onClick?.(e);\n // support IE11's and old Edge's special behavior\n // https://github.com/jquery/jquery/issues/1698\n if (this.state.indeterminate && (isIE11 || isEdge)) {\n this.resetIndeterminate();\n // simulate correct behavior only if onValueChange is used\n // because we cant simulate real native onChange event\n if (this.props.onValueChange && this.input) {\n const checked = !this.input.checked;\n\n if (this.props.checked === undefined) {\n // in case of uncontrolled mode\n this.input.checked = checked;\n }\n\n this.props.onValueChange(checked);\n }\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Checkbox.tsx"],"names":["Checkbox","state","focusedByTab","indeterminate","props","initialIndeterminate","theme","input","componentDidMount","setIndeterminate","setState","resetIndeterminate","renderMain","error","warning","onMouseEnter","onMouseLeave","onMouseOver","onValueChange","type","rest","isIndeterminate","rootClass","styles","root","rootFallback","isIE11","isEdge","rootChecked","checked","disabled","Boolean","inputProps","className","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","onClick","handleClick","ref","inputRef","caption","children","captionClass","captionIE11","iconClass","iconUnchecked","iconFixBaseline","isFirefox","box","globalClasses","boxChecked","boxFocus","boxError","boxWarning","boxDisabled","e","requestAnimationFrame","keyListener","isTabPressed","event","currentTarget","undefined","UNSAFE_componentWillReceiveProps","nextProps","render","focus","blur","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","func"],"mappings":"kcAAA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDaA,Q;;;;;;;;;;;;;;;AAeJC,IAAAA,K,GAAQ;AACbC,MAAAA,YAAY,EAAE,KADD;AAEbC,MAAAA,aAAa,EAAE,MAAKC,KAAL,CAAWC,oBAAX,IAAmC,KAFrC,E;;;AAKPC,IAAAA,K;AACAC,IAAAA,K;;AAEDC,IAAAA,iB,GAAoB,YAAM;AAC/B,UAAI,MAAKP,KAAL,CAAWE,aAAX,IAA4B,MAAKI,KAArC,EAA4C;AAC1C,cAAKA,KAAL,CAAWJ,aAAX,GAA2B,IAA3B;AACD;AACF,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCMM,IAAAA,gB,GAAmB,YAAM;AAC9B,YAAKC,QAAL,CAAc;AACZP,QAAAA,aAAa,EAAE,IADH,EAAd;;AAGA,UAAI,MAAKI,KAAT,EAAgB;AACd,cAAKA,KAAL,CAAWJ,aAAX,GAA2B,IAA3B;AACD;AACF,K;;;;;;AAMMQ,IAAAA,kB,GAAqB,YAAM;AAChC,YAAKD,QAAL,CAAc;AACZP,QAAAA,aAAa,EAAE,KADH,EAAd;;AAGA,UAAI,MAAKI,KAAT,EAAgB;AACd,cAAKA,KAAL,CAAWJ,aAAX,GAA2B,KAA3B;AACD;AACF,K;;AAEOS,IAAAA,U,GAAa,UAACR,KAAD,EAAkD;;AAEnES,MAAAA,KAFmE;;;;;;;;;AAWjET,MAAAA,KAXiE,CAEnES,KAFmE,CAGnEC,OAHmE,GAWjEV,KAXiE,CAGnEU,OAHmE,CAInEC,YAJmE,GAWjEX,KAXiE,CAInEW,YAJmE,CAKnEC,YALmE,GAWjEZ,KAXiE,CAKnEY,YALmE,CAMnEC,WANmE,GAWjEb,KAXiE,CAMnEa,WANmE,CAOnEC,aAPmE,GAWjEd,KAXiE,CAOnEc,aAPmE,CAQnEC,IARmE,GAWjEf,KAXiE,CAQnEe,IARmE,CASnEd,oBATmE,GAWjED,KAXiE,CASnEC,oBATmE,CAUhEe,IAVgE,+CAWjEhB,KAXiE;AAYrE,UAAMiB,eAAe,GAAG,MAAKpB,KAAL,CAAWE,aAAnC;;AAEA,UAAMmB,SAAS,GAAG;AACfC,uBAAOC,IAAP,CAAY,MAAKlB,KAAjB,CADe,IACW,IADX;AAEfiB,uBAAOE,YAAP,EAFe,IAESC,kBAAUC,cAFnB;AAGfJ,uBAAOK,WAAP,CAAmB,MAAKtB,KAAxB,CAHe,IAGkBF,KAAK,CAACyB,OAAN,IAAiBR,eAHnC;AAIfE,uBAAOO,QAAP,CAAgB,MAAKxB,KAArB,CAJe,IAIeyB,OAAO,CAAC3B,KAAK,CAAC0B,QAAP,CAJtB,OAAlB;;;AAOA,UAAME,UAAU;AACXZ,MAAAA,IADW;AAEdD,QAAAA,IAAI,EAAE,UAFQ;AAGdc,QAAAA,SAAS,EAAEV,iBAAOhB,KAAP,EAHG;AAId2B,QAAAA,QAAQ,EAAE,MAAKC,YAJD;AAKdC,QAAAA,OAAO,EAAE,MAAKC,WALA;AAMdC,QAAAA,MAAM,EAAE,MAAKC,UANC;AAOdC,QAAAA,OAAO,EAAE,MAAKC,WAPA;AAQdC,QAAAA,GAAG,EAAE,MAAKC,QARI,GAAhB;;;AAWA,UAAIC,OAAO,GAAG,IAAd;AACA,UAAI,MAAKxC,KAAL,CAAWyC,QAAf,EAAyB;AACvB,YAAMC,YAAY,GAAG;AAClBvB,yBAAOqB,OAAP,CAAe,MAAKtC,KAApB,CADkB,IACW,IADX;AAElBiB,yBAAOwB,WAAP,EAFkB,IAEKrB,kBAAUC,cAFf;AAGlBJ,yBAAOO,QAAP,CAAgB,MAAKxB,KAArB,CAHkB,IAGYyB,OAAO,CAAC3B,KAAK,CAAC0B,QAAP,CAHnB,QAArB;;AAKAc,QAAAA,OAAO,gBAAG,uCAAM,SAAS,EAAEE,YAAjB,IAAgC,MAAK1C,KAAL,CAAWyC,QAA3C,CAAV;AACD;;AAED,UAAMG,SAAS,GAAG;AACfzB,uBAAO0B,aAAP,EADe,IACU,CAAC7C,KAAK,CAACyB,OAAP,IAAkB,CAACR,eAD7B;AAEfE,uBAAO2B,eAAP,EAFe,IAEYC,qBAAazB,cAAb,IAAuBC,cAFnC,QAAlB;;;AAKA,UAAMyB,GAAG;AACP;AACE,QAAA,SAAS,EAAE,iBAAG7B,iBAAO6B,GAAP,CAAW,MAAK9C,KAAhB,CAAH,EAA2B+C,wBAAcD,GAAzC;AACR7B,yBAAO+B,UAAP,CAAkB,MAAKhD,KAAvB,CADQ,IACwBF,KAAK,CAACyB,OAAN,IAAiBR,eADzC;AAERE,yBAAOgC,QAAP,CAAgB,MAAKjD,KAArB,CAFQ,IAEsB,MAAKL,KAAL,CAAWC,YAFjC;AAGRqB,yBAAOiC,QAAP,CAAgB,MAAKlD,KAArB,CAHQ,IAGsBF,KAAK,CAACS,KAH5B;AAIRU,yBAAOkC,UAAP,CAAkB,MAAKnD,KAAvB,CAJQ,IAIwBF,KAAK,CAACU,OAJ9B;AAKRS,yBAAOmC,WAAP,CAAmB,MAAKpD,KAAxB,CALQ,IAKyBF,KAAK,CAAC0B,QAL/B,QADb;;;AASIT,MAAAA,eAAe,iBAAI,6BAAC,cAAD,IAAY,SAAS,EAAE2B,SAAvB,GAApB,iBAA6D,6BAAC,UAAD,IAAQ,SAAS,EAAEA,SAAnB,GAThE,CADF;;;;AAcA;AACE,gDAAO,SAAS,EAAE1B,SAAlB,EAA6B,YAAY,EAAEP,YAA3C,EAAyD,YAAY,EAAEC,YAAvE,EAAqF,WAAW,EAAEC,WAAlG;AACE,8CAAWe,UAAX,CADF;AAEGoB,QAAAA,GAFH;AAGGR,QAAAA,OAHH,CADF;;;AAOD,K;;AAEOP,IAAAA,W,GAAc,UAACsB,CAAD,EAA8B;AAClD,UAAI,CAAC,MAAKvD,KAAL,CAAW0B,QAAhB,EAA0B;AACxB;AACA;AACA8B,QAAAA,qBAAqB,CAAC,YAAM;AAC1B,cAAIC,yBAAYC,YAAhB,EAA8B;AAC5B,kBAAKpD,QAAL,CAAc,EAAER,YAAY,EAAE,IAAhB,EAAd;AACD;AACF,SAJoB,CAArB;;AAMA,YAAI,MAAKE,KAAL,CAAWgC,OAAf,EAAwB;AACtB,gBAAKhC,KAAL,CAAWgC,OAAX,CAAmBuB,CAAnB;AACD;AACF;AACF,K;;AAEOpB,IAAAA,U,GAAa,UAACoB,CAAD,EAA2C;AAC9D,YAAKvD,KAAL,CAAWkC,MAAX,0BAAKlC,KAAL,CAAWkC,MAAX,CAAoBqB,CAApB;AACA,YAAKjD,QAAL,CAAc,EAAER,YAAY,EAAE,KAAhB,EAAd;AACD,K;;AAEOyC,IAAAA,Q,GAAW,UAACD,GAAD,EAAkC;AACnD,YAAKnC,KAAL,GAAamC,GAAb;AACD,K;;AAEOP,IAAAA,Y,GAAe,UAAC4B,KAAD,EAAgD;AACrE,UAAMlC,OAAO,GAAGkC,KAAK,CAACC,aAAN,CAAoBnC,OAApC;AACA,YAAKzB,KAAL,CAAWc,aAAX,0BAAKd,KAAL,CAAWc,aAAX,CAA2BW,OAA3B;;AAEA,YAAKlB,kBAAL;;AAEA,YAAKP,KAAL,CAAW8B,QAAX,0BAAK9B,KAAL,CAAW8B,QAAX,CAAsB6B,KAAtB;AACD,K;;AAEOtB,IAAAA,W,GAAc,UAACkB,CAAD,EAA2C;AAC/D,YAAKvD,KAAL,CAAWoC,OAAX,0BAAKpC,KAAL,CAAWoC,OAAX,CAAqBmB,CAArB;AACA;AACA;AACA,UAAI,MAAK1D,KAAL,CAAWE,aAAX,KAA6BuB,kBAAUC,cAAvC,CAAJ,EAAoD;AAClD,cAAKhB,kBAAL;AACA;AACA;AACA,YAAI,MAAKP,KAAL,CAAWc,aAAX,IAA4B,MAAKX,KAArC,EAA4C;AAC1C,cAAMsB,OAAO,GAAG,CAAC,MAAKtB,KAAL,CAAWsB,OAA5B;;AAEA,cAAI,MAAKzB,KAAL,CAAWyB,OAAX,KAAuBoC,SAA3B,EAAsC;AACpC;AACA,kBAAK1D,KAAL,CAAWsB,OAAX,GAAqBA,OAArB;AACD;;AAED,gBAAKzB,KAAL,CAAWc,aAAX,CAAyBW,OAAzB;AACD;AACF;AACF,K,sDAvLMqC,gC,GAAP,0CAAwCC,SAAxC,EAAkE,CAChE,IAAIA,SAAS,CAACtC,OAAV,KAAsB,KAAKzB,KAAL,CAAWyB,OAArC,EAA8C,CAC5C,KAAKlB,kBAAL,GACD,CACF,C,QAEMyD,M,GAAP,kBAAgB,mBACd,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAAC9D,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,oBAAO,6BAAC,4BAAD,EAAmB,MAAI,CAACF,KAAxB,EAAgC,MAAI,CAACQ,UAArC,CAAP,CACD,CAJH,CADF,CAQD,C,CAED;AACF;AACA;AACA,K,QACSyD,K,GAAP,iBAAe,iBACbR,yBAAYC,YAAZ,GAA2B,IAA3B,CACA,oBAAKvD,KAAL,iCAAY8D,KAAZ,GACD,C,CAED;AACF;AACA;AACA,K,QACSC,I,GAAP,gBAAc,kBACZ,qBAAK/D,KAAL,kCAAY+D,IAAZ,GACD,C,CAED;AACF;AACA;AACA,K,mBAlE8BC,eAAMC,S,8BAAvBxE,Q,CACGyE,mB,GAAsB,U,CADzBzE,Q,CAGG0E,S,GAAY,EACxB7C,OAAO,EAAE8C,mBAAUC,IADK,EAExB9C,QAAQ,EAAE6C,mBAAUC,IAFI,EAGxB/D,KAAK,EAAE8D,mBAAUC,IAHO,EAIxB9D,OAAO,EAAE6D,mBAAUC,IAJK,EAKxB1D,aAAa,EAAEyD,mBAAUE,IALD,EAMxBvC,MAAM,EAAEqC,mBAAUE,IANM,EAOxB9D,YAAY,EAAE4D,mBAAUE,IAPA,EAQxB7D,YAAY,EAAE2D,mBAAUE,IARA,EASxB5D,WAAW,EAAE0D,mBAAUE,IATC,E","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { OkIcon, SquareIcon } from '../../internal/icons/16px';\nimport { isEdge, isFirefox, isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles, globalClasses } from './Checkbox.styles';\n\nexport interface CheckboxProps\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Контент `label`\n */\n children?: React.ReactNode;\n /**\n * Цветовая схема ошибки.\n */\n error?: boolean;\n /**\n * Цветовая схема предупреждения.\n */\n warning?: boolean;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * Функция, вызываемая при изменении `value`.\n */\n onValueChange?: (value: boolean) => void;\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n /**\n * [Неопределённое состояние](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#attr-indeterminate) чекбокса из HTML.\n */\n initialIndeterminate?: boolean;\n }\n > {}\n\nexport interface CheckboxState {\n focusedByTab: boolean;\n indeterminate: boolean;\n}\n\nexport class Checkbox extends React.Component<CheckboxProps, CheckboxState> {\n public static __KONTUR_REACT_UI__ = 'Checkbox';\n\n public static propTypes = {\n checked: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n warning: PropTypes.bool,\n onValueChange: PropTypes.func,\n onBlur: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n };\n\n public state = {\n focusedByTab: false,\n indeterminate: this.props.initialIndeterminate || false,\n };\n\n private theme!: Theme;\n private input: Nullable<HTMLInputElement>;\n\n public componentDidMount = () => {\n if (this.state.indeterminate && this.input) {\n this.input.indeterminate = true;\n }\n };\n\n public UNSAFE_componentWillReceiveProps(nextProps: CheckboxProps) {\n if (nextProps.checked !== this.props.checked) {\n this.resetIndeterminate();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Программная установка фокуса чекбоксу.\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.input?.focus();\n }\n\n /**\n * Программное снятие фокуса с чекбокса.\n * @public\n */\n public blur() {\n this.input?.blur();\n }\n\n /**\n * Устанавливает чекбокс в HTML-состояние `indeterminate`.\n * @public\n */\n public setIndeterminate = () => {\n this.setState({\n indeterminate: true,\n });\n if (this.input) {\n this.input.indeterminate = true;\n }\n };\n\n /**\n * Снимает с чекбокса HTML-состояние `indeterminate`.\n * @public\n */\n public resetIndeterminate = () => {\n this.setState({\n indeterminate: false,\n });\n if (this.input) {\n this.input.indeterminate = false;\n }\n };\n\n private renderMain = (props: CommonWrapperRestProps<CheckboxProps>) => {\n const {\n error,\n warning,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onValueChange,\n type,\n initialIndeterminate,\n ...rest\n } = props;\n const isIndeterminate = this.state.indeterminate;\n\n const rootClass = cx({\n [styles.root(this.theme)]: true,\n [styles.rootFallback()]: isIE11 || isEdge,\n [styles.rootChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n\n const inputProps = {\n ...rest,\n type: 'checkbox',\n className: styles.input(),\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onClick: this.handleClick,\n ref: this.inputRef,\n };\n\n let caption = null;\n if (this.props.children) {\n const captionClass = cx({\n [styles.caption(this.theme)]: true,\n [styles.captionIE11()]: isIE11 || isEdge,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n caption = <span className={captionClass}>{this.props.children}</span>;\n }\n\n const iconClass = cx({\n [styles.iconUnchecked()]: !props.checked && !isIndeterminate,\n [styles.iconFixBaseline()]: isFirefox || isIE11 || isEdge,\n });\n\n const box = (\n <span\n className={cx(styles.box(this.theme), globalClasses.box, {\n [styles.boxChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.boxFocus(this.theme)]: this.state.focusedByTab,\n [styles.boxError(this.theme)]: props.error,\n [styles.boxWarning(this.theme)]: props.warning,\n [styles.boxDisabled(this.theme)]: props.disabled,\n })}\n >\n {(isIndeterminate && <SquareIcon className={iconClass} />) || <OkIcon className={iconClass} />}\n </span>\n );\n\n return (\n <label className={rootClass} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave} onMouseOver={onMouseOver}>\n <input {...inputProps} />\n {box}\n {caption}\n </label>\n );\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.props.onBlur?.(e);\n this.setState({ focusedByTab: false });\n };\n\n private inputRef = (ref: HTMLInputElement | null) => {\n this.input = ref;\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const checked = event.currentTarget.checked;\n this.props.onValueChange?.(checked);\n\n this.resetIndeterminate();\n\n this.props.onChange?.(event);\n };\n\n private handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n this.props.onClick?.(e);\n // support IE11's and old Edge's special behavior\n // https://github.com/jquery/jquery/issues/1698\n if (this.state.indeterminate && (isIE11 || isEdge)) {\n this.resetIndeterminate();\n // simulate correct behavior only if onValueChange is used\n // because we cant simulate real native onChange event\n if (this.props.onValueChange && this.input) {\n const checked = !this.input.checked;\n\n if (this.props.checked === undefined) {\n // in case of uncontrolled mode\n this.input.checked = checked;\n }\n\n this.props.onValueChange(checked);\n }\n }\n };\n}\n"]}
|
|
@@ -1,63 +1,104 @@
|
|
|
1
|
+
Базовый пример чекбокса.
|
|
2
|
+
|
|
1
3
|
```jsx harmony
|
|
2
4
|
const [checked, setChecked] = React.useState(false);
|
|
3
5
|
|
|
4
6
|
<Checkbox checked={checked} onValueChange={setChecked}>
|
|
5
|
-
|
|
7
|
+
Обычный чекбокс
|
|
6
8
|
</Checkbox>;
|
|
7
9
|
```
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
У чекбокса есть несколько состояний.
|
|
12
|
+
|
|
13
|
+
```jsx harmony
|
|
14
|
+
import { Gapped } from '@skbkontur/react-ui';
|
|
15
|
+
|
|
16
|
+
const CheckboxWithState = ({children, ...props}) => {
|
|
17
|
+
const [checked, setChecked] = React.useState(false);
|
|
18
|
+
|
|
19
|
+
return (
|
|
20
|
+
<Checkbox checked={checked} onValueChange={setChecked} {...props}>
|
|
21
|
+
{children}
|
|
22
|
+
</Checkbox>
|
|
23
|
+
)
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
<Gapped vertical>
|
|
27
|
+
<CheckboxWithState>
|
|
28
|
+
Обычный чекбокс
|
|
29
|
+
</CheckboxWithState>
|
|
30
|
+
<CheckboxWithState error>
|
|
31
|
+
Чекбокс в состоянии ошибки
|
|
32
|
+
</CheckboxWithState>
|
|
33
|
+
<CheckboxWithState warning>
|
|
34
|
+
Чекбокс в состоянии предупреждения
|
|
35
|
+
</CheckboxWithState>
|
|
36
|
+
</Gapped>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Пример использования методов чекбокса `focus()` и `blur()`.
|
|
10
40
|
|
|
11
41
|
```jsx harmony
|
|
12
42
|
import { Button, Checkbox, Gapped } from '@skbkontur/react-ui';
|
|
13
43
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
44
|
+
const [checked, setChecked] = React.useState(false);
|
|
45
|
+
|
|
46
|
+
let checkboxInstance = React.useRef(null);
|
|
47
|
+
|
|
48
|
+
<Gapped vertical>
|
|
49
|
+
<Checkbox
|
|
50
|
+
ref={el => checkboxInstance = el}
|
|
51
|
+
checked={checked}
|
|
52
|
+
onValueChange={setChecked}
|
|
53
|
+
>
|
|
54
|
+
Пример чекбокса с программным фокусом
|
|
55
|
+
</Checkbox>
|
|
56
|
+
<Gapped gap={12}>
|
|
57
|
+
<Button
|
|
58
|
+
onClick={() => {
|
|
59
|
+
checkboxInstance.focus();
|
|
60
|
+
}}
|
|
61
|
+
>
|
|
62
|
+
Дать фокус
|
|
63
|
+
</Button>
|
|
64
|
+
<Button
|
|
65
|
+
onClick={() => {
|
|
66
|
+
checkboxInstance.blur();
|
|
67
|
+
}}
|
|
68
|
+
>
|
|
69
|
+
Забрать фокус
|
|
70
|
+
</Button>
|
|
71
|
+
</Gapped>
|
|
72
|
+
</Gapped>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Чекбокс может находится в неопределённом состоянии. <br/> Это состояние полностью копирует поведение состояния [`indeterminate`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#attr-indeterminate) из HTML.
|
|
76
|
+
|
|
77
|
+
Это состояние влияет только на внешний вид и не влияет на состояние `checked`.
|
|
78
|
+
|
|
79
|
+
```jsx harmony
|
|
80
|
+
import { Button, Checkbox, Gapped } from '@skbkontur/react-ui';
|
|
81
|
+
|
|
82
|
+
const [checked, setChecked] = React.useState(false);
|
|
83
|
+
|
|
84
|
+
let checkboxInstance = React.useRef(null);
|
|
85
|
+
|
|
86
|
+
<Gapped vertical>
|
|
87
|
+
<Checkbox
|
|
88
|
+
initialIndeterminate
|
|
89
|
+
checked={checked}
|
|
90
|
+
onValueChange={setChecked}
|
|
91
|
+
ref={el => checkboxInstance = el}
|
|
92
|
+
>
|
|
93
|
+
Неопределённый чекбокс
|
|
94
|
+
</Checkbox>
|
|
95
|
+
<Gapped>
|
|
96
|
+
<Button onClick={() => checkboxInstance.setIndeterminate()}>
|
|
97
|
+
Перевести в неопределённое состояние
|
|
98
|
+
</Button>
|
|
99
|
+
<Button onClick={() => checkboxInstance.resetIndeterminate()}>
|
|
100
|
+
Сбросить неопределённое состояние
|
|
101
|
+
</Button>
|
|
102
|
+
</Gapped>
|
|
103
|
+
</Gapped>
|
|
63
104
|
```
|
|
@@ -3,19 +3,52 @@ import { MouseEventType } from '../../typings/event-types';
|
|
|
3
3
|
import { CommonProps } from '../../internal/CommonWrapper';
|
|
4
4
|
export interface HintProps extends CommonProps {
|
|
5
5
|
children?: React.ReactNode;
|
|
6
|
+
/**
|
|
7
|
+
* Переводит отображение подсказки в _"ручной режим"_.
|
|
8
|
+
*
|
|
9
|
+
* В _"ручном режиме"_ подcказку можно активировать только задав значение пропу `opened`.
|
|
10
|
+
*/
|
|
6
11
|
manual?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Задаёт максимальную ширину подсказки.
|
|
14
|
+
*/
|
|
7
15
|
maxWidth?: React.CSSProperties['maxWidth'];
|
|
16
|
+
/**
|
|
17
|
+
* HTML-событие `mouseenter`.
|
|
18
|
+
*/
|
|
8
19
|
onMouseEnter?: (event: MouseEventType) => void;
|
|
20
|
+
/**
|
|
21
|
+
* HTML-событие `mouseleave`.
|
|
22
|
+
*/
|
|
9
23
|
onMouseLeave?: (event: MouseEventType) => void;
|
|
24
|
+
/**
|
|
25
|
+
* Если `true` - подсказка будет открыта.
|
|
26
|
+
*
|
|
27
|
+
* _Примечание_: работает только при `manual=true`.
|
|
28
|
+
*/
|
|
10
29
|
opened?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Расположение подсказки относительно текста.
|
|
32
|
+
*
|
|
33
|
+
* **Допустимые значения**: `"top"`, `"right"`, `"bottom"`, `"left"`, `"top left"`, `"top center"`, `"top right"`, `"right top"`, `"right middle"`, `"right bottom"`, `"bottom left"`, `"bottom center"`, `"bottom right"`, `"left top"`, `"left middle"`, `"left bottom"`.
|
|
34
|
+
*/
|
|
11
35
|
pos: 'top' | 'right' | 'bottom' | 'left' | 'top left' | 'top center' | 'top right' | 'bottom left' | 'bottom center' | 'bottom right' | 'left top' | 'left middle' | 'left bottom' | 'right top' | 'right middle' | 'right bottom';
|
|
36
|
+
/**
|
|
37
|
+
* Текст подсказки.
|
|
38
|
+
*/
|
|
12
39
|
text: React.ReactNode;
|
|
40
|
+
/**
|
|
41
|
+
* Отключает анимацию.
|
|
42
|
+
*/
|
|
13
43
|
disableAnimations: boolean;
|
|
14
44
|
useWrapper: boolean;
|
|
15
45
|
}
|
|
16
46
|
export interface HintState {
|
|
17
47
|
opened: boolean;
|
|
18
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Всплывающая подсказка, которая по умолчанию отображается при наведении на элемент. <br/> Можно задать другие условия отображения.
|
|
51
|
+
*/
|
|
19
52
|
export declare class Hint extends React.Component<HintProps, HintState> {
|
|
20
53
|
static __KONTUR_REACT_UI__: string;
|
|
21
54
|
static defaultProps: {
|
|
@@ -33,6 +33,36 @@ var HINT_BORDER_COLOR = 'transparent';
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
36
66
|
|
|
37
67
|
|
|
38
68
|
|
|
@@ -59,9 +89,12 @@ var Positions = [
|
|
|
59
89
|
'left bottom',
|
|
60
90
|
'right middle',
|
|
61
91
|
'right top',
|
|
62
|
-
'right bottom'];
|
|
92
|
+
'right bottom'];
|
|
63
93
|
|
|
64
94
|
|
|
95
|
+
/**
|
|
96
|
+
* Всплывающая подсказка, которая по умолчанию отображается при наведении на элемент. <br/> Можно задать другие условия отображения.
|
|
97
|
+
*/var
|
|
65
98
|
Hint = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(Hint, _React$Component);function Hint() {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.
|
|
66
99
|
|
|
67
100
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Hint.tsx"],"names":["HINT_BORDER_COLOR","Positions","Hint","state","opened","props","manual","timer","theme","getPositions","filter","x","startsWith","pos","handleMouseEnter","e","window","setTimeout","open","onMouseEnter","handleMouseLeave","clearTimeout","setState","onMouseLeave","UNSAFE_componentWillReceiveProps","nextProps","componentWillUnmount","render","ThemeFactory","create","popupPinOffset","hintPinOffset","popupMargin","hintMargin","popupBorder","hintBorder","popupBorderRadius","hintBorderRadius","renderMain","children","hintBgColor","disableAnimations","useWrapper","renderContent","text","maxWidth","className","styles","content","contentCenter","React","Component","__KONTUR_REACT_UI__","defaultProps","isTestEnv"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Theme } from '../../lib/theming/Theme';\nimport { Popup, PopupPosition } from '../../internal/Popup';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './Hint.styles';\n\nconst HINT_BORDER_COLOR = 'transparent';\n\nexport interface HintProps extends CommonProps {\n children?: React.ReactNode;\n manual?: boolean;\n maxWidth?: React.CSSProperties['maxWidth'];\n onMouseEnter?: (event: MouseEventType) => void;\n onMouseLeave?: (event: MouseEventType) => void;\n opened?: boolean;\n pos:\n | 'top'\n | 'right'\n | 'bottom'\n | 'left'\n | 'top left'\n | 'top center'\n | 'top right'\n | 'bottom left'\n | 'bottom center'\n | 'bottom right'\n | 'left top'\n | 'left middle'\n | 'left bottom'\n | 'right top'\n | 'right middle'\n | 'right bottom';\n text: React.ReactNode;\n disableAnimations: boolean;\n useWrapper: boolean;\n}\n\nexport interface HintState {\n opened: boolean;\n}\n\nconst Positions: PopupPosition[] = [\n 'top center',\n 'top left',\n 'top right',\n 'bottom center',\n 'bottom left',\n 'bottom right',\n 'left middle',\n 'left top',\n 'left bottom',\n 'right middle',\n 'right top',\n 'right bottom',\n];\n\nexport class Hint extends React.Component<HintProps, HintState> {\n public static __KONTUR_REACT_UI__ = 'Hint';\n\n public static defaultProps = {\n pos: 'top',\n manual: false,\n opened: false,\n maxWidth: 200,\n disableAnimations: isTestEnv,\n useWrapper: false,\n };\n\n public state: HintState = {\n opened: this.props.manual ? !!this.props.opened : false,\n };\n\n private timer: Nullable<number> = null;\n private theme!: Theme;\n\n public UNSAFE_componentWillReceiveProps(nextProps: HintProps) {\n if (!nextProps.manual) {\n return;\n }\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n if (nextProps.opened !== this.props.opened) {\n this.setState({ opened: !!nextProps.opened });\n }\n }\n\n public componentWillUnmount() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.hintPinOffset,\n popupMargin: theme.hintMargin,\n popupBorder: theme.hintBorder,\n popupBorderRadius: theme.hintBorderRadius,\n },\n this.theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n return (\n <CommonWrapper {...this.props}>\n <Popup\n hasPin\n opened={this.state.opened}\n anchorElement={this.props.children}\n positions={this.getPositions()}\n backgroundColor={this.theme.hintBgColor}\n borderColor={HINT_BORDER_COLOR}\n disableAnimations={this.props.disableAnimations}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n useWrapper={this.props.useWrapper}\n >\n {this.renderContent()}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private renderContent() {\n if (!this.props.text) {\n return null;\n }\n\n const { pos, maxWidth } = this.props;\n const className = cx({\n [styles.content(this.theme)]: true,\n [styles.contentCenter(this.theme)]: pos === 'top' || pos === 'bottom',\n });\n return (\n <div className={className} style={{ maxWidth }}>\n {this.props.text}\n </div>\n );\n }\n\n private getPositions = (): PopupPosition[] => {\n return Positions.filter((x) => x.startsWith(this.props.pos));\n };\n\n private handleMouseEnter = (e: MouseEventType) => {\n if (!this.props.manual && !this.timer) {\n this.timer = window.setTimeout(this.open, 400);\n }\n\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: MouseEventType) => {\n if (!this.props.manual && this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n this.setState({ opened: false });\n }\n\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private open = () => {\n this.setState({ opened: true });\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Hint.tsx"],"names":["HINT_BORDER_COLOR","Positions","Hint","state","opened","props","manual","timer","theme","getPositions","filter","x","startsWith","pos","handleMouseEnter","e","window","setTimeout","open","onMouseEnter","handleMouseLeave","clearTimeout","setState","onMouseLeave","UNSAFE_componentWillReceiveProps","nextProps","componentWillUnmount","render","ThemeFactory","create","popupPinOffset","hintPinOffset","popupMargin","hintMargin","popupBorder","hintBorder","popupBorderRadius","hintBorderRadius","renderMain","children","hintBgColor","disableAnimations","useWrapper","renderContent","text","maxWidth","className","styles","content","contentCenter","React","Component","__KONTUR_REACT_UI__","defaultProps","isTestEnv"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Theme } from '../../lib/theming/Theme';\nimport { Popup, PopupPosition } from '../../internal/Popup';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './Hint.styles';\n\nconst HINT_BORDER_COLOR = 'transparent';\n\nexport interface HintProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Переводит отображение подсказки в _\"ручной режим\"_.\n *\n * В _\"ручном режиме\"_ подcказку можно активировать только задав значение пропу `opened`.\n */\n manual?: boolean;\n /**\n * Задаёт максимальную ширину подсказки.\n */\n maxWidth?: React.CSSProperties['maxWidth'];\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: (event: MouseEventType) => void;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: (event: MouseEventType) => void;\n /**\n * Если `true` - подсказка будет открыта.\n *\n * _Примечание_: работает только при `manual=true`.\n */\n opened?: boolean;\n /**\n * Расположение подсказки относительно текста.\n *\n * **Допустимые значения**: `\"top\"`, `\"right\"`, `\"bottom\"`, `\"left\"`, `\"top left\"`, `\"top center\"`, `\"top right\"`, `\"right top\"`, `\"right middle\"`, `\"right bottom\"`, `\"bottom left\"`, `\"bottom center\"`, `\"bottom right\"`, `\"left top\"`, `\"left middle\"`, `\"left bottom\"`.\n */\n pos:\n | 'top'\n | 'right'\n | 'bottom'\n | 'left'\n | 'top left'\n | 'top center'\n | 'top right'\n | 'bottom left'\n | 'bottom center'\n | 'bottom right'\n | 'left top'\n | 'left middle'\n | 'left bottom'\n | 'right top'\n | 'right middle'\n | 'right bottom';\n /**\n * Текст подсказки.\n */\n text: React.ReactNode;\n /**\n * Отключает анимацию.\n */\n disableAnimations: boolean;\n useWrapper: boolean;\n}\n\nexport interface HintState {\n opened: boolean;\n}\n\nconst Positions: PopupPosition[] = [\n 'top center',\n 'top left',\n 'top right',\n 'bottom center',\n 'bottom left',\n 'bottom right',\n 'left middle',\n 'left top',\n 'left bottom',\n 'right middle',\n 'right top',\n 'right bottom',\n];\n\n/**\n * Всплывающая подсказка, которая по умолчанию отображается при наведении на элемент. <br/> Можно задать другие условия отображения.\n */\nexport class Hint extends React.Component<HintProps, HintState> {\n public static __KONTUR_REACT_UI__ = 'Hint';\n\n public static defaultProps = {\n pos: 'top',\n manual: false,\n opened: false,\n maxWidth: 200,\n disableAnimations: isTestEnv,\n useWrapper: false,\n };\n\n public state: HintState = {\n opened: this.props.manual ? !!this.props.opened : false,\n };\n\n private timer: Nullable<number> = null;\n private theme!: Theme;\n\n public UNSAFE_componentWillReceiveProps(nextProps: HintProps) {\n if (!nextProps.manual) {\n return;\n }\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n if (nextProps.opened !== this.props.opened) {\n this.setState({ opened: !!nextProps.opened });\n }\n }\n\n public componentWillUnmount() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.hintPinOffset,\n popupMargin: theme.hintMargin,\n popupBorder: theme.hintBorder,\n popupBorderRadius: theme.hintBorderRadius,\n },\n this.theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n return (\n <CommonWrapper {...this.props}>\n <Popup\n hasPin\n opened={this.state.opened}\n anchorElement={this.props.children}\n positions={this.getPositions()}\n backgroundColor={this.theme.hintBgColor}\n borderColor={HINT_BORDER_COLOR}\n disableAnimations={this.props.disableAnimations}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n useWrapper={this.props.useWrapper}\n >\n {this.renderContent()}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private renderContent() {\n if (!this.props.text) {\n return null;\n }\n\n const { pos, maxWidth } = this.props;\n const className = cx({\n [styles.content(this.theme)]: true,\n [styles.contentCenter(this.theme)]: pos === 'top' || pos === 'bottom',\n });\n return (\n <div className={className} style={{ maxWidth }}>\n {this.props.text}\n </div>\n );\n }\n\n private getPositions = (): PopupPosition[] => {\n return Positions.filter((x) => x.startsWith(this.props.pos));\n };\n\n private handleMouseEnter = (e: MouseEventType) => {\n if (!this.props.manual && !this.timer) {\n this.timer = window.setTimeout(this.open, 400);\n }\n\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: MouseEventType) => {\n if (!this.props.manual && this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n this.setState({ opened: false });\n }\n\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private open = () => {\n this.setState({ opened: true });\n };\n}\n"]}
|
|
@@ -1,3 +1,42 @@
|
|
|
1
|
+
Базовый пример всплывающей подсказки.
|
|
2
|
+
|
|
1
3
|
```jsx harmony
|
|
2
|
-
<Hint text="
|
|
4
|
+
<Hint text="Подсказка">Базовая</Hint>
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Пример подсказки, всегда всплывающей слева.
|
|
8
|
+
|
|
9
|
+
```jsx harmony
|
|
10
|
+
<Hint pos={"left"} text="Подсказка слева">Всегда всплывает слева</Hint>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Пример всплывающей подсказки с ограниченной шириной.
|
|
14
|
+
```jsx harmony
|
|
15
|
+
<Hint
|
|
16
|
+
maxWidth="150px"
|
|
17
|
+
text="Очень много текста, рассказывающего про этот очень непонятный элемент"
|
|
18
|
+
>
|
|
19
|
+
Очень непонятный элемент
|
|
20
|
+
</Hint>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Пример всплывающей подсказки, открытие которой контролируется кнопкой.
|
|
24
|
+
|
|
25
|
+
```jsx harmony
|
|
26
|
+
import { Button, Gapped } from '@skbkontur/react-ui';
|
|
27
|
+
|
|
28
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
29
|
+
|
|
30
|
+
<Gapped>
|
|
31
|
+
<Hint opened={isOpen} manual text="Подсказка">Управляемая удалённо</Hint>
|
|
32
|
+
<Button onClick={() => setIsOpen(!isOpen)}>
|
|
33
|
+
{isOpen ? "Закрыть подсказку" : "Открыть подсказку"}
|
|
34
|
+
</Button>
|
|
35
|
+
</Gapped>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Пример подсказки, всплывающей без анимации.
|
|
39
|
+
|
|
40
|
+
```jsx harmony
|
|
41
|
+
<Hint disableAnimations text={"Нет анимации :("}>Есть анимация?</Hint>
|
|
3
42
|
```
|