@salutejs/plasma-new-hope 0.268.0-dev.0 → 0.268.2-canary.1780.13373736245.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. package/cjs/components/Popover/Popover.js +10 -2
  2. package/cjs/components/Popover/Popover.js.map +1 -1
  3. package/cjs/components/Popover/hooks/usePopoverOffset.js +48 -0
  4. package/cjs/components/Popover/hooks/usePopoverOffset.js.map +1 -0
  5. package/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +10 -4
  6. package/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js.map +1 -1
  7. package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +21 -28
  8. package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js.map +1 -1
  9. package/cjs/components/Tabs/ui/vertical/VerticalTabItem/VerticalTabItem.js +10 -4
  10. package/cjs/components/Tabs/ui/vertical/VerticalTabItem/VerticalTabItem.js.map +1 -1
  11. package/cjs/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js +21 -28
  12. package/cjs/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js.map +1 -1
  13. package/cjs/components/Tabs/utils/index.js +26 -0
  14. package/cjs/components/Tabs/utils/index.js.map +1 -0
  15. package/cjs/components/Tooltip/Tooltip.js +1 -1
  16. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  17. package/emotion/cjs/components/Popover/Popover.js +10 -2
  18. package/emotion/cjs/components/Popover/hooks/usePopoverOffset.js +51 -0
  19. package/emotion/cjs/components/Tabs/Tabs.template-doc.mdx +7 -2
  20. package/emotion/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +10 -4
  21. package/emotion/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +11 -18
  22. package/emotion/cjs/components/Tabs/ui/vertical/VerticalTabItem/VerticalTabItem.js +10 -4
  23. package/emotion/cjs/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js +11 -18
  24. package/emotion/cjs/components/Tabs/utils/index.js +24 -0
  25. package/emotion/cjs/components/Tooltip/Tooltip.js +2 -2
  26. package/emotion/cjs/examples/plasma_b2c/components/Popover/Popover.stories.tsx +27 -2
  27. package/emotion/es/components/Popover/Popover.js +10 -2
  28. package/emotion/es/components/Popover/hooks/usePopoverOffset.js +45 -0
  29. package/emotion/es/components/Tabs/Tabs.template-doc.mdx +7 -2
  30. package/emotion/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +11 -5
  31. package/emotion/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +12 -19
  32. package/emotion/es/components/Tabs/ui/vertical/VerticalTabItem/VerticalTabItem.js +11 -5
  33. package/emotion/es/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js +12 -19
  34. package/emotion/es/components/Tabs/utils/index.js +18 -0
  35. package/emotion/es/components/Tooltip/Tooltip.js +2 -2
  36. package/emotion/es/examples/plasma_b2c/components/Popover/Popover.stories.tsx +27 -2
  37. package/es/components/Popover/Popover.js +10 -2
  38. package/es/components/Popover/Popover.js.map +1 -1
  39. package/es/components/Popover/hooks/usePopoverOffset.js +44 -0
  40. package/es/components/Popover/hooks/usePopoverOffset.js.map +1 -0
  41. package/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +11 -5
  42. package/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js.map +1 -1
  43. package/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +12 -19
  44. package/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js.map +1 -1
  45. package/es/components/Tabs/ui/vertical/VerticalTabItem/VerticalTabItem.js +11 -5
  46. package/es/components/Tabs/ui/vertical/VerticalTabItem/VerticalTabItem.js.map +1 -1
  47. package/es/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js +12 -19
  48. package/es/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js.map +1 -1
  49. package/es/components/Tabs/utils/index.js +21 -0
  50. package/es/components/Tabs/utils/index.js.map +1 -0
  51. package/es/components/Tooltip/Tooltip.js +1 -1
  52. package/es/components/Tooltip/Tooltip.js.map +1 -1
  53. package/package.json +2 -2
  54. package/styled-components/cjs/components/Popover/Popover.js +10 -2
  55. package/styled-components/cjs/components/Popover/hooks/usePopoverOffset.js +51 -0
  56. package/styled-components/cjs/components/Tabs/Tabs.template-doc.mdx +7 -2
  57. package/styled-components/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +10 -4
  58. package/styled-components/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +11 -18
  59. package/styled-components/cjs/components/Tabs/ui/vertical/VerticalTabItem/VerticalTabItem.js +10 -4
  60. package/styled-components/cjs/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js +11 -18
  61. package/styled-components/cjs/components/Tabs/utils/index.js +24 -0
  62. package/styled-components/cjs/components/Tooltip/Tooltip.js +1 -1
  63. package/styled-components/cjs/examples/plasma_b2c/components/Popover/Popover.stories.tsx +27 -2
  64. package/styled-components/es/components/Popover/Popover.js +10 -2
  65. package/styled-components/es/components/Popover/hooks/usePopoverOffset.js +45 -0
  66. package/styled-components/es/components/Tabs/Tabs.template-doc.mdx +7 -2
  67. package/styled-components/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +11 -5
  68. package/styled-components/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +12 -19
  69. package/styled-components/es/components/Tabs/ui/vertical/VerticalTabItem/VerticalTabItem.js +11 -5
  70. package/styled-components/es/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js +12 -19
  71. package/styled-components/es/components/Tabs/utils/index.js +18 -0
  72. package/styled-components/es/components/Tooltip/Tooltip.js +1 -1
  73. package/styled-components/es/examples/plasma_b2c/components/Popover/Popover.stories.tsx +27 -2
  74. package/types/components/Popover/Popover.d.ts.map +1 -1
  75. package/types/components/Popover/hooks/usePopoverOffset.d.ts +9 -0
  76. package/types/components/Popover/hooks/usePopoverOffset.d.ts.map +1 -0
  77. package/types/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.d.ts.map +1 -1
  78. package/types/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.d.ts.map +1 -1
  79. package/types/components/Tabs/ui/vertical/VerticalTabItem/VerticalTabItem.d.ts.map +1 -1
  80. package/types/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.d.ts.map +1 -1
  81. package/types/components/Tabs/utils/index.d.ts +4 -0
  82. package/types/components/Tabs/utils/index.d.ts.map +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"HorizontalTabs.js","sources":["../../../../../../src/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useState, useEffect, useRef, KeyboardEvent } from 'react';\nimport type { MutableRefObject } from 'react';\nimport { safeUseId } from '@salutejs/plasma-core';\n\nimport type { RootProps } from '../../../../../engines/types';\nimport { IconDisclosureLeft, IconDisclosureRight } from '../../../../_Icon';\nimport { classes } from '../../../tokens';\nimport { cx } from '../../../../../utils';\nimport { TabItemRefs, TabsContext } from '../../../TabsContext';\nimport type { HorizontalTabsProps } from '../../../Tabs.types';\n\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as disabledCSS } from './variations/_disabled/base';\nimport { base as pilledCSS } from './variations/_pilled/base';\nimport { base as stretchCSS } from './variations/_stretch/base';\nimport { StyledArrow, StyledContent, StyledContentWrapper, base } from './HorizontalTabs.styles';\n\nenum Keys {\n end = 35,\n home = 36,\n left = 37,\n right = 39,\n}\n\nconst getIconSize = (size?: string) => {\n return size === 'h1' || size === 'h2' ? 'm' : 's';\n};\n\n// TODO: https://github.com/salute-developers/plasma/issues/1474\nexport const horizontalTabsRoot = (Root: RootProps<HTMLDivElement, HorizontalTabsProps>) =>\n forwardRef<HTMLDivElement, HorizontalTabsProps>((props, outerRef) => {\n const {\n id,\n stretch = false,\n disabled = false,\n clip = 'scroll',\n size,\n view,\n children,\n pilled = false,\n index,\n className,\n hasDivider = true,\n ...rest\n } = props;\n const [firstItemVisible, setFirstItemVisible] = useState(true);\n const [lastItemVisible, setLastItemVisible] = useState(true);\n\n const refs = useMemo(() => new TabItemRefs(index), []);\n\n const uniqId = safeUseId();\n const tabsId = id || uniqId;\n\n const isFilled = view === 'filled'; // outer padding is only for filled view\n const pilledAttr = view !== 'clear' && pilled;\n const pilledClass = pilledAttr ? classes.tabsPilled : undefined;\n\n const noDividerClass = !hasDivider ? classes.tabsNoDivider : undefined;\n const stretchClass = firstItemVisible && lastItemVisible && stretch ? classes.tabsStretch : undefined;\n const hasLeftArrowClass = !firstItemVisible ? classes.tabsHasLeftArrow : undefined;\n const hasRightArrowClass = !lastItemVisible ? classes.tabsHasRightArrow : undefined;\n const clipScrollClass = clip === 'scroll' ? classes.tabsClipScroll : undefined;\n const clipShowAllClass = clip === 'showAll' ? classes.tabsClipShowAll : undefined;\n\n const scrollRef = useRef<HTMLElement | null>(null);\n const trackRef = useRef<HTMLElement | null>(null);\n const leftArrowRef = useRef<HTMLButtonElement | null>(null);\n\n const onPrev = useCallback(() => {\n if (disabled || !scrollRef.current) {\n return;\n }\n\n const scrollLeft = Math.round(scrollRef.current.scrollLeft);\n const firstOverflowingTab = refs.items\n .slice()\n .reverse()\n .find((item: MutableRefObject<HTMLElement | null>) => {\n if (!item.current || item.current.offsetLeft === undefined) {\n return;\n }\n const tabStartX = item.current.offsetLeft;\n\n return tabStartX < scrollLeft;\n });\n\n firstOverflowingTab?.current?.scrollIntoView({ block: 'nearest', inline: 'start' });\n }, [disabled, scrollRef, refs]);\n\n const onNext = useCallback(() => {\n if (disabled || !scrollRef.current) {\n return;\n }\n\n const scrollRight = Math.round(scrollRef.current.scrollLeft + scrollRef.current.clientWidth);\n const lastOverflowingTab = refs.items.find((item: MutableRefObject<HTMLElement | null>) => {\n if (!item.current || item.current.offsetLeft === undefined) {\n return;\n }\n const tabEndX = item.current.offsetLeft + item.current.offsetWidth;\n\n return tabEndX > scrollRight;\n });\n\n lastOverflowingTab?.current?.scrollIntoView({ block: 'nearest', inline: 'end' });\n }, [disabled, scrollRef, refs]);\n\n const PreviousButton = useMemo(\n () => (\n <StyledArrow\n type=\"button\"\n aria-label=\"Предыдущий таб\"\n onClick={onPrev}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n isFilled={isFilled}\n ref={leftArrowRef}\n isLeftArrow\n >\n <IconDisclosureLeft size={getIconSize(size)} color=\"inherit\" />\n </StyledArrow>\n ),\n [onPrev, size, disabled, isFilled],\n );\n\n const NextButton = useMemo(\n () => (\n <StyledArrow\n type=\"button\"\n aria-label=\"Следующий таб\"\n onClick={onNext}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n isFilled={isFilled}\n >\n <IconDisclosureRight size={getIconSize(size)} color=\"inherit\" />\n </StyledArrow>\n ),\n [onNext, size, disabled, isFilled],\n );\n\n const handleScroll = useCallback(\n (event: React.UIEvent<HTMLElement>): void => {\n event.stopPropagation();\n const maxScrollLeft = event.currentTarget.scrollWidth - event.currentTarget.clientWidth;\n const scrollLeft = Math.round(event.currentTarget.scrollLeft);\n\n setFirstItemVisible(scrollLeft <= 0);\n setLastItemVisible(scrollLeft >= maxScrollLeft);\n },\n [setFirstItemVisible, setLastItemVisible],\n );\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (index === undefined) {\n return;\n }\n\n const minIndex = 0;\n const maxIndex = refs.items.length - 1;\n let nextIndex: number;\n\n switch (event.keyCode) {\n case Keys.end:\n nextIndex = maxIndex;\n break;\n case Keys.left:\n nextIndex = index > minIndex ? index - 1 : index;\n break;\n case Keys.right:\n nextIndex = index < maxIndex ? index + 1 : index;\n break;\n case Keys.home:\n nextIndex = minIndex;\n break;\n default:\n return;\n }\n\n if (nextIndex !== index) {\n event.preventDefault();\n refs.items[nextIndex].current?.focus();\n refs.items[nextIndex].current?.scrollIntoView({\n block: 'nearest',\n inline: 'center',\n behavior: 'smooth',\n });\n }\n },\n [index],\n );\n\n useEffect(() => {\n setLastItemVisible(scrollRef.current?.scrollWidth === scrollRef.current?.clientWidth);\n }, []);\n\n // Этот хук компенсирует появление левой стрелки при прокрутке\n useEffect(() => {\n if (firstItemVisible || !scrollRef.current || !leftArrowRef.current) {\n return;\n }\n\n scrollRef.current.scrollTo({\n left: Math.round(scrollRef.current.scrollLeft + leftArrowRef.current.clientWidth),\n });\n }, [firstItemVisible, scrollRef, leftArrowRef]);\n\n return (\n <TabsContext.Provider value={refs}>\n <Root\n view={view}\n role=\"tablist\"\n // TODO: убрать каст any, когда будут удалены deprecated props\n size={size as any}\n pilled={pilled}\n id={tabsId}\n ref={outerRef}\n disabled={disabled}\n className={cx(\n pilledClass,\n stretchClass,\n hasLeftArrowClass,\n hasRightArrowClass,\n noDividerClass,\n className,\n )}\n onKeyDown={onKeyDown}\n {...rest}\n >\n {!firstItemVisible && PreviousButton}\n <StyledContentWrapper\n className={cx(clipScrollClass, clipShowAllClass)}\n ref={scrollRef as MutableRefObject<HTMLDivElement | null>}\n onScroll={handleScroll}\n >\n <StyledContent ref={trackRef as MutableRefObject<HTMLDivElement | null>}>\n {children}\n </StyledContent>\n </StyledContentWrapper>\n {!lastItemVisible && NextButton}\n </Root>\n </TabsContext.Provider>\n );\n });\n\nexport const horizontalTabsConfig = {\n name: 'HorizontalTabs',\n tag: 'div',\n layout: horizontalTabsRoot,\n base,\n variations: {\n size: {\n css: sizeCSS,\n },\n view: {\n css: viewCSS,\n },\n disabled: {\n css: disabledCSS,\n attrs: true,\n },\n stretch: {\n css: stretchCSS,\n attrs: true,\n },\n pilled: {\n css: pilledCSS,\n },\n },\n defaults: {\n view: 'clear',\n size: 'xs',\n },\n};\n"],"names":["Keys","getIconSize","size","horizontalTabsRoot","Root","forwardRef","props","outerRef","id","_props$stretch","stretch","_props$disabled","disabled","_props$clip","clip","view","children","_props$pilled","pilled","index","className","_props$hasDivider","hasDivider","rest","_objectWithoutProperties","_excluded","_useState","useState","_useState2","_slicedToArray","firstItemVisible","setFirstItemVisible","_useState3","_useState4","lastItemVisible","setLastItemVisible","refs","useMemo","TabItemRefs","uniqId","safeUseId","tabsId","isFilled","pilledAttr","pilledClass","classes","tabsPilled","undefined","noDividerClass","tabsNoDivider","stretchClass","tabsStretch","hasLeftArrowClass","tabsHasLeftArrow","hasRightArrowClass","tabsHasRightArrow","clipScrollClass","tabsClipScroll","clipShowAllClass","tabsClipShowAll","scrollRef","useRef","trackRef","leftArrowRef","onPrev","useCallback","_firstOverflowingTab$","current","scrollLeft","Math","round","firstOverflowingTab","items","slice","reverse","find","item","offsetLeft","tabStartX","scrollIntoView","block","inline","onNext","_lastOverflowingTab$c","scrollRight","clientWidth","lastOverflowingTab","tabEndX","offsetWidth","PreviousButton","React","createElement","StyledArrow","type","onClick","tabIndex","ref","isLeftArrow","IconDisclosureLeft","color","NextButton","IconDisclosureRight","handleScroll","event","stopPropagation","maxScrollLeft","currentTarget","scrollWidth","onKeyDown","minIndex","maxIndex","length","nextIndex","keyCode","end","left","right","home","_refs$items$nextIndex","_refs$items$nextIndex2","preventDefault","focus","behavior","useEffect","_scrollRef$current","_scrollRef$current2","scrollTo","TabsContext","Provider","value","_extends","role","cx","StyledContentWrapper","onScroll","StyledContent","horizontalTabsConfig","name","tag","layout","base","variations","css","sizeCSS","viewCSS","disabledCSS","attrs","stretchCSS","pilledCSS","defaults"],"mappings":"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"}
