import React, { FC, useState } from 'react'; import { View, StyleSheet, Text } from 'react-native'; import LinearGradient from 'react-native-linear-gradient'; import { mergeProps } from '../../core/helpers'; import ShouldRender from '../ShouldRender'; import Dropdown from '../Dropdown'; import useOperatePanelStyles from './hooks/useOperatePanelStyles'; import { defaultColor } from '../../common/colors'; import type { ButtonGroupProps } from './ButtonGroup'; import OpenPanel from './OpenPanel'; import styles from './styles/operate-panel.style'; import { useLocale } from '../Locale/locale'; export interface OperatePanelProps extends ButtonGroupProps { /** * 是否渲染展开面板 * @default false */ operate?: boolean; } const defaultProps = { operate: false, }; const OperatePanel: FC = (p) => { const allProps = mergeProps(defaultProps, p); const { allLabels } = useLocale().OptionGroup; const { operate, ...props } = allProps; // 记录操作面板的展开收起状态 const [panelOpen, setPanelOpen] = useState(false); const { barStyle } = useOperatePanelStyles(panelOpen); return ( {/* 吸附条 */} {/* 左侧bar */} {/* 当操作面板展开时展示 */} {allLabels} {/* 线性渐变色 */} {/* 当操作面板关闭时展示线性渐变 */} {/* 当操作面板展开时展示固定宽度的View */} {/* 展开区域 */} } arrowIconColor="#222222" arrowIconActiveColor={defaultColor} useNative={false} iconSize={14} titleStyle={StyleSheet.flatten([styles.item])} onPanelOpen={() => setPanelOpen(true)} onPanelClosed={() => setPanelOpen(false)} /> ); }; export default OperatePanel;