snort/packages/app/src/Element/Tabs.tsx

43 lines
910 B
TypeScript
Raw Normal View History

import "./Tabs.css";
import useHorizontalScroll from "Hooks/useHorizontalScroll";
2023-02-06 21:42:47 +00:00
export interface Tab {
text: string;
value: number;
2023-02-08 21:10:26 +00:00
disabled?: boolean;
2023-03-28 14:34:01 +00:00
data?: string;
2023-02-06 21:42:47 +00:00
}
interface TabsProps {
tabs: Tab[];
tab: Tab;
setTab: (t: Tab) => void;
2023-02-06 21:42:47 +00:00
}
interface TabElementProps extends Omit<TabsProps, "tabs"> {
t: Tab;
2023-02-06 21:42:47 +00:00
}
2023-02-06 23:06:55 +00:00
export const TabElement = ({ t, tab, setTab }: TabElementProps) => {
return (
<div
2023-02-09 12:26:54 +00:00
className={`tab ${tab.value === t.value ? "active" : ""} ${t.disabled ? "disabled" : ""}`}
onClick={() => !t.disabled && setTab(t)}>
2023-02-06 21:42:47 +00:00
{t.text}
</div>
);
};
2023-02-06 21:42:47 +00:00
const Tabs = ({ tabs, tab, setTab }: TabsProps) => {
const horizontalScroll = useHorizontalScroll();
2023-02-06 21:42:47 +00:00
return (
<div className="tabs" ref={horizontalScroll}>
2023-02-09 12:26:54 +00:00
{tabs.map(t => (
<TabElement key={t.value} tab={tab} setTab={setTab} t={t} />
2023-02-08 21:10:26 +00:00
))}
2023-02-06 21:42:47 +00:00
</div>
);
};
2023-02-06 21:42:47 +00:00
export default Tabs;