@expcat/tigercat-react 1.0.4 → 1.0.7
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/dist/chunk-7BVXG3Z5.mjs +22 -0
- package/dist/{chunk-EHU3J4B2.mjs → chunk-DBNAL6G6.mjs} +100 -47
- package/dist/{chunk-WGPUGPYE.js → chunk-H3JAEEEE.js} +99 -46
- package/dist/chunk-NG3GA5LF.js +25 -0
- package/dist/{chunk-QVZTZHCJ.mjs → chunk-PNSWIJG3.mjs} +16 -7
- package/dist/{chunk-45H3JEI3.js → chunk-RFPXIDAK.js} +16 -7
- package/dist/components/Kanban.d.mts +3 -2
- package/dist/components/Kanban.d.ts +3 -2
- package/dist/components/Kanban.js +5 -4
- package/dist/components/Kanban.mjs +3 -2
- package/dist/components/Splitter.js +3 -3
- package/dist/components/Splitter.mjs +1 -1
- package/dist/components/TaskBoard.js +3 -3
- package/dist/components/TaskBoard.mjs +1 -1
- package/dist/index.js +9 -9
- package/dist/index.mjs +3 -3
- package/package.json +2 -2
- package/dist/chunk-24RUEJWB.js +0 -293
- package/dist/chunk-YXWRSEP5.mjs +0 -286
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { TaskBoard } from './chunk-DBNAL6G6.mjs';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
var Kanban = ({
|
|
5
|
+
showCardCount = true,
|
|
6
|
+
allowAddCard = true,
|
|
7
|
+
allowAddColumn = false,
|
|
8
|
+
...props
|
|
9
|
+
}) => {
|
|
10
|
+
return /* @__PURE__ */ jsx(
|
|
11
|
+
TaskBoard,
|
|
12
|
+
{
|
|
13
|
+
showCardCount,
|
|
14
|
+
allowAddCard,
|
|
15
|
+
allowAddColumn,
|
|
16
|
+
...props
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
};
|
|
20
|
+
var Kanban_default = Kanban;
|
|
21
|
+
|
|
22
|
+
export { Kanban, Kanban_default };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useTigerConfig } from './chunk-CRSMECWE.mjs';
|
|
2
2
|
import React, { useMemo, useState, useEffect, useRef, useCallback } from 'react';
|
|
3
|
-
import { classNames, taskBoardCardClasses, taskBoardCardDraggingClasses, isWipExceeded, taskBoardColumnClasses, taskBoardColumnDropTargetClasses, taskBoardColumnDraggingClasses, taskBoardDropIndicatorClasses, resolveLocaleText, taskBoardEmptyClasses, taskBoardColumnHeaderClasses, taskBoardWipExceededClasses, taskBoardColumnBodyClasses, taskBoardAddCardClasses, mergeTigerLocale, getTaskBoardLabels, createTouchDragTracker, moveCard, reorderColumns, setDragData, createCardDragData, getDropIndex, parseDragData, createColumnDragData, getColumnDropIndex, findColumnFromPoint, taskBoardBaseClasses } from '@expcat/tigercat-core';
|
|
3
|
+
import { classNames, taskBoardCardClasses, taskBoardCardDraggingClasses, isWipExceeded, getColumnCardCount, taskBoardColumnClasses, taskBoardColumnDropTargetClasses, taskBoardColumnDraggingClasses, taskBoardDropIndicatorClasses, resolveLocaleText, taskBoardEmptyClasses, taskBoardColumnHeaderClasses, taskBoardWipExceededClasses, kanbanCardCountClasses, taskBoardColumnBodyClasses, taskBoardAddCardClasses, mergeTigerLocale, getTaskBoardLabels, filterColumns, createTouchDragTracker, moveCard, reorderColumns, setDragData, createCardDragData, getDropIndex, parseDragData, createColumnDragData, getColumnDropIndex, findColumnFromPoint, taskBoardBaseClasses, kanbanAddColumnClasses } from '@expcat/tigercat-core';
|
|
4
4
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
5
5
|
|
|
6
6
|
var CardItem = React.memo(
|
|
@@ -83,9 +83,12 @@ var ColumnItem = React.memo(
|
|
|
83
83
|
onColumnTouchEnd,
|
|
84
84
|
onCardKeyDown,
|
|
85
85
|
dragStateId,
|
|
86
|
-
kbDragStateId
|
|
86
|
+
kbDragStateId,
|
|
87
|
+
showCardCount,
|
|
88
|
+
allowAddCard
|
|
87
89
|
}) => {
|
|
88
90
|
const wipOver = isWipExceeded(column);
|
|
91
|
+
const cardCount = showCardCount ? getColumnCardCount(column) : null;
|
|
89
92
|
const colClasses = classNames(
|
|
90
93
|
taskBoardColumnClasses,
|
|
91
94
|
isDropTarget && taskBoardColumnDropTargetClasses,
|
|
@@ -153,7 +156,7 @@ var ColumnItem = React.memo(
|
|
|
153
156
|
children: renderColumnHeader ? renderColumnHeader(column) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
154
157
|
/* @__PURE__ */ jsxs("span", { className: wipOver ? taskBoardWipExceededClasses : void 0, children: [
|
|
155
158
|
column.title,
|
|
156
|
-
column.wipLimit != null ? /* @__PURE__ */ jsxs("span", { className: "ml-2 text-xs font-normal opacity-70", title: wipTitle, children: [
|
|
159
|
+
showCardCount && cardCount ? null : column.wipLimit != null ? /* @__PURE__ */ jsxs("span", { className: "ml-2 text-xs font-normal opacity-70", title: wipTitle, children: [
|
|
157
160
|
"(",
|
|
158
161
|
column.cards.length,
|
|
159
162
|
"/",
|
|
@@ -161,6 +164,16 @@ var ColumnItem = React.memo(
|
|
|
161
164
|
")"
|
|
162
165
|
] }) : /* @__PURE__ */ jsx("span", { className: "ml-2 text-xs font-normal opacity-50", children: column.cards.length })
|
|
163
166
|
] }),
|
|
167
|
+
showCardCount && cardCount && /* @__PURE__ */ jsx(
|
|
168
|
+
"span",
|
|
169
|
+
{
|
|
170
|
+
className: classNames(
|
|
171
|
+
kanbanCardCountClasses,
|
|
172
|
+
wipOver && taskBoardWipExceededClasses
|
|
173
|
+
),
|
|
174
|
+
children: cardCount.limit ? `${cardCount.count}/${cardCount.limit}` : `${cardCount.count}`
|
|
175
|
+
}
|
|
176
|
+
),
|
|
164
177
|
column.description && /* @__PURE__ */ jsx("span", { className: "text-xs font-normal text-[var(--tiger-text-muted,#6b7280)] truncate max-w-[120px]", children: column.description })
|
|
165
178
|
] })
|
|
166
179
|
}
|
|
@@ -177,14 +190,22 @@ var ColumnItem = React.memo(
|
|
|
177
190
|
children: cardsContent
|
|
178
191
|
}
|
|
179
192
|
),
|
|
180
|
-
renderColumnFooter ? renderColumnFooter(column) : onCardAdd ? /* @__PURE__ */ jsxs(
|
|
193
|
+
renderColumnFooter ? renderColumnFooter(column) : onCardAdd || allowAddCard ? /* @__PURE__ */ jsxs(
|
|
181
194
|
"div",
|
|
182
195
|
{
|
|
183
196
|
className: classNames(
|
|
184
197
|
"border-t border-[var(--tiger-border,#e5e7eb)]",
|
|
185
198
|
taskBoardAddCardClasses
|
|
186
199
|
),
|
|
187
|
-
|
|
200
|
+
role: "button",
|
|
201
|
+
tabIndex: 0,
|
|
202
|
+
onClick: () => onCardAdd?.(column.id),
|
|
203
|
+
onKeyDown: (e) => {
|
|
204
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
205
|
+
e.preventDefault();
|
|
206
|
+
onCardAdd?.(column.id);
|
|
207
|
+
}
|
|
208
|
+
},
|
|
188
209
|
children: [
|
|
189
210
|
/* @__PURE__ */ jsx("span", { children: "+" }),
|
|
190
211
|
/* @__PURE__ */ jsx("span", { children: resolveLocaleText(labels.addCardText) })
|
|
@@ -195,7 +216,7 @@ var ColumnItem = React.memo(
|
|
|
195
216
|
}
|
|
196
217
|
);
|
|
197
218
|
},
|
|
198
|
-
(prev, next) => prev.column === next.column && prev.colIndex === next.colIndex && prev.isDropTarget === next.isDropTarget && prev.isColDragging === next.isColDragging && prev.dropIdx === next.dropIdx && prev.draggable === next.draggable && prev.columnDraggable === next.columnDraggable && prev.dragType === next.dragType && prev.dragStateId === next.dragStateId && prev.kbDragStateId === next.kbDragStateId && prev.onCardAdd === next.onCardAdd
|
|
219
|
+
(prev, next) => prev.column === next.column && prev.colIndex === next.colIndex && prev.isDropTarget === next.isDropTarget && prev.isColDragging === next.isColDragging && prev.dropIdx === next.dropIdx && prev.draggable === next.draggable && prev.columnDraggable === next.columnDraggable && prev.dragType === next.dragType && prev.dragStateId === next.dragStateId && prev.kbDragStateId === next.kbDragStateId && prev.onCardAdd === next.onCardAdd && prev.showCardCount === next.showCardCount && prev.allowAddCard === next.allowAddCard
|
|
199
220
|
);
|
|
200
221
|
ColumnItem.displayName = "TaskBoardColumnItem";
|
|
201
222
|
var TaskBoard = ({
|
|
@@ -210,6 +231,12 @@ var TaskBoard = ({
|
|
|
210
231
|
onColumnMove,
|
|
211
232
|
onColumnsChange,
|
|
212
233
|
onCardAdd,
|
|
234
|
+
filterText = "",
|
|
235
|
+
hiddenColumns,
|
|
236
|
+
showCardCount = false,
|
|
237
|
+
allowAddCard = false,
|
|
238
|
+
allowAddColumn = false,
|
|
239
|
+
onColumnAdd,
|
|
213
240
|
renderCard: renderCardProp,
|
|
214
241
|
renderColumnHeader,
|
|
215
242
|
renderColumnFooter,
|
|
@@ -230,6 +257,12 @@ var TaskBoard = ({
|
|
|
230
257
|
if (controlledColumns !== void 0) setInnerColumns(controlledColumns);
|
|
231
258
|
}, [controlledColumns]);
|
|
232
259
|
const currentColumns = controlledColumns ?? innerColumns;
|
|
260
|
+
const visibleColumns = useMemo(() => {
|
|
261
|
+
if (!filterText && (!hiddenColumns || hiddenColumns.length === 0)) {
|
|
262
|
+
return currentColumns;
|
|
263
|
+
}
|
|
264
|
+
return filterColumns(currentColumns, filterText, hiddenColumns);
|
|
265
|
+
}, [currentColumns, filterText, hiddenColumns]);
|
|
233
266
|
const columnsRef = useRef(currentColumns);
|
|
234
267
|
columnsRef.current = currentColumns;
|
|
235
268
|
const updateColumns = useCallback(
|
|
@@ -477,7 +510,7 @@ var TaskBoard = ({
|
|
|
477
510
|
const dragType = dragState?.type ?? null;
|
|
478
511
|
const dragStateId = dragState?.type === "card" ? dragState.id : null;
|
|
479
512
|
const kbDragStateId = kbDragState?.id ?? null;
|
|
480
|
-
return /* @__PURE__ */
|
|
513
|
+
return /* @__PURE__ */ jsxs(
|
|
481
514
|
"div",
|
|
482
515
|
{
|
|
483
516
|
ref: boardRef,
|
|
@@ -487,47 +520,67 @@ var TaskBoard = ({
|
|
|
487
520
|
"aria-label": resolveLocaleText(labels.boardAriaLabel),
|
|
488
521
|
"data-tiger-task-board": "",
|
|
489
522
|
...rest,
|
|
490
|
-
children:
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
523
|
+
children: [
|
|
524
|
+
visibleColumns.map((col, i) => {
|
|
525
|
+
const isDropTarget = dragState?.type === "card" && dropTargetColumnId === col.id;
|
|
526
|
+
const isColDragging = dragState?.type === "column" && dragState.id === col.id;
|
|
527
|
+
return /* @__PURE__ */ jsx(
|
|
528
|
+
ColumnItem,
|
|
529
|
+
{
|
|
530
|
+
column: col,
|
|
531
|
+
colIndex: i,
|
|
532
|
+
isDropTarget,
|
|
533
|
+
isColDragging,
|
|
534
|
+
dropIdx: isDropTarget ? dropIdx : -1,
|
|
535
|
+
draggable,
|
|
536
|
+
columnDraggable,
|
|
537
|
+
labels,
|
|
538
|
+
renderCardProp,
|
|
539
|
+
renderColumnHeader,
|
|
540
|
+
renderColumnFooter,
|
|
541
|
+
renderEmptyColumn,
|
|
542
|
+
onCardAdd,
|
|
543
|
+
dragType,
|
|
544
|
+
onCardDragStart: handleCardDragStart,
|
|
545
|
+
onCardDragOver: handleCardDragOver,
|
|
546
|
+
onCardDrop: handleCardDrop,
|
|
547
|
+
onDragEnd: handleDragEnd,
|
|
548
|
+
onDragLeave: handleDragLeave,
|
|
549
|
+
onColumnDragStart: handleColumnDragStart,
|
|
550
|
+
onColumnDragOver: handleColumnDragOver,
|
|
551
|
+
onColumnDrop: handleColumnDrop,
|
|
552
|
+
onCardTouchStart: handleTouchStart,
|
|
553
|
+
onCardTouchMove: handleTouchMove,
|
|
554
|
+
onCardTouchEnd: handleTouchEnd,
|
|
555
|
+
onColumnTouchStart: handleColumnTouchStart,
|
|
556
|
+
onColumnTouchMove: handleColumnTouchMove,
|
|
557
|
+
onColumnTouchEnd: handleColumnTouchEnd,
|
|
558
|
+
onCardKeyDown: handleCardKeyDown,
|
|
559
|
+
dragStateId,
|
|
560
|
+
kbDragStateId,
|
|
561
|
+
showCardCount,
|
|
562
|
+
allowAddCard
|
|
563
|
+
},
|
|
564
|
+
String(col.id)
|
|
565
|
+
);
|
|
566
|
+
}),
|
|
567
|
+
allowAddColumn && /* @__PURE__ */ jsx(
|
|
568
|
+
"div",
|
|
495
569
|
{
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
onCardDragStart: handleCardDragStart,
|
|
511
|
-
onCardDragOver: handleCardDragOver,
|
|
512
|
-
onCardDrop: handleCardDrop,
|
|
513
|
-
onDragEnd: handleDragEnd,
|
|
514
|
-
onDragLeave: handleDragLeave,
|
|
515
|
-
onColumnDragStart: handleColumnDragStart,
|
|
516
|
-
onColumnDragOver: handleColumnDragOver,
|
|
517
|
-
onColumnDrop: handleColumnDrop,
|
|
518
|
-
onCardTouchStart: handleTouchStart,
|
|
519
|
-
onCardTouchMove: handleTouchMove,
|
|
520
|
-
onCardTouchEnd: handleTouchEnd,
|
|
521
|
-
onColumnTouchStart: handleColumnTouchStart,
|
|
522
|
-
onColumnTouchMove: handleColumnTouchMove,
|
|
523
|
-
onColumnTouchEnd: handleColumnTouchEnd,
|
|
524
|
-
onCardKeyDown: handleCardKeyDown,
|
|
525
|
-
dragStateId,
|
|
526
|
-
kbDragStateId
|
|
527
|
-
},
|
|
528
|
-
String(col.id)
|
|
529
|
-
);
|
|
530
|
-
})
|
|
570
|
+
className: kanbanAddColumnClasses,
|
|
571
|
+
role: "button",
|
|
572
|
+
tabIndex: 0,
|
|
573
|
+
onClick: () => onColumnAdd?.(),
|
|
574
|
+
onKeyDown: (e) => {
|
|
575
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
576
|
+
e.preventDefault();
|
|
577
|
+
onColumnAdd?.();
|
|
578
|
+
}
|
|
579
|
+
},
|
|
580
|
+
children: "+ Add column"
|
|
581
|
+
}
|
|
582
|
+
)
|
|
583
|
+
]
|
|
531
584
|
}
|
|
532
585
|
);
|
|
533
586
|
};
|
|
@@ -89,9 +89,12 @@ var ColumnItem = React__default.default.memo(
|
|
|
89
89
|
onColumnTouchEnd,
|
|
90
90
|
onCardKeyDown,
|
|
91
91
|
dragStateId,
|
|
92
|
-
kbDragStateId
|
|
92
|
+
kbDragStateId,
|
|
93
|
+
showCardCount,
|
|
94
|
+
allowAddCard
|
|
93
95
|
}) => {
|
|
94
96
|
const wipOver = tigercatCore.isWipExceeded(column);
|
|
97
|
+
const cardCount = showCardCount ? tigercatCore.getColumnCardCount(column) : null;
|
|
95
98
|
const colClasses = tigercatCore.classNames(
|
|
96
99
|
tigercatCore.taskBoardColumnClasses,
|
|
97
100
|
isDropTarget && tigercatCore.taskBoardColumnDropTargetClasses,
|
|
@@ -159,7 +162,7 @@ var ColumnItem = React__default.default.memo(
|
|
|
159
162
|
children: renderColumnHeader ? renderColumnHeader(column) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
160
163
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: wipOver ? tigercatCore.taskBoardWipExceededClasses : void 0, children: [
|
|
161
164
|
column.title,
|
|
162
|
-
column.wipLimit != null ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-2 text-xs font-normal opacity-70", title: wipTitle, children: [
|
|
165
|
+
showCardCount && cardCount ? null : column.wipLimit != null ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-2 text-xs font-normal opacity-70", title: wipTitle, children: [
|
|
163
166
|
"(",
|
|
164
167
|
column.cards.length,
|
|
165
168
|
"/",
|
|
@@ -167,6 +170,16 @@ var ColumnItem = React__default.default.memo(
|
|
|
167
170
|
")"
|
|
168
171
|
] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 text-xs font-normal opacity-50", children: column.cards.length })
|
|
169
172
|
] }),
|
|
173
|
+
showCardCount && cardCount && /* @__PURE__ */ jsxRuntime.jsx(
|
|
174
|
+
"span",
|
|
175
|
+
{
|
|
176
|
+
className: tigercatCore.classNames(
|
|
177
|
+
tigercatCore.kanbanCardCountClasses,
|
|
178
|
+
wipOver && tigercatCore.taskBoardWipExceededClasses
|
|
179
|
+
),
|
|
180
|
+
children: cardCount.limit ? `${cardCount.count}/${cardCount.limit}` : `${cardCount.count}`
|
|
181
|
+
}
|
|
182
|
+
),
|
|
170
183
|
column.description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-normal text-[var(--tiger-text-muted,#6b7280)] truncate max-w-[120px]", children: column.description })
|
|
171
184
|
] })
|
|
172
185
|
}
|
|
@@ -183,14 +196,22 @@ var ColumnItem = React__default.default.memo(
|
|
|
183
196
|
children: cardsContent
|
|
184
197
|
}
|
|
185
198
|
),
|
|
186
|
-
renderColumnFooter ? renderColumnFooter(column) : onCardAdd ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
199
|
+
renderColumnFooter ? renderColumnFooter(column) : onCardAdd || allowAddCard ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
187
200
|
"div",
|
|
188
201
|
{
|
|
189
202
|
className: tigercatCore.classNames(
|
|
190
203
|
"border-t border-[var(--tiger-border,#e5e7eb)]",
|
|
191
204
|
tigercatCore.taskBoardAddCardClasses
|
|
192
205
|
),
|
|
193
|
-
|
|
206
|
+
role: "button",
|
|
207
|
+
tabIndex: 0,
|
|
208
|
+
onClick: () => onCardAdd?.(column.id),
|
|
209
|
+
onKeyDown: (e) => {
|
|
210
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
211
|
+
e.preventDefault();
|
|
212
|
+
onCardAdd?.(column.id);
|
|
213
|
+
}
|
|
214
|
+
},
|
|
194
215
|
children: [
|
|
195
216
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "+" }),
|
|
196
217
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: tigercatCore.resolveLocaleText(labels.addCardText) })
|
|
@@ -201,7 +222,7 @@ var ColumnItem = React__default.default.memo(
|
|
|
201
222
|
}
|
|
202
223
|
);
|
|
203
224
|
},
|
|
204
|
-
(prev, next) => prev.column === next.column && prev.colIndex === next.colIndex && prev.isDropTarget === next.isDropTarget && prev.isColDragging === next.isColDragging && prev.dropIdx === next.dropIdx && prev.draggable === next.draggable && prev.columnDraggable === next.columnDraggable && prev.dragType === next.dragType && prev.dragStateId === next.dragStateId && prev.kbDragStateId === next.kbDragStateId && prev.onCardAdd === next.onCardAdd
|
|
225
|
+
(prev, next) => prev.column === next.column && prev.colIndex === next.colIndex && prev.isDropTarget === next.isDropTarget && prev.isColDragging === next.isColDragging && prev.dropIdx === next.dropIdx && prev.draggable === next.draggable && prev.columnDraggable === next.columnDraggable && prev.dragType === next.dragType && prev.dragStateId === next.dragStateId && prev.kbDragStateId === next.kbDragStateId && prev.onCardAdd === next.onCardAdd && prev.showCardCount === next.showCardCount && prev.allowAddCard === next.allowAddCard
|
|
205
226
|
);
|
|
206
227
|
ColumnItem.displayName = "TaskBoardColumnItem";
|
|
207
228
|
var TaskBoard = ({
|
|
@@ -216,6 +237,12 @@ var TaskBoard = ({
|
|
|
216
237
|
onColumnMove,
|
|
217
238
|
onColumnsChange,
|
|
218
239
|
onCardAdd,
|
|
240
|
+
filterText = "",
|
|
241
|
+
hiddenColumns,
|
|
242
|
+
showCardCount = false,
|
|
243
|
+
allowAddCard = false,
|
|
244
|
+
allowAddColumn = false,
|
|
245
|
+
onColumnAdd,
|
|
219
246
|
renderCard: renderCardProp,
|
|
220
247
|
renderColumnHeader,
|
|
221
248
|
renderColumnFooter,
|
|
@@ -236,6 +263,12 @@ var TaskBoard = ({
|
|
|
236
263
|
if (controlledColumns !== void 0) setInnerColumns(controlledColumns);
|
|
237
264
|
}, [controlledColumns]);
|
|
238
265
|
const currentColumns = controlledColumns ?? innerColumns;
|
|
266
|
+
const visibleColumns = React.useMemo(() => {
|
|
267
|
+
if (!filterText && (!hiddenColumns || hiddenColumns.length === 0)) {
|
|
268
|
+
return currentColumns;
|
|
269
|
+
}
|
|
270
|
+
return tigercatCore.filterColumns(currentColumns, filterText, hiddenColumns);
|
|
271
|
+
}, [currentColumns, filterText, hiddenColumns]);
|
|
239
272
|
const columnsRef = React.useRef(currentColumns);
|
|
240
273
|
columnsRef.current = currentColumns;
|
|
241
274
|
const updateColumns = React.useCallback(
|
|
@@ -483,7 +516,7 @@ var TaskBoard = ({
|
|
|
483
516
|
const dragType = dragState?.type ?? null;
|
|
484
517
|
const dragStateId = dragState?.type === "card" ? dragState.id : null;
|
|
485
518
|
const kbDragStateId = kbDragState?.id ?? null;
|
|
486
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
519
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
487
520
|
"div",
|
|
488
521
|
{
|
|
489
522
|
ref: boardRef,
|
|
@@ -493,47 +526,67 @@ var TaskBoard = ({
|
|
|
493
526
|
"aria-label": tigercatCore.resolveLocaleText(labels.boardAriaLabel),
|
|
494
527
|
"data-tiger-task-board": "",
|
|
495
528
|
...rest,
|
|
496
|
-
children:
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
529
|
+
children: [
|
|
530
|
+
visibleColumns.map((col, i) => {
|
|
531
|
+
const isDropTarget = dragState?.type === "card" && dropTargetColumnId === col.id;
|
|
532
|
+
const isColDragging = dragState?.type === "column" && dragState.id === col.id;
|
|
533
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
534
|
+
ColumnItem,
|
|
535
|
+
{
|
|
536
|
+
column: col,
|
|
537
|
+
colIndex: i,
|
|
538
|
+
isDropTarget,
|
|
539
|
+
isColDragging,
|
|
540
|
+
dropIdx: isDropTarget ? dropIdx : -1,
|
|
541
|
+
draggable,
|
|
542
|
+
columnDraggable,
|
|
543
|
+
labels,
|
|
544
|
+
renderCardProp,
|
|
545
|
+
renderColumnHeader,
|
|
546
|
+
renderColumnFooter,
|
|
547
|
+
renderEmptyColumn,
|
|
548
|
+
onCardAdd,
|
|
549
|
+
dragType,
|
|
550
|
+
onCardDragStart: handleCardDragStart,
|
|
551
|
+
onCardDragOver: handleCardDragOver,
|
|
552
|
+
onCardDrop: handleCardDrop,
|
|
553
|
+
onDragEnd: handleDragEnd,
|
|
554
|
+
onDragLeave: handleDragLeave,
|
|
555
|
+
onColumnDragStart: handleColumnDragStart,
|
|
556
|
+
onColumnDragOver: handleColumnDragOver,
|
|
557
|
+
onColumnDrop: handleColumnDrop,
|
|
558
|
+
onCardTouchStart: handleTouchStart,
|
|
559
|
+
onCardTouchMove: handleTouchMove,
|
|
560
|
+
onCardTouchEnd: handleTouchEnd,
|
|
561
|
+
onColumnTouchStart: handleColumnTouchStart,
|
|
562
|
+
onColumnTouchMove: handleColumnTouchMove,
|
|
563
|
+
onColumnTouchEnd: handleColumnTouchEnd,
|
|
564
|
+
onCardKeyDown: handleCardKeyDown,
|
|
565
|
+
dragStateId,
|
|
566
|
+
kbDragStateId,
|
|
567
|
+
showCardCount,
|
|
568
|
+
allowAddCard
|
|
569
|
+
},
|
|
570
|
+
String(col.id)
|
|
571
|
+
);
|
|
572
|
+
}),
|
|
573
|
+
allowAddColumn && /* @__PURE__ */ jsxRuntime.jsx(
|
|
574
|
+
"div",
|
|
501
575
|
{
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
onCardDragStart: handleCardDragStart,
|
|
517
|
-
onCardDragOver: handleCardDragOver,
|
|
518
|
-
onCardDrop: handleCardDrop,
|
|
519
|
-
onDragEnd: handleDragEnd,
|
|
520
|
-
onDragLeave: handleDragLeave,
|
|
521
|
-
onColumnDragStart: handleColumnDragStart,
|
|
522
|
-
onColumnDragOver: handleColumnDragOver,
|
|
523
|
-
onColumnDrop: handleColumnDrop,
|
|
524
|
-
onCardTouchStart: handleTouchStart,
|
|
525
|
-
onCardTouchMove: handleTouchMove,
|
|
526
|
-
onCardTouchEnd: handleTouchEnd,
|
|
527
|
-
onColumnTouchStart: handleColumnTouchStart,
|
|
528
|
-
onColumnTouchMove: handleColumnTouchMove,
|
|
529
|
-
onColumnTouchEnd: handleColumnTouchEnd,
|
|
530
|
-
onCardKeyDown: handleCardKeyDown,
|
|
531
|
-
dragStateId,
|
|
532
|
-
kbDragStateId
|
|
533
|
-
},
|
|
534
|
-
String(col.id)
|
|
535
|
-
);
|
|
536
|
-
})
|
|
576
|
+
className: tigercatCore.kanbanAddColumnClasses,
|
|
577
|
+
role: "button",
|
|
578
|
+
tabIndex: 0,
|
|
579
|
+
onClick: () => onColumnAdd?.(),
|
|
580
|
+
onKeyDown: (e) => {
|
|
581
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
582
|
+
e.preventDefault();
|
|
583
|
+
onColumnAdd?.();
|
|
584
|
+
}
|
|
585
|
+
},
|
|
586
|
+
children: "+ Add column"
|
|
587
|
+
}
|
|
588
|
+
)
|
|
589
|
+
]
|
|
537
590
|
}
|
|
538
591
|
);
|
|
539
592
|
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkH3JAEEEE_js = require('./chunk-H3JAEEEE.js');
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
|
|
6
|
+
var Kanban = ({
|
|
7
|
+
showCardCount = true,
|
|
8
|
+
allowAddCard = true,
|
|
9
|
+
allowAddColumn = false,
|
|
10
|
+
...props
|
|
11
|
+
}) => {
|
|
12
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13
|
+
chunkH3JAEEEE_js.TaskBoard,
|
|
14
|
+
{
|
|
15
|
+
showCardCount,
|
|
16
|
+
allowAddCard,
|
|
17
|
+
allowAddColumn,
|
|
18
|
+
...props
|
|
19
|
+
}
|
|
20
|
+
);
|
|
21
|
+
};
|
|
22
|
+
var Kanban_default = Kanban;
|
|
23
|
+
|
|
24
|
+
exports.Kanban = Kanban;
|
|
25
|
+
exports.Kanban_default = Kanban_default;
|
|
@@ -19,21 +19,30 @@ var Splitter = ({
|
|
|
19
19
|
children
|
|
20
20
|
}) => {
|
|
21
21
|
const containerRef = useRef(null);
|
|
22
|
-
const [paneSizes, setPaneSizes] = useState(
|
|
22
|
+
const [paneSizes, setPaneSizes] = useState([]);
|
|
23
23
|
const draggingRef = useRef(null);
|
|
24
24
|
useEffect(() => {
|
|
25
|
-
if (controlledSizes) setPaneSizes(controlledSizes);
|
|
26
|
-
}, [controlledSizes]);
|
|
27
|
-
useEffect(() => {
|
|
28
|
-
if (controlledSizes && controlledSizes.length > 0) return;
|
|
29
25
|
const el = containerRef.current;
|
|
30
26
|
if (!el) return;
|
|
31
27
|
const paneCount = React.Children.count(children);
|
|
32
28
|
if (paneCount === 0) return;
|
|
33
29
|
const totalGutter = (paneCount - 1) * gutterSize;
|
|
34
30
|
const total = direction === "horizontal" ? el.clientWidth - totalGutter : el.clientHeight - totalGutter;
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
if (controlledSizes && controlledSizes.length > 0) {
|
|
32
|
+
if (total > 0) {
|
|
33
|
+
const sum = controlledSizes.reduce((a, b) => a + b, 0);
|
|
34
|
+
if (sum > 0) {
|
|
35
|
+
setPaneSizes(controlledSizes.map((s) => s / sum * total));
|
|
36
|
+
}
|
|
37
|
+
} else {
|
|
38
|
+
setPaneSizes([...controlledSizes]);
|
|
39
|
+
}
|
|
40
|
+
} else {
|
|
41
|
+
if (total > 0) {
|
|
42
|
+
const eachSize = total / paneCount;
|
|
43
|
+
setPaneSizes(Array.from({ length: paneCount }, () => eachSize));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
37
46
|
}, [children, direction, gutterSize, controlledSizes]);
|
|
38
47
|
const mins = useMemo(() => paneSizes.map(() => min), [paneSizes.length, min]);
|
|
39
48
|
const maxes = useMemo(() => paneSizes.map(() => max), [paneSizes.length, max]);
|
|
@@ -25,21 +25,30 @@ var Splitter = ({
|
|
|
25
25
|
children
|
|
26
26
|
}) => {
|
|
27
27
|
const containerRef = React.useRef(null);
|
|
28
|
-
const [paneSizes, setPaneSizes] = React.useState(
|
|
28
|
+
const [paneSizes, setPaneSizes] = React.useState([]);
|
|
29
29
|
const draggingRef = React.useRef(null);
|
|
30
30
|
React.useEffect(() => {
|
|
31
|
-
if (controlledSizes) setPaneSizes(controlledSizes);
|
|
32
|
-
}, [controlledSizes]);
|
|
33
|
-
React.useEffect(() => {
|
|
34
|
-
if (controlledSizes && controlledSizes.length > 0) return;
|
|
35
31
|
const el = containerRef.current;
|
|
36
32
|
if (!el) return;
|
|
37
33
|
const paneCount = React__default.default.Children.count(children);
|
|
38
34
|
if (paneCount === 0) return;
|
|
39
35
|
const totalGutter = (paneCount - 1) * gutterSize;
|
|
40
36
|
const total = direction === "horizontal" ? el.clientWidth - totalGutter : el.clientHeight - totalGutter;
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
if (controlledSizes && controlledSizes.length > 0) {
|
|
38
|
+
if (total > 0) {
|
|
39
|
+
const sum = controlledSizes.reduce((a, b) => a + b, 0);
|
|
40
|
+
if (sum > 0) {
|
|
41
|
+
setPaneSizes(controlledSizes.map((s) => s / sum * total));
|
|
42
|
+
}
|
|
43
|
+
} else {
|
|
44
|
+
setPaneSizes([...controlledSizes]);
|
|
45
|
+
}
|
|
46
|
+
} else {
|
|
47
|
+
if (total > 0) {
|
|
48
|
+
const eachSize = total / paneCount;
|
|
49
|
+
setPaneSizes(Array.from({ length: paneCount }, () => eachSize));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
43
52
|
}, [children, direction, gutterSize, controlledSizes]);
|
|
44
53
|
const mins = React.useMemo(() => paneSizes.map(() => min), [paneSizes.length, min]);
|
|
45
54
|
const maxes = React.useMemo(() => paneSizes.map(() => max), [paneSizes.length, max]);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import * as _expcat_tigercat_core from '@expcat/tigercat-core';
|
|
2
|
+
import { TaskBoardColumn, TaskBoardCardMoveEvent, TaskBoardColumnMoveEvent } from '@expcat/tigercat-core';
|
|
1
3
|
import React from 'react';
|
|
2
|
-
import { TaskBoardColumn, TaskBoardCardMoveEvent, TaskBoardColumnMoveEvent, TaskBoardCard } from '@expcat/tigercat-core';
|
|
3
4
|
|
|
4
5
|
interface KanbanProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
|
|
5
6
|
/** Controlled columns */
|
|
@@ -37,7 +38,7 @@ interface KanbanProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChan
|
|
|
37
38
|
/** Column add callback */
|
|
38
39
|
onColumnAdd?: () => void;
|
|
39
40
|
/** Custom card renderer */
|
|
40
|
-
renderCard?: (card: TaskBoardCard, columnId: string | number) => React.ReactNode;
|
|
41
|
+
renderCard?: (card: _expcat_tigercat_core.TaskBoardCard, columnId: string | number) => React.ReactNode;
|
|
41
42
|
/** Custom column header renderer */
|
|
42
43
|
renderColumnHeader?: (column: TaskBoardColumn) => React.ReactNode;
|
|
43
44
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import * as _expcat_tigercat_core from '@expcat/tigercat-core';
|
|
2
|
+
import { TaskBoardColumn, TaskBoardCardMoveEvent, TaskBoardColumnMoveEvent } from '@expcat/tigercat-core';
|
|
1
3
|
import React from 'react';
|
|
2
|
-
import { TaskBoardColumn, TaskBoardCardMoveEvent, TaskBoardColumnMoveEvent, TaskBoardCard } from '@expcat/tigercat-core';
|
|
3
4
|
|
|
4
5
|
interface KanbanProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
|
|
5
6
|
/** Controlled columns */
|
|
@@ -37,7 +38,7 @@ interface KanbanProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChan
|
|
|
37
38
|
/** Column add callback */
|
|
38
39
|
onColumnAdd?: () => void;
|
|
39
40
|
/** Custom card renderer */
|
|
40
|
-
renderCard?: (card: TaskBoardCard, columnId: string | number) => React.ReactNode;
|
|
41
|
+
renderCard?: (card: _expcat_tigercat_core.TaskBoardCard, columnId: string | number) => React.ReactNode;
|
|
41
42
|
/** Custom column header renderer */
|
|
42
43
|
renderColumnHeader?: (column: TaskBoardColumn) => React.ReactNode;
|
|
43
44
|
}
|
|
@@ -2,16 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
require('../chunk-
|
|
5
|
+
var chunkNG3GA5LF_js = require('../chunk-NG3GA5LF.js');
|
|
6
|
+
require('../chunk-H3JAEEEE.js');
|
|
7
|
+
require('../chunk-2XOFRGY6.js');
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
Object.defineProperty(exports, "Kanban", {
|
|
11
12
|
enumerable: true,
|
|
12
|
-
get: function () { return
|
|
13
|
+
get: function () { return chunkNG3GA5LF_js.Kanban; }
|
|
13
14
|
});
|
|
14
15
|
Object.defineProperty(exports, "default", {
|
|
15
16
|
enumerable: true,
|
|
16
|
-
get: function () { return
|
|
17
|
+
get: function () { return chunkNG3GA5LF_js.Kanban_default; }
|
|
17
18
|
});
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export { Kanban, Kanban_default as default } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { Kanban, Kanban_default as default } from '../chunk-7BVXG3Z5.mjs';
|
|
2
|
+
import '../chunk-DBNAL6G6.mjs';
|
|
3
|
+
import '../chunk-CRSMECWE.mjs';
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var chunkRFPXIDAK_js = require('../chunk-RFPXIDAK.js');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
Object.defineProperty(exports, "Splitter", {
|
|
10
10
|
enumerable: true,
|
|
11
|
-
get: function () { return
|
|
11
|
+
get: function () { return chunkRFPXIDAK_js.Splitter; }
|
|
12
12
|
});
|
|
13
13
|
Object.defineProperty(exports, "default", {
|
|
14
14
|
enumerable: true,
|
|
15
|
-
get: function () { return
|
|
15
|
+
get: function () { return chunkRFPXIDAK_js.Splitter_default; }
|
|
16
16
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { Splitter, Splitter_default as default } from '../chunk-
|
|
1
|
+
export { Splitter, Splitter_default as default } from '../chunk-PNSWIJG3.mjs';
|