@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.
Files changed (88) hide show
  1. package/dist/chunk-27VC2SJI.mjs +30 -0
  2. package/dist/chunk-27VC2SJI.mjs.map +1 -0
  3. package/dist/chunk-AOVCDCCW.mjs +88 -0
  4. package/dist/chunk-AOVCDCCW.mjs.map +1 -0
  5. package/dist/chunk-DO4JVJRM.mjs +103 -0
  6. package/dist/chunk-DO4JVJRM.mjs.map +1 -0
  7. package/dist/{chunk-PUPRIHYJ.mjs → chunk-HFS5TQ47.mjs} +8 -115
  8. package/dist/chunk-HFS5TQ47.mjs.map +1 -0
  9. package/dist/chunk-JLL7F3NY.mjs +120 -0
  10. package/dist/chunk-JLL7F3NY.mjs.map +1 -0
  11. package/dist/chunk-NP4GICPF.mjs +124 -0
  12. package/dist/chunk-NP4GICPF.mjs.map +1 -0
  13. package/dist/chunk-Q5GTUIUF.mjs +56 -0
  14. package/dist/chunk-Q5GTUIUF.mjs.map +1 -0
  15. package/dist/chunk-YDYOLCNG.mjs +94 -0
  16. package/dist/chunk-YDYOLCNG.mjs.map +1 -0
  17. package/dist/chunk-YRIADAI7.mjs +32 -0
  18. package/dist/chunk-YRIADAI7.mjs.map +1 -0
  19. package/dist/chunk-ZLJHOIFP.mjs +26 -0
  20. package/dist/chunk-ZLJHOIFP.mjs.map +1 -0
  21. package/dist/index.d.mts +11 -4
  22. package/dist/index.d.ts +11 -4
  23. package/dist/index.js +344 -37
  24. package/dist/index.js.map +1 -1
  25. package/dist/index.mjs +29 -5
  26. package/dist/radio-card-addon.d.mts +8 -0
  27. package/dist/radio-card-addon.d.ts +8 -0
  28. package/dist/radio-card-addon.js +69 -0
  29. package/dist/radio-card-addon.js.map +1 -0
  30. package/dist/radio-card-addon.mjs +9 -0
  31. package/dist/radio-card-addon.mjs.map +1 -0
  32. package/dist/radio-card-description.d.mts +8 -0
  33. package/dist/radio-card-description.d.ts +8 -0
  34. package/dist/radio-card-description.js +67 -0
  35. package/dist/radio-card-description.js.map +1 -0
  36. package/dist/radio-card-description.mjs +9 -0
  37. package/dist/radio-card-description.mjs.map +1 -0
  38. package/dist/radio-card-group.d.mts +33 -0
  39. package/dist/radio-card-group.d.ts +33 -0
  40. package/dist/radio-card-group.js +584 -0
  41. package/dist/radio-card-group.js.map +1 -0
  42. package/dist/radio-card-group.mjs +15 -0
  43. package/dist/radio-card-group.mjs.map +1 -0
  44. package/dist/radio-card-label.d.mts +22 -0
  45. package/dist/radio-card-label.d.ts +22 -0
  46. package/dist/radio-card-label.js +93 -0
  47. package/dist/radio-card-label.js.map +1 -0
  48. package/dist/radio-card-label.mjs +9 -0
  49. package/dist/radio-card-label.mjs.map +1 -0
  50. package/dist/radio-card.d.mts +61 -0
  51. package/dist/radio-card.d.ts +61 -0
  52. package/dist/radio-card.js +412 -0
  53. package/dist/radio-card.js.map +1 -0
  54. package/dist/radio-card.mjs +13 -0
  55. package/dist/radio-card.mjs.map +1 -0
  56. package/dist/radio-context.d.mts +25 -3
  57. package/dist/radio-context.d.ts +25 -3
  58. package/dist/radio-context.js +16 -0
  59. package/dist/radio-context.js.map +1 -1
  60. package/dist/radio-context.mjs +9 -1
  61. package/dist/radio-group.d.mts +15 -58
  62. package/dist/radio-group.d.ts +15 -58
  63. package/dist/radio-group.js +56 -39
  64. package/dist/radio-group.js.map +1 -1
  65. package/dist/radio-group.mjs +7 -7
  66. package/dist/radio.d.mts +14 -80
  67. package/dist/radio.d.ts +14 -80
  68. package/dist/radio.js +31 -17
  69. package/dist/radio.js.map +1 -1
  70. package/dist/radio.mjs +5 -6
  71. package/dist/use-radio-group.d.mts +56 -0
  72. package/dist/use-radio-group.d.ts +56 -0
  73. package/dist/use-radio-group.js +111 -0
  74. package/dist/use-radio-group.js.map +1 -0
  75. package/dist/use-radio-group.mjs +8 -0
  76. package/dist/use-radio-group.mjs.map +1 -0
  77. package/dist/use-radio.d.mts +87 -0
  78. package/dist/use-radio.d.ts +87 -0
  79. package/dist/use-radio.js +207 -0
  80. package/dist/use-radio.js.map +1 -0
  81. package/dist/use-radio.mjs +8 -0
  82. package/dist/use-radio.mjs.map +1 -0
  83. package/package.json +7 -7
  84. package/dist/chunk-6FMV6NX2.mjs +0 -14
  85. package/dist/chunk-6FMV6NX2.mjs.map +0 -1
  86. package/dist/chunk-PUPRIHYJ.mjs.map +0 -1
  87. package/dist/chunk-QAADRIFZ.mjs +0 -177
  88. package/dist/chunk-QAADRIFZ.mjs.map +0 -1
@@ -1,177 +0,0 @@
1
- "use client"
2
- import {
3
- Radio
4
- } from "./chunk-PUPRIHYJ.mjs";
5
- import {
6
- RadioGroupProvider
7
- } from "./chunk-6FMV6NX2.mjs";
8
-
9
- // src/radio-group.tsx
10
- import { useFormControl } from "@yamada-ui/form-control";
11
- import { Flex } from "@yamada-ui/layouts";
12
- import { useControllableState } from "@yamada-ui/use-controllable-state";
13
- import {
14
- cx,
15
- getValidChildren,
16
- isObject,
17
- mergeRefs,
18
- useCallbackRef
19
- } from "@yamada-ui/utils";
20
- import { forwardRef, useCallback, useId, useRef } from "react";
21
- import { jsx } from "react/jsx-runtime";
22
- var isEvent = (value) => value && isObject(value) && isObject(value.target);
23
- var useRadioGroup = ({
24
- id,
25
- name,
26
- defaultValue,
27
- isNative,
28
- value: valueProp,
29
- onChange: onChangeProp,
30
- ...props
31
- }) => {
32
- const uuid = useId();
33
- id != null ? id : id = uuid;
34
- name != null ? name : name = `radio-${id}`;
35
- const onChangeRef = useCallbackRef(onChangeProp);
36
- const [value, setValue] = useControllableState({
37
- defaultValue,
38
- value: valueProp,
39
- onChange: onChangeRef
40
- });
41
- const containerRef = useRef(null);
42
- const onFocus = useCallback(() => {
43
- const container = containerRef.current;
44
- if (!container) return;
45
- let query = `input:not(:disabled):checked`;
46
- let firstInput = container.querySelector(query);
47
- if (firstInput) {
48
- firstInput.focus();
49
- } else {
50
- query = `input:not(:disabled)`;
51
- firstInput = container.querySelector(query);
52
- firstInput == null ? void 0 : firstInput.focus();
53
- }
54
- }, []);
55
- const onChange = useCallback(
56
- (evOrValue) => {
57
- const nextValue = isEvent(evOrValue) ? evOrValue.target.value : evOrValue;
58
- setValue(nextValue);
59
- },
60
- [setValue]
61
- );
62
- const getContainerProps = useCallback(
63
- (props2 = {}, ref = null) => ({
64
- role: "radiogroup",
65
- ...props2,
66
- ref: mergeRefs(ref, containerRef)
67
- }),
68
- []
69
- );
70
- const getRadioProps = useCallback(
71
- (props2 = {}, ref = null) => {
72
- const checked = props2.value === value;
73
- return {
74
- ...props2,
75
- ref,
76
- name,
77
- "aria-checked": checked,
78
- [isNative ? "checked" : "isChecked"]: (
79
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
80
- value != null ? checked : void 0
81
- ),
82
- onChange
83
- };
84
- },
85
- [name, value, onChange, isNative]
86
- );
87
- return {
88
- id,
89
- name,
90
- props,
91
- setValue,
92
- value,
93
- getContainerProps,
94
- getRadioProps,
95
- onChange,
96
- onFocus
97
- };
98
- };
99
- var RadioGroup = forwardRef(
100
- ({
101
- id: idProp,
102
- className,
103
- colorScheme,
104
- size,
105
- variant,
106
- children,
107
- direction = "column",
108
- gap,
109
- items = [],
110
- ...props
111
- }, ref) => {
112
- const {
113
- isDisabled,
114
- isInvalid,
115
- isReadOnly,
116
- isRequired,
117
- labelId,
118
- ...computedProps
119
- } = useFormControl({
120
- id: idProp,
121
- ...props
122
- });
123
- const {
124
- id,
125
- name,
126
- props: rest,
127
- value,
128
- getContainerProps,
129
- onChange
130
- } = useRadioGroup(computedProps);
131
- const validChildren = getValidChildren(children);
132
- let computedChildren = [];
133
- if (!validChildren.length && items.length) {
134
- computedChildren = items.map(({ label, value: value2, ...props2 }, i) => /* @__PURE__ */ jsx(Radio, { value: value2, ...props2, children: label }, i));
135
- }
136
- return /* @__PURE__ */ jsx(
137
- RadioGroupProvider,
138
- {
139
- value: {
140
- name,
141
- colorScheme,
142
- size,
143
- variant,
144
- isDisabled,
145
- isInvalid,
146
- isReadOnly,
147
- isRequired,
148
- value,
149
- onChange
150
- },
151
- children: /* @__PURE__ */ jsx(
152
- Flex,
153
- {
154
- ref,
155
- className: cx("ui-radio-group", className),
156
- gap: gap != null ? gap : direction === "row" ? "1rem" : void 0,
157
- ...getContainerProps({
158
- id,
159
- "aria-labelledby": labelId,
160
- ...rest
161
- }),
162
- direction,
163
- children: children != null ? children : computedChildren
164
- }
165
- )
166
- }
167
- );
168
- }
169
- );
170
- RadioGroup.displayName = "RadioGroup";
171
- RadioGroup.__ui__ = "RadioGroup";
172
-
173
- export {
174
- useRadioGroup,
175
- RadioGroup
176
- };
177
- //# sourceMappingURL=chunk-QAADRIFZ.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/radio-group.tsx"],"sourcesContent":["import type { ComponentArgs, PropGetter, ThemeProps } from \"@yamada-ui/core\"\nimport type { FormControlOptions } from \"@yamada-ui/form-control\"\nimport type { FlexProps } from \"@yamada-ui/layouts\"\nimport type { Dict } from \"@yamada-ui/utils\"\nimport type {\n ChangeEvent,\n ForwardedRef,\n ReactElement,\n RefAttributes,\n} from \"react\"\nimport type { RadioProps } from \"./radio\"\nimport type { RadioGroupContext } from \"./radio-context\"\nimport { useFormControl } from \"@yamada-ui/form-control\"\nimport { Flex } from \"@yamada-ui/layouts\"\nimport { useControllableState } from \"@yamada-ui/use-controllable-state\"\nimport {\n cx,\n getValidChildren,\n isObject,\n mergeRefs,\n useCallbackRef,\n} from \"@yamada-ui/utils\"\nimport { forwardRef, useCallback, useId, useRef } from \"react\"\nimport { Radio } from \"./radio\"\nimport { RadioGroupProvider } from \"./radio-context\"\n\nexport type RadioItem<Y extends number | string = string> = {\n label?: string\n} & RadioProps<Y>\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\nexport interface RadioGroupProps<Y extends number | string = string>\n extends ThemeProps<\"Radio\">,\n Omit<FlexProps, \"defaultValue\" | \"onChange\">,\n UseRadioGroupProps<Y>,\n FormControlOptions {\n /**\n * If provided, generate radios based on items.\n *\n * @default '[]'\n */\n items?: RadioItem<Y>[]\n}\n\nexport const RadioGroup = forwardRef(\n <Y extends number | string = string>(\n {\n id: idProp,\n className,\n colorScheme,\n size,\n variant,\n children,\n direction = \"column\",\n gap,\n items = [],\n ...props\n }: RadioGroupProps<Y>,\n ref: ForwardedRef<HTMLDivElement>,\n ) => {\n const {\n isDisabled,\n isInvalid,\n isReadOnly,\n isRequired,\n labelId,\n ...computedProps\n } = useFormControl({\n id: idProp,\n ...props,\n })\n const {\n id,\n name,\n props: rest,\n value,\n getContainerProps,\n onChange,\n } = useRadioGroup(computedProps)\n\n const validChildren = getValidChildren(children)\n let computedChildren: ReactElement[] = []\n\n if (!validChildren.length && items.length) {\n computedChildren = items.map(({ label, value, ...props }, i) => (\n <Radio key={i} value={value} {...props}>\n {label}\n </Radio>\n ))\n }\n\n return (\n <RadioGroupProvider\n value={\n {\n name,\n colorScheme,\n size,\n variant,\n isDisabled,\n isInvalid,\n isReadOnly,\n isRequired,\n value,\n onChange,\n } as RadioGroupContext\n }\n >\n <Flex\n ref={ref}\n className={cx(\"ui-radio-group\", className)}\n gap={gap ?? (direction === \"row\" ? \"1rem\" : undefined)}\n {...getContainerProps({\n id,\n \"aria-labelledby\": labelId,\n ...rest,\n })}\n direction={direction}\n >\n {children ?? computedChildren}\n </Flex>\n </RadioGroupProvider>\n )\n },\n) as {\n <Y extends number | string = string>(\n props: RadioGroupProps<Y> & RefAttributes<HTMLDivElement>,\n ): ReactElement\n} & ComponentArgs\n\nRadioGroup.displayName = \"RadioGroup\"\nRadioGroup.__ui__ = \"RadioGroup\"\n"],"mappings":"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","names":["props","value"]}