Files
at-mintel/packages/cms-infra/extensions/people-manager/index.js
Marc Mintel 9e4e296e3b
Some checks failed
Monorepo Pipeline / 🧪 Quality Assurance (push) Failing after 11s
Monorepo Pipeline / 🚀 Release (push) Has been skipped
Monorepo Pipeline / 🐳 Build Directus (Base) (push) Has been skipped
Monorepo Pipeline / 🐳 Build Gatekeeper (Product) (push) Has been skipped
Monorepo Pipeline / 🐳 Build Build-Base (push) Has been skipped
Monorepo Pipeline / 🐳 Build Production Runtime (push) Has been skipped
feat: adds aquisition extension to cms
2026-02-10 21:30:23 +01:00

2 lines
8.3 KiB
JavaScript

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