ConceptPortal-public/rsconcept/frontend/src/pages/ManualsPage/TopicsStatic.tsx

40 lines
1.2 KiB
TypeScript
Raw Normal View History

2024-05-14 19:16:04 +03:00
import clsx from 'clsx';
2024-05-20 17:45:37 +03:00
import SelectTree from '@/components/ui/SelectTree';
2024-05-14 19:16:04 +03:00
import { useConceptOptions } from '@/context/OptionsContext';
2024-05-20 17:45:37 +03:00
import { HelpTopic, topicParent } from '@/models/miscellaneous';
import { prefixes } from '@/utils/constants';
import { describeHelpTopic, labelHelpTopic } from '@/utils/labels';
2024-05-14 19:16:04 +03:00
interface TopicsStaticProps {
activeTopic: HelpTopic;
onChangeTopic: (newTopic: HelpTopic) => void;
}
2024-05-16 16:05:39 +03:00
function TopicsStatic({ activeTopic, onChangeTopic }: TopicsStaticProps) {
2024-05-14 19:16:04 +03:00
const { calculateHeight } = useConceptOptions();
return (
2024-05-20 17:45:37 +03:00
<SelectTree
items={Object.values(HelpTopic).map(item => item as HelpTopic)}
value={activeTopic}
setValue={onChangeTopic}
prefix={prefixes.topic_list}
getParent={item => topicParent.get(item) ?? item}
getLabel={labelHelpTopic}
getDescription={describeHelpTopic}
2024-05-14 19:16:04 +03:00
className={clsx(
'sticky top-0 left-0',
2024-05-15 02:51:50 +03:00
'w-[14.5rem] cc-scroll-y',
2024-05-14 19:16:04 +03:00
'self-start',
'border divide-y rounded-none',
'clr-controls',
'text-xs sm:text-sm',
'select-none'
)}
style={{ maxHeight: calculateHeight('2.25rem + 2px') }}
2024-05-20 17:45:37 +03:00
/>
2024-05-14 19:16:04 +03:00
);
}
export default TopicsStatic;