@thebes/cadmea 1.6.0 → 1.7.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/index/index.d.ts +8 -1
- package/dist/index/index.js +244 -224
- package/dist/index/index.js.map +1 -1
- package/dist/index/server.js +63 -54
- package/dist/index/server.js.map +1 -1
- package/dist/tanstack-start/index.d.ts +2 -0
- package/dist/tanstack-start/index.js +273 -229
- package/dist/tanstack-start/index.js.map +1 -1
- package/dist/tanstack-start/server.js +92 -61
- package/dist/tanstack-start/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,7 +6,7 @@ import { VISUAL_EDIT_MESSAGE, validateDocument } from "@thebes/cadmus/cms";
|
|
|
6
6
|
import { Link, useBlocker } from "@tanstack/solid-router";
|
|
7
7
|
import { createSolidTable, flexRender, getCoreRowModel } from "@tanstack/solid-table";
|
|
8
8
|
//#region src/CollectionEdit.tsx
|
|
9
|
-
var _tmpl$$5 = ["<p class=\"text-sm text-error\" role=\"alert\">", "</p>"], _tmpl$2$3 = "<span class=\"loading loading-spinner loading-sm\"></span>", _tmpl$3$
|
|
9
|
+
var _tmpl$$5 = ["<p class=\"text-sm text-error\" role=\"alert\">", "</p>"], _tmpl$2$3 = "<span class=\"loading loading-spinner loading-sm\"></span>", _tmpl$3$3 = [
|
|
10
10
|
"<button type=\"button\" class=\"btn flex-1\"",
|
|
11
11
|
">",
|
|
12
12
|
"</button>"
|
|
@@ -22,16 +22,17 @@ var _tmpl$$5 = ["<p class=\"text-sm text-error\" role=\"alert\">", "</p>"], _tmp
|
|
|
22
22
|
"<span class=\"text-base-content/60 self-center px-1 text-xs\" aria-live=\"polite\">",
|
|
23
23
|
"",
|
|
24
24
|
"</span>"
|
|
25
|
-
], _tmpl$7$1 = [
|
|
25
|
+
], _tmpl$7$1 = "<div class=\"modal modal-open\" role=\"dialog\" aria-modal=\"true\"><div class=\"modal-box\"><h3 class=\"text-lg font-semibold\">Publish changes?</h3><p class=\"text-base-content/70 py-2 text-sm\">Your latest saved draft will go live on the site.</p><div class=\"modal-action\"><button type=\"button\" class=\"btn btn-ghost\">Cancel</button><button type=\"button\" class=\"btn btn-primary\">Publish</button></div></div><button type=\"button\" class=\"modal-backdrop\" aria-label=\"Cancel\"></button></div>", _tmpl$8$1 = [
|
|
26
26
|
"<form class=\"flex flex-col gap-4\">",
|
|
27
27
|
"",
|
|
28
28
|
"<div class=\"bg-base-100 sticky bottom-0 flex gap-2 border-t py-3\">",
|
|
29
|
-
"</div
|
|
30
|
-
|
|
29
|
+
"</div>",
|
|
30
|
+
"</form>"
|
|
31
|
+
], _tmpl$9$1 = [
|
|
31
32
|
"<fieldset class=\"border-base-300 rounded-box border p-4\"><legend class=\"px-2 text-sm font-semibold\">",
|
|
32
33
|
"</legend>",
|
|
33
34
|
"</fieldset>"
|
|
34
|
-
], _tmpl$
|
|
35
|
+
], _tmpl$0$1 = ["<div class=\"grid grid-cols-1 gap-4 md:grid-cols-2\">", "</div>"], _tmpl$1$1 = "<span class=\"text-error\"> *</span>", _tmpl$10$1 = ["<p class=\"text-base-content/60 mb-1 text-xs\">", "</p>"], _tmpl$11$1 = ["<p class=\"text-error mt-1 text-sm\" role=\"alert\">", "</p>"], _tmpl$12$1 = [
|
|
35
36
|
"<div class=\"",
|
|
36
37
|
"\"><label class=\"label\"",
|
|
37
38
|
">",
|
|
@@ -40,37 +41,37 @@ var _tmpl$$5 = ["<p class=\"text-sm text-error\" role=\"alert\">", "</p>"], _tmp
|
|
|
40
41
|
"",
|
|
41
42
|
"",
|
|
42
43
|
"</div>"
|
|
43
|
-
], _tmpl$
|
|
44
|
+
], _tmpl$13$1 = [
|
|
44
45
|
"<input",
|
|
45
46
|
" class=\"input\" type=\"text\"",
|
|
46
47
|
"",
|
|
47
48
|
">"
|
|
48
|
-
], _tmpl$
|
|
49
|
+
], _tmpl$14$1 = [
|
|
49
50
|
"<select",
|
|
50
51
|
" class=\"select\"",
|
|
51
52
|
"",
|
|
52
53
|
"",
|
|
53
54
|
">",
|
|
54
55
|
"</select>"
|
|
55
|
-
], _tmpl$
|
|
56
|
+
], _tmpl$15$1 = [
|
|
56
57
|
"<option",
|
|
57
58
|
">",
|
|
58
59
|
"</option>"
|
|
59
|
-
], _tmpl$
|
|
60
|
+
], _tmpl$16 = [
|
|
60
61
|
"<input",
|
|
61
62
|
" class=\"input\" type=\"number\"",
|
|
62
63
|
"",
|
|
63
64
|
">"
|
|
64
|
-
], _tmpl$
|
|
65
|
+
], _tmpl$17 = [
|
|
65
66
|
"<input",
|
|
66
67
|
" class=\"input\" type=\"text\" readonly",
|
|
67
68
|
">"
|
|
68
|
-
], _tmpl$
|
|
69
|
+
], _tmpl$18 = [
|
|
69
70
|
"<input",
|
|
70
71
|
" class=\"checkbox\" type=\"checkbox\"",
|
|
71
72
|
"",
|
|
72
73
|
">"
|
|
73
|
-
], _tmpl$
|
|
74
|
+
], _tmpl$19 = ["<p class=\"text-sm opacity-70 break-all\">", "</p>"], _tmpl$20 = ["<p class=\"text-sm text-error\">", "</p>"], _tmpl$21 = [
|
|
74
75
|
"<div class=\"flex flex-col gap-2\">",
|
|
75
76
|
"<input",
|
|
76
77
|
" class=\"file-input\" type=\"file\"",
|
|
@@ -78,11 +79,11 @@ var _tmpl$$5 = ["<p class=\"text-sm text-error\" role=\"alert\">", "</p>"], _tmp
|
|
|
78
79
|
">",
|
|
79
80
|
"",
|
|
80
81
|
"</div>"
|
|
81
|
-
], _tmpl$
|
|
82
|
+
], _tmpl$22 = ["<div class=\"mb-1 flex flex-wrap gap-1\">", "</div>"], _tmpl$23 = "<button type=\"button\" aria-label=\"Clear\" class=\"absolute top-2 right-2 cursor-pointer opacity-60\">×</button>", _tmpl$24 = [
|
|
82
83
|
"<div",
|
|
83
84
|
" role=\"listbox\" class=\"bg-base-100 border-base-300 rounded-box absolute z-10 mt-1 flex max-h-56 w-full flex-col overflow-auto border p-1 shadow\">",
|
|
84
85
|
"</div>"
|
|
85
|
-
], _tmpl$
|
|
86
|
+
], _tmpl$25 = [
|
|
86
87
|
"<div class=\"relative\">",
|
|
87
88
|
"<input",
|
|
88
89
|
" type=\"text\" role=\"combobox\"",
|
|
@@ -91,27 +92,27 @@ var _tmpl$$5 = ["<p class=\"text-sm text-error\" role=\"alert\">", "</p>"], _tmp
|
|
|
91
92
|
">",
|
|
92
93
|
"",
|
|
93
94
|
"</div>"
|
|
94
|
-
], _tmpl$
|
|
95
|
+
], _tmpl$26 = [
|
|
95
96
|
"<span class=\"badge badge-primary gap-1\">",
|
|
96
97
|
"<button type=\"button\" aria-label=\"",
|
|
97
98
|
"\" class=\"cursor-pointer\">×</button></span>"
|
|
98
|
-
], _tmpl$
|
|
99
|
+
], _tmpl$27 = [
|
|
99
100
|
"<button type=\"button\" role=\"option\"",
|
|
100
101
|
" class=\"",
|
|
101
102
|
"\">",
|
|
102
103
|
"</button>"
|
|
103
|
-
], _tmpl$
|
|
104
|
+
], _tmpl$28 = ["<div role=\"menu\" class=\"bg-base-100 border-base-300 rounded-box absolute z-10 mt-1 flex flex-col border p-1 shadow\">", "</div>"], _tmpl$29 = [
|
|
104
105
|
"<div class=\"relative self-start\"><button type=\"button\" class=\"btn btn-outline btn-sm\" aria-haspopup=\"menu\"",
|
|
105
106
|
">Add block</button>",
|
|
106
107
|
"</div>"
|
|
107
|
-
], _tmpl$
|
|
108
|
+
], _tmpl$30 = [
|
|
108
109
|
"<div class=\"form-control md:col-span-2\"><div class=\"label font-medium\">",
|
|
109
110
|
"",
|
|
110
111
|
"</div>",
|
|
111
112
|
"<div class=\"flex flex-col gap-3\">",
|
|
112
113
|
"",
|
|
113
114
|
"</div></div>"
|
|
114
|
-
], _tmpl$
|
|
115
|
+
], _tmpl$31 = ["<span class=\"text-base-content/60 truncate text-sm\">", "</span>"], _tmpl$32 = ["<div class=\"flex flex-col gap-2\">", "</div>"], _tmpl$33 = [
|
|
115
116
|
"<div class=\"card bg-base-200 flex flex-col gap-2 p-3\"><div class=\"flex items-center gap-2\"><button type=\"button\" class=\"btn btn-ghost btn-sm gap-2\"",
|
|
116
117
|
"><span aria-hidden=\"true\">",
|
|
117
118
|
"</span><span class=\"font-semibold\">",
|
|
@@ -120,7 +121,7 @@ var _tmpl$$5 = ["<p class=\"text-sm text-error\" role=\"alert\">", "</p>"], _tmp
|
|
|
120
121
|
">↑</button><button type=\"button\" class=\"btn btn-ghost btn-xs\" aria-label=\"Move down\"",
|
|
121
122
|
">↓</button><button type=\"button\" class=\"btn btn-ghost btn-xs\" aria-label=\"Duplicate\">⧉</button><button type=\"button\" class=\"btn btn-ghost btn-xs text-error\" aria-label=\"Remove\">Remove</button></div></div>",
|
|
122
123
|
"</div>"
|
|
123
|
-
], _tmpl$
|
|
124
|
+
], _tmpl$34 = ["<button type=\"button\" class=\"btn btn-outline btn-sm self-start\">Add ", "</button>"], _tmpl$35 = ["<i", " aria-hidden=\"true\"></i>"], _tmpl$36 = [
|
|
124
125
|
"<button type=\"button\" role=\"menuitem\" class=\"flex items-center gap-2 rounded px-3 py-2 text-left\">",
|
|
125
126
|
"",
|
|
126
127
|
"</button>"
|
|
@@ -190,6 +191,7 @@ function CollectionEdit(props) {
|
|
|
190
191
|
const fieldGroups = groupFields(editableFields(props.config));
|
|
191
192
|
const versioned = () => props.config.versions?.drafts && props.draftActions;
|
|
192
193
|
const [autosaveStatus, setAutosaveStatus] = createSignal("idle");
|
|
194
|
+
const [confirmingPublish, setConfirmingPublish] = createSignal(false);
|
|
193
195
|
let autosaveTimer;
|
|
194
196
|
createEffect(() => {
|
|
195
197
|
const dirty = !isDefaultValue();
|
|
@@ -211,7 +213,7 @@ function CollectionEdit(props) {
|
|
|
211
213
|
}, props.draftActions?.autosaveMs ?? 1500);
|
|
212
214
|
});
|
|
213
215
|
onCleanup(() => clearTimeout(autosaveTimer));
|
|
214
|
-
return ssr(_tmpl$
|
|
216
|
+
return ssr(_tmpl$8$1, escape(createComponent(Show, {
|
|
215
217
|
get when() {
|
|
216
218
|
return props.error;
|
|
217
219
|
},
|
|
@@ -235,7 +237,7 @@ function CollectionEdit(props) {
|
|
|
235
237
|
});
|
|
236
238
|
},
|
|
237
239
|
get children() {
|
|
238
|
-
return ssr(_tmpl$
|
|
240
|
+
return ssr(_tmpl$9$1, escape(group.name), escape(createComponent(FieldsGrid, {
|
|
239
241
|
form,
|
|
240
242
|
ctx,
|
|
241
243
|
get fields() {
|
|
@@ -271,7 +273,7 @@ function CollectionEdit(props) {
|
|
|
271
273
|
},
|
|
272
274
|
get children() {
|
|
273
275
|
return [
|
|
274
|
-
ssr(_tmpl$3$
|
|
276
|
+
ssr(_tmpl$3$3, ssrAttribute("disabled", props.draftActions?.saving, true), escape(createComponent(Show, {
|
|
275
277
|
get when() {
|
|
276
278
|
return props.draftActions?.saving;
|
|
277
279
|
},
|
|
@@ -331,10 +333,17 @@ function CollectionEdit(props) {
|
|
|
331
333
|
})
|
|
332
334
|
];
|
|
333
335
|
}
|
|
336
|
+
})), escape(createComponent(Show, {
|
|
337
|
+
get when() {
|
|
338
|
+
return confirmingPublish();
|
|
339
|
+
},
|
|
340
|
+
get children() {
|
|
341
|
+
return ssr(_tmpl$7$1);
|
|
342
|
+
}
|
|
334
343
|
})));
|
|
335
344
|
}
|
|
336
345
|
function FieldsGrid(props) {
|
|
337
|
-
return ssr(_tmpl$
|
|
346
|
+
return ssr(_tmpl$0$1, escape(createComponent(For, {
|
|
338
347
|
get each() {
|
|
339
348
|
return props.fields;
|
|
340
349
|
},
|
|
@@ -353,26 +362,26 @@ function renderField(form, ctx, name, field, label) {
|
|
|
353
362
|
const spanClass = field.admin?.width === "half" ? "md:col-span-1" : "md:col-span-2";
|
|
354
363
|
return createComponent(form.Field, {
|
|
355
364
|
name,
|
|
356
|
-
children: (fieldApi) => ssr(_tmpl$
|
|
365
|
+
children: (fieldApi) => ssr(_tmpl$12$1, `form-control ${escape(spanClass, true)}`, ssrAttribute("for", escape(name, true), false), escape(label), escape(createComponent(Show, {
|
|
357
366
|
get when() {
|
|
358
367
|
return field.required;
|
|
359
368
|
},
|
|
360
369
|
get children() {
|
|
361
|
-
return ssr(_tmpl$
|
|
370
|
+
return ssr(_tmpl$1$1);
|
|
362
371
|
}
|
|
363
372
|
})), escape(createComponent(Show, {
|
|
364
373
|
get when() {
|
|
365
374
|
return field.admin?.description;
|
|
366
375
|
},
|
|
367
376
|
get children() {
|
|
368
|
-
return ssr(_tmpl$
|
|
377
|
+
return ssr(_tmpl$10$1, escape(field.admin?.description));
|
|
369
378
|
}
|
|
370
379
|
})), escape(renderControl(ctx, name, field, fieldApi)), escape(createComponent(Show, {
|
|
371
380
|
get when() {
|
|
372
381
|
return (fieldApi().state.meta.errors?.length ?? 0) > 0;
|
|
373
382
|
},
|
|
374
383
|
get children() {
|
|
375
|
-
return ssr(_tmpl$
|
|
384
|
+
return ssr(_tmpl$11$1, escape(fieldApi().state.meta.errors.filter(Boolean).join(", ")));
|
|
376
385
|
}
|
|
377
386
|
})))
|
|
378
387
|
});
|
|
@@ -392,16 +401,16 @@ function renderControl(ctx, name, field, fieldApi) {
|
|
|
392
401
|
const readOnly = field.admin?.readOnly;
|
|
393
402
|
const change = (v) => fieldApi().handleChange(v);
|
|
394
403
|
switch (field.type) {
|
|
395
|
-
case "text": return ssr(_tmpl$
|
|
396
|
-
case "select": return ssr(_tmpl$
|
|
404
|
+
case "text": return ssr(_tmpl$13$1, ssrAttribute("id", escape(name, true), false), ssrAttribute("placeholder", escape(field.admin?.placeholder, true), false) + ssrAttribute("readonly", escape(readOnly, true), false) + ssrAttribute("value", escape(fieldApi().state.value ?? "", true), false), ssrAttribute("required", field.required, true));
|
|
405
|
+
case "select": return ssr(_tmpl$14$1, ssrAttribute("id", escape(name, true), false), ssrAttribute("value", escape(fieldApi().state.value ?? "", true), false), ssrAttribute("required", field.required, true), ssrAttribute("disabled", readOnly, true), escape(createComponent(For, {
|
|
397
406
|
get each() {
|
|
398
407
|
return field.options;
|
|
399
408
|
},
|
|
400
|
-
children: (option) => ssr(_tmpl$
|
|
409
|
+
children: (option) => ssr(_tmpl$15$1, ssrAttribute("value", escape(option, true), false), escape(option))
|
|
401
410
|
})));
|
|
402
|
-
case "number": return ssr(_tmpl$
|
|
403
|
-
case "date": return ssr(_tmpl$
|
|
404
|
-
case "checkbox": return ssr(_tmpl$
|
|
411
|
+
case "number": return ssr(_tmpl$16, ssrAttribute("id", escape(name, true), false), ssrAttribute("placeholder", escape(field.admin?.placeholder, true), false) + ssrAttribute("readonly", escape(readOnly, true), false) + ssrAttribute("value", escape(fieldApi().state.value ?? "", true), false), ssrAttribute("required", field.required, true));
|
|
412
|
+
case "date": return ssr(_tmpl$17, ssrAttribute("id", escape(name, true), false), ssrAttribute("value", escape(formatDateValue(fieldApi().state.value), true), false));
|
|
413
|
+
case "checkbox": return ssr(_tmpl$18, ssrAttribute("id", escape(name, true), false), ssrAttribute("disabled", readOnly, true), ssrAttribute("checked", fieldApi().state.value ?? false, true));
|
|
405
414
|
case "upload": return createComponent(UploadControl, {
|
|
406
415
|
name,
|
|
407
416
|
field,
|
|
@@ -440,12 +449,12 @@ function UploadControl(props) {
|
|
|
440
449
|
const [uploading, setUploading] = createSignal(false);
|
|
441
450
|
const [uploadError, setUploadError] = createSignal();
|
|
442
451
|
const value = () => props.fieldApi().state.value;
|
|
443
|
-
return ssr(_tmpl$
|
|
452
|
+
return ssr(_tmpl$21, escape(createComponent(Show, {
|
|
444
453
|
get when() {
|
|
445
454
|
return value();
|
|
446
455
|
},
|
|
447
456
|
get children() {
|
|
448
|
-
return ssr(_tmpl$
|
|
457
|
+
return ssr(_tmpl$19, escape(value()));
|
|
449
458
|
}
|
|
450
459
|
})), ssrAttribute("id", escape(props.name, true), false), ssrAttribute("required", props.field.required && !value(), true), ssrAttribute("disabled", uploading() || props.field.admin?.readOnly, true), escape(createComponent(Show, {
|
|
451
460
|
get when() {
|
|
@@ -459,7 +468,7 @@ function UploadControl(props) {
|
|
|
459
468
|
return uploadError();
|
|
460
469
|
},
|
|
461
470
|
get children() {
|
|
462
|
-
return ssr(_tmpl$
|
|
471
|
+
return ssr(_tmpl$20, escape(uploadError()));
|
|
463
472
|
}
|
|
464
473
|
})));
|
|
465
474
|
}
|
|
@@ -481,16 +490,16 @@ function RelationshipField(props) {
|
|
|
481
490
|
return props.options.filter((o) => o.label.toLowerCase().includes(q) && (!isMulti() || !selectedIds().includes(o.id)));
|
|
482
491
|
};
|
|
483
492
|
const singleLabel = () => selectedOptions()[0]?.label ?? "";
|
|
484
|
-
return ssr(_tmpl$
|
|
493
|
+
return ssr(_tmpl$25, escape(createComponent(Show, {
|
|
485
494
|
get when() {
|
|
486
495
|
return isMulti() && selectedOptions().length > 0;
|
|
487
496
|
},
|
|
488
497
|
get children() {
|
|
489
|
-
return ssr(_tmpl$
|
|
498
|
+
return ssr(_tmpl$22, escape(createComponent(For, {
|
|
490
499
|
get each() {
|
|
491
500
|
return selectedOptions();
|
|
492
501
|
},
|
|
493
|
-
children: (option) => ssr(_tmpl$
|
|
502
|
+
children: (option) => ssr(_tmpl$26, escape(option.label), `Remove ${escape(option.label, true)}`)
|
|
494
503
|
})));
|
|
495
504
|
}
|
|
496
505
|
})), ssrAttribute("id", escape(props.name, true), false), ssrAttribute("aria-expanded", escape(open(), true), false) + ssrAttribute("aria-controls", escape(listId, true), false), ssrAttribute("required", props.field.required && selectedIds().length === 0, true), ssrAttribute("disabled", props.field.admin?.readOnly, true) + ssrAttribute("placeholder", escape(props.field.admin?.placeholder ?? "Search…", true), false) + ssrAttribute("value", open() || isMulti() ? escape(query(), true) : escape(singleLabel(), true), false), escape(createComponent(Show, {
|
|
@@ -498,18 +507,18 @@ function RelationshipField(props) {
|
|
|
498
507
|
return !isMulti() && value() != null && !props.field.required;
|
|
499
508
|
},
|
|
500
509
|
get children() {
|
|
501
|
-
return ssr(_tmpl$
|
|
510
|
+
return ssr(_tmpl$23);
|
|
502
511
|
}
|
|
503
512
|
})), escape(createComponent(Show, {
|
|
504
513
|
get when() {
|
|
505
514
|
return open() && filtered().length > 0;
|
|
506
515
|
},
|
|
507
516
|
get children() {
|
|
508
|
-
return ssr(_tmpl$
|
|
517
|
+
return ssr(_tmpl$24, ssrAttribute("id", escape(listId, true), false), escape(createComponent(For, {
|
|
509
518
|
get each() {
|
|
510
519
|
return filtered();
|
|
511
520
|
},
|
|
512
|
-
children: (option, i) => ssr(_tmpl$
|
|
521
|
+
children: (option, i) => ssr(_tmpl$27, ssrAttribute("aria-selected", escape(selectedIds().includes(option.id), true), false), `rounded px-3 py-2 text-left ${i() === active() ? "bg-base-200" : ""}`, escape(option.label))
|
|
513
522
|
})));
|
|
514
523
|
}
|
|
515
524
|
})));
|
|
@@ -551,19 +560,19 @@ function BlockEditor(props) {
|
|
|
551
560
|
}
|
|
552
561
|
return "";
|
|
553
562
|
}
|
|
554
|
-
return ssr(_tmpl$
|
|
563
|
+
return ssr(_tmpl$30, escape(props.label), escape(createComponent(Show, {
|
|
555
564
|
get when() {
|
|
556
565
|
return props.field.required;
|
|
557
566
|
},
|
|
558
567
|
get children() {
|
|
559
|
-
return ssr(_tmpl$
|
|
568
|
+
return ssr(_tmpl$1$1);
|
|
560
569
|
}
|
|
561
570
|
})), escape(createComponent(Show, {
|
|
562
571
|
get when() {
|
|
563
572
|
return props.field.admin?.description;
|
|
564
573
|
},
|
|
565
574
|
get children() {
|
|
566
|
-
return ssr(_tmpl$
|
|
575
|
+
return ssr(_tmpl$10$1, escape(props.field.admin?.description));
|
|
567
576
|
}
|
|
568
577
|
})), escape(createComponent(Index, {
|
|
569
578
|
get each() {
|
|
@@ -571,19 +580,19 @@ function BlockEditor(props) {
|
|
|
571
580
|
},
|
|
572
581
|
children: (item, index) => {
|
|
573
582
|
const isCollapsed = () => collapsed().has(index);
|
|
574
|
-
return ssr(_tmpl$
|
|
583
|
+
return ssr(_tmpl$33, ssrAttribute("aria-expanded", !isCollapsed(), false), isCollapsed() ? "▸" : "▾", escape(blockTitle(item())), escape(createComponent(Show, {
|
|
575
584
|
get when() {
|
|
576
585
|
return isCollapsed() && blockSummary(item());
|
|
577
586
|
},
|
|
578
587
|
get children() {
|
|
579
|
-
return ssr(_tmpl$
|
|
588
|
+
return ssr(_tmpl$31, escape(blockSummary(item())));
|
|
580
589
|
}
|
|
581
590
|
})), ssrAttribute("disabled", index === 0, true), ssrAttribute("disabled", index === items().length - 1, true), escape(createComponent(Show, {
|
|
582
591
|
get when() {
|
|
583
592
|
return !isCollapsed();
|
|
584
593
|
},
|
|
585
594
|
get children() {
|
|
586
|
-
return ssr(_tmpl$
|
|
595
|
+
return ssr(_tmpl$32, escape(createComponent(For, {
|
|
587
596
|
get each() {
|
|
588
597
|
return fieldsForItem(props.field, item());
|
|
589
598
|
},
|
|
@@ -597,22 +606,22 @@ function BlockEditor(props) {
|
|
|
597
606
|
return disc && variants.length > 0;
|
|
598
607
|
},
|
|
599
608
|
get fallback() {
|
|
600
|
-
return ssr(_tmpl$
|
|
609
|
+
return ssr(_tmpl$34, escape(props.label));
|
|
601
610
|
},
|
|
602
611
|
get children() {
|
|
603
|
-
return ssr(_tmpl$
|
|
612
|
+
return ssr(_tmpl$29, ssrAttribute("aria-expanded", escape(menuOpen(), true), false), escape(createComponent(Show, {
|
|
604
613
|
get when() {
|
|
605
614
|
return menuOpen();
|
|
606
615
|
},
|
|
607
616
|
get children() {
|
|
608
|
-
return ssr(_tmpl$
|
|
617
|
+
return ssr(_tmpl$28, escape(createComponent(For, {
|
|
609
618
|
each: variants,
|
|
610
|
-
children: (variant) => ssr(_tmpl$
|
|
619
|
+
children: (variant) => ssr(_tmpl$36, escape(createComponent(Show, {
|
|
611
620
|
get when() {
|
|
612
621
|
return disc?.variantsAdmin?.[variant]?.icon;
|
|
613
622
|
},
|
|
614
623
|
get children() {
|
|
615
|
-
return ssr(_tmpl$
|
|
624
|
+
return ssr(_tmpl$35, ssrAttribute("class", escape(disc?.variantsAdmin?.[variant]?.icon, true), false));
|
|
616
625
|
}
|
|
617
626
|
})), escape(variantLabel(disc, variant)))
|
|
618
627
|
})));
|
|
@@ -712,7 +721,7 @@ var _tmpl$$2 = ["<button type=\"button\" class=\"btn btn-error btn-outline btn-s
|
|
|
712
721
|
"</h1>",
|
|
713
722
|
"",
|
|
714
723
|
"</div>"
|
|
715
|
-
], _tmpl$3$
|
|
724
|
+
], _tmpl$3$2 = [
|
|
716
725
|
"<div class=\"grid grid-cols-1 gap-4 lg:grid-cols-2\">",
|
|
717
726
|
"",
|
|
718
727
|
"</div>"
|
|
@@ -854,7 +863,7 @@ function createCollectionEditPage(options) {
|
|
|
854
863
|
return createComponent(EditorPane, {});
|
|
855
864
|
},
|
|
856
865
|
get children() {
|
|
857
|
-
return ssr(_tmpl$3$
|
|
866
|
+
return ssr(_tmpl$3$2, escape(createComponent(EditorPane, {})), escape(createComponent(Show, {
|
|
858
867
|
get when() {
|
|
859
868
|
return options.preview?.url();
|
|
860
869
|
},
|
|
@@ -889,7 +898,7 @@ var _tmpl$$1 = ["<button type=\"button\" class=\"btn btn-outline btn-sm\">", "</
|
|
|
889
898
|
">",
|
|
890
899
|
"</select><select aria-label=\"Sort direction\" class=\"select select-sm join-item\"",
|
|
891
900
|
"><option value=\"asc\">Ascending</option><option value=\"desc\">Descending</option></select></div>"
|
|
892
|
-
], _tmpl$3 = [
|
|
901
|
+
], _tmpl$3$1 = [
|
|
893
902
|
"<table class=\"table hidden md:table\"><thead>",
|
|
894
903
|
"</thead><tbody>",
|
|
895
904
|
"</tbody></table>"
|
|
@@ -908,7 +917,7 @@ var _tmpl$$1 = ["<button type=\"button\" class=\"btn btn-outline btn-sm\">", "</
|
|
|
908
917
|
"<option",
|
|
909
918
|
">",
|
|
910
919
|
"</option>"
|
|
911
|
-
], _tmpl$8 = ["<p class=\"text-
|
|
920
|
+
], _tmpl$8 = ["<div class=\"border-base-300 rounded-box flex flex-col items-center gap-1 border border-dashed py-12 text-center\"><p class=\"text-base-content/70 m-0\">No ", " yet.</p></div>"], _tmpl$9 = "<th></th>", _tmpl$0 = [
|
|
912
921
|
"<tr>",
|
|
913
922
|
"",
|
|
914
923
|
"</tr>"
|
|
@@ -983,10 +992,10 @@ function CollectionList(props) {
|
|
|
983
992
|
return props.rows.length > 0;
|
|
984
993
|
},
|
|
985
994
|
get fallback() {
|
|
986
|
-
return ssr(_tmpl$8, escape(props.config.slug));
|
|
995
|
+
return props.emptyState ?? ssr(_tmpl$8, escape(props.config.slug));
|
|
987
996
|
},
|
|
988
997
|
get children() {
|
|
989
|
-
return [ssr(_tmpl$3, escape(createComponent(For, {
|
|
998
|
+
return [ssr(_tmpl$3$1, escape(createComponent(For, {
|
|
990
999
|
get each() {
|
|
991
1000
|
return table.getHeaderGroups();
|
|
992
1001
|
},
|
|
@@ -1055,7 +1064,11 @@ var _tmpl$ = [
|
|
|
1055
1064
|
"</h1>",
|
|
1056
1065
|
"</div>",
|
|
1057
1066
|
"</div>"
|
|
1058
|
-
], _tmpl$2 = "<div class=\"loading loading-spinner\"></div>"
|
|
1067
|
+
], _tmpl$2 = "<div class=\"loading loading-spinner\"></div>", _tmpl$3 = [
|
|
1068
|
+
"<div class=\"border-base-300 rounded-box flex flex-col items-center gap-3 border border-dashed py-12 text-center\"><p class=\"text-base-content/70 m-0\">No ",
|
|
1069
|
+
" yet.</p>",
|
|
1070
|
+
"</div>"
|
|
1071
|
+
];
|
|
1059
1072
|
/**
|
|
1060
1073
|
* Builds a list-view page component for a collection — paginated/sortable
|
|
1061
1074
|
* query, loading state, and the generic table/card list, wired together.
|
|
@@ -1137,6 +1150,24 @@ function createCollectionListPage(options) {
|
|
|
1137
1150
|
get rows() {
|
|
1138
1151
|
return result.data?.rows ?? [];
|
|
1139
1152
|
},
|
|
1153
|
+
get emptyState() {
|
|
1154
|
+
return ssr(_tmpl$3, escape(options.label ?? options.collection.slug), escape(createComponent(Show, {
|
|
1155
|
+
get when() {
|
|
1156
|
+
return options.newHref && options.capabilities?.()?.canCreate !== false;
|
|
1157
|
+
},
|
|
1158
|
+
get children() {
|
|
1159
|
+
return createComponent(Link, {
|
|
1160
|
+
get to() {
|
|
1161
|
+
return options.newHref;
|
|
1162
|
+
},
|
|
1163
|
+
"class": "btn btn-primary btn-sm",
|
|
1164
|
+
get children() {
|
|
1165
|
+
return options.newLabel ?? `New ${options.collection.slug}`;
|
|
1166
|
+
}
|
|
1167
|
+
});
|
|
1168
|
+
}
|
|
1169
|
+
})));
|
|
1170
|
+
},
|
|
1140
1171
|
get onRowClick() {
|
|
1141
1172
|
return options.onRowClick;
|
|
1142
1173
|
},
|