@skbkontur/react-ui 5.4.7-7ccf0.0 → 5.4.7-a27a4.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/cjs/components/Button/Button.d.ts +1 -0
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Calendar/Calendar.d.ts +1 -1
- package/cjs/components/Calendar/Calendar.js.map +1 -1
- package/cjs/components/DateInput/DateFragmentsView.d.ts +2 -2
- package/cjs/components/DateInput/DateFragmentsView.js.map +1 -1
- package/cjs/components/DateRangePicker/DateRangePicker.d.ts +2 -2
- package/cjs/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/cjs/components/DateRangePicker/DateRangePickerContext.d.ts +3 -3
- package/cjs/components/DateRangePicker/DateRangePickerContext.js.map +1 -1
- package/cjs/components/DateRangePicker/DateRangePickerInput.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.d.ts +4 -4
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.js +3 -1
- package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/cjs/components/FileUploader/FileUploader.d.ts +1 -1
- package/cjs/components/FileUploader/FileUploaderFile.js.map +1 -1
- package/cjs/components/GlobalLoader/GlobalLoaderView.d.ts +3 -2
- package/cjs/components/GlobalLoader/GlobalLoaderView.js +49 -50
- package/cjs/components/GlobalLoader/GlobalLoaderView.js.map +1 -1
- package/cjs/components/Input/Input.d.ts +2 -2
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Input/InputLayout/InputLayout.d.ts +3 -1
- package/cjs/components/Input/InputLayout/InputLayout.js +2 -1
- package/cjs/components/Input/InputLayout/InputLayout.js.map +1 -1
- package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js +6 -4
- package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js.map +1 -1
- package/cjs/components/Kebab/Kebab.d.ts +1 -1
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Link/Link.d.ts +1 -1
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +1 -1
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js +1 -1
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js.map +1 -1
- package/cjs/components/MaskedInput/FixedIMaskInput.js +3 -1
- package/cjs/components/MaskedInput/FixedIMaskInput.js.map +1 -1
- package/cjs/components/MaskedInput/MaskedInput.js +2 -2
- package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.d.ts +1 -1
- package/cjs/components/MenuItem/MenuItem.js.map +1 -1
- package/cjs/components/Modal/Modal.d.ts +4 -1
- package/cjs/components/Modal/Modal.js +8 -3
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Modal/ModalBody.d.ts +2 -2
- package/cjs/components/Modal/ModalBody.js.map +1 -1
- package/cjs/components/Paging/Paging.d.ts +2 -2
- package/cjs/components/Paging/Paging.js.map +1 -1
- package/cjs/components/PasswordInput/PasswordInput.d.ts +1 -1
- package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
- package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -2
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/ResponsiveLayout/decorator.d.ts +0 -3
- package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/Select/Select.d.ts +1 -1
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/SidePage/SidePage.d.ts +5 -2
- package/cjs/components/SidePage/SidePage.js +9 -3
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/SidePage/SidePageFooter.d.ts +1 -1
- package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
- package/cjs/components/SidePage/SidePageHeader.d.ts +1 -1
- package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
- package/cjs/components/SingleToast/SingleToast.d.ts +1 -1
- package/cjs/components/Sticky/Sticky.js +6 -2
- package/cjs/components/Sticky/Sticky.js.map +1 -1
- package/cjs/components/Tabs/Tabs.d.ts +1 -1
- package/cjs/components/Tabs/Tabs.js.map +1 -1
- package/cjs/components/Token/TokenView.d.ts +2 -1
- package/cjs/components/Token/TokenView.js +4 -4
- package/cjs/components/Token/TokenView.js.map +1 -1
- package/cjs/components/TokenInput/TextWidthHelper.js +3 -1
- package/cjs/components/TokenInput/TextWidthHelper.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.js +14 -7
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.d.ts +4 -4
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/hooks/useDrop.js +1 -1
- package/cjs/hooks/useDrop.js.map +1 -1
- package/cjs/internal/CommonWrapper/CommonWrapper.js +3 -2
- package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +3 -6
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +84 -83
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -1
- package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +1 -1
- package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js +11 -12
- package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js.map +1 -1
- package/cjs/internal/FocusControlWrapper/FocusControlWrapper.d.ts +5 -6
- package/cjs/internal/FocusControlWrapper/FocusControlWrapper.js +28 -23
- package/cjs/internal/FocusControlWrapper/FocusControlWrapper.js.map +1 -1
- package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.d.ts +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.d.ts +2 -2
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/Menu/Menu.js +6 -2
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/Menu/MenuNavigation.d.ts +1 -1
- package/cjs/internal/Menu/MenuNavigation.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopup.d.ts +1 -0
- package/cjs/internal/MobilePopup/MobilePopup.js +9 -1
- package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
- package/cjs/internal/Popup/Popup.js +2 -4
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.d.ts +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.js +9 -3
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/internal/RenderLayer/RenderLayer.d.ts +2 -2
- package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
- package/cjs/internal/TextWidthHelper/TextWidthHelper.js +3 -1
- package/cjs/internal/TextWidthHelper/TextWidthHelper.js.map +1 -1
- package/cjs/internal/ThemePlayground/FxInputPlayground.d.ts +1 -1
- package/cjs/internal/ThemePlayground/FxInputPlayground.js.map +1 -1
- package/cjs/lib/dom/getDOMRect.d.ts +1 -1
- package/cjs/lib/dom/getDOMRect.js +3 -1
- package/cjs/lib/dom/getDOMRect.js.map +1 -1
- package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.d.ts +1 -1
- package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.js.map +1 -1
- package/cjs/lib/forwardRefAndName.d.ts +3 -2
- package/cjs/lib/forwardRefAndName.js +2 -1
- package/cjs/lib/forwardRefAndName.js.map +1 -1
- package/cjs/lib/getElementRef.d.ts +5 -0
- package/cjs/lib/getElementRef.js +16 -0
- package/cjs/lib/getElementRef.js.map +1 -0
- package/cjs/lib/locale/decorators.d.ts +0 -3
- package/cjs/lib/mergeRefs.d.ts +2 -3
- package/cjs/lib/mergeRefs.js +1 -1
- package/cjs/lib/mergeRefs.js.map +1 -1
- package/cjs/lib/reactGetTextContent.js +6 -1
- package/cjs/lib/reactGetTextContent.js.map +1 -1
- package/cjs/lib/renderEnvironment/RenderEnvironmentDecorator.d.ts +0 -3
- package/cjs/lib/rootNode/getRootNode.js +1 -24
- package/cjs/lib/rootNode/getRootNode.js.map +1 -1
- package/cjs/lib/rootNode/rootNodeDecorator.d.ts +0 -3
- package/cjs/lib/size/SizeDecorator.d.ts +0 -3
- package/cjs/lib/types/polymorphic-component.d.ts +2 -1
- package/cjs/lib/types/polymorphic-component.js.map +1 -1
- package/cjs/lib/utils.d.ts +4 -3
- package/cjs/lib/utils.js +4 -3
- package/cjs/lib/utils.js.map +1 -1
- package/cjs/lib/withClassWrapper.d.ts +3 -8
- package/components/Button/Button/Button.js +1 -1
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +1 -0
- package/components/Calendar/Calendar/Calendar.js.map +1 -1
- package/components/Calendar/Calendar.d.ts +1 -1
- package/components/DateInput/DateFragmentsView/DateFragmentsView.js.map +1 -1
- package/components/DateInput/DateFragmentsView.d.ts +2 -2
- package/components/DateRangePicker/DateRangePicker/DateRangePicker.js +1 -1
- package/components/DateRangePicker/DateRangePicker/DateRangePicker.js.map +1 -1
- package/components/DateRangePicker/DateRangePicker.d.ts +2 -2
- package/components/DateRangePicker/DateRangePickerContext/DateRangePickerContext.js.map +1 -1
- package/components/DateRangePicker/DateRangePickerContext.d.ts +3 -3
- package/components/DateRangePicker/DateRangePickerInput/DateRangePickerInput.js.map +1 -1
- package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/Dropdown.d.ts +4 -4
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +1 -1
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
- package/components/FileUploader/FileUploader.d.ts +1 -1
- package/components/FileUploader/FileUploaderFile/FileUploaderFile.js +1 -1
- package/components/FileUploader/FileUploaderFile/FileUploaderFile.js.map +1 -1
- package/components/GlobalLoader/GlobalLoaderView/GlobalLoaderView.js +5 -4
- package/components/GlobalLoader/GlobalLoaderView/GlobalLoaderView.js.map +1 -1
- package/components/GlobalLoader/GlobalLoaderView.d.ts +3 -2
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +2 -2
- package/components/Input/InputLayout/InputLayout/InputLayout.js +4 -2
- package/components/Input/InputLayout/InputLayout/InputLayout.js.map +1 -1
- package/components/Input/InputLayout/InputLayout.d.ts +3 -1
- package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js +2 -2
- package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js.map +1 -1
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Kebab/Kebab.d.ts +1 -1
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Link/Link.d.ts +1 -1
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js +1 -1
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js.map +1 -1
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +1 -1
- package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.js +1 -1
- package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.js.map +1 -1
- package/components/MaskedInput/MaskedInput/MaskedInput.js +2 -2
- package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
- package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +1 -1
- package/components/Modal/Modal/Modal.js +7 -3
- package/components/Modal/Modal/Modal.js.map +1 -1
- package/components/Modal/Modal.d.ts +4 -1
- package/components/Modal/ModalBody/ModalBody.js.map +1 -1
- package/components/Modal/ModalBody.d.ts +2 -2
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/Paging/Paging.d.ts +2 -2
- package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
- package/components/PasswordInput/PasswordInput.d.ts +1 -1
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/RadioGroup.d.ts +2 -2
- package/components/ResponsiveLayout/decorator.d.ts +0 -3
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +1 -1
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.d.ts +1 -1
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.d.ts +1 -1
- package/components/SidePage/SidePage/SidePage.js +7 -3
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePage.d.ts +5 -2
- package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
- package/components/SidePage/SidePageFooter.d.ts +1 -1
- package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
- package/components/SidePage/SidePageHeader.d.ts +1 -1
- package/components/SingleToast/SingleToast.d.ts +1 -1
- package/components/Sticky/Sticky/Sticky.js +2 -2
- package/components/Sticky/Sticky/Sticky.js.map +1 -1
- package/components/Tabs/Tabs/Tabs.js.map +1 -1
- package/components/Tabs/Tabs.d.ts +1 -1
- package/components/Token/TokenView/TokenView.js +6 -4
- package/components/Token/TokenView/TokenView.js.map +1 -1
- package/components/Token/TokenView.d.ts +2 -1
- package/components/TokenInput/TextWidthHelper/TextWidthHelper.js +1 -1
- package/components/TokenInput/TextWidthHelper/TextWidthHelper.js.map +1 -1
- package/components/TokenInput/TokenInput/TokenInput.js +5 -5
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +4 -4
- package/hooks/useDrop/useDrop.js +1 -1
- package/hooks/useDrop/useDrop.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +3 -2
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +2 -2
- package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +3 -6
- package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js +2 -3
- package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js.map +1 -1
- package/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +1 -1
- package/internal/FocusControlWrapper/FocusControlWrapper/FocusControlWrapper.js +7 -4
- package/internal/FocusControlWrapper/FocusControlWrapper/FocusControlWrapper.js.map +1 -1
- package/internal/FocusControlWrapper/FocusControlWrapper.d.ts +5 -6
- package/internal/IgnoreLayerClick/IgnoreLayerClick.d.ts +1 -1
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.d.ts +2 -2
- package/internal/Menu/Menu/Menu.js +2 -2
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/Menu/MenuNavigation/MenuNavigation.js.map +1 -1
- package/internal/Menu/MenuNavigation.d.ts +1 -1
- package/internal/MobilePopup/MobilePopup/MobilePopup.js +5 -2
- package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.d.ts +1 -0
- package/internal/Popup/Popup/Popup.js +2 -2
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/PopupMenu/PopupMenu/PopupMenu.js +3 -3
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +1 -1
- package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
- package/internal/RenderLayer/RenderLayer.d.ts +2 -2
- package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js +1 -1
- package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js.map +1 -1
- package/internal/ThemePlayground/FxInputPlayground/FxInputPlayground.js.map +1 -1
- package/internal/ThemePlayground/FxInputPlayground.d.ts +1 -1
- package/lib/dom/getDOMRect/getDOMRect.js.map +1 -1
- package/lib/dom/getDOMRect.d.ts +1 -1
- package/lib/events/fixFirefoxModifiedClickOnLabel/fixFirefoxModifiedClickOnLabel.js.map +1 -1
- package/lib/events/fixFirefoxModifiedClickOnLabel.d.ts +1 -1
- package/lib/forwardRefAndName/forwardRefAndName.js.map +1 -1
- package/lib/forwardRefAndName.d.ts +3 -2
- package/lib/getElementRef/getElementRef.js +11 -0
- package/lib/getElementRef/getElementRef.js.map +1 -0
- package/lib/getElementRef/package.json +6 -0
- package/lib/getElementRef.d.ts +5 -0
- package/lib/locale/decorators.d.ts +0 -3
- package/lib/mergeRefs/mergeRefs.js.map +1 -1
- package/lib/mergeRefs.d.ts +2 -3
- package/lib/reactGetTextContent/reactGetTextContent.js +1 -1
- package/lib/reactGetTextContent/reactGetTextContent.js.map +1 -1
- package/lib/renderEnvironment/RenderEnvironmentDecorator.d.ts +0 -3
- package/lib/rootNode/getRootNode/getRootNode.js +0 -15
- package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
- package/lib/rootNode/rootNodeDecorator.d.ts +0 -3
- package/lib/size/SizeDecorator.d.ts +0 -3
- package/lib/types/polymorphic-component/polymorphic-component.js.map +1 -1
- package/lib/types/polymorphic-component.d.ts +2 -1
- package/lib/utils/utils.js +2 -2
- package/lib/utils/utils.js.map +1 -1
- package/lib/utils.d.ts +4 -3
- package/lib/withClassWrapper.d.ts +3 -8
- package/package.json +10 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","ReactDOM","debounce","isNonNullable","MouseDrag","isMobile","removeAllSelections","selectNodeContents","calculateClearCrossShowedState","InputDataTids","getStyles","getJsInputStyles","ThemeContext","CommonWrapper","rootNode","createPropsGetter","InputLayoutAside","InputLayoutContext","InputLayoutContextDefault","FocusControlWrapper","ClearCrossIcon","blink","withSize","withRenderEnvironment","InputLikeTextDataTids","root","input","nativeInput","InputLikeText","_class","_InputLikeText","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","getClearCrossShowed","_ref","focused","hovered","props","disabled","showClearIcon","notEmptyValue","Boolean","children","state","clearCrossShowed","node","dragging","selectNodeContentsDebounced","selectInnerNode","start","end","renderMain","_this$cx","_this$cx2","_this$cx3","innerRef","tabIndex","placeholder","align","borderless","width","error","warning","onValueChange","prefix","suffix","leftIcon","rightIcon","value","onMouseDragStart","onMouseDragEnd","takeContentWidth","ariaDescribedby","ariaLabel","ariaLabelledby","onClearCrossClick","rest","_objectWithoutPropertiesLoose","_excluded","getRightIcon","createElement","clearCross","size","onFocus","event","stopPropagation","onClick","leftSide","icon","text","side","rightSide","className","cx","styles","jsInputStyles","theme","getSizeClassName","focus","hovering","hideBlinkingCursor","wrapperClass","wrapper","userSelectContain","context","Object","assign","onBlurWhenDisabled","resetFocus","_extends","style","textAlign","handleFocus","onMouseEnter","handleHover","onMouseLeave","handleUnhover","onBlur","handleBlur","ref","onKeyDown","handleKeyDown","role","Provider","type","absolute","inputFocus","inputDisabled","renderPlaceholder","_this$props","hasValue","_this$cx4","placeholderDisabled","placeholderFocus","e","handleMouseDragStart","_this$globalObject$do","globalObject","document","documentElement","classList","add","userSelectNone","handleMouseDragEnd","_this$globalObject$do2","setTimeout","remove","_this$node","setAttribute","version","search","flushSync","setState","cancel","_this$node2","removeAttribute","_this$node3","el","_this$cx5","_this$cx6","_this$cx7","sizeLarge","sizeMedium","sizeSmall","_inheritsLoose","_proto","prototype","blur","blinkColor","inputBlinkColor","getNode","componentDidMount","listen","componentWillUnmount","stop","render","_this2","emotion","Consumer","rootNodeRef","setRootNode","Component","__KONTUR_REACT_UI__","displayName"],"sources":["InputLikeText.tsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash.debounce';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport { isNonNullable } from '../../lib/utils';\nimport type { MouseDragEventHandler } from '../../lib/events/MouseDrag';\nimport { MouseDrag } from '../../lib/events/MouseDrag';\nimport { isMobile } from '../../lib/client';\nimport { removeAllSelections, selectNodeContents } from '../../lib/dom/selectionHelpers';\nimport type { InputProps, InputState } from '../../components/Input';\nimport { calculateClearCrossShowedState, InputDataTids } from '../../components/Input';\nimport { getStyles as getJsInputStyles } from '../../components/Input/Input.styles';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps, CommonWrapperRestProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { InputLayoutAside } from '../../components/Input/InputLayout/InputLayoutAside';\nimport { InputLayoutContext, InputLayoutContextDefault } from '../../components/Input/InputLayout/InputLayoutContext';\nimport { FocusControlWrapper } from '../FocusControlWrapper';\nimport { ClearCrossIcon } from '../ClearCrossIcon/ClearCrossIcon';\nimport { blink } from '../../lib/blink';\nimport { withSize } from '../../lib/size/SizeDecorator';\nimport type { SizeProp } from '../../lib/types/props';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { getStyles } 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 onClearCrossClick?: () => void;\n}\n\nexport type InputLikeTextState = Omit<InputState, 'needsPolyfillPlaceholder' | 'hovered'>;\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, 'showClearIcon'>>;\n\n@withRenderEnvironment\n@withSize\n@rootNode\nexport class InputLikeText extends React.Component<InputLikeTextProps, InputLikeTextState> {\n public static __KONTUR_REACT_UI__ = 'InputLikeText';\n public static displayName = 'InputLikeText';\n\n public static defaultProps: DefaultProps = {\n showClearIcon: 'never',\n };\n\n private getProps = createPropsGetter(InputLikeText.defaultProps);\n\n private getClearCrossShowed = ({ focused, hovered }: { focused?: boolean; hovered?: boolean }): boolean => {\n if (this.props.disabled) {\n return false;\n }\n return calculateClearCrossShowedState({\n showClearIcon: this.getProps().showClearIcon,\n notEmptyValue: Boolean(this.props.children),\n focused,\n hovered,\n });\n };\n\n public state = {\n focused: false,\n clearCrossShowed: this.getClearCrossShowed({\n focused: false,\n }),\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private jsInputStyles!: ReturnType<typeof getJsInputStyles>;\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private size!: SizeProp;\n private node: HTMLElement | null = null;\n private dragging = false;\n\n public getRootNode!: TGetRootNode;\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 blink({\n el: this.node,\n blinkColor: this.theme.inputBlinkColor,\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\n this.selectNodeContentsDebounced(node, start, end);\n };\n\n public componentDidMount() {\n if (this.node) {\n MouseDrag.listen(this.node).onMouseDragStart(this.handleMouseDragStart).onMouseDragEnd(this.handleMouseDragEnd);\n }\n }\n\n public componentWillUnmount() {\n MouseDrag.stop(this.node);\n }\n\n public render() {\n this.jsInputStyles = getJsInputStyles(this.emotion);\n this.styles = getStyles(this.emotion);\n\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 private renderMain = (props: CommonWrapperRestProps<InputLikeTextProps>) => {\n const {\n innerRef,\n tabIndex,\n placeholder,\n align,\n borderless,\n width,\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 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n showClearIcon,\n onClearCrossClick,\n ...rest\n } = props;\n\n const { focused } = this.state;\n const getRightIcon = () => {\n return this.state.clearCrossShowed ? (\n <ClearCrossIcon\n data-tid={InputDataTids.clearCross}\n size={this.size}\n onFocus={(event) => event.stopPropagation()}\n onClick={onClearCrossClick}\n />\n ) : (\n rightIcon\n );\n };\n const leftSide = <InputLayoutAside icon={leftIcon} text={prefix} side=\"left\" />;\n const rightSide = <InputLayoutAside icon={getRightIcon()} text={suffix} side=\"right\" />;\n\n const className = this.cx(this.styles.root(), this.jsInputStyles.root(this.theme), this.getSizeClassName(), {\n [this.jsInputStyles.disabled(this.theme)]: !!disabled,\n [this.jsInputStyles.borderless()]: !!borderless,\n [this.jsInputStyles.focus(this.theme)]: focused,\n [this.jsInputStyles.hovering(this.theme)]: !focused && !disabled && !warning && !error && !borderless,\n [this.jsInputStyles.warning(this.theme)]: !!warning,\n [this.jsInputStyles.error(this.theme)]: !!error,\n [this.jsInputStyles.hideBlinkingCursor()]: isMobile,\n });\n\n const wrapperClass = this.cx(this.jsInputStyles.wrapper(), {\n [this.styles.userSelectContain()]: focused,\n });\n const size = this.size;\n const context = InputLayoutContextDefault;\n Object.assign(context, { disabled, focused, size });\n\n return (\n <FocusControlWrapper disabled={disabled} onBlurWhenDisabled={this.resetFocus}>\n <span\n data-tid={InputLikeTextDataTids.root}\n {...rest}\n className={className}\n style={{ width, textAlign: align }}\n tabIndex={disabled ? -1 : 0}\n onFocus={this.handleFocus}\n onMouseEnter={this.handleHover}\n onMouseLeave={this.handleUnhover}\n onBlur={this.handleBlur}\n ref={this.innerRef}\n onKeyDown={this.handleKeyDown}\n role=\"textbox\"\n aria-disabled={disabled}\n aria-describedby={ariaDescribedby}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n >\n <InputLayoutContext.Provider value={context}>\n <input type=\"hidden\" data-tid={InputLikeTextDataTids.nativeInput} value={value} disabled={disabled} />\n {leftSide}\n <span className={wrapperClass}>\n <span\n data-tid={InputLikeTextDataTids.input}\n className={this.cx(this.jsInputStyles.input(this.theme), {\n [this.styles.absolute()]: !takeContentWidth,\n [this.jsInputStyles.inputFocus(this.theme)]: focused,\n [this.jsInputStyles.inputDisabled(this.theme)]: disabled,\n })}\n >\n {this.props.children}\n </span>\n {this.renderPlaceholder()}\n </span>\n {rightSide}\n </InputLayoutContext.Provider>\n </span>\n </FocusControlWrapper>\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={this.cx(this.jsInputStyles.placeholder(this.theme), {\n [this.jsInputStyles.placeholderDisabled(this.theme)]: disabled,\n [this.jsInputStyles.placeholderFocus(this.theme)]: focused,\n })}\n >\n {placeholder}\n </span>\n );\n }\n return null;\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.props.disabled) {\n return;\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 this.globalObject.document?.documentElement.classList.add(this.styles.userSelectNone());\n\n if (this.props.onMouseDragStart) {\n this.props.onMouseDragStart(e);\n }\n };\n\n private handleMouseDragEnd: MouseDragEventHandler = (e) => {\n // Дожидаемся onMouseUp\n setTimeout(() => {\n this.dragging = false;\n\n if (this.props.onMouseDragEnd) {\n this.props.onMouseDragEnd(e);\n }\n }, 0);\n\n this.globalObject.document?.documentElement.classList.remove(this.styles.userSelectNone());\n };\n\n private handleFocus = (e: React.FocusEvent<HTMLElement>) => {\n if (isMobile) {\n this.node?.setAttribute('contenteditable', 'true');\n }\n\n if (this.props.disabled) {\n return;\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 resetFocus = () => {\n this.selectNodeContentsDebounced.cancel();\n if (isMobile) {\n this.node?.removeAttribute('contenteditable');\n }\n removeAllSelections(this.globalObject);\n this.setState({ focused: false });\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n this.selectNodeContentsDebounced.cancel();\n if (isMobile) {\n this.node?.removeAttribute('contenteditable');\n }\n\n if (this.props.disabled) {\n e.stopPropagation();\n return;\n }\n\n removeAllSelections(this.globalObject);\n this.setState({ focused: false });\n\n this.props.onBlur?.(e);\n };\n\n private handleHover = () => {\n this.setState({ clearCrossShowed: this.getClearCrossShowed({ focused: this.state.focused, hovered: true }) });\n };\n\n private handleUnhover = () => {\n this.setState({ clearCrossShowed: this.getClearCrossShowed({ focused: this.state.focused, hovered: false }) });\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 getSizeClassName = () => {\n switch (this.size) {\n case 'large':\n return this.cx({\n [this.jsInputStyles.sizeLarge(this.theme)]: true,\n });\n case 'medium':\n return this.cx({\n [this.jsInputStyles.sizeMedium(this.theme)]: true,\n });\n case 'small':\n default:\n return this.cx({\n [this.jsInputStyles.sizeSmall(this.theme)]: true,\n });\n }\n };\n}\n"],"mappings":"mlBAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,MAAM,WAAW;AAChC,OAAOC,QAAQ,MAAM,iBAAiB;;;;AAItC,SAASC,aAAa,QAAQ,iBAAiB;;AAE/C,SAASC,SAAS,QAAQ,4BAA4B;AACtD,SAASC,QAAQ,QAAQ,kBAAkB;AAC3C,SAASC,mBAAmB,EAAEC,kBAAkB,QAAQ,gCAAgC;;AAExF,SAASC,8BAA8B,EAAEC,aAAa,QAAQ,wBAAwB;AACtF,SAASC,SAAS,IAAIC,gBAAgB,QAAQ,qCAAqC;AACnF,SAASC,YAAY,QAAQ,gCAAgC;;;AAG7D,SAASC,aAAa,QAAQ,kBAAkB;;AAEhD,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,iBAAiB,QAAQ,6BAA6B;AAC/D,SAASC,gBAAgB,QAAQ,qDAAqD;AACtF,SAASC,kBAAkB,EAAEC,yBAAyB,QAAQ,uDAAuD;AACrH,SAASC,mBAAmB,QAAQ,wBAAwB;AAC5D,SAASC,cAAc,QAAQ,kCAAkC;AACjE,SAASC,KAAK,IAALA,MAAK,QAAQ,iBAAiB;AACvC,SAASC,QAAQ,QAAQ,8BAA8B;;AAEvD,SAASC,qBAAqB,QAAQ,6BAA6B;;AAEnE,SAASb,SAAS,QAAQ,wBAAwB;;;;;;;;;;;;;;;AAelD,OAAO,IAAMc,qBAAqB,GAAG;EACnCC,IAAI,EAAE,qBAAqB;EAC3BC,KAAK,EAAE,sBAAsB;EAC7BC,WAAW,EAAE;AACf,CAAU;;;;AAIV;;;AAGaC,aAAa,GAHzBL,qBAAqB,CAAAM,MAAA,GACrBP,QAAQ,CAAAO,MAAA,GACRf,QAAQ,CAAAe,MAAA,IAAAC,cAAA,0BAAAC,gBAAA,YAAAH,cAAA,OAAAI,KAAA,UAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,KAAAF,IAAA,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA,GAAAN,KAAA,GAAAD,gBAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,gBAAA,SAAAU,MAAA,CAAAL,IAAA,WAAAJ,KAAA;;;;;;;;IASCU,QAAQ,GAAG3B,iBAAiB,CAACa,aAAa,CAACe,YAAY,CAAC,CAAAX,KAAA;;IAExDY,mBAAmB,GAAG,UAAAC,IAAA,EAA6E,KAA1EC,OAAO,GAAAD,IAAA,CAAPC,OAAO,CAAEC,OAAO,GAAAF,IAAA,CAAPE,OAAO;MAC/C,IAAIf,KAAA,CAAKgB,KAAK,CAACC,QAAQ,EAAE;QACvB,OAAO,KAAK;MACd;MACA,OAAOzC,8BAA8B,CAAC;QACpC0C,aAAa,EAAElB,KAAA,CAAKU,QAAQ,CAAC,CAAC,CAACQ,aAAa;QAC5CC,aAAa,EAAEC,OAAO,CAACpB,KAAA,CAAKgB,KAAK,CAACK,QAAQ,CAAC;QAC3CP,OAAO,EAAPA,OAAO;QACPC,OAAO,EAAPA;MACF,CAAC,CAAC;IACJ,CAAC,CAAAf,KAAA;;IAEMsB,KAAK,GAAG;MACbR,OAAO,EAAE,KAAK;MACdS,gBAAgB,EAAEvB,KAAA,CAAKY,mBAAmB,CAAC;QACzCE,OAAO,EAAE;MACX,CAAC;IACH,CAAC,CAAAd,KAAA;;;;;;;;;IASOwB,IAAI,GAAuB,IAAI,CAAAxB,KAAA;IAC/ByB,QAAQ,GAAG,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwCxB;IAAAzB,KAAA,CACQ0B,2BAA2B,GAAGxD,QAAQ,CAACK,kBAAkB,EAAE,CAAC,CAAC,CAAAyB,KAAA;;IAE9D2B,eAAe,GAAG,UAACH,IAAwB,EAAEI,KAAK,EAAMC,GAAG,EAAS,KAAvBD,KAAK,cAALA,KAAK,GAAG,CAAC,MAAEC,GAAG,cAAHA,GAAG,GAAG,CAAC;MACpE,IAAI7B,KAAA,CAAKyB,QAAQ,IAAI,CAACD,IAAI,EAAE;QAC1B;MACF;;MAEAxB,KAAA,CAAK0B,2BAA2B,CAACF,IAAI,EAAEI,KAAK,EAAEC,GAAG,CAAC;IACpD,CAAC,CAAA7B,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8BO8B,UAAU,GAAG,UAACd,KAAiD,EAAK,KAAAe,QAAA,EAAAC,SAAA,EAAAC,SAAA;MAC1E;QACEC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;QAwBNlB,KAAK,CAxBPkB,QAAQ,CACRC,QAAQ,GAuBNnB,KAAK,CAvBPmB,QAAQ,CACRC,WAAW,GAsBTpB,KAAK,CAtBPoB,WAAW,CACXC,KAAK,GAqBHrB,KAAK,CArBPqB,KAAK,CACLC,UAAU,GAoBRtB,KAAK,CApBPsB,UAAU,CACVC,KAAK,GAmBHvB,KAAK,CAnBPuB,KAAK,CACLC,KAAK,GAkBHxB,KAAK,CAlBPwB,KAAK,CACLC,OAAO,GAiBLzB,KAAK,CAjBPyB,OAAO,CACPC,aAAa,GAgBX1B,KAAK,CAhBP0B,aAAa,CACbzB,QAAQ,GAeND,KAAK,CAfPC,QAAQ,CACR0B,MAAM,GAcJ3B,KAAK,CAdP2B,MAAM,CACNC,MAAM,GAaJ5B,KAAK,CAbP4B,MAAM,CACNC,QAAQ,GAYN7B,KAAK,CAZP6B,QAAQ,CACRC,SAAS,GAWP9B,KAAK,CAXP8B,SAAS,CACTC,KAAK,GAUH/B,KAAK,CAVP+B,KAAK,CACLC,gBAAgB,GASdhC,KAAK,CATPgC,gBAAgB,CAChBC,cAAc,GAQZjC,KAAK,CARPiC,cAAc,CACdC,gBAAgB,GAOdlC,KAAK,CAPPkC,gBAAgB,CACIC,eAAe,GAMjCnC,KAAK,CANP,kBAAkB,EACJoC,SAAS,GAKrBpC,KAAK,CALP,YAAY,EACOqC,cAAc,GAI/BrC,KAAK,CAJP,iBAAiB,EACjBE,aAAa,GAGXF,KAAK,CAHPE,aAAa,CACboC,iBAAiB,GAEftC,KAAK,CAFPsC,iBAAiB,CACdC,IAAI,GAAAC,6BAAA,CACLxC,KAAK,EAAAyC,SAAA;;MAET,IAAQ3C,OAAO,GAAKd,KAAA,CAAKsB,KAAK,CAAtBR,OAAO;MACf,IAAM4C,YAAY,GAAG,SAAfA,YAAYA,CAAA,EAAS;QACzB,OAAO1D,KAAA,CAAKsB,KAAK,CAACC,gBAAgB;QAChCvD,KAAA,CAAA2F,aAAA,CAACvE,cAAc;UACb,YAAUX,aAAa,CAACmF,UAAW;UACnCC,IAAI,EAAE7D,KAAA,CAAK6D,IAAK;UAChBC,OAAO,EAAE,SAAAA,QAACC,KAAK,UAAKA,KAAK,CAACC,eAAe,CAAC,CAAC,EAAC;UAC5CC,OAAO,EAAEX,iBAAkB;QAC5B,CAAC;;QAEFR,SACD;;MACH,CAAC;MACD,IAAMoB,QAAQ,gBAAGlG,KAAA,CAAA2F,aAAA,CAAC3E,gBAAgB,IAACmF,IAAI,EAAEtB,QAAS,EAACuB,IAAI,EAAEzB,MAAO,EAAC0B,IAAI,EAAC,MAAM,EAAE,CAAC;MAC/E,IAAMC,SAAS,gBAAGtG,KAAA,CAAA2F,aAAA,CAAC3E,gBAAgB,IAACmF,IAAI,EAAET,YAAY,CAAC,CAAE,EAACU,IAAI,EAAExB,MAAO,EAACyB,IAAI,EAAC,OAAO,EAAE,CAAC;;MAEvF,IAAME,SAAS,GAAGvE,KAAA,CAAKwE,EAAE,CAACxE,KAAA,CAAKyE,MAAM,CAAChF,IAAI,CAAC,CAAC,EAAEO,KAAA,CAAK0E,aAAa,CAACjF,IAAI,CAACO,KAAA,CAAK2E,KAAK,CAAC,EAAE3E,KAAA,CAAK4E,gBAAgB,CAAC,CAAC,GAAA7C,QAAA,OAAAA,QAAA;MACvG/B,KAAA,CAAK0E,aAAa,CAACzD,QAAQ,CAACjB,KAAA,CAAK2E,KAAK,CAAC,IAAG,CAAC,CAAC1D,QAAQ,EAAAc,QAAA;MACpD/B,KAAA,CAAK0E,aAAa,CAACpC,UAAU,CAAC,CAAC,IAAG,CAAC,CAACA,UAAU,EAAAP,QAAA;MAC9C/B,KAAA,CAAK0E,aAAa,CAACG,KAAK,CAAC7E,KAAA,CAAK2E,KAAK,CAAC,IAAG7D,OAAO,EAAAiB,QAAA;MAC9C/B,KAAA,CAAK0E,aAAa,CAACI,QAAQ,CAAC9E,KAAA,CAAK2E,KAAK,CAAC,IAAG,CAAC7D,OAAO,IAAI,CAACG,QAAQ,IAAI,CAACwB,OAAO,IAAI,CAACD,KAAK,IAAI,CAACF,UAAU,EAAAP,QAAA;MACpG/B,KAAA,CAAK0E,aAAa,CAACjC,OAAO,CAACzC,KAAA,CAAK2E,KAAK,CAAC,IAAG,CAAC,CAAClC,OAAO,EAAAV,QAAA;MAClD/B,KAAA,CAAK0E,aAAa,CAAClC,KAAK,CAACxC,KAAA,CAAK2E,KAAK,CAAC,IAAG,CAAC,CAACnC,KAAK,EAAAT,QAAA;MAC9C/B,KAAA,CAAK0E,aAAa,CAACK,kBAAkB,CAAC,CAAC,IAAG1G,QAAQ,EAAA0D,QAAA;MACpD,CAAC;;MAEF,IAAMiD,YAAY,GAAGhF,KAAA,CAAKwE,EAAE,CAACxE,KAAA,CAAK0E,aAAa,CAACO,OAAO,CAAC,CAAC,GAAAjD,SAAA,OAAAA,SAAA;MACtDhC,KAAA,CAAKyE,MAAM,CAACS,iBAAiB,CAAC,CAAC,IAAGpE,OAAO,EAAAkB,SAAA;MAC3C,CAAC;MACF,IAAM6B,IAAI,GAAG7D,KAAA,CAAK6D,IAAI;MACtB,IAAMsB,OAAO,GAAGjG,yBAAyB;MACzCkG,MAAM,CAACC,MAAM,CAACF,OAAO,EAAE,EAAElE,QAAQ,EAARA,QAAQ,EAAEH,OAAO,EAAPA,OAAO,EAAE+C,IAAI,EAAJA,IAAI,CAAC,CAAC,CAAC;;MAEnD;QACE7F,KAAA,CAAA2F,aAAA,CAACxE,mBAAmB,IAAC8B,QAAQ,EAAEA,QAAS,EAACqE,kBAAkB,EAAEtF,KAAA,CAAKuF,UAAW;QAC3EvH,KAAA,CAAA2F,aAAA,SAAA6B,QAAA;UACE,YAAUhG,qBAAqB,CAACC,IAAK;QACjC8D,IAAI;UACRgB,SAAS,EAAEA,SAAU;UACrBkB,KAAK,EAAE,EAAElD,KAAK,EAALA,KAAK,EAAEmD,SAAS,EAAErD,KAAK,CAAC,CAAE;UACnCF,QAAQ,EAAElB,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAE;UAC5B6C,OAAO,EAAE9D,KAAA,CAAK2F,WAAY;UAC1BC,YAAY,EAAE5F,KAAA,CAAK6F,WAAY;UAC/BC,YAAY,EAAE9F,KAAA,CAAK+F,aAAc;UACjCC,MAAM,EAAEhG,KAAA,CAAKiG,UAAW;UACxBC,GAAG,EAAElG,KAAA,CAAKkC,QAAS;UACnBiE,SAAS,EAAEnG,KAAA,CAAKoG,aAAc;UAC9BC,IAAI,EAAC,SAAS;UACd,iBAAepF,QAAS;UACxB,oBAAkBkC,eAAgB;UAClC,cAAYC,SAAU;UACtB,mBAAiBC,cAAe;;QAEhCrF,KAAA,CAAA2F,aAAA,CAAC1E,kBAAkB,CAACqH,QAAQ,IAACvD,KAAK,EAAEoC,OAAQ;QAC1CnH,KAAA,CAAA2F,aAAA,YAAO4C,IAAI,EAAC,QAAQ,EAAC,YAAU/G,qBAAqB,CAACG,WAAY,EAACoD,KAAK,EAAEA,KAAM,EAAC9B,QAAQ,EAAEA,QAAS,EAAE,CAAC;QACrGiD,QAAQ;QACTlG,KAAA,CAAA2F,aAAA,WAAMY,SAAS,EAAES,YAAa;QAC5BhH,KAAA,CAAA2F,aAAA;UACE,YAAUnE,qBAAqB,CAACE,KAAM;UACtC6E,SAAS,EAAEvE,KAAA,CAAKwE,EAAE,CAACxE,KAAA,CAAK0E,aAAa,CAAChF,KAAK,CAACM,KAAA,CAAK2E,KAAK,CAAC,GAAA1C,SAAA,OAAAA,SAAA;UACpDjC,KAAA,CAAKyE,MAAM,CAAC+B,QAAQ,CAAC,CAAC,IAAG,CAACtD,gBAAgB,EAAAjB,SAAA;UAC1CjC,KAAA,CAAK0E,aAAa,CAAC+B,UAAU,CAACzG,KAAA,CAAK2E,KAAK,CAAC,IAAG7D,OAAO,EAAAmB,SAAA;UACnDjC,KAAA,CAAK0E,aAAa,CAACgC,aAAa,CAAC1G,KAAA,CAAK2E,KAAK,CAAC,IAAG1D,QAAQ,EAAAgB,SAAA;UACzD,CAAE;;QAEFjC,KAAA,CAAKgB,KAAK,CAACK;QACR,CAAC;QACNrB,KAAA,CAAK2G,iBAAiB,CAAC;QACpB,CAAC;QACNrC;QAC0B;QACzB;QACa,CAAC;;IAE1B,CAAC,CAAAtE,KAAA;;IAEO2G,iBAAiB,GAAG,YAA0B;MACpD,IAAAC,WAAA,GAA4C5G,KAAA,CAAKgB,KAAK,CAA9CK,QAAQ,GAAAuF,WAAA,CAARvF,QAAQ,CAAEe,WAAW,GAAAwE,WAAA,CAAXxE,WAAW,CAAEnB,QAAQ,GAAA2F,WAAA,CAAR3F,QAAQ;MACvC,IAAQH,OAAO,GAAKd,KAAA,CAAKsB,KAAK,CAAtBR,OAAO;MACf,IAAM+F,QAAQ,GAAG1I,aAAa,CAACkD,QAAQ,CAAC,IAAIA,QAAQ,KAAK,EAAE;;MAE3D,IAAI,CAACwF,QAAQ,IAAIzE,WAAW,EAAE,KAAA0E,SAAA;QAC5B;UACE9I,KAAA,CAAA2F,aAAA;YACEY,SAAS,EAAEvE,KAAA,CAAKwE,EAAE,CAACxE,KAAA,CAAK0E,aAAa,CAACtC,WAAW,CAACpC,KAAA,CAAK2E,KAAK,CAAC,GAAAmC,SAAA,OAAAA,SAAA;YAC1D9G,KAAA,CAAK0E,aAAa,CAACqC,mBAAmB,CAAC/G,KAAA,CAAK2E,KAAK,CAAC,IAAG1D,QAAQ,EAAA6F,SAAA;YAC7D9G,KAAA,CAAK0E,aAAa,CAACsC,gBAAgB,CAAChH,KAAA,CAAK2E,KAAK,CAAC,IAAG7D,OAAO,EAAAgG,SAAA;YAC3D,CAAE;;UAEF1E;UACG,CAAC;;MAEX;MACA,OAAO,IAAI;IACb,CAAC,CAAApC,KAAA;;IAEOoG,aAAa,GAAG,UAACa,CAAmC,EAAK;MAC/D,IAAIjH,KAAA,CAAKgB,KAAK,CAACC,QAAQ,EAAE;QACvB;MACF;;MAEA,IAAIjB,KAAA,CAAKgB,KAAK,CAACmF,SAAS,EAAE;QACxBnG,KAAA,CAAKgB,KAAK,CAACmF,SAAS,CAACc,CAA0C,CAAC;MAClE;IACF,CAAC,CAAAjH,KAAA;;IAEOkH,oBAAoB,GAA0B,UAACD,CAAC,EAAK,KAAAE,qBAAA;MAC3DnH,KAAA,CAAKyB,QAAQ,GAAG,IAAI;MACpB,CAAA0F,qBAAA,GAAAnH,KAAA,CAAKoH,YAAY,CAACC,QAAQ,aAA1BF,qBAAA,CAA4BG,eAAe,CAACC,SAAS,CAACC,GAAG,CAACxH,KAAA,CAAKyE,MAAM,CAACgD,cAAc,CAAC,CAAC,CAAC;;MAEvF,IAAIzH,KAAA,CAAKgB,KAAK,CAACgC,gBAAgB,EAAE;QAC/BhD,KAAA,CAAKgB,KAAK,CAACgC,gBAAgB,CAACiE,CAAC,CAAC;MAChC;IACF,CAAC,CAAAjH,KAAA;;IAEO0H,kBAAkB,GAA0B,UAACT,CAAC,EAAK,KAAAU,sBAAA;MACzD;MACAC,UAAU,CAAC,YAAM;QACf5H,KAAA,CAAKyB,QAAQ,GAAG,KAAK;;QAErB,IAAIzB,KAAA,CAAKgB,KAAK,CAACiC,cAAc,EAAE;UAC7BjD,KAAA,CAAKgB,KAAK,CAACiC,cAAc,CAACgE,CAAC,CAAC;QAC9B;MACF,CAAC,EAAE,CAAC,CAAC;;MAEL,CAAAU,sBAAA,GAAA3H,KAAA,CAAKoH,YAAY,CAACC,QAAQ,aAA1BM,sBAAA,CAA4BL,eAAe,CAACC,SAAS,CAACM,MAAM,CAAC7H,KAAA,CAAKyE,MAAM,CAACgD,cAAc,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAAzH,KAAA;;IAEO2F,WAAW,GAAG,UAACsB,CAAgC,EAAK;MAC1D,IAAI5I,QAAQ,EAAE,KAAAyJ,UAAA;QACZ,CAAAA,UAAA,GAAA9H,KAAA,CAAKwB,IAAI,aAATsG,UAAA,CAAWC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC;MACpD;;MAEA,IAAI/H,KAAA,CAAKgB,KAAK,CAACC,QAAQ,EAAE;QACvB;MACF;;MAEA;MACA;MACA,IAAIjD,KAAK,CAACgK,OAAO,CAACC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QACpChK,QAAQ,CAACiK,SAAS,CAAC,oBAAMlI,KAAA,CAAKmI,QAAQ,CAAC,EAAErH,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,GAAC;MAC5D,CAAC,MAAM;QACLd,KAAA,CAAKmI,QAAQ,CAAC,EAAErH,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;MAClC;;MAEA,IAAId,KAAA,CAAKgB,KAAK,CAAC8C,OAAO,EAAE;QACtB9D,KAAA,CAAKgB,KAAK,CAAC8C,OAAO,CAACmD,CAAC,CAAC;MACvB;IACF,CAAC,CAAAjH,KAAA;;IAEOuF,UAAU,GAAG,YAAM;MACzBvF,KAAA,CAAK0B,2BAA2B,CAAC0G,MAAM,CAAC,CAAC;MACzC,IAAI/J,QAAQ,EAAE,KAAAgK,WAAA;QACZ,CAAAA,WAAA,GAAArI,KAAA,CAAKwB,IAAI,aAAT6G,WAAA,CAAWC,eAAe,CAAC,iBAAiB,CAAC;MAC/C;MACAhK,mBAAmB,CAAC0B,KAAA,CAAKoH,YAAY,CAAC;MACtCpH,KAAA,CAAKmI,QAAQ,CAAC,EAAErH,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACnC,CAAC,CAAAd,KAAA;;IAEOiG,UAAU,GAAG,UAACgB,CAAgC,EAAK;MACzDjH,KAAA,CAAK0B,2BAA2B,CAAC0G,MAAM,CAAC,CAAC;MACzC,IAAI/J,QAAQ,EAAE,KAAAkK,WAAA;QACZ,CAAAA,WAAA,GAAAvI,KAAA,CAAKwB,IAAI,aAAT+G,WAAA,CAAWD,eAAe,CAAC,iBAAiB,CAAC;MAC/C;;MAEA,IAAItI,KAAA,CAAKgB,KAAK,CAACC,QAAQ,EAAE;QACvBgG,CAAC,CAACjD,eAAe,CAAC,CAAC;QACnB;MACF;;MAEA1F,mBAAmB,CAAC0B,KAAA,CAAKoH,YAAY,CAAC;MACtCpH,KAAA,CAAKmI,QAAQ,CAAC,EAAErH,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;;MAEjCd,KAAA,CAAKgB,KAAK,CAACgF,MAAM,YAAjBhG,KAAA,CAAKgB,KAAK,CAACgF,MAAM,CAAGiB,CAAC,CAAC;IACxB,CAAC,CAAAjH,KAAA;;IAEO6F,WAAW,GAAG,YAAM;MAC1B7F,KAAA,CAAKmI,QAAQ,CAAC,EAAE5G,gBAAgB,EAAEvB,KAAA,CAAKY,mBAAmB,CAAC,EAAEE,OAAO,EAAEd,KAAA,CAAKsB,KAAK,CAACR,OAAO,EAAEC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/G,CAAC,CAAAf,KAAA;;IAEO+F,aAAa,GAAG,YAAM;MAC5B/F,KAAA,CAAKmI,QAAQ,CAAC,EAAE5G,gBAAgB,EAAEvB,KAAA,CAAKY,mBAAmB,CAAC,EAAEE,OAAO,EAAEd,KAAA,CAAKsB,KAAK,CAACR,OAAO,EAAEC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChH,CAAC,CAAAf,KAAA;;IAEOkC,QAAQ,GAAG,UAACsG,EAAsB,EAAK;MAC7C,IAAIxI,KAAA,CAAKgB,KAAK,CAACkB,QAAQ,EAAE;QACvBlC,KAAA,CAAKgB,KAAK,CAACkB,QAAQ,CAACsG,EAAE,CAAC;MACzB;MACAxI,KAAA,CAAKwB,IAAI,GAAGgH,EAAE;IAChB,CAAC,CAAAxI,KAAA;;IAEO4E,gBAAgB,GAAG,YAAM,KAAA6D,SAAA,EAAAC,SAAA,EAAAC,SAAA;MAC/B,QAAQ3I,KAAA,CAAK6D,IAAI;QACf,KAAK,OAAO;UACV,OAAO7D,KAAA,CAAKwE,EAAE,EAAAiE,SAAA,OAAAA,SAAA;UACXzI,KAAA,CAAK0E,aAAa,CAACkE,SAAS,CAAC5I,KAAA,CAAK2E,KAAK,CAAC,IAAG,IAAI,EAAA8D,SAAA;UACjD,CAAC;QACJ,KAAK,QAAQ;UACX,OAAOzI,KAAA,CAAKwE,EAAE,EAAAkE,SAAA,OAAAA,SAAA;UACX1I,KAAA,CAAK0E,aAAa,CAACmE,UAAU,CAAC7I,KAAA,CAAK2E,KAAK,CAAC,IAAG,IAAI,EAAA+D,SAAA;UAClD,CAAC;QACJ,KAAK,OAAO;QACZ;UACE,OAAO1I,KAAA,CAAKwE,EAAE,EAAAmE,SAAA,OAAAA,SAAA;UACX3I,KAAA,CAAK0E,aAAa,CAACoE,SAAS,CAAC9I,KAAA,CAAK2E,KAAK,CAAC,IAAG,IAAI,EAAAgE,SAAA;UACjD,CAAC;MACN;IACF,CAAC,QAAA3I,KAAA,EAAA+I,cAAA,CAAAnJ,aAAA,EAAAG,gBAAA,MAAAiJ,MAAA,GAAApJ,aAAA,CAAAqJ,SAAA,EArTD;AACF;AACA,KAFED,MAAA,CAGOnE,KAAK,GAAZ,SAAAA,MAAA,EAAe,CACb,IAAI,IAAI,CAACrD,IAAI,EAAE,CACb,IAAI,CAACA,IAAI,CAACqD,KAAK,CAAC,CAAC,CACnB,CACF,CAAC,CAED;AACF;AACA,KAFE,CAAAmE,MAAA,CAGOE,IAAI,GAAX,SAAAA,KAAA,EAAc,CACZ,IAAI,IAAI,CAAC1H,IAAI,EAAE,CACb,IAAI,CAACA,IAAI,CAAC0H,IAAI,CAAC,CAAC,CAClB,CACF,CAAC,CAED;AACF;AACA,KAFE,CAAAF,MAAA,CAGO3J,KAAK,GAAZ,SAAAA,MAAA,EAAe,CACb,IAAI,IAAI,CAAC2B,KAAK,CAACC,QAAQ,EAAE,CACvB,OACF,CACA5B,MAAK,CAAC,EACJmJ,EAAE,EAAE,IAAI,CAAChH,IAAI,EACb2H,UAAU,EAAE,IAAI,CAACxE,KAAK,CAACyE,eAAe,CACxC,CAAC,CAAC,CACJ,CAAC,CAAAJ,MAAA,CAEMK,OAAO,GAAd,SAAAA,QAAA,EAAqC,CACnC,OAAO,IAAI,CAAC7H,IAAI,CAClB,CAAC,CAAAwH,MAAA,CAaMM,iBAAiB,GAAxB,SAAAA,kBAAA,EAA2B,CACzB,IAAI,IAAI,CAAC9H,IAAI,EAAE,CACbpD,SAAS,CAACmL,MAAM,CAAC,IAAI,CAAC/H,IAAI,CAAC,CAACwB,gBAAgB,CAAC,IAAI,CAACkE,oBAAoB,CAAC,CAACjE,cAAc,CAAC,IAAI,CAACyE,kBAAkB,CAAC,CACjH,CACF,CAAC,CAAAsB,MAAA,CAEMQ,oBAAoB,GAA3B,SAAAA,qBAAA,EAA8B,CAC5BpL,SAAS,CAACqL,IAAI,CAAC,IAAI,CAACjI,IAAI,CAAC,CAC3B,CAAC,CAAAwH,MAAA,CAEMU,MAAM,GAAb,SAAAA,OAAA,EAAgB,KAAAC,MAAA,QACd,IAAI,CAACjF,aAAa,GAAG/F,gBAAgB,CAAC,IAAI,CAACiL,OAAO,CAAC,CACnD,IAAI,CAACnF,MAAM,GAAG/F,SAAS,CAAC,IAAI,CAACkL,OAAO,CAAC,CAErC,oBACE5L,KAAA,CAAA2F,aAAA,CAAC/E,YAAY,CAACiL,QAAQ,QACnB,UAAClF,KAAK,EAAK,CACVgF,MAAI,CAAChF,KAAK,GAAGA,KAAK,CAClB,oBACE3G,KAAA,CAAA2F,aAAA,CAAC9E,aAAa,EAAA2G,QAAA,GAACsE,WAAW,EAAEH,MAAI,CAACI,WAAY,IAAKJ,MAAI,CAACjJ,QAAQ,CAAC,CAAC,GAC9DiJ,MAAI,CAAC7H,UACO,CAAC,CAEpB,CACqB,CAAC,CAE5B,CAAC,QAAAlC,aAAA,GAlHgC5B,KAAK,CAACgM,SAAS,GAAAlK,cAAA,CAClCmK,mBAAmB,GAAG,eAAe,EAAAnK,cAAA,CACrCoK,WAAW,GAAG,eAAe,EAAApK,cAAA,CAE7Ba,YAAY,GAAiB,EACzCO,aAAa,EAAE,OAAO,CACxB,CAAC,EAAApB,cAAA,MAAAD,MAAA,KAAAA,MAAA,KAAAA,MAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","ReactDOM","debounce","isNonNullable","MouseDrag","isMobile","removeAllSelections","selectNodeContents","calculateClearCrossShowedState","InputDataTids","getStyles","getJsInputStyles","ThemeContext","CommonWrapper","rootNode","createPropsGetter","InputLayoutAside","InputLayoutContext","InputLayoutContextDefault","FocusControlWrapper","ClearCrossIcon","blink","withSize","withRenderEnvironment","InputLikeTextDataTids","root","input","nativeInput","InputLikeText","_class","_InputLikeText","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","getClearCrossShowed","_ref","focused","hovered","props","disabled","showClearIcon","notEmptyValue","Boolean","children","state","clearCrossShowed","node","dragging","selectNodeContentsDebounced","selectInnerNode","start","end","renderMain","_this$cx","_this$cx2","_this$cx3","innerRef","tabIndex","placeholder","align","borderless","width","error","warning","onValueChange","prefix","suffix","leftIcon","rightIcon","value","onMouseDragStart","onMouseDragEnd","takeContentWidth","ariaDescribedby","ariaLabel","ariaLabelledby","onClearCrossClick","rest","_objectWithoutPropertiesLoose","_excluded","getRightIcon","createElement","clearCross","size","onFocus","event","stopPropagation","onClick","leftSide","icon","text","side","rightSide","className","cx","styles","jsInputStyles","theme","getSizeClassName","focus","hovering","hideBlinkingCursor","wrapperClass","wrapper","userSelectContain","context","Object","assign","onBlurWhenDisabled","resetFocus","_extends","style","textAlign","handleFocus","onMouseEnter","handleHover","onMouseLeave","handleUnhover","onBlur","handleBlur","ref","onKeyDown","handleKeyDown","role","Provider","type","absolute","inputFocus","inputDisabled","renderPlaceholder","_this$props","hasValue","_this$cx4","placeholderDisabled","placeholderFocus","e","handleMouseDragStart","_this$globalObject$do","globalObject","document","documentElement","classList","add","userSelectNone","handleMouseDragEnd","_this$globalObject$do2","setTimeout","remove","_this$node","setAttribute","version","search","flushSync","setState","cancel","_this$node2","removeAttribute","_this$node3","el","_this$cx5","_this$cx6","_this$cx7","sizeLarge","sizeMedium","sizeSmall","_inheritsLoose","_proto","prototype","blur","blinkColor","inputBlinkColor","getNode","componentDidMount","listen","componentWillUnmount","stop","render","_this2","emotion","Consumer","rootNodeRef","setRootNode","Component","__KONTUR_REACT_UI__","displayName"],"sources":["InputLikeText.tsx"],"sourcesContent":["import React, { type JSX } from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash.debounce';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport { isNonNullable } from '../../lib/utils';\nimport type { MouseDragEventHandler } from '../../lib/events/MouseDrag';\nimport { MouseDrag } from '../../lib/events/MouseDrag';\nimport { isMobile } from '../../lib/client';\nimport { removeAllSelections, selectNodeContents } from '../../lib/dom/selectionHelpers';\nimport type { InputProps, InputState } from '../../components/Input';\nimport { calculateClearCrossShowedState, InputDataTids } from '../../components/Input';\nimport { getStyles as getJsInputStyles } from '../../components/Input/Input.styles';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps, CommonWrapperRestProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { InputLayoutAside } from '../../components/Input/InputLayout/InputLayoutAside';\nimport { InputLayoutContext, InputLayoutContextDefault } from '../../components/Input/InputLayout/InputLayoutContext';\nimport { FocusControlWrapper } from '../FocusControlWrapper';\nimport { ClearCrossIcon } from '../ClearCrossIcon/ClearCrossIcon';\nimport { blink } from '../../lib/blink';\nimport { withSize } from '../../lib/size/SizeDecorator';\nimport type { SizeProp } from '../../lib/types/props';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { getStyles } 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 onClearCrossClick?: () => void;\n}\n\nexport type InputLikeTextState = Omit<InputState, 'needsPolyfillPlaceholder' | 'hovered'>;\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, 'showClearIcon'>>;\n\n@withRenderEnvironment\n@withSize\n@rootNode\nexport class InputLikeText extends React.Component<InputLikeTextProps, InputLikeTextState> {\n public static __KONTUR_REACT_UI__ = 'InputLikeText';\n public static displayName = 'InputLikeText';\n\n public static defaultProps: DefaultProps = {\n showClearIcon: 'never',\n };\n\n private getProps = createPropsGetter(InputLikeText.defaultProps);\n\n private getClearCrossShowed = ({ focused, hovered }: { focused?: boolean; hovered?: boolean }): boolean => {\n if (this.props.disabled) {\n return false;\n }\n return calculateClearCrossShowedState({\n showClearIcon: this.getProps().showClearIcon,\n notEmptyValue: Boolean(this.props.children),\n focused,\n hovered,\n });\n };\n\n public state = {\n focused: false,\n clearCrossShowed: this.getClearCrossShowed({\n focused: false,\n }),\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private jsInputStyles!: ReturnType<typeof getJsInputStyles>;\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private size!: SizeProp;\n private node: HTMLElement | null = null;\n private dragging = false;\n\n public getRootNode!: TGetRootNode;\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 blink({\n el: this.node,\n blinkColor: this.theme.inputBlinkColor,\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\n this.selectNodeContentsDebounced(node, start, end);\n };\n\n public componentDidMount() {\n if (this.node) {\n MouseDrag.listen(this.node).onMouseDragStart(this.handleMouseDragStart).onMouseDragEnd(this.handleMouseDragEnd);\n }\n }\n\n public componentWillUnmount() {\n MouseDrag.stop(this.node);\n }\n\n public render() {\n this.jsInputStyles = getJsInputStyles(this.emotion);\n this.styles = getStyles(this.emotion);\n\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 private renderMain = (props: CommonWrapperRestProps<InputLikeTextProps>) => {\n const {\n innerRef,\n tabIndex,\n placeholder,\n align,\n borderless,\n width,\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 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n showClearIcon,\n onClearCrossClick,\n ...rest\n } = props;\n\n const { focused } = this.state;\n const getRightIcon = () => {\n return this.state.clearCrossShowed ? (\n <ClearCrossIcon\n data-tid={InputDataTids.clearCross}\n size={this.size}\n onFocus={(event) => event.stopPropagation()}\n onClick={onClearCrossClick}\n />\n ) : (\n rightIcon\n );\n };\n const leftSide = <InputLayoutAside icon={leftIcon} text={prefix} side=\"left\" />;\n const rightSide = <InputLayoutAside icon={getRightIcon()} text={suffix} side=\"right\" />;\n\n const className = this.cx(this.styles.root(), this.jsInputStyles.root(this.theme), this.getSizeClassName(), {\n [this.jsInputStyles.disabled(this.theme)]: !!disabled,\n [this.jsInputStyles.borderless()]: !!borderless,\n [this.jsInputStyles.focus(this.theme)]: focused,\n [this.jsInputStyles.hovering(this.theme)]: !focused && !disabled && !warning && !error && !borderless,\n [this.jsInputStyles.warning(this.theme)]: !!warning,\n [this.jsInputStyles.error(this.theme)]: !!error,\n [this.jsInputStyles.hideBlinkingCursor()]: isMobile,\n });\n\n const wrapperClass = this.cx(this.jsInputStyles.wrapper(), {\n [this.styles.userSelectContain()]: focused,\n });\n const size = this.size;\n const context = InputLayoutContextDefault;\n Object.assign(context, { disabled, focused, size });\n\n return (\n <FocusControlWrapper disabled={disabled} onBlurWhenDisabled={this.resetFocus}>\n <span\n data-tid={InputLikeTextDataTids.root}\n {...rest}\n className={className}\n style={{ width, textAlign: align }}\n tabIndex={disabled ? -1 : 0}\n onFocus={this.handleFocus}\n onMouseEnter={this.handleHover}\n onMouseLeave={this.handleUnhover}\n onBlur={this.handleBlur}\n ref={this.innerRef}\n onKeyDown={this.handleKeyDown}\n role=\"textbox\"\n aria-disabled={disabled}\n aria-describedby={ariaDescribedby}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n >\n <InputLayoutContext.Provider value={context}>\n <input type=\"hidden\" data-tid={InputLikeTextDataTids.nativeInput} value={value} disabled={disabled} />\n {leftSide}\n <span className={wrapperClass}>\n <span\n data-tid={InputLikeTextDataTids.input}\n className={this.cx(this.jsInputStyles.input(this.theme), {\n [this.styles.absolute()]: !takeContentWidth,\n [this.jsInputStyles.inputFocus(this.theme)]: focused,\n [this.jsInputStyles.inputDisabled(this.theme)]: disabled,\n })}\n >\n {this.props.children}\n </span>\n {this.renderPlaceholder()}\n </span>\n {rightSide}\n </InputLayoutContext.Provider>\n </span>\n </FocusControlWrapper>\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={this.cx(this.jsInputStyles.placeholder(this.theme), {\n [this.jsInputStyles.placeholderDisabled(this.theme)]: disabled,\n [this.jsInputStyles.placeholderFocus(this.theme)]: focused,\n })}\n >\n {placeholder}\n </span>\n );\n }\n return null;\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.props.disabled) {\n return;\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 this.globalObject.document?.documentElement.classList.add(this.styles.userSelectNone());\n\n if (this.props.onMouseDragStart) {\n this.props.onMouseDragStart(e);\n }\n };\n\n private handleMouseDragEnd: MouseDragEventHandler = (e) => {\n // Дожидаемся onMouseUp\n setTimeout(() => {\n this.dragging = false;\n\n if (this.props.onMouseDragEnd) {\n this.props.onMouseDragEnd(e);\n }\n }, 0);\n\n this.globalObject.document?.documentElement.classList.remove(this.styles.userSelectNone());\n };\n\n private handleFocus = (e: React.FocusEvent<HTMLElement>) => {\n if (isMobile) {\n this.node?.setAttribute('contenteditable', 'true');\n }\n\n if (this.props.disabled) {\n return;\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 resetFocus = () => {\n this.selectNodeContentsDebounced.cancel();\n if (isMobile) {\n this.node?.removeAttribute('contenteditable');\n }\n removeAllSelections(this.globalObject);\n this.setState({ focused: false });\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n this.selectNodeContentsDebounced.cancel();\n if (isMobile) {\n this.node?.removeAttribute('contenteditable');\n }\n\n if (this.props.disabled) {\n e.stopPropagation();\n return;\n }\n\n removeAllSelections(this.globalObject);\n this.setState({ focused: false });\n\n this.props.onBlur?.(e);\n };\n\n private handleHover = () => {\n this.setState({ clearCrossShowed: this.getClearCrossShowed({ focused: this.state.focused, hovered: true }) });\n };\n\n private handleUnhover = () => {\n this.setState({ clearCrossShowed: this.getClearCrossShowed({ focused: this.state.focused, hovered: false }) });\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 getSizeClassName = () => {\n switch (this.size) {\n case 'large':\n return this.cx({\n [this.jsInputStyles.sizeLarge(this.theme)]: true,\n });\n case 'medium':\n return this.cx({\n [this.jsInputStyles.sizeMedium(this.theme)]: true,\n });\n case 'small':\n default:\n return this.cx({\n [this.jsInputStyles.sizeSmall(this.theme)]: true,\n });\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { type JSX } from 'react';
|
|
2
2
|
import type { MouseDragEventHandler } from '../../lib/events/MouseDrag';
|
|
3
3
|
import type { InputProps, InputState } from '../../components/Input';
|
|
4
4
|
import type { CommonProps } from '../CommonWrapper';
|
|
@@ -58,7 +58,7 @@ export declare class InputLikeText extends React.Component<InputLikeTextProps, I
|
|
|
58
58
|
selectInnerNode: (node: HTMLElement | null, start?: number, end?: number) => void;
|
|
59
59
|
componentDidMount(): void;
|
|
60
60
|
componentWillUnmount(): void;
|
|
61
|
-
render():
|
|
61
|
+
render(): JSX.Element;
|
|
62
62
|
private renderMain;
|
|
63
63
|
private renderPlaceholder;
|
|
64
64
|
private handleKeyDown;
|
|
@@ -51,7 +51,7 @@ export var Menu = withRenderEnvironment(_class = responsiveLayout(_class = rootN
|
|
|
51
51
|
React.createElement("div", {
|
|
52
52
|
className: _this.cx((_this$cx = {}, _this$cx[_this.styles.wrapper()] = true, _this$cx[_this.styles.headerWrapper()] = true, _this$cx)),
|
|
53
53
|
ref: function ref(el) {
|
|
54
|
-
|
|
54
|
+
_this.header = el;
|
|
55
55
|
}
|
|
56
56
|
}, /*#__PURE__*/
|
|
57
57
|
|
|
@@ -69,7 +69,7 @@ export var Menu = withRenderEnvironment(_class = responsiveLayout(_class = rootN
|
|
|
69
69
|
React.createElement("div", {
|
|
70
70
|
className: _this.cx((_this$cx2 = {}, _this$cx2[_this.styles.wrapper()] = true, _this$cx2[_this.styles.footerWrapper()] = true, _this$cx2)),
|
|
71
71
|
ref: function ref(el) {
|
|
72
|
-
|
|
72
|
+
_this.footer = el;
|
|
73
73
|
}
|
|
74
74
|
}, /*#__PURE__*/
|
|
75
75
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","isBrowser","isKeyArrowDown","isKeyArrowUp","isKeyEnter","MenuSeparator","ThemeFactory","getDOMRect","responsiveLayout","isNonNullable","ScrollContainer","MenuItemDataTids","ThemeContext","getRootNode","rootNode","createPropsGetter","isInstanceOf","CommonWrapper","withRenderEnvironment","getStyles","MenuNavigation","MenuContext","MenuDataTids","root","Menu","_class","_Menu","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","maxHeight","scrollState","enableIconPadding","unmounted","contentRef","createRef","menuNavigation","content","focusOnRootElement","globalObject","HTMLElement","focus","renderHeader","_this$cx","createElement","className","cx","styles","wrapper","headerWrapper","ref","el","header","contentWrapper","props","menuSeparatorWrapper","theme","renderMenuSeparatorWithNoMargin","renderFooter","_this$cx2","footerWrapper","footer","Provider","value","create","menuSeparatorMarginY","setInitialSelection","i","initialSelectedItemIndex","down","shouldRecalculateMaxHeight","prevProps","_this$props","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","Children","count","calculateMaxHeight","parsedMaxHeight","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","height","setState","refScrollContainer","scrollContainer","scrollToSelected","highlightedItem","scrollTo","scrollToTop","scrollToBottom","scroll","nextIndex","items","handleKeyDown","event","onKeyDown","defaultPrevented","preventDefault","up","select","getStyle","align","maxWidth","width","minWidth","handleScrollStateChange","setEnableIconPadding","isIconPaddingEnabled","preventIconsOffset","_inheritsLoose","_proto","prototype","componentWillUnmount","componentDidMount","componentDidUpdate","render","_this2","emotion","Consumer","renderMain","move","enter","_this$menuNavigation$","navigate","reset","hasHighlightedItem","highlightItem","index","highlightByIndex","_this$cx3","_this$cx4","isEmpty","_this$getProps","hasMargin","preventWindowScroll","offsetY","top","scrollContainerScrollBarOffsetY","right","bottom","isMobile","isMobileLayout","_extends","rootNodeRef","setRootNode","getAlignRightClass","mobileRoot","shadow","style","id","tabIndex","onScrollStateChangeY","disabled","disableScrollContainer","scrollContainerMobile","navigation","onItemClick","step","cyclicSelection","childrenToArray","filter","PureComponent","__KONTUR_REACT_UI__","displayName","ret","forEach","child","push","alignRight"],"sources":["Menu.tsx"],"sourcesContent":["import type { CSSProperties, HTMLAttributes } from 'react';\nimport React from 'react';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport { isBrowser } from '../../lib/globalObject';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { MenuSeparator } from '../../components/MenuSeparator';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { isNonNullable } from '../../lib/utils';\nimport type { ScrollContainerScrollStateY } from '../../components/ScrollContainer';\nimport { ScrollContainer } from '../../components/ScrollContainer';\nimport type { MenuItem } from '../../components/MenuItem';\nimport { MenuItemDataTids } from '../../components/MenuItem';\nimport type { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { getStyles } from './Menu.styles';\nimport { MenuNavigation } from './MenuNavigation';\nimport { MenuContext } from './MenuContext';\n\nexport interface MenuProps extends CommonProps, Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n children: React.ReactNode;\n hasMargin?: 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 disableScrollContainer?: boolean;\n align?: 'left' | 'right';\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 */\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\nexport interface MenuState {\n maxHeight: number | string;\n scrollState: ScrollContainerScrollStateY;\n enableIconPadding: boolean;\n}\n\nexport const MenuDataTids = {\n root: 'Menu__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n MenuProps,\n | 'align'\n | 'width'\n | 'hasMargin'\n | 'maxHeight'\n | 'preventWindowScroll'\n | 'cyclicSelection'\n | 'initialSelectedItemIndex'\n >\n>;\n\n@withRenderEnvironment\n@responsiveLayout\n@rootNode\nexport class Menu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n public static displayName = 'Menu';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasMargin: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n private getProps = createPropsGetter(Menu.defaultProps);\n\n public state: MenuState = {\n maxHeight: this.getProps().maxHeight || 'none',\n scrollState: 'top',\n enableIconPadding: false,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private isMobileLayout!: boolean;\n private unmounted = false;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n private contentRef = React.createRef<HTMLDivElement>();\n private menuNavigation: MenuNavigation<MenuItem> = new MenuNavigation(this.contentRef, MenuItemDataTids.content);\n\n public componentWillUnmount() {\n this.unmounted = true;\n }\n\n public componentDidMount() {\n this.setInitialSelection();\n this.calculateMaxHeight();\n this.unmounted = false;\n }\n\n public componentDidUpdate(prevProps: MenuProps) {\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 private focusOnRootElement = (): void => {\n const rootNode = getRootNode(this);\n if (isInstanceOf(rootNode, this.globalObject.HTMLElement)) {\n rootNode?.focus();\n }\n };\n\n public render() {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public up() {\n this.move(-1);\n }\n\n /**\n * @public\n */\n public down() {\n this.move(1);\n }\n\n /**\n * @public\n */\n public enter(event: React.SyntheticEvent<HTMLElement>) {\n this.menuNavigation.highlightedItem?.navigate();\n return this.menuNavigation.select(event);\n }\n\n /**\n * @public\n */\n public reset() {\n this.menuNavigation.reset();\n }\n\n /**\n * @public\n */\n public hasHighlightedItem() {\n return !!this.menuNavigation.highlightedItem;\n }\n\n public highlightItem(index: number) {\n this.menuNavigation.highlightByIndex(index);\n }\n\n private renderMain() {\n if (this.isEmpty()) {\n return null;\n }\n const { hasMargin, maxHeight, preventWindowScroll } = this.getProps();\n\n const offsetY = {\n top: `${this.theme.scrollContainerScrollBarOffsetY}`,\n right: 0,\n bottom: `${this.theme.scrollContainerScrollBarOffsetY}`,\n };\n\n const isMobile = this.isMobileLayout;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={MenuDataTids.root}\n className={this.cx(getAlignRightClass(this.props, this.cx, this.styles), {\n [this.styles.root(this.theme)]: true,\n [this.styles.hasMargin(this.theme)]: hasMargin,\n [this.styles.mobileRoot(this.theme)]: isMobile,\n [this.styles.shadow(this.theme)]: !isMobile,\n })}\n style={this.getStyle(this.props)}\n id={this.props.id}\n onKeyDown={this.handleKeyDown}\n tabIndex={0}\n >\n {this.props.header && this.renderHeader()}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n onScrollStateChangeY={this.handleScrollStateChange}\n disabled={this.props.disableScrollContainer}\n offsetY={offsetY}\n >\n <div\n className={this.cx({\n [this.styles.scrollContainer(this.theme)]: true,\n [this.styles.scrollContainerMobile(this.theme)]: isMobile,\n })}\n ref={this.contentRef}\n >\n <MenuContext.Provider\n value={{\n navigation: this.menuNavigation,\n onItemClick: this.props.onItemClick,\n enableIconPadding: this.state.enableIconPadding,\n setEnableIconPadding: this.setEnableIconPadding,\n }}\n >\n {this.props.children}\n </MenuContext.Provider>\n </div>\n </ScrollContainer>\n {this.props.footer && this.renderFooter()}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n className={this.cx({\n [this.styles.wrapper()]: true,\n [this.styles.headerWrapper()]: true,\n })}\n ref={(el) => (this.header = el)}\n >\n <div className={this.styles.contentWrapper()}>{this.props.header}</div>\n <div className={this.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={this.cx({\n [this.styles.wrapper()]: true,\n [this.styles.footerWrapper()]: true,\n })}\n ref={(el) => (this.footer = el)}\n >\n <div className={this.styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'bottom' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n <div className={this.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 setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.down();\n }\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): 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' && isBrowser(this.globalObject) && rootNode) {\n const rootElementMaxHeight = this.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 refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private scrollToSelected = () => {\n const highlightedItem = this.menuNavigation.highlightedItem;\n if (this.scrollContainer && highlightedItem) {\n const rootNode = getRootNode(highlightedItem);\n // TODO: Remove this check once IF-647 is resolved\n if (isInstanceOf(rootNode, this.globalObject.HTMLElement)) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private scrollToTop = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToTop();\n }\n };\n\n private scrollToBottom = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToBottom();\n }\n };\n\n private scroll = (nextIndex: number) => {\n switch (nextIndex) {\n case 0:\n this.scrollToTop?.();\n break;\n case this.menuNavigation.items.length - 1:\n this.scrollToBottom?.();\n break;\n default:\n this.scrollToSelected?.();\n }\n };\n\n private move(step: number) {\n if (this.unmounted) {\n // NOTE workaround, because `ComboBox` call `process.nextTick` in reducer\n return;\n }\n const nextIndex = this.menuNavigation.move(step, this.getProps().cyclicSelection);\n this.scroll(nextIndex);\n }\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(event)) {\n event.preventDefault();\n this.up();\n } else if (isKeyArrowDown(event)) {\n event.preventDefault();\n this.down();\n } else if (isKeyEnter(event)) {\n this.menuNavigation.select(event);\n }\n };\n\n private getStyle = (props: MenuProps): CSSProperties => {\n if (props.align === 'right') {\n return {\n maxWidth: props.width,\n minWidth: props.width,\n maxHeight: this.state.maxHeight,\n };\n }\n\n return {\n width: props.width,\n maxHeight: this.state.maxHeight,\n };\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollStateY) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n\n private setEnableIconPadding = (isIconPaddingEnabled: boolean) => {\n !this.getProps().preventIconsOffset && this.setState({ enableIconPadding: isIconPaddingEnabled });\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\nconst getAlignRightClass = (props: MenuProps, cx: Emotion['cx'], styles: ReturnType<typeof getStyles>) => {\n if (props.align === 'right') {\n return cx(styles.alignRight());\n }\n\n return null;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","isBrowser","isKeyArrowDown","isKeyArrowUp","isKeyEnter","MenuSeparator","ThemeFactory","getDOMRect","responsiveLayout","isNonNullable","ScrollContainer","MenuItemDataTids","ThemeContext","getRootNode","rootNode","createPropsGetter","isInstanceOf","CommonWrapper","withRenderEnvironment","getStyles","MenuNavigation","MenuContext","MenuDataTids","root","Menu","_class","_Menu","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","maxHeight","scrollState","enableIconPadding","unmounted","contentRef","createRef","menuNavigation","content","focusOnRootElement","globalObject","HTMLElement","focus","renderHeader","_this$cx","createElement","className","cx","styles","wrapper","headerWrapper","ref","el","header","contentWrapper","props","menuSeparatorWrapper","theme","renderMenuSeparatorWithNoMargin","renderFooter","_this$cx2","footerWrapper","footer","Provider","value","create","menuSeparatorMarginY","setInitialSelection","i","initialSelectedItemIndex","down","shouldRecalculateMaxHeight","prevProps","_this$props","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","Children","count","calculateMaxHeight","parsedMaxHeight","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","height","setState","refScrollContainer","scrollContainer","scrollToSelected","highlightedItem","scrollTo","scrollToTop","scrollToBottom","scroll","nextIndex","items","handleKeyDown","event","onKeyDown","defaultPrevented","preventDefault","up","select","getStyle","align","maxWidth","width","minWidth","handleScrollStateChange","setEnableIconPadding","isIconPaddingEnabled","preventIconsOffset","_inheritsLoose","_proto","prototype","componentWillUnmount","componentDidMount","componentDidUpdate","render","_this2","emotion","Consumer","renderMain","move","enter","_this$menuNavigation$","navigate","reset","hasHighlightedItem","highlightItem","index","highlightByIndex","_this$cx3","_this$cx4","isEmpty","_this$getProps","hasMargin","preventWindowScroll","offsetY","top","scrollContainerScrollBarOffsetY","right","bottom","isMobile","isMobileLayout","_extends","rootNodeRef","setRootNode","getAlignRightClass","mobileRoot","shadow","style","id","tabIndex","onScrollStateChangeY","disabled","disableScrollContainer","scrollContainerMobile","navigation","onItemClick","step","cyclicSelection","childrenToArray","filter","PureComponent","__KONTUR_REACT_UI__","displayName","ret","forEach","child","push","alignRight"],"sources":["Menu.tsx"],"sourcesContent":["import type { CSSProperties, HTMLAttributes } from 'react';\nimport React from 'react';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport { isBrowser } from '../../lib/globalObject';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { MenuSeparator } from '../../components/MenuSeparator';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { isNonNullable } from '../../lib/utils';\nimport type { ScrollContainerScrollStateY } from '../../components/ScrollContainer';\nimport { ScrollContainer } from '../../components/ScrollContainer';\nimport type { MenuItem } from '../../components/MenuItem';\nimport { MenuItemDataTids } from '../../components/MenuItem';\nimport type { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { getStyles } from './Menu.styles';\nimport { MenuNavigation } from './MenuNavigation';\nimport { MenuContext } from './MenuContext';\n\nexport interface MenuProps extends CommonProps, Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n children: React.ReactNode;\n hasMargin?: 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 disableScrollContainer?: boolean;\n align?: 'left' | 'right';\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 */\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\nexport interface MenuState {\n maxHeight: number | string;\n scrollState: ScrollContainerScrollStateY;\n enableIconPadding: boolean;\n}\n\nexport const MenuDataTids = {\n root: 'Menu__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n MenuProps,\n | 'align'\n | 'width'\n | 'hasMargin'\n | 'maxHeight'\n | 'preventWindowScroll'\n | 'cyclicSelection'\n | 'initialSelectedItemIndex'\n >\n>;\n\n@withRenderEnvironment\n@responsiveLayout\n@rootNode\nexport class Menu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n public static displayName = 'Menu';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasMargin: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n private getProps = createPropsGetter(Menu.defaultProps);\n\n public state: MenuState = {\n maxHeight: this.getProps().maxHeight || 'none',\n scrollState: 'top',\n enableIconPadding: false,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private isMobileLayout!: boolean;\n private unmounted = false;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n private contentRef = React.createRef<HTMLDivElement>();\n private menuNavigation: MenuNavigation<MenuItem> = new MenuNavigation(this.contentRef, MenuItemDataTids.content);\n\n public componentWillUnmount() {\n this.unmounted = true;\n }\n\n public componentDidMount() {\n this.setInitialSelection();\n this.calculateMaxHeight();\n this.unmounted = false;\n }\n\n public componentDidUpdate(prevProps: MenuProps) {\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 private focusOnRootElement = (): void => {\n const rootNode = getRootNode(this);\n if (isInstanceOf(rootNode, this.globalObject.HTMLElement)) {\n rootNode?.focus();\n }\n };\n\n public render() {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public up() {\n this.move(-1);\n }\n\n /**\n * @public\n */\n public down() {\n this.move(1);\n }\n\n /**\n * @public\n */\n public enter(event: React.SyntheticEvent<HTMLElement>) {\n this.menuNavigation.highlightedItem?.navigate();\n return this.menuNavigation.select(event);\n }\n\n /**\n * @public\n */\n public reset() {\n this.menuNavigation.reset();\n }\n\n /**\n * @public\n */\n public hasHighlightedItem() {\n return !!this.menuNavigation.highlightedItem;\n }\n\n public highlightItem(index: number) {\n this.menuNavigation.highlightByIndex(index);\n }\n\n private renderMain() {\n if (this.isEmpty()) {\n return null;\n }\n const { hasMargin, maxHeight, preventWindowScroll } = this.getProps();\n\n const offsetY = {\n top: `${this.theme.scrollContainerScrollBarOffsetY}`,\n right: 0,\n bottom: `${this.theme.scrollContainerScrollBarOffsetY}`,\n };\n\n const isMobile = this.isMobileLayout;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={MenuDataTids.root}\n className={this.cx(getAlignRightClass(this.props, this.cx, this.styles), {\n [this.styles.root(this.theme)]: true,\n [this.styles.hasMargin(this.theme)]: hasMargin,\n [this.styles.mobileRoot(this.theme)]: isMobile,\n [this.styles.shadow(this.theme)]: !isMobile,\n })}\n style={this.getStyle(this.props)}\n id={this.props.id}\n onKeyDown={this.handleKeyDown}\n tabIndex={0}\n >\n {this.props.header && this.renderHeader()}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n onScrollStateChangeY={this.handleScrollStateChange}\n disabled={this.props.disableScrollContainer}\n offsetY={offsetY}\n >\n <div\n className={this.cx({\n [this.styles.scrollContainer(this.theme)]: true,\n [this.styles.scrollContainerMobile(this.theme)]: isMobile,\n })}\n ref={this.contentRef}\n >\n <MenuContext.Provider\n value={{\n navigation: this.menuNavigation,\n onItemClick: this.props.onItemClick,\n enableIconPadding: this.state.enableIconPadding,\n setEnableIconPadding: this.setEnableIconPadding,\n }}\n >\n {this.props.children}\n </MenuContext.Provider>\n </div>\n </ScrollContainer>\n {this.props.footer && this.renderFooter()}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n className={this.cx({\n [this.styles.wrapper()]: true,\n [this.styles.headerWrapper()]: true,\n })}\n ref={(el) => {\n this.header = el;\n }}\n >\n <div className={this.styles.contentWrapper()}>{this.props.header}</div>\n <div className={this.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={this.cx({\n [this.styles.wrapper()]: true,\n [this.styles.footerWrapper()]: true,\n })}\n ref={(el) => {\n this.footer = el;\n }}\n >\n <div className={this.styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'bottom' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n <div className={this.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 setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.down();\n }\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): 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' && isBrowser(this.globalObject) && rootNode) {\n const rootElementMaxHeight = this.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 refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private scrollToSelected = () => {\n const highlightedItem = this.menuNavigation.highlightedItem;\n if (this.scrollContainer && highlightedItem) {\n const rootNode = getRootNode(highlightedItem);\n // TODO: Remove this check once IF-647 is resolved\n if (isInstanceOf(rootNode, this.globalObject.HTMLElement)) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private scrollToTop = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToTop();\n }\n };\n\n private scrollToBottom = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToBottom();\n }\n };\n\n private scroll = (nextIndex: number) => {\n switch (nextIndex) {\n case 0:\n this.scrollToTop?.();\n break;\n case this.menuNavigation.items.length - 1:\n this.scrollToBottom?.();\n break;\n default:\n this.scrollToSelected?.();\n }\n };\n\n private move(step: number) {\n if (this.unmounted) {\n // NOTE workaround, because `ComboBox` call `process.nextTick` in reducer\n return;\n }\n const nextIndex = this.menuNavigation.move(step, this.getProps().cyclicSelection);\n this.scroll(nextIndex);\n }\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(event)) {\n event.preventDefault();\n this.up();\n } else if (isKeyArrowDown(event)) {\n event.preventDefault();\n this.down();\n } else if (isKeyEnter(event)) {\n this.menuNavigation.select(event);\n }\n };\n\n private getStyle = (props: MenuProps): CSSProperties => {\n if (props.align === 'right') {\n return {\n maxWidth: props.width,\n minWidth: props.width,\n maxHeight: this.state.maxHeight,\n };\n }\n\n return {\n width: props.width,\n maxHeight: this.state.maxHeight,\n };\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollStateY) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n\n private setEnableIconPadding = (isIconPaddingEnabled: boolean) => {\n !this.getProps().preventIconsOffset && this.setState({ enableIconPadding: isIconPaddingEnabled });\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\nconst getAlignRightClass = (props: MenuProps, cx: Emotion['cx'], styles: ReturnType<typeof getStyles>) => {\n if (props.align === 'right') {\n return cx(styles.alignRight());\n }\n\n return null;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MenuNavigation","root","itemsContentDataTid","_this","tagsAndItems","WeakMap","highlightedItem","items","getEnabledItems","filter","item","isEnabled","_proto","prototype","update","_this$root","_this2","current","menuItems","Array","from","querySelectorAll","map","get","undefined","add","tag","_this$root2","set","push","remove","move","step","isCyclic","enabledItems","currentIndex","indexOf","minIndex","maxIndex","length","nextIndex","nextItem","highlight","_this3","forEach","_item","unhighlight","highlightByIndex","index","_this4","i","_this$highlightedItem","select","event","reset"],"sources":["MenuNavigation.tsx"],"sourcesContent":["import type { RefObject } from 'react';\nimport type React from 'react';\n\ninterface Highlightable {\n highlight(): void;\n unhighlight(): void;\n select(...args: unknown[]): void;\n isEnabled(): boolean;\n}\n\nexport class MenuNavigation<T extends Highlightable> {\n private readonly root: RefObject<HTMLDivElement> | null;\n private readonly itemsContentDataTid: string;\n private tagsAndItems: WeakMap<Element, T> = new WeakMap();\n\n public highlightedItem: T | null = null;\n public items: T[] = [];\n\n constructor(root: RefObject<HTMLDivElement> | null, itemsContentDataTid: string) {\n this.root = root;\n this.itemsContentDataTid = itemsContentDataTid;\n }\n\n private update() {\n if (this.root?.current) {\n const menuItems = Array.from(this.root.current.querySelectorAll(`span[data-tid=\"${this.itemsContentDataTid}\"]`));\n this.items = menuItems.map((item) => this.tagsAndItems.get(item)).filter((item): item is T => item !== undefined);\n }\n }\n\n public add(tag: Element, item: T) {\n this.tagsAndItems.set(tag, item);\n if (this.root?.current) {\n this.update();\n } else {\n this.items.push(item);\n }\n }\n\n public remove(tag: HTMLElement) {\n this.tagsAndItems.delete(tag);\n this.update();\n }\n\n public move(step: number, isCyclic: boolean) {\n const enabledItems = this.getEnabledItems();\n const currentIndex = this.highlightedItem ? enabledItems.indexOf(this.highlightedItem) : -1;\n const minIndex = 0;\n const maxIndex = enabledItems.length - 1;\n let nextIndex = currentIndex + step;\n if (nextIndex < minIndex) {\n nextIndex = isCyclic ? maxIndex : minIndex;\n }\n if (nextIndex > maxIndex) {\n nextIndex = isCyclic ? minIndex : maxIndex;\n }\n\n const nextItem = enabledItems[nextIndex];\n\n this.highlight(nextItem);\n\n return nextIndex;\n }\n\n public highlight(item: T | null) {\n const enabledItems = this.getEnabledItems();\n enabledItems.forEach((_item) => {\n if (item === _item) {\n _item.highlight();\n this.highlightedItem = item;\n } else {\n _item.unhighlight();\n }\n });\n }\n\n public highlightByIndex(index: number) {\n this.items.forEach((_item, i) => {\n if (index === i && _item.isEnabled()) {\n _item.highlight();\n this.highlightedItem = _item;\n } else {\n _item.unhighlight();\n }\n });\n }\n\n public unhighlight() {\n this.highlightedItem?.unhighlight();\n this.highlightedItem = null;\n }\n\n public select(event: React.SyntheticEvent<HTMLElement>) {\n if (this.highlightedItem) {\n this.highlightedItem.select(event);\n return true;\n }\n return false;\n }\n\n public reset() {\n this.highlight(null);\n this.highlightedItem = null;\n }\n\n private getEnabledItems = () => {\n return this.items.filter((item) => item.isEnabled());\n };\n}\n"],"mappings":";;;;;;;;;;AAUA,WAAaA,cAAc;;;;;;;;EAQzB,SAAAA,eAAYC,
|
|
1
|
+
{"version":3,"names":["MenuNavigation","root","itemsContentDataTid","_this","tagsAndItems","WeakMap","highlightedItem","items","getEnabledItems","filter","item","isEnabled","_proto","prototype","update","_this$root","_this2","current","menuItems","Array","from","querySelectorAll","map","get","undefined","add","tag","_this$root2","set","push","remove","move","step","isCyclic","enabledItems","currentIndex","indexOf","minIndex","maxIndex","length","nextIndex","nextItem","highlight","_this3","forEach","_item","unhighlight","highlightByIndex","index","_this4","i","_this$highlightedItem","select","event","reset"],"sources":["MenuNavigation.tsx"],"sourcesContent":["import type { RefObject } from 'react';\nimport type React from 'react';\n\ninterface Highlightable {\n highlight(): void;\n unhighlight(): void;\n select(...args: unknown[]): void;\n isEnabled(): boolean;\n}\n\nexport class MenuNavigation<T extends Highlightable> {\n private readonly root: RefObject<HTMLDivElement | null> | null;\n private readonly itemsContentDataTid: string;\n private tagsAndItems: WeakMap<Element, T> = new WeakMap();\n\n public highlightedItem: T | null = null;\n public items: T[] = [];\n\n constructor(root: RefObject<HTMLDivElement | null> | null, itemsContentDataTid: string) {\n this.root = root;\n this.itemsContentDataTid = itemsContentDataTid;\n }\n\n private update() {\n if (this.root?.current) {\n const menuItems = Array.from(this.root.current.querySelectorAll(`span[data-tid=\"${this.itemsContentDataTid}\"]`));\n this.items = menuItems.map((item) => this.tagsAndItems.get(item)).filter((item): item is T => item !== undefined);\n }\n }\n\n public add(tag: Element, item: T) {\n this.tagsAndItems.set(tag, item);\n if (this.root?.current) {\n this.update();\n } else {\n this.items.push(item);\n }\n }\n\n public remove(tag: HTMLElement) {\n this.tagsAndItems.delete(tag);\n this.update();\n }\n\n public move(step: number, isCyclic: boolean) {\n const enabledItems = this.getEnabledItems();\n const currentIndex = this.highlightedItem ? enabledItems.indexOf(this.highlightedItem) : -1;\n const minIndex = 0;\n const maxIndex = enabledItems.length - 1;\n let nextIndex = currentIndex + step;\n if (nextIndex < minIndex) {\n nextIndex = isCyclic ? maxIndex : minIndex;\n }\n if (nextIndex > maxIndex) {\n nextIndex = isCyclic ? minIndex : maxIndex;\n }\n\n const nextItem = enabledItems[nextIndex];\n\n this.highlight(nextItem);\n\n return nextIndex;\n }\n\n public highlight(item: T | null) {\n const enabledItems = this.getEnabledItems();\n enabledItems.forEach((_item) => {\n if (item === _item) {\n _item.highlight();\n this.highlightedItem = item;\n } else {\n _item.unhighlight();\n }\n });\n }\n\n public highlightByIndex(index: number) {\n this.items.forEach((_item, i) => {\n if (index === i && _item.isEnabled()) {\n _item.highlight();\n this.highlightedItem = _item;\n } else {\n _item.unhighlight();\n }\n });\n }\n\n public unhighlight() {\n this.highlightedItem?.unhighlight();\n this.highlightedItem = null;\n }\n\n public select(event: React.SyntheticEvent<HTMLElement>) {\n if (this.highlightedItem) {\n this.highlightedItem.select(event);\n return true;\n }\n return false;\n }\n\n public reset() {\n this.highlight(null);\n this.highlightedItem = null;\n }\n\n private getEnabledItems = () => {\n return this.items.filter((item) => item.isEnabled());\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,7 +12,7 @@ export declare class MenuNavigation<T extends Highlightable> {
|
|
|
12
12
|
private tagsAndItems;
|
|
13
13
|
highlightedItem: T | null;
|
|
14
14
|
items: T[];
|
|
15
|
-
constructor(root: RefObject<HTMLDivElement> | null, itemsContentDataTid: string);
|
|
15
|
+
constructor(root: RefObject<HTMLDivElement | null> | null, itemsContentDataTid: string);
|
|
16
16
|
private update;
|
|
17
17
|
add(tag: Element, item: T): void;
|
|
18
18
|
remove(tag: HTMLElement): void;
|
|
@@ -23,6 +23,7 @@ export var MobilePopup = withRenderEnvironment(_class = rootNode(_class = (_Mobi
|
|
|
23
23
|
args[_key] = arguments[_key];
|
|
24
24
|
}
|
|
25
25
|
_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
|
|
26
|
+
_this.refForTransition = /*#__PURE__*/React.createRef();
|
|
26
27
|
_this.close = function () {
|
|
27
28
|
if (_this.props.onCloseRequest) {
|
|
28
29
|
_this.props.onCloseRequest();
|
|
@@ -50,9 +51,11 @@ export var MobilePopup = withRenderEnvironment(_class = rootNode(_class = (_Mobi
|
|
|
50
51
|
onExited: this.props.onClose,
|
|
51
52
|
mountOnEnter: true,
|
|
52
53
|
unmountOnExit: true,
|
|
53
|
-
timeout: 0
|
|
54
|
+
timeout: 0,
|
|
55
|
+
nodeRef: this.refForTransition
|
|
54
56
|
}, /*#__PURE__*/React.createElement("div", {
|
|
55
|
-
className: this.jsStyles.wrapper()
|
|
57
|
+
className: this.jsStyles.wrapper(),
|
|
58
|
+
ref: this.refForTransition
|
|
56
59
|
}, /*#__PURE__*/React.createElement(RenderLayer, {
|
|
57
60
|
onClickOutside: this.close
|
|
58
61
|
}, /*#__PURE__*/React.createElement("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Transition","ThemeContext","RenderContainer","HideBodyVerticalScroll","ZIndex","RenderLayer","rootNode","withRenderEnvironment","getJsStyles","MobilePopupHeader","MobilePopupFooter","MobilePopupDataTids","root","container","MobilePopup","_class","_MobilePopup","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","close","props","onCloseRequest","_inheritsLoose","_proto","prototype","render","_this2","jsStyles","emotion","createElement","Consumer","theme","renderMain","content","id","className","zIndex","priority","opened","onExited","onClose","mountOnEnter","unmountOnExit","timeout","
|
|
1
|
+
{"version":3,"names":["React","Transition","ThemeContext","RenderContainer","HideBodyVerticalScroll","ZIndex","RenderLayer","rootNode","withRenderEnvironment","getJsStyles","MobilePopupHeader","MobilePopupFooter","MobilePopupDataTids","root","container","MobilePopup","_class","_MobilePopup","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","refForTransition","createRef","close","props","onCloseRequest","_inheritsLoose","_proto","prototype","render","_this2","jsStyles","emotion","createElement","Consumer","theme","renderMain","content","id","className","zIndex","priority","opened","onExited","onClose","mountOnEnter","unmountOnExit","timeout","nodeRef","wrapper","ref","onClickOutside","setRootNode","caption","headerChildComponent","children","footerChildComponent","onClick","bottomIndent","bg","withoutRenderContainer","Component","__KONTUR_REACT_UI__","displayName","defaultRootNode"],"sources":["MobilePopup.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\nimport React from 'react';\nimport { Transition } from 'react-transition-group';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { RenderContainer } from '../RenderContainer';\nimport { HideBodyVerticalScroll } from '../HideBodyVerticalScroll';\nimport { ZIndex } from '../ZIndex';\nimport { RenderLayer } from '../RenderLayer';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { getJsStyles } from './MobilePopup.styles';\nimport { MobilePopupHeader } from './MobilePopupHeader';\nimport { MobilePopupFooter } from './MobilePopupFooter';\n\ninterface MobilePopupProps extends Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n /**\n * Функция, вызываемая при закрытии всплывающего окна\n */\n onClose?: () => void;\n /**\n * Заголовок всплывающего окна, располагается в шапке\n */\n caption?: string;\n /**\n * Шапка всплывающего окна\n */\n headerChildComponent?: React.ReactNode;\n /**\n * Подвал всплывающего окна\n */\n footerChildComponent?: React.ReactNode;\n /**\n * Позволяет получить контент всплывающего окна без обёртки в виде `RenderContainer`\n */\n withoutRenderContainer?: boolean;\n /**\n * Функция, вызываемая при клике по вуали\n */\n onCloseRequest?: () => void;\n /**\n * Позволяет контролировать текущее состояние всплывающего окна\n */\n opened: boolean;\n children?: React.ReactNode;\n}\n\nexport const MobilePopupDataTids = {\n root: 'MobilePopup__root',\n container: 'MobilePopup__container',\n} as const;\n\n@withRenderEnvironment\n@rootNode\nexport class MobilePopup extends React.Component<MobilePopupProps> {\n public static __KONTUR_REACT_UI__ = 'MobileMenuHeader';\n public static displayName = 'MobileMenuHeader';\n private refForTransition = React.createRef<HTMLDivElement>();\n\n // see #2873 and #2895\n public static readonly defaultRootNode = null;\n\n private emotion!: Emotion;\n private jsStyles!: ReturnType<typeof getJsStyles>;\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render() {\n this.jsStyles = getJsStyles(this.emotion);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const content = (\n <ZIndex id={this.props.id} className={this.jsStyles.zIndex()} priority={'MobilePopup'}>\n <Transition\n in={this.props.opened}\n onExited={this.props.onClose}\n mountOnEnter\n unmountOnExit\n timeout={0}\n nodeRef={this.refForTransition}\n >\n <div className={this.jsStyles.wrapper()} ref={this.refForTransition}>\n <RenderLayer onClickOutside={this.close}>\n <div\n ref={this.setRootNode}\n data-tid={MobilePopupDataTids.container}\n className={this.jsStyles.container(this.theme)}\n >\n <div data-tid={MobilePopupDataTids.root} className={this.jsStyles.root(this.theme)}>\n <MobilePopupHeader caption={this.props.caption}>{this.props.headerChildComponent}</MobilePopupHeader>\n <div className={this.jsStyles.content(this.theme)}>{this.props.children}</div>\n <MobilePopupFooter>{this.props.footerChildComponent}</MobilePopupFooter>\n </div>\n <div onClick={this.close} className={this.jsStyles.bottomIndent()} />\n </div>\n </RenderLayer>\n <div className={this.jsStyles.bg()} />\n <HideBodyVerticalScroll />\n </div>\n </Transition>\n </ZIndex>\n );\n\n if (this.props.withoutRenderContainer) {\n return content;\n }\n\n return <RenderContainer>{content}</RenderContainer>;\n }\n\n public close = () => {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -39,6 +39,7 @@ export declare const MobilePopupDataTids: {
|
|
|
39
39
|
export declare class MobilePopup extends React.Component<MobilePopupProps> {
|
|
40
40
|
static __KONTUR_REACT_UI__: string;
|
|
41
41
|
static displayName: string;
|
|
42
|
+
private refForTransition;
|
|
42
43
|
static readonly defaultRootNode: null;
|
|
43
44
|
private emotion;
|
|
44
45
|
private jsStyles;
|
|
@@ -21,6 +21,7 @@ import { createPropsGetter } from "../../../lib/createPropsGetter";
|
|
|
21
21
|
import { isInstanceOf } from "../../../lib/isInstanceOf";
|
|
22
22
|
import { mergeRefs } from "../../../lib/mergeRefs";
|
|
23
23
|
import { getVisualStateDataAttributes } from "../../CommonWrapper/utils/getVisualStateDataAttributes";
|
|
24
|
+
import { getElementRef } from "../../../lib/getElementRef";
|
|
24
25
|
import { withRenderEnvironment } from "../../../lib/renderEnvironment";
|
|
25
26
|
import { PopupPin } from "../PopupPin";
|
|
26
27
|
import { PopupHelper } from "../PopupHelper";
|
|
@@ -292,7 +293,6 @@ export var Popup = withRenderEnvironment(_class = responsiveLayout(_class = root
|
|
|
292
293
|
}, this.content(children))) : null;
|
|
293
294
|
};
|
|
294
295
|
_proto.renderMain = function renderMain() {
|
|
295
|
-
var _anchor;
|
|
296
296
|
var anchorElement = this.props.anchorElement;
|
|
297
297
|
var useWrapper = this.getProps().useWrapper;
|
|
298
298
|
var anchor = null;
|
|
@@ -304,7 +304,7 @@ export var Popup = withRenderEnvironment(_class = responsiveLayout(_class = root
|
|
|
304
304
|
anchor = /*#__PURE__*/React.createElement("span", null, anchorElement);
|
|
305
305
|
}
|
|
306
306
|
var anchorWithRef = anchor && /*#__PURE__*/React.isValidElement(anchor) && isRefableElement(anchor) ? /*#__PURE__*/React.cloneElement(anchor, {
|
|
307
|
-
ref: mergeRefs((
|
|
307
|
+
ref: mergeRefs(getElementRef(anchor), this.updateAnchorElement)
|
|
308
308
|
}) : null; // we need to get anchor's DOM node
|
|
309
309
|
// so we either set our own ref on it via cloning
|
|
310
310
|
// or relay on findDOMNode (inside getRootNode)
|