@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.
@@ -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
- onClick: () => onCardAdd(column.id),
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__ */ jsx(
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: currentColumns.map((col, i) => {
491
- const isDropTarget = dragState?.type === "card" && dropTargetColumnId === col.id;
492
- const isColDragging = dragState?.type === "column" && dragState.id === col.id;
493
- return /* @__PURE__ */ jsx(
494
- ColumnItem,
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
- column: col,
497
- colIndex: i,
498
- isDropTarget,
499
- isColDragging,
500
- dropIdx: isDropTarget ? dropIdx : -1,
501
- draggable,
502
- columnDraggable,
503
- labels,
504
- renderCardProp,
505
- renderColumnHeader,
506
- renderColumnFooter,
507
- renderEmptyColumn,
508
- onCardAdd,
509
- dragType,
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
- onClick: () => onCardAdd(column.id),
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.jsx(
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: currentColumns.map((col, i) => {
497
- const isDropTarget = dragState?.type === "card" && dropTargetColumnId === col.id;
498
- const isColDragging = dragState?.type === "column" && dragState.id === col.id;
499
- return /* @__PURE__ */ jsxRuntime.jsx(
500
- ColumnItem,
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
- column: col,
503
- colIndex: i,
504
- isDropTarget,
505
- isColDragging,
506
- dropIdx: isDropTarget ? dropIdx : -1,
507
- draggable,
508
- columnDraggable,
509
- labels,
510
- renderCardProp,
511
- renderColumnHeader,
512
- renderColumnFooter,
513
- renderEmptyColumn,
514
- onCardAdd,
515
- dragType,
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(controlledSizes || []);
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
- const eachSize = total / paneCount;
36
- setPaneSizes(Array.from({ length: paneCount }, () => eachSize));
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(controlledSizes || []);
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
- const eachSize = total / paneCount;
42
- setPaneSizes(Array.from({ length: paneCount }, () => eachSize));
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 chunk24RUEJWB_js = require('../chunk-24RUEJWB.js');
6
- require('../chunk-UKGQ7256.js');
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 chunk24RUEJWB_js.Kanban; }
13
+ get: function () { return chunkNG3GA5LF_js.Kanban; }
13
14
  });
14
15
  Object.defineProperty(exports, "default", {
15
16
  enumerable: true,
16
- get: function () { return chunk24RUEJWB_js.Kanban_default; }
17
+ get: function () { return chunkNG3GA5LF_js.Kanban_default; }
17
18
  });
@@ -1,2 +1,3 @@
1
- export { Kanban, Kanban_default as default } from '../chunk-YXWRSEP5.mjs';
2
- import '../chunk-UQMPEMY7.mjs';
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 chunk45H3JEI3_js = require('../chunk-45H3JEI3.js');
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 chunk45H3JEI3_js.Splitter; }
11
+ get: function () { return chunkRFPXIDAK_js.Splitter; }
12
12
  });
13
13
  Object.defineProperty(exports, "default", {
14
14
  enumerable: true,
15
- get: function () { return chunk45H3JEI3_js.Splitter_default; }
15
+ get: function () { return chunkRFPXIDAK_js.Splitter_default; }
16
16
  });
@@ -1 +1 @@
1
- export { Splitter, Splitter_default as default } from '../chunk-QVZTZHCJ.mjs';
1
+ export { Splitter, Splitter_default as default } from '../chunk-PNSWIJG3.mjs';