1 line
13 KiB
JavaScript
1 line
13 KiB
JavaScript
import{$ as e,B as t,C as n,N as r,Q as i,St as a,U as o,W as s,X as c,Y as l,Z as ee,_t as u,ct as d,ht as f,nt as p,ot as te,q as m,rt as h,ut as g,vt as _,z as ne}from"./index-BHqDDh7X.js";import{t as re}from"./AdminPageSkeleton-E50Kwv4j.js";import{t as v}from"./BaseSwitch-DYYNQNXf.js";import{t as y}from"./AdminImagePicker-DzV79efN.js";var ie={class:`categories-admin`},b={class:`admin-page-header`},ae=[`disabled`],oe={key:1,class:`categories-admin__grid`},se={class:`admin-card categories-panel`},ce={class:`categories-panel__head`},le={key:0,class:`categories-panel__add`},ue={key:1,class:`categories-panel__empty`},de={key:2,class:`categories-panel__list`},fe={class:`category-row__fields`},pe={class:`category-row__line`},me=[`onUpdate:modelValue`],he={class:`category-row__line`},ge=[`onUpdate:modelValue`],x={class:`category-row__line`},S=[`onUpdate:modelValue`],C=[`value`],w={class:`category-row__id`,dir:`ltr`},T=[`onClick`],E={class:`admin-card categories-panel`},D={class:`categories-panel__head`},O={key:0,class:`categories-panel__add`},k={key:1,class:`categories-panel__empty`},A={key:2,class:`categories-panel__list`},j={class:`category-row__fields`},M={class:`category-row__line`},N=[`onUpdate:modelValue`],P={class:`category-row__line`},F=[`onUpdate:modelValue`],I={class:`category-row__line`},L=[`onUpdate:modelValue`],_e={class:`category-row__line`},ve=[`onUpdate:modelValue`],ye=[`value`],be={class:`category-row__id`,dir:`ltr`},xe=[`onClick`],R=t(h({__name:`CategoriesView`,setup(t){let h=_([]),R=_([]),z=u({}),B=_(!0),V=_(!1),H=ne(),U=_(!1),W=_(!1),G=[{value:`bolt`,label:`آذرخش`},{value:`feather`,label:`پر`},{value:`diamond`,label:`الماس`},{value:`grid`,label:`شبکه`},{value:`bag`,label:`کیف`},{value:`id-card`,label:`کارت`},{value:`catalog`,label:`کالیته`},{value:`headset`,label:`پشتیبانی`},{value:`home`,label:`خانه`}];function Se(e){return e===`shirt`?`id-card`:e===`suit`?`bag`:`grid`}function Ce(e){return e===`summer`?`bolt`:e===`winter`?`feather`:`diamond`}let K=u({id:``,title:``,subtitle:`مشاهده محصولات`,icon:`grid`,showTitle:!0,showSubtitle:!0,showIcon:!0}),q=u({id:``,title:``,description:``,ctaLabel:`مشاهده محصولات`,icon:`diamond`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0});function J(e){return e!==!1}let Y=l(()=>h.value.map(e=>e.id)),X=l(()=>R.value.map(e=>e.id));function Z(e){return e.trim().toLowerCase().replace(/\s+/g,`_`).replace(/[^a-z0-9_\u0600-\u06ff-]/gi,``).slice(0,48)}function Q(){let e=[...Y.value,...X.value];for(let t of e)t in z||(z[t]=null);for(let t of Object.keys(z))e.includes(t)||delete z[t]}async function $(){B.value=!0;try{let e=await n.get();h.value=e.categoryDefsJson?.usage?.length?e.categoryDefsJson.usage.map(e=>({id:e.id,title:e.title,subtitle:e.subtitle||`مشاهده محصولات`,icon:e.icon||Se(e.id),showTitle:J(e.showTitle),showSubtitle:J(e.showSubtitle),showIcon:J(e.showIcon)})):[{id:`trousers`,title:`پارچههای شلواری`,subtitle:`مشاهده محصولات`,icon:`grid`,showTitle:!0,showSubtitle:!0,showIcon:!0},{id:`suit`,title:`پارچههای کتشلواری`,subtitle:`مشاهده محصولات`,icon:`bag`,showTitle:!0,showSubtitle:!0,showIcon:!0},{id:`shirt`,title:`پارچههای پیراهنی`,subtitle:`مشاهده محصولات`,icon:`id-card`,showTitle:!0,showSubtitle:!0,showIcon:!0}],R.value=e.categoryDefsJson?.seasons?.length?e.categoryDefsJson.seasons.map(e=>({id:e.id,title:e.title,description:e.description||``,ctaLabel:e.ctaLabel||`مشاهده محصولات`,icon:e.icon||Ce(e.id),showTitle:J(e.showTitle),showDescription:J(e.showDescription),showCta:J(e.showCta),showIcon:J(e.showIcon)})):[{id:`summer`,title:`تابستانه`,description:`سبک، خنک و مناسب فصل گرم`,ctaLabel:`مشاهده محصولات`,icon:`bolt`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0},{id:`winter`,title:`زمستانه`,description:`گرم و مناسب فصل سرد`,ctaLabel:`مشاهده محصولات`,icon:`feather`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0},{id:`all_season`,title:`چهارفصل`,description:`مناسب استفاده در بیشتر فصلهای سال`,ctaLabel:`مشاهده محصولات`,icon:`diamond`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0}],Q();let t=e.categoryImagesJson??{};for(let e of Object.keys(z))z[e]=t[e]??null}catch(e){H.error(e instanceof r?e.message:`بارگذاری دستهها ناموفق بود.`),h.value.length||(h.value=[{id:`trousers`,title:`پارچههای شلواری`,subtitle:`مشاهده محصولات`,icon:`grid`,showTitle:!0,showSubtitle:!0,showIcon:!0},{id:`suit`,title:`پارچههای کتشلواری`,subtitle:`مشاهده محصولات`,icon:`bag`,showTitle:!0,showSubtitle:!0,showIcon:!0},{id:`shirt`,title:`پارچههای پیراهنی`,subtitle:`مشاهده محصولات`,icon:`id-card`,showTitle:!0,showSubtitle:!0,showIcon:!0}]),R.value.length||(R.value=[{id:`summer`,title:`تابستانه`,description:`سبک، خنک و مناسب فصل گرم`,ctaLabel:`مشاهده محصولات`,icon:`bolt`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0},{id:`winter`,title:`زمستانه`,description:`گرم و مناسب فصل سرد`,ctaLabel:`مشاهده محصولات`,icon:`feather`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0},{id:`all_season`,title:`چهارفصل`,description:`مناسب استفاده در بیشتر فصلهای سال`,ctaLabel:`مشاهده محصولات`,icon:`diamond`,showTitle:!0,showDescription:!0,showCta:!0,showIcon:!0}]),Q()}finally{B.value=!1}}function we(){let e=Z(K.id||K.title),t=K.title.trim();if(!e||!t){H.error(`شناسه و عنوان دسته کاربرد الزامی است.`);return}if(Y.value.includes(e)||X.value.includes(e)){H.error(`این شناسه از قبل وجود دارد.`);return}h.value.push({id:e,title:t,subtitle:K.subtitle.trim()||`مشاهده محصولات`,icon:K.icon,showTitle:K.showTitle,showSubtitle:K.showSubtitle,showIcon:K.showIcon}),z[e]=null,K.id=``,K.title=``,K.subtitle=`مشاهده محصولات`,K.icon=`grid`,K.showTitle=!0,K.showSubtitle=!0,K.showIcon=!0,U.value=!1}function Te(){let e=Z(q.id||q.title),t=q.title.trim();if(!e||!t){H.error(`شناسه و عنوان دسته فصل الزامی است.`);return}if(Y.value.includes(e)||X.value.includes(e)){H.error(`این شناسه از قبل وجود دارد.`);return}R.value.push({id:e,title:t,description:q.description.trim(),ctaLabel:q.ctaLabel.trim()||`مشاهده محصولات`,icon:q.icon,showTitle:q.showTitle,showDescription:q.showDescription,showCta:q.showCta,showIcon:q.showIcon}),z[e]=null,q.id=``,q.title=``,q.description=``,q.ctaLabel=`مشاهده محصولات`,q.icon=`diamond`,q.showTitle=!0,q.showDescription=!0,q.showCta=!0,q.showIcon=!0,W.value=!1}function Ee(e){if(h.value.length<=1){H.error(`حداقل یک دسته کاربرد لازم است.`);return}h.value=h.value.filter(t=>t.id!==e),delete z[e]}function De(e){if(R.value.length<=1){H.error(`حداقل یک دسته فصل لازم است.`);return}R.value=R.value.filter(t=>t.id!==e),delete z[e]}async function Oe(){V.value=!0;try{let e={};for(let[t,n]of Object.entries(z))n&&(e[t]=n);await n.update({categoryDefsJson:{usage:h.value,seasons:R.value},categoryImagesJson:e}),H.success(`دستهبندیها ذخیره شد.`),await $()}catch(e){H.error(e instanceof r?e.message:`ذخیره دستهبندیها ناموفق بود.`)}finally{V.value=!1}}return te(()=>{$()}),(t,n)=>(d(),e(`div`,ie,[c(`div`,b,[n[8]||=c(`div`,null,[c(`h1`,{class:`admin-page-header__title`},`دستهبندیها`),c(`p`,{class:`admin-page-header__sub`},` دستههای کاربرد و فصل را اضافه کنید. با کلید «نمایش / مخفی» مشخص کنید عنوان و توضیح در اپ کاربر دیده شود. `)],-1),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:V.value||B.value,onClick:Oe},a(V.value?`در حال ذخیره...`:`ذخیره تغییرات`),9,ae)]),B.value?(d(),ee(re,{key:0,variant:`cards`})):(d(),e(`div`,oe,[c(`section`,se,[c(`div`,ce,[c(`div`,null,[n[9]||=c(`h2`,null,`بر اساس کاربرد`,-1),c(`p`,null,a(h.value.length)+` دسته برای فیلتر محصول در اپ کاربر`,1)]),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:n[0]||=e=>U.value=!U.value},a(U.value?`بستن فرم`:`+ افزودن دسته`),1)]),U.value?(d(),e(`div`,le,[f(c(`input`,{"onUpdate:modelValue":n[1]||=e=>K.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان (مثلاً پارچههای مانتویی)`},null,512),[[s,K.title]]),f(c(`input`,{"onUpdate:modelValue":n[2]||=e=>K.id=e,class:`admin-input`,type:`text`,dir:`ltr`,placeholder:`شناسه انگلیسی (اختیاری، مثلاً mantle)`},null,512),[[s,K.id]]),f(c(`input`,{"onUpdate:modelValue":n[3]||=e=>K.subtitle=e,class:`admin-input`,type:`text`,placeholder:`زیرعنوان`},null,512),[[s,K.subtitle]]),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:we},`ثبت در لیست`)])):i(``,!0),h.value.length?(d(),e(`div`,de,[(d(!0),e(m,null,g(h.value,t=>(d(),e(`article`,{key:t.id,class:`category-row`},[p(y,{"model-value":z[t.id],"onUpdate:modelValue":e=>z[t.id]=e},null,8,[`model-value`,`onUpdate:modelValue`]),c(`div`,fe,[c(`div`,pe,[f(c(`input`,{"onUpdate:modelValue":e=>t.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان دسته`},null,8,me),[[s,t.title]]),p(v,{modelValue:t.showTitle,"onUpdate:modelValue":e=>t.showTitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),c(`div`,he,[f(c(`input`,{"onUpdate:modelValue":e=>t.subtitle=e,class:`admin-input`,type:`text`,placeholder:`زیرعنوان`},null,8,ge),[[s,t.subtitle]]),p(v,{modelValue:t.showSubtitle,"onUpdate:modelValue":e=>t.showSubtitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),c(`div`,x,[f(c(`select`,{"onUpdate:modelValue":e=>t.icon=e,class:`admin-input`,"aria-label":`آیکون`},[(d(),e(m,null,g(G,e=>c(`option`,{key:e.value,value:e.value},` آیکون: `+a(e.label),9,C)),64))],8,S),[[o,t.icon]]),p(v,{modelValue:t.showIcon,"onUpdate:modelValue":e=>t.showIcon=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),c(`p`,w,a(t.id),1)]),c(`button`,{type:`button`,class:`category-row__remove`,onClick:e=>Ee(t.id)},`حذف`,8,T)]))),128))])):(d(),e(`p`,ue,`هنوز دستهای ثبت نشده. با «افزودن دسته» شروع کنید.`))]),c(`section`,E,[c(`div`,D,[c(`div`,null,[n[10]||=c(`h2`,null,`بر اساس فصل`,-1),c(`p`,null,a(R.value.length)+` دسته فصلی برای فیلتر محصول`,1)]),c(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:n[4]||=e=>W.value=!W.value},a(W.value?`بستن فرم`:`+ افزودن دسته`),1)]),W.value?(d(),e(`div`,O,[f(c(`input`,{"onUpdate:modelValue":n[5]||=e=>q.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان (مثلاً بهاره)`},null,512),[[s,q.title]]),f(c(`input`,{"onUpdate:modelValue":n[6]||=e=>q.id=e,class:`admin-input`,type:`text`,dir:`ltr`,placeholder:`شناسه انگلیسی (اختیاری، مثلاً spring)`},null,512),[[s,q.id]]),f(c(`input`,{"onUpdate:modelValue":n[7]||=e=>q.description=e,class:`admin-input`,type:`text`,placeholder:`توضیح`},null,512),[[s,q.description]]),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Te},`ثبت در لیست`)])):i(``,!0),R.value.length?(d(),e(`div`,A,[(d(!0),e(m,null,g(R.value,t=>(d(),e(`article`,{key:t.id,class:`category-row`},[p(y,{"model-value":z[t.id],"onUpdate:modelValue":e=>z[t.id]=e},null,8,[`model-value`,`onUpdate:modelValue`]),c(`div`,j,[c(`div`,M,[f(c(`input`,{"onUpdate:modelValue":e=>t.title=e,class:`admin-input`,type:`text`,placeholder:`عنوان دسته`},null,8,N),[[s,t.title]]),p(v,{modelValue:t.showTitle,"onUpdate:modelValue":e=>t.showTitle=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),c(`div`,P,[f(c(`input`,{"onUpdate:modelValue":e=>t.description=e,class:`admin-input`,type:`text`,placeholder:`توضیح`},null,8,F),[[s,t.description]]),p(v,{modelValue:t.showDescription,"onUpdate:modelValue":e=>t.showDescription=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),c(`div`,I,[f(c(`input`,{"onUpdate:modelValue":e=>t.ctaLabel=e,class:`admin-input`,type:`text`,placeholder:`متن لینک (مشاهده محصولات)`},null,8,L),[[s,t.ctaLabel]]),p(v,{modelValue:t.showCta,"onUpdate:modelValue":e=>t.showCta=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),c(`div`,_e,[f(c(`select`,{"onUpdate:modelValue":e=>t.icon=e,class:`admin-input`,"aria-label":`آیکون`},[(d(),e(m,null,g(G,e=>c(`option`,{key:e.value,value:e.value},` آیکون: `+a(e.label),9,ye)),64))],8,ve),[[o,t.icon]]),p(v,{modelValue:t.showIcon,"onUpdate:modelValue":e=>t.showIcon=e,"active-text":`نمایش`,"inactive-text":`مخفی`},null,8,[`modelValue`,`onUpdate:modelValue`])]),c(`p`,be,a(t.id),1)]),c(`button`,{type:`button`,class:`category-row__remove`,onClick:e=>De(t.id)},`حذف`,8,xe)]))),128))])):(d(),e(`p`,k,`هنوز دستهای ثبت نشده. با «افزودن دسته» شروع کنید.`))])]))]))}}),[[`__scopeId`,`data-v-45420745`]]);export{R as default}; |