mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
67 lines
1.3 KiB
TypeScript
67 lines
1.3 KiB
TypeScript
import { use } from '../utils';
|
||
import { emit, inherit } from '../utils/functional';
|
||
import Cell from '../cell';
|
||
|
||
// Types
|
||
import { CreateElement, RenderContext } from 'vue/types';
|
||
import { DefaultSlots } from '../utils/use/sfc';
|
||
|
||
const [sfc, bem, t] = use('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;
|
||
|
||
return (
|
||
<Cell
|
||
center
|
||
border={false}
|
||
isLink={editable}
|
||
class={bem([type])}
|
||
valueClass={bem('value')}
|
||
icon={type === 'edit' ? 'contact' : 'add-square'}
|
||
onClick={(event: Event) => {
|
||
if (editable) {
|
||
emit(ctx, 'click', event);
|
||
}
|
||
}}
|
||
{...inherit(ctx)}
|
||
>
|
||
{type === 'add'
|
||
? props.addText || t('addText')
|
||
: [
|
||
<div>{`${t('name')}:${props.name}`}</div>,
|
||
<div>{`${t('tel')}:${props.tel}`}</div>
|
||
]}
|
||
</Cell>
|
||
);
|
||
}
|
||
|
||
ContactCard.props = {
|
||
tel: String,
|
||
name: String,
|
||
addText: String,
|
||
editable: {
|
||
type: Boolean,
|
||
default: true
|
||
},
|
||
type: {
|
||
type: String,
|
||
default: 'add'
|
||
}
|
||
};
|
||
|
||
export default sfc<ContactCardProps>(ContactCard);
|