@expcat/tigercat-vue 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.
Files changed (211) hide show
  1. package/dist/{chunk-XA5QMUZX.mjs → chunk-J7VTGSHX.mjs} +78 -17
  2. package/dist/{chunk-BDMWFNTC.js → chunk-O2Q4UYDA.js} +77 -16
  3. package/dist/chunk-PLGYRHPX.mjs +87 -0
  4. package/dist/chunk-WBY2ILFK.js +90 -0
  5. package/dist/components/ActivityFeed.d.mts +5 -5
  6. package/dist/components/ActivityFeed.d.ts +5 -5
  7. package/dist/components/Affix.d.mts +1 -1
  8. package/dist/components/Affix.d.ts +1 -1
  9. package/dist/components/Alert.d.mts +3 -3
  10. package/dist/components/Alert.d.ts +3 -3
  11. package/dist/components/Anchor.d.mts +1 -1
  12. package/dist/components/Anchor.d.ts +1 -1
  13. package/dist/components/AnchorLink.d.mts +1 -1
  14. package/dist/components/AnchorLink.d.ts +1 -1
  15. package/dist/components/AreaChart.d.mts +1 -1
  16. package/dist/components/AreaChart.d.ts +1 -1
  17. package/dist/components/AutoComplete.d.mts +2 -2
  18. package/dist/components/AutoComplete.d.ts +2 -2
  19. package/dist/components/Avatar.d.mts +2 -2
  20. package/dist/components/Avatar.d.ts +2 -2
  21. package/dist/components/BackTop.d.mts +1 -1
  22. package/dist/components/BackTop.d.ts +1 -1
  23. package/dist/components/Badge.d.mts +5 -5
  24. package/dist/components/Badge.d.ts +5 -5
  25. package/dist/components/BarChart.d.mts +1 -1
  26. package/dist/components/BarChart.d.ts +1 -1
  27. package/dist/components/Breadcrumb.d.mts +1 -1
  28. package/dist/components/Breadcrumb.d.ts +1 -1
  29. package/dist/components/BreadcrumbItem.d.mts +3 -3
  30. package/dist/components/BreadcrumbItem.d.ts +3 -3
  31. package/dist/components/Button.d.mts +5 -5
  32. package/dist/components/Button.d.ts +5 -5
  33. package/dist/components/Calendar.d.mts +1 -1
  34. package/dist/components/Calendar.d.ts +1 -1
  35. package/dist/components/Card.d.mts +3 -3
  36. package/dist/components/Card.d.ts +3 -3
  37. package/dist/components/Carousel.d.mts +2 -2
  38. package/dist/components/Carousel.d.ts +2 -2
  39. package/dist/components/ChatWindow.d.mts +4 -4
  40. package/dist/components/ChatWindow.d.ts +4 -4
  41. package/dist/components/Code.d.mts +1 -1
  42. package/dist/components/Code.d.ts +1 -1
  43. package/dist/components/CodeEditor.d.mts +3 -3
  44. package/dist/components/CodeEditor.d.ts +3 -3
  45. package/dist/components/Collapse.d.mts +2 -2
  46. package/dist/components/Collapse.d.ts +2 -2
  47. package/dist/components/CollapsePanel.d.mts +2 -2
  48. package/dist/components/CollapsePanel.d.ts +2 -2
  49. package/dist/components/CommentThread.d.mts +4 -4
  50. package/dist/components/CommentThread.d.ts +4 -4
  51. package/dist/components/Content.d.mts +1 -1
  52. package/dist/components/Content.d.ts +1 -1
  53. package/dist/components/CropUpload.d.mts +1 -1
  54. package/dist/components/CropUpload.d.ts +1 -1
  55. package/dist/components/DataTableWithToolbar.d.mts +8 -8
  56. package/dist/components/DataTableWithToolbar.d.ts +8 -8
  57. package/dist/components/DatePicker.d.mts +3 -3
  58. package/dist/components/DatePicker.d.ts +3 -3
  59. package/dist/components/Descriptions.d.mts +4 -4
  60. package/dist/components/Descriptions.d.ts +4 -4
  61. package/dist/components/DonutChart.d.mts +2 -2
  62. package/dist/components/DonutChart.d.ts +2 -2
  63. package/dist/components/Drawer.d.mts +5 -5
  64. package/dist/components/Drawer.d.ts +5 -5
  65. package/dist/components/Dropdown.d.mts +1 -1
  66. package/dist/components/Dropdown.d.ts +1 -1
  67. package/dist/components/DropdownItem.d.mts +1 -1
  68. package/dist/components/DropdownItem.d.ts +1 -1
  69. package/dist/components/DropdownMenu.d.mts +1 -1
  70. package/dist/components/DropdownMenu.d.ts +1 -1
  71. package/dist/components/Empty.d.mts +1 -1
  72. package/dist/components/Empty.d.ts +1 -1
  73. package/dist/components/FileManager.d.mts +1 -1
  74. package/dist/components/FileManager.d.ts +1 -1
  75. package/dist/components/FloatButton.d.mts +6 -6
  76. package/dist/components/FloatButton.d.ts +6 -6
  77. package/dist/components/Footer.d.mts +1 -1
  78. package/dist/components/Footer.d.ts +1 -1
  79. package/dist/components/Form.d.mts +1 -1
  80. package/dist/components/Form.d.ts +1 -1
  81. package/dist/components/FormWizard.d.mts +2 -2
  82. package/dist/components/FormWizard.d.ts +2 -2
  83. package/dist/components/FunnelChart.d.mts +2 -2
  84. package/dist/components/FunnelChart.d.ts +2 -2
  85. package/dist/components/GaugeChart.d.mts +1 -1
  86. package/dist/components/GaugeChart.d.ts +1 -1
  87. package/dist/components/Header.d.mts +1 -1
  88. package/dist/components/Header.d.ts +1 -1
  89. package/dist/components/HeatmapChart.d.mts +1 -1
  90. package/dist/components/HeatmapChart.d.ts +1 -1
  91. package/dist/components/Image.d.mts +3 -3
  92. package/dist/components/Image.d.ts +3 -3
  93. package/dist/components/ImageCropper.d.mts +1 -1
  94. package/dist/components/ImageCropper.d.ts +1 -1
  95. package/dist/components/InfiniteScroll.d.mts +2 -2
  96. package/dist/components/InfiniteScroll.d.ts +2 -2
  97. package/dist/components/Input.d.mts +4 -4
  98. package/dist/components/Input.d.ts +4 -4
  99. package/dist/components/InputGroup.d.mts +1 -1
  100. package/dist/components/InputGroup.d.ts +1 -1
  101. package/dist/components/InputNumber.d.mts +1 -1
  102. package/dist/components/InputNumber.d.ts +1 -1
  103. package/dist/components/Kanban.d.mts +4 -4
  104. package/dist/components/Kanban.d.ts +4 -4
  105. package/dist/components/Kanban.js +4 -3
  106. package/dist/components/Kanban.mjs +2 -1
  107. package/dist/components/Layout.d.mts +1 -1
  108. package/dist/components/Layout.d.ts +1 -1
  109. package/dist/components/LineChart.d.mts +1 -1
  110. package/dist/components/LineChart.d.ts +1 -1
  111. package/dist/components/Link.d.mts +1 -1
  112. package/dist/components/Link.d.ts +1 -1
  113. package/dist/components/List.d.mts +5 -5
  114. package/dist/components/List.d.ts +5 -5
  115. package/dist/components/Loading.d.mts +3 -3
  116. package/dist/components/Loading.d.ts +3 -3
  117. package/dist/components/Mentions.d.mts +2 -2
  118. package/dist/components/Mentions.d.ts +2 -2
  119. package/dist/components/Menu.d.mts +2 -2
  120. package/dist/components/Menu.d.ts +2 -2
  121. package/dist/components/MenuItem.d.mts +1 -1
  122. package/dist/components/MenuItem.d.ts +1 -1
  123. package/dist/components/MenuItemGroup.d.mts +1 -1
  124. package/dist/components/MenuItemGroup.d.ts +1 -1
  125. package/dist/components/Modal.d.mts +5 -5
  126. package/dist/components/Modal.d.ts +5 -5
  127. package/dist/components/NotificationCenter.d.mts +6 -6
  128. package/dist/components/NotificationCenter.d.ts +6 -6
  129. package/dist/components/Pagination.d.mts +3 -3
  130. package/dist/components/Pagination.d.ts +3 -3
  131. package/dist/components/PieChart.d.mts +2 -2
  132. package/dist/components/PieChart.d.ts +2 -2
  133. package/dist/components/Popconfirm.d.mts +1 -1
  134. package/dist/components/Popconfirm.d.ts +1 -1
  135. package/dist/components/Popover.d.mts +2 -2
  136. package/dist/components/Popover.d.ts +2 -2
  137. package/dist/components/Progress.d.mts +3 -3
  138. package/dist/components/Progress.d.ts +3 -3
  139. package/dist/components/QRCode.d.mts +2 -2
  140. package/dist/components/QRCode.d.ts +2 -2
  141. package/dist/components/RadarChart.d.mts +1 -1
  142. package/dist/components/RadarChart.d.ts +1 -1
  143. package/dist/components/Resizable.d.mts +1 -1
  144. package/dist/components/Resizable.d.ts +1 -1
  145. package/dist/components/Result.d.mts +1 -1
  146. package/dist/components/Result.d.ts +1 -1
  147. package/dist/components/RichTextEditor.d.mts +1 -1
  148. package/dist/components/RichTextEditor.d.ts +1 -1
  149. package/dist/components/Row.d.mts +1 -1
  150. package/dist/components/Row.d.ts +1 -1
  151. package/dist/components/ScatterChart.d.mts +1 -1
  152. package/dist/components/ScatterChart.d.ts +1 -1
  153. package/dist/components/Select.d.mts +1 -1
  154. package/dist/components/Select.d.ts +1 -1
  155. package/dist/components/Sidebar.d.mts +1 -1
  156. package/dist/components/Sidebar.d.ts +1 -1
  157. package/dist/components/Skeleton.d.mts +2 -2
  158. package/dist/components/Skeleton.d.ts +2 -2
  159. package/dist/components/Slider.d.mts +2 -2
  160. package/dist/components/Slider.d.ts +2 -2
  161. package/dist/components/Splitter.d.mts +2 -2
  162. package/dist/components/Splitter.d.ts +2 -2
  163. package/dist/components/Statistic.d.mts +1 -1
  164. package/dist/components/Statistic.d.ts +1 -1
  165. package/dist/components/Steps.d.mts +2 -2
  166. package/dist/components/Steps.d.ts +2 -2
  167. package/dist/components/StepsItem.d.mts +2 -2
  168. package/dist/components/StepsItem.d.ts +2 -2
  169. package/dist/components/SubMenu.d.mts +1 -1
  170. package/dist/components/SubMenu.d.ts +1 -1
  171. package/dist/components/SunburstChart.d.mts +1 -1
  172. package/dist/components/SunburstChart.d.ts +1 -1
  173. package/dist/components/TabPane.d.mts +2 -2
  174. package/dist/components/TabPane.d.ts +2 -2
  175. package/dist/components/Table.d.mts +5 -5
  176. package/dist/components/Table.d.ts +5 -5
  177. package/dist/components/Tabs.d.mts +2 -2
  178. package/dist/components/Tabs.d.ts +2 -2
  179. package/dist/components/Tag.d.mts +2 -2
  180. package/dist/components/Tag.d.ts +2 -2
  181. package/dist/components/TaskBoard.d.mts +54 -3
  182. package/dist/components/TaskBoard.d.ts +54 -3
  183. package/dist/components/TaskBoard.js +3 -3
  184. package/dist/components/TaskBoard.mjs +1 -1
  185. package/dist/components/Text.d.mts +2 -2
  186. package/dist/components/Text.d.ts +2 -2
  187. package/dist/components/Textarea.d.mts +1 -1
  188. package/dist/components/Textarea.d.ts +1 -1
  189. package/dist/components/TimePicker.d.mts +4 -4
  190. package/dist/components/TimePicker.d.ts +4 -4
  191. package/dist/components/Timeline.d.mts +3 -3
  192. package/dist/components/Timeline.d.ts +3 -3
  193. package/dist/components/Tooltip.d.mts +2 -2
  194. package/dist/components/Tooltip.d.ts +2 -2
  195. package/dist/components/Tour.d.mts +1 -1
  196. package/dist/components/Tour.d.ts +1 -1
  197. package/dist/components/Tree.d.mts +3 -3
  198. package/dist/components/Tree.d.ts +3 -3
  199. package/dist/components/TreeMapChart.d.mts +1 -1
  200. package/dist/components/TreeMapChart.d.ts +1 -1
  201. package/dist/components/Upload.d.mts +4 -4
  202. package/dist/components/Upload.d.ts +4 -4
  203. package/dist/components/VirtualTable.d.mts +3 -3
  204. package/dist/components/VirtualTable.d.ts +3 -3
  205. package/dist/components/Watermark.d.mts +2 -2
  206. package/dist/components/Watermark.d.ts +2 -2
  207. package/dist/index.js +7 -7
  208. package/dist/index.mjs +2 -2
  209. package/package.json +2 -2
  210. package/dist/chunk-33C5E3AQ.mjs +0 -328
  211. package/dist/chunk-CXJUEG75.js +0 -331
@@ -1,6 +1,6 @@
1
1
  import { useTigerConfig } from './chunk-XP5M2GK7.mjs';
2
2
  import { defineComponent, computed, ref, watch, onMounted, onBeforeUnmount, h } from 'vue';
3
- import { mergeTigerLocale, getTaskBoardLabels, classNames, taskBoardBaseClasses, coerceClassValue, mergeStyleValues, resolveLocaleText, createTouchDragTracker, isWipExceeded, taskBoardColumnClasses, taskBoardColumnDropTargetClasses, taskBoardColumnDraggingClasses, taskBoardWipExceededClasses, taskBoardColumnHeaderClasses, taskBoardDropIndicatorClasses, taskBoardEmptyClasses, taskBoardColumnBodyClasses, taskBoardAddCardClasses, getColumnDropIndex, setDragData, createColumnDragData, taskBoardCardClasses, taskBoardCardDraggingClasses, parseDragData, getDropIndex, reorderColumns, findColumnFromPoint, createCardDragData, moveCard } from '@expcat/tigercat-core';
3
+ import { mergeTigerLocale, getTaskBoardLabels, filterColumns, classNames, taskBoardBaseClasses, coerceClassValue, mergeStyleValues, kanbanAddColumnClasses, resolveLocaleText, createTouchDragTracker, isWipExceeded, getColumnCardCount, taskBoardColumnClasses, taskBoardColumnDropTargetClasses, taskBoardColumnDraggingClasses, taskBoardWipExceededClasses, kanbanCardCountClasses, taskBoardColumnHeaderClasses, taskBoardDropIndicatorClasses, taskBoardEmptyClasses, taskBoardColumnBodyClasses, taskBoardAddCardClasses, getColumnDropIndex, setDragData, createColumnDragData, taskBoardCardClasses, taskBoardCardDraggingClasses, parseDragData, getDropIndex, reorderColumns, findColumnFromPoint, createCardDragData, moveCard } from '@expcat/tigercat-core';
4
4
 
5
5
  var TaskBoard = defineComponent({
6
6
  name: "TigerTaskBoard",
@@ -38,6 +38,14 @@ var TaskBoard = defineComponent({
38
38
  type: Function,
39
39
  default: void 0
40
40
  },
41
+ filterText: { type: String, default: "" },
42
+ hiddenColumns: {
43
+ type: Array,
44
+ default: () => []
45
+ },
46
+ showCardCount: { type: Boolean, default: false },
47
+ allowAddCard: { type: Boolean, default: false },
48
+ allowAddColumn: { type: Boolean, default: false },
41
49
  locale: {
42
50
  type: Object,
43
51
  default: void 0
@@ -51,7 +59,7 @@ var TaskBoard = defineComponent({
51
59
  default: void 0
52
60
  }
53
61
  },
54
- emits: ["card-move", "column-move", "card-add", "update:columns"],
62
+ emits: ["card-move", "column-move", "card-add", "column-add", "update:columns"],
55
63
  setup(props, { slots, attrs, emit }) {
56
64
  const config = useTigerConfig();
57
65
  const mergedLocale = computed(() => mergeTigerLocale(config.value.locale, props.locale));
@@ -72,6 +80,13 @@ var TaskBoard = defineComponent({
72
80
  }
73
81
  );
74
82
  const currentColumns = computed(() => props.columns ?? innerColumns.value);
83
+ const visibleColumns = computed(() => {
84
+ const cols = currentColumns.value;
85
+ if (!props.filterText && (!props.hiddenColumns || props.hiddenColumns.length === 0)) {
86
+ return cols;
87
+ }
88
+ return filterColumns(cols, props.filterText || "", props.hiddenColumns);
89
+ });
75
90
  const updateColumns = (next) => {
76
91
  innerColumns.value = next;
77
92
  emit("update:columns", next);
@@ -321,6 +336,7 @@ var TaskBoard = defineComponent({
321
336
  const isDropTarget = dragState.value?.type === "card" && dropTargetColumnId.value === column.id;
322
337
  const isColDragging = dragState.value?.type === "column" && dragState.value.id === column.id;
323
338
  const wipOver = isWipExceeded(column);
339
+ const cardCount = props.showCardCount ? getColumnCardCount(column) : null;
324
340
  const colClasses = classNames(
325
341
  taskBoardColumnClasses,
326
342
  isDropTarget && taskBoardColumnDropTargetClasses,
@@ -329,7 +345,8 @@ var TaskBoard = defineComponent({
329
345
  const headerContent = slots["column-header"] ? slots["column-header"]({ column }) : [
330
346
  h("span", { class: wipOver ? taskBoardWipExceededClasses : void 0 }, [
331
347
  column.title,
332
- column.wipLimit != null ? h(
348
+ // When showCardCount is enabled, use the compact badge style
349
+ props.showCardCount && cardCount ? null : column.wipLimit != null ? h(
333
350
  "span",
334
351
  {
335
352
  class: "ml-2 text-xs font-normal opacity-70",
@@ -344,6 +361,17 @@ var TaskBoard = defineComponent({
344
361
  String(column.cards.length)
345
362
  )
346
363
  ]),
364
+ // Card count badge (Kanban-style)
365
+ props.showCardCount && cardCount ? h(
366
+ "span",
367
+ {
368
+ class: classNames(
369
+ kanbanCardCountClasses,
370
+ wipOver && taskBoardWipExceededClasses
371
+ )
372
+ },
373
+ cardCount.limit ? `${cardCount.count}/${cardCount.limit}` : `${cardCount.count}`
374
+ ) : null,
347
375
  column.description ? h(
348
376
  "span",
349
377
  {
@@ -394,15 +422,24 @@ var TaskBoard = defineComponent({
394
422
  },
395
423
  cards
396
424
  );
397
- const footer = slots["column-footer"] ? slots["column-footer"]({ column }) : props.onCardAdd ? h(
425
+ const showAddCard = props.allowAddCard || props.onCardAdd;
426
+ const footer = slots["column-footer"] ? slots["column-footer"]({ column }) : showAddCard ? h(
398
427
  "div",
399
428
  {
400
429
  class: classNames(
401
430
  "border-t border-[var(--tiger-border,#e5e7eb)]",
402
431
  taskBoardAddCardClasses
403
432
  ),
433
+ role: "button",
434
+ tabindex: 0,
404
435
  onClick: () => {
405
436
  emit("card-add", column.id);
437
+ },
438
+ onKeydown: (e) => {
439
+ if (e.key === "Enter" || e.key === " ") {
440
+ e.preventDefault();
441
+ emit("card-add", column.id);
442
+ }
406
443
  }
407
444
  },
408
445
  [h("span", null, "+"), h("span", null, resolveLocaleText(labels.value.addCardText))]
@@ -420,19 +457,43 @@ var TaskBoard = defineComponent({
420
457
  [header, body, footer]
421
458
  );
422
459
  };
423
- return () => h(
424
- "div",
425
- {
426
- ...attrs,
427
- ref: boardRef,
428
- class: wrapperClasses.value,
429
- style: wrapperStyle.value,
430
- role: "region",
431
- "aria-label": resolveLocaleText(labels.value.boardAriaLabel),
432
- "data-tiger-task-board": ""
433
- },
434
- currentColumns.value.map((col, i) => renderColumnNode(col, i))
435
- );
460
+ return () => {
461
+ const children = visibleColumns.value.map((col, i) => renderColumnNode(col, i));
462
+ if (props.allowAddColumn) {
463
+ children.push(
464
+ h(
465
+ "div",
466
+ {
467
+ key: "__add-column",
468
+ class: kanbanAddColumnClasses,
469
+ role: "button",
470
+ tabindex: 0,
471
+ onClick: () => emit("column-add"),
472
+ onKeydown: (e) => {
473
+ if (e.key === "Enter" || e.key === " ") {
474
+ e.preventDefault();
475
+ emit("column-add");
476
+ }
477
+ }
478
+ },
479
+ "+ " + resolveLocaleText(labels.value.addCardText)
480
+ )
481
+ );
482
+ }
483
+ return h(
484
+ "div",
485
+ {
486
+ ...attrs,
487
+ ref: boardRef,
488
+ class: wrapperClasses.value,
489
+ style: wrapperStyle.value,
490
+ role: "region",
491
+ "aria-label": resolveLocaleText(labels.value.boardAriaLabel),
492
+ "data-tiger-task-board": ""
493
+ },
494
+ children
495
+ );
496
+ };
436
497
  }
437
498
  });
438
499
  var TaskBoard_default = TaskBoard;
@@ -40,6 +40,14 @@ var TaskBoard = vue.defineComponent({
40
40
  type: Function,
41
41
  default: void 0
42
42
  },
43
+ filterText: { type: String, default: "" },
44
+ hiddenColumns: {
45
+ type: Array,
46
+ default: () => []
47
+ },
48
+ showCardCount: { type: Boolean, default: false },
49
+ allowAddCard: { type: Boolean, default: false },
50
+ allowAddColumn: { type: Boolean, default: false },
43
51
  locale: {
44
52
  type: Object,
45
53
  default: void 0
@@ -53,7 +61,7 @@ var TaskBoard = vue.defineComponent({
53
61
  default: void 0
54
62
  }
55
63
  },
56
- emits: ["card-move", "column-move", "card-add", "update:columns"],
64
+ emits: ["card-move", "column-move", "card-add", "column-add", "update:columns"],
57
65
  setup(props, { slots, attrs, emit }) {
58
66
  const config = chunkV4PBWEAU_js.useTigerConfig();
59
67
  const mergedLocale = vue.computed(() => tigercatCore.mergeTigerLocale(config.value.locale, props.locale));
@@ -74,6 +82,13 @@ var TaskBoard = vue.defineComponent({
74
82
  }
75
83
  );
76
84
  const currentColumns = vue.computed(() => props.columns ?? innerColumns.value);
85
+ const visibleColumns = vue.computed(() => {
86
+ const cols = currentColumns.value;
87
+ if (!props.filterText && (!props.hiddenColumns || props.hiddenColumns.length === 0)) {
88
+ return cols;
89
+ }
90
+ return tigercatCore.filterColumns(cols, props.filterText || "", props.hiddenColumns);
91
+ });
77
92
  const updateColumns = (next) => {
78
93
  innerColumns.value = next;
79
94
  emit("update:columns", next);
@@ -323,6 +338,7 @@ var TaskBoard = vue.defineComponent({
323
338
  const isDropTarget = dragState.value?.type === "card" && dropTargetColumnId.value === column.id;
324
339
  const isColDragging = dragState.value?.type === "column" && dragState.value.id === column.id;
325
340
  const wipOver = tigercatCore.isWipExceeded(column);
341
+ const cardCount = props.showCardCount ? tigercatCore.getColumnCardCount(column) : null;
326
342
  const colClasses = tigercatCore.classNames(
327
343
  tigercatCore.taskBoardColumnClasses,
328
344
  isDropTarget && tigercatCore.taskBoardColumnDropTargetClasses,
@@ -331,7 +347,8 @@ var TaskBoard = vue.defineComponent({
331
347
  const headerContent = slots["column-header"] ? slots["column-header"]({ column }) : [
332
348
  vue.h("span", { class: wipOver ? tigercatCore.taskBoardWipExceededClasses : void 0 }, [
333
349
  column.title,
334
- column.wipLimit != null ? vue.h(
350
+ // When showCardCount is enabled, use the compact badge style
351
+ props.showCardCount && cardCount ? null : column.wipLimit != null ? vue.h(
335
352
  "span",
336
353
  {
337
354
  class: "ml-2 text-xs font-normal opacity-70",
@@ -346,6 +363,17 @@ var TaskBoard = vue.defineComponent({
346
363
  String(column.cards.length)
347
364
  )
348
365
  ]),
366
+ // Card count badge (Kanban-style)
367
+ props.showCardCount && cardCount ? vue.h(
368
+ "span",
369
+ {
370
+ class: tigercatCore.classNames(
371
+ tigercatCore.kanbanCardCountClasses,
372
+ wipOver && tigercatCore.taskBoardWipExceededClasses
373
+ )
374
+ },
375
+ cardCount.limit ? `${cardCount.count}/${cardCount.limit}` : `${cardCount.count}`
376
+ ) : null,
349
377
  column.description ? vue.h(
350
378
  "span",
351
379
  {
@@ -396,15 +424,24 @@ var TaskBoard = vue.defineComponent({
396
424
  },
397
425
  cards
398
426
  );
399
- const footer = slots["column-footer"] ? slots["column-footer"]({ column }) : props.onCardAdd ? vue.h(
427
+ const showAddCard = props.allowAddCard || props.onCardAdd;
428
+ const footer = slots["column-footer"] ? slots["column-footer"]({ column }) : showAddCard ? vue.h(
400
429
  "div",
401
430
  {
402
431
  class: tigercatCore.classNames(
403
432
  "border-t border-[var(--tiger-border,#e5e7eb)]",
404
433
  tigercatCore.taskBoardAddCardClasses
405
434
  ),
435
+ role: "button",
436
+ tabindex: 0,
406
437
  onClick: () => {
407
438
  emit("card-add", column.id);
439
+ },
440
+ onKeydown: (e) => {
441
+ if (e.key === "Enter" || e.key === " ") {
442
+ e.preventDefault();
443
+ emit("card-add", column.id);
444
+ }
408
445
  }
409
446
  },
410
447
  [vue.h("span", null, "+"), vue.h("span", null, tigercatCore.resolveLocaleText(labels.value.addCardText))]
@@ -422,19 +459,43 @@ var TaskBoard = vue.defineComponent({
422
459
  [header, body, footer]
423
460
  );
424
461
  };
425
- return () => vue.h(
426
- "div",
427
- {
428
- ...attrs,
429
- ref: boardRef,
430
- class: wrapperClasses.value,
431
- style: wrapperStyle.value,
432
- role: "region",
433
- "aria-label": tigercatCore.resolveLocaleText(labels.value.boardAriaLabel),
434
- "data-tiger-task-board": ""
435
- },
436
- currentColumns.value.map((col, i) => renderColumnNode(col, i))
437
- );
462
+ return () => {
463
+ const children = visibleColumns.value.map((col, i) => renderColumnNode(col, i));
464
+ if (props.allowAddColumn) {
465
+ children.push(
466
+ vue.h(
467
+ "div",
468
+ {
469
+ key: "__add-column",
470
+ class: tigercatCore.kanbanAddColumnClasses,
471
+ role: "button",
472
+ tabindex: 0,
473
+ onClick: () => emit("column-add"),
474
+ onKeydown: (e) => {
475
+ if (e.key === "Enter" || e.key === " ") {
476
+ e.preventDefault();
477
+ emit("column-add");
478
+ }
479
+ }
480
+ },
481
+ "+ " + tigercatCore.resolveLocaleText(labels.value.addCardText)
482
+ )
483
+ );
484
+ }
485
+ return vue.h(
486
+ "div",
487
+ {
488
+ ...attrs,
489
+ ref: boardRef,
490
+ class: wrapperClasses.value,
491
+ style: wrapperStyle.value,
492
+ role: "region",
493
+ "aria-label": tigercatCore.resolveLocaleText(labels.value.boardAriaLabel),
494
+ "data-tiger-task-board": ""
495
+ },
496
+ children
497
+ );
498
+ };
438
499
  }
439
500
  });
440
501
  var TaskBoard_default = TaskBoard;
@@ -0,0 +1,87 @@
1
+ import { TaskBoard } from './chunk-J7VTGSHX.mjs';
2
+ import { defineComponent, h } from 'vue';
3
+
4
+ var Kanban = defineComponent({
5
+ name: "TigerKanban",
6
+ inheritAttrs: false,
7
+ props: {
8
+ columns: {
9
+ type: Array,
10
+ default: void 0
11
+ },
12
+ defaultColumns: {
13
+ type: Array,
14
+ default: () => []
15
+ },
16
+ draggable: { type: Boolean, default: true },
17
+ columnDraggable: { type: Boolean, default: true },
18
+ enforceWipLimit: { type: Boolean, default: false },
19
+ beforeCardMove: {
20
+ type: Function,
21
+ default: void 0
22
+ },
23
+ beforeColumnMove: {
24
+ type: Function,
25
+ default: void 0
26
+ },
27
+ onCardAdd: {
28
+ type: Function,
29
+ default: void 0
30
+ },
31
+ filterText: { type: String, default: "" },
32
+ hiddenColumns: {
33
+ type: Array,
34
+ default: () => []
35
+ },
36
+ showCardCount: { type: Boolean, default: true },
37
+ allowAddCard: { type: Boolean, default: true },
38
+ allowAddColumn: { type: Boolean, default: false },
39
+ locale: {
40
+ type: Object,
41
+ default: void 0
42
+ },
43
+ className: { type: String, default: void 0 },
44
+ style: {
45
+ type: Object,
46
+ default: void 0
47
+ }
48
+ },
49
+ emits: ["card-move", "column-move", "update:columns", "card-add", "column-add"],
50
+ setup(props, { emit, attrs, slots }) {
51
+ const handleCardAdd = (colId) => {
52
+ props.onCardAdd?.(colId);
53
+ emit("card-add", colId);
54
+ };
55
+ return () => h(
56
+ TaskBoard,
57
+ {
58
+ ...attrs,
59
+ columns: props.columns,
60
+ defaultColumns: props.defaultColumns,
61
+ draggable: props.draggable,
62
+ columnDraggable: props.columnDraggable,
63
+ enforceWipLimit: props.enforceWipLimit,
64
+ beforeCardMove: props.beforeCardMove,
65
+ beforeColumnMove: props.beforeColumnMove,
66
+ // Only set onCardAdd when needed — its presence affects button visibility
67
+ onCardAdd: props.allowAddCard || props.onCardAdd ? handleCardAdd : void 0,
68
+ filterText: props.filterText,
69
+ hiddenColumns: props.hiddenColumns,
70
+ showCardCount: props.showCardCount,
71
+ allowAddCard: props.allowAddCard,
72
+ allowAddColumn: props.allowAddColumn,
73
+ locale: props.locale,
74
+ className: props.className,
75
+ style: props.style,
76
+ "onCard-move": (e) => emit("card-move", e),
77
+ "onColumn-move": (e) => emit("column-move", e),
78
+ "onUpdate:columns": (cols) => emit("update:columns", cols),
79
+ "onColumn-add": () => emit("column-add")
80
+ },
81
+ slots
82
+ );
83
+ }
84
+ });
85
+ var Kanban_default = Kanban;
86
+
87
+ export { Kanban, Kanban_default };
@@ -0,0 +1,90 @@
1
+ 'use strict';
2
+
3
+ var chunkO2Q4UYDA_js = require('./chunk-O2Q4UYDA.js');
4
+ var vue = require('vue');
5
+
6
+ var Kanban = vue.defineComponent({
7
+ name: "TigerKanban",
8
+ inheritAttrs: false,
9
+ props: {
10
+ columns: {
11
+ type: Array,
12
+ default: void 0
13
+ },
14
+ defaultColumns: {
15
+ type: Array,
16
+ default: () => []
17
+ },
18
+ draggable: { type: Boolean, default: true },
19
+ columnDraggable: { type: Boolean, default: true },
20
+ enforceWipLimit: { type: Boolean, default: false },
21
+ beforeCardMove: {
22
+ type: Function,
23
+ default: void 0
24
+ },
25
+ beforeColumnMove: {
26
+ type: Function,
27
+ default: void 0
28
+ },
29
+ onCardAdd: {
30
+ type: Function,
31
+ default: void 0
32
+ },
33
+ filterText: { type: String, default: "" },
34
+ hiddenColumns: {
35
+ type: Array,
36
+ default: () => []
37
+ },
38
+ showCardCount: { type: Boolean, default: true },
39
+ allowAddCard: { type: Boolean, default: true },
40
+ allowAddColumn: { type: Boolean, default: false },
41
+ locale: {
42
+ type: Object,
43
+ default: void 0
44
+ },
45
+ className: { type: String, default: void 0 },
46
+ style: {
47
+ type: Object,
48
+ default: void 0
49
+ }
50
+ },
51
+ emits: ["card-move", "column-move", "update:columns", "card-add", "column-add"],
52
+ setup(props, { emit, attrs, slots }) {
53
+ const handleCardAdd = (colId) => {
54
+ props.onCardAdd?.(colId);
55
+ emit("card-add", colId);
56
+ };
57
+ return () => vue.h(
58
+ chunkO2Q4UYDA_js.TaskBoard,
59
+ {
60
+ ...attrs,
61
+ columns: props.columns,
62
+ defaultColumns: props.defaultColumns,
63
+ draggable: props.draggable,
64
+ columnDraggable: props.columnDraggable,
65
+ enforceWipLimit: props.enforceWipLimit,
66
+ beforeCardMove: props.beforeCardMove,
67
+ beforeColumnMove: props.beforeColumnMove,
68
+ // Only set onCardAdd when needed — its presence affects button visibility
69
+ onCardAdd: props.allowAddCard || props.onCardAdd ? handleCardAdd : void 0,
70
+ filterText: props.filterText,
71
+ hiddenColumns: props.hiddenColumns,
72
+ showCardCount: props.showCardCount,
73
+ allowAddCard: props.allowAddCard,
74
+ allowAddColumn: props.allowAddColumn,
75
+ locale: props.locale,
76
+ className: props.className,
77
+ style: props.style,
78
+ "onCard-move": (e) => emit("card-move", e),
79
+ "onColumn-move": (e) => emit("column-move", e),
80
+ "onUpdate:columns": (cols) => emit("update:columns", cols),
81
+ "onColumn-add": () => emit("column-add")
82
+ },
83
+ slots
84
+ );
85
+ }
86
+ });
87
+ var Kanban_default = Kanban;
88
+
89
+ exports.Kanban = Kanban;
90
+ exports.Kanban_default = Kanban_default;
@@ -107,18 +107,18 @@ declare const ActivityFeed: vue.DefineComponent<vue.ExtractPropTypes<{
107
107
  default: undefined;
108
108
  };
109
109
  }>> & Readonly<{}>, {
110
+ style: Record<string, string | number>;
111
+ loading: boolean;
112
+ className: string;
113
+ emptyText: string;
114
+ groupBy: (item: ActivityItem) => string;
110
115
  items: ActivityItem[];
111
116
  groups: ActivityGroup[];
112
- groupBy: (item: ActivityItem) => string;
113
117
  groupOrder: string[];
114
- loading: boolean;
115
118
  loadingText: string;
116
- emptyText: string;
117
119
  showAvatar: boolean;
118
120
  showTime: boolean;
119
121
  showGroupTitle: boolean;
120
- className: string;
121
- style: Record<string, string | number>;
122
122
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
123
123
 
124
124
  export { ActivityFeed, type VueActivityFeedProps, ActivityFeed as default };
@@ -107,18 +107,18 @@ declare const ActivityFeed: vue.DefineComponent<vue.ExtractPropTypes<{
107
107
  default: undefined;
108
108
  };
109
109
  }>> & Readonly<{}>, {
110
+ style: Record<string, string | number>;
111
+ loading: boolean;
112
+ className: string;
113
+ emptyText: string;
114
+ groupBy: (item: ActivityItem) => string;
110
115
  items: ActivityItem[];
111
116
  groups: ActivityGroup[];
112
- groupBy: (item: ActivityItem) => string;
113
117
  groupOrder: string[];
114
- loading: boolean;
115
118
  loadingText: string;
116
- emptyText: string;
117
119
  showAvatar: boolean;
118
120
  showTime: boolean;
119
121
  showGroupTitle: boolean;
120
- className: string;
121
- style: Record<string, string | number>;
122
122
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
123
123
 
124
124
  export { ActivityFeed, type VueActivityFeedProps, ActivityFeed as default };
@@ -64,8 +64,8 @@ declare const Affix: vue.DefineComponent<vue.ExtractPropTypes<{
64
64
  }>> & Readonly<{
65
65
  onChange?: ((...args: any[]) => any) | undefined;
66
66
  }>, {
67
- className: string;
68
67
  style: Record<string, string | number>;
68
+ className: string;
69
69
  target: string;
70
70
  zIndex: number;
71
71
  offsetTop: number;
@@ -64,8 +64,8 @@ declare const Affix: vue.DefineComponent<vue.ExtractPropTypes<{
64
64
  }>> & Readonly<{
65
65
  onChange?: ((...args: any[]) => any) | undefined;
66
66
  }>, {
67
- className: string;
68
67
  style: Record<string, string | number>;
68
+ className: string;
69
69
  target: string;
70
70
  zIndex: number;
71
71
  offsetTop: number;
@@ -204,11 +204,11 @@ declare const Alert: vue.DefineComponent<vue.ExtractPropTypes<{
204
204
  }>> & Readonly<{
205
205
  onClose?: ((...args: any[]) => any) | undefined;
206
206
  }>, {
207
- size: AlertSize;
208
- className: string;
209
- style: Record<string, string | number>;
210
207
  type: AlertType;
208
+ style: Record<string, string | number>;
211
209
  title: string;
210
+ size: AlertSize;
211
+ className: string;
212
212
  closable: boolean;
213
213
  closeAriaLabel: string;
214
214
  showIcon: boolean;
@@ -204,11 +204,11 @@ declare const Alert: vue.DefineComponent<vue.ExtractPropTypes<{
204
204
  }>> & Readonly<{
205
205
  onClose?: ((...args: any[]) => any) | undefined;
206
206
  }>, {
207
- size: AlertSize;
208
- className: string;
209
- style: Record<string, string | number>;
210
207
  type: AlertType;
208
+ style: Record<string, string | number>;
211
209
  title: string;
210
+ size: AlertSize;
211
+ className: string;
212
212
  closable: boolean;
213
213
  closeAriaLabel: string;
214
214
  showIcon: boolean;
@@ -171,8 +171,8 @@ declare const Anchor: vue.DefineComponent<vue.ExtractPropTypes<{
171
171
  onChange?: ((...args: any[]) => any) | undefined;
172
172
  onClick?: ((...args: any[]) => any) | undefined;
173
173
  }>, {
174
- className: string;
175
174
  style: Record<string, unknown>;
175
+ className: string;
176
176
  direction: AnchorDirection;
177
177
  affix: boolean;
178
178
  bounds: number;
@@ -171,8 +171,8 @@ declare const Anchor: vue.DefineComponent<vue.ExtractPropTypes<{
171
171
  onChange?: ((...args: any[]) => any) | undefined;
172
172
  onClick?: ((...args: any[]) => any) | undefined;
173
173
  }>, {
174
- className: string;
175
174
  style: Record<string, unknown>;
175
+ className: string;
176
176
  direction: AnchorDirection;
177
177
  affix: boolean;
178
178
  bounds: number;
@@ -61,8 +61,8 @@ declare const AnchorLink: vue.DefineComponent<vue.ExtractPropTypes<{
61
61
  default: undefined;
62
62
  };
63
63
  }>> & Readonly<{}>, {
64
- className: string;
65
64
  title: string;
65
+ className: string;
66
66
  target: string;
67
67
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
68
68
 
@@ -61,8 +61,8 @@ declare const AnchorLink: vue.DefineComponent<vue.ExtractPropTypes<{
61
61
  default: undefined;
62
62
  };
63
63
  }>> & Readonly<{}>, {
64
- className: string;
65
64
  title: string;
65
+ className: string;
66
66
  target: string;
67
67
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
68
68
 
@@ -387,10 +387,10 @@ declare const AreaChart: vue.DefineComponent<vue.ExtractPropTypes<{
387
387
  "onSeries-click"?: ((...args: any[]) => any) | undefined;
388
388
  "onSeries-hover"?: ((...args: any[]) => any) | undefined;
389
389
  }>, {
390
- hoverable: boolean;
391
390
  width: number;
392
391
  height: number;
393
392
  padding: ChartPadding;
393
+ hoverable: boolean;
394
394
  selectable: boolean;
395
395
  strokeWidth: number;
396
396
  xTicks: number;
@@ -387,10 +387,10 @@ declare const AreaChart: vue.DefineComponent<vue.ExtractPropTypes<{
387
387
  "onSeries-click"?: ((...args: any[]) => any) | undefined;
388
388
  "onSeries-hover"?: ((...args: any[]) => any) | undefined;
389
389
  }>, {
390
- hoverable: boolean;
391
390
  width: number;
392
391
  height: number;
393
392
  padding: ChartPadding;
393
+ hoverable: boolean;
394
394
  selectable: boolean;
395
395
  strokeWidth: number;
396
396
  xTicks: number;