@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","_interopRequireDefault","require","_utils","_identifiers","_ThemeContext","_ThemeFactory","_Popup","_RenderLayer","_CommonWrapper","_decorator","_rootNode","_createPropsGetter","_Menu","_renderEnvironment","_validatePositions","_PopupMenu2","_tids","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","_class","_PopupMenu","PopupMenuType","Dropdown","Tooltip","Positions","PopupMenu","withRenderEnvironment","rootNode","responsiveLayout","_React$Component","_this","_len","arguments","length","args","Array","_key","apply","concat","rootId","PopupIds","root","getRandomID","getProps","createPropsGetter","defaultProps","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","menuRef","element","handleOpen","focus","passPropsToCaption","caption","_this$props$popupMenu","React","cloneElement","id","props","popupMenuId","renderCaption","opened","openMenu","closeMenu","toggleMenu","corners","default","createElement","PopupMenuDataTids","className","styles","ref","onClick","handleCaptionClick","onKeyDown","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","someKeys","isKeyEnter","isKeySpace","isKeyArrowVertical","preventDefault","handleKeyDown","isKeyEscape","globalObject","document","activeElement","focusShouldBeRestored","onOpen","onClose","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","_inheritsLoose2","_proto","render","_this2","getStyles","emotion","ThemeContext","Consumer","theme","Provider","value","ThemeFactory","create","menuOffsetY","popupMenuMenuOffsetY","renderMain","_this$props$popupMenu2","_this$getProps","popupHasPin","disableAnimations","CommonWrapper","_extends2","rootNodeRef","setRootNode","RenderLayer","onClickOutside","onFocusOutside","active","container","style","width","children","Popup","anchorElement","hasShadow","margin","popupMargin","hasPin","pinOffset","popupPinOffset","positions","getPositions","mobileOnCloseRequest","isMobileLayout","menuWidth","Menu","maxHeight","menuMaxHeight","onItemClick","preventIconsOffset","cyclicSelection","initialSelectedItemIndex","header","footer","isValidPositions","Component","__KONTUR_REACT_UI__","displayName","Type"],"sources":["PopupMenu.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport { getRandomID } from '../../lib/utils';\nimport type { HTMLProps } from '../../typings/html';\nimport {\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { PopupPositionsType } from '../Popup';\nimport { Popup, PopupIds } from '../Popup';\nimport { RenderLayer } from '../RenderLayer';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { MenuProps } from '../Menu';\nimport { Menu } from '../Menu';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { isValidPositions } from './validatePositions';\nimport { getStyles } from './PopupMenu.styles';\nimport { PopupMenuDataTids } from './tids';\n\nexport * from './tids';\n\nexport interface PopupMenuCaptionProps {\n opened: boolean;\n openMenu: (firstItemShouldBeSelected?: boolean) => void;\n closeMenu: (restoreFocus?: boolean) => void;\n toggleMenu: () => void;\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\nexport interface PopupMenuProps\n extends CommonProps,\n Pick<MenuProps, 'preventIconsOffset'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Pick<AriaAttributes, 'aria-label'> {\n children?: React.ReactNode;\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Ширина контейнера и caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо ```caption```,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: React.ReactNode | ((props: PopupMenuCaptionProps) => React.ReactNode);\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n /** Массив разрешенных положений меню относительно caption'а. */\n positions?: PopupPositionsType[];\n /** Колбэк, вызываемый после открытия/закрытия меню */\n onChangeMenuState?: (isOpened: boolean, restoreFocus: boolean) => void;\n /** Пропсы, передающиеся в Popup */\n popupHasPin?: boolean;\n popupMargin?: number;\n popupPinOffset?: number;\n type?: 'dropdown' | 'tooltip';\n disableAnimations?: boolean;\n /** Действие при открытии меню */\n onOpen?: () => void;\n /** Действие при закрытии меню */\n onClose?: () => void;\n /**\n * Позволяет задать `id` выпадающему меню.\n *\n * Это может пригодиться при реализации a11y. Например, для того, чтобы связать `aria-controls` с выпадающим меню.\n */\n popupMenuId?: HTMLProps['id'];\n\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\ninterface PopupMenuState {\n menuVisible: boolean;\n firstItemShouldBeSelected?: boolean;\n}\n\nexport const PopupMenuType = {\n Dropdown: 'dropdown',\n Tooltip: 'tooltip',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n 'left top',\n 'left middle',\n 'left bottom',\n];\n\ntype DefaultProps = Required<Pick<PopupMenuProps, 'positions' | 'type' | 'popupHasPin' | 'disableAnimations'>>;\n\n@withRenderEnvironment\n@rootNode\n@responsiveLayout\nexport class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {\n public static __KONTUR_REACT_UI__ = 'PopupMenu';\n public static displayName = 'PopupMenu';\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private styles!: ReturnType<typeof getStyles>;\n private isMobileLayout!: boolean;\n private rootId = PopupIds.root + getRandomID();\n\n public static defaultProps: DefaultProps = {\n positions: Positions,\n type: PopupMenuType.Tooltip,\n popupHasPin: true,\n disableAnimations: false,\n };\n\n private getProps = createPropsGetter(PopupMenu.defaultProps);\n\n public static Type = PopupMenuType;\n\n public state = {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n };\n\n private captionWrapper: HTMLSpanElement | null = null;\n private savedFocusableElement: HTMLElement | null = null;\n private menu: Nullable<Menu> = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n menuOffsetY: theme.popupMenuMenuOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { popupHasPin, disableAnimations } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.hideMenuWithoutFocusing}\n onFocusOutside={this.hideMenuWithoutFocusing}\n active={this.state.menuVisible}\n >\n <div\n data-tid={PopupMenuDataTids.root}\n className={this.styles.container()}\n style={{ width: this.props.width }}\n >\n {this.renderCaption()}\n {this.captionWrapper && this.props.children && (\n <Popup\n id={this.props.popupMenuId ?? this.rootId}\n anchorElement={this.captionWrapper}\n opened={this.state.menuVisible}\n hasShadow\n margin={this.props.popupMargin}\n hasPin={popupHasPin}\n pinOffset={this.props.popupPinOffset}\n positions={this.getPositions()}\n disableAnimations={disableAnimations}\n onOpen={this.handleOpen}\n mobileOnCloseRequest={this.hideMenu}\n width={this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto'}\n >\n <Menu\n maxHeight={this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none'}\n onKeyDown={this.handleKeyDown}\n onItemClick={this.handleItemSelection}\n preventIconsOffset={this.props.preventIconsOffset}\n cyclicSelection={false}\n ref={this.menuRef}\n initialSelectedItemIndex={this.state.firstItemShouldBeSelected ? 0 : -1}\n header={this.props.header}\n footer={this.props.footer}\n >\n {this.props.children}\n </Menu>\n </Popup>\n )}\n </div>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n public open = (): void => this.showMenu();\n public close = (): void => this.hideMenu();\n\n private menuRef = (element: Nullable<Menu>) => (this.menu = element);\n\n private handleOpen = () => {\n if (this.menu) {\n this.menu.focus();\n }\n };\n\n private passPropsToCaption = (caption: React.ReactNode) => {\n if (typeof caption === 'string' || typeof caption === 'number') {\n return caption;\n }\n\n return React.cloneElement(caption as React.ReactElement, {\n id: this.props.id,\n 'aria-controls': this.props.popupMenuId ?? this.rootId,\n 'aria-expanded': this.state.menuVisible ? 'true' : 'false',\n 'aria-label': this.props['aria-label'],\n });\n };\n\n private renderCaption = () => {\n if (typeof this.props.caption === 'function') {\n const caption = this.props.caption({\n opened: this.state.menuVisible,\n openMenu: this.showMenu,\n closeMenu: this.hideMenu,\n toggleMenu: this.toggleMenu,\n corners: this.props.corners,\n });\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n className={this.styles.caption()}\n ref={(element) => (this.captionWrapper = element)}\n >\n {this.passPropsToCaption(caption)}\n </span>\n );\n }\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n onClick={this.handleCaptionClick}\n onKeyDown={this.handleCaptionKeyDown}\n ref={(element) => (this.captionWrapper = element)}\n className={this.styles.caption()}\n >\n {this.passPropsToCaption(this.props.caption)}\n </span>\n );\n };\n\n private hideMenuWithoutFocusing = () => this.hideMenu();\n\n private getPositions(): Readonly<PopupPositionsType[]> {\n const positions = this.getProps().positions;\n if (positions && isValidPositions(positions)) {\n return positions;\n }\n\n return Positions;\n }\n\n private showMenu = (firstItemShouldBeSelected?: boolean): void => {\n this.saveFocus();\n this.setState(\n {\n menuVisible: true,\n firstItemShouldBeSelected,\n },\n () => {\n this.handleChangeMenuVisible(false);\n },\n );\n };\n\n private hideMenu = (restoreFocus?: boolean): void => {\n this.setState(\n {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n },\n () => {\n this.handleChangeMenuVisible(!!restoreFocus);\n },\n );\n };\n\n private toggleMenu = (): void => {\n this.state.menuVisible ? this.hideMenu() : this.showMenu();\n };\n\n private handleCaptionClick = (): void => {\n this.toggleMenu();\n };\n\n private handleCaptionKeyDown = (e: React.KeyboardEvent<HTMLElement>): void => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n this.showMenu(true);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEscape(e)) {\n const restoreFocus = true;\n this.hideMenu(restoreFocus);\n }\n };\n\n private saveFocus = (): void => {\n if (this.globalObject.document) {\n this.savedFocusableElement = this.globalObject.document.activeElement as HTMLElement;\n }\n };\n\n private restoreFocus = (): void => {\n if (this.savedFocusableElement) {\n this.savedFocusableElement.focus();\n this.savedFocusableElement = null;\n }\n };\n\n private handleChangeMenuVisible = (focusShouldBeRestored: boolean): void => {\n if (focusShouldBeRestored) {\n this.restoreFocus();\n }\n\n if (this.state.menuVisible && this.props.onOpen) {\n this.props.onOpen();\n }\n\n if (!this.state.menuVisible && this.props.onClose) {\n this.props.onClose();\n }\n\n if (typeof this.props.onChangeMenuState === 'function') {\n this.props.onChangeMenuState(this.state.menuVisible, focusShouldBeRestored);\n }\n };\n\n private handleItemSelection = (event: React.SyntheticEvent<HTMLElement>): void => {\n if (event.isDefaultPrevented()) {\n return;\n }\n\n if (event.type === 'keydown') {\n event.preventDefault();\n }\n\n const restoreFocus = event.type === 'keydown';\n this.hideMenu(restoreFocus);\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_utils","_identifiers","_ThemeContext","_ThemeFactory","_Popup","_RenderLayer","_CommonWrapper","_decorator","_rootNode","_createPropsGetter","_Menu","_renderEnvironment","_validatePositions","_PopupMenu2","_tids","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","_class","_PopupMenu","PopupMenuType","Dropdown","Tooltip","Positions","PopupMenu","withRenderEnvironment","rootNode","responsiveLayout","_React$Component","_this","_len","arguments","length","args","Array","_key","apply","concat","rootId","PopupIds","root","getRandomID","getProps","createPropsGetter","defaultProps","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","menuRef","element","handleOpen","focus","passPropsToCaption","caption","_this$props$popupMenu","React","cloneElement","id","props","popupMenuId","renderCaption","opened","openMenu","closeMenu","toggleMenu","corners","default","createElement","PopupMenuDataTids","className","styles","ref","onClick","handleCaptionClick","onKeyDown","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","someKeys","isKeyEnter","isKeySpace","isKeyArrowVertical","preventDefault","handleKeyDown","isKeyEscape","globalObject","document","activeElement","focusShouldBeRestored","onOpen","onClose","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","_inheritsLoose2","_proto","render","_this2","getStyles","emotion","ThemeContext","Consumer","theme","Provider","value","ThemeFactory","create","menuOffsetY","popupMenuMenuOffsetY","renderMain","_this$props$popupMenu2","_this$getProps","popupHasPin","disableAnimations","CommonWrapper","_extends2","rootNodeRef","setRootNode","RenderLayer","onClickOutside","onFocusOutside","active","container","style","width","children","Popup","anchorElement","hasShadow","margin","popupMargin","hasPin","pinOffset","popupPinOffset","positions","getPositions","mobileOnCloseRequest","isMobileLayout","menuWidth","Menu","maxHeight","menuMaxHeight","onItemClick","preventIconsOffset","cyclicSelection","initialSelectedItemIndex","header","footer","isValidPositions","Component","__KONTUR_REACT_UI__","displayName","Type"],"sources":["PopupMenu.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes, JSX } from 'react';\nimport React from 'react';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport { getRandomID } from '../../lib/utils';\nimport type { HTMLProps } from '../../typings/html';\nimport {\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { PopupPositionsType } from '../Popup';\nimport { Popup, PopupIds } from '../Popup';\nimport { RenderLayer } from '../RenderLayer';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { MenuProps } from '../Menu';\nimport { Menu } from '../Menu';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { isValidPositions } from './validatePositions';\nimport { getStyles } from './PopupMenu.styles';\nimport { PopupMenuDataTids } from './tids';\n\nexport * from './tids';\n\nexport interface PopupMenuCaptionProps {\n opened: boolean;\n openMenu: (firstItemShouldBeSelected?: boolean) => void;\n closeMenu: (restoreFocus?: boolean) => void;\n toggleMenu: () => void;\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\nexport interface PopupMenuProps\n extends CommonProps,\n Pick<MenuProps, 'preventIconsOffset'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Pick<AriaAttributes, 'aria-label'> {\n children?: React.ReactNode;\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Ширина контейнера и caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо ```caption```,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: React.ReactNode | ((props: PopupMenuCaptionProps) => React.ReactNode);\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n /** Массив разрешенных положений меню относительно caption'а. */\n positions?: PopupPositionsType[];\n /** Колбэк, вызываемый после открытия/закрытия меню */\n onChangeMenuState?: (isOpened: boolean, restoreFocus: boolean) => void;\n /** Пропсы, передающиеся в Popup */\n popupHasPin?: boolean;\n popupMargin?: number;\n popupPinOffset?: number;\n type?: 'dropdown' | 'tooltip';\n disableAnimations?: boolean;\n /** Действие при открытии меню */\n onOpen?: () => void;\n /** Действие при закрытии меню */\n onClose?: () => void;\n /**\n * Позволяет задать `id` выпадающему меню.\n *\n * Это может пригодиться при реализации a11y. Например, для того, чтобы связать `aria-controls` с выпадающим меню.\n */\n popupMenuId?: HTMLProps['id'];\n\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\ninterface PopupMenuState {\n menuVisible: boolean;\n firstItemShouldBeSelected?: boolean;\n}\n\nexport const PopupMenuType = {\n Dropdown: 'dropdown',\n Tooltip: 'tooltip',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n 'left top',\n 'left middle',\n 'left bottom',\n];\n\ntype DefaultProps = Required<Pick<PopupMenuProps, 'positions' | 'type' | 'popupHasPin' | 'disableAnimations'>>;\n\n@withRenderEnvironment\n@rootNode\n@responsiveLayout\nexport class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {\n public static __KONTUR_REACT_UI__ = 'PopupMenu';\n public static displayName = 'PopupMenu';\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private styles!: ReturnType<typeof getStyles>;\n private isMobileLayout!: boolean;\n private rootId = PopupIds.root + getRandomID();\n\n public static defaultProps: DefaultProps = {\n positions: Positions,\n type: PopupMenuType.Tooltip,\n popupHasPin: true,\n disableAnimations: false,\n };\n\n private getProps = createPropsGetter(PopupMenu.defaultProps);\n\n public static Type = PopupMenuType;\n\n public state = {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n };\n\n private captionWrapper: HTMLSpanElement | null = null;\n private savedFocusableElement: HTMLElement | null = null;\n private menu: Nullable<Menu> = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n menuOffsetY: theme.popupMenuMenuOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { popupHasPin, disableAnimations } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.hideMenuWithoutFocusing}\n onFocusOutside={this.hideMenuWithoutFocusing}\n active={this.state.menuVisible}\n >\n <div\n data-tid={PopupMenuDataTids.root}\n className={this.styles.container()}\n style={{ width: this.props.width }}\n >\n {this.renderCaption()}\n {this.captionWrapper && this.props.children && (\n <Popup\n id={this.props.popupMenuId ?? this.rootId}\n anchorElement={this.captionWrapper}\n opened={this.state.menuVisible}\n hasShadow\n margin={this.props.popupMargin}\n hasPin={popupHasPin}\n pinOffset={this.props.popupPinOffset}\n positions={this.getPositions()}\n disableAnimations={disableAnimations}\n onOpen={this.handleOpen}\n mobileOnCloseRequest={this.hideMenu}\n width={this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto'}\n >\n <Menu\n maxHeight={this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none'}\n onKeyDown={this.handleKeyDown}\n onItemClick={this.handleItemSelection}\n preventIconsOffset={this.props.preventIconsOffset}\n cyclicSelection={false}\n ref={this.menuRef}\n initialSelectedItemIndex={this.state.firstItemShouldBeSelected ? 0 : -1}\n header={this.props.header}\n footer={this.props.footer}\n >\n {this.props.children}\n </Menu>\n </Popup>\n )}\n </div>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n public open = (): void => this.showMenu();\n public close = (): void => this.hideMenu();\n\n private menuRef = (element: Nullable<Menu>) => {\n this.menu = element;\n };\n\n private handleOpen = () => {\n if (this.menu) {\n this.menu.focus();\n }\n };\n\n private passPropsToCaption = (caption: React.ReactNode) => {\n if (typeof caption === 'string' || typeof caption === 'number') {\n return caption;\n }\n\n return React.cloneElement(caption as React.ReactElement<any>, {\n id: this.props.id,\n 'aria-controls': this.props.popupMenuId ?? this.rootId,\n 'aria-expanded': this.state.menuVisible ? 'true' : 'false',\n 'aria-label': this.props['aria-label'],\n });\n };\n\n private renderCaption = () => {\n if (typeof this.props.caption === 'function') {\n const caption = this.props.caption({\n opened: this.state.menuVisible,\n openMenu: this.showMenu,\n closeMenu: this.hideMenu,\n toggleMenu: this.toggleMenu,\n corners: this.props.corners,\n });\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n className={this.styles.caption()}\n ref={(element) => {\n this.captionWrapper = element;\n }}\n >\n {this.passPropsToCaption(caption)}\n </span>\n );\n }\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n onClick={this.handleCaptionClick}\n onKeyDown={this.handleCaptionKeyDown}\n ref={(element) => {\n this.captionWrapper = element;\n }}\n className={this.styles.caption()}\n >\n {this.passPropsToCaption(this.props.caption)}\n </span>\n );\n };\n\n private hideMenuWithoutFocusing = () => this.hideMenu();\n\n private getPositions(): Readonly<PopupPositionsType[]> {\n const positions = this.getProps().positions;\n if (positions && isValidPositions(positions)) {\n return positions;\n }\n\n return Positions;\n }\n\n private showMenu = (firstItemShouldBeSelected?: boolean): void => {\n this.saveFocus();\n this.setState(\n {\n menuVisible: true,\n firstItemShouldBeSelected,\n },\n () => {\n this.handleChangeMenuVisible(false);\n },\n );\n };\n\n private hideMenu = (restoreFocus?: boolean): void => {\n this.setState(\n {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n },\n () => {\n this.handleChangeMenuVisible(!!restoreFocus);\n },\n );\n };\n\n private toggleMenu = (): void => {\n this.state.menuVisible ? this.hideMenu() : this.showMenu();\n };\n\n private handleCaptionClick = (): void => {\n this.toggleMenu();\n };\n\n private handleCaptionKeyDown = (e: React.KeyboardEvent<HTMLElement>): void => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n this.showMenu(true);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEscape(e)) {\n const restoreFocus = true;\n this.hideMenu(restoreFocus);\n }\n };\n\n private saveFocus = (): void => {\n if (this.globalObject.document) {\n this.savedFocusableElement = this.globalObject.document.activeElement as HTMLElement;\n }\n };\n\n private restoreFocus = (): void => {\n if (this.savedFocusableElement) {\n this.savedFocusableElement.focus();\n this.savedFocusableElement = null;\n }\n };\n\n private handleChangeMenuVisible = (focusShouldBeRestored: boolean): void => {\n if (focusShouldBeRestored) {\n this.restoreFocus();\n }\n\n if (this.state.menuVisible && this.props.onOpen) {\n this.props.onOpen();\n }\n\n if (!this.state.menuVisible && this.props.onClose) {\n this.props.onClose();\n }\n\n if (typeof this.props.onChangeMenuState === 'function') {\n this.props.onChangeMenuState(this.state.menuVisible, focusShouldBeRestored);\n }\n };\n\n private handleItemSelection = (event: React.SyntheticEvent<HTMLElement>): void => {\n if (event.isDefaultPrevented()) {\n return;\n }\n\n if (event.type === 'keydown') {\n event.preventDefault();\n }\n\n const restoreFocus = event.type === 'keydown';\n this.hideMenu(restoreFocus);\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 { CommonProps } from '../CommonWrapper';
|
|
3
3
|
import type { TGetRootNode } from '../../lib/rootNode';
|
|
4
4
|
import type { Nullable } from '../../typings/utility-types';
|
|
@@ -22,7 +22,7 @@ export declare class RenderLayer extends React.Component<RenderLayerProps> {
|
|
|
22
22
|
componentDidMount(): void;
|
|
23
23
|
componentDidUpdate(prevProps: RenderLayerProps): void;
|
|
24
24
|
componentWillUnmount(): void;
|
|
25
|
-
render():
|
|
25
|
+
render(): JSX.Element;
|
|
26
26
|
private getAnchorNode;
|
|
27
27
|
private attachListeners;
|
|
28
28
|
private detachListeners;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_listenFocusOutside","_CommonWrapper","_rootNode","_createPropsGetter","_isInstanceOf","_renderEnvironment","_class","_RenderLayer","RenderLayer","exports","withRenderEnvironment","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","focusOutsideListenerToken","handleFocusOutside","event","props","onFocusOutside","handleNativeDocClick","target","srcElement","node","getAnchorNode","isInstanceOf","globalObject","Element","containsTargetOrRenderContainer","onClickOutside","_inheritsLoose2","default","_proto","prototype","componentDidMount","active","attachListeners","componentDidUpdate","prevProps","_this$getProps","detachListeners","componentWillUnmount","render","createElement","CommonWrapper","_extends2","rootNodeRef","setRootNode","React","Children","only","children","getAnchorElement","getRootNode","_this$globalObject$ad","_this$globalObject","_this$globalObject$do","listenFocusOutside","addEventListener","document","documentElement","_this$globalObject$re","_this$globalObject2","_this$globalObject$do2","remove","removeEventListener","Component","__KONTUR_REACT_UI__","displayName"],"sources":["RenderLayer.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport { listen as listenFocusOutside, containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport type { Nullable } from '../../typings/utility-types';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nexport interface RenderLayerProps extends CommonProps {\n children: JSX.Element;\n onClickOutside?: (e: Event) => void;\n onFocusOutside?: (e: Event) => void;\n active?: boolean;\n getAnchorElement?: () => Nullable<Element>;\n}\n\ntype DefaultProps = Required<Pick<RenderLayerProps, 'active'>>;\n\n@withRenderEnvironment\n@rootNode\nexport class RenderLayer extends React.Component<RenderLayerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderLayer';\n public static displayName = 'RenderLayer';\n\n public static defaultProps: DefaultProps = {\n active: true,\n };\n\n private globalObject!: GlobalObject;\n private getProps = createPropsGetter(RenderLayer.defaultProps);\n\n private focusOutsideListenerToken: {\n remove: () => void;\n } | null = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.getProps().active) {\n this.attachListeners();\n }\n }\n\n public componentDidUpdate(prevProps: RenderLayerProps) {\n const { active } = this.getProps();\n\n if (!prevProps.active && active) {\n this.attachListeners();\n }\n if (prevProps.active && !active) {\n this.detachListeners();\n }\n }\n\n public componentWillUnmount() {\n if (this.getProps().active) {\n this.detachListeners();\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {React.Children.only(this.props.children)}\n </CommonWrapper>\n );\n }\n\n private getAnchorNode(): Nullable<Element> {\n const { getAnchorElement } = this.props;\n return getAnchorElement ? getAnchorElement() : getRootNode(this);\n }\n\n private attachListeners() {\n const node = this.getAnchorNode();\n if (!node) {\n return;\n }\n\n this.focusOutsideListenerToken = listenFocusOutside(() => [node], this.handleFocusOutside, this.globalObject);\n this.globalObject.addEventListener?.('blur', this.handleFocusOutside);\n this.globalObject.document?.addEventListener(\n 'ontouchstart' in this.globalObject.document.documentElement &&\n 'onpointerup' in this.globalObject.document.documentElement\n ? 'pointerup'\n : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n\n private detachListeners() {\n if (this.focusOutsideListenerToken) {\n this.focusOutsideListenerToken.remove();\n this.focusOutsideListenerToken = null;\n }\n\n this.globalObject.removeEventListener?.('blur', this.handleFocusOutside);\n this.globalObject.document?.removeEventListener(\n 'ontouchstart' in this.globalObject.document.documentElement &&\n 'onpointerup' in this.globalObject.document.documentElement\n ? 'pointerup'\n : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n\n private handleFocusOutside = (event: Event) => {\n if (this.props.onFocusOutside) {\n this.props.onFocusOutside(event);\n }\n };\n\n private handleNativeDocClick = (event: Event) => {\n const target = event.target || event.srcElement;\n const node = this.getAnchorNode();\n\n if (!node || (isInstanceOf(target, this.globalObject.Element) && containsTargetOrRenderContainer(target)(node))) {\n return;\n }\n\n if (this.props.onClickOutside) {\n this.props.onClickOutside(event);\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_listenFocusOutside","_CommonWrapper","_rootNode","_createPropsGetter","_isInstanceOf","_renderEnvironment","_class","_RenderLayer","RenderLayer","exports","withRenderEnvironment","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","focusOutsideListenerToken","handleFocusOutside","event","props","onFocusOutside","handleNativeDocClick","target","srcElement","node","getAnchorNode","isInstanceOf","globalObject","Element","containsTargetOrRenderContainer","onClickOutside","_inheritsLoose2","default","_proto","prototype","componentDidMount","active","attachListeners","componentDidUpdate","prevProps","_this$getProps","detachListeners","componentWillUnmount","render","createElement","CommonWrapper","_extends2","rootNodeRef","setRootNode","React","Children","only","children","getAnchorElement","getRootNode","_this$globalObject$ad","_this$globalObject","_this$globalObject$do","listenFocusOutside","addEventListener","document","documentElement","_this$globalObject$re","_this$globalObject2","_this$globalObject$do2","remove","removeEventListener","Component","__KONTUR_REACT_UI__","displayName"],"sources":["RenderLayer.tsx"],"sourcesContent":["import React, { type JSX } from 'react';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport { listen as listenFocusOutside, containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport type { Nullable } from '../../typings/utility-types';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nexport interface RenderLayerProps extends CommonProps {\n children: JSX.Element;\n onClickOutside?: (e: Event) => void;\n onFocusOutside?: (e: Event) => void;\n active?: boolean;\n getAnchorElement?: () => Nullable<Element>;\n}\n\ntype DefaultProps = Required<Pick<RenderLayerProps, 'active'>>;\n\n@withRenderEnvironment\n@rootNode\nexport class RenderLayer extends React.Component<RenderLayerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderLayer';\n public static displayName = 'RenderLayer';\n\n public static defaultProps: DefaultProps = {\n active: true,\n };\n\n private globalObject!: GlobalObject;\n private getProps = createPropsGetter(RenderLayer.defaultProps);\n\n private focusOutsideListenerToken: {\n remove: () => void;\n } | null = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.getProps().active) {\n this.attachListeners();\n }\n }\n\n public componentDidUpdate(prevProps: RenderLayerProps) {\n const { active } = this.getProps();\n\n if (!prevProps.active && active) {\n this.attachListeners();\n }\n if (prevProps.active && !active) {\n this.detachListeners();\n }\n }\n\n public componentWillUnmount() {\n if (this.getProps().active) {\n this.detachListeners();\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {React.Children.only(this.props.children)}\n </CommonWrapper>\n );\n }\n\n private getAnchorNode(): Nullable<Element> {\n const { getAnchorElement } = this.props;\n return getAnchorElement ? getAnchorElement() : getRootNode(this);\n }\n\n private attachListeners() {\n const node = this.getAnchorNode();\n if (!node) {\n return;\n }\n\n this.focusOutsideListenerToken = listenFocusOutside(() => [node], this.handleFocusOutside, this.globalObject);\n this.globalObject.addEventListener?.('blur', this.handleFocusOutside);\n this.globalObject.document?.addEventListener(\n 'ontouchstart' in this.globalObject.document.documentElement &&\n 'onpointerup' in this.globalObject.document.documentElement\n ? 'pointerup'\n : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n\n private detachListeners() {\n if (this.focusOutsideListenerToken) {\n this.focusOutsideListenerToken.remove();\n this.focusOutsideListenerToken = null;\n }\n\n this.globalObject.removeEventListener?.('blur', this.handleFocusOutside);\n this.globalObject.document?.removeEventListener(\n 'ontouchstart' in this.globalObject.document.documentElement &&\n 'onpointerup' in this.globalObject.document.documentElement\n ? 'pointerup'\n : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n\n private handleFocusOutside = (event: Event) => {\n if (this.props.onFocusOutside) {\n this.props.onFocusOutside(event);\n }\n };\n\n private handleNativeDocClick = (event: Event) => {\n const target = event.target || event.srcElement;\n const node = this.getAnchorNode();\n\n if (!node || (isInstanceOf(target, this.globalObject.Element) && containsTargetOrRenderContainer(target)(node))) {\n return;\n }\n\n if (this.props.onClickOutside) {\n this.props.onClickOutside(event);\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -40,4 +40,6 @@ TextWidthHelper = exports.TextWidthHelper = (0, _renderEnvironment.withRenderEnv
|
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
|
|
43
|
-
elementRef = function (node) {
|
|
43
|
+
elementRef = function (node) {
|
|
44
|
+
_this.element = node;
|
|
45
|
+
};return _this;}(0, _inheritsLoose2.default)(TextWidthHelper, _React$Component);var _proto = TextWidthHelper.prototype;_proto.render = function render() {this.jsStyles = (0, _TextWidthHelper2.getJsStyles)(this.emotion);return /*#__PURE__*/_react.default.createElement("div", { className: this.jsStyles.root() }, /*#__PURE__*/_react.default.createElement("div", { className: this.jsStyles.textContainer(), ref: this.elementRef }, this.props.text || THIN_SPACE));};_proto.getTextWidth = function getTextWidth() {return (0, _getDOMRect.getDOMRect)(this.element).width;};_proto.getTextHeight = function getTextHeight() {return (0, _getDOMRect.getDOMRect)(this.element).height;};return TextWidthHelper;}(_react.default.Component)) || _class;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_getDOMRect","_renderEnvironment","_TextWidthHelper2","_class","THIN_SPACE","TextWidthHelper","exports","withRenderEnvironment","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","element","elementRef","node","_inheritsLoose2","default","_proto","prototype","render","jsStyles","getJsStyles","emotion","createElement","className","root","textContainer","ref","props","text","getTextWidth","getDOMRect","width","getTextHeight","height","React","Component"],"sources":["TextWidthHelper.tsx"],"sourcesContent":["import React from 'react';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { getJsStyles } from './TextWidthHelper.styles';\n\nconst THIN_SPACE = '\\u2009';\n\ninterface TextWidthHelperProps {\n text?: string;\n}\n/**\n * Херпер позволяет вычислить размеры блока с текстом\n */\n@withRenderEnvironment\nexport class TextWidthHelper extends React.Component<TextWidthHelperProps> {\n private element: HTMLDivElement | null = null;\n private emotion!: Emotion;\n private jsStyles!: ReturnType<typeof getJsStyles>;\n\n public render() {\n this.jsStyles = getJsStyles(this.emotion);\n\n return (\n <div className={this.jsStyles.root()}>\n <div className={this.jsStyles.textContainer()} ref={this.elementRef}>\n {this.props.text || THIN_SPACE}\n </div>\n </div>\n );\n }\n\n public getTextWidth(): number {\n return getDOMRect(this.element).width;\n }\n\n public getTextHeight(): number {\n return getDOMRect(this.element).height;\n }\n\n private elementRef = (node: HTMLDivElement) =>
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_getDOMRect","_renderEnvironment","_TextWidthHelper2","_class","THIN_SPACE","TextWidthHelper","exports","withRenderEnvironment","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","element","elementRef","node","_inheritsLoose2","default","_proto","prototype","render","jsStyles","getJsStyles","emotion","createElement","className","root","textContainer","ref","props","text","getTextWidth","getDOMRect","width","getTextHeight","height","React","Component"],"sources":["TextWidthHelper.tsx"],"sourcesContent":["import React from 'react';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { getJsStyles } from './TextWidthHelper.styles';\n\nconst THIN_SPACE = '\\u2009';\n\ninterface TextWidthHelperProps {\n text?: string;\n}\n/**\n * Херпер позволяет вычислить размеры блока с текстом\n */\n@withRenderEnvironment\nexport class TextWidthHelper extends React.Component<TextWidthHelperProps> {\n private element: HTMLDivElement | null = null;\n private emotion!: Emotion;\n private jsStyles!: ReturnType<typeof getJsStyles>;\n\n public render() {\n this.jsStyles = getJsStyles(this.emotion);\n\n return (\n <div className={this.jsStyles.root()}>\n <div className={this.jsStyles.textContainer()} ref={this.elementRef}>\n {this.props.text || THIN_SPACE}\n </div>\n </div>\n );\n }\n\n public getTextWidth(): number {\n return getDOMRect(this.element).width;\n }\n\n public getTextHeight(): number {\n return getDOMRect(this.element).height;\n }\n\n private elementRef = (node: HTMLDivElement) => {\n this.element = node;\n };\n}\n"],"mappings":"mQAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;;;AAGA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;;AAEA,IAAAG,iBAAA,GAAAH,OAAA,6BAAuD,IAAAI,MAAA;;AAEvD,IAAMC,UAAU,GAAG,QAAQ;;;;;AAK3B;AACA;AACA,GAFA;;AAIaC,eAAe,GAAAC,OAAA,CAAAD,eAAA,OAD3BE,wCAAqB,EAAAJ,MAAA,0BAAAK,gBAAA,YAAAH,gBAAA,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;IAEZU,OAAO,GAA0B,IAAI,CAAAV,KAAA;;;;;;;;;;;;;;;;;;;;;;;;IAwBrCW,UAAU,GAAG,UAACC,IAAoB,EAAK;MAC7CZ,KAAA,CAAKU,OAAO,GAAGE,IAAI;IACrB,CAAC,QAAAZ,KAAA,MAAAa,eAAA,CAAAC,OAAA,EAAAlB,eAAA,EAAAG,gBAAA,MAAAgB,MAAA,GAAAnB,eAAA,CAAAoB,SAAA,CAAAD,MAAA,CAtBME,MAAM,GAAb,SAAAA,OAAA,EAAgB,CACd,IAAI,CAACC,QAAQ,GAAG,IAAAC,6BAAW,EAAC,IAAI,CAACC,OAAO,CAAC,CAEzC,oBACEhC,MAAA,CAAA0B,OAAA,CAAAO,aAAA,UAAKC,SAAS,EAAE,IAAI,CAACJ,QAAQ,CAACK,IAAI,CAAC,CAAE,iBACnCnC,MAAA,CAAA0B,OAAA,CAAAO,aAAA,UAAKC,SAAS,EAAE,IAAI,CAACJ,QAAQ,CAACM,aAAa,CAAC,CAAE,EAACC,GAAG,EAAE,IAAI,CAACd,UAAW,IACjE,IAAI,CAACe,KAAK,CAACC,IAAI,IAAIhC,UACjB,CACF,CAAC,CAEV,CAAC,CAAAoB,MAAA,CAEMa,YAAY,GAAnB,SAAAA,aAAA,EAA8B,CAC5B,OAAO,IAAAC,sBAAU,EAAC,IAAI,CAACnB,OAAO,CAAC,CAACoB,KAAK,CACvC,CAAC,CAAAf,MAAA,CAEMgB,aAAa,GAApB,SAAAA,cAAA,EAA+B,CAC7B,OAAO,IAAAF,sBAAU,EAAC,IAAI,CAACnB,OAAO,CAAC,CAACsB,MAAM,CACxC,CAAC,QAAApC,eAAA,GAvBkCqC,cAAK,CAACC,SAAS,MAAAxC,MAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_FxInput","FxInputPlayground","exports","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","auto","value","onValueChange","setState","handleRestore","_inheritsLoose2","default","_proto","prototype","render","createElement","FxInput","type","onRestore","width","React","Component"],"sources":["FxInputPlayground.tsx"],"sourcesContent":["import React from 'react';\n\nimport { FxInput } from '../../components/FxInput';\n\ninterface FxInputPlaygroundState {\n auto: boolean;\n value: string;\n}\nexport class FxInputPlayground extends React.Component {\n public state: FxInputPlaygroundState = {\n auto: true,\n value: 'auto',\n };\n\n public render(): JSX.Element {\n return (\n <FxInput\n auto={this.state.auto}\n type={'text'}\n value={this.state.value}\n onRestore={this.handleRestore}\n onValueChange={this.onValueChange}\n width={150}\n />\n );\n }\n\n private onValueChange = (value: string) => {\n this.setState({ value, auto: false });\n };\n\n private handleRestore = () => {\n this.setState({\n value: 'auto',\n auto: true,\n });\n };\n}\n"],"mappings":"qQAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;;AAEA,IAAAC,QAAA,GAAAD,OAAA,6BAAmD;;;;;;AAMtCE,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,0BAAAE,gBAAA,YAAAF,kBAAA,OAAAG,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;IACrBU,KAAK,GAA2B;MACrCC,IAAI,EAAE,IAAI;MACVC,KAAK,EAAE;IACT,CAAC,CAAAZ,KAAA;;;;;;;;;;;;;;;IAeOa,aAAa,GAAG,UAACD,KAAa,EAAK;MACzCZ,KAAA,CAAKc,QAAQ,CAAC,EAAEF,KAAK,EAALA,KAAK,EAAED,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC,CAAAX,KAAA;;IAEOe,aAAa,GAAG,YAAM;MAC5Bf,KAAA,CAAKc,QAAQ,CAAC;QACZF,KAAK,EAAE,MAAM;QACbD,IAAI,EAAE;MACR,CAAC,CAAC;IACJ,CAAC,QAAAX,KAAA,MAAAgB,eAAA,CAAAC,OAAA,EAAApB,iBAAA,EAAAE,gBAAA,MAAAmB,MAAA,GAAArB,iBAAA,CAAAsB,SAAA,CAAAD,MAAA,CAtBME,MAAM,GAAb,SAAAA,OAAA,EAA6B,CAC3B,oBACE3B,MAAA,CAAAwB,OAAA,CAAAI,aAAA,CAACzB,QAAA,CAAA0B,OAAO,IACNX,IAAI,EAAE,IAAI,CAACD,KAAK,CAACC,IAAK,EACtBY,IAAI,EAAE,MAAO,EACbX,KAAK,EAAE,IAAI,CAACF,KAAK,CAACE,KAAM,EACxBY,SAAS,EAAE,IAAI,CAACT,aAAc,EAC9BF,aAAa,EAAE,IAAI,CAACA,aAAc,EAClCY,KAAK,EAAE,GAAI,EACZ,CAAC,CAEN,CAAC,QAAA5B,iBAAA,GAjBoC6B,cAAK,CAACC,SAAS","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_FxInput","FxInputPlayground","exports","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","auto","value","onValueChange","setState","handleRestore","_inheritsLoose2","default","_proto","prototype","render","createElement","FxInput","type","onRestore","width","React","Component"],"sources":["FxInputPlayground.tsx"],"sourcesContent":["import React, { type JSX } from 'react';\n\nimport { FxInput } from '../../components/FxInput';\n\ninterface FxInputPlaygroundState {\n auto: boolean;\n value: string;\n}\nexport class FxInputPlayground extends React.Component {\n public state: FxInputPlaygroundState = {\n auto: true,\n value: 'auto',\n };\n\n public render(): JSX.Element {\n return (\n <FxInput\n auto={this.state.auto}\n type={'text'}\n value={this.state.value}\n onRestore={this.handleRestore}\n onValueChange={this.onValueChange}\n width={150}\n />\n );\n }\n\n private onValueChange = (value: string) => {\n this.setState({ value, auto: false });\n };\n\n private handleRestore = () => {\n this.setState({\n value: 'auto',\n auto: true,\n });\n };\n}\n"],"mappings":"qQAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;;AAEA,IAAAC,QAAA,GAAAD,OAAA,6BAAmD;;;;;;AAMtCE,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,0BAAAE,gBAAA,YAAAF,kBAAA,OAAAG,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;IACrBU,KAAK,GAA2B;MACrCC,IAAI,EAAE,IAAI;MACVC,KAAK,EAAE;IACT,CAAC,CAAAZ,KAAA;;;;;;;;;;;;;;;IAeOa,aAAa,GAAG,UAACD,KAAa,EAAK;MACzCZ,KAAA,CAAKc,QAAQ,CAAC,EAAEF,KAAK,EAALA,KAAK,EAAED,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC,CAAAX,KAAA;;IAEOe,aAAa,GAAG,YAAM;MAC5Bf,KAAA,CAAKc,QAAQ,CAAC;QACZF,KAAK,EAAE,MAAM;QACbD,IAAI,EAAE;MACR,CAAC,CAAC;IACJ,CAAC,QAAAX,KAAA,MAAAgB,eAAA,CAAAC,OAAA,EAAApB,iBAAA,EAAAE,gBAAA,MAAAmB,MAAA,GAAArB,iBAAA,CAAAsB,SAAA,CAAAD,MAAA,CAtBME,MAAM,GAAb,SAAAA,OAAA,EAA6B,CAC3B,oBACE3B,MAAA,CAAAwB,OAAA,CAAAI,aAAA,CAACzB,QAAA,CAAA0B,OAAO,IACNX,IAAI,EAAE,IAAI,CAACD,KAAK,CAACC,IAAK,EACtBY,IAAI,EAAE,MAAO,EACbX,KAAK,EAAE,IAAI,CAACF,KAAK,CAACE,KAAM,EACxBY,SAAS,EAAE,IAAI,CAACT,aAAc,EAC9BF,aAAa,EAAE,IAAI,CAACA,aAAc,EAClCY,KAAK,EAAE,GAAI,EACZ,CAAC,CAEN,CAAC,QAAA5B,iBAAA,GAjBoC6B,cAAK,CAACC,SAAS","ignoreList":[]}
|
|
@@ -6,5 +6,5 @@ type DOMRectDefaultValues = Omit<DOMRect, 'toJSON'>;
|
|
|
6
6
|
* @param element - ref элемента или сам элемент
|
|
7
7
|
* @returns - возвращает размер элемента и его позицию относительно viewport
|
|
8
8
|
*/
|
|
9
|
-
export declare const getDOMRect: <T extends Element>(element: Nullable<T> | React.RefObject<T>) => DOMRectDefaultValues;
|
|
9
|
+
export declare const getDOMRect: <T extends Element>(element: Nullable<T> | React.RefObject<T | null>) => DOMRectDefaultValues;
|
|
10
10
|
export {};
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
* @param element - ref элемента или сам элемент
|
|
7
7
|
* @returns - возвращает размер элемента и его позицию относительно viewport
|
|
8
8
|
*/
|
|
9
|
-
var getDOMRect = exports.getDOMRect = function getDOMRect(
|
|
9
|
+
var getDOMRect = exports.getDOMRect = function getDOMRect(
|
|
10
|
+
element)
|
|
11
|
+
{
|
|
10
12
|
var defaultValues = {
|
|
11
13
|
width: 0,
|
|
12
14
|
height: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getDOMRect","exports","element","defaultValues","width","height","x","y","bottom","left","right","top","getRefRect","getElementRect","getBoundingClientRect","ref","current"],"sources":["getDOMRect.ts"],"sourcesContent":["import type { Nullable } from '../../typings/utility-types';\ntype DOMRectDefaultValues = Omit<DOMRect, 'toJSON'>;\n/**\n * Возвращает размер элемента и его позицию относительно viewport\n *\n * @param element - ref элемента или сам элемент\n * @returns - возвращает размер элемента и его позицию относительно viewport\n */\nexport const getDOMRect = <T extends Element>(element: Nullable<T> | React.RefObject<T
|
|
1
|
+
{"version":3,"names":["getDOMRect","exports","element","defaultValues","width","height","x","y","bottom","left","right","top","getRefRect","getElementRect","getBoundingClientRect","ref","current"],"sources":["getDOMRect.ts"],"sourcesContent":["import type { Nullable } from '../../typings/utility-types';\ntype DOMRectDefaultValues = Omit<DOMRect, 'toJSON'>;\n/**\n * Возвращает размер элемента и его позицию относительно viewport\n *\n * @param element - ref элемента или сам элемент\n * @returns - возвращает размер элемента и его позицию относительно viewport\n */\nexport const getDOMRect = <T extends Element>(\n element: Nullable<T> | React.RefObject<T | null>,\n): DOMRectDefaultValues => {\n const defaultValues: DOMRectDefaultValues = {\n width: 0,\n height: 0,\n x: 0,\n y: 0,\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n };\n if (element && 'current' in element) {\n return getRefRect(defaultValues, element);\n }\n return getElementRect(defaultValues, element);\n};\nconst getElementRect = (defaultValues: DOMRectDefaultValues, element: Nullable<Element>) => {\n if (element) {\n return element.getBoundingClientRect();\n }\n return defaultValues;\n};\nconst getRefRect = <T extends Element>(defaultValues: DOMRectDefaultValues, ref: React.RefObject<T | null>) => {\n if (ref?.current) {\n return ref.current.getBoundingClientRect();\n }\n return defaultValues;\n};\n"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAG,SAAbA,UAAUA;AACrBE,OAAgD;AACvB;EACzB,IAAMC,aAAmC,GAAG;IAC1CC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,CAAC,EAAE,CAAC;IACJC,CAAC,EAAE,CAAC;IACJC,MAAM,EAAE,CAAC;IACTC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,GAAG,EAAE;EACP,CAAC;EACD,IAAIT,OAAO,IAAI,SAAS,IAAIA,OAAO,EAAE;IACnC,OAAOU,UAAU,CAACT,aAAa,EAAED,OAAO,CAAC;EAC3C;EACA,OAAOW,cAAc,CAACV,aAAa,EAAED,OAAO,CAAC;AAC/C,CAAC;AACD,IAAMW,cAAc,GAAG,SAAjBA,cAAcA,CAAIV,aAAmC,EAAED,OAA0B,EAAK;EAC1F,IAAIA,OAAO,EAAE;IACX,OAAOA,OAAO,CAACY,qBAAqB,CAAC,CAAC;EACxC;EACA,OAAOX,aAAa;AACtB,CAAC;AACD,IAAMS,UAAU,GAAG,SAAbA,UAAUA,CAAuBT,aAAmC,EAAEY,GAA8B,EAAK;EAC7G,IAAIA,GAAG,YAAHA,GAAG,CAAEC,OAAO,EAAE;IAChB,OAAOD,GAAG,CAACC,OAAO,CAACF,qBAAqB,CAAC,CAAC;EAC5C;EACA,OAAOX,aAAa;AACtB,CAAC","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
export declare const fixFirefoxModifiedClickOnLabel: (ref: React.RefObject<HTMLInputElement>) => (e: React.MouseEvent<HTMLLabelElement>) => void;
|
|
2
|
+
export declare const fixFirefoxModifiedClickOnLabel: (ref: React.RefObject<HTMLInputElement | null>) => (e: React.MouseEvent<HTMLLabelElement>) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_globalObject","require","_client","fixFirefoxModifiedClickOnLabel","exports","ref","e","input","current","globalObject","getOwnerGlobalObject","disabled","isBrowser","isFirefox","shiftKey","ctrlKey","metaKey","checked","type","persist","MouseEvent","dispatchEvent","nativeEvent"],"sources":["fixFirefoxModifiedClickOnLabel.ts"],"sourcesContent":["import type React from 'react';\n\nimport { isBrowser, getOwnerGlobalObject } from '../../lib/globalObject';\nimport { isFirefox } from '../client';\n\n// Checkbox not checked in Firefox if key of modifier was active\n// shift+click, ctrl+click on Win and cmd+click on Mac\n// https://bugzilla.mozilla.org/show_bug.cgi?id=559506\nexport const fixFirefoxModifiedClickOnLabel =\n (ref: React.RefObject<HTMLInputElement>) => (e: React.MouseEvent<HTMLLabelElement>) => {\n const input = ref.current;\n if (!input) {\n return;\n }\n\n const globalObject = getOwnerGlobalObject(input);\n if (!input.disabled && isBrowser(globalObject) && isFirefox && (e.shiftKey || e.ctrlKey || e.metaKey)) {\n // Currently only valid for Radio and Checkbox\n input.checked = !input.checked;\n const type = input.type;\n input.type = 'text';\n e.persist();\n if (globalObject.MouseEvent) {\n input.dispatchEvent(new globalObject.MouseEvent('change', e.nativeEvent));\n }\n input.type = type;\n }\n };\n"],"mappings":";;AAEA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;;AAEA;AACA;AACA;AACO,IAAME,8BAA8B,GAAAC,OAAA,CAAAD,8BAAA;AACzC,SADWA,8BAA8BA,CACxCE,
|
|
1
|
+
{"version":3,"names":["_globalObject","require","_client","fixFirefoxModifiedClickOnLabel","exports","ref","e","input","current","globalObject","getOwnerGlobalObject","disabled","isBrowser","isFirefox","shiftKey","ctrlKey","metaKey","checked","type","persist","MouseEvent","dispatchEvent","nativeEvent"],"sources":["fixFirefoxModifiedClickOnLabel.ts"],"sourcesContent":["import type React from 'react';\n\nimport { isBrowser, getOwnerGlobalObject } from '../../lib/globalObject';\nimport { isFirefox } from '../client';\n\n// Checkbox not checked in Firefox if key of modifier was active\n// shift+click, ctrl+click on Win and cmd+click on Mac\n// https://bugzilla.mozilla.org/show_bug.cgi?id=559506\nexport const fixFirefoxModifiedClickOnLabel =\n (ref: React.RefObject<HTMLInputElement | null>) => (e: React.MouseEvent<HTMLLabelElement>) => {\n const input = ref.current;\n if (!input) {\n return;\n }\n\n const globalObject = getOwnerGlobalObject(input);\n if (!input.disabled && isBrowser(globalObject) && isFirefox && (e.shiftKey || e.ctrlKey || e.metaKey)) {\n // Currently only valid for Radio and Checkbox\n input.checked = !input.checked;\n const type = input.type;\n input.type = 'text';\n e.persist();\n if (globalObject.MouseEvent) {\n input.dispatchEvent(new globalObject.MouseEvent('change', e.nativeEvent));\n }\n input.type = type;\n }\n };\n"],"mappings":";;AAEA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;;AAEA;AACA;AACA;AACO,IAAME,8BAA8B,GAAAC,OAAA,CAAAD,8BAAA;AACzC,SADWA,8BAA8BA,CACxCE,GAA6C,UAAK,UAACC,CAAqC,EAAK;IAC5F,IAAMC,KAAK,GAAGF,GAAG,CAACG,OAAO;IACzB,IAAI,CAACD,KAAK,EAAE;MACV;IACF;;IAEA,IAAME,YAAY,GAAG,IAAAC,kCAAoB,EAACH,KAAK,CAAC;IAChD,IAAI,CAACA,KAAK,CAACI,QAAQ,IAAI,IAAAC,uBAAS,EAACH,YAAY,CAAC,IAAII,iBAAS,KAAKP,CAAC,CAACQ,QAAQ,IAAIR,CAAC,CAACS,OAAO,IAAIT,CAAC,CAACU,OAAO,CAAC,EAAE;MACrG;MACAT,KAAK,CAACU,OAAO,GAAG,CAACV,KAAK,CAACU,OAAO;MAC9B,IAAMC,IAAI,GAAGX,KAAK,CAACW,IAAI;MACvBX,KAAK,CAACW,IAAI,GAAG,MAAM;MACnBZ,CAAC,CAACa,OAAO,CAAC,CAAC;MACX,IAAIV,YAAY,CAACW,UAAU,EAAE;QAC3Bb,KAAK,CAACc,aAAa,CAAC,IAAIZ,YAAY,CAACW,UAAU,CAAC,QAAQ,EAAEd,CAAC,CAACgB,WAAW,CAAC,CAAC;MAC3E;MACAf,KAAK,CAACW,IAAI,GAAGA,IAAI;IACnB;EACF,CAAC","ignoreList":[]}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import type { PropsWithoutRef } from 'react';
|
|
1
2
|
export interface ReactUIComponentWithRef<T, P> extends React.NamedExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<T>> {
|
|
2
3
|
__KONTUR_REACT_UI__: string;
|
|
3
4
|
}
|
|
4
|
-
export declare function forwardRefAndName<ElementType, Props, Extra extends Record<string, unknown> = Record<never, never>>(name: string, render: React.ForwardRefRenderFunction<ElementType, Props
|
|
5
|
+
export declare function forwardRefAndName<ElementType, Props, Extra extends Record<string, unknown> = Record<never, never>>(name: string, render: React.ForwardRefRenderFunction<ElementType, PropsWithoutRef<Props>>): ReactUIComponentWithRef<ElementType, Props> & Extra;
|
|
5
6
|
export interface ReactUIIconWithRef<T, P> extends ReactUIComponentWithRef<T, P> {
|
|
6
7
|
__KONTUR_ICON__: boolean;
|
|
7
8
|
}
|
|
8
|
-
export declare function forwardRefAndIconName<ElementType, Props>(name: string, render: React.ForwardRefRenderFunction<ElementType, Props
|
|
9
|
+
export declare function forwardRefAndIconName<ElementType, Props>(name: string, render: React.ForwardRefRenderFunction<ElementType, PropsWithoutRef<Props>>): ReactUIIconWithRef<ElementType, Props>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
"use strict";exports.__esModule = true;exports.forwardRefAndIconName = forwardRefAndIconName;exports.forwardRefAndName = forwardRefAndName;
|
|
1
|
+
"use strict";exports.__esModule = true;exports.forwardRefAndIconName = forwardRefAndIconName;exports.forwardRefAndName = forwardRefAndName;
|
|
2
|
+
var _react = require("react");
|
|
2
3
|
|
|
3
4
|
|
|
4
5
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","forwardName","name","render","displayName","__KONTUR_REACT_UI__","forwardRefAndName","forwardRef","forwardIconName","__KONTUR_ICON__","forwardRefAndIconName"],"sources":["forwardRefAndName.ts"],"sourcesContent":["import { forwardRef } from 'react';\n\nexport interface ReactUIComponentWithRef<T, P>\n extends React.NamedExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<T>> {\n __KONTUR_REACT_UI__: string;\n}\n\nfunction forwardName<ElementType, Props>(\n name: string,\n render: ReactUIComponentWithRef<ElementType, Props>,\n): ReactUIComponentWithRef<ElementType, Props> {\n render.displayName = name;\n render.__KONTUR_REACT_UI__ = name;\n return render;\n}\n\nexport function forwardRefAndName<ElementType, Props, Extra extends Record<string, unknown> = Record<never, never>>(\n name: string,\n render: React.ForwardRefRenderFunction<ElementType, Props
|
|
1
|
+
{"version":3,"names":["_react","require","forwardName","name","render","displayName","__KONTUR_REACT_UI__","forwardRefAndName","forwardRef","forwardIconName","__KONTUR_ICON__","forwardRefAndIconName"],"sources":["forwardRefAndName.ts"],"sourcesContent":["import type { PropsWithoutRef } from 'react';\nimport { forwardRef } from 'react';\n\nexport interface ReactUIComponentWithRef<T, P>\n extends React.NamedExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<T>> {\n __KONTUR_REACT_UI__: string;\n}\n\nfunction forwardName<ElementType, Props>(\n name: string,\n render: ReactUIComponentWithRef<ElementType, Props>,\n): ReactUIComponentWithRef<ElementType, Props> {\n render.displayName = name;\n render.__KONTUR_REACT_UI__ = name;\n return render;\n}\n\nexport function forwardRefAndName<ElementType, Props, Extra extends Record<string, unknown> = Record<never, never>>(\n name: string,\n render: React.ForwardRefRenderFunction<ElementType, PropsWithoutRef<Props>>,\n): ReactUIComponentWithRef<ElementType, Props> & Extra {\n return forwardName<ElementType, Props>(\n name,\n forwardRef(render) as ReactUIComponentWithRef<ElementType, Props> & Extra,\n ) as ReactUIComponentWithRef<ElementType, Props> & Extra;\n}\n\nexport interface ReactUIIconWithRef<T, P> extends ReactUIComponentWithRef<T, P> {\n __KONTUR_ICON__: boolean;\n}\n\nfunction forwardIconName<ElementType, Props>(\n name: string,\n render: ReactUIIconWithRef<ElementType, Props>,\n): ReactUIIconWithRef<ElementType, Props> {\n render.displayName = name;\n render.__KONTUR_REACT_UI__ = name;\n render.__KONTUR_ICON__ = true;\n return render;\n}\n\nexport function forwardRefAndIconName<ElementType, Props>(\n name: string,\n render: React.ForwardRefRenderFunction<ElementType, PropsWithoutRef<Props>>,\n): ReactUIIconWithRef<ElementType, Props> {\n return forwardIconName<ElementType, Props>(name, forwardRef(render) as ReactUIIconWithRef<ElementType, Props>);\n}\n"],"mappings":";AACA,IAAAA,MAAA,GAAAC,OAAA;;;;;;;AAOA,SAASC,WAAWA;AAClBC,IAAY;AACZC,MAAmD;AACN;EAC7CA,MAAM,CAACC,WAAW,GAAGF,IAAI;EACzBC,MAAM,CAACE,mBAAmB,GAAGH,IAAI;EACjC,OAAOC,MAAM;AACf;;AAEO,SAASG,iBAAiBA;AAC/BJ,IAAY;AACZC,MAA2E;AACtB;EACrD,OAAOF,WAAW;IAChBC,IAAI;IACJ,IAAAK,iBAAU,EAACJ,MAAM;EACnB,CAAC;AACH;;;;;;AAMA,SAASK,eAAeA;AACtBN,IAAY;AACZC,MAA8C;AACN;EACxCA,MAAM,CAACC,WAAW,GAAGF,IAAI;EACzBC,MAAM,CAACE,mBAAmB,GAAGH,IAAI;EACjCC,MAAM,CAACM,eAAe,GAAG,IAAI;EAC7B,OAAON,MAAM;AACf;;AAEO,SAASO,qBAAqBA;AACnCR,IAAY;AACZC,MAA2E;AACnC;EACxC,OAAOK,eAAe,CAAqBN,IAAI,eAAE,IAAAK,iBAAU,EAACJ,MAAM,CAA2C,CAAC;AAChH","ignoreList":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;exports.__esModule = true;exports.getElementRef = getElementRef;var _react = _interopRequireDefault(require("react"));
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Получает ссылку на элемент, учитывая разные версии React
|
|
5
|
+
*/
|
|
6
|
+
function getElementRef(element) {
|
|
7
|
+
if (
|
|
8
|
+
parseInt(_react.default.version, 10) >= 19 &&
|
|
9
|
+
element.props &&
|
|
10
|
+
typeof element.props === 'object' &&
|
|
11
|
+
'ref' in element.props)
|
|
12
|
+
{
|
|
13
|
+
return element.props.ref;
|
|
14
|
+
}
|
|
15
|
+
return element.ref;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","getElementRef","element","parseInt","React","version","props","ref"],"sources":["getElementRef.ts"],"sourcesContent":["import React from 'react';\n\n/**\n * Получает ссылку на элемент, учитывая разные версии React\n */\nexport function getElementRef(element: React.ReactElement) {\n if (\n parseInt(React.version, 10) >= 19 &&\n element.props &&\n typeof element.props === 'object' &&\n 'ref' in element.props\n ) {\n return element.props.ref;\n }\n return (element as any).ref;\n}\n"],"mappings":"0KAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;;AAEA;AACA;AACA;AACO,SAASC,aAAaA,CAACC,OAA2B,EAAE;EACzD;EACEC,QAAQ,CAACC,cAAK,CAACC,OAAO,EAAE,EAAE,CAAC,IAAI,EAAE;EACjCH,OAAO,CAACI,KAAK;EACb,OAAOJ,OAAO,CAACI,KAAK,KAAK,QAAQ;EACjC,KAAK,IAAIJ,OAAO,CAACI,KAAK;EACtB;IACA,OAAOJ,OAAO,CAACI,KAAK,CAACC,GAAG;EAC1B;EACA,OAAQL,OAAO,CAASK,GAAG;AAC7B","ignoreList":[]}
|
|
@@ -15,9 +15,6 @@ export declare function locale<C>(controlName: keyof LocaleControls, localeHelpe
|
|
|
15
15
|
render(): React.ReactNode;
|
|
16
16
|
readonly props: Readonly<{}>;
|
|
17
17
|
state: Readonly<{}>;
|
|
18
|
-
refs: {
|
|
19
|
-
[key: string]: React.ReactInstance;
|
|
20
|
-
};
|
|
21
18
|
componentDidMount?(): void;
|
|
22
19
|
shouldComponentUpdate?(nextProps: Readonly<{}>, nextState: Readonly<{}>, nextContext: any): boolean;
|
|
23
20
|
componentWillUnmount?(): void;
|
package/cjs/lib/mergeRefs.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
+
import type { RefCallback } from 'react';
|
|
2
3
|
import type { Nullable } from '../typings/utility-types';
|
|
3
|
-
type RefVariants<T> = Nullable<React.RefObject<T> | React.RefCallback<T>>;
|
|
4
|
-
type RefCallback<T> = ReturnType<typeof createRefCallback<T>>;
|
|
4
|
+
type RefVariants<T> = Nullable<React.RefObject<T | null> | React.RefCallback<T>>;
|
|
5
5
|
/**
|
|
6
6
|
* Позволяет объединить несколько параметров ref в один вызов, в котором во все переданные параметры просетится ref.
|
|
7
7
|
*
|
|
@@ -19,5 +19,4 @@ type RefCallback<T> = ReturnType<typeof createRefCallback<T>>;
|
|
|
19
19
|
* });
|
|
20
20
|
*/
|
|
21
21
|
export declare function mergeRefs<T>(...refs: Array<RefVariants<T>>): RefCallback<T>;
|
|
22
|
-
declare function createRefCallback<T>(refs: Array<RefVariants<T>>): (value: T) => void;
|
|
23
22
|
export {};
|
package/cjs/lib/mergeRefs.js
CHANGED
package/cjs/lib/mergeRefs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_utils","require","CALLBACK_AS_KEY","callbackAsKey","cache","WeakMap","mergeRefs","_len","arguments","length","refs","Array","_key","cacheLevel","getLeafRefInCache","apply","cachedCallback","get","newRefCallback","createRefCallback","set","applyRef","value","forEach","ref","isNonNullable","current","_len2","_key2","_i","_refs","isNullable","child","leaf"],"sources":["mergeRefs.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { Nullable } from '../typings/utility-types';\n\nimport { isNonNullable, isNullable } from './utils';\n\ntype RefVariants<T> = Nullable<React.RefObject<T> | React.RefCallback<T>>;\
|
|
1
|
+
{"version":3,"names":["_utils","require","CALLBACK_AS_KEY","callbackAsKey","cache","WeakMap","mergeRefs","_len","arguments","length","refs","Array","_key","cacheLevel","getLeafRefInCache","apply","cachedCallback","get","newRefCallback","createRefCallback","set","applyRef","value","forEach","ref","isNonNullable","current","_len2","_key2","_i","_refs","isNullable","child","leaf"],"sources":["mergeRefs.ts"],"sourcesContent":["import type React from 'react';\nimport type { RefCallback } from 'react';\n\nimport type { Nullable } from '../typings/utility-types';\n\nimport { isNonNullable, isNullable } from './utils';\n\ntype RefVariants<T> = Nullable<React.RefObject<T | null> | React.RefCallback<T>>;\nconst CALLBACK_AS_KEY = { callbackAsKey: true };\n\ntype CacheKey<T> = NonNullable<RefVariants<T> | typeof CALLBACK_AS_KEY>;\ntype CacheValue<T> = RefCallback<T> | WeakMap<CacheKey<T>, CacheValue<T>>;\n\nconst cache = new WeakMap<CacheKey<any>, CacheValue<any>>();\n\n/**\n * Позволяет объединить несколько параметров ref в один вызов, в котором во все переданные параметры просетится ref.\n *\n * Кеширует результат возвращаемой функции, так что при одинаковых входных параметрах React-у будет возвращена одинаковая функция.\n * Это позволит не вызывать лишние commitAttachRef и commitDetachRef и не ловить сайдэффекты связанные со значением ref в моменте\n *\n * Не прокидывай в параметрах стрелочные функции, так результат не будет закеширован.\n *\n * @returns function that passed refs: (...refs) =>\n *\n * @example\n * const SomeComponent = forwardRef((props, ref) => {\n * const localRef = useRef();\n * return <div ref={mergeRefs(localRef, ref)} />;\n * });\n */\nexport function mergeRefs<T>(...refs: Array<RefVariants<T>>): RefCallback<T> {\n const cacheLevel = getLeafRefInCache(...refs);\n\n const cachedCallback = cacheLevel.get(CALLBACK_AS_KEY);\n if (cachedCallback && typeof cachedCallback === 'function') {\n return cachedCallback;\n }\n\n const newRefCallback = createRefCallback<T>(refs);\n cacheLevel.set(CALLBACK_AS_KEY, newRefCallback);\n\n return newRefCallback;\n}\n\nfunction createRefCallback<T>(refs: Array<RefVariants<T>>) {\n function applyRef(value: T) {\n refs.forEach((ref) => {\n if (typeof ref === 'function') {\n return ref(value);\n } else if (isNonNullable(ref)) {\n return ((ref as React.MutableRefObject<T>).current = value);\n }\n });\n }\n return applyRef;\n}\n\nfunction getLeafRefInCache<T>(...refs: Array<RefVariants<T>>) {\n let cacheLevel = cache;\n for (const ref of refs) {\n if (isNullable(ref)) {\n continue;\n }\n const child = cacheLevel.get(ref);\n\n if (child && typeof child !== 'function') {\n cacheLevel = child;\n } else {\n const leaf = new WeakMap();\n cacheLevel.set(ref, leaf);\n cacheLevel = leaf;\n }\n }\n return cacheLevel;\n}\n"],"mappings":";;;;;AAKA,IAAAA,MAAA,GAAAC,OAAA;;;AAGA,IAAMC,eAAe,GAAG,EAAEC,aAAa,EAAE,IAAI,CAAC,CAAC;;;;;AAK/C,IAAMC,KAAK,GAAG,IAAIC,OAAO,CAAiC,CAAC;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,SAASA,CAAA,EAAoD,UAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAA7CC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,KAAJF,IAAI,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;EAClC,IAAMC,UAAU,GAAGC,iBAAiB,CAAAC,KAAA,SAAIL,IAAI,CAAC;;EAE7C,IAAMM,cAAc,GAAGH,UAAU,CAACI,GAAG,CAACf,eAAe,CAAC;EACtD,IAAIc,cAAc,IAAI,OAAOA,cAAc,KAAK,UAAU,EAAE;IAC1D,OAAOA,cAAc;EACvB;;EAEA,IAAME,cAAc,GAAGC,iBAAiB,CAAIT,IAAI,CAAC;EACjDG,UAAU,CAACO,GAAG,CAAClB,eAAe,EAAEgB,cAAc,CAAC;;EAE/C,OAAOA,cAAc;AACvB;;AAEA,SAASC,iBAAiBA,CAAIT,IAA2B,EAAE;EACzD,SAASW,QAAQA,CAACC,KAAQ,EAAE;IAC1BZ,IAAI,CAACa,OAAO,CAAC,UAACC,GAAG,EAAK;MACpB,IAAI,OAAOA,GAAG,KAAK,UAAU,EAAE;QAC7B,OAAOA,GAAG,CAACF,KAAK,CAAC;MACnB,CAAC,MAAM,IAAI,IAAAG,oBAAa,EAACD,GAAG,CAAC,EAAE;QAC7B,OAASA,GAAG,CAA+BE,OAAO,GAAGJ,KAAK;MAC5D;IACF,CAAC,CAAC;EACJ;EACA,OAAOD,QAAQ;AACjB;;AAEA,SAASP,iBAAiBA,CAAA,EAAoC;EAC5D,IAAID,UAAU,GAAGT,KAAK,CAAC,SAAAuB,KAAA,GAAAnB,SAAA,CAAAC,MAAA,EADQC,IAAI,OAAAC,KAAA,CAAAgB,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA,KAAJlB,IAAI,CAAAkB,KAAA,IAAApB,SAAA,CAAAoB,KAAA;EAEnC,SAAAC,EAAA,MAAAC,KAAA,GAAkBpB,IAAI,EAAAmB,EAAA,GAAAC,KAAA,CAAArB,MAAA,EAAAoB,EAAA,IAAE,CAAnB,IAAML,GAAG,GAAAM,KAAA,CAAAD,EAAA;IACZ,IAAI,IAAAE,iBAAU,EAACP,GAAG,CAAC,EAAE;MACnB;IACF;IACA,IAAMQ,KAAK,GAAGnB,UAAU,CAACI,GAAG,CAACO,GAAG,CAAC;;IAEjC,IAAIQ,KAAK,IAAI,OAAOA,KAAK,KAAK,UAAU,EAAE;MACxCnB,UAAU,GAAGmB,KAAK;IACpB,CAAC,MAAM;MACL,IAAMC,IAAI,GAAG,IAAI5B,OAAO,CAAC,CAAC;MAC1BQ,UAAU,CAACO,GAAG,CAACI,GAAG,EAAES,IAAI,CAAC;MACzBpB,UAAU,GAAGoB,IAAI;IACnB;EACF;EACA,OAAOpB,UAAU;AACnB","ignoreList":[]}
|
|
@@ -8,7 +8,12 @@ function reactGetTextContent(rootReactNode) {
|
|
|
8
8
|
result += reactNode.toString();
|
|
9
9
|
} else if (Array.isArray(reactNode)) {
|
|
10
10
|
reactNode.forEach(function (node) {return getText(node);});
|
|
11
|
-
} else if (
|
|
11
|
+
} else if (
|
|
12
|
+
/*#__PURE__*/_react.default.isValidElement(reactNode) &&
|
|
13
|
+
reactNode.props &&
|
|
14
|
+
typeof reactNode.props === 'object' &&
|
|
15
|
+
'children' in reactNode.props)
|
|
16
|
+
{
|
|
12
17
|
var children = reactNode.props.children;
|
|
13
18
|
|
|
14
19
|
getText(children);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","reactGetTextContent","rootReactNode","result","getText","reactNode","toString","Array","isArray","forEach","node","React","isValidElement","props","children"],"sources":["reactGetTextContent.ts"],"sourcesContent":["import React from 'react';\n\nexport function reactGetTextContent(rootReactNode: React.ReactNode) {\n let result = '';\n\n const getText = (reactNode: React.ReactNode) => {\n if (typeof reactNode === 'string' || typeof reactNode === 'number') {\n result += reactNode.toString();\n } else if (Array.isArray(reactNode)) {\n reactNode.forEach((node) => getText(node));\n } else if (React.isValidElement(reactNode)
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","reactGetTextContent","rootReactNode","result","getText","reactNode","toString","Array","isArray","forEach","node","React","isValidElement","props","children"],"sources":["reactGetTextContent.ts"],"sourcesContent":["import React from 'react';\n\nexport function reactGetTextContent(rootReactNode: React.ReactNode) {\n let result = '';\n\n const getText = (reactNode: React.ReactNode) => {\n if (typeof reactNode === 'string' || typeof reactNode === 'number') {\n result += reactNode.toString();\n } else if (Array.isArray(reactNode)) {\n reactNode.forEach((node) => getText(node));\n } else if (\n React.isValidElement(reactNode) &&\n reactNode.props &&\n typeof reactNode.props === 'object' &&\n 'children' in reactNode.props\n ) {\n const { children } = reactNode.props;\n\n getText(children as React.ReactNode);\n }\n };\n\n getText(rootReactNode);\n\n return result;\n}\n"],"mappings":"sLAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;;AAEO,SAASC,mBAAmBA,CAACC,aAA8B,EAAE;EAClE,IAAIC,MAAM,GAAG,EAAE;;EAEf,IAAMC,OAAO,GAAG,SAAVA,OAAOA,CAAIC,SAA0B,EAAK;IAC9C,IAAI,OAAOA,SAAS,KAAK,QAAQ,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE;MAClEF,MAAM,IAAIE,SAAS,CAACC,QAAQ,CAAC,CAAC;IAChC,CAAC,MAAM,IAAIC,KAAK,CAACC,OAAO,CAACH,SAAS,CAAC,EAAE;MACnCA,SAAS,CAACI,OAAO,CAAC,UAACC,IAAI,UAAKN,OAAO,CAACM,IAAI,CAAC,GAAC;IAC5C,CAAC,MAAM;IACL,aAAAC,cAAK,CAACC,cAAc,CAACP,SAAS,CAAC;IAC/BA,SAAS,CAACQ,KAAK;IACf,OAAOR,SAAS,CAACQ,KAAK,KAAK,QAAQ;IACnC,UAAU,IAAIR,SAAS,CAACQ,KAAK;IAC7B;MACA,IAAQC,QAAQ,GAAKT,SAAS,CAACQ,KAAK,CAA5BC,QAAQ;;MAEhBV,OAAO,CAACU,QAA2B,CAAC;IACtC;EACF,CAAC;;EAEDV,OAAO,CAACF,aAAa,CAAC;;EAEtB,OAAOC,MAAM;AACf","ignoreList":[]}
|
|
@@ -17,9 +17,6 @@ export declare function withRenderEnvironment<T extends Constructor<React.Compon
|
|
|
17
17
|
forceUpdate(callback?: (() => void) | undefined): void;
|
|
18
18
|
readonly props: Readonly<{}>;
|
|
19
19
|
state: Readonly<{}>;
|
|
20
|
-
refs: {
|
|
21
|
-
[key: string]: React.ReactInstance;
|
|
22
|
-
};
|
|
23
20
|
componentDidMount?(): void;
|
|
24
21
|
shouldComponentUpdate?(nextProps: Readonly<{}>, nextState: Readonly<{}>, nextContext: any): boolean;
|
|
25
22
|
componentWillUnmount?(): void;
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _warning = _interopRequireDefault(require("warning"));
|
|
1
|
+
"use strict";exports.__esModule = true;exports.getRootNode = void 0;
|
|
4
2
|
|
|
5
3
|
|
|
6
4
|
var _utils = require("../utils");
|
|
@@ -50,27 +48,6 @@ var getRootNode = exports.getRootNode = function getRootNode(instance) {
|
|
|
50
48
|
return rootNode;
|
|
51
49
|
}
|
|
52
50
|
|
|
53
|
-
try {
|
|
54
|
-
// rootNode is undefined, which means that the getter doesn't exists or returns the undefined
|
|
55
|
-
// anyway, it tell us that the convention is not respected,
|
|
56
|
-
// so, we have to fall back to the deprecated findDOMNode, which breaks StrictMode
|
|
57
|
-
// instance can still be a class component or an imperative handle (i.e., anything, except null/undefined/Element)
|
|
58
|
-
rootNode = (0, _reactDom.findDOMNode)(instance);
|
|
59
|
-
} catch (e) {
|
|
60
|
-
// but findDOMNode doesn`t accept everything that instance can be at this point,
|
|
61
|
-
// so we have to handle exceptions
|
|
62
|
-
// see https://github.com/facebook/react/blob/cae63505/packages/react-dom/src/__tests__/findDOMNode-test.js#L66-L86
|
|
63
|
-
(0, _warning.default)(
|
|
64
|
-
false,
|
|
65
|
-
'[getRootNode]: can`t fallback to findDOMNode.' +
|
|
66
|
-
'\n' +
|
|
67
|
-
'See https://github.com/skbkontur/retail-ui/blob/master/packages/react-ui/README.md#strictmode' +
|
|
68
|
-
'\n\n' + (
|
|
69
|
-
e == null ? void 0 : e.message) || String(e)
|
|
70
|
-
);
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
51
|
// the findDOMNode can also return Text, but we are only interested in Elements, so just filter it
|
|
75
52
|
return (0, _utils.isElement)(rootNode) ? rootNode : null;
|
|
76
53
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_utils","require","_rootNodeDecorator","getRootNode","exports","instance","isElement","rootNode","isInstanceWithRootNode","undefined"],"sources":["getRootNode.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { Nullable } from '../../typings/utility-types';\nimport { isElement } from '../utils';\n\nimport { isInstanceWithRootNode } from './rootNodeDecorator';\n\n/**\n * Extracts component's root Element (HTMLElement/SVGElement) out of it's instance\n * following the \"StrictMode support convention\" (@see README.md#strictmode, #2518).\n *\n * Replaces findDOMNode but falls back to it if \"convention\" is not respected.\n *\n * @param instance Component's instance provided by React.Ref or `this` inside class-components.\n * @returns Component's root `Element` or null\n */\n\nexport const getRootNode = (instance: Nullable<React.ReactInstance>): Nullable<Element> => {\n /**\n * Options of what instance can be:\n * 1. null or undefined\n * 2. DOM Element\n * 3. class Component instance (object)\n * 4. literally anything, returned from useImperativeHandle\n */\n\n if (!instance) {\n // instance can be `null` if component was unmounted\n // also checking undefined for convenient usage\n return null;\n }\n\n if (isElement(instance)) {\n // instance can be an Element already if its coming\n // from Refs of intrinsic elements (<div />, <button />, etc.)\n return instance;\n }\n\n let rootNode;\n\n if (isInstanceWithRootNode(instance)) {\n rootNode = instance.getRootNode();\n }\n\n if (rootNode !== undefined) {\n // the getter exists and has returned something, it should be what we are looking for\n // probably its an Element or null (which is also OK, e.g. Popup/Tooltip/Hint before opening)\n return rootNode;\n }\n\n // the findDOMNode can also return Text, but we are only interested in Elements, so just filter it\n return isElement(rootNode) ? rootNode : null;\n};\n"],"mappings":";;;AAGA,IAAAA,MAAA,GAAAC,OAAA;;AAEA,IAAAC,kBAAA,GAAAD,OAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,IAAME,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,SAAdA,WAAWA,CAAIE,QAAuC,EAAwB;EACzF;AACF;AACA;AACA;AACA;AACA;AACA;;EAEE,IAAI,CAACA,QAAQ,EAAE;IACb;IACA;IACA,OAAO,IAAI;EACb;;EAEA,IAAI,IAAAC,gBAAS,EAACD,QAAQ,CAAC,EAAE;IACvB;IACA;IACA,OAAOA,QAAQ;EACjB;;EAEA,IAAIE,QAAQ;;EAEZ,IAAI,IAAAC,yCAAsB,EAACH,QAAQ,CAAC,EAAE;IACpCE,QAAQ,GAAGF,QAAQ,CAACF,WAAW,CAAC,CAAC;EACnC;;EAEA,IAAII,QAAQ,KAAKE,SAAS,EAAE;IAC1B;IACA;IACA,OAAOF,QAAQ;EACjB;;EAEA;EACA,OAAO,IAAAD,gBAAS,EAACC,QAAQ,CAAC,GAAGA,QAAQ,GAAG,IAAI;AAC9C,CAAC","ignoreList":[]}
|
|
@@ -33,9 +33,6 @@ export declare function rootNode<T extends DecoratableClassComponent>(Component:
|
|
|
33
33
|
render(): React.ReactNode;
|
|
34
34
|
readonly props: Readonly<{}>;
|
|
35
35
|
state: Readonly<{}>;
|
|
36
|
-
refs: {
|
|
37
|
-
[key: string]: React.ReactInstance;
|
|
38
|
-
};
|
|
39
36
|
componentDidMount?(): void;
|
|
40
37
|
shouldComponentUpdate?(nextProps: Readonly<{}>, nextState: Readonly<{}>, nextContext: any): boolean;
|
|
41
38
|
componentWillUnmount?(): void;
|
|
@@ -13,9 +13,6 @@ export declare function withSize<T extends Constructor<React.Component<WithSizeP
|
|
|
13
13
|
forceUpdate(callback?: (() => void) | undefined): void;
|
|
14
14
|
readonly props: Readonly<WithSizeProps>;
|
|
15
15
|
state: Readonly<{}>;
|
|
16
|
-
refs: {
|
|
17
|
-
[key: string]: React.ReactInstance;
|
|
18
|
-
};
|
|
19
16
|
componentDidMount?(): void;
|
|
20
17
|
shouldComponentUpdate?(nextProps: Readonly<WithSizeProps>, nextState: Readonly<{}>, nextContext: any): boolean;
|
|
21
18
|
componentWillUnmount?(): void;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
+
import type { JSX } from 'react';
|
|
2
3
|
import type { Merge } from '../../typings/utility-types';
|
|
3
4
|
type PropsWithComponent<P, T extends React.ElementType> = P & {
|
|
4
5
|
/**
|
|
@@ -11,7 +12,7 @@ export type PolymorphicPropsWithRef<P, T extends React.ElementType> = Merge<T ex
|
|
|
11
12
|
type PolymorphicExoticComponent<P = Record<string, unknown>, T extends React.ElementType = React.ElementType> = Merge<React.ExoticComponent<P & {
|
|
12
13
|
[key: string]: unknown;
|
|
13
14
|
}>, {
|
|
14
|
-
<InstanceT extends React.ElementType = T>(props: PolymorphicPropsWithRef<P, InstanceT>): React.ReactElement | null;
|
|
15
|
+
<InstanceT extends React.ElementType = T>(props: PolymorphicPropsWithRef<P, InstanceT>): React.ReactElement<any> | null;
|
|
15
16
|
}>;
|
|
16
17
|
export type PolymorphicForwardRefExoticComponent<P, T extends React.ElementType> = Merge<React.ForwardRefExoticComponent<P & {
|
|
17
18
|
[key: string]: unknown;
|