@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":"Select.js","sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useState,\n useReducer,\n useMemo,\n useLayoutEffect,\n useRef,\n ChangeEvent,\n ForwardedRef,\n} from 'react';\nimport { safeUseId } from '@salutejs/plasma-core';\nimport { RootProps } from 'src/engines';\nimport { isEmpty } from 'src/utils';\nimport { useOutsideClick } from 'src/hooks';\n\nimport type { HintProps } from '../TextField/TextField.types';\n\nimport { useKeyNavigation, getItemByFocused } from './hooks/useKeyboardNavigation';\nimport { initialItemsTransform, updateAncestors, updateDescendants, updateSingleAncestors, getView } from './utils';\nimport { Inner, Target, VirtualList, SelectAll } from './ui';\nimport { pathReducer, focusedPathReducer } from './reducers';\nimport { usePathMaps } from './hooks/usePathMaps';\nimport { Ul, base, ListWrapper } from './Select.styles';\nimport type { MergedSelectProps, RequiredProps } from './Select.types';\nimport type { MergedDropdownNodeTransformed } from './ui/Inner/ui/Item/Item.types';\nimport { FloatingPopover } from './FloatingPopover';\nimport { SelectNative } from './ui/SelectNative/SelectNative';\nimport { Context } from './Select.context';\n\n/**\n * Выпадающий список. Поддерживает выбор одного или нескольких значений.\n */\nexport const selectRoot = (Root: RootProps<HTMLButtonElement, Omit<MergedSelectProps, 'items'>>) =>\n forwardRef<HTMLButtonElement, MergedSelectProps>((props, ref) => {\n const {\n // eslint-disable-block @typescript-eslint/ban-ts-comment\n id,\n value: outerValue,\n onChange: outerOnChange,\n target = 'textfield-like',\n items,\n placement = 'bottom',\n label,\n labelPlacement,\n placeholder,\n helperText,\n disabled = false,\n readOnly = false,\n view: outerView,\n size,\n listOverflow,\n listHeight,\n listMaxHeight,\n listWidth,\n contentLeft,\n onScrollBottom,\n onScroll,\n chipView,\n variant = 'normal',\n portal,\n renderValue,\n renderItem,\n status,\n onItemSelect,\n separator,\n closeAfterSelect: outerCloseAfterSelect,\n isTargetAmount,\n beforeList,\n afterList,\n zIndex,\n name,\n defaultValue,\n virtual = false,\n onToggle,\n chipType,\n multiselect,\n\n // Извлекаем пропсы для required и hint, чтобы они не попадали в DOM.\n // @ts-ignore\n required,\n // @ts-ignore\n requiredPlacement,\n // @ts-ignore\n hasRequiredIndicator,\n // @ts-ignore\n optional,\n // @ts-ignore\n hintText,\n // @ts-ignore\n hintTrigger,\n // @ts-ignore\n hintView,\n // @ts-ignore\n hintSize,\n // @ts-ignore\n hintTargetPlacement,\n // @ts-ignore\n hintPlacement,\n // @ts-ignore\n hintWidth,\n // @ts-ignore\n hintHasArrow,\n // @ts-ignore\n hasHint,\n ...rest\n } = props;\n const transformedItems = useMemo(() => initialItemsTransform(items || []), [items]);\n\n // Создаем структуры для быстрой работы с деревом\n const [pathMap, focusedToValueMap, valueToCheckedMap, valueToItemMap, labelToItemMap] = usePathMaps(\n transformedItems,\n );\n\n const [internalValue, setInternalValue] = useState<string | number | Array<string | number>>(\n props.multiselect ? [] : '',\n );\n\n const value = outerValue !== null && outerValue !== undefined ? outerValue : internalValue;\n\n const floatingPopoverRef = useRef<HTMLDivElement>(null);\n\n // Состояния дерева элементов\n const [path, dispatchPath] = useReducer(pathReducer, []);\n const [focusedPath, dispatchFocusedPath] = useReducer(focusedPathReducer, []);\n const [checked, setChecked] = useState(valueToCheckedMap);\n\n const isCurrentListOpen = Boolean(path[0]);\n const activeDescendantItemValue = getItemByFocused(focusedPath, focusedToValueMap)?.value.toString() || '';\n const closeAfterSelect = outerCloseAfterSelect ?? !props.multiselect;\n const treeId = safeUseId();\n const view = target === 'textfield-like' && (disabled || readOnly) ? 'default' : getView(status, outerView);\n\n // Собираем объект с пропсами для required и прокидываем их напрямую в компонент Textfield.\n const requiredProps =\n props.target === 'button-like'\n ? undefined\n : ({\n required,\n requiredPlacement,\n hasRequiredIndicator,\n optional,\n } as RequiredProps);\n\n // Собираем объект с пропсами для hint и прокидываем их напрямую в компонент Textfield.\n const hintProps =\n props.target === 'button-like'\n ? undefined\n : ({\n hintText,\n hintTrigger,\n hintView,\n hintSize,\n hintTargetPlacement,\n hintPlacement,\n hintWidth,\n hintHasArrow,\n } as HintProps);\n\n const targetRef = useOutsideClick<HTMLUListElement>(() => {\n if (!isCurrentListOpen) {\n return;\n }\n\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n\n if (onToggle) {\n onToggle(false);\n }\n }, floatingPopoverRef);\n\n const onChange = (\n newValue?: string | number | Array<string | number> | ChangeEvent<HTMLSelectElement> | null,\n item?: MergedDropdownNodeTransformed | null,\n ) => {\n if (props.onChange) {\n // Условие для отправки если компонент используется без формы.\n if (!props.name && (typeof newValue === 'string' || Array.isArray(newValue))) {\n props.onChange(newValue as any, item || null);\n }\n\n // Условие для отправки если компонент используется с формой.\n // Убрать условие \"typeof ref === 'function'\" в PLASMA 2.0\n if (props.name && typeof newValue === 'object' && !Array.isArray(newValue)) {\n props.onChange(newValue as any, item || null);\n }\n }\n\n // Условие для изменения внутреннего значения (только если newValue строка или массив строк).\n if (typeof newValue === 'string' || Array.isArray(newValue)) {\n setInternalValue(newValue);\n }\n };\n\n const handleListToggle = (opened: boolean) => {\n if (disabled || readOnly) {\n return;\n }\n\n if (opened) {\n dispatchPath({ type: 'opened_first_level' });\n } else {\n dispatchFocusedPath({ type: 'reset' });\n dispatchPath({ type: 'reset' });\n }\n\n if (onToggle) {\n onToggle(opened);\n }\n };\n\n const handleCheckboxChange = (item: MergedDropdownNodeTransformed) => {\n if (!props.multiselect) {\n return;\n }\n\n const checkedCopy = new Map(checked);\n\n if (!checkedCopy.get(item.value)) {\n checkedCopy.set(item.value, true);\n updateDescendants(item, checkedCopy, true, valueToItemMap);\n } else {\n checkedCopy.set(item.value, false);\n updateDescendants(item, checkedCopy, false);\n }\n\n updateAncestors(item, checkedCopy);\n\n const newValues: Array<string | number> = [];\n\n valueToItemMap.forEach((item, key) => {\n if (checkedCopy.get(key)) {\n newValues.push(item.value);\n }\n });\n\n // Оставляем values, которых нет в items.\n if (Array.isArray(value)) {\n value.forEach((val: string) => {\n if (!valueToItemMap.has(val)) {\n newValues.push(val);\n }\n });\n }\n\n if (closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(newValues, item);\n }\n };\n\n const handleItemClick = (item: MergedDropdownNodeTransformed, e?: React.MouseEvent<HTMLElement>) => {\n if (!isEmpty(item?.items)) {\n return;\n }\n\n if (props.multiselect) {\n handleCheckboxChange(item);\n return;\n }\n\n if (e) {\n e.stopPropagation();\n }\n\n const isCurrentChecked = checked.get(item.value);\n\n if (closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(isCurrentChecked ? '' : item.value, item);\n }\n\n if (onItemSelect) {\n onItemSelect(item, e!);\n }\n };\n\n const handlePressDown = (item: MergedDropdownNodeTransformed, e?: React.MouseEvent<HTMLElement>) => {\n if (isEmpty(item.items)) {\n handleItemClick(item, e);\n } else if (props.multiselect) {\n handleCheckboxChange(item);\n }\n };\n\n const handleScroll = (e: React.UIEvent<HTMLUListElement>) => {\n if (onScroll) {\n onScroll(e);\n }\n\n if (!onScrollBottom) return;\n\n const { target } = e;\n\n if (\n (target as HTMLElement).scrollHeight - (target as HTMLElement).scrollTop ===\n (target as HTMLElement).clientHeight\n ) {\n onScrollBottom(e);\n }\n };\n\n const { onKeyDown } = useKeyNavigation({\n focusedPath,\n dispatchFocusedPath,\n path,\n dispatchPath,\n pathMap,\n focusedToValueMap,\n handleListToggle,\n handlePressDown,\n });\n\n // В данном эффекте мы следим за изменениями value снаружи и вносим коррективы в дерево чекбоксов.\n // Пример: когда юзер очистил value извне, тогда нужно пройтись по элементам и выключить все чекбоксы.\n useLayoutEffect(() => {\n const checkedCopy = new Map(checked);\n\n checkedCopy.forEach((_, key) => {\n checkedCopy.set(key, false);\n });\n\n if (!isEmpty(value) || typeof value === 'number') {\n if (Array.isArray(value)) {\n value.forEach((val) => {\n // Только если value находится в items, т.к. value может и не существовать в items.\n if (valueToItemMap.has(val)) {\n checkedCopy.set(val, true);\n updateDescendants(valueToItemMap.get(val)!, checkedCopy, true);\n updateAncestors(valueToItemMap.get(val)!, checkedCopy);\n }\n });\n } else {\n // Только если value находится в items, т.к. value может и не существовать в items.\n // eslint-disable-next-line no-lonely-if\n if (valueToItemMap.has(value)) {\n checkedCopy.set(value, 'done');\n updateSingleAncestors(valueToItemMap.get(value)!, checkedCopy, 'dot');\n }\n }\n }\n\n setChecked(checkedCopy);\n\n // В deps мы кладем именно outerValue и internalValue, а не просто value.\n // Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.\n // А переменную, содержащую сложные типы данных, нельзя помещать в deps.\n }, [outerValue, internalValue, items]);\n\n useLayoutEffect(() => {\n if (defaultValue) {\n setInternalValue(defaultValue as string | string[]);\n }\n }, [defaultValue]);\n\n return (\n <Root\n view={view}\n size={size}\n labelPlacement={labelPlacement}\n chipView={chipView}\n disabled={disabled}\n readOnly={readOnly}\n id={id}\n {...(rest as any)}\n >\n {name && (\n <SelectNative\n items={valueToItemMap}\n name={name}\n value={internalValue}\n multiselect={props.multiselect}\n onChange={onChange}\n onSetValue={setInternalValue}\n ref={ref as ForwardedRef<HTMLButtonElement>}\n />\n )}\n <Context.Provider\n value={{\n focusedPath,\n checked,\n multiselect: props.multiselect,\n size,\n handleCheckboxChange,\n handleItemClick,\n variant,\n renderItem,\n treeId,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line no-underscore-dangle\n _checkboxAppearance: (rest as any)._checkboxAppearance,\n }}\n >\n <FloatingPopover\n ref={floatingPopoverRef}\n opened={isCurrentListOpen}\n onToggle={handleListToggle}\n placement={placement}\n portal={portal}\n listWidth={listWidth}\n target={(referenceRef) => (\n <Target\n ref={name ? null : ref}\n value={value}\n opened={isCurrentListOpen}\n valueToItemMap={valueToItemMap}\n label={label}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n labelPlacement={labelPlacement}\n size={size}\n contentLeft={contentLeft}\n disabled={disabled}\n readOnly={readOnly}\n renderValue={renderValue}\n selectProps={props}\n inputWrapperRef={referenceRef as React.MutableRefObject<HTMLDivElement>}\n multiselect={props.multiselect}\n view={view}\n helperText={helperText}\n treeId={treeId}\n activeDescendantItemValue={activeDescendantItemValue}\n isTargetAmount={isTargetAmount}\n onChange={onChange}\n labelToItemMap={labelToItemMap}\n chipView={chipView}\n separator={separator}\n requiredProps={requiredProps}\n hintProps={hintProps}\n />\n )}\n zIndex={zIndex}\n isInner={false}\n >\n <Root\n view={view}\n size={size}\n labelPlacement={labelPlacement}\n chipView={chipView}\n disabled={disabled}\n readOnly={readOnly}\n {...(rest as any)}\n >\n <ListWrapper listWidth={listWidth}>\n <Ul\n role=\"tree\"\n id={`${treeId}_tree_level_1`}\n aria-multiselectable={Boolean(props.multiselect)}\n listOverflow={listOverflow}\n listMaxHeight={listMaxHeight || listHeight}\n onScroll={virtual ? undefined : handleScroll}\n ref={targetRef}\n virtual={virtual}\n >\n {beforeList}\n\n {props.multiselect && props.selectAllOptions && (\n // TODO: #2004\n <SelectAll selectAllOptions={props.selectAllOptions} variant={variant} />\n )}\n\n {virtual ? (\n <VirtualList\n items={transformedItems}\n listMaxHeight={listMaxHeight || listHeight}\n onScroll={onScroll}\n />\n ) : (\n transformedItems.map((item, index) => (\n <Inner\n key={`${index}/0`}\n item={item}\n currentLevel={0}\n path={path}\n dispatchPath={dispatchPath}\n index={index}\n listWidth={listWidth}\n />\n ))\n )}\n {afterList}\n </Ul>\n </ListWrapper>\n </Root>\n </FloatingPopover>\n </Context.Provider>\n </Root>\n );\n });\n\nexport const selectConfig = {\n name: 'Select',\n tag: 'div',\n layout: selectRoot,\n base,\n variations: {},\n defaults: {\n view: 'default',\n size: 'm',\n labelPlacement: 'outer',\n chipView: 'default',\n },\n};\n"],"names":["selectRoot","Root","forwardRef","props","ref","id","value","outerValue","onChange","outerOnChange","target","items","placement","label","labelPlacement","placeholder","helperText","disabled","readOnly","view","outerView","size","listOverflow","listHeight","listMaxHeight","listWidth","contentLeft","onScrollBottom","onScroll","chipView","variant","portal","renderValue","renderItem","status","onItemSelect","separator","closeAfterSelect","outerCloseAfterSelect","isTargetAmount","beforeList","afterList","zIndex","name","defaultValue","virtual","onToggle","chipType","multiselect","required","requiredPlacement","hasRequiredIndicator","optional","hintText","hintTrigger","hintView","hintSize","hintTargetPlacement","hintPlacement","hintWidth","hintHasArrow","hasHint","rest","transformedItems","useMemo","initialItemsTransform","pathMap","focusedToValueMap","valueToCheckedMap","valueToItemMap","labelToItemMap","usePathMaps","internalValue","setInternalValue","useState","undefined","floatingPopoverRef","useRef","path","dispatchPath","useReducer","pathReducer","focusedPath","dispatchFocusedPath","focusedPathReducer","checked","setChecked","isCurrentListOpen","Boolean","activeDescendantItemValue","getItemByFocused","toString","treeId","safeUseId","getView","requiredProps","hintProps","targetRef","useOutsideClick","type","newValue","item","Array","isArray","handleListToggle","opened","handleCheckboxChange","checkedCopy","Map","get","set","updateDescendants","updateAncestors","newValues","forEach","key","push","val","has","handleItemClick","e","isEmpty","stopPropagation","isCurrentChecked","handlePressDown","handleScroll","scrollHeight","scrollTop","clientHeight","onKeyDown","useKeyNavigation","useLayoutEffect","_","updateSingleAncestors","React","createElement","_extends","SelectNative","onSetValue","Context","Provider","_checkboxAppearance","FloatingPopover","referenceRef","Target","selectProps","inputWrapperRef","isInner","ListWrapper","Ul","role","selectAllOptions","SelectAll","VirtualList","map","index","Inner","currentLevel","selectConfig","tag","layout","base","variations","defaults"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"Select.js","sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useState,\n useReducer,\n useMemo,\n useLayoutEffect,\n useRef,\n ChangeEvent,\n ForwardedRef,\n} from 'react';\nimport { RootProps } from 'src/engines';\nimport { isEmpty, safeUseId } from 'src/utils';\nimport { useOutsideClick } from 'src/hooks';\n\nimport type { HintProps } from '../TextField/TextField.types';\n\nimport { useKeyNavigation, getItemByFocused } from './hooks/useKeyboardNavigation';\nimport { initialItemsTransform, updateAncestors, updateDescendants, updateSingleAncestors, getView } from './utils';\nimport { Inner, Target, VirtualList, SelectAll } from './ui';\nimport { pathReducer, focusedPathReducer } from './reducers';\nimport { usePathMaps } from './hooks/usePathMaps';\nimport { Ul, base, ListWrapper } from './Select.styles';\nimport type { MergedSelectProps, RequiredProps } from './Select.types';\nimport type { MergedDropdownNodeTransformed } from './ui/Inner/ui/Item/Item.types';\nimport { FloatingPopover } from './FloatingPopover';\nimport { SelectNative } from './ui/SelectNative/SelectNative';\nimport { Context } from './Select.context';\n\n/**\n * Выпадающий список. Поддерживает выбор одного или нескольких значений.\n */\nexport const selectRoot = (Root: RootProps<HTMLButtonElement, Omit<MergedSelectProps, 'items'>>) =>\n forwardRef<HTMLButtonElement, MergedSelectProps>((props, ref) => {\n const {\n // eslint-disable-block @typescript-eslint/ban-ts-comment\n id,\n value: outerValue,\n onChange: outerOnChange,\n target = 'textfield-like',\n items,\n placement = 'bottom',\n label,\n labelPlacement,\n placeholder,\n helperText,\n disabled = false,\n readOnly = false,\n view: outerView,\n size,\n listOverflow,\n listHeight,\n listMaxHeight,\n listWidth,\n contentLeft,\n onScrollBottom,\n onScroll,\n chipView,\n variant = 'normal',\n portal,\n renderValue,\n renderItem,\n status,\n onItemSelect,\n separator,\n closeAfterSelect: outerCloseAfterSelect,\n isTargetAmount,\n beforeList,\n afterList,\n zIndex,\n name,\n defaultValue,\n virtual = false,\n onToggle,\n chipType,\n multiselect,\n\n // Извлекаем пропсы для required и hint, чтобы они не попадали в DOM.\n // @ts-ignore\n required,\n // @ts-ignore\n requiredPlacement,\n // @ts-ignore\n hasRequiredIndicator,\n // @ts-ignore\n optional,\n // @ts-ignore\n hintText,\n // @ts-ignore\n hintTrigger,\n // @ts-ignore\n hintView,\n // @ts-ignore\n hintSize,\n // @ts-ignore\n hintTargetPlacement,\n // @ts-ignore\n hintPlacement,\n // @ts-ignore\n hintWidth,\n // @ts-ignore\n hintHasArrow,\n // @ts-ignore\n hasHint,\n ...rest\n } = props;\n const transformedItems = useMemo(() => initialItemsTransform(items || []), [items]);\n\n // Создаем структуры для быстрой работы с деревом\n const [pathMap, focusedToValueMap, valueToCheckedMap, valueToItemMap, labelToItemMap] = usePathMaps(\n transformedItems,\n );\n\n const [internalValue, setInternalValue] = useState<string | number | Array<string | number>>(\n props.multiselect ? [] : '',\n );\n\n const value = outerValue !== null && outerValue !== undefined ? outerValue : internalValue;\n\n const floatingPopoverRef = useRef<HTMLDivElement>(null);\n\n // Состояния дерева элементов\n const [path, dispatchPath] = useReducer(pathReducer, []);\n const [focusedPath, dispatchFocusedPath] = useReducer(focusedPathReducer, []);\n const [checked, setChecked] = useState(valueToCheckedMap);\n\n const isCurrentListOpen = Boolean(path[0]);\n const activeDescendantItemValue = getItemByFocused(focusedPath, focusedToValueMap)?.value.toString() || '';\n const closeAfterSelect = outerCloseAfterSelect ?? !props.multiselect;\n const treeId = safeUseId();\n const view = target === 'textfield-like' && (disabled || readOnly) ? 'default' : getView(status, outerView);\n\n // Собираем объект с пропсами для required и прокидываем их напрямую в компонент Textfield.\n const requiredProps =\n props.target === 'button-like'\n ? undefined\n : ({\n required,\n requiredPlacement,\n hasRequiredIndicator,\n optional,\n } as RequiredProps);\n\n // Собираем объект с пропсами для hint и прокидываем их напрямую в компонент Textfield.\n const hintProps =\n props.target === 'button-like'\n ? undefined\n : ({\n hintText,\n hintTrigger,\n hintView,\n hintSize,\n hintTargetPlacement,\n hintPlacement,\n hintWidth,\n hintHasArrow,\n } as HintProps);\n\n const targetRef = useOutsideClick<HTMLUListElement>(() => {\n if (!isCurrentListOpen) {\n return;\n }\n\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n\n if (onToggle) {\n onToggle(false);\n }\n }, floatingPopoverRef);\n\n const onChange = (\n newValue?: string | number | Array<string | number> | ChangeEvent<HTMLSelectElement> | null,\n item?: MergedDropdownNodeTransformed | null,\n ) => {\n if (props.onChange) {\n // Условие для отправки если компонент используется без формы.\n if (!props.name && (typeof newValue === 'string' || Array.isArray(newValue))) {\n props.onChange(newValue as any, item || null);\n }\n\n // Условие для отправки если компонент используется с формой.\n // Убрать условие \"typeof ref === 'function'\" в PLASMA 2.0\n if (props.name && typeof newValue === 'object' && !Array.isArray(newValue)) {\n props.onChange(newValue as any, item || null);\n }\n }\n\n // Условие для изменения внутреннего значения (только если newValue строка или массив строк).\n if (typeof newValue === 'string' || Array.isArray(newValue)) {\n setInternalValue(newValue);\n }\n };\n\n const handleListToggle = (opened: boolean) => {\n if (disabled || readOnly) {\n return;\n }\n\n if (opened) {\n dispatchPath({ type: 'opened_first_level' });\n } else {\n dispatchFocusedPath({ type: 'reset' });\n dispatchPath({ type: 'reset' });\n }\n\n if (onToggle) {\n onToggle(opened);\n }\n };\n\n const handleCheckboxChange = (item: MergedDropdownNodeTransformed) => {\n if (!props.multiselect) {\n return;\n }\n\n const checkedCopy = new Map(checked);\n\n if (!checkedCopy.get(item.value)) {\n checkedCopy.set(item.value, true);\n updateDescendants(item, checkedCopy, true, valueToItemMap);\n } else {\n checkedCopy.set(item.value, false);\n updateDescendants(item, checkedCopy, false);\n }\n\n updateAncestors(item, checkedCopy);\n\n const newValues: Array<string | number> = [];\n\n valueToItemMap.forEach((item, key) => {\n if (checkedCopy.get(key)) {\n newValues.push(item.value);\n }\n });\n\n // Оставляем values, которых нет в items.\n if (Array.isArray(value)) {\n value.forEach((val: string) => {\n if (!valueToItemMap.has(val)) {\n newValues.push(val);\n }\n });\n }\n\n if (closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(newValues, item);\n }\n };\n\n const handleItemClick = (item: MergedDropdownNodeTransformed, e?: React.MouseEvent<HTMLElement>) => {\n if (!isEmpty(item?.items)) {\n return;\n }\n\n if (props.multiselect) {\n handleCheckboxChange(item);\n return;\n }\n\n if (e) {\n e.stopPropagation();\n }\n\n const isCurrentChecked = checked.get(item.value);\n\n if (closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(isCurrentChecked ? '' : item.value, item);\n }\n\n if (onItemSelect) {\n onItemSelect(item, e!);\n }\n };\n\n const handlePressDown = (item: MergedDropdownNodeTransformed, e?: React.MouseEvent<HTMLElement>) => {\n if (isEmpty(item.items)) {\n handleItemClick(item, e);\n } else if (props.multiselect) {\n handleCheckboxChange(item);\n }\n };\n\n const handleScroll = (e: React.UIEvent<HTMLUListElement>) => {\n if (onScroll) {\n onScroll(e);\n }\n\n if (!onScrollBottom) return;\n\n const { target } = e;\n\n if (\n (target as HTMLElement).scrollHeight - (target as HTMLElement).scrollTop ===\n (target as HTMLElement).clientHeight\n ) {\n onScrollBottom(e);\n }\n };\n\n const { onKeyDown } = useKeyNavigation({\n focusedPath,\n dispatchFocusedPath,\n path,\n dispatchPath,\n pathMap,\n focusedToValueMap,\n handleListToggle,\n handlePressDown,\n });\n\n // В данном эффекте мы следим за изменениями value снаружи и вносим коррективы в дерево чекбоксов.\n // Пример: когда юзер очистил value извне, тогда нужно пройтись по элементам и выключить все чекбоксы.\n useLayoutEffect(() => {\n const checkedCopy = new Map(checked);\n\n checkedCopy.forEach((_, key) => {\n checkedCopy.set(key, false);\n });\n\n if (!isEmpty(value) || typeof value === 'number') {\n if (Array.isArray(value)) {\n value.forEach((val) => {\n // Только если value находится в items, т.к. value может и не существовать в items.\n if (valueToItemMap.has(val)) {\n checkedCopy.set(val, true);\n updateDescendants(valueToItemMap.get(val)!, checkedCopy, true);\n updateAncestors(valueToItemMap.get(val)!, checkedCopy);\n }\n });\n } else {\n // Только если value находится в items, т.к. value может и не существовать в items.\n // eslint-disable-next-line no-lonely-if\n if (valueToItemMap.has(value)) {\n checkedCopy.set(value, 'done');\n updateSingleAncestors(valueToItemMap.get(value)!, checkedCopy, 'dot');\n }\n }\n }\n\n setChecked(checkedCopy);\n\n // В deps мы кладем именно outerValue и internalValue, а не просто value.\n // Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.\n // А переменную, содержащую сложные типы данных, нельзя помещать в deps.\n }, [outerValue, internalValue, items]);\n\n useLayoutEffect(() => {\n if (defaultValue) {\n setInternalValue(defaultValue as string | string[]);\n }\n }, [defaultValue]);\n\n return (\n <Root\n view={view}\n size={size}\n labelPlacement={labelPlacement}\n chipView={chipView}\n disabled={disabled}\n readOnly={readOnly}\n id={id}\n {...(rest as any)}\n >\n {name && (\n <SelectNative\n items={valueToItemMap}\n name={name}\n value={internalValue}\n multiselect={props.multiselect}\n onChange={onChange}\n onSetValue={setInternalValue}\n ref={ref as ForwardedRef<HTMLButtonElement>}\n />\n )}\n <Context.Provider\n value={{\n focusedPath,\n checked,\n multiselect: props.multiselect,\n size,\n handleCheckboxChange,\n handleItemClick,\n variant,\n renderItem,\n treeId,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line no-underscore-dangle\n _checkboxAppearance: (rest as any)._checkboxAppearance,\n }}\n >\n <FloatingPopover\n ref={floatingPopoverRef}\n opened={isCurrentListOpen}\n onToggle={handleListToggle}\n placement={placement}\n portal={portal}\n listWidth={listWidth}\n target={(referenceRef) => (\n <Target\n ref={name ? null : ref}\n value={value}\n opened={isCurrentListOpen}\n valueToItemMap={valueToItemMap}\n label={label}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n labelPlacement={labelPlacement}\n size={size}\n contentLeft={contentLeft}\n disabled={disabled}\n readOnly={readOnly}\n renderValue={renderValue}\n selectProps={props}\n inputWrapperRef={referenceRef as React.MutableRefObject<HTMLDivElement>}\n multiselect={props.multiselect}\n view={view}\n helperText={helperText}\n treeId={treeId}\n activeDescendantItemValue={activeDescendantItemValue}\n isTargetAmount={isTargetAmount}\n onChange={onChange}\n labelToItemMap={labelToItemMap}\n chipView={chipView}\n separator={separator}\n requiredProps={requiredProps}\n hintProps={hintProps}\n />\n )}\n zIndex={zIndex}\n isInner={false}\n >\n <Root\n view={view}\n size={size}\n labelPlacement={labelPlacement}\n chipView={chipView}\n disabled={disabled}\n readOnly={readOnly}\n {...(rest as any)}\n >\n <ListWrapper listWidth={listWidth}>\n <Ul\n role=\"tree\"\n id={`${treeId}_tree_level_1`}\n aria-multiselectable={Boolean(props.multiselect)}\n listOverflow={listOverflow}\n listMaxHeight={listMaxHeight || listHeight}\n onScroll={virtual ? undefined : handleScroll}\n ref={targetRef}\n virtual={virtual}\n >\n {beforeList}\n\n {props.multiselect && props.selectAllOptions && (\n // TODO: #2004\n <SelectAll selectAllOptions={props.selectAllOptions} variant={variant} />\n )}\n\n {virtual ? (\n <VirtualList\n items={transformedItems}\n listMaxHeight={listMaxHeight || listHeight}\n onScroll={onScroll}\n />\n ) : (\n transformedItems.map((item, index) => (\n <Inner\n key={`${index}/0`}\n item={item}\n currentLevel={0}\n path={path}\n dispatchPath={dispatchPath}\n index={index}\n listWidth={listWidth}\n />\n ))\n )}\n {afterList}\n </Ul>\n </ListWrapper>\n </Root>\n </FloatingPopover>\n </Context.Provider>\n </Root>\n );\n });\n\nexport const selectConfig = {\n name: 'Select',\n tag: 'div',\n layout: selectRoot,\n base,\n variations: {},\n defaults: {\n view: 'default',\n size: 'm',\n labelPlacement: 'outer',\n chipView: 'default',\n },\n};\n"],"names":["selectRoot","Root","forwardRef","props","ref","id","value","outerValue","onChange","outerOnChange","target","items","placement","label","labelPlacement","placeholder","helperText","disabled","readOnly","view","outerView","size","listOverflow","listHeight","listMaxHeight","listWidth","contentLeft","onScrollBottom","onScroll","chipView","variant","portal","renderValue","renderItem","status","onItemSelect","separator","closeAfterSelect","outerCloseAfterSelect","isTargetAmount","beforeList","afterList","zIndex","name","defaultValue","virtual","onToggle","chipType","multiselect","required","requiredPlacement","hasRequiredIndicator","optional","hintText","hintTrigger","hintView","hintSize","hintTargetPlacement","hintPlacement","hintWidth","hintHasArrow","hasHint","rest","transformedItems","useMemo","initialItemsTransform","pathMap","focusedToValueMap","valueToCheckedMap","valueToItemMap","labelToItemMap","usePathMaps","internalValue","setInternalValue","useState","undefined","floatingPopoverRef","useRef","path","dispatchPath","useReducer","pathReducer","focusedPath","dispatchFocusedPath","focusedPathReducer","checked","setChecked","isCurrentListOpen","Boolean","activeDescendantItemValue","getItemByFocused","toString","treeId","safeUseId","getView","requiredProps","hintProps","targetRef","useOutsideClick","type","newValue","item","Array","isArray","handleListToggle","opened","handleCheckboxChange","checkedCopy","Map","get","set","updateDescendants","updateAncestors","newValues","forEach","key","push","val","has","handleItemClick","e","isEmpty","stopPropagation","isCurrentChecked","handlePressDown","handleScroll","scrollHeight","scrollTop","clientHeight","onKeyDown","useKeyNavigation","useLayoutEffect","_","updateSingleAncestors","React","createElement","_extends","SelectNative","onSetValue","Context","Provider","_checkboxAppearance","FloatingPopover","referenceRef","Target","selectProps","inputWrapperRef","isInner","ListWrapper","Ul","role","selectAllOptions","SelectAll","VirtualList","map","index","Inner","currentLevel","selectConfig","tag","layout","base","variations","defaults"],"mappings":"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"}
|
@@ -3,10 +3,10 @@
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
4
4
|
|
5
5
|
var React = require('react');
|
6
|
-
var plasmaCore = require('@salutejs/plasma-core');
|
7
6
|
var Select_styles = require('../../Select.styles.js');
|
8
7
|
var FloatingPopover = require('../../FloatingPopover.js');
|
9
8
|
var Item = require('./ui/Item/Item.js');
|
9
|
+
var react = require('../../../../utils/react.js');
|
10
10
|
var isEmpty = require('../../../../utils/isEmpty.js');
|
11
11
|
|
12
12
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
@@ -36,7 +36,7 @@ const Inner = ({
|
|
36
36
|
}
|
37
37
|
};
|
38
38
|
const isCurrentListOpen = path[currentLevel + 1] === item.value.toString();
|
39
|
-
const treeId =
|
39
|
+
const treeId = react.safeUseId();
|
40
40
|
const listId = `${treeId}_tree_level_${currentLevel + 2}`;
|
41
41
|
const nextLevel = currentLevel + 1;
|
42
42
|
if (!isEmpty.isEmpty(item?.items)) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Inner.js","sources":["../../../../../src/components/Select/ui/Inner/Inner.tsx"],"sourcesContent":["import React from 'react';\nimport type { FC } from 'react';\nimport { safeUseId } from '
|
1
|
+
{"version":3,"file":"Inner.js","sources":["../../../../../src/components/Select/ui/Inner/Inner.tsx"],"sourcesContent":["import React from 'react';\nimport type { FC } from 'react';\nimport { isEmpty, safeUseId } from 'src/utils';\n\nimport { Ul, ListWrapper } from '../../Select.styles';\nimport { FloatingPopover } from '../../FloatingPopover';\n\nimport type { MergedDropdownNodeTransformed } from './ui/Item/Item.types';\nimport { Item } from './ui/Item/Item';\nimport { InnerProps } from './Inner.type';\n\nexport const Inner: FC<InnerProps> = ({ item, currentLevel, path, dispatchPath, index, listWidth }) => {\n const handleToggle = (opened: boolean): void => {\n if (opened) {\n dispatchPath({ type: 'changed_on_level', value: item.value.toString(), level: currentLevel + 1 });\n } else {\n dispatchPath({ type: 'cut_by_level', level: currentLevel + 1 });\n }\n };\n\n const isCurrentListOpen = path[currentLevel + 1] === item.value.toString();\n\n const treeId = safeUseId();\n const listId = `${treeId}_tree_level_${currentLevel + 2}`;\n const nextLevel = currentLevel + 1;\n\n if (!isEmpty(item?.items)) {\n return (\n <FloatingPopover\n placement={item?.placement || 'right'}\n opened={isCurrentListOpen}\n onToggle={handleToggle}\n target={\n <Item\n item={item}\n path={path}\n currentLevel={currentLevel}\n index={index}\n ariaControls={listId}\n ariaExpanded={isCurrentListOpen}\n ariaLevel={nextLevel}\n ariaLabel={item.label}\n />\n }\n isInner\n >\n <ListWrapper listWidth={listWidth}>\n <Ul role=\"group\" id={listId} virtual={false}>\n {item.items?.map((innerItem: MergedDropdownNodeTransformed, innerIndex: number) => (\n <Inner\n key={`${innerIndex}/${currentLevel}`}\n item={innerItem}\n currentLevel={nextLevel}\n path={path}\n dispatchPath={dispatchPath}\n index={innerIndex}\n listWidth={listWidth}\n />\n ))}\n </Ul>\n </ListWrapper>\n </FloatingPopover>\n );\n }\n\n return <Item item={item} path={path} index={index} currentLevel={currentLevel} ariaLevel={nextLevel} />;\n};\n"],"names":["Inner","item","currentLevel","path","dispatchPath","index","listWidth","handleToggle","opened","type","value","toString","level","isCurrentListOpen","treeId","safeUseId","listId","nextLevel","isEmpty","items","React","createElement","FloatingPopover","placement","onToggle","target","Item","ariaControls","ariaExpanded","ariaLevel","ariaLabel","label","isInner","ListWrapper","Ul","role","id","virtual","map","innerItem","innerIndex","key"],"mappings":"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"}
|
@@ -4,12 +4,12 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
5
5
|
var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
|
6
6
|
var React = require('react');
|
7
|
-
var plasmaCore = require('@salutejs/plasma-core');
|
8
7
|
var base$1 = require('./variations/_view/base.js');
|
9
8
|
var base = require('./variations/_size/base.js');
|
10
9
|
var SpinnerSvg = require('./SpinnerSvg.js');
|
11
10
|
var Spinner_styles = require('./Spinner.styles.js');
|
12
11
|
var index = require('./hooks/index.js');
|
12
|
+
var react = require('../../utils/react.js');
|
13
13
|
|
14
14
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
15
15
|
|
@@ -27,7 +27,7 @@ const spinnerRoot = Root => /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
27
27
|
svgHeight: 'var(--plasma-spinner-size)',
|
28
28
|
color: 'currentColor'
|
29
29
|
});
|
30
|
-
const uniqId =
|
30
|
+
const uniqId = react.safeUseId;
|
31
31
|
const innerId = id || uniqId();
|
32
32
|
return /*#__PURE__*/React__default.default.createElement(Root, _rollupPluginBabelHelpers.extends({
|
33
33
|
ref: ref,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Spinner.js","sources":["../../../src/components/Spinner/Spinner.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { safeUseId } from '
|
1
|
+
{"version":3,"file":"Spinner.js","sources":["../../../src/components/Spinner/Spinner.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { safeUseId } from 'src/utils';\nimport type { RootProps } from 'src/engines/types';\n\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { SpinnerSvg } from './SpinnerSvg';\nimport { SpinnerWrapper, base } from './Spinner.styles';\nimport type { SpinnerProps } from './Spinner.types';\nimport { useInnerProps } from './hooks';\n\nexport const spinnerRoot = (Root: RootProps<HTMLDivElement, SpinnerProps>) =>\n forwardRef<HTMLDivElement, SpinnerProps>((props, ref) => {\n const { id, ...rest } = props;\n\n const innerProps = useInnerProps(props, {\n wrapperWidth: 'auto',\n wrapperHeight: 'auto',\n svgWidth: 'var(--plasma-spinner-size)',\n svgHeight: 'var(--plasma-spinner-size)',\n color: 'currentColor',\n });\n\n const uniqId = safeUseId;\n const innerId = id || uniqId();\n\n return (\n <Root ref={ref} id={innerId} {...rest}>\n <SpinnerWrapper width={innerProps.wrapperWidth} height={innerProps.wrapperHeight}>\n <SpinnerSvg\n id={innerId}\n width={innerProps.svgWidth}\n height={innerProps.svgHeight}\n color={innerProps.color}\n />\n </SpinnerWrapper>\n </Root>\n );\n });\n\nexport const spinnerConfig = {\n name: 'Spinner',\n tag: 'div',\n layout: spinnerRoot,\n base,\n variations: {\n size: {\n css: sizeCSS,\n },\n view: {\n css: viewCSS,\n },\n },\n defaults: {\n size: 'm',\n view: 'accent',\n },\n};\n"],"names":["spinnerRoot","Root","forwardRef","props","ref","id","rest","innerProps","useInnerProps","wrapperWidth","wrapperHeight","svgWidth","svgHeight","color","uniqId","safeUseId","innerId","React","createElement","_extends","SpinnerWrapper","width","height","SpinnerSvg","spinnerConfig","name","tag","layout","base","variations","size","css","sizeCSS","view","viewCSS","defaults"],"mappings":";;;;;;;;;;;;;;;;;AAWO,MAAMA,WAAW,GAAIC,IAA6C,iBACrEC,gBAAU,CAA+B,CAACC,KAAK,EAAEC,GAAG,KAAK;EACrD,MAAM;IAAEC,EAAE;IAAE,GAAGC,IAAAA;AAAK,GAAC,GAAGH,KAAK,CAAA;AAE7B,EAAA,MAAMI,UAAU,GAAGC,mBAAa,CAACL,KAAK,EAAE;AACpCM,IAAAA,YAAY,EAAE,MAAM;AACpBC,IAAAA,aAAa,EAAE,MAAM;AACrBC,IAAAA,QAAQ,EAAE,4BAA4B;AACtCC,IAAAA,SAAS,EAAE,4BAA4B;AACvCC,IAAAA,KAAK,EAAE,cAAA;AACX,GAAC,CAAC,CAAA;EAEF,MAAMC,MAAM,GAAGC,eAAS,CAAA;AACxB,EAAA,MAAMC,OAAO,GAAGX,EAAE,IAAIS,MAAM,EAAE,CAAA;AAE9B,EAAA,oBACIG,sBAAA,CAAAC,aAAA,CAACjB,IAAI,EAAAkB,iCAAA,CAAA;AAACf,IAAAA,GAAG,EAAEA,GAAI;AAACC,IAAAA,EAAE,EAAEW,OAAAA;AAAQ,GAAA,EAAKV,IAAI,CACjCW,eAAAA,sBAAA,CAAAC,aAAA,CAACE,6BAAc,EAAA;IAACC,KAAK,EAAEd,UAAU,CAACE,YAAa;IAACa,MAAM,EAAEf,UAAU,CAACG,aAAAA;AAAc,GAAA,eAC7EO,sBAAA,CAAAC,aAAA,CAACK,qBAAU,EAAA;AACPlB,IAAAA,EAAE,EAAEW,OAAQ;IACZK,KAAK,EAAEd,UAAU,CAACI,QAAS;IAC3BW,MAAM,EAAEf,UAAU,CAACK,SAAU;IAC7BC,KAAK,EAAEN,UAAU,CAACM,KAAAA;GACrB,CACW,CACd,CAAC,CAAA;AAEf,CAAC,EAAC;AAEC,MAAMW,aAAa,GAAG;AACzBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,GAAG,EAAE,KAAK;AACVC,EAAAA,MAAM,EAAE3B,WAAW;QACnB4B,mBAAI;AACJC,EAAAA,UAAU,EAAE;AACRC,IAAAA,IAAI,EAAE;AACFC,MAAAA,GAAG,EAAEC,SAAAA;KACR;AACDC,IAAAA,IAAI,EAAE;AACFF,MAAAA,GAAG,EAAEG,WAAAA;AACT,KAAA;GACH;AACDC,EAAAA,QAAQ,EAAE;AACNL,IAAAA,IAAI,EAAE,GAAG;AACTG,IAAAA,IAAI,EAAE,QAAA;AACV,GAAA;AACJ;;;;;"}
|
@@ -4,9 +4,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
5
5
|
var _rollupPluginBabelHelpers = require('../../../../../_virtual/_rollupPluginBabelHelpers.js');
|
6
6
|
var React = require('react');
|
7
|
-
var plasmaCore = require('@salutejs/plasma-core');
|
8
|
-
var tokens = require('../../../tokens.js');
|
9
7
|
var index$1 = require('../../../../../utils/index.js');
|
8
|
+
var tokens = require('../../../tokens.js');
|
10
9
|
var TabsContext = require('../../../TabsContext.js');
|
11
10
|
var index = require('../../../utils/index.js');
|
12
11
|
var base = require('./variations/_size/base.js');
|
@@ -15,6 +14,7 @@ var base$2 = require('./variations/_disabled/base.js');
|
|
15
14
|
var base$4 = require('./variations/_pilled/base.js');
|
16
15
|
var base$3 = require('./variations/_stretch/base.js');
|
17
16
|
var HorizontalTabs_styles = require('./HorizontalTabs.styles.js');
|
17
|
+
var react = require('../../../../../utils/react.js');
|
18
18
|
var IconDisclosureLeft = require('../../../../_Icon/Icons/IconDisclosureLeft.js');
|
19
19
|
var IconDisclosureRight = require('../../../../_Icon/Icons/IconDisclosureRight.js');
|
20
20
|
|
@@ -55,7 +55,7 @@ const horizontalTabsRoot = Root => /*#__PURE__*/React.forwardRef((props, outerRe
|
|
55
55
|
// Триггер доп. скролла при появлении левой стрелки, которая отъедает ширину scroll-контейнера
|
56
56
|
const [shouldTriggerAdditionalScroll, setShouldTriggerAdditionalScroll] = React.useState(false);
|
57
57
|
const refs = React.useMemo(() => new TabsContext.TabItemRefs(index$2), []);
|
58
|
-
const uniqId =
|
58
|
+
const uniqId = react.safeUseId();
|
59
59
|
const tabsId = id || uniqId;
|
60
60
|
const isFilled = view === 'filled'; // outer padding is only for filled view
|
61
61
|
const pilledAttr = view !== 'clear' && pilled;
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;AAiBiG,IAE5FA,IAAI,0BAAJA,IAAI,EAAA;AAAJA,EAAAA,IAAI,CAAJA,IAAI,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,KAAA,CAAA;AAAJA,EAAAA,IAAI,CAAJA,IAAI,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAA,CAAA;AAAJA,EAAAA,IAAI,CAAJA,IAAI,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAA,CAAA;AAAJA,EAAAA,IAAI,CAAJA,IAAI,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA,GAAA,OAAA,CAAA;AAAA,EAAA,OAAJA,IAAI,CAAA;AAAA,CAAA,CAAJA,IAAI,IAAA,EAAA,CAAA,CAAA;AAOT,MAAMC,WAAW,GAAIC,IAAa,IAAK;EACnC,OAAOA,IAAI,KAAK,IAAI,IAAIA,IAAI,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG,CAAA;AACrD,CAAC,CAAA;;AAED;AACO,MAAMC,kBAAkB,GAAIC,IAAoD,iBACnFC,gBAAU,CAAsC,CAACC,KAAK,EAAEC,QAAQ,KAAK;EACjE,MAAM;IACFC,EAAE;AACFC,IAAAA,OAAO,GAAG,KAAK;AACfC,IAAAA,QAAQ,GAAG,KAAK;AAChBC,IAAAA,IAAI,GAAG,QAAQ;IACfT,IAAI;IACJU,IAAI;IACJC,QAAQ;AACRC,IAAAA,MAAM,GAAG,KAAK;WACdC,OAAK;IACLC,SAAS;AACTC,IAAAA,UAAU,GAAG,IAAI;IACjB,GAAGC,IAAAA;AACP,GAAC,GAAGZ,KAAK,CAAA;EACT,MAAM,CAACa,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGC,cAAQ,CAAC,IAAI,CAAC,CAAA;EAC9D,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAGF,cAAQ,CAAC,KAAK,CAAC,CAAA;;AAE7D;EACA,MAAM,CAACG,6BAA6B,EAAEC,gCAAgC,CAAC,GAAGJ,cAAQ,CAAC,KAAK,CAAC,CAAA;AAEzF,EAAA,MAAMK,IAAI,GAAGC,aAAO,CAAC,MAAM,IAAIC,uBAAW,CAACb,OAAK,CAAC,EAAE,EAAE,CAAC,CAAA;AAEtD,EAAA,MAAMc,MAAM,GAAGC,oBAAS,EAAE,CAAA;AAC1B,EAAA,MAAMC,MAAM,GAAGvB,EAAE,IAAIqB,MAAM,CAAA;AAE3B,EAAA,MAAMG,QAAQ,GAAGpB,IAAI,KAAK,QAAQ,CAAC;AACnC,EAAA,MAAMqB,UAAU,GAAGrB,IAAI,KAAK,OAAO,IAAIE,MAAM,CAAA;EAC7C,MAAMoB,WAAW,GAAGD,UAAU,GAAGE,cAAO,CAACC,UAAU,GAAGC,SAAS,CAAA;EAE/D,MAAMC,cAAc,GAAG,CAACrB,UAAU,GAAGkB,cAAO,CAACI,aAAa,GAAGF,SAAS,CAAA;AACtE,EAAA,MAAMG,YAAY,GAAGrB,gBAAgB,IAAIG,eAAe,IAAIb,OAAO,GAAG0B,cAAO,CAACM,WAAW,GAAGJ,SAAS,CAAA;EACrG,MAAMK,iBAAiB,GAAG,CAACvB,gBAAgB,GAAGgB,cAAO,CAACQ,gBAAgB,GAAGN,SAAS,CAAA;EAClF,MAAMO,kBAAkB,GAAG,CAACtB,eAAe,GAAGa,cAAO,CAACU,iBAAiB,GAAGR,SAAS,CAAA;EACnF,MAAMS,eAAe,GAAGnC,IAAI,KAAK,QAAQ,GAAGwB,cAAO,CAACY,cAAc,GAAGV,SAAS,CAAA;EAC9E,MAAMW,gBAAgB,GAAGrC,IAAI,KAAK,SAAS,GAAGwB,cAAO,CAACc,eAAe,GAAGZ,SAAS,CAAA;AAEjF,EAAA,MAAMa,SAAS,GAAGC,YAAM,CAAqB,IAAI,CAAC,CAAA;AAClD,EAAA,MAAMC,QAAQ,GAAGD,YAAM,CAAqB,IAAI,CAAC,CAAA;AACjD,EAAA,MAAME,YAAY,GAAGF,YAAM,CAA2B,IAAI,CAAC,CAAA;AAE3D,EAAA,MAAMG,MAAM,GAAGC,iBAAW,CAAC,MAAM;AAC7B,IAAA,IAAI7C,QAAQ,IAAI,CAACwC,SAAS,CAACM,OAAO,EAAE;AAChC,MAAA,OAAA;AACJ,KAAA;IAEA,MAAM;AAAEC,MAAAA,UAAAA;KAAY,GAAGP,SAAS,CAACM,OAAO,CAAA;IACxC,MAAME,mBAAmB,GAAGC,4BAAsB,CAC9CjC,IAAI,CAACkC,KAAK,CAACC,KAAK,EAAE,CAACC,OAAO,EAAE,EAC5BL,UAAU,EACVvC,IAAI,CAAC6C,WACT,CAAC,CAAA;AAED,IAAA,IAAI,CAACL,mBAAmB,EAAEF,OAAO,EAAE;AAC/B,MAAA,OAAA;AACJ,KAAA;AAEA,IAAA,MAAMQ,aAAa,GAAGC,gBAAgB,CAACf,SAAS,CAACM,OAAO,CAAC,CAAA;AACzDN,IAAAA,SAAS,CAACM,OAAO,CAACU,QAAQ,CAAC;AACvBC,MAAAA,IAAI,EAAET,mBAAmB,CAACF,OAAO,CAACY,UAAU,GAAGC,QAAQ,CAACL,aAAa,CAACM,WAAW,EAAE,EAAE,CAAA;AACzF,KAAC,CAAC,CAAA;GACL,EAAE,CAAC5D,QAAQ,EAAEwC,SAAS,EAAExB,IAAI,CAAC,CAAC,CAAA;AAE/B,EAAA,MAAM6C,MAAM,GAAGhB,iBAAW,CAAC,MAAM;AAC7B,IAAA,IAAI7C,QAAQ,IAAI,CAACwC,SAAS,CAACM,OAAO,EAAE;AAChC,MAAA,OAAA;AACJ,KAAA;AAEA,IAAA,MAAMgB,WAAW,GAAGC,IAAI,CAACC,KAAK,CAACxB,SAAS,CAACM,OAAO,CAACC,UAAU,GAAGP,SAAS,CAACM,OAAO,CAACmB,WAAW,CAAC,CAAA;AAC5F,IAAA,MAAMC,kBAAkB,GAAGC,2BAAqB,CAACnD,IAAI,CAACkC,KAAK,EAAEY,WAAW,EAAEtD,IAAI,CAAC6C,WAAW,CAAC,CAAA;AAE3F,IAAA,IAAI,CAACa,kBAAkB,EAAEpB,OAAO,EAAE;AAC9B,MAAA,OAAA;AACJ,KAAA;AAEA,IAAA,IAAIrC,gBAAgB,EAAE;MAClBM,gCAAgC,CAAC,IAAI,CAAC,CAAA;AAC1C,KAAA;AAEA,IAAA,MAAMuC,aAAa,GAAGC,gBAAgB,CAACf,SAAS,CAACM,OAAO,CAAC,CAAA;AACzDN,IAAAA,SAAS,CAACM,OAAO,CAACU,QAAQ,CAAC;AACvBC,MAAAA,IAAI,EAAEM,IAAI,CAACC,KAAK,CACZE,kBAAkB,CAACpB,OAAO,CAACY,UAAU,GACjCQ,kBAAkB,CAACpB,OAAO,CAACsB,WAAW,GACtC5B,SAAS,CAACM,OAAO,CAACmB,WAAW,GAC7BN,QAAQ,CAACL,aAAa,CAACe,YAAY,EAAE,EAAE,CAC/C,CAAA;AACJ,KAAC,CAAC,CAAA;GACL,EAAE,CAAC5D,gBAAgB,EAAET,QAAQ,EAAEwC,SAAS,EAAExB,IAAI,CAAC,CAAC,CAAA;EAEjD,MAAMsD,cAAc,GAAGrD,aAAO,CAC1B,mBACIsD,sBAAA,CAAAC,aAAA,CAACC,iCAAW,EAAA;AACRC,IAAAA,IAAI,EAAC,QAAQ;AACb,IAAA,YAAA,EAAW,iFAAgB;AAC3BC,IAAAA,OAAO,EAAE/B,MAAO;AAChBgC,IAAAA,QAAQ,EAAE5E,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAE;AAC5BA,IAAAA,QAAQ,EAAEA,QAAS;AACnBsB,IAAAA,QAAQ,EAAEA,QAAS;AACnBuD,IAAAA,GAAG,EAAElC,YAAa;IAClBmC,WAAW,EAAA,IAAA;AAAA,GAAA,eAEXP,sBAAA,CAAAC,aAAA,CAACO,qCAAkB,EAAA;AAACvF,IAAAA,IAAI,EAAED,WAAW,CAACC,IAAI,CAAE;AAACwF,IAAAA,KAAK,EAAC,SAAA;AAAS,GAAE,CACrD,CAChB,EACD,CAACpC,MAAM,EAAEpD,IAAI,EAAEQ,QAAQ,EAAEsB,QAAQ,CACrC,CAAC,CAAA;EAED,MAAM2D,UAAU,GAAGhE,aAAO,CACtB,mBACIsD,sBAAA,CAAAC,aAAA,CAACC,iCAAW,EAAA;AACRC,IAAAA,IAAI,EAAC,QAAQ;AACb,IAAA,YAAA,EAAW,2EAAe;AAC1BC,IAAAA,OAAO,EAAEd,MAAO;AAChBe,IAAAA,QAAQ,EAAE5E,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAE;AAC5BA,IAAAA,QAAQ,EAAEA,QAAS;AACnBsB,IAAAA,QAAQ,EAAEA,QAAAA;AAAS,GAAA,eAEnBiD,sBAAA,CAAAC,aAAA,CAACU,uCAAmB,EAAA;AAAC1F,IAAAA,IAAI,EAAED,WAAW,CAACC,IAAI,CAAE;AAACwF,IAAAA,KAAK,EAAC,SAAA;AAAS,GAAE,CACtD,CAChB,EACD,CAACnB,MAAM,EAAErE,IAAI,EAAEQ,QAAQ,EAAEsB,QAAQ,CACrC,CAAC,CAAA;AAED,EAAA,MAAM6D,YAAY,GAAGtC,iBAAW,CAC3BuC,KAAiC,IAAW;IACzCA,KAAK,CAACC,eAAe,EAAE,CAAA;AACvB,IAAA,MAAM/B,aAAa,GAAGC,gBAAgB,CAAC6B,KAAK,CAACE,aAAa,CAAC,CAAA;IAC3D,MAAMC,aAAa,GAAG5B,QAAQ,CAACL,aAAa,CAACM,WAAW,EAAE,EAAE,CAAC,CAAA;IAC7D,MAAM4B,aAAa,GACfJ,KAAK,CAACE,aAAa,CAACG,WAAW,GAC/BL,KAAK,CAACE,aAAa,CAACrB,WAAW,GAC/BN,QAAQ,CAACL,aAAa,CAACe,YAAY,EAAE,EAAE,CAAC,CAAA;IAC5C,MAAMtB,UAAU,GAAGgB,IAAI,CAACC,KAAK,CAACoB,KAAK,CAACE,aAAa,CAACvC,UAAU,CAAC,CAAA;AAE7DrC,IAAAA,mBAAmB,CAACqC,UAAU,IAAIwC,aAAa,CAAC,CAAA;AAChD1E,IAAAA,kBAAkB,CAACkC,UAAU,IAAIyC,aAAa,CAAC,CAAA;AACnD,GAAC,EACD,CAAC9E,mBAAmB,EAAEG,kBAAkB,CAC5C,CAAC,CAAA;AAED,EAAA,MAAM6E,SAAS,GAAG7C,iBAAW,CACxBuC,KAAoC,IAAK;IACtC,IAAI/E,OAAK,KAAKsB,SAAS,EAAE;AACrB,MAAA,OAAA;AACJ,KAAA;IAEA,MAAMgE,QAAQ,GAAG,CAAC,CAAA;IAClB,MAAMC,QAAQ,GAAG5E,IAAI,CAACkC,KAAK,CAAC2C,MAAM,GAAG,CAAC,CAAA;AACtC,IAAA,IAAIC,SAAiB,CAAA;IAErB,QAAQV,KAAK,CAACW,OAAO;MACjB,KAAKzG,IAAI,CAAC0G,GAAG;AACTF,QAAAA,SAAS,GAAGF,QAAQ,CAAA;AACpB,QAAA,MAAA;MACJ,KAAKtG,IAAI,CAACmE,IAAI;QACVqC,SAAS,GAAGzF,OAAK,GAAGsF,QAAQ,GAAGtF,OAAK,GAAG,CAAC,GAAGA,OAAK,CAAA;AAChD,QAAA,MAAA;MACJ,KAAKf,IAAI,CAAC2G,KAAK;QACXH,SAAS,GAAGzF,OAAK,GAAGuF,QAAQ,GAAGvF,OAAK,GAAG,CAAC,GAAGA,OAAK,CAAA;AAChD,QAAA,MAAA;MACJ,KAAKf,IAAI,CAAC4G,IAAI;AACVJ,QAAAA,SAAS,GAAGH,QAAQ,CAAA;AACpB,QAAA,MAAA;AACJ,MAAA;AACI,QAAA,OAAA;AACR,KAAA;IAEA,IAAIG,SAAS,KAAKzF,OAAK,EAAE;MACrB+E,KAAK,CAACe,cAAc,EAAE,CAAA;MACtBnF,IAAI,CAACkC,KAAK,CAAC4C,SAAS,CAAC,CAAChD,OAAO,EAAEsD,KAAK,EAAE,CAAA;MACtCpF,IAAI,CAACkC,KAAK,CAAC4C,SAAS,CAAC,CAAChD,OAAO,EAAEuD,cAAc,CAAC;AAC1CC,QAAAA,KAAK,EAAE,SAAS;AAChBC,QAAAA,MAAM,EAAE,QAAQ;AAChBC,QAAAA,QAAQ,EAAE,QAAA;AACd,OAAC,CAAC,CAAA;AACN,KAAA;AACJ,GAAC,EACD,CAACnG,OAAK,CACV,CAAC,CAAA;AAEDoG,EAAAA,qBAAe,CAAC,MAAM;AAClB5F,IAAAA,kBAAkB,CAAC2B,SAAS,CAACM,OAAO,EAAE2C,WAAW,KAAKjD,SAAS,CAACM,OAAO,EAAEmB,WAAW,CAAC,CAAA;GACxF,EAAE,EAAE,CAAC,CAAA;;AAEN;AACAwC,EAAAA,qBAAe,CAAC,MAAM;AAClB,IAAA,IAAIhG,gBAAgB,IAAI,CAACK,6BAA6B,IAAI,CAAC0B,SAAS,CAACM,OAAO,IAAI,CAACH,YAAY,CAACG,OAAO,EAAE;AACnG,MAAA,OAAA;AACJ,KAAA;AACA,IAAA,MAAM4D,KAAK,GAAGnD,gBAAgB,CAACf,SAAS,CAACM,OAAO,CAAC,CAAA;AACjDN,IAAAA,SAAS,CAACM,OAAO,CAACU,QAAQ,CAAC;MACvBC,IAAI,EAAEM,IAAI,CAACC,KAAK,CACZxB,SAAS,CAACM,OAAO,CAACC,UAAU,GAAGJ,YAAY,CAACG,OAAO,CAACmB,WAAW,GAAGN,QAAQ,CAAC+C,KAAK,CAAC9C,WAAW,EAAE,EAAE,CACpG,CAAA;AACJ,KAAC,CAAC,CAAA;IACF7C,gCAAgC,CAAC,KAAK,CAAC,CAAA;GAC1C,EAAE,CAACN,gBAAgB,EAAEK,6BAA6B,EAAE0B,SAAS,EAAEG,YAAY,CAAC,CAAC,CAAA;AAE9E,EAAA,oBACI4B,sBAAA,CAAAC,aAAA,CAACmC,uBAAW,CAACC,QAAQ,EAAA;AAACC,IAAAA,KAAK,EAAE7F,IAAAA;AAAK,GAAA,eAC9BuD,sBAAA,CAAAC,aAAA,CAAC9E,IAAI,EAAAoH,iCAAA,CAAA;AACD5G,IAAAA,IAAI,EAAEA,IAAK;AACX6G,IAAAA,IAAI,EAAC,SAAA;AACL;AAAA;AACAvH,IAAAA,IAAI,EAAEA,IAAY;AAClBY,IAAAA,MAAM,EAAEA,MAAO;AACfN,IAAAA,EAAE,EAAEuB,MAAO;AACXwD,IAAAA,GAAG,EAAEhF,QAAS;AACdG,IAAAA,QAAQ,EAAEA,QAAS;AACnBM,IAAAA,SAAS,EAAE0G,UAAE,CACTxF,WAAW,EACXM,YAAY,EACZE,iBAAiB,EACjBE,kBAAkB,EAClBN,cAAc,EACdtB,SACJ,CAAE;AACFoF,IAAAA,SAAS,EAAEA,SAAAA;GACPlF,EAAAA,IAAI,CAEP,EAAA,CAACC,gBAAgB,IAAI6D,cAAc,eACpCC,sBAAA,CAAAC,aAAA,CAACyC,0CAAoB,EAAA;AACjB3G,IAAAA,SAAS,EAAE0G,UAAE,CAAC5E,eAAe,EAAEE,gBAAgB,CAAE;AACjDuC,IAAAA,GAAG,EAAErC,SAAqD;AAC1D0E,IAAAA,QAAQ,EAAE/B,YAAAA;AAAa,GAAA,eAEvBZ,sBAAA,CAAAC,aAAA,CAAC2C,mCAAa,EAAA;AAACtC,IAAAA,GAAG,EAAEnC,QAAAA;GACfvC,EAAAA,QACU,CACG,CAAC,EACtB,CAACS,eAAe,IAAIqE,UACnB,CACY,CAAC,CAAA;AAE/B,CAAC,EAAC;AAEC,MAAMmC,oBAAoB,GAAG;AAChCC,EAAAA,IAAI,EAAE,gBAAgB;AACtBC,EAAAA,GAAG,EAAE,KAAK;AACVC,EAAAA,MAAM,EAAE9H,kBAAkB;QAC1B+H,0BAAI;AACJC,EAAAA,UAAU,EAAE;AACRjI,IAAAA,IAAI,EAAE;AACFkI,MAAAA,GAAG,EAAEC,SAAAA;KACR;AACDzH,IAAAA,IAAI,EAAE;AACFwH,MAAAA,GAAG,EAAEE,WAAAA;KACR;AACD5H,IAAAA,QAAQ,EAAE;AACN0H,MAAAA,GAAG,EAAEG,WAAW;AAChBC,MAAAA,KAAK,EAAE,IAAA;KACV;AACD/H,IAAAA,OAAO,EAAE;AACL2H,MAAAA,GAAG,EAAEK,WAAU;AACfD,MAAAA,KAAK,EAAE,IAAA;KACV;AACD1H,IAAAA,MAAM,EAAE;AACJsH,MAAAA,GAAG,EAAEM,WAAAA;AACT,KAAA;GACH;AACDC,EAAAA,QAAQ,EAAE;AACN/H,IAAAA,IAAI,EAAE,OAAO;AACbV,IAAAA,IAAI,EAAE,IAAA;AACV,GAAA;AACJ;;;;;"}
|
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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"}
|
@@ -4,15 +4,15 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
5
5
|
var _rollupPluginBabelHelpers = require('../../../../../_virtual/_rollupPluginBabelHelpers.js');
|
6
6
|
var React = require('react');
|
7
|
-
var plasmaCore = require('@salutejs/plasma-core');
|
8
|
-
var tokens = require('../../../tokens.js');
|
9
7
|
var index$1 = require('../../../../../utils/index.js');
|
8
|
+
var tokens = require('../../../tokens.js');
|
10
9
|
var TabsContext = require('../../../TabsContext.js');
|
11
10
|
var index = require('../../../utils/index.js');
|
12
11
|
var VerticalTabs_styles = require('./VerticalTabs.styles.js');
|
13
12
|
var base = require('./variations/_size/base.js');
|
14
13
|
var base$1 = require('./variations/_view/base.js');
|
15
14
|
var base$2 = require('./variations/_disabled/base.js');
|
15
|
+
var react = require('../../../../../utils/react.js');
|
16
16
|
var IconDisclosureLeft = require('../../../../_Icon/Icons/IconDisclosureLeft.js');
|
17
17
|
var IconDisclosureRight = require('../../../../_Icon/Icons/IconDisclosureRight.js');
|
18
18
|
|
@@ -47,7 +47,7 @@ const verticalTabsRoot = Root => /*#__PURE__*/React.forwardRef((props, outerRef)
|
|
47
47
|
// Триггер доп. скролла при появлении левой стрелки, которая отъедает ширину scroll-контейнера
|
48
48
|
const [shouldTriggerAdditionalScroll, setShouldTriggerAdditionalScroll] = React.useState(false);
|
49
49
|
const refs = React.useMemo(() => new TabsContext.TabItemRefs(index$2), []);
|
50
|
-
const uniqId =
|
50
|
+
const uniqId = react.safeUseId();
|
51
51
|
const tabsId = id || uniqId;
|
52
52
|
const noDividerClass = !hasDivider ? tokens.classes.tabsNoDivider : undefined;
|
53
53
|
const hasTopArrowClass = !firstItemVisible ? tokens.classes.tabsHasTopArrow : undefined;
|
@@ -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,gBAAU,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,eAAS,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,sBAAA,CAAAC,aAAA,CAACC,oBAAI,EAAA;AACDN,IAAAA,GAAG,EAAEA,GAAI;AACTO,IAAAA,IAAI,EAAEC,MAAM,CAACtB,QAAQ,CAAE;AACvBuB,IAAAA,MAAM,EAAEtB,aAAc;AACtBuB,IAAAA,MAAM,eACFN,sBAAA,CAAAC,aAAA,CAACM,iCAAiB,EACdP,IAAAA,eAAAA,sBAAA,CAAAC,aAAA,CAACO,+BAAe,EAAAC,iCAAA,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,sBAAA,CAAAC,aAAA,CAACa,2CAAqB,EAAA;MAClBtB,IAAI,EAAEO,eAAe,EAAG;AACxBgB,MAAAA,KAAK,EAAC,SAAS;MACfC,kBAAkB,EAAEC,sBAAM,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;;;;"}
|