@design.estate/dees-catalog 13.0.1 → 13.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.
- package/dist_bundle/bundle.js +638 -68
- package/dist_bundle/bundle.js.map +1 -1
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/elements/00group-kanban/dees-kanban/dees-kanban.d.ts +3 -1
- package/dist_ts_web/elements/00group-kanban/dees-kanban/dees-kanban.js +44 -29
- package/dist_ts_web/elements/00group-kanban/dees-kanban-card/dees-kanban-card.d.ts +4 -0
- package/dist_ts_web/elements/00group-kanban/dees-kanban-card/dees-kanban-card.js +37 -8
- package/dist_ts_web/elements/00group-kanban/dees-kanban-column/dees-kanban-column.d.ts +7 -2
- package/dist_ts_web/elements/00group-kanban/dees-kanban-column/dees-kanban-column.js +77 -39
- package/dist_ts_web/elements/00group-kanban/kanban.dragcontroller.d.ts +67 -0
- package/dist_ts_web/elements/00group-kanban/kanban.dragcontroller.js +548 -0
- package/package.json +1 -1
- package/readme.md +11 -4
- package/scripts/check-packed-consumer.mjs +1 -1
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/00group-kanban/dees-kanban/dees-kanban.ts +30 -17
- package/ts_web/elements/00group-kanban/dees-kanban-card/dees-kanban-card.ts +12 -5
- package/ts_web/elements/00group-kanban/dees-kanban-column/dees-kanban-column.ts +37 -21
- package/ts_web/elements/00group-kanban/kanban.dragcontroller.ts +481 -0
|
@@ -32,7 +32,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
|
|
|
32
32
|
}
|
|
33
33
|
return useValue ? value : void 0;
|
|
34
34
|
};
|
|
35
|
-
import { DeesElement, customElement, property, state, html, css } from '@design.estate/dees-element';
|
|
35
|
+
import { DeesElement, customElement, property, state, html, css, directives } from '@design.estate/dees-element';
|
|
36
36
|
import { kanbanStyles } from '../kanban.styles.js';
|
|
37
37
|
import { kanbanEvent, sortKanbanTickets } from '../kanban.helpers.js';
|
|
38
38
|
import '../dees-kanban-card/dees-kanban-card.js';
|
|
@@ -57,6 +57,9 @@ let DeesKanbanColumn = (() => {
|
|
|
57
57
|
let _movable_decorators;
|
|
58
58
|
let _movable_initializers = [];
|
|
59
59
|
let _movable_extraInitializers = [];
|
|
60
|
+
let _movesDisabled_decorators;
|
|
61
|
+
let _movesDisabled_initializers = [];
|
|
62
|
+
let _movesDisabled_extraInitializers = [];
|
|
60
63
|
let _canCreate_decorators;
|
|
61
64
|
let _canCreate_initializers = [];
|
|
62
65
|
let _canCreate_extraInitializers = [];
|
|
@@ -66,12 +69,18 @@ let DeesKanbanColumn = (() => {
|
|
|
66
69
|
let _draggingTicketId_decorators;
|
|
67
70
|
let _draggingTicketId_initializers = [];
|
|
68
71
|
let _draggingTicketId_extraInitializers = [];
|
|
69
|
-
let
|
|
70
|
-
let
|
|
71
|
-
let
|
|
72
|
-
let
|
|
73
|
-
let
|
|
74
|
-
let
|
|
72
|
+
let _pointerManaged_decorators;
|
|
73
|
+
let _pointerManaged_initializers = [];
|
|
74
|
+
let _pointerManaged_extraInitializers = [];
|
|
75
|
+
let _nativeDropBefore_decorators;
|
|
76
|
+
let _nativeDropBefore_initializers = [];
|
|
77
|
+
let _nativeDropBefore_extraInitializers = [];
|
|
78
|
+
let _nativeOver_decorators;
|
|
79
|
+
let _nativeOver_initializers = [];
|
|
80
|
+
let _nativeOver_extraInitializers = [];
|
|
81
|
+
let _motion_decorators;
|
|
82
|
+
let _motion_initializers = [];
|
|
83
|
+
let _motion_extraInitializers = [];
|
|
75
84
|
var DeesKanbanColumn = class extends _classSuper {
|
|
76
85
|
static { _classThis = this; }
|
|
77
86
|
static {
|
|
@@ -81,21 +90,27 @@ let DeesKanbanColumn = (() => {
|
|
|
81
90
|
_allTickets_decorators = [property({ attribute: false })];
|
|
82
91
|
_columns_decorators = [property({ attribute: false })];
|
|
83
92
|
_movable_decorators = [property({ type: Boolean })];
|
|
93
|
+
_movesDisabled_decorators = [property({ type: Boolean })];
|
|
84
94
|
_canCreate_decorators = [property({ type: Boolean })];
|
|
85
95
|
_pendingTicketId_decorators = [property({ type: String })];
|
|
86
96
|
_draggingTicketId_decorators = [property({ type: String })];
|
|
87
|
-
|
|
88
|
-
|
|
97
|
+
_pointerManaged_decorators = [property({ attribute: false })];
|
|
98
|
+
_nativeDropBefore_decorators = [state()];
|
|
99
|
+
_nativeOver_decorators = [state()];
|
|
100
|
+
_motion_decorators = [property({ attribute: false })];
|
|
89
101
|
__esDecorate(this, null, _column_decorators, { kind: "accessor", name: "column", static: false, private: false, access: { has: obj => "column" in obj, get: obj => obj.column, set: (obj, value) => { obj.column = value; } }, metadata: _metadata }, _column_initializers, _column_extraInitializers);
|
|
90
102
|
__esDecorate(this, null, _tickets_decorators, { kind: "accessor", name: "tickets", static: false, private: false, access: { has: obj => "tickets" in obj, get: obj => obj.tickets, set: (obj, value) => { obj.tickets = value; } }, metadata: _metadata }, _tickets_initializers, _tickets_extraInitializers);
|
|
91
103
|
__esDecorate(this, null, _allTickets_decorators, { kind: "accessor", name: "allTickets", static: false, private: false, access: { has: obj => "allTickets" in obj, get: obj => obj.allTickets, set: (obj, value) => { obj.allTickets = value; } }, metadata: _metadata }, _allTickets_initializers, _allTickets_extraInitializers);
|
|
92
104
|
__esDecorate(this, null, _columns_decorators, { kind: "accessor", name: "columns", static: false, private: false, access: { has: obj => "columns" in obj, get: obj => obj.columns, set: (obj, value) => { obj.columns = value; } }, metadata: _metadata }, _columns_initializers, _columns_extraInitializers);
|
|
93
105
|
__esDecorate(this, null, _movable_decorators, { kind: "accessor", name: "movable", static: false, private: false, access: { has: obj => "movable" in obj, get: obj => obj.movable, set: (obj, value) => { obj.movable = value; } }, metadata: _metadata }, _movable_initializers, _movable_extraInitializers);
|
|
106
|
+
__esDecorate(this, null, _movesDisabled_decorators, { kind: "accessor", name: "movesDisabled", static: false, private: false, access: { has: obj => "movesDisabled" in obj, get: obj => obj.movesDisabled, set: (obj, value) => { obj.movesDisabled = value; } }, metadata: _metadata }, _movesDisabled_initializers, _movesDisabled_extraInitializers);
|
|
94
107
|
__esDecorate(this, null, _canCreate_decorators, { kind: "accessor", name: "canCreate", static: false, private: false, access: { has: obj => "canCreate" in obj, get: obj => obj.canCreate, set: (obj, value) => { obj.canCreate = value; } }, metadata: _metadata }, _canCreate_initializers, _canCreate_extraInitializers);
|
|
95
108
|
__esDecorate(this, null, _pendingTicketId_decorators, { kind: "accessor", name: "pendingTicketId", static: false, private: false, access: { has: obj => "pendingTicketId" in obj, get: obj => obj.pendingTicketId, set: (obj, value) => { obj.pendingTicketId = value; } }, metadata: _metadata }, _pendingTicketId_initializers, _pendingTicketId_extraInitializers);
|
|
96
109
|
__esDecorate(this, null, _draggingTicketId_decorators, { kind: "accessor", name: "draggingTicketId", static: false, private: false, access: { has: obj => "draggingTicketId" in obj, get: obj => obj.draggingTicketId, set: (obj, value) => { obj.draggingTicketId = value; } }, metadata: _metadata }, _draggingTicketId_initializers, _draggingTicketId_extraInitializers);
|
|
97
|
-
__esDecorate(this, null,
|
|
98
|
-
__esDecorate(this, null,
|
|
110
|
+
__esDecorate(this, null, _pointerManaged_decorators, { kind: "accessor", name: "pointerManaged", static: false, private: false, access: { has: obj => "pointerManaged" in obj, get: obj => obj.pointerManaged, set: (obj, value) => { obj.pointerManaged = value; } }, metadata: _metadata }, _pointerManaged_initializers, _pointerManaged_extraInitializers);
|
|
111
|
+
__esDecorate(this, null, _nativeDropBefore_decorators, { kind: "accessor", name: "nativeDropBefore", static: false, private: false, access: { has: obj => "nativeDropBefore" in obj, get: obj => obj.nativeDropBefore, set: (obj, value) => { obj.nativeDropBefore = value; } }, metadata: _metadata }, _nativeDropBefore_initializers, _nativeDropBefore_extraInitializers);
|
|
112
|
+
__esDecorate(this, null, _nativeOver_decorators, { kind: "accessor", name: "nativeOver", static: false, private: false, access: { has: obj => "nativeOver" in obj, get: obj => obj.nativeOver, set: (obj, value) => { obj.nativeOver = value; } }, metadata: _metadata }, _nativeOver_initializers, _nativeOver_extraInitializers);
|
|
113
|
+
__esDecorate(this, null, _motion_decorators, { kind: "accessor", name: "motion", static: false, private: false, access: { has: obj => "motion" in obj, get: obj => obj.motion, set: (obj, value) => { obj.motion = value; } }, metadata: _metadata }, _motion_initializers, _motion_extraInitializers);
|
|
99
114
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
100
115
|
DeesKanbanColumn = _classThis = _classDescriptor.value;
|
|
101
116
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
@@ -115,7 +130,10 @@ let DeesKanbanColumn = (() => {
|
|
|
115
130
|
#movable_accessor_storage = (__runInitializers(this, _columns_extraInitializers), __runInitializers(this, _movable_initializers, false));
|
|
116
131
|
get movable() { return this.#movable_accessor_storage; }
|
|
117
132
|
set movable(value) { this.#movable_accessor_storage = value; }
|
|
118
|
-
#
|
|
133
|
+
#movesDisabled_accessor_storage = (__runInitializers(this, _movable_extraInitializers), __runInitializers(this, _movesDisabled_initializers, false));
|
|
134
|
+
get movesDisabled() { return this.#movesDisabled_accessor_storage; }
|
|
135
|
+
set movesDisabled(value) { this.#movesDisabled_accessor_storage = value; }
|
|
136
|
+
#canCreate_accessor_storage = (__runInitializers(this, _movesDisabled_extraInitializers), __runInitializers(this, _canCreate_initializers, false));
|
|
119
137
|
get canCreate() { return this.#canCreate_accessor_storage; }
|
|
120
138
|
set canCreate(value) { this.#canCreate_accessor_storage = value; }
|
|
121
139
|
#pendingTicketId_accessor_storage = (__runInitializers(this, _canCreate_extraInitializers), __runInitializers(this, _pendingTicketId_initializers, ''));
|
|
@@ -124,15 +142,22 @@ let DeesKanbanColumn = (() => {
|
|
|
124
142
|
#draggingTicketId_accessor_storage = (__runInitializers(this, _pendingTicketId_extraInitializers), __runInitializers(this, _draggingTicketId_initializers, ''));
|
|
125
143
|
get draggingTicketId() { return this.#draggingTicketId_accessor_storage; }
|
|
126
144
|
set draggingTicketId(value) { this.#draggingTicketId_accessor_storage = value; }
|
|
127
|
-
#
|
|
128
|
-
get
|
|
129
|
-
set
|
|
130
|
-
#
|
|
131
|
-
get
|
|
132
|
-
set
|
|
145
|
+
#pointerManaged_accessor_storage = (__runInitializers(this, _draggingTicketId_extraInitializers), __runInitializers(this, _pointerManaged_initializers, false));
|
|
146
|
+
get pointerManaged() { return this.#pointerManaged_accessor_storage; }
|
|
147
|
+
set pointerManaged(value) { this.#pointerManaged_accessor_storage = value; }
|
|
148
|
+
#nativeDropBefore_accessor_storage = (__runInitializers(this, _pointerManaged_extraInitializers), __runInitializers(this, _nativeDropBefore_initializers, void 0));
|
|
149
|
+
get nativeDropBefore() { return this.#nativeDropBefore_accessor_storage; }
|
|
150
|
+
set nativeDropBefore(value) { this.#nativeDropBefore_accessor_storage = value; }
|
|
151
|
+
#nativeOver_accessor_storage = (__runInitializers(this, _nativeDropBefore_extraInitializers), __runInitializers(this, _nativeOver_initializers, false));
|
|
152
|
+
get nativeOver() { return this.#nativeOver_accessor_storage; }
|
|
153
|
+
set nativeOver(value) { this.#nativeOver_accessor_storage = value; }
|
|
154
|
+
#motion_accessor_storage = (__runInitializers(this, _nativeOver_extraInitializers), __runInitializers(this, _motion_initializers, void 0));
|
|
155
|
+
/** Internal render projection; provider-owned ticket data remains unchanged until saved. */
|
|
156
|
+
get motion() { return this.#motion_accessor_storage; }
|
|
157
|
+
set motion(value) { this.#motion_accessor_storage = value; }
|
|
133
158
|
static styles = [...kanbanStyles, css `
|
|
134
159
|
:host { display: flex; flex-direction: column; min-width: 272px; max-width: 360px; flex: 1 0 272px; }
|
|
135
|
-
section { min-height: 220px; height: 100%; border-radius: var(--dees-radius-xl); }
|
|
160
|
+
section { min-height: 220px; height: 100%; border-radius: var(--dees-radius-xl); transition: background var(--dees-transition-default) var(--dees-ease-out); }
|
|
136
161
|
header { display: flex; align-items: center; gap: 8px; min-height: 40px; margin-bottom: 10px; padding: 0 2px 8px; border-bottom: 1px solid var(--dees-color-border-subtle); }
|
|
137
162
|
h3 { font-size: var(--dees-font-footnote-size); font-weight: 600; }
|
|
138
163
|
header dees-button::part(button) { width: 24px; height: 24px; min-height: 24px; }
|
|
@@ -140,51 +165,64 @@ let DeesKanbanColumn = (() => {
|
|
|
140
165
|
.status.done { background: var(--dees-color-accent-success); border-color: var(--dees-color-accent-success); }
|
|
141
166
|
.stack { display: grid; gap: 8px; min-height: 120px; align-content: start; }
|
|
142
167
|
.target { position: relative; }
|
|
143
|
-
.
|
|
144
|
-
.
|
|
168
|
+
.native-before::before { content: ''; position: absolute; top: -5px; left: 0; right: 0; height: 2px; background: var(--dees-color-accent-primary); border-radius: 2px; }
|
|
169
|
+
.placeholder { border-radius: var(--dees-radius-xl); background: var(--dees-color-fill-tertiary); box-shadow: inset 0 0 0 1px var(--dees-color-border-default); }
|
|
145
170
|
.end-target { position: relative; min-height: 32px; margin-top: 8px; }
|
|
146
171
|
section.over { background: var(--dees-color-row-hover); }
|
|
172
|
+
@media (prefers-reduced-motion: reduce) { section { transition: none; } }
|
|
147
173
|
@media (pointer: coarse) { header dees-button::part(button) { width: 32px; height: 32px; min-height: 32px; } }
|
|
148
174
|
`];
|
|
149
175
|
updated() { if (!this.draggingTicketId)
|
|
150
|
-
this.
|
|
176
|
+
this.nativeOver = false; }
|
|
151
177
|
render() {
|
|
152
178
|
if (!this.column)
|
|
153
179
|
return html ``;
|
|
154
|
-
|
|
155
|
-
|
|
180
|
+
const motion = this.motion;
|
|
181
|
+
const tickets = sortKanbanTickets(this.tickets).filter(ticket => ticket.id !== motion?.move.ticketId);
|
|
182
|
+
const active = motion?.move.columnId === this.column.id;
|
|
183
|
+
if (motion && active) {
|
|
184
|
+
const index = tickets.findIndex(ticket => ticket.id === motion.move.beforeTicketId);
|
|
185
|
+
tickets.splice(index < 0 ? tickets.length : index, 0, motion.ticket);
|
|
186
|
+
}
|
|
187
|
+
return html `<section class=${active && motion?.placeholder || this.nativeOver ? 'over' : ''} aria-label=${this.column.title}
|
|
188
|
+
@dragover=${(event) => { if (!this.pointerManaged && this.draggingTicketId && this.movable && !this.movesDisabled) {
|
|
156
189
|
event.preventDefault();
|
|
157
|
-
this.
|
|
190
|
+
this.nativeOver = true;
|
|
158
191
|
if (event.dataTransfer)
|
|
159
192
|
event.dataTransfer.dropEffect = 'move';
|
|
160
193
|
} }}
|
|
161
194
|
@dragleave=${(event) => { if (!(event.relatedTarget instanceof Node) || !event.currentTarget.contains(event.relatedTarget))
|
|
162
|
-
this.
|
|
195
|
+
this.nativeOver = false; }}
|
|
163
196
|
@drop=${(event) => {
|
|
197
|
+
if (this.pointerManaged)
|
|
198
|
+
return;
|
|
164
199
|
event.preventDefault();
|
|
165
|
-
this.
|
|
166
|
-
if (this.movable && this.draggingTicketId && event.dataTransfer?.getData('application/x-dees-kanban-ticket') === this.draggingTicketId)
|
|
167
|
-
kanbanEvent(this, 'kanban-ticket-move', { ticketId: this.draggingTicketId, columnId: this.column.id, beforeTicketId: this.
|
|
200
|
+
this.nativeOver = false;
|
|
201
|
+
if (this.movable && !this.movesDisabled && this.draggingTicketId && event.dataTransfer?.getData('application/x-dees-kanban-ticket') === this.draggingTicketId)
|
|
202
|
+
kanbanEvent(this, 'kanban-ticket-move', { ticketId: this.draggingTicketId, columnId: this.column.id, beforeTicketId: this.nativeDropBefore });
|
|
168
203
|
}}>
|
|
169
|
-
<header><span class="status ${this.column.done ? 'done' : ''}" aria-hidden="true"></span><h3>${this.column.title}</h3><span class="count">${
|
|
204
|
+
<header><span class="status ${this.column.done ? 'done' : ''}" aria-hidden="true"></span><h3>${this.column.title}</h3><span class="count">${tickets.length}</span><span class="spacer"></span>
|
|
170
205
|
${this.canCreate ? html `<dees-button type="ghost" size="icon" icon="lucide:Plus" text=${`Add task to ${this.column.title}`}
|
|
171
206
|
@clicked=${() => kanbanEvent(this, 'kanban-ticket-create', { kind: 'task', columnId: this.column.id })}></dees-button>` : ''}</header>
|
|
172
|
-
<div class="stack">${
|
|
173
|
-
<div class="target ${this.
|
|
174
|
-
@dragover=${() => { this.
|
|
175
|
-
|
|
207
|
+
<div class="stack">${directives.repeat(tickets, ticket => ticket.id, ticket => html `
|
|
208
|
+
<div class="target ${this.nativeOver && this.nativeDropBefore === ticket.id ? 'native-before' : ''}" data-ticket-id=${ticket.id}
|
|
209
|
+
@dragover=${() => { if (!this.pointerManaged)
|
|
210
|
+
this.nativeDropBefore = ticket.id; }}>
|
|
211
|
+
${motion?.move.ticketId === ticket.id && motion.placeholder ? html `<div class="placeholder" style=${`height: ${motion.height}px`} aria-label="Drop ticket here"></div>` : html `<dees-kanban-card .ticket=${ticket} .columns=${this.columns}
|
|
176
212
|
.epic=${this.allTickets.find(item => item.id === ticket.parentId && item.kind === 'epic')}
|
|
177
213
|
.subtasks=${sortKanbanTickets(this.allTickets.filter(item => item.parentId === ticket.id && item.kind === 'subtask'))}
|
|
178
|
-
.movable=${this.movable && ticket.permissions?.move !== false} .pending=${this.pendingTicketId === ticket.id}
|
|
214
|
+
.movable=${this.movable && ticket.permissions?.move !== false} .pending=${motion?.move.ticketId === ticket.id ? motion.dimmed : this.pendingTicketId === ticket.id}
|
|
215
|
+
.moveDisabled=${this.movesDisabled}
|
|
216
|
+
.saving=${motion?.move.ticketId === ticket.id && motion.saving} .pointerManaged=${this.pointerManaged}></dees-kanban-card>`}
|
|
179
217
|
</div>`)}
|
|
180
|
-
${!
|
|
218
|
+
${!tickets.length ? html `<div class="empty" @dragover=${() => { this.nativeDropBefore = undefined; }}>No tasks</div>` : ''}
|
|
181
219
|
</div>
|
|
182
|
-
<div class="end-target ${this.
|
|
220
|
+
<div class="end-target ${this.nativeOver && !this.nativeDropBefore ? 'native-before' : ''}" @dragover=${() => { this.nativeDropBefore = undefined; }}></div>
|
|
183
221
|
</section>`;
|
|
184
222
|
}
|
|
185
223
|
constructor() {
|
|
186
224
|
super(...arguments);
|
|
187
|
-
__runInitializers(this,
|
|
225
|
+
__runInitializers(this, _motion_extraInitializers);
|
|
188
226
|
}
|
|
189
227
|
static {
|
|
190
228
|
__runInitializers(_classThis, _classExtraInitializers);
|
|
@@ -193,4 +231,4 @@ let DeesKanbanColumn = (() => {
|
|
|
193
231
|
return DeesKanbanColumn = _classThis;
|
|
194
232
|
})();
|
|
195
233
|
export { DeesKanbanColumn };
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1rYW5iYW4tY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAta2FuYmFuL2RlZXMta2FuYmFuLWNvbHVtbi9kZWVzLWthbmJhbi1jb2x1bW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdqSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RFLE9BQU8seUNBQXlDLENBQUM7SUFLcEMsZ0JBQWdCOzRCQUQ1QixhQUFhLENBQUMsb0JBQW9CLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQ0FBbkIsU0FBUSxXQUFXOzs7O2tDQUM5QyxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7bUNBQzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztzQ0FDOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO21DQUM5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7bUNBQzlCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQzt5Q0FDM0IsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO3FDQUMzQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7MkNBQzNCLFFBQVEsQ0FBQyxF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
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { DeesKanban } from './dees-kanban/dees-kanban.js';
|
|
2
|
+
import type { IKanbanMove, IKanbanTicket } from './interfaces.js';
|
|
3
|
+
export interface IKanbanMotion {
|
|
4
|
+
move: IKanbanMove;
|
|
5
|
+
ticket: IKanbanTicket;
|
|
6
|
+
height: number;
|
|
7
|
+
placeholder: boolean;
|
|
8
|
+
dimmed: boolean;
|
|
9
|
+
saving: boolean;
|
|
10
|
+
}
|
|
11
|
+
/** Owns pointer motion and a render-only placement. The board/provider still owns saved data. */
|
|
12
|
+
export declare class KanbanDragController {
|
|
13
|
+
private readonly board;
|
|
14
|
+
private readonly commit;
|
|
15
|
+
private readonly canMove;
|
|
16
|
+
private gesture?;
|
|
17
|
+
private listeners?;
|
|
18
|
+
private frame;
|
|
19
|
+
private previousFrame;
|
|
20
|
+
private rendering;
|
|
21
|
+
private scrollParents;
|
|
22
|
+
private scrollSnap;
|
|
23
|
+
private animations;
|
|
24
|
+
private timers;
|
|
25
|
+
private suppressClick?;
|
|
26
|
+
private clickTimer?;
|
|
27
|
+
private resizeObserver?;
|
|
28
|
+
private readonly reducedMotion;
|
|
29
|
+
constructor(board: DeesKanban, commit: (move: IKanbanMove) => Promise<boolean>, canMove: () => boolean);
|
|
30
|
+
get busy(): boolean;
|
|
31
|
+
private easing;
|
|
32
|
+
private get columns();
|
|
33
|
+
connect(): void;
|
|
34
|
+
/** Host updates can remove/filter the source or revoke its move permission during a gesture. */
|
|
35
|
+
sync(): void;
|
|
36
|
+
private down;
|
|
37
|
+
private move;
|
|
38
|
+
private lift;
|
|
39
|
+
private positionPreview;
|
|
40
|
+
private tick;
|
|
41
|
+
private targetAt;
|
|
42
|
+
private up;
|
|
43
|
+
private pointerCancel;
|
|
44
|
+
private key;
|
|
45
|
+
private blur;
|
|
46
|
+
private cancel;
|
|
47
|
+
private authoritativeMove;
|
|
48
|
+
private land;
|
|
49
|
+
private settle;
|
|
50
|
+
private targets;
|
|
51
|
+
private allTargets;
|
|
52
|
+
capture(): Map<string, DOMRect>;
|
|
53
|
+
animateFrom(before: Map<string, DOMRect>, duration?: number): Promise<void>;
|
|
54
|
+
private renderMotion;
|
|
55
|
+
private restoreExpansion;
|
|
56
|
+
private clearMotion;
|
|
57
|
+
private collectScrollParents;
|
|
58
|
+
private visibleRect;
|
|
59
|
+
private autoScroll;
|
|
60
|
+
private endPointer;
|
|
61
|
+
private blockClick;
|
|
62
|
+
private delay;
|
|
63
|
+
private removeOverlay;
|
|
64
|
+
private fadeAndClear;
|
|
65
|
+
private clear;
|
|
66
|
+
disconnect(): void;
|
|
67
|
+
}
|