import React, { PropsWithChildren, useMemo } from 'react'; import { observer } from 'mobx-react-lite'; import { DropdownSelectState } from '../../state'; import { Box, BoxProps, Checkbox, CheckboxProps } from '@wix/design-system'; export interface MultiInlineCheckboxProps extends Partial> { /** List of items to select from */ data: V[]; renderItem?: ( item: V, index: number, ) => Partial>; state: DropdownSelectState; } function _MultiInlineCheckbox(props: MultiInlineCheckboxProps) { const { renderItem, data, state, ...rest } = props; const { filter, select } = state; const keyedItems = useMemo( () => data.map((item, index) => { const key = filter.itemKey(item); return { id: key, key, item, index, indexWithinPage: index, pageIndex: 0, }; }), [data], ); return ( {keyedItems.map((keyedItem, index) => { const checkboxProps = renderItem?.(keyedItem.item, index); return ( { const checked = e.target.checked; checked ? state.set(keyedItem) : state.delete(keyedItem); checkboxProps?.onChange?.(e); }} checked={checkboxProps?.checked || select.isChecked(keyedItem.key)} > {checkboxProps?.children ?? filter.itemName(keyedItem.item)} ); })} ); } export const MultiInlineCheckbox = observer(_MultiInlineCheckbox);