( options: AutocompleteOptions<TItem> )
| 66 | }; |
| 67 | |
| 68 | export function getDefaultOptions<TItem extends BaseItem>( |
| 69 | options: AutocompleteOptions<TItem> |
| 70 | ) { |
| 71 | const { |
| 72 | classNames, |
| 73 | container, |
| 74 | getEnvironmentProps, |
| 75 | getFormProps, |
| 76 | getInputProps, |
| 77 | getItemProps, |
| 78 | getLabelProps, |
| 79 | getListProps, |
| 80 | getPanelProps, |
| 81 | getRootProps, |
| 82 | panelContainer, |
| 83 | panelPlacement, |
| 84 | render, |
| 85 | renderNoResults, |
| 86 | renderer, |
| 87 | detachedMediaQuery, |
| 88 | components, |
| 89 | translations, |
| 90 | ...core |
| 91 | } = options; |
| 92 | |
| 93 | /* eslint-disable no-restricted-globals */ |
| 94 | const environment: AutocompleteEnvironment = ( |
| 95 | typeof window !== 'undefined' ? window : {} |
| 96 | ) as typeof window; |
| 97 | /* eslint-enable no-restricted-globals */ |
| 98 | const containerElement = getHTMLElement(environment, container); |
| 99 | |
| 100 | invariant( |
| 101 | containerElement.tagName !== 'INPUT', |
| 102 | 'The `container` option does not support `input` elements. You need to change the container to a `div`.' |
| 103 | ); |
| 104 | |
| 105 | warn( |
| 106 | !(render && renderer && !renderer?.render), |
| 107 | `You provided the \`render\` option but did not provide a \`renderer.render\`. Since v1.6.0, you can provide a \`render\` function directly in \`renderer\`.` + |
| 108 | `\nTo get rid of this warning, do any of the following depending on your use case.` + |
| 109 | "\n- If you are using the `render` option only to override Autocomplete's default `render` function, pass the `render` function into `renderer` and remove the `render` option." + |
| 110 | '\n- If you are using the `render` option to customize the layout, pass your `render` function into `renderer` and use it from the provided parameters of the `render` option.' + |
| 111 | '\n- If you are using the `render` option to work with React 18, pass an empty `render` function into `renderer`.' + |
| 112 | '\nSee https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-render' |
| 113 | ); |
| 114 | |
| 115 | warn( |
| 116 | !renderer || |
| 117 | render || |
| 118 | (renderer.Fragment && renderer.createElement && renderer.render), |
| 119 | `You provided an incomplete \`renderer\` (missing: ${[ |
| 120 | !renderer?.createElement && '`renderer.createElement`', |
| 121 | !renderer?.Fragment && '`renderer.Fragment`', |
| 122 | !renderer?.render && '`renderer.render`', |
| 123 | ] |
| 124 | .filter(Boolean) |
| 125 | .join(', ')}). This can cause rendering issues.` + |
no test coverage detected