BoardBlock.tsx 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { Details2Svg } from '../_shared/svg/Details2Svg';
  2. import AddSvg from '../_shared/svg/AddSvg';
  3. import { DatabaseFieldMap, IDatabaseColumn, IDatabaseRow } from '../../stores/reducers/database/slice';
  4. import { BoardCard } from './BoardCard';
  5. import { RowInfo } from '../../stores/effects/database/row/row_cache';
  6. import { useEffect } from 'react';
  7. import { useRow } from '../_shared/database-hooks/useRow';
  8. import { DatabaseController } from '../../stores/effects/database/database_controller';
  9. export const BoardBlock = ({
  10. viewId,
  11. controller,
  12. title,
  13. groupingFieldId,
  14. rows,
  15. startMove,
  16. endMove,
  17. }: {
  18. viewId: string;
  19. controller: DatabaseController;
  20. title: string;
  21. groupingFieldId: string;
  22. rows: readonly RowInfo[];
  23. startMove: (id: string) => void;
  24. endMove: () => void;
  25. }) => {
  26. return (
  27. <div className={'flex h-full w-[250px] flex-col rounded-lg bg-surface-1'}>
  28. <div className={'flex items-center justify-between p-4'}>
  29. <div className={'flex items-center gap-2'}>
  30. <span>{title}</span>
  31. <span className={'text-shade-4'}>()</span>
  32. </div>
  33. <div className={'flex items-center gap-2'}>
  34. <button className={'h-5 w-5 rounded hover:bg-surface-2'}>
  35. <Details2Svg></Details2Svg>
  36. </button>
  37. <button className={'h-5 w-5 rounded hover:bg-surface-2'}>
  38. <AddSvg></AddSvg>
  39. </button>
  40. </div>
  41. </div>
  42. <div className={'flex flex-1 flex-col gap-1 overflow-auto px-2'}>
  43. {rows.map((row, index) => (
  44. <BoardCard
  45. viewId={viewId}
  46. controller={controller}
  47. key={index}
  48. groupingFieldId={groupingFieldId}
  49. row={row}
  50. startMove={() => startMove(row.row.id)}
  51. endMove={() => endMove()}
  52. ></BoardCard>
  53. ))}
  54. </div>
  55. <div className={'p-2'}>
  56. <button className={'flex w-full items-center gap-2 rounded-lg px-2 py-2 hover:bg-surface-2'}>
  57. <span className={'h-5 w-5'}>
  58. <AddSvg></AddSvg>
  59. </span>
  60. <span>New</span>
  61. </button>
  62. </div>
  63. </div>
  64. );
  65. };