@constructor-io/constructorio-ui-autocomplete 1.4.2 → 1.5.0

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/README.md CHANGED
@@ -34,11 +34,23 @@ function YourComponent() {
34
34
 
35
35
  ### Hook based
36
36
 
37
- The `useCioAutocomplete` hook handles state management and data fetching, but leaves rendering logic up to you.
37
+ The `useCioAutocomplete` hook leaves rendering logic up to you, while handling:
38
+ - state management
39
+ - data fetching
40
+ - keyboard navigation
41
+ - mouse interactions
42
+ - focus and submit event handling
43
+
44
+ An `apiKey` or `cioJsClient` must be passed to the `useCioAutocomplete` hook along with an `onSubmit` callback function. All other values are optional.
38
45
 
39
46
  ```jsx
40
47
  import { useCioAutocomplete } from '@constructor-io/constructorio-ui-autocomplete';
41
48
 
49
+ const args = {
50
+ "apiKey": "key_Gep3oQOu5IMcNh9A",
51
+ "onSubmit": (submitEvent) => console.dir(submitEvent)
52
+ };
53
+
42
54
  function YourComponent() {
43
55
  const {
44
56
  isOpen,
@@ -15,10 +15,14 @@ exports.componentDescription = `- import \`CioAutocomplete\` to render in your J
15
15
  > Note: when we say \`cioJsClient\`, we are referring to an instance of the [constructorio-client-javascript](https://www.npmjs.com/package/@constructor-io/constructorio-client-javascript)
16
16
  `;
17
17
  exports.hookDescription = `- import \`useCioAutocomplete\` and call this custom hook in a functional component.
18
- - This hook handles state management & data fetching, but leaves rendering logic up to you
19
- - To use this hook, an \`apiKey\` or \`cioJsClient\` are required, and an \`onSubmit\` callback must be passed. All other values are optional.
20
- - Pass different options to the \`useCioAutocomplete\` hook to configure behavior.
21
- - The following stories shows how different options affect the hook's behavior
18
+ - This hook leaves rendering logic up to you, while handling:
19
+ - state management
20
+ - data fetching
21
+ - keyboard navigation
22
+ - mouse interactions
23
+ - focus and submit event handling
24
+ - To use this hook, an \`apiKey\` or \`cioJsClient\` are required, and an \`onSubmit\` callback must be passed to the \`useCioAutocomplete\` hook to configure behavior. All other values are optional.
25
+ - use the <a href="https://kentcdodds.com/blog/how-to-give-rendering-control-to-users-with-prop-getters" target="__blank">prop getters</a> and other variables returned by this hook (below) to leverage the functionality described above with jsx elements in your react component definitions
22
26
 
23
27
  Calling the \`useCioAutocomplete\` hook returns an object with the following keys:
24
28
 
@@ -26,23 +30,26 @@ Calling the \`useCioAutocomplete\` hook returns an object with the following key
26
30
  const {
27
31
  // must be used for a hooks integrations
28
32
  query: string, // current input field value
29
- sections: [{...}], // array of sections data to render in menu list,
33
+ sections: [{...}], // array of sections data to render in menu list
30
34
  getFormProps: () => ({...})), // prop getter for jsx form element
31
- getLabelProps: () => ({...})), // optional: prop getter for jsx label element
32
35
  getInputProps: () => ({...})), // prop getter for jsx input element
33
36
  getMenuProps: () => ({...})), // prop getter for jsx element serving as menu container
34
37
  getItemProps: (item) => ({...})), // prop getter for jsx element serving as each result
35
- isOpen: boolean,
36
38
 
37
- // available for advanced hooks integration use cases
39
+ // available for use, but not required for all use cases
40
+ selectedItem: item, // undefined or current selected item (via hover or arrow keys)
41
+ isOpen: boolean, // current state of the menu list
38
42
  openMenu: () => void, // open menu
39
43
  closeMenu: () => void, // close menu
40
44
  setQuery: () => void, // update the current input field value
45
+ getLabelProps: () => ({...})), // prop getter for a jsx label element
41
46
  cioJsClient, // instance of constructorio-client-javascript
42
47
  } = useCioAutocomplete(args);
43
48
  \`\`\`
44
49
 
45
50
  > Note: when we say \`cioJsClient\`, we are referring to an instance of the [constructorio-client-javascript](https://www.npmjs.com/package/@constructor-io/constructorio-client-javascript)
51
+
52
+ The following stories show how different options affect the hook's behavior!
46
53
  `;
47
54
  /// //////////////////////////////
48
55
  // Storybook Pages
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAEA,yBAAyB;AACZ,QAAA,MAAM,GAAG,sBAAsB,CAAC;AAE7C,kCAAkC;AAClC,gCAAgC;AAChC,kCAAkC;AAErB,QAAA,oBAAoB,GAAG;;;;;;;CAOnC,CAAC;AAEW,QAAA,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B9B,CAAC;AAEF,kCAAkC;AAClC,kBAAkB;AAClB,kCAAkC;AAErB,QAAA,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuBlC,CAAC;AAEW,QAAA,qBAAqB,GAAG;;;;;;+bAM0Z,CAAC;AAEnb,QAAA,oBAAoB,GAAG;;;;;;;;mEAQ+B,CAAC;AAEpE,kCAAkC;AAClC,oBAAoB;AACpB,kCAAkC;AAErB,QAAA,iBAAiB,GAAG,kEAAkE,CAAC;AACvF,QAAA,sBAAsB,GAAG;;6LAEuJ,CAAC;AACjL,QAAA,sBAAsB,GAAG,iIAAiI,CAAC;AAC3J,QAAA,4BAA4B,GAAG,4DAA4D,CAAC;AAC5F,QAAA,mBAAmB,GAAG,0DAA0D,CAAC;AACjF,QAAA,kBAAkB,GAAG,uDAAuD,CAAC;AAC7E,QAAA,qBAAqB,GAAG,sEAAsE,CAAC;AAC/F,QAAA,uBAAuB,GAAG,iEAAiE,CAAC;AAC5F,QAAA,0BAA0B,GAAG,+EAA+E,CAAC;AAC7G,QAAA,wBAAwB,GAAG,+GAA+G,CAAC;AAC3I,QAAA,kBAAkB,GAAG,qHAAqH,CAAC;AAC3I,QAAA,mBAAmB,GAAG,0HAA0H,CAAC;AACjJ,QAAA,mBAAmB,GAAG;;;;;;;sFAOmD,CAAC;AACvF,sCAAsC;AAC/B,MAAM,eAAe,GAAG,CAAC,WAAoC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAArF,QAAA,eAAe,mBAAsE;AACrF,QAAA,4BAA4B,GAAG,yIAAyI,CAAC;AACzK,QAAA,sBAAsB,GAAG,mJAAmJ,CAAC;AAC7K,QAAA,2BAA2B,GAAG,uHAAuH,CAAC;AAEnK,0CAA0C;AAC7B,QAAA,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DtC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAEA,yBAAyB;AACZ,QAAA,MAAM,GAAG,sBAAsB,CAAC;AAE7C,kCAAkC;AAClC,gCAAgC;AAChC,kCAAkC;AAErB,QAAA,oBAAoB,GAAG;;;;;;;CAOnC,CAAC;AAEW,QAAA,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC9B,CAAC;AAEF,kCAAkC;AAClC,kBAAkB;AAClB,kCAAkC;AAErB,QAAA,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuBlC,CAAC;AAEW,QAAA,qBAAqB,GAAG;;;;;;+bAM0Z,CAAC;AAEnb,QAAA,oBAAoB,GAAG;;;;;;;;mEAQ+B,CAAC;AAEpE,kCAAkC;AAClC,oBAAoB;AACpB,kCAAkC;AAErB,QAAA,iBAAiB,GAAG,kEAAkE,CAAC;AACvF,QAAA,sBAAsB,GAAG;;6LAEuJ,CAAC;AACjL,QAAA,sBAAsB,GAAG,iIAAiI,CAAC;AAC3J,QAAA,4BAA4B,GAAG,4DAA4D,CAAC;AAC5F,QAAA,mBAAmB,GAAG,0DAA0D,CAAC;AACjF,QAAA,kBAAkB,GAAG,uDAAuD,CAAC;AAC7E,QAAA,qBAAqB,GAAG,sEAAsE,CAAC;AAC/F,QAAA,uBAAuB,GAAG,iEAAiE,CAAC;AAC5F,QAAA,0BAA0B,GAAG,+EAA+E,CAAC;AAC7G,QAAA,wBAAwB,GAAG,+GAA+G,CAAC;AAC3I,QAAA,kBAAkB,GAAG,qHAAqH,CAAC;AAC3I,QAAA,mBAAmB,GAAG,0HAA0H,CAAC;AACjJ,QAAA,mBAAmB,GAAG;;;;;;;sFAOmD,CAAC;AACvF,sCAAsC;AAC/B,MAAM,eAAe,GAAG,CAAC,WAAoC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAArF,QAAA,eAAe,mBAAsE;AACrF,QAAA,4BAA4B,GAAG,yIAAyI,CAAC;AACzK,QAAA,sBAAsB,GAAG,mJAAmJ,CAAC;AAC7K,QAAA,2BAA2B,GAAG,uHAAuH,CAAC;AAEnK,0CAA0C;AAC7B,QAAA,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DtC,CAAC"}
@@ -108,6 +108,7 @@ const useCioAutocomplete = (options) => {
108
108
  setQuery,
109
109
  cioClient,
110
110
  autocompleteClassName,
111
+ selectedItem: items[highlightedIndex],
111
112
  };
112
113
  };
