import {Item, useListModel} from '@workday/canvas-kit-react/collection';
import {createElemPropsHook} from '@workday/canvas-kit-react/common';
/**
* This elemProps hook allows for children values to be considered identifiers if the children are
* strings. This can be useful for autocomplete or select components that allow string values. This
* hook must be passed _after_ {@link useListItemRegister} because this hook sets the `data-id`
* attribute if one hasn't been defined by the application.
*
* An example might look like:
*
* ```tsx
* const useMyListItem = composeHooks(
* // any other hooks here
* useListItemSelect,
* useListItemRegister,
* useListItemAllowChildStrings // always the last in the list
* )
*
*
* {
* console.log(id) // will be "First" or "Second"
* }}>
* First
* Second
*
* ```
*/
export const useListItemAllowChildStrings = createElemPropsHook(useListModel)((
_,
__,
elemProps: {'data-id'?: string; children?: React.ReactNode; item?: Item} = {}
) => {
const props: {'data-id'?: string} = {};
if (!elemProps['data-id'] && !elemProps.item && typeof elemProps.children === 'string') {
props['data-id'] = elemProps.children;
}
return props;
});