@hh.ru/magritte-ui-select 12.9.1 → 12.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/Select.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import './index.css';
2
2
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef, useRef, useState, useId, useMemo, useLayoutEffect, useEffect, useCallback } from 'react';
4
- import { keyboardMatch, keyboardKeys, keyboardMatches, findNextFocusableElement } from '@hh.ru/magritte-common-keyboard';
4
+ import { keyboardMatches, keyboardKeys, keyboardMatch, findNextFocusableElement } from '@hh.ru/magritte-common-keyboard';
5
5
  import { useDisabled } from '@hh.ru/magritte-common-use-disabled';
6
6
  import { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';
7
7
  import { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';
@@ -86,6 +86,7 @@ const SelectComponent = ({ type, multiple, value: _value, maxSelectedOptions, lo
86
86
  : [], [_value]);
87
87
  const optionsListRefCallback = useMultipleRefs(optionsListRef, dropRef, pickerRef);
88
88
  const showedByFocus = useRef(false);
89
+ const focusedByPointer = useRef(false);
89
90
  const isLimitExceeded = maxSelectedOptions !== undefined && Array.isArray(values) && values.length >= maxSelectedOptions;
90
91
  // часть свойств тригера влияет на поведение дефолтного input search
91
92
  const { size, label: triggerLabel, disabled, 'aria-label': triggerAriaLabel } = triggerProps;
@@ -103,6 +104,7 @@ const SelectComponent = ({ type, multiple, value: _value, maxSelectedOptions, lo
103
104
  if (!showOptions && prevVisibleRef.current) {
104
105
  setInitialValuesOnClosePicker();
105
106
  if (forcedState === 'focus') {
107
+ focusedByPointer.current = false;
106
108
  activatorRef.current?.focus();
107
109
  setForcedState?.(null);
108
110
  showedByFocus.current = false;
@@ -158,6 +160,21 @@ const SelectComponent = ({ type, multiple, value: _value, maxSelectedOptions, lo
158
160
  }
159
161
  prevVisibleRef.current = showOptions;
160
162
  }, [forcedState, onBlur, setForcedState, searchInputState, showOptions, setInitialValuesOnClosePicker]);
163
+ // в onFocus нужно отличить клик от Tab
164
+ useEffect(() => {
165
+ const onPointerDown = () => {
166
+ focusedByPointer.current = true;
167
+ };
168
+ const onKeyDown = () => {
169
+ focusedByPointer.current = false;
170
+ };
171
+ document.addEventListener('pointerdown', onPointerDown, true);
172
+ document.addEventListener('keydown', onKeyDown, true);
173
+ return () => {
174
+ document.removeEventListener('pointerdown', onPointerDown, true);
175
+ document.removeEventListener('keydown', onKeyDown, true);
176
+ };
177
+ }, []);
161
178
  useEffect(() => {
162
179
  if (!optionsListRef.current || !showOptions) {
163
180
  return;
@@ -172,6 +189,11 @@ const SelectComponent = ({ type, multiple, value: _value, maxSelectedOptions, lo
172
189
  selectedOrFirstElement?.focus();
173
190
  }, [showOptions, searchable, isMobile, optionsListRef, pickerDesktopType]);
174
191
  const handleKeyDown = useCallback((event) => {
192
+ // не хотим скролить дроп при использовании пробела
193
+ if (!showOptions && !searchable && keyboardMatches(event.nativeEvent, [keyboardKeys.Space])) {
194
+ event.preventDefault();
195
+ return;
196
+ }
175
197
  if (showOptions && keyboardMatch(event.nativeEvent, keyboardKeys.Escape)) {
176
198
  showedByFocus.current = false;
177
199
  setForcedState('focus');
@@ -196,7 +218,7 @@ const SelectComponent = ({ type, multiple, value: _value, maxSelectedOptions, lo
196
218
  !keyboardMatches(event.nativeEvent, [keyboardKeys.Tab, keyboardKeys.Escape, keyboardKeys.Space])) {
197
219
  toggleListVisibility();
198
220
  }
199
- }, [showOptions, toggleListVisibility]);
221
+ }, [showOptions, toggleListVisibility, searchable]);
200
222
  const clearSelectedValuesOrUseInitialValues = () => {
201
223
  if (useInitialValuesOnClearAction) {
202
224
  setInitialValues();
@@ -242,13 +264,15 @@ const SelectComponent = ({ type, multiple, value: _value, maxSelectedOptions, lo
242
264
  if (isComponentDisabled || showOptions) {
243
265
  return;
244
266
  }
245
- if (!showOptions && forcedState !== 'focus' && forcedState !== 'focusAndSelect') {
267
+ if (forcedState !== 'focus' && forcedState !== 'focusAndSelect') {
246
268
  onFocus?.();
247
269
  setForcedState('focus');
248
- _searchable && toggleListVisibility();
249
270
  }
250
- // если поисковый select, то откроем drop сразу
251
- showedByFocus.current = Boolean(_searchable);
271
+ // при клике раскрыть select надо сразу (+ из-за подмены onChange не вызоветься)
272
+ if (_searchable && focusedByPointer.current) {
273
+ showedByFocus.current = true;
274
+ toggleListVisibility();
275
+ }
252
276
  },
253
277
  'data-qa': dataQa,
254
278
  setSearchValue,
package/Select.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["src/Select.tsx"],"sourcesContent":["import {\n ReactElement,\n useState,\n useRef,\n useLayoutEffect,\n useCallback,\n KeyboardEventHandler,\n SyntheticEvent,\n useMemo,\n forwardRef,\n ForwardedRef,\n useId,\n useEffect,\n} from 'react';\n\nimport { StaticDataFetcherItem } from '@hh.ru/magritte-common-data-provider';\nimport {\n findNextFocusableElement,\n keyboardKeys,\n keyboardMatch,\n keyboardMatches,\n} from '@hh.ru/magritte-common-keyboard';\nimport { useDisabled } from '@hh.ru/magritte-common-use-disabled';\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { BaseInput } from '@hh.ru/magritte-ui-input/BaseInput';\nimport { SelectBottomSheet } from '@hh.ru/magritte-ui-select/SelectBottomSheet';\nimport { SelectDrop, getDropRole } from '@hh.ru/magritte-ui-select/SelectDrop';\nimport { SelectModal } from '@hh.ru/magritte-ui-select/SelectModal';\nimport {\n SelectProps,\n TriggerPropsWithRef,\n FocusStateType,\n SetSearchValue,\n OptionsCount,\n TriggerExternalProps,\n} from '@hh.ru/magritte-ui-select/types';\nimport { useSelectOptionsList } from '@hh.ru/magritte-ui-select/useSelectOptionsList';\nimport { useSelectSearch } from '@hh.ru/magritte-ui-select/useSelectSearch';\nimport { useSelectState } from '@hh.ru/magritte-ui-select/useSelectState';\nimport { Trigger } from '@hh.ru/magritte-ui-trigger';\n\nconst SelectTriggerDefault = (triggerProps: TriggerPropsWithRef): ReactElement => {\n return <Trigger {...triggerProps} />;\n};\n\nconst focusOptionsList = (event: SyntheticEvent, drop: HTMLElement | null | undefined, direction: 'up' | 'down') => {\n if (drop) {\n const nextFocusableElement = findNextFocusableElement(drop, null, direction, 'list');\n if (nextFocusableElement !== null) {\n event.preventDefault();\n nextFocusableElement.focus();\n }\n }\n};\n\ninterface SearchInputState {\n useSearchInput: boolean;\n emitEvents: boolean;\n}\n\nconst SEARCH_INPUT_STATE: SearchInputState = {\n useSearchInput: false,\n emitEvents: false,\n};\n\nconst DEFAULT_DATA_QA = 'magritte-select-activator';\nconst DEFAULT_TRIGGER_PROPS = {\n size: 'medium',\n 'data-qa': DEFAULT_DATA_QA,\n} as TriggerExternalProps;\n\nconst SelectComponent = <MultipleType extends boolean, DataType extends StaticDataFetcherItem>(\n {\n type,\n multiple,\n value: _value,\n maxSelectedOptions,\n loading,\n error,\n searchable: _searchable,\n bottomSheetHeight = 'full-screen',\n onChange: onChangeHandler,\n renderTrigger = SelectTriggerDefault,\n triggerProps = DEFAULT_TRIGGER_PROPS,\n renderMobileItem,\n renderDesktopItem,\n name,\n maxWidth,\n maxHeight = 460,\n useInitialValuesOnClearAction,\n renderAlertOnExitWithoutSaving,\n renderButtonsContainer,\n renderHeader,\n headerTitle: _headerTitle,\n clearButton,\n applyChangesButton,\n forceDropVisibleWithEmptyOptions,\n plain = false,\n widthEqualToActivator = true,\n renderContentBefore,\n onBlur,\n onFocus,\n onDropOpen,\n onDropClose,\n onBottomSheetClose,\n onBottomSheetOpen,\n onSearchSubmit,\n onApply,\n onClear,\n onSelectOption,\n pickerRef,\n dataProvider,\n emptyOptionsHint,\n emptyOptionsSearchHint,\n onOptionsChange,\n innerErrorTrls,\n optionDataQa,\n pickerDesktopType = 'drop',\n modalProps,\n dropWidth,\n applyOnClear = true,\n }: SelectProps<MultipleType, DataType>,\n ref: ForwardedRef<HTMLElement>\n): ReactElement => {\n const { isMobile } = useBreakpoint();\n const inputRef = useRef<HTMLInputElement>(null);\n const [searchInputState, setSearchInputState] = useState<SearchInputState>(SEARCH_INPUT_STATE);\n const [forcedState, setForcedState] = useState<FocusStateType>(null);\n const dropRef = useRef<HTMLDivElement>(null);\n const useDefaultTrigger = renderTrigger === SelectTriggerDefault;\n const dropId = useId();\n const bottomSheetId = useId();\n\n const { activatorRef, optionsListRef, onOptionsListClose, toggleListVisibility, showOptions } =\n useSelectOptionsList(isMobile, pickerDesktopType);\n const activatorRefCallback = useMultipleRefs(activatorRef, ref);\n const prevVisibleRef = useRef<boolean>(showOptions);\n const hasChangesApplyButton = Boolean(applyChangesButton);\n const {\n values,\n onChange,\n clearSelectedValues,\n setInitialValues,\n setSelectedValues,\n clearSelectedValuesByTrigger,\n setInitialValuesOnClosePicker,\n initialValuesOnOpening,\n } = useSelectState<DataType, MultipleType>(\n !!multiple,\n _value || [],\n showOptions,\n hasChangesApplyButton,\n onChangeHandler,\n onSelectOption,\n applyOnClear\n );\n const valuesArray = useMemo(\n // eslint-disable-next-line no-nested-ternary\n () => (Array.isArray(values) ? values : values ? ([values] as DataType[]) : []),\n [values]\n );\n const { optionList, internalLoading, searchValue, setSearchValue, searchInProgress, reload, internalError } =\n useSelectSearch<DataType>(showOptions, valuesArray, dataProvider, onOptionsChange);\n\n const selectedLabels = useMemo(\n () =>\n // eslint-disable-next-line no-nested-ternary\n Array.isArray(_value)\n ? _value.map((item) => item.text ?? item.value)\n : _value\n ? [_value?.text ?? _value.value]\n : [],\n [_value]\n );\n\n const optionsListRefCallback = useMultipleRefs(optionsListRef, dropRef, pickerRef);\n const showedByFocus = useRef<boolean>(false);\n const isLimitExceeded =\n maxSelectedOptions !== undefined && Array.isArray(values) && values.length >= maxSelectedOptions;\n\n // часть свойств тригера влияет на поведение дефолтного input search\n const { size, label: triggerLabel, disabled, 'aria-label': triggerAriaLabel } = triggerProps;\n const forceDisabled = useDisabled();\n const isComponentDisabled = disabled || forceDisabled;\n const sizeProp = size === 'large' ? ({ size: 'large' } as const) : ({ size: 'medium' } as const);\n const inputWrapperStyles = { maxWidth: activatorRef.current?.offsetWidth };\n const searchable = _searchable && (size === 'large' || size === 'medium');\n const dataQa = triggerProps?.['data-qa'] || DEFAULT_DATA_QA;\n\n // селект без поиска (переключаем фокус и отправляем blur)\n useLayoutEffect(() => {\n if (searchable && !isMobile) {\n return;\n }\n if (!showOptions && prevVisibleRef.current) {\n setInitialValuesOnClosePicker();\n if (forcedState === 'focus') {\n activatorRef.current?.focus();\n setForcedState?.(null);\n showedByFocus.current = false;\n }\n }\n if (!forcedState && !showOptions && prevVisibleRef.current) {\n onBlur?.();\n }\n prevVisibleRef.current = showOptions;\n }, [activatorRef, forcedState, isMobile, onBlur, searchable, setInitialValuesOnClosePicker, showOptions]);\n\n // селект с поиском (нужно подменить контрол)\n useLayoutEffect(() => {\n if (!searchable || isMobile || pickerDesktopType === 'modal') {\n return;\n }\n if (forcedState === 'focus' || forcedState === 'focusAndSelect') {\n setSearchInputState({\n useSearchInput: useDefaultTrigger,\n emitEvents: true,\n });\n }\n }, [forcedState, isMobile, searchable, useDefaultTrigger, pickerDesktopType]);\n\n // триггер подменяться на input (тут пачка логики + blur)\n useLayoutEffect(() => {\n if (!searchInputState.emitEvents) {\n return;\n }\n // немного магипуляций, если тригер дефотный\n if (searchInputState.useSearchInput) {\n if (!inputRef.current) {\n return;\n }\n if (forcedState === 'focus') {\n inputRef.current.focus();\n }\n // например во время выбора опции, нужно выбрать текст\n if (forcedState === 'focusAndSelect') {\n inputRef.current?.focus();\n inputRef.current?.select();\n }\n }\n if (!showOptions && prevVisibleRef.current) {\n setInitialValuesOnClosePicker();\n }\n if (!forcedState && !showOptions) {\n setSearchInputState({\n useSearchInput: false,\n emitEvents: false,\n });\n if (prevVisibleRef.current) {\n onBlur?.();\n }\n }\n prevVisibleRef.current = showOptions;\n }, [forcedState, onBlur, setForcedState, searchInputState, showOptions, setInitialValuesOnClosePicker]);\n\n useEffect(() => {\n if (!optionsListRef.current || !showOptions) {\n return;\n }\n // на дестопе в поиском селекте оставим фокус на инпуте\n if (!isMobile && searchable && pickerDesktopType === 'drop') {\n return;\n }\n // ставим фокус на первый выбранный элемент или на первый элемент списка\n const selectedOrFirstElement =\n optionsListRef.current.querySelector<HTMLElement>('[data-magritte-select-option][aria-selected=\"true\"]') ??\n optionsListRef.current.querySelector<HTMLElement>('[data-magritte-select-option]');\n selectedOrFirstElement?.focus();\n }, [showOptions, searchable, isMobile, optionsListRef, pickerDesktopType]);\n\n const handleKeyDown = useCallback<KeyboardEventHandler>(\n (event) => {\n if (showOptions && keyboardMatch(event.nativeEvent, keyboardKeys.Escape)) {\n showedByFocus.current = false;\n setForcedState('focus');\n toggleListVisibility();\n return;\n }\n\n // движение по списку опций\n if (showOptions && keyboardMatch(event.nativeEvent, keyboardKeys.ArrowUp)) {\n focusOptionsList(event, dropRef?.current, 'up');\n return;\n }\n\n if (showOptions && keyboardMatch(event.nativeEvent, keyboardKeys.ArrowDown)) {\n focusOptionsList(event, dropRef?.current, 'down');\n return;\n }\n\n if (showOptions && keyboardMatch(event.nativeEvent, keyboardKeys.Tab)) {\n focusOptionsList(event, dropRef?.current, 'down');\n return;\n }\n\n // после закрытия пользователь решил что-то поделать опять\n if (\n !showOptions &&\n !keyboardMatches(event.nativeEvent, [keyboardKeys.Tab, keyboardKeys.Escape, keyboardKeys.Space])\n ) {\n toggleListVisibility();\n }\n },\n [showOptions, toggleListVisibility]\n );\n\n const clearSelectedValuesOrUseInitialValues = () => {\n if (useInitialValuesOnClearAction) {\n setInitialValues();\n } else {\n clearSelectedValues();\n }\n if (applyOnClear) {\n onOptionsListClose();\n }\n onClear?.();\n };\n\n return (\n <>\n {!searchInputState.useSearchInput &&\n renderTrigger({\n values: selectedLabels,\n expanded: showOptions,\n toggleExpanded: toggleListVisibility,\n onChange: () => {\n if (isComponentDisabled) {\n return;\n }\n // открываем по фокусу, закрываем по клику\n // повторно открываем по клику (события фокуса уже не будет)\n if (showedByFocus.current) {\n showedByFocus.current = false;\n return;\n }\n toggleListVisibility();\n },\n onClear: () => clearSelectedValuesByTrigger(),\n ref: activatorRefCallback,\n onKeyDown: handleKeyDown,\n onBlur: () => {\n setForcedState(null);\n if (showOptions && optionList.length === 0 && !emptyOptionsHint) {\n toggleListVisibility();\n }\n if (!showOptions && forcedState === null) {\n onBlur?.();\n }\n },\n onFocus: () => {\n if (isComponentDisabled || showOptions) {\n return;\n }\n if (!showOptions && forcedState !== 'focus' && forcedState !== 'focusAndSelect') {\n onFocus?.();\n setForcedState('focus');\n _searchable && toggleListVisibility();\n }\n // если поисковый select, то откроем drop сразу\n showedByFocus.current = Boolean(_searchable);\n },\n 'data-qa': dataQa,\n setSearchValue,\n optionsCount: optionList.length,\n 'aria-label': triggerAriaLabel,\n ...triggerProps,\n role: 'combobox',\n 'aria-haspopup': isMobile ? 'dialog' : getDropRole(clearButton, applyChangesButton, multiple),\n 'aria-controls': isMobile ? bottomSheetId : dropId,\n disabled: isComponentDisabled,\n } as TriggerPropsWithRef & SetSearchValue & OptionsCount)}\n {searchInputState.useSearchInput && (\n <div style={inputWrapperStyles}>\n <BaseInput\n {...sizeProp}\n ref={inputRef}\n wrapperRef={activatorRefCallback}\n value={searchValue}\n onChange={setSearchValue}\n onKeyDown={handleKeyDown}\n onFocus={() => {\n setForcedState('focus');\n }}\n onBlur={() => {\n setForcedState(null);\n if (showOptions && optionList.length === 0 && !emptyOptionsHint) {\n toggleListVisibility();\n }\n }}\n data-qa=\"magritte-select-activator-input\"\n placeholder={selectedLabels.length > 0 ? selectedLabels.join(', ') : triggerLabel}\n autoComplete=\"off\"\n aria-expanded={showOptions}\n role=\"combobox\"\n aria-label={triggerAriaLabel}\n aria-autocomplete=\"list\"\n aria-controls={isMobile ? bottomSheetId : dropId}\n />\n </div>\n )}\n {isMobile && (\n <SelectBottomSheet\n id={bottomSheetId}\n applyChangesButton={applyChangesButton}\n clearButton={clearButton}\n clearSelectedValuesOrUseInitialValues={clearSelectedValuesOrUseInitialValues}\n error={error}\n height={searchable || Boolean(error) || loading ? 'full-screen' : bottomSheetHeight}\n visible={Boolean(showOptions || internalLoading)}\n value={values}\n isLimitExceeded={isLimitExceeded}\n name={name}\n multiple={multiple}\n type={type}\n loading={loading || internalLoading}\n searchable={_searchable}\n useInitialValuesOnClearAction={useInitialValuesOnClearAction}\n initialValuesOnOpening={initialValuesOnOpening}\n renderItem={renderMobileItem}\n renderAlertOnExitWithoutSaving={renderAlertOnExitWithoutSaving}\n renderButtonsContainer={renderButtonsContainer}\n renderHeader={renderHeader}\n headerTitle={_headerTitle || triggerLabel}\n optionList={optionList}\n optionsListRef={optionsListRefCallback}\n onChange={onChange}\n onClose={onOptionsListClose}\n searchValue={searchValue}\n setSearchValue={setSearchValue}\n setSelectedValues={setSelectedValues}\n onBottomSheetClose={onBottomSheetClose}\n onBottomSheetOpen={onBottomSheetOpen}\n onSearchSubmit={onSearchSubmit}\n onApply={onApply}\n onClear={onClear}\n emptyOptionsHint={emptyOptionsHint}\n emptyOptionsSearchHint={emptyOptionsSearchHint}\n searchInProgress={searchInProgress}\n internalError={internalError}\n reload={reload}\n innerErrorTrls={innerErrorTrls}\n optionDataQa={optionDataQa}\n hasChangesApplyButton={hasChangesApplyButton}\n />\n )}\n {!isMobile && (\n <>\n {pickerDesktopType === 'drop' && (\n <SelectDrop\n id={dropId}\n activatorRef={activatorRef}\n applyChangesButton={applyChangesButton}\n clearButton={clearButton}\n clearSelectedValuesOrUseInitialValues={clearSelectedValuesOrUseInitialValues}\n isLimitExceeded={isLimitExceeded}\n name={name}\n multiple={multiple}\n maxWidth={maxWidth}\n type={type}\n loading={loading || internalLoading}\n useInitialValuesOnClearAction={useInitialValuesOnClearAction}\n onClose={onOptionsListClose}\n renderItem={renderDesktopItem}\n renderButtonsContainer={renderButtonsContainer}\n plain={plain}\n optionList={optionList}\n optionsListRef={optionsListRefCallback}\n value={values}\n onChange={onChange}\n searchValue={searchValue}\n searchable={searchable}\n forceDropVisibleWithEmptyOptions={forceDropVisibleWithEmptyOptions || internalLoading}\n setSearchValue={setSearchValue}\n visible={!error && (showOptions || internalLoading)}\n widthEqualToActivator={widthEqualToActivator}\n renderContentBefore={renderContentBefore}\n setForcedState={setForcedState}\n setSelectedValues={setSelectedValues}\n maxHeight={maxHeight}\n onDropOpen={onDropOpen}\n onDropClose={onDropClose}\n onApply={onApply}\n onClear={onClear}\n emptyOptionsHint={emptyOptionsHint}\n emptyOptionsSearchHint={emptyOptionsSearchHint}\n searchInProgress={searchInProgress}\n internalError={internalError}\n reload={reload}\n innerErrorTrls={innerErrorTrls}\n optionDataQa={optionDataQa}\n dropWidth={dropWidth}\n hasChangesApplyButton={hasChangesApplyButton}\n />\n )}\n {pickerDesktopType === 'modal' && (\n <SelectModal\n {...modalProps}\n applyChangesButton={applyChangesButton}\n clearButton={clearButton}\n clearSelectedValuesOrUseInitialValues={clearSelectedValuesOrUseInitialValues}\n isLimitExceeded={isLimitExceeded}\n name={name}\n multiple={multiple}\n type={type}\n loading={loading || internalLoading}\n useInitialValuesOnClearAction={useInitialValuesOnClearAction}\n onClose={onOptionsListClose}\n renderItem={renderDesktopItem}\n renderButtonsContainer={renderButtonsContainer}\n plain={plain}\n optionList={optionList}\n optionsListRef={optionsListRefCallback}\n value={values}\n onChange={onChange}\n searchValue={searchValue}\n searchable={searchable}\n setSearchValue={setSearchValue}\n visible={Boolean(showOptions || internalLoading)}\n setForcedState={setForcedState}\n setSelectedValues={setSelectedValues}\n onApply={onApply}\n onClear={onClear}\n emptyOptionsHint={emptyOptionsHint}\n emptyOptionsSearchHint={emptyOptionsSearchHint}\n searchInProgress={searchInProgress}\n internalError={internalError}\n reload={reload}\n innerErrorTrls={innerErrorTrls}\n optionDataQa={optionDataQa}\n renderAlertOnExitWithoutSaving={renderAlertOnExitWithoutSaving}\n initialValuesOnOpening={initialValuesOnOpening}\n hasChangesApplyButton={hasChangesApplyButton}\n />\n )}\n </>\n )}\n </>\n );\n};\n\nconst Select = forwardRef(SelectComponent) as (<MultipleType extends boolean, DataType extends StaticDataFetcherItem>(\n props: SelectProps<MultipleType, DataType> & { ref?: ForwardedRef<HTMLElement> }\n) => ReactElement | null) & { displayName: string };\n\nSelect.displayName = 'Select';\n\nexport { Select };\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sources":["src/Select.tsx"],"sourcesContent":["import {\n ReactElement,\n useState,\n useRef,\n useLayoutEffect,\n useCallback,\n KeyboardEventHandler,\n SyntheticEvent,\n useMemo,\n forwardRef,\n ForwardedRef,\n useId,\n useEffect,\n} from 'react';\n\nimport { StaticDataFetcherItem } from '@hh.ru/magritte-common-data-provider';\nimport {\n findNextFocusableElement,\n keyboardKeys,\n keyboardMatch,\n keyboardMatches,\n} from '@hh.ru/magritte-common-keyboard';\nimport { useDisabled } from '@hh.ru/magritte-common-use-disabled';\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { BaseInput } from '@hh.ru/magritte-ui-input/BaseInput';\nimport { SelectBottomSheet } from '@hh.ru/magritte-ui-select/SelectBottomSheet';\nimport { SelectDrop, getDropRole } from '@hh.ru/magritte-ui-select/SelectDrop';\nimport { SelectModal } from '@hh.ru/magritte-ui-select/SelectModal';\nimport {\n SelectProps,\n TriggerPropsWithRef,\n FocusStateType,\n SetSearchValue,\n OptionsCount,\n TriggerExternalProps,\n} from '@hh.ru/magritte-ui-select/types';\nimport { useSelectOptionsList } from '@hh.ru/magritte-ui-select/useSelectOptionsList';\nimport { useSelectSearch } from '@hh.ru/magritte-ui-select/useSelectSearch';\nimport { useSelectState } from '@hh.ru/magritte-ui-select/useSelectState';\nimport { Trigger } from '@hh.ru/magritte-ui-trigger';\n\nconst SelectTriggerDefault = (triggerProps: TriggerPropsWithRef): ReactElement => {\n return <Trigger {...triggerProps} />;\n};\n\nconst focusOptionsList = (event: SyntheticEvent, drop: HTMLElement | null | undefined, direction: 'up' | 'down') => {\n if (drop) {\n const nextFocusableElement = findNextFocusableElement(drop, null, direction, 'list');\n if (nextFocusableElement !== null) {\n event.preventDefault();\n nextFocusableElement.focus();\n }\n }\n};\n\ninterface SearchInputState {\n useSearchInput: boolean;\n emitEvents: boolean;\n}\n\nconst SEARCH_INPUT_STATE: SearchInputState = {\n useSearchInput: false,\n emitEvents: false,\n};\n\nconst DEFAULT_DATA_QA = 'magritte-select-activator';\nconst DEFAULT_TRIGGER_PROPS = {\n size: 'medium',\n 'data-qa': DEFAULT_DATA_QA,\n} as TriggerExternalProps;\n\nconst SelectComponent = <MultipleType extends boolean, DataType extends StaticDataFetcherItem>(\n {\n type,\n multiple,\n value: _value,\n maxSelectedOptions,\n loading,\n error,\n searchable: _searchable,\n bottomSheetHeight = 'full-screen',\n onChange: onChangeHandler,\n renderTrigger = SelectTriggerDefault,\n triggerProps = DEFAULT_TRIGGER_PROPS,\n renderMobileItem,\n renderDesktopItem,\n name,\n maxWidth,\n maxHeight = 460,\n useInitialValuesOnClearAction,\n renderAlertOnExitWithoutSaving,\n renderButtonsContainer,\n renderHeader,\n headerTitle: _headerTitle,\n clearButton,\n applyChangesButton,\n forceDropVisibleWithEmptyOptions,\n plain = false,\n widthEqualToActivator = true,\n renderContentBefore,\n onBlur,\n onFocus,\n onDropOpen,\n onDropClose,\n onBottomSheetClose,\n onBottomSheetOpen,\n onSearchSubmit,\n onApply,\n onClear,\n onSelectOption,\n pickerRef,\n dataProvider,\n emptyOptionsHint,\n emptyOptionsSearchHint,\n onOptionsChange,\n innerErrorTrls,\n optionDataQa,\n pickerDesktopType = 'drop',\n modalProps,\n dropWidth,\n applyOnClear = true,\n }: SelectProps<MultipleType, DataType>,\n ref: ForwardedRef<HTMLElement>\n): ReactElement => {\n const { isMobile } = useBreakpoint();\n const inputRef = useRef<HTMLInputElement>(null);\n const [searchInputState, setSearchInputState] = useState<SearchInputState>(SEARCH_INPUT_STATE);\n const [forcedState, setForcedState] = useState<FocusStateType>(null);\n const dropRef = useRef<HTMLDivElement>(null);\n const useDefaultTrigger = renderTrigger === SelectTriggerDefault;\n const dropId = useId();\n const bottomSheetId = useId();\n\n const { activatorRef, optionsListRef, onOptionsListClose, toggleListVisibility, showOptions } =\n useSelectOptionsList(isMobile, pickerDesktopType);\n const activatorRefCallback = useMultipleRefs(activatorRef, ref);\n const prevVisibleRef = useRef<boolean>(showOptions);\n const hasChangesApplyButton = Boolean(applyChangesButton);\n const {\n values,\n onChange,\n clearSelectedValues,\n setInitialValues,\n setSelectedValues,\n clearSelectedValuesByTrigger,\n setInitialValuesOnClosePicker,\n initialValuesOnOpening,\n } = useSelectState<DataType, MultipleType>(\n !!multiple,\n _value || [],\n showOptions,\n hasChangesApplyButton,\n onChangeHandler,\n onSelectOption,\n applyOnClear\n );\n const valuesArray = useMemo(\n // eslint-disable-next-line no-nested-ternary\n () => (Array.isArray(values) ? values : values ? ([values] as DataType[]) : []),\n [values]\n );\n const { optionList, internalLoading, searchValue, setSearchValue, searchInProgress, reload, internalError } =\n useSelectSearch<DataType>(showOptions, valuesArray, dataProvider, onOptionsChange);\n\n const selectedLabels = useMemo(\n () =>\n // eslint-disable-next-line no-nested-ternary\n Array.isArray(_value)\n ? _value.map((item) => item.text ?? item.value)\n : _value\n ? [_value?.text ?? _value.value]\n : [],\n [_value]\n );\n\n const optionsListRefCallback = useMultipleRefs(optionsListRef, dropRef, pickerRef);\n const showedByFocus = useRef<boolean>(false);\n const focusedByPointer = useRef<boolean>(false);\n const isLimitExceeded =\n maxSelectedOptions !== undefined && Array.isArray(values) && values.length >= maxSelectedOptions;\n\n // часть свойств тригера влияет на поведение дефолтного input search\n const { size, label: triggerLabel, disabled, 'aria-label': triggerAriaLabel } = triggerProps;\n const forceDisabled = useDisabled();\n const isComponentDisabled = disabled || forceDisabled;\n const sizeProp = size === 'large' ? ({ size: 'large' } as const) : ({ size: 'medium' } as const);\n const inputWrapperStyles = { maxWidth: activatorRef.current?.offsetWidth };\n const searchable = _searchable && (size === 'large' || size === 'medium');\n const dataQa = triggerProps?.['data-qa'] || DEFAULT_DATA_QA;\n\n // селект без поиска (переключаем фокус и отправляем blur)\n useLayoutEffect(() => {\n if (searchable && !isMobile) {\n return;\n }\n if (!showOptions && prevVisibleRef.current) {\n setInitialValuesOnClosePicker();\n if (forcedState === 'focus') {\n focusedByPointer.current = false;\n activatorRef.current?.focus();\n setForcedState?.(null);\n showedByFocus.current = false;\n }\n }\n if (!forcedState && !showOptions && prevVisibleRef.current) {\n onBlur?.();\n }\n prevVisibleRef.current = showOptions;\n }, [activatorRef, forcedState, isMobile, onBlur, searchable, setInitialValuesOnClosePicker, showOptions]);\n\n // селект с поиском (нужно подменить контрол)\n useLayoutEffect(() => {\n if (!searchable || isMobile || pickerDesktopType === 'modal') {\n return;\n }\n if (forcedState === 'focus' || forcedState === 'focusAndSelect') {\n setSearchInputState({\n useSearchInput: useDefaultTrigger,\n emitEvents: true,\n });\n }\n }, [forcedState, isMobile, searchable, useDefaultTrigger, pickerDesktopType]);\n\n // триггер подменяться на input (тут пачка логики + blur)\n useLayoutEffect(() => {\n if (!searchInputState.emitEvents) {\n return;\n }\n // немного магипуляций, если тригер дефотный\n if (searchInputState.useSearchInput) {\n if (!inputRef.current) {\n return;\n }\n if (forcedState === 'focus') {\n inputRef.current.focus();\n }\n // например во время выбора опции, нужно выбрать текст\n if (forcedState === 'focusAndSelect') {\n inputRef.current?.focus();\n inputRef.current?.select();\n }\n }\n if (!showOptions && prevVisibleRef.current) {\n setInitialValuesOnClosePicker();\n }\n if (!forcedState && !showOptions) {\n setSearchInputState({\n useSearchInput: false,\n emitEvents: false,\n });\n if (prevVisibleRef.current) {\n onBlur?.();\n }\n }\n prevVisibleRef.current = showOptions;\n }, [forcedState, onBlur, setForcedState, searchInputState, showOptions, setInitialValuesOnClosePicker]);\n\n // в onFocus нужно отличить клик от Tab\n useEffect(() => {\n const onPointerDown = () => {\n focusedByPointer.current = true;\n };\n const onKeyDown = () => {\n focusedByPointer.current = false;\n };\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('keydown', onKeyDown, true);\n return () => {\n document.removeEventListener('pointerdown', onPointerDown, true);\n document.removeEventListener('keydown', onKeyDown, true);\n };\n }, []);\n\n useEffect(() => {\n if (!optionsListRef.current || !showOptions) {\n return;\n }\n // на дестопе в поиском селекте оставим фокус на инпуте\n if (!isMobile && searchable && pickerDesktopType === 'drop') {\n return;\n }\n // ставим фокус на первый выбранный элемент или на первый элемент списка\n const selectedOrFirstElement =\n optionsListRef.current.querySelector<HTMLElement>('[data-magritte-select-option][aria-selected=\"true\"]') ??\n optionsListRef.current.querySelector<HTMLElement>('[data-magritte-select-option]');\n selectedOrFirstElement?.focus();\n }, [showOptions, searchable, isMobile, optionsListRef, pickerDesktopType]);\n\n const handleKeyDown = useCallback<KeyboardEventHandler>(\n (event) => {\n // не хотим скролить дроп при использовании пробела\n if (!showOptions && !searchable && keyboardMatches(event.nativeEvent, [keyboardKeys.Space])) {\n event.preventDefault();\n return;\n }\n if (showOptions && keyboardMatch(event.nativeEvent, keyboardKeys.Escape)) {\n showedByFocus.current = false;\n setForcedState('focus');\n toggleListVisibility();\n return;\n }\n\n // движение по списку опций\n if (showOptions && keyboardMatch(event.nativeEvent, keyboardKeys.ArrowUp)) {\n focusOptionsList(event, dropRef?.current, 'up');\n return;\n }\n\n if (showOptions && keyboardMatch(event.nativeEvent, keyboardKeys.ArrowDown)) {\n focusOptionsList(event, dropRef?.current, 'down');\n return;\n }\n\n if (showOptions && keyboardMatch(event.nativeEvent, keyboardKeys.Tab)) {\n focusOptionsList(event, dropRef?.current, 'down');\n return;\n }\n\n // после закрытия пользователь решил что-то поделать опять\n if (\n !showOptions &&\n !keyboardMatches(event.nativeEvent, [keyboardKeys.Tab, keyboardKeys.Escape, keyboardKeys.Space])\n ) {\n toggleListVisibility();\n }\n },\n [showOptions, toggleListVisibility, searchable]\n );\n\n const clearSelectedValuesOrUseInitialValues = () => {\n if (useInitialValuesOnClearAction) {\n setInitialValues();\n } else {\n clearSelectedValues();\n }\n if (applyOnClear) {\n onOptionsListClose();\n }\n onClear?.();\n };\n\n return (\n <>\n {!searchInputState.useSearchInput &&\n renderTrigger({\n values: selectedLabels,\n expanded: showOptions,\n toggleExpanded: toggleListVisibility,\n onChange: () => {\n if (isComponentDisabled) {\n return;\n }\n // открываем по фокусу, закрываем по клику\n // повторно открываем по клику (события фокуса уже не будет)\n if (showedByFocus.current) {\n showedByFocus.current = false;\n return;\n }\n toggleListVisibility();\n },\n onClear: () => clearSelectedValuesByTrigger(),\n ref: activatorRefCallback,\n onKeyDown: handleKeyDown,\n onBlur: () => {\n setForcedState(null);\n if (showOptions && optionList.length === 0 && !emptyOptionsHint) {\n toggleListVisibility();\n }\n if (!showOptions && forcedState === null) {\n onBlur?.();\n }\n },\n onFocus: () => {\n if (isComponentDisabled || showOptions) {\n return;\n }\n if (forcedState !== 'focus' && forcedState !== 'focusAndSelect') {\n onFocus?.();\n setForcedState('focus');\n }\n // при клике раскрыть select надо сразу (+ из-за подмены onChange не вызоветься)\n if (_searchable && focusedByPointer.current) {\n showedByFocus.current = true;\n toggleListVisibility();\n }\n },\n 'data-qa': dataQa,\n setSearchValue,\n optionsCount: optionList.length,\n 'aria-label': triggerAriaLabel,\n ...triggerProps,\n role: 'combobox',\n 'aria-haspopup': isMobile ? 'dialog' : getDropRole(clearButton, applyChangesButton, multiple),\n 'aria-controls': isMobile ? bottomSheetId : dropId,\n disabled: isComponentDisabled,\n } as TriggerPropsWithRef & SetSearchValue & OptionsCount)}\n {searchInputState.useSearchInput && (\n <div style={inputWrapperStyles}>\n <BaseInput\n {...sizeProp}\n ref={inputRef}\n wrapperRef={activatorRefCallback}\n value={searchValue}\n onChange={setSearchValue}\n onKeyDown={handleKeyDown}\n onFocus={() => {\n setForcedState('focus');\n }}\n onBlur={() => {\n setForcedState(null);\n if (showOptions && optionList.length === 0 && !emptyOptionsHint) {\n toggleListVisibility();\n }\n }}\n data-qa=\"magritte-select-activator-input\"\n placeholder={selectedLabels.length > 0 ? selectedLabels.join(', ') : triggerLabel}\n autoComplete=\"off\"\n aria-expanded={showOptions}\n role=\"combobox\"\n aria-label={triggerAriaLabel}\n aria-autocomplete=\"list\"\n aria-controls={isMobile ? bottomSheetId : dropId}\n />\n </div>\n )}\n {isMobile && (\n <SelectBottomSheet\n id={bottomSheetId}\n applyChangesButton={applyChangesButton}\n clearButton={clearButton}\n clearSelectedValuesOrUseInitialValues={clearSelectedValuesOrUseInitialValues}\n error={error}\n height={searchable || Boolean(error) || loading ? 'full-screen' : bottomSheetHeight}\n visible={Boolean(showOptions || internalLoading)}\n value={values}\n isLimitExceeded={isLimitExceeded}\n name={name}\n multiple={multiple}\n type={type}\n loading={loading || internalLoading}\n searchable={_searchable}\n useInitialValuesOnClearAction={useInitialValuesOnClearAction}\n initialValuesOnOpening={initialValuesOnOpening}\n renderItem={renderMobileItem}\n renderAlertOnExitWithoutSaving={renderAlertOnExitWithoutSaving}\n renderButtonsContainer={renderButtonsContainer}\n renderHeader={renderHeader}\n headerTitle={_headerTitle || triggerLabel}\n optionList={optionList}\n optionsListRef={optionsListRefCallback}\n onChange={onChange}\n onClose={onOptionsListClose}\n searchValue={searchValue}\n setSearchValue={setSearchValue}\n setSelectedValues={setSelectedValues}\n onBottomSheetClose={onBottomSheetClose}\n onBottomSheetOpen={onBottomSheetOpen}\n onSearchSubmit={onSearchSubmit}\n onApply={onApply}\n onClear={onClear}\n emptyOptionsHint={emptyOptionsHint}\n emptyOptionsSearchHint={emptyOptionsSearchHint}\n searchInProgress={searchInProgress}\n internalError={internalError}\n reload={reload}\n innerErrorTrls={innerErrorTrls}\n optionDataQa={optionDataQa}\n hasChangesApplyButton={hasChangesApplyButton}\n />\n )}\n {!isMobile && (\n <>\n {pickerDesktopType === 'drop' && (\n <SelectDrop\n id={dropId}\n activatorRef={activatorRef}\n applyChangesButton={applyChangesButton}\n clearButton={clearButton}\n clearSelectedValuesOrUseInitialValues={clearSelectedValuesOrUseInitialValues}\n isLimitExceeded={isLimitExceeded}\n name={name}\n multiple={multiple}\n maxWidth={maxWidth}\n type={type}\n loading={loading || internalLoading}\n useInitialValuesOnClearAction={useInitialValuesOnClearAction}\n onClose={onOptionsListClose}\n renderItem={renderDesktopItem}\n renderButtonsContainer={renderButtonsContainer}\n plain={plain}\n optionList={optionList}\n optionsListRef={optionsListRefCallback}\n value={values}\n onChange={onChange}\n searchValue={searchValue}\n searchable={searchable}\n forceDropVisibleWithEmptyOptions={forceDropVisibleWithEmptyOptions || internalLoading}\n setSearchValue={setSearchValue}\n visible={!error && (showOptions || internalLoading)}\n widthEqualToActivator={widthEqualToActivator}\n renderContentBefore={renderContentBefore}\n setForcedState={setForcedState}\n setSelectedValues={setSelectedValues}\n maxHeight={maxHeight}\n onDropOpen={onDropOpen}\n onDropClose={onDropClose}\n onApply={onApply}\n onClear={onClear}\n emptyOptionsHint={emptyOptionsHint}\n emptyOptionsSearchHint={emptyOptionsSearchHint}\n searchInProgress={searchInProgress}\n internalError={internalError}\n reload={reload}\n innerErrorTrls={innerErrorTrls}\n optionDataQa={optionDataQa}\n dropWidth={dropWidth}\n hasChangesApplyButton={hasChangesApplyButton}\n />\n )}\n {pickerDesktopType === 'modal' && (\n <SelectModal\n {...modalProps}\n applyChangesButton={applyChangesButton}\n clearButton={clearButton}\n clearSelectedValuesOrUseInitialValues={clearSelectedValuesOrUseInitialValues}\n isLimitExceeded={isLimitExceeded}\n name={name}\n multiple={multiple}\n type={type}\n loading={loading || internalLoading}\n useInitialValuesOnClearAction={useInitialValuesOnClearAction}\n onClose={onOptionsListClose}\n renderItem={renderDesktopItem}\n renderButtonsContainer={renderButtonsContainer}\n plain={plain}\n optionList={optionList}\n optionsListRef={optionsListRefCallback}\n value={values}\n onChange={onChange}\n searchValue={searchValue}\n searchable={searchable}\n setSearchValue={setSearchValue}\n visible={Boolean(showOptions || internalLoading)}\n setForcedState={setForcedState}\n setSelectedValues={setSelectedValues}\n onApply={onApply}\n onClear={onClear}\n emptyOptionsHint={emptyOptionsHint}\n emptyOptionsSearchHint={emptyOptionsSearchHint}\n searchInProgress={searchInProgress}\n internalError={internalError}\n reload={reload}\n innerErrorTrls={innerErrorTrls}\n optionDataQa={optionDataQa}\n renderAlertOnExitWithoutSaving={renderAlertOnExitWithoutSaving}\n initialValuesOnOpening={initialValuesOnOpening}\n hasChangesApplyButton={hasChangesApplyButton}\n />\n )}\n </>\n )}\n </>\n );\n};\n\nconst Select = forwardRef(SelectComponent) as (<MultipleType extends boolean, DataType extends StaticDataFetcherItem>(\n props: SelectProps<MultipleType, DataType> & { ref?: ForwardedRef<HTMLElement> }\n) => ReactElement | null) & { displayName: string };\n\nSelect.displayName = 'Select';\n\nexport { Select };\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
@@ -25,7 +25,7 @@ import '@hh.ru/magritte-common-use-disabled';
25
25
  import '@hh.ru/magritte-ui-checkable-card/CheckableCardElement';
26
26
  import '@hh.ru/magritte-ui-checkbox-radio';
27
27
 
28
- var styles = {"select-bottom-sheet":"magritte-select-bottom-sheet___1RZDJ_12-9-1","selectBottomSheet":"magritte-select-bottom-sheet___1RZDJ_12-9-1","select-bottom-sheet_checkbox":"magritte-select-bottom-sheet_checkbox___hwTgo_12-9-1","selectBottomSheetCheckbox":"magritte-select-bottom-sheet_checkbox___hwTgo_12-9-1","select-bottom-sheet_radio":"magritte-select-bottom-sheet_radio___qvFFV_12-9-1","selectBottomSheetRadio":"magritte-select-bottom-sheet_radio___qvFFV_12-9-1","select-bottom-sheet_without-header":"magritte-select-bottom-sheet_without-header___KOKVh_12-9-1","selectBottomSheetWithoutHeader":"magritte-select-bottom-sheet_without-header___KOKVh_12-9-1","full-screen-placeholder":"magritte-full-screen-placeholder___zPC8k_12-9-1","fullScreenPlaceholder":"magritte-full-screen-placeholder___zPC8k_12-9-1","error-wrapper":"magritte-error-wrapper___P7jYg_12-9-1","errorWrapper":"magritte-error-wrapper___P7jYg_12-9-1"};
28
+ var styles = {"select-bottom-sheet":"magritte-select-bottom-sheet___1RZDJ_12-9-2","selectBottomSheet":"magritte-select-bottom-sheet___1RZDJ_12-9-2","select-bottom-sheet_checkbox":"magritte-select-bottom-sheet_checkbox___hwTgo_12-9-2","selectBottomSheetCheckbox":"magritte-select-bottom-sheet_checkbox___hwTgo_12-9-2","select-bottom-sheet_radio":"magritte-select-bottom-sheet_radio___qvFFV_12-9-2","selectBottomSheetRadio":"magritte-select-bottom-sheet_radio___qvFFV_12-9-2","select-bottom-sheet_without-header":"magritte-select-bottom-sheet_without-header___KOKVh_12-9-2","selectBottomSheetWithoutHeader":"magritte-select-bottom-sheet_without-header___KOKVh_12-9-2","full-screen-placeholder":"magritte-full-screen-placeholder___zPC8k_12-9-2","fullScreenPlaceholder":"magritte-full-screen-placeholder___zPC8k_12-9-2","error-wrapper":"magritte-error-wrapper___P7jYg_12-9-2","errorWrapper":"magritte-error-wrapper___P7jYg_12-9-2"};
29
29
 
30
30
  const SelectOptionDefault = ({ data, input, type, checked, plain, }) => {
31
31
  if (type === 'delimiter') {
package/SelectDrop.js CHANGED
@@ -22,7 +22,7 @@ import '@hh.ru/magritte-common-use-disabled';
22
22
  import '@hh.ru/magritte-ui-checkable-card/CheckableCardElement';
23
23
  import '@hh.ru/magritte-ui-checkbox-radio';
24
24
 
25
- var styles = {"select-drop-container-wrapper":"magritte-select-drop-container-wrapper___OHM0q_12-9-1","selectDropContainerWrapper":"magritte-select-drop-container-wrapper___OHM0q_12-9-1","select-drop-container":"magritte-select-drop-container___hee1p_12-9-1","selectDropContainer":"magritte-select-drop-container___hee1p_12-9-1","select-drop-container_plain":"magritte-select-drop-container_plain___766zl_12-9-1","selectDropContainerPlain":"magritte-select-drop-container_plain___766zl_12-9-1","select-drop-container_with-footer":"magritte-select-drop-container_with-footer___6wp-L_12-9-1","selectDropContainerWithFooter":"magritte-select-drop-container_with-footer___6wp-L_12-9-1","select-drop":"magritte-select-drop___jn4O-_12-9-1","selectDrop":"magritte-select-drop___jn4O-_12-9-1","select-drop-header":"magritte-select-drop-header___fMmio_12-9-1","selectDropHeader":"magritte-select-drop-header___fMmio_12-9-1","select-drop_plain":"magritte-select-drop_plain___VL8Fz_12-9-1","selectDropPlain":"magritte-select-drop_plain___VL8Fz_12-9-1","label-option":"magritte-label-option___2N7t9_12-9-1","labelOption":"magritte-label-option___2N7t9_12-9-1","loading":"magritte-loading___AMiuq_12-9-1","hint":"magritte-hint___6qaFl_12-9-1"};
25
+ var styles = {"select-drop-container-wrapper":"magritte-select-drop-container-wrapper___OHM0q_12-9-2","selectDropContainerWrapper":"magritte-select-drop-container-wrapper___OHM0q_12-9-2","select-drop-container":"magritte-select-drop-container___hee1p_12-9-2","selectDropContainer":"magritte-select-drop-container___hee1p_12-9-2","select-drop-container_plain":"magritte-select-drop-container_plain___766zl_12-9-2","selectDropContainerPlain":"magritte-select-drop-container_plain___766zl_12-9-2","select-drop-container_with-footer":"magritte-select-drop-container_with-footer___6wp-L_12-9-2","selectDropContainerWithFooter":"magritte-select-drop-container_with-footer___6wp-L_12-9-2","select-drop":"magritte-select-drop___jn4O-_12-9-2","selectDrop":"magritte-select-drop___jn4O-_12-9-2","select-drop-header":"magritte-select-drop-header___fMmio_12-9-2","selectDropHeader":"magritte-select-drop-header___fMmio_12-9-2","select-drop_plain":"magritte-select-drop_plain___VL8Fz_12-9-2","selectDropPlain":"magritte-select-drop_plain___VL8Fz_12-9-2","label-option":"magritte-label-option___2N7t9_12-9-2","labelOption":"magritte-label-option___2N7t9_12-9-2","loading":"magritte-loading___AMiuq_12-9-2","hint":"magritte-hint___6qaFl_12-9-2"};
26
26
 
27
27
  const SelectOptionDefault = ({ data, input, type, plain, checked, }) => {
28
28
  if (type === 'delimiter') {
@@ -94,6 +94,11 @@ const SelectDrop = ({ activatorRef, type, name, multiple, applyChangesButton: _a
94
94
  optionsCount: optionList.length,
95
95
  selectedOptionsCount: valuesArr.length,
96
96
  });
97
+ // вернуть фокус на триггер, если применили с клавиатуры (как при выборе опции)
98
+ if (closedByKeyboardRef.current) {
99
+ closedByKeyboardRef.current = false;
100
+ setForcedState('focus');
101
+ }
97
102
  },
98
103
  });
99
104
  const emptyOptionsHintVisible = optionList.length === 0 &&
package/SelectDrop.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"SelectDrop.js","sources":["src/SelectDrop.tsx"],"sourcesContent":["import {\n useCallback,\n cloneElement,\n useRef,\n type ComponentProps,\n type ReactNode,\n type ReactElement,\n type KeyboardEvent,\n useId,\n isValidElement,\n} from 'react';\nimport classnames from 'classnames';\n\nimport { StaticDataFetcherItem } from '@hh.ru/magritte-common-data-provider';\nimport { keyboardKeys, keyboardMatches } from '@hh.ru/magritte-common-keyboard';\nimport { useTranslation } from '@hh.ru/magritte-common-use-translation';\nimport { ActionBar } from '@hh.ru/magritte-ui-action-bar/ActionBar';\nimport { Button } from '@hh.ru/magritte-ui-button';\nimport { Cell, CellText } from '@hh.ru/magritte-ui-cell';\nimport { Drop, DropRole } from '@hh.ru/magritte-ui-drop';\nimport { CheckOutlinedSize24 } from '@hh.ru/magritte-ui-icon/icon';\nimport { Loader } from '@hh.ru/magritte-ui-loader';\nimport { SelectError } from '@hh.ru/magritte-ui-select/SelectError';\nimport { SelectOption } from '@hh.ru/magritte-ui-select/SelectOption';\nimport { getChecked } from '@hh.ru/magritte-ui-select/getChecked';\nimport {\n OnChangeAction,\n SelectDropProps,\n RenderOptionTypeProps,\n RenderButtonsContainerProps,\n} from '@hh.ru/magritte-ui-select/types';\n\nimport styles from './select-drop.less';\n\nconst SelectOptionDefault = <DataType extends StaticDataFetcherItem>({\n data,\n input,\n type,\n plain,\n checked,\n}: RenderOptionTypeProps<DataType>): ReactElement => {\n if (type === 'delimiter') {\n return (\n <CellText maxLines={1} style=\"secondary\">\n {data.text}\n </CellText>\n );\n }\n if (type === 'label') {\n return (\n <Cell Element=\"div\" right={checked && plain ? <CheckOutlinedSize24 /> : undefined}>\n <div className={classnames({ [styles.labelOption]: !plain })}>\n <CellText maxLines={1}>{data.text}</CellText>\n </div>\n </Cell>\n );\n }\n return (\n <Cell Element=\"div\" align=\"center\" left={input}>\n <CellText maxLines={1}>{data.text}</CellText>\n </Cell>\n );\n};\n\nconst RenderButtonsContainerDefault = ({ applyChangesButton, loading }: RenderButtonsContainerProps): ReactNode => {\n if (loading || !applyChangesButton) {\n return null;\n }\n return <ActionBar primaryActions={applyChangesButton} />;\n};\n\nexport const getDropRole = (clearButton?: ReactNode, applyChangesButton?: ReactNode, multiple?: boolean): DropRole => {\n const needAddChangesButton = multiple && Boolean(applyChangesButton);\n const hasAnyButton = Boolean(clearButton) || needAddChangesButton;\n return hasAnyButton ? 'dialog' : 'listbox';\n};\n\nexport const SelectDrop = <MultipleType extends boolean, DataType extends StaticDataFetcherItem>({\n activatorRef,\n type,\n name,\n multiple,\n applyChangesButton: _applyChangesButton,\n clearButton: _clearButton,\n useInitialValuesOnClearAction,\n loading,\n renderItem = SelectOptionDefault,\n renderButtonsContainer = RenderButtonsContainerDefault,\n visible,\n optionList,\n optionsListRef,\n searchValue,\n setSearchValue,\n maxWidth,\n value: values,\n onChange,\n onClose,\n clearSelectedValuesOrUseInitialValues,\n isLimitExceeded,\n plain,\n searchable,\n widthEqualToActivator,\n forceDropVisibleWithEmptyOptions,\n renderContentBefore,\n setForcedState,\n setSelectedValues,\n maxHeight,\n onDropClose,\n onDropOpen,\n emptyOptionsHint,\n emptyOptionsSearchHint,\n onApply,\n onClear,\n searchInProgress,\n internalError,\n reload,\n innerErrorTrls,\n optionDataQa,\n dropWidth,\n id,\n hasChangesApplyButton,\n ...props\n}: SelectDropProps<MultipleType, DataType>): ReactElement => {\n const closedByKeyboardRef = useRef(false);\n const listId = useId();\n const valuesArr = Array.isArray(values) ? values : [values];\n const handleChange: OnChangeAction<DataType> = useCallback(\n (newValue, needToPut) => {\n onChange(newValue, needToPut);\n\n if (!multiple && !hasChangesApplyButton) {\n onClose?.();\n }\n\n if (!multiple && closedByKeyboardRef.current) {\n closedByKeyboardRef.current = false;\n setForcedState('focus');\n return;\n }\n\n if (multiple && searchValue) {\n setForcedState('focusAndSelect');\n return;\n }\n closedByKeyboardRef.current = false;\n setForcedState(null);\n },\n [multiple, onChange, onClose, searchValue, setForcedState, hasChangesApplyButton]\n );\n\n const applyTrl = useTranslation('Select', 'apply');\n const clearTrl = useTranslation('Select', 'clear');\n const clearButton =\n _clearButton &&\n isValidElement<ComponentProps<typeof Button>>(_clearButton) &&\n cloneElement(_clearButton, {\n key: 'clearButton',\n size: 'medium',\n 'data-qa': 'magritte-select-clear-action',\n 'aria-label': _clearButton.props['aria-label'] || clearTrl,\n onClick: () => {\n clearSelectedValuesOrUseInitialValues();\n },\n } as Partial<ComponentProps<typeof Button>>);\n const applyChangesButton =\n hasChangesApplyButton &&\n isValidElement<ComponentProps<typeof Button>>(_applyChangesButton) &&\n cloneElement(_applyChangesButton, {\n key: 'applyChangesButton',\n size: 'medium',\n 'data-qa': 'magritte-select-apply',\n 'aria-label': _applyChangesButton.props['aria-label'] || applyTrl,\n onClick: () => {\n setSelectedValues();\n onClose?.();\n onApply?.({\n isMobile: false,\n searchValue,\n optionsCount: optionList.length,\n selectedOptionsCount: valuesArr.length,\n });\n },\n } as Partial<ComponentProps<typeof Button>>);\n\n const emptyOptionsHintVisible =\n optionList.length === 0 &&\n !searchValue &&\n !!emptyOptionsHint &&\n !loading &&\n !searchInProgress &&\n !internalError;\n const emptySearchOptionsHintVisible = !!(\n optionList.length === 0 &&\n searchValue &&\n !!emptyOptionsSearchHint &&\n !loading &&\n !searchInProgress &&\n !internalError\n );\n\n const optionsVisible = !loading && !emptySearchOptionsHintVisible && !emptyOptionsHintVisible && !internalError;\n const footer = renderButtonsContainer({\n applyChangesButton,\n clearButton,\n searchValue,\n optionsCount: optionList.length,\n loading,\n isError: Boolean(internalError && innerErrorTrls),\n emptyOptionsHintVisible: emptyOptionsHintVisible || emptySearchOptionsHintVisible,\n });\n const haveFooter = Boolean(footer);\n\n const dropRole = getDropRole(_clearButton, _applyChangesButton, multiple);\n const dropA11YProps = dropRole === 'listbox' ? { 'aria-owns': listId, 'aria-multiselectable': multiple } : {};\n const listA11YProps = dropRole === 'dialog' ? { role: 'listbox', 'aria-multiselectable': multiple } : {};\n\n return (\n <Drop\n {...props}\n ref={optionsListRef}\n autoFocusWhenOpened={false}\n maxWidth={maxWidth}\n width={dropWidth}\n visible={\n (optionList.length > 0 ||\n forceDropVisibleWithEmptyOptions ||\n emptyOptionsHintVisible ||\n emptySearchOptionsHintVisible ||\n internalError) &&\n visible\n }\n placement={['bottom-left', 'top-left', 'bottom-right', 'top-right']}\n activatorRef={activatorRef}\n padding={plain ? 24 : 12}\n keyboardNavigationMode=\"list\"\n onClose={() => {\n setForcedState('focus');\n onClose?.();\n }}\n closeByClickOutside={false}\n onKeyDownCapture={(event: KeyboardEvent) => {\n if (keyboardMatches(event.nativeEvent, [keyboardKeys.Enter, keyboardKeys.Space])) {\n closedByKeyboardRef.current = true;\n }\n }}\n widthEqualToActivator={widthEqualToActivator || (loading && dropWidth === undefined)}\n forcePlacement\n footer={footer}\n onAfterExit={onDropClose}\n onAppear={onDropOpen}\n returnFocusOnClose={false}\n id={id}\n role={dropRole}\n {...dropA11YProps}\n >\n <div className={styles.selectDropContainerWrapper} style={{ maxHeight: `${maxHeight}px` }}>\n <div\n className={classnames(\n styles.selectDropContainer,\n { [styles.selectDropContainerPlain]: plain },\n { [styles.selectDropContainerWithFooter]: haveFooter }\n )}\n >\n {internalError && innerErrorTrls && <SelectError innerErrorTrls={innerErrorTrls} reload={reload} />}\n {emptyOptionsHintVisible && <div className={styles.hint}>{emptyOptionsHint}</div>}\n {emptySearchOptionsHintVisible && <div className={styles.hint}>{emptyOptionsSearchHint}</div>}\n {loading && (\n <div className={styles.loading}>\n <Loader size={24} />\n </div>\n )}\n {optionsVisible && (\n <>\n {renderContentBefore && (\n <div data-qa=\"magritte-select-header\" className={styles.selectDropHeader}>\n {renderContentBefore({\n clearSelectedValuesAndClose: clearSelectedValuesOrUseInitialValues,\n searchValue,\n setSearchValue,\n optionsCount: optionList.length,\n })}\n </div>\n )}\n <div\n id={listId}\n className={classnames(styles.selectDrop, { [styles.selectDropPlain]: plain })}\n data-qa=\"magritte-select-option-list\"\n {...listA11YProps}\n >\n {optionList.map((option) => {\n const checked = Boolean(option.data && getChecked(option.data, values ?? []));\n const disabled = !checked && (option.disabled || isLimitExceeded);\n return (\n <SelectOption\n key={option.data.value}\n name={name}\n checked={checked}\n onChange={handleChange}\n render={renderItem}\n disabled={disabled}\n type={option.type || type}\n plain={!!plain}\n multiple={multiple}\n data-qa={optionDataQa}\n data={option.data}\n />\n );\n })}\n </div>\n </>\n )}\n </div>\n </div>\n </Drop>\n );\n};\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAM,mBAAmB,GAAG,CAAyC,EACjE,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,KAAK,EACL,OAAO,GACuB,KAAkB;AAChD,IAAA,IAAI,IAAI,KAAK,WAAW,EAAE;AACtB,QAAA,QACIA,GAAC,CAAA,QAAQ,EAAC,EAAA,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAC,WAAW,EACnC,QAAA,EAAA,IAAI,CAAC,IAAI,EAAA,CACH,EACb;KACL;AACD,IAAA,IAAI,IAAI,KAAK,OAAO,EAAE;QAClB,QACIA,GAAC,CAAA,IAAI,EAAC,EAAA,OAAO,EAAC,KAAK,EAAC,KAAK,EAAE,OAAO,IAAI,KAAK,GAAGA,GAAA,CAAC,mBAAmB,EAAA,EAAA,CAAG,GAAG,SAAS,EAC7E,QAAA,EAAAA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,KAAK,EAAE,CAAC,EACxD,QAAA,EAAAA,GAAA,CAAC,QAAQ,EAAC,EAAA,QAAQ,EAAE,CAAC,EAAG,QAAA,EAAA,IAAI,CAAC,IAAI,EAAY,CAAA,EAAA,CAC3C,EACH,CAAA,EACT;KACL;AACD,IAAA,QACIA,GAAA,CAAC,IAAI,EAAA,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,EAAE,KAAK,EAAA,QAAA,EAC1CA,GAAC,CAAA,QAAQ,EAAC,EAAA,QAAQ,EAAE,CAAC,EAAG,QAAA,EAAA,IAAI,CAAC,IAAI,EAAY,CAAA,EAAA,CAC1C,EACT;AACN,CAAC,CAAC;AAEF,MAAM,6BAA6B,GAAG,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAA+B,KAAe;AAC9G,IAAA,IAAI,OAAO,IAAI,CAAC,kBAAkB,EAAE;AAChC,QAAA,OAAO,IAAI,CAAC;KACf;AACD,IAAA,OAAOA,IAAC,SAAS,EAAA,EAAC,cAAc,EAAE,kBAAkB,GAAI,CAAC;AAC7D,CAAC,CAAC;AAEW,MAAA,WAAW,GAAG,CAAC,WAAuB,EAAE,kBAA8B,EAAE,QAAkB,KAAc;IACjH,MAAM,oBAAoB,GAAG,QAAQ,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,oBAAoB,CAAC;IAClE,OAAO,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC/C,EAAE;MAEW,UAAU,GAAG,CAAuE,EAC7F,YAAY,EACZ,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,kBAAkB,EAAE,mBAAmB,EACvC,WAAW,EAAE,YAAY,EACzB,6BAA6B,EAC7B,OAAO,EACP,UAAU,GAAG,mBAAmB,EAChC,sBAAsB,GAAG,6BAA6B,EACtD,OAAO,EACP,UAAU,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,QAAQ,EACR,KAAK,EAAE,MAAM,EACb,QAAQ,EACR,OAAO,EACP,qCAAqC,EACrC,eAAe,EACf,KAAK,EACL,UAAU,EACV,qBAAqB,EACrB,gCAAgC,EAChC,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,sBAAsB,EACtB,OAAO,EACP,OAAO,EACP,gBAAgB,EAChB,aAAa,EACb,MAAM,EACN,cAAc,EACd,YAAY,EACZ,SAAS,EACT,EAAE,EACF,qBAAqB,EACrB,GAAG,KAAK,EAC8B,KAAkB;AACxD,IAAA,MAAM,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1C,IAAA,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;AACvB,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,YAAY,GAA6B,WAAW,CACtD,CAAC,QAAQ,EAAE,SAAS,KAAI;AACpB,QAAA,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAE9B,QAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,qBAAqB,EAAE;YACrC,OAAO,IAAI,CAAC;SACf;AAED,QAAA,IAAI,CAAC,QAAQ,IAAI,mBAAmB,CAAC,OAAO,EAAE;AAC1C,YAAA,mBAAmB,CAAC,OAAO,GAAG,KAAK,CAAC;YACpC,cAAc,CAAC,OAAO,CAAC,CAAC;YACxB,OAAO;SACV;AAED,QAAA,IAAI,QAAQ,IAAI,WAAW,EAAE;YACzB,cAAc,CAAC,gBAAgB,CAAC,CAAC;YACjC,OAAO;SACV;AACD,QAAA,mBAAmB,CAAC,OAAO,GAAG,KAAK,CAAC;QACpC,cAAc,CAAC,IAAI,CAAC,CAAC;AACzB,KAAC,EACD,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,qBAAqB,CAAC,CACpF,CAAC;IAEF,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,WAAW,GACb,YAAY;QACZ,cAAc,CAAgC,YAAY,CAAC;QAC3D,YAAY,CAAC,YAAY,EAAE;AACvB,YAAA,GAAG,EAAE,aAAa;AAClB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,SAAS,EAAE,8BAA8B;YACzC,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,QAAQ;YAC1D,OAAO,EAAE,MAAK;AACV,gBAAA,qCAAqC,EAAE,CAAC;aAC3C;AACsC,SAAA,CAAC,CAAC;IACjD,MAAM,kBAAkB,GACpB,qBAAqB;QACrB,cAAc,CAAgC,mBAAmB,CAAC;QAClE,YAAY,CAAC,mBAAmB,EAAE;AAC9B,YAAA,GAAG,EAAE,oBAAoB;AACzB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,SAAS,EAAE,uBAAuB;YAClC,YAAY,EAAE,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,QAAQ;YACjE,OAAO,EAAE,MAAK;AACV,gBAAA,iBAAiB,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC;AACZ,gBAAA,OAAO,GAAG;AACN,oBAAA,QAAQ,EAAE,KAAK;oBACf,WAAW;oBACX,YAAY,EAAE,UAAU,CAAC,MAAM;oBAC/B,oBAAoB,EAAE,SAAS,CAAC,MAAM;AACzC,iBAAA,CAAC,CAAC;aACN;AACsC,SAAA,CAAC,CAAC;AAEjD,IAAA,MAAM,uBAAuB,GACzB,UAAU,CAAC,MAAM,KAAK,CAAC;AACvB,QAAA,CAAC,WAAW;AACZ,QAAA,CAAC,CAAC,gBAAgB;AAClB,QAAA,CAAC,OAAO;AACR,QAAA,CAAC,gBAAgB;AACjB,QAAA,CAAC,aAAa,CAAC;IACnB,MAAM,6BAA6B,GAAG,CAAC,EACnC,UAAU,CAAC,MAAM,KAAK,CAAC;QACvB,WAAW;AACX,QAAA,CAAC,CAAC,sBAAsB;AACxB,QAAA,CAAC,OAAO;AACR,QAAA,CAAC,gBAAgB;QACjB,CAAC,aAAa,CACjB,CAAC;AAEF,IAAA,MAAM,cAAc,GAAG,CAAC,OAAO,IAAI,CAAC,6BAA6B,IAAI,CAAC,uBAAuB,IAAI,CAAC,aAAa,CAAC;IAChH,MAAM,MAAM,GAAG,sBAAsB,CAAC;QAClC,kBAAkB;QAClB,WAAW;QACX,WAAW;QACX,YAAY,EAAE,UAAU,CAAC,MAAM;QAC/B,OAAO;AACP,QAAA,OAAO,EAAE,OAAO,CAAC,aAAa,IAAI,cAAc,CAAC;QACjD,uBAAuB,EAAE,uBAAuB,IAAI,6BAA6B;AACpF,KAAA,CAAC,CAAC;AACH,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnC,MAAM,QAAQ,GAAG,WAAW,CAAC,YAAY,EAAE,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,QAAQ,KAAK,SAAS,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,sBAAsB,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC9G,MAAM,aAAa,GAAG,QAAQ,KAAK,QAAQ,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,sBAAsB,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AAEzG,IAAA,QACIA,GAAA,CAAC,IAAI,EAAA,EAAA,GACG,KAAK,EACT,GAAG,EAAE,cAAc,EACnB,mBAAmB,EAAE,KAAK,EAC1B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,SAAS,EAChB,OAAO,EACH,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAClB,gCAAgC;YAChC,uBAAuB;YACvB,6BAA6B;AAC7B,YAAA,aAAa;AACjB,YAAA,OAAO,EAEX,SAAS,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,CAAC,EACnE,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,KAAK,GAAG,EAAE,GAAG,EAAE,EACxB,sBAAsB,EAAC,MAAM,EAC7B,OAAO,EAAE,MAAK;YACV,cAAc,CAAC,OAAO,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;SACf,EACD,mBAAmB,EAAE,KAAK,EAC1B,gBAAgB,EAAE,CAAC,KAAoB,KAAI;AACvC,YAAA,IAAI,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9E,gBAAA,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC;aACtC;AACL,SAAC,EACD,qBAAqB,EAAE,qBAAqB,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,CAAC,EACpF,cAAc,EACd,IAAA,EAAA,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,UAAU,EACpB,kBAAkB,EAAE,KAAK,EACzB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,QAAQ,EACV,GAAA,aAAa,EAEjB,QAAA,EAAAA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,0BAA0B,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,CAAG,EAAA,SAAS,IAAI,EAAE,EAAA,QAAA,EACrFC,cACI,SAAS,EAAE,UAAU,CACjB,MAAM,CAAC,mBAAmB,EAC1B,EAAE,CAAC,MAAM,CAAC,wBAAwB,GAAG,KAAK,EAAE,EAC5C,EAAE,CAAC,MAAM,CAAC,6BAA6B,GAAG,UAAU,EAAE,CACzD,EAEA,QAAA,EAAA,CAAA,aAAa,IAAI,cAAc,IAAID,GAAC,CAAA,WAAW,IAAC,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAA,CAAI,EAClG,uBAAuB,IAAIA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,IAAI,EAAA,QAAA,EAAG,gBAAgB,EAAA,CAAO,EAChF,6BAA6B,IAAIA,aAAK,SAAS,EAAE,MAAM,CAAC,IAAI,EAAG,QAAA,EAAA,sBAAsB,GAAO,EAC5F,OAAO,KACJA,aAAK,SAAS,EAAE,MAAM,CAAC,OAAO,EAC1B,QAAA,EAAAA,GAAA,CAAC,MAAM,EAAC,EAAA,IAAI,EAAE,EAAE,EAAA,CAAI,EAClB,CAAA,CACT,EACA,cAAc,KACXC,IACK,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAmB,KAChBF,GAAA,CAAA,KAAA,EAAA,EAAA,SAAA,EAAa,wBAAwB,EAAC,SAAS,EAAE,MAAM,CAAC,gBAAgB,EAAA,QAAA,EACnE,mBAAmB,CAAC;AACjB,oCAAA,2BAA2B,EAAE,qCAAqC;oCAClE,WAAW;oCACX,cAAc;oCACd,YAAY,EAAE,UAAU,CAAC,MAAM;AAClC,iCAAA,CAAC,GACA,CACT,EACDA,GACI,CAAA,KAAA,EAAA,EAAA,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,GAAG,KAAK,EAAE,CAAC,aACrE,6BAA6B,EAAA,GACjC,aAAa,EAAA,QAAA,EAEhB,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;AACvB,oCAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;AAC9E,oCAAA,MAAM,QAAQ,GAAG,CAAC,OAAO,KAAK,MAAM,CAAC,QAAQ,IAAI,eAAe,CAAC,CAAC;oCAClE,QACIA,GAAC,CAAA,YAAY,EAET,EAAA,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,EACzB,KAAK,EAAE,CAAC,CAAC,KAAK,EACd,QAAQ,EAAE,QAAQ,EACT,SAAA,EAAA,YAAY,EACrB,IAAI,EAAE,MAAM,CAAC,IAAI,EAVZ,EAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAWxB,EACJ;iCACL,CAAC,GACA,CACP,EAAA,CAAA,CACN,IACC,EACJ,CAAA,EAAA,CACH,EACT;AACN;;;;"}
1
+ {"version":3,"file":"SelectDrop.js","sources":["src/SelectDrop.tsx"],"sourcesContent":["import {\n useCallback,\n cloneElement,\n useRef,\n type ComponentProps,\n type ReactNode,\n type ReactElement,\n type KeyboardEvent,\n useId,\n isValidElement,\n} from 'react';\nimport classnames from 'classnames';\n\nimport { StaticDataFetcherItem } from '@hh.ru/magritte-common-data-provider';\nimport { keyboardKeys, keyboardMatches } from '@hh.ru/magritte-common-keyboard';\nimport { useTranslation } from '@hh.ru/magritte-common-use-translation';\nimport { ActionBar } from '@hh.ru/magritte-ui-action-bar/ActionBar';\nimport { Button } from '@hh.ru/magritte-ui-button';\nimport { Cell, CellText } from '@hh.ru/magritte-ui-cell';\nimport { Drop, DropRole } from '@hh.ru/magritte-ui-drop';\nimport { CheckOutlinedSize24 } from '@hh.ru/magritte-ui-icon/icon';\nimport { Loader } from '@hh.ru/magritte-ui-loader';\nimport { SelectError } from '@hh.ru/magritte-ui-select/SelectError';\nimport { SelectOption } from '@hh.ru/magritte-ui-select/SelectOption';\nimport { getChecked } from '@hh.ru/magritte-ui-select/getChecked';\nimport {\n OnChangeAction,\n SelectDropProps,\n RenderOptionTypeProps,\n RenderButtonsContainerProps,\n} from '@hh.ru/magritte-ui-select/types';\n\nimport styles from './select-drop.less';\n\nconst SelectOptionDefault = <DataType extends StaticDataFetcherItem>({\n data,\n input,\n type,\n plain,\n checked,\n}: RenderOptionTypeProps<DataType>): ReactElement => {\n if (type === 'delimiter') {\n return (\n <CellText maxLines={1} style=\"secondary\">\n {data.text}\n </CellText>\n );\n }\n if (type === 'label') {\n return (\n <Cell Element=\"div\" right={checked && plain ? <CheckOutlinedSize24 /> : undefined}>\n <div className={classnames({ [styles.labelOption]: !plain })}>\n <CellText maxLines={1}>{data.text}</CellText>\n </div>\n </Cell>\n );\n }\n return (\n <Cell Element=\"div\" align=\"center\" left={input}>\n <CellText maxLines={1}>{data.text}</CellText>\n </Cell>\n );\n};\n\nconst RenderButtonsContainerDefault = ({ applyChangesButton, loading }: RenderButtonsContainerProps): ReactNode => {\n if (loading || !applyChangesButton) {\n return null;\n }\n return <ActionBar primaryActions={applyChangesButton} />;\n};\n\nexport const getDropRole = (clearButton?: ReactNode, applyChangesButton?: ReactNode, multiple?: boolean): DropRole => {\n const needAddChangesButton = multiple && Boolean(applyChangesButton);\n const hasAnyButton = Boolean(clearButton) || needAddChangesButton;\n return hasAnyButton ? 'dialog' : 'listbox';\n};\n\nexport const SelectDrop = <MultipleType extends boolean, DataType extends StaticDataFetcherItem>({\n activatorRef,\n type,\n name,\n multiple,\n applyChangesButton: _applyChangesButton,\n clearButton: _clearButton,\n useInitialValuesOnClearAction,\n loading,\n renderItem = SelectOptionDefault,\n renderButtonsContainer = RenderButtonsContainerDefault,\n visible,\n optionList,\n optionsListRef,\n searchValue,\n setSearchValue,\n maxWidth,\n value: values,\n onChange,\n onClose,\n clearSelectedValuesOrUseInitialValues,\n isLimitExceeded,\n plain,\n searchable,\n widthEqualToActivator,\n forceDropVisibleWithEmptyOptions,\n renderContentBefore,\n setForcedState,\n setSelectedValues,\n maxHeight,\n onDropClose,\n onDropOpen,\n emptyOptionsHint,\n emptyOptionsSearchHint,\n onApply,\n onClear,\n searchInProgress,\n internalError,\n reload,\n innerErrorTrls,\n optionDataQa,\n dropWidth,\n id,\n hasChangesApplyButton,\n ...props\n}: SelectDropProps<MultipleType, DataType>): ReactElement => {\n const closedByKeyboardRef = useRef(false);\n const listId = useId();\n const valuesArr = Array.isArray(values) ? values : [values];\n const handleChange: OnChangeAction<DataType> = useCallback(\n (newValue, needToPut) => {\n onChange(newValue, needToPut);\n\n if (!multiple && !hasChangesApplyButton) {\n onClose?.();\n }\n\n if (!multiple && closedByKeyboardRef.current) {\n closedByKeyboardRef.current = false;\n setForcedState('focus');\n return;\n }\n\n if (multiple && searchValue) {\n setForcedState('focusAndSelect');\n return;\n }\n closedByKeyboardRef.current = false;\n setForcedState(null);\n },\n [multiple, onChange, onClose, searchValue, setForcedState, hasChangesApplyButton]\n );\n\n const applyTrl = useTranslation('Select', 'apply');\n const clearTrl = useTranslation('Select', 'clear');\n const clearButton =\n _clearButton &&\n isValidElement<ComponentProps<typeof Button>>(_clearButton) &&\n cloneElement(_clearButton, {\n key: 'clearButton',\n size: 'medium',\n 'data-qa': 'magritte-select-clear-action',\n 'aria-label': _clearButton.props['aria-label'] || clearTrl,\n onClick: () => {\n clearSelectedValuesOrUseInitialValues();\n },\n } as Partial<ComponentProps<typeof Button>>);\n const applyChangesButton =\n hasChangesApplyButton &&\n isValidElement<ComponentProps<typeof Button>>(_applyChangesButton) &&\n cloneElement(_applyChangesButton, {\n key: 'applyChangesButton',\n size: 'medium',\n 'data-qa': 'magritte-select-apply',\n 'aria-label': _applyChangesButton.props['aria-label'] || applyTrl,\n onClick: () => {\n setSelectedValues();\n onClose?.();\n onApply?.({\n isMobile: false,\n searchValue,\n optionsCount: optionList.length,\n selectedOptionsCount: valuesArr.length,\n });\n // вернуть фокус на триггер, если применили с клавиатуры (как при выборе опции)\n if (closedByKeyboardRef.current) {\n closedByKeyboardRef.current = false;\n setForcedState('focus');\n }\n },\n } as Partial<ComponentProps<typeof Button>>);\n\n const emptyOptionsHintVisible =\n optionList.length === 0 &&\n !searchValue &&\n !!emptyOptionsHint &&\n !loading &&\n !searchInProgress &&\n !internalError;\n const emptySearchOptionsHintVisible = !!(\n optionList.length === 0 &&\n searchValue &&\n !!emptyOptionsSearchHint &&\n !loading &&\n !searchInProgress &&\n !internalError\n );\n\n const optionsVisible = !loading && !emptySearchOptionsHintVisible && !emptyOptionsHintVisible && !internalError;\n const footer = renderButtonsContainer({\n applyChangesButton,\n clearButton,\n searchValue,\n optionsCount: optionList.length,\n loading,\n isError: Boolean(internalError && innerErrorTrls),\n emptyOptionsHintVisible: emptyOptionsHintVisible || emptySearchOptionsHintVisible,\n });\n const haveFooter = Boolean(footer);\n\n const dropRole = getDropRole(_clearButton, _applyChangesButton, multiple);\n const dropA11YProps = dropRole === 'listbox' ? { 'aria-owns': listId, 'aria-multiselectable': multiple } : {};\n const listA11YProps = dropRole === 'dialog' ? { role: 'listbox', 'aria-multiselectable': multiple } : {};\n\n return (\n <Drop\n {...props}\n ref={optionsListRef}\n autoFocusWhenOpened={false}\n maxWidth={maxWidth}\n width={dropWidth}\n visible={\n (optionList.length > 0 ||\n forceDropVisibleWithEmptyOptions ||\n emptyOptionsHintVisible ||\n emptySearchOptionsHintVisible ||\n internalError) &&\n visible\n }\n placement={['bottom-left', 'top-left', 'bottom-right', 'top-right']}\n activatorRef={activatorRef}\n padding={plain ? 24 : 12}\n keyboardNavigationMode=\"list\"\n onClose={() => {\n setForcedState('focus');\n onClose?.();\n }}\n closeByClickOutside={false}\n onKeyDownCapture={(event: KeyboardEvent) => {\n if (keyboardMatches(event.nativeEvent, [keyboardKeys.Enter, keyboardKeys.Space])) {\n closedByKeyboardRef.current = true;\n }\n }}\n widthEqualToActivator={widthEqualToActivator || (loading && dropWidth === undefined)}\n forcePlacement\n footer={footer}\n onAfterExit={onDropClose}\n onAppear={onDropOpen}\n returnFocusOnClose={false}\n id={id}\n role={dropRole}\n {...dropA11YProps}\n >\n <div className={styles.selectDropContainerWrapper} style={{ maxHeight: `${maxHeight}px` }}>\n <div\n className={classnames(\n styles.selectDropContainer,\n { [styles.selectDropContainerPlain]: plain },\n { [styles.selectDropContainerWithFooter]: haveFooter }\n )}\n >\n {internalError && innerErrorTrls && <SelectError innerErrorTrls={innerErrorTrls} reload={reload} />}\n {emptyOptionsHintVisible && <div className={styles.hint}>{emptyOptionsHint}</div>}\n {emptySearchOptionsHintVisible && <div className={styles.hint}>{emptyOptionsSearchHint}</div>}\n {loading && (\n <div className={styles.loading}>\n <Loader size={24} />\n </div>\n )}\n {optionsVisible && (\n <>\n {renderContentBefore && (\n <div data-qa=\"magritte-select-header\" className={styles.selectDropHeader}>\n {renderContentBefore({\n clearSelectedValuesAndClose: clearSelectedValuesOrUseInitialValues,\n searchValue,\n setSearchValue,\n optionsCount: optionList.length,\n })}\n </div>\n )}\n <div\n id={listId}\n className={classnames(styles.selectDrop, { [styles.selectDropPlain]: plain })}\n data-qa=\"magritte-select-option-list\"\n {...listA11YProps}\n >\n {optionList.map((option) => {\n const checked = Boolean(option.data && getChecked(option.data, values ?? []));\n const disabled = !checked && (option.disabled || isLimitExceeded);\n return (\n <SelectOption\n key={option.data.value}\n name={name}\n checked={checked}\n onChange={handleChange}\n render={renderItem}\n disabled={disabled}\n type={option.type || type}\n plain={!!plain}\n multiple={multiple}\n data-qa={optionDataQa}\n data={option.data}\n />\n );\n })}\n </div>\n </>\n )}\n </div>\n </div>\n </Drop>\n );\n};\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAM,mBAAmB,GAAG,CAAyC,EACjE,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,KAAK,EACL,OAAO,GACuB,KAAkB;AAChD,IAAA,IAAI,IAAI,KAAK,WAAW,EAAE;AACtB,QAAA,QACIA,GAAC,CAAA,QAAQ,EAAC,EAAA,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAC,WAAW,EACnC,QAAA,EAAA,IAAI,CAAC,IAAI,EAAA,CACH,EACb;KACL;AACD,IAAA,IAAI,IAAI,KAAK,OAAO,EAAE;QAClB,QACIA,GAAC,CAAA,IAAI,EAAC,EAAA,OAAO,EAAC,KAAK,EAAC,KAAK,EAAE,OAAO,IAAI,KAAK,GAAGA,GAAA,CAAC,mBAAmB,EAAA,EAAA,CAAG,GAAG,SAAS,EAC7E,QAAA,EAAAA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,KAAK,EAAE,CAAC,EACxD,QAAA,EAAAA,GAAA,CAAC,QAAQ,EAAC,EAAA,QAAQ,EAAE,CAAC,EAAG,QAAA,EAAA,IAAI,CAAC,IAAI,EAAY,CAAA,EAAA,CAC3C,EACH,CAAA,EACT;KACL;AACD,IAAA,QACIA,GAAA,CAAC,IAAI,EAAA,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,EAAE,KAAK,EAAA,QAAA,EAC1CA,GAAC,CAAA,QAAQ,EAAC,EAAA,QAAQ,EAAE,CAAC,EAAG,QAAA,EAAA,IAAI,CAAC,IAAI,EAAY,CAAA,EAAA,CAC1C,EACT;AACN,CAAC,CAAC;AAEF,MAAM,6BAA6B,GAAG,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAA+B,KAAe;AAC9G,IAAA,IAAI,OAAO,IAAI,CAAC,kBAAkB,EAAE;AAChC,QAAA,OAAO,IAAI,CAAC;KACf;AACD,IAAA,OAAOA,IAAC,SAAS,EAAA,EAAC,cAAc,EAAE,kBAAkB,GAAI,CAAC;AAC7D,CAAC,CAAC;AAEW,MAAA,WAAW,GAAG,CAAC,WAAuB,EAAE,kBAA8B,EAAE,QAAkB,KAAc;IACjH,MAAM,oBAAoB,GAAG,QAAQ,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,oBAAoB,CAAC;IAClE,OAAO,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC/C,EAAE;MAEW,UAAU,GAAG,CAAuE,EAC7F,YAAY,EACZ,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,kBAAkB,EAAE,mBAAmB,EACvC,WAAW,EAAE,YAAY,EACzB,6BAA6B,EAC7B,OAAO,EACP,UAAU,GAAG,mBAAmB,EAChC,sBAAsB,GAAG,6BAA6B,EACtD,OAAO,EACP,UAAU,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,QAAQ,EACR,KAAK,EAAE,MAAM,EACb,QAAQ,EACR,OAAO,EACP,qCAAqC,EACrC,eAAe,EACf,KAAK,EACL,UAAU,EACV,qBAAqB,EACrB,gCAAgC,EAChC,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,sBAAsB,EACtB,OAAO,EACP,OAAO,EACP,gBAAgB,EAChB,aAAa,EACb,MAAM,EACN,cAAc,EACd,YAAY,EACZ,SAAS,EACT,EAAE,EACF,qBAAqB,EACrB,GAAG,KAAK,EAC8B,KAAkB;AACxD,IAAA,MAAM,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1C,IAAA,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;AACvB,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,YAAY,GAA6B,WAAW,CACtD,CAAC,QAAQ,EAAE,SAAS,KAAI;AACpB,QAAA,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAE9B,QAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,qBAAqB,EAAE;YACrC,OAAO,IAAI,CAAC;SACf;AAED,QAAA,IAAI,CAAC,QAAQ,IAAI,mBAAmB,CAAC,OAAO,EAAE;AAC1C,YAAA,mBAAmB,CAAC,OAAO,GAAG,KAAK,CAAC;YACpC,cAAc,CAAC,OAAO,CAAC,CAAC;YACxB,OAAO;SACV;AAED,QAAA,IAAI,QAAQ,IAAI,WAAW,EAAE;YACzB,cAAc,CAAC,gBAAgB,CAAC,CAAC;YACjC,OAAO;SACV;AACD,QAAA,mBAAmB,CAAC,OAAO,GAAG,KAAK,CAAC;QACpC,cAAc,CAAC,IAAI,CAAC,CAAC;AACzB,KAAC,EACD,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,qBAAqB,CAAC,CACpF,CAAC;IAEF,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,WAAW,GACb,YAAY;QACZ,cAAc,CAAgC,YAAY,CAAC;QAC3D,YAAY,CAAC,YAAY,EAAE;AACvB,YAAA,GAAG,EAAE,aAAa;AAClB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,SAAS,EAAE,8BAA8B;YACzC,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,QAAQ;YAC1D,OAAO,EAAE,MAAK;AACV,gBAAA,qCAAqC,EAAE,CAAC;aAC3C;AACsC,SAAA,CAAC,CAAC;IACjD,MAAM,kBAAkB,GACpB,qBAAqB;QACrB,cAAc,CAAgC,mBAAmB,CAAC;QAClE,YAAY,CAAC,mBAAmB,EAAE;AAC9B,YAAA,GAAG,EAAE,oBAAoB;AACzB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,SAAS,EAAE,uBAAuB;YAClC,YAAY,EAAE,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,QAAQ;YACjE,OAAO,EAAE,MAAK;AACV,gBAAA,iBAAiB,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC;AACZ,gBAAA,OAAO,GAAG;AACN,oBAAA,QAAQ,EAAE,KAAK;oBACf,WAAW;oBACX,YAAY,EAAE,UAAU,CAAC,MAAM;oBAC/B,oBAAoB,EAAE,SAAS,CAAC,MAAM;AACzC,iBAAA,CAAC,CAAC;;AAEH,gBAAA,IAAI,mBAAmB,CAAC,OAAO,EAAE;AAC7B,oBAAA,mBAAmB,CAAC,OAAO,GAAG,KAAK,CAAC;oBACpC,cAAc,CAAC,OAAO,CAAC,CAAC;iBAC3B;aACJ;AACsC,SAAA,CAAC,CAAC;AAEjD,IAAA,MAAM,uBAAuB,GACzB,UAAU,CAAC,MAAM,KAAK,CAAC;AACvB,QAAA,CAAC,WAAW;AACZ,QAAA,CAAC,CAAC,gBAAgB;AAClB,QAAA,CAAC,OAAO;AACR,QAAA,CAAC,gBAAgB;AACjB,QAAA,CAAC,aAAa,CAAC;IACnB,MAAM,6BAA6B,GAAG,CAAC,EACnC,UAAU,CAAC,MAAM,KAAK,CAAC;QACvB,WAAW;AACX,QAAA,CAAC,CAAC,sBAAsB;AACxB,QAAA,CAAC,OAAO;AACR,QAAA,CAAC,gBAAgB;QACjB,CAAC,aAAa,CACjB,CAAC;AAEF,IAAA,MAAM,cAAc,GAAG,CAAC,OAAO,IAAI,CAAC,6BAA6B,IAAI,CAAC,uBAAuB,IAAI,CAAC,aAAa,CAAC;IAChH,MAAM,MAAM,GAAG,sBAAsB,CAAC;QAClC,kBAAkB;QAClB,WAAW;QACX,WAAW;QACX,YAAY,EAAE,UAAU,CAAC,MAAM;QAC/B,OAAO;AACP,QAAA,OAAO,EAAE,OAAO,CAAC,aAAa,IAAI,cAAc,CAAC;QACjD,uBAAuB,EAAE,uBAAuB,IAAI,6BAA6B;AACpF,KAAA,CAAC,CAAC;AACH,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnC,MAAM,QAAQ,GAAG,WAAW,CAAC,YAAY,EAAE,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,QAAQ,KAAK,SAAS,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,sBAAsB,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC9G,MAAM,aAAa,GAAG,QAAQ,KAAK,QAAQ,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,sBAAsB,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AAEzG,IAAA,QACIA,GAAA,CAAC,IAAI,EAAA,EAAA,GACG,KAAK,EACT,GAAG,EAAE,cAAc,EACnB,mBAAmB,EAAE,KAAK,EAC1B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,SAAS,EAChB,OAAO,EACH,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAClB,gCAAgC;YAChC,uBAAuB;YACvB,6BAA6B;AAC7B,YAAA,aAAa;AACjB,YAAA,OAAO,EAEX,SAAS,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,CAAC,EACnE,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,KAAK,GAAG,EAAE,GAAG,EAAE,EACxB,sBAAsB,EAAC,MAAM,EAC7B,OAAO,EAAE,MAAK;YACV,cAAc,CAAC,OAAO,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;SACf,EACD,mBAAmB,EAAE,KAAK,EAC1B,gBAAgB,EAAE,CAAC,KAAoB,KAAI;AACvC,YAAA,IAAI,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9E,gBAAA,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC;aACtC;AACL,SAAC,EACD,qBAAqB,EAAE,qBAAqB,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,CAAC,EACpF,cAAc,EACd,IAAA,EAAA,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,UAAU,EACpB,kBAAkB,EAAE,KAAK,EACzB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,QAAQ,EACV,GAAA,aAAa,EAEjB,QAAA,EAAAA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,0BAA0B,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,CAAG,EAAA,SAAS,IAAI,EAAE,EAAA,QAAA,EACrFC,cACI,SAAS,EAAE,UAAU,CACjB,MAAM,CAAC,mBAAmB,EAC1B,EAAE,CAAC,MAAM,CAAC,wBAAwB,GAAG,KAAK,EAAE,EAC5C,EAAE,CAAC,MAAM,CAAC,6BAA6B,GAAG,UAAU,EAAE,CACzD,EAEA,QAAA,EAAA,CAAA,aAAa,IAAI,cAAc,IAAID,GAAC,CAAA,WAAW,IAAC,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAA,CAAI,EAClG,uBAAuB,IAAIA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,IAAI,EAAA,QAAA,EAAG,gBAAgB,EAAA,CAAO,EAChF,6BAA6B,IAAIA,aAAK,SAAS,EAAE,MAAM,CAAC,IAAI,EAAG,QAAA,EAAA,sBAAsB,GAAO,EAC5F,OAAO,KACJA,aAAK,SAAS,EAAE,MAAM,CAAC,OAAO,EAC1B,QAAA,EAAAA,GAAA,CAAC,MAAM,EAAC,EAAA,IAAI,EAAE,EAAE,EAAA,CAAI,EAClB,CAAA,CACT,EACA,cAAc,KACXC,IACK,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAmB,KAChBF,GAAA,CAAA,KAAA,EAAA,EAAA,SAAA,EAAa,wBAAwB,EAAC,SAAS,EAAE,MAAM,CAAC,gBAAgB,EAAA,QAAA,EACnE,mBAAmB,CAAC;AACjB,oCAAA,2BAA2B,EAAE,qCAAqC;oCAClE,WAAW;oCACX,cAAc;oCACd,YAAY,EAAE,UAAU,CAAC,MAAM;AAClC,iCAAA,CAAC,GACA,CACT,EACDA,GACI,CAAA,KAAA,EAAA,EAAA,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,GAAG,KAAK,EAAE,CAAC,aACrE,6BAA6B,EAAA,GACjC,aAAa,EAAA,QAAA,EAEhB,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;AACvB,oCAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;AAC9E,oCAAA,MAAM,QAAQ,GAAG,CAAC,OAAO,KAAK,MAAM,CAAC,QAAQ,IAAI,eAAe,CAAC,CAAC;oCAClE,QACIA,GAAC,CAAA,YAAY,EAET,EAAA,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,EACzB,KAAK,EAAE,CAAC,CAAC,KAAK,EACd,QAAQ,EAAE,QAAQ,EACT,SAAA,EAAA,YAAY,EACrB,IAAI,EAAE,MAAM,CAAC,IAAI,EAVZ,EAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAWxB,EACJ;iCACL,CAAC,GACA,CACP,EAAA,CAAA,CACN,IACC,EACJ,CAAA,EAAA,CACH,EACT;AACN;;;;"}
@@ -6,7 +6,7 @@ import { VSpacing } from '@hh.ru/magritte-ui-spacing';
6
6
  import { Title } from '@hh.ru/magritte-ui-title';
7
7
  import { Text } from '@hh.ru/magritte-ui-typography';
8
8
 
9
- var styles = {"select-empty-hint":"magritte-select-empty-hint___B39XJ_12-9-1","selectEmptyHint":"magritte-select-empty-hint___B39XJ_12-9-1","icon":"magritte-icon___F0GQx_12-9-1","icon-init":"magritte-icon-init___GWK-V_12-9-1","iconInit":"magritte-icon-init___GWK-V_12-9-1","icon-search":"magritte-icon-search___ZsqO-_12-9-1","iconSearch":"magritte-icon-search___ZsqO-_12-9-1"};
9
+ var styles = {"select-empty-hint":"magritte-select-empty-hint___B39XJ_12-9-2","selectEmptyHint":"magritte-select-empty-hint___B39XJ_12-9-2","icon":"magritte-icon___F0GQx_12-9-2","icon-init":"magritte-icon-init___GWK-V_12-9-2","iconInit":"magritte-icon-init___GWK-V_12-9-2","icon-search":"magritte-icon-search___ZsqO-_12-9-2","iconSearch":"magritte-icon-search___ZsqO-_12-9-2"};
10
10
 
11
11
  const SelectEmptyHint = ({ title, titleElement, description, type }) => {
12
12
  return (jsxs("div", { className: styles.selectEmptyHint, children: [type === 'init' && (jsx("div", { className: classnames(styles.icon, styles.iconInit), children: jsx(MagnifierOutlinedSize24, {}) })), type === 'emptySearch' && (jsx("div", { className: classnames(styles.icon, styles.iconSearch), children: jsx(EmojiHalfsadOutlinedSize24, {}) })), jsx(VSpacing, { default: 32 }), jsx(Title, { Element: titleElement, size: "small", children: title }), jsx(VSpacing, { default: 8 }), Boolean(description) && (jsx(Text, { typography: "paragraph-2-regular", style: "secondary", children: description }))] }));
package/SelectError.js CHANGED
@@ -7,7 +7,7 @@ import { VSpacing } from '@hh.ru/magritte-ui-spacing';
7
7
  import { Title } from '@hh.ru/magritte-ui-title';
8
8
  import { Text } from '@hh.ru/magritte-ui-typography';
9
9
 
10
- var styles = {"error-container":"magritte-error-container___t9B5w_12-9-1","errorContainer":"magritte-error-container___t9B5w_12-9-1"};
10
+ var styles = {"error-container":"magritte-error-container___t9B5w_12-9-2","errorContainer":"magritte-error-container___t9B5w_12-9-2"};
11
11
 
12
12
  const SelectError = ({ innerErrorTrls, reload, }) => {
13
13
  const { isMobile } = useBreakpoint();
package/SelectModal.js CHANGED
@@ -24,7 +24,7 @@ import '@hh.ru/magritte-common-use-disabled';
24
24
  import '@hh.ru/magritte-ui-checkable-card/CheckableCardElement';
25
25
  import '@hh.ru/magritte-ui-checkbox-radio';
26
26
 
27
- var styles = {"select-modal-wrapper":"magritte-select-modal-wrapper___5BhtC_12-9-1","selectModalWrapper":"magritte-select-modal-wrapper___5BhtC_12-9-1","select-modal":"magritte-select-modal___f9wc6_12-9-1","selectModal":"magritte-select-modal___f9wc6_12-9-1","select-modal_plain":"magritte-select-modal_plain___0rP39_12-9-1","selectModalPlain":"magritte-select-modal_plain___0rP39_12-9-1","label-option":"magritte-label-option___kFAuR_12-9-1","labelOption":"magritte-label-option___kFAuR_12-9-1","layer-full-height":"magritte-layer-full-height___cJX-K_12-9-1","layerFullHeight":"magritte-layer-full-height___cJX-K_12-9-1"};
27
+ var styles = {"select-modal-wrapper":"magritte-select-modal-wrapper___5BhtC_12-9-2","selectModalWrapper":"magritte-select-modal-wrapper___5BhtC_12-9-2","select-modal":"magritte-select-modal___f9wc6_12-9-2","selectModal":"magritte-select-modal___f9wc6_12-9-2","select-modal_plain":"magritte-select-modal_plain___0rP39_12-9-2","selectModalPlain":"magritte-select-modal_plain___0rP39_12-9-2","label-option":"magritte-label-option___kFAuR_12-9-2","labelOption":"magritte-label-option___kFAuR_12-9-2","layer-full-height":"magritte-layer-full-height___cJX-K_12-9-2","layerFullHeight":"magritte-layer-full-height___cJX-K_12-9-2"};
28
28
 
29
29
  const SelectOptionDefault = ({ data, input, type, plain, checked, }) => {
30
30
  if (type === 'delimiter') {
package/SelectOption.js CHANGED
@@ -8,7 +8,7 @@ import { CheckableCardElement } from '@hh.ru/magritte-ui-checkable-card/Checkabl
8
8
  import { Radio, Checkbox } from '@hh.ru/magritte-ui-checkbox-radio';
9
9
  import { Text } from '@hh.ru/magritte-ui-typography';
10
10
 
11
- var styles = {"select-option-plain":"magritte-select-option-plain___dfz4a_12-9-1","selectOptionPlain":"magritte-select-option-plain___dfz4a_12-9-1","select-option-plain_active":"magritte-select-option-plain_active___AQSQS_12-9-1","selectOptionPlainActive":"magritte-select-option-plain_active___AQSQS_12-9-1","select-delimiter":"magritte-select-delimiter___WyeR6_12-9-1","selectDelimiter":"magritte-select-delimiter___WyeR6_12-9-1"};
11
+ var styles = {"select-option-plain":"magritte-select-option-plain___dfz4a_12-9-2","selectOptionPlain":"magritte-select-option-plain___dfz4a_12-9-2","select-option-plain_active":"magritte-select-option-plain_active___AQSQS_12-9-2","selectOptionPlainActive":"magritte-select-option-plain_active___AQSQS_12-9-2","select-delimiter":"magritte-select-delimiter___WyeR6_12-9-2","selectDelimiter":"magritte-select-delimiter___WyeR6_12-9-2"};
12
12
 
13
13
  const CheckableComponent = ({ type, value, checked, name, onChange, 'data-qa': dataQa, }) => {
14
14
  if (type === 'label') {
package/index.css CHANGED
@@ -1,4 +1,4 @@
1
- .magritte-error-container___t9B5w_12-9-1{
1
+ .magritte-error-container___t9B5w_12-9-2{
2
2
  display:flex;
3
3
  flex-direction:column;
4
4
  align-items:center;
@@ -6,13 +6,13 @@
6
6
  justify-content:center;
7
7
  }
8
8
  @media (min-width: 1020px){
9
- body.magritte-old-layout .magritte-error-container___t9B5w_12-9-1{
9
+ body.magritte-old-layout .magritte-error-container___t9B5w_12-9-2{
10
10
  min-height:320px;
11
11
  height:auto;
12
12
  }
13
13
  }
14
14
  @media (min-width: 1024px){
15
- body:not(.magritte-old-layout) .magritte-error-container___t9B5w_12-9-1{
15
+ body:not(.magritte-old-layout) .magritte-error-container___t9B5w_12-9-2{
16
16
  min-height:320px;
17
17
  height:auto;
18
18
  }
@@ -21,89 +21,89 @@
21
21
  :root{
22
22
  --magritte-color-component-input-stroke-state-accent-focused-accessible-v24-7-1:#0070ff7a;
23
23
  }
24
- .magritte-select-option-plain___dfz4a_12-9-1{
24
+ .magritte-select-option-plain___dfz4a_12-9-2{
25
25
  border-radius:8px;
26
26
  }
27
- .magritte-select-option-plain___dfz4a_12-9-1.focus-visible{
27
+ .magritte-select-option-plain___dfz4a_12-9-2.focus-visible{
28
28
  outline:var(--magritte-color-component-input-stroke-state-accent-focused-accessible-v24-7-1) solid 4px;
29
29
  }
30
- .magritte-select-option-plain___dfz4a_12-9-1:hover{
30
+ .magritte-select-option-plain___dfz4a_12-9-2:hover{
31
31
  cursor:default;
32
32
  }
33
- .magritte-select-option-plain_active___AQSQS_12-9-1:hover{
33
+ .magritte-select-option-plain_active___AQSQS_12-9-2:hover{
34
34
  cursor:pointer;
35
35
  }
36
- .magritte-select-delimiter___WyeR6_12-9-1{
36
+ .magritte-select-delimiter___WyeR6_12-9-2{
37
37
  padding-left:16px;
38
38
  padding-top:12px;
39
39
  }
40
40
 
41
- .magritte-select-bottom-sheet___1RZDJ_12-9-1{
41
+ .magritte-select-bottom-sheet___1RZDJ_12-9-2{
42
42
  display:flex;
43
43
  flex-direction:column;
44
44
  padding:0 16px;
45
45
  padding-bottom:16px;
46
46
  }
47
- .magritte-select-bottom-sheet_checkbox___hwTgo_12-9-1,
48
- .magritte-select-bottom-sheet_radio___qvFFV_12-9-1{
47
+ .magritte-select-bottom-sheet_checkbox___hwTgo_12-9-2,
48
+ .magritte-select-bottom-sheet_radio___qvFFV_12-9-2{
49
49
  gap:12px;
50
50
  }
51
- .magritte-select-bottom-sheet_without-header___KOKVh_12-9-1{
51
+ .magritte-select-bottom-sheet_without-header___KOKVh_12-9-2{
52
52
  padding-top:16px;
53
53
  }
54
- .magritte-full-screen-placeholder___zPC8k_12-9-1{
54
+ .magritte-full-screen-placeholder___zPC8k_12-9-2{
55
55
  display:flex;
56
56
  flex-direction:column;
57
57
  align-items:center;
58
58
  height:100%;
59
59
  justify-content:center;
60
60
  }
61
- .magritte-error-wrapper___P7jYg_12-9-1{
61
+ .magritte-error-wrapper___P7jYg_12-9-2{
62
62
  height:100%;
63
63
  }
64
64
 
65
- .magritte-select-drop-container-wrapper___OHM0q_12-9-1{
65
+ .magritte-select-drop-container-wrapper___OHM0q_12-9-2{
66
66
  display:flex;
67
67
  flex-direction:column;
68
68
  }
69
- .magritte-select-drop-container___hee1p_12-9-1{
69
+ .magritte-select-drop-container___hee1p_12-9-2{
70
70
  display:flex;
71
71
  flex-direction:column;
72
72
  padding:12px;
73
73
  margin:calc(-1 * 12px);
74
74
  }
75
- .magritte-select-drop-container_plain___766zl_12-9-1{
75
+ .magritte-select-drop-container_plain___766zl_12-9-2{
76
76
  padding:24px;
77
77
  margin:calc(-1 * 24px);
78
78
  }
79
- .magritte-select-drop-container_with-footer___6wp-L_12-9-1{
79
+ .magritte-select-drop-container_with-footer___6wp-L_12-9-2{
80
80
  margin-bottom:0;
81
81
  padding-bottom:0;
82
82
  }
83
- .magritte-select-drop___jn4O-_12-9-1{
83
+ .magritte-select-drop___jn4O-_12-9-2{
84
84
  display:flex;
85
85
  flex-direction:column;
86
86
  gap:8px;
87
87
  }
88
- .magritte-select-drop-header___fMmio_12-9-1{
88
+ .magritte-select-drop-header___fMmio_12-9-2{
89
89
  display:flex;
90
90
  flex-direction:column;
91
91
  margin-bottom:8px;
92
92
  }
93
- .magritte-select-drop_plain___VL8Fz_12-9-1{
93
+ .magritte-select-drop_plain___VL8Fz_12-9-2{
94
94
  gap:16px;
95
95
  }
96
- .magritte-label-option___2N7t9_12-9-1{
96
+ .magritte-label-option___2N7t9_12-9-2{
97
97
  display:flex;
98
98
  justify-content:center;
99
99
  }
100
- .magritte-loading___AMiuq_12-9-1{
100
+ .magritte-loading___AMiuq_12-9-2{
101
101
  display:flex;
102
102
  align-items:center;
103
103
  height:150px;
104
104
  justify-content:center;
105
105
  }
106
- .magritte-hint___6qaFl_12-9-1{
106
+ .magritte-hint___6qaFl_12-9-2{
107
107
  display:flex;
108
108
  flex-direction:column;
109
109
  align-items:center;
@@ -111,24 +111,24 @@
111
111
  justify-content:center;
112
112
  }
113
113
 
114
- .magritte-select-modal-wrapper___5BhtC_12-9-1{
114
+ .magritte-select-modal-wrapper___5BhtC_12-9-2{
115
115
  display:flex;
116
116
  flex-direction:column;
117
117
  flex-grow:1;
118
118
  }
119
- .magritte-select-modal___f9wc6_12-9-1{
119
+ .magritte-select-modal___f9wc6_12-9-2{
120
120
  display:flex;
121
121
  flex-direction:column;
122
122
  gap:12px;
123
123
  }
124
- .magritte-select-modal_plain___0rP39_12-9-1{
124
+ .magritte-select-modal_plain___0rP39_12-9-2{
125
125
  gap:0;
126
126
  }
127
- .magritte-label-option___kFAuR_12-9-1{
127
+ .magritte-label-option___kFAuR_12-9-2{
128
128
  display:flex;
129
129
  justify-content:center;
130
130
  }
131
- .magritte-layer-full-height___cJX-K_12-9-1{
131
+ .magritte-layer-full-height___cJX-K_12-9-2{
132
132
  display:flex;
133
133
  flex-direction:column;
134
134
  align-items:center;
@@ -155,14 +155,14 @@
155
155
  --magritte-color-background-accent-secondary-v24-7-1:#F1F4F7;
156
156
  --magritte-color-icon-accent-v24-7-1:#7195AF;
157
157
  }
158
- .magritte-select-empty-hint___B39XJ_12-9-1{
158
+ .magritte-select-empty-hint___B39XJ_12-9-2{
159
159
  display:flex;
160
160
  flex-direction:column;
161
161
  justify-content:center;
162
162
  align-content:center;
163
163
  align-items:center;
164
164
  }
165
- .magritte-icon___F0GQx_12-9-1{
165
+ .magritte-icon___F0GQx_12-9-2{
166
166
  display:flex;
167
167
  align-items:center;
168
168
  justify-content:center;
@@ -170,11 +170,11 @@
170
170
  height:48px;
171
171
  border-radius:50%;
172
172
  }
173
- .magritte-icon-init___GWK-V_12-9-1{
173
+ .magritte-icon-init___GWK-V_12-9-2{
174
174
  background-color:var(--magritte-color-background-accent-secondary-v24-7-1);
175
175
  --magritte-ui-icon-color-override:var(--magritte-color-icon-accent-v24-7-1);
176
176
  }
177
- .magritte-icon-search___ZsqO-_12-9-1{
177
+ .magritte-icon-search___ZsqO-_12-9-2{
178
178
  background-color:var(--magritte-color-background-secondary-v24-7-1);
179
179
  --magritte-ui-icon-color-override:var(--magritte-color-icon-tertiary-v24-7-1);
180
180
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hh.ru/magritte-ui-select",
3
- "version": "12.9.1",
3
+ "version": "12.9.2",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "sideEffects": [
@@ -52,5 +52,5 @@
52
52
  "@hh.ru/magritte-ui-trigger": "4.3.22",
53
53
  "@hh.ru/magritte-ui-typography": "5.3.5"
54
54
  },
55
- "gitHead": "c13e22b473df1c42c30d787cef7f937e3c2a195f"
55
+ "gitHead": "b7495eb4f27e045e26f3f9a79784921b8f984438"
56
56
  }
@@ -1,5 +1,5 @@
1
1
  import './index.css';
2
- import { useState, useRef, useEffect } from 'react';
2
+ import { useState, useRef, useEffect, useCallback } from 'react';
3
3
 
4
4
  const useSelectOptionsList = (isMobile, pickerDesktopType) => {
5
5
  const [showOptions, setShowOptions] = useState(false);
@@ -33,8 +33,8 @@ const useSelectOptionsList = (isMobile, pickerDesktopType) => {
33
33
  document.removeEventListener('click', clickHandler, true);
34
34
  };
35
35
  }, [isMobile, optionsListRef, showOptions, pickerDesktopType]);
36
- const onOptionsListClose = () => setShowOptions(false);
37
- const toggleListVisibility = () => setShowOptions((showOptions) => !showOptions);
36
+ const onOptionsListClose = useCallback(() => setShowOptions(false), []);
37
+ const toggleListVisibility = useCallback(() => setShowOptions((showOptions) => !showOptions), []);
38
38
  return {
39
39
  activatorRef,
40
40
  optionsListRef,
@@ -1 +1 @@
1
- {"version":3,"file":"useSelectOptionsList.js","sources":["src/useSelectOptionsList.tsx"],"sourcesContent":["import { useState, useEffect, useRef, RefObject } from 'react';\n\nimport { PickerDesktopType } from '@hh.ru/magritte-ui-select/types';\n\ninterface UseSelectOptionsList {\n activatorRef: RefObject<HTMLDivElement>;\n optionsListRef: RefObject<HTMLElement>;\n onOptionsListClose: VoidFunction;\n toggleListVisibility: VoidFunction;\n showOptions: boolean;\n}\n\nexport const useSelectOptionsList = (isMobile: boolean, pickerDesktopType: PickerDesktopType): UseSelectOptionsList => {\n const [showOptions, setShowOptions] = useState(false);\n const activatorRef = useRef<HTMLDivElement>(null);\n const optionsListRef = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!showOptions || isMobile || pickerDesktopType === 'modal') {\n return void 0;\n }\n const isSelectContainsElement = (element: Node | null) => {\n return activatorRef.current?.contains(element) || optionsListRef.current?.contains(element);\n };\n const clickHandler = (event: MouseEvent) => {\n if (isSelectContainsElement(event.target as Node)) {\n return;\n }\n document.removeEventListener('click', clickHandler, true);\n setShowOptions(false);\n };\n const focusHandler = (event: FocusEvent) => {\n if (isSelectContainsElement(event.target as Node)) {\n return;\n }\n document.removeEventListener('focus', focusHandler, true);\n setShowOptions(false);\n };\n document.addEventListener('focus', focusHandler, true);\n document.addEventListener('click', clickHandler, true);\n return () => {\n document.removeEventListener('focus', focusHandler, true);\n document.removeEventListener('click', clickHandler, true);\n };\n }, [isMobile, optionsListRef, showOptions, pickerDesktopType]);\n\n const onOptionsListClose = () => setShowOptions(false);\n const toggleListVisibility = () => setShowOptions((showOptions) => !showOptions);\n\n return {\n activatorRef,\n optionsListRef,\n onOptionsListClose,\n toggleListVisibility,\n showOptions,\n };\n};\n"],"names":[],"mappings":";;MAYa,oBAAoB,GAAG,CAAC,QAAiB,EAAE,iBAAoC,KAA0B;IAClH,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtD,IAAA,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;AAClD,IAAA,MAAM,cAAc,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAEjD,SAAS,CAAC,MAAK;QACX,IAAI,CAAC,WAAW,IAAI,QAAQ,IAAI,iBAAiB,KAAK,OAAO,EAAE;YAC3D,OAAO,KAAK,CAAC,CAAC;SACjB;AACD,QAAA,MAAM,uBAAuB,GAAG,CAAC,OAAoB,KAAI;AACrD,YAAA,OAAO,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChG,SAAC,CAAC;AACF,QAAA,MAAM,YAAY,GAAG,CAAC,KAAiB,KAAI;AACvC,YAAA,IAAI,uBAAuB,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;gBAC/C,OAAO;aACV;YACD,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YAC1D,cAAc,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAC,CAAC;AACF,QAAA,MAAM,YAAY,GAAG,CAAC,KAAiB,KAAI;AACvC,YAAA,IAAI,uBAAuB,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;gBAC/C,OAAO;aACV;YACD,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YAC1D,cAAc,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QACvD,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AACvD,QAAA,OAAO,MAAK;YACR,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YAC1D,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AAC9D,SAAC,CAAC;KACL,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAE/D,MAAM,kBAAkB,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;AACvD,IAAA,MAAM,oBAAoB,GAAG,MAAM,cAAc,CAAC,CAAC,WAAW,KAAK,CAAC,WAAW,CAAC,CAAC;IAEjF,OAAO;QACH,YAAY;QACZ,cAAc;QACd,kBAAkB;QAClB,oBAAoB;QACpB,WAAW;KACd,CAAC;AACN;;;;"}
1
+ {"version":3,"file":"useSelectOptionsList.js","sources":["src/useSelectOptionsList.tsx"],"sourcesContent":["import { useState, useEffect, useRef, RefObject, useCallback } from 'react';\n\nimport { PickerDesktopType } from '@hh.ru/magritte-ui-select/types';\n\ninterface UseSelectOptionsList {\n activatorRef: RefObject<HTMLDivElement>;\n optionsListRef: RefObject<HTMLElement>;\n onOptionsListClose: VoidFunction;\n toggleListVisibility: VoidFunction;\n showOptions: boolean;\n}\n\nexport const useSelectOptionsList = (isMobile: boolean, pickerDesktopType: PickerDesktopType): UseSelectOptionsList => {\n const [showOptions, setShowOptions] = useState(false);\n const activatorRef = useRef<HTMLDivElement>(null);\n const optionsListRef = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!showOptions || isMobile || pickerDesktopType === 'modal') {\n return void 0;\n }\n const isSelectContainsElement = (element: Node | null) => {\n return activatorRef.current?.contains(element) || optionsListRef.current?.contains(element);\n };\n const clickHandler = (event: MouseEvent) => {\n if (isSelectContainsElement(event.target as Node)) {\n return;\n }\n document.removeEventListener('click', clickHandler, true);\n setShowOptions(false);\n };\n const focusHandler = (event: FocusEvent) => {\n if (isSelectContainsElement(event.target as Node)) {\n return;\n }\n document.removeEventListener('focus', focusHandler, true);\n setShowOptions(false);\n };\n document.addEventListener('focus', focusHandler, true);\n document.addEventListener('click', clickHandler, true);\n return () => {\n document.removeEventListener('focus', focusHandler, true);\n document.removeEventListener('click', clickHandler, true);\n };\n }, [isMobile, optionsListRef, showOptions, pickerDesktopType]);\n\n const onOptionsListClose = useCallback(() => setShowOptions(false), []);\n const toggleListVisibility = useCallback(() => setShowOptions((showOptions) => !showOptions), []);\n\n return {\n activatorRef,\n optionsListRef,\n onOptionsListClose,\n toggleListVisibility,\n showOptions,\n };\n};\n"],"names":[],"mappings":";;MAYa,oBAAoB,GAAG,CAAC,QAAiB,EAAE,iBAAoC,KAA0B;IAClH,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtD,IAAA,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;AAClD,IAAA,MAAM,cAAc,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAEjD,SAAS,CAAC,MAAK;QACX,IAAI,CAAC,WAAW,IAAI,QAAQ,IAAI,iBAAiB,KAAK,OAAO,EAAE;YAC3D,OAAO,KAAK,CAAC,CAAC;SACjB;AACD,QAAA,MAAM,uBAAuB,GAAG,CAAC,OAAoB,KAAI;AACrD,YAAA,OAAO,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChG,SAAC,CAAC;AACF,QAAA,MAAM,YAAY,GAAG,CAAC,KAAiB,KAAI;AACvC,YAAA,IAAI,uBAAuB,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;gBAC/C,OAAO;aACV;YACD,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YAC1D,cAAc,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAC,CAAC;AACF,QAAA,MAAM,YAAY,GAAG,CAAC,KAAiB,KAAI;AACvC,YAAA,IAAI,uBAAuB,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;gBAC/C,OAAO;aACV;YACD,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YAC1D,cAAc,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QACvD,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AACvD,QAAA,OAAO,MAAK;YACR,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YAC1D,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AAC9D,SAAC,CAAC;KACL,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAE/D,IAAA,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACxE,MAAM,oBAAoB,GAAG,WAAW,CAAC,MAAM,cAAc,CAAC,CAAC,WAAW,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IAElG,OAAO;QACH,YAAY;QACZ,cAAc;QACd,kBAAkB;QAClB,oBAAoB;QACpB,WAAW;KACd,CAAC;AACN;;;;"}