diff --git a/src/components/Admin/Field.vue b/src/components/Admin/Field.vue index 45b5b44..a18b1a9 100644 --- a/src/components/Admin/Field.vue +++ b/src/components/Admin/Field.vue @@ -47,13 +47,13 @@
{{ @@ -241,10 +241,37 @@ const displayLabel = computed(() => { .replace(/^./, (c) => c.toUpperCase()); }); +// Öncelikli metin alanları — formda en üstte görünsün +const KEY_ORDER = [ + "title", + "name", + "label", + "fullName", + "subtitle", + "price", + "discount", + "excerpt", + "description", + "text", + "content", + "startDate", + "endDate", + "enabled", +]; + const objectKeys = computed(() => { - const keys = Object.keys(value.value).filter((k) => k !== "__component"); - // Meta/SEO en sona - return keys.sort((a, b) => (a === "meta" ? 1 : b === "meta" ? -1 : 0)); + const obj = value.value; + const weight = (k: string) => { + if (k === "meta") return 100; // SEO her zaman en sonda + const v = obj[k]; + if (Array.isArray(v)) return 50; // listeler (öğeler vb.) en altta + if (v !== null && typeof v === "object") return 40; // görsel gibi nesneler + const i = KEY_ORDER.indexOf(k); + return i === -1 ? 30 : i; // bilinen metinler önce, kalan primitifler sonra + }; + return Object.keys(obj) + .filter((k) => k !== "__component") + .sort((a, b) => weight(a) - weight(b)); }); function stripHtml(s: string) {