@salt-ds/core 1.59.1 → 1.61.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/CHANGELOG.md +64 -0
- package/css/salt-core.css +366 -1
- package/dist-cjs/aria-announcer/AriaAnnounce.js +15 -3
- package/dist-cjs/aria-announcer/AriaAnnounce.js.map +1 -1
- package/dist-cjs/aria-announcer/AriaAnnouncerContext.js.map +1 -1
- package/dist-cjs/aria-announcer/AriaAnnouncerProvider.js +65 -43
- package/dist-cjs/aria-announcer/AriaAnnouncerProvider.js.map +1 -1
- package/dist-cjs/aria-announcer/announcementRegistry.js +31 -0
- package/dist-cjs/aria-announcer/announcementRegistry.js.map +1 -0
- package/dist-cjs/aria-announcer/useAriaAnnouncer.js +44 -16
- package/dist-cjs/aria-announcer/useAriaAnnouncer.js.map +1 -1
- package/dist-cjs/index.js +17 -1
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/navigation-item/NavigationItem.js +2 -0
- package/dist-cjs/navigation-item/NavigationItem.js.map +1 -1
- package/dist-cjs/pagination/Pagination.js +1 -0
- package/dist-cjs/pagination/Pagination.js.map +1 -1
- package/dist-cjs/rating/Rating.css.js +6 -0
- package/dist-cjs/rating/Rating.css.js.map +1 -0
- package/dist-cjs/rating/Rating.js +140 -0
- package/dist-cjs/rating/Rating.js.map +1 -0
- package/dist-cjs/rating/RatingItem.css.js +6 -0
- package/dist-cjs/rating/RatingItem.css.js.map +1 -0
- package/dist-cjs/rating/RatingItem.js +75 -0
- package/dist-cjs/rating/RatingItem.js.map +1 -0
- package/dist-cjs/salt-provider/SaltProvider.js +3 -1
- package/dist-cjs/salt-provider/SaltProvider.js.map +1 -1
- package/dist-cjs/semantic-icon-provider/SemanticIconProvider.js +22 -20
- package/dist-cjs/semantic-icon-provider/SemanticIconProvider.js.map +1 -1
- package/dist-cjs/spinner/Spinner.js +1 -0
- package/dist-cjs/spinner/Spinner.js.map +1 -1
- package/dist-cjs/tabs/Tab.css.js +6 -0
- package/dist-cjs/tabs/Tab.css.js.map +1 -0
- package/dist-cjs/tabs/Tab.js +211 -0
- package/dist-cjs/tabs/Tab.js.map +1 -0
- package/dist-cjs/tabs/TabAction.js +63 -0
- package/dist-cjs/tabs/TabAction.js.map +1 -0
- package/dist-cjs/tabs/TabBar.css.js +6 -0
- package/dist-cjs/tabs/TabBar.css.js.map +1 -0
- package/dist-cjs/tabs/TabBar.js +45 -0
- package/dist-cjs/tabs/TabBar.js.map +1 -0
- package/dist-cjs/tabs/TabList.css.js +6 -0
- package/dist-cjs/tabs/TabList.css.js.map +1 -0
- package/dist-cjs/tabs/TabList.js +281 -0
- package/dist-cjs/tabs/TabList.js.map +1 -0
- package/dist-cjs/tabs/TabPanel.css.js +6 -0
- package/dist-cjs/tabs/TabPanel.css.js.map +1 -0
- package/dist-cjs/tabs/TabPanel.js +98 -0
- package/dist-cjs/tabs/TabPanel.js.map +1 -0
- package/dist-cjs/tabs/TabTrigger.css.js +6 -0
- package/dist-cjs/tabs/TabTrigger.css.js.map +1 -0
- package/dist-cjs/tabs/TabTrigger.js +188 -0
- package/dist-cjs/tabs/TabTrigger.js.map +1 -0
- package/dist-cjs/tabs/Tabs.css.js +6 -0
- package/dist-cjs/tabs/Tabs.css.js.map +1 -0
- package/dist-cjs/tabs/Tabs.js +200 -0
- package/dist-cjs/tabs/Tabs.js.map +1 -0
- package/dist-cjs/tabs/internal/contexts/TabContext.js +26 -0
- package/dist-cjs/tabs/internal/contexts/TabContext.js.map +1 -0
- package/dist-cjs/tabs/internal/contexts/TabListLayoutContext.js +19 -0
- package/dist-cjs/tabs/internal/contexts/TabListLayoutContext.js.map +1 -0
- package/dist-cjs/tabs/internal/contexts/TabSlotRegistryContext.js +22 -0
- package/dist-cjs/tabs/internal/contexts/TabSlotRegistryContext.js.map +1 -0
- package/dist-cjs/tabs/internal/contexts/TabsContext.js +50 -0
- package/dist-cjs/tabs/internal/contexts/TabsContext.js.map +1 -0
- package/dist-cjs/tabs/internal/hooks/useFocusWithRetry.js +64 -0
- package/dist-cjs/tabs/internal/hooks/useFocusWithRetry.js.map +1 -0
- package/dist-cjs/tabs/internal/hooks/useTabListRecovery.js +76 -0
- package/dist-cjs/tabs/internal/hooks/useTabListRecovery.js.map +1 -0
- package/dist-cjs/tabs/internal/hooks/useTabRemovalHandler.js +165 -0
- package/dist-cjs/tabs/internal/hooks/useTabRemovalHandler.js.map +1 -0
- package/dist-cjs/tabs/internal/hooks/useTabSelectionFocus.js +87 -0
- package/dist-cjs/tabs/internal/hooks/useTabSelectionFocus.js.map +1 -0
- package/dist-cjs/tabs/internal/overflow/TabOverflowList.css.js +6 -0
- package/dist-cjs/tabs/internal/overflow/TabOverflowList.css.js.map +1 -0
- package/dist-cjs/tabs/internal/overflow/TabOverflowList.js +245 -0
- package/dist-cjs/tabs/internal/overflow/TabOverflowList.js.map +1 -0
- package/dist-cjs/tabs/internal/overflow/TabSlot.js +30 -0
- package/dist-cjs/tabs/internal/overflow/TabSlot.js.map +1 -0
- package/dist-cjs/tabs/internal/overflow/overflowMath.js +86 -0
- package/dist-cjs/tabs/internal/overflow/overflowMath.js.map +1 -0
- package/dist-cjs/tabs/internal/overflow/useOverflow.js +273 -0
- package/dist-cjs/tabs/internal/overflow/useOverflow.js.map +1 -0
- package/dist-cjs/tabs/internal/overflow/useOverflowLayoutState.js +99 -0
- package/dist-cjs/tabs/internal/overflow/useOverflowLayoutState.js.map +1 -0
- package/dist-cjs/tabs/internal/overflow/useOverflowSelectionState.js +68 -0
- package/dist-cjs/tabs/internal/overflow/useOverflowSelectionState.js.map +1 -0
- package/dist-cjs/tabs/internal/overflow/useRenderedTabWidth.js +92 -0
- package/dist-cjs/tabs/internal/overflow/useRenderedTabWidth.js.map +1 -0
- package/dist-cjs/tabs/internal/overflow/widthMeasurement.js +42 -0
- package/dist-cjs/tabs/internal/overflow/widthMeasurement.js.map +1 -0
- package/dist-cjs/tabs/internal/registry/useCollection.js +197 -0
- package/dist-cjs/tabs/internal/registry/useCollection.js.map +1 -0
- package/dist-cjs/tabs/internal/registry/useRenderedTabsRegistry.js +206 -0
- package/dist-cjs/tabs/internal/registry/useRenderedTabsRegistry.js.map +1 -0
- package/dist-cjs/tabs/internal/utils/domUtils.js +13 -0
- package/dist-cjs/tabs/internal/utils/domUtils.js.map +1 -0
- package/dist-cjs/tooltip/useAriaAnnounce.js +1 -0
- package/dist-cjs/tooltip/useAriaAnnounce.js.map +1 -1
- package/dist-es/aria-announcer/AriaAnnounce.js +15 -3
- package/dist-es/aria-announcer/AriaAnnounce.js.map +1 -1
- package/dist-es/aria-announcer/AriaAnnouncerContext.js.map +1 -1
- package/dist-es/aria-announcer/AriaAnnouncerProvider.js +67 -45
- package/dist-es/aria-announcer/AriaAnnouncerProvider.js.map +1 -1
- package/dist-es/aria-announcer/announcementRegistry.js +28 -0
- package/dist-es/aria-announcer/announcementRegistry.js.map +1 -0
- package/dist-es/aria-announcer/useAriaAnnouncer.js +45 -17
- package/dist-es/aria-announcer/useAriaAnnouncer.js.map +1 -1
- package/dist-es/index.js +9 -1
- package/dist-es/index.js.map +1 -1
- package/dist-es/navigation-item/NavigationItem.js +2 -0
- package/dist-es/navigation-item/NavigationItem.js.map +1 -1
- package/dist-es/pagination/Pagination.js +1 -0
- package/dist-es/pagination/Pagination.js.map +1 -1
- package/dist-es/rating/Rating.css.js +4 -0
- package/dist-es/rating/Rating.css.js.map +1 -0
- package/dist-es/rating/Rating.js +138 -0
- package/dist-es/rating/Rating.js.map +1 -0
- package/dist-es/rating/RatingItem.css.js +4 -0
- package/dist-es/rating/RatingItem.css.js.map +1 -0
- package/dist-es/rating/RatingItem.js +73 -0
- package/dist-es/rating/RatingItem.js.map +1 -0
- package/dist-es/salt-provider/SaltProvider.js +3 -1
- package/dist-es/salt-provider/SaltProvider.js.map +1 -1
- package/dist-es/semantic-icon-provider/SemanticIconProvider.js +23 -21
- package/dist-es/semantic-icon-provider/SemanticIconProvider.js.map +1 -1
- package/dist-es/spinner/Spinner.js +1 -0
- package/dist-es/spinner/Spinner.js.map +1 -1
- package/dist-es/tabs/Tab.css.js +4 -0
- package/dist-es/tabs/Tab.css.js.map +1 -0
- package/dist-es/tabs/Tab.js +209 -0
- package/dist-es/tabs/Tab.js.map +1 -0
- package/dist-es/tabs/TabAction.js +61 -0
- package/dist-es/tabs/TabAction.js.map +1 -0
- package/dist-es/tabs/TabBar.css.js +4 -0
- package/dist-es/tabs/TabBar.css.js.map +1 -0
- package/dist-es/tabs/TabBar.js +43 -0
- package/dist-es/tabs/TabBar.js.map +1 -0
- package/dist-es/tabs/TabList.css.js +4 -0
- package/dist-es/tabs/TabList.css.js.map +1 -0
- package/dist-es/tabs/TabList.js +279 -0
- package/dist-es/tabs/TabList.js.map +1 -0
- package/dist-es/tabs/TabPanel.css.js +4 -0
- package/dist-es/tabs/TabPanel.css.js.map +1 -0
- package/dist-es/tabs/TabPanel.js +96 -0
- package/dist-es/tabs/TabPanel.js.map +1 -0
- package/dist-es/tabs/TabTrigger.css.js +4 -0
- package/dist-es/tabs/TabTrigger.css.js.map +1 -0
- package/dist-es/tabs/TabTrigger.js +186 -0
- package/dist-es/tabs/TabTrigger.js.map +1 -0
- package/dist-es/tabs/Tabs.css.js +4 -0
- package/dist-es/tabs/Tabs.css.js.map +1 -0
- package/dist-es/tabs/Tabs.js +198 -0
- package/dist-es/tabs/Tabs.js.map +1 -0
- package/dist-es/tabs/internal/contexts/TabContext.js +23 -0
- package/dist-es/tabs/internal/contexts/TabContext.js.map +1 -0
- package/dist-es/tabs/internal/contexts/TabListLayoutContext.js +16 -0
- package/dist-es/tabs/internal/contexts/TabListLayoutContext.js.map +1 -0
- package/dist-es/tabs/internal/contexts/TabSlotRegistryContext.js +19 -0
- package/dist-es/tabs/internal/contexts/TabSlotRegistryContext.js.map +1 -0
- package/dist-es/tabs/internal/contexts/TabsContext.js +47 -0
- package/dist-es/tabs/internal/contexts/TabsContext.js.map +1 -0
- package/dist-es/tabs/internal/hooks/useFocusWithRetry.js +62 -0
- package/dist-es/tabs/internal/hooks/useFocusWithRetry.js.map +1 -0
- package/dist-es/tabs/internal/hooks/useTabListRecovery.js +74 -0
- package/dist-es/tabs/internal/hooks/useTabListRecovery.js.map +1 -0
- package/dist-es/tabs/internal/hooks/useTabRemovalHandler.js +163 -0
- package/dist-es/tabs/internal/hooks/useTabRemovalHandler.js.map +1 -0
- package/dist-es/tabs/internal/hooks/useTabSelectionFocus.js +85 -0
- package/dist-es/tabs/internal/hooks/useTabSelectionFocus.js.map +1 -0
- package/dist-es/tabs/internal/overflow/TabOverflowList.css.js +4 -0
- package/dist-es/tabs/internal/overflow/TabOverflowList.css.js.map +1 -0
- package/dist-es/tabs/internal/overflow/TabOverflowList.js +243 -0
- package/dist-es/tabs/internal/overflow/TabOverflowList.js.map +1 -0
- package/dist-es/tabs/internal/overflow/TabSlot.js +28 -0
- package/dist-es/tabs/internal/overflow/TabSlot.js.map +1 -0
- package/dist-es/tabs/internal/overflow/overflowMath.js +82 -0
- package/dist-es/tabs/internal/overflow/overflowMath.js.map +1 -0
- package/dist-es/tabs/internal/overflow/useOverflow.js +271 -0
- package/dist-es/tabs/internal/overflow/useOverflow.js.map +1 -0
- package/dist-es/tabs/internal/overflow/useOverflowLayoutState.js +97 -0
- package/dist-es/tabs/internal/overflow/useOverflowLayoutState.js.map +1 -0
- package/dist-es/tabs/internal/overflow/useOverflowSelectionState.js +66 -0
- package/dist-es/tabs/internal/overflow/useOverflowSelectionState.js.map +1 -0
- package/dist-es/tabs/internal/overflow/useRenderedTabWidth.js +90 -0
- package/dist-es/tabs/internal/overflow/useRenderedTabWidth.js.map +1 -0
- package/dist-es/tabs/internal/overflow/widthMeasurement.js +36 -0
- package/dist-es/tabs/internal/overflow/widthMeasurement.js.map +1 -0
- package/dist-es/tabs/internal/registry/useCollection.js +195 -0
- package/dist-es/tabs/internal/registry/useCollection.js.map +1 -0
- package/dist-es/tabs/internal/registry/useRenderedTabsRegistry.js +204 -0
- package/dist-es/tabs/internal/registry/useRenderedTabsRegistry.js.map +1 -0
- package/dist-es/tabs/internal/utils/domUtils.js +11 -0
- package/dist-es/tabs/internal/utils/domUtils.js.map +1 -0
- package/dist-es/tooltip/useAriaAnnounce.js +1 -0
- package/dist-es/tooltip/useAriaAnnounce.js.map +1 -1
- package/dist-types/aria-announcer/AriaAnnounce.d.ts +9 -2
- package/dist-types/aria-announcer/AriaAnnouncerContext.d.ts +26 -2
- package/dist-types/aria-announcer/AriaAnnouncerProvider.d.ts +6 -7
- package/dist-types/aria-announcer/announcementRegistry.d.ts +5 -0
- package/dist-types/index.d.ts +2 -0
- package/dist-types/rating/Rating.d.ts +48 -0
- package/dist-types/rating/RatingItem.d.ts +47 -0
- package/dist-types/rating/index.d.ts +1 -0
- package/dist-types/semantic-icon-provider/SemanticIconProvider.d.ts +21 -19
- package/dist-types/tabs/Tab.d.ts +12 -0
- package/dist-types/tabs/TabAction.d.ts +4 -0
- package/dist-types/tabs/TabBar.d.ts +12 -0
- package/dist-types/tabs/TabList.d.ts +12 -0
- package/dist-types/tabs/TabPanel.d.ts +9 -0
- package/dist-types/tabs/TabTrigger.d.ts +4 -0
- package/dist-types/tabs/Tabs.d.ts +20 -0
- package/dist-types/tabs/index.d.ts +7 -0
- package/dist-types/tabs/internal/contexts/TabContext.d.ts +12 -0
- package/dist-types/tabs/internal/contexts/TabListLayoutContext.d.ts +9 -0
- package/dist-types/tabs/internal/contexts/TabSlotRegistryContext.d.ts +5 -0
- package/dist-types/tabs/internal/contexts/TabsContext.d.ts +43 -0
- package/dist-types/tabs/internal/hooks/useFocusWithRetry.d.ts +9 -0
- package/dist-types/tabs/internal/hooks/useTabListRecovery.d.ts +12 -0
- package/dist-types/tabs/internal/hooks/useTabRemovalHandler.d.ts +32 -0
- package/dist-types/tabs/internal/hooks/useTabSelectionFocus.d.ts +15 -0
- package/dist-types/tabs/internal/overflow/TabOverflowList.d.ts +10 -0
- package/dist-types/tabs/internal/overflow/TabSlot.d.ts +6 -0
- package/dist-types/tabs/internal/overflow/overflowMath.d.ts +18 -0
- package/dist-types/tabs/internal/overflow/useOverflow.d.ts +11 -0
- package/dist-types/tabs/internal/overflow/useOverflowLayoutState.d.ts +13 -0
- package/dist-types/tabs/internal/overflow/useOverflowSelectionState.d.ts +13 -0
- package/dist-types/tabs/internal/overflow/useRenderedTabWidth.d.ts +12 -0
- package/dist-types/tabs/internal/overflow/widthMeasurement.d.ts +5 -0
- package/dist-types/tabs/internal/registry/useCollection.d.ts +30 -0
- package/dist-types/tabs/internal/registry/useRenderedTabsRegistry.d.ts +12 -0
- package/dist-types/tabs/internal/utils/domUtils.d.ts +1 -0
- package/package.json +3 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export interface TabSlotRegistryContextValue {
|
|
2
|
+
registerSlot: (slotId: string, element: HTMLDivElement | null) => void;
|
|
3
|
+
}
|
|
4
|
+
export declare const TabSlotRegistryContext: import("react").Context<TabSlotRegistryContextValue | null>;
|
|
5
|
+
export declare function useTabSlotRegistry(): TabSlotRegistryContextValue | null;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type Dispatch, type MutableRefObject, type SetStateAction, type SyntheticEvent } from "react";
|
|
2
|
+
import type { useCollection } from "../registry/useCollection";
|
|
3
|
+
export interface Item {
|
|
4
|
+
id: string;
|
|
5
|
+
value: string;
|
|
6
|
+
element: HTMLElement | null;
|
|
7
|
+
location?: "hidden" | "main" | "overflow";
|
|
8
|
+
order?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface RenderedTab {
|
|
11
|
+
host: HTMLDivElement;
|
|
12
|
+
id: string;
|
|
13
|
+
marker: HTMLElement | null;
|
|
14
|
+
root: HTMLElement | null;
|
|
15
|
+
trigger: HTMLButtonElement | null;
|
|
16
|
+
value: string;
|
|
17
|
+
width: number;
|
|
18
|
+
}
|
|
19
|
+
export type TabsRenderMode = "inline" | "portal";
|
|
20
|
+
export interface TabsContextValue extends Omit<ReturnType<typeof useCollection>, "registerItem" | "updateItem"> {
|
|
21
|
+
renderMode: TabsRenderMode;
|
|
22
|
+
registerBootstrapTab: (value: string) => () => void;
|
|
23
|
+
setBootstrapTabReady: (value: string, ready: boolean) => void;
|
|
24
|
+
setBootstrapOverflowReady: (ready: boolean) => void;
|
|
25
|
+
registerTab: (item: Item) => () => void;
|
|
26
|
+
updateTab: (id: string, updates: Partial<Omit<Item, "id" | "value">>) => void;
|
|
27
|
+
registerRenderedTab: (tab: RenderedTab) => () => void;
|
|
28
|
+
updateRenderedTab: (value: string, updates: Partial<Omit<RenderedTab, "value">>) => void;
|
|
29
|
+
getRenderedTab: (value: string) => RenderedTab | undefined;
|
|
30
|
+
getRenderedTabOrder: (value: string) => number;
|
|
31
|
+
renderedTabs: RenderedTab[];
|
|
32
|
+
registerPanel: (id: string, value: string) => () => void;
|
|
33
|
+
getPanelId: (value: string) => string | undefined;
|
|
34
|
+
getTabId: (value: string) => string | undefined;
|
|
35
|
+
selected?: string;
|
|
36
|
+
setSelected: (event: SyntheticEvent | null, value: string, source?: "main" | "overflow") => void;
|
|
37
|
+
activeTab: MutableRefObject<Pick<Item, "id" | "value"> | undefined>;
|
|
38
|
+
selectionFromOverflowValueRef: MutableRefObject<string | null>;
|
|
39
|
+
menuOpen: boolean;
|
|
40
|
+
setMenuOpen: Dispatch<SetStateAction<boolean>>;
|
|
41
|
+
}
|
|
42
|
+
export declare const TabsContext: import("react").Context<TabsContextValue>;
|
|
43
|
+
export declare function useTabs(): TabsContextValue;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface UseFocusWithRetryArgs {
|
|
2
|
+
maxAttempts?: number;
|
|
3
|
+
targetWindow: Window | null | undefined;
|
|
4
|
+
}
|
|
5
|
+
export declare function useFocusWithRetry({ maxAttempts, targetWindow, }: UseFocusWithRetryArgs): {
|
|
6
|
+
cancelScheduledFocus: () => void;
|
|
7
|
+
focusElementWithRetry: (getElement: () => HTMLElement | null | undefined) => void;
|
|
8
|
+
};
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type MutableRefObject, type RefObject } from "react";
|
|
2
|
+
interface UseTabListRecoveryArgs {
|
|
3
|
+
removalVersion: number;
|
|
4
|
+
targetWindow: Window | null | undefined;
|
|
5
|
+
tabstripRef: RefObject<HTMLDivElement | null>;
|
|
6
|
+
overflowListRef: RefObject<HTMLDivElement | null>;
|
|
7
|
+
handleTabRemoval: () => void;
|
|
8
|
+
pendingRemovalRecoveryRef: MutableRefObject<boolean>;
|
|
9
|
+
pendingRemovalRecoveryRetriesRef: MutableRefObject<number>;
|
|
10
|
+
}
|
|
11
|
+
export declare function useTabListRecovery({ removalVersion, targetWindow, tabstripRef, overflowListRef, handleTabRemoval, pendingRemovalRecoveryRef, pendingRemovalRecoveryRetriesRef, }: UseTabListRecoveryArgs): void;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type MutableRefObject, type RefObject } from "react";
|
|
2
|
+
import type { Item, TabsContextValue } from "../contexts/TabsContext";
|
|
3
|
+
interface RemovedItem {
|
|
4
|
+
id: string;
|
|
5
|
+
value: string;
|
|
6
|
+
staleIndex?: number;
|
|
7
|
+
}
|
|
8
|
+
interface UseTabRemovalHandlerArgs {
|
|
9
|
+
activeTab: MutableRefObject<Pick<Item, "id" | "value"> | undefined>;
|
|
10
|
+
focusElementWithRetry: (getElement: () => HTMLElement | null | undefined) => void;
|
|
11
|
+
getFirst: TabsContextValue["getFirst"];
|
|
12
|
+
getIndex: TabsContextValue["getIndex"];
|
|
13
|
+
getLast: TabsContextValue["getLast"];
|
|
14
|
+
getRemovedItems: () => Map<string, RemovedItem>;
|
|
15
|
+
getRenderedTab: TabsContextValue["getRenderedTab"];
|
|
16
|
+
getSelectedTabElement: () => HTMLElement | null | undefined;
|
|
17
|
+
item: TabsContextValue["item"];
|
|
18
|
+
itemAt: TabsContextValue["itemAt"];
|
|
19
|
+
maxRetryAttempts: number;
|
|
20
|
+
menuOpen: boolean;
|
|
21
|
+
overflowButtonRef: RefObject<HTMLButtonElement | null>;
|
|
22
|
+
overflowListRef: RefObject<HTMLDivElement | null>;
|
|
23
|
+
pendingRemovalRecoveryRef: MutableRefObject<boolean>;
|
|
24
|
+
pendingRemovalRecoveryRetriesRef: MutableRefObject<number>;
|
|
25
|
+
removalRecoveryRafRef: MutableRefObject<number | null>;
|
|
26
|
+
selected?: string;
|
|
27
|
+
setSelected: TabsContextValue["setSelected"];
|
|
28
|
+
tabstripRef: RefObject<HTMLDivElement | null>;
|
|
29
|
+
targetWindow: Window | null | undefined;
|
|
30
|
+
}
|
|
31
|
+
export declare function useTabRemovalHandler({ activeTab, focusElementWithRetry, getFirst, getIndex, getLast, getRemovedItems, getRenderedTab, getSelectedTabElement, item, itemAt, maxRetryAttempts, menuOpen, overflowButtonRef, overflowListRef, pendingRemovalRecoveryRef, pendingRemovalRecoveryRetriesRef, removalRecoveryRafRef, selected, setSelected, tabstripRef, targetWindow, }: UseTabRemovalHandlerArgs): () => void;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { MutableRefObject } from "react";
|
|
2
|
+
import type { TabsContextValue } from "../contexts/TabsContext";
|
|
3
|
+
interface UseTabSelectionFocusArgs {
|
|
4
|
+
announce: (message: string, timeout?: number) => void;
|
|
5
|
+
focusElementWithRetry: (getElement: () => HTMLElement | null | undefined) => void;
|
|
6
|
+
getRenderedTab: TabsContextValue["getRenderedTab"];
|
|
7
|
+
getSelectedTabElement: () => HTMLElement | null | undefined;
|
|
8
|
+
menuOpen: boolean;
|
|
9
|
+
resolvedOverflowActiveValue: string | null;
|
|
10
|
+
selected?: string;
|
|
11
|
+
selectionFromOverflowValueRef: MutableRefObject<string | null>;
|
|
12
|
+
targetWindow: Window | null | undefined;
|
|
13
|
+
}
|
|
14
|
+
export declare function useTabSelectionFocus({ announce, focusElementWithRetry, getRenderedTab, getSelectedTabElement, menuOpen, resolvedOverflowActiveValue, selected, selectionFromOverflowValueRef, targetWindow, }: UseTabSelectionFocusArgs): void;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ComponentPropsWithoutRef, type Dispatch, type Ref, type SetStateAction } from "react";
|
|
2
|
+
interface TabOverflowListProps extends ComponentPropsWithoutRef<"button"> {
|
|
3
|
+
buttonRef?: Ref<HTMLButtonElement>;
|
|
4
|
+
hiddenValues: string[];
|
|
5
|
+
open: boolean;
|
|
6
|
+
setOpen: Dispatch<SetStateAction<boolean>>;
|
|
7
|
+
order: number;
|
|
8
|
+
}
|
|
9
|
+
export declare const TabOverflowList: import("react").ForwardRefExoticComponent<TabOverflowListProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type ComponentPropsWithoutRef } from "react";
|
|
2
|
+
export interface TabSlotProps extends ComponentPropsWithoutRef<"div"> {
|
|
3
|
+
slotId: string;
|
|
4
|
+
value: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function TabSlot({ slotId, value, ...rest }: TabSlotProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const MIN_TRUSTED_TAB_WIDTH = 0.5;
|
|
2
|
+
export interface MeasuredOverflowTab {
|
|
3
|
+
value: string;
|
|
4
|
+
width: number | null;
|
|
5
|
+
}
|
|
6
|
+
interface CalculateVisibleCountProps {
|
|
7
|
+
gap: number;
|
|
8
|
+
maxWidth: number;
|
|
9
|
+
overflowWidth: number;
|
|
10
|
+
pinnedValue?: string;
|
|
11
|
+
tabs: MeasuredOverflowTab[];
|
|
12
|
+
}
|
|
13
|
+
export declare function calculateVisibleCount({ gap, maxWidth: initialMaxWidth, overflowWidth, pinnedValue, tabs, }: CalculateVisibleCountProps): number | null;
|
|
14
|
+
export declare function partitionVisibleValues(orderedValues: string[], visibleCount: number, pinnedValue?: string): {
|
|
15
|
+
visibleValues: string[];
|
|
16
|
+
hiddenValues: string[];
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type RefObject } from "react";
|
|
2
|
+
import type { RenderedTab } from "../contexts/TabsContext";
|
|
3
|
+
interface UseOverflowProps {
|
|
4
|
+
container: RefObject<HTMLElement>;
|
|
5
|
+
selected?: string;
|
|
6
|
+
tabs: RenderedTab[];
|
|
7
|
+
overflowButton: RefObject<HTMLButtonElement>;
|
|
8
|
+
menuOpen: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function useOverflow({ container, overflowButton, tabs, selected, menuOpen, }: UseOverflowProps): readonly [string[], string[], boolean];
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { TabListLayoutContextValue } from "../contexts/TabListLayoutContext";
|
|
2
|
+
interface UseOverflowLayoutStateArgs {
|
|
3
|
+
hiddenValues: string[];
|
|
4
|
+
menuOpen: boolean;
|
|
5
|
+
overflowMenuOpen: boolean;
|
|
6
|
+
visibleValues: string[];
|
|
7
|
+
}
|
|
8
|
+
interface UseOverflowLayoutStateResult {
|
|
9
|
+
resolvedOverflowActiveValue: string | null;
|
|
10
|
+
tabListLayoutContext: TabListLayoutContextValue;
|
|
11
|
+
}
|
|
12
|
+
export declare function useOverflowLayoutState({ hiddenValues, menuOpen, overflowMenuOpen, visibleValues, }: UseOverflowLayoutStateArgs): UseOverflowLayoutStateResult;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Dispatch, type MutableRefObject, type SetStateAction, type SyntheticEvent } from "react";
|
|
2
|
+
interface UseOverflowSelectionStateArgs {
|
|
3
|
+
commitSelection: (event: SyntheticEvent | null, value: string) => void;
|
|
4
|
+
menuOpen: boolean;
|
|
5
|
+
selected?: string;
|
|
6
|
+
setMenuOpen: Dispatch<SetStateAction<boolean>>;
|
|
7
|
+
}
|
|
8
|
+
interface UseOverflowSelectionStateResult {
|
|
9
|
+
selectionFromOverflowValueRef: MutableRefObject<string | null>;
|
|
10
|
+
setSelected: (event: SyntheticEvent | null, value: string, source?: "main" | "overflow") => void;
|
|
11
|
+
}
|
|
12
|
+
export declare function useOverflowSelectionState({ commitSelection, menuOpen, selected, setMenuOpen, }: UseOverflowSelectionStateArgs): UseOverflowSelectionStateResult;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type RefObject } from "react";
|
|
2
|
+
import type { TabsContextValue, TabsRenderMode } from "../contexts/TabsContext";
|
|
3
|
+
interface UseRenderedTabWidthProps {
|
|
4
|
+
hostElement: HTMLDivElement | null;
|
|
5
|
+
renderMode: TabsRenderMode;
|
|
6
|
+
tabRootRef: RefObject<HTMLDivElement>;
|
|
7
|
+
targetWindow: Window | null | undefined;
|
|
8
|
+
updateRenderedTab: TabsContextValue["updateRenderedTab"];
|
|
9
|
+
value: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function useRenderedTabWidth({ hostElement, renderMode, tabRootRef, targetWindow, updateRenderedTab, value, }: UseRenderedTabWidthProps): void;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function getMeasuredWidth(element: HTMLElement | null | undefined): number;
|
|
2
|
+
export declare function getIntrinsicMeasuredWidth(element: HTMLElement | null | undefined): number;
|
|
3
|
+
export declare function getGapValue(styles: CSSStyleDeclaration): number;
|
|
4
|
+
export declare function seedWidthMap(elements: HTMLElement[]): Map<HTMLElement, number>;
|
|
5
|
+
export declare function updateWidthMap(widths: Map<HTMLElement, number>, element: HTMLElement, nextWidth: number, epsilon?: number): boolean;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface Item {
|
|
2
|
+
id: string;
|
|
3
|
+
element?: HTMLElement | null;
|
|
4
|
+
value: string;
|
|
5
|
+
location?: "hidden" | "main" | "overflow";
|
|
6
|
+
order?: number;
|
|
7
|
+
stale?: boolean;
|
|
8
|
+
}
|
|
9
|
+
interface StaleItem extends Item {
|
|
10
|
+
staleIndex?: number;
|
|
11
|
+
}
|
|
12
|
+
interface UseCollectionProps {
|
|
13
|
+
targetWindow: Window | null | undefined;
|
|
14
|
+
wrap: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare function useCollection({ wrap, targetWindow }: UseCollectionProps): {
|
|
17
|
+
registerItem: (item: Item) => () => void;
|
|
18
|
+
item: (id?: string | null) => Item | null;
|
|
19
|
+
getNext: (current: string) => Item | null;
|
|
20
|
+
getPrevious: (current: string) => Item | null;
|
|
21
|
+
getFirst: () => Item | null;
|
|
22
|
+
getLast: () => Item | null;
|
|
23
|
+
getIndex: (current: string) => number;
|
|
24
|
+
itemAt: (index: number) => Item | null;
|
|
25
|
+
updateItem: (id: string, updates: Partial<Omit<Item, "id" | "value">>) => void;
|
|
26
|
+
getRemovedItems: () => Map<string, StaleItem>;
|
|
27
|
+
removalVersion: number;
|
|
28
|
+
sortItems: () => void;
|
|
29
|
+
};
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RenderedTab, TabsRenderMode } from "../contexts/TabsContext";
|
|
2
|
+
export declare function useRenderedTabsRegistry(): {
|
|
3
|
+
renderMode: TabsRenderMode;
|
|
4
|
+
registerBootstrapTab: (tabValue: string) => () => void;
|
|
5
|
+
setBootstrapTabReady: (tabValue: string, ready: boolean) => void;
|
|
6
|
+
setBootstrapOverflowReady: (ready: boolean) => void;
|
|
7
|
+
registerRenderedTab: (tab: RenderedTab) => () => void;
|
|
8
|
+
updateRenderedTab: (value: string, updates: Partial<Omit<RenderedTab, "value">>) => void;
|
|
9
|
+
getRenderedTab: (value: string) => RenderedTab | undefined;
|
|
10
|
+
getRenderedTabOrder: (value: string) => number;
|
|
11
|
+
renderedTabs: RenderedTab[];
|
|
12
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isHTMLElement(node: unknown): node is HTMLElement;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salt-ds/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.61.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -22,6 +22,8 @@
|
|
|
22
22
|
"@salt-ds/styles": "0.3.0",
|
|
23
23
|
"@salt-ds/window": "0.1.1",
|
|
24
24
|
"clsx": "^2.0.0",
|
|
25
|
+
"dom-accessibility-api": "^0.7.1",
|
|
26
|
+
"tabbable": "^6.0.0",
|
|
25
27
|
"use-sync-external-store": "^1.5.0"
|
|
26
28
|
},
|
|
27
29
|
"peerDependencies": {
|