PageSourceSearch

https://digitalbehandling.se/assets/GallringPurgeQueue-BgPnxco8.js

js digitalbehandling.se collected 2026-09-30 08:28:02 UTC 4,475 bytes, 1 lines download raw bytes

1import{g as N,b7 as b,x as k,r as h,a2 as y,b8 as j,j as e,B as n,A as w,W as p,aD as C,aC as A,aF as D,C as d,a as o,c as F,d as M,k as P,aM as R,aY as B,aN as T,D as E,p as K,q as H,t as L,L as Q,T as S,v as _,ba as q}from"./index-CobRY8C4.js";import{c as z,r as O,f as G}from"./purgeRequests-kLD5-wG4.js";function X(){const v=N(),g=b(),{toast:r}=k(),[i,t]=h.useState(null),[l,x]=h.useState(""),{data:m=[],isLoading:f}=y({queryKey:["gallring-purge-pending"],queryFn:G}),u=j({mutationFn:s=>z(s),onSuccess:()=>{g.invalidateQueries({queryKey:["gallring-purge-pending"]}),r({title:"Radering bekräftad och utförd"})},onError:s=>{const a=s instanceof Error?s.message:"Okänt fel";r({title:"Kunde inte bekräfta",description:a,variant:"destructive"})}}),c=j({mutationFn:({id:s,reason:a})=>O(s,a),onSuccess:()=>{g.invalidateQueries({queryKey:["gallring-purge-pending"]}),r({title:"Begäran avslagen"}),t(null),x("")},onError:s=>{const a=s instanceof Error?s.message:"Okänt fel";r({title:"Kunde inte avslå",description:a,variant:"destructive"})}});return e.jsxs("div",{className:"container mx-auto p-6 max-w-5xl space-y-6",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs(n,{variant:"ghost",size:"sm",onClick:()=>v(-1),children:[e.jsx(w,{className:"h-4 w-4 mr-1"})," Tillbaka"]}),e.jsxs("h1",{className:"text-2xl font-semibold flex items-center gap-2",children:[e.jsx(p,{className:"h-6 w-6 text-destructive"}),"Gallrings-radering (4-ögon)"]})]}),e.jsxs(C,{children:[e.jsx(A,{className:"h-4 w-4"}),e.jsxs(D,{children:["Här bekräftas eller avslås begäran om ",e.jsx("strong",{children:"permanent radering"})," av journalanteckningar. Av integritetsskäl måste bekräftelsen göras av en",e.jsx("strong",{children:" annan person "})," än den som begärt raderingen (4-ögons-princip). När raderingen bekräftas kan den inte ångras."]})]}),f?e.jsx(d,{children:e.jsx(o,{className:"p-8 text-center text-muted-foreground",children:"Laddar…"})}):m.length===0?e.jsx(d,{children:e.jsx(o,{className:"p-8 text-center text-muted-foreground",children:"Inga raderingsbegäran väntar på granskning."})}):e.jsx("div",{className:"space-y-3",children:m.map(s=>e.jsxs(d,{className:"hover:shadow-md transition",children:[e.jsx(F,{className:"pb-3",children:e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(M,{className:"text-base",children:s.entry_title||"(Ingen titel)"}),e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground flex-wrap",children:[e.jsxs("span",{children:["Klient: ",e.jsx("strong",{children:s.client_name??"—"})]}),e.jsx("span",{children:"•"}),e.jsxs("span",{children:["Begärt av: ",s.requester_name??s.requested_by.slice(0,8)]})]})]}),e.jsxs("div",{className:"flex flex-col items-end gap-1",children:[e.jsx(P,{variant:"destructive",children:"Pending"}),e.jsxs("span",{className:"text-xs text-muted-foreground flex items-center gap-1",children:[e.jsx(R,{className:"h-3 w-3"}),B(new Date(s.requested_at),"d MMM yyyy HH:mm",{locale:q})]})]})]})}),e.jsxs(o,{className:"space-y-3",children:[e.jsxs("div",{className:"text-sm bg-muted/30 p-3 rounded",children:[e.jsx("div",{className:"text-xs uppercase text-muted-foreground mb-1",children:"Motivering"}),e.jsx("div",{className:"whitespace-pre-wrap",children:s.reason})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(n,{variant:"outline",size:"sm",onClick:()=>t(s),disabled:c.isPending,children:[e.jsx(T,{className:"h-4 w-4 mr-1"})," Avslå"]}),e.jsxs(n,{variant:"destructive",size:"sm",onClick:()=>{window.confirm("Bekräfta permanent radering. Detta kan inte ångras.")&&u.mutate(s.id)},disabled:u.isPending,children:[e.jsx(p,{className:"h-4 w-4 mr-1"})," Bekräfta radering"]})]})]})]},s.id))}),e.jsx(E,{open:!!i,onOpenChange:s=>!s&&t(null),children:e.jsxs(K,{children:[e.jsx(H,{children:e.jsx(L,{children:"Avslå raderingsbegäran"})}),e.jsxs("div",{className:"space-y-3 py-2",children:[e.jsx(Q,{htmlFor:"reject-reason",children:"Motivering (krävs)"}
1),e.jsx(S,{id:"reject-reason",value:l,onChange:s=>x(s.target.value),placeholder:"Förklara varför raderingen inte ska ske…",rows:4})]}),e.jsxs(_,{children:[e.jsx(n,{variant:"outline",onClick:()=>t(null),children:"Avbryt"}),e.jsx(n,{variant:"destructive",disabled:l.trim().length<5||c.isPending,onClick:()=>{i&&c.mutate({id:i.id,reason:l.trim()})},children:"Avslå begäran"})]})]})})]})}export{X as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.