@vkontakte/vkui 5.0.1 → 5.0.3

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 (150) hide show
  1. package/dist/cjs/components/Alert/Alert.d.ts +3 -3
  2. package/dist/cjs/components/Alert/Alert.js +13 -9
  3. package/dist/cjs/components/Alert/Alert.js.map +1 -1
  4. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +2 -2
  5. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  6. package/dist/cjs/components/CustomScrollView/CustomScrollView.js +3 -1
  7. package/dist/cjs/components/CustomScrollView/CustomScrollView.js.map +1 -1
  8. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +4 -0
  9. package/dist/cjs/components/CustomSelect/CustomSelect.js +11 -6
  10. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  11. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.d.ts +1 -0
  12. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js +2 -1
  13. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  14. package/dist/cjs/components/FocusVisible/FocusVisible.js +2 -2
  15. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js +3 -4
  16. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  17. package/dist/cjs/components/Popover/Popover.js +10 -1
  18. package/dist/cjs/components/Popover/Popover.js.map +1 -1
  19. package/dist/cjs/components/SegmentedControl/SegmentedControl.js +3 -2
  20. package/dist/cjs/components/SegmentedControl/SegmentedControl.js.map +1 -1
  21. package/dist/cjs/components/SplitCol/SplitCol.js +43 -26
  22. package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
  23. package/dist/cjs/components/Tappable/Tappable.d.ts +2 -2
  24. package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
  25. package/dist/cjs/components/Tooltip/Tooltip.d.ts +4 -0
  26. package/dist/cjs/components/Tooltip/Tooltip.js +3 -2
  27. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  28. package/dist/cjs/hooks/useEventListener.js +6 -4
  29. package/dist/cjs/hooks/useEventListener.js.map +1 -1
  30. package/dist/cjs/hooks/useMediaQueries.js +1 -0
  31. package/dist/cjs/hooks/useMediaQueries.js.map +1 -1
  32. package/dist/cjs/lib/adaptivity/types.d.ts +1 -1
  33. package/dist/cjs/lib/adaptivity/types.js.map +1 -1
  34. package/dist/cjs/lib/browser.js +0 -1
  35. package/dist/cjs/lib/browser.js.map +1 -1
  36. package/dist/cjs/lib/utils.d.ts +0 -1
  37. package/dist/cjs/lib/utils.js +0 -5
  38. package/dist/cjs/lib/utils.js.map +1 -1
  39. package/dist/cjs/shared/breakpoints.d.ts +1 -0
  40. package/dist/cjs/shared/breakpoints.js +1 -0
  41. package/dist/cjs/shared/breakpoints.js.map +1 -1
  42. package/dist/cjs/types.d.ts +6 -0
  43. package/dist/cjs/types.js.map +1 -1
  44. package/dist/components/Alert/Alert.d.ts +3 -3
  45. package/dist/components/Alert/Alert.js +13 -9
  46. package/dist/components/Alert/Alert.js.map +1 -1
  47. package/dist/components/ChipsSelect/ChipsSelect.js +2 -2
  48. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  49. package/dist/components/CustomScrollView/CustomScrollView.js +3 -1
  50. package/dist/components/CustomScrollView/CustomScrollView.js.map +1 -1
  51. package/dist/components/CustomSelect/CustomSelect.d.ts +4 -0
  52. package/dist/components/CustomSelect/CustomSelect.js +11 -6
  53. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  54. package/dist/components/CustomSelectOption/CustomSelectOption.d.ts +1 -0
  55. package/dist/components/CustomSelectOption/CustomSelectOption.js +2 -1
  56. package/dist/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  57. package/dist/components/FocusVisible/FocusVisible.js +2 -2
  58. package/dist/components/PanelHeaderButton/PanelHeaderButton.js +3 -4
  59. package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  60. package/dist/components/Popover/Popover.js +10 -1
  61. package/dist/components/Popover/Popover.js.map +1 -1
  62. package/dist/components/SegmentedControl/SegmentedControl.js +4 -3
  63. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  64. package/dist/components/SplitCol/SplitCol.js +43 -26
  65. package/dist/components/SplitCol/SplitCol.js.map +1 -1
  66. package/dist/components/Tappable/Tappable.d.ts +2 -2
  67. package/dist/components/Tappable/Tappable.js.map +1 -1
  68. package/dist/components/Tooltip/Tooltip.d.ts +4 -0
  69. package/dist/components/Tooltip/Tooltip.js +3 -2
  70. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  71. package/dist/components.css +4 -4
  72. package/dist/components.css.map +1 -1
  73. package/dist/cssm/components/Alert/Alert.d.ts +3 -3
  74. package/dist/cssm/components/Alert/Alert.js +13 -9
  75. package/dist/cssm/components/Alert/Alert.js.map +1 -1
  76. package/dist/cssm/components/Alert/Alert.module.css +1 -1
  77. package/dist/cssm/components/Banner/Banner.module.css +1 -1
  78. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +2 -2
  79. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  80. package/dist/cssm/components/ChipsSelect/ChipsSelect.module.css +1 -1
  81. package/dist/cssm/components/CustomScrollView/CustomScrollView.js +3 -1
  82. package/dist/cssm/components/CustomScrollView/CustomScrollView.js.map +1 -1
  83. package/dist/cssm/components/CustomSelect/CustomSelect.d.ts +4 -0
  84. package/dist/cssm/components/CustomSelect/CustomSelect.js +11 -6
  85. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  86. package/dist/cssm/components/CustomSelect/CustomSelect.module.css +1 -1
  87. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.d.ts +1 -0
  88. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js +2 -1
  89. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  90. package/dist/cssm/components/FocusVisible/FocusVisible.js +2 -2
  91. package/dist/cssm/components/FocusVisible/FocusVisible.module.css +1 -1
  92. package/dist/cssm/components/FormField/FormField.module.css +1 -1
  93. package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.module.css +1 -1
  94. package/dist/cssm/components/Input/Input.module.css +1 -1
  95. package/dist/cssm/components/PanelHeader/PanelHeader.module.css +1 -1
  96. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +3 -4
  97. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  98. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.module.css +1 -1
  99. package/dist/cssm/components/Popover/Popover.js +10 -1
  100. package/dist/cssm/components/Popover/Popover.js.map +1 -1
  101. package/dist/cssm/components/SegmentedControl/SegmentedControl.js +4 -3
  102. package/dist/cssm/components/SegmentedControl/SegmentedControl.js.map +1 -1
  103. package/dist/cssm/components/SimpleCell/SimpleCell.module.css +1 -1
  104. package/dist/cssm/components/SplitCol/SplitCol.js +43 -26
  105. package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
  106. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.module.css +1 -1
  107. package/dist/cssm/components/Tappable/Tappable.d.ts +2 -2
  108. package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
  109. package/dist/cssm/components/Tappable/Tappable.module.css +1 -1
  110. package/dist/cssm/components/Textarea/Textarea.module.css +1 -1
  111. package/dist/cssm/components/Tooltip/Tooltip.d.ts +4 -0
  112. package/dist/cssm/components/Tooltip/Tooltip.js +3 -2
  113. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  114. package/dist/cssm/components/WriteBar/WriteBar.module.css +1 -1
  115. package/dist/cssm/hooks/useEventListener.js +6 -4
  116. package/dist/cssm/hooks/useEventListener.js.map +1 -1
  117. package/dist/cssm/hooks/useMediaQueries.js +1 -0
  118. package/dist/cssm/hooks/useMediaQueries.js.map +1 -1
  119. package/dist/cssm/lib/adaptivity/types.d.ts +1 -1
  120. package/dist/cssm/lib/adaptivity/types.js.map +1 -1
  121. package/dist/cssm/lib/browser.js +0 -1
  122. package/dist/cssm/lib/browser.js.map +1 -1
  123. package/dist/cssm/lib/utils.d.ts +0 -1
  124. package/dist/cssm/lib/utils.js +0 -3
  125. package/dist/cssm/lib/utils.js.map +1 -1
  126. package/dist/cssm/shared/breakpoints.d.ts +1 -0
  127. package/dist/cssm/shared/breakpoints.js +1 -0
  128. package/dist/cssm/shared/breakpoints.js.map +1 -1
  129. package/dist/cssm/styles/components.css +4 -4
  130. package/dist/cssm/types.d.ts +6 -0
  131. package/dist/cssm/types.js.map +1 -1
  132. package/dist/hooks/useEventListener.js +6 -4
  133. package/dist/hooks/useEventListener.js.map +1 -1
  134. package/dist/hooks/useMediaQueries.js +1 -0
  135. package/dist/hooks/useMediaQueries.js.map +1 -1
  136. package/dist/lib/adaptivity/types.d.ts +1 -1
  137. package/dist/lib/adaptivity/types.js.map +1 -1
  138. package/dist/lib/browser.js +0 -1
  139. package/dist/lib/browser.js.map +1 -1
  140. package/dist/lib/utils.d.ts +0 -1
  141. package/dist/lib/utils.js +0 -3
  142. package/dist/lib/utils.js.map +1 -1
  143. package/dist/shared/breakpoints.d.ts +1 -0
  144. package/dist/shared/breakpoints.js +1 -0
  145. package/dist/shared/breakpoints.js.map +1 -1
  146. package/dist/types.d.ts +6 -0
  147. package/dist/types.js.map +1 -1
  148. package/dist/vkui.css +4 -4
  149. package/dist/vkui.css.map +1 -1
  150. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"CustomSelect.js","names":["React","SelectMimicry","debounce","multiRef","getTitleFromChildren","classNamesString","CustomSelectOption","Input","DropdownIcon","Footnote","warnOnce","defaultFilterFn","getFormFieldModeFromSelectType","CustomSelectDropdown","useIsomorphicLayoutEffect","findIndexAfter","options","startIndex","length","findIndex","option","i","disabled","findIndexBefore","endIndex","result","warn","checkOptionsValueType","Set","map","item","value","size","defaultRenderOptionFn","props","handleOptionDown","e","preventDefault","findSelectedIndex","Number","filter","inputValue","filterFn","defaultOptions","CustomSelect","useState","opened","setOpened","before","name","className","getRef","getRootRef","popupDirection","style","onChange","children","onInputChangeProp","onInputChange","renderDropdown","onOpen","onClose","fetching","forceDropdownPortal","selectType","autoHideScrollbar","autoHideScrollbarDelay","searchable","renderOption","renderOptionProp","optionsProp","emptyText","icon","dropdownOffsetDistance","fixDropdownWidth","restProps","process","env","NODE_ENV","containerRef","useRef","scrollBoxRef","selectElRef","focusedOptionIndex","setFocusedOptionIndex","undefined","isControlledOutside","setIsControlledOutside","setInputValue","defaultValue","nativeSelectValue","setNativeSelectValue","keyboardInput","setKeyboardInput","popperPlacement","setPopperPlacement","setOptions","selectedOptionIndex","setSelectedOptionIndex","useEffect","event","Event","bubbles","current","dispatchEvent","selected","useMemo","openedClassNames","includes","resetKeyboardInput","useCallback","scrollToElement","index","center","dropdown","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","isValidIndex","focusOptionByIndex","scrollTo","areOptionsShown","setScrollBoxRef","ref","onKeyboardInput","key","fullInput","optionIndex","label","toLowerCase","close","selectFocused","open","onBlur","resetFocusedOption","onFocus","onClick","handleKeyUp","focusOption","type","nextIndex","beforeIndex","onLabelClick","contains","target","onNativeSelectChange","newSelectedOptionIndex","currentTarget","onInputKeyDown","handleKeyDownSelect","handleOptionClick","Array","prototype","indexOf","call","parentNode","handleOptionHover","hovered","onMouseDown","onMouseOver","resolvedContent","defaultDropdownContent","placeholder"],"sources":["../../../../src/components/CustomSelect/CustomSelect.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { SelectMimicry } from \"../SelectMimicry/SelectMimicry\";\nimport { debounce, multiRef, getTitleFromChildren } from \"../../lib/utils\";\nimport { classNamesString } from \"../../lib/classNames\";\nimport { NativeSelectProps } from \"../NativeSelect/NativeSelect\";\nimport {\n CustomSelectOption,\n CustomSelectOptionProps,\n} from \"../CustomSelectOption/CustomSelectOption\";\nimport { FormFieldProps } from \"../FormField/FormField\";\nimport { Input } from \"../Input/Input\";\nimport { DropdownIcon } from \"../DropdownIcon/DropdownIcon\";\nimport { Footnote } from \"../Typography/Footnote/Footnote\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport {\n defaultFilterFn,\n getFormFieldModeFromSelectType,\n} from \"../../lib/select\";\nimport { Placement } from \"../Popper/Popper\";\nimport { CustomSelectDropdown } from \"../CustomSelectDropdown/CustomSelectDropdown\";\nimport { TrackerOptionsProps } from \"../CustomScrollView/useTrackerVisibility\";\nimport { SelectType } from \"../Select/Select\";\nimport { useIsomorphicLayoutEffect } from \"../../lib/useIsomorphicLayoutEffect\";\nimport styles from \"./CustomSelect.module.css\";\n\nconst findIndexAfter = (\n options: CustomSelectOptionInterface[] = [],\n startIndex = -1\n) => {\n if (startIndex >= options.length - 1) {\n return -1;\n }\n return options.findIndex((option, i) => i > startIndex && !option.disabled);\n};\n\nconst findIndexBefore = (\n options: CustomSelectOptionInterface[] = [],\n endIndex: number = options.length\n) => {\n let result = -1;\n if (endIndex <= 0) {\n return result;\n }\n for (let i = endIndex - 1; i >= 0; i--) {\n let option = options[i];\n\n if (!option.disabled) {\n result = i;\n break;\n }\n }\n return result;\n};\n\nconst warn = warnOnce(\"CustomSelect\");\n\nconst checkOptionsValueType = (options: CustomSelectOptionInterface[]) => {\n if (new Set(options.map((item) => typeof item.value)).size > 1) {\n warn(\n \"Некоторые значения ваших опций имеют разные типы. onChange всегда возвращает строковый тип.\",\n \"error\"\n );\n }\n};\n\nfunction defaultRenderOptionFn({\n option,\n ...props\n}: CustomSelectOptionProps): React.ReactNode {\n return <CustomSelectOption {...props} />;\n}\n\nconst handleOptionDown: MouseEventHandler = (\n e: React.MouseEvent<HTMLElement>\n) => {\n e.preventDefault();\n};\n\nfunction findSelectedIndex(\n options: CustomSelectOptionInterface[],\n value: SelectValue\n) {\n return (\n options.findIndex((item) => {\n value = typeof item.value === \"number\" ? Number(value) : value;\n return item.value === value;\n }) ?? -1\n );\n}\n\nconst filter = (\n options: SelectProps[\"options\"],\n inputValue: string,\n filterFn: SelectProps[\"filterFn\"]\n) => {\n return typeof filterFn === \"function\"\n ? options.filter((option) => filterFn(inputValue, option))\n : options;\n};\n\nconst defaultOptions: CustomSelectOptionInterface[] = [];\n\ntype SelectValue = React.SelectHTMLAttributes<HTMLSelectElement>[\"value\"];\n\nexport interface CustomSelectOptionInterface {\n value: SelectValue;\n label: React.ReactElement | string;\n disabled?: boolean;\n [index: string]: any;\n}\n\nexport interface SelectProps\n extends NativeSelectProps,\n FormFieldProps,\n TrackerOptionsProps {\n /**\n * Если `true`, то при клике на селект в нём появится текстовое поле для поиска по `options`. По умолчанию поиск\n * производится по `option.label`.\n */\n searchable?: boolean;\n /**\n * Текст, который будет отображен, если приходит пустой `options`.\n */\n emptyText?: string;\n onInputChange?: (\n e: React.ChangeEvent,\n options: CustomSelectOptionInterface[]\n ) => void | CustomSelectOptionInterface[];\n options: CustomSelectOptionInterface[];\n /**\n * Функция для кастомной фильтрации. По умолчанию поиск производится по `option.label`.\n */\n filterFn?:\n | false\n | ((\n value: string,\n option: CustomSelectOptionInterface,\n getOptionLabel?: (\n option: Partial<CustomSelectOptionInterface>\n ) => string\n ) => boolean);\n popupDirection?: \"top\" | \"bottom\";\n /**\n * Рендер-проп для кастомного рендера опции.\n * В объекте аргумента приходят [свойства опции](https://vkcom.github.io/VKUI/#/CustomSelectOption?id=props)\n */\n renderOption?: (props: CustomSelectOptionProps) => React.ReactNode;\n /**\n * Рендер-проп для кастомного рендера содержимого дропдауна.\n * В `defaultDropdownContent` содержится список опций в виде скроллящегося блока.\n */\n renderDropdown?: ({\n defaultDropdownContent,\n }: {\n defaultDropdownContent: React.ReactNode;\n }) => React.ReactNode;\n /**\n * Если `true`, то в дропдауне вместо списка опций рисуется спиннер. При переданных `renderDropdown` и `fetching: true`\n * \"победит\" `renderDropdown`.\n */\n fetching?: boolean;\n onClose?: VoidFunction;\n onOpen?: VoidFunction;\n icon?: React.ReactNode;\n dropdownOffsetDistance?: number;\n fixDropdownWidth?: boolean;\n forceDropdownPortal?: boolean;\n selectType?: SelectType;\n}\n\ntype MouseEventHandler = (event: React.MouseEvent<HTMLElement>) => void;\n\n/**\n * @see https://vkcom.github.io/VKUI/#/CustomSelect\n */\nexport function CustomSelect(props: SelectProps) {\n const [opened, setOpened] = React.useState(false);\n const {\n before,\n name,\n className,\n getRef,\n getRootRef,\n popupDirection,\n style,\n onChange,\n children,\n onInputChange: onInputChangeProp,\n renderDropdown,\n onOpen,\n onClose,\n fetching,\n forceDropdownPortal,\n selectType = \"default\",\n autoHideScrollbar,\n autoHideScrollbarDelay,\n searchable = false,\n renderOption: renderOptionProp = defaultRenderOptionFn,\n options: optionsProp = defaultOptions,\n emptyText = \"Ничего не найдено\",\n filterFn = defaultFilterFn,\n icon = <DropdownIcon opened={opened} />,\n dropdownOffsetDistance = 0,\n fixDropdownWidth = true,\n ...restProps\n } = props;\n\n if (process.env.NODE_ENV === \"development\") {\n checkOptionsValueType(optionsProp);\n }\n\n const containerRef = React.useRef<HTMLLabelElement>(null);\n const scrollBoxRef = React.useRef<HTMLDivElement | null>(null);\n const selectElRef = React.useRef<HTMLSelectElement>(null);\n\n const [focusedOptionIndex, setFocusedOptionIndex] = React.useState<\n number | undefined\n >(-1);\n const [isControlledOutside, setIsControlledOutside] = React.useState(\n props.value !== undefined\n );\n const [inputValue, setInputValue] = React.useState(\"\");\n const [nativeSelectValue, setNativeSelectValue] = React.useState(\n props.value ?? props.defaultValue\n );\n const [keyboardInput, setKeyboardInput] = React.useState(\"\");\n const [popperPlacement, setPopperPlacement] = React.useState<\n Placement | undefined\n >(undefined);\n const [options, setOptions] = React.useState(optionsProp);\n const [selectedOptionIndex, setSelectedOptionIndex] = React.useState<\n number | undefined\n >(findSelectedIndex(optionsProp, props.value ?? props.defaultValue));\n\n React.useEffect(() => {\n setIsControlledOutside(props.value !== undefined);\n setNativeSelectValue(\n (nativeSelectValue) => props.value ?? nativeSelectValue\n );\n }, [props.value]);\n\n useIsomorphicLayoutEffect(() => {\n if (nativeSelectValue !== undefined) {\n const event = new Event(\"change\", { bubbles: true });\n\n selectElRef.current?.dispatchEvent(event);\n }\n }, [nativeSelectValue]);\n\n const selected = React.useMemo(() => {\n if (!options.length) {\n return null;\n }\n\n return selectedOptionIndex !== undefined\n ? options[selectedOptionIndex]\n : undefined;\n }, [options, selectedOptionIndex]);\n\n const openedClassNames = React.useMemo(\n () =>\n classNamesString(\n opened &&\n dropdownOffsetDistance === 0 &&\n (popperPlacement?.includes(\"top\")\n ? styles[\"CustomSelect--pop-up\"]\n : styles[\"CustomSelect--pop-down\"])\n ),\n [dropdownOffsetDistance, opened, popperPlacement]\n );\n\n const resetKeyboardInput = React.useCallback(() => {\n setKeyboardInput(\"\");\n }, []);\n\n const scrollToElement = React.useCallback((index: number, center = false) => {\n const dropdown = scrollBoxRef.current;\n const item = dropdown ? (dropdown.children[index] as HTMLElement) : null;\n\n if (!item || !dropdown) {\n return;\n }\n\n const dropdownHeight = dropdown.offsetHeight;\n const scrollTop = dropdown.scrollTop;\n const itemTop = item.offsetTop;\n const itemHeight = item.offsetHeight;\n\n if (center) {\n dropdown.scrollTop = itemTop - dropdownHeight / 2 + itemHeight / 2;\n } else if (itemTop + itemHeight > dropdownHeight + scrollTop) {\n dropdown.scrollTop = itemTop - dropdownHeight + itemHeight;\n } else if (itemTop < scrollTop) {\n dropdown.scrollTop = itemTop;\n }\n }, []);\n\n const isValidIndex = React.useCallback(\n (index: number) => {\n return index >= 0 && index < (options.length ?? 0);\n },\n [options.length]\n );\n\n const focusOptionByIndex = React.useCallback(\n (index: number | undefined, scrollTo = true) => {\n if (\n index === undefined ||\n index < 0 ||\n index > (options.length ?? 0) - 1\n ) {\n return;\n }\n\n const option = options[index];\n\n if (option?.disabled) {\n return;\n }\n\n if (scrollTo) {\n scrollToElement(index);\n }\n\n // Это оптимизация, прежде всего, под `onMouseOver`\n setFocusedOptionIndex((focusedOptionIndex) =>\n focusedOptionIndex !== index ? index : focusedOptionIndex\n );\n },\n [options, scrollToElement]\n );\n\n const areOptionsShown = React.useCallback(() => {\n return scrollBoxRef.current !== null;\n }, []);\n\n const setScrollBoxRef = React.useCallback(\n (ref: HTMLDivElement | null) => {\n scrollBoxRef.current = ref;\n\n if (\n ref &&\n selectedOptionIndex !== undefined &&\n isValidIndex(selectedOptionIndex)\n ) {\n {\n scrollToElement(selectedOptionIndex, true);\n }\n }\n },\n [isValidIndex, scrollToElement, selectedOptionIndex]\n );\n\n const onKeyboardInput = React.useCallback(\n (key: string) => {\n const fullInput = keyboardInput + key;\n\n const optionIndex = options.findIndex((option) => {\n return getTitleFromChildren(option.label)\n .toLowerCase()\n .includes(fullInput);\n });\n\n if (optionIndex !== undefined && optionIndex > -1) {\n focusOptionByIndex(optionIndex);\n }\n\n setKeyboardInput(fullInput);\n },\n [focusOptionByIndex, keyboardInput, options]\n );\n\n const close = React.useCallback(() => {\n resetKeyboardInput();\n\n setInputValue(\"\");\n setOpened(false);\n setFocusedOptionIndex(-1);\n setOptions(optionsProp);\n onClose?.();\n }, [onClose, optionsProp, resetKeyboardInput]);\n\n const selectFocused = React.useCallback(() => {\n if (focusedOptionIndex !== undefined && isValidIndex(focusedOptionIndex)) {\n const item = options[focusedOptionIndex];\n\n setNativeSelectValue(item?.value);\n close();\n }\n }, [close, focusedOptionIndex, isValidIndex, options]);\n\n const open = React.useCallback(() => {\n setOpened(true);\n setFocusedOptionIndex(selectedOptionIndex);\n\n if (typeof onOpen === \"function\") {\n onOpen();\n }\n }, [onOpen, selectedOptionIndex]);\n\n const onBlur = React.useCallback(() => {\n close();\n const event = new Event(\"blur\");\n selectElRef.current?.dispatchEvent(event);\n }, [close]);\n\n const resetFocusedOption = React.useCallback(() => {\n setFocusedOptionIndex(-1);\n }, []);\n\n const onFocus = React.useCallback(() => {\n const event = new Event(\"focus\");\n selectElRef.current?.dispatchEvent(event);\n }, []);\n\n const onClick = React.useCallback(() => {\n if (opened) {\n close();\n } else {\n open();\n }\n }, [close, open, opened]);\n\n const handleKeyUp = React.useMemo(\n () => debounce(resetKeyboardInput, 1000),\n [resetKeyboardInput]\n );\n\n const focusOption = React.useCallback(\n (type: \"next\" | \"prev\") => {\n let index = focusedOptionIndex;\n\n if (type === \"next\") {\n const nextIndex = findIndexAfter(options, index);\n index = nextIndex === -1 ? findIndexAfter(options) : nextIndex; // Следующий за index или первый валидный до index\n } else if (type === \"prev\") {\n const beforeIndex = findIndexBefore(options, index);\n index = beforeIndex === -1 ? findIndexBefore(options) : beforeIndex; // Предшествующий index или последний валидный после index\n }\n\n focusOptionByIndex(index);\n },\n [focusOptionByIndex, focusedOptionIndex, options]\n );\n\n React.useEffect(() => {\n const value = props.value ?? nativeSelectValue ?? props.defaultValue;\n\n const options =\n searchable && inputValue !== undefined\n ? filter(optionsProp, inputValue, filterFn)\n : optionsProp;\n\n setOptions(options);\n setSelectedOptionIndex(findSelectedIndex(options, value));\n }, [\n filterFn,\n inputValue,\n nativeSelectValue,\n optionsProp,\n props.defaultValue,\n props.value,\n searchable,\n ]);\n\n /**\n * Нужен для правильного поведения обработчика onClick на select. Фильтрует клики, которые были сделаны по\n * выпадающему списку.\n */\n const onLabelClick = React.useCallback(\n (e: React.MouseEvent<HTMLLabelElement>) => {\n if (scrollBoxRef.current?.contains(e.target as Node)) {\n e.preventDefault();\n }\n },\n []\n );\n\n const onNativeSelectChange: React.ChangeEventHandler<HTMLSelectElement> =\n React.useCallback(\n (e) => {\n const newSelectedOptionIndex = findSelectedIndex(\n options,\n e.currentTarget.value\n );\n\n if (selectedOptionIndex !== newSelectedOptionIndex) {\n if (!isControlledOutside) {\n setSelectedOptionIndex(newSelectedOptionIndex);\n }\n onChange?.(e);\n }\n },\n [isControlledOutside, onChange, options, selectedOptionIndex]\n );\n\n const onInputKeyDown: React.KeyboardEventHandler<HTMLInputElement> =\n React.useCallback(\n (event) => {\n [\"ArrowUp\", \"ArrowDown\", \"Escape\", \"Enter\"].includes(event.key) &&\n areOptionsShown() &&\n event.preventDefault();\n\n switch (event.key) {\n case \"ArrowUp\":\n areOptionsShown() && focusOption(\"prev\");\n break;\n case \"ArrowDown\":\n areOptionsShown() && focusOption(\"next\");\n break;\n case \"Escape\":\n close();\n break;\n case \"Enter\":\n areOptionsShown() && selectFocused();\n break;\n }\n },\n [areOptionsShown, close, focusOption, selectFocused]\n );\n\n const onInputChange: React.ChangeEventHandler<HTMLInputElement> =\n React.useCallback(\n (e) => {\n if (onInputChangeProp) {\n const options = onInputChangeProp(e, optionsProp);\n if (options) {\n if (process.env.NODE_ENV === \"development\") {\n warn(\n \"Этот метод фильтрации устарел. Возвращаемое значение onInputChange будет \" +\n \"проигнорировано в v5.0.0. Для фильтрации обновляйте props.options самостоятельно или используйте свойство filterFn.\"\n );\n }\n setOptions(options);\n setSelectedOptionIndex(\n findSelectedIndex(options, nativeSelectValue)\n );\n }\n } else {\n const options = filter(optionsProp, e.target.value, filterFn);\n setOptions(options);\n setSelectedOptionIndex(findSelectedIndex(options, nativeSelectValue));\n }\n setInputValue(e.target.value);\n },\n [filterFn, nativeSelectValue, onInputChangeProp, optionsProp]\n );\n\n const handleKeyDownSelect = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key.length === 1 && event.key !== \" \") {\n onKeyboardInput(event.key);\n return;\n }\n\n [\"ArrowUp\", \"ArrowDown\", \"Escape\", \"Enter\"].includes(event.key) &&\n areOptionsShown() &&\n event.preventDefault();\n\n switch (event.key) {\n case \"ArrowUp\":\n if (opened) {\n areOptionsShown() && focusOption(\"prev\");\n } else {\n open();\n }\n break;\n case \"ArrowDown\":\n if (opened) {\n areOptionsShown() && focusOption(\"next\");\n } else {\n open();\n }\n break;\n case \"Escape\":\n close();\n break;\n case \"Enter\":\n case \"Spacebar\":\n case \" \":\n if (opened) {\n areOptionsShown() && selectFocused();\n } else {\n open();\n }\n break;\n }\n },\n [\n areOptionsShown,\n close,\n focusOption,\n onKeyboardInput,\n open,\n opened,\n selectFocused,\n ]\n );\n\n const handleOptionClick = React.useCallback(\n (e: React.MouseEvent<HTMLElement>) => {\n const index = Array.prototype.indexOf.call(\n e.currentTarget.parentNode?.children,\n e.currentTarget\n );\n const option = options[index];\n\n if (option && !option.disabled) {\n selectFocused();\n }\n },\n [options, selectFocused]\n );\n\n const handleOptionHover = React.useCallback(\n (e: React.MouseEvent<HTMLElement>) => {\n focusOptionByIndex(\n Array.prototype.indexOf.call(\n e.currentTarget.parentNode?.children,\n e.currentTarget\n ),\n false\n );\n },\n [focusOptionByIndex]\n );\n\n const renderOption = React.useCallback(\n (option: CustomSelectOptionInterface, index: number) => {\n const hovered = index === focusedOptionIndex;\n const selected = index === selectedOptionIndex;\n\n return (\n <React.Fragment key={`${option.value}`}>\n {renderOptionProp({\n option,\n hovered,\n children: option.label,\n selected,\n disabled: option.disabled,\n onClick: handleOptionClick,\n onMouseDown: handleOptionDown,\n // Используем `onMouseOver` вместо `onMouseEnter`.\n // При параметре `searchable`, обновляется \"ребёнок\", из-за чего `onMouseEnter` не срабатывает в следующих кейсах:\n // 1. До загрузки выпадающего списка, курсор мышки находится над произвольным элементом этого списка.\n // > Лечение: только увод курсора мыши и возвращении его обратно вызывает событие `onMouseEnter` на этот элемент.\n // 2. Если это тач-устройство.\n // > Лечение: нужно нажать на какой-нибудь произвольный элемент списка, после чего `onMouseEnter` будет работать на соседние элементы,\n // но не на тот, на который нажали в первый раз.\n // Более подробно по ссылке https://github.com/facebook/react/issues/13956#issuecomment-1082055744\n onMouseOver: handleOptionHover,\n })}\n </React.Fragment>\n );\n },\n [\n focusedOptionIndex,\n handleOptionClick,\n handleOptionHover,\n renderOptionProp,\n selectedOptionIndex,\n ]\n );\n\n const resolvedContent = React.useMemo(() => {\n const defaultDropdownContent =\n options?.length > 0 ? (\n options.map(renderOption)\n ) : (\n <Footnote className={styles[\"CustomSelect__empty\"]}>\n {emptyText}\n </Footnote>\n );\n\n if (typeof renderDropdown === \"function\") {\n return renderDropdown({ defaultDropdownContent });\n } else {\n return defaultDropdownContent;\n }\n }, [emptyText, options, renderDropdown, renderOption]);\n\n return (\n <label\n className={classNamesString(styles[\"CustomSelect\"], className)}\n style={style}\n ref={multiRef(containerRef, getRootRef)}\n onClick={onLabelClick}\n >\n {opened && searchable ? (\n <Input\n {...restProps}\n autoFocus\n onBlur={onBlur}\n className={openedClassNames}\n value={inputValue}\n onKeyDown={onInputKeyDown}\n onChange={onInputChange}\n // TODO Ожидается, что клик поймает нативный select, но его перехватывает Input. К сожалению, это приводит к конфликтам типизации.\n // TODO Нужно перестать пытаться превратить CustomSelect в select. Тогда эта проблема уйдёт.\n // @ts-expect-error: TS2322 MouseEventHandler<HTMLSelectElement> !== MouseEventHandler<HTMLInputElement>\n onClick={props.onClick}\n before={before}\n after={icon}\n placeholder={restProps.placeholder}\n mode={getFormFieldModeFromSelectType(selectType)}\n />\n ) : (\n <SelectMimicry\n {...restProps}\n aria-hidden={true}\n onClick={onClick}\n onKeyDown={handleKeyDownSelect}\n onKeyUp={handleKeyUp}\n onFocus={onFocus}\n onBlur={onBlur}\n className={openedClassNames}\n after={icon}\n selectType={selectType}\n >\n {selected?.label}\n </SelectMimicry>\n )}\n <select\n ref={selectElRef}\n name={name}\n onChange={onNativeSelectChange}\n onBlur={props.onBlur}\n onFocus={props.onFocus}\n onClick={props.onClick}\n value={nativeSelectValue}\n aria-hidden={true}\n className={styles[\"CustomSelect__control\"]}\n >\n {optionsProp.map((item) => (\n <option key={`${item.value}`} value={item.value} />\n ))}\n </select>\n {opened && (\n <CustomSelectDropdown\n targetRef={containerRef}\n placement={popupDirection}\n scrollBoxRef={setScrollBoxRef}\n onPlacementChange={setPopperPlacement}\n onMouseLeave={resetFocusedOption}\n fetching={fetching}\n offsetDistance={dropdownOffsetDistance}\n sameWidth={fixDropdownWidth}\n forcePortal={forceDropdownPortal}\n autoHideScrollbar={autoHideScrollbar}\n autoHideScrollbarDelay={autoHideScrollbarDelay}\n observableRefs={scrollBoxRef}\n >\n {resolvedContent}\n </CustomSelectDropdown>\n )}\n </label>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CustomSelect.js","names":["React","SelectMimicry","debounce","multiRef","getTitleFromChildren","classNamesString","CustomSelectOption","Input","DropdownIcon","Footnote","warnOnce","defaultFilterFn","getFormFieldModeFromSelectType","CustomSelectDropdown","useIsomorphicLayoutEffect","findIndexAfter","options","startIndex","length","findIndex","option","i","disabled","findIndexBefore","endIndex","result","warn","checkOptionsValueType","Set","map","item","value","size","defaultRenderOptionFn","props","handleOptionDown","e","preventDefault","findSelectedIndex","Number","filter","inputValue","filterFn","defaultOptions","CustomSelect","useState","opened","setOpened","before","name","className","getRef","getRootRef","popupDirection","style","onChange","children","onInputChangeProp","onInputChange","renderDropdown","onOpen","onClose","fetching","forceDropdownPortal","selectType","autoHideScrollbar","autoHideScrollbarDelay","searchable","renderOption","renderOptionProp","optionsProp","emptyText","icon","dropdownOffsetDistance","fixDropdownWidth","restProps","process","env","NODE_ENV","containerRef","useRef","scrollBoxRef","selectElRef","focusedOptionIndex","setFocusedOptionIndex","undefined","isControlledOutside","setIsControlledOutside","setInputValue","defaultValue","nativeSelectValue","setNativeSelectValue","keyboardInput","setKeyboardInput","popperPlacement","setPopperPlacement","setOptions","selectedOptionIndex","setSelectedOptionIndex","useEffect","event","Event","bubbles","current","dispatchEvent","selected","useMemo","openedClassNames","includes","resetKeyboardInput","useCallback","scrollToElement","index","center","dropdown","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","isValidIndex","focusOptionByIndex","scrollTo","areOptionsShown","setScrollBoxRef","ref","onKeyboardInput","key","fullInput","optionIndex","label","toLowerCase","close","selectFocused","open","onBlur","resetFocusedOption","onFocus","onClick","handleKeyUp","focusOption","type","nextIndex","beforeIndex","updateOptionsAndSelectedOptionIndex","onLabelClick","contains","target","onNativeSelectChange","newSelectedOptionIndex","currentTarget","onInputKeyDown","handleKeyDownSelect","handleOptionClick","Array","prototype","indexOf","call","parentNode","handleOptionHover","hovered","onMouseDown","onMouseOver","resolvedContent","defaultDropdownContent","placeholder"],"sources":["../../../../src/components/CustomSelect/CustomSelect.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { SelectMimicry } from \"../SelectMimicry/SelectMimicry\";\nimport { debounce, multiRef, getTitleFromChildren } from \"../../lib/utils\";\nimport { classNamesString } from \"../../lib/classNames\";\nimport { NativeSelectProps } from \"../NativeSelect/NativeSelect\";\nimport {\n CustomSelectOption,\n CustomSelectOptionProps,\n} from \"../CustomSelectOption/CustomSelectOption\";\nimport { FormFieldProps } from \"../FormField/FormField\";\nimport { Input } from \"../Input/Input\";\nimport { DropdownIcon } from \"../DropdownIcon/DropdownIcon\";\nimport { Footnote } from \"../Typography/Footnote/Footnote\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport {\n defaultFilterFn,\n getFormFieldModeFromSelectType,\n} from \"../../lib/select\";\nimport { Placement } from \"../Popper/Popper\";\nimport { CustomSelectDropdown } from \"../CustomSelectDropdown/CustomSelectDropdown\";\nimport { TrackerOptionsProps } from \"../CustomScrollView/useTrackerVisibility\";\nimport { SelectType } from \"../Select/Select\";\nimport { useIsomorphicLayoutEffect } from \"../../lib/useIsomorphicLayoutEffect\";\nimport styles from \"./CustomSelect.module.css\";\n\nconst findIndexAfter = (\n options: CustomSelectOptionInterface[] = [],\n startIndex = -1\n) => {\n if (startIndex >= options.length - 1) {\n return -1;\n }\n return options.findIndex((option, i) => i > startIndex && !option.disabled);\n};\n\nconst findIndexBefore = (\n options: CustomSelectOptionInterface[] = [],\n endIndex: number = options.length\n) => {\n let result = -1;\n if (endIndex <= 0) {\n return result;\n }\n for (let i = endIndex - 1; i >= 0; i--) {\n let option = options[i];\n\n if (!option.disabled) {\n result = i;\n break;\n }\n }\n return result;\n};\n\nconst warn = warnOnce(\"CustomSelect\");\n\nconst checkOptionsValueType = (options: CustomSelectOptionInterface[]) => {\n if (new Set(options.map((item) => typeof item.value)).size > 1) {\n warn(\n \"Некоторые значения ваших опций имеют разные типы. onChange всегда возвращает строковый тип.\",\n \"error\"\n );\n }\n};\n\nfunction defaultRenderOptionFn({\n option,\n ...props\n}: CustomSelectOptionProps): React.ReactNode {\n return <CustomSelectOption {...props} />;\n}\n\nconst handleOptionDown: MouseEventHandler = (\n e: React.MouseEvent<HTMLElement>\n) => {\n e.preventDefault();\n};\n\nfunction findSelectedIndex(\n options: CustomSelectOptionInterface[],\n value: SelectValue\n) {\n return (\n options.findIndex((item) => {\n value = typeof item.value === \"number\" ? Number(value) : value;\n return item.value === value;\n }) ?? -1\n );\n}\n\nconst filter = (\n options: SelectProps[\"options\"],\n inputValue: string,\n filterFn: SelectProps[\"filterFn\"]\n) => {\n return typeof filterFn === \"function\"\n ? options.filter((option) => filterFn(inputValue, option))\n : options;\n};\n\nconst defaultOptions: CustomSelectOptionInterface[] = [];\n\ntype SelectValue = React.SelectHTMLAttributes<HTMLSelectElement>[\"value\"];\n\nexport interface CustomSelectOptionInterface {\n value: SelectValue;\n label: React.ReactElement | string;\n disabled?: boolean;\n [index: string]: any;\n}\n\nexport interface SelectProps\n extends NativeSelectProps,\n FormFieldProps,\n TrackerOptionsProps {\n /**\n * Если `true`, то при клике на селект в нём появится текстовое поле для поиска по `options`. По умолчанию поиск\n * производится по `option.label`.\n */\n searchable?: boolean;\n /**\n * Текст, который будет отображен, если приходит пустой `options`.\n */\n emptyText?: string;\n /**\n * > ⚠️ В v6 из возвращаемых типов будет удалён `CustomSelectOptionInterface[]`. Для кастомной фильтрации используйте\n * > `filterFn`.\n */\n onInputChange?: (\n e: React.ChangeEvent,\n options: CustomSelectOptionInterface[]\n ) => void | CustomSelectOptionInterface[];\n options: CustomSelectOptionInterface[];\n /**\n * Функция для кастомной фильтрации. По умолчанию поиск производится по `option.label`.\n */\n filterFn?:\n | false\n | ((\n value: string,\n option: CustomSelectOptionInterface,\n getOptionLabel?: (\n option: Partial<CustomSelectOptionInterface>\n ) => string\n ) => boolean);\n popupDirection?: \"top\" | \"bottom\";\n /**\n * Рендер-проп для кастомного рендера опции.\n * В объекте аргумента приходят [свойства опции](https://vkcom.github.io/VKUI/#/CustomSelectOption?id=props)\n */\n renderOption?: (props: CustomSelectOptionProps) => React.ReactNode;\n /**\n * Рендер-проп для кастомного рендера содержимого дропдауна.\n * В `defaultDropdownContent` содержится список опций в виде скроллящегося блока.\n */\n renderDropdown?: ({\n defaultDropdownContent,\n }: {\n defaultDropdownContent: React.ReactNode;\n }) => React.ReactNode;\n /**\n * Если `true`, то в дропдауне вместо списка опций рисуется спиннер. При переданных `renderDropdown` и `fetching: true`\n * \"победит\" `renderDropdown`.\n */\n fetching?: boolean;\n onClose?: VoidFunction;\n onOpen?: VoidFunction;\n icon?: React.ReactNode;\n dropdownOffsetDistance?: number;\n fixDropdownWidth?: boolean;\n forceDropdownPortal?: boolean;\n selectType?: SelectType;\n}\n\ntype MouseEventHandler = (event: React.MouseEvent<HTMLElement>) => void;\n\n/**\n * @see https://vkcom.github.io/VKUI/#/CustomSelect\n */\nexport function CustomSelect(props: SelectProps) {\n const [opened, setOpened] = React.useState(false);\n const {\n before,\n name,\n className,\n getRef,\n getRootRef,\n popupDirection,\n style,\n onChange,\n children,\n onInputChange: onInputChangeProp,\n renderDropdown,\n onOpen,\n onClose,\n fetching,\n forceDropdownPortal,\n selectType = \"default\",\n autoHideScrollbar,\n autoHideScrollbarDelay,\n searchable = false,\n renderOption: renderOptionProp = defaultRenderOptionFn,\n options: optionsProp = defaultOptions,\n emptyText = \"Ничего не найдено\",\n filterFn = defaultFilterFn,\n icon = <DropdownIcon opened={opened} />,\n dropdownOffsetDistance = 0,\n fixDropdownWidth = true,\n ...restProps\n } = props;\n\n if (process.env.NODE_ENV === \"development\") {\n checkOptionsValueType(optionsProp);\n }\n\n const containerRef = React.useRef<HTMLLabelElement>(null);\n const scrollBoxRef = React.useRef<HTMLDivElement | null>(null);\n const selectElRef = React.useRef<HTMLSelectElement>(null);\n\n const [focusedOptionIndex, setFocusedOptionIndex] = React.useState<\n number | undefined\n >(-1);\n const [isControlledOutside, setIsControlledOutside] = React.useState(\n props.value !== undefined\n );\n const [inputValue, setInputValue] = React.useState(\"\");\n const [nativeSelectValue, setNativeSelectValue] = React.useState(\n props.value ?? props.defaultValue\n );\n const [keyboardInput, setKeyboardInput] = React.useState(\"\");\n const [popperPlacement, setPopperPlacement] = React.useState<\n Placement | undefined\n >(undefined);\n const [options, setOptions] = React.useState(optionsProp);\n const [selectedOptionIndex, setSelectedOptionIndex] = React.useState<\n number | undefined\n >(findSelectedIndex(optionsProp, props.value ?? props.defaultValue));\n\n React.useEffect(() => {\n setIsControlledOutside(props.value !== undefined);\n setNativeSelectValue(\n (nativeSelectValue) => props.value ?? nativeSelectValue\n );\n }, [props.value]);\n\n useIsomorphicLayoutEffect(() => {\n if (nativeSelectValue !== undefined) {\n const event = new Event(\"change\", { bubbles: true });\n\n selectElRef.current?.dispatchEvent(event);\n }\n }, [nativeSelectValue]);\n\n const selected = React.useMemo(() => {\n if (!options.length) {\n return null;\n }\n\n return selectedOptionIndex !== undefined\n ? options[selectedOptionIndex]\n : undefined;\n }, [options, selectedOptionIndex]);\n\n const openedClassNames = React.useMemo(\n () =>\n classNamesString(\n opened &&\n dropdownOffsetDistance === 0 &&\n (popperPlacement?.includes(\"top\")\n ? styles[\"CustomSelect--pop-up\"]\n : styles[\"CustomSelect--pop-down\"])\n ),\n [dropdownOffsetDistance, opened, popperPlacement]\n );\n\n const resetKeyboardInput = React.useCallback(() => {\n setKeyboardInput(\"\");\n }, []);\n\n const scrollToElement = React.useCallback((index: number, center = false) => {\n const dropdown = scrollBoxRef.current;\n const item = dropdown ? (dropdown.children[index] as HTMLElement) : null;\n\n if (!item || !dropdown) {\n return;\n }\n\n const dropdownHeight = dropdown.offsetHeight;\n const scrollTop = dropdown.scrollTop;\n const itemTop = item.offsetTop;\n const itemHeight = item.offsetHeight;\n\n if (center) {\n dropdown.scrollTop = itemTop - dropdownHeight / 2 + itemHeight / 2;\n } else if (itemTop + itemHeight > dropdownHeight + scrollTop) {\n dropdown.scrollTop = itemTop - dropdownHeight + itemHeight;\n } else if (itemTop < scrollTop) {\n dropdown.scrollTop = itemTop;\n }\n }, []);\n\n const isValidIndex = React.useCallback(\n (index: number) => {\n return index >= 0 && index < (options.length ?? 0);\n },\n [options.length]\n );\n\n const focusOptionByIndex = React.useCallback(\n (index: number | undefined, scrollTo = true) => {\n if (\n index === undefined ||\n index < 0 ||\n index > (options.length ?? 0) - 1\n ) {\n return;\n }\n\n const option = options[index];\n\n if (option?.disabled) {\n return;\n }\n\n if (scrollTo) {\n scrollToElement(index);\n }\n\n // Это оптимизация, прежде всего, под `onMouseOver`\n setFocusedOptionIndex((focusedOptionIndex) =>\n focusedOptionIndex !== index ? index : focusedOptionIndex\n );\n },\n [options, scrollToElement]\n );\n\n const areOptionsShown = React.useCallback(() => {\n return scrollBoxRef.current !== null;\n }, []);\n\n const setScrollBoxRef = React.useCallback(\n (ref: HTMLDivElement | null) => {\n scrollBoxRef.current = ref;\n\n if (\n ref &&\n selectedOptionIndex !== undefined &&\n isValidIndex(selectedOptionIndex)\n ) {\n {\n scrollToElement(selectedOptionIndex, true);\n }\n }\n },\n [isValidIndex, scrollToElement, selectedOptionIndex]\n );\n\n const onKeyboardInput = React.useCallback(\n (key: string) => {\n const fullInput = keyboardInput + key;\n\n const optionIndex = options.findIndex((option) => {\n return getTitleFromChildren(option.label)\n .toLowerCase()\n .includes(fullInput);\n });\n\n if (optionIndex !== undefined && optionIndex > -1) {\n focusOptionByIndex(optionIndex);\n }\n\n setKeyboardInput(fullInput);\n },\n [focusOptionByIndex, keyboardInput, options]\n );\n\n /**\n * Note: сбрасывать `options` через `setOptions(optionsProp)` не нужно.\n * Сброс происходит в одном из эффекте `updateOptionsAndSelectedOptionIndex()`.\n */\n const close = React.useCallback(() => {\n resetKeyboardInput();\n\n setInputValue(\"\");\n setOpened(false);\n setFocusedOptionIndex(-1);\n onClose?.();\n }, [onClose, resetKeyboardInput]);\n\n const selectFocused = React.useCallback(() => {\n if (focusedOptionIndex !== undefined && isValidIndex(focusedOptionIndex)) {\n const item = options[focusedOptionIndex];\n\n setNativeSelectValue(item?.value);\n close();\n }\n }, [close, focusedOptionIndex, isValidIndex, options]);\n\n const open = React.useCallback(() => {\n setOpened(true);\n setFocusedOptionIndex(selectedOptionIndex);\n\n if (typeof onOpen === \"function\") {\n onOpen();\n }\n }, [onOpen, selectedOptionIndex]);\n\n const onBlur = React.useCallback(() => {\n close();\n const event = new Event(\"blur\");\n selectElRef.current?.dispatchEvent(event);\n }, [close]);\n\n const resetFocusedOption = React.useCallback(() => {\n setFocusedOptionIndex(-1);\n }, []);\n\n const onFocus = React.useCallback(() => {\n const event = new Event(\"focus\");\n selectElRef.current?.dispatchEvent(event);\n }, []);\n\n const onClick = React.useCallback(() => {\n if (opened) {\n close();\n } else {\n open();\n }\n }, [close, open, opened]);\n\n const handleKeyUp = React.useMemo(\n () => debounce(resetKeyboardInput, 1000),\n [resetKeyboardInput]\n );\n\n const focusOption = React.useCallback(\n (type: \"next\" | \"prev\") => {\n let index = focusedOptionIndex;\n\n if (type === \"next\") {\n const nextIndex = findIndexAfter(options, index);\n index = nextIndex === -1 ? findIndexAfter(options) : nextIndex; // Следующий за index или первый валидный до index\n } else if (type === \"prev\") {\n const beforeIndex = findIndexBefore(options, index);\n index = beforeIndex === -1 ? findIndexBefore(options) : beforeIndex; // Предшествующий index или последний валидный после index\n }\n\n focusOptionByIndex(index);\n },\n [focusOptionByIndex, focusedOptionIndex, options]\n );\n\n React.useEffect(\n function updateOptionsAndSelectedOptionIndex() {\n const value = props.value ?? nativeSelectValue ?? props.defaultValue;\n\n const options =\n searchable && inputValue !== undefined\n ? filter(optionsProp, inputValue, filterFn)\n : optionsProp;\n\n setOptions(options);\n setSelectedOptionIndex(findSelectedIndex(options, value));\n },\n [\n filterFn,\n inputValue,\n nativeSelectValue,\n optionsProp,\n props.defaultValue,\n props.value,\n searchable,\n ]\n );\n\n /**\n * Нужен для правильного поведения обработчика onClick на select. Фильтрует клики, которые были сделаны по\n * выпадающему списку.\n */\n const onLabelClick = React.useCallback(\n (e: React.MouseEvent<HTMLLabelElement>) => {\n if (scrollBoxRef.current?.contains(e.target as Node)) {\n e.preventDefault();\n }\n },\n []\n );\n\n const onNativeSelectChange: React.ChangeEventHandler<HTMLSelectElement> = (\n e\n ) => {\n const newSelectedOptionIndex = findSelectedIndex(\n options,\n e.currentTarget.value\n );\n\n if (selectedOptionIndex !== newSelectedOptionIndex) {\n if (!isControlledOutside) {\n setSelectedOptionIndex(newSelectedOptionIndex);\n }\n onChange?.(e);\n }\n };\n\n const onInputKeyDown: React.KeyboardEventHandler<HTMLInputElement> =\n React.useCallback(\n (event) => {\n [\"ArrowUp\", \"ArrowDown\", \"Escape\", \"Enter\"].includes(event.key) &&\n areOptionsShown() &&\n event.preventDefault();\n\n switch (event.key) {\n case \"ArrowUp\":\n areOptionsShown() && focusOption(\"prev\");\n break;\n case \"ArrowDown\":\n areOptionsShown() && focusOption(\"next\");\n break;\n case \"Escape\":\n close();\n break;\n case \"Enter\":\n areOptionsShown() && selectFocused();\n break;\n }\n },\n [areOptionsShown, close, focusOption, selectFocused]\n );\n\n const onInputChange: React.ChangeEventHandler<HTMLInputElement> =\n React.useCallback(\n (e) => {\n // TODO v6 удалить `onInputChangeProp`.\n if (onInputChangeProp) {\n const options = onInputChangeProp(e, optionsProp);\n if (options) {\n if (process.env.NODE_ENV === \"development\") {\n warn(\n \"Этот метод фильтрации устарел. Возвращаемое значение onInputChange будет \" +\n \"проигнорировано в v6.0.0. Для фильтрации обновляйте props.options самостоятельно или используйте свойство filterFn.\"\n );\n }\n setOptions(options);\n setSelectedOptionIndex(\n findSelectedIndex(options, nativeSelectValue)\n );\n }\n } else {\n const options = filter(optionsProp, e.target.value, filterFn);\n setOptions(options);\n setSelectedOptionIndex(findSelectedIndex(options, nativeSelectValue));\n }\n setInputValue(e.target.value);\n },\n [filterFn, nativeSelectValue, onInputChangeProp, optionsProp]\n );\n\n const handleKeyDownSelect = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key.length === 1 && event.key !== \" \") {\n onKeyboardInput(event.key);\n return;\n }\n\n [\"ArrowUp\", \"ArrowDown\", \"Escape\", \"Enter\"].includes(event.key) &&\n areOptionsShown() &&\n event.preventDefault();\n\n switch (event.key) {\n case \"ArrowUp\":\n if (opened) {\n areOptionsShown() && focusOption(\"prev\");\n } else {\n open();\n }\n break;\n case \"ArrowDown\":\n if (opened) {\n areOptionsShown() && focusOption(\"next\");\n } else {\n open();\n }\n break;\n case \"Escape\":\n close();\n break;\n case \"Enter\":\n case \"Spacebar\":\n case \" \":\n if (opened) {\n areOptionsShown() && selectFocused();\n } else {\n open();\n }\n break;\n }\n },\n [\n areOptionsShown,\n close,\n focusOption,\n onKeyboardInput,\n open,\n opened,\n selectFocused,\n ]\n );\n\n const handleOptionClick = React.useCallback(\n (e: React.MouseEvent<HTMLElement>) => {\n const index = Array.prototype.indexOf.call(\n e.currentTarget.parentNode?.children,\n e.currentTarget\n );\n const option = options[index];\n\n if (option && !option.disabled) {\n selectFocused();\n }\n },\n [options, selectFocused]\n );\n\n const handleOptionHover = React.useCallback(\n (e: React.MouseEvent<HTMLElement>) => {\n focusOptionByIndex(\n Array.prototype.indexOf.call(\n e.currentTarget.parentNode?.children,\n e.currentTarget\n ),\n false\n );\n },\n [focusOptionByIndex]\n );\n\n const renderOption = React.useCallback(\n (option: CustomSelectOptionInterface, index: number) => {\n const hovered = index === focusedOptionIndex;\n const selected = index === selectedOptionIndex;\n\n return (\n <React.Fragment key={`${option.value}`}>\n {renderOptionProp({\n option,\n hovered,\n children: option.label,\n selected,\n disabled: option.disabled,\n onClick: handleOptionClick,\n onMouseDown: handleOptionDown,\n // Используем `onMouseOver` вместо `onMouseEnter`.\n // При параметре `searchable`, обновляется \"ребёнок\", из-за чего `onMouseEnter` не срабатывает в следующих кейсах:\n // 1. До загрузки выпадающего списка, курсор мышки находится над произвольным элементом этого списка.\n // > Лечение: только увод курсора мыши и возвращении его обратно вызывает событие `onMouseEnter` на этот элемент.\n // 2. Если это тач-устройство.\n // > Лечение: нужно нажать на какой-нибудь произвольный элемент списка, после чего `onMouseEnter` будет работать на соседние элементы,\n // но не на тот, на который нажали в первый раз.\n // Более подробно по ссылке https://github.com/facebook/react/issues/13956#issuecomment-1082055744\n onMouseOver: handleOptionHover,\n })}\n </React.Fragment>\n );\n },\n [\n focusedOptionIndex,\n handleOptionClick,\n handleOptionHover,\n renderOptionProp,\n selectedOptionIndex,\n ]\n );\n\n const resolvedContent = React.useMemo(() => {\n const defaultDropdownContent =\n options?.length > 0 ? (\n options.map(renderOption)\n ) : (\n <Footnote className={styles[\"CustomSelect__empty\"]}>\n {emptyText}\n </Footnote>\n );\n\n if (typeof renderDropdown === \"function\") {\n return renderDropdown({ defaultDropdownContent });\n } else {\n return defaultDropdownContent;\n }\n }, [emptyText, options, renderDropdown, renderOption]);\n\n return (\n <label\n className={classNamesString(styles[\"CustomSelect\"], className)}\n style={style}\n ref={multiRef(containerRef, getRootRef)}\n onClick={onLabelClick}\n >\n {opened && searchable ? (\n <Input\n {...restProps}\n autoFocus\n onBlur={onBlur}\n className={openedClassNames}\n value={inputValue}\n onKeyDown={onInputKeyDown}\n onChange={onInputChange}\n // TODO Ожидается, что клик поймает нативный select, но его перехватывает Input. К сожалению, это приводит к конфликтам типизации.\n // TODO Нужно перестать пытаться превратить CustomSelect в select. Тогда эта проблема уйдёт.\n // @ts-expect-error: TS2322 MouseEventHandler<HTMLSelectElement> !== MouseEventHandler<HTMLInputElement>\n onClick={props.onClick}\n before={before}\n after={icon}\n placeholder={restProps.placeholder}\n mode={getFormFieldModeFromSelectType(selectType)}\n />\n ) : (\n <SelectMimicry\n {...restProps}\n aria-hidden={true}\n onClick={onClick}\n onKeyDown={handleKeyDownSelect}\n onKeyUp={handleKeyUp}\n onFocus={onFocus}\n onBlur={onBlur}\n className={openedClassNames}\n after={icon}\n selectType={selectType}\n >\n {selected?.label}\n </SelectMimicry>\n )}\n <select\n ref={selectElRef}\n name={name}\n onChange={onNativeSelectChange}\n onBlur={props.onBlur}\n onFocus={props.onFocus}\n onClick={props.onClick}\n value={nativeSelectValue}\n aria-hidden={true}\n className={styles[\"CustomSelect__control\"]}\n >\n {optionsProp.map((item) => (\n <option key={`${item.value}`} value={item.value} />\n ))}\n </select>\n {opened && (\n <CustomSelectDropdown\n targetRef={containerRef}\n placement={popupDirection}\n scrollBoxRef={setScrollBoxRef}\n onPlacementChange={setPopperPlacement}\n onMouseLeave={resetFocusedOption}\n fetching={fetching}\n offsetDistance={dropdownOffsetDistance}\n sameWidth={fixDropdownWidth}\n forcePortal={forceDropdownPortal}\n autoHideScrollbar={autoHideScrollbar}\n autoHideScrollbarDelay={autoHideScrollbarDelay}\n observableRefs={scrollBoxRef}\n >\n {resolvedContent}\n </CustomSelectDropdown>\n )}\n </label>\n );\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- .vkuiCustomSelect{cursor:pointer;display:block;position:relative;width:100%}.vkuiCustomSelect__control{display:none}.vkuiCustomSelect__empty{color:var(--vkui--color_text_secondary);padding:12px 0;text-align:center}.vkuiCustomSelect__fetching{align-items:center;display:flex;justify-content:center}
1
+ .vkuiCustomSelect{cursor:pointer;display:block;position:relative;width:100%}.vkuiCustomSelect--pop-down{border-bottom-left-radius:0;border-bottom-right-radius:0}.vkuiCustomSelect--pop-up{border-top-left-radius:0;border-top-right-radius:0}.vkuiCustomSelect__control{display:none}.vkuiCustomSelect__empty{color:var(--vkui--color_text_secondary);padding:12px 0;text-align:center}.vkuiCustomSelect__fetching{align-items:center;display:flex;justify-content:center}
@@ -3,6 +3,7 @@ import { HasRootRef } from "../../types";
3
3
  export interface CustomSelectOptionProps extends React.HTMLAttributes<HTMLDivElement>, HasRootRef<HTMLDivElement> {
4
4
  /**
5
5
  * Вставляет основной контент.
6
+ * @deprecated since v6.0.0
6
7
  */
7
8
  option?: any;
8
9
  /**
@@ -40,7 +40,8 @@ export var CustomSelectOption = function CustomSelectOption(_ref) {
40
40
  }, styleProp) : styleProp;
41
41
  }, [hierarchy, styleProp]);
42
42
  if (!!option && process.env.NODE_ENV === "development") {
43
- warn("Свойство option было добавлено по ошибке и будет удалено в 5.0.0.");
43
+ // TODO v6.0.0. Удалить св-во `option`
44
+ warn("Свойство option было добавлено по ошибке и будет удалено в v6.0.0.");
44
45
  }
45
46
  return /*#__PURE__*/React.createElement(Paragraph, _extends({}, restProps, {
46
47
  Component: "div",
@@ -1 +1 @@
1
- {"version":3,"file":"CustomSelectOption.js","names":["React","Icon16Done","classNamesString","hasReactNode","Paragraph","Footnote","useAdaptivity","warnOnce","getSizeYClassName","warn","CustomSelectOption","children","hierarchy","hovered","selected","before","after","option","description","disabled","styleProp","style","className","restProps","title","undefined","sizeY","useMemo","process","env","NODE_ENV"],"sources":["../../../../src/components/CustomSelectOption/CustomSelectOption.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Icon16Done } from \"@vkontakte/icons\";\nimport { classNamesString } from \"../../lib/classNames\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport { Paragraph } from \"../Typography/Paragraph/Paragraph\";\nimport { Footnote } from \"../Typography/Footnote/Footnote\";\nimport { HasRootRef } from \"../../types\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport { getSizeYClassName } from \"../../helpers/getSizeYClassName\";\nimport styles from \"./CustomSelectOption.module.css\";\n\nexport interface CustomSelectOptionProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n /**\n * Вставляет основной контент.\n */\n option?: any;\n /**\n * Добавляет описание под основным блоком.\n */\n description?: React.ReactNode;\n /**\n * Вставляет элемент в начало блока перед основным контентом.\n * Например, можно передать компонент `Avatar`, `Icon<Name>` или другие изображения.\n */\n before?: React.ReactNode;\n /**\n * Вставляет элемент в конец блока после основного контента.\n * Например, можно передать компонент `Avatar`, `Icon<Name>` или другие изображения.\n */\n after?: React.ReactNode;\n /**\n * Позволяет создавать вложенность.\n */\n hierarchy?: number;\n /**\n * Включает состояние выбранного элемента списка.\n */\n selected?: boolean;\n /**\n * Включает состояние наведения.\n */\n hovered?: boolean;\n /**\n * Включает состояние фокуса.\n */\n focused?: boolean;\n /**\n * Блокирует весь блок.\n */\n disabled?: boolean;\n}\n\nconst warn = warnOnce(\"CustomSelectOption\");\n\n/**\n * @see https://vkcom.github.io/VKUI/#/CustomSelectOption\n */\nexport const CustomSelectOption = ({\n children,\n hierarchy = 0,\n hovered,\n selected,\n before,\n after,\n option,\n description,\n disabled,\n style: styleProp,\n className,\n ...restProps\n}: CustomSelectOptionProps) => {\n const title = typeof children === \"string\" ? children : undefined;\n const { sizeY } = useAdaptivity();\n const style = React.useMemo(\n () =>\n hierarchy > 0\n ? {\n \"--vkui_internal--custom_select_option_hierarchy_level\": hierarchy,\n ...styleProp,\n }\n : styleProp,\n [hierarchy, styleProp]\n );\n\n if (!!option && process.env.NODE_ENV === \"development\") {\n warn(\"Свойство option было добавлено по ошибке и будет удалено в 5.0.0.\");\n }\n\n return (\n <Paragraph\n {...restProps}\n Component=\"div\"\n role=\"option\"\n title={title}\n aria-disabled={disabled}\n aria-selected={selected}\n className={classNamesString(\n styles[\"CustomSelectOption\"],\n getSizeYClassName(styles[\"CustomSelectOption\"], sizeY),\n hovered && !disabled && styles[\"CustomSelectOption--hover\"],\n // Note: пустой класс\n selected && styles[\"CustomSelectOption--selected\"],\n disabled && styles[\"CustomSelectOption--disabled\"],\n hierarchy > 0 && styles[\"CustomSelectOption--hierarchy\"],\n className\n )}\n style={style}\n >\n {hasReactNode(before) && (\n <div className={styles[\"CustomSelectOption__before\"]}>{before}</div>\n )}\n <div className={styles[\"CustomSelectOption__main\"]}>\n <div className={styles[\"CustomSelectOption__children\"]}>{children}</div>\n {hasReactNode(description) && (\n <Footnote className={styles[\"CustomSelectOption__description\"]}>\n {description}\n </Footnote>\n )}\n </div>\n <div className={styles[\"CustomSelectOption__after\"]}>\n {hasReactNode(after) && (\n <div className={styles[\"CustomSelectOption__afterIn\"]}>{after}</div>\n )}\n {selected && (\n <Icon16Done className={styles[\"CustomSelectOption__selectedIcon\"]} />\n )}\n </div>\n </Paragraph>\n );\n};\n"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,gBAAgB,QAAQ,sBAAsB;AACvD,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,SAAS,QAAQ,mCAAmC;AAC7D,SAASC,QAAQ,QAAQ,iCAAiC;AAE1D,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,iBAAiB,QAAQ,iCAAiC;AAAC;AA8CpE,IAAMC,IAAI,GAAGF,QAAQ,CAAC,oBAAoB,CAAC;;AAE3C;AACA;AACA;AACA,OAAO,IAAMG,kBAAkB,GAAG,SAArBA,kBAAkB,OAaA;EAAA,IAZ7BC,QAAQ,QAARA,QAAQ;IAAA,sBACRC,SAAS;IAATA,SAAS,+BAAG,CAAC;IACbC,OAAO,QAAPA,OAAO;IACPC,QAAQ,QAARA,QAAQ;IACRC,MAAM,QAANA,MAAM;IACNC,KAAK,QAALA,KAAK;IACLC,MAAM,QAANA,MAAM;IACNC,WAAW,QAAXA,WAAW;IACXC,QAAQ,QAARA,QAAQ;IACDC,SAAS,QAAhBC,KAAK;IACLC,SAAS,QAATA,SAAS;IACNC,SAAS;EAEZ,IAAMC,KAAK,GAAG,OAAOb,QAAQ,KAAK,QAAQ,GAAGA,QAAQ,GAAGc,SAAS;EACjE,qBAAkBnB,aAAa,EAAE;IAAzBoB,KAAK,kBAALA,KAAK;EACb,IAAML,KAAK,GAAGrB,KAAK,CAAC2B,OAAO,CACzB;IAAA,OACEf,SAAS,GAAG,CAAC;MAEP,uDAAuD,EAAEA;IAAS,GAC/DQ,SAAS,IAEdA,SAAS;EAAA,GACf,CAACR,SAAS,EAAEQ,SAAS,CAAC,CACvB;EAED,IAAI,CAAC,CAACH,MAAM,IAAIW,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;IACtDrB,IAAI,CAAC,mEAAmE,CAAC;EAC3E;EAEA,oBACE,oBAAC,SAAS,eACJc,SAAS;IACb,SAAS,EAAC,KAAK;IACf,IAAI,EAAC,QAAQ;IACb,KAAK,EAAEC,KAAM;IACb,iBAAeL,QAAS;IACxB,iBAAeL,QAAS;IACxB,SAAS,EAAEZ,gBAAgB,2BAEzBM,iBAAiB,2BAA+BkB,KAAK,CAAC,EACtDb,OAAO,IAAI,CAACM,QAAQ,mCAAuC;IAC3D;IACAL,QAAQ,sCAA0C,EAClDK,QAAQ,sCAA0C,EAClDP,SAAS,GAAG,CAAC,uCAA2C,EACxDU,SAAS,CACT;IACF,KAAK,EAAED;EAAM,IAEZlB,YAAY,CAACY,MAAM,CAAC,iBACnB;IAAK,SAAS;EAAuC,GAAEA,MAAM,CAC9D,eACD;IAAK,SAAS;EAAqC,gBACjD;IAAK,SAAS;EAAyC,GAAEJ,QAAQ,CAAO,EACvER,YAAY,CAACe,WAAW,CAAC,iBACxB,oBAAC,QAAQ;IAAC,SAAS;EAA4C,GAC5DA,WAAW,CAEf,CACG,eACN;IAAK,SAAS;EAAsC,GACjDf,YAAY,CAACa,KAAK,CAAC,iBAClB;IAAK,SAAS;EAAwC,GAAEA,KAAK,CAC9D,EACAF,QAAQ,iBACP,oBAAC,UAAU;IAAC,SAAS;EAA6C,EACnE,CACG,CACI;AAEhB,CAAC"}
1
+ {"version":3,"file":"CustomSelectOption.js","names":["React","Icon16Done","classNamesString","hasReactNode","Paragraph","Footnote","useAdaptivity","warnOnce","getSizeYClassName","warn","CustomSelectOption","children","hierarchy","hovered","selected","before","after","option","description","disabled","styleProp","style","className","restProps","title","undefined","sizeY","useMemo","process","env","NODE_ENV"],"sources":["../../../../src/components/CustomSelectOption/CustomSelectOption.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Icon16Done } from \"@vkontakte/icons\";\nimport { classNamesString } from \"../../lib/classNames\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport { Paragraph } from \"../Typography/Paragraph/Paragraph\";\nimport { Footnote } from \"../Typography/Footnote/Footnote\";\nimport { HasRootRef } from \"../../types\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport { getSizeYClassName } from \"../../helpers/getSizeYClassName\";\nimport styles from \"./CustomSelectOption.module.css\";\n\nexport interface CustomSelectOptionProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n /**\n * Вставляет основной контент.\n * @deprecated since v6.0.0\n */\n option?: any;\n /**\n * Добавляет описание под основным блоком.\n */\n description?: React.ReactNode;\n /**\n * Вставляет элемент в начало блока перед основным контентом.\n * Например, можно передать компонент `Avatar`, `Icon<Name>` или другие изображения.\n */\n before?: React.ReactNode;\n /**\n * Вставляет элемент в конец блока после основного контента.\n * Например, можно передать компонент `Avatar`, `Icon<Name>` или другие изображения.\n */\n after?: React.ReactNode;\n /**\n * Позволяет создавать вложенность.\n */\n hierarchy?: number;\n /**\n * Включает состояние выбранного элемента списка.\n */\n selected?: boolean;\n /**\n * Включает состояние наведения.\n */\n hovered?: boolean;\n /**\n * Включает состояние фокуса.\n */\n focused?: boolean;\n /**\n * Блокирует весь блок.\n */\n disabled?: boolean;\n}\n\nconst warn = warnOnce(\"CustomSelectOption\");\n\n/**\n * @see https://vkcom.github.io/VKUI/#/CustomSelectOption\n */\nexport const CustomSelectOption = ({\n children,\n hierarchy = 0,\n hovered,\n selected,\n before,\n after,\n option,\n description,\n disabled,\n style: styleProp,\n className,\n ...restProps\n}: CustomSelectOptionProps) => {\n const title = typeof children === \"string\" ? children : undefined;\n const { sizeY } = useAdaptivity();\n const style = React.useMemo(\n () =>\n hierarchy > 0\n ? {\n \"--vkui_internal--custom_select_option_hierarchy_level\": hierarchy,\n ...styleProp,\n }\n : styleProp,\n [hierarchy, styleProp]\n );\n\n if (!!option && process.env.NODE_ENV === \"development\") {\n // TODO v6.0.0. Удалить св-во `option`\n warn(\"Свойство option было добавлено по ошибке и будет удалено в v6.0.0.\");\n }\n\n return (\n <Paragraph\n {...restProps}\n Component=\"div\"\n role=\"option\"\n title={title}\n aria-disabled={disabled}\n aria-selected={selected}\n className={classNamesString(\n styles[\"CustomSelectOption\"],\n getSizeYClassName(styles[\"CustomSelectOption\"], sizeY),\n hovered && !disabled && styles[\"CustomSelectOption--hover\"],\n // Note: пустой класс\n selected && styles[\"CustomSelectOption--selected\"],\n disabled && styles[\"CustomSelectOption--disabled\"],\n hierarchy > 0 && styles[\"CustomSelectOption--hierarchy\"],\n className\n )}\n style={style}\n >\n {hasReactNode(before) && (\n <div className={styles[\"CustomSelectOption__before\"]}>{before}</div>\n )}\n <div className={styles[\"CustomSelectOption__main\"]}>\n <div className={styles[\"CustomSelectOption__children\"]}>{children}</div>\n {hasReactNode(description) && (\n <Footnote className={styles[\"CustomSelectOption__description\"]}>\n {description}\n </Footnote>\n )}\n </div>\n <div className={styles[\"CustomSelectOption__after\"]}>\n {hasReactNode(after) && (\n <div className={styles[\"CustomSelectOption__afterIn\"]}>{after}</div>\n )}\n {selected && (\n <Icon16Done className={styles[\"CustomSelectOption__selectedIcon\"]} />\n )}\n </div>\n </Paragraph>\n );\n};\n"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,gBAAgB,QAAQ,sBAAsB;AACvD,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,SAAS,QAAQ,mCAAmC;AAC7D,SAASC,QAAQ,QAAQ,iCAAiC;AAE1D,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,iBAAiB,QAAQ,iCAAiC;AAAC;AA+CpE,IAAMC,IAAI,GAAGF,QAAQ,CAAC,oBAAoB,CAAC;;AAE3C;AACA;AACA;AACA,OAAO,IAAMG,kBAAkB,GAAG,SAArBA,kBAAkB,OAaA;EAAA,IAZ7BC,QAAQ,QAARA,QAAQ;IAAA,sBACRC,SAAS;IAATA,SAAS,+BAAG,CAAC;IACbC,OAAO,QAAPA,OAAO;IACPC,QAAQ,QAARA,QAAQ;IACRC,MAAM,QAANA,MAAM;IACNC,KAAK,QAALA,KAAK;IACLC,MAAM,QAANA,MAAM;IACNC,WAAW,QAAXA,WAAW;IACXC,QAAQ,QAARA,QAAQ;IACDC,SAAS,QAAhBC,KAAK;IACLC,SAAS,QAATA,SAAS;IACNC,SAAS;EAEZ,IAAMC,KAAK,GAAG,OAAOb,QAAQ,KAAK,QAAQ,GAAGA,QAAQ,GAAGc,SAAS;EACjE,qBAAkBnB,aAAa,EAAE;IAAzBoB,KAAK,kBAALA,KAAK;EACb,IAAML,KAAK,GAAGrB,KAAK,CAAC2B,OAAO,CACzB;IAAA,OACEf,SAAS,GAAG,CAAC;MAEP,uDAAuD,EAAEA;IAAS,GAC/DQ,SAAS,IAEdA,SAAS;EAAA,GACf,CAACR,SAAS,EAAEQ,SAAS,CAAC,CACvB;EAED,IAAI,CAAC,CAACH,MAAM,IAAIW,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;IACtD;IACArB,IAAI,CAAC,oEAAoE,CAAC;EAC5E;EAEA,oBACE,oBAAC,SAAS,eACJc,SAAS;IACb,SAAS,EAAC,KAAK;IACf,IAAI,EAAC,QAAQ;IACb,KAAK,EAAEC,KAAM;IACb,iBAAeL,QAAS;IACxB,iBAAeL,QAAS;IACxB,SAAS,EAAEZ,gBAAgB,2BAEzBM,iBAAiB,2BAA+BkB,KAAK,CAAC,EACtDb,OAAO,IAAI,CAACM,QAAQ,mCAAuC;IAC3D;IACAL,QAAQ,sCAA0C,EAClDK,QAAQ,sCAA0C,EAClDP,SAAS,GAAG,CAAC,uCAA2C,EACxDU,SAAS,CACT;IACF,KAAK,EAAED;EAAM,IAEZlB,YAAY,CAACY,MAAM,CAAC,iBACnB;IAAK,SAAS;EAAuC,GAAEA,MAAM,CAC9D,eACD;IAAK,SAAS;EAAqC,gBACjD;IAAK,SAAS;EAAyC,GAAEJ,QAAQ,CAAO,EACvER,YAAY,CAACe,WAAW,CAAC,iBACxB,oBAAC,QAAQ;IAAC,SAAS;EAA4C,GAC5DA,WAAW,CAEf,CACG,eACN;IAAK,SAAS;EAAsC,GACjDf,YAAY,CAACa,KAAK,CAAC,iBAClB;IAAK,SAAS;EAAwC,GAAEA,KAAK,CAC9D,EACAF,QAAQ,iBACP,oBAAC,UAAU;IAAC,SAAS;EAA6C,EACnE,CACG,CACI;AAEhB,CAAC"}
@@ -12,7 +12,7 @@ export var FocusVisible = function FocusVisible(_ref) {
12
12
  });
13
13
  };
14
14
  var styles = {
15
- "FocusVisible--mode-outside": "vkuiFocusVisible--mode-outside",
16
- "FocusVisible--mode-inside": "vkuiFocusVisible--mode-inside"
15
+ "FocusVisible--mode-inside": "vkuiFocusVisible--mode-inside",
16
+ "FocusVisible--mode-outside": "vkuiFocusVisible--mode-outside"
17
17
  };
18
18
  //# sourceMappingURL=FocusVisible.js.map
@@ -1 +1 @@
1
- [class$="--focus-visible"]>.vkuiFocusVisible{border-radius:inherit;bottom:2px;box-shadow:0 0 0 2px var(--vkui--color_stroke_accent);left:2px;overflow:hidden;pointer-events:none;position:absolute;right:2px;top:2px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0}[class$="--focus-visible"]>.vkuiFocusVisible--mode-outside{bottom:-2px;left:-2px;right:-2px;top:-2px}@media (prefers-reduced-motion:no-preference){[class$="--focus-visible"]>.vkuiFocusVisible{animation:vkui-animation-focus-visible .15s ease-in-out forwards;animation-delay:.01ms;bottom:4px;left:4px;right:4px;top:4px;will-change:top,left,bottom,right}[class$="--focus-visible"]>.vkuiFocusVisible--mode-outside{animation-name:vkui-animation-focus-visible-outside;bottom:0;left:0;right:0;top:0}@keyframes vkui-animation-focus-visible{to{bottom:2px;left:2px;right:2px;top:2px;will-change:auto}}@keyframes vkui-animation-focus-visible-outside{to{bottom:-2px;left:-2px;right:-2px;top:-2px;will-change:auto}}}
1
+ [class$="--focus-visible"]>.vkuiFocusVisible{border-radius:inherit;overflow:hidden;pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0}[class$="--focus-visible"]>.vkuiFocusVisible--mode-inside{border-color:var(--vkui--color_stroke_accent);border-style:solid;border-width:2px;bottom:2px;box-sizing:border-box;left:2px;right:2px;top:2px}[class$="--focus-visible"]>.vkuiFocusVisible--mode-outside{bottom:-2px;box-shadow:0 0 0 2px var(--vkui--color_stroke_accent);left:-2px;right:-2px;top:-2px}@media (prefers-reduced-motion:no-preference){[class$="--focus-visible"]>.vkuiFocusVisible{animation:vkui-animation-focus-visible .15s ease-in-out forwards;animation-delay:.01ms;bottom:4px;left:4px;right:4px;top:4px;will-change:top,left,bottom,right}[class$="--focus-visible"]>.vkuiFocusVisible--mode-outside{animation-name:vkui-animation-focus-visible-outside;bottom:0;left:0;right:0;top:0}@keyframes vkui-animation-focus-visible{to{bottom:0;left:0;right:0;top:0;will-change:auto}}@keyframes vkui-animation-focus-visible-outside{to{bottom:-2px;left:-2px;right:-2px;top:-2px;will-change:auto}}}
@@ -1 +1 @@
1
- .vkuiFormField{-webkit-tap-highlight-color:transparent;align-items:center;box-sizing:border-box;display:flex;font-family:var(--vkui--font_family_base);min-height:var(--vkui--size_field_height--regular);position:relative;z-index:1}.vkuiFormField:focus{outline:none}.vkuiFormField--sizeY-compact{min-height:var(--vkui--size_field_height--compact)}@media (max-height:414px),(pointer:fine) and (min-width:768px){.vkuiFormField--sizeY-none{min-height:var(--vkui--size_field_height--compact)}}.vkuiFormField>*{border-radius:inherit;z-index:6}.vkuiFormField__after,.vkuiFormField__before{align-content:center;align-items:center;color:var(--vkui--color_icon_secondary);display:flex;flex-shrink:0;height:100%;justify-content:center;min-width:var(--vkui--size_field_height--regular);position:relative;z-index:7}.vkuiFormField--sizeY-compact .vkuiFormField__after,.vkuiFormField--sizeY-compact .vkuiFormField__before{height:var(--vkui--size_field_height--compact);min-width:var(--vkui--size_field_height--compact)}@media (max-height:414px),(pointer:fine) and (min-width:768px){.vkuiFormField--sizeY-none .vkuiFormField__after,.vkuiFormField--sizeY-none .vkuiFormField__before{height:var(--vkui--size_field_height--compact);min-width:var(--vkui--size_field_height--compact)}}.vkuiFormField__before{color:var(--vkui--color_icon_accent)}.vkuiFormField__after{color:var(--vkui--color_icon_secondary)}.vkuiFormField__border{border:1px solid transparent;border:var(--vkui_internal--thin_border) solid transparent;border-radius:var(--vkui--size_border_radius--regular);box-sizing:border-box;height:100%;left:0;position:absolute;top:0;transform-origin:left top;width:100%;z-index:1}.vkuiFormField--mode-default .vkuiFormField__border{background-color:var(--vkui--color_field_background);border-color:var(--vkui--color_field_border_alpha)}.vkuiFormField--status-error .vkuiFormField__border,.vkuiFormItem--status-error .vkuiFormField__border{background-color:var(--vkui--color_background_negative_tint);border-color:var(--vkui--color_stroke_negative);z-index:3}.vkuiFormField--status-valid .vkuiFormField__border,.vkuiFormItem--status-valid .vkuiFormField__border{border-color:var(--vkui--color_stroke_positive);z-index:3}.vkuiFormField--disabled{cursor:default;opacity:var(--vkui--opacity_disable_accessibility);pointer-events:none}.vkuiFormField--hover .vkuiFormField__border{background-color:var(--vkui--color_field_background)}.vkuiFormField--mode-default.vkuiFormField--hover .vkuiFormField__border{border-color:var(--vkui--color_field_border_alpha--hover);z-index:4}.vkuiFormField :focus~.vkuiFormField__border,.vkuiFormField:focus-within .vkuiFormField__border{border-color:var(--vkui--color_stroke_accent);z-index:5}.vkuiModalCardBase__header+.vkuiFormField,.vkuiModalCardBase__subheader+.vkuiFormField{margin-top:16px}.vkuiChipsSelect--pop-down .vkuiFormField__border,.vkuiCustomSelect--pop-down .vkuiFormField__border{border-bottom-left-radius:0;border-bottom-right-radius:0}.vkuiChipsSelect--pop-up .vkuiFormField__border,.vkuiCustomSelect--pop-up .vkuiFormField__border{border-top-left-radius:0;border-top-right-radius:0}.vkuiSelect .vkuiFormField__after{pointer-events:none}.vkuiCalendarHeader__picker .vkuiFormField__after{min-width:12px;padding-right:8px}.vkuiChipsInput .vkuiFormField__after{z-index:7}.vkuiFormLayoutGroup--segmented .vkuiFormField{z-index:auto}.vkuiFormLayoutGroup--segmented .vkuiRemovable__content>.vkuiFormItem:not(:first-of-type):not(:last-of-type) .vkuiFormField__border,.vkuiFormLayoutGroup--segmented>.vkuiFormItem:not(:first-of-type):not(:last-of-type) .vkuiFormField__border{border-radius:0}.vkuiFormLayoutGroup--segmented .vkuiRemovable__content>:first-of-type:not(:last-of-type) .vkuiFormField__border,.vkuiFormLayoutGroup--segmented>:first-of-type:not(:last-of-type) .vkuiFormField__border{border-bottom-right-radius:0;border-top-right-radius:0}.vkuiFormLayoutGroup--segmented .vkuiRemovable__content>.vkuiFormItem:not(:first-of-type):last-of-type .vkuiFormField__border,.vkuiFormLayoutGroup--segmented>.vkuiFormItem:not(:first-of-type):last-of-type .vkuiFormField__border{border-bottom-left-radius:0;border-top-left-radius:0}
1
+ .vkuiFormField{-webkit-tap-highlight-color:transparent;align-items:center;box-sizing:border-box;display:flex;font-family:var(--vkui--font_family_base);min-height:var(--vkui--size_field_height--regular);position:relative;z-index:1}.vkuiFormField--sizeY-compact{min-height:var(--vkui--size_field_height--compact)}@media (max-height:414px),(pointer:fine) and (min-width:768px){.vkuiFormField--sizeY-none{min-height:var(--vkui--size_field_height--compact)}}.vkuiFormField>*{border-radius:inherit;z-index:6}.vkuiFormField__after,.vkuiFormField__before{align-content:center;align-items:center;color:var(--vkui--color_icon_secondary);display:flex;flex-shrink:0;height:100%;justify-content:center;min-width:var(--vkui--size_field_height--regular);position:relative;z-index:7}.vkuiFormField--sizeY-compact .vkuiFormField__after,.vkuiFormField--sizeY-compact .vkuiFormField__before{height:var(--vkui--size_field_height--compact);min-width:var(--vkui--size_field_height--compact)}@media (max-height:414px),(pointer:fine) and (min-width:768px){.vkuiFormField--sizeY-none .vkuiFormField__after,.vkuiFormField--sizeY-none .vkuiFormField__before{height:var(--vkui--size_field_height--compact);min-width:var(--vkui--size_field_height--compact)}}.vkuiFormField__before{color:var(--vkui--color_icon_accent)}.vkuiFormField__after{color:var(--vkui--color_icon_secondary)}.vkuiFormField__border{border:1px solid transparent;border:var(--vkui_internal--thin_border) solid transparent;border-radius:var(--vkui--size_border_radius--regular);box-sizing:border-box;height:100%;left:0;position:absolute;top:0;transform-origin:left top;width:100%;z-index:1}.vkuiFormField--mode-default .vkuiFormField__border{background-color:var(--vkui--color_field_background);border-color:var(--vkui--color_field_border_alpha)}.vkuiFormField--status-error .vkuiFormField__border,.vkuiFormItem--status-error .vkuiFormField__border{background-color:var(--vkui--color_background_negative_tint);border-color:var(--vkui--color_stroke_negative);z-index:3}.vkuiFormField--status-valid .vkuiFormField__border,.vkuiFormItem--status-valid .vkuiFormField__border{border-color:var(--vkui--color_stroke_positive);z-index:3}.vkuiFormField--disabled{cursor:default;opacity:var(--vkui--opacity_disable_accessibility);pointer-events:none}.vkuiFormField--hover .vkuiFormField__border{background-color:var(--vkui--color_field_background)}.vkuiFormField--mode-default.vkuiFormField--hover .vkuiFormField__border{border-color:var(--vkui--color_field_border_alpha--hover);z-index:4}.vkuiFormField :focus{outline:none}.vkuiFormField :focus~.vkuiFormField__border,.vkuiFormField:focus-within .vkuiFormField__border{border-color:var(--vkui--color_stroke_accent);z-index:5}.vkuiModalCardBase__header+.vkuiFormField,.vkuiModalCardBase__subheader+.vkuiFormField{margin-top:16px}.vkuiSelect .vkuiFormField__after{pointer-events:none}.vkuiCalendarHeader__picker .vkuiFormField__after{min-width:12px;padding-right:8px}.vkuiChipsInput .vkuiFormField__after{z-index:7}.vkuiFormLayoutGroup--segmented .vkuiFormField{z-index:auto}.vkuiFormLayoutGroup--segmented .vkuiRemovable__content>.vkuiFormItem:not(:first-of-type):not(:last-of-type) .vkuiFormField__border,.vkuiFormLayoutGroup--segmented>.vkuiFormItem:not(:first-of-type):not(:last-of-type) .vkuiFormField__border{border-radius:0}.vkuiFormLayoutGroup--segmented .vkuiRemovable__content>:first-of-type:not(:last-of-type) .vkuiFormField__border,.vkuiFormLayoutGroup--segmented>:first-of-type:not(:last-of-type) .vkuiFormField__border{border-bottom-right-radius:0;border-top-right-radius:0}.vkuiFormLayoutGroup--segmented .vkuiRemovable__content>.vkuiFormItem:not(:first-of-type):last-of-type .vkuiFormField__border,.vkuiFormLayoutGroup--segmented>.vkuiFormItem:not(:first-of-type):last-of-type .vkuiFormField__border{border-bottom-left-radius:0;border-top-left-radius:0}
@@ -1 +1 @@
1
- .vkuiHorizontalScrollArrow{background-color:initial;border:none;cursor:pointer;display:flex;flex-direction:column;height:100%;justify-content:center;opacity:0;padding:0;position:absolute;top:0;transition:opacity .15s;transition-timing-function:var(--vkui--animation_easing_platform);-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto;z-index:3}.vkuiHorizontalScrollArrow__icon{align-items:center;background-color:var(--vkui--color_background_modal);box-shadow:var(--vkui--elevation3);color:var(--vkui--color_icon_secondary);display:flex;justify-content:center}.vkuiHorizontalScrollArrow--size-m .vkuiHorizontalScrollArrow__icon{border-radius:14px;height:28px;width:28px}.vkuiHorizontalScrollArrow--size-l .vkuiHorizontalScrollArrow__icon{border-radius:24px;height:40px;width:40px}.vkuiHorizontalScrollArrow--direction-left{left:0;padding-left:16px;padding-left:var(--vkui--size_base_padding_horizontal--regular,16px)}.vkuiHorizontalScrollArrow--direction-right{padding-right:16px;padding-right:var(--vkui--size_base_padding_horizontal--regular,16px);right:0}.vkuiGallery:hover .vkuiHorizontalScrollArrow,.vkuiHorizontalScroll:hover .vkuiHorizontalScrollArrow{opacity:var(--vkui--opacity_disable_accessibility)}.vkuiGallery:hover .vkuiHorizontalScrollArrow:hover,.vkuiHorizontalScroll--withConstArrows .vkuiHorizontalScrollArrow,.vkuiHorizontalScroll--withConstArrows:hover .vkuiHorizontalScrollArrow,.vkuiHorizontalScroll:hover .vkuiHorizontalScrollArrow:hover{opacity:1}
1
+ .vkuiHorizontalScrollArrow{background-color:initial;border:none;cursor:pointer;display:flex;flex-direction:column;height:100%;justify-content:center;opacity:0;padding:0;position:absolute;top:0;transition:opacity .15s;transition-timing-function:var(--vkui--animation_easing_platform);-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto;z-index:3}.vkuiHorizontalScrollArrow__icon{align-items:center;background-color:var(--vkui--color_background_modal);box-shadow:var(--vkui--elevation3);color:var(--vkui--color_icon_secondary);display:flex;justify-content:center}.vkuiHorizontalScrollArrow--size-m .vkuiHorizontalScrollArrow__icon{border-radius:14px;height:28px;width:28px}.vkuiHorizontalScrollArrow--size-l .vkuiHorizontalScrollArrow__icon{border-radius:24px;height:40px;width:40px}.vkuiHorizontalScrollArrow--direction-left{left:0;padding-left:16px;padding-left:var(--vkui--size_base_padding_horizontal--regular,16px)}.vkuiHorizontalScrollArrow--direction-right{padding-right:16px;padding-right:var(--vkui--size_base_padding_horizontal--regular,16px);right:0}.vkuiBaseGallery:hover .vkuiHorizontalScrollArrow,.vkuiHorizontalScroll:hover .vkuiHorizontalScrollArrow{opacity:var(--vkui--opacity_disable_accessibility)}.vkuiBaseGallery:hover .vkuiHorizontalScrollArrow:hover,.vkuiHorizontalScroll--withConstArrows .vkuiHorizontalScrollArrow,.vkuiHorizontalScroll--withConstArrows:hover .vkuiHorizontalScrollArrow,.vkuiHorizontalScroll:hover .vkuiHorizontalScrollArrow:hover{opacity:1}
@@ -1 +1 @@
1
- .vkuiInput{font-size:16px;line-height:20px;position:relative}.vkuiInput--align-center .vkuiInput__el{text-align:center}.vkuiInput--align-right .vkuiInput__el{text-align:right}.vkuiInput__el{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;box-shadow:none;box-sizing:border-box;color:var(--vkui--color_text_primary);display:block;font-family:inherit;font-size:var(--vkui--font_text--font_size--regular);font-weight:var(--vkui--font_text--font_weight--regular);line-height:var(--vkui--font_text--line_height--regular);margin:0;padding-left:12px;padding-right:12px;position:relative;text-overflow:ellipsis;width:100%;z-index:6}.vkuiInput--sizeY-compact .vkuiInput__el{font-size:var(--vkui--font_text--font_size--compact);line-height:var(--vkui--font_text--line_height--compact)}.vkuiInput--hasBefore .vkuiInput__el{padding-left:0}.vkuiInput--hasAfter .vkuiInput__el{padding-right:0}@media (max-height:414px),(pointer:fine) and (min-width:768px){.vkuiInput--sizeY-none .vkuiInput__el{font-size:var(--vkui--font_text--font_size--compact);line-height:var(--vkui--font_text--line_height--compact)}}.vkuiInput__el:disabled{opacity:var(--vkui--opacity_disable_accessibility)}.vkuiInput__el::-webkit-input-placeholder{color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el::-moz-placeholder{color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el::-ms-input-placeholder{color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el::placeholder{color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el:disabled::-webkit-input-placeholder{color:var(--vkui--color_text_secondary)}.vkuiInput__el:disabled::-moz-placeholder{color:var(--vkui--color_text_secondary)}.vkuiInput__el:disabled::-ms-input-placeholder{color:var(--vkui--color_text_secondary)}.vkuiInput__el:disabled::placeholder{color:var(--vkui--color_text_secondary)}.vkuiInput__el:focus{outline:none}
1
+ .vkuiInput{font-size:16px;line-height:20px;position:relative}.vkuiInput--align-center .vkuiInput__el{text-align:center}.vkuiInput--align-right .vkuiInput__el{text-align:right}.vkuiInput__el{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;box-shadow:none;box-sizing:border-box;color:var(--vkui--color_text_primary);display:block;font-family:inherit;font-size:var(--vkui--font_text--font_size--regular);font-weight:var(--vkui--font_text--font_weight--regular);line-height:var(--vkui--font_text--line_height--regular);margin:0;padding-left:12px;padding-right:12px;position:relative;text-overflow:ellipsis;width:100%;z-index:6}.vkuiInput--sizeY-compact .vkuiInput__el{font-size:var(--vkui--font_text--font_size--compact);line-height:var(--vkui--font_text--line_height--compact)}.vkuiInput--hasBefore .vkuiInput__el{padding-left:0}.vkuiInput--hasAfter .vkuiInput__el{padding-right:0}@media (max-height:414px),(pointer:fine) and (min-width:768px){.vkuiInput--sizeY-none .vkuiInput__el{font-size:var(--vkui--font_text--font_size--compact);line-height:var(--vkui--font_text--line_height--compact)}}.vkuiInput__el:disabled{opacity:var(--vkui--opacity_disable_accessibility)}.vkuiInput__el::-webkit-input-placeholder{color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el::-moz-placeholder{color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el::-ms-input-placeholder{color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el::placeholder{color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el:disabled::-webkit-input-placeholder{color:var(--vkui--color_text_secondary)}.vkuiInput__el:disabled::-moz-placeholder{color:var(--vkui--color_text_secondary)}.vkuiInput__el:disabled::-ms-input-placeholder{color:var(--vkui--color_text_secondary)}.vkuiInput__el:disabled::placeholder{color:var(--vkui--color_text_secondary)}
@@ -1 +1 @@
1
- .vkuiPanelHeader{position:relative}.vkuiPanelHeader--vis.vkuiPanelHeader--fixed:before{content:"";display:block}.vkuiPanelHeader:not(.vkuiPanelHeader--vis):not(.vkuiPanelHeader--fixed){height:0}.vkuiPanelHeader__fixed{z-index:10}.vkuiPanelHeader__in{align-items:center;background:var(--vkui--color_background_content);display:flex;justify-content:space-between;position:relative;white-space:nowrap}.vkuiPanelHeader--trnsp .vkuiPanelHeader__in{background:transparent}.vkuiPanelHeader--sizeX-regular .vkuiPanelHeader--shadow .vkuiPanelHeader__in{box-shadow:0 0 4px rgba(0,0,0,.08)}@media (min-width:768px){.vkuiPanelHeader--sizeX-none .vkuiPanelHeader--shadow .vkuiPanelHeader__in{box-shadow:0 0 4px rgba(0,0,0,.08)}}.vkuiPanelHeader__before{box-sizing:border-box;color:var(--vkui--color_icon_accent_themed);display:flex;flex-shrink:0}.vkuiPanelHeader__content{overflow:hidden}.vkuiPanelHeader__content>*{display:block;overflow:hidden;text-overflow:ellipsis}.vkuiPanelHeader__content-in{color:var(--vkui--color_text_primary);font-family:var(--vkui--font_family_accent);font-weight:500}.vkuiPanelHeader:before,.vkuiPanelHeader__in{height:var(--vkui--size_panel_header_height--regular);padding-top:0;padding-top:var(--vkui_internal--safe_area_inset_top)}.vkuiPanelHeader__after{box-sizing:border-box;color:var(--vkui--color_icon_accent_themed);display:flex;justify-content:flex-end}.vkuiPanelHeader--vkapps .vkuiPanelHeader__after{min-width:90px}.vkuiPanelHeader--ios .vkuiPanelHeader__before{flex-basis:0;flex-grow:1;flex-shrink:0;opacity:1;padding:4px 0 4px 4px;transition:opacity .3s var(--vkui--animation_easing_platform)}.vkuiPanelHeader--ios .vkuiPanelHeader__before .vkuiPanelHeaderButton+.vkuiPanelHeaderButton--primitive{margin-left:-6px;padding-left:0}.vkuiPanelHeader--ios .vkuiPanelHeader__content{opacity:1;text-align:center;transition:opacity .3s var(--vkui--animation_easing_platform)}.vkuiPanelHeader--ios .vkuiPanelHeader__content-in{font-size:21px}.vkuiPanelHeader--ios .vkuiPanelHeader__content>*{padding:0 4px}.vkuiPanelHeader--ios.vkuiPanelHeader--no-before .vkuiPanelHeader__content{padding-left:8px}.vkuiPanelHeader--ios.vkuiPanelHeader--no-after .vkuiPanelHeader__content>*{padding-right:0}.vkuiPanelHeader--ios.vkuiPanelHeader--no-after .vkuiPanelHeader__content{padding-right:8px}.vkuiPanelHeader--ios .vkuiPanelHeader__after{flex-basis:0;flex-grow:1;flex-shrink:0;opacity:1;padding:4px 4px 4px 0;transition:opacity .3s var(--vkui--animation_easing_platform)}.vkuiView--ios .vkuiView__panel--prev .vkuiPanelHeader__after,.vkuiView--ios .vkuiView__panel--prev .vkuiPanelHeader__before,.vkuiView--ios .vkuiView__panel--prev .vkuiPanelHeader__content{opacity:0}.vkuiPanelHeader--android .vkuiPanelHeader__before:not(:empty){padding:4px 0 4px 4px}.vkuiPanelHeader--android .vkuiPanelHeader__content{align-items:center;flex-grow:1;max-width:100%}.vkuiPanelHeader--android .vkuiPanelHeader__content-in{font-size:23px}.vkuiPanelHeader--android .vkuiPanelHeader__content>*{padding:0 12px}.vkuiPanelHeader--android .vkuiSearch,.vkuiPanelHeader--vkcom .vkuiSearch{padding:0 4px}.vkuiSplitCol--spaced .vkuiPanelHeader--android.vkuiPanelHeader--no-before:not(.vkuiModalPageHeader__in) .vkuiPanelHeader__content,.vkuiSplitCol--viewWidth-tabletPlus.vkuiSplitCol--spaced-none.vkuiSplitCol--spaced-auto .vkuiPanelHeader--android.vkuiPanelHeader--no-before:not(.vkuiModalPageHeader__in) .vkuiPanelHeader__content{padding-left:0}@media (min-width:768px){.vkuiSplitCol--viewWidth-none.vkuiSplitCol--spaced-none.vkuiSplitCol--spaced-auto .vkuiPanelHeader--android.vkuiPanelHeader--no-before:not(.vkuiModalPageHeader__in) .vkuiPanelHeader__content{padding-left:0}}.vkuiPanelHeader--android.vkuiPanelHeader--no-after .vkuiPanelHeader__content>*,.vkuiPanelHeader--vkcom.vkuiPanelHeader--no-after .vkuiPanelHeader__content>*{padding-right:0}.vkuiPanelHeader--android.vkuiPanelHeader--no-after .vkuiPanelHeader__content{padding-right:16px}.vkuiPanelHeader--android.vkuiPanelHeader--no-before .vkuiPanelHeader__content{padding-left:16px}.vkuiSplitCol--spaced .vkuiPanelHeader--android.vkuiPanelHeader--no-after:not(.vkuiModalPageHeader__in) .vkuiPanelHeader__content,.vkuiSplitCol--viewWidth-tabletPlus.vkuiSplitCol--spaced-none.vkuiSplitCol--spaced-auto .vkuiPanelHeader--android.vkuiPanelHeader--no-after:not(.vkuiModalPageHeader__in) .vkuiPanelHeader__content{padding-right:0}@media (min-width:768px){.vkuiSplitCol--viewWidth-none.vkuiSplitCol--spaced-none.vkuiSplitCol--spaced-auto .vkuiPanelHeader--android.vkuiPanelHeader--no-after:not(.vkuiModalPageHeader__in) .vkuiPanelHeader__content{padding-right:0}}.vkuiPanelHeader--android .vkuiPanelHeader__after:not(:empty),.vkuiPanelHeader--vkcom .vkuiPanelHeader__after:not(:empty){padding:4px 4px 4px 0}.vkuiPanelHeader--vkcom{position:relative;z-index:10}.vkuiPanelHeader--vkcom.vkuiPanelHeader--sizeX-regular:not(.vkuiModalPageHeader__in):after,.vkuiPanelHeader--vkcom.vkuiPanelHeader--sizeX-regular:not(.vkuiPanelHeader--sep) .vkuiPanelHeader__in:after{background-color:var(--vkui--color_background_content);bottom:0;content:"";height:1px;height:var(--vkui_internal--thin_border);left:1px;left:var(--vkui_internal--thin_border);position:absolute;right:1px;right:var(--vkui_internal--thin_border)}@media (min-width:768px){.vkuiPanelHeader--vkcom.vkuiPanelHeader--sizeX-none:not(.vkuiModalPageHeader__in):after,.vkuiPanelHeader--vkcom.vkuiPanelHeader--sizeX-none:not(.vkuiPanelHeader--sep) .vkuiPanelHeader__in:after{background-color:var(--vkui--color_background_content);bottom:0;content:"";height:1px;height:var(--vkui_internal--thin_border);left:1px;left:var(--vkui_internal--thin_border);position:absolute;right:1px;right:var(--vkui_internal--thin_border)}}.vkuiPanelHeader--vkcom.vkuiPanelHeader--sizeX-regular:not(.vkuiModalPageHeader__in) .vkuiPanelHeader__in{border-bottom:none;border-top-left-radius:8px;border-top-right-radius:8px;box-shadow:0 0 0 1px var(--vkui--color_field_border_alpha) inset;box-shadow:0 0 0 var(--vkui_internal--thin_border) var(--vkui--color_field_border_alpha) inset}@media (min-width:768px){.vkuiPanelHeader--vkcom.vkuiPanelHeader--sizeX-none:not(.vkuiModalPageHeader__in) .vkuiPanelHeader__in{border-bottom:none;border-top-left-radius:8px;border-top-right-radius:8px;box-shadow:0 0 0 1px var(--vkui--color_field_border_alpha) inset;box-shadow:0 0 0 var(--vkui_internal--thin_border) var(--vkui--color_field_border_alpha) inset}}.vkuiPanelHeader--vkcom .vkuiPanelHeader__content{text-align:center}.vkuiPanelHeader--vkcom .vkuiPanelHeader__before:not(:empty){padding:0 0 0 4px}.vkuiPanelHeader--vkcom .vkuiPanelHeader__after,.vkuiPanelHeader--vkcom .vkuiPanelHeader__before{flex-basis:0;flex-grow:1;flex-shrink:0}.vkuiPanelHeader--no-before .vkuiPanelHeader__content>*{padding-left:0}
1
+ .vkuiPanelHeader{position:relative}.vkuiPanelHeader--vis.vkuiPanelHeader--fixed:before{content:"";display:block}.vkuiPanelHeader:not(.vkuiPanelHeader--vis):not(.vkuiPanelHeader--fixed){height:0}.vkuiPanelHeader__fixed{z-index:10}.vkuiPanelHeader__in{align-items:center;background:var(--vkui--color_background_content);display:flex;justify-content:space-between;position:relative;white-space:nowrap}.vkuiPanelHeader--trnsp .vkuiPanelHeader__in{background:transparent}.vkuiPanelHeader--sizeX-regular .vkuiPanelHeader--shadow .vkuiPanelHeader__in{box-shadow:0 0 4px rgba(0,0,0,.08)}@media (min-width:768px){.vkuiPanelHeader--sizeX-none .vkuiPanelHeader--shadow .vkuiPanelHeader__in{box-shadow:0 0 4px rgba(0,0,0,.08)}}.vkuiPanelHeader__before{box-sizing:border-box;color:var(--vkui--color_icon_accent_themed);display:flex;flex-shrink:0}.vkuiPanelHeader__content{overflow:hidden}.vkuiPanelHeader__content>*{display:block;overflow:hidden;text-overflow:ellipsis}.vkuiPanelHeader__content-in{color:var(--vkui--color_text_primary);font-family:var(--vkui--font_family_accent);font-weight:500}.vkuiPanelHeader:before,.vkuiPanelHeader__in{height:var(--vkui--size_panel_header_height--regular);padding-top:0;padding-top:var(--vkui_internal--safe_area_inset_top)}.vkuiPanelHeader__after{box-sizing:border-box;color:var(--vkui--color_icon_accent_themed);display:flex;justify-content:flex-end}.vkuiPanelHeader--vkapps .vkuiPanelHeader__after{min-width:90px}.vkuiPanelHeader--ios .vkuiPanelHeader__before{flex-basis:0;flex-grow:1;flex-shrink:0;opacity:1;padding:4px 0 4px 4px;transition:opacity .3s var(--vkui--animation_easing_platform)}.vkuiPanelHeader--ios .vkuiPanelHeader__before .vkuiPanelHeaderButton+.vkuiPanelHeaderButton--primitive{margin-left:-6px;padding-left:0}.vkuiPanelHeader--ios .vkuiPanelHeader__content{opacity:1;text-align:center;transition:opacity .3s var(--vkui--animation_easing_platform)}.vkuiPanelHeader--ios .vkuiPanelHeader__content-in{font-size:21px}.vkuiPanelHeader--ios .vkuiPanelHeader__content>*{padding:0 4px}.vkuiPanelHeader--ios.vkuiPanelHeader--no-before .vkuiPanelHeader__content{padding-left:8px}.vkuiPanelHeader--ios.vkuiPanelHeader--no-after .vkuiPanelHeader__content>*{padding-right:0}.vkuiPanelHeader--ios.vkuiPanelHeader--no-after .vkuiPanelHeader__content{padding-right:8px}.vkuiPanelHeader--ios .vkuiPanelHeader__after{flex-basis:0;flex-grow:1;flex-shrink:0;opacity:1;padding:4px 4px 4px 0;transition:opacity .3s var(--vkui--animation_easing_platform)}.vkuiView--ios .vkuiView__panel--prev .vkuiPanelHeader__after,.vkuiView--ios .vkuiView__panel--prev .vkuiPanelHeader__before,.vkuiView--ios .vkuiView__panel--prev .vkuiPanelHeader__content{opacity:0}.vkuiPanelHeader--android .vkuiPanelHeader__before:not(:empty){padding:4px 0 4px 4px}.vkuiPanelHeader--android .vkuiPanelHeader__content{align-items:center;flex-grow:1;max-width:100%}.vkuiPanelHeader--android .vkuiPanelHeader__content-in{font-size:23px}.vkuiPanelHeader--android .vkuiPanelHeader__content>*{padding:0 12px}.vkuiPanelHeader--android .vkuiSearch,.vkuiPanelHeader--vkcom .vkuiSearch{padding:0 4px}.vkuiSplitCol--spaced .vkuiPanelHeader--android.vkuiPanelHeader--no-before:not(.vkuiModalPageHeader__in) .vkuiPanelHeader__content,.vkuiSplitCol--viewWidth-tabletPlus.vkuiSplitCol--spaced-none.vkuiSplitCol--spaced-auto .vkuiPanelHeader--android.vkuiPanelHeader--no-before:not(.vkuiModalPageHeader__in) .vkuiPanelHeader__content{padding-left:0}@media (min-width:768px){.vkuiSplitCol--viewWidth-none.vkuiSplitCol--spaced-none.vkuiSplitCol--spaced-auto .vkuiPanelHeader--android.vkuiPanelHeader--no-before:not(.vkuiModalPageHeader__in) .vkuiPanelHeader__content{padding-left:0}}.vkuiPanelHeader--android.vkuiPanelHeader--no-after .vkuiPanelHeader__content>*,.vkuiPanelHeader--vkcom.vkuiPanelHeader--no-after .vkuiPanelHeader__content>*{padding-right:0}.vkuiPanelHeader--android.vkuiPanelHeader--no-after .vkuiPanelHeader__content{padding-right:16px}.vkuiPanelHeader--android.vkuiPanelHeader--no-before .vkuiPanelHeader__content{padding-left:16px}.vkuiSplitCol--spaced .vkuiPanelHeader--android.vkuiPanelHeader--no-after:not(.vkuiModalPageHeader__in) .vkuiPanelHeader__content,.vkuiSplitCol--viewWidth-tabletPlus.vkuiSplitCol--spaced-none.vkuiSplitCol--spaced-auto .vkuiPanelHeader--android.vkuiPanelHeader--no-after:not(.vkuiModalPageHeader__in) .vkuiPanelHeader__content{padding-right:0}@media (min-width:768px){.vkuiSplitCol--viewWidth-none.vkuiSplitCol--spaced-none.vkuiSplitCol--spaced-auto .vkuiPanelHeader--android.vkuiPanelHeader--no-after:not(.vkuiModalPageHeader__in) .vkuiPanelHeader__content{padding-right:0}}.vkuiPanelHeader--android .vkuiPanelHeader__after:not(:empty),.vkuiPanelHeader--vkcom .vkuiPanelHeader__after:not(:empty){padding:4px 4px 4px 0}.vkuiPanelHeader--vkcom{position:relative;z-index:10}.vkuiPanelHeader--vkcom.vkuiPanelHeader--sizeX-regular:not(.vkuiModalPageHeader__in):after,.vkuiPanelHeader--vkcom.vkuiPanelHeader--sizeX-regular:not(.vkuiPanelHeader--sep) .vkuiPanelHeader__in:after{background-color:var(--vkui--color_background_content);bottom:0;content:"";height:1px;height:var(--vkui_internal--thin_border);left:1px;left:var(--vkui_internal--thin_border);position:absolute;right:1px;right:var(--vkui_internal--thin_border)}@media (min-width:768px){.vkuiPanelHeader--vkcom.vkuiPanelHeader--sizeX-none:not(.vkuiModalPageHeader__in):after,.vkuiPanelHeader--vkcom.vkuiPanelHeader--sizeX-none:not(.vkuiPanelHeader--sep) .vkuiPanelHeader__in:after{background-color:var(--vkui--color_background_content);bottom:0;content:"";height:1px;height:var(--vkui_internal--thin_border);left:1px;left:var(--vkui_internal--thin_border);position:absolute;right:1px;right:var(--vkui_internal--thin_border)}}.vkuiPanelHeader--vkcom.vkuiPanelHeader--sizeX-regular:not(.vkuiModalPageHeader__in) .vkuiPanelHeader__in{border-bottom:none;border-top-left-radius:var(--vkui--size_border_radius_paper--regular);border-top-right-radius:var(--vkui--size_border_radius_paper--regular);box-shadow:0 0 0 1px var(--vkui--color_field_border_alpha) inset;box-shadow:0 0 0 var(--vkui_internal--thin_border) var(--vkui--color_field_border_alpha) inset}@media (min-width:768px){.vkuiPanelHeader--vkcom.vkuiPanelHeader--sizeX-none:not(.vkuiModalPageHeader__in) .vkuiPanelHeader__in{border-bottom:none;border-top-left-radius:var(--vkui--size_border_radius_paper--regular);border-top-right-radius:var(--vkui--size_border_radius_paper--regular);box-shadow:0 0 0 1px var(--vkui--color_field_border_alpha) inset;box-shadow:0 0 0 var(--vkui_internal--thin_border) var(--vkui--color_field_border_alpha) inset}}.vkuiPanelHeader--vkcom .vkuiPanelHeader__content{text-align:center}.vkuiPanelHeader--vkcom .vkuiPanelHeader__before:not(:empty){padding:0 0 0 4px}.vkuiPanelHeader--vkcom .vkuiPanelHeader__after,.vkuiPanelHeader--vkcom .vkuiPanelHeader__before{flex-basis:0;flex-grow:1;flex-shrink:0}.vkuiPanelHeader--no-before .vkuiPanelHeader__content>*{padding-left:0}
@@ -71,10 +71,9 @@ export var PanelHeaderButton = function PanelHeaderButton(_ref2) {
71
71
  className: classNamesString("vkuiPanelHeaderButton", getPlatformClassName("vkuiPanelHeaderButton", platform), isPrimitive && "vkuiPanelHeaderButton--primitive", !isPrimitive && !isPrimitiveLabel && "vkuiPanelHeaderButton--notPrimitive", className)
72
72
  }), isPrimitive ? /*#__PURE__*/React.createElement(ButtonTypography, {
73
73
  primary: primary
74
- }, children) : children, /*#__PURE__*/React.createElement("div", {
74
+ }, children) : children, isPrimitiveLabel ? /*#__PURE__*/React.createElement(ButtonTypography, {
75
+ primary: primary,
75
76
  className: "vkuiPanelHeaderButton__label"
76
- }, isPrimitiveLabel ? /*#__PURE__*/React.createElement(ButtonTypography, {
77
- primary: primary
78
- }, label) : label));
77
+ }, label) : label);
79
78
  };
80
79
  //# sourceMappingURL=PanelHeaderButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PanelHeaderButton.js","names":["React","Tappable","getPlatformClassName","classNamesString","warnOnce","usePlatform","getTitleFromChildren","isPrimitiveReactNode","Platform","Text","Title","ButtonTypography","primary","children","platform","IOS","VKCOM","undefined","warn","PanelHeaderButton","label","className","restProps","isPrimitive","isPrimitiveLabel","hoverMode","activeMode","process","env","NODE_ENV","hasAccessibleName","Boolean","href"],"sources":["../../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { TappableProps, Tappable } from \"../Tappable/Tappable\";\nimport { getPlatformClassName } from \"../../helpers/getPlatformClassName\";\nimport { classNamesString } from \"../../lib/classNames\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { getTitleFromChildren, isPrimitiveReactNode } from \"../../lib/utils\";\nimport { Platform } from \"../../lib/platform\";\nimport { Text } from \"../Typography/Text/Text\";\nimport { Title } from \"../Typography/Title/Title\";\nimport styles from \"./PanelHeaderButton.module.css\";\n\nexport interface PanelHeaderButtonProps extends Omit<TappableProps, \"label\"> {\n primary?: boolean;\n label?: React.ReactNode;\n}\n\ninterface ButtonTypographyProps extends React.AllHTMLAttributes<HTMLElement> {\n primary?: PanelHeaderButtonProps[\"primary\"];\n}\n\nconst ButtonTypography = ({ primary, children }: ButtonTypographyProps) => {\n const platform = usePlatform();\n\n if (platform === Platform.IOS) {\n return (\n <Title Component=\"span\" level=\"3\" weight={primary ? \"1\" : \"3\"}>\n {children}\n </Title>\n );\n }\n\n return (\n <Text weight={platform === Platform.VKCOM ? undefined : \"2\"}>\n {children}\n </Text>\n );\n};\n\nconst warn = warnOnce(\"PanelHeaderButton\");\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PanelHeaderButton\n */\nexport const PanelHeaderButton = ({\n children,\n primary = false,\n label,\n className,\n ...restProps\n}: PanelHeaderButtonProps) => {\n const isPrimitive = isPrimitiveReactNode(children);\n const isPrimitiveLabel = isPrimitiveReactNode(label);\n const platform = usePlatform();\n\n let hoverMode;\n let activeMode;\n\n switch (platform) {\n case Platform.IOS:\n hoverMode = \"background\";\n activeMode = \"opacity\";\n break;\n case Platform.VKCOM:\n hoverMode = styles[\"PanelHeaderButton--hover\"];\n activeMode = styles[\"PanelHeaderButton--active\"];\n break;\n default:\n hoverMode = \"background\";\n activeMode = \"background\";\n }\n\n if (process.env.NODE_ENV === \"development\") {\n const hasAccessibleName = Boolean(\n getTitleFromChildren(children) ||\n getTitleFromChildren(label) ||\n restProps[\"aria-label\"] ||\n restProps[\"aria-labelledby\"]\n );\n\n if (!hasAccessibleName) {\n warn(\n \"a11y: У кнопки нет названия, которое может прочитать скринридер, и она недоступна для части пользователей. Замените содержимое на текст или добавьте описание действия с помощью пропа aria-label.\",\n \"error\"\n );\n }\n }\n\n return (\n <Tappable\n {...restProps}\n hoverMode={hoverMode}\n Component={restProps.href ? \"a\" : \"button\"}\n activeEffectDelay={200}\n activeMode={activeMode}\n className={classNamesString(\n styles[\"PanelHeaderButton\"],\n getPlatformClassName(styles[\"PanelHeaderButton\"], platform),\n isPrimitive && styles[\"PanelHeaderButton--primitive\"],\n !isPrimitive &&\n !isPrimitiveLabel &&\n styles[\"PanelHeaderButton--notPrimitive\"],\n className\n )}\n >\n {isPrimitive ? (\n <ButtonTypography primary={primary}>{children}</ButtonTypography>\n ) : (\n children\n )}\n <div className={styles[\"PanelHeaderButton__label\"]}>\n {isPrimitiveLabel ? (\n <ButtonTypography primary={primary}>{label}</ButtonTypography>\n ) : (\n label\n )}\n </div>\n </Tappable>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"PanelHeaderButton.js","names":["React","Tappable","getPlatformClassName","classNamesString","warnOnce","usePlatform","getTitleFromChildren","isPrimitiveReactNode","Platform","Text","Title","ButtonTypography","primary","children","platform","IOS","VKCOM","undefined","warn","PanelHeaderButton","label","className","restProps","isPrimitive","isPrimitiveLabel","hoverMode","activeMode","process","env","NODE_ENV","hasAccessibleName","Boolean","href"],"sources":["../../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { TappableProps, Tappable } from \"../Tappable/Tappable\";\nimport { getPlatformClassName } from \"../../helpers/getPlatformClassName\";\nimport { classNamesString } from \"../../lib/classNames\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { getTitleFromChildren, isPrimitiveReactNode } from \"../../lib/utils\";\nimport { Platform } from \"../../lib/platform\";\nimport { Text } from \"../Typography/Text/Text\";\nimport { Title } from \"../Typography/Title/Title\";\nimport styles from \"./PanelHeaderButton.module.css\";\n\nexport interface PanelHeaderButtonProps extends Omit<TappableProps, \"label\"> {\n primary?: boolean;\n label?: React.ReactNode;\n}\n\ninterface ButtonTypographyProps extends React.AllHTMLAttributes<HTMLElement> {\n primary?: PanelHeaderButtonProps[\"primary\"];\n}\n\nconst ButtonTypography = ({ primary, children }: ButtonTypographyProps) => {\n const platform = usePlatform();\n\n if (platform === Platform.IOS) {\n return (\n <Title Component=\"span\" level=\"3\" weight={primary ? \"1\" : \"3\"}>\n {children}\n </Title>\n );\n }\n\n return (\n <Text weight={platform === Platform.VKCOM ? undefined : \"2\"}>\n {children}\n </Text>\n );\n};\n\nconst warn = warnOnce(\"PanelHeaderButton\");\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PanelHeaderButton\n */\nexport const PanelHeaderButton = ({\n children,\n primary = false,\n label,\n className,\n ...restProps\n}: PanelHeaderButtonProps) => {\n const isPrimitive = isPrimitiveReactNode(children);\n const isPrimitiveLabel = isPrimitiveReactNode(label);\n const platform = usePlatform();\n\n let hoverMode;\n let activeMode;\n\n switch (platform) {\n case Platform.IOS:\n hoverMode = \"background\";\n activeMode = \"opacity\";\n break;\n case Platform.VKCOM:\n hoverMode = styles[\"PanelHeaderButton--hover\"];\n activeMode = styles[\"PanelHeaderButton--active\"];\n break;\n default:\n hoverMode = \"background\";\n activeMode = \"background\";\n }\n\n if (process.env.NODE_ENV === \"development\") {\n const hasAccessibleName = Boolean(\n getTitleFromChildren(children) ||\n getTitleFromChildren(label) ||\n restProps[\"aria-label\"] ||\n restProps[\"aria-labelledby\"]\n );\n\n if (!hasAccessibleName) {\n warn(\n \"a11y: У кнопки нет названия, которое может прочитать скринридер, и она недоступна для части пользователей. Замените содержимое на текст или добавьте описание действия с помощью пропа aria-label.\",\n \"error\"\n );\n }\n }\n\n return (\n <Tappable\n {...restProps}\n hoverMode={hoverMode}\n Component={restProps.href ? \"a\" : \"button\"}\n activeEffectDelay={200}\n activeMode={activeMode}\n className={classNamesString(\n styles[\"PanelHeaderButton\"],\n getPlatformClassName(styles[\"PanelHeaderButton\"], platform),\n isPrimitive && styles[\"PanelHeaderButton--primitive\"],\n !isPrimitive &&\n !isPrimitiveLabel &&\n styles[\"PanelHeaderButton--notPrimitive\"],\n className\n )}\n >\n {isPrimitive ? (\n <ButtonTypography primary={primary}>{children}</ButtonTypography>\n ) : (\n children\n )}\n {isPrimitiveLabel ? (\n <ButtonTypography\n primary={primary}\n className={styles[\"PanelHeaderButton__label\"]}\n >\n {label}\n </ButtonTypography>\n ) : (\n label\n )}\n </Tappable>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- .vkuiPanelHeaderButton{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;box-shadow:none;color:currentColor;display:block;margin:0;padding:0;position:relative}.vkuiPanelHeaderButton[disabled]{opacity:.6}.vkuiPanelHeaderButton .vkuiCounter{padding:0;position:absolute;right:2px;top:8px}.vkuiPanelHeaderButton--primitive{height:48px;line-height:48px;padding:0 12px}.vkuiPanelHeaderButton--ios{align-items:center;display:flex;font-size:17px;position:relative}.vkuiPanelHeaderButton--ios.vkuiPanelHeaderButton--primitive{height:44px;line-height:44px}.vkuiPanelHeaderButton--ios .vkuiIcon--24{padding:10px}.vkuiPanelHeaderButton--ios .vkuiIcon--28{padding:8px}.vkuiPanelHeaderButton--android.vkuiPanelHeaderButton--notPrimitive{border-radius:50%}.vkuiPanelHeaderButton--android .vkuiIcon--24{padding:12px}.vkuiPanelHeaderButton--android .vkuiIcon--28{padding:10px}.vkuiPanelHeaderButton--vkcom{color:var(--vkui--color_text_secondary)}.vkuiPanelHeaderButton--vkcom>:not(.vkuiCounter){opacity:.7;transition:opacity .3s}.vkuiPanelHeaderButton--vkcom.vkuiPanelHeaderButton--active>:not(.vkuiCounter),.vkuiPanelHeaderButton--vkcom.vkuiPanelHeaderButton--hover>:not(.vkuiCounter){opacity:1}.vkuiPanelHeaderButton--vkcom{align-items:center;display:flex;padding:10px}.vkuiPanelHeaderButton--vkcom.vkuiPanelHeaderButton--notPrimitive{border-radius:50%}@media (max-width:767px){.vkuiPanelHeaderBack--sizeX-none.vkuiPanelHeaderBack--ios .vkuiPanelHeaderButton__label{display:none}}
1
+ .vkuiPanelHeaderButton{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;box-shadow:none;color:currentColor;display:block;margin:0;padding:0;position:relative}.vkuiPanelHeaderButton[disabled]{opacity:.6}.vkuiPanelHeaderButton .vkuiCounter{padding:0;position:absolute;right:2px;top:8px}.vkuiPanelHeaderButton--primitive{height:48px;line-height:48px;padding:0 12px}.vkuiPanelHeaderButton--ios{align-items:center;display:flex;font-size:17px;position:relative}.vkuiPanelHeaderButton--ios.vkuiPanelHeaderButton--primitive{height:44px;line-height:44px}.vkuiPanelHeaderButton--ios .vkuiIcon--24{padding:10px}.vkuiPanelHeaderButton--ios .vkuiIcon--28{padding:8px}.vkuiPanelHeaderButton--android.vkuiPanelHeaderButton--notPrimitive{border-radius:50%}.vkuiPanelHeaderButton--android .vkuiIcon--24{padding:12px}.vkuiPanelHeaderButton--android .vkuiIcon--28{padding:10px}.vkuiPanelHeaderButton--vkcom{color:var(--vkui--color_text_secondary)}.vkuiPanelHeaderButton--vkcom>:not(.vkuiCounter){opacity:.7;transition:opacity .3s}.vkuiPanelHeaderButton--vkcom.vkuiPanelHeaderButton--active>:not(.vkuiCounter),.vkuiPanelHeaderButton--vkcom.vkuiPanelHeaderButton--hover>:not(.vkuiCounter){opacity:1}.vkuiPanelHeaderButton--vkcom{align-items:center;display:flex;padding:10px}.vkuiPanelHeaderButton--vkcom.vkuiPanelHeaderButton--notPrimitive{border-radius:50%}.vkuiPanelHeaderBack--sizeX-compact.vkuiPanelHeaderBack--ios .vkuiPanelHeaderButton__label{display:none}@media (max-width:767px){.vkuiPanelHeaderBack--sizeX-none.vkuiPanelHeaderBack--ios .vkuiPanelHeaderButton__label{display:none}}
@@ -98,11 +98,20 @@ export var Popover = function Popover(_ref) {
98
98
  return;
99
99
  }
100
100
  targetClickEvent.add(childRef.current);
101
+ }, [childRef, targetClickEvent]);
102
+ React.useEffect(function () {
103
+ if (!childRef.current) {
104
+ return;
105
+ }
101
106
  if (hoverable) {
102
107
  targetEnterListener.add(childRef.current);
103
108
  targetLeaveListener.add(childRef.current);
104
109
  }
105
- }, [childRef, hoverable, targetClickEvent, targetEnterListener, targetLeaveListener]);
110
+ return function () {
111
+ targetEnterListener.remove();
112
+ targetLeaveListener.remove();
113
+ };
114
+ }, [childRef, hoverable, targetEnterListener, targetLeaveListener]);
106
115
  return /*#__PURE__*/React.createElement(React.Fragment, null, child, shown && /*#__PURE__*/React.createElement(Popper, _extends({}, restProps, {
107
116
  className: classNamesString("vkuiPopover", className),
108
117
  targetRef: childRef,
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.js","names":["React","useDOM","classNamesString","Popper","FocusTrap","useTimeout","useExternRef","useEventListener","useGlobalEventListener","usePatchChildrenRef","Popover","action","shownProp","shown","showDelay","hideDelay","offsetDistance","content","children","styleProp","style","className","getRef","onShownChange","restProps","document","hoverable","hovered","useRef","useState","computedShown","setComputedShown","dropdownNode","setPopperNode","patchedPopperRef","childRef","child","setShown","value","showTimeout","hideTimeout","handleTargetEnter","current","clear","set","handleTargetClick","handleTargetLeave","handleContentKeyDownEscape","handleOutsideClick","e","contains","target","targetEnterListener","targetClickEvent","targetLeaveListener","useEffect","add","wrapperClassName","undefined"],"sources":["../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { useDOM } from \"../../lib/dom\";\nimport { classNamesString } from \"../../lib/classNames\";\nimport { PopperCommonProps, Popper } from \"../Popper/Popper\";\nimport { FocusTrap } from \"../FocusTrap/FocusTrap\";\nimport { useTimeout } from \"../../hooks/useTimeout\";\nimport { useExternRef } from \"../../hooks/useExternRef\";\nimport { useEventListener } from \"../../hooks/useEventListener\";\nimport { useGlobalEventListener } from \"../../hooks/useGlobalEventListener\";\nimport { usePatchChildrenRef } from \"../../hooks/usePatchChildrenRef\";\nimport styles from \"./Popover.module.css\";\n\nexport interface PopoverProps\n extends Omit<PopperCommonProps, \"arrow\" | \"arrowClassName\"> {\n /**\n * Механика вызова всплывающего окна.\n *\n * - `\"click\"` – показывается/скрывается только при нажатии.\n * - `\"hover\"` – помимо нажатия, будет показываться/скрывается при наведении/отведении мыши.\n *\n * > ⚠️`\"hover\"` на тач-устройствах будет работать как `\"click\"`, с одним лишь нюансом, что не будет закрываться\n * > при повторном нажатии на целевой элемент. Для закрытия необходимо нажать на область вне целевого элемента\n * > и выпадающего окна.\n */\n action?: \"click\" | \"hover\";\n /**\n * Если передан, то всплывающее окно будет показан/скрыт в зависимости от значения свойства.\n */\n shown?: boolean;\n /**\n * Количество миллисекунд, после которых произойдёт показ всплывающего окна.\n *\n * > Используется только для `action=\"hover\"` при наведении/отведении мыши.\n */\n showDelay?: number;\n /**\n * Количество миллисекунд, после которых произойдёт скрытие всплывающего окна.\n *\n * > Используется только для `action=\"hover\"` при наведении/отведении мыши.\n */\n hideDelay?: number;\n /**\n * Содержимое всплывающего окна.\n */\n content?: React.ReactNode;\n /**\n * Целевой элемент. Всплывающее окно появится возле него.\n *\n * > ⚠️ Если это пользовательский компонент, то он должен предоставлять параметры либо `getRootRef`, либо `ref` для получения ссылки на DOM-узел.\n */\n children?: React.ReactElement;\n /**\n * Вызывается при каждом изменении видимости всплывающего окна.\n */\n onShownChange?(shown: boolean): void;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Popover\n */\nexport const Popover = ({\n action = \"click\",\n shown: shownProp,\n showDelay = 150,\n hideDelay = 150,\n offsetDistance = 8,\n content,\n children,\n style: styleProp,\n className,\n getRef,\n onShownChange,\n ...restProps\n}: PopoverProps) => {\n const { document } = useDOM();\n\n const hoverable = action === \"hover\";\n const hovered = React.useRef(false);\n const [computedShown, setComputedShown] = React.useState(shownProp || false);\n const [dropdownNode, setPopperNode] = React.useState<HTMLElement | null>(\n null\n );\n\n const shown = typeof shownProp === \"boolean\" ? shownProp : computedShown;\n\n const patchedPopperRef = useExternRef<HTMLDivElement>(setPopperNode, getRef);\n\n const [childRef, child] = usePatchChildrenRef(children);\n\n const setShown = (value: boolean) => {\n if (typeof shownProp !== \"boolean\") {\n setComputedShown(value);\n }\n typeof onShownChange === \"function\" && onShownChange(value);\n };\n\n const showTimeout = useTimeout(() => setShown(true), showDelay);\n\n const hideTimeout = useTimeout(() => setShown(false), hideDelay);\n\n const handleTargetEnter = () => {\n hovered.current = true;\n hideTimeout.clear();\n showTimeout.set();\n };\n\n const handleTargetClick = () => {\n if (hovered.current && shown) {\n return;\n }\n setShown(!shown);\n };\n\n const handleTargetLeave = () => {\n hovered.current = false;\n showTimeout.clear();\n hideTimeout.set();\n };\n\n const handleContentKeyDownEscape = () => {\n setShown(false);\n };\n\n const handleOutsideClick = (e: MouseEvent) => {\n if (\n dropdownNode &&\n !childRef.current?.contains(e.target as Node) &&\n !dropdownNode.contains(e.target as Node)\n ) {\n setShown(false);\n }\n };\n\n useGlobalEventListener(document, \"click\", handleOutsideClick);\n const targetEnterListener = useEventListener(\"mouseenter\", handleTargetEnter);\n const targetClickEvent = useEventListener(\"click\", handleTargetClick);\n const targetLeaveListener = useEventListener(\"mouseleave\", handleTargetLeave);\n\n React.useEffect(() => {\n if (!childRef.current) {\n return;\n }\n\n targetClickEvent.add(childRef.current);\n\n if (hoverable) {\n targetEnterListener.add(childRef.current);\n targetLeaveListener.add(childRef.current);\n }\n }, [\n childRef,\n hoverable,\n targetClickEvent,\n targetEnterListener,\n targetLeaveListener,\n ]);\n\n return (\n <React.Fragment>\n {child}\n {shown && (\n <Popper\n {...restProps}\n className={classNamesString(styles[\"Popover\"], className)}\n targetRef={childRef}\n getRef={patchedPopperRef}\n offsetDistance={offsetDistance}\n style={\n // Reason: Typescript ругается на CSS Custom Properties в объекте\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n {\n ...styleProp,\n \"--vkui_internal--popover_safe_zone_padding\": `${offsetDistance}px`,\n } as React.CSSProperties\n }\n renderContent={({ className: wrapperClassName }) => (\n <FocusTrap\n className={wrapperClassName}\n onClose={handleContentKeyDownEscape}\n >\n {content}\n </FocusTrap>\n )}\n onMouseOver={hoverable ? hideTimeout.clear : undefined}\n onMouseOut={hoverable ? handleTargetLeave : undefined}\n />\n )}\n </React.Fragment>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Popover.js","names":["React","useDOM","classNamesString","Popper","FocusTrap","useTimeout","useExternRef","useEventListener","useGlobalEventListener","usePatchChildrenRef","Popover","action","shownProp","shown","showDelay","hideDelay","offsetDistance","content","children","styleProp","style","className","getRef","onShownChange","restProps","document","hoverable","hovered","useRef","useState","computedShown","setComputedShown","dropdownNode","setPopperNode","patchedPopperRef","childRef","child","setShown","value","showTimeout","hideTimeout","handleTargetEnter","current","clear","set","handleTargetClick","handleTargetLeave","handleContentKeyDownEscape","handleOutsideClick","e","contains","target","targetEnterListener","targetClickEvent","targetLeaveListener","useEffect","add","remove","wrapperClassName","undefined"],"sources":["../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { useDOM } from \"../../lib/dom\";\nimport { classNamesString } from \"../../lib/classNames\";\nimport { PopperCommonProps, Popper } from \"../Popper/Popper\";\nimport { FocusTrap } from \"../FocusTrap/FocusTrap\";\nimport { useTimeout } from \"../../hooks/useTimeout\";\nimport { useExternRef } from \"../../hooks/useExternRef\";\nimport { useEventListener } from \"../../hooks/useEventListener\";\nimport { useGlobalEventListener } from \"../../hooks/useGlobalEventListener\";\nimport { usePatchChildrenRef } from \"../../hooks/usePatchChildrenRef\";\nimport styles from \"./Popover.module.css\";\n\nexport interface PopoverProps\n extends Omit<PopperCommonProps, \"arrow\" | \"arrowClassName\"> {\n /**\n * Механика вызова всплывающего окна.\n *\n * - `\"click\"` – показывается/скрывается только при нажатии.\n * - `\"hover\"` – помимо нажатия, будет показываться/скрывается при наведении/отведении мыши.\n *\n * > ⚠️`\"hover\"` на тач-устройствах будет работать как `\"click\"`, с одним лишь нюансом, что не будет закрываться\n * > при повторном нажатии на целевой элемент. Для закрытия необходимо нажать на область вне целевого элемента\n * > и выпадающего окна.\n */\n action?: \"click\" | \"hover\";\n /**\n * Если передан, то всплывающее окно будет показан/скрыт в зависимости от значения свойства.\n */\n shown?: boolean;\n /**\n * Количество миллисекунд, после которых произойдёт показ всплывающего окна.\n *\n * > Используется только для `action=\"hover\"` при наведении/отведении мыши.\n */\n showDelay?: number;\n /**\n * Количество миллисекунд, после которых произойдёт скрытие всплывающего окна.\n *\n * > Используется только для `action=\"hover\"` при наведении/отведении мыши.\n */\n hideDelay?: number;\n /**\n * Содержимое всплывающего окна.\n */\n content?: React.ReactNode;\n /**\n * Целевой элемент. Всплывающее окно появится возле него.\n *\n * > ⚠️ Если это пользовательский компонент, то он должен предоставлять параметры либо `getRootRef`, либо `ref` для получения ссылки на DOM-узел.\n */\n children?: React.ReactElement;\n /**\n * Вызывается при каждом изменении видимости всплывающего окна.\n */\n onShownChange?(shown: boolean): void;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Popover\n */\nexport const Popover = ({\n action = \"click\",\n shown: shownProp,\n showDelay = 150,\n hideDelay = 150,\n offsetDistance = 8,\n content,\n children,\n style: styleProp,\n className,\n getRef,\n onShownChange,\n ...restProps\n}: PopoverProps) => {\n const { document } = useDOM();\n\n const hoverable = action === \"hover\";\n const hovered = React.useRef(false);\n const [computedShown, setComputedShown] = React.useState(shownProp || false);\n const [dropdownNode, setPopperNode] = React.useState<HTMLElement | null>(\n null\n );\n\n const shown = typeof shownProp === \"boolean\" ? shownProp : computedShown;\n\n const patchedPopperRef = useExternRef<HTMLDivElement>(setPopperNode, getRef);\n\n const [childRef, child] = usePatchChildrenRef(children);\n\n const setShown = (value: boolean) => {\n if (typeof shownProp !== \"boolean\") {\n setComputedShown(value);\n }\n typeof onShownChange === \"function\" && onShownChange(value);\n };\n\n const showTimeout = useTimeout(() => setShown(true), showDelay);\n\n const hideTimeout = useTimeout(() => setShown(false), hideDelay);\n\n const handleTargetEnter = () => {\n hovered.current = true;\n hideTimeout.clear();\n showTimeout.set();\n };\n\n const handleTargetClick = () => {\n if (hovered.current && shown) {\n return;\n }\n setShown(!shown);\n };\n\n const handleTargetLeave = () => {\n hovered.current = false;\n showTimeout.clear();\n hideTimeout.set();\n };\n\n const handleContentKeyDownEscape = () => {\n setShown(false);\n };\n\n const handleOutsideClick = (e: MouseEvent) => {\n if (\n dropdownNode &&\n !childRef.current?.contains(e.target as Node) &&\n !dropdownNode.contains(e.target as Node)\n ) {\n setShown(false);\n }\n };\n\n useGlobalEventListener(document, \"click\", handleOutsideClick);\n const targetEnterListener = useEventListener(\"mouseenter\", handleTargetEnter);\n const targetClickEvent = useEventListener(\"click\", handleTargetClick);\n const targetLeaveListener = useEventListener(\"mouseleave\", handleTargetLeave);\n\n React.useEffect(() => {\n if (!childRef.current) {\n return;\n }\n\n targetClickEvent.add(childRef.current);\n }, [childRef, targetClickEvent]);\n\n React.useEffect(() => {\n if (!childRef.current) {\n return;\n }\n\n if (hoverable) {\n targetEnterListener.add(childRef.current);\n targetLeaveListener.add(childRef.current);\n }\n\n return () => {\n targetEnterListener.remove();\n targetLeaveListener.remove();\n };\n }, [childRef, hoverable, targetEnterListener, targetLeaveListener]);\n\n return (\n <React.Fragment>\n {child}\n {shown && (\n <Popper\n {...restProps}\n className={classNamesString(styles[\"Popover\"], className)}\n targetRef={childRef}\n getRef={patchedPopperRef}\n offsetDistance={offsetDistance}\n style={\n // Reason: Typescript ругается на CSS Custom Properties в объекте\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n {\n ...styleProp,\n \"--vkui_internal--popover_safe_zone_padding\": `${offsetDistance}px`,\n } as React.CSSProperties\n }\n renderContent={({ className: wrapperClassName }) => (\n <FocusTrap\n className={wrapperClassName}\n onClose={handleContentKeyDownEscape}\n >\n {content}\n </FocusTrap>\n )}\n onMouseOver={hoverable ? hideTimeout.clear : undefined}\n onMouseOut={hoverable ? handleTargetLeave : undefined}\n />\n )}\n </React.Fragment>\n );\n};\n"],"mappings":"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"}
@@ -6,7 +6,8 @@ var _excluded = ["size", "name", "options", "getRootRef", "onChange", "value", "
6
6
  import * as React from "react";
7
7
  import { classNamesString } from "../../lib/classNames";
8
8
  import { useIsomorphicLayoutEffect } from "../../lib/useIsomorphicLayoutEffect";
9
- import { generateRandomId, noop } from "../../lib/utils";
9
+ import { noop } from "../../lib/utils";
10
+ import { useId } from "../../hooks/useId";
10
11
  import { warnOnce } from "../../lib/warnOnce";
11
12
  import { SegmentedControlOption } from "./SegmentedControlOption/SegmentedControlOption";
12
13
  import { useAdaptivity } from "../../hooks/useAdaptivity";
@@ -31,6 +32,7 @@ export var SegmentedControl = function SegmentedControl(_ref) {
31
32
  children = _ref.children,
32
33
  className = _ref.className,
33
34
  restProps = _objectWithoutProperties(_ref, _excluded);
35
+ var id = useId();
34
36
  var _useAdaptivity = useAdaptivity(),
35
37
  sizeY = _useAdaptivity.sizeY;
36
38
  var initialValue = defaultValue !== null && defaultValue !== void 0 ? defaultValue : (_options$ = options[0]) === null || _options$ === void 0 ? void 0 : _options$.value;
@@ -48,7 +50,6 @@ export var SegmentedControl = function SegmentedControl(_ref) {
48
50
  valueLocal = _React$useState4[0],
49
51
  updateValueLocal = _React$useState4[1];
50
52
  var value = valueProp !== null && valueProp !== void 0 ? valueProp : valueLocal;
51
- var nameRef = React.useRef(name !== null && name !== void 0 ? name : generateRandomId());
52
53
  useIsomorphicLayoutEffect(function () {
53
54
  var _activeOptionIdx = options.findIndex(function (option) {
54
55
  return option.value === value;
@@ -87,7 +88,7 @@ export var SegmentedControl = function SegmentedControl(_ref) {
87
88
  key: "".concat(optionProps.value)
88
89
  }, optionProps, {
89
90
  className: classNamesString("vkuiSegmentedControl__option", optionClassName),
90
- name: nameRef.current,
91
+ name: name !== null && name !== void 0 ? name : id,
91
92
  checked: value === optionProps.value,
92
93
  onChange: function onChange() {
93
94
  return handleOnChange(optionProps.value);