1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import { defineComponent, createVNode as _createVNode } from "vue";
- import { createNamespace, unknownProp } from "../utils/index.mjs";
- import { Tag } from "../tag/index.mjs";
- import { Icon } from "../icon/index.mjs";
- import { Cell } from "../cell/index.mjs";
- import { Radio } from "../radio/index.mjs";
- import { Button } from "../button/index.mjs";
- import { RadioGroup } from "../radio-group/index.mjs";
- const [name, bem, t] = createNamespace("contact-list");
- const contactListProps = {
- list: Array,
- addText: String,
- modelValue: unknownProp,
- defaultTagText: String
- };
- var stdin_default = defineComponent({
- name,
- props: contactListProps,
- emits: ["add", "edit", "select", "update:modelValue"],
- setup(props, {
- emit
- }) {
- const renderItem = (item, index) => {
- const onClick = () => {
- emit("update:modelValue", item.id);
- emit("select", item, index);
- };
- const renderRightIcon = () => _createVNode(Radio, {
- "class": bem("radio"),
- "name": item.id,
- "iconSize": 18
- }, null);
- const renderEditIcon = () => _createVNode(Icon, {
- "name": "edit",
- "class": bem("edit"),
- "onClick": (event) => {
- event.stopPropagation();
- emit("edit", item, index);
- }
- }, null);
- const renderContent = () => {
- const nodes = [`${item.name}\uFF0C${item.tel}`];
- if (item.isDefault && props.defaultTagText) {
- nodes.push(_createVNode(Tag, {
- "type": "primary",
- "round": true,
- "class": bem("item-tag")
- }, {
- default: () => [props.defaultTagText]
- }));
- }
- return nodes;
- };
- return _createVNode(Cell, {
- "key": item.id,
- "isLink": true,
- "center": true,
- "class": bem("item"),
- "titleClass": bem("item-title"),
- "onClick": onClick
- }, {
- icon: renderEditIcon,
- title: renderContent,
- "right-icon": renderRightIcon
- });
- };
- return () => _createVNode("div", {
- "class": bem()
- }, [_createVNode(RadioGroup, {
- "modelValue": props.modelValue,
- "class": bem("group")
- }, {
- default: () => [props.list && props.list.map(renderItem)]
- }), _createVNode("div", {
- "class": [bem("bottom"), "van-safe-area-bottom"]
- }, [_createVNode(Button, {
- "round": true,
- "block": true,
- "type": "primary",
- "class": bem("add"),
- "text": props.addText || t("addContact"),
- "onClick": () => emit("add")
- }, null)])]);
- }
- });
- export {
- contactListProps,
- stdin_default as default
- };
|