@skbkontur/react-ui 5.0.10 → 5.0.11
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 +12 -0
- package/cjs/components/Dropdown/Dropdown.d.ts +2 -2
- package/cjs/components/Dropdown/Dropdown.js +8 -8
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.js +23 -23
- package/cjs/components/MenuItem/MenuItem.js.map +1 -1
- package/cjs/components/PasswordInput/PasswordInput.js +1 -1
- package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
- package/cjs/internal/Menu/Menu.d.ts +2 -1
- package/cjs/internal/Menu/Menu.js +4 -2
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/components/Dropdown/Dropdown/Dropdown.js +11 -11
- package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/Dropdown.d.ts +2 -2
- package/components/MenuItem/MenuItem/MenuItem.js +41 -35
- package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/components/PasswordInput/PasswordInput/PasswordInput.js +1 -1
- package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
- package/internal/Menu/Menu/Menu.js +6 -3
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/Menu/Menu.d.ts +2 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,18 @@
|
|
|
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
|
+
## [5.0.11](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.0.10...@skbkontur/react-ui@5.0.11) (2025-03-03)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **Combobox:** use ComboBoxMenuDataTids in Menu ([#3601](https://github.com/skbkontur/retail-ui/issues/3601)) ([ae8afea](https://github.com/skbkontur/retail-ui/commit/ae8afea4684cfbfa7d03c0abe273a0f062943524))
|
|
12
|
+
* **PasswordInput:** prevent Input root data-tid override ([#3598](https://github.com/skbkontur/retail-ui/issues/3598)) ([61b2e83](https://github.com/skbkontur/retail-ui/commit/61b2e8303acc4446872e73f7a87f177b55a0fc37))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
6
18
|
## [5.0.10](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.0.9...@skbkontur/react-ui@5.0.10) (2025-01-30)
|
|
7
19
|
|
|
8
20
|
|
|
@@ -4,7 +4,7 @@ import { MenuHeader } from '../MenuHeader';
|
|
|
4
4
|
import { MenuItem } from '../MenuItem';
|
|
5
5
|
import { MenuSeparator } from '../MenuSeparator';
|
|
6
6
|
import { ButtonUse } from '../Button';
|
|
7
|
-
import { CommonProps
|
|
7
|
+
import { CommonProps } from '../../internal/CommonWrapper';
|
|
8
8
|
import { SizeProp } from '../../lib/types/props';
|
|
9
9
|
export interface DropdownProps extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>, Pick<HTMLAttributes<HTMLElement>, 'id'>, CommonProps {
|
|
10
10
|
/**
|
|
@@ -121,7 +121,7 @@ export declare class Dropdown extends React.Component<DropdownProps> {
|
|
|
121
121
|
private setRootNode;
|
|
122
122
|
private theme;
|
|
123
123
|
render(): React.JSX.Element;
|
|
124
|
-
renderMain: (
|
|
124
|
+
renderMain: () => React.JSX.Element;
|
|
125
125
|
/**
|
|
126
126
|
* @public
|
|
127
127
|
*/
|
|
@@ -35,7 +35,8 @@ var PASS_PROPS = {
|
|
|
35
35
|
onMouseOver: true,
|
|
36
36
|
menuPos: true,
|
|
37
37
|
id: true,
|
|
38
|
-
'aria-describedby': true
|
|
38
|
+
'aria-describedby': true,
|
|
39
|
+
'aria-label': true
|
|
39
40
|
};
|
|
40
41
|
|
|
41
42
|
|
|
@@ -197,21 +198,20 @@ Dropdown = exports.Dropdown = (0, _rootNode.rootNode)(_class = (_Dropdown = /*#_
|
|
|
197
198
|
|
|
198
199
|
|
|
199
200
|
|
|
200
|
-
renderMain = function (
|
|
201
|
+
renderMain = function () {
|
|
202
|
+
var _this$props = _this.props,caption = _this$props.caption,icon = _this$props.icon,rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, _excluded);
|
|
201
203
|
var items = _react.default.Children.map(_this.props.children, function (item) {return item;}) || [];
|
|
202
204
|
|
|
203
205
|
return /*#__PURE__*/(
|
|
204
|
-
_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: _this.setRootNode },
|
|
206
|
+
_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: _this.setRootNode }, rest), /*#__PURE__*/
|
|
205
207
|
_react.default.createElement(_Select.Select, (0, _extends2.default)({
|
|
206
208
|
"data-tid": DropdownDataTids.root,
|
|
207
209
|
ref: _this._refSelect },
|
|
208
|
-
(0, _filterProps.filterProps)(
|
|
210
|
+
(0, _filterProps.filterProps)(rest, PASS_PROPS), {
|
|
209
211
|
value: caption,
|
|
210
212
|
items: items,
|
|
211
213
|
_icon: icon,
|
|
212
|
-
renderValue: renderValue
|
|
213
|
-
size: _this.props.size,
|
|
214
|
-
"aria-label": _this.props['aria-label'] })
|
|
214
|
+
renderValue: renderValue })
|
|
215
215
|
)
|
|
216
216
|
));
|
|
217
217
|
|
|
@@ -237,7 +237,7 @@ Dropdown = exports.Dropdown = (0, _rootNode.rootNode)(_class = (_Dropdown = /*#_
|
|
|
237
237
|
|
|
238
238
|
_refSelect = function (element) {
|
|
239
239
|
_this._select = element;
|
|
240
|
-
};return _this;}(0, _inheritsLoose2.default)(Dropdown, _React$Component);var _proto = Dropdown.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = (0, _getDropdownTheme.getDropdownTheme)(theme);return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _this2.theme }, _this2.renderMain(
|
|
240
|
+
};return _this;}(0, _inheritsLoose2.default)(Dropdown, _React$Component);var _proto = Dropdown.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = (0, _getDropdownTheme.getDropdownTheme)(theme);return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _this2.theme }, _this2.renderMain());});}; /**
|
|
241
241
|
* @public
|
|
242
242
|
*/_proto.open = function open() {if (this._select) {this._select.open();}} /**
|
|
243
243
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_propTypes","_filterProps","_MenuHeader","_MenuItem","_MenuSeparator","_Select","_CommonWrapper","_rootNode","_ThemeContext","_getDropdownTheme","_excluded","_class","_Dropdown","PASS_PROPS","_renderButton","error","disabled","disablePortal","menuAlign","menuWidth","maxMenuHeight","use","size","warning","width","onOpen","onClose","onMouseEnter","onMouseLeave","onMouseOver","menuPos","id","DropdownDataTids","exports","root","Dropdown","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","renderMain","_ref","caption","icon","props","_objectWithoutPropertiesLoose2","default","items","React","Children","map","children","item","createElement","CommonWrapper","_extends2","rootNodeRef","setRootNode","Select","ref","_refSelect","filterProps","value","_icon","renderValue","element","_select","_inheritsLoose2","_proto","prototype","render","_this2","ThemeContext","Consumer","theme","getDropdownTheme","Provider","open","close","Component","__KONTUR_REACT_UI__","displayName","Header","MenuHeader","MenuItem","Separator","MenuSeparator","propTypes","PropTypes","node","isRequired","bool","number","oneOf","oneOfType","string","any","func"],"sources":["Dropdown.tsx"],"sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { filterProps } from '../../lib/filterProps';\nimport { MenuHeader } from '../MenuHeader';\nimport { MenuItem } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { Select } from '../Select';\nimport { Nullable } from '../../typings/utility-types';\nimport { ButtonUse } from '../Button';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { getDropdownTheme } from './getDropdownTheme';\n\nconst PASS_PROPS = {\n _renderButton: true,\n error: true,\n disabled: true,\n disablePortal: true,\n menuAlign: true,\n menuWidth: true,\n maxMenuHeight: true,\n use: true,\n size: true,\n warning: true,\n width: true,\n onOpen: true,\n onClose: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n menuPos: true,\n id: true,\n 'aria-describedby': true,\n};\n\nexport interface DropdownProps\n extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n CommonProps {\n /**\n * Подпись на кнопке.\n */\n caption: React.ReactNode;\n /**\n * Иконка слева от текста кнопки\n */\n icon?: React.ReactElement<any>;\n width?: React.CSSProperties['width'];\n\n /** @ignore */\n _renderButton?: (params: any) => JSX.Element;\n\n /**\n * Отключает использование портала\n */\n disablePortal?: boolean;\n\n /**\n * Визуально отключает Dropdown\n */\n disabled?: boolean;\n\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n maxMenuHeight?: number;\n /**\n * Позволяет вручную задать текущую позицию выпадающего окна\n */\n menuPos?: 'top' | 'bottom';\n menuAlign?: 'left' | 'right';\n menuWidth?: number | string;\n size?: SizeProp;\n\n /**\n * Смотри Button.\n */\n use?: ButtonUse;\n\n /**\n * Вызывается при закрытии меню.\n */\n onClose?: () => void;\n /**\n * Вызывается при открытии меню.\n */\n onOpen?: () => void;\n onMouseEnter?: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseLeave?: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseOver?: (event: React.MouseEvent<HTMLElement>) => void;\n}\n\ntype DropdownSelectType = Select<React.ReactNode, React.ReactNode>;\n\nexport const DropdownDataTids = {\n root: 'Dropdown__root',\n} as const;\n\n/**\n * Выпадающее меню.\n *\n */\n@rootNode\nexport class Dropdown extends React.Component<DropdownProps> {\n public static __KONTUR_REACT_UI__ = 'Dropdown';\n public static displayName = 'Dropdown';\n\n public static Header = MenuHeader;\n public static MenuItem = MenuItem;\n public static Separator = MenuSeparator;\n\n public static propTypes = {\n /**\n * Подпись на кнопке.\n */\n caption: PropTypes.node.isRequired,\n\n /**\n * Отключает использование портала\n */\n disablePortal: PropTypes.bool,\n\n /**\n * Визуально отключает Dropdown\n */\n disabled: PropTypes.bool,\n\n /**\n * Визуально показать наличие ошибки.\n */\n error: PropTypes.bool,\n\n /**\n * Иконка слева от текста кнопки\n */\n icon: PropTypes.node,\n\n maxMenuHeight: PropTypes.number,\n\n menuAlign: PropTypes.oneOf(['left', 'right']),\n\n menuWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n\n /**\n * Смотри Button.\n */\n use: PropTypes.any,\n\n /**\n * Визуально показать наличие предупреждения.\n */\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Вызывается при закрытии меню.\n */\n onClose: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n /**\n * Вызывается при открытии меню.\n */\n onOpen: PropTypes.func,\n };\n\n private _select: Nullable<DropdownSelectType>;\n private setRootNode!: TSetRootNode;\n private theme!: Theme;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getDropdownTheme(theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain(this.props)}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain = ({ caption, icon, ...props }: CommonWrapperRestProps<DropdownProps>) => {\n const items = React.Children.map(this.props.children, (item) => item) || [];\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Select<React.ReactNode, React.ReactNode>\n data-tid={DropdownDataTids.root}\n ref={this._refSelect}\n {...filterProps(props, PASS_PROPS)}\n value={caption}\n items={items}\n _icon={icon}\n renderValue={renderValue}\n size={this.props.size}\n aria-label={this.props['aria-label']}\n />\n </CommonWrapper>\n );\n };\n\n /**\n * @public\n */\n public open() {\n if (this._select) {\n this._select.open();\n }\n }\n\n /**\n * @public\n */\n public close() {\n if (this._select) {\n this._select.close();\n }\n }\n\n private _refSelect = (element: DropdownSelectType): void => {\n this._select = element;\n };\n}\n\nfunction renderValue(value: any) {\n return value;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_propTypes","_filterProps","_MenuHeader","_MenuItem","_MenuSeparator","_Select","_CommonWrapper","_rootNode","_ThemeContext","_getDropdownTheme","_excluded","_class","_Dropdown","PASS_PROPS","_renderButton","error","disabled","disablePortal","menuAlign","menuWidth","maxMenuHeight","use","size","warning","width","onOpen","onClose","onMouseEnter","onMouseLeave","onMouseOver","menuPos","id","DropdownDataTids","exports","root","Dropdown","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","renderMain","_this$props","props","caption","icon","rest","_objectWithoutPropertiesLoose2","default","items","React","Children","map","children","item","createElement","CommonWrapper","_extends2","rootNodeRef","setRootNode","Select","ref","_refSelect","filterProps","value","_icon","renderValue","element","_select","_inheritsLoose2","_proto","prototype","render","_this2","ThemeContext","Consumer","theme","getDropdownTheme","Provider","open","close","Component","__KONTUR_REACT_UI__","displayName","Header","MenuHeader","MenuItem","Separator","MenuSeparator","propTypes","PropTypes","node","isRequired","bool","number","oneOf","oneOfType","string","any","func"],"sources":["Dropdown.tsx"],"sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { filterProps } from '../../lib/filterProps';\nimport { MenuHeader } from '../MenuHeader';\nimport { MenuItem } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { Select } from '../Select';\nimport { Nullable } from '../../typings/utility-types';\nimport { ButtonUse } from '../Button';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { getDropdownTheme } from './getDropdownTheme';\n\nconst PASS_PROPS = {\n _renderButton: true,\n error: true,\n disabled: true,\n disablePortal: true,\n menuAlign: true,\n menuWidth: true,\n maxMenuHeight: true,\n use: true,\n size: true,\n warning: true,\n width: true,\n onOpen: true,\n onClose: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n menuPos: true,\n id: true,\n 'aria-describedby': true,\n 'aria-label': true,\n};\n\nexport interface DropdownProps\n extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n CommonProps {\n /**\n * Подпись на кнопке.\n */\n caption: React.ReactNode;\n /**\n * Иконка слева от текста кнопки\n */\n icon?: React.ReactElement<any>;\n width?: React.CSSProperties['width'];\n\n /** @ignore */\n _renderButton?: (params: any) => JSX.Element;\n\n /**\n * Отключает использование портала\n */\n disablePortal?: boolean;\n\n /**\n * Визуально отключает Dropdown\n */\n disabled?: boolean;\n\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n maxMenuHeight?: number;\n /**\n * Позволяет вручную задать текущую позицию выпадающего окна\n */\n menuPos?: 'top' | 'bottom';\n menuAlign?: 'left' | 'right';\n menuWidth?: number | string;\n size?: SizeProp;\n\n /**\n * Смотри Button.\n */\n use?: ButtonUse;\n\n /**\n * Вызывается при закрытии меню.\n */\n onClose?: () => void;\n /**\n * Вызывается при открытии меню.\n */\n onOpen?: () => void;\n onMouseEnter?: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseLeave?: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseOver?: (event: React.MouseEvent<HTMLElement>) => void;\n}\n\ntype DropdownSelectType = Select<React.ReactNode, React.ReactNode>;\n\nexport const DropdownDataTids = {\n root: 'Dropdown__root',\n} as const;\n\n/**\n * Выпадающее меню.\n *\n */\n@rootNode\nexport class Dropdown extends React.Component<DropdownProps> {\n public static __KONTUR_REACT_UI__ = 'Dropdown';\n public static displayName = 'Dropdown';\n\n public static Header = MenuHeader;\n public static MenuItem = MenuItem;\n public static Separator = MenuSeparator;\n\n public static propTypes = {\n /**\n * Подпись на кнопке.\n */\n caption: PropTypes.node.isRequired,\n\n /**\n * Отключает использование портала\n */\n disablePortal: PropTypes.bool,\n\n /**\n * Визуально отключает Dropdown\n */\n disabled: PropTypes.bool,\n\n /**\n * Визуально показать наличие ошибки.\n */\n error: PropTypes.bool,\n\n /**\n * Иконка слева от текста кнопки\n */\n icon: PropTypes.node,\n\n maxMenuHeight: PropTypes.number,\n\n menuAlign: PropTypes.oneOf(['left', 'right']),\n\n menuWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n\n /**\n * Смотри Button.\n */\n use: PropTypes.any,\n\n /**\n * Визуально показать наличие предупреждения.\n */\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Вызывается при закрытии меню.\n */\n onClose: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n /**\n * Вызывается при открытии меню.\n */\n onOpen: PropTypes.func,\n };\n\n private _select: Nullable<DropdownSelectType>;\n private setRootNode!: TSetRootNode;\n private theme!: Theme;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getDropdownTheme(theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain = () => {\n const { caption, icon, ...rest } = this.props;\n const items = React.Children.map(this.props.children, (item) => item) || [];\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...rest}>\n <Select<React.ReactNode, React.ReactNode>\n data-tid={DropdownDataTids.root}\n ref={this._refSelect}\n {...filterProps(rest, PASS_PROPS)}\n value={caption}\n items={items}\n _icon={icon}\n renderValue={renderValue}\n />\n </CommonWrapper>\n );\n };\n\n /**\n * @public\n */\n public open() {\n if (this._select) {\n this._select.open();\n }\n }\n\n /**\n * @public\n */\n public close() {\n if (this._select) {\n this._select.close();\n }\n }\n\n private _refSelect = (element: DropdownSelectType): void => {\n this._select = element;\n };\n}\n\nfunction renderValue(value: any) {\n return value;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,7 +14,7 @@ var _rootNode = require("../../lib/rootNode");
|
|
|
14
14
|
var _MenuContext = require("../../internal/Menu/MenuContext");
|
|
15
15
|
var _getVisualStateDataAttributes = require("../../internal/CommonWrapper/utils/getVisualStateDataAttributes");
|
|
16
16
|
|
|
17
|
-
var _MenuItem2 = require("./MenuItem.styles");var _excluded = ["link", "comment", "icon", "loose", "state", "size", "_enableIconPadding", "component", "onMouseEnter", "onMouseLeave", "isMobile", "href", "disabled", "scrollIntoView", "rel", "isNotSelectable"];var _class, _MenuItem;
|
|
17
|
+
var _MenuItem2 = require("./MenuItem.styles");var _excluded = ["link", "comment", "icon", "loose", "state", "size", "_enableIconPadding", "component", "onMouseEnter", "onMouseLeave", "isMobile", "href", "disabled", "scrollIntoView", "rel", "isNotSelectable", "children", "className", "style", "data-tid"];var _class, _MenuItem;
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
|
|
@@ -189,17 +189,6 @@ MenuItem = exports.MenuItem = (0, _rootNode.rootNode)(_class = (_MenuItem = /*#_
|
|
|
189
189
|
|
|
190
190
|
|
|
191
191
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
192
|
|
|
204
193
|
|
|
205
194
|
|
|
@@ -275,9 +264,12 @@ MenuItem = exports.MenuItem = (0, _rootNode.rootNode)(_class = (_MenuItem = /*#_
|
|
|
275
264
|
|
|
276
265
|
|
|
277
266
|
|
|
278
|
-
renderMain = function (
|
|
279
|
-
var
|
|
280
|
-
|
|
267
|
+
renderMain = function () {var _cx2, _cx3, _cx4;
|
|
268
|
+
var _this$props =
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
|
|
281
273
|
|
|
282
274
|
|
|
283
275
|
|
|
@@ -294,7 +286,8 @@ MenuItem = exports.MenuItem = (0, _rootNode.rootNode)(_class = (_MenuItem = /*#_
|
|
|
294
286
|
|
|
295
287
|
|
|
296
288
|
|
|
297
|
-
|
|
289
|
+
|
|
290
|
+
_this.props,link = _this$props.link,comment = _this$props.comment,icon = _this$props.icon,loose = _this$props.loose,state = _this$props.state,size = _this$props.size,_enableIconPadding = _this$props._enableIconPadding,component = _this$props.component,onMouseEnter = _this$props.onMouseEnter,onMouseLeave = _this$props.onMouseLeave,isMobile = _this$props.isMobile,href = _this$props.href,disabled = _this$props.disabled,scrollIntoView = _this$props.scrollIntoView,_this$props$rel = _this$props.rel,rel = _this$props$rel === void 0 ? href && (0, _utils.isExternalLink)(href) ? 'noopener noreferrer' : _this.props.rel : _this$props$rel,isNotSelectable = _this$props.isNotSelectable,children = _this$props.children,unusedClasses = _this$props.className,style = _this$props.style,dataTid = _this$props['data-tid'],rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, _excluded);
|
|
298
291
|
|
|
299
292
|
var iconElement = null;
|
|
300
293
|
if (icon) {var _cx;
|
|
@@ -320,19 +313,25 @@ MenuItem = exports.MenuItem = (0, _rootNode.rootNode)(_class = (_MenuItem = /*#_
|
|
|
320
313
|
_MenuItem2.styles.selected(_this.theme)] = _this.isSelected, _cx2[
|
|
321
314
|
_MenuItem2.styles.link(_this.theme)] = !!link, _cx2[
|
|
322
315
|
_this.getWithIconSizeClassName()] = Boolean(iconElement) || !!_enableIconPadding || _this.context.enableIconPadding, _cx2[
|
|
323
|
-
_MenuItem2.styles.disabled(_this.theme)] = !!
|
|
316
|
+
_MenuItem2.styles.disabled(_this.theme)] = !!disabled, _cx2)
|
|
324
317
|
);
|
|
325
318
|
|
|
326
|
-
var children = _this.props.children;
|
|
327
|
-
|
|
328
319
|
var content = children;
|
|
329
320
|
if ((0, _utils.isFunction)(children)) {
|
|
330
|
-
content = children(
|
|
321
|
+
content = children(state);
|
|
331
322
|
}
|
|
332
323
|
|
|
333
324
|
var Component = _this.getComponent();
|
|
334
325
|
|
|
335
326
|
return /*#__PURE__*/(
|
|
327
|
+
_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({
|
|
328
|
+
rootNodeRef: _this.setRootNode },
|
|
329
|
+
(0, _getVisualStateDataAttributes.getVisualStateDataAttributes)({
|
|
330
|
+
hover: _this.isHover,
|
|
331
|
+
selected: _this.isSelected
|
|
332
|
+
}),
|
|
333
|
+
_this.props), /*#__PURE__*/
|
|
334
|
+
|
|
336
335
|
_react.default.createElement(Component, (0, _extends2.default)({
|
|
337
336
|
ref: _this.setRootRef,
|
|
338
337
|
"data-tid": MenuItemDataTids.root },
|
|
@@ -357,7 +356,7 @@ MenuItem = exports.MenuItem = (0, _rootNode.rootNode)(_class = (_MenuItem = /*#_
|
|
|
357
356
|
|
|
358
357
|
typeof content === 'function' ? content() : content
|
|
359
358
|
),
|
|
360
|
-
|
|
359
|
+
comment && /*#__PURE__*/
|
|
361
360
|
_react.default.createElement("div", {
|
|
362
361
|
"data-tid": MenuItemDataTids.comment,
|
|
363
362
|
className: (0, _Emotion.cx)((_cx4 = {}, _cx4[
|
|
@@ -368,6 +367,7 @@ MenuItem = exports.MenuItem = (0, _rootNode.rootNode)(_class = (_MenuItem = /*#_
|
|
|
368
367
|
comment
|
|
369
368
|
)
|
|
370
369
|
|
|
370
|
+
)
|
|
371
371
|
));
|
|
372
372
|
|
|
373
373
|
};
|
|
@@ -413,7 +413,7 @@ MenuItem = exports.MenuItem = (0, _rootNode.rootNode)(_class = (_MenuItem = /*#_
|
|
|
413
413
|
};_this.
|
|
414
414
|
|
|
415
415
|
getComponent = function () {
|
|
416
|
-
var _this$
|
|
416
|
+
var _this$props2 = _this.props,disabled = _this$props2.disabled,component = _this$props2.component,href = _this$props2.href;
|
|
417
417
|
|
|
418
418
|
if (component) {
|
|
419
419
|
return component;
|
|
@@ -432,7 +432,7 @@ MenuItem = exports.MenuItem = (0, _rootNode.rootNode)(_class = (_MenuItem = /*#_
|
|
|
432
432
|
|
|
433
433
|
hasIconAmongItems = function () {var _this$context$navigat3;
|
|
434
434
|
return Boolean((_this$context$navigat3 = _this.context.navigation) == null ? void 0 : _this$context$navigat3.items.some(function (item) {return item.props.icon;}));
|
|
435
|
-
};return _this;}(0, _inheritsLoose2.default)(MenuItem, _React$Component);var _proto = MenuItem.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return
|
|
435
|
+
};return _this;}(0, _inheritsLoose2.default)(MenuItem, _React$Component);var _proto = MenuItem.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.componentDidMount = function componentDidMount() {if (this.props.scrollIntoView && this.rootRef) {(0, _scrollYCenterIntoNearestScrollable.scrollYCenterIntoNearestScrollable)(this.rootRef);}if (this.rootRef && (0, _globalObject.isBrowser)(_globalObject.globalObject)) {this.setState({ iconOffsetTop: _globalObject.globalObject.getComputedStyle(this.rootRef).getPropertyValue('padding-top') });}if (this.contentRef.current && !this.props.isNotSelectable) {var _this$context$navigat4;(_this$context$navigat4 = this.context.navigation) == null || _this$context$navigat4.add(this.contentRef.current, this);}if (this.props.icon) {var _this$context$setEnab, _this$context;(_this$context$setEnab = (_this$context = this.context).setEnableIconPadding) == null || _this$context$setEnab.call(_this$context, true);}};_proto.componentWillUnmount = function componentWillUnmount() {if (this.contentRef.current) {var _this$context$navigat5, _this$context$setEnab2, _this$context2;!this.props.isNotSelectable && ((_this$context$navigat5 = this.context.navigation) == null ? void 0 : _this$context$navigat5.remove(this.contentRef.current));(_this$context$setEnab2 = (_this$context2 = this.context).setEnableIconPadding) == null || _this$context$setEnab2.call(_this$context2, this.hasIconAmongItems());}};_proto.componentDidUpdate = function componentDidUpdate(prevProps) {if (prevProps.icon !== this.props.icon) {var _this$context$setEnab3, _this$context3;(_this$context$setEnab3 = (_this$context3 = this.context).setEnableIconPadding) == null || _this$context$setEnab3.call(_this$context3, !!this.props.icon || this.hasIconAmongItems());}if (this.contentRef.current && prevProps.isNotSelectable !== this.props.isNotSelectable) {if (this.props.isNotSelectable) {var _this$context$navigat6;this.unhighlight();(_this$context$navigat6 = this.context.navigation) == null || _this$context$navigat6.remove(this.contentRef.current);} else {var _this$context$navigat7;(_this$context$navigat7 = this.context.navigation) == null || _this$context$navigat7.add(this.contentRef.current, this);}}};_proto.getRootSizeClassName = function getRootSizeClassName() {switch (this.props.size) {case 'large':return _MenuItem2.styles.rootLarge(this.theme);case 'medium':return _MenuItem2.styles.rootMedium(this.theme);case 'small':default:return _MenuItem2.styles.rootSmall(this.theme);}};_proto.getIconSizeClassName = function getIconSizeClassName() {switch (this.props.size) {case 'large':return _MenuItem2.styles.iconLarge(this.theme);case 'medium':return _MenuItem2.styles.iconMedium(this.theme);case 'small':default:return _MenuItem2.styles.iconSmall(this.theme);}};_proto.getWithIconSizeClassName = function getWithIconSizeClassName() {switch (this.props.size) {case 'large':return _MenuItem2.styles.withIconLarge(this.theme);case 'medium':return _MenuItem2.styles.withIconMedium(this.theme);case 'small':default:return _MenuItem2.styles.withIconSmall(this.theme);}};return (0, _createClass2.default)(MenuItem, [{ key: "activeState", get: function get() {return this.state.highlighted ? 'hover' : this.props.state;} }, { key: "isHover", get: function get() {return (this.state.highlighted || this.props.state === 'hover') && !this.props.disabled;} }, { key: "isSelected", get: function get() {return this.props.state === 'selected' && !this.state.highlighted;} }]);}(_react.default.Component), _MenuItem.__KONTUR_REACT_UI__ = 'MenuItem', _MenuItem.displayName = 'MenuItem', _MenuItem.__MENU_ITEM__ = true, _MenuItem.propTypes = { comment: _propTypes.default.node, disabled: _propTypes.default.bool, href: _propTypes.default.string, icon: _propTypes.default.node, loose: _propTypes.default.bool, state: _propTypes.default.string, target: _propTypes.default.string, onClick: _propTypes.default.func, size: _propTypes.default.string }, _MenuItem.contextType = _MenuContext.MenuContext, _MenuItem)) || _class;
|
|
436
436
|
|
|
437
437
|
|
|
438
438
|
var isMenuItem = exports.isMenuItem = (0, _utils.isReactUIComponent)('MenuItem');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_propTypes","_globalObject","_scrollYCenterIntoNearestScrollable","_utils","_ThemeContext","_CommonWrapper","_Emotion","_rootNode","_MenuContext","_getVisualStateDataAttributes","_MenuItem2","_excluded","_class","_MenuItem","MenuItemDataTids","exports","root","content","comment","MenuItem","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","iconOffsetTop","highlighted","mouseEntered","rootRef","contentRef","React","createRef","highlight","setState","unhighlight","select","event","handleClick","isEnabled","props","disabled","navigate","href","target","window","open","location","renderMain","_cx2","_cx3","_cx4","link","icon","loose","size","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","scrollIntoView","_props$rel","rel","isExternalLink","isNotSelectable","rest","_objectWithoutPropertiesLoose2","default","iconElement","_cx","createElement","style","top","className","cx","styles","getIconSizeClassName","theme","getRootSizeClassName","rootMobile","hover","isHover","selected","isSelected","getWithIconSizeClassName","Boolean","context","enableIconPadding","children","isFunction","Component","getComponent","_extends2","ref","setRootRef","activeState","onMouseOver","handleMouseEnterFix","handleMouseLeave","onClick","undefined","tabIndex","mobileContentWithIcon","isNonNullable","commentHover","e","_this$context$navigat","navigation","_this$context$navigat2","onItemClick","element","_this$props","hasIconAmongItems","_this$context$navigat3","items","some","item","_inheritsLoose2","_proto","prototype","render","_this2","ThemeContext","Consumer","CommonWrapper","rootNodeRef","setRootNode","getVisualStateDataAttributes","componentDidMount","scrollYCenterIntoNearestScrollable","isBrowser","globalObject","getComputedStyle","getPropertyValue","current","_this$context$navigat4","add","_this$context$setEnab","_this$context","setEnableIconPadding","componentWillUnmount","_this$context$navigat5","_this$context$setEnab2","_this$context2","remove","componentDidUpdate","prevProps","_this$context$setEnab3","_this$context3","_this$context$navigat6","_this$context$navigat7","rootLarge","rootMedium","rootSmall","iconLarge","iconMedium","iconSmall","withIconLarge","withIconMedium","withIconSmall","_createClass2","key","get","__KONTUR_REACT_UI__","displayName","__MENU_ITEM__","propTypes","PropTypes","node","bool","string","func","contextType","MenuContext","isMenuItem","isReactUIComponent"],"sources":["MenuItem.tsx"],"sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { scrollYCenterIntoNearestScrollable } from '../../lib/dom/scrollYCenterIntoNearestScrollable';\nimport { Nullable } from '../../typings/utility-types';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { SizeProp } from '../../lib/types/props';\nimport { MenuContext, MenuContextType } from '../../internal/Menu/MenuContext';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Omit<CommonProps, 'children'> {\n /**\n * @ignore\n */\n _enableIconPadding?: boolean;\n /**\n * Добавляет описание для элемента меню.\n */\n comment?: React.ReactNode;\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * Добавляет элементу меню иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Меняет цвет текста на синий.\n */\n link?: boolean;\n /**\n * Размер\n */\n size?: SizeProp;\n /**\n * @ignore\n */\n loose?: boolean;\n /**\n * @ignore\n */\n state?: MenuItemState;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n /**\n * HTML-атрибут `target`.\n */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут `title`.\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n /**\n * HTML-атрибут `href`.\n */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n /**\n * HTML-атрибут `rel`.\n *\n * Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\"\n */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n /**\n * Заменяет корневой элемент, на компонент переданный в проп.\n *\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`.\n */\n component?: React.ComponentType<any>;\n /**\n * Запрещает выделение и выбор данного пункта меню\n *\n */\n isNotSelectable?: boolean;\n\n isMobile?: boolean;\n /** @ignore */\n scrollIntoView?: boolean;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n content: 'MenuItem__content',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [DropdownMenu](#/Components/DropdownMenu), [Kebab](#/Components/Kebab), [TooltipMenu](#/Components/TooltipMenu) и [Select](#/Components/Select).\n */\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static displayName = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n\n size: PropTypes.string,\n };\n\n public state = {\n iconOffsetTop: 0,\n highlighted: false,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n private contentRef = React.createRef<HTMLElement>();\n static contextType = MenuContext;\n\n public context!: MenuContextType;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({\n hover: this.isHover,\n selected: this.isSelected,\n })}\n {...this.props}\n >\n {this.renderMain(this.props)}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public componentDidMount() {\n if (this.props.scrollIntoView && this.rootRef) {\n scrollYCenterIntoNearestScrollable(this.rootRef);\n }\n if (this.rootRef && isBrowser(globalObject)) {\n this.setState({ iconOffsetTop: globalObject.getComputedStyle(this.rootRef).getPropertyValue('padding-top') });\n }\n if (this.contentRef.current && !this.props.isNotSelectable) {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n if (this.props.icon) {\n this.context.setEnableIconPadding?.(true);\n }\n }\n\n public componentWillUnmount() {\n if (this.contentRef.current) {\n !this.props.isNotSelectable && this.context.navigation?.remove(this.contentRef.current);\n this.context.setEnableIconPadding?.(this.hasIconAmongItems());\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<MenuItemProps>) {\n if (prevProps.icon !== this.props.icon) {\n this.context.setEnableIconPadding?.(!!this.props.icon || this.hasIconAmongItems());\n }\n if (this.contentRef.current && prevProps.isNotSelectable !== this.props.isNotSelectable) {\n if (this.props.isNotSelectable) {\n this.unhighlight();\n this.context.navigation?.remove(this.contentRef.current);\n } else {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n }\n }\n\n public highlight = () => {\n this.setState({ highlighted: true });\n };\n\n public unhighlight = () => {\n this.setState({ highlighted: false });\n };\n\n public select = (event: React.SyntheticEvent<HTMLElement>) => {\n this.handleClick(event as React.MouseEvent<HTMLElement>);\n };\n\n public isEnabled = () => {\n return !this.props.disabled;\n };\n\n public navigate = () => {\n if (!this.props.href) {\n return;\n }\n if (this.props.target) {\n window.open(this.props.href, this.props.target);\n } else {\n location.href = this.props.href;\n }\n };\n\n private getRootSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.rootLarge(this.theme);\n case 'medium':\n return styles.rootMedium(this.theme);\n case 'small':\n default:\n return styles.rootSmall(this.theme);\n }\n }\n\n private getIconSizeClassName() {\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 getWithIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.withIconLarge(this.theme);\n case 'medium':\n return styles.withIconMedium(this.theme);\n case 'small':\n default:\n return styles.withIconSmall(this.theme);\n }\n }\n\n private renderMain = (props: CommonWrapperRestProps<MenuItemProps>) => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n size,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n scrollIntoView,\n rel = this.props.href && isExternalLink(this.props.href) ? 'noopener noreferrer' : this.props.rel,\n isNotSelectable,\n ...rest\n } = props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div\n style={{ top: this.state.iconOffsetTop }}\n className={cx({\n [styles.icon()]: true,\n [this.getIconSizeClassName()]: true,\n })}\n >\n {icon}\n </div>\n );\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [this.getRootSizeClassName()]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: this.isHover,\n [styles.selected(this.theme)]: this.isSelected,\n [styles.link(this.theme)]: !!link,\n [this.getWithIconSizeClassName()]: Boolean(iconElement) || !!_enableIconPadding || this.context.enableIconPadding,\n [styles.disabled(this.theme)]: !!this.props.disabled,\n });\n\n const { children } = this.props;\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.props.state);\n }\n\n const Component = this.getComponent();\n\n return (\n <Component\n ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={this.activeState}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n onClick={this.handleClick}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n >\n {iconElement}\n <span\n className={cx({\n [styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n ref={this.contentRef}\n data-tid={MenuItemDataTids.content}\n >\n {typeof content === 'function' ? content() : content}\n </span>\n {this.props.comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: this.isHover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n );\n };\n\n private get activeState() {\n return this.state.highlighted ? 'hover' : this.props.state;\n }\n\n private get isHover(): boolean {\n return (this.state.highlighted || this.props.state === 'hover') && !this.props.disabled;\n }\n\n private get isSelected(): boolean {\n return this.props.state === 'selected' && !this.state.highlighted;\n }\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered) {\n this.mouseEntered = true;\n this.props.onMouseEnter?.(e);\n !this.props.isNotSelectable && this.context.navigation?.highlight(this);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n this.props.onMouseLeave?.(e);\n !this.props.isNotSelectable && this.context.navigation?.unhighlight();\n };\n\n private handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (this.props.isNotSelectable) {\n return;\n }\n this.props.onClick?.(e);\n this.context.onItemClick?.(e);\n };\n\n private setRootRef = (element: HTMLElement) => {\n this.rootRef = element;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n\n private hasIconAmongItems = () => {\n return Boolean(this.context.navigation?.items.some((item) => item.props.icon));\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_propTypes","_globalObject","_scrollYCenterIntoNearestScrollable","_utils","_ThemeContext","_CommonWrapper","_Emotion","_rootNode","_MenuContext","_getVisualStateDataAttributes","_MenuItem2","_excluded","_class","_MenuItem","MenuItemDataTids","exports","root","content","comment","MenuItem","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","iconOffsetTop","highlighted","mouseEntered","rootRef","contentRef","React","createRef","highlight","setState","unhighlight","select","event","handleClick","isEnabled","props","disabled","navigate","href","target","window","open","location","renderMain","_cx2","_cx3","_cx4","_this$props","link","icon","loose","size","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","scrollIntoView","_this$props$rel","rel","isExternalLink","isNotSelectable","children","unusedClasses","className","style","dataTid","rest","_objectWithoutPropertiesLoose2","default","iconElement","_cx","createElement","top","cx","styles","getIconSizeClassName","theme","getRootSizeClassName","rootMobile","hover","isHover","selected","isSelected","getWithIconSizeClassName","Boolean","context","enableIconPadding","isFunction","Component","getComponent","CommonWrapper","_extends2","rootNodeRef","setRootNode","getVisualStateDataAttributes","ref","setRootRef","activeState","onMouseOver","handleMouseEnterFix","handleMouseLeave","onClick","undefined","tabIndex","mobileContentWithIcon","isNonNullable","commentHover","e","_this$context$navigat","navigation","_this$context$navigat2","onItemClick","element","_this$props2","hasIconAmongItems","_this$context$navigat3","items","some","item","_inheritsLoose2","_proto","prototype","render","_this2","ThemeContext","Consumer","componentDidMount","scrollYCenterIntoNearestScrollable","isBrowser","globalObject","getComputedStyle","getPropertyValue","current","_this$context$navigat4","add","_this$context$setEnab","_this$context","setEnableIconPadding","componentWillUnmount","_this$context$navigat5","_this$context$setEnab2","_this$context2","remove","componentDidUpdate","prevProps","_this$context$setEnab3","_this$context3","_this$context$navigat6","_this$context$navigat7","rootLarge","rootMedium","rootSmall","iconLarge","iconMedium","iconSmall","withIconLarge","withIconMedium","withIconSmall","_createClass2","key","get","__KONTUR_REACT_UI__","displayName","__MENU_ITEM__","propTypes","PropTypes","node","bool","string","func","contextType","MenuContext","isMenuItem","isReactUIComponent"],"sources":["MenuItem.tsx"],"sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { scrollYCenterIntoNearestScrollable } from '../../lib/dom/scrollYCenterIntoNearestScrollable';\nimport { Nullable } from '../../typings/utility-types';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { SizeProp } from '../../lib/types/props';\nimport { MenuContext, MenuContextType } from '../../internal/Menu/MenuContext';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Omit<CommonProps, 'children'> {\n /**\n * @ignore\n */\n _enableIconPadding?: boolean;\n /**\n * Добавляет описание для элемента меню.\n */\n comment?: React.ReactNode;\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * Добавляет элементу меню иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Меняет цвет текста на синий.\n */\n link?: boolean;\n /**\n * Размер\n */\n size?: SizeProp;\n /**\n * @ignore\n */\n loose?: boolean;\n /**\n * @ignore\n */\n state?: MenuItemState;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n /**\n * HTML-атрибут `target`.\n */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут `title`.\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n /**\n * HTML-атрибут `href`.\n */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n /**\n * HTML-атрибут `rel`.\n *\n * Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\"\n */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n /**\n * Заменяет корневой элемент, на компонент переданный в проп.\n *\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`.\n */\n component?: React.ComponentType<any>;\n /**\n * Запрещает выделение и выбор данного пункта меню\n *\n */\n isNotSelectable?: boolean;\n\n isMobile?: boolean;\n /** @ignore */\n scrollIntoView?: boolean;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n content: 'MenuItem__content',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [DropdownMenu](#/Components/DropdownMenu), [Kebab](#/Components/Kebab), [TooltipMenu](#/Components/TooltipMenu) и [Select](#/Components/Select).\n */\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static displayName = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n\n size: PropTypes.string,\n };\n\n public state = {\n iconOffsetTop: 0,\n highlighted: false,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n private contentRef = React.createRef<HTMLElement>();\n static contextType = MenuContext;\n\n public context!: MenuContextType;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public componentDidMount() {\n if (this.props.scrollIntoView && this.rootRef) {\n scrollYCenterIntoNearestScrollable(this.rootRef);\n }\n if (this.rootRef && isBrowser(globalObject)) {\n this.setState({ iconOffsetTop: globalObject.getComputedStyle(this.rootRef).getPropertyValue('padding-top') });\n }\n if (this.contentRef.current && !this.props.isNotSelectable) {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n if (this.props.icon) {\n this.context.setEnableIconPadding?.(true);\n }\n }\n\n public componentWillUnmount() {\n if (this.contentRef.current) {\n !this.props.isNotSelectable && this.context.navigation?.remove(this.contentRef.current);\n this.context.setEnableIconPadding?.(this.hasIconAmongItems());\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<MenuItemProps>) {\n if (prevProps.icon !== this.props.icon) {\n this.context.setEnableIconPadding?.(!!this.props.icon || this.hasIconAmongItems());\n }\n if (this.contentRef.current && prevProps.isNotSelectable !== this.props.isNotSelectable) {\n if (this.props.isNotSelectable) {\n this.unhighlight();\n this.context.navigation?.remove(this.contentRef.current);\n } else {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n }\n }\n\n public highlight = () => {\n this.setState({ highlighted: true });\n };\n\n public unhighlight = () => {\n this.setState({ highlighted: false });\n };\n\n public select = (event: React.SyntheticEvent<HTMLElement>) => {\n this.handleClick(event as React.MouseEvent<HTMLElement>);\n };\n\n public isEnabled = () => {\n return !this.props.disabled;\n };\n\n public navigate = () => {\n if (!this.props.href) {\n return;\n }\n if (this.props.target) {\n window.open(this.props.href, this.props.target);\n } else {\n location.href = this.props.href;\n }\n };\n\n private getRootSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.rootLarge(this.theme);\n case 'medium':\n return styles.rootMedium(this.theme);\n case 'small':\n default:\n return styles.rootSmall(this.theme);\n }\n }\n\n private getIconSizeClassName() {\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 getWithIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.withIconLarge(this.theme);\n case 'medium':\n return styles.withIconMedium(this.theme);\n case 'small':\n default:\n return styles.withIconSmall(this.theme);\n }\n }\n\n private renderMain = () => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n size,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n scrollIntoView,\n rel = href && isExternalLink(href) ? 'noopener noreferrer' : this.props.rel,\n isNotSelectable,\n children,\n className: unusedClasses,\n style,\n 'data-tid': dataTid,\n ...rest\n } = this.props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div\n style={{ top: this.state.iconOffsetTop }}\n className={cx({\n [styles.icon()]: true,\n [this.getIconSizeClassName()]: true,\n })}\n >\n {icon}\n </div>\n );\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [this.getRootSizeClassName()]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: this.isHover,\n [styles.selected(this.theme)]: this.isSelected,\n [styles.link(this.theme)]: !!link,\n [this.getWithIconSizeClassName()]: Boolean(iconElement) || !!_enableIconPadding || this.context.enableIconPadding,\n [styles.disabled(this.theme)]: !!disabled,\n });\n\n let content = children;\n if (isFunction(children)) {\n content = children(state);\n }\n\n const Component = this.getComponent();\n\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({\n hover: this.isHover,\n selected: this.isSelected,\n })}\n {...this.props}\n >\n <Component\n ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={this.activeState}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n onClick={this.handleClick}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n >\n {iconElement}\n <span\n className={cx({\n [styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n ref={this.contentRef}\n data-tid={MenuItemDataTids.content}\n >\n {typeof content === 'function' ? content() : content}\n </span>\n {comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: this.isHover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n </CommonWrapper>\n );\n };\n\n private get activeState() {\n return this.state.highlighted ? 'hover' : this.props.state;\n }\n\n private get isHover(): boolean {\n return (this.state.highlighted || this.props.state === 'hover') && !this.props.disabled;\n }\n\n private get isSelected(): boolean {\n return this.props.state === 'selected' && !this.state.highlighted;\n }\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered) {\n this.mouseEntered = true;\n this.props.onMouseEnter?.(e);\n !this.props.isNotSelectable && this.context.navigation?.highlight(this);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n this.props.onMouseLeave?.(e);\n !this.props.isNotSelectable && this.context.navigation?.unhighlight();\n };\n\n private handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (this.props.isNotSelectable) {\n return;\n }\n this.props.onClick?.(e);\n this.context.onItemClick?.(e);\n };\n\n private setRootRef = (element: HTMLElement) => {\n this.rootRef = element;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n\n private hasIconAmongItems = () => {\n return Boolean(this.context.navigation?.items.some((item) => item.props.icon));\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -238,6 +238,6 @@ PasswordInput = exports.PasswordInput = (_dec = (0, _decorators.locale)('Passwor
|
|
|
238
238
|
};return _this;}(0, _inheritsLoose2.default)(PasswordInput, _React$PureComponent);var _proto = PasswordInput.prototype;_proto.componentDidMount = function componentDidMount() {if (this.props.detectCapsLock) {this.setState({ capsLockEnabled: null });} // @ts-expect-error: IE-specific API.
|
|
239
239
|
if (_client.isIE11 && (0, _globalObject.isBrowser)(_globalObject.globalObject) && !_globalObject.globalObject.document.msCapsLockWarningOff) {// @ts-expect-error: Read the comment above.
|
|
240
240
|
// turns off default ie capslock warning
|
|
241
|
-
_globalObject.globalObject.document.msCapsLockWarningOff = true;}};PasswordInput.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {if (props.disabled) {return { visible: false };}return state;};_proto.render = function render() {var _this3 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this3.theme = theme;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: _this3.setRootNode }, _this3.
|
|
241
|
+
_globalObject.globalObject.document.msCapsLockWarningOff = true;}};PasswordInput.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {if (props.disabled) {return { visible: false };}return state;};_proto.render = function render() {var _this3 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this3.theme = theme;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: _this3.setRootNode }, _this3.getProps()), _this3.renderMain);});};_proto.getEyeWrapperClassname = function getEyeWrapperClassname() {switch (this.getProps().size) {case 'large':return _PasswordInput2.styles.eyeWrapperLarge(this.theme);case 'medium':return _PasswordInput2.styles.eyeWrapperMedium(this.theme);case 'small':default:return _PasswordInput2.styles.eyeWrapperSmall(this.theme);}};return PasswordInput;}(_react.default.PureComponent), _PasswordInput.__KONTUR_REACT_UI__ = 'PasswordInput', _PasswordInput.displayName = 'PasswordInput', _PasswordInput.propTypes = { /**
|
|
242
242
|
* Включает CapsLock детектор
|
|
243
243
|
*/detectCapsLock: _propTypes.default.bool }, _PasswordInput.defaultProps = { size: 'small' }, _PasswordInput)) || _class) || _class);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_propTypes","_globalObject","_decorators","_RenderLayer","_utils","_identifiers","_KeyboardEventCodes","_Input","_client","_CommonWrapper","_ThemeContext","_Emotion","_rootNode","_createPropsGetter","_PasswordInput2","_PasswordInputIcon","_locale","_excluded","_dec","_class","_PasswordInput","PasswordInputDataTids","exports","root","capsLockDetector","eyeIcon","PasswordInput","locale","PasswordInputLocaleHelper","rootNode","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","state","visible","capsLockEnabled","focus","input","blur","handleBlur","handleKeyPress","e","_this$props","props","onKeyPress","detectCapsLock","getModifierState","Codes","CapsLock","setState","handleKeydown","_this2","_this2$props","onKeyDown","isKeyCapsLock","isNonNullable","handleToggleVisibility","prevState","handleFocus","renderEye","default","createElement","className","styles","iconWrapper","cx","toggleVisibility","theme","getEyeWrapperClassname","disabled","type","eyeClosedAriaLabel","eyeOpenedAriaLabel","onClick","icon","PasswordInputIcon","size","refInput","element","hideSymbols","renderMain","rest","_objectWithoutPropertiesLoose2","inputProps","_extends2","rightIcon","RenderLayer","onFocusOutside","onClickOutside","Input","ref","_inheritsLoose2","_proto","prototype","componentDidMount","isIE11","isBrowser","globalObject","document","msCapsLockWarningOff","getDerivedStateFromProps","render","_this3","ThemeContext","Consumer","CommonWrapper","rootNodeRef","setRootNode","eyeWrapperLarge","eyeWrapperMedium","eyeWrapperSmall","React","PureComponent","__KONTUR_REACT_UI__","displayName","propTypes","PropTypes","bool"],"sources":["PasswordInput.tsx"],"sourcesContent":["import React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { locale } from '../../lib/locale/decorators';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyCapsLock } from '../../lib/events/keyboard/identifiers';\nimport { KeyboardEventCodes as Codes } from '../../lib/events/keyboard/KeyboardEventCodes';\nimport { Input, InputProps } from '../Input';\nimport { Nullable } from '../../typings/utility-types';\nimport { isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './PasswordInput.styles';\nimport { PasswordInputIcon } from './PasswordInputIcon';\nimport { PasswordInputLocale, PasswordInputLocaleHelper } from './locale';\n\nexport interface PasswordInputProps extends Pick<AriaAttributes, 'aria-label'>, CommonProps, InputProps {\n detectCapsLock?: boolean;\n}\n\nexport interface PasswordInputState {\n visible: boolean;\n capsLockEnabled?: boolean | null;\n}\n\nexport const PasswordInputDataTids = {\n root: 'PasswordInput',\n capsLockDetector: 'PasswordInputCapsLockDetector',\n eyeIcon: 'PasswordInputEyeIcon',\n} as const;\n\ntype DefaultProps = Required<Pick<PasswordInputProps, 'size'>>;\n\n/**\n * Компонент для ввода пароля\n */\n@rootNode\n@locale('PasswordInput', PasswordInputLocaleHelper)\nexport class PasswordInput extends React.PureComponent<PasswordInputProps, PasswordInputState> {\n public static __KONTUR_REACT_UI__ = 'PasswordInput';\n public static displayName = 'PasswordInput';\n\n public static propTypes = {\n /**\n * Включает CapsLock детектор\n */\n detectCapsLock: PropTypes.bool,\n };\n\n public static defaultProps: DefaultProps = {\n size: 'small',\n };\n\n private getProps = createPropsGetter(PasswordInput.defaultProps);\n\n public state: PasswordInputState = {\n visible: false,\n capsLockEnabled: false,\n };\n\n private theme!: Theme;\n\n private input: Nullable<Input>;\n private setRootNode!: TSetRootNode;\n private readonly locale!: PasswordInputLocale;\n\n public componentDidMount() {\n if (this.props.detectCapsLock) {\n this.setState({ capsLockEnabled: null });\n }\n\n // @ts-expect-error: IE-specific API.\n if (isIE11 && isBrowser(globalObject) && !globalObject.document.msCapsLockWarningOff) {\n // @ts-expect-error: Read the comment above.\n // turns off default ie capslock warning\n globalObject.document.msCapsLockWarningOff = true;\n }\n }\n\n public static getDerivedStateFromProps(props: PasswordInputProps, state: PasswordInputState) {\n if (props.disabled) {\n return { visible: false };\n }\n\n return state;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain(this.props)}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n this.handleBlur();\n };\n\n private handleKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { onKeyPress, detectCapsLock } = this.props;\n\n if (onKeyPress) {\n onKeyPress(e);\n }\n\n if (!detectCapsLock) {\n return;\n }\n\n const capsLockEnabled = e.getModifierState(Codes.CapsLock);\n\n this.setState({ capsLockEnabled });\n };\n\n private handleKeydown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const {\n props: { detectCapsLock, onKeyDown },\n state: { capsLockEnabled },\n } = this;\n\n if (onKeyDown) {\n onKeyDown(e);\n }\n\n if (!detectCapsLock) {\n return;\n }\n\n if (isKeyCapsLock(e) && isNonNullable(capsLockEnabled)) {\n this.setState({ capsLockEnabled: !capsLockEnabled });\n }\n };\n\n private handleToggleVisibility = () => {\n this.setState((prevState) => ({ visible: !prevState.visible }), this.handleFocus);\n };\n\n private handleFocus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n private handleBlur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private getEyeWrapperClassname() {\n switch (this.getProps().size) {\n case 'large':\n return styles.eyeWrapperLarge(this.theme);\n case 'medium':\n return styles.eyeWrapperMedium(this.theme);\n case 'small':\n default:\n return styles.eyeWrapperSmall(this.theme);\n }\n }\n\n private renderEye = () => {\n const { capsLockEnabled } = this.state;\n\n return (\n <span className={styles.iconWrapper()}>\n {capsLockEnabled && (\n <span className={styles.capsLockDetector()} data-tid={PasswordInputDataTids.capsLockDetector} />\n )}\n <span className={cx(styles.toggleVisibility(this.theme), this.getEyeWrapperClassname())}>\n {!this.props.disabled && (\n <button\n type=\"button\"\n aria-label={this.state.visible ? this.locale.eyeClosedAriaLabel : this.locale.eyeOpenedAriaLabel}\n onClick={this.handleToggleVisibility}\n className={styles.icon()}\n data-tid={PasswordInputDataTids.eyeIcon}\n >\n <PasswordInputIcon size={this.props.size} visible={this.state.visible} />\n </button>\n )}\n </span>\n </span>\n );\n };\n\n private refInput = (element: Input) => {\n this.input = element;\n };\n\n private hideSymbols = () => {\n this.setState({ visible: false });\n };\n\n private renderMain = (props: CommonWrapperRestProps<PasswordInputProps>) => {\n const { detectCapsLock, ...rest } = props;\n const inputProps = {\n ...rest,\n onKeyDown: this.handleKeydown,\n onKeyPress: this.handleKeyPress,\n rightIcon: this.renderEye(),\n };\n\n return (\n <RenderLayer onFocusOutside={this.hideSymbols} onClickOutside={this.hideSymbols}>\n <div data-tid={PasswordInputDataTids.root} className={styles.root()}>\n <Input ref={this.refInput} type={this.state.visible ? 'text' : 'password'} {...inputProps} />\n </div>\n </RenderLayer>\n );\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_propTypes","_globalObject","_decorators","_RenderLayer","_utils","_identifiers","_KeyboardEventCodes","_Input","_client","_CommonWrapper","_ThemeContext","_Emotion","_rootNode","_createPropsGetter","_PasswordInput2","_PasswordInputIcon","_locale","_excluded","_dec","_class","_PasswordInput","PasswordInputDataTids","exports","root","capsLockDetector","eyeIcon","PasswordInput","locale","PasswordInputLocaleHelper","rootNode","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","state","visible","capsLockEnabled","focus","input","blur","handleBlur","handleKeyPress","e","_this$props","props","onKeyPress","detectCapsLock","getModifierState","Codes","CapsLock","setState","handleKeydown","_this2","_this2$props","onKeyDown","isKeyCapsLock","isNonNullable","handleToggleVisibility","prevState","handleFocus","renderEye","default","createElement","className","styles","iconWrapper","cx","toggleVisibility","theme","getEyeWrapperClassname","disabled","type","eyeClosedAriaLabel","eyeOpenedAriaLabel","onClick","icon","PasswordInputIcon","size","refInput","element","hideSymbols","renderMain","rest","_objectWithoutPropertiesLoose2","inputProps","_extends2","rightIcon","RenderLayer","onFocusOutside","onClickOutside","Input","ref","_inheritsLoose2","_proto","prototype","componentDidMount","isIE11","isBrowser","globalObject","document","msCapsLockWarningOff","getDerivedStateFromProps","render","_this3","ThemeContext","Consumer","CommonWrapper","rootNodeRef","setRootNode","eyeWrapperLarge","eyeWrapperMedium","eyeWrapperSmall","React","PureComponent","__KONTUR_REACT_UI__","displayName","propTypes","PropTypes","bool"],"sources":["PasswordInput.tsx"],"sourcesContent":["import React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { locale } from '../../lib/locale/decorators';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyCapsLock } from '../../lib/events/keyboard/identifiers';\nimport { KeyboardEventCodes as Codes } from '../../lib/events/keyboard/KeyboardEventCodes';\nimport { Input, InputProps } from '../Input';\nimport { Nullable } from '../../typings/utility-types';\nimport { isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './PasswordInput.styles';\nimport { PasswordInputIcon } from './PasswordInputIcon';\nimport { PasswordInputLocale, PasswordInputLocaleHelper } from './locale';\n\nexport interface PasswordInputProps extends Pick<AriaAttributes, 'aria-label'>, CommonProps, InputProps {\n detectCapsLock?: boolean;\n}\n\nexport interface PasswordInputState {\n visible: boolean;\n capsLockEnabled?: boolean | null;\n}\n\nexport const PasswordInputDataTids = {\n root: 'PasswordInput',\n capsLockDetector: 'PasswordInputCapsLockDetector',\n eyeIcon: 'PasswordInputEyeIcon',\n} as const;\n\ntype DefaultProps = Required<Pick<PasswordInputProps, 'size'>>;\n\n/**\n * Компонент для ввода пароля\n */\n@rootNode\n@locale('PasswordInput', PasswordInputLocaleHelper)\nexport class PasswordInput extends React.PureComponent<PasswordInputProps, PasswordInputState> {\n public static __KONTUR_REACT_UI__ = 'PasswordInput';\n public static displayName = 'PasswordInput';\n\n public static propTypes = {\n /**\n * Включает CapsLock детектор\n */\n detectCapsLock: PropTypes.bool,\n };\n\n public static defaultProps: DefaultProps = {\n size: 'small',\n };\n\n private getProps = createPropsGetter(PasswordInput.defaultProps);\n\n public state: PasswordInputState = {\n visible: false,\n capsLockEnabled: false,\n };\n\n private theme!: Theme;\n\n private input: Nullable<Input>;\n private setRootNode!: TSetRootNode;\n private readonly locale!: PasswordInputLocale;\n\n public componentDidMount() {\n if (this.props.detectCapsLock) {\n this.setState({ capsLockEnabled: null });\n }\n\n // @ts-expect-error: IE-specific API.\n if (isIE11 && isBrowser(globalObject) && !globalObject.document.msCapsLockWarningOff) {\n // @ts-expect-error: Read the comment above.\n // turns off default ie capslock warning\n globalObject.document.msCapsLockWarningOff = true;\n }\n }\n\n public static getDerivedStateFromProps(props: PasswordInputProps, state: PasswordInputState) {\n if (props.disabled) {\n return { visible: false };\n }\n\n return state;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n this.handleBlur();\n };\n\n private handleKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { onKeyPress, detectCapsLock } = this.props;\n\n if (onKeyPress) {\n onKeyPress(e);\n }\n\n if (!detectCapsLock) {\n return;\n }\n\n const capsLockEnabled = e.getModifierState(Codes.CapsLock);\n\n this.setState({ capsLockEnabled });\n };\n\n private handleKeydown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const {\n props: { detectCapsLock, onKeyDown },\n state: { capsLockEnabled },\n } = this;\n\n if (onKeyDown) {\n onKeyDown(e);\n }\n\n if (!detectCapsLock) {\n return;\n }\n\n if (isKeyCapsLock(e) && isNonNullable(capsLockEnabled)) {\n this.setState({ capsLockEnabled: !capsLockEnabled });\n }\n };\n\n private handleToggleVisibility = () => {\n this.setState((prevState) => ({ visible: !prevState.visible }), this.handleFocus);\n };\n\n private handleFocus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n private handleBlur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private getEyeWrapperClassname() {\n switch (this.getProps().size) {\n case 'large':\n return styles.eyeWrapperLarge(this.theme);\n case 'medium':\n return styles.eyeWrapperMedium(this.theme);\n case 'small':\n default:\n return styles.eyeWrapperSmall(this.theme);\n }\n }\n\n private renderEye = () => {\n const { capsLockEnabled } = this.state;\n\n return (\n <span className={styles.iconWrapper()}>\n {capsLockEnabled && (\n <span className={styles.capsLockDetector()} data-tid={PasswordInputDataTids.capsLockDetector} />\n )}\n <span className={cx(styles.toggleVisibility(this.theme), this.getEyeWrapperClassname())}>\n {!this.props.disabled && (\n <button\n type=\"button\"\n aria-label={this.state.visible ? this.locale.eyeClosedAriaLabel : this.locale.eyeOpenedAriaLabel}\n onClick={this.handleToggleVisibility}\n className={styles.icon()}\n data-tid={PasswordInputDataTids.eyeIcon}\n >\n <PasswordInputIcon size={this.props.size} visible={this.state.visible} />\n </button>\n )}\n </span>\n </span>\n );\n };\n\n private refInput = (element: Input) => {\n this.input = element;\n };\n\n private hideSymbols = () => {\n this.setState({ visible: false });\n };\n\n private renderMain = (props: CommonWrapperRestProps<PasswordInputProps>) => {\n const { detectCapsLock, ...rest } = props;\n const inputProps = {\n ...rest,\n onKeyDown: this.handleKeydown,\n onKeyPress: this.handleKeyPress,\n rightIcon: this.renderEye(),\n };\n\n return (\n <RenderLayer onFocusOutside={this.hideSymbols} onClickOutside={this.hideSymbols}>\n <div data-tid={PasswordInputDataTids.root} className={styles.root()}>\n <Input ref={this.refInput} type={this.state.visible ? 'text' : 'password'} {...inputProps} />\n </div>\n </RenderLayer>\n );\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { HTMLAttributes } from 'react';
|
|
2
2
|
import { ScrollContainerScrollState } from '../../components/ScrollContainer';
|
|
3
|
-
|
|
3
|
+
import { CommonProps } from '../CommonWrapper';
|
|
4
|
+
export interface MenuProps extends CommonProps, Pick<HTMLAttributes<HTMLDivElement>, 'id'> {
|
|
4
5
|
children: React.ReactNode;
|
|
5
6
|
hasMargin?: boolean;
|
|
6
7
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;exports.__esModule = true;exports.MenuDataTids = exports.Menu = void 0;var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
|
|
1
|
+
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;exports.__esModule = true;exports.MenuDataTids = exports.Menu = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
|
|
2
2
|
var _globalObject = require("@skbkontur/global-object");
|
|
3
3
|
|
|
4
4
|
var _identifiers = require("../../lib/events/keyboard/identifiers");
|
|
@@ -17,6 +17,7 @@ var _rootNode2 = require("../../lib/rootNode");
|
|
|
17
17
|
var _client = require("../../lib/client");
|
|
18
18
|
var _createPropsGetter = require("../../lib/createPropsGetter");
|
|
19
19
|
var _isInstanceOf = require("../../lib/isInstanceOf");
|
|
20
|
+
var _CommonWrapper = require("../CommonWrapper");
|
|
20
21
|
|
|
21
22
|
var _Menu2 = require("./Menu.styles");
|
|
22
23
|
var _MenuNavigation = require("./MenuNavigation");
|
|
@@ -257,6 +258,7 @@ Menu = exports.Menu = (0, _decorator.responsiveLayout)(_class = (0, _rootNode2.r
|
|
|
257
258
|
|
|
258
259
|
|
|
259
260
|
|
|
261
|
+
|
|
260
262
|
|
|
261
263
|
|
|
262
264
|
renderHeader = function () {var _cx;
|
|
@@ -455,7 +457,7 @@ Menu = exports.Menu = (0, _decorator.responsiveLayout)(_class = (0, _rootNode2.r
|
|
|
455
457
|
* @public
|
|
456
458
|
*/;_proto.reset = function reset() {this.menuNavigation.reset();} /**
|
|
457
459
|
* @public
|
|
458
|
-
*/;_proto.hasHighlightedItem = function hasHighlightedItem() {return !!this.menuNavigation.highlightedItem;};_proto.highlightItem = function highlightItem(index) {this.menuNavigation.highlightByIndex(index);};_proto.renderMain = function renderMain() {var _cx3, _cx4;if (this.isEmpty()) {return null;}var _this$getProps = this.getProps(),hasMargin = _this$getProps.hasMargin,maxHeight = _this$getProps.maxHeight,preventWindowScroll = _this$getProps.preventWindowScroll;var offsetY = { top: "" + this.theme.scrollContainerScrollBarOffsetY, right: 0, bottom: "" + this.theme.scrollContainerScrollBarOffsetY };var isMobile = this.isMobileLayout;return /*#__PURE__*/_react.default.createElement("div", { "data-tid": MenuDataTids.root, className: (0, _Emotion.cx)(getAlignRightClass(this.props), (_cx3 = {}, _cx3[_Menu2.styles.root(this.theme)] = true, _cx3[_Menu2.styles.hasMargin(this.theme)] = hasMargin, _cx3[_Menu2.styles.mobileRoot(this.theme)] = isMobile, _cx3[_Menu2.styles.shadow(this.theme)] = !isMobile, _cx3)), style: this.getStyle(this.props), id: this.props.id, onKeyDown: this.handleKeyDown,
|
|
460
|
+
*/;_proto.hasHighlightedItem = function hasHighlightedItem() {return !!this.menuNavigation.highlightedItem;};_proto.highlightItem = function highlightItem(index) {this.menuNavigation.highlightByIndex(index);};_proto.renderMain = function renderMain() {var _cx3, _cx4;if (this.isEmpty()) {return null;}var _this$getProps = this.getProps(),hasMargin = _this$getProps.hasMargin,maxHeight = _this$getProps.maxHeight,preventWindowScroll = _this$getProps.preventWindowScroll;var offsetY = { top: "" + this.theme.scrollContainerScrollBarOffsetY, right: 0, bottom: "" + this.theme.scrollContainerScrollBarOffsetY };var isMobile = this.isMobileLayout;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("div", { "data-tid": MenuDataTids.root, className: (0, _Emotion.cx)(getAlignRightClass(this.props), (_cx3 = {}, _cx3[_Menu2.styles.root(this.theme)] = true, _cx3[_Menu2.styles.hasMargin(this.theme)] = hasMargin, _cx3[_Menu2.styles.mobileRoot(this.theme)] = isMobile, _cx3[_Menu2.styles.shadow(this.theme)] = !isMobile, _cx3)), style: this.getStyle(this.props), id: this.props.id, onKeyDown: this.handleKeyDown, tabIndex: 0 }, this.props.header && this.renderHeader(), /*#__PURE__*/_react.default.createElement(_ScrollContainer.ScrollContainer, { ref: this.refScrollContainer, maxHeight: maxHeight, preventWindowScroll: preventWindowScroll, onScrollStateChange: this.handleScrollStateChange, disabled: this.props.disableScrollContainer, offsetY: offsetY }, /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)((_cx4 = {}, _cx4[_Menu2.styles.scrollContainer(this.theme)] = true, _cx4[_Menu2.styles.scrollContainerMobile(this.theme)] = isMobile, _cx4)), ref: this.contentRef }, /*#__PURE__*/_react.default.createElement(_MenuContext.MenuContext.Provider, { value: { navigation: this.menuNavigation, onItemClick: this.props.onItemClick, enableIconPadding: this.state.enableIconPadding, setEnableIconPadding: this.setEnableIconPadding } }, this.props.children))), this.props.footer && this.renderFooter()));};_proto.move = function move(step) {if (this.unmounted) {// NOTE workaround, because `ComboBox` call `process.nextTick` in reducer
|
|
459
461
|
return;}var nextIndex = this.menuNavigation.move(step, this.getProps().cyclicSelection);this.scroll(nextIndex);};_proto.isEmpty = function isEmpty() {var children = this.props.children;return !children || !childrenToArray(children).filter(_utils.isNonNullable).length;};return Menu;}(_react.default.PureComponent), _Menu.__KONTUR_REACT_UI__ = 'Menu', _Menu.displayName = 'Menu', _Menu.defaultProps = { align: 'left', width: 'auto', maxHeight: 300, hasMargin: true, preventWindowScroll: true, cyclicSelection: true, initialSelectedItemIndex: -1 }, _Menu)) || _class) || _class;function childrenToArray(children) {var ret = []; // Use forEach instead of map to avoid cloning for key unifying.
|
|
460
462
|
_react.default.Children.forEach(children, function (child) {ret.push(child);});return ret;}var getAlignRightClass = function getAlignRightClass(props) {
|
|
461
463
|
if (props.align === 'right') {var _cx5;
|