Commit 84e646b1 by tungnq

TODO: Đã hoàn thiện giao diện màn chi tiết thông báo thiếu chức năng download

parent 9d739ff2
...@@ -12,6 +12,8 @@ const colors = { ...@@ -12,6 +12,8 @@ const colors = {
blue: 'rgba(47, 107, 255, 1)', blue: 'rgba(47, 107, 255, 1)',
blue1: 'rgba(47, 107, 255, 0.1)', blue1: 'rgba(47, 107, 255, 0.1)',
blue2: 'rgba(158, 187, 255, 1)',
blueTextChip: 'rgba(47, 107, 255, 1)',
orange: 'rgba(243, 154, 43, 1)', orange: 'rgba(243, 154, 43, 1)',
......
...@@ -50,6 +50,7 @@ const images = { ...@@ -50,6 +50,7 @@ const images = {
//Icon other //Icon other
icBack: require('./icon/icon_png/back.png'), icBack: require('./icon/icon_png/back.png'),
icNext: require('./icon/icon_png/arrow_next.png'), icNext: require('./icon/icon_png/arrow_next.png'),
icCancel: require('./images/iconCancel.png'),
icMale: require('./icon/icon_png/male.png'), icMale: require('./icon/icon_png/male.png'),
icFemale: require('./icon/icon_png/female.png'), icFemale: require('./icon/icon_png/female.png'),
icDownload: require('./icon/icon_png/download.png'), icDownload: require('./icon/icon_png/download.png'),
......
import React, {Component} from 'react'; import React from 'react';
import { import {
StyleSheet, StyleSheet,
TouchableOpacity, TouchableOpacity,
Platform,
View, View,
Text, Text,
ImageBackground, Image,
} from 'react-native'; } from 'react-native';
import R from '../assets/R'; import R from '../assets/R';
import {colors, sizes} from '../assets/theme';
import {
getFontSize,
getFontXD,
getWidth,
HEIGHT,
WIDTH,
} from '../config/Functions';
const Button = props => { const Button = props => {
const {title, onPress, containerStyle, txtStyle, backgroundColor} = props; const {
title,
onPress,
containerStyle,
txtStyle,
backgroundColor,
height,
borderRadius,
fontSize,
textColor,
fontWeight,
fontFamily,
disabled,
width,
marginHorizontalText,
marginVerticalText,
icon,
iconStyle,
} = props;
return ( return (
<TouchableOpacity <TouchableOpacity
style={[ style={[
{ {
height: HEIGHT(40), width: width,
justifyContent: 'center', height: height,
alignItems: 'center',
backgroundColor: '#F2B60D', backgroundColor: backgroundColor,
marginHorizontal: WIDTH(15), borderRadius: borderRadius,
borderRadius: HEIGHT(6),
marginTop: HEIGHT(30),
shadowColor: '#000',
shadowOffset: {
width: 0,
height: 1,
},
shadowOpacity: 0.22,
shadowRadius: 2.22,
elevation: 3,
}, },
{...containerStyle}, {...containerStyle},
]} ]}
disabled={props.disabled} disabled={disabled}
onPress={onPress}> onPress={onPress}>
<View <View
style={{ style={{
flex: 1, flex:1,
justifyContent: 'center', justifyContent:'space-around',
alignItems: 'center', flexDirection:'row',
alignItems:'center',
}}> }}>
<Text <Text
style={[ style={[
{ {
fontSize: getFontSize(18), fontSize: fontSize,
color: R.colors.white, color: textColor,
fontWeight: 'bold', fontWeight: fontWeight,
fontFamily: fontFamily,
marginHorizontal: marginHorizontalText,
marginVertical: marginVerticalText,
}, },
{...txtStyle}, {...txtStyle},
]}> ]}>
{title} {title}
</Text> </Text>
{icon&& <Image source={icon} style={iconStyle} />}
</View> </View>
</TouchableOpacity> </TouchableOpacity>
); );
......
import { Image, StyleSheet, Text, TouchableOpacity, View } from 'react-native'
import React from 'react'
import R from '../../assets/R'
const CardChip = ({
title,
marginBottomTitle,
containerMarginBottom,
containerMarginHorizontal,
containerMarginVertical,
containerMarginRight,
containerMarginTop,
containerMarginLeft,
cardMarginBottom,
cardMarginHorizontal,
cardMarginVertical,
cardMarginRight,
cardMarginTop,
cardMarginLeft,
cardBackgroundColor,
cardBorderRadius,
chipMarginBottom,
chipMarginHorizontal,
chipMarginVertical,
chipMarginRight,
chipMarginTop,
chipMarginLeft,
chipBackgroundColor,
chipBorderRadius,
chipText,
chipTextColor,
chipIcon,
widthCard,
heightCard,
}) => {
return (
<View style={[
{
marginHorizontal: containerMarginHorizontal,
marginVertical: containerMarginVertical,
marginBottom: containerMarginBottom,
marginRight: containerMarginRight,
marginTop: containerMarginTop,
marginLeft: containerMarginLeft,
}
]} >
<Text style={{marginBottom: marginBottomTitle}}>{title}</Text>
<View style={[
{
marginHorizontal: cardMarginHorizontal,
marginVertical: cardMarginVertical,
marginBottom: cardMarginBottom,
marginRight: cardMarginRight,
marginTop: cardMarginTop,
marginLeft: cardMarginLeft,
backgroundColor: cardBackgroundColor,
borderRadius: cardBorderRadius,
width: widthCard,
height: heightCard,
}
]}>
<TouchableOpacity style={[
{
marginHorizontal: chipMarginHorizontal,
marginVertical: chipMarginVertical,
marginBottom: chipMarginBottom,
marginRight: chipMarginRight,
marginTop: chipMarginTop,
marginLeft: chipMarginLeft,
backgroundColor: chipBackgroundColor,
borderRadius: chipBorderRadius,
},
styles.chip
]}>
<View style={styles.imageIcon}>
<Image backgroundColor={R.colors.white} resizeMode='cover' source={chipIcon} style={{width: 20, height: 20}}/>
</View>
<Text style={[{color: chipTextColor}, styles.text]}>{chipText}</Text>
</TouchableOpacity>
</View>
</View>
)
}
export default CardChip
const styles = StyleSheet.create({
chip: {
flexDirection:'row',
alignItems: 'center',
justifyContent: 'center',
position:'relative',
width:250,
height:40,
borderRadius: 100,
top:2,
left:10
},
imageIcon: {
marginRight:10
},
text: {
fontSize: 12,
fontFamily:R.fonts.fontRegular
}
})
\ No newline at end of file
...@@ -19,7 +19,6 @@ import { ...@@ -19,7 +19,6 @@ import {
getFontSize, getFontSize,
WIDTH, WIDTH,
} from '../../config/Functions'; } from '../../config/Functions';
import Icon from 'react-native-vector-icons/AntDesign';
import {useNavigation} from '@react-navigation/native'; import {useNavigation} from '@react-navigation/native';
const Header = props => { const Header = props => {
const {title, isBack} = props; const {title, isBack} = props;
......
...@@ -35,8 +35,11 @@ const TextField = props => { ...@@ -35,8 +35,11 @@ const TextField = props => {
<Text <Text
style={{ style={{
fontSize: fontSizeTitle, fontSize: fontSizeTitle,
color: R.colors.color777, color: R.colors.black,
marginBottom: 5, marginBottom: 5,
fontFamily:R.fonts.fontRegular,
fontWeight:'400',
}}> }}>
{title ? title : ''} {title ? title : ''}
<Text style={{color: R.colors.red}}> {required ? "*" : ""}</Text> <Text style={{color: R.colors.red}}> {required ? "*" : ""}</Text>
......
...@@ -4,14 +4,33 @@ import {HEIGHTXD, WIDTHXD, getFontXD} from '../../config/Functions'; ...@@ -4,14 +4,33 @@ import {HEIGHTXD, WIDTHXD, getFontXD} from '../../config/Functions';
import R from '../../assets/R'; import R from '../../assets/R';
const TextField = props => { const TextField = props => {
const {title,titleFontSize,required, onChangeText, maxLength,backgroundColor, value, editable,placeholder,fontSizePlaceHolder,containerMarginVertical,containerMarginHorizontal,containerMarginBottom,containerBackgroundColor,onFocus} = props; const {
title,
titleFontSize,
required,
onChangeText,
maxLength,
backgroundColor,
value,
editable,
placeholder,
fontSizePlaceHolder,
containerMarginVertical,
containerMarginHorizontal,
containerMarginBottom,
containerBackgroundColor,
onFocus,
fontFamily,
} = props;
return ( return (
<View style={{marginVertical: containerMarginVertical, marginHorizontal: containerMarginHorizontal, marginBottom: containerMarginBottom , backgroundColor: containerBackgroundColor}}> <View style={{marginVertical: containerMarginVertical, marginHorizontal: containerMarginHorizontal, marginBottom: containerMarginBottom , backgroundColor: containerBackgroundColor}}>
<Text <Text
style={{ style={{
fontSize: titleFontSize, fontSize: titleFontSize,
color: R.colors.color777, color: 'black',
fontFamily:fontFamily,
fontWeight:'400',
marginBottom: 5, marginBottom: 5,
}}> }}>
{title ? title : ''} {title ? title : ''}
......
...@@ -11,14 +11,35 @@ const NotificationDetail = (props) => { ...@@ -11,14 +11,35 @@ const NotificationDetail = (props) => {
const onValueChange = value => { const onValueChange = value => {
setSelectedValue(value); setSelectedValue(value);
}; };
const [dataList, setDataList] = useState([
{ id: 1, name: 'Nguyễn Minh Đức' },
{ id: 2, name: 'Trần Văn Hùng' },
{ id: 3, name: 'Lê Thị Mai' },
{ id: 4, name: 'Phạm Quốc Khánh' },
{ id: 5, name: 'Hoàng Anh Tuấn' },
{ id: 6, name: 'Vũ Thị Hằng' },
{ id: 7, name: 'Ngô Văn Nam' },
{ id: 8, name: 'Đinh Thị Lan' },
{ id: 9, name: 'Bùi Văn Phúc' },
{ id: 10, name: 'Lý Thị Hoa' },
{ id: 11, name: 'Phan Minh Hoàng' },
{ id: 12, name: 'Tạ Thị Hương' },
{ id: 13, name: 'Đoàn Văn Dũng' },
{ id: 14, name: 'Nguyễn Thị Vân' },
{ id: 15, name: 'Trương Văn Long' },
{ id: 16, name: 'Mai Thị Ngọc' },
{ id: 17, name: 'Huỳnh Quốc Việt' },
{ id: 18, name: 'Lâm Thị Thu' },
{ id: 19, name: 'Nguyễn Hữu Tài' },
{ id: 20, name: 'Phạm Thị Kim' }
]);
return ( return (
<NotificationDetailView <NotificationDetailView
options={options} options={options}
selectedValue={selectedValue} selectedValue={selectedValue}
onValueChange={onValueChange} onValueChange={onValueChange}
dataList={dataList}
/> />
); );
}; };
......
...@@ -34,6 +34,60 @@ const styles = StyleSheet.create({ ...@@ -34,6 +34,60 @@ const styles = StyleSheet.create({
fontFamily:R.fonts.fontMedium, fontFamily:R.fonts.fontMedium,
fontWeight:'600', fontWeight:'600',
color:R.colors.black, color:R.colors.black,
} },
//Item
chip: {
flexDirection: 'row',
alignItems: 'center',
// position: 'relative',
paddingLeft: 10,
height: 25,
borderRadius: 10,
marginBottom:10,
marginHorizontal:5,
// top: 10,
// left: 10,
backgroundColor: R.colors.blue2,
alignSelf:'flex-start'
},
imageIcon: {
width: 15,
height: 15,
},
containerIcon: {
marginRight: 2,
},
text: {
fontSize: 12,
fontWeight: '300',
fontFamily:R.fonts.fontRegular,
color:R.colors.blueTextChip,
marginRight:10
},
//FlatList
flatList:{
height:200,
backgroundColor:R.colors.blue1,
paddingHorizontal:10,
borderRadius:10,
paddingVertical:15,
flexDirection:'row',
marginBottom:15,
},
//ContainerBtn
containerBtn:{
flexDirection:'row',
justifyContent:'space-between',
},
containerInput:{
flex:10,
},
txtSubtitle:{
fontSize:R.fontsize.fontSizeSubTitle,
fontFamily:R.fonts.fontMedium,
fontWeight:'600',
color:R.colors.black,
marginBottom:15,
},
}); });
export default styles; export default styles;
\ No newline at end of file
import React from 'react'; import React from 'react';
import { import {Text, View, FlatList, ScrollView} from 'react-native';
Text,
View,
TouchableOpacity,
StyleSheet,
TextInput,
} from 'react-native';
import styles from './style'; import styles from './style';
import Header from '../../../components/Header/Header'; import Header from '../../../components/Header/Header';
import TextField from '../../../components/Input/TextField'; import TextField from '../../../components/Input/TextField';
import R from '../../../assets/R'; import R from '../../../assets/R';
import TextMulti from '../../../components/Input/TextMulti'; import TextMulti from '../../../components/Input/TextMulti';
import RadioGroup from '../../../components/RadioButton/RadioGroup'; import RadioGroup from '../../../components/RadioButton/RadioGroup';
import RadioButton from '../../../components/RadioButton/RadioButton'; import Button from '../../../components/Button';
import CardChip from '../../../components/Card/CardChip';
const NotificationDetailView = props => { const NotificationDetailView = props => {
const { const {
showWarning, showWarning,
...@@ -26,10 +19,31 @@ const NotificationDetailView = props => { ...@@ -26,10 +19,31 @@ const NotificationDetailView = props => {
size, size,
color, color,
direction, direction,
dataList,
} = props; } = props;
const renderItem = ({item, onPress}) => {
return (
<View style={styles.chip}>
{/* <TouchableOpacity style={styles.containerIcon} onPress={onPress}>
<Image
resizeMode="cover"
source={R.images.icCancel}
style={styles.imageIcon}
/>
</TouchableOpacity> */}
<Text style={styles.text}> {`${item.id}, ${item.name}`}</Text>
</View>
);
};
return ( return (
<View style={styles.safeArea}> <View style={styles.safeArea}>
<Header isBack title={'Chi tiết thông báo'} /> <Header isBack title={'Chi tiết thông báo'} />
<ScrollView
showsVerticalScrollIndicator={false}
contentContainerStyle={{paddingBottom: 20}}
>
<View style={styles.container}> <View style={styles.container}>
{showWarning && ( {showWarning && (
<View style={styles.boxInput}> <View style={styles.boxInput}>
...@@ -70,6 +84,7 @@ const NotificationDetailView = props => { ...@@ -70,6 +84,7 @@ const NotificationDetailView = props => {
/> />
<TextMulti <TextMulti
title="Nội dung thông báo" title="Nội dung thông báo"
fontFamily={R.fonts.fontRegular}
titleFontSize={R.sizes.sm} titleFontSize={R.sizes.sm}
value={title} value={title}
onChangeText={onTitleChange} onChangeText={onTitleChange}
...@@ -101,27 +116,74 @@ const NotificationDetailView = props => { ...@@ -101,27 +116,74 @@ const NotificationDetailView = props => {
editable={false} editable={false}
/> />
<CardChip <View style={styles.flatList}>
title="Chọn những sinh viên nhận thông báo" <FlatList
marginBottomTitle={5} nestedScrollEnabled
containerMarginBottom={15} data={dataList}
heightCard={200} renderItem={renderItem}
cardBackgroundColor={R.colors.blue1} keyExtractor={item => item.id}
cardBorderRadius={10} numColumns={1}
contentContainerStyle={{flexDirection: 'row', flexWrap: 'wrap'}}
chipBackgroundColor={R.colors.gray1}
chipBorderRadius={10}
chipWidth={100}
chipHeight={50}
chipMarginVertical={10}
chipText="859256, Nguyễn Minh Đức"
chipTextColor={R.colors.blue}
/> />
</View>
<View style={styles.containerBtn}>
<View style={styles.containerInput}>
<TextField
title="Ngày gửi"
value={title}
onChangeText={onTitleChange}
backgroundColor={R.colors.blue1}
color={R.colors.white}
fontSize={R.sizes.sm}
onFocus={() => {}}
fontSizeTitle={R.sizes.sm}
containerMarginBottom={15}
editable={false}
/>
</View>
<View style={{flex: 1}}></View>
<View style={styles.containerInput}>
<TextField
title="Thời gian gửi"
value={title}
onChangeText={onTitleChange}
backgroundColor={R.colors.blue1}
color={R.colors.white}
fontSize={R.sizes.sm}
onFocus={() => {}}
fontSizeTitle={R.sizes.sm}
containerMarginBottom={15}
editable={false}
/>
</View>
</View>
<Text style={[styles.txtSubtitle]}>Tài liu đính kèm</Text>
<View>
<Button
title="Thêm tài liệu"
onPress={() => {}}
backgroundColor={R.colors.blue1}
fontSize={R.sizes.sm}
editable={false}
height={25}
width={176}
borderRadius={10}
textColor={R.colors.blue}
fontWeight={'600'}
fontFamily={R.fonts.fontMedium}
icon={R.images.icDownload}
iconStyle={{
width: 15,
height: 15,
}}
containerStyle={{
alignSelf:'flex-start',
}}
/>
</View>
</View> </View>
</ScrollView>
</View> </View>
); );
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment