@yamada-ui/radio 1.0.30-dev-20240508155232 → 1.0.30-dev-20240509145447
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/dist/{chunk-J2RMAG2B.mjs → chunk-6SNWQQAY.mjs} +76 -55
- package/dist/chunk-6SNWQQAY.mjs.map +1 -0
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +73 -50
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/radio-group.d.mts +4 -2
- package/dist/radio-group.d.ts +4 -2
- package/dist/radio-group.js +73 -50
- package/dist/radio-group.js.map +1 -1
- package/dist/radio-group.mjs +1 -1
- package/dist/radio.d.mts +60 -3
- package/dist/radio.d.ts +60 -3
- package/dist/radio.js +73 -50
- package/dist/radio.js.map +1 -1
- package/dist/radio.mjs +1 -1
- package/package.json +3 -3
- package/dist/chunk-J2RMAG2B.mjs.map +0 -1
|
@@ -10,7 +10,6 @@ import {
|
|
|
10
10
|
isObject,
|
|
11
11
|
mergeRefs,
|
|
12
12
|
useCallbackRef as useCallbackRef2,
|
|
13
|
-
omitObject as omitObject2,
|
|
14
13
|
getValidChildren
|
|
15
14
|
} from "@yamada-ui/utils";
|
|
16
15
|
import { useCallback as useCallback2, useId as useId2, useRef, forwardRef as forwardRef2 } from "react";
|
|
@@ -20,52 +19,63 @@ import { ui, useMultiComponentStyle, omitThemeProps } from "@yamada-ui/core";
|
|
|
20
19
|
import {
|
|
21
20
|
useFormControl,
|
|
22
21
|
useFormControlProps,
|
|
23
|
-
|
|
22
|
+
formControlProperties
|
|
24
23
|
} from "@yamada-ui/form-control";
|
|
25
24
|
import { trackFocusVisible } from "@yamada-ui/use-focus-visible";
|
|
26
25
|
import {
|
|
27
26
|
cx,
|
|
28
27
|
useCallbackRef,
|
|
29
|
-
omitObject,
|
|
30
28
|
funcAll,
|
|
31
29
|
handlerAll,
|
|
32
30
|
dataAttr,
|
|
33
|
-
|
|
31
|
+
splitObject
|
|
34
32
|
} from "@yamada-ui/utils";
|
|
35
33
|
import { forwardRef, useCallback, useEffect, useId, useState } from "react";
|
|
36
34
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
37
|
-
var useRadio = (
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
35
|
+
var useRadio = ({
|
|
36
|
+
id,
|
|
37
|
+
...props
|
|
38
|
+
}) => {
|
|
39
|
+
id != null ? id : id = useId();
|
|
40
|
+
const {
|
|
41
|
+
id: _id,
|
|
42
|
+
name,
|
|
43
|
+
value,
|
|
44
|
+
isChecked: isCheckedProp,
|
|
45
|
+
defaultIsChecked,
|
|
46
|
+
required,
|
|
47
|
+
disabled,
|
|
48
|
+
readOnly,
|
|
49
|
+
onChange: onChangeProp,
|
|
50
|
+
onFocus: onFocusProp,
|
|
51
|
+
onBlur: onBlurProp,
|
|
52
|
+
...computedProps
|
|
53
|
+
} = useFormControlProps({ id, ...props });
|
|
54
|
+
const [{ "aria-readonly": _ariaReadonly, ...formControlProps }, rest] = splitObject(computedProps, formControlProperties);
|
|
44
55
|
const [isFocusVisible, setIsFocusVisible] = useState(false);
|
|
45
56
|
const [isFocused, setFocused] = useState(false);
|
|
46
57
|
const [isHovered, setHovered] = useState(false);
|
|
47
58
|
const [isActive, setActive] = useState(false);
|
|
48
|
-
const [isChecked, setIsChecked] = useState(!!
|
|
49
|
-
const isControlled =
|
|
50
|
-
const checked = isControlled ?
|
|
59
|
+
const [isChecked, setIsChecked] = useState(!!defaultIsChecked);
|
|
60
|
+
const isControlled = isCheckedProp !== void 0;
|
|
61
|
+
const checked = isControlled ? isCheckedProp : isChecked;
|
|
51
62
|
useEffect(() => {
|
|
52
63
|
return trackFocusVisible(setIsFocusVisible);
|
|
53
64
|
}, []);
|
|
54
65
|
const onChange = useCallbackRef(
|
|
55
66
|
(ev) => {
|
|
56
|
-
var _a;
|
|
57
67
|
if (readOnly || disabled) {
|
|
58
68
|
ev.preventDefault();
|
|
59
69
|
return;
|
|
60
70
|
}
|
|
61
71
|
if (!isControlled)
|
|
62
72
|
setIsChecked(ev.target.checked);
|
|
63
|
-
|
|
73
|
+
onChangeProp == null ? void 0 : onChangeProp(ev);
|
|
64
74
|
},
|
|
65
75
|
[readOnly, disabled, isControlled]
|
|
66
76
|
);
|
|
67
|
-
const
|
|
68
|
-
const
|
|
77
|
+
const onFocus = useCallbackRef(onFocusProp);
|
|
78
|
+
const onBlur = useCallbackRef(onBlurProp);
|
|
69
79
|
const onKeyDown = useCallback(
|
|
70
80
|
({ key }) => {
|
|
71
81
|
if (key === " ")
|
|
@@ -171,6 +181,7 @@ var useRadio = (props) => {
|
|
|
171
181
|
[checked, formControlProps]
|
|
172
182
|
);
|
|
173
183
|
return {
|
|
184
|
+
props: rest,
|
|
174
185
|
isFocusVisible,
|
|
175
186
|
isFocused,
|
|
176
187
|
isHovered,
|
|
@@ -186,49 +197,48 @@ var Radio = forwardRef(
|
|
|
186
197
|
(props, ref) => {
|
|
187
198
|
var _a, _b, _c, _d;
|
|
188
199
|
const group = useRadioGroupContext();
|
|
200
|
+
const { value: groupValue, ...groupProps } = { ...group };
|
|
189
201
|
const control = useFormControl(props);
|
|
190
202
|
const [styles, mergedProps] = useMultiComponentStyle("Radio", {
|
|
191
|
-
...
|
|
203
|
+
...groupProps,
|
|
192
204
|
...props
|
|
193
205
|
});
|
|
194
206
|
const {
|
|
195
207
|
className,
|
|
196
208
|
gap = "0.5rem",
|
|
197
|
-
isRequired = (_a =
|
|
198
|
-
isReadOnly = (_b =
|
|
199
|
-
isDisabled = (_c =
|
|
200
|
-
isInvalid = (_d =
|
|
209
|
+
isRequired = (_a = groupProps.isRequired) != null ? _a : control.isRequired,
|
|
210
|
+
isReadOnly = (_b = groupProps.isReadOnly) != null ? _b : control.isReadOnly,
|
|
211
|
+
isDisabled = (_c = groupProps.isDisabled) != null ? _c : control.isDisabled,
|
|
212
|
+
isInvalid = (_d = groupProps.isInvalid) != null ? _d : control.isInvalid,
|
|
201
213
|
iconProps,
|
|
202
214
|
inputProps,
|
|
203
215
|
labelProps,
|
|
204
216
|
children,
|
|
205
|
-
...
|
|
217
|
+
...computedProps
|
|
206
218
|
} = omitThemeProps(mergedProps);
|
|
207
|
-
const
|
|
208
|
-
|
|
219
|
+
const isChecked = groupValue && computedProps.value ? groupValue === computedProps.value : computedProps.isChecked;
|
|
220
|
+
const onChange = groupProps.onChange && computedProps.value ? funcAll(groupProps.onChange, computedProps.onChange) : computedProps.onChange;
|
|
221
|
+
const {
|
|
222
|
+
getContainerProps,
|
|
223
|
+
getInputProps,
|
|
224
|
+
getIconProps,
|
|
225
|
+
getLabelProps,
|
|
226
|
+
props: rest
|
|
227
|
+
} = useRadio({
|
|
228
|
+
...computedProps,
|
|
209
229
|
isRequired,
|
|
210
230
|
isReadOnly,
|
|
211
231
|
isDisabled,
|
|
212
232
|
isInvalid,
|
|
213
|
-
isChecked
|
|
214
|
-
onChange
|
|
233
|
+
isChecked,
|
|
234
|
+
onChange
|
|
215
235
|
});
|
|
216
236
|
return /* @__PURE__ */ jsxs(
|
|
217
237
|
ui.label,
|
|
218
238
|
{
|
|
219
239
|
className: cx("ui-radio", className),
|
|
220
240
|
...getContainerProps(),
|
|
221
|
-
...
|
|
222
|
-
"id",
|
|
223
|
-
"name",
|
|
224
|
-
"value",
|
|
225
|
-
"defaultValue",
|
|
226
|
-
"defaultIsChecked",
|
|
227
|
-
"isChecked",
|
|
228
|
-
"onChange",
|
|
229
|
-
"onBlur",
|
|
230
|
-
"onFocus"
|
|
231
|
-
]),
|
|
241
|
+
...rest,
|
|
232
242
|
__css: {
|
|
233
243
|
cursor: "pointer",
|
|
234
244
|
position: "relative",
|
|
@@ -282,15 +292,18 @@ var useRadioGroup = ({
|
|
|
282
292
|
id,
|
|
283
293
|
name,
|
|
284
294
|
isNative,
|
|
295
|
+
value: valueProp,
|
|
296
|
+
defaultValue,
|
|
297
|
+
onChange: onChangeProp,
|
|
285
298
|
...props
|
|
286
299
|
}) => {
|
|
287
300
|
id != null ? id : id = useId2();
|
|
288
301
|
name != null ? name : name = `radio-${id}`;
|
|
289
|
-
|
|
302
|
+
const onChangeRef = useCallbackRef2(onChangeProp);
|
|
290
303
|
const [value, setValue] = useControllableState({
|
|
291
|
-
value:
|
|
292
|
-
defaultValue
|
|
293
|
-
onChange:
|
|
304
|
+
value: valueProp,
|
|
305
|
+
defaultValue,
|
|
306
|
+
onChange: onChangeRef
|
|
294
307
|
});
|
|
295
308
|
const containerRef = useRef(null);
|
|
296
309
|
const onFocus = useCallback2(() => {
|
|
@@ -333,6 +346,8 @@ var useRadioGroup = ({
|
|
|
333
346
|
[name, value, onChange, isNative]
|
|
334
347
|
);
|
|
335
348
|
return {
|
|
349
|
+
props,
|
|
350
|
+
id,
|
|
336
351
|
name,
|
|
337
352
|
value,
|
|
338
353
|
setValue,
|
|
@@ -358,8 +373,18 @@ var RadioGroup = forwardRef2(
|
|
|
358
373
|
gap,
|
|
359
374
|
...props
|
|
360
375
|
}, ref) => {
|
|
361
|
-
const {
|
|
362
|
-
|
|
376
|
+
const {
|
|
377
|
+
id,
|
|
378
|
+
name,
|
|
379
|
+
value,
|
|
380
|
+
onChange,
|
|
381
|
+
getContainerProps,
|
|
382
|
+
props: computedProps
|
|
383
|
+
} = useRadioGroup(props);
|
|
384
|
+
const { isRequired, isReadOnly, isDisabled, isInvalid, ...rest } = useFormControl2({
|
|
385
|
+
id,
|
|
386
|
+
...computedProps
|
|
387
|
+
});
|
|
363
388
|
const validChildren = getValidChildren(children);
|
|
364
389
|
let computedChildren = [];
|
|
365
390
|
if (!validChildren.length && items.length) {
|
|
@@ -386,15 +411,11 @@ var RadioGroup = forwardRef2(
|
|
|
386
411
|
ref,
|
|
387
412
|
className: cx2("ui-radio-group", className),
|
|
388
413
|
gap: gap != null ? gap : direction === "row" ? "1rem" : void 0,
|
|
389
|
-
...getContainerProps(
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
"isRequired",
|
|
395
|
-
"isReadOnly"
|
|
396
|
-
])
|
|
397
|
-
),
|
|
414
|
+
...getContainerProps({
|
|
415
|
+
...rest,
|
|
416
|
+
id,
|
|
417
|
+
name
|
|
418
|
+
}),
|
|
398
419
|
direction,
|
|
399
420
|
children: children != null ? children : computedChildren
|
|
400
421
|
}
|
|
@@ -412,4 +433,4 @@ export {
|
|
|
412
433
|
useRadio,
|
|
413
434
|
Radio
|
|
414
435
|
};
|
|
415
|
-
//# sourceMappingURL=chunk-
|
|
436
|
+
//# sourceMappingURL=chunk-6SNWQQAY.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/radio-group.tsx","../src/radio.tsx"],"sourcesContent":["import type { ComponentArgs, ThemeProps, UIPropGetter } from \"@yamada-ui/core\"\nimport type { FormControlOptions } from \"@yamada-ui/form-control\"\nimport { useFormControl } from \"@yamada-ui/form-control\"\nimport type { FlexProps } from \"@yamada-ui/layouts\"\nimport { Flex } from \"@yamada-ui/layouts\"\nimport { useControllableState } from \"@yamada-ui/use-controllable-state\"\nimport type { DOMAttributes, Dict, PropGetter } from \"@yamada-ui/utils\"\nimport {\n createContext,\n cx,\n isObject,\n mergeRefs,\n useCallbackRef,\n getValidChildren,\n} from \"@yamada-ui/utils\"\nimport type { ChangeEvent, ForwardedRef, Ref, ReactElement } from \"react\"\nimport { useCallback, useId, useRef, forwardRef } from \"react\"\nimport type { RadioProps } from \"./radio\"\nimport { Radio } from \"./radio\"\n\nexport type RadioItem<Y extends string | number = string> = RadioProps<Y> & {\n label?: string\n}\n\nconst isEvent = (value: any): value is { target: HTMLInputElement } =>\n value && isObject(value) && isObject(value.target)\n\nexport type UseRadioGroupProps<Y extends string | number = string> = {\n /**\n * The top-level id string that will be applied to the radios.\n * The index of the radio will be appended to this top-level id.\n */\n id?: string\n /**\n * The HTML `name` attribute used for forms.\n */\n name?: string\n /**\n * The value of the radio group.\n */\n value?: Y\n /**\n * The initial value of the radio group.\n */\n defaultValue?: Y\n /**\n * The callback fired when any children radio is checked or unchecked.\n */\n onChange?: (value: Y) => void\n /**\n * If `true`, input elements will receive `checked` attribute instead of `isChecked`.\n *\n * This assumes, you're using native radio inputs.\n *\n * @default false\n */\n isNative?: boolean\n}\n\nexport const useRadioGroup = <\n Y extends string | number = string,\n M extends Dict = Dict,\n>({\n id,\n name,\n isNative,\n value: valueProp,\n defaultValue,\n onChange: onChangeProp,\n ...props\n}: UseRadioGroupProps<Y> & M) => {\n id ??= useId()\n name ??= `radio-${id}`\n\n const onChangeRef = useCallbackRef(onChangeProp)\n\n const [value, setValue] = useControllableState({\n value: valueProp,\n defaultValue,\n onChange: onChangeRef,\n })\n\n const containerRef = useRef<any>(null)\n\n const onFocus = useCallback(() => {\n const container = containerRef.current\n\n if (!container) return\n\n let query = `input:not(:disabled):checked`\n\n let firstInput = container.querySelector(query) as HTMLElement | undefined\n\n if (firstInput) {\n firstInput.focus()\n } else {\n query = `input:not(:disabled)`\n firstInput = container.querySelector(query) as HTMLElement | undefined\n\n firstInput?.focus()\n }\n }, [])\n\n const onChange = useCallback(\n (evOrValue: ChangeEvent<HTMLInputElement> | Y) => {\n const nextValue = (\n isEvent(evOrValue) ? evOrValue.target.value : evOrValue\n ) as Y\n\n setValue(nextValue)\n },\n [setValue],\n )\n\n const getContainerProps: PropGetter = useCallback(\n (props = {}, ref = null) => ({\n ...props,\n ref: mergeRefs(ref, containerRef),\n role: \"group\",\n }),\n [],\n )\n\n const getRadioProps: UIPropGetter<\"input\", { value?: Y }, { value?: Y }> =\n useCallback(\n (props = {}, ref = null) => ({\n ...props,\n ref,\n name,\n [isNative ? \"checked\" : \"isChecked\"]:\n value != null ? props.value === value : undefined,\n onChange,\n }),\n [name, value, onChange, isNative],\n )\n\n return {\n props,\n id,\n name,\n value,\n setValue,\n onChange,\n onFocus,\n getContainerProps,\n getRadioProps,\n }\n}\n\nexport type UseRadioGroupReturn<Y extends string | number = string> =\n ReturnType<typeof useRadioGroup<Y>>\n\nexport type RadioGroupProps<Y extends string | number = string> =\n ThemeProps<\"Radio\"> &\n Omit<FlexProps, \"onChange\"> &\n UseRadioGroupProps<Y> &\n FormControlOptions & {\n /**\n * If provided, generate radios based on items.\n *\n * @default '[]'\n */\n items?: RadioItem<Y>[]\n }\n\ntype RadioGroupContext = ThemeProps<\"Radio\"> &\n FormControlOptions & {\n name: string\n value: string | number\n onChange: (\n evOrValue: ChangeEvent<HTMLInputElement> | string | number,\n ) => void\n }\n\nconst [RadioGroupProvider, useRadioGroupContext] = createContext<\n RadioGroupContext | undefined\n>({\n strict: false,\n name: \"RadioGroupContext\",\n})\n\nexport { useRadioGroupContext }\n\nexport const RadioGroup = forwardRef(\n <Y extends string | number = string>(\n {\n className,\n size,\n variant,\n colorScheme,\n children,\n items = [],\n direction = \"column\",\n gap,\n ...props\n }: RadioGroupProps<Y>,\n ref: ForwardedRef<HTMLDivElement>,\n ) => {\n const {\n id,\n name,\n value,\n onChange,\n getContainerProps,\n props: computedProps,\n } = useRadioGroup(props)\n const { isRequired, isReadOnly, isDisabled, isInvalid, ...rest } =\n useFormControl({\n id,\n ...computedProps,\n })\n\n const validChildren = getValidChildren(children)\n let computedChildren: ReactElement[] = []\n\n if (!validChildren.length && items.length) {\n computedChildren = items.map(({ label, value, ...props }, i) => (\n <Radio key={i} value={value} {...props}>\n {label}\n </Radio>\n ))\n }\n\n return (\n <RadioGroupProvider\n value={\n {\n size,\n variant,\n colorScheme,\n isRequired,\n isReadOnly,\n isDisabled,\n isInvalid,\n name,\n value,\n onChange,\n } as RadioGroupContext\n }\n >\n <Flex\n ref={ref}\n className={cx(\"ui-radio-group\", className)}\n gap={gap ?? (direction === \"row\" ? \"1rem\" : undefined)}\n {...getContainerProps({\n ...rest,\n id,\n name,\n } as DOMAttributes<HTMLElement>)}\n direction={direction}\n >\n {children ?? computedChildren}\n </Flex>\n </RadioGroupProvider>\n )\n },\n) as {\n <Y extends string | number = string>(\n props: RadioGroupProps<Y> & { ref?: Ref<HTMLDivElement> },\n ): JSX.Element\n} & ComponentArgs\n\nRadioGroup.displayName = \"RadioGroup\"\n","import type {\n HTMLUIProps,\n ThemeProps,\n ComponentArgs,\n UIPropGetter,\n} from \"@yamada-ui/core\"\nimport { ui, useMultiComponentStyle, omitThemeProps } from \"@yamada-ui/core\"\nimport type { FormControlOptions } from \"@yamada-ui/form-control\"\nimport {\n useFormControl,\n useFormControlProps,\n formControlProperties,\n} from \"@yamada-ui/form-control\"\nimport { trackFocusVisible } from \"@yamada-ui/use-focus-visible\"\nimport type { Dict, PropGetter } from \"@yamada-ui/utils\"\nimport {\n cx,\n useCallbackRef,\n funcAll,\n handlerAll,\n dataAttr,\n splitObject,\n} from \"@yamada-ui/utils\"\nimport type {\n ForwardedRef,\n Ref,\n ChangeEvent,\n ChangeEventHandler,\n InputHTMLAttributes,\n KeyboardEvent,\n SyntheticEvent,\n DOMAttributes,\n} from \"react\"\nimport { forwardRef, useCallback, useEffect, useId, useState } from \"react\"\nimport { useRadioGroupContext } from \"./radio-group\"\n\nexport type UseRadioProps<Y extends string | number = string> =\n FormControlOptions & {\n /**\n * id assigned to input.\n */\n id?: string\n /**\n * The name of the input field in a radio.\n */\n name?: string\n /**\n * The value to be used in the radio button.\n */\n value?: Y\n /**\n * If `true`, the radio will be initially checked.\n *\n * @default false\n */\n defaultIsChecked?: boolean\n /**\n * If `true`, the radio will be checked.\n *\n * @default false\n */\n isChecked?: boolean\n /**\n * The callback invoked when the checked state changes.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>\n }\n\nexport const useRadio = <\n Y extends string | number = string,\n M extends Dict = Dict,\n>({\n id,\n ...props\n}: UseRadioProps<Y> & M) => {\n id ??= useId()\n const {\n id: _id,\n name,\n value,\n isChecked: isCheckedProp,\n defaultIsChecked,\n required,\n disabled,\n readOnly,\n onChange: onChangeProp,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n ...computedProps\n } = useFormControlProps({ id, ...props })\n const [{ \"aria-readonly\": _ariaReadonly, ...formControlProps }, rest] =\n splitObject(computedProps, formControlProperties)\n\n const [isFocusVisible, setIsFocusVisible] = useState<boolean>(false)\n const [isFocused, setFocused] = useState<boolean>(false)\n const [isHovered, setHovered] = useState<boolean>(false)\n const [isActive, setActive] = useState<boolean>(false)\n\n const [isChecked, setIsChecked] = useState<boolean>(!!defaultIsChecked)\n\n const isControlled = isCheckedProp !== undefined\n const checked = isControlled ? (isCheckedProp as boolean) : isChecked\n\n useEffect(() => {\n return trackFocusVisible(setIsFocusVisible)\n }, [])\n\n const onChange = useCallbackRef(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (readOnly || disabled) {\n ev.preventDefault()\n\n return\n }\n\n if (!isControlled) setIsChecked(ev.target.checked)\n\n onChangeProp?.(ev)\n },\n [readOnly, disabled, isControlled],\n )\n const onFocus = useCallbackRef(onFocusProp)\n const onBlur = useCallbackRef(onBlurProp)\n\n const onKeyDown = useCallback(\n ({ key }: KeyboardEvent<Element>) => {\n if (key === \" \") setActive(true)\n },\n [setActive],\n )\n\n const onKeyUp = useCallback(\n ({ key }: KeyboardEvent<Element>) => {\n if (key === \" \") setActive(false)\n },\n [setActive],\n )\n\n const getContainerProps: UIPropGetter = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n ref,\n \"data-checked\": dataAttr(checked),\n }),\n [checked, formControlProps],\n )\n\n const getIconProps: UIPropGetter<\"span\"> = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n ref,\n \"data-active\": dataAttr(isActive),\n \"data-hover\": dataAttr(isHovered),\n \"data-checked\": dataAttr(checked),\n \"data-focus\": dataAttr(isFocused),\n \"data-focus-visible\": dataAttr(isFocused && isFocusVisible),\n \"aria-hidden\": true,\n onMouseDown: handlerAll(props.onMouseDown, () => setActive(true)),\n onMouseUp: handlerAll(props.onMouseUp, () => setActive(false)),\n onMouseEnter: handlerAll(props.onMouseEnter, () => setHovered(true)),\n onMouseLeave: handlerAll(props.onMouseLeave, () => setHovered(false)),\n }),\n [checked, isActive, isFocused, isFocusVisible, isHovered, formControlProps],\n )\n\n const getInputProps: PropGetter = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n ref,\n id,\n type: \"radio\",\n name,\n value,\n required,\n disabled,\n readOnly,\n checked,\n style: {\n border: \"0px\",\n clip: \"rect(0px, 0px, 0px, 0px)\",\n height: \"1px\",\n width: \"1px\",\n margin: \"-1px\",\n padding: \"0px\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n position: \"absolute\",\n },\n onChange: handlerAll(props.onChange, onChange),\n onBlur: handlerAll(props.onBlur, onBlur, () => setFocused(false)),\n onFocus: handlerAll(props.onFocus, onFocus, () => setFocused(true)),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n onKeyUp: handlerAll(props.onKeyUp, onKeyUp),\n }),\n [\n formControlProps,\n id,\n name,\n value,\n required,\n disabled,\n readOnly,\n checked,\n onChange,\n onBlur,\n onFocus,\n onKeyDown,\n onKeyUp,\n ],\n )\n\n const getLabelProps: PropGetter = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n props,\n ref,\n onMouseDown: handlerAll(props.onMouseDown, (ev: SyntheticEvent) => {\n ev.preventDefault()\n ev.stopPropagation()\n }),\n onTouchStart: handlerAll(props.onTouchStart, (ev: SyntheticEvent) => {\n ev.preventDefault()\n ev.stopPropagation()\n }),\n \"data-checked\": dataAttr(checked),\n }),\n [checked, formControlProps],\n )\n\n return {\n props: rest,\n isFocusVisible,\n isFocused,\n isHovered,\n isActive,\n isChecked: checked,\n getContainerProps,\n getInputProps,\n getIconProps,\n getLabelProps,\n }\n}\n\nexport type UseRadioReturn = ReturnType<typeof useRadio>\n\ntype RadioOptions = {\n iconProps?: HTMLUIProps<\"span\">\n inputProps?: InputHTMLAttributes<HTMLInputElement>\n labelProps?: HTMLUIProps<\"span\">\n}\n\nexport type RadioProps<Y extends string | number = string> = Omit<\n HTMLUIProps<\"label\">,\n keyof UseRadioProps\n> &\n ThemeProps<\"Radio\"> &\n UseRadioProps<Y> &\n RadioOptions\n\n/**\n * `Radio` is a component used for allowing users to select one option from multiple choices.\n *\n * @see Docs https://yamada-ui.com/components/forms/radio\n */\nexport const Radio = forwardRef(\n <Y extends string | number = string>(\n props: RadioProps<Y>,\n ref: ForwardedRef<HTMLInputElement>,\n ) => {\n const group = useRadioGroupContext()\n const { value: groupValue, ...groupProps } = { ...group }\n const control = useFormControl(props)\n const [styles, mergedProps] = useMultiComponentStyle(\"Radio\", {\n ...groupProps,\n ...props,\n })\n const {\n className,\n gap = \"0.5rem\",\n isRequired = groupProps.isRequired ?? control.isRequired,\n isReadOnly = groupProps.isReadOnly ?? control.isReadOnly,\n isDisabled = groupProps.isDisabled ?? control.isDisabled,\n isInvalid = groupProps.isInvalid ?? control.isInvalid,\n iconProps,\n inputProps,\n labelProps,\n children,\n ...computedProps\n } = omitThemeProps(mergedProps)\n\n const isChecked =\n groupValue && computedProps.value\n ? groupValue === computedProps.value\n : computedProps.isChecked\n\n const onChange =\n groupProps.onChange && computedProps.value\n ? funcAll(groupProps.onChange, computedProps.onChange)\n : computedProps.onChange\n\n const {\n getContainerProps,\n getInputProps,\n getIconProps,\n getLabelProps,\n props: rest,\n } = useRadio({\n ...computedProps,\n isRequired,\n isReadOnly,\n isDisabled,\n isInvalid,\n isChecked,\n onChange,\n })\n\n return (\n <ui.label\n className={cx(\"ui-radio\", className)}\n {...getContainerProps()}\n {...rest}\n __css={{\n cursor: \"pointer\",\n position: \"relative\",\n display: \"inline-flex\",\n alignItems: \"center\",\n verticalAlign: \"top\",\n gap,\n ...styles.container,\n }}\n >\n <ui.input\n className=\"ui-radio__input\"\n {...getInputProps(inputProps, ref)}\n />\n\n <ui.span\n className=\"ui-radio__icon\"\n {...getIconProps(iconProps)}\n __css={{\n position: \"relative\",\n display: \"inline-block\",\n userSelect: \"none\",\n ...styles.icon,\n }}\n />\n\n <ui.span\n className=\"ui-radio__label\"\n {...getLabelProps(labelProps as DOMAttributes<HTMLElement>)}\n __css={{ ...styles.label }}\n >\n {children}\n </ui.span>\n </ui.label>\n )\n },\n) as {\n <Y extends string | number = string>(\n props: RadioProps<Y> & { ref?: Ref<HTMLInputElement> },\n ): JSX.Element\n} & ComponentArgs\n\nRadio.displayName = \"Radio\"\n"],"mappings":"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","names":["useFormControl","cx","useCallbackRef","useCallback","useId","forwardRef","props","jsx","useId","useCallbackRef","useCallback","props","forwardRef","useFormControl","value","props","jsx","cx"]}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { Radio, RadioProps, UseRadioProps, UseRadioReturn, useRadio } from './radio.mjs';
|
|
2
2
|
export { RadioGroup, RadioGroupProps, RadioItem, UseRadioGroupProps, UseRadioGroupReturn, useRadioGroup } from './radio-group.mjs';
|
|
3
|
+
import 'react';
|
|
3
4
|
import '@yamada-ui/core';
|
|
4
5
|
import '@yamada-ui/form-control';
|
|
5
6
|
import '@yamada-ui/utils';
|
|
6
|
-
import 'react';
|
|
7
7
|
import '@yamada-ui/layouts';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { Radio, RadioProps, UseRadioProps, UseRadioReturn, useRadio } from './radio.js';
|
|
2
2
|
export { RadioGroup, RadioGroupProps, RadioItem, UseRadioGroupProps, UseRadioGroupReturn, useRadioGroup } from './radio-group.js';
|
|
3
|
+
import 'react';
|
|
3
4
|
import '@yamada-ui/core';
|
|
4
5
|
import '@yamada-ui/form-control';
|
|
5
6
|
import '@yamada-ui/utils';
|
|
6
|
-
import 'react';
|
|
7
7
|
import '@yamada-ui/layouts';
|
package/dist/index.js
CHANGED
|
@@ -47,15 +47,18 @@ var useRadioGroup = ({
|
|
|
47
47
|
id,
|
|
48
48
|
name,
|
|
49
49
|
isNative,
|
|
50
|
+
value: valueProp,
|
|
51
|
+
defaultValue,
|
|
52
|
+
onChange: onChangeProp,
|
|
50
53
|
...props
|
|
51
54
|
}) => {
|
|
52
55
|
id != null ? id : id = (0, import_react.useId)();
|
|
53
56
|
name != null ? name : name = `radio-${id}`;
|
|
54
|
-
|
|
57
|
+
const onChangeRef = (0, import_utils.useCallbackRef)(onChangeProp);
|
|
55
58
|
const [value, setValue] = (0, import_use_controllable_state.useControllableState)({
|
|
56
|
-
value:
|
|
57
|
-
defaultValue
|
|
58
|
-
onChange:
|
|
59
|
+
value: valueProp,
|
|
60
|
+
defaultValue,
|
|
61
|
+
onChange: onChangeRef
|
|
59
62
|
});
|
|
60
63
|
const containerRef = (0, import_react.useRef)(null);
|
|
61
64
|
const onFocus = (0, import_react.useCallback)(() => {
|
|
@@ -98,6 +101,8 @@ var useRadioGroup = ({
|
|
|
98
101
|
[name, value, onChange, isNative]
|
|
99
102
|
);
|
|
100
103
|
return {
|
|
104
|
+
props,
|
|
105
|
+
id,
|
|
101
106
|
name,
|
|
102
107
|
value,
|
|
103
108
|
setValue,
|
|
@@ -123,8 +128,18 @@ var RadioGroup = (0, import_react.forwardRef)(
|
|
|
123
128
|
gap,
|
|
124
129
|
...props
|
|
125
130
|
}, ref) => {
|
|
126
|
-
const {
|
|
127
|
-
|
|
131
|
+
const {
|
|
132
|
+
id,
|
|
133
|
+
name,
|
|
134
|
+
value,
|
|
135
|
+
onChange,
|
|
136
|
+
getContainerProps,
|
|
137
|
+
props: computedProps
|
|
138
|
+
} = useRadioGroup(props);
|
|
139
|
+
const { isRequired, isReadOnly, isDisabled, isInvalid, ...rest } = (0, import_form_control.useFormControl)({
|
|
140
|
+
id,
|
|
141
|
+
...computedProps
|
|
142
|
+
});
|
|
128
143
|
const validChildren = (0, import_utils.getValidChildren)(children);
|
|
129
144
|
let computedChildren = [];
|
|
130
145
|
if (!validChildren.length && items.length) {
|
|
@@ -151,15 +166,11 @@ var RadioGroup = (0, import_react.forwardRef)(
|
|
|
151
166
|
ref,
|
|
152
167
|
className: (0, import_utils.cx)("ui-radio-group", className),
|
|
153
168
|
gap: gap != null ? gap : direction === "row" ? "1rem" : void 0,
|
|
154
|
-
...getContainerProps(
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
"isRequired",
|
|
160
|
-
"isReadOnly"
|
|
161
|
-
])
|
|
162
|
-
),
|
|
169
|
+
...getContainerProps({
|
|
170
|
+
...rest,
|
|
171
|
+
id,
|
|
172
|
+
name
|
|
173
|
+
}),
|
|
163
174
|
direction,
|
|
164
175
|
children: children != null ? children : computedChildren
|
|
165
176
|
}
|
|
@@ -172,38 +183,50 @@ RadioGroup.displayName = "RadioGroup";
|
|
|
172
183
|
|
|
173
184
|
// src/radio.tsx
|
|
174
185
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
175
|
-
var useRadio = (
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
186
|
+
var useRadio = ({
|
|
187
|
+
id,
|
|
188
|
+
...props
|
|
189
|
+
}) => {
|
|
190
|
+
id != null ? id : id = (0, import_react2.useId)();
|
|
191
|
+
const {
|
|
192
|
+
id: _id,
|
|
193
|
+
name,
|
|
194
|
+
value,
|
|
195
|
+
isChecked: isCheckedProp,
|
|
196
|
+
defaultIsChecked,
|
|
197
|
+
required,
|
|
198
|
+
disabled,
|
|
199
|
+
readOnly,
|
|
200
|
+
onChange: onChangeProp,
|
|
201
|
+
onFocus: onFocusProp,
|
|
202
|
+
onBlur: onBlurProp,
|
|
203
|
+
...computedProps
|
|
204
|
+
} = (0, import_form_control2.useFormControlProps)({ id, ...props });
|
|
205
|
+
const [{ "aria-readonly": _ariaReadonly, ...formControlProps }, rest] = (0, import_utils2.splitObject)(computedProps, import_form_control2.formControlProperties);
|
|
182
206
|
const [isFocusVisible, setIsFocusVisible] = (0, import_react2.useState)(false);
|
|
183
207
|
const [isFocused, setFocused] = (0, import_react2.useState)(false);
|
|
184
208
|
const [isHovered, setHovered] = (0, import_react2.useState)(false);
|
|
185
209
|
const [isActive, setActive] = (0, import_react2.useState)(false);
|
|
186
|
-
const [isChecked, setIsChecked] = (0, import_react2.useState)(!!
|
|
187
|
-
const isControlled =
|
|
188
|
-
const checked = isControlled ?
|
|
210
|
+
const [isChecked, setIsChecked] = (0, import_react2.useState)(!!defaultIsChecked);
|
|
211
|
+
const isControlled = isCheckedProp !== void 0;
|
|
212
|
+
const checked = isControlled ? isCheckedProp : isChecked;
|
|
189
213
|
(0, import_react2.useEffect)(() => {
|
|
190
214
|
return (0, import_use_focus_visible.trackFocusVisible)(setIsFocusVisible);
|
|
191
215
|
}, []);
|
|
192
216
|
const onChange = (0, import_utils2.useCallbackRef)(
|
|
193
217
|
(ev) => {
|
|
194
|
-
var _a;
|
|
195
218
|
if (readOnly || disabled) {
|
|
196
219
|
ev.preventDefault();
|
|
197
220
|
return;
|
|
198
221
|
}
|
|
199
222
|
if (!isControlled)
|
|
200
223
|
setIsChecked(ev.target.checked);
|
|
201
|
-
|
|
224
|
+
onChangeProp == null ? void 0 : onChangeProp(ev);
|
|
202
225
|
},
|
|
203
226
|
[readOnly, disabled, isControlled]
|
|
204
227
|
);
|
|
205
|
-
const
|
|
206
|
-
const
|
|
228
|
+
const onFocus = (0, import_utils2.useCallbackRef)(onFocusProp);
|
|
229
|
+
const onBlur = (0, import_utils2.useCallbackRef)(onBlurProp);
|
|
207
230
|
const onKeyDown = (0, import_react2.useCallback)(
|
|
208
231
|
({ key }) => {
|
|
209
232
|
if (key === " ")
|
|
@@ -309,6 +332,7 @@ var useRadio = (props) => {
|
|
|
309
332
|
[checked, formControlProps]
|
|
310
333
|
);
|
|
311
334
|
return {
|
|
335
|
+
props: rest,
|
|
312
336
|
isFocusVisible,
|
|
313
337
|
isFocused,
|
|
314
338
|
isHovered,
|
|
@@ -324,49 +348,48 @@ var Radio = (0, import_react2.forwardRef)(
|
|
|
324
348
|
(props, ref) => {
|
|
325
349
|
var _a, _b, _c, _d;
|
|
326
350
|
const group = useRadioGroupContext();
|
|
351
|
+
const { value: groupValue, ...groupProps } = { ...group };
|
|
327
352
|
const control = (0, import_form_control2.useFormControl)(props);
|
|
328
353
|
const [styles, mergedProps] = (0, import_core.useMultiComponentStyle)("Radio", {
|
|
329
|
-
...
|
|
354
|
+
...groupProps,
|
|
330
355
|
...props
|
|
331
356
|
});
|
|
332
357
|
const {
|
|
333
358
|
className,
|
|
334
359
|
gap = "0.5rem",
|
|
335
|
-
isRequired = (_a =
|
|
336
|
-
isReadOnly = (_b =
|
|
337
|
-
isDisabled = (_c =
|
|
338
|
-
isInvalid = (_d =
|
|
360
|
+
isRequired = (_a = groupProps.isRequired) != null ? _a : control.isRequired,
|
|
361
|
+
isReadOnly = (_b = groupProps.isReadOnly) != null ? _b : control.isReadOnly,
|
|
362
|
+
isDisabled = (_c = groupProps.isDisabled) != null ? _c : control.isDisabled,
|
|
363
|
+
isInvalid = (_d = groupProps.isInvalid) != null ? _d : control.isInvalid,
|
|
339
364
|
iconProps,
|
|
340
365
|
inputProps,
|
|
341
366
|
labelProps,
|
|
342
367
|
children,
|
|
343
|
-
...
|
|
368
|
+
...computedProps
|
|
344
369
|
} = (0, import_core.omitThemeProps)(mergedProps);
|
|
345
|
-
const
|
|
346
|
-
|
|
370
|
+
const isChecked = groupValue && computedProps.value ? groupValue === computedProps.value : computedProps.isChecked;
|
|
371
|
+
const onChange = groupProps.onChange && computedProps.value ? (0, import_utils2.funcAll)(groupProps.onChange, computedProps.onChange) : computedProps.onChange;
|
|
372
|
+
const {
|
|
373
|
+
getContainerProps,
|
|
374
|
+
getInputProps,
|
|
375
|
+
getIconProps,
|
|
376
|
+
getLabelProps,
|
|
377
|
+
props: rest
|
|
378
|
+
} = useRadio({
|
|
379
|
+
...computedProps,
|
|
347
380
|
isRequired,
|
|
348
381
|
isReadOnly,
|
|
349
382
|
isDisabled,
|
|
350
383
|
isInvalid,
|
|
351
|
-
isChecked
|
|
352
|
-
onChange
|
|
384
|
+
isChecked,
|
|
385
|
+
onChange
|
|
353
386
|
});
|
|
354
387
|
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
355
388
|
import_core.ui.label,
|
|
356
389
|
{
|
|
357
390
|
className: (0, import_utils2.cx)("ui-radio", className),
|
|
358
391
|
...getContainerProps(),
|
|
359
|
-
...
|
|
360
|
-
"id",
|
|
361
|
-
"name",
|
|
362
|
-
"value",
|
|
363
|
-
"defaultValue",
|
|
364
|
-
"defaultIsChecked",
|
|
365
|
-
"isChecked",
|
|
366
|
-
"onChange",
|
|
367
|
-
"onBlur",
|
|
368
|
-
"onFocus"
|
|
369
|
-
]),
|
|
392
|
+
...rest,
|
|
370
393
|
__css: {
|
|
371
394
|
cursor: "pointer",
|
|
372
395
|
position: "relative",
|