feat: migrate Contact component

This commit is contained in:
chenjiahan
2020-08-17 12:04:13 +08:00
parent ec64d803be
commit 6d13094a20
6 changed files with 27 additions and 228 deletions
+2 -2
View File
@@ -8,7 +8,7 @@
@click="showList = true"
/>
<van-popup v-model="showList" position="bottom" :lazy-render="false">
<van-popup v-model:show="showList" position="bottom" :lazy-render="false">
<van-contact-list
v-model="chosenContactId"
:list="list"
@@ -19,7 +19,7 @@
/>
</van-popup>
<van-popup v-model="showEdit" position="bottom" :lazy-render="false">
<van-popup v-model:show="showEdit" position="bottom" :lazy-render="false">
<van-contact-edit
show-set-default
:set-default-label="t('defaultLabel')"
-77
View File
@@ -1,77 +0,0 @@
// Utils
import { createNamespace } from '../utils';
import { emit, inherit } from '../utils/functional';
// Components
import Cell from '../cell';
// Types
import { CreateElement, RenderContext } from 'vue/types';
import { DefaultSlots } from '../utils/types';
const [createComponent, bem, t] = createNamespace('contact-card');
export type ContactCardProps = {
tel?: string;
name?: string;
type?: string;
addText: string;
editable: boolean;
};
function ContactCard(
h: CreateElement,
props: ContactCardProps,
slots: DefaultSlots,
ctx: RenderContext<ContactCardProps>
) {
const { type, editable } = props;
function onClick(event: Event) {
if (editable) {
emit(ctx, 'click', event);
}
}
function Content() {
if (type === 'add') {
return props.addText || t('addText');
}
return [
<div>{`${t('name')}${props.name}`}</div>,
<div>{`${t('tel')}${props.tel}`}</div>,
];
}
return (
<Cell
center
border={false}
isLink={editable}
class={bem([type])}
valueClass={bem('value')}
icon={type === 'edit' ? 'contact' : 'add-square'}
onClick={onClick}
{...inherit(ctx)}
>
{Content()}
</Cell>
);
}
ContactCard.props = {
tel: String,
name: String,
addText: String,
editable: {
type: Boolean,
default: true,
},
type: {
type: String,
default: 'add',
},
};
export default createComponent<ContactCardProps>(ContactCard);