@design.estate/dees-catalog 4.9.0 → 4.11.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 +4965 -2314
- package/dist_ts_web/00_commitinfo_data.js +2 -2
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.d.ts +56 -4
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.js +35 -2
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +1107 -127
- package/dist_ts_web/elements/00group-harness/interfaces.d.ts +10 -1
- package/package.json +5 -5
- package/readme.md +3 -1
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.ts +45 -2
- package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.ts +1194 -126
- package/ts_web/elements/00group-harness/interfaces.ts +11 -1
- package/dist_watch/bundle.js +0 -235637
- package/dist_watch/bundle.js.map +0 -7
- package/dist_watch/index.html +0 -28
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@design.estate/dees-catalog',
|
|
6
|
-
version: '4.
|
|
6
|
+
version: '4.11.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
|
};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFdBQVcsRUFBRSxzSkFBc0o7Q0FDcEssQ0FBQSJ9
|
|
@@ -22,7 +22,8 @@ interface IDropSlot {
|
|
|
22
22
|
* `harness-group-create-request`, and right-clicking a group header emits
|
|
23
23
|
* `harness-group-context` — the host persists changes and passes fresh
|
|
24
24
|
* `groups` back in. Sessions in no group render in the trailing ungrouped
|
|
25
|
-
* section
|
|
25
|
+
* section with pinned entries first, then explicit order, then new sessions by
|
|
26
|
+
* recency. While a search query is active the list is flat.
|
|
26
27
|
*/
|
|
27
28
|
export declare class DeesHarnessSessionList extends DeesElement {
|
|
28
29
|
static demo: () => TemplateResult<1>;
|
|
@@ -33,26 +34,77 @@ export declare class DeesHarnessSessionList extends DeesElement {
|
|
|
33
34
|
accessor emptyText: string;
|
|
34
35
|
accessor groups: IHarnessSessionGroup[];
|
|
35
36
|
accessor enableGrouping: boolean;
|
|
37
|
+
/** Explicit order for sortable sessions outside user-defined groups. */
|
|
38
|
+
accessor ungroupedSessionIds: string[];
|
|
36
39
|
accessor search: string;
|
|
37
40
|
accessor draggingSessionId: string;
|
|
38
41
|
accessor dropSlot: IDropSlot | undefined;
|
|
42
|
+
accessor draggedItemHeight: number;
|
|
43
|
+
accessor expandedSessionIds: ReadonlySet<string>;
|
|
39
44
|
accessor collapsedGroupIds: ReadonlySet<string>;
|
|
45
|
+
private accessor topScrollShadowVisible;
|
|
46
|
+
private accessor bottomScrollShadowVisible;
|
|
47
|
+
private accessor moveAnnouncement;
|
|
48
|
+
private reflowGeneration;
|
|
49
|
+
private readonly reflowAnimations;
|
|
50
|
+
private pointerDragGesture;
|
|
51
|
+
private keyboardMoveFocus;
|
|
52
|
+
private scrollResizeObserver;
|
|
53
|
+
private observedScrollContainer;
|
|
54
|
+
private observedScrollContent;
|
|
55
|
+
private dragAutoScrollFrame;
|
|
56
|
+
private dragAutoScrollClientX;
|
|
57
|
+
private dragAutoScrollClientY;
|
|
58
|
+
private dragAutoScrollVelocity;
|
|
59
|
+
private dragAutoScrollLastFrame;
|
|
40
60
|
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
41
61
|
private get sessionsById();
|
|
42
62
|
private get groupedSessionIds();
|
|
43
|
-
/**
|
|
63
|
+
/** Pinned entries first, followed by explicitly ordered sortable sessions. */
|
|
44
64
|
private get ungroupedSessions();
|
|
45
65
|
private get filteredSessions();
|
|
46
66
|
focusSearch(): void;
|
|
67
|
+
updated(changedProperties: Map<PropertyKey, unknown>): void;
|
|
68
|
+
connectedCallback(): Promise<void>;
|
|
69
|
+
disconnectedCallback(): Promise<void>;
|
|
47
70
|
render(): TemplateResult;
|
|
48
71
|
private renderFlatList;
|
|
49
72
|
private renderGroupedList;
|
|
50
73
|
private renderSection;
|
|
74
|
+
private renderDropPlaceholder;
|
|
51
75
|
private renderItem;
|
|
76
|
+
private eventTargetsExpandToggle;
|
|
77
|
+
private eventTargetsDragHandle;
|
|
78
|
+
private sessionStateLabel;
|
|
79
|
+
private toggleSessionExpanded;
|
|
52
80
|
private toggleGroupCollapsed;
|
|
81
|
+
private sortableSessions;
|
|
82
|
+
private sessionsForGroup;
|
|
83
|
+
private handlePointerDown;
|
|
84
|
+
private readonly handlePointerMove;
|
|
85
|
+
private readonly handlePointerUp;
|
|
86
|
+
private readonly handlePointerCancel;
|
|
87
|
+
private readonly handleLostPointerCapture;
|
|
88
|
+
private readonly handleDragKeyDown;
|
|
89
|
+
private readonly handleDragWindowBlur;
|
|
90
|
+
private startPointerDrag;
|
|
91
|
+
private moveDragPreview;
|
|
53
92
|
private setDropSlot;
|
|
54
|
-
private
|
|
55
|
-
private
|
|
93
|
+
private clearDropSlot;
|
|
94
|
+
private updateDragAutoScrollVelocity;
|
|
95
|
+
private readonly runDragAutoScroll;
|
|
96
|
+
private updateDropSlotFromPointer;
|
|
97
|
+
private get scrollContainer();
|
|
98
|
+
private observeScrollGeometry;
|
|
99
|
+
private readonly syncScrollShadowState;
|
|
100
|
+
private stopDragAutoScroll;
|
|
101
|
+
private createMoveDetail;
|
|
102
|
+
private handleKeyboardMove;
|
|
103
|
+
private captureCardRects;
|
|
104
|
+
private restoreKeyboardMoveFocus;
|
|
105
|
+
private animateCardReflow;
|
|
106
|
+
private cancelReflowAnimations;
|
|
107
|
+
private finishPointerDrag;
|
|
56
108
|
private emit;
|
|
57
109
|
}
|
|
58
110
|
export {};
|
|
@@ -13,7 +13,31 @@ const demoSessions = Array.from({ length: 24 }, (_, index) => ({
|
|
|
13
13
|
updatedAt: Date.now() - (index + 1) * 3_500_000,
|
|
14
14
|
messageCount: 4 + (index % 9),
|
|
15
15
|
preview: 'Latest: the regression test asserts the cache key stays stable across…',
|
|
16
|
+
state: ['normal', 'working', 'finished', 'attention', 'error'][index % 5],
|
|
17
|
+
working: index % 5 === 1,
|
|
16
18
|
}));
|
|
19
|
+
const demoGroups = [
|
|
20
|
+
{ id: 'active', name: 'Active work', sessionIds: ['session-0', 'session-1', 'session-2'] },
|
|
21
|
+
{ id: 'review', name: 'Review', sessionIds: ['session-3', 'session-4'] },
|
|
22
|
+
];
|
|
23
|
+
const handleSessionMove = (event) => {
|
|
24
|
+
const list = event.currentTarget;
|
|
25
|
+
const { sessionId, groupId, beforeSessionId } = event.detail;
|
|
26
|
+
const groups = list.groups.map((group) => ({
|
|
27
|
+
...group,
|
|
28
|
+
sessionIds: group.sessionIds.filter((id) => id !== sessionId),
|
|
29
|
+
}));
|
|
30
|
+
const ungroupedSessionIds = list.ungroupedSessionIds.filter((id) => id !== sessionId);
|
|
31
|
+
const targetIds = groupId === null
|
|
32
|
+
? ungroupedSessionIds
|
|
33
|
+
: groups.find((group) => group.id === groupId)?.sessionIds;
|
|
34
|
+
if (!targetIds)
|
|
35
|
+
return;
|
|
36
|
+
const anchorIndex = beforeSessionId ? targetIds.indexOf(beforeSessionId) : -1;
|
|
37
|
+
targetIds.splice(anchorIndex >= 0 ? anchorIndex : targetIds.length, 0, sessionId);
|
|
38
|
+
list.groups = groups;
|
|
39
|
+
list.ungroupedSessionIds = ungroupedSessionIds;
|
|
40
|
+
};
|
|
17
41
|
const openModal = async () => {
|
|
18
42
|
const { DeesModal } = await import('../../00group-overlay/dees-modal/dees-modal.js');
|
|
19
43
|
const content = document.createElement('dees-harness-session-list');
|
|
@@ -32,7 +56,7 @@ export const demoFunc = () => html `
|
|
|
32
56
|
<style>
|
|
33
57
|
.sessionDemo {
|
|
34
58
|
display: grid;
|
|
35
|
-
grid-template-rows: auto minmax(0, 1fr);
|
|
59
|
+
grid-template-rows: auto auto minmax(0, 1fr);
|
|
36
60
|
gap: 12px;
|
|
37
61
|
height: 480px;
|
|
38
62
|
max-width: 420px;
|
|
@@ -42,15 +66,24 @@ export const demoFunc = () => html `
|
|
|
42
66
|
border: 1px solid var(--dees-color-border-subtle);
|
|
43
67
|
background: var(--dees-color-bg-secondary);
|
|
44
68
|
}
|
|
69
|
+
.demoHint {
|
|
70
|
+
color: var(--dees-color-text-secondary);
|
|
71
|
+
font-size: var(--dees-font-caption1-size, 11px);
|
|
72
|
+
}
|
|
45
73
|
.sessionDemo dees-harness-session-list { min-height: 0; }
|
|
46
74
|
</style>
|
|
47
75
|
<div class="sessionDemo">
|
|
48
76
|
<dees-button @clicked=${openModal}>Open in a DeesModal</dees-button>
|
|
77
|
+
<div class="demoHint">Drag the grip to reorder conversations or move them between groups.</div>
|
|
49
78
|
<dees-harness-session-list
|
|
50
79
|
.sessions=${demoSessions}
|
|
80
|
+
.groups=${demoGroups}
|
|
81
|
+
.ungroupedSessionIds=${demoSessions.slice(5).map((session) => session.id)}
|
|
82
|
+
.enableGrouping=${true}
|
|
51
83
|
selectedSessionId="session-2"
|
|
52
84
|
@harness-session-select=${(event) => console.log('select', event.detail.session)}
|
|
85
|
+
@harness-session-move=${handleSessionMove}
|
|
53
86
|
></dees-harness-session-list>
|
|
54
87
|
</div>
|
|
55
88
|
`;
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXNlc3Npb24tbGlzdC5kZW1vLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtaGFybmVzcy9kZWVzLWhhcm5lc3Mtc2Vzc2lvbi1saXN0L2RlZXMtaGFybmVzcy1zZXNzaW9uLWxpc3QuZGVtby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFPbkQsTUFBTSxZQUFZLEdBQTBCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BGLEVBQUUsRUFBRSxXQUFXLEtBQUssRUFBRTtJQUN0QixLQUFLLEVBQUU7UUFDTCx1QkFBdUI7UUFDdkIsc0NBQXNDO1FBQ3RDLDJCQUEyQjtRQUMzQiw2QkFBNkI7UUFDN0IsZ0JBQWdCO1FBQ2hCLHFDQUFxQztLQUN0QyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDWixTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVM7SUFDL0MsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTO0lBQy9DLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLE9BQU8sRUFBRSx3RUFBd0U7SUFDakYsS0FBSyxFQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBVyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDcEYsT0FBTyxFQUFFLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQztDQUN6QixDQUFDLENBQUMs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
|