@alfalab/core-components-select 18.2.5 → 18.2.7
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/components/arrow/index.css +4 -4
- package/components/arrow/index.module.css.js +1 -1
- package/components/base-checkmark/index.css +5 -5
- package/components/base-checkmark/index.module.css.js +1 -1
- package/components/base-option/index.css +16 -16
- package/components/base-option/index.module.css.js +1 -1
- package/components/base-select/Component.d.ts +1 -1
- package/components/base-select/Component.js +2 -2
- package/components/base-select/Component.js.map +1 -1
- package/components/base-select/index.css +11 -11
- package/components/base-select/index.module.css.js +1 -1
- package/components/base-select/mobile.css +11 -11
- package/components/base-select/mobile.module.css.js +1 -1
- package/components/checkmark/index.css +9 -9
- package/components/checkmark/index.module.css.js +1 -1
- package/components/checkmark-mobile/index.css +5 -5
- package/components/checkmark-mobile/index.module.css.js +1 -1
- package/components/clear-button/index.css +4 -4
- package/components/clear-button/index.module.css.js +1 -1
- package/components/field/index.css +13 -13
- package/components/field/index.module.css.js +1 -1
- package/components/footer/index.css +4 -4
- package/components/footer/index.module.css.js +1 -1
- package/components/optgroup/index.css +4 -4
- package/components/optgroup/index.module.css.js +1 -1
- package/components/option/desktop/index.css +19 -19
- package/components/option/desktop/index.module.css.js +1 -1
- package/components/option/mobile/index.css +16 -16
- package/components/option/mobile/index.module.css.js +1 -1
- package/components/options-list/Component.d.ts +35 -2
- package/components/options-list/Component.js +6 -8
- package/components/options-list/Component.js.map +1 -1
- package/components/options-list/index.css +9 -9
- package/components/options-list/index.module.css.js +1 -1
- package/components/search/Component.js +15 -1
- package/components/search/Component.js.map +1 -1
- package/components/search/index.css +1 -1
- package/components/search/index.module.css.js +1 -1
- package/components/virtual-options-list/Component.d.ts +35 -2
- package/components/virtual-options-list/Component.js +6 -9
- package/components/virtual-options-list/Component.js.map +1 -1
- package/components/virtual-options-list/index.css +13 -13
- package/components/virtual-options-list/index.module.css.js +1 -1
- package/cssm/components/base-select/Component.d.ts +1 -1
- package/cssm/components/base-select/Component.js +2 -2
- package/cssm/components/base-select/Component.js.map +1 -1
- package/cssm/components/options-list/Component.d.ts +35 -2
- package/cssm/components/options-list/Component.js +8 -10
- package/cssm/components/options-list/Component.js.map +1 -1
- package/cssm/components/search/Component.js +15 -1
- package/cssm/components/search/Component.js.map +1 -1
- package/cssm/components/virtual-options-list/Component.d.ts +35 -2
- package/cssm/components/virtual-options-list/Component.js +8 -11
- package/cssm/components/virtual-options-list/Component.js.map +1 -1
- package/cssm/hooks/use-native-scrollbar.d.ts +4 -0
- package/cssm/hooks/use-native-scrollbar.js +33 -0
- package/cssm/hooks/use-native-scrollbar.js.map +1 -0
- package/cssm/presets/useSelectWithApply/hook.d.ts +137 -5
- package/cssm/presets/useSelectWithApply/options-list-with-apply/Component.d.ts +69 -3
- package/cssm/typings.d.ts +1 -1
- package/esm/components/arrow/index.css +4 -4
- package/esm/components/arrow/index.module.css.js +1 -1
- package/esm/components/base-checkmark/index.css +5 -5
- package/esm/components/base-checkmark/index.module.css.js +1 -1
- package/esm/components/base-option/index.css +16 -16
- package/esm/components/base-option/index.module.css.js +1 -1
- package/esm/components/base-select/Component.d.ts +1 -1
- package/esm/components/base-select/Component.js +2 -2
- package/esm/components/base-select/Component.js.map +1 -1
- package/esm/components/base-select/index.css +11 -11
- package/esm/components/base-select/index.module.css.js +1 -1
- package/esm/components/base-select/mobile.css +11 -11
- package/esm/components/base-select/mobile.module.css.js +1 -1
- package/esm/components/checkmark/index.css +9 -9
- package/esm/components/checkmark/index.module.css.js +1 -1
- package/esm/components/checkmark-mobile/index.css +5 -5
- package/esm/components/checkmark-mobile/index.module.css.js +1 -1
- package/esm/components/clear-button/index.css +4 -4
- package/esm/components/clear-button/index.module.css.js +1 -1
- package/esm/components/field/index.css +13 -13
- package/esm/components/field/index.module.css.js +1 -1
- package/esm/components/footer/index.css +4 -4
- package/esm/components/footer/index.module.css.js +1 -1
- package/esm/components/optgroup/index.css +4 -4
- package/esm/components/optgroup/index.module.css.js +1 -1
- package/esm/components/option/desktop/index.css +19 -19
- package/esm/components/option/desktop/index.module.css.js +1 -1
- package/esm/components/option/mobile/index.css +16 -16
- package/esm/components/option/mobile/index.module.css.js +1 -1
- package/esm/components/options-list/Component.d.ts +35 -2
- package/esm/components/options-list/Component.js +6 -8
- package/esm/components/options-list/Component.js.map +1 -1
- package/esm/components/options-list/index.css +9 -9
- package/esm/components/options-list/index.module.css.js +1 -1
- package/esm/components/search/Component.js +15 -1
- package/esm/components/search/Component.js.map +1 -1
- package/esm/components/search/index.css +1 -1
- package/esm/components/search/index.module.css.js +1 -1
- package/esm/components/virtual-options-list/Component.d.ts +35 -2
- package/esm/components/virtual-options-list/Component.js +6 -9
- package/esm/components/virtual-options-list/Component.js.map +1 -1
- package/esm/components/virtual-options-list/index.css +13 -13
- package/esm/components/virtual-options-list/index.module.css.js +1 -1
- package/esm/hooks/use-native-scrollbar.d.ts +4 -0
- package/esm/hooks/use-native-scrollbar.js +29 -0
- package/esm/hooks/use-native-scrollbar.js.map +1 -0
- package/esm/presets/useSelectWithApply/hook.d.ts +137 -5
- package/esm/presets/useSelectWithApply/options-list-with-apply/Component.d.ts +69 -3
- package/esm/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
- package/esm/presets/useSelectWithApply/options-list-with-apply/footer/index.module.css.js +1 -1
- package/esm/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
- package/esm/presets/useSelectWithApply/options-list-with-apply/header/index.module.css.js +1 -1
- package/esm/presets/useSelectWithLoading/index.css +1 -1
- package/esm/presets/useSelectWithLoading/index.module.css.js +1 -1
- package/esm/typings.d.ts +1 -1
- package/hooks/use-native-scrollbar.d.ts +4 -0
- package/hooks/use-native-scrollbar.js +33 -0
- package/hooks/use-native-scrollbar.js.map +1 -0
- package/modern/components/arrow/index.css +4 -4
- package/modern/components/arrow/index.module.css.js +1 -1
- package/modern/components/base-checkmark/index.css +5 -5
- package/modern/components/base-checkmark/index.module.css.js +1 -1
- package/modern/components/base-option/index.css +16 -16
- package/modern/components/base-option/index.module.css.js +1 -1
- package/modern/components/base-select/Component.d.ts +1 -1
- package/modern/components/base-select/Component.js +2 -2
- package/modern/components/base-select/Component.js.map +1 -1
- package/modern/components/base-select/index.css +11 -11
- package/modern/components/base-select/index.module.css.js +1 -1
- package/modern/components/base-select/mobile.css +11 -11
- package/modern/components/base-select/mobile.module.css.js +1 -1
- package/modern/components/checkmark/index.css +9 -9
- package/modern/components/checkmark/index.module.css.js +1 -1
- package/modern/components/checkmark-mobile/index.css +5 -5
- package/modern/components/checkmark-mobile/index.module.css.js +1 -1
- package/modern/components/clear-button/index.css +4 -4
- package/modern/components/clear-button/index.module.css.js +1 -1
- package/modern/components/field/index.css +13 -13
- package/modern/components/field/index.module.css.js +1 -1
- package/modern/components/footer/index.css +4 -4
- package/modern/components/footer/index.module.css.js +1 -1
- package/modern/components/optgroup/index.css +4 -4
- package/modern/components/optgroup/index.module.css.js +1 -1
- package/modern/components/option/desktop/index.css +19 -19
- package/modern/components/option/desktop/index.module.css.js +1 -1
- package/modern/components/option/mobile/index.css +16 -16
- package/modern/components/option/mobile/index.module.css.js +1 -1
- package/modern/components/options-list/Component.d.ts +35 -2
- package/modern/components/options-list/Component.js +6 -6
- package/modern/components/options-list/Component.js.map +1 -1
- package/modern/components/options-list/index.css +9 -9
- package/modern/components/options-list/index.module.css.js +1 -1
- package/modern/components/search/Component.js +17 -1
- package/modern/components/search/Component.js.map +1 -1
- package/modern/components/search/index.css +1 -1
- package/modern/components/search/index.module.css.js +1 -1
- package/modern/components/virtual-options-list/Component.d.ts +35 -2
- package/modern/components/virtual-options-list/Component.js +6 -7
- package/modern/components/virtual-options-list/Component.js.map +1 -1
- package/modern/components/virtual-options-list/index.css +13 -13
- package/modern/components/virtual-options-list/index.module.css.js +1 -1
- package/modern/hooks/use-native-scrollbar.d.ts +4 -0
- package/modern/hooks/use-native-scrollbar.js +27 -0
- package/modern/hooks/use-native-scrollbar.js.map +1 -0
- package/modern/presets/useSelectWithApply/hook.d.ts +137 -5
- package/modern/presets/useSelectWithApply/options-list-with-apply/Component.d.ts +69 -3
- package/modern/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
- package/modern/presets/useSelectWithApply/options-list-with-apply/footer/index.module.css.js +1 -1
- package/modern/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
- package/modern/presets/useSelectWithApply/options-list-with-apply/header/index.module.css.js +1 -1
- package/modern/presets/useSelectWithLoading/index.css +1 -1
- package/modern/presets/useSelectWithLoading/index.module.css.js +1 -1
- package/modern/typings.d.ts +1 -1
- package/moderncssm/components/base-select/Component.d.ts +1 -1
- package/moderncssm/components/base-select/Component.js +2 -2
- package/moderncssm/components/base-select/Component.js.map +1 -1
- package/moderncssm/components/options-list/Component.d.ts +35 -2
- package/moderncssm/components/options-list/Component.js +6 -6
- package/moderncssm/components/options-list/Component.js.map +1 -1
- package/moderncssm/components/search/Component.js +17 -1
- package/moderncssm/components/search/Component.js.map +1 -1
- package/moderncssm/components/virtual-options-list/Component.d.ts +35 -2
- package/moderncssm/components/virtual-options-list/Component.js +6 -7
- package/moderncssm/components/virtual-options-list/Component.js.map +1 -1
- package/moderncssm/hooks/use-native-scrollbar.d.ts +4 -0
- package/moderncssm/hooks/use-native-scrollbar.js +27 -0
- package/moderncssm/hooks/use-native-scrollbar.js.map +1 -0
- package/moderncssm/presets/useSelectWithApply/hook.d.ts +137 -5
- package/moderncssm/presets/useSelectWithApply/options-list-with-apply/Component.d.ts +69 -3
- package/moderncssm/typings.d.ts +1 -1
- package/package.json +4 -4
- package/presets/useSelectWithApply/hook.d.ts +137 -5
- package/presets/useSelectWithApply/options-list-with-apply/Component.d.ts +69 -3
- package/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
- package/presets/useSelectWithApply/options-list-with-apply/footer/index.module.css.js +1 -1
- package/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
- package/presets/useSelectWithApply/options-list-with-apply/header/index.module.css.js +1 -1
- package/presets/useSelectWithLoading/index.css +1 -1
- package/presets/useSelectWithLoading/index.module.css.js +1 -1
- package/src/components/base-select/Component.tsx +2 -0
- package/src/components/options-list/Component.tsx +6 -8
- package/src/components/search/Component.tsx +29 -10
- package/src/components/virtual-options-list/Component.tsx +6 -9
- package/src/hooks/use-native-scrollbar.ts +36 -0
- package/src/typings.ts +1 -1
- package/typings.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../../../src/components/base-select/Component.tsx"],"sourcesContent":["/* eslint-disable no-nested-ternary */\nimport React, {\n type AriaAttributes,\n type FocusEvent,\n forwardRef,\n type KeyboardEvent,\n type MouseEvent,\n type RefAttributes,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport { ResizeObserver as ResizeObserverPolyfill } from '@juggle/resize-observer';\nimport cn from 'classnames';\nimport { compute } from 'compute-scroll-into-view';\nimport {\n useCombobox,\n useMultipleSelection,\n type UseMultipleSelectionProps,\n type UseMultipleSelectionState,\n} from 'downshift';\n\nimport { fnUtils, getDataTestId, isClient } from '@alfalab/core-components-shared';\nimport { useLayoutEffect_SAFE_FOR_SSR } from '@alfalab/hooks';\n\nimport { SIZE_TO_CLASSNAME_MAP } from '../../consts';\nimport {\n type AnyObject,\n type OptionShape,\n type OptionsListProps,\n type SearchProps,\n} from '../../typings';\nimport {\n defaultAccessor,\n defaultFilterFn,\n defaultGroupAccessor,\n isGroup,\n processOptions,\n} from '../../utils';\nimport { NativeSelect } from '../native-select';\n\nimport { type ComponentProps } from './types/component-types';\n\nimport styles from './index.module.css';\nimport mobileStyles from './mobile.module.css';\n\nconst itemToString = (option: OptionShape | null) => (option ? option.key : '');\n\nconst isItemDisabled = (option: OptionShape | null) => Boolean(option?.disabled);\n\nexport const BaseSelect = forwardRef<unknown, ComponentProps>(\n // TODO: 😭\n // eslint-disable-next-line complexity\n (props, ref) => {\n const {\n dataTestId,\n className,\n fieldClassName,\n optionGroupClassName,\n optionsListClassName,\n optionClassName,\n popperClassName,\n options,\n autocomplete = false,\n multiple = false,\n allowUnselect = false,\n disabled = false,\n closeOnSelect = !multiple,\n circularNavigation = false,\n nativeSelect = false,\n defaultOpen = false,\n open: openProp,\n popoverPosition = 'bottom-start',\n preventFlip = true,\n optionsListWidth = 'content',\n name,\n id,\n selected,\n size = 48,\n optionsSize = size,\n error,\n hint,\n block,\n label,\n labelView,\n placeholder,\n fieldProps = {},\n optionsListProps = {},\n optionProps = {},\n groupOptionProps = {},\n searchProps = {},\n showSearch = false,\n valueRenderer,\n onChange,\n onOpen,\n onFocus,\n onBlur,\n onScroll,\n onClear,\n clear,\n Arrow,\n Field = () => null,\n OptionsList = () => null,\n Optgroup = () => null,\n Option = () => null,\n Search = () => null,\n updatePopover,\n zIndexPopover,\n showEmptyOptionsList = false,\n visibleOptions,\n view,\n isBottomSheet = true,\n footer,\n swipeable,\n modalProps,\n popoverProps,\n modalFooterProps,\n modalHeaderProps,\n bottomSheetProps,\n Popover,\n ModalMobile,\n BottomSheet,\n limitDynamicOptionGroupSize,\n environment = isClient() ? window : undefined,\n } = props;\n const shouldSearchBlurRef = useRef(true);\n const rootRef = useRef<HTMLDivElement>(null);\n const fieldRef = useRef<HTMLInputElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const initiatorRef = useRef<OptionShape | null>(null);\n const searchRef = useRef<HTMLInputElement>(null);\n const scrollableContainerRef = useRef<HTMLDivElement>(null);\n const onOpenRef = useRef(onOpen);\n\n const [searchState, setSearchState] = React.useState('');\n\n const [search, setSearch] =\n typeof searchProps?.value === 'string'\n ? [searchProps.value, searchProps.onChange]\n : [searchState, setSearchState];\n\n const accessor = searchProps.accessor || defaultAccessor;\n const filterFn = searchProps.filterFn || defaultFilterFn;\n const filterGroup = searchProps.filterGroup ?? false;\n const groupAccessor = searchProps.groupAccessor ?? defaultGroupAccessor;\n\n const { filteredOptions, flatOptions, selectedOptions } = useMemo(\n () =>\n processOptions(\n options,\n selected,\n (option) => {\n if (isGroup(option)) {\n const groupAccessorValue = groupAccessor(option);\n\n return (\n typeof groupAccessorValue === 'string' &&\n filterFn(groupAccessorValue, search)\n );\n }\n\n return filterFn(accessor(option), search);\n },\n filterGroup,\n ),\n [options, selected, filterFn, accessor, search, filterGroup, groupAccessor],\n );\n\n const scrollIntoView = (node: HTMLElement) => {\n if (!node || view === 'mobile') return;\n\n requestAnimationFrame(() => {\n const actions = compute(node, {\n boundary: listRef.current,\n block: 'nearest',\n scrollMode: 'if-needed',\n });\n\n actions.forEach((action) => {\n const { el, top } = action;\n\n el.scrollTop = top;\n });\n });\n };\n\n const useMultipleSelectionProps: UseMultipleSelectionProps<OptionShape> = {\n itemToString,\n onSelectedItemsChange: (changes) => {\n if (onChange) {\n const { selectedItems = [] } = changes;\n\n onChange({\n selectedMultiple: selectedItems,\n selected: selectedItems.length ? selectedItems[0] : null,\n initiator: initiatorRef.current,\n name,\n });\n\n initiatorRef.current = null;\n }\n },\n stateReducer: (state, actionAndChanges) => {\n const { type, changes } = actionAndChanges;\n\n if (\n type === useMultipleSelection.stateChangeTypes.DropdownKeyDownBackspace &&\n (!allowUnselect ||\n environment?.document.activeElement?.isSameNode(searchRef.current))\n ) {\n return state;\n }\n\n return changes as UseMultipleSelectionState<OptionShape>;\n },\n };\n\n if (selected !== undefined) {\n useMultipleSelectionProps.selectedItems = selectedOptions;\n }\n\n onOpenRef.current = onOpen;\n\n const {\n selectedItems,\n addSelectedItem,\n setSelectedItems,\n removeSelectedItem,\n getDropdownProps,\n } = useMultipleSelection(useMultipleSelectionProps);\n\n const {\n isOpen: open,\n getMenuProps,\n getInputProps,\n getItemProps,\n getLabelProps,\n highlightedIndex,\n toggleMenu,\n openMenu,\n closeMenu,\n setHighlightedIndex,\n } = useCombobox<OptionShape>({\n id,\n isOpen: openProp,\n items: flatOptions,\n itemToString,\n isItemDisabled,\n defaultHighlightedIndex: selectedItems.length === 0 ? -1 : undefined,\n scrollIntoView,\n environment,\n onSelectedItemChange: (changes) => {\n const selectedItem = changes.selectedItem || initiatorRef.current;\n\n if (selectedItem && !selectedItem.disabled) {\n const alreadySelected = selectedItems.includes(selectedItem);\n const allowRemove = allowUnselect || (multiple && selectedItems.length > 1);\n\n if (alreadySelected && allowRemove) {\n removeSelectedItem(selectedItem);\n }\n\n if (!alreadySelected) {\n if (multiple) {\n addSelectedItem(selectedItem);\n } else {\n setSelectedItems([selectedItem]);\n }\n }\n }\n },\n onIsOpenChange: (changes) => {\n if (onOpenRef.current) {\n /**\n * Вызываем обработчик асинхронно.\n *\n * Иначе при клике вне открытого селекта сначала сработает onOpen, который закроет селект,\n * А затем сработает onClick кнопки открытия\\закрытия с open=false и в итоге селект откроется снова.\n */\n setTimeout(() => {\n onOpenRef.current?.({\n open: changes.isOpen,\n name,\n });\n }, 0);\n }\n\n if (showSearch) {\n if (changes.isOpen && view === 'desktop') {\n setTimeout(() => {\n searchRef.current?.focus();\n }, 0);\n } else {\n setSearch?.('');\n }\n }\n },\n stateReducer: (state, actionAndChanges) => {\n const { type, changes } = actionAndChanges;\n\n switch (type) {\n case useCombobox.stateChangeTypes.InputKeyDownArrowDown:\n if (\n !circularNavigation &&\n state.highlightedIndex === flatOptions.length - 1\n ) {\n return { ...changes, highlightedIndex: state.highlightedIndex };\n }\n\n return changes;\n case useCombobox.stateChangeTypes.InputKeyDownArrowUp:\n if (!circularNavigation && state.highlightedIndex === 0) {\n return { ...changes, highlightedIndex: state.highlightedIndex };\n }\n\n return changes;\n\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n case useCombobox.stateChangeTypes.ItemClick: {\n const { selectedItem } = changes;\n\n initiatorRef.current = selectedItem || null;\n\n return {\n ...changes,\n selectedItem: state.selectedItem === selectedItem ? null : selectedItem,\n isOpen: !closeOnSelect || (view === 'mobile' && multiple),\n // при closeOnSelect === false - сохраняем подсвеченный индекс\n highlightedIndex:\n state.isOpen && !closeOnSelect\n ? state.highlightedIndex\n : changes.highlightedIndex,\n };\n }\n default:\n return changes;\n }\n },\n });\n\n useEffect(() => {\n /*\n * При изменении openProp, состояние внутри downshift в useEnhancedReducer не меняется, поэтому меняем его таким способом\n * Скорее всего это исправят в будущих версиях downshift\n */\n if (openProp !== undefined) {\n if (openProp) {\n openMenu();\n } else {\n closeMenu();\n }\n }\n }, [openProp, openMenu, closeMenu]);\n\n const inputProps = getInputProps(getDropdownProps({ ref: mergeRefs([ref, fieldRef]) }));\n const { ref: menuRef, ...menuProps } = getMenuProps(\n { ref: listRef },\n { suppressRefError: true },\n );\n\n const handleEntered = (node: HTMLElement, isAppearing: boolean) => {\n if (showSearch) searchRef.current?.focus();\n\n if (isBottomSheet) {\n bottomSheetProps?.transitionProps?.onEntered?.(node, isAppearing);\n } else {\n modalProps?.transitionProps?.onEntered?.(node, isAppearing);\n }\n };\n\n const handleFieldFocus = (event: FocusEvent<HTMLDivElement | HTMLInputElement>) => {\n if (onFocus) onFocus(event);\n\n if (autocomplete && !open) {\n openMenu();\n }\n };\n\n const handleFieldBlur = (event: FocusEvent<HTMLDivElement | HTMLInputElement>) => {\n if (view === 'desktop') {\n const isNextFocusInsideField = fieldRef.current?.contains(\n (event.relatedTarget || document.activeElement) as HTMLElement,\n );\n\n const isNextFocusInsideList = listRef.current?.contains(\n (event.relatedTarget || document.activeElement) as HTMLElement,\n );\n\n if (!isNextFocusInsideField && !isNextFocusInsideList) {\n if (onBlur) onBlur(event);\n\n inputProps.onBlur?.(event);\n }\n }\n\n if (view === 'mobile' && !open && onBlur) onBlur(event);\n };\n\n const handleFieldKeyDown = (event: KeyboardEvent<HTMLDivElement | HTMLInputElement>) => {\n inputProps.onKeyDown?.(event);\n\n // https://caniuse.com/?search=KeyboardEvent.key\n const isKeyUnsupported = event.key === 'Unidentified';\n\n if (\n autocomplete &&\n !open &&\n (isKeyUnsupported || event.key.length === 1 || event.key === 'Backspace')\n ) {\n // Для автокомплита - открываем меню при начале ввода\n openMenu();\n }\n\n if (\n [' ', 'Enter'].includes(event.key) &&\n !autocomplete &&\n !nativeSelect &&\n (event.target as HTMLElement).tagName !== 'INPUT' &&\n (event.target as HTMLElement).tagName !== 'BUTTON' &&\n (event.target as HTMLElement).tagName !== 'TEXTAREA'\n ) {\n // Открываем\\закрываем меню по нажатию enter или пробела\n event.preventDefault();\n if (!open || highlightedIndex === -1) toggleMenu();\n }\n };\n\n const handleFieldClick = (event: MouseEvent) => {\n if (!autocomplete || (event.target as HTMLElement).tagName !== 'INPUT') {\n toggleMenu();\n } else {\n openMenu();\n }\n };\n\n const handleNativeSelectChange = useCallback(\n (event: React.ChangeEvent<HTMLSelectElement>) => {\n setSelectedItems(\n // eslint-disable-next-line\n [...(event.target.options as any)].reduce(\n (acc, option, index) =>\n option.selected ? acc.concat(flatOptions[index]) : acc,\n [],\n ),\n );\n },\n [flatOptions, setSelectedItems],\n );\n\n const getOptionProps = (option: OptionShape, index: number) => ({\n ...(optionProps as object),\n mobile: view === 'mobile',\n className: cn(optionClassName, {\n [mobileStyles.option]: view === 'mobile',\n }),\n innerProps: getItemProps({\n index,\n item: option,\n onMouseDown: (event: MouseEvent) => event.preventDefault(),\n onClick: () => {\n if (view === 'mobile' || !showSearch || multiple) return;\n shouldSearchBlurRef.current = false;\n searchRef.current?.blur();\n shouldSearchBlurRef.current = true;\n fieldRef.current?.focus();\n },\n }),\n multiple,\n index,\n option,\n size: optionsSize,\n disabled: option.disabled,\n highlighted: index === highlightedIndex,\n selected: selectedItems.some(({ key }) => key === option.key),\n dataTestId: getDataTestId(dataTestId, 'option'),\n });\n\n useEffect(() => {\n if (defaultOpen) openMenu();\n }, [defaultOpen, openMenu]);\n\n useEffect(() => {\n if (openProp) {\n openMenu();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const calcOptionsListWidth = useCallback(() => {\n if (view === 'desktop' && listRef.current) {\n const widthAttr = optionsListWidth === 'field' ? 'width' : 'minWidth';\n\n const optionsListMinWidth = rootRef.current\n ? rootRef.current.getBoundingClientRect().width\n : 0;\n\n listRef.current.removeAttribute('style');\n listRef.current.style[widthAttr] = `${optionsListMinWidth}px`;\n }\n }, [view, optionsListWidth]);\n\n useEffect(() => {\n if (view === 'desktop') {\n const ResizeObserver = window.ResizeObserver || ResizeObserverPolyfill;\n const observer = new ResizeObserver(calcOptionsListWidth);\n\n if (rootRef.current) {\n observer.observe(rootRef.current);\n }\n\n return () => {\n observer.disconnect();\n };\n }\n\n return fnUtils.noop;\n }, [view, calcOptionsListWidth, open, optionsListWidth]);\n\n useLayoutEffect_SAFE_FOR_SSR(calcOptionsListWidth, [\n open,\n optionsListWidth,\n filteredOptions,\n selectedItems,\n ]);\n\n const renderValue = () =>\n selectedItems.map((option) => (\n <input type='hidden' name={name} value={option.key} key={option.key} />\n ));\n\n const renderNativeSelect = () => {\n const value = multiple\n ? selectedItems.map((option) => option.key)\n : selectedItems[0]?.key;\n\n return (\n <NativeSelect\n {...(menuProps as AnyObject)}\n className={styles.nativeSelect}\n disabled={disabled}\n multiple={multiple}\n name={name}\n value={value}\n onChange={handleNativeSelectChange}\n options={filteredOptions}\n />\n );\n };\n\n const handleFieldClear = (event: MouseEvent<HTMLButtonElement>) => {\n setSelectedItems([]);\n onClear?.(event);\n };\n\n const renderSearch = () => {\n if (!showSearch) return null;\n\n const handleClear: SearchProps['onClear'] = (event) => {\n setSearch?.('');\n searchProps?.componentProps?.onClear?.(event);\n };\n\n const handleChange: SearchProps['onChange'] = (event, payload) => {\n setSearch?.(payload.value);\n searchProps?.componentProps?.onChange?.(event, payload);\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n if (!shouldSearchBlurRef.current) return;\n searchProps.componentProps?.onBlur?.(event);\n handleFieldBlur(event);\n };\n\n return (\n <Search\n {...searchProps?.componentProps}\n onBlur={handleBlur}\n value={search}\n onChange={handleChange}\n dataTestId={getDataTestId(dataTestId, 'search')}\n onClear={handleClear}\n className={cn(\n searchProps?.componentProps?.className,\n {\n [styles.search]: view === 'desktop',\n [mobileStyles.search]: view === 'mobile',\n },\n size && styles[SIZE_TO_CLASSNAME_MAP[size]],\n )}\n ref={mergeRefs([searchRef, searchProps?.componentProps?.ref || null])}\n />\n );\n };\n\n const { header, emptyPlaceholder } = optionsListProps as OptionsListProps;\n\n const renderOptionsListHeader = () => {\n if (header || (view === 'desktop' && showSearch)) {\n return (\n <React.Fragment>\n {header}\n {view === 'desktop' && renderSearch()}\n </React.Fragment>\n );\n }\n\n return null;\n };\n\n const renderEmptyPlaceholder = () => {\n if (emptyPlaceholder) {\n return emptyPlaceholder;\n }\n\n if (showSearch) {\n return <div className={styles.emptySearchPlaceholder}>Ничего не нашлось</div>;\n }\n\n return undefined;\n };\n\n const renderOptionsList = () => {\n if (flatOptions.length === 0 && !showEmptyOptionsList && !showSearch) return null;\n\n const listProps = optionsListProps as OptionsListProps & RefAttributes<HTMLDivElement>;\n\n return (\n <div\n {...menuProps}\n ref={view === 'desktop' ? menuRef : undefined}\n className={cn(\n optionsListClassName,\n view === 'mobile' && mobileStyles.optionsListWrapper,\n view === 'desktop' && styles.optionsListWrapper,\n )}\n >\n <OptionsList\n {...listProps}\n ref={view === 'desktop' ? listProps.ref : scrollableContainerRef}\n setHighlightedIndex={view === 'desktop' ? setHighlightedIndex : undefined}\n className={cn(\n { [mobileStyles.optionsList]: view === 'mobile' },\n listProps.className,\n )}\n scrollbarClassName={cn(\n { [mobileStyles.scrollbar]: view === 'mobile' },\n listProps.scrollbarClassName,\n )}\n optionsListWidth={optionsListWidth}\n flatOptions={flatOptions}\n highlightedIndex={highlightedIndex}\n open={open}\n size={size}\n options={filteredOptions}\n Optgroup={Optgroup}\n Option={Option}\n selectedItems={selectedItems}\n setSelectedItems={setSelectedItems}\n toggleMenu={toggleMenu}\n groupOptionProps={groupOptionProps}\n getOptionProps={getOptionProps}\n visibleOptions={view === 'desktop' ? visibleOptions : 0}\n dataTestId={getDataTestId(dataTestId, 'options-list')}\n header={renderOptionsListHeader()}\n optionGroupClassName={cn(optionGroupClassName, {\n [mobileStyles.optionGroup]: view === 'mobile',\n })}\n emptyPlaceholder={renderEmptyPlaceholder()}\n onScroll={onScroll}\n search={search}\n multiple={multiple}\n limitDynamicOptionGroupSize={limitDynamicOptionGroupSize}\n />\n {view === 'desktop' && <div className={styles.optionsListBorder} />}\n </div>\n );\n };\n\n const renderInPopover = () => {\n if (!nativeSelect && Popover) {\n return (\n <Popover\n {...popoverProps}\n open={open}\n withTransition={false}\n anchorElement={fieldRef.current as HTMLElement}\n position={popoverPosition}\n preventFlip={preventFlip}\n popperClassName={cn(styles.popoverInner, popperClassName)}\n update={updatePopover}\n zIndex={zIndexPopover}\n >\n {renderOptionsList()}\n </Popover>\n );\n }\n\n return null;\n };\n\n const renderInBottomSheet = () => {\n if (!nativeSelect && BottomSheet) {\n const bottomAddons = bottomSheetProps?.bottomAddons;\n\n return (\n <BottomSheet\n dataTestId={getDataTestId(dataTestId, 'bottom-sheet')}\n open={open}\n className={mobileStyles.sheet}\n contentClassName={mobileStyles.sheetContent}\n containerClassName={mobileStyles.sheetContainer}\n title={label || placeholder}\n actionButton={footer}\n stickyHeader={true}\n hasCloser={true}\n swipeable={swipeable}\n initialHeight={showSearch ? 'full' : 'default'}\n {...bottomSheetProps}\n sheetContainerRef={menuRef}\n scrollableContainerRef={scrollableContainerRef}\n onClose={() => {\n closeMenu();\n bottomSheetProps?.onClose?.();\n }}\n transitionProps={{\n ...bottomSheetProps?.transitionProps,\n onEntered: handleEntered,\n }}\n bottomAddons={\n <React.Fragment>\n {renderSearch()}\n {typeof bottomAddons === 'function'\n ? bottomAddons(flatOptions)\n : bottomAddons}\n </React.Fragment>\n }\n containerProps={{\n ...bottomSheetProps?.containerProps,\n onScroll,\n }}\n >\n {renderOptionsList()}\n </BottomSheet>\n );\n }\n\n return null;\n };\n\n const renderInModalMobile = () => {\n if (!nativeSelect && ModalMobile) {\n const bottomAddons = modalHeaderProps?.bottomAddons;\n\n return (\n <ModalMobile\n dataTestId={getDataTestId(dataTestId, 'modal')}\n open={open}\n hasCloser={true}\n {...modalProps}\n componentRef={menuRef}\n onClose={(...args) => {\n closeMenu();\n modalProps?.onClose?.(...args);\n }}\n contentClassName={cn(\n mobileStyles.sheetContent,\n modalProps?.contentClassName,\n )}\n ref={mergeRefs([\n scrollableContainerRef,\n modalProps?.ref as React.Ref<HTMLDivElement>,\n ])}\n wrapperProps={{\n ...modalProps?.wrapperProps,\n onScroll,\n }}\n transitionProps={{\n ...modalProps?.transitionProps,\n onEntered: handleEntered,\n }}\n >\n <ModalMobile.Header\n hasCloser={true}\n sticky={true}\n {...modalHeaderProps}\n title={undefined}\n bottomAddons={\n <React.Fragment>\n {renderSearch()}\n {typeof bottomAddons === 'function'\n ? bottomAddons(flatOptions)\n : bottomAddons}\n </React.Fragment>\n }\n >\n {modalHeaderProps?.title || label || placeholder}\n </ModalMobile.Header>\n\n <ModalMobile.Content flex={true} className={mobileStyles.modalContent}>\n {renderOptionsList()}\n </ModalMobile.Content>\n\n {modalFooterProps?.children && <ModalMobile.Footer {...modalFooterProps} />}\n </ModalMobile>\n );\n }\n\n return null;\n };\n\n return (\n <div\n {...(disabled && { 'aria-disabled': true })}\n aria-expanded={inputProps['aria-expanded']}\n aria-haspopup='listbox'\n role={inputProps.role}\n className={cn(styles.component, { [styles.block]: block }, className)}\n ref={rootRef}\n onKeyDown={disabled ? undefined : handleFieldKeyDown}\n tabIndex={-1}\n data-test-id={getDataTestId(dataTestId)}\n >\n {nativeSelect && renderNativeSelect()}\n\n <Field\n selectedMultiple={selectedItems}\n selected={selectedItems[0]}\n setSelectedItems={setSelectedItems}\n toggleMenu={toggleMenu}\n multiple={multiple}\n open={open}\n disabled={disabled}\n size={size}\n placeholder={placeholder}\n label={label && <span {...getLabelProps()}>{label}</span>}\n labelView={labelView}\n Arrow={Arrow && <Arrow open={open} size={size} disabled={disabled} />}\n error={error}\n hint={hint}\n valueRenderer={valueRenderer}\n className={fieldClassName}\n clear={clear}\n onClear={handleFieldClear}\n innerProps={{\n onBlur: handleFieldBlur,\n onFocus: disabled ? undefined : handleFieldFocus,\n onClick: disabled ? undefined : handleFieldClick,\n tabIndex: disabled ? undefined : nativeSelect ? -1 : 0,\n ref: inputProps.ref,\n id: inputProps.id,\n 'aria-label': (optionProps as AriaAttributes)['aria-label'],\n 'aria-labelledby': inputProps['aria-labelledby'],\n 'aria-controls': inputProps['aria-controls'],\n 'aria-autocomplete': autocomplete\n ? inputProps['aria-autocomplete']\n : undefined,\n }}\n dataTestId={getDataTestId(dataTestId, 'field')}\n {...(fieldProps as AnyObject)}\n />\n\n {name && !nativeSelect && renderValue()}\n\n {view === 'desktop' && renderInPopover()}\n {view === 'mobile' &&\n (isBottomSheet ? renderInBottomSheet() : renderInModalMobile())}\n </div>\n );\n },\n);\n"],"names":["forwardRef","isClient","useRef","React","defaultAccessor","defaultFilterFn","defaultGroupAccessor","useMemo","processOptions","isGroup","compute","useMultipleSelection","useCombobox","__assign","useEffect","mergeRefs","__rest","useCallback","__spreadArray","cn","mobileStyles","getDataTestId","ResizeObserverPolyfill","fnUtils","useLayoutEffect_SAFE_FOR_SSR","NativeSelect","styles","SIZE_TO_CLASSNAME_MAP"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../../../src/components/base-select/Component.tsx"],"sourcesContent":["/* eslint-disable no-nested-ternary */\nimport React, {\n type AriaAttributes,\n type FocusEvent,\n forwardRef,\n type KeyboardEvent,\n type MouseEvent,\n type RefAttributes,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport { ResizeObserver as ResizeObserverPolyfill } from '@juggle/resize-observer';\nimport cn from 'classnames';\nimport { compute } from 'compute-scroll-into-view';\nimport {\n useCombobox,\n useMultipleSelection,\n type UseMultipleSelectionProps,\n type UseMultipleSelectionState,\n} from 'downshift';\n\nimport { fnUtils, getDataTestId, isClient } from '@alfalab/core-components-shared';\nimport { useLayoutEffect_SAFE_FOR_SSR } from '@alfalab/hooks';\n\nimport { SIZE_TO_CLASSNAME_MAP } from '../../consts';\nimport {\n type AnyObject,\n type OptionShape,\n type OptionsListProps,\n type SearchProps,\n} from '../../typings';\nimport {\n defaultAccessor,\n defaultFilterFn,\n defaultGroupAccessor,\n isGroup,\n processOptions,\n} from '../../utils';\nimport { NativeSelect } from '../native-select';\n\nimport { type ComponentProps } from './types/component-types';\n\nimport styles from './index.module.css';\nimport mobileStyles from './mobile.module.css';\n\nconst itemToString = (option: OptionShape | null) => (option ? option.key : '');\n\nconst isItemDisabled = (option: OptionShape | null) => Boolean(option?.disabled);\n\nexport const BaseSelect = forwardRef<unknown, ComponentProps>(\n // TODO: 😭\n // eslint-disable-next-line complexity\n (props, ref) => {\n const {\n dataTestId,\n className,\n fieldClassName,\n optionGroupClassName,\n optionsListClassName,\n optionClassName,\n popperClassName,\n options,\n autocomplete = false,\n multiple = false,\n allowUnselect = false,\n disabled = false,\n closeOnSelect = !multiple,\n circularNavigation = false,\n nativeSelect = false,\n defaultOpen = false,\n open: openProp,\n popoverPosition = 'bottom-start',\n preventFlip = true,\n optionsListWidth = 'content',\n name,\n id,\n selected,\n size = 48,\n optionsSize = size,\n error,\n hint,\n block,\n label,\n labelView,\n placeholder,\n fieldProps = {},\n optionsListProps = {},\n optionProps = {},\n groupOptionProps = {},\n searchProps = {},\n showSearch = false,\n valueRenderer,\n onChange,\n onOpen,\n onFocus,\n onBlur,\n onScroll,\n onClear,\n clear,\n Arrow,\n Field = () => null,\n OptionsList = () => null,\n Optgroup = () => null,\n Option = () => null,\n Search = () => null,\n updatePopover,\n zIndexPopover,\n showEmptyOptionsList = false,\n visibleOptions,\n view,\n isBottomSheet = true,\n footer,\n swipeable,\n modalProps,\n popoverProps,\n modalFooterProps,\n modalHeaderProps,\n bottomSheetProps,\n Popover,\n ModalMobile,\n BottomSheet,\n limitDynamicOptionGroupSize,\n environment = isClient() ? window : undefined,\n } = props;\n const shouldSearchBlurRef = useRef(true);\n const rootRef = useRef<HTMLDivElement>(null);\n const fieldRef = useRef<HTMLInputElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const initiatorRef = useRef<OptionShape | null>(null);\n const searchRef = useRef<HTMLInputElement>(null);\n const scrollableContainerRef = useRef<HTMLDivElement>(null);\n const onOpenRef = useRef(onOpen);\n\n const [searchState, setSearchState] = React.useState('');\n\n const [search, setSearch] =\n typeof searchProps?.value === 'string'\n ? [searchProps.value, searchProps.onChange]\n : [searchState, setSearchState];\n\n const accessor = searchProps.accessor || defaultAccessor;\n const filterFn = searchProps.filterFn || defaultFilterFn;\n const filterGroup = searchProps.filterGroup ?? false;\n const groupAccessor = searchProps.groupAccessor ?? defaultGroupAccessor;\n\n const { filteredOptions, flatOptions, selectedOptions } = useMemo(\n () =>\n processOptions(\n options,\n selected,\n (option) => {\n if (isGroup(option)) {\n const groupAccessorValue = groupAccessor(option);\n\n return (\n typeof groupAccessorValue === 'string' &&\n filterFn(groupAccessorValue, search)\n );\n }\n\n return filterFn(accessor(option), search);\n },\n filterGroup,\n ),\n [options, selected, filterFn, accessor, search, filterGroup, groupAccessor],\n );\n\n const scrollIntoView = (node: HTMLElement) => {\n if (!node || view === 'mobile') return;\n\n requestAnimationFrame(() => {\n const actions = compute(node, {\n boundary: listRef.current,\n block: 'nearest',\n scrollMode: 'if-needed',\n });\n\n actions.forEach((action) => {\n const { el, top } = action;\n\n el.scrollTop = top;\n });\n });\n };\n\n const useMultipleSelectionProps: UseMultipleSelectionProps<OptionShape> = {\n itemToString,\n onSelectedItemsChange: (changes) => {\n if (onChange) {\n const { selectedItems = [] } = changes;\n\n onChange({\n selectedMultiple: selectedItems,\n selected: selectedItems.length ? selectedItems[0] : null,\n initiator: initiatorRef.current,\n name,\n });\n\n initiatorRef.current = null;\n }\n },\n stateReducer: (state, actionAndChanges) => {\n const { type, changes } = actionAndChanges;\n\n if (\n type === useMultipleSelection.stateChangeTypes.DropdownKeyDownBackspace &&\n (!allowUnselect ||\n environment?.document.activeElement?.isSameNode(searchRef.current))\n ) {\n return state;\n }\n\n return changes as UseMultipleSelectionState<OptionShape>;\n },\n };\n\n if (selected !== undefined) {\n useMultipleSelectionProps.selectedItems = selectedOptions;\n }\n\n onOpenRef.current = onOpen;\n\n const {\n selectedItems,\n addSelectedItem,\n setSelectedItems,\n removeSelectedItem,\n getDropdownProps,\n } = useMultipleSelection(useMultipleSelectionProps);\n\n const {\n isOpen: open,\n getMenuProps,\n getInputProps,\n getItemProps,\n getLabelProps,\n highlightedIndex,\n toggleMenu,\n openMenu,\n closeMenu,\n setHighlightedIndex,\n } = useCombobox<OptionShape>({\n id,\n isOpen: openProp,\n items: flatOptions,\n itemToString,\n isItemDisabled,\n defaultHighlightedIndex: selectedItems.length === 0 ? -1 : undefined,\n scrollIntoView,\n environment,\n onSelectedItemChange: (changes) => {\n const selectedItem = changes.selectedItem || initiatorRef.current;\n\n if (selectedItem && !selectedItem.disabled) {\n const alreadySelected = selectedItems.includes(selectedItem);\n const allowRemove = allowUnselect || (multiple && selectedItems.length > 1);\n\n if (alreadySelected && allowRemove) {\n removeSelectedItem(selectedItem);\n }\n\n if (!alreadySelected) {\n if (multiple) {\n addSelectedItem(selectedItem);\n } else {\n setSelectedItems([selectedItem]);\n }\n }\n }\n },\n onIsOpenChange: (changes) => {\n if (onOpenRef.current) {\n /**\n * Вызываем обработчик асинхронно.\n *\n * Иначе при клике вне открытого селекта сначала сработает onOpen, который закроет селект,\n * А затем сработает onClick кнопки открытия\\закрытия с open=false и в итоге селект откроется снова.\n */\n setTimeout(() => {\n onOpenRef.current?.({\n open: changes.isOpen,\n name,\n });\n }, 0);\n }\n\n if (showSearch) {\n if (changes.isOpen && view === 'desktop') {\n setTimeout(() => {\n searchRef.current?.focus();\n }, 0);\n } else {\n setSearch?.('');\n }\n }\n },\n stateReducer: (state, actionAndChanges) => {\n const { type, changes } = actionAndChanges;\n\n switch (type) {\n case useCombobox.stateChangeTypes.InputKeyDownArrowDown:\n if (\n !circularNavigation &&\n state.highlightedIndex === flatOptions.length - 1\n ) {\n return { ...changes, highlightedIndex: state.highlightedIndex };\n }\n\n return changes;\n case useCombobox.stateChangeTypes.InputKeyDownArrowUp:\n if (!circularNavigation && state.highlightedIndex === 0) {\n return { ...changes, highlightedIndex: state.highlightedIndex };\n }\n\n return changes;\n\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n case useCombobox.stateChangeTypes.ItemClick: {\n const { selectedItem } = changes;\n\n initiatorRef.current = selectedItem || null;\n\n return {\n ...changes,\n selectedItem: state.selectedItem === selectedItem ? null : selectedItem,\n isOpen: !closeOnSelect || (view === 'mobile' && multiple),\n // при closeOnSelect === false - сохраняем подсвеченный индекс\n highlightedIndex:\n state.isOpen && !closeOnSelect\n ? state.highlightedIndex\n : changes.highlightedIndex,\n };\n }\n default:\n return changes;\n }\n },\n });\n\n useEffect(() => {\n /*\n * При изменении openProp, состояние внутри downshift в useEnhancedReducer не меняется, поэтому меняем его таким способом\n * Скорее всего это исправят в будущих версиях downshift\n */\n if (openProp !== undefined) {\n if (openProp) {\n openMenu();\n } else {\n closeMenu();\n }\n }\n }, [openProp, openMenu, closeMenu]);\n\n const inputProps = getInputProps(getDropdownProps({ ref: mergeRefs([ref, fieldRef]) }));\n const { ref: menuRef, ...menuProps } = getMenuProps(\n { ref: listRef },\n { suppressRefError: true },\n );\n\n const handleEntered = (node: HTMLElement, isAppearing: boolean) => {\n if (showSearch) searchRef.current?.focus();\n\n if (isBottomSheet) {\n bottomSheetProps?.transitionProps?.onEntered?.(node, isAppearing);\n } else {\n modalProps?.transitionProps?.onEntered?.(node, isAppearing);\n }\n };\n\n const handleFieldFocus = (event: FocusEvent<HTMLDivElement | HTMLInputElement>) => {\n if (onFocus) onFocus(event);\n\n if (autocomplete && !open) {\n openMenu();\n }\n };\n\n const handleFieldBlur = (event: FocusEvent<HTMLDivElement | HTMLInputElement>) => {\n if (view === 'desktop') {\n const isNextFocusInsideField = fieldRef.current?.contains(\n (event.relatedTarget || document.activeElement) as HTMLElement,\n );\n\n const isNextFocusInsideList = listRef.current?.contains(\n (event.relatedTarget || document.activeElement) as HTMLElement,\n );\n\n if (!isNextFocusInsideField && !isNextFocusInsideList) {\n if (onBlur) onBlur(event);\n\n inputProps.onBlur?.(event);\n }\n }\n\n if (view === 'mobile' && !open && onBlur) onBlur(event);\n };\n\n const handleFieldKeyDown = (event: KeyboardEvent<HTMLDivElement | HTMLInputElement>) => {\n inputProps.onKeyDown?.(event);\n\n // https://caniuse.com/?search=KeyboardEvent.key\n const isKeyUnsupported = event.key === 'Unidentified';\n\n if (\n autocomplete &&\n !open &&\n (isKeyUnsupported || event.key.length === 1 || event.key === 'Backspace')\n ) {\n // Для автокомплита - открываем меню при начале ввода\n openMenu();\n }\n\n if (\n [' ', 'Enter'].includes(event.key) &&\n !autocomplete &&\n !nativeSelect &&\n (event.target as HTMLElement).tagName !== 'INPUT' &&\n (event.target as HTMLElement).tagName !== 'BUTTON' &&\n (event.target as HTMLElement).tagName !== 'TEXTAREA'\n ) {\n // Открываем\\закрываем меню по нажатию enter или пробела\n event.preventDefault();\n if (!open || highlightedIndex === -1) toggleMenu();\n }\n };\n\n const handleFieldClick = (event: MouseEvent) => {\n if (!autocomplete || (event.target as HTMLElement).tagName !== 'INPUT') {\n toggleMenu();\n } else {\n openMenu();\n }\n };\n\n const handleNativeSelectChange = useCallback(\n (event: React.ChangeEvent<HTMLSelectElement>) => {\n setSelectedItems(\n // eslint-disable-next-line\n [...(event.target.options as any)].reduce(\n (acc, option, index) =>\n option.selected ? acc.concat(flatOptions[index]) : acc,\n [],\n ),\n );\n },\n [flatOptions, setSelectedItems],\n );\n\n const getOptionProps = (option: OptionShape, index: number) => ({\n ...(optionProps as object),\n mobile: view === 'mobile',\n className: cn(optionClassName, {\n [mobileStyles.option]: view === 'mobile',\n }),\n innerProps: getItemProps({\n index,\n item: option,\n onMouseDown: (event: MouseEvent) => event.preventDefault(),\n onClick: () => {\n if (view === 'mobile' || !showSearch || multiple) return;\n shouldSearchBlurRef.current = false;\n searchRef.current?.blur();\n shouldSearchBlurRef.current = true;\n fieldRef.current?.focus();\n },\n }),\n multiple,\n index,\n option,\n size: optionsSize,\n disabled: option.disabled,\n highlighted: index === highlightedIndex,\n selected: selectedItems.some(({ key }) => key === option.key),\n dataTestId: getDataTestId(dataTestId, 'option'),\n });\n\n useEffect(() => {\n if (defaultOpen) openMenu();\n }, [defaultOpen, openMenu]);\n\n useEffect(() => {\n if (openProp) {\n openMenu();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const calcOptionsListWidth = useCallback(() => {\n if (view === 'desktop' && listRef.current) {\n const widthAttr = optionsListWidth === 'field' ? 'width' : 'minWidth';\n\n const optionsListMinWidth = rootRef.current\n ? rootRef.current.getBoundingClientRect().width\n : 0;\n\n listRef.current.removeAttribute('style');\n listRef.current.style[widthAttr] = `${optionsListMinWidth}px`;\n }\n }, [view, optionsListWidth]);\n\n useEffect(() => {\n if (view === 'desktop') {\n const ResizeObserver = window.ResizeObserver || ResizeObserverPolyfill;\n const observer = new ResizeObserver(calcOptionsListWidth);\n\n if (rootRef.current) {\n observer.observe(rootRef.current);\n }\n\n return () => {\n observer.disconnect();\n };\n }\n\n return fnUtils.noop;\n }, [view, calcOptionsListWidth, open, optionsListWidth]);\n\n useLayoutEffect_SAFE_FOR_SSR(calcOptionsListWidth, [\n open,\n optionsListWidth,\n filteredOptions,\n selectedItems,\n ]);\n\n const renderValue = () =>\n selectedItems.map((option) => (\n <input type='hidden' name={name} value={option.key} key={option.key} />\n ));\n\n const renderNativeSelect = () => {\n const value = multiple\n ? selectedItems.map((option) => option.key)\n : selectedItems[0]?.key;\n\n return (\n <NativeSelect\n {...(menuProps as AnyObject)}\n className={styles.nativeSelect}\n disabled={disabled}\n multiple={multiple}\n name={name}\n value={value}\n onChange={handleNativeSelectChange}\n options={filteredOptions}\n />\n );\n };\n\n const handleFieldClear = (event: MouseEvent<HTMLButtonElement>) => {\n setSelectedItems([]);\n onClear?.(event);\n };\n\n const renderSearch = () => {\n if (!showSearch) return null;\n\n const handleClear: SearchProps['onClear'] = (event) => {\n setSearch?.('');\n searchProps?.componentProps?.onClear?.(event);\n };\n\n const handleChange: SearchProps['onChange'] = (event, payload) => {\n setSearch?.(payload.value);\n searchProps?.componentProps?.onChange?.(event, payload);\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n if (!shouldSearchBlurRef.current) return;\n searchProps.componentProps?.onBlur?.(event);\n handleFieldBlur(event);\n };\n\n return (\n <Search\n {...searchProps?.componentProps}\n onBlur={handleBlur}\n value={search}\n onChange={handleChange}\n dataTestId={getDataTestId(dataTestId, 'search')}\n onClear={handleClear}\n className={cn(\n searchProps?.componentProps?.className,\n {\n [styles.search]: view === 'desktop',\n [mobileStyles.search]: view === 'mobile',\n },\n size && styles[SIZE_TO_CLASSNAME_MAP[size]],\n )}\n ref={mergeRefs([searchRef, searchProps?.componentProps?.ref || null])}\n client={view}\n />\n );\n };\n\n const { header, emptyPlaceholder } = optionsListProps as OptionsListProps;\n\n const renderOptionsListHeader = () => {\n if (header || (view === 'desktop' && showSearch)) {\n return (\n <React.Fragment>\n {header}\n {view === 'desktop' && renderSearch()}\n </React.Fragment>\n );\n }\n\n return null;\n };\n\n const renderEmptyPlaceholder = () => {\n if (emptyPlaceholder) {\n return emptyPlaceholder;\n }\n\n if (showSearch) {\n return <div className={styles.emptySearchPlaceholder}>Ничего не нашлось</div>;\n }\n\n return undefined;\n };\n\n const renderOptionsList = () => {\n if (flatOptions.length === 0 && !showEmptyOptionsList && !showSearch) return null;\n\n const listProps = optionsListProps as OptionsListProps & RefAttributes<HTMLDivElement>;\n\n return (\n <div\n {...menuProps}\n ref={view === 'desktop' ? menuRef : undefined}\n className={cn(\n optionsListClassName,\n view === 'mobile' && mobileStyles.optionsListWrapper,\n view === 'desktop' && styles.optionsListWrapper,\n )}\n >\n <OptionsList\n {...listProps}\n ref={view === 'desktop' ? listProps.ref : scrollableContainerRef}\n setHighlightedIndex={view === 'desktop' ? setHighlightedIndex : undefined}\n className={cn(\n { [mobileStyles.optionsList]: view === 'mobile' },\n listProps.className,\n )}\n scrollbarClassName={cn(\n { [mobileStyles.scrollbar]: view === 'mobile' },\n listProps.scrollbarClassName,\n )}\n optionsListWidth={optionsListWidth}\n flatOptions={flatOptions}\n highlightedIndex={highlightedIndex}\n open={open}\n size={size}\n options={filteredOptions}\n Optgroup={Optgroup}\n Option={Option}\n selectedItems={selectedItems}\n setSelectedItems={setSelectedItems}\n toggleMenu={toggleMenu}\n groupOptionProps={groupOptionProps}\n getOptionProps={getOptionProps}\n visibleOptions={view === 'desktop' ? visibleOptions : 0}\n dataTestId={getDataTestId(dataTestId, 'options-list')}\n header={renderOptionsListHeader()}\n optionGroupClassName={cn(optionGroupClassName, {\n [mobileStyles.optionGroup]: view === 'mobile',\n })}\n emptyPlaceholder={renderEmptyPlaceholder()}\n onScroll={onScroll}\n search={search}\n multiple={multiple}\n limitDynamicOptionGroupSize={limitDynamicOptionGroupSize}\n client={view}\n />\n {view === 'desktop' && <div className={styles.optionsListBorder} />}\n </div>\n );\n };\n\n const renderInPopover = () => {\n if (!nativeSelect && Popover) {\n return (\n <Popover\n {...popoverProps}\n open={open}\n withTransition={false}\n anchorElement={fieldRef.current as HTMLElement}\n position={popoverPosition}\n preventFlip={preventFlip}\n popperClassName={cn(styles.popoverInner, popperClassName)}\n update={updatePopover}\n zIndex={zIndexPopover}\n >\n {renderOptionsList()}\n </Popover>\n );\n }\n\n return null;\n };\n\n const renderInBottomSheet = () => {\n if (!nativeSelect && BottomSheet) {\n const bottomAddons = bottomSheetProps?.bottomAddons;\n\n return (\n <BottomSheet\n dataTestId={getDataTestId(dataTestId, 'bottom-sheet')}\n open={open}\n className={mobileStyles.sheet}\n contentClassName={mobileStyles.sheetContent}\n containerClassName={mobileStyles.sheetContainer}\n title={label || placeholder}\n actionButton={footer}\n stickyHeader={true}\n hasCloser={true}\n swipeable={swipeable}\n initialHeight={showSearch ? 'full' : 'default'}\n {...bottomSheetProps}\n sheetContainerRef={menuRef}\n scrollableContainerRef={scrollableContainerRef}\n onClose={() => {\n closeMenu();\n bottomSheetProps?.onClose?.();\n }}\n transitionProps={{\n ...bottomSheetProps?.transitionProps,\n onEntered: handleEntered,\n }}\n bottomAddons={\n <React.Fragment>\n {renderSearch()}\n {typeof bottomAddons === 'function'\n ? bottomAddons(flatOptions)\n : bottomAddons}\n </React.Fragment>\n }\n containerProps={{\n ...bottomSheetProps?.containerProps,\n onScroll,\n }}\n >\n {renderOptionsList()}\n </BottomSheet>\n );\n }\n\n return null;\n };\n\n const renderInModalMobile = () => {\n if (!nativeSelect && ModalMobile) {\n const bottomAddons = modalHeaderProps?.bottomAddons;\n\n return (\n <ModalMobile\n dataTestId={getDataTestId(dataTestId, 'modal')}\n open={open}\n hasCloser={true}\n {...modalProps}\n componentRef={menuRef}\n onClose={(...args) => {\n closeMenu();\n modalProps?.onClose?.(...args);\n }}\n contentClassName={cn(\n mobileStyles.sheetContent,\n modalProps?.contentClassName,\n )}\n ref={mergeRefs([\n scrollableContainerRef,\n modalProps?.ref as React.Ref<HTMLDivElement>,\n ])}\n wrapperProps={{\n ...modalProps?.wrapperProps,\n onScroll,\n }}\n transitionProps={{\n ...modalProps?.transitionProps,\n onEntered: handleEntered,\n }}\n >\n <ModalMobile.Header\n hasCloser={true}\n sticky={true}\n {...modalHeaderProps}\n title={undefined}\n bottomAddons={\n <React.Fragment>\n {renderSearch()}\n {typeof bottomAddons === 'function'\n ? bottomAddons(flatOptions)\n : bottomAddons}\n </React.Fragment>\n }\n >\n {modalHeaderProps?.title || label || placeholder}\n </ModalMobile.Header>\n\n <ModalMobile.Content flex={true} className={mobileStyles.modalContent}>\n {renderOptionsList()}\n </ModalMobile.Content>\n\n {modalFooterProps?.children && <ModalMobile.Footer {...modalFooterProps} />}\n </ModalMobile>\n );\n }\n\n return null;\n };\n\n return (\n <div\n {...(disabled && { 'aria-disabled': true })}\n aria-expanded={inputProps['aria-expanded']}\n aria-haspopup='listbox'\n role={inputProps.role}\n className={cn(styles.component, { [styles.block]: block }, className)}\n ref={rootRef}\n onKeyDown={disabled ? undefined : handleFieldKeyDown}\n tabIndex={-1}\n data-test-id={getDataTestId(dataTestId)}\n >\n {nativeSelect && renderNativeSelect()}\n\n <Field\n selectedMultiple={selectedItems}\n selected={selectedItems[0]}\n setSelectedItems={setSelectedItems}\n toggleMenu={toggleMenu}\n multiple={multiple}\n open={open}\n disabled={disabled}\n size={size}\n placeholder={placeholder}\n label={label && <span {...getLabelProps()}>{label}</span>}\n labelView={labelView}\n Arrow={Arrow && <Arrow open={open} size={size} disabled={disabled} />}\n error={error}\n hint={hint}\n valueRenderer={valueRenderer}\n className={fieldClassName}\n clear={clear}\n onClear={handleFieldClear}\n innerProps={{\n onBlur: handleFieldBlur,\n onFocus: disabled ? undefined : handleFieldFocus,\n onClick: disabled ? undefined : handleFieldClick,\n tabIndex: disabled ? undefined : nativeSelect ? -1 : 0,\n ref: inputProps.ref,\n id: inputProps.id,\n 'aria-label': (optionProps as AriaAttributes)['aria-label'],\n 'aria-labelledby': inputProps['aria-labelledby'],\n 'aria-controls': inputProps['aria-controls'],\n 'aria-autocomplete': autocomplete\n ? inputProps['aria-autocomplete']\n : undefined,\n }}\n dataTestId={getDataTestId(dataTestId, 'field')}\n {...(fieldProps as AnyObject)}\n />\n\n {name && !nativeSelect && renderValue()}\n\n {view === 'desktop' && renderInPopover()}\n {view === 'mobile' &&\n (isBottomSheet ? renderInBottomSheet() : renderInModalMobile())}\n </div>\n );\n },\n);\n"],"names":["forwardRef","isClient","useRef","React","defaultAccessor","defaultFilterFn","defaultGroupAccessor","useMemo","processOptions","isGroup","compute","useMultipleSelection","useCombobox","__assign","useEffect","mergeRefs","__rest","useCallback","__spreadArray","cn","mobileStyles","getDataTestId","ResizeObserverPolyfill","fnUtils","useLayoutEffect_SAFE_FOR_SSR","NativeSelect","styles","SIZE_TO_CLASSNAME_MAP"],"mappings":"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"}
|
|
@@ -1,3 +1,36 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { type
|
|
3
|
-
export declare const OptionsList: React.ForwardRefExoticComponent<
|
|
2
|
+
import { type GroupShape, type OptionShape } from '../../typings';
|
|
3
|
+
export declare const OptionsList: React.ForwardRefExoticComponent<Pick<import("../../typings").SelectProps, "client"> & {
|
|
4
|
+
className?: string | undefined;
|
|
5
|
+
optionGroupClassName?: string | undefined;
|
|
6
|
+
scrollbarClassName?: string | undefined;
|
|
7
|
+
footerClassName?: string | undefined;
|
|
8
|
+
size?: "s" | "m" | "l" | "xl" | 40 | 48 | 56 | 64 | 72 | undefined;
|
|
9
|
+
Option: React.ComponentType<import("../../typings").OptionProps>;
|
|
10
|
+
getOptionProps: (option: OptionShape, index: number) => import("../../typings").OptionProps;
|
|
11
|
+
groupOptionProps?: import("../../typings").AnyObject | undefined;
|
|
12
|
+
selectedItems?: OptionShape[] | undefined;
|
|
13
|
+
setSelectedItems: (selected: OptionShape[]) => void;
|
|
14
|
+
toggleMenu: () => void;
|
|
15
|
+
header?: React.ReactNode;
|
|
16
|
+
footer?: React.ReactNode;
|
|
17
|
+
options?: (OptionShape | GroupShape)[] | undefined;
|
|
18
|
+
flatOptions?: OptionShape[] | undefined;
|
|
19
|
+
highlightedIndex?: number | undefined;
|
|
20
|
+
open?: boolean | undefined;
|
|
21
|
+
Optgroup?: React.ComponentType<import("../../typings").OptgroupProps> | undefined;
|
|
22
|
+
emptyPlaceholder?: React.ReactNode;
|
|
23
|
+
visibleOptions?: number | undefined;
|
|
24
|
+
onScroll?: ((event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void) | undefined;
|
|
25
|
+
dataTestId?: string | undefined;
|
|
26
|
+
inputProps?: import("@alfalab/core-components-input").InputProps | undefined;
|
|
27
|
+
showFooter?: boolean | undefined;
|
|
28
|
+
nativeScrollbar?: boolean | undefined;
|
|
29
|
+
optionsListWidth?: "field" | "content" | undefined;
|
|
30
|
+
onApply?: (() => void) | undefined;
|
|
31
|
+
onClear?: (() => void) | undefined;
|
|
32
|
+
setHighlightedIndex?: ((index: number) => void) | undefined;
|
|
33
|
+
search?: string | undefined;
|
|
34
|
+
multiple?: boolean | undefined;
|
|
35
|
+
limitDynamicOptionGroupSize?: boolean | undefined;
|
|
36
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -6,10 +6,9 @@ var tslib = require('tslib');
|
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var mergeRefs = require('react-merge-refs');
|
|
8
8
|
var cn = require('classnames');
|
|
9
|
-
var cssm = require('@alfalab/core-components-
|
|
10
|
-
var cssm$2 = require('@alfalab/core-components-scrollbar/cssm');
|
|
11
|
-
var cssm$1 = require('@alfalab/core-components-shared/cssm');
|
|
9
|
+
var cssm = require('@alfalab/core-components-scrollbar/cssm');
|
|
12
10
|
var consts = require('../../consts.js');
|
|
11
|
+
var useNativeScrollbar = require('../../hooks/use-native-scrollbar.js');
|
|
13
12
|
var utils = require('../../utils.js');
|
|
14
13
|
var Component = require('../optgroup/Component.js');
|
|
15
14
|
var styles = require('./index.module.css');
|
|
@@ -28,14 +27,13 @@ var createCounter = function () {
|
|
|
28
27
|
};
|
|
29
28
|
var OptionsList = React.forwardRef(function (_a, ref) {
|
|
30
29
|
var _b, _c;
|
|
31
|
-
var _d = _a.size, size = _d === void 0 ? 48 : _d, className = _a.className, optionGroupClassName = _a.optionGroupClassName, footerClassName = _a.footerClassName, scrollbarClassName = _a.scrollbarClassName, Option = _a.Option, getOptionProps = _a.getOptionProps, _e = _a.groupOptionProps, groupOptionProps = _e === void 0 ? {} : _e, _f = _a.options, options = _f === void 0 ? [] : _f, _g = _a.Optgroup, Optgroup = _g === void 0 ? Component.Optgroup : _g, dataTestId = _a.dataTestId, emptyPlaceholder = _a.emptyPlaceholder, _h = _a.visibleOptions, visibleOptions = _h === void 0 ? consts.DEFAULT_VISIBLE_OPTIONS : _h, onScroll = _a.onScroll, open = _a.open, header = _a.header, footer = _a.footer, _j = _a.showFooter, showFooter = _j === void 0 ? true : _j, optionsListWidth = _a.optionsListWidth, nativeScrollbarProp = _a.nativeScrollbar, _k = _a.flatOptions, flatOptions = _k === void 0 ? [] : _k, setHighlightedIndex = _a.setHighlightedIndex, selectedItems = _a.selectedItems, search = _a.search, setSelectedItems = _a.setSelectedItems, multiple = _a.multiple, _l = _a.limitDynamicOptionGroupSize, limitDynamicOptionGroupSize = _l === void 0 ? false : _l;
|
|
30
|
+
var _d = _a.size, size = _d === void 0 ? 48 : _d, className = _a.className, optionGroupClassName = _a.optionGroupClassName, footerClassName = _a.footerClassName, scrollbarClassName = _a.scrollbarClassName, Option = _a.Option, getOptionProps = _a.getOptionProps, _e = _a.groupOptionProps, groupOptionProps = _e === void 0 ? {} : _e, _f = _a.options, options = _f === void 0 ? [] : _f, _g = _a.Optgroup, Optgroup = _g === void 0 ? Component.Optgroup : _g, dataTestId = _a.dataTestId, emptyPlaceholder = _a.emptyPlaceholder, _h = _a.visibleOptions, visibleOptions = _h === void 0 ? consts.DEFAULT_VISIBLE_OPTIONS : _h, onScroll = _a.onScroll, open = _a.open, header = _a.header, footer = _a.footer, _j = _a.showFooter, showFooter = _j === void 0 ? true : _j, optionsListWidth = _a.optionsListWidth, nativeScrollbarProp = _a.nativeScrollbar, _k = _a.flatOptions, flatOptions = _k === void 0 ? [] : _k, setHighlightedIndex = _a.setHighlightedIndex, selectedItems = _a.selectedItems, search = _a.search, setSelectedItems = _a.setSelectedItems, multiple = _a.multiple, _l = _a.limitDynamicOptionGroupSize, limitDynamicOptionGroupSize = _l === void 0 ? false : _l, client = _a.client;
|
|
32
31
|
var _m = React.useState(true), scrollTop = _m[0], setScrollTop = _m[1];
|
|
33
32
|
var _o = React.useState(false), scrollBottom = _o[0], setScrollBottom = _o[1];
|
|
34
|
-
var
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
})
|
|
38
|
-
nativeScrollbar = Boolean(nativeScrollbarProp !== null && nativeScrollbarProp !== void 0 ? nativeScrollbarProp : nativeScrollbar);
|
|
33
|
+
var nativeScrollbar = useNativeScrollbar.useNativeScrollbar({
|
|
34
|
+
nativeScrollbar: nativeScrollbarProp,
|
|
35
|
+
client: client,
|
|
36
|
+
});
|
|
39
37
|
var handleScroll = React.useCallback(function (event) {
|
|
40
38
|
var scrolledToHeader = event.currentTarget.scrollTop <= 0;
|
|
41
39
|
var scrolledToFooter = event.currentTarget.scrollHeight - event.currentTarget.offsetHeight <=
|
|
@@ -95,7 +93,7 @@ var OptionsList = React.forwardRef(function (_a, ref) {
|
|
|
95
93
|
'data-test-id': dataTestId,
|
|
96
94
|
ref: ref,
|
|
97
95
|
};
|
|
98
|
-
return (React__default.default.createElement(cssm
|
|
96
|
+
return (React__default.default.createElement(cssm.Scrollbar, { className: cn__default.default(styles__default.default.scrollable, scrollbarClassName), ref: scrollbarRef, style: { height: height }, horizontalAutoStretch: optionsListWidth === 'content', scrollableNodeProps: scrollableNodeProps, contentNodeProps: { ref: listRef }, maskProps: {
|
|
99
97
|
/*
|
|
100
98
|
* Для корректного подсчета высоты опций(иначе для optionsListWidth: 'field'
|
|
101
99
|
* высота опции всегда будет равна высоте одной строчки)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../../../src/components/options-list/Component.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useRef, useState } from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport cn from 'classnames';\n\nimport { useMatchMedia } from '@alfalab/core-components-mq';\nimport { Scrollbar } from '@alfalab/core-components-scrollbar';\nimport { isClient } from '@alfalab/core-components-shared';\n\nimport { DEFAULT_VISIBLE_OPTIONS, SIZE_TO_CLASSNAME_MAP } from '../../consts';\nimport { type GroupShape, type OptionShape, type OptionsListProps } from '../../typings';\nimport { isGroup, useVisibleOptions } from '../../utils';\nimport { Optgroup as DefaultOptgroup } from '../optgroup';\n\nimport styles from './index.module.css';\n\nconst createCounter = () => {\n let count = 0;\n\n // eslint-disable-next-line no-plusplus\n return () => count++;\n};\n\nexport const OptionsList = forwardRef<HTMLDivElement, OptionsListProps>(\n (\n {\n size = 48,\n className,\n optionGroupClassName,\n footerClassName,\n scrollbarClassName,\n Option,\n getOptionProps,\n groupOptionProps = {},\n options = [],\n Optgroup = DefaultOptgroup,\n dataTestId,\n emptyPlaceholder,\n visibleOptions = DEFAULT_VISIBLE_OPTIONS,\n onScroll,\n open,\n header,\n footer,\n showFooter = true,\n optionsListWidth,\n nativeScrollbar: nativeScrollbarProp,\n flatOptions = [],\n setHighlightedIndex,\n selectedItems,\n search,\n setSelectedItems,\n multiple,\n limitDynamicOptionGroupSize = false,\n },\n ref,\n ) => {\n const [scrollTop, setScrollTop] = useState(true);\n const [scrollBottom, setScrollBottom] = useState(false);\n\n const query = '(max-width: 1023px)';\n let [nativeScrollbar] = useMatchMedia(query, () =>\n isClient() ? window.matchMedia(query).matches : true,\n );\n\n nativeScrollbar = Boolean(nativeScrollbarProp ?? nativeScrollbar);\n\n const handleScroll = useCallback(\n (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n const scrolledToHeader = event.currentTarget.scrollTop <= 0;\n const scrolledToFooter =\n event.currentTarget.scrollHeight - event.currentTarget.offsetHeight <=\n event.currentTarget.scrollTop;\n\n setScrollTop(scrolledToHeader);\n setScrollBottom(scrolledToFooter);\n\n onScroll?.(event);\n },\n [onScroll],\n );\n\n const renderOption = (option: OptionShape, index: number) => (\n <Option key={option.key} {...getOptionProps(option, index)} />\n );\n\n const listRef = useRef<HTMLDivElement>(null);\n const scrollbarRef = useRef<HTMLDivElement>(null);\n const counter = createCounter();\n const renderGroup = (group: GroupShape) => {\n const groupSelectedItems = selectedItems?.filter(({ key: selectedItemKey }) =>\n group.options.some((option) => option.key === selectedItemKey),\n );\n const handleSelectedItems = (items: OptionShape[]) => {\n setSelectedItems(\n (\n selectedItems?.filter(\n ({ key: selectedItemKey }) =>\n !group.options.some((option) => option.key === selectedItemKey),\n ) ?? []\n ).concat(items),\n );\n };\n\n return (\n <Optgroup\n className={optionGroupClassName}\n label={group.label}\n key={group.label}\n size={size}\n options={group.options}\n selectedItems={groupSelectedItems}\n setSelectedItems={handleSelectedItems}\n search={search}\n multiple={multiple}\n {...groupOptionProps}\n >\n {group.options.map((option) => renderOption(option, counter()))}\n </Optgroup>\n );\n };\n\n const actualOptionsCount = limitDynamicOptionGroupSize && options.length > 0;\n\n const [measured, height] = useVisibleOptions({\n visibleOptions,\n listRef,\n open,\n options,\n actualOptionsCount,\n size: actualOptionsCount\n ? (() => {\n switch (typeof size) {\n case 'string':\n throw new Error(\n 'OptionsList with `limitDynamicOptionGroupSize` enabled needs a `size` with number type',\n );\n default:\n return size;\n }\n })()\n : undefined,\n });\n\n if (options.length === 0 && !emptyPlaceholder && !header && !footer) {\n return null;\n }\n\n const renderListItems = () => (\n <React.Fragment>\n {options.map((option) =>\n isGroup(option) ? renderGroup(option) : renderOption(option, counter()),\n )}\n\n {emptyPlaceholder && options.length === 0 && (\n <div className={styles.emptyPlaceholder}>{emptyPlaceholder}</div>\n )}\n </React.Fragment>\n );\n\n const renderWithCustomScrollbar = () => {\n const scrollableNodeProps = {\n onScroll: handleScroll,\n 'data-test-id': dataTestId,\n ref: ref as React.RefObject<HTMLDivElement>,\n };\n\n return (\n <Scrollbar\n className={cn(styles.scrollable, scrollbarClassName)}\n ref={scrollbarRef}\n style={{ height }}\n horizontalAutoStretch={optionsListWidth === 'content'}\n scrollableNodeProps={scrollableNodeProps}\n contentNodeProps={{ ref: listRef }}\n maskProps={{\n /*\n * Для корректного подсчета высоты опций(иначе для optionsListWidth: 'field'\n * высота опции всегда будет равна высоте одной строчки)\n */\n className: cn({\n [styles.mask]: optionsListWidth === 'content' && !measured,\n }),\n }}\n >\n {renderListItems()}\n </Scrollbar>\n );\n };\n\n const renderWithNativeScrollbar = () => (\n <div\n className={cn(styles.scrollable, scrollbarClassName)}\n ref={mergeRefs([listRef, ref])}\n onScroll={handleScroll}\n style={{ height }}\n >\n {renderListItems()}\n </div>\n );\n\n const resetHighlightedIndex = () => setHighlightedIndex?.(-1);\n\n return (\n <div\n {...(nativeScrollbar && { 'data-test-id': dataTestId })}\n className={cn(styles.optionsList, styles[SIZE_TO_CLASSNAME_MAP[size]], className)}\n >\n {header && (\n <div\n className={cn(styles.optionsListHeader, {\n [styles.headerHighlighted]: !scrollTop,\n })}\n onMouseEnter={resetHighlightedIndex}\n >\n {header}\n </div>\n )}\n\n {nativeScrollbar ? renderWithNativeScrollbar() : renderWithCustomScrollbar()}\n\n {showFooter && footer && (\n <div\n onMouseEnter={resetHighlightedIndex}\n className={cn(styles.optionsListFooter, footerClassName, {\n [styles.withBorder]:\n visibleOptions &&\n flatOptions.length > visibleOptions &&\n !scrollBottom,\n })}\n >\n {footer}\n </div>\n )}\n </div>\n );\n },\n);\n"],"names":["forwardRef","DefaultOptgroup","DEFAULT_VISIBLE_OPTIONS","useState","useMatchMedia","isClient","useCallback","React","__assign","useRef","useVisibleOptions","isGroup","styles","Scrollbar","cn","mergeRefs","SIZE_TO_CLASSNAME_MAP"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../../../src/components/options-list/Component.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useRef, useState } from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport cn from 'classnames';\n\nimport { Scrollbar } from '@alfalab/core-components-scrollbar';\n\nimport { DEFAULT_VISIBLE_OPTIONS, SIZE_TO_CLASSNAME_MAP } from '../../consts';\nimport { useNativeScrollbar } from '../../hooks/use-native-scrollbar';\nimport { type GroupShape, type OptionShape, type OptionsListProps } from '../../typings';\nimport { isGroup, useVisibleOptions } from '../../utils';\nimport { Optgroup as DefaultOptgroup } from '../optgroup';\n\nimport styles from './index.module.css';\n\nconst createCounter = () => {\n let count = 0;\n\n // eslint-disable-next-line no-plusplus\n return () => count++;\n};\n\nexport const OptionsList = forwardRef<HTMLDivElement, OptionsListProps>(\n (\n {\n size = 48,\n className,\n optionGroupClassName,\n footerClassName,\n scrollbarClassName,\n Option,\n getOptionProps,\n groupOptionProps = {},\n options = [],\n Optgroup = DefaultOptgroup,\n dataTestId,\n emptyPlaceholder,\n visibleOptions = DEFAULT_VISIBLE_OPTIONS,\n onScroll,\n open,\n header,\n footer,\n showFooter = true,\n optionsListWidth,\n nativeScrollbar: nativeScrollbarProp,\n flatOptions = [],\n setHighlightedIndex,\n selectedItems,\n search,\n setSelectedItems,\n multiple,\n limitDynamicOptionGroupSize = false,\n client,\n },\n ref,\n ) => {\n const [scrollTop, setScrollTop] = useState(true);\n const [scrollBottom, setScrollBottom] = useState(false);\n\n const nativeScrollbar = useNativeScrollbar({\n nativeScrollbar: nativeScrollbarProp,\n client,\n });\n\n const handleScroll = useCallback(\n (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n const scrolledToHeader = event.currentTarget.scrollTop <= 0;\n const scrolledToFooter =\n event.currentTarget.scrollHeight - event.currentTarget.offsetHeight <=\n event.currentTarget.scrollTop;\n\n setScrollTop(scrolledToHeader);\n setScrollBottom(scrolledToFooter);\n\n onScroll?.(event);\n },\n [onScroll],\n );\n\n const renderOption = (option: OptionShape, index: number) => (\n <Option key={option.key} {...getOptionProps(option, index)} />\n );\n\n const listRef = useRef<HTMLDivElement>(null);\n const scrollbarRef = useRef<HTMLDivElement>(null);\n const counter = createCounter();\n const renderGroup = (group: GroupShape) => {\n const groupSelectedItems = selectedItems?.filter(({ key: selectedItemKey }) =>\n group.options.some((option) => option.key === selectedItemKey),\n );\n const handleSelectedItems = (items: OptionShape[]) => {\n setSelectedItems(\n (\n selectedItems?.filter(\n ({ key: selectedItemKey }) =>\n !group.options.some((option) => option.key === selectedItemKey),\n ) ?? []\n ).concat(items),\n );\n };\n\n return (\n <Optgroup\n className={optionGroupClassName}\n label={group.label}\n key={group.label}\n size={size}\n options={group.options}\n selectedItems={groupSelectedItems}\n setSelectedItems={handleSelectedItems}\n search={search}\n multiple={multiple}\n {...groupOptionProps}\n >\n {group.options.map((option) => renderOption(option, counter()))}\n </Optgroup>\n );\n };\n\n const actualOptionsCount = limitDynamicOptionGroupSize && options.length > 0;\n\n const [measured, height] = useVisibleOptions({\n visibleOptions,\n listRef,\n open,\n options,\n actualOptionsCount,\n size: actualOptionsCount\n ? (() => {\n switch (typeof size) {\n case 'string':\n throw new Error(\n 'OptionsList with `limitDynamicOptionGroupSize` enabled needs a `size` with number type',\n );\n default:\n return size;\n }\n })()\n : undefined,\n });\n\n if (options.length === 0 && !emptyPlaceholder && !header && !footer) {\n return null;\n }\n\n const renderListItems = () => (\n <React.Fragment>\n {options.map((option) =>\n isGroup(option) ? renderGroup(option) : renderOption(option, counter()),\n )}\n\n {emptyPlaceholder && options.length === 0 && (\n <div className={styles.emptyPlaceholder}>{emptyPlaceholder}</div>\n )}\n </React.Fragment>\n );\n\n const renderWithCustomScrollbar = () => {\n const scrollableNodeProps = {\n onScroll: handleScroll,\n 'data-test-id': dataTestId,\n ref: ref as React.RefObject<HTMLDivElement>,\n };\n\n return (\n <Scrollbar\n className={cn(styles.scrollable, scrollbarClassName)}\n ref={scrollbarRef}\n style={{ height }}\n horizontalAutoStretch={optionsListWidth === 'content'}\n scrollableNodeProps={scrollableNodeProps}\n contentNodeProps={{ ref: listRef }}\n maskProps={{\n /*\n * Для корректного подсчета высоты опций(иначе для optionsListWidth: 'field'\n * высота опции всегда будет равна высоте одной строчки)\n */\n className: cn({\n [styles.mask]: optionsListWidth === 'content' && !measured,\n }),\n }}\n >\n {renderListItems()}\n </Scrollbar>\n );\n };\n\n const renderWithNativeScrollbar = () => (\n <div\n className={cn(styles.scrollable, scrollbarClassName)}\n ref={mergeRefs([listRef, ref])}\n onScroll={handleScroll}\n style={{ height }}\n >\n {renderListItems()}\n </div>\n );\n\n const resetHighlightedIndex = () => setHighlightedIndex?.(-1);\n\n return (\n <div\n {...(nativeScrollbar && { 'data-test-id': dataTestId })}\n className={cn(styles.optionsList, styles[SIZE_TO_CLASSNAME_MAP[size]], className)}\n >\n {header && (\n <div\n className={cn(styles.optionsListHeader, {\n [styles.headerHighlighted]: !scrollTop,\n })}\n onMouseEnter={resetHighlightedIndex}\n >\n {header}\n </div>\n )}\n\n {nativeScrollbar ? renderWithNativeScrollbar() : renderWithCustomScrollbar()}\n\n {showFooter && footer && (\n <div\n onMouseEnter={resetHighlightedIndex}\n className={cn(styles.optionsListFooter, footerClassName, {\n [styles.withBorder]:\n visibleOptions &&\n flatOptions.length > visibleOptions &&\n !scrollBottom,\n })}\n >\n {footer}\n </div>\n )}\n </div>\n );\n },\n);\n"],"names":["forwardRef","DefaultOptgroup","DEFAULT_VISIBLE_OPTIONS","useState","useNativeScrollbar","useCallback","React","__assign","useRef","useVisibleOptions","isGroup","styles","Scrollbar","cn","mergeRefs","SIZE_TO_CLASSNAME_MAP"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAcA,IAAM,aAAa,GAAG,YAAA;IAClB,IAAI,KAAK,GAAG,CAAC;;AAGb,IAAA,OAAO,cAAM,OAAA,KAAK,EAAE,CAAA,EAAA;AACxB,CAAC;IAEY,WAAW,GAAGA,gBAAU,CACjC,UACI,EA6BC,EACD,GAAG,EAAA;;QA7BC,EAAS,GAAA,EAAA,CAAA,IAAA,EAAT,IAAI,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,GAAA,EAAA,EACT,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,oBAAoB,GAAA,EAAA,CAAA,oBAAA,EACpB,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,kBAAkB,GAAA,EAAA,CAAA,kBAAA,EAClB,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,EAAA,GAAA,EAAA,CAAA,gBAAqB,EAArB,gBAAgB,mBAAG,EAAE,GAAA,EAAA,EACrB,EAAA,GAAA,EAAA,CAAA,OAAY,EAAZ,OAAO,mBAAG,EAAE,GAAA,EAAA,EACZ,EAAA,GAAA,EAAA,CAAA,QAA0B,EAA1B,QAAQ,mBAAGC,kBAAe,GAAA,EAAA,EAC1B,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,gBAAgB,GAAA,EAAA,CAAA,gBAAA,EAChB,EAAA,GAAA,EAAA,CAAA,cAAwC,EAAxC,cAAc,GAAG,EAAA,KAAA,MAAA,GAAAC,8BAAuB,KAAA,EACxC,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,kBAAiB,EAAjB,UAAU,GAAG,EAAA,KAAA,MAAA,GAAA,IAAI,GAAA,EAAA,EACjB,gBAAgB,GAAA,EAAA,CAAA,gBAAA,EACC,mBAAmB,GAAA,EAAA,CAAA,eAAA,EACpC,EAAgB,GAAA,EAAA,CAAA,WAAA,EAAhB,WAAW,GAAG,EAAA,KAAA,MAAA,GAAA,EAAE,GAAA,EAAA,EAChB,mBAAmB,GAAA,EAAA,CAAA,mBAAA,EACnB,aAAa,GAAA,EAAA,CAAA,aAAA,EACb,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,gBAAgB,sBAAA,EAChB,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,EAAmC,GAAA,EAAA,CAAA,2BAAA,EAAnC,2BAA2B,GAAA,EAAA,KAAA,MAAA,GAAG,KAAK,GAAA,EAAA,EACnC,MAAM,GAAA,EAAA,CAAA,MAAA;IAIJ,IAAA,EAAA,GAA4BC,cAAQ,CAAC,IAAI,CAAC,EAAzC,SAAS,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,YAAY,GAAA,EAAA,CAAA,CAAA,CAAkB;IAC1C,IAAA,EAAA,GAAkCA,cAAQ,CAAC,KAAK,CAAC,EAAhD,YAAY,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,eAAe,GAAA,EAAA,CAAA,CAAA,CAAmB;IAEvD,IAAM,eAAe,GAAGC,qCAAkB,CAAC;AACvC,QAAA,eAAe,EAAE,mBAAmB;AACpC,QAAA,MAAM,EAAA,MAAA;AACT,KAAA,CAAC;AAEF,IAAA,IAAM,YAAY,GAAGC,iBAAW,CAC5B,UAAC,KAAmD,EAAA;QAChD,IAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,IAAI,CAAC;AAC3D,QAAA,IAAM,gBAAgB,GAClB,KAAK,CAAC,aAAa,CAAC,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY;AACnE,YAAA,KAAK,CAAC,aAAa,CAAC,SAAS;QAEjC,YAAY,CAAC,gBAAgB,CAAC;QAC9B,eAAe,CAAC,gBAAgB,CAAC;AAEjC,QAAA,QAAQ,aAAR,QAAQ,KAAA,MAAA,GAAA,MAAA,GAAR,QAAQ,CAAG,KAAK,CAAC;AACrB,KAAC,EACD,CAAC,QAAQ,CAAC,CACb;AAED,IAAA,IAAM,YAAY,GAAG,UAAC,MAAmB,EAAE,KAAa,EAAK,EAAA,QACzDC,sBAAA,CAAA,aAAA,CAAC,MAAM,EAAAC,cAAA,CAAA,EAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAA,EAAM,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAI,CAAA,EADL,EAE5D;AAED,IAAA,IAAM,OAAO,GAAGC,YAAM,CAAiB,IAAI,CAAC;AAC5C,IAAA,IAAM,YAAY,GAAGA,YAAM,CAAiB,IAAI,CAAC;AACjD,IAAA,IAAM,OAAO,GAAG,aAAa,EAAE;IAC/B,IAAM,WAAW,GAAG,UAAC,KAAiB,EAAA;QAClC,IAAM,kBAAkB,GAAG,aAAa,KAAb,IAAA,IAAA,aAAa,KAAb,MAAA,GAAA,MAAA,GAAA,aAAa,CAAE,MAAM,CAAC,UAAC,EAAwB,EAAA;AAAjB,YAAA,IAAA,eAAe,GAAA,EAAA,CAAA,GAAA;AACpE,YAAA,OAAA,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAC,MAAM,EAAK,EAAA,OAAA,MAAM,CAAC,GAAG,KAAK,eAAe,CAAA,EAAA,CAAC;AAA9D,SAA8D,CACjE;QACD,IAAM,mBAAmB,GAAG,UAAC,KAAoB,EAAA;;AAC7C,YAAA,gBAAgB,CACZ,CACI,CAAA,EAAA,GAAA,aAAa,KAAb,IAAA,IAAA,aAAa,KAAb,MAAA,GAAA,MAAA,GAAA,aAAa,CAAE,MAAM,CACjB,UAAC,EAAwB,EAAA;AAAjB,gBAAA,IAAA,eAAe,GAAA,EAAA,CAAA,GAAA;AACnB,gBAAA,OAAA,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAC,MAAM,EAAK,EAAA,OAAA,MAAM,CAAC,GAAG,KAAK,eAAe,CAAA,EAAA,CAAC;aAAA,CACtE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EACT,MAAM,CAAC,KAAK,CAAC,CAClB;AACL,SAAC;AAED,QAAA,QACIF,sBAAA,CAAA,aAAA,CAAC,QAAQ,EAAAC,cAAA,CAAA,EACL,SAAS,EAAE,oBAAoB,EAC/B,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,GAAG,EAAE,KAAK,CAAC,KAAK,EAChB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,aAAa,EAAE,kBAAkB,EACjC,gBAAgB,EAAE,mBAAmB,EACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAAA,EACd,gBAAgB,CAAA,EAEnB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,EAAA,EAAK,OAAA,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAA/B,EAA+B,CAAC,CACxD;AAEnB,KAAC;IAED,IAAM,kBAAkB,GAAG,2BAA2B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;IAEtE,IAAA,EAAA,GAAqBE,uBAAiB,CAAC;AACzC,QAAA,cAAc,EAAA,cAAA;AACd,QAAA,OAAO,EAAA,OAAA;AACP,QAAA,IAAI,EAAA,IAAA;AACJ,QAAA,OAAO,EAAA,OAAA;AACP,QAAA,kBAAkB,EAAA,kBAAA;AAClB,QAAA,IAAI,EAAE;AACF,cAAE,CAAC,YAAA;gBACG,QAAQ,OAAO,IAAI;AACf,oBAAA,KAAK,QAAQ;AACT,wBAAA,MAAM,IAAI,KAAK,CACX,wFAAwF,CAC3F;AACL,oBAAA;AACI,wBAAA,OAAO,IAAI;AAClB;AACL,aAAC;AACH,cAAE,SAAS;AAClB,KAAA,CAAC,EAlBK,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,MAAM,QAkBrB;AAEF,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE;AACjE,QAAA,OAAO,IAAI;AACd;IAED,IAAM,eAAe,GAAG,YAAM,EAAA,QAC1BH,sBAAC,CAAA,aAAA,CAAAA,sBAAK,CAAC,QAAQ,EAAA,IAAA;AACV,QAAA,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,EAAA;YAChB,OAAAI,aAAO,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;AAAvE,SAAuE,CAC1E;QAEA,gBAAgB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,KACrCJ,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAEK,uBAAM,CAAC,gBAAgB,IAAG,gBAAgB,CAAO,CACpE,CACY,EATS,EAU7B;AAED,IAAA,IAAM,yBAAyB,GAAG,YAAA;;AAC9B,QAAA,IAAM,mBAAmB,GAAG;AACxB,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,cAAc,EAAE,UAAU;AAC1B,YAAA,GAAG,EAAE,GAAsC;SAC9C;QAED,QACIL,qCAACM,cAAS,EAAA,EACN,SAAS,EAAEC,mBAAE,CAACF,uBAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,EACpD,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,EAAE,MAAM,EAAA,MAAA,EAAE,EACjB,qBAAqB,EAAE,gBAAgB,KAAK,SAAS,EACrD,mBAAmB,EAAE,mBAAmB,EACxC,gBAAgB,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAClC,SAAS,EAAE;AACP;;;AAGG;AACH,gBAAA,SAAS,EAAEE,mBAAE,EAAA,EAAA,GAAA,EAAA;oBACT,EAAC,CAAAF,uBAAM,CAAC,IAAI,CAAA,GAAG,gBAAgB,KAAK,SAAS,IAAI,CAAC,QAAQ;AAC5D,oBAAA,EAAA,EAAA;AACL,aAAA,EAAA,EAEA,eAAe,EAAE,CACV;AAEpB,KAAC;IAED,IAAM,yBAAyB,GAAG,YAAM,EAAA,QACpCL,sBACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAEO,mBAAE,CAACF,uBAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,EACpD,GAAG,EAAEG,0BAAS,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,EAC9B,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,EAAE,MAAM,EAAA,MAAA,EAAE,EAEhB,EAAA,eAAe,EAAE,CAChB,EAR8B,EASvC;AAED,IAAA,IAAM,qBAAqB,GAAG,YAAM,EAAA,OAAA,mBAAmB,KAAnB,IAAA,IAAA,mBAAmB,KAAnB,MAAA,GAAA,MAAA,GAAA,mBAAmB,CAAG,EAAE,CAAC,CAAA,EAAA;AAE7D,IAAA,QACIR,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAAC,cAAA,CAAA,EAAA,GACS,eAAe,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,GAAC,EACvD,SAAS,EAAEM,mBAAE,CAACF,uBAAM,CAAC,WAAW,EAAEA,uBAAM,CAACI,4BAAqB,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,EAAA,CAAA;QAEhF,MAAM,KACHT,sBACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAEO,mBAAE,CAACF,uBAAM,CAAC,iBAAiB,GAAA,EAAA,GAAA,EAAA;AAClC,gBAAA,EAAA,CAACA,uBAAM,CAAC,iBAAiB,CAAA,GAAG,CAAC,SAAS;AACxC,gBAAA,EAAA,EAAA,EACF,YAAY,EAAE,qBAAqB,EAElC,EAAA,MAAM,CACL,CACT;QAEA,eAAe,GAAG,yBAAyB,EAAE,GAAG,yBAAyB,EAAE;AAE3E,QAAA,UAAU,IAAI,MAAM,KACjBL,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,YAAY,EAAE,qBAAqB,EACnC,SAAS,EAAEO,mBAAE,CAACF,uBAAM,CAAC,iBAAiB,EAAE,eAAe,GAAA,EAAA,GAAA,EAAA;AACnD,gBAAA,EAAA,CAACA,uBAAM,CAAC,UAAU,CAAA,GACd,cAAc;oBACd,WAAW,CAAC,MAAM,GAAG,cAAc;AACnC,oBAAA,CAAC,YAAY;AACnB,gBAAA,EAAA,EAAA,EAAA,EAED,MAAM,CACL,CACT,CACC;AAEd,CAAC;;;;"}
|
|
@@ -6,6 +6,8 @@ var tslib = require('tslib');
|
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var cn = require('classnames');
|
|
8
8
|
var cssm = require('@alfalab/core-components-input/cssm');
|
|
9
|
+
var desktop = require('@alfalab/core-components-input/cssm/desktop');
|
|
10
|
+
var mobile = require('@alfalab/core-components-input/cssm/mobile');
|
|
9
11
|
var MagnifierMIcon = require('@alfalab/icons-glyph/MagnifierMIcon');
|
|
10
12
|
var styles = require('./index.module.css');
|
|
11
13
|
|
|
@@ -15,9 +17,21 @@ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
|
15
17
|
var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
|
|
16
18
|
var styles__default = /*#__PURE__*/_interopDefaultCompat(styles);
|
|
17
19
|
|
|
20
|
+
var getComponent = function (client) {
|
|
21
|
+
switch (client) {
|
|
22
|
+
case 'desktop':
|
|
23
|
+
return desktop.InputDesktop;
|
|
24
|
+
case 'mobile':
|
|
25
|
+
return mobile.InputMobile;
|
|
26
|
+
default:
|
|
27
|
+
return cssm.Input;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
18
30
|
var Search = React.forwardRef(function (_a, ref) {
|
|
19
31
|
var _b = _a.clear, clear = _b === void 0 ? true : _b, _c = _a.placeholder, placeholder = _c === void 0 ? 'Поиск' : _c, className = _a.className, _d = _a.leftAddons, leftAddons = _d === void 0 ? React__default.default.createElement(MagnifierMIcon.MagnifierMIcon, { color: '#86868A' }) : _d, restProps = tslib.__rest(_a, ["clear", "placeholder", "className", "leftAddons"]);
|
|
20
|
-
|
|
32
|
+
var client = restProps.client;
|
|
33
|
+
var Component = getComponent(client);
|
|
34
|
+
return (React__default.default.createElement(Component, tslib.__assign({ ref: ref, className: cn__default.default(styles__default.default.component, className), placeholder: placeholder, leftAddons: leftAddons, clear: clear }, restProps)));
|
|
21
35
|
});
|
|
22
36
|
|
|
23
37
|
exports.Search = Search;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../../../src/components/search/Component.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport cn from 'classnames';\n\nimport { Input } from '@alfalab/core-components-input';\nimport { MagnifierMIcon } from '@alfalab/icons-glyph/MagnifierMIcon';\n\nimport { type SearchProps } from '../../typings';\n\nimport styles from './index.module.css';\n\nexport const Search = forwardRef<HTMLInputElement, SearchProps>(\n (\n {\n clear = true,\n placeholder = 'Поиск',\n className,\n leftAddons = <MagnifierMIcon color='#86868A' />,\n ...restProps\n },\n ref,\n ) => (\n <
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../../../src/components/search/Component.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport cn from 'classnames';\n\nimport { Input } from '@alfalab/core-components-input';\nimport { InputDesktop } from '@alfalab/core-components-input/desktop';\nimport { InputMobile } from '@alfalab/core-components-input/mobile';\nimport { MagnifierMIcon } from '@alfalab/icons-glyph/MagnifierMIcon';\n\nimport { type SearchProps } from '../../typings';\n\nimport styles from './index.module.css';\n\nconst getComponent = (client: SearchProps['client']) => {\n switch (client) {\n case 'desktop':\n return InputDesktop;\n case 'mobile':\n return InputMobile;\n default:\n return Input;\n }\n};\n\nexport const Search = forwardRef<HTMLInputElement, SearchProps>(\n (\n {\n clear = true,\n placeholder = 'Поиск',\n className,\n leftAddons = <MagnifierMIcon color='#86868A' />,\n ...restProps\n },\n ref,\n ) => {\n const { client } = restProps;\n\n const Component = getComponent(client);\n\n return (\n <Component\n ref={ref}\n className={cn(styles.component, className)}\n placeholder={placeholder}\n leftAddons={leftAddons}\n clear={clear}\n {...restProps}\n />\n );\n },\n);\n"],"names":["InputDesktop","InputMobile","Input","forwardRef","React","MagnifierMIcon","__rest","__assign","cn","styles"],"mappings":";;;;;;;;;;;;;;;;;;;AAYA,IAAM,YAAY,GAAG,UAAC,MAA6B,EAAA;AAC/C,IAAA,QAAQ,MAAM;AACV,QAAA,KAAK,SAAS;AACV,YAAA,OAAOA,oBAAY;AACvB,QAAA,KAAK,QAAQ;AACT,YAAA,OAAOC,kBAAW;AACtB,QAAA;AACI,YAAA,OAAOC,UAAK;AACnB;AACL,CAAC;IAEY,MAAM,GAAGC,gBAAU,CAC5B,UACI,EAMC,EACD,GAAG,EAAA;AANC,IAAA,IAAA,EAAY,GAAA,EAAA,CAAA,KAAA,EAAZ,KAAK,GAAA,EAAA,KAAA,MAAA,GAAG,IAAI,GAAA,EAAA,EACZ,EAAqB,GAAA,EAAA,CAAA,WAAA,EAArB,WAAW,GAAA,EAAA,KAAA,MAAA,GAAG,OAAO,GAAA,EAAA,EACrB,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,EAAA,GAAA,EAAA,CAAA,UAA+C,EAA/C,UAAU,GAAG,EAAA,KAAA,MAAA,GAAAC,sBAAA,CAAA,aAAA,CAACC,6BAAc,EAAC,EAAA,KAAK,EAAC,SAAS,GAAG,GAAA,EAAA,EAC5C,SAAS,GAAAC,YAAA,CAAA,EAAA,EALhB,mDAMC,CADe;AAIR,IAAA,IAAA,MAAM,GAAK,SAAS,CAAA,MAAd;AAEd,IAAA,IAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC;AAEtC,IAAA,QACIF,sBAAA,CAAA,aAAA,CAAC,SAAS,EAAAG,cAAA,CAAA,EACN,GAAG,EAAE,GAAG,EACR,SAAS,EAAEC,mBAAE,CAACC,uBAAM,CAAC,SAAS,EAAE,SAAS,CAAC,EAC1C,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EAAA,EACR,SAAS,CAAA,CACf;AAEV,CAAC;;;;"}
|
|
@@ -1,3 +1,36 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { type
|
|
3
|
-
export declare const VirtualOptionsList: React.ForwardRefExoticComponent<
|
|
2
|
+
import { type GroupShape, type OptionShape } from '../../typings';
|
|
3
|
+
export declare const VirtualOptionsList: React.ForwardRefExoticComponent<Pick<import("../../typings").SelectProps, "client"> & {
|
|
4
|
+
className?: string | undefined;
|
|
5
|
+
optionGroupClassName?: string | undefined;
|
|
6
|
+
scrollbarClassName?: string | undefined;
|
|
7
|
+
footerClassName?: string | undefined;
|
|
8
|
+
size?: "s" | "m" | "l" | "xl" | 40 | 48 | 56 | 64 | 72 | undefined;
|
|
9
|
+
Option: React.ComponentType<import("../../typings").OptionProps>;
|
|
10
|
+
getOptionProps: (option: OptionShape, index: number) => import("../../typings").OptionProps;
|
|
11
|
+
groupOptionProps?: import("../../typings").AnyObject | undefined;
|
|
12
|
+
selectedItems?: OptionShape[] | undefined;
|
|
13
|
+
setSelectedItems: (selected: OptionShape[]) => void;
|
|
14
|
+
toggleMenu: () => void;
|
|
15
|
+
header?: React.ReactNode;
|
|
16
|
+
footer?: React.ReactNode;
|
|
17
|
+
options?: (OptionShape | GroupShape)[] | undefined;
|
|
18
|
+
flatOptions?: OptionShape[] | undefined;
|
|
19
|
+
highlightedIndex?: number | undefined;
|
|
20
|
+
open?: boolean | undefined;
|
|
21
|
+
Optgroup?: React.ComponentType<import("../../typings").OptgroupProps> | undefined;
|
|
22
|
+
emptyPlaceholder?: React.ReactNode;
|
|
23
|
+
visibleOptions?: number | undefined;
|
|
24
|
+
onScroll?: ((event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void) | undefined;
|
|
25
|
+
dataTestId?: string | undefined;
|
|
26
|
+
inputProps?: import("@alfalab/core-components-input").InputProps | undefined;
|
|
27
|
+
showFooter?: boolean | undefined;
|
|
28
|
+
nativeScrollbar?: boolean | undefined;
|
|
29
|
+
optionsListWidth?: "field" | "content" | undefined;
|
|
30
|
+
onApply?: (() => void) | undefined;
|
|
31
|
+
onClear?: (() => void) | undefined;
|
|
32
|
+
setHighlightedIndex?: ((index: number) => void) | undefined;
|
|
33
|
+
search?: string | undefined;
|
|
34
|
+
multiple?: boolean | undefined;
|
|
35
|
+
limitDynamicOptionGroupSize?: boolean | undefined;
|
|
36
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -7,10 +7,9 @@ var React = require('react');
|
|
|
7
7
|
var mergeRefs = require('react-merge-refs');
|
|
8
8
|
var reactVirtual = require('react-virtual');
|
|
9
9
|
var cn = require('classnames');
|
|
10
|
-
var cssm = require('@alfalab/core-components-
|
|
11
|
-
var cssm$2 = require('@alfalab/core-components-scrollbar/cssm');
|
|
12
|
-
var cssm$1 = require('@alfalab/core-components-shared/cssm');
|
|
10
|
+
var cssm = require('@alfalab/core-components-scrollbar/cssm');
|
|
13
11
|
var consts = require('../../consts.js');
|
|
12
|
+
var useNativeScrollbar = require('../../hooks/use-native-scrollbar.js');
|
|
14
13
|
var utils = require('../../utils.js');
|
|
15
14
|
var Component = require('../optgroup/Component.js');
|
|
16
15
|
var styles = require('./index.module.css');
|
|
@@ -24,23 +23,21 @@ var styles__default = /*#__PURE__*/_interopDefaultCompat(styles);
|
|
|
24
23
|
|
|
25
24
|
var VirtualOptionsList = React.forwardRef(function (_a, ref) {
|
|
26
25
|
var _b;
|
|
27
|
-
var _c = _a.size, size = _c === void 0 ? 48 : _c, _d = _a.flatOptions, flatOptions = _d === void 0 ? [] : _d, _e = _a.highlightedIndex, highlightedIndex = _e === void 0 ? -1 : _e, optionGroupClassName = _a.optionGroupClassName, className = _a.className, getOptionProps = _a.getOptionProps, _f = _a.groupOptionProps, groupOptionProps = _f === void 0 ? {} : _f, Option = _a.Option, open = _a.open, _g = _a.options, options = _g === void 0 ? [] : _g, _h = _a.Optgroup, Optgroup = _h === void 0 ? Component.Optgroup : _h, dataTestId = _a.dataTestId, emptyPlaceholder = _a.emptyPlaceholder, _j = _a.visibleOptions, visibleOptions = _j === void 0 ? consts.DEFAULT_VISIBLE_OPTIONS : _j, header = _a.header, footer = _a.footer, _k = _a.showFooter, showFooter = _k === void 0 ? true : _k, optionsListWidth = _a.optionsListWidth, onScroll = _a.onScroll, nativeScrollbarProp = _a.nativeScrollbar, setHighlightedIndex = _a.setHighlightedIndex, selectedItems = _a.selectedItems, setSelectedItems = _a.setSelectedItems, search = _a.search, multiple = _a.multiple, scrollbarClassName = _a.scrollbarClassName;
|
|
26
|
+
var _c = _a.size, size = _c === void 0 ? 48 : _c, _d = _a.flatOptions, flatOptions = _d === void 0 ? [] : _d, _e = _a.highlightedIndex, highlightedIndex = _e === void 0 ? -1 : _e, optionGroupClassName = _a.optionGroupClassName, className = _a.className, getOptionProps = _a.getOptionProps, _f = _a.groupOptionProps, groupOptionProps = _f === void 0 ? {} : _f, Option = _a.Option, open = _a.open, _g = _a.options, options = _g === void 0 ? [] : _g, _h = _a.Optgroup, Optgroup = _h === void 0 ? Component.Optgroup : _h, dataTestId = _a.dataTestId, emptyPlaceholder = _a.emptyPlaceholder, _j = _a.visibleOptions, visibleOptions = _j === void 0 ? consts.DEFAULT_VISIBLE_OPTIONS : _j, header = _a.header, footer = _a.footer, _k = _a.showFooter, showFooter = _k === void 0 ? true : _k, optionsListWidth = _a.optionsListWidth, onScroll = _a.onScroll, nativeScrollbarProp = _a.nativeScrollbar, setHighlightedIndex = _a.setHighlightedIndex, selectedItems = _a.selectedItems, setSelectedItems = _a.setSelectedItems, search = _a.search, multiple = _a.multiple, scrollbarClassName = _a.scrollbarClassName, client = _a.client;
|
|
28
27
|
var listRef = React.useRef(null);
|
|
29
28
|
var parentRef = React.useRef(null);
|
|
30
29
|
var scrollbarRef = React.useRef(null);
|
|
31
30
|
var _l = React.useState(''), visibleOptionsInvalidateKey = _l[0], setVisibleOptionsInvalidateKey = _l[1];
|
|
32
31
|
var prevHighlightedIndex = utils.usePrevious(highlightedIndex) || -1;
|
|
33
|
-
var query = '(max-width: 1023px)';
|
|
34
|
-
var nativeScrollbar = cssm.useMatchMedia(query, function () {
|
|
35
|
-
return cssm$1.isClient() ? window.matchMedia(query).matches : true;
|
|
36
|
-
})[0];
|
|
37
32
|
var rowVirtualizer = reactVirtual.useVirtual({
|
|
38
33
|
size: flatOptions.length,
|
|
39
34
|
parentRef: (ref || parentRef),
|
|
40
35
|
overscan: 15,
|
|
41
36
|
});
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
var nativeScrollbar = useNativeScrollbar.useNativeScrollbar({
|
|
38
|
+
nativeScrollbar: nativeScrollbarProp,
|
|
39
|
+
client: client,
|
|
40
|
+
});
|
|
44
41
|
// Сколл к выбранному пункту при открытии меню
|
|
45
42
|
React.useEffect(function () {
|
|
46
43
|
if (open) {
|
|
@@ -140,7 +137,7 @@ var VirtualOptionsList = React.forwardRef(function (_a, ref) {
|
|
|
140
137
|
style: { height: "".concat(rowVirtualizer.totalSize, "px") },
|
|
141
138
|
ref: listRef,
|
|
142
139
|
};
|
|
143
|
-
var renderWithCustomScrollbar = function () { return (React__default.default.createElement(cssm
|
|
140
|
+
var renderWithCustomScrollbar = function () { return (React__default.default.createElement(cssm.Scrollbar, { className: cn__default.default(styles__default.default.scrollable, scrollbarClassName), ref: scrollbarRef, horizontalAutoStretch: optionsListWidth === 'content', scrollableNodeProps: { onScroll: onScroll, ref: parentRef }, contentNodeProps: contentNodeProps }, renderList())); };
|
|
144
141
|
var renderWithNativeScrollbar = function () {
|
|
145
142
|
if (visibleOptions) {
|
|
146
143
|
return (React__default.default.createElement("div", { className: cn__default.default(styles__default.default.scrollable, scrollbarClassName), ref: mergeRefs__default.default([parentRef, ref]), onScroll: onScroll },
|