1
+ {"version":3,"file":"HorizontalTabs.js","sources":["../../../../../../src/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useState, useRef, KeyboardEvent, useLayoutEffect } from 'react';\nimport type { MutableRefObject } from 'react';\nimport { safeUseId } from '@salutejs/plasma-core';\n\nimport type { RootProps } from '../../../../../engines/types';\nimport { IconDisclosureLeft, IconDisclosureRight } from '../../../../_Icon';\nimport { classes } from '../../../tokens';\nimport { cx } from '../../../../../utils';\nimport { TabItemRefs, TabsContext } from '../../../TabsContext';\nimport type { HorizontalTabsProps } from '../../../Tabs.types';\nimport { getFirstOverflowingTab, getLastOverflowingTab } from '../../../utils';\n\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as disabledCSS } from './variations/_disabled/base';\nimport { base as pilledCSS } from './variations/_pilled/base';\nimport { base as stretchCSS } from './variations/_stretch/base';\nimport { StyledArrow, StyledContent, StyledContentWrapper, base } from './HorizontalTabs.styles';\n\nenum Keys {\n end = 35,\n home = 36,\n left = 37,\n right = 39,\n}\n\nconst getIconSize = (size?: string) => {\n return size === 'h1' || size === 'h2' ? 'm' : 's';\n};\n\n// TODO: https://github.com/salute-developers/plasma/issues/1474\nexport const horizontalTabsRoot = (Root: RootProps<HTMLDivElement, HorizontalTabsProps>) =>\n forwardRef<HTMLDivElement, HorizontalTabsProps>((props, outerRef) => {\n const {\n id,\n stretch = false,\n disabled = false,\n clip = 'scroll',\n size,\n view,\n children,\n pilled = false,\n index,\n className,\n hasDivider = true,\n ...rest\n } = props;\n const [firstItemVisible, setFirstItemVisible] = useState(true);\n const [lastItemVisible, setLastItemVisible] = useState(true);\n\n const refs = useMemo(() => new TabItemRefs(index), []);\n\n const uniqId = safeUseId();\n const tabsId = id || uniqId;\n\n const isFilled = view === 'filled'; // outer padding is only for filled view\n const pilledAttr = view !== 'clear' && pilled;\n const pilledClass = pilledAttr ? classes.tabsPilled : undefined;\n\n const noDividerClass = !hasDivider ? classes.tabsNoDivider : undefined;\n const stretchClass = firstItemVisible && lastItemVisible && stretch ? classes.tabsStretch : undefined;\n const hasLeftArrowClass = !firstItemVisible ? classes.tabsHasLeftArrow : undefined;\n const hasRightArrowClass = !lastItemVisible ? classes.tabsHasRightArrow : undefined;\n const clipScrollClass = clip === 'scroll' ? classes.tabsClipScroll : undefined;\n const clipShowAllClass = clip === 'showAll' ? classes.tabsClipShowAll : undefined;\n\n const scrollRef = useRef<HTMLElement | null>(null);\n const trackRef = useRef<HTMLElement | null>(null);\n const leftArrowRef = useRef<HTMLButtonElement | null>(null);\n\n const onPrev = useCallback(() => {\n if (disabled || !scrollRef.current) {\n return;\n }\n\n const scrollLeft = Math.round(scrollRef.current.scrollLeft);\n const firstOverflowingTab = getFirstOverflowingTab(refs.items.slice().reverse(), scrollLeft);\n\n firstOverflowingTab?.current?.scrollIntoView({ block: 'nearest', inline: 'start' });\n }, [disabled, scrollRef, refs]);\n\n const onNext = useCallback(() => {\n if (disabled || !scrollRef.current) {\n return;\n }\n\n const scrollRight = Math.round(scrollRef.current.scrollLeft + scrollRef.current.clientWidth);\n const lastOverflowingTab = getLastOverflowingTab(refs.items, scrollRight);\n\n lastOverflowingTab?.current?.scrollIntoView({ block: 'nearest', inline: 'end' });\n }, [disabled, scrollRef, refs]);\n\n const PreviousButton = useMemo(\n () => (\n <StyledArrow\n type=\"button\"\n aria-label=\"Предыдущий таб\"\n onClick={onPrev}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n isFilled={isFilled}\n ref={leftArrowRef}\n isLeftArrow\n >\n <IconDisclosureLeft size={getIconSize(size)} color=\"inherit\" />\n </StyledArrow>\n ),\n [onPrev, size, disabled, isFilled],\n );\n\n const NextButton = useMemo(\n () => (\n <StyledArrow\n type=\"button\"\n aria-label=\"Следующий таб\"\n onClick={onNext}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n isFilled={isFilled}\n >\n <IconDisclosureRight size={getIconSize(size)} color=\"inherit\" />\n </StyledArrow>\n ),\n [onNext, size, disabled, isFilled],\n );\n\n const handleScroll = useCallback(\n (event: React.UIEvent<HTMLElement>): void => {\n event.stopPropagation();\n const maxScrollLeft = event.currentTarget.scrollWidth - event.currentTarget.clientWidth;\n const scrollLeft = Math.round(event.currentTarget.scrollLeft);\n\n setFirstItemVisible(scrollLeft <= 0);\n setLastItemVisible(scrollLeft >= maxScrollLeft);\n },\n [setFirstItemVisible, setLastItemVisible],\n );\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (index === undefined) {\n return;\n }\n\n const minIndex = 0;\n const maxIndex = refs.items.length - 1;\n let nextIndex: number;\n\n switch (event.keyCode) {\n case Keys.end:\n nextIndex = maxIndex;\n break;\n case Keys.left:\n nextIndex = index > minIndex ? index - 1 : index;\n break;\n case Keys.right:\n nextIndex = index < maxIndex ? index + 1 : index;\n break;\n case Keys.home:\n nextIndex = minIndex;\n break;\n default:\n return;\n }\n\n if (nextIndex !== index) {\n event.preventDefault();\n refs.items[nextIndex].current?.focus();\n refs.items[nextIndex].current?.scrollIntoView({\n block: 'nearest',\n inline: 'center',\n behavior: 'smooth',\n });\n }\n },\n [index],\n );\n\n useLayoutEffect(() => {\n setLastItemVisible(scrollRef.current?.scrollWidth === scrollRef.current?.clientWidth);\n }, []);\n\n // Этот хук компенсирует появление левой стрелки при прокрутке\n useLayoutEffect(() => {\n if (firstItemVisible || !scrollRef.current || !leftArrowRef.current) {\n return;\n }\n\n const scrollRight = Math.round(scrollRef.current.scrollLeft + scrollRef.current.clientWidth);\n const lastOverflowingTab = getLastOverflowingTab(refs.items, scrollRight);\n\n lastOverflowingTab?.current?.scrollIntoView({ block: 'nearest', inline: 'end' });\n }, [firstItemVisible, scrollRef, leftArrowRef]);\n\n return (\n <TabsContext.Provider value={refs}>\n <Root\n view={view}\n role=\"tablist\"\n // TODO: убрать каст any, когда будут удалены deprecated props\n size={size as any}\n pilled={pilled}\n id={tabsId}\n ref={outerRef}\n disabled={disabled}\n className={cx(\n pilledClass,\n stretchClass,\n hasLeftArrowClass,\n hasRightArrowClass,\n noDividerClass,\n className,\n )}\n onKeyDown={onKeyDown}\n {...rest}\n >\n {!firstItemVisible && PreviousButton}\n <StyledContentWrapper\n className={cx(clipScrollClass, clipShowAllClass)}\n ref={scrollRef as MutableRefObject<HTMLDivElement | null>}\n onScroll={handleScroll}\n >\n <StyledContent ref={trackRef as MutableRefObject<HTMLDivElement | null>}>\n {children}\n </StyledContent>\n </StyledContentWrapper>\n {!lastItemVisible && NextButton}\n </Root>\n </TabsContext.Provider>\n );\n });\n\nexport const horizontalTabsConfig = {\n name: 'HorizontalTabs',\n tag: 'div',\n layout: horizontalTabsRoot,\n base,\n variations: {\n size: {\n css: sizeCSS,\n },\n view: {\n css: viewCSS,\n },\n disabled: {\n css: disabledCSS,\n attrs: true,\n },\n stretch: {\n css: stretchCSS,\n attrs: true,\n },\n pilled: {\n css: pilledCSS,\n },\n },\n defaults: {\n view: 'clear',\n size: 'xs',\n },\n};\n"],"names":["Keys","getIconSize","size","horizontalTabsRoot","Root","forwardRef","props","outerRef","id","_props$stretch","stretch","_props$disabled","disabled","_props$clip","clip","view","children","_props$pilled","pilled","index","className","_props$hasDivider","hasDivider","rest","_objectWithoutProperties","_excluded","_useState","useState","_useState2","_slicedToArray","firstItemVisible","setFirstItemVisible","_useState3","_useState4","lastItemVisible","setLastItemVisible","refs","useMemo","TabItemRefs","uniqId","safeUseId","tabsId","isFilled","pilledAttr","pilledClass","classes","tabsPilled","undefined","noDividerClass","tabsNoDivider","stretchClass","tabsStretch","hasLeftArrowClass","tabsHasLeftArrow","hasRightArrowClass","tabsHasRightArrow","clipScrollClass","tabsClipScroll","clipShowAllClass","tabsClipShowAll","scrollRef","useRef","trackRef","leftArrowRef","onPrev","useCallback","_firstOverflowingTab$","current","scrollLeft","Math","round","firstOverflowingTab","getFirstOverflowingTab","items","slice","reverse","scrollIntoView","block","inline","onNext","_lastOverflowingTab$c","scrollRight","clientWidth","lastOverflowingTab","getLastOverflowingTab","PreviousButton","React","createElement","StyledArrow","type","onClick","tabIndex","ref","isLeftArrow","IconDisclosureLeft","color","NextButton","IconDisclosureRight","handleScroll","event","stopPropagation","maxScrollLeft","currentTarget","scrollWidth","onKeyDown","minIndex","maxIndex","length","nextIndex","keyCode","end","left","right","home","_refs$items$nextIndex","_refs$items$nextIndex2","preventDefault","focus","behavior","useLayoutEffect","_scrollRef$current","_scrollRef$current2","_lastOverflowingTab$c2","TabsContext","Provider","value","_extends","role","cx","StyledContentWrapper","onScroll","StyledContent","horizontalTabsConfig","name","tag","layout","base","variations","css","sizeCSS","viewCSS","disabledCSS","attrs","stretchCSS","pilledCSS","defaults"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { objectWithoutProperties as _objectWithoutProperties, extends as _extends, objectSpread2 as _objectSpread2 } from '../../../../../_virtual/_rollupPluginBabelHelpers.js';
2
- import React, { forwardRef, useRef, useContext, useEffect, useCallback } from 'react';
2
+ import React, { forwardRef, useRef, useContext, useEffect, useLayoutEffect, useCallback } from 'react';
3
3
  import { useForkRef } from '@salutejs/plasma-core';
4
4
  import { classes } from '../../../tokens.js';
5
5
  import { cx } from '../../../../../utils/index.js';
@@ -46,6 +46,16 @@ var verticalTabItemRoot = function verticalTabItemRoot(Root) {
46
46
  return refs.unregister(innerRef);
47
47
  };
48
48
  }, [refs]);
