PIMS/public/build/assets/Edit-CORuyxK8.js

2 lines
10 KiB
JavaScript

import{d as R,n as M,c as N,r as f,x as U,e as D,a as r,f as _,u as $,h as q,w as S,b as s,o as n,t as i,y as L,q as u,i as d,v as m,T as B,F as O}from"./app-CClrM5Yi.js";import{_ as X}from"./AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js";import{_ as Y}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js";import"./useForwardExpose-BhawR5VU.js";import"./VisuallyHidden-Cu70tzB6.js";import"./RovingFocusGroup-CNFroA6Y.js";import"./useArrowNavigation-C6Y-ieo6.js";import"./index-C4J_hXM0.js";import"./createLucideIcon-ZFd4jktC.js";const A={class:"flex h-full flex-1 flex-col gap-4 overflow-x-auto rounded-xl p-4"},F={key:0,class:"text-sm text-muted-foreground"},H={key:1,class:"rounded-md border border-red-300 bg-red-50 p-3 text-red-800 dark:border-red-800 dark:bg-red-950 dark:text-red-200"},I={class:"grid gap-4 md:grid-cols-2"},P={key:0,class:"mt-1 text-xs text-red-600"},W={key:0,class:"mt-1 text-xs text-red-600"},z={class:"md:col-span-2"},G={key:0,class:"mt-1 text-xs text-red-600"},J={key:0,class:"mt-1 text-xs text-red-600"},K={key:0,class:"mt-1 text-xs text-red-600"},Q={key:0,class:"mt-1 text-xs text-red-600"},Z={key:0,class:"mt-1 text-xs text-red-600"},h={key:0,class:"mt-1 text-xs text-red-600"},tt={key:0,class:"mt-1 text-xs text-red-600"},et={class:"grid gap-4 md:grid-cols-2"},st={key:0,class:"mt-1 text-xs text-red-600"},lt={key:0,class:"mt-1 text-xs text-red-600"},ot={key:0,class:"mt-1 text-xs text-red-600"},rt={key:0,class:"mt-1 text-xs text-red-600"},nt={key:0,class:"mt-1 text-xs text-red-600"},at={key:0,class:"mt-1 text-xs text-red-600"},it={class:"flex items-center gap-2"},dt=["disabled"],ut={key:0},mt={key:1},pt={key:0,class:"fixed bottom-4 left-1/2 z-50 -translate-x-1/2 rounded bg-foreground px-3 py-2 text-sm text-background shadow-lg"},xt=R({__name:"Edit",setup(ct){const T=M(),g=N(()=>T.props.movieId),v=f(!1),y=f(!1),b=f(null),l=U({}),k=f(!1),w=f(""),p=f(null),e=U({title:"",original_title:"",description:"",poster_url:"",backdrop_url:"",rating:"",release_date:"",year:"",runtime:"",genres:"",actors:"",directors:"",studios:"",countries:"",languages:""});function x(a){return(a??[]).map(t=>t.name).join(", ")}function c(a){return a.split(",").map(t=>t.trim()).filter(Boolean)}async function j(){v.value=!0,b.value=null;try{const a=await fetch(`/api/movies/${g.value}`,{headers:{Accept:"application/json","X-Requested-With":"XMLHttpRequest"},credentials:"same-origin"});if(!a.ok)throw new Error(`Failed: ${a.status}`);const t=await a.json();p.value=t,e.title=t.title??"",e.original_title=t.original_title??"",e.description=t.description??"",e.poster_url=t.poster_url??"",e.backdrop_url=t.backdrop_url??"",e.rating=t.rating??"",e.release_date=t.release_date??"",e.year=t.year??"",e.runtime=t.runtime??"",e.genres=x(t.genres),e.actors=x(t.actors),e.directors=x(t.directors),e.studios=x(t.studios),e.countries=x(t.countries),e.languages=x(t.languages)}catch(a){b.value=a?.message??"Unexpected error"}finally{v.value=!1}}function V(a){w.value=a,k.value=!0,setTimeout(()=>k.value=!1,2500)}async function E(){if(p.value){y.value=!0,b.value=null,Object.keys(l).forEach(a=>delete l[a]);try{const a={title:e.title,original_title:e.original_title||null,description:e.description||null,poster_url:e.poster_url||null,backdrop_url:e.backdrop_url||null,rating:e.rating||null,release_date:e.release_date||null,year:e.year===""?null:Number(e.year),runtime:e.runtime===""?null:Number(e.runtime),genres:c(e.genres),actors:c(e.actors),directors:c(e.directors),studios:c(e.studios),countries:c(e.countries),languages:c(e.languages)},t=await fetch(`/admin/movies/${p.value.id}`,{method:"PATCH",headers:{Accept:"application/json","Content-Type":"application/json","X-Requested-With":"XMLHttpRequest","X-CSRF-TOKEN":document.querySelector('meta[name="csrf-token"]')?.content??""},body:JSON.stringify(a),credentials:"same-origin"});if(t.status===422){const o=await t.json();throw Object.assign(l,o.errors||{}),new Error("Validation failed")}if(!t.ok)throw new Error(`Save failed: ${t.status}`);V("Saved"),await j()}catch(a){"errors"in l||V(a?.message??"Save failed")}finally{y.value=!1}}}function C(){const a=g.value;window.location.href=`/movies/${a}`}return D(j),(a,t)=>(n(),r(O,null,[_($(q),{title:p.value?.title?`Edit · ${p.value.title}`:"Edit Movie"},null,8,["title"]),_(X,{breadcrumbs:[{title:"Dashboard",href:"/dashboard"},{title:"Movies",href:"/admin/movies"},{title:p.value?.title??"Edit",href:`/admin/movies/${g.value}/edit`}]},{default:S(()=>[s("div",A,[v.value?(n(),r("div",F,"Loading…")):b.value?(n(),r("div",H,i(b.value),1)):(n(),r("form",{key:2,onSubmit:L(E,["prevent"]),class:"space-y-4"},[s("div",I,[s("div",null,[t[15]||(t[15]=s("label",{class:"block text-xs font-medium"},"Title",-1)),u(s("input",{"onUpdate:modelValue":t[0]||(t[0]=o=>e.title=o),class:"mt-1 w-full rounded border px-3 py-2 text-sm",type:"text",required:""},null,512),[[m,e.title]]),l.title?(n(),r("p",P,i(l.title.join(", ")),1)):d("",!0)]),s("div",null,[t[16]||(t[16]=s("label",{class:"block text-xs font-medium"},"Original Title",-1)),u(s("input",{"onUpdate:modelValue":t[1]||(t[1]=o=>e.original_title=o),class:"mt-1 w-full rounded border px-3 py-2 text-sm",type:"text"},null,512),[[m,e.original_title]]),l.original_title?(n(),r("p",W,i(l.original_title.join(", ")),1)):d("",!0)]),s("div",z,[t[17]||(t[17]=s("label",{class:"block text-xs font-medium"},"Description",-1)),u(s("textarea",{"onUpdate:modelValue":t[2]||(t[2]=o=>e.description=o),class:"mt-1 w-full rounded border px-3 py-2 text-sm",rows:"5"},null,512),[[m,e.description]]),l.description?(n(),r("p",G,i(l.description.join(", ")),1)):d("",!0)]),s("div",null,[t[18]||(t[18]=s("label",{class:"block text-xs font-medium"},"Poster URL",-1)),u(s("input",{"onUpdate:modelValue":t[3]||(t[3]=o=>e.poster_url=o),class:"mt-1 w-full rounded border px-3 py-2 text-sm",type:"url"},null,512),[[m,e.poster_url]]),l.poster_url?(n(),r("p",J,i(l.poster_url.join(", ")),1)):d("",!0)]),s("div",null,[t[19]||(t[19]=s("label",{class:"block text-xs font-medium"},"Backdrop URL",-1)),u(s("input",{"onUpdate:modelValue":t[4]||(t[4]=o=>e.backdrop_url=o),class:"mt-1 w-full rounded border px-3 py-2 text-sm",type:"url"},null,512),[[m,e.backdrop_url]]),l.backdrop_url?(n(),r("p",K,i(l.backdrop_url.join(", ")),1)):d("",!0)]),s("div",null,[t[20]||(t[20]=s("label",{class:"block text-xs font-medium"},"Rating",-1)),u(s("input",{"onUpdate:modelValue":t[5]||(t[5]=o=>e.rating=o),class:"mt-1 w-full rounded border px-3 py-2 text-sm",type:"text"},null,512),[[m,e.rating]]),l.rating?(n(),r("p",Q,i(l.rating.join(", ")),1)):d("",!0)]),s("div",null,[t[21]||(t[21]=s("label",{class:"block text-xs font-medium"},"Release Date (YYYY-MM-DD)",-1)),u(s("input",{"onUpdate:modelValue":t[6]||(t[6]=o=>e.release_date=o),class:"mt-1 w-full rounded border px-3 py-2 text-sm",type:"date"},null,512),[[m,e.release_date]]),l.release_date?(n(),r("p",Z,i(l.release_date.join(", ")),1)):d("",!0)]),s("div",null,[t[22]||(t[22]=s("label",{class:"block text-xs font-medium"},"Year",-1)),u(s("input",{"onUpdate:modelValue":t[7]||(t[7]=o=>e.year=o),class:"mt-1 w-full rounded border px-3 py-2 text-sm",type:"number",min:"1800",max:"3000"},null,512),[[m,e.year]]),l.year?(n(),r("p",h,i(l.year.join(", ")),1)):d("",!0)]),s("div",null,[t[23]||(t[23]=s("label",{class:"block text-xs font-medium"},"Runtime (minutes)",-1)),u(s("input",{"onUpdate:modelValue":t[8]||(t[8]=o=>e.runtime=o),class:"mt-1 w-full rounded border px-3 py-2 text-sm",type:"number",min:"1",max:"10000"},null,512),[[m,e.runtime]]),l.runtime?(n(),r("p",tt,i(l.runtime.join(", ")),1)):d("",!0)])]),s("div",et,[s("div",null,[t[24]||(t[24]=s("label",{class:"block text-xs font-medium"},"Genres (comma separated)",-1)),u(s("input",{"onUpdate:modelValue":t[9]||(t[9]=o=>e.genres=o),class:"mt-1 w-full rounded border px-3 py-2 text-sm",type:"text"},null,512),[[m,e.genres]]),l.genres?(n(),r("p",st,i(l.genres.join(", ")),1)):d("",!0)]),s("div",null,[t[25]||(t[25]=s("label",{class:"block text-xs font-medium"},"Actors (comma separated)",-1)),u(s("input",{"onUpdate:modelValue":t[10]||(t[10]=o=>e.actors=o),class:"mt-1 w-full rounded border px-3 py-2 text-sm",type:"text"},null,512),[[m,e.actors]]),l.actors?(n(),r("p",lt,i(l.actors.join(", ")),1)):d("",!0)]),s("div",null,[t[26]||(t[26]=s("label",{class:"block text-xs font-medium"},"Directors (comma separated)",-1)),u(s("input",{"onUpdate:modelValue":t[11]||(t[11]=o=>e.directors=o),class:"mt-1 w-full rounded border px-3 py-2 text-sm",type:"text"},null,512),[[m,e.directors]]),l.directors?(n(),r("p",ot,i(l.directors.join(", ")),1)):d("",!0)]),s("div",null,[t[27]||(t[27]=s("label",{class:"block text-xs font-medium"},"Studios (comma separated)",-1)),u(s("input",{"onUpdate:modelValue":t[12]||(t[12]=o=>e.studios=o),class:"mt-1 w-full rounded border px-3 py-2 text-sm",type:"text"},null,512),[[m,e.studios]]),l.studios?(n(),r("p",rt,i(l.studios.join(", ")),1)):d("",!0)]),s("div",null,[t[28]||(t[28]=s("label",{class:"block text-xs font-medium"},"Countries (comma separated)",-1)),u(s("input",{"onUpdate:modelValue":t[13]||(t[13]=o=>e.countries=o),class:"mt-1 w-full rounded border px-3 py-2 text-sm",type:"text"},null,512),[[m,e.countries]]),l.countries?(n(),r("p",nt,i(l.countries.join(", ")),1)):d("",!0)]),s("div",null,[t[29]||(t[29]=s("label",{class:"block text-xs font-medium"},"Languages (comma separated)",-1)),u(s("input",{"onUpdate:modelValue":t[14]||(t[14]=o=>e.languages=o),class:"mt-1 w-full rounded border px-3 py-2 text-sm",type:"text"},null,512),[[m,e.languages]]),l.languages?(n(),r("p",at,i(l.languages.join(", ")),1)):d("",!0)])]),s("div",it,[s("button",{type:"submit",disabled:y.value,class:"rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground hover:opacity-90 disabled:opacity-60"},[y.value?(n(),r("span",ut,"Saving…")):(n(),r("span",mt,"Save"))],8,dt),s("button",{type:"button",onClick:C,class:"rounded-md border px-3 py-2 text-sm hover:bg-muted"}," Cancel ")])],32)),_(B,{name:"fade"},{default:S(()=>[k.value?(n(),r("div",pt,i(w.value),1)):d("",!0)]),_:1})])]),_:1},8,["breadcrumbs"])],64))}}),Ut=Y(xt,[["__scopeId","data-v-ffff8818"]]);export{Ut as default};