import { createNamespace } from '../utils'; import { RED } from '../utils/color'; 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/types'; export type ContactListItem = { id: string | number; tel: string | number; name: string; }; export type ContactListProps = { value?: any; list?: ContactListItem[]; addText?: string; }; const [createComponent, bem, t] = createNamespace('contact-list'); function ContactList( h: CreateElement, props: ContactListProps, slots: DefaultSlots, ctx: RenderContext ) { const List = props.list && props.list.map((item, index) => { function onClick() { emit(ctx, 'input', item.id); emit(ctx, 'select', item, index); } function Content() { return (
{`${item.name},${item.tel}`}
); } function RightIcon() { return ( { event.stopPropagation(); emit(ctx, 'edit', item, index); }} /> ); } return ( ); }); return (
{List}
); } ContactList.props = { value: null as any, list: Array, addText: String }; export default createComponent(ContactList);