@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
@@ -0,0 +1,111 @@
|
|
1
|
+
"use client"
|
2
|
+
"use strict";
|
3
|
+
var __defProp = Object.defineProperty;
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
7
|
+
var __export = (target, all) => {
|
8
|
+
for (var name in all)
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
10
|
+
};
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
13
|
+
for (let key of __getOwnPropNames(from))
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
16
|
+
}
|
17
|
+
return to;
|
18
|
+
};
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
20
|
+
|
21
|
+
// src/use-radio-group.ts
|
22
|
+
var use_radio_group_exports = {};
|
23
|
+
__export(use_radio_group_exports, {
|
24
|
+
useRadioGroup: () => useRadioGroup
|
25
|
+
});
|
26
|
+
module.exports = __toCommonJS(use_radio_group_exports);
|
27
|
+
var import_use_controllable_state = require("@yamada-ui/use-controllable-state");
|
28
|
+
var import_utils = require("@yamada-ui/utils");
|
29
|
+
var import_react = require("react");
|
30
|
+
var isEvent = (value) => value && (0, import_utils.isObject)(value) && (0, import_utils.isObject)(value.target);
|
31
|
+
var useRadioGroup = ({
|
32
|
+
id,
|
33
|
+
name,
|
34
|
+
defaultValue,
|
35
|
+
isNative,
|
36
|
+
value: valueProp,
|
37
|
+
onChange: onChangeProp,
|
38
|
+
...props
|
39
|
+
}) => {
|
40
|
+
const uuid = (0, import_react.useId)();
|
41
|
+
id != null ? id : id = uuid;
|
42
|
+
name != null ? name : name = `radio-${id}`;
|
43
|
+
const onChangeRef = (0, import_utils.useCallbackRef)(onChangeProp);
|
44
|
+
const [value, setValue] = (0, import_use_controllable_state.useControllableState)({
|
45
|
+
defaultValue,
|
46
|
+
value: valueProp,
|
47
|
+
onChange: onChangeRef
|
48
|
+
});
|
49
|
+
const containerRef = (0, import_react.useRef)(null);
|
50
|
+
const onFocus = (0, import_react.useCallback)(() => {
|
51
|
+
const container = containerRef.current;
|
52
|
+
if (!container) return;
|
53
|
+
let query = `input:not(:disabled):checked`;
|
54
|
+
let firstInput = container.querySelector(query);
|
55
|
+
if (firstInput) {
|
56
|
+
firstInput.focus();
|
57
|
+
} else {
|
58
|
+
query = `input:not(:disabled)`;
|
59
|
+
firstInput = container.querySelector(query);
|
60
|
+
firstInput == null ? void 0 : firstInput.focus();
|
61
|
+
}
|
62
|
+
}, []);
|
63
|
+
const onChange = (0, import_react.useCallback)(
|
64
|
+
(evOrValue) => {
|
65
|
+
const nextValue = isEvent(evOrValue) ? evOrValue.target.value : evOrValue;
|
66
|
+
setValue(nextValue);
|
67
|
+
},
|
68
|
+
[setValue]
|
69
|
+
);
|
70
|
+
const getContainerProps = (0, import_react.useCallback)(
|
71
|
+
(props2 = {}, ref = null) => ({
|
72
|
+
role: "radiogroup",
|
73
|
+
...props2,
|
74
|
+
ref: (0, import_utils.mergeRefs)(ref, containerRef)
|
75
|
+
}),
|
76
|
+
[]
|
77
|
+
);
|
78
|
+
const getRadioProps = (0, import_react.useCallback)(
|
79
|
+
(props2 = {}, ref = null) => {
|
80
|
+
const checked = props2.value === value;
|
81
|
+
return {
|
82
|
+
...props2,
|
83
|
+
ref,
|
84
|
+
name,
|
85
|
+
"aria-checked": checked,
|
86
|
+
[isNative ? "checked" : "isChecked"]: (
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
88
|
+
value != null ? checked : void 0
|
89
|
+
),
|
90
|
+
onChange
|
91
|
+
};
|
92
|
+
},
|
93
|
+
[name, value, onChange, isNative]
|
94
|
+
);
|
95
|
+
return {
|
96
|
+
id,
|
97
|
+
name,
|
98
|
+
props,
|
99
|
+
setValue,
|
100
|
+
value,
|
101
|
+
getContainerProps,
|
102
|
+
getRadioProps,
|
103
|
+
onChange,
|
104
|
+
onFocus
|
105
|
+
};
|
106
|
+
};
|
107
|
+
// Annotate the CommonJS export names for ESM import in node:
|
108
|
+
0 && (module.exports = {
|
109
|
+
useRadioGroup
|
110
|
+
});
|
111
|
+
//# sourceMappingURL=use-radio-group.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/use-radio-group.ts"],"sourcesContent":["import type { PropGetter } from \"@yamada-ui/core\"\nimport type { Dict } from \"@yamada-ui/utils\"\nimport type { ChangeEvent } from \"react\"\nimport { useControllableState } from \"@yamada-ui/use-controllable-state\"\nimport { isObject, mergeRefs, useCallbackRef } from \"@yamada-ui/utils\"\nimport { useCallback, useId, useRef } from \"react\"\n\nconst isEvent = (value: any): value is { target: HTMLInputElement } =>\n value && isObject(value) && isObject(value.target)\n\nexport interface UseRadioGroupProps<Y extends number | string = 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 initial value of the radio group.\n */\n defaultValue?: Y\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 * The value of the radio group.\n */\n value?: Y\n /**\n * The callback fired when any children radio is checked or unchecked.\n */\n onChange?: (value: Y) => void\n}\n\nexport const useRadioGroup = <\n Y extends number | string,\n M extends Dict = Dict,\n>({\n id,\n name,\n defaultValue,\n isNative,\n value: valueProp,\n onChange: onChangeProp,\n ...props\n}: M & UseRadioGroupProps<Y>) => {\n const uuid = useId()\n\n id ??= uuid\n name ??= `radio-${id}`\n\n const onChangeRef = useCallbackRef(onChangeProp)\n\n const [value, setValue] = useControllableState({\n defaultValue,\n value: valueProp,\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 role: \"radiogroup\",\n ...props,\n ref: mergeRefs(ref, containerRef),\n }),\n [],\n )\n\n const getRadioProps: PropGetter<\n { value?: Y },\n {\n checked?: boolean\n isChecked?: boolean\n value?: Y\n }\n > = useCallback(\n (props = {}, ref = null) => {\n const checked = props.value === value\n\n return {\n ...props,\n ref,\n name,\n \"aria-checked\": checked,\n [isNative ? \"checked\" : \"isChecked\"]:\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n value != null ? checked : undefined,\n onChange,\n }\n },\n [name, value, onChange, isNative],\n )\n\n return {\n id,\n name,\n props,\n setValue,\n value,\n getContainerProps,\n getRadioProps,\n onChange,\n onFocus,\n }\n}\n\nexport type UseRadioGroupReturn<Y extends number | string = string> =\n ReturnType<typeof useRadioGroup<Y>>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,oCAAqC;AACrC,mBAAoD;AACpD,mBAA2C;AAE3C,IAAM,UAAU,CAAC,UACf,aAAS,uBAAS,KAAK,SAAK,uBAAS,MAAM,MAAM;AAkC5C,IAAM,gBAAgB,CAG3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,UAAU;AAAA,EACV,GAAG;AACL,MAAiC;AAC/B,QAAM,WAAO,oBAAM;AAEnB,yBAAO;AACP,+BAAS,SAAS,EAAE;AAEpB,QAAM,kBAAc,6BAAe,YAAY;AAE/C,QAAM,CAAC,OAAO,QAAQ,QAAI,oDAAqB;AAAA,IAC7C;AAAA,IACA,OAAO;AAAA,IACP,UAAU;AAAA,EACZ,CAAC;AAED,QAAM,mBAAe,qBAAY,IAAI;AAErC,QAAM,cAAU,0BAAY,MAAM;AAChC,UAAM,YAAY,aAAa;AAE/B,QAAI,CAAC,UAAW;AAEhB,QAAI,QAAQ;AAEZ,QAAI,aAAa,UAAU,cAAc,KAAK;AAE9C,QAAI,YAAY;AACd,iBAAW,MAAM;AAAA,IACnB,OAAO;AACL,cAAQ;AACR,mBAAa,UAAU,cAAc,KAAK;AAE1C,+CAAY;AAAA,IACd;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,eAAW;AAAA,IACf,CAAC,cAAiD;AAChD,YAAM,YACJ,QAAQ,SAAS,IAAI,UAAU,OAAO,QAAQ;AAGhD,eAAS,SAAS;AAAA,IACpB;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,wBAAgC;AAAA,IACpC,CAACA,SAAQ,CAAC,GAAG,MAAM,UAAU;AAAA,MAC3B,MAAM;AAAA,MACN,GAAGA;AAAA,MACH,SAAK,wBAAU,KAAK,YAAY;AAAA,IAClC;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAM,oBAOF;AAAA,IACF,CAACA,SAAQ,CAAC,GAAG,MAAM,SAAS;AAC1B,YAAM,UAAUA,OAAM,UAAU;AAEhC,aAAO;AAAA,QACL,GAAGA;AAAA,QACH;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB,CAAC,WAAW,YAAY,WAAW;AAAA;AAAA,UAEjC,SAAS,OAAO,UAAU;AAAA;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,MAAM,OAAO,UAAU,QAAQ;AAAA,EAClC;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":["props"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
@@ -0,0 +1,87 @@
|
|
1
|
+
import * as _yamada_ui_form_control from '@yamada-ui/form-control';
|
2
|
+
import { FormControlOptions } from '@yamada-ui/form-control';
|
3
|
+
import * as react from 'react';
|
4
|
+
import { ChangeEventHandler } from 'react';
|
5
|
+
import { PropGetter } from '@yamada-ui/core';
|
6
|
+
import { Dict } from '@yamada-ui/utils';
|
7
|
+
|
8
|
+
interface UseRadioProps<Y extends number | string = string> extends FormControlOptions {
|
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;
|
29
|
+
/**
|
30
|
+
* If `true`, the radio will be initially checked.
|
31
|
+
*
|
32
|
+
* @default false
|
33
|
+
*
|
34
|
+
* @deprecated Use `defaultChecked` instead.
|
35
|
+
*/
|
36
|
+
defaultIsChecked?: boolean;
|
37
|
+
/**
|
38
|
+
* If `true`, the radio will be checked.
|
39
|
+
*
|
40
|
+
* @default false
|
41
|
+
*
|
42
|
+
* @deprecated Use `checked` instead.
|
43
|
+
*/
|
44
|
+
isChecked?: boolean;
|
45
|
+
/**
|
46
|
+
* The value to be used in the radio button.
|
47
|
+
*/
|
48
|
+
value?: Y;
|
49
|
+
/**
|
50
|
+
* The callback invoked when the checked state changes.
|
51
|
+
*/
|
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<"div", undefined>;
|
82
|
+
getInputProps: PropGetter<"input", undefined>;
|
83
|
+
getLabelProps: PropGetter<"span", undefined>;
|
84
|
+
};
|
85
|
+
type UseRadioReturn = ReturnType<typeof useRadio>;
|
86
|
+
|
87
|
+
export { type UseRadioProps, type UseRadioReturn, useRadio };
|
@@ -0,0 +1,87 @@
|
|
1
|
+
import * as _yamada_ui_form_control from '@yamada-ui/form-control';
|
2
|
+
import { FormControlOptions } from '@yamada-ui/form-control';
|
3
|
+
import * as react from 'react';
|
4
|
+
import { ChangeEventHandler } from 'react';
|
5
|
+
import { PropGetter } from '@yamada-ui/core';
|
6
|
+
import { Dict } from '@yamada-ui/utils';
|
7
|
+
|
8
|
+
interface UseRadioProps<Y extends number | string = string> extends FormControlOptions {
|
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;
|
29
|
+
/**
|
30
|
+
* If `true`, the radio will be initially checked.
|
31
|
+
*
|
32
|
+
* @default false
|
33
|
+
*
|
34
|
+
* @deprecated Use `defaultChecked` instead.
|
35
|
+
*/
|
36
|
+
defaultIsChecked?: boolean;
|
37
|
+
/**
|
38
|
+
* If `true`, the radio will be checked.
|
39
|
+
*
|
40
|
+
* @default false
|
41
|
+
*
|
42
|
+
* @deprecated Use `checked` instead.
|
43
|
+
*/
|
44
|
+
isChecked?: boolean;
|
45
|
+
/**
|
46
|
+
* The value to be used in the radio button.
|
47
|
+
*/
|
48
|
+
value?: Y;
|
49
|
+
/**
|
50
|
+
* The callback invoked when the checked state changes.
|
51
|
+
*/
|
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<"div", undefined>;
|
82
|
+
getInputProps: PropGetter<"input", undefined>;
|
83
|
+
getLabelProps: PropGetter<"span", undefined>;
|
84
|
+
};
|
85
|
+
type UseRadioReturn = ReturnType<typeof useRadio>;
|
86
|
+
|
87
|
+
export { type UseRadioProps, type UseRadioReturn, useRadio };
|
@@ -0,0 +1,207 @@
|
|
1
|
+
"use client"
|
2
|
+
"use strict";
|
3
|
+
var __defProp = Object.defineProperty;
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
7
|
+
var __export = (target, all) => {
|
8
|
+
for (var name in all)
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
10
|
+
};
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
13
|
+
for (let key of __getOwnPropNames(from))
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
16
|
+
}
|
17
|
+
return to;
|
18
|
+
};
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
20
|
+
|
21
|
+
// src/use-radio.ts
|
22
|
+
var use_radio_exports = {};
|
23
|
+
__export(use_radio_exports, {
|
24
|
+
useRadio: () => useRadio
|
25
|
+
});
|
26
|
+
module.exports = __toCommonJS(use_radio_exports);
|
27
|
+
var import_form_control = require("@yamada-ui/form-control");
|
28
|
+
var import_use_focus_visible = require("@yamada-ui/use-focus-visible");
|
29
|
+
var import_utils = require("@yamada-ui/utils");
|
30
|
+
var import_react = require("react");
|
31
|
+
var useRadio = ({
|
32
|
+
id,
|
33
|
+
...props
|
34
|
+
}) => {
|
35
|
+
const uuid = (0, import_react.useId)();
|
36
|
+
id != null ? id : id = uuid;
|
37
|
+
let {
|
38
|
+
id: _id,
|
39
|
+
name,
|
40
|
+
checked: checkedProp,
|
41
|
+
defaultChecked,
|
42
|
+
defaultIsChecked,
|
43
|
+
isChecked: isCheckedProp,
|
44
|
+
value,
|
45
|
+
onChange: onChangeProp,
|
46
|
+
...computedProps
|
47
|
+
} = (0, import_form_control.useFormControlProps)({ id, ...props });
|
48
|
+
checkedProp != null ? checkedProp : checkedProp = isCheckedProp;
|
49
|
+
defaultChecked != null ? defaultChecked : defaultChecked = defaultIsChecked;
|
50
|
+
const [
|
51
|
+
{
|
52
|
+
"aria-readonly": _ariaReadonly,
|
53
|
+
disabled,
|
54
|
+
readOnly,
|
55
|
+
required,
|
56
|
+
onBlur: onBlurProp,
|
57
|
+
onFocus: onFocusProp,
|
58
|
+
...formControlProps
|
59
|
+
},
|
60
|
+
rest
|
61
|
+
] = (0, import_utils.splitObject)(computedProps, import_form_control.formControlProperties);
|
62
|
+
const [focusVisible, setFocusVisible] = (0, import_react.useState)(false);
|
63
|
+
const [focused, setFocused] = (0, import_react.useState)(false);
|
64
|
+
const [hovered, setHovered] = (0, import_react.useState)(false);
|
65
|
+
const [active, setActive] = (0, import_react.useState)(false);
|
66
|
+
const [checked, setChecked] = (0, import_react.useState)(!!defaultChecked);
|
67
|
+
const controlled = checkedProp !== void 0;
|
68
|
+
const resolvedChecked = controlled ? checkedProp : checked;
|
69
|
+
(0, import_react.useEffect)(() => {
|
70
|
+
return (0, import_use_focus_visible.trackFocusVisible)(setFocusVisible);
|
71
|
+
}, []);
|
72
|
+
const onChange = (0, import_utils.useCallbackRef)(
|
73
|
+
(ev) => {
|
74
|
+
if (readOnly || disabled) {
|
75
|
+
ev.preventDefault();
|
76
|
+
return;
|
77
|
+
}
|
78
|
+
if (!controlled) setChecked(ev.target.checked);
|
79
|
+
onChangeProp == null ? void 0 : onChangeProp(ev);
|
80
|
+
},
|
81
|
+
[readOnly, disabled, controlled]
|
82
|
+
);
|
83
|
+
const onFocus = (0, import_utils.useCallbackRef)(onFocusProp);
|
84
|
+
const onBlur = (0, import_utils.useCallbackRef)(onBlurProp);
|
85
|
+
const onKeyDown = (0, import_react.useCallback)(
|
86
|
+
({ key }) => {
|
87
|
+
if (key === " ") setActive(true);
|
88
|
+
},
|
89
|
+
[setActive]
|
90
|
+
);
|
91
|
+
const onKeyUp = (0, import_react.useCallback)(
|
92
|
+
({ key }) => {
|
93
|
+
if (key === " ") setActive(false);
|
94
|
+
},
|
95
|
+
[setActive]
|
96
|
+
);
|
97
|
+
const getContainerProps = (0, import_react.useCallback)(
|
98
|
+
(props2 = {}, ref = null) => ({
|
99
|
+
...formControlProps,
|
100
|
+
...props2,
|
101
|
+
ref,
|
102
|
+
"data-checked": (0, import_utils.dataAttr)(resolvedChecked),
|
103
|
+
"data-focus": (0, import_utils.dataAttr)(focused),
|
104
|
+
"data-focus-visible": (0, import_utils.dataAttr)(focused && focusVisible)
|
105
|
+
}),
|
106
|
+
[resolvedChecked, formControlProps, focused, focusVisible]
|
107
|
+
);
|
108
|
+
const getIconProps = (0, import_react.useCallback)(
|
109
|
+
(props2 = {}, ref = null) => ({
|
110
|
+
...formControlProps,
|
111
|
+
...props2,
|
112
|
+
ref,
|
113
|
+
"aria-hidden": true,
|
114
|
+
"data-active": (0, import_utils.dataAttr)(active),
|
115
|
+
"data-checked": (0, import_utils.dataAttr)(resolvedChecked),
|
116
|
+
"data-focus": (0, import_utils.dataAttr)(focused),
|
117
|
+
"data-focus-visible": (0, import_utils.dataAttr)(focused && focusVisible),
|
118
|
+
"data-hover": (0, import_utils.dataAttr)(hovered),
|
119
|
+
onMouseDown: (0, import_utils.handlerAll)(props2.onMouseDown, () => setActive(true)),
|
120
|
+
onMouseEnter: (0, import_utils.handlerAll)(props2.onMouseEnter, () => setHovered(true)),
|
121
|
+
onMouseLeave: (0, import_utils.handlerAll)(props2.onMouseLeave, () => setHovered(false)),
|
122
|
+
onMouseUp: (0, import_utils.handlerAll)(props2.onMouseUp, () => setActive(false))
|
123
|
+
}),
|
124
|
+
[resolvedChecked, active, focused, focusVisible, hovered, formControlProps]
|
125
|
+
);
|
126
|
+
const getInputProps = (0, import_react.useCallback)(
|
127
|
+
(props2 = {}, ref = null) => ({
|
128
|
+
...formControlProps,
|
129
|
+
...props2,
|
130
|
+
id,
|
131
|
+
ref,
|
132
|
+
type: "radio",
|
133
|
+
name,
|
134
|
+
style: {
|
135
|
+
border: "0px",
|
136
|
+
clip: "rect(0px, 0px, 0px, 0px)",
|
137
|
+
height: "1px",
|
138
|
+
margin: "-1px",
|
139
|
+
overflow: "hidden",
|
140
|
+
padding: "0px",
|
141
|
+
position: "absolute",
|
142
|
+
whiteSpace: "nowrap",
|
143
|
+
width: "1px"
|
144
|
+
},
|
145
|
+
"aria-checked": resolvedChecked,
|
146
|
+
checked: resolvedChecked,
|
147
|
+
disabled,
|
148
|
+
readOnly,
|
149
|
+
required,
|
150
|
+
value,
|
151
|
+
onBlur: (0, import_utils.handlerAll)(props2.onBlur, onBlur, () => setFocused(false)),
|
152
|
+
onChange: (0, import_utils.handlerAll)(props2.onChange, onChange),
|
153
|
+
onFocus: (0, import_utils.handlerAll)(props2.onFocus, onFocus, () => setFocused(true)),
|
154
|
+
onKeyDown: (0, import_utils.handlerAll)(props2.onKeyDown, onKeyDown),
|
155
|
+
onKeyUp: (0, import_utils.handlerAll)(props2.onKeyUp, onKeyUp)
|
156
|
+
}),
|
157
|
+
[
|
158
|
+
formControlProps,
|
159
|
+
id,
|
160
|
+
name,
|
161
|
+
value,
|
162
|
+
required,
|
163
|
+
disabled,
|
164
|
+
readOnly,
|
165
|
+
resolvedChecked,
|
166
|
+
onChange,
|
167
|
+
onBlur,
|
168
|
+
onFocus,
|
169
|
+
onKeyDown,
|
170
|
+
onKeyUp
|
171
|
+
]
|
172
|
+
);
|
173
|
+
const getLabelProps = (0, import_react.useCallback)(
|
174
|
+
(props2 = {}, ref = null) => ({
|
175
|
+
...formControlProps,
|
176
|
+
...props2,
|
177
|
+
ref,
|
178
|
+
"data-checked": (0, import_utils.dataAttr)(resolvedChecked),
|
179
|
+
onMouseDown: (0, import_utils.handlerAll)(props2.onMouseDown, (ev) => {
|
180
|
+
ev.preventDefault();
|
181
|
+
ev.stopPropagation();
|
182
|
+
}),
|
183
|
+
onTouchStart: (0, import_utils.handlerAll)(props2.onTouchStart, (ev) => {
|
184
|
+
ev.preventDefault();
|
185
|
+
ev.stopPropagation();
|
186
|
+
})
|
187
|
+
}),
|
188
|
+
[resolvedChecked, formControlProps]
|
189
|
+
);
|
190
|
+
return {
|
191
|
+
active,
|
192
|
+
checked: resolvedChecked,
|
193
|
+
focused,
|
194
|
+
focusVisible,
|
195
|
+
hovered,
|
196
|
+
props: rest,
|
197
|
+
getContainerProps,
|
198
|
+
getIconProps,
|
199
|
+
getInputProps,
|
200
|
+
getLabelProps
|
201
|
+
};
|
202
|
+
};
|
203
|
+
// Annotate the CommonJS export names for ESM import in node:
|
204
|
+
0 && (module.exports = {
|
205
|
+
useRadio
|
206
|
+
});
|
207
|
+
//# sourceMappingURL=use-radio.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/use-radio.ts"],"sourcesContent":["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":"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","names":["props"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@yamada-ui/radio",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.3.0-dev-20241127021420",
|
4
4
|
"description": "Yamada UI radio component",
|
5
5
|
"keywords": [
|
6
6
|
"yamada",
|
@@ -36,12 +36,12 @@
|
|
36
36
|
"url": "https://github.com/yamada-ui/yamada-ui/issues"
|
37
37
|
},
|
38
38
|
"dependencies": {
|
39
|
-
"@yamada-ui/core": "1.16.0-
|
40
|
-
"@yamada-ui/form-control": "2.1.9-
|
41
|
-
"@yamada-ui/layouts": "1.2.3-
|
42
|
-
"@yamada-ui/use-controllable-state": "1.0.24-
|
43
|
-
"@yamada-ui/use-focus-visible": "1.1.11-
|
44
|
-
"@yamada-ui/utils": "1.6.0-
|
39
|
+
"@yamada-ui/core": "1.16.0-dev-20241127021420",
|
40
|
+
"@yamada-ui/form-control": "2.1.9-dev-20241127021420",
|
41
|
+
"@yamada-ui/layouts": "1.2.3-dev-20241127021420",
|
42
|
+
"@yamada-ui/use-controllable-state": "1.0.24-dev-20241127021420",
|
43
|
+
"@yamada-ui/use-focus-visible": "1.1.11-dev-20241127021420",
|
44
|
+
"@yamada-ui/utils": "1.6.0-dev-20241127021420"
|
45
45
|
},
|
46
46
|
"devDependencies": {
|
47
47
|
"clean-package": "2.2.0",
|
package/dist/chunk-6FMV6NX2.mjs
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
"use client"
|
2
|
-
|
3
|
-
// src/radio-context.ts
|
4
|
-
import { createContext } from "@yamada-ui/utils";
|
5
|
-
var [RadioGroupProvider, useRadioGroupContext] = createContext({
|
6
|
-
name: "RadioGroupContext",
|
7
|
-
strict: false
|
8
|
-
});
|
9
|
-
|
10
|
-
export {
|
11
|
-
RadioGroupProvider,
|
12
|
-
useRadioGroupContext
|
13
|
-
};
|
14
|
-
//# sourceMappingURL=chunk-6FMV6NX2.mjs.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../src/radio-context.ts"],"sourcesContent":["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":";;;AAGA,SAAS,qBAAqB;AAUvB,IAAM,CAAC,oBAAoB,oBAAoB,IAAI,cAExD;AAAA,EACA,MAAM;AAAA,EACN,QAAQ;AACV,CAAC;","names":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../src/radio.tsx"],"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"],"mappings":"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","names":["props"]}
|