xref: /MusicFree/src/components/panels/base/panelHeader.tsx (revision 1131451ed819ab870c19151c24ffbfcfa9968a09)
172dabe5bS猫头猫import React from 'react';
2*1131451eS猫头猫import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native';
372dabe5bS猫头猫import rpx from '@/utils/rpx';
472dabe5bS猫头猫import {TouchableOpacity} from 'react-native-gesture-handler';
572dabe5bS猫头猫import ThemeText from '@/components/base/themeText';
672dabe5bS猫头猫import Divider from '@/components/base/divider';
772dabe5bS猫头猫
872dabe5bS猫头猫interface IPanelHeaderProps {
972dabe5bS猫头猫    title: string;
1072dabe5bS猫头猫    cancelText?: string;
1172dabe5bS猫头猫    okText?: string;
1272dabe5bS猫头猫    onCancel?: () => void;
1372dabe5bS猫头猫    onOk?: () => void;
1472dabe5bS猫头猫    hideButtons?: boolean;
1572dabe5bS猫头猫    hideDivider?: boolean;
16*1131451eS猫头猫    style?: StyleProp<ViewStyle>;
1772dabe5bS猫头猫}
1872dabe5bS猫头猫export default function PanelHeader(props: IPanelHeaderProps) {
1972dabe5bS猫头猫    const {
2072dabe5bS猫头猫        title,
2172dabe5bS猫头猫        cancelText,
2272dabe5bS猫头猫        okText,
2372dabe5bS猫头猫        onOk,
2472dabe5bS猫头猫        onCancel,
2572dabe5bS猫头猫        hideButtons,
2672dabe5bS猫头猫        hideDivider,
27*1131451eS猫头猫        style,
2872dabe5bS猫头猫    } = props;
2972dabe5bS猫头猫
3072dabe5bS猫头猫    return (
3172dabe5bS猫头猫        <>
32*1131451eS猫头猫            <View style={[styles.header, style]}>
3372dabe5bS猫头猫                {hideButtons ? null : (
3472dabe5bS猫头猫                    <TouchableOpacity style={styles.button} onPress={onCancel}>
3572dabe5bS猫头猫                        <ThemeText fontWeight="medium">
3672dabe5bS猫头猫                            {cancelText || '取消'}
3772dabe5bS猫头猫                        </ThemeText>
3872dabe5bS猫头猫                    </TouchableOpacity>
3972dabe5bS猫头猫                )}
4072dabe5bS猫头猫                <ThemeText
4172dabe5bS猫头猫                    style={styles.title}
4272dabe5bS猫头猫                    fontWeight="bold"
4372dabe5bS猫头猫                    fontSize="title"
4472dabe5bS猫头猫                    numberOfLines={1}>
4572dabe5bS猫头猫                    {title}
4672dabe5bS猫头猫                </ThemeText>
4772dabe5bS猫头猫                {hideButtons ? null : (
4872dabe5bS猫头猫                    <TouchableOpacity
4972dabe5bS猫头猫                        style={[styles.button, styles.rightButton]}
5072dabe5bS猫头猫                        onPress={onOk}>
5172dabe5bS猫头猫                        <ThemeText fontWeight="medium" fontColor="primary">
5272dabe5bS猫头猫                            {okText || '确认'}
5372dabe5bS猫头猫                        </ThemeText>
5472dabe5bS猫头猫                    </TouchableOpacity>
5572dabe5bS猫头猫                )}
5672dabe5bS猫头猫            </View>
5772dabe5bS猫头猫            {hideDivider ? null : <Divider />}
5872dabe5bS猫头猫        </>
5972dabe5bS猫头猫    );
6072dabe5bS猫头猫}
6172dabe5bS猫头猫
6272dabe5bS猫头猫const styles = StyleSheet.create({
6372dabe5bS猫头猫    header: {
6472dabe5bS猫头猫        width: '100%',
6572dabe5bS猫头猫        flexDirection: 'row',
6672dabe5bS猫头猫        alignItems: 'center',
6772dabe5bS猫头猫        paddingHorizontal: rpx(24),
6872dabe5bS猫头猫        height: rpx(100),
6972dabe5bS猫头猫    },
7072dabe5bS猫头猫    button: {
7172dabe5bS猫头猫        width: rpx(120),
7272dabe5bS猫头猫        height: '100%',
7372dabe5bS猫头猫        justifyContent: 'center',
7472dabe5bS猫头猫    },
7572dabe5bS猫头猫    rightButton: {
7672dabe5bS猫头猫        alignItems: 'flex-end',
7772dabe5bS猫头猫    },
7872dabe5bS猫头猫    title: {
7972dabe5bS猫头猫        flex: 1,
8072dabe5bS猫头猫        textAlign: 'center',
8172dabe5bS猫头猫    },
8272dabe5bS猫头猫});
83