@tamagui/radio-headless 2.0.0-rc.8 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/cjs/BubbleInput.cjs +45 -40
  2. package/dist/cjs/BubbleInput.native.js +73 -69
  3. package/dist/cjs/BubbleInput.native.js.map +1 -1
  4. package/dist/cjs/index.cjs +7 -5
  5. package/dist/cjs/index.native.js +7 -5
  6. package/dist/cjs/index.native.js.map +1 -1
  7. package/dist/cjs/useRadioGroup.cjs +149 -138
  8. package/dist/cjs/useRadioGroup.native.js +163 -149
  9. package/dist/cjs/useRadioGroup.native.js.map +1 -1
  10. package/dist/cjs/utils.cjs +12 -10
  11. package/dist/cjs/utils.native.js +12 -10
  12. package/dist/cjs/utils.native.js.map +1 -1
  13. package/dist/esm/BubbleInput.mjs +18 -15
  14. package/dist/esm/BubbleInput.mjs.map +1 -1
  15. package/dist/esm/BubbleInput.native.js +18 -16
  16. package/dist/esm/BubbleInput.native.js.map +1 -1
  17. package/dist/esm/index.js +2 -2
  18. package/dist/esm/index.js.map +1 -6
  19. package/dist/esm/useRadioGroup.mjs +128 -118
  20. package/dist/esm/useRadioGroup.mjs.map +1 -1
  21. package/dist/esm/useRadioGroup.native.js +141 -129
  22. package/dist/esm/useRadioGroup.native.js.map +1 -1
  23. package/dist/jsx/BubbleInput.mjs +18 -15
  24. package/dist/jsx/BubbleInput.mjs.map +1 -1
  25. package/dist/jsx/BubbleInput.native.js +73 -69
  26. package/dist/jsx/BubbleInput.native.js.map +1 -1
  27. package/dist/jsx/index.js +2 -2
  28. package/dist/jsx/index.js.map +1 -6
  29. package/dist/jsx/index.native.js +7 -5
  30. package/dist/jsx/useRadioGroup.mjs +128 -118
  31. package/dist/jsx/useRadioGroup.mjs.map +1 -1
  32. package/dist/jsx/useRadioGroup.native.js +163 -149
  33. package/dist/jsx/useRadioGroup.native.js.map +1 -1
  34. package/dist/jsx/utils.native.js +12 -10
  35. package/package.json +16 -20
  36. package/dist/cjs/BubbleInput.js +0 -65
  37. package/dist/cjs/BubbleInput.js.map +0 -6
  38. package/dist/cjs/index.js +0 -16
  39. package/dist/cjs/index.js.map +0 -6
  40. package/dist/cjs/useRadioGroup.js +0 -160
  41. package/dist/cjs/useRadioGroup.js.map +0 -6
  42. package/dist/cjs/utils.js +0 -23
  43. package/dist/cjs/utils.js.map +0 -6
  44. package/dist/esm/BubbleInput.js +0 -43
  45. package/dist/esm/BubbleInput.js.map +0 -6
  46. package/dist/esm/useRadioGroup.js +0 -153
  47. package/dist/esm/useRadioGroup.js.map +0 -6
  48. package/dist/esm/utils.js +0 -7
  49. package/dist/esm/utils.js.map +0 -6
  50. package/dist/jsx/BubbleInput.js +0 -43
  51. package/dist/jsx/BubbleInput.js.map +0 -6
  52. package/dist/jsx/useRadioGroup.js +0 -153
  53. package/dist/jsx/useRadioGroup.js.map +0 -6
  54. package/dist/jsx/utils.js +0 -7
  55. package/dist/jsx/utils.js.map +0 -6
@@ -1,5 +1,6 @@
1
1
  import { useComposedRefs } from "@tamagui/compose-refs";
2
2
  import { isWeb } from "@tamagui/constants";
3
+ import { registerFocusable } from "@tamagui/focusable";
3
4
  import { composeEventHandlers } from "@tamagui/helpers";
4
5
  import { useLabelContext } from "@tamagui/label";
5
6
  import { useControllableState } from "@tamagui/use-controllable-state";
@@ -9,22 +10,22 @@ import { getState } from "./utils.mjs";
9
10
  import { jsx } from "react/jsx-runtime";
10
11
  function useRadioGroup(params) {
11
12
  const {
12
- value: valueProp,
13
- onValueChange,
14
- defaultValue,
15
- required,
16
- disabled,
17
- name,
18
- native,
19
- accentColor,
20
- orientation,
21
- ref
22
- } = params,
23
- [value, setValue] = useControllableState({
24
- prop: valueProp,
25
- defaultProp: defaultValue,
26
- onChange: onValueChange
27
- });
13
+ value: valueProp,
14
+ onValueChange,
15
+ defaultValue,
16
+ required,
17
+ disabled,
18
+ name,
19
+ native,
20
+ accentColor,
21
+ orientation,
22
+ ref
23
+ } = params;
24
+ const [value, setValue] = useControllableState({
25
+ prop: valueProp,
26
+ defaultProp: defaultValue,
27
+ onChange: onValueChange
28
+ });
28
29
  return {
29
30
  providerValue: {
30
31
  value,
@@ -42,118 +43,127 @@ function useRadioGroup(params) {
42
43
  },
43
44
  rovingFocusGroupAttrs: {
44
45
  orientation,
45
- loop: !0
46
+ loop: true
46
47
  }
47
48
  };
48
49
  }
49
- const ARROW_KEYS = ["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"],
50
- useRadioGroupItem = params => {
51
- const {
52
- radioGroupContext,
53
- value,
54
- labelledBy: ariaLabelledby,
55
- disabled: itemDisabled,
56
- ref: refProp,
57
- id,
58
- onPress,
59
- onKeyDown,
60
- onFocus
61
- } = params,
62
- {
63
- value: groupValue,
64
- disabled,
65
- required,
66
- onChange,
67
- name,
68
- native,
69
- accentColor
70
- } = useContext(radioGroupContext),
71
- [button, setButton] = useState(null),
72
- hasConsumerStoppedPropagationRef = useRef(!1),
73
- ref = useRef(null),
74
- composedRefs = useComposedRefs(refProp, node => setButton(node), ref),
75
- isArrowKeyPressedRef = useRef(!1),
76
- isFormControl = isWeb ? button ? !!button.closest("form") : !0 : !1,
77
- checked = groupValue === value,
78
- labelId = useLabelContext(button),
79
- labelledBy = ariaLabelledby || labelId;
80
- useEffect(() => {
81
- if (isWeb) {
82
- const handleKeyDown = event => {
83
- ARROW_KEYS.includes(event.key) && (isArrowKeyPressedRef.current = !0);
84
- },
85
- handleKeyUp = () => {
86
- isArrowKeyPressedRef.current = !1;
87
- };
88
- return document.addEventListener("keydown", handleKeyDown), document.addEventListener("keyup", handleKeyUp), () => {
89
- document.removeEventListener("keydown", handleKeyDown), document.removeEventListener("keyup", handleKeyUp);
90
- };
91
- }
92
- }, []);
93
- const isDisabled = disabled || itemDisabled;
94
- return {
95
- providerValue: {
96
- checked
97
- },
50
+ const ARROW_KEYS = ["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"];
51
+ const useRadioGroupItem = params => {
52
+ const {
53
+ radioGroupContext,
54
+ value,
55
+ labelledBy: ariaLabelledby,
56
+ disabled: itemDisabled,
57
+ ref: refProp,
58
+ id,
59
+ onPress,
60
+ onKeyDown,
61
+ onFocus
62
+ } = params;
63
+ const {
64
+ value: groupValue,
65
+ disabled,
66
+ required,
67
+ onChange,
68
+ name,
69
+ native,
70
+ accentColor
71
+ } = useContext(radioGroupContext);
72
+ const [button, setButton] = useState(null);
73
+ const hasConsumerStoppedPropagationRef = useRef(false);
74
+ const ref = useRef(null);
75
+ const composedRefs = useComposedRefs(refProp, node => setButton(node), ref);
76
+ const isArrowKeyPressedRef = useRef(false);
77
+ const isFormControl = isWeb ? button ? Boolean(button.closest("form")) : true : false;
78
+ const checked = groupValue === value;
79
+ const labelId = useLabelContext(button);
80
+ const labelledBy = ariaLabelledby || labelId;
81
+ useEffect(() => {
82
+ if (isWeb) {
83
+ const handleKeyDown = event => {
84
+ if (ARROW_KEYS.includes(event.key)) isArrowKeyPressedRef.current = true;
85
+ };
86
+ const handleKeyUp = () => {
87
+ isArrowKeyPressedRef.current = false;
88
+ };
89
+ document.addEventListener("keydown", handleKeyDown);
90
+ document.addEventListener("keyup", handleKeyUp);
91
+ return () => {
92
+ document.removeEventListener("keydown", handleKeyDown);
93
+ document.removeEventListener("keyup", handleKeyUp);
94
+ };
95
+ }
96
+ }, []);
97
+ const isDisabled = disabled || itemDisabled;
98
+ return {
99
+ providerValue: {
100
+ checked
101
+ },
102
+ checked,
103
+ isFormControl,
104
+ bubbleInput: /* @__PURE__ */jsx(BubbleInput, {
105
+ isHidden: !native,
106
+ control: button,
107
+ bubbles: !hasConsumerStoppedPropagationRef.current,
108
+ name,
109
+ value,
98
110
  checked,
99
- isFormControl,
100
- bubbleInput: /* @__PURE__ */jsx(BubbleInput, {
101
- isHidden: !native,
102
- control: button,
103
- bubbles: !hasConsumerStoppedPropagationRef.current,
104
- name,
105
- value,
106
- checked,
107
- required,
108
- disabled: isDisabled,
109
- ...(isWeb && native && {
110
- accentColor,
111
- id
112
- })
111
+ required,
112
+ disabled: isDisabled,
113
+ ...(isWeb && native && {
114
+ accentColor,
115
+ id
116
+ })
117
+ }),
118
+ native,
119
+ frameAttrs: {
120
+ "data-state": getState(checked),
121
+ "data-disabled": isDisabled ? "" : void 0,
122
+ role: "radio",
123
+ "aria-labelledby": labelledBy,
124
+ "aria-checked": checked,
125
+ "aria-required": required,
126
+ disabled: isDisabled,
127
+ ref: composedRefs,
128
+ ...(isWeb && {
129
+ type: "button",
130
+ value
113
131
  }),
114
- native,
115
- frameAttrs: {
116
- "data-state": getState(checked),
117
- "data-disabled": isDisabled ? "" : void 0,
118
- role: "radio",
119
- "aria-labelledby": labelledBy,
120
- "aria-checked": checked,
121
- "aria-required": required,
122
- disabled: isDisabled,
123
- ref: composedRefs,
124
- ...(isWeb && {
125
- type: "button",
126
- value
127
- }),
128
- id,
129
- onPress: composeEventHandlers(onPress, event => {
130
- checked || onChange?.(value), isFormControl && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
132
+ id,
133
+ onPress: composeEventHandlers(onPress, event => {
134
+ if (!checked) onChange?.(value);
135
+ if (isFormControl) {
136
+ hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();
137
+ if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();
138
+ }
139
+ }),
140
+ ...(isWeb && {
141
+ onKeyDown: composeEventHandlers(onKeyDown, event => {
142
+ if (event.key === "Enter" || event.key === " ") {
143
+ if (!checked) onChange?.(value);
144
+ }
131
145
  }),
132
- ...(isWeb && {
133
- onKeyDown: composeEventHandlers(onKeyDown, event => {
134
- (event.key === "Enter" || event.key === " ") && (checked || onChange?.(value));
135
- }),
136
- onFocus: composeEventHandlers(onFocus, () => {
137
- isArrowKeyPressedRef.current && ref.current?.click();
138
- })
146
+ onFocus: composeEventHandlers(onFocus, () => {
147
+ if (isArrowKeyPressedRef.current) ref.current?.click();
139
148
  })
140
- },
141
- rovingFocusGroupAttrs: {
142
- asChild: "except-style",
143
- focusable: !isDisabled,
144
- active: checked
145
- }
146
- };
149
+ })
150
+ },
151
+ rovingFocusGroupAttrs: {
152
+ asChild: "except-style",
153
+ focusable: !isDisabled,
154
+ active: checked
155
+ }
147
156
  };
157
+ };
148
158
  function useRadioGroupItemIndicator(params) {
149
159
  const {
150
- radioGroupItemContext,
151
- disabled,
152
- ...rest
153
- } = params,
154
- {
155
- checked
156
- } = useContext(radioGroupItemContext);
160
+ radioGroupItemContext,
161
+ disabled,
162
+ ...rest
163
+ } = params;
164
+ const {
165
+ checked
166
+ } = useContext(radioGroupItemContext);
157
167
  return {
158
168
  checked,
159
169
  "data-state": getState(checked),
@@ -1 +1 @@
1
- {"version":3,"names":["useComposedRefs","isWeb","composeEventHandlers","useLabelContext","useControllableState","useContext","useEffect","useRef","useState","BubbleInput","getState","jsx","useRadioGroup","params","value","valueProp","onValueChange","defaultValue","required","disabled","name","native","accentColor","orientation","ref","setValue","prop","defaultProp","onChange","providerValue","frameAttrs","role","rovingFocusGroupAttrs","loop","ARROW_KEYS","useRadioGroupItem","radioGroupContext","labelledBy","ariaLabelledby","itemDisabled","refProp","id","onPress","onKeyDown","onFocus","groupValue","button","setButton","hasConsumerStoppedPropagationRef","composedRefs","node","isArrowKeyPressedRef","isFormControl","closest","checked","labelId","handleKeyDown","event","includes","key","current","handleKeyUp","document","addEventListener","removeEventListener","isDisabled","bubbleInput","isHidden","control","bubbles","type","isPropagationStopped","stopPropagation","click","asChild","focusable","active","useRadioGroupItemIndicator","radioGroupItemContext","rest"],"sources":["../../src/useRadioGroup.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useComposedRefs","isWeb","registerFocusable","composeEventHandlers","useLabelContext","useControllableState","useContext","useEffect","useRef","useState","BubbleInput","getState","jsx","useRadioGroup","params","value","valueProp","onValueChange","defaultValue","required","disabled","name","native","accentColor","orientation","ref","setValue","prop","defaultProp","onChange","providerValue","frameAttrs","role","rovingFocusGroupAttrs","loop","ARROW_KEYS","useRadioGroupItem","radioGroupContext","labelledBy","ariaLabelledby","itemDisabled","refProp","id","onPress","onKeyDown","onFocus","groupValue","button","setButton","hasConsumerStoppedPropagationRef","composedRefs","node","isArrowKeyPressedRef","isFormControl","Boolean","closest","checked","labelId","handleKeyDown","event","includes","key","current","handleKeyUp","document","addEventListener","removeEventListener","isDisabled","bubbleInput","isHidden","control","bubbles","type","isPropagationStopped","stopPropagation","click","asChild","focusable","active","useRadioGroupItemIndicator","radioGroupItemContext","rest"],"sources":["../../src/useRadioGroup.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -10,22 +10,22 @@ import { BubbleInput } from "./BubbleInput.native.js";
10
10
  import { getState } from "./utils.native.js";
11
11
  function useRadioGroup(params) {
12
12
  var {
13
- value: valueProp,
14
- onValueChange,
15
- defaultValue,
16
- required,
17
- disabled,
18
- name,
19
- native,
20
- accentColor,
21
- orientation,
22
- ref
23
- } = params,
24
- [value, setValue] = useControllableState({
25
- prop: valueProp,
26
- defaultProp: defaultValue,
27
- onChange: onValueChange
28
- });
13
+ value: valueProp,
14
+ onValueChange,
15
+ defaultValue,
16
+ required,
17
+ disabled,
18
+ name,
19
+ native,
20
+ accentColor,
21
+ orientation,
22
+ ref
23
+ } = params;
24
+ var [value, setValue] = useControllableState({
25
+ prop: valueProp,
26
+ defaultProp: defaultValue,
27
+ onChange: onValueChange
28
+ });
29
29
  return {
30
30
  providerValue: {
31
31
  value,
@@ -43,130 +43,142 @@ function useRadioGroup(params) {
43
43
  },
44
44
  rovingFocusGroupAttrs: {
45
45
  orientation,
46
- loop: !0
46
+ loop: true
47
47
  }
48
48
  };
49
49
  }
50
- var ARROW_KEYS = ["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"],
51
- useRadioGroupItem = function (params) {
52
- var {
53
- radioGroupContext,
54
- value,
55
- labelledBy: ariaLabelledby,
56
- disabled: itemDisabled,
57
- ref: refProp,
58
- id,
59
- onPress,
60
- onKeyDown,
61
- onFocus
62
- } = params,
63
- {
64
- value: groupValue,
65
- disabled,
66
- required,
67
- onChange,
68
- name,
69
- native,
70
- accentColor
71
- } = useContext(radioGroupContext),
72
- [button, setButton] = useState(null),
73
- hasConsumerStoppedPropagationRef = useRef(!1),
74
- ref = useRef(null),
75
- composedRefs = useComposedRefs(refProp, function (node) {
76
- return setButton(node);
77
- }, ref),
78
- isArrowKeyPressedRef = useRef(!1),
79
- isFormControl = isWeb ? button ? !!button.closest("form") : !0 : !1,
80
- checked = groupValue === value,
81
- labelId = useLabelContext(button),
82
- labelledBy = ariaLabelledby || labelId;
83
- useEffect(function () {
84
- if (isWeb) {
85
- var handleKeyDown = function (event) {
86
- ARROW_KEYS.includes(event.key) && (isArrowKeyPressedRef.current = !0);
87
- },
88
- handleKeyUp = function () {
89
- isArrowKeyPressedRef.current = !1;
90
- };
91
- return document.addEventListener("keydown", handleKeyDown), document.addEventListener("keyup", handleKeyUp), function () {
92
- document.removeEventListener("keydown", handleKeyDown), document.removeEventListener("keyup", handleKeyUp);
93
- };
94
- }
95
- }, []), useEffect(function () {
96
- if (id && !disabled) return registerFocusable(id, {
97
- focusAndSelect: function () {
98
- onChange?.(value);
99
- },
100
- focus: function () {}
101
- });
102
- }, [id, value, disabled]);
103
- var isDisabled = disabled || itemDisabled;
104
- return {
105
- providerValue: {
106
- checked
50
+ var ARROW_KEYS = ["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"];
51
+ var useRadioGroupItem = function (params) {
52
+ var {
53
+ radioGroupContext,
54
+ value,
55
+ labelledBy: ariaLabelledby,
56
+ disabled: itemDisabled,
57
+ ref: refProp,
58
+ id,
59
+ onPress,
60
+ onKeyDown,
61
+ onFocus
62
+ } = params;
63
+ var {
64
+ value: groupValue,
65
+ disabled,
66
+ required,
67
+ onChange,
68
+ name,
69
+ native,
70
+ accentColor
71
+ } = useContext(radioGroupContext);
72
+ var [button, setButton] = useState(null);
73
+ var hasConsumerStoppedPropagationRef = useRef(false);
74
+ var ref = useRef(null);
75
+ var composedRefs = useComposedRefs(refProp, function (node) {
76
+ return setButton(node);
77
+ }, ref);
78
+ var isArrowKeyPressedRef = useRef(false);
79
+ var isFormControl = isWeb ? button ? Boolean(button.closest("form")) : true : false;
80
+ var checked = groupValue === value;
81
+ var labelId = useLabelContext(button);
82
+ var labelledBy = ariaLabelledby || labelId;
83
+ useEffect(function () {
84
+ if (isWeb) {
85
+ var handleKeyDown = function (event) {
86
+ if (ARROW_KEYS.includes(event.key)) isArrowKeyPressedRef.current = true;
87
+ };
88
+ var handleKeyUp = function () {
89
+ isArrowKeyPressedRef.current = false;
90
+ };
91
+ document.addEventListener("keydown", handleKeyDown);
92
+ document.addEventListener("keyup", handleKeyUp);
93
+ return function () {
94
+ document.removeEventListener("keydown", handleKeyDown);
95
+ document.removeEventListener("keyup", handleKeyUp);
96
+ };
97
+ }
98
+ }, []);
99
+ useEffect(function () {
100
+ if (!id) return;
101
+ if (disabled) return;
102
+ return registerFocusable(id, {
103
+ focusAndSelect: function () {
104
+ onChange === null || onChange === void 0 || onChange(value);
107
105
  },
106
+ focus: function () {}
107
+ });
108
+ }, [id, value, disabled]);
109
+ var isDisabled = disabled || itemDisabled;
110
+ return {
111
+ providerValue: {
112
+ checked
113
+ },
114
+ checked,
115
+ isFormControl,
116
+ bubbleInput: /* @__PURE__ */_jsx(BubbleInput, {
117
+ isHidden: !native,
118
+ control: button,
119
+ bubbles: !hasConsumerStoppedPropagationRef.current,
120
+ name,
121
+ value,
108
122
  checked,
109
- isFormControl,
110
- bubbleInput: /* @__PURE__ */_jsx(BubbleInput, {
111
- isHidden: !native,
112
- control: button,
113
- bubbles: !hasConsumerStoppedPropagationRef.current,
114
- name,
115
- value,
116
- checked,
117
- required,
118
- disabled: isDisabled,
119
- ...(isWeb && native && {
120
- accentColor,
121
- id
122
- })
123
+ required,
124
+ disabled: isDisabled,
125
+ ...(isWeb && native && {
126
+ accentColor,
127
+ id
128
+ })
129
+ }),
130
+ native,
131
+ frameAttrs: {
132
+ "data-state": getState(checked),
133
+ "data-disabled": isDisabled ? "" : void 0,
134
+ role: "radio",
135
+ "aria-labelledby": labelledBy,
136
+ "aria-checked": checked,
137
+ "aria-required": required,
138
+ disabled: isDisabled,
139
+ ref: composedRefs,
140
+ ...(isWeb && {
141
+ type: "button",
142
+ value
123
143
  }),
124
- native,
125
- frameAttrs: {
126
- "data-state": getState(checked),
127
- "data-disabled": isDisabled ? "" : void 0,
128
- role: "radio",
129
- "aria-labelledby": labelledBy,
130
- "aria-checked": checked,
131
- "aria-required": required,
132
- disabled: isDisabled,
133
- ref: composedRefs,
134
- ...(isWeb && {
135
- type: "button",
136
- value
137
- }),
138
- id,
139
- onPress: composeEventHandlers(onPress, function (event) {
140
- checked || onChange?.(value), isFormControl && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
144
+ id,
145
+ onPress: composeEventHandlers(onPress, function (event) {
146
+ if (!checked) onChange === null || onChange === void 0 || onChange(value);
147
+ if (isFormControl) {
148
+ hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();
149
+ if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();
150
+ }
151
+ }),
152
+ ...(isWeb && {
153
+ onKeyDown: composeEventHandlers(onKeyDown, function (event) {
154
+ if (event.key === "Enter" || event.key === " ") {
155
+ if (!checked) onChange === null || onChange === void 0 || onChange(value);
156
+ }
141
157
  }),
142
- ...(isWeb && {
143
- onKeyDown: composeEventHandlers(onKeyDown, function (event) {
144
- (event.key === "Enter" || event.key === " ") && (checked || onChange?.(value));
145
- }),
146
- onFocus: composeEventHandlers(onFocus, function () {
147
- if (isArrowKeyPressedRef.current) {
148
- var _ref_current;
149
- (_ref_current = ref.current) === null || _ref_current === void 0 || _ref_current.click();
150
- }
151
- })
158
+ onFocus: composeEventHandlers(onFocus, function () {
159
+ if (isArrowKeyPressedRef.current) {
160
+ var _ref_current;
161
+ (_ref_current = ref.current) === null || _ref_current === void 0 || _ref_current.click();
162
+ }
152
163
  })
153
- },
154
- rovingFocusGroupAttrs: {
155
- asChild: "except-style",
156
- focusable: !isDisabled,
157
- active: checked
158
- }
159
- };
164
+ })
165
+ },
166
+ rovingFocusGroupAttrs: {
167
+ asChild: "except-style",
168
+ focusable: !isDisabled,
169
+ active: checked
170
+ }
160
171
  };
172
+ };
161
173
  function useRadioGroupItemIndicator(params) {
162
174
  var {
163
- radioGroupItemContext,
164
- disabled,
165
- ...rest
166
- } = params,
167
- {
168
- checked
169
- } = useContext(radioGroupItemContext);
175
+ radioGroupItemContext,
176
+ disabled,
177
+ ...rest
178
+ } = params;
179
+ var {
180
+ checked
181
+ } = useContext(radioGroupItemContext);
170
182
  return {
171
183
  checked,
172
184
  "data-state": getState(checked),