UNPKG

3.71 kBJavaScriptView Raw
1var __defProp = Object.defineProperty;
2var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3var __getOwnPropNames = Object.getOwnPropertyNames;
4var __hasOwnProp = Object.prototype.hasOwnProperty;
5var __export = (target, all) => {
6 for (var name2 in all)
7 __defProp(target, name2, { get: all[name2], enumerable: true });
8};
9var __copyProps = (to, from, except, desc) => {
10 if (from && typeof from === "object" || typeof from === "function") {
11 for (let key of __getOwnPropNames(from))
12 if (!__hasOwnProp.call(to, key) && key !== except)
13 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14 }
15 return to;
16};
17var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18var stdin_exports = {};
19__export(stdin_exports, {
20 contactListProps: () => contactListProps,
21 default: () => stdin_default
22});
23module.exports = __toCommonJS(stdin_exports);
24var import_vue = require("vue");
25var import_utils = require("../utils");
26var import_tag = require("../tag");
27var import_icon = require("../icon");
28var import_cell = require("../cell");
29var import_radio = require("../radio");
30var import_button = require("../button");
31var import_radio_group = require("../radio-group");
32const [name, bem, t] = (0, import_utils.createNamespace)("contact-list");
33const contactListProps = {
34 list: Array,
35 addText: String,
36 modelValue: import_utils.unknownProp,
37 defaultTagText: String
38};
39var stdin_default = (0, import_vue.defineComponent)({
40 name,
41 props: contactListProps,
42 emits: ["add", "edit", "select", "update:modelValue"],
43 setup(props, {
44 emit
45 }) {
46 const renderItem = (item, index) => {
47 const onClick = () => {
48 emit("update:modelValue", item.id);
49 emit("select", item, index);
50 };
51 const renderRightIcon = () => (0, import_vue.createVNode)(import_radio.Radio, {
52 "class": bem("radio"),
53 "name": item.id,
54 "iconSize": 18
55 }, null);
56 const renderEditIcon = () => (0, import_vue.createVNode)(import_icon.Icon, {
57 "name": "edit",
58 "class": bem("edit"),
59 "onClick": (event) => {
60 event.stopPropagation();
61 emit("edit", item, index);
62 }
63 }, null);
64 const renderContent = () => {
65 const nodes = [`${item.name}\uFF0C${item.tel}`];
66 if (item.isDefault && props.defaultTagText) {
67 nodes.push((0, import_vue.createVNode)(import_tag.Tag, {
68 "type": "primary",
69 "round": true,
70 "class": bem("item-tag")
71 }, {
72 default: () => [props.defaultTagText]
73 }));
74 }
75 return nodes;
76 };
77 return (0, import_vue.createVNode)(import_cell.Cell, {
78 "key": item.id,
79 "isLink": true,
80 "center": true,
81 "class": bem("item"),
82 "titleClass": bem("item-title"),
83 "onClick": onClick
84 }, {
85 icon: renderEditIcon,
86 title: renderContent,
87 "right-icon": renderRightIcon
88 });
89 };
90 return () => (0, import_vue.createVNode)("div", {
91 "class": bem()
92 }, [(0, import_vue.createVNode)(import_radio_group.RadioGroup, {
93 "modelValue": props.modelValue,
94 "class": bem("group")
95 }, {
96 default: () => [props.list && props.list.map(renderItem)]
97 }), (0, import_vue.createVNode)("div", {
98 "class": [bem("bottom"), "van-safe-area-bottom"]
99 }, [(0, import_vue.createVNode)(import_button.Button, {
100 "round": true,
101 "block": true,
102 "type": "primary",
103 "class": bem("add"),
104 "text": props.addText || t("addContact"),
105 "onClick": () => emit("add")
106 }, null)])]);
107 }
108});