FPSMS-frontend
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 

52 rindas
1.6 KiB

  1. "use client";
  2. import { useState, useEffect } from "react";
  3. import Tab from "@mui/material/Tab";
  4. import Tabs from "@mui/material/Tabs";
  5. import { useTranslation } from "react-i18next";
  6. import { useRouter, useSearchParams } from "next/navigation";
  7. type EquipmentTabsProps = {
  8. onTabChange?: (tabIndex: number) => void;
  9. };
  10. const EquipmentTabs: React.FC<EquipmentTabsProps> = ({ onTabChange }) => {
  11. const router = useRouter();
  12. const searchParams = useSearchParams();
  13. const { t } = useTranslation("common");
  14. const tabFromUrl = searchParams.get("tab");
  15. const initialTabIndex = tabFromUrl ? parseInt(tabFromUrl, 10) : 0;
  16. const [tabIndex, setTabIndex] = useState(initialTabIndex);
  17. useEffect(() => {
  18. const tabFromUrl = searchParams.get("tab");
  19. const newTabIndex = tabFromUrl ? parseInt(tabFromUrl, 10) : 0;
  20. if (newTabIndex !== tabIndex) {
  21. setTabIndex(newTabIndex);
  22. onTabChange?.(newTabIndex);
  23. }
  24. }, [searchParams, tabIndex, onTabChange]);
  25. const handleTabChange = (_e: React.SyntheticEvent, newValue: number) => {
  26. setTabIndex(newValue);
  27. onTabChange?.(newValue);
  28. const params = new URLSearchParams(searchParams.toString());
  29. if (newValue === 0) {
  30. params.delete("tab");
  31. } else {
  32. params.set("tab", newValue.toString());
  33. }
  34. router.push(`/settings/equipment?${params.toString()}`, { scroll: false });
  35. };
  36. return (
  37. <Tabs value={tabIndex} onChange={handleTabChange}>
  38. <Tab label={t("General Data")} />
  39. <Tab label={t("Repair and Maintenance")} />
  40. </Tabs>
  41. );
  42. };
  43. export default EquipmentTabs;