@harborclient/sdk 1.0.67 → 1.0.69
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/components/FooterIcon/index.d.ts +2 -1
- package/dist/components/FooterIcon/index.d.ts.map +1 -1
- package/dist/components/FooterIcon/index.js +3 -2
- package/dist/components/RowActionsMenu/Submenu.d.ts +49 -0
- package/dist/components/RowActionsMenu/Submenu.d.ts.map +1 -0
- package/dist/components/RowActionsMenu/Submenu.js +156 -0
- package/dist/components/RowActionsMenu/index.d.ts +58 -5
- package/dist/components/RowActionsMenu/index.d.ts.map +1 -1
- package/dist/components/RowActionsMenu/index.js +293 -55
- package/dist/components/TabBar/ClosingTabShell.d.ts +20 -0
- package/dist/components/TabBar/ClosingTabShell.d.ts.map +1 -0
- package/dist/components/TabBar/ClosingTabShell.js +126 -0
- package/dist/components/TabBar/TabBarShell.d.ts +58 -0
- package/dist/components/TabBar/TabBarShell.d.ts.map +1 -0
- package/dist/components/TabBar/TabBarShell.js +37 -0
- package/dist/components/TabBar/TabContextMenu.d.ts +23 -0
- package/dist/components/TabBar/TabContextMenu.d.ts.map +1 -0
- package/dist/components/TabBar/TabContextMenu.js +119 -0
- package/dist/components/TabBar/TabNewButton.d.ts +26 -0
- package/dist/components/TabBar/TabNewButton.d.ts.map +1 -0
- package/dist/components/TabBar/TabNewButton.js +14 -0
- package/dist/components/TabBar/index.d.ts +92 -0
- package/dist/components/TabBar/index.d.ts.map +1 -0
- package/dist/components/TabBar/index.js +224 -0
- package/dist/components/TabBar/tabCloseMenuHelpers.d.ts +41 -0
- package/dist/components/TabBar/tabCloseMenuHelpers.d.ts.map +1 -0
- package/dist/components/TabBar/tabCloseMenuHelpers.js +48 -0
- package/dist/components/TabBar/types.d.ts +60 -0
- package/dist/components/TabBar/types.d.ts.map +1 -0
- package/dist/components/TabBar/types.js +1 -0
- package/dist/components/TabBar/useExitingTabItems.d.ts +73 -0
- package/dist/components/TabBar/useExitingTabItems.d.ts.map +1 -0
- package/dist/components/TabBar/useExitingTabItems.js +103 -0
- package/dist/components/TabBar/useSortableTabItem.d.ts +31 -0
- package/dist/components/TabBar/useSortableTabItem.d.ts.map +1 -0
- package/dist/components/TabBar/useSortableTabItem.js +29 -0
- package/dist/components/Toolbar/index.d.ts.map +1 -1
- package/dist/components/Toolbar/index.js +21 -5
- package/dist/components/classes.d.ts +9 -0
- package/dist/components/classes.d.ts.map +1 -1
- package/dist/components/classes.js +15 -2
- package/dist/components/footerBarUtils.d.ts +11 -0
- package/dist/components/footerBarUtils.d.ts.map +1 -0
- package/dist/components/footerBarUtils.js +10 -0
- package/dist/components/index.d.ts +3 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +3 -1
- package/dist/components/menuPosition.d.ts +48 -0
- package/dist/components/menuPosition.d.ts.map +1 -0
- package/dist/components/menuPosition.js +49 -0
- package/dist/components/rowActionsMenuHelpers.d.ts +17 -0
- package/dist/components/rowActionsMenuHelpers.d.ts.map +1 -1
- package/dist/components/rowActionsMenuHelpers.js +47 -0
- package/dist/styles.css +12 -0
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +7 -1
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Data for a single tab row rendered by {@link TabBar}.
|
|
4
|
+
*/
|
|
5
|
+
export interface TabBarItem<TId extends string | number> {
|
|
6
|
+
/**
|
|
7
|
+
* Stable tab identifier used for selection, close, and reorder callbacks.
|
|
8
|
+
*/
|
|
9
|
+
id: TId;
|
|
10
|
+
/**
|
|
11
|
+
* Whether this tab is the currently selected tab.
|
|
12
|
+
*/
|
|
13
|
+
active: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Label and icon content rendered inside the tab shell.
|
|
16
|
+
*/
|
|
17
|
+
content: ReactNode;
|
|
18
|
+
/**
|
|
19
|
+
* Accessible name for the tab control, including unsaved or status suffixes.
|
|
20
|
+
*/
|
|
21
|
+
accessibleName: string;
|
|
22
|
+
/**
|
|
23
|
+
* Accessible name for the close button, typically including the tab title.
|
|
24
|
+
*/
|
|
25
|
+
closeAccessibleName: string;
|
|
26
|
+
/**
|
|
27
|
+
* Native tooltip text when the label is truncated.
|
|
28
|
+
*/
|
|
29
|
+
title?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Plain-text or element preview shown in the drag overlay.
|
|
32
|
+
*/
|
|
33
|
+
dragLabel: ReactNode;
|
|
34
|
+
/**
|
|
35
|
+
* When true, uses active styling even when not selected (for example tab group edit).
|
|
36
|
+
*/
|
|
37
|
+
highlighted?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Configuration for the new-tab "+" control at the end of the tab bar.
|
|
41
|
+
*/
|
|
42
|
+
export interface TabBarNewTab {
|
|
43
|
+
/**
|
|
44
|
+
* Accessible name for the new-tab control.
|
|
45
|
+
*/
|
|
46
|
+
ariaLabel: string;
|
|
47
|
+
/**
|
|
48
|
+
* Native tooltip text for the new-tab control.
|
|
49
|
+
*/
|
|
50
|
+
title: string;
|
|
51
|
+
/**
|
|
52
|
+
* Called when the user opens a new tab or chat.
|
|
53
|
+
*/
|
|
54
|
+
onClick: () => void;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Cursor style applied to draggable tab rows when reordering is enabled.
|
|
58
|
+
*/
|
|
59
|
+
export type TabBarSortableCursor = 'pointer' | 'grab';
|
|
60
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/TabBar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM;IACrD;;OAEG;IACH,EAAE,EAAE,GAAG,CAAC;IAER;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,OAAO,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snapshot of a tab row kept in the DOM while its close animation plays.
|
|
3
|
+
*/
|
|
4
|
+
export interface ExitingTabItem<T, TId> {
|
|
5
|
+
/**
|
|
6
|
+
* Tab data captured at removal time.
|
|
7
|
+
*/
|
|
8
|
+
item: T;
|
|
9
|
+
/**
|
|
10
|
+
* Id of the live tab immediately to the right before removal, or null when
|
|
11
|
+
* this tab was last in the row.
|
|
12
|
+
*/
|
|
13
|
+
insertBeforeId: TId | null;
|
|
14
|
+
/**
|
|
15
|
+
* Stable React key for this exit animation instance.
|
|
16
|
+
*/
|
|
17
|
+
exitKey: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Resolves the anchor id for an exiting tab: the first still-open tab that was
|
|
21
|
+
* to its right in the previous list, or null when none remain on the right.
|
|
22
|
+
*
|
|
23
|
+
* @param previousItems - Tab list before removal.
|
|
24
|
+
* @param removedIndex - Index of the tab being removed.
|
|
25
|
+
* @param currentIds - Ids that remain open after removal.
|
|
26
|
+
* @param getId - Reads a stable id from a tab item.
|
|
27
|
+
* @returns Anchor id for render placement, or null for end-of-row placement.
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveInsertBeforeId<T, TId>(previousItems: T[], removedIndex: number, currentIds: Set<TId>, getId: (item: T) => TId): TId | null;
|
|
30
|
+
/**
|
|
31
|
+
* Detects tabs removed between two list snapshots and their render anchors.
|
|
32
|
+
*
|
|
33
|
+
* @param previousItems - Tab list before removal.
|
|
34
|
+
* @param currentItems - Tab list after removal.
|
|
35
|
+
* @param getId - Reads a stable id from a tab item.
|
|
36
|
+
* @returns Removed tabs with placement anchors for exit animation.
|
|
37
|
+
*/
|
|
38
|
+
export declare function detectRemovedTabItems<T, TId>(previousItems: T[], currentItems: T[], getId: (item: T) => TId): Array<{
|
|
39
|
+
item: T;
|
|
40
|
+
insertBeforeId: TId | null;
|
|
41
|
+
}>;
|
|
42
|
+
interface UseExitingTabItemsResult<T, TId> {
|
|
43
|
+
/**
|
|
44
|
+
* Tabs currently playing their close animation.
|
|
45
|
+
*/
|
|
46
|
+
exiting: ExitingTabItem<T, TId>[];
|
|
47
|
+
/**
|
|
48
|
+
* Ids removed in the latest list update (cleared on the next stable render).
|
|
49
|
+
*/
|
|
50
|
+
removedIds: TId[];
|
|
51
|
+
/**
|
|
52
|
+
* Drops a finished exit snapshot from local state.
|
|
53
|
+
*
|
|
54
|
+
* @param exitKey - Key returned with the exiting tab entry.
|
|
55
|
+
*/
|
|
56
|
+
completeExit: (exitKey: string) => void;
|
|
57
|
+
/**
|
|
58
|
+
* Returns exit snapshots that should render immediately before an anchor tab.
|
|
59
|
+
*
|
|
60
|
+
* @param anchorId - Live tab id to the right of the snapshot, or null for end-of-row.
|
|
61
|
+
*/
|
|
62
|
+
getExitingBefore: (anchorId: TId | null) => ExitingTabItem<T, TId>[];
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Tracks tab rows removed from a live list and keeps snapshots for exit animation.
|
|
66
|
+
*
|
|
67
|
+
* @param items - Current open tabs from Redux or parent state.
|
|
68
|
+
* @param getId - Reads a stable id from a tab item.
|
|
69
|
+
* @returns Exiting snapshots, placement helpers, and ids removed last update.
|
|
70
|
+
*/
|
|
71
|
+
export declare function useExitingTabItems<T, TId>(items: T[], getId: (item: T) => TId): UseExitingTabItemsResult<T, TId>;
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=useExitingTabItems.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useExitingTabItems.d.ts","sourceRoot":"","sources":["../../../src/components/TabBar/useExitingTabItems.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,EAAE,GAAG;IACpC;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC;IAER;;;OAGG;IACH,cAAc,EAAE,GAAG,GAAG,IAAI,CAAC;IAE3B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAC1C,aAAa,EAAE,CAAC,EAAE,EAClB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,EACpB,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,GACtB,GAAG,GAAG,IAAI,CASZ;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAC1C,aAAa,EAAE,CAAC,EAAE,EAClB,YAAY,EAAE,CAAC,EAAE,EACjB,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,GACtB,KAAK,CAAC;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,cAAc,EAAE,GAAG,GAAG,IAAI,CAAA;CAAE,CAAC,CAkBhD;AAED,UAAU,wBAAwB,CAAC,CAAC,EAAE,GAAG;IACvC;;OAEG;IACH,OAAO,EAAE,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAElC;;OAEG;IACH,UAAU,EAAE,GAAG,EAAE,CAAC;IAElB;;;;OAIG;IACH,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;;;OAIG;IACH,gBAAgB,EAAE,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI,KAAK,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;CACtE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,GAAG,EACvC,KAAK,EAAE,CAAC,EAAE,EACV,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,GACtB,wBAAwB,CAAC,CAAC,EAAE,GAAG,CAAC,CA8DlC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from '@harborclient/sdk/react';
|
|
2
|
+
/**
|
|
3
|
+
* Resolves the anchor id for an exiting tab: the first still-open tab that was
|
|
4
|
+
* to its right in the previous list, or null when none remain on the right.
|
|
5
|
+
*
|
|
6
|
+
* @param previousItems - Tab list before removal.
|
|
7
|
+
* @param removedIndex - Index of the tab being removed.
|
|
8
|
+
* @param currentIds - Ids that remain open after removal.
|
|
9
|
+
* @param getId - Reads a stable id from a tab item.
|
|
10
|
+
* @returns Anchor id for render placement, or null for end-of-row placement.
|
|
11
|
+
*/
|
|
12
|
+
export function resolveInsertBeforeId(previousItems, removedIndex, currentIds, getId) {
|
|
13
|
+
for (let index = removedIndex + 1; index < previousItems.length; index += 1) {
|
|
14
|
+
const id = getId(previousItems[index]);
|
|
15
|
+
if (currentIds.has(id)) {
|
|
16
|
+
return id;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Detects tabs removed between two list snapshots and their render anchors.
|
|
23
|
+
*
|
|
24
|
+
* @param previousItems - Tab list before removal.
|
|
25
|
+
* @param currentItems - Tab list after removal.
|
|
26
|
+
* @param getId - Reads a stable id from a tab item.
|
|
27
|
+
* @returns Removed tabs with placement anchors for exit animation.
|
|
28
|
+
*/
|
|
29
|
+
export function detectRemovedTabItems(previousItems, currentItems, getId) {
|
|
30
|
+
const currentIds = new Set(currentItems.map(getId));
|
|
31
|
+
const removed = [];
|
|
32
|
+
for (let index = 0; index < previousItems.length; index += 1) {
|
|
33
|
+
const item = previousItems[index];
|
|
34
|
+
const id = getId(item);
|
|
35
|
+
if (currentIds.has(id)) {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
removed.push({
|
|
39
|
+
item,
|
|
40
|
+
insertBeforeId: resolveInsertBeforeId(previousItems, index, currentIds, getId)
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
return removed;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Tracks tab rows removed from a live list and keeps snapshots for exit animation.
|
|
47
|
+
*
|
|
48
|
+
* @param items - Current open tabs from Redux or parent state.
|
|
49
|
+
* @param getId - Reads a stable id from a tab item.
|
|
50
|
+
* @returns Exiting snapshots, placement helpers, and ids removed last update.
|
|
51
|
+
*/
|
|
52
|
+
export function useExitingTabItems(items, getId) {
|
|
53
|
+
const previousItemsRef = useRef(items);
|
|
54
|
+
const getIdRef = useRef(getId);
|
|
55
|
+
const exitCounterRef = useRef(0);
|
|
56
|
+
const [exiting, setExiting] = useState([]);
|
|
57
|
+
const [removedIds, setRemovedIds] = useState([]);
|
|
58
|
+
/**
|
|
59
|
+
* Keeps the latest id getter available to the removal effect without re-running it.
|
|
60
|
+
*/
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
getIdRef.current = getId;
|
|
63
|
+
}, [getId]);
|
|
64
|
+
/**
|
|
65
|
+
* Captures removed tabs whenever the live list shrinks.
|
|
66
|
+
*/
|
|
67
|
+
useEffect(() => {
|
|
68
|
+
const previousItems = previousItemsRef.current;
|
|
69
|
+
const removed = detectRemovedTabItems(previousItems, items, getIdRef.current);
|
|
70
|
+
if (removed.length > 0) {
|
|
71
|
+
const nextExiting = removed.map(({ item, insertBeforeId }) => {
|
|
72
|
+
exitCounterRef.current += 1;
|
|
73
|
+
return {
|
|
74
|
+
item,
|
|
75
|
+
insertBeforeId,
|
|
76
|
+
exitKey: `${String(getIdRef.current(item))}-exit-${exitCounterRef.current}`
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
setExiting((current) => [...current, ...nextExiting]);
|
|
80
|
+
setRemovedIds(removed.map((entry) => getIdRef.current(entry.item)));
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
setRemovedIds([]);
|
|
84
|
+
}
|
|
85
|
+
previousItemsRef.current = items;
|
|
86
|
+
}, [items]);
|
|
87
|
+
/**
|
|
88
|
+
* Removes a finished exit snapshot after its width transition completes.
|
|
89
|
+
*/
|
|
90
|
+
const completeExit = useCallback((exitKey) => {
|
|
91
|
+
setExiting((current) => current.filter((entry) => entry.exitKey !== exitKey));
|
|
92
|
+
}, []);
|
|
93
|
+
/**
|
|
94
|
+
* Groups exit snapshots by the live tab they should render in front of.
|
|
95
|
+
*/
|
|
96
|
+
const getExitingBefore = useCallback((anchorId) => exiting.filter((entry) => entry.insertBeforeId === anchorId), [exiting]);
|
|
97
|
+
return {
|
|
98
|
+
exiting,
|
|
99
|
+
removedIds,
|
|
100
|
+
completeExit,
|
|
101
|
+
getExitingBefore
|
|
102
|
+
};
|
|
103
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { SyntheticListenerMap } from '@dnd-kit/core/dist/hooks/utilities';
|
|
2
|
+
import type { CSSProperties } from 'react';
|
|
3
|
+
interface SortableTabItemResult {
|
|
4
|
+
/**
|
|
5
|
+
* Ref for the sortable tab shell element.
|
|
6
|
+
*/
|
|
7
|
+
setNodeRef: (element: HTMLElement | null) => void;
|
|
8
|
+
/**
|
|
9
|
+
* dnd-kit pointer and keyboard listeners for the tab shell.
|
|
10
|
+
*/
|
|
11
|
+
listeners: SyntheticListenerMap | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Inline styles for transform and drag feedback on the tab shell.
|
|
14
|
+
*/
|
|
15
|
+
style: CSSProperties;
|
|
16
|
+
/**
|
|
17
|
+
* Whether this tab is currently being dragged.
|
|
18
|
+
*/
|
|
19
|
+
isDragging: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Wraps dnd-kit sortable behavior for horizontal tab bar items while keeping
|
|
23
|
+
* the tab element itself as a direct child of the tab list for ARIA compliance.
|
|
24
|
+
*
|
|
25
|
+
* @param id - Stable sortable id for this tab.
|
|
26
|
+
* @param disabled - When true, skips drag behavior (for example a single open tab).
|
|
27
|
+
* @returns Refs, listeners, and styles for the draggable tab shell.
|
|
28
|
+
*/
|
|
29
|
+
export declare function useSortableTabItem(id: string, disabled?: boolean): SortableTabItemResult;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=useSortableTabItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSortableTabItem.d.ts","sourceRoot":"","sources":["../../../src/components/TabBar/useSortableTabItem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAG/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,UAAU,qBAAqB;IAC7B;;OAEG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAElD;;OAEG;IACH,SAAS,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAE5C;;OAEG;IACH,KAAK,EAAE,aAAa,CAAC;IAErB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,qBAAqB,CAoBtF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { useSortable } from '@dnd-kit/sortable';
|
|
2
|
+
import { CSS } from '@dnd-kit/utilities';
|
|
3
|
+
/**
|
|
4
|
+
* Wraps dnd-kit sortable behavior for horizontal tab bar items while keeping
|
|
5
|
+
* the tab element itself as a direct child of the tab list for ARIA compliance.
|
|
6
|
+
*
|
|
7
|
+
* @param id - Stable sortable id for this tab.
|
|
8
|
+
* @param disabled - When true, skips drag behavior (for example a single open tab).
|
|
9
|
+
* @returns Refs, listeners, and styles for the draggable tab shell.
|
|
10
|
+
*/
|
|
11
|
+
export function useSortableTabItem(id, disabled = false) {
|
|
12
|
+
const { listeners, setNodeRef, transform, transition, isDragging } = useSortable({
|
|
13
|
+
id,
|
|
14
|
+
disabled
|
|
15
|
+
});
|
|
16
|
+
const style = disabled
|
|
17
|
+
? {}
|
|
18
|
+
: {
|
|
19
|
+
transform: CSS.Transform.toString(transform),
|
|
20
|
+
transition,
|
|
21
|
+
opacity: isDragging ? 0.45 : undefined
|
|
22
|
+
};
|
|
23
|
+
return {
|
|
24
|
+
setNodeRef,
|
|
25
|
+
listeners,
|
|
26
|
+
style,
|
|
27
|
+
isDragging
|
|
28
|
+
};
|
|
29
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Toolbar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,wBAAwB,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIjG;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,IAAI,EAAE,cAAc,CAAC;IAErB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,YAAY,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;IAE/C;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;CACjD;AAED,UAAU,KAAM,SAAQ,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACtF;;OAEG;IACH,OAAO,EAAE,aAAa,EAAE,CAAC;IAEzB;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAE1B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Toolbar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,wBAAwB,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIjG;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,IAAI,EAAE,cAAc,CAAC;IAErB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,YAAY,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;IAE/C;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;CACjD;AAED,UAAU,KAAM,SAAQ,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACtF;;OAEG;IACH,OAAO,EAAE,aAAa,EAAE,CAAC;IAEzB;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAE1B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EACtB,OAAO,EACP,OAAO,EACP,SAAqB,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAqBrB"}
|
|
@@ -1,15 +1,30 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "@harborclient/sdk/jsx-runtime";
|
|
2
2
|
import { FaIcon } from '../FaIcon/index.js';
|
|
3
3
|
import { cn } from '../utils.js';
|
|
4
|
+
/**
|
|
5
|
+
* Whether a toolbar action is in an active visual state.
|
|
6
|
+
*
|
|
7
|
+
* Toggle actions use `ariaPressed`; popup actions such as chat history use
|
|
8
|
+
* `ariaExpanded` when their menu is open.
|
|
9
|
+
*
|
|
10
|
+
* @param action - Declarative toolbar action to evaluate.
|
|
11
|
+
* @returns True when the action should render with the active background.
|
|
12
|
+
*/
|
|
13
|
+
function isToolbarActionActive(action) {
|
|
14
|
+
return action.ariaPressed === true || action.ariaExpanded === true;
|
|
15
|
+
}
|
|
4
16
|
/**
|
|
5
17
|
* Tailwind classes for toolbar icon action buttons.
|
|
6
18
|
*
|
|
7
|
-
*
|
|
19
|
+
* Active buttons use `bg-sidebar-section` so they match collection sidebar
|
|
20
|
+
* section headers; inactive buttons keep `bg-selection` for hover/focus feedback.
|
|
21
|
+
*
|
|
22
|
+
* @param active - Whether the action is pressed or has an open popup.
|
|
8
23
|
* @returns Class string for the action button.
|
|
9
24
|
*/
|
|
10
|
-
function toolbarActionButtonClasses(
|
|
11
|
-
return cn('hc-toolbar-action app-no-drag inline-flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-md border-none text-text',
|
|
12
|
-
? 'bg-
|
|
25
|
+
function toolbarActionButtonClasses(active) {
|
|
26
|
+
return cn('hc-toolbar-action app-no-drag inline-flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-md border-none text-text', active
|
|
27
|
+
? 'bg-sidebar-section'
|
|
13
28
|
: 'bg-transparent hover:bg-selection focus-visible:bg-selection focus-visible:text-text', 'disabled:cursor-not-allowed disabled:opacity-50');
|
|
14
29
|
}
|
|
15
30
|
/**
|
|
@@ -20,7 +35,8 @@ function toolbarActionButtonClasses(pressed) {
|
|
|
20
35
|
*/
|
|
21
36
|
function renderAction(action) {
|
|
22
37
|
const title = action.title ?? action.label;
|
|
23
|
-
|
|
38
|
+
const active = isToolbarActionActive(action);
|
|
39
|
+
return (_jsxs("div", { className: "hc-toolbar-action-wrap relative", children: [_jsx("button", { type: "button", ref: action.buttonRef, className: toolbarActionButtonClasses(active), title: title, "aria-label": action.label, "aria-expanded": action.ariaExpanded, "aria-pressed": action.ariaPressed, "aria-haspopup": action.ariaHaspopup, disabled: action.disabled, onClick: action.onClick, children: _jsx(FaIcon, { icon: action.icon, className: cn('hc-toolbar-action-icon h-5! w-5!', active ? 'opacity-100' : 'opacity-50') }) }), action.popover] }, action.id));
|
|
24
40
|
}
|
|
25
41
|
/**
|
|
26
42
|
* Top-of-sidebar toolbar with left-aligned actions and optional right-aligned toggles.
|
|
@@ -8,4 +8,13 @@ export declare const segmentGroup = "inline-flex p-3 border-b border-separator w
|
|
|
8
8
|
* @param active - Whether this segment is selected.
|
|
9
9
|
*/
|
|
10
10
|
export declare function segment(active: boolean): string;
|
|
11
|
+
/**
|
|
12
|
+
* Active/inactive surface classes for a document-style tab in the tab bar.
|
|
13
|
+
*
|
|
14
|
+
* @param active - Whether this tab is the selected editor.
|
|
15
|
+
* @returns Border, background, and text color classes for the tab shell.
|
|
16
|
+
* Active tabs use a 2px bottom underline; inactive tabs reserve the
|
|
17
|
+
* same space with a transparent bottom border.
|
|
18
|
+
*/
|
|
19
|
+
export declare function tabItem(active: boolean): string;
|
|
11
20
|
//# sourceMappingURL=classes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classes.d.ts","sourceRoot":"","sources":["../../src/components/classes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,YAAY,6GACmF,CAAC;AAK7G;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAI/C"}
|
|
1
|
+
{"version":3,"file":"classes.d.ts","sourceRoot":"","sources":["../../src/components/classes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,YAAY,6GACmF,CAAC;AAK7G;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAI/C;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAI/C"}
|
|
@@ -10,6 +10,19 @@ const segmentFocusVisible = 'focus-visible:outline focus-visible:outline-2 focus
|
|
|
10
10
|
*/
|
|
11
11
|
export function segment(active) {
|
|
12
12
|
return active
|
|
13
|
-
? `cursor-pointer rounded-md border-none bg-selection px-3 py-1 text-[
|
|
14
|
-
: `cursor-pointer rounded-md border-none bg-transparent px-3 py-1 text-[
|
|
13
|
+
? `cursor-pointer rounded-md border-none bg-selection px-3 py-1 text-[16px] text-text app-no-drag ${segmentFocusVisible}`
|
|
14
|
+
: `cursor-pointer rounded-md border-none bg-transparent px-3 py-1 text-[16px] text-muted hover:text-text app-no-drag ${segmentFocusVisible}`;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Active/inactive surface classes for a document-style tab in the tab bar.
|
|
18
|
+
*
|
|
19
|
+
* @param active - Whether this tab is the selected editor.
|
|
20
|
+
* @returns Border, background, and text color classes for the tab shell.
|
|
21
|
+
* Active tabs use a 2px bottom underline; inactive tabs reserve the
|
|
22
|
+
* same space with a transparent bottom border.
|
|
23
|
+
*/
|
|
24
|
+
export function tabItem(active) {
|
|
25
|
+
return active
|
|
26
|
+
? 'border-separator/70 border-b-tab-underline bg-selection text-text focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-accent'
|
|
27
|
+
: 'border-separator/50 border-b-transparent bg-control/20 text-muted hover:bg-selection/60 hover:text-text focus-visible:bg-selection/60 focus-visible:text-text focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-accent';
|
|
15
28
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Square footer icon toggle size in pixels (`h-7 w-7`). */
|
|
2
|
+
export declare const FOOTER_ICON_BUTTON_SIZE = 28;
|
|
3
|
+
/** Total window footer bar height in pixels (icon size plus vertical padding). */
|
|
4
|
+
export declare const FOOTER_BAR_HEIGHT: number;
|
|
5
|
+
/** Vertical space for status-bar plugin slots inside the footer bar. */
|
|
6
|
+
export declare const FOOTER_STATUS_BAR_SLOT_HEIGHT = 20;
|
|
7
|
+
/** Tailwind size classes for square footer icon toggle buttons. */
|
|
8
|
+
export declare const footerIconButtonSizeClass = "size-7";
|
|
9
|
+
/** Tailwind vertical padding for the footer bar shell (2px top + 2px bottom). */
|
|
10
|
+
export declare const footerBarPaddingClass = "py-0.5";
|
|
11
|
+
//# sourceMappingURL=footerBarUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footerBarUtils.d.ts","sourceRoot":"","sources":["../../src/components/footerBarUtils.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,kFAAkF;AAClF,eAAO,MAAM,iBAAiB,QAA8B,CAAC;AAE7D,wEAAwE;AACxE,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD,mEAAmE;AACnE,eAAO,MAAM,yBAAyB,WAAW,CAAC;AAElD,iFAAiF;AACjF,eAAO,MAAM,qBAAqB,WAAW,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Square footer icon toggle size in pixels (`h-7 w-7`). */
|
|
2
|
+
export const FOOTER_ICON_BUTTON_SIZE = 28;
|
|
3
|
+
/** Total window footer bar height in pixels (icon size plus vertical padding). */
|
|
4
|
+
export const FOOTER_BAR_HEIGHT = FOOTER_ICON_BUTTON_SIZE + 4;
|
|
5
|
+
/** Vertical space for status-bar plugin slots inside the footer bar. */
|
|
6
|
+
export const FOOTER_STATUS_BAR_SLOT_HEIGHT = 20;
|
|
7
|
+
/** Tailwind size classes for square footer icon toggle buttons. */
|
|
8
|
+
export const footerIconButtonSizeClass = 'size-7';
|
|
9
|
+
/** Tailwind vertical padding for the footer bar shell (2px top + 2px bottom). */
|
|
10
|
+
export const footerBarPaddingClass = 'py-0.5';
|
|
@@ -17,6 +17,7 @@ export { FieldError } from './FieldError/index.js';
|
|
|
17
17
|
export { FormDataEditor } from './FormDataEditor/index.js';
|
|
18
18
|
export type { Props as FormDataEditorProps } from './FormDataEditor/index.js';
|
|
19
19
|
export { FooterButton } from './FooterButton/index.js';
|
|
20
|
+
export { FOOTER_BAR_HEIGHT, FOOTER_ICON_BUTTON_SIZE, FOOTER_STATUS_BAR_SLOT_HEIGHT, footerBarPaddingClass, footerIconButtonSizeClass } from './footerBarUtils.js';
|
|
20
21
|
export { FooterIcon } from './FooterIcon/index.js';
|
|
21
22
|
export { FooterPanel } from './FooterPanel/index.js';
|
|
22
23
|
export { FormGroup } from './FormGroup/index.js';
|
|
@@ -47,6 +48,7 @@ export type { TabItem } from './SegmentedTabs/index.js';
|
|
|
47
48
|
export { Spinner } from './Spinner/index.js';
|
|
48
49
|
export { StatusMessage } from './StatusMessage/index.js';
|
|
49
50
|
export { TabCloseButton } from './TabCloseButton/index.js';
|
|
51
|
+
export { TabBar, TabBarShell, TabNewButton, TabContextMenu, ClosingTabShell, useSortableTabItem, useExitingTabItems, detectRemovedTabItems, resolveInsertBeforeId, buildTabCloseMenuGroups, tabIdsToCloseOthers, tabIdsToCloseToTheRight, type TabBarItem, type TabBarNewTab, type TabBarSortableCursor, type ExitingTabItem } from './TabBar/index.js';
|
|
50
52
|
export { Toolbar } from './Toolbar/index.js';
|
|
51
53
|
export type { ToolbarAction } from './Toolbar/index.js';
|
|
52
54
|
export { Table, TableBody, TableCell, TableHead, TableHeader, tableCellClass, tableCellClassLoose, tableHeadClass, tableHeadClassLoose } from './Table/index.js';
|
|
@@ -60,6 +62,6 @@ export type { VisibilityMenuItem } from './VisibilityMenu/index.js';
|
|
|
60
62
|
export { cleanVariables, resolveTabListKeyAction } from './utils.js';
|
|
61
63
|
export type { TabListKeyOptions } from './utils.js';
|
|
62
64
|
export { useDialogFocus, getFocusableElements } from './useDialogFocus.js';
|
|
63
|
-
export { segment, segmentGroup } from './classes.js';
|
|
65
|
+
export { segment, segmentGroup, tabItem } from './classes.js';
|
|
64
66
|
export type { FormDataPart, FormDataPartType, HttpMethod, KeyValue, Variable } from '../types.js';
|
|
65
67
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
|
package/dist/components/index.js
CHANGED
|
@@ -12,6 +12,7 @@ export { FaIcon } from './FaIcon/index.js';
|
|
|
12
12
|
export { FieldError } from './FieldError/index.js';
|
|
13
13
|
export { FormDataEditor } from './FormDataEditor/index.js';
|
|
14
14
|
export { FooterButton } from './FooterButton/index.js';
|
|
15
|
+
export { FOOTER_BAR_HEIGHT, FOOTER_ICON_BUTTON_SIZE, FOOTER_STATUS_BAR_SLOT_HEIGHT, footerBarPaddingClass, footerIconButtonSizeClass } from './footerBarUtils.js';
|
|
15
16
|
export { FooterIcon } from './FooterIcon/index.js';
|
|
16
17
|
export { FooterPanel } from './FooterPanel/index.js';
|
|
17
18
|
export { FormGroup } from './FormGroup/index.js';
|
|
@@ -36,6 +37,7 @@ export { SegmentedTabs, SegmentedTabsGroup, SegmentedTabPanel } from './Segmente
|
|
|
36
37
|
export { Spinner } from './Spinner/index.js';
|
|
37
38
|
export { StatusMessage } from './StatusMessage/index.js';
|
|
38
39
|
export { TabCloseButton } from './TabCloseButton/index.js';
|
|
40
|
+
export { TabBar, TabBarShell, TabNewButton, TabContextMenu, ClosingTabShell, useSortableTabItem, useExitingTabItems, detectRemovedTabItems, resolveInsertBeforeId, buildTabCloseMenuGroups, tabIdsToCloseOthers, tabIdsToCloseToTheRight } from './TabBar/index.js';
|
|
39
41
|
export { Toolbar } from './Toolbar/index.js';
|
|
40
42
|
export { Table, TableBody, TableCell, TableHead, TableHeader, tableCellClass, tableCellClassLoose, tableHeadClass, tableHeadClassLoose } from './Table/index.js';
|
|
41
43
|
export { VariableInput } from './VariableInput/index.js';
|
|
@@ -44,4 +46,4 @@ export { VariableTooltipValue, appendVariableTooltipValueRow, buildVariableToolt
|
|
|
44
46
|
export { VisibilityMenu } from './VisibilityMenu/index.js';
|
|
45
47
|
export { cleanVariables, resolveTabListKeyAction } from './utils.js';
|
|
46
48
|
export { useDialogFocus, getFocusableElements } from './useDialogFocus.js';
|
|
47
|
-
export { segment, segmentGroup } from './classes.js';
|
|
49
|
+
export { segment, segmentGroup, tabItem } from './classes.js';
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Viewport coordinates for a fixed-position menu panel.
|
|
3
|
+
*/
|
|
4
|
+
export interface MenuPosition {
|
|
5
|
+
/** Left edge in viewport pixels. */
|
|
6
|
+
x: number;
|
|
7
|
+
/** Top edge in viewport pixels. */
|
|
8
|
+
y: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Measured menu panel dimensions.
|
|
12
|
+
*/
|
|
13
|
+
export interface MenuSize {
|
|
14
|
+
/** Panel width in pixels. */
|
|
15
|
+
width: number;
|
|
16
|
+
/** Panel height in pixels. */
|
|
17
|
+
height: number;
|
|
18
|
+
}
|
|
19
|
+
/** Minimum gap between a menu panel and the viewport edge. */
|
|
20
|
+
export declare const MENU_VIEWPORT_MARGIN_PX = 8;
|
|
21
|
+
/** Gap between a trigger button and its dropdown panel. */
|
|
22
|
+
export declare const MENU_TRIGGER_OFFSET_PX = 2;
|
|
23
|
+
/** Default minimum menu width used before the panel is measured. */
|
|
24
|
+
export declare const MENU_MIN_WIDTH_PX = 200;
|
|
25
|
+
/**
|
|
26
|
+
* Clamps a menu position so the panel stays fully inside the viewport.
|
|
27
|
+
*
|
|
28
|
+
* @param position - Requested top-left coordinates.
|
|
29
|
+
* @param size - Measured menu width and height.
|
|
30
|
+
*/
|
|
31
|
+
export declare function clampMenuPosition(position: MenuPosition, size: MenuSize): MenuPosition;
|
|
32
|
+
/**
|
|
33
|
+
* Computes menu coordinates anchored below and right-aligned to a trigger button.
|
|
34
|
+
*
|
|
35
|
+
* @param triggerRect - Trigger bounding rect in viewport coordinates.
|
|
36
|
+
* @param menuSize - Measured or estimated menu dimensions.
|
|
37
|
+
*/
|
|
38
|
+
export declare function getTriggerAnchoredMenuPosition(triggerRect: DOMRect, menuSize: MenuSize): MenuPosition;
|
|
39
|
+
/**
|
|
40
|
+
* Computes flyout coordinates anchored beside a parent menu row, preferring
|
|
41
|
+
* the right side and flipping to the left when the right side would overflow
|
|
42
|
+
* the viewport.
|
|
43
|
+
*
|
|
44
|
+
* @param anchorRect - Bounding rect of the parent row that owns the flyout.
|
|
45
|
+
* @param menuSize - Measured or estimated flyout dimensions.
|
|
46
|
+
*/
|
|
47
|
+
export declare function getSubmenuAnchoredPosition(anchorRect: DOMRect, menuSize: MenuSize): MenuPosition;
|
|
48
|
+
//# sourceMappingURL=menuPosition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menuPosition.d.ts","sourceRoot":"","sources":["../../src/components/menuPosition.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,CAAC,EAAE,MAAM,CAAC;IAEV,mCAAmC;IACnC,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IAEd,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,8DAA8D;AAC9D,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,2DAA2D;AAC3D,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,oEAAoE;AACpE,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,GAAG,YAAY,CAQtF;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,QAAQ,GACjB,YAAY,CAKd;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAUhG"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/** Minimum gap between a menu panel and the viewport edge. */
|
|
2
|
+
export const MENU_VIEWPORT_MARGIN_PX = 8;
|
|
3
|
+
/** Gap between a trigger button and its dropdown panel. */
|
|
4
|
+
export const MENU_TRIGGER_OFFSET_PX = 2;
|
|
5
|
+
/** Default minimum menu width used before the panel is measured. */
|
|
6
|
+
export const MENU_MIN_WIDTH_PX = 200;
|
|
7
|
+
/**
|
|
8
|
+
* Clamps a menu position so the panel stays fully inside the viewport.
|
|
9
|
+
*
|
|
10
|
+
* @param position - Requested top-left coordinates.
|
|
11
|
+
* @param size - Measured menu width and height.
|
|
12
|
+
*/
|
|
13
|
+
export function clampMenuPosition(position, size) {
|
|
14
|
+
const margin = MENU_VIEWPORT_MARGIN_PX;
|
|
15
|
+
const maxX = Math.max(margin, window.innerWidth - size.width - margin);
|
|
16
|
+
const maxY = Math.max(margin, window.innerHeight - size.height - margin);
|
|
17
|
+
return {
|
|
18
|
+
x: Math.min(Math.max(position.x, margin), maxX),
|
|
19
|
+
y: Math.min(Math.max(position.y, margin), maxY)
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Computes menu coordinates anchored below and right-aligned to a trigger button.
|
|
24
|
+
*
|
|
25
|
+
* @param triggerRect - Trigger bounding rect in viewport coordinates.
|
|
26
|
+
* @param menuSize - Measured or estimated menu dimensions.
|
|
27
|
+
*/
|
|
28
|
+
export function getTriggerAnchoredMenuPosition(triggerRect, menuSize) {
|
|
29
|
+
return {
|
|
30
|
+
x: triggerRect.right - menuSize.width,
|
|
31
|
+
y: triggerRect.bottom + MENU_TRIGGER_OFFSET_PX
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Computes flyout coordinates anchored beside a parent menu row, preferring
|
|
36
|
+
* the right side and flipping to the left when the right side would overflow
|
|
37
|
+
* the viewport.
|
|
38
|
+
*
|
|
39
|
+
* @param anchorRect - Bounding rect of the parent row that owns the flyout.
|
|
40
|
+
* @param menuSize - Measured or estimated flyout dimensions.
|
|
41
|
+
*/
|
|
42
|
+
export function getSubmenuAnchoredPosition(anchorRect, menuSize) {
|
|
43
|
+
const fitsOnRight = anchorRect.right + MENU_TRIGGER_OFFSET_PX + menuSize.width + MENU_VIEWPORT_MARGIN_PX <=
|
|
44
|
+
window.innerWidth;
|
|
45
|
+
const x = fitsOnRight
|
|
46
|
+
? anchorRect.right + MENU_TRIGGER_OFFSET_PX
|
|
47
|
+
: anchorRect.left - menuSize.width - MENU_TRIGGER_OFFSET_PX;
|
|
48
|
+
return { x, y: anchorRect.top };
|
|
49
|
+
}
|
|
@@ -1,4 +1,21 @@
|
|
|
1
1
|
import type { MenuItem } from './RowActionsMenu/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Tailwind classes for a single menu item button, shared by the main
|
|
4
|
+
* `RowActionsMenu` panel and its flyout `Submenu` panels.
|
|
5
|
+
*/
|
|
6
|
+
export declare function menuItemClass(variant: MenuItem['variant'], disabled?: boolean): string;
|
|
7
|
+
/**
|
|
8
|
+
* Returns whether a menu item can receive focus or activate an action.
|
|
9
|
+
*/
|
|
10
|
+
export declare function isMenuItemEnabled(item: MenuItem): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Finds the next enabled flat item index in the requested direction.
|
|
13
|
+
*/
|
|
14
|
+
export declare function findAdjacentEnabledIndex(items: MenuItem[], fromIndex: number, direction: -1 | 1): number | null;
|
|
15
|
+
/**
|
|
16
|
+
* Returns the first or last enabled flat item index.
|
|
17
|
+
*/
|
|
18
|
+
export declare function findEdgeEnabledIndex(items: MenuItem[], fromEnd: boolean): number | null;
|
|
2
19
|
/**
|
|
3
20
|
* Builds an optional reorder group for move-up/move-down row actions.
|
|
4
21
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rowActionsMenuHelpers.d.ts","sourceRoot":"","sources":["../../src/components/rowActionsMenuHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,GACzC,QAAQ,EAAE,EAAE,CAsBd"}
|
|
1
|
+
{"version":3,"file":"rowActionsMenuHelpers.d.ts","sourceRoot":"","sources":["../../src/components/rowActionsMenuHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAatF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,QAAQ,EAAE,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAChB,MAAM,GAAG,IAAI,CAWf;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAWvF;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,GACzC,QAAQ,EAAE,EAAE,CAsBd"}
|