@consta/uikit 4.27.0 → 4.28.1
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/ChipsCanary/index.d.ts +1 -0
- package/ChipsCanary/index.js +1 -0
- package/__internal__/src/components/BadgeGroup/BadgeGroup.js +1 -1
- package/__internal__/src/components/BadgeGroup/BadgeGroup.js.map +1 -1
- package/__internal__/src/components/BadgeGroup/helper.d.ts +0 -1
- package/__internal__/src/components/BadgeGroup/helper.js +1 -1
- package/__internal__/src/components/BadgeGroup/helper.js.map +1 -1
- package/__internal__/src/components/Button/Button.css +1 -1
- package/__internal__/src/components/CheckboxGroup/CheckboxGroup.js +1 -1
- package/__internal__/src/components/CheckboxGroup/CheckboxGroup.js.map +1 -1
- package/__internal__/src/components/CheckboxGroup/helper.d.ts +3 -1
- package/__internal__/src/components/CheckboxGroup/helper.js +1 -1
- package/__internal__/src/components/CheckboxGroup/helper.js.map +1 -1
- package/__internal__/src/components/CheckboxGroup/types.d.ts +9 -1
- package/__internal__/src/components/CheckboxGroup/types.js.map +1 -1
- package/__internal__/src/components/ChipsCanary/Chips.css +1 -0
- package/__internal__/src/components/ChipsCanary/ChipsCanary.d.ts +3 -0
- package/__internal__/src/components/ChipsCanary/ChipsCanary.js +2 -0
- package/__internal__/src/components/ChipsCanary/ChipsCanary.js.map +1 -0
- package/__internal__/src/components/ChipsCanary/ChipsChoice/ChipsChoice.d.ts +4 -0
- package/__internal__/src/components/ChipsCanary/ChipsChoice/ChipsChoice.js +2 -0
- package/__internal__/src/components/ChipsCanary/ChipsChoice/ChipsChoice.js.map +1 -0
- package/__internal__/src/components/ChipsCanary/ChipsChoice/index.d.ts +2 -0
- package/__internal__/src/components/ChipsCanary/ChipsChoice/index.js +2 -0
- package/__internal__/src/components/ChipsCanary/ChipsChoice/index.js.map +1 -0
- package/__internal__/src/components/ChipsCanary/ChipsChoice/types.d.ts +29 -0
- package/__internal__/src/components/ChipsCanary/ChipsChoice/types.js +2 -0
- package/__internal__/src/components/ChipsCanary/ChipsChoice/types.js.map +1 -0
- package/__internal__/src/components/ChipsCanary/ChipsItem/ChipsItem.css +3 -0
- package/__internal__/src/components/ChipsCanary/ChipsItem/ChipsItem.d.ts +3 -0
- package/__internal__/src/components/ChipsCanary/ChipsItem/ChipsItem.js +2 -0
- package/__internal__/src/components/ChipsCanary/ChipsItem/ChipsItem.js.map +1 -0
- package/__internal__/src/components/ChipsCanary/ChipsItem/index.d.ts +1 -0
- package/__internal__/src/components/ChipsCanary/ChipsItem/index.js +2 -0
- package/__internal__/src/components/ChipsCanary/ChipsItem/index.js.map +1 -0
- package/__internal__/src/components/ChipsCanary/helpers.d.ts +39 -0
- package/__internal__/src/components/ChipsCanary/helpers.js +2 -0
- package/__internal__/src/components/ChipsCanary/helpers.js.map +1 -0
- package/__internal__/src/components/ChipsCanary/index.d.ts +4 -0
- package/__internal__/src/components/ChipsCanary/index.js +2 -0
- package/__internal__/src/components/ChipsCanary/index.js.map +1 -0
- package/__internal__/src/components/ChipsCanary/types.d.ts +62 -0
- package/__internal__/src/components/ChipsCanary/types.js +2 -0
- package/__internal__/src/components/ChipsCanary/types.js.map +1 -0
- package/__internal__/src/components/ChoiceGroup/ChoiceGroup.js +1 -1
- package/__internal__/src/components/ChoiceGroup/ChoiceGroup.js.map +1 -1
- package/__internal__/src/components/ChoiceGroup/Item/ChoiceGroup-Item.d.ts +7 -9
- package/__internal__/src/components/ChoiceGroup/Item/ChoiceGroup-Item.js +1 -1
- package/__internal__/src/components/ChoiceGroup/Item/ChoiceGroup-Item.js.map +1 -1
- package/__internal__/src/components/ChoiceGroup/helper.d.ts +3 -1
- package/__internal__/src/components/ChoiceGroup/helper.js +1 -1
- package/__internal__/src/components/ChoiceGroup/helper.js.map +1 -1
- package/__internal__/src/components/ChoiceGroup/types.d.ts +7 -1
- package/__internal__/src/components/ChoiceGroup/types.js.map +1 -1
- package/__internal__/src/components/ComboboxCanary/ComboboxCanary.js +1 -1
- package/__internal__/src/components/ComboboxCanary/ComboboxCanary.js.map +1 -1
- package/__internal__/src/components/ComboboxCanary/helpers.d.ts +4 -0
- package/__internal__/src/components/ComboboxCanary/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDate/DatePickerTypeDate.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDate/DatePickerTypeDate.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateRange/DatePickerTypeDateRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateRange/DatePickerTypeDateRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTime/DatePickerTypeDateTime.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTime/DatePickerTypeDateTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTimeRange/DatePickerTypeDateTimeRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTimeRange/DatePickerTypeDateTimeRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonth/DatePickerTypeMonth.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonth/DatePickerTypeMonth.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonthRange/DatePickerTypeMonthRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonthRange/DatePickerTypeMonthRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeTime/DatePickerTypeTime.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeTime/DatePickerTypeTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYear/DatePickerTypeYear.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYear/DatePickerTypeYear.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/useCalendarVisible.js +1 -1
- package/__internal__/src/components/DatePicker/useCalendarVisible.js.map +1 -1
- package/__internal__/src/components/EventInterceptor/propsHandlers/useTextFieldEventsHandler.d.ts +1 -54
- package/__internal__/src/components/ListCanary/ListCanary.js +1 -1
- package/__internal__/src/components/ListCanary/ListCanary.js.map +1 -1
- package/__internal__/src/components/ListCanary/index.d.ts +1 -0
- package/__internal__/src/components/ListCanary/index.js +1 -1
- package/__internal__/src/components/ListCanary/index.js.map +1 -1
- package/__internal__/src/components/ListCanary/renderHeader.d.ts +4 -0
- package/__internal__/src/components/ListCanary/renderHeader.js +2 -0
- package/__internal__/src/components/ListCanary/renderHeader.js.map +1 -0
- package/__internal__/src/components/SelectComponentsCanary/Select.css +1 -1
- package/__internal__/src/components/SelectComponentsCanary/useSelect/useSelect.d.ts +1 -0
- package/__internal__/src/components/SelectComponentsCanary/useSelect/useSelect.js +1 -1
- package/__internal__/src/components/SelectComponentsCanary/useSelect/useSelect.js.map +1 -1
- package/__internal__/src/components/TextField/types.d.ts +2 -2
- package/__internal__/src/components/TextField/types.js.map +1 -1
- package/__internal__/src/hooks/useChoiceGroup/useChoiceGroup.d.ts +2 -2
- package/__internal__/src/hooks/useChoiceGroup/useChoiceGroup.js.map +1 -1
- package/__internal__/src/hooks/useGlobalKeys/useGlobalKeys.d.ts +1 -1
- package/__internal__/src/hooks/useGlobalKeys/useGlobalKeys.js.map +1 -1
- package/__internal__/src/hooks/useKeysCanary/index.d.ts +1 -0
- package/__internal__/src/hooks/useKeysCanary/index.js +2 -0
- package/__internal__/src/hooks/useKeysCanary/index.js.map +1 -0
- package/__internal__/src/hooks/useKeysCanary/useKeysCanary.d.ts +12 -0
- package/__internal__/src/hooks/useKeysCanary/useKeysCanary.js +2 -0
- package/__internal__/src/hooks/useKeysCanary/useKeysCanary.js.map +1 -0
- package/__internal__/src/hooks/useKeysRef/useKeysRef.d.ts +2 -1
- package/__internal__/src/hooks/useKeysRef/useKeysRef.js +1 -1
- package/__internal__/src/hooks/useKeysRef/useKeysRef.js.map +1 -1
- package/__internal__/src/utils/stand.d.ts +1 -0
- package/__internal__/src/utils/stand.js +2 -0
- package/__internal__/src/utils/stand.js.map +1 -0
- package/package.json +1 -1
- package/useKeysCanary/index.d.ts +1 -0
- package/useKeysCanary/index.js +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSelect.js","names":["useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","useClickOutside","useDebounce","useKeys","useMutableRef","usePrevious","useRefs","getCountedGroups","getGroups","scrollToIndex","useHoistedState","isMultipleParams","params","multiple","isNotMultipleParams","actions","setOpen","setSearch","highlightIndex","initialState","searchValue","resolvedSearchValue","isOpen","highlightedIndex","scrollToHighlighted","isOptionForCreate","Object","prototype","hasOwnProperty","call","isNotOptionForCreate","isOptionForSelectAll","useSelect","items","dropdownRef","controlRef","disabled","getItemLabel","getItemKey","searchFunction","getItemGroupKey","groups","selectAll","getGroupKey","sortGroups","getItemDisabled","onFocus","onBlur","searchValueProp","onDropdownOpen","onSearchValueChange","dropdownOpen","ignoreOutsideClicksRefs","inputRef","isFocused","setIsFocused","value","Array","isArray","setState","onSearchValueChangeRef","searchFunctionDefault","item","toLocaleLowerCase","indexOf","fiteredOptions","filter","onCreate","length","label","__optionForCreate","filteredOptions","optionForCreate","visibleItems","resultGroups","maxHighlightIndex","optionsRefs","notFound","flag","group","hasItems","getSelectedOptionIndex","index","newIsOpen","old","setResolvedSearch","prevIsOpen","indexForHighlight","newIndex","Math","min","max","currentHighlightIndex","removeValue","e","valueItem","stopPropagation","newValue","onChange","some","onChangeAll","parametrs","nonDisabledItems","currentGroupValues","withoutGroupValues","forEach","el","find","push","clearValue","results","ArrowUp","_","preventDefault","ArrowDown","getKeyProps","PageUp","PageDown","Home","End","Enter","getData","couter","Escape","Tab","Backspace","isActive","ignoreClicksInsideRefs","handler","current","scrollTo","top","getOptionProps","keyPrefix","onClick","onMouseEnter","active","hovered","key","getItems","groupKey","handleInputFocus","handleInputBlur","focus","handleToggleDropdown","handleInputClick","handleInputChange","target","getHandleRemoveValue"],"sources":["../../../../../../src/components/SelectComponentsCanary/useSelect/useSelect.ts"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useClickOutside } from '##/hooks/useClickOutside';\nimport { useDebounce } from '##/hooks/useDebounce';\nimport { KeyHandler, useKeys } from '##/hooks/useKeys';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { usePrevious } from '##/hooks/usePrevious';\nimport { useRefs } from '##/hooks/useRefs';\nimport {\n CountedGroup,\n getCountedGroups,\n getGroups,\n SelectAllItem,\n} from '##/utils/getGroups';\n\nimport { scrollToIndex, useHoistedState } from './helpers';\n\ntype IndexForHighlight = number | ((oldIndex: number) => number);\n\ntype Group<ITEM, GROUP> = {\n items: ITEM[];\n key: string | number;\n group?: GROUP;\n};\ntype GetItemGroupKey<ITEM> = (item: ITEM) => string | number | undefined;\ntype GetGroupKey<GROUP> = (item: GROUP) => string | number | undefined;\ntype SortGroups<ITEM, GROUP> = (\n a: Group<ITEM, GROUP>,\n b: Group<ITEM, GROUP>,\n) => number;\n\ntype OnChangeProp<ITEM, MULTIPLE extends boolean> = (\n value: (MULTIPLE extends true ? ITEM[] : ITEM) | null,\n props: {\n e: React.SyntheticEvent;\n },\n) => void;\n\ntype ValueProp<ITEM, MULTIPLE extends boolean> =\n | (MULTIPLE extends true ? ITEM[] : ITEM)\n | null\n | undefined;\n\nexport type OptionForCreate = {\n label: string;\n __optionForCreate: boolean;\n};\n\nexport type SelectProps<ITEM, GROUP, MULTIPLE extends boolean> = {\n getItemGroupKey?: GetItemGroupKey<ITEM> | undefined;\n getGroupKey?: GetGroupKey<GROUP>;\n sortGroups?: SortGroups<ITEM, GROUP>;\n groups?: GROUP[];\n items: ITEM[];\n dropdownRef: React.MutableRefObject<HTMLDivElement | null>;\n controlRef: React.MutableRefObject<HTMLDivElement | null>;\n disabled?: boolean;\n selectAll?: boolean;\n getItemLabel: (item: ITEM) => string;\n getItemKey: (item: ITEM) => string | number;\n getItemDisabled?: (item: ITEM) => boolean | undefined;\n searchFunction?: (item: ITEM, searchValue: string) => boolean;\n onCreate?: (label: string, props: { e: React.SyntheticEvent }) => void;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n multiple: boolean;\n searchValue?: string;\n onChange: OnChangeProp<ITEM, MULTIPLE>;\n value: ValueProp<ITEM, MULTIPLE>;\n dropdownOpen?: boolean;\n onDropdownOpen?: (isOpen: boolean) => void;\n onSearchValueChange?: (value: string) => void;\n ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;\n};\n\nexport type OptionProps<ITEM> = {\n index: number;\n item: ITEM | OptionForCreate | SelectAllItem;\n keyPrefix: number;\n};\n\nexport type GetOptionPropsResult = {\n onClick: (e: React.SyntheticEvent) => void;\n onMouseEnter: (e: React.SyntheticEvent) => void;\n active: boolean;\n hovered: boolean;\n key: string | number;\n};\n\nconst isMultipleParams = <ITEM, GROUP>(\n params: SelectProps<ITEM, GROUP, boolean>,\n): params is SelectProps<ITEM, GROUP, true> => {\n return params.multiple;\n};\n\nconst isNotMultipleParams = <ITEM, GROUP>(\n params: SelectProps<ITEM, GROUP, boolean>,\n): params is SelectProps<ITEM, GROUP, false> => {\n return !params.multiple;\n};\n\nconst actions = {\n setOpen: 'setOpen',\n setSearch: 'setSearch',\n highlightIndex: 'highlightIndex',\n};\n\nconst initialState = {\n searchValue: '',\n resolvedSearchValue: '',\n isOpen: false,\n highlightedIndex: 0,\n scrollToHighlighted: false,\n};\n\nexport const isOptionForCreate = <ITEM, GROUP>(\n params: OptionForCreate | Group<ITEM, GROUP> | ITEM,\n): params is OptionForCreate => {\n return (\n params && Object.prototype.hasOwnProperty.call(params, '__optionForCreate')\n );\n};\n\nexport const isNotOptionForCreate = <ITEM, GROUP>(\n params: OptionForCreate | Group<ITEM, GROUP>,\n): params is Group<ITEM, GROUP> => {\n return (\n params && !Object.prototype.hasOwnProperty.call(params, '__optionForCreate')\n );\n};\n\nexport const isOptionForSelectAll = <ITEM>(\n params: SelectAllItem | ITEM,\n): params is SelectAllItem => {\n return (\n params && Object.prototype.hasOwnProperty.call(params, '__optionSelctAll')\n );\n};\n\nexport function useSelect<ITEM, GROUP, MULTIPLE extends boolean>(\n params: SelectProps<ITEM, GROUP, MULTIPLE>,\n) {\n const {\n items,\n dropdownRef,\n controlRef,\n disabled = false,\n multiple = false,\n getItemLabel,\n getItemKey,\n searchFunction,\n getItemGroupKey,\n groups,\n selectAll = false,\n getGroupKey,\n sortGroups,\n getItemDisabled,\n onFocus,\n onBlur,\n searchValue: searchValueProp,\n onDropdownOpen,\n onSearchValueChange,\n dropdownOpen,\n ignoreOutsideClicksRefs,\n } = params;\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const [isFocused, setIsFocused] = useState(false);\n\n const value = useMemo(\n () =>\n (params.value &&\n (Array.isArray(params.value) ? params.value : [params.value])) ||\n [],\n [params.value],\n );\n\n const [\n {\n searchValue,\n isOpen,\n highlightedIndex,\n resolvedSearchValue,\n scrollToHighlighted,\n },\n setState,\n ] = useHoistedState(initialState);\n\n const onSearchValueChangeRef = useMutableRef(onSearchValueChange);\n\n const searchFunctionDefault = (item: ITEM, searchValue: string) =>\n getItemLabel(item)\n .toLocaleLowerCase()\n .indexOf(searchValue.toLocaleLowerCase()) !== -1;\n\n const [filteredOptions, optionForCreate] = useMemo(() => {\n if (resolvedSearchValue && resolvedSearchValue !== '') {\n const fiteredOptions = items.filter((item) =>\n searchFunction\n ? searchFunction(item, resolvedSearchValue)\n : searchFunctionDefault(item, resolvedSearchValue),\n );\n\n const optionForCreate: OptionForCreate = {\n label: searchValue,\n __optionForCreate: true,\n };\n\n return [\n fiteredOptions,\n params.onCreate && !fiteredOptions.length ? optionForCreate : undefined,\n ] as const;\n }\n return [items, undefined] as const;\n }, [items, resolvedSearchValue]);\n\n const visibleItems = useMemo(() => {\n const resultGroups = getCountedGroups(\n getGroups(\n filteredOptions,\n groups?.length ? getItemGroupKey : undefined,\n groups,\n getGroupKey,\n sortGroups,\n ),\n isMultipleParams(params) ? params.value : [],\n selectAll,\n getItemKey,\n getItemDisabled,\n );\n\n return optionForCreate ? [optionForCreate, ...resultGroups] : resultGroups;\n }, [\n value,\n selectAll,\n filteredOptions,\n groups,\n getItemGroupKey,\n getItemDisabled,\n getGroupKey,\n sortGroups,\n optionForCreate,\n ]);\n\n const maxHighlightIndex =\n // колличество опций\n filteredOptions.length +\n // кнопка для создания\n (optionForCreate ? 1 : 0) +\n // кнопки выбрать все\n (selectAll ? visibleItems.length : 0);\n\n const optionsRefs = useRefs<HTMLDivElement>(maxHighlightIndex, [isOpen]);\n\n const notFound = useMemo(() => {\n let flag = false;\n if (searchValue.length > 0) {\n flag =\n visibleItems.filter(\n (group) =>\n isOptionForCreate(group) || group.items.length > 0 || group.group,\n ).length === 0 && !params.onCreate;\n }\n return flag;\n }, [visibleItems]);\n\n const hasItems = items.length !== 0;\n\n const getSelectedOptionIndex = (): number => {\n let index = 0;\n if (value.length > 0) {\n for (const group of visibleItems) {\n if (isOptionForCreate(group)) {\n index++;\n // eslint-disable-next-line no-continue\n continue;\n }\n for (const item of group.items) {\n if (isOptionForSelectAll(item)) {\n return index;\n }\n if (getItemKey(item) === getItemKey(value[0])) {\n return index;\n }\n index++;\n }\n }\n }\n\n return 0;\n };\n\n // Actions\n\n const setOpen = useCallback(\n (newIsOpen: boolean) => {\n setState(\n (old) => ({\n ...old,\n isOpen: newIsOpen,\n }),\n actions.setOpen,\n );\n },\n [setState],\n );\n\n const setResolvedSearch = useDebounce((value: string) => {\n setState((old) => {\n if (old.resolvedSearchValue === value) {\n return old;\n }\n return {\n ...old,\n resolvedSearchValue: value,\n };\n }, actions.setSearch);\n }, 300);\n\n const setSearch = useCallback(\n (value: string | undefined) => {\n setState((old) => {\n if (old.searchValue === value) {\n return old;\n }\n return {\n ...old,\n searchValue: value || '',\n };\n }, actions.setSearch);\n setResolvedSearch(value || '');\n },\n [setState, setResolvedSearch],\n );\n\n const prevIsOpen = usePrevious(isOpen);\n\n const highlightIndex = useCallback(\n (indexForHighlight: IndexForHighlight, scrollToHighlighted: boolean) => {\n setState((old) => {\n const newIndex = Math.min(\n Math.max(\n 0,\n typeof indexForHighlight === 'function'\n ? indexForHighlight(old.highlightedIndex)\n : indexForHighlight,\n ),\n maxHighlightIndex - 1,\n );\n\n if (old.highlightedIndex === newIndex) {\n return old;\n }\n\n return {\n ...old,\n highlightedIndex: newIndex,\n scrollToHighlighted,\n };\n }, actions.highlightIndex);\n },\n [filteredOptions, setState, optionForCreate],\n );\n\n useLayoutEffect(() => {\n if (value !== null && !prevIsOpen && isOpen) {\n const currentHighlightIndex = getSelectedOptionIndex();\n if (filteredOptions.length > 0) {\n scrollToIndex(currentHighlightIndex, dropdownRef, optionsRefs, () =>\n highlightIndex(0, false),\n );\n }\n }\n });\n\n const removeValue = (e: React.SyntheticEvent, valueItem: ITEM) => {\n e.stopPropagation();\n if (isMultipleParams(params)) {\n const newValue = params.value?.filter(\n (item) => getItemKey(item) !== getItemKey(valueItem),\n );\n params.onChange(newValue?.length ? newValue : null, {\n e,\n });\n }\n };\n\n const onChange = (e: React.SyntheticEvent, item: ITEM) => {\n if (getItemDisabled && getItemDisabled(item)) {\n return;\n }\n if (isMultipleParams(params)) {\n const newValue = value.some(\n (value) => getItemKey(value) === getItemKey(item),\n )\n ? value.filter((value) => getItemKey(value) !== getItemKey(item))\n : [...value, item];\n params.onChange(newValue.length ? newValue : null, { e });\n }\n if (isNotMultipleParams(params)) {\n params.onChange(item, { e });\n setOpen(false);\n setSearch('');\n }\n };\n\n const onChangeAll = (parametrs: {\n e: React.SyntheticEvent;\n items: ITEM[];\n }) => {\n const { e, items } = parametrs;\n if (isMultipleParams(params)) {\n const nonDisabledItems = getItemDisabled\n ? items.filter((item) => !getItemDisabled(item))\n : items;\n\n const currentGroupValues: ITEM[] = [];\n const withoutGroupValues: ITEM[] = [];\n value.forEach((el) => {\n if (\n nonDisabledItems.find((item) => getItemKey(el) === getItemKey(item))\n ) {\n currentGroupValues.push(el);\n } else {\n withoutGroupValues.push(el);\n }\n });\n if (currentGroupValues.length === nonDisabledItems.length) {\n params.onChange(withoutGroupValues, { e });\n } else {\n params.onChange([...withoutGroupValues, ...nonDisabledItems], {\n e,\n });\n }\n }\n };\n\n const onCreate = (e: React.SyntheticEvent, label: string) => {\n params.onCreate && params.onCreate(label, { e });\n setOpen(false);\n setSearch('');\n };\n\n // Handlers\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n if (!disabled && !(!multiple && value.length > 0)) {\n setSearch(e.target.value);\n setOpen(true);\n }\n };\n\n const handleInputClick = (): void => {\n !disabled && setOpen(!isOpen);\n\n if (multiple) {\n inputRef.current?.focus();\n }\n };\n\n const clearValue = (e: React.SyntheticEvent) => {\n if (isMultipleParams(params)) {\n const results = value?.filter((item) => getItemDisabled?.(item));\n params.onChange(results && results.length > 0 ? results : null, {\n e,\n });\n }\n if (isNotMultipleParams(params)) {\n params.onChange(null, { e });\n }\n setSearch('');\n };\n\n const getHandleRemoveValue = (item: ITEM) => (e: React.SyntheticEvent) =>\n removeValue(e, item);\n\n // Prop Getters\n\n const ArrowUp: KeyHandler = (_, e): void => {\n e.preventDefault();\n !disabled && setOpen(true);\n highlightIndex((old) => old - 1, true);\n };\n\n const ArrowDown: KeyHandler = (_, e): void => {\n e.preventDefault();\n !disabled && setOpen(true);\n highlightIndex((old) => old + 1, true);\n };\n\n const Enter: KeyHandler = (_, e): void => {\n if (isOpen) {\n if (searchValue || filteredOptions[highlightedIndex]) {\n e.preventDefault();\n }\n\n const getData = (\n index: number,\n ): [\n CountedGroup<ITEM, GROUP> | undefined,\n SelectAllItem | OptionForCreate | ITEM | undefined,\n ] => {\n let couter = 0;\n for (const group of visibleItems) {\n if (isOptionForCreate(group)) {\n couter++;\n return [undefined, group];\n }\n if (group.items.length + couter > index) {\n return [group, group.items[index - couter]];\n }\n couter += group.items.length;\n }\n return [undefined, undefined];\n };\n\n const [group, item] = getData(highlightedIndex);\n\n if (isOptionForCreate(item)) {\n onCreate(e, item.label);\n return;\n }\n\n if (isOptionForSelectAll(item)) {\n onChangeAll({\n e,\n items:\n (group?.items.filter(\n (el) => !isOptionForSelectAll(el),\n ) as ITEM[]) ?? [],\n });\n return;\n }\n\n if (item) {\n onChange(e, item);\n }\n } else {\n setOpen(true);\n }\n };\n\n const Escape: KeyHandler = (): void => {\n setOpen(false);\n };\n\n const Tab: KeyHandler = (_, e): void => {\n if (isOpen) {\n e.preventDefault();\n setOpen(false);\n }\n };\n\n const Backspace: KeyHandler = (_, e): void => {\n if (searchValue) {\n return;\n }\n if (multiple) {\n removeValue(e, value[value.length - 1]);\n } else {\n clearValue(e);\n }\n };\n\n const getKeyProps = useKeys({\n ArrowUp,\n ArrowDown,\n PageUp: ArrowUp,\n PageDown: ArrowDown,\n Home: ArrowUp,\n End: ArrowDown,\n Enter,\n Escape,\n Tab,\n Backspace,\n });\n\n const getOptionProps = ({\n index,\n item,\n keyPrefix,\n }: OptionProps<ITEM>): GetOptionPropsResult => {\n if (isOptionForCreate(item)) {\n return {\n onClick: (e: React.SyntheticEvent) => {\n onCreate(e, item.label);\n },\n onMouseEnter: () => {\n highlightIndex(index, false);\n },\n active: false,\n hovered: index === highlightedIndex,\n key: `${keyPrefix}__optionForCreate`,\n };\n }\n if (isOptionForSelectAll(item)) {\n const getItems = (): ITEM[] => {\n for (const group of visibleItems) {\n if (isOptionForCreate(group)) {\n break;\n }\n if (group.key === item.groupKey) {\n return (\n (group?.items.filter(\n (el) => !isOptionForSelectAll(el),\n ) as ITEM[]) ?? []\n );\n }\n }\n return [];\n };\n return {\n onClick: (e: React.SyntheticEvent) => {\n onChangeAll({ e, items: getItems() });\n },\n onMouseEnter: () => {\n highlightIndex(index, false);\n },\n active: false,\n hovered: index === highlightedIndex,\n key: `${keyPrefix}__optionForSelectAll`,\n };\n }\n const key = getItemKey(item);\n return {\n onClick: (e: React.SyntheticEvent) => {\n onChange(e, item);\n },\n onMouseEnter: () => {\n highlightIndex(index, false);\n },\n active: Boolean(value.find((item) => getItemKey(item) === key)),\n hovered: index === highlightedIndex,\n key: `${keyPrefix}${key}`,\n };\n };\n\n useClickOutside({\n isActive: isOpen,\n ignoreClicksInsideRefs: [\n dropdownRef,\n controlRef,\n ...(ignoreOutsideClicksRefs || []),\n ],\n handler: () => {\n setOpen(false);\n },\n });\n\n useEffect(() => {\n if (disabled) {\n setOpen(false);\n }\n }, [disabled]);\n\n useEffect(() => {\n const currentHighlightIndex = getSelectedOptionIndex();\n highlightIndex(currentHighlightIndex, true);\n }, [highlightIndex]);\n\n useEffect(() => {\n if (filteredOptions.length > 0 && scrollToHighlighted) {\n scrollToIndex(highlightedIndex, dropdownRef, optionsRefs, () =>\n highlightIndex(0, false),\n );\n }\n }, [highlightedIndex]);\n\n const handleInputFocus = (e: React.FocusEvent<HTMLInputElement>): void => {\n if (!disabled) {\n if (!isFocused) {\n setIsFocused(true);\n }\n if (typeof onFocus === 'function') {\n onFocus(e);\n }\n }\n };\n\n const handleInputBlur = (e: React.FocusEvent<HTMLInputElement>): void => {\n if (isOpen) {\n inputRef.current?.focus();\n return;\n }\n\n if (isFocused) {\n setIsFocused(false);\n }\n\n if (typeof onBlur === 'function') {\n onBlur(e);\n }\n };\n\n const handleToggleDropdown = (): void => {\n if (isOpen) {\n setOpen(false);\n setIsFocused(false);\n } else {\n setOpen(true);\n setIsFocused(true);\n inputRef.current?.focus();\n }\n };\n\n useEffect(() => {\n setSearch(searchValueProp);\n }, [searchValueProp]);\n\n useEffect(() => {\n dropdownRef.current?.scrollTo({ top: 0 });\n }, [resolvedSearchValue]);\n\n useEffect(() => {\n onDropdownOpen?.(isOpen);\n }, [isOpen]);\n\n useEffect(() => {\n onSearchValueChangeRef.current?.(searchValue);\n }, [searchValue]);\n\n useEffect(() => {\n setOpen(dropdownOpen || false);\n }, [dropdownOpen]);\n\n return {\n isOpen,\n isFocused,\n highlightedIndex,\n visibleItems,\n highlightIndex,\n getOptionProps,\n handleInputFocus,\n handleInputBlur,\n handleToggleDropdown,\n handleInputClick,\n inputRef,\n getKeyProps,\n handleInputChange,\n searchValue,\n clearValue,\n getHandleRemoveValue,\n notFound,\n hasItems,\n optionsRefs,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useSelect.js","names":["useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","useClickOutside","useDebounce","useKeys","useMutableRef","usePrevious","useRefs","getCountedGroups","getGroups","scrollToIndex","useHoistedState","isMultipleParams","params","multiple","isNotMultipleParams","actions","setOpen","setSearch","highlightIndex","initialState","searchValue","resolvedSearchValue","isOpen","highlightedIndex","scrollToHighlighted","isOptionForCreate","Object","prototype","hasOwnProperty","call","isNotOptionForCreate","isOptionForSelectAll","useSelect","items","dropdownRef","controlRef","disabled","getItemLabel","getItemKey","searchFunction","getItemGroupKey","groups","selectAll","getGroupKey","sortGroups","getItemDisabled","onFocus","onBlur","searchValueProp","onDropdownOpen","onSearchValueChange","dropdownOpen","ignoreOutsideClicksRefs","inputRef","isFocused","setIsFocused","value","Array","isArray","setState","onSearchValueChangeRef","searchFunctionDefault","item","toLocaleLowerCase","indexOf","fiteredOptions","filter","onCreate","length","label","__optionForCreate","filteredOptions","optionForCreate","visibleItems","resultGroups","maxHighlightIndex","optionsRefs","notFound","flag","group","hasItems","allItemsSelected","el","find","getSelectedOptionIndex","index","newIsOpen","old","setResolvedSearch","prevIsOpen","indexForHighlight","newIndex","Math","min","max","currentHighlightIndex","removeValue","e","valueItem","stopPropagation","newValue","onChange","some","onChangeAll","parametrs","nonDisabledItems","currentGroupValues","withoutGroupValues","forEach","push","clearValue","results","ArrowUp","_","preventDefault","ArrowDown","getKeyProps","PageUp","PageDown","Home","End","Enter","getData","couter","Escape","Tab","Backspace","isActive","ignoreClicksInsideRefs","handler","current","scrollTo","top","getOptionProps","keyPrefix","onClick","onMouseEnter","active","hovered","key","getItems","groupKey","handleInputFocus","handleInputBlur","focus","handleToggleDropdown","handleInputClick","handleInputChange","target","getHandleRemoveValue"],"sources":["../../../../../../src/components/SelectComponentsCanary/useSelect/useSelect.ts"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useClickOutside } from '##/hooks/useClickOutside';\nimport { useDebounce } from '##/hooks/useDebounce';\nimport { KeyHandler, useKeys } from '##/hooks/useKeys';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { usePrevious } from '##/hooks/usePrevious';\nimport { useRefs } from '##/hooks/useRefs';\nimport {\n CountedGroup,\n getCountedGroups,\n getGroups,\n SelectAllItem,\n} from '##/utils/getGroups';\n\nimport { scrollToIndex, useHoistedState } from './helpers';\n\ntype IndexForHighlight = number | ((oldIndex: number) => number);\n\ntype Group<ITEM, GROUP> = {\n items: ITEM[];\n key: string | number;\n group?: GROUP;\n};\ntype GetItemGroupKey<ITEM> = (item: ITEM) => string | number | undefined;\ntype GetGroupKey<GROUP> = (item: GROUP) => string | number | undefined;\ntype SortGroups<ITEM, GROUP> = (\n a: Group<ITEM, GROUP>,\n b: Group<ITEM, GROUP>,\n) => number;\n\ntype OnChangeProp<ITEM, MULTIPLE extends boolean> = (\n value: (MULTIPLE extends true ? ITEM[] : ITEM) | null,\n props: {\n e: React.SyntheticEvent;\n },\n) => void;\n\ntype ValueProp<ITEM, MULTIPLE extends boolean> =\n | (MULTIPLE extends true ? ITEM[] : ITEM)\n | null\n | undefined;\n\nexport type OptionForCreate = {\n label: string;\n __optionForCreate: boolean;\n};\n\nexport type SelectProps<ITEM, GROUP, MULTIPLE extends boolean> = {\n getItemGroupKey?: GetItemGroupKey<ITEM> | undefined;\n getGroupKey?: GetGroupKey<GROUP>;\n sortGroups?: SortGroups<ITEM, GROUP>;\n groups?: GROUP[];\n items: ITEM[];\n dropdownRef: React.MutableRefObject<HTMLDivElement | null>;\n controlRef: React.MutableRefObject<HTMLDivElement | null>;\n disabled?: boolean;\n selectAll?: boolean;\n getItemLabel: (item: ITEM) => string;\n getItemKey: (item: ITEM) => string | number;\n getItemDisabled?: (item: ITEM) => boolean | undefined;\n searchFunction?: (item: ITEM, searchValue: string) => boolean;\n onCreate?: (label: string, props: { e: React.SyntheticEvent }) => void;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n multiple: boolean;\n searchValue?: string;\n onChange: OnChangeProp<ITEM, MULTIPLE>;\n value: ValueProp<ITEM, MULTIPLE>;\n dropdownOpen?: boolean;\n onDropdownOpen?: (isOpen: boolean) => void;\n onSearchValueChange?: (value: string) => void;\n ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;\n};\n\nexport type OptionProps<ITEM> = {\n index: number;\n item: ITEM | OptionForCreate | SelectAllItem;\n keyPrefix: number;\n};\n\nexport type GetOptionPropsResult = {\n onClick: (e: React.SyntheticEvent) => void;\n onMouseEnter: (e: React.SyntheticEvent) => void;\n active: boolean;\n hovered: boolean;\n key: string | number;\n};\n\nconst isMultipleParams = <ITEM, GROUP>(\n params: SelectProps<ITEM, GROUP, boolean>,\n): params is SelectProps<ITEM, GROUP, true> => {\n return params.multiple;\n};\n\nconst isNotMultipleParams = <ITEM, GROUP>(\n params: SelectProps<ITEM, GROUP, boolean>,\n): params is SelectProps<ITEM, GROUP, false> => {\n return !params.multiple;\n};\n\nconst actions = {\n setOpen: 'setOpen',\n setSearch: 'setSearch',\n highlightIndex: 'highlightIndex',\n};\n\nconst initialState = {\n searchValue: '',\n resolvedSearchValue: '',\n isOpen: false,\n highlightedIndex: 0,\n scrollToHighlighted: false,\n};\n\nexport const isOptionForCreate = <ITEM, GROUP>(\n params: OptionForCreate | Group<ITEM, GROUP> | ITEM,\n): params is OptionForCreate => {\n return (\n params && Object.prototype.hasOwnProperty.call(params, '__optionForCreate')\n );\n};\n\nexport const isNotOptionForCreate = <ITEM, GROUP>(\n params: OptionForCreate | Group<ITEM, GROUP>,\n): params is Group<ITEM, GROUP> => {\n return (\n params && !Object.prototype.hasOwnProperty.call(params, '__optionForCreate')\n );\n};\n\nexport const isOptionForSelectAll = <ITEM>(\n params: SelectAllItem | ITEM,\n): params is SelectAllItem => {\n return (\n params && Object.prototype.hasOwnProperty.call(params, '__optionSelctAll')\n );\n};\n\nexport function useSelect<ITEM, GROUP, MULTIPLE extends boolean>(\n params: SelectProps<ITEM, GROUP, MULTIPLE>,\n) {\n const {\n items,\n dropdownRef,\n controlRef,\n disabled = false,\n multiple = false,\n getItemLabel,\n getItemKey,\n searchFunction,\n getItemGroupKey,\n groups,\n selectAll = false,\n getGroupKey,\n sortGroups,\n getItemDisabled,\n onFocus,\n onBlur,\n searchValue: searchValueProp,\n onDropdownOpen,\n onSearchValueChange,\n dropdownOpen,\n ignoreOutsideClicksRefs,\n } = params;\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const [isFocused, setIsFocused] = useState(false);\n\n const value = useMemo(\n () =>\n (params.value &&\n (Array.isArray(params.value) ? params.value : [params.value])) ||\n [],\n [params.value],\n );\n\n const [\n {\n searchValue,\n isOpen,\n highlightedIndex,\n resolvedSearchValue,\n scrollToHighlighted,\n },\n setState,\n ] = useHoistedState(initialState);\n\n const onSearchValueChangeRef = useMutableRef(onSearchValueChange);\n\n const searchFunctionDefault = (item: ITEM, searchValue: string) =>\n getItemLabel(item)\n .toLocaleLowerCase()\n .indexOf(searchValue.toLocaleLowerCase()) !== -1;\n\n const [filteredOptions, optionForCreate] = useMemo(() => {\n if (resolvedSearchValue && resolvedSearchValue !== '') {\n const fiteredOptions = items.filter((item) =>\n searchFunction\n ? searchFunction(item, resolvedSearchValue)\n : searchFunctionDefault(item, resolvedSearchValue),\n );\n\n const optionForCreate: OptionForCreate = {\n label: searchValue,\n __optionForCreate: true,\n };\n\n return [\n fiteredOptions,\n params.onCreate && !fiteredOptions.length ? optionForCreate : undefined,\n ] as const;\n }\n return [items, undefined] as const;\n }, [items, resolvedSearchValue]);\n\n const visibleItems = useMemo(() => {\n const resultGroups = getCountedGroups(\n getGroups(\n filteredOptions,\n groups?.length ? getItemGroupKey : undefined,\n groups,\n getGroupKey,\n sortGroups,\n ),\n isMultipleParams(params) ? params.value : [],\n selectAll,\n getItemKey,\n getItemDisabled,\n );\n\n return optionForCreate ? [optionForCreate, ...resultGroups] : resultGroups;\n }, [\n value,\n selectAll,\n filteredOptions,\n groups,\n getItemGroupKey,\n getItemDisabled,\n getGroupKey,\n sortGroups,\n optionForCreate,\n ]);\n\n const maxHighlightIndex =\n // колличество опций\n filteredOptions.length +\n // кнопка для создания\n (optionForCreate ? 1 : 0) +\n // кнопки выбрать все\n (selectAll ? visibleItems.length : 0);\n\n const optionsRefs = useRefs<HTMLDivElement>(maxHighlightIndex, [isOpen]);\n\n const notFound = useMemo(() => {\n let flag = false;\n if (searchValue.length > 0) {\n flag =\n visibleItems.filter(\n (group) =>\n isOptionForCreate(group) || group.items.length > 0 || group.group,\n ).length === 0 && !params.onCreate;\n }\n return flag;\n }, [visibleItems]);\n\n const hasItems = items.length !== 0;\n\n const allItemsSelected = useMemo(() => {\n if (isNotMultipleParams(params)) {\n return false;\n }\n if (selectAll) {\n return (\n items.filter((el) =>\n value.find((item) => getItemKey(item) === getItemKey(el)),\n ).length === items.length\n );\n }\n\n return false;\n }, [selectAll, multiple, value, items]);\n\n const getSelectedOptionIndex = (): number => {\n let index = 0;\n if (value.length > 0) {\n for (const group of visibleItems) {\n if (isOptionForCreate(group)) {\n index++;\n // eslint-disable-next-line no-continue\n continue;\n }\n for (const item of group.items) {\n if (isOptionForSelectAll(item)) {\n return index;\n }\n if (getItemKey(item) === getItemKey(value[0])) {\n return index;\n }\n index++;\n }\n }\n }\n\n return 0;\n };\n\n // Actions\n\n const setOpen = useCallback(\n (newIsOpen: boolean) => {\n setState(\n (old) => ({\n ...old,\n isOpen: newIsOpen,\n }),\n actions.setOpen,\n );\n },\n [setState],\n );\n\n const setResolvedSearch = useDebounce((value: string) => {\n setState((old) => {\n if (old.resolvedSearchValue === value) {\n return old;\n }\n return {\n ...old,\n resolvedSearchValue: value,\n };\n }, actions.setSearch);\n }, 300);\n\n const setSearch = useCallback(\n (value: string | undefined) => {\n setState((old) => {\n if (old.searchValue === value) {\n return old;\n }\n return {\n ...old,\n searchValue: value || '',\n };\n }, actions.setSearch);\n setResolvedSearch(value || '');\n },\n [setState, setResolvedSearch],\n );\n\n const prevIsOpen = usePrevious(isOpen);\n\n const highlightIndex = useCallback(\n (indexForHighlight: IndexForHighlight, scrollToHighlighted: boolean) => {\n setState((old) => {\n const newIndex = Math.min(\n Math.max(\n 0,\n typeof indexForHighlight === 'function'\n ? indexForHighlight(old.highlightedIndex)\n : indexForHighlight,\n ),\n maxHighlightIndex - 1,\n );\n\n if (old.highlightedIndex === newIndex) {\n return old;\n }\n\n return {\n ...old,\n highlightedIndex: newIndex,\n scrollToHighlighted,\n };\n }, actions.highlightIndex);\n },\n [filteredOptions, setState, optionForCreate],\n );\n\n useLayoutEffect(() => {\n if (value !== null && !prevIsOpen && isOpen) {\n const currentHighlightIndex = getSelectedOptionIndex();\n if (filteredOptions.length > 0) {\n scrollToIndex(currentHighlightIndex, dropdownRef, optionsRefs, () =>\n highlightIndex(0, false),\n );\n }\n }\n });\n\n const removeValue = (e: React.SyntheticEvent, valueItem: ITEM) => {\n e.stopPropagation();\n if (isMultipleParams(params)) {\n const newValue = params.value?.filter(\n (item) => getItemKey(item) !== getItemKey(valueItem),\n );\n params.onChange(newValue?.length ? newValue : null, {\n e,\n });\n }\n };\n\n const onChange = (e: React.SyntheticEvent, item: ITEM) => {\n if (getItemDisabled && getItemDisabled(item)) {\n return;\n }\n if (isMultipleParams(params)) {\n const newValue = value.some(\n (value) => getItemKey(value) === getItemKey(item),\n )\n ? value.filter((value) => getItemKey(value) !== getItemKey(item))\n : [...value, item];\n params.onChange(newValue.length ? newValue : null, { e });\n }\n if (isNotMultipleParams(params)) {\n params.onChange(item, { e });\n setOpen(false);\n setSearch('');\n }\n };\n\n const onChangeAll = (parametrs: {\n e: React.SyntheticEvent;\n items: ITEM[];\n }) => {\n const { e, items } = parametrs;\n if (isMultipleParams(params)) {\n const nonDisabledItems = getItemDisabled\n ? items.filter((item) => !getItemDisabled(item))\n : items;\n\n const currentGroupValues: ITEM[] = [];\n const withoutGroupValues: ITEM[] = [];\n value.forEach((el) => {\n if (\n nonDisabledItems.find((item) => getItemKey(el) === getItemKey(item))\n ) {\n currentGroupValues.push(el);\n } else {\n withoutGroupValues.push(el);\n }\n });\n if (currentGroupValues.length === nonDisabledItems.length) {\n params.onChange(withoutGroupValues, { e });\n } else {\n params.onChange([...withoutGroupValues, ...nonDisabledItems], {\n e,\n });\n }\n }\n };\n\n const onCreate = (e: React.SyntheticEvent, label: string) => {\n params.onCreate && params.onCreate(label, { e });\n setOpen(false);\n setSearch('');\n };\n\n // Handlers\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n if (!disabled && !(!multiple && value.length > 0)) {\n setSearch(e.target.value);\n setOpen(true);\n }\n };\n\n const handleInputClick = (): void => {\n !disabled && setOpen(!isOpen);\n\n if (multiple) {\n inputRef.current?.focus();\n }\n };\n\n const clearValue = (e: React.SyntheticEvent) => {\n if (isMultipleParams(params)) {\n const results = value?.filter((item) => getItemDisabled?.(item));\n params.onChange(results && results.length > 0 ? results : null, {\n e,\n });\n }\n if (isNotMultipleParams(params)) {\n params.onChange(null, { e });\n }\n setSearch('');\n };\n\n const getHandleRemoveValue = (item: ITEM) => (e: React.SyntheticEvent) =>\n removeValue(e, item);\n\n // Prop Getters\n\n const ArrowUp: KeyHandler = (_, e): void => {\n e.preventDefault();\n !disabled && setOpen(true);\n highlightIndex((old) => old - 1, true);\n };\n\n const ArrowDown: KeyHandler = (_, e): void => {\n e.preventDefault();\n !disabled && setOpen(true);\n highlightIndex((old) => old + 1, true);\n };\n\n const Enter: KeyHandler = (_, e): void => {\n if (isOpen) {\n if (searchValue || filteredOptions[highlightedIndex]) {\n e.preventDefault();\n }\n\n const getData = (\n index: number,\n ): [\n CountedGroup<ITEM, GROUP> | undefined,\n SelectAllItem | OptionForCreate | ITEM | undefined,\n ] => {\n let couter = 0;\n for (const group of visibleItems) {\n if (isOptionForCreate(group)) {\n couter++;\n return [undefined, group];\n }\n if (group.items.length + couter > index) {\n return [group, group.items[index - couter]];\n }\n couter += group.items.length;\n }\n return [undefined, undefined];\n };\n\n const [group, item] = getData(highlightedIndex);\n\n if (isOptionForCreate(item)) {\n onCreate(e, item.label);\n return;\n }\n\n if (isOptionForSelectAll(item)) {\n onChangeAll({\n e,\n items:\n (group?.items.filter(\n (el) => !isOptionForSelectAll(el),\n ) as ITEM[]) ?? [],\n });\n return;\n }\n\n if (item) {\n onChange(e, item);\n }\n } else {\n setOpen(true);\n }\n };\n\n const Escape: KeyHandler = (): void => {\n setOpen(false);\n };\n\n const Tab: KeyHandler = (_, e): void => {\n if (isOpen) {\n e.preventDefault();\n setOpen(false);\n }\n };\n\n const Backspace: KeyHandler = (_, e): void => {\n if (searchValue) {\n return;\n }\n if (multiple) {\n removeValue(e, value[value.length - 1]);\n } else {\n clearValue(e);\n }\n };\n\n const getKeyProps = useKeys({\n ArrowUp,\n ArrowDown,\n PageUp: ArrowUp,\n PageDown: ArrowDown,\n Home: ArrowUp,\n End: ArrowDown,\n Enter,\n Escape,\n Tab,\n Backspace,\n });\n\n const getOptionProps = ({\n index,\n item,\n keyPrefix,\n }: OptionProps<ITEM>): GetOptionPropsResult => {\n if (isOptionForCreate(item)) {\n return {\n onClick: (e: React.SyntheticEvent) => {\n onCreate(e, item.label);\n },\n onMouseEnter: () => {\n highlightIndex(index, false);\n },\n active: false,\n hovered: index === highlightedIndex,\n key: `${keyPrefix}__optionForCreate`,\n };\n }\n if (isOptionForSelectAll(item)) {\n const getItems = (): ITEM[] => {\n for (const group of visibleItems) {\n if (isOptionForCreate(group)) {\n break;\n }\n if (group.key === item.groupKey) {\n return (\n (group?.items.filter(\n (el) => !isOptionForSelectAll(el),\n ) as ITEM[]) ?? []\n );\n }\n }\n return [];\n };\n return {\n onClick: (e: React.SyntheticEvent) => {\n onChangeAll({ e, items: getItems() });\n },\n onMouseEnter: () => {\n highlightIndex(index, false);\n },\n active: false,\n hovered: index === highlightedIndex,\n key: `${keyPrefix}__optionForSelectAll`,\n };\n }\n const key = getItemKey(item);\n return {\n onClick: (e: React.SyntheticEvent) => {\n onChange(e, item);\n },\n onMouseEnter: () => {\n highlightIndex(index, false);\n },\n active: Boolean(value.find((item) => getItemKey(item) === key)),\n hovered: index === highlightedIndex,\n key: `${keyPrefix}${key}`,\n };\n };\n\n useClickOutside({\n isActive: isOpen,\n ignoreClicksInsideRefs: [\n dropdownRef,\n controlRef,\n ...(ignoreOutsideClicksRefs || []),\n ],\n handler: () => {\n setOpen(false);\n },\n });\n\n useEffect(() => {\n if (disabled) {\n setOpen(false);\n }\n }, [disabled]);\n\n useEffect(() => {\n const currentHighlightIndex = getSelectedOptionIndex();\n highlightIndex(currentHighlightIndex, true);\n }, [highlightIndex]);\n\n useEffect(() => {\n if (filteredOptions.length > 0 && scrollToHighlighted) {\n scrollToIndex(highlightedIndex, dropdownRef, optionsRefs, () =>\n highlightIndex(0, false),\n );\n }\n }, [highlightedIndex]);\n\n const handleInputFocus = (e: React.FocusEvent<HTMLInputElement>): void => {\n if (!disabled) {\n if (!isFocused) {\n setIsFocused(true);\n }\n if (typeof onFocus === 'function') {\n onFocus(e);\n }\n }\n };\n\n const handleInputBlur = (e: React.FocusEvent<HTMLInputElement>): void => {\n if (isOpen) {\n inputRef.current?.focus();\n return;\n }\n\n if (isFocused) {\n setIsFocused(false);\n }\n\n if (typeof onBlur === 'function') {\n onBlur(e);\n }\n };\n\n const handleToggleDropdown = (): void => {\n if (isOpen) {\n setOpen(false);\n setIsFocused(false);\n } else {\n setOpen(true);\n setIsFocused(true);\n inputRef.current?.focus();\n }\n };\n\n useEffect(() => {\n setSearch(searchValueProp);\n }, [searchValueProp]);\n\n useEffect(() => {\n dropdownRef.current?.scrollTo({ top: 0 });\n }, [resolvedSearchValue]);\n\n useEffect(() => {\n onDropdownOpen?.(isOpen);\n }, [isOpen]);\n\n useEffect(() => {\n onSearchValueChangeRef.current?.(searchValue);\n }, [searchValue]);\n\n useEffect(() => {\n setOpen(dropdownOpen || false);\n }, [dropdownOpen]);\n\n return {\n isOpen,\n isFocused,\n highlightedIndex,\n visibleItems,\n highlightIndex,\n getOptionProps,\n handleInputFocus,\n handleInputBlur,\n handleToggleDropdown,\n handleInputClick,\n inputRef,\n getKeyProps,\n handleInputChange,\n searchValue,\n clearValue,\n getHandleRemoveValue,\n notFound,\n hasItems,\n allItemsSelected,\n optionsRefs,\n };\n}\n"],"mappings":"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"}
|
|
@@ -91,5 +91,5 @@ export declare type TextFieldProps<TYPE extends string> = PropsWithHTMLAttribute
|
|
|
91
91
|
onKeyUp?: React.KeyboardEventHandler;
|
|
92
92
|
onKeyUpCapture?: React.KeyboardEventHandler;
|
|
93
93
|
onKeyDown?: React.KeyboardEventHandler;
|
|
94
|
-
}, HTMLDivElement> & TextFieldPropsTextareaType<TYPE> & TextFieldPropRightSide<TYPE>;
|
|
95
|
-
export declare type TextFieldComponent = <TYPE extends string>(props: TextFieldProps<TYPE>
|
|
94
|
+
}, HTMLDivElement> & TextFieldPropsTextareaType<TYPE> & TextFieldPropRightSide<TYPE> & React.RefAttributes<HTMLDivElement>;
|
|
95
|
+
export declare type TextFieldComponent = <TYPE extends string>(props: TextFieldProps<TYPE>) => React.ReactElement | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["textFieldPropSize","textFieldPropSizeDefault","textFieldPropView","textFieldPropViewDefault","textFieldPropForm","textFieldPropFormDefault","textFieldPropStatus","textFieldPropWidth","textFieldPropWidthDefault"],"sources":["../../../../../src/components/TextField/types.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { AutoCompete } from '../../utils/types/AutoComplete';\nimport { PropsWithHTMLAttributes } from '../../utils/types/PropsWithHTMLAttributes';\n\nexport type TextFieldPropValue = string | null;\nexport type TextFieldPropName = string;\nexport type TextFieldPropId = string | number;\n\nexport const textFieldPropSize = ['m', 'xs', 's', 'l'] as const;\nexport type TextFieldPropSize = typeof textFieldPropSize[number];\nexport const textFieldPropSizeDefault: TextFieldPropSize = textFieldPropSize[0];\n\nexport type TextFieldPropOnChange = (args: TextFieldOnChangeArguments) => void;\nexport type TextFieldOnChangeArguments = {\n e: React.ChangeEvent | React.MouseEvent | React.KeyboardEvent;\n id?: TextFieldPropId;\n name?: TextFieldPropName;\n value: TextFieldPropValue;\n};\n\nexport const textFieldPropView = ['default', 'clear'] as const;\nexport type TextFieldPropView = typeof textFieldPropView[number];\nexport const textFieldPropViewDefault: TextFieldPropView = textFieldPropView[0];\n\nexport const textFieldPropForm = [\n 'default',\n 'defaultClear',\n 'defaultBrick',\n 'brick',\n 'brickDefault',\n 'brickClear',\n 'brickRound',\n 'round',\n 'roundClear',\n 'roundBrick',\n 'clearRound',\n 'clearDefault',\n 'clearBrick',\n 'clearClear',\n] as const;\nexport type TextFieldPropForm = typeof textFieldPropForm[number];\nexport const textFieldPropFormDefault: TextFieldPropForm = textFieldPropForm[0];\n\nexport const textFieldPropStatus = ['alert', 'success', 'warning'] as const;\nexport type TextFieldPropStatus = typeof textFieldPropStatus[number];\n\nexport const textFieldPropWidth = ['default', 'full'] as const;\nexport type TextFieldPropWidth = typeof textFieldPropWidth[number];\nexport const textFieldPropWidthDefault: TextFieldPropWidth =\n textFieldPropWidth[0];\n\nexport type TextFieldPropsTextareaType<TYPE> = TYPE extends 'textarea'\n ?\n | {\n minRows?: never;\n maxRows?: never;\n rows?: number;\n }\n | {\n rows?: never;\n minRows?: number;\n maxRows?: number;\n }\n : {\n rows?: never;\n minRows?: never;\n maxRows?: never;\n };\n\nexport type TextFieldPropRightSide<TYPE extends string> = TYPE extends\n | 'number'\n | 'password'\n ? {\n rightSide?: never;\n }\n : {\n rightSide?: string | IconComponent;\n };\n\nexport type TextFieldProps<TYPE extends string> = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: TextFieldPropValue;\n cols?: number;\n onChange?: TextFieldPropOnChange;\n id?: TextFieldPropId;\n name?: TextFieldPropName;\n type?: TYPE;\n disabled?: boolean;\n maxLength?: number;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n state?: TextFieldPropStatus;\n status?: TextFieldPropStatus;\n width?: TextFieldPropWidth;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n incrementButtons?: boolean;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n withClearButton?: boolean;\n autoComplete?: AutoCompete;\n max?: number | string;\n min?: number | string;\n readOnly?: boolean;\n required?: boolean;\n step?: number | string | number[];\n tabIndex?: number;\n inputContainerRef?: React.Ref<HTMLDivElement>;\n inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n focused?: boolean;\n onKeyDownCapture?: React.KeyboardEventHandler;\n onKeyPress?: React.KeyboardEventHandler;\n onKeyPressCapture?: React.KeyboardEventHandler;\n onKeyUp?: React.KeyboardEventHandler;\n onKeyUpCapture?: React.KeyboardEventHandler;\n onKeyDown?: React.KeyboardEventHandler;\n },\n HTMLDivElement\n> &\n TextFieldPropsTextareaType<TYPE> &\n TextFieldPropRightSide<TYPE>;\n\nexport type TextFieldComponent = <TYPE extends string>(\n props: TextFieldProps<TYPE
|
|
1
|
+
{"version":3,"file":"types.js","names":["textFieldPropSize","textFieldPropSizeDefault","textFieldPropView","textFieldPropViewDefault","textFieldPropForm","textFieldPropFormDefault","textFieldPropStatus","textFieldPropWidth","textFieldPropWidthDefault"],"sources":["../../../../../src/components/TextField/types.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { AutoCompete } from '../../utils/types/AutoComplete';\nimport { PropsWithHTMLAttributes } from '../../utils/types/PropsWithHTMLAttributes';\n\nexport type TextFieldPropValue = string | null;\nexport type TextFieldPropName = string;\nexport type TextFieldPropId = string | number;\n\nexport const textFieldPropSize = ['m', 'xs', 's', 'l'] as const;\nexport type TextFieldPropSize = typeof textFieldPropSize[number];\nexport const textFieldPropSizeDefault: TextFieldPropSize = textFieldPropSize[0];\n\nexport type TextFieldPropOnChange = (args: TextFieldOnChangeArguments) => void;\nexport type TextFieldOnChangeArguments = {\n e: React.ChangeEvent | React.MouseEvent | React.KeyboardEvent;\n id?: TextFieldPropId;\n name?: TextFieldPropName;\n value: TextFieldPropValue;\n};\n\nexport const textFieldPropView = ['default', 'clear'] as const;\nexport type TextFieldPropView = typeof textFieldPropView[number];\nexport const textFieldPropViewDefault: TextFieldPropView = textFieldPropView[0];\n\nexport const textFieldPropForm = [\n 'default',\n 'defaultClear',\n 'defaultBrick',\n 'brick',\n 'brickDefault',\n 'brickClear',\n 'brickRound',\n 'round',\n 'roundClear',\n 'roundBrick',\n 'clearRound',\n 'clearDefault',\n 'clearBrick',\n 'clearClear',\n] as const;\nexport type TextFieldPropForm = typeof textFieldPropForm[number];\nexport const textFieldPropFormDefault: TextFieldPropForm = textFieldPropForm[0];\n\nexport const textFieldPropStatus = ['alert', 'success', 'warning'] as const;\nexport type TextFieldPropStatus = typeof textFieldPropStatus[number];\n\nexport const textFieldPropWidth = ['default', 'full'] as const;\nexport type TextFieldPropWidth = typeof textFieldPropWidth[number];\nexport const textFieldPropWidthDefault: TextFieldPropWidth =\n textFieldPropWidth[0];\n\nexport type TextFieldPropsTextareaType<TYPE> = TYPE extends 'textarea'\n ?\n | {\n minRows?: never;\n maxRows?: never;\n rows?: number;\n }\n | {\n rows?: never;\n minRows?: number;\n maxRows?: number;\n }\n : {\n rows?: never;\n minRows?: never;\n maxRows?: never;\n };\n\nexport type TextFieldPropRightSide<TYPE extends string> = TYPE extends\n | 'number'\n | 'password'\n ? {\n rightSide?: never;\n }\n : {\n rightSide?: string | IconComponent;\n };\n\nexport type TextFieldProps<TYPE extends string> = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: TextFieldPropValue;\n cols?: number;\n onChange?: TextFieldPropOnChange;\n id?: TextFieldPropId;\n name?: TextFieldPropName;\n type?: TYPE;\n disabled?: boolean;\n maxLength?: number;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n state?: TextFieldPropStatus;\n status?: TextFieldPropStatus;\n width?: TextFieldPropWidth;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n incrementButtons?: boolean;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n withClearButton?: boolean;\n autoComplete?: AutoCompete;\n max?: number | string;\n min?: number | string;\n readOnly?: boolean;\n required?: boolean;\n step?: number | string | number[];\n tabIndex?: number;\n inputContainerRef?: React.Ref<HTMLDivElement>;\n inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n focused?: boolean;\n onKeyDownCapture?: React.KeyboardEventHandler;\n onKeyPress?: React.KeyboardEventHandler;\n onKeyPressCapture?: React.KeyboardEventHandler;\n onKeyUp?: React.KeyboardEventHandler;\n onKeyUpCapture?: React.KeyboardEventHandler;\n onKeyDown?: React.KeyboardEventHandler;\n },\n HTMLDivElement\n> &\n TextFieldPropsTextareaType<TYPE> &\n TextFieldPropRightSide<TYPE> &\n React.RefAttributes<HTMLDivElement>;\n\nexport type TextFieldComponent = <TYPE extends string>(\n props: TextFieldProps<TYPE>,\n) => React.ReactElement | null;\n"],"mappings":"AAUA,MAAO,IAAMA,kBAAiB,CAAG,CAAC,GAAD,CAAM,IAAN,CAAY,GAAZ,CAAiB,GAAjB,CAA1B,CAEP,MAAO,IAAMC,yBAA2C,CAAGD,iBAAiB,CAAC,CAAD,CAArE,CAUP,MAAO,IAAME,kBAAiB,CAAG,CAAC,SAAD,CAAY,OAAZ,CAA1B,CAEP,MAAO,IAAMC,yBAA2C,CAAGD,iBAAiB,CAAC,CAAD,CAArE,CAEP,MAAO,IAAME,kBAAiB,CAAG,CAC/B,SAD+B,CAE/B,cAF+B,CAG/B,cAH+B,CAI/B,OAJ+B,CAK/B,cAL+B,CAM/B,YAN+B,CAO/B,YAP+B,CAQ/B,OAR+B,CAS/B,YAT+B,CAU/B,YAV+B,CAW/B,YAX+B,CAY/B,cAZ+B,CAa/B,YAb+B,CAc/B,YAd+B,CAA1B,CAiBP,MAAO,IAAMC,yBAA2C,CAAGD,iBAAiB,CAAC,CAAD,CAArE,CAEP,MAAO,IAAME,oBAAmB,CAAG,CAAC,OAAD,CAAU,SAAV,CAAqB,SAArB,CAA5B,CAGP,MAAO,IAAMC,mBAAkB,CAAG,CAAC,SAAD,CAAY,MAAZ,CAA3B,CAEP,MAAO,IAAMC,0BAA6C,CACxDD,kBAAkB,CAAC,CAAD,CADb"}
|
|
@@ -5,11 +5,11 @@ declare type UseChoiceGroupValues<ITEM, EVENT> = {
|
|
|
5
5
|
getOnChange: GetOnChange<ITEM, EVENT>;
|
|
6
6
|
getChecked: GetChecked<ITEM>;
|
|
7
7
|
};
|
|
8
|
-
declare type CallbackWithMultiple<ITEM, EVENT> = (props: {
|
|
8
|
+
export declare type CallbackWithMultiple<ITEM, EVENT> = (props: {
|
|
9
9
|
e: EVENT;
|
|
10
10
|
value: ITEM[] | null;
|
|
11
11
|
}) => void;
|
|
12
|
-
declare type CallbackWithoutMultiple<ITEM, EVENT> = (props: {
|
|
12
|
+
export declare type CallbackWithoutMultiple<ITEM, EVENT> = (props: {
|
|
13
13
|
e: EVENT;
|
|
14
14
|
value: ITEM;
|
|
15
15
|
}) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChoiceGroup.js","names":["isNotNil","isMultiple","params","multiple","isNotMultiple","formatValue","valueProp","getKey","valueByKey","Array","isArray","value","length","item","useChoiceGroup","props","formatedValue","getChecked","Object","prototype","hasOwnProperty","call","getOnChange","selectedItem","e","newValue","filter","push","callBack"],"sources":["../../../../../src/hooks/useChoiceGroup/useChoiceGroup.tsx"],"sourcesContent":["import { isNotNil } from '##/utils/type-guards';\n\ntype GetKey<ITEM> = (item: ITEM) => string | number;\n\ntype GetOnChange<ITEM, EVENT> = (item: ITEM) => (e: EVENT) => void;\n\ntype GetChecked<ITEM> = (item: ITEM) => boolean;\n\ntype UseChoiceGroupValues<ITEM, EVENT> = {\n getOnChange: GetOnChange<ITEM, EVENT>;\n getChecked: GetChecked<ITEM>;\n};\n\
|
|
1
|
+
{"version":3,"file":"useChoiceGroup.js","names":["isNotNil","isMultiple","params","multiple","isNotMultiple","formatValue","valueProp","getKey","valueByKey","Array","isArray","value","length","item","useChoiceGroup","props","formatedValue","getChecked","Object","prototype","hasOwnProperty","call","getOnChange","selectedItem","e","newValue","filter","push","callBack"],"sources":["../../../../../src/hooks/useChoiceGroup/useChoiceGroup.tsx"],"sourcesContent":["import { isNotNil } from '##/utils/type-guards';\n\ntype GetKey<ITEM> = (item: ITEM) => string | number;\n\ntype GetOnChange<ITEM, EVENT> = (item: ITEM) => (e: EVENT) => void;\n\ntype GetChecked<ITEM> = (item: ITEM) => boolean;\n\ntype UseChoiceGroupValues<ITEM, EVENT> = {\n getOnChange: GetOnChange<ITEM, EVENT>;\n getChecked: GetChecked<ITEM>;\n};\n\nexport type CallbackWithMultiple<ITEM, EVENT> = (props: {\n e: EVENT;\n value: ITEM[] | null;\n}) => void;\n\nexport type CallbackWithoutMultiple<ITEM, EVENT> = (props: {\n e: EVENT;\n value: ITEM;\n}) => void;\n\ntype PropsWithMultiple<ITEM, EVENT> = {\n multiple: true;\n value: ITEM[] | null;\n callBack: CallbackWithMultiple<ITEM, EVENT>;\n};\n\ntype PropsWithoutMultiple<ITEM, EVENT> = {\n multiple: false;\n value: ITEM | null;\n callBack: CallbackWithoutMultiple<ITEM, EVENT>;\n};\n\ntype CommonProps<ITEM> = {\n getKey: GetKey<ITEM>;\n};\n\ntype UseChoiceGroupProps<ITEM, EVENT> = CommonProps<ITEM> &\n (PropsWithMultiple<ITEM, EVENT> | PropsWithoutMultiple<ITEM, EVENT>);\n\ntype FormatedItems<ITEM> = { [value: string]: ITEM };\n\nfunction isMultiple<ITEM, EVENT>(\n params: UseChoiceGroupProps<ITEM, EVENT>,\n): params is CommonProps<ITEM> & PropsWithMultiple<ITEM, EVENT> {\n return params.multiple;\n}\n\nfunction isNotMultiple<ITEM, EVENT>(\n params: UseChoiceGroupProps<ITEM, EVENT>,\n): params is CommonProps<ITEM> & PropsWithoutMultiple<ITEM, EVENT> {\n return !params.multiple;\n}\n\nfunction formatValue<ITEM>(\n valueProp: ITEM | ITEM[] | null,\n getKey: GetKey<ITEM>,\n multiple?: boolean,\n) {\n const valueByKey: FormatedItems<ITEM> = {};\n if (!isNotNil(valueProp) && !Array.isArray(valueProp)) {\n return valueByKey;\n }\n const value = multiple ? (valueProp as ITEM[]) : [valueProp as ITEM];\n if (value && value.length > 0) {\n for (const item of value) {\n valueByKey[getKey(item)] = item;\n }\n }\n return valueByKey;\n}\n\nexport function useChoiceGroup<ITEM, EVENT>(\n props: UseChoiceGroupProps<ITEM, EVENT>,\n): UseChoiceGroupValues<ITEM, EVENT> {\n const formatedValue = formatValue(props.value, props.getKey, props.multiple);\n\n const getChecked: GetChecked<ITEM> = (item) =>\n Object.prototype.hasOwnProperty.call(formatedValue, props.getKey(item));\n\n const getOnChange: GetOnChange<ITEM, EVENT> = (selectedItem) => (e) => {\n if (isMultiple(props)) {\n let newValue: ITEM[] | null;\n\n if (getChecked(selectedItem)) {\n const value = props.value || [];\n newValue = value.filter(\n (item) => props.getKey(item) !== props.getKey(selectedItem),\n );\n if (newValue.length === 0) {\n newValue = null;\n }\n } else {\n newValue = props.value ? [...props.value] : [];\n newValue.push(selectedItem);\n }\n props.callBack({ e, value: newValue });\n }\n\n if (isNotMultiple(props)) {\n props.callBack({ e, value: selectedItem });\n }\n };\n\n return {\n getOnChange,\n getChecked,\n };\n}\n"],"mappings":"s7CAAA,OAASA,QAAT,+BA4CA,QAASC,WAAT,CACEC,CADF,CAEgE,CAC9D,MAAOA,EAAM,CAACC,QACf,CAED,QAASC,cAAT,CACEF,CADF,CAEmE,CACjE,MAAO,CAACA,CAAM,CAACC,QAChB,CAED,QAASE,YAAT,CACEC,CADF,CAEEC,CAFF,CAGEJ,CAHF,CAIE,CACA,GAAMK,EAA+B,CAAG,EAAxC,CACA,GAAI,CAACR,QAAQ,CAACM,CAAD,CAAT,EAAwB,CAACG,KAAK,CAACC,OAAN,CAAcJ,CAAd,CAA7B,CACE,MAAOE,EAAP,CAEF,GAAMG,EAAK,CAAGR,CAAQ,CAAIG,CAAJ,CAA2B,CAACA,CAAD,CAAjD,CACA,GAAIK,CAAK,EAAmB,CAAf,CAAAA,CAAK,CAACC,MAAnB,CAA+B,oCACVD,CADU,MAC7B,2BAA0B,IAAfE,EAAe,SACxBL,CAAU,CAACD,CAAM,CAACM,CAAD,CAAP,CAAV,CAA2BA,CAC5B,CAH4B,+BAI9B,CACD,MAAOL,EACR,CAED,MAAO,SAASM,eAAT,CACLC,CADK,CAE8B,IAC7BC,EAAa,CAAGX,WAAW,CAACU,CAAK,CAACJ,KAAP,CAAcI,CAAK,CAACR,MAApB,CAA4BQ,CAAK,CAACZ,QAAlC,CADE,CAG7Bc,CAA4B,CAAG,SAACJ,CAAD,QACnCK,OAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCL,CAArC,CAAoDD,CAAK,CAACR,MAAN,CAAaM,CAAb,CAApD,CADmC,CAHF,CA8BnC,MAAO,CACLS,WAAW,CAzBiC,QAAxCA,YAAwC,CAACC,CAAD,QAAkB,UAACC,CAAD,CAAO,CACrE,GAAIvB,UAAU,CAACc,CAAD,CAAd,CAAuB,CACrB,GAAIU,EAAJ,CAEA,GAAIR,CAAU,CAACM,CAAD,CAAd,CAA8B,CAC5B,GAAMZ,EAAK,CAAGI,CAAK,CAACJ,KAAN,EAAe,EAA7B,CACAc,CAAQ,CAAGd,CAAK,CAACe,MAAN,CACT,SAACb,CAAD,QAAUE,EAAK,CAACR,MAAN,CAAaM,CAAb,IAAuBE,CAAK,CAACR,MAAN,CAAagB,CAAb,CAAjC,CADS,CAFiB,CAKJ,CAApB,GAAAE,CAAQ,CAACb,MALe,GAM1Ba,CAAQ,CAAG,IANe,CAQ7B,CARD,IASEA,EAAQ,CAAGV,CAAK,CAACJ,KAAN,oBAAkBI,CAAK,CAACJ,KAAxB,EAAiC,EAT9C,CAUEc,CAAQ,CAACE,IAAT,CAAcJ,CAAd,CAVF,CAYAR,CAAK,CAACa,QAAN,CAAe,CAAEJ,CAAC,CAADA,CAAF,CAAKb,KAAK,CAAEc,CAAZ,CAAf,CACD,CAEGrB,aAAa,CAACW,CAAD,CAnBoD,EAoBnEA,CAAK,CAACa,QAAN,CAAe,CAAEJ,CAAC,CAADA,CAAF,CAAKb,KAAK,CAAEY,CAAZ,CAAf,CAEH,CAtB6C,CAwBvC,CAELN,UAAU,CAAVA,CAFK,CAIR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGlobalKeys.js","names":["useEffect","useRef","useGlobalKeys","keyHandlers","eventType","keyHandlersRef","current","handler","e","userHandler","code","key","document","addEventListener","removeEventListener"],"sources":["../../../../../src/hooks/useGlobalKeys/useGlobalKeys.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { KeyCode } from '
|
|
1
|
+
{"version":3,"file":"useGlobalKeys.js","names":["useEffect","useRef","useGlobalKeys","keyHandlers","eventType","keyHandlersRef","current","handler","e","userHandler","code","key","document","addEventListener","removeEventListener"],"sources":["../../../../../src/hooks/useGlobalKeys/useGlobalKeys.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { KeyCode } from '##/utils/types/KeyCode';\n\nexport type KeyHandlers = Partial<\n Record<KeyCode, (e: KeyboardEvent) => void>\n> & {\n [key: string]: (e: KeyboardEvent) => void;\n};\n\nexport type EventType = 'keyup' | 'keydown';\n\nexport const useGlobalKeys = (\n keyHandlers: KeyHandlers,\n eventType: EventType = 'keyup',\n) => {\n const keyHandlersRef = useRef<KeyHandlers>({});\n\n useEffect(() => {\n keyHandlersRef.current = keyHandlers;\n }, [keyHandlers]);\n\n useEffect(() => {\n const handler = (e: KeyboardEvent) => {\n const { current } = keyHandlersRef;\n\n const userHandler =\n current[e.code as KeyCode] || current[e.key as KeyCode];\n userHandler && userHandler(e);\n };\n\n document.addEventListener(eventType, handler);\n\n return () => {\n document.removeEventListener(eventType, handler);\n };\n }, [eventType]);\n};\n"],"mappings":"AAAA,OAASA,SAAT,CAAoBC,MAApB,KAAkC,OAAlC,CAYA,MAAO,IAAMC,cAAa,CAAG,SAC3BC,CAD2B,CAGxB,IADHC,EACG,wDADoB,OACpB,CACGC,CAAc,CAAGJ,MAAM,CAAc,EAAd,CAD1B,CAGHD,SAAS,CAAC,UAAM,CACdK,CAAc,CAACC,OAAf,CAAyBH,CAC1B,CAFQ,CAEN,CAACA,CAAD,CAFM,CAHN,CAOHH,SAAS,CAAC,UAAM,CACd,GAAMO,EAAO,CAAG,SAACC,CAAD,CAAsB,IAC5BF,EAD4B,CAChBD,CADgB,CAC5BC,OAD4B,CAG9BG,CAAW,CACfH,CAAO,CAACE,CAAC,CAACE,IAAH,CAAP,EAA8BJ,CAAO,CAACE,CAAC,CAACG,GAAH,CAJH,CAKpCF,CAAW,EAAIA,CAAW,CAACD,CAAD,CAC3B,CAND,CAUA,MAFAI,SAAQ,CAACC,gBAAT,CAA0BT,CAA1B,CAAqCG,CAArC,CAEA,CAAO,UAAM,CACXK,QAAQ,CAACE,mBAAT,CAA6BV,CAA7B,CAAwCG,CAAxC,CACD,CACF,CAdQ,CAcN,CAACH,CAAD,CAdM,CAeV,CAzBM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useKeysCanary';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/hooks/useKeysCanary/index.ts"],"sourcesContent":["export * from './useKeysCanary';\n"],"mappings":"AAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { KeyCode } from "../../utils/types/KeyCode";
|
|
3
|
+
declare type KeyHandlers = Partial<Record<KeyCode, React.KeyboardEventHandler>> & {
|
|
4
|
+
[key: string]: React.KeyboardEventHandler;
|
|
5
|
+
};
|
|
6
|
+
declare type UseKeysProps = {
|
|
7
|
+
keys: KeyHandlers;
|
|
8
|
+
onEvent?: React.KeyboardEventHandler;
|
|
9
|
+
isActive: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare const useKeys: (props: UseKeysProps) => React.KeyboardEventHandler;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useCallback}from"react";import{useMutableRef}from"../useMutableRef";export var useKeys=function(a){var b=useMutableRef(a);return useCallback(function(a){var c=b.current,d=c.isActive,e=c.keys,f=c.onEvent;if(d){var g;null===(g=e[a.code]||e[a.key])||void 0===g?void 0:g(a)}null===f||void 0===f?void 0:f(a)},[])};
|
|
2
|
+
//# sourceMappingURL=useKeysCanary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useKeysCanary.js","names":["useCallback","useMutableRef","useKeys","props","propsRef","e","current","isActive","keys","onEvent","code","key"],"sources":["../../../../../src/hooks/useKeysCanary/useKeysCanary.ts"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { KeyCode } from '##/utils/types/KeyCode';\n\ntype KeyHandlers = Partial<Record<KeyCode, React.KeyboardEventHandler>> & {\n [key: string]: React.KeyboardEventHandler;\n};\n\ntype UseKeysProps = {\n keys: KeyHandlers;\n onEvent?: React.KeyboardEventHandler;\n isActive: boolean;\n};\n\nexport const useKeys = (props: UseKeysProps): React.KeyboardEventHandler => {\n const propsRef = useMutableRef(props);\n return useCallback((e) => {\n const { isActive, keys, onEvent } = propsRef.current;\n if (isActive) {\n (keys[e.code as KeyCode] || keys[e.key as KeyCode])?.(e);\n }\n onEvent?.(e);\n }, []);\n};\n"],"mappings":"AAAA,OAASA,WAAT,KAA4B,OAA5B,CAEA,OAASC,aAAT,wBAaA,MAAO,IAAMC,QAAO,CAAG,SAACC,CAAD,CAAqD,CAC1E,GAAMC,EAAQ,CAAGH,aAAa,CAACE,CAAD,CAA9B,CACA,MAAOH,YAAW,CAAC,SAACK,CAAD,CAAO,CACxB,MAAoCD,CAAQ,CAACE,OAA7C,CAAQC,CAAR,GAAQA,QAAR,CAAkBC,CAAlB,GAAkBA,IAAlB,CAAwBC,CAAxB,GAAwBA,OAAxB,CACA,GAAIF,CAAJ,CAAc,iBACXC,CAAI,CAACH,CAAC,CAACK,IAAH,CAAJ,EAA2BF,CAAI,CAACH,CAAC,CAACM,GAAH,CADpB,qBACZ,EAAsDN,CAAtD,CACD,CAJuB,OAKxBI,CALwB,WAKxBA,CALwB,QAKxBA,CAAO,CAAGJ,CAAH,CACR,CANiB,CAMf,EANe,CAOnB,CATM"}
|
|
@@ -5,8 +5,9 @@ export declare type KeyHandlers = Partial<Record<KeyCode, (e: KeyboardEvent) =>
|
|
|
5
5
|
};
|
|
6
6
|
declare type UseKeysProps = {
|
|
7
7
|
ref?: React.RefObject<HTMLElement>;
|
|
8
|
-
keys
|
|
8
|
+
keys: KeyHandlers;
|
|
9
9
|
isActive?: boolean;
|
|
10
|
+
eventHandler?: (event: KeyboardEvent) => void;
|
|
10
11
|
eventType?: 'keypress' | 'keydown' | 'keyup';
|
|
11
12
|
};
|
|
12
13
|
export declare const useKeysRef: (params: UseKeysProps) => void;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{useEffect}from"react";import{useMutableRef}from"../useMutableRef";export var useKeysRef=function(a){var b=a.ref,c=a.keys,d=a.isActive,e=a.eventType,f=void 0===e?"keydown":e,g=useMutableRef(function(a){if(void 0!==d&&d){var b;null===(b=c[a.code]||c[a.key])||void 0===b?void 0:b(a)}});useEffect(function(){var a;return null===b||void 0===b||null===(a=b.current)||void 0===a?void 0:a.addEventListener(f,g.current),function(){var a;null===b||void 0===b||null===(a=b.current)||void 0===a?void 0:a.removeEventListener(f,g.current)}},[null===b||void 0===b?void 0:b.current,f])};
|
|
2
2
|
//# sourceMappingURL=useKeysRef.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useKeysRef.js","names":["
|
|
1
|
+
{"version":3,"file":"useKeysRef.js","names":["useEffect","useMutableRef","useKeysRef","params","ref","keys","isActive","eventType","fn","e","code","key","current","addEventListener","removeEventListener"],"sources":["../../../../../src/hooks/useKeysRef/useKeysRef.ts"],"sourcesContent":["import React, { useEffect } from 'react';\n\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { KeyCode } from '##/utils/types/KeyCode';\n\nexport type KeyHandlers = Partial<\n Record<KeyCode, (e: KeyboardEvent) => void>\n> & {\n [key: string]: (e: KeyboardEvent) => void;\n};\n\ntype UseKeysProps = {\n ref?: React.RefObject<HTMLElement>;\n keys: KeyHandlers;\n isActive?: boolean;\n eventHandler?: (event: KeyboardEvent) => void;\n eventType?: 'keypress' | 'keydown' | 'keyup';\n};\n\nexport const useKeysRef = (params: UseKeysProps) => {\n const { ref, keys, isActive = false, eventType = 'keydown' } = params;\n\n const fn = useMutableRef((e: KeyboardEvent) => {\n if (isActive) {\n (keys[e.code as KeyCode] || keys[e.key as KeyCode])?.(e);\n }\n });\n\n useEffect(() => {\n ref?.current?.addEventListener(eventType, fn.current);\n\n return () => {\n ref?.current?.removeEventListener(eventType, fn.current);\n };\n }, [ref?.current, eventType]);\n};\n"],"mappings":"AAAA,OAAgBA,SAAhB,KAAiC,OAAjC,CAEA,OAASC,aAAT,wBAiBA,MAAO,IAAMC,WAAU,CAAG,SAACC,CAAD,CAA0B,IAC1CC,EAD0C,CACaD,CADb,CAC1CC,GAD0C,CACrCC,CADqC,CACaF,CADb,CACrCE,IADqC,GACaF,CADb,CAC/BG,QAD+B,GACaH,CADb,CACbI,SADa,CACbA,CADa,YACD,SADC,GAG5CC,CAAE,CAAGP,aAAa,CAAC,SAACQ,CAAD,CAAsB,CAC7C,iBAAc,iBACXJ,CAAI,CAACI,CAAC,CAACC,IAAH,CAAJ,EAA2BL,CAAI,CAACI,CAAC,CAACE,GAAH,CADpB,qBACZ,EAAsDF,CAAtD,CACD,CACF,CAJuB,CAH0B,CASlDT,SAAS,CAAC,UAAM,OAGd,cAFAI,CAEA,WAFAA,CAEA,YAFAA,CAAG,CAAEQ,OAEL,qBAFA,EAAcC,gBAAd,CAA+BN,CAA/B,CAA0CC,CAAE,CAACI,OAA7C,CAEA,CAAO,UAAM,cACXR,CADW,WACXA,CADW,YACXA,CAAG,CAAEQ,OADM,qBACX,EAAcE,mBAAd,CAAkCP,CAAlC,CAA6CC,CAAE,CAACI,OAAhD,CACD,CACF,CANQ,CAMN,QAACR,CAAD,WAACA,CAAD,QAACA,CAAG,CAAEQ,OAAN,CAAeL,CAAf,CANM,CAOV,CAhBM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useDefaultGetter: (name: string, value?: boolean, isActive?: boolean) => (() => undefined) | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stand.js","names":["useBoolean","getUndefined","useDefaultGetter","name","value","isActive"],"sources":["../../../../src/utils/stand.ts"],"sourcesContent":["import { useBoolean } from '@consta/stand';\n\nconst getUndefined = () => undefined;\n\nexport const useDefaultGetter = (\n name: string,\n value?: boolean,\n isActive?: boolean,\n) => (useBoolean(name, value, isActive) ? undefined : getUndefined);\n"],"mappings":"AAAA,OAASA,UAAT,KAA2B,eAA3B,CAEA,GAAMC,aAAY,CAAG,YAArB,CAEA,MAAO,IAAMC,iBAAgB,CAAG,SAC9BC,CAD8B,CAE9BC,CAF8B,CAG9BC,CAH8B,QAI1BL,WAAU,CAACG,CAAD,CAAOC,CAAP,CAAcC,CAAd,CAAV,QAAgDJ,YAJtB,CAAzB"}
|
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../__internal__/src/hooks/useKeysCanary";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../__internal__/src/hooks/useKeysCanary";
|