49
+ useLayoutEffect(function () {
50
+ var _innerRef$current;
51
+ if (!selected) {
52
+ return;
53
+ }
54
+ (_innerRef$current = innerRef.current) === null || _innerRef$current === void 0 || _innerRef$current.scrollIntoView({
55
+ block: 'nearest',
56
+ inline: 'nearest'
57
+ });
58
+ }, [selected]);
49
59
  var onItemFocus = useCallback(function (event) {
50
60
  if (disabled) {
51
61
  return;
@@ -70,10 +80,6 @@ var verticalTabItemRoot = function verticalTabItemRoot(Root) {
70
80
  refs.setCurrent(focusIndex);
71
81
  }, [refs, innerRef, onIndexChange, disabled]);
72
82
  var handleClick = function handleClick(event) {
73
- event.currentTarget.scrollIntoView({
74
- block: 'nearest',
75
- inline: 'nearest'
76
- });
77
83
  if (!onClick) {
78
84
  return;
79
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VerticalTabItem.js","sources":["../../../../../../src/components/Tabs/ui/vertical/VerticalTabItem/VerticalTabItem.tsx"],"sourcesContent":["import React, { forwardRef, useRef, useContext, useEffect, useCallback } from 'react';\nimport { useForkRef } from '@salutejs/plasma-core';\n\nimport { RootProps } from '../../../../../engines';\nimport { classes } from '../../../tokens';\nimport { cx } from '../../../../../utils';\nimport { TabsContext } from '../../../TabsContext';\nimport { VerticalTabItemProps } from '../../../TabItem.types';\n\nimport { base, LeftContent, RightContent, StyledContent, TabItemValue } from './VerticalTabItem.styles';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as disabledCSS } from './variations/_disabled/base';\n\nexport const verticalTabItemRoot = (Root: RootProps<HTMLButtonElement, VerticalTabItemProps>) =>\n forwardRef<HTMLButtonElement, VerticalTabItemProps>((props, outerRef) => {\n const {\n size,\n view,\n selected,\n disabled = false,\n children,\n value,\n contentLeft,\n contentRight,\n onIndexChange,\n itemIndex,\n tabIndex,\n className,\n onClick,\n maxItemWidth: maxWidth = 'auto',\n ...rest\n } = props;\n\n const innerRef = useRef<HTMLButtonElement>(null);\n const ref = useForkRef(outerRef, innerRef);\n const refs = useContext(TabsContext);\n\n const role = 'tab';\n\n const selectedClass = selected ? classes.selectedTabsItem : undefined;\n const truncateClass = maxWidth !== 'auto' ? classes.tabsTruncate : undefined;\n\n const hasKeyNavigation = itemIndex !== undefined && onIndexChange !== undefined;\n const navigationTabIndex = !disabled && refs?.current === itemIndex ? 0 : -1;\n\n useEffect(() => {\n if (!refs) {\n return;\n }\n\n refs.register(innerRef);\n\n return () => refs.unregister(innerRef);\n }, [refs]);\n\n const onItemFocus = useCallback<React.FocusEventHandler>(\n (event) => {\n if (disabled) {\n return;\n }\n\n if (!hasKeyNavigation && innerRef?.current) {\n innerRef.current.scrollTo({\n top: innerRef.current.offsetTop,\n behavior: 'smooth',\n });\n\n return;\n }\n\n if (!refs) {\n return;\n }\n\n const focusIndex = refs.items.findIndex((itemRef) => itemRef.current === event.target);\n\n if (focusIndex === refs.current) {\n return;\n }\n\n onIndexChange?.(focusIndex);\n refs.setCurrent(focusIndex);\n },\n [refs, innerRef, onIndexChange, disabled],\n );\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.currentTarget.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n\n if (!onClick) {\n return;\n }\n\n onClick(event);\n };\n\n return (\n <Root\n ref={ref}\n disabled={disabled}\n role={role}\n view={view}\n size={size}\n onFocus={onItemFocus}\n tabIndex={hasKeyNavigation ? navigationTabIndex : tabIndex}\n className={cx(selectedClass, truncateClass, className)}\n onClick={handleClick}\n {...rest}\n style={{\n ...rest.style,\n maxWidth,\n }}\n >\n <>\n {contentLeft && <LeftContent className={classes.tabLeftContent}>{contentLeft}</LeftContent>}\n <StyledContent className={classes.tabContent}>{children}</StyledContent>\n {!contentRight && value && <TabItemValue>{value}</TabItemValue>}\n {!value && contentRight && (\n <RightContent className={classes.tabRightContent}>{contentRight}</RightContent>\n )}\n </>\n </Root>\n );\n });\n\nexport const verticalTabItemConfig = {\n name: 'VerticalTabItem',\n tag: 'button',\n layout: verticalTabItemRoot,\n base,\n variations: {\n size: {\n css: sizeCSS,\n },\n view: {\n css: viewCSS,\n },\n disabled: {\n css: disabledCSS,\n attrs: true,\n },\n },\n defaults: {\n view: 'divider',\n },\n};\n"],"names":["verticalTabItemRoot","Root","forwardRef","props","outerRef","size","view","selected","_props$disabled","disabled","children","value","contentLeft","contentRight","onIndexChange","itemIndex","tabIndex","className","onClick","_props$maxItemWidth","maxItemWidth","maxWidth","rest","_objectWithoutProperties","_excluded","innerRef","useRef","ref","useForkRef","refs","useContext","TabsContext","role","selectedClass","classes","selectedTabsItem","undefined","truncateClass","tabsTruncate","hasKeyNavigation","navigationTabIndex","current","useEffect","register","unregister","onItemFocus","useCallback","event","scrollTo","top","offsetTop","behavior","focusIndex","items","findIndex","itemRef","target","setCurrent","handleClick","currentTarget","scrollIntoView","block","inline","React","createElement","_extends","onFocus","cx","style","_objectSpread","Fragment","LeftContent","tabLeftContent","StyledContent","tabContent","TabItemValue","RightContent","tabRightContent","verticalTabItemConfig","name","tag","layout","base","variations","css","sizeCSS","viewCSS","disabledCSS","attrs","defaults"],"mappings":"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"}
1
+ {"version":3,"file":"VerticalTabItem.js","sources":["../../../../../../src/components/Tabs/ui/vertical/VerticalTabItem/VerticalTabItem.tsx"],"sourcesContent":["import React, { forwardRef, useRef, useContext, useEffect, useCallback, useLayoutEffect } from 'react';\nimport { useForkRef } from '@salutejs/plasma-core';\n\nimport { RootProps } from '../../../../../engines';\nimport { classes } from '../../../tokens';\nimport { cx } from '../../../../../utils';\nimport { TabsContext } from '../../../TabsContext';\nimport { VerticalTabItemProps } from '../../../TabItem.types';\n\nimport { base, LeftContent, RightContent, StyledContent, TabItemValue } from './VerticalTabItem.styles';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as disabledCSS } from './variations/_disabled/base';\n\nexport const verticalTabItemRoot = (Root: RootProps<HTMLButtonElement, VerticalTabItemProps>) =>\n forwardRef<HTMLButtonElement, VerticalTabItemProps>((props, outerRef) => {\n const {\n size,\n view,\n selected,\n disabled = false,\n children,\n value,\n contentLeft,\n contentRight,\n onIndexChange,\n itemIndex,\n tabIndex,\n className,\n onClick,\n maxItemWidth: maxWidth = 'auto',\n ...rest\n } = props;\n\n const innerRef = useRef<HTMLButtonElement>(null);\n const ref = useForkRef(outerRef, innerRef);\n const refs = useContext(TabsContext);\n\n const role = 'tab';\n\n const selectedClass = selected ? classes.selectedTabsItem : undefined;\n const truncateClass = maxWidth !== 'auto' ? classes.tabsTruncate : undefined;\n\n const hasKeyNavigation = itemIndex !== undefined && onIndexChange !== undefined;\n const navigationTabIndex = !disabled && refs?.current === itemIndex ? 0 : -1;\n\n useEffect(() => {\n if (!refs) {\n return;\n }\n\n refs.register(innerRef);\n\n return () => refs.unregister(innerRef);\n }, [refs]);\n\n useLayoutEffect(() => {\n if (!selected) {\n return;\n }\n\n innerRef.current?.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }, [selected]);\n\n const onItemFocus = useCallback<React.FocusEventHandler>(\n (event) => {\n if (disabled) {\n return;\n }\n\n if (!hasKeyNavigation && innerRef?.current) {\n innerRef.current.scrollTo({\n top: innerRef.current.offsetTop,\n behavior: 'smooth',\n });\n\n return;\n }\n\n if (!refs) {\n return;\n }\n\n const focusIndex = refs.items.findIndex((itemRef) => itemRef.current === event.target);\n\n if (focusIndex === refs.current) {\n return;\n }\n\n onIndexChange?.(focusIndex);\n refs.setCurrent(focusIndex);\n },\n [refs, innerRef, onIndexChange, disabled],\n );\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n if (!onClick) {\n return;\n }\n\n onClick(event);\n };\n\n return (\n <Root\n ref={ref}\n disabled={disabled}\n role={role}\n view={view}\n size={size}\n onFocus={onItemFocus}\n tabIndex={hasKeyNavigation ? navigationTabIndex : tabIndex}\n className={cx(selectedClass, truncateClass, className)}\n onClick={handleClick}\n {...rest}\n style={{\n ...rest.style,\n maxWidth,\n }}\n >\n <>\n {contentLeft && <LeftContent className={classes.tabLeftContent}>{contentLeft}</LeftContent>}\n <StyledContent className={classes.tabContent}>{children}</StyledContent>\n {!contentRight && value && <TabItemValue>{value}</TabItemValue>}\n {!value && contentRight && (\n <RightContent className={classes.tabRightContent}>{contentRight}</RightContent>\n )}\n </>\n </Root>\n );\n });\n\nexport const verticalTabItemConfig = {\n name: 'VerticalTabItem',\n tag: 'button',\n layout: verticalTabItemRoot,\n base,\n variations: {\n size: {\n css: sizeCSS,\n },\n view: {\n css: viewCSS,\n },\n disabled: {\n css: disabledCSS,\n attrs: true,\n },\n },\n defaults: {\n view: 'divider',\n },\n};\n"],"names":["verticalTabItemRoot","Root","forwardRef","props","outerRef","size","view","selected","_props$disabled","disabled","children","value","contentLeft","contentRight","onIndexChange","itemIndex","tabIndex","className","onClick","_props$maxItemWidth","maxItemWidth","maxWidth","rest","_objectWithoutProperties","_excluded","innerRef","useRef","ref","useForkRef","refs","useContext","TabsContext","role","selectedClass","classes","selectedTabsItem","undefined","truncateClass","tabsTruncate","hasKeyNavigation","navigationTabIndex","current","useEffect","register","unregister","useLayoutEffect","_innerRef$current","scrollIntoView","block","inline","onItemFocus","useCallback","event","scrollTo","top","offsetTop","behavior","focusIndex","items","findIndex","itemRef","target","setCurrent","handleClick","React","createElement","_extends","onFocus","cx","style","_objectSpread","Fragment","LeftContent","tabLeftContent","StyledContent","tabContent","TabItemValue","RightContent","tabRightContent","verticalTabItemConfig","name","tag","layout","base","variations","css","sizeCSS","viewCSS","disabledCSS","attrs","defaults"],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { objectWithoutProperties as _objectWithoutProperties, slicedToArray as _slicedToArray, extends as _extends } from '../../../../../_virtual/_rollupPluginBabelHelpers.js';
2
- import React, { forwardRef, useState, useMemo, useRef, useCallback, useEffect } from 'react';
2
+ import React, { forwardRef, useState, useMemo, useRef, useCallback, useLayoutEffect } from 'react';
3
3
  import { safeUseId } from '@salutejs/plasma-core';
4
4
  import { classes } from '../../../tokens.js';
5
5
  import { cx } from '../../../../../utils/index.js';
6
6
  import { TabItemRefs, TabsContext } from '../../../TabsContext.js';
7
+ import { getFirstOverflowingTab, getLastOverflowingTab } from '../../../utils/index.js';
7
8
  import { StyledContentWrapper, StyledContent, base, StyledArrow } from './VerticalTabs.styles.js';
8
9
  import { base as base$1 } from './variations/_size/base.js';
9
10
  import { base as base$2 } from './variations/_view/base.js';
@@ -63,13 +64,7 @@ var verticalTabsRoot = function verticalTabsRoot(Root) {
63
64
  return;
64
65
  }
65
66
  var scrollTop = Math.round(scrollRef.current.scrollTop);
66
- var firstOverflowingTab = refs.items.slice().reverse().find(function (item) {
67
- if (!item.current || item.current.offsetTop === undefined) {
68
- return;
69
- }
70
- var tabStartY = item.current.offsetTop;
71
- return tabStartY < scrollTop;
72
- });
67
+ var firstOverflowingTab = getFirstOverflowingTab(refs.items.slice().reverse(), scrollTop);
73
68
  firstOverflowingTab === null || firstOverflowingTab === void 0 || (_firstOverflowingTab$ = firstOverflowingTab.current) === null || _firstOverflowingTab$ === void 0 || _firstOverflowingTab$.scrollIntoView({
74
69
  block: 'start',
75
70
  inline: 'nearest'
@@ -81,13 +76,7 @@ var verticalTabsRoot = function verticalTabsRoot(Root) {
81
76
  return;
82
77
  }
83
78
  var scrollBottom = Math.round(scrollRef.current.scrollTop + scrollRef.current.clientHeight);
84
- var lastOverflowingTab = refs.items.find(function (item) {
85
- if (!item.current || item.current.offsetTop === undefined) {
86
- return;
87
- }
88
- var tabEndY = item.current.offsetTop + item.current.offsetHeight;
89
- return tabEndY > scrollBottom;
90
- });
79
+ var lastOverflowingTab = getLastOverflowingTab(refs.items, scrollBottom);
91
80
  lastOverflowingTab === null || lastOverflowingTab === void 0 || (_lastOverflowingTab$c = lastOverflowingTab.current) === null || _lastOverflowingTab$c === void 0 || _lastOverflowingTab$c.scrollIntoView({
92
81
  block: 'end',
93
82
  inline: 'nearest'
@@ -153,18 +142,22 @@ var verticalTabsRoot = function verticalTabsRoot(Root) {
153
142
  });
154
143
  }
155
144
  }, [index]);
156
- useEffect(function () {
145
+ useLayoutEffect(function () {
157
146
  var _scrollRef$current, _scrollRef$current2;
158
147
  setLastItemVisible(((_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 ? void 0 : _scrollRef$current.scrollHeight) === ((_scrollRef$current2 = scrollRef.current) === null || _scrollRef$current2 === void 0 ? void 0 : _scrollRef$current2.clientHeight));
159
148
  }, []);
160
149
 
161
150
  // Этот хук компенсирует появление верхней стрелки при прокрутке
162
- useEffect(function () {
151
+ useLayoutEffect(function () {
152
+ var _lastOverflowingTab$c2;
163
153
  if (firstItemVisible || !scrollRef.current || !upArrowRef.current) {
164
154
  return;
165
155
  }
166
- scrollRef.current.scrollTo({
167
- top: Math.round(scrollRef.current.scrollTop + upArrowRef.current.clientHeight)
156
+ var scrollBottom = Math.round(scrollRef.current.scrollTop + scrollRef.current.clientHeight);
157
+ var lastOverflowingTab = getLastOverflowingTab(refs.items, scrollBottom);
158
+ lastOverflowingTab === null || lastOverflowingTab === void 0 || (_lastOverflowingTab$c2 = lastOverflowingTab.current) === null || _lastOverflowingTab$c2 === void 0 || _lastOverflowingTab$c2.scrollIntoView({
159
+ block: 'end',
160
+ inline: 'nearest'
168
161
  });
169
162
  }, [firstItemVisible, scrollRef, upArrowRef]);
170
163
  return /*#__PURE__*/React.createElement(TabsContext.Provider, {
@@ -1 +1 @@
1
- {"version":3,"file":"VerticalTabs.js","sources":["../../../../../../src/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useState, useEffect, useRef, KeyboardEvent } from 'react';\nimport type { MutableRefObject } from 'react';\nimport { safeUseId } from '@salutejs/plasma-core';\n\nimport type { RootProps } from '../../../../../engines/types';\nimport { classes } from '../../../tokens';\nimport { cx } from '../../../../../utils';\nimport { TabItemRefs, TabsContext } from '../../../TabsContext';\nimport type { VerticalTabsProps } from '../../../Tabs.types';\nimport { IconDisclosureLeft, IconDisclosureRight } from '../../../../_Icon';\n\nimport { base, StyledArrow, StyledContent, StyledContentWrapper } from './VerticalTabs.styles';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as disabledCSS } from './variations/_disabled/base';\n\nenum Keys {\n end = 35,\n home = 36,\n up = 38,\n down = 40,\n}\n\n// TODO: https://github.com/salute-developers/plasma/issues/1474\nexport const verticalTabsRoot = (Root: RootProps<HTMLDivElement, VerticalTabsProps>) =>\n forwardRef<HTMLDivElement, VerticalTabsProps>((props, outerRef) => {\n const {\n id,\n disabled = false,\n clip = 'showAll',\n size,\n view,\n children,\n index,\n className,\n orientation,\n hasDivider = true,\n ...rest\n } = props;\n\n const [firstItemVisible, setFirstItemVisible] = useState(true);\n const [lastItemVisible, setLastItemVisible] = useState(true);\n\n const refs = useMemo(() => new TabItemRefs(index), []);\n\n const uniqId = safeUseId();\n const tabsId = id || uniqId;\n\n const noDividerClass = !hasDivider ? classes.tabsNoDivider : undefined;\n const hasTopArrowClass = !firstItemVisible ? classes.tabsHasTopArrow : undefined;\n const hasBottomArrowClass = !lastItemVisible ? classes.tabsHasBottomArrow : undefined;\n const clipScrollClass = clip === 'scroll' ? classes.tabsClipScroll : undefined;\n const clipShowAllClass = clip === 'showAll' ? classes.tabsClipShowAll : undefined;\n\n const scrollRef = useRef<HTMLElement | null>(null);\n const trackRef = useRef<HTMLElement | null>(null);\n const upArrowRef = useRef<HTMLButtonElement | null>(null);\n\n const onPrev = useCallback(() => {\n if (disabled || !scrollRef.current) {\n return;\n }\n\n const scrollTop = Math.round(scrollRef.current.scrollTop);\n const firstOverflowingTab = refs.items\n .slice()\n .reverse()\n .find((item: MutableRefObject<HTMLElement | null>) => {\n if (!item.current || item.current.offsetTop === undefined) {\n return;\n }\n const tabStartY = item.current.offsetTop;\n\n return tabStartY < scrollTop;\n });\n\n firstOverflowingTab?.current?.scrollIntoView({ block: 'start', inline: 'nearest' });\n }, [disabled, scrollRef, refs]);\n\n const onNext = useCallback(() => {\n if (disabled || !scrollRef.current) {\n return;\n }\n\n const scrollBottom = Math.round(scrollRef.current.scrollTop + scrollRef.current.clientHeight);\n const lastOverflowingTab = refs.items.find((item: MutableRefObject<HTMLElement | null>) => {\n if (!item.current || item.current.offsetTop === undefined) {\n return;\n }\n const tabEndY = item.current.offsetTop + item.current.offsetHeight;\n\n return tabEndY > scrollBottom;\n });\n\n lastOverflowingTab?.current?.scrollIntoView({ block: 'end', inline: 'nearest' });\n }, [disabled, scrollRef, refs]);\n\n const PreviousButton = (\n <StyledArrow\n type=\"button\"\n aria-label=\"Предыдущий таб\"\n onClick={onPrev}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n ref={upArrowRef}\n >\n <IconDisclosureLeft color=\"inherit\" />\n </StyledArrow>\n );\n\n const NextButton = (\n <StyledArrow\n type=\"button\"\n aria-label=\"Следующий таб\"\n onClick={onNext}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n >\n <IconDisclosureRight color=\"inherit\" />\n </StyledArrow>\n );\n\n const handleScroll = useCallback(\n (event: React.UIEvent<HTMLElement>): void => {\n event.stopPropagation();\n const maxScrollTop = event.currentTarget.scrollHeight - event.currentTarget.clientHeight;\n const scrollTop = Math.round(event.currentTarget.scrollTop);\n\n setFirstItemVisible(scrollTop <= 0);\n setLastItemVisible(scrollTop >= maxScrollTop);\n },\n [setFirstItemVisible, setLastItemVisible],\n );\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (index === undefined) {\n return;\n }\n\n const minIndex = 0;\n const maxIndex = refs.items.length - 1;\n let nextIndex: number;\n\n switch (event.keyCode) {\n case Keys.end:\n nextIndex = maxIndex;\n break;\n case Keys.up:\n nextIndex = index > minIndex ? index - 1 : index;\n break;\n case Keys.down:\n nextIndex = index < maxIndex ? index + 1 : index;\n break;\n case Keys.home:\n nextIndex = minIndex;\n break;\n default:\n return;\n }\n\n if (nextIndex !== index) {\n event.preventDefault();\n refs.items[nextIndex].current?.focus();\n refs.items[nextIndex].current?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n behavior: 'smooth',\n });\n }\n },\n [index],\n );\n\n useEffect(() => {\n setLastItemVisible(scrollRef.current?.scrollHeight === scrollRef.current?.clientHeight);\n }, []);\n\n // Этот хук компенсирует появление верхней стрелки при прокрутке\n useEffect(() => {\n if (firstItemVisible || !scrollRef.current || !upArrowRef.current) {\n return;\n }\n\n scrollRef.current.scrollTo({\n top: Math.round(scrollRef.current.scrollTop + upArrowRef.current.clientHeight),\n });\n }, [firstItemVisible, scrollRef, upArrowRef]);\n\n return (\n <TabsContext.Provider value={refs}>\n <Root\n view={view}\n role=\"tablist\"\n size={size}\n id={tabsId}\n ref={outerRef}\n disabled={disabled}\n className={cx(hasTopArrowClass, hasBottomArrowClass, noDividerClass, className)}\n onKeyDown={onKeyDown}\n orientation={orientation}\n {...rest}\n >\n {!firstItemVisible && PreviousButton}\n <StyledContentWrapper\n className={cx(clipScrollClass, clipShowAllClass)}\n ref={scrollRef as MutableRefObject<HTMLDivElement | null>}\n onScroll={handleScroll}\n >\n <StyledContent ref={trackRef as MutableRefObject<HTMLDivElement | null>}>\n {children}\n </StyledContent>\n </StyledContentWrapper>\n {!lastItemVisible && NextButton}\n </Root>\n </TabsContext.Provider>\n );\n });\n\nexport const verticalTabsConfig = {\n name: 'VerticalTabs',\n tag: 'div',\n layout: verticalTabsRoot,\n base,\n variations: {\n size: {\n css: sizeCSS,\n },\n view: {\n css: viewCSS,\n },\n disabled: {\n css: disabledCSS,\n attrs: true,\n },\n },\n defaults: {\n view: 'divider',\n size: 'xs',\n },\n};\n"],"names":["Keys","verticalTabsRoot","Root","forwardRef","props","outerRef","id","_props$disabled","disabled","_props$clip","clip","size","view","children","index","className","orientation","_props$hasDivider","hasDivider","rest","_objectWithoutProperties","_excluded","_useState","useState","_useState2","_slicedToArray","firstItemVisible","setFirstItemVisible","_useState3","_useState4","lastItemVisible","setLastItemVisible","refs","useMemo","TabItemRefs","uniqId","safeUseId","tabsId","noDividerClass","classes","tabsNoDivider","undefined","hasTopArrowClass","tabsHasTopArrow","hasBottomArrowClass","tabsHasBottomArrow","clipScrollClass","tabsClipScroll","clipShowAllClass","tabsClipShowAll","scrollRef","useRef","trackRef","upArrowRef","onPrev","useCallback","_firstOverflowingTab$","current","scrollTop","Math","round","firstOverflowingTab","items","slice","reverse","find","item","offsetTop","tabStartY","scrollIntoView","block","inline","onNext","_lastOverflowingTab$c","scrollBottom","clientHeight","lastOverflowingTab","tabEndY","offsetHeight","PreviousButton","React","createElement","StyledArrow","type","onClick","tabIndex","ref","_IconDisclosureLeft","IconDisclosureLeft","color","NextButton","_IconDisclosureRight","IconDisclosureRight","handleScroll","event","stopPropagation","maxScrollTop","currentTarget","scrollHeight","onKeyDown","minIndex","maxIndex","length","nextIndex","keyCode","end","up","down","home","_refs$items$nextIndex","_refs$items$nextIndex2","preventDefault","focus","behavior","useEffect","_scrollRef$current","_scrollRef$current2","scrollTo","top","TabsContext","Provider","value","_extends","role","cx","StyledContentWrapper","onScroll","StyledContent","verticalTabsConfig","name","tag","layout","base","variations","css","sizeCSS","viewCSS","disabledCSS","attrs","defaults"],"mappings":"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"}
1
+ {"version":3,"file":"VerticalTabs.js","sources":["../../../../../../src/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useState, useLayoutEffect, useRef, KeyboardEvent } from 'react';\nimport type { MutableRefObject } from 'react';\nimport { safeUseId } from '@salutejs/plasma-core';\n\nimport type { RootProps } from '../../../../../engines/types';\nimport { classes } from '../../../tokens';\nimport { cx } from '../../../../../utils';\nimport { TabItemRefs, TabsContext } from '../../../TabsContext';\nimport type { VerticalTabsProps } from '../../../Tabs.types';\nimport { IconDisclosureLeft, IconDisclosureRight } from '../../../../_Icon';\nimport { getFirstOverflowingTab, getLastOverflowingTab } from '../../../utils';\n\nimport { base, StyledArrow, StyledContent, StyledContentWrapper } from './VerticalTabs.styles';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as disabledCSS } from './variations/_disabled/base';\n\nenum Keys {\n end = 35,\n home = 36,\n up = 38,\n down = 40,\n}\n\n// TODO: https://github.com/salute-developers/plasma/issues/1474\nexport const verticalTabsRoot = (Root: RootProps<HTMLDivElement, VerticalTabsProps>) =>\n forwardRef<HTMLDivElement, VerticalTabsProps>((props, outerRef) => {\n const {\n id,\n disabled = false,\n clip = 'showAll',\n size,\n view,\n children,\n index,\n className,\n orientation,\n hasDivider = true,\n ...rest\n } = props;\n\n const [firstItemVisible, setFirstItemVisible] = useState(true);\n const [lastItemVisible, setLastItemVisible] = useState(true);\n\n const refs = useMemo(() => new TabItemRefs(index), []);\n\n const uniqId = safeUseId();\n const tabsId = id || uniqId;\n\n const noDividerClass = !hasDivider ? classes.tabsNoDivider : undefined;\n const hasTopArrowClass = !firstItemVisible ? classes.tabsHasTopArrow : undefined;\n const hasBottomArrowClass = !lastItemVisible ? classes.tabsHasBottomArrow : undefined;\n const clipScrollClass = clip === 'scroll' ? classes.tabsClipScroll : undefined;\n const clipShowAllClass = clip === 'showAll' ? classes.tabsClipShowAll : undefined;\n\n const scrollRef = useRef<HTMLElement | null>(null);\n const trackRef = useRef<HTMLElement | null>(null);\n const upArrowRef = useRef<HTMLButtonElement | null>(null);\n\n const onPrev = useCallback(() => {\n if (disabled || !scrollRef.current) {\n return;\n }\n\n const scrollTop = Math.round(scrollRef.current.scrollTop);\n const firstOverflowingTab = getFirstOverflowingTab(refs.items.slice().reverse(), scrollTop);\n\n firstOverflowingTab?.current?.scrollIntoView({ block: 'start', inline: 'nearest' });\n }, [disabled, scrollRef, refs]);\n\n const onNext = useCallback(() => {\n if (disabled || !scrollRef.current) {\n return;\n }\n\n const scrollBottom = Math.round(scrollRef.current.scrollTop + scrollRef.current.clientHeight);\n const lastOverflowingTab = getLastOverflowingTab(refs.items, scrollBottom);\n\n lastOverflowingTab?.current?.scrollIntoView({ block: 'end', inline: 'nearest' });\n }, [disabled, scrollRef, refs]);\n\n const PreviousButton = (\n <StyledArrow\n type=\"button\"\n aria-label=\"Предыдущий таб\"\n onClick={onPrev}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n ref={upArrowRef}\n >\n <IconDisclosureLeft color=\"inherit\" />\n </StyledArrow>\n );\n\n const NextButton = (\n <StyledArrow\n type=\"button\"\n aria-label=\"Следующий таб\"\n onClick={onNext}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n >\n <IconDisclosureRight color=\"inherit\" />\n </StyledArrow>\n );\n\n const handleScroll = useCallback(\n (event: React.UIEvent<HTMLElement>): void => {\n event.stopPropagation();\n const maxScrollTop = event.currentTarget.scrollHeight - event.currentTarget.clientHeight;\n const scrollTop = Math.round(event.currentTarget.scrollTop);\n\n setFirstItemVisible(scrollTop <= 0);\n setLastItemVisible(scrollTop >= maxScrollTop);\n },\n [setFirstItemVisible, setLastItemVisible],\n );\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (index === undefined) {\n return;\n }\n\n const minIndex = 0;\n const maxIndex = refs.items.length - 1;\n let nextIndex: number;\n\n switch (event.keyCode) {\n case Keys.end:\n nextIndex = maxIndex;\n break;\n case Keys.up:\n nextIndex = index > minIndex ? index - 1 : index;\n break;\n case Keys.down:\n nextIndex = index < maxIndex ? index + 1 : index;\n break;\n case Keys.home:\n nextIndex = minIndex;\n break;\n default:\n return;\n }\n\n if (nextIndex !== index) {\n event.preventDefault();\n refs.items[nextIndex].current?.focus();\n refs.items[nextIndex].current?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n behavior: 'smooth',\n });\n }\n },\n [index],\n );\n\n useLayoutEffect(() => {\n setLastItemVisible(scrollRef.current?.scrollHeight === scrollRef.current?.clientHeight);\n }, []);\n\n // Этот хук компенсирует появление верхней стрелки при прокрутке\n useLayoutEffect(() => {\n if (firstItemVisible || !scrollRef.current || !upArrowRef.current) {\n return;\n }\n\n const scrollBottom = Math.round(scrollRef.current.scrollTop + scrollRef.current.clientHeight);\n const lastOverflowingTab = getLastOverflowingTab(refs.items, scrollBottom);\n\n lastOverflowingTab?.current?.scrollIntoView({ block: 'end', inline: 'nearest' });\n }, [firstItemVisible, scrollRef, upArrowRef]);\n\n return (\n <TabsContext.Provider value={refs}>\n <Root\n view={view}\n role=\"tablist\"\n size={size}\n id={tabsId}\n ref={outerRef}\n disabled={disabled}\n className={cx(hasTopArrowClass, hasBottomArrowClass, noDividerClass, className)}\n onKeyDown={onKeyDown}\n orientation={orientation}\n {...rest}\n >\n {!firstItemVisible && PreviousButton}\n <StyledContentWrapper\n className={cx(clipScrollClass, clipShowAllClass)}\n ref={scrollRef as MutableRefObject<HTMLDivElement | null>}\n onScroll={handleScroll}\n >\n <StyledContent ref={trackRef as MutableRefObject<HTMLDivElement | null>}>\n {children}\n </StyledContent>\n </StyledContentWrapper>\n {!lastItemVisible && NextButton}\n </Root>\n </TabsContext.Provider>\n );\n });\n\nexport const verticalTabsConfig = {\n name: 'VerticalTabs',\n tag: 'div',\n layout: verticalTabsRoot,\n base,\n variations: {\n size: {\n css: sizeCSS,\n },\n view: {\n css: viewCSS,\n },\n disabled: {\n css: disabledCSS,\n attrs: true,\n },\n },\n defaults: {\n view: 'divider',\n size: 'xs',\n },\n};\n"],"names":["Keys","verticalTabsRoot","Root","forwardRef","props","outerRef","id","_props$disabled","disabled","_props$clip","clip","size","view","children","index","className","orientation","_props$hasDivider","hasDivider","rest","_objectWithoutProperties","_excluded","_useState","useState","_useState2","_slicedToArray","firstItemVisible","setFirstItemVisible","_useState3","_useState4","lastItemVisible","setLastItemVisible","refs","useMemo","TabItemRefs","uniqId","safeUseId","tabsId","noDividerClass","classes","tabsNoDivider","undefined","hasTopArrowClass","tabsHasTopArrow","hasBottomArrowClass","tabsHasBottomArrow","clipScrollClass","tabsClipScroll","clipShowAllClass","tabsClipShowAll","scrollRef","useRef","trackRef","upArrowRef","onPrev","useCallback","_firstOverflowingTab$","current","scrollTop","Math","round","firstOverflowingTab","getFirstOverflowingTab","items","slice","reverse","scrollIntoView","block","inline","onNext","_lastOverflowingTab$c","scrollBottom","clientHeight","lastOverflowingTab","getLastOverflowingTab","PreviousButton","React","createElement","StyledArrow","type","onClick","tabIndex","ref","_IconDisclosureLeft","IconDisclosureLeft","color","NextButton","_IconDisclosureRight","IconDisclosureRight","handleScroll","event","stopPropagation","maxScrollTop","currentTarget","scrollHeight","onKeyDown","minIndex","maxIndex","length","nextIndex","keyCode","end","up","down","home","_refs$items$nextIndex","_refs$items$nextIndex2","preventDefault","focus","behavior","useLayoutEffect","_scrollRef$current","_scrollRef$current2","_lastOverflowingTab$c2","TabsContext","Provider","value","_extends","role","cx","StyledContentWrapper","onScroll","StyledContent","verticalTabsConfig","name","tag","layout","base","variations","css","sizeCSS","viewCSS","disabledCSS","attrs","defaults"],"mappings":";;;;;;;;;;;;;;;;AAekE,IAE7DA,IAAI,0BAAJA,IAAI,EAAA;AAAJA,EAAAA,IAAI,CAAJA,IAAI,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,KAAA,CAAA;AAAJA,EAAAA,IAAI,CAAJA,IAAI,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAA,CAAA;AAAJA,EAAAA,IAAI,CAAJA,IAAI,CAAA,IAAA,CAAA,GAAA,EAAA,CAAA,GAAA,IAAA,CAAA;AAAJA,EAAAA,IAAI,CAAJA,IAAI,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAA,CAAA;AAAA,EAAA,OAAJA,IAAI,CAAA;AAAA,CAAA,CAAJA,IAAI,IAOT,EAAA,CAAA,CAAA;IACaC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,IAAkD,EAAA;AAAA,EAAA,oBAC/EC,UAAU,CAAoC,UAACC,KAAK,EAAEC,QAAQ,EAAK;AAC/D,IAAA,IACIC,EAAE,GAWFF,KAAK,CAXLE,EAAE;MAAAC,eAAA,GAWFH,KAAK,CAVLI,QAAQ;AAARA,MAAAA,QAAQ,GAAAD,eAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,eAAA;MAAAE,WAAA,GAUhBL,KAAK,CATLM,IAAI;AAAJA,MAAAA,IAAI,GAAAD,WAAA,KAAG,KAAA,CAAA,GAAA,SAAS,GAAAA,WAAA;MAChBE,IAAI,GAQJP,KAAK,CARLO,IAAI;MACJC,IAAI,GAOJR,KAAK,CAPLQ,IAAI;MACJC,QAAQ,GAMRT,KAAK,CANLS,QAAQ;MACRC,KAAK,GAKLV,KAAK,CALLU,KAAK;MACLC,SAAS,GAITX,KAAK,CAJLW,SAAS;MACTC,WAAW,GAGXZ,KAAK,CAHLY,WAAW;MAAAC,iBAAA,GAGXb,KAAK,CAFLc,UAAU;AAAVA,MAAAA,UAAU,GAAAD,iBAAA,KAAG,KAAA,CAAA,GAAA,IAAI,GAAAA,iBAAA;AACdE,MAAAA,IAAI,GAAAC,wBAAA,CACPhB,KAAK,EAAAiB,SAAA,CAAA,CAAA;AAET,IAAA,IAAAC,SAAA,GAAgDC,QAAQ,CAAC,IAAI,CAAC;MAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAvDI,MAAAA,gBAAgB,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,MAAAA,mBAAmB,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AAC5C,IAAA,IAAAI,UAAA,GAA8CL,QAAQ,CAAC,IAAI,CAAC;MAAAM,UAAA,GAAAJ,cAAA,CAAAG,UAAA,EAAA,CAAA,CAAA;AAArDE,MAAAA,eAAe,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,MAAAA,kBAAkB,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;IAE1C,IAAMG,IAAI,GAAGC,OAAO,CAAC,YAAA;AAAA,MAAA,OAAM,IAAIC,WAAW,CAACpB,KAAK,CAAC,CAAA;AAAA,KAAA,EAAE,EAAE,CAAC,CAAA;AAEtD,IAAA,IAAMqB,MAAM,GAAGC,SAAS,EAAE,CAAA;AAC1B,IAAA,IAAMC,MAAM,GAAG/B,EAAE,IAAI6B,MAAM,CAAA;IAE3B,IAAMG,cAAc,GAAG,CAACpB,UAAU,GAAGqB,OAAO,CAACC,aAAa,GAAGC,SAAS,CAAA;IACtE,IAAMC,gBAAgB,GAAG,CAAChB,gBAAgB,GAAGa,OAAO,CAACI,eAAe,GAAGF,SAAS,CAAA;IAChF,IAAMG,mBAAmB,GAAG,CAACd,eAAe,GAAGS,OAAO,CAACM,kBAAkB,GAAGJ,SAAS,CAAA;IACrF,IAAMK,eAAe,GAAGpC,IAAI,KAAK,QAAQ,GAAG6B,OAAO,CAACQ,cAAc,GAAGN,SAAS,CAAA;IAC9E,IAAMO,gBAAgB,GAAGtC,IAAI,KAAK,SAAS,GAAG6B,OAAO,CAACU,eAAe,GAAGR,SAAS,CAAA;AAEjF,IAAA,IAAMS,SAAS,GAAGC,MAAM,CAAqB,IAAI,CAAC,CAAA;AAClD,IAAA,IAAMC,QAAQ,GAAGD,MAAM,CAAqB,IAAI,CAAC,CAAA;AACjD,IAAA,IAAME,UAAU,GAAGF,MAAM,CAA2B,IAAI,CAAC,CAAA;AAEzD,IAAA,IAAMG,MAAM,GAAGC,WAAW,CAAC,YAAM;AAAA,MAAA,IAAAC,qBAAA,CAAA;AAC7B,MAAA,IAAIhD,QAAQ,IAAI,CAAC0C,SAAS,CAACO,OAAO,EAAE;AAChC,QAAA,OAAA;AACJ,OAAA;MAEA,IAAMC,SAAS,GAAGC,IAAI,CAACC,KAAK,CAACV,SAAS,CAACO,OAAO,CAACC,SAAS,CAAC,CAAA;AACzD,MAAA,IAAMG,mBAAmB,GAAGC,sBAAsB,CAAC9B,IAAI,CAAC+B,KAAK,CAACC,KAAK,EAAE,CAACC,OAAO,EAAE,EAAEP,SAAS,CAAC,CAAA;AAE3FG,MAAAA,mBAAmB,KAAnBA,IAAAA,IAAAA,mBAAmB,KAAAL,KAAAA,CAAAA,IAAAA,CAAAA,qBAAA,GAAnBK,mBAAmB,CAAEJ,OAAO,MAAA,IAAA,IAAAD,qBAAA,KAAA,KAAA,CAAA,IAA5BA,qBAAA,CAA8BU,cAAc,CAAC;AAAEC,QAAAA,KAAK,EAAE,OAAO;AAAEC,QAAAA,MAAM,EAAE,SAAA;AAAU,OAAC,CAAC,CAAA;KACtF,EAAE,CAAC5D,QAAQ,EAAE0C,SAAS,EAAElB,IAAI,CAAC,CAAC,CAAA;AAE/B,IAAA,IAAMqC,MAAM,GAAGd,WAAW,CAAC,YAAM;AAAA,MAAA,IAAAe,qBAAA,CAAA;AAC7B,MAAA,IAAI9D,QAAQ,IAAI,CAAC0C,SAAS,CAACO,OAAO,EAAE;AAChC,QAAA,OAAA;AACJ,OAAA;AAEA,MAAA,IAAMc,YAAY,GAAGZ,IAAI,CAACC,KAAK,CAACV,SAAS,CAACO,OAAO,CAACC,SAAS,GAAGR,SAAS,CAACO,OAAO,CAACe,YAAY,CAAC,CAAA;MAC7F,IAAMC,kBAAkB,GAAGC,qBAAqB,CAAC1C,IAAI,CAAC+B,KAAK,EAAEQ,YAAY,CAAC,CAAA;AAE1EE,MAAAA,kBAAkB,KAAlBA,IAAAA,IAAAA,kBAAkB,KAAAH,KAAAA,CAAAA,IAAAA,CAAAA,qBAAA,GAAlBG,kBAAkB,CAAEhB,OAAO,MAAA,IAAA,IAAAa,qBAAA,KAAA,KAAA,CAAA,IAA3BA,qBAAA,CAA6BJ,cAAc,CAAC;AAAEC,QAAAA,KAAK,EAAE,KAAK;AAAEC,QAAAA,MAAM,EAAE,SAAA;AAAU,OAAC,CAAC,CAAA;KACnF,EAAE,CAAC5D,QAAQ,EAAE0C,SAAS,EAAElB,IAAI,CAAC,CAAC,CAAA;AAE/B,IAAA,IAAM2C,cAAc,gBAChBC,KAAA,CAAAC,aAAA,CAACC,WAAW,EAAA;AACRC,MAAAA,IAAI,EAAC,QAAQ;AACb,MAAA,YAAA,EAAW,iFAAgB;AAC3BC,MAAAA,OAAO,EAAE1B,MAAO;AAChB2B,MAAAA,QAAQ,EAAEzE,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAE;AAC5BA,MAAAA,QAAQ,EAAEA,QAAS;AACnB0E,MAAAA,GAAG,EAAE7B,UAAAA;KAAW8B,EAAAA,mBAAA,KAAAA,mBAAA,gBAEhBP,KAAA,CAAAC,aAAA,CAACO,kBAAkB,EAAA;AAACC,MAAAA,KAAK,EAAC,SAAA;KAAW,CAAC,CAC7B,CAChB,CAAA;AAED,IAAA,IAAMC,UAAU,gBACZV,KAAA,CAAAC,aAAA,CAACC,WAAW,EAAA;AACRC,MAAAA,IAAI,EAAC,QAAQ;AACb,MAAA,YAAA,EAAW,2EAAe;AAC1BC,MAAAA,OAAO,EAAEX,MAAO;AAChBY,MAAAA,QAAQ,EAAEzE,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAE;AAC5BA,MAAAA,QAAQ,EAAEA,QAAAA;KAAS+E,EAAAA,oBAAA,KAAAA,oBAAA,gBAEnBX,KAAA,CAAAC,aAAA,CAACW,mBAAmB,EAAA;AAACH,MAAAA,KAAK,EAAC,SAAA;KAAW,CAAC,CAC9B,CAChB,CAAA;AAED,IAAA,IAAMI,YAAY,GAAGlC,WAAW,CAC5B,UAACmC,KAAiC,EAAW;MACzCA,KAAK,CAACC,eAAe,EAAE,CAAA;AACvB,MAAA,IAAMC,YAAY,GAAGF,KAAK,CAACG,aAAa,CAACC,YAAY,GAAGJ,KAAK,CAACG,aAAa,CAACrB,YAAY,CAAA;MACxF,IAAMd,SAAS,GAAGC,IAAI,CAACC,KAAK,CAAC8B,KAAK,CAACG,aAAa,CAACnC,SAAS,CAAC,CAAA;AAE3D/B,MAAAA,mBAAmB,CAAC+B,SAAS,IAAI,CAAC,CAAC,CAAA;AACnC3B,MAAAA,kBAAkB,CAAC2B,SAAS,IAAIkC,YAAY,CAAC,CAAA;AACjD,KAAC,EACD,CAACjE,mBAAmB,EAAEI,kBAAkB,CAC5C,CAAC,CAAA;AAED,IAAA,IAAMgE,SAAS,GAAGxC,WAAW,CACzB,UAACmC,KAAoC,EAAK;MACtC,IAAI5E,KAAK,KAAK2B,SAAS,EAAE;AACrB,QAAA,OAAA;AACJ,OAAA;MAEA,IAAMuD,QAAQ,GAAG,CAAC,CAAA;MAClB,IAAMC,QAAQ,GAAGjE,IAAI,CAAC+B,KAAK,CAACmC,MAAM,GAAG,CAAC,CAAA;AACtC,MAAA,IAAIC,SAAiB,CAAA;MAErB,QAAQT,KAAK,CAACU,OAAO;QACjB,KAAKpG,IAAI,CAACqG,GAAG;AACTF,UAAAA,SAAS,GAAGF,QAAQ,CAAA;AACpB,UAAA,MAAA;QACJ,KAAKjG,IAAI,CAACsG,EAAE;UACRH,SAAS,GAAGrF,KAAK,GAAGkF,QAAQ,GAAGlF,KAAK,GAAG,CAAC,GAAGA,KAAK,CAAA;AAChD,UAAA,MAAA;QACJ,KAAKd,IAAI,CAACuG,IAAI;UACVJ,SAAS,GAAGrF,KAAK,GAAGmF,QAAQ,GAAGnF,KAAK,GAAG,CAAC,GAAGA,KAAK,CAAA;AAChD,UAAA,MAAA;QACJ,KAAKd,IAAI,CAACwG,IAAI;AACVL,UAAAA,SAAS,GAAGH,QAAQ,CAAA;AACpB,UAAA,MAAA;AACJ,QAAA;AACI,UAAA,OAAA;AACR,OAAA;MAEA,IAAIG,SAAS,KAAKrF,KAAK,EAAE;QAAA,IAAA2F,qBAAA,EAAAC,sBAAA,CAAA;QACrBhB,KAAK,CAACiB,cAAc,EAAE,CAAA;AACtB,QAAA,CAAAF,qBAAA,GAAAzE,IAAI,CAAC+B,KAAK,CAACoC,SAAS,CAAC,CAAC1C,OAAO,cAAAgD,qBAAA,KAAA,KAAA,CAAA,IAA7BA,qBAAA,CAA+BG,KAAK,EAAE,CAAA;AACtC,QAAA,CAAAF,sBAAA,GAAA1E,IAAI,CAAC+B,KAAK,CAACoC,SAAS,CAAC,CAAC1C,OAAO,cAAAiD,sBAAA,KAAA,KAAA,CAAA,IAA7BA,sBAAA,CAA+BxC,cAAc,CAAC;AAC1CC,UAAAA,KAAK,EAAE,SAAS;AAChBC,UAAAA,MAAM,EAAE,SAAS;AACjByC,UAAAA,QAAQ,EAAE,QAAA;AACd,SAAC,CAAC,CAAA;AACN,OAAA;AACJ,KAAC,EACD,CAAC/F,KAAK,CACV,CAAC,CAAA;AAEDgG,IAAAA,eAAe,CAAC,YAAM;MAAA,IAAAC,kBAAA,EAAAC,mBAAA,CAAA;MAClBjF,kBAAkB,CAAC,CAAAgF,CAAAA,kBAAA,GAAA7D,SAAS,CAACO,OAAO,MAAA,IAAA,IAAAsD,kBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjBA,kBAAA,CAAmBjB,YAAY,OAAAkB,CAAAA,mBAAA,GAAK9D,SAAS,CAACO,OAAO,MAAAuD,IAAAA,IAAAA,mBAAA,KAAjBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAA,CAAmBxC,YAAY,CAAC,CAAA,CAAA;KAC1F,EAAE,EAAE,CAAC,CAAA;;AAEN;AACAsC,IAAAA,eAAe,CAAC,YAAM;AAAA,MAAA,IAAAG,sBAAA,CAAA;MAClB,IAAIvF,gBAAgB,IAAI,CAACwB,SAAS,CAACO,OAAO,IAAI,CAACJ,UAAU,CAACI,OAAO,EAAE;AAC/D,QAAA,OAAA;AACJ,OAAA;AAEA,MAAA,IAAMc,YAAY,GAAGZ,IAAI,CAACC,KAAK,CAACV,SAAS,CAACO,OAAO,CAACC,SAAS,GAAGR,SAAS,CAACO,OAAO,CAACe,YAAY,CAAC,CAAA;MAC7F,IAAMC,kBAAkB,GAAGC,qBAAqB,CAAC1C,IAAI,CAAC+B,KAAK,EAAEQ,YAAY,CAAC,CAAA;AAE1EE,MAAAA,kBAAkB,KAAlBA,IAAAA,IAAAA,kBAAkB,KAAAwC,KAAAA,CAAAA,IAAAA,CAAAA,sBAAA,GAAlBxC,kBAAkB,CAAEhB,OAAO,MAAA,IAAA,IAAAwD,sBAAA,KAAA,KAAA,CAAA,IAA3BA,sBAAA,CAA6B/C,cAAc,CAAC;AAAEC,QAAAA,KAAK,EAAE,KAAK;AAAEC,QAAAA,MAAM,EAAE,SAAA;AAAU,OAAC,CAAC,CAAA;KACnF,EAAE,CAAC1C,gBAAgB,EAAEwB,SAAS,EAAEG,UAAU,CAAC,CAAC,CAAA;AAE7C,IAAA,oBACIuB,KAAA,CAAAC,aAAA,CAACqC,WAAW,CAACC,QAAQ,EAAA;AAACC,MAAAA,KAAK,EAAEpF,IAAAA;AAAK,KAAA,eAC9B4C,KAAA,CAAAC,aAAA,CAAC3E,IAAI,EAAAmH,QAAA,CAAA;AACDzG,MAAAA,IAAI,EAAEA,IAAK;AACX0G,MAAAA,IAAI,EAAC,SAAS;AACd3G,MAAAA,IAAI,EAAEA,IAAK;AACXL,MAAAA,EAAE,EAAE+B,MAAO;AACX6C,MAAAA,GAAG,EAAE7E,QAAS;AACdG,MAAAA,QAAQ,EAAEA,QAAS;MACnBO,SAAS,EAAEwG,EAAE,CAAC7E,gBAAgB,EAAEE,mBAAmB,EAAEN,cAAc,EAAEvB,SAAS,CAAE;AAChFgF,MAAAA,SAAS,EAAEA,SAAU;AACrB/E,MAAAA,WAAW,EAAEA,WAAAA;KACTG,EAAAA,IAAI,CAEP,EAAA,CAACO,gBAAgB,IAAIiD,cAAc,eACpCC,KAAA,CAAAC,aAAA,CAAC2C,oBAAoB,EAAA;AACjBzG,MAAAA,SAAS,EAAEwG,EAAE,CAACzE,eAAe,EAAEE,gBAAgB,CAAE;AACjDkC,MAAAA,GAAG,EAAEhC,SAAqD;AAC1DuE,MAAAA,QAAQ,EAAEhC,YAAAA;AAAa,KAAA,eAEvBb,KAAA,CAAAC,aAAA,CAAC6C,aAAa,EAAA;AAACxC,MAAAA,GAAG,EAAE9B,QAAAA;KACfvC,EAAAA,QACU,CACG,CAAC,EACtB,CAACiB,eAAe,IAAIwD,UACnB,CACY,CAAC,CAAA;AAE/B,GAAC,CAAC,CAAA;AAAA,EAAA;AAEC,IAAMqC,kBAAkB,GAAG;AAC9BC,EAAAA,IAAI,EAAE,cAAc;AACpBC,EAAAA,GAAG,EAAE,KAAK;AACVC,EAAAA,MAAM,EAAE7H,gBAAgB;AACxB8H,EAAAA,IAAI,EAAJA,IAAI;AACJC,EAAAA,UAAU,EAAE;AACRrH,IAAAA,IAAI,EAAE;AACFsH,MAAAA,GAAG,EAAEC,MAAAA;KACR;AACDtH,IAAAA,IAAI,EAAE;AACFqH,MAAAA,GAAG,EAAEE,MAAAA;KACR;AACD3H,IAAAA,QAAQ,EAAE;AACNyH,MAAAA,GAAG,EAAEG,MAAW;AAChBC,MAAAA,KAAK,EAAE,IAAA;AACX,KAAA;GACH;AACDC,EAAAA,QAAQ,EAAE;AACN1H,IAAAA,IAAI,EAAE,SAAS;AACfD,IAAAA,IAAI,EAAE,IAAA;AACV,GAAA;AACJ;;;;"}
@@ -0,0 +1,21 @@
1
+ var getFirstOverflowingTab = function getFirstOverflowingTab(items, maxScroll) {
2
+ return items.find(function (item) {
3
+ if (!item.current || item.current.offsetLeft === undefined) {
4
+ return;
5
+ }
6
+ var tabStartX = item.current.offsetLeft;
7
+ return tabStartX < maxScroll;
8
+ });
9
+ };
10
+ var getLastOverflowingTab = function getLastOverflowingTab(items, minScroll) {
11
+ return items.find(function (item) {
12
+ if (!item.current || item.current.offsetLeft === undefined) {
13
+ return;
14
+ }
15
+ var tabEndX = item.current.offsetLeft + item.current.offsetWidth;
16
+ return tabEndX > minScroll;
17
+ });
18
+ };
19
+
20
+ export { getFirstOverflowingTab, getLastOverflowingTab };
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/Tabs/utils/index.ts"],"sourcesContent":["import { MutableRefObject } from 'react';\n\nexport const getFirstOverflowingTab = (items: MutableRefObject<HTMLElement | null>[], maxScroll: number) => {\n return items.find((item: MutableRefObject<HTMLElement | null>) => {\n if (!item.current || item.current.offsetLeft === undefined) {\n return;\n }\n const tabStartX = item.current.offsetLeft;\n\n return tabStartX < maxScroll;\n });\n};\n\nexport const getLastOverflowingTab = (items: MutableRefObject<HTMLElement | null>[], minScroll: number) => {\n return items.find((item: MutableRefObject<HTMLElement | null>) => {\n if (!item.current || item.current.offsetLeft === undefined) {\n return;\n }\n const tabEndX = item.current.offsetLeft + item.current.offsetWidth;\n\n return tabEndX > minScroll;\n });\n};\n"],"names":["getFirstOverflowingTab","items","maxScroll","find","item","current","offsetLeft","undefined","tabStartX","getLastOverflowingTab","minScroll","tabEndX","offsetWidth"],"mappings":"AAEO,IAAMA,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAIC,KAA6C,EAAEC,SAAiB,EAAK;AACxG,EAAA,OAAOD,KAAK,CAACE,IAAI,CAAC,UAACC,IAA0C,EAAK;AAC9D,IAAA,IAAI,CAACA,IAAI,CAACC,OAAO,IAAID,IAAI,CAACC,OAAO,CAACC,UAAU,KAAKC,SAAS,EAAE;AACxD,MAAA,OAAA;AACJ,KAAA;AACA,IAAA,IAAMC,SAAS,GAAGJ,IAAI,CAACC,OAAO,CAACC,UAAU,CAAA;IAEzC,OAAOE,SAAS,GAAGN,SAAS,CAAA;AAChC,GAAC,CAAC,CAAA;AACN,EAAC;AAEM,IAAMO,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAIR,KAA6C,EAAES,SAAiB,EAAK;AACvG,EAAA,OAAOT,KAAK,CAACE,IAAI,CAAC,UAACC,IAA0C,EAAK;AAC9D,IAAA,IAAI,CAACA,IAAI,CAACC,OAAO,IAAID,IAAI,CAACC,OAAO,CAACC,UAAU,KAAKC,SAAS,EAAE;AACxD,MAAA,OAAA;AACJ,KAAA;AACA,IAAA,IAAMI,OAAO,GAAGP,IAAI,CAACC,OAAO,CAACC,UAAU,GAAGF,IAAI,CAACC,OAAO,CAACO,WAAW,CAAA;IAElE,OAAOD,OAAO,GAAGD,SAAS,CAAA;AAC9B,GAAC,CAAC,CAAA;AACN;;;;"}
@@ -40,7 +40,7 @@ var tooltipRoot = function tooltipRoot(Root) {
40
40
  arrow = _ref.arrow,
41
41
  animated = _ref.animated,
42
42
  _ref$offset = _ref.offset,
43
- offset = _ref$offset === void 0 ? [0, 8] : _ref$offset,
43
+ offset = _ref$offset === void 0 ? [3, 8] : _ref$offset,
44
44
  minWidth = _ref.minWidth,
45
45
  maxWidth = _ref.maxWidth,
46
46
  _ref$placement = _ref.placement,
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","sources":["../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import React, { useEffect, forwardRef, useState, useRef } from 'react';\nimport { styled } from '@linaria/react';\n\nimport { RootProps, component } from '../../engines';\nimport { popoverConfig, popoverTokens } from '../Popover';\nimport { cx } from '../../utils';\n\nimport { TooltipProps } from './Tooltip.types';\nimport { StyledContentLeft, TooltipRoot } from './Tooltip.styles';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { tokens } from './Tooltip.tokens';\n\nconst ESCAPE_KEYCODE = 27;\n\nconst getStringValue = (value?: number | string) => {\n return typeof value === 'number' ? `${value}rem` : value;\n};\n\nconst Popover = component(popoverConfig);\n\nconst StyledPopover = styled(Popover)`\n ${popoverTokens.arrowMaskWidth}: var(${tokens.arrowMaskWidth});\n ${popoverTokens.arrowMaskHeight}: var(${tokens.arrowMaskHeight});\n ${popoverTokens.arrowMaskImage}: var(${tokens.arrowMaskImage});\n ${popoverTokens.arrowBackground}: var(${tokens.arrowBackground});\n ${popoverTokens.arrowHeight}: var(${tokens.arrowHeight});\n ${popoverTokens.arrowEdgeMargin}: var(${tokens.arrowEdgeMargin});\n`;\n\n/**\n * Компонент для текстовых подсказок. Основное предназначение — подписи к блокам.\n */\n\nexport const tooltipRoot = (Root: RootProps<HTMLDivElement, Omit<TooltipProps, 'opened' | 'text'>>) =>\n forwardRef<HTMLDivElement, TooltipProps>(\n (\n {\n id,\n text,\n opened,\n isVisible,\n isOpen,\n hasArrow = true,\n arrow,\n animated,\n offset = [0, 8],\n minWidth,\n maxWidth,\n placement = 'bottom',\n usePortal = true,\n target,\n children,\n onDismiss,\n view,\n size,\n contentLeft,\n zIndex = '9200',\n className,\n style,\n hoverTimeout = 300,\n trigger,\n ...rest\n },\n outerRef,\n ) => {\n const [ref, setRef] = useState<HTMLDivElement | null>(null);\n const timeoutRef = useRef<number | undefined>();\n const [isOpened, setIsOpened] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n\n // TODO убрать после отказа от старого API\n const innerIsOpen = Boolean(isVisible || isOpen || opened);\n const innerHasArrow = arrow || hasArrow;\n const showTooltip = innerIsOpen && Boolean(text);\n\n useEffect(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.keyCode === ESCAPE_KEYCODE) {\n onDismiss?.();\n }\n };\n\n window.addEventListener('keydown', onKeyDown);\n\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, []);\n\n const onMouseEnter = () => {\n clearTimeout(timeoutRef.current);\n setIsHovered(true);\n };\n\n const onMouseLeave = () => {\n timeoutRef.current = setTimeout(() => {\n setIsHovered(false);\n }, hoverTimeout);\n };\n\n useEffect(() => {\n return () => clearTimeout(timeoutRef.current);\n }, [trigger]);\n\n const onToggle = (isOpen: boolean) => {\n if (trigger === 'hover') {\n if (isOpen) {\n clearTimeout(timeoutRef.current);\n setIsOpened(true);\n } else {\n timeoutRef.current = setTimeout(() => {\n setIsOpened(false);\n }, hoverTimeout);\n }\n } else {\n setIsOpened(isOpen);\n }\n };\n\n return (\n <StyledPopover\n opened={showTooltip || isOpened || isHovered}\n placement={placement}\n offset={offset}\n zIndex={zIndex}\n target={target || children}\n usePortal={usePortal}\n hasArrow={innerHasArrow}\n aria-hidden={!innerIsOpen}\n aria-live=\"polite\"\n role=\"tooltip\"\n animated={animated}\n className={cx(ref?.classList.toString())}\n {...((trigger === 'hover' || trigger === 'click') && { trigger, onToggle })}\n {...rest}\n >\n <Root\n view={view}\n size={size}\n ref={setRef}\n className={className}\n style={style}\n {...(trigger === 'hover' && { onMouseEnter, onMouseLeave })}\n >\n <TooltipRoot\n ref={outerRef}\n id={id}\n maxWidth={getStringValue(maxWidth)}\n minWidth={getStringValue(minWidth)}\n >\n {contentLeft && <StyledContentLeft>{contentLeft}</StyledContentLeft>}\n {text}\n </TooltipRoot>\n </Root>\n </StyledPopover>\n );\n },\n );\n\nexport const tooltipConfig = {\n name: 'Tooltip',\n tag: 'div',\n layout: tooltipRoot,\n base: '',\n variations: {\n view: {\n css: viewCSS,\n },\n size: {\n css: sizeCSS,\n },\n },\n defaults: {\n view: 'default',\n size: 'm',\n },\n};\n"],"names":["ESCAPE_KEYCODE","getStringValue","value","concat","Popover","component","popoverConfig","_exp","StyledPopover","styled","name","class","propsAsIs","tooltipRoot","Root","forwardRef","_ref","outerRef","id","text","opened","isVisible","isOpen","_ref$hasArrow","hasArrow","arrow","animated","_ref$offset","offset","minWidth","maxWidth","_ref$placement","placement","_ref$usePortal","usePortal","target","children","onDismiss","view","size","contentLeft","_ref$zIndex","zIndex","className","style","_ref$hoverTimeout","hoverTimeout","trigger","rest","_useState","useState","_useState2","_slicedToArray","ref","setRef","timeoutRef","useRef","_useState3","_useState4","isOpened","setIsOpened","_useState5","_useState6","isHovered","setIsHovered","innerIsOpen","Boolean","innerHasArrow","showTooltip","useEffect","onKeyDown","event","keyCode","window","addEventListener","removeEventListener","onMouseEnter","clearTimeout","current","onMouseLeave","setTimeout","onToggle","React","createElement","_extends","role","cx","classList","toString","TooltipRoot","StyledContentLeft","tooltipConfig","tag","layout","base","variations","css","viewCSS","sizeCSS","defaults"],"mappings":"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"}
1
+ {"version":3,"file":"Tooltip.js","sources":["../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import React, { useEffect, forwardRef, useState, useRef } from 'react';\nimport { styled } from '@linaria/react';\n\nimport { RootProps, component } from '../../engines';\nimport { popoverConfig, popoverTokens } from '../Popover';\nimport { cx } from '../../utils';\n\nimport { TooltipProps } from './Tooltip.types';\nimport { StyledContentLeft, TooltipRoot } from './Tooltip.styles';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { tokens } from './Tooltip.tokens';\n\nconst ESCAPE_KEYCODE = 27;\n\nconst getStringValue = (value?: number | string) => {\n return typeof value === 'number' ? `${value}rem` : value;\n};\n\nconst Popover = component(popoverConfig);\n\nconst StyledPopover = styled(Popover)`\n ${popoverTokens.arrowMaskWidth}: var(${tokens.arrowMaskWidth});\n ${popoverTokens.arrowMaskHeight}: var(${tokens.arrowMaskHeight});\n ${popoverTokens.arrowMaskImage}: var(${tokens.arrowMaskImage});\n ${popoverTokens.arrowBackground}: var(${tokens.arrowBackground});\n ${popoverTokens.arrowHeight}: var(${tokens.arrowHeight});\n ${popoverTokens.arrowEdgeMargin}: var(${tokens.arrowEdgeMargin});\n`;\n\n/**\n * Компонент для текстовых подсказок. Основное предназначение — подписи к блокам.\n */\n\nexport const tooltipRoot = (Root: RootProps<HTMLDivElement, Omit<TooltipProps, 'opened' | 'text'>>) =>\n forwardRef<HTMLDivElement, TooltipProps>(\n (\n {\n id,\n text,\n opened,\n isVisible,\n isOpen,\n hasArrow = true,\n arrow,\n animated,\n offset = [3, 8],\n minWidth,\n maxWidth,\n placement = 'bottom',\n usePortal = true,\n target,\n children,\n onDismiss,\n view,\n size,\n contentLeft,\n zIndex = '9200',\n className,\n style,\n hoverTimeout = 300,\n trigger,\n ...rest\n },\n outerRef,\n ) => {\n const [ref, setRef] = useState<HTMLDivElement | null>(null);\n const timeoutRef = useRef<number | undefined>();\n const [isOpened, setIsOpened] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n\n // TODO убрать после отказа от старого API\n const innerIsOpen = Boolean(isVisible || isOpen || opened);\n const innerHasArrow = arrow || hasArrow;\n const showTooltip = innerIsOpen && Boolean(text);\n\n useEffect(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.keyCode === ESCAPE_KEYCODE) {\n onDismiss?.();\n }\n };\n\n window.addEventListener('keydown', onKeyDown);\n\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, []);\n\n const onMouseEnter = () => {\n clearTimeout(timeoutRef.current);\n setIsHovered(true);\n };\n\n const onMouseLeave = () => {\n timeoutRef.current = setTimeout(() => {\n setIsHovered(false);\n }, hoverTimeout);\n };\n\n useEffect(() => {\n return () => clearTimeout(timeoutRef.current);\n }, [trigger]);\n\n const onToggle = (isOpen: boolean) => {\n if (trigger === 'hover') {\n if (isOpen) {\n clearTimeout(timeoutRef.current);\n setIsOpened(true);\n } else {\n timeoutRef.current = setTimeout(() => {\n setIsOpened(false);\n }, hoverTimeout);\n }\n } else {\n setIsOpened(isOpen);\n }\n };\n\n return (\n <StyledPopover\n opened={showTooltip || isOpened || isHovered}\n placement={placement}\n offset={offset}\n zIndex={zIndex}\n target={target || children}\n usePortal={usePortal}\n hasArrow={innerHasArrow}\n aria-hidden={!innerIsOpen}\n aria-live=\"polite\"\n role=\"tooltip\"\n animated={animated}\n className={cx(ref?.classList.toString())}\n {...((trigger === 'hover' || trigger === 'click') && { trigger, onToggle })}\n {...rest}\n >\n <Root\n view={view}\n size={size}\n ref={setRef}\n className={className}\n style={style}\n {...(trigger === 'hover' && { onMouseEnter, onMouseLeave })}\n >\n <TooltipRoot\n ref={outerRef}\n id={id}\n maxWidth={getStringValue(maxWidth)}\n minWidth={getStringValue(minWidth)}\n >\n {contentLeft && <StyledContentLeft>{contentLeft}</StyledContentLeft>}\n {text}\n </TooltipRoot>\n </Root>\n </StyledPopover>\n );\n },\n );\n\nexport const tooltipConfig = {\n name: 'Tooltip',\n tag: 'div',\n layout: tooltipRoot,\n base: '',\n variations: {\n view: {\n css: viewCSS,\n },\n size: {\n css: sizeCSS,\n },\n },\n defaults: {\n view: 'default',\n size: 'm',\n },\n};\n"],"names":["ESCAPE_KEYCODE","getStringValue","value","concat","Popover","component","popoverConfig","_exp","StyledPopover","styled","name","class","propsAsIs","tooltipRoot","Root","forwardRef","_ref","outerRef","id","text","opened","isVisible","isOpen","_ref$hasArrow","hasArrow","arrow","animated","_ref$offset","offset","minWidth","maxWidth","_ref$placement","placement","_ref$usePortal","usePortal","target","children","onDismiss","view","size","contentLeft","_ref$zIndex","zIndex","className","style","_ref$hoverTimeout","hoverTimeout","trigger","rest","_useState","useState","_useState2","_slicedToArray","ref","setRef","timeoutRef","useRef","_useState3","_useState4","isOpened","setIsOpened","_useState5","_useState6","isHovered","setIsHovered","innerIsOpen","Boolean","innerHasArrow","showTooltip","useEffect","onKeyDown","event","keyCode","window","addEventListener","removeEventListener","onMouseEnter","clearTimeout","current","onMouseLeave","setTimeout","onToggle","React","createElement","_extends","role","cx","classList","toString","TooltipRoot","StyledContentLeft","tooltipConfig","tag","layout","base","variations","css","viewCSS","sizeCSS","defaults"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salutejs/plasma-new-hope",
3
- "version": "0.268.0-dev.0",
3
+ "version": "0.268.2-canary.1780.13373736245.0",
4
4
  "description": "Salute Design System blueprint",
5
5
  "main": "cjs/index.js",
6
6
  "module": "es/index.js",
@@ -132,5 +132,5 @@
132
132
  "sideEffects": [
133
133
  "*.css"
134
134
  ],
135
- "gitHead": "d72cd80daf103e27b6060661c6c9a2df3875f2a9"
135
+ "gitHead": "585e27500065b56fd2c91f35bb82eda6e7c59c39"
136
136
  }
@@ -13,6 +13,7 @@ var _Portal = /*#__PURE__*/require("../Portal");
13
13
  var _base = /*#__PURE__*/require("./variations/_view/base");
14
14
  var _Popover = /*#__PURE__*/require("./Popover.styles");
15
15
  var _Popover2 = /*#__PURE__*/require("./Popover.tokens");
16
+ var _usePopoverOffset = /*#__PURE__*/require("./hooks/usePopoverOffset");
16
17
  var _excluded = ["target", "children", "animated", "isOpen", "opened", "trigger", "hasArrow", "frame", "className", "placement", "offset", "zIndex", "isFocusTrapped", "closeOnEsc", "preventOverflow", "usePortal", "view", "onToggle", "closeOnOverlayClick"];
17
18
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
18
19
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
@@ -74,6 +75,7 @@ var popoverRoot = exports.popoverRoot = function popoverRoot(Root) {
74
75
  var popoverRef = (0, _react.useRef)(null);
75
76
  var handleRef = (0, _plasmaCore.useForkRef)(rootRef, outerRootRef);
76
77
  var portalRef = (0, _react.useRef)(null);
78
+ var targetRef = (0, _react.useRef)(null);
77
79
  var trapRef = (0, _hooks.useFocusTrap)(innerIsOpen && isFocusTrapped);
78
80
  var popoverForkRef = (0, _plasmaCore.useForkRef)(popoverRef, trapRef);
79
81
  var _useState = (0, _react.useState)(null),
@@ -92,6 +94,11 @@ var popoverRoot = exports.popoverRoot = function popoverRoot(Root) {
92
94
  var isAuto = isAutoArray || placement.startsWith('auto');
93
95
  var openClass = innerIsOpen && shouldRender ? _Popover2.classes.open : undefined;
94
96
  var animatedClass = animated ? _Popover2.classes.animate : undefined;
97
+ var offsetInner = (0, _usePopoverOffset.usePopoverOffset)({
98
+ handleRef: targetRef,
99
+ placement: placement,
100
+ offsetOuter: offset
101
+ });
95
102
  var _usePopper = (0, _reactPopper.usePopper)(rootRef.current, popoverRef.current, {
96
103
  // TODO: #1121
97
104
  // eslint-disable-next-line no-nested-ternary
@@ -104,7 +111,7 @@ var popoverRoot = exports.popoverRoot = function popoverRoot(Root) {
104
111
  }, {
105
112
  name: 'offset',
106
113
  options: {
107
- offset: [offset[0], offset[1]]
114
+ offset: [offsetInner[0], offsetInner[1]]
108
115
  }
109
116
  }, {
110
117
  name: 'flip',
@@ -235,7 +242,8 @@ var popoverRoot = exports.popoverRoot = function popoverRoot(Root) {
235
242
  }, /*#__PURE__*/_react["default"].createElement(_Popover.StyledWrapper, {
236
243
  className: (0, _utils.cx)(_Popover2.classes.wrapper, ! /*#__PURE__*/(0, _react.isValidElement)(target) && _Popover2.classes.targetAsRef),
237
244
  onMouseEnter: onMouseEnter,
238
- onMouseLeave: onMouseLeave
245
+ onMouseLeave: onMouseLeave,
246
+ ref: targetRef
239
247
  }, /*#__PURE__*/_react["default"].createElement(_Popover.StyledRoot, {
240
248
  ref: handleRef,
241
249
  onClick: onClick,
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.usePopoverOffset = void 0;
7
+ var _react = /*#__PURE__*/require("react");
8
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
9
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
11
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
12
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
13
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
+ var allowedPlacements = ['top-start', 'top-end', 'bottom-start', 'bottom-end', 'left-start', 'left-end', 'right-start', 'right-end'];
15
+ var widthThreshold = 28;
16
+ var offsetXStartThreshold = 17;
17
+ var offsetXEndThreshold = 19;
18
+ var usePopoverOffset = exports.usePopoverOffset = function usePopoverOffset(_ref) {
19
+ var handleRef = _ref.handleRef,
20
+ placement = _ref.placement,
21
+ offsetOuter = _ref.offsetOuter;
22
+ var _useState = (0, _react.useState)(offsetOuter),
23
+ _useState2 = _slicedToArray(_useState, 2),
24
+ offset = _useState2[0],
25
+ setOffset = _useState2[1];
26
+ (0, _react.useEffect)(function () {
27
+ var refElement = handleRef.current;
28
+ if (!refElement || !allowedPlacements.includes(placement)) {
29
+ setOffset(offsetOuter);
30
+ return;
31
+ }
32
+ var _refElement$getBoundi = refElement.getBoundingClientRect(),
33
+ width = _refElement$getBoundi.width,
34
+ height = _refElement$getBoundi.height;
35
+ var isVertical = (placement === null || placement === void 0 ? void 0 : placement.startsWith('top')) || (placement === null || placement === void 0 ? void 0 : placement.startsWith('bottom'));
36
+ var isEnd = placement === null || placement === void 0 ? void 0 : placement.endsWith('end');
37
+ var isStart = placement === null || placement === void 0 ? void 0 : placement.endsWith('start');
38
+ var offsetX = offsetOuter[0];
39
+ var offsetY = offsetOuter[1];
40
+ if (isVertical) {
41
+ if ((isStart || isEnd) && width < widthThreshold) {
42
+ offsetX = isEnd ? offsetXStartThreshold - width / 2 + offsetOuter[0] : -offsetXStartThreshold + width / 2 - offsetOuter[0];
43
+ }
44
+ }
45
+ if (!isVertical && (isStart || isEnd) && height < widthThreshold) {
46
+ offsetX = isStart ? -offsetXEndThreshold + height / 2 : offsetXEndThreshold - height / 2;
47
+ }
48
+ setOffset([offsetX, offsetY]);
49
+ }, [handleRef, placement, offsetOuter]);
50
+ return offset;
51
+ };