2 lines
5.5 KiB
JavaScript
2 lines
5.5 KiB
JavaScript
import{d as p,cJ as z,r as k,o as T,bA as G,b4 as J,b as W,g as r,M as S,w as u,aJ as H,aO as U,B,aP as P,h as $,e as w,z as c,j as f,t as m,aN as Q,O as q,F as X,f as g,u as Y,bB as Z,aM as h,bD as I,bC as x,Q as C,R as j,ad as V,b3 as _}from"./main-BhFWIRV_.js";import{_ as ee}from"./DeleteConfirmDialog.vue_vue_type_script_setup_true_lang-C6y9GBNB.js";const te=p({__name:"ModelEditorBase",props:{loading:{type:Boolean,default:!1},dialog:{type:Boolean,default:!1},objectName:{type:String,default:""},modelClass:{type:z,default:null},editingObject:{type:{},default:null},isUpdate:{type:Boolean,default:!1},isChanged:{type:Boolean,default:!1}},emits:["save","delete","close"],setup(l,{emit:b}){const d=b,a=l,n=k(!1),i=k(null);T(()=>{window.addEventListener("keydown",E)}),G(()=>{window.removeEventListener("keydown",E)}),J((t,o)=>a.isChanged&&!n.value?(n.value=!0,i.value=t,!1):!0);function y(){a.isChanged&&!n.value?n.value=!0:d("close")}function E(t){t.code==="KeyS"&&t.ctrlKey&&(t.preventDefault(),d("save"))}return(t,o)=>(g(),W(X,null,[r(S,{loading:l.loading},{default:u(()=>[r(U,{"sub-title":t.$t(l.modelClass.model.localizationKey)+(l.isChanged?` (${t.$t("unsaved")})`:""),title:l.objectName,icon:l.modelClass.model.icon,onClose:o[0]||(o[0]=v=>y()),"hide-close":!l.dialog},null,8,["sub-title","title","icon","hide-close"]),r(B),H(t.$slots,"default"),r(B),r(P,null,{default:u(()=>[l.isUpdate&&!l.modelClass.model.disableDelete&&!l.modelClass.model.isAdvancedDelete?(g(),$(c,{key:0,color:"delete","prepend-icon":"$delete",disabled:l.loading},{default:u(()=>[f(m(t.$t("Delete"))+" ",1),r(ee,{"object-name":l.objectName,"model-name":t.$t(l.modelClass.model.localizationKey),onDelete:o[1]||(o[1]=v=>d("delete"))},null,8,["object-name","model-name"])]),_:1},8,["disabled"])):w("",!0),l.isUpdate&&!l.modelClass.model.disableDelete&&l.modelClass.model.isAdvancedDelete?(g(),$(c,{key:1,color:"delete","prepend-icon":"$delete",to:{name:"ModelDeletePage",params:{model:l.modelClass.model.name,id:a.editingObject.id}},disabled:l.loading},{default:u(()=>[f(m(t.$t("Delete")),1)]),_:1},8,["to","disabled"])):w("",!0),!l.isUpdate&&!l.modelClass.model.disableCreate?(g(),$(c,{key:2,color:"save","prepend-icon":"$create",onClick:o[2]||(o[2]=v=>d("save")),loading:l.loading},{default:u(()=>[f(m(t.$t("Create")),1)]),_:1},8,["loading"])):w("",!0),l.isUpdate&&!l.modelClass.model.disableUpdate?(g(),$(c,{key:3,color:"save","prepend-icon":"$save",onClick:o[3]||(o[3]=v=>d("save")),loading:l.loading},{default:u(()=>[f(m(t.$t("Save")),1)]),_:1},8,["loading"])):w("",!0)]),_:1})]),_:3},8,["loading"]),r(Q,{width:"600px",modelValue:n.value,"onUpdate:modelValue":o[7]||(o[7]=v=>n.value=v)},{default:u(()=>[r(S,null,{default:u(()=>[r(U,{modelValue:n.value,"onUpdate:modelValue":o[4]||(o[4]=v=>n.value=v),title:t.$t("Confirm")},null,8,["modelValue","title"]),r(q,null,{default:u(()=>[f(m(t.$t("WarnPageLeave")),1)]),_:1}),r(P,null,{default:u(()=>[r(c,{onClick:o[5]||(o[5]=v=>{n.value=!1,i.value=null})},{default:u(()=>[f(m(t.$t("Cancel")),1)]),_:1}),l.dialog?w("",!0):(g(),$(c,{key:0,to:i.value,color:"warning"},{default:u(()=>[f(m(t.$t("Confirm")),1)]),_:1},8,["to"])),l.dialog?(g(),$(c,{key:1,onClick:o[6]||(o[6]=v=>d("close")),color:"warning"},{default:u(()=>[f(m(t.$t("Confirm")),1)]),_:1})):w("",!0)]),_:1})]),_:1})]),_:1},8,["modelValue"])],64))}});function ne(l,b){const d=k(!0),a=k({}),n=k({}),i=k(!1),{t:y}=Y(),E=Z();h(()=>a.value,(e,s)=>{Object.keys(s).length>0&&(i.value=!0)},{deep:!0}),h(()=>i.value,()=>{b("changedState",i.value)}),I(()=>{n.value=x(l,y)}),T(()=>{t()});function t(){window.onbeforeunload=e=>{if(i.value)return e.returnValue="this_string_cant_be_empty_because_of_firefox","this_string_cant_be_empty_because_of_firefox"}}function o(e){Object.keys(e).length>0&&Object.keys(e).forEach(s=>{a.value[s]=e[s]})}function v(e,s,F={}){const{itemDefaults:L={},newItemFunction:K=()=>{o(L)},existingItemFunction:M=()=>{}}=F;if(e===null&&(s===void 0||s=="")){if(n.value.model.disableCreate)throw Error("Trying to use a ModelEditor without an item and a model that does not allow object creation!");return K(),d.value=!1,E.value=O(),Promise.resolve(a.value)}else{if(e!==null)return a.value=e,M(),d.value=!1,E.value=O(),Promise.resolve(a.value);if(s!==void 0&&s!="")return d.value=!0,typeof s=="string"&&(s=Number(s)),n.value.retrieve(s).then(D=>(a.value=D,M(),E.value=O(),a.value)).catch(D=>(D instanceof _&&D.response.status==404?C().addPreparedMessage(V.NOT_FOUND):C().addError(j.FETCH_ERROR,D),Promise.resolve(void 0))).finally(()=>{d.value=!1})}return Promise.resolve(void 0)}function R(){return!!a.value.id}function O(){if(!R())return y("New")+" - "+y(n.value.model.localizationKey);let e="";return a.value.id&&(e=n.value.getLabel(a.value)),e==""?(console.warn("No string keys given model type ",l),y(n.value.model.localizationKey)):e}function N(){return d.value=!0,R()?n.value.update(a.value.id,a.value).then(e=>(b("save",e),a.value=e,C().addPreparedMessage(V.UPDATE_SUCCESS),e)).catch(e=>{console.error(e),C().addError(j.UPDATE_ERROR,e)}).finally(()=>{i.value=!1,d.value=!1}):n.value.create(a.value).then(e=>(b("create",e),a.value=e,C().addPreparedMessage(V.CREATE_SUCCESS),e)).catch(e=>{console.error(e),C().addError(j.CREATE_ERROR,e)}).finally(()=>{i.value=!1,d.value=!1})}function A(){return d.value=!0,n.value.destroy(a.value.id).then(e=>{b("delete",a.value),a.value={}}).catch(e=>{C().addError(j.DELETE_ERROR,e)}).finally(()=>{i.value=!1,d.value=!1})}return{setupState:v,saveObject:N,deleteObject:A,isUpdate:R,editingObjName:O,applyItemDefaults:o,loading:d,editingObj:a,editingObjChanged:i,modelClass:n}}export{te as _,ne as u};
|