@tamagui/radio-headless 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/cjs/BubbleInput.cjs +82 -0
- package/dist/cjs/BubbleInput.js +65 -0
- package/dist/cjs/BubbleInput.js.map +6 -0
- package/dist/cjs/BubbleInput.native.js +86 -0
- package/dist/cjs/BubbleInput.native.js.map +1 -0
- package/dist/cjs/index.cjs +19 -0
- package/dist/cjs/index.js +16 -0
- package/dist/cjs/index.js.map +6 -0
- package/dist/cjs/index.native.js +22 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/useRadioGroup.cjs +191 -0
- package/dist/cjs/useRadioGroup.js +160 -0
- package/dist/cjs/useRadioGroup.js.map +6 -0
- package/dist/cjs/useRadioGroup.native.js +206 -0
- package/dist/cjs/useRadioGroup.native.js.map +1 -0
- package/dist/cjs/utils.cjs +28 -0
- package/dist/cjs/utils.js +23 -0
- package/dist/cjs/utils.js.map +6 -0
- package/dist/cjs/utils.native.js +31 -0
- package/dist/cjs/utils.native.js.map +1 -0
- package/dist/esm/BubbleInput.js +43 -0
- package/dist/esm/BubbleInput.js.map +6 -0
- package/dist/esm/BubbleInput.mjs +48 -0
- package/dist/esm/BubbleInput.mjs.map +1 -0
- package/dist/esm/BubbleInput.native.js +49 -0
- package/dist/esm/BubbleInput.native.js.map +1 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +6 -0
- package/dist/esm/index.mjs +3 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +3 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/useRadioGroup.js +153 -0
- package/dist/esm/useRadioGroup.js.map +6 -0
- package/dist/esm/useRadioGroup.mjs +165 -0
- package/dist/esm/useRadioGroup.mjs.map +1 -0
- package/dist/esm/useRadioGroup.native.js +178 -0
- package/dist/esm/useRadioGroup.native.js.map +1 -0
- package/dist/esm/utils.js +7 -0
- package/dist/esm/utils.js.map +6 -0
- package/dist/esm/utils.mjs +5 -0
- package/dist/esm/utils.mjs.map +1 -0
- package/dist/esm/utils.native.js +5 -0
- package/dist/esm/utils.native.js.map +1 -0
- package/dist/jsx/BubbleInput.js +43 -0
- package/dist/jsx/BubbleInput.js.map +6 -0
- package/dist/jsx/BubbleInput.mjs +48 -0
- package/dist/jsx/BubbleInput.mjs.map +1 -0
- package/dist/jsx/BubbleInput.native.js +86 -0
- package/dist/jsx/BubbleInput.native.js.map +1 -0
- package/dist/jsx/index.js +3 -0
- package/dist/jsx/index.js.map +6 -0
- package/dist/jsx/index.mjs +3 -0
- package/dist/jsx/index.mjs.map +1 -0
- package/dist/jsx/index.native.js +22 -0
- package/dist/jsx/index.native.js.map +1 -0
- package/dist/jsx/useRadioGroup.js +153 -0
- package/dist/jsx/useRadioGroup.js.map +6 -0
- package/dist/jsx/useRadioGroup.mjs +165 -0
- package/dist/jsx/useRadioGroup.mjs.map +1 -0
- package/dist/jsx/useRadioGroup.native.js +206 -0
- package/dist/jsx/useRadioGroup.native.js.map +1 -0
- package/dist/jsx/utils.js +7 -0
- package/dist/jsx/utils.js.map +6 -0
- package/dist/jsx/utils.mjs +5 -0
- package/dist/jsx/utils.mjs.map +1 -0
- package/dist/jsx/utils.native.js +31 -0
- package/dist/jsx/utils.native.js.map +1 -0
- package/package.json +61 -0
- package/src/BubbleInput.tsx +59 -0
- package/src/index.ts +2 -0
- package/src/useRadioGroup.tsx +260 -0
- package/src/utils.tsx +3 -0
- package/types/BubbleInput.d.ts +11 -0
- package/types/BubbleInput.d.ts.map +1 -0
- package/types/index.d.ts +3 -0
- package/types/index.d.ts.map +1 -0
- package/types/useRadioGroup.d.ts +100 -0
- package/types/useRadioGroup.d.ts.map +1 -0
- package/types/utils.d.ts +2 -0
- package/types/utils.d.ts.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc","ignoreList":[]}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
2
|
+
import { isWeb } from "@tamagui/constants";
|
|
3
|
+
|
|
4
|
+
import { composeEventHandlers } from "@tamagui/helpers";
|
|
5
|
+
import { useLabelContext } from "@tamagui/label";
|
|
6
|
+
import { useControllableState } from "@tamagui/use-controllable-state";
|
|
7
|
+
import { useContext, useEffect, useRef, useState } from "react";
|
|
8
|
+
import { BubbleInput } from "./BubbleInput";
|
|
9
|
+
import { getState } from "./utils";
|
|
10
|
+
import { jsx } from "react/jsx-runtime";
|
|
11
|
+
function useRadioGroup(params) {
|
|
12
|
+
const {
|
|
13
|
+
value: valueProp,
|
|
14
|
+
onValueChange,
|
|
15
|
+
defaultValue,
|
|
16
|
+
required,
|
|
17
|
+
disabled,
|
|
18
|
+
name,
|
|
19
|
+
native,
|
|
20
|
+
accentColor,
|
|
21
|
+
orientation,
|
|
22
|
+
ref
|
|
23
|
+
} = params, [value, setValue] = useControllableState({
|
|
24
|
+
prop: valueProp,
|
|
25
|
+
defaultProp: defaultValue,
|
|
26
|
+
onChange: onValueChange
|
|
27
|
+
});
|
|
28
|
+
return {
|
|
29
|
+
providerValue: {
|
|
30
|
+
value,
|
|
31
|
+
onChange: setValue,
|
|
32
|
+
required,
|
|
33
|
+
disabled,
|
|
34
|
+
name,
|
|
35
|
+
native,
|
|
36
|
+
accentColor
|
|
37
|
+
},
|
|
38
|
+
frameAttrs: {
|
|
39
|
+
role: "radiogroup",
|
|
40
|
+
"aria-orientation": orientation,
|
|
41
|
+
"data-disabled": disabled ? "" : void 0
|
|
42
|
+
},
|
|
43
|
+
rovingFocusGroupAttrs: {
|
|
44
|
+
orientation,
|
|
45
|
+
loop: !0
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const ARROW_KEYS = ["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"], useRadioGroupItem = (params) => {
|
|
50
|
+
const {
|
|
51
|
+
radioGroupContext,
|
|
52
|
+
value,
|
|
53
|
+
labelledBy: ariaLabelledby,
|
|
54
|
+
disabled: itemDisabled,
|
|
55
|
+
ref: refProp,
|
|
56
|
+
id,
|
|
57
|
+
onPress,
|
|
58
|
+
onKeyDown,
|
|
59
|
+
onFocus
|
|
60
|
+
} = params, {
|
|
61
|
+
value: groupValue,
|
|
62
|
+
disabled,
|
|
63
|
+
required,
|
|
64
|
+
onChange,
|
|
65
|
+
name,
|
|
66
|
+
native,
|
|
67
|
+
accentColor
|
|
68
|
+
} = useContext(radioGroupContext), [button, setButton] = useState(null), hasConsumerStoppedPropagationRef = useRef(!1), ref = useRef(null), composedRefs = useComposedRefs(refProp, (node) => setButton(node), ref), isArrowKeyPressedRef = useRef(!1), isFormControl = isWeb ? button ? !!button.closest("form") : !0 : !1, checked = groupValue === value, labelId = useLabelContext(button), labelledBy = ariaLabelledby || labelId;
|
|
69
|
+
useEffect(() => {
|
|
70
|
+
if (isWeb) {
|
|
71
|
+
const handleKeyDown = (event) => {
|
|
72
|
+
ARROW_KEYS.includes(event.key) && (isArrowKeyPressedRef.current = !0);
|
|
73
|
+
}, handleKeyUp = () => {
|
|
74
|
+
isArrowKeyPressedRef.current = !1;
|
|
75
|
+
};
|
|
76
|
+
return document.addEventListener("keydown", handleKeyDown), document.addEventListener("keyup", handleKeyUp), () => {
|
|
77
|
+
document.removeEventListener("keydown", handleKeyDown), document.removeEventListener("keyup", handleKeyUp);
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}, []);
|
|
81
|
+
const isDisabled = disabled || itemDisabled;
|
|
82
|
+
return {
|
|
83
|
+
providerValue: {
|
|
84
|
+
checked
|
|
85
|
+
},
|
|
86
|
+
checked,
|
|
87
|
+
isFormControl,
|
|
88
|
+
bubbleInput: /* @__PURE__ */ jsx(
|
|
89
|
+
BubbleInput,
|
|
90
|
+
{
|
|
91
|
+
isHidden: !native,
|
|
92
|
+
control: button,
|
|
93
|
+
bubbles: !hasConsumerStoppedPropagationRef.current,
|
|
94
|
+
name,
|
|
95
|
+
value,
|
|
96
|
+
checked,
|
|
97
|
+
required,
|
|
98
|
+
disabled: isDisabled,
|
|
99
|
+
...isWeb && native && {
|
|
100
|
+
accentColor,
|
|
101
|
+
id
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
),
|
|
105
|
+
native,
|
|
106
|
+
frameAttrs: {
|
|
107
|
+
"data-state": getState(checked),
|
|
108
|
+
"data-disabled": isDisabled ? "" : void 0,
|
|
109
|
+
role: "radio",
|
|
110
|
+
"aria-labelledby": labelledBy,
|
|
111
|
+
"aria-checked": checked,
|
|
112
|
+
"aria-required": required,
|
|
113
|
+
disabled: isDisabled,
|
|
114
|
+
ref: composedRefs,
|
|
115
|
+
...isWeb && {
|
|
116
|
+
type: "button",
|
|
117
|
+
value
|
|
118
|
+
},
|
|
119
|
+
id,
|
|
120
|
+
onPress: composeEventHandlers(onPress, (event) => {
|
|
121
|
+
checked || onChange?.(value), isFormControl && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
122
|
+
}),
|
|
123
|
+
...isWeb && {
|
|
124
|
+
onKeyDown: composeEventHandlers(onKeyDown, (event) => {
|
|
125
|
+
(event.key === "Enter" || event.key === " ") && (checked || onChange?.(value));
|
|
126
|
+
}),
|
|
127
|
+
onFocus: composeEventHandlers(onFocus, () => {
|
|
128
|
+
isArrowKeyPressedRef.current && ref.current?.click();
|
|
129
|
+
})
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
rovingFocusGroupAttrs: {
|
|
133
|
+
asChild: "except-style",
|
|
134
|
+
focusable: !isDisabled,
|
|
135
|
+
active: checked
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
function useRadioGroupItemIndicator(params) {
|
|
140
|
+
const { radioGroupItemContext, disabled, ...rest } = params, { checked } = useContext(radioGroupItemContext);
|
|
141
|
+
return {
|
|
142
|
+
checked,
|
|
143
|
+
"data-state": getState(checked),
|
|
144
|
+
"data-disabled": disabled ? "" : void 0,
|
|
145
|
+
...rest
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
export {
|
|
149
|
+
useRadioGroup,
|
|
150
|
+
useRadioGroupItem,
|
|
151
|
+
useRadioGroupItemIndicator
|
|
152
|
+
};
|
|
153
|
+
//# sourceMappingURL=useRadioGroup.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/useRadioGroup.tsx"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
2
|
+
import { isWeb } from "@tamagui/constants";
|
|
3
|
+
import { composeEventHandlers } from "@tamagui/helpers";
|
|
4
|
+
import { useLabelContext } from "@tamagui/label";
|
|
5
|
+
import { useControllableState } from "@tamagui/use-controllable-state";
|
|
6
|
+
import { useContext, useEffect, useRef, useState } from "react";
|
|
7
|
+
import { BubbleInput } from "./BubbleInput.mjs";
|
|
8
|
+
import { getState } from "./utils.mjs";
|
|
9
|
+
import { jsx } from "react/jsx-runtime";
|
|
10
|
+
function useRadioGroup(params) {
|
|
11
|
+
const {
|
|
12
|
+
value: valueProp,
|
|
13
|
+
onValueChange,
|
|
14
|
+
defaultValue,
|
|
15
|
+
required,
|
|
16
|
+
disabled,
|
|
17
|
+
name,
|
|
18
|
+
native,
|
|
19
|
+
accentColor,
|
|
20
|
+
orientation,
|
|
21
|
+
ref
|
|
22
|
+
} = params,
|
|
23
|
+
[value, setValue] = useControllableState({
|
|
24
|
+
prop: valueProp,
|
|
25
|
+
defaultProp: defaultValue,
|
|
26
|
+
onChange: onValueChange
|
|
27
|
+
});
|
|
28
|
+
return {
|
|
29
|
+
providerValue: {
|
|
30
|
+
value,
|
|
31
|
+
onChange: setValue,
|
|
32
|
+
required,
|
|
33
|
+
disabled,
|
|
34
|
+
name,
|
|
35
|
+
native,
|
|
36
|
+
accentColor
|
|
37
|
+
},
|
|
38
|
+
frameAttrs: {
|
|
39
|
+
role: "radiogroup",
|
|
40
|
+
"aria-orientation": orientation,
|
|
41
|
+
"data-disabled": disabled ? "" : void 0
|
|
42
|
+
},
|
|
43
|
+
rovingFocusGroupAttrs: {
|
|
44
|
+
orientation,
|
|
45
|
+
loop: !0
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const ARROW_KEYS = ["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"],
|
|
50
|
+
useRadioGroupItem = params => {
|
|
51
|
+
const {
|
|
52
|
+
radioGroupContext,
|
|
53
|
+
value,
|
|
54
|
+
labelledBy: ariaLabelledby,
|
|
55
|
+
disabled: itemDisabled,
|
|
56
|
+
ref: refProp,
|
|
57
|
+
id,
|
|
58
|
+
onPress,
|
|
59
|
+
onKeyDown,
|
|
60
|
+
onFocus
|
|
61
|
+
} = params,
|
|
62
|
+
{
|
|
63
|
+
value: groupValue,
|
|
64
|
+
disabled,
|
|
65
|
+
required,
|
|
66
|
+
onChange,
|
|
67
|
+
name,
|
|
68
|
+
native,
|
|
69
|
+
accentColor
|
|
70
|
+
} = useContext(radioGroupContext),
|
|
71
|
+
[button, setButton] = useState(null),
|
|
72
|
+
hasConsumerStoppedPropagationRef = useRef(!1),
|
|
73
|
+
ref = useRef(null),
|
|
74
|
+
composedRefs = useComposedRefs(refProp, node => setButton(node), ref),
|
|
75
|
+
isArrowKeyPressedRef = useRef(!1),
|
|
76
|
+
isFormControl = isWeb ? button ? !!button.closest("form") : !0 : !1,
|
|
77
|
+
checked = groupValue === value,
|
|
78
|
+
labelId = useLabelContext(button),
|
|
79
|
+
labelledBy = ariaLabelledby || labelId;
|
|
80
|
+
useEffect(() => {
|
|
81
|
+
if (isWeb) {
|
|
82
|
+
const handleKeyDown = event => {
|
|
83
|
+
ARROW_KEYS.includes(event.key) && (isArrowKeyPressedRef.current = !0);
|
|
84
|
+
},
|
|
85
|
+
handleKeyUp = () => {
|
|
86
|
+
isArrowKeyPressedRef.current = !1;
|
|
87
|
+
};
|
|
88
|
+
return document.addEventListener("keydown", handleKeyDown), document.addEventListener("keyup", handleKeyUp), () => {
|
|
89
|
+
document.removeEventListener("keydown", handleKeyDown), document.removeEventListener("keyup", handleKeyUp);
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
}, []);
|
|
93
|
+
const isDisabled = disabled || itemDisabled;
|
|
94
|
+
return {
|
|
95
|
+
providerValue: {
|
|
96
|
+
checked
|
|
97
|
+
},
|
|
98
|
+
checked,
|
|
99
|
+
isFormControl,
|
|
100
|
+
bubbleInput: /* @__PURE__ */jsx(BubbleInput, {
|
|
101
|
+
isHidden: !native,
|
|
102
|
+
control: button,
|
|
103
|
+
bubbles: !hasConsumerStoppedPropagationRef.current,
|
|
104
|
+
name,
|
|
105
|
+
value,
|
|
106
|
+
checked,
|
|
107
|
+
required,
|
|
108
|
+
disabled: isDisabled,
|
|
109
|
+
...(isWeb && native && {
|
|
110
|
+
accentColor,
|
|
111
|
+
id
|
|
112
|
+
})
|
|
113
|
+
}),
|
|
114
|
+
native,
|
|
115
|
+
frameAttrs: {
|
|
116
|
+
"data-state": getState(checked),
|
|
117
|
+
"data-disabled": isDisabled ? "" : void 0,
|
|
118
|
+
role: "radio",
|
|
119
|
+
"aria-labelledby": labelledBy,
|
|
120
|
+
"aria-checked": checked,
|
|
121
|
+
"aria-required": required,
|
|
122
|
+
disabled: isDisabled,
|
|
123
|
+
ref: composedRefs,
|
|
124
|
+
...(isWeb && {
|
|
125
|
+
type: "button",
|
|
126
|
+
value
|
|
127
|
+
}),
|
|
128
|
+
id,
|
|
129
|
+
onPress: composeEventHandlers(onPress, event => {
|
|
130
|
+
checked || onChange?.(value), isFormControl && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
131
|
+
}),
|
|
132
|
+
...(isWeb && {
|
|
133
|
+
onKeyDown: composeEventHandlers(onKeyDown, event => {
|
|
134
|
+
(event.key === "Enter" || event.key === " ") && (checked || onChange?.(value));
|
|
135
|
+
}),
|
|
136
|
+
onFocus: composeEventHandlers(onFocus, () => {
|
|
137
|
+
isArrowKeyPressedRef.current && ref.current?.click();
|
|
138
|
+
})
|
|
139
|
+
})
|
|
140
|
+
},
|
|
141
|
+
rovingFocusGroupAttrs: {
|
|
142
|
+
asChild: "except-style",
|
|
143
|
+
focusable: !isDisabled,
|
|
144
|
+
active: checked
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
function useRadioGroupItemIndicator(params) {
|
|
149
|
+
const {
|
|
150
|
+
radioGroupItemContext,
|
|
151
|
+
disabled,
|
|
152
|
+
...rest
|
|
153
|
+
} = params,
|
|
154
|
+
{
|
|
155
|
+
checked
|
|
156
|
+
} = useContext(radioGroupItemContext);
|
|
157
|
+
return {
|
|
158
|
+
checked,
|
|
159
|
+
"data-state": getState(checked),
|
|
160
|
+
"data-disabled": disabled ? "" : void 0,
|
|
161
|
+
...rest
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
export { useRadioGroup, useRadioGroupItem, useRadioGroupItemIndicator };
|
|
165
|
+
//# sourceMappingURL=useRadioGroup.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useComposedRefs","isWeb","composeEventHandlers","useLabelContext","useControllableState","useContext","useEffect","useRef","useState","BubbleInput","getState","jsx","useRadioGroup","params","value","valueProp","onValueChange","defaultValue","required","disabled","name","native","accentColor","orientation","ref","setValue","prop","defaultProp","onChange","providerValue","frameAttrs","role","rovingFocusGroupAttrs","loop","ARROW_KEYS","useRadioGroupItem","radioGroupContext","labelledBy","ariaLabelledby","itemDisabled","refProp","id","onPress","onKeyDown","onFocus","groupValue","button","setButton","hasConsumerStoppedPropagationRef","composedRefs","node","isArrowKeyPressedRef","isFormControl","closest","checked","labelId","handleKeyDown","event","includes","key","current","handleKeyUp","document","addEventListener","removeEventListener","isDisabled","bubbleInput","isHidden","control","bubbles","type","isPropagationStopped","stopPropagation","click","asChild","focusable","active","useRadioGroupItemIndicator","radioGroupItemContext","rest"],"sources":["../../src/useRadioGroup.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
3
|
+
import { isWeb } from "@tamagui/constants";
|
|
4
|
+
import { registerFocusable } from "@tamagui/focusable";
|
|
5
|
+
import { composeEventHandlers } from "@tamagui/helpers";
|
|
6
|
+
import { useLabelContext } from "@tamagui/label";
|
|
7
|
+
import { useControllableState } from "@tamagui/use-controllable-state";
|
|
8
|
+
import { useContext, useEffect, useRef, useState } from "react";
|
|
9
|
+
import { BubbleInput } from "./BubbleInput.native.js";
|
|
10
|
+
import { getState } from "./utils.native.js";
|
|
11
|
+
function useRadioGroup(params) {
|
|
12
|
+
var {
|
|
13
|
+
value: valueProp,
|
|
14
|
+
onValueChange,
|
|
15
|
+
defaultValue,
|
|
16
|
+
required,
|
|
17
|
+
disabled,
|
|
18
|
+
name,
|
|
19
|
+
native,
|
|
20
|
+
accentColor,
|
|
21
|
+
orientation,
|
|
22
|
+
ref
|
|
23
|
+
} = params,
|
|
24
|
+
[value, setValue] = useControllableState({
|
|
25
|
+
prop: valueProp,
|
|
26
|
+
defaultProp: defaultValue,
|
|
27
|
+
onChange: onValueChange
|
|
28
|
+
});
|
|
29
|
+
return {
|
|
30
|
+
providerValue: {
|
|
31
|
+
value,
|
|
32
|
+
onChange: setValue,
|
|
33
|
+
required,
|
|
34
|
+
disabled,
|
|
35
|
+
name,
|
|
36
|
+
native,
|
|
37
|
+
accentColor
|
|
38
|
+
},
|
|
39
|
+
frameAttrs: {
|
|
40
|
+
role: "radiogroup",
|
|
41
|
+
"aria-orientation": orientation,
|
|
42
|
+
"data-disabled": disabled ? "" : void 0
|
|
43
|
+
},
|
|
44
|
+
rovingFocusGroupAttrs: {
|
|
45
|
+
orientation,
|
|
46
|
+
loop: !0
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
var ARROW_KEYS = ["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"],
|
|
51
|
+
useRadioGroupItem = function (params) {
|
|
52
|
+
var {
|
|
53
|
+
radioGroupContext,
|
|
54
|
+
value,
|
|
55
|
+
labelledBy: ariaLabelledby,
|
|
56
|
+
disabled: itemDisabled,
|
|
57
|
+
ref: refProp,
|
|
58
|
+
id,
|
|
59
|
+
onPress,
|
|
60
|
+
onKeyDown,
|
|
61
|
+
onFocus
|
|
62
|
+
} = params,
|
|
63
|
+
{
|
|
64
|
+
value: groupValue,
|
|
65
|
+
disabled,
|
|
66
|
+
required,
|
|
67
|
+
onChange,
|
|
68
|
+
name,
|
|
69
|
+
native,
|
|
70
|
+
accentColor
|
|
71
|
+
} = useContext(radioGroupContext),
|
|
72
|
+
[button, setButton] = useState(null),
|
|
73
|
+
hasConsumerStoppedPropagationRef = useRef(!1),
|
|
74
|
+
ref = useRef(null),
|
|
75
|
+
composedRefs = useComposedRefs(refProp, function (node) {
|
|
76
|
+
return setButton(node);
|
|
77
|
+
}, ref),
|
|
78
|
+
isArrowKeyPressedRef = useRef(!1),
|
|
79
|
+
isFormControl = isWeb ? button ? !!button.closest("form") : !0 : !1,
|
|
80
|
+
checked = groupValue === value,
|
|
81
|
+
labelId = useLabelContext(button),
|
|
82
|
+
labelledBy = ariaLabelledby || labelId;
|
|
83
|
+
useEffect(function () {
|
|
84
|
+
if (isWeb) {
|
|
85
|
+
var handleKeyDown = function (event) {
|
|
86
|
+
ARROW_KEYS.includes(event.key) && (isArrowKeyPressedRef.current = !0);
|
|
87
|
+
},
|
|
88
|
+
handleKeyUp = function () {
|
|
89
|
+
isArrowKeyPressedRef.current = !1;
|
|
90
|
+
};
|
|
91
|
+
return document.addEventListener("keydown", handleKeyDown), document.addEventListener("keyup", handleKeyUp), function () {
|
|
92
|
+
document.removeEventListener("keydown", handleKeyDown), document.removeEventListener("keyup", handleKeyUp);
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}, []), useEffect(function () {
|
|
96
|
+
if (id && !disabled) return registerFocusable(id, {
|
|
97
|
+
focusAndSelect: function () {
|
|
98
|
+
onChange?.(value);
|
|
99
|
+
},
|
|
100
|
+
focus: function () {}
|
|
101
|
+
});
|
|
102
|
+
}, [id, value, disabled]);
|
|
103
|
+
var isDisabled = disabled || itemDisabled;
|
|
104
|
+
return {
|
|
105
|
+
providerValue: {
|
|
106
|
+
checked
|
|
107
|
+
},
|
|
108
|
+
checked,
|
|
109
|
+
isFormControl,
|
|
110
|
+
bubbleInput: /* @__PURE__ */_jsx(BubbleInput, {
|
|
111
|
+
isHidden: !native,
|
|
112
|
+
control: button,
|
|
113
|
+
bubbles: !hasConsumerStoppedPropagationRef.current,
|
|
114
|
+
name,
|
|
115
|
+
value,
|
|
116
|
+
checked,
|
|
117
|
+
required,
|
|
118
|
+
disabled: isDisabled,
|
|
119
|
+
...(isWeb && native && {
|
|
120
|
+
accentColor,
|
|
121
|
+
id
|
|
122
|
+
})
|
|
123
|
+
}),
|
|
124
|
+
native,
|
|
125
|
+
frameAttrs: {
|
|
126
|
+
"data-state": getState(checked),
|
|
127
|
+
"data-disabled": isDisabled ? "" : void 0,
|
|
128
|
+
role: "radio",
|
|
129
|
+
"aria-labelledby": labelledBy,
|
|
130
|
+
"aria-checked": checked,
|
|
131
|
+
"aria-required": required,
|
|
132
|
+
disabled: isDisabled,
|
|
133
|
+
ref: composedRefs,
|
|
134
|
+
...(isWeb && {
|
|
135
|
+
type: "button",
|
|
136
|
+
value
|
|
137
|
+
}),
|
|
138
|
+
id,
|
|
139
|
+
onPress: composeEventHandlers(onPress, function (event) {
|
|
140
|
+
checked || onChange?.(value), isFormControl && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
141
|
+
}),
|
|
142
|
+
...(isWeb && {
|
|
143
|
+
onKeyDown: composeEventHandlers(onKeyDown, function (event) {
|
|
144
|
+
(event.key === "Enter" || event.key === " ") && (checked || onChange?.(value));
|
|
145
|
+
}),
|
|
146
|
+
onFocus: composeEventHandlers(onFocus, function () {
|
|
147
|
+
if (isArrowKeyPressedRef.current) {
|
|
148
|
+
var _ref_current;
|
|
149
|
+
(_ref_current = ref.current) === null || _ref_current === void 0 || _ref_current.click();
|
|
150
|
+
}
|
|
151
|
+
})
|
|
152
|
+
})
|
|
153
|
+
},
|
|
154
|
+
rovingFocusGroupAttrs: {
|
|
155
|
+
asChild: "except-style",
|
|
156
|
+
focusable: !isDisabled,
|
|
157
|
+
active: checked
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
function useRadioGroupItemIndicator(params) {
|
|
162
|
+
var {
|
|
163
|
+
radioGroupItemContext,
|
|
164
|
+
disabled,
|
|
165
|
+
...rest
|
|
166
|
+
} = params,
|
|
167
|
+
{
|
|
168
|
+
checked
|
|
169
|
+
} = useContext(radioGroupItemContext);
|
|
170
|
+
return {
|
|
171
|
+
checked,
|
|
172
|
+
"data-state": getState(checked),
|
|
173
|
+
"data-disabled": disabled ? "" : void 0,
|
|
174
|
+
...rest
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
export { useRadioGroup, useRadioGroupItem, useRadioGroupItemIndicator };
|
|
178
|
+
//# sourceMappingURL=useRadioGroup.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","useComposedRefs","isWeb","registerFocusable","composeEventHandlers","useLabelContext","useControllableState","useContext","useEffect","useRef","useState","BubbleInput","getState","useRadioGroup","params","value","valueProp","onValueChange","defaultValue","required","disabled","name","native","accentColor","orientation","ref","setValue","prop","defaultProp","onChange","providerValue","frameAttrs","role","rovingFocusGroupAttrs","loop","ARROW_KEYS","useRadioGroupItem","radioGroupContext","labelledBy","ariaLabelledby","itemDisabled","refProp","id","onPress","onKeyDown","onFocus","groupValue","button","setButton","hasConsumerStoppedPropagationRef","composedRefs","node","isArrowKeyPressedRef","isFormControl","closest","checked","labelId","handleKeyDown","event","includes","key","current","handleKeyUp","document","addEventListener","removeEventListener","focusAndSelect","focus","isDisabled","bubbleInput","isHidden","control","bubbles","type","isPropagationStopped","stopPropagation","_ref_current","click","asChild","focusable","active","useRadioGroupItemIndicator","radioGroupItemContext","rest"],"sources":["../../src/useRadioGroup.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getState","checked"],"sources":["../../src/utils.tsx"],"sourcesContent":[null],"mappings":"AAAO,SAASA,SAASC,OAAA,EAAkB;EACzC,OAAOA,OAAA,GAAU,YAAY;AAC/B","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getState","checked"],"sources":["../../src/utils.tsx"],"sourcesContent":[null],"mappings":"AAAO,SAASA,SAASC,OAAA,EAAkB;EACzC,OAAOA,OAAA,GAAU,YAAY;AAC/B","ignoreList":[]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { usePrevious } from "@tamagui/use-previous";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
const BubbleInput = (props) => {
|
|
5
|
+
const { checked, bubbles = !0, control, isHidden, accentColor, ...inputProps } = props, ref = React.useRef(null), prevChecked = usePrevious(checked);
|
|
6
|
+
return React.useEffect(() => {
|
|
7
|
+
const input = ref.current, inputProto = window.HTMLInputElement.prototype, setChecked = Object.getOwnPropertyDescriptor(
|
|
8
|
+
inputProto,
|
|
9
|
+
"checked"
|
|
10
|
+
).set;
|
|
11
|
+
if (prevChecked !== checked && setChecked) {
|
|
12
|
+
const event = new Event("click", { bubbles });
|
|
13
|
+
setChecked.call(input, checked), input.dispatchEvent(event);
|
|
14
|
+
}
|
|
15
|
+
}, [prevChecked, checked, bubbles]), /* @__PURE__ */ jsx(
|
|
16
|
+
"input",
|
|
17
|
+
{
|
|
18
|
+
type: "radio",
|
|
19
|
+
defaultChecked: checked,
|
|
20
|
+
...inputProps,
|
|
21
|
+
tabIndex: -1,
|
|
22
|
+
ref,
|
|
23
|
+
"aria-hidden": isHidden,
|
|
24
|
+
style: {
|
|
25
|
+
...isHidden ? {
|
|
26
|
+
// ...controlSize,
|
|
27
|
+
position: "absolute",
|
|
28
|
+
pointerEvents: "none",
|
|
29
|
+
opacity: 0,
|
|
30
|
+
margin: 0
|
|
31
|
+
} : {
|
|
32
|
+
appearance: "auto",
|
|
33
|
+
accentColor
|
|
34
|
+
},
|
|
35
|
+
...props.style
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
);
|
|
39
|
+
};
|
|
40
|
+
export {
|
|
41
|
+
BubbleInput
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=BubbleInput.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/BubbleInput.tsx"],
|
|
4
|
+
"mappings": "AAAA,OAAO,WAAW;AAClB,SAAS,mBAAmB;AAgCxB;AAtBG,MAAM,cAAc,CAAC,UAA4B;AACtD,QAAM,EAAE,SAAS,UAAU,IAAM,SAAS,UAAU,aAAa,GAAG,WAAW,IAAI,OAC7E,MAAM,MAAM,OAAyB,IAAI,GACzC,cAAc,YAAY,OAAO;AAGvC,eAAM,UAAU,MAAM;AACpB,UAAM,QAAQ,IAAI,SACZ,aAAa,OAAO,iBAAiB,WAKrC,aAJa,OAAO;AAAA,MACxB;AAAA,MACA;AAAA,IACF,EAC8B;AAC9B,QAAI,gBAAgB,WAAW,YAAY;AACzC,YAAM,QAAQ,IAAI,MAAM,SAAS,EAAE,QAAQ,CAAC;AAC5C,iBAAW,KAAK,OAAO,OAAO,GAC9B,MAAM,cAAc,KAAK;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,aAAa,SAAS,OAAO,CAAC,GAGhC;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,gBAAgB;AAAA,MACf,GAAG;AAAA,MACJ,UAAU;AAAA,MACV;AAAA,MACA,eAAa;AAAA,MACb,OAAO;AAAA,QACL,GAAI,WACA;AAAA;AAAA,UAEE,UAAU;AAAA,UACV,eAAe;AAAA,UACf,SAAS;AAAA,UACT,QAAQ;AAAA,QACV,IACA;AAAA,UACE,YAAY;AAAA,UACZ;AAAA,QACF;AAAA,QAEJ,GAAG,MAAM;AAAA,MACX;AAAA;AAAA,EACF;AAEJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|