@design.estate/dees-catalog 3.101.0 → 3.102.0
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 +274 -8
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.d.ts +30 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +321 -9
- package/dist_ts_web/elements/00group-harness/interfaces.d.ts +21 -0
- package/package.json +1 -1
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.ts +327 -7
- package/ts_web/elements/00group-harness/interfaces.ts +24 -0
package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js
CHANGED
|
@@ -42,6 +42,14 @@ import '../../00group-utility/dees-icon/dees-icon.js';
|
|
|
42
42
|
* Emits `harness-session-select` on click, `harness-session-open` on
|
|
43
43
|
* double-click or Enter, and `harness-session-context` with viewport
|
|
44
44
|
* pointer coordinates on right-click (the browser menu is suppressed).
|
|
45
|
+
*
|
|
46
|
+
* With `enableGrouping`, sessions render under user-defined `groups` and can
|
|
47
|
+
* be dragged between groups and reordered. The component never mutates its
|
|
48
|
+
* inputs: drops emit `harness-session-move`, the "new group" button emits
|
|
49
|
+
* `harness-group-create-request`, and right-clicking a group header emits
|
|
50
|
+
* `harness-group-context` — the host persists changes and passes fresh
|
|
51
|
+
* `groups` back in. Sessions in no group render in the trailing ungrouped
|
|
52
|
+
* section, recency-sorted. While a search query is active the list is flat.
|
|
45
53
|
*/
|
|
46
54
|
let DeesHarnessSessionList = (() => {
|
|
47
55
|
let _classDecorators = [customElement('dees-harness-session-list')];
|
|
@@ -61,9 +69,24 @@ let DeesHarnessSessionList = (() => {
|
|
|
61
69
|
let _emptyText_decorators;
|
|
62
70
|
let _emptyText_initializers = [];
|
|
63
71
|
let _emptyText_extraInitializers = [];
|
|
72
|
+
let _groups_decorators;
|
|
73
|
+
let _groups_initializers = [];
|
|
74
|
+
let _groups_extraInitializers = [];
|
|
75
|
+
let _enableGrouping_decorators;
|
|
76
|
+
let _enableGrouping_initializers = [];
|
|
77
|
+
let _enableGrouping_extraInitializers = [];
|
|
64
78
|
let _search_decorators;
|
|
65
79
|
let _search_initializers = [];
|
|
66
80
|
let _search_extraInitializers = [];
|
|
81
|
+
let _draggingSessionId_decorators;
|
|
82
|
+
let _draggingSessionId_initializers = [];
|
|
83
|
+
let _draggingSessionId_extraInitializers = [];
|
|
84
|
+
let _dropSlot_decorators;
|
|
85
|
+
let _dropSlot_initializers = [];
|
|
86
|
+
let _dropSlot_extraInitializers = [];
|
|
87
|
+
let _collapsedGroupIds_decorators;
|
|
88
|
+
let _collapsedGroupIds_initializers = [];
|
|
89
|
+
let _collapsedGroupIds_extraInitializers = [];
|
|
67
90
|
var DeesHarnessSessionList = class extends _classSuper {
|
|
68
91
|
static { _classThis = this; }
|
|
69
92
|
static {
|
|
@@ -72,12 +95,22 @@ let DeesHarnessSessionList = (() => {
|
|
|
72
95
|
_selectedSessionId_decorators = [property()];
|
|
73
96
|
_loading_decorators = [property({ type: Boolean })];
|
|
74
97
|
_emptyText_decorators = [property()];
|
|
98
|
+
_groups_decorators = [property({ attribute: false })];
|
|
99
|
+
_enableGrouping_decorators = [property({ type: Boolean })];
|
|
75
100
|
_search_decorators = [state()];
|
|
101
|
+
_draggingSessionId_decorators = [state()];
|
|
102
|
+
_dropSlot_decorators = [state()];
|
|
103
|
+
_collapsedGroupIds_decorators = [state()];
|
|
76
104
|
__esDecorate(this, null, _sessions_decorators, { kind: "accessor", name: "sessions", static: false, private: false, access: { has: obj => "sessions" in obj, get: obj => obj.sessions, set: (obj, value) => { obj.sessions = value; } }, metadata: _metadata }, _sessions_initializers, _sessions_extraInitializers);
|
|
77
105
|
__esDecorate(this, null, _selectedSessionId_decorators, { kind: "accessor", name: "selectedSessionId", static: false, private: false, access: { has: obj => "selectedSessionId" in obj, get: obj => obj.selectedSessionId, set: (obj, value) => { obj.selectedSessionId = value; } }, metadata: _metadata }, _selectedSessionId_initializers, _selectedSessionId_extraInitializers);
|
|
78
106
|
__esDecorate(this, null, _loading_decorators, { kind: "accessor", name: "loading", static: false, private: false, access: { has: obj => "loading" in obj, get: obj => obj.loading, set: (obj, value) => { obj.loading = value; } }, metadata: _metadata }, _loading_initializers, _loading_extraInitializers);
|
|
79
107
|
__esDecorate(this, null, _emptyText_decorators, { kind: "accessor", name: "emptyText", static: false, private: false, access: { has: obj => "emptyText" in obj, get: obj => obj.emptyText, set: (obj, value) => { obj.emptyText = value; } }, metadata: _metadata }, _emptyText_initializers, _emptyText_extraInitializers);
|
|
108
|
+
__esDecorate(this, null, _groups_decorators, { kind: "accessor", name: "groups", static: false, private: false, access: { has: obj => "groups" in obj, get: obj => obj.groups, set: (obj, value) => { obj.groups = value; } }, metadata: _metadata }, _groups_initializers, _groups_extraInitializers);
|
|
109
|
+
__esDecorate(this, null, _enableGrouping_decorators, { kind: "accessor", name: "enableGrouping", static: false, private: false, access: { has: obj => "enableGrouping" in obj, get: obj => obj.enableGrouping, set: (obj, value) => { obj.enableGrouping = value; } }, metadata: _metadata }, _enableGrouping_initializers, _enableGrouping_extraInitializers);
|
|
80
110
|
__esDecorate(this, null, _search_decorators, { kind: "accessor", name: "search", static: false, private: false, access: { has: obj => "search" in obj, get: obj => obj.search, set: (obj, value) => { obj.search = value; } }, metadata: _metadata }, _search_initializers, _search_extraInitializers);
|
|
111
|
+
__esDecorate(this, null, _draggingSessionId_decorators, { kind: "accessor", name: "draggingSessionId", static: false, private: false, access: { has: obj => "draggingSessionId" in obj, get: obj => obj.draggingSessionId, set: (obj, value) => { obj.draggingSessionId = value; } }, metadata: _metadata }, _draggingSessionId_initializers, _draggingSessionId_extraInitializers);
|
|
112
|
+
__esDecorate(this, null, _dropSlot_decorators, { kind: "accessor", name: "dropSlot", static: false, private: false, access: { has: obj => "dropSlot" in obj, get: obj => obj.dropSlot, set: (obj, value) => { obj.dropSlot = value; } }, metadata: _metadata }, _dropSlot_initializers, _dropSlot_extraInitializers);
|
|
113
|
+
__esDecorate(this, null, _collapsedGroupIds_decorators, { kind: "accessor", name: "collapsedGroupIds", static: false, private: false, access: { has: obj => "collapsedGroupIds" in obj, get: obj => obj.collapsedGroupIds, set: (obj, value) => { obj.collapsedGroupIds = value; } }, metadata: _metadata }, _collapsedGroupIds_initializers, _collapsedGroupIds_extraInitializers);
|
|
81
114
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
82
115
|
DeesHarnessSessionList = _classThis = _classDescriptor.value;
|
|
83
116
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
@@ -96,9 +129,24 @@ let DeesHarnessSessionList = (() => {
|
|
|
96
129
|
#emptyText_accessor_storage = (__runInitializers(this, _loading_extraInitializers), __runInitializers(this, _emptyText_initializers, 'No conversations yet.'));
|
|
97
130
|
get emptyText() { return this.#emptyText_accessor_storage; }
|
|
98
131
|
set emptyText(value) { this.#emptyText_accessor_storage = value; }
|
|
99
|
-
#
|
|
132
|
+
#groups_accessor_storage = (__runInitializers(this, _emptyText_extraInitializers), __runInitializers(this, _groups_initializers, []));
|
|
133
|
+
get groups() { return this.#groups_accessor_storage; }
|
|
134
|
+
set groups(value) { this.#groups_accessor_storage = value; }
|
|
135
|
+
#enableGrouping_accessor_storage = (__runInitializers(this, _groups_extraInitializers), __runInitializers(this, _enableGrouping_initializers, false));
|
|
136
|
+
get enableGrouping() { return this.#enableGrouping_accessor_storage; }
|
|
137
|
+
set enableGrouping(value) { this.#enableGrouping_accessor_storage = value; }
|
|
138
|
+
#search_accessor_storage = (__runInitializers(this, _enableGrouping_extraInitializers), __runInitializers(this, _search_initializers, ''));
|
|
100
139
|
get search() { return this.#search_accessor_storage; }
|
|
101
140
|
set search(value) { this.#search_accessor_storage = value; }
|
|
141
|
+
#draggingSessionId_accessor_storage = (__runInitializers(this, _search_extraInitializers), __runInitializers(this, _draggingSessionId_initializers, ''));
|
|
142
|
+
get draggingSessionId() { return this.#draggingSessionId_accessor_storage; }
|
|
143
|
+
set draggingSessionId(value) { this.#draggingSessionId_accessor_storage = value; }
|
|
144
|
+
#dropSlot_accessor_storage = (__runInitializers(this, _draggingSessionId_extraInitializers), __runInitializers(this, _dropSlot_initializers, undefined));
|
|
145
|
+
get dropSlot() { return this.#dropSlot_accessor_storage; }
|
|
146
|
+
set dropSlot(value) { this.#dropSlot_accessor_storage = value; }
|
|
147
|
+
#collapsedGroupIds_accessor_storage = (__runInitializers(this, _dropSlot_extraInitializers), __runInitializers(this, _collapsedGroupIds_initializers, new Set()));
|
|
148
|
+
get collapsedGroupIds() { return this.#collapsedGroupIds_accessor_storage; }
|
|
149
|
+
set collapsedGroupIds(value) { this.#collapsedGroupIds_accessor_storage = value; }
|
|
102
150
|
static styles = [
|
|
103
151
|
themeDefaultStyles,
|
|
104
152
|
cssManager.defaultStyles,
|
|
@@ -171,6 +219,10 @@ let DeesHarnessSessionList = (() => {
|
|
|
171
219
|
box-shadow: inset 2px 0 0 var(--dees-color-accent-primary);
|
|
172
220
|
}
|
|
173
221
|
|
|
222
|
+
.item.dragging {
|
|
223
|
+
opacity: 0.4;
|
|
224
|
+
}
|
|
225
|
+
|
|
174
226
|
.itemTitle {
|
|
175
227
|
display: flex;
|
|
176
228
|
align-items: baseline;
|
|
@@ -208,8 +260,103 @@ let DeesHarnessSessionList = (() => {
|
|
|
208
260
|
font-size: var(--dees-font-control-size-sm, 12px);
|
|
209
261
|
text-align: center;
|
|
210
262
|
}
|
|
263
|
+
|
|
264
|
+
.groupHeader {
|
|
265
|
+
display: flex;
|
|
266
|
+
align-items: center;
|
|
267
|
+
gap: var(--dees-spacing-xs);
|
|
268
|
+
width: 100%;
|
|
269
|
+
margin-top: var(--dees-spacing-xs);
|
|
270
|
+
padding: 2px var(--dees-spacing-sm);
|
|
271
|
+
border: 0;
|
|
272
|
+
border-radius: var(--dees-radius-md);
|
|
273
|
+
background: transparent;
|
|
274
|
+
color: var(--dees-color-text-secondary);
|
|
275
|
+
cursor: pointer;
|
|
276
|
+
font-family: inherit;
|
|
277
|
+
font-size: var(--dees-font-caption1-size, 11px);
|
|
278
|
+
font-weight: 650;
|
|
279
|
+
text-transform: uppercase;
|
|
280
|
+
letter-spacing: 0.05em;
|
|
281
|
+
text-align: left;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
.groupHeader:hover {
|
|
285
|
+
background: var(--dees-color-hover);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
.groupHeader .chevron {
|
|
289
|
+
transition: transform var(--dees-transition-fast) var(--dees-ease-standard);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
.groupHeader.collapsed .chevron {
|
|
293
|
+
transform: rotate(-90deg);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
.groupHeader .groupCount {
|
|
297
|
+
margin-left: auto;
|
|
298
|
+
font-weight: 500;
|
|
299
|
+
text-transform: none;
|
|
300
|
+
letter-spacing: normal;
|
|
301
|
+
color: var(--dees-color-text-muted);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
.groupHeader.dropTarget {
|
|
305
|
+
outline: 1px dashed var(--dees-color-accent-primary);
|
|
306
|
+
outline-offset: -1px;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
.dropLine {
|
|
310
|
+
height: 2px;
|
|
311
|
+
margin: 0 var(--dees-spacing-sm);
|
|
312
|
+
border-radius: 1px;
|
|
313
|
+
background: var(--dees-color-accent-primary);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
.newGroupRow {
|
|
317
|
+
flex: 0 0 auto;
|
|
318
|
+
padding: var(--dees-spacing-xs) var(--dees-spacing-sm) var(--dees-spacing-sm);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
.newGroupButton {
|
|
322
|
+
display: flex;
|
|
323
|
+
align-items: center;
|
|
324
|
+
gap: var(--dees-spacing-xs);
|
|
325
|
+
width: 100%;
|
|
326
|
+
padding: var(--dees-spacing-xs) var(--dees-spacing-sm);
|
|
327
|
+
border: 1px dashed var(--dees-color-border-default);
|
|
328
|
+
border-radius: var(--dees-radius-md);
|
|
329
|
+
background: transparent;
|
|
330
|
+
color: var(--dees-color-text-secondary);
|
|
331
|
+
cursor: pointer;
|
|
332
|
+
font-family: inherit;
|
|
333
|
+
font-size: var(--dees-font-control-size-sm, 12px);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
.newGroupButton:hover {
|
|
337
|
+
border-color: var(--dees-color-accent-primary);
|
|
338
|
+
color: var(--dees-color-text-primary);
|
|
339
|
+
}
|
|
211
340
|
`,
|
|
212
341
|
];
|
|
342
|
+
get sessionsById() {
|
|
343
|
+
return new Map(this.sessions.map((session) => [session.id, session]));
|
|
344
|
+
}
|
|
345
|
+
get groupedSessionIds() {
|
|
346
|
+
const ids = new Set();
|
|
347
|
+
for (const group of this.groups) {
|
|
348
|
+
for (const id of group.sessionIds)
|
|
349
|
+
ids.add(id);
|
|
350
|
+
}
|
|
351
|
+
return ids;
|
|
352
|
+
}
|
|
353
|
+
/** Ungrouped sessions, most recent first. */
|
|
354
|
+
get ungroupedSessions() {
|
|
355
|
+
const grouped = this.groupedSessionIds;
|
|
356
|
+
return [...this.sessions]
|
|
357
|
+
.filter((session) => !grouped.has(session.id))
|
|
358
|
+
.sort((left, right) => (right.updatedAt ?? right.createdAt ?? 0) - (left.updatedAt ?? left.createdAt ?? 0));
|
|
359
|
+
}
|
|
213
360
|
get filteredSessions() {
|
|
214
361
|
const query = this.search.trim().toLowerCase();
|
|
215
362
|
const sorted = [...this.sessions].sort((left, right) => (right.updatedAt ?? right.createdAt ?? 0) - (left.updatedAt ?? left.createdAt ?? 0));
|
|
@@ -221,7 +368,7 @@ let DeesHarnessSessionList = (() => {
|
|
|
221
368
|
this.shadowRoot?.querySelector('.searchRow input')?.focus();
|
|
222
369
|
}
|
|
223
370
|
render() {
|
|
224
|
-
const
|
|
371
|
+
const groupingActive = this.enableGrouping && !this.search.trim();
|
|
225
372
|
return html `
|
|
226
373
|
<div class="searchRow">
|
|
227
374
|
<input
|
|
@@ -235,17 +382,118 @@ let DeesHarnessSessionList = (() => {
|
|
|
235
382
|
<div class="list">
|
|
236
383
|
${this.loading
|
|
237
384
|
? html `<div class="emptyNote">Loading conversations…</div>`
|
|
238
|
-
:
|
|
239
|
-
?
|
|
240
|
-
:
|
|
385
|
+
: groupingActive
|
|
386
|
+
? this.renderGroupedList()
|
|
387
|
+
: this.renderFlatList()}
|
|
241
388
|
</div>
|
|
389
|
+
${groupingActive
|
|
390
|
+
? html `
|
|
391
|
+
<div class="newGroupRow">
|
|
392
|
+
<button
|
|
393
|
+
class="newGroupButton"
|
|
394
|
+
type="button"
|
|
395
|
+
@click=${() => {
|
|
396
|
+
this.dispatchEvent(new CustomEvent('harness-group-create-request', {
|
|
397
|
+
bubbles: true,
|
|
398
|
+
composed: true,
|
|
399
|
+
}));
|
|
400
|
+
}}
|
|
401
|
+
>
|
|
402
|
+
<dees-icon icon="lucide:FolderPlus" iconSize="13"></dees-icon>
|
|
403
|
+
New group
|
|
404
|
+
</button>
|
|
405
|
+
</div>
|
|
406
|
+
`
|
|
407
|
+
: ''}
|
|
408
|
+
`;
|
|
409
|
+
}
|
|
410
|
+
renderFlatList() {
|
|
411
|
+
const sessions = this.filteredSessions;
|
|
412
|
+
if (!sessions.length) {
|
|
413
|
+
return html `<div class="emptyNote">
|
|
414
|
+
${this.sessions.length ? 'No conversations match this search.' : this.emptyText}
|
|
415
|
+
</div>`;
|
|
416
|
+
}
|
|
417
|
+
return html `${sessions.map((session) => this.renderItem(session, null, -1))}`;
|
|
418
|
+
}
|
|
419
|
+
renderGroupedList() {
|
|
420
|
+
const byId = this.sessionsById;
|
|
421
|
+
const ungrouped = this.ungroupedSessions;
|
|
422
|
+
if (!this.sessions.length && !this.groups.length) {
|
|
423
|
+
return html `<div class="emptyNote">${this.emptyText}</div>`;
|
|
424
|
+
}
|
|
425
|
+
return html `
|
|
426
|
+
${this.groups.map((group) => {
|
|
427
|
+
const members = group.sessionIds
|
|
428
|
+
.map((id) => byId.get(id))
|
|
429
|
+
.filter((session) => session !== undefined);
|
|
430
|
+
const collapsed = this.collapsedGroupIds.has(group.id);
|
|
431
|
+
const isHeaderDrop = this.dropSlot?.groupId === group.id && this.dropSlot.index === members.length && collapsed;
|
|
432
|
+
return html `
|
|
433
|
+
<button
|
|
434
|
+
class="groupHeader ${collapsed ? 'collapsed' : ''} ${isHeaderDrop ? 'dropTarget' : ''}"
|
|
435
|
+
type="button"
|
|
436
|
+
@click=${() => this.toggleGroupCollapsed(group.id)}
|
|
437
|
+
@contextmenu=${(event) => {
|
|
438
|
+
event.preventDefault();
|
|
439
|
+
const detail = {
|
|
440
|
+
group,
|
|
441
|
+
clientX: event.clientX,
|
|
442
|
+
clientY: event.clientY,
|
|
443
|
+
originalEvent: event,
|
|
444
|
+
};
|
|
445
|
+
this.dispatchEvent(new CustomEvent('harness-group-context', { detail, bubbles: true, composed: true }));
|
|
446
|
+
}}
|
|
447
|
+
@dragover=${(event) => this.handleDragOverSlot(event, group.id, members.length)}
|
|
448
|
+
@drop=${(event) => this.handleDrop(event, group.id, members.length)}
|
|
449
|
+
>
|
|
450
|
+
<dees-icon class="chevron" icon="lucide:ChevronDown" iconSize="12"></dees-icon>
|
|
451
|
+
<span>${group.name}</span>
|
|
452
|
+
<span class="groupCount">${members.length}</span>
|
|
453
|
+
</button>
|
|
454
|
+
${collapsed
|
|
455
|
+
? ''
|
|
456
|
+
: this.renderSection(members, group.id)}
|
|
457
|
+
`;
|
|
458
|
+
})}
|
|
459
|
+
${this.groups.length && ungrouped.length
|
|
460
|
+
? html `
|
|
461
|
+
<button
|
|
462
|
+
class="groupHeader"
|
|
463
|
+
type="button"
|
|
464
|
+
tabindex="-1"
|
|
465
|
+
@dragover=${(event) => this.handleDragOverSlot(event, null, 0)}
|
|
466
|
+
@drop=${(event) => this.handleDrop(event, null, 0)}
|
|
467
|
+
>
|
|
468
|
+
<span>Ungrouped</span>
|
|
469
|
+
<span class="groupCount">${ungrouped.length}</span>
|
|
470
|
+
</button>
|
|
471
|
+
`
|
|
472
|
+
: ''}
|
|
473
|
+
${this.renderSection(ungrouped, null)}
|
|
474
|
+
`;
|
|
475
|
+
}
|
|
476
|
+
renderSection(sessions, groupId) {
|
|
477
|
+
const slot = this.dropSlot;
|
|
478
|
+
return html `
|
|
479
|
+
${sessions.map((session, index) => html `
|
|
480
|
+
${slot && slot.groupId === groupId && slot.index === index
|
|
481
|
+
? html `<div class="dropLine"></div>`
|
|
482
|
+
: ''}
|
|
483
|
+
${this.renderItem(session, groupId, index)}
|
|
484
|
+
`)}
|
|
485
|
+
${slot && slot.groupId === groupId && slot.index === sessions.length
|
|
486
|
+
? html `<div class="dropLine"></div>`
|
|
487
|
+
: ''}
|
|
242
488
|
`;
|
|
243
489
|
}
|
|
244
|
-
renderItem(session) {
|
|
490
|
+
renderItem(session, groupId, index) {
|
|
491
|
+
const draggable = this.enableGrouping && index >= 0;
|
|
245
492
|
return html `
|
|
246
493
|
<button
|
|
247
|
-
class="item ${session.id === this.selectedSessionId ? 'selected' : ''}"
|
|
494
|
+
class="item ${session.id === this.selectedSessionId ? 'selected' : ''} ${this.draggingSessionId === session.id ? 'dragging' : ''}"
|
|
248
495
|
type="button"
|
|
496
|
+
draggable=${draggable ? 'true' : 'false'}
|
|
249
497
|
@click=${() => this.emit('harness-session-select', session)}
|
|
250
498
|
@dblclick=${() => this.emit('harness-session-open', session)}
|
|
251
499
|
@keydown=${(event) => {
|
|
@@ -262,6 +510,33 @@ let DeesHarnessSessionList = (() => {
|
|
|
262
510
|
};
|
|
263
511
|
this.dispatchEvent(new CustomEvent('harness-session-context', { detail, bubbles: true, composed: true }));
|
|
264
512
|
}}
|
|
513
|
+
@dragstart=${(event) => {
|
|
514
|
+
if (!draggable)
|
|
515
|
+
return;
|
|
516
|
+
this.draggingSessionId = session.id;
|
|
517
|
+
event.dataTransfer?.setData('text/plain', session.id);
|
|
518
|
+
if (event.dataTransfer)
|
|
519
|
+
event.dataTransfer.effectAllowed = 'move';
|
|
520
|
+
}}
|
|
521
|
+
@dragend=${() => {
|
|
522
|
+
this.draggingSessionId = '';
|
|
523
|
+
this.dropSlot = undefined;
|
|
524
|
+
}}
|
|
525
|
+
@dragover=${(event) => {
|
|
526
|
+
if (!this.draggingSessionId || index < 0)
|
|
527
|
+
return;
|
|
528
|
+
event.preventDefault();
|
|
529
|
+
const rect = event.currentTarget.getBoundingClientRect();
|
|
530
|
+
const before = event.clientY < rect.top + rect.height / 2;
|
|
531
|
+
this.setDropSlot(groupId, before ? index : index + 1);
|
|
532
|
+
}}
|
|
533
|
+
@drop=${(event) => {
|
|
534
|
+
if (index < 0)
|
|
535
|
+
return;
|
|
536
|
+
const rect = event.currentTarget.getBoundingClientRect();
|
|
537
|
+
const before = event.clientY < rect.top + rect.height / 2;
|
|
538
|
+
this.handleDrop(event, groupId, before ? index : index + 1);
|
|
539
|
+
}}
|
|
265
540
|
>
|
|
266
541
|
<span class="itemTitle">
|
|
267
542
|
<span class="titleText">${session.title || session.id}</span>
|
|
@@ -273,12 +548,49 @@ let DeesHarnessSessionList = (() => {
|
|
|
273
548
|
</button>
|
|
274
549
|
`;
|
|
275
550
|
}
|
|
551
|
+
toggleGroupCollapsed(groupIdArg) {
|
|
552
|
+
const next = new Set(this.collapsedGroupIds);
|
|
553
|
+
if (next.has(groupIdArg)) {
|
|
554
|
+
next.delete(groupIdArg);
|
|
555
|
+
}
|
|
556
|
+
else {
|
|
557
|
+
next.add(groupIdArg);
|
|
558
|
+
}
|
|
559
|
+
this.collapsedGroupIds = next;
|
|
560
|
+
}
|
|
561
|
+
setDropSlot(groupIdArg, indexArg) {
|
|
562
|
+
const current = this.dropSlot;
|
|
563
|
+
if (current && current.groupId === groupIdArg && current.index === indexArg)
|
|
564
|
+
return;
|
|
565
|
+
this.dropSlot = { groupId: groupIdArg, index: indexArg };
|
|
566
|
+
}
|
|
567
|
+
handleDragOverSlot(event, groupIdArg, indexArg) {
|
|
568
|
+
if (!this.draggingSessionId)
|
|
569
|
+
return;
|
|
570
|
+
event.preventDefault();
|
|
571
|
+
this.setDropSlot(groupIdArg, indexArg);
|
|
572
|
+
}
|
|
573
|
+
handleDrop(event, groupIdArg, indexArg) {
|
|
574
|
+
event.preventDefault();
|
|
575
|
+
event.stopPropagation();
|
|
576
|
+
const sessionId = this.draggingSessionId || event.dataTransfer?.getData('text/plain') || '';
|
|
577
|
+
this.draggingSessionId = '';
|
|
578
|
+
this.dropSlot = undefined;
|
|
579
|
+
if (!sessionId)
|
|
580
|
+
return;
|
|
581
|
+
const detail = {
|
|
582
|
+
sessionId,
|
|
583
|
+
groupId: groupIdArg,
|
|
584
|
+
index: Math.max(0, indexArg),
|
|
585
|
+
};
|
|
586
|
+
this.dispatchEvent(new CustomEvent('harness-session-move', { detail, bubbles: true, composed: true }));
|
|
587
|
+
}
|
|
276
588
|
emit(name, session) {
|
|
277
589
|
this.dispatchEvent(new CustomEvent(name, { detail: { session }, bubbles: true, composed: true }));
|
|
278
590
|
}
|
|
279
591
|
constructor() {
|
|
280
592
|
super(...arguments);
|
|
281
|
-
__runInitializers(this,
|
|
593
|
+
__runInitializers(this, _collapsedGroupIds_extraInitializers);
|
|
282
594
|
}
|
|
283
595
|
static {
|
|
284
596
|
__runInitializers(_classThis, _classExtraInitializers);
|
|
@@ -287,4 +599,4 @@ let DeesHarnessSessionList = (() => {
|
|
|
287
599
|
return DeesHarnessSessionList = _classThis;
|
|
288
600
|
})();
|
|
289
601
|
export { DeesHarnessSessionList };
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXNlc3Npb24tbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLXNlc3Npb24tbGlzdC9kZWVzLWhhcm5lc3Mtc2Vzc2lvbi1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXRELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sOENBQThDLENBQUM7QUFRdEQ7Ozs7O0dBS0c7SUFFVSxzQkFBc0I7NEJBRGxDLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQzs7OztzQkFDQyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7O3NDQUFuQixTQUFRLFdBQVc7Ozs7b0NBSXBELFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzs2Q0FHOUIsUUFBUSxFQUFFO21DQUdWLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztxQ0FHM0IsUUFBUSxFQUFFO2tDQUdWLEtBQUssRUFBRTtZQVhSLDZLQUFTLFFBQVEsNkJBQVIsUUFBUSwyRkFBNkI7WUFHOUMsd01BQVMsaUJBQWlCLDZCQUFqQixpQkFBaUIsNkdBQWM7WUFHeEMsMEtBQVMsT0FBTyw2QkFBUCxPQUFPLHlGQUFrQjtZQUdsQyxnTEFBUyxTQUFTLDZCQUFULFNBQVMsNkZBQW1DO1lBR3JELHVLQUFTLE1B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
|
|
602
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXNlc3Npb24tbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLXNlc3Npb24tbGlzdC9kZWVzLWhhcm5lc3Mtc2Vzc2lvbi1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBUXRELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sOENBQThDLENBQUM7QUFhdEQ7Ozs7Ozs7Ozs7Ozs7R0FhRztJQUVVLHNCQUFzQjs0QkFEbEMsYUFBYSxDQUFDLDJCQUEyQixDQUFDOzs7O3NCQUNDLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0NBQW5CLFNBQVEsV0FBVzs7OztvQ0FJcEQsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDOzZDQUc5QixRQUFRLEVBQUU7bUNBR1YsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO3FDQUczQixRQUFRLEVBQUU7a0NBR1YsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDOzBDQUc5QixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7a0NBRzNCLEtBQUssRUFBRTs2Q0FHUCxLQUFLLEVBQUU7b0NBR1AsS0FBSyxFQUFFOzZDQUdQLEtB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
|
|
@@ -197,6 +197,27 @@ export interface IHarnessSessionContextDetail {
|
|
|
197
197
|
/** The suppressed contextmenu event, e.g. for DeesContextmenu.openContextMenuWithOptions. */
|
|
198
198
|
originalEvent: MouseEvent;
|
|
199
199
|
}
|
|
200
|
+
/** A user-defined session group; ordering of `sessionIds` is the display order. */
|
|
201
|
+
export interface IHarnessSessionGroup {
|
|
202
|
+
id: string;
|
|
203
|
+
name: string;
|
|
204
|
+
sessionIds: string[];
|
|
205
|
+
}
|
|
206
|
+
/** Detail of `harness-session-move`: a session was dropped into a group slot. */
|
|
207
|
+
export interface IHarnessSessionMoveDetail {
|
|
208
|
+
sessionId: string;
|
|
209
|
+
/** Target group, or null for the ungrouped section. */
|
|
210
|
+
groupId: string | null;
|
|
211
|
+
/** Insertion index within the target section's current display order. */
|
|
212
|
+
index: number;
|
|
213
|
+
}
|
|
214
|
+
/** Detail of `harness-group-context`, fired on right-click of a group header. */
|
|
215
|
+
export interface IHarnessGroupContextDetail {
|
|
216
|
+
group: IHarnessSessionGroup;
|
|
217
|
+
clientX: number;
|
|
218
|
+
clientY: number;
|
|
219
|
+
originalEvent: MouseEvent;
|
|
220
|
+
}
|
|
200
221
|
export type THarnessTodoStatus = 'pending' | 'in_progress' | 'completed';
|
|
201
222
|
export interface IHarnessTodoItem {
|
|
202
223
|
id?: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@design.estate/dees-catalog",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.102.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.",
|
|
6
6
|
"main": "dist_ts_web/index.js",
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@design.estate/dees-catalog',
|
|
6
|
-
version: '3.
|
|
6
|
+
version: '3.102.0',
|
|
7
7
|
description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
|
|
8
8
|
}
|