113
114
  exports.default = useCioAutocomplete;
@@ -1 +1 @@
1
- {"version":3,"file":"useCioAutocomplete.js","sourceRoot":"","sources":["../../../src/hooks/useCioAutocomplete.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useCioAutocomplete.js","sourceRoot":"","sources":["../../../src/hooks/useCioAutocomplete.ts"],"names":[],"mappings":"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"}
@@ -12,10 +12,14 @@ export const componentDescription = `- import \`CioAutocomplete\` to render in y
12
12
  > Note: when we say \`cioJsClient\`, we are referring to an instance of the [constructorio-client-javascript](https://www.npmjs.com/package/@constructor-io/constructorio-client-javascript)
13
13
  `;
14
14
  export const hookDescription = `- import \`useCioAutocomplete\` and call this custom hook in a functional component.
15
- - This hook handles state management & data fetching, but leaves rendering logic up to you
16
- - To use this hook, an \`apiKey\` or \`cioJsClient\` are required, and an \`onSubmit\` callback must be passed. All other values are optional.
17
- - Pass different options to the \`useCioAutocomplete\` hook to configure behavior.
18
- - The following stories shows how different options affect the hook's behavior
15
+ - This hook leaves rendering logic up to you, while handling:
16
+ - state management
17
+ - data fetching
18
+ - keyboard navigation
19
+ - mouse interactions
20
+ - focus and submit event handling
21
+ - To use this hook, an \`apiKey\` or \`cioJsClient\` are required, and an \`onSubmit\` callback must be passed to the \`useCioAutocomplete\` hook to configure behavior. All other values are optional.
22
+ - use the <a href="https://kentcdodds.com/blog/how-to-give-rendering-control-to-users-with-prop-getters" target="__blank">prop getters</a> and other variables returned by this hook (below) to leverage the functionality described above with jsx elements in your react component definitions
19
23
 
20
24
  Calling the \`useCioAutocomplete\` hook returns an object with the following keys:
21
25
 
@@ -23,23 +27,26 @@ Calling the \`useCioAutocomplete\` hook returns an object with the following key
23
27
  const {
24
28
  // must be used for a hooks integrations
25
29
  query: string, // current input field value
26
- sections: [{...}], // array of sections data to render in menu list,
30
+ sections: [{...}], // array of sections data to render in menu list
27
31
  getFormProps: () => ({...})), // prop getter for jsx form element
28
- getLabelProps: () => ({...})), // optional: prop getter for jsx label element
29
32
  getInputProps: () => ({...})), // prop getter for jsx input element
30
33
  getMenuProps: () => ({...})), // prop getter for jsx element serving as menu container
31
34
  getItemProps: (item) => ({...})), // prop getter for jsx element serving as each result
32
- isOpen: boolean,
33
35
 
34
- // available for advanced hooks integration use cases
36
+ // available for use, but not required for all use cases
37
+ selectedItem: item, // undefined or current selected item (via hover or arrow keys)
38
+ isOpen: boolean, // current state of the menu list
35
39
  openMenu: () => void, // open menu
36
40
  closeMenu: () => void, // close menu
37
41
  setQuery: () => void, // update the current input field value
42
+ getLabelProps: () => ({...})), // prop getter for a jsx label element
38
43
  cioJsClient, // instance of constructorio-client-javascript
39
44
  } = useCioAutocomplete(args);
40
45
  \`\`\`
41
46
 
42
47
  > Note: when we say \`cioJsClient\`, we are referring to an instance of the [constructorio-client-javascript](https://www.npmjs.com/package/@constructor-io/constructorio-client-javascript)
48
+
49
+ The following stories show how different options affect the hook's behavior!
43
50
  `;
44
51
  /// //////////////////////////////
45
52
  // Storybook Pages
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAEA,yBAAyB;AACzB,MAAM,CAAC,MAAM,MAAM,GAAG,sBAAsB,CAAC;AAE7C,kCAAkC;AAClC,gCAAgC;AAChC,kCAAkC;AAElC,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;CAOnC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B9B,CAAC;AAEF,kCAAkC;AAClC,kBAAkB;AAClB,kCAAkC;AAElC,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuBlC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;+bAM0Z,CAAC;AAEhc,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;mEAQ+B,CAAC;AAEpE,kCAAkC;AAClC,oBAAoB;AACpB,kCAAkC;AAElC,MAAM,CAAC,MAAM,iBAAiB,GAAG,kEAAkE,CAAC;AACpG,MAAM,CAAC,MAAM,sBAAsB,GAAG;;6LAEuJ,CAAC;AAC9L,MAAM,CAAC,MAAM,sBAAsB,GAAG,iIAAiI,CAAC;AACxK,MAAM,CAAC,MAAM,4BAA4B,GAAG,4DAA4D,CAAC;AACzG,MAAM,CAAC,MAAM,mBAAmB,GAAG,0DAA0D,CAAC;AAC9F,MAAM,CAAC,MAAM,kBAAkB,GAAG,uDAAuD,CAAC;AAC1F,MAAM,CAAC,MAAM,qBAAqB,GAAG,sEAAsE,CAAC;AAC5G,MAAM,CAAC,MAAM,uBAAuB,GAAG,iEAAiE,CAAC;AACzG,MAAM,CAAC,MAAM,0BAA0B,GAAG,+EAA+E,CAAC;AAC1H,MAAM,CAAC,MAAM,wBAAwB,GAAG,+GAA+G,CAAC;AACxJ,MAAM,CAAC,MAAM,kBAAkB,GAAG,qHAAqH,CAAC;AACxJ,MAAM,CAAC,MAAM,mBAAmB,GAAG,0HAA0H,CAAC;AAC9J,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;sFAOmD,CAAC;AACvF,sCAAsC;AACtC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,WAAoC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAClG,MAAM,CAAC,MAAM,4BAA4B,GAAG,yIAAyI,CAAC;AACtL,MAAM,CAAC,MAAM,sBAAsB,GAAG,mJAAmJ,CAAC;AAC1L,MAAM,CAAC,MAAM,2BAA2B,GAAG,uHAAuH,CAAC;AAEnK,0CAA0C;AAC1C,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DtC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAEA,yBAAyB;AACzB,MAAM,CAAC,MAAM,MAAM,GAAG,sBAAsB,CAAC;AAE7C,kCAAkC;AAClC,gCAAgC;AAChC,kCAAkC;AAElC,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;CAOnC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC9B,CAAC;AAEF,kCAAkC;AAClC,kBAAkB;AAClB,kCAAkC;AAElC,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuBlC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;+bAM0Z,CAAC;AAEhc,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;mEAQ+B,CAAC;AAEpE,kCAAkC;AAClC,oBAAoB;AACpB,kCAAkC;AAElC,MAAM,CAAC,MAAM,iBAAiB,GAAG,kEAAkE,CAAC;AACpG,MAAM,CAAC,MAAM,sBAAsB,GAAG;;6LAEuJ,CAAC;AAC9L,MAAM,CAAC,MAAM,sBAAsB,GAAG,iIAAiI,CAAC;AACxK,MAAM,CAAC,MAAM,4BAA4B,GAAG,4DAA4D,CAAC;AACzG,MAAM,CAAC,MAAM,mBAAmB,GAAG,0DAA0D,CAAC;AAC9F,MAAM,CAAC,MAAM,kBAAkB,GAAG,uDAAuD,CAAC;AAC1F,MAAM,CAAC,MAAM,qBAAqB,GAAG,sEAAsE,CAAC;AAC5G,MAAM,CAAC,MAAM,uBAAuB,GAAG,iEAAiE,CAAC;AACzG,MAAM,CAAC,MAAM,0BAA0B,GAAG,+EAA+E,CAAC;AAC1H,MAAM,CAAC,MAAM,wBAAwB,GAAG,+GAA+G,CAAC;AACxJ,MAAM,CAAC,MAAM,kBAAkB,GAAG,qHAAqH,CAAC;AACxJ,MAAM,CAAC,MAAM,mBAAmB,GAAG,0HAA0H,CAAC;AAC9J,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;sFAOmD,CAAC;AACvF,sCAAsC;AACtC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,WAAoC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAClG,MAAM,CAAC,MAAM,4BAA4B,GAAG,yIAAyI,CAAC;AACtL,MAAM,CAAC,MAAM,sBAAsB,GAAG,mJAAmJ,CAAC;AAC1L,MAAM,CAAC,MAAM,2BAA2B,GAAG,uHAAuH,CAAC;AAEnK,0CAA0C;AAC1C,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DtC,CAAC"}
@@ -119,6 +119,7 @@ const useCioAutocomplete = (options) => {
119
119
  setQuery,
120
120
  cioClient,
121
121
  autocompleteClassName,
122
+ selectedItem: items[highlightedIndex],
122
123
  };
123
124
  };
124
125
  export default useCioAutocomplete;
@@ -1 +1 @@
1
- {"version":3,"file":"useCioAutocomplete.js","sourceRoot":"","sources":["../../../src/hooks/useCioAutocomplete.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useCioAutocomplete.js","sourceRoot":"","sources":["../../../src/hooks/useCioAutocomplete.ts"],"names":[],"mappings":"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"}
@@ -20,5 +20,6 @@ export declare const CioAutocompleteContext: React.Context<{
20
20
  setQuery: React.Dispatch<React.SetStateAction<string>>;
21
21
  cioClient: import("@constructor-io/constructorio-client-javascript/lib/types/types").Nullable<import("@constructor-io/constructorio-client-javascript")>;
22
22
  autocompleteClassName: string;
23
+ selectedItem: import("../../types").Item;
23
24
  }>;
24
25
  export default function CioAutocompleteProvider(props: CioAutocompleteProps): JSX.Element;
@@ -1,7 +1,7 @@
1
1
  import { AutocompleteSubmitEvent } from './types';
2
2
  export declare const apiKey = "key_Gep3oQOu5IMcNh9A";
3
3
  export declare const componentDescription = "- import `CioAutocomplete` to render in your JSX.\n- This component handles state management, data fetching, and rendering logic.\n- To use this component, an `apiKey` or `cioJsClient` are required, and an `onSubmit` callback must be passed. All other values are optional.\n- Use different props to configure the behavior of this component.\n- The following stories shows how different props affect the component's behavior\n\n> Note: when we say `cioJsClient`, we are referring to an instance of the [constructorio-client-javascript](https://www.npmjs.com/package/@constructor-io/constructorio-client-javascript)\n";
4
- export declare const hookDescription = "- import `useCioAutocomplete` and call this custom hook in a functional component.\n- This hook handles state management & data fetching, but leaves rendering logic up to you\n- To use this hook, an `apiKey` or `cioJsClient` are required, and an `onSubmit` callback must be passed. All other values are optional.\n- Pass different options to the `useCioAutocomplete` hook to configure behavior.\n- The following stories shows how different options affect the hook's behavior\n\nCalling the `useCioAutocomplete` hook returns an object with the following keys:\n\n```jsx\nconst {\n // must be used for a hooks integrations\n query: string, // current input field value\n sections: [{...}], // array of sections data to render in menu list,\n getFormProps: () => ({...})), // prop getter for jsx form element\n getLabelProps: () => ({...})), // optional: prop getter for jsx label element\n getInputProps: () => ({...})), // prop getter for jsx input element\n getMenuProps: () => ({...})), // prop getter for jsx element serving as menu container\n getItemProps: (item) => ({...})), // prop getter for jsx element serving as each result\n isOpen: boolean,\n\n // available for advanced hooks integration use cases\n openMenu: () => void, // open menu\n closeMenu: () => void, // close menu\n setQuery: () => void, // update the current input field value\n cioJsClient, // instance of constructorio-client-javascript\n } = useCioAutocomplete(args);\n```\n\n> Note: when we say `cioJsClient`, we are referring to an instance of the [constructorio-client-javascript](https://www.npmjs.com/package/@constructor-io/constructorio-client-javascript)\n";
4
+ export declare const hookDescription = "- import `useCioAutocomplete` and call this custom hook in a functional component.\n- This hook leaves rendering logic up to you, while handling:\n - state management\n - data fetching\n - keyboard navigation\n - mouse interactions\n - focus and submit event handling\n- To use this hook, an `apiKey` or `cioJsClient` are required, and an `onSubmit` callback must be passed to the `useCioAutocomplete` hook to configure behavior. All other values are optional.\n- use the <a href=\"https://kentcdodds.com/blog/how-to-give-rendering-control-to-users-with-prop-getters\" target=\"__blank\">prop getters</a> and other variables returned by this hook (below) to leverage the functionality described above with jsx elements in your react component definitions\n\nCalling the `useCioAutocomplete` hook returns an object with the following keys:\n\n```jsx\nconst {\n // must be used for a hooks integrations\n query: string, // current input field value\n sections: [{...}], // array of sections data to render in menu list\n getFormProps: () => ({...})), // prop getter for jsx form element\n getInputProps: () => ({...})), // prop getter for jsx input element\n getMenuProps: () => ({...})), // prop getter for jsx element serving as menu container\n getItemProps: (item) => ({...})), // prop getter for jsx element serving as each result\n\n // available for use, but not required for all use cases\n selectedItem: item, // undefined or current selected item (via hover or arrow keys)\n isOpen: boolean, // current state of the menu list\n openMenu: () => void, // open menu\n closeMenu: () => void, // close menu\n setQuery: () => void, // update the current input field value\n getLabelProps: () => ({...})), // prop getter for a jsx label element\n cioJsClient, // instance of constructorio-client-javascript\n } = useCioAutocomplete(args);\n```\n\n> Note: when we say `cioJsClient`, we are referring to an instance of the [constructorio-client-javascript](https://www.npmjs.com/package/@constructor-io/constructorio-client-javascript)\n\nThe following stories show how different options affect the hook's behavior!\n";
5
5
  export declare const sectionsDescription = "- by default, typing a query will fetch data for search suggestions and Products\n- to override this, pass an array of sections objects\n- the order of the objects in the `sections` array determines the order of the results\n- each section object must have an `identifier`\n- each section object can specify a `type`\n- each section object can override the default `numResults` of 8\n\nWhen no values are passed for the `sections` argument, the following defaults are used:\n\n```jsx\n[\n {\n identifier: 'Search Suggestions',\n type: 'autocomplete',\n numResults: 8\n },\n {\n identifier: 'Products',\n type: 'autocomplete',\n numResults: 8\n }\n]\n```\n";
6
6
  export declare const userEventsDescription = "- pass callback functions to respond to user events\n- if provided, the onFocus callback function will be called each time the user focuses on the text input field\n- if provided, the onChange callback function will be called each time the user changes the value in the text input field\n- the onSubmit callback function will be called each time the user submits the form\n- the user can submit the form by pressing the enter key in the text input field, clicking a submit button within the form, clicking on a result, or pressing enter while a result is selected\n\n> \u26A0\uFE0F NOTE \u26A0\uFE0F Use the Storybook Canvas Actions tab to explore the behavior of all of these `OnEvent` callback functions as you interact with our Default User Events example rendered in the Canvas. In the stories below, Storybook Canvas Actions have been disabled to focus on each of these callback functions in isolation. Each of the example callback functions in the stories below log output to the console tab of the browser's developer tools.";
7
7
  export declare const zeroStateDescription = "- when the text input field has no text, we call this zero state\n- by default, the autocomplete shows nothing in the menu it's for zero state\n- to show zero state results, pass an array of section objects for `zeroStateSections`\n- when `zeroStateSections` has sections, the menu will open on user focus by default\n- set `openOnFocus` to false, to only show `zeroStateSections` after user has typed and then cleared the text input, instead of as soon as the user focuses on the text input\n- the order of the objects in the `zeroStateSections` array determines the order of the results\n- each section object must have an `identifier`\n- each section object can specify a `type`\n- each section object can override the default `numResults` of 8";
@@ -1,4 +1,4 @@
1
- import { CioAutocompleteProps, Section } from '../types';
1
+ import { CioAutocompleteProps, Item, Section } from '../types';
2
2
  export declare const defaultSections: Section[];
3
3
  export type UseCioAutocompleteOptions = Omit<CioAutocompleteProps, 'children'>;
4
4
  declare const useCioAutocomplete: (options: UseCioAutocompleteOptions) => {
@@ -21,5 +21,6 @@ declare const useCioAutocomplete: (options: UseCioAutocompleteOptions) => {
21
21
  setQuery: import("react").Dispatch<import("react").SetStateAction<string>>;
22
22
  cioClient: import("@constructor-io/constructorio-client-javascript/lib/types/types").Nullable<import("@constructor-io/constructorio-client-javascript")>;
23
23
  autocompleteClassName: string;
24
+ selectedItem: Item;
24
25
  };
25
26
  export default useCioAutocomplete;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@constructor-io/constructorio-ui-autocomplete",
3
- "version": "1.4.2",
3
+ "version": "1.5.0",
4
4
  "description": "Constructor.io Autocomplete UI library for web applications",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/mjs/index.js",