index.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import React from 'react';
  2. import { TreeNodeInterface } from '$app/interfaces/index';
  3. import BlockComponent from '../BlockList/BlockComponent';
  4. export default function ColumnBlock({
  5. node,
  6. resizerWidth,
  7. index,
  8. }: {
  9. node: TreeNodeInterface;
  10. resizerWidth: number;
  11. index: number;
  12. }) {
  13. const renderResizer = () => {
  14. return (
  15. <div className={`relative w-[46px] flex-shrink-0 flex-grow-0 transition-opacity`} style={{ opacity: 0 }}></div>
  16. );
  17. };
  18. return (
  19. <>
  20. {index === 0 ? (
  21. <div className='contents'>
  22. <div
  23. className='absolute flex'
  24. style={{
  25. inset: '0px 100% 0px auto',
  26. }}
  27. >
  28. {renderResizer()}
  29. </div>
  30. </div>
  31. ) : (
  32. renderResizer()
  33. )}
  34. <BlockComponent
  35. className={`column-block py-3`}
  36. style={{
  37. flexGrow: 0,
  38. flexShrink: 0,
  39. width: `calc((100% - ${resizerWidth}px) * ${node.data.ratio})`,
  40. }}
  41. node={node}
  42. >
  43. {node.children?.map((item) => (
  44. <BlockComponent key={item.id} node={item} />
  45. ))}
  46. </BlockComponent>
  47. </>
  48. );
  49. }