@radix-ui/react-tabs 1.0.5-rc.9 → 1.1.0-rc.2
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/index.d.mts +33 -21
- package/dist/index.d.ts +33 -21
- package/dist/index.js +212 -191
- package/dist/index.js.map +7 -1
- package/dist/index.mjs +185 -169
- package/dist/index.mjs.map +7 -1
- package/package.json +9 -10
- package/dist/index.d.ts.map +0 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,11 +1,23 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import * as Radix from
|
|
3
|
-
import { Primitive } from
|
|
4
|
-
import * as RovingFocusGroup from
|
|
5
|
-
|
|
6
|
-
type
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as Radix from '@radix-ui/react-primitive';
|
|
3
|
+
import { Primitive } from '@radix-ui/react-primitive';
|
|
4
|
+
import * as RovingFocusGroup from '@radix-ui/react-roving-focus';
|
|
5
|
+
|
|
6
|
+
declare type Scope<C = any> = {
|
|
7
|
+
[scopeName: string]: React.Context<C>[];
|
|
8
|
+
} | undefined;
|
|
9
|
+
declare type ScopeHook = (scope: Scope) => {
|
|
10
|
+
[__scopeProp: string]: Scope;
|
|
11
|
+
};
|
|
12
|
+
interface CreateScope {
|
|
13
|
+
scopeName: string;
|
|
14
|
+
(): ScopeHook;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
declare const createTabsScope: CreateScope;
|
|
18
|
+
declare type RovingFocusGroupProps = Radix.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;
|
|
19
|
+
declare type PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;
|
|
20
|
+
interface TabsProps extends PrimitiveDivProps {
|
|
9
21
|
/** The value for the selected tab, if controlled */
|
|
10
22
|
value?: string;
|
|
11
23
|
/** The value of the tab to select by default, if uncontrolled */
|
|
@@ -28,17 +40,17 @@ export interface TabsProps extends PrimitiveDivProps {
|
|
|
28
40
|
* */
|
|
29
41
|
activationMode?: 'automatic' | 'manual';
|
|
30
42
|
}
|
|
31
|
-
|
|
32
|
-
|
|
43
|
+
declare const Tabs: React.ForwardRefExoticComponent<TabsProps & React.RefAttributes<HTMLDivElement>>;
|
|
44
|
+
interface TabsListProps extends PrimitiveDivProps {
|
|
33
45
|
loop?: RovingFocusGroupProps['loop'];
|
|
34
46
|
}
|
|
35
|
-
|
|
36
|
-
type PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;
|
|
37
|
-
|
|
47
|
+
declare const TabsList: React.ForwardRefExoticComponent<TabsListProps & React.RefAttributes<HTMLDivElement>>;
|
|
48
|
+
declare type PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;
|
|
49
|
+
interface TabsTriggerProps extends PrimitiveButtonProps {
|
|
38
50
|
value: string;
|
|
39
51
|
}
|
|
40
|
-
|
|
41
|
-
|
|
52
|
+
declare const TabsTrigger: React.ForwardRefExoticComponent<TabsTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
53
|
+
interface TabsContentProps extends PrimitiveDivProps {
|
|
42
54
|
value: string;
|
|
43
55
|
/**
|
|
44
56
|
* Used to force mounting when more control is needed. Useful when
|
|
@@ -46,10 +58,10 @@ export interface TabsContentProps extends PrimitiveDivProps {
|
|
|
46
58
|
*/
|
|
47
59
|
forceMount?: true;
|
|
48
60
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
61
|
+
declare const TabsContent: React.ForwardRefExoticComponent<TabsContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
62
|
+
declare const Root: React.ForwardRefExoticComponent<TabsProps & React.RefAttributes<HTMLDivElement>>;
|
|
63
|
+
declare const List: React.ForwardRefExoticComponent<TabsListProps & React.RefAttributes<HTMLDivElement>>;
|
|
64
|
+
declare const Trigger: React.ForwardRefExoticComponent<TabsTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
65
|
+
declare const Content: React.ForwardRefExoticComponent<TabsContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
54
66
|
|
|
55
|
-
|
|
67
|
+
export { Content, List, Root, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsListProps, type TabsProps, TabsTrigger, type TabsTriggerProps, Trigger, createTabsScope };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,23 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import * as Radix from
|
|
3
|
-
import { Primitive } from
|
|
4
|
-
import * as RovingFocusGroup from
|
|
5
|
-
|
|
6
|
-
type
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as Radix from '@radix-ui/react-primitive';
|
|
3
|
+
import { Primitive } from '@radix-ui/react-primitive';
|
|
4
|
+
import * as RovingFocusGroup from '@radix-ui/react-roving-focus';
|
|
5
|
+
|
|
6
|
+
declare type Scope<C = any> = {
|
|
7
|
+
[scopeName: string]: React.Context<C>[];
|
|
8
|
+
} | undefined;
|
|
9
|
+
declare type ScopeHook = (scope: Scope) => {
|
|
10
|
+
[__scopeProp: string]: Scope;
|
|
11
|
+
};
|
|
12
|
+
interface CreateScope {
|
|
13
|
+
scopeName: string;
|
|
14
|
+
(): ScopeHook;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
declare const createTabsScope: CreateScope;
|
|
18
|
+
declare type RovingFocusGroupProps = Radix.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;
|
|
19
|
+
declare type PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;
|
|
20
|
+
interface TabsProps extends PrimitiveDivProps {
|
|
9
21
|
/** The value for the selected tab, if controlled */
|
|
10
22
|
value?: string;
|
|
11
23
|
/** The value of the tab to select by default, if uncontrolled */
|
|
@@ -28,17 +40,17 @@ export interface TabsProps extends PrimitiveDivProps {
|
|
|
28
40
|
* */
|
|
29
41
|
activationMode?: 'automatic' | 'manual';
|
|
30
42
|
}
|
|
31
|
-
|
|
32
|
-
|
|
43
|
+
declare const Tabs: React.ForwardRefExoticComponent<TabsProps & React.RefAttributes<HTMLDivElement>>;
|
|
44
|
+
interface TabsListProps extends PrimitiveDivProps {
|
|
33
45
|
loop?: RovingFocusGroupProps['loop'];
|
|
34
46
|
}
|
|
35
|
-
|
|
36
|
-
type PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;
|
|
37
|
-
|
|
47
|
+
declare const TabsList: React.ForwardRefExoticComponent<TabsListProps & React.RefAttributes<HTMLDivElement>>;
|
|
48
|
+
declare type PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;
|
|
49
|
+
interface TabsTriggerProps extends PrimitiveButtonProps {
|
|
38
50
|
value: string;
|
|
39
51
|
}
|
|
40
|
-
|
|
41
|
-
|
|
52
|
+
declare const TabsTrigger: React.ForwardRefExoticComponent<TabsTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
53
|
+
interface TabsContentProps extends PrimitiveDivProps {
|
|
42
54
|
value: string;
|
|
43
55
|
/**
|
|
44
56
|
* Used to force mounting when more control is needed. Useful when
|
|
@@ -46,10 +58,10 @@ export interface TabsContentProps extends PrimitiveDivProps {
|
|
|
46
58
|
*/
|
|
47
59
|
forceMount?: true;
|
|
48
60
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
61
|
+
declare const TabsContent: React.ForwardRefExoticComponent<TabsContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
62
|
+
declare const Root: React.ForwardRefExoticComponent<TabsProps & React.RefAttributes<HTMLDivElement>>;
|
|
63
|
+
declare const List: React.ForwardRefExoticComponent<TabsListProps & React.RefAttributes<HTMLDivElement>>;
|
|
64
|
+
declare const Trigger: React.ForwardRefExoticComponent<TabsTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
65
|
+
declare const Content: React.ForwardRefExoticComponent<TabsContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
54
66
|
|
|
55
|
-
|
|
67
|
+
export { Content, List, Root, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsListProps, type TabsProps, TabsTrigger, type TabsTriggerProps, Trigger, createTabsScope };
|
package/dist/index.js
CHANGED
|
@@ -1,198 +1,219 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
(() => {
|
|
4
|
+
var __create = Object.create;
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
9
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
11
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
12
|
+
}) : x)(function(x) {
|
|
13
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
14
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
15
|
+
});
|
|
16
|
+
var __copyProps = (to, from, except, desc) => {
|
|
17
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
18
|
+
for (let key of __getOwnPropNames(from))
|
|
19
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
20
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
25
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
26
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
27
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
28
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
29
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
30
|
+
mod
|
|
31
|
+
));
|
|
32
|
+
|
|
33
|
+
// packages/react/tabs/src/Tabs.tsx
|
|
34
|
+
var React = __toESM(__require("react"));
|
|
35
|
+
var import_primitive = __require("@radix-ui/primitive");
|
|
36
|
+
var import_react_context = __require("@radix-ui/react-context");
|
|
37
|
+
var import_react_roving_focus = __require("@radix-ui/react-roving-focus");
|
|
38
|
+
var import_react_presence = __require("@radix-ui/react-presence");
|
|
39
|
+
var import_react_primitive = __require("@radix-ui/react-primitive");
|
|
40
|
+
var RovingFocusGroup = __toESM(__require("@radix-ui/react-roving-focus"));
|
|
41
|
+
var import_react_direction = __require("@radix-ui/react-direction");
|
|
42
|
+
var import_react_use_controllable_state = __require("@radix-ui/react-use-controllable-state");
|
|
43
|
+
var import_react_id = __require("@radix-ui/react-id");
|
|
44
|
+
var import_jsx_runtime = __require("react/jsx-runtime");
|
|
45
|
+
var TABS_NAME = "Tabs";
|
|
46
|
+
var [createTabsContext, createTabsScope] = (0, import_react_context.createContextScope)(TABS_NAME, [
|
|
47
|
+
import_react_roving_focus.createRovingFocusGroupScope
|
|
48
|
+
]);
|
|
49
|
+
var useRovingFocusGroupScope = (0, import_react_roving_focus.createRovingFocusGroupScope)();
|
|
50
|
+
var [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);
|
|
51
|
+
var Tabs = React.forwardRef(
|
|
52
|
+
(props, forwardedRef) => {
|
|
53
|
+
const {
|
|
54
|
+
__scopeTabs,
|
|
55
|
+
value: valueProp,
|
|
56
|
+
onValueChange,
|
|
57
|
+
defaultValue,
|
|
58
|
+
orientation = "horizontal",
|
|
59
|
+
dir,
|
|
60
|
+
activationMode = "automatic",
|
|
61
|
+
...tabsProps
|
|
62
|
+
} = props;
|
|
63
|
+
const direction = (0, import_react_direction.useDirection)(dir);
|
|
64
|
+
const [value, setValue] = (0, import_react_use_controllable_state.useControllableState)({
|
|
51
65
|
prop: valueProp,
|
|
52
66
|
onChange: onValueChange,
|
|
53
67
|
defaultProp: defaultValue
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
})
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
})
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
const triggerId = $2bbff03427f8eaee$var$makeTriggerId(context.baseId, value);
|
|
153
|
-
const contentId = $2bbff03427f8eaee$var$makeContentId(context.baseId, value);
|
|
154
|
-
const isSelected = value === context.value;
|
|
155
|
-
const isMountAnimationPreventedRef = $8oLOM$react.useRef(isSelected);
|
|
156
|
-
$8oLOM$react.useEffect(()=>{
|
|
157
|
-
const rAF = requestAnimationFrame(()=>isMountAnimationPreventedRef.current = false
|
|
158
|
-
);
|
|
159
|
-
return ()=>cancelAnimationFrame(rAF)
|
|
160
|
-
;
|
|
161
|
-
}, []);
|
|
162
|
-
return /*#__PURE__*/ $8oLOM$react.createElement($8oLOM$radixuireactpresence.Presence, {
|
|
163
|
-
present: forceMount || isSelected
|
|
164
|
-
}, ({ present: present })=>/*#__PURE__*/ $8oLOM$react.createElement($8oLOM$radixuireactprimitive.Primitive.div, ($parcel$interopDefault($8oLOM$babelruntimehelpersextends))({
|
|
165
|
-
"data-state": isSelected ? 'active' : 'inactive',
|
|
166
|
-
"data-orientation": context.orientation,
|
|
167
|
-
role: "tabpanel",
|
|
168
|
-
"aria-labelledby": triggerId,
|
|
169
|
-
hidden: !present,
|
|
170
|
-
id: contentId,
|
|
171
|
-
tabIndex: 0
|
|
172
|
-
}, contentProps, {
|
|
173
|
-
ref: forwardedRef,
|
|
174
|
-
style: {
|
|
175
|
-
...props.style,
|
|
176
|
-
animationDuration: isMountAnimationPreventedRef.current ? '0s' : undefined
|
|
68
|
+
});
|
|
69
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
70
|
+
TabsProvider,
|
|
71
|
+
{
|
|
72
|
+
scope: __scopeTabs,
|
|
73
|
+
baseId: (0, import_react_id.useId)(),
|
|
74
|
+
value,
|
|
75
|
+
onValueChange: setValue,
|
|
76
|
+
orientation,
|
|
77
|
+
dir: direction,
|
|
78
|
+
activationMode,
|
|
79
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
80
|
+
import_react_primitive.Primitive.div,
|
|
81
|
+
{
|
|
82
|
+
dir: direction,
|
|
83
|
+
"data-orientation": orientation,
|
|
84
|
+
...tabsProps,
|
|
85
|
+
ref: forwardedRef
|
|
86
|
+
}
|
|
87
|
+
)
|
|
88
|
+
}
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
);
|
|
92
|
+
Tabs.displayName = TABS_NAME;
|
|
93
|
+
var TAB_LIST_NAME = "TabsList";
|
|
94
|
+
var TabsList = React.forwardRef(
|
|
95
|
+
(props, forwardedRef) => {
|
|
96
|
+
const { __scopeTabs, loop = true, ...listProps } = props;
|
|
97
|
+
const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);
|
|
98
|
+
const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);
|
|
99
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
100
|
+
RovingFocusGroup.Root,
|
|
101
|
+
{
|
|
102
|
+
asChild: true,
|
|
103
|
+
...rovingFocusGroupScope,
|
|
104
|
+
orientation: context.orientation,
|
|
105
|
+
dir: context.dir,
|
|
106
|
+
loop,
|
|
107
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
108
|
+
import_react_primitive.Primitive.div,
|
|
109
|
+
{
|
|
110
|
+
role: "tablist",
|
|
111
|
+
"aria-orientation": context.orientation,
|
|
112
|
+
...listProps,
|
|
113
|
+
ref: forwardedRef
|
|
114
|
+
}
|
|
115
|
+
)
|
|
116
|
+
}
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
);
|
|
120
|
+
TabsList.displayName = TAB_LIST_NAME;
|
|
121
|
+
var TRIGGER_NAME = "TabsTrigger";
|
|
122
|
+
var TabsTrigger = React.forwardRef(
|
|
123
|
+
(props, forwardedRef) => {
|
|
124
|
+
const { __scopeTabs, value, disabled = false, ...triggerProps } = props;
|
|
125
|
+
const context = useTabsContext(TRIGGER_NAME, __scopeTabs);
|
|
126
|
+
const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);
|
|
127
|
+
const triggerId = makeTriggerId(context.baseId, value);
|
|
128
|
+
const contentId = makeContentId(context.baseId, value);
|
|
129
|
+
const isSelected = value === context.value;
|
|
130
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
131
|
+
RovingFocusGroup.Item,
|
|
132
|
+
{
|
|
133
|
+
asChild: true,
|
|
134
|
+
...rovingFocusGroupScope,
|
|
135
|
+
focusable: !disabled,
|
|
136
|
+
active: isSelected,
|
|
137
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
138
|
+
import_react_primitive.Primitive.button,
|
|
139
|
+
{
|
|
140
|
+
type: "button",
|
|
141
|
+
role: "tab",
|
|
142
|
+
"aria-selected": isSelected,
|
|
143
|
+
"aria-controls": contentId,
|
|
144
|
+
"data-state": isSelected ? "active" : "inactive",
|
|
145
|
+
"data-disabled": disabled ? "" : void 0,
|
|
146
|
+
disabled,
|
|
147
|
+
id: triggerId,
|
|
148
|
+
...triggerProps,
|
|
149
|
+
ref: forwardedRef,
|
|
150
|
+
onMouseDown: (0, import_primitive.composeEventHandlers)(props.onMouseDown, (event) => {
|
|
151
|
+
if (!disabled && event.button === 0 && event.ctrlKey === false) {
|
|
152
|
+
context.onValueChange(value);
|
|
153
|
+
} else {
|
|
154
|
+
event.preventDefault();
|
|
155
|
+
}
|
|
156
|
+
}),
|
|
157
|
+
onKeyDown: (0, import_primitive.composeEventHandlers)(props.onKeyDown, (event) => {
|
|
158
|
+
if ([" ", "Enter"].includes(event.key)) context.onValueChange(value);
|
|
159
|
+
}),
|
|
160
|
+
onFocus: (0, import_primitive.composeEventHandlers)(props.onFocus, () => {
|
|
161
|
+
const isAutomaticActivation = context.activationMode !== "manual";
|
|
162
|
+
if (!isSelected && !disabled && isAutomaticActivation) {
|
|
163
|
+
context.onValueChange(value);
|
|
164
|
+
}
|
|
165
|
+
})
|
|
177
166
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
167
|
+
)
|
|
168
|
+
}
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
);
|
|
172
|
+
TabsTrigger.displayName = TRIGGER_NAME;
|
|
173
|
+
var CONTENT_NAME = "TabsContent";
|
|
174
|
+
var TabsContent = React.forwardRef(
|
|
175
|
+
(props, forwardedRef) => {
|
|
176
|
+
const { __scopeTabs, value, forceMount, children, ...contentProps } = props;
|
|
177
|
+
const context = useTabsContext(CONTENT_NAME, __scopeTabs);
|
|
178
|
+
const triggerId = makeTriggerId(context.baseId, value);
|
|
179
|
+
const contentId = makeContentId(context.baseId, value);
|
|
180
|
+
const isSelected = value === context.value;
|
|
181
|
+
const isMountAnimationPreventedRef = React.useRef(isSelected);
|
|
182
|
+
React.useEffect(() => {
|
|
183
|
+
const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);
|
|
184
|
+
return () => cancelAnimationFrame(rAF);
|
|
185
|
+
}, []);
|
|
186
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_presence.Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
187
|
+
import_react_primitive.Primitive.div,
|
|
188
|
+
{
|
|
189
|
+
"data-state": isSelected ? "active" : "inactive",
|
|
190
|
+
"data-orientation": context.orientation,
|
|
191
|
+
role: "tabpanel",
|
|
192
|
+
"aria-labelledby": triggerId,
|
|
193
|
+
hidden: !present,
|
|
194
|
+
id: contentId,
|
|
195
|
+
tabIndex: 0,
|
|
196
|
+
...contentProps,
|
|
197
|
+
ref: forwardedRef,
|
|
198
|
+
style: {
|
|
199
|
+
...props.style,
|
|
200
|
+
animationDuration: isMountAnimationPreventedRef.current ? "0s" : void 0
|
|
201
|
+
},
|
|
202
|
+
children: present && children
|
|
203
|
+
}
|
|
204
|
+
) });
|
|
205
|
+
}
|
|
206
|
+
);
|
|
207
|
+
TabsContent.displayName = CONTENT_NAME;
|
|
208
|
+
function makeTriggerId(baseId, value) {
|
|
185
209
|
return `${baseId}-trigger-${value}`;
|
|
186
|
-
}
|
|
187
|
-
function
|
|
210
|
+
}
|
|
211
|
+
function makeContentId(baseId, value) {
|
|
188
212
|
return `${baseId}-content-${value}`;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
213
|
+
}
|
|
214
|
+
var Root2 = Tabs;
|
|
215
|
+
var List = TabsList;
|
|
216
|
+
var Trigger = TabsTrigger;
|
|
217
|
+
var Content = TabsContent;
|
|
218
|
+
})();
|
|
198
219
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/react/tabs/src/index.ts","packages/react/tabs/src/Tabs.tsx"],"sourcesContent":["export {\n createTabsScope,\n //\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n //\n Root,\n List,\n Trigger,\n Content,\n} from './Tabs';\nexport type { TabsProps, TabsListProps, TabsTriggerProps, TabsContentProps } from './Tabs';\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useId } from '@radix-ui/react-id';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Tabs\n * -----------------------------------------------------------------------------------------------*/\n\nconst TABS_NAME = 'Tabs';\n\ntype ScopedProps<P> = P & { __scopeTabs?: Scope };\nconst [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope,\n]);\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\n\ntype TabsContextValue = {\n baseId: string;\n value?: string;\n onValueChange: (value: string) => void;\n orientation?: TabsProps['orientation'];\n dir?: TabsProps['dir'];\n activationMode?: TabsProps['activationMode'];\n};\n\nconst [TabsProvider, useTabsContext] = createTabsContext<TabsContextValue>(TABS_NAME);\n\ntype TabsElement = React.ElementRef<typeof Primitive.div>;\ntype RovingFocusGroupProps = Radix.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface TabsProps extends PrimitiveDivProps {\n /** The value for the selected tab, if controlled */\n value?: string;\n /** The value of the tab to select by default, if uncontrolled */\n defaultValue?: string;\n /** A function called when a new tab is selected */\n onValueChange?: (value: string) => void;\n /**\n * The orientation the tabs are layed out.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n * @defaultValue horizontal\n */\n orientation?: RovingFocusGroupProps['orientation'];\n /**\n * The direction of navigation between toolbar items.\n */\n dir?: RovingFocusGroupProps['dir'];\n /**\n * Whether a tab is activated automatically or manually.\n * @defaultValue automatic\n * */\n activationMode?: 'automatic' | 'manual';\n}\n\nconst Tabs = React.forwardRef<TabsElement, TabsProps>(\n (props: ScopedProps<TabsProps>, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = 'horizontal',\n dir,\n activationMode = 'automatic',\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue,\n });\n\n return (\n <TabsProvider\n scope={__scopeTabs}\n baseId={useId()}\n value={value}\n onValueChange={setValue}\n orientation={orientation}\n dir={direction}\n activationMode={activationMode}\n >\n <Primitive.div\n dir={direction}\n data-orientation={orientation}\n {...tabsProps}\n ref={forwardedRef}\n />\n </TabsProvider>\n );\n }\n);\n\nTabs.displayName = TABS_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst TAB_LIST_NAME = 'TabsList';\n\ntype TabsListElement = React.ElementRef<typeof Primitive.div>;\ninterface TabsListProps extends PrimitiveDivProps {\n loop?: RovingFocusGroupProps['loop'];\n}\n\nconst TabsList = React.forwardRef<TabsListElement, TabsListProps>(\n (props: ScopedProps<TabsListProps>, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return (\n <RovingFocusGroup.Root\n asChild\n {...rovingFocusGroupScope}\n orientation={context.orientation}\n dir={context.dir}\n loop={loop}\n >\n <Primitive.div\n role=\"tablist\"\n aria-orientation={context.orientation}\n {...listProps}\n ref={forwardedRef}\n />\n </RovingFocusGroup.Root>\n );\n }\n);\n\nTabsList.displayName = TAB_LIST_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'TabsTrigger';\n\ntype TabsTriggerElement = React.ElementRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface TabsTriggerProps extends PrimitiveButtonProps {\n value: string;\n}\n\nconst TabsTrigger = React.forwardRef<TabsTriggerElement, TabsTriggerProps>(\n (props: ScopedProps<TabsTriggerProps>, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return (\n <RovingFocusGroup.Item\n asChild\n {...rovingFocusGroupScope}\n focusable={!disabled}\n active={isSelected}\n >\n <Primitive.button\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n aria-controls={contentId}\n data-state={isSelected ? 'active' : 'inactive'}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n id={triggerId}\n {...triggerProps}\n ref={forwardedRef}\n onMouseDown={composeEventHandlers(props.onMouseDown, (event) => {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n // prevent focus to avoid accidental activation\n event.preventDefault();\n }\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if ([' ', 'Enter'].includes(event.key)) context.onValueChange(value);\n })}\n onFocus={composeEventHandlers(props.onFocus, () => {\n // handle \"automatic\" activation if necessary\n // ie. activate tab following focus\n const isAutomaticActivation = context.activationMode !== 'manual';\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })}\n />\n </RovingFocusGroup.Item>\n );\n }\n);\n\nTabsTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'TabsContent';\n\ntype TabsContentElement = React.ElementRef<typeof Primitive.div>;\ninterface TabsContentProps extends PrimitiveDivProps {\n value: string;\n\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst TabsContent = React.forwardRef<TabsContentElement, TabsContentProps>(\n (props: ScopedProps<TabsContentProps>, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => (isMountAnimationPreventedRef.current = false));\n return () => cancelAnimationFrame(rAF);\n }, []);\n\n return (\n <Presence present={forceMount || isSelected}>\n {({ present }) => (\n <Primitive.div\n data-state={isSelected ? 'active' : 'inactive'}\n data-orientation={context.orientation}\n role=\"tabpanel\"\n aria-labelledby={triggerId}\n hidden={!present}\n id={contentId}\n tabIndex={0}\n {...contentProps}\n ref={forwardedRef}\n style={{\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? '0s' : undefined,\n }}\n >\n {present && children}\n </Primitive.div>\n )}\n </Presence>\n );\n }\n);\n\nTabsContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction makeTriggerId(baseId: string, value: string) {\n return `${baseId}-trigger-${value}`;\n}\n\nfunction makeContentId(baseId: string, value: string) {\n return `${baseId}-content-${value}`;\n}\n\nconst Root = Tabs;\nconst List = TabsList;\nconst Trigger = TabsTrigger;\nconst Content = TabsContent;\n\nexport {\n createTabsScope,\n //\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n //\n Root,\n List,\n Trigger,\n Content,\n};\nexport type { TabsProps, TabsListProps, TabsTriggerProps, TabsContentProps };\n"],"names":["createTabsScope","Tabs","TabsList","TabsTrigger","TabsContent","Root","List","Trigger","Content","React","composeEventHandlers","createContextScope","createRovingFocusGroupScope","Presence","Primitive","RovingFocusGroup","useDirection","useControllableState","useId","TABS_NAME","createTabsContext","useRovingFocusGroupScope","TabsProvider","useTabsContext","forwardRef","props","forwardedRef","__scopeTabs","value","valueProp","onValueChange","defaultValue","orientation","dir","activationMode","tabsProps","direction","setValue","prop","onChange","defaultProp","TAB_LIST_NAME","loop","listProps","context","rovingFocusGroupScope","TRIGGER_NAME","disabled","triggerProps","triggerId","makeTriggerId","baseId","contentId","makeContentId","isSelected","undefined","onMouseDown","event","button","ctrlKey","preventDefault","onKeyDown","includes","key","onFocus","isAutomaticActivation","CONTENT_NAME","forceMount","children","contentProps","isMountAnimationPreventedRef","useRef","useEffect","rAF","requestAnimationFrame","current","cancelAnimationFrame","present","style","animationDuration"],"version":3,"file":"index.js.map"}
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/Tabs.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useId } from '@radix-ui/react-id';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Tabs\n * -----------------------------------------------------------------------------------------------*/\n\nconst TABS_NAME = 'Tabs';\n\ntype ScopedProps<P> = P & { __scopeTabs?: Scope };\nconst [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope,\n]);\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\n\ntype TabsContextValue = {\n baseId: string;\n value?: string;\n onValueChange: (value: string) => void;\n orientation?: TabsProps['orientation'];\n dir?: TabsProps['dir'];\n activationMode?: TabsProps['activationMode'];\n};\n\nconst [TabsProvider, useTabsContext] = createTabsContext<TabsContextValue>(TABS_NAME);\n\ntype TabsElement = React.ElementRef<typeof Primitive.div>;\ntype RovingFocusGroupProps = Radix.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface TabsProps extends PrimitiveDivProps {\n /** The value for the selected tab, if controlled */\n value?: string;\n /** The value of the tab to select by default, if uncontrolled */\n defaultValue?: string;\n /** A function called when a new tab is selected */\n onValueChange?: (value: string) => void;\n /**\n * The orientation the tabs are layed out.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n * @defaultValue horizontal\n */\n orientation?: RovingFocusGroupProps['orientation'];\n /**\n * The direction of navigation between toolbar items.\n */\n dir?: RovingFocusGroupProps['dir'];\n /**\n * Whether a tab is activated automatically or manually.\n * @defaultValue automatic\n * */\n activationMode?: 'automatic' | 'manual';\n}\n\nconst Tabs = React.forwardRef<TabsElement, TabsProps>(\n (props: ScopedProps<TabsProps>, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = 'horizontal',\n dir,\n activationMode = 'automatic',\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue,\n });\n\n return (\n <TabsProvider\n scope={__scopeTabs}\n baseId={useId()}\n value={value}\n onValueChange={setValue}\n orientation={orientation}\n dir={direction}\n activationMode={activationMode}\n >\n <Primitive.div\n dir={direction}\n data-orientation={orientation}\n {...tabsProps}\n ref={forwardedRef}\n />\n </TabsProvider>\n );\n }\n);\n\nTabs.displayName = TABS_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst TAB_LIST_NAME = 'TabsList';\n\ntype TabsListElement = React.ElementRef<typeof Primitive.div>;\ninterface TabsListProps extends PrimitiveDivProps {\n loop?: RovingFocusGroupProps['loop'];\n}\n\nconst TabsList = React.forwardRef<TabsListElement, TabsListProps>(\n (props: ScopedProps<TabsListProps>, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return (\n <RovingFocusGroup.Root\n asChild\n {...rovingFocusGroupScope}\n orientation={context.orientation}\n dir={context.dir}\n loop={loop}\n >\n <Primitive.div\n role=\"tablist\"\n aria-orientation={context.orientation}\n {...listProps}\n ref={forwardedRef}\n />\n </RovingFocusGroup.Root>\n );\n }\n);\n\nTabsList.displayName = TAB_LIST_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'TabsTrigger';\n\ntype TabsTriggerElement = React.ElementRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface TabsTriggerProps extends PrimitiveButtonProps {\n value: string;\n}\n\nconst TabsTrigger = React.forwardRef<TabsTriggerElement, TabsTriggerProps>(\n (props: ScopedProps<TabsTriggerProps>, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return (\n <RovingFocusGroup.Item\n asChild\n {...rovingFocusGroupScope}\n focusable={!disabled}\n active={isSelected}\n >\n <Primitive.button\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n aria-controls={contentId}\n data-state={isSelected ? 'active' : 'inactive'}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n id={triggerId}\n {...triggerProps}\n ref={forwardedRef}\n onMouseDown={composeEventHandlers(props.onMouseDown, (event) => {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n // prevent focus to avoid accidental activation\n event.preventDefault();\n }\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if ([' ', 'Enter'].includes(event.key)) context.onValueChange(value);\n })}\n onFocus={composeEventHandlers(props.onFocus, () => {\n // handle \"automatic\" activation if necessary\n // ie. activate tab following focus\n const isAutomaticActivation = context.activationMode !== 'manual';\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })}\n />\n </RovingFocusGroup.Item>\n );\n }\n);\n\nTabsTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'TabsContent';\n\ntype TabsContentElement = React.ElementRef<typeof Primitive.div>;\ninterface TabsContentProps extends PrimitiveDivProps {\n value: string;\n\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst TabsContent = React.forwardRef<TabsContentElement, TabsContentProps>(\n (props: ScopedProps<TabsContentProps>, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => (isMountAnimationPreventedRef.current = false));\n return () => cancelAnimationFrame(rAF);\n }, []);\n\n return (\n <Presence present={forceMount || isSelected}>\n {({ present }) => (\n <Primitive.div\n data-state={isSelected ? 'active' : 'inactive'}\n data-orientation={context.orientation}\n role=\"tabpanel\"\n aria-labelledby={triggerId}\n hidden={!present}\n id={contentId}\n tabIndex={0}\n {...contentProps}\n ref={forwardedRef}\n style={{\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? '0s' : undefined,\n }}\n >\n {present && children}\n </Primitive.div>\n )}\n </Presence>\n );\n }\n);\n\nTabsContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction makeTriggerId(baseId: string, value: string) {\n return `${baseId}-trigger-${value}`;\n}\n\nfunction makeContentId(baseId: string, value: string) {\n return `${baseId}-content-${value}`;\n}\n\nconst Root = Tabs;\nconst List = TabsList;\nconst Trigger = TabsTrigger;\nconst Content = TabsContent;\n\nexport {\n createTabsScope,\n //\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n //\n Root,\n List,\n Trigger,\n Content,\n};\nexport type { TabsProps, TabsListProps, TabsTriggerProps, TabsContentProps };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Root"]
|
|
7
|
+
}
|
package/dist/index.mjs
CHANGED
|
@@ -1,183 +1,199 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
/* -------------------------------------------------------------------------------------------------
|
|
24
|
-
* Tabs
|
|
25
|
-
* -----------------------------------------------------------------------------------------------*/ const $69cb30bb0017df05$var$TABS_NAME = 'Tabs';
|
|
26
|
-
const [$69cb30bb0017df05$var$createTabsContext, $69cb30bb0017df05$export$355f5bd209d7b13a] = $1IHzk$createContextScope($69cb30bb0017df05$var$TABS_NAME, [
|
|
27
|
-
$1IHzk$createRovingFocusGroupScope
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// packages/react/tabs/src/Tabs.tsx
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { composeEventHandlers } from "@radix-ui/primitive";
|
|
6
|
+
import { createContextScope } from "@radix-ui/react-context";
|
|
7
|
+
import { createRovingFocusGroupScope } from "@radix-ui/react-roving-focus";
|
|
8
|
+
import { Presence } from "@radix-ui/react-presence";
|
|
9
|
+
import { Primitive } from "@radix-ui/react-primitive";
|
|
10
|
+
import * as RovingFocusGroup from "@radix-ui/react-roving-focus";
|
|
11
|
+
import { useDirection } from "@radix-ui/react-direction";
|
|
12
|
+
import { useControllableState } from "@radix-ui/react-use-controllable-state";
|
|
13
|
+
import { useId } from "@radix-ui/react-id";
|
|
14
|
+
import { jsx } from "react/jsx-runtime";
|
|
15
|
+
var TABS_NAME = "Tabs";
|
|
16
|
+
var [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [
|
|
17
|
+
createRovingFocusGroupScope
|
|
28
18
|
]);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
19
|
+
var useRovingFocusGroupScope = createRovingFocusGroupScope();
|
|
20
|
+
var [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);
|
|
21
|
+
var Tabs = React.forwardRef(
|
|
22
|
+
(props, forwardedRef) => {
|
|
23
|
+
const {
|
|
24
|
+
__scopeTabs,
|
|
25
|
+
value: valueProp,
|
|
26
|
+
onValueChange,
|
|
27
|
+
defaultValue,
|
|
28
|
+
orientation = "horizontal",
|
|
29
|
+
dir,
|
|
30
|
+
activationMode = "automatic",
|
|
31
|
+
...tabsProps
|
|
32
|
+
} = props;
|
|
33
|
+
const direction = useDirection(dir);
|
|
34
|
+
const [value, setValue] = useControllableState({
|
|
35
|
+
prop: valueProp,
|
|
36
|
+
onChange: onValueChange,
|
|
37
|
+
defaultProp: defaultValue
|
|
38
38
|
});
|
|
39
|
-
return
|
|
39
|
+
return /* @__PURE__ */ jsx(
|
|
40
|
+
TabsProvider,
|
|
41
|
+
{
|
|
40
42
|
scope: __scopeTabs,
|
|
41
|
-
baseId:
|
|
42
|
-
value
|
|
43
|
+
baseId: useId(),
|
|
44
|
+
value,
|
|
43
45
|
onValueChange: setValue,
|
|
44
|
-
orientation
|
|
45
|
-
dir: direction,
|
|
46
|
-
activationMode: activationMode
|
|
47
|
-
}, /*#__PURE__*/ $1IHzk$createElement($1IHzk$Primitive.div, $1IHzk$babelruntimehelpersesmextends({
|
|
46
|
+
orientation,
|
|
48
47
|
dir: direction,
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
48
|
+
activationMode,
|
|
49
|
+
children: /* @__PURE__ */ jsx(
|
|
50
|
+
Primitive.div,
|
|
51
|
+
{
|
|
52
|
+
dir: direction,
|
|
53
|
+
"data-orientation": orientation,
|
|
54
|
+
...tabsProps,
|
|
55
|
+
ref: forwardedRef
|
|
56
|
+
}
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
Tabs.displayName = TABS_NAME;
|
|
63
|
+
var TAB_LIST_NAME = "TabsList";
|
|
64
|
+
var TabsList = React.forwardRef(
|
|
65
|
+
(props, forwardedRef) => {
|
|
66
|
+
const { __scopeTabs, loop = true, ...listProps } = props;
|
|
67
|
+
const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);
|
|
68
|
+
const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);
|
|
69
|
+
return /* @__PURE__ */ jsx(
|
|
70
|
+
RovingFocusGroup.Root,
|
|
71
|
+
{
|
|
72
|
+
asChild: true,
|
|
73
|
+
...rovingFocusGroupScope,
|
|
67
74
|
orientation: context.orientation,
|
|
68
75
|
dir: context.dir,
|
|
69
|
-
loop
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
const
|
|
88
|
-
const
|
|
76
|
+
loop,
|
|
77
|
+
children: /* @__PURE__ */ jsx(
|
|
78
|
+
Primitive.div,
|
|
79
|
+
{
|
|
80
|
+
role: "tablist",
|
|
81
|
+
"aria-orientation": context.orientation,
|
|
82
|
+
...listProps,
|
|
83
|
+
ref: forwardedRef
|
|
84
|
+
}
|
|
85
|
+
)
|
|
86
|
+
}
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
);
|
|
90
|
+
TabsList.displayName = TAB_LIST_NAME;
|
|
91
|
+
var TRIGGER_NAME = "TabsTrigger";
|
|
92
|
+
var TabsTrigger = React.forwardRef(
|
|
93
|
+
(props, forwardedRef) => {
|
|
94
|
+
const { __scopeTabs, value, disabled = false, ...triggerProps } = props;
|
|
95
|
+
const context = useTabsContext(TRIGGER_NAME, __scopeTabs);
|
|
96
|
+
const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);
|
|
97
|
+
const triggerId = makeTriggerId(context.baseId, value);
|
|
98
|
+
const contentId = makeContentId(context.baseId, value);
|
|
89
99
|
const isSelected = value === context.value;
|
|
90
|
-
return
|
|
91
|
-
|
|
92
|
-
|
|
100
|
+
return /* @__PURE__ */ jsx(
|
|
101
|
+
RovingFocusGroup.Item,
|
|
102
|
+
{
|
|
103
|
+
asChild: true,
|
|
104
|
+
...rovingFocusGroupScope,
|
|
93
105
|
focusable: !disabled,
|
|
94
|
-
active: isSelected
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
// only call handler if it's the left button (mousedown gets triggered by all mouse buttons)
|
|
108
|
-
// but not when the control key is pressed (avoiding MacOS right click)
|
|
109
|
-
if (!disabled && event.button === 0 && event.ctrlKey === false) context.onValueChange(value);
|
|
110
|
-
else // prevent focus to avoid accidental activation
|
|
111
|
-
event.preventDefault();
|
|
112
|
-
}),
|
|
113
|
-
onKeyDown: $1IHzk$composeEventHandlers(props.onKeyDown, (event)=>{
|
|
114
|
-
if ([
|
|
115
|
-
' ',
|
|
116
|
-
'Enter'
|
|
117
|
-
].includes(event.key)) context.onValueChange(value);
|
|
118
|
-
}),
|
|
119
|
-
onFocus: $1IHzk$composeEventHandlers(props.onFocus, ()=>{
|
|
120
|
-
// handle "automatic" activation if necessary
|
|
121
|
-
// ie. activate tab following focus
|
|
122
|
-
const isAutomaticActivation = context.activationMode !== 'manual';
|
|
123
|
-
if (!isSelected && !disabled && isAutomaticActivation) context.onValueChange(value);
|
|
124
|
-
})
|
|
125
|
-
})));
|
|
126
|
-
});
|
|
127
|
-
/*#__PURE__*/ Object.assign($69cb30bb0017df05$export$8114b9fdfdf9f3ba, {
|
|
128
|
-
displayName: $69cb30bb0017df05$var$TRIGGER_NAME
|
|
129
|
-
});
|
|
130
|
-
/* -------------------------------------------------------------------------------------------------
|
|
131
|
-
* TabsContent
|
|
132
|
-
* -----------------------------------------------------------------------------------------------*/ const $69cb30bb0017df05$var$CONTENT_NAME = 'TabsContent';
|
|
133
|
-
const $69cb30bb0017df05$export$bd905d70e8fd2ebb = /*#__PURE__*/ $1IHzk$forwardRef((props, forwardedRef)=>{
|
|
134
|
-
const { __scopeTabs: __scopeTabs , value: value , forceMount: forceMount , children: children , ...contentProps } = props;
|
|
135
|
-
const context = $69cb30bb0017df05$var$useTabsContext($69cb30bb0017df05$var$CONTENT_NAME, __scopeTabs);
|
|
136
|
-
const triggerId = $69cb30bb0017df05$var$makeTriggerId(context.baseId, value);
|
|
137
|
-
const contentId = $69cb30bb0017df05$var$makeContentId(context.baseId, value);
|
|
138
|
-
const isSelected = value === context.value;
|
|
139
|
-
const isMountAnimationPreventedRef = $1IHzk$useRef(isSelected);
|
|
140
|
-
$1IHzk$useEffect(()=>{
|
|
141
|
-
const rAF = requestAnimationFrame(()=>isMountAnimationPreventedRef.current = false
|
|
142
|
-
);
|
|
143
|
-
return ()=>cancelAnimationFrame(rAF)
|
|
144
|
-
;
|
|
145
|
-
}, []);
|
|
146
|
-
return /*#__PURE__*/ $1IHzk$createElement($1IHzk$Presence, {
|
|
147
|
-
present: forceMount || isSelected
|
|
148
|
-
}, ({ present: present })=>/*#__PURE__*/ $1IHzk$createElement($1IHzk$Primitive.div, $1IHzk$babelruntimehelpersesmextends({
|
|
149
|
-
"data-state": isSelected ? 'active' : 'inactive',
|
|
150
|
-
"data-orientation": context.orientation,
|
|
151
|
-
role: "tabpanel",
|
|
152
|
-
"aria-labelledby": triggerId,
|
|
153
|
-
hidden: !present,
|
|
154
|
-
id: contentId,
|
|
155
|
-
tabIndex: 0
|
|
156
|
-
}, contentProps, {
|
|
106
|
+
active: isSelected,
|
|
107
|
+
children: /* @__PURE__ */ jsx(
|
|
108
|
+
Primitive.button,
|
|
109
|
+
{
|
|
110
|
+
type: "button",
|
|
111
|
+
role: "tab",
|
|
112
|
+
"aria-selected": isSelected,
|
|
113
|
+
"aria-controls": contentId,
|
|
114
|
+
"data-state": isSelected ? "active" : "inactive",
|
|
115
|
+
"data-disabled": disabled ? "" : void 0,
|
|
116
|
+
disabled,
|
|
117
|
+
id: triggerId,
|
|
118
|
+
...triggerProps,
|
|
157
119
|
ref: forwardedRef,
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
120
|
+
onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {
|
|
121
|
+
if (!disabled && event.button === 0 && event.ctrlKey === false) {
|
|
122
|
+
context.onValueChange(value);
|
|
123
|
+
} else {
|
|
124
|
+
event.preventDefault();
|
|
125
|
+
}
|
|
126
|
+
}),
|
|
127
|
+
onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {
|
|
128
|
+
if ([" ", "Enter"].includes(event.key)) context.onValueChange(value);
|
|
129
|
+
}),
|
|
130
|
+
onFocus: composeEventHandlers(props.onFocus, () => {
|
|
131
|
+
const isAutomaticActivation = context.activationMode !== "manual";
|
|
132
|
+
if (!isSelected && !disabled && isAutomaticActivation) {
|
|
133
|
+
context.onValueChange(value);
|
|
134
|
+
}
|
|
135
|
+
})
|
|
136
|
+
}
|
|
137
|
+
)
|
|
138
|
+
}
|
|
163
139
|
);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
140
|
+
}
|
|
141
|
+
);
|
|
142
|
+
TabsTrigger.displayName = TRIGGER_NAME;
|
|
143
|
+
var CONTENT_NAME = "TabsContent";
|
|
144
|
+
var TabsContent = React.forwardRef(
|
|
145
|
+
(props, forwardedRef) => {
|
|
146
|
+
const { __scopeTabs, value, forceMount, children, ...contentProps } = props;
|
|
147
|
+
const context = useTabsContext(CONTENT_NAME, __scopeTabs);
|
|
148
|
+
const triggerId = makeTriggerId(context.baseId, value);
|
|
149
|
+
const contentId = makeContentId(context.baseId, value);
|
|
150
|
+
const isSelected = value === context.value;
|
|
151
|
+
const isMountAnimationPreventedRef = React.useRef(isSelected);
|
|
152
|
+
React.useEffect(() => {
|
|
153
|
+
const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);
|
|
154
|
+
return () => cancelAnimationFrame(rAF);
|
|
155
|
+
}, []);
|
|
156
|
+
return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(
|
|
157
|
+
Primitive.div,
|
|
158
|
+
{
|
|
159
|
+
"data-state": isSelected ? "active" : "inactive",
|
|
160
|
+
"data-orientation": context.orientation,
|
|
161
|
+
role: "tabpanel",
|
|
162
|
+
"aria-labelledby": triggerId,
|
|
163
|
+
hidden: !present,
|
|
164
|
+
id: contentId,
|
|
165
|
+
tabIndex: 0,
|
|
166
|
+
...contentProps,
|
|
167
|
+
ref: forwardedRef,
|
|
168
|
+
style: {
|
|
169
|
+
...props.style,
|
|
170
|
+
animationDuration: isMountAnimationPreventedRef.current ? "0s" : void 0
|
|
171
|
+
},
|
|
172
|
+
children: present && children
|
|
173
|
+
}
|
|
174
|
+
) });
|
|
175
|
+
}
|
|
176
|
+
);
|
|
177
|
+
TabsContent.displayName = CONTENT_NAME;
|
|
178
|
+
function makeTriggerId(baseId, value) {
|
|
179
|
+
return `${baseId}-trigger-${value}`;
|
|
170
180
|
}
|
|
171
|
-
function
|
|
172
|
-
|
|
181
|
+
function makeContentId(baseId, value) {
|
|
182
|
+
return `${baseId}-content-${value}`;
|
|
173
183
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
184
|
+
var Root2 = Tabs;
|
|
185
|
+
var List = TabsList;
|
|
186
|
+
var Trigger = TabsTrigger;
|
|
187
|
+
var Content = TabsContent;
|
|
188
|
+
export {
|
|
189
|
+
Content,
|
|
190
|
+
List,
|
|
191
|
+
Root2 as Root,
|
|
192
|
+
Tabs,
|
|
193
|
+
TabsContent,
|
|
194
|
+
TabsList,
|
|
195
|
+
TabsTrigger,
|
|
196
|
+
Trigger,
|
|
197
|
+
createTabsScope
|
|
198
|
+
};
|
|
183
199
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/react/tabs/src/index.ts","packages/react/tabs/src/Tabs.tsx"],"sourcesContent":["export {\n createTabsScope,\n //\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n //\n Root,\n List,\n Trigger,\n Content,\n} from './Tabs';\nexport type { TabsProps, TabsListProps, TabsTriggerProps, TabsContentProps } from './Tabs';\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useId } from '@radix-ui/react-id';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Tabs\n * -----------------------------------------------------------------------------------------------*/\n\nconst TABS_NAME = 'Tabs';\n\ntype ScopedProps<P> = P & { __scopeTabs?: Scope };\nconst [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope,\n]);\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\n\ntype TabsContextValue = {\n baseId: string;\n value?: string;\n onValueChange: (value: string) => void;\n orientation?: TabsProps['orientation'];\n dir?: TabsProps['dir'];\n activationMode?: TabsProps['activationMode'];\n};\n\nconst [TabsProvider, useTabsContext] = createTabsContext<TabsContextValue>(TABS_NAME);\n\ntype TabsElement = React.ElementRef<typeof Primitive.div>;\ntype RovingFocusGroupProps = Radix.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface TabsProps extends PrimitiveDivProps {\n /** The value for the selected tab, if controlled */\n value?: string;\n /** The value of the tab to select by default, if uncontrolled */\n defaultValue?: string;\n /** A function called when a new tab is selected */\n onValueChange?: (value: string) => void;\n /**\n * The orientation the tabs are layed out.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n * @defaultValue horizontal\n */\n orientation?: RovingFocusGroupProps['orientation'];\n /**\n * The direction of navigation between toolbar items.\n */\n dir?: RovingFocusGroupProps['dir'];\n /**\n * Whether a tab is activated automatically or manually.\n * @defaultValue automatic\n * */\n activationMode?: 'automatic' | 'manual';\n}\n\nconst Tabs = React.forwardRef<TabsElement, TabsProps>(\n (props: ScopedProps<TabsProps>, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = 'horizontal',\n dir,\n activationMode = 'automatic',\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue,\n });\n\n return (\n <TabsProvider\n scope={__scopeTabs}\n baseId={useId()}\n value={value}\n onValueChange={setValue}\n orientation={orientation}\n dir={direction}\n activationMode={activationMode}\n >\n <Primitive.div\n dir={direction}\n data-orientation={orientation}\n {...tabsProps}\n ref={forwardedRef}\n />\n </TabsProvider>\n );\n }\n);\n\nTabs.displayName = TABS_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst TAB_LIST_NAME = 'TabsList';\n\ntype TabsListElement = React.ElementRef<typeof Primitive.div>;\ninterface TabsListProps extends PrimitiveDivProps {\n loop?: RovingFocusGroupProps['loop'];\n}\n\nconst TabsList = React.forwardRef<TabsListElement, TabsListProps>(\n (props: ScopedProps<TabsListProps>, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return (\n <RovingFocusGroup.Root\n asChild\n {...rovingFocusGroupScope}\n orientation={context.orientation}\n dir={context.dir}\n loop={loop}\n >\n <Primitive.div\n role=\"tablist\"\n aria-orientation={context.orientation}\n {...listProps}\n ref={forwardedRef}\n />\n </RovingFocusGroup.Root>\n );\n }\n);\n\nTabsList.displayName = TAB_LIST_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'TabsTrigger';\n\ntype TabsTriggerElement = React.ElementRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface TabsTriggerProps extends PrimitiveButtonProps {\n value: string;\n}\n\nconst TabsTrigger = React.forwardRef<TabsTriggerElement, TabsTriggerProps>(\n (props: ScopedProps<TabsTriggerProps>, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return (\n <RovingFocusGroup.Item\n asChild\n {...rovingFocusGroupScope}\n focusable={!disabled}\n active={isSelected}\n >\n <Primitive.button\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n aria-controls={contentId}\n data-state={isSelected ? 'active' : 'inactive'}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n id={triggerId}\n {...triggerProps}\n ref={forwardedRef}\n onMouseDown={composeEventHandlers(props.onMouseDown, (event) => {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n // prevent focus to avoid accidental activation\n event.preventDefault();\n }\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if ([' ', 'Enter'].includes(event.key)) context.onValueChange(value);\n })}\n onFocus={composeEventHandlers(props.onFocus, () => {\n // handle \"automatic\" activation if necessary\n // ie. activate tab following focus\n const isAutomaticActivation = context.activationMode !== 'manual';\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })}\n />\n </RovingFocusGroup.Item>\n );\n }\n);\n\nTabsTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'TabsContent';\n\ntype TabsContentElement = React.ElementRef<typeof Primitive.div>;\ninterface TabsContentProps extends PrimitiveDivProps {\n value: string;\n\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst TabsContent = React.forwardRef<TabsContentElement, TabsContentProps>(\n (props: ScopedProps<TabsContentProps>, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => (isMountAnimationPreventedRef.current = false));\n return () => cancelAnimationFrame(rAF);\n }, []);\n\n return (\n <Presence present={forceMount || isSelected}>\n {({ present }) => (\n <Primitive.div\n data-state={isSelected ? 'active' : 'inactive'}\n data-orientation={context.orientation}\n role=\"tabpanel\"\n aria-labelledby={triggerId}\n hidden={!present}\n id={contentId}\n tabIndex={0}\n {...contentProps}\n ref={forwardedRef}\n style={{\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? '0s' : undefined,\n }}\n >\n {present && children}\n </Primitive.div>\n )}\n </Presence>\n );\n }\n);\n\nTabsContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction makeTriggerId(baseId: string, value: string) {\n return `${baseId}-trigger-${value}`;\n}\n\nfunction makeContentId(baseId: string, value: string) {\n return `${baseId}-content-${value}`;\n}\n\nconst Root = Tabs;\nconst List = TabsList;\nconst Trigger = TabsTrigger;\nconst Content = TabsContent;\n\nexport {\n createTabsScope,\n //\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n //\n Root,\n List,\n Trigger,\n Content,\n};\nexport type { TabsProps, TabsListProps, TabsTriggerProps, TabsContentProps };\n"],"names":["createTabsScope","Tabs","TabsList","TabsTrigger","TabsContent","Root","List","Trigger","Content","React","composeEventHandlers","createContextScope","createRovingFocusGroupScope","Presence","Primitive","RovingFocusGroup","useDirection","useControllableState","useId","TABS_NAME","createTabsContext","useRovingFocusGroupScope","TabsProvider","useTabsContext","forwardRef","props","forwardedRef","__scopeTabs","value","valueProp","onValueChange","defaultValue","orientation","dir","activationMode","tabsProps","direction","setValue","prop","onChange","defaultProp","TAB_LIST_NAME","loop","listProps","context","rovingFocusGroupScope","TRIGGER_NAME","disabled","triggerProps","triggerId","makeTriggerId","baseId","contentId","makeContentId","isSelected","undefined","onMouseDown","event","button","ctrlKey","preventDefault","onKeyDown","includes","key","onFocus","isAutomaticActivation","CONTENT_NAME","forceMount","children","contentProps","isMountAnimationPreventedRef","useRef","useEffect","rAF","requestAnimationFrame","current","cancelAnimationFrame","present","style","animationDuration"],"version":3,"file":"index.mjs.map"}
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/Tabs.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useId } from '@radix-ui/react-id';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Tabs\n * -----------------------------------------------------------------------------------------------*/\n\nconst TABS_NAME = 'Tabs';\n\ntype ScopedProps<P> = P & { __scopeTabs?: Scope };\nconst [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope,\n]);\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\n\ntype TabsContextValue = {\n baseId: string;\n value?: string;\n onValueChange: (value: string) => void;\n orientation?: TabsProps['orientation'];\n dir?: TabsProps['dir'];\n activationMode?: TabsProps['activationMode'];\n};\n\nconst [TabsProvider, useTabsContext] = createTabsContext<TabsContextValue>(TABS_NAME);\n\ntype TabsElement = React.ElementRef<typeof Primitive.div>;\ntype RovingFocusGroupProps = Radix.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface TabsProps extends PrimitiveDivProps {\n /** The value for the selected tab, if controlled */\n value?: string;\n /** The value of the tab to select by default, if uncontrolled */\n defaultValue?: string;\n /** A function called when a new tab is selected */\n onValueChange?: (value: string) => void;\n /**\n * The orientation the tabs are layed out.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n * @defaultValue horizontal\n */\n orientation?: RovingFocusGroupProps['orientation'];\n /**\n * The direction of navigation between toolbar items.\n */\n dir?: RovingFocusGroupProps['dir'];\n /**\n * Whether a tab is activated automatically or manually.\n * @defaultValue automatic\n * */\n activationMode?: 'automatic' | 'manual';\n}\n\nconst Tabs = React.forwardRef<TabsElement, TabsProps>(\n (props: ScopedProps<TabsProps>, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = 'horizontal',\n dir,\n activationMode = 'automatic',\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue,\n });\n\n return (\n <TabsProvider\n scope={__scopeTabs}\n baseId={useId()}\n value={value}\n onValueChange={setValue}\n orientation={orientation}\n dir={direction}\n activationMode={activationMode}\n >\n <Primitive.div\n dir={direction}\n data-orientation={orientation}\n {...tabsProps}\n ref={forwardedRef}\n />\n </TabsProvider>\n );\n }\n);\n\nTabs.displayName = TABS_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst TAB_LIST_NAME = 'TabsList';\n\ntype TabsListElement = React.ElementRef<typeof Primitive.div>;\ninterface TabsListProps extends PrimitiveDivProps {\n loop?: RovingFocusGroupProps['loop'];\n}\n\nconst TabsList = React.forwardRef<TabsListElement, TabsListProps>(\n (props: ScopedProps<TabsListProps>, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return (\n <RovingFocusGroup.Root\n asChild\n {...rovingFocusGroupScope}\n orientation={context.orientation}\n dir={context.dir}\n loop={loop}\n >\n <Primitive.div\n role=\"tablist\"\n aria-orientation={context.orientation}\n {...listProps}\n ref={forwardedRef}\n />\n </RovingFocusGroup.Root>\n );\n }\n);\n\nTabsList.displayName = TAB_LIST_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'TabsTrigger';\n\ntype TabsTriggerElement = React.ElementRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface TabsTriggerProps extends PrimitiveButtonProps {\n value: string;\n}\n\nconst TabsTrigger = React.forwardRef<TabsTriggerElement, TabsTriggerProps>(\n (props: ScopedProps<TabsTriggerProps>, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return (\n <RovingFocusGroup.Item\n asChild\n {...rovingFocusGroupScope}\n focusable={!disabled}\n active={isSelected}\n >\n <Primitive.button\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n aria-controls={contentId}\n data-state={isSelected ? 'active' : 'inactive'}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n id={triggerId}\n {...triggerProps}\n ref={forwardedRef}\n onMouseDown={composeEventHandlers(props.onMouseDown, (event) => {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n // prevent focus to avoid accidental activation\n event.preventDefault();\n }\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if ([' ', 'Enter'].includes(event.key)) context.onValueChange(value);\n })}\n onFocus={composeEventHandlers(props.onFocus, () => {\n // handle \"automatic\" activation if necessary\n // ie. activate tab following focus\n const isAutomaticActivation = context.activationMode !== 'manual';\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })}\n />\n </RovingFocusGroup.Item>\n );\n }\n);\n\nTabsTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'TabsContent';\n\ntype TabsContentElement = React.ElementRef<typeof Primitive.div>;\ninterface TabsContentProps extends PrimitiveDivProps {\n value: string;\n\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst TabsContent = React.forwardRef<TabsContentElement, TabsContentProps>(\n (props: ScopedProps<TabsContentProps>, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => (isMountAnimationPreventedRef.current = false));\n return () => cancelAnimationFrame(rAF);\n }, []);\n\n return (\n <Presence present={forceMount || isSelected}>\n {({ present }) => (\n <Primitive.div\n data-state={isSelected ? 'active' : 'inactive'}\n data-orientation={context.orientation}\n role=\"tabpanel\"\n aria-labelledby={triggerId}\n hidden={!present}\n id={contentId}\n tabIndex={0}\n {...contentProps}\n ref={forwardedRef}\n style={{\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? '0s' : undefined,\n }}\n >\n {present && children}\n </Primitive.div>\n )}\n </Presence>\n );\n }\n);\n\nTabsContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction makeTriggerId(baseId: string, value: string) {\n return `${baseId}-trigger-${value}`;\n}\n\nfunction makeContentId(baseId: string, value: string) {\n return `${baseId}-content-${value}`;\n}\n\nconst Root = Tabs;\nconst List = TabsList;\nconst Trigger = TabsTrigger;\nconst Content = TabsContent;\n\nexport {\n createTabsScope,\n //\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n //\n Root,\n List,\n Trigger,\n Content,\n};\nexport type { TabsProps, TabsListProps, TabsTriggerProps, TabsContentProps };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Root"]
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@radix-ui/react-tabs",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0-rc.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -28,15 +28,14 @@
|
|
|
28
28
|
"version": "yarn version"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@
|
|
32
|
-
"@radix-ui/
|
|
33
|
-
"@radix-ui/react-
|
|
34
|
-
"@radix-ui/react-
|
|
35
|
-
"@radix-ui/react-
|
|
36
|
-
"@radix-ui/react-
|
|
37
|
-
"@radix-ui/react-
|
|
38
|
-
"@radix-ui/react-
|
|
39
|
-
"@radix-ui/react-use-controllable-state": "1.0.1"
|
|
31
|
+
"@radix-ui/primitive": "1.1.0-rc.2",
|
|
32
|
+
"@radix-ui/react-context": "1.1.0-rc.2",
|
|
33
|
+
"@radix-ui/react-direction": "1.1.0-rc.2",
|
|
34
|
+
"@radix-ui/react-id": "1.1.0-rc.2",
|
|
35
|
+
"@radix-ui/react-presence": "1.1.0-rc.2",
|
|
36
|
+
"@radix-ui/react-primitive": "1.1.0-rc.2",
|
|
37
|
+
"@radix-ui/react-roving-focus": "1.1.0-rc.2",
|
|
38
|
+
"@radix-ui/react-use-controllable-state": "1.1.0-rc.2"
|
|
40
39
|
},
|
|
41
40
|
"peerDependencies": {
|
|
42
41
|
"@types/react": "*",
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":";;;;AAqBA,OAAA,sFAEE,CAAC;AAeH,6BAA6B,MAAM,wBAAwB,CAAC,OAAO,iBAAiB,IAAI,CAAC,CAAC;AAC1F,yBAAyB,MAAM,wBAAwB,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC;AAC9E,0BAAoB,SAAQ,iBAAiB;IAC3C,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;;OAIG;IACH,WAAW,CAAC,EAAE,qBAAqB,CAAC,aAAa,CAAC,CAAC;IACnD;;OAEG;IACH,GAAG,CAAC,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACnC;;;SAGK;IACL,cAAc,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;CACzC;AAED,OAAA,MAAM,sFAsCL,CAAC;AAWF,8BAAwB,SAAQ,iBAAiB;IAC/C,IAAI,CAAC,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;CACtC;AAED,OAAA,MAAM,8FAsBL,CAAC;AAWF,4BAA4B,MAAM,wBAAwB,CAAC,OAAO,UAAU,MAAM,CAAC,CAAC;AACpF,iCAA2B,SAAQ,oBAAoB;IACrD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,OAAA,MAAM,uGAmDL,CAAC;AAWF,iCAA2B,SAAQ,iBAAiB;IAClD,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,OAAA,MAAM,oGAsCL,CAAC;AAcF,OAAA,MAAM,sFAAW,CAAC;AAClB,OAAA,MAAM,0FAAe,CAAC;AACtB,OAAA,MAAM,mGAAqB,CAAC;AAC5B,OAAA,MAAM,gGAAqB,CAAC","sources":["packages/react/tabs/src/packages/react/tabs/src/Tabs.tsx","packages/react/tabs/src/packages/react/tabs/src/index.ts","packages/react/tabs/src/index.ts"],"sourcesContent":[null,null,"export {\n createTabsScope,\n //\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n //\n Root,\n List,\n Trigger,\n Content,\n} from './Tabs';\nexport type { TabsProps, TabsListProps, TabsTriggerProps, TabsContentProps } from './Tabs';\n"],"names":[],"version":3,"file":"index.d.ts.map"}
|