Chủ đề React Native Dòng thời gian
Bộ sưu tập chủ đề Dòng thời gian. Gói này chỉ sử dụng flexbox(không sử dụng absolute) và FlatList
Bắt đầu
Truyền cảm hứng từ react-native-timeline-listview
Cài đặt
npm i react-native-dash && npm i react-native-timeline-theme --save
hoặc
yarn add react-native-dash && yarn add react-native-timeline-theme
Đó là tất cả!
Sử dụng
Đơn giản
const data = [
{
title: 'Wake up',
description: 'Remember tooth brushing and read notes on the tablet',
time: new Date("March 6, 2018 6:15:00"),
},
{
title: 'Eatting',
description: 'Eat breakfast: bread and drink milk',
time: new Date("March 6, 2018 7:00:00"),
},
{
title: 'Working',
description: 'Go to ABX Company and working react-native',
time: new Date("March 6, 2018 7:35:00"),
},
{
title: 'Relax',
description: 'Listen to music "Hello Vietnam" song',
time: new Date("March 6, 2018 14:15:00"),
},
]
...
<TimeLine
data={data}
isRenderSeperator
columnFormat={'two-column'}
/>
Thêm biểu tượng vào dòng thời gian
import Icon from 'react-native-vector-icons/MaterialIcons';
import IconFont from 'react-native-vector-icons/FontAwesome';
const data = [
{
title: 'Wake up',
description: 'Remember tooth brushing and read notes on the tablet',
time: new Date("March 6, 2018 6:15:00"),
renderIcon: () => <Icon name={'alarm'} size={40} color={'#304ffe'}/>,
lineColor: '#304ffe',
titleStyle: {color: '#304ffe'},
renderTimeBottom: () => (<View style={{ alignItems: 'flex-end', flex: 1, backgroundColor: 'white', borderRadius: 6, padding: 3 }}> <Text>(06.30)</Text></View>)
},
{
title: 'Eatting',
description: 'Eat breakfast: bread and drink milk',
time: new Date("March 6, 2018 7:00:00"),
renderIcon: () => <IconFont name={'coffee'} size={20} color={'#546e7a'}/>,
lineColor: '#546e7a',
titleStyle: {color: '#546e7a'},
},
{
title: 'Working',
description: 'Go to ABX Company and working react-native',
time: new Date("March 6, 2018 7:35:00"),
renderIcon: () => <IconFont name={'briefcase'} size={20} color={'#dd2c00'} />,
lineColor: '#dd2c00',
titleStyle: {color: '#dd2c00'},
},
{
title: 'Relax',
description: 'Listen to music "Hello Vietnam" song',
time: new Date("March 6, 2018 14:15:00"),
renderIcon: () => <IconFont name={'headphones'} size={20} color={'#006064'}/>,
lineColor: '#006064',
titleStyle: {color: '#006064'},
},
]
...
<TimeLine
data={data}
isRenderSeperator
widthLineContainer={65}
style={{margin: 16}}
/>
Hiển thị chi tiết khác nhau
import { View, Text, StyleSheet, Image } from 'react-native';
import TimeLine from '../lib/index'
import Icon from 'react-native-vector-icons/MaterialIcons';
import IconFont from 'react-native-vector-icons/FontAwesome';
const data = [
{
title: 'Wake up',
description: 'Remember tooth brushing and read notes on the tablet',
time: new Date("March 6, 2018 6:15:00"),
renderIcon: () => <Icon name={'alarm'} size={40} color={'#304ffe'}/>,
lineColor: '#304ffe',
titleStyle: {color: '#304ffe'},
renderTimeBottom: () => (<View style={{ alignItems: 'flex-end', flex: 1, backgroundColor: 'white', borderRadius: 6, padding: 3 }}> <Text style={{fontSize: 8, fontWeight: 'bold'}}>Important</Text>
<Text style={{fontSize: 8, fontWeight: 'bold', color: '#b40000'}}>Lazy time</Text><Text style={{fontSize: 8, fontWeight: 'bold', textAlign: 'right'}}>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text</Text></View>),
renderDetail: ({title, description, titleStyle}, index) => <View><Text style={{ fontSize: 20, fontWeight: 'bold'}}>{title}</Text><Image style={{width: 200, height: 150}} source={require('./assets/wake.gif')} /><Text>{description}</Text></View>
},
{
title: 'Eatting',
description: 'Eat breakfast: bread and drink milk',
time: new Date("March 6, 2018 7:00:00"),
renderIcon: () => <IconFont name={'coffee'} size={20} color={'#546e7a'}/>,
lineColor: '#546e7a',
titleStyle: {color: '#546e7a'},
renderDetail: ({title, description, titleStyle}, index) => <View><Text style={[titleStyle, { fontWeight: 'bold'}]}>{title}</Text><Image style={{width: 200, height: 150}} source={require('./assets/eat.gif')} /><Text>{description}</Text> </View>
},
{
title: 'Working',
description: 'Go to ABX Company and working react-native',
time: new Date("March 6, 2018 7:35:00"),
renderIcon: () => <IconFont name={'briefcase'} size={20} color={'#dd2c00'} />,
lineColor: '#dd2c00',
titleStyle: {color: '#dd2c00'},
},
{
title: 'Relax',
description: 'Listen to music "Hello Vietnam" song',
time: new Date("March 6, 2018 14:15:00"),
renderIcon: () => <IconFont name={'headphones'} size={20} color={'#006064'}/>,
lineColor: '#006064',
titleStyle: {color: '#006064'},
},
]
Xem thêm chi tiết tại this
Thuộc tính
Gói này sử dụng FlatList, do đó bạn có thể ghi đè tất cả các thuộc tính tại this
Thuộc tính | Mô tả | Loại | Mặc định |
---|---|---|---|
**data** |
Dữ liệu của dòng thời gian | mảng | [] |
**styleContainer** |
Kiểu được áp dụng cho bộ chứa | đối tượng StyleSheet | {flex: 1} |
**columnFormat** |
Định dạng cột dòng thời gian: ‘single-column-left’, ‘single-column-right’, ‘two-column’ | chuỗi | 'single-column-left' |
**renderIcon** |
Hiển thị biểu tượng của Dòng thời gian | hàm | null |
**renderDetail** |
Hiển thị Chi tiết(Sự kiện) của dòng thời gian | hàm | null |
**isRenderSeperator** |
Hiển thị đường ngăn cách | boolean | false |
**widthLineContainer** |
Chiều rộng của Bộ chứa Đường | số | 30 |
**showAmPm** |
Hiển thị AM hoặc PM | boolean | true |
**timeFormat** |
Định dạng thời gian, vui lòng đọc this | chuỗi | 'hh.mm' |
**innerCircleType** |
Loại của vòng tròn bên trong: ‘dot’ | chuỗi | none |
**spacingDot** |
Khoảng cách xung quanh dấu chấm | số | 4 |
**dotColor** |
Màu của dấu chấm | chuỗi | 'white' |
**dotSize** |
Kích thước của dấu chấm | số | 4 |
**marginTopCircle** |
Bạn có thể điều chỉnh độ cao đỉnh để điều chỉnh số dòng | số | 8 |
**circleColor** |
Màu của vòng tròn | chuỗi | #37474f |
**circleSize** |
Kích thước của vòng tròn | số | 8 |
**renderTimeBottom** |
Hiển thị Component Dưới Thời gian | hàm | null |
**renderTimeBottom** |
Hiển thị Component Dưới Thời gian | hàm | null |
**lineWidth** |
Chiều rộng của đường | số | 0.75 |
**lineColor** |
Màu của đường | chuỗi | #909090 |
**dashLine** |
kiểu của đường: dash | bool | false |
**renderSeperateTotal** |
đường thẳng dọc ở dưới sự kiện | bool | false |
Công việc cần làm
- Thêm biểu tượng cho sự kiện đường
- Thêm đường gạch
- Thêm chủ đề sáng, tối
- Thêm ngăn cách chủ đề
Đóng góp
Bất kỳ sự giúp đỡ cho mô-đun này đều được hoan nghênh!
Chi tiết tải về:
Tác giả: tomzaku
Nguồn: https://github.com/tomzaku/react-native-timeline-theme
Giấy phép: MIT license