UNPKG

ant-design-x-vue

Version:
110 lines (109 loc) 3.07 kB
import { defineComponent as h, toRef as k, computed as i, createVNode as n, mergeProps as O } from "vue"; import { c as q, _ as $ } from "../chunks/helper-chunk.mjs"; import { b as E, E as I } from "../chunks/module-chunk.mjs"; import T from "../_util/pick-attrs.mjs"; import { Tooltip as w, Typography as M, Dropdown as N, Menu as R } from "ant-design-vue"; import c from "../_util/hooks/use-state.mjs"; const j = /* @__PURE__ */ h({ name: "AXConversationsItem", __name: "ConversationsItem", props: { info: { type: Object, required: !0 }, prefixCls: { type: String, required: !1 }, direction: { required: !1 }, menu: { type: Object, required: !1 }, active: { type: Boolean, required: !1 }, onClick: { type: Function, required: !1 } }, setup(e, { expose: u }) { u(); const f = q(e, ["prefixCls", "info", "class", "direction", "onClick", "active", "menu"]); k(e, "class"); const d = i(() => T(f, { aria: !0, data: !0, attr: !0 })), m = (t) => { t.stopPropagation(); }, o = i(() => e.info.disabled), [g, v] = c(!1), [C, r] = c(!1), p = i(() => E(e.class, `${e.prefixCls}-item`, { [`${e.prefixCls}-item-active`]: e.active && !o.value }, { [`${e.prefixCls}-item-disabled`]: o.value })), x = () => { !o.value && e.onClick && e.onClick(e.info); }, b = (t) => { t && r(!t); }, a = i(() => { var t; return (t = e.menu) == null ? void 0 : t.trigger; }), s = i(() => { const { trigger: t, ...l } = e.menu || {}; return l; }), y = i(() => { var t; return (t = s.value) == null ? void 0 : t.getPopupContainer; }), P = (t) => { const l = n(I, { onClick: m, class: `${e.prefixCls}-menu-icon` }, null); return a.value ? typeof a.value == "function" ? a.value(t, { originNode: l }) : a.value : l; }; return () => n(w, { title: e.info.label, open: g.value && C.value, onOpenChange: r, placement: e.direction === "rtl" ? "left" : "right" }, { default: () => [n("li", O(d.value, { class: p.value, onClick: x }), [e.info.icon && n("div", { class: `${e.prefixCls}-icon` }, [e.info.icon]), n(M.Text, { class: `${e.prefixCls}-label`, ellipsis: { onEllipsis: v } }, { default: () => [e.info.label] }), !o.value && e.menu && n(N, { placement: e.direction === "rtl" ? "bottomLeft" : "bottomRight", trigger: ["click"], disabled: o.value, onOpenChange: b, getPopupContainer: y.value }, { default: () => P(e.info), overlay: () => n(R, s.value, null) })])] }); } }), L = /* @__PURE__ */ $(j, [["__file", "/Users/wangzhichao/办公/code/github/ant-design-x-vue-pure/ant-design-x-vue/src/conversations/ConversationsItem.vue"]]); export { L as default };