@skbkontur/react-ui 4.20.0-next.1 → 4.20.0
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 +25 -0
- package/cjs/components/Calendar/Calendar.js +4 -3
- package/cjs/components/Calendar/Calendar.js.map +1 -1
- package/cjs/components/CurrencyInput/CurrencyInput.js +2 -1
- package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
- package/cjs/components/GlobalLoader/GlobalLoader.js +3 -3
- package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
- package/cjs/components/MenuHeader/MenuHeader.js +3 -1
- package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.d.ts +21 -0
- package/cjs/components/MenuItem/MenuItem.js +112 -15
- package/cjs/components/MenuItem/MenuItem.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.md +20 -6
- package/cjs/components/Paging/Paging.js +2 -1
- package/cjs/components/Paging/Paging.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollBar.js +2 -1
- package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -2
- package/cjs/components/ScrollContainer/ScrollContainer.js +15 -8
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/Select/Item.d.ts +1 -0
- package/cjs/components/Select/Item.js +2 -1
- package/cjs/components/Select/Item.js.map +1 -1
- package/cjs/components/Select/Select.d.ts +1 -0
- package/cjs/components/Select/Select.js +17 -2
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/Select/Select.md +12 -0
- package/cjs/components/SidePage/SidePage.d.ts +3 -1
- package/cjs/components/SidePage/SidePage.js +30 -4
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/Tabs/Indicator.js +2 -1
- package/cjs/components/Tabs/Indicator.js.map +1 -1
- package/cjs/components/Tabs/Tabs.js +2 -1
- package/cjs/components/Tabs/Tabs.js.map +1 -1
- package/cjs/components/Textarea/Textarea.d.ts +1 -0
- package/cjs/components/Textarea/Textarea.js +20 -3
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Textarea/TextareaWithSafari17Workaround.d.ts +6 -0
- package/cjs/components/Textarea/TextareaWithSafari17Workaround.js +20 -0
- package/cjs/components/Textarea/TextareaWithSafari17Workaround.js.map +1 -0
- package/cjs/components/Tooltip/Tooltip.d.ts +6 -1
- package/cjs/components/Tooltip/Tooltip.js +12 -2
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.md +24 -0
- package/cjs/internal/DateSelect/DateSelect.js +4 -3
- package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
- package/cjs/internal/DropdownContainer/DropdownContainer.js +4 -3
- package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
- package/cjs/internal/FocusTrap/FocusTrap.js +3 -2
- package/cjs/internal/FocusTrap/FocusTrap.js.map +1 -1
- package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js +2 -1
- package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.js +2 -1
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/InternalMenu/InternalMenu.js +4 -3
- package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
- package/cjs/internal/Menu/Menu.d.ts +6 -0
- package/cjs/internal/Menu/Menu.js +82 -14
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/Menu/MenuContext.d.ts +10 -0
- package/cjs/internal/Menu/MenuContext.js +16 -0
- package/cjs/internal/Menu/MenuContext.js.map +1 -0
- package/cjs/internal/Menu/MenuNavigation.d.ts +26 -0
- package/cjs/internal/Menu/MenuNavigation.js +107 -0
- package/cjs/internal/Menu/MenuNavigation.js.map +1 -0
- package/cjs/internal/Menu/isActiveElement.js +1 -1
- package/cjs/internal/Menu/isActiveElement.js.map +1 -1
- package/cjs/internal/Popup/Popup.js +6 -5
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/RenderLayer/RenderLayer.js +3 -2
- package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
- package/cjs/lib/client.d.ts +1 -0
- package/cjs/lib/client.js +4 -2
- package/cjs/lib/client.js.map +1 -1
- package/cjs/lib/dom/tabbableHelpers.js +2 -1
- package/cjs/lib/dom/tabbableHelpers.js.map +1 -1
- package/cjs/lib/events/fixClickFocusIE.js +2 -1
- package/cjs/lib/events/fixClickFocusIE.js.map +1 -1
- package/cjs/lib/events/keyboard/identifiers.js +2 -1
- package/cjs/lib/events/keyboard/identifiers.js.map +1 -1
- package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +106 -0
- package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +3 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +3 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +7 -1
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/cjs/lib/isInstanceOf.d.ts +1 -0
- package/cjs/lib/isInstanceOf.js +6 -0
- package/cjs/lib/isInstanceOf.js.map +1 -0
- package/cjs/lib/listenFocusOutside.js +2 -1
- package/cjs/lib/listenFocusOutside.js.map +1 -1
- package/cjs/lib/rootNode/getRootNode.js +4 -3
- package/cjs/lib/rootNode/getRootNode.js.map +1 -1
- package/components/Calendar/Calendar/Calendar.js +2 -1
- package/components/Calendar/Calendar/Calendar.js.map +1 -1
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +2 -1
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +5 -5
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
- package/components/MenuHeader/MenuHeader/MenuHeader.js +3 -1
- package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
- package/components/MenuItem/MenuItem/MenuItem.js +126 -17
- package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +21 -0
- package/components/MenuItem/MenuItem.md +20 -6
- package/components/Paging/Paging/Paging.js +2 -1
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/ScrollContainer/ScrollBar/ScrollBar.js +2 -1
- package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +21 -10
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.d.ts +1 -2
- package/components/Select/Item/Item.js +3 -1
- package/components/Select/Item/Item.js.map +1 -1
- package/components/Select/Item.d.ts +1 -0
- package/components/Select/Select/Select.js +14 -8
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.d.ts +1 -0
- package/components/Select/Select.md +12 -0
- package/components/SidePage/SidePage/SidePage.js +31 -7
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePage.d.ts +3 -1
- package/components/Tabs/Indicator/Indicator.js +2 -1
- package/components/Tabs/Indicator/Indicator.js.map +1 -1
- package/components/Tabs/Tabs/Tabs.js +2 -1
- package/components/Tabs/Tabs/Tabs.js.map +1 -1
- package/components/Textarea/Textarea/Textarea.js +13 -7
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.d.ts +1 -0
- package/components/Textarea/TextareaWithSafari17Workaround/TextareaWithSafari17Workaround.js +21 -0
- package/components/Textarea/TextareaWithSafari17Workaround/TextareaWithSafari17Workaround.js.map +1 -0
- package/components/Textarea/TextareaWithSafari17Workaround/package.json +6 -0
- package/components/Textarea/TextareaWithSafari17Workaround.d.ts +6 -0
- package/components/Tooltip/Tooltip/Tooltip.js +7 -4
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +6 -1
- package/components/Tooltip/Tooltip.md +24 -0
- package/internal/DateSelect/DateSelect/DateSelect.js +2 -1
- package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
- package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +2 -1
- package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
- package/internal/FocusTrap/FocusTrap/FocusTrap.js +2 -1
- package/internal/FocusTrap/FocusTrap/FocusTrap.js.map +1 -1
- package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js +2 -1
- package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
- package/internal/InputLikeText/InputLikeText/InputLikeText.js +2 -1
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InternalMenu/InternalMenu/InternalMenu.js +2 -1
- package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
- package/internal/Menu/Menu/Menu.js +138 -56
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/Menu/Menu.d.ts +6 -0
- package/internal/Menu/MenuContext/MenuContext.js +5 -0
- package/internal/Menu/MenuContext/MenuContext.js.map +1 -0
- package/internal/Menu/MenuContext/package.json +6 -0
- package/internal/Menu/MenuContext.d.ts +10 -0
- package/internal/Menu/MenuNavigation/MenuNavigation.js +123 -0
- package/internal/Menu/MenuNavigation/MenuNavigation.js.map +1 -0
- package/internal/Menu/MenuNavigation/package.json +6 -0
- package/internal/Menu/MenuNavigation.d.ts +26 -0
- package/internal/Menu/isActiveElement/isActiveElement.js +1 -1
- package/internal/Menu/isActiveElement/isActiveElement.js.map +1 -1
- package/internal/Popup/Popup/Popup.js +2 -1
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/RenderLayer/RenderLayer/RenderLayer.js +2 -1
- package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
- package/lib/client/client.js +2 -1
- package/lib/client/client.js.map +1 -1
- package/lib/client.d.ts +1 -0
- package/lib/dom/tabbableHelpers/tabbableHelpers.js +2 -1
- package/lib/dom/tabbableHelpers/tabbableHelpers.js.map +1 -1
- package/lib/events/fixClickFocusIE/fixClickFocusIE.js +2 -1
- package/lib/events/fixClickFocusIE/fixClickFocusIE.js.map +1 -1
- package/lib/events/keyboard/identifiers/identifiers.js +2 -1
- package/lib/events/keyboard/identifiers/identifiers.js.map +1 -1
- package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +106 -0
- package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +3 -0
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +4 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +3 -0
- package/lib/isInstanceOf/isInstanceOf.js +3 -0
- package/lib/isInstanceOf/isInstanceOf.js.map +1 -0
- package/lib/isInstanceOf/package.json +6 -0
- package/lib/isInstanceOf.d.ts +1 -0
- package/lib/listenFocusOutside/listenFocusOutside.js +2 -1
- package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
- package/lib/rootNode/getRootNode/getRootNode.js +2 -1
- package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["IgnoreLayerClick.tsx"],"names":["React","globalObject","
|
|
1
|
+
{"version":3,"sources":["IgnoreLayerClick.tsx"],"names":["React","globalObject","getRootNode","rootNode","isInstanceOf","CommonWrapper","IgnoreLayerClick","render","child","Children","only","props","children","active","Component","IgnoreLayerClickWrapper","element","handleMouseDown","event","stopPropagation","componentDidMount","Element","addEventListener","componentWillUnmount","removeEventListener","setRootNode","__KONTUR_REACT_UI__"],"mappings":"2JAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,YAAT,QAA6B,0BAA7B;;AAEA,SAASC,WAAT,EAAsBC,QAAtB,QAAoD,oBAApD;AACA,SAASC,YAAT,QAA6B,wBAA7B;AACA,SAASC,aAAT,QAA8B,kBAA9B;;;;;;;AAOA,WAAaC,gBAAb;AACSC,EAAAA,MADT,GACE,kBAAgB;AACd,QAAMC,KAAK,GAAGR,KAAK,CAACS,QAAN,CAAeC,IAAf,CAAoB,KAAKC,KAAL,CAAWC,QAA/B,CAAd;AACA,WAAO,KAAKD,KAAL,CAAWE,MAAX,gBAAoB,oBAAC,uBAAD,QAA0BL,KAA1B,CAApB,GAAiFA,KAAxF;AACD,GAJH,2BAAsCR,KAAK,CAACc,SAA5C;;;;;;;AAWA;;AAEMC,uB,GADLZ,Q;;;AAISa,IAAAA,O,GAA0B,I;;;;;;;;;;;;;;;;;;;;;;;;;;AA0B1BC,IAAAA,e,GAAkB,UAACC,KAAD,EAAkB;AAC1CA,MAAAA,KAAK,CAACC,eAAN;AACD,K,uEAzBMC,iB,GAAP,6BAA2B,CACzB,IAAMJ,OAAO,GAAGd,WAAW,CAAC,IAAD,CAA3B,CACA,IAAIE,YAAY,CAACY,OAAD,EAAUf,YAAY,CAACoB,OAAvB,CAAhB,EAAiD,CAC/CL,OAAO,CAACM,gBAAR,CAAyB,WAAzB,EAAsC,KAAKL,eAA3C,EACA,KAAKD,OAAL,GAAeA,OAAf,CACD,CACF,C,SAEMO,oB,GAAP,gCAA8B,CAC5B,IAAI,KAAKP,OAAT,EAAkB,CAChB,KAAKA,OAAL,CAAaQ,mBAAb,CAAiC,WAAjC,EAA8C,KAAKP,eAAnD,EACA,KAAKD,OAAL,GAAe,IAAf,CACD,CACF,C,SAEMT,M,GAAP,kBAAgB,CACd,oBACE,oBAAC,aAAD,aAAe,WAAW,EAAE,KAAKkB,WAAjC,IAAkD,KAAKd,KAAvD,GACGX,KAAK,CAACS,QAAN,CAAeC,IAAf,CAAoB,KAAKC,KAAL,CAAWC,QAA/B,CADH,CADF,CAKD,C,kCA3BmCZ,KAAK,CAACc,S,WAC5BY,mB,GAAsB,kB","sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { CommonWrapper } from '../CommonWrapper';\n\nexport interface IgnoreLayerClickProps {\n children: React.ReactNode;\n active: boolean;\n}\n\nexport class IgnoreLayerClick extends React.Component<IgnoreLayerClickProps> {\n public render() {\n const child = React.Children.only(this.props.children);\n return this.props.active ? <IgnoreLayerClickWrapper>{child}</IgnoreLayerClickWrapper> : child;\n }\n}\n\ninterface WrapperProps {\n children: React.ReactNode;\n}\n\n// NOTE Используется только в команде Контур.Бухгалтерия\n@rootNode\nclass IgnoreLayerClickWrapper extends React.Component<WrapperProps> {\n public static __KONTUR_REACT_UI__ = 'IgnoreLayerClick';\n\n private element: Element | null = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n const element = getRootNode(this);\n if (isInstanceOf(element, globalObject.Element)) {\n element.addEventListener('mousedown', this.handleMouseDown);\n this.element = element;\n }\n }\n\n public componentWillUnmount() {\n if (this.element) {\n this.element.removeEventListener('mousedown', this.handleMouseDown);\n this.element = null;\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {React.Children.only(this.props.children)}\n </CommonWrapper>\n );\n }\n\n private handleMouseDown = (event: Event) => {\n event.stopPropagation();\n };\n}\n"]}
|
|
@@ -11,7 +11,7 @@ var _class, _class2, _temp; // TODO: Enable this rule in functional components.
|
|
|
11
11
|
import React from 'react';
|
|
12
12
|
import ReactDOM from 'react-dom';
|
|
13
13
|
import debounce from 'lodash.debounce';
|
|
14
|
-
import { globalObject
|
|
14
|
+
import { globalObject } from '@skbkontur/global-object';
|
|
15
15
|
import { isFunction, isNonNullable } from "../../../lib/utils";
|
|
16
16
|
import { isKeyTab, isShortcutPaste } from "../../../lib/events/keyboard/identifiers";
|
|
17
17
|
import { MouseDrag } from "../../../lib/events/MouseDrag";
|
|
@@ -27,6 +27,7 @@ import { createPropsGetter } from "../../../lib/createPropsGetter";
|
|
|
27
27
|
import { isTheme2022 } from "../../../lib/theming/ThemeHelpers";
|
|
28
28
|
import { InputLayoutAside } from "../../../components/Input/InputLayout/InputLayoutAside";
|
|
29
29
|
import { InputLayoutContext, InputLayoutContextDefault } from "../../../components/Input/InputLayout/InputLayoutContext";
|
|
30
|
+
import { isInstanceOf } from "../../../lib/isInstanceOf";
|
|
30
31
|
import { HiddenInput } from "../HiddenInput";
|
|
31
32
|
import { styles } from "../InputLikeText.styles";
|
|
32
33
|
export var InputLikeTextDataTids = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["InputLikeText.tsx"],"names":["React","ReactDOM","debounce","globalObject","isInstanceOf","isFunction","isNonNullable","isKeyTab","isShortcutPaste","MouseDrag","isEdge","isIE11","isMobile","removeAllSelections","selectNodeContents","styles","jsInputStyles","ThemeContext","CommonWrapper","cx","findRenderContainer","rootNode","createPropsGetter","isTheme2022","InputLayoutAside","InputLayoutContext","InputLayoutContextDefault","HiddenInput","InputLikeTextDataTids","root","input","nativeInput","InputLikeText","getProps","defaultProps","state","blinking","focused","node","hiddenInput","lastSelectedInnerNode","frozen","frozenBlur","dragging","selectNodeContentsDebounced","selectInnerNode","start","end","document","body","focusTimeout","clearInterval","setTimeout","focus","renderMain","props","innerRef","tabIndex","placeholder","align","borderless","width","size","error","warning","onValueChange","disabled","prefix","suffix","leftIcon","rightIcon","value","onMouseDragStart","onMouseDragEnd","takeContentWidth","ariaDescribedby","rest","leftSide","theme","renderLeftSide","rightSide","renderRightSide","className","getSizeClassName","hovering","blink","focusFallback","warningFallback","errorFallback","hideBlinkingCursor","wrapperClass","wrapper","userSelectContain","context","Object","assign","textAlign","undefined","handleFocus","handleBlur","handleKeyDown","handleMouseDown","absolute","inputFocus","inputDisabled","children","renderPlaceholder","hiddenInputRef","renderLeftIcon","renderIcon","getIconClassname","renderRightIcon","icon","iconNode","useDefaultColor","iconDisabled","renderPrefix","prefixDisabled","renderSuffix","suffixDisabled","sideContainer","rightContainer","hasValue","placeholderDisabled","placeholderFocus","handleDocumentMouseDown","e","target","Node","contains","defrost","handleDocumentKeyDown","onKeyDown","handleMouseDragStart","documentElement","classList","add","userSelectNone","handleMouseDragEnd","remove","setAttribute","version","search","flushSync","setState","onFocus","cancel","removeAttribute","stopPropagation","onBlur","el","sizeLarge","sizeLargeFallback","sizeMedium","sizeMediumFallback","sizeSmall","sizeSmallFallback","blur","blinkTimeout","getNode","componentDidMount","listen","addEventListener","componentWillUnmount","clearTimeout","stop","removeEventListener","render","setRootNode","right","rightIconLarge","leftIconLarge","rightIconMedium","leftIconMedium","rightIconSmall","leftIconSmall","Component","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash.debounce';\nimport { globalObject, isInstanceOf, SafeTimer } from '@skbkontur/global-object';\n\nimport { isFunction, isNonNullable } from '../../lib/utils';\nimport { isKeyTab, isShortcutPaste } from '../../lib/events/keyboard/identifiers';\nimport { MouseDrag, MouseDragEventHandler } from '../../lib/events/MouseDrag';\nimport { isEdge, isIE11, isMobile } from '../../lib/client';\nimport { removeAllSelections, selectNodeContents } from '../../components/DateInput/helpers/SelectionHelpers';\nimport { InputProps, InputIconType, InputState } from '../../components/Input';\nimport { styles as jsInputStyles } from '../../components/Input/Input.styles';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { findRenderContainer } from '../../lib/listenFocusOutside';\nimport { TSetRootNode, rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { InputLayoutAside } from '../../components/Input/InputLayout/InputLayoutAside';\nimport { InputLayoutContext, InputLayoutContextDefault } from '../../components/Input/InputLayout/InputLayoutContext';\n\nimport { HiddenInput } from './HiddenInput';\nimport { styles } from './InputLikeText.styles';\n\nexport interface InputLikeTextProps extends CommonProps, InputProps {\n children?: React.ReactNode;\n innerRef?: (el: HTMLElement | null) => void;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n onMouseDragStart?: MouseDragEventHandler;\n onMouseDragEnd?: MouseDragEventHandler;\n takeContentWidth?: boolean;\n}\n\nexport type InputLikeTextState = Omit<InputState, 'needsPolyfillPlaceholder'>;\n\nexport const InputLikeTextDataTids = {\n root: 'InputLikeText__root',\n input: 'InputLikeText__input',\n nativeInput: 'InputLikeText__nativeInput',\n} as const;\n\ntype DefaultProps = Required<Pick<InputLikeTextProps, 'size'>>;\n\n@rootNode\nexport class InputLikeText extends React.Component<InputLikeTextProps, InputLikeTextState> {\n public static __KONTUR_REACT_UI__ = 'InputLikeText';\n\n public static defaultProps: DefaultProps = { size: 'small' };\n\n private getProps = createPropsGetter(InputLikeText.defaultProps);\n\n public state = { blinking: false, focused: false };\n\n private theme!: Theme;\n private node: HTMLElement | null = null;\n private hiddenInput: HTMLInputElement | null = null;\n private lastSelectedInnerNode: [HTMLElement, number, number] | null = null;\n private frozen = false;\n private frozenBlur = false;\n private dragging = false;\n private focusTimeout: SafeTimer;\n private blinkTimeout: SafeTimer;\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public focus() {\n if (this.node) {\n this.node.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.node) {\n this.node.blur();\n }\n }\n\n /**\n * @public\n */\n public blink() {\n if (this.props.disabled) {\n return;\n }\n this.setState({ blinking: true }, () => {\n this.blinkTimeout = globalObject.setTimeout(() => this.setState({ blinking: false }), 150);\n });\n }\n\n public getNode(): HTMLElement | null {\n return this.node;\n }\n\n // Async call required for Firefox\n private selectNodeContentsDebounced = debounce(selectNodeContents, 0);\n\n public selectInnerNode = (node: HTMLElement | null, start = 0, end = 1) => {\n if (this.dragging || !node) {\n return;\n }\n if (isIE11 && globalObject.document && findRenderContainer(node, globalObject.document.body)) {\n // Code below causes Popup to close after triggering the focus event on the body in IE11\n return;\n }\n this.frozen = true;\n this.frozenBlur = true;\n\n this.lastSelectedInnerNode = [node, start, end];\n this.selectNodeContentsDebounced(node, start, end);\n\n if (this.focusTimeout) {\n globalObject.clearInterval(this.focusTimeout);\n }\n this.focusTimeout = globalObject.setTimeout(() => (isIE11 || isEdge) && this.node && this.node.focus(), 0);\n };\n\n public componentDidMount() {\n if (this.node) {\n MouseDrag.listen(this.node).onMouseDragStart(this.handleMouseDragStart).onMouseDragEnd(this.handleMouseDragEnd);\n }\n globalObject.document?.addEventListener('mousedown', this.handleDocumentMouseDown);\n globalObject.document?.addEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n public componentWillUnmount() {\n if (this.blinkTimeout) {\n globalObject.clearTimeout(this.blinkTimeout);\n }\n MouseDrag.stop(this.node);\n globalObject.document?.removeEventListener('mousedown', this.handleDocumentMouseDown);\n globalObject.document?.removeEventListener('keydown', this.handleDocumentKeyDown);\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}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<InputLikeTextProps>) => {\n const {\n innerRef,\n tabIndex,\n placeholder,\n align,\n borderless,\n width,\n size,\n error,\n warning,\n onValueChange,\n disabled,\n prefix,\n suffix,\n leftIcon,\n rightIcon,\n value,\n onMouseDragStart,\n onMouseDragEnd,\n takeContentWidth,\n 'aria-describedby': ariaDescribedby,\n ...rest\n } = props;\n\n const { focused, blinking } = this.state;\n\n const leftSide = isTheme2022(this.theme) ? (\n <InputLayoutAside icon={leftIcon} text={prefix} side=\"left\" />\n ) : (\n this.renderLeftSide()\n );\n const rightSide = isTheme2022(this.theme) ? (\n <InputLayoutAside icon={rightIcon} text={suffix} side=\"right\" />\n ) : (\n this.renderRightSide()\n );\n\n const className = cx(styles.root(), jsInputStyles.root(this.theme), this.getSizeClassName(), {\n [jsInputStyles.disabled(this.theme)]: !!disabled,\n [jsInputStyles.borderless()]: !!borderless,\n [jsInputStyles.focus(this.theme)]: focused,\n [jsInputStyles.hovering(this.theme)]: !focused && !disabled && !warning && !error && !borderless,\n [jsInputStyles.blink(this.theme)]: blinking,\n [jsInputStyles.warning(this.theme)]: !!warning,\n [jsInputStyles.error(this.theme)]: !!error,\n [jsInputStyles.focusFallback(this.theme)]: focused && (isIE11 || isEdge),\n [jsInputStyles.warningFallback(this.theme)]: !!warning && (isIE11 || isEdge),\n [jsInputStyles.errorFallback(this.theme)]: !!error && (isIE11 || isEdge),\n [jsInputStyles.hideBlinkingCursor()]: isMobile,\n });\n\n const wrapperClass = cx(jsInputStyles.wrapper(), {\n [styles.userSelectContain()]: focused,\n });\n\n const context = InputLayoutContextDefault;\n Object.assign(context, { disabled, focused, size });\n\n return (\n <span\n data-tid={InputLikeTextDataTids.root}\n {...rest}\n className={className}\n style={{ width, textAlign: align }}\n tabIndex={disabled ? undefined : 0}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n ref={this.innerRef}\n onKeyDown={this.handleKeyDown}\n onMouseDown={this.handleMouseDown}\n >\n <InputLayoutContext.Provider value={context}>\n <input\n data-tid={InputLikeTextDataTids.nativeInput}\n type=\"hidden\"\n value={value}\n disabled={disabled}\n aria-describedby={ariaDescribedby}\n />\n {leftSide}\n <span className={wrapperClass}>\n <span\n data-tid={InputLikeTextDataTids.input}\n className={cx(jsInputStyles.input(this.theme), {\n [styles.absolute()]: !takeContentWidth,\n [jsInputStyles.inputFocus(this.theme)]: focused,\n [jsInputStyles.inputDisabled(this.theme)]: disabled,\n })}\n >\n {this.props.children}\n </span>\n {this.renderPlaceholder()}\n </span>\n {rightSide}\n {isIE11 && focused && <HiddenInput nodeRef={this.hiddenInputRef} />}\n </InputLayoutContext.Provider>\n </span>\n );\n };\n\n private getIconClassname(right = false) {\n switch (this.getProps().size) {\n case 'large':\n return right ? jsInputStyles.rightIconLarge(this.theme) : jsInputStyles.leftIconLarge(this.theme);\n case 'medium':\n return right ? jsInputStyles.rightIconMedium(this.theme) : jsInputStyles.leftIconMedium(this.theme);\n case 'small':\n default:\n return right ? jsInputStyles.rightIconSmall(this.theme) : jsInputStyles.leftIconSmall(this.theme);\n }\n }\n\n private renderLeftIcon = () => {\n return this.renderIcon(this.props.leftIcon, this.getIconClassname());\n };\n\n private renderRightIcon = () => {\n return this.renderIcon(this.props.rightIcon, this.getIconClassname(true));\n };\n\n private renderIcon = (icon: InputIconType, className: string): JSX.Element | null => {\n if (!icon) {\n return null;\n }\n\n const { disabled } = this.props;\n const iconNode = isFunction(icon) ? icon() : icon;\n\n return (\n <span\n className={cx(jsInputStyles.icon(), className, jsInputStyles.useDefaultColor(this.theme), {\n [jsInputStyles.iconDisabled()]: disabled,\n })}\n >\n {iconNode}\n </span>\n );\n };\n\n private renderPrefix = (): JSX.Element | null => {\n const { prefix, disabled } = this.props;\n\n if (!prefix) {\n return null;\n }\n\n return (\n <span className={cx(jsInputStyles.prefix(this.theme), { [jsInputStyles.prefixDisabled(this.theme)]: disabled })}>\n {prefix}\n </span>\n );\n };\n\n private renderSuffix = (): JSX.Element | null => {\n const { suffix, disabled } = this.props;\n\n if (!suffix) {\n return null;\n }\n\n return (\n <span className={cx(jsInputStyles.suffix(this.theme), { [jsInputStyles.suffixDisabled(this.theme)]: disabled })}>\n {suffix}\n </span>\n );\n };\n\n private renderLeftSide = (): JSX.Element | null => {\n const leftIcon = this.renderLeftIcon();\n const prefix = this.renderPrefix();\n\n if (!leftIcon && !prefix) {\n return null;\n }\n\n return (\n <span className={jsInputStyles.sideContainer()}>\n {leftIcon}\n {prefix}\n </span>\n );\n };\n\n private renderRightSide = (): JSX.Element | null => {\n const rightIcon = this.renderRightIcon();\n const suffix = this.renderSuffix();\n\n if (!rightIcon && !suffix) {\n return null;\n }\n\n return (\n <span className={cx(jsInputStyles.sideContainer(), jsInputStyles.rightContainer())}>\n {rightIcon}\n {suffix}\n </span>\n );\n };\n\n private renderPlaceholder = (): JSX.Element | null => {\n const { children, placeholder, disabled } = this.props;\n const { focused } = this.state;\n const hasValue = isNonNullable(children) && children !== '';\n\n if (!hasValue && placeholder) {\n return (\n <span\n className={cx(jsInputStyles.placeholder(this.theme), {\n [jsInputStyles.placeholderDisabled(this.theme)]: disabled,\n [jsInputStyles.placeholderFocus(this.theme)]: focused,\n })}\n >\n {placeholder}\n </span>\n );\n }\n return null;\n };\n\n private handleDocumentMouseDown = (e: MouseEvent) => {\n if (this.state.focused && this.node && isInstanceOf(e.target, globalObject.Node) && !this.node.contains(e.target)) {\n this.defrost();\n }\n };\n\n private handleDocumentKeyDown = (e: KeyboardEvent) => {\n if (this.state.focused && isKeyTab(e)) {\n this.defrost();\n }\n };\n\n private handleMouseDown = () => {\n this.frozen = true;\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.props.disabled) {\n return;\n }\n\n if (isIE11 && isShortcutPaste(e) && this.hiddenInput) {\n this.frozen = true;\n globalObject.setTimeout(() => {\n if (this.lastSelectedInnerNode) {\n this.selectInnerNode(...this.lastSelectedInnerNode);\n }\n if (this.node) {\n this.node.focus();\n }\n }, 0);\n\n this.hiddenInput.focus();\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e as React.KeyboardEvent<HTMLInputElement>);\n }\n };\n\n private handleMouseDragStart: MouseDragEventHandler = (e) => {\n this.dragging = true;\n globalObject.document?.documentElement.classList.add(styles.userSelectNone());\n\n if (this.props.onMouseDragStart) {\n this.props.onMouseDragStart(e);\n }\n };\n\n private handleMouseDragEnd: MouseDragEventHandler = (e) => {\n // Дожидаемся onMouseUp\n globalObject.setTimeout(() => {\n this.dragging = false;\n\n if (this.props.onMouseDragEnd) {\n this.props.onMouseDragEnd(e);\n }\n }, 0);\n\n globalObject.document?.documentElement.classList.remove(styles.userSelectNone());\n };\n\n private handleFocus = (e: React.FocusEvent<HTMLElement>) => {\n if (isMobile) {\n e.target.setAttribute('contenteditable', 'true');\n }\n\n if (this.props.disabled) {\n if (isIE11 && globalObject.document) {\n selectNodeContents(globalObject.document.body, 0, 0);\n }\n return;\n }\n\n if ((isIE11 || isEdge) && this.frozen) {\n this.frozen = false;\n if (this.state.focused) {\n return;\n }\n }\n\n // Auto-batching React@18 creates problems that are fixed with flushSync\n // https://github.com/skbkontur/retail-ui/pull/3144#issuecomment-1535235366\n if (React.version.search('18') === 0) {\n ReactDOM.flushSync(() => this.setState({ focused: true }));\n } else {\n this.setState({ focused: true });\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n this.selectNodeContentsDebounced.cancel();\n if (isMobile) {\n e.target.removeAttribute('contenteditable');\n }\n\n if (this.props.disabled) {\n e.stopPropagation();\n return;\n }\n\n if ((isIE11 || isEdge) && this.frozenBlur) {\n this.frozenBlur = false;\n return;\n }\n if ((isIE11 || isEdge) && this.frozen) {\n return;\n }\n\n removeAllSelections();\n\n this.setState({ focused: false });\n\n if (this.props.onBlur) {\n this.props.onBlur(e);\n }\n };\n\n private hiddenInputRef = (el: HTMLInputElement | null) => {\n this.hiddenInput = el;\n };\n\n private innerRef = (el: HTMLElement | null) => {\n if (this.props.innerRef) {\n this.props.innerRef(el);\n }\n this.node = el;\n };\n\n private defrost = (): void => {\n this.frozen = false;\n this.frozenBlur = false;\n };\n\n private getSizeClassName = () => {\n switch (this.getProps().size) {\n case 'large':\n return cx({\n [jsInputStyles.sizeLarge(this.theme)]: true,\n [jsInputStyles.sizeLargeFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'medium':\n return cx({\n [jsInputStyles.sizeMedium(this.theme)]: true,\n [jsInputStyles.sizeMediumFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'small':\n default:\n return cx({\n [jsInputStyles.sizeSmall(this.theme)]: true,\n [jsInputStyles.sizeSmallFallback(this.theme)]: isIE11 || isEdge,\n });\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["InputLikeText.tsx"],"names":["React","ReactDOM","debounce","globalObject","isFunction","isNonNullable","isKeyTab","isShortcutPaste","MouseDrag","isEdge","isIE11","isMobile","removeAllSelections","selectNodeContents","styles","jsInputStyles","ThemeContext","CommonWrapper","cx","findRenderContainer","rootNode","createPropsGetter","isTheme2022","InputLayoutAside","InputLayoutContext","InputLayoutContextDefault","isInstanceOf","HiddenInput","InputLikeTextDataTids","root","input","nativeInput","InputLikeText","getProps","defaultProps","state","blinking","focused","node","hiddenInput","lastSelectedInnerNode","frozen","frozenBlur","dragging","selectNodeContentsDebounced","selectInnerNode","start","end","document","body","focusTimeout","clearInterval","setTimeout","focus","renderMain","props","innerRef","tabIndex","placeholder","align","borderless","width","size","error","warning","onValueChange","disabled","prefix","suffix","leftIcon","rightIcon","value","onMouseDragStart","onMouseDragEnd","takeContentWidth","ariaDescribedby","rest","leftSide","theme","renderLeftSide","rightSide","renderRightSide","className","getSizeClassName","hovering","blink","focusFallback","warningFallback","errorFallback","hideBlinkingCursor","wrapperClass","wrapper","userSelectContain","context","Object","assign","textAlign","undefined","handleFocus","handleBlur","handleKeyDown","handleMouseDown","absolute","inputFocus","inputDisabled","children","renderPlaceholder","hiddenInputRef","renderLeftIcon","renderIcon","getIconClassname","renderRightIcon","icon","iconNode","useDefaultColor","iconDisabled","renderPrefix","prefixDisabled","renderSuffix","suffixDisabled","sideContainer","rightContainer","hasValue","placeholderDisabled","placeholderFocus","handleDocumentMouseDown","e","target","Node","contains","defrost","handleDocumentKeyDown","onKeyDown","handleMouseDragStart","documentElement","classList","add","userSelectNone","handleMouseDragEnd","remove","setAttribute","version","search","flushSync","setState","onFocus","cancel","removeAttribute","stopPropagation","onBlur","el","sizeLarge","sizeLargeFallback","sizeMedium","sizeMediumFallback","sizeSmall","sizeSmallFallback","blur","blinkTimeout","getNode","componentDidMount","listen","addEventListener","componentWillUnmount","clearTimeout","stop","removeEventListener","render","setRootNode","right","rightIconLarge","leftIconLarge","rightIconMedium","leftIconMedium","rightIconSmall","leftIconSmall","Component","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash.debounce';\nimport { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nimport { isFunction, isNonNullable } from '../../lib/utils';\nimport { isKeyTab, isShortcutPaste } from '../../lib/events/keyboard/identifiers';\nimport { MouseDrag, MouseDragEventHandler } from '../../lib/events/MouseDrag';\nimport { isEdge, isIE11, isMobile } from '../../lib/client';\nimport { removeAllSelections, selectNodeContents } from '../../components/DateInput/helpers/SelectionHelpers';\nimport { InputProps, InputIconType, InputState } from '../../components/Input';\nimport { styles as jsInputStyles } from '../../components/Input/Input.styles';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { findRenderContainer } from '../../lib/listenFocusOutside';\nimport { TSetRootNode, rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { InputLayoutAside } from '../../components/Input/InputLayout/InputLayoutAside';\nimport { InputLayoutContext, InputLayoutContextDefault } from '../../components/Input/InputLayout/InputLayoutContext';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\n\nimport { HiddenInput } from './HiddenInput';\nimport { styles } from './InputLikeText.styles';\n\nexport interface InputLikeTextProps extends CommonProps, InputProps {\n children?: React.ReactNode;\n innerRef?: (el: HTMLElement | null) => void;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n onMouseDragStart?: MouseDragEventHandler;\n onMouseDragEnd?: MouseDragEventHandler;\n takeContentWidth?: boolean;\n}\n\nexport type InputLikeTextState = Omit<InputState, 'needsPolyfillPlaceholder'>;\n\nexport const InputLikeTextDataTids = {\n root: 'InputLikeText__root',\n input: 'InputLikeText__input',\n nativeInput: 'InputLikeText__nativeInput',\n} as const;\n\ntype DefaultProps = Required<Pick<InputLikeTextProps, 'size'>>;\n\n@rootNode\nexport class InputLikeText extends React.Component<InputLikeTextProps, InputLikeTextState> {\n public static __KONTUR_REACT_UI__ = 'InputLikeText';\n\n public static defaultProps: DefaultProps = { size: 'small' };\n\n private getProps = createPropsGetter(InputLikeText.defaultProps);\n\n public state = { blinking: false, focused: false };\n\n private theme!: Theme;\n private node: HTMLElement | null = null;\n private hiddenInput: HTMLInputElement | null = null;\n private lastSelectedInnerNode: [HTMLElement, number, number] | null = null;\n private frozen = false;\n private frozenBlur = false;\n private dragging = false;\n private focusTimeout: SafeTimer;\n private blinkTimeout: SafeTimer;\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public focus() {\n if (this.node) {\n this.node.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.node) {\n this.node.blur();\n }\n }\n\n /**\n * @public\n */\n public blink() {\n if (this.props.disabled) {\n return;\n }\n this.setState({ blinking: true }, () => {\n this.blinkTimeout = globalObject.setTimeout(() => this.setState({ blinking: false }), 150);\n });\n }\n\n public getNode(): HTMLElement | null {\n return this.node;\n }\n\n // Async call required for Firefox\n private selectNodeContentsDebounced = debounce(selectNodeContents, 0);\n\n public selectInnerNode = (node: HTMLElement | null, start = 0, end = 1) => {\n if (this.dragging || !node) {\n return;\n }\n if (isIE11 && globalObject.document && findRenderContainer(node, globalObject.document.body)) {\n // Code below causes Popup to close after triggering the focus event on the body in IE11\n return;\n }\n this.frozen = true;\n this.frozenBlur = true;\n\n this.lastSelectedInnerNode = [node, start, end];\n this.selectNodeContentsDebounced(node, start, end);\n\n if (this.focusTimeout) {\n globalObject.clearInterval(this.focusTimeout);\n }\n this.focusTimeout = globalObject.setTimeout(() => (isIE11 || isEdge) && this.node && this.node.focus(), 0);\n };\n\n public componentDidMount() {\n if (this.node) {\n MouseDrag.listen(this.node).onMouseDragStart(this.handleMouseDragStart).onMouseDragEnd(this.handleMouseDragEnd);\n }\n globalObject.document?.addEventListener('mousedown', this.handleDocumentMouseDown);\n globalObject.document?.addEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n public componentWillUnmount() {\n if (this.blinkTimeout) {\n globalObject.clearTimeout(this.blinkTimeout);\n }\n MouseDrag.stop(this.node);\n globalObject.document?.removeEventListener('mousedown', this.handleDocumentMouseDown);\n globalObject.document?.removeEventListener('keydown', this.handleDocumentKeyDown);\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}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<InputLikeTextProps>) => {\n const {\n innerRef,\n tabIndex,\n placeholder,\n align,\n borderless,\n width,\n size,\n error,\n warning,\n onValueChange,\n disabled,\n prefix,\n suffix,\n leftIcon,\n rightIcon,\n value,\n onMouseDragStart,\n onMouseDragEnd,\n takeContentWidth,\n 'aria-describedby': ariaDescribedby,\n ...rest\n } = props;\n\n const { focused, blinking } = this.state;\n\n const leftSide = isTheme2022(this.theme) ? (\n <InputLayoutAside icon={leftIcon} text={prefix} side=\"left\" />\n ) : (\n this.renderLeftSide()\n );\n const rightSide = isTheme2022(this.theme) ? (\n <InputLayoutAside icon={rightIcon} text={suffix} side=\"right\" />\n ) : (\n this.renderRightSide()\n );\n\n const className = cx(styles.root(), jsInputStyles.root(this.theme), this.getSizeClassName(), {\n [jsInputStyles.disabled(this.theme)]: !!disabled,\n [jsInputStyles.borderless()]: !!borderless,\n [jsInputStyles.focus(this.theme)]: focused,\n [jsInputStyles.hovering(this.theme)]: !focused && !disabled && !warning && !error && !borderless,\n [jsInputStyles.blink(this.theme)]: blinking,\n [jsInputStyles.warning(this.theme)]: !!warning,\n [jsInputStyles.error(this.theme)]: !!error,\n [jsInputStyles.focusFallback(this.theme)]: focused && (isIE11 || isEdge),\n [jsInputStyles.warningFallback(this.theme)]: !!warning && (isIE11 || isEdge),\n [jsInputStyles.errorFallback(this.theme)]: !!error && (isIE11 || isEdge),\n [jsInputStyles.hideBlinkingCursor()]: isMobile,\n });\n\n const wrapperClass = cx(jsInputStyles.wrapper(), {\n [styles.userSelectContain()]: focused,\n });\n\n const context = InputLayoutContextDefault;\n Object.assign(context, { disabled, focused, size });\n\n return (\n <span\n data-tid={InputLikeTextDataTids.root}\n {...rest}\n className={className}\n style={{ width, textAlign: align }}\n tabIndex={disabled ? undefined : 0}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n ref={this.innerRef}\n onKeyDown={this.handleKeyDown}\n onMouseDown={this.handleMouseDown}\n >\n <InputLayoutContext.Provider value={context}>\n <input\n data-tid={InputLikeTextDataTids.nativeInput}\n type=\"hidden\"\n value={value}\n disabled={disabled}\n aria-describedby={ariaDescribedby}\n />\n {leftSide}\n <span className={wrapperClass}>\n <span\n data-tid={InputLikeTextDataTids.input}\n className={cx(jsInputStyles.input(this.theme), {\n [styles.absolute()]: !takeContentWidth,\n [jsInputStyles.inputFocus(this.theme)]: focused,\n [jsInputStyles.inputDisabled(this.theme)]: disabled,\n })}\n >\n {this.props.children}\n </span>\n {this.renderPlaceholder()}\n </span>\n {rightSide}\n {isIE11 && focused && <HiddenInput nodeRef={this.hiddenInputRef} />}\n </InputLayoutContext.Provider>\n </span>\n );\n };\n\n private getIconClassname(right = false) {\n switch (this.getProps().size) {\n case 'large':\n return right ? jsInputStyles.rightIconLarge(this.theme) : jsInputStyles.leftIconLarge(this.theme);\n case 'medium':\n return right ? jsInputStyles.rightIconMedium(this.theme) : jsInputStyles.leftIconMedium(this.theme);\n case 'small':\n default:\n return right ? jsInputStyles.rightIconSmall(this.theme) : jsInputStyles.leftIconSmall(this.theme);\n }\n }\n\n private renderLeftIcon = () => {\n return this.renderIcon(this.props.leftIcon, this.getIconClassname());\n };\n\n private renderRightIcon = () => {\n return this.renderIcon(this.props.rightIcon, this.getIconClassname(true));\n };\n\n private renderIcon = (icon: InputIconType, className: string): JSX.Element | null => {\n if (!icon) {\n return null;\n }\n\n const { disabled } = this.props;\n const iconNode = isFunction(icon) ? icon() : icon;\n\n return (\n <span\n className={cx(jsInputStyles.icon(), className, jsInputStyles.useDefaultColor(this.theme), {\n [jsInputStyles.iconDisabled()]: disabled,\n })}\n >\n {iconNode}\n </span>\n );\n };\n\n private renderPrefix = (): JSX.Element | null => {\n const { prefix, disabled } = this.props;\n\n if (!prefix) {\n return null;\n }\n\n return (\n <span className={cx(jsInputStyles.prefix(this.theme), { [jsInputStyles.prefixDisabled(this.theme)]: disabled })}>\n {prefix}\n </span>\n );\n };\n\n private renderSuffix = (): JSX.Element | null => {\n const { suffix, disabled } = this.props;\n\n if (!suffix) {\n return null;\n }\n\n return (\n <span className={cx(jsInputStyles.suffix(this.theme), { [jsInputStyles.suffixDisabled(this.theme)]: disabled })}>\n {suffix}\n </span>\n );\n };\n\n private renderLeftSide = (): JSX.Element | null => {\n const leftIcon = this.renderLeftIcon();\n const prefix = this.renderPrefix();\n\n if (!leftIcon && !prefix) {\n return null;\n }\n\n return (\n <span className={jsInputStyles.sideContainer()}>\n {leftIcon}\n {prefix}\n </span>\n );\n };\n\n private renderRightSide = (): JSX.Element | null => {\n const rightIcon = this.renderRightIcon();\n const suffix = this.renderSuffix();\n\n if (!rightIcon && !suffix) {\n return null;\n }\n\n return (\n <span className={cx(jsInputStyles.sideContainer(), jsInputStyles.rightContainer())}>\n {rightIcon}\n {suffix}\n </span>\n );\n };\n\n private renderPlaceholder = (): JSX.Element | null => {\n const { children, placeholder, disabled } = this.props;\n const { focused } = this.state;\n const hasValue = isNonNullable(children) && children !== '';\n\n if (!hasValue && placeholder) {\n return (\n <span\n className={cx(jsInputStyles.placeholder(this.theme), {\n [jsInputStyles.placeholderDisabled(this.theme)]: disabled,\n [jsInputStyles.placeholderFocus(this.theme)]: focused,\n })}\n >\n {placeholder}\n </span>\n );\n }\n return null;\n };\n\n private handleDocumentMouseDown = (e: MouseEvent) => {\n if (this.state.focused && this.node && isInstanceOf(e.target, globalObject.Node) && !this.node.contains(e.target)) {\n this.defrost();\n }\n };\n\n private handleDocumentKeyDown = (e: KeyboardEvent) => {\n if (this.state.focused && isKeyTab(e)) {\n this.defrost();\n }\n };\n\n private handleMouseDown = () => {\n this.frozen = true;\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.props.disabled) {\n return;\n }\n\n if (isIE11 && isShortcutPaste(e) && this.hiddenInput) {\n this.frozen = true;\n globalObject.setTimeout(() => {\n if (this.lastSelectedInnerNode) {\n this.selectInnerNode(...this.lastSelectedInnerNode);\n }\n if (this.node) {\n this.node.focus();\n }\n }, 0);\n\n this.hiddenInput.focus();\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e as React.KeyboardEvent<HTMLInputElement>);\n }\n };\n\n private handleMouseDragStart: MouseDragEventHandler = (e) => {\n this.dragging = true;\n globalObject.document?.documentElement.classList.add(styles.userSelectNone());\n\n if (this.props.onMouseDragStart) {\n this.props.onMouseDragStart(e);\n }\n };\n\n private handleMouseDragEnd: MouseDragEventHandler = (e) => {\n // Дожидаемся onMouseUp\n globalObject.setTimeout(() => {\n this.dragging = false;\n\n if (this.props.onMouseDragEnd) {\n this.props.onMouseDragEnd(e);\n }\n }, 0);\n\n globalObject.document?.documentElement.classList.remove(styles.userSelectNone());\n };\n\n private handleFocus = (e: React.FocusEvent<HTMLElement>) => {\n if (isMobile) {\n e.target.setAttribute('contenteditable', 'true');\n }\n\n if (this.props.disabled) {\n if (isIE11 && globalObject.document) {\n selectNodeContents(globalObject.document.body, 0, 0);\n }\n return;\n }\n\n if ((isIE11 || isEdge) && this.frozen) {\n this.frozen = false;\n if (this.state.focused) {\n return;\n }\n }\n\n // Auto-batching React@18 creates problems that are fixed with flushSync\n // https://github.com/skbkontur/retail-ui/pull/3144#issuecomment-1535235366\n if (React.version.search('18') === 0) {\n ReactDOM.flushSync(() => this.setState({ focused: true }));\n } else {\n this.setState({ focused: true });\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n this.selectNodeContentsDebounced.cancel();\n if (isMobile) {\n e.target.removeAttribute('contenteditable');\n }\n\n if (this.props.disabled) {\n e.stopPropagation();\n return;\n }\n\n if ((isIE11 || isEdge) && this.frozenBlur) {\n this.frozenBlur = false;\n return;\n }\n if ((isIE11 || isEdge) && this.frozen) {\n return;\n }\n\n removeAllSelections();\n\n this.setState({ focused: false });\n\n if (this.props.onBlur) {\n this.props.onBlur(e);\n }\n };\n\n private hiddenInputRef = (el: HTMLInputElement | null) => {\n this.hiddenInput = el;\n };\n\n private innerRef = (el: HTMLElement | null) => {\n if (this.props.innerRef) {\n this.props.innerRef(el);\n }\n this.node = el;\n };\n\n private defrost = (): void => {\n this.frozen = false;\n this.frozenBlur = false;\n };\n\n private getSizeClassName = () => {\n switch (this.getProps().size) {\n case 'large':\n return cx({\n [jsInputStyles.sizeLarge(this.theme)]: true,\n [jsInputStyles.sizeLargeFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'medium':\n return cx({\n [jsInputStyles.sizeMedium(this.theme)]: true,\n [jsInputStyles.sizeMediumFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'small':\n default:\n return cx({\n [jsInputStyles.sizeSmall(this.theme)]: true,\n [jsInputStyles.sizeSmallFallback(this.theme)]: isIE11 || isEdge,\n });\n }\n };\n}\n"]}
|
|
@@ -4,7 +4,7 @@ import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
|
|
|
4
4
|
var _class, _class2, _temp;
|
|
5
5
|
|
|
6
6
|
import React from 'react';
|
|
7
|
-
import { globalObject,
|
|
7
|
+
import { globalObject, isBrowser } from '@skbkontur/global-object';
|
|
8
8
|
import { responsiveLayout } from "../../../components/ResponsiveLayout/decorator";
|
|
9
9
|
import { isNonNullable, isNullable } from "../../../lib/utils";
|
|
10
10
|
import { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from "../../../lib/events/keyboard/identifiers";
|
|
@@ -17,6 +17,7 @@ import { getRootNode, rootNode } from "../../../lib/rootNode";
|
|
|
17
17
|
import { getDOMRect } from "../../../lib/dom/getDOMRect";
|
|
18
18
|
import { MenuSeparator } from "../../../components/MenuSeparator";
|
|
19
19
|
import { ThemeFactory } from "../../../lib/theming/ThemeFactory";
|
|
20
|
+
import { isInstanceOf } from "../../../lib/isInstanceOf";
|
|
20
21
|
import { styles } from "../InternalMenu.styles";
|
|
21
22
|
import { isActiveElement } from "../isActiveElement";
|
|
22
23
|
import { addIconPaddingIfPartOfMenu } from "../addIconPaddingIfPartOfMenu";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["InternalMenu.tsx"],"names":["React","globalObject","isInstanceOf","isBrowser","responsiveLayout","isNonNullable","isNullable","isKeyArrowDown","isKeyArrowUp","isKeyEnter","ScrollContainer","isMenuItem","createPropsGetter","ThemeContext","cx","getRootNode","rootNode","getDOMRect","MenuSeparator","ThemeFactory","styles","isActiveElement","addIconPaddingIfPartOfMenu","isIconPaddingEnabled","InternalMenuDataTids","root","InternalMenu","getProps","defaultProps","state","highlightedIndex","maxHeight","scrollState","renderHeader","wrapper","headerWrapper","el","header","contentWrapper","props","menuSeparatorWrapper","theme","renderMenuSeparatorWithNoMargin","renderFooter","footerWrapper","footer","create","menuSeparatorMarginY","focusOnRootElement","HTMLElement","focus","shouldRecalculateMaxHeight","prevProps","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","Children","count","calculateMaxHeight","parsedMaxHeight","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","height","setState","setInitialSelection","i","initialSelectedItemIndex","moveDown","refScrollContainer","scrollContainer","scrollToSelected","highlighted","scrollTo","highlightItem","index","unhighlight","moveUp","move","handleKeyDown","e","onKeyDown","defaultPrevented","preventDefault","onClick","handleScrollStateChange","componentDidMount","componentDidUpdate","render","renderMain","enableIconPadding","preventIconsOffset","isEmpty","hasShadow","width","preventWindowScroll","isMobile","isMobileLayout","mobileRoot","shadow","setRootNode","map","child","isValidElement","type","modifiedChild","highlight","ref","originalRef","menuItem","refHighlighted","cloneElement","select","bind","onMouseEnter","event","onMouseLeave","current","shouldHandleHref","item","childrenToArray","href","target","open","location","onItemClick","step","some","cyclicSelection","length","filter","PureComponent","__KONTUR_REACT_UI__","ret","forEach","push"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { globalObject, isInstanceOf, isBrowser } from '@skbkontur/global-object';\n\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { isNonNullable, isNullable } from '../../lib/utils';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { ScrollContainer, ScrollContainerScrollState } from '../../components/ScrollContainer';\nimport { isMenuItem, MenuItem, MenuItemProps } from '../../components/MenuItem';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { MenuSeparator } from '../../components/MenuSeparator';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\n\nimport { styles } from './InternalMenu.styles';\nimport { isActiveElement } from './isActiveElement';\nimport { addIconPaddingIfPartOfMenu } from './addIconPaddingIfPartOfMenu';\nimport { isIconPaddingEnabled } from './isIconPaddingEnabled';\n\nexport interface InternalMenuProps {\n children?: React.ReactNode;\n hasShadow?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Предотвращает выравнивание текста всех пунктов меню относительно друг друга.\n * Так, если хотя бы у одного пункта меню есть иконка, текст в остальных пунктах меню будет выровнен относительно пункта меню с иконкой\n */\n preventIconsOffset?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n // Циклический перебор айтемов меню (по-дефолтну включен)\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\ninterface MenuState {\n highlightedIndex: number;\n maxHeight: number | string;\n scrollState: ScrollContainerScrollState;\n}\n\nexport const InternalMenuDataTids = {\n root: 'InternalMenu__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n InternalMenuProps,\n 'width' | 'maxHeight' | 'hasShadow' | 'preventWindowScroll' | 'cyclicSelection' | 'initialSelectedItemIndex'\n >\n>;\n/**\n * @deprecated use Menu component instead\n */\n@responsiveLayout\n@rootNode\nexport class InternalMenu extends React.PureComponent<InternalMenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'InternalMenu';\n\n public static defaultProps: DefaultProps = {\n width: 'auto',\n maxHeight: 300,\n hasShadow: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n private getProps = createPropsGetter(InternalMenu.defaultProps);\n\n public state: MenuState = {\n highlightedIndex: -1,\n maxHeight: this.getProps().maxHeight || 'none',\n scrollState: 'top',\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private highlighted: Nullable<MenuItem>;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n private isMobileLayout!: boolean;\n\n public componentDidMount() {\n this.setInitialSelection();\n this.calculateMaxHeight();\n }\n\n public componentDidUpdate(prevProps: InternalMenuProps) {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.getProps().maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus() {\n this.focusOnRootElement();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const enableIconPadding = isIconPaddingEnabled(this.props.children, this.props.preventIconsOffset);\n\n if (this.isEmpty()) {\n return null;\n }\n const { hasShadow, width, maxHeight, preventWindowScroll } = this.getProps();\n const isMobile = this.isMobileLayout;\n return (\n <div\n data-tid={InternalMenuDataTids.root}\n className={cx({\n [styles.root(this.theme)]: true,\n [styles.mobileRoot(this.theme)]: isMobile,\n [styles.shadow(this.theme)]: hasShadow,\n })}\n style={{\n width,\n maxHeight: this.state.maxHeight,\n }}\n onKeyDown={this.handleKeyDown}\n ref={this.setRootNode}\n tabIndex={0}\n >\n {this.props.header ? this.renderHeader() : null}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n onScrollStateChange={this.handleScrollStateChange}\n >\n {React.Children.map(this.props.children, (child, index) => {\n if (typeof child === 'string' || typeof child === 'number' || isNullable(child)) {\n return child;\n }\n if (React.isValidElement(child) && typeof child.type === 'string') {\n return child;\n }\n\n const modifiedChild = addIconPaddingIfPartOfMenu(child, enableIconPadding);\n\n if (isActiveElement(modifiedChild)) {\n const highlight = this.state.highlightedIndex === index;\n\n let ref = modifiedChild.ref;\n const originalRef = ref;\n if (highlight) {\n ref = (menuItem) => this.refHighlighted(originalRef, menuItem);\n }\n\n return React.cloneElement<MenuItemProps, MenuItem>(modifiedChild, {\n ref,\n state: highlight ? 'hover' : modifiedChild.props.state,\n onClick: this.select.bind(this, index, false),\n onMouseEnter: (event) => {\n this.highlightItem(index);\n if (isMenuItem(modifiedChild) && modifiedChild.props.onMouseEnter) {\n modifiedChild.props.onMouseEnter(event);\n }\n },\n onMouseLeave: (event) => {\n this.unhighlight();\n if (isMenuItem(modifiedChild) && modifiedChild.props.onMouseLeave) {\n modifiedChild.props.onMouseLeave(event);\n }\n },\n });\n }\n\n return modifiedChild;\n })}\n </ScrollContainer>\n {this.props.footer ? this.renderFooter() : null}\n </div>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.headerWrapper()]: true,\n })}\n ref={(el) => (this.header = el)}\n >\n <div className={styles.contentWrapper()}>{this.props.header}</div>\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'top' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.footerWrapper()]: true,\n })}\n ref={(el) => (this.footer = el)}\n >\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'bottom' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n <div className={styles.contentWrapper()}>{this.props.footer}</div>\n </div>\n );\n };\n\n private renderMenuSeparatorWithNoMargin = () => {\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ menuSeparatorMarginY: '0' }, this.theme)}>\n <MenuSeparator />\n </ThemeContext.Provider>\n );\n };\n\n private focusOnRootElement = (): void => {\n const rootNode = getRootNode(this);\n if (isInstanceOf(rootNode, globalObject.HTMLElement)) {\n rootNode?.focus();\n }\n };\n\n private shouldRecalculateMaxHeight = (prevProps: InternalMenuProps): boolean => {\n const { header, footer, children } = this.props;\n const maxHeight = this.getProps().maxHeight;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const maxHeight = this.getProps().maxHeight;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && typeof globalObject !== 'undefined' && rootNode) {\n const rootElementMaxHeight = globalObject.getComputedStyle?.(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.moveDown();\n }\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private refHighlighted(\n originalRef: string | ((instance: MenuItem | null) => void) | React.RefObject<MenuItem> | null | undefined,\n menuItem: MenuItem | null,\n ) {\n this.highlighted = menuItem;\n\n if (!originalRef || typeof originalRef === 'string') {\n return;\n }\n\n if (typeof originalRef === 'function') {\n originalRef(menuItem);\n } else if (typeof originalRef === 'object') {\n // @ts-expect-error: See: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065.\n originalRef.current = menuItem;\n }\n }\n\n private scrollToSelected = () => {\n if (this.scrollContainer && this.highlighted) {\n const rootNode = getRootNode(this.highlighted);\n // TODO: Remove this check once IF-647 is resolved\n if (isInstanceOf(rootNode, globalObject.HTMLElement)) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private select(index: number, shouldHandleHref: boolean, event: React.SyntheticEvent<HTMLElement>): boolean {\n const item = childrenToArray(this.props.children)[index];\n\n if (isActiveElement(item) && isBrowser(globalObject)) {\n if (shouldHandleHref && item.props.href) {\n if (item.props.target) {\n globalObject.open(item.props.href, item.props.target);\n } else {\n globalObject.location.href = item.props.href;\n }\n }\n if (item.props.onClick) {\n item.props.onClick(event as React.MouseEvent<HTMLElement>);\n }\n if (this.props.onItemClick) {\n this.props.onItemClick(event);\n }\n return true;\n }\n return false;\n }\n\n private highlightItem = (index: number): void => {\n this.setState({ highlightedIndex: index });\n\n const rootNode = getRootNode(this);\n if (isInstanceOf(rootNode, globalObject.HTMLElement)) {\n rootNode?.focus();\n }\n };\n\n private unhighlight = () => {\n this.setState({ highlightedIndex: -1 });\n };\n\n private move(step: number) {\n this.setState((state, props) => {\n const children = childrenToArray(props.children);\n if (!children.some(isActiveElement)) {\n return null;\n }\n let index = state.highlightedIndex;\n do {\n index += step;\n if (!this.getProps().cyclicSelection && (index < 0 || index > children.length)) {\n return null;\n }\n\n if (index < 0) {\n index = children.length - 1;\n } else if (index > children.length) {\n index = 0;\n }\n\n const child = children[index];\n if (isActiveElement(child)) {\n return { highlightedIndex: index };\n }\n } while (index !== state.highlightedIndex);\n return null;\n }, this.scrollToSelected);\n }\n\n private moveUp = () => {\n this.move(-1);\n };\n\n private moveDown = () => {\n this.move(1);\n };\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(e);\n }\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(e)) {\n e.preventDefault();\n this.moveUp();\n } else if (isKeyArrowDown(e)) {\n e.preventDefault();\n this.moveDown();\n } else if (isKeyEnter(e)) {\n if (this.highlighted && this.highlighted.props.onClick) {\n this.highlighted.props.onClick(e);\n }\n }\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollState) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["InternalMenu.tsx"],"names":["React","globalObject","isBrowser","responsiveLayout","isNonNullable","isNullable","isKeyArrowDown","isKeyArrowUp","isKeyEnter","ScrollContainer","isMenuItem","createPropsGetter","ThemeContext","cx","getRootNode","rootNode","getDOMRect","MenuSeparator","ThemeFactory","isInstanceOf","styles","isActiveElement","addIconPaddingIfPartOfMenu","isIconPaddingEnabled","InternalMenuDataTids","root","InternalMenu","getProps","defaultProps","state","highlightedIndex","maxHeight","scrollState","renderHeader","wrapper","headerWrapper","el","header","contentWrapper","props","menuSeparatorWrapper","theme","renderMenuSeparatorWithNoMargin","renderFooter","footerWrapper","footer","create","menuSeparatorMarginY","focusOnRootElement","HTMLElement","focus","shouldRecalculateMaxHeight","prevProps","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","Children","count","calculateMaxHeight","parsedMaxHeight","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","height","setState","setInitialSelection","i","initialSelectedItemIndex","moveDown","refScrollContainer","scrollContainer","scrollToSelected","highlighted","scrollTo","highlightItem","index","unhighlight","moveUp","move","handleKeyDown","e","onKeyDown","defaultPrevented","preventDefault","onClick","handleScrollStateChange","componentDidMount","componentDidUpdate","render","renderMain","enableIconPadding","preventIconsOffset","isEmpty","hasShadow","width","preventWindowScroll","isMobile","isMobileLayout","mobileRoot","shadow","setRootNode","map","child","isValidElement","type","modifiedChild","highlight","ref","originalRef","menuItem","refHighlighted","cloneElement","select","bind","onMouseEnter","event","onMouseLeave","current","shouldHandleHref","item","childrenToArray","href","target","open","location","onItemClick","step","some","cyclicSelection","length","filter","PureComponent","__KONTUR_REACT_UI__","ret","forEach","push"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { isNonNullable, isNullable } from '../../lib/utils';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { ScrollContainer, ScrollContainerScrollState } from '../../components/ScrollContainer';\nimport { isMenuItem, MenuItem, MenuItemProps } from '../../components/MenuItem';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { MenuSeparator } from '../../components/MenuSeparator';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\n\nimport { styles } from './InternalMenu.styles';\nimport { isActiveElement } from './isActiveElement';\nimport { addIconPaddingIfPartOfMenu } from './addIconPaddingIfPartOfMenu';\nimport { isIconPaddingEnabled } from './isIconPaddingEnabled';\n\nexport interface InternalMenuProps {\n children?: React.ReactNode;\n hasShadow?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Предотвращает выравнивание текста всех пунктов меню относительно друг друга.\n * Так, если хотя бы у одного пункта меню есть иконка, текст в остальных пунктах меню будет выровнен относительно пункта меню с иконкой\n */\n preventIconsOffset?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n // Циклический перебор айтемов меню (по-дефолтну включен)\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\ninterface MenuState {\n highlightedIndex: number;\n maxHeight: number | string;\n scrollState: ScrollContainerScrollState;\n}\n\nexport const InternalMenuDataTids = {\n root: 'InternalMenu__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n InternalMenuProps,\n 'width' | 'maxHeight' | 'hasShadow' | 'preventWindowScroll' | 'cyclicSelection' | 'initialSelectedItemIndex'\n >\n>;\n/**\n * @deprecated use Menu component instead\n */\n@responsiveLayout\n@rootNode\nexport class InternalMenu extends React.PureComponent<InternalMenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'InternalMenu';\n\n public static defaultProps: DefaultProps = {\n width: 'auto',\n maxHeight: 300,\n hasShadow: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n private getProps = createPropsGetter(InternalMenu.defaultProps);\n\n public state: MenuState = {\n highlightedIndex: -1,\n maxHeight: this.getProps().maxHeight || 'none',\n scrollState: 'top',\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private highlighted: Nullable<MenuItem>;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n private isMobileLayout!: boolean;\n\n public componentDidMount() {\n this.setInitialSelection();\n this.calculateMaxHeight();\n }\n\n public componentDidUpdate(prevProps: InternalMenuProps) {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.getProps().maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus() {\n this.focusOnRootElement();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const enableIconPadding = isIconPaddingEnabled(this.props.children, this.props.preventIconsOffset);\n\n if (this.isEmpty()) {\n return null;\n }\n const { hasShadow, width, maxHeight, preventWindowScroll } = this.getProps();\n const isMobile = this.isMobileLayout;\n return (\n <div\n data-tid={InternalMenuDataTids.root}\n className={cx({\n [styles.root(this.theme)]: true,\n [styles.mobileRoot(this.theme)]: isMobile,\n [styles.shadow(this.theme)]: hasShadow,\n })}\n style={{\n width,\n maxHeight: this.state.maxHeight,\n }}\n onKeyDown={this.handleKeyDown}\n ref={this.setRootNode}\n tabIndex={0}\n >\n {this.props.header ? this.renderHeader() : null}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n onScrollStateChange={this.handleScrollStateChange}\n >\n {React.Children.map(this.props.children, (child, index) => {\n if (typeof child === 'string' || typeof child === 'number' || isNullable(child)) {\n return child;\n }\n if (React.isValidElement(child) && typeof child.type === 'string') {\n return child;\n }\n\n const modifiedChild = addIconPaddingIfPartOfMenu(child, enableIconPadding);\n\n if (isActiveElement(modifiedChild)) {\n const highlight = this.state.highlightedIndex === index;\n\n let ref = modifiedChild.ref;\n const originalRef = ref;\n if (highlight) {\n ref = (menuItem) => this.refHighlighted(originalRef, menuItem);\n }\n\n return React.cloneElement<MenuItemProps, MenuItem>(modifiedChild, {\n ref,\n state: highlight ? 'hover' : modifiedChild.props.state,\n onClick: this.select.bind(this, index, false),\n onMouseEnter: (event) => {\n this.highlightItem(index);\n if (isMenuItem(modifiedChild) && modifiedChild.props.onMouseEnter) {\n modifiedChild.props.onMouseEnter(event);\n }\n },\n onMouseLeave: (event) => {\n this.unhighlight();\n if (isMenuItem(modifiedChild) && modifiedChild.props.onMouseLeave) {\n modifiedChild.props.onMouseLeave(event);\n }\n },\n });\n }\n\n return modifiedChild;\n })}\n </ScrollContainer>\n {this.props.footer ? this.renderFooter() : null}\n </div>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.headerWrapper()]: true,\n })}\n ref={(el) => (this.header = el)}\n >\n <div className={styles.contentWrapper()}>{this.props.header}</div>\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'top' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.footerWrapper()]: true,\n })}\n ref={(el) => (this.footer = el)}\n >\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'bottom' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n <div className={styles.contentWrapper()}>{this.props.footer}</div>\n </div>\n );\n };\n\n private renderMenuSeparatorWithNoMargin = () => {\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ menuSeparatorMarginY: '0' }, this.theme)}>\n <MenuSeparator />\n </ThemeContext.Provider>\n );\n };\n\n private focusOnRootElement = (): void => {\n const rootNode = getRootNode(this);\n if (isInstanceOf(rootNode, globalObject.HTMLElement)) {\n rootNode?.focus();\n }\n };\n\n private shouldRecalculateMaxHeight = (prevProps: InternalMenuProps): boolean => {\n const { header, footer, children } = this.props;\n const maxHeight = this.getProps().maxHeight;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const maxHeight = this.getProps().maxHeight;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && typeof globalObject !== 'undefined' && rootNode) {\n const rootElementMaxHeight = globalObject.getComputedStyle?.(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.moveDown();\n }\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private refHighlighted(\n originalRef: string | ((instance: MenuItem | null) => void) | React.RefObject<MenuItem> | null | undefined,\n menuItem: MenuItem | null,\n ) {\n this.highlighted = menuItem;\n\n if (!originalRef || typeof originalRef === 'string') {\n return;\n }\n\n if (typeof originalRef === 'function') {\n originalRef(menuItem);\n } else if (typeof originalRef === 'object') {\n // @ts-expect-error: See: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065.\n originalRef.current = menuItem;\n }\n }\n\n private scrollToSelected = () => {\n if (this.scrollContainer && this.highlighted) {\n const rootNode = getRootNode(this.highlighted);\n // TODO: Remove this check once IF-647 is resolved\n if (isInstanceOf(rootNode, globalObject.HTMLElement)) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private select(index: number, shouldHandleHref: boolean, event: React.SyntheticEvent<HTMLElement>): boolean {\n const item = childrenToArray(this.props.children)[index];\n\n if (isActiveElement(item) && isBrowser(globalObject)) {\n if (shouldHandleHref && item.props.href) {\n if (item.props.target) {\n globalObject.open(item.props.href, item.props.target);\n } else {\n globalObject.location.href = item.props.href;\n }\n }\n if (item.props.onClick) {\n item.props.onClick(event as React.MouseEvent<HTMLElement>);\n }\n if (this.props.onItemClick) {\n this.props.onItemClick(event);\n }\n return true;\n }\n return false;\n }\n\n private highlightItem = (index: number): void => {\n this.setState({ highlightedIndex: index });\n\n const rootNode = getRootNode(this);\n if (isInstanceOf(rootNode, globalObject.HTMLElement)) {\n rootNode?.focus();\n }\n };\n\n private unhighlight = () => {\n this.setState({ highlightedIndex: -1 });\n };\n\n private move(step: number) {\n this.setState((state, props) => {\n const children = childrenToArray(props.children);\n if (!children.some(isActiveElement)) {\n return null;\n }\n let index = state.highlightedIndex;\n do {\n index += step;\n if (!this.getProps().cyclicSelection && (index < 0 || index > children.length)) {\n return null;\n }\n\n if (index < 0) {\n index = children.length - 1;\n } else if (index > children.length) {\n index = 0;\n }\n\n const child = children[index];\n if (isActiveElement(child)) {\n return { highlightedIndex: index };\n }\n } while (index !== state.highlightedIndex);\n return null;\n }, this.scrollToSelected);\n }\n\n private moveUp = () => {\n this.move(-1);\n };\n\n private moveDown = () => {\n this.move(1);\n };\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(e);\n }\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(e)) {\n e.preventDefault();\n this.moveUp();\n } else if (isKeyArrowDown(e)) {\n e.preventDefault();\n this.moveDown();\n } else if (isKeyEnter(e)) {\n if (this.highlighted && this.highlighted.props.onClick) {\n this.highlighted.props.onClick(e);\n }\n }\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollState) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n"]}
|