diff --git a/apps/docs/pages/docs/Components/Inputs/checkbox.en-US.mdx b/apps/docs/pages/docs/Components/Inputs/checkbox.en-US.mdx index 741293ef..23d1b5f3 100644 --- a/apps/docs/pages/docs/Components/Inputs/checkbox.en-US.mdx +++ b/apps/docs/pages/docs/Components/Inputs/checkbox.en-US.mdx @@ -12,7 +12,7 @@ Component to render a checkbox input. ## Import ```js -import { Checkbox, CheckboxGroup } from 'react-native-ficus-ui'; +import { Checkbox, CheckboxGroup, Button } from 'react-native-ficus-ui'; ``` ## Usage @@ -67,16 +67,17 @@ import { Checkbox, CheckboxGroup } from 'react-native-ficus-ui'; {["Option 1", "Option 2", "Option 3"].map((item) => ( - {({ isChecked }) => ( - ( + )} @@ -126,6 +127,12 @@ Extends every `TouchableOpacity` props. prop={{ type: "(value: string | number) => void", required: false }} /> +### `onToggle` + void", required: false }} +/> + ### `icon` {["Option 1", "Option 2", "Option 3"].map((item) => ( - {({ isChecked }) => ( - ( + )} ))} @@ -129,6 +128,12 @@ Extends every `TouchableOpacity` props. prop={{ type: "boolean", required: false }} /> +### `onToggle` + void", required: false }} +/> + ### `isDisabled` { return ( - + Checkbox component Option 1 - Option 1 + + Option 1 + - }>Option 1 + } + > + Option 1 + @@ -27,9 +47,7 @@ const CheckboxComponent = () => { - - Option 1 - + Option 1 Option 1 @@ -48,20 +66,41 @@ const CheckboxComponent = () => { - {["Option 1", "Option 2", "Option 3"].map((item) => ( + {['Option 1', 'Option 2', 'Option 3'].map((item) => ( {({ isChecked }) => ( - {item} + {item} )} - + + ))} + + + + + + + {['Option 1', 'Option 2', 'Option 3'].map((item) => ( + + {({ isChecked, onToggle }) => ( + + )} ))} diff --git a/apps/examples/app/components/Radio.tsx b/apps/examples/app/components/Radio.tsx index eb05a43f..9195504a 100644 --- a/apps/examples/app/components/Radio.tsx +++ b/apps/examples/app/components/Radio.tsx @@ -1,9 +1,21 @@ -import { Badge, Box, HStack, VStack, Radio, RadioGroup, Text, SafeAreaBox, useColorModeValue } from "react-native-ficus-ui"; -import ExampleSection from "@/src/ExampleSection"; +import { + Badge, + Box, + Button, + HStack, + Radio, + RadioGroup, + SafeAreaBox, + Text, + VStack, + useColorModeValue, +} from 'react-native-ficus-ui'; + +import ExampleSection from '@/src/ExampleSection'; const RadioComponent = () => { return ( - + Radio component @@ -19,24 +31,16 @@ const RadioComponent = () => { Label - - Label - + Label - - Option 1 - - - Option 2 - - - Option 3 - + Option 1 + Option 2 + Option 3 @@ -63,21 +67,41 @@ const RadioComponent = () => { - {["Option 1", "Option 2", "Option 3"].map((item) => ( - - {({ isChecked }) => ( - - {item} - - )} - + {['Option 1', 'Option 2', 'Option 3'].map((item) => ( + + {({ isChecked }) => ( + + {item} + + )} + + ))} + + + + + + + {['Option 1', 'Option 2', 'Option 3'].map((item) => ( + + {({ isChecked, onToggle }) => ( + + )} + ))} diff --git a/packages/react-native-ficus-ui/src/components/checkbox/checkbox.types.ts b/packages/react-native-ficus-ui/src/components/checkbox/checkbox.types.ts index d18da429..81785b6b 100644 --- a/packages/react-native-ficus-ui/src/components/checkbox/checkbox.types.ts +++ b/packages/react-native-ficus-ui/src/components/checkbox/checkbox.types.ts @@ -1,3 +1,5 @@ +import { GestureResponderEvent } from 'react-native'; + export interface CheckboxGroupStates { isDisabled?: boolean; } @@ -12,6 +14,7 @@ export interface CheckboxGroupOptions extends CheckboxGroupStates { export interface CheckboxStates extends CheckboxGroupStates { isChecked?: boolean; + onToggle?: (event: GestureResponderEvent) => void; } export interface CheckboxOptions extends CheckboxStates { diff --git a/packages/react-native-ficus-ui/src/components/checkbox/index.tsx b/packages/react-native-ficus-ui/src/components/checkbox/index.tsx index c0ed9153..fb6f72dc 100644 --- a/packages/react-native-ficus-ui/src/components/checkbox/index.tsx +++ b/packages/react-native-ficus-ui/src/components/checkbox/index.tsx @@ -88,6 +88,7 @@ export const Checkbox = forwardRef( return children({ isDisabled: isDisabled ?? false, isChecked: checked, + onToggle: handleOnPress, }); } diff --git a/packages/react-native-ficus-ui/src/components/radio/index.tsx b/packages/react-native-ficus-ui/src/components/radio/index.tsx index f65b327d..5ae61c76 100644 --- a/packages/react-native-ficus-ui/src/components/radio/index.tsx +++ b/packages/react-native-ficus-ui/src/components/radio/index.tsx @@ -73,6 +73,7 @@ export const Radio = forwardRef( return children({ isDisabled: isDisabled ?? false, isChecked: checked, + onToggle: handleOnPress, }); } diff --git a/packages/react-native-ficus-ui/src/components/radio/radio.types.ts b/packages/react-native-ficus-ui/src/components/radio/radio.types.ts index 898acc74..c4130473 100644 --- a/packages/react-native-ficus-ui/src/components/radio/radio.types.ts +++ b/packages/react-native-ficus-ui/src/components/radio/radio.types.ts @@ -1,3 +1,5 @@ +import { GestureResponderEvent } from 'react-native'; + export interface RadioGroupStates { isDisabled?: boolean; } @@ -12,6 +14,7 @@ export interface RadioGroupOptions extends RadioGroupStates { export interface RadioStates extends RadioGroupStates { isChecked?: boolean; + onToggle?: (event: GestureResponderEvent) => void; } export interface RadioOptions extends RadioStates { defaultChecked?: boolean;