@salutejs/plasma-new-hope 0.327.0-canary.1741.15775036215.0 → 0.327.0-canary.1741.15776056320.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/Autocomplete/Autocomplete.js +3 -3
- package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/Autocomplete/FloatingPopover.js +2 -2
- package/cjs/components/Autocomplete/FloatingPopover.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.js +2 -1
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/Combobox/ComboboxNew/Combobox.js +2 -1
- package/cjs/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
- package/cjs/components/Combobox/ComboboxNew/FloatingPopover.js +2 -2
- package/cjs/components/Combobox/ComboboxNew/FloatingPopover.js.map +1 -1
- package/cjs/components/Combobox/ComboboxNew/ui/Inner/Inner.js +2 -2
- package/cjs/components/Combobox/ComboboxNew/ui/Inner/Inner.js.map +1 -1
- package/cjs/components/Combobox/ComboboxOld/Combobox.js +2 -1
- package/cjs/components/Combobox/ComboboxOld/Combobox.js.map +1 -1
- package/cjs/components/Combobox/ComboboxOld/ui/ComboboxItem/ComboboxItem.js +3 -3
- package/cjs/components/Combobox/ComboboxOld/ui/ComboboxItem/ComboboxItem.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.js +2 -2
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/Dropdown/FloatingPopover.js +2 -2
- package/cjs/components/Dropdown/FloatingPopover.js.map +1 -1
- package/cjs/components/Dropdown/ui/DropdownDivider/DropdownDivider.js.map +1 -1
- package/cjs/components/Dropdown/ui/DropdownFooter/DropdownFooter.js.map +1 -1
- package/cjs/components/Dropdown/ui/DropdownGroup/DropdownGroup.js.map +1 -1
- package/cjs/components/Dropdown/ui/DropdownHeader/DropdownHeader.js.map +1 -1
- package/cjs/components/Dropdown/ui/DropdownInner/DropdownInner.js +2 -2
- package/cjs/components/Dropdown/ui/DropdownInner/DropdownInner.js.map +1 -1
- package/cjs/components/Dropdown/ui/DropdownItemOld/DropdownItemOld.js +3 -3
- package/cjs/components/Dropdown/ui/DropdownItemOld/DropdownItemOld.js.map +1 -1
- package/cjs/components/Dropdown/ui/DropdownOld/DropdownOld.js.map +1 -1
- package/cjs/components/Radiobox/Radiobox.js +3 -2
- package/cjs/components/Radiobox/Radiobox.js.map +1 -1
- package/cjs/components/Segment/ui/SegmentGroup/SegmentGroup.js +3 -3
- package/cjs/components/Segment/ui/SegmentGroup/SegmentGroup.js.map +1 -1
- package/cjs/components/Segment/ui/SegmentItem/SegmentItem.js +2 -2
- package/cjs/components/Segment/ui/SegmentItem/SegmentItem.js.map +1 -1
- package/cjs/components/Select/FloatingPopover.js +2 -2
- package/cjs/components/Select/FloatingPopover.js.map +1 -1
- package/cjs/components/Select/Select.js +2 -2
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/Select/ui/Inner/Inner.js +2 -2
- package/cjs/components/Select/ui/Inner/Inner.js.map +1 -1
- package/cjs/components/Spinner/Spinner.js +2 -2
- package/cjs/components/Spinner/Spinner.js.map +1 -1
- package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +3 -3
- package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js.map +1 -1
- package/cjs/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js +3 -3
- package/cjs/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js.map +1 -1
- package/cjs/components/TextArea/ui/Hint/Hint.js.map +1 -1
- package/cjs/components/TextField/TextField.js +4 -3
- package/cjs/components/TextField/TextField.js.map +1 -1
- package/cjs/components/TextField/ui/Hint/Hint.js.map +1 -1
- package/emotion/cjs/components/Autocomplete/Autocomplete.js +3 -3
- package/emotion/cjs/components/Autocomplete/FloatingPopover.js +2 -2
- package/emotion/cjs/components/Checkbox/Checkbox.js +3 -2
- package/emotion/cjs/components/Combobox/ComboboxNew/Combobox.js +21 -20
- package/emotion/cjs/components/Combobox/ComboboxNew/FloatingPopover.js +2 -2
- package/emotion/cjs/components/Combobox/ComboboxNew/ui/Inner/Inner.js +4 -4
- package/emotion/cjs/components/Combobox/ComboboxOld/Combobox.js +9 -8
- package/emotion/cjs/components/Combobox/ComboboxOld/ui/ComboboxItem/ComboboxItem.js +7 -7
- package/emotion/cjs/components/Dropdown/Dropdown.js +8 -8
- package/emotion/cjs/components/Dropdown/FloatingPopover.js +2 -2
- package/emotion/cjs/components/Dropdown/ui/DropdownInner/DropdownInner.js +4 -4
- package/emotion/cjs/components/Dropdown/ui/DropdownItemOld/DropdownItemOld.js +2 -3
- package/emotion/cjs/components/Dropdown/ui/DropdownOld/DropdownOld.js +1 -1
- package/emotion/cjs/components/Radiobox/Radiobox.js +2 -2
- package/emotion/cjs/components/Segment/ui/SegmentGroup/SegmentGroup.js +2 -3
- package/emotion/cjs/components/Segment/ui/SegmentItem/SegmentItem.js +1 -2
- package/emotion/cjs/components/Select/FloatingPopover.js +5 -5
- package/emotion/cjs/components/Select/Select.js +1 -2
- package/emotion/cjs/components/Select/ui/Inner/Inner.js +1 -2
- package/emotion/cjs/components/Spinner/Spinner.js +2 -2
- package/emotion/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +2 -3
- package/emotion/cjs/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js +2 -3
- package/emotion/cjs/components/TextArea/ui/Hint/Hint.js +1 -1
- package/emotion/cjs/components/TextField/TextField.js +4 -4
- package/emotion/cjs/components/TextField/ui/Hint/Hint.js +1 -1
- package/emotion/es/components/Autocomplete/Autocomplete.js +1 -1
- package/emotion/es/components/Autocomplete/FloatingPopover.js +1 -1
- package/emotion/es/components/Checkbox/Checkbox.js +2 -1
- package/emotion/es/components/Combobox/ComboboxNew/Combobox.js +2 -1
- package/emotion/es/components/Combobox/ComboboxNew/FloatingPopover.js +1 -1
- package/emotion/es/components/Combobox/ComboboxNew/ui/Inner/Inner.js +1 -1
- package/emotion/es/components/Combobox/ComboboxOld/Combobox.js +2 -1
- package/emotion/es/components/Combobox/ComboboxOld/ui/ComboboxItem/ComboboxItem.js +1 -1
- package/emotion/es/components/Dropdown/Dropdown.js +1 -1
- package/emotion/es/components/Dropdown/FloatingPopover.js +1 -1
- package/emotion/es/components/Dropdown/ui/DropdownInner/DropdownInner.js +1 -1
- package/emotion/es/components/Dropdown/ui/DropdownItemOld/DropdownItemOld.js +1 -2
- package/emotion/es/components/Dropdown/ui/DropdownOld/DropdownOld.js +1 -1
- package/emotion/es/components/Radiobox/Radiobox.js +2 -2
- package/emotion/es/components/Segment/ui/SegmentGroup/SegmentGroup.js +1 -2
- package/emotion/es/components/Segment/ui/SegmentItem/SegmentItem.js +1 -2
- package/emotion/es/components/Select/FloatingPopover.js +1 -1
- package/emotion/es/components/Select/Select.js +1 -2
- package/emotion/es/components/Select/ui/Inner/Inner.js +1 -2
- package/emotion/es/components/Spinner/Spinner.js +1 -1
- package/emotion/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +1 -2
- package/emotion/es/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js +1 -2
- package/emotion/es/components/TextArea/ui/Hint/Hint.js +1 -1
- package/emotion/es/components/TextField/TextField.js +3 -3
- package/emotion/es/components/TextField/ui/Hint/Hint.js +1 -1
- package/es/components/Autocomplete/Autocomplete.js +1 -1
- package/es/components/Autocomplete/Autocomplete.js.map +1 -1
- package/es/components/Autocomplete/FloatingPopover.js +1 -1
- package/es/components/Autocomplete/FloatingPopover.js.map +1 -1
- package/es/components/Checkbox/Checkbox.js +2 -1
- package/es/components/Checkbox/Checkbox.js.map +1 -1
- package/es/components/Combobox/ComboboxNew/Combobox.js +2 -1
- package/es/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
- package/es/components/Combobox/ComboboxNew/FloatingPopover.js +1 -1
- package/es/components/Combobox/ComboboxNew/FloatingPopover.js.map +1 -1
- package/es/components/Combobox/ComboboxNew/ui/Inner/Inner.js +1 -1
- package/es/components/Combobox/ComboboxNew/ui/Inner/Inner.js.map +1 -1
- package/es/components/Combobox/ComboboxOld/Combobox.js +2 -1
- package/es/components/Combobox/ComboboxOld/Combobox.js.map +1 -1
- package/es/components/Combobox/ComboboxOld/ui/ComboboxItem/ComboboxItem.js +2 -2
- package/es/components/Combobox/ComboboxOld/ui/ComboboxItem/ComboboxItem.js.map +1 -1
- package/es/components/Dropdown/Dropdown.js +1 -1
- package/es/components/Dropdown/Dropdown.js.map +1 -1
- package/es/components/Dropdown/FloatingPopover.js +1 -1
- package/es/components/Dropdown/FloatingPopover.js.map +1 -1
- package/es/components/Dropdown/ui/DropdownDivider/DropdownDivider.js.map +1 -1
- package/es/components/Dropdown/ui/DropdownFooter/DropdownFooter.js.map +1 -1
- package/es/components/Dropdown/ui/DropdownGroup/DropdownGroup.js.map +1 -1
- package/es/components/Dropdown/ui/DropdownHeader/DropdownHeader.js.map +1 -1
- package/es/components/Dropdown/ui/DropdownInner/DropdownInner.js +1 -1
- package/es/components/Dropdown/ui/DropdownInner/DropdownInner.js.map +1 -1
- package/es/components/Dropdown/ui/DropdownItemOld/DropdownItemOld.js +2 -2
- package/es/components/Dropdown/ui/DropdownItemOld/DropdownItemOld.js.map +1 -1
- package/es/components/Dropdown/ui/DropdownOld/DropdownOld.js.map +1 -1
- package/es/components/Radiobox/Radiobox.js +3 -2
- package/es/components/Radiobox/Radiobox.js.map +1 -1
- package/es/components/Segment/ui/SegmentGroup/SegmentGroup.js +2 -2
- package/es/components/Segment/ui/SegmentGroup/SegmentGroup.js.map +1 -1
- package/es/components/Segment/ui/SegmentItem/SegmentItem.js +1 -1
- package/es/components/Segment/ui/SegmentItem/SegmentItem.js.map +1 -1
- package/es/components/Select/FloatingPopover.js +1 -1
- package/es/components/Select/FloatingPopover.js.map +1 -1
- package/es/components/Select/Select.js +1 -1
- package/es/components/Select/Select.js.map +1 -1
- package/es/components/Select/ui/Inner/Inner.js +1 -1
- package/es/components/Select/ui/Inner/Inner.js.map +1 -1
- package/es/components/Spinner/Spinner.js +1 -1
- package/es/components/Spinner/Spinner.js.map +1 -1
- package/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +2 -2
- package/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js.map +1 -1
- package/es/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js +2 -2
- package/es/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js.map +1 -1
- package/es/components/TextArea/ui/Hint/Hint.js.map +1 -1
- package/es/components/TextField/TextField.js +2 -1
- package/es/components/TextField/TextField.js.map +1 -1
- package/es/components/TextField/ui/Hint/Hint.js.map +1 -1
- package/package.json +4 -4
- package/styled-components/cjs/components/Autocomplete/Autocomplete.js +3 -3
- package/styled-components/cjs/components/Autocomplete/FloatingPopover.js +2 -2
- package/styled-components/cjs/components/Checkbox/Checkbox.js +3 -2
- package/styled-components/cjs/components/Combobox/ComboboxNew/Combobox.js +21 -20
- package/styled-components/cjs/components/Combobox/ComboboxNew/FloatingPopover.js +2 -2
- package/styled-components/cjs/components/Combobox/ComboboxNew/ui/Inner/Inner.js +4 -4
- package/styled-components/cjs/components/Combobox/ComboboxOld/Combobox.js +9 -8
- package/styled-components/cjs/components/Combobox/ComboboxOld/ui/ComboboxItem/ComboboxItem.js +7 -7
- package/styled-components/cjs/components/Dropdown/Dropdown.js +8 -8
- package/styled-components/cjs/components/Dropdown/FloatingPopover.js +2 -2
- package/styled-components/cjs/components/Dropdown/ui/DropdownInner/DropdownInner.js +4 -4
- package/styled-components/cjs/components/Dropdown/ui/DropdownItemOld/DropdownItemOld.js +2 -3
- package/styled-components/cjs/components/Dropdown/ui/DropdownOld/DropdownOld.js +1 -1
- package/styled-components/cjs/components/Radiobox/Radiobox.js +2 -2
- package/styled-components/cjs/components/Segment/ui/SegmentGroup/SegmentGroup.js +2 -3
- package/styled-components/cjs/components/Segment/ui/SegmentItem/SegmentItem.js +1 -2
- package/styled-components/cjs/components/Select/FloatingPopover.js +5 -5
- package/styled-components/cjs/components/Select/Select.js +1 -2
- package/styled-components/cjs/components/Select/ui/Inner/Inner.js +1 -2
- package/styled-components/cjs/components/Spinner/Spinner.js +2 -2
- package/styled-components/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +2 -3
- package/styled-components/cjs/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js +2 -3
- package/styled-components/cjs/components/TextArea/ui/Hint/Hint.js +1 -1
- package/styled-components/cjs/components/TextField/TextField.js +3 -3
- package/styled-components/cjs/components/TextField/ui/Hint/Hint.js +1 -1
- package/styled-components/es/components/Autocomplete/Autocomplete.js +1 -1
- package/styled-components/es/components/Autocomplete/FloatingPopover.js +1 -1
- package/styled-components/es/components/Checkbox/Checkbox.js +2 -1
- package/styled-components/es/components/Combobox/ComboboxNew/Combobox.js +2 -1
- package/styled-components/es/components/Combobox/ComboboxNew/FloatingPopover.js +1 -1
- package/styled-components/es/components/Combobox/ComboboxNew/ui/Inner/Inner.js +1 -1
- package/styled-components/es/components/Combobox/ComboboxOld/Combobox.js +2 -1
- package/styled-components/es/components/Combobox/ComboboxOld/ui/ComboboxItem/ComboboxItem.js +1 -1
- package/styled-components/es/components/Dropdown/Dropdown.js +1 -1
- package/styled-components/es/components/Dropdown/FloatingPopover.js +1 -1
- package/styled-components/es/components/Dropdown/ui/DropdownInner/DropdownInner.js +1 -1
- package/styled-components/es/components/Dropdown/ui/DropdownItemOld/DropdownItemOld.js +1 -2
- package/styled-components/es/components/Dropdown/ui/DropdownOld/DropdownOld.js +1 -1
- package/styled-components/es/components/Radiobox/Radiobox.js +2 -2
- package/styled-components/es/components/Segment/ui/SegmentGroup/SegmentGroup.js +1 -2
- package/styled-components/es/components/Segment/ui/SegmentItem/SegmentItem.js +1 -2
- package/styled-components/es/components/Select/FloatingPopover.js +1 -1
- package/styled-components/es/components/Select/Select.js +1 -2
- package/styled-components/es/components/Select/ui/Inner/Inner.js +1 -2
- package/styled-components/es/components/Spinner/Spinner.js +1 -1
- package/styled-components/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +1 -2
- package/styled-components/es/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js +1 -2
- package/styled-components/es/components/TextArea/ui/Hint/Hint.js +1 -1
- package/styled-components/es/components/TextField/TextField.js +2 -2
- package/styled-components/es/components/TextField/ui/Hint/Hint.js +1 -1
- package/types/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/types/components/Combobox/ComboboxNew/Combobox.d.ts.map +1 -1
- package/types/components/Combobox/ComboboxOld/Combobox.d.ts.map +1 -1
- package/types/components/Combobox/ComboboxOld/ui/ComboboxItem/ComboboxItem.d.ts.map +1 -1
- package/types/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/types/components/Dropdown/ui/DropdownDivider/DropdownDivider.d.ts +1 -1
- package/types/components/Dropdown/ui/DropdownDivider/DropdownDivider.d.ts.map +1 -1
- package/types/components/Dropdown/ui/DropdownFooter/DropdownFooter.d.ts +1 -1
- package/types/components/Dropdown/ui/DropdownFooter/DropdownFooter.d.ts.map +1 -1
- package/types/components/Dropdown/ui/DropdownGroup/DropdownGroup.d.ts +1 -1
- package/types/components/Dropdown/ui/DropdownGroup/DropdownGroup.d.ts.map +1 -1
- package/types/components/Dropdown/ui/DropdownHeader/DropdownHeader.d.ts +1 -1
- package/types/components/Dropdown/ui/DropdownHeader/DropdownHeader.d.ts.map +1 -1
- package/types/components/Dropdown/ui/DropdownItemOld/DropdownItemOld.d.ts +1 -1
- package/types/components/Dropdown/ui/DropdownItemOld/DropdownItemOld.d.ts.map +1 -1
- package/types/components/Dropdown/ui/DropdownOld/DropdownOld.d.ts +1 -1
- package/types/components/Dropdown/ui/DropdownOld/DropdownOld.d.ts.map +1 -1
- package/types/components/Radiobox/Radiobox.d.ts +2 -2
- package/types/components/Radiobox/Radiobox.d.ts.map +1 -1
- package/types/components/Segment/ui/SegmentGroup/SegmentGroup.d.ts +1 -1
- package/types/components/Segment/ui/SegmentGroup/SegmentGroup.d.ts.map +1 -1
- package/types/components/Segment/ui/SegmentItem/SegmentItem.d.ts +1 -1
- package/types/components/Segment/ui/SegmentItem/SegmentItem.d.ts.map +1 -1
- package/types/components/Select/Select.d.ts.map +1 -1
- package/types/components/Select/ui/Inner/Inner.d.ts.map +1 -1
- package/types/components/Spinner/Spinner.d.ts +1 -1
- package/types/components/Spinner/Spinner.d.ts.map +1 -1
- package/types/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.d.ts +1 -1
- package/types/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.d.ts.map +1 -1
- package/types/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.d.ts +1 -1
- package/types/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.d.ts.map +1 -1
- package/types/components/TextField/TextField.d.ts +1 -1
- package/types/components/TextField/TextField.d.ts.map +1 -1
@@ -1 +1 @@
|
|
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(false);\n\n // Триггер доп. скролла при появлении левой стрелки, которая отъедает ширину scroll-контейнера\n const [shouldTriggerAdditionalScroll, setShouldTriggerAdditionalScroll] = useState(false);\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 } = scrollRef.current;\n const firstOverflowingTab = getFirstOverflowingTab(\n refs.items.slice().reverse(),\n scrollLeft,\n rest.orientation,\n );\n\n if (!firstOverflowingTab?.current) {\n return;\n }\n\n const scrollElStyle = getComputedStyle(scrollRef.current);\n scrollRef.current.scrollTo({\n left: firstOverflowingTab.current.offsetLeft - parseInt(scrollElStyle.paddingLeft, 10),\n });\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, rest.orientation);\n\n if (!lastOverflowingTab?.current) {\n return;\n }\n\n if (firstItemVisible) {\n setShouldTriggerAdditionalScroll(true);\n }\n\n const scrollElStyle = getComputedStyle(scrollRef.current);\n scrollRef.current.scrollTo({\n left: Math.round(\n lastOverflowingTab.current.offsetLeft +\n lastOverflowingTab.current.offsetWidth -\n scrollRef.current.clientWidth +\n parseInt(scrollElStyle.paddingRight, 10),\n ),\n });\n }, [firstItemVisible, 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 scrollElStyle = getComputedStyle(event.currentTarget);\n const minScrollLeft = parseInt(scrollElStyle.paddingLeft, 10);\n const maxScrollLeft =\n event.currentTarget.scrollWidth -\n event.currentTarget.clientWidth -\n parseInt(scrollElStyle.paddingRight, 10);\n const scrollLeft = Math.round(event.currentTarget.scrollLeft);\n\n setFirstItemVisible(scrollLeft <= minScrollLeft);\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 || !shouldTriggerAdditionalScroll || !scrollRef.current || !leftArrowRef.current) {\n return;\n }\n const style = getComputedStyle(scrollRef.current);\n scrollRef.current.scrollTo({\n left: Math.round(\n scrollRef.current.scrollLeft + leftArrowRef.current.clientWidth + parseInt(style.paddingLeft, 10),\n ),\n });\n setShouldTriggerAdditionalScroll(false);\n }, [firstItemVisible, shouldTriggerAdditionalScroll, 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","stretch","disabled","clip","view","children","pilled","index","className","hasDivider","rest","firstItemVisible","setFirstItemVisible","useState","lastItemVisible","setLastItemVisible","shouldTriggerAdditionalScroll","setShouldTriggerAdditionalScroll","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","current","scrollLeft","firstOverflowingTab","getFirstOverflowingTab","items","slice","reverse","orientation","scrollElStyle","getComputedStyle","scrollTo","left","offsetLeft","parseInt","paddingLeft","onNext","scrollRight","Math","round","clientWidth","lastOverflowingTab","getLastOverflowingTab","offsetWidth","paddingRight","PreviousButton","React","createElement","StyledArrow","type","onClick","tabIndex","ref","isLeftArrow","IconDisclosureLeft","color","NextButton","IconDisclosureRight","handleScroll","event","stopPropagation","currentTarget","minScrollLeft","maxScrollLeft","scrollWidth","onKeyDown","minIndex","maxIndex","length","nextIndex","keyCode","end","right","home","preventDefault","focus","scrollIntoView","block","inline","behavior","useLayoutEffect","style","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 { cx, safeUseId } from 'src/utils';\nimport type { RootProps } from 'src/engines/types';\n\nimport { IconDisclosureLeft, IconDisclosureRight } from '../../../../_Icon';\nimport { classes } from '../../../tokens';\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(false);\n\n // Триггер доп. скролла при появлении левой стрелки, которая отъедает ширину scroll-контейнера\n const [shouldTriggerAdditionalScroll, setShouldTriggerAdditionalScroll] = useState(false);\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 } = scrollRef.current;\n const firstOverflowingTab = getFirstOverflowingTab(\n refs.items.slice().reverse(),\n scrollLeft,\n rest.orientation,\n );\n\n if (!firstOverflowingTab?.current) {\n return;\n }\n\n const scrollElStyle = getComputedStyle(scrollRef.current);\n scrollRef.current.scrollTo({\n left: firstOverflowingTab.current.offsetLeft - parseInt(scrollElStyle.paddingLeft, 10),\n });\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, rest.orientation);\n\n if (!lastOverflowingTab?.current) {\n return;\n }\n\n if (firstItemVisible) {\n setShouldTriggerAdditionalScroll(true);\n }\n\n const scrollElStyle = getComputedStyle(scrollRef.current);\n scrollRef.current.scrollTo({\n left: Math.round(\n lastOverflowingTab.current.offsetLeft +\n lastOverflowingTab.current.offsetWidth -\n scrollRef.current.clientWidth +\n parseInt(scrollElStyle.paddingRight, 10),\n ),\n });\n }, [firstItemVisible, 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 scrollElStyle = getComputedStyle(event.currentTarget);\n const minScrollLeft = parseInt(scrollElStyle.paddingLeft, 10);\n const maxScrollLeft =\n event.currentTarget.scrollWidth -\n event.currentTarget.clientWidth -\n parseInt(scrollElStyle.paddingRight, 10);\n const scrollLeft = Math.round(event.currentTarget.scrollLeft);\n\n setFirstItemVisible(scrollLeft <= minScrollLeft);\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 || !shouldTriggerAdditionalScroll || !scrollRef.current || !leftArrowRef.current) {\n return;\n }\n const style = getComputedStyle(scrollRef.current);\n scrollRef.current.scrollTo({\n left: Math.round(\n scrollRef.current.scrollLeft + leftArrowRef.current.clientWidth + parseInt(style.paddingLeft, 10),\n ),\n });\n setShouldTriggerAdditionalScroll(false);\n }, [firstItemVisible, shouldTriggerAdditionalScroll, 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","stretch","disabled","clip","view","children","pilled","index","className","hasDivider","rest","firstItemVisible","setFirstItemVisible","useState","lastItemVisible","setLastItemVisible","shouldTriggerAdditionalScroll","setShouldTriggerAdditionalScroll","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","current","scrollLeft","firstOverflowingTab","getFirstOverflowingTab","items","slice","reverse","orientation","scrollElStyle","getComputedStyle","scrollTo","left","offsetLeft","parseInt","paddingLeft","onNext","scrollRight","Math","round","clientWidth","lastOverflowingTab","getLastOverflowingTab","offsetWidth","paddingRight","PreviousButton","React","createElement","StyledArrow","type","onClick","tabIndex","ref","isLeftArrow","IconDisclosureLeft","color","NextButton","IconDisclosureRight","handleScroll","event","stopPropagation","currentTarget","minScrollLeft","maxScrollLeft","scrollWidth","onKeyDown","minIndex","maxIndex","length","nextIndex","keyCode","end","right","home","preventDefault","focus","scrollIntoView","block","inline","behavior","useLayoutEffect","style","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,14 +1,14 @@
|
|
1
1
|
import { extends as _extends } from '../../../../../_virtual/_rollupPluginBabelHelpers.js';
|
2
2
|
import React, { forwardRef, useState, useMemo, useRef, useCallback, useLayoutEffect } from 'react';
|
3
|
-
import { safeUseId } from '@salutejs/plasma-core';
|
4
|
-
import { classes } from '../../../tokens.js';
|
5
3
|
import { cx } from '../../../../../utils/index.js';
|
4
|
+
import { classes } from '../../../tokens.js';
|
6
5
|
import { TabItemRefs, TabsContext } from '../../../TabsContext.js';
|
7
6
|
import { getFirstOverflowingTab, getLastOverflowingTab } from '../../../utils/index.js';
|
8
7
|
import { StyledContentWrapper, StyledContent, base, StyledArrow } from './VerticalTabs.styles.js';
|
9
8
|
import { base as base$1 } from './variations/_size/base.js';
|
10
9
|
import { base as base$2 } from './variations/_view/base.js';
|
11
10
|
import { base as base$3 } from './variations/_disabled/base.js';
|
11
|
+
import { safeUseId } from '../../../../../utils/react.js';
|
12
12
|
import { IconDisclosureLeft } from '../../../../_Icon/Icons/IconDisclosureLeft.js';
|
13
13
|
import { IconDisclosureRight } from '../../../../_Icon/Icons/IconDisclosureRight.js';
|
14
14
|
|
@@ -1 +1 @@
|
|
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(false);\n\n // Триггер доп. скролла при появлении левой стрелки, которая отъедает ширину scroll-контейнера\n const [shouldTriggerAdditionalScroll, setShouldTriggerAdditionalScroll] = useState(false);\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 } = scrollRef.current;\n const firstOverflowingTab = getFirstOverflowingTab(refs.items.slice().reverse(), scrollTop, orientation);\n\n if (!firstOverflowingTab?.current) {\n return;\n }\n\n const scrollElStyle = getComputedStyle(scrollRef.current);\n scrollRef.current.scrollTo({\n top: firstOverflowingTab.current.offsetTop - parseInt(scrollElStyle.paddingTop, 10),\n });\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, orientation);\n\n if (!lastOverflowingTab?.current) {\n return;\n }\n\n if (firstItemVisible) {\n setShouldTriggerAdditionalScroll(true);\n }\n\n const scrollElStyle = getComputedStyle(scrollRef.current);\n scrollRef.current.scrollTo({\n top: Math.round(\n lastOverflowingTab.current.offsetTop +\n lastOverflowingTab.current.offsetHeight -\n scrollRef.current.clientHeight +\n parseInt(scrollElStyle.paddingTop, 10),\n ),\n });\n }, [firstItemVisible, 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 scrollElStyle = getComputedStyle(event.currentTarget);\n const minScrollTop = parseInt(scrollElStyle.paddingLeft, 10);\n const maxScrollTop =\n event.currentTarget.scrollHeight -\n event.currentTarget.clientHeight -\n parseInt(scrollElStyle.paddingTop, 10);\n const scrollTop = Math.round(event.currentTarget.scrollTop);\n\n setFirstItemVisible(scrollTop <= minScrollTop);\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 || !shouldTriggerAdditionalScroll || !scrollRef.current || !upArrowRef.current) {\n return;\n }\n\n const style = getComputedStyle(scrollRef.current);\n scrollRef.current.scrollTo({\n top: Math.round(\n scrollRef.current.scrollTop + upArrowRef.current.clientHeight + parseInt(style.paddingTop, 10),\n ),\n });\n setShouldTriggerAdditionalScroll(false);\n }, [firstItemVisible, shouldTriggerAdditionalScroll, 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","disabled","clip","size","view","children","index","className","orientation","hasDivider","rest","firstItemVisible","setFirstItemVisible","useState","lastItemVisible","setLastItemVisible","shouldTriggerAdditionalScroll","setShouldTriggerAdditionalScroll","refs","useMemo","TabItemRefs","uniqId","safeUseId","tabsId","noDividerClass","classes","tabsNoDivider","undefined","hasTopArrowClass","tabsHasTopArrow","hasBottomArrowClass","tabsHasBottomArrow","clipScrollClass","tabsClipScroll","clipShowAllClass","tabsClipShowAll","scrollRef","useRef","trackRef","upArrowRef","onPrev","useCallback","current","scrollTop","firstOverflowingTab","getFirstOverflowingTab","items","slice","reverse","scrollElStyle","getComputedStyle","scrollTo","top","offsetTop","parseInt","paddingTop","onNext","scrollBottom","Math","round","clientHeight","lastOverflowingTab","getLastOverflowingTab","offsetHeight","PreviousButton","React","createElement","StyledArrow","type","onClick","tabIndex","ref","IconDisclosureLeft","color","NextButton","IconDisclosureRight","handleScroll","event","stopPropagation","currentTarget","minScrollTop","paddingLeft","maxScrollTop","scrollHeight","onKeyDown","minIndex","maxIndex","length","nextIndex","keyCode","end","up","down","home","preventDefault","focus","scrollIntoView","block","inline","behavior","useLayoutEffect","style","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 { cx, safeUseId } from 'src/utils';\nimport type { RootProps } from 'src/engines/types';\n\nimport { classes } from '../../../tokens';\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(false);\n\n // Триггер доп. скролла при появлении левой стрелки, которая отъедает ширину scroll-контейнера\n const [shouldTriggerAdditionalScroll, setShouldTriggerAdditionalScroll] = useState(false);\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 } = scrollRef.current;\n const firstOverflowingTab = getFirstOverflowingTab(refs.items.slice().reverse(), scrollTop, orientation);\n\n if (!firstOverflowingTab?.current) {\n return;\n }\n\n const scrollElStyle = getComputedStyle(scrollRef.current);\n scrollRef.current.scrollTo({\n top: firstOverflowingTab.current.offsetTop - parseInt(scrollElStyle.paddingTop, 10),\n });\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, orientation);\n\n if (!lastOverflowingTab?.current) {\n return;\n }\n\n if (firstItemVisible) {\n setShouldTriggerAdditionalScroll(true);\n }\n\n const scrollElStyle = getComputedStyle(scrollRef.current);\n scrollRef.current.scrollTo({\n top: Math.round(\n lastOverflowingTab.current.offsetTop +\n lastOverflowingTab.current.offsetHeight -\n scrollRef.current.clientHeight +\n parseInt(scrollElStyle.paddingTop, 10),\n ),\n });\n }, [firstItemVisible, 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 scrollElStyle = getComputedStyle(event.currentTarget);\n const minScrollTop = parseInt(scrollElStyle.paddingLeft, 10);\n const maxScrollTop =\n event.currentTarget.scrollHeight -\n event.currentTarget.clientHeight -\n parseInt(scrollElStyle.paddingTop, 10);\n const scrollTop = Math.round(event.currentTarget.scrollTop);\n\n setFirstItemVisible(scrollTop <= minScrollTop);\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 || !shouldTriggerAdditionalScroll || !scrollRef.current || !upArrowRef.current) {\n return;\n }\n\n const style = getComputedStyle(scrollRef.current);\n scrollRef.current.scrollTo({\n top: Math.round(\n scrollRef.current.scrollTop + upArrowRef.current.clientHeight + parseInt(style.paddingTop, 10),\n ),\n });\n setShouldTriggerAdditionalScroll(false);\n }, [firstItemVisible, shouldTriggerAdditionalScroll, 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","disabled","clip","size","view","children","index","className","orientation","hasDivider","rest","firstItemVisible","setFirstItemVisible","useState","lastItemVisible","setLastItemVisible","shouldTriggerAdditionalScroll","setShouldTriggerAdditionalScroll","refs","useMemo","TabItemRefs","uniqId","safeUseId","tabsId","noDividerClass","classes","tabsNoDivider","undefined","hasTopArrowClass","tabsHasTopArrow","hasBottomArrowClass","tabsHasBottomArrow","clipScrollClass","tabsClipScroll","clipShowAllClass","tabsClipShowAll","scrollRef","useRef","trackRef","upArrowRef","onPrev","useCallback","current","scrollTop","firstOverflowingTab","getFirstOverflowingTab","items","slice","reverse","scrollElStyle","getComputedStyle","scrollTo","top","offsetTop","parseInt","paddingTop","onNext","scrollBottom","Math","round","clientHeight","lastOverflowingTab","getLastOverflowingTab","offsetHeight","PreviousButton","React","createElement","StyledArrow","type","onClick","tabIndex","ref","IconDisclosureLeft","color","NextButton","IconDisclosureRight","handleScroll","event","stopPropagation","currentTarget","minScrollTop","paddingLeft","maxScrollTop","scrollHeight","onKeyDown","minIndex","maxIndex","length","nextIndex","keyCode","end","up","down","home","preventDefault","focus","scrollIntoView","block","inline","behavior","useLayoutEffect","style","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 +1 @@
|
|
1
|
-
{"version":3,"file":"Hint.js","sources":["../../../../../src/components/TextArea/ui/Hint/Hint.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { Hint, HintIconWrapper, HintTargetWrapper } from '../../TextArea.styles';\nimport { IconInfoCircleOutline } from '../../../_Icon';\nimport {
|
1
|
+
{"version":3,"file":"Hint.js","sources":["../../../../../src/components/TextArea/ui/Hint/Hint.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { safeUseId } from 'src/utils';\n\nimport { Hint, HintIconWrapper, HintTargetWrapper } from '../../TextArea.styles';\nimport { IconInfoCircleOutline } from '../../../_Icon';\nimport { tokens } from '../../TextArea.tokens';\n\nimport type { TextAreaHintProps } from './Hint.types';\n\nexport const HintComponent = forwardRef<HTMLDivElement, TextAreaHintProps>(\n (\n {\n hintText,\n isHintVisible,\n hintTrigger,\n hintTargetIcon,\n hintPlacement,\n hintHasArrow,\n hintOffset,\n hintWidth,\n hintContentLeft,\n isInnerLabel,\n size,\n handleHintShow,\n handleHintHide,\n handleHintClick,\n },\n ref,\n ) => {\n const hintId = safeUseId();\n\n const getInfoIconSize = () => {\n if (!isInnerLabel || size === 'xs') {\n return 'xs';\n }\n\n return 's';\n };\n\n return (\n <Hint\n ref={ref}\n text={String(hintText)}\n opened={isHintVisible}\n target={\n <HintTargetWrapper>\n <HintIconWrapper\n id={hintId}\n {...(hintTrigger === 'hover'\n ? {\n onMouseEnter: handleHintShow,\n onMouseLeave: handleHintHide,\n }\n : { onClick: handleHintClick })}\n >\n {hintTargetIcon || (\n <IconInfoCircleOutline\n size={getInfoIconSize()}\n color=\"inherit\"\n sizeCustomProperty={tokens.hintCustomIconTargetSize}\n />\n )}\n </HintIconWrapper>\n </HintTargetWrapper>\n }\n placement={hintPlacement}\n hasArrow={hintHasArrow}\n offset={hintOffset}\n minWidth={hintWidth}\n maxWidth={hintWidth}\n contentLeft={hintContentLeft}\n frame={hintId}\n />\n );\n },\n);\n"],"names":["HintComponent","forwardRef","hintText","isHintVisible","hintTrigger","hintTargetIcon","hintPlacement","hintHasArrow","hintOffset","hintWidth","hintContentLeft","isInnerLabel","size","handleHintShow","handleHintHide","handleHintClick","ref","hintId","safeUseId","getInfoIconSize","React","createElement","Hint","text","String","opened","target","HintTargetWrapper","HintIconWrapper","_extends","id","onMouseEnter","onMouseLeave","onClick","IconInfoCircleOutline","color","sizeCustomProperty","tokens","hintCustomIconTargetSize","placement","hasArrow","offset","minWidth","maxWidth","contentLeft","frame"],"mappings":";;;;;;;AASaA,MAAAA,aAAa,gBAAGC,UAAU,CACnC,CACI;EACIC,QAAQ;EACRC,aAAa;EACbC,WAAW;EACXC,cAAc;EACdC,aAAa;EACbC,YAAY;EACZC,UAAU;EACVC,SAAS;EACTC,eAAe;EACfC,YAAY;EACZC,IAAI;EACJC,cAAc;EACdC,cAAc;AACdC,EAAAA,eAAAA;AACJ,CAAC,EACDC,GAAG,KACF;AACD,EAAA,MAAMC,MAAM,GAAGC,SAAS,EAAE,CAAA;EAE1B,MAAMC,eAAe,GAAGA,MAAM;AAC1B,IAAA,IAAI,CAACR,YAAY,IAAIC,IAAI,KAAK,IAAI,EAAE;AAChC,MAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA,IAAA,OAAO,GAAG,CAAA;GACb,CAAA;AAED,EAAA,oBACIQ,KAAA,CAAAC,aAAA,CAACC,IAAI,EAAA;AACDN,IAAAA,GAAG,EAAEA,GAAI;AACTO,IAAAA,IAAI,EAAEC,MAAM,CAACtB,QAAQ,CAAE;AACvBuB,IAAAA,MAAM,EAAEtB,aAAc;AACtBuB,IAAAA,MAAM,eACFN,KAAA,CAAAC,aAAA,CAACM,iBAAiB,EACdP,IAAAA,eAAAA,KAAA,CAAAC,aAAA,CAACO,eAAe,EAAAC,QAAA,CAAA;AACZC,MAAAA,EAAE,EAAEb,MAAAA;KACCb,EAAAA,WAAW,KAAK,OAAO,GACtB;AACI2B,MAAAA,YAAY,EAAElB,cAAc;AAC5BmB,MAAAA,YAAY,EAAElB,cAAAA;AAClB,KAAC,GACD;AAAEmB,MAAAA,OAAO,EAAElB,eAAAA;AAAgB,KAAC,GAEjCV,cAAc,iBACXe,KAAA,CAAAC,aAAA,CAACa,qBAAqB,EAAA;MAClBtB,IAAI,EAAEO,eAAe,EAAG;AACxBgB,MAAAA,KAAK,EAAC,SAAS;MACfC,kBAAkB,EAAEC,MAAM,CAACC,wBAAAA;KAC9B,CAEQ,CACF,CACtB;AACDC,IAAAA,SAAS,EAAEjC,aAAc;AACzBkC,IAAAA,QAAQ,EAAEjC,YAAa;AACvBkC,IAAAA,MAAM,EAAEjC,UAAW;AACnBkC,IAAAA,QAAQ,EAAEjC,SAAU;AACpBkC,IAAAA,QAAQ,EAAElC,SAAU;AACpBmC,IAAAA,WAAW,EAAElC,eAAgB;AAC7BmC,IAAAA,KAAK,EAAE5B,MAAAA;AAAO,GACjB,CAAC,CAAA;AAEV,CACJ;;;;"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import './TextField_1lzb2r1.css';
|
2
2
|
import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
3
3
|
import React, { forwardRef, useRef, useState, useEffect } from 'react';
|
4
|
-
import { useForkRef
|
4
|
+
import { useForkRef } from '@salutejs/plasma-core';
|
5
5
|
import { cx } from '../../utils/index.js';
|
6
6
|
import { base as base$2 } from './variations/_size/base.js';
|
7
7
|
import { base as base$1 } from './variations/_view/base.js';
|
@@ -16,6 +16,7 @@ import { OuterLabelWrapper, StyledIndicatorWrapper, Label, StyledHintWrapper, St
|
|
16
16
|
import { classes } from './TextField.tokens.js';
|
17
17
|
import { HintComponent } from './ui/Hint/Hint.js';
|
18
18
|
import { getInputWidth } from './getInputWidth.js';
|
19
|
+
import { safeUseId } from '../../utils/react.js';
|
19
20
|
import { useOutsideClick } from '../../hooks/useOutsideClick.js';
|
20
21
|
import { useKeyNavigation } from './hooks/useKeyNavigation.js';
|
21
22
|
import { TextFieldChip } from './ui/TextFieldChip/TextFieldChip.js';
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TextField.js","sources":["../../../src/components/TextField/TextField.tsx"],"sourcesContent":["import React, { forwardRef, useEffect, useRef, useState } from 'react';\nimport type { FormEventHandler, ChangeEventHandler, KeyboardEvent, ChangeEvent, MouseEventHandler } from 'react';\nimport { safeUseId, useForkRef } from '@salutejs/plasma-core';\nimport { css } from '@linaria/core';\n\nimport type { RootProps } from '../../engines';\nimport { cx } from '../../utils';\nimport { useOutsideClick } from '../../hooks';\n\nimport type { ChipValues, TextFieldPrimitiveValue, TextFieldProps, TextFieldRootProps } from './TextField.types';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as clearCSS } from './variations/_clear/base';\nimport { base as disabledCSS } from './variations/_disabled/base';\nimport { base as readOnlyCSS } from './variations/_read-only/base';\nimport { base as labelPlacementCSS } from './variations/_label-placement/base';\nimport { base as hintViewCSS } from './variations/_hint-view/base';\nimport { base as hintSizeCSS } from './variations/_hint-size/base';\nimport { base as chipViewCSS } from './variations/_chip-view/base';\nimport {\n Input,\n InputContainer,\n LeftHelper,\n Label,\n InputWrapper,\n InputLabelWrapper,\n StyledContentLeft,\n StyledContentRight,\n StyledChips,\n StyledTextBefore,\n StyledTextAfter,\n StyledIndicator,\n StyledOptionalText,\n InputPlaceholder,\n OuterLabelWrapper,\n TitleCaption,\n StyledHintWrapper,\n StyledIndicatorWrapper,\n StyledContentRightWrapper,\n} from './TextField.styles';\nimport { classes } from './TextField.tokens';\nimport { TextFieldChip } from './ui';\nimport { useKeyNavigation } from './hooks';\nimport { HintComponent } from './ui/Hint/Hint';\nimport { getInputWidth } from './getInputWidth';\n\nconst optionalText = 'optional';\n\nexport const base = css`\n /* NOTE: Webkit не применяет opacity к inline тегам */\n display: block;\n`;\n\nconst HINT_DEFAULT_OFFSET: [number, number] = [0, 0];\n\nexport const textFieldRoot = (Root: RootProps<HTMLDivElement, TextFieldRootProps>) =>\n forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n id,\n className,\n style,\n\n // layout\n contentLeft,\n contentRight,\n label,\n labelPlacement,\n keepPlaceholder,\n textBefore,\n textAfter,\n placeholder,\n leftHelper,\n enumerationType = 'plain',\n requiredPlacement = 'right',\n hasRequiredIndicator = true,\n titleCaption,\n chipView = 'default',\n chipValidator,\n\n // hint\n hintTrigger = 'hover',\n hintText,\n hintView = 'default',\n hintSize = 'm',\n hintTargetIcon,\n hintTargetPlacement = 'outer',\n hintPlacement = 'auto',\n hintHasArrow,\n hintOffset = HINT_DEFAULT_OFFSET,\n hintWidth,\n hintContentLeft,\n\n // variations\n view,\n size,\n readOnly = false,\n disabled = false,\n required = false,\n clear = false,\n optional,\n hasDivider,\n\n // controlled\n value: outerValue,\n chips: values,\n chipType = 'default',\n\n // events\n onChange,\n onChangeChips,\n onSearch,\n onKeyDown,\n onFocus,\n onBlur,\n\n // Пропсы для внутреннего использования, не отдается наружу.\n // @ts-ignore\n _onEnterDisabled,\n // @ts-ignore\n _forceChipManipulationWithReadonly,\n\n ...rest\n },\n ref,\n ) => {\n const contentRef = useRef<HTMLDivElement>(null);\n const inputContainerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const inputForkRef = useForkRef(inputRef, ref);\n const chipsRefs = useRef<Array<HTMLButtonElement>>([]);\n\n const controlledRefs = { contentRef, inputRef, chipsRefs };\n\n const [hasValue, setHasValue] = useState(\n Boolean(outerValue) || Boolean(inputRef?.current?.value) || Boolean(rest?.defaultValue),\n );\n const [hasFocus, setHasFocus] = useState(false);\n\n const [chips, setChips] = useState<Array<ChipValues>>([]);\n const [isHintVisible, setIsHintVisible] = useState(false);\n\n const uniqId = safeUseId();\n const innerId = id || uniqId;\n const labelId = safeUseId();\n const helperTextId = safeUseId();\n\n const isDefaultView = view === 'default' || readOnly || disabled;\n\n const isChipEnumeration = enumerationType === 'chip';\n const isChipsVisible = isChipEnumeration && Boolean(chips?.length);\n const withHasChips = isChipsVisible ? classes.hasChips : undefined;\n\n const hasLabelValue = Boolean(label);\n const hasInnerLabel = size !== 'xs' && labelPlacement === 'inner' && !isChipsVisible && hasLabelValue;\n const hasOuterLabel = labelPlacement === 'outer' && hasLabelValue;\n const innerKeepPlaceholder = keepPlaceholder && labelPlacement === 'inner';\n const hasPlaceholder = Boolean(placeholder) && (innerKeepPlaceholder || !hasInnerLabel);\n let hasTextAfter = Boolean(textAfter);\n let hasTextBefore = textBefore && !isChipEnumeration;\n if (labelPlacement === 'inner') {\n if (!hasValue && !hasPlaceholder && !hasFocus) {\n hasTextAfter = false;\n hasTextBefore = false;\n }\n }\n\n const hasPlaceholderPadding = hasInnerLabel && keepPlaceholder && size !== 'xs';\n\n const innerLabelValue = hasInnerLabel || hasOuterLabel ? label : undefined;\n const innerLabelPlacementValue = labelPlacement === 'inner' && !hasInnerLabel ? undefined : labelPlacement;\n\n const innerPlaceholderValue = hasPlaceholder ? placeholder : undefined;\n const placeholderShown = Boolean(innerPlaceholderValue) && !hasValue;\n\n const clearClass = clear ? classes.clear : undefined;\n const hasDividerClass = hasDivider ? classes.hasDivider : undefined;\n const hasInnerHintClass = hintText && hintTargetPlacement === 'outer' ? classes.hasHint : undefined;\n const hasHintClass = hintText ? classes.hasHint : undefined;\n const requiredPlacementClass = requiredPlacement === 'right' ? classes.requiredAlignRight : undefined;\n const labelPlacementClass = innerLabelPlacementValue\n ? classes[`${innerLabelPlacementValue}LabelPlacement` as keyof typeof classes]\n : undefined;\n const hasValueClass = hasValue ? classes.hasValue : undefined;\n const keepPlaceholderClass = hasPlaceholder && placeholderShown && classes.keepPlaceholder;\n\n const wrapperWithoutLeftContent =\n !contentLeft && isChipsVisible && chipType === 'default' ? classes.hasEmptyContentLeft : undefined;\n const wrapperWithoutRightContent =\n !contentRight && isChipsVisible && chipType === 'default' ? classes.hasEmptyContentRight : undefined;\n\n const contentRightCompensationMargin =\n !hasOuterLabel && hintText && hintTargetPlacement === 'inner'\n ? classes.contentRightCompensationMargin\n : undefined;\n\n const hintRef = useOutsideClick<HTMLDivElement>(() => {\n setIsHintVisible(false);\n });\n const hintInnerRef = useRef<HTMLDivElement>(null);\n const hintForkRef = useForkRef(hintRef, hintInnerRef);\n\n const handleInput: FormEventHandler<HTMLInputElement> = (event) => {\n const { value } = event.target as HTMLInputElement;\n\n setHasValue(Boolean(value));\n };\n\n useEffect(() => {\n if (hasTextAfter && inputRef.current) {\n const textWidth = getInputWidth(inputRef.current, inputContainerRef.current);\n inputRef.current.style.width = `${textWidth}px`;\n } else {\n inputRef.current?.style.removeProperty('width');\n }\n }, [hasTextAfter]);\n\n const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n setHasFocus(true);\n onFocus?.(event);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n setHasFocus(false);\n onBlur?.(event);\n };\n\n const handleHintShow = () => setIsHintVisible(true);\n const handleHintHide = () => setIsHintVisible(false);\n const handleHintClick: MouseEventHandler = (event) => {\n if (!hintText || hintTrigger !== 'click') {\n return;\n }\n\n event.stopPropagation();\n const targetIsPopover = event.target === hintInnerRef.current;\n const rootHasTarget = hintInnerRef.current?.contains(event.target as Element);\n\n if (!targetIsPopover && !rootHasTarget) {\n setIsHintVisible(true);\n }\n };\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n if (disabled || readOnly) {\n return;\n }\n\n const { maxLength, value } = event.target;\n\n if (maxLength !== -1 && value.length > maxLength) {\n return;\n }\n\n onChange?.(event);\n\n if (hasTextAfter) {\n const textWidth = getInputWidth(event.currentTarget, inputContainerRef.current);\n event.currentTarget.style.width = `${textWidth}px`;\n }\n };\n\n const updateChips = (newChips: Array<ChipValues>, newValues: Array<TextFieldPrimitiveValue>) => {\n setChips(newChips);\n onChangeChips?.(newValues);\n };\n\n const { handleInputKeydown, handleChipKeyDown, onChipClear, handleContentKeyDown } = useKeyNavigation({\n controlledRefs,\n disabled,\n readOnly,\n chips,\n enumerationType,\n updateChips,\n onSearch,\n onChange,\n onEnterDisabled: _onEnterDisabled,\n });\n\n const onChipClick = (event: React.MouseEvent<HTMLButtonElement>) => event.stopPropagation();\n\n const handleInputFocus = () => {\n if (readOnly || disabled || !inputRef?.current) {\n return;\n }\n\n inputRef.current.scrollTo({\n top: 0,\n left: inputRef.current.offsetLeft,\n behavior: 'smooth',\n });\n\n inputRef.current.focus();\n };\n\n const getRef = (element: HTMLButtonElement | null, index: number) => {\n if (element && chipsRefs?.current) {\n chipsRefs.current[index] = element;\n }\n };\n\n const handleOnKeyDown = (event: ChangeEvent<HTMLInputElement> & KeyboardEvent<HTMLInputElement>) => {\n handleInputKeydown(event);\n\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n\n useEffect(() => {\n if (!isChipEnumeration && !values?.length) {\n return;\n }\n\n const newChips =\n values?.map((value, index) => ({\n id: `${index}_${value}`,\n text: value,\n })) || [];\n\n setChips(newChips);\n }, [isChipEnumeration, values]);\n\n useEffect(() => {\n setHasValue(Boolean(rest?.defaultValue));\n }, [rest.defaultValue]);\n\n useEffect(() => {\n setHasValue(Boolean(outerValue) || Boolean(inputRef?.current?.value));\n }, [outerValue, inputRef?.current?.value]);\n\n const innerOptional = Boolean(required ? false : optional);\n const hasPlaceholderOptional = innerOptional && !innerLabelValue && !hasOuterLabel;\n const optionalTextNode = innerOptional ? (\n <StyledOptionalText>\n {Boolean(hasPlaceholderOptional ? innerPlaceholderValue : innerLabelValue) && '\\xa0'}\n {optionalText}\n </StyledOptionalText>\n ) : null;\n\n const classTextEllipsis =\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line no-underscore-dangle\n !(rest as any)._textEllipsisDisable && !textAfter ? classes.inputTextEllipsis : undefined;\n\n return (\n <Root\n view={view}\n size={size}\n disabled={disabled}\n readOnly={!disabled && readOnly}\n labelPlacement={innerLabelPlacementValue}\n onClick={handleInputFocus}\n className={cx(\n labelPlacementClass,\n clearClass,\n hasDividerClass,\n hasInnerHintClass,\n classes.textFieldGroupItem,\n className,\n )}\n style={style}\n {...(hintText && { hintView, hintSize })}\n >\n {(hasOuterLabel || titleCaption) && (\n <OuterLabelWrapper isInnerLabel={labelPlacement === 'inner'}>\n {hasOuterLabel && (\n <StyledIndicatorWrapper>\n <Label id={labelId} htmlFor={id}>\n {innerLabelValue}\n </Label>\n\n {hintText && (\n <StyledHintWrapper>\n <HintComponent\n ref={hintForkRef}\n hintText={hintText}\n hintTrigger={hintTrigger}\n isHintVisible={isHintVisible}\n hintTargetIcon={hintTargetIcon}\n hintPlacement={hintPlacement}\n hintHasArrow={hintHasArrow}\n hintOffset={hintOffset}\n hintWidth={hintWidth}\n hintContentLeft={hintContentLeft}\n handleHintShow={handleHintShow}\n handleHintHide={handleHintHide}\n handleHintClick={handleHintClick}\n />\n </StyledHintWrapper>\n )}\n {required && hasRequiredIndicator && (\n <StyledIndicator\n className={cx(\n classes.outerLabelPlacement,\n requiredPlacementClass,\n hasHintClass,\n )}\n />\n )}\n {optionalTextNode}\n </StyledIndicatorWrapper>\n )}\n {titleCaption && <TitleCaption>{titleCaption}</TitleCaption>}\n </OuterLabelWrapper>\n )}\n <InputWrapper\n // Ref для внутреннего использования. Не отдается наружу.\n ref={(rest as any).inputWrapperRef}\n // TODO: #1544, и после убрать classes.inputWrapper\n className={cx(\n withHasChips,\n wrapperWithoutLeftContent,\n wrapperWithoutRightContent,\n classes.inputWrapper,\n )}\n >\n {!hasOuterLabel && (\n <>\n {required && hasRequiredIndicator && (\n <StyledIndicator\n className={cx(classes.innerLabelPlacement, requiredPlacementClass)}\n />\n )}\n {hintText && hintTargetPlacement === 'outer' && (\n <StyledHintWrapper className={classes.innerLabelPlacement}>\n <HintComponent\n ref={hintForkRef}\n hintText={hintText}\n hintTrigger={hintTrigger}\n isHintVisible={isHintVisible}\n hintTargetIcon={hintTargetIcon}\n hintPlacement={hintPlacement}\n hintHasArrow={hintHasArrow}\n hintOffset={hintOffset}\n hintWidth={hintWidth}\n hintContentLeft={hintContentLeft}\n size={size}\n handleHintShow={handleHintShow}\n handleHintHide={handleHintHide}\n handleHintClick={handleHintClick}\n isInnerLabel\n />\n </StyledHintWrapper>\n )}\n </>\n )}\n {contentLeft && (\n <StyledContentLeft isClear={clear} isDefaultView={isDefaultView}>\n {contentLeft}\n </StyledContentLeft>\n )}\n <InputLabelWrapper\n tabIndex={-1}\n ref={contentRef}\n onKeyDown={handleContentKeyDown}\n className={withHasChips}\n >\n {Boolean(textBefore && isChipEnumeration) && (\n <StyledTextBefore>{textBefore}</StyledTextBefore>\n )}\n {isChipEnumeration && Boolean(chips?.length) && (\n <StyledChips className={classes.chipsWrapper}>\n {chips?.map(({ id: chipId, text }, index) => {\n const validationView = chipValidator?.(String(text));\n const resView = validationView?.view || chipView;\n\n return (\n <TextFieldChip\n id={chipId}\n ref={(element) => getRef(element, index)}\n key={`${chipId}_${index}`}\n disabled={disabled}\n readOnly={readOnly}\n value={text}\n text={text}\n onKeyDown={(event) => handleChipKeyDown(event, chipId, index)}\n onClear={() => onChipClear(chipId, index)}\n onClick={onChipClick}\n chipType={chipType}\n view={resView}\n rootWrapper={Root}\n // TODO: #1547\n // @ts-ignore\n _forceChipManipulationWithReadonly={_forceChipManipulationWithReadonly}\n />\n );\n })}\n </StyledChips>\n )}\n <InputContainer ref={inputContainerRef} hasDynamicWidth={hasTextAfter}>\n {hasTextBefore && <StyledTextBefore>{textBefore}</StyledTextBefore>}\n <Input\n ref={inputForkRef}\n id={innerId}\n value={outerValue}\n required={enumerationType === 'chip' ? chips.length === 0 && required : required}\n aria-labelledby={labelId}\n aria-describedby={helperTextId}\n placeholder={innerPlaceholderValue}\n className={cx(\n hasValueClass,\n keepPlaceholderClass,\n classTextEllipsis,\n readOnly && classes.readOnlyInput,\n )}\n disabled={disabled}\n readOnly={!disabled && readOnly}\n onInput={handleInput}\n onChange={handleChange}\n onKeyDown={handleOnKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...rest}\n />\n {hasInnerLabel && (\n <Label id={labelId} htmlFor={innerId}>\n {innerLabelValue}\n {optionalTextNode}\n </Label>\n )}\n {placeholderShown && !hasValue && (\n <InputPlaceholder hasPadding={hasPlaceholderPadding}>\n {hasTextBefore && <StyledTextBefore isHidden>{textBefore}</StyledTextBefore>}\n {innerPlaceholderValue}\n {hasPlaceholderOptional && optionalTextNode}\n </InputPlaceholder>\n )}\n {hasTextAfter && <StyledTextAfter>{textAfter}</StyledTextAfter>}\n </InputContainer>\n </InputLabelWrapper>\n <StyledContentRightWrapper className={cx(contentRightCompensationMargin)}>\n {contentRight && <StyledContentRight>{contentRight}</StyledContentRight>}\n\n {!hasOuterLabel && hintText && hintTargetPlacement === 'inner' && (\n <HintComponent\n ref={hintForkRef}\n hintText={hintText}\n hintTrigger={hintTrigger}\n isHintVisible={isHintVisible}\n hintTargetIcon={hintTargetIcon}\n hintPlacement={hintPlacement}\n hintHasArrow={hintHasArrow}\n hintOffset={hintOffset}\n hintWidth={hintWidth}\n hintContentLeft={hintContentLeft}\n size={size}\n handleHintShow={handleHintShow}\n handleHintHide={handleHintHide}\n handleHintClick={handleHintClick}\n isInnerLabel\n />\n )}\n </StyledContentRightWrapper>\n </InputWrapper>\n {leftHelper && <LeftHelper id={helperTextId}>{leftHelper}</LeftHelper>}\n </Root>\n );\n },\n );\n\nexport const textFieldConfig = {\n name: 'TextField',\n tag: 'div',\n layout: textFieldRoot,\n base,\n variations: {\n view: {\n css: viewCSS,\n },\n size: {\n css: sizeCSS,\n },\n clear: {\n css: clearCSS,\n attrs: true,\n },\n disabled: {\n css: disabledCSS,\n attrs: true,\n },\n readOnly: {\n css: readOnlyCSS,\n attrs: true,\n },\n labelPlacement: {\n css: labelPlacementCSS,\n },\n hintView: {\n css: hintViewCSS,\n },\n hintSize: {\n css: hintSizeCSS,\n },\n chipView: {\n css: chipViewCSS,\n },\n },\n defaults: {\n size: 'm',\n view: 'default',\n },\n};\n"],"names":["optionalText","base","HINT_DEFAULT_OFFSET","textFieldRoot","Root","forwardRef","id","className","style","contentLeft","contentRight","label","labelPlacement","keepPlaceholder","textBefore","textAfter","placeholder","leftHelper","enumerationType","requiredPlacement","hasRequiredIndicator","titleCaption","chipView","chipValidator","hintTrigger","hintText","hintView","hintSize","hintTargetIcon","hintTargetPlacement","hintPlacement","hintHasArrow","hintOffset","hintWidth","hintContentLeft","view","size","readOnly","disabled","required","clear","optional","hasDivider","value","outerValue","chips","values","chipType","onChange","onChangeChips","onSearch","onKeyDown","onFocus","onBlur","_onEnterDisabled","_forceChipManipulationWithReadonly","rest","ref","contentRef","useRef","inputContainerRef","inputRef","inputForkRef","useForkRef","chipsRefs","controlledRefs","hasValue","setHasValue","useState","Boolean","current","defaultValue","hasFocus","setHasFocus","setChips","isHintVisible","setIsHintVisible","uniqId","safeUseId","innerId","labelId","helperTextId","isDefaultView","isChipEnumeration","isChipsVisible","length","withHasChips","classes","hasChips","undefined","hasLabelValue","hasInnerLabel","hasOuterLabel","innerKeepPlaceholder","hasPlaceholder","hasTextAfter","hasTextBefore","hasPlaceholderPadding","innerLabelValue","innerLabelPlacementValue","innerPlaceholderValue","placeholderShown","clearClass","hasDividerClass","hasInnerHintClass","hasHint","hasHintClass","requiredPlacementClass","requiredAlignRight","labelPlacementClass","hasValueClass","keepPlaceholderClass","wrapperWithoutLeftContent","hasEmptyContentLeft","wrapperWithoutRightContent","hasEmptyContentRight","contentRightCompensationMargin","hintRef","useOutsideClick","hintInnerRef","hintForkRef","handleInput","event","target","useEffect","textWidth","getInputWidth","width","removeProperty","handleFocus","handleBlur","handleHintShow","handleHintHide","handleHintClick","stopPropagation","targetIsPopover","rootHasTarget","contains","handleChange","maxLength","currentTarget","updateChips","newChips","newValues","handleInputKeydown","handleChipKeyDown","onChipClear","handleContentKeyDown","useKeyNavigation","onEnterDisabled","onChipClick","handleInputFocus","scrollTo","top","left","offsetLeft","behavior","focus","getRef","element","index","handleOnKeyDown","map","text","innerOptional","hasPlaceholderOptional","optionalTextNode","React","createElement","StyledOptionalText","classTextEllipsis","_textEllipsisDisable","inputTextEllipsis","_extends","onClick","cx","textFieldGroupItem","OuterLabelWrapper","isInnerLabel","StyledIndicatorWrapper","Label","htmlFor","StyledHintWrapper","HintComponent","StyledIndicator","outerLabelPlacement","TitleCaption","InputWrapper","inputWrapperRef","inputWrapper","Fragment","innerLabelPlacement","StyledContentLeft","isClear","InputLabelWrapper","tabIndex","StyledTextBefore","StyledChips","chipsWrapper","chipId","validationView","String","resView","TextFieldChip","key","onClear","rootWrapper","InputContainer","hasDynamicWidth","Input","readOnlyInput","onInput","InputPlaceholder","hasPadding","isHidden","StyledTextAfter","StyledContentRightWrapper","StyledContentRight","LeftHelper","textFieldConfig","name","tag","layout","variations","css","viewCSS","sizeCSS","clearCSS","attrs","disabledCSS","readOnlyCSS","labelPlacementCSS","hintViewCSS","hintSizeCSS","chipViewCSS","defaults"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"TextField.js","sources":["../../../src/components/TextField/TextField.tsx"],"sourcesContent":["import React, { forwardRef, useEffect, useRef, useState } from 'react';\nimport type { FormEventHandler, ChangeEventHandler, KeyboardEvent, ChangeEvent, MouseEventHandler } from 'react';\nimport { useForkRef } from '@salutejs/plasma-core';\nimport { css } from '@linaria/core';\nimport { cx, safeUseId } from 'src/utils';\nimport type { RootProps } from 'src/engines';\nimport { useOutsideClick } from 'src/hooks';\n\nimport type { ChipValues, TextFieldPrimitiveValue, TextFieldProps, TextFieldRootProps } from './TextField.types';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as clearCSS } from './variations/_clear/base';\nimport { base as disabledCSS } from './variations/_disabled/base';\nimport { base as readOnlyCSS } from './variations/_read-only/base';\nimport { base as labelPlacementCSS } from './variations/_label-placement/base';\nimport { base as hintViewCSS } from './variations/_hint-view/base';\nimport { base as hintSizeCSS } from './variations/_hint-size/base';\nimport { base as chipViewCSS } from './variations/_chip-view/base';\nimport {\n Input,\n InputContainer,\n LeftHelper,\n Label,\n InputWrapper,\n InputLabelWrapper,\n StyledContentLeft,\n StyledContentRight,\n StyledChips,\n StyledTextBefore,\n StyledTextAfter,\n StyledIndicator,\n StyledOptionalText,\n InputPlaceholder,\n OuterLabelWrapper,\n TitleCaption,\n StyledHintWrapper,\n StyledIndicatorWrapper,\n StyledContentRightWrapper,\n} from './TextField.styles';\nimport { classes } from './TextField.tokens';\nimport { TextFieldChip } from './ui';\nimport { useKeyNavigation } from './hooks';\nimport { HintComponent } from './ui/Hint/Hint';\nimport { getInputWidth } from './getInputWidth';\n\nconst optionalText = 'optional';\n\nexport const base = css`\n /* NOTE: Webkit не применяет opacity к inline тегам */\n display: block;\n`;\n\nconst HINT_DEFAULT_OFFSET: [number, number] = [0, 0];\n\nexport const textFieldRoot = (Root: RootProps<HTMLDivElement, TextFieldRootProps>) =>\n forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n id,\n className,\n style,\n\n // layout\n contentLeft,\n contentRight,\n label,\n labelPlacement,\n keepPlaceholder,\n textBefore,\n textAfter,\n placeholder,\n leftHelper,\n enumerationType = 'plain',\n requiredPlacement = 'right',\n hasRequiredIndicator = true,\n titleCaption,\n chipView = 'default',\n chipValidator,\n\n // hint\n hintTrigger = 'hover',\n hintText,\n hintView = 'default',\n hintSize = 'm',\n hintTargetIcon,\n hintTargetPlacement = 'outer',\n hintPlacement = 'auto',\n hintHasArrow,\n hintOffset = HINT_DEFAULT_OFFSET,\n hintWidth,\n hintContentLeft,\n\n // variations\n view,\n size,\n readOnly = false,\n disabled = false,\n required = false,\n clear = false,\n optional,\n hasDivider,\n\n // controlled\n value: outerValue,\n chips: values,\n chipType = 'default',\n\n // events\n onChange,\n onChangeChips,\n onSearch,\n onKeyDown,\n onFocus,\n onBlur,\n\n // Пропсы для внутреннего использования, не отдается наружу.\n // @ts-ignore\n _onEnterDisabled,\n // @ts-ignore\n _forceChipManipulationWithReadonly,\n\n ...rest\n },\n ref,\n ) => {\n const contentRef = useRef<HTMLDivElement>(null);\n const inputContainerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const inputForkRef = useForkRef(inputRef, ref);\n const chipsRefs = useRef<Array<HTMLButtonElement>>([]);\n\n const controlledRefs = { contentRef, inputRef, chipsRefs };\n\n const [hasValue, setHasValue] = useState(\n Boolean(outerValue) || Boolean(inputRef?.current?.value) || Boolean(rest?.defaultValue),\n );\n const [hasFocus, setHasFocus] = useState(false);\n\n const [chips, setChips] = useState<Array<ChipValues>>([]);\n const [isHintVisible, setIsHintVisible] = useState(false);\n\n const uniqId = safeUseId();\n const innerId = id || uniqId;\n const labelId = safeUseId();\n const helperTextId = safeUseId();\n\n const isDefaultView = view === 'default' || readOnly || disabled;\n\n const isChipEnumeration = enumerationType === 'chip';\n const isChipsVisible = isChipEnumeration && Boolean(chips?.length);\n const withHasChips = isChipsVisible ? classes.hasChips : undefined;\n\n const hasLabelValue = Boolean(label);\n const hasInnerLabel = size !== 'xs' && labelPlacement === 'inner' && !isChipsVisible && hasLabelValue;\n const hasOuterLabel = labelPlacement === 'outer' && hasLabelValue;\n const innerKeepPlaceholder = keepPlaceholder && labelPlacement === 'inner';\n const hasPlaceholder = Boolean(placeholder) && (innerKeepPlaceholder || !hasInnerLabel);\n let hasTextAfter = Boolean(textAfter);\n let hasTextBefore = textBefore && !isChipEnumeration;\n if (labelPlacement === 'inner') {\n if (!hasValue && !hasPlaceholder && !hasFocus) {\n hasTextAfter = false;\n hasTextBefore = false;\n }\n }\n\n const hasPlaceholderPadding = hasInnerLabel && keepPlaceholder && size !== 'xs';\n\n const innerLabelValue = hasInnerLabel || hasOuterLabel ? label : undefined;\n const innerLabelPlacementValue = labelPlacement === 'inner' && !hasInnerLabel ? undefined : labelPlacement;\n\n const innerPlaceholderValue = hasPlaceholder ? placeholder : undefined;\n const placeholderShown = Boolean(innerPlaceholderValue) && !hasValue;\n\n const clearClass = clear ? classes.clear : undefined;\n const hasDividerClass = hasDivider ? classes.hasDivider : undefined;\n const hasInnerHintClass = hintText && hintTargetPlacement === 'outer' ? classes.hasHint : undefined;\n const hasHintClass = hintText ? classes.hasHint : undefined;\n const requiredPlacementClass = requiredPlacement === 'right' ? classes.requiredAlignRight : undefined;\n const labelPlacementClass = innerLabelPlacementValue\n ? classes[`${innerLabelPlacementValue}LabelPlacement` as keyof typeof classes]\n : undefined;\n const hasValueClass = hasValue ? classes.hasValue : undefined;\n const keepPlaceholderClass = hasPlaceholder && placeholderShown && classes.keepPlaceholder;\n\n const wrapperWithoutLeftContent =\n !contentLeft && isChipsVisible && chipType === 'default' ? classes.hasEmptyContentLeft : undefined;\n const wrapperWithoutRightContent =\n !contentRight && isChipsVisible && chipType === 'default' ? classes.hasEmptyContentRight : undefined;\n\n const contentRightCompensationMargin =\n !hasOuterLabel && hintText && hintTargetPlacement === 'inner'\n ? classes.contentRightCompensationMargin\n : undefined;\n\n const hintRef = useOutsideClick<HTMLDivElement>(() => {\n setIsHintVisible(false);\n });\n const hintInnerRef = useRef<HTMLDivElement>(null);\n const hintForkRef = useForkRef(hintRef, hintInnerRef);\n\n const handleInput: FormEventHandler<HTMLInputElement> = (event) => {\n const { value } = event.target as HTMLInputElement;\n\n setHasValue(Boolean(value));\n };\n\n useEffect(() => {\n if (hasTextAfter && inputRef.current) {\n const textWidth = getInputWidth(inputRef.current, inputContainerRef.current);\n inputRef.current.style.width = `${textWidth}px`;\n } else {\n inputRef.current?.style.removeProperty('width');\n }\n }, [hasTextAfter]);\n\n const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n setHasFocus(true);\n onFocus?.(event);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n setHasFocus(false);\n onBlur?.(event);\n };\n\n const handleHintShow = () => setIsHintVisible(true);\n const handleHintHide = () => setIsHintVisible(false);\n const handleHintClick: MouseEventHandler = (event) => {\n if (!hintText || hintTrigger !== 'click') {\n return;\n }\n\n event.stopPropagation();\n const targetIsPopover = event.target === hintInnerRef.current;\n const rootHasTarget = hintInnerRef.current?.contains(event.target as Element);\n\n if (!targetIsPopover && !rootHasTarget) {\n setIsHintVisible(true);\n }\n };\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n if (disabled || readOnly) {\n return;\n }\n\n const { maxLength, value } = event.target;\n\n if (maxLength !== -1 && value.length > maxLength) {\n return;\n }\n\n onChange?.(event);\n\n if (hasTextAfter) {\n const textWidth = getInputWidth(event.currentTarget, inputContainerRef.current);\n event.currentTarget.style.width = `${textWidth}px`;\n }\n };\n\n const updateChips = (newChips: Array<ChipValues>, newValues: Array<TextFieldPrimitiveValue>) => {\n setChips(newChips);\n onChangeChips?.(newValues);\n };\n\n const { handleInputKeydown, handleChipKeyDown, onChipClear, handleContentKeyDown } = useKeyNavigation({\n controlledRefs,\n disabled,\n readOnly,\n chips,\n enumerationType,\n updateChips,\n onSearch,\n onChange,\n onEnterDisabled: _onEnterDisabled,\n });\n\n const onChipClick = (event: React.MouseEvent<HTMLButtonElement>) => event.stopPropagation();\n\n const handleInputFocus = () => {\n if (readOnly || disabled || !inputRef?.current) {\n return;\n }\n\n inputRef.current.scrollTo({\n top: 0,\n left: inputRef.current.offsetLeft,\n behavior: 'smooth',\n });\n\n inputRef.current.focus();\n };\n\n const getRef = (element: HTMLButtonElement | null, index: number) => {\n if (element && chipsRefs?.current) {\n chipsRefs.current[index] = element;\n }\n };\n\n const handleOnKeyDown = (event: ChangeEvent<HTMLInputElement> & KeyboardEvent<HTMLInputElement>) => {\n handleInputKeydown(event);\n\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n\n useEffect(() => {\n if (!isChipEnumeration && !values?.length) {\n return;\n }\n\n const newChips =\n values?.map((value, index) => ({\n id: `${index}_${value}`,\n text: value,\n })) || [];\n\n setChips(newChips);\n }, [isChipEnumeration, values]);\n\n useEffect(() => {\n setHasValue(Boolean(rest?.defaultValue));\n }, [rest.defaultValue]);\n\n useEffect(() => {\n setHasValue(Boolean(outerValue) || Boolean(inputRef?.current?.value));\n }, [outerValue, inputRef?.current?.value]);\n\n const innerOptional = Boolean(required ? false : optional);\n const hasPlaceholderOptional = innerOptional && !innerLabelValue && !hasOuterLabel;\n const optionalTextNode = innerOptional ? (\n <StyledOptionalText>\n {Boolean(hasPlaceholderOptional ? innerPlaceholderValue : innerLabelValue) && '\\xa0'}\n {optionalText}\n </StyledOptionalText>\n ) : null;\n\n const classTextEllipsis =\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line no-underscore-dangle\n !(rest as any)._textEllipsisDisable && !textAfter ? classes.inputTextEllipsis : undefined;\n\n return (\n <Root\n view={view}\n size={size}\n disabled={disabled}\n readOnly={!disabled && readOnly}\n labelPlacement={innerLabelPlacementValue}\n onClick={handleInputFocus}\n className={cx(\n labelPlacementClass,\n clearClass,\n hasDividerClass,\n hasInnerHintClass,\n classes.textFieldGroupItem,\n className,\n )}\n style={style}\n {...(hintText && { hintView, hintSize })}\n >\n {(hasOuterLabel || titleCaption) && (\n <OuterLabelWrapper isInnerLabel={labelPlacement === 'inner'}>\n {hasOuterLabel && (\n <StyledIndicatorWrapper>\n <Label id={labelId} htmlFor={id}>\n {innerLabelValue}\n </Label>\n\n {hintText && (\n <StyledHintWrapper>\n <HintComponent\n ref={hintForkRef}\n hintText={hintText}\n hintTrigger={hintTrigger}\n isHintVisible={isHintVisible}\n hintTargetIcon={hintTargetIcon}\n hintPlacement={hintPlacement}\n hintHasArrow={hintHasArrow}\n hintOffset={hintOffset}\n hintWidth={hintWidth}\n hintContentLeft={hintContentLeft}\n handleHintShow={handleHintShow}\n handleHintHide={handleHintHide}\n handleHintClick={handleHintClick}\n />\n </StyledHintWrapper>\n )}\n {required && hasRequiredIndicator && (\n <StyledIndicator\n className={cx(\n classes.outerLabelPlacement,\n requiredPlacementClass,\n hasHintClass,\n )}\n />\n )}\n {optionalTextNode}\n </StyledIndicatorWrapper>\n )}\n {titleCaption && <TitleCaption>{titleCaption}</TitleCaption>}\n </OuterLabelWrapper>\n )}\n <InputWrapper\n // Ref для внутреннего использования. Не отдается наружу.\n ref={(rest as any).inputWrapperRef}\n // TODO: #1544, и после убрать classes.inputWrapper\n className={cx(\n withHasChips,\n wrapperWithoutLeftContent,\n wrapperWithoutRightContent,\n classes.inputWrapper,\n )}\n >\n {!hasOuterLabel && (\n <>\n {required && hasRequiredIndicator && (\n <StyledIndicator\n className={cx(classes.innerLabelPlacement, requiredPlacementClass)}\n />\n )}\n {hintText && hintTargetPlacement === 'outer' && (\n <StyledHintWrapper className={classes.innerLabelPlacement}>\n <HintComponent\n ref={hintForkRef}\n hintText={hintText}\n hintTrigger={hintTrigger}\n isHintVisible={isHintVisible}\n hintTargetIcon={hintTargetIcon}\n hintPlacement={hintPlacement}\n hintHasArrow={hintHasArrow}\n hintOffset={hintOffset}\n hintWidth={hintWidth}\n hintContentLeft={hintContentLeft}\n size={size}\n handleHintShow={handleHintShow}\n handleHintHide={handleHintHide}\n handleHintClick={handleHintClick}\n isInnerLabel\n />\n </StyledHintWrapper>\n )}\n </>\n )}\n {contentLeft && (\n <StyledContentLeft isClear={clear} isDefaultView={isDefaultView}>\n {contentLeft}\n </StyledContentLeft>\n )}\n <InputLabelWrapper\n tabIndex={-1}\n ref={contentRef}\n onKeyDown={handleContentKeyDown}\n className={withHasChips}\n >\n {Boolean(textBefore && isChipEnumeration) && (\n <StyledTextBefore>{textBefore}</StyledTextBefore>\n )}\n {isChipEnumeration && Boolean(chips?.length) && (\n <StyledChips className={classes.chipsWrapper}>\n {chips?.map(({ id: chipId, text }, index) => {\n const validationView = chipValidator?.(String(text));\n const resView = validationView?.view || chipView;\n\n return (\n <TextFieldChip\n id={chipId}\n ref={(element) => getRef(element, index)}\n key={`${chipId}_${index}`}\n disabled={disabled}\n readOnly={readOnly}\n value={text}\n text={text}\n onKeyDown={(event) => handleChipKeyDown(event, chipId, index)}\n onClear={() => onChipClear(chipId, index)}\n onClick={onChipClick}\n chipType={chipType}\n view={resView}\n rootWrapper={Root}\n // TODO: #1547\n // @ts-ignore\n _forceChipManipulationWithReadonly={_forceChipManipulationWithReadonly}\n />\n );\n })}\n </StyledChips>\n )}\n <InputContainer ref={inputContainerRef} hasDynamicWidth={hasTextAfter}>\n {hasTextBefore && <StyledTextBefore>{textBefore}</StyledTextBefore>}\n <Input\n ref={inputForkRef}\n id={innerId}\n value={outerValue}\n required={enumerationType === 'chip' ? chips.length === 0 && required : required}\n aria-labelledby={labelId}\n aria-describedby={helperTextId}\n placeholder={innerPlaceholderValue}\n className={cx(\n hasValueClass,\n keepPlaceholderClass,\n classTextEllipsis,\n readOnly && classes.readOnlyInput,\n )}\n disabled={disabled}\n readOnly={!disabled && readOnly}\n onInput={handleInput}\n onChange={handleChange}\n onKeyDown={handleOnKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...rest}\n />\n {hasInnerLabel && (\n <Label id={labelId} htmlFor={innerId}>\n {innerLabelValue}\n {optionalTextNode}\n </Label>\n )}\n {placeholderShown && !hasValue && (\n <InputPlaceholder hasPadding={hasPlaceholderPadding}>\n {hasTextBefore && <StyledTextBefore isHidden>{textBefore}</StyledTextBefore>}\n {innerPlaceholderValue}\n {hasPlaceholderOptional && optionalTextNode}\n </InputPlaceholder>\n )}\n {hasTextAfter && <StyledTextAfter>{textAfter}</StyledTextAfter>}\n </InputContainer>\n </InputLabelWrapper>\n <StyledContentRightWrapper className={cx(contentRightCompensationMargin)}>\n {contentRight && <StyledContentRight>{contentRight}</StyledContentRight>}\n\n {!hasOuterLabel && hintText && hintTargetPlacement === 'inner' && (\n <HintComponent\n ref={hintForkRef}\n hintText={hintText}\n hintTrigger={hintTrigger}\n isHintVisible={isHintVisible}\n hintTargetIcon={hintTargetIcon}\n hintPlacement={hintPlacement}\n hintHasArrow={hintHasArrow}\n hintOffset={hintOffset}\n hintWidth={hintWidth}\n hintContentLeft={hintContentLeft}\n size={size}\n handleHintShow={handleHintShow}\n handleHintHide={handleHintHide}\n handleHintClick={handleHintClick}\n isInnerLabel\n />\n )}\n </StyledContentRightWrapper>\n </InputWrapper>\n {leftHelper && <LeftHelper id={helperTextId}>{leftHelper}</LeftHelper>}\n </Root>\n );\n },\n );\n\nexport const textFieldConfig = {\n name: 'TextField',\n tag: 'div',\n layout: textFieldRoot,\n base,\n variations: {\n view: {\n css: viewCSS,\n },\n size: {\n css: sizeCSS,\n },\n clear: {\n css: clearCSS,\n attrs: true,\n },\n disabled: {\n css: disabledCSS,\n attrs: true,\n },\n readOnly: {\n css: readOnlyCSS,\n attrs: true,\n },\n labelPlacement: {\n css: labelPlacementCSS,\n },\n hintView: {\n css: hintViewCSS,\n },\n hintSize: {\n css: hintSizeCSS,\n },\n chipView: {\n css: chipViewCSS,\n },\n },\n defaults: {\n size: 'm',\n view: 'default',\n },\n};\n"],"names":["optionalText","base","HINT_DEFAULT_OFFSET","textFieldRoot","Root","forwardRef","id","className","style","contentLeft","contentRight","label","labelPlacement","keepPlaceholder","textBefore","textAfter","placeholder","leftHelper","enumerationType","requiredPlacement","hasRequiredIndicator","titleCaption","chipView","chipValidator","hintTrigger","hintText","hintView","hintSize","hintTargetIcon","hintTargetPlacement","hintPlacement","hintHasArrow","hintOffset","hintWidth","hintContentLeft","view","size","readOnly","disabled","required","clear","optional","hasDivider","value","outerValue","chips","values","chipType","onChange","onChangeChips","onSearch","onKeyDown","onFocus","onBlur","_onEnterDisabled","_forceChipManipulationWithReadonly","rest","ref","contentRef","useRef","inputContainerRef","inputRef","inputForkRef","useForkRef","chipsRefs","controlledRefs","hasValue","setHasValue","useState","Boolean","current","defaultValue","hasFocus","setHasFocus","setChips","isHintVisible","setIsHintVisible","uniqId","safeUseId","innerId","labelId","helperTextId","isDefaultView","isChipEnumeration","isChipsVisible","length","withHasChips","classes","hasChips","undefined","hasLabelValue","hasInnerLabel","hasOuterLabel","innerKeepPlaceholder","hasPlaceholder","hasTextAfter","hasTextBefore","hasPlaceholderPadding","innerLabelValue","innerLabelPlacementValue","innerPlaceholderValue","placeholderShown","clearClass","hasDividerClass","hasInnerHintClass","hasHint","hasHintClass","requiredPlacementClass","requiredAlignRight","labelPlacementClass","hasValueClass","keepPlaceholderClass","wrapperWithoutLeftContent","hasEmptyContentLeft","wrapperWithoutRightContent","hasEmptyContentRight","contentRightCompensationMargin","hintRef","useOutsideClick","hintInnerRef","hintForkRef","handleInput","event","target","useEffect","textWidth","getInputWidth","width","removeProperty","handleFocus","handleBlur","handleHintShow","handleHintHide","handleHintClick","stopPropagation","targetIsPopover","rootHasTarget","contains","handleChange","maxLength","currentTarget","updateChips","newChips","newValues","handleInputKeydown","handleChipKeyDown","onChipClear","handleContentKeyDown","useKeyNavigation","onEnterDisabled","onChipClick","handleInputFocus","scrollTo","top","left","offsetLeft","behavior","focus","getRef","element","index","handleOnKeyDown","map","text","innerOptional","hasPlaceholderOptional","optionalTextNode","React","createElement","StyledOptionalText","classTextEllipsis","_textEllipsisDisable","inputTextEllipsis","_extends","onClick","cx","textFieldGroupItem","OuterLabelWrapper","isInnerLabel","StyledIndicatorWrapper","Label","htmlFor","StyledHintWrapper","HintComponent","StyledIndicator","outerLabelPlacement","TitleCaption","InputWrapper","inputWrapperRef","inputWrapper","Fragment","innerLabelPlacement","StyledContentLeft","isClear","InputLabelWrapper","tabIndex","StyledTextBefore","StyledChips","chipsWrapper","chipId","validationView","String","resView","TextFieldChip","key","onClear","rootWrapper","InputContainer","hasDynamicWidth","Input","readOnlyInput","onInput","InputPlaceholder","hasPadding","isHidden","StyledTextAfter","StyledContentRightWrapper","StyledContentRight","LeftHelper","textFieldConfig","name","tag","layout","variations","css","viewCSS","sizeCSS","clearCSS","attrs","disabledCSS","readOnlyCSS","labelPlacementCSS","hintViewCSS","hintSizeCSS","chipViewCSS","defaults"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Hint.js","sources":["../../../../../src/components/TextField/ui/Hint/Hint.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { Hint, HintTargetWrapper, HintIconWrapper } from '../../TextField.styles';\nimport { IconInfoCircleOutline } from '../../../_Icon';\nimport {
|
1
|
+
{"version":3,"file":"Hint.js","sources":["../../../../../src/components/TextField/ui/Hint/Hint.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { safeUseId } from 'src/utils';\n\nimport { Hint, HintTargetWrapper, HintIconWrapper } from '../../TextField.styles';\nimport { IconInfoCircleOutline } from '../../../_Icon';\nimport { tokens } from '../../TextField.tokens';\n\nimport type { TextFieldHintProps } from './Hint.types';\n\nexport const HintComponent = forwardRef<HTMLDivElement, TextFieldHintProps>(\n (\n {\n hintText,\n isHintVisible,\n hintTrigger,\n hintTargetIcon,\n hintPlacement,\n hintHasArrow,\n hintOffset,\n hintWidth,\n hintContentLeft,\n isInnerLabel,\n size,\n handleHintShow,\n handleHintHide,\n handleHintClick,\n },\n ref,\n ) => {\n const hintId = safeUseId();\n\n const getInfoIconSize = () => {\n if (!isInnerLabel || size === 'xs') {\n return 'xs';\n }\n\n return 's';\n };\n\n return (\n <Hint\n ref={ref}\n text={String(hintText)}\n opened={isHintVisible}\n target={\n <HintTargetWrapper>\n <HintIconWrapper\n id={hintId}\n {...(hintTrigger === 'hover'\n ? {\n onMouseEnter: handleHintShow,\n onMouseLeave: handleHintHide,\n }\n : { onClick: handleHintClick })}\n >\n {hintTargetIcon || (\n <IconInfoCircleOutline\n size={getInfoIconSize()}\n color=\"inherit\"\n sizeCustomProperty={tokens.hintCustomIconTargetSize}\n />\n )}\n </HintIconWrapper>\n </HintTargetWrapper>\n }\n placement={hintPlacement}\n hasArrow={hintHasArrow}\n offset={hintOffset}\n minWidth={hintWidth}\n maxWidth={hintWidth}\n contentLeft={hintContentLeft}\n frame={hintId}\n />\n );\n },\n);\n"],"names":["HintComponent","forwardRef","hintText","isHintVisible","hintTrigger","hintTargetIcon","hintPlacement","hintHasArrow","hintOffset","hintWidth","hintContentLeft","isInnerLabel","size","handleHintShow","handleHintHide","handleHintClick","ref","hintId","safeUseId","getInfoIconSize","React","createElement","Hint","text","String","opened","target","HintTargetWrapper","HintIconWrapper","_extends","id","onMouseEnter","onMouseLeave","onClick","IconInfoCircleOutline","color","sizeCustomProperty","tokens","hintCustomIconTargetSize","placement","hasArrow","offset","minWidth","maxWidth","contentLeft","frame"],"mappings":";;;;;;;AASaA,MAAAA,aAAa,gBAAGC,UAAU,CACnC,CACI;EACIC,QAAQ;EACRC,aAAa;EACbC,WAAW;EACXC,cAAc;EACdC,aAAa;EACbC,YAAY;EACZC,UAAU;EACVC,SAAS;EACTC,eAAe;EACfC,YAAY;EACZC,IAAI;EACJC,cAAc;EACdC,cAAc;AACdC,EAAAA,eAAAA;AACJ,CAAC,EACDC,GAAG,KACF;AACD,EAAA,MAAMC,MAAM,GAAGC,SAAS,EAAE,CAAA;EAE1B,MAAMC,eAAe,GAAGA,MAAM;AAC1B,IAAA,IAAI,CAACR,YAAY,IAAIC,IAAI,KAAK,IAAI,EAAE;AAChC,MAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA,IAAA,OAAO,GAAG,CAAA;GACb,CAAA;AAED,EAAA,oBACIQ,KAAA,CAAAC,aAAA,CAACC,IAAI,EAAA;AACDN,IAAAA,GAAG,EAAEA,GAAI;AACTO,IAAAA,IAAI,EAAEC,MAAM,CAACtB,QAAQ,CAAE;AACvBuB,IAAAA,MAAM,EAAEtB,aAAc;AACtBuB,IAAAA,MAAM,eACFN,KAAA,CAAAC,aAAA,CAACM,iBAAiB,EACdP,IAAAA,eAAAA,KAAA,CAAAC,aAAA,CAACO,eAAe,EAAAC,QAAA,CAAA;AACZC,MAAAA,EAAE,EAAEb,MAAAA;KACCb,EAAAA,WAAW,KAAK,OAAO,GACtB;AACI2B,MAAAA,YAAY,EAAElB,cAAc;AAC5BmB,MAAAA,YAAY,EAAElB,cAAAA;AAClB,KAAC,GACD;AAAEmB,MAAAA,OAAO,EAAElB,eAAAA;AAAgB,KAAC,GAEjCV,cAAc,iBACXe,KAAA,CAAAC,aAAA,CAACa,qBAAqB,EAAA;MAClBtB,IAAI,EAAEO,eAAe,EAAG;AACxBgB,MAAAA,KAAK,EAAC,SAAS;MACfC,kBAAkB,EAAEC,MAAM,CAACC,wBAAAA;KAC9B,CAEQ,CACF,CACtB;AACDC,IAAAA,SAAS,EAAEjC,aAAc;AACzBkC,IAAAA,QAAQ,EAAEjC,YAAa;AACvBkC,IAAAA,MAAM,EAAEjC,UAAW;AACnBkC,IAAAA,QAAQ,EAAEjC,SAAU;AACpBkC,IAAAA,QAAQ,EAAElC,SAAU;AACpBmC,IAAAA,WAAW,EAAElC,eAAgB;AAC7BmC,IAAAA,KAAK,EAAE5B,MAAAA;AAAO,GACjB,CAAC,CAAA;AAEV,CACJ;;;;"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@salutejs/plasma-new-hope",
|
3
|
-
"version": "0.327.0-canary.1741.
|
3
|
+
"version": "0.327.0-canary.1741.15776056320.0",
|
4
4
|
"description": "Salute Design System blueprint",
|
5
5
|
"main": "cjs/index.js",
|
6
6
|
"module": "es/index.js",
|
@@ -79,7 +79,7 @@
|
|
79
79
|
"@rollup/plugin-babel": "^6.0.4",
|
80
80
|
"@rollup/plugin-commonjs": "^25.0.4",
|
81
81
|
"@rollup/plugin-node-resolve": "^15.1.0",
|
82
|
-
"@salutejs/plasma-sb-utils": "0.200.0-canary.1741.
|
82
|
+
"@salutejs/plasma-sb-utils": "0.200.0-canary.1741.15776056320.0",
|
83
83
|
"@salutejs/plasma-themes": "0.34.0",
|
84
84
|
"@storybook/addon-docs": "8.6.12",
|
85
85
|
"@storybook/addon-essentials": "8.6.12",
|
@@ -117,7 +117,7 @@
|
|
117
117
|
"@linaria/react": "5.0.3",
|
118
118
|
"@popperjs/core": "2.11.8",
|
119
119
|
"@salutejs/input-core": "2.1.2",
|
120
|
-
"@salutejs/plasma-core": "1.199.0-canary.1741.
|
120
|
+
"@salutejs/plasma-core": "1.199.0-canary.1741.15776056320.0",
|
121
121
|
"@salutejs/react-maskinput": "3.2.6",
|
122
122
|
"@tanstack/react-table": "8.21.2",
|
123
123
|
"@tanstack/react-virtual": "3.13.2",
|
@@ -137,5 +137,5 @@
|
|
137
137
|
"sideEffects": [
|
138
138
|
"*.css"
|
139
139
|
],
|
140
|
-
"gitHead": "
|
140
|
+
"gitHead": "4fa877692d208c1ea84326af3e8e138037a9d7a4"
|
141
141
|
}
|