Some checks failed
Monorepo Pipeline / ⚡ Prioritize Release (push) Successful in 1s
Monorepo Pipeline / 🧪 Test (push) Successful in 2m2s
Monorepo Pipeline / 🧹 Lint (push) Successful in 2m14s
Monorepo Pipeline / 🚀 Release (push) Has been cancelled
Monorepo Pipeline / 🐳 Build Directus (Base) (push) Has been cancelled
Monorepo Pipeline / 🐳 Build Gatekeeper (Product) (push) Has been cancelled
Monorepo Pipeline / 🐳 Build Build-Base (push) Has been cancelled
Monorepo Pipeline / 🐳 Build Production Runtime (push) Has been cancelled
Monorepo Pipeline / 🏗️ Build (push) Has been cancelled
2 lines
7.9 KiB
JavaScript
2 lines
7.9 KiB
JavaScript
import{useApi as e,defineModule as a}from"@directus/extensions-sdk";import{defineComponent as l,ref as t,computed as n,onMounted as i,resolveComponent as s,resolveDirective as o,openBlock as d,createBlock as u,unref as r,withCtx as c,createVNode as m,createElementBlock as v,Fragment as p,renderList as f,createTextVNode as g,toDisplayString as y,createCommentVNode as _,withDirectives as h,createElementVNode as b}from"vue";import{MintelManagerLayout as x,MintelSelect as w}from"@mintel/directus-extension-toolkit";const k={key:0,class:"details-grid"},V={class:"detail-item"},P={class:"value"},C={class:"detail-item"},N={class:"value"},A={class:"detail-item"},E={class:"value"},M={class:"detail-item"},U={class:"value"},$={class:"drawer-content"},F={class:"form-section"},O={class:"field"},S={class:"field"},T={class:"field"},j={class:"field"},z={class:"drawer-actions"};var B=l({__name:"module",setup(a){const l=e(),B=t([]),q=t([]),I=t(null),W=t(null),Z=t(!1),D=t(!1),G=t(!1),H=t({id:null,first_name:"",last_name:"",email:"",company:null}),J=n(()=>q.value.map(e=>({text:e.name,value:e.id})));function K(e){var a;return e&&e.company?"object"==typeof e.company?e.company.name:(null==(a=q.value.find(a=>a.id===e.company))?void 0:a.name)||"Unbekannte Firma":"---"}async function L(){try{const[e,a]=await Promise.all([l.get("/items/people",{params:{sort:"last_name",fields:"*.*"}}),l.get("/items/companies",{params:{sort:"name"}})]);B.value=e.data.data,q.value=a.data.data}catch(e){console.error("Failed to fetch data:",e)}}function Q(){G.value=!1,H.value={id:null,first_name:"",last_name:"",email:"",company:null},D.value=!0}function R(){var e;G.value=!0;const a=I.value;H.value={id:a.id,first_name:a.first_name,last_name:a.last_name,email:a.email,company:(null==(e=a.company)?void 0:e.id)||a.company},D.value=!0}async function X(){if(H.value.first_name&&H.value.last_name){Z.value=!0;try{let e;if(G.value){const a=await l.patch(`/items/people/${H.value.id}`,H.value);e=a.data.data,W.value={type:"success",message:"Person aktualisiert!"}}else{const a=await l.post("/items/people",H.value);e=a.data.data,W.value={type:"success",message:"Person angelegt!"}}D.value=!1,await L(),e&&(I.value=B.value.find(a=>a.id===e.id)||e)}catch(e){W.value={type:"danger",message:e.message}}finally{Z.value=!1}}else W.value={type:"danger",message:"Vor- und Nachname sind erforderlich."}}async function Y(){if(confirm("Soll diese Person wirklich gelöscht werden?"))try{await l.delete(`/items/people/${I.value.id}`),W.value={type:"success",message:"Person gelöscht."},I.value=null,await L()}catch(e){W.value={type:"danger",message:e.message}}}return i(L),(e,a)=>{var l,t;const n=s("v-icon"),i=s("v-list-item-icon"),q=s("v-text-overflow"),L=s("v-list-item-content"),ee=s("v-list-item"),ae=s("v-divider"),le=s("v-list"),te=s("v-button"),ne=s("v-input"),ie=s("v-drawer"),se=o("tooltip");return d(),u(r(x),{title:"People Manager","item-title":`${null==(l=I.value)?void 0:l.first_name} ${null==(t=I.value)?void 0:t.last_name}`||"Person wählen","is-empty":!I.value,"empty-title":"Person auswählen","empty-icon":"person",notice:W.value,onCloseNotice:a[7]||(a[7]=e=>W.value=null)},{navigation:c(()=>[m(le,{nav:""},{default:c(()=>[m(ee,{onClick:Q,clickable:""},{default:c(()=>[m(i,null,{default:c(()=>[m(n,{name:"add",color:"var(--theme--primary)"})]),_:1}),m(L,null,{default:c(()=>[m(q,{text:"Neue Person anlegen"})]),_:1})]),_:1}),m(ae),(d(!0),v(p,null,f(B.value,e=>{var a;return d(),u(ee,{key:e.id,active:(null==(a=I.value)?void 0:a.id)===e.id,class:"nav-item",clickable:"",onClick:a=>function(e){I.value=e}(e)},{default:c(()=>[m(i,null,{default:c(()=>[m(n,{name:"person"})]),_:1}),m(L,null,{default:c(()=>[m(q,{text:`${e.first_name} ${e.last_name}`},null,8,["text"])]),_:2},1024)]),_:2},1032,["active","onClick"])}),128))]),_:1})]),subtitle:c(()=>[I.value?(d(),v(p,{key:0},[g(y(K(I.value)),1)],64)):_("v-if",!0)]),actions:c(()=>[h((d(),u(te,{secondary:"",rounded:"",icon:"",onClick:R},{default:c(()=>[m(n,{name:"edit"})]),_:1})),[[se,"Person bearbeiten",void 0,{bottom:!0}]]),h((d(),u(te,{danger:"",rounded:"",icon:"",onClick:Y},{default:c(()=>[m(n,{name:"delete"})]),_:1})),[[se,"Person löschen",void 0,{bottom:!0}]])]),"empty-state":c(()=>[a[9]||(a[9]=g(" Wähle eine Person in der Navigation aus oder ",-1)),m(te,{"x-small":"",onClick:Q},{default:c(()=>[...a[8]||(a[8]=[g("erstelle eine neue Person",-1)])]),_:1}),a[10]||(a[10]=g(". ",-1))]),default:c(()=>[I.value?(d(),v("div",k,[b("div",V,[a[11]||(a[11]=b("span",{class:"label"},"Vorname",-1)),b("p",P,y(I.value.first_name),1)]),b("div",C,[a[12]||(a[12]=b("span",{class:"label"},"Nachname",-1)),b("p",N,y(I.value.last_name),1)]),b("div",A,[a[13]||(a[13]=b("span",{class:"label"},"E-Mail",-1)),b("p",E,y(I.value.email||"---"),1)]),b("div",M,[a[14]||(a[14]=b("span",{class:"label"},"Organisation",-1)),b("p",U,y(K(I.value)),1)])])):_("v-if",!0),m(ie,{modelValue:D.value,"onUpdate:modelValue":a[5]||(a[5]=e=>D.value=e),title:G.value?"Person bearbeiten":"Neue Person anlegen",icon:"person",onCancel:a[6]||(a[6]=e=>D.value=!1)},{default:c(()=>[b("div",$,[b("div",F,[b("div",O,[a[15]||(a[15]=b("span",{class:"label"},"Vorname",-1)),m(ne,{modelValue:H.value.first_name,"onUpdate:modelValue":a[0]||(a[0]=e=>H.value.first_name=e),placeholder:"Vorname",autofocus:""},null,8,["modelValue"])]),b("div",S,[a[16]||(a[16]=b("span",{class:"label"},"Nachname",-1)),m(ne,{modelValue:H.value.last_name,"onUpdate:modelValue":a[1]||(a[1]=e=>H.value.last_name=e),placeholder:"Nachname"},null,8,["modelValue"])]),b("div",T,[a[17]||(a[17]=b("span",{class:"label"},"E-Mail",-1)),m(ne,{modelValue:H.value.email,"onUpdate:modelValue":a[2]||(a[2]=e=>H.value.email=e),placeholder:"E-Mail Adresse",type:"email"},null,8,["modelValue"])]),b("div",j,[a[18]||(a[18]=b("span",{class:"label"},"Zentrale Firma",-1)),m(r(w),{modelValue:H.value.company,"onUpdate:modelValue":a[3]||(a[3]=e=>H.value.company=e),items:J.value,placeholder:"Bestehende Firma auswählen...","allow-add":"",onAdd:a[4]||(a[4]=e=>{W.value={type:"info",message:"Firma im Company Manager anlegen."}})},null,8,["modelValue","items"])])]),b("div",z,[m(te,{primary:"",block:"",loading:Z.value,onClick:X},{default:c(()=>[...a[19]||(a[19]=[g(" Person speichern ",-1)])]),_:1},8,["loading"])])])]),_:1},8,["modelValue","title"])]),_:1},8,["item-title","is-empty","notice"])}}}),q=[],I=[];!function(e,a){if(e&&"undefined"!=typeof document){var l,t=!0===a.prepend?"prepend":"append",n=!0===a.singleTag,i="string"==typeof a.container?document.querySelector(a.container):document.getElementsByTagName("head")[0];if(n){var s=q.indexOf(i);-1===s&&(s=q.push(i)-1,I[s]={}),l=I[s]&&I[s][t]?I[s][t]:I[s][t]=o()}else l=o();65279===e.charCodeAt(0)&&(e=e.substring(1)),l.styleSheet?l.styleSheet.cssText+=e:l.appendChild(document.createTextNode(e))}function o(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),a.attributes)for(var l=Object.keys(a.attributes),n=0;n<l.length;n++)e.setAttribute(l[n],a.attributes[l[n]]);var s="prepend"===t?"afterbegin":"beforeend";return i.insertAdjacentElement(s,e),e}}("\n.details-grid[data-v-04ecd491] {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(2, 1fr);\n\tgap: 32px;\n}\n.detail-item[data-v-04ecd491] {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px;\n}\n.label[data-v-04ecd491] {\n\tfont-size: 12px;\n\tfont-weight: 700;\n\ttext-transform: uppercase;\n\tcolor: var(--theme--foreground-subdued);\n\tletter-spacing: 0.5px;\n}\n.value[data-v-04ecd491] {\n\tfont-size: 16px;\n\tfont-weight: 500;\n}\n.drawer-content[data-v-04ecd491] {\n\tpadding: 24px;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 32px;\n}\n.form-section[data-v-04ecd491] {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 20px;\n}\n.field[data-v-04ecd491] {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px;\n}\n.drawer-actions[data-v-04ecd491] {\n\tmargin-top: 24px;\n}\n",{});var W=a({id:"people-manager",name:"People Manager",icon:"person",routes:[{path:"",component:((e,a)=>{const l=e.__vccOpts||e;for(const[e,t]of a)l[e]=t;return l})(B,[["__scopeId","data-v-04ecd491"],["__file","module.vue"]])}]});export{W as default};
|