// панель «Эпики» бэклога и её узкий вариант — выбор «Эпик» (spec web-app); оба только меняют фильтр, Jira не трогают import { Select } from "../../../ui/index.ts"; import { NONE, type EpicEntry } from "./filters.ts"; interface Props { entries: EpicEntry[]; value: string; onChange(v: string): void; hideDone: boolean } // выполненные скрываются при «Скрыть выполненные», кроме выбранного; выбранный, которого нет в данных, остаётся пунктом по ключу function listed({ entries, value, hideDone }: Pick): EpicEntry[] { const list = entries.filter((e) => !(hideDone && e.done && e.key !== value)); if (value && value !== NONE && !entries.some((e) => e.key === value)) list.push({ key: value, title: value, count: 0, done: false }); return list; } export function EpicsPanel(props: Props) { const { value, onChange } = props; const item = (v: string, title: string, key?: string, count?: number) => (
  • ); return ( ); } // forced — панель «Эпики» скрыта, а выбранный эпик должен оставаться виден и снимаем (M-3) export function EpicSelect(props: Props & { forced?: boolean }) { return ( ); }