vlite3 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/AttachmentsList/AttachmentsList.vue.d.ts +1 -0
- package/components/AttachmentsList/AttachmentsList.vue.js +108 -62
- package/components/AttachmentsList/types.d.ts +5 -0
- package/components/Chat/ChatBubble.vue.d.ts +5 -0
- package/components/Chat/ChatBubble.vue.js +147 -0
- package/components/Chat/ChatBubble.vue2.js +4 -0
- package/components/Chat/ChatInterface.vue.d.ts +18 -2
- package/components/Chat/ChatInterface.vue.js +298 -0
- package/components/Chat/ChatInterface.vue2.js +4 -0
- package/components/Chat/index.d.ts +1 -1
- package/components/Clock/Clock.vue.js +1 -1
- package/components/CommandPalette/CommandPaletteContent.vue2.js +1 -1
- package/components/CommandPalette/{CommandPaletteItem.vue.js → CommandPaletteItem.vue2.js} +1 -1
- package/components/Form/utils/form.utils.d.ts +8 -5
- package/components/Form/utils/form.utils.js +142 -169
- package/components/Kanban/Kanban.vue.d.ts +3 -1
- package/components/Kanban/Kanban.vue.js +2 -2
- package/components/Kanban/Kanban.vue2.js +55 -35
- package/components/Kanban/types.d.ts +15 -0
- package/components/NavbarCommandPalette.vue.js +1 -1
- package/index.d.ts +1 -0
- package/index.js +23 -21
- package/package.json +1 -1
- package/style.css +2 -2
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AttachmentsListProps } from './types';
|
|
2
2
|
declare const _default: import('vue').DefineComponent<AttachmentsListProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<AttachmentsListProps> & Readonly<{}>, {
|
|
3
|
+
variant: "default" | "inline";
|
|
3
4
|
canDownload: boolean;
|
|
4
5
|
canView: boolean;
|
|
5
6
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
|
|
@@ -1,82 +1,128 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import p from "../
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { $t as
|
|
6
|
-
import { downloadFile as
|
|
7
|
-
import
|
|
8
|
-
const M = { class: "w-full" },
|
|
1
|
+
import { defineComponent as C, computed as _, openBlock as n, createElementBlock as a, Fragment as f, renderList as z, normalizeClass as l, createElementVNode as i, createVNode as m, toDisplayString as w, createBlock as y, unref as r, withCtx as g, createCommentVNode as u } from "vue";
|
|
2
|
+
import p from "../Modal.vue.js";
|
|
3
|
+
import x from "../Icon.vue.js";
|
|
4
|
+
import k from "../Button.vue.js";
|
|
5
|
+
import { $t as s } from "../../utils/i18n.js";
|
|
6
|
+
import { downloadFile as P } from "../../utils/functions.js";
|
|
7
|
+
import N from "../FilePreview/FilePreview.vue.js";
|
|
8
|
+
const M = { class: "w-full" }, V = {
|
|
9
9
|
key: 0,
|
|
10
|
-
class: "flex flex-col gap-
|
|
11
|
-
},
|
|
10
|
+
class: "flex flex-col gap-1.5"
|
|
11
|
+
}, $ = { class: "flex items-center gap-2 overflow-hidden min-w-0" }, A = { class: "flex flex-col overflow-hidden leading-tight min-w-0" }, F = ["title"], U = { class: "flex items-center gap-0.5 shrink-0" }, j = ["aria-label"], S = ["aria-label", "onClick"], E = {
|
|
12
12
|
key: 1,
|
|
13
13
|
class: "text-sm text-muted-foreground italic bg-muted/10 p-4 rounded-lg border border-dashed border-border text-center"
|
|
14
|
-
},
|
|
14
|
+
}, O = /* @__PURE__ */ C({
|
|
15
15
|
__name: "AttachmentsList",
|
|
16
16
|
props: {
|
|
17
17
|
attachments: {},
|
|
18
18
|
canView: { type: Boolean, default: !0 },
|
|
19
|
-
canDownload: { type: Boolean, default: !0 }
|
|
19
|
+
canDownload: { type: Boolean, default: !0 },
|
|
20
|
+
variant: { default: "default" }
|
|
20
21
|
},
|
|
21
|
-
setup(
|
|
22
|
-
const
|
|
23
|
-
if (!
|
|
24
|
-
const
|
|
25
|
-
return parseFloat((
|
|
26
|
-
},
|
|
27
|
-
|
|
22
|
+
setup(e) {
|
|
23
|
+
const c = e, v = _(() => c.attachments ? Array.isArray(c.attachments) ? c.attachments : [c.attachments] : []), B = (o) => {
|
|
24
|
+
if (!o) return "0 Bytes";
|
|
25
|
+
const h = 1024, t = ["Bytes", "KB", "MB", "GB"], d = Math.floor(Math.log(o) / Math.log(h));
|
|
26
|
+
return parseFloat((o / Math.pow(h, d)).toFixed(2)) + " " + t[d];
|
|
27
|
+
}, b = async (o) => {
|
|
28
|
+
o.fileUrl && await P(o.fileUrl, o.fileName || "attachment");
|
|
28
29
|
};
|
|
29
|
-
return (
|
|
30
|
-
|
|
31
|
-
(
|
|
32
|
-
key:
|
|
33
|
-
class:
|
|
30
|
+
return (o, h) => (n(), a("div", M, [
|
|
31
|
+
v.value.length > 0 ? (n(), a("div", V, [
|
|
32
|
+
(n(!0), a(f, null, z(v.value, (t, d) => (n(), a("div", {
|
|
33
|
+
key: d,
|
|
34
|
+
class: l([
|
|
35
|
+
"flex items-center justify-between gap-2 px-2.5 py-2 rounded-lg transition-colors",
|
|
36
|
+
e.variant === "inline" ? "bg-[#79797924] hover:bg-[#7979793f]" : "border border-border bg-muted/20 hover:bg-muted/40"
|
|
37
|
+
])
|
|
34
38
|
}, [
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
39
|
+
i("div", $, [
|
|
40
|
+
i("div", {
|
|
41
|
+
class: l(["w-7 h-7 rounded flex items-center justify-center shrink-0", e.variant === "inline" ? "bg-[#79797924] hover:bg-[#7979793f]" : "bg-primary/10"])
|
|
42
|
+
}, [
|
|
43
|
+
m(x, {
|
|
38
44
|
icon: "lucide:file-text",
|
|
39
|
-
class: "w-5 h-5"
|
|
40
|
-
})
|
|
41
|
-
]),
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
class: "text-
|
|
45
|
-
title:
|
|
46
|
-
},
|
|
47
|
-
|
|
45
|
+
class: l(["w-3.5 h-3.5", e.variant === "inline" ? "opacity-75" : "text-primary"])
|
|
46
|
+
}, null, 8, ["class"])
|
|
47
|
+
], 2),
|
|
48
|
+
i("div", A, [
|
|
49
|
+
i("span", {
|
|
50
|
+
class: l(["text-xs font-medium truncate", e.variant === "inline" ? "" : "text-foreground"]),
|
|
51
|
+
title: t.fileName
|
|
52
|
+
}, w(t.fileName || "Unnamed File"), 11, F),
|
|
53
|
+
i("span", {
|
|
54
|
+
class: l(["text-[10px]", e.variant === "inline" ? "opacity-50" : "text-muted-foreground"])
|
|
55
|
+
}, w(B(t.fileSize)), 3)
|
|
48
56
|
])
|
|
49
57
|
]),
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
i("div", U, [
|
|
59
|
+
e.variant === "inline" ? (n(), a(f, { key: 0 }, [
|
|
60
|
+
e.canView ? (n(), y(p, {
|
|
61
|
+
key: 0,
|
|
62
|
+
title: t.fileName || r(s)("common.words.preview", "Preview"),
|
|
63
|
+
"max-width": "max-w-3xl",
|
|
64
|
+
body: r(N),
|
|
65
|
+
bodyProps: { url: t.fileUrl, name: t.fileName, canDownload: e.canDownload }
|
|
66
|
+
}, {
|
|
67
|
+
trigger: g(() => [
|
|
68
|
+
i("button", {
|
|
69
|
+
type: "button",
|
|
70
|
+
class: "inline-flex items-center justify-center w-6 h-6 rounded opacity-60 hover:opacity-100 bg-transparent! transition-all",
|
|
71
|
+
"aria-label": r(s)("common.words.preview", "Preview")
|
|
72
|
+
}, [
|
|
73
|
+
m(x, {
|
|
74
|
+
icon: "lucide:eye",
|
|
75
|
+
class: "w-3.5 h-3.5"
|
|
76
|
+
})
|
|
77
|
+
], 8, j)
|
|
78
|
+
]),
|
|
79
|
+
_: 1
|
|
80
|
+
}, 8, ["title", "body", "bodyProps"])) : u("", !0),
|
|
81
|
+
e.canDownload ? (n(), a("button", {
|
|
82
|
+
key: 1,
|
|
83
|
+
type: "button",
|
|
84
|
+
class: "inline-flex items-center justify-center w-6 h-6 rounded opacity-60 hover:opacity-100 bg-transparent! transition-all",
|
|
85
|
+
"aria-label": r(s)("common.words.download", "Download"),
|
|
86
|
+
onClick: (D) => b(t)
|
|
87
|
+
}, [
|
|
88
|
+
m(x, {
|
|
89
|
+
icon: "lucide:download",
|
|
90
|
+
class: "w-3.5 h-3.5"
|
|
63
91
|
})
|
|
64
|
-
]),
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
92
|
+
], 8, S)) : u("", !0)
|
|
93
|
+
], 64)) : (n(), a(f, { key: 1 }, [
|
|
94
|
+
e.canView ? (n(), y(p, {
|
|
95
|
+
key: 0,
|
|
96
|
+
title: t.fileName || r(s)("common.words.preview", "Preview"),
|
|
97
|
+
"max-width": "max-w-3xl",
|
|
98
|
+
body: r(N),
|
|
99
|
+
bodyProps: { url: t.fileUrl, name: t.fileName, canDownload: e.canDownload }
|
|
100
|
+
}, {
|
|
101
|
+
trigger: g(() => [
|
|
102
|
+
m(k, {
|
|
103
|
+
variant: "ghost",
|
|
104
|
+
size: "xs",
|
|
105
|
+
icon: "lucide:eye",
|
|
106
|
+
class: "h-6 w-6 px-0"
|
|
107
|
+
})
|
|
108
|
+
]),
|
|
109
|
+
_: 1
|
|
110
|
+
}, 8, ["title", "body", "bodyProps"])) : u("", !0),
|
|
111
|
+
e.canDownload ? (n(), y(k, {
|
|
112
|
+
key: 1,
|
|
113
|
+
variant: "ghost",
|
|
114
|
+
size: "xs",
|
|
115
|
+
icon: "lucide:download",
|
|
116
|
+
class: "h-6 w-6 px-0",
|
|
117
|
+
onClick: (D) => b(t)
|
|
118
|
+
}, null, 8, ["onClick"])) : u("", !0)
|
|
119
|
+
], 64))
|
|
74
120
|
])
|
|
75
|
-
]))), 128))
|
|
76
|
-
])) : (
|
|
121
|
+
], 2))), 128))
|
|
122
|
+
])) : (n(), a("div", E, w(r(s)("common.words.noAttachments", "No attachments found.")), 1))
|
|
77
123
|
]));
|
|
78
124
|
}
|
|
79
125
|
});
|
|
80
126
|
export {
|
|
81
|
-
|
|
127
|
+
O as default
|
|
82
128
|
};
|
|
@@ -8,4 +8,9 @@ export interface AttachmentsListProps {
|
|
|
8
8
|
attachments?: AttachmentItem | AttachmentItem[];
|
|
9
9
|
canView?: boolean;
|
|
10
10
|
canDownload?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* 'default' - standalone card style with border/muted background
|
|
13
|
+
* 'inline' - transparent overlay style for embedding inside chat bubbles
|
|
14
|
+
*/
|
|
15
|
+
variant?: 'default' | 'inline';
|
|
11
16
|
}
|
|
@@ -7,6 +7,11 @@ type __VLS_Props = {
|
|
|
7
7
|
showTimestamp: boolean;
|
|
8
8
|
allowDeleteAll?: boolean;
|
|
9
9
|
allowEditAll?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* When true, the delete button requires a second click (confirmation) before emitting the delete event.
|
|
12
|
+
* Defaults to true.
|
|
13
|
+
*/
|
|
14
|
+
confirmDelete?: boolean;
|
|
10
15
|
};
|
|
11
16
|
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
|
|
12
17
|
delete: (id: string | number) => any;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { defineComponent as y, computed as b, ref as k, openBlock as t, createElementBlock as l, normalizeClass as o, createVNode as u, createCommentVNode as s, createElementVNode as n, toDisplayString as c, unref as B, createBlock as C, withModifiers as S } from "vue";
|
|
2
|
+
import D from "../Avatar.vue.js";
|
|
3
|
+
import f from "../Button.vue.js";
|
|
4
|
+
import p from "../AttachmentsList/AttachmentsList.vue.js";
|
|
5
|
+
const T = {
|
|
6
|
+
key: 0,
|
|
7
|
+
class: "flex-shrink-0 flex flex-col justify-end pb-1"
|
|
8
|
+
}, A = {
|
|
9
|
+
key: 0,
|
|
10
|
+
class: "mb-1 text-xs text-muted-foreground ml-1"
|
|
11
|
+
}, E = {
|
|
12
|
+
key: 0,
|
|
13
|
+
class: "text-sm whitespace-pre-wrap leading-relaxed"
|
|
14
|
+
}, N = { class: "opacity-0 group-hover/bubble:opacity-100 focus-within:opacity-100 transition-opacity flex gap-1 px-2 pointer-events-none group-hover/bubble:pointer-events-auto focus-within:pointer-events-auto" }, z = {
|
|
15
|
+
key: 1,
|
|
16
|
+
class: "relative flex items-center"
|
|
17
|
+
}, $ = {
|
|
18
|
+
key: 1,
|
|
19
|
+
class: "mt-1 text-[10px] text-muted-foreground mx-1"
|
|
20
|
+
}, M = /* @__PURE__ */ y({
|
|
21
|
+
__name: "ChatBubble",
|
|
22
|
+
props: {
|
|
23
|
+
message: {},
|
|
24
|
+
isSender: { type: Boolean },
|
|
25
|
+
showAvatar: { type: Boolean },
|
|
26
|
+
showUserInfo: { type: Boolean },
|
|
27
|
+
showTimestamp: { type: Boolean },
|
|
28
|
+
allowDeleteAll: { type: Boolean },
|
|
29
|
+
allowEditAll: { type: Boolean },
|
|
30
|
+
confirmDelete: { type: Boolean }
|
|
31
|
+
},
|
|
32
|
+
emits: ["delete", "edit"],
|
|
33
|
+
setup(e, { emit: g }) {
|
|
34
|
+
const r = e, m = g, x = b(() => r.message.timestamp ? new Date(r.message.timestamp).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }) : ""), a = k(!1);
|
|
35
|
+
let i = null;
|
|
36
|
+
const v = () => {
|
|
37
|
+
if (r.confirmDelete === !1) {
|
|
38
|
+
m("delete", r.message.id);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
a.value ? (a.value = !1, i && (clearTimeout(i), i = null), m("delete", r.message.id)) : (a.value = !0, i = setTimeout(() => {
|
|
42
|
+
a.value = !1, i = null;
|
|
43
|
+
}, 3e3));
|
|
44
|
+
}, h = () => {
|
|
45
|
+
a.value = !1, i && (clearTimeout(i), i = null);
|
|
46
|
+
};
|
|
47
|
+
return (w, d) => (t(), l("div", {
|
|
48
|
+
class: o(["flex w-full gap-3 group", e.isSender ? "flex-row-reverse" : "flex-row"])
|
|
49
|
+
}, [
|
|
50
|
+
e.showAvatar ? (t(), l("div", T, [
|
|
51
|
+
u(D, {
|
|
52
|
+
src: e.message.avatar,
|
|
53
|
+
alt: e.message.senderName,
|
|
54
|
+
size: "sm"
|
|
55
|
+
}, null, 8, ["src", "alt"])
|
|
56
|
+
])) : s("", !0),
|
|
57
|
+
n("div", {
|
|
58
|
+
class: o(["flex flex-col max-w-[85%] md:max-w-[75%]", e.isSender ? "items-end" : "items-start"])
|
|
59
|
+
}, [
|
|
60
|
+
e.showUserInfo && e.message.senderName && !e.isSender ? (t(), l("div", A, c(e.message.senderName), 1)) : s("", !0),
|
|
61
|
+
n("div", {
|
|
62
|
+
class: o(["relative flex items-center group/bubble", e.isSender ? "flex-row-reverse" : "flex-row"])
|
|
63
|
+
}, [
|
|
64
|
+
n("div", {
|
|
65
|
+
class: o(["px-3.5 py-2.5 rounded-2xl break-words relative min-w-[60px]", [
|
|
66
|
+
e.isSender ? "bg-primary text-primary-foreground rounded-br-sm" : "bg-muted text-foreground rounded-bl-sm"
|
|
67
|
+
]])
|
|
68
|
+
}, [
|
|
69
|
+
e.message.text ? (t(), l("p", E, c(e.message.text), 1)) : s("", !0),
|
|
70
|
+
e.message.attachments && e.message.attachments.length > 0 ? (t(), l("div", {
|
|
71
|
+
key: 1,
|
|
72
|
+
class: o({ "mt-2": e.message.text })
|
|
73
|
+
}, [
|
|
74
|
+
u(B(p), {
|
|
75
|
+
attachments: e.message.attachments,
|
|
76
|
+
variant: "inline",
|
|
77
|
+
"can-view": !0,
|
|
78
|
+
"can-download": !0
|
|
79
|
+
}, null, 8, ["attachments"])
|
|
80
|
+
], 2)) : s("", !0),
|
|
81
|
+
e.message.isEdited ? (t(), l("div", {
|
|
82
|
+
key: 2,
|
|
83
|
+
class: o(["text-[10px] opacity-70 mt-0.5 text-right", e.isSender ? "text-primary-foreground" : "text-muted-foreground"])
|
|
84
|
+
}, " (edited) ", 2)) : s("", !0)
|
|
85
|
+
], 2),
|
|
86
|
+
n("div", N, [
|
|
87
|
+
e.isSender || e.allowEditAll ? (t(), C(f, {
|
|
88
|
+
key: 0,
|
|
89
|
+
variant: "ghost",
|
|
90
|
+
size: "xs",
|
|
91
|
+
icon: "lucide:pencil",
|
|
92
|
+
rounded: "full",
|
|
93
|
+
class: "text-muted-foreground hover:text-foreground h-7 w-7",
|
|
94
|
+
onClick: d[0] || (d[0] = (j) => m("edit", e.message)),
|
|
95
|
+
"aria-label": "Edit message"
|
|
96
|
+
})) : s("", !0),
|
|
97
|
+
e.isSender || e.allowDeleteAll ? (t(), l("div", z, [
|
|
98
|
+
u(f, {
|
|
99
|
+
variant: "ghost",
|
|
100
|
+
size: "xs",
|
|
101
|
+
icon: a.value ? "lucide:check" : "lucide:trash-2",
|
|
102
|
+
rounded: "full",
|
|
103
|
+
class: "h-7 w-7 transition-colors",
|
|
104
|
+
onClick: v,
|
|
105
|
+
"aria-label": a.value ? "Confirm delete" : "Delete message"
|
|
106
|
+
}, null, 8, ["icon", "aria-label"]),
|
|
107
|
+
a.value ? (t(), l("button", {
|
|
108
|
+
key: 0,
|
|
109
|
+
class: "absolute -top-1.5 -right-1.5 w-3.5 h-3.5 rounded-full bg-muted border border-border flex items-center justify-center text-muted-foreground hover:text-foreground transition-colors",
|
|
110
|
+
onClick: S(h, ["stop"]),
|
|
111
|
+
"aria-label": "Cancel delete"
|
|
112
|
+
}, [...d[1] || (d[1] = [
|
|
113
|
+
n("svg", {
|
|
114
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
115
|
+
viewBox: "0 0 24 24",
|
|
116
|
+
fill: "none",
|
|
117
|
+
stroke: "currentColor",
|
|
118
|
+
"stroke-width": "3",
|
|
119
|
+
"stroke-linecap": "round",
|
|
120
|
+
"stroke-linejoin": "round",
|
|
121
|
+
class: "w-2 h-2"
|
|
122
|
+
}, [
|
|
123
|
+
n("line", {
|
|
124
|
+
x1: "18",
|
|
125
|
+
y1: "6",
|
|
126
|
+
x2: "6",
|
|
127
|
+
y2: "18"
|
|
128
|
+
}),
|
|
129
|
+
n("line", {
|
|
130
|
+
x1: "6",
|
|
131
|
+
y1: "6",
|
|
132
|
+
x2: "18",
|
|
133
|
+
y2: "18"
|
|
134
|
+
})
|
|
135
|
+
], -1)
|
|
136
|
+
])])) : s("", !0)
|
|
137
|
+
])) : s("", !0)
|
|
138
|
+
])
|
|
139
|
+
], 2),
|
|
140
|
+
e.showTimestamp && e.message.timestamp ? (t(), l("div", $, c(x.value), 1)) : s("", !0)
|
|
141
|
+
], 2)
|
|
142
|
+
], 2));
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
export {
|
|
146
|
+
M as default
|
|
147
|
+
};
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
export interface ChatAttachment {
|
|
2
|
+
fileUrl: string;
|
|
3
|
+
fileName?: string;
|
|
4
|
+
fileType?: string;
|
|
5
|
+
fileSize?: number;
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
}
|
|
1
8
|
export interface ChatMessage {
|
|
2
9
|
id: string | number;
|
|
3
10
|
text: string;
|
|
@@ -6,6 +13,7 @@ export interface ChatMessage {
|
|
|
6
13
|
avatar?: string;
|
|
7
14
|
timestamp?: string | Date;
|
|
8
15
|
isEdited?: boolean;
|
|
16
|
+
attachments?: ChatAttachment[];
|
|
9
17
|
[key: string]: any;
|
|
10
18
|
}
|
|
11
19
|
type __VLS_Props = {
|
|
@@ -18,20 +26,28 @@ type __VLS_Props = {
|
|
|
18
26
|
isLoadingMore?: boolean;
|
|
19
27
|
allowDeleteAll?: boolean;
|
|
20
28
|
allowEditAll?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* When true (default), the delete button requires a second click to confirm deletion.
|
|
31
|
+
* Set to false to delete immediately on first click.
|
|
32
|
+
*/
|
|
33
|
+
confirmDelete?: boolean;
|
|
34
|
+
folderId?: string;
|
|
35
|
+
maxFileSize?: number;
|
|
21
36
|
};
|
|
22
37
|
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
|
|
23
38
|
delete: (id: string | number) => any;
|
|
24
|
-
add: (text: string) => any;
|
|
39
|
+
add: (text: string, attachments?: ChatAttachment[]) => any;
|
|
25
40
|
refetch: () => any;
|
|
26
41
|
edit: (message: ChatMessage) => any;
|
|
27
42
|
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
28
43
|
onDelete?: (id: string | number) => any;
|
|
29
|
-
onAdd?: (text: string) => any;
|
|
44
|
+
onAdd?: (text: string, attachments?: ChatAttachment[]) => any;
|
|
30
45
|
onRefetch?: () => any;
|
|
31
46
|
onEdit?: (message: ChatMessage) => any;
|
|
32
47
|
}>, {
|
|
33
48
|
placeholder: string;
|
|
34
49
|
isLoadingMore: boolean;
|
|
50
|
+
confirmDelete: boolean;
|
|
35
51
|
showAvatar: boolean;
|
|
36
52
|
showUserInfo: boolean;
|
|
37
53
|
showTimestamp: boolean;
|