MCPcopy Index your code
hub / github.com/JedWatson/react-select / useStateManager

Function useStateManager

packages/react-select/src/useStateManager.ts:40–121  ·  view source on GitHub ↗
({
  defaultInputValue = '',
  defaultMenuIsOpen = false,
  defaultValue = null,
  inputValue: propsInputValue,
  menuIsOpen: propsMenuIsOpen,
  onChange: propsOnChange,
  onInputChange: propsOnInputChange,
  onMenuClose: propsOnMenuClose,
  onMenuOpen: propsOnMenuOpen,
  value: propsValue,
  ...restSelectProps
}: StateManagerProps<Option, IsMulti, Group> &
  AdditionalProps)

Source from the content-addressed store, hash-verified

38 StateManagerAdditionalProps<Option>;
39
40export default function useStateManager<
41 Option,
42 IsMulti extends boolean,
43 Group extends GroupBase<Option>,
44 AdditionalProps
45>({
46 defaultInputValue = '',
47 defaultMenuIsOpen = false,
48 defaultValue = null,
49 inputValue: propsInputValue,
50 menuIsOpen: propsMenuIsOpen,
51 onChange: propsOnChange,
52 onInputChange: propsOnInputChange,
53 onMenuClose: propsOnMenuClose,
54 onMenuOpen: propsOnMenuOpen,
55 value: propsValue,
56 ...restSelectProps
57}: StateManagerProps<Option, IsMulti, Group> &
58 AdditionalProps): PublicBaseSelectProps<Option, IsMulti, Group> &
59 Omit<
60 AdditionalProps,
61 keyof StateManagerAdditionalProps<Option> | StateManagedPropKeys
62 > {
63 const [stateInputValue, setStateInputValue] = useState(
64 propsInputValue !== undefined ? propsInputValue : defaultInputValue
65 );
66 const [stateMenuIsOpen, setStateMenuIsOpen] = useState(
67 propsMenuIsOpen !== undefined ? propsMenuIsOpen : defaultMenuIsOpen
68 );
69 const [stateValue, setStateValue] = useState(
70 propsValue !== undefined ? propsValue : defaultValue
71 );
72
73 const onChange = useCallback(
74 (value: OnChangeValue<Option, IsMulti>, actionMeta: ActionMeta<Option>) => {
75 if (typeof propsOnChange === 'function') {
76 propsOnChange(value, actionMeta);
77 }
78 setStateValue(value);
79 },
80 [propsOnChange]
81 );
82 const onInputChange = useCallback(
83 (value: string, actionMeta: InputActionMeta) => {
84 let newValue;
85 if (typeof propsOnInputChange === 'function') {
86 newValue = propsOnInputChange(value, actionMeta);
87 }
88 setStateInputValue(newValue !== undefined ? newValue : value);
89 },
90 [propsOnInputChange]
91 );
92 const onMenuOpen = useCallback(() => {
93 if (typeof propsOnMenuOpen === 'function') {
94 propsOnMenuOpen();
95 }
96 setStateMenuIsOpen(true);
97 }, [propsOnMenuOpen]);

Callers 4

stateManager.tsxFile · 0.85
Async.tsxFile · 0.85
Creatable.tsxFile · 0.85
AsyncCreatable.tsxFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…