@tamagui/roving-focus 1.142.0 → 2.0.0-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/RovingFocusGroup.cjs +9 -7
- package/dist/cjs/RovingFocusGroup.js +9 -5
- package/dist/cjs/RovingFocusGroup.js.map +1 -1
- package/dist/esm/RovingFocusGroup.js +10 -6
- package/dist/esm/RovingFocusGroup.js.map +1 -1
- package/dist/esm/RovingFocusGroup.mjs +9 -8
- package/dist/esm/RovingFocusGroup.mjs.map +1 -1
- package/package.json +11 -11
- package/src/RovingFocusGroup.tsx +7 -5
- package/types/RovingFocusGroup.d.ts +4 -1
- package/types/RovingFocusGroup.d.ts.map +1 -1
|
@@ -31,7 +31,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
31
31
|
}), mod);
|
|
32
32
|
var RovingFocusGroup_exports = {};
|
|
33
33
|
__export(RovingFocusGroup_exports, {
|
|
34
|
-
RovingFocusGroup: () => RovingFocusGroup
|
|
34
|
+
RovingFocusGroup: () => RovingFocusGroup,
|
|
35
|
+
RovingFocusGroupItem: () => RovingFocusGroupItem
|
|
35
36
|
});
|
|
36
37
|
module.exports = __toCommonJS(RovingFocusGroup_exports);
|
|
37
38
|
var import_collection = require("@tamagui/collection"),
|
|
@@ -58,6 +59,7 @@ const ENTRY_FOCUS = "rovingFocusGroup.onEntryFocus",
|
|
|
58
59
|
defaultCurrentTabStopId,
|
|
59
60
|
onCurrentTabStopIdChange,
|
|
60
61
|
onEntryFocus,
|
|
62
|
+
asChild,
|
|
61
63
|
...groupProps
|
|
62
64
|
} = props,
|
|
63
65
|
ref = React.useRef(null),
|
|
@@ -73,10 +75,12 @@ const ENTRY_FOCUS = "rovingFocusGroup.onEntryFocus",
|
|
|
73
75
|
getItems = useCollection(__scopeRovingFocusGroup || ROVING_FOCUS_GROUP_CONTEXT),
|
|
74
76
|
isClickFocusRef = React.useRef(!1),
|
|
75
77
|
[focusableItemsCount, setFocusableItemsCount] = React.useState(0);
|
|
76
|
-
|
|
78
|
+
React.useEffect(() => {
|
|
77
79
|
const node = ref.current;
|
|
78
80
|
if (node) return node.addEventListener(ENTRY_FOCUS, handleEntryFocus), () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);
|
|
79
|
-
}, [handleEntryFocus])
|
|
81
|
+
}, [handleEntryFocus]);
|
|
82
|
+
const Comp = asChild ? import_core.Slot : import_core.Stack;
|
|
83
|
+
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(RovingFocusProvider, {
|
|
80
84
|
scope: __scopeRovingFocusGroup,
|
|
81
85
|
orientation,
|
|
82
86
|
dir: direction,
|
|
@@ -86,14 +90,12 @@ const ENTRY_FOCUS = "rovingFocusGroup.onEntryFocus",
|
|
|
86
90
|
onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(!0), []),
|
|
87
91
|
onFocusableItemAdd: React.useCallback(() => setFocusableItemsCount(prevCount => prevCount + 1), []),
|
|
88
92
|
onFocusableItemRemove: React.useCallback(() => setFocusableItemsCount(prevCount => prevCount - 1), []),
|
|
89
|
-
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(
|
|
93
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(Comp, {
|
|
90
94
|
tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,
|
|
91
95
|
"data-orientation": orientation,
|
|
92
96
|
...groupProps,
|
|
93
97
|
ref: composedRefs,
|
|
94
|
-
|
|
95
|
-
outline: "none"
|
|
96
|
-
}, props.style],
|
|
98
|
+
outlineStyle: "none",
|
|
97
99
|
onMouseDown: (0, import_helpers.composeEventHandlers)(props.onMouseDown, () => {
|
|
98
100
|
isClickFocusRef.current = !0;
|
|
99
101
|
}),
|
|
@@ -22,7 +22,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
22
22
|
)), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
23
23
|
var RovingFocusGroup_exports = {};
|
|
24
24
|
__export(RovingFocusGroup_exports, {
|
|
25
|
-
RovingFocusGroup: () => RovingFocusGroup
|
|
25
|
+
RovingFocusGroup: () => RovingFocusGroup,
|
|
26
|
+
RovingFocusGroupItem: () => RovingFocusGroupItem
|
|
26
27
|
});
|
|
27
28
|
module.exports = __toCommonJS(RovingFocusGroup_exports);
|
|
28
29
|
var import_collection = require("@tamagui/collection"), import_compose_refs = require("@tamagui/compose-refs"), import_constants = require("@tamagui/constants"), import_core = require("@tamagui/core"), import_helpers = require("@tamagui/helpers"), import_use_controllable_state = require("@tamagui/use-controllable-state"), import_use_direction = require("@tamagui/use-direction"), React = __toESM(require("react"), 1), import_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -36,17 +37,20 @@ const ENTRY_FOCUS = "rovingFocusGroup.onEntryFocus", EVENT_OPTIONS = { bubbles:
|
|
|
36
37
|
defaultCurrentTabStopId,
|
|
37
38
|
onCurrentTabStopIdChange,
|
|
38
39
|
onEntryFocus,
|
|
40
|
+
asChild,
|
|
39
41
|
...groupProps
|
|
40
42
|
} = props, ref = React.useRef(null), composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, ref), direction = (0, import_use_direction.useDirection)(dir), [currentTabStopId = null, setCurrentTabStopId] = (0, import_use_controllable_state.useControllableState)({
|
|
41
43
|
prop: currentTabStopIdProp,
|
|
42
44
|
defaultProp: defaultCurrentTabStopId ?? null,
|
|
43
45
|
onChange: onCurrentTabStopIdChange
|
|
44
46
|
}), [isTabbingBackOut, setIsTabbingBackOut] = React.useState(!1), handleEntryFocus = (0, import_core.useEvent)(onEntryFocus), getItems = useCollection(__scopeRovingFocusGroup || ROVING_FOCUS_GROUP_CONTEXT), isClickFocusRef = React.useRef(!1), [focusableItemsCount, setFocusableItemsCount] = React.useState(0);
|
|
45
|
-
|
|
47
|
+
React.useEffect(() => {
|
|
46
48
|
const node = ref.current;
|
|
47
49
|
if (node)
|
|
48
50
|
return node.addEventListener(ENTRY_FOCUS, handleEntryFocus), () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);
|
|
49
|
-
}, [handleEntryFocus])
|
|
51
|
+
}, [handleEntryFocus]);
|
|
52
|
+
const Comp = asChild ? import_core.Slot : import_core.Stack;
|
|
53
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50
54
|
RovingFocusProvider,
|
|
51
55
|
{
|
|
52
56
|
scope: __scopeRovingFocusGroup,
|
|
@@ -68,13 +72,13 @@ const ENTRY_FOCUS = "rovingFocusGroup.onEntryFocus", EVENT_OPTIONS = { bubbles:
|
|
|
68
72
|
[]
|
|
69
73
|
),
|
|
70
74
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
71
|
-
|
|
75
|
+
Comp,
|
|
72
76
|
{
|
|
73
77
|
tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,
|
|
74
78
|
"data-orientation": orientation,
|
|
75
79
|
...groupProps,
|
|
76
80
|
ref: composedRefs,
|
|
77
|
-
|
|
81
|
+
outlineStyle: "none",
|
|
78
82
|
onMouseDown: (0, import_helpers.composeEventHandlers)(props.onMouseDown, () => {
|
|
79
83
|
isClickFocusRef.current = !0;
|
|
80
84
|
}),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/RovingFocusGroup.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAiC,gCACjC,sBAAgC,kCAChC,mBAAsB,+BACtB,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createCollection } from "@tamagui/collection";
|
|
2
2
|
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
3
3
|
import { isWeb } from "@tamagui/constants";
|
|
4
|
-
import { Stack, createStyledContext, useEvent } from "@tamagui/core";
|
|
4
|
+
import { Slot, Stack, createStyledContext, useEvent } from "@tamagui/core";
|
|
5
5
|
import { composeEventHandlers, withStaticProperties } from "@tamagui/helpers";
|
|
6
6
|
import { useControllableState } from "@tamagui/use-controllable-state";
|
|
7
7
|
import { useDirection } from "@tamagui/use-direction";
|
|
@@ -17,17 +17,20 @@ const ENTRY_FOCUS = "rovingFocusGroup.onEntryFocus", EVENT_OPTIONS = { bubbles:
|
|
|
17
17
|
defaultCurrentTabStopId,
|
|
18
18
|
onCurrentTabStopIdChange,
|
|
19
19
|
onEntryFocus,
|
|
20
|
+
asChild,
|
|
20
21
|
...groupProps
|
|
21
22
|
} = props, ref = React.useRef(null), composedRefs = useComposedRefs(forwardedRef, ref), direction = useDirection(dir), [currentTabStopId = null, setCurrentTabStopId] = useControllableState({
|
|
22
23
|
prop: currentTabStopIdProp,
|
|
23
24
|
defaultProp: defaultCurrentTabStopId ?? null,
|
|
24
25
|
onChange: onCurrentTabStopIdChange
|
|
25
26
|
}), [isTabbingBackOut, setIsTabbingBackOut] = React.useState(!1), handleEntryFocus = useEvent(onEntryFocus), getItems = useCollection(__scopeRovingFocusGroup || ROVING_FOCUS_GROUP_CONTEXT), isClickFocusRef = React.useRef(!1), [focusableItemsCount, setFocusableItemsCount] = React.useState(0);
|
|
26
|
-
|
|
27
|
+
React.useEffect(() => {
|
|
27
28
|
const node = ref.current;
|
|
28
29
|
if (node)
|
|
29
30
|
return node.addEventListener(ENTRY_FOCUS, handleEntryFocus), () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);
|
|
30
|
-
}, [handleEntryFocus])
|
|
31
|
+
}, [handleEntryFocus]);
|
|
32
|
+
const Comp = asChild ? Slot : Stack;
|
|
33
|
+
return /* @__PURE__ */ jsx(
|
|
31
34
|
RovingFocusProvider,
|
|
32
35
|
{
|
|
33
36
|
scope: __scopeRovingFocusGroup,
|
|
@@ -49,13 +52,13 @@ const ENTRY_FOCUS = "rovingFocusGroup.onEntryFocus", EVENT_OPTIONS = { bubbles:
|
|
|
49
52
|
[]
|
|
50
53
|
),
|
|
51
54
|
children: /* @__PURE__ */ jsx(
|
|
52
|
-
|
|
55
|
+
Comp,
|
|
53
56
|
{
|
|
54
57
|
tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,
|
|
55
58
|
"data-orientation": orientation,
|
|
56
59
|
...groupProps,
|
|
57
60
|
ref: composedRefs,
|
|
58
|
-
|
|
61
|
+
outlineStyle: "none",
|
|
59
62
|
onMouseDown: composeEventHandlers(props.onMouseDown, () => {
|
|
60
63
|
isClickFocusRef.current = !0;
|
|
61
64
|
}),
|
|
@@ -189,6 +192,7 @@ function wrapArray(array, startIndex) {
|
|
|
189
192
|
return array.map((_, index) => array[(startIndex + index) % array.length]);
|
|
190
193
|
}
|
|
191
194
|
export {
|
|
192
|
-
RovingFocusGroup
|
|
195
|
+
RovingFocusGroup,
|
|
196
|
+
RovingFocusGroupItem
|
|
193
197
|
};
|
|
194
198
|
//# sourceMappingURL=RovingFocusGroup.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/RovingFocusGroup.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,wBAAwB;AACjC,SAAS,uBAAuB;AAChC,SAAS,aAAa;AACtB,SAAS,OAAO,qBAAqB,gBAAgB;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createCollection } from "@tamagui/collection";
|
|
2
2
|
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
3
3
|
import { isWeb } from "@tamagui/constants";
|
|
4
|
-
import { Stack, createStyledContext, useEvent } from "@tamagui/core";
|
|
4
|
+
import { Slot, Stack, createStyledContext, useEvent } from "@tamagui/core";
|
|
5
5
|
import { composeEventHandlers, withStaticProperties } from "@tamagui/helpers";
|
|
6
6
|
import { useControllableState } from "@tamagui/use-controllable-state";
|
|
7
7
|
import { useDirection } from "@tamagui/use-direction";
|
|
@@ -22,6 +22,7 @@ const ENTRY_FOCUS = "rovingFocusGroup.onEntryFocus",
|
|
|
22
22
|
defaultCurrentTabStopId,
|
|
23
23
|
onCurrentTabStopIdChange,
|
|
24
24
|
onEntryFocus,
|
|
25
|
+
asChild,
|
|
25
26
|
...groupProps
|
|
26
27
|
} = props,
|
|
27
28
|
ref = React.useRef(null),
|
|
@@ -37,10 +38,12 @@ const ENTRY_FOCUS = "rovingFocusGroup.onEntryFocus",
|
|
|
37
38
|
getItems = useCollection(__scopeRovingFocusGroup || ROVING_FOCUS_GROUP_CONTEXT),
|
|
38
39
|
isClickFocusRef = React.useRef(!1),
|
|
39
40
|
[focusableItemsCount, setFocusableItemsCount] = React.useState(0);
|
|
40
|
-
|
|
41
|
+
React.useEffect(() => {
|
|
41
42
|
const node = ref.current;
|
|
42
43
|
if (node) return node.addEventListener(ENTRY_FOCUS, handleEntryFocus), () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);
|
|
43
|
-
}, [handleEntryFocus])
|
|
44
|
+
}, [handleEntryFocus]);
|
|
45
|
+
const Comp = asChild ? Slot : Stack;
|
|
46
|
+
return /* @__PURE__ */jsx(RovingFocusProvider, {
|
|
44
47
|
scope: __scopeRovingFocusGroup,
|
|
45
48
|
orientation,
|
|
46
49
|
dir: direction,
|
|
@@ -50,14 +53,12 @@ const ENTRY_FOCUS = "rovingFocusGroup.onEntryFocus",
|
|
|
50
53
|
onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(!0), []),
|
|
51
54
|
onFocusableItemAdd: React.useCallback(() => setFocusableItemsCount(prevCount => prevCount + 1), []),
|
|
52
55
|
onFocusableItemRemove: React.useCallback(() => setFocusableItemsCount(prevCount => prevCount - 1), []),
|
|
53
|
-
children: /* @__PURE__ */jsx(
|
|
56
|
+
children: /* @__PURE__ */jsx(Comp, {
|
|
54
57
|
tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,
|
|
55
58
|
"data-orientation": orientation,
|
|
56
59
|
...groupProps,
|
|
57
60
|
ref: composedRefs,
|
|
58
|
-
|
|
59
|
-
outline: "none"
|
|
60
|
-
}, props.style],
|
|
61
|
+
outlineStyle: "none",
|
|
61
62
|
onMouseDown: composeEventHandlers(props.onMouseDown, () => {
|
|
62
63
|
isClickFocusRef.current = !0;
|
|
63
64
|
}),
|
|
@@ -181,5 +182,5 @@ function focusFirst(candidates) {
|
|
|
181
182
|
function wrapArray(array, startIndex) {
|
|
182
183
|
return array.map((_, index) => array[(startIndex + index) % array.length]);
|
|
183
184
|
}
|
|
184
|
-
export { RovingFocusGroup };
|
|
185
|
+
export { RovingFocusGroup, RovingFocusGroupItem };
|
|
185
186
|
//# sourceMappingURL=RovingFocusGroup.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createCollection","useComposedRefs","isWeb","Stack","createStyledContext","useEvent","composeEventHandlers","withStaticProperties","useControllableState","useDirection","React","jsx","ENTRY_FOCUS","EVENT_OPTIONS","bubbles","cancelable","RovingFocusGroupImpl","forwardRef","props","forwardedRef","__scopeRovingFocusGroup","orientation","loop","dir","currentTabStopId","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","groupProps","ref","useRef","composedRefs","direction","setCurrentTabStopId","prop","defaultProp","onChange","isTabbingBackOut","setIsTabbingBackOut","useState","handleEntryFocus","getItems","useCollection","ROVING_FOCUS_GROUP_CONTEXT","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","useEffect","node","current","addEventListener","removeEventListener","RovingFocusProvider","scope","onItemFocus","useCallback","tabStopId","onItemShiftTab","onFocusableItemAdd","prevCount","onFocusableItemRemove","children","tabIndex","
|
|
1
|
+
{"version":3,"names":["createCollection","useComposedRefs","isWeb","Slot","Stack","createStyledContext","useEvent","composeEventHandlers","withStaticProperties","useControllableState","useDirection","React","jsx","ENTRY_FOCUS","EVENT_OPTIONS","bubbles","cancelable","RovingFocusGroupImpl","forwardRef","props","forwardedRef","__scopeRovingFocusGroup","orientation","loop","dir","currentTabStopId","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","asChild","groupProps","ref","useRef","composedRefs","direction","setCurrentTabStopId","prop","defaultProp","onChange","isTabbingBackOut","setIsTabbingBackOut","useState","handleEntryFocus","getItems","useCollection","ROVING_FOCUS_GROUP_CONTEXT","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","useEffect","node","current","addEventListener","removeEventListener","Comp","RovingFocusProvider","scope","onItemFocus","useCallback","tabStopId","onItemShiftTab","onFocusableItemAdd","prevCount","onFocusableItemRemove","children","tabIndex","outlineStyle","onMouseDown","onFocus","event","isKeyboardFocus","target","currentTarget","entryFocusEvent","CustomEvent","dispatchEvent","defaultPrevented","items","filter","item","focusable","activeItem","find","active","currentItem","id","candidateNodes","Boolean","map","focusFirst","onBlur","ITEM_NAME","RovingFocusGroupItem","itemProps","autoId","useId","context","useRovingFocusContext","isCurrentTabStop","Collection","ItemSlot","preventDefault","onKeyDown","key","shiftKey","focusIntent","getFocusIntent","reverse","currentIndex","indexOf","wrapArray","slice","setTimeout","displayName","GROUP_NAME","Provider","useStyledContext","RovingFocusGroup","Item","MAP_KEY_TO_FOCUS_INTENT","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","PageUp","Home","PageDown","End","getDirectionAwareKey","includes","candidates","PREVIOUSLY_FOCUSED_ELEMENT","document","activeElement","candidate","focus","array","startIndex","_","index","length"],"sources":["../../src/RovingFocusGroup.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/roving-focus",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-001",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"*.css"
|
|
@@ -38,18 +38,18 @@
|
|
|
38
38
|
}
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@tamagui/collection": "
|
|
42
|
-
"@tamagui/compose-refs": "
|
|
43
|
-
"@tamagui/constants": "
|
|
44
|
-
"@tamagui/core": "
|
|
45
|
-
"@tamagui/create-context": "
|
|
46
|
-
"@tamagui/helpers": "
|
|
47
|
-
"@tamagui/use-controllable-state": "
|
|
48
|
-
"@tamagui/use-direction": "
|
|
49
|
-
"@tamagui/use-event": "
|
|
41
|
+
"@tamagui/collection": "2.0.0-001",
|
|
42
|
+
"@tamagui/compose-refs": "2.0.0-001",
|
|
43
|
+
"@tamagui/constants": "2.0.0-001",
|
|
44
|
+
"@tamagui/core": "2.0.0-001",
|
|
45
|
+
"@tamagui/create-context": "2.0.0-001",
|
|
46
|
+
"@tamagui/helpers": "2.0.0-001",
|
|
47
|
+
"@tamagui/use-controllable-state": "2.0.0-001",
|
|
48
|
+
"@tamagui/use-direction": "2.0.0-001",
|
|
49
|
+
"@tamagui/use-event": "2.0.0-001"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@tamagui/build": "
|
|
52
|
+
"@tamagui/build": "2.0.0-001",
|
|
53
53
|
"react": "*"
|
|
54
54
|
},
|
|
55
55
|
"publishConfig": {
|
package/src/RovingFocusGroup.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createCollection } from '@tamagui/collection'
|
|
2
2
|
import { useComposedRefs } from '@tamagui/compose-refs'
|
|
3
3
|
import { isWeb } from '@tamagui/constants'
|
|
4
|
-
import { Stack, createStyledContext, useEvent } from '@tamagui/core'
|
|
4
|
+
import { Slot, Stack, createStyledContext, useEvent } from '@tamagui/core'
|
|
5
5
|
import { composeEventHandlers, withStaticProperties } from '@tamagui/helpers'
|
|
6
6
|
import { useControllableState } from '@tamagui/use-controllable-state'
|
|
7
7
|
import { useDirection } from '@tamagui/use-direction'
|
|
@@ -36,6 +36,7 @@ const RovingFocusGroupImpl = React.forwardRef<
|
|
|
36
36
|
defaultCurrentTabStopId,
|
|
37
37
|
onCurrentTabStopIdChange,
|
|
38
38
|
onEntryFocus,
|
|
39
|
+
asChild,
|
|
39
40
|
...groupProps
|
|
40
41
|
} = props
|
|
41
42
|
const ref = React.useRef<RovingFocusGroupImplElement>(null)
|
|
@@ -60,6 +61,8 @@ const RovingFocusGroupImpl = React.forwardRef<
|
|
|
60
61
|
}
|
|
61
62
|
}, [handleEntryFocus])
|
|
62
63
|
|
|
64
|
+
const Comp = (asChild ? Slot : Stack) as typeof Stack
|
|
65
|
+
|
|
63
66
|
return (
|
|
64
67
|
<RovingFocusProvider
|
|
65
68
|
scope={__scopeRovingFocusGroup}
|
|
@@ -81,13 +84,13 @@ const RovingFocusGroupImpl = React.forwardRef<
|
|
|
81
84
|
[]
|
|
82
85
|
)}
|
|
83
86
|
>
|
|
84
|
-
<
|
|
87
|
+
<Comp
|
|
85
88
|
tabIndex={isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0}
|
|
86
89
|
data-orientation={orientation}
|
|
87
90
|
{...groupProps}
|
|
88
91
|
ref={composedRefs}
|
|
92
|
+
outlineStyle="none"
|
|
89
93
|
// @ts-ignore
|
|
90
|
-
style={[{ outline: 'none' }, props.style]}
|
|
91
94
|
onMouseDown={composeEventHandlers(props.onMouseDown, () => {
|
|
92
95
|
isClickFocusRef.current = true
|
|
93
96
|
})}
|
|
@@ -97,7 +100,6 @@ const RovingFocusGroupImpl = React.forwardRef<
|
|
|
97
100
|
// We do this because Safari doesn't focus buttons when clicked, and
|
|
98
101
|
// instead, the wrapper will get focused and not through a bubbling event.
|
|
99
102
|
const isKeyboardFocus = !isClickFocusRef.current
|
|
100
|
-
|
|
101
103
|
if (
|
|
102
104
|
event.target === event.currentTarget &&
|
|
103
105
|
isKeyboardFocus &&
|
|
@@ -363,6 +365,6 @@ function wrapArray<T>(array: T[], startIndex: number) {
|
|
|
363
365
|
return array.map((_, index) => array[(startIndex + index) % array.length])
|
|
364
366
|
}
|
|
365
367
|
|
|
366
|
-
export { RovingFocusGroup }
|
|
368
|
+
export { RovingFocusGroup, RovingFocusGroupItem }
|
|
367
369
|
|
|
368
370
|
export type { RovingFocusGroupProps, RovingFocusItemProps }
|
|
@@ -13,6 +13,9 @@ interface RovingFocusItemProps extends PrimitiveSpanProps {
|
|
|
13
13
|
focusable?: boolean;
|
|
14
14
|
active?: boolean;
|
|
15
15
|
}
|
|
16
|
+
declare const RovingFocusGroupItem: React.ForwardRefExoticComponent<RovingFocusItemProps & {
|
|
17
|
+
__scopeRovingFocusGroup?: string;
|
|
18
|
+
} & React.RefAttributes<HTMLElement | import("react-native").View>>;
|
|
16
19
|
type Orientation = React.AriaAttributes['aria-orientation'];
|
|
17
20
|
type Direction = 'ltr' | 'rtl';
|
|
18
21
|
interface RovingFocusGroupOptions {
|
|
@@ -40,6 +43,6 @@ declare const RovingFocusGroup: React.ForwardRefExoticComponent<RovingFocusGroup
|
|
|
40
43
|
__scopeRovingFocusGroup?: string;
|
|
41
44
|
} & React.RefAttributes<HTMLElement | import("react-native").View>>;
|
|
42
45
|
};
|
|
43
|
-
export { RovingFocusGroup };
|
|
46
|
+
export { RovingFocusGroup, RovingFocusGroupItem };
|
|
44
47
|
export type { RovingFocusGroupProps, RovingFocusItemProps };
|
|
45
48
|
//# sourceMappingURL=RovingFocusGroup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RovingFocusGroup.d.ts","sourceRoot":"","sources":["../src/RovingFocusGroup.tsx"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"RovingFocusGroup.d.ts","sourceRoot":"","sources":["../src/RovingFocusGroup.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAQ,KAAK,EAAiC,MAAM,eAAe,CAAA;AAI1E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,KAAK,iBAAiB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,KAAK,CAAC,CAAA;AACrE,UAAU,yBACR,SAAQ,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,EACpC,uBAAuB;IACzB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,wBAAwB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC7D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACtC;AAqHD,KAAK,kBAAkB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,KAAK,CAAC,CAAA;AACtE,UAAU,oBAAqB,SAAQ,kBAAkB;IACvD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,QAAA,MAAM,oBAAoB;8BAoG4B,MAAM;mEAf1D,CAAA;AAqBF,KAAK,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAA;AAC3D,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK,CAAA;AAE9B,UAAU,uBAAuB;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB;;OAEG;IACH,GAAG,CAAC,EAAE,SAAS,CAAA;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAiBD,UAAU,qBAAsB,SAAQ,yBAAyB;CAAG;AAIpE,QAAA,MAAM,gBAAgB;8BA7CgC,MAAM;;;kCAAN,MAAM;;CAgE3D,CAAA;AAwDD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAA;AAEjD,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,CAAA"}
|