@tamagui/tabs-headless 2.7.7 → 3.0.0-beta.643.1
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/cjs/index.cjs +10 -11
- package/dist/cjs/index.native.cjs +21 -0
- package/dist/cjs/index.native.js +10 -10
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/useTabs.cjs +114 -280
- package/dist/cjs/useTabs.native.cjs +150 -0
- package/dist/cjs/useTabs.native.js +124 -292
- package/dist/cjs/useTabs.native.js.map +1 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/index.mjs +1 -2
- package/dist/esm/index.native.js +1 -2
- package/dist/esm/useTabs.mjs +95 -254
- package/dist/esm/useTabs.mjs.map +1 -1
- package/dist/esm/useTabs.native.js +104 -266
- package/dist/esm/useTabs.native.js.map +1 -1
- package/dist/jsx/index.js +1 -2
- package/dist/jsx/index.mjs +1 -2
- package/dist/jsx/index.native.cjs +21 -0
- package/dist/jsx/index.native.js +10 -10
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/useTabs.mjs +95 -254
- package/dist/jsx/useTabs.mjs.map +1 -1
- package/dist/jsx/useTabs.native.cjs +150 -0
- package/dist/jsx/useTabs.native.js +124 -292
- package/dist/jsx/useTabs.native.js.map +1 -1
- package/package.json +5 -5
- package/src/useTabs.tsx +112 -296
- package/types/useTabs.d.ts +54 -75
- package/types/useTabs.d.ts.map +1 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/index.native.js.map +0 -1
- package/dist/jsx/index.js.map +0 -1
- package/dist/jsx/index.mjs.map +0 -1
package/types/useTabs.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ import * as React from 'react';
|
|
|
2
2
|
export type TabsActivationMode = 'automatic' | 'manual';
|
|
3
3
|
export type TabsOrientation = 'horizontal' | 'vertical';
|
|
4
4
|
export type Direction = 'ltr' | 'rtl';
|
|
5
|
+
export declare function makeTriggerId(baseId: string, value: string): string;
|
|
6
|
+
export declare function makeContentId(baseId: string, value: string): string;
|
|
5
7
|
export interface UseTabsProps {
|
|
6
8
|
/** The value for the selected tab, if controlled */
|
|
7
9
|
value?: string;
|
|
@@ -10,120 +12,97 @@ export interface UseTabsProps {
|
|
|
10
12
|
/** A function called when a new tab is selected */
|
|
11
13
|
onValueChange?: (value: string) => void;
|
|
12
14
|
/**
|
|
13
|
-
* The orientation the tabs are
|
|
14
|
-
* Mainly so arrow navigation is done accordingly (left & right vs. up & down)
|
|
15
|
+
* The orientation the tabs are laid out.
|
|
15
16
|
* @defaultValue horizontal
|
|
16
17
|
*/
|
|
17
18
|
orientation?: TabsOrientation;
|
|
18
|
-
/**
|
|
19
|
-
* The direction of navigation between toolbar items.
|
|
20
|
-
*/
|
|
19
|
+
/** The direction of navigation between tab triggers. */
|
|
21
20
|
dir?: Direction;
|
|
22
21
|
/**
|
|
23
|
-
* Whether a tab is activated automatically (on focus) or manually (on
|
|
22
|
+
* Whether a tab is activated automatically (on focus) or manually (on press/enter).
|
|
23
|
+
* Automatic activation is web-only; native always activates manually.
|
|
24
24
|
* @defaultValue automatic
|
|
25
25
|
*/
|
|
26
26
|
activationMode?: TabsActivationMode;
|
|
27
|
-
/**
|
|
28
|
-
* Whether keyboard navigation should loop from last to first and vice versa.
|
|
29
|
-
* @defaultValue true
|
|
30
|
-
*/
|
|
31
|
-
loop?: boolean;
|
|
32
27
|
}
|
|
33
|
-
export
|
|
34
|
-
/** The currently selected tab value */
|
|
28
|
+
export declare function useTabs(props?: UseTabsProps): {
|
|
35
29
|
value: string;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
30
|
+
setValue: import("@tamagui/use-controllable-state").ControllableStateSetter<string, import("@tamagui/web").TamaguiChangeEventDetails>;
|
|
31
|
+
baseId: string;
|
|
32
|
+
direction: "ltr" | "rtl";
|
|
33
|
+
orientation: TabsOrientation;
|
|
34
|
+
activationMode: TabsActivationMode;
|
|
35
|
+
triggersCount: number;
|
|
36
|
+
registerTrigger: () => void;
|
|
37
|
+
unregisterTrigger: () => void;
|
|
41
38
|
tabsProps: {
|
|
42
39
|
'data-orientation': TabsOrientation;
|
|
43
|
-
dir: Direction;
|
|
44
40
|
};
|
|
45
|
-
|
|
41
|
+
};
|
|
42
|
+
export interface UseTabsListProps {
|
|
43
|
+
orientation?: TabsOrientation;
|
|
44
|
+
/** Disables every trigger in the list. */
|
|
45
|
+
disabled?: boolean;
|
|
46
|
+
}
|
|
47
|
+
export declare function useTabsList(props: UseTabsListProps): {
|
|
46
48
|
listProps: {
|
|
47
49
|
role: 'tablist';
|
|
48
50
|
'aria-orientation': TabsOrientation;
|
|
51
|
+
'aria-disabled': true | undefined;
|
|
52
|
+
'data-orientation': TabsOrientation;
|
|
53
|
+
'data-disabled': "" | undefined;
|
|
49
54
|
};
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
export interface TabTriggerProps {
|
|
58
|
-
role: 'tab';
|
|
59
|
-
id: string;
|
|
60
|
-
'aria-selected': boolean;
|
|
61
|
-
'aria-controls': string;
|
|
62
|
-
'data-state': 'active' | 'inactive';
|
|
63
|
-
'data-disabled'?: '';
|
|
64
|
-
disabled?: boolean;
|
|
65
|
-
tabIndex: number;
|
|
66
|
-
onKeyDown: (event: React.KeyboardEvent) => void;
|
|
67
|
-
onClick: (event: React.MouseEvent) => void;
|
|
68
|
-
onFocus: (event: React.FocusEvent) => void;
|
|
69
|
-
}
|
|
70
|
-
export interface TabContentProps {
|
|
71
|
-
role: 'tabpanel';
|
|
72
|
-
id: string;
|
|
73
|
-
'aria-labelledby': string;
|
|
74
|
-
'data-state': 'active' | 'inactive';
|
|
75
|
-
'data-orientation': TabsOrientation;
|
|
76
|
-
hidden: boolean;
|
|
77
|
-
tabIndex: 0;
|
|
78
|
-
}
|
|
79
|
-
export interface TabsContextValue {
|
|
80
|
-
baseId: string;
|
|
81
|
-
value: string;
|
|
82
|
-
setValue: (value: string) => void;
|
|
83
|
-
orientation: TabsOrientation;
|
|
84
|
-
direction: Direction;
|
|
85
|
-
activationMode: TabsActivationMode;
|
|
86
|
-
loop: boolean;
|
|
87
|
-
}
|
|
88
|
-
export declare function useTabs(props?: UseTabsProps): UseTabsReturn;
|
|
89
|
-
export declare const TabsProvider: React.Provider<TabsContextValue | null>;
|
|
90
|
-
export declare function useTabsContext(): TabsContextValue;
|
|
55
|
+
};
|
|
56
|
+
/** the fields the primary-pointer check reads off a web press event */
|
|
57
|
+
export type TabPressEvent = {
|
|
58
|
+
button?: number;
|
|
59
|
+
ctrlKey?: boolean;
|
|
60
|
+
};
|
|
91
61
|
export interface UseTabProps {
|
|
62
|
+
baseId: string;
|
|
63
|
+
/** The value this trigger selects. */
|
|
92
64
|
value: string;
|
|
65
|
+
/** The currently selected value. */
|
|
66
|
+
selectedValue?: string;
|
|
93
67
|
disabled?: boolean;
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
onFocus?: (event: React.FocusEvent) => void;
|
|
68
|
+
activationMode?: TabsActivationMode;
|
|
69
|
+
onChange: (value: string) => void;
|
|
97
70
|
}
|
|
98
71
|
export declare function useTab(props: UseTabProps): {
|
|
99
72
|
isSelected: boolean;
|
|
73
|
+
triggerId: string;
|
|
74
|
+
contentId: string;
|
|
100
75
|
tabProps: {
|
|
101
|
-
|
|
102
|
-
tabIndex: number;
|
|
103
|
-
onKeyDown: import("@tamagui/helpers").EventHandler<React.KeyboardEvent<Element>> | undefined;
|
|
104
|
-
onPress: import("@tamagui/helpers").EventHandler<any> | undefined;
|
|
105
|
-
onFocus: import("@tamagui/helpers").EventHandler<React.FocusEvent<Element, Element>> | undefined;
|
|
106
|
-
'data-disabled'?: "" | undefined;
|
|
107
|
-
ref: React.RefObject<HTMLElement | null>;
|
|
108
|
-
role: "tab";
|
|
76
|
+
role: 'tab';
|
|
109
77
|
id: string;
|
|
110
78
|
'aria-selected': boolean;
|
|
111
79
|
'aria-controls': string;
|
|
112
|
-
'data-state':
|
|
80
|
+
'data-state': "active" | "inactive";
|
|
81
|
+
'data-disabled': "" | undefined;
|
|
82
|
+
disabled: boolean;
|
|
83
|
+
onPress: (event?: TabPressEvent) => void;
|
|
84
|
+
onKeyDown?: ((event: React.KeyboardEvent) => void) | undefined;
|
|
85
|
+
onFocus?: (() => void) | undefined;
|
|
113
86
|
};
|
|
114
87
|
};
|
|
115
88
|
export interface UseTabContentProps {
|
|
89
|
+
baseId: string;
|
|
90
|
+
/** The value that selects this content. */
|
|
116
91
|
value: string;
|
|
92
|
+
/** The currently selected value. */
|
|
93
|
+
selectedValue?: string;
|
|
94
|
+
orientation?: TabsOrientation;
|
|
95
|
+
/** Mounts the content even when its value is not selected. */
|
|
117
96
|
forceMount?: boolean;
|
|
118
97
|
}
|
|
119
98
|
export declare function useTabContent(props: UseTabContentProps): {
|
|
120
99
|
isSelected: boolean;
|
|
121
100
|
shouldMount: boolean;
|
|
122
101
|
contentProps: {
|
|
123
|
-
role:
|
|
102
|
+
role: 'tabpanel';
|
|
124
103
|
id: string;
|
|
125
104
|
'aria-labelledby': string;
|
|
126
|
-
'data-state':
|
|
105
|
+
'data-state': "active" | "inactive";
|
|
127
106
|
'data-orientation': TabsOrientation;
|
|
128
107
|
hidden: boolean;
|
|
129
108
|
tabIndex: number;
|
package/types/useTabs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTabs.d.ts","sourceRoot":"","sources":["../src/useTabs.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"useTabs.d.ts","sourceRoot":"","sources":["../src/useTabs.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,QAAQ,CAAA;AACvD,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,UAAU,CAAA;AACvD,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,CAAA;AAIrC,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAE1D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAE1D;AAMD,MAAM,WAAW,YAAY;IAC3B,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,mDAAmD;IACnD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC;;;OAGG;IACH,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,wDAAwD;IACxD,GAAG,CAAC,EAAE,SAAS,CAAA;IACf;;;;OAIG;IACH,cAAc,CAAC,EAAE,kBAAkB,CAAA;CACpC;AAED,wBAAgB,OAAO,CAAC,KAAK,GAAE,YAAiB;;;;;;;;;;;QAyC1C,kBAAkB;;EAGvB;AAMD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB;IAI/C,SAAS;QACP,IAAI,EAAE,SAAS;QACf,kBAAkB;QAClB,eAAe;QACf,kBAAkB;QAClB,eAAe;;EAGpB;AAMD,uEAAuE;AACvE,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,kBAAkB,CAAA;IACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAClC;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW;;;;;cAmB7B,KAAK;;;;;;;0BAOO,aAAa;6BASV,KAAK,CAAC,aAAa;;;EAc7C;AAMD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB;;;;QAUjD,IAAI,EAAE,UAAU;QAChB,EAAE;QACF,iBAAiB;QACjB,YAAY;QACZ,kBAAkB;QAClB,MAAM;QACN,QAAQ;;EAGb"}
|
package/dist/esm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc","ignoreList":[]}
|
package/dist/esm/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc","ignoreList":[]}
|
package/dist/jsx/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc","ignoreList":[]}
|
package/dist/jsx/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc","ignoreList":[]}
|