1 line
5.8 KiB
JavaScript
1 line
5.8 KiB
JavaScript
import{A as e,At as t,G as n,I as r,K as i,Mt as a,N as o,Nt as s,a as c,b as l,c as u,et as d,f,g as p,h as m,m as h,nt as g,o as _,p as v,t as y,x as b,y as x}from"./http-DH3a8ZHi.js";import{L as S,V as C,l as w}from"./index-tqT6UwOm.js";import{t as T}from"./AdminPageSkeleton-BcF2AzMt.js";import{t as E}from"./BaseSwitch-DY_8WO_c.js";import{t as ee}from"./BaseEmptyState-CG1RbXkS.js";import{t as D}from"./AdminImagePicker-DgYmIolg.js";import{t as O}from"./AdminSelect-Dv_-57-E.js";var k={class:`banners-page`},A={key:2,class:`admin-card`},j={class:`admin-table`},M={key:0,class:`banner-sub`},N={class:`actions`},P=[`onClick`],F=[`onClick`],I={class:`field`},L={class:`field`},R={class:`field`},z={class:`field`},B={class:`field`},V={class:`field`},H=[`disabled`],U=_(b({__name:`BannersView`,setup(_){let b=[{value:`home_hero`,label:`خانه — بنر اصلی`},{value:`products_hero`,label:`لیست محصولات`},{value:`categories_hero`,label:`دستهبندیها`}],U=g([]),W=g(!0),G=g(!1),K=g(!1),q=g(null),J=c(),Y=d({slot:`home_hero`,title:``,subtitle:``,ctaLabel:``,ctaLink:`/categories`,imageUrl:null,displayOrder:0,isActive:!0}),X=f(()=>q.value?`ویرایش بنر`:`افزودن بنر`);function Z(e){return b.find(t=>t.value===e)?.label??e}async function Q(){W.value=!0;try{U.value=await w.list()}catch(e){J.error(e instanceof y?e.message:`بارگذاری بنرها ناموفق بود.`)}finally{W.value=!1}}function $(){q.value=null,Object.assign(Y,{slot:`home_hero`,title:``,subtitle:``,ctaLabel:`مشاهده کالکشن`,ctaLink:`/categories`,imageUrl:null,displayOrder:U.value.length,isActive:!0}),K.value=!0}function te(e){q.value=e.id,Object.assign(Y,{slot:e.slot,title:e.title,subtitle:e.subtitle,ctaLabel:e.ctaLabel,ctaLink:e.ctaLink||`/categories`,imageUrl:e.imageUrl||null,displayOrder:e.displayOrder,isActive:e.isActive}),K.value=!0}async function ne(){if(Y.title.trim()){G.value=!0;try{let e={slot:Y.slot,title:Y.title.trim(),subtitle:Y.subtitle.trim()||null,ctaLabel:Y.ctaLabel.trim()||null,ctaLink:Y.ctaLink.trim()||null,imageUrl:Y.imageUrl,displayOrder:Y.displayOrder,isActive:Y.isActive};q.value?await w.update(q.value,e):await w.create(e),K.value=!1,J.success(`بنر ذخیره شد.`),await Q()}catch(e){J.error(e instanceof y?e.message:`ذخیره بنر ناموفق بود.`)}finally{G.value=!1}}}async function re(e){if(window.confirm(`بنر «${e.title}» حذف شود؟`))try{await w.remove(e.id),J.success(`بنر حذف شد.`),await Q()}catch(e){J.error(e instanceof y?e.message:`حذف بنر ناموفق بود.`)}}return e(()=>{Q()}),(e,c)=>(o(),p(`div`,k,[v(`div`,{class:`admin-page-header`},[c[10]||=v(`div`,null,[v(`h1`,{class:`admin-page-header__title`},`بنرها`),v(`p`,{class:`admin-page-header__sub`},`بنر بخشهای مختلف اپ کاربر را از اینجا مدیریت کنید.`)],-1),v(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:$},`افزودن بنر`)]),W.value?(o(),h(T,{key:0,variant:`table`})):U.value.length?(o(),p(`div`,A,[v(`table`,j,[c[11]||=v(`thead`,null,[v(`tr`,null,[v(`th`,null,`تصویر`),v(`th`,null,`عنوان`),v(`th`,null,`بخش`),v(`th`,null,`دکمه`),v(`th`,null,`فعال`),v(`th`,{class:`actions`},`عملیات`)])],-1),v(`tbody`,null,[(o(!0),p(u,null,r(U.value,e=>(o(),p(`tr`,{key:e.id},[v(`td`,null,[v(`span`,{class:t([`banner-thumb`,{"banner-thumb--empty":!e.imageUrl}]),style:a(e.imageUrl?{backgroundImage:`url(${e.imageUrl})`}:void 0)},null,6)]),v(`td`,null,[v(`strong`,null,s(e.title),1),e.subtitle?(o(),p(`p`,M,s(e.subtitle),1)):m(``,!0)]),v(`td`,null,s(Z(e.slot)),1),v(`td`,null,s(e.ctaLabel||`—`),1),v(`td`,null,s(e.isActive?`بله`:`خیر`),1),v(`td`,N,[v(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>te(e)},` ویرایش `,8,P),v(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>re(e)},` حذف `,8,F)])]))),128))])])])):(o(),h(ee,{key:1,title:`بنری ثبت نشده`,description:`اولین بنر خانه را اضافه کنید.`},{default:n(()=>[v(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:$},` افزودن بنر `)]),_:1})),l(S,{open:K.value,title:X.value,onClose:c[9]||=e=>K.value=!1},{footer:n(()=>[v(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:c[8]||=e=>K.value=!1},`انصراف`),v(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!Y.title.trim()||G.value,onClick:ne},s(G.value?`در حال ذخیره...`:`ذخیره`),9,H)]),default:n(()=>[v(`label`,I,[c[12]||=x(` بخش نمایش `,-1),l(O,{modelValue:Y.slot,"onUpdate:modelValue":c[0]||=e=>Y.slot=e,options:b},null,8,[`modelValue`])]),v(`label`,L,[c[13]||=x(`عنوان`,-1),i(v(`input`,{"onUpdate:modelValue":c[1]||=e=>Y.title=e,class:`admin-input`},null,512),[[C,Y.title]])]),v(`label`,R,[c[14]||=x(`زیرعنوان`,-1),i(v(`input`,{"onUpdate:modelValue":c[2]||=e=>Y.subtitle=e,class:`admin-input`},null,512),[[C,Y.subtitle]])]),v(`label`,z,[c[15]||=x(`متن دکمه`,-1),i(v(`input`,{"onUpdate:modelValue":c[3]||=e=>Y.ctaLabel=e,class:`admin-input`},null,512),[[C,Y.ctaLabel]])]),v(`label`,B,[c[16]||=x(` لینک دکمه `,-1),i(v(`input`,{"onUpdate:modelValue":c[4]||=e=>Y.ctaLink=e,class:`admin-input`,dir:`ltr`,placeholder:`/categories`},null,512),[[C,Y.ctaLink]])]),v(`label`,V,[c[17]||=x(`ترتیب نمایش`,-1),i(v(`input`,{"onUpdate:modelValue":c[5]||=e=>Y.displayOrder=e,type:`number`,min:`0`,class:`admin-input`},null,512),[[C,Y.displayOrder,void 0,{number:!0}]])]),l(D,{modelValue:Y.imageUrl,"onUpdate:modelValue":c[6]||=e=>Y.imageUrl=e,label:`تصویر بنر`},null,8,[`modelValue`]),l(E,{modelValue:Y.isActive,"onUpdate:modelValue":c[7]||=e=>Y.isActive=e,label:`فعال`},null,8,[`modelValue`])]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-b734755d`]]);export{U as default}; |