@expcat/tigercat-vue 1.0.0 → 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.
Files changed (51) hide show
  1. package/dist/{chunk-A64AWAOW.mjs → chunk-3ICMBQPM.mjs} +2 -0
  2. package/dist/{chunk-4KCCUIGO.mjs → chunk-3PQ2I5IQ.mjs} +1 -1
  3. package/dist/{chunk-MI5EG5QX.js → chunk-4DJ2HAYO.js} +2 -2
  4. package/dist/{chunk-5DXIYS7U.js → chunk-5G5Q3TTH.js} +1 -1
  5. package/dist/{chunk-ESTA5C5P.js → chunk-D2I2NNYI.js} +1 -1
  6. package/dist/{chunk-LJJ3VTR3.mjs → chunk-EZ6GXQMP.mjs} +1 -1
  7. package/dist/{chunk-XYIAHZNM.mjs → chunk-GTSS7RAT.mjs} +1 -1
  8. package/dist/{chunk-XA5QMUZX.mjs → chunk-J7VTGSHX.mjs} +78 -17
  9. package/dist/{chunk-SI3JIHH4.js → chunk-KI35GUL5.js} +1 -1
  10. package/dist/{chunk-DC5J25FH.mjs → chunk-NMGH5YTV.mjs} +1 -1
  11. package/dist/{chunk-BDMWFNTC.js → chunk-O2Q4UYDA.js} +77 -16
  12. package/dist/chunk-PLGYRHPX.mjs +87 -0
  13. package/dist/{chunk-PUALBK3Y.js → chunk-S2PMAXBQ.js} +2 -0
  14. package/dist/{chunk-C76CIM26.mjs → chunk-SAMKKXAW.mjs} +1 -1
  15. package/dist/{chunk-4F5ABXXM.js → chunk-WB6JGQWN.js} +1 -1
  16. package/dist/chunk-WBY2ILFK.js +90 -0
  17. package/dist/{chunk-3YWYAQR6.js → chunk-XGJWUZWS.js} +10 -9
  18. package/dist/{chunk-OEHCRIVT.mjs → chunk-YYRJA6VQ.mjs} +9 -8
  19. package/dist/components/CropUpload.js +3 -3
  20. package/dist/components/CropUpload.mjs +1 -1
  21. package/dist/components/DataTableWithToolbar.d.mts +14 -14
  22. package/dist/components/DataTableWithToolbar.d.ts +14 -14
  23. package/dist/components/DataTableWithToolbar.js +4 -4
  24. package/dist/components/DataTableWithToolbar.mjs +2 -2
  25. package/dist/components/Dropdown.js +4 -4
  26. package/dist/components/Dropdown.mjs +1 -1
  27. package/dist/components/DropdownItem.js +4 -4
  28. package/dist/components/DropdownItem.mjs +2 -2
  29. package/dist/components/HeatmapChart.js +3 -3
  30. package/dist/components/HeatmapChart.mjs +1 -1
  31. package/dist/components/Kanban.d.mts +2 -2
  32. package/dist/components/Kanban.d.ts +2 -2
  33. package/dist/components/Kanban.js +4 -3
  34. package/dist/components/Kanban.mjs +2 -1
  35. package/dist/components/NotificationCenter.js +3 -3
  36. package/dist/components/NotificationCenter.mjs +1 -1
  37. package/dist/components/Table.js +3 -3
  38. package/dist/components/Table.mjs +1 -1
  39. package/dist/components/TaskBoard.d.mts +52 -1
  40. package/dist/components/TaskBoard.d.ts +52 -1
  41. package/dist/components/TaskBoard.js +3 -3
  42. package/dist/components/TaskBoard.mjs +1 -1
  43. package/dist/components/Transfer.js +3 -3
  44. package/dist/components/Transfer.mjs +1 -1
  45. package/dist/index.js +23 -23
  46. package/dist/index.mjs +10 -10
  47. package/package.json +2 -2
  48. package/dist/chunk-33C5E3AQ.mjs +0 -328
  49. package/dist/chunk-CXJUEG75.js +0 -331
  50. /package/dist/{chunk-HTOCKV2N.mjs → chunk-HTG6ISVH.mjs} +0 -0
  51. /package/dist/{chunk-UG6XPJ2N.js → chunk-TT5LWQIZ.js} +0 -0
package/dist/index.js CHANGED
@@ -9,12 +9,11 @@ var chunkUPPRQ3ZS_js = require('./chunk-UPPRQ3ZS.js');
9
9
  var chunkJN63Z5E5_js = require('./chunk-JN63Z5E5.js');
10
10
  var chunkQ6CGPWQF_js = require('./chunk-Q6CGPWQF.js');
11
11
  var chunk6VG6ARQG_js = require('./chunk-6VG6ARQG.js');
12
- var chunk4F5ABXXM_js = require('./chunk-4F5ABXXM.js');
12
+ var chunkWB6JGQWN_js = require('./chunk-WB6JGQWN.js');
13
13
  var chunkECUROLZ7_js = require('./chunk-ECUROLZ7.js');
14
14
  var chunkESALMEHU_js = require('./chunk-ESALMEHU.js');
15
15
  var chunkFOF7UBMU_js = require('./chunk-FOF7UBMU.js');
16
16
  var chunkLAAPLTP3_js = require('./chunk-LAAPLTP3.js');
17
- var chunkBDMWFNTC_js = require('./chunk-BDMWFNTC.js');
18
17
  var chunkT4DF24UV_js = require('./chunk-T4DF24UV.js');
19
18
  var chunkSLYUQ67P_js = require('./chunk-SLYUQ67P.js');
20
19
  var chunkZNVQ2OFX_js = require('./chunk-ZNVQ2OFX.js');
@@ -38,7 +37,7 @@ var chunkBZBVSB43_js = require('./chunk-BZBVSB43.js');
38
37
  var chunkGLW3P75K_js = require('./chunk-GLW3P75K.js');
39
38
  var chunkKFE7T7CN_js = require('./chunk-KFE7T7CN.js');
40
39
  var chunk2SK6T4WB_js = require('./chunk-2SK6T4WB.js');
41
- var chunk5DXIYS7U_js = require('./chunk-5DXIYS7U.js');
40
+ var chunk5G5Q3TTH_js = require('./chunk-5G5Q3TTH.js');
42
41
  var chunkBNIUWON3_js = require('./chunk-BNIUWON3.js');
43
42
  var chunk5JSU44MQ_js = require('./chunk-5JSU44MQ.js');
44
43
  var chunkTDL4BUUB_js = require('./chunk-TDL4BUUB.js');
@@ -54,29 +53,30 @@ var chunkNXGCLBVG_js = require('./chunk-NXGCLBVG.js');
54
53
  var chunkAFKNO6SF_js = require('./chunk-AFKNO6SF.js');
55
54
  var chunkDYSLYJ2W_js = require('./chunk-DYSLYJ2W.js');
56
55
  var chunkHK2TAPQX_js = require('./chunk-HK2TAPQX.js');
57
- var chunkCXJUEG75_js = require('./chunk-CXJUEG75.js');
56
+ var chunkWBY2ILFK_js = require('./chunk-WBY2ILFK.js');
57
+ var chunkO2Q4UYDA_js = require('./chunk-O2Q4UYDA.js');
58
58
  var chunkU2K7CF67_js = require('./chunk-U2K7CF67.js');
59
59
  var chunkWCZGYU7M_js = require('./chunk-WCZGYU7M.js');
60
60
  var chunkNOTJRUAK_js = require('./chunk-NOTJRUAK.js');
61
61
  var chunk6XU5PSC2_js = require('./chunk-6XU5PSC2.js');
62
62
  var chunk34ZZLKQ4_js = require('./chunk-34ZZLKQ4.js');
63
63
  var chunkCKXZONMO_js = require('./chunk-CKXZONMO.js');
64
- var chunkSI3JIHH4_js = require('./chunk-SI3JIHH4.js');
64
+ var chunkKI35GUL5_js = require('./chunk-KI35GUL5.js');
65
65
  var chunkRY2I56HB_js = require('./chunk-RY2I56HB.js');
66
66
  var chunkBUTNEKFD_js = require('./chunk-BUTNEKFD.js');
67
67
  var chunk6DP7XE77_js = require('./chunk-6DP7XE77.js');
68
- var chunkMI5EG5QX_js = require('./chunk-MI5EG5QX.js');
68
+ var chunk4DJ2HAYO_js = require('./chunk-4DJ2HAYO.js');
69
69
  var chunkNOZ65AMO_js = require('./chunk-NOZ65AMO.js');
70
70
  var chunkVDNAGLQJ_js = require('./chunk-VDNAGLQJ.js');
71
71
  var chunk2S5CNU36_js = require('./chunk-2S5CNU36.js');
72
72
  var chunkSWOQMMOT_js = require('./chunk-SWOQMMOT.js');
73
73
  var chunkSEKYX56R_js = require('./chunk-SEKYX56R.js');
74
74
  var chunkD6AWPRGV_js = require('./chunk-D6AWPRGV.js');
75
- var chunkESTA5C5P_js = require('./chunk-ESTA5C5P.js');
75
+ var chunkD2I2NNYI_js = require('./chunk-D2I2NNYI.js');
76
76
  var chunk7VSD3NPI_js = require('./chunk-7VSD3NPI.js');
77
77
  var chunkK2U3FEL7_js = require('./chunk-K2U3FEL7.js');
78
- var chunk3YWYAQR6_js = require('./chunk-3YWYAQR6.js');
79
- var chunkUG6XPJ2N_js = require('./chunk-UG6XPJ2N.js');
78
+ var chunkXGJWUZWS_js = require('./chunk-XGJWUZWS.js');
79
+ var chunkTT5LWQIZ_js = require('./chunk-TT5LWQIZ.js');
80
80
  var chunkPBWSBNDS_js = require('./chunk-PBWSBNDS.js');
81
81
  var chunkAGAJJYP2_js = require('./chunk-AGAJJYP2.js');
82
82
  var chunkQDFUM2QT_js = require('./chunk-QDFUM2QT.js');
@@ -85,7 +85,7 @@ var chunkEZZG57TK_js = require('./chunk-EZZG57TK.js');
85
85
  var chunkRQREJGY3_js = require('./chunk-RQREJGY3.js');
86
86
  var chunkTHEYWGOT_js = require('./chunk-THEYWGOT.js');
87
87
  var chunkG4ZD6COW_js = require('./chunk-G4ZD6COW.js');
88
- var chunkPUALBK3Y_js = require('./chunk-PUALBK3Y.js');
88
+ var chunkS2PMAXBQ_js = require('./chunk-S2PMAXBQ.js');
89
89
  var chunkN5I5Y5JG_js = require('./chunk-N5I5Y5JG.js');
90
90
  require('./chunk-IVTBNUKQ.js');
91
91
  var chunkMVIHUPCX_js = require('./chunk-MVIHUPCX.js');
@@ -269,7 +269,7 @@ Object.defineProperty(exports, "Tour", {
269
269
  });
270
270
  Object.defineProperty(exports, "Transfer", {
271
271
  enumerable: true,
272
- get: function () { return chunk4F5ABXXM_js.Transfer; }
272
+ get: function () { return chunkWB6JGQWN_js.Transfer; }
273
273
  });
274
274
  Object.defineProperty(exports, "Tree", {
275
275
  enumerable: true,
@@ -287,10 +287,6 @@ Object.defineProperty(exports, "Switch", {
287
287
  enumerable: true,
288
288
  get: function () { return chunkLAAPLTP3_js.Switch; }
289
289
  });
290
- Object.defineProperty(exports, "TaskBoard", {
291
- enumerable: true,
292
- get: function () { return chunkBDMWFNTC_js.TaskBoard; }
293
- });
294
290
  Object.defineProperty(exports, "Skeleton", {
295
291
  enumerable: true,
296
292
  get: function () { return chunkT4DF24UV_js.Skeleton; }
@@ -397,7 +393,7 @@ Object.defineProperty(exports, "notification", {
397
393
  });
398
394
  Object.defineProperty(exports, "NotificationCenter", {
399
395
  enumerable: true,
400
- get: function () { return chunk5DXIYS7U_js.NotificationCenter; }
396
+ get: function () { return chunk5G5Q3TTH_js.NotificationCenter; }
401
397
  });
402
398
  Object.defineProperty(exports, "TabPane", {
403
399
  enumerable: true,
@@ -461,7 +457,11 @@ Object.defineProperty(exports, "InputNumber", {
461
457
  });
462
458
  Object.defineProperty(exports, "Kanban", {
463
459
  enumerable: true,
464
- get: function () { return chunkCXJUEG75_js.Kanban; }
460
+ get: function () { return chunkWBY2ILFK_js.Kanban; }
461
+ });
462
+ Object.defineProperty(exports, "TaskBoard", {
463
+ enumerable: true,
464
+ get: function () { return chunkO2Q4UYDA_js.TaskBoard; }
465
465
  });
466
466
  Object.defineProperty(exports, "FormWizard", {
467
467
  enumerable: true,
@@ -489,7 +489,7 @@ Object.defineProperty(exports, "Header", {
489
489
  });
490
490
  Object.defineProperty(exports, "HeatmapChart", {
491
491
  enumerable: true,
492
- get: function () { return chunkSI3JIHH4_js.HeatmapChart; }
492
+ get: function () { return chunkKI35GUL5_js.HeatmapChart; }
493
493
  });
494
494
  Object.defineProperty(exports, "Icon", {
495
495
  enumerable: true,
@@ -505,7 +505,7 @@ Object.defineProperty(exports, "ImagePreview", {
505
505
  });
506
506
  Object.defineProperty(exports, "DropdownItem", {
507
507
  enumerable: true,
508
- get: function () { return chunkMI5EG5QX_js.DropdownItem; }
508
+ get: function () { return chunk4DJ2HAYO_js.DropdownItem; }
509
509
  });
510
510
  Object.defineProperty(exports, "Empty", {
511
511
  enumerable: true,
@@ -537,7 +537,7 @@ Object.defineProperty(exports, "Form", {
537
537
  });
538
538
  Object.defineProperty(exports, "CropUpload", {
539
539
  enumerable: true,
540
- get: function () { return chunkESTA5C5P_js.CropUpload; }
540
+ get: function () { return chunkD2I2NNYI_js.CropUpload; }
541
541
  });
542
542
  Object.defineProperty(exports, "Modal", {
543
543
  enumerable: true,
@@ -549,11 +549,11 @@ Object.defineProperty(exports, "ImageCropper", {
549
549
  });
550
550
  Object.defineProperty(exports, "DataTableWithToolbar", {
551
551
  enumerable: true,
552
- get: function () { return chunk3YWYAQR6_js.DataTableWithToolbar; }
552
+ get: function () { return chunkXGJWUZWS_js.DataTableWithToolbar; }
553
553
  });
554
554
  Object.defineProperty(exports, "Table", {
555
555
  enumerable: true,
556
- get: function () { return chunkUG6XPJ2N_js.Table; }
556
+ get: function () { return chunkTT5LWQIZ_js.Table; }
557
557
  });
558
558
  Object.defineProperty(exports, "Select", {
559
559
  enumerable: true,
@@ -589,7 +589,7 @@ Object.defineProperty(exports, "Drawer", {
589
589
  });
590
590
  Object.defineProperty(exports, "Dropdown", {
591
591
  enumerable: true,
592
- get: function () { return chunkPUALBK3Y_js.Dropdown; }
592
+ get: function () { return chunkS2PMAXBQ_js.Dropdown; }
593
593
  });
594
594
  Object.defineProperty(exports, "DropdownMenu", {
595
595
  enumerable: true,
package/dist/index.mjs CHANGED
@@ -7,12 +7,11 @@ export { Watermark } from './chunk-MADOTDW7.mjs';
7
7
  export { TimePicker } from './chunk-UWL2XUAH.mjs';
8
8
  export { Tooltip } from './chunk-564LMZQL.mjs';
9
9
  export { Tour } from './chunk-YYZBVHVC.mjs';
10
- export { Transfer } from './chunk-DC5J25FH.mjs';
10
+ export { Transfer } from './chunk-NMGH5YTV.mjs';
11
11
  export { Tree } from './chunk-7DGAOCPX.mjs';
12
12
  export { SubMenu } from './chunk-TTDBR2B4.mjs';
13
13
  export { SunburstChart } from './chunk-W2WGLETE.mjs';
14
14
  export { Switch } from './chunk-XYYZAQ6Z.mjs';
15
- export { TaskBoard } from './chunk-XA5QMUZX.mjs';
16
15
  export { Skeleton } from './chunk-YEHKQ3JZ.mjs';
17
16
  export { Slider } from './chunk-2R5HISQA.mjs';
18
17
  export { Space } from './chunk-M7EBWJZ5.mjs';
@@ -36,7 +35,7 @@ export { Rate } from './chunk-BPAN6T7H.mjs';
36
35
  export { MenuItemGroup } from './chunk-JHY57P4P.mjs';
37
36
  export { Message, MessageContainer } from './chunk-OXOCGMPN.mjs';
38
37
  export { NotificationContainer, notification } from './chunk-JGUXQMYL.mjs';
39
- export { NotificationCenter } from './chunk-LJJ3VTR3.mjs';
38
+ export { NotificationCenter } from './chunk-EZ6GXQMP.mjs';
40
39
  export { TabPane } from './chunk-ZXR4DAAO.mjs';
41
40
  export { Tabs } from './chunk-HKYYO326.mjs';
42
41
  export { Popconfirm } from './chunk-243JSTYQ.mjs';
@@ -52,30 +51,31 @@ export { ImageViewer } from './chunk-HSXB2ASL.mjs';
52
51
  export { InfiniteScroll } from './chunk-CQPHZU3H.mjs';
53
52
  export { InputGroup, InputGroupAddon } from './chunk-VIIGYWUY.mjs';
54
53
  export { InputNumber } from './chunk-LW3LFCRZ.mjs';
55
- export { Kanban } from './chunk-33C5E3AQ.mjs';
54
+ export { Kanban } from './chunk-PLGYRHPX.mjs';
55
+ export { TaskBoard } from './chunk-J7VTGSHX.mjs';
56
56
  export { FormWizard } from './chunk-QDNTISP7.mjs';
57
57
  export { StepsItem } from './chunk-BQEVLY2O.mjs';
58
58
  export { Steps } from './chunk-7UU4PULK.mjs';
59
59
  export { FunnelChart } from './chunk-KYQAAQKV.mjs';
60
60
  export { GaugeChart } from './chunk-JM3ZZYTE.mjs';
61
61
  export { Header } from './chunk-IGSAOYXD.mjs';
62
- export { HeatmapChart } from './chunk-XYIAHZNM.mjs';
62
+ export { HeatmapChart } from './chunk-GTSS7RAT.mjs';
63
63
  export { Icon } from './chunk-WQXZ3234.mjs';
64
64
  export { Image } from './chunk-YH7N5GZF.mjs';
65
65
  import { init_ImagePreview } from './chunk-ZUVR5UZL.mjs';
66
66
  export { ImagePreview } from './chunk-ZUVR5UZL.mjs';
67
- export { DropdownItem } from './chunk-C76CIM26.mjs';
67
+ export { DropdownItem } from './chunk-SAMKKXAW.mjs';
68
68
  export { Empty } from './chunk-WFISP42H.mjs';
69
69
  export { FileManager } from './chunk-OMYSFPX6.mjs';
70
70
  export { FloatButton, FloatButtonGroup } from './chunk-PXRF4IJO.mjs';
71
71
  export { Footer } from './chunk-46DEQQMB.mjs';
72
72
  export { FormItem } from './chunk-MKLJ2LJW.mjs';
73
73
  export { Form } from './chunk-WNF7XUX4.mjs';
74
- export { CropUpload } from './chunk-4KCCUIGO.mjs';
74
+ export { CropUpload } from './chunk-3PQ2I5IQ.mjs';
75
75
  export { Modal } from './chunk-M6PEW6V5.mjs';
76
76
  export { ImageCropper } from './chunk-T77L326M.mjs';
77
- export { DataTableWithToolbar } from './chunk-OEHCRIVT.mjs';
78
- export { Table } from './chunk-HTOCKV2N.mjs';
77
+ export { DataTableWithToolbar } from './chunk-YYRJA6VQ.mjs';
78
+ export { Table } from './chunk-HTG6ISVH.mjs';
79
79
  export { Select } from './chunk-QNODDATK.mjs';
80
80
  export { Pagination } from './chunk-NHCCPMLC.mjs';
81
81
  export { DatePicker } from './chunk-HXLCWM2J.mjs';
@@ -84,7 +84,7 @@ export { Divider } from './chunk-EJCHNSVG.mjs';
84
84
  export { DonutChart } from './chunk-ABPOLQLE.mjs';
85
85
  export { PieChart } from './chunk-NVJRZYES.mjs';
86
86
  export { Drawer } from './chunk-YFD6RD7P.mjs';
87
- export { Dropdown } from './chunk-A64AWAOW.mjs';
87
+ export { Dropdown } from './chunk-3ICMBQPM.mjs';
88
88
  export { DropdownMenu } from './chunk-AN3HKOCS.mjs';
89
89
  import './chunk-CU4M5ABS.mjs';
90
90
  export { Col } from './chunk-ZA2PLF7O.mjs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expcat/tigercat-vue",
3
- "version": "1.0.0",
3
+ "version": "1.0.7",
4
4
  "description": "Vue 3 components for Tigercat UI library",
5
5
  "license": "MIT",
6
6
  "author": "Yizhe Wang",
@@ -43,7 +43,7 @@
43
43
  "access": "public"
44
44
  },
45
45
  "dependencies": {
46
- "@expcat/tigercat-core": "1.0.0"
46
+ "@expcat/tigercat-core": "1.0.7"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@types/node": "^25.0.3",
@@ -1,328 +0,0 @@
1
- import { useTigerConfig } from './chunk-XP5M2GK7.mjs';
2
- import { defineComponent, ref, computed, watch, h } from 'vue';
3
- import { filterColumns, mergeTigerLocale, getTaskBoardLabels, classNames, getKanbanContainerClasses, coerceClassValue, mergeStyleValues, isWipExceeded, getColumnCardCount, resolveLocaleText, kanbanCardCountClasses, taskBoardWipExceededClasses, taskBoardColumnHeaderClasses, taskBoardCardClasses, taskBoardCardDraggingClasses, taskBoardDropIndicatorClasses, taskBoardColumnBodyClasses, taskBoardEmptyClasses, kanbanAddCardClasses, taskBoardColumnClasses, taskBoardColumnDropTargetClasses, taskBoardColumnDraggingClasses, kanbanAddColumnClasses, setDragData, createCardDragData, parseDragData, moveCard, reorderColumns, getDropIndex, createColumnDragData, getColumnDropIndex } from '@expcat/tigercat-core';
4
-
5
- var Kanban = defineComponent({
6
- name: "TigerKanban",
7
- inheritAttrs: false,
8
- props: {
9
- columns: {
10
- type: Array,
11
- default: void 0
12
- },
13
- defaultColumns: {
14
- type: Array,
15
- default: () => []
16
- },
17
- draggable: { type: Boolean, default: true },
18
- columnDraggable: { type: Boolean, default: true },
19
- enforceWipLimit: { type: Boolean, default: false },
20
- beforeCardMove: {
21
- type: Function,
22
- default: void 0
23
- },
24
- beforeColumnMove: {
25
- type: Function,
26
- default: void 0
27
- },
28
- onCardAdd: {
29
- type: Function,
30
- default: void 0
31
- },
32
- filterText: { type: String, default: "" },
33
- hiddenColumns: {
34
- type: Array,
35
- default: () => []
36
- },
37
- showCardCount: { type: Boolean, default: true },
38
- allowAddCard: { type: Boolean, default: true },
39
- allowAddColumn: { type: Boolean, default: false },
40
- locale: {
41
- type: Object,
42
- default: void 0
43
- },
44
- className: { type: String, default: void 0 },
45
- style: {
46
- type: Object,
47
- default: void 0
48
- }
49
- },
50
- emits: ["card-move", "column-move", "update:columns", "card-add", "column-add"],
51
- setup(props, { emit, attrs, slots }) {
52
- const config = useTigerConfig();
53
- const boardRef = ref(null);
54
- const internalColumns = ref(props.defaultColumns ?? []);
55
- const isControlled = computed(() => props.columns !== void 0);
56
- const rawColumns = computed(() => isControlled.value ? props.columns : internalColumns.value);
57
- const visibleColumns = computed(
58
- () => filterColumns(rawColumns.value, props.filterText || "", props.hiddenColumns)
59
- );
60
- watch(
61
- () => props.columns,
62
- (v) => {
63
- if (v) internalColumns.value = v;
64
- }
65
- );
66
- function updateColumns(cols) {
67
- if (!isControlled.value) internalColumns.value = cols;
68
- emit("update:columns", cols);
69
- }
70
- const merged = computed(() => mergeTigerLocale(config.value.locale, props.locale));
71
- const labels = computed(() => getTaskBoardLabels(merged.value));
72
- const dragState = ref(null);
73
- const dropTargetCol = ref(null);
74
- const dropTargetIdx = ref(-1);
75
- const dragType = computed(() => dragState.value?.type ?? null);
76
- function onCardDragStart(e, card, colId, idx) {
77
- if (!props.draggable || !e.dataTransfer) return;
78
- setDragData(e.dataTransfer, createCardDragData(card.id, colId, idx));
79
- dragState.value = { type: "card", id: card.id, fromColumnId: colId, fromIndex: idx };
80
- }
81
- function onColumnDragStart(e, colId, idx) {
82
- if (!props.columnDraggable || !e.dataTransfer) return;
83
- setDragData(e.dataTransfer, createColumnDragData(colId, idx));
84
- dragState.value = { type: "column", id: colId, fromIndex: idx };
85
- }
86
- function onDragOver(e, colId) {
87
- e.preventDefault();
88
- if (!dragState.value) return;
89
- dropTargetCol.value = colId;
90
- if (dragState.value.type === "card") {
91
- const colEl = e.currentTarget.querySelector("[data-kanban-body]");
92
- if (colEl) {
93
- const cards = Array.from(colEl.querySelectorAll("[data-kanban-card]"));
94
- const rects = cards.map((c) => c.getBoundingClientRect());
95
- dropTargetIdx.value = getDropIndex(e.clientY, rects);
96
- }
97
- }
98
- }
99
- function onColumnDragOver(e) {
100
- e.preventDefault();
101
- if (!dragState.value || dragState.value.type !== "column") return;
102
- const boardEl = boardRef.value;
103
- if (!boardEl) return;
104
- const cols = Array.from(boardEl.querySelectorAll("[data-kanban-column]"));
105
- const rects = cols.map((c) => c.getBoundingClientRect());
106
- dropTargetIdx.value = getColumnDropIndex(e.clientX, rects);
107
- }
108
- async function onDrop(e) {
109
- e.preventDefault();
110
- if (!dragState.value || !e.dataTransfer) return;
111
- const data = parseDragData(e.dataTransfer);
112
- if (!data) return;
113
- const cols = rawColumns.value;
114
- if (data.type === "card" && dropTargetCol.value != null) {
115
- if (props.beforeCardMove) {
116
- const evt = {
117
- cardId: data.cardId,
118
- fromColumnId: data.columnId,
119
- toColumnId: dropTargetCol.value,
120
- fromIndex: data.index,
121
- toIndex: dropTargetIdx.value
122
- };
123
- const ok = await props.beforeCardMove(evt);
124
- if (!ok) {
125
- resetDrag();
126
- return;
127
- }
128
- }
129
- const result = moveCard(
130
- cols,
131
- data.cardId,
132
- data.columnId,
133
- dropTargetCol.value,
134
- dropTargetIdx.value,
135
- { enforceWipLimit: props.enforceWipLimit }
136
- );
137
- if (result) {
138
- updateColumns(result.columns);
139
- emit("card-move", result.event);
140
- }
141
- } else if (data.type === "column") {
142
- if (props.beforeColumnMove) {
143
- const evt = {
144
- columnId: data.columnId,
145
- fromIndex: data.index,
146
- toIndex: dropTargetIdx.value
147
- };
148
- const ok = await props.beforeColumnMove(evt);
149
- if (!ok) {
150
- resetDrag();
151
- return;
152
- }
153
- }
154
- const result = reorderColumns(cols, data.index, dropTargetIdx.value);
155
- if (result) {
156
- updateColumns(result.columns);
157
- emit("column-move", result.event);
158
- }
159
- }
160
- resetDrag();
161
- }
162
- function onDragEnd() {
163
- resetDrag();
164
- }
165
- function resetDrag() {
166
- dragState.value = null;
167
- dropTargetCol.value = null;
168
- dropTargetIdx.value = -1;
169
- }
170
- const containerClasses = computed(
171
- () => classNames(getKanbanContainerClasses(props.className), coerceClassValue(attrs.class))
172
- );
173
- const containerStyle = computed(() => mergeStyleValues(attrs.style, props.style));
174
- return () => {
175
- const children = visibleColumns.value.map((col, colIdx) => {
176
- const wipExceeded = isWipExceeded(col);
177
- const cardCount = getColumnCardCount(col);
178
- const isDragOverCol = dropTargetCol.value === col.id;
179
- const isColDragging = dragState.value?.type === "column" && dragState.value.id === col.id;
180
- const headerContent = [
181
- slots["column-header"] ? slots["column-header"]({ column: col }) : h("span", {}, resolveLocaleText(col.title)),
182
- props.showCardCount ? h(
183
- "span",
184
- {
185
- class: classNames(
186
- kanbanCardCountClasses,
187
- wipExceeded && taskBoardWipExceededClasses
188
- )
189
- },
190
- cardCount.limit ? `${cardCount.count}/${cardCount.limit}` : `${cardCount.count}`
191
- ) : null
192
- ];
193
- const header = h(
194
- "div",
195
- {
196
- class: classNames(
197
- taskBoardColumnHeaderClasses,
198
- wipExceeded && taskBoardWipExceededClasses
199
- )
200
- },
201
- headerContent
202
- );
203
- const cardEls = col.cards.map((card, cardIdx) => {
204
- const isCardDragging = dragState.value?.type === "card" && dragState.value.id === card.id;
205
- return h(
206
- "div",
207
- {
208
- key: card.id,
209
- class: classNames(
210
- taskBoardCardClasses,
211
- isCardDragging && taskBoardCardDraggingClasses
212
- ),
213
- draggable: props.draggable,
214
- "data-kanban-card": "",
215
- onDragstart: (e) => onCardDragStart(e, card, col.id, cardIdx)
216
- },
217
- slots.card ? slots.card({ card, columnId: col.id }) : [
218
- h("div", { class: "font-medium text-sm" }, resolveLocaleText(card.title)),
219
- card.description ? h(
220
- "div",
221
- { class: "text-xs text-[var(--tiger-text-muted,#6b7280)] mt-1" },
222
- card.description
223
- ) : null
224
- ]
225
- );
226
- });
227
- if (isDragOverCol && dragType.value === "card" && dropTargetIdx.value >= 0) {
228
- cardEls.splice(
229
- dropTargetIdx.value,
230
- 0,
231
- h("div", {
232
- key: "__drop-indicator",
233
- class: taskBoardDropIndicatorClasses
234
- })
235
- );
236
- }
237
- const body = h(
238
- "div",
239
- {
240
- class: taskBoardColumnBodyClasses,
241
- "data-kanban-body": ""
242
- },
243
- cardEls.length > 0 ? cardEls : [
244
- h(
245
- "div",
246
- { class: taskBoardEmptyClasses },
247
- resolveLocaleText(labels.value.emptyColumnText)
248
- )
249
- ]
250
- );
251
- const addBtn = props.allowAddCard ? h(
252
- "div",
253
- {
254
- class: kanbanAddCardClasses,
255
- role: "button",
256
- tabindex: 0,
257
- onClick: () => {
258
- props.onCardAdd?.(col.id);
259
- emit("card-add", col.id);
260
- },
261
- onKeydown: (e) => {
262
- if (e.key === "Enter" || e.key === " ") {
263
- e.preventDefault();
264
- props.onCardAdd?.(col.id);
265
- emit("card-add", col.id);
266
- }
267
- }
268
- },
269
- "+ " + resolveLocaleText(labels.value.addCardText)
270
- ) : null;
271
- return h(
272
- "div",
273
- {
274
- key: col.id,
275
- class: classNames(
276
- taskBoardColumnClasses,
277
- isDragOverCol && dragType.value === "card" && taskBoardColumnDropTargetClasses,
278
- isColDragging && taskBoardColumnDraggingClasses
279
- ),
280
- "data-kanban-column": "",
281
- draggable: props.columnDraggable,
282
- onDragstart: (e) => onColumnDragStart(e, col.id, colIdx),
283
- onDragover: (e) => onDragOver(e, col.id),
284
- onDrop,
285
- onDragend: onDragEnd
286
- },
287
- [header, body, addBtn]
288
- );
289
- });
290
- if (props.allowAddColumn) {
291
- children.push(
292
- h(
293
- "div",
294
- {
295
- key: "__add-column",
296
- class: kanbanAddColumnClasses,
297
- role: "button",
298
- tabindex: 0,
299
- onClick: () => emit("column-add"),
300
- onKeydown: (e) => {
301
- if (e.key === "Enter" || e.key === " ") {
302
- e.preventDefault();
303
- emit("column-add");
304
- }
305
- }
306
- },
307
- "+ " + resolveLocaleText(labels.value.addCardText)
308
- )
309
- );
310
- }
311
- return h(
312
- "div",
313
- {
314
- ref: boardRef,
315
- class: containerClasses.value,
316
- style: containerStyle.value,
317
- role: "region",
318
- "aria-label": "Kanban board",
319
- onDragover: onColumnDragOver
320
- },
321
- children
322
- );
323
- };
324
- }
325
- });
326
- var Kanban_default = Kanban;
327
-
328
- export { Kanban, Kanban_default };