Files
at-mintel/packages/people-manager/index.js

2 lines
9.2 KiB
JavaScript

import{useApi as e,defineModule as a}from"@directus/extensions-sdk";import{defineComponent as l,ref as n,computed as t,onMounted as i,resolveComponent as o,resolveDirective as s,openBlock as r,createBlock as d,withCtx as u,createVNode as c,createElementBlock as p,Fragment as m,renderList as v,createElementVNode as f,createTextVNode as y,toDisplayString as g,createCommentVNode as h,withDirectives as b}from"vue";var _=Object.defineProperty,x=Object.defineProperties,w=Object.getOwnPropertyDescriptors,V=Object.getOwnPropertySymbols,P=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,O=(e,a,l)=>a in e?_(e,a,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[a]=l;const j={class:"content-wrapper"},C={key:1,class:"empty-state"},N={key:2},U={class:"header"},E={class:"header-left"},T={class:"title"},z={class:"subtitle"},F={class:"header-right"},M={class:"details-grid"},S={class:"detail-item"},A={class:"value"},$={class:"detail-item"},B={class:"value"},I={class:"drawer-content"},q={class:"form-section"},D={class:"field"},K={class:"field"},L={class:"field"},W={class:"field"},Z={class:"field"},G={class:"field"},H={class:"drawer-actions"};var J=l({__name:"module",setup(a){const l=e(),_=n([]),J=n([]),Q=n(null),R=n(null),X=n(!1),Y=n(!1),ee=n(!1),ae=n({id:null,first_name:"",last_name:"",email:"",company:null,company_name:"",phone:""}),le=t(()=>J.value.map(e=>({text:e.name,value:e.id})));async function ne(){try{const[e,a]=await Promise.all([l.get("/items/people",{params:{sort:"last_name",fields:"*.*"}}),l.get("/items/companies",{params:{sort:"name"}})]);_.value=e.data.data,J.value=a.data.data}catch(e){console.error("Failed to fetch data:",e)}}function te(){ee.value=!1,ae.value={id:null,first_name:"",last_name:"",email:"",company:null,company_name:"",phone:""},Y.value=!0}function ie(){ee.value=!0;const e=Q.value;let a=null,l=e.company_name||"";var n;e.company&&("object"==typeof e.company?a=e.company.id:36===e.company.length?a=e.company:l=e.company),ae.value=(n=((e,a)=>{for(var l in a||(a={}))P.call(a,l)&&O(e,l,a[l]);if(V)for(var l of V(a))k.call(a,l)&&O(e,l,a[l]);return e})({},e),x(n,w({company:a,company_name:l}))),Y.value=!0}async function oe(){if(ae.value.first_name&&ae.value.last_name){X.value=!0;try{ee.value?(await l.patch(`/items/people/${ae.value.id}`,ae.value),R.value={type:"success",message:"Person aktualisiert!"}):(await l.post("/items/people",ae.value),R.value={type:"success",message:"Person angelegt!"}),Y.value=!1,await ne(),ee.value&&(Q.value=_.value.find(e=>e.id===ae.value.id))}catch(e){R.value={type:"danger",message:e.message}}finally{X.value=!1}}else R.value={type:"danger",message:"Vor- und Nachname sind erforderlich."}}async function se(){if(confirm("Soll diese Person wirklich gelöscht werden?"))try{await l.delete(`/items/people/${Q.value.id}`),R.value={type:"success",message:"Person gelöscht."},Q.value=null,await ne()}catch(e){R.value={type:"danger",message:e.message}}}return i(ne),(e,a)=>{const l=o("v-icon"),n=o("v-list-item-icon"),t=o("v-text-overflow"),i=o("v-list-item-content"),x=o("v-list-item"),w=o("v-divider"),V=o("v-list"),P=o("v-notice"),k=o("v-button"),O=o("v-info"),ne=o("v-input"),re=o("v-select"),de=o("v-drawer"),ue=o("private-view"),ce=s("tooltip");return r(),d(ue,{title:"People Manager"},{navigation:u(()=>[c(V,{nav:""},{default:u(()=>[c(x,{onClick:te,clickable:""},{default:u(()=>[c(n,null,{default:u(()=>[c(l,{name:"add",color:"var(--theme--primary)"})]),_:1}),c(i,null,{default:u(()=>[c(t,{text:"Neue Person anlegen"})]),_:1})]),_:1}),c(w),(r(!0),p(m,null,v(_.value,e=>{var a;return r(),d(x,{key:e.id,active:(null==(a=Q.value)?void 0:a.id)===e.id,class:"person-item",clickable:"",onClick:a=>function(e){Q.value=e}(e)},{default:u(()=>[c(n,null,{default:u(()=>[c(l,{name:"person"})]),_:1}),c(i,null,{default:u(()=>[c(t,{text:`${e.first_name} ${e.last_name}`},null,8,["text"])]),_:2},1024)]),_:2},1032,["active","onClick"])}),128))]),_:1})]),default:u(()=>{return[f("div",j,[R.value?(r(),d(P,{key:0,type:R.value.type,onClose:a[0]||(a[0]=e=>R.value=null),dismissible:""},{default:u(()=>[y(g(R.value.message),1)]),_:1},8,["type"])):h("v-if",!0),Q.value?(r(),p("div",N,[f("header",U,[f("div",E,[f("h1",T,g(Q.value.first_name)+" "+g(Q.value.last_name),1),f("p",z,g(Q.value.email||"Keine E-Mail angegeben"),1)]),f("div",F,[b((r(),d(k,{secondary:"",rounded:"",icon:"",onClick:ie},{default:u(()=>[c(l,{name:"edit"})]),_:1})),[[ce,"Person bearbeiten"]]),b((r(),d(k,{danger:"",rounded:"",icon:"",onClick:se},{default:u(()=>[c(l,{name:"delete"})]),_:1})),[[ce,"Person löschen"]])])]),c(w),f("div",M,[f("div",S,[a[12]||(a[12]=f("span",{class:"label"},"Organisation / Firma",-1)),f("p",A,g((e=Q.value,e?e.company?"object"==typeof e.company?e.company.name:(null==(n=J.value.find(a=>a.id===e.company))?void 0:n.name)||e.company_name:e.company_name||"---":"---")),1)]),f("div",$,[a[13]||(a[13]=f("span",{class:"label"},"Telefon",-1)),f("p",B,g(Q.value.phone||"---"),1)])])])):(r(),p("div",C,[c(O,{title:"Person auswählen",icon:"person",center:""},{default:u(()=>[a[10]||(a[10]=y(" Wähle eine Person in der Navigation aus oder ",-1)),c(k,{"x-small":"",onClick:te},{default:u(()=>[...a[9]||(a[9]=[y("erstelle eine neue Person",-1)])]),_:1}),a[11]||(a[11]=y(". ",-1))]),_:1})]))]),c(de,{modelValue:Y.value,"onUpdate:modelValue":a[7]||(a[7]=e=>Y.value=e),title:ee.value?"Person bearbeiten":"Neue Person anlegen",icon:"person",onCancel:a[8]||(a[8]=e=>Y.value=!1)},{default:u(()=>[f("div",I,[f("div",q,[f("div",D,[a[14]||(a[14]=f("span",{class:"label"},"Vorname",-1)),c(ne,{modelValue:ae.value.first_name,"onUpdate:modelValue":a[1]||(a[1]=e=>ae.value.first_name=e),placeholder:"Vorname",autofocus:""},null,8,["modelValue"])]),f("div",K,[a[15]||(a[15]=f("span",{class:"label"},"Nachname",-1)),c(ne,{modelValue:ae.value.last_name,"onUpdate:modelValue":a[2]||(a[2]=e=>ae.value.last_name=e),placeholder:"Nachname"},null,8,["modelValue"])]),f("div",L,[a[16]||(a[16]=f("span",{class:"label"},"E-Mail",-1)),c(ne,{modelValue:ae.value.email,"onUpdate:modelValue":a[3]||(a[3]=e=>ae.value.email=e),placeholder:"email@beispiel.de",type:"email"},null,8,["modelValue"])]),f("div",W,[a[17]||(a[17]=f("span",{class:"label"},"Zentrale Firma",-1)),c(re,{modelValue:ae.value.company,"onUpdate:modelValue":a[4]||(a[4]=e=>ae.value.company=e),items:le.value,placeholder:"Bestehende Firma auswählen..."},null,8,["modelValue","items"])]),f("div",Z,[a[18]||(a[18]=f("span",{class:"label"},"Firma (Legacy / Neu)",-1)),c(ne,{modelValue:ae.value.company_name,"onUpdate:modelValue":a[5]||(a[5]=e=>ae.value.company_name=e),placeholder:"z.B. Mintel"},null,8,["modelValue"])]),f("div",G,[a[19]||(a[19]=f("span",{class:"label"},"Telefon",-1)),c(ne,{modelValue:ae.value.phone,"onUpdate:modelValue":a[6]||(a[6]=e=>ae.value.phone=e),placeholder:"+49 ..."},null,8,["modelValue"])])]),f("div",H,[c(k,{primary:"",block:"",loading:X.value,onClick:oe},{default:u(()=>[...a[20]||(a[20]=[y(" Person speichern ",-1)])]),_:1},8,["loading"])])])]),_:1},8,["modelValue","title"])];var e,n}),_:1})}}}),Q=[],R=[];!function(e,a){if(e&&"undefined"!=typeof document){var l,n=!0===a.prepend?"prepend":"append",t=!0===a.singleTag,i="string"==typeof a.container?document.querySelector(a.container):document.getElementsByTagName("head")[0];if(t){var o=Q.indexOf(i);-1===o&&(o=Q.push(i)-1,R[o]={}),l=R[o]&&R[o][n]?R[o][n]:R[o][n]=s()}else l=s();65279===e.charCodeAt(0)&&(e=e.substring(1)),l.styleSheet?l.styleSheet.cssText+=e:l.appendChild(document.createTextNode(e))}function s(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),a.attributes)for(var l=Object.keys(a.attributes),t=0;t<l.length;t++)e.setAttribute(l[t],a.attributes[l[t]]);var o="prepend"===n?"afterbegin":"beforeend";return i.insertAdjacentElement(o,e),e}}("\n.content-wrapper[data-v-a6a3019e] {\n\tpadding: 32px;\n\theight: 100%;\n}\n.header[data-v-a6a3019e] {\n\tmargin-bottom: 24px;\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: flex-end;\n}\n.title[data-v-a6a3019e] {\n\tfont-size: 24px;\n\tfont-weight: 800;\n\tmargin-bottom: 4px;\n}\n.subtitle[data-v-a6a3019e] {\n\tcolor: var(--theme--foreground-subdued);\n\tfont-size: 14px;\n}\n.header-right[data-v-a6a3019e] {\n\tdisplay: flex;\n\tgap: 12px;\n}\n.empty-state[data-v-a6a3019e] {\n\theight: 100%;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n.details-grid[data-v-a6a3019e] {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(2, 1fr);\n\tgap: 32px;\n\tmargin-top: 32px;\n}\n.detail-item[data-v-a6a3019e] {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px;\n}\n.label[data-v-a6a3019e] {\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-a6a3019e] {\n\tfont-size: 16px;\n\tfont-weight: 500;\n}\n.drawer-content[data-v-a6a3019e] {\n\tpadding: 24px;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 32px;\n}\n.form-section[data-v-a6a3019e] {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 20px;\n}\n.field[data-v-a6a3019e] {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px;\n}\n.drawer-actions[data-v-a6a3019e] {\n\tmargin-top: 24px;\n}\n",{});var X=a({id:"people-manager",name:"People Manager",icon:"person",routes:[{path:"",component:((e,a)=>{const l=e.__vccOpts||e;for(const[e,n]of a)l[e]=n;return l})(J,[["__scopeId","data-v-a6a3019e"],["__file","module.vue"]])}]});export{X as default};