ant-design-x-vue
Version:
Craft AI-driven interfaces effortlessly
110 lines (109 loc) • 3.07 kB
JavaScript
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
};