2 lines
10 KiB
JavaScript
2 lines
10 KiB
JavaScript
import{d as Q,n as l,c as n,b as o,F as L,E as R,t as c,e as r,av as C,i as M,_ as ae,f as u,w as X,v as se,aw as te,ax as le,h as ee,C as oe,X as ne,r as _,x as k,ay as ie,ae as re,q as ue,U as Y,o as ce,j as $,al as F,ap as H,T as de,ar as ve,s as G,p as z,at as me,a1 as pe,g as ye,az as _e,aA as W,A as fe,aB as he,l as ke,m as be}from"./index-07rBQy2o.js";import{_ as we}from"./PageHead.vue_vue_type_script_setup_true_lang-CyicA48G.js";import{_ as ge}from"./LoadState.vue_vue_type_script_setup_true_lang-RALZBY22.js";import{u as $e,_ as ze,r as Me}from"./markdown-B9-JrJPa.js";import{b as J,c as Ve}from"./materialListCache-BfbyTsY4.js";import{s as Ce}from"./safeText-O-oWGdGq.js";const xe={class:"field"},Te={key:0,class:"share-chips","aria-label":"Udostępniono"},Ue=["title"],Be=["aria-label","onClick"],je=["aria-expanded","aria-activedescendant","placeholder"],Le={key:0,class:"share-option share-empty",role:"option","aria-disabled":"true","aria-selected":"false"},Ae=["id","aria-selected","onMousedown","onMousemove"],Ie={class:"share-option-name"},Ne={key:0,class:"share-option-email"},De={key:0,class:"muted small share-none"},Ee={class:"sr-only",role:"status","aria-live":"polite"},Se=Q({__name:"ShareUserInput",props:{users:{},modelValue:{}},emits:["update:modelValue"],setup(A,{emit:I}){const d=A,x=I,N=ne(),t=`${N}-input`,b=`${N}-list`,y=_(null),m=k(()=>new Map(d.users.map(e=>[e.id,e]))),p=k(()=>d.modelValue.map(e=>m.value.get(e)).filter(e=>!!e)),{query:v,open:f,active:w,announcement:D,suggestions:E,activeId:S,optionId:P,announce:V,onInput:K,onKeydown:T,close:U,hover:B,reset:Z}=$e({listId:b,suggest:e=>ie(d.users,e,d.modelValue,8),onPick:j,onBackspace:()=>{const e=p.value[p.value.length-1];e&&q(e)}}),O=k(()=>{const e=v.value.trim();return d.users.length&&e?`Nikt nie pasuje do „${e}”.`:"Brak innych osób."});function j(e){d.modelValue.includes(e.id)||(x("update:modelValue",[...d.modelValue,e.id]),Z(),V(`Dodano: ${C(e)}`))}function q(e){x("update:modelValue",d.modelValue.filter(i=>i!==e.id)),V(`Usunięto: ${C(e)}`),y.value?.focus()}function s(e){const i=e.target;(i===e.currentTarget||i.classList.contains("share-chips"))&&y.value?.focus()}return(e,i)=>(l(),n("div",xe,[o("label",{for:t},"Udostępnij osobom"),o("div",{class:"share-field",onClick:s},[p.value.length?(l(),n("ul",Te,[(l(!0),n(L,null,R(p.value,a=>(l(),n("li",{key:a.id,class:"share-chip"},[o("span",{class:"share-chip-label",title:a.email},c(r(C)(a)),9,Ue),o("button",{class:"share-chip-remove",type:"button","aria-label":`Usuń ${r(C)(a)}`,onClick:h=>q(a)},[M(ae,{name:"close"})],8,Be)]))),128))])):u("",!0),X(o("input",{id:t,ref_key:"input",ref:y,"onUpdate:modelValue":i[0]||(i[0]=a=>te(v)?v.value=a:null),class:"share-input",type:"text",role:"combobox","aria-autocomplete":"list","aria-expanded":r(f)?"true":"false","aria-controls":b,"aria-activedescendant":r(S),autocomplete:"off",enterkeyhint:"done",placeholder:r(v)?void 0:"Imię, nazwisko lub e-mail",onInput:i[1]||(i[1]=(...a)=>r(K)&&r(K)(...a)),onKeydown:i[2]||(i[2]=(...a)=>r(T)&&r(T)(...a)),onBlur:i[3]||(i[3]=(...a)=>r(U)&&r(U)(...a))},null,40,je),[[se,r(v)]]),X(o("ul",{id:b,class:"share-pop",role:"listbox","aria-label":"Pasujące osoby"},[r(E).length?u("",!0):(l(),n("li",Le,c(O.value),1)),(l(!0),n(L,null,R(r(E),(a,h)=>(l(),n("li",{id:r(P)(h),key:a.id,class:oe(["share-option",{active:h===r(w)}]),role:"option","aria-selected":h===r(w)?"true":"false",onMousedown:ee(g=>j(a),["prevent"]),onMousemove:g=>r(B)(h)},[o("span",Ie,c(r(C)(a)),1),r(C)(a)!==a.email?(l(),n("span",Ne,c(a.email),1)):u("",!0)],42,Ae))),128))],512),[[le,r(f)]])]),A.modelValue.length?u("",!0):(l(),n("p",De,"Nikomu nie udostępniono.")),o("span",Ee,c(r(D)),1)]))}}),Pe=["href"],Ke={class:"muted small"},qe={key:1},Fe={key:2},He={key:3},Re={key:0},Ze={class:"btn-row material-actions"},Oe=["href"],We={key:1,class:"btn-row author-actions"},Xe=["href","onClick"],Ye=["innerHTML"],Ge={key:3,class:"section","aria-labelledby":"files-h"},Je={class:"rows"},Qe=["href","download"],ea={class:"when"},aa={key:4,class:"section no-print","aria-labelledby":"access-h"},sa={class:"card"},ta={key:0,class:"notice error",role:"alert"},la={key:1,class:"skeleton","aria-busy":"true"},oa={class:"check"},na={class:"muted small"},ia={key:0,class:"muted small"},ra={class:"btn-row"},ua=["disabled"],ca={key:0,class:"muted small"},da={key:1,class:"muted small",role:"status"},va={key:1,class:"notice error",role:"alert"},ka=Q({__name:"MaterialView",props:{id:{}},setup(A){const I=A,d=be(),x=re(),N=ue(),t=_(null),b=_(""),y=_(null),m=_(""),p=_(""),v=_(!1),f=_([]),w=_(!1);function D(s){y.value=s,v.value=s.is_private,f.value=_e(s.shares).map(e=>e.id)}const E=k(()=>{const s=y.value;if(!s)return[];const e=new Set(s.users.map(i=>i.id));return[...s.users,...s.shares.filter(i=>!e.has(i.id))]}),S=k(()=>{const s=y.value;if(!s)return!1;const e=W(v.value,f.value),i=W(s.is_private,s.shares.map(a=>a.id));return e.is_private!==i.is_private||e.user_ids.join(",")!==i.user_ids.join(",")});Y(S,s=>{s&&(p.value="")});async function P(s){m.value="";try{D(await F.materialAccess(s))}catch(e){m.value=H(e)}}async function V(){t.value=null,b.value="",y.value=null,p.value="",m.value="",x.loadMeetings();try{t.value=await F.material(Number(I.id))}catch(s){b.value=H(s);return}t.value.can_manage&&await P(t.value.id)}async function K(){const s=t.value;if(!(!s||w.value)){w.value=!0,p.value="",m.value="";try{const e=await F.saveMaterialAccess(s.id,W(v.value,f.value));if(t.value!==s)return;D(e),s.is_private=e.is_private,p.value="Zapisano."}catch(e){m.value=H(e)}finally{w.value=!1}}}ce(V),Y(()=>I.id,V);const T=k(()=>Me(t.value?.body)),U=k(()=>t.value?.url?Ce(t.value.url):null),B=k(()=>{const s=t.value?.meeting_id;return s==null?null:(x.meetings??[]).find(e=>e.id===s)??null});function Z(s){s.defaultPrevented||s.button!==0||s.metaKey||s.ctrlKey||s.shiftKey||s.altKey||(s.preventDefault(),J(window.history.state?.back,e=>d.resolve(e).name)?d.back():d.push("/materialy"))}function O(){window.print()}const j=_(null);async function q(s){const e=t.value,i=j.value;if(!e||!i)return;let a=!1;await i.open({from:s.currentTarget instanceof HTMLElement?s.currentTarget:null,action:async()=>{try{await F.unpublishMaterial(e.id)}catch(g){if(g instanceof fe&&g.status===404){a=!0;return}throw new Error(`Nie udało się usunąć: ${he(H(g))}.`)}}})==="confirm"&&(Ve(),N.show(a?"Tego materiału już nie ma w Materiałach.":"Materiał przeniesiony do szkiców."),J(window.history.state?.back,g=>d.resolve(g).name)?d.back():d.replace("/materialy"))}return(s,e)=>{const i=ke("router-link");return l(),n("div",null,[M(ge,{ready:!!t.value,error:b.value,onRetry:e[3]||(e[3]=a=>V())},{default:$(()=>[t.value?(l(),n(L,{key:0},[M(we,{eyebrow:`${r(de)[t.value.type]}${t.value.published_at?" · "+r(ve)(t.value.published_at):""}`,title:t.value.title},{default:$(()=>[M(i,{to:"/materialy",custom:""},{default:$(({href:a})=>[o("a",{class:"btn small ghost",href:a,onClick:Z},"← Materiały",8,Pe)]),_:1})]),_:1},8,["eyebrow","title"]),o("p",Ke,[t.value.course?(l(),G(i,{key:0,to:`/przedmioty/${t.value.course.id}`},{default:$(()=>[z(c(t.value.course.name),1)]),_:1},8,["to"])):u("",!0),B.value?(l(),n("span",qe,[e[4]||(e[4]=z(" · ",-1)),M(i,{to:`/plan?zjazd=${B.value.number}`},{default:$(()=>[z(c(r(me)(B.value)),1)]),_:1},8,["to"])])):u("",!0),t.value.source?(l(),n("span",Fe," · "+c(t.value.source),1)):u("",!0),t.value.is_private?(l(),n("span",He,[...e[5]||(e[5]=[z(" · ",-1),o("span",{class:"badge alert"},"prywatny",-1)])])):u("",!0)]),t.value.tags.length?(l(),n("p",Re,[(l(!0),n(L,null,R(t.value.tags,a=>(l(),n("span",{key:a.id,class:"badge",style:{"margin-right":"4px"}},c(a.name),1))),128))])):u("",!0),o("div",Ze,[U.value?(l(),n("a",{key:0,class:"btn small",href:U.value,target:"_blank",rel:"noopener noreferrer"},"Otwórz link",8,Oe)):u("",!0),o("button",{class:"btn small",type:"button",onClick:O},"Drukuj"),t.value.can_manage?(l(),n("span",We,[M(i,{to:`/materialy/${t.value.id}/edytuj`,custom:""},{default:$(({href:a,navigate:h})=>[o("a",{class:"btn small",href:a,onClick:h},"Edytuj",8,Xe)]),_:1},8,["to"]),o("button",{class:"btn small miss",type:"button",onClick:q},"Usuń")])):u("",!0)]),t.value.can_manage?(l(),G(ze,{key:1,ref_key:"removeDialog",ref:j,tone:"danger",title:"Usunąć materiał?","confirm-label":"Usuń materiał","cancel-label":"Zostaw materiał"},{default:$(()=>[z(" „"+c(t.value.title)+"” zniknie z Materiałów u wszystkich, także u Ciebie. Trafi do szkiców: przywrócisz go w /bmadmin albo przez ",1),e[6]||(e[6]=o("code",null,"bm-notatka push",-1)),e[7]||(e[7]=z(". ",-1))]),_:1},512)):u("",!0),T.value?(l(),n("div",{key:2,class:"prose card",innerHTML:T.value},null,8,Ye)):u("",!0),t.value.files.length?(l(),n("section",Ge,[e[8]||(e[8]=o("div",{class:"section-head"},[o("h2",{id:"files-h"},"Pliki")],-1)),o("ul",Je,[(l(!0),n(L,null,R(t.value.files,a=>(l(),n("li",{key:a.id,class:"row-main"},[o("a",{href:a.url,download:a.name},c(a.name),9,Qe),o("span",ea,c(r(pe)(a.size)),1)]))),128))])])):u("",!0),t.value.can_manage?(l(),n("section",aa,[e[10]||(e[10]=o("div",{class:"section-head"},[o("h2",{id:"access-h"},"Dostęp")],-1)),o("div",sa,[m.value&&!y.value?(l(),n("div",ta,[z(c(m.value)+" ",1),o("button",{class:"linkish",type:"button",onClick:e[0]||(e[0]=a=>P(t.value.id))},"Spróbuj ponownie")])):y.value?(l(),n("form",{key:2,onSubmit:ee(K,["prevent"])},[o("label",oa,[X(o("input",{"onUpdate:modelValue":e[1]||(e[1]=a=>v.value=a),type:"checkbox"},null,512),[[ye,v.value]]),e[9]||(e[9]=o("span",null,"Materiał prywatny",-1))]),o("p",na,c(v.value?"Widzisz go tylko Ty i osoby, którym go udostępnisz.":"Materiał publiczny: widzą go wszyscy."),1),M(Se,{modelValue:f.value,"onUpdate:modelValue":e[2]||(e[2]=a=>f.value=a),users:E.value},null,8,["modelValue","users"]),v.value?u("",!0):(l(),n("p",ia,"Udostępnienie działa, gdy materiał jest prywatny.")),o("div",ra,[o("button",{class:"btn small",type:"submit",disabled:w.value},"Zapisz dostęp",8,ua),S.value?(l(),n("span",ca,"Niezapisane zmiany.")):p.value?(l(),n("span",da,c(p.value),1)):u("",!0)]),m.value?(l(),n("div",va,c(m.value),1)):u("",!0)],32)):(l(),n("div",la))])])):u("",!0)],64)):u("",!0)]),_:1},8,["ready","error"])])}}});export{ka as default};
|