1import{r as c,j as e,Z as M,a6 as R,ao as S,q as U}from"./index-Dx0k_FtW.js";import{S as T}from"./Skeleton-CQhlyycV.js";const V=[{id:"fullt_medlem",tekst:"Fullt medlem"},{id:"tilhorig",tekst:"Medlem"},{id:"kontakt",tekst:"Kontakt"}],D=[{id:"mini",tekst:"Mini (3â5)"},{id:"mega",tekst:"Mega (6â9)"},{id:"tweens",tekst:"Tweens (10â13)"},{id:"ungdom",tekst:"Ungdom (14â19)"},{id:"voksen",tekst:"Voksen (20+)"}],N="rounded-lg border border-line bg-surface-raised px-2.5 py-1.5 text-sm text-ink focus:outline-none focus:ring-2 focus:ring-link/40";function C({checked:a,onChange:r,tekst:d,hjelp:m}){return e.jsxs("label",{className:"flex items-start gap-3 py-2",children:[e.jsx("input",{type:"checkbox",checked:a,onChange:g=>r(g.target.checked),className:"mt-0.5 h-4 w-4 rounded border-line accent-[rgb(var(--c-primary))]"}),e.jsxs("span",{className:"min-w-0",children:[e.jsx("span",{className:"block text-sm text-ink",children:d}),m&&e.jsx("span",{className:"block text-xs text-ink-muted",children:m})]})]})}function A({valg:a,valgte:r,onEndre:d,etikett:m}){const g=i=>d(r.includes(i)?r.filter(h=>h!==i):[...r,i]);return e.jsxs("fieldset",{children:[e.jsx("legend",{className:"text-sm font-semibold text-ink mb-1",children:m}),e.jsx("div",{className:"flex flex-wrap gap-x-4 gap-y-1",children:a.map(i=>e.jsxs("label",{className:"flex items-center gap-1.5 text-sm text-ink",children:[e.jsx("input",{type:"checkbox",checked:r.includes(i.id),onChange:()=>g(i.id),className:"rounded border-line accent-[rgb(var(--c-primary))]"}),i.tekst]},i.id))})]})}function F({valgte:a,onEndre:r,onSessionExpired:d}){const[m,g]=c.useState(""),[i,h]=c.useState([]),[f,b]=c.useState({}),p=c.useRef(null);c.useEffect(()=>{const s=a.filter(x=>!f[x]);if(!s.length)return;const l=new AbortController;return Promise.all(s.map(x=>fetch(`/api/register/person?pid=${encodeURIComponent(x)}`,{credentials:"include",signal:l.signal}).then(o=>o.ok?o.json():null).then(o=>[x,o!=null&&o.person?`${o.person.fornavn} ${o.person.etternavn}`:"(ukjent)"]).catch(()=>[x,"(ukjent)"]))).then(x=>b(o=>({...o,...Object.fromEntries(x)}))),()=>l.abort()},[a,f]),c.useEffect(()=>{if(clearTimeout(p.current),!m.trim()){h([]);return}const s=new AbortController;return p.current=setTimeout(()=>{fetch(`/api/register/personer?sok=${encodeURIComponent(m.trim())}`,{credentials:"include",signal:s.signal}).then(l=>(l.status===401&&(d==null||d()),l.ok?l.json():null)).then(l=>h(((l==null?void 0:l.personer)||[]).slice(0,8))).catch(()=>{})},250),()=>{clearTimeout(p.current),s.abort()}},[m,d]);const j=s=>{a.includes(s.pid)||r([...a,s.pid]),b(l=>({...l,[s.pid]:`${s.fornavn} ${s.etternavn}`})),g(""),h([])};return e.jsxs("div",{className:"space-y-2",children:[a.length>0&&e.jsx("ul",{className:"flex flex-wrap gap-1.5",children:a.map(s=>e.jsxs("li",{className:"flex items-center gap-1 rounded-full bg-primary/10 pl-2.5 pr-1 py-0.5 text-xs font-semibold text-link",children:[f[s]||"â¦",e.jsx("button",{type:"button",onClick:()=>r(a.filter(l=>l!==s)),"aria-label":`Fjern ${f[s]||"personen"} fra unntakslista`,className:"rounded-full p-0.5 hover:bg-primary/20",children:e.jsx(U,{className:"w-3.5 h-3.5","aria-hidden":"true"})})]},s))}),e.jsxs("div",{className:"relative max-w-sm",children:[e.jsx("input",{type:"search",value:m,onChange:s=>g(s.target.value),placeholder:"Legg til person â¦","aria-label":"Søk etter person Ã¥ legge til",className:`${N} w-full`}),i.length>0&&e.jsx("ul",{className:"absolute z-10 mt-1 w-full rounded-lg border border-line bg-surface-raised p-1 shadow-lg",children:i.map(s=>e.jsx("li",{children:e.jsxs("button",{type:"button",onClick:()=>j(s),className:"w-full rounded px-2 py-1.5 text-left text-sm text-ink hover:bg-surface-hover",children:[s.fornavn," ",s.etternavn]})},s.pid))})]})]})}function L({onSessionExpired:a}){const[r,d]=c.useState(null),[m,g]=c.useState(null),[i,h]=c.useState(null),[f,b]=c.useState(0),[p,j]=c.useState("laster"),[s,l]=c.useState(""),[x,o]=c.useState(!1),[$,y]=c.useState(!1);c.useEffect(()=>{const t=new AbortController;return fetch("/api/register/innstillinger",{credentials:"include",signal:t.signal}).then(n=>n.status===401?(a==null||a(),null):n.json().then(k=>({ok:n.ok,k}))).then(n=>{var k,v;if(n){if(!n.ok){l(((k=n.k)==null?void 0:k.error)||"Kunne ikke hente innstillingene."),j("feil");return}
1d(n.k.kartotek),g(n.k.kartotek),h(((v=n.k.forhandsvisning)==null?void 0:v.antall)??null),b(Number(n.k.sagtJaUtenVisning)||0),j("klar")}}).catch(n=>{n.name!=="AbortError"&&(l("Kunne ikke hente innstillingene."),j("feil"))}),()=>t.abort()},[a]);const u=(t,n)=>{y(!1),d(k=>({...k,[t]:n}))},w=r&&m&&JSON.stringify(r)!==JSON.stringify(m),K=t=>{t.preventDefault(),o(!0),l(""),y(!1),fetch("/api/register/innstillinger",{method:"PUT",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({kartotek:r})}).then(n=>n.status===401?(a==null||a(),null):n.json().then(k=>({ok:n.ok,k}))).then(n=>{var k,v;if(n){if(!n.ok){l(((k=n.k)==null?void 0:k.error)||"Kunne ikke lagre.");return}d(n.k.kartotek),g(n.k.kartotek),h(((v=n.k.forhandsvisning)==null?void 0:v.antall)??null),b(Number(n.k.sagtJaUtenVisning)||0),y(!0)}}).catch(()=>l("Kunne ikke lagre.")).finally(()=>o(!1))};return p==="laster"?e.jsx(T,{className:"h-64 w-full max-w-3xl rounded-xl"}):p==="feil"?e.jsx("p",{className:"text-sm text-warning py-8 text-center",children:s}):e.jsxs("form",{onSubmit:K,className:"space-y-5 max-w-3xl",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-lg font-bold text-ink flex items-center gap-2",children:[e.jsx(M,{className:"w-5 h-5 text-link","aria-hidden":"true"}),"Personregister"]}),e.jsx("p",{className:"text-sm text-ink-muted mt-1",children:"Reglene for medlemskartoteket â lista medlemmene selv fÃ¥r se i medlemsportalen. Ingen andre deler av registeret pÃ¥virkes."})]}),e.jsxs("section",{className:"rounded-xl border border-line bg-surface-raised p-4 space-y-3",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsx("h3",{className:"text-sm font-bold text-ink",children:"Medlemskartotek"}),e.jsxs("label",{className:"inline-flex items-center gap-2 text-sm font-semibold text-ink",children:[e.jsx("input",{type:"checkbox",checked:r.aktiv,onChange:t=>u("aktiv",t.target.checked),className:"h-4 w-4 accent-[rgb(var(--c-primary))]"}),"Aktivt"]})]}),e.jsxs("label",{className:"block space-y-1 max-w-sm",children:[e.jsx("span",{className:"text-xs text-ink-muted",children:"Navn slik medlemmene ser det"}),e.jsx("input",{className:`${N} w-full`,value:r.navn,maxLength:60,onChange:t=>u("navn",t.target.value)})]}),e.jsxs("div",{className:"grid gap-3 sm:grid-cols-3",children:[e.jsxs("label",{className:"block space-y-1",children:[e.jsx("span",{className:"text-xs text-ink-muted",children:"Visning"}),e.jsxs("select",{className:`${N} w-full`,value:r.visning,onChange:t=>u("visning",t.target.value),children:[e.jsx("option",{value:"individer",children:"Kun enkeltpersoner"}),e.jsx("option",{value:"familier",children:"Kun familier"}),e.jsx("option",{value:"begge",children:"Begge"})]})]}),e.jsxs("label",{className:"block space-y-1",children:[e.jsx("span",{className:"text-xs text-ink-muted",children:"Sortering"}),e.jsxs("select",{className:`${N} w-full`,value:r.sortering,onChange:t=>u("sortering",t.target.value),children:[e.jsx("option",{value:"fornavn",children:"Fornavn"}),e.jsx("option",{value:"etternavn",children:"Etternavn"})]})]}),e.jsxs("label",{className:"block space-y-1",children:[e.jsx("span",{className:"text-xs text-ink-muted",children:"Navneformat"}),e.jsxs("select",{className:`${N} w-full`,value:r.navnformat,onChange:t=>u("navnformat",t.target.value),children:[e.jsx("option",{value:"foretrukket",children:"Fornavn og etternavn"}),e.jsx("option",{value:"fullt",children:"Fullt navn"})]})]})]}),e.jsx(C,{checked:r.visAlleVedApning,onChange:t=>u("visAlleVedApning",t),tekst:"Vis hele lista nÃ¥r kartoteket Ã¥pnes",hjelp:"Ellers mÃ¥ man søke for Ã¥ se noen."})]}),e.jsxs("section",{className:"rounded-xl border border-line bg-surface-raised p-4 space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-bold text-ink",children:"Hvem stÃ¥r i kartoteket"}),e.jsx("p",{className:"text-xs text-ink-muted mt-0.5",children:"Alle vilkÃ¥rene mÃ¥ være oppfylt. Arkiverte og avdøde er aldri med."})]}),e.jsx(A,{etikett:"Ekskluder personkategori",valg:V,valgte:r.ekskluderKategorier,onEndre:t=>u("ekskluderKategorier",t)}),e.jsx(A,{etikett:"Ekskluder demografi",valg:D,valgte:r.ekskluderDemografi,onEndre:t=>u("ekskluderDemografi",t)}),e.jsx(C,{checked:r.kreverSamtykke,onChange:t=>u("kreverSamtykke",t),tekst:"Personen selv mÃ¥ godkjenne Ã¥ bli lagt til",hjelp:"Samtykket «medlemsliste» mÃ¥ være gitt â i medlemsportalen, eller registrert av registeransvarlig."}),e.jsx(C,{checked:r.nyeAutomatisk,onChange:t=>u("nyeAutomatisk",t),tekst:"Nye personer legges til automatisk",hjelp:"Ellers mÃ¥ «vis i medlemskartoteket» skrus pÃ¥ for hver ny person."}),!r.kreverSamtykke&&e.jsxs("p",{className:"flex items-start gap-2 text-xs text-ink rounded-lg border border-line bg-surface p-2.5",children:[e.jsx(R,{className:"w-4 h-4 shrink-0 mt-0.5 text-warning","aria-hidden":"true"}),e.jsx("span",{children:"Uten samtykkekrav vises personer som ikke har tatt stilling. Det er lovlig for medlemmer i eget trossamfunn, men DPIA-en (punkt 9) ber eldsterÃ¥det ta beslutningen uttrykkelig."})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-semibold text-ink mb-1",children:"Personer som alltid inkluderes"}),e.jsx("p",{className:"text-xs text-ink-muted mb-2",children:"Unntakslista gÃ¥r foran alle reglene over â bortsett fra at personen mÃ¥ være aktiv."}),e.jsx(F,{valgte:r.alltidMed,onEndre:t=>u("alltidMed",t),onSessionExpired:a})]})]}),f>0&&e.jsxs("div",{"data-testid":"kartotek-avvik",className:"rounded-xl border border-amber-300 bg-amber-50 p-4 text-sm text-amber-950 dar
1k:border-amber-500/40 dark:bg-amber-500/10 dark:text-amber-100",children:[e.jsxs("p",{className:"font-semibold",children:[f," ",f===1?"person har":"personer har"," sagt ja til kartoteket uten Ã¥ vises"]}),e.jsx("p",{className:"mt-1 leading-relaxed",children:"De har svart ja pÃ¥ Min side, men «Med i medlemskartoteket» er ikke slÃ¥tt pÃ¥ for dem pÃ¥ personkortet. De ser nÃ¥ selv at navnet ikke vises ennÃ¥. SlÃ¥ pÃ¥ visningen under Rediger pÃ¥ personkortet, eller la det stÃ¥ â valget er deres."})]}),e.jsxs("div",{className:"rounded-xl border border-line bg-surface p-4 flex flex-wrap items-center justify-between gap-3",children:[e.jsx("p",{className:"text-sm text-ink",children:i===null?"â¦":e.jsxs(e.Fragment,{children:["Med reglene som er lagret stÃ¥r"," ",e.jsx("strong",{className:"tabular-nums",children:i})," ",i===1?"person":"personer"," i kartoteket",w&&e.jsx("span",{className:"text-ink-muted",children:" â lagre for Ã¥ se det nye tallet"}),"."]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[$&&!w&&e.jsxs("span",{className:"flex items-center gap-1 text-sm text-ink-muted",children:[e.jsx(S,{className:"w-4 h-4 text-link","aria-hidden":"true"})," Lagret"]}),s&&e.jsx("span",{className:"text-sm text-warning",children:s}),e.jsx("button",{type:"submit",disabled:!w||x,className:"rounded-lg bg-link px-4 py-1.5 text-sm font-medium text-white hover:bg-link/90 disabled:opacity-50",children:x?"Lagrer â¦":"Lagre"})]})]})]})}export{L 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.