2026-10-04 11:04:34 +03:30
|
|
|
import{A as e,At as t,D as n,N as r,Ot as ee,Q as i,U as a,W as o,c as s,d as c,et as l,g as u,h as d,jt as f,l as p,m,r as h,s as g,t as _,u as v}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as te,d as y,t as b}from"./http-CTjL79ty.js";import{V as x,m as S}from"./index-DWlOII4H.js";import{t as C}from"./AdminPageSkeleton-DacAHji8.js";import{t as w}from"./BaseSwitch-Dz4ODUhf.js";import{t as ne}from"./BaseEmptyState-B6cM4bRM.js";import{t as re}from"./AdminImagePicker-DhyB3HhH.js";import{t as T}from"./AdminSelect-CWMyO8tk.js";function E(e){let t=e.trim();if(!t)return!0;if(t.startsWith(`/`))return/^\/[^\s]*$/.test(t);try{let e=new URL(t);return e.protocol===`http:`||e.protocol===`https:`}catch{return!1}}var D={class:`banners-page`},O={key:2,class:`admin-card`},k={class:`admin-table`},A={key:0,class:`banner-sub`},j={class:`actions`},M=[`onClick`],N=[`onClick`],P={class:`field`},F={class:`field`},I={class:`field__head`},L={class:`field`},R={class:`field__head`},z={class:`field`},ie={class:`field__head`},B={class:`field`},V={class:`field`},H={class:`field`},U=[`disabled`],W=_(u({__name:`BannersView`,setup(u){let _=[{value:`home_hero`,label:`خانه — بنر اصلی`},{value:`products_hero`,label:`لیست محصولات`},{value:`categories_hero`,label:`دستهبندیها`}],W=l([]),G=l(!0),K=l(!1),q=l(!1),J=l(null),Y=te(),X=i({slot:`home_hero`,title:``,subtitle:``,ctaLabel:``,ctaLink:`/categories`,bannerLink:``,imageUrl:null,displayOrder:0,isActive:!0,showTitle:!0,showSubtitle:!0,showCta:!0}),Z=g(()=>J.value?`ویرایش بنر`:`افزودن بنر`);function ae(e){return _.find(t=>t.value===e)?.label??e}async function Q(){G.value=!0;try{W.value=await S.list()}catch(e){Y.error(e instanceof b?e.message:`بارگذاری بنرها ناموفق بود.`)}finally{G.value=!1}}function $(){J.value=null,Object.assign(X,{slot:`home_hero`,title:``,subtitle:``,ctaLabel:`مشاهده کالکشن`,ctaLink:`/categories`,bannerLink:``,imageUrl:null,displayOrder:W.value.length,isActive:!0,showTitle:!0,showSubtitle:!0,showCta:!0}),q.value=!0}function oe(e){J.value=e.id,Object.assign(X,{slot:e.slot,title:e.title,subtitle:e.subtitle,ctaLabel:e.ctaLabel,ctaLink:e.ctaLink||`/categories`,bannerLink:e.bannerLink||``,imageUrl:e.imageUrl||null,displayOrder:e.displayOrder,isActive:e.isActive,showTitle:e.showTitle!==!1,showSubtitle:e.showSubtitle!==!1,showCta:e.showCta!==!1}),q.value=!0}async function se(){if(X.title.trim()){if(!E(X.bannerLink)){Y.error(`لینک بنر معتبر نیست. مسیر داخلی (مثل /categories) یا آدرس https وارد کنید.`);return}K.value=!0;try{let e={slot:X.slot,title:X.title.trim(),subtitle:X.subtitle.trim()||null,ctaLabel:X.ctaLabel.trim()||null,ctaLink:X.ctaLink.trim()||null,bannerLink:X.bannerLink.trim()||null,imageUrl:X.imageUrl,displayOrder:X.displayOrder,isActive:X.isActive,showTitle:X.showTitle,showSubtitle:X.showSubtitle,showCta:X.showCta};J.value?await S.update(J.value,e):await S.create(e),q.value=!1,Y.success(`بنر ذخیره شد.`),await Q()}catch(e){Y.error(e instanceof b?e.message:`ذخیره بنر ناموفق بود.`)}finally{K.value=!1}}}async function ce(e){if(window.confirm(`بنر «${e.title}» حذف شود؟`))try{await S.remove(e.id),Y.success(`بنر حذف شد.`),await Q()}catch(e){Y.error(e instanceof b?e.message:`حذف بنر ناموفق بود.`)}}return n(()=>{Q()}),(n,i)=>(e(),c(`div`,D,[s(`div`,{class:`admin-page-header`},[i[14]||=s(`div`,null,[s(`h1`,{class:`admin-page-header__title`},`بنرها`),s(`p`,{class:`admin-page-header__sub`},`بنر بخشهای مختلف اپ کاربر را از اینجا مدیریت کنید.`)],-1),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:$},`افزودن بنر`)]),G.value?(e(),p(C,{key:0,variant:`table`})):W.value.length?(e(),c(`div`,O,[s(`table`,k,[i[15]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`تصویر`),s(`th`,null,`عنوان`),s(`th`,null,`بخش`),s(`th`,null,`دکمه`),s(`th`,null,`فعال`),s(`th`,{class:`actions`},`عملیات`)])],-1),s(`tbody`,null
|