@oktis-works/admin 0.23.3 → 0.24.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/client/_astro/{ActivityWidget.C8vh6xAH.js → ActivityWidget.ZVWCvrxL.js} +1 -1
- package/dist/client/_astro/{AdminBar.D4zIDpRx.js → AdminBar.Cp3-f-Na.js} +1 -1
- package/dist/client/_astro/{ApiKeysManager.Bkuipo9h.js → ApiKeysManager.CpgNjjZm.js} +1 -1
- package/dist/client/_astro/{AtGlanceWidget.BwnpX_nn.js → AtGlanceWidget.B4v1yrwI.js} +1 -1
- package/dist/client/_astro/BaseLayout.Ceb72bti.css +1 -0
- package/dist/client/_astro/{CommentsManager.B7eut49M.js → CommentsManager.Da4veAPJ.js} +1 -1
- package/dist/client/_astro/ContentEditor.CSin5EHw.js +1 -0
- package/dist/client/_astro/{ContentTypeWorkspace.xXST4b7L.js → ContentTypeWorkspace.CjOEvGzy.js} +1 -1
- package/dist/client/_astro/{DashboardHome.DD8QG8ZW.js → DashboardHome.C40YVSiB.js} +1 -1
- package/dist/client/_astro/{DashboardLayout.astro_astro_type_script_index_0_lang.DPDlXZ5o.js → DashboardLayout.astro_astro_type_script_index_0_lang.DEsBqJww.js} +1 -1
- package/dist/client/_astro/{FieldGroupEditor.BBEN5r2U.js → FieldGroupEditor.9WZ-czWM.js} +1 -1
- package/dist/client/_astro/{FieldGroupList.BatiQHnf.js → FieldGroupList.BG9Wq5_L.js} +1 -1
- package/dist/client/_astro/FieldRenderer.DrX12H8L.js +3 -0
- package/dist/client/_astro/{Footer.BdwB3qmM.js → Footer.D7L9WAh7.js} +1 -1
- package/dist/client/_astro/{GeneralSettings.BCfrxm6Z.js → GeneralSettings.udEZdv-v.js} +1 -1
- package/dist/client/_astro/{LogsManager.Bs5CSVoj.js → LogsManager.B5TC9xQ_.js} +1 -1
- package/dist/client/_astro/{MediaLibrary.CHn5f4-T.js → MediaLibrary.D2v__yUO.js} +1 -1
- package/dist/client/_astro/{MenuManager.C6SrDqdC.js → MenuManager.glKVLQiP.js} +1 -1
- package/dist/client/_astro/{Modal.DdoTYkUe.js → Modal.DijYhpj_.js} +1 -1
- package/dist/client/_astro/{PluginManager.BLpO1lc5.js → PluginManager.BGdxyG-e.js} +1 -1
- package/dist/client/_astro/{PluginPageHost.CuXn-tn7.js → PluginPageHost.CEDOBtUT.js} +1 -1
- package/dist/client/_astro/{PostTypesManager.B6XdeNQH.js → PostTypesManager.DTbeJSyc.js} +1 -1
- package/dist/client/_astro/{QuickDraftWidget.COnmqwEP.js → QuickDraftWidget.wRkEcf8k.js} +1 -1
- package/dist/client/_astro/{ReadingSettings.dAD5fTqQ.js → ReadingSettings.CD8voAVk.js} +1 -1
- package/dist/client/_astro/{ResourceHubs.B6txFjmO.js → ResourceHubs.Cpu4lcaN.js} +1 -1
- package/dist/client/_astro/{TaxonomiesManager.CUiXA1--.js → TaxonomiesManager.gPoogAar.js} +1 -1
- package/dist/client/_astro/TaxonomyTermsManager.B3TphEaE.js +1 -0
- package/dist/client/_astro/{ThemeCustomizer.Bh3Gj0ud.js → ThemeCustomizer.BKKTlRC5.js} +1 -1
- package/dist/client/_astro/{ThemeManager.UG7ieOYF.js → ThemeManager.KDwxbVIq.js} +1 -1
- package/dist/client/_astro/{UserCreateForm.CTbVVXjg.js → UserCreateForm.IAFj7Afs.js} +1 -1
- package/dist/client/_astro/{UsersManager.Dk2kJsYG.js → UsersManager.BfVYX6D5.js} +1 -1
- package/dist/client/_astro/{WebhooksManager.DTMl6Bm7.js → WebhooksManager.Bp3Zp4vO.js} +1 -1
- package/dist/client/_astro/{api.fpBzBw4U.js → api.C1uUawnK.js} +1 -1
- package/dist/client/_astro/{extensions.DZ7iomLj.js → extensions.XVI9Kud6.js} +1 -1
- package/dist/client/_astro/{i18n.DQYU1D_P.js → i18n.TTF80CEw.js} +1 -1
- package/dist/client/_astro/{login.astro_astro_type_script_index_0_lang.DA827d72.js → login.astro_astro_type_script_index_0_lang.C_Lrwk3I.js} +1 -1
- package/dist/client/_astro/{src.CYKGYEyR.js → src.DoHIZU0i.js} +1 -1
- package/dist/client/_astro/{store.CjNcmZUB.js → store.BUgA6DSh.js} +1 -1
- package/dist/server/chunks/{404_vQwudBEj.mjs → 404_CouGE9Mj.mjs} +1 -1
- package/dist/server/chunks/{BaseLayout_CJGULIpb.mjs → BaseLayout_DRJ6-Y9z.mjs} +5 -5
- package/dist/server/chunks/ContentEditor_DIjqVt5v.mjs +324 -0
- package/dist/server/chunks/{DashboardLayout_DvfGK5S9.mjs → DashboardLayout_Bz8ZBDme.mjs} +85 -3
- package/dist/server/chunks/{FieldRenderer_hN7BJpMp.mjs → FieldRenderer_RlFoxao4.mjs} +570 -62
- package/dist/server/chunks/{MediaLibrary_BP42MRyJ.mjs → MediaLibrary_Dh6dBT17.mjs} +2 -2
- package/dist/server/chunks/{Modal_Ch2TxBxO.mjs → Modal_CpojFoyP.mjs} +1 -1
- package/dist/server/chunks/{_.._DuD24v6o.mjs → _.._C1o1V5X_.mjs} +1 -1
- package/dist/server/chunks/{_id__DK_jXL1Q.mjs → _id__BKZ7vD0U.mjs} +2 -2
- package/dist/server/chunks/{access_pGLFLBaE.mjs → access_COyC7DxO.mjs} +3 -3
- package/dist/server/chunks/{api-keys_BPiWCywt.mjs → api-keys_D2TJYRAW.mjs} +3 -3
- package/dist/server/chunks/{comments_HtxLK4Vu.mjs → comments_CySyBx_l.mjs} +2 -2
- package/dist/server/chunks/{custom-fields_CLqVsj2N.mjs → custom-fields_Clivf3ew.mjs} +2 -2
- package/dist/server/chunks/{customize_C8xbYnPi.mjs → customize_XWQyyFCl.mjs} +3 -3
- package/dist/server/chunks/{edit_CHln4Kd_.mjs → edit_CYlskXjG.mjs} +2 -2
- package/dist/server/chunks/{i18n_BlAR9yiz.mjs → i18n_Bp0_xO2v.mjs} +4 -6
- package/dist/server/chunks/{index_COr5MHJ7.mjs → index_BufAjUfw.mjs} +2 -2
- package/dist/server/chunks/{index_DK_fTf2_.mjs → index_CJOIvqZF.mjs} +2 -2
- package/dist/server/chunks/{index_BiKJEUK6.mjs → index_DBmNvPut.mjs} +2 -2
- package/dist/server/chunks/{index_CNk9hfS_.mjs → index_Z5USLJCo.mjs} +3 -3
- package/dist/server/chunks/{index_T7SwCQJ9.mjs → index_pSSu8X0A.mjs} +2 -2
- package/dist/server/chunks/{login_4_AiN3uA.mjs → login_BbReGd7a.mjs} +1 -1
- package/dist/server/chunks/{logs_BnmhxL0Y.mjs → logs_D_xRW_Dm.mjs} +2 -2
- package/dist/server/chunks/{menus_CnlArgBT.mjs → menus_t0aZuQCI.mjs} +2 -2
- package/dist/server/chunks/{new_BLx19-Ni.mjs → new_CkSJ-S3h.mjs} +2 -2
- package/dist/server/chunks/{new_CtlziJrk.mjs → new_DFA50r2h.mjs} +2 -2
- package/dist/server/chunks/{plugins_CgMxXTGS.mjs → plugins_rehiATzz.mjs} +2 -2
- package/dist/server/chunks/{post-types_cQc2Msvm.mjs → post-types_Dx4bmkB7.mjs} +2 -2
- package/dist/server/chunks/{reading_0A4laJFd.mjs → reading_DVMggOZa.mjs} +2 -2
- package/dist/server/chunks/{taxonomies_CiAk4uQu.mjs → taxonomies_BKVuy-kF.mjs} +2 -2
- package/dist/server/chunks/{taxonomy_C1yrRsga.mjs → taxonomy_CsnDSlD1.mjs} +31 -18
- package/dist/server/chunks/{themes_C8eP1zzS.mjs → themes_c2vDYHy-.mjs} +2 -2
- package/dist/server/chunks/{upload_BNO83SEC.mjs → upload_DYFOxmHE.mjs} +2 -2
- package/dist/server/chunks/{webhooks_BQe0fs4j.mjs → webhooks_CjBMAJt2.mjs} +2 -2
- package/dist/server/entry.mjs +28 -28
- package/dist/server/virtual_astro_middleware.mjs +1 -1
- package/package.json +5 -5
- package/dist/client/_astro/BaseLayout.Rpr86VwM.css +0 -1
- package/dist/client/_astro/ContentEditor.CTopdn_8.js +0 -1
- package/dist/client/_astro/FieldRenderer.BeF5CSJf.js +0 -3
- package/dist/client/_astro/TaxonomyTermsManager.egxIFsFi.js +0 -1
- package/dist/server/chunks/ContentEditor_D3hp0Gyo.mjs +0 -728
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import { d as For2, g as Show2, s as loadPluginComponent, v as createMemo$1, y as createSignal$1 } from "./
|
|
1
|
+
import { r as apiClient } from "./i18n_Bp0_xO2v.mjs";
|
|
2
|
+
import { d as For2, g as Show2, l as Button, m as Pagination, p as Modal, s as loadPluginComponent, v as createMemo$1, y as createSignal$1 } from "./DashboardLayout_Bz8ZBDme.mjs";
|
|
3
3
|
import { Dynamic, createComponent, escape, memo, ssr, ssrAttribute, ssrHydrationKey } from "solid-js/web";
|
|
4
4
|
import { For, Match, Show, Switch, createMemo, createSignal, onMount } from "solid-js";
|
|
5
5
|
//#region ../../packages/validation/dist/client-validate.js
|
|
@@ -169,6 +169,7 @@ function validateTrueFalse(value, field, errors) {
|
|
|
169
169
|
});
|
|
170
170
|
}
|
|
171
171
|
function validateMediaItem(item, config, field, errors) {
|
|
172
|
+
if (typeof item === "string" && item.trim() !== "") return;
|
|
172
173
|
if (typeof item !== "object" || item === null || Array.isArray(item)) {
|
|
173
174
|
errors.push({
|
|
174
175
|
field,
|
|
@@ -468,33 +469,33 @@ function validateFieldClient(field, value) {
|
|
|
468
469
|
}
|
|
469
470
|
//#endregion
|
|
470
471
|
//#region src/components/content/RelationshipPicker.tsx
|
|
471
|
-
var _tmpl$$
|
|
472
|
+
var _tmpl$$3 = [
|
|
472
473
|
"<ul",
|
|
473
474
|
" class=\"relationship-picker__selection\">",
|
|
474
475
|
"</ul>"
|
|
475
476
|
];
|
|
476
|
-
var _tmpl$2$
|
|
477
|
-
var _tmpl$3$
|
|
478
|
-
var _tmpl$4$
|
|
477
|
+
var _tmpl$2$3 = ["<li", " class=\"relationship-picker__empty\">Buscando...</li>"];
|
|
478
|
+
var _tmpl$3$3 = ["<li", " class=\"relationship-picker__empty\">Nenhum resultado</li>"];
|
|
479
|
+
var _tmpl$4$3 = [
|
|
479
480
|
"<ul",
|
|
480
481
|
" class=\"relationship-picker__results\"><!--$-->",
|
|
481
482
|
"<!--/--><!--$-->",
|
|
482
483
|
"<!--/--><!--$-->",
|
|
483
484
|
"<!--/--></ul>"
|
|
484
485
|
];
|
|
485
|
-
var _tmpl$5$
|
|
486
|
+
var _tmpl$5$3 = [
|
|
486
487
|
"<div",
|
|
487
488
|
" class=\"relationship-picker\"><!--$-->",
|
|
488
489
|
"<!--/--><input type=\"search\" class=\"input\"",
|
|
489
490
|
"><!--$-->",
|
|
490
491
|
"<!--/--></div>"
|
|
491
492
|
];
|
|
492
|
-
var _tmpl$6$
|
|
493
|
+
var _tmpl$6$3 = [
|
|
493
494
|
"<li",
|
|
494
495
|
"><!--$-->",
|
|
495
496
|
"<!--/--><button type=\"button\" aria-label=\"Remover\">×</button></li>"
|
|
496
497
|
];
|
|
497
|
-
var _tmpl$7$
|
|
498
|
+
var _tmpl$7$3 = [
|
|
498
499
|
"<li",
|
|
499
500
|
"><button type=\"button\"><!--$-->",
|
|
500
501
|
"<!--/--><span class=\"relationship-picker__type\">",
|
|
@@ -511,16 +512,16 @@ function RelationshipPicker(props) {
|
|
|
511
512
|
if (Array.isArray(value)) return value.map(String);
|
|
512
513
|
return value ? [String(value)] : [];
|
|
513
514
|
});
|
|
514
|
-
return ssr(_tmpl$5$
|
|
515
|
+
return ssr(_tmpl$5$3, ssrHydrationKey(), escape(createComponent(Show2, {
|
|
515
516
|
get when() {
|
|
516
517
|
return selected().length > 0 || selectedIds().length > 0;
|
|
517
518
|
},
|
|
518
519
|
get children() {
|
|
519
|
-
return ssr(_tmpl$$
|
|
520
|
+
return ssr(_tmpl$$3, ssrHydrationKey(), escape(createComponent(For2, {
|
|
520
521
|
get each() {
|
|
521
522
|
return selected();
|
|
522
523
|
},
|
|
523
|
-
children: (entry) => ssr(_tmpl$6$
|
|
524
|
+
children: (entry) => ssr(_tmpl$6$3, ssrHydrationKey(), escape(entry.title))
|
|
524
525
|
})));
|
|
525
526
|
}
|
|
526
527
|
})), ssrAttribute("placeholder", escape(props.placeholder ?? "Buscar conteúdo...", true), false) + ssrAttribute("value", escape(query(), true), false), escape(createComponent(Show2, {
|
|
@@ -528,24 +529,24 @@ function RelationshipPicker(props) {
|
|
|
528
529
|
return memo(() => !!open())() && (loading() || results().length > 0);
|
|
529
530
|
},
|
|
530
531
|
get children() {
|
|
531
|
-
return ssr(_tmpl$4$
|
|
532
|
+
return ssr(_tmpl$4$3, ssrHydrationKey(), escape(createComponent(Show2, {
|
|
532
533
|
get when() {
|
|
533
534
|
return loading();
|
|
534
535
|
},
|
|
535
536
|
get children() {
|
|
536
|
-
return ssr(_tmpl$2$
|
|
537
|
+
return ssr(_tmpl$2$3, ssrHydrationKey());
|
|
537
538
|
}
|
|
538
539
|
})), escape(createComponent(For2, {
|
|
539
540
|
get each() {
|
|
540
541
|
return results();
|
|
541
542
|
},
|
|
542
|
-
children: (option) => ssr(_tmpl$7$
|
|
543
|
+
children: (option) => ssr(_tmpl$7$3, ssrHydrationKey(), escape(option.title), escape(option.type))
|
|
543
544
|
})), escape(createComponent(Show2, {
|
|
544
545
|
get when() {
|
|
545
546
|
return memo(() => !!!loading())() && results().length === 0;
|
|
546
547
|
},
|
|
547
548
|
get children() {
|
|
548
|
-
return ssr(_tmpl$3$
|
|
549
|
+
return ssr(_tmpl$3$3, ssrHydrationKey());
|
|
549
550
|
}
|
|
550
551
|
})));
|
|
551
552
|
}
|
|
@@ -553,36 +554,36 @@ function RelationshipPicker(props) {
|
|
|
553
554
|
}
|
|
554
555
|
//#endregion
|
|
555
556
|
//#region src/content/PluginFieldRenderer.tsx
|
|
556
|
-
var _tmpl$$
|
|
557
|
-
var _tmpl$2$
|
|
557
|
+
var _tmpl$$2 = ["<div", " class=\"fb-plugin-field-renderer fb-plugin-field-renderer--loading\"><div class=\"fb-spinner\" aria-hidden=\"true\"></div><span>Carregando editor...</span></div>"];
|
|
558
|
+
var _tmpl$2$2 = [
|
|
558
559
|
"<div",
|
|
559
560
|
" class=\"fb-renderer-error\"><i data-lucide=\"alert-circle\" aria-hidden=\"true\"></i><span>",
|
|
560
561
|
"</span></div>"
|
|
561
562
|
];
|
|
562
|
-
var _tmpl$3$
|
|
563
|
+
var _tmpl$3$2 = [
|
|
563
564
|
"<div",
|
|
564
565
|
" class=\"fb-plugin-field-renderer fb-plugin-field-renderer--fallback\"><!--$-->",
|
|
565
566
|
"<!--/--><!--$-->",
|
|
566
567
|
"<!--/--></div>"
|
|
567
568
|
];
|
|
568
|
-
var _tmpl$4$
|
|
569
|
+
var _tmpl$4$2 = [
|
|
569
570
|
"<div",
|
|
570
571
|
" class=\"fb-plugin-field-renderer\">",
|
|
571
572
|
"</div>"
|
|
572
573
|
];
|
|
573
|
-
var _tmpl$5$
|
|
574
|
+
var _tmpl$5$2 = [
|
|
574
575
|
"<textarea",
|
|
575
576
|
" class=\"input fb-plugin-fallback-textarea\"",
|
|
576
577
|
"",
|
|
577
578
|
" spellcheck=\"false\"></textarea>"
|
|
578
579
|
];
|
|
579
|
-
var _tmpl$6$
|
|
580
|
+
var _tmpl$6$2 = [
|
|
580
581
|
"<input",
|
|
581
582
|
" type=\"number\" class=\"input\"",
|
|
582
583
|
"",
|
|
583
584
|
">"
|
|
584
585
|
];
|
|
585
|
-
var _tmpl$7$
|
|
586
|
+
var _tmpl$7$2 = [
|
|
586
587
|
"<input",
|
|
587
588
|
" type=\"text\" class=\"input\"",
|
|
588
589
|
"",
|
|
@@ -620,7 +621,7 @@ function PluginFieldRenderer(props) {
|
|
|
620
621
|
return loading();
|
|
621
622
|
},
|
|
622
623
|
get children() {
|
|
623
|
-
return ssr(_tmpl$$
|
|
624
|
+
return ssr(_tmpl$$2, ssrHydrationKey());
|
|
624
625
|
}
|
|
625
626
|
}),
|
|
626
627
|
createComponent(Match, {
|
|
@@ -628,12 +629,12 @@ function PluginFieldRenderer(props) {
|
|
|
628
629
|
return error() || !Component();
|
|
629
630
|
},
|
|
630
631
|
get children() {
|
|
631
|
-
return ssr(_tmpl$3$
|
|
632
|
+
return ssr(_tmpl$3$2, ssrHydrationKey(), escape(createComponent(Show, {
|
|
632
633
|
get when() {
|
|
633
634
|
return error();
|
|
634
635
|
},
|
|
635
636
|
get children() {
|
|
636
|
-
return ssr(_tmpl$2$
|
|
637
|
+
return ssr(_tmpl$2$2, ssrHydrationKey(), escape(error()));
|
|
637
638
|
}
|
|
638
639
|
})), escape(createComponent(FallbackRenderer, {
|
|
639
640
|
get field() {
|
|
@@ -655,7 +656,7 @@ function PluginFieldRenderer(props) {
|
|
|
655
656
|
createComponent(Match, {
|
|
656
657
|
when: true,
|
|
657
658
|
get children() {
|
|
658
|
-
return ssr(_tmpl$4$
|
|
659
|
+
return ssr(_tmpl$4$2, ssrHydrationKey(), escape(createComponent(Dynamic, {
|
|
659
660
|
get component() {
|
|
660
661
|
return Component();
|
|
661
662
|
},
|
|
@@ -683,9 +684,384 @@ function FallbackRenderer(props) {
|
|
|
683
684
|
const inputType = field.config?.["inputType"] || "textarea";
|
|
684
685
|
const placeholder = field.config?.["placeholder"] || "";
|
|
685
686
|
const rows = field.config?.["rows"] || 4;
|
|
686
|
-
if (inputType === "textarea" || inputType === "code" || inputType === "markdown") return ssr(_tmpl$5$
|
|
687
|
-
if (inputType === "number") return ssr(_tmpl$6$
|
|
688
|
-
return ssr(_tmpl$7$
|
|
687
|
+
if (inputType === "textarea" || inputType === "code" || inputType === "markdown") return ssr(_tmpl$5$2, ssrHydrationKey(), ssrAttribute("value", escape(value, true), false) + ssrAttribute("placeholder", escape(placeholder, true), false) + ssrAttribute("rows", escape(rows, true), false), ssrAttribute("disabled", disabled, true));
|
|
688
|
+
if (inputType === "number") return ssr(_tmpl$6$2, ssrHydrationKey(), ssrAttribute("value", escape(value, true), false) + ssrAttribute("placeholder", escape(placeholder, true), false), ssrAttribute("disabled", disabled, true));
|
|
689
|
+
return ssr(_tmpl$7$2, ssrHydrationKey(), ssrAttribute("value", escape(value, true), false) + ssrAttribute("placeholder", escape(placeholder, true), false), ssrAttribute("disabled", disabled, true));
|
|
690
|
+
}
|
|
691
|
+
//#endregion
|
|
692
|
+
//#region src/components/media/MediaPickerModal.tsx
|
|
693
|
+
var _tmpl$$1 = [
|
|
694
|
+
"<div",
|
|
695
|
+
" class=\"notice notice--error media-picker-modal__error\"><span>",
|
|
696
|
+
"</span><!--$-->",
|
|
697
|
+
"<!--/--></div>"
|
|
698
|
+
];
|
|
699
|
+
var _tmpl$2$1 = ["<p", " class=\"muted\">Loading media…</p>"];
|
|
700
|
+
var _tmpl$3$1 = ["<p", " class=\"muted\">No media found.</p>"];
|
|
701
|
+
var _tmpl$4$1 = [
|
|
702
|
+
"<div",
|
|
703
|
+
" class=\"media-picker-modal__order\" aria-label=\"Selected image order\"><strong>Gallery order</strong><!--$-->",
|
|
704
|
+
"<!--/--></div>"
|
|
705
|
+
];
|
|
706
|
+
var _tmpl$5$1 = [
|
|
707
|
+
"<div",
|
|
708
|
+
" class=\"media-picker-modal\"><div class=\"media-picker-modal__toolbar\"><input class=\"input media-picker-modal__search\" type=\"search\" name=\"media-search\" aria-label=\"Search media\" placeholder=\"Search by filename or alt text\"",
|
|
709
|
+
"><!--$-->",
|
|
710
|
+
"<!--/--><label class=\"",
|
|
711
|
+
"\"><!--$-->",
|
|
712
|
+
"<!--/--><input type=\"file\"",
|
|
713
|
+
"",
|
|
714
|
+
" hidden></label></div><!--$-->",
|
|
715
|
+
"<!--/--><!--$-->",
|
|
716
|
+
"<!--/--><!--$-->",
|
|
717
|
+
"<!--/--><div class=\"media-picker-modal__body\"><div><div class=\"media-picker-modal__grid\">",
|
|
718
|
+
"</div><!--$-->",
|
|
719
|
+
"<!--/--></div><!--$-->",
|
|
720
|
+
"<!--/--></div><!--$-->",
|
|
721
|
+
"<!--/--><div class=\"media-picker-modal__actions\"><span class=\"muted\">",
|
|
722
|
+
"</span><div><!--$-->",
|
|
723
|
+
"<!--/--><!--$-->",
|
|
724
|
+
"<!--/--></div></div></div>"
|
|
725
|
+
];
|
|
726
|
+
var _tmpl$6$1 = ["<img", " loading=\"lazy\">"];
|
|
727
|
+
var _tmpl$7$1 = [
|
|
728
|
+
"<button",
|
|
729
|
+
" type=\"button\" class=\"",
|
|
730
|
+
"\"><div class=\"media-card__preview\">",
|
|
731
|
+
"</div><span class=\"media-card__name\"",
|
|
732
|
+
">",
|
|
733
|
+
"</span></button>"
|
|
734
|
+
];
|
|
735
|
+
var _tmpl$8$1 = [
|
|
736
|
+
"<span",
|
|
737
|
+
" class=\"media-card__ext\">",
|
|
738
|
+
"</span>"
|
|
739
|
+
];
|
|
740
|
+
var _tmpl$9$1 = [
|
|
741
|
+
"<div",
|
|
742
|
+
" class=\"media-picker-modal__order-item\"><span><!--$-->",
|
|
743
|
+
"<!--/-->. <!--$-->",
|
|
744
|
+
"<!--/--></span><!--$-->",
|
|
745
|
+
"<!--/--><!--$-->",
|
|
746
|
+
"<!--/--></div>"
|
|
747
|
+
];
|
|
748
|
+
var _tmpl$0$1 = ["<p", " class=\"muted media-picker-modal__empty-details\">Click an item to inspect its details.</p>"];
|
|
749
|
+
var _tmpl$1$1 = ["<img", ">"];
|
|
750
|
+
var _tmpl$10$1 = ["<dt", ">Dimensions</dt>"];
|
|
751
|
+
var _tmpl$11$1 = [
|
|
752
|
+
"<dd",
|
|
753
|
+
">",
|
|
754
|
+
"</dd>"
|
|
755
|
+
];
|
|
756
|
+
var _tmpl$12$1 = ["<dt", ">Metadata</dt>"];
|
|
757
|
+
var _tmpl$13$1 = [
|
|
758
|
+
"<dd",
|
|
759
|
+
"><code>",
|
|
760
|
+
"</code></dd>"
|
|
761
|
+
];
|
|
762
|
+
var _tmpl$14$1 = [
|
|
763
|
+
"<aside",
|
|
764
|
+
" class=\"media-picker-modal__details\"><div class=\"media-modal__preview\">",
|
|
765
|
+
"</div><h4>",
|
|
766
|
+
"</h4><dl class=\"media-details__list\"><dt>Filename</dt><dd>",
|
|
767
|
+
"</dd><dt>Extension</dt><dd>",
|
|
768
|
+
"</dd><dt>MIME type</dt><dd>",
|
|
769
|
+
"</dd><dt>Size</dt><dd>",
|
|
770
|
+
"</dd><!--$-->",
|
|
771
|
+
"<!--/--><dt>URL</dt><dd><code>",
|
|
772
|
+
"</code></dd><dt>Uploaded</dt><dd>",
|
|
773
|
+
"</dd><dt>Title</dt><dd><input class=\"input\"",
|
|
774
|
+
"></dd><dt>Alt text</dt><dd><input class=\"input\"",
|
|
775
|
+
"></dd><dt>Caption</dt><dd><textarea class=\"input\" rows=\"2\"",
|
|
776
|
+
"></textarea></dd><dt>Description</dt><dd><textarea class=\"input\" rows=\"3\"",
|
|
777
|
+
"></textarea></dd><!--$-->",
|
|
778
|
+
"<!--/--></dl><!--$-->",
|
|
779
|
+
"<!--/--></aside>"
|
|
780
|
+
];
|
|
781
|
+
var _tmpl$15$1 = [
|
|
782
|
+
"<span",
|
|
783
|
+
" class=\"media-card__ext media-modal__file-icon\">",
|
|
784
|
+
"</span>"
|
|
785
|
+
];
|
|
786
|
+
var PAGE_SIZE = 18;
|
|
787
|
+
function displayTitle(media) {
|
|
788
|
+
return media.title?.trim() || media.filename;
|
|
789
|
+
}
|
|
790
|
+
function extension(media) {
|
|
791
|
+
return media.filename.split(".").pop()?.toUpperCase() || "FILE";
|
|
792
|
+
}
|
|
793
|
+
function formatSize(bytes) {
|
|
794
|
+
if (!Number.isFinite(bytes)) return "—";
|
|
795
|
+
if (bytes < 1024) return `${bytes} B`;
|
|
796
|
+
if (bytes < 1048576) return `${(bytes / 1024).toFixed(1)} KB`;
|
|
797
|
+
return `${(bytes / 1048576).toFixed(1)} MB`;
|
|
798
|
+
}
|
|
799
|
+
function isImage(media) {
|
|
800
|
+
return media.mime_type.startsWith("image/");
|
|
801
|
+
}
|
|
802
|
+
function dimensions(media) {
|
|
803
|
+
const width = Number(media.metadata?.["width"]);
|
|
804
|
+
const height = Number(media.metadata?.["height"]);
|
|
805
|
+
return width > 0 && height > 0 ? `${width} × ${height} px` : null;
|
|
806
|
+
}
|
|
807
|
+
function selectedIds(value) {
|
|
808
|
+
return (Array.isArray(value) ? value : value ? [value] : []).map((media) => media.id);
|
|
809
|
+
}
|
|
810
|
+
function MediaPickerModal(props) {
|
|
811
|
+
const [items, setItems] = createSignal([]);
|
|
812
|
+
const [total, setTotal] = createSignal(0);
|
|
813
|
+
const [page, setPage] = createSignal(1);
|
|
814
|
+
const [search, setSearch] = createSignal("");
|
|
815
|
+
const [selected, setSelected] = createSignal(null);
|
|
816
|
+
const [selectedItems, setSelectedItems] = createSignal([]);
|
|
817
|
+
const [loading, setLoading] = createSignal(false);
|
|
818
|
+
const [error, setError] = createSignal("");
|
|
819
|
+
const [uploading, setUploading] = createSignal(false);
|
|
820
|
+
const [metadataSaving, setMetadataSaving] = createSignal(false);
|
|
821
|
+
const [metadataDirty, setMetadataDirty] = createSignal(false);
|
|
822
|
+
const [titleValue, setTitleValue] = createSignal("");
|
|
823
|
+
const [altValue, setAltValue] = createSignal("");
|
|
824
|
+
const [captionValue, setCaptionValue] = createSignal("");
|
|
825
|
+
const [descriptionValue, setDescriptionValue] = createSignal("");
|
|
826
|
+
const title = () => props.mode === "gallery" ? "Select images" : props.mode === "image" ? "Select an image" : "Select a file";
|
|
827
|
+
const mimeType = () => props.mode === "file" ? void 0 : "image/*";
|
|
828
|
+
const mediaUrl = (media) => apiClient.mediaUrl(media.url);
|
|
829
|
+
const load = async () => {
|
|
830
|
+
setLoading(true);
|
|
831
|
+
setError("");
|
|
832
|
+
try {
|
|
833
|
+
const result = await apiClient.listMedia({
|
|
834
|
+
page: page(),
|
|
835
|
+
limit: PAGE_SIZE,
|
|
836
|
+
search: search() || void 0,
|
|
837
|
+
mimeType: mimeType()
|
|
838
|
+
});
|
|
839
|
+
setItems(result.data ?? []);
|
|
840
|
+
setTotal(result.total ?? 0);
|
|
841
|
+
} catch (err) {
|
|
842
|
+
setError(err instanceof Error ? err.message : String(err));
|
|
843
|
+
} finally {
|
|
844
|
+
setLoading(false);
|
|
845
|
+
}
|
|
846
|
+
};
|
|
847
|
+
onMount(() => {
|
|
848
|
+
const current = Array.isArray(props.value) ? props.value : props.value ? [props.value] : [];
|
|
849
|
+
setSelectedItems(current);
|
|
850
|
+
setSelected(current[0] ?? null);
|
|
851
|
+
setTitleValue(current[0]?.title ?? "");
|
|
852
|
+
setAltValue(current[0]?.alt ?? "");
|
|
853
|
+
setCaptionValue(current[0]?.caption ?? "");
|
|
854
|
+
setDescriptionValue(current[0]?.description ?? "");
|
|
855
|
+
load();
|
|
856
|
+
});
|
|
857
|
+
const confirm = () => {
|
|
858
|
+
if (metadataDirty()) {
|
|
859
|
+
setError("Save media details before selecting this attachment.");
|
|
860
|
+
return;
|
|
861
|
+
}
|
|
862
|
+
if (props.mode === "gallery") {
|
|
863
|
+
if (selectedItems().length > 0) props.onSelect(selectedItems());
|
|
864
|
+
return;
|
|
865
|
+
}
|
|
866
|
+
const media = selected();
|
|
867
|
+
if (media) props.onSelect(media);
|
|
868
|
+
};
|
|
869
|
+
const saveMetadata = async () => {
|
|
870
|
+
const media = selected();
|
|
871
|
+
if (!media) return;
|
|
872
|
+
setMetadataSaving(true);
|
|
873
|
+
setError("");
|
|
874
|
+
try {
|
|
875
|
+
const updated = await apiClient.updateMedia(media.id, {
|
|
876
|
+
title: titleValue(),
|
|
877
|
+
alt: altValue(),
|
|
878
|
+
caption: captionValue(),
|
|
879
|
+
description: descriptionValue()
|
|
880
|
+
});
|
|
881
|
+
setSelected(updated);
|
|
882
|
+
setSelectedItems((current) => current.map((item) => item.id === updated.id ? updated : item));
|
|
883
|
+
setMetadataDirty(false);
|
|
884
|
+
} catch (err) {
|
|
885
|
+
setError(err instanceof Error ? err.message : String(err));
|
|
886
|
+
} finally {
|
|
887
|
+
setMetadataSaving(false);
|
|
888
|
+
}
|
|
889
|
+
};
|
|
890
|
+
const moveSelected = (index, offset) => {
|
|
891
|
+
const nextIndex = index + offset;
|
|
892
|
+
const current = [...selectedItems()];
|
|
893
|
+
if (nextIndex < 0 || nextIndex >= current.length) return;
|
|
894
|
+
const currentItem = current[index];
|
|
895
|
+
const nextItem = current[nextIndex];
|
|
896
|
+
if (!currentItem || !nextItem) return;
|
|
897
|
+
current[index] = nextItem;
|
|
898
|
+
current[nextIndex] = currentItem;
|
|
899
|
+
setSelectedItems(current);
|
|
900
|
+
};
|
|
901
|
+
const searchNow = async () => {
|
|
902
|
+
setPage(1);
|
|
903
|
+
await load();
|
|
904
|
+
};
|
|
905
|
+
return createComponent(Modal, {
|
|
906
|
+
get open() {
|
|
907
|
+
return props.open;
|
|
908
|
+
},
|
|
909
|
+
get title() {
|
|
910
|
+
return title();
|
|
911
|
+
},
|
|
912
|
+
get onClose() {
|
|
913
|
+
return props.onClose;
|
|
914
|
+
},
|
|
915
|
+
get children() {
|
|
916
|
+
return ssr(_tmpl$5$1, ssrHydrationKey(), ssrAttribute("value", escape(search(), true), false), escape(createComponent(Button, {
|
|
917
|
+
variant: "secondary",
|
|
918
|
+
onClick: () => void searchNow(),
|
|
919
|
+
children: "Search"
|
|
920
|
+
})), `btn btn-secondary ${uploading() ? "btn-loading" : ""}`, uploading() ? "Uploading…" : "Upload", ssrAttribute("accept", props.mode === "file" ? escape(void 0, true) : "image/*", false), ssrAttribute("disabled", uploading(), true), escape(createComponent(Show, {
|
|
921
|
+
get when() {
|
|
922
|
+
return error();
|
|
923
|
+
},
|
|
924
|
+
get children() {
|
|
925
|
+
return ssr(_tmpl$$1, ssrHydrationKey(), escape(error()), escape(createComponent(Button, {
|
|
926
|
+
variant: "secondary",
|
|
927
|
+
size: "sm",
|
|
928
|
+
onClick: () => void load(),
|
|
929
|
+
children: "Retry"
|
|
930
|
+
})));
|
|
931
|
+
}
|
|
932
|
+
})), escape(createComponent(Show, {
|
|
933
|
+
get when() {
|
|
934
|
+
return loading();
|
|
935
|
+
},
|
|
936
|
+
get children() {
|
|
937
|
+
return ssr(_tmpl$2$1, ssrHydrationKey());
|
|
938
|
+
}
|
|
939
|
+
})), escape(createComponent(Show, {
|
|
940
|
+
get when() {
|
|
941
|
+
return memo(() => !!!loading())() && items().length === 0;
|
|
942
|
+
},
|
|
943
|
+
get children() {
|
|
944
|
+
return ssr(_tmpl$3$1, ssrHydrationKey());
|
|
945
|
+
}
|
|
946
|
+
})), escape(createComponent(For, {
|
|
947
|
+
get each() {
|
|
948
|
+
return items();
|
|
949
|
+
},
|
|
950
|
+
children: (media) => ssr(_tmpl$7$1, ssrHydrationKey(), `media-card ${selectedIds(selectedItems()).includes(media.id) ? "media-card--selected" : ""}`, escape(createComponent(Show, {
|
|
951
|
+
get when() {
|
|
952
|
+
return isImage(media);
|
|
953
|
+
},
|
|
954
|
+
get fallback() {
|
|
955
|
+
return ssr(_tmpl$8$1, ssrHydrationKey(), escape(extension(media)));
|
|
956
|
+
},
|
|
957
|
+
get children() {
|
|
958
|
+
return ssr(_tmpl$6$1, ssrHydrationKey() + ssrAttribute("src", escape(mediaUrl(media), true), false) + ssrAttribute("alt", escape(media.alt ?? displayTitle(media), true), false));
|
|
959
|
+
}
|
|
960
|
+
})), ssrAttribute("title", escape(displayTitle(media), true), false), escape(displayTitle(media)))
|
|
961
|
+
})), escape(createComponent(Show, {
|
|
962
|
+
get when() {
|
|
963
|
+
return memo(() => props.mode === "gallery")() && selectedItems().length > 0;
|
|
964
|
+
},
|
|
965
|
+
get children() {
|
|
966
|
+
return ssr(_tmpl$4$1, ssrHydrationKey(), escape(createComponent(For, {
|
|
967
|
+
get each() {
|
|
968
|
+
return selectedItems();
|
|
969
|
+
},
|
|
970
|
+
children: (media, index) => ssr(_tmpl$9$1, ssrHydrationKey(), escape(index()) + 1, escape(displayTitle(media)), escape(createComponent(Button, {
|
|
971
|
+
variant: "ghost",
|
|
972
|
+
size: "sm",
|
|
973
|
+
get disabled() {
|
|
974
|
+
return index() === 0;
|
|
975
|
+
},
|
|
976
|
+
onClick: () => moveSelected(index(), -1),
|
|
977
|
+
children: "↑"
|
|
978
|
+
})), escape(createComponent(Button, {
|
|
979
|
+
variant: "ghost",
|
|
980
|
+
size: "sm",
|
|
981
|
+
get disabled() {
|
|
982
|
+
return index() === selectedItems().length - 1;
|
|
983
|
+
},
|
|
984
|
+
onClick: () => moveSelected(index(), 1),
|
|
985
|
+
children: "↓"
|
|
986
|
+
})))
|
|
987
|
+
})));
|
|
988
|
+
}
|
|
989
|
+
})), escape(createComponent(Show, {
|
|
990
|
+
get when() {
|
|
991
|
+
return selected();
|
|
992
|
+
},
|
|
993
|
+
get fallback() {
|
|
994
|
+
return ssr(_tmpl$0$1, ssrHydrationKey());
|
|
995
|
+
},
|
|
996
|
+
children: (media) => ssr(_tmpl$14$1, ssrHydrationKey(), escape(createComponent(Show, {
|
|
997
|
+
get when() {
|
|
998
|
+
return isImage(media());
|
|
999
|
+
},
|
|
1000
|
+
get fallback() {
|
|
1001
|
+
return ssr(_tmpl$15$1, ssrHydrationKey(), escape(extension(media())));
|
|
1002
|
+
},
|
|
1003
|
+
get children() {
|
|
1004
|
+
return ssr(_tmpl$1$1, ssrHydrationKey() + ssrAttribute("src", escape(mediaUrl(media()), true), false) + ssrAttribute("alt", escape(media().alt ?? displayTitle(media()), true), false));
|
|
1005
|
+
}
|
|
1006
|
+
})), escape(displayTitle(media())), escape(media().filename), escape(extension(media())), escape(media().mime_type), escape(formatSize(media().size)), escape(createComponent(Show, {
|
|
1007
|
+
get when() {
|
|
1008
|
+
return dimensions(media());
|
|
1009
|
+
},
|
|
1010
|
+
get children() {
|
|
1011
|
+
return [ssr(_tmpl$10$1, ssrHydrationKey()), ssr(_tmpl$11$1, ssrHydrationKey(), escape(dimensions(media())))];
|
|
1012
|
+
}
|
|
1013
|
+
})), escape(mediaUrl(media())), media().created_at ? escape(new Date(media().created_at).toLocaleString()) : "—", ssrAttribute("value", escape(titleValue(), true), false), ssrAttribute("value", escape(altValue(), true), false), ssrAttribute("value", escape(captionValue(), true), false), ssrAttribute("value", escape(descriptionValue(), true), false), escape(createComponent(Show, {
|
|
1014
|
+
get when() {
|
|
1015
|
+
return memo(() => !!media().metadata)() && Object.keys(media().metadata ?? {}).length > 0;
|
|
1016
|
+
},
|
|
1017
|
+
get children() {
|
|
1018
|
+
return [ssr(_tmpl$12$1, ssrHydrationKey()), ssr(_tmpl$13$1, ssrHydrationKey(), escape(JSON.stringify(media().metadata)))];
|
|
1019
|
+
}
|
|
1020
|
+
})), escape(createComponent(Show, {
|
|
1021
|
+
get when() {
|
|
1022
|
+
return metadataDirty();
|
|
1023
|
+
},
|
|
1024
|
+
get children() {
|
|
1025
|
+
return createComponent(Button, {
|
|
1026
|
+
variant: "secondary",
|
|
1027
|
+
get disabled() {
|
|
1028
|
+
return metadataSaving();
|
|
1029
|
+
},
|
|
1030
|
+
onClick: () => void saveMetadata(),
|
|
1031
|
+
get children() {
|
|
1032
|
+
return metadataSaving() ? "Saving…" : "Save media details";
|
|
1033
|
+
}
|
|
1034
|
+
});
|
|
1035
|
+
}
|
|
1036
|
+
})))
|
|
1037
|
+
})), escape(createComponent(Pagination, {
|
|
1038
|
+
get page() {
|
|
1039
|
+
return page();
|
|
1040
|
+
},
|
|
1041
|
+
limit: PAGE_SIZE,
|
|
1042
|
+
get total() {
|
|
1043
|
+
return total();
|
|
1044
|
+
},
|
|
1045
|
+
onPageChange: (next) => {
|
|
1046
|
+
setPage(next);
|
|
1047
|
+
load();
|
|
1048
|
+
}
|
|
1049
|
+
})), metadataDirty() ? "Unsaved media details" : props.mode === "gallery" ? `${escape(selectedItems().length)} image(s) selected` : selected() ? "1 item selected" : "No item selected", escape(createComponent(Button, {
|
|
1050
|
+
variant: "secondary",
|
|
1051
|
+
get onClick() {
|
|
1052
|
+
return props.onClose;
|
|
1053
|
+
},
|
|
1054
|
+
children: "Cancel"
|
|
1055
|
+
})), escape(createComponent(Button, {
|
|
1056
|
+
variant: "primary",
|
|
1057
|
+
get disabled() {
|
|
1058
|
+
return memo(() => props.mode === "gallery")() ? selectedItems().length === 0 : !selected();
|
|
1059
|
+
},
|
|
1060
|
+
onClick: confirm,
|
|
1061
|
+
children: "Select"
|
|
1062
|
+
})));
|
|
1063
|
+
}
|
|
1064
|
+
});
|
|
689
1065
|
}
|
|
690
1066
|
//#endregion
|
|
691
1067
|
//#region src/components/content/FieldRenderer.tsx
|
|
@@ -829,17 +1205,22 @@ var _tmpl$21 = [
|
|
|
829
1205
|
"><option value=\"_self\">Mesma janela</option><option value=\"_blank\">Nova janela</option></select></div>"
|
|
830
1206
|
];
|
|
831
1207
|
var _tmpl$22 = [
|
|
1208
|
+
"<input",
|
|
1209
|
+
" type=\"text\" class=\"input\"",
|
|
1210
|
+
" readonly aria-readonly=\"true\">"
|
|
1211
|
+
];
|
|
1212
|
+
var _tmpl$23 = [
|
|
832
1213
|
"<div",
|
|
833
1214
|
" class=\"field-renderer__rows\"><!--$-->",
|
|
834
1215
|
"<!--/--><button type=\"button\" class=\"btn\">+ Adicionar linha</button></div>"
|
|
835
1216
|
];
|
|
836
|
-
var _tmpl$
|
|
1217
|
+
var _tmpl$24 = [
|
|
837
1218
|
"<div",
|
|
838
1219
|
" class=\"field-renderer__rows\"><!--$-->",
|
|
839
1220
|
"<!--/--><select class=\"input\" value><option value>+ Adicionar layout...</option><!--$-->",
|
|
840
1221
|
"<!--/--></select></div>"
|
|
841
1222
|
];
|
|
842
|
-
var _tmpl$
|
|
1223
|
+
var _tmpl$25 = [
|
|
843
1224
|
"<div",
|
|
844
1225
|
" class=\"field-renderer__row\"><div class=\"field-renderer__row-header\"><span><!--$-->",
|
|
845
1226
|
"<!--/--> <!--$-->",
|
|
@@ -848,29 +1229,53 @@ var _tmpl$24 = [
|
|
|
848
1229
|
">↓</button><button type=\"button\" class=\"btn btn-danger\">Remover</button></div><!--$-->",
|
|
849
1230
|
"<!--/--></div>"
|
|
850
1231
|
];
|
|
851
|
-
var _tmpl$
|
|
1232
|
+
var _tmpl$26 = [
|
|
852
1233
|
"<p",
|
|
853
1234
|
" class=\"field-renderer__instructions\">Layout \"<!--$-->",
|
|
854
1235
|
"<!--/-->\" não encontrado.</p>"
|
|
855
1236
|
];
|
|
856
|
-
var _tmpl$
|
|
1237
|
+
var _tmpl$27 = [
|
|
857
1238
|
"<fieldset",
|
|
858
1239
|
" class=\"field-renderer__group\">",
|
|
859
1240
|
"</fieldset>"
|
|
860
1241
|
];
|
|
861
|
-
var _tmpl$
|
|
862
|
-
var _tmpl$
|
|
1242
|
+
var _tmpl$28 = ["<input", " type=\"text\" class=\"input\">"];
|
|
1243
|
+
var _tmpl$29 = [
|
|
863
1244
|
"<div",
|
|
864
1245
|
" class=\"field-renderer__row\"><div class=\"field-renderer__row-header\"><span>Linha <!--$-->",
|
|
865
1246
|
"<!--/--></span><button type=\"button\" class=\"btn btn-danger\">Remover</button></div><!--$-->",
|
|
866
1247
|
"<!--/--></div>"
|
|
867
1248
|
];
|
|
868
|
-
var _tmpl$
|
|
869
|
-
|
|
870
|
-
"
|
|
871
|
-
">"
|
|
1249
|
+
var _tmpl$30 = ["<p", " class=\"notice notice--warning\" role=\"alert\">The selected media is no longer available. Choose a replacement.</p>"];
|
|
1250
|
+
var _tmpl$31 = [
|
|
1251
|
+
"<div",
|
|
1252
|
+
" class=\"media-field-input__preview\">",
|
|
1253
|
+
"</div>"
|
|
1254
|
+
];
|
|
1255
|
+
var _tmpl$32 = ["<button", " type=\"button\" class=\"btn btn-ghost\">Remove</button>"];
|
|
1256
|
+
var _tmpl$33 = [
|
|
1257
|
+
"<div",
|
|
1258
|
+
" class=\"media-field-input\"><!--$-->",
|
|
1259
|
+
"<!--/--><!--$-->",
|
|
1260
|
+
"<!--/--><div class=\"media-field-input__actions\"><button type=\"button\" class=\"btn btn-secondary\">",
|
|
1261
|
+
"</button><!--$-->",
|
|
1262
|
+
"<!--/--></div><!--$-->",
|
|
1263
|
+
"<!--/--></div>"
|
|
1264
|
+
];
|
|
1265
|
+
var _tmpl$34 = ["<img", ">"];
|
|
1266
|
+
var _tmpl$35 = [
|
|
1267
|
+
"<div",
|
|
1268
|
+
" class=\"media-field-input__item\"><!--$-->",
|
|
1269
|
+
"<!--/--><span",
|
|
1270
|
+
">",
|
|
1271
|
+
"</span></div>"
|
|
872
1272
|
];
|
|
873
|
-
var _tmpl$
|
|
1273
|
+
var _tmpl$36 = [
|
|
1274
|
+
"<span",
|
|
1275
|
+
">",
|
|
1276
|
+
"</span>"
|
|
1277
|
+
];
|
|
1278
|
+
var _tmpl$37 = [
|
|
874
1279
|
"<option",
|
|
875
1280
|
"",
|
|
876
1281
|
">",
|
|
@@ -1016,21 +1421,25 @@ function FieldControl(props) {
|
|
|
1016
1421
|
case "time_picker": return ssr(_tmpl$18, ssrHydrationKey(), ssrAttribute("value", escape(props.value ?? config()["defaultValue"] ?? "", true), false));
|
|
1017
1422
|
case "color_picker": return ssr(_tmpl$19, ssrHydrationKey(), ssrAttribute("value", escape(props.value ?? config()["defaultValue"] ?? "", true), false));
|
|
1018
1423
|
case "image":
|
|
1019
|
-
case "file": return createComponent(
|
|
1020
|
-
|
|
1424
|
+
case "file": return createComponent(MediaFieldInput, {
|
|
1425
|
+
get mode() {
|
|
1426
|
+
return props.field.type;
|
|
1427
|
+
},
|
|
1428
|
+
get value() {
|
|
1429
|
+
return props.value;
|
|
1430
|
+
},
|
|
1021
1431
|
get onChange() {
|
|
1022
1432
|
return props.onChange;
|
|
1023
|
-
},
|
|
1024
|
-
get accept() {
|
|
1025
|
-
return props.field.type === "image" ? "image/*" : void 0;
|
|
1026
1433
|
}
|
|
1027
1434
|
});
|
|
1028
|
-
case "gallery": return createComponent(
|
|
1029
|
-
|
|
1435
|
+
case "gallery": return createComponent(MediaFieldInput, {
|
|
1436
|
+
mode: "gallery",
|
|
1437
|
+
get value() {
|
|
1438
|
+
return props.value;
|
|
1439
|
+
},
|
|
1030
1440
|
get onChange() {
|
|
1031
1441
|
return props.onChange;
|
|
1032
|
-
}
|
|
1033
|
-
accept: "image/*"
|
|
1442
|
+
}
|
|
1034
1443
|
});
|
|
1035
1444
|
case "google_map": return ssr(_tmpl$20, ssrHydrationKey(), ssrAttribute("value", escape(props.value?.["address"] ?? "", true), false), ssrAttribute("value", escape(props.value?.["lat"] ?? "", true), false), ssrAttribute("value", escape(props.value?.["lng"] ?? "", true), false));
|
|
1036
1445
|
case "link": return ssr(_tmpl$21, ssrHydrationKey(), ssrAttribute("value", escape(props.value?.["url"] ?? "", true), false), ssrAttribute("value", escape(props.value?.["target"] ?? "_self", true), false));
|
|
@@ -1049,8 +1458,7 @@ function FieldControl(props) {
|
|
|
1049
1458
|
return props.onChange;
|
|
1050
1459
|
}
|
|
1051
1460
|
});
|
|
1052
|
-
case "taxonomy":
|
|
1053
|
-
case "user": return createComponent(RelationshipSelector, {
|
|
1461
|
+
case "taxonomy": return createComponent(RelationshipSelector, {
|
|
1054
1462
|
get field() {
|
|
1055
1463
|
return props.field;
|
|
1056
1464
|
},
|
|
@@ -1064,9 +1472,25 @@ function FieldControl(props) {
|
|
|
1064
1472
|
return config()["multiple"] !== false;
|
|
1065
1473
|
}
|
|
1066
1474
|
});
|
|
1475
|
+
case "user":
|
|
1476
|
+
if (props.field.isCoreField && props.field.coreFieldKey === "author") return ssr(_tmpl$22, ssrHydrationKey(), ssrAttribute("value", escape(props.value ?? "", true), false));
|
|
1477
|
+
return createComponent(RelationshipSelector, {
|
|
1478
|
+
get field() {
|
|
1479
|
+
return props.field;
|
|
1480
|
+
},
|
|
1481
|
+
get value() {
|
|
1482
|
+
return props.value;
|
|
1483
|
+
},
|
|
1484
|
+
get onChange() {
|
|
1485
|
+
return props.onChange;
|
|
1486
|
+
},
|
|
1487
|
+
get multiple() {
|
|
1488
|
+
return config()["multiple"] !== false;
|
|
1489
|
+
}
|
|
1490
|
+
});
|
|
1067
1491
|
case "repeater": {
|
|
1068
1492
|
const rows = () => Array.isArray(props.value) ? props.value : [];
|
|
1069
|
-
return ssr(_tmpl$
|
|
1493
|
+
return ssr(_tmpl$23, ssrHydrationKey(), escape(createComponent(For, {
|
|
1070
1494
|
get each() {
|
|
1071
1495
|
return rows();
|
|
1072
1496
|
},
|
|
@@ -1103,7 +1527,7 @@ function FieldControl(props) {
|
|
|
1103
1527
|
data: row
|
|
1104
1528
|
}));
|
|
1105
1529
|
};
|
|
1106
|
-
return ssr(_tmpl$
|
|
1530
|
+
return ssr(_tmpl$24, ssrHydrationKey(), escape(createComponent(For, {
|
|
1107
1531
|
get each() {
|
|
1108
1532
|
return rows();
|
|
1109
1533
|
},
|
|
@@ -1113,12 +1537,12 @@ function FieldControl(props) {
|
|
|
1113
1537
|
const { fc_layout: _layout, ...data } = row.data;
|
|
1114
1538
|
return data;
|
|
1115
1539
|
};
|
|
1116
|
-
return ssr(_tmpl$
|
|
1540
|
+
return ssr(_tmpl$25, ssrHydrationKey(), escape(layout()?.label || row.fc_layout || "Linha"), escape(index()) + 1, ssrAttribute("disabled", index() === 0, true), ssrAttribute("disabled", index() === rows().length - 1, true), escape(createComponent(Show, {
|
|
1117
1541
|
get when() {
|
|
1118
1542
|
return layout();
|
|
1119
1543
|
},
|
|
1120
1544
|
get fallback() {
|
|
1121
|
-
return ssr(_tmpl$
|
|
1545
|
+
return ssr(_tmpl$26, ssrHydrationKey(), escape(row.fc_layout));
|
|
1122
1546
|
},
|
|
1123
1547
|
get children() {
|
|
1124
1548
|
return createComponent(For, {
|
|
@@ -1153,7 +1577,7 @@ function FieldControl(props) {
|
|
|
1153
1577
|
children: (layout) => ssr(_tmpl$12, ssrHydrationKey() + ssrAttribute("value", escape(layout.name, true), false), escape(layout.label ?? layout.name))
|
|
1154
1578
|
})));
|
|
1155
1579
|
}
|
|
1156
|
-
case "group": return ssr(_tmpl$
|
|
1580
|
+
case "group": return ssr(_tmpl$27, ssrHydrationKey(), escape(createComponent(For, {
|
|
1157
1581
|
get each() {
|
|
1158
1582
|
return props.field.subFields ?? [];
|
|
1159
1583
|
},
|
|
@@ -1192,11 +1616,11 @@ function FieldControl(props) {
|
|
|
1192
1616
|
return props.t;
|
|
1193
1617
|
}
|
|
1194
1618
|
});
|
|
1195
|
-
return ssr(_tmpl$
|
|
1619
|
+
return ssr(_tmpl$28, ssrHydrationKey());
|
|
1196
1620
|
}
|
|
1197
1621
|
}
|
|
1198
1622
|
function RepeaterRow(props) {
|
|
1199
|
-
return ssr(_tmpl$
|
|
1623
|
+
return ssr(_tmpl$29, ssrHydrationKey(), escape(props.index) + 1, escape(createComponent(For, {
|
|
1200
1624
|
get each() {
|
|
1201
1625
|
return props.field.subFields ?? [];
|
|
1202
1626
|
},
|
|
@@ -1215,8 +1639,92 @@ function RepeaterRow(props) {
|
|
|
1215
1639
|
})
|
|
1216
1640
|
})));
|
|
1217
1641
|
}
|
|
1218
|
-
function
|
|
1219
|
-
|
|
1642
|
+
function MediaFieldInput(props) {
|
|
1643
|
+
const [open, setOpen] = createSignal(false);
|
|
1644
|
+
const [resolved, setResolved] = createSignal(null);
|
|
1645
|
+
const [stale, setStale] = createSignal(false);
|
|
1646
|
+
onMount(() => {
|
|
1647
|
+
const value = props.value;
|
|
1648
|
+
const ids = (Array.isArray(value) ? value : value ? [value] : []).filter((item) => typeof item === "string");
|
|
1649
|
+
if (ids.length === 0) {
|
|
1650
|
+
setStale(false);
|
|
1651
|
+
setResolved(Array.isArray(value) ? value : value ? [value] : []);
|
|
1652
|
+
return;
|
|
1653
|
+
}
|
|
1654
|
+
Promise.all(ids.map((id) => apiClient.getMedia(id).catch(() => null))).then((items) => {
|
|
1655
|
+
const media = items.filter((item) => item !== null);
|
|
1656
|
+
setStale(media.length !== ids.length);
|
|
1657
|
+
setResolved(props.mode === "gallery" ? media : media[0] ?? null);
|
|
1658
|
+
});
|
|
1659
|
+
});
|
|
1660
|
+
const currentItems = () => {
|
|
1661
|
+
const value = resolved() ?? props.value;
|
|
1662
|
+
return (Array.isArray(value) ? value : value ? [value] : []).filter((item) => typeof item === "object" && item !== null && typeof item.id === "string");
|
|
1663
|
+
};
|
|
1664
|
+
const pickerValue = () => {
|
|
1665
|
+
const items = currentItems();
|
|
1666
|
+
return props.mode === "gallery" ? items : items[0] ?? null;
|
|
1667
|
+
};
|
|
1668
|
+
return ssr(_tmpl$33, ssrHydrationKey(), escape(createComponent(Show, {
|
|
1669
|
+
get when() {
|
|
1670
|
+
return stale();
|
|
1671
|
+
},
|
|
1672
|
+
get children() {
|
|
1673
|
+
return ssr(_tmpl$30, ssrHydrationKey());
|
|
1674
|
+
}
|
|
1675
|
+
})), escape(createComponent(Show, {
|
|
1676
|
+
get when() {
|
|
1677
|
+
return currentItems().length > 0;
|
|
1678
|
+
},
|
|
1679
|
+
get children() {
|
|
1680
|
+
return ssr(_tmpl$31, ssrHydrationKey(), escape(createComponent(For, {
|
|
1681
|
+
get each() {
|
|
1682
|
+
return currentItems();
|
|
1683
|
+
},
|
|
1684
|
+
children: (media) => ssr(_tmpl$35, ssrHydrationKey(), escape(createComponent(Show, {
|
|
1685
|
+
get when() {
|
|
1686
|
+
return media.mime_type.startsWith("image/");
|
|
1687
|
+
},
|
|
1688
|
+
get fallback() {
|
|
1689
|
+
return ssr(_tmpl$36, ssrHydrationKey(), escape(media.filename));
|
|
1690
|
+
},
|
|
1691
|
+
get children() {
|
|
1692
|
+
return ssr(_tmpl$34, ssrHydrationKey() + ssrAttribute("src", escape(apiClient.mediaUrl(media.url), true), false) + ssrAttribute("alt", escape(media.alt ?? media.filename, true), false));
|
|
1693
|
+
}
|
|
1694
|
+
})), ssrAttribute("title", escape(media.filename, true), false), escape(media.title || media.filename))
|
|
1695
|
+
})));
|
|
1696
|
+
}
|
|
1697
|
+
})), currentItems().length > 0 ? "Change media" : "Choose media", escape(createComponent(Show, {
|
|
1698
|
+
get when() {
|
|
1699
|
+
return currentItems().length > 0;
|
|
1700
|
+
},
|
|
1701
|
+
get children() {
|
|
1702
|
+
return ssr(_tmpl$32, ssrHydrationKey());
|
|
1703
|
+
}
|
|
1704
|
+
})), escape(createComponent(Show, {
|
|
1705
|
+
get when() {
|
|
1706
|
+
return open();
|
|
1707
|
+
},
|
|
1708
|
+
get children() {
|
|
1709
|
+
return createComponent(MediaPickerModal, {
|
|
1710
|
+
get open() {
|
|
1711
|
+
return open();
|
|
1712
|
+
},
|
|
1713
|
+
get mode() {
|
|
1714
|
+
return props.mode;
|
|
1715
|
+
},
|
|
1716
|
+
get value() {
|
|
1717
|
+
return pickerValue();
|
|
1718
|
+
},
|
|
1719
|
+
onClose: () => setOpen(false),
|
|
1720
|
+
onSelect: (media) => {
|
|
1721
|
+
setResolved(media);
|
|
1722
|
+
props.onChange(Array.isArray(media) ? media.map((item) => item.id) : media.id);
|
|
1723
|
+
setOpen(false);
|
|
1724
|
+
}
|
|
1725
|
+
});
|
|
1726
|
+
}
|
|
1727
|
+
})));
|
|
1220
1728
|
}
|
|
1221
1729
|
function RelationshipSelector(props) {
|
|
1222
1730
|
const selectedIds = () => Array.isArray(props.value) ? props.value : props.value ? [props.value] : [];
|
|
@@ -1224,7 +1732,7 @@ function RelationshipSelector(props) {
|
|
|
1224
1732
|
get each() {
|
|
1225
1733
|
return props.field.config?.["choices"] ?? [];
|
|
1226
1734
|
},
|
|
1227
|
-
children: (choice) => ssr(_tmpl$
|
|
1735
|
+
children: (choice) => ssr(_tmpl$37, ssrHydrationKey() + ssrAttribute("value", escape(choice.value, true), false), ssrAttribute("selected", selectedIds().includes(choice.value), true), escape(choice.label))
|
|
1228
1736
|
})));
|
|
1229
1737
|
}
|
|
1230
1738
|
//#endregion
|