FPSMS-frontend
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 

56 líneas
1.5 KiB

  1. "use client";
  2. import type { PoWorkbenchListRow } from "@/components/PoWorkbench/types";
  3. import Box from "@mui/material/Box";
  4. import PoWorkbenchDetailsHeaderSkeleton from "@/components/PoWorkbench/PoWorkbenchDetailsHeaderSkeleton";
  5. import WorkbenchResultSummary from "@/components/PoWorkbench/WorkbenchResultSummary";
  6. const DETAILS_HEADER_ROOT_SX = {
  7. flexShrink: 0,
  8. alignSelf: "stretch",
  9. display: "flex",
  10. flexDirection: "column",
  11. bgcolor: "background.paper",
  12. boxSizing: "border-box",
  13. } as const;
  14. const DETAILS_HEADER_CONTENT_SX = { px: 2, py: 1.5 } as const;
  15. export interface PoWorkbenchDetailsHeaderProps {
  16. row: PoWorkbenchListRow | null;
  17. /** First-page `/po/list` in flight; shows skeleton in this pane (list is cleared while loading). */
  18. isLoading?: boolean;
  19. }
  20. /** Top-right strip: summary for the selected PO (same typography as the results list). */
  21. export default function PoWorkbenchDetailsHeader({
  22. row,
  23. isLoading = false,
  24. }: PoWorkbenchDetailsHeaderProps) {
  25. if (isLoading) {
  26. return (
  27. <Box
  28. sx={DETAILS_HEADER_ROOT_SX}
  29. aria-busy="true"
  30. aria-label="Loading order summary"
  31. >
  32. <Box sx={DETAILS_HEADER_CONTENT_SX}>
  33. <PoWorkbenchDetailsHeaderSkeleton />
  34. </Box>
  35. </Box>
  36. );
  37. }
  38. if (!row) {
  39. return null;
  40. }
  41. return (
  42. <Box sx={DETAILS_HEADER_ROOT_SX}>
  43. <Box sx={DETAILS_HEADER_CONTENT_SX}>
  44. <WorkbenchResultSummary row={row} layout="header" />
  45. </Box>
  46. </Box>
  47. );
  48. }