@composy/kanban-core 0.0.1 → 0.0.2

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 (147) hide show
  1. package/README.md +171 -37
  2. package/dist/index.css +114 -114
  3. package/dist/index.js +221 -126
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.min.css +1 -1
  6. package/dist/index.min.js +758 -1
  7. package/dist/index.min.js.map +1 -0
  8. package/es/.dts-output-manifest.json +1 -0
  9. package/es/.dts.tsbuildinfo +1 -0
  10. package/es/core/ColumnManager.d.ts +4 -3
  11. package/es/core/ColumnManager.js +43 -18
  12. package/es/core/ColumnManager.js.map +1 -1
  13. package/es/core/DragController.d.ts +1 -2
  14. package/es/core/DragController.js +11 -1
  15. package/es/core/DragController.js.map +1 -1
  16. package/es/core/EventEmitter.d.ts +0 -1
  17. package/es/core/EventEmitter.js +8 -3
  18. package/es/core/EventEmitter.js.map +1 -1
  19. package/es/core/FilterEngine.d.ts +1 -2
  20. package/es/core/FilterEngine.js +10 -5
  21. package/es/core/FilterEngine.js.map +1 -1
  22. package/es/core/KanbanBoard.d.ts +3 -3
  23. package/es/core/KanbanBoard.js +61 -15
  24. package/es/core/KanbanBoard.js.map +1 -1
  25. package/es/core/Renderer.d.ts +2 -3
  26. package/es/core/Renderer.js +11 -7
  27. package/es/core/Renderer.js.map +1 -1
  28. package/es/core/index.d.ts +2 -3
  29. package/es/core/index.js +1 -1
  30. package/es/index.d.ts +3 -4
  31. package/es/index.js +2 -2
  32. package/es/styles/kanban.css +114 -114
  33. package/es/types/index.d.ts +3 -4
  34. package/es/types/index.js +1 -1
  35. package/es/utils/dom.d.ts +0 -1
  36. package/es/utils/dom.js +1 -1
  37. package/es/utils/dom.js.map +1 -1
  38. package/es/utils/id.d.ts +0 -1
  39. package/es/utils/id.js +1 -1
  40. package/es/utils/id.js.map +1 -1
  41. package/es/utils/index.d.ts +1 -2
  42. package/es/utils/index.js +1 -1
  43. package/es/utils/index.js.map +1 -1
  44. package/es/version.d.ts +0 -1
  45. package/es/version.js +1 -1
  46. package/es/version.js.map +1 -1
  47. package/esm/core/ColumnManager.js +43 -18
  48. package/esm/core/ColumnManager.js.map +1 -1
  49. package/esm/core/DragController.js +11 -1
  50. package/esm/core/DragController.js.map +1 -1
  51. package/esm/core/EventEmitter.js +8 -3
  52. package/esm/core/EventEmitter.js.map +1 -1
  53. package/esm/core/FilterEngine.js +10 -5
  54. package/esm/core/FilterEngine.js.map +1 -1
  55. package/esm/core/KanbanBoard.js +63 -17
  56. package/esm/core/KanbanBoard.js.map +1 -1
  57. package/esm/core/Renderer.js +11 -7
  58. package/esm/core/Renderer.js.map +1 -1
  59. package/esm/index.js +4 -4
  60. package/esm/styles/kanban.less +357 -339
  61. package/esm/utils/dom.js +1 -1
  62. package/esm/utils/dom.js.map +1 -1
  63. package/esm/utils/id.js +1 -1
  64. package/esm/utils/id.js.map +1 -1
  65. package/esm/utils/index.js +2 -2
  66. package/esm/utils/index.js.map +1 -1
  67. package/esm/version.js +1 -1
  68. package/esm/version.js.map +1 -1
  69. package/lib/core/ColumnManager.cjs +43 -18
  70. package/lib/core/ColumnManager.cjs.map +1 -1
  71. package/{esm/core/ColumnManager.d.ts → lib/core/ColumnManager.d.cts} +4 -3
  72. package/lib/core/DragController.cjs +11 -1
  73. package/lib/core/DragController.cjs.map +1 -1
  74. package/{esm/core/DragController.d.ts → lib/core/DragController.d.cts} +1 -2
  75. package/lib/core/EventEmitter.cjs +8 -3
  76. package/lib/core/EventEmitter.cjs.map +1 -1
  77. package/lib/core/{EventEmitter.d.ts → EventEmitter.d.cts} +0 -1
  78. package/lib/core/FilterEngine.cjs +10 -5
  79. package/lib/core/FilterEngine.cjs.map +1 -1
  80. package/{esm/core/FilterEngine.d.ts → lib/core/FilterEngine.d.cts} +1 -2
  81. package/lib/core/KanbanBoard.cjs +61 -15
  82. package/lib/core/KanbanBoard.cjs.map +1 -1
  83. package/{esm/core/KanbanBoard.d.ts → lib/core/KanbanBoard.d.cts} +3 -3
  84. package/lib/core/Renderer.cjs +11 -7
  85. package/lib/core/Renderer.cjs.map +1 -1
  86. package/{esm/core/Renderer.d.ts → lib/core/Renderer.d.cts} +2 -3
  87. package/lib/core/index.cjs +1 -1
  88. package/{esm/core/index.d.ts → lib/core/index.d.cts} +2 -3
  89. package/lib/index.cjs +2 -2
  90. package/lib/{index.d.ts → index.d.cts} +3 -4
  91. package/lib/styles/kanban.css +114 -114
  92. package/lib/types/index.cjs +1 -1
  93. package/{esm/types/index.d.ts → lib/types/index.d.cts} +3 -4
  94. package/lib/utils/dom.cjs +1 -1
  95. package/lib/utils/dom.cjs.map +1 -1
  96. package/lib/utils/{dom.d.ts → dom.d.cts} +0 -1
  97. package/lib/utils/id.cjs +1 -1
  98. package/lib/utils/id.cjs.map +1 -1
  99. package/{esm/utils/id.d.ts → lib/utils/id.d.cts} +0 -1
  100. package/lib/utils/index.cjs +1 -1
  101. package/lib/utils/index.cjs.map +1 -1
  102. package/lib/utils/{index.d.ts → index.d.cts} +1 -2
  103. package/lib/version.cjs +1 -1
  104. package/lib/version.cjs.map +1 -1
  105. package/{esm/version.d.ts → lib/version.d.cts} +0 -1
  106. package/package.json +23 -21
  107. package/es/core/ColumnManager.d.ts.map +0 -1
  108. package/es/core/DragController.d.ts.map +0 -1
  109. package/es/core/EventEmitter.d.ts.map +0 -1
  110. package/es/core/FilterEngine.d.ts.map +0 -1
  111. package/es/core/KanbanBoard.d.ts.map +0 -1
  112. package/es/core/Renderer.d.ts.map +0 -1
  113. package/es/core/index.d.ts.map +0 -1
  114. package/es/index.d.ts.map +0 -1
  115. package/es/types/index.d.ts.map +0 -1
  116. package/es/utils/dom.d.ts.map +0 -1
  117. package/es/utils/id.d.ts.map +0 -1
  118. package/es/utils/index.d.ts.map +0 -1
  119. package/es/version.d.ts.map +0 -1
  120. package/esm/core/ColumnManager.d.ts.map +0 -1
  121. package/esm/core/DragController.d.ts.map +0 -1
  122. package/esm/core/EventEmitter.d.ts +0 -35
  123. package/esm/core/EventEmitter.d.ts.map +0 -1
  124. package/esm/core/FilterEngine.d.ts.map +0 -1
  125. package/esm/core/KanbanBoard.d.ts.map +0 -1
  126. package/esm/core/Renderer.d.ts.map +0 -1
  127. package/esm/core/index.d.ts.map +0 -1
  128. package/esm/core/index.js +0 -17
  129. package/esm/index.d.ts +0 -15
  130. package/esm/index.d.ts.map +0 -1
  131. package/esm/types/index.d.ts.map +0 -1
  132. package/esm/types/index.js +0 -10
  133. package/esm/utils/dom.d.ts +0 -24
  134. package/esm/utils/dom.d.ts.map +0 -1
  135. package/esm/utils/id.d.ts.map +0 -1
  136. package/esm/utils/index.d.ts +0 -25
  137. package/esm/utils/index.d.ts.map +0 -1
  138. package/esm/version.d.ts.map +0 -1
  139. package/lib/core/ColumnManager.d.ts +0 -99
  140. package/lib/core/DragController.d.ts +0 -55
  141. package/lib/core/FilterEngine.d.ts +0 -45
  142. package/lib/core/KanbanBoard.d.ts +0 -152
  143. package/lib/core/Renderer.d.ts +0 -59
  144. package/lib/core/index.d.ts +0 -11
  145. package/lib/types/index.d.ts +0 -209
  146. package/lib/utils/id.d.ts +0 -9
  147. package/lib/version.d.ts +0 -6
@@ -1,59 +0,0 @@
1
- import type { Column, KanbanOptions } from '../types';
2
- import { EventEmitter } from './EventEmitter';
3
- import { DragController } from './DragController';
4
- /**
5
- * DOM 渲染器
6
- */
7
- export declare class Renderer {
8
- private container;
9
- private boardEl;
10
- private events;
11
- private dragController;
12
- private options;
13
- private prefix;
14
- private columnElements;
15
- private columnBodyElements;
16
- private cardElements;
17
- constructor(container: HTMLElement, events: EventEmitter, dragController: DragController, options: KanbanOptions);
18
- /**
19
- * 渲染整个看板
20
- */
21
- render(columns: Column[], hiddenCardIds?: Set<string>): void;
22
- /**
23
- * 渲染单个列
24
- */
25
- private renderColumn;
26
- /**
27
- * 渲染列头部
28
- */
29
- private renderColumnHeader;
30
- /**
31
- * 渲染单张卡片
32
- */
33
- private renderCard;
34
- /**
35
- * 默认卡片渲染
36
- */
37
- private renderDefaultCard;
38
- /**
39
- * 获取列元素
40
- */
41
- getColumnElement(columnId: string): HTMLElement | undefined;
42
- /**
43
- * 获取卡片元素
44
- */
45
- getCardElement(cardId: string): HTMLElement | undefined;
46
- /**
47
- * 获取看板根元素
48
- */
49
- getBoardElement(): HTMLElement | null;
50
- /**
51
- * 清理 DOM
52
- */
53
- private cleanup;
54
- /**
55
- * 销毁
56
- */
57
- destroy(): void;
58
- }
59
- //# sourceMappingURL=Renderer.d.ts.map
@@ -1,11 +0,0 @@
1
- /**
2
- * @file index.ts
3
- * @description index 模块
4
- */
5
- export { KanbanBoard, createKanbanBoard } from './KanbanBoard';
6
- export { EventEmitter, type EventHandler } from './EventEmitter';
7
- export { ColumnManager } from './ColumnManager';
8
- export { DragController, type DragState } from './DragController';
9
- export { FilterEngine } from './FilterEngine';
10
- export { Renderer } from './Renderer';
11
- //# sourceMappingURL=index.d.ts.map
@@ -1,209 +0,0 @@
1
- /**
2
- * @composy/kanban-core - Type Definitions
3
- */
4
- /**
5
- * 标签
6
- */
7
- export interface Label {
8
- id: string;
9
- name: string;
10
- color: string;
11
- }
12
- /**
13
- * 卡片
14
- */
15
- export interface Card {
16
- id: string;
17
- title: string;
18
- description?: string;
19
- labels?: Label[];
20
- assignees?: string[];
21
- dueDate?: string | Date;
22
- priority?: 'low' | 'medium' | 'high' | 'urgent';
23
- order: number;
24
- columnId: string;
25
- /** 自定义数据 */
26
- data?: Record<string, unknown>;
27
- /** 创建时间 */
28
- createdAt?: string;
29
- /** 更新时间 */
30
- updatedAt?: string;
31
- }
32
- /**
33
- * 列
34
- */
35
- export interface Column {
36
- id: string;
37
- title: string;
38
- cards: Card[];
39
- /** WIP 限制(Work In Progress) */
40
- wipLimit?: number;
41
- /** 是否折叠 */
42
- collapsed?: boolean;
43
- /** 列颜色 */
44
- color?: string;
45
- /** 排序序号 */
46
- order: number;
47
- }
48
- /**
49
- * 看板数据
50
- */
51
- export interface Board {
52
- id: string;
53
- title: string;
54
- columns: Column[];
55
- labels?: Label[];
56
- }
57
- /**
58
- * 看板配置项
59
- */
60
- export interface KanbanOptions {
61
- /** 容器元素或 CSS 选择器 */
62
- container: HTMLElement | string;
63
- /** 初始列数据 */
64
- columns?: Partial<Column>[];
65
- /** 初始标签 */
66
- labels?: Label[];
67
- /** 看板标题 */
68
- title?: string;
69
- /** 是否启用拖拽 */
70
- draggable?: boolean;
71
- /** 是否启用列拖拽 */
72
- columnDraggable?: boolean;
73
- /** 是否允许跨列拖拽 */
74
- crossColumnDrag?: boolean;
75
- /** 是否启用搜索 */
76
- searchable?: boolean;
77
- /** 是否显示添加卡片按钮 */
78
- showAddCard?: boolean;
79
- /** 是否显示添加列按钮 */
80
- showAddColumn?: boolean;
81
- /** 是否显示列头部操作菜单 */
82
- showColumnActions?: boolean;
83
- /** 是否显示卡片数量徽章 */
84
- showCardCount?: boolean;
85
- /** 调试模式 */
86
- debug?: boolean;
87
- /** 自定义 CSS 类名前缀 */
88
- classPrefix?: string;
89
- /** 卡片渲染器 */
90
- cardRenderer?: (card: Card, element: HTMLElement) => void;
91
- /** 列头部渲染器 */
92
- columnHeaderRenderer?: (column: Column, element: HTMLElement) => void;
93
- onCardAdd?: (card: Card, columnId: string) => void;
94
- onCardRemove?: (card: Card, columnId: string) => void;
95
- onCardMove?: (card: Card, fromColumnId: string, toColumnId: string, toIndex: number) => void;
96
- onCardClick?: (card: Card) => void;
97
- onCardUpdate?: (card: Card) => void;
98
- onColumnAdd?: (column: Column) => void;
99
- onColumnRemove?: (column: Column) => void;
100
- onColumnMove?: (column: Column, fromIndex: number, toIndex: number) => void;
101
- onColumnCollapse?: (column: Column, collapsed: boolean) => void;
102
- onReady?: (instance: unknown) => void;
103
- onDestroy?: () => void;
104
- onError?: (error: Error) => void;
105
- }
106
- /**
107
- * 看板事件映射
108
- */
109
- export interface KanbanEventMap {
110
- 'ready': {
111
- instance: unknown;
112
- };
113
- 'destroy': void;
114
- 'error': {
115
- error: Error;
116
- };
117
- 'card:add': {
118
- card: Card;
119
- columnId: string;
120
- };
121
- 'card:remove': {
122
- card: Card;
123
- columnId: string;
124
- };
125
- 'card:move': {
126
- card: Card;
127
- fromColumnId: string;
128
- toColumnId: string;
129
- toIndex: number;
130
- };
131
- 'card:click': {
132
- card: Card;
133
- };
134
- 'card:update': {
135
- card: Card;
136
- changes: Partial<Card>;
137
- };
138
- 'card:drag-start': {
139
- card: Card;
140
- };
141
- 'card:drag-end': {
142
- card: Card;
143
- };
144
- 'column:add': {
145
- column: Column;
146
- };
147
- 'column:remove': {
148
- column: Column;
149
- };
150
- 'column:move': {
151
- column: Column;
152
- fromIndex: number;
153
- toIndex: number;
154
- };
155
- 'column:collapse': {
156
- column: Column;
157
- collapsed: boolean;
158
- };
159
- 'column:update': {
160
- column: Column;
161
- changes: Partial<Column>;
162
- };
163
- 'filter:change': {
164
- criteria: FilterCriteria;
165
- };
166
- 'filter:clear': void;
167
- 'search:change': {
168
- keyword: string;
169
- };
170
- 'data:import': {
171
- board: BoardData;
172
- };
173
- 'data:export': {
174
- board: BoardData;
175
- };
176
- }
177
- /**
178
- * 筛选条件
179
- */
180
- export interface FilterCriteria {
181
- /** 关键词搜索(匹配标题和描述) */
182
- keyword?: string;
183
- /** 按标签筛选 */
184
- labelIds?: string[];
185
- /** 按成员筛选 */
186
- assignees?: string[];
187
- /** 按优先级筛选 */
188
- priorities?: Card['priority'][];
189
- /** 按列筛选 */
190
- columnIds?: string[];
191
- /** 按截止日期范围筛选 */
192
- dueDateRange?: {
193
- start?: string;
194
- end?: string;
195
- };
196
- /** 自定义筛选函数 */
197
- custom?: (card: Card) => boolean;
198
- }
199
- /**
200
- * 看板导出数据格式
201
- */
202
- export interface BoardData {
203
- version: string;
204
- title: string;
205
- columns: Column[];
206
- labels: Label[];
207
- exportedAt: string;
208
- }
209
- //# sourceMappingURL=index.d.ts.map
package/lib/utils/id.d.ts DELETED
@@ -1,9 +0,0 @@
1
- /**
2
- * 生成唯一 ID
3
- */
4
- export declare function generateId(prefix?: string): string;
5
- /**
6
- * 重置计数器(仅测试用)
7
- */
8
- export declare function resetIdCounter(): void;
9
- //# sourceMappingURL=id.d.ts.map
package/lib/version.d.ts DELETED
@@ -1,6 +0,0 @@
1
- /**
2
- * @file version.ts
3
- * @description version 模块
4
- */
5
- export declare const VERSION = "0.1.0";
6
- //# sourceMappingURL=version.d.ts.map