@skbkontur/react-ui 5.0.10 → 5.0.11-ZIndex-several-roots.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/cjs/components/Dropdown/Dropdown.d.ts +2 -2
  3. package/cjs/components/Dropdown/Dropdown.js +8 -8
  4. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  5. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js +11 -10
  6. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js.map +1 -1
  7. package/cjs/components/MenuItem/MenuItem.js +23 -23
  8. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  9. package/cjs/components/PasswordInput/PasswordInput.js +1 -1
  10. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  11. package/cjs/internal/Menu/Menu.d.ts +2 -1
  12. package/cjs/internal/Menu/Menu.js +4 -2
  13. package/cjs/internal/Menu/Menu.js.map +1 -1
  14. package/cjs/internal/ZIndex/ZIndex.d.ts +1 -1
  15. package/cjs/internal/ZIndex/ZIndex.js +18 -6
  16. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  17. package/components/Dropdown/Dropdown/Dropdown.js +11 -11
  18. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  19. package/components/Dropdown/Dropdown.d.ts +2 -2
  20. package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js +13 -10
  21. package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js.map +1 -1
  22. package/components/MenuItem/MenuItem/MenuItem.js +41 -35
  23. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  24. package/components/PasswordInput/PasswordInput/PasswordInput.js +1 -1
  25. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  26. package/internal/Menu/Menu/Menu.js +6 -3
  27. package/internal/Menu/Menu/Menu.js.map +1 -1
  28. package/internal/Menu/Menu.d.ts +2 -1
  29. package/internal/ZIndex/ZIndex/ZIndex.js +12 -14
  30. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  31. package/internal/ZIndex/ZIndex.d.ts +1 -1
  32. package/package.json +2 -5
@@ -40,9 +40,9 @@ export var ColorableInputElement = forwardRefAndName('ColorableInputElement', fu
40
40
  }, []);
41
41
  useEffect(updateActive, []);
42
42
  useEffect(function () {
43
- activation(props);
43
+ activation(props, theme);
44
44
  updateActive();
45
- }, [active, showOnFocus, props.value, props.defaultValue, props.disabled, focused.current]);
45
+ }, [active, showOnFocus, props.value, props.defaultValue, props.disabled, focused.current, theme]);
46
46
  useEffect(function () {
47
47
  if (inputRef.current) {
48
48
  inputStyle.current = getComputedStyle(inputRef.current);
@@ -69,7 +69,7 @@ export var ColorableInputElement = forwardRefAndName('ColorableInputElement', fu
69
69
  var _inputRef$current;
70
70
  var isActive = !((_inputRef$current = inputRef.current) != null && (_inputRef$current = _inputRef$current.parentElement) != null && _inputRef$current.querySelector(':placeholder-shown'));
71
71
  setActive(isActive);
72
- activation(props);
72
+ activation(props, theme);
73
73
  onInput == null || onInput(e);
74
74
  }
75
75
  function handleFocus(e) {
@@ -88,9 +88,9 @@ export var ColorableInputElement = forwardRefAndName('ColorableInputElement', fu
88
88
  setActive(!((_inputRef$current2 = inputRef.current) != null && (_inputRef$current2 = _inputRef$current2.parentElement) != null && _inputRef$current2.querySelector(':placeholder-shown')));
89
89
  });
90
90
  }
91
- function activation(props) {
91
+ function activation(props, theme) {
92
92
  if (active) {
93
- debouncedPaintText(props);
93
+ debouncedPaintText(props, theme);
94
94
  } else {
95
95
  var _inputRef$current3;
96
96
  debouncedPaintText.cancel();
@@ -98,11 +98,14 @@ export var ColorableInputElement = forwardRefAndName('ColorableInputElement', fu
98
98
  (_inputRef$current3 = inputRef.current) == null || _inputRef$current3.classList.remove(globalClasses.input);
99
99
  }
100
100
  }
101
- function paintText(_props) {
101
+ function paintText(_props, _theme) {
102
102
  var _inputRef$current4, _shadow;
103
103
  if (_props === void 0) {
104
104
  _props = props;
105
105
  }
106
+ if (_theme === void 0) {
107
+ _theme = theme;
108
+ }
106
109
  if (!spanRef.current || !inputRef.current || !inputStyle.current || !isBrowser(globalObject)) {
107
110
  return;
108
111
  }
@@ -123,11 +126,11 @@ export var ColorableInputElement = forwardRefAndName('ColorableInputElement', fu
123
126
  var filledRect = spanRef.current.getBoundingClientRect();
124
127
  var threshold = filledRect.width / (inputRect.width / 100);
125
128
  var degree = style.fontStyle === 'italic' ? 100 : 90;
126
- var typedValueColor = theme.inputTextColor;
127
- var maskColor = theme.inputPlaceholderColor;
129
+ var typedValueColor = _theme.inputTextColor;
130
+ var maskColor = _theme.inputPlaceholderColor;
128
131
  if (_props.disabled) {
129
- typedValueColor = theme.inputTextColorDisabled;
130
- maskColor = theme.inputTextColorDisabled;
132
+ typedValueColor = _theme.inputTextColorDisabled;
133
+ maskColor = _theme.inputTextColorDisabled;
131
134
  }
132
135
  if (_props.showOnFocus) {
133
136
  maskColor = focused.current ? maskColor : 'transparent';
@@ -1 +1 @@
1
- {"version":3,"names":["React","useContext","useEffect","useImperativeHandle","useRef","useCallback","useState","globalObject","isBrowser","debounce","ThemeContext","forwardRefAndName","cx","globalClasses","ColorableInputElement","props","ref","inputRef","spanRef","focused","inputStyle","theme","debouncedPaintText","paintText","_useState","active","setActive","children","onInput","onFocus","onBlur","showOnFocus","inputProps","_objectWithoutPropertiesLoose","_excluded","input","current","getRootNode","updateActive","activation","value","defaultValue","disabled","getComputedStyle","createElement","Fragment","cloneElement","_extends","handleInput","handleFocus","handleBlur","className","style","visibility","position","whiteSpace","e","_inputRef$current","isActive","parentElement","querySelector","setTimeout","_inputRef$current2","_inputRef$current3","cancel","backgroundImage","classList","remove","_props","_inputRef$current4","_shadow","add","shadow","shadowRoot","typedValueElement","getElementById","attachShadow","mode","document","setAttribute","appendChild","textContent","getAttribute","inputRect","getBoundingClientRect","filledRect","threshold","width","degree","fontStyle","typedValueColor","inputTextColor","maskColor","inputPlaceholderColor","inputTextColorDisabled"],"sources":["ColorableInputElement.tsx"],"sourcesContent":["import React, { ForwardedRef, useContext, useEffect, useImperativeHandle, useRef, useCallback, useState } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\nimport debounce from 'lodash.debounce';\n\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport { InputElement, InputElementProps } from '../../Input';\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName';\nimport { cx } from '../../../lib/theming/Emotion';\n\nimport { globalClasses } from './ColorableInputElement.styles';\n\nexport type ColorableInputElementProps = InputElementProps & {\n showOnFocus?: boolean;\n children: React.ReactElement;\n};\n\n// Возможно придётся включить.\n// Иногда, на тяжёлых страницах, текст рендерится итеративно.\n// Из-за этого могут оставаться артефакты при покраске компонента, которые пропадут только после фокуса.\n// setInterval(() => window.requestAnimationFrame(() => dictionary.forEach((paint) => paint())), 1000);\n\nexport const ColorableInputElement = forwardRefAndName(\n 'ColorableInputElement',\n function ColorableInputElement(props: ColorableInputElementProps, ref: ForwardedRef<InputElement>) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const spanRef = useRef<HTMLSpanElement | null>(null);\n const focused = useRef(false);\n const inputStyle = React.useRef<CSSStyleDeclaration>();\n const theme = useContext(ThemeContext);\n const debouncedPaintText = useCallback(debounce(paintText), []);\n const [active, setActive] = useState(true);\n\n const { children, onInput, onFocus, onBlur, showOnFocus, ...inputProps } = props;\n\n useImperativeHandle(\n ref,\n () => ({\n input: inputRef.current,\n getRootNode: () => inputRef.current,\n }),\n [],\n );\n\n useEffect(updateActive, []);\n\n useEffect(() => {\n activation(props);\n updateActive();\n }, [active, showOnFocus, props.value, props.defaultValue, props.disabled, focused.current]);\n\n useEffect(() => {\n if (inputRef.current) {\n inputStyle.current = getComputedStyle(inputRef.current);\n }\n });\n\n return (\n <>\n {React.cloneElement(children, {\n ...inputProps,\n onInput: handleInput,\n onFocus: handleFocus,\n onBlur: handleBlur,\n inputRef,\n className: cx(props.className, active && globalClasses.input),\n })}\n {active && <span style={{ visibility: 'hidden', position: 'absolute', whiteSpace: 'pre' }} ref={spanRef} />}\n </>\n );\n\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const isActive = !inputRef.current?.parentElement?.querySelector(':placeholder-shown');\n setActive(isActive);\n\n activation(props);\n\n onInput?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setTimeout(updateActive);\n\n focused.current = true;\n\n onFocus?.(e);\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n updateActive();\n\n focused.current = false;\n\n onBlur?.(e);\n }\n\n function updateActive() {\n setTimeout(() => {\n setActive(!inputRef.current?.parentElement?.querySelector(':placeholder-shown'));\n });\n }\n\n function activation(props: ColorableInputElementProps) {\n if (active) {\n debouncedPaintText(props);\n } else {\n debouncedPaintText.cancel();\n inputRef.current && (inputRef.current.style.backgroundImage = '');\n inputRef.current?.classList.remove(globalClasses.input);\n }\n }\n\n function paintText(_props: Partial<ColorableInputElementProps> = props) {\n if (!spanRef.current || !inputRef.current || !inputStyle.current || !isBrowser(globalObject)) {\n return;\n }\n\n inputRef.current?.classList.add(globalClasses.input);\n\n let shadow = spanRef.current.shadowRoot;\n let typedValueElement = shadow?.getElementById('span');\n\n if (!typedValueElement) {\n shadow = spanRef.current.attachShadow({ mode: 'open' });\n\n typedValueElement = globalObject.document.createElement('span');\n typedValueElement.setAttribute('id', 'span');\n\n shadow.appendChild(typedValueElement);\n }\n\n const style = inputStyle.current;\n\n typedValueElement.textContent =\n ((inputRef.current.getAttribute('data-unmasked-value') || focused.current) &&\n inputRef.current.getAttribute('data-typed-value')) ||\n '';\n\n const inputRect = inputRef.current.getBoundingClientRect();\n const filledRect = spanRef.current.getBoundingClientRect();\n\n const threshold = filledRect.width / (inputRect.width / 100);\n const degree = style.fontStyle === 'italic' ? 100 : 90;\n\n let typedValueColor = theme.inputTextColor;\n let maskColor = theme.inputPlaceholderColor;\n if (_props.disabled) {\n typedValueColor = theme.inputTextColorDisabled;\n maskColor = theme.inputTextColorDisabled;\n }\n if (_props.showOnFocus) {\n maskColor = focused.current ? maskColor : 'transparent';\n }\n\n inputRef.current.style.backgroundImage = `\n linear-gradient(\n ${degree}deg,\n ${typedValueColor} ${threshold}%,\n ${maskColor} ${threshold}%\n )`;\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useContext","useEffect","useImperativeHandle","useRef","useCallback","useState","globalObject","isBrowser","debounce","ThemeContext","forwardRefAndName","cx","globalClasses","ColorableInputElement","props","ref","inputRef","spanRef","focused","inputStyle","theme","debouncedPaintText","paintText","_useState","active","setActive","children","onInput","onFocus","onBlur","showOnFocus","inputProps","_objectWithoutPropertiesLoose","_excluded","input","current","getRootNode","updateActive","activation","value","defaultValue","disabled","getComputedStyle","createElement","Fragment","cloneElement","_extends","handleInput","handleFocus","handleBlur","className","style","visibility","position","whiteSpace","e","_inputRef$current","isActive","parentElement","querySelector","setTimeout","_inputRef$current2","_inputRef$current3","cancel","backgroundImage","classList","remove","_props","_theme","_inputRef$current4","_shadow","add","shadow","shadowRoot","typedValueElement","getElementById","attachShadow","mode","document","setAttribute","appendChild","textContent","getAttribute","inputRect","getBoundingClientRect","filledRect","threshold","width","degree","fontStyle","typedValueColor","inputTextColor","maskColor","inputPlaceholderColor","inputTextColorDisabled"],"sources":["ColorableInputElement.tsx"],"sourcesContent":["import React, { ForwardedRef, useContext, useEffect, useImperativeHandle, useRef, useCallback, useState } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\nimport debounce from 'lodash.debounce';\n\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport { InputElement, InputElementProps } from '../../Input';\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName';\nimport { cx } from '../../../lib/theming/Emotion';\nimport { Theme } from '../../../lib/theming/Theme';\n\nimport { globalClasses } from './ColorableInputElement.styles';\n\nexport type ColorableInputElementProps = InputElementProps & {\n showOnFocus?: boolean;\n children: React.ReactElement;\n};\n\n// Возможно придётся включить.\n// Иногда, на тяжёлых страницах, текст рендерится итеративно.\n// Из-за этого могут оставаться артефакты при покраске компонента, которые пропадут только после фокуса.\n// setInterval(() => window.requestAnimationFrame(() => dictionary.forEach((paint) => paint())), 1000);\n\nexport const ColorableInputElement = forwardRefAndName(\n 'ColorableInputElement',\n function ColorableInputElement(props: ColorableInputElementProps, ref: ForwardedRef<InputElement>) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const spanRef = useRef<HTMLSpanElement | null>(null);\n const focused = useRef(false);\n const inputStyle = React.useRef<CSSStyleDeclaration>();\n const theme = useContext(ThemeContext);\n const debouncedPaintText = useCallback(debounce(paintText), []);\n const [active, setActive] = useState(true);\n\n const { children, onInput, onFocus, onBlur, showOnFocus, ...inputProps } = props;\n\n useImperativeHandle(\n ref,\n () => ({\n input: inputRef.current,\n getRootNode: () => inputRef.current,\n }),\n [],\n );\n\n useEffect(updateActive, []);\n\n useEffect(() => {\n activation(props, theme);\n updateActive();\n }, [active, showOnFocus, props.value, props.defaultValue, props.disabled, focused.current, theme]);\n\n useEffect(() => {\n if (inputRef.current) {\n inputStyle.current = getComputedStyle(inputRef.current);\n }\n });\n\n return (\n <>\n {React.cloneElement(children, {\n ...inputProps,\n onInput: handleInput,\n onFocus: handleFocus,\n onBlur: handleBlur,\n inputRef,\n className: cx(props.className, active && globalClasses.input),\n })}\n {active && <span style={{ visibility: 'hidden', position: 'absolute', whiteSpace: 'pre' }} ref={spanRef} />}\n </>\n );\n\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const isActive = !inputRef.current?.parentElement?.querySelector(':placeholder-shown');\n setActive(isActive);\n\n activation(props, theme);\n\n onInput?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setTimeout(updateActive);\n\n focused.current = true;\n\n onFocus?.(e);\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n updateActive();\n\n focused.current = false;\n\n onBlur?.(e);\n }\n\n function updateActive() {\n setTimeout(() => {\n setActive(!inputRef.current?.parentElement?.querySelector(':placeholder-shown'));\n });\n }\n\n function activation(props: ColorableInputElementProps, theme: Theme) {\n if (active) {\n debouncedPaintText(props, theme);\n } else {\n debouncedPaintText.cancel();\n inputRef.current && (inputRef.current.style.backgroundImage = '');\n inputRef.current?.classList.remove(globalClasses.input);\n }\n }\n\n function paintText(_props: Partial<ColorableInputElementProps> = props, _theme: Theme = theme) {\n if (!spanRef.current || !inputRef.current || !inputStyle.current || !isBrowser(globalObject)) {\n return;\n }\n\n inputRef.current?.classList.add(globalClasses.input);\n\n let shadow = spanRef.current.shadowRoot;\n let typedValueElement = shadow?.getElementById('span');\n\n if (!typedValueElement) {\n shadow = spanRef.current.attachShadow({ mode: 'open' });\n\n typedValueElement = globalObject.document.createElement('span');\n typedValueElement.setAttribute('id', 'span');\n\n shadow.appendChild(typedValueElement);\n }\n\n const style = inputStyle.current;\n\n typedValueElement.textContent =\n ((inputRef.current.getAttribute('data-unmasked-value') || focused.current) &&\n inputRef.current.getAttribute('data-typed-value')) ||\n '';\n\n const inputRect = inputRef.current.getBoundingClientRect();\n const filledRect = spanRef.current.getBoundingClientRect();\n\n const threshold = filledRect.width / (inputRect.width / 100);\n const degree = style.fontStyle === 'italic' ? 100 : 90;\n\n let typedValueColor = _theme.inputTextColor;\n let maskColor = _theme.inputPlaceholderColor;\n if (_props.disabled) {\n typedValueColor = _theme.inputTextColorDisabled;\n maskColor = _theme.inputTextColorDisabled;\n }\n if (_props.showOnFocus) {\n maskColor = focused.current ? maskColor : 'transparent';\n }\n\n inputRef.current.style.backgroundImage = `\n linear-gradient(\n ${degree}deg,\n ${typedValueColor} ${threshold}%,\n ${maskColor} ${threshold}%\n )`;\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  import _createClass from "@babel/runtime/helpers/esm/createClass";
4
4
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
5
- var _excluded = ["link", "comment", "icon", "loose", "state", "size", "_enableIconPadding", "component", "onMouseEnter", "onMouseLeave", "isMobile", "href", "disabled", "scrollIntoView", "rel", "isNotSelectable"];
5
+ var _excluded = ["link", "comment", "icon", "loose", "state", "size", "_enableIconPadding", "component", "onMouseEnter", "onMouseLeave", "isMobile", "href", "disabled", "scrollIntoView", "rel", "isNotSelectable", "children", "className", "style", "data-tid"];
6
6
  var _class, _MenuItem;
7
7
  import React from 'react';
8
8
  import PropTypes from 'prop-types';
@@ -68,26 +68,31 @@ export var MenuItem = rootNode(_class = (_MenuItem = /*#__PURE__*/function (_Rea
68
68
  location.href = _this.props.href;
69
69
  }
70
70
  };
71
- _this.renderMain = function (props) {
71
+ _this.renderMain = function () {
72
72
  var _cx2, _cx3, _cx4;
73
- var link = props.link,
74
- comment = props.comment,
75
- icon = props.icon,
76
- loose = props.loose,
77
- state = props.state,
78
- size = props.size,
79
- _enableIconPadding = props._enableIconPadding,
80
- component = props.component,
81
- onMouseEnter = props.onMouseEnter,
82
- onMouseLeave = props.onMouseLeave,
83
- isMobile = props.isMobile,
84
- href = props.href,
85
- disabled = props.disabled,
86
- scrollIntoView = props.scrollIntoView,
87
- _props$rel = props.rel,
88
- rel = _props$rel === void 0 ? _this.props.href && isExternalLink(_this.props.href) ? 'noopener noreferrer' : _this.props.rel : _props$rel,
89
- isNotSelectable = props.isNotSelectable,
90
- rest = _objectWithoutPropertiesLoose(props, _excluded);
73
+ var _this$props = _this.props,
74
+ link = _this$props.link,
75
+ comment = _this$props.comment,
76
+ icon = _this$props.icon,
77
+ loose = _this$props.loose,
78
+ state = _this$props.state,
79
+ size = _this$props.size,
80
+ _enableIconPadding = _this$props._enableIconPadding,
81
+ component = _this$props.component,
82
+ onMouseEnter = _this$props.onMouseEnter,
83
+ onMouseLeave = _this$props.onMouseLeave,
84
+ isMobile = _this$props.isMobile,
85
+ href = _this$props.href,
86
+ disabled = _this$props.disabled,
87
+ scrollIntoView = _this$props.scrollIntoView,
88
+ _this$props$rel = _this$props.rel,
89
+ rel = _this$props$rel === void 0 ? href && isExternalLink(href) ? 'noopener noreferrer' : _this.props.rel : _this$props$rel,
90
+ isNotSelectable = _this$props.isNotSelectable,
91
+ children = _this$props.children,
92
+ unusedClasses = _this$props.className,
93
+ style = _this$props.style,
94
+ dataTid = _this$props['data-tid'],
95
+ rest = _objectWithoutPropertiesLoose(_this$props, _excluded);
91
96
  var iconElement = null;
92
97
  if (icon) {
93
98
  var _cx;
@@ -99,14 +104,20 @@ export var MenuItem = rootNode(_class = (_MenuItem = /*#__PURE__*/function (_Rea
99
104
  className: cx((_cx = {}, _cx[styles.icon()] = true, _cx[_this.getIconSizeClassName()] = true, _cx))
100
105
  }, icon);
101
106
  }
102
- var className = cx((_cx2 = {}, _cx2[styles.root(_this.theme)] = true, _cx2[_this.getRootSizeClassName()] = true, _cx2[styles.rootMobile(_this.theme)] = isMobile, _cx2[styles.loose()] = !!loose, _cx2[styles.hover(_this.theme)] = _this.isHover, _cx2[styles.selected(_this.theme)] = _this.isSelected, _cx2[styles.link(_this.theme)] = !!link, _cx2[_this.getWithIconSizeClassName()] = Boolean(iconElement) || !!_enableIconPadding || _this.context.enableIconPadding, _cx2[styles.disabled(_this.theme)] = !!_this.props.disabled, _cx2));
103
- var children = _this.props.children;
107
+ var className = cx((_cx2 = {}, _cx2[styles.root(_this.theme)] = true, _cx2[_this.getRootSizeClassName()] = true, _cx2[styles.rootMobile(_this.theme)] = isMobile, _cx2[styles.loose()] = !!loose, _cx2[styles.hover(_this.theme)] = _this.isHover, _cx2[styles.selected(_this.theme)] = _this.isSelected, _cx2[styles.link(_this.theme)] = !!link, _cx2[_this.getWithIconSizeClassName()] = Boolean(iconElement) || !!_enableIconPadding || _this.context.enableIconPadding, _cx2[styles.disabled(_this.theme)] = !!disabled, _cx2));
104
108
  var content = children;
105
109
  if (isFunction(children)) {
106
- content = children(_this.props.state);
110
+ content = children(state);
107
111
  }
108
112
  var Component = _this.getComponent();
109
113
  return /*#__PURE__*/(
114
+ React.createElement(CommonWrapper, _extends({
115
+ rootNodeRef: _this.setRootNode
116
+ }, getVisualStateDataAttributes({
117
+ hover: _this.isHover,
118
+ selected: _this.isSelected
119
+ }), _this.props), /*#__PURE__*/
120
+
110
121
  React.createElement(Component, _extends({
111
122
  ref: _this.setRootRef,
112
123
  "data-tid": MenuItemDataTids.root
@@ -125,11 +136,11 @@ export var MenuItem = rootNode(_class = (_MenuItem = /*#__PURE__*/function (_Rea
125
136
  className: cx((_cx3 = {}, _cx3[styles.mobileContentWithIcon()] = isMobile && isNonNullable(icon), _cx3)),
126
137
  ref: _this.contentRef,
127
138
  "data-tid": MenuItemDataTids.content
128
- }, typeof content === 'function' ? content() : content), _this.props.comment && /*#__PURE__*/
139
+ }, typeof content === 'function' ? content() : content), comment && /*#__PURE__*/
129
140
  React.createElement("div", {
130
141
  "data-tid": MenuItemDataTids.comment,
131
142
  className: cx((_cx4 = {}, _cx4[styles.comment(_this.theme)] = true, _cx4[styles.commentHover(_this.theme)] = _this.isHover, _cx4))
132
- }, comment))
143
+ }, comment)))
133
144
  );
134
145
  };
135
146
 
@@ -160,10 +171,10 @@ export var MenuItem = rootNode(_class = (_MenuItem = /*#__PURE__*/function (_Rea
160
171
  _this.rootRef = element;
161
172
  };
162
173
  _this.getComponent = function () {
163
- var _this$props = _this.props,
164
- disabled = _this$props.disabled,
165
- component = _this$props.component,
166
- href = _this$props.href;
174
+ var _this$props2 = _this.props,
175
+ disabled = _this$props2.disabled,
176
+ component = _this$props2.component,
177
+ href = _this$props2.href;
167
178
  if (component) {
168
179
  return component;
169
180
  }
@@ -189,12 +200,7 @@ export var MenuItem = rootNode(_class = (_MenuItem = /*#__PURE__*/function (_Rea
189
200
  var _this2 = this;
190
201
  return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
191
202
  _this2.theme = theme;
192
- return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
193
- rootNodeRef: _this2.setRootNode
194
- }, getVisualStateDataAttributes({
195
- hover: _this2.isHover,
196
- selected: _this2.isSelected
197
- }), _this2.props), _this2.renderMain(_this2.props));
203
+ return _this2.renderMain();
198
204
  });
199
205
  };
200
206
  _proto.componentDidMount = function componentDidMount() {
@@ -1 +1 @@
1
- {"version":3,"names":["React","PropTypes","globalObject","isBrowser","scrollYCenterIntoNearestScrollable","isExternalLink","isFunction","isNonNullable","isReactUIComponent","ThemeContext","CommonWrapper","cx","rootNode","MenuContext","getVisualStateDataAttributes","styles","MenuItemDataTids","root","content","comment","MenuItem","_class","_MenuItem","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","iconOffsetTop","highlighted","mouseEntered","rootRef","contentRef","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","isNotSelectable","rest","_objectWithoutPropertiesLoose","_excluded","iconElement","_cx","createElement","style","top","className","getIconSizeClassName","theme","getRootSizeClassName","rootMobile","hover","isHover","selected","isSelected","getWithIconSizeClassName","Boolean","context","enableIconPadding","children","Component","getComponent","_extends","ref","setRootRef","activeState","onMouseOver","handleMouseEnterFix","handleMouseLeave","onClick","undefined","tabIndex","mobileContentWithIcon","commentHover","e","_this$context$navigat","navigation","_this$context$navigat2","onItemClick","element","_this$props","hasIconAmongItems","_this$context$navigat3","items","some","item","_inheritsLoose","_proto","prototype","render","_this2","Consumer","rootNodeRef","setRootNode","componentDidMount","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","_createClass","key","get","__KONTUR_REACT_UI__","displayName","__MENU_ITEM__","propTypes","node","bool","string","func","contextType","isMenuItem"],"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","PropTypes","globalObject","isBrowser","scrollYCenterIntoNearestScrollable","isExternalLink","isFunction","isNonNullable","isReactUIComponent","ThemeContext","CommonWrapper","cx","rootNode","MenuContext","getVisualStateDataAttributes","styles","MenuItemDataTids","root","content","comment","MenuItem","_class","_MenuItem","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","iconOffsetTop","highlighted","mouseEntered","rootRef","contentRef","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","isNotSelectable","children","unusedClasses","className","style","dataTid","rest","_objectWithoutPropertiesLoose","_excluded","iconElement","_cx","createElement","top","getIconSizeClassName","theme","getRootSizeClassName","rootMobile","hover","isHover","selected","isSelected","getWithIconSizeClassName","Boolean","context","enableIconPadding","Component","getComponent","_extends","rootNodeRef","setRootNode","ref","setRootRef","activeState","onMouseOver","handleMouseEnterFix","handleMouseLeave","onClick","undefined","tabIndex","mobileContentWithIcon","commentHover","e","_this$context$navigat","navigation","_this$context$navigat2","onItemClick","element","_this$props2","hasIconAmongItems","_this$context$navigat3","items","some","item","_inheritsLoose","_proto","prototype","render","_this2","Consumer","componentDidMount","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","_createClass","key","get","__KONTUR_REACT_UI__","displayName","__MENU_ITEM__","propTypes","node","bool","string","func","contextType","isMenuItem"],"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":[]}
@@ -197,7 +197,7 @@ export var PasswordInput = (_dec = locale('PasswordInput', PasswordInputLocaleHe
197
197
  _this3.theme = theme;
198
198
  return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
199
199
  rootNodeRef: _this3.setRootNode
200
- }, _this3.props), _this3.renderMain(_this3.props));
200
+ }, _this3.getProps()), _this3.renderMain);
201
201
  });
202
202
  };
203
203
  _proto.getEyeWrapperClassname = function getEyeWrapperClassname() {
@@ -1 +1 @@
1
- {"version":3,"names":["React","PropTypes","globalObject","isBrowser","locale","RenderLayer","isNonNullable","isKeyCapsLock","KeyboardEventCodes","Codes","Input","isIE11","CommonWrapper","ThemeContext","cx","rootNode","createPropsGetter","styles","PasswordInputIcon","PasswordInputLocaleHelper","PasswordInputDataTids","root","capsLockDetector","eyeIcon","PasswordInput","_dec","_class","_PasswordInput","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","visible","capsLockEnabled","focus","input","blur","handleBlur","handleKeyPress","e","_this$props","props","onKeyPress","detectCapsLock","getModifierState","CapsLock","setState","handleKeydown","_this2","_this2$props","onKeyDown","handleToggleVisibility","prevState","handleFocus","renderEye","createElement","className","iconWrapper","toggleVisibility","theme","getEyeWrapperClassname","disabled","type","eyeClosedAriaLabel","eyeOpenedAriaLabel","onClick","icon","size","refInput","element","hideSymbols","renderMain","rest","_objectWithoutPropertiesLoose","_excluded","inputProps","_extends","rightIcon","onFocusOutside","onClickOutside","ref","_inheritsLoose","_proto","prototype","componentDidMount","document","msCapsLockWarningOff","getDerivedStateFromProps","render","_this3","Consumer","rootNodeRef","setRootNode","eyeWrapperLarge","eyeWrapperMedium","eyeWrapperSmall","PureComponent","__KONTUR_REACT_UI__","displayName","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","PropTypes","globalObject","isBrowser","locale","RenderLayer","isNonNullable","isKeyCapsLock","KeyboardEventCodes","Codes","Input","isIE11","CommonWrapper","ThemeContext","cx","rootNode","createPropsGetter","styles","PasswordInputIcon","PasswordInputLocaleHelper","PasswordInputDataTids","root","capsLockDetector","eyeIcon","PasswordInput","_dec","_class","_PasswordInput","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","visible","capsLockEnabled","focus","input","blur","handleBlur","handleKeyPress","e","_this$props","props","onKeyPress","detectCapsLock","getModifierState","CapsLock","setState","handleKeydown","_this2","_this2$props","onKeyDown","handleToggleVisibility","prevState","handleFocus","renderEye","createElement","className","iconWrapper","toggleVisibility","theme","getEyeWrapperClassname","disabled","type","eyeClosedAriaLabel","eyeOpenedAriaLabel","onClick","icon","size","refInput","element","hideSymbols","renderMain","rest","_objectWithoutPropertiesLoose","_excluded","inputProps","_extends","rightIcon","onFocusOutside","onClickOutside","ref","_inheritsLoose","_proto","prototype","componentDidMount","document","msCapsLockWarningOff","getDerivedStateFromProps","render","_this3","Consumer","rootNodeRef","setRootNode","eyeWrapperLarge","eyeWrapperMedium","eyeWrapperSmall","PureComponent","__KONTUR_REACT_UI__","displayName","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,3 +1,4 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
1
2
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
2
3
  var _class, _Menu;
3
4
  import React from 'react';
@@ -16,6 +17,7 @@ import { getRootNode, rootNode } from "../../../lib/rootNode";
16
17
  import { isIE11 } from "../../../lib/client";
17
18
  import { createPropsGetter } from "../../../lib/createPropsGetter";
18
19
  import { isInstanceOf } from "../../../lib/isInstanceOf";
20
+ import { CommonWrapper } from "../../CommonWrapper";
19
21
  import { styles } from "../Menu.styles";
20
22
  import { MenuNavigation } from "../MenuNavigation";
21
23
  import { MenuContext } from "../MenuContext";
@@ -277,13 +279,14 @@ export var Menu = responsiveLayout(_class = rootNode(_class = (_Menu = /*#__PURE
277
279
  bottom: "" + this.theme.scrollContainerScrollBarOffsetY
278
280
  };
279
281
  var isMobile = this.isMobileLayout;
280
- return /*#__PURE__*/React.createElement("div", {
282
+ return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
283
+ rootNodeRef: this.setRootNode
284
+ }, this.props), /*#__PURE__*/React.createElement("div", {
281
285
  "data-tid": MenuDataTids.root,
282
286
  className: cx(getAlignRightClass(this.props), (_cx3 = {}, _cx3[styles.root(this.theme)] = true, _cx3[styles.hasMargin(this.theme)] = hasMargin, _cx3[styles.mobileRoot(this.theme)] = isMobile, _cx3[styles.shadow(this.theme)] = !isMobile, _cx3)),
283
287
  style: this.getStyle(this.props),
284
288
  id: this.props.id,
285
289
  onKeyDown: this.handleKeyDown,
286
- ref: this.setRootNode,
287
290
  tabIndex: 0
288
291
  }, this.props.header && this.renderHeader(), /*#__PURE__*/React.createElement(ScrollContainer, {
289
292
  ref: this.refScrollContainer,
@@ -302,7 +305,7 @@ export var Menu = responsiveLayout(_class = rootNode(_class = (_Menu = /*#__PURE
302
305
  enableIconPadding: this.state.enableIconPadding,
303
306
  setEnableIconPadding: this.setEnableIconPadding
304
307
  }
305
- }, this.props.children))), this.props.footer && this.renderFooter());
308
+ }, this.props.children))), this.props.footer && this.renderFooter()));
306
309
  };
307
310
  _proto.move = function move(step) {
308
311
  if (this.unmounted) {