@cdx-ui/primitives 0.0.1-beta.141 → 0.0.1-beta.142

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 (50) hide show
  1. package/lib/commonjs/checkbox/CheckboxRoot.web.js +91 -28
  2. package/lib/commonjs/checkbox/CheckboxRoot.web.js.map +1 -1
  3. package/lib/commonjs/checkbox/useCheckboxRoot.js +33 -19
  4. package/lib/commonjs/checkbox/useCheckboxRoot.js.map +1 -1
  5. package/lib/commonjs/radio/RadioGroup.js +65 -16
  6. package/lib/commonjs/radio/RadioGroup.js.map +1 -1
  7. package/lib/commonjs/radio/RadioRoot.web.js +114 -26
  8. package/lib/commonjs/radio/RadioRoot.web.js.map +1 -1
  9. package/lib/commonjs/radio/context.js.map +1 -1
  10. package/lib/commonjs/radio/useRadioGroupNavigation.js +79 -0
  11. package/lib/commonjs/radio/useRadioGroupNavigation.js.map +1 -0
  12. package/lib/commonjs/radio/useRadioRoot.js +14 -13
  13. package/lib/commonjs/radio/useRadioRoot.js.map +1 -1
  14. package/lib/module/checkbox/CheckboxRoot.web.js +92 -29
  15. package/lib/module/checkbox/CheckboxRoot.web.js.map +1 -1
  16. package/lib/module/checkbox/useCheckboxRoot.js +34 -20
  17. package/lib/module/checkbox/useCheckboxRoot.js.map +1 -1
  18. package/lib/module/radio/RadioGroup.js +68 -19
  19. package/lib/module/radio/RadioGroup.js.map +1 -1
  20. package/lib/module/radio/RadioRoot.web.js +117 -29
  21. package/lib/module/radio/RadioRoot.web.js.map +1 -1
  22. package/lib/module/radio/context.js.map +1 -1
  23. package/lib/module/radio/useRadioGroupNavigation.js +74 -0
  24. package/lib/module/radio/useRadioGroupNavigation.js.map +1 -0
  25. package/lib/module/radio/useRadioRoot.js +14 -13
  26. package/lib/module/radio/useRadioRoot.js.map +1 -1
  27. package/lib/typescript/checkbox/CheckboxRoot.web.d.ts +8 -0
  28. package/lib/typescript/checkbox/CheckboxRoot.web.d.ts.map +1 -1
  29. package/lib/typescript/checkbox/useCheckboxRoot.d.ts +7 -18
  30. package/lib/typescript/checkbox/useCheckboxRoot.d.ts.map +1 -1
  31. package/lib/typescript/radio/RadioGroup.d.ts.map +1 -1
  32. package/lib/typescript/radio/RadioRoot.web.d.ts +8 -0
  33. package/lib/typescript/radio/RadioRoot.web.d.ts.map +1 -1
  34. package/lib/typescript/radio/context.d.ts +6 -1
  35. package/lib/typescript/radio/context.d.ts.map +1 -1
  36. package/lib/typescript/radio/types.d.ts +7 -0
  37. package/lib/typescript/radio/types.d.ts.map +1 -1
  38. package/lib/typescript/radio/useRadioGroupNavigation.d.ts +17 -0
  39. package/lib/typescript/radio/useRadioGroupNavigation.d.ts.map +1 -0
  40. package/lib/typescript/radio/useRadioRoot.d.ts +4 -18
  41. package/lib/typescript/radio/useRadioRoot.d.ts.map +1 -1
  42. package/package.json +3 -3
  43. package/src/checkbox/CheckboxRoot.web.tsx +105 -29
  44. package/src/checkbox/useCheckboxRoot.ts +37 -15
  45. package/src/radio/RadioGroup.tsx +84 -20
  46. package/src/radio/RadioRoot.web.tsx +136 -31
  47. package/src/radio/context.tsx +6 -1
  48. package/src/radio/types.ts +6 -0
  49. package/src/radio/useRadioGroupNavigation.ts +104 -0
  50. package/src/radio/useRadioRoot.ts +18 -11
@@ -1 +1 @@
1
- {"version":3,"names":["forwardRef","View","useFormControlContext","useRadioGroup","useRadioGroupState","Slot","dataAttributes","mergeDataAttributes","RadioGroupContext","jsx","_jsx","RadioGroup","asChild","children","className","style","props","ref","formControlContext","combinedProps","radioGroupState","validationState","isInvalid","radioGroupProps","isDisabled","isRequired","isReadOnly","Comp","Provider","value","state","isSelected","selectedValue","selectValue","setSelectedValue","name","undefined","disabled","invalid","displayName"],"sourceRoot":"../../../src","sources":["radio/RadioGroup.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,OAAO;AAClC,SAASC,IAAI,QAAwB,cAAc;AACnD,SAASC,qBAAqB,QAAQ,eAAe;AACrD,SAASC,aAAa,QAAQ,0BAA0B;AACxD,SAASC,kBAAkB,QAAQ,sBAAsB;AACzD,SAASC,IAAI,QAAQ,SAAS;AAC9B,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,yBAAyB;AAC7E,SAASC,iBAAiB,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAS9C,OAAO,MAAMC,UAAU,gBAAGX,UAAU,CAClC,CAAC;EAAEY,OAAO;EAAEC,QAAQ;EAAEC,SAAS;EAAEC,KAAK;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAK;EAC1D,MAAMC,kBAAkB,GAAGhB,qBAAqB,CAAC,CAAC;EAElD,MAAMiB,aAAa,GAAG;IACpB,GAAGD,kBAAkB;IACrB,GAAGF;EACL,CAAC;EAED,MAAMI,eAAe,GAAGhB,kBAAkB,CAAC;IACzC,GAAGe,aAAa;IAChBE,eAAe,EAAEF,aAAa,CAACG,SAAS,GAAG,SAAS,GAAG;EACzD,CAAC,CAAC;EAEF,MAAM;IAAEC;EAAgB,CAAC,GAAGpB,aAAa,CACvC;IACE,GAAGgB,aAAa;IAChB,YAAY,EAAEA,aAAa,CAAC,YAAY;EAC1C,CAAC,EACDC,eACF,CAAC;EAED,MAAMI,UAAU,GAAGL,aAAa,CAACK,UAAU,IAAI,KAAK;EACpD,MAAMF,SAAS,GAAGH,aAAa,CAACG,SAAS,IAAI,KAAK;EAClD,MAAMG,UAAU,GAAGN,aAAa,CAACM,UAAU,IAAI,KAAK;EACpD,MAAMC,UAAU,GAAGP,aAAa,CAACO,UAAU,IAAI,KAAK;EAEpD,MAAMC,IAAI,GAAGf,OAAO,GAAGP,IAAI,GAAGJ,IAAI;EAElC,oBACES,IAAA,CAACF,iBAAiB,CAACoB,QAAQ;IACzBC,KAAK,EAAE;MACLC,KAAK,EAAE;QACLN,UAAU;QACVF,SAAS;QACTG,UAAU;QACVC,UAAU;QACVK,UAAU,EAAGF,KAAa,IAAKT,eAAe,CAACY,aAAa,KAAKH,KAAK;QACtEI,WAAW,EAAGJ,KAAa,IAAKT,eAAe,CAACc,gBAAgB,CAACL,KAAK;MACxE,CAAC;MACDT,eAAe;MACfe,IAAI,EAAEhB,aAAa,CAACgB;IACtB,CAAE;IAAAtB,QAAA,eAEFH,IAAA,CAACiB,IAAI;MAAA,GACCJ,eAAe;MACnB,cAAYJ,aAAa,CAAC,YAAY,CAAE;MACxC,mBAAiBA,aAAa,CAAC,iBAAiB,CAAE;MAClD,iBAAeM,UAAU,IAAIW,SAAU;MACvC,iBAAeV,UAAU,IAAIU,SAAU;MACvCtB,SAAS,EAAEA,SAAU;MACrBC,KAAK,EAAEA,KAAM;MACbE,GAAG,EAAEA,GAAI;MAAA,GACLV,mBAAmB,CACrBS,KAAK,EACLV,cAAc,CAAC;QACb+B,QAAQ,EAAEb,UAAU;QACpBc,OAAO,EAAEhB;MACX,CAAC,CACH,CAAC;MAAAT,QAAA,EAEAA;IAAQ,CACL;EAAC,CACmB,CAAC;AAEjC,CACF,CAAC;AAEDF,UAAU,CAAC4B,WAAW,GAAG,YAAY","ignoreList":[]}
1
+ {"version":3,"names":["forwardRef","useCallback","useEffect","useRef","useState","Platform","View","composeEventHandlers","useFormControl","useRadioGroup","useRadioGroupState","Slot","dataAttributes","mergeDataAttributes","RadioGroupContext","useRadioGroupNavigation","jsx","_jsx","RadioGroup","asChild","children","className","style","props","ref","formControlProps","isDisabled","isRequired","isInvalid","isReadOnly","Boolean","disabled","required","readOnly","name","ariaLabel","ariaLabelledBy","ariaDescribedBy","radioGroupState","value","defaultValue","onChange","validationState","radioGroupProps","focusedValue","setFocusedValue","undefined","registrationEpoch","setRegistrationEpoch","radiosRef","Map","prev","selectedValue","registerRadio","entry","current","set","epoch","unregisterRadio","delete","getRadios","Array","from","entries","handleKeyDown","selectValue","setSelectedValue","webProps","OS","onKeyDown","Comp","Provider","state","isSelected","invalid","displayName"],"sourceRoot":"../../../src","sources":["radio/RadioGroup.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,17 +1,24 @@
1
1
  "use strict";
2
2
 
3
- import { forwardRef } from 'react';
3
+ import { forwardRef, useContext, useEffect, useMemo, useRef } from 'react';
4
4
  import { Pressable } from 'react-native';
5
5
  import { VisuallyHidden } from '@react-aria/visually-hidden';
6
- import { mergeProps } from '@react-aria/utils';
6
+ import { composeEventHandlers, mergeRefs } from '@cdx-ui/utils';
7
7
  import { useFocusRing } from '@react-native-aria/focus';
8
8
  import { Slot } from '../slot';
9
9
  import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
10
- import { RadioProvider } from './context';
10
+ import { RadioGroupContext, RadioProvider } from './context';
11
11
  import { useRadioRoot } from './useRadioRoot';
12
-
13
- // TODO: Keyboard focus is not working as expected
14
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
+ import { getRovingFocusValue } from './useRadioGroupNavigation';
13
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
14
+ /**
15
+ * Web Radio root.
16
+ *
17
+ * On web, `@react-native-aria/radio` re-exports `@react-aria/radio`'s `useRadio`,
18
+ * whose `inputProps` target a native `<input type="radio">` (selection via
19
+ * `onChange`). Selection must be applied explicitly on the Pressable —
20
+ * `inputProps.onPress` does **not** call `setSelectedValue`.
21
+ */
15
22
  export const RadioRoot = /*#__PURE__*/forwardRef(({
16
23
  asChild,
17
24
  children,
@@ -26,12 +33,12 @@ export const RadioRoot = /*#__PURE__*/forwardRef(({
26
33
  isFocused,
27
34
  isPressed
28
35
  } = props;
36
+ const radioGroupContext = useContext(RadioGroupContext);
29
37
  const {
30
38
  combinedProps,
31
39
  isInvalid,
32
40
  isReadOnly,
33
41
  inputProps,
34
- labelProps,
35
42
  isChecked,
36
43
  isDisabled,
37
44
  isHovered,
@@ -44,42 +51,123 @@ export const RadioRoot = /*#__PURE__*/forwardRef(({
44
51
  focusProps,
45
52
  isFocusVisible
46
53
  } = useFocusRing();
54
+ const nodeRef = useRef(null);
55
+ const setRefs = mergeRefs(mergedRef, nodeRef);
56
+
57
+ // Strip native-input / internal props — they must not land on Pressable.
58
+ const {
59
+ onPress: _onPress,
60
+ onChange: _onChange,
61
+ role: _role,
62
+ tabIndex: _tabIndex,
63
+ disabled: _disabled,
64
+ checked: _checked,
65
+ value: _value,
66
+ type: _type,
67
+ name: _name,
68
+ form: _form,
69
+ required: _required,
70
+ ...inputAriaProps
71
+ } = inputProps;
72
+ const resolvedDisabled = !!(isDisabled || isDisabledProp);
73
+ const resolvedReadOnly = !!(isReadOnly || isReadOnlyProp);
74
+ const selectThis = () => {
75
+ if (resolvedDisabled || resolvedReadOnly) {
76
+ return;
77
+ }
78
+ radioGroupContext?.radioGroupState.setSelectedValue(combinedProps.value);
79
+ };
80
+ const selectedValue = radioGroupContext?.radioGroupState.selectedValue;
81
+ const focusedValue = radioGroupContext?.focusedValue;
82
+ const registerRadio = radioGroupContext?.registerRadio;
83
+ const unregisterRadio = radioGroupContext?.unregisterRadio;
84
+ const getRadios = radioGroupContext?.getRadios;
85
+ const groupName = radioGroupContext?.name;
86
+ useEffect(() => {
87
+ if (!registerRadio || !unregisterRadio) {
88
+ return;
89
+ }
90
+ registerRadio(combinedProps.value, {
91
+ disabled: !!resolvedDisabled,
92
+ node: nodeRef.current
93
+ });
94
+ return () => unregisterRadio(combinedProps.value);
95
+ }, [combinedProps.value, resolvedDisabled, registerRadio, unregisterRadio]);
96
+ const isRovingTabStop = useMemo(() => {
97
+ if (resolvedDisabled) {
98
+ return false;
99
+ }
100
+ const enabledRadios = getRadios?.().filter(([, entry]) => !entry.disabled) ?? [];
101
+ const rovingValue = getRovingFocusValue(focusedValue, selectedValue, enabledRadios);
102
+ return combinedProps.value === rovingValue;
103
+ }, [combinedProps.value, focusedValue, getRadios, resolvedDisabled, selectedValue]);
104
+ const handleKeyDown = event => {
105
+ if (event.key === ' ' || event.key === 'Spacebar') {
106
+ event.preventDefault();
107
+ selectThis();
108
+ }
109
+ };
47
110
  const contextValue = {
48
111
  isChecked,
49
- isDisabled: isDisabled || isDisabledProp,
112
+ isDisabled: resolvedDisabled,
50
113
  isFocusVisible: isFocusVisible || isFocusVisibleProp,
51
114
  isHovered: isHovered || isHoveredProp,
52
115
  isInvalid: isInvalid || isInvalidProp,
53
- isReadOnly: isReadOnly || isReadOnlyProp,
116
+ isReadOnly: resolvedReadOnly,
54
117
  isPressed,
55
118
  isFocused
56
119
  };
57
120
  const Comp = asChild ? Slot : Pressable;
58
121
  return /*#__PURE__*/_jsx(RadioProvider, {
59
122
  value: contextValue,
60
- children: /*#__PURE__*/_jsxs(Comp, {
61
- ...mergeProps(combinedProps, labelProps, focusProps),
62
- ref: mergedRef,
63
- role: "label"
64
- // eslint-disable-next-line react-native-a11y/has-valid-accessibility-role
65
- ,
66
- accessibilityRole: "label",
67
- ...mergeDataAttributes(props, dataAttributes({
68
- checked: isChecked,
69
- disabled: isDisabled || isDisabledProp,
70
- hover: isHovered || isHoveredProp,
71
- invalid: isInvalid || isInvalidProp,
72
- readonly: isReadOnly || isReadOnlyProp,
73
- active: isPressed,
74
- focus: isFocused,
75
- focusVisible: isFocusVisible || isFocusVisibleProp
76
- })),
123
+ children: /*#__PURE__*/_jsxs(_Fragment, {
77
124
  children: [/*#__PURE__*/_jsx(VisuallyHidden, {
78
125
  children: /*#__PURE__*/_jsx("input", {
79
- ...inputProps,
80
- ref: inputRef
126
+ ref: inputRef,
127
+ type: "radio",
128
+ name: groupName,
129
+ value: combinedProps.value,
130
+ checked: !!isChecked,
131
+ disabled: resolvedDisabled,
132
+ tabIndex: -1,
133
+ "aria-hidden": true,
134
+ readOnly: true
135
+ // Decorative form mirror — pointer events must not steal clicks from Pressable.
136
+ ,
137
+ style: {
138
+ pointerEvents: 'none'
139
+ }
81
140
  })
82
- }), children]
141
+ }), /*#__PURE__*/_jsx(Comp, {
142
+ ...combinedProps,
143
+ ...inputAriaProps,
144
+ ref: setRefs,
145
+ role: "radio",
146
+ "aria-checked": isChecked,
147
+ "aria-disabled": resolvedDisabled || undefined,
148
+ accessibilityRole: "radio",
149
+ accessibilityState: {
150
+ checked: isChecked,
151
+ disabled: resolvedDisabled
152
+ },
153
+ tabIndex: resolvedDisabled ? -1 : isRovingTabStop ? 0 : -1,
154
+ disabled: resolvedDisabled,
155
+ ...focusProps,
156
+ onPress: selectThis,
157
+ onClick: selectThis,
158
+ onKeyDown: composeEventHandlers(combinedProps.onKeyDown, handleKeyDown),
159
+ ...mergeDataAttributes(props, dataAttributes({
160
+ checked: isChecked,
161
+ disabled: resolvedDisabled,
162
+ hover: isHovered || isHoveredProp,
163
+ invalid: isInvalid || isInvalidProp,
164
+ readonly: resolvedReadOnly,
165
+ active: isPressed,
166
+ focus: isFocused,
167
+ focusVisible: isFocusVisible || isFocusVisibleProp
168
+ })),
169
+ children: children
170
+ })]
83
171
  })
84
172
  });
85
173
  });
@@ -1 +1 @@
1
- {"version":3,"names":["forwardRef","Pressable","VisuallyHidden","mergeProps","useFocusRing","Slot","dataAttributes","mergeDataAttributes","RadioProvider","useRadioRoot","jsx","_jsx","jsxs","_jsxs","RadioRoot","asChild","children","props","ref","isHovered","isHoveredProp","isFocusVisible","isFocusVisibleProp","isDisabled","isDisabledProp","isInvalid","isInvalidProp","isReadOnly","isReadOnlyProp","isFocused","isPressed","combinedProps","inputProps","labelProps","isChecked","mergedRef","inputRef","useInputRefForAria","focusProps","contextValue","Comp","value","role","accessibilityRole","checked","disabled","hover","invalid","readonly","active","focus","focusVisible","displayName"],"sourceRoot":"../../../src","sources":["radio/RadioRoot.web.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,OAAO;AAClC,SAASC,SAAS,QAAQ,cAAc;AACxC,SAASC,cAAc,QAAQ,6BAA6B;AAC5D,SAASC,UAAU,QAAQ,mBAAmB;AAC9C,SAASC,YAAY,QAAQ,0BAA0B;AACvD,SAASC,IAAI,QAAQ,SAAS;AAC9B,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,yBAAyB;AAC7E,SAASC,aAAa,QAAQ,WAAW;AAEzC,SAASC,YAAY,QAAQ,gBAAgB;;AAE7C;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAMA,OAAO,MAAMC,SAAS,gBAAGd,UAAU,CACjC,CAAC;EAAEe,OAAO;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAK;EACxC,MAAM;IACJC,SAAS,EAAEC,aAAa;IACxBC,cAAc,EAAEC,kBAAkB;IAClCC,UAAU,EAAEC,cAAc;IAC1BC,SAAS,EAAEC,aAAa;IACxBC,UAAU,EAAEC,cAAc;IAC1BC,SAAS;IACTC;EACF,CAAC,GAAGb,KAAK;EAET,MAAM;IACJc,aAAa;IACbN,SAAS;IACTE,UAAU;IACVK,UAAU;IACVC,UAAU;IACVC,SAAS;IACTX,UAAU;IACVJ,SAAS;IACTgB,SAAS;IACTC;EACF,CAAC,GAAG3B,YAAY,CAACQ,KAAK,EAAEC,GAAG,EAAE;IAAEmB,kBAAkB,EAAE;EAAK,CAAC,CAAC;EAE1D,MAAM;IAAEC,UAAU;IAAEjB;EAAe,CAAC,GAAGjB,YAAY,CAAC,CAAC;EAErD,MAAMmC,YAAgC,GAAG;IACvCL,SAAS;IACTX,UAAU,EAAEA,UAAU,IAAIC,cAAc;IACxCH,cAAc,EAAEA,cAAc,IAAIC,kBAAkB;IACpDH,SAAS,EAAEA,SAAS,IAAIC,aAAa;IACrCK,SAAS,EAAEA,SAAS,IAAIC,aAAa;IACrCC,UAAU,EAAEA,UAAU,IAAIC,cAAc;IACxCE,SAAS;IACTD;EACF,CAAC;EAED,MAAMW,IAAI,GAAGzB,OAAO,GAAGV,IAAI,GAAGJ,SAAS;EAEvC,oBACEU,IAAA,CAACH,aAAa;IAACiC,KAAK,EAAEF,YAAa;IAAAvB,QAAA,eACjCH,KAAA,CAAC2B,IAAI;MAAA,GACCrC,UAAU,CAAC4B,aAAa,EAASE,UAAU,EAASK,UAAiB,CAAC;MAC1EpB,GAAG,EAAEiB,SAAU;MACfO,IAAI,EAAC;MACL;MAAA;MACAC,iBAAiB,EAAC,OAAO;MAAA,GACrBpC,mBAAmB,CACrBU,KAAK,EACLX,cAAc,CAAC;QACbsC,OAAO,EAAEV,SAAS;QAClBW,QAAQ,EAAEtB,UAAU,IAAIC,cAAc;QACtCsB,KAAK,EAAE3B,SAAS,IAAIC,aAAa;QACjC2B,OAAO,EAAEtB,SAAS,IAAIC,aAAa;QACnCsB,QAAQ,EAAErB,UAAU,IAAIC,cAAc;QACtCqB,MAAM,EAAEnB,SAAS;QACjBoB,KAAK,EAAErB,SAAS;QAChBsB,YAAY,EAAE9B,cAAc,IAAIC;MAClC,CAAC,CACH,CAAC;MAAAN,QAAA,gBAEDL,IAAA,CAACT,cAAc;QAAAc,QAAA,eACbL,IAAA;UAAA,GAAWqB,UAAU;UAAEd,GAAG,EAAEkB;QAAS,CAAE;MAAC,CAC1B,CAAC,EAChBpB,QAAQ;IAAA,CACL;EAAC,CACM,CAAC;AAEpB,CACF,CAAC;AAEDF,SAAS,CAACsC,WAAW,GAAG,WAAW","ignoreList":[]}
1
+ {"version":3,"names":["forwardRef","useContext","useEffect","useMemo","useRef","Pressable","VisuallyHidden","composeEventHandlers","mergeRefs","useFocusRing","Slot","dataAttributes","mergeDataAttributes","RadioGroupContext","RadioProvider","useRadioRoot","getRovingFocusValue","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","RadioRoot","asChild","children","props","ref","isHovered","isHoveredProp","isFocusVisible","isFocusVisibleProp","isDisabled","isDisabledProp","isInvalid","isInvalidProp","isReadOnly","isReadOnlyProp","isFocused","isPressed","radioGroupContext","combinedProps","inputProps","isChecked","mergedRef","inputRef","useInputRefForAria","focusProps","nodeRef","setRefs","onPress","_onPress","onChange","_onChange","role","_role","tabIndex","_tabIndex","disabled","_disabled","checked","_checked","value","_value","type","_type","name","_name","form","_form","required","_required","inputAriaProps","resolvedDisabled","resolvedReadOnly","selectThis","radioGroupState","setSelectedValue","selectedValue","focusedValue","registerRadio","unregisterRadio","getRadios","groupName","node","current","isRovingTabStop","enabledRadios","filter","entry","rovingValue","handleKeyDown","event","key","preventDefault","contextValue","Comp","readOnly","style","pointerEvents","undefined","accessibilityRole","accessibilityState","onClick","onKeyDown","hover","invalid","readonly","active","focus","focusVisible","displayName"],"sourceRoot":"../../../src","sources":["radio/RadioRoot.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["React","createContext","RadioProvider","useRadioContext","RadioGroupContext"],"sourceRoot":"../../../src","sources":["radio/context.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,aAAa,QAAQ,eAAe;AAI7C,OAAO,MAAM,CAACC,aAAa,EAAEC,eAAe,CAAC,GAAGF,aAAa,CAAqB,cAAc,CAAC;AAWjG,OAAO,MAAMG,iBAAiB,gBAAGJ,KAAK,CAACC,aAAa,CAI1C,IAAI,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","createContext","RadioProvider","useRadioContext","RadioGroupContext"],"sourceRoot":"../../../src","sources":["radio/context.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,aAAa,QAAQ,eAAe;AAI7C,OAAO,MAAM,CAACC,aAAa,EAAEC,eAAe,CAAC,GAAGF,aAAa,CAAqB,cAAc,CAAC;AAWjG,OAAO,MAAMG,iBAAiB,gBAAGJ,KAAK,CAACC,aAAa,CAS1C,IAAI,CAAC","ignoreList":[]}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useRef } from 'react';
4
+ // Web-only — native platforms rely on OS-managed sequential focus (VoiceOver/TalkBack).
5
+
6
+ function isEnabledRadioValue(value, enabledRadios) {
7
+ return value != null && enabledRadios.some(([radioValue]) => radioValue === value);
8
+ }
9
+
10
+ /** Resolves which radio value should hold the roving tab stop / keyboard focus anchor. */
11
+ export function getRovingFocusValue(focusedValue, selectedValue, enabledRadios) {
12
+ const defaultFocusValue = isEnabledRadioValue(selectedValue, enabledRadios) ? selectedValue : enabledRadios[0]?.[0];
13
+ const resolvedFocusedValue = isEnabledRadioValue(focusedValue, enabledRadios) ? focusedValue : undefined;
14
+ return resolvedFocusedValue ?? defaultFocusValue;
15
+ }
16
+ export function useRadioGroupNavigation({
17
+ getRadios,
18
+ focusedValue,
19
+ setFocusedValue,
20
+ selectedValue,
21
+ selectValue
22
+ }) {
23
+ const selectValueRef = useRef(selectValue);
24
+ selectValueRef.current = selectValue;
25
+ const getEnabledRadios = useCallback(() => getRadios().filter(([, entry]) => !entry.disabled), [getRadios]);
26
+ const moveFocus = useCallback(([targetValue, targetEntry]) => {
27
+ setFocusedValue(targetValue);
28
+ targetEntry.node?.focus?.();
29
+ selectValueRef.current(targetValue);
30
+ }, [setFocusedValue]);
31
+ const handleKeyDown = useCallback(e => {
32
+ const enabledRadios = getEnabledRadios();
33
+ if (enabledRadios.length === 0) {
34
+ return;
35
+ }
36
+ const currentValue = getRovingFocusValue(focusedValue, selectedValue, enabledRadios);
37
+ const idx = enabledRadios.findIndex(([value]) => value === currentValue);
38
+ switch (e.key) {
39
+ case 'ArrowDown':
40
+ case 'ArrowRight':
41
+ {
42
+ e.preventDefault();
43
+ moveFocus(enabledRadios[idx < enabledRadios.length - 1 ? idx + 1 : 0]);
44
+ break;
45
+ }
46
+ case 'ArrowUp':
47
+ case 'ArrowLeft':
48
+ {
49
+ e.preventDefault();
50
+ moveFocus(enabledRadios[idx > 0 ? idx - 1 : enabledRadios.length - 1]);
51
+ break;
52
+ }
53
+ case 'Home':
54
+ {
55
+ e.preventDefault();
56
+ moveFocus(enabledRadios[0]);
57
+ break;
58
+ }
59
+ case 'End':
60
+ {
61
+ e.preventDefault();
62
+ const last = enabledRadios.at(-1);
63
+ if (last) {
64
+ moveFocus(last);
65
+ }
66
+ break;
67
+ }
68
+ }
69
+ }, [focusedValue, selectedValue, getEnabledRadios, moveFocus]);
70
+ return {
71
+ handleKeyDown
72
+ };
73
+ }
74
+ //# sourceMappingURL=useRadioGroupNavigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useRef","isEnabledRadioValue","value","enabledRadios","some","radioValue","getRovingFocusValue","focusedValue","selectedValue","defaultFocusValue","resolvedFocusedValue","undefined","useRadioGroupNavigation","getRadios","setFocusedValue","selectValue","selectValueRef","current","getEnabledRadios","filter","entry","disabled","moveFocus","targetValue","targetEntry","node","focus","handleKeyDown","e","length","currentValue","idx","findIndex","key","preventDefault","last","at"],"sourceRoot":"../../../src","sources":["radio/useRadioGroupNavigation.ts"],"mappings":"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","ignoreList":[]}
@@ -9,27 +9,28 @@ export function useRadioRoot(props, ref, {
9
9
  useInputRefForAria = false
10
10
  } = {}) {
11
11
  const formControlContext = useFormControlContext();
12
- const {
13
- isInvalid,
14
- isReadOnly,
15
- ...combinedProps
16
- } = {
17
- ...formControlContext,
18
- ...props
19
- };
20
12
  const radioGroupContext = useContext(RadioGroupContext);
21
13
  if (!radioGroupContext) {
22
14
  throw new Error('Radio must be rendered inside a Radio.Group. Standalone Radio is not supported.');
23
15
  }
16
+ const isInvalid = props.isInvalid ?? formControlContext.isInvalid;
17
+ const isReadOnly = props.isReadOnly ?? formControlContext.isReadOnly ?? radioGroupContext.state.isReadOnly;
18
+ const isDisabled = props.isDisabled ?? formControlContext.isDisabled ?? radioGroupContext.state.isDisabled;
19
+ const combinedProps = {
20
+ ...props,
21
+ isInvalid,
22
+ isReadOnly,
23
+ isDisabled
24
+ };
24
25
  const rootRef = useRef(null);
25
26
  const inputRef = useRef(null);
26
27
  const mergedRootRef = mergeRefs(ref, rootRef);
27
- const ariaLabel = combinedProps['aria-label'] || combinedProps.value || 'Radio';
28
+ const ariaLabel = props['aria-label'] || props.value || 'Radio';
28
29
  const radio = useRadio({
29
30
  ...combinedProps,
30
31
  'aria-label': ariaLabel,
31
- isReadOnly: isReadOnly || radioGroupContext.state.isReadOnly,
32
- isDisabled: combinedProps.isDisabled || radioGroupContext.state.isDisabled
32
+ isReadOnly,
33
+ isDisabled
33
34
  }, radioGroupContext.radioGroupState, useInputRefForAria ? inputRef : rootRef);
34
35
  const {
35
36
  inputProps,
@@ -37,7 +38,7 @@ export function useRadioRoot(props, ref, {
37
38
  } = radio;
38
39
  const {
39
40
  checked: isChecked,
40
- disabled: isDisabled
41
+ disabled: isDisabledFromInput
41
42
  } = inputProps;
42
43
  const {
43
44
  hoverProps,
@@ -50,7 +51,7 @@ export function useRadioRoot(props, ref, {
50
51
  inputProps,
51
52
  labelProps: labelProps ?? {},
52
53
  isChecked,
53
- isDisabled,
54
+ isDisabled: isDisabledFromInput,
54
55
  isHovered,
55
56
  hoverProps,
56
57
  mergedRef: mergedRootRef,
@@ -1 +1 @@
1
- {"version":3,"names":["useContext","useRef","mergeRefs","useFormControlContext","useRadio","useHover","RadioGroupContext","useRadioRoot","props","ref","useInputRefForAria","formControlContext","isInvalid","isReadOnly","combinedProps","radioGroupContext","Error","rootRef","inputRef","mergedRootRef","ariaLabel","value","radio","state","isDisabled","radioGroupState","inputProps","labelProps","checked","isChecked","disabled","hoverProps","isHovered","mergedRef"],"sourceRoot":"../../../src","sources":["radio/useRadioRoot.ts"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,MAAM,QAAQ,OAAO;AAC1C,SAASC,SAAS,EAAEC,qBAAqB,QAAQ,eAAe;AAChE,SAASC,QAAQ,QAAQ,0BAA0B;AACnD,SAASC,QAAQ,QAAQ,iCAAiC;AAC1D,SAASC,iBAAiB,QAAQ,WAAW;AAO7C,OAAO,SAASC,YAAYA,CAC1BC,KAAkB,EAClBC,GAAwB,EACxB;EAAEC,kBAAkB,GAAG;AAA2B,CAAC,GAAG,CAAC,CAAC,EACxD;EACA,MAAMC,kBAAkB,GAAGR,qBAAqB,CAAC,CAAC;EAElD,MAAM;IAAES,SAAS;IAAEC,UAAU;IAAE,GAAGC;EAAc,CAAC,GAAG;IAClD,GAAGH,kBAAkB;IACrB,GAAGH;EACL,CAAC;EAED,MAAMO,iBAAiB,GAAGf,UAAU,CAACM,iBAAiB,CAAC;EAEvD,IAAI,CAACS,iBAAiB,EAAE;IACtB,MAAM,IAAIC,KAAK,CACb,iFACF,CAAC;EACH;EAEA,MAAMC,OAAO,GAAGhB,MAAM,CAAC,IAAI,CAAC;EAC5B,MAAMiB,QAAQ,GAAGjB,MAAM,CAA0B,IAAI,CAAC;EACtD,MAAMkB,aAAa,GAAGjB,SAAS,CAACO,GAAG,EAASQ,OAAc,CAAC;EAC3D,MAAMG,SAAS,GAAGN,aAAa,CAAC,YAAY,CAAC,IAAIA,aAAa,CAACO,KAAK,IAAI,OAAO;EAE/E,MAAMC,KAAK,GAAGlB,QAAQ,CACpB;IACE,GAAGU,aAAa;IAChB,YAAY,EAAEM,SAAS;IACvBP,UAAU,EAAEA,UAAU,IAAIE,iBAAiB,CAACQ,KAAK,CAACV,UAAU;IAC5DW,UAAU,EAAEV,aAAa,CAACU,UAAU,IAAIT,iBAAiB,CAACQ,KAAK,CAACC;EAClE,CAAC,EACDT,iBAAiB,CAACU,eAAe,EAChCf,kBAAkB,GAAGQ,QAAQ,GAAGD,OACnC,CAAC;EAED,MAAM;IAAES,UAAU;IAAEC;EAAW,CAAC,GAAGL,KAElC;EAED,MAAM;IAAEM,OAAO,EAAEC,SAAS;IAAEC,QAAQ,EAAEN;EAAW,CAAC,GAAGE,UAAU;EAE/D,MAAM;IAAEK,UAAU;IAAEC;EAAU,CAAC,GAAG3B,QAAQ,CAAC,CAAC,CAAC,EAAEY,OAAO,CAAC;EAEvD,OAAO;IACLH,aAAa;IACbF,SAAS,EAAEA,SAAS,IAAIG,iBAAiB,CAACQ,KAAK,CAACX,SAAS;IACzDC,UAAU,EAAEA,UAAU,IAAIE,iBAAiB,CAACQ,KAAK,CAACV,UAAU;IAC5Da,UAAU;IACVC,UAAU,EAAEA,UAAU,IAAI,CAAC,CAAC;IAC5BE,SAAS;IACTL,UAAU;IACVQ,SAAS;IACTD,UAAU;IACVE,SAAS,EAAEd,aAAa;IACxBD;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["useContext","useRef","mergeRefs","useFormControlContext","useRadio","useHover","RadioGroupContext","useRadioRoot","props","ref","useInputRefForAria","formControlContext","radioGroupContext","Error","isInvalid","isReadOnly","state","isDisabled","combinedProps","rootRef","inputRef","mergedRootRef","ariaLabel","value","radio","radioGroupState","inputProps","labelProps","checked","isChecked","disabled","isDisabledFromInput","hoverProps","isHovered","mergedRef"],"sourceRoot":"../../../src","sources":["radio/useRadioRoot.ts"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,MAAM,QAAQ,OAAO;AAC1C,SAASC,SAAS,EAAEC,qBAAqB,QAAQ,eAAe;AAChE,SAASC,QAAQ,QAAQ,0BAA0B;AACnD,SAASC,QAAQ,QAAQ,iCAAiC;AAC1D,SAASC,iBAAiB,QAAQ,WAAW;AAO7C,OAAO,SAASC,YAAYA,CAC1BC,KAAkB,EAClBC,GAAwB,EACxB;EAAEC,kBAAkB,GAAG;AAA2B,CAAC,GAAG,CAAC,CAAC,EACxD;EACA,MAAMC,kBAAkB,GAAGR,qBAAqB,CAAC,CAAC;EAClD,MAAMS,iBAAiB,GAAGZ,UAAU,CAACM,iBAAiB,CAAC;EAEvD,IAAI,CAACM,iBAAiB,EAAE;IACtB,MAAM,IAAIC,KAAK,CACb,iFACF,CAAC;EACH;EAEA,MAAMC,SAAS,GAAGN,KAAK,CAACM,SAAS,IAAIH,kBAAkB,CAACG,SAAS;EACjE,MAAMC,UAAU,GACdP,KAAK,CAACO,UAAU,IAAIJ,kBAAkB,CAACI,UAAU,IAAIH,iBAAiB,CAACI,KAAK,CAACD,UAAU;EACzF,MAAME,UAAU,GACdT,KAAK,CAACS,UAAU,IAAIN,kBAAkB,CAACM,UAAU,IAAIL,iBAAiB,CAACI,KAAK,CAACC,UAAU;EAEzF,MAAMC,aAAa,GAAG;IACpB,GAAGV,KAAK;IACRM,SAAS;IACTC,UAAU;IACVE;EACF,CAAC;EAED,MAAME,OAAO,GAAGlB,MAAM,CAAC,IAAI,CAAC;EAC5B,MAAMmB,QAAQ,GAAGnB,MAAM,CAA0B,IAAI,CAAC;EACtD,MAAMoB,aAAa,GAAGnB,SAAS,CAACO,GAAG,EAASU,OAAc,CAAC;EAC3D,MAAMG,SAAS,GAAGd,KAAK,CAAC,YAAY,CAAC,IAAIA,KAAK,CAACe,KAAK,IAAI,OAAO;EAE/D,MAAMC,KAAK,GAAGpB,QAAQ,CACpB;IACE,GAAGc,aAAa;IAChB,YAAY,EAAEI,SAAS;IACvBP,UAAU;IACVE;EACF,CAAC,EACDL,iBAAiB,CAACa,eAAe,EAChCf,kBAAkB,GAAGU,QAAQ,GAAGD,OACnC,CAAC;EAED,MAAM;IAAEO,UAAU;IAAEC;EAAW,CAAC,GAAGH,KAElC;EAED,MAAM;IAAEI,OAAO,EAAEC,SAAS;IAAEC,QAAQ,EAAEC;EAAoB,CAAC,GAAGL,UAAU;EAExE,MAAM;IAAEM,UAAU;IAAEC;EAAU,CAAC,GAAG5B,QAAQ,CAAC,CAAC,CAAC,EAAEc,OAAO,CAAC;EAEvD,OAAO;IACLD,aAAa;IACbJ,SAAS,EAAEA,SAAS,IAAIF,iBAAiB,CAACI,KAAK,CAACF,SAAS;IACzDC,UAAU,EAAEA,UAAU,IAAIH,iBAAiB,CAACI,KAAK,CAACD,UAAU;IAC5DW,UAAU;IACVC,UAAU,EAAEA,UAAU,IAAI,CAAC,CAAC;IAC5BE,SAAS;IACTZ,UAAU,EAAEc,mBAAmB;IAC/BE,SAAS;IACTD,UAAU;IACVE,SAAS,EAAEb,aAAa;IACxBD;EACF,CAAC;AACH","ignoreList":[]}
@@ -2,5 +2,13 @@ import type { ICheckboxProps } from './types';
2
2
  export interface CheckboxRootProps extends ICheckboxProps {
3
3
  asChild?: boolean;
4
4
  }
5
+ /**
6
+ * Web Checkbox root.
7
+ *
8
+ * On web, `@react-native-aria/checkbox` re-exports `@react-aria/checkbox`'s
9
+ * `useCheckbox`, whose `inputProps` target a native `<input type="checkbox">`
10
+ * (selection via `onChange`). Toggle must be applied explicitly on the Pressable —
11
+ * `inputProps.onPress` does **not** call `toggleState.toggle()`.
12
+ */
5
13
  export declare const CheckboxRoot: import("react").ForwardRefExoticComponent<CheckboxRootProps & import("react").RefAttributes<import("react-native").View>>;
6
14
  //# sourceMappingURL=CheckboxRoot.web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxRoot.web.d.ts","sourceRoot":"","sources":["../../../src/checkbox/CheckboxRoot.web.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAyB,MAAM,SAAS,CAAC;AAGrE,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,YAAY,2HA2ExB,CAAC"}
1
+ {"version":3,"file":"CheckboxRoot.web.d.ts","sourceRoot":"","sources":["../../../src/checkbox/CheckboxRoot.web.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAyB,MAAM,SAAS,CAAC;AAGrE,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,2HA8IxB,CAAC"}
@@ -4,16 +4,19 @@ interface UseCheckboxRootOptions {
4
4
  }
5
5
  export declare function useCheckboxRoot(props: ICheckboxProps, ref?: React.Ref<unknown>, { useInputRefForAria }?: UseCheckboxRootOptions): {
6
6
  combinedProps: {
7
+ isInvalid: boolean | undefined;
8
+ isReadOnly: boolean | undefined;
9
+ isDisabled: boolean | undefined;
10
+ isIndeterminate: boolean | undefined;
7
11
  value: string;
8
12
  onChange?: (isSelected: boolean) => void;
9
13
  children?: React.ReactNode;
10
14
  defaultIsChecked?: boolean;
11
15
  isChecked?: boolean;
12
- isDisabled?: boolean | undefined;
13
16
  isHovered?: boolean;
14
17
  isFocused?: boolean;
15
18
  isPressed?: boolean;
16
- isRequired?: boolean | undefined;
19
+ isRequired?: boolean;
17
20
  isFocusVisible?: boolean;
18
21
  onHoverIn?: null | ((event: import("react-native").MouseEvent) => void) | undefined;
19
22
  onHoverOut?: null | ((event: import("react-native").MouseEvent) => void) | undefined;
@@ -72,7 +75,7 @@ export declare function useCheckboxRoot(props: ICheckboxProps, ref?: React.Ref<u
72
75
  accessibilityShowsLargeContentViewer?: boolean | undefined;
73
76
  accessibilityLargeContentTitle?: string | undefined;
74
77
  accessibilityRespondsToUserInteraction?: boolean | undefined;
75
- id?: string | undefined;
78
+ id?: string | undefined | undefined;
76
79
  onLayout?: ((event: import("react-native").LayoutChangeEvent) => void) | undefined | undefined;
77
80
  testID?: string | undefined | undefined;
78
81
  nativeID?: string | undefined | undefined;
@@ -120,21 +123,6 @@ export declare function useCheckboxRoot(props: ICheckboxProps, ref?: React.Ref<u
120
123
  onPointerDownCapture?: ((event: import("react-native").PointerEvent) => void) | undefined | undefined;
121
124
  onPointerUp?: ((event: import("react-native").PointerEvent) => void) | undefined | undefined;
122
125
  onPointerUpCapture?: ((event: import("react-native").PointerEvent) => void) | undefined | undefined;
123
- hasFeedbackText?: boolean | undefined;
124
- hasHelpText?: boolean | undefined;
125
- setHasFeedbackText?: import("react").Dispatch<import("react").SetStateAction<boolean>> | undefined;
126
- setHasHelpText?: import("react").Dispatch<import("react").SetStateAction<boolean>> | undefined;
127
- name?: string | undefined;
128
- labelId?: string | undefined;
129
- feedbackId?: string | undefined;
130
- helpTextId?: string | undefined;
131
- htmlProps?: {
132
- [x: string]: unknown;
133
- } | undefined;
134
- inputRef?: React.RefObject<import("@cdx-ui/utils").Focusable | null> | undefined;
135
- focusInput?: (() => void) | undefined;
136
- isLabelFocused?: boolean | undefined;
137
- setIsLabelFocused?: React.Dispatch<React.SetStateAction<boolean>> | undefined;
138
126
  };
139
127
  isInvalid: boolean | undefined;
140
128
  isReadOnly: boolean | undefined;
@@ -149,6 +137,7 @@ export declare function useCheckboxRoot(props: ICheckboxProps, ref?: React.Ref<u
149
137
  };
150
138
  mergedRef: import("react").RefCallback<unknown>;
151
139
  inputRef: import("react").RefObject<HTMLInputElement | null>;
140
+ toggle: () => void;
152
141
  };
153
142
  export {};
154
143
  //# sourceMappingURL=useCheckboxRoot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCheckboxRoot.d.ts","sourceRoot":"","sources":["../../../src/checkbox/useCheckboxRoot.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,UAAU,sBAAsB;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EACxB,EAAE,kBAA0B,EAAE,GAAE,sBAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqE5D"}
1
+ {"version":3,"file":"useCheckboxRoot.d.ts","sourceRoot":"","sources":["../../../src/checkbox/useCheckboxRoot.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,UAAU,sBAAsB;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EACxB,EAAE,kBAA0B,EAAE,GAAE,sBAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2F5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"RadioGroup.d.ts","sourceRoot":"","sources":["../../../src/radio/RadioGroup.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAOpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,sGAkEtB,CAAC"}
1
+ {"version":3,"file":"RadioGroup.d.ts","sourceRoot":"","sources":["../../../src/radio/RadioGroup.tsx"],"names":[],"mappings":"AACA,OAAO,EAAY,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAO9D,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,SAAS,CAAC;AAGjE,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,sGAiItB,CAAC"}
@@ -2,5 +2,13 @@ import type { IRadioProps } from './types';
2
2
  export interface RadioRootProps extends IRadioProps {
3
3
  asChild?: boolean;
4
4
  }
5
+ /**
6
+ * Web Radio root.
7
+ *
8
+ * On web, `@react-native-aria/radio` re-exports `@react-aria/radio`'s `useRadio`,
9
+ * whose `inputProps` target a native `<input type="radio">` (selection via
10
+ * `onChange`). Selection must be applied explicitly on the Pressable —
11
+ * `inputProps.onPress` does **not** call `setSelectedValue`.
12
+ */
5
13
  export declare const RadioRoot: import("react").ForwardRefExoticComponent<RadioRootProps & import("react").RefAttributes<import("react-native").View>>;
6
14
  //# sourceMappingURL=RadioRoot.web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RadioRoot.web.d.ts","sourceRoot":"","sources":["../../../src/radio/RadioRoot.web.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAsB,MAAM,SAAS,CAAC;AAK/D,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,SAAS,wHAsErB,CAAC"}
1
+ {"version":3,"file":"RadioRoot.web.d.ts","sourceRoot":"","sources":["../../../src/radio/RadioRoot.web.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAsB,MAAM,SAAS,CAAC;AAI/D,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,wHAwKrB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { RadioGroupState } from '@react-stately/radio';
3
- import type { IRadioContextValue } from './types';
3
+ import type { IRadioContextValue, RegisteredRadio } from './types';
4
4
  export declare const RadioProvider: React.FunctionComponent<{
5
5
  children: React.ReactNode;
6
6
  value: IRadioContextValue;
@@ -17,5 +17,10 @@ export declare const RadioGroupContext: React.Context<{
17
17
  state: IRadioGroupState;
18
18
  radioGroupState: RadioGroupState;
19
19
  name?: string;
20
+ focusedValue?: string | undefined;
21
+ setFocusedValue?: (value: string | undefined) => void;
22
+ registerRadio?: (value: string, entry: RegisteredRadio) => void;
23
+ unregisterRadio?: (value: string) => void;
24
+ getRadios?: () => [string, RegisteredRadio][];
20
25
  } | null>;
21
26
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/radio/context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,eAAO,MAAO,aAAa;;;IAAE,eAAe,0BAAqD,CAAC;AAElG,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,eAAO,MAAM,iBAAiB;WACrB,gBAAgB;qBACN,eAAe;WACzB,MAAM;SACA,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/radio/context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEnE,eAAO,MAAO,aAAa;;;IAAE,eAAe,0BAAqD,CAAC;AAElG,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,eAAO,MAAM,iBAAiB;WACrB,gBAAgB;qBACN,eAAe;WACzB,MAAM;mBACE,MAAM,GAAG,SAAS;sBACf,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI;oBACrC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,KAAK,IAAI;sBAC7C,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;gBAC7B,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE;SAChC,CAAC"}
@@ -40,4 +40,11 @@ export interface IRadioContextValue {
40
40
  isHovered?: boolean;
41
41
  isPressed?: boolean;
42
42
  }
43
+ /** Web roving-focus registration entry for a single radio item. */
44
+ export interface RegisteredRadio {
45
+ disabled: boolean;
46
+ node: {
47
+ focus?: () => void;
48
+ } | null;
49
+ }
43
50
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/radio/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,2CAA2C;IAC3C,SAAS,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC7B,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/radio/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,2CAA2C;IAC3C,SAAS,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC7B,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CACrC"}
@@ -0,0 +1,17 @@
1
+ import type { RegisteredRadio } from './types';
2
+ /** Resolves which radio value should hold the roving tab stop / keyboard focus anchor. */
3
+ export declare function getRovingFocusValue(focusedValue: string | undefined, selectedValue: string | null | undefined, enabledRadios: [string, RegisteredRadio][]): string | undefined;
4
+ export interface UseRadioGroupNavigationOptions {
5
+ getRadios: () => [string, RegisteredRadio][];
6
+ focusedValue: string | undefined;
7
+ setFocusedValue: (value: string | undefined) => void;
8
+ selectedValue: string | null | undefined;
9
+ selectValue: (value: string) => void;
10
+ }
11
+ export declare function useRadioGroupNavigation({ getRadios, focusedValue, setFocusedValue, selectedValue, selectValue, }: UseRadioGroupNavigationOptions): {
12
+ handleKeyDown: (e: {
13
+ key: string;
14
+ preventDefault: () => void;
15
+ }) => void;
16
+ };
17
+ //# sourceMappingURL=useRadioGroupNavigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRadioGroupNavigation.d.ts","sourceRoot":"","sources":["../../../src/radio/useRadioGroupNavigation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAW/C,0FAA0F;AAC1F,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,aAAa,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,GACzC,MAAM,GAAG,SAAS,CAUpB;AAED,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC;IAC7C,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACrD,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACzC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,wBAAgB,uBAAuB,CAAC,EACtC,SAAS,EACT,YAAY,EACZ,eAAe,EACf,aAAa,EACb,WAAW,GACZ,EAAE,8BAA8B;uBAmBzB;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,IAAI,CAAA;KAAE;EAyClD"}