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

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":["_react","require","_reactNative","_visuallyHidden","_utils","_focus","_slot","_dataAttributes","_context","_useRadioRoot","_jsxRuntime","RadioRoot","exports","forwardRef","asChild","children","props","ref","isHovered","isHoveredProp","isFocusVisible","isFocusVisibleProp","isDisabled","isDisabledProp","isInvalid","isInvalidProp","isReadOnly","isReadOnlyProp","isFocused","isPressed","combinedProps","inputProps","labelProps","isChecked","mergedRef","inputRef","useRadioRoot","useInputRefForAria","focusProps","useFocusRing","contextValue","Comp","Slot","Pressable","jsx","RadioProvider","value","jsxs","mergeProps","role","accessibilityRole","mergeDataAttributes","dataAttributes","checked","disabled","hover","invalid","readonly","active","focus","focusVisible","VisuallyHidden","displayName"],"sourceRoot":"../../../src","sources":["radio/RadioRoot.web.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AACA,IAAAM,eAAA,GAAAN,OAAA;AACA,IAAAO,QAAA,GAAAP,OAAA;AAEA,IAAAQ,aAAA,GAAAR,OAAA;AAA8C,IAAAS,WAAA,GAAAT,OAAA;AAE9C;;AAMO,MAAMU,SAAS,GAAAC,OAAA,CAAAD,SAAA,gBAAG,IAAAE,iBAAU,EACjC,CAAC;EAAEC,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,GAAG,IAAAC,0BAAY,EAACpB,KAAK,EAAEC,GAAG,EAAE;IAAEoB,kBAAkB,EAAE;EAAK,CAAC,CAAC;EAE1D,MAAM;IAAEC,UAAU;IAAElB;EAAe,CAAC,GAAG,IAAAmB,mBAAY,EAAC,CAAC;EAErD,MAAMC,YAAgC,GAAG;IACvCP,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,MAAMa,IAAI,GAAG3B,OAAO,GAAG4B,UAAI,GAAGC,sBAAS;EAEvC,oBACE,IAAAjC,WAAA,CAAAkC,GAAA,EAACpC,QAAA,CAAAqC,aAAa;IAACC,KAAK,EAAEN,YAAa;IAAAzB,QAAA,eACjC,IAAAL,WAAA,CAAAqC,IAAA,EAACN,IAAI;MAAA,GACC,IAAAO,iBAAU,EAAClB,aAAa,EAASE,UAAU,EAASM,UAAiB,CAAC;MAC1ErB,GAAG,EAAEiB,SAAU;MACfe,IAAI,EAAC;MACL;MAAA;MACAC,iBAAiB,EAAC,OAAO;MAAA,GACrB,IAAAC,mCAAmB,EACrBnC,KAAK,EACL,IAAAoC,8BAAc,EAAC;QACbC,OAAO,EAAEpB,SAAS;QAClBqB,QAAQ,EAAEhC,UAAU,IAAIC,cAAc;QACtCgC,KAAK,EAAErC,SAAS,IAAIC,aAAa;QACjCqC,OAAO,EAAEhC,SAAS,IAAIC,aAAa;QACnCgC,QAAQ,EAAE/B,UAAU,IAAIC,cAAc;QACtC+B,MAAM,EAAE7B,SAAS;QACjB8B,KAAK,EAAE/B,SAAS;QAChBgC,YAAY,EAAExC,cAAc,IAAIC;MAClC,CAAC,CACH,CAAC;MAAAN,QAAA,gBAED,IAAAL,WAAA,CAAAkC,GAAA,EAACzC,eAAA,CAAA0D,cAAc;QAAA9C,QAAA,eACb,IAAAL,WAAA,CAAAkC,GAAA;UAAA,GAAWb,UAAU;UAAEd,GAAG,EAAEkB;QAAS,CAAE;MAAC,CAC1B,CAAC,EAChBpB,QAAQ;IAAA,CACL;EAAC,CACM,CAAC;AAEpB,CACF,CAAC;AAEDJ,SAAS,CAACmD,WAAW,GAAG,WAAW","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_visuallyHidden","_utils","_focus","_slot","_dataAttributes","_context","_useRadioRoot","_useRadioGroupNavigation","_jsxRuntime","RadioRoot","exports","forwardRef","asChild","children","props","ref","isHovered","isHoveredProp","isFocusVisible","isFocusVisibleProp","isDisabled","isDisabledProp","isInvalid","isInvalidProp","isReadOnly","isReadOnlyProp","isFocused","isPressed","radioGroupContext","useContext","RadioGroupContext","combinedProps","inputProps","isChecked","mergedRef","inputRef","useRadioRoot","useInputRefForAria","focusProps","useFocusRing","nodeRef","useRef","setRefs","mergeRefs","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","useEffect","node","current","isRovingTabStop","useMemo","enabledRadios","filter","entry","rovingValue","getRovingFocusValue","handleKeyDown","event","key","preventDefault","contextValue","Comp","Slot","Pressable","jsx","RadioProvider","jsxs","Fragment","VisuallyHidden","readOnly","style","pointerEvents","undefined","accessibilityRole","accessibilityState","onClick","onKeyDown","composeEventHandlers","mergeDataAttributes","dataAttributes","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","_interopRequireDefault","require","_utils","e","__esModule","default","RadioProvider","useRadioContext","createContext","exports","RadioGroupContext","React"],"sourceRoot":"../../../src","sources":["radio/context.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAA8C,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAIvC,MAAM,CAACG,aAAa,EAAEC,eAAe,CAAC,GAAG,IAAAC,oBAAa,EAAqB,cAAc,CAAC;AAACC,OAAA,CAAAF,eAAA,GAAAA,eAAA;AAAAE,OAAA,CAAAH,aAAA,GAAAA,aAAA;AAW3F,MAAMI,iBAAiB,GAAAD,OAAA,CAAAC,iBAAA,gBAAGC,cAAK,CAACH,aAAa,CAI1C,IAAI,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_utils","e","__esModule","default","RadioProvider","useRadioContext","createContext","exports","RadioGroupContext","React"],"sourceRoot":"../../../src","sources":["radio/context.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAA8C,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAIvC,MAAM,CAACG,aAAa,EAAEC,eAAe,CAAC,GAAG,IAAAC,oBAAa,EAAqB,cAAc,CAAC;AAACC,OAAA,CAAAF,eAAA,GAAAA,eAAA;AAAAE,OAAA,CAAAH,aAAA,GAAAA,aAAA;AAW3F,MAAMI,iBAAiB,GAAAD,OAAA,CAAAC,iBAAA,gBAAGC,cAAK,CAACH,aAAa,CAS1C,IAAI,CAAC","ignoreList":[]}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getRovingFocusValue = getRovingFocusValue;
7
+ exports.useRadioGroupNavigation = useRadioGroupNavigation;
8
+ var _react = require("react");
9
+ // Web-only — native platforms rely on OS-managed sequential focus (VoiceOver/TalkBack).
10
+
11
+ function isEnabledRadioValue(value, enabledRadios) {
12
+ return value != null && enabledRadios.some(([radioValue]) => radioValue === value);
13
+ }
14
+
15
+ /** Resolves which radio value should hold the roving tab stop / keyboard focus anchor. */
16
+ function getRovingFocusValue(focusedValue, selectedValue, enabledRadios) {
17
+ const defaultFocusValue = isEnabledRadioValue(selectedValue, enabledRadios) ? selectedValue : enabledRadios[0]?.[0];
18
+ const resolvedFocusedValue = isEnabledRadioValue(focusedValue, enabledRadios) ? focusedValue : undefined;
19
+ return resolvedFocusedValue ?? defaultFocusValue;
20
+ }
21
+ function useRadioGroupNavigation({
22
+ getRadios,
23
+ focusedValue,
24
+ setFocusedValue,
25
+ selectedValue,
26
+ selectValue
27
+ }) {
28
+ const selectValueRef = (0, _react.useRef)(selectValue);
29
+ selectValueRef.current = selectValue;
30
+ const getEnabledRadios = (0, _react.useCallback)(() => getRadios().filter(([, entry]) => !entry.disabled), [getRadios]);
31
+ const moveFocus = (0, _react.useCallback)(([targetValue, targetEntry]) => {
32
+ setFocusedValue(targetValue);
33
+ targetEntry.node?.focus?.();
34
+ selectValueRef.current(targetValue);
35
+ }, [setFocusedValue]);
36
+ const handleKeyDown = (0, _react.useCallback)(e => {
37
+ const enabledRadios = getEnabledRadios();
38
+ if (enabledRadios.length === 0) {
39
+ return;
40
+ }
41
+ const currentValue = getRovingFocusValue(focusedValue, selectedValue, enabledRadios);
42
+ const idx = enabledRadios.findIndex(([value]) => value === currentValue);
43
+ switch (e.key) {
44
+ case 'ArrowDown':
45
+ case 'ArrowRight':
46
+ {
47
+ e.preventDefault();
48
+ moveFocus(enabledRadios[idx < enabledRadios.length - 1 ? idx + 1 : 0]);
49
+ break;
50
+ }
51
+ case 'ArrowUp':
52
+ case 'ArrowLeft':
53
+ {
54
+ e.preventDefault();
55
+ moveFocus(enabledRadios[idx > 0 ? idx - 1 : enabledRadios.length - 1]);
56
+ break;
57
+ }
58
+ case 'Home':
59
+ {
60
+ e.preventDefault();
61
+ moveFocus(enabledRadios[0]);
62
+ break;
63
+ }
64
+ case 'End':
65
+ {
66
+ e.preventDefault();
67
+ const last = enabledRadios.at(-1);
68
+ if (last) {
69
+ moveFocus(last);
70
+ }
71
+ break;
72
+ }
73
+ }
74
+ }, [focusedValue, selectedValue, getEnabledRadios, moveFocus]);
75
+ return {
76
+ handleKeyDown
77
+ };
78
+ }
79
+ //# sourceMappingURL=useRadioGroupNavigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","isEnabledRadioValue","value","enabledRadios","some","radioValue","getRovingFocusValue","focusedValue","selectedValue","defaultFocusValue","resolvedFocusedValue","undefined","useRadioGroupNavigation","getRadios","setFocusedValue","selectValue","selectValueRef","useRef","current","getEnabledRadios","useCallback","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":[]}
@@ -13,27 +13,28 @@ function useRadioRoot(props, ref, {
13
13
  useInputRefForAria = false
14
14
  } = {}) {
15
15
  const formControlContext = (0, _utils.useFormControlContext)();
16
- const {
17
- isInvalid,
18
- isReadOnly,
19
- ...combinedProps
20
- } = {
21
- ...formControlContext,
22
- ...props
23
- };
24
16
  const radioGroupContext = (0, _react.useContext)(_context.RadioGroupContext);
25
17
  if (!radioGroupContext) {
26
18
  throw new Error('Radio must be rendered inside a Radio.Group. Standalone Radio is not supported.');
27
19
  }
20
+ const isInvalid = props.isInvalid ?? formControlContext.isInvalid;
21
+ const isReadOnly = props.isReadOnly ?? formControlContext.isReadOnly ?? radioGroupContext.state.isReadOnly;
22
+ const isDisabled = props.isDisabled ?? formControlContext.isDisabled ?? radioGroupContext.state.isDisabled;
23
+ const combinedProps = {
24
+ ...props,
25
+ isInvalid,
26
+ isReadOnly,
27
+ isDisabled
28
+ };
28
29
  const rootRef = (0, _react.useRef)(null);
29
30
  const inputRef = (0, _react.useRef)(null);
30
31
  const mergedRootRef = (0, _utils.mergeRefs)(ref, rootRef);
31
- const ariaLabel = combinedProps['aria-label'] || combinedProps.value || 'Radio';
32
+ const ariaLabel = props['aria-label'] || props.value || 'Radio';
32
33
  const radio = (0, _radio.useRadio)({
33
34
  ...combinedProps,
34
35
  'aria-label': ariaLabel,
35
- isReadOnly: isReadOnly || radioGroupContext.state.isReadOnly,
36
- isDisabled: combinedProps.isDisabled || radioGroupContext.state.isDisabled
36
+ isReadOnly,
37
+ isDisabled
37
38
  }, radioGroupContext.radioGroupState, useInputRefForAria ? inputRef : rootRef);
38
39
  const {
39
40
  inputProps,
@@ -41,7 +42,7 @@ function useRadioRoot(props, ref, {
41
42
  } = radio;
42
43
  const {
43
44
  checked: isChecked,
44
- disabled: isDisabled
45
+ disabled: isDisabledFromInput
45
46
  } = inputProps;
46
47
  const {
47
48
  hoverProps,
@@ -54,7 +55,7 @@ function useRadioRoot(props, ref, {
54
55
  inputProps,
55
56
  labelProps: labelProps ?? {},
56
57
  isChecked,
57
- isDisabled,
58
+ isDisabled: isDisabledFromInput,
58
59
  isHovered,
59
60
  hoverProps,
60
61
  mergedRef: mergedRootRef,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_utils","_radio","_interactions","_context","useRadioRoot","props","ref","useInputRefForAria","formControlContext","useFormControlContext","isInvalid","isReadOnly","combinedProps","radioGroupContext","useContext","RadioGroupContext","Error","rootRef","useRef","inputRef","mergedRootRef","mergeRefs","ariaLabel","value","radio","useRadio","state","isDisabled","radioGroupState","inputProps","labelProps","checked","isChecked","disabled","hoverProps","isHovered","useHover","mergedRef"],"sourceRoot":"../../../src","sources":["radio/useRadioRoot.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AAOO,SAASK,YAAYA,CAC1BC,KAAkB,EAClBC,GAAwB,EACxB;EAAEC,kBAAkB,GAAG;AAA2B,CAAC,GAAG,CAAC,CAAC,EACxD;EACA,MAAMC,kBAAkB,GAAG,IAAAC,4BAAqB,EAAC,CAAC;EAElD,MAAM;IAAEC,SAAS;IAAEC,UAAU;IAAE,GAAGC;EAAc,CAAC,GAAG;IAClD,GAAGJ,kBAAkB;IACrB,GAAGH;EACL,CAAC;EAED,MAAMQ,iBAAiB,GAAG,IAAAC,iBAAU,EAACC,0BAAiB,CAAC;EAEvD,IAAI,CAACF,iBAAiB,EAAE;IACtB,MAAM,IAAIG,KAAK,CACb,iFACF,CAAC;EACH;EAEA,MAAMC,OAAO,GAAG,IAAAC,aAAM,EAAC,IAAI,CAAC;EAC5B,MAAMC,QAAQ,GAAG,IAAAD,aAAM,EAA0B,IAAI,CAAC;EACtD,MAAME,aAAa,GAAG,IAAAC,gBAAS,EAACf,GAAG,EAASW,OAAc,CAAC;EAC3D,MAAMK,SAAS,GAAGV,aAAa,CAAC,YAAY,CAAC,IAAIA,aAAa,CAACW,KAAK,IAAI,OAAO;EAE/E,MAAMC,KAAK,GAAG,IAAAC,eAAQ,EACpB;IACE,GAAGb,aAAa;IAChB,YAAY,EAAEU,SAAS;IACvBX,UAAU,EAAEA,UAAU,IAAIE,iBAAiB,CAACa,KAAK,CAACf,UAAU;IAC5DgB,UAAU,EAAEf,aAAa,CAACe,UAAU,IAAId,iBAAiB,CAACa,KAAK,CAACC;EAClE,CAAC,EACDd,iBAAiB,CAACe,eAAe,EAChCrB,kBAAkB,GAAGY,QAAQ,GAAGF,OACnC,CAAC;EAED,MAAM;IAAEY,UAAU;IAAEC;EAAW,CAAC,GAAGN,KAElC;EAED,MAAM;IAAEO,OAAO,EAAEC,SAAS;IAAEC,QAAQ,EAAEN;EAAW,CAAC,GAAGE,UAAU;EAE/D,MAAM;IAAEK,UAAU;IAAEC;EAAU,CAAC,GAAG,IAAAC,sBAAQ,EAAC,CAAC,CAAC,EAAEnB,OAAO,CAAC;EAEvD,OAAO;IACLL,aAAa;IACbF,SAAS,EAAEA,SAAS,IAAIG,iBAAiB,CAACa,KAAK,CAAChB,SAAS;IACzDC,UAAU,EAAEA,UAAU,IAAIE,iBAAiB,CAACa,KAAK,CAACf,UAAU;IAC5DkB,UAAU;IACVC,UAAU,EAAEA,UAAU,IAAI,CAAC,CAAC;IAC5BE,SAAS;IACTL,UAAU;IACVQ,SAAS;IACTD,UAAU;IACVG,SAAS,EAAEjB,aAAa;IACxBD;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_utils","_radio","_interactions","_context","useRadioRoot","props","ref","useInputRefForAria","formControlContext","useFormControlContext","radioGroupContext","useContext","RadioGroupContext","Error","isInvalid","isReadOnly","state","isDisabled","combinedProps","rootRef","useRef","inputRef","mergedRootRef","mergeRefs","ariaLabel","value","radio","useRadio","radioGroupState","inputProps","labelProps","checked","isChecked","disabled","isDisabledFromInput","hoverProps","isHovered","useHover","mergedRef"],"sourceRoot":"../../../src","sources":["radio/useRadioRoot.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AAOO,SAASK,YAAYA,CAC1BC,KAAkB,EAClBC,GAAwB,EACxB;EAAEC,kBAAkB,GAAG;AAA2B,CAAC,GAAG,CAAC,CAAC,EACxD;EACA,MAAMC,kBAAkB,GAAG,IAAAC,4BAAqB,EAAC,CAAC;EAClD,MAAMC,iBAAiB,GAAG,IAAAC,iBAAU,EAACC,0BAAiB,CAAC;EAEvD,IAAI,CAACF,iBAAiB,EAAE;IACtB,MAAM,IAAIG,KAAK,CACb,iFACF,CAAC;EACH;EAEA,MAAMC,SAAS,GAAGT,KAAK,CAACS,SAAS,IAAIN,kBAAkB,CAACM,SAAS;EACjE,MAAMC,UAAU,GACdV,KAAK,CAACU,UAAU,IAAIP,kBAAkB,CAACO,UAAU,IAAIL,iBAAiB,CAACM,KAAK,CAACD,UAAU;EACzF,MAAME,UAAU,GACdZ,KAAK,CAACY,UAAU,IAAIT,kBAAkB,CAACS,UAAU,IAAIP,iBAAiB,CAACM,KAAK,CAACC,UAAU;EAEzF,MAAMC,aAAa,GAAG;IACpB,GAAGb,KAAK;IACRS,SAAS;IACTC,UAAU;IACVE;EACF,CAAC;EAED,MAAME,OAAO,GAAG,IAAAC,aAAM,EAAC,IAAI,CAAC;EAC5B,MAAMC,QAAQ,GAAG,IAAAD,aAAM,EAA0B,IAAI,CAAC;EACtD,MAAME,aAAa,GAAG,IAAAC,gBAAS,EAACjB,GAAG,EAASa,OAAc,CAAC;EAC3D,MAAMK,SAAS,GAAGnB,KAAK,CAAC,YAAY,CAAC,IAAIA,KAAK,CAACoB,KAAK,IAAI,OAAO;EAE/D,MAAMC,KAAK,GAAG,IAAAC,eAAQ,EACpB;IACE,GAAGT,aAAa;IAChB,YAAY,EAAEM,SAAS;IACvBT,UAAU;IACVE;EACF,CAAC,EACDP,iBAAiB,CAACkB,eAAe,EAChCrB,kBAAkB,GAAGc,QAAQ,GAAGF,OACnC,CAAC;EAED,MAAM;IAAEU,UAAU;IAAEC;EAAW,CAAC,GAAGJ,KAElC;EAED,MAAM;IAAEK,OAAO,EAAEC,SAAS;IAAEC,QAAQ,EAAEC;EAAoB,CAAC,GAAGL,UAAU;EAExE,MAAM;IAAEM,UAAU;IAAEC;EAAU,CAAC,GAAG,IAAAC,sBAAQ,EAAC,CAAC,CAAC,EAAElB,OAAO,CAAC;EAEvD,OAAO;IACLD,aAAa;IACbJ,SAAS,EAAEA,SAAS,IAAIJ,iBAAiB,CAACM,KAAK,CAACF,SAAS;IACzDC,UAAU,EAAEA,UAAU,IAAIL,iBAAiB,CAACM,KAAK,CAACD,UAAU;IAC5Dc,UAAU;IACVC,UAAU,EAAEA,UAAU,IAAI,CAAC,CAAC;IAC5BE,SAAS;IACTf,UAAU,EAAEiB,mBAAmB;IAC/BE,SAAS;IACTD,UAAU;IACVG,SAAS,EAAEhB,aAAa;IACxBD;EACF,CAAC;AACH","ignoreList":[]}
@@ -3,12 +3,21 @@
3
3
  import { forwardRef } from 'react';
4
4
  import { Pressable } from 'react-native';
5
5
  import { VisuallyHidden } from '@react-aria/visually-hidden';
6
+ import { composeEventHandlers } from '@cdx-ui/utils';
6
7
  import { useFocusRing } from '@react-native-aria/focus';
7
8
  import { Slot } from '../slot';
8
9
  import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
9
10
  import { CheckboxProvider } from './context';
10
11
  import { useCheckboxRoot } from './useCheckboxRoot';
11
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
13
+ /**
14
+ * Web Checkbox root.
15
+ *
16
+ * On web, `@react-native-aria/checkbox` re-exports `@react-aria/checkbox`'s
17
+ * `useCheckbox`, whose `inputProps` target a native `<input type="checkbox">`
18
+ * (selection via `onChange`). Toggle must be applied explicitly on the Pressable —
19
+ * `inputProps.onPress` does **not** call `toggleState.toggle()`.
20
+ */
12
21
  export const CheckboxRoot = /*#__PURE__*/forwardRef(({
13
22
  asChild,
14
23
  children,
@@ -35,7 +44,8 @@ export const CheckboxRoot = /*#__PURE__*/forwardRef(({
35
44
  isDisabled,
36
45
  isHovered,
37
46
  mergedRef,
38
- inputRef
47
+ inputRef,
48
+ toggle
39
49
  } = useCheckboxRoot(props, ref, {
40
50
  useInputRefForAria: true
41
51
  });
@@ -43,46 +53,99 @@ export const CheckboxRoot = /*#__PURE__*/forwardRef(({
43
53
  focusProps,
44
54
  isFocusVisible
45
55
  } = useFocusRing();
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
+ } = groupItemInputProps;
72
+ const resolvedChecked = !!(isChecked || isCheckedProp);
73
+ const resolvedIndeterminate = !!(isIndeterminate || isIndeterminateProp);
74
+ const resolvedDisabled = !!(isDisabled || isDisabledProp);
75
+ const resolvedReadOnly = !!(isReadOnly || isReadOnlyProp);
76
+ const ariaChecked = resolvedIndeterminate ? 'mixed' : resolvedChecked;
77
+ const handleToggle = () => {
78
+ if (resolvedDisabled || resolvedReadOnly) {
79
+ return;
80
+ }
81
+ toggle();
82
+ };
83
+ const handleKeyDown = event => {
84
+ if (event.key === ' ' || event.key === 'Spacebar') {
85
+ event.preventDefault();
86
+ handleToggle();
87
+ }
88
+ };
46
89
  const contextValue = {
47
- isChecked: isChecked || isCheckedProp,
48
- isDisabled: isDisabled || isDisabledProp,
90
+ isChecked: resolvedChecked,
91
+ isDisabled: resolvedDisabled,
49
92
  isFocusVisible: isFocusVisible || isFocusVisibleProp,
50
93
  isHovered: isHovered || isHoveredProp,
51
94
  isInvalid: isInvalid || isInvalidProp,
52
- isReadOnly: isReadOnly || isReadOnlyProp,
53
- isIndeterminate: isIndeterminate || isIndeterminateProp,
95
+ isReadOnly: resolvedReadOnly,
96
+ isIndeterminate: resolvedIndeterminate,
54
97
  isPressed,
55
98
  isFocused
56
99
  };
57
100
  const Comp = asChild ? Slot : Pressable;
58
101
  return /*#__PURE__*/_jsx(CheckboxProvider, {
59
102
  value: contextValue,
60
- children: /*#__PURE__*/_jsxs(Comp, {
61
- ...combinedProps,
62
- ref: mergedRef,
63
- tabIndex: -1,
64
- role: "label"
65
- // eslint-disable-next-line react-native-a11y/has-valid-accessibility-role
66
- ,
67
- accessibilityRole: "label",
68
- ...mergeDataAttributes(props, dataAttributes({
69
- checked: isChecked || isCheckedProp,
70
- disabled: isDisabled || isDisabledProp,
71
- hover: isHovered || isHoveredProp,
72
- invalid: isInvalid || isInvalidProp,
73
- readonly: isReadOnly || isReadOnlyProp,
74
- active: isPressed,
75
- focus: isFocused,
76
- indeterminate: isIndeterminate || isIndeterminateProp,
77
- focusVisible: isFocusVisible
78
- })),
103
+ children: /*#__PURE__*/_jsxs(_Fragment, {
79
104
  children: [/*#__PURE__*/_jsx(VisuallyHidden, {
80
105
  children: /*#__PURE__*/_jsx("input", {
81
- ...groupItemInputProps,
82
- ...focusProps,
83
- ref: inputRef
106
+ ref: inputRef,
107
+ type: "checkbox",
108
+ value: combinedProps.value,
109
+ checked: resolvedChecked,
110
+ disabled: resolvedDisabled,
111
+ tabIndex: -1,
112
+ "aria-hidden": true,
113
+ readOnly: true,
114
+ style: {
115
+ pointerEvents: 'none'
116
+ }
84
117
  })
85
- }), children]
118
+ }), /*#__PURE__*/_jsx(Comp, {
119
+ ...combinedProps,
120
+ ...inputAriaProps,
121
+ ref: mergedRef,
122
+ role: "checkbox",
123
+ "aria-checked": ariaChecked,
124
+ "aria-disabled": resolvedDisabled || undefined,
125
+ accessibilityRole: "checkbox",
126
+ accessibilityState: {
127
+ checked: resolvedIndeterminate ? 'mixed' : resolvedChecked,
128
+ disabled: resolvedDisabled
129
+ },
130
+ tabIndex: resolvedDisabled ? -1 : 0,
131
+ disabled: resolvedDisabled,
132
+ ...focusProps,
133
+ onPress: handleToggle,
134
+ onClick: handleToggle,
135
+ onKeyDown: composeEventHandlers(combinedProps.onKeyDown, handleKeyDown),
136
+ ...mergeDataAttributes(props, dataAttributes({
137
+ checked: resolvedChecked,
138
+ disabled: resolvedDisabled,
139
+ hover: isHovered || isHoveredProp,
140
+ invalid: isInvalid || isInvalidProp,
141
+ readonly: resolvedReadOnly,
142
+ active: isPressed,
143
+ focus: isFocused,
144
+ indeterminate: resolvedIndeterminate,
145
+ focusVisible: isFocusVisible || isFocusVisibleProp
146
+ })),
147
+ children: children
148
+ })]
86
149
  })
87
150
  });
88
151
  });
@@ -1 +1 @@
1
- {"version":3,"names":["forwardRef","Pressable","VisuallyHidden","useFocusRing","Slot","dataAttributes","mergeDataAttributes","CheckboxProvider","useCheckboxRoot","jsx","_jsx","jsxs","_jsxs","CheckboxRoot","asChild","children","props","ref","isHovered","isHoveredProp","isFocusVisible","isFocusVisibleProp","isChecked","isCheckedProp","isDisabled","isDisabledProp","isInvalid","isInvalidProp","isReadOnly","isReadOnlyProp","isIndeterminate","isIndeterminateProp","isFocused","isPressed","combinedProps","groupItemInputProps","mergedRef","inputRef","useInputRefForAria","focusProps","contextValue","Comp","value","tabIndex","role","accessibilityRole","checked","disabled","hover","invalid","readonly","active","focus","indeterminate","focusVisible","displayName"],"sourceRoot":"../../../src","sources":["checkbox/CheckboxRoot.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["forwardRef","Pressable","VisuallyHidden","composeEventHandlers","useFocusRing","Slot","dataAttributes","mergeDataAttributes","CheckboxProvider","useCheckboxRoot","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","CheckboxRoot","asChild","children","props","ref","isHovered","isHoveredProp","isFocusVisible","isFocusVisibleProp","isChecked","isCheckedProp","isDisabled","isDisabledProp","isInvalid","isInvalidProp","isReadOnly","isReadOnlyProp","isIndeterminate","isIndeterminateProp","isFocused","isPressed","combinedProps","groupItemInputProps","mergedRef","inputRef","toggle","useInputRefForAria","focusProps","onPress","_onPress","onChange","_onChange","role","_role","tabIndex","_tabIndex","disabled","_disabled","checked","_checked","value","_value","type","_type","name","_name","form","_form","required","_required","inputAriaProps","resolvedChecked","resolvedIndeterminate","resolvedDisabled","resolvedReadOnly","ariaChecked","handleToggle","handleKeyDown","event","key","preventDefault","contextValue","Comp","readOnly","style","pointerEvents","undefined","accessibilityRole","accessibilityState","onClick","onKeyDown","hover","invalid","readonly","active","focus","indeterminate","focusVisible","displayName"],"sourceRoot":"../../../src","sources":["checkbox/CheckboxRoot.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { useContext, useRef } from 'react';
3
+ import { useCallback, useContext, useRef } from 'react';
4
4
  import { mergeRefs, useFormControlContext } from '@cdx-ui/utils';
5
5
  import { useCheckbox } from '@react-native-aria/checkbox';
6
6
  import { useHover } from '@react-native-aria/interactions';
@@ -10,27 +10,35 @@ export function useCheckboxRoot(props, ref, {
10
10
  useInputRefForAria = false
11
11
  } = {}) {
12
12
  const formControlContext = useFormControlContext();
13
- const {
13
+ const checkboxGroupContext = useContext(CheckboxGroupContext);
14
+
15
+ // Only pull field-state flags from FormControl — never spread the whole context
16
+ // (ids, setters, htmlProps) onto the host element.
17
+ const isInvalid = props.isInvalid ?? formControlContext.isInvalid;
18
+ const isReadOnly = props.isReadOnly ?? formControlContext.isReadOnly ?? checkboxGroupContext?.state.isReadOnly;
19
+ const isDisabled = props.isDisabled ?? formControlContext.isDisabled ?? checkboxGroupContext?.state.isDisabled;
20
+ const isIndeterminate = props.isIndeterminate;
21
+ const combinedProps = {
22
+ ...props,
14
23
  isInvalid,
15
24
  isReadOnly,
16
- isIndeterminate,
17
- ...combinedProps
18
- } = {
19
- ...formControlContext,
20
- ...props
25
+ isDisabled,
26
+ isIndeterminate
21
27
  };
22
- const checkboxGroupContext = useContext(CheckboxGroupContext);
23
28
  const state = useToggleState({
24
- ...combinedProps,
25
29
  defaultSelected: props.defaultIsChecked,
26
- isSelected: props.isChecked
30
+ isSelected: props.isChecked,
31
+ onChange: props.onChange,
32
+ isReadOnly,
33
+ isDisabled
27
34
  });
28
35
  const rootRef = useRef(null);
29
36
  const inputRef = useRef(null);
30
37
  const mergedRootRef = mergeRefs(ref, rootRef);
31
- const ariaLabel = combinedProps['aria-label'] || combinedProps.value || 'Checkbox';
38
+ const ariaLabel = props['aria-label'] || props.value || 'Checkbox';
32
39
  const groupToggleState = useToggleState(checkboxGroupContext ? {
33
- isReadOnly: isReadOnly || checkboxGroupContext.state.isReadOnly,
40
+ isReadOnly: !!isReadOnly,
41
+ isDisabled: !!isDisabled,
34
42
  isSelected: checkboxGroupContext.state.isSelected(combinedProps.value),
35
43
  onChange(isSelected) {
36
44
  if (isSelected) {
@@ -43,24 +51,29 @@ export function useCheckboxRoot(props, ref, {
43
51
  } : {
44
52
  isSelected: false
45
53
  });
54
+ const toggleState = checkboxGroupContext ? groupToggleState : state;
46
55
  const {
47
56
  inputProps: groupItemInputProps
48
57
  } = useCheckbox({
49
58
  ...combinedProps,
50
59
  'aria-label': ariaLabel,
51
- ...(checkboxGroupContext && {
52
- isReadOnly: isReadOnly || checkboxGroupContext.state.isReadOnly,
53
- isDisabled: combinedProps.isDisabled || checkboxGroupContext.state.isDisabled
54
- })
55
- }, checkboxGroupContext ? groupToggleState : state, useInputRefForAria ? inputRef : rootRef);
60
+ isReadOnly: !!isReadOnly,
61
+ isDisabled: !!isDisabled
62
+ }, toggleState, useInputRefForAria ? inputRef : rootRef);
56
63
  const {
57
64
  checked: isChecked,
58
- disabled: isDisabled
65
+ disabled: isDisabledFromInput
59
66
  } = groupItemInputProps;
60
67
  const {
61
68
  hoverProps,
62
69
  isHovered
63
70
  } = useHover({}, rootRef);
71
+ const toggle = useCallback(() => {
72
+ if (isDisabled || isReadOnly) {
73
+ return;
74
+ }
75
+ toggleState.toggle();
76
+ }, [isDisabled, isReadOnly, toggleState]);
64
77
  return {
65
78
  combinedProps,
66
79
  isInvalid,
@@ -68,11 +81,12 @@ export function useCheckboxRoot(props, ref, {
68
81
  isIndeterminate,
69
82
  groupItemInputProps,
70
83
  isChecked,
71
- isDisabled,
84
+ isDisabled: isDisabledFromInput,
72
85
  isHovered,
73
86
  hoverProps,
74
87
  mergedRef: mergedRootRef,
75
- inputRef
88
+ inputRef,
89
+ toggle
76
90
  };
77
91
  }
78
92
  //# sourceMappingURL=useCheckboxRoot.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useContext","useRef","mergeRefs","useFormControlContext","useCheckbox","useHover","useToggleState","CheckboxGroupContext","useCheckboxRoot","props","ref","useInputRefForAria","formControlContext","isInvalid","isReadOnly","isIndeterminate","combinedProps","checkboxGroupContext","state","defaultSelected","defaultIsChecked","isSelected","isChecked","rootRef","inputRef","mergedRootRef","ariaLabel","value","groupToggleState","onChange","addValue","removeValue","inputProps","groupItemInputProps","isDisabled","checked","disabled","hoverProps","isHovered","mergedRef"],"sourceRoot":"../../../src","sources":["checkbox/useCheckboxRoot.ts"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,MAAM,QAAQ,OAAO;AAC1C,SAASC,SAAS,EAAEC,qBAAqB,QAAQ,eAAe;AAChE,SAASC,WAAW,QAAQ,6BAA6B;AACzD,SAASC,QAAQ,QAAQ,iCAAiC;AAC1D,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SAASC,oBAAoB,QAAQ,WAAW;AAOhD,OAAO,SAASC,eAAeA,CAC7BC,KAAqB,EACrBC,GAAwB,EACxB;EAAEC,kBAAkB,GAAG;AAA8B,CAAC,GAAG,CAAC,CAAC,EAC3D;EACA,MAAMC,kBAAkB,GAAGT,qBAAqB,CAAC,CAAC;EAElD,MAAM;IAAEU,SAAS;IAAEC,UAAU;IAAEC,eAAe;IAAE,GAAGC;EAAc,CAAC,GAAG;IACnE,GAAGJ,kBAAkB;IACrB,GAAGH;EACL,CAAC;EAED,MAAMQ,oBAAoB,GAAGjB,UAAU,CAACO,oBAAoB,CAAC;EAE7D,MAAMW,KAAK,GAAGZ,cAAc,CAAC;IAC3B,GAAGU,aAAa;IAChBG,eAAe,EAAEV,KAAK,CAACW,gBAAgB;IACvCC,UAAU,EAAEZ,KAAK,CAACa;EACpB,CAAC,CAAC;EAEF,MAAMC,OAAO,GAAGtB,MAAM,CAAC,IAAI,CAAC;EAC5B,MAAMuB,QAAQ,GAAGvB,MAAM,CAA0B,IAAI,CAAC;EACtD,MAAMwB,aAAa,GAAGvB,SAAS,CAACQ,GAAG,EAASa,OAAc,CAAC;EAC3D,MAAMG,SAAS,GAAGV,aAAa,CAAC,YAAY,CAAC,IAAIA,aAAa,CAACW,KAAK,IAAI,UAAU;EAElF,MAAMC,gBAAgB,GAAGtB,cAAc,CACrCW,oBAAoB,GAChB;IACEH,UAAU,EAAEA,UAAU,IAAIG,oBAAoB,CAACC,KAAK,CAACJ,UAAU;IAC/DO,UAAU,EAAEJ,oBAAoB,CAACC,KAAK,CAACG,UAAU,CAACL,aAAa,CAACW,KAAK,CAAC;IACtEE,QAAQA,CAACR,UAAmB,EAAE;MAC5B,IAAIA,UAAU,EAAE;QACdJ,oBAAoB,CAACC,KAAK,CAACY,QAAQ,CAACd,aAAa,CAACW,KAAK,CAAC;MAC1D,CAAC,MAAM;QACLV,oBAAoB,CAACC,KAAK,CAACa,WAAW,CAACf,aAAa,CAACW,KAAK,CAAC;MAC7D;MACAX,aAAa,CAACa,QAAQ,GAAGR,UAAU,CAAC;IACtC;EACF,CAAC,GACD;IAAEA,UAAU,EAAE;EAAM,CAC1B,CAAC;EAED,MAAM;IAAEW,UAAU,EAAEC;EAAoB,CAAC,GAAG7B,WAAW,CACrD;IACE,GAAGY,aAAa;IAChB,YAAY,EAAEU,SAAS;IACvB,IAAIT,oBAAoB,IAAI;MAC1BH,UAAU,EAAEA,UAAU,IAAIG,oBAAoB,CAACC,KAAK,CAACJ,UAAU;MAC/DoB,UAAU,EAAElB,aAAa,CAACkB,UAAU,IAAIjB,oBAAoB,CAACC,KAAK,CAACgB;IACrE,CAAC;EACH,CAAC,EACDjB,oBAAoB,GAAGW,gBAAgB,GAAGV,KAAK,EAC9CP,kBAAkB,GAAGa,QAAQ,GAAGD,OACnC,CAAC;EAED,MAAM;IAAEY,OAAO,EAAEb,SAAS;IAAEc,QAAQ,EAAEF;EAAW,CAAC,GAAGD,mBAAmB;EAExE,MAAM;IAAEI,UAAU;IAAEC;EAAU,CAAC,GAAGjC,QAAQ,CAAC,CAAC,CAAC,EAAEkB,OAAO,CAAC;EAEvD,OAAO;IACLP,aAAa;IACbH,SAAS;IACTC,UAAU;IACVC,eAAe;IACfkB,mBAAmB;IACnBX,SAAS;IACTY,UAAU;IACVI,SAAS;IACTD,UAAU;IACVE,SAAS,EAAEd,aAAa;IACxBD;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useContext","useRef","mergeRefs","useFormControlContext","useCheckbox","useHover","useToggleState","CheckboxGroupContext","useCheckboxRoot","props","ref","useInputRefForAria","formControlContext","checkboxGroupContext","isInvalid","isReadOnly","state","isDisabled","isIndeterminate","combinedProps","defaultSelected","defaultIsChecked","isSelected","isChecked","onChange","rootRef","inputRef","mergedRootRef","ariaLabel","value","groupToggleState","addValue","removeValue","toggleState","inputProps","groupItemInputProps","checked","disabled","isDisabledFromInput","hoverProps","isHovered","toggle","mergedRef"],"sourceRoot":"../../../src","sources":["checkbox/useCheckboxRoot.ts"],"mappings":"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","ignoreList":[]}
@@ -1,13 +1,14 @@
1
1
  "use strict";
2
2
 
3
- import { forwardRef } from 'react';
4
- import { View } from 'react-native';
5
- import { useFormControlContext } from '@cdx-ui/utils';
3
+ import { forwardRef, useCallback, useEffect, useRef, useState } from 'react';
4
+ import { Platform, View } from 'react-native';
5
+ import { composeEventHandlers, useFormControl } from '@cdx-ui/utils';
6
6
  import { useRadioGroup } from '@react-native-aria/radio';
7
7
  import { useRadioGroupState } from '@react-stately/radio';
8
8
  import { Slot } from '../slot';
9
9
  import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
10
10
  import { RadioGroupContext } from './context';
11
+ import { useRadioGroupNavigation } from './useRadioGroupNavigation';
11
12
  import { jsx as _jsx } from "react/jsx-runtime";
12
13
  export const RadioGroup = /*#__PURE__*/forwardRef(({
13
14
  asChild,
@@ -16,25 +17,66 @@ export const RadioGroup = /*#__PURE__*/forwardRef(({
16
17
  style,
17
18
  ...props
18
19
  }, ref) => {
19
- const formControlContext = useFormControlContext();
20
- const combinedProps = {
21
- ...formControlContext,
22
- ...props
23
- };
20
+ const formControlProps = useFormControl({
21
+ isDisabled: props.isDisabled,
22
+ isRequired: props.isRequired,
23
+ isInvalid: props.isInvalid,
24
+ isReadOnly: props.isReadOnly
25
+ });
26
+ const isDisabled = props.isDisabled ?? Boolean(formControlProps.disabled);
27
+ const isInvalid = props.isInvalid ?? Boolean(formControlProps['aria-invalid']);
28
+ const isRequired = props.isRequired ?? Boolean(formControlProps.required);
29
+ const isReadOnly = props.isReadOnly ?? Boolean(formControlProps.readOnly);
30
+ const name = props.name ?? formControlProps.name;
31
+ const ariaLabel = props['aria-label'];
32
+ const ariaLabelledBy = props['aria-labelledby'] ?? formControlProps['aria-labelledby'];
33
+ const ariaDescribedBy = formControlProps['aria-describedby'];
24
34
  const radioGroupState = useRadioGroupState({
25
- ...combinedProps,
26
- validationState: combinedProps.isInvalid ? 'invalid' : 'valid'
35
+ name,
36
+ value: props.value,
37
+ defaultValue: props.defaultValue,
38
+ onChange: props.onChange,
39
+ isDisabled,
40
+ isInvalid,
41
+ isRequired,
42
+ isReadOnly,
43
+ validationState: isInvalid ? 'invalid' : 'valid'
27
44
  });
28
45
  const {
29
46
  radioGroupProps
30
47
  } = useRadioGroup({
31
- ...combinedProps,
32
- 'aria-label': combinedProps['aria-label']
48
+ 'aria-label': ariaLabel,
49
+ 'aria-labelledby': ariaLabelledBy,
50
+ isDisabled
33
51
  }, radioGroupState);
34
- const isDisabled = combinedProps.isDisabled ?? false;
35
- const isInvalid = combinedProps.isInvalid ?? false;
36
- const isRequired = combinedProps.isRequired ?? false;
37
- const isReadOnly = combinedProps.isReadOnly ?? false;
52
+ const [focusedValue, setFocusedValue] = useState(undefined);
53
+ // Identity of getRadios depends on this so roving tabIndex recomputes after register/unregister.
54
+ const [registrationEpoch, setRegistrationEpoch] = useState(0);
55
+ const radiosRef = useRef(new Map());
56
+ useEffect(() => {
57
+ setFocusedValue(prev => prev !== undefined && prev !== radioGroupState.selectedValue ? undefined : prev);
58
+ }, [radioGroupState.selectedValue]);
59
+ const registerRadio = useCallback((value, entry) => {
60
+ radiosRef.current.set(value, entry);
61
+ setRegistrationEpoch(epoch => epoch + 1);
62
+ }, []);
63
+ const unregisterRadio = useCallback(value => {
64
+ radiosRef.current.delete(value);
65
+ setRegistrationEpoch(epoch => epoch + 1);
66
+ }, []);
67
+ const getRadios = useCallback(() => Array.from(radiosRef.current.entries()), [registrationEpoch]);
68
+ const {
69
+ handleKeyDown
70
+ } = useRadioGroupNavigation({
71
+ getRadios,
72
+ focusedValue,
73
+ setFocusedValue,
74
+ selectedValue: radioGroupState.selectedValue,
75
+ selectValue: value => radioGroupState.setSelectedValue(value)
76
+ });
77
+ const webProps = Platform.OS === 'web' ? {
78
+ onKeyDown: composeEventHandlers(props.onKeyDown, handleKeyDown)
79
+ } : {};
38
80
  const Comp = asChild ? Slot : View;
39
81
  return /*#__PURE__*/_jsx(RadioGroupContext.Provider, {
40
82
  value: {
@@ -47,17 +89,24 @@ export const RadioGroup = /*#__PURE__*/forwardRef(({
47
89
  selectValue: value => radioGroupState.setSelectedValue(value)
48
90
  },
49
91
  radioGroupState,
50
- name: combinedProps.name
92
+ name,
93
+ focusedValue,
94
+ setFocusedValue,
95
+ registerRadio,
96
+ unregisterRadio,
97
+ getRadios
51
98
  },
52
99
  children: /*#__PURE__*/_jsx(Comp, {
53
100
  ...radioGroupProps,
54
- "aria-label": combinedProps['aria-label'],
55
- "aria-labelledby": combinedProps['aria-labelledby'],
101
+ "aria-label": ariaLabel,
102
+ "aria-labelledby": ariaLabelledBy,
103
+ "aria-describedby": ariaDescribedBy,
56
104
  "aria-required": isRequired || undefined,
57
105
  "aria-readonly": isReadOnly || undefined,
58
106
  className: className,
59
107
  style: style,
60
108
  ref: ref,
109
+ ...webProps,
61
110
  ...mergeDataAttributes(props, dataAttributes({
62
111
  disabled: isDisabled,
63
112
  invalid: isInvalid