feat: init
This commit is contained in:
59
apps/web/ce/components/gantt-chart/blocks/block-row-list.tsx
Normal file
59
apps/web/ce/components/gantt-chart/blocks/block-row-list.tsx
Normal file
@@ -0,0 +1,59 @@
|
||||
import type { FC } from "react";
|
||||
// components
|
||||
import type { IBlockUpdateData, IGanttBlock } from "@plane/types";
|
||||
import RenderIfVisible from "@/components/core/render-if-visible-HOC";
|
||||
// hooks
|
||||
import { BlockRow } from "@/components/gantt-chart/blocks/block-row";
|
||||
import { BLOCK_HEIGHT } from "@/components/gantt-chart/constants";
|
||||
import type { TSelectionHelper } from "@/hooks/use-multiple-select";
|
||||
// types
|
||||
|
||||
export type GanttChartBlocksProps = {
|
||||
blockIds: string[];
|
||||
blockUpdateHandler: (block: any, payload: IBlockUpdateData) => void;
|
||||
handleScrollToBlock: (block: IGanttBlock) => void;
|
||||
enableAddBlock: boolean | ((blockId: string) => boolean);
|
||||
showAllBlocks: boolean;
|
||||
selectionHelpers: TSelectionHelper;
|
||||
ganttContainerRef: React.RefObject<HTMLDivElement>;
|
||||
};
|
||||
|
||||
export const GanttChartRowList: FC<GanttChartBlocksProps> = (props) => {
|
||||
const {
|
||||
blockIds,
|
||||
blockUpdateHandler,
|
||||
handleScrollToBlock,
|
||||
enableAddBlock,
|
||||
showAllBlocks,
|
||||
selectionHelpers,
|
||||
ganttContainerRef,
|
||||
} = props;
|
||||
|
||||
return (
|
||||
<div className="absolute top-0 left-0 min-w-full w-max">
|
||||
{blockIds?.map((blockId) => (
|
||||
<>
|
||||
<RenderIfVisible
|
||||
root={ganttContainerRef}
|
||||
horizontalOffset={100}
|
||||
verticalOffset={200}
|
||||
classNames="relative min-w-full w-max"
|
||||
placeholderChildren={<div className="w-full pointer-events-none" style={{ height: `${BLOCK_HEIGHT}px` }} />}
|
||||
shouldRecordHeights={false}
|
||||
>
|
||||
<BlockRow
|
||||
key={blockId}
|
||||
blockId={blockId}
|
||||
showAllBlocks={showAllBlocks}
|
||||
blockUpdateHandler={blockUpdateHandler}
|
||||
handleScrollToBlock={handleScrollToBlock}
|
||||
enableAddBlock={typeof enableAddBlock === "function" ? enableAddBlock(blockId) : enableAddBlock}
|
||||
selectionHelpers={selectionHelpers}
|
||||
ganttContainerRef={ganttContainerRef}
|
||||
/>
|
||||
</RenderIfVisible>
|
||||
</>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
53
apps/web/ce/components/gantt-chart/blocks/blocks-list.tsx
Normal file
53
apps/web/ce/components/gantt-chart/blocks/blocks-list.tsx
Normal file
@@ -0,0 +1,53 @@
|
||||
import type { FC } from "react";
|
||||
//
|
||||
import type { IBlockUpdateDependencyData } from "@plane/types";
|
||||
import { GanttChartBlock } from "@/components/gantt-chart/blocks/block";
|
||||
|
||||
export type GanttChartBlocksProps = {
|
||||
blockIds: string[];
|
||||
blockToRender: (data: any) => React.ReactNode;
|
||||
enableBlockLeftResize: boolean | ((blockId: string) => boolean);
|
||||
enableBlockRightResize: boolean | ((blockId: string) => boolean);
|
||||
enableBlockMove: boolean | ((blockId: string) => boolean);
|
||||
ganttContainerRef: React.RefObject<HTMLDivElement>;
|
||||
showAllBlocks: boolean;
|
||||
updateBlockDates?: (updates: IBlockUpdateDependencyData[]) => Promise<void>;
|
||||
enableDependency: boolean | ((blockId: string) => boolean);
|
||||
};
|
||||
|
||||
export const GanttChartBlocksList: FC<GanttChartBlocksProps> = (props) => {
|
||||
const {
|
||||
blockIds,
|
||||
blockToRender,
|
||||
enableBlockLeftResize,
|
||||
enableBlockRightResize,
|
||||
enableBlockMove,
|
||||
ganttContainerRef,
|
||||
showAllBlocks,
|
||||
updateBlockDates,
|
||||
enableDependency,
|
||||
} = props;
|
||||
|
||||
return (
|
||||
<>
|
||||
{blockIds?.map((blockId) => (
|
||||
<GanttChartBlock
|
||||
key={blockId}
|
||||
blockId={blockId}
|
||||
showAllBlocks={showAllBlocks}
|
||||
blockToRender={blockToRender}
|
||||
enableBlockLeftResize={
|
||||
typeof enableBlockLeftResize === "function" ? enableBlockLeftResize(blockId) : enableBlockLeftResize
|
||||
}
|
||||
enableBlockRightResize={
|
||||
typeof enableBlockRightResize === "function" ? enableBlockRightResize(blockId) : enableBlockRightResize
|
||||
}
|
||||
enableBlockMove={typeof enableBlockMove === "function" ? enableBlockMove(blockId) : enableBlockMove}
|
||||
enableDependency={typeof enableDependency === "function" ? enableDependency(blockId) : enableDependency}
|
||||
ganttContainerRef={ganttContainerRef}
|
||||
updateBlockDates={updateBlockDates}
|
||||
/>
|
||||
))}
|
||||
</>
|
||||
);
|
||||
};
|
||||
@@ -0,0 +1,2 @@
|
||||
export * from "./left-draggable";
|
||||
export * from "./right-draggable";
|
||||
@@ -0,0 +1,9 @@
|
||||
import type { RefObject } from "react";
|
||||
import type { IGanttBlock } from "@plane/types";
|
||||
|
||||
type LeftDependencyDraggableProps = {
|
||||
block: IGanttBlock;
|
||||
ganttContainerRef: RefObject<HTMLDivElement>;
|
||||
};
|
||||
|
||||
export const LeftDependencyDraggable = (props: LeftDependencyDraggableProps) => <></>;
|
||||
@@ -0,0 +1,8 @@
|
||||
import type { RefObject } from "react";
|
||||
import type { IGanttBlock } from "@plane/types";
|
||||
|
||||
type RightDependencyDraggableProps = {
|
||||
block: IGanttBlock;
|
||||
ganttContainerRef: RefObject<HTMLDivElement>;
|
||||
};
|
||||
export const RightDependencyDraggable = (props: RightDependencyDraggableProps) => <></>;
|
||||
@@ -0,0 +1,9 @@
|
||||
import type { FC } from "react";
|
||||
|
||||
type Props = {
|
||||
isEpic?: boolean;
|
||||
};
|
||||
export const TimelineDependencyPaths: FC<Props> = (props) => {
|
||||
const { isEpic = false } = props;
|
||||
return <></>;
|
||||
};
|
||||
@@ -0,0 +1 @@
|
||||
export const TimelineDraggablePath = () => <></>;
|
||||
3
apps/web/ce/components/gantt-chart/dependency/index.ts
Normal file
3
apps/web/ce/components/gantt-chart/dependency/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export * from "./blockDraggables";
|
||||
export * from "./dependency-paths";
|
||||
export * from "./draggable-dependency-path";
|
||||
1
apps/web/ce/components/gantt-chart/index.ts
Normal file
1
apps/web/ce/components/gantt-chart/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export * from "./dependency";
|
||||
Reference in New Issue
Block a user