Skip to content

Commit 674f45c

Browse files
committed
Resolve conflicts
2 parents 00d1e81 + e4f98b2 commit 674f45c

File tree

3 files changed

+34
-24
lines changed

3 files changed

+34
-24
lines changed

src/hooks/useCioAutocomplete.ts

+9-2
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ const useCioAutocomplete = (options: UseCioAutocompleteOptions) => {
5050
autocompleteClassName = 'cio-autocomplete',
5151
defaultInput,
5252
getSearchResultsUrl,
53-
onIsOpenChange,
53+
...rest
5454
} = options;
5555

5656
const [query, setQuery] = useState(defaultInput || '');
@@ -83,7 +83,14 @@ const useCioAutocomplete = (options: UseCioAutocompleteOptions) => {
8383
highlightedIndex,
8484
getInputProps,
8585
getItemProps: getItemPropsDownShift,
86-
} = useDownShift({ setQuery, items, onSubmit, cioClient, previousQuery, onIsOpenChange });
86+
} = useDownShift({
87+
setQuery,
88+
items,
89+
onSubmit,
90+
cioClient,
91+
previousQuery,
92+
...rest,
93+
});
8794

8895
// Log console errors
8996
useConsoleErrors(sections, activeSections);

src/hooks/useDownShift.ts

+5-7
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
1-
import { useCombobox, UseComboboxReturnValue, UseComboboxStateChange } from 'downshift';
1+
import { useCombobox, UseComboboxProps, UseComboboxReturnValue } from 'downshift';
22
import ConstructorIOClient from '@constructor-io/constructorio-client-javascript';
33
import { Nullable } from '@constructor-io/constructorio-client-javascript/lib/types';
44
import { Item, OnSubmit } from '../types';
55
import { trackSearchSubmit } from '../utils';
66

77
let idCounter = 0;
88

9-
type UseDownShiftOptions = {
9+
interface UseDownShiftOptions extends UseComboboxProps<Item> {
1010
setQuery: React.Dispatch<React.SetStateAction<string>>;
11-
items: Item[];
1211
onSubmit: OnSubmit;
1312
previousQuery?: string;
1413
cioClient: Nullable<ConstructorIOClient>;
15-
onIsOpenChange?: (changes: UseComboboxStateChange<Item>) => void;
16-
};
14+
}
1715

1816
export type DownShift = UseComboboxReturnValue<Item>;
1917

@@ -25,7 +23,7 @@ const useDownShift: UseDownShift = ({
2523
onSubmit,
2624
cioClient,
2725
previousQuery = '',
28-
onIsOpenChange,
26+
...rest
2927
}) =>
3028
useCombobox({
3129
id: `cio-autocomplete-${idCounter++}`, // eslint-disable-line
@@ -71,7 +69,7 @@ const useDownShift: UseDownShift = ({
7169
}
7270
}
7371
},
74-
onIsOpenChange,
72+
...rest,
7573
});
7674

7775
export default useDownShift;

src/types.ts

+20-15
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* eslint-disable @typescript-eslint/no-explicit-any */
2-
import { GetItemPropsOptions, UseComboboxStateChange } from 'downshift';
2+
import { GetItemPropsOptions, UseComboboxProps } from 'downshift';
33
import { ReactNode } from 'react';
44
import ConstructorIOClient from '@constructor-io/constructorio-client-javascript';
55
import {
@@ -34,24 +34,29 @@ export interface AdvancedParametersBase {
3434
export type AdvancedParameters = AdvancedParametersBase &
3535
Omit<IAutocompleteParameters, 'resultsPerSection'>;
3636

37-
export type CioAutocompleteProps = CioClientConfig & {
38-
openOnFocus?: boolean;
39-
getSearchResultsUrl?: (item: SearchSuggestion) => string;
40-
onSubmit: OnSubmit;
41-
onFocus?: () => void;
42-
onChange?: (input: string) => void;
43-
onIsOpenChange?: (changes: UseComboboxStateChange<Item>) => void;
44-
placeholder?: string;
45-
children?: ReactNode;
46-
sections?: UserDefinedSection[];
47-
zeroStateSections?: UserDefinedSection[];
48-
autocompleteClassName?: string;
49-
advancedParameters?: AdvancedParameters;
50-
defaultInput?: string;
37+
// Type UseComboboxProps with items as optional
38+
type OptionalItemsComboboxProps<Item> = Partial<UseComboboxProps<Item>> & {
39+
items?: Item[];
5140
};
5241

5342
export type UseCioAutocompleteOptions = Omit<CioAutocompleteProps, 'children'>;
5443

44+
export type CioAutocompleteProps = CioClientConfig &
45+
OptionalItemsComboboxProps<Item> & {
46+
openOnFocus?: boolean;
47+
getSearchResultsUrl?: (item: SearchSuggestion) => string;
48+
onSubmit: OnSubmit;
49+
onFocus?: () => void;
50+
onChange?: (input: string) => void;
51+
placeholder?: string;
52+
children?: ReactNode;
53+
sections?: UserDefinedSection[];
54+
zeroStateSections?: UserDefinedSection[];
55+
autocompleteClassName?: string;
56+
advancedParameters?: AdvancedParameters;
57+
defaultInput?: string;
58+
};
59+
5560
/**
5661
* AutocompleteSubmitEvent type is AutocompleteSelectSubmit or AutocompleteSearchSubmit.
5762
* Use isAutocompleteSearchSubmit or isAutocompleteSelectSubmit type predicates to safely access event properties.

0 commit comments

Comments
 (0)