import React, { useState } from 'react';
import { Button, Select } from 'react-native-magnus'
const [selectValue, setSelectedValue] = useState(null);
const selectRef = React.createRef()
<Button
flex={1}
block
borderWidth={1}
bg="white"
color="gray900"
borderColor="gray300"
onPress={() => {
if (selectRef.current) {
selectRef.current.open();
}
}}>
{selectValue.length ? selectValue.toString() : 'Select'}
</Button>
<Select
onSelect={onSelectOption}
ref={selectRef}
value={selectValue}
title="This is your title"
mt="md"
pb="2xl"
message="This is the long message used to set some context"
roundedTop="xl"
data={[1, 2, 3, 4, 5, 6]}
renderItem={(item, index) => (
<Select.Option value={item} py="md" px="xl">
<Text>Option {index}</Text>
</Select.Option>
)}
/>
If you want to have multi-valued select component, just pass the multiple
props as true
.
import React, { useState } from 'react';
import { Button, Select } from 'react-native-magnus'
const [selectValue, setSelectedValue] = useState([]);
const selectRef = React.createRef()
<Button
flex={1}
block
borderWidth={1}
bg="white"
color="gray900"
borderColor="gray300"
onPress={() => {
if (selectRef.current) {
selectRef.current.open();
}
}}>
{selectValue.length ? selectValue.toString() : 'Select'}
</Button>
<Select
onSelect={onSelectOption}
ref={selectRef}
multiple
value={selectValue}
title="This is your title"
mt="md"
pb="2xl"
message="This is the long message used to set some context"
roundedTop="xl"
data={[1, 2, 3, 4, 5, 6]}
renderItem={(item, index) => (
<Select.Option value={item} py="md" px="xl">
<Text>Option {index}</Text>
</Select.Option>
)}
/>
Property | Description | Type | Default |
---|---|---|---|
m | margin | string | number |
- |
mt | margin top | string | number |
- |
mr | margin right | string | number |
- |
mb | margin bottom | string | number |
- |
ml | margin margin left | string | number |
- |
mx | margin horizonal | string | number |
- |
my | margin vertical | string | number |
- |
p | padding | string | number |
- |
pt | padding top | string | number |
- |
pr | padding right | string | number |
- |
pb | padding bottom | string | number |
- |
pl | padding margin left | string | number |
- |
px | padding horizonal | string | number |
- |
py | padding vertical | string | number |
- |
h | height | number |
- |
bg | background color | string |
- |
rounded | border radius | string | number |
none |
roundedTop | border radius top | string | number |
none |
roundedBottom | border radius bottom | string | number |
none |
roundedLeft | border radius left | string | number |
none |
roundedRight | border radius right | string | number |
none |
borderColor | color for border | string |
- |
borderTopColor | color for border top | string |
- |
borderRightColor | color for border right | string |
- |
borderLeftColor | color for border left | string |
- |
borderBottomColor | color for border bottom | string |
- |
borderWidth | width for border | number |
- |
borderTopWidth | width for border top | number |
- |
borderRightWidth | width for border right | number |
- |
borderLeftWidth | width for border left | number |
- |
borderBottomWidth | width for border bottom | number |
- |
title | title to be used above options | string | React.ReactNode |
- |
multiple | multiple options can be selected or not | boolean |
false |
value | value of select | any | any[] |
- |
footer | footer to be used below options. Submit button is shown when multiple is true |
React.ReactNode |
- |
onSelect | callback trigger when a option is selected. In case when multipe is true, onSelect give array of values. Otherwise gives single value |
onSelect(value: any) => void |
- |
data | data to be used to render options | any[] |
- |
renderItem | callback used to render options in the flatlist | renderItem: (item: any, index: number) => React.ReactElement |
- |
keyExtractor | callback used to give unique id to flatlist items | keyExtractor: (item: any, index: number) => string; |
- |