@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.
@@ -2,16 +2,16 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var chunkWGPUGPYE_js = require('../chunk-WGPUGPYE.js');
5
+ var chunkH3JAEEEE_js = require('../chunk-H3JAEEEE.js');
6
6
  require('../chunk-2XOFRGY6.js');
7
7
 
8
8
 
9
9
 
10
10
  Object.defineProperty(exports, "TaskBoard", {
11
11
  enumerable: true,
12
- get: function () { return chunkWGPUGPYE_js.TaskBoard; }
12
+ get: function () { return chunkH3JAEEEE_js.TaskBoard; }
13
13
  });
14
14
  Object.defineProperty(exports, "default", {
15
15
  enumerable: true,
16
- get: function () { return chunkWGPUGPYE_js.TaskBoard_default; }
16
+ get: function () { return chunkH3JAEEEE_js.TaskBoard_default; }
17
17
  });
@@ -1,2 +1,2 @@
1
- export { TaskBoard, TaskBoard_default as default } from '../chunk-EHU3J4B2.mjs';
1
+ export { TaskBoard, TaskBoard_default as default } from '../chunk-DBNAL6G6.mjs';
2
2
  import '../chunk-CRSMECWE.mjs';
package/dist/index.js CHANGED
@@ -14,11 +14,10 @@ var chunk4QJZT6QK_js = require('./chunk-4QJZT6QK.js');
14
14
  var chunkJQK354YN_js = require('./chunk-JQK354YN.js');
15
15
  var chunkRWZIWKZR_js = require('./chunk-RWZIWKZR.js');
16
16
  var chunkVVO4V4IK_js = require('./chunk-VVO4V4IK.js');
17
- var chunkWGPUGPYE_js = require('./chunk-WGPUGPYE.js');
18
17
  var chunk4PPTEEDI_js = require('./chunk-4PPTEEDI.js');
19
18
  var chunk7Z64GEMN_js = require('./chunk-7Z64GEMN.js');
20
19
  var chunkPTEDJ6MA_js = require('./chunk-PTEDJ6MA.js');
21
- var chunk45H3JEI3_js = require('./chunk-45H3JEI3.js');
20
+ var chunkRFPXIDAK_js = require('./chunk-RFPXIDAK.js');
22
21
  var chunkF6KHZNRS_js = require('./chunk-F6KHZNRS.js');
23
22
  var chunkTKZO5UBH_js = require('./chunk-TKZO5UBH.js');
24
23
  var chunkDAR2BMMV_js = require('./chunk-DAR2BMMV.js');
@@ -52,7 +51,8 @@ var chunkXEYP62CR_js = require('./chunk-XEYP62CR.js');
52
51
  var chunkTZNTHABR_js = require('./chunk-TZNTHABR.js');
53
52
  var chunkI3CDTF4U_js = require('./chunk-I3CDTF4U.js');
54
53
  var chunk65VXCN5N_js = require('./chunk-65VXCN5N.js');
55
- var chunk24RUEJWB_js = require('./chunk-24RUEJWB.js');
54
+ var chunkNG3GA5LF_js = require('./chunk-NG3GA5LF.js');
55
+ var chunkH3JAEEEE_js = require('./chunk-H3JAEEEE.js');
56
56
  var chunkQYGBT4NL_js = require('./chunk-QYGBT4NL.js');
57
57
  var chunkH5MZ54PM_js = require('./chunk-H5MZ54PM.js');
58
58
  var chunkFHE4D56E_js = require('./chunk-FHE4D56E.js');
@@ -316,10 +316,6 @@ Object.defineProperty(exports, "Switch", {
316
316
  enumerable: true,
317
317
  get: function () { return chunkVVO4V4IK_js.Switch; }
318
318
  });
319
- Object.defineProperty(exports, "TaskBoard", {
320
- enumerable: true,
321
- get: function () { return chunkWGPUGPYE_js.TaskBoard; }
322
- });
323
319
  Object.defineProperty(exports, "Skeleton", {
324
320
  enumerable: true,
325
321
  get: function () { return chunk4PPTEEDI_js.Skeleton; }
@@ -334,7 +330,7 @@ Object.defineProperty(exports, "Space", {
334
330
  });
335
331
  Object.defineProperty(exports, "Splitter", {
336
332
  enumerable: true,
337
- get: function () { return chunk45H3JEI3_js.Splitter; }
333
+ get: function () { return chunkRFPXIDAK_js.Splitter; }
338
334
  });
339
335
  Object.defineProperty(exports, "Statistic", {
340
336
  enumerable: true,
@@ -494,7 +490,11 @@ Object.defineProperty(exports, "InputNumber", {
494
490
  });
495
491
  Object.defineProperty(exports, "Kanban", {
496
492
  enumerable: true,
497
- get: function () { return chunk24RUEJWB_js.Kanban; }
493
+ get: function () { return chunkNG3GA5LF_js.Kanban; }
494
+ });
495
+ Object.defineProperty(exports, "TaskBoard", {
496
+ enumerable: true,
497
+ get: function () { return chunkH3JAEEEE_js.TaskBoard; }
498
498
  });
499
499
  Object.defineProperty(exports, "FormWizard", {
500
500
  enumerable: true,
package/dist/index.mjs CHANGED
@@ -12,11 +12,10 @@ export { Tree } from './chunk-QPOH6SOO.mjs';
12
12
  export { SubMenu } from './chunk-SMC2RV3V.mjs';
13
13
  export { SunburstChart } from './chunk-YJ4W6DMX.mjs';
14
14
  export { Switch } from './chunk-7CAJK2ZK.mjs';
15
- export { TaskBoard } from './chunk-EHU3J4B2.mjs';
16
15
  export { Skeleton } from './chunk-5P5M656V.mjs';
17
16
  export { Slider } from './chunk-NKKIJQMV.mjs';
18
17
  export { Space } from './chunk-XJ7U2W7S.mjs';
19
- export { Splitter } from './chunk-QVZTZHCJ.mjs';
18
+ export { Splitter } from './chunk-PNSWIJG3.mjs';
20
19
  export { Statistic } from './chunk-DZGDCRBH.mjs';
21
20
  export { Stepper } from './chunk-HZHFFVP7.mjs';
22
21
  export { Resizable } from './chunk-BALJCZ62.mjs';
@@ -50,7 +49,8 @@ export { ImageViewer } from './chunk-6E7FPBRR.mjs';
50
49
  export { InfiniteScroll } from './chunk-BR5OSUZT.mjs';
51
50
  export { InputGroup, InputGroupAddon } from './chunk-34VGG7AK.mjs';
52
51
  export { InputNumber } from './chunk-INBSKSZG.mjs';
53
- export { Kanban } from './chunk-YXWRSEP5.mjs';
52
+ export { Kanban } from './chunk-7BVXG3Z5.mjs';
53
+ export { TaskBoard } from './chunk-DBNAL6G6.mjs';
54
54
  export { FormWizard } from './chunk-QPGL4YEO.mjs';
55
55
  export { Steps, StepsItem, useStepsContext } from './chunk-AUP3PMDD.mjs';
56
56
  export { FunnelChart } from './chunk-R3QWJ7GT.mjs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expcat/tigercat-react",
3
- "version": "1.0.4",
3
+ "version": "1.0.7",
4
4
  "description": "React components for Tigercat UI library",
5
5
  "license": "MIT",
6
6
  "author": "Yizhe Wang",
@@ -42,7 +42,7 @@
42
42
  "access": "public"
43
43
  },
44
44
  "dependencies": {
45
- "@expcat/tigercat-core": "1.0.4"
45
+ "@expcat/tigercat-core": "1.0.7"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@types/node": "^25.0.3",
@@ -1,293 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkUKGQ7256_js = require('./chunk-UKGQ7256.js');
4
- var React = require('react');
5
- var tigercatCore = require('@expcat/tigercat-core');
6
- var jsxRuntime = require('react/jsx-runtime');
7
-
8
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
-
10
- var React__default = /*#__PURE__*/_interopDefault(React);
11
-
12
- var Kanban = ({
13
- columns: controlledColumns,
14
- defaultColumns = [],
15
- draggable = true,
16
- columnDraggable = true,
17
- enforceWipLimit = false,
18
- beforeCardMove,
19
- beforeColumnMove,
20
- filterText = "",
21
- hiddenColumns,
22
- showCardCount = true,
23
- allowAddCard = true,
24
- allowAddColumn = false,
25
- onCardMove,
26
- onColumnMove,
27
- onColumnsChange,
28
- onCardAdd,
29
- onColumnAdd,
30
- renderCard,
31
- renderColumnHeader,
32
- className,
33
- ...restProps
34
- }) => {
35
- const boardRef = React.useRef(null);
36
- const [rawColumns, setInternalColumns, isControlled] = chunkUKGQ7256_js.useControlledState(
37
- controlledColumns,
38
- defaultColumns
39
- );
40
- const visibleColumns = React.useMemo(
41
- () => tigercatCore.filterColumns(rawColumns, filterText, hiddenColumns),
42
- [rawColumns, filterText, hiddenColumns]
43
- );
44
- const [dragState, setDragState] = React.useState(null);
45
- const [dropTargetCol, setDropTargetCol] = React.useState(null);
46
- const [dropTargetIdx, setDropTargetIdx] = React.useState(-1);
47
- function updateColumns(cols) {
48
- if (!isControlled) setInternalColumns(cols);
49
- onColumnsChange?.(cols);
50
- }
51
- function resetDrag() {
52
- setDragState(null);
53
- setDropTargetCol(null);
54
- setDropTargetIdx(-1);
55
- }
56
- const handleCardDragStart = React.useCallback(
57
- (e, card, colId, idx) => {
58
- if (!draggable) return;
59
- tigercatCore.setDragData(e.nativeEvent.dataTransfer, tigercatCore.createCardDragData(card.id, colId, idx));
60
- setDragState({ type: "card", id: card.id, fromColumnId: colId, fromIndex: idx });
61
- },
62
- [draggable]
63
- );
64
- const handleColumnDragStart = React.useCallback(
65
- (e, colId, idx) => {
66
- if (!columnDraggable) return;
67
- tigercatCore.setDragData(e.nativeEvent.dataTransfer, tigercatCore.createColumnDragData(colId, idx));
68
- setDragState({ type: "column", id: colId, fromIndex: idx });
69
- },
70
- [columnDraggable]
71
- );
72
- const handleDragOver = React.useCallback(
73
- (e, colId) => {
74
- e.preventDefault();
75
- if (!dragState) return;
76
- setDropTargetCol(colId);
77
- if (dragState.type === "card") {
78
- const colEl = e.currentTarget.querySelector("[data-kanban-body]");
79
- if (colEl) {
80
- const cards = Array.from(colEl.querySelectorAll("[data-kanban-card]"));
81
- const rects = cards.map((c) => c.getBoundingClientRect());
82
- setDropTargetIdx(tigercatCore.getDropIndex(e.clientY, rects));
83
- }
84
- }
85
- },
86
- [dragState]
87
- );
88
- const handleColumnDragOver = React.useCallback(
89
- (e) => {
90
- e.preventDefault();
91
- if (!dragState || dragState.type !== "column") return;
92
- const boardEl = boardRef.current;
93
- if (!boardEl) return;
94
- const cols = Array.from(boardEl.querySelectorAll("[data-kanban-column]"));
95
- const rects = cols.map((c) => c.getBoundingClientRect());
96
- setDropTargetIdx(tigercatCore.getColumnDropIndex(e.clientX, rects));
97
- },
98
- [dragState]
99
- );
100
- const handleDrop = React.useCallback(
101
- async (e) => {
102
- e.preventDefault();
103
- const data = tigercatCore.parseDragData(e.nativeEvent.dataTransfer);
104
- if (!data || !dragState) {
105
- resetDrag();
106
- return;
107
- }
108
- if (data.type === "card" && dropTargetCol != null) {
109
- if (beforeCardMove) {
110
- const evt = {
111
- cardId: data.cardId,
112
- fromColumnId: data.columnId,
113
- toColumnId: dropTargetCol,
114
- fromIndex: data.index,
115
- toIndex: dropTargetIdx
116
- };
117
- const ok = await beforeCardMove(evt);
118
- if (!ok) {
119
- resetDrag();
120
- return;
121
- }
122
- }
123
- const result = tigercatCore.moveCard(
124
- rawColumns,
125
- data.cardId,
126
- data.columnId,
127
- dropTargetCol,
128
- dropTargetIdx,
129
- { enforceWipLimit }
130
- );
131
- if (result) {
132
- updateColumns(result.columns);
133
- onCardMove?.(result.event);
134
- }
135
- } else if (data.type === "column") {
136
- if (beforeColumnMove) {
137
- const evt = {
138
- columnId: data.columnId,
139
- fromIndex: data.index,
140
- toIndex: dropTargetIdx
141
- };
142
- const ok = await beforeColumnMove(evt);
143
- if (!ok) {
144
- resetDrag();
145
- return;
146
- }
147
- }
148
- const result = tigercatCore.reorderColumns(rawColumns, data.index, dropTargetIdx);
149
- if (result) {
150
- updateColumns(result.columns);
151
- onColumnMove?.(result.event);
152
- }
153
- }
154
- resetDrag();
155
- },
156
- [
157
- dragState,
158
- dropTargetCol,
159
- dropTargetIdx,
160
- rawColumns,
161
- enforceWipLimit,
162
- beforeCardMove,
163
- beforeColumnMove,
164
- onCardMove,
165
- onColumnMove
166
- ]
167
- );
168
- const containerClasses = React.useMemo(
169
- () => tigercatCore.classNames(tigercatCore.getKanbanContainerClasses(className)),
170
- [className]
171
- );
172
- return /* @__PURE__ */ jsxRuntime.jsxs(
173
- "div",
174
- {
175
- ref: boardRef,
176
- className: containerClasses,
177
- role: "region",
178
- "aria-label": "Kanban board",
179
- onDragOver: handleColumnDragOver,
180
- ...restProps,
181
- children: [
182
- visibleColumns.map((col, colIdx) => {
183
- const wipExceeded = tigercatCore.isWipExceeded(col);
184
- const cardCount = tigercatCore.getColumnCardCount(col);
185
- const isDragOverCol = dropTargetCol === col.id;
186
- const isColDragging = dragState?.type === "column" && dragState.id === col.id;
187
- return /* @__PURE__ */ jsxRuntime.jsxs(
188
- "div",
189
- {
190
- className: tigercatCore.classNames(
191
- tigercatCore.taskBoardColumnClasses,
192
- isDragOverCol && dragState?.type === "card" && tigercatCore.taskBoardColumnDropTargetClasses,
193
- isColDragging && tigercatCore.taskBoardColumnDraggingClasses
194
- ),
195
- "data-kanban-column": "",
196
- draggable: columnDraggable,
197
- onDragStart: (e) => handleColumnDragStart(e, col.id, colIdx),
198
- onDragOver: (e) => handleDragOver(e, col.id),
199
- onDrop: handleDrop,
200
- onDragEnd: resetDrag,
201
- children: [
202
- /* @__PURE__ */ jsxRuntime.jsxs(
203
- "div",
204
- {
205
- className: tigercatCore.classNames(
206
- tigercatCore.taskBoardColumnHeaderClasses,
207
- wipExceeded && tigercatCore.taskBoardWipExceededClasses
208
- ),
209
- children: [
210
- renderColumnHeader ? renderColumnHeader(col) : /* @__PURE__ */ jsxRuntime.jsx("span", { children: col.title }),
211
- showCardCount && /* @__PURE__ */ jsxRuntime.jsx(
212
- "span",
213
- {
214
- className: tigercatCore.classNames(
215
- tigercatCore.kanbanCardCountClasses,
216
- wipExceeded && tigercatCore.taskBoardWipExceededClasses
217
- ),
218
- children: cardCount.limit ? `${cardCount.count}/${cardCount.limit}` : `${cardCount.count}`
219
- }
220
- )
221
- ]
222
- }
223
- ),
224
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: tigercatCore.taskBoardColumnBodyClasses, "data-kanban-body": "", children: [
225
- col.cards.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: tigercatCore.taskBoardEmptyClasses, children: "No cards" }) : col.cards.map((card, cardIdx) => {
226
- const isCardDragging = dragState?.type === "card" && dragState.id === card.id;
227
- return /* @__PURE__ */ jsxRuntime.jsxs(React__default.default.Fragment, { children: [
228
- isDragOverCol && dragState?.type === "card" && dropTargetIdx === cardIdx && /* @__PURE__ */ jsxRuntime.jsx("div", { className: tigercatCore.taskBoardDropIndicatorClasses }),
229
- /* @__PURE__ */ jsxRuntime.jsx(
230
- "div",
231
- {
232
- className: tigercatCore.classNames(
233
- tigercatCore.taskBoardCardClasses,
234
- isCardDragging && tigercatCore.taskBoardCardDraggingClasses
235
- ),
236
- draggable,
237
- "data-kanban-card": "",
238
- onDragStart: (e) => handleCardDragStart(e, card, col.id, cardIdx),
239
- children: renderCard ? renderCard(card, col.id) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
240
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium text-sm", children: card.title }),
241
- card.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-[var(--tiger-text-muted,#6b7280)] mt-1", children: card.description })
242
- ] })
243
- }
244
- )
245
- ] }, card.id);
246
- }),
247
- isDragOverCol && dragState?.type === "card" && dropTargetIdx >= col.cards.length && /* @__PURE__ */ jsxRuntime.jsx("div", { className: tigercatCore.taskBoardDropIndicatorClasses })
248
- ] }),
249
- allowAddCard && /* @__PURE__ */ jsxRuntime.jsx(
250
- "div",
251
- {
252
- className: tigercatCore.kanbanAddCardClasses,
253
- role: "button",
254
- tabIndex: 0,
255
- onClick: () => onCardAdd?.(col.id),
256
- onKeyDown: (e) => {
257
- if (e.key === "Enter" || e.key === " ") {
258
- e.preventDefault();
259
- onCardAdd?.(col.id);
260
- }
261
- },
262
- children: "+ Add card"
263
- }
264
- )
265
- ]
266
- },
267
- col.id
268
- );
269
- }),
270
- allowAddColumn && /* @__PURE__ */ jsxRuntime.jsx(
271
- "div",
272
- {
273
- className: tigercatCore.kanbanAddColumnClasses,
274
- role: "button",
275
- tabIndex: 0,
276
- onClick: () => onColumnAdd?.(),
277
- onKeyDown: (e) => {
278
- if (e.key === "Enter" || e.key === " ") {
279
- e.preventDefault();
280
- onColumnAdd?.();
281
- }
282
- },
283
- children: "+ Add column"
284
- }
285
- )
286
- ]
287
- }
288
- );
289
- };
290
- var Kanban_default = Kanban;
291
-
292
- exports.Kanban = Kanban;
293
- exports.Kanban_default = Kanban_default;