@design.estate/dees-catalog 3.100.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 +286 -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 +33 -3
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +334 -11
- package/dist_ts_web/elements/00group-harness/interfaces.d.ts +30 -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 +342 -9
- package/ts_web/elements/00group-harness/interfaces.ts +34 -0
package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js
CHANGED
|
@@ -39,8 +39,17 @@ import { harnessFormatRelativeTime } from '../harness.helpers.js';
|
|
|
39
39
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
|
40
40
|
/**
|
|
41
41
|
* Searchable conversation list, embeddable in a sidebar or a DeesModal.
|
|
42
|
-
* Emits `harness-session-select` on click
|
|
43
|
-
* double-click or Enter
|
|
42
|
+
* Emits `harness-session-select` on click, `harness-session-open` on
|
|
43
|
+
* double-click or Enter, and `harness-session-context` with viewport
|
|
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.
|
|
44
53
|
*/
|
|
45
54
|
let DeesHarnessSessionList = (() => {
|
|
46
55
|
let _classDecorators = [customElement('dees-harness-session-list')];
|
|
@@ -60,9 +69,24 @@ let DeesHarnessSessionList = (() => {
|
|
|
60
69
|
let _emptyText_decorators;
|
|
61
70
|
let _emptyText_initializers = [];
|
|
62
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 = [];
|
|
63
78
|
let _search_decorators;
|
|
64
79
|
let _search_initializers = [];
|
|
65
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 = [];
|
|
66
90
|
var DeesHarnessSessionList = class extends _classSuper {
|
|
67
91
|
static { _classThis = this; }
|
|
68
92
|
static {
|
|
@@ -71,12 +95,22 @@ let DeesHarnessSessionList = (() => {
|
|
|
71
95
|
_selectedSessionId_decorators = [property()];
|
|
72
96
|
_loading_decorators = [property({ type: Boolean })];
|
|
73
97
|
_emptyText_decorators = [property()];
|
|
98
|
+
_groups_decorators = [property({ attribute: false })];
|
|
99
|
+
_enableGrouping_decorators = [property({ type: Boolean })];
|
|
74
100
|
_search_decorators = [state()];
|
|
101
|
+
_draggingSessionId_decorators = [state()];
|
|
102
|
+
_dropSlot_decorators = [state()];
|
|
103
|
+
_collapsedGroupIds_decorators = [state()];
|
|
75
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);
|
|
76
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);
|
|
77
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);
|
|
78
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);
|
|
79
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);
|
|
80
114
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
81
115
|
DeesHarnessSessionList = _classThis = _classDescriptor.value;
|
|
82
116
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
@@ -95,9 +129,24 @@ let DeesHarnessSessionList = (() => {
|
|
|
95
129
|
#emptyText_accessor_storage = (__runInitializers(this, _loading_extraInitializers), __runInitializers(this, _emptyText_initializers, 'No conversations yet.'));
|
|
96
130
|
get emptyText() { return this.#emptyText_accessor_storage; }
|
|
97
131
|
set emptyText(value) { this.#emptyText_accessor_storage = value; }
|
|
98
|
-
#
|
|
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, ''));
|
|
99
139
|
get search() { return this.#search_accessor_storage; }
|
|
100
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; }
|
|
101
150
|
static styles = [
|
|
102
151
|
themeDefaultStyles,
|
|
103
152
|
cssManager.defaultStyles,
|
|
@@ -170,6 +219,10 @@ let DeesHarnessSessionList = (() => {
|
|
|
170
219
|
box-shadow: inset 2px 0 0 var(--dees-color-accent-primary);
|
|
171
220
|
}
|
|
172
221
|
|
|
222
|
+
.item.dragging {
|
|
223
|
+
opacity: 0.4;
|
|
224
|
+
}
|
|
225
|
+
|
|
173
226
|
.itemTitle {
|
|
174
227
|
display: flex;
|
|
175
228
|
align-items: baseline;
|
|
@@ -207,8 +260,103 @@ let DeesHarnessSessionList = (() => {
|
|
|
207
260
|
font-size: var(--dees-font-control-size-sm, 12px);
|
|
208
261
|
text-align: center;
|
|
209
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
|
+
}
|
|
210
340
|
`,
|
|
211
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
|
+
}
|
|
212
360
|
get filteredSessions() {
|
|
213
361
|
const query = this.search.trim().toLowerCase();
|
|
214
362
|
const sorted = [...this.sessions].sort((left, right) => (right.updatedAt ?? right.createdAt ?? 0) - (left.updatedAt ?? left.createdAt ?? 0));
|
|
@@ -220,7 +368,7 @@ let DeesHarnessSessionList = (() => {
|
|
|
220
368
|
this.shadowRoot?.querySelector('.searchRow input')?.focus();
|
|
221
369
|
}
|
|
222
370
|
render() {
|
|
223
|
-
const
|
|
371
|
+
const groupingActive = this.enableGrouping && !this.search.trim();
|
|
224
372
|
return html `
|
|
225
373
|
<div class="searchRow">
|
|
226
374
|
<input
|
|
@@ -234,23 +382,161 @@ let DeesHarnessSessionList = (() => {
|
|
|
234
382
|
<div class="list">
|
|
235
383
|
${this.loading
|
|
236
384
|
? html `<div class="emptyNote">Loading conversations…</div>`
|
|
237
|
-
:
|
|
238
|
-
?
|
|
239
|
-
:
|
|
385
|
+
: groupingActive
|
|
386
|
+
? this.renderGroupedList()
|
|
387
|
+
: this.renderFlatList()}
|
|
240
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
|
+
: ''}
|
|
241
488
|
`;
|
|
242
489
|
}
|
|
243
|
-
renderItem(session) {
|
|
490
|
+
renderItem(session, groupId, index) {
|
|
491
|
+
const draggable = this.enableGrouping && index >= 0;
|
|
244
492
|
return html `
|
|
245
493
|
<button
|
|
246
|
-
class="item ${session.id === this.selectedSessionId ? 'selected' : ''}"
|
|
494
|
+
class="item ${session.id === this.selectedSessionId ? 'selected' : ''} ${this.draggingSessionId === session.id ? 'dragging' : ''}"
|
|
247
495
|
type="button"
|
|
496
|
+
draggable=${draggable ? 'true' : 'false'}
|
|
248
497
|
@click=${() => this.emit('harness-session-select', session)}
|
|
249
498
|
@dblclick=${() => this.emit('harness-session-open', session)}
|
|
250
499
|
@keydown=${(event) => {
|
|
251
500
|
if (event.key === 'Enter')
|
|
252
501
|
this.emit('harness-session-open', session);
|
|
253
502
|
}}
|
|
503
|
+
@contextmenu=${(event) => {
|
|
504
|
+
event.preventDefault();
|
|
505
|
+
const detail = {
|
|
506
|
+
session,
|
|
507
|
+
clientX: event.clientX,
|
|
508
|
+
clientY: event.clientY,
|
|
509
|
+
originalEvent: event,
|
|
510
|
+
};
|
|
511
|
+
this.dispatchEvent(new CustomEvent('harness-session-context', { detail, bubbles: true, composed: true }));
|
|
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
|
+
}}
|
|
254
540
|
>
|
|
255
541
|
<span class="itemTitle">
|
|
256
542
|
<span class="titleText">${session.title || session.id}</span>
|
|
@@ -262,12 +548,49 @@ let DeesHarnessSessionList = (() => {
|
|
|
262
548
|
</button>
|
|
263
549
|
`;
|
|
264
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
|
+
}
|
|
265
588
|
emit(name, session) {
|
|
266
589
|
this.dispatchEvent(new CustomEvent(name, { detail: { session }, bubbles: true, composed: true }));
|
|
267
590
|
}
|
|
268
591
|
constructor() {
|
|
269
592
|
super(...arguments);
|
|
270
|
-
__runInitializers(this,
|
|
593
|
+
__runInitializers(this, _collapsedGroupIds_extraInitializers);
|
|
271
594
|
}
|
|
272
595
|
static {
|
|
273
596
|
__runInitializers(_classThis, _classExtraInitializers);
|
|
@@ -276,4 +599,4 @@ let DeesHarnessSessionList = (() => {
|
|
|
276
599
|
return DeesHarnessSessionList = _classThis;
|
|
277
600
|
})();
|
|
278
601
|
export { DeesHarnessSessionList };
|
|
279
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXNlc3Npb24tbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLXNlc3Npb24tbGlzdC9kZWVzLWhhcm5lc3Mtc2Vzc2lvbi1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXRELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sOENBQThDLENBQUM7QUFRdEQ7Ozs7R0FJRztJQUVVLHNCQUFzQjs0QkFEbEMsYUFBYSxDQUFDLDJCQUEyQixDQUFDOzs7O3NCQUNDLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7c0NBQW5CLFNBQVEsV0FBVzs7OztvQ0FJcEQsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDOzZDQUc5QixRQUFRLEVBQUU7bUNBR1YsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO3FDQUczQixRQUFRLEVBQUU7a0NBR1YsS0FBSyxFQUFFO1lBWFIsNktBQVMsUUFBUSw2QkFBUixRQUFRLDJGQUE2QjtZQUc5Qyx3TUFBUyxpQkFBaUIsNkJBQWpCLGlCQUFpQiw2R0FBYztZQUd4QywwS0FBUyxPQUFPLDZCQUFQLE9BQU8seUZBQWtCO1lBR2xDLGdMQUFTLFNBQVMsNkJBQVQsU0FBUyw2RkFBbUM7WUFHckQsdUtBQVMsTUFB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
|
|
602
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXNlc3Npb24tbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLXNlc3Npb24tbGlzdC9kZWVzLWhhcm5lc3Mtc2Vzc2lvbi1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBUXRELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sOENBQThDLENBQUM7QUFhdEQ7Ozs7Ozs7Ozs7Ozs7R0FhRztJQUVVLHNCQUFzQjs0QkFEbEMsYUFBYSxDQUFDLDJCQUEyQixDQUFDOzs7O3NCQUNDLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0NBQW5CLFNBQVEsV0FBVzs7OztvQ0FJcEQsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDOzZDQUc5QixRQUFRLEVBQUU7bUNBR1YsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO3FDQUczQixRQUFRLEVBQUU7a0NBR1YsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDOzBDQUc5QixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7a0NBRzNCLEtBQUssRUFBRTs2Q0FHUCxLQUFLLEVBQUU7b0NBR1AsS0FBSyxFQUFFOzZDQUdQLEtB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
|
|
@@ -188,6 +188,36 @@ export interface IHarnessSessionMeta {
|
|
|
188
188
|
messageCount?: number;
|
|
189
189
|
preview?: string;
|
|
190
190
|
}
|
|
191
|
+
/** Detail of `harness-session-context`, fired on right-click of a session item. */
|
|
192
|
+
export interface IHarnessSessionContextDetail {
|
|
193
|
+
session: IHarnessSessionMeta;
|
|
194
|
+
/** Viewport coordinates of the pointer, for positioning a context menu. */
|
|
195
|
+
clientX: number;
|
|
196
|
+
clientY: number;
|
|
197
|
+
/** The suppressed contextmenu event, e.g. for DeesContextmenu.openContextMenuWithOptions. */
|
|
198
|
+
originalEvent: MouseEvent;
|
|
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
|
+
}
|
|
191
221
|
export type THarnessTodoStatus = 'pending' | 'in_progress' | 'completed';
|
|
192
222
|
export interface IHarnessTodoItem {
|
|
193
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
|
}
|