@alfalab/core-components-select 18.1.0 → 18.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/components/arrow/index.css +4 -4
  2. package/components/arrow/index.module.css.js +1 -1
  3. package/components/base-checkmark/index.css +5 -5
  4. package/components/base-checkmark/index.module.css.js +1 -1
  5. package/components/base-option/Component.js +4 -3
  6. package/components/base-option/Component.js.map +1 -1
  7. package/components/base-option/index.css +16 -16
  8. package/components/base-option/index.module.css.js +1 -1
  9. package/components/base-option/index.module.css.js.map +1 -1
  10. package/components/base-select/Component.js +1 -0
  11. package/components/base-select/Component.js.map +1 -1
  12. package/components/base-select/index.css +11 -11
  13. package/components/base-select/index.module.css.js +1 -1
  14. package/components/base-select/mobile.css +11 -11
  15. package/components/base-select/mobile.module.css.js +1 -1
  16. package/components/checkmark/index.css +9 -9
  17. package/components/checkmark/index.module.css.js +1 -1
  18. package/components/checkmark-mobile/index.css +5 -5
  19. package/components/checkmark-mobile/index.module.css.js +1 -1
  20. package/components/clear-button/index.css +4 -4
  21. package/components/clear-button/index.module.css.js +1 -1
  22. package/components/field/index.css +13 -13
  23. package/components/field/index.module.css.js +1 -1
  24. package/components/footer/index.css +4 -4
  25. package/components/footer/index.module.css.js +1 -1
  26. package/components/optgroup/index.css +4 -4
  27. package/components/optgroup/index.module.css.js +1 -1
  28. package/components/option/desktop/index.css +19 -19
  29. package/components/option/desktop/index.module.css.js +1 -1
  30. package/components/option/mobile/index.css +16 -16
  31. package/components/option/mobile/index.module.css.js +1 -1
  32. package/components/options-list/index.css +9 -9
  33. package/components/options-list/index.module.css.js +1 -1
  34. package/components/search/index.css +1 -1
  35. package/components/search/index.module.css.js +1 -1
  36. package/components/virtual-options-list/index.css +13 -13
  37. package/components/virtual-options-list/index.module.css.js +1 -1
  38. package/cssm/components/base-option/Component.js +4 -3
  39. package/cssm/components/base-option/Component.js.map +1 -1
  40. package/cssm/components/base-select/Component.js +1 -0
  41. package/cssm/components/base-select/Component.js.map +1 -1
  42. package/cssm/typings.d.ts +4 -4
  43. package/esm/components/arrow/index.css +4 -4
  44. package/esm/components/arrow/index.module.css.js +1 -1
  45. package/esm/components/base-checkmark/index.css +5 -5
  46. package/esm/components/base-checkmark/index.module.css.js +1 -1
  47. package/esm/components/base-option/Component.js +4 -3
  48. package/esm/components/base-option/Component.js.map +1 -1
  49. package/esm/components/base-option/index.css +16 -16
  50. package/esm/components/base-option/index.module.css.js +1 -1
  51. package/esm/components/base-option/index.module.css.js.map +1 -1
  52. package/esm/components/base-select/Component.js +1 -0
  53. package/esm/components/base-select/Component.js.map +1 -1
  54. package/esm/components/base-select/index.css +11 -11
  55. package/esm/components/base-select/index.module.css.js +1 -1
  56. package/esm/components/base-select/mobile.css +11 -11
  57. package/esm/components/base-select/mobile.module.css.js +1 -1
  58. package/esm/components/checkmark/index.css +9 -9
  59. package/esm/components/checkmark/index.module.css.js +1 -1
  60. package/esm/components/checkmark-mobile/index.css +5 -5
  61. package/esm/components/checkmark-mobile/index.module.css.js +1 -1
  62. package/esm/components/clear-button/index.css +4 -4
  63. package/esm/components/clear-button/index.module.css.js +1 -1
  64. package/esm/components/field/index.css +13 -13
  65. package/esm/components/field/index.module.css.js +1 -1
  66. package/esm/components/footer/index.css +4 -4
  67. package/esm/components/footer/index.module.css.js +1 -1
  68. package/esm/components/optgroup/index.css +4 -4
  69. package/esm/components/optgroup/index.module.css.js +1 -1
  70. package/esm/components/option/desktop/index.css +19 -19
  71. package/esm/components/option/desktop/index.module.css.js +1 -1
  72. package/esm/components/option/mobile/index.css +16 -16
  73. package/esm/components/option/mobile/index.module.css.js +1 -1
  74. package/esm/components/options-list/index.css +9 -9
  75. package/esm/components/options-list/index.module.css.js +1 -1
  76. package/esm/components/search/index.css +1 -1
  77. package/esm/components/search/index.module.css.js +1 -1
  78. package/esm/components/virtual-options-list/index.css +13 -13
  79. package/esm/components/virtual-options-list/index.module.css.js +1 -1
  80. package/esm/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  81. package/esm/presets/useSelectWithApply/options-list-with-apply/footer/index.module.css.js +1 -1
  82. package/esm/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  83. package/esm/presets/useSelectWithApply/options-list-with-apply/header/index.module.css.js +1 -1
  84. package/esm/presets/useSelectWithLoading/index.css +1 -1
  85. package/esm/presets/useSelectWithLoading/index.module.css.js +1 -1
  86. package/esm/typings.d.ts +4 -4
  87. package/modern/components/arrow/index.css +4 -4
  88. package/modern/components/arrow/index.module.css.js +1 -1
  89. package/modern/components/base-checkmark/index.css +5 -5
  90. package/modern/components/base-checkmark/index.module.css.js +1 -1
  91. package/modern/components/base-option/Component.js +1 -1
  92. package/modern/components/base-option/Component.js.map +1 -1
  93. package/modern/components/base-option/index.css +16 -16
  94. package/modern/components/base-option/index.module.css.js +1 -1
  95. package/modern/components/base-option/index.module.css.js.map +1 -1
  96. package/modern/components/base-select/Component.js +1 -0
  97. package/modern/components/base-select/Component.js.map +1 -1
  98. package/modern/components/base-select/index.css +11 -11
  99. package/modern/components/base-select/index.module.css.js +1 -1
  100. package/modern/components/base-select/mobile.css +11 -11
  101. package/modern/components/base-select/mobile.module.css.js +1 -1
  102. package/modern/components/checkmark/index.css +9 -9
  103. package/modern/components/checkmark/index.module.css.js +1 -1
  104. package/modern/components/checkmark-mobile/index.css +5 -5
  105. package/modern/components/checkmark-mobile/index.module.css.js +1 -1
  106. package/modern/components/clear-button/index.css +4 -4
  107. package/modern/components/clear-button/index.module.css.js +1 -1
  108. package/modern/components/field/index.css +13 -13
  109. package/modern/components/field/index.module.css.js +1 -1
  110. package/modern/components/footer/index.css +4 -4
  111. package/modern/components/footer/index.module.css.js +1 -1
  112. package/modern/components/optgroup/index.css +4 -4
  113. package/modern/components/optgroup/index.module.css.js +1 -1
  114. package/modern/components/option/desktop/index.css +19 -19
  115. package/modern/components/option/desktop/index.module.css.js +1 -1
  116. package/modern/components/option/mobile/index.css +16 -16
  117. package/modern/components/option/mobile/index.module.css.js +1 -1
  118. package/modern/components/options-list/index.css +9 -9
  119. package/modern/components/options-list/index.module.css.js +1 -1
  120. package/modern/components/search/index.css +1 -1
  121. package/modern/components/search/index.module.css.js +1 -1
  122. package/modern/components/virtual-options-list/index.css +13 -13
  123. package/modern/components/virtual-options-list/index.module.css.js +1 -1
  124. package/modern/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  125. package/modern/presets/useSelectWithApply/options-list-with-apply/footer/index.module.css.js +1 -1
  126. package/modern/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  127. package/modern/presets/useSelectWithApply/options-list-with-apply/header/index.module.css.js +1 -1
  128. package/modern/presets/useSelectWithLoading/index.css +1 -1
  129. package/modern/presets/useSelectWithLoading/index.module.css.js +1 -1
  130. package/modern/typings.d.ts +4 -4
  131. package/moderncssm/components/base-option/Component.js +1 -1
  132. package/moderncssm/components/base-option/Component.js.map +1 -1
  133. package/moderncssm/components/base-select/Component.js +1 -0
  134. package/moderncssm/components/base-select/Component.js.map +1 -1
  135. package/moderncssm/typings.d.ts +4 -4
  136. package/package.json +4 -4
  137. package/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  138. package/presets/useSelectWithApply/options-list-with-apply/footer/index.module.css.js +1 -1
  139. package/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  140. package/presets/useSelectWithApply/options-list-with-apply/header/index.module.css.js +1 -1
  141. package/presets/useSelectWithLoading/index.css +1 -1
  142. package/presets/useSelectWithLoading/index.module.css.js +1 -1
  143. package/src/components/base-option/Component.tsx +1 -0
  144. package/src/components/base-select/Component.tsx +2 -0
  145. package/src/typings.ts +4 -4
  146. package/typings.d.ts +4 -4
@@ -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 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-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":["ResizeObserver","ResizeObserverPolyfill"],"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 />\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":["ResizeObserver","ResizeObserverPolyfill"],"mappings":"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"}
@@ -46,7 +46,7 @@ export declare type BaseSelectChangePayload = {
46
46
  initiator: OptionShape | null;
47
47
  name?: string;
48
48
  };
49
- export declare type BaseSelectProps = {
49
+ export interface BaseSelectProps {
50
50
  /**
51
51
  * Идентификатор для систем автоматизированного тестирования.
52
52
  * Для пункта меню используется модификатор -option, компонента поиска -search,
@@ -306,7 +306,7 @@ export declare type BaseSelectProps = {
306
306
  * @default window
307
307
  */
308
308
  environment?: Environment;
309
- };
309
+ }
310
310
  export declare type FieldProps = {
311
311
  /**
312
312
  * Дополнительный класс
@@ -646,12 +646,12 @@ export declare type OptionCommonProps = {
646
646
  */
647
647
  align?: 'start' | 'center';
648
648
  };
649
- export declare type OptionProps = OptionCommonProps & {
649
+ export interface OptionProps extends OptionCommonProps, AriaAttributes {
650
650
  /**
651
651
  * Мобильная версия option.
652
652
  */
653
653
  mobile?: boolean;
654
- };
654
+ }
655
655
  export declare type CheckmarkProps = {
656
656
  /**
657
657
  * Флаг, данный пункт выбран
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-select",
3
- "version": "18.1.0",
3
+ "version": "18.2.0",
4
4
  "description": "Select component",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -12,17 +12,17 @@
12
12
  "dependencies": {
13
13
  "@alfalab/core-components-badge": "^6.0.0",
14
14
  "@alfalab/core-components-base-modal": "^6.0.1",
15
- "@alfalab/core-components-bottom-sheet": "^7.0.1",
15
+ "@alfalab/core-components-bottom-sheet": "^7.0.2",
16
16
  "@alfalab/core-components-button": "^12.0.1",
17
17
  "@alfalab/core-components-checkbox": "^5.0.1",
18
18
  "@alfalab/core-components-form-control": "^13.0.1",
19
19
  "@alfalab/core-components-input": "^16.0.2",
20
- "@alfalab/core-components-modal": "^10.0.1",
20
+ "@alfalab/core-components-modal": "^10.0.2",
21
21
  "@alfalab/core-components-mq": "^5.0.1",
22
22
  "@alfalab/core-components-popover": "^7.1.0",
23
23
  "@alfalab/core-components-scrollbar": "^4.0.0",
24
24
  "@alfalab/core-components-shared": "^1.1.0",
25
- "@alfalab/core-components-skeleton": "^6.0.0",
25
+ "@alfalab/core-components-skeleton": "^6.0.1",
26
26
  "@alfalab/hooks": "^1.13.1",
27
27
  "@alfalab/icons-glyph": "^2.247.0",
28
28
  "@juggle/resize-observer": "^3.3.1",
@@ -9,12 +9,12 @@
9
9
  --gap-16: var(--gap-m);
10
10
  } :root {
11
11
  --select-option-list-footer-button-gap: var(--gap-8);
12
- } .select__footer_u1uq1 {
12
+ } .select__footer_88c30 {
13
13
  background-color: var(--color-light-base-bg-primary);
14
14
  padding: var(--gap-12);
15
15
  outline: none;
16
- } .select__footer_u1uq1.select__size-72_u1uq1 {
16
+ } .select__footer_88c30.select__size-72_88c30 {
17
17
  padding: var(--gap-12) var(--gap-16);
18
- } .select__footer_u1uq1 > .select__button_u1uq1 + .select__button_u1uq1 {
18
+ } .select__footer_88c30 > .select__button_88c30 + .select__button_88c30 {
19
19
  margin-left: var(--select-option-list-footer-button-gap);
20
20
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  require('./index.css');
4
4
 
5
- var styles = {"footer":"select__footer_u1uq1","size-72":"select__size-72_u1uq1","button":"select__button_u1uq1"};
5
+ var styles = {"footer":"select__footer_88c30","size-72":"select__size-72_88c30","button":"select__button_88c30"};
6
6
 
7
7
  module.exports = styles;
8
8
  //# sourceMappingURL=index.module.css.js.map
@@ -5,10 +5,10 @@
5
5
  --gap-8: var(--gap-xs);
6
6
  --gap-12: var(--gap-s);
7
7
  --gap-16: var(--gap-m);
8
- } .select__desktop_1mnbd {
8
+ } .select__desktop_gc1l7 {
9
9
  padding: var(--gap-12);
10
- } .select__desktop_1mnbd.select__size-72_1mnbd {
10
+ } .select__desktop_gc1l7.select__size-72_gc1l7 {
11
11
  padding-left: var(--gap-16);
12
- } .select__mobile_1mnbd {
12
+ } .select__mobile_gc1l7 {
13
13
  padding: var(--gap-12) var(--gap-8);
14
14
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  require('./index.css');
4
4
 
5
- var styles = {"desktop":"select__desktop_1mnbd","size-72":"select__size-72_1mnbd","mobile":"select__mobile_1mnbd"};
5
+ var styles = {"desktop":"select__desktop_gc1l7","size-72":"select__size-72_gc1l7","mobile":"select__mobile_gc1l7"};
6
6
 
7
7
  module.exports = styles;
8
8
  //# sourceMappingURL=index.module.css.js.map
@@ -1,4 +1,4 @@
1
- .select__skeleton_j3bo9 {
1
+ .select__skeleton_ccn9f {
2
2
  position: absolute;
3
3
  top: 50%;
4
4
  transform: translateY(-50%);
@@ -2,7 +2,7 @@
2
2
 
3
3
  require('./index.css');
4
4
 
5
- var styles = {"skeleton":"select__skeleton_j3bo9"};
5
+ var styles = {"skeleton":"select__skeleton_ccn9f"};
6
6
 
7
7
  module.exports = styles;
8
8
  //# sourceMappingURL=index.module.css.js.map
@@ -60,6 +60,7 @@ export const BaseOption: FC<OptionProps> = ({
60
60
  [styles.checkmarkBefore]: !isTextContent && checkmarkPosition === 'before',
61
61
  })}
62
62
  data-test-id={dataTestId}
63
+ aria-label={option?.value?.name}
63
64
  >
64
65
  {checkmarkPosition === 'before' && renderCheckmark()}
65
66
 
@@ -1,5 +1,6 @@
1
1
  /* eslint-disable no-nested-ternary */
2
2
  import React, {
3
+ type AriaAttributes,
3
4
  type FocusEvent,
4
5
  forwardRef,
5
6
  type KeyboardEvent,
@@ -849,6 +850,7 @@ export const BaseSelect = forwardRef<unknown, ComponentProps>(
849
850
  tabIndex: disabled ? undefined : nativeSelect ? -1 : 0,
850
851
  ref: inputProps.ref,
851
852
  id: inputProps.id,
853
+ 'aria-label': (optionProps as AriaAttributes)['aria-label'],
852
854
  'aria-labelledby': inputProps['aria-labelledby'],
853
855
  'aria-controls': inputProps['aria-controls'],
854
856
  'aria-autocomplete': autocomplete
package/src/typings.ts CHANGED
@@ -73,7 +73,7 @@ export type BaseSelectChangePayload = {
73
73
  name?: string;
74
74
  };
75
75
 
76
- export type BaseSelectProps = {
76
+ export interface BaseSelectProps {
77
77
  /**
78
78
  * Идентификатор для систем автоматизированного тестирования.
79
79
  * Для пункта меню используется модификатор -option, компонента поиска -search,
@@ -401,7 +401,7 @@ export type BaseSelectProps = {
401
401
  * @default window
402
402
  */
403
403
  environment?: Environment;
404
- };
404
+ }
405
405
 
406
406
  // TODO: использовать InputProps
407
407
  export type FieldProps = {
@@ -824,12 +824,12 @@ export type OptionCommonProps = {
824
824
  align?: 'start' | 'center';
825
825
  };
826
826
 
827
- export type OptionProps = OptionCommonProps & {
827
+ export interface OptionProps extends OptionCommonProps, AriaAttributes {
828
828
  /**
829
829
  * Мобильная версия option.
830
830
  */
831
831
  mobile?: boolean;
832
- };
832
+ }
833
833
 
834
834
  export type CheckmarkProps = {
835
835
  /**
package/typings.d.ts CHANGED
@@ -46,7 +46,7 @@ export declare type BaseSelectChangePayload = {
46
46
  initiator: OptionShape | null;
47
47
  name?: string;
48
48
  };
49
- export declare type BaseSelectProps = {
49
+ export interface BaseSelectProps {
50
50
  /**
51
51
  * Идентификатор для систем автоматизированного тестирования.
52
52
  * Для пункта меню используется модификатор -option, компонента поиска -search,
@@ -306,7 +306,7 @@ export declare type BaseSelectProps = {
306
306
  * @default window
307
307
  */
308
308
  environment?: Environment;
309
- };
309
+ }
310
310
  export declare type FieldProps = {
311
311
  /**
312
312
  * Дополнительный класс
@@ -646,12 +646,12 @@ export declare type OptionCommonProps = {
646
646
  */
647
647
  align?: 'start' | 'center';
648
648
  };
649
- export declare type OptionProps = OptionCommonProps & {
649
+ export interface OptionProps extends OptionCommonProps, AriaAttributes {
650
650
  /**
651
651
  * Мобильная версия option.
652
652
  */
653
653
  mobile?: boolean;
654
- };
654
+ }
655
655
  export declare type CheckmarkProps = {
656
656
  /**
657
657
  * Флаг, данный пункт выбран