ContactCard.mjs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { defineComponent, createVNode as _createVNode } from "vue";
  2. import { truthProp, makeStringProp, createNamespace } from "../utils/index.mjs";
  3. import { Cell } from "../cell/index.mjs";
  4. const [name, bem, t] = createNamespace("contact-card");
  5. const contactCardProps = {
  6. tel: String,
  7. name: String,
  8. type: makeStringProp("add"),
  9. addText: String,
  10. editable: truthProp
  11. };
  12. var stdin_default = defineComponent({
  13. name,
  14. props: contactCardProps,
  15. emits: ["click"],
  16. setup(props, {
  17. emit
  18. }) {
  19. const onClick = (event) => {
  20. if (props.editable) {
  21. emit("click", event);
  22. }
  23. };
  24. const renderContent = () => {
  25. if (props.type === "add") {
  26. return props.addText || t("addContact");
  27. }
  28. return [_createVNode("div", null, [`${t("name")}\uFF1A${props.name}`]), _createVNode("div", null, [`${t("tel")}\uFF1A${props.tel}`])];
  29. };
  30. return () => _createVNode(Cell, {
  31. "center": true,
  32. "icon": props.type === "edit" ? "contact" : "add-square",
  33. "class": bem([props.type]),
  34. "border": false,
  35. "isLink": props.editable,
  36. "titleClass": bem("title"),
  37. "onClick": onClick
  38. }, {
  39. title: renderContent
  40. });
  41. }
  42. });
  43. export {
  44. contactCardProps,
  45. stdin_default as default
  46. };