@mulmoclaude/collection-plugin 0.5.21 → 0.6.0
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/dist/style.css +51 -1
- package/dist/vue/components/CollectionRemoteViewPreview.vue.d.ts +25 -0
- package/dist/vue/components/CollectionRemoteViewPreview.vue.d.ts.map +1 -0
- package/dist/vue/components/CollectionView.vue.d.ts.map +1 -1
- package/dist/vue/index.d.ts +1 -1
- package/dist/vue/index.d.ts.map +1 -1
- package/dist/vue/uiContext.d.ts +22 -0
- package/dist/vue/uiContext.d.ts.map +1 -1
- package/dist/vue.cjs +196 -73
- package/dist/vue.cjs.map +1 -1
- package/dist/vue.js +196 -73
- package/dist/vue.js.map +1 -1
- package/package.json +8 -8
package/dist/vue.cjs
CHANGED
|
@@ -26,6 +26,7 @@ let vue = require("vue");
|
|
|
26
26
|
let vue_i18n = require("vue-i18n");
|
|
27
27
|
let vuedraggable = require("vuedraggable");
|
|
28
28
|
vuedraggable = __toESM(vuedraggable, 1);
|
|
29
|
+
let _mulmoclaude_core_remote_view = require("@mulmoclaude/core/remote-view");
|
|
29
30
|
let _mulmoclaude_core_translation_client = require("@mulmoclaude/core/translation/client");
|
|
30
31
|
//#region src/vue/uiContext.ts
|
|
31
32
|
var current = null;
|
|
@@ -1209,18 +1210,18 @@ var CollectionRecordModal_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
1209
1210
|
});
|
|
1210
1211
|
//#endregion
|
|
1211
1212
|
//#region src/vue/components/CollectionCalendarView.vue?vue&type=script&setup=true&lang.ts
|
|
1212
|
-
var _hoisted_1$
|
|
1213
|
+
var _hoisted_1$14 = {
|
|
1213
1214
|
class: "flex flex-col gap-3",
|
|
1214
1215
|
"data-testid": "collection-calendar"
|
|
1215
1216
|
};
|
|
1216
|
-
var _hoisted_2$
|
|
1217
|
-
var _hoisted_3$
|
|
1218
|
-
var _hoisted_4$
|
|
1219
|
-
var _hoisted_5$
|
|
1217
|
+
var _hoisted_2$13 = { class: "flex items-center gap-2" };
|
|
1218
|
+
var _hoisted_3$13 = ["aria-label"];
|
|
1219
|
+
var _hoisted_4$13 = ["aria-label"];
|
|
1220
|
+
var _hoisted_5$12 = {
|
|
1220
1221
|
class: "text-sm font-bold text-slate-800 flex-1",
|
|
1221
1222
|
"data-testid": "collection-calendar-month"
|
|
1222
1223
|
};
|
|
1223
|
-
var _hoisted_6$
|
|
1224
|
+
var _hoisted_6$11 = { class: "grid grid-cols-7 gap-1 text-[10px] font-bold text-slate-400 uppercase tracking-wider select-none" };
|
|
1224
1225
|
var _hoisted_7$10 = { class: "grid grid-cols-7 gap-1" };
|
|
1225
1226
|
var _hoisted_8$10 = [
|
|
1226
1227
|
"aria-label",
|
|
@@ -1350,23 +1351,23 @@ var CollectionCalendarView_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
1350
1351
|
viewMonth.value = now.getMonth() + 1;
|
|
1351
1352
|
}
|
|
1352
1353
|
return (_ctx, _cache) => {
|
|
1353
|
-
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$
|
|
1354
|
-
(0, vue.createElementVNode)("div", _hoisted_2$
|
|
1354
|
+
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$14, [
|
|
1355
|
+
(0, vue.createElementVNode)("div", _hoisted_2$13, [
|
|
1355
1356
|
(0, vue.createElementVNode)("button", {
|
|
1356
1357
|
type: "button",
|
|
1357
1358
|
class: "h-8 w-8 flex items-center justify-center rounded text-slate-500 hover:bg-slate-100 transition-colors",
|
|
1358
1359
|
"aria-label": (0, vue.unref)(t)("collectionsView.calendarPrevMonth"),
|
|
1359
1360
|
"data-testid": "collection-calendar-prev",
|
|
1360
1361
|
onClick: _cache[0] || (_cache[0] = ($event) => stepMonth(-1))
|
|
1361
|
-
}, [..._cache[2] || (_cache[2] = [(0, vue.createElementVNode)("span", { class: "material-icons text-lg" }, "chevron_left", -1)])], 8, _hoisted_3$
|
|
1362
|
+
}, [..._cache[2] || (_cache[2] = [(0, vue.createElementVNode)("span", { class: "material-icons text-lg" }, "chevron_left", -1)])], 8, _hoisted_3$13),
|
|
1362
1363
|
(0, vue.createElementVNode)("button", {
|
|
1363
1364
|
type: "button",
|
|
1364
1365
|
class: "h-8 w-8 flex items-center justify-center rounded text-slate-500 hover:bg-slate-100 transition-colors",
|
|
1365
1366
|
"aria-label": (0, vue.unref)(t)("collectionsView.calendarNextMonth"),
|
|
1366
1367
|
"data-testid": "collection-calendar-next",
|
|
1367
1368
|
onClick: _cache[1] || (_cache[1] = ($event) => stepMonth(1))
|
|
1368
|
-
}, [..._cache[3] || (_cache[3] = [(0, vue.createElementVNode)("span", { class: "material-icons text-lg" }, "chevron_right", -1)])], 8, _hoisted_4$
|
|
1369
|
-
(0, vue.createElementVNode)("h3", _hoisted_5$
|
|
1369
|
+
}, [..._cache[3] || (_cache[3] = [(0, vue.createElementVNode)("span", { class: "material-icons text-lg" }, "chevron_right", -1)])], 8, _hoisted_4$13),
|
|
1370
|
+
(0, vue.createElementVNode)("h3", _hoisted_5$12, (0, vue.toDisplayString)(monthLabel.value), 1),
|
|
1370
1371
|
(0, vue.createElementVNode)("button", {
|
|
1371
1372
|
type: "button",
|
|
1372
1373
|
class: "h-8 px-2.5 flex items-center gap-1 rounded border border-slate-200 bg-white text-slate-600 hover:bg-slate-50 text-xs font-bold transition-colors",
|
|
@@ -1374,7 +1375,7 @@ var CollectionCalendarView_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
1374
1375
|
onClick: goToday
|
|
1375
1376
|
}, (0, vue.toDisplayString)((0, vue.unref)(t)("collectionsView.calendarToday")), 1)
|
|
1376
1377
|
]),
|
|
1377
|
-
(0, vue.createElementVNode)("div", _hoisted_6$
|
|
1378
|
+
(0, vue.createElementVNode)("div", _hoisted_6$11, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(weekdayLabels.value, (label, idx) => {
|
|
1378
1379
|
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
|
|
1379
1380
|
key: idx,
|
|
1380
1381
|
class: "px-1 py-1 text-center"
|
|
@@ -1415,18 +1416,18 @@ var CollectionCalendarView_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
1415
1416
|
});
|
|
1416
1417
|
//#endregion
|
|
1417
1418
|
//#region src/vue/components/CollectionDayView.vue?vue&type=script&setup=true&lang.ts
|
|
1418
|
-
var _hoisted_1$
|
|
1419
|
-
var _hoisted_2$
|
|
1419
|
+
var _hoisted_1$13 = { class: "flex items-center gap-2 border-b border-slate-200 px-4 py-3" };
|
|
1420
|
+
var _hoisted_2$12 = {
|
|
1420
1421
|
class: "flex-1 text-sm font-bold text-slate-800",
|
|
1421
1422
|
"data-testid": "collection-day-view-title"
|
|
1422
1423
|
};
|
|
1423
|
-
var _hoisted_3$
|
|
1424
|
-
var _hoisted_4$
|
|
1425
|
-
var _hoisted_5$
|
|
1424
|
+
var _hoisted_3$12 = ["aria-label"];
|
|
1425
|
+
var _hoisted_4$12 = ["aria-label"];
|
|
1426
|
+
var _hoisted_5$11 = {
|
|
1426
1427
|
key: 0,
|
|
1427
1428
|
class: "px-4 py-10 text-center text-sm text-slate-400"
|
|
1428
1429
|
};
|
|
1429
|
-
var _hoisted_6$
|
|
1430
|
+
var _hoisted_6$10 = { class: "absolute -top-2 left-0 w-10 pr-1 text-right text-[10px] tabular-nums text-slate-400" };
|
|
1430
1431
|
var _hoisted_7$9 = {
|
|
1431
1432
|
class: "absolute inset-y-0 right-0",
|
|
1432
1433
|
style: { "left": "2.75rem" }
|
|
@@ -1607,8 +1608,8 @@ var CollectionDayView_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
1607
1608
|
role: "dialog",
|
|
1608
1609
|
"aria-modal": "true"
|
|
1609
1610
|
}, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(["flex min-h-0 flex-col", __props.showDetail ? "w-80 shrink-0 border-r border-slate-200" : "w-full"]) }, [
|
|
1610
|
-
(0, vue.createElementVNode)("div", _hoisted_1$
|
|
1611
|
-
(0, vue.createElementVNode)("h3", _hoisted_2$
|
|
1611
|
+
(0, vue.createElementVNode)("div", _hoisted_1$13, [
|
|
1612
|
+
(0, vue.createElementVNode)("h3", _hoisted_2$12, (0, vue.toDisplayString)(dayLabel.value), 1),
|
|
1612
1613
|
__props.canCreate ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
|
|
1613
1614
|
key: 0,
|
|
1614
1615
|
type: "button",
|
|
@@ -1616,16 +1617,16 @@ var CollectionDayView_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
1616
1617
|
"aria-label": (0, vue.unref)(t)("collectionsView.calendarCreateOn", { date: dayKey.value }),
|
|
1617
1618
|
"data-testid": "collection-day-view-create",
|
|
1618
1619
|
onClick: onCreate
|
|
1619
|
-
}, [..._cache[3] || (_cache[3] = [(0, vue.createElementVNode)("span", { class: "material-icons text-lg" }, "add", -1)])], 8, _hoisted_3$
|
|
1620
|
+
}, [..._cache[3] || (_cache[3] = [(0, vue.createElementVNode)("span", { class: "material-icons text-lg" }, "add", -1)])], 8, _hoisted_3$12)) : (0, vue.createCommentVNode)("", true),
|
|
1620
1621
|
(0, vue.createElementVNode)("button", {
|
|
1621
1622
|
type: "button",
|
|
1622
1623
|
class: "h-8 w-8 flex items-center justify-center rounded text-slate-500 hover:bg-slate-100 transition-colors",
|
|
1623
1624
|
"aria-label": (0, vue.unref)(t)("collectionsView.dayViewClose"),
|
|
1624
1625
|
"data-testid": "collection-day-view-close",
|
|
1625
1626
|
onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
|
|
1626
|
-
}, [..._cache[4] || (_cache[4] = [(0, vue.createElementVNode)("span", { class: "material-icons text-lg" }, "close", -1)])], 8, _hoisted_4$
|
|
1627
|
+
}, [..._cache[4] || (_cache[4] = [(0, vue.createElementVNode)("span", { class: "material-icons text-lg" }, "close", -1)])], 8, _hoisted_4$12)
|
|
1627
1628
|
]),
|
|
1628
|
-
timedEntries.value.length === 0 && allDayEntries.value.length === 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_5$
|
|
1629
|
+
timedEntries.value.length === 0 && allDayEntries.value.length === 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_5$11, (0, vue.toDisplayString)((0, vue.unref)(t)("collectionsView.dayViewEmpty")), 1)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
|
|
1629
1630
|
key: 1,
|
|
1630
1631
|
ref_key: "scrollEl",
|
|
1631
1632
|
ref: scrollEl,
|
|
@@ -1639,7 +1640,7 @@ var CollectionDayView_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
1639
1640
|
key: hour,
|
|
1640
1641
|
class: "absolute left-0 right-0 border-t border-slate-100",
|
|
1641
1642
|
style: (0, vue.normalizeStyle)({ top: `${(hour - 1) * HOUR_PX}px` })
|
|
1642
|
-
}, [(0, vue.createElementVNode)("span", _hoisted_6$
|
|
1643
|
+
}, [(0, vue.createElementVNode)("span", _hoisted_6$10, (0, vue.toDisplayString)(hourLabel(hour - 1)), 1)], 4);
|
|
1643
1644
|
}), 64)), (0, vue.createElementVNode)("div", _hoisted_7$9, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(timedEntries.value, (entry) => {
|
|
1644
1645
|
return (0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
|
|
1645
1646
|
key: entry.id,
|
|
@@ -1674,15 +1675,15 @@ var CollectionDayView_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
1674
1675
|
});
|
|
1675
1676
|
//#endregion
|
|
1676
1677
|
//#region src/vue/components/CollectionKanbanView.vue?vue&type=script&setup=true&lang.ts
|
|
1677
|
-
var _hoisted_1$
|
|
1678
|
+
var _hoisted_1$12 = {
|
|
1678
1679
|
class: "h-full overflow-x-auto overflow-y-hidden",
|
|
1679
1680
|
"data-testid": "collection-kanban"
|
|
1680
1681
|
};
|
|
1681
|
-
var _hoisted_2$
|
|
1682
|
-
var _hoisted_3$
|
|
1683
|
-
var _hoisted_4$
|
|
1684
|
-
var _hoisted_5$
|
|
1685
|
-
var _hoisted_6$
|
|
1682
|
+
var _hoisted_2$11 = { class: "flex gap-3 h-full p-1 min-w-max" };
|
|
1683
|
+
var _hoisted_3$11 = ["data-testid"];
|
|
1684
|
+
var _hoisted_4$11 = { class: "flex items-center justify-between px-3 py-2 border-b border-slate-200" };
|
|
1685
|
+
var _hoisted_5$10 = { class: "flex items-center gap-2 min-w-0" };
|
|
1686
|
+
var _hoisted_6$9 = ["title"];
|
|
1686
1687
|
var _hoisted_7$8 = { class: "text-[11px] text-slate-400 shrink-0" };
|
|
1687
1688
|
var _hoisted_8$8 = [
|
|
1688
1689
|
"data-testid",
|
|
@@ -1795,15 +1796,15 @@ var CollectionKanbanView_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
1795
1796
|
emit("move", itemId(item), next);
|
|
1796
1797
|
}
|
|
1797
1798
|
return (_ctx, _cache) => {
|
|
1798
|
-
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$
|
|
1799
|
+
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$12, [(0, vue.createElementVNode)("div", _hoisted_2$11, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(columns.value, (column) => {
|
|
1799
1800
|
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
|
|
1800
1801
|
key: column.value,
|
|
1801
1802
|
"data-testid": `collection-kanban-column-${column.value || "uncategorized"}`,
|
|
1802
1803
|
class: "w-72 shrink-0 flex flex-col bg-slate-100 rounded-lg"
|
|
1803
|
-
}, [(0, vue.createElementVNode)("div", _hoisted_4$
|
|
1804
|
+
}, [(0, vue.createElementVNode)("div", _hoisted_4$11, [(0, vue.createElementVNode)("div", _hoisted_5$10, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)(["w-2 h-2 rounded-full shrink-0", (0, vue.unref)(_mulmoclaude_core_collection.resolveEnumColor)(__props.schema, __props.groupField, column.value).dot]) }, null, 2), (0, vue.createElementVNode)("span", {
|
|
1804
1805
|
class: "font-semibold text-xs text-slate-600 truncate",
|
|
1805
1806
|
title: column.label
|
|
1806
|
-
}, (0, vue.toDisplayString)(column.label), 9, _hoisted_6$
|
|
1807
|
+
}, (0, vue.toDisplayString)(column.label), 9, _hoisted_6$9)]), (0, vue.createElementVNode)("span", _hoisted_7$8, (0, vue.toDisplayString)(itemsByColumn(column.value).length), 1)]), (0, vue.createVNode)((0, vue.unref)(vuedraggable.default), {
|
|
1807
1808
|
"model-value": itemsByColumn(column.value),
|
|
1808
1809
|
"item-key": __props.schema.primaryKey,
|
|
1809
1810
|
group: "collection-kanban-cards",
|
|
@@ -1834,7 +1835,7 @@ var CollectionKanbanView_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
1834
1835
|
"model-value",
|
|
1835
1836
|
"item-key",
|
|
1836
1837
|
"onChange"
|
|
1837
|
-
])], 8, _hoisted_3$
|
|
1838
|
+
])], 8, _hoisted_3$11);
|
|
1838
1839
|
}), 128))])]);
|
|
1839
1840
|
};
|
|
1840
1841
|
}
|
|
@@ -1864,16 +1865,16 @@ function activatePathLink(event, path, stop = false) {
|
|
|
1864
1865
|
}
|
|
1865
1866
|
//#endregion
|
|
1866
1867
|
//#region src/vue/components/CollectionEmbedView.vue?vue&type=script&setup=true&lang.ts
|
|
1867
|
-
var _hoisted_1$
|
|
1868
|
+
var _hoisted_1$11 = [
|
|
1868
1869
|
"href",
|
|
1869
1870
|
"tabindex",
|
|
1870
1871
|
"data-testid"
|
|
1871
1872
|
];
|
|
1872
|
-
var _hoisted_2$
|
|
1873
|
-
var _hoisted_3$
|
|
1874
|
-
var _hoisted_4$
|
|
1875
|
-
var _hoisted_5$
|
|
1876
|
-
var _hoisted_6$
|
|
1873
|
+
var _hoisted_2$10 = { class: "flex items-center justify-between text-[10px] font-bold text-indigo-600/90 tracking-wider uppercase" };
|
|
1874
|
+
var _hoisted_3$10 = { class: "flex items-center gap-1.5" };
|
|
1875
|
+
var _hoisted_4$10 = { class: "bg-indigo-100/60 text-indigo-700 px-1.5 py-0.5 rounded font-mono font-medium lowercase" };
|
|
1876
|
+
var _hoisted_5$9 = { class: "grid gap-x-4 gap-y-3 grid-cols-2" };
|
|
1877
|
+
var _hoisted_6$8 = { class: "text-[10px] font-semibold text-slate-400 uppercase tracking-wide" };
|
|
1877
1878
|
var _hoisted_7$7 = ["data-testid"];
|
|
1878
1879
|
var _hoisted_8$7 = {
|
|
1879
1880
|
key: 0,
|
|
@@ -1917,17 +1918,17 @@ var CollectionEmbedView_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
1917
1918
|
onKeydown: [_cache[1] || (_cache[1] = (0, vue.withKeys)(($event) => (0, vue.unref)(activateRefLink)($event, __props.view.targetSlug, __props.view.recordId), ["enter"])), _cache[2] || (_cache[2] = (0, vue.withKeys)(($event) => (0, vue.unref)(activateRefLink)($event, __props.view.targetSlug, __props.view.recordId), ["space"]))]
|
|
1918
1919
|
}, [
|
|
1919
1920
|
_cache[7] || (_cache[7] = (0, vue.createElementVNode)("div", { class: "absolute left-0 top-0 bottom-0 w-1 bg-indigo-500 rounded-l-xl transition-all duration-300 group-hover:w-1.5 group-hover:bg-indigo-600" }, null, -1)),
|
|
1920
|
-
(0, vue.createElementVNode)("div", _hoisted_2$
|
|
1921
|
-
(0, vue.createElementVNode)("div", _hoisted_5$
|
|
1921
|
+
(0, vue.createElementVNode)("div", _hoisted_2$10, [(0, vue.createElementVNode)("div", _hoisted_3$10, [_cache[6] || (_cache[6] = (0, vue.createElementVNode)("span", { class: "material-icons text-sm" }, "link", -1)), (0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(__props.view.targetSlug), 1)]), (0, vue.createElementVNode)("span", _hoisted_4$10, (0, vue.toDisplayString)(__props.view.recordId), 1)]),
|
|
1922
|
+
(0, vue.createElementVNode)("div", _hoisted_5$9, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.view.rows, (row) => {
|
|
1922
1923
|
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
|
|
1923
1924
|
key: row.key,
|
|
1924
1925
|
class: "space-y-0.5"
|
|
1925
|
-
}, [(0, vue.createElementVNode)("div", _hoisted_6$
|
|
1926
|
+
}, [(0, vue.createElementVNode)("div", _hoisted_6$8, (0, vue.toDisplayString)(row.label), 1), (0, vue.createElementVNode)("div", {
|
|
1926
1927
|
class: "text-xs text-slate-700 font-medium break-words",
|
|
1927
1928
|
"data-testid": `collections-embed-${__props.fieldKey}-${row.key}`
|
|
1928
1929
|
}, [row.type === "boolean" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, [row.value === true ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_8$7, "check_circle")) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_9$7, "—"))], 64)) : row.type === "markdown" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("p", _hoisted_10$7, (0, vue.toDisplayString)(row.display), 1)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_11$7, (0, vue.toDisplayString)(row.display), 1))], 8, _hoisted_7$7)]);
|
|
1929
1930
|
}), 128))])
|
|
1930
|
-
], 40, _hoisted_1$
|
|
1931
|
+
], 40, _hoisted_1$11)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
|
|
1931
1932
|
key: 1,
|
|
1932
1933
|
class: "relative rounded-xl border border-red-100 bg-red-50/30 p-4 pl-5 shadow-sm",
|
|
1933
1934
|
"data-testid": `collections-embed-${__props.fieldKey}`
|
|
@@ -1955,12 +1956,12 @@ var CollectionEmbedView_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
1955
1956
|
});
|
|
1956
1957
|
//#endregion
|
|
1957
1958
|
//#region src/vue/components/CollectionRecordPanel.vue?vue&type=script&setup=true&lang.ts
|
|
1958
|
-
var _hoisted_1$
|
|
1959
|
-
var _hoisted_2$
|
|
1960
|
-
var _hoisted_3$
|
|
1961
|
-
var _hoisted_4$
|
|
1962
|
-
var _hoisted_5$
|
|
1963
|
-
var _hoisted_6$
|
|
1959
|
+
var _hoisted_1$10 = { class: "flex items-center gap-2 mb-4" };
|
|
1960
|
+
var _hoisted_2$9 = { class: "flex-1 min-w-0" };
|
|
1961
|
+
var _hoisted_3$9 = { class: "block text-[9px] font-bold text-slate-400 uppercase tracking-wider" };
|
|
1962
|
+
var _hoisted_4$9 = ["data-testid"];
|
|
1963
|
+
var _hoisted_5$8 = ["disabled"];
|
|
1964
|
+
var _hoisted_6$7 = {
|
|
1964
1965
|
key: 1,
|
|
1965
1966
|
class: "flex items-center gap-2"
|
|
1966
1967
|
};
|
|
@@ -2324,10 +2325,10 @@ var CollectionRecordPanel_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
2324
2325
|
onSubmit: _cache[5] || (_cache[5] = (0, vue.withModifiers)(($event) => emit("submit"), ["prevent"]))
|
|
2325
2326
|
}, {
|
|
2326
2327
|
default: (0, vue.withCtx)(() => [
|
|
2327
|
-
(0, vue.createElementVNode)("div", _hoisted_1$
|
|
2328
|
+
(0, vue.createElementVNode)("div", _hoisted_1$10, [(0, vue.createElementVNode)("div", _hoisted_2$9, [(0, vue.createElementVNode)("span", _hoisted_3$9, (0, vue.toDisplayString)(__props.collection.title), 1), (0, vue.createElementVNode)("h2", {
|
|
2328
2329
|
class: "text-base font-bold text-slate-800 truncate",
|
|
2329
2330
|
"data-testid": editing.value ? "collections-edit-title" : "collections-detail-title"
|
|
2330
|
-
}, (0, vue.toDisplayString)(headerTitle.value), 9, _hoisted_4$
|
|
2331
|
+
}, (0, vue.toDisplayString)(headerTitle.value), 9, _hoisted_4$9)]), editing.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, [(0, vue.createElementVNode)("button", {
|
|
2331
2332
|
type: "button",
|
|
2332
2333
|
class: "h-8 px-2.5 rounded text-xs font-bold text-slate-500 hover:bg-slate-200/50 transition-colors",
|
|
2333
2334
|
"data-testid": "collections-editor-cancel",
|
|
@@ -2337,7 +2338,7 @@ var CollectionRecordPanel_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
2337
2338
|
class: "h-8 px-2.5 rounded bg-indigo-600 text-white font-bold text-xs hover:bg-indigo-700 disabled:opacity-50 transition-all shadow-sm shadow-indigo-600/10",
|
|
2338
2339
|
disabled: __props.saving,
|
|
2339
2340
|
"data-testid": "collections-editor-save"
|
|
2340
|
-
}, (0, vue.toDisplayString)(__props.saving ? (0, vue.unref)(t)("common.saving") : (0, vue.unref)(t)("common.save")), 9, _hoisted_5$
|
|
2341
|
+
}, (0, vue.toDisplayString)(__props.saving ? (0, vue.unref)(t)("common.saving") : (0, vue.unref)(t)("common.save")), 9, _hoisted_5$8)], 64)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_6$7, [
|
|
2341
2342
|
((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.visibleActions, (action) => {
|
|
2342
2343
|
return (0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
|
|
2343
2344
|
key: action.id,
|
|
@@ -2618,15 +2619,15 @@ var CollectionRecordPanel_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
2618
2619
|
});
|
|
2619
2620
|
//#endregion
|
|
2620
2621
|
//#region src/vue/components/CollectionViewConfigModal.vue?vue&type=script&setup=true&lang.ts
|
|
2621
|
-
var _hoisted_1$
|
|
2622
|
+
var _hoisted_1$9 = {
|
|
2622
2623
|
"data-testid": "collection-config-modal",
|
|
2623
2624
|
class: "flex flex-col overflow-hidden"
|
|
2624
2625
|
};
|
|
2625
|
-
var _hoisted_2$
|
|
2626
|
-
var _hoisted_3$
|
|
2627
|
-
var _hoisted_4$
|
|
2628
|
-
var _hoisted_5$
|
|
2629
|
-
var _hoisted_6$
|
|
2626
|
+
var _hoisted_2$8 = { class: "flex items-center justify-between gap-2 border-b border-slate-100 px-5 py-3" };
|
|
2627
|
+
var _hoisted_3$8 = { class: "text-sm font-bold text-slate-700" };
|
|
2628
|
+
var _hoisted_4$8 = ["title", "aria-label"];
|
|
2629
|
+
var _hoisted_5$7 = { class: "overflow-y-auto px-5 py-4" };
|
|
2630
|
+
var _hoisted_6$6 = { class: "mb-2 text-[10px] font-bold uppercase tracking-wider text-slate-400" };
|
|
2630
2631
|
var _hoisted_7$5 = {
|
|
2631
2632
|
key: 0,
|
|
2632
2633
|
class: "mb-3 rounded border border-rose-200 bg-rose-50 px-3 py-2 text-xs font-medium text-rose-600",
|
|
@@ -2690,15 +2691,15 @@ var CollectionViewConfigModal_default = /* @__PURE__ */ (0, vue.defineComponent)
|
|
|
2690
2691
|
}
|
|
2691
2692
|
return (_ctx, _cache) => {
|
|
2692
2693
|
return (0, vue.openBlock)(), (0, vue.createBlock)(CollectionRecordModal_default, { onClose: _cache[1] || (_cache[1] = ($event) => emit("close")) }, {
|
|
2693
|
-
default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", _hoisted_1$
|
|
2694
|
+
default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", _hoisted_1$9, [(0, vue.createElementVNode)("header", _hoisted_2$8, [(0, vue.createElementVNode)("h2", _hoisted_3$8, (0, vue.toDisplayString)((0, vue.unref)(t)("collectionsView.config.title", { title: __props.title })), 1), (0, vue.createElementVNode)("button", {
|
|
2694
2695
|
type: "button",
|
|
2695
2696
|
class: "h-8 w-8 flex items-center justify-center rounded text-slate-400 hover:bg-slate-50 hover:text-slate-600",
|
|
2696
2697
|
title: (0, vue.unref)(t)("common.close"),
|
|
2697
2698
|
"aria-label": (0, vue.unref)(t)("common.close"),
|
|
2698
2699
|
"data-testid": "collection-config-close",
|
|
2699
2700
|
onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
|
|
2700
|
-
}, [..._cache[2] || (_cache[2] = [(0, vue.createElementVNode)("span", { class: "material-icons text-sm" }, "close", -1)])], 8, _hoisted_4$
|
|
2701
|
-
(0, vue.createElementVNode)("h3", _hoisted_6$
|
|
2701
|
+
}, [..._cache[2] || (_cache[2] = [(0, vue.createElementVNode)("span", { class: "material-icons text-sm" }, "close", -1)])], 8, _hoisted_4$8)]), (0, vue.createElementVNode)("div", _hoisted_5$7, [
|
|
2702
|
+
(0, vue.createElementVNode)("h3", _hoisted_6$6, (0, vue.toDisplayString)((0, vue.unref)(t)("collectionsView.config.viewsHeading")), 1),
|
|
2702
2703
|
error.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("p", _hoisted_7$5, (0, vue.toDisplayString)(error.value), 1)) : (0, vue.createCommentVNode)("", true),
|
|
2703
2704
|
__props.views.length > 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("ul", _hoisted_8$5, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.views, (view) => {
|
|
2704
2705
|
return (0, vue.openBlock)(), (0, vue.createElementBlock)("li", {
|
|
@@ -2726,19 +2727,19 @@ var CollectionViewConfigModal_default = /* @__PURE__ */ (0, vue.defineComponent)
|
|
|
2726
2727
|
});
|
|
2727
2728
|
//#endregion
|
|
2728
2729
|
//#region src/vue/components/CollectionCustomView.vue?vue&type=script&setup=true&lang.ts
|
|
2729
|
-
var _hoisted_1$
|
|
2730
|
-
var _hoisted_2$
|
|
2730
|
+
var _hoisted_1$8 = { class: "custom-view-container" };
|
|
2731
|
+
var _hoisted_2$7 = {
|
|
2731
2732
|
key: 0,
|
|
2732
2733
|
class: "custom-view-message",
|
|
2733
2734
|
role: "alert",
|
|
2734
2735
|
"data-testid": "collection-custom-view-error"
|
|
2735
2736
|
};
|
|
2736
|
-
var _hoisted_3$
|
|
2737
|
+
var _hoisted_3$7 = {
|
|
2737
2738
|
key: 1,
|
|
2738
2739
|
class: "custom-view-message",
|
|
2739
2740
|
"data-testid": "collection-custom-view-loading"
|
|
2740
2741
|
};
|
|
2741
|
-
var _hoisted_4$
|
|
2742
|
+
var _hoisted_4$7 = ["title", "srcdoc"];
|
|
2742
2743
|
var REMINT_LEAD_MS = 6e4;
|
|
2743
2744
|
var MIN_REMINT_DELAY_MS = 1e4;
|
|
2744
2745
|
var CollectionCustomView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ (0, vue.defineComponent)({
|
|
@@ -2860,7 +2861,7 @@ var CollectionCustomView_vue_vue_type_script_setup_true_lang_default = /*@__PURE
|
|
|
2860
2861
|
window.removeEventListener("message", onWindowMessage);
|
|
2861
2862
|
});
|
|
2862
2863
|
return (_ctx, _cache) => {
|
|
2863
|
-
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$
|
|
2864
|
+
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$8, [error.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_2$7, (0, vue.toDisplayString)((0, vue.unref)(t)("collectionsView.customViewError", { error: error.value })), 1)) : loading.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_3$7, (0, vue.toDisplayString)((0, vue.unref)(t)("collectionsView.customViewLoading")), 1)) : srcdoc.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("iframe", {
|
|
2864
2865
|
ref_key: "iframeEl",
|
|
2865
2866
|
ref: iframeEl,
|
|
2866
2867
|
key: __props.view.id,
|
|
@@ -2869,7 +2870,7 @@ var CollectionCustomView_vue_vue_type_script_setup_true_lang_default = /*@__PURE
|
|
|
2869
2870
|
srcdoc: srcdoc.value,
|
|
2870
2871
|
sandbox: "allow-scripts allow-popups allow-popups-to-escape-sandbox",
|
|
2871
2872
|
class: "w-full h-full border-0"
|
|
2872
|
-
}, null, 8, _hoisted_4$
|
|
2873
|
+
}, null, 8, _hoisted_4$7)) : (0, vue.createCommentVNode)("", true)]);
|
|
2873
2874
|
};
|
|
2874
2875
|
}
|
|
2875
2876
|
});
|
|
@@ -2884,6 +2885,110 @@ var _plugin_vue_export_helper_default = (sfc, props) => {
|
|
|
2884
2885
|
//#region src/vue/components/CollectionCustomView.vue
|
|
2885
2886
|
var CollectionCustomView_default = /*#__PURE__*/ _plugin_vue_export_helper_default(CollectionCustomView_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-b22228db"]]);
|
|
2886
2887
|
//#endregion
|
|
2888
|
+
//#region src/vue/components/CollectionRemoteViewPreview.vue?vue&type=script&setup=true&lang.ts
|
|
2889
|
+
var _hoisted_1$7 = {
|
|
2890
|
+
class: "remote-preview-container",
|
|
2891
|
+
"data-testid": "collection-remote-view-preview"
|
|
2892
|
+
};
|
|
2893
|
+
var _hoisted_2$6 = {
|
|
2894
|
+
key: 0,
|
|
2895
|
+
class: "remote-preview-message",
|
|
2896
|
+
role: "alert",
|
|
2897
|
+
"data-testid": "collection-remote-view-error"
|
|
2898
|
+
};
|
|
2899
|
+
var _hoisted_3$6 = {
|
|
2900
|
+
key: 1,
|
|
2901
|
+
class: "remote-preview-message",
|
|
2902
|
+
"data-testid": "collection-remote-view-loading"
|
|
2903
|
+
};
|
|
2904
|
+
var _hoisted_4$6 = { class: "phone-frame" };
|
|
2905
|
+
var _hoisted_5$6 = ["title", "srcdoc"];
|
|
2906
|
+
var _hoisted_6$5 = {
|
|
2907
|
+
class: "remote-preview-caption",
|
|
2908
|
+
"data-testid": "collection-remote-view-size"
|
|
2909
|
+
};
|
|
2910
|
+
//#endregion
|
|
2911
|
+
//#region src/vue/components/CollectionRemoteViewPreview.vue
|
|
2912
|
+
var CollectionRemoteViewPreview_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ (0, vue.defineComponent)({
|
|
2913
|
+
__name: "CollectionRemoteViewPreview",
|
|
2914
|
+
props: {
|
|
2915
|
+
slug: {},
|
|
2916
|
+
view: {},
|
|
2917
|
+
primaryKey: {},
|
|
2918
|
+
items: {}
|
|
2919
|
+
},
|
|
2920
|
+
emits: ["startChat"],
|
|
2921
|
+
setup(__props, { emit: __emit }) {
|
|
2922
|
+
const { t } = useCollectionI18n();
|
|
2923
|
+
const props = __props;
|
|
2924
|
+
const emit = __emit;
|
|
2925
|
+
const loading = (0, vue.ref)(true);
|
|
2926
|
+
const error = (0, vue.ref)(null);
|
|
2927
|
+
const srcdoc = (0, vue.ref)(null);
|
|
2928
|
+
const bytes = (0, vue.ref)(0);
|
|
2929
|
+
const iframeEl = (0, vue.ref)(null);
|
|
2930
|
+
const sizeCaption = (0, vue.computed)(() => `${Math.max(1, Math.round(bytes.value / 1024))} KB / ${Math.round(_mulmoclaude_core_remote_view.REMOTE_VIEW_MAX_BYTES / 1024)} KB`);
|
|
2931
|
+
let loadSeq = 0;
|
|
2932
|
+
async function load() {
|
|
2933
|
+
const seq = ++loadSeq;
|
|
2934
|
+
const stale = () => seq !== loadSeq;
|
|
2935
|
+
loading.value = true;
|
|
2936
|
+
error.value = null;
|
|
2937
|
+
srcdoc.value = null;
|
|
2938
|
+
const binding = collectionUi();
|
|
2939
|
+
try {
|
|
2940
|
+
const resp = await binding.fetchRemoteView?.(props.slug, props.view.id, binding.localeTag());
|
|
2941
|
+
if (stale()) return;
|
|
2942
|
+
if (!resp) {
|
|
2943
|
+
error.value = "fetchRemoteView is not wired on this host";
|
|
2944
|
+
return;
|
|
2945
|
+
}
|
|
2946
|
+
if (!resp.ok) {
|
|
2947
|
+
error.value = resp.error;
|
|
2948
|
+
return;
|
|
2949
|
+
}
|
|
2950
|
+
bytes.value = resp.data.bytes;
|
|
2951
|
+
srcdoc.value = resp.data.srcdoc;
|
|
2952
|
+
} catch (err) {
|
|
2953
|
+
if (!stale()) error.value = (0, _mulmoclaude_core_collection.errorMessage)(err);
|
|
2954
|
+
} finally {
|
|
2955
|
+
if (!stale()) loading.value = false;
|
|
2956
|
+
}
|
|
2957
|
+
}
|
|
2958
|
+
(0, vue.watch)([
|
|
2959
|
+
() => props.slug,
|
|
2960
|
+
() => props.view.id,
|
|
2961
|
+
() => collectionUi().localeTag()
|
|
2962
|
+
], () => void load(), { immediate: true });
|
|
2963
|
+
function onWindowMessage(event) {
|
|
2964
|
+
const target = event.source;
|
|
2965
|
+
if (!target || target !== iframeEl.value?.contentWindow) return;
|
|
2966
|
+
(0, _mulmoclaude_core_remote_view.handleRemoteViewMessage)(event.data, {
|
|
2967
|
+
slug: props.slug,
|
|
2968
|
+
getPage: (request) => (0, _mulmoclaude_core_remote_view.pageFromItems)(props.items, request, props.primaryKey),
|
|
2969
|
+
onStartChat: (prompt, role) => emit("startChat", {
|
|
2970
|
+
prompt,
|
|
2971
|
+
role
|
|
2972
|
+
})
|
|
2973
|
+
}, (message) => target.postMessage(message, "*"));
|
|
2974
|
+
}
|
|
2975
|
+
(0, vue.onMounted)(() => window.addEventListener("message", onWindowMessage));
|
|
2976
|
+
(0, vue.onBeforeUnmount)(() => window.removeEventListener("message", onWindowMessage));
|
|
2977
|
+
return (_ctx, _cache) => {
|
|
2978
|
+
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$7, [error.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_2$6, (0, vue.toDisplayString)((0, vue.unref)(t)("collectionsView.customViewError", { error: error.value })), 1)) : loading.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_3$6, (0, vue.toDisplayString)((0, vue.unref)(t)("collectionsView.customViewLoading")), 1)) : srcdoc.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 2 }, [(0, vue.createElementVNode)("div", _hoisted_4$6, [((0, vue.openBlock)(), (0, vue.createElementBlock)("iframe", {
|
|
2979
|
+
ref_key: "iframeEl",
|
|
2980
|
+
ref: iframeEl,
|
|
2981
|
+
key: __props.view.id,
|
|
2982
|
+
"data-testid": "collection-remote-view-iframe",
|
|
2983
|
+
title: __props.view.label,
|
|
2984
|
+
srcdoc: srcdoc.value,
|
|
2985
|
+
sandbox: "allow-scripts allow-popups allow-popups-to-escape-sandbox",
|
|
2986
|
+
class: "phone-screen"
|
|
2987
|
+
}, null, 8, _hoisted_5$6))]), (0, vue.createElementVNode)("div", _hoisted_6$5, (0, vue.toDisplayString)(sizeCaption.value), 1)], 64)) : (0, vue.createCommentVNode)("", true)]);
|
|
2988
|
+
};
|
|
2989
|
+
}
|
|
2990
|
+
}), [["__scopeId", "data-v-b9e3d51f"]]);
|
|
2991
|
+
//#endregion
|
|
2887
2992
|
//#region src/vue/useCollectionRendering.ts
|
|
2888
2993
|
function stepForFieldType(type) {
|
|
2889
2994
|
if (type === "money") return "0.01";
|
|
@@ -3963,8 +4068,13 @@ var CollectionView_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
3963
4068
|
* vanished (e.g. `view = "kanban"` after switching to an enum-less
|
|
3964
4069
|
* collection) back to "table". Single source of truth for the toggle and
|
|
3965
4070
|
* the body branches. */
|
|
3966
|
-
/** Custom (LLM-authored) HTML views declared on the schema.
|
|
3967
|
-
|
|
4071
|
+
/** Custom (LLM-authored) HTML views declared on the schema. Mobile-target
|
|
4072
|
+
* views need the host's `fetchRemoteView` binding (the phone-frame preview's
|
|
4073
|
+
* data source) — on a host without it they're hidden from the selector. */
|
|
4074
|
+
const customViews = (0, vue.computed)(() => {
|
|
4075
|
+
const views = collection.value?.schema.views ?? [];
|
|
4076
|
+
return cui.fetchRemoteView ? views : views.filter((entry) => entry.target !== "mobile");
|
|
4077
|
+
});
|
|
3968
4078
|
const hasCustomViews = (0, vue.computed)(() => customViews.value.length > 0);
|
|
3969
4079
|
const activeView = (0, vue.computed)(() => {
|
|
3970
4080
|
if (view.value === "calendar" && hasCalendar.value) return "calendar";
|
|
@@ -4690,7 +4800,7 @@ var CollectionView_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
4690
4800
|
"aria-pressed": activeView.value === (0, vue.unref)(customViewKey)(cv.id),
|
|
4691
4801
|
"data-testid": `collection-view-custom-${cv.id}`,
|
|
4692
4802
|
onClick: ($event) => setCustomView(cv.id)
|
|
4693
|
-
}, [(0, vue.createElementVNode)("span", _hoisted_27$1, (0, vue.toDisplayString)(cv.icon || "dashboard_customize"), 1), (0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(cv.label), 1)], 10, _hoisted_26$1);
|
|
4803
|
+
}, [(0, vue.createElementVNode)("span", _hoisted_27$1, (0, vue.toDisplayString)(cv.icon || (cv.target === "mobile" ? "smartphone" : "dashboard_customize")), 1), (0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(cv.label), 1)], 10, _hoisted_26$1);
|
|
4694
4804
|
}), 128)),
|
|
4695
4805
|
canAddCustomView.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
|
|
4696
4806
|
key: 2,
|
|
@@ -4860,12 +4970,25 @@ var CollectionView_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
4860
4970
|
"group-field",
|
|
4861
4971
|
"selected",
|
|
4862
4972
|
"notified"
|
|
4863
|
-
])])])) : activeCustomView.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_47, [(0, vue.
|
|
4973
|
+
])])])) : activeCustomView.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_47, [activeCustomView.value.target === "mobile" ? ((0, vue.openBlock)(), (0, vue.createBlock)(CollectionRemoteViewPreview_default, {
|
|
4974
|
+
key: 0,
|
|
4975
|
+
slug: collection.value.slug,
|
|
4976
|
+
view: activeCustomView.value,
|
|
4977
|
+
"primary-key": collection.value.schema.primaryKey,
|
|
4978
|
+
items: items.value,
|
|
4979
|
+
onStartChat: onCustomViewStartChat
|
|
4980
|
+
}, null, 8, [
|
|
4981
|
+
"slug",
|
|
4982
|
+
"view",
|
|
4983
|
+
"primary-key",
|
|
4984
|
+
"items"
|
|
4985
|
+
])) : ((0, vue.openBlock)(), (0, vue.createBlock)(CollectionCustomView_default, {
|
|
4986
|
+
key: 1,
|
|
4864
4987
|
slug: collection.value.slug,
|
|
4865
4988
|
view: activeCustomView.value,
|
|
4866
4989
|
onOpenItem: onCustomViewOpenItem,
|
|
4867
4990
|
onStartChat: onCustomViewStartChat
|
|
4868
|
-
}, null, 8, ["slug", "view"])])) : items.value.length === 0 && editing.value?.mode !== "create" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_48, [_cache[42] || (_cache[42] = (0, vue.createElementVNode)("span", { class: "material-icons text-4xl text-slate-300" }, "folder_open", -1)), (0, vue.createElementVNode)("p", _hoisted_49, (0, vue.toDisplayString)((0, vue.unref)(t)("collectionsView.itemsEmpty")), 1)])) : filteredItems.value.length === 0 && editing.value?.mode !== "create" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_50, [
|
|
4991
|
+
}, null, 8, ["slug", "view"]))])) : items.value.length === 0 && editing.value?.mode !== "create" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_48, [_cache[42] || (_cache[42] = (0, vue.createElementVNode)("span", { class: "material-icons text-4xl text-slate-300" }, "folder_open", -1)), (0, vue.createElementVNode)("p", _hoisted_49, (0, vue.toDisplayString)((0, vue.unref)(t)("collectionsView.itemsEmpty")), 1)])) : filteredItems.value.length === 0 && editing.value?.mode !== "create" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_50, [
|
|
4869
4992
|
_cache[43] || (_cache[43] = (0, vue.createElementVNode)("span", { class: "material-icons text-4xl text-slate-300" }, "search_off", -1)),
|
|
4870
4993
|
(0, vue.createElementVNode)("p", _hoisted_51, (0, vue.toDisplayString)((0, vue.unref)(t)("collectionsView.noMatchingItems")), 1),
|
|
4871
4994
|
(0, vue.createElementVNode)("button", {
|