1import{j as e}from"./vendor-query-gPAv4kG9.js";import{r,L as Q}from"./vendor-router-SMAsTmJe.js";import{P as q}from"./PageHero-BC8ltVcW.js";import{P as G,b as J}from"./portalUi-C6VPW8nK.js";import{B as n}from"./button-BrxAmvFc.js";import{I as K}from"./input-ChzWkteg.js";import{L as j}from"./label-DoPQhuAW.js";import{T as U,a as W,b as S,c as d,d as X,e as l}from"./table-BgEqzetb.js";import{B as R}from"./badge-BOKO3EAw.js";import{S as D,a as C,b as k,c as A,d as f}from"./select-Ci1rDg5A.js";import{T as Y}from"./textarea-Do7fnwnU.js";import{a as m}from"./research-DLMU4EX0.js";import{t as c}from"./index-BDx-g-7z.js";import{a5 as Z,ae as I,z as _,ah as $,g as ee}from"./vendor-icons-JBeLBwXY.js";import"./card-BC1CEkkP.js";import"./index-DpSZzw0i.js";import"./vendor-charts-B4fFN5bu.js";import"./useButton-P_ddH9pg.js";import"./useControlled-lAQ7N31z.js";import"./shadowDom-CzgMMIxu.js";import"./useRegisterFieldControl-B-9cYP8N.js";import"./createBaseUIEventDetails-BfMLEA8z.js";import"./useValueChanged-DU1FSvht.js";import"./InternalBackdrop-CnQ8qLt9.js";import"./inertValue-LcK7JeeQ.js";import"./useTimeout-B8K00sz9.js";import"./useTransitionStatus-CXPuUWyO.js";import"./vendor-editor-Dd7j_QQv.js";import"./FormContext-ExGWyewt.js";import"./ToolbarRootContext-DODNiTC2.js";import"./DirectionContext-BIXvVrWS.js";import"./vendor-state-D5Aada9y.js";import"./vendor-http-BOeqtr82.js";function Ee(){const[z,b]=r.useState(!0),[g,L]=r.useState([]),[v,T]=r.useState([]),[p,E]=r.useState(""),[F,o]=r.useState(!1),[N,w]=r.useState(!1),[s,y]=r.useState(null),[i,h]=r.useState({branchId:"",description:"",isActive:!0});r.useEffect(()=>{x()},[]);const x=async()=>{b(!0);try{const t=await m.getResearchDepartments();L(t?.data||[])}catch{c.error("Failed to load designated research departments.")}finally{b(!1)}},P=async()=>{try{const t=await m.getResearchDepartmentCandidates();T(t?.data||[])}catch{c.error("Failed to load candidate departments.")}},B=()=>{y(null),h({branchId:"",description:"",isActive:!0}),P(),o(!0)},H=t=>{y(t),h({branchId:String(t.branchId),description:t.description||"",isActive:t.isActive}),o(!0)},O=async t=>{if(window.confirm("Are you sure you want to deregister this department as a Research Department? This will remove it from the Research & Innovation page."))try{await m.deleteResearchDepartment(t),c.success("Department deregistered successfully."),x()}catch{c.error("Failed to deregister department.")}},M=async t=>{if(t.preventDefault(),!s&&!i.branchId){c.error("Please select a department.");return}w(!0);const a={branchId:Number(i.branchId),description:i.description,isActive:i.isActive};try{s?(await m.updateResearchDepartment(s.id,a),c.success("Research department details updated successfully.")):(await m.createResearchDepartment(a),c.success("Department registered as Research Department successfully.")),o(!1),x()}catch(V){c.error(V?.response?.data?.message||"Failed to save research department.")}finally{w(!1)}},u=g.filter(t=>(t.branchName||"").toLowerCase().includes(p.toLowerCase())||(t.shortName||"").toLowerCase().includes(p.toLowerCase())||(t.description||"").toLowerCase().includes(p.toLowerCase()));return e.jsxs(G,{children:[e.jsx("div",{className:"mb-4 flex items-center gap-2",children:e.jsx(n,{variant:"ghost",size:"sm",asChild:!0,children:e.jsxs(Q,{to:"/admin/research",className:"flex items-center gap-1.5 text-xs",children:[e.jsx(Z,{className:"h-4 w-4"})," Back to Research Hub"]})})}),e.jsx(q,{title:"Research Departments Registry",description:"Designate which academic departments are listed on the public Research & Innovation page. Customize their descriptions and status.",badgeText:"Research Departments",icon:I,action:e.jsxs(n,{onClick:B,className:"flex items-center gap-2 shadow-xs cursor-pointer",children:[e.jsx(I,{className:"h-4.5 w-4.5"})," Register Research Dept"]})}),e.jsxs("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between bg-white dark:bg-zinc-900 border border-slate-100 dark:border-zinc-800 p-4 rounded-2xl mb-6 shadow-xs",children:[e.jsxs("div",{className:"relative flex-1 max-w-md",children:[e.jsx(_,{className:"absolute left-3.5 to
1p-1/2 h-4 w-4 -translate-y-1/2 text-slate-400 dark:text-zinc-500"}),e.jsx(K,{placeholder:"Search by department name, code, or description...",value:p,onChange:t=>E(t.target.value),className:"pl-10"})]}),e.jsxs("div",{className:"text-xs text-slate-400 dark:text-zinc-500",children:["Showing ",u.length," of ",g.length," registered departments"]})]}),e.jsx("div",{className:"rounded-2xl border border-slate-100 dark:border-zinc-800 bg-white dark:bg-zinc-900 shadow-xs overflow-hidden",children:z?e.jsx("div",{className:"py-20 text-center text-sm text-slate-500",children:"Loading designated research departments..."}):u.length===0?e.jsx("div",{className:"py-20 text-center text-sm text-slate-500",children:"No research department records found matching your search."}):e.jsxs(U,{children:[e.jsx(W,{className:"bg-slate-50/50 dark:bg-zinc-950/20",children:e.jsxs(S,{children:[e.jsx(d,{children:"Department Name"}),e.jsx(d,{children:"Code"}),e.jsx(d,{children:"Research Description"}),e.jsx(d,{children:"HOD"}),e.jsx(d,{className:"text-center",children:"Status"}),e.jsx(d,{className:"text-right",children:"Actions"})]})}),e.jsx(X,{children:u.map(t=>e.jsxs(S,{children:[e.jsx(l,{className:"font-semibold text-slate-900 dark:text-zinc-150",children:t.branchName}),e.jsx(l,{children:e.jsx(R,{variant:"outline",children:t.shortName})}),e.jsx(l,{className:"max-w-xs truncate",title:t.description,children:t.description||e.jsx("span",{className:"text-slate-400 italic",children:"No custom description"})}),e.jsx(l,{children:e.jsxs("div",{className:"text-xs",children:[e.jsx("div",{className:"font-medium text-slate-800 dark:text-zinc-200",children:t.hodName}),e.jsx("div",{className:"text-[10px] text-slate-400",children:t.hodEmail})]})}),e.jsx(l,{className:"text-center",children:e.jsx(R,{variant:t.isActive?"default":"secondary",children:t.isActive?"Active":"Inactive"})}),e.jsx(l,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-1.5",children:[e.jsx(n,{variant:"outline",size:"icon",onClick:()=>H(t),title:"Edit",children:e.jsx($,{className:"h-4 w-4"})}),e.jsx(n,{variant:"destructive",size:"icon",onClick:()=>O(t.id),title:"Deregister",children:e.jsx(ee,{className:"h-4 w-4"})})]})})]},t.id))})]})}),F&&e.jsx(J,{onClose:()=>o(!1),title:s?"Edit Research Department Details":"Register Research Department",children:e.jsxs("form",{onSubmit:M,className:"space-y-5",children:[!s&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(j,{htmlFor:"branchId",children:"Select Department"}),e.jsxs(D,{value:i.branchId,onValueChange:t=>h(a=>({...a,branchId:t})),children:[e.jsx(C,{id:"branchId",children:e.jsx(k,{placeholder:"Choose an academic department..."})}),e.jsx(A,{children:v.map(t=>e.jsxs(f,{value:String(t.id),children:[t.name," (",t.shortName,")"]},t.id))})]}),v.length===0&&e.jsx("p",{className:"text-[11px] text-amber-500 font-medium",children:"All active academic departments are already registered."})]}),s&&e.jsxs("div",{className:"p-3 rounded-xl bg-slate-50 dark:bg-zinc-800/50 border border-slate-100 dark:border-zinc-800",children:[e.jsx("span",{className:"text-[10px] uppercase font-bold text-slate-400 tracking-wider",children:"Selected Department"}),e.jsxs("div",{className:"text-base font-bold text-slate-900 dark:text-zinc-150",children:[s.branchName," (",s.shortName,")"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(j,{htmlFor:"description",children:"Research Description (Optional Override)"}),e.jsx(Y,{id:"description",placeholder:"Briefly describe the research domains, key facilities, and focus areas of this department...",value:i.description,onChange:t=>h(a=>({...a,description:t.target.value})),rows:4}),e.jsx("p",{className:"text-[10px] text-slate-400",children:"Leave empty to fallback to the default department description in database."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(j,{htmlFor:"isActive",children:"Research Page Status"}),e.jsxs(D,{value:i.isActive?"true":"false",onValueChange:t=>h(a=>({...a,isActive:t==="true"})),children:[e.jsx(C,{id:"isActive",children:e.jsx(k,{})}),e.jsxs(A,{children:[e.jsx(f,{value:"true",children:"Active (Show on Research page)"}),e.jsx(f,{value:"false",children:"Inactive (Hide from Research page)"})]})]})]}),e.jsxs("div",{className:"flex justify-end gap-3 border-t border-slate-100 dar
1k:border-zinc-800 pt-4",children:[e.jsx(n,{type:"button",variant:"outline",onClick:()=>o(!1),children:"Cancel"}),e.jsx(n,{type:"submit",disabled:N||!s&&!i.branchId,children:N?"Saving...":"Save Configuration"})]})]})})]})}export{Ee 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.