@archbase/kanban 4.0.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +13 -0
- package/README.md +630 -0
- package/dist/archbase-kanban-4.0.37.tgz +0 -0
- package/dist/components/Card/Card.d.ts +26 -0
- package/dist/components/Card/index.d.ts +1 -0
- package/dist/components/CardSkeleton/CardSkeleton.d.ts +9 -0
- package/dist/components/CardSkeleton/index.d.ts +2 -0
- package/dist/components/Column/Column.d.ts +47 -0
- package/dist/components/Column/index.d.ts +1 -0
- package/dist/components/ColumnAdder/ColumnAdder.d.ts +6 -0
- package/dist/components/ColumnAdder/index.d.ts +1 -0
- package/dist/components/ColumnContent/ColumnContent.d.ts +24 -0
- package/dist/components/ColumnContent/index.d.ts +1 -0
- package/dist/components/ColumnHeader/ColumnHeader.d.ts +10 -0
- package/dist/components/ColumnHeader/index.d.ts +1 -0
- package/dist/components/DefaultCard/DefaultCard.d.ts +3 -0
- package/dist/components/DefaultCard/index.d.ts +1 -0
- package/dist/components/GenericItem/GenericItem.d.ts +26 -0
- package/dist/components/GenericItem/index.d.ts +1 -0
- package/dist/components/Kanban.d.ts +3 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/types.d.ts +124 -0
- package/dist/context/KanbanContext.d.ts +5 -0
- package/dist/global/dnd/dropManager.d.ts +16 -0
- package/dist/global/dnd/useCardDnd.d.ts +22 -0
- package/dist/global/dnd/useColumnDnd.d.ts +29 -0
- package/dist/index.css +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +1041 -0
- package/dist/utils/columnsUtils.d.ts +4 -0
- package/dist/utils/getPrefix.d.ts +2 -0
- package/dist/utils/getSharedProps.d.ts +8 -0
- package/dist/utils/infinite-scroll.d.ts +4 -0
- package/dist/utils/mergeRefs.d.ts +5 -0
- package/dist/utils/scroll.d.ts +2 -0
- package/package.json +66 -0
- package/src/common/_index.scss +0 -0
- package/src/components/Card/Card.tsx +215 -0
- package/src/components/Card/_Card.scss +11 -0
- package/src/components/Card/_index.scss +1 -0
- package/src/components/Card/index.ts +1 -0
- package/src/components/CardSkeleton/CardSkeleton.tsx +45 -0
- package/src/components/CardSkeleton/_CardSkeleton.scss +245 -0
- package/src/components/CardSkeleton/_index.scss +1 -0
- package/src/components/CardSkeleton/index.ts +2 -0
- package/src/components/Column/Column.tsx +246 -0
- package/src/components/Column/_Column.scss +44 -0
- package/src/components/Column/_index.scss +1 -0
- package/src/components/Column/index.ts +1 -0
- package/src/components/ColumnAdder/ColumnAdder.tsx +18 -0
- package/src/components/ColumnAdder/_ColumnAdder.scss +0 -0
- package/src/components/ColumnAdder/_index.scss +1 -0
- package/src/components/ColumnAdder/index.ts +1 -0
- package/src/components/ColumnContent/ColumnContent.tsx +238 -0
- package/src/components/ColumnContent/_ColumnContent.scss +23 -0
- package/src/components/ColumnContent/_index.scss +1 -0
- package/src/components/ColumnContent/index.ts +1 -0
- package/src/components/ColumnHeader/ColumnHeader.tsx +43 -0
- package/src/components/ColumnHeader/_ColumnHeader.scss +26 -0
- package/src/components/ColumnHeader/_index.scss +1 -0
- package/src/components/ColumnHeader/index.ts +1 -0
- package/src/components/DefaultCard/DefaultCard.tsx +9 -0
- package/src/components/DefaultCard/_DefaultCard.scss +14 -0
- package/src/components/DefaultCard/_index.scss +1 -0
- package/src/components/DefaultCard/index.ts +1 -0
- package/src/components/GenericItem/GenericItem.tsx +132 -0
- package/src/components/GenericItem/_GenericItem.scss +4 -0
- package/src/components/GenericItem/_index.scss +1 -0
- package/src/components/GenericItem/index.ts +1 -0
- package/src/components/Kanban.tsx +102 -0
- package/src/components/_Kanban.scss +8 -0
- package/src/components/_index.scss +9 -0
- package/src/components/index.ts +2 -0
- package/src/components/types.ts +155 -0
- package/src/context/KanbanContext.tsx +19 -0
- package/src/global/_index.scss +3 -0
- package/src/global/assets/styles/abstracts/_breakpoints.scss +71 -0
- package/src/global/assets/styles/abstracts/_colors.scss +85 -0
- package/src/global/assets/styles/abstracts/_functions.scss +3 -0
- package/src/global/assets/styles/abstracts/_index.scss +5 -0
- package/src/global/assets/styles/abstracts/_mixins.scss +49 -0
- package/src/global/assets/styles/abstracts/_padding.scss +1 -0
- package/src/global/assets/styles/abstracts/_variables.scss +8 -0
- package/src/global/assets/styles/base/_index.scss +34 -0
- package/src/global/dnd/dropManager.ts +301 -0
- package/src/global/dnd/useCardDnd.tsx +225 -0
- package/src/global/dnd/useColumnDnd.tsx +231 -0
- package/src/global/theme-default.scss +137 -0
- package/src/index.ts +6 -0
- package/src/utils/columnsUtils.ts +19 -0
- package/src/utils/getPrefix.ts +7 -0
- package/src/utils/getSharedProps.ts +18 -0
- package/src/utils/infinite-scroll.ts +18 -0
- package/src/utils/mergeRefs.ts +23 -0
- package/src/utils/scroll.ts +34 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { BoardItem, BoardProps, ConfigMap, DndState, ScrollEvent } from '../types';
|
|
3
|
+
interface Props {
|
|
4
|
+
index: number;
|
|
5
|
+
data: BoardItem;
|
|
6
|
+
items: BoardItem[];
|
|
7
|
+
configMap: ConfigMap;
|
|
8
|
+
allowColumnDrag?: boolean;
|
|
9
|
+
renderColumnHeader?: (column: BoardItem) => React.ReactNode;
|
|
10
|
+
renderColumnFooter?: (column: BoardItem) => React.ReactNode;
|
|
11
|
+
renderColumnWrapper: (column: BoardItem, props: {
|
|
12
|
+
children: React.ReactNode;
|
|
13
|
+
className?: string;
|
|
14
|
+
style?: React.CSSProperties;
|
|
15
|
+
ref?: React.RefObject<HTMLDivElement>;
|
|
16
|
+
}) => React.ReactNode;
|
|
17
|
+
renderSkeletonCard?: BoardProps["renderSkeletonCard"];
|
|
18
|
+
renderListFooter?: (column: BoardItem) => React.ReactNode;
|
|
19
|
+
renderColumnAdder?: (column: BoardItem) => React.ReactNode;
|
|
20
|
+
renderGap?: (column: BoardItem) => React.ReactNode;
|
|
21
|
+
renderCardDragIndicator?: (card: BoardItem, info: any) => React.ReactNode;
|
|
22
|
+
renderCardDragPreview?: (card: BoardItem, info: any) => React.ReactNode;
|
|
23
|
+
renderColumnDragIndicator?: (column: BoardItem, info: {
|
|
24
|
+
width: number;
|
|
25
|
+
height: number;
|
|
26
|
+
edge: "left" | "right";
|
|
27
|
+
}) => React.ReactNode;
|
|
28
|
+
renderColumnDragPreview?: (column: BoardItem, info: any) => React.ReactNode;
|
|
29
|
+
columnWrapperStyle?: (column: BoardItem) => React.CSSProperties;
|
|
30
|
+
columnWrapperClassName?: (column: BoardItem) => string;
|
|
31
|
+
columnHeaderStyle?: (column: BoardItem) => React.CSSProperties;
|
|
32
|
+
columnHeaderClassName?: (column: BoardItem) => string;
|
|
33
|
+
columnStyle?: (column: BoardItem) => React.CSSProperties;
|
|
34
|
+
columnClassName?: (column: BoardItem) => string;
|
|
35
|
+
columnListContentStyle?: (column: BoardItem) => React.CSSProperties;
|
|
36
|
+
columnListContentClassName?: (column: BoardItem) => string;
|
|
37
|
+
cardWrapperStyle?: (card: BoardItem, column: BoardItem) => React.CSSProperties;
|
|
38
|
+
cardWrapperClassName?: string;
|
|
39
|
+
onColumnClick?: (e: React.MouseEvent<HTMLDivElement>, column: BoardItem) => void;
|
|
40
|
+
onCardClick?: (e: React.MouseEvent<HTMLDivElement>, card: BoardItem) => void;
|
|
41
|
+
onCardDndStateChange?: (info: DndState) => void;
|
|
42
|
+
onColumnDndStateChange?: (info: DndState) => void;
|
|
43
|
+
onScroll?: (e: ScrollEvent, column: BoardItem) => void;
|
|
44
|
+
loadMore?: (columnId: string) => void;
|
|
45
|
+
}
|
|
46
|
+
declare const Column: (props: Props) => import("react/jsx-runtime").JSX.Element;
|
|
47
|
+
export default Column;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Column } from './Column';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './ColumnAdder';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { BoardItem, BoardProps, ConfigMap, DndState, ScrollEvent } from '../types';
|
|
3
|
+
interface Props {
|
|
4
|
+
items: BoardItem[];
|
|
5
|
+
column: BoardItem;
|
|
6
|
+
columnListContentStyle?: (column: BoardItem) => React.CSSProperties;
|
|
7
|
+
columnListContentClassName?: string;
|
|
8
|
+
configMap: ConfigMap;
|
|
9
|
+
renderSkeletonCard?: BoardProps["renderSkeletonCard"];
|
|
10
|
+
cardWrapperStyle?: (card: BoardItem, column: BoardItem) => React.CSSProperties;
|
|
11
|
+
cardWrapperClassName?: string;
|
|
12
|
+
onScroll?: (e: ScrollEvent, column: BoardItem) => void;
|
|
13
|
+
onCardClick?: (e: React.MouseEvent<HTMLDivElement>, card: BoardItem) => void;
|
|
14
|
+
loadMore?: (columnId: string) => void;
|
|
15
|
+
cardOverShadowCount?: number;
|
|
16
|
+
cardOverHeight?: number;
|
|
17
|
+
onCardDndStateChange?: (info: DndState) => void;
|
|
18
|
+
renderCardDragIndicator?: (card: BoardItem, info: any) => React.ReactNode;
|
|
19
|
+
renderCardDragPreview?: (card: BoardItem, info: any) => React.ReactNode;
|
|
20
|
+
renderListFooter?: (column: BoardItem) => React.ReactNode;
|
|
21
|
+
renderGap?: (column: BoardItem) => React.ReactNode;
|
|
22
|
+
}
|
|
23
|
+
declare const ColumnContent: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
|
|
24
|
+
export default ColumnContent;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './ColumnContent';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { BoardItem } from '../types';
|
|
3
|
+
interface Props {
|
|
4
|
+
renderColumnHeader?: (column: BoardItem) => React.ReactNode;
|
|
5
|
+
columnHeaderStyle?: (column: BoardItem) => React.CSSProperties;
|
|
6
|
+
columnHeaderClassName?: string;
|
|
7
|
+
data: BoardItem;
|
|
8
|
+
}
|
|
9
|
+
declare const ColumnHeader: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
|
|
10
|
+
export default ColumnHeader;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './ColumnHeader';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './DefaultCard';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { BoardItem, BoardProps, ConfigMap, DndState } from '../types';
|
|
3
|
+
interface Props {
|
|
4
|
+
index: number;
|
|
5
|
+
options: {
|
|
6
|
+
data: BoardItem;
|
|
7
|
+
column: BoardItem;
|
|
8
|
+
configMap: ConfigMap;
|
|
9
|
+
isSkeleton: boolean;
|
|
10
|
+
isShadow: boolean;
|
|
11
|
+
isListFooter: boolean;
|
|
12
|
+
renderListFooter?: (column: BoardItem) => React.ReactNode;
|
|
13
|
+
cardWrapperStyle?: (card: BoardItem, column: BoardItem) => React.CSSProperties;
|
|
14
|
+
cardWrapperClassName?: string;
|
|
15
|
+
cardsGap?: number;
|
|
16
|
+
renderSkeletonCard?: BoardProps["renderSkeletonCard"];
|
|
17
|
+
onCardDndStateChange?: (info: DndState) => void;
|
|
18
|
+
onCardClick?: (e: React.MouseEvent<HTMLDivElement>, card: BoardItem) => void;
|
|
19
|
+
cardOverHeight?: number;
|
|
20
|
+
renderCardDragIndicator?: (card: BoardItem, info: any) => React.ReactNode;
|
|
21
|
+
renderCardDragPreview?: (card: BoardItem, info: any) => React.ReactNode;
|
|
22
|
+
renderGap?: (column: BoardItem) => React.ReactNode;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
declare const GenericItem: (props: Props) => import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export default GenericItem;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './GenericItem';
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { TaskCardState } from '../global/dnd/useCardDnd';
|
|
2
|
+
import { TColumnState } from '../global/dnd/useColumnDnd';
|
|
3
|
+
import { CSSProperties, ReactNode } from 'react';
|
|
4
|
+
export interface DndState {
|
|
5
|
+
state: TaskCardState | TColumnState;
|
|
6
|
+
column?: BoardItem;
|
|
7
|
+
card?: BoardItem;
|
|
8
|
+
}
|
|
9
|
+
export interface ScrollEvent {
|
|
10
|
+
target: {
|
|
11
|
+
scrollTop: number;
|
|
12
|
+
scrollHeight: number;
|
|
13
|
+
clientHeight: number;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export type CardRenderProps = {
|
|
17
|
+
data: BoardItem;
|
|
18
|
+
column: BoardItem;
|
|
19
|
+
index: number;
|
|
20
|
+
isDraggable: boolean;
|
|
21
|
+
};
|
|
22
|
+
export type ConfigMap = {
|
|
23
|
+
[type: string]: {
|
|
24
|
+
render: (props: CardRenderProps) => React.ReactNode;
|
|
25
|
+
isDraggable?: boolean;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export interface BoardItem {
|
|
29
|
+
id: string;
|
|
30
|
+
title: string;
|
|
31
|
+
parentId: string | null;
|
|
32
|
+
children: string[];
|
|
33
|
+
content?: any;
|
|
34
|
+
type?: keyof ConfigMap;
|
|
35
|
+
totalItems?: number;
|
|
36
|
+
totalChildrenCount: number;
|
|
37
|
+
totalItemsCount?: number;
|
|
38
|
+
isDraggable?: boolean;
|
|
39
|
+
}
|
|
40
|
+
export interface BoardData {
|
|
41
|
+
root: BoardItem;
|
|
42
|
+
[key: string]: BoardItem;
|
|
43
|
+
}
|
|
44
|
+
export interface DropColumnParams {
|
|
45
|
+
columnId: string;
|
|
46
|
+
fromIndex: number;
|
|
47
|
+
toIndex: number;
|
|
48
|
+
}
|
|
49
|
+
export interface DropCardParams {
|
|
50
|
+
cardId: string;
|
|
51
|
+
fromColumnId: string;
|
|
52
|
+
toColumnId: string;
|
|
53
|
+
taskAbove: string | null;
|
|
54
|
+
taskBelow: string | null;
|
|
55
|
+
position: number;
|
|
56
|
+
}
|
|
57
|
+
export interface BoardProps {
|
|
58
|
+
dataSource: BoardData;
|
|
59
|
+
configMap: ConfigMap;
|
|
60
|
+
viewOnly?: boolean;
|
|
61
|
+
loadMore?: (groupsId: string) => void;
|
|
62
|
+
renderSkeletonCard?: ({ index, column, }: {
|
|
63
|
+
index: number;
|
|
64
|
+
column: BoardItem;
|
|
65
|
+
}) => ReactNode;
|
|
66
|
+
renderColumnHeader?: (column: BoardItem) => ReactNode;
|
|
67
|
+
renderCardDragIndicator?: (card: BoardItem, info: any) => ReactNode;
|
|
68
|
+
renderCardDragPreview?: (card: BoardItem, info: any) => ReactNode;
|
|
69
|
+
renderColumnDragIndicator?: (column: BoardItem, info: {
|
|
70
|
+
width: number;
|
|
71
|
+
height: number;
|
|
72
|
+
edge: "left" | "right";
|
|
73
|
+
}) => ReactNode;
|
|
74
|
+
renderColumnDragPreview?: (column: BoardItem, info: any) => ReactNode;
|
|
75
|
+
renderListFooter?: (column: BoardItem) => ReactNode;
|
|
76
|
+
allowListFooter?: (column: BoardItem) => boolean;
|
|
77
|
+
renderColumnAdder?: () => ReactNode;
|
|
78
|
+
allowColumnAdder?: boolean;
|
|
79
|
+
allowColumnDrag?: boolean;
|
|
80
|
+
renderColumnWrapper?: (column: BoardItem, { children, className, style, }: {
|
|
81
|
+
children: ReactNode;
|
|
82
|
+
className?: string;
|
|
83
|
+
style?: CSSProperties;
|
|
84
|
+
}) => ReactNode;
|
|
85
|
+
columnWrapperStyle?: (column: BoardItem) => CSSProperties;
|
|
86
|
+
columnHeaderStyle?: (column: BoardItem) => CSSProperties;
|
|
87
|
+
columnListContentStyle?: (column: BoardItem) => CSSProperties;
|
|
88
|
+
columnListContentClassName?: (column: BoardItem) => string;
|
|
89
|
+
columnWrapperClassName?: (column: BoardItem) => string;
|
|
90
|
+
columnHeaderClassName?: (column: BoardItem) => string;
|
|
91
|
+
columnClassName?: (column: BoardItem) => string;
|
|
92
|
+
columnStyle?: (column: BoardItem) => CSSProperties;
|
|
93
|
+
rootStyle?: CSSProperties;
|
|
94
|
+
rootClassName?: string;
|
|
95
|
+
cardWrapperStyle?: (card: BoardItem, column: BoardItem) => CSSProperties;
|
|
96
|
+
cardWrapperClassName?: string;
|
|
97
|
+
virtualization?: boolean;
|
|
98
|
+
cardsGap?: number;
|
|
99
|
+
onScroll?: (e: ScrollEvent, column: BoardItem) => void;
|
|
100
|
+
onColumnMove?: ({ columnId, fromIndex, toIndex }: DropColumnParams) => void;
|
|
101
|
+
onCardMove?: ({ cardId, fromColumnId, toColumnId, taskAbove, taskBelow, position, }: DropCardParams) => void;
|
|
102
|
+
renderColumnFooter?: (column: BoardItem) => ReactNode;
|
|
103
|
+
onColumnClick?: (e: React.MouseEvent<HTMLDivElement>, column: BoardItem) => void;
|
|
104
|
+
onCardClick?: (e: React.MouseEvent<HTMLDivElement>, card: BoardItem) => void;
|
|
105
|
+
onCardDndStateChange?: (info: DndState) => void;
|
|
106
|
+
onColumnDndStateChange?: (info: DndState) => void;
|
|
107
|
+
}
|
|
108
|
+
export interface DropParams {
|
|
109
|
+
source: {
|
|
110
|
+
id: string;
|
|
111
|
+
data: any;
|
|
112
|
+
};
|
|
113
|
+
location: {
|
|
114
|
+
current: {
|
|
115
|
+
dropTargets: Array<{
|
|
116
|
+
data: any;
|
|
117
|
+
}>;
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
columns: BoardItem[];
|
|
121
|
+
dataSource: BoardData;
|
|
122
|
+
onCardMove?: BoardProps["onCardMove"];
|
|
123
|
+
onColumnMove?: BoardProps["onColumnMove"];
|
|
124
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { BoardProps } from '../components';
|
|
2
|
+
export declare const useKanbanContext: () => Partial<BoardProps>;
|
|
3
|
+
export declare const KanbanProvider: ({ children, ...props }: Partial<BoardProps> & {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BoardData, BoardItem, DropColumnParams, DropParams } from '../../components';
|
|
2
|
+
export declare const handleCardDrop: ({ source, location, columns, dataSource, onCardMove, onColumnMove, }: DropParams) => void;
|
|
3
|
+
export declare const dropColumnHandler: (drop: DropColumnParams, dataSource: BoardData) => {
|
|
4
|
+
[x: string]: BoardItem;
|
|
5
|
+
root: BoardItem;
|
|
6
|
+
};
|
|
7
|
+
export declare const dropHandler: (drop: {
|
|
8
|
+
cardId: string;
|
|
9
|
+
fromColumnId: string;
|
|
10
|
+
toColumnId: string;
|
|
11
|
+
taskAbove: string | null;
|
|
12
|
+
taskBelow: string | null;
|
|
13
|
+
}, dataSource: BoardData, updateDroppedItem?: (targetColumn: BoardItem, droppedItem: any) => any, updateDestinationColumn?: (targetColumn: BoardItem) => any, updateSourceColumn?: (sourceColumn: BoardItem) => any) => {
|
|
14
|
+
[x: string]: BoardItem;
|
|
15
|
+
root: BoardItem;
|
|
16
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BoardItem, DndState } from '../../components/types';
|
|
2
|
+
import { Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
|
|
3
|
+
export type TaskCardState = {
|
|
4
|
+
type: "idle";
|
|
5
|
+
} | {
|
|
6
|
+
type: "is-dragging";
|
|
7
|
+
} | {
|
|
8
|
+
type: "is-dragging-and-left-self";
|
|
9
|
+
} | {
|
|
10
|
+
type: "is-over";
|
|
11
|
+
dragging: DOMRect;
|
|
12
|
+
closestEdge: Edge;
|
|
13
|
+
} | {
|
|
14
|
+
type: "preview";
|
|
15
|
+
container: HTMLElement;
|
|
16
|
+
dragging: DOMRect;
|
|
17
|
+
};
|
|
18
|
+
export declare const useCardDnd: (data: BoardItem, column: BoardItem, index: number, isDraggable: boolean, onCardDndStateChange?: (info: DndState) => void) => {
|
|
19
|
+
outerRef: import('react').RefObject<HTMLDivElement>;
|
|
20
|
+
innerRef: import('react').RefObject<HTMLDivElement>;
|
|
21
|
+
state: TaskCardState;
|
|
22
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { BoardItem, DndState } from '../../components/types';
|
|
2
|
+
import { Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
|
|
3
|
+
export type TColumnState = {
|
|
4
|
+
type: "idle";
|
|
5
|
+
} | {
|
|
6
|
+
type: "is-dragging";
|
|
7
|
+
} | {
|
|
8
|
+
type: "is-dragging-and-left-self";
|
|
9
|
+
} | {
|
|
10
|
+
type: "is-card-over";
|
|
11
|
+
isOverChildCard: boolean;
|
|
12
|
+
dragging: DOMRect;
|
|
13
|
+
} | {
|
|
14
|
+
type: "is-column-over";
|
|
15
|
+
closestEdge: Edge;
|
|
16
|
+
rect: DOMRect;
|
|
17
|
+
} | {
|
|
18
|
+
type: "preview";
|
|
19
|
+
container: HTMLElement;
|
|
20
|
+
dragging: DOMRect;
|
|
21
|
+
};
|
|
22
|
+
export declare const useColumnDnd: (data: BoardItem, index: number, items: BoardItem[], onColumnDndStateChange?: (info: DndState) => void, allowColumnDrag?: boolean, hasCustomPreview?: boolean) => {
|
|
23
|
+
headerRef: import('react').RefObject<HTMLDivElement>;
|
|
24
|
+
outerFullHeightRef: import('react').RefObject<HTMLDivElement>;
|
|
25
|
+
innerRef: import('react').RefObject<HTMLDivElement>;
|
|
26
|
+
state: TColumnState;
|
|
27
|
+
cardOverShadowCount: number;
|
|
28
|
+
totalTasksCount: number;
|
|
29
|
+
};
|
package/dist/index.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.rkk-board{display:flex;overflow:auto;height:100%;gap:8px}.rkk-column-outer{min-width:264px;max-width:264px;height:100%;display:flex;flex-direction:column;transition:all .1s ease;-webkit-transition:all .1s ease;-moz-transition:all .1s ease;-ms-transition:all .1s ease;-o-transition:all .1s ease}.rkk-column-outer .rkk-column{display:flex;flex-direction:column;gap:10px;padding:10px;border-radius:10px;background-color:#f0f0f0;position:relative;overflow:hidden}.rkk-column-outer .rkk-column-wrapper{display:flex;flex-direction:column;flex:1;gap:16px;max-height:100%}.rkk-column-shadow-container{position:relative;flex-shrink:0}.rkk-column-shadow{border-radius:10px;background-color:#ffffffb7;border:1px solid var(--Schemes-Outline-Variant, #e8ecf5)}.rkk-column-header{display:flex;justify-content:space-between;align-items:center;border-radius:10px;height:24px;margin-bottom:10px;background-color:#f0f0f0}.rkk-column-header-left{font-size:18px;font-weight:600;color:#000}.rkk-column-header-right{font-size:15px;background-color:#37352f14;color:#37352f;padding:5px 10px;border-radius:5px;font-weight:500}.rkk-column-content{flex:1;position:relative;height:0;min-height:0}.rkk-column-content-list{height:100%;overflow-y:auto;overflow-x:hidden;contain:none!important;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.3) transparent;transition:scrollbar-color .3s ease}.rkk-column-content-list:hover{scrollbar-color:rgba(0,0,0,.3) transparent}@keyframes skeleton-shimmer{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}@keyframes skeleton-wave{0%{transform:translate(-100%)}50%{transform:translate(100%)}to{transform:translate(100%)}}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}.rkk-skeleton{border-radius:8px;border:1px solid #e8ecf5;background:#fff;padding:16px;margin-bottom:8px;box-shadow:0 1px 3px #0000001a;transition:box-shadow .2s ease;position:relative;overflow:hidden}.rkk-skeleton:hover{box-shadow:0 2px 8px #00000026}.rkk-skeleton-content{display:flex;flex-direction:column;gap:12px}.rkk-skeleton .rkk-skeleton-date,.rkk-skeleton .rkk-skeleton-assignee,.rkk-skeleton .rkk-skeleton-avatar,.rkk-skeleton .rkk-skeleton-tag,.rkk-skeleton .rkk-skeleton-priority,.rkk-skeleton .rkk-skeleton-line,.rkk-skeleton .rkk-skeleton-title{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200px 100%;animation:skeleton-shimmer 1.5s infinite ease-in-out;border-radius:4px;position:relative}.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-title,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-title,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-line,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-line,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-tag,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-tag,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-avatar,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-avatar,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-assignee,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-assignee,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-date,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-date,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-priority,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-priority{background:#f0f0f0;position:relative;overflow:hidden;border-radius:4px}.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-title:after,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-title:after,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-line:after,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-line:after,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-tag:after,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-tag:after,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-avatar:after,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-avatar:after,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-assignee:after,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-assignee:after,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-date:after,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-date:after,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-priority:after,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-priority:after{position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(90deg,#fff0 0,#fff3 20%,#ffffff80 60%,#fff0);animation:skeleton-wave 2s infinite;content:""}.rkk-skeleton-title{height:20px;width:80%;border-radius:6px}.rkk-skeleton-description{display:flex;flex-direction:column;gap:8px}.rkk-skeleton-line{height:14px;width:100%}.rkk-skeleton-line-short{width:65%}.rkk-skeleton-priority{height:4px;width:40px;border-radius:2px;margin-bottom:4px}.rkk-skeleton-tags{display:flex;gap:8px;flex-wrap:wrap}.rkk-skeleton-tag{height:20px;width:60px;border-radius:12px}.rkk-skeleton-tag:nth-child(2){width:45px}.rkk-skeleton-tag:nth-child(3){width:55px}.rkk-skeleton-footer{display:flex;justify-content:space-between;align-items:center;margin-top:4px}.rkk-skeleton-footer-left{display:flex;align-items:center;gap:8px}.rkk-skeleton-avatar{width:24px;height:24px;border-radius:50%;flex-shrink:0}.rkk-skeleton-assignee{height:12px;width:60px;border-radius:3px}.rkk-skeleton-date{height:12px;width:80px;border-radius:3px}.rkk-skeleton-wave .rkk-skeleton-title,.rkk-skeleton-wave .rkk-skeleton-line,.rkk-skeleton-wave .rkk-skeleton-tag,.rkk-skeleton-wave .rkk-skeleton-avatar,.rkk-skeleton-wave .rkk-skeleton-assignee,.rkk-skeleton-wave .rkk-skeleton-date,.rkk-skeleton-wave .rkk-skeleton-priority{animation:none}.rkk-skeleton-pulse .rkk-skeleton-title,.rkk-skeleton-pulse .rkk-skeleton-line,.rkk-skeleton-pulse .rkk-skeleton-tag,.rkk-skeleton-pulse .rkk-skeleton-avatar,.rkk-skeleton-pulse .rkk-skeleton-assignee,.rkk-skeleton-pulse .rkk-skeleton-date,.rkk-skeleton-pulse .rkk-skeleton-priority{background:#f0f0f0;animation:skeleton-pulse 1.5s ease-in-out infinite}@media (max-width: 768px){.rkk-skeleton{padding:12px}.rkk-skeleton-content{gap:10px}.rkk-skeleton-title{height:18px}.rkk-skeleton-line{height:12px}.rkk-skeleton-tag{height:18px;width:50px}.rkk-skeleton-tag:nth-child(2){width:40px}.rkk-skeleton-avatar{width:20px;height:20px}}.rkk-card-shadow-container{position:relative}.rkk-card-shadow{border-radius:8px;background-color:#ffffffb7;border:1px solid var(--Schemes-Outline-Variant, #e8ecf5)}.rkk-default-card{background-color:#fff;padding:10px;border-radius:8px;border:1px solid #ccc;box-shadow:0 0 10px #0000001a;cursor:pointer;-webkit-border-radius:8px;-moz-border-radius:8px;-ms-border-radius:8px;-o-border-radius:8px}
|
package/dist/index.d.ts
ADDED