66 lines
1.6 KiB
TypeScript
66 lines
1.6 KiB
TypeScript
|
import { BottomTabHeaderProps } from '@react-navigation/bottom-tabs'
|
||
|
import { getHeaderTitle } from '@react-navigation/elements'
|
||
|
import React from 'react'
|
||
|
import {
|
||
|
Appbar,
|
||
|
AppbarProps,
|
||
|
IconButton,
|
||
|
Searchbar,
|
||
|
SearchbarProps,
|
||
|
Tooltip,
|
||
|
} from 'react-native-paper'
|
||
|
|
||
|
interface TabsHeaderProps extends AppbarProps {
|
||
|
navProps: BottomTabHeaderProps
|
||
|
withSearchBar?: boolean
|
||
|
searchBarProps?: SearchbarProps
|
||
|
}
|
||
|
|
||
|
const TabsHeader = (props: TabsHeaderProps) => {
|
||
|
const [query, setQuery] = React.useState('')
|
||
|
|
||
|
return props.withSearchBar ? (
|
||
|
<Appbar.Header {...props}>
|
||
|
<Searchbar
|
||
|
{...props.searchBarProps}
|
||
|
value={query}
|
||
|
onChangeText={setQuery}
|
||
|
style={{ margin: 8, marginBottom: 16 }}
|
||
|
right={(p) => (
|
||
|
<Tooltip title="Rechercher">
|
||
|
<IconButton
|
||
|
{...p}
|
||
|
icon="check"
|
||
|
onPress={() =>
|
||
|
props.searchBarProps?.onChangeText
|
||
|
? props.searchBarProps.onChangeText(query)
|
||
|
: undefined
|
||
|
}
|
||
|
/>
|
||
|
</Tooltip>
|
||
|
)}
|
||
|
/>
|
||
|
</Appbar.Header>
|
||
|
) : (
|
||
|
<Appbar.Header {...props}>
|
||
|
{props.navProps.options.headerLeft
|
||
|
? props.navProps.options.headerLeft({})
|
||
|
: undefined}
|
||
|
|
||
|
<Appbar.Content
|
||
|
title={getHeaderTitle(
|
||
|
props.navProps.options,
|
||
|
props.navProps.route.name,
|
||
|
)}
|
||
|
/>
|
||
|
|
||
|
{props.navProps.options.headerRight
|
||
|
? props.navProps.options.headerRight({
|
||
|
canGoBack: props.navProps.navigation.canGoBack(),
|
||
|
})
|
||
|
: undefined}
|
||
|
</Appbar.Header>
|
||
|
)
|
||
|
}
|
||
|
|
||
|
export default TabsHeader
|