Преглед на файлове

fix: used global Event Bus to guarantee order editing triggers

unknown преди 1 ден
родител
ревизия
fba798b3e9
променени са 2 файла, в които са добавени 13 реда и са изтрити 3 реда
  1. 3 3
      src/components/admin/OrderCard.vue
  2. 10 0
      src/pages/Admin.vue

+ 3 - 3
src/components/admin/OrderCard.vue

@@ -16,7 +16,7 @@
 
     <div class="flex flex-col lg:flex-row divide-y lg:divide-y-0 lg:divide-x divide-border/50">
       <!-- Info Column (Clickable for editing) -->
-      <div class="p-6 lg:w-1/2 cursor-pointer hover:bg-primary/5 transition-colors" @click="$emit('edit-order', order)">
+      <div class="p-6 lg:w-1/2 cursor-pointer hover:bg-primary/5 transition-colors" @click="() => { $emit('edit-order', order); window.dispatchEvent(new CustomEvent('admin-edit-order', { detail: order })); }">
         <div class="flex items-center justify-between mb-4">
           <div class="flex items-center gap-2">
             <span class="text-xl font-black text-foreground bg-primary/10 px-3 py-1 rounded-xl tracking-tight">#{{ order.id }}</span>
@@ -32,7 +32,7 @@
           <div class="flex flex-col">
             <div class="flex items-center gap-2">
               <h3 class="font-bold leading-none">{{ order.first_name }} {{ order.last_name }}</h3>
-              <button @click.stop="$emit('edit-order', order)" class="p-1.5 bg-primary/5 hover:bg-primary/20 rounded-md text-primary transition-colors" style="position: relative; z-index: 100;">
+              <button @click.stop="() => { $emit('edit-order', order); window.dispatchEvent(new CustomEvent('admin-edit-order', { detail: order })); }" class="p-1.5 bg-primary/5 hover:bg-primary/20 rounded-md text-primary transition-colors" style="position: relative; z-index: 100;">
                 <Edit2 class="w-3 h-3" />
               </button>
             </div>
@@ -82,7 +82,7 @@
               <span class="text-[9px] font-bold uppercase text-primary/60 tracking-widest">{{ t("admin.fields.material") }} & {{ t("admin.fields.colors") }}</span>
               <p class="text-sm font-bold">{{ order.material_name || '???' }} — {{ order.color_name || '???' }}</p>
             </div>
-            <button @click.stop="$emit('edit-order', order)" class="bg-primary text-primary-foreground p-3 rounded-xl shadow-lg hover:scale-105 transition-transform" style="position: relative; z-index: 100;">
+            <button @click.stop="() => { $emit('edit-order', order); window.dispatchEvent(new CustomEvent('admin-edit-order', { detail: order })); }" class="bg-primary text-primary-foreground p-3 rounded-xl shadow-lg hover:scale-105 transition-transform" style="position: relative; z-index: 100;">
               <Edit2 class="w-5 h-5" />
             </button>
           </div>

+ 10 - 0
src/pages/Admin.vue

@@ -426,6 +426,16 @@ const handleEditOrder = (order: any) => {
   showOrderEditModal.value = true;
 };
 
+onMounted(() => {
+  window.addEventListener('admin-edit-order', (e: any) => {
+    if (e.detail) handleEditOrder(e.detail);
+  });
+});
+
+onUnmounted(() => {
+  window.removeEventListener('admin-edit-order', (e: any) => {});
+});
+
 const newColor = ref("");
 
 // Fetching Logic