pure-react-ui 1.5.7 → 1.5.8
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.
- package/lib/components/Kanban/Kanban.css +397 -0
- package/lib/components/Kanban/Kanban.d.ts +34 -0
- package/lib/components/Kanban/Kanban.d.ts.map +1 -0
- package/lib/components/Kanban/Kanban.js +175 -0
- package/lib/components/Kanban/Kanban.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
/* Kanban Board Container */
|
|
2
|
+
.pure-kanban {
|
|
3
|
+
display: flex;
|
|
4
|
+
gap: 1rem;
|
|
5
|
+
padding: 1rem;
|
|
6
|
+
overflow-x: auto;
|
|
7
|
+
overflow-y: hidden;
|
|
8
|
+
min-height: 600px;
|
|
9
|
+
background-color: #F4F5F7;
|
|
10
|
+
position: relative;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/* Kanban Column */
|
|
14
|
+
.pure-kanban-column {
|
|
15
|
+
flex: 0 0 300px;
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-direction: column;
|
|
18
|
+
background-color: #F4F5F7;
|
|
19
|
+
border-radius: 8px;
|
|
20
|
+
min-height: 100%;
|
|
21
|
+
transition: background-color 0.2s ease;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.pure-kanban-column--drag-over {
|
|
25
|
+
background-color: #E3FCEF;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* Column Header */
|
|
29
|
+
.pure-kanban-column__header {
|
|
30
|
+
display: flex;
|
|
31
|
+
align-items: center;
|
|
32
|
+
justify-content: space-between;
|
|
33
|
+
padding: 0.75rem 1rem;
|
|
34
|
+
background-color: #FFFFFF;
|
|
35
|
+
border-top: 3px solid #0052CC;
|
|
36
|
+
border-radius: 8px 8px 0 0;
|
|
37
|
+
margin-bottom: 0.5rem;
|
|
38
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.pure-kanban-column__title-wrapper {
|
|
42
|
+
display: flex;
|
|
43
|
+
align-items: center;
|
|
44
|
+
gap: 0.5rem;
|
|
45
|
+
flex: 1;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.pure-kanban-column__title {
|
|
49
|
+
margin: 0;
|
|
50
|
+
font-size: 0.875rem;
|
|
51
|
+
font-weight: 600;
|
|
52
|
+
color: #172B4D;
|
|
53
|
+
text-transform: uppercase;
|
|
54
|
+
letter-spacing: 0.5px;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.pure-kanban-column__count {
|
|
58
|
+
display: inline-flex;
|
|
59
|
+
align-items: center;
|
|
60
|
+
justify-content: center;
|
|
61
|
+
min-width: 24px;
|
|
62
|
+
height: 24px;
|
|
63
|
+
padding: 0 6px;
|
|
64
|
+
background-color: #DFE1E6;
|
|
65
|
+
border-radius: 12px;
|
|
66
|
+
font-size: 0.75rem;
|
|
67
|
+
font-weight: 600;
|
|
68
|
+
color: #42526E;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.pure-kanban-column__limit {
|
|
72
|
+
font-size: 0.75rem;
|
|
73
|
+
color: #6B778C;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.pure-kanban-column__add-button {
|
|
77
|
+
display: flex;
|
|
78
|
+
align-items: center;
|
|
79
|
+
justify-content: center;
|
|
80
|
+
width: 24px;
|
|
81
|
+
height: 24px;
|
|
82
|
+
padding: 0;
|
|
83
|
+
background: transparent;
|
|
84
|
+
border: none;
|
|
85
|
+
border-radius: 4px;
|
|
86
|
+
color: #6B778C;
|
|
87
|
+
cursor: pointer;
|
|
88
|
+
transition: all 0.2s ease;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.pure-kanban-column__add-button:hover {
|
|
92
|
+
background-color: #EBECF0;
|
|
93
|
+
color: #172B4D;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* Column Body */
|
|
97
|
+
.pure-kanban-column__body {
|
|
98
|
+
flex: 1;
|
|
99
|
+
display: flex;
|
|
100
|
+
flex-direction: column;
|
|
101
|
+
gap: 0.5rem;
|
|
102
|
+
padding: 0.5rem;
|
|
103
|
+
overflow-y: auto;
|
|
104
|
+
overflow-x: hidden;
|
|
105
|
+
max-height: calc(100vh - 200px);
|
|
106
|
+
min-height: 400px;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.pure-kanban-column__body::-webkit-scrollbar {
|
|
110
|
+
width: 8px;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.pure-kanban-column__body::-webkit-scrollbar-track {
|
|
114
|
+
background: transparent;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.pure-kanban-column__body::-webkit-scrollbar-thumb {
|
|
118
|
+
background: #DFE1E6;
|
|
119
|
+
border-radius: 4px;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.pure-kanban-column__body::-webkit-scrollbar-thumb:hover {
|
|
123
|
+
background: #B3BAC5;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/* Empty State */
|
|
127
|
+
.pure-kanban-column__empty {
|
|
128
|
+
display: flex;
|
|
129
|
+
flex-direction: column;
|
|
130
|
+
align-items: center;
|
|
131
|
+
justify-content: center;
|
|
132
|
+
padding: 2rem 1rem;
|
|
133
|
+
text-align: center;
|
|
134
|
+
color: #6B778C;
|
|
135
|
+
min-height: 200px;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.pure-kanban-column__empty p {
|
|
139
|
+
margin: 0 0 1rem 0;
|
|
140
|
+
font-size: 0.875rem;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.pure-kanban-column__empty-add-button {
|
|
144
|
+
padding: 0.5rem 1rem;
|
|
145
|
+
background-color: #FFFFFF;
|
|
146
|
+
border: 1px dashed #DFE1E6;
|
|
147
|
+
border-radius: 4px;
|
|
148
|
+
color: #0052CC;
|
|
149
|
+
font-size: 0.875rem;
|
|
150
|
+
font-weight: 500;
|
|
151
|
+
cursor: pointer;
|
|
152
|
+
transition: all 0.2s ease;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.pure-kanban-column__empty-add-button:hover {
|
|
156
|
+
background-color: #F4F5F7;
|
|
157
|
+
border-color: #0052CC;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/* Card Wrapper */
|
|
161
|
+
.pure-kanban-card-wrapper {
|
|
162
|
+
position: relative;
|
|
163
|
+
transition: margin 0.2s ease;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.pure-kanban-card-wrapper--drag-over {
|
|
167
|
+
margin-bottom: 60px;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/* Kanban Card */
|
|
171
|
+
.pure-kanban-card {
|
|
172
|
+
position: relative;
|
|
173
|
+
background-color: #FFFFFF;
|
|
174
|
+
border-radius: 4px;
|
|
175
|
+
padding: 0.75rem;
|
|
176
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
|
|
177
|
+
cursor: grab;
|
|
178
|
+
transition: all 0.2s ease;
|
|
179
|
+
margin-bottom: 0.5rem;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.pure-kanban-card:hover {
|
|
183
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
|
|
184
|
+
transform: translateY(-1px);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.pure-kanban-card:active {
|
|
188
|
+
cursor: grabbing;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.pure-kanban-card--dragging {
|
|
192
|
+
opacity: 0.5;
|
|
193
|
+
transform: rotate(5deg);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/* Priority Indicator */
|
|
197
|
+
.pure-kanban-card__priority {
|
|
198
|
+
position: absolute;
|
|
199
|
+
top: 0;
|
|
200
|
+
left: 0;
|
|
201
|
+
width: 4px;
|
|
202
|
+
height: 100%;
|
|
203
|
+
border-radius: 4px 0 0 4px;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* Card Header */
|
|
207
|
+
.pure-kanban-card__header {
|
|
208
|
+
display: flex;
|
|
209
|
+
align-items: flex-start;
|
|
210
|
+
justify-content: space-between;
|
|
211
|
+
gap: 0.5rem;
|
|
212
|
+
margin-bottom: 0.5rem;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.pure-kanban-card__title {
|
|
216
|
+
margin: 0;
|
|
217
|
+
font-size: 0.875rem;
|
|
218
|
+
font-weight: 500;
|
|
219
|
+
color: #172B4D;
|
|
220
|
+
line-height: 1.4;
|
|
221
|
+
flex: 1;
|
|
222
|
+
word-break: break-word;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.pure-kanban-card__actions {
|
|
226
|
+
display: flex;
|
|
227
|
+
gap: 0.25rem;
|
|
228
|
+
opacity: 0;
|
|
229
|
+
transition: opacity 0.2s ease;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.pure-kanban-card:hover .pure-kanban-card__actions {
|
|
233
|
+
opacity: 1;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.pure-kanban-card__action {
|
|
237
|
+
display: flex;
|
|
238
|
+
align-items: center;
|
|
239
|
+
justify-content: center;
|
|
240
|
+
width: 20px;
|
|
241
|
+
height: 20px;
|
|
242
|
+
padding: 0;
|
|
243
|
+
background: transparent;
|
|
244
|
+
border: none;
|
|
245
|
+
border-radius: 3px;
|
|
246
|
+
color: #6B778C;
|
|
247
|
+
cursor: pointer;
|
|
248
|
+
transition: all 0.2s ease;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
.pure-kanban-card__action:hover {
|
|
252
|
+
background-color: #EBECF0;
|
|
253
|
+
color: #172B4D;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/* Card Description */
|
|
257
|
+
.pure-kanban-card__description {
|
|
258
|
+
margin: 0 0 0.75rem 0;
|
|
259
|
+
font-size: 0.8125rem;
|
|
260
|
+
color: #6B778C;
|
|
261
|
+
line-height: 1.5;
|
|
262
|
+
word-break: break-word;
|
|
263
|
+
display: -webkit-box;
|
|
264
|
+
-webkit-line-clamp: 3;
|
|
265
|
+
-webkit-box-orient: vertical;
|
|
266
|
+
overflow: hidden;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/* Card Footer */
|
|
270
|
+
.pure-kanban-card__footer {
|
|
271
|
+
display: flex;
|
|
272
|
+
align-items: center;
|
|
273
|
+
justify-content: space-between;
|
|
274
|
+
gap: 0.5rem;
|
|
275
|
+
margin-top: 0.5rem;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
.pure-kanban-card__tags {
|
|
279
|
+
display: flex;
|
|
280
|
+
flex-wrap: wrap;
|
|
281
|
+
gap: 0.25rem;
|
|
282
|
+
flex: 1;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.pure-kanban-card__tag {
|
|
286
|
+
display: inline-block;
|
|
287
|
+
padding: 0.125rem 0.5rem;
|
|
288
|
+
background-color: #DFE1E6;
|
|
289
|
+
border-radius: 3px;
|
|
290
|
+
font-size: 0.6875rem;
|
|
291
|
+
font-weight: 500;
|
|
292
|
+
color: #42526E;
|
|
293
|
+
white-space: nowrap;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
.pure-kanban-card__tag--more {
|
|
297
|
+
background-color: #EBECF0;
|
|
298
|
+
color: #6B778C;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/* Card Meta */
|
|
302
|
+
.pure-kanban-card__meta {
|
|
303
|
+
display: flex;
|
|
304
|
+
align-items: center;
|
|
305
|
+
gap: 0.5rem;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
.pure-kanban-card__assignee {
|
|
309
|
+
display: flex;
|
|
310
|
+
align-items: center;
|
|
311
|
+
justify-content: center;
|
|
312
|
+
width: 24px;
|
|
313
|
+
height: 24px;
|
|
314
|
+
background: linear-gradient(135deg, #667EEA 0%, #764BA2 100%);
|
|
315
|
+
border-radius: 50%;
|
|
316
|
+
font-size: 0.75rem;
|
|
317
|
+
font-weight: 600;
|
|
318
|
+
color: #FFFFFF;
|
|
319
|
+
cursor: pointer;
|
|
320
|
+
transition: transform 0.2s ease;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
.pure-kanban-card__assignee:hover {
|
|
324
|
+
transform: scale(1.1);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
.pure-kanban-card__due-date {
|
|
328
|
+
font-size: 0.875rem;
|
|
329
|
+
cursor: pointer;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/* Drop Indicator */
|
|
333
|
+
.pure-kanban-card__drop-indicator {
|
|
334
|
+
height: 2px;
|
|
335
|
+
background-color: #0052CC;
|
|
336
|
+
border-radius: 2px;
|
|
337
|
+
margin: 0.5rem 0;
|
|
338
|
+
animation: pulse 1s ease-in-out infinite;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
@keyframes pulse {
|
|
342
|
+
0%, 100% {
|
|
343
|
+
opacity: 1;
|
|
344
|
+
}
|
|
345
|
+
50% {
|
|
346
|
+
opacity: 0.5;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/* Responsive Design */
|
|
351
|
+
@media (max-width: 768px) {
|
|
352
|
+
.pure-kanban {
|
|
353
|
+
padding: 0.5rem;
|
|
354
|
+
gap: 0.5rem;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
.pure-kanban-column {
|
|
358
|
+
flex: 0 0 280px;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
.pure-kanban-column__body {
|
|
362
|
+
max-height: calc(100vh - 150px);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/* Dark mode support (optional) */
|
|
367
|
+
@media (prefers-color-scheme: dark) {
|
|
368
|
+
.pure-kanban {
|
|
369
|
+
background-color: #1D2125;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
.pure-kanban-column {
|
|
373
|
+
background-color: #1D2125;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
.pure-kanban-column__header {
|
|
377
|
+
background-color: #22272B;
|
|
378
|
+
border-top-color: #4C9AFF;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
.pure-kanban-column__title {
|
|
382
|
+
color: #B6C2CF;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.pure-kanban-card {
|
|
386
|
+
background-color: #22272B;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
.pure-kanban-card__title {
|
|
390
|
+
color: #B6C2CF;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
.pure-kanban-card__description {
|
|
394
|
+
color: #8C9CB8;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './Kanban.css';
|
|
3
|
+
export interface KanbanCard {
|
|
4
|
+
id: string;
|
|
5
|
+
title: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
priority?: 'low' | 'medium' | 'high' | 'critical';
|
|
8
|
+
assignee?: string;
|
|
9
|
+
tags?: string[];
|
|
10
|
+
dueDate?: string;
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
}
|
|
13
|
+
export interface KanbanColumn {
|
|
14
|
+
id: string;
|
|
15
|
+
title: string;
|
|
16
|
+
cards: KanbanCard[];
|
|
17
|
+
color?: string;
|
|
18
|
+
limit?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface KanbanProps {
|
|
21
|
+
columns: KanbanColumn[];
|
|
22
|
+
onCardMove?: (cardId: string, fromColumnId: string, toColumnId: string, newIndex?: number) => void;
|
|
23
|
+
onCardClick?: (card: KanbanCard, columnId: string) => void;
|
|
24
|
+
onCardAdd?: (columnId: string) => void;
|
|
25
|
+
onCardEdit?: (card: KanbanCard, columnId: string) => void;
|
|
26
|
+
onCardDelete?: (cardId: string, columnId: string) => void;
|
|
27
|
+
allowAddCard?: boolean;
|
|
28
|
+
allowEditCard?: boolean;
|
|
29
|
+
allowDeleteCard?: boolean;
|
|
30
|
+
className?: string;
|
|
31
|
+
cardRender?: (card: KanbanCard, columnId: string) => React.ReactNode;
|
|
32
|
+
}
|
|
33
|
+
export declare const Kanban: React.FC<KanbanProps>;
|
|
34
|
+
//# sourceMappingURL=Kanban.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Kanban.d.ts","sourceRoot":"","sources":["../../../src/components/Kanban/Kanban.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAC7D,OAAO,cAAc,CAAC;AAEtB,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnG,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;CACtE;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA+SxC,CAAC"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import React, { useState, useCallback, useRef } from 'react';
|
|
2
|
+
import './Kanban.css';
|
|
3
|
+
export const Kanban = ({ columns: initialColumns, onCardMove, onCardClick, onCardAdd, onCardEdit, onCardDelete, allowAddCard = true, allowEditCard = true, allowDeleteCard = true, className = '', cardRender }) => {
|
|
4
|
+
const [columns, setColumns] = useState(initialColumns);
|
|
5
|
+
const [draggedCard, setDraggedCard] = useState(null);
|
|
6
|
+
const [dragOverColumn, setDragOverColumn] = useState(null);
|
|
7
|
+
const [dragOverIndex, setDragOverIndex] = useState(null);
|
|
8
|
+
const dragTimeoutRef = useRef(null);
|
|
9
|
+
const handleDragStart = useCallback((e, card, columnId, index) => {
|
|
10
|
+
setDraggedCard({ card, columnId, index });
|
|
11
|
+
e.dataTransfer.effectAllowed = 'move';
|
|
12
|
+
e.dataTransfer.setData('text/plain', card.id);
|
|
13
|
+
// Create a custom drag image
|
|
14
|
+
const dragImage = e.currentTarget.cloneNode(true);
|
|
15
|
+
dragImage.style.opacity = '0.8';
|
|
16
|
+
dragImage.style.transform = 'rotate(5deg)';
|
|
17
|
+
document.body.appendChild(dragImage);
|
|
18
|
+
e.dataTransfer.setDragImage(dragImage, e.clientX - e.currentTarget.getBoundingClientRect().left, e.clientY - e.currentTarget.getBoundingClientRect().top);
|
|
19
|
+
setTimeout(() => document.body.removeChild(dragImage), 0);
|
|
20
|
+
}, []);
|
|
21
|
+
const handleDragOver = useCallback((e, columnId, index) => {
|
|
22
|
+
e.preventDefault();
|
|
23
|
+
e.dataTransfer.dropEffect = 'move';
|
|
24
|
+
setDragOverColumn(columnId);
|
|
25
|
+
if (index !== undefined) {
|
|
26
|
+
setDragOverIndex(index);
|
|
27
|
+
}
|
|
28
|
+
// Auto-scroll when dragging near edges
|
|
29
|
+
const container = e.currentTarget.closest('.pure-kanban-column');
|
|
30
|
+
if (container) {
|
|
31
|
+
const rect = container.getBoundingClientRect();
|
|
32
|
+
const scrollThreshold = 100;
|
|
33
|
+
if (e.clientY < rect.top + scrollThreshold) {
|
|
34
|
+
container.scrollTop -= 10;
|
|
35
|
+
}
|
|
36
|
+
else if (e.clientY > rect.bottom - scrollThreshold) {
|
|
37
|
+
container.scrollTop += 10;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}, []);
|
|
41
|
+
const handleDragLeave = useCallback(() => {
|
|
42
|
+
if (dragTimeoutRef.current) {
|
|
43
|
+
clearTimeout(dragTimeoutRef.current);
|
|
44
|
+
}
|
|
45
|
+
dragTimeoutRef.current = setTimeout(() => {
|
|
46
|
+
setDragOverColumn(null);
|
|
47
|
+
setDragOverIndex(null);
|
|
48
|
+
}, 50);
|
|
49
|
+
}, []);
|
|
50
|
+
const handleDrop = useCallback((e, targetColumnId, targetIndex) => {
|
|
51
|
+
e.preventDefault();
|
|
52
|
+
if (dragTimeoutRef.current) {
|
|
53
|
+
clearTimeout(dragTimeoutRef.current);
|
|
54
|
+
}
|
|
55
|
+
if (!draggedCard)
|
|
56
|
+
return;
|
|
57
|
+
const { card, columnId: sourceColumnId, index: sourceIndex } = draggedCard;
|
|
58
|
+
// Don't do anything if dropped in the same position
|
|
59
|
+
if (sourceColumnId === targetColumnId && sourceIndex === targetIndex) {
|
|
60
|
+
setDraggedCard(null);
|
|
61
|
+
setDragOverColumn(null);
|
|
62
|
+
setDragOverIndex(null);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
// Update columns
|
|
66
|
+
setColumns(prevColumns => {
|
|
67
|
+
const newColumns = prevColumns.map(col => ({ ...col, cards: [...col.cards] }));
|
|
68
|
+
// Remove card from source column
|
|
69
|
+
const sourceColumn = newColumns.find(col => col.id === sourceColumnId);
|
|
70
|
+
if (sourceColumn) {
|
|
71
|
+
sourceColumn.cards.splice(sourceIndex, 1);
|
|
72
|
+
}
|
|
73
|
+
// Add card to target column
|
|
74
|
+
const targetColumn = newColumns.find(col => col.id === targetColumnId);
|
|
75
|
+
if (targetColumn) {
|
|
76
|
+
const insertIndex = targetIndex !== undefined && targetIndex !== null
|
|
77
|
+
? targetIndex
|
|
78
|
+
: targetColumn.cards.length;
|
|
79
|
+
targetColumn.cards.splice(insertIndex, 0, card);
|
|
80
|
+
}
|
|
81
|
+
return newColumns;
|
|
82
|
+
});
|
|
83
|
+
// Call callback
|
|
84
|
+
if (onCardMove) {
|
|
85
|
+
onCardMove(card.id, sourceColumnId, targetColumnId, targetIndex);
|
|
86
|
+
}
|
|
87
|
+
setDraggedCard(null);
|
|
88
|
+
setDragOverColumn(null);
|
|
89
|
+
setDragOverIndex(null);
|
|
90
|
+
}, [draggedCard, onCardMove]);
|
|
91
|
+
const handleDragEnd = useCallback(() => {
|
|
92
|
+
setDraggedCard(null);
|
|
93
|
+
setDragOverColumn(null);
|
|
94
|
+
setDragOverIndex(null);
|
|
95
|
+
if (dragTimeoutRef.current) {
|
|
96
|
+
clearTimeout(dragTimeoutRef.current);
|
|
97
|
+
}
|
|
98
|
+
}, []);
|
|
99
|
+
const getPriorityColor = (priority) => {
|
|
100
|
+
switch (priority) {
|
|
101
|
+
case 'critical': return '#DE350B';
|
|
102
|
+
case 'high': return '#FF5630';
|
|
103
|
+
case 'medium': return '#FFAB00';
|
|
104
|
+
case 'low': return '#36B37E';
|
|
105
|
+
default: return '#DFE1E6';
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
const getPriorityLabel = (priority) => {
|
|
109
|
+
switch (priority) {
|
|
110
|
+
case 'critical': return 'Critical';
|
|
111
|
+
case 'high': return 'High';
|
|
112
|
+
case 'medium': return 'Medium';
|
|
113
|
+
case 'low': return 'Low';
|
|
114
|
+
default: return 'None';
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
const defaultCardRender = (card, columnId) => (React.createElement("div", { className: `pure-kanban-card ${draggedCard?.card.id === card.id ? 'pure-kanban-card--dragging' : ''}`, draggable: true, onDragStart: (e) => {
|
|
118
|
+
const column = columns.find(col => col.id === columnId);
|
|
119
|
+
const index = column?.cards.findIndex(c => c.id === card.id) ?? -1;
|
|
120
|
+
handleDragStart(e, card, columnId, index);
|
|
121
|
+
}, onDragEnd: handleDragEnd, onClick: () => onCardClick?.(card, columnId) },
|
|
122
|
+
card.priority && (React.createElement("div", { className: "pure-kanban-card__priority", style: { backgroundColor: getPriorityColor(card.priority) }, title: getPriorityLabel(card.priority) })),
|
|
123
|
+
React.createElement("div", { className: "pure-kanban-card__header" },
|
|
124
|
+
React.createElement("h4", { className: "pure-kanban-card__title" }, card.title),
|
|
125
|
+
(allowEditCard || allowDeleteCard) && (React.createElement("div", { className: "pure-kanban-card__actions" },
|
|
126
|
+
allowEditCard && (React.createElement("button", { className: "pure-kanban-card__action", onClick: (e) => {
|
|
127
|
+
e.stopPropagation();
|
|
128
|
+
onCardEdit?.(card, columnId);
|
|
129
|
+
}, title: "Edit card" },
|
|
130
|
+
React.createElement("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none" },
|
|
131
|
+
React.createElement("path", { d: "M11.5 1.5L12.5 2.5L3.5 11.5H2.5V10.5L11.5 1.5Z", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })))),
|
|
132
|
+
allowDeleteCard && (React.createElement("button", { className: "pure-kanban-card__action", onClick: (e) => {
|
|
133
|
+
e.stopPropagation();
|
|
134
|
+
if (window.confirm('Are you sure you want to delete this card?')) {
|
|
135
|
+
onCardDelete?.(card.id, columnId);
|
|
136
|
+
}
|
|
137
|
+
}, title: "Delete card" },
|
|
138
|
+
React.createElement("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none" },
|
|
139
|
+
React.createElement("path", { d: "M3.5 3.5L10.5 10.5M10.5 3.5L3.5 10.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }))))))),
|
|
140
|
+
card.description && (React.createElement("p", { className: "pure-kanban-card__description" }, card.description)),
|
|
141
|
+
React.createElement("div", { className: "pure-kanban-card__footer" },
|
|
142
|
+
card.tags && card.tags.length > 0 && (React.createElement("div", { className: "pure-kanban-card__tags" },
|
|
143
|
+
card.tags.slice(0, 3).map((tag, idx) => (React.createElement("span", { key: idx, className: "pure-kanban-card__tag" }, tag))),
|
|
144
|
+
card.tags.length > 3 && (React.createElement("span", { className: "pure-kanban-card__tag pure-kanban-card__tag--more" },
|
|
145
|
+
"+",
|
|
146
|
+
card.tags.length - 3)))),
|
|
147
|
+
React.createElement("div", { className: "pure-kanban-card__meta" },
|
|
148
|
+
card.assignee && (React.createElement("div", { className: "pure-kanban-card__assignee", title: card.assignee }, card.assignee.charAt(0).toUpperCase())),
|
|
149
|
+
card.dueDate && (React.createElement("span", { className: "pure-kanban-card__due-date", title: `Due: ${card.dueDate}` }, "\uD83D\uDCC5"))))));
|
|
150
|
+
return (React.createElement("div", { className: `pure-kanban ${className}` }, columns.map((column) => (React.createElement("div", { key: column.id, className: `pure-kanban-column ${dragOverColumn === column.id ? 'pure-kanban-column--drag-over' : ''}`, onDragOver: (e) => handleDragOver(e, column.id), onDragLeave: handleDragLeave, onDrop: (e) => handleDrop(e, column.id) },
|
|
151
|
+
React.createElement("div", { className: "pure-kanban-column__header", style: { borderTopColor: column.color || '#0052CC' } },
|
|
152
|
+
React.createElement("div", { className: "pure-kanban-column__title-wrapper" },
|
|
153
|
+
React.createElement("h3", { className: "pure-kanban-column__title" }, column.title),
|
|
154
|
+
React.createElement("span", { className: "pure-kanban-column__count" }, column.cards.length),
|
|
155
|
+
column.limit && (React.createElement("span", { className: "pure-kanban-column__limit" },
|
|
156
|
+
"/ ",
|
|
157
|
+
column.limit))),
|
|
158
|
+
allowAddCard && (React.createElement("button", { className: "pure-kanban-column__add-button", onClick: () => onCardAdd?.(column.id), title: "Add card" },
|
|
159
|
+
React.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none" },
|
|
160
|
+
React.createElement("path", { d: "M8 3V13M3 8H13", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }))))),
|
|
161
|
+
React.createElement("div", { className: "pure-kanban-column__body" },
|
|
162
|
+
column.cards.length === 0 && (React.createElement("div", { className: "pure-kanban-column__empty" },
|
|
163
|
+
React.createElement("p", null, "No cards"),
|
|
164
|
+
allowAddCard && (React.createElement("button", { className: "pure-kanban-column__empty-add-button", onClick: () => onCardAdd?.(column.id) }, "Add a card")))),
|
|
165
|
+
column.cards.map((card, index) => {
|
|
166
|
+
const isDragOver = dragOverColumn === column.id && dragOverIndex === index;
|
|
167
|
+
return (React.createElement("div", { key: card.id, className: `pure-kanban-card-wrapper ${isDragOver ? 'pure-kanban-card-wrapper--drag-over' : ''}`, onDragOver: (e) => {
|
|
168
|
+
e.preventDefault();
|
|
169
|
+
handleDragOver(e, column.id, index);
|
|
170
|
+
}, onDragLeave: handleDragLeave, onDrop: (e) => handleDrop(e, column.id, index) }, cardRender ? cardRender(card, column.id) : defaultCardRender(card, column.id)));
|
|
171
|
+
}),
|
|
172
|
+
dragOverColumn === column.id && dragOverIndex === null && column.cards.length > 0 && (React.createElement("div", { className: "pure-kanban-card-wrapper pure-kanban-card-wrapper--drag-over" },
|
|
173
|
+
React.createElement("div", { className: "pure-kanban-card__drop-indicator" })))))))));
|
|
174
|
+
};
|
|
175
|
+
//# sourceMappingURL=Kanban.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Kanban.js","sourceRoot":"","sources":["../../../src/components/Kanban/Kanban.tsx"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -15,4 +15,6 @@ export { Text } from './components/Text/Text';
|
|
|
15
15
|
export type { TextProps } from './components/Text/Text';
|
|
16
16
|
export { Form, FormItem, Input, Textarea, Select, Checkbox, Radio, Switch, FormGroup, FormRow, useFormContext, useForm } from './components/Form';
|
|
17
17
|
export type { FormProps, FormItemProps, FormInstance, InputProps, TextareaProps, SelectProps, SelectOption, CheckboxProps, RadioProps, SwitchProps, FormGroupProps, FormRowProps } from './components/Form';
|
|
18
|
+
export { Kanban } from './components/Kanban/Kanban';
|
|
19
|
+
export type { KanbanProps, KanbanCard, KanbanColumn } from './components/Kanban/Kanban';
|
|
18
20
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClE,cAAc,yBAAyB,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAO,EACP,cAAc,EACd,OAAO,EACR,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,SAAS,EACT,aAAa,EACb,YAAY,EACZ,UAAU,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,UAAU,EACV,WAAW,EACX,cAAc,EACd,YAAY,EACb,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClE,cAAc,yBAAyB,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAO,EACP,cAAc,EACd,OAAO,EACR,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,SAAS,EACT,aAAa,EACb,YAAY,EACZ,UAAU,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,UAAU,EACV,WAAW,EACX,cAAc,EACd,YAAY,EACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -7,4 +7,5 @@ export { Space } from './components/Space/Space';
|
|
|
7
7
|
export { Flex } from './components/Flex/Flex';
|
|
8
8
|
export { Text } from './components/Text/Text';
|
|
9
9
|
export { Form, FormItem, Input, Textarea, Select, Checkbox, Radio, Switch, FormGroup, FormRow, useFormContext, useForm } from './components/Form';
|
|
10
|
+
export { Kanban } from './components/Kanban/Kanban';
|
|
10
11
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGpD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAG9C,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAGjD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,cAAc,yBAAyB,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAGjD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAG9C,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAG9C,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAO,EACP,cAAc,EACd,OAAO,EACR,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGpD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAG9C,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAGjD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,cAAc,yBAAyB,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAGjD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAG9C,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAG9C,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAO,EACP,cAAc,EACd,OAAO,EACR,MAAM,mBAAmB,CAAC;AAgB3B,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC"}
|
package/package.json
CHANGED