@mulmoclaude/collection-plugin 0.5.9 → 0.5.11
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 +14 -0
- package/dist/vue/collectionViewMode.d.ts +10 -1
- package/dist/vue/collectionViewMode.d.ts.map +1 -1
- package/dist/vue/components/CollectionView.vue.d.ts +18 -3
- 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/lang/de.d.ts.map +1 -1
- package/dist/vue/lang/en.d.ts +1 -0
- package/dist/vue/lang/en.d.ts.map +1 -1
- package/dist/vue/lang/es.d.ts.map +1 -1
- package/dist/vue/lang/fr.d.ts.map +1 -1
- package/dist/vue/lang/index.d.ts +1 -0
- package/dist/vue/lang/index.d.ts.map +1 -1
- package/dist/vue/lang/ja.d.ts.map +1 -1
- package/dist/vue/lang/ko.d.ts.map +1 -1
- package/dist/vue/lang/ptBR.d.ts.map +1 -1
- package/dist/vue/lang/zh.d.ts.map +1 -1
- package/dist/vue/uiContext.d.ts +6 -1
- package/dist/vue/uiContext.d.ts.map +1 -1
- package/dist/vue.cjs +212 -155
- package/dist/vue.cjs.map +1 -1
- package/dist/vue.js +211 -156
- package/dist/vue.js.map +1 -1
- package/package.json +4 -4
package/dist/vue.js
CHANGED
|
@@ -60,6 +60,7 @@ var i18n = createI18n({
|
|
|
60
60
|
chat: "Chat",
|
|
61
61
|
refreshFeed: "Refresh",
|
|
62
62
|
refreshFailed: "Refresh failed: {error}",
|
|
63
|
+
refreshDispatched: "Refresh started in the background.",
|
|
63
64
|
feedChatSeed: "The \"{slug}\" feed is defined by the schema at `feeds/{slug}/schema.json` and its records live in `{dataPath}/` (one `<id>.json` per record). Using that schema and data, respond to this request: {message}",
|
|
64
65
|
feedsTitle: "Data-source feeds",
|
|
65
66
|
feedsEmpty: "No feeds registered yet.",
|
|
@@ -163,6 +164,7 @@ var i18n = createI18n({
|
|
|
163
164
|
chat: "チャット",
|
|
164
165
|
refreshFeed: "更新",
|
|
165
166
|
refreshFailed: "更新に失敗しました: {error}",
|
|
167
|
+
refreshDispatched: "バックグラウンドで更新を開始しました。",
|
|
166
168
|
feedChatSeed: "フィード「{slug}」はスキーマ `feeds/{slug}/schema.json` で定義され、レコードは `{dataPath}/`(1 レコードにつき `<id>.json` 1 ファイル)に保存されています。このスキーマとデータを使って、次のリクエストに応えてください: {message}",
|
|
167
169
|
feedsTitle: "データソースフィード",
|
|
168
170
|
feedsEmpty: "登録されたフィードはありません。",
|
|
@@ -266,6 +268,7 @@ var i18n = createI18n({
|
|
|
266
268
|
chat: "对话",
|
|
267
269
|
refreshFeed: "刷新",
|
|
268
270
|
refreshFailed: "刷新失败:{error}",
|
|
271
|
+
refreshDispatched: "已在后台开始刷新。",
|
|
269
272
|
feedChatSeed: "订阅源“{slug}”由 schema `feeds/{slug}/schema.json` 定义,其记录保存在 `{dataPath}/`(每条记录一个 `<id>.json` 文件)。请使用该 schema 和数据来响应以下请求:{message}",
|
|
270
273
|
feedsTitle: "数据源订阅",
|
|
271
274
|
feedsEmpty: "尚未注册任何订阅源。",
|
|
@@ -369,6 +372,7 @@ var i18n = createI18n({
|
|
|
369
372
|
chat: "채팅",
|
|
370
373
|
refreshFeed: "새로고침",
|
|
371
374
|
refreshFailed: "새로고침 실패: {error}",
|
|
375
|
+
refreshDispatched: "백그라운드에서 새로고침을 시작했습니다.",
|
|
372
376
|
feedChatSeed: "“{slug}” 피드는 스키마 `feeds/{slug}/schema.json`로 정의되며, 레코드는 `{dataPath}/`(레코드당 `<id>.json` 파일 하나)에 저장됩니다. 이 스키마와 데이터를 사용하여 다음 요청에 응답하세요: {message}",
|
|
373
377
|
feedsTitle: "데이터 소스 피드",
|
|
374
378
|
feedsEmpty: "등록된 피드가 없습니다.",
|
|
@@ -472,6 +476,7 @@ var i18n = createI18n({
|
|
|
472
476
|
chat: "Chat",
|
|
473
477
|
refreshFeed: "Actualizar",
|
|
474
478
|
refreshFailed: "Error al actualizar: {error}",
|
|
479
|
+
refreshDispatched: "Actualización iniciada en segundo plano.",
|
|
475
480
|
feedChatSeed: "El feed «{slug}» está definido por el esquema `feeds/{slug}/schema.json` y sus registros se guardan en `{dataPath}/` (un archivo `<id>.json` por registro). Usa ese esquema y esos datos para responder a esta solicitud: {message}",
|
|
476
481
|
feedsTitle: "Fuentes de datos",
|
|
477
482
|
feedsEmpty: "Aún no hay fuentes registradas.",
|
|
@@ -575,6 +580,7 @@ var i18n = createI18n({
|
|
|
575
580
|
chat: "Chat",
|
|
576
581
|
refreshFeed: "Atualizar",
|
|
577
582
|
refreshFailed: "Falha ao atualizar: {error}",
|
|
583
|
+
refreshDispatched: "Atualização iniciada em segundo plano.",
|
|
578
584
|
feedChatSeed: "O feed \"{slug}\" é definido pelo esquema `feeds/{slug}/schema.json` e seus registros ficam em `{dataPath}/` (um arquivo `<id>.json` por registro). Use esse esquema e esses dados para responder a esta solicitação: {message}",
|
|
579
585
|
feedsTitle: "Feeds de dados",
|
|
580
586
|
feedsEmpty: "Nenhum feed registrado ainda.",
|
|
@@ -678,6 +684,7 @@ var i18n = createI18n({
|
|
|
678
684
|
chat: "Discussion",
|
|
679
685
|
refreshFeed: "Actualiser",
|
|
680
686
|
refreshFailed: "Échec de l'actualisation : {error}",
|
|
687
|
+
refreshDispatched: "Actualisation lancée en arrière-plan.",
|
|
681
688
|
feedChatSeed: "Le flux « {slug} » est défini par le schéma `feeds/{slug}/schema.json` et ses enregistrements se trouvent dans `{dataPath}/` (un fichier `<id>.json` par enregistrement). Utilise ce schéma et ces données pour répondre à cette demande : {message}",
|
|
682
689
|
feedsTitle: "Flux de données",
|
|
683
690
|
feedsEmpty: "Aucun flux enregistré pour le moment.",
|
|
@@ -781,6 +788,7 @@ var i18n = createI18n({
|
|
|
781
788
|
chat: "Chat",
|
|
782
789
|
refreshFeed: "Aktualisieren",
|
|
783
790
|
refreshFailed: "Aktualisierung fehlgeschlagen: {error}",
|
|
791
|
+
refreshDispatched: "Aktualisierung im Hintergrund gestartet.",
|
|
784
792
|
feedChatSeed: "Der Feed {slug} ist durch das Schema `feeds/{slug}/schema.json` definiert und seine Datensätze liegen in `{dataPath}/` (eine `<id>.json`-Datei pro Datensatz). Nutze dieses Schema und diese Daten, um auf die folgende Anfrage zu antworten: {message}",
|
|
785
793
|
feedsTitle: "Datenquellen-Feeds",
|
|
786
794
|
feedsEmpty: "Noch keine Feeds registriert.",
|
|
@@ -1242,7 +1250,7 @@ var CollectionDayView_default = /* @__PURE__ */ defineComponent({
|
|
|
1242
1250
|
return `${String(hour).padStart(2, "0")}:00`;
|
|
1243
1251
|
}
|
|
1244
1252
|
const labelField = computed(() => labelFieldFor(props.schema));
|
|
1245
|
-
const CHIP_SKIP_TYPES = new Set([
|
|
1253
|
+
const CHIP_SKIP_TYPES = /* @__PURE__ */ new Set([
|
|
1246
1254
|
"date",
|
|
1247
1255
|
"datetime",
|
|
1248
1256
|
"table",
|
|
@@ -1906,7 +1914,7 @@ var _hoisted_74$1 = ["disabled"];
|
|
|
1906
1914
|
//#region src/vue/components/CollectionRecordPanel.vue
|
|
1907
1915
|
var CollectionRecordPanel_default = /* @__PURE__ */ defineComponent({
|
|
1908
1916
|
__name: "CollectionRecordPanel",
|
|
1909
|
-
props:
|
|
1917
|
+
props: /*@__PURE__*/ mergeModels({
|
|
1910
1918
|
collection: {},
|
|
1911
1919
|
viewing: {},
|
|
1912
1920
|
saving: { type: Boolean },
|
|
@@ -1924,7 +1932,7 @@ var CollectionRecordPanel_default = /* @__PURE__ */ defineComponent({
|
|
|
1924
1932
|
"editing": { required: true },
|
|
1925
1933
|
"editingModifiers": {}
|
|
1926
1934
|
}),
|
|
1927
|
-
emits:
|
|
1935
|
+
emits: /*@__PURE__*/ mergeModels([
|
|
1928
1936
|
"submit",
|
|
1929
1937
|
"cancel",
|
|
1930
1938
|
"edit",
|
|
@@ -2427,7 +2435,7 @@ var _hoisted_3$4 = {
|
|
|
2427
2435
|
var _hoisted_4$4 = ["title", "srcdoc"];
|
|
2428
2436
|
var REMINT_LEAD_MS = 6e4;
|
|
2429
2437
|
var MIN_REMINT_DELAY_MS = 1e4;
|
|
2430
|
-
var CollectionCustomView_vue_vue_type_script_setup_true_lang_default =
|
|
2438
|
+
var CollectionCustomView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
2431
2439
|
__name: "CollectionCustomView",
|
|
2432
2440
|
props: {
|
|
2433
2441
|
slug: {},
|
|
@@ -2556,7 +2564,7 @@ var _plugin_vue_export_helper_default = (sfc, props) => {
|
|
|
2556
2564
|
};
|
|
2557
2565
|
//#endregion
|
|
2558
2566
|
//#region src/vue/components/CollectionCustomView.vue
|
|
2559
|
-
var CollectionCustomView_default =
|
|
2567
|
+
var CollectionCustomView_default = /*#__PURE__*/ _plugin_vue_export_helper_default(CollectionCustomView_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-aa6e6c2d"]]);
|
|
2560
2568
|
//#endregion
|
|
2561
2569
|
//#region src/vue/useCollectionRendering.ts
|
|
2562
2570
|
function stepForFieldType(type) {
|
|
@@ -2612,7 +2620,7 @@ function useCollectionRendering(collection, locale) {
|
|
|
2612
2620
|
async function loadLinkedCollections(schema, expectedSlug) {
|
|
2613
2621
|
const refTargets = new Set(uniqueRefTargets(schema));
|
|
2614
2622
|
const embedTargets = new Set(uniqueEmbedTargets(schema));
|
|
2615
|
-
const allTargets = [
|
|
2623
|
+
const allTargets = [.../* @__PURE__ */ new Set([...refTargets, ...embedTargets])];
|
|
2616
2624
|
if (allTargets.length === 0) return;
|
|
2617
2625
|
const binding = collectionUi();
|
|
2618
2626
|
const results = await Promise.all(allTargets.map(async (target) => {
|
|
@@ -2817,6 +2825,24 @@ function useCollectionRendering(collection, locale) {
|
|
|
2817
2825
|
}
|
|
2818
2826
|
//#endregion
|
|
2819
2827
|
//#region src/vue/collectionViewMode.ts
|
|
2828
|
+
/** Build the `custom:<id>` selector key for a custom view. */
|
|
2829
|
+
function customViewKey(viewId) {
|
|
2830
|
+
return `custom:${viewId}`;
|
|
2831
|
+
}
|
|
2832
|
+
/** Every view mode a schema can render, in selector order: `table`
|
|
2833
|
+
* always, `calendar` when a `date`/`datetime` field exists, `kanban`
|
|
2834
|
+
* when an `enum` field exists, then each declared custom view. Mirrors
|
|
2835
|
+
* the field-derived gating inside `CollectionView` (hasCalendar /
|
|
2836
|
+
* hasKanban / customViews) so callers outside that component — e.g. the
|
|
2837
|
+
* dashboard's per-tile view picker — offer exactly the same choices. */
|
|
2838
|
+
function applicableViewModes(schema) {
|
|
2839
|
+
const modes = ["table"];
|
|
2840
|
+
const fields = Object.values(schema.fields);
|
|
2841
|
+
if (fields.some((field) => field.type === "date" || field.type === "datetime")) modes.push("calendar");
|
|
2842
|
+
if (fields.some((field) => field.type === "enum")) modes.push("kanban");
|
|
2843
|
+
for (const view of schema.views ?? []) modes.push(customViewKey(view.id));
|
|
2844
|
+
return modes;
|
|
2845
|
+
}
|
|
2820
2846
|
var STORAGE_KEY = "collection_view_modes";
|
|
2821
2847
|
var SORT_STORAGE_KEY = "collection_sorts";
|
|
2822
2848
|
var BUILT_IN_MODES = [
|
|
@@ -2885,7 +2911,10 @@ function writeCollectionSort(slug, sort) {
|
|
|
2885
2911
|
//#endregion
|
|
2886
2912
|
//#region src/vue/components/CollectionView.vue?vue&type=script&setup=true&lang.ts
|
|
2887
2913
|
var _hoisted_1$4 = { class: "h-full flex flex-col bg-slate-50/30" };
|
|
2888
|
-
var _hoisted_2$3 = {
|
|
2914
|
+
var _hoisted_2$3 = {
|
|
2915
|
+
key: 0,
|
|
2916
|
+
class: "flex items-center gap-3 px-6 py-2 border-b border-slate-200 bg-white"
|
|
2917
|
+
};
|
|
2889
2918
|
var _hoisted_3$3 = ["title", "aria-label"];
|
|
2890
2919
|
var _hoisted_4$3 = {
|
|
2891
2920
|
key: 1,
|
|
@@ -2912,186 +2941,192 @@ var _hoisted_12$2 = {
|
|
|
2912
2941
|
var _hoisted_13$2 = ["title", "aria-label"];
|
|
2913
2942
|
var _hoisted_14$2 = ["title", "aria-label"];
|
|
2914
2943
|
var _hoisted_15$2 = {
|
|
2915
|
-
key:
|
|
2944
|
+
key: 1,
|
|
2945
|
+
class: "mx-6 mt-2 rounded-lg border border-indigo-200 bg-indigo-50/60 px-4 py-2 text-sm text-indigo-800 flex items-center gap-2",
|
|
2946
|
+
"data-testid": "collections-refresh-note"
|
|
2947
|
+
};
|
|
2948
|
+
var _hoisted_16$1 = { class: "flex-1" };
|
|
2949
|
+
var _hoisted_17$1 = {
|
|
2950
|
+
key: 2,
|
|
2916
2951
|
class: "px-6 py-3 bg-white border-b border-slate-100 flex items-center justify-between gap-4"
|
|
2917
2952
|
};
|
|
2918
|
-
var
|
|
2953
|
+
var _hoisted_18$1 = {
|
|
2919
2954
|
key: 0,
|
|
2920
2955
|
class: "relative flex-1 max-w-md"
|
|
2921
2956
|
};
|
|
2922
|
-
var
|
|
2923
|
-
var _hoisted_18$1 = ["aria-label"];
|
|
2924
|
-
var _hoisted_19$1 = { class: "flex items-center gap-2" };
|
|
2957
|
+
var _hoisted_19$1 = ["placeholder", "aria-label"];
|
|
2925
2958
|
var _hoisted_20$1 = ["aria-label"];
|
|
2926
|
-
var _hoisted_21$1 =
|
|
2927
|
-
var _hoisted_22$1 = ["aria-
|
|
2959
|
+
var _hoisted_21$1 = { class: "flex items-center gap-2" };
|
|
2960
|
+
var _hoisted_22$1 = ["aria-label"];
|
|
2928
2961
|
var _hoisted_23$1 = ["aria-pressed"];
|
|
2929
|
-
var _hoisted_24 = [
|
|
2962
|
+
var _hoisted_24 = ["aria-pressed"];
|
|
2963
|
+
var _hoisted_25 = ["aria-pressed"];
|
|
2964
|
+
var _hoisted_26 = [
|
|
2930
2965
|
"aria-pressed",
|
|
2931
2966
|
"data-testid",
|
|
2932
2967
|
"onClick"
|
|
2933
2968
|
];
|
|
2934
|
-
var
|
|
2935
|
-
var
|
|
2936
|
-
var
|
|
2937
|
-
var _hoisted_28 = ["value", "aria-label"];
|
|
2938
|
-
var _hoisted_29 = ["value"];
|
|
2969
|
+
var _hoisted_27 = { class: "material-icons text-sm" };
|
|
2970
|
+
var _hoisted_28 = ["title", "aria-label"];
|
|
2971
|
+
var _hoisted_29 = ["title", "aria-label"];
|
|
2939
2972
|
var _hoisted_30 = ["value", "aria-label"];
|
|
2940
2973
|
var _hoisted_31 = ["value"];
|
|
2941
|
-
var _hoisted_32 =
|
|
2974
|
+
var _hoisted_32 = ["value", "aria-label"];
|
|
2975
|
+
var _hoisted_33 = ["value"];
|
|
2976
|
+
var _hoisted_34 = {
|
|
2942
2977
|
key: 3,
|
|
2943
2978
|
class: "text-[10px] text-slate-400 font-bold uppercase tracking-wider select-none"
|
|
2944
2979
|
};
|
|
2945
|
-
var
|
|
2946
|
-
key:
|
|
2980
|
+
var _hoisted_35 = {
|
|
2981
|
+
key: 3,
|
|
2947
2982
|
class: "mx-6 mt-4 rounded-xl border border-amber-200 bg-amber-50/60 p-4 text-sm text-amber-900 shadow-sm flex items-center gap-3",
|
|
2948
2983
|
"data-testid": "collections-data-issues"
|
|
2949
2984
|
};
|
|
2950
|
-
var
|
|
2951
|
-
var
|
|
2952
|
-
var
|
|
2985
|
+
var _hoisted_36 = { class: "flex-1" };
|
|
2986
|
+
var _hoisted_37 = { class: "flex-1 overflow-auto" };
|
|
2987
|
+
var _hoisted_38 = {
|
|
2953
2988
|
key: 0,
|
|
2954
2989
|
class: "flex flex-col items-center justify-center py-20 text-sm text-slate-500 gap-3"
|
|
2955
2990
|
};
|
|
2956
|
-
var
|
|
2991
|
+
var _hoisted_39 = {
|
|
2957
2992
|
key: 1,
|
|
2958
2993
|
class: "m-6 rounded-xl border border-red-200 bg-red-50/50 p-4 text-sm text-red-800 shadow-sm flex items-center gap-3"
|
|
2959
2994
|
};
|
|
2960
|
-
var
|
|
2961
|
-
var
|
|
2995
|
+
var _hoisted_40 = { key: 2 };
|
|
2996
|
+
var _hoisted_41 = {
|
|
2962
2997
|
key: 3,
|
|
2963
2998
|
class: "p-4"
|
|
2964
2999
|
};
|
|
2965
|
-
var
|
|
3000
|
+
var _hoisted_42 = {
|
|
2966
3001
|
key: 4,
|
|
2967
3002
|
class: "h-full flex flex-col"
|
|
2968
3003
|
};
|
|
2969
|
-
var
|
|
3004
|
+
var _hoisted_43 = {
|
|
2970
3005
|
key: 0,
|
|
2971
3006
|
class: "m-3 mb-0 rounded-xl border border-red-200 bg-red-50/50 p-4 text-sm text-red-800 shadow-sm flex items-center gap-3",
|
|
2972
3007
|
"data-testid": "collections-inline-error"
|
|
2973
3008
|
};
|
|
2974
|
-
var
|
|
2975
|
-
var
|
|
2976
|
-
var
|
|
2977
|
-
var
|
|
3009
|
+
var _hoisted_44 = { class: "flex-1" };
|
|
3010
|
+
var _hoisted_45 = ["aria-label"];
|
|
3011
|
+
var _hoisted_46 = { class: "flex-1 min-h-0 px-3 py-2" };
|
|
3012
|
+
var _hoisted_47 = {
|
|
2978
3013
|
key: 5,
|
|
2979
3014
|
class: "h-full",
|
|
2980
3015
|
"data-testid": "collection-custom-view-body"
|
|
2981
3016
|
};
|
|
2982
|
-
var
|
|
3017
|
+
var _hoisted_48 = {
|
|
2983
3018
|
key: 6,
|
|
2984
3019
|
class: "flex flex-col items-center justify-center py-20 text-sm text-slate-400 gap-2"
|
|
2985
3020
|
};
|
|
2986
|
-
var
|
|
2987
|
-
var
|
|
3021
|
+
var _hoisted_49 = { class: "font-semibold text-slate-600" };
|
|
3022
|
+
var _hoisted_50 = {
|
|
2988
3023
|
key: 7,
|
|
2989
3024
|
class: "flex flex-col items-center justify-center py-20 text-sm text-slate-400 gap-2"
|
|
2990
3025
|
};
|
|
2991
|
-
var
|
|
2992
|
-
var
|
|
3026
|
+
var _hoisted_51 = { class: "font-semibold text-slate-600" };
|
|
3027
|
+
var _hoisted_52 = {
|
|
2993
3028
|
key: 8,
|
|
2994
3029
|
class: "overflow-x-auto [container-type:inline-size]"
|
|
2995
3030
|
};
|
|
2996
|
-
var
|
|
3031
|
+
var _hoisted_53 = {
|
|
2997
3032
|
key: 0,
|
|
2998
3033
|
class: "m-4 rounded-xl border border-red-200 bg-red-50/50 p-4 text-sm text-red-800 shadow-sm flex items-center gap-3",
|
|
2999
3034
|
"data-testid": "collections-inline-error"
|
|
3000
3035
|
};
|
|
3001
|
-
var
|
|
3002
|
-
var
|
|
3003
|
-
var
|
|
3004
|
-
var
|
|
3005
|
-
var
|
|
3006
|
-
var
|
|
3007
|
-
var
|
|
3008
|
-
var
|
|
3036
|
+
var _hoisted_54 = { class: "flex-1" };
|
|
3037
|
+
var _hoisted_55 = ["aria-label"];
|
|
3038
|
+
var _hoisted_56 = { class: "min-w-full text-xs" };
|
|
3039
|
+
var _hoisted_57 = { class: "bg-slate-50 border-b border-slate-200" };
|
|
3040
|
+
var _hoisted_58 = ["aria-sort"];
|
|
3041
|
+
var _hoisted_59 = { class: "flex items-center gap-1" };
|
|
3042
|
+
var _hoisted_60 = ["title"];
|
|
3043
|
+
var _hoisted_61 = [
|
|
3009
3044
|
"data-testid",
|
|
3010
3045
|
"aria-label",
|
|
3011
3046
|
"onClick",
|
|
3012
3047
|
"onPointerenter"
|
|
3013
3048
|
];
|
|
3014
|
-
var
|
|
3015
|
-
var
|
|
3016
|
-
var
|
|
3049
|
+
var _hoisted_62 = { class: "material-icons text-base align-middle" };
|
|
3050
|
+
var _hoisted_63 = { class: "divide-y divide-slate-100 bg-white" };
|
|
3051
|
+
var _hoisted_64 = [
|
|
3017
3052
|
"aria-label",
|
|
3018
3053
|
"data-testid",
|
|
3019
3054
|
"onClick",
|
|
3020
3055
|
"onKeydown"
|
|
3021
3056
|
];
|
|
3022
|
-
var
|
|
3057
|
+
var _hoisted_65 = [
|
|
3023
3058
|
"checked",
|
|
3024
3059
|
"disabled",
|
|
3025
3060
|
"data-testid",
|
|
3026
3061
|
"aria-label",
|
|
3027
3062
|
"onChange"
|
|
3028
3063
|
];
|
|
3029
|
-
var
|
|
3064
|
+
var _hoisted_66 = [
|
|
3030
3065
|
"checked",
|
|
3031
3066
|
"disabled",
|
|
3032
3067
|
"data-testid",
|
|
3033
3068
|
"aria-label",
|
|
3034
3069
|
"onChange"
|
|
3035
3070
|
];
|
|
3036
|
-
var
|
|
3071
|
+
var _hoisted_67 = {
|
|
3037
3072
|
key: 2,
|
|
3038
3073
|
class: "block truncate"
|
|
3039
3074
|
};
|
|
3040
|
-
var
|
|
3075
|
+
var _hoisted_68 = [
|
|
3041
3076
|
"href",
|
|
3042
3077
|
"tabindex",
|
|
3043
3078
|
"data-testid",
|
|
3044
3079
|
"onClick",
|
|
3045
3080
|
"onKeydown"
|
|
3046
3081
|
];
|
|
3047
|
-
var
|
|
3082
|
+
var _hoisted_69 = [
|
|
3048
3083
|
"value",
|
|
3049
3084
|
"disabled",
|
|
3050
3085
|
"data-testid",
|
|
3051
3086
|
"aria-label",
|
|
3052
3087
|
"onChange"
|
|
3053
3088
|
];
|
|
3054
|
-
var
|
|
3089
|
+
var _hoisted_70 = {
|
|
3055
3090
|
key: 0,
|
|
3056
3091
|
value: ""
|
|
3057
3092
|
};
|
|
3058
|
-
var
|
|
3059
|
-
var
|
|
3093
|
+
var _hoisted_71 = ["value"];
|
|
3094
|
+
var _hoisted_72 = {
|
|
3060
3095
|
key: 4,
|
|
3061
3096
|
class: "block truncate tabular-nums font-semibold text-slate-900"
|
|
3062
3097
|
};
|
|
3063
|
-
var
|
|
3098
|
+
var _hoisted_73 = {
|
|
3064
3099
|
key: 5,
|
|
3065
3100
|
class: "inline-flex items-center gap-1 px-2 py-0.5 rounded-lg text-[10px] font-bold bg-slate-100 text-slate-600 border border-slate-200/40"
|
|
3066
3101
|
};
|
|
3067
|
-
var
|
|
3102
|
+
var _hoisted_74 = {
|
|
3068
3103
|
key: 6,
|
|
3069
3104
|
class: "inline-block truncate tabular-nums font-bold text-indigo-900 bg-indigo-50/50 px-1.5 py-0.5 rounded border border-indigo-100/50"
|
|
3070
3105
|
};
|
|
3071
|
-
var
|
|
3072
|
-
var
|
|
3073
|
-
var
|
|
3106
|
+
var _hoisted_75 = ["href", "data-testid"];
|
|
3107
|
+
var _hoisted_76 = ["href", "data-testid"];
|
|
3108
|
+
var _hoisted_77 = [
|
|
3074
3109
|
"href",
|
|
3075
3110
|
"data-testid",
|
|
3076
3111
|
"onClick"
|
|
3077
3112
|
];
|
|
3078
|
-
var
|
|
3113
|
+
var _hoisted_78 = {
|
|
3079
3114
|
key: 10,
|
|
3080
3115
|
class: "block truncate text-slate-600"
|
|
3081
3116
|
};
|
|
3082
|
-
var
|
|
3083
|
-
var
|
|
3084
|
-
var
|
|
3085
|
-
var
|
|
3117
|
+
var _hoisted_79 = { class: "bg-white rounded-2xl shadow-2xl w-full max-w-xl flex flex-col border border-slate-200 overflow-hidden" };
|
|
3118
|
+
var _hoisted_80 = { class: "px-6 py-4 border-b border-slate-100 flex items-center gap-3 bg-slate-50/50" };
|
|
3119
|
+
var _hoisted_81 = { class: "flex-1" };
|
|
3120
|
+
var _hoisted_82 = {
|
|
3086
3121
|
id: "collections-chat-title",
|
|
3087
3122
|
class: "text-sm font-bold text-slate-800 uppercase tracking-wide"
|
|
3088
3123
|
};
|
|
3089
|
-
var
|
|
3090
|
-
var
|
|
3091
|
-
var
|
|
3092
|
-
var
|
|
3093
|
-
var
|
|
3094
|
-
var
|
|
3124
|
+
var _hoisted_83 = { class: "text-xs text-slate-400 font-semibold" };
|
|
3125
|
+
var _hoisted_84 = ["aria-label"];
|
|
3126
|
+
var _hoisted_85 = { class: "px-6 py-5" };
|
|
3127
|
+
var _hoisted_86 = ["placeholder", "onKeydown"];
|
|
3128
|
+
var _hoisted_87 = { class: "px-6 py-3.5 border-t border-slate-100 flex items-center justify-end gap-2 bg-slate-50/50" };
|
|
3129
|
+
var _hoisted_88 = ["disabled"];
|
|
3095
3130
|
/** `slug` / `selected` are supplied only in EMBEDDED mode (the
|
|
3096
3131
|
* `presentCollection` chat card mounts this component and drives both
|
|
3097
3132
|
* from the tool result). In standalone route mode (the
|
|
@@ -3113,7 +3148,10 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
3113
3148
|
sendTextMessage: { type: Function },
|
|
3114
3149
|
initialView: {},
|
|
3115
3150
|
initialAnchorField: {},
|
|
3116
|
-
initialGroupField: {}
|
|
3151
|
+
initialGroupField: {},
|
|
3152
|
+
hideViewToggle: { type: Boolean },
|
|
3153
|
+
hideHeader: { type: Boolean },
|
|
3154
|
+
hideSearch: { type: Boolean }
|
|
3117
3155
|
},
|
|
3118
3156
|
emits: ["select", "viewStateChange"],
|
|
3119
3157
|
setup(__props, { emit: __emit }) {
|
|
@@ -3151,6 +3189,11 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
3151
3189
|
});
|
|
3152
3190
|
/** True while a feed collection's manual refresh is in flight. */
|
|
3153
3191
|
const refreshing = ref(false);
|
|
3192
|
+
/** Transient note shown after an agent-ingest Refresh dispatches a background
|
|
3193
|
+
* worker (records update asynchronously, so there's nothing to show inline).
|
|
3194
|
+
* Auto-clears; `refreshNoteTimer` cancels a pending clear on re-trigger. */
|
|
3195
|
+
const refreshNote = ref(null);
|
|
3196
|
+
let refreshNoteTimer;
|
|
3154
3197
|
/** Slug already auto-refreshed on first open — prevents a reload loop
|
|
3155
3198
|
* (the auto-refresh reloads the view, which would re-trigger otherwise). */
|
|
3156
3199
|
const autoRefreshedSlug = ref(null);
|
|
@@ -3333,7 +3376,21 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
3333
3376
|
return;
|
|
3334
3377
|
}
|
|
3335
3378
|
await loadCollection(current.slug);
|
|
3336
|
-
if (result.data.errors.length > 0)
|
|
3379
|
+
if (result.data.errors.length > 0) {
|
|
3380
|
+
inlineError.value = t("collectionsView.refreshFailed", { error: result.data.errors.join("; ") });
|
|
3381
|
+
return;
|
|
3382
|
+
}
|
|
3383
|
+
if (result.data.dispatched) if (result.data.chatId && cui.navigate) cui.navigate(`/chat/${result.data.chatId}`);
|
|
3384
|
+
else showRefreshNote(t("collectionsView.refreshDispatched"));
|
|
3385
|
+
}
|
|
3386
|
+
/** Show a transient refresh note, replacing any pending auto-clear. */
|
|
3387
|
+
function showRefreshNote(message) {
|
|
3388
|
+
refreshNote.value = message;
|
|
3389
|
+
if (refreshNoteTimer !== void 0) clearTimeout(refreshNoteTimer);
|
|
3390
|
+
refreshNoteTimer = setTimeout(() => {
|
|
3391
|
+
refreshNote.value = null;
|
|
3392
|
+
refreshNoteTimer = void 0;
|
|
3393
|
+
}, 6e3);
|
|
3337
3394
|
}
|
|
3338
3395
|
/** Collection-level header actions. No `when` predicate (no record). */
|
|
3339
3396
|
const collectionActions = computed(() => collection.value?.schema.collectionActions ?? []);
|
|
@@ -3426,11 +3483,11 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
3426
3483
|
* (`feeds/<slug>/schema.json` and `<dataPath>/`) and let it act on the
|
|
3427
3484
|
* request directly. */
|
|
3428
3485
|
function buildChatSeed(slug, message, itemId) {
|
|
3429
|
-
const
|
|
3430
|
-
if (
|
|
3486
|
+
const current = collection.value;
|
|
3487
|
+
if (current?.source !== "feed") return itemId ? `/${slug} id=${itemId} ${message}` : `/${slug} ${message}`;
|
|
3431
3488
|
return t("collectionsView.feedChatSeed", {
|
|
3432
3489
|
slug,
|
|
3433
|
-
dataPath: schema.dataPath ?? `data/feeds/${slug}`,
|
|
3490
|
+
dataPath: current.schema.dataPath ?? `data/feeds/${slug}`,
|
|
3434
3491
|
message: itemId ? `(for record \`${itemId}\`) ${message}` : message
|
|
3435
3492
|
});
|
|
3436
3493
|
}
|
|
@@ -3514,7 +3571,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
3514
3571
|
function maybeAutoRefreshFeed(slug) {
|
|
3515
3572
|
if (embedded.value) return;
|
|
3516
3573
|
const current = collection.value;
|
|
3517
|
-
if (current?.slug !== slug ||
|
|
3574
|
+
if (current?.slug !== slug || current.source !== "feed") return;
|
|
3518
3575
|
if (items.value.length > 0 || autoRefreshedSlug.value === slug) return;
|
|
3519
3576
|
autoRefreshedSlug.value = slug;
|
|
3520
3577
|
refreshFeed();
|
|
@@ -3538,7 +3595,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
3538
3595
|
if (!current) return false;
|
|
3539
3596
|
return current.source === "project" && !current.slug.startsWith("mc-");
|
|
3540
3597
|
});
|
|
3541
|
-
const isFeed = computed(() =>
|
|
3598
|
+
const isFeed = computed(() => collection.value?.source === "feed");
|
|
3542
3599
|
const canDeleteFeed = computed(() => isFeed.value && !embedded.value);
|
|
3543
3600
|
const isFeedRoute = computed(() => !embedded.value && cui.isFeedRoute());
|
|
3544
3601
|
/** The view to open with: the embedded card's restored `initialView` if
|
|
@@ -3601,7 +3658,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
3601
3658
|
function addCustomView() {
|
|
3602
3659
|
const current = collection.value;
|
|
3603
3660
|
if (!current) return;
|
|
3604
|
-
const base = current.
|
|
3661
|
+
const base = current.source === "feed" ? `feeds/${current.slug}` : `data/skills/${current.slug}`;
|
|
3605
3662
|
const prompt = t("collectionsView.addViewPrompt", {
|
|
3606
3663
|
title: current.title,
|
|
3607
3664
|
base
|
|
@@ -3659,10 +3716,6 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
3659
3716
|
function setCustomView(viewId) {
|
|
3660
3717
|
view.value = `custom:${viewId}`;
|
|
3661
3718
|
}
|
|
3662
|
-
/** Selector-key for a custom view, for active-state comparison in the template. */
|
|
3663
|
-
function customViewKey(viewId) {
|
|
3664
|
-
return `custom:${viewId}`;
|
|
3665
|
-
}
|
|
3666
3719
|
/** A short, slug-safe id not already used by a loaded record. Collisions
|
|
3667
3720
|
* are astronomically unlikely (32 bits), but we still re-roll a few
|
|
3668
3721
|
* times against the in-memory set before giving up and using the last
|
|
@@ -4140,6 +4193,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4140
4193
|
changeUnsub?.();
|
|
4141
4194
|
changeUnsub = null;
|
|
4142
4195
|
clearLiveRefreshTimer();
|
|
4196
|
+
if (refreshNoteTimer !== void 0) clearTimeout(refreshNoteTimer);
|
|
4143
4197
|
});
|
|
4144
4198
|
watch([
|
|
4145
4199
|
activeView,
|
|
@@ -4165,7 +4219,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4165
4219
|
});
|
|
4166
4220
|
return (_ctx, _cache) => {
|
|
4167
4221
|
return openBlock(), createElementBlock("div", _hoisted_1$4, [
|
|
4168
|
-
|
|
4222
|
+
!__props.hideHeader ? (openBlock(), createElementBlock("header", _hoisted_2$3, [
|
|
4169
4223
|
!embedded.value ? (openBlock(), createElementBlock("button", {
|
|
4170
4224
|
key: 0,
|
|
4171
4225
|
type: "button",
|
|
@@ -4239,25 +4293,26 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4239
4293
|
"data-testid": "feeds-delete",
|
|
4240
4294
|
onClick: confirmFeedDelete
|
|
4241
4295
|
}, [..._cache[27] || (_cache[27] = [createElementVNode("span", { class: "material-icons text-sm" }, "delete_forever", -1)])], 8, _hoisted_14$2)) : createCommentVNode("", true)
|
|
4242
|
-
]),
|
|
4243
|
-
|
|
4244
|
-
|
|
4296
|
+
])) : createCommentVNode("", true),
|
|
4297
|
+
refreshNote.value ? (openBlock(), createElementBlock("div", _hoisted_15$2, [_cache[28] || (_cache[28] = createElementVNode("span", { class: "material-icons text-base text-indigo-600" }, "hourglass_top", -1)), createElementVNode("span", _hoisted_16$1, toDisplayString(refreshNote.value), 1)])) : createCommentVNode("", true),
|
|
4298
|
+
collection.value && (!__props.hideSearch && items.value.length > 0 || !__props.hideViewToggle && (hasCalendar.value || hasKanban.value || hasCustomViews.value || canAddCustomView.value)) ? (openBlock(), createElementBlock("div", _hoisted_17$1, [!__props.hideSearch && items.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_18$1, [
|
|
4299
|
+
_cache[30] || (_cache[30] = createElementVNode("span", { class: "absolute inset-y-0 left-0 flex items-center pl-3 text-slate-400 pointer-events-none" }, [createElementVNode("span", { class: "material-icons text-lg" }, "search")], -1)),
|
|
4245
4300
|
withDirectives(createElementVNode("input", {
|
|
4246
4301
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchQuery.value = $event),
|
|
4247
4302
|
type: "text",
|
|
4248
4303
|
placeholder: unref(t)("collectionsView.searchPlaceholder"),
|
|
4249
4304
|
"aria-label": unref(t)("collectionsView.searchPlaceholder"),
|
|
4250
4305
|
class: "w-full bg-slate-50 border border-slate-200/80 rounded-xl pl-9 pr-8 py-1.5 text-xs placeholder-slate-400 focus:outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500 focus:bg-white transition-all font-medium"
|
|
4251
|
-
}, null, 8,
|
|
4306
|
+
}, null, 8, _hoisted_19$1), [[vModelText, searchQuery.value]]),
|
|
4252
4307
|
searchQuery.value ? (openBlock(), createElementBlock("button", {
|
|
4253
4308
|
key: 0,
|
|
4254
4309
|
type: "button",
|
|
4255
4310
|
"aria-label": unref(t)("collectionsView.clearSearch"),
|
|
4256
4311
|
class: "absolute inset-y-0 right-0 flex items-center pr-2.5 text-slate-400 hover:text-slate-600",
|
|
4257
4312
|
onClick: _cache[1] || (_cache[1] = ($event) => searchQuery.value = "")
|
|
4258
|
-
}, [..._cache[
|
|
4259
|
-
])) : createCommentVNode("", true), createElementVNode("div",
|
|
4260
|
-
hasCalendar.value || hasKanban.value || hasCustomViews.value || canAddCustomView.value ? (openBlock(), createElementBlock("div", {
|
|
4313
|
+
}, [..._cache[29] || (_cache[29] = [createElementVNode("span", { class: "material-icons text-sm" }, "close", -1)])], 8, _hoisted_20$1)) : createCommentVNode("", true)
|
|
4314
|
+
])) : createCommentVNode("", true), createElementVNode("div", _hoisted_21$1, [
|
|
4315
|
+
!__props.hideViewToggle && (hasCalendar.value || hasKanban.value || hasCustomViews.value || canAddCustomView.value) ? (openBlock(), createElementBlock("div", {
|
|
4261
4316
|
key: 0,
|
|
4262
4317
|
class: "flex gap-0.5",
|
|
4263
4318
|
role: "group",
|
|
@@ -4269,7 +4324,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4269
4324
|
"aria-pressed": activeView.value === "table",
|
|
4270
4325
|
"data-testid": "collection-view-toggle-table",
|
|
4271
4326
|
onClick: _cache[2] || (_cache[2] = ($event) => setView("table"))
|
|
4272
|
-
}, [_cache[
|
|
4327
|
+
}, [_cache[31] || (_cache[31] = createElementVNode("span", { class: "material-icons text-sm" }, "table_rows", -1)), createElementVNode("span", null, toDisplayString(unref(t)("collectionsView.viewTable")), 1)], 10, _hoisted_23$1),
|
|
4273
4328
|
hasCalendar.value ? (openBlock(), createElementBlock("button", {
|
|
4274
4329
|
key: 0,
|
|
4275
4330
|
type: "button",
|
|
@@ -4277,7 +4332,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4277
4332
|
"aria-pressed": activeView.value === "calendar",
|
|
4278
4333
|
"data-testid": "collection-view-toggle-calendar",
|
|
4279
4334
|
onClick: _cache[3] || (_cache[3] = ($event) => setView("calendar"))
|
|
4280
|
-
}, [_cache[
|
|
4335
|
+
}, [_cache[32] || (_cache[32] = createElementVNode("span", { class: "material-icons text-sm" }, "calendar_month", -1)), createElementVNode("span", null, toDisplayString(unref(t)("collectionsView.viewCalendar")), 1)], 10, _hoisted_24)) : createCommentVNode("", true),
|
|
4281
4336
|
hasKanban.value ? (openBlock(), createElementBlock("button", {
|
|
4282
4337
|
key: 1,
|
|
4283
4338
|
type: "button",
|
|
@@ -4285,16 +4340,16 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4285
4340
|
"aria-pressed": activeView.value === "kanban",
|
|
4286
4341
|
"data-testid": "collection-view-toggle-kanban",
|
|
4287
4342
|
onClick: _cache[4] || (_cache[4] = ($event) => setView("kanban"))
|
|
4288
|
-
}, [_cache[
|
|
4343
|
+
}, [_cache[33] || (_cache[33] = createElementVNode("span", { class: "material-icons text-sm" }, "view_kanban", -1)), createElementVNode("span", null, toDisplayString(unref(t)("collectionsView.viewKanban")), 1)], 10, _hoisted_25)) : createCommentVNode("", true),
|
|
4289
4344
|
(openBlock(true), createElementBlock(Fragment, null, renderList(customViews.value, (cv) => {
|
|
4290
4345
|
return openBlock(), createElementBlock("button", {
|
|
4291
4346
|
key: cv.id,
|
|
4292
4347
|
type: "button",
|
|
4293
|
-
class: normalizeClass(["h-8 px-2.5 flex items-center gap-1 rounded text-xs font-bold transition-colors", activeView.value === customViewKey(cv.id) ? "bg-indigo-600 text-white" : "bg-white text-slate-500 border border-slate-200 hover:bg-slate-50"]),
|
|
4294
|
-
"aria-pressed": activeView.value === customViewKey(cv.id),
|
|
4348
|
+
class: normalizeClass(["h-8 px-2.5 flex items-center gap-1 rounded text-xs font-bold transition-colors", activeView.value === unref(customViewKey)(cv.id) ? "bg-indigo-600 text-white" : "bg-white text-slate-500 border border-slate-200 hover:bg-slate-50"]),
|
|
4349
|
+
"aria-pressed": activeView.value === unref(customViewKey)(cv.id),
|
|
4295
4350
|
"data-testid": `collection-view-custom-${cv.id}`,
|
|
4296
4351
|
onClick: ($event) => setCustomView(cv.id)
|
|
4297
|
-
}, [createElementVNode("span",
|
|
4352
|
+
}, [createElementVNode("span", _hoisted_27, toDisplayString(cv.icon || "dashboard_customize"), 1), createElementVNode("span", null, toDisplayString(cv.label), 1)], 10, _hoisted_26);
|
|
4298
4353
|
}), 128)),
|
|
4299
4354
|
canAddCustomView.value ? (openBlock(), createElementBlock("button", {
|
|
4300
4355
|
key: 2,
|
|
@@ -4304,7 +4359,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4304
4359
|
"aria-label": unref(t)("collectionsView.addView"),
|
|
4305
4360
|
"data-testid": "collection-view-add",
|
|
4306
4361
|
onClick: addCustomView
|
|
4307
|
-
}, [..._cache[
|
|
4362
|
+
}, [..._cache[34] || (_cache[34] = [createElementVNode("span", { class: "material-icons text-sm" }, "add", -1)])], 8, _hoisted_28)) : createCommentVNode("", true),
|
|
4308
4363
|
canConfigureViews.value ? (openBlock(), createElementBlock("button", {
|
|
4309
4364
|
key: 3,
|
|
4310
4365
|
type: "button",
|
|
@@ -4313,8 +4368,8 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4313
4368
|
"aria-label": unref(t)("collectionsView.config.open"),
|
|
4314
4369
|
"data-testid": "collection-config-open",
|
|
4315
4370
|
onClick: _cache[5] || (_cache[5] = ($event) => configOpen.value = true)
|
|
4316
|
-
}, [..._cache[
|
|
4317
|
-
], 8,
|
|
4371
|
+
}, [..._cache[35] || (_cache[35] = [createElementVNode("span", { class: "material-icons text-sm" }, "settings", -1)])], 8, _hoisted_29)) : createCommentVNode("", true)
|
|
4372
|
+
], 8, _hoisted_22$1)) : createCommentVNode("", true),
|
|
4318
4373
|
calendarActive.value && dateFields.value.length > 1 ? (openBlock(), createElementBlock("select", {
|
|
4319
4374
|
key: 1,
|
|
4320
4375
|
value: calendarAnchorField.value,
|
|
@@ -4326,8 +4381,8 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4326
4381
|
return openBlock(), createElementBlock("option", {
|
|
4327
4382
|
key,
|
|
4328
4383
|
value: key
|
|
4329
|
-
}, toDisplayString(collection.value?.schema.fields[key]?.label ?? key), 9,
|
|
4330
|
-
}), 128))], 40,
|
|
4384
|
+
}, toDisplayString(collection.value?.schema.fields[key]?.label ?? key), 9, _hoisted_31);
|
|
4385
|
+
}), 128))], 40, _hoisted_30)) : createCommentVNode("", true),
|
|
4331
4386
|
kanbanActive.value && enumFields.value.length > 1 ? (openBlock(), createElementBlock("select", {
|
|
4332
4387
|
key: 2,
|
|
4333
4388
|
value: kanbanGroupField.value,
|
|
@@ -4339,24 +4394,24 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4339
4394
|
return openBlock(), createElementBlock("option", {
|
|
4340
4395
|
key,
|
|
4341
4396
|
value: key
|
|
4342
|
-
}, toDisplayString(collection.value?.schema.fields[key]?.label ?? key), 9,
|
|
4343
|
-
}), 128))], 40,
|
|
4344
|
-
items.value.length > 0 ? (openBlock(), createElementBlock("div",
|
|
4397
|
+
}, toDisplayString(collection.value?.schema.fields[key]?.label ?? key), 9, _hoisted_33);
|
|
4398
|
+
}), 128))], 40, _hoisted_32)) : createCommentVNode("", true),
|
|
4399
|
+
items.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_34, toDisplayString(unref(t)("collectionsView.searchSummary", {
|
|
4345
4400
|
shown: filteredItems.value.length,
|
|
4346
4401
|
total: items.value.length
|
|
4347
4402
|
})), 1)) : createCommentVNode("", true)
|
|
4348
4403
|
])])) : createCommentVNode("", true),
|
|
4349
|
-
collection.value && dataIssues.value.length > 0 ? (openBlock(), createElementBlock("div",
|
|
4350
|
-
_cache[
|
|
4351
|
-
createElementVNode("span",
|
|
4404
|
+
collection.value && dataIssues.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_35, [
|
|
4405
|
+
_cache[37] || (_cache[37] = createElementVNode("span", { class: "material-icons text-amber-600" }, "warning", -1)),
|
|
4406
|
+
createElementVNode("span", _hoisted_36, toDisplayString(unref(t)("collectionsView.dataIssuesDetected", { count: dataIssues.value.length })), 1),
|
|
4352
4407
|
createElementVNode("button", {
|
|
4353
4408
|
type: "button",
|
|
4354
4409
|
class: "h-8 px-2.5 flex items-center gap-1 rounded border border-amber-300 bg-white hover:bg-amber-100 text-amber-700 font-bold text-xs transition-colors",
|
|
4355
4410
|
"data-testid": "collections-repair",
|
|
4356
4411
|
onClick: repairCollection
|
|
4357
|
-
}, [_cache[
|
|
4412
|
+
}, [_cache[36] || (_cache[36] = createElementVNode("span", { class: "material-icons text-sm" }, "build", -1)), createElementVNode("span", null, toDisplayString(unref(t)("collectionsView.repair")), 1)])
|
|
4358
4413
|
])) : createCommentVNode("", true),
|
|
4359
|
-
createElementVNode("div",
|
|
4414
|
+
createElementVNode("div", _hoisted_37, [loading.value ? (openBlock(), createElementBlock("div", _hoisted_38, [_cache[38] || (_cache[38] = createElementVNode("div", { class: "h-8 w-8 border-2 border-indigo-600/20 border-t-indigo-600 rounded-full animate-spin" }, null, -1)), createElementVNode("span", null, toDisplayString(unref(t)("common.loading")), 1)])) : loadError.value ? (openBlock(), createElementBlock("div", _hoisted_39, [_cache[39] || (_cache[39] = createElementVNode("span", { class: "material-icons text-red-600" }, "error", -1)), createElementVNode("span", null, toDisplayString(loadError.value === "not-found" ? unref(t)("collectionsView.notFound") : `${unref(t)("collectionsView.loadFailed")}: ${loadError.value}`), 1)])) : !collection.value ? (openBlock(), createElementBlock("div", _hoisted_40)) : calendarActive.value ? (openBlock(), createElementBlock("div", _hoisted_41, [createVNode(CollectionCalendarView_default, {
|
|
4360
4415
|
schema: collection.value.schema,
|
|
4361
4416
|
items: filteredItems.value,
|
|
4362
4417
|
"anchor-field": calendarAnchorField.value,
|
|
@@ -4441,16 +4496,16 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4441
4496
|
"selected",
|
|
4442
4497
|
"can-create",
|
|
4443
4498
|
"show-detail"
|
|
4444
|
-
])) : createCommentVNode("", true)])) : kanbanActive.value ? (openBlock(), createElementBlock("div",
|
|
4445
|
-
_cache[
|
|
4446
|
-
createElementVNode("span",
|
|
4499
|
+
])) : createCommentVNode("", true)])) : kanbanActive.value ? (openBlock(), createElementBlock("div", _hoisted_42, [inlineError.value ? (openBlock(), createElementBlock("div", _hoisted_43, [
|
|
4500
|
+
_cache[41] || (_cache[41] = createElementVNode("span", { class: "material-icons text-red-600" }, "error", -1)),
|
|
4501
|
+
createElementVNode("span", _hoisted_44, toDisplayString(unref(t)("collectionsView.inlineSaveFailed", { error: inlineError.value })), 1),
|
|
4447
4502
|
createElementVNode("button", {
|
|
4448
4503
|
type: "button",
|
|
4449
4504
|
class: "h-8 w-8 flex items-center justify-center rounded text-red-600 hover:bg-red-100",
|
|
4450
4505
|
"aria-label": unref(t)("common.close"),
|
|
4451
4506
|
onClick: _cache[10] || (_cache[10] = ($event) => inlineError.value = null)
|
|
4452
|
-
}, [..._cache[
|
|
4453
|
-
])) : createCommentVNode("", true), createElementVNode("div",
|
|
4507
|
+
}, [..._cache[40] || (_cache[40] = [createElementVNode("span", { class: "material-icons text-base" }, "close", -1)])], 8, _hoisted_45)
|
|
4508
|
+
])) : createCommentVNode("", true), createElementVNode("div", _hoisted_46, [createVNode(CollectionKanbanView_default, {
|
|
4454
4509
|
schema: collection.value.schema,
|
|
4455
4510
|
items: filteredItems.value,
|
|
4456
4511
|
"group-field": kanbanGroupField.value,
|
|
@@ -4464,37 +4519,37 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4464
4519
|
"group-field",
|
|
4465
4520
|
"selected",
|
|
4466
4521
|
"notified"
|
|
4467
|
-
])])])) : activeCustomView.value ? (openBlock(), createElementBlock("div",
|
|
4522
|
+
])])])) : activeCustomView.value ? (openBlock(), createElementBlock("div", _hoisted_47, [createVNode(CollectionCustomView_default, {
|
|
4468
4523
|
slug: collection.value.slug,
|
|
4469
4524
|
view: activeCustomView.value,
|
|
4470
4525
|
onOpenItem: onCustomViewOpenItem,
|
|
4471
4526
|
onStartChat: onCustomViewStartChat
|
|
4472
|
-
}, null, 8, ["slug", "view"])])) : items.value.length === 0 && editing.value?.mode !== "create" ? (openBlock(), createElementBlock("div",
|
|
4473
|
-
_cache[
|
|
4474
|
-
createElementVNode("p",
|
|
4527
|
+
}, null, 8, ["slug", "view"])])) : items.value.length === 0 && editing.value?.mode !== "create" ? (openBlock(), createElementBlock("div", _hoisted_48, [_cache[42] || (_cache[42] = createElementVNode("span", { class: "material-icons text-4xl text-slate-300" }, "folder_open", -1)), createElementVNode("p", _hoisted_49, toDisplayString(unref(t)("collectionsView.itemsEmpty")), 1)])) : filteredItems.value.length === 0 && editing.value?.mode !== "create" ? (openBlock(), createElementBlock("div", _hoisted_50, [
|
|
4528
|
+
_cache[43] || (_cache[43] = createElementVNode("span", { class: "material-icons text-4xl text-slate-300" }, "search_off", -1)),
|
|
4529
|
+
createElementVNode("p", _hoisted_51, toDisplayString(unref(t)("collectionsView.noMatchingItems")), 1),
|
|
4475
4530
|
createElementVNode("button", {
|
|
4476
4531
|
type: "button",
|
|
4477
4532
|
class: "text-xs text-indigo-600 font-semibold hover:underline",
|
|
4478
4533
|
onClick: _cache[11] || (_cache[11] = ($event) => searchQuery.value = "")
|
|
4479
4534
|
}, toDisplayString(unref(t)("collectionsView.clearSearch")), 1)
|
|
4480
|
-
])) : (openBlock(), createElementBlock("div",
|
|
4481
|
-
_cache[
|
|
4482
|
-
createElementVNode("span",
|
|
4535
|
+
])) : (openBlock(), createElementBlock("div", _hoisted_52, [inlineError.value ? (openBlock(), createElementBlock("div", _hoisted_53, [
|
|
4536
|
+
_cache[45] || (_cache[45] = createElementVNode("span", { class: "material-icons text-red-600" }, "error", -1)),
|
|
4537
|
+
createElementVNode("span", _hoisted_54, toDisplayString(unref(t)("collectionsView.inlineSaveFailed", { error: inlineError.value })), 1),
|
|
4483
4538
|
createElementVNode("button", {
|
|
4484
4539
|
type: "button",
|
|
4485
4540
|
class: "h-8 w-8 flex items-center justify-center rounded text-red-600 hover:bg-red-100",
|
|
4486
4541
|
"aria-label": unref(t)("common.close"),
|
|
4487
4542
|
onClick: _cache[12] || (_cache[12] = ($event) => inlineError.value = null)
|
|
4488
|
-
}, [..._cache[
|
|
4489
|
-
])) : createCommentVNode("", true), createElementVNode("table",
|
|
4543
|
+
}, [..._cache[44] || (_cache[44] = [createElementVNode("span", { class: "material-icons text-base" }, "close", -1)])], 8, _hoisted_55)
|
|
4544
|
+
])) : createCommentVNode("", true), createElementVNode("table", _hoisted_56, [createElementVNode("thead", null, [createElementVNode("tr", _hoisted_57, [(openBlock(true), createElementBlock(Fragment, null, renderList(listColumnFields.value, ([key, field]) => {
|
|
4490
4545
|
return openBlock(), createElementBlock("th", {
|
|
4491
4546
|
key,
|
|
4492
4547
|
"aria-sort": unref(isSortableField)(field) ? sortAriaValue(key) : void 0,
|
|
4493
4548
|
class: "px-5 py-3 font-bold text-slate-500 text-left uppercase tracking-wider whitespace-nowrap"
|
|
4494
|
-
}, [createElementVNode("div",
|
|
4549
|
+
}, [createElementVNode("div", _hoisted_59, [createElementVNode("span", {
|
|
4495
4550
|
class: "truncate max-w-[14rem]",
|
|
4496
4551
|
title: field.label
|
|
4497
|
-
}, toDisplayString(field.label), 9,
|
|
4552
|
+
}, toDisplayString(field.label), 9, _hoisted_60), unref(isSortableField)(field) ? (openBlock(), createElementBlock("button", {
|
|
4498
4553
|
key: 0,
|
|
4499
4554
|
type: "button",
|
|
4500
4555
|
class: normalizeClass(["inline-flex items-center justify-center rounded p-0.5 -my-1 leading-none transition-colors", sortButtonClass(key)]),
|
|
@@ -4503,8 +4558,8 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4503
4558
|
onClick: withModifiers(($event) => cycleSort(key), ["stop"]),
|
|
4504
4559
|
onPointerenter: ($event) => hoveredSortKey.value = key,
|
|
4505
4560
|
onPointerleave: _cache[13] || (_cache[13] = ($event) => hoveredSortKey.value = null)
|
|
4506
|
-
}, [createElementVNode("span",
|
|
4507
|
-
}), 128))])]), createElementVNode("tbody",
|
|
4561
|
+
}, [createElementVNode("span", _hoisted_62, toDisplayString(sortIconName(key)), 1)], 42, _hoisted_61)) : createCommentVNode("", true)])], 8, _hoisted_58);
|
|
4562
|
+
}), 128))])]), createElementVNode("tbody", _hoisted_63, [(openBlock(true), createElementBlock(Fragment, null, renderList(sortedItems.value, (item) => {
|
|
4508
4563
|
return openBlock(), createElementBlock("tr", {
|
|
4509
4564
|
key: String(item[collection.value.schema.primaryKey] ?? ""),
|
|
4510
4565
|
class: normalizeClass(["hover:bg-slate-50/70 cursor-pointer transition-colors focus:outline-none focus:bg-indigo-50/30", isRowOpen(item) || isEditingRow(item) ? "bg-indigo-50/40" : ""]),
|
|
@@ -4528,7 +4583,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4528
4583
|
"aria-label": field.label,
|
|
4529
4584
|
onClick: _cache[14] || (_cache[14] = withModifiers(() => {}, ["stop"])),
|
|
4530
4585
|
onChange: ($event) => commitToggle(item, field)
|
|
4531
|
-
}, null, 40,
|
|
4586
|
+
}, null, 40, _hoisted_65)) : field.type === "boolean" ? (openBlock(), createElementBlock("input", {
|
|
4532
4587
|
key: 1,
|
|
4533
4588
|
type: "checkbox",
|
|
4534
4589
|
checked: item[key] === true,
|
|
@@ -4538,7 +4593,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4538
4593
|
"aria-label": field.label,
|
|
4539
4594
|
onClick: _cache[15] || (_cache[15] = withModifiers(() => {}, ["stop"])),
|
|
4540
4595
|
onChange: ($event) => commitInlineEdit(item, String(key), field, $event.target.checked)
|
|
4541
|
-
}, null, 40,
|
|
4596
|
+
}, null, 40, _hoisted_66)) : field.type === "ref" && field.to && typeof item[key] === "string" && item[key] ? (openBlock(), createElementBlock("span", _hoisted_67, [createElementVNode("a", {
|
|
4542
4597
|
href: unref(cui).recordHref?.(field.to, String(item[key])),
|
|
4543
4598
|
tabindex: unref(cui).recordHref?.(field.to, String(item[key])) ? void 0 : 0,
|
|
4544
4599
|
role: "link",
|
|
@@ -4546,7 +4601,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4546
4601
|
"data-testid": `collections-ref-link-${key}-${item[key]}`,
|
|
4547
4602
|
onClick: ($event) => unref(activateRefLink)($event, field.to, String(item[key]), true),
|
|
4548
4603
|
onKeydown: [withKeys(($event) => unref(activateRefLink)($event, field.to, String(item[key]), true), ["enter"]), withKeys(($event) => unref(activateRefLink)($event, field.to, String(item[key]), true), ["space"])]
|
|
4549
|
-
}, toDisplayString(unref(refDisplay)(field.to, String(item[key]))), 41,
|
|
4604
|
+
}, toDisplayString(unref(refDisplay)(field.to, String(item[key]))), 41, _hoisted_68)])) : field.type === "enum" && Array.isArray(field.values) && field.values.length > 0 ? (openBlock(), createElementBlock("select", {
|
|
4550
4605
|
key: 3,
|
|
4551
4606
|
value: item[key] == null ? "" : String(item[key]),
|
|
4552
4607
|
disabled: isRowInlineSaving(item),
|
|
@@ -4555,12 +4610,12 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4555
4610
|
"aria-label": field.label,
|
|
4556
4611
|
onClick: _cache[16] || (_cache[16] = withModifiers(() => {}, ["stop"])),
|
|
4557
4612
|
onChange: ($event) => commitInlineEdit(item, String(key), field, $event.target.value)
|
|
4558
|
-
}, [showEnumPlaceholder(item, String(key)) ? (openBlock(), createElementBlock("option",
|
|
4613
|
+
}, [showEnumPlaceholder(item, String(key)) ? (openBlock(), createElementBlock("option", _hoisted_70, toDisplayString(unref(t)("collectionsView.selectPlaceholder")), 1)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(field.values, (value) => {
|
|
4559
4614
|
return openBlock(), createElementBlock("option", {
|
|
4560
4615
|
key: value,
|
|
4561
4616
|
value
|
|
4562
|
-
}, toDisplayString(value), 9,
|
|
4563
|
-
}), 128))], 42,
|
|
4617
|
+
}, toDisplayString(value), 9, _hoisted_71);
|
|
4618
|
+
}), 128))], 42, _hoisted_69)) : field.type === "money" ? (openBlock(), createElementBlock("span", _hoisted_72, toDisplayString(unref(formatMoney)(item[key], unref(resolveCurrency)(field, item), unref(locale))), 1)) : field.type === "table" ? (openBlock(), createElementBlock("span", _hoisted_73, [_cache[46] || (_cache[46] = createElementVNode("span", { class: "material-icons text-[11px]" }, "list", -1)), createElementVNode("span", null, toDisplayString(tableSummary(item[key])), 1)])) : field.type === "derived" ? (openBlock(), createElementBlock("span", _hoisted_74, toDisplayString(unref(derivedDisplay)(field, unref(evaluateDerivedAgainstItem)(field, String(key), item), item)), 1)) : field.type !== "file" && unref(isExternalUrl)(item[key]) ? (openBlock(), createElementBlock("a", {
|
|
4564
4619
|
key: 7,
|
|
4565
4620
|
href: String(item[key]),
|
|
4566
4621
|
target: "_blank",
|
|
@@ -4568,7 +4623,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4568
4623
|
class: "block truncate text-blue-600 hover:text-blue-800 hover:underline font-semibold",
|
|
4569
4624
|
"data-testid": `collections-url-link-${key}-${item[collection.value.schema.primaryKey]}`,
|
|
4570
4625
|
onClick: _cache[17] || (_cache[17] = withModifiers(() => {}, ["stop"]))
|
|
4571
|
-
}, toDisplayString(String(item[key])), 9,
|
|
4626
|
+
}, toDisplayString(String(item[key])), 9, _hoisted_75)) : field.type === "file" && unref(artifactUrl)(item[key]) ? (openBlock(), createElementBlock("a", {
|
|
4572
4627
|
key: 8,
|
|
4573
4628
|
href: unref(artifactUrl)(item[key]) ?? void 0,
|
|
4574
4629
|
target: "_blank",
|
|
@@ -4576,17 +4631,17 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4576
4631
|
class: "block truncate text-blue-600 hover:text-blue-800 hover:underline font-semibold",
|
|
4577
4632
|
"data-testid": `collections-file-link-${key}-${item[collection.value.schema.primaryKey]}`,
|
|
4578
4633
|
onClick: _cache[18] || (_cache[18] = withModifiers(() => {}, ["stop"]))
|
|
4579
|
-
}, toDisplayString(String(item[key])), 9,
|
|
4634
|
+
}, toDisplayString(String(item[key])), 9, _hoisted_76)) : field.type === "file" && unref(fileRoutePath)(item[key]) ? (openBlock(), createElementBlock("a", {
|
|
4580
4635
|
key: 9,
|
|
4581
4636
|
href: unref(fileRoutePath)(item[key]) ?? void 0,
|
|
4582
4637
|
class: "block truncate text-blue-600 hover:text-blue-800 hover:underline font-semibold",
|
|
4583
4638
|
"data-testid": `collections-file-link-${key}-${item[collection.value.schema.primaryKey]}`,
|
|
4584
4639
|
onClick: ($event) => unref(activatePathLink)($event, unref(fileRoutePath)(item[key]) ?? "", true)
|
|
4585
|
-
}, toDisplayString(String(item[key])), 9,
|
|
4586
|
-
}), 128))], 42,
|
|
4640
|
+
}, toDisplayString(String(item[key])), 9, _hoisted_77)) : (openBlock(), createElementBlock("span", _hoisted_78, toDisplayString(unref(formatCell)(item[key], field.type)), 1))], 64)) : createCommentVNode("", true)]);
|
|
4641
|
+
}), 128))], 42, _hoisted_64);
|
|
4587
4642
|
}), 128))])])]))]),
|
|
4588
4643
|
collection.value && (viewing.value || editing.value) && !(calendarActive.value && openDay.value) ? (openBlock(), createBlock(CollectionRecordModal_default, {
|
|
4589
|
-
key:
|
|
4644
|
+
key: 4,
|
|
4590
4645
|
onClose: closeRecordModal
|
|
4591
4646
|
}, {
|
|
4592
4647
|
default: withCtx(() => [createVNode(CollectionRecordPanel_default, {
|
|
@@ -4631,7 +4686,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4631
4686
|
_: 1
|
|
4632
4687
|
})) : createCommentVNode("", true),
|
|
4633
4688
|
configOpen.value && collection.value ? (openBlock(), createBlock(CollectionViewConfigModal_default, {
|
|
4634
|
-
key:
|
|
4689
|
+
key: 5,
|
|
4635
4690
|
slug: collection.value.slug,
|
|
4636
4691
|
title: collection.value.title,
|
|
4637
4692
|
views: customViews.value,
|
|
@@ -4643,7 +4698,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4643
4698
|
"views"
|
|
4644
4699
|
])) : createCommentVNode("", true),
|
|
4645
4700
|
chatOpen.value && collection.value ? (openBlock(), createElementBlock("div", {
|
|
4646
|
-
key:
|
|
4701
|
+
key: 6,
|
|
4647
4702
|
class: "fixed inset-0 z-30 flex items-center justify-center bg-slate-900/60 backdrop-blur-sm p-4 transition-all duration-300",
|
|
4648
4703
|
role: "dialog",
|
|
4649
4704
|
"aria-modal": "true",
|
|
@@ -4651,19 +4706,19 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4651
4706
|
"data-testid": "collections-chat-modal",
|
|
4652
4707
|
onClick: withModifiers(closeChat, ["self"]),
|
|
4653
4708
|
onKeydown: withKeys(closeChat, ["esc"])
|
|
4654
|
-
}, [createElementVNode("div",
|
|
4655
|
-
createElementVNode("header",
|
|
4656
|
-
_cache[
|
|
4657
|
-
createElementVNode("div",
|
|
4709
|
+
}, [createElementVNode("div", _hoisted_79, [
|
|
4710
|
+
createElementVNode("header", _hoisted_80, [
|
|
4711
|
+
_cache[48] || (_cache[48] = createElementVNode("div", { class: "h-9 w-9 flex items-center justify-center rounded-xl bg-indigo-50 text-indigo-600 border border-indigo-100/50" }, [createElementVNode("span", { class: "material-icons text-lg" }, "forum")], -1)),
|
|
4712
|
+
createElementVNode("div", _hoisted_81, [createElementVNode("h2", _hoisted_82, toDisplayString(unref(t)("collectionsView.chatTitle")), 1), createElementVNode("span", _hoisted_83, toDisplayString(collection.value.title), 1)]),
|
|
4658
4713
|
createElementVNode("button", {
|
|
4659
4714
|
type: "button",
|
|
4660
4715
|
class: "h-8 w-8 flex items-center justify-center rounded text-slate-400 hover:bg-slate-200/50 hover:text-slate-600 transition-colors",
|
|
4661
4716
|
"aria-label": unref(t)("common.close"),
|
|
4662
4717
|
"data-testid": "collections-chat-close",
|
|
4663
4718
|
onClick: closeChat
|
|
4664
|
-
}, [..._cache[
|
|
4719
|
+
}, [..._cache[47] || (_cache[47] = [createElementVNode("span", { class: "material-icons text-lg" }, "close", -1)])], 8, _hoisted_84)
|
|
4665
4720
|
]),
|
|
4666
|
-
createElementVNode("div",
|
|
4721
|
+
createElementVNode("div", _hoisted_85, [withDirectives(createElementVNode("textarea", {
|
|
4667
4722
|
ref_key: "chatInputEl",
|
|
4668
4723
|
ref: chatInputEl,
|
|
4669
4724
|
"onUpdate:modelValue": _cache[22] || (_cache[22] = ($event) => chatMessage.value = $event),
|
|
@@ -4672,8 +4727,8 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4672
4727
|
class: "w-full bg-slate-50 border border-slate-200/80 rounded-xl px-3 py-2.5 text-sm placeholder-slate-400 focus:outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500 focus:bg-white transition-all resize-none",
|
|
4673
4728
|
"data-testid": "collections-chat-input",
|
|
4674
4729
|
onKeydown: [withKeys(withModifiers(submitChat, ["meta"]), ["enter"]), withKeys(withModifiers(submitChat, ["ctrl"]), ["enter"])]
|
|
4675
|
-
}, null, 40,
|
|
4676
|
-
createElementVNode("footer",
|
|
4730
|
+
}, null, 40, _hoisted_86), [[vModelText, chatMessage.value]])]),
|
|
4731
|
+
createElementVNode("footer", _hoisted_87, [createElementVNode("button", {
|
|
4677
4732
|
type: "button",
|
|
4678
4733
|
class: "h-8 px-2.5 rounded text-xs font-bold text-slate-500 hover:bg-slate-200/50 transition-colors",
|
|
4679
4734
|
"data-testid": "collections-chat-cancel",
|
|
@@ -4684,7 +4739,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
|
|
|
4684
4739
|
disabled: !chatMessage.value.trim(),
|
|
4685
4740
|
"data-testid": "collections-chat-send",
|
|
4686
4741
|
onClick: submitChat
|
|
4687
|
-
}, toDisplayString(unref(t)("collectionsView.chatStart")), 9,
|
|
4742
|
+
}, toDisplayString(unref(t)("collectionsView.chatStart")), 9, _hoisted_88)])
|
|
4688
4743
|
])], 32)) : createCommentVNode("", true)
|
|
4689
4744
|
]);
|
|
4690
4745
|
};
|
|
@@ -5116,6 +5171,6 @@ var plugin = {
|
|
|
5116
5171
|
previewComponent: Preview_default
|
|
5117
5172
|
};
|
|
5118
5173
|
//#endregion
|
|
5119
|
-
export { CollectionCalendarView_default as CollectionCalendarView, CollectionCustomView_default as CollectionCustomView, CollectionDayView_default as CollectionDayView, CollectionEmbedView_default as CollectionEmbedView, CollectionKanbanView_default as CollectionKanbanView, CollectionRecordModal_default as CollectionRecordModal, CollectionRecordPanel_default as CollectionRecordPanel, CollectionView_default as CollectionView, CollectionViewConfigModal_default as CollectionViewConfigModal, CollectionsIndexView_default as CollectionsIndexView, FeedsView_default as FeedsView, Preview_default as PresentCollectionPreview, View_default as PresentCollectionView, collectionUi, configureCollectionUi, plugin, readCollectionSort, readCollectionViewMode, useCollectionRendering, writeCollectionSort, writeCollectionViewMode };
|
|
5174
|
+
export { CollectionCalendarView_default as CollectionCalendarView, CollectionCustomView_default as CollectionCustomView, CollectionDayView_default as CollectionDayView, CollectionEmbedView_default as CollectionEmbedView, CollectionKanbanView_default as CollectionKanbanView, CollectionRecordModal_default as CollectionRecordModal, CollectionRecordPanel_default as CollectionRecordPanel, CollectionView_default as CollectionView, CollectionViewConfigModal_default as CollectionViewConfigModal, CollectionsIndexView_default as CollectionsIndexView, FeedsView_default as FeedsView, Preview_default as PresentCollectionPreview, View_default as PresentCollectionView, applicableViewModes, collectionUi, configureCollectionUi, customViewKey, plugin, readCollectionSort, readCollectionViewMode, useCollectionRendering, writeCollectionSort, writeCollectionViewMode };
|
|
5120
5175
|
|
|
5121
5176
|
//# sourceMappingURL=vue.js.map
|