@yamada-ui/radio 1.2.16-next-20241126134247 → 1.3.0-dev-20241127021420
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/chunk-27VC2SJI.mjs +30 -0
- package/dist/chunk-27VC2SJI.mjs.map +1 -0
- package/dist/chunk-AOVCDCCW.mjs +88 -0
- package/dist/chunk-AOVCDCCW.mjs.map +1 -0
- package/dist/chunk-DO4JVJRM.mjs +103 -0
- package/dist/chunk-DO4JVJRM.mjs.map +1 -0
- package/dist/{chunk-PUPRIHYJ.mjs → chunk-HFS5TQ47.mjs} +8 -115
- package/dist/chunk-HFS5TQ47.mjs.map +1 -0
- package/dist/chunk-JLL7F3NY.mjs +120 -0
- package/dist/chunk-JLL7F3NY.mjs.map +1 -0
- package/dist/chunk-NP4GICPF.mjs +124 -0
- package/dist/chunk-NP4GICPF.mjs.map +1 -0
- package/dist/chunk-Q5GTUIUF.mjs +56 -0
- package/dist/chunk-Q5GTUIUF.mjs.map +1 -0
- package/dist/chunk-YDYOLCNG.mjs +94 -0
- package/dist/chunk-YDYOLCNG.mjs.map +1 -0
- package/dist/chunk-YRIADAI7.mjs +32 -0
- package/dist/chunk-YRIADAI7.mjs.map +1 -0
- package/dist/chunk-ZLJHOIFP.mjs +26 -0
- package/dist/chunk-ZLJHOIFP.mjs.map +1 -0
- package/dist/index.d.mts +11 -4
- package/dist/index.d.ts +11 -4
- package/dist/index.js +344 -37
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +29 -5
- package/dist/radio-card-addon.d.mts +8 -0
- package/dist/radio-card-addon.d.ts +8 -0
- package/dist/radio-card-addon.js +69 -0
- package/dist/radio-card-addon.js.map +1 -0
- package/dist/radio-card-addon.mjs +9 -0
- package/dist/radio-card-addon.mjs.map +1 -0
- package/dist/radio-card-description.d.mts +8 -0
- package/dist/radio-card-description.d.ts +8 -0
- package/dist/radio-card-description.js +67 -0
- package/dist/radio-card-description.js.map +1 -0
- package/dist/radio-card-description.mjs +9 -0
- package/dist/radio-card-description.mjs.map +1 -0
- package/dist/radio-card-group.d.mts +33 -0
- package/dist/radio-card-group.d.ts +33 -0
- package/dist/radio-card-group.js +584 -0
- package/dist/radio-card-group.js.map +1 -0
- package/dist/radio-card-group.mjs +15 -0
- package/dist/radio-card-group.mjs.map +1 -0
- package/dist/radio-card-label.d.mts +22 -0
- package/dist/radio-card-label.d.ts +22 -0
- package/dist/radio-card-label.js +93 -0
- package/dist/radio-card-label.js.map +1 -0
- package/dist/radio-card-label.mjs +9 -0
- package/dist/radio-card-label.mjs.map +1 -0
- package/dist/radio-card.d.mts +61 -0
- package/dist/radio-card.d.ts +61 -0
- package/dist/radio-card.js +412 -0
- package/dist/radio-card.js.map +1 -0
- package/dist/radio-card.mjs +13 -0
- package/dist/radio-card.mjs.map +1 -0
- package/dist/radio-context.d.mts +25 -3
- package/dist/radio-context.d.ts +25 -3
- package/dist/radio-context.js +16 -0
- package/dist/radio-context.js.map +1 -1
- package/dist/radio-context.mjs +9 -1
- package/dist/radio-group.d.mts +15 -58
- package/dist/radio-group.d.ts +15 -58
- package/dist/radio-group.js +56 -39
- package/dist/radio-group.js.map +1 -1
- package/dist/radio-group.mjs +7 -7
- package/dist/radio.d.mts +14 -80
- package/dist/radio.d.ts +14 -80
- package/dist/radio.js +31 -17
- package/dist/radio.js.map +1 -1
- package/dist/radio.mjs +5 -6
- package/dist/use-radio-group.d.mts +56 -0
- package/dist/use-radio-group.d.ts +56 -0
- package/dist/use-radio-group.js +111 -0
- package/dist/use-radio-group.js.map +1 -0
- package/dist/use-radio-group.mjs +8 -0
- package/dist/use-radio-group.mjs.map +1 -0
- package/dist/use-radio.d.mts +87 -0
- package/dist/use-radio.d.ts +87 -0
- package/dist/use-radio.js +207 -0
- package/dist/use-radio.js.map +1 -0
- package/dist/use-radio.mjs +8 -0
- package/dist/use-radio.mjs.map +1 -0
- package/package.json +7 -7
- package/dist/chunk-6FMV6NX2.mjs +0 -14
- package/dist/chunk-6FMV6NX2.mjs.map +0 -1
- package/dist/chunk-PUPRIHYJ.mjs.map +0 -1
- package/dist/chunk-QAADRIFZ.mjs +0 -177
- package/dist/chunk-QAADRIFZ.mjs.map +0 -1
package/dist/radio.d.mts
CHANGED
@@ -1,91 +1,25 @@
|
|
1
|
-
import
|
2
|
-
import {
|
3
|
-
import
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import { Dict } from '@yamada-ui/utils';
|
1
|
+
import { HTMLUIProps, ThemeProps, ComponentArgs } from '@yamada-ui/core';
|
2
|
+
import { RefAttributes, ReactElement, ReactNode, InputHTMLAttributes } from 'react';
|
3
|
+
import { UseRadioProps } from './use-radio.mjs';
|
4
|
+
import '@yamada-ui/form-control';
|
5
|
+
import '@yamada-ui/utils';
|
7
6
|
|
8
|
-
interface
|
9
|
-
/**
|
10
|
-
* id assigned to input.
|
11
|
-
*/
|
12
|
-
id?: string;
|
13
|
-
/**
|
14
|
-
* The name of the input field in a radio.
|
15
|
-
*/
|
16
|
-
name?: string;
|
17
|
-
/**
|
18
|
-
* If `true`, the radio will be checked.
|
19
|
-
*
|
20
|
-
* @default false
|
21
|
-
*/
|
22
|
-
checked?: boolean;
|
23
|
-
/**
|
24
|
-
* If `true`, the radio will be initially checked.
|
25
|
-
*
|
26
|
-
* @default false
|
27
|
-
*/
|
28
|
-
defaultChecked?: boolean;
|
7
|
+
interface RadioOptions {
|
29
8
|
/**
|
30
|
-
*
|
31
|
-
*
|
32
|
-
* @default false
|
33
|
-
*
|
34
|
-
* @deprecated Use `defaultChecked` instead.
|
9
|
+
* The label of the radio.
|
35
10
|
*/
|
36
|
-
|
11
|
+
label?: ReactNode;
|
37
12
|
/**
|
38
|
-
*
|
39
|
-
*
|
40
|
-
* @default false
|
41
|
-
*
|
42
|
-
* @deprecated Use `checked` instead.
|
13
|
+
* Props for icon element.
|
43
14
|
*/
|
44
|
-
|
15
|
+
iconProps?: HTMLUIProps<"span">;
|
45
16
|
/**
|
46
|
-
*
|
17
|
+
* Props for input element.
|
47
18
|
*/
|
48
|
-
|
19
|
+
inputProps?: InputHTMLAttributes<HTMLInputElement>;
|
49
20
|
/**
|
50
|
-
*
|
21
|
+
* Props for label element.
|
51
22
|
*/
|
52
|
-
onChange?: ChangeEventHandler<HTMLInputElement>;
|
53
|
-
}
|
54
|
-
declare const useRadio: <Y extends number | string = string, M extends Dict = Dict<any>>({ id, ...props }: M & UseRadioProps<Y>) => {
|
55
|
-
active: boolean;
|
56
|
-
checked: boolean;
|
57
|
-
focused: boolean;
|
58
|
-
focusVisible: boolean;
|
59
|
-
hovered: boolean;
|
60
|
-
props: Omit<Omit<{
|
61
|
-
_active?: {} | undefined;
|
62
|
-
_focus?: {} | undefined;
|
63
|
-
_focusVisible?: {} | undefined;
|
64
|
-
_hover?: {} | undefined;
|
65
|
-
_invalid?: {} | undefined;
|
66
|
-
id: string | undefined;
|
67
|
-
"aria-disabled": boolean | undefined;
|
68
|
-
"aria-invalid": boolean | undefined;
|
69
|
-
"aria-readonly": boolean | undefined;
|
70
|
-
"aria-required": boolean | undefined;
|
71
|
-
"data-readonly": boolean | "false" | "true";
|
72
|
-
disabled: boolean | undefined;
|
73
|
-
readOnly: boolean | undefined;
|
74
|
-
required: boolean | undefined;
|
75
|
-
onBlur: (event: react.FocusEvent<HTMLElement, Element>) => void;
|
76
|
-
onFocus: (event: react.FocusEvent<HTMLElement, Element>) => void;
|
77
|
-
} & Omit<{
|
78
|
-
id: string;
|
79
|
-
} & Omit<M & UseRadioProps<Y>, "id"> & _yamada_ui_form_control.UseFormControlProps<HTMLElement>, "disabled" | "isDisabled" | "id" | "onFocus" | "onBlur" | "readOnly" | "required" | "isInvalid" | "isReadOnly" | "isRequired">, "value" | "name" | "defaultChecked" | "id" | "onChange" | "checked" | "defaultIsChecked" | "isChecked">, "disabled" | "aria-disabled" | "_active" | "_focus" | "_focusVisible" | "_hover" | "_invalid" | "aria-invalid" | "aria-readonly" | "aria-required" | "onFocus" | "onBlur" | "readOnly" | "required" | "data-readonly">;
|
80
|
-
getContainerProps: PropGetter<"label", undefined>;
|
81
|
-
getIconProps: PropGetter<"span", undefined>;
|
82
|
-
getInputProps: PropGetter<"input", undefined>;
|
83
|
-
getLabelProps: PropGetter<"span", undefined>;
|
84
|
-
};
|
85
|
-
type UseRadioReturn = ReturnType<typeof useRadio>;
|
86
|
-
interface RadioOptions {
|
87
|
-
iconProps?: HTMLUIProps<"span">;
|
88
|
-
inputProps?: InputHTMLAttributes<HTMLInputElement>;
|
89
23
|
labelProps?: HTMLUIProps<"span">;
|
90
24
|
}
|
91
25
|
interface RadioProps<Y extends number | string = string> extends Omit<HTMLUIProps<"label">, keyof UseRadioProps>, ThemeProps<"Radio">, UseRadioProps<Y>, RadioOptions {
|
@@ -99,4 +33,4 @@ declare const Radio: {
|
|
99
33
|
<Y extends number | string = string>(props: RadioProps<Y> & RefAttributes<HTMLInputElement>): ReactElement;
|
100
34
|
} & ComponentArgs;
|
101
35
|
|
102
|
-
export { Radio, type RadioProps
|
36
|
+
export { Radio, type RadioProps };
|
package/dist/radio.d.ts
CHANGED
@@ -1,91 +1,25 @@
|
|
1
|
-
import
|
2
|
-
import {
|
3
|
-
import
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import { Dict } from '@yamada-ui/utils';
|
1
|
+
import { HTMLUIProps, ThemeProps, ComponentArgs } from '@yamada-ui/core';
|
2
|
+
import { RefAttributes, ReactElement, ReactNode, InputHTMLAttributes } from 'react';
|
3
|
+
import { UseRadioProps } from './use-radio.js';
|
4
|
+
import '@yamada-ui/form-control';
|
5
|
+
import '@yamada-ui/utils';
|
7
6
|
|
8
|
-
interface
|
9
|
-
/**
|
10
|
-
* id assigned to input.
|
11
|
-
*/
|
12
|
-
id?: string;
|
13
|
-
/**
|
14
|
-
* The name of the input field in a radio.
|
15
|
-
*/
|
16
|
-
name?: string;
|
17
|
-
/**
|
18
|
-
* If `true`, the radio will be checked.
|
19
|
-
*
|
20
|
-
* @default false
|
21
|
-
*/
|
22
|
-
checked?: boolean;
|
23
|
-
/**
|
24
|
-
* If `true`, the radio will be initially checked.
|
25
|
-
*
|
26
|
-
* @default false
|
27
|
-
*/
|
28
|
-
defaultChecked?: boolean;
|
7
|
+
interface RadioOptions {
|
29
8
|
/**
|
30
|
-
*
|
31
|
-
*
|
32
|
-
* @default false
|
33
|
-
*
|
34
|
-
* @deprecated Use `defaultChecked` instead.
|
9
|
+
* The label of the radio.
|
35
10
|
*/
|
36
|
-
|
11
|
+
label?: ReactNode;
|
37
12
|
/**
|
38
|
-
*
|
39
|
-
*
|
40
|
-
* @default false
|
41
|
-
*
|
42
|
-
* @deprecated Use `checked` instead.
|
13
|
+
* Props for icon element.
|
43
14
|
*/
|
44
|
-
|
15
|
+
iconProps?: HTMLUIProps<"span">;
|
45
16
|
/**
|
46
|
-
*
|
17
|
+
* Props for input element.
|
47
18
|
*/
|
48
|
-
|
19
|
+
inputProps?: InputHTMLAttributes<HTMLInputElement>;
|
49
20
|
/**
|
50
|
-
*
|
21
|
+
* Props for label element.
|
51
22
|
*/
|
52
|
-
onChange?: ChangeEventHandler<HTMLInputElement>;
|
53
|
-
}
|
54
|
-
declare const useRadio: <Y extends number | string = string, M extends Dict = Dict<any>>({ id, ...props }: M & UseRadioProps<Y>) => {
|
55
|
-
active: boolean;
|
56
|
-
checked: boolean;
|
57
|
-
focused: boolean;
|
58
|
-
focusVisible: boolean;
|
59
|
-
hovered: boolean;
|
60
|
-
props: Omit<Omit<{
|
61
|
-
_active?: {} | undefined;
|
62
|
-
_focus?: {} | undefined;
|
63
|
-
_focusVisible?: {} | undefined;
|
64
|
-
_hover?: {} | undefined;
|
65
|
-
_invalid?: {} | undefined;
|
66
|
-
id: string | undefined;
|
67
|
-
"aria-disabled": boolean | undefined;
|
68
|
-
"aria-invalid": boolean | undefined;
|
69
|
-
"aria-readonly": boolean | undefined;
|
70
|
-
"aria-required": boolean | undefined;
|
71
|
-
"data-readonly": boolean | "false" | "true";
|
72
|
-
disabled: boolean | undefined;
|
73
|
-
readOnly: boolean | undefined;
|
74
|
-
required: boolean | undefined;
|
75
|
-
onBlur: (event: react.FocusEvent<HTMLElement, Element>) => void;
|
76
|
-
onFocus: (event: react.FocusEvent<HTMLElement, Element>) => void;
|
77
|
-
} & Omit<{
|
78
|
-
id: string;
|
79
|
-
} & Omit<M & UseRadioProps<Y>, "id"> & _yamada_ui_form_control.UseFormControlProps<HTMLElement>, "disabled" | "isDisabled" | "id" | "onFocus" | "onBlur" | "readOnly" | "required" | "isInvalid" | "isReadOnly" | "isRequired">, "value" | "name" | "defaultChecked" | "id" | "onChange" | "checked" | "defaultIsChecked" | "isChecked">, "disabled" | "aria-disabled" | "_active" | "_focus" | "_focusVisible" | "_hover" | "_invalid" | "aria-invalid" | "aria-readonly" | "aria-required" | "onFocus" | "onBlur" | "readOnly" | "required" | "data-readonly">;
|
80
|
-
getContainerProps: PropGetter<"label", undefined>;
|
81
|
-
getIconProps: PropGetter<"span", undefined>;
|
82
|
-
getInputProps: PropGetter<"input", undefined>;
|
83
|
-
getLabelProps: PropGetter<"span", undefined>;
|
84
|
-
};
|
85
|
-
type UseRadioReturn = ReturnType<typeof useRadio>;
|
86
|
-
interface RadioOptions {
|
87
|
-
iconProps?: HTMLUIProps<"span">;
|
88
|
-
inputProps?: InputHTMLAttributes<HTMLInputElement>;
|
89
23
|
labelProps?: HTMLUIProps<"span">;
|
90
24
|
}
|
91
25
|
interface RadioProps<Y extends number | string = string> extends Omit<HTMLUIProps<"label">, keyof UseRadioProps>, ThemeProps<"Radio">, UseRadioProps<Y>, RadioOptions {
|
@@ -99,4 +33,4 @@ declare const Radio: {
|
|
99
33
|
<Y extends number | string = string>(props: RadioProps<Y> & RefAttributes<HTMLInputElement>): ReactElement;
|
100
34
|
} & ComponentArgs;
|
101
35
|
|
102
|
-
export { Radio, type RadioProps
|
36
|
+
export { Radio, type RadioProps };
|
package/dist/radio.js
CHANGED
@@ -21,15 +21,13 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
21
21
|
// src/radio.tsx
|
22
22
|
var radio_exports = {};
|
23
23
|
__export(radio_exports, {
|
24
|
-
Radio: () => Radio
|
25
|
-
useRadio: () => useRadio
|
24
|
+
Radio: () => Radio
|
26
25
|
});
|
27
26
|
module.exports = __toCommonJS(radio_exports);
|
28
27
|
var import_core = require("@yamada-ui/core");
|
29
|
-
var
|
30
|
-
var
|
31
|
-
var
|
32
|
-
var import_react = require("react");
|
28
|
+
var import_form_control2 = require("@yamada-ui/form-control");
|
29
|
+
var import_utils3 = require("@yamada-ui/utils");
|
30
|
+
var import_react2 = require("react");
|
33
31
|
|
34
32
|
// src/radio-context.ts
|
35
33
|
var import_utils = require("@yamada-ui/utils");
|
@@ -37,9 +35,20 @@ var [RadioGroupProvider, useRadioGroupContext] = (0, import_utils.createContext)
|
|
37
35
|
name: "RadioGroupContext",
|
38
36
|
strict: false
|
39
37
|
});
|
38
|
+
var [RadioCardGroupProvider, useRadioCardGroupContext] = (0, import_utils.createContext)({
|
39
|
+
name: "RadioCardGroupContext",
|
40
|
+
strict: false
|
41
|
+
});
|
42
|
+
var [RadioCardProvider, useRadioCardContext] = (0, import_utils.createContext)({
|
43
|
+
name: "RadioCardContext",
|
44
|
+
errorMessage: `useRadioCardContext returned is 'undefined'. Seems you forgot to wrap the components in "<RadioCard />"`
|
45
|
+
});
|
40
46
|
|
41
|
-
// src/radio.
|
42
|
-
var
|
47
|
+
// src/use-radio.ts
|
48
|
+
var import_form_control = require("@yamada-ui/form-control");
|
49
|
+
var import_use_focus_visible = require("@yamada-ui/use-focus-visible");
|
50
|
+
var import_utils2 = require("@yamada-ui/utils");
|
51
|
+
var import_react = require("react");
|
43
52
|
var useRadio = ({
|
44
53
|
id,
|
45
54
|
...props
|
@@ -111,9 +120,11 @@ var useRadio = ({
|
|
111
120
|
...formControlProps,
|
112
121
|
...props2,
|
113
122
|
ref,
|
114
|
-
"data-checked": (0, import_utils2.dataAttr)(resolvedChecked)
|
123
|
+
"data-checked": (0, import_utils2.dataAttr)(resolvedChecked),
|
124
|
+
"data-focus": (0, import_utils2.dataAttr)(focused),
|
125
|
+
"data-focus-visible": (0, import_utils2.dataAttr)(focused && focusVisible)
|
115
126
|
}),
|
116
|
-
[resolvedChecked, formControlProps]
|
127
|
+
[resolvedChecked, formControlProps, focused, focusVisible]
|
117
128
|
);
|
118
129
|
const getIconProps = (0, import_react.useCallback)(
|
119
130
|
(props2 = {}, ref = null) => ({
|
@@ -210,12 +221,15 @@ var useRadio = ({
|
|
210
221
|
getLabelProps
|
211
222
|
};
|
212
223
|
};
|
213
|
-
|
224
|
+
|
225
|
+
// src/radio.tsx
|
226
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
227
|
+
var Radio = (0, import_react2.forwardRef)(
|
214
228
|
(props, ref) => {
|
215
229
|
var _a, _b, _c, _d, _e;
|
216
230
|
const group = useRadioGroupContext();
|
217
231
|
const { value: groupValue, ...groupProps } = { ...group };
|
218
|
-
const control = (0,
|
232
|
+
const control = (0, import_form_control2.useFormControl)(props);
|
219
233
|
const [styles, mergedProps] = (0, import_core.useComponentMultiStyle)("Radio", {
|
220
234
|
...groupProps,
|
221
235
|
...props
|
@@ -228,6 +242,7 @@ var Radio = (0, import_react.forwardRef)(
|
|
228
242
|
isInvalid = (_b = groupProps.isInvalid) != null ? _b : control.isInvalid,
|
229
243
|
isReadOnly = (_c = groupProps.isReadOnly) != null ? _c : control.isReadOnly,
|
230
244
|
isRequired = (_d = groupProps.isRequired) != null ? _d : control.isRequired,
|
245
|
+
label,
|
231
246
|
iconProps,
|
232
247
|
inputProps,
|
233
248
|
labelProps,
|
@@ -235,7 +250,7 @@ var Radio = (0, import_react.forwardRef)(
|
|
235
250
|
} = (0, import_core.omitThemeProps)(mergedProps);
|
236
251
|
(_e = computedProps.checked) != null ? _e : computedProps.checked = computedProps.isChecked;
|
237
252
|
const checkedProp = groupValue && computedProps.value ? groupValue === computedProps.value : computedProps.checked;
|
238
|
-
const onChange = groupProps.onChange && computedProps.value ? (0,
|
253
|
+
const onChange = groupProps.onChange && computedProps.value ? (0, import_utils3.funcAll)(groupProps.onChange, computedProps.onChange) : computedProps.onChange;
|
239
254
|
const {
|
240
255
|
checked,
|
241
256
|
props: rest,
|
@@ -256,7 +271,7 @@ var Radio = (0, import_react.forwardRef)(
|
|
256
271
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
257
272
|
import_core.ui.label,
|
258
273
|
{
|
259
|
-
className: (0,
|
274
|
+
className: (0, import_utils3.cx)("ui-radio", className),
|
260
275
|
...getContainerProps(rest),
|
261
276
|
__css: {
|
262
277
|
alignItems: "center",
|
@@ -300,7 +315,7 @@ var Radio = (0, import_react.forwardRef)(
|
|
300
315
|
className: "ui-radio__label",
|
301
316
|
...getLabelProps(labelProps),
|
302
317
|
__css: { ...styles.label },
|
303
|
-
children
|
318
|
+
children: children != null ? children : label
|
304
319
|
}
|
305
320
|
)
|
306
321
|
]
|
@@ -312,7 +327,6 @@ Radio.displayName = "Radio";
|
|
312
327
|
Radio.__ui__ = "Radio";
|
313
328
|
// Annotate the CommonJS export names for ESM import in node:
|
314
329
|
0 && (module.exports = {
|
315
|
-
Radio
|
316
|
-
useRadio
|
330
|
+
Radio
|
317
331
|
});
|
318
332
|
//# sourceMappingURL=radio.js.map
|
package/dist/radio.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/radio.tsx","../src/radio-context.ts"],"sourcesContent":["import type {\n ComponentArgs,\n HTMLUIProps,\n PropGetter,\n ThemeProps,\n} from \"@yamada-ui/core\"\nimport type { FormControlOptions } from \"@yamada-ui/form-control\"\nimport type { Dict } from \"@yamada-ui/utils\"\nimport type {\n ChangeEvent,\n ChangeEventHandler,\n ForwardedRef,\n InputHTMLAttributes,\n KeyboardEvent,\n ReactElement,\n RefAttributes,\n SyntheticEvent,\n} from \"react\"\nimport { omitThemeProps, ui, useComponentMultiStyle } from \"@yamada-ui/core\"\nimport {\n formControlProperties,\n useFormControl,\n useFormControlProps,\n} from \"@yamada-ui/form-control\"\nimport { trackFocusVisible } from \"@yamada-ui/use-focus-visible\"\nimport {\n cx,\n dataAttr,\n funcAll,\n handlerAll,\n splitObject,\n useCallbackRef,\n} from \"@yamada-ui/utils\"\nimport { forwardRef, useCallback, useEffect, useId, useState } from \"react\"\nimport { useRadioGroupContext } from \"./radio-context\"\n\nexport interface UseRadioProps<Y extends number | string = string>\n extends 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 * If `true`, the radio will be checked.\n *\n * @default false\n */\n checked?: boolean\n /**\n * If `true`, the radio will be initially checked.\n *\n * @default false\n */\n defaultChecked?: boolean\n /**\n * If `true`, the radio will be initially checked.\n *\n * @default false\n *\n * @deprecated Use `defaultChecked` instead.\n */\n defaultIsChecked?: boolean\n /**\n * If `true`, the radio will be checked.\n *\n * @default false\n *\n * @deprecated Use `checked` instead.\n */\n isChecked?: boolean\n /**\n * The value to be used in the radio button.\n */\n value?: Y\n /**\n * The callback invoked when the checked state changes.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>\n}\n\nexport const useRadio = <\n Y extends number | string = string,\n M extends Dict = Dict,\n>({\n id,\n ...props\n}: M & UseRadioProps<Y>) => {\n const uuid = useId()\n\n id ??= uuid\n\n let {\n id: _id,\n name,\n checked: checkedProp,\n defaultChecked,\n defaultIsChecked,\n isChecked: isCheckedProp,\n value,\n onChange: onChangeProp,\n ...computedProps\n } = useFormControlProps({ id, ...props })\n\n checkedProp ??= isCheckedProp\n defaultChecked ??= defaultIsChecked\n\n const [\n {\n \"aria-readonly\": _ariaReadonly,\n disabled,\n readOnly,\n required,\n onBlur: onBlurProp,\n onFocus: onFocusProp,\n ...formControlProps\n },\n rest,\n ] = splitObject(computedProps, formControlProperties)\n\n const [focusVisible, setFocusVisible] = useState<boolean>(false)\n const [focused, setFocused] = useState<boolean>(false)\n const [hovered, setHovered] = useState<boolean>(false)\n const [active, setActive] = useState<boolean>(false)\n\n const [checked, setChecked] = useState<boolean>(!!defaultChecked)\n\n const controlled = checkedProp !== undefined\n const resolvedChecked = controlled ? (checkedProp as boolean) : checked\n\n useEffect(() => {\n return trackFocusVisible(setFocusVisible)\n }, [])\n\n const onChange = useCallbackRef(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (readOnly || disabled) {\n ev.preventDefault()\n\n return\n }\n\n if (!controlled) setChecked(ev.target.checked)\n\n onChangeProp?.(ev)\n },\n [readOnly, disabled, controlled],\n )\n const onFocus = useCallbackRef(onFocusProp)\n const onBlur = useCallbackRef(onBlurProp)\n\n const onKeyDown = useCallback(\n ({ key }: KeyboardEvent) => {\n if (key === \" \") setActive(true)\n },\n [setActive],\n )\n\n const onKeyUp = useCallback(\n ({ key }: KeyboardEvent) => {\n if (key === \" \") setActive(false)\n },\n [setActive],\n )\n\n const getContainerProps: PropGetter<\"label\"> = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n ref,\n \"data-checked\": dataAttr(resolvedChecked),\n }),\n [resolvedChecked, formControlProps],\n )\n\n const getIconProps: PropGetter<\"span\"> = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n ref,\n \"aria-hidden\": true,\n \"data-active\": dataAttr(active),\n \"data-checked\": dataAttr(resolvedChecked),\n \"data-focus\": dataAttr(focused),\n \"data-focus-visible\": dataAttr(focused && focusVisible),\n \"data-hover\": dataAttr(hovered),\n onMouseDown: handlerAll(props.onMouseDown, () => setActive(true)),\n onMouseEnter: handlerAll(props.onMouseEnter, () => setHovered(true)),\n onMouseLeave: handlerAll(props.onMouseLeave, () => setHovered(false)),\n onMouseUp: handlerAll(props.onMouseUp, () => setActive(false)),\n }),\n [resolvedChecked, active, focused, focusVisible, hovered, formControlProps],\n )\n\n const getInputProps: PropGetter<\"input\"> = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n id,\n ref,\n type: \"radio\",\n name,\n style: {\n border: \"0px\",\n clip: \"rect(0px, 0px, 0px, 0px)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0px\",\n position: \"absolute\",\n whiteSpace: \"nowrap\",\n width: \"1px\",\n },\n \"aria-checked\": resolvedChecked,\n checked: resolvedChecked,\n disabled,\n readOnly,\n required,\n value,\n onBlur: handlerAll(props.onBlur, onBlur, () => setFocused(false)),\n onChange: handlerAll(props.onChange, onChange),\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 resolvedChecked,\n onChange,\n onBlur,\n onFocus,\n onKeyDown,\n onKeyUp,\n ],\n )\n\n const getLabelProps: PropGetter<\"span\"> = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n ref,\n \"data-checked\": dataAttr(resolvedChecked),\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 }),\n [resolvedChecked, formControlProps],\n )\n\n return {\n active,\n checked: resolvedChecked,\n focused,\n focusVisible,\n hovered,\n props: rest,\n getContainerProps,\n getIconProps,\n getInputProps,\n getLabelProps,\n }\n}\n\nexport type UseRadioReturn = ReturnType<typeof useRadio>\n\ninterface RadioOptions {\n iconProps?: HTMLUIProps<\"span\">\n inputProps?: InputHTMLAttributes<HTMLInputElement>\n labelProps?: HTMLUIProps<\"span\">\n}\n\nexport interface RadioProps<Y extends number | string = string>\n extends Omit<HTMLUIProps<\"label\">, keyof UseRadioProps>,\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 number | string = 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] = useComponentMultiStyle(\"Radio\", {\n ...groupProps,\n ...props,\n })\n const {\n className,\n children,\n gap = \"0.5rem\",\n isDisabled = groupProps.isDisabled ?? control.isDisabled,\n isInvalid = groupProps.isInvalid ?? control.isInvalid,\n isReadOnly = groupProps.isReadOnly ?? control.isReadOnly,\n isRequired = groupProps.isRequired ?? control.isRequired,\n iconProps,\n inputProps,\n labelProps,\n ...computedProps\n } = omitThemeProps(mergedProps)\n\n computedProps.checked ??= computedProps.isChecked\n\n const checkedProp =\n groupValue && computedProps.value\n ? groupValue === computedProps.value\n : computedProps.checked\n\n const onChange =\n groupProps.onChange && computedProps.value\n ? funcAll(groupProps.onChange, computedProps.onChange)\n : computedProps.onChange\n\n const {\n checked,\n props: rest,\n getContainerProps,\n getIconProps,\n getInputProps,\n getLabelProps,\n } = useRadio({\n ...computedProps,\n checked: checkedProp,\n isDisabled,\n isInvalid,\n isReadOnly,\n isRequired,\n onChange,\n })\n\n const tabIndex = !groupValue ? 0 : checked ? 0 : -1\n\n return (\n <ui.label\n className={cx(\"ui-radio\", className)}\n {...getContainerProps(rest)}\n __css={{\n alignItems: \"center\",\n cursor: \"pointer\",\n display: \"inline-flex\",\n gap,\n position: \"relative\",\n verticalAlign: \"top\",\n ...styles.container,\n }}\n >\n <ui.input\n className=\"ui-radio__input\"\n {...getInputProps(\n {\n ...inputProps,\n tabIndex,\n },\n ref,\n )}\n />\n\n <ui.div\n className=\"ui-radio__icon\"\n {...getIconProps(iconProps)}\n __css={{\n display: \"inline-block\",\n position: \"relative\",\n userSelect: \"none\",\n ...styles.icon,\n }}\n />\n\n <ui.span\n className=\"ui-radio__label\"\n {...getLabelProps(labelProps)}\n __css={{ ...styles.label }}\n >\n {children}\n </ui.span>\n </ui.label>\n )\n },\n) as {\n <Y extends number | string = string>(\n props: RadioProps<Y> & RefAttributes<HTMLInputElement>,\n ): ReactElement\n} & ComponentArgs\n\nRadio.displayName = \"Radio\"\nRadio.__ui__ = \"Radio\"\n","import type { ThemeProps } from \"@yamada-ui/core\"\nimport type { FormControlOptions } from \"@yamada-ui/form-control\"\nimport type { ChangeEvent } from \"react\"\nimport { createContext } from \"@yamada-ui/utils\"\n\nexport interface RadioGroupContext\n extends ThemeProps<\"Radio\">,\n FormControlOptions {\n name: string\n value: number | string\n onChange: (evOrValue: ChangeEvent<HTMLInputElement> | number | string) => void\n}\n\nexport const [RadioGroupProvider, useRadioGroupContext] = createContext<\n RadioGroupContext | undefined\n>({\n name: \"RadioGroupContext\",\n strict: false,\n})\n"],"mappings":"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","names":["import_utils","props"]}
|
1
|
+
{"version":3,"sources":["../src/radio.tsx","../src/radio-context.ts","../src/use-radio.ts"],"sourcesContent":["import type { ComponentArgs, HTMLUIProps, ThemeProps } from \"@yamada-ui/core\"\nimport type {\n ForwardedRef,\n InputHTMLAttributes,\n ReactElement,\n ReactNode,\n RefAttributes,\n} from \"react\"\nimport type { UseRadioProps } from \"./use-radio\"\nimport { omitThemeProps, ui, useComponentMultiStyle } from \"@yamada-ui/core\"\nimport { useFormControl } from \"@yamada-ui/form-control\"\nimport { cx, funcAll } from \"@yamada-ui/utils\"\nimport { forwardRef } from \"react\"\nimport { useRadioGroupContext } from \"./radio-context\"\nimport { useRadio } from \"./use-radio\"\n\ninterface RadioOptions {\n /**\n * The label of the radio.\n */\n label?: ReactNode\n /**\n * Props for icon element.\n */\n iconProps?: HTMLUIProps<\"span\">\n /**\n * Props for input element.\n */\n inputProps?: InputHTMLAttributes<HTMLInputElement>\n /**\n * Props for label element.\n */\n labelProps?: HTMLUIProps<\"span\">\n}\n\nexport interface RadioProps<Y extends number | string = string>\n extends Omit<HTMLUIProps<\"label\">, keyof UseRadioProps>,\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 number | string = 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] = useComponentMultiStyle(\"Radio\", {\n ...groupProps,\n ...props,\n })\n const {\n className,\n children,\n gap = \"0.5rem\",\n isDisabled = groupProps.isDisabled ?? control.isDisabled,\n isInvalid = groupProps.isInvalid ?? control.isInvalid,\n isReadOnly = groupProps.isReadOnly ?? control.isReadOnly,\n isRequired = groupProps.isRequired ?? control.isRequired,\n label,\n iconProps,\n inputProps,\n labelProps,\n ...computedProps\n } = omitThemeProps(mergedProps)\n\n computedProps.checked ??= computedProps.isChecked\n\n const checkedProp =\n groupValue && computedProps.value\n ? groupValue === computedProps.value\n : computedProps.checked\n\n const onChange =\n groupProps.onChange && computedProps.value\n ? funcAll(groupProps.onChange, computedProps.onChange)\n : computedProps.onChange\n\n const {\n checked,\n props: rest,\n getContainerProps,\n getIconProps,\n getInputProps,\n getLabelProps,\n } = useRadio({\n ...computedProps,\n checked: checkedProp,\n isDisabled,\n isInvalid,\n isReadOnly,\n isRequired,\n onChange,\n })\n\n const tabIndex = !groupValue ? 0 : checked ? 0 : -1\n\n return (\n <ui.label\n className={cx(\"ui-radio\", className)}\n {...getContainerProps(rest)}\n __css={{\n alignItems: \"center\",\n cursor: \"pointer\",\n display: \"inline-flex\",\n gap,\n position: \"relative\",\n verticalAlign: \"top\",\n ...styles.container,\n }}\n >\n <ui.input\n className=\"ui-radio__input\"\n {...getInputProps(\n {\n ...inputProps,\n tabIndex,\n },\n ref,\n )}\n />\n\n <ui.div\n className=\"ui-radio__icon\"\n {...getIconProps(iconProps)}\n __css={{\n display: \"inline-block\",\n position: \"relative\",\n userSelect: \"none\",\n ...styles.icon,\n }}\n />\n\n <ui.span\n className=\"ui-radio__label\"\n {...getLabelProps(labelProps)}\n __css={{ ...styles.label }}\n >\n {children ?? label}\n </ui.span>\n </ui.label>\n )\n },\n) as {\n <Y extends number | string = string>(\n props: RadioProps<Y> & RefAttributes<HTMLInputElement>,\n ): ReactElement\n} & ComponentArgs\n\nRadio.displayName = \"Radio\"\nRadio.__ui__ = \"Radio\"\n","import type {\n CSSUIObject,\n HTMLUIProps,\n PropGetter,\n ThemeProps,\n} from \"@yamada-ui/core\"\nimport type { FormControlOptions } from \"@yamada-ui/form-control\"\nimport type { ChangeEvent } from \"react\"\nimport type { RadioCardProps } from \"./radio-card\"\nimport { createContext } from \"@yamada-ui/utils\"\n\ninterface RadioGroupSharedContext extends FormControlOptions {\n name: string\n value: number | string\n onChange: (evOrValue: ChangeEvent<HTMLInputElement> | number | string) => void\n}\n\nexport interface RadioGroupContext\n extends RadioGroupSharedContext,\n ThemeProps<\"Radio\"> {}\n\nexport const [RadioGroupProvider, useRadioGroupContext] =\n createContext<RadioGroupContext>({\n name: \"RadioGroupContext\",\n strict: false,\n })\n\nexport interface RadioCardGroupContext\n extends RadioGroupSharedContext,\n Pick<\n RadioCardProps,\n \"addonProps\" | \"descriptionProps\" | \"labelProps\" | \"withIcon\"\n >,\n ThemeProps<\"RadioCard\"> {}\n\nexport const [RadioCardGroupProvider, useRadioCardGroupContext] =\n createContext<RadioCardGroupContext>({\n name: \"RadioCardGroupContext\",\n strict: false,\n })\n\nexport interface RadioCardContext {\n styles: { [key: string]: CSSUIObject | undefined }\n withIcon: boolean\n getIconProps: PropGetter\n iconProps?: HTMLUIProps\n}\n\nexport const [RadioCardProvider, useRadioCardContext] =\n createContext<RadioCardContext>({\n name: \"RadioCardContext\",\n errorMessage: `useRadioCardContext returned is 'undefined'. Seems you forgot to wrap the components in \"<RadioCard />\"`,\n })\n","import type { PropGetter } from \"@yamada-ui/core\"\nimport type { FormControlOptions } from \"@yamada-ui/form-control\"\nimport type { Dict } from \"@yamada-ui/utils\"\nimport type {\n ChangeEvent,\n ChangeEventHandler,\n KeyboardEvent,\n SyntheticEvent,\n} from \"react\"\nimport {\n formControlProperties,\n useFormControlProps,\n} from \"@yamada-ui/form-control\"\nimport { trackFocusVisible } from \"@yamada-ui/use-focus-visible\"\nimport {\n dataAttr,\n handlerAll,\n splitObject,\n useCallbackRef,\n} from \"@yamada-ui/utils\"\nimport { useCallback, useEffect, useId, useState } from \"react\"\n\nexport interface UseRadioProps<Y extends number | string = string>\n extends 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 * If `true`, the radio will be checked.\n *\n * @default false\n */\n checked?: boolean\n /**\n * If `true`, the radio will be initially checked.\n *\n * @default false\n */\n defaultChecked?: boolean\n /**\n * If `true`, the radio will be initially checked.\n *\n * @default false\n *\n * @deprecated Use `defaultChecked` instead.\n */\n defaultIsChecked?: boolean\n /**\n * If `true`, the radio will be checked.\n *\n * @default false\n *\n * @deprecated Use `checked` instead.\n */\n isChecked?: boolean\n /**\n * The value to be used in the radio button.\n */\n value?: Y\n /**\n * The callback invoked when the checked state changes.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>\n}\n\nexport const useRadio = <\n Y extends number | string = string,\n M extends Dict = Dict,\n>({\n id,\n ...props\n}: M & UseRadioProps<Y>) => {\n const uuid = useId()\n\n id ??= uuid\n\n let {\n id: _id,\n name,\n checked: checkedProp,\n defaultChecked,\n defaultIsChecked,\n isChecked: isCheckedProp,\n value,\n onChange: onChangeProp,\n ...computedProps\n } = useFormControlProps({ id, ...props })\n\n checkedProp ??= isCheckedProp\n defaultChecked ??= defaultIsChecked\n\n const [\n {\n \"aria-readonly\": _ariaReadonly,\n disabled,\n readOnly,\n required,\n onBlur: onBlurProp,\n onFocus: onFocusProp,\n ...formControlProps\n },\n rest,\n ] = splitObject(computedProps, formControlProperties)\n\n const [focusVisible, setFocusVisible] = useState<boolean>(false)\n const [focused, setFocused] = useState<boolean>(false)\n const [hovered, setHovered] = useState<boolean>(false)\n const [active, setActive] = useState<boolean>(false)\n\n const [checked, setChecked] = useState<boolean>(!!defaultChecked)\n\n const controlled = checkedProp !== undefined\n const resolvedChecked = controlled ? (checkedProp as boolean) : checked\n\n useEffect(() => {\n return trackFocusVisible(setFocusVisible)\n }, [])\n\n const onChange = useCallbackRef(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (readOnly || disabled) {\n ev.preventDefault()\n\n return\n }\n\n if (!controlled) setChecked(ev.target.checked)\n\n onChangeProp?.(ev)\n },\n [readOnly, disabled, controlled],\n )\n const onFocus = useCallbackRef(onFocusProp)\n const onBlur = useCallbackRef(onBlurProp)\n\n const onKeyDown = useCallback(\n ({ key }: KeyboardEvent) => {\n if (key === \" \") setActive(true)\n },\n [setActive],\n )\n\n const onKeyUp = useCallback(\n ({ key }: KeyboardEvent) => {\n if (key === \" \") setActive(false)\n },\n [setActive],\n )\n\n const getContainerProps: PropGetter<\"label\"> = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n ref,\n \"data-checked\": dataAttr(resolvedChecked),\n \"data-focus\": dataAttr(focused),\n \"data-focus-visible\": dataAttr(focused && focusVisible),\n }),\n [resolvedChecked, formControlProps, focused, focusVisible],\n )\n\n const getIconProps: PropGetter = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n ref,\n \"aria-hidden\": true,\n \"data-active\": dataAttr(active),\n \"data-checked\": dataAttr(resolvedChecked),\n \"data-focus\": dataAttr(focused),\n \"data-focus-visible\": dataAttr(focused && focusVisible),\n \"data-hover\": dataAttr(hovered),\n onMouseDown: handlerAll(props.onMouseDown, () => setActive(true)),\n onMouseEnter: handlerAll(props.onMouseEnter, () => setHovered(true)),\n onMouseLeave: handlerAll(props.onMouseLeave, () => setHovered(false)),\n onMouseUp: handlerAll(props.onMouseUp, () => setActive(false)),\n }),\n [resolvedChecked, active, focused, focusVisible, hovered, formControlProps],\n )\n\n const getInputProps: PropGetter<\"input\"> = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n id,\n ref,\n type: \"radio\",\n name,\n style: {\n border: \"0px\",\n clip: \"rect(0px, 0px, 0px, 0px)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0px\",\n position: \"absolute\",\n whiteSpace: \"nowrap\",\n width: \"1px\",\n },\n \"aria-checked\": resolvedChecked,\n checked: resolvedChecked,\n disabled,\n readOnly,\n required,\n value,\n onBlur: handlerAll(props.onBlur, onBlur, () => setFocused(false)),\n onChange: handlerAll(props.onChange, onChange),\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 resolvedChecked,\n onChange,\n onBlur,\n onFocus,\n onKeyDown,\n onKeyUp,\n ],\n )\n\n const getLabelProps: PropGetter<\"span\"> = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n ref,\n \"data-checked\": dataAttr(resolvedChecked),\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 }),\n [resolvedChecked, formControlProps],\n )\n\n return {\n active,\n checked: resolvedChecked,\n focused,\n focusVisible,\n hovered,\n props: rest,\n getContainerProps,\n getIconProps,\n getInputProps,\n getLabelProps,\n }\n}\n\nexport type UseRadioReturn = ReturnType<typeof useRadio>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,kBAA2D;AAC3D,IAAAA,uBAA+B;AAC/B,IAAAC,gBAA4B;AAC5B,IAAAC,gBAA2B;;;ACH3B,mBAA8B;AAYvB,IAAM,CAAC,oBAAoB,oBAAoB,QACpD,4BAAiC;AAAA,EAC/B,MAAM;AAAA,EACN,QAAQ;AACV,CAAC;AAUI,IAAM,CAAC,wBAAwB,wBAAwB,QAC5D,4BAAqC;AAAA,EACnC,MAAM;AAAA,EACN,QAAQ;AACV,CAAC;AASI,IAAM,CAAC,mBAAmB,mBAAmB,QAClD,4BAAgC;AAAA,EAC9B,MAAM;AAAA,EACN,cAAc;AAChB,CAAC;;;AC3CH,0BAGO;AACP,+BAAkC;AAClC,IAAAC,gBAKO;AACP,mBAAwD;AAkDjD,IAAM,WAAW,CAGtB;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA4B;AAC1B,QAAM,WAAO,oBAAM;AAEnB,yBAAO;AAEP,MAAI;AAAA,IACF,IAAI;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA,UAAU;AAAA,IACV,GAAG;AAAA,EACL,QAAI,yCAAoB,EAAE,IAAI,GAAG,MAAM,CAAC;AAExC,oDAAgB;AAChB,6DAAmB;AAEnB,QAAM;AAAA,IACJ;AAAA,MACE,iBAAiB;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,GAAG;AAAA,IACL;AAAA,IACA;AAAA,EACF,QAAI,2BAAY,eAAe,yCAAqB;AAEpD,QAAM,CAAC,cAAc,eAAe,QAAI,uBAAkB,KAAK;AAC/D,QAAM,CAAC,SAAS,UAAU,QAAI,uBAAkB,KAAK;AACrD,QAAM,CAAC,SAAS,UAAU,QAAI,uBAAkB,KAAK;AACrD,QAAM,CAAC,QAAQ,SAAS,QAAI,uBAAkB,KAAK;AAEnD,QAAM,CAAC,SAAS,UAAU,QAAI,uBAAkB,CAAC,CAAC,cAAc;AAEhE,QAAM,aAAa,gBAAgB;AACnC,QAAM,kBAAkB,aAAc,cAA0B;AAEhE,8BAAU,MAAM;AACd,eAAO,4CAAkB,eAAe;AAAA,EAC1C,GAAG,CAAC,CAAC;AAEL,QAAM,eAAW;AAAA,IACf,CAAC,OAAsC;AACrC,UAAI,YAAY,UAAU;AACxB,WAAG,eAAe;AAElB;AAAA,MACF;AAEA,UAAI,CAAC,WAAY,YAAW,GAAG,OAAO,OAAO;AAE7C,mDAAe;AAAA,IACjB;AAAA,IACA,CAAC,UAAU,UAAU,UAAU;AAAA,EACjC;AACA,QAAM,cAAU,8BAAe,WAAW;AAC1C,QAAM,aAAS,8BAAe,UAAU;AAExC,QAAM,gBAAY;AAAA,IAChB,CAAC,EAAE,IAAI,MAAqB;AAC1B,UAAI,QAAQ,IAAK,WAAU,IAAI;AAAA,IACjC;AAAA,IACA,CAAC,SAAS;AAAA,EACZ;AAEA,QAAM,cAAU;AAAA,IACd,CAAC,EAAE,IAAI,MAAqB;AAC1B,UAAI,QAAQ,IAAK,WAAU,KAAK;AAAA,IAClC;AAAA,IACA,CAAC,SAAS;AAAA,EACZ;AAEA,QAAM,wBAAyC;AAAA,IAC7C,CAACC,SAAQ,CAAC,GAAG,MAAM,UAAU;AAAA,MAC3B,GAAG;AAAA,MACH,GAAGA;AAAA,MACH;AAAA,MACA,oBAAgB,wBAAS,eAAe;AAAA,MACxC,kBAAc,wBAAS,OAAO;AAAA,MAC9B,0BAAsB,wBAAS,WAAW,YAAY;AAAA,IACxD;AAAA,IACA,CAAC,iBAAiB,kBAAkB,SAAS,YAAY;AAAA,EAC3D;AAEA,QAAM,mBAA2B;AAAA,IAC/B,CAACA,SAAQ,CAAC,GAAG,MAAM,UAAU;AAAA,MAC3B,GAAG;AAAA,MACH,GAAGA;AAAA,MACH;AAAA,MACA,eAAe;AAAA,MACf,mBAAe,wBAAS,MAAM;AAAA,MAC9B,oBAAgB,wBAAS,eAAe;AAAA,MACxC,kBAAc,wBAAS,OAAO;AAAA,MAC9B,0BAAsB,wBAAS,WAAW,YAAY;AAAA,MACtD,kBAAc,wBAAS,OAAO;AAAA,MAC9B,iBAAa,0BAAWA,OAAM,aAAa,MAAM,UAAU,IAAI,CAAC;AAAA,MAChE,kBAAc,0BAAWA,OAAM,cAAc,MAAM,WAAW,IAAI,CAAC;AAAA,MACnE,kBAAc,0BAAWA,OAAM,cAAc,MAAM,WAAW,KAAK,CAAC;AAAA,MACpE,eAAW,0BAAWA,OAAM,WAAW,MAAM,UAAU,KAAK,CAAC;AAAA,IAC/D;AAAA,IACA,CAAC,iBAAiB,QAAQ,SAAS,cAAc,SAAS,gBAAgB;AAAA,EAC5E;AAEA,QAAM,oBAAqC;AAAA,IACzC,CAACA,SAAQ,CAAC,GAAG,MAAM,UAAU;AAAA,MAC3B,GAAG;AAAA,MACH,GAAGA;AAAA,MACH;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,OAAO;AAAA,MACT;AAAA,MACA,gBAAgB;AAAA,MAChB,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAQ,0BAAWA,OAAM,QAAQ,QAAQ,MAAM,WAAW,KAAK,CAAC;AAAA,MAChE,cAAU,0BAAWA,OAAM,UAAU,QAAQ;AAAA,MAC7C,aAAS,0BAAWA,OAAM,SAAS,SAAS,MAAM,WAAW,IAAI,CAAC;AAAA,MAClE,eAAW,0BAAWA,OAAM,WAAW,SAAS;AAAA,MAChD,aAAS,0BAAWA,OAAM,SAAS,OAAO;AAAA,IAC5C;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,oBAAoC;AAAA,IACxC,CAACA,SAAQ,CAAC,GAAG,MAAM,UAAU;AAAA,MAC3B,GAAG;AAAA,MACH,GAAGA;AAAA,MACH;AAAA,MACA,oBAAgB,wBAAS,eAAe;AAAA,MACxC,iBAAa,0BAAWA,OAAM,aAAa,CAAC,OAAuB;AACjE,WAAG,eAAe;AAClB,WAAG,gBAAgB;AAAA,MACrB,CAAC;AAAA,MACD,kBAAc,0BAAWA,OAAM,cAAc,CAAC,OAAuB;AACnE,WAAG,eAAe;AAClB,WAAG,gBAAgB;AAAA,MACrB,CAAC;AAAA,IACH;AAAA,IACA,CAAC,iBAAiB,gBAAgB;AAAA,EACpC;AAEA,SAAO;AAAA,IACL;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AF9JM;AA3DC,IAAM,YAAQ;AAAA,EACnB,CACE,OACA,QACG;AAlDP;AAmDI,UAAM,QAAQ,qBAAqB;AACnC,UAAM,EAAE,OAAO,YAAY,GAAG,WAAW,IAAI,EAAE,GAAG,MAAM;AACxD,UAAM,cAAU,qCAAe,KAAK;AACpC,UAAM,CAAC,QAAQ,WAAW,QAAI,oCAAuB,SAAS;AAAA,MAC5D,GAAG;AAAA,MACH,GAAG;AAAA,IACL,CAAC;AACD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN,cAAa,gBAAW,eAAX,YAAyB,QAAQ;AAAA,MAC9C,aAAY,gBAAW,cAAX,YAAwB,QAAQ;AAAA,MAC5C,cAAa,gBAAW,eAAX,YAAyB,QAAQ;AAAA,MAC9C,cAAa,gBAAW,eAAX,YAAyB,QAAQ;AAAA,MAC9C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,QAAI,4BAAe,WAAW;AAE9B,wBAAc,YAAd,0BAAc,UAAY,cAAc;AAExC,UAAM,cACJ,cAAc,cAAc,QACxB,eAAe,cAAc,QAC7B,cAAc;AAEpB,UAAM,WACJ,WAAW,YAAY,cAAc,YACjC,uBAAQ,WAAW,UAAU,cAAc,QAAQ,IACnD,cAAc;AAEpB,UAAM;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,SAAS;AAAA,MACX,GAAG;AAAA,MACH,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAED,UAAM,WAAW,CAAC,aAAa,IAAI,UAAU,IAAI;AAEjD,WACE;AAAA,MAAC,eAAG;AAAA,MAAH;AAAA,QACC,eAAW,kBAAG,YAAY,SAAS;AAAA,QAClC,GAAG,kBAAkB,IAAI;AAAA,QAC1B,OAAO;AAAA,UACL,YAAY;AAAA,UACZ,QAAQ;AAAA,UACR,SAAS;AAAA,UACT;AAAA,UACA,UAAU;AAAA,UACV,eAAe;AAAA,UACf,GAAG,OAAO;AAAA,QACZ;AAAA,QAEA;AAAA;AAAA,YAAC,eAAG;AAAA,YAAH;AAAA,cACC,WAAU;AAAA,cACT,GAAG;AAAA,gBACF;AAAA,kBACE,GAAG;AAAA,kBACH;AAAA,gBACF;AAAA,gBACA;AAAA,cACF;AAAA;AAAA,UACF;AAAA,UAEA;AAAA,YAAC,eAAG;AAAA,YAAH;AAAA,cACC,WAAU;AAAA,cACT,GAAG,aAAa,SAAS;AAAA,cAC1B,OAAO;AAAA,gBACL,SAAS;AAAA,gBACT,UAAU;AAAA,gBACV,YAAY;AAAA,gBACZ,GAAG,OAAO;AAAA,cACZ;AAAA;AAAA,UACF;AAAA,UAEA;AAAA,YAAC,eAAG;AAAA,YAAH;AAAA,cACC,WAAU;AAAA,cACT,GAAG,cAAc,UAAU;AAAA,cAC5B,OAAO,EAAE,GAAG,OAAO,MAAM;AAAA,cAExB,wCAAY;AAAA;AAAA,UACf;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAMA,MAAM,cAAc;AACpB,MAAM,SAAS;","names":["import_form_control","import_utils","import_react","import_utils","props"]}
|
package/dist/radio.mjs
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
"use client"
|
2
2
|
import {
|
3
|
-
Radio
|
4
|
-
|
5
|
-
|
6
|
-
import "./chunk-
|
3
|
+
Radio
|
4
|
+
} from "./chunk-JLL7F3NY.mjs";
|
5
|
+
import "./chunk-HFS5TQ47.mjs";
|
6
|
+
import "./chunk-ZLJHOIFP.mjs";
|
7
7
|
export {
|
8
|
-
Radio
|
9
|
-
useRadio
|
8
|
+
Radio
|
10
9
|
};
|
11
10
|
//# sourceMappingURL=radio.mjs.map
|
@@ -0,0 +1,56 @@
|
|
1
|
+
import * as react from 'react';
|
2
|
+
import { ChangeEvent } from 'react';
|
3
|
+
import { PropGetter } from '@yamada-ui/core';
|
4
|
+
import { Dict } from '@yamada-ui/utils';
|
5
|
+
|
6
|
+
interface UseRadioGroupProps<Y extends number | string = string> {
|
7
|
+
/**
|
8
|
+
* The top-level id string that will be applied to the radios.
|
9
|
+
* The index of the radio will be appended to this top-level id.
|
10
|
+
*/
|
11
|
+
id?: string;
|
12
|
+
/**
|
13
|
+
* The HTML `name` attribute used for forms.
|
14
|
+
*/
|
15
|
+
name?: string;
|
16
|
+
/**
|
17
|
+
* The initial value of the radio group.
|
18
|
+
*/
|
19
|
+
defaultValue?: Y;
|
20
|
+
/**
|
21
|
+
* If `true`, input elements will receive `checked` attribute instead of `isChecked`.
|
22
|
+
*
|
23
|
+
* This assumes, you're using native radio inputs.
|
24
|
+
*
|
25
|
+
* @default false
|
26
|
+
*/
|
27
|
+
isNative?: boolean;
|
28
|
+
/**
|
29
|
+
* The value of the radio group.
|
30
|
+
*/
|
31
|
+
value?: Y;
|
32
|
+
/**
|
33
|
+
* The callback fired when any children radio is checked or unchecked.
|
34
|
+
*/
|
35
|
+
onChange?: (value: Y) => void;
|
36
|
+
}
|
37
|
+
declare const useRadioGroup: <Y extends number | string, M extends Dict = Dict<any>>({ id, name, defaultValue, isNative, value: valueProp, onChange: onChangeProp, ...props }: M & UseRadioGroupProps<Y>) => {
|
38
|
+
id: string;
|
39
|
+
name: string;
|
40
|
+
props: Omit<M & UseRadioGroupProps<Y>, "value" | "defaultValue" | "name" | "id" | "onChange" | "isNative">;
|
41
|
+
setValue: react.Dispatch<react.SetStateAction<Y>>;
|
42
|
+
value: Y;
|
43
|
+
getContainerProps: PropGetter<"div", undefined>;
|
44
|
+
getRadioProps: PropGetter<{
|
45
|
+
value?: Y;
|
46
|
+
}, {
|
47
|
+
checked?: boolean;
|
48
|
+
isChecked?: boolean;
|
49
|
+
value?: Y;
|
50
|
+
}>;
|
51
|
+
onChange: (evOrValue: ChangeEvent<HTMLInputElement> | Y) => void;
|
52
|
+
onFocus: () => void;
|
53
|
+
};
|
54
|
+
type UseRadioGroupReturn<Y extends number | string = string> = ReturnType<typeof useRadioGroup<Y>>;
|
55
|
+
|
56
|
+
export { type UseRadioGroupProps, type UseRadioGroupReturn, useRadioGroup };
|
@@ -0,0 +1,56 @@
|
|
1
|
+
import * as react from 'react';
|
2
|
+
import { ChangeEvent } from 'react';
|
3
|
+
import { PropGetter } from '@yamada-ui/core';
|
4
|
+
import { Dict } from '@yamada-ui/utils';
|
5
|
+
|
6
|
+
interface UseRadioGroupProps<Y extends number | string = string> {
|
7
|
+
/**
|
8
|
+
* The top-level id string that will be applied to the radios.
|
9
|
+
* The index of the radio will be appended to this top-level id.
|
10
|
+
*/
|
11
|
+
id?: string;
|
12
|
+
/**
|
13
|
+
* The HTML `name` attribute used for forms.
|
14
|
+
*/
|
15
|
+
name?: string;
|
16
|
+
/**
|
17
|
+
* The initial value of the radio group.
|
18
|
+
*/
|
19
|
+
defaultValue?: Y;
|
20
|
+
/**
|
21
|
+
* If `true`, input elements will receive `checked` attribute instead of `isChecked`.
|
22
|
+
*
|
23
|
+
* This assumes, you're using native radio inputs.
|
24
|
+
*
|
25
|
+
* @default false
|
26
|
+
*/
|
27
|
+
isNative?: boolean;
|
28
|
+
/**
|
29
|
+
* The value of the radio group.
|
30
|
+
*/
|
31
|
+
value?: Y;
|
32
|
+
/**
|
33
|
+
* The callback fired when any children radio is checked or unchecked.
|
34
|
+
*/
|
35
|
+
onChange?: (value: Y) => void;
|
36
|
+
}
|
37
|
+
declare const useRadioGroup: <Y extends number | string, M extends Dict = Dict<any>>({ id, name, defaultValue, isNative, value: valueProp, onChange: onChangeProp, ...props }: M & UseRadioGroupProps<Y>) => {
|
38
|
+
id: string;
|
39
|
+
name: string;
|
40
|
+
props: Omit<M & UseRadioGroupProps<Y>, "value" | "defaultValue" | "name" | "id" | "onChange" | "isNative">;
|
41
|
+
setValue: react.Dispatch<react.SetStateAction<Y>>;
|
42
|
+
value: Y;
|
43
|
+
getContainerProps: PropGetter<"div", undefined>;
|
44
|
+
getRadioProps: PropGetter<{
|
45
|
+
value?: Y;
|
46
|
+
}, {
|
47
|
+
checked?: boolean;
|
48
|
+
isChecked?: boolean;
|
49
|
+
value?: Y;
|
50
|
+
}>;
|
51
|
+
onChange: (evOrValue: ChangeEvent<HTMLInputElement> | Y) => void;
|
52
|
+
onFocus: () => void;
|
53
|
+
};
|
54
|
+
type UseRadioGroupReturn<Y extends number | string = string> = ReturnType<typeof useRadioGroup<Y>>;
|
55
|
+
|
56
|
+
export { type UseRadioGroupProps, type UseRadioGroupReturn, useRadioGroup };
|