import { use } from '../utils'; import { emit, inherit } from '../utils/functional'; import Icon from '../icon'; import Cell from '../cell'; import Button from '../button'; import Radio from '../radio'; import RadioGroup from '../radio-group'; // Types import { CreateElement, RenderContext } from 'vue/types'; import { DefaultSlots } from '../utils/use/sfc'; export type ContactListItem = { id: string | number; tel: string | number; name: string; }; export type ContactListProps = { value?: any; list: ContactListItem[]; addText?: string; }; const [sfc, bem, t] = use('contact-list'); function ContactList( h: CreateElement, props: ContactListProps, slots: DefaultSlots, ctx: RenderContext ) { const List = props.list.map((item, index) => { const onClick = () => { emit(ctx, 'input', item.id); emit(ctx, 'select', item, index); }; return ( (
{`${item.name},${item.tel}`}
), 'right-icon': () => ( { event.stopPropagation(); emit(ctx, 'edit', item, index); }} /> ) }} onClick={onClick} /> ); }); return (
{List}
); } ContactList.props = { value: null as any, list: Array, addText: String }; export default sfc(ContactList);