| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import React, { useEffect, useState } from 'react';
- import { ScrollView, StyleSheet, Text, View } from 'react-native';
- import { Marquee } from '@animatereactnative/marquee';
- import { ElevationObject } from '../../../components/Button';
- import TextView from '../../../components/TextView';
- const PinMessage = ({
- visible=false,
- messageList=[]
- }) => {
- if (visible)
- return (
- <View style={styles.pinMessageView}>
- { messageList.map((item, index) =>
- <Message key={index} item={item}/>
- )}
- </View>
- );
- else
- return <></>
- }
- const Message = ({item}) => {
- const [expand, setExpand] = useState(false)
- const max = ($width-32)/8;
- return (
- <View style={styles.messageCard}>
- <View style={ui.flexc}>
- { item.pinTitle?.length>max
- ? <Marquee style={styles.marquee} spacing={$vw(80)} speed={0.8}>
- <Text style={styles.textTitle} numberOfLines={1}>{item.pinTitle}</Text>
- </Marquee>
- : <Text style={styles.fixedTitle} numberOfLines={expand ? 5 : 1}>{item.pinTitle}</Text>
- }
- <FontAwesome6
- style={$padding(12, 16, 12, 0)}
- name={expand == true ? "chevron-up" : "chevron-down"}
- size={16}
- color={colorCancel}
- onPress={() => setExpand(!expand)}/>
- </View>
- { expand &&
- <ScrollView>
- <TextView style={styles.textMessage} numberOfLines={15}>{item.pinContent}</TextView>
- </ScrollView>
- }
- </View>
- )
- }
- export default PinMessage;
- const styles = StyleSheet.create({
- pinMessageView: {
- top: 180,
- left: 16,
- right: 16,
- zIndex: 10,
- maxHeight: $vh(60),
- overflow: "hidden",
- position: 'absolute',
- },
- messageCard: {
- marginBottom: 16,
- maxHeight: $vw(50),
- overflow: "hidden",
- borderRadius: 6,
- backgroundColor: colorLight,
- ...ElevationObject(3)
- },
- marquee: {
- flex: 1,
- overflow: "hidden",
- ...$padding(12, 16)
- },
- textTitle: {
- color: textPrimary,
- fontSize: 16,
- fontWeight: "bold"
- },
- fixedTitle: {
- flex: 1,
- color: textPrimary,
- fontSize: 16,
- fontWeight: "bold",
- ...$padding(12, 16)
- },
- textMessage: {
- color: textSecondary,
- paddingLeft: 16,
- paddingRight: 16,
- paddingBottom: 16,
- fontSize: 14
- }
- })
|