Grid.tsx 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { useDatabase } from '../../_shared/database-hooks/useDatabase';
  2. import { GridTableCount } from '../GridTableCount/GridTableCount';
  3. import { GridTableHeader } from '../GridTableHeader/GridTableHeader';
  4. import { GridAddRow } from '../GridTableRows/GridAddRow';
  5. import { GridTableRows } from '../GridTableRows/GridTableRows';
  6. import { GridTitle } from '../GridTitle/GridTitle';
  7. import { GridToolbar } from '../GridToolbar/GridToolbar';
  8. import { EditRow } from '$app/components/_shared/EditRow/EditRow';
  9. import { useState } from 'react';
  10. import { RowInfo } from '$app/stores/effects/database/row/row_cache';
  11. import { ViewLayoutPB } from '@/services/backend';
  12. export const Grid = ({ viewId }: { viewId: string }) => {
  13. const { controller, rows, groups } = useDatabase(viewId, ViewLayoutPB.Grid);
  14. const [showGridRow, setShowGridRow] = useState(false);
  15. const [boardRowInfo, setBoardRowInfo] = useState<RowInfo>();
  16. const onOpenRow = (rowInfo: RowInfo) => {
  17. setBoardRowInfo(rowInfo);
  18. setShowGridRow(true);
  19. };
  20. return (
  21. <>
  22. {controller && groups && (
  23. <>
  24. <div className='mx-auto mt-8 flex flex-col gap-8 px-8'>
  25. <div className='flex w-full items-center justify-between'>
  26. <GridTitle />
  27. <GridToolbar />
  28. </div>
  29. {/* table component view with text area for td */}
  30. <div className='flex flex-col gap-4'>
  31. <table className='w-full table-fixed text-sm'>
  32. <GridTableHeader controller={controller} />
  33. <GridTableRows onOpenRow={onOpenRow} allRows={rows} viewId={viewId} controller={controller} />
  34. </table>
  35. <GridAddRow controller={controller} />
  36. </div>
  37. <GridTableCount />
  38. </div>
  39. {showGridRow && boardRowInfo && (
  40. <EditRow
  41. onClose={() => setShowGridRow(false)}
  42. viewId={viewId}
  43. controller={controller}
  44. rowInfo={boardRowInfo}
  45. ></EditRow>
  46. )}
  47. </>
  48. )}
  49. </>
  50. );
  51. };