/* global React, HData */ const { CATEGORIES: CATS_T, COURSES: COURSES_T } = window.HData; function CoursesTable() { const [filter, setFilter] = React.useState("all"); const [lightbox, setLightbox] = React.useState(null); const list = filter === "all" ? COURSES_T : COURSES_T.filter(c => c.cat === filter); const catBy = (id) => CATS_T.find(c => c.id === id); React.useEffect(() => { if (!lightbox) return undefined; const onKey = (e) => { if (e.key === "Escape") setLightbox(null); }; document.body.style.overflow = "hidden"; window.addEventListener("keydown", onKey); return () => { document.body.style.overflow = ""; window.removeEventListener("keydown", onKey); }; }, [lightbox]); return (
10 PROGRAMS

全10講座一覧

講座ごとに「対象」「構成」「成果物」を明記しています。 実施形式(時間・形式)は講座ごとに異なります。複数講座の組合せも可能です。

CATEGORY {CATS_T.map(c => { const n = COURSES_T.filter(x => x.cat === c.id).length; return ( ); })}
{list.map(c => { const cat = catBy(c.cat); const isOnlineOnly = c.format.includes("オンライン限定"); const isOfflineOnly = c.format.includes("対面のみ"); return ( ); })}
No 区分 講座タイトル 時間・形式 対象・構成・成果物
{String(c.no).padStart(2, "0")} {cat.code} {cat.label}
{c.title}
{c.sub}
{c.duration}
{isOnlineOnly && オンライン限定} {isOfflineOnly && 対面のみ} {!isOnlineOnly && !isOfflineOnly && 対面・オンライン}
{c.capacity}
対象 {c.target}
構成 {c.structure.map((row, i) => ( {row[0]}{row[1]} ))}
成果物 {c.deliverable}
気になる講座について相談する
{lightbox && (
setLightbox(null)}>
e.stopPropagation()}> {lightbox.alt}
{lightbox.title}
{lightbox.sub}
)}
); } window.HCT = { CoursesTable };