Files
at-mintel/packages/cms-infra/extensions/company-manager/index.js
Marc Mintel d69ade6268
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
chore: update lockfile and commit all pending release fixes
2026-02-14 13:57:46 +01:00

2 lines
6.6 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 o,createBlock as d,unref as u,withCtx as c,createVNode as r,createElementBlock as m,Fragment as v,renderList as p,createTextVNode as f,toDisplayString as g,createCommentVNode as y,withDirectives as x,createElementVNode as b}from"vue";import{MintelManagerLayout as h}from"@mintel/directus-extension-toolkit";const _={key:0,class:"details-grid"},w={class:"detail-item full"},k={class:"value"},F={class:"drawer-content"},C={class:"form-section"},V={class:"field"},N={class:"field"},A={class:"field"},z={class:"drawer-actions"};var S=t({__name:"module",setup(a){const t=e(),S=l([]),B=l(null),T=l(null),U=l(!1),E=l(!1),O=l(!1),j=l({id:null,name:"",domain:"",notes:""});async function D(){try{const e=await t.get("/items/companies",{params:{sort:"name"}});S.value=e.data.data}catch(e){console.error("Failed to fetch companies:",e)}}function M(){O.value=!1,j.value={id:null,name:"",domain:"",notes:""},E.value=!0}function W(){O.value=!0,j.value={id:B.value.id,name:B.value.name,domain:B.value.domain,notes:B.value.notes},E.value=!0}async function $(){if(j.value.name){U.value=!0;try{let e;if(O.value){const a=await t.patch(`/items/companies/${j.value.id}`,j.value);e=a.data.data,T.value={type:"success",message:"Firma aktualisiert!"}}else{const a=await t.post("/items/companies",j.value);e=a.data.data,T.value={type:"success",message:"Firma angelegt!"}}E.value=!1,await D(),e&&(B.value=S.value.find(a=>a.id===e.id)||e)}catch(e){T.value={type:"danger",message:e.message}}finally{U.value=!1}}else T.value={type:"danger",message:"Firmenname ist erforderlich."}}async function q(){if(confirm("Soll diese Firma wirklich gelöscht werden?"))try{await t.delete(`/items/companies/${B.value.id}`),T.value={type:"success",message:"Firma gelöscht."},B.value=null,await D()}catch(e){T.value={type:"danger",message:e.message}}}return n(D),(e,a)=>{var t;const l=i("v-icon"),n=i("v-list-item-icon"),D=i("v-text-overflow"),G=i("v-list-item-content"),H=i("v-list-item"),I=i("v-divider"),K=i("v-list"),J=i("v-button"),L=i("v-input"),P=i("v-textarea"),Q=i("v-drawer"),R=s("tooltip");return o(),d(u(h),{title:"Company Manager","item-title":(null==(t=B.value)?void 0:t.name)||"Firma wählen","is-empty":!B.value,"empty-title":"Firma auswählen","empty-icon":"business",notice:T.value,onCloseNotice:a[5]||(a[5]=e=>T.value=null)},{navigation:c(()=>[r(K,{nav:""},{default:c(()=>[r(H,{onClick:M,clickable:""},{default:c(()=>[r(n,null,{default:c(()=>[r(l,{name:"add",color:"var(--theme--primary)"})]),_:1}),r(G,null,{default:c(()=>[r(D,{text:"Neue Firma anlegen"})]),_:1})]),_:1}),r(I),(o(!0),m(v,null,p(S.value,e=>{var a;return o(),d(H,{key:e.id,active:(null==(a=B.value)?void 0:a.id)===e.id,class:"nav-item",clickable:"",onClick:a=>function(e){B.value=e}(e)},{default:c(()=>[r(n,null,{default:c(()=>[r(l,{name:"business"})]),_:1}),r(G,null,{default:c(()=>[r(D,{text:e.name},null,8,["text"])]),_:2},1024)]),_:2},1032,["active","onClick"])}),128))]),_:1})]),subtitle:c(()=>[B.value?(o(),m(v,{key:0},[f(g(B.value.domain||"Keine Domain angegeben"),1)],64)):y("v-if",!0)]),actions:c(()=>[x((o(),d(J,{secondary:"",rounded:"",icon:"",onClick:W},{default:c(()=>[r(l,{name:"edit"})]),_:1})),[[R,"Firma bearbeiten",void 0,{bottom:!0}]]),x((o(),d(J,{danger:"",rounded:"",icon:"",onClick:q},{default:c(()=>[r(l,{name:"delete"})]),_:1})),[[R,"Firma löschen",void 0,{bottom:!0}]])]),"empty-state":c(()=>[a[7]||(a[7]=f(" Wähle eine Firma in der Navigation aus oder ",-1)),r(J,{"x-small":"",onClick:M},{default:c(()=>[...a[6]||(a[6]=[f("erstelle eine neue Firma",-1)])]),_:1}),a[8]||(a[8]=f(". ",-1))]),default:c(()=>[B.value?(o(),m("div",_,[b("div",w,[a[9]||(a[9]=b("span",{class:"label"},"Notizen / Adresse",-1)),b("p",k,g(B.value.notes||"---"),1)])])):y("v-if",!0),r(Q,{modelValue:E.value,"onUpdate:modelValue":a[3]||(a[3]=e=>E.value=e),title:O.value?"Firma bearbeiten":"Neue Firma anlegen",icon:"business",onCancel:a[4]||(a[4]=e=>E.value=!1)},{default:c(()=>[b("div",F,[b("div",C,[b("div",V,[a[10]||(a[10]=b("span",{class:"label"},"Firmenname",-1)),r(L,{modelValue:j.value.name,"onUpdate:modelValue":a[0]||(a[0]=e=>j.value.name=e),placeholder:"z.B. Schmidt GmbH",autofocus:""},null,8,["modelValue"])]),b("div",N,[a[11]||(a[11]=b("span",{class:"label"},"Domain / Website",-1)),r(L,{modelValue:j.value.domain,"onUpdate:modelValue":a[1]||(a[1]=e=>j.value.domain=e),placeholder:"example.com"},null,8,["modelValue"])]),b("div",A,[a[12]||(a[12]=b("span",{class:"label"},"Notizen / Adresse",-1)),r(P,{modelValue:j.value.notes,"onUpdate:modelValue":a[2]||(a[2]=e=>j.value.notes=e),placeholder:"z.B. Branche, Adresse, etc."},null,8,["modelValue"])])]),b("div",z,[r(J,{primary:"",block:"",loading:U.value,onClick:$},{default:c(()=>[...a[13]||(a[13]=[f(" Firma speichern ",-1)])]),_:1},8,["loading"])])])]),_:1},8,["modelValue","title"])]),_:1},8,["item-title","is-empty","notice"])}}}),B=[],T=[];!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=B.indexOf(i);-1===s&&(s=B.push(i)-1,T[s]={}),t=T[s]&&T[s][l]?T[s][l]:T[s][l]=o()}else t=o();65279===e.charCodeAt(0)&&(e=e.substring(1)),t.styleSheet?t.styleSheet.cssText+=e:t.appendChild(document.createTextNode(e))}function o(){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.details-grid[data-v-c558ed15] { display: flex; flex-direction: column; gap: 24px;\n}\n.detail-item[data-v-c558ed15] { display: flex; flex-direction: column; gap: 8px;\n}\n.detail-item.full[data-v-c558ed15] { width: 100%;\n}\n.label[data-v-c558ed15] { font-size: 12px; font-weight: 700; text-transform: uppercase; color: var(--theme--foreground-subdued); letter-spacing: 0.5px;\n}\n.value[data-v-c558ed15] { font-size: 16px; font-weight: 500;\n}\n.drawer-content[data-v-c558ed15] { padding: 24px; display: flex; flex-direction: column; gap: 32px;\n}\n.form-section[data-v-c558ed15] { display: flex; flex-direction: column; gap: 20px;\n}\n.field[data-v-c558ed15] { display: flex; flex-direction: column; gap: 8px;\n}\n.drawer-actions[data-v-c558ed15] { margin-top: 24px;\n}\n",{});var U=a({id:"company-manager",name:"Company Manager",icon:"business",routes:[{path:"",component:((e,a)=>{const t=e.__vccOpts||e;for(const[e,l]of a)t[e]=l;return t})(S,[["__scopeId","data-v-c558ed15"],["__file","module.vue"]])}]});export{U as default};