@radix-ui/react-radio-group 0.1.6-rc.4 → 0.1.6-rc.40

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.
@@ -1 +1 @@
1
- {"mappings":"A;A;A;A;AA0BA,4BAA4B,MAAM,wBAAwB,CAAC,OAAO,UAAU,MAAM,CAAC,CAAC;AACpF,oBAAqB,SAAQ,oBAAoB;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,IAAI,IAAI,CAAC;CAClB;AAED,QAAA,MAAM,2FAgEL,CAAC;AAWF,0BAA0B,MAAM,wBAAwB,CAAC,OAAO,UAAU,IAAI,CAAC,CAAC;AAChF,6BAAqC,SAAQ,kBAAkB;IAC7D;A;A;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,QAAA,MAAM,2GAeL,CAAC;AC7GF,OAAA,4FAGE,CAAC;AAIH,8BAA8B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC,CAAC;AAMF,6BAA6B,MAAM,wBAAwB,CAAC,OAAO,iBAAiB,IAAI,CAAC,CAAC;AAC1F,yBAAyB,MAAM,wBAAwB,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC;AAC9E,gCAA0B,SAAQ,iBAAiB;IACjD,IAAI,CAAC,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC;IACpE,GAAG,CAAC,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,qBAAqB,CAAC,aAAa,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACxC,aAAa,CAAC,EAAE,sBAAsB,CAAC,eAAe,CAAC,CAAC;CACzD;AAED,OAAA,MAAM,kGAoDL,CAAC;AAWF,oBAAkB,MAAM,wBAAwB,CAAC,YAAY,CAAC,CAAC;AAC/D,oCAA8B,SAAQ,IAAI,CAAC,YAAU,EAAE,SAAS,GAAG,MAAM,CAAC;IACxE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,OAAA,MAAM,6GA0DL,CAAC;AAWF,6BAA2B,MAAM,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;AACjF,yCAAmC,SAAQ,qBAAmB;CAAG;AAEjE,OAAA,MAAM,qHAML,CAAC;AAMF,OAAA,MAAM,4FAAiB,CAAC;AACxB,OAAA,MAAM,mGAAqB,CAAC;AAC5B,OAAA,MAAM,2GAA+B,CAAC","sources":["./packages/react/radio-group/src/packages/react/radio-group/src/Radio.tsx","./packages/react/radio-group/src/packages/react/radio-group/src/RadioGroup.tsx","./packages/react/radio-group/src/packages/react/radio-group/src/index.ts"],"sourcesContent":[null,null,null],"names":[],"version":3,"file":"index.d.ts.map"}
1
+ {"mappings":";;;;AA0BA,4BAA4B,MAAM,wBAAwB,CAAC,OAAO,UAAU,MAAM,CAAC,CAAC;AACpF,oBAAqB,SAAQ,oBAAoB;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,IAAI,IAAI,CAAC;CAClB;AAED,QAAA,MAAM,2FAgEL,CAAC;AAWF,0BAA0B,MAAM,wBAAwB,CAAC,OAAO,UAAU,IAAI,CAAC,CAAC;AAChF,6BAAqC,SAAQ,kBAAkB;IAC7D;;;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,QAAA,MAAM,2GAeL,CAAC;AC7GF,OAAA,4FAGE,CAAC;AAIH,8BAA8B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC,CAAC;AAMF,6BAA6B,MAAM,wBAAwB,CAAC,OAAO,iBAAiB,IAAI,CAAC,CAAC;AAC1F,yBAAyB,MAAM,wBAAwB,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC;AAC9E,gCAA0B,SAAQ,iBAAiB;IACjD,IAAI,CAAC,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC;IACpE,GAAG,CAAC,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,qBAAqB,CAAC,aAAa,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACxC,aAAa,CAAC,EAAE,sBAAsB,CAAC,eAAe,CAAC,CAAC;CACzD;AAED,OAAA,MAAM,kGAqDL,CAAC;AAWF,oBAAkB,MAAM,wBAAwB,CAAC,YAAY,CAAC,CAAC;AAC/D,oCAA8B,SAAQ,IAAI,CAAC,YAAU,EAAE,SAAS,GAAG,MAAM,CAAC;IACxE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,OAAA,MAAM,6GA0DL,CAAC;AAWF,6BAA2B,MAAM,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;AACjF,yCAAmC,SAAQ,qBAAmB;CAAG;AAEjE,OAAA,MAAM,qHAML,CAAC;AAMF,OAAA,MAAM,4FAAiB,CAAC;AACxB,OAAA,MAAM,mGAAqB,CAAC;AAC5B,OAAA,MAAM,2GAA+B,CAAC","sources":["packages/react/radio-group/src/packages/react/radio-group/src/Radio.tsx","packages/react/radio-group/src/packages/react/radio-group/src/RadioGroup.tsx","packages/react/radio-group/src/packages/react/radio-group/src/index.ts","packages/react/radio-group/src/index.ts"],"sourcesContent":[null,null,null,"export * from './RadioGroup';\n"],"names":[],"version":3,"file":"index.d.ts.map"}
package/dist/index.js CHANGED
@@ -1,2 +1,314 @@
1
- var e,r=require("@radix-ui/react-presence").Presence,t=require("@radix-ui/react-use-previous").usePrevious,o=require("@radix-ui/react-use-size").useSize,a=require("@radix-ui/react-direction").useDirection,n=require("@radix-ui/react-use-controllable-state").useControllableState,i=require("@radix-ui/react-roving-focus"),c=v({},i),u=i.createRovingFocusGroupScope,d=require("@radix-ui/react-primitive").Primitive,s=require("@radix-ui/react-context").createContextScope,l=require("@radix-ui/react-compose-refs").useComposedRefs,p=require("@radix-ui/react-label").useLabelContext,f=require("@radix-ui/primitive").composeEventHandlers,b=v({},require("react")),m=(e=require("@babel/runtime/helpers/extends"))&&e.__esModule?e.default:e;function v(e,r){return Object.keys(r).forEach((function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return r[t]}})})),e}const[R,h]=s("Radio"),[k,E]=R("Radio"),x=/*#__PURE__*/b.forwardRef(((e,r)=>{const{__scopeRadio:t,"aria-labelledby":o,name:a,checked:n=!1,required:i,disabled:c,value:u="on",onCheck:s,...v}=e,[R,h]=b.useState(null),E=l(r,(e=>h(e))),x=p(R),y=o||x,C=b.useRef(!1),_=!R||Boolean(R.closest("form"));/*#__PURE__*/return b.createElement(k,{scope:t,checked:n,disabled:c},/*#__PURE__*/b.createElement(d.button,m({type:"button",role:"radio","aria-checked":n,"aria-labelledby":y,"data-state":w(n),"data-disabled":c?"":void 0,disabled:c,value:u},v,{ref:E,onClick:f(e.onClick,(e=>{n||null==s||s(),_&&(C.current=e.isPropagationStopped(),C.current||e.stopPropagation())}))})),_&&/*#__PURE__*/b.createElement(q,{control:R,bubbles:!C.current,name:a,value:u,checked:n,required:i,disabled:c,style:{transform:"translateX(-100%)"}}))})),y=/*#__PURE__*/b.forwardRef(((e,t)=>{const{__scopeRadio:o,forceMount:a,...n}=e,i=E("RadioIndicator",o);/*#__PURE__*/return b.createElement(r,{present:a||i.checked},/*#__PURE__*/b.createElement(d.span,m({"data-state":w(i.checked),"data-disabled":i.disabled?"":void 0},n,{ref:t})))})),q=e=>{const{control:r,checked:a,bubbles:n=!0,...i}=e,c=b.useRef(null),u=t(a),d=o(r);return b.useEffect((()=>{const e=c.current,r=window.HTMLInputElement.prototype,t=Object.getOwnPropertyDescriptor(r,"checked").set;if(u!==a&&t){const r=new Event("click",{bubbles:n});t.call(e,a),e.dispatchEvent(r)}}),[u,a,n]),/*#__PURE__*/b.createElement("input",m({type:"radio","aria-hidden":!0,defaultChecked:a},i,{tabIndex:-1,ref:c,style:{...e.style,...d,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function w(e){return e?"checked":"unchecked"}const C=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],[_,g]=s("RadioGroup",[u,h]);exports.createRadioGroupScope=g;const G=u(),I=h(),[P,L]=_("RadioGroup"),S=/*#__PURE__*/b.forwardRef(((e,r)=>{const{__scopeRadioGroup:t,name:o,"aria-labelledby":i,defaultValue:u,value:s,required:l=!1,orientation:f,dir:v,loop:R=!0,onValueChange:h,...k}=e,E=p(),x=i||E,y=G(t),q=a(v),[w,C]=n({prop:s,defaultProp:u,onChange:h});/*#__PURE__*/return b.createElement(P,{scope:t,name:o,required:l,value:w,onValueChange:C},/*#__PURE__*/b.createElement(c.Root,m({asChild:!0},y,{orientation:f,dir:q,loop:R}),/*#__PURE__*/b.createElement(d.div,m({role:"radiogroup","aria-orientation":f,"aria-labelledby":x,dir:q},k,{ref:r}))))}));exports.RadioGroup=S;const D=/*#__PURE__*/b.forwardRef(((e,r)=>{const{__scopeRadioGroup:t,disabled:o,...a}=e,n=L("RadioGroupItem",t),i=G(t),u=I(t),d=b.useRef(null),s=l(r,d),p=n.value===a.value,v=b.useRef(!1);return b.useEffect((()=>{const e=e=>{C.includes(e.key)&&(v.current=!0)},r=()=>v.current=!1;return document.addEventListener("keydown",e),document.addEventListener("keyup",r),()=>{document.removeEventListener("keydown",e),document.removeEventListener("keyup",r)}}),[]),/*#__PURE__*/b.createElement(c.Item,m({asChild:!0},i,{focusable:!o,active:p}),/*#__PURE__*/b.createElement(x,m({disabled:o,required:n.required,checked:p},u,a,{name:n.name,ref:s,onCheck:()=>n.onValueChange(a.value),onKeyDown:f((e=>{"Enter"===e.key&&e.preventDefault()})),onFocus:f(a.onFocus,(()=>{var e;v.current&&(null===(e=d.current)||void 0===e||e.click())}))})))}));exports.RadioGroupItem=D;const A=/*#__PURE__*/b.forwardRef(((e,r)=>{const{__scopeRadioGroup:t,...o}=e,a=I(t);/*#__PURE__*/return b.createElement(y,m({},a,o,{ref:r}))}));exports.RadioGroupIndicator=A;const M=S;exports.Root=M;const O=D;exports.Item=O;const V=A;exports.Indicator=V;
1
+ var $9yYIj$babelruntimehelpersextends = require("@babel/runtime/helpers/extends");
2
+ var $9yYIj$react = require("react");
3
+ var $9yYIj$radixuiprimitive = require("@radix-ui/primitive");
4
+ var $9yYIj$radixuireactlabel = require("@radix-ui/react-label");
5
+ var $9yYIj$radixuireactcomposerefs = require("@radix-ui/react-compose-refs");
6
+ var $9yYIj$radixuireactcontext = require("@radix-ui/react-context");
7
+ var $9yYIj$radixuireactprimitive = require("@radix-ui/react-primitive");
8
+ var $9yYIj$radixuireactrovingfocus = require("@radix-ui/react-roving-focus");
9
+ var $9yYIj$radixuireactusecontrollablestate = require("@radix-ui/react-use-controllable-state");
10
+ var $9yYIj$radixuireactdirection = require("@radix-ui/react-direction");
11
+ var $9yYIj$radixuireactusesize = require("@radix-ui/react-use-size");
12
+ var $9yYIj$radixuireactuseprevious = require("@radix-ui/react-use-previous");
13
+ var $9yYIj$radixuireactpresence = require("@radix-ui/react-presence");
14
+
15
+ function $parcel$exportWildcard(dest, source) {
16
+ Object.keys(source).forEach(function(key) {
17
+ if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {
18
+ return;
19
+ }
20
+
21
+ Object.defineProperty(dest, key, {
22
+ enumerable: true,
23
+ get: function get() {
24
+ return source[key];
25
+ }
26
+ });
27
+ });
28
+
29
+ return dest;
30
+ }
31
+ function $parcel$interopDefault(a) {
32
+ return a && a.__esModule ? a.default : a;
33
+ }
34
+ function $parcel$export(e, n, v, s) {
35
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
36
+ }
37
+ var $240483839a8a76fd$exports = {};
38
+
39
+ $parcel$export($240483839a8a76fd$exports, "createRadioGroupScope", () => $240483839a8a76fd$export$c547093f11b76da2);
40
+ $parcel$export($240483839a8a76fd$exports, "RadioGroup", () => $240483839a8a76fd$export$a98f0dcb43a68a25);
41
+ $parcel$export($240483839a8a76fd$exports, "RadioGroupItem", () => $240483839a8a76fd$export$9f866c100ef519e4);
42
+ $parcel$export($240483839a8a76fd$exports, "RadioGroupIndicator", () => $240483839a8a76fd$export$5fb54c671a65c88);
43
+ $parcel$export($240483839a8a76fd$exports, "Root", () => $240483839a8a76fd$export$be92b6f5f03c0fe9);
44
+ $parcel$export($240483839a8a76fd$exports, "Item", () => $240483839a8a76fd$export$6d08773d2e66f8f2);
45
+ $parcel$export($240483839a8a76fd$exports, "Indicator", () => $240483839a8a76fd$export$adb584737d712b70);
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+ /* -------------------------------------------------------------------------------------------------
68
+ * Radio
69
+ * -----------------------------------------------------------------------------------------------*/ const $ce74a64c62457efb$var$RADIO_NAME = 'Radio';
70
+ const [$ce74a64c62457efb$var$createRadioContext, $ce74a64c62457efb$export$67d2296460f1b002] = $9yYIj$radixuireactcontext.createContextScope($ce74a64c62457efb$var$RADIO_NAME);
71
+ const [$ce74a64c62457efb$var$RadioProvider, $ce74a64c62457efb$var$useRadioContext] = $ce74a64c62457efb$var$createRadioContext($ce74a64c62457efb$var$RADIO_NAME);
72
+ const $ce74a64c62457efb$export$d7b12c4107be0d61 = /*#__PURE__*/ $9yYIj$react.forwardRef((props, forwardedRef)=>{
73
+ const { __scopeRadio: __scopeRadio , 'aria-labelledby': ariaLabelledby , name: name , checked: checked = false , required: required , disabled: disabled , value: value = 'on' , onCheck: onCheck , ...radioProps } = props;
74
+ const [button, setButton] = $9yYIj$react.useState(null);
75
+ const composedRefs = $9yYIj$radixuireactcomposerefs.useComposedRefs(forwardedRef, (node)=>setButton(node)
76
+ );
77
+ const labelId = $9yYIj$radixuireactlabel.useLabelContext(button);
78
+ const labelledBy = ariaLabelledby || labelId;
79
+ const hasConsumerStoppedPropagationRef = $9yYIj$react.useRef(false); // We set this to true by default so that events bubble to forms without JS (SSR)
80
+ const isFormControl = button ? Boolean(button.closest('form')) : true;
81
+ return /*#__PURE__*/ $9yYIj$react.createElement($ce74a64c62457efb$var$RadioProvider, {
82
+ scope: __scopeRadio,
83
+ checked: checked,
84
+ disabled: disabled
85
+ }, /*#__PURE__*/ $9yYIj$react.createElement($9yYIj$radixuireactprimitive.Primitive.button, ($parcel$interopDefault($9yYIj$babelruntimehelpersextends))({
86
+ type: "button",
87
+ role: "radio",
88
+ "aria-checked": checked,
89
+ "aria-labelledby": labelledBy,
90
+ "data-state": $ce74a64c62457efb$var$getState(checked),
91
+ "data-disabled": disabled ? '' : undefined,
92
+ disabled: disabled,
93
+ value: value
94
+ }, radioProps, {
95
+ ref: composedRefs,
96
+ onClick: $9yYIj$radixuiprimitive.composeEventHandlers(props.onClick, (event)=>{
97
+ // radios cannot be unchecked so we only communicate a checked state
98
+ if (!checked) onCheck === null || onCheck === void 0 || onCheck();
99
+ if (isFormControl) {
100
+ hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(); // if radio is in a form, stop propagation from the button so that we only propagate
101
+ // one click event (from the input). We propagate changes from an input so that native
102
+ // form validation works and form events reflect radio updates.
103
+ if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();
104
+ }
105
+ })
106
+ })), isFormControl && /*#__PURE__*/ $9yYIj$react.createElement($ce74a64c62457efb$var$BubbleInput, {
107
+ control: button,
108
+ bubbles: !hasConsumerStoppedPropagationRef.current,
109
+ name: name,
110
+ value: value,
111
+ checked: checked,
112
+ required: required,
113
+ disabled: disabled // We transform because the input is absolutely positioned but we have
114
+ ,
115
+ style: {
116
+ transform: 'translateX(-100%)'
117
+ }
118
+ }));
119
+ });
120
+ /*#__PURE__*/ Object.assign($ce74a64c62457efb$export$d7b12c4107be0d61, {
121
+ displayName: $ce74a64c62457efb$var$RADIO_NAME
122
+ });
123
+ /* -------------------------------------------------------------------------------------------------
124
+ * RadioIndicator
125
+ * -----------------------------------------------------------------------------------------------*/ const $ce74a64c62457efb$var$INDICATOR_NAME = 'RadioIndicator';
126
+ const $ce74a64c62457efb$export$d35a9ffa9a04f9e7 = /*#__PURE__*/ $9yYIj$react.forwardRef((props, forwardedRef)=>{
127
+ const { __scopeRadio: __scopeRadio , forceMount: forceMount , ...indicatorProps } = props;
128
+ const context = $ce74a64c62457efb$var$useRadioContext($ce74a64c62457efb$var$INDICATOR_NAME, __scopeRadio);
129
+ return /*#__PURE__*/ $9yYIj$react.createElement($9yYIj$radixuireactpresence.Presence, {
130
+ present: forceMount || context.checked
131
+ }, /*#__PURE__*/ $9yYIj$react.createElement($9yYIj$radixuireactprimitive.Primitive.span, ($parcel$interopDefault($9yYIj$babelruntimehelpersextends))({
132
+ "data-state": $ce74a64c62457efb$var$getState(context.checked),
133
+ "data-disabled": context.disabled ? '' : undefined
134
+ }, indicatorProps, {
135
+ ref: forwardedRef
136
+ })));
137
+ });
138
+ /*#__PURE__*/ Object.assign($ce74a64c62457efb$export$d35a9ffa9a04f9e7, {
139
+ displayName: $ce74a64c62457efb$var$INDICATOR_NAME
140
+ });
141
+ /* ---------------------------------------------------------------------------------------------- */ const $ce74a64c62457efb$var$BubbleInput = (props)=>{
142
+ const { control: control , checked: checked , bubbles: bubbles = true , ...inputProps } = props;
143
+ const ref = $9yYIj$react.useRef(null);
144
+ const prevChecked = $9yYIj$radixuireactuseprevious.usePrevious(checked);
145
+ const controlSize = $9yYIj$radixuireactusesize.useSize(control); // Bubble checked change to parents (e.g form change event)
146
+ $9yYIj$react.useEffect(()=>{
147
+ const input = ref.current;
148
+ const inputProto = window.HTMLInputElement.prototype;
149
+ const descriptor = Object.getOwnPropertyDescriptor(inputProto, 'checked');
150
+ const setChecked = descriptor.set;
151
+ if (prevChecked !== checked && setChecked) {
152
+ const event = new Event('click', {
153
+ bubbles: bubbles
154
+ });
155
+ setChecked.call(input, checked);
156
+ input.dispatchEvent(event);
157
+ }
158
+ }, [
159
+ prevChecked,
160
+ checked,
161
+ bubbles
162
+ ]);
163
+ return /*#__PURE__*/ $9yYIj$react.createElement("input", ($parcel$interopDefault($9yYIj$babelruntimehelpersextends))({
164
+ type: "radio",
165
+ "aria-hidden": true,
166
+ defaultChecked: checked
167
+ }, inputProps, {
168
+ tabIndex: -1,
169
+ ref: ref,
170
+ style: {
171
+ ...props.style,
172
+ ...controlSize,
173
+ position: 'absolute',
174
+ pointerEvents: 'none',
175
+ opacity: 0,
176
+ margin: 0
177
+ }
178
+ }));
179
+ };
180
+ function $ce74a64c62457efb$var$getState(checked) {
181
+ return checked ? 'checked' : 'unchecked';
182
+ }
183
+
184
+
185
+ const $240483839a8a76fd$var$ARROW_KEYS = [
186
+ 'ArrowUp',
187
+ 'ArrowDown',
188
+ 'ArrowLeft',
189
+ 'ArrowRight'
190
+ ];
191
+ /* -------------------------------------------------------------------------------------------------
192
+ * RadioGroup
193
+ * -----------------------------------------------------------------------------------------------*/ const $240483839a8a76fd$var$RADIO_GROUP_NAME = 'RadioGroup';
194
+ const [$240483839a8a76fd$var$createRadioGroupContet, $240483839a8a76fd$export$c547093f11b76da2] = $9yYIj$radixuireactcontext.createContextScope($240483839a8a76fd$var$RADIO_GROUP_NAME, [
195
+ $9yYIj$radixuireactrovingfocus.createRovingFocusGroupScope,
196
+ $ce74a64c62457efb$export$67d2296460f1b002
197
+ ]);
198
+ const $240483839a8a76fd$var$useRovingFocusGroupScope = $9yYIj$radixuireactrovingfocus.createRovingFocusGroupScope();
199
+ const $240483839a8a76fd$var$useRadioScope = $ce74a64c62457efb$export$67d2296460f1b002();
200
+ const [$240483839a8a76fd$var$RadioGroupProvider, $240483839a8a76fd$var$useRadioGroupContext] = $240483839a8a76fd$var$createRadioGroupContet($240483839a8a76fd$var$RADIO_GROUP_NAME);
201
+ const $240483839a8a76fd$export$a98f0dcb43a68a25 = /*#__PURE__*/ $9yYIj$react.forwardRef((props, forwardedRef)=>{
202
+ const { __scopeRadioGroup: __scopeRadioGroup , name: name , 'aria-labelledby': ariaLabelledby , defaultValue: defaultValue , value: valueProp , required: required = false , orientation: orientation , dir: dir , loop: loop = true , onValueChange: onValueChange , ...groupProps } = props;
203
+ const labelId = $9yYIj$radixuireactlabel.useLabelContext();
204
+ const labelledBy = ariaLabelledby || labelId;
205
+ const rovingFocusGroupScope = $240483839a8a76fd$var$useRovingFocusGroupScope(__scopeRadioGroup);
206
+ const direction = $9yYIj$radixuireactdirection.useDirection(dir);
207
+ const [value, setValue] = $9yYIj$radixuireactusecontrollablestate.useControllableState({
208
+ prop: valueProp,
209
+ defaultProp: defaultValue,
210
+ onChange: onValueChange
211
+ });
212
+ return /*#__PURE__*/ $9yYIj$react.createElement($240483839a8a76fd$var$RadioGroupProvider, {
213
+ scope: __scopeRadioGroup,
214
+ name: name,
215
+ required: required,
216
+ value: value,
217
+ onValueChange: setValue
218
+ }, /*#__PURE__*/ $9yYIj$react.createElement($9yYIj$radixuireactrovingfocus.Root, ($parcel$interopDefault($9yYIj$babelruntimehelpersextends))({
219
+ asChild: true
220
+ }, rovingFocusGroupScope, {
221
+ orientation: orientation,
222
+ dir: direction,
223
+ loop: loop
224
+ }), /*#__PURE__*/ $9yYIj$react.createElement($9yYIj$radixuireactprimitive.Primitive.div, ($parcel$interopDefault($9yYIj$babelruntimehelpersextends))({
225
+ role: "radiogroup",
226
+ "aria-required": required,
227
+ "aria-orientation": orientation,
228
+ "aria-labelledby": labelledBy,
229
+ dir: direction
230
+ }, groupProps, {
231
+ ref: forwardedRef
232
+ }))));
233
+ });
234
+ /*#__PURE__*/ Object.assign($240483839a8a76fd$export$a98f0dcb43a68a25, {
235
+ displayName: $240483839a8a76fd$var$RADIO_GROUP_NAME
236
+ });
237
+ /* -------------------------------------------------------------------------------------------------
238
+ * RadioGroupItem
239
+ * -----------------------------------------------------------------------------------------------*/ const $240483839a8a76fd$var$ITEM_NAME = 'RadioGroupItem';
240
+ const $240483839a8a76fd$export$9f866c100ef519e4 = /*#__PURE__*/ $9yYIj$react.forwardRef((props, forwardedRef)=>{
241
+ const { __scopeRadioGroup: __scopeRadioGroup , disabled: disabled , ...itemProps } = props;
242
+ const context = $240483839a8a76fd$var$useRadioGroupContext($240483839a8a76fd$var$ITEM_NAME, __scopeRadioGroup);
243
+ const rovingFocusGroupScope = $240483839a8a76fd$var$useRovingFocusGroupScope(__scopeRadioGroup);
244
+ const radioScope = $240483839a8a76fd$var$useRadioScope(__scopeRadioGroup);
245
+ const ref = $9yYIj$react.useRef(null);
246
+ const composedRefs = $9yYIj$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref);
247
+ const checked = context.value === itemProps.value;
248
+ const isArrowKeyPressedRef = $9yYIj$react.useRef(false);
249
+ $9yYIj$react.useEffect(()=>{
250
+ const handleKeyDown = (event)=>{
251
+ if ($240483839a8a76fd$var$ARROW_KEYS.includes(event.key)) isArrowKeyPressedRef.current = true;
252
+ };
253
+ const handleKeyUp = ()=>isArrowKeyPressedRef.current = false
254
+ ;
255
+ document.addEventListener('keydown', handleKeyDown);
256
+ document.addEventListener('keyup', handleKeyUp);
257
+ return ()=>{
258
+ document.removeEventListener('keydown', handleKeyDown);
259
+ document.removeEventListener('keyup', handleKeyUp);
260
+ };
261
+ }, []);
262
+ return /*#__PURE__*/ $9yYIj$react.createElement($9yYIj$radixuireactrovingfocus.Item, ($parcel$interopDefault($9yYIj$babelruntimehelpersextends))({
263
+ asChild: true
264
+ }, rovingFocusGroupScope, {
265
+ focusable: !disabled,
266
+ active: checked
267
+ }), /*#__PURE__*/ $9yYIj$react.createElement($ce74a64c62457efb$export$d7b12c4107be0d61, ($parcel$interopDefault($9yYIj$babelruntimehelpersextends))({
268
+ disabled: disabled,
269
+ required: context.required,
270
+ checked: checked
271
+ }, radioScope, itemProps, {
272
+ name: context.name,
273
+ ref: composedRefs,
274
+ onCheck: ()=>context.onValueChange(itemProps.value)
275
+ ,
276
+ onKeyDown: $9yYIj$radixuiprimitive.composeEventHandlers((event)=>{
277
+ // According to WAI ARIA, radio groups don't activate items on enter keypress
278
+ if (event.key === 'Enter') event.preventDefault();
279
+ }),
280
+ onFocus: $9yYIj$radixuiprimitive.composeEventHandlers(itemProps.onFocus, ()=>{
281
+ var _ref$current;
282
+ /**
283
+ * Our `RovingFocusGroup` will focus the radio when navigating with arrow keys
284
+ * and we need to "check" it in that case. We click it to "check" it (instead
285
+ * of updating `context.value`) so that the radio change event fires.
286
+ */ if (isArrowKeyPressedRef.current) (_ref$current = ref.current) === null || _ref$current === void 0 || _ref$current.click();
287
+ })
288
+ })));
289
+ });
290
+ /*#__PURE__*/ Object.assign($240483839a8a76fd$export$9f866c100ef519e4, {
291
+ displayName: $240483839a8a76fd$var$ITEM_NAME
292
+ });
293
+ /* -------------------------------------------------------------------------------------------------
294
+ * RadioGroupIndicator
295
+ * -----------------------------------------------------------------------------------------------*/ const $240483839a8a76fd$var$INDICATOR_NAME = 'RadioGroupIndicator';
296
+ const $240483839a8a76fd$export$5fb54c671a65c88 = /*#__PURE__*/ $9yYIj$react.forwardRef((props, forwardedRef)=>{
297
+ const { __scopeRadioGroup: __scopeRadioGroup , ...indicatorProps } = props;
298
+ const radioScope = $240483839a8a76fd$var$useRadioScope(__scopeRadioGroup);
299
+ return /*#__PURE__*/ $9yYIj$react.createElement($ce74a64c62457efb$export$d35a9ffa9a04f9e7, ($parcel$interopDefault($9yYIj$babelruntimehelpersextends))({}, radioScope, indicatorProps, {
300
+ ref: forwardedRef
301
+ }));
302
+ });
303
+ /*#__PURE__*/ Object.assign($240483839a8a76fd$export$5fb54c671a65c88, {
304
+ displayName: $240483839a8a76fd$var$INDICATOR_NAME
305
+ });
306
+ /* ---------------------------------------------------------------------------------------------- */ const $240483839a8a76fd$export$be92b6f5f03c0fe9 = $240483839a8a76fd$export$a98f0dcb43a68a25;
307
+ const $240483839a8a76fd$export$6d08773d2e66f8f2 = $240483839a8a76fd$export$9f866c100ef519e4;
308
+ const $240483839a8a76fd$export$adb584737d712b70 = $240483839a8a76fd$export$5fb54c671a65c88;
309
+
310
+
311
+ $parcel$exportWildcard(module.exports, $240483839a8a76fd$exports);
312
+
313
+
2
314
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"mappings":"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","sources":["./node_modules/@parcel/scope-hoisting/lib/helpers.js","./packages/react/radio-group/src/Radio.tsx","./packages/react/radio-group/src/RadioGroup.tsx"],"sourcesContent":["function $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$defineInteropFlag(a) {\n Object.defineProperty(a, '__esModule', {value: true});\n}\n\nfunction $parcel$reexport(e, n, v) {\n Object.defineProperty(e, n, {get: v, enumerable: true});\n}\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule') {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n },\n });\n });\n\n return dest;\n}\n\nfunction $parcel$missingModule(name) {\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n}\n\nvar $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useSize } from '@radix-ui/react-use-size';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useLabelContext } from '@radix-ui/react-label';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Radio\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_NAME = 'Radio';\n\ntype ScopedProps<P> = P & { __scopeRadio?: Scope };\nconst [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\n\ntype RadioContextValue = { checked: boolean; disabled?: boolean };\nconst [RadioProvider, useRadioContext] = createRadioContext<RadioContextValue>(RADIO_NAME);\n\ntype RadioElement = React.ElementRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface RadioProps extends PrimitiveButtonProps {\n checked?: boolean;\n required?: boolean;\n onCheck?(): void;\n}\n\nconst Radio = React.forwardRef<RadioElement, RadioProps>(\n (props: ScopedProps<RadioProps>, forwardedRef) => {\n const {\n __scopeRadio,\n 'aria-labelledby': ariaLabelledby,\n name,\n checked = false,\n required,\n disabled,\n value = 'on',\n onCheck,\n ...radioProps\n } = props;\n const [button, setButton] = React.useState<HTMLButtonElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const labelId = useLabelContext(button);\n const labelledBy = ariaLabelledby || labelId;\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n // We set this to true by default so that events bubble to forms without JS (SSR)\n const isFormControl = button ? Boolean(button.closest('form')) : true;\n\n return (\n <RadioProvider scope={__scopeRadio} checked={checked} disabled={disabled}>\n <Primitive.button\n type=\"button\"\n role=\"radio\"\n aria-checked={checked}\n aria-labelledby={labelledBy}\n data-state={getState(checked)}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n value={value}\n {...radioProps}\n ref={composedRefs}\n onClick={composeEventHandlers(props.onClick, (event) => {\n // radios cannot be unchecked so we only communicate a checked state\n if (!checked) onCheck?.();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n // if radio is in a form, stop propagation from the button so that we only propagate\n // one click event (from the input). We propagate changes from an input so that native\n // form validation works and form events reflect radio updates.\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })}\n />\n {isFormControl && (\n <BubbleInput\n control={button}\n bubbles={!hasConsumerStoppedPropagationRef.current}\n name={name}\n value={value}\n checked={checked}\n required={required}\n disabled={disabled}\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n style={{ transform: 'translateX(-100%)' }}\n />\n )}\n </RadioProvider>\n );\n }\n);\n\nRadio.displayName = RADIO_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'RadioIndicator';\n\ntype RadioIndicatorElement = React.ElementRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = Radix.ComponentPropsWithoutRef<typeof Primitive.span>;\nexport interface RadioIndicatorProps extends PrimitiveSpanProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst RadioIndicator = React.forwardRef<RadioIndicatorElement, RadioIndicatorProps>(\n (props: ScopedProps<RadioIndicatorProps>, forwardedRef) => {\n const { __scopeRadio, forceMount, ...indicatorProps } = props;\n const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n return (\n <Presence present={forceMount || context.checked}>\n <Primitive.span\n data-state={getState(context.checked)}\n data-disabled={context.disabled ? '' : undefined}\n {...indicatorProps}\n ref={forwardedRef}\n />\n </Presence>\n );\n }\n);\n\nRadioIndicator.displayName = INDICATOR_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype InputProps = Radix.ComponentPropsWithoutRef<'input'>;\ninterface BubbleInputProps extends Omit<InputProps, 'checked'> {\n checked: boolean;\n control: HTMLElement | null;\n bubbles: boolean;\n}\n\nconst BubbleInput = (props: BubbleInputProps) => {\n const { control, checked, bubbles = true, ...inputProps } = props;\n const ref = React.useRef<HTMLInputElement>(null);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n\n // Bubble checked change to parents (e.g form change event)\n React.useEffect(() => {\n const input = ref.current!;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, 'checked') as PropertyDescriptor;\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event('click', { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n\n return (\n <input\n type=\"radio\"\n aria-hidden\n defaultChecked={checked}\n {...inputProps}\n tabIndex={-1}\n ref={ref}\n style={{\n ...props.style,\n ...controlSize,\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n }}\n />\n );\n};\n\nfunction getState(checked: boolean) {\n return checked ? 'checked' : 'unchecked';\n}\n\nexport {\n createRadioScope,\n //\n Radio,\n RadioIndicator,\n};\nexport type { RadioProps };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useLabelContext } from '@radix-ui/react-label';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { Radio, RadioIndicator, createRadioScope } from './Radio';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\nconst ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroup\n * -----------------------------------------------------------------------------------------------*/\nconst RADIO_GROUP_NAME = 'RadioGroup';\n\ntype ScopedProps<P> = P & { __scopeRadioGroup?: Scope };\nconst [createRadioGroupContet, createRadioGroupScope] = createContextScope(RADIO_GROUP_NAME, [\n createRovingFocusGroupScope,\n createRadioScope,\n]);\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\nconst useRadioScope = createRadioScope();\n\ntype RadioGroupContextValue = {\n name?: string;\n required: boolean;\n value?: string;\n onValueChange(value: string): void;\n};\n\nconst [RadioGroupProvider, useRadioGroupContext] =\n createRadioGroupContet<RadioGroupContextValue>(RADIO_GROUP_NAME);\n\ntype RadioGroupElement = React.ElementRef<typeof Primitive.div>;\ntype RovingFocusGroupProps = Radix.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface RadioGroupProps extends PrimitiveDivProps {\n name?: RadioGroupContextValue['name'];\n required?: Radix.ComponentPropsWithoutRef<typeof Radio>['required'];\n dir?: RovingFocusGroupProps['dir'];\n orientation?: RovingFocusGroupProps['orientation'];\n loop?: RovingFocusGroupProps['loop'];\n defaultValue?: string;\n value?: RadioGroupContextValue['value'];\n onValueChange?: RadioGroupContextValue['onValueChange'];\n}\n\nconst RadioGroup = React.forwardRef<RadioGroupElement, RadioGroupProps>(\n (props: ScopedProps<RadioGroupProps>, forwardedRef) => {\n const {\n __scopeRadioGroup,\n name,\n 'aria-labelledby': ariaLabelledby,\n defaultValue,\n value: valueProp,\n required = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const labelId = useLabelContext();\n const labelledBy = ariaLabelledby || labelId;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n\n return (\n <RadioGroupProvider\n scope={__scopeRadioGroup}\n name={name}\n required={required}\n value={value}\n onValueChange={setValue}\n >\n <RovingFocusGroup.Root\n asChild\n {...rovingFocusGroupScope}\n orientation={orientation}\n dir={direction}\n loop={loop}\n >\n <Primitive.div\n role=\"radiogroup\"\n aria-orientation={orientation}\n aria-labelledby={labelledBy}\n dir={direction}\n {...groupProps}\n ref={forwardedRef}\n />\n </RovingFocusGroup.Root>\n </RadioGroupProvider>\n );\n }\n);\n\nRadioGroup.displayName = RADIO_GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroupItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'RadioGroupItem';\n\ntype RadioGroupItemElement = React.ElementRef<typeof Radio>;\ntype RadioProps = Radix.ComponentPropsWithoutRef<typeof Radio>;\ninterface RadioGroupItemProps extends Omit<RadioProps, 'onCheck' | 'name'> {\n value: string;\n}\n\nconst RadioGroupItem = React.forwardRef<RadioGroupItemElement, RadioGroupItemProps>(\n (props: ScopedProps<RadioGroupItemProps>, forwardedRef) => {\n const { __scopeRadioGroup, disabled, ...itemProps } = props;\n const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = useRadioScope(__scopeRadioGroup);\n const ref = React.useRef<React.ElementRef<typeof Radio>>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = React.useRef(false);\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n };\n const handleKeyUp = () => (isArrowKeyPressedRef.current = false);\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('keyup', handleKeyUp);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, []);\n\n return (\n <RovingFocusGroup.Item\n asChild\n {...rovingFocusGroupScope}\n focusable={!disabled}\n active={checked}\n >\n <Radio\n disabled={disabled}\n required={context.required}\n checked={checked}\n {...radioScope}\n {...itemProps}\n name={context.name}\n ref={composedRefs}\n onCheck={() => context.onValueChange(itemProps.value)}\n onKeyDown={composeEventHandlers((event) => {\n // According to WAI ARIA, radio groups don't activate items on enter keypress\n if (event.key === 'Enter') event.preventDefault();\n })}\n onFocus={composeEventHandlers(itemProps.onFocus, () => {\n /**\n * Our `RovingFocusGroup` will focus the radio when navigating with arrow keys\n * and we need to \"check\" it in that case. We click it to \"check\" it (instead\n * of updating `context.value`) so that the radio change event fires.\n */\n if (isArrowKeyPressedRef.current) ref.current?.click();\n })}\n />\n </RovingFocusGroup.Item>\n );\n }\n);\n\nRadioGroupItem.displayName = ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroupIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'RadioGroupIndicator';\n\ntype RadioGroupIndicatorElement = React.ElementRef<typeof RadioIndicator>;\ntype RadioIndicatorProps = Radix.ComponentPropsWithoutRef<typeof RadioIndicator>;\ninterface RadioGroupIndicatorProps extends RadioIndicatorProps {}\n\nconst RadioGroupIndicator = React.forwardRef<RadioGroupIndicatorElement, RadioGroupIndicatorProps>(\n (props: ScopedProps<RadioGroupIndicatorProps>, forwardedRef) => {\n const { __scopeRadioGroup, ...indicatorProps } = props;\n const radioScope = useRadioScope(__scopeRadioGroup);\n return <RadioIndicator {...radioScope} {...indicatorProps} ref={forwardedRef} />;\n }\n);\n\nRadioGroupIndicator.displayName = INDICATOR_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nconst Root = RadioGroup;\nconst Item = RadioGroupItem;\nconst Indicator = RadioGroupIndicator;\n\nexport {\n createRadioGroupScope,\n //\n RadioGroup,\n RadioGroupItem,\n RadioGroupIndicator,\n //\n Root,\n Item,\n Indicator,\n};\nexport type { RadioGroupProps, RadioGroupItemProps, RadioGroupIndicatorProps };\n"],"names":["a","__esModule","default","$parcel$exportWildcard","dest","source","Object","keys","forEach","key","defineProperty","enumerable","get","createRadioContext","createRadioScope","createContextScope","RadioProvider","useRadioContext","Radio","React","forwardRef","props","forwardedRef","__scopeRadio","ariaLabelledby","name","checked","required","disabled","value","onCheck","radioProps","button","setButton","useState","composedRefs","useComposedRefs","node","labelId","useLabelContext","labelledBy","hasConsumerStoppedPropagationRef","useRef","isFormControl","Boolean","closest","_react","createElement","$c40e389c8bd5637683139221ff5860e$var$RadioProvider","scope","Primitive","_babelRuntimeHelpersExtends","type","role","getState","undefined","ref","onClick","composeEventHandlers","event","current","isPropagationStopped","stopPropagation","$c40e389c8bd5637683139221ff5860e$var$BubbleInput","control","bubbles","style","transform","RadioIndicator","forceMount","indicatorProps","context","Presence","present","span","BubbleInput","inputProps","prevChecked","usePrevious","controlSize","useSize","useEffect","input","inputProto","window","HTMLInputElement","prototype","setChecked","getOwnPropertyDescriptor","set","Event","call","dispatchEvent","defaultChecked","tabIndex","position","pointerEvents","opacity","margin","ARROW_KEYS","createRadioGroupContet","createRadioGroupScope","createRovingFocusGroupScope","$c40e389c8bd5637683139221ff5860e$export$createRadioScope","useRovingFocusGroupScope","useRadioScope","RadioGroupProvider","useRadioGroupContext","RadioGroup","__scopeRadioGroup","defaultValue","valueProp","orientation","dir","loop","onValueChange","groupProps","rovingFocusGroupScope","direction","useDirection","setValue","useControllableState","prop","defaultProp","onChange","$f0591e76470a81aa49d2bd8c37d2b$var$RadioGroupProvider","_radixUiReactRovingFocus","Root","asChild","div","RadioGroupItem","itemProps","radioScope","isArrowKeyPressedRef","handleKeyDown","includes","handleKeyUp","document","addEventListener","removeEventListener","Item","focusable","active","$c40e389c8bd5637683139221ff5860e$export$Radio","onKeyDown","preventDefault","onFocus","_ref$current","click","RadioGroupIndicator","$c40e389c8bd5637683139221ff5860e$export$RadioIndicator","Indicator"],"version":3,"file":"index.js.map"}
1
+ {"mappings":"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","sources":["packages/react/radio-group/src/index.ts","packages/react/radio-group/src/RadioGroup.tsx","packages/react/radio-group/src/Radio.tsx"],"sourcesContent":["export * from './RadioGroup';\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useLabelContext } from '@radix-ui/react-label';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { Radio, RadioIndicator, createRadioScope } from './Radio';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\nconst ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroup\n * -----------------------------------------------------------------------------------------------*/\nconst RADIO_GROUP_NAME = 'RadioGroup';\n\ntype ScopedProps<P> = P & { __scopeRadioGroup?: Scope };\nconst [createRadioGroupContet, createRadioGroupScope] = createContextScope(RADIO_GROUP_NAME, [\n createRovingFocusGroupScope,\n createRadioScope,\n]);\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\nconst useRadioScope = createRadioScope();\n\ntype RadioGroupContextValue = {\n name?: string;\n required: boolean;\n value?: string;\n onValueChange(value: string): void;\n};\n\nconst [RadioGroupProvider, useRadioGroupContext] =\n createRadioGroupContet<RadioGroupContextValue>(RADIO_GROUP_NAME);\n\ntype RadioGroupElement = React.ElementRef<typeof Primitive.div>;\ntype RovingFocusGroupProps = Radix.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface RadioGroupProps extends PrimitiveDivProps {\n name?: RadioGroupContextValue['name'];\n required?: Radix.ComponentPropsWithoutRef<typeof Radio>['required'];\n dir?: RovingFocusGroupProps['dir'];\n orientation?: RovingFocusGroupProps['orientation'];\n loop?: RovingFocusGroupProps['loop'];\n defaultValue?: string;\n value?: RadioGroupContextValue['value'];\n onValueChange?: RadioGroupContextValue['onValueChange'];\n}\n\nconst RadioGroup = React.forwardRef<RadioGroupElement, RadioGroupProps>(\n (props: ScopedProps<RadioGroupProps>, forwardedRef) => {\n const {\n __scopeRadioGroup,\n name,\n 'aria-labelledby': ariaLabelledby,\n defaultValue,\n value: valueProp,\n required = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const labelId = useLabelContext();\n const labelledBy = ariaLabelledby || labelId;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n\n return (\n <RadioGroupProvider\n scope={__scopeRadioGroup}\n name={name}\n required={required}\n value={value}\n onValueChange={setValue}\n >\n <RovingFocusGroup.Root\n asChild\n {...rovingFocusGroupScope}\n orientation={orientation}\n dir={direction}\n loop={loop}\n >\n <Primitive.div\n role=\"radiogroup\"\n aria-required={required}\n aria-orientation={orientation}\n aria-labelledby={labelledBy}\n dir={direction}\n {...groupProps}\n ref={forwardedRef}\n />\n </RovingFocusGroup.Root>\n </RadioGroupProvider>\n );\n }\n);\n\nRadioGroup.displayName = RADIO_GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroupItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'RadioGroupItem';\n\ntype RadioGroupItemElement = React.ElementRef<typeof Radio>;\ntype RadioProps = Radix.ComponentPropsWithoutRef<typeof Radio>;\ninterface RadioGroupItemProps extends Omit<RadioProps, 'onCheck' | 'name'> {\n value: string;\n}\n\nconst RadioGroupItem = React.forwardRef<RadioGroupItemElement, RadioGroupItemProps>(\n (props: ScopedProps<RadioGroupItemProps>, forwardedRef) => {\n const { __scopeRadioGroup, disabled, ...itemProps } = props;\n const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = useRadioScope(__scopeRadioGroup);\n const ref = React.useRef<React.ElementRef<typeof Radio>>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = React.useRef(false);\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n };\n const handleKeyUp = () => (isArrowKeyPressedRef.current = false);\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('keyup', handleKeyUp);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, []);\n\n return (\n <RovingFocusGroup.Item\n asChild\n {...rovingFocusGroupScope}\n focusable={!disabled}\n active={checked}\n >\n <Radio\n disabled={disabled}\n required={context.required}\n checked={checked}\n {...radioScope}\n {...itemProps}\n name={context.name}\n ref={composedRefs}\n onCheck={() => context.onValueChange(itemProps.value)}\n onKeyDown={composeEventHandlers((event) => {\n // According to WAI ARIA, radio groups don't activate items on enter keypress\n if (event.key === 'Enter') event.preventDefault();\n })}\n onFocus={composeEventHandlers(itemProps.onFocus, () => {\n /**\n * Our `RovingFocusGroup` will focus the radio when navigating with arrow keys\n * and we need to \"check\" it in that case. We click it to \"check\" it (instead\n * of updating `context.value`) so that the radio change event fires.\n */\n if (isArrowKeyPressedRef.current) ref.current?.click();\n })}\n />\n </RovingFocusGroup.Item>\n );\n }\n);\n\nRadioGroupItem.displayName = ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroupIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'RadioGroupIndicator';\n\ntype RadioGroupIndicatorElement = React.ElementRef<typeof RadioIndicator>;\ntype RadioIndicatorProps = Radix.ComponentPropsWithoutRef<typeof RadioIndicator>;\ninterface RadioGroupIndicatorProps extends RadioIndicatorProps {}\n\nconst RadioGroupIndicator = React.forwardRef<RadioGroupIndicatorElement, RadioGroupIndicatorProps>(\n (props: ScopedProps<RadioGroupIndicatorProps>, forwardedRef) => {\n const { __scopeRadioGroup, ...indicatorProps } = props;\n const radioScope = useRadioScope(__scopeRadioGroup);\n return <RadioIndicator {...radioScope} {...indicatorProps} ref={forwardedRef} />;\n }\n);\n\nRadioGroupIndicator.displayName = INDICATOR_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nconst Root = RadioGroup;\nconst Item = RadioGroupItem;\nconst Indicator = RadioGroupIndicator;\n\nexport {\n createRadioGroupScope,\n //\n RadioGroup,\n RadioGroupItem,\n RadioGroupIndicator,\n //\n Root,\n Item,\n Indicator,\n};\nexport type { RadioGroupProps, RadioGroupItemProps, RadioGroupIndicatorProps };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useSize } from '@radix-ui/react-use-size';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useLabelContext } from '@radix-ui/react-label';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Radio\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_NAME = 'Radio';\n\ntype ScopedProps<P> = P & { __scopeRadio?: Scope };\nconst [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\n\ntype RadioContextValue = { checked: boolean; disabled?: boolean };\nconst [RadioProvider, useRadioContext] = createRadioContext<RadioContextValue>(RADIO_NAME);\n\ntype RadioElement = React.ElementRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface RadioProps extends PrimitiveButtonProps {\n checked?: boolean;\n required?: boolean;\n onCheck?(): void;\n}\n\nconst Radio = React.forwardRef<RadioElement, RadioProps>(\n (props: ScopedProps<RadioProps>, forwardedRef) => {\n const {\n __scopeRadio,\n 'aria-labelledby': ariaLabelledby,\n name,\n checked = false,\n required,\n disabled,\n value = 'on',\n onCheck,\n ...radioProps\n } = props;\n const [button, setButton] = React.useState<HTMLButtonElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const labelId = useLabelContext(button);\n const labelledBy = ariaLabelledby || labelId;\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n // We set this to true by default so that events bubble to forms without JS (SSR)\n const isFormControl = button ? Boolean(button.closest('form')) : true;\n\n return (\n <RadioProvider scope={__scopeRadio} checked={checked} disabled={disabled}>\n <Primitive.button\n type=\"button\"\n role=\"radio\"\n aria-checked={checked}\n aria-labelledby={labelledBy}\n data-state={getState(checked)}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n value={value}\n {...radioProps}\n ref={composedRefs}\n onClick={composeEventHandlers(props.onClick, (event) => {\n // radios cannot be unchecked so we only communicate a checked state\n if (!checked) onCheck?.();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n // if radio is in a form, stop propagation from the button so that we only propagate\n // one click event (from the input). We propagate changes from an input so that native\n // form validation works and form events reflect radio updates.\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })}\n />\n {isFormControl && (\n <BubbleInput\n control={button}\n bubbles={!hasConsumerStoppedPropagationRef.current}\n name={name}\n value={value}\n checked={checked}\n required={required}\n disabled={disabled}\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n style={{ transform: 'translateX(-100%)' }}\n />\n )}\n </RadioProvider>\n );\n }\n);\n\nRadio.displayName = RADIO_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'RadioIndicator';\n\ntype RadioIndicatorElement = React.ElementRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = Radix.ComponentPropsWithoutRef<typeof Primitive.span>;\nexport interface RadioIndicatorProps extends PrimitiveSpanProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst RadioIndicator = React.forwardRef<RadioIndicatorElement, RadioIndicatorProps>(\n (props: ScopedProps<RadioIndicatorProps>, forwardedRef) => {\n const { __scopeRadio, forceMount, ...indicatorProps } = props;\n const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n return (\n <Presence present={forceMount || context.checked}>\n <Primitive.span\n data-state={getState(context.checked)}\n data-disabled={context.disabled ? '' : undefined}\n {...indicatorProps}\n ref={forwardedRef}\n />\n </Presence>\n );\n }\n);\n\nRadioIndicator.displayName = INDICATOR_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype InputProps = Radix.ComponentPropsWithoutRef<'input'>;\ninterface BubbleInputProps extends Omit<InputProps, 'checked'> {\n checked: boolean;\n control: HTMLElement | null;\n bubbles: boolean;\n}\n\nconst BubbleInput = (props: BubbleInputProps) => {\n const { control, checked, bubbles = true, ...inputProps } = props;\n const ref = React.useRef<HTMLInputElement>(null);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n\n // Bubble checked change to parents (e.g form change event)\n React.useEffect(() => {\n const input = ref.current!;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, 'checked') as PropertyDescriptor;\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event('click', { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n\n return (\n <input\n type=\"radio\"\n aria-hidden\n defaultChecked={checked}\n {...inputProps}\n tabIndex={-1}\n ref={ref}\n style={{\n ...props.style,\n ...controlSize,\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n }}\n />\n );\n};\n\nfunction getState(checked: boolean) {\n return checked ? 'checked' : 'unchecked';\n}\n\nexport {\n createRadioScope,\n //\n Radio,\n RadioIndicator,\n};\nexport type { RadioProps };\n"],"names":["React","composeEventHandlers","useLabelContext","useComposedRefs","createContextScope","Primitive","RovingFocusGroup","createRovingFocusGroupScope","useControllableState","useDirection","Radio","RadioIndicator","createRadioScope","ARROW_KEYS","RADIO_GROUP_NAME","createRadioGroupContet","createRadioGroupScope","useRovingFocusGroupScope","useRadioScope","RadioGroupProvider","useRadioGroupContext","RadioGroup","forwardRef","props","forwardedRef","__scopeRadioGroup","name","ariaLabelledby","defaultValue","value","valueProp","required","orientation","dir","loop","onValueChange","groupProps","labelId","labelledBy","rovingFocusGroupScope","direction","setValue","prop","defaultProp","onChange","ITEM_NAME","RadioGroupItem","disabled","itemProps","context","radioScope","ref","useRef","composedRefs","checked","isArrowKeyPressedRef","useEffect","handleKeyDown","event","includes","key","current","handleKeyUp","document","addEventListener","removeEventListener","preventDefault","onFocus","click","INDICATOR_NAME","RadioGroupIndicator","indicatorProps","Root","Item","Indicator","useSize","usePrevious","Presence","RADIO_NAME","createRadioContext","RadioProvider","useRadioContext","__scopeRadio","onCheck","radioProps","button","setButton","useState","node","hasConsumerStoppedPropagationRef","isFormControl","Boolean","closest","getState","undefined","onClick","isPropagationStopped","stopPropagation","transform","forceMount","BubbleInput","control","bubbles","inputProps","prevChecked","controlSize","input","inputProto","window","HTMLInputElement","prototype","descriptor","Object","getOwnPropertyDescriptor","setChecked","set","Event","call","dispatchEvent","style","position","pointerEvents","opacity","margin"],"version":3,"file":"index.js.map"}
@@ -1,2 +1,295 @@
1
- import{Presence as e}from"@radix-ui/react-presence";import{usePrevious as r}from"@radix-ui/react-use-previous";import{useSize as o}from"@radix-ui/react-use-size";import{useDirection as t}from"@radix-ui/react-direction";import{useControllableState as a}from"@radix-ui/react-use-controllable-state";import*as n from"@radix-ui/react-roving-focus";import{createRovingFocusGroupScope as i}from"@radix-ui/react-roving-focus";import{Primitive as c}from"@radix-ui/react-primitive";import{createContextScope as d}from"@radix-ui/react-context";import{useComposedRefs as u}from"@radix-ui/react-compose-refs";import{useLabelContext as l}from"@radix-ui/react-label";import{composeEventHandlers as s}from"@radix-ui/primitive";import*as p from"react";import m from"@babel/runtime/helpers/esm/extends";const[f,b]=d("Radio"),[v,R]=f("Radio"),h=/*#__PURE__*/p.forwardRef(((e,r)=>{const{__scopeRadio:o,"aria-labelledby":t,name:a,checked:n=!1,required:i,disabled:d,value:f="on",onCheck:b,...R}=e,[h,k]=p.useState(null),y=u(r,(e=>k(e))),w=l(h),g=t||w,G=p.useRef(!1),C=!h||Boolean(h.closest("form"));/*#__PURE__*/return p.createElement(v,{scope:o,checked:n,disabled:d},/*#__PURE__*/p.createElement(c.button,m({type:"button",role:"radio","aria-checked":n,"aria-labelledby":g,"data-state":x(n),"data-disabled":d?"":void 0,disabled:d,value:f},R,{ref:y,onClick:s(e.onClick,(e=>{n||null==b||b(),C&&(G.current=e.isPropagationStopped(),G.current||e.stopPropagation())}))})),C&&/*#__PURE__*/p.createElement(E,{control:h,bubbles:!G.current,name:a,value:f,checked:n,required:i,disabled:d,style:{transform:"translateX(-100%)"}}))})),k=/*#__PURE__*/p.forwardRef(((r,o)=>{const{__scopeRadio:t,forceMount:a,...n}=r,i=R("RadioIndicator",t);/*#__PURE__*/return p.createElement(e,{present:a||i.checked},/*#__PURE__*/p.createElement(c.span,m({"data-state":x(i.checked),"data-disabled":i.disabled?"":void 0},n,{ref:o})))})),E=e=>{const{control:t,checked:a,bubbles:n=!0,...i}=e,c=p.useRef(null),d=r(a),u=o(t);return p.useEffect((()=>{const e=c.current,r=window.HTMLInputElement.prototype,o=Object.getOwnPropertyDescriptor(r,"checked").set;if(d!==a&&o){const r=new Event("click",{bubbles:n});o.call(e,a),e.dispatchEvent(r)}}),[d,a,n]),/*#__PURE__*/p.createElement("input",m({type:"radio","aria-hidden":!0,defaultChecked:a},i,{tabIndex:-1,ref:c,style:{...e.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function x(e){return e?"checked":"unchecked"}const y=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],[w,g]=d("RadioGroup",[i,b]);export{g as createRadioGroupScope};const G=i(),C=b(),[I,_]=w("RadioGroup");export const RadioGroup=/*#__PURE__*/p.forwardRef(((e,r)=>{const{__scopeRadioGroup:o,name:i,"aria-labelledby":d,defaultValue:u,value:s,required:f=!1,orientation:b,dir:v,loop:R=!0,onValueChange:h,...k}=e,E=l(),x=d||E,y=G(o),w=t(v),[g,C]=a({prop:s,defaultProp:u,onChange:h});/*#__PURE__*/return p.createElement(I,{scope:o,name:i,required:f,value:g,onValueChange:C},/*#__PURE__*/p.createElement(n.Root,m({asChild:!0},y,{orientation:b,dir:w,loop:R}),/*#__PURE__*/p.createElement(c.div,m({role:"radiogroup","aria-orientation":b,"aria-labelledby":x,dir:w},k,{ref:r}))))}));/*#__PURE__*/export const RadioGroupItem=/*#__PURE__*/p.forwardRef(((e,r)=>{const{__scopeRadioGroup:o,disabled:t,...a}=e,i=_("RadioGroupItem",o),c=G(o),d=C(o),l=p.useRef(null),f=u(r,l),b=i.value===a.value,v=p.useRef(!1);return p.useEffect((()=>{const e=e=>{y.includes(e.key)&&(v.current=!0)},r=()=>v.current=!1;return document.addEventListener("keydown",e),document.addEventListener("keyup",r),()=>{document.removeEventListener("keydown",e),document.removeEventListener("keyup",r)}}),[]),/*#__PURE__*/p.createElement(n.Item,m({asChild:!0},c,{focusable:!t,active:b}),/*#__PURE__*/p.createElement(h,m({disabled:t,required:i.required,checked:b},d,a,{name:i.name,ref:f,onCheck:()=>i.onValueChange(a.value),onKeyDown:s((e=>{"Enter"===e.key&&e.preventDefault()})),onFocus:s(a.onFocus,(()=>{var e;v.current&&(null===(e=l.current)||void 0===e||e.click())}))})))}));/*#__PURE__*/export const RadioGroupIndicator=/*#__PURE__*/p.forwardRef(((e,r)=>{const{__scopeRadioGroup:o,...t}=e,a=C(o);/*#__PURE__*/return p.createElement(k,m({},a,t,{ref:r}))}));/*#__PURE__*/export const Root=RadioGroup;export const Item=RadioGroupItem;export const Indicator=RadioGroupIndicator;
1
+ import $8Wolv$babelruntimehelpersesmextends from "@babel/runtime/helpers/esm/extends";
2
+ import {forwardRef as $8Wolv$forwardRef, createElement as $8Wolv$createElement, useRef as $8Wolv$useRef, useEffect as $8Wolv$useEffect, useState as $8Wolv$useState} from "react";
3
+ import {composeEventHandlers as $8Wolv$composeEventHandlers} from "@radix-ui/primitive";
4
+ import {useLabelContext as $8Wolv$useLabelContext} from "@radix-ui/react-label";
5
+ import {useComposedRefs as $8Wolv$useComposedRefs} from "@radix-ui/react-compose-refs";
6
+ import {createContextScope as $8Wolv$createContextScope} from "@radix-ui/react-context";
7
+ import {Primitive as $8Wolv$Primitive} from "@radix-ui/react-primitive";
8
+ import {createRovingFocusGroupScope as $8Wolv$createRovingFocusGroupScope, Root as $8Wolv$Root, Item as $8Wolv$Item} from "@radix-ui/react-roving-focus";
9
+ import {useControllableState as $8Wolv$useControllableState} from "@radix-ui/react-use-controllable-state";
10
+ import {useDirection as $8Wolv$useDirection} from "@radix-ui/react-direction";
11
+ import {useSize as $8Wolv$useSize} from "@radix-ui/react-use-size";
12
+ import {usePrevious as $8Wolv$usePrevious} from "@radix-ui/react-use-previous";
13
+ import {Presence as $8Wolv$Presence} from "@radix-ui/react-presence";
14
+
15
+ function $parcel$export(e, n, v, s) {
16
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
17
+ }
18
+ var $f99a8c78507165f7$exports = {};
19
+
20
+ $parcel$export($f99a8c78507165f7$exports, "createRadioGroupScope", () => $f99a8c78507165f7$export$c547093f11b76da2);
21
+ $parcel$export($f99a8c78507165f7$exports, "RadioGroup", () => $f99a8c78507165f7$export$a98f0dcb43a68a25);
22
+ $parcel$export($f99a8c78507165f7$exports, "RadioGroupItem", () => $f99a8c78507165f7$export$9f866c100ef519e4);
23
+ $parcel$export($f99a8c78507165f7$exports, "RadioGroupIndicator", () => $f99a8c78507165f7$export$5fb54c671a65c88);
24
+ $parcel$export($f99a8c78507165f7$exports, "Root", () => $f99a8c78507165f7$export$be92b6f5f03c0fe9);
25
+ $parcel$export($f99a8c78507165f7$exports, "Item", () => $f99a8c78507165f7$export$6d08773d2e66f8f2);
26
+ $parcel$export($f99a8c78507165f7$exports, "Indicator", () => $f99a8c78507165f7$export$adb584737d712b70);
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+ /* -------------------------------------------------------------------------------------------------
49
+ * Radio
50
+ * -----------------------------------------------------------------------------------------------*/ const $ce77a8961b41be9e$var$RADIO_NAME = 'Radio';
51
+ const [$ce77a8961b41be9e$var$createRadioContext, $ce77a8961b41be9e$export$67d2296460f1b002] = $8Wolv$createContextScope($ce77a8961b41be9e$var$RADIO_NAME);
52
+ const [$ce77a8961b41be9e$var$RadioProvider, $ce77a8961b41be9e$var$useRadioContext] = $ce77a8961b41be9e$var$createRadioContext($ce77a8961b41be9e$var$RADIO_NAME);
53
+ const $ce77a8961b41be9e$export$d7b12c4107be0d61 = /*#__PURE__*/ $8Wolv$forwardRef((props, forwardedRef)=>{
54
+ const { __scopeRadio: __scopeRadio , 'aria-labelledby': ariaLabelledby , name: name , checked: checked = false , required: required , disabled: disabled , value: value = 'on' , onCheck: onCheck , ...radioProps } = props;
55
+ const [button, setButton] = $8Wolv$useState(null);
56
+ const composedRefs = $8Wolv$useComposedRefs(forwardedRef, (node)=>setButton(node)
57
+ );
58
+ const labelId = $8Wolv$useLabelContext(button);
59
+ const labelledBy = ariaLabelledby || labelId;
60
+ const hasConsumerStoppedPropagationRef = $8Wolv$useRef(false); // We set this to true by default so that events bubble to forms without JS (SSR)
61
+ const isFormControl = button ? Boolean(button.closest('form')) : true;
62
+ return /*#__PURE__*/ $8Wolv$createElement($ce77a8961b41be9e$var$RadioProvider, {
63
+ scope: __scopeRadio,
64
+ checked: checked,
65
+ disabled: disabled
66
+ }, /*#__PURE__*/ $8Wolv$createElement($8Wolv$Primitive.button, $8Wolv$babelruntimehelpersesmextends({
67
+ type: "button",
68
+ role: "radio",
69
+ "aria-checked": checked,
70
+ "aria-labelledby": labelledBy,
71
+ "data-state": $ce77a8961b41be9e$var$getState(checked),
72
+ "data-disabled": disabled ? '' : undefined,
73
+ disabled: disabled,
74
+ value: value
75
+ }, radioProps, {
76
+ ref: composedRefs,
77
+ onClick: $8Wolv$composeEventHandlers(props.onClick, (event)=>{
78
+ // radios cannot be unchecked so we only communicate a checked state
79
+ if (!checked) onCheck === null || onCheck === void 0 || onCheck();
80
+ if (isFormControl) {
81
+ hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(); // if radio is in a form, stop propagation from the button so that we only propagate
82
+ // one click event (from the input). We propagate changes from an input so that native
83
+ // form validation works and form events reflect radio updates.
84
+ if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();
85
+ }
86
+ })
87
+ })), isFormControl && /*#__PURE__*/ $8Wolv$createElement($ce77a8961b41be9e$var$BubbleInput, {
88
+ control: button,
89
+ bubbles: !hasConsumerStoppedPropagationRef.current,
90
+ name: name,
91
+ value: value,
92
+ checked: checked,
93
+ required: required,
94
+ disabled: disabled // We transform because the input is absolutely positioned but we have
95
+ ,
96
+ style: {
97
+ transform: 'translateX(-100%)'
98
+ }
99
+ }));
100
+ });
101
+ /*#__PURE__*/ Object.assign($ce77a8961b41be9e$export$d7b12c4107be0d61, {
102
+ displayName: $ce77a8961b41be9e$var$RADIO_NAME
103
+ });
104
+ /* -------------------------------------------------------------------------------------------------
105
+ * RadioIndicator
106
+ * -----------------------------------------------------------------------------------------------*/ const $ce77a8961b41be9e$var$INDICATOR_NAME = 'RadioIndicator';
107
+ const $ce77a8961b41be9e$export$d35a9ffa9a04f9e7 = /*#__PURE__*/ $8Wolv$forwardRef((props, forwardedRef)=>{
108
+ const { __scopeRadio: __scopeRadio , forceMount: forceMount , ...indicatorProps } = props;
109
+ const context = $ce77a8961b41be9e$var$useRadioContext($ce77a8961b41be9e$var$INDICATOR_NAME, __scopeRadio);
110
+ return /*#__PURE__*/ $8Wolv$createElement($8Wolv$Presence, {
111
+ present: forceMount || context.checked
112
+ }, /*#__PURE__*/ $8Wolv$createElement($8Wolv$Primitive.span, $8Wolv$babelruntimehelpersesmextends({
113
+ "data-state": $ce77a8961b41be9e$var$getState(context.checked),
114
+ "data-disabled": context.disabled ? '' : undefined
115
+ }, indicatorProps, {
116
+ ref: forwardedRef
117
+ })));
118
+ });
119
+ /*#__PURE__*/ Object.assign($ce77a8961b41be9e$export$d35a9ffa9a04f9e7, {
120
+ displayName: $ce77a8961b41be9e$var$INDICATOR_NAME
121
+ });
122
+ /* ---------------------------------------------------------------------------------------------- */ const $ce77a8961b41be9e$var$BubbleInput = (props)=>{
123
+ const { control: control , checked: checked , bubbles: bubbles = true , ...inputProps } = props;
124
+ const ref = $8Wolv$useRef(null);
125
+ const prevChecked = $8Wolv$usePrevious(checked);
126
+ const controlSize = $8Wolv$useSize(control); // Bubble checked change to parents (e.g form change event)
127
+ $8Wolv$useEffect(()=>{
128
+ const input = ref.current;
129
+ const inputProto = window.HTMLInputElement.prototype;
130
+ const descriptor = Object.getOwnPropertyDescriptor(inputProto, 'checked');
131
+ const setChecked = descriptor.set;
132
+ if (prevChecked !== checked && setChecked) {
133
+ const event = new Event('click', {
134
+ bubbles: bubbles
135
+ });
136
+ setChecked.call(input, checked);
137
+ input.dispatchEvent(event);
138
+ }
139
+ }, [
140
+ prevChecked,
141
+ checked,
142
+ bubbles
143
+ ]);
144
+ return /*#__PURE__*/ $8Wolv$createElement("input", $8Wolv$babelruntimehelpersesmextends({
145
+ type: "radio",
146
+ "aria-hidden": true,
147
+ defaultChecked: checked
148
+ }, inputProps, {
149
+ tabIndex: -1,
150
+ ref: ref,
151
+ style: {
152
+ ...props.style,
153
+ ...controlSize,
154
+ position: 'absolute',
155
+ pointerEvents: 'none',
156
+ opacity: 0,
157
+ margin: 0
158
+ }
159
+ }));
160
+ };
161
+ function $ce77a8961b41be9e$var$getState(checked) {
162
+ return checked ? 'checked' : 'unchecked';
163
+ }
164
+
165
+
166
+ const $f99a8c78507165f7$var$ARROW_KEYS = [
167
+ 'ArrowUp',
168
+ 'ArrowDown',
169
+ 'ArrowLeft',
170
+ 'ArrowRight'
171
+ ];
172
+ /* -------------------------------------------------------------------------------------------------
173
+ * RadioGroup
174
+ * -----------------------------------------------------------------------------------------------*/ const $f99a8c78507165f7$var$RADIO_GROUP_NAME = 'RadioGroup';
175
+ const [$f99a8c78507165f7$var$createRadioGroupContet, $f99a8c78507165f7$export$c547093f11b76da2] = $8Wolv$createContextScope($f99a8c78507165f7$var$RADIO_GROUP_NAME, [
176
+ $8Wolv$createRovingFocusGroupScope,
177
+ $ce77a8961b41be9e$export$67d2296460f1b002
178
+ ]);
179
+ const $f99a8c78507165f7$var$useRovingFocusGroupScope = $8Wolv$createRovingFocusGroupScope();
180
+ const $f99a8c78507165f7$var$useRadioScope = $ce77a8961b41be9e$export$67d2296460f1b002();
181
+ const [$f99a8c78507165f7$var$RadioGroupProvider, $f99a8c78507165f7$var$useRadioGroupContext] = $f99a8c78507165f7$var$createRadioGroupContet($f99a8c78507165f7$var$RADIO_GROUP_NAME);
182
+ const $f99a8c78507165f7$export$a98f0dcb43a68a25 = /*#__PURE__*/ $8Wolv$forwardRef((props, forwardedRef)=>{
183
+ const { __scopeRadioGroup: __scopeRadioGroup , name: name , 'aria-labelledby': ariaLabelledby , defaultValue: defaultValue , value: valueProp , required: required = false , orientation: orientation , dir: dir , loop: loop = true , onValueChange: onValueChange , ...groupProps } = props;
184
+ const labelId = $8Wolv$useLabelContext();
185
+ const labelledBy = ariaLabelledby || labelId;
186
+ const rovingFocusGroupScope = $f99a8c78507165f7$var$useRovingFocusGroupScope(__scopeRadioGroup);
187
+ const direction = $8Wolv$useDirection(dir);
188
+ const [value, setValue] = $8Wolv$useControllableState({
189
+ prop: valueProp,
190
+ defaultProp: defaultValue,
191
+ onChange: onValueChange
192
+ });
193
+ return /*#__PURE__*/ $8Wolv$createElement($f99a8c78507165f7$var$RadioGroupProvider, {
194
+ scope: __scopeRadioGroup,
195
+ name: name,
196
+ required: required,
197
+ value: value,
198
+ onValueChange: setValue
199
+ }, /*#__PURE__*/ $8Wolv$createElement($8Wolv$Root, $8Wolv$babelruntimehelpersesmextends({
200
+ asChild: true
201
+ }, rovingFocusGroupScope, {
202
+ orientation: orientation,
203
+ dir: direction,
204
+ loop: loop
205
+ }), /*#__PURE__*/ $8Wolv$createElement($8Wolv$Primitive.div, $8Wolv$babelruntimehelpersesmextends({
206
+ role: "radiogroup",
207
+ "aria-required": required,
208
+ "aria-orientation": orientation,
209
+ "aria-labelledby": labelledBy,
210
+ dir: direction
211
+ }, groupProps, {
212
+ ref: forwardedRef
213
+ }))));
214
+ });
215
+ /*#__PURE__*/ Object.assign($f99a8c78507165f7$export$a98f0dcb43a68a25, {
216
+ displayName: $f99a8c78507165f7$var$RADIO_GROUP_NAME
217
+ });
218
+ /* -------------------------------------------------------------------------------------------------
219
+ * RadioGroupItem
220
+ * -----------------------------------------------------------------------------------------------*/ const $f99a8c78507165f7$var$ITEM_NAME = 'RadioGroupItem';
221
+ const $f99a8c78507165f7$export$9f866c100ef519e4 = /*#__PURE__*/ $8Wolv$forwardRef((props, forwardedRef)=>{
222
+ const { __scopeRadioGroup: __scopeRadioGroup , disabled: disabled , ...itemProps } = props;
223
+ const context = $f99a8c78507165f7$var$useRadioGroupContext($f99a8c78507165f7$var$ITEM_NAME, __scopeRadioGroup);
224
+ const rovingFocusGroupScope = $f99a8c78507165f7$var$useRovingFocusGroupScope(__scopeRadioGroup);
225
+ const radioScope = $f99a8c78507165f7$var$useRadioScope(__scopeRadioGroup);
226
+ const ref = $8Wolv$useRef(null);
227
+ const composedRefs = $8Wolv$useComposedRefs(forwardedRef, ref);
228
+ const checked = context.value === itemProps.value;
229
+ const isArrowKeyPressedRef = $8Wolv$useRef(false);
230
+ $8Wolv$useEffect(()=>{
231
+ const handleKeyDown = (event)=>{
232
+ if ($f99a8c78507165f7$var$ARROW_KEYS.includes(event.key)) isArrowKeyPressedRef.current = true;
233
+ };
234
+ const handleKeyUp = ()=>isArrowKeyPressedRef.current = false
235
+ ;
236
+ document.addEventListener('keydown', handleKeyDown);
237
+ document.addEventListener('keyup', handleKeyUp);
238
+ return ()=>{
239
+ document.removeEventListener('keydown', handleKeyDown);
240
+ document.removeEventListener('keyup', handleKeyUp);
241
+ };
242
+ }, []);
243
+ return /*#__PURE__*/ $8Wolv$createElement($8Wolv$Item, $8Wolv$babelruntimehelpersesmextends({
244
+ asChild: true
245
+ }, rovingFocusGroupScope, {
246
+ focusable: !disabled,
247
+ active: checked
248
+ }), /*#__PURE__*/ $8Wolv$createElement($ce77a8961b41be9e$export$d7b12c4107be0d61, $8Wolv$babelruntimehelpersesmextends({
249
+ disabled: disabled,
250
+ required: context.required,
251
+ checked: checked
252
+ }, radioScope, itemProps, {
253
+ name: context.name,
254
+ ref: composedRefs,
255
+ onCheck: ()=>context.onValueChange(itemProps.value)
256
+ ,
257
+ onKeyDown: $8Wolv$composeEventHandlers((event)=>{
258
+ // According to WAI ARIA, radio groups don't activate items on enter keypress
259
+ if (event.key === 'Enter') event.preventDefault();
260
+ }),
261
+ onFocus: $8Wolv$composeEventHandlers(itemProps.onFocus, ()=>{
262
+ var _ref$current;
263
+ /**
264
+ * Our `RovingFocusGroup` will focus the radio when navigating with arrow keys
265
+ * and we need to "check" it in that case. We click it to "check" it (instead
266
+ * of updating `context.value`) so that the radio change event fires.
267
+ */ if (isArrowKeyPressedRef.current) (_ref$current = ref.current) === null || _ref$current === void 0 || _ref$current.click();
268
+ })
269
+ })));
270
+ });
271
+ /*#__PURE__*/ Object.assign($f99a8c78507165f7$export$9f866c100ef519e4, {
272
+ displayName: $f99a8c78507165f7$var$ITEM_NAME
273
+ });
274
+ /* -------------------------------------------------------------------------------------------------
275
+ * RadioGroupIndicator
276
+ * -----------------------------------------------------------------------------------------------*/ const $f99a8c78507165f7$var$INDICATOR_NAME = 'RadioGroupIndicator';
277
+ const $f99a8c78507165f7$export$5fb54c671a65c88 = /*#__PURE__*/ $8Wolv$forwardRef((props, forwardedRef)=>{
278
+ const { __scopeRadioGroup: __scopeRadioGroup , ...indicatorProps } = props;
279
+ const radioScope = $f99a8c78507165f7$var$useRadioScope(__scopeRadioGroup);
280
+ return /*#__PURE__*/ $8Wolv$createElement($ce77a8961b41be9e$export$d35a9ffa9a04f9e7, $8Wolv$babelruntimehelpersesmextends({}, radioScope, indicatorProps, {
281
+ ref: forwardedRef
282
+ }));
283
+ });
284
+ /*#__PURE__*/ Object.assign($f99a8c78507165f7$export$5fb54c671a65c88, {
285
+ displayName: $f99a8c78507165f7$var$INDICATOR_NAME
286
+ });
287
+ /* ---------------------------------------------------------------------------------------------- */ const $f99a8c78507165f7$export$be92b6f5f03c0fe9 = $f99a8c78507165f7$export$a98f0dcb43a68a25;
288
+ const $f99a8c78507165f7$export$6d08773d2e66f8f2 = $f99a8c78507165f7$export$9f866c100ef519e4;
289
+ const $f99a8c78507165f7$export$adb584737d712b70 = $f99a8c78507165f7$export$5fb54c671a65c88;
290
+
291
+
292
+
293
+
294
+ export {$f99a8c78507165f7$export$c547093f11b76da2 as createRadioGroupScope, $f99a8c78507165f7$export$a98f0dcb43a68a25 as RadioGroup, $f99a8c78507165f7$export$9f866c100ef519e4 as RadioGroupItem, $f99a8c78507165f7$export$5fb54c671a65c88 as RadioGroupIndicator, $f99a8c78507165f7$export$be92b6f5f03c0fe9 as Root, $f99a8c78507165f7$export$6d08773d2e66f8f2 as Item, $f99a8c78507165f7$export$adb584737d712b70 as Indicator};
2
295
  //# sourceMappingURL=index.module.js.map
@@ -1 +1 @@
1
- {"mappings":"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","sources":["./packages/react/radio-group/src/Radio.tsx","./packages/react/radio-group/src/RadioGroup.tsx"],"sourcesContent":["import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useSize } from '@radix-ui/react-use-size';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useLabelContext } from '@radix-ui/react-label';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Radio\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_NAME = 'Radio';\n\ntype ScopedProps<P> = P & { __scopeRadio?: Scope };\nconst [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\n\ntype RadioContextValue = { checked: boolean; disabled?: boolean };\nconst [RadioProvider, useRadioContext] = createRadioContext<RadioContextValue>(RADIO_NAME);\n\ntype RadioElement = React.ElementRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface RadioProps extends PrimitiveButtonProps {\n checked?: boolean;\n required?: boolean;\n onCheck?(): void;\n}\n\nconst Radio = React.forwardRef<RadioElement, RadioProps>(\n (props: ScopedProps<RadioProps>, forwardedRef) => {\n const {\n __scopeRadio,\n 'aria-labelledby': ariaLabelledby,\n name,\n checked = false,\n required,\n disabled,\n value = 'on',\n onCheck,\n ...radioProps\n } = props;\n const [button, setButton] = React.useState<HTMLButtonElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const labelId = useLabelContext(button);\n const labelledBy = ariaLabelledby || labelId;\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n // We set this to true by default so that events bubble to forms without JS (SSR)\n const isFormControl = button ? Boolean(button.closest('form')) : true;\n\n return (\n <RadioProvider scope={__scopeRadio} checked={checked} disabled={disabled}>\n <Primitive.button\n type=\"button\"\n role=\"radio\"\n aria-checked={checked}\n aria-labelledby={labelledBy}\n data-state={getState(checked)}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n value={value}\n {...radioProps}\n ref={composedRefs}\n onClick={composeEventHandlers(props.onClick, (event) => {\n // radios cannot be unchecked so we only communicate a checked state\n if (!checked) onCheck?.();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n // if radio is in a form, stop propagation from the button so that we only propagate\n // one click event (from the input). We propagate changes from an input so that native\n // form validation works and form events reflect radio updates.\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })}\n />\n {isFormControl && (\n <BubbleInput\n control={button}\n bubbles={!hasConsumerStoppedPropagationRef.current}\n name={name}\n value={value}\n checked={checked}\n required={required}\n disabled={disabled}\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n style={{ transform: 'translateX(-100%)' }}\n />\n )}\n </RadioProvider>\n );\n }\n);\n\nRadio.displayName = RADIO_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'RadioIndicator';\n\ntype RadioIndicatorElement = React.ElementRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = Radix.ComponentPropsWithoutRef<typeof Primitive.span>;\nexport interface RadioIndicatorProps extends PrimitiveSpanProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst RadioIndicator = React.forwardRef<RadioIndicatorElement, RadioIndicatorProps>(\n (props: ScopedProps<RadioIndicatorProps>, forwardedRef) => {\n const { __scopeRadio, forceMount, ...indicatorProps } = props;\n const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n return (\n <Presence present={forceMount || context.checked}>\n <Primitive.span\n data-state={getState(context.checked)}\n data-disabled={context.disabled ? '' : undefined}\n {...indicatorProps}\n ref={forwardedRef}\n />\n </Presence>\n );\n }\n);\n\nRadioIndicator.displayName = INDICATOR_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype InputProps = Radix.ComponentPropsWithoutRef<'input'>;\ninterface BubbleInputProps extends Omit<InputProps, 'checked'> {\n checked: boolean;\n control: HTMLElement | null;\n bubbles: boolean;\n}\n\nconst BubbleInput = (props: BubbleInputProps) => {\n const { control, checked, bubbles = true, ...inputProps } = props;\n const ref = React.useRef<HTMLInputElement>(null);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n\n // Bubble checked change to parents (e.g form change event)\n React.useEffect(() => {\n const input = ref.current!;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, 'checked') as PropertyDescriptor;\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event('click', { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n\n return (\n <input\n type=\"radio\"\n aria-hidden\n defaultChecked={checked}\n {...inputProps}\n tabIndex={-1}\n ref={ref}\n style={{\n ...props.style,\n ...controlSize,\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n }}\n />\n );\n};\n\nfunction getState(checked: boolean) {\n return checked ? 'checked' : 'unchecked';\n}\n\nexport {\n createRadioScope,\n //\n Radio,\n RadioIndicator,\n};\nexport type { RadioProps };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useLabelContext } from '@radix-ui/react-label';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { Radio, RadioIndicator, createRadioScope } from './Radio';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\nconst ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroup\n * -----------------------------------------------------------------------------------------------*/\nconst RADIO_GROUP_NAME = 'RadioGroup';\n\ntype ScopedProps<P> = P & { __scopeRadioGroup?: Scope };\nconst [createRadioGroupContet, createRadioGroupScope] = createContextScope(RADIO_GROUP_NAME, [\n createRovingFocusGroupScope,\n createRadioScope,\n]);\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\nconst useRadioScope = createRadioScope();\n\ntype RadioGroupContextValue = {\n name?: string;\n required: boolean;\n value?: string;\n onValueChange(value: string): void;\n};\n\nconst [RadioGroupProvider, useRadioGroupContext] =\n createRadioGroupContet<RadioGroupContextValue>(RADIO_GROUP_NAME);\n\ntype RadioGroupElement = React.ElementRef<typeof Primitive.div>;\ntype RovingFocusGroupProps = Radix.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface RadioGroupProps extends PrimitiveDivProps {\n name?: RadioGroupContextValue['name'];\n required?: Radix.ComponentPropsWithoutRef<typeof Radio>['required'];\n dir?: RovingFocusGroupProps['dir'];\n orientation?: RovingFocusGroupProps['orientation'];\n loop?: RovingFocusGroupProps['loop'];\n defaultValue?: string;\n value?: RadioGroupContextValue['value'];\n onValueChange?: RadioGroupContextValue['onValueChange'];\n}\n\nconst RadioGroup = React.forwardRef<RadioGroupElement, RadioGroupProps>(\n (props: ScopedProps<RadioGroupProps>, forwardedRef) => {\n const {\n __scopeRadioGroup,\n name,\n 'aria-labelledby': ariaLabelledby,\n defaultValue,\n value: valueProp,\n required = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const labelId = useLabelContext();\n const labelledBy = ariaLabelledby || labelId;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n\n return (\n <RadioGroupProvider\n scope={__scopeRadioGroup}\n name={name}\n required={required}\n value={value}\n onValueChange={setValue}\n >\n <RovingFocusGroup.Root\n asChild\n {...rovingFocusGroupScope}\n orientation={orientation}\n dir={direction}\n loop={loop}\n >\n <Primitive.div\n role=\"radiogroup\"\n aria-orientation={orientation}\n aria-labelledby={labelledBy}\n dir={direction}\n {...groupProps}\n ref={forwardedRef}\n />\n </RovingFocusGroup.Root>\n </RadioGroupProvider>\n );\n }\n);\n\nRadioGroup.displayName = RADIO_GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroupItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'RadioGroupItem';\n\ntype RadioGroupItemElement = React.ElementRef<typeof Radio>;\ntype RadioProps = Radix.ComponentPropsWithoutRef<typeof Radio>;\ninterface RadioGroupItemProps extends Omit<RadioProps, 'onCheck' | 'name'> {\n value: string;\n}\n\nconst RadioGroupItem = React.forwardRef<RadioGroupItemElement, RadioGroupItemProps>(\n (props: ScopedProps<RadioGroupItemProps>, forwardedRef) => {\n const { __scopeRadioGroup, disabled, ...itemProps } = props;\n const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = useRadioScope(__scopeRadioGroup);\n const ref = React.useRef<React.ElementRef<typeof Radio>>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = React.useRef(false);\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n };\n const handleKeyUp = () => (isArrowKeyPressedRef.current = false);\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('keyup', handleKeyUp);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, []);\n\n return (\n <RovingFocusGroup.Item\n asChild\n {...rovingFocusGroupScope}\n focusable={!disabled}\n active={checked}\n >\n <Radio\n disabled={disabled}\n required={context.required}\n checked={checked}\n {...radioScope}\n {...itemProps}\n name={context.name}\n ref={composedRefs}\n onCheck={() => context.onValueChange(itemProps.value)}\n onKeyDown={composeEventHandlers((event) => {\n // According to WAI ARIA, radio groups don't activate items on enter keypress\n if (event.key === 'Enter') event.preventDefault();\n })}\n onFocus={composeEventHandlers(itemProps.onFocus, () => {\n /**\n * Our `RovingFocusGroup` will focus the radio when navigating with arrow keys\n * and we need to \"check\" it in that case. We click it to \"check\" it (instead\n * of updating `context.value`) so that the radio change event fires.\n */\n if (isArrowKeyPressedRef.current) ref.current?.click();\n })}\n />\n </RovingFocusGroup.Item>\n );\n }\n);\n\nRadioGroupItem.displayName = ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroupIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'RadioGroupIndicator';\n\ntype RadioGroupIndicatorElement = React.ElementRef<typeof RadioIndicator>;\ntype RadioIndicatorProps = Radix.ComponentPropsWithoutRef<typeof RadioIndicator>;\ninterface RadioGroupIndicatorProps extends RadioIndicatorProps {}\n\nconst RadioGroupIndicator = React.forwardRef<RadioGroupIndicatorElement, RadioGroupIndicatorProps>(\n (props: ScopedProps<RadioGroupIndicatorProps>, forwardedRef) => {\n const { __scopeRadioGroup, ...indicatorProps } = props;\n const radioScope = useRadioScope(__scopeRadioGroup);\n return <RadioIndicator {...radioScope} {...indicatorProps} ref={forwardedRef} />;\n }\n);\n\nRadioGroupIndicator.displayName = INDICATOR_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nconst Root = RadioGroup;\nconst Item = RadioGroupItem;\nconst Indicator = RadioGroupIndicator;\n\nexport {\n createRadioGroupScope,\n //\n RadioGroup,\n RadioGroupItem,\n RadioGroupIndicator,\n //\n Root,\n Item,\n Indicator,\n};\nexport type { RadioGroupProps, RadioGroupItemProps, RadioGroupIndicatorProps };\n"],"names":["createRadioContext","createRadioScope","createContextScope","RadioProvider","useRadioContext","Radio","React","forwardRef","props","forwardedRef","__scopeRadio","ariaLabelledby","name","checked","required","disabled","value","onCheck","radioProps","button","setButton","useState","composedRefs","useComposedRefs","node","labelId","useLabelContext","labelledBy","hasConsumerStoppedPropagationRef","useRef","isFormControl","Boolean","closest","_react","createElement","$f7b37f51b2f1beab198838503d6ba083$var$RadioProvider","scope","Primitive","_babelRuntimeHelpersEsmExtends","type","role","getState","undefined","ref","onClick","composeEventHandlers","event","current","isPropagationStopped","stopPropagation","$f7b37f51b2f1beab198838503d6ba083$var$BubbleInput","control","bubbles","style","transform","RadioIndicator","forceMount","indicatorProps","context","Presence","present","span","BubbleInput","inputProps","prevChecked","usePrevious","controlSize","useSize","useEffect","input","inputProto","window","HTMLInputElement","prototype","setChecked","Object","getOwnPropertyDescriptor","set","Event","call","dispatchEvent","defaultChecked","tabIndex","position","pointerEvents","opacity","margin","ARROW_KEYS","createRadioGroupContet","createRadioGroupScope","createRovingFocusGroupScope","$f7b37f51b2f1beab198838503d6ba083$export$createRadioScope","useRovingFocusGroupScope","useRadioScope","RadioGroupProvider","useRadioGroupContext","RadioGroup","__scopeRadioGroup","defaultValue","valueProp","orientation","dir","loop","onValueChange","groupProps","rovingFocusGroupScope","direction","useDirection","setValue","useControllableState","prop","defaultProp","onChange","$b7d81d84737f46dda013f23006a0b2fd$var$RadioGroupProvider","_radixUiReactRovingFocus","Root","asChild","div","RadioGroupItem","itemProps","radioScope","isArrowKeyPressedRef","handleKeyDown","includes","key","handleKeyUp","document","addEventListener","removeEventListener","Item","focusable","active","$f7b37f51b2f1beab198838503d6ba083$export$Radio","onKeyDown","preventDefault","onFocus","_ref$current","click","RadioGroupIndicator","$f7b37f51b2f1beab198838503d6ba083$export$RadioIndicator","Indicator"],"version":3,"file":"index.module.js.map"}
1
+ {"mappings":"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","sources":["packages/react/radio-group/src/index.ts","packages/react/radio-group/src/RadioGroup.tsx","packages/react/radio-group/src/Radio.tsx"],"sourcesContent":["export * from './RadioGroup';\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useLabelContext } from '@radix-ui/react-label';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { Radio, RadioIndicator, createRadioScope } from './Radio';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\nconst ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroup\n * -----------------------------------------------------------------------------------------------*/\nconst RADIO_GROUP_NAME = 'RadioGroup';\n\ntype ScopedProps<P> = P & { __scopeRadioGroup?: Scope };\nconst [createRadioGroupContet, createRadioGroupScope] = createContextScope(RADIO_GROUP_NAME, [\n createRovingFocusGroupScope,\n createRadioScope,\n]);\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\nconst useRadioScope = createRadioScope();\n\ntype RadioGroupContextValue = {\n name?: string;\n required: boolean;\n value?: string;\n onValueChange(value: string): void;\n};\n\nconst [RadioGroupProvider, useRadioGroupContext] =\n createRadioGroupContet<RadioGroupContextValue>(RADIO_GROUP_NAME);\n\ntype RadioGroupElement = React.ElementRef<typeof Primitive.div>;\ntype RovingFocusGroupProps = Radix.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface RadioGroupProps extends PrimitiveDivProps {\n name?: RadioGroupContextValue['name'];\n required?: Radix.ComponentPropsWithoutRef<typeof Radio>['required'];\n dir?: RovingFocusGroupProps['dir'];\n orientation?: RovingFocusGroupProps['orientation'];\n loop?: RovingFocusGroupProps['loop'];\n defaultValue?: string;\n value?: RadioGroupContextValue['value'];\n onValueChange?: RadioGroupContextValue['onValueChange'];\n}\n\nconst RadioGroup = React.forwardRef<RadioGroupElement, RadioGroupProps>(\n (props: ScopedProps<RadioGroupProps>, forwardedRef) => {\n const {\n __scopeRadioGroup,\n name,\n 'aria-labelledby': ariaLabelledby,\n defaultValue,\n value: valueProp,\n required = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const labelId = useLabelContext();\n const labelledBy = ariaLabelledby || labelId;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n\n return (\n <RadioGroupProvider\n scope={__scopeRadioGroup}\n name={name}\n required={required}\n value={value}\n onValueChange={setValue}\n >\n <RovingFocusGroup.Root\n asChild\n {...rovingFocusGroupScope}\n orientation={orientation}\n dir={direction}\n loop={loop}\n >\n <Primitive.div\n role=\"radiogroup\"\n aria-required={required}\n aria-orientation={orientation}\n aria-labelledby={labelledBy}\n dir={direction}\n {...groupProps}\n ref={forwardedRef}\n />\n </RovingFocusGroup.Root>\n </RadioGroupProvider>\n );\n }\n);\n\nRadioGroup.displayName = RADIO_GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroupItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'RadioGroupItem';\n\ntype RadioGroupItemElement = React.ElementRef<typeof Radio>;\ntype RadioProps = Radix.ComponentPropsWithoutRef<typeof Radio>;\ninterface RadioGroupItemProps extends Omit<RadioProps, 'onCheck' | 'name'> {\n value: string;\n}\n\nconst RadioGroupItem = React.forwardRef<RadioGroupItemElement, RadioGroupItemProps>(\n (props: ScopedProps<RadioGroupItemProps>, forwardedRef) => {\n const { __scopeRadioGroup, disabled, ...itemProps } = props;\n const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = useRadioScope(__scopeRadioGroup);\n const ref = React.useRef<React.ElementRef<typeof Radio>>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = React.useRef(false);\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n };\n const handleKeyUp = () => (isArrowKeyPressedRef.current = false);\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('keyup', handleKeyUp);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, []);\n\n return (\n <RovingFocusGroup.Item\n asChild\n {...rovingFocusGroupScope}\n focusable={!disabled}\n active={checked}\n >\n <Radio\n disabled={disabled}\n required={context.required}\n checked={checked}\n {...radioScope}\n {...itemProps}\n name={context.name}\n ref={composedRefs}\n onCheck={() => context.onValueChange(itemProps.value)}\n onKeyDown={composeEventHandlers((event) => {\n // According to WAI ARIA, radio groups don't activate items on enter keypress\n if (event.key === 'Enter') event.preventDefault();\n })}\n onFocus={composeEventHandlers(itemProps.onFocus, () => {\n /**\n * Our `RovingFocusGroup` will focus the radio when navigating with arrow keys\n * and we need to \"check\" it in that case. We click it to \"check\" it (instead\n * of updating `context.value`) so that the radio change event fires.\n */\n if (isArrowKeyPressedRef.current) ref.current?.click();\n })}\n />\n </RovingFocusGroup.Item>\n );\n }\n);\n\nRadioGroupItem.displayName = ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroupIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'RadioGroupIndicator';\n\ntype RadioGroupIndicatorElement = React.ElementRef<typeof RadioIndicator>;\ntype RadioIndicatorProps = Radix.ComponentPropsWithoutRef<typeof RadioIndicator>;\ninterface RadioGroupIndicatorProps extends RadioIndicatorProps {}\n\nconst RadioGroupIndicator = React.forwardRef<RadioGroupIndicatorElement, RadioGroupIndicatorProps>(\n (props: ScopedProps<RadioGroupIndicatorProps>, forwardedRef) => {\n const { __scopeRadioGroup, ...indicatorProps } = props;\n const radioScope = useRadioScope(__scopeRadioGroup);\n return <RadioIndicator {...radioScope} {...indicatorProps} ref={forwardedRef} />;\n }\n);\n\nRadioGroupIndicator.displayName = INDICATOR_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nconst Root = RadioGroup;\nconst Item = RadioGroupItem;\nconst Indicator = RadioGroupIndicator;\n\nexport {\n createRadioGroupScope,\n //\n RadioGroup,\n RadioGroupItem,\n RadioGroupIndicator,\n //\n Root,\n Item,\n Indicator,\n};\nexport type { RadioGroupProps, RadioGroupItemProps, RadioGroupIndicatorProps };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useSize } from '@radix-ui/react-use-size';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useLabelContext } from '@radix-ui/react-label';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Radio\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_NAME = 'Radio';\n\ntype ScopedProps<P> = P & { __scopeRadio?: Scope };\nconst [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\n\ntype RadioContextValue = { checked: boolean; disabled?: boolean };\nconst [RadioProvider, useRadioContext] = createRadioContext<RadioContextValue>(RADIO_NAME);\n\ntype RadioElement = React.ElementRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface RadioProps extends PrimitiveButtonProps {\n checked?: boolean;\n required?: boolean;\n onCheck?(): void;\n}\n\nconst Radio = React.forwardRef<RadioElement, RadioProps>(\n (props: ScopedProps<RadioProps>, forwardedRef) => {\n const {\n __scopeRadio,\n 'aria-labelledby': ariaLabelledby,\n name,\n checked = false,\n required,\n disabled,\n value = 'on',\n onCheck,\n ...radioProps\n } = props;\n const [button, setButton] = React.useState<HTMLButtonElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const labelId = useLabelContext(button);\n const labelledBy = ariaLabelledby || labelId;\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n // We set this to true by default so that events bubble to forms without JS (SSR)\n const isFormControl = button ? Boolean(button.closest('form')) : true;\n\n return (\n <RadioProvider scope={__scopeRadio} checked={checked} disabled={disabled}>\n <Primitive.button\n type=\"button\"\n role=\"radio\"\n aria-checked={checked}\n aria-labelledby={labelledBy}\n data-state={getState(checked)}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n value={value}\n {...radioProps}\n ref={composedRefs}\n onClick={composeEventHandlers(props.onClick, (event) => {\n // radios cannot be unchecked so we only communicate a checked state\n if (!checked) onCheck?.();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n // if radio is in a form, stop propagation from the button so that we only propagate\n // one click event (from the input). We propagate changes from an input so that native\n // form validation works and form events reflect radio updates.\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })}\n />\n {isFormControl && (\n <BubbleInput\n control={button}\n bubbles={!hasConsumerStoppedPropagationRef.current}\n name={name}\n value={value}\n checked={checked}\n required={required}\n disabled={disabled}\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n style={{ transform: 'translateX(-100%)' }}\n />\n )}\n </RadioProvider>\n );\n }\n);\n\nRadio.displayName = RADIO_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'RadioIndicator';\n\ntype RadioIndicatorElement = React.ElementRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = Radix.ComponentPropsWithoutRef<typeof Primitive.span>;\nexport interface RadioIndicatorProps extends PrimitiveSpanProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst RadioIndicator = React.forwardRef<RadioIndicatorElement, RadioIndicatorProps>(\n (props: ScopedProps<RadioIndicatorProps>, forwardedRef) => {\n const { __scopeRadio, forceMount, ...indicatorProps } = props;\n const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n return (\n <Presence present={forceMount || context.checked}>\n <Primitive.span\n data-state={getState(context.checked)}\n data-disabled={context.disabled ? '' : undefined}\n {...indicatorProps}\n ref={forwardedRef}\n />\n </Presence>\n );\n }\n);\n\nRadioIndicator.displayName = INDICATOR_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype InputProps = Radix.ComponentPropsWithoutRef<'input'>;\ninterface BubbleInputProps extends Omit<InputProps, 'checked'> {\n checked: boolean;\n control: HTMLElement | null;\n bubbles: boolean;\n}\n\nconst BubbleInput = (props: BubbleInputProps) => {\n const { control, checked, bubbles = true, ...inputProps } = props;\n const ref = React.useRef<HTMLInputElement>(null);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n\n // Bubble checked change to parents (e.g form change event)\n React.useEffect(() => {\n const input = ref.current!;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, 'checked') as PropertyDescriptor;\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event('click', { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n\n return (\n <input\n type=\"radio\"\n aria-hidden\n defaultChecked={checked}\n {...inputProps}\n tabIndex={-1}\n ref={ref}\n style={{\n ...props.style,\n ...controlSize,\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n }}\n />\n );\n};\n\nfunction getState(checked: boolean) {\n return checked ? 'checked' : 'unchecked';\n}\n\nexport {\n createRadioScope,\n //\n Radio,\n RadioIndicator,\n};\nexport type { RadioProps };\n"],"names":["React","composeEventHandlers","useLabelContext","useComposedRefs","createContextScope","Primitive","RovingFocusGroup","createRovingFocusGroupScope","useControllableState","useDirection","Radio","RadioIndicator","createRadioScope","ARROW_KEYS","RADIO_GROUP_NAME","createRadioGroupContet","createRadioGroupScope","useRovingFocusGroupScope","useRadioScope","RadioGroupProvider","useRadioGroupContext","RadioGroup","forwardRef","props","forwardedRef","__scopeRadioGroup","name","ariaLabelledby","defaultValue","value","valueProp","required","orientation","dir","loop","onValueChange","groupProps","labelId","labelledBy","rovingFocusGroupScope","direction","setValue","prop","defaultProp","onChange","ITEM_NAME","RadioGroupItem","disabled","itemProps","context","radioScope","ref","useRef","composedRefs","checked","isArrowKeyPressedRef","useEffect","handleKeyDown","event","includes","key","current","handleKeyUp","document","addEventListener","removeEventListener","preventDefault","onFocus","click","INDICATOR_NAME","RadioGroupIndicator","indicatorProps","Root","Item","Indicator","useSize","usePrevious","Presence","RADIO_NAME","createRadioContext","RadioProvider","useRadioContext","__scopeRadio","onCheck","radioProps","button","setButton","useState","node","hasConsumerStoppedPropagationRef","isFormControl","Boolean","closest","getState","undefined","onClick","isPropagationStopped","stopPropagation","transform","forceMount","BubbleInput","control","bubbles","inputProps","prevChecked","controlSize","input","inputProto","window","HTMLInputElement","prototype","descriptor","Object","getOwnPropertyDescriptor","setChecked","set","Event","call","dispatchEvent","style","position","pointerEvents","opacity","margin"],"version":3,"file":"index.module.js.map"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@radix-ui/react-radio-group",
3
- "version": "0.1.6-rc.4",
3
+ "version": "0.1.6-rc.40",
4
4
  "license": "MIT",
5
5
  "source": "src/index.ts",
6
6
  "main": "dist/index.js",
@@ -18,19 +18,20 @@
18
18
  "dependencies": {
19
19
  "@babel/runtime": "^7.13.10",
20
20
  "@radix-ui/primitive": "0.1.0",
21
- "@radix-ui/react-compose-refs": "0.1.1-rc.1",
22
- "@radix-ui/react-context": "0.1.2-rc.1",
23
- "@radix-ui/react-direction": "0.1.0-rc.4",
24
- "@radix-ui/react-label": "0.1.6-rc.1",
25
- "@radix-ui/react-presence": "0.1.3-rc.1",
26
- "@radix-ui/react-primitive": "0.1.5-rc.1",
27
- "@radix-ui/react-roving-focus": "0.1.6-rc.4",
28
- "@radix-ui/react-use-controllable-state": "0.1.1-rc.1",
29
- "@radix-ui/react-use-previous": "0.1.2-rc.1",
30
- "@radix-ui/react-use-size": "0.1.2-rc.1"
21
+ "@radix-ui/react-compose-refs": "0.1.1-rc.37",
22
+ "@radix-ui/react-context": "0.1.2-rc.37",
23
+ "@radix-ui/react-direction": "0.1.0-rc.40",
24
+ "@radix-ui/react-label": "0.1.6-rc.37",
25
+ "@radix-ui/react-presence": "0.1.3-rc.37",
26
+ "@radix-ui/react-primitive": "0.1.5-rc.37",
27
+ "@radix-ui/react-roving-focus": "0.1.6-rc.40",
28
+ "@radix-ui/react-use-controllable-state": "0.1.1-rc.37",
29
+ "@radix-ui/react-use-previous": "0.1.2-rc.37",
30
+ "@radix-ui/react-use-size": "0.1.2-rc.37"
31
31
  },
32
32
  "peerDependencies": {
33
- "react": "^16.8 || ^17.0 || ^18.0"
33
+ "react": "^16.8 || ^17.0 || ^18.0",
34
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
34
35
  },
35
36
  "homepage": "https://radix-ui.com/primitives",
36
37
  "repository": {