2021-03-16 17:00:55 +07:00
import 'react-native-gesture-handler' ;
import * as React from 'react' ;
import { useState } from 'react' ;
import { Alert , Button , Image , StyleSheet , Dimensions , SafeAreaView , ScrollView , TouchableOpacity , Modal , Pressable , Share } from 'react-native' ;
import Constants from 'expo-constants' ;
import { Ionicons , FontAwesome } from '@expo/vector-icons' ;
import { LinearGradient } from 'expo-linear-gradient' ;
import Swiper from 'react-native-swiper' ;
import { ShowProductItem , ItemComboSet , ItemComboSetProDetail } from '../components/product/productItem' ;
import { Table , TableWrapper , Row , Rows , Col , Cols , Cell } from 'react-native-table-component' ;
import YoutubePlayer from "react-native-youtube-iframe" ;
import { PolicyFooter , Social , ShowroomList , FooterInfo } from '../components/footer/footerMain' ;
2021-03-24 10:19:30 +07:00
2021-03-16 17:00:55 +07:00
import EditScreenInfo from '../components/EditScreenInfo' ;
import { Text , View , } from '../components/Themed' ;
import useColorScheme from '../hooks/useColorScheme' ;
import { TextInput } from 'react-native-gesture-handler' ;
2021-03-24 10:19:30 +07:00
2021-03-16 17:00:55 +07:00
export default function ProductDetail() {
return (
< SafeAreaView style = { styles . container } >
< ScrollView >
< View style = { styles . brecrumb } >
< Text style = { styles . brecrumbText } > Trang chủ < / Text >
< FontAwesome style = { styles . brecrumbIcon } name = "angle-right" / >
< Text style = { styles . brecrumbTextLast } > Laptop , Máy Tính Xách Tay < / Text >
< / View >
< SliderImgDetail / >
< ContentTopDetail / >
< Comboset / >
< ProductDetailDes / >
< ProductDetailSpec / >
< ProductDetailVideo / >
< ProductDetailSameCategory / >
< ProductDetailReview / >
< ProductDetailComment / >
< PolicyFooter / >
< Social / >
< ShowroomList / >
< FooterInfo / >
< / ScrollView >
< / SafeAreaView >
)
}
const winWidth = Dimensions . get ( 'window' ) . width ; //full width
const winHeight = Dimensions . get ( 'window' ) . height ; //full height
const halfWinWidth = winWidth / 2 ;
const ratio = winWidth / 500 ; //541 is actual image width
const SliderImgDetail = ( ) = > {
const imageSlider = [
{
uri : 'https://hanoicomputercdn.com/media/product/52019_14zd90n_v_ax55a5.png' ,
} ,
{
uri : 'https://hanoicomputercdn.com/media/product/52019_laptop_lg_gram_14zd90n_v_ax55a5_i5_xam_04.jpg' ,
} ,
{
uri : 'https://hanoicomputercdn.com/media/product/52019_laptop_lg_gram_14zd90n_v_ax55a5_i5_xam_05.jpg' ,
} ,
]
return (
< View style = { styles . sliderSwipperDetailBox } >
< Swiper style = { styles . sliderSwipperDetail } autoplay = { true } showsButtons = { false } index = { 3000 } showsPagination = { false } >
{
imageSlider . map ( ( item , index ) = > {
return (
< View key = { index } style = { styles . imgSliderDetailItem } >
< Image style = { styles . imgSliderDetail } source = { { uri : item.uri } } / >
< / View >
) ;
} )
}
< / Swiper >
< / View >
)
}
const ContentTopDetail = ( ) = > {
return (
< View style = { styles . boxContentTopDetail } >
< Text style = { styles . ProductDetailTitle } > Laptop LG Gram 14 ZD90N - V . AX55A5 ( i5 1035 G7 / 8 GB RAM / 512 GBSSD / 14.0 inch FHD / FP / Xám Bạc ) ( model 2020 ) < / Text >
< View style = { styles . ProductDetailSkuRate } >
< Text style = { styles . ProductDetailSku } >
Mã sản phẩm < Text style = { styles . ProductDetailSkuText } > TESTABCD < / Text >
< / Text >
< Text style = { styles . ProductDetailRate } >
Đ á nh giá : < FontAwesome style = { styles . ProductDetailRateImg } name = "star" / >
< / Text >
< / View >
< View style = { styles . ProductDetailBoxPrice } >
< View >
< View style = { [ styles . ProductDetailPrice , styles . backGroundBoxPrice ] } >
< Text style = { [ styles . ProductDetailBoxPriceText , styles . backGroundBoxPrice ] } > 26.000 . 000 đ < / Text >
< Text style = { [ styles . ProductDetailBoxPriceVat , styles . backGroundBoxPrice ] } > ( Giá đ ã bao gồm VAT ) < / Text >
< / View >
< View style = { [ styles . ProductDetailOldPrice , styles . backGroundBoxPrice ] } >
< Text style = { [ styles . ProductDetailOldPriceTitle , styles . backGroundBoxPrice ] } > Giá thị trường : < / Text >
< Text style = { [ styles . ProductDetailOldPriceText , styles . backGroundBoxPrice ] } > 30.000 . 000 đ < / Text >
< Text style = { [ styles . ProductDetailOldPriceDiscount , styles . backGroundBoxPrice ] } > ( Tiết kiệm : 4.000.000 đ ) < / Text >
< / View >
< ProductDetailConfigGroup / >
< / View >
< / View >
< View style = { styles . ProductDetailBoxWarehouse } >
< Text style = { styles . ProductDetailBoxWarehouseTitle } > Kho hàng : < / Text >
< View style = { styles . ProductDetailBoxWarehouseList } >
< Text style = { styles . ProductDetailBoxWarehouseItem } > < FontAwesome style = { styles . ProductDetailBoxWarehouseIcon } name = "map-marker" / > 129 + 131 Lê Thanh Nghị - HBT - Hà Nội < / Text >
< Text style = { styles . ProductDetailBoxWarehouseItem } > < FontAwesome style = { styles . ProductDetailBoxWarehouseIcon } name = "map-marker" / > 43 Thái Hà - Đ ố ng Đ a - Hà Nội < / Text >
< / View >
< / View >
< Text style = { [ styles . ProductDetailMgb10 , styles . ProductDetailText14 ] } > Bảo hành : 12 Tháng < / Text >
< Text style = { [ styles . ProductDetailMgb10 , styles . ProductDetailText14 ] } > Lượt Xem : 12000 < / Text >
< View style = { styles . detailOfferFix } >
< View style = { styles . detailOfferFixItem } >
< LinearGradient colors = { [ '#ffa500' , '#ed1b24' ] } start = { { x : 0 , y : 0 } } end = { { x : 1 , y : 0 } } style = { styles . linearGradientHot } >
< Text style = { styles . linearGradientHotText } > HOT < / Text >
< / LinearGradient >
< Text style = { styles . detailOfferFixItemText } > Giảm thêm đ ế n 200.000 đ cho học sinh - sinh viên khi mua Laptop , PC nguyên chiếc ( Không cộng gộp với khuyến mãi của PC lắp ráp ) < / Text >
< / View >
< View style = { styles . detailOfferFixItem } >
< LinearGradient colors = { [ '#ffa500' , '#ed1b24' ] } start = { { x : 0 , y : 0 } } end = { { x : 1 , y : 0 } } style = { styles . linearGradientHot } >
< Text style = { styles . linearGradientHotText } > HOT < / Text >
< / LinearGradient >
< Text style = { styles . detailOfferFixItemText } > Chính sách Bảo Hành Vàng dành cho doanh nghiệp < / Text >
< / View >
< / View >
< View style = { styles . detailOffer } >
< LinearGradient colors = { [ '#243a76' , '#ed1b24' ] } start = { { x : 0 , y : 0 } } end = { { x : 1 , y : 0 } } style = { styles . linearGradientOffer } >
< Text style = { styles . detailOfferTitle } > Chương trình khuyến mại < / Text >
< / LinearGradient >
< View style = { styles . detailOfferList } >
< Text style = { styles . detailOfferItem } > BỘ QUÀ TẶNG TRỊ GIÁ 1.600 . 000 Đ < / Text >
< Text style = { styles . detailOfferItem } > + Chuột không dây Logitech M185 trị giá 249.000 đ ( MELO055 ) < / Text >
< Text style = { styles . detailOfferItem } > + Chuột không dây Logitech M185 trị giá 249.000 đ ( MELO055 ) < / Text >
< Text style = { styles . detailOfferItem } > + Chuột không dây Logitech M185 trị giá 249.000 đ ( MELO055 ) < / Text >
< Text style = { styles . detailOfferItem } > + Chuột không dây Logitech M185 trị giá 249.000 đ ( MELO055 ) < / Text >
< Text style = { styles . detailOfferItem } > + Chuột không dây Logitech M185 trị giá 249.000 đ ( MELO055 ) < / Text >
< / View >
< / View >
< / View >
)
}
function formatCurrency ( price : string | number ) {
let priceConvert = parseFloat ( ` ${ price } ` ) . toFixed ( 2 ) . replace ( /(\d)(?=(\d{3})+\.)/g , "$1." ) . toString ( ) ;
let len = priceConvert . length ;
return priceConvert . substring ( 0 , len - 3 ) ;
}
const ProductDetailConfigGroup = ( ) = > {
const dataConfigGroup = [
{
url : '/a' ,
name : 'LG 14ZD90N-V.AX53A5 (RAM/256GB/Trắng)' ,
price : 25000000 ,
isCurrent : 1 ,
} ,
{
url : '/a' ,
name : 'LG 14ZD90N-V.AX53A5 (RAM/512GB/Trắng)' ,
price : 30000000 ,
isCurrent : 0 ,
} ,
{
url : '/a' ,
name : 'LG 14ZD90N-V.AX53A5 (RAM/256GB/Đen)' ,
price : 27000000 ,
isCurrent : 0 ,
} ,
]
return (
< View style = { [ styles . ProductDetailConfig , styles . backGroundBoxPrice ] } >
< Text style = { [ styles . ProductDetailConfigTitle , styles . backGroundBoxPrice ] } > Tùy chọn sản phẩm < / Text >
< View >
{
dataConfigGroup . map ( ( item , index ) = > < ConfigGroupItem key = { index } url = { item . url } name = { item . name } price = { item . price } isCurrent = { item . isCurrent } / > )
}
< / View >
< / View >
)
}
const ConfigGroupItem = ( props : { url : string , name : string , price : number , isCurrent : number } ) = > {
const { url , name , price , isCurrent } = props ;
return (
< View style = { styles . ProductDetailConfigItem } >
< View style = { styles . ProductDetailConfigItemName } >
{
isCurrent == 1 ? < FontAwesome style = { styles . ProductDetailConfigItemIconCurent } name = "check-circle" / > : < FontAwesome style = { styles . ProductDetailConfigItemIcon } name = "circle-thin" / >
}
< Text style = { styles . ProductDetailConfigItemNamePro } > { name } < / Text >
< / View >
< Text style = { styles . ProductDetailConfigItemPrice } > { formatCurrency ( price ) } đ < / Text >
< / View >
)
}
const ProductDetailDes = ( ) = > {
return (
< View style = { styles . productDetailDes } >
< Text style = { styles . productDetailDesTitle } > Giới thiệu sản phẩm < / Text >
< View style = { styles . productDetailDesContent } >
< Text >
Nội dung đ ang đ ư ợ c cập nhật !
< / Text >
< / View >
< / View >
)
}
const ProductDetailSpec = ( ) = > {
return (
< View style = { styles . productDetailSpec } >
< Text style = { styles . productDetailSpecTitle } > Thông số kỹ thuật < / Text >
< View style = { styles . productDetailSpecContent } >
< Text >
< TableDetailSpec / >
< / Text >
< / View >
< / View >
)
}
const TableDetailSpec = ( ) = > {
const tableData = {
tableHead : [ '' , 'Head1' , 'Head2' , 'Head3' ] ,
tableTitle : [ 'Title' , 'Title2' , 'Title3' , 'Title4' ] ,
tableData : [
[ '1' , '2' , '3' ] ,
[ 'a' , 'b' , 'd' ] ,
[ '1' , '2' , '3' ] ,
[ 'a' , 'b' , 'c' ]
]
}
return (
< Table style = { styles . tableSpec } >
< Row style = { styles . tableTitle } data = { tableData . tableHead } flexArr = { [ 1 , 2 , 1 , 1 ] } / >
< TableWrapper style = { styles . tableWrapper } >
< Col style = { styles . col } data = { tableData . tableTitle } heightArr = { [ 28 , 28 , 28 , 28 ] } / >
< Rows style = { styles . row } data = { tableData . tableData } flexArr = { [ 2 , 1 , 1 ] } / >
< / TableWrapper >
< / Table >
)
}
const Comboset = ( ) = > {
const dataProDetail = {
id : 1 ,
productName : 'Laptop LG Gram 14ZD90N-V.AX55A5 (i5 1035G7/8GB RAM/512GBSSD/14.0 inch FHD/FP/Xám Bạc) (model 2020)' ,
productSKU : 'TESTSKU' ,
productImage : {
small : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
medium : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
large : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
original : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
} ,
price : 30000000 ,
marketPrice : 50000000 ,
quantity : 1 ,
}
const dataCombo = [
{
id : 1 ,
productName : 'Laptop LG Gram 14ZD90N-V.AX55A5 (i5 1035G7/8GB RAM/512GBSSD/14.0 inch FHD/FP/Xám Bạc) (model 2020)' ,
productSKU : 'TESTSKU' ,
productImage : {
small : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
medium : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
large : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
original : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
} ,
price : 30000000 ,
marketPrice : 50000000 ,
quantity : 1 ,
} ,
{
id : 2 ,
productName : 'Laptop LG Gram 14ZD90N-V.AX55A5 (i5 1035G7/8GB RAM/512GBSSD/14.0 inch FHD/FP/Xám Bạc) (model 2020)' ,
productSKU : 'TESTSKU' ,
productImage : {
small : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
medium : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
large : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
original : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
} ,
price : 30000000 ,
marketPrice : 50000000 ,
quantity : 1 ,
} ,
{
id : 3 ,
productName : 'Laptop LG Gram 14ZD90N-V.AX55A5 (i5 1035G7/8GB RAM/512GBSSD/14.0 inch FHD/FP/Xám Bạc) (model 2020)' ,
productSKU : 'TESTSKU' ,
productImage : {
small : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
medium : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
large : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
original : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
} ,
price : 30000000 ,
marketPrice : 50000000 ,
quantity : 1 ,
} ,
{
id : 4 ,
productName : 'Laptop LG Gram 14ZD90N-V.AX55A5 (i5 1035G7/8GB RAM/512GBSSD/14.0 inch FHD/FP/Xám Bạc) (model 2020)' ,
productSKU : 'TESTSKU' ,
productImage : {
small : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
medium : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
large : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
original : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
} ,
price : 30000000 ,
marketPrice : 50000000 ,
quantity : 1 ,
} ,
]
return (
< View style = { styles . boxproductCombo } >
< Text style = { styles . productDetailSpecTitle } > Ư u đ ã i khi mua phụ kiện cùng Laptop LG Gram 14 ZD90N - V . AX55A5 ( i5 1035 G7 / 8 GB RAM / 512 GBSSD / 14.0 inch FHD / FP / Xám Bạc ) ( model 2020 ) < / Text >
< View >
< View >
< ItemComboSetProDetail key = { dataProDetail . id } id = { dataProDetail . id } productName = { dataProDetail . productName }
productSKU = { dataProDetail . productSKU } productImage = { dataProDetail . productImage } price = { dataProDetail . price } marketPrice = { dataProDetail . marketPrice } quantity = { dataProDetail . quantity } / >
< / View >
< View >
{
dataCombo . map ( item = > < ItemComboSet key = { item . id } id = { item . id } productName = { item . productName }
productSKU = { item . productSKU } productImage = { item . productImage } price = { item . price } marketPrice = { item . marketPrice } quantity = { item . quantity }
/ > )
}
< / View >
< View style = { styles . boxproductComboTotalPrice } >
< Text > Tổng tiền : < / Text >
< Text style = { styles . boxproductComboPrice } > 79.000 . 000 đ < / Text >
< Text style = { styles . boxproductComboPriceOld } > 89.000 . 000 đ < / Text >
< Pressable style = { styles . boxproductComboButtonBuy } >
< Text style = { styles . boxproductComboBuyCount } > Mua thêm 0 sản phẩm < / Text >
< / Pressable >
< / View >
< / View >
< / View >
)
}
const ProductDetailVideo = ( ) = > {
const [ playing , setPlaying ] = useState ( false ) ;
const heightVideo = winWidth / 2 + 15 ;
return (
< View style = { styles . productDetailVideo } >
< Text style = { styles . productDetailSpecTitle } > Video Sản phẩm < / Text >
< View >
< YoutubePlayer
height = { heightVideo }
play = { playing }
videoId = { "efxqop7QHr8" }
/ >
< / View >
< / View >
)
}
const ProductDetailSameCategory = ( ) = > {
const itemProductStyle = {
width : halfWinWidth ,
borderBottomWidth : 1 ,
borderBottomColor : '#e8e8e8' ,
borderRightWidth : 1 ,
borderRightColor : '#e8e8e8' ,
}
const productData = [
{
id : 1 ,
productName : 'Laptop LG Gram 14ZD90N-V.AX55A5 (i5 1035G7/8GB RAM/512GBSSD/14.0 inch FHD/FP/Xám Bạc) (model 2020)' ,
productSKU : 'TESTSKU' ,
productImage : {
small : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
medium : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
large : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
original : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
} ,
price : 30000000 ,
marketPrice : 50000000 ,
quantity : 1 ,
} ,
{
id : 2 ,
productName : 'Laptop LG Gram 14ZD90N-V.AX55A5 (i5 1035G7/8GB RAM/512GBSSD/14.0 inch FHD/FP/Xám Bạc) (model 2020)' ,
productSKU : 'TESTSKU' ,
productImage : {
small : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
medium : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
large : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
original : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
} ,
price : 25000000 ,
marketPrice : 50000000 ,
quantity : 0 ,
} ,
{
id : 3 ,
productName : 'Laptop LG Gram 14ZD90N-V.AX55A5 (i5 1035G7/8GB RAM/512GBSSD/14.0 inch FHD/FP/Xám Bạc) (model 2020)' ,
productSKU : 'TESTSKU' ,
productImage : {
small : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
medium : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
large : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
original : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
} ,
price : 35000000 ,
marketPrice : 50000000 ,
quantity : 1 ,
} ,
{
id : 4 ,
productName : 'Laptop LG Gram 14ZD90N-V.AX55A5 (i5 1035G7/8GB RAM/512GBSSD/14.0 inch FHD/FP/Xám Bạc) (model 2020)' ,
productSKU : 'TESTSKU' ,
productImage : {
small : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
medium : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
large : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
original : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
} ,
price : 40000000 ,
marketPrice : 50000000 ,
quantity : 1 ,
} ,
{
id : 5 ,
productName : 'Laptop LG Gram 14ZD90N-V.AX55A5 (i5 1035G7/8GB RAM/512GBSSD/14.0 inch FHD/FP/Xám Bạc) (model 2020)' ,
productSKU : 'TESTSKU' ,
productImage : {
small : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
medium : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
large : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
original : 'https://hanoicomputercdn.com/media/product/120_52019_14zd90n_v_ax55a5.png' ,
} ,
price : 30000000 ,
marketPrice : 50000000 ,
quantity : 1 ,
} ,
]
return (
< View style = { styles . bloxProductHome } >
< Text style = { styles . titleProductHome } > Lap top , máy tính xách tay < / Text >
< View style = { styles . listProductHomeBao } >
< ScrollView horizontal = { true } style = { styles . listProductHome } >
{
productData . map ( item = > < ShowProductItem key = { item . id } id = { item . id } productName = { item . productName }
productSKU = { item . productSKU } productImage = { item . productImage } price = { item . price } marketPrice = { item . marketPrice } quantity = { item . quantity } privateStyle = { itemProductStyle }
/ > )
}
< / ScrollView >
< / View >
< / View >
)
}
const ProductDetailReview = ( ) = > {
const dataReview = {
summary : {
total : 10 ,
avgRate : 4 ,
} ,
list : [
{
custommerName : 'Hurasoft Test' ,
date : 15 / 3 / 2021 ,
content : 'Test bình luận thôi nhé' ,
raply : [
{
custommerName : 'Admin' ,
date : 15 / 3 / 2021 ,
content : 'Test trả lời thôi nhé' ,
}
]
} ,
{
custommerName : 'Hurasoft Test' ,
date : 15 / 3 / 2021 ,
content : 'Test bình luận thôi nhé' ,
raply : [
{
custommerName : 'Admin' ,
date : 15 / 3 / 2021 ,
content : 'Test trả lời thôi nhé' ,
}
]
} ,
]
}
const abc = [ 1 , 2 , 3 , 4 , 5 ]
const bcd = {
1 : 1 ,
2 : 3 ,
}
return (
< View style = { styles . boxProductReview } >
< Text style = { styles . titleProductHome } > Bình luận về sản phẩm < / Text >
< View style = { styles . reviewRate } >
< View style = { styles . reviewRateTotal } >
< Text style = { styles . reviewRateTotalNum } > { dataReview . summary . avgRate } / 5 < / Text >
< FontAwesome style = { styles . reviewRateTotalIcon } name = "star" / >
< / View >
< View style = { styles . reviewRateList } >
< ListCounterRatingReviewItem / >
< / View >
< / View >
< Text > Chia sẻ nhận xét về sản phẩm < / Text >
< Pressable style = { styles . reviewButtonShowForm } onPress = { ( ) = > Alert . alert ( 'show form review' ) } > < Text style = { styles . reviewButtonShowFormText } > Gửi đ á nh giá của bạn < / Text > < / Pressable >
< View style = { styles . reviewForm } >
< View style = { styles . reviewFormContent } >
< FormInputReview / >
< / View >
< / View >
< / View >
)
}
type listItem = {
rate : number ,
total : number ,
}
const ListCounterRatingReviewItem = ( ) = > {
const listRate = [
{
rate : 5 ,
total : 3
} ,
{
rate : 4 ,
total : 3
} ,
{
rate : 3 ,
total : 2
} ,
{
rate : 2 ,
total : 2
} ,
{
rate : 1 ,
total : 0
} ,
]
return (
< View >
{
listRate . map ( ( item , index ) = >
< View key = { index } style = { styles . reviewRateListItem } >
< View style = { styles . reviewRateListItemNum } >
< Text style = { styles . reviewRateListText } > { item . rate } < / Text >
< FontAwesome style = { styles . reviewRateListIcon } name = "star" / >
< / View >
< View style = { styles . reviewRateListItemCount } >
< Text style = { styles . reviewRateListCount } > { item . total } < / Text >
< Text style = { styles . reviewRateListCountText } > đ á nh giá < / Text >
< / View >
< / View >
)
}
< / View >
)
}
const Rating = ( ) = > {
const listRate = [ 1 , 2 , 3 , 4 , 5 ] ;
const listStatusRate = [ 'Không thích' , 'Tạm được' , 'Bình thường' , 'Hài lòng' , 'Rất hài lòng' ] ;
const [ defaultRating , setDefaultRating ] = useState ( 5 ) ;
const [ statusRating , setStatusRating ] = useState ( 5 ) ;
return (
< View style = { styles . ratingStyle } >
< Text style = { styles . reviewFormTitle } > Chọn đ á nh giá của bạn < / Text >
{
listRate . map ( ( item , index ) = > {
return (
< TouchableOpacity style = { styles . ratingStyleStar } onPress = { ( ) = > {
setDefaultRating ( item )
setStatusRating ( item )
} } key = { index } >
{
item <= defaultRating
? < FontAwesome style = { styles . ratingStyleIconActive } name = "star" / >
: < FontAwesome style = { styles . ratingStyleIcon } name = "star" / >
}
< / TouchableOpacity >
)
}
)
}
{
listStatusRate . map ( ( item , index ) = > {
const key = index + 1 ;
if ( statusRating == key ) {
return (
< Text style = { styles . ratingStyleText } key = { index } > { item } < / Text >
)
}
} )
}
< / View >
)
}
const FormInputReview = ( ) = > {
return (
< View style = { [ styles . boxFormReview ] } >
< Rating / >
< View style = { styles . boxFormReviewContentText } >
< TextInput style = { styles . boxFormReviewContent } multiline = { true } numberOfLines = { 4 } placeholder = "Nhập đánh giá về sản phẩm (tối thiểu 80 ký tự)" / >
< Pressable style = { styles . boxFormReviewFile } onPress = { ( ) = > Alert . alert ( 'Chức năng up ảnh' ) } >
< Ionicons style = { styles . boxFormReviewFileIcon } name = "camera-outline" / >
< Text style = { styles . boxFormReviewFileText } > Đ í nh kèm ả nh < / Text >
< / Pressable >
< / View >
< TextInput style = { styles . boxFormReviewInput } placeholder = "Họ tên" / >
< TextInput style = { styles . boxFormReviewInput } placeholder = "Số điện thoại" / >
< TextInput style = { styles . boxFormReviewInput } placeholder = "Email" / >
< Pressable style = { styles . boxFormReviewSubmit } >
< Text style = { styles . boxFormReviewSubmitText } > Gửi đ á nh giá < / Text >
< / Pressable >
< / View >
)
}
const ProductDetailComment = ( ) = > {
const [ modalVisible , setModalVisible ] = useState ( false ) ;
return (
< View style = { [ styles . boxFormComment ] } >
< View style = { styles . boxFormReviewContentText } >
< TextInput style = { styles . boxFormReviewContent } multiline = { true } numberOfLines = { 4 } placeholder = "Mời bạn để lại bình luận" / >
< Pressable style = { styles . boxFormReviewFile } onPress = { ( ) = > Alert . alert ( 'Chức năng up ảnh' ) } >
< Ionicons style = { styles . boxFormReviewFileIcon } name = "camera-outline" / >
< Text style = { styles . boxFormReviewFileText } > Đ í nh kèm ả nh < / Text >
< Text style = { styles . boxFormComentFileText } > Quy đ ị nh đ ă ng bình luận < / Text >
< / Pressable >
< View style = { styles . boxFormComentShowForm } >
< Pressable style = { styles . boxFormComentShowFormButton } onPress = { ( ) = > setModalVisible ( true ) } >
< Text style = { styles . boxFormComentShowFormButtonText } > Gửi bình luận < / Text >
< / Pressable >
< / View >
< / View >
< Modal visible = { modalVisible } animationType = "slide" transparent = { true } onRequestClose = { ( ) = > { setModalVisible ( ! modalVisible ) ; } } >
< Pressable onPress = { ( ) = > setModalVisible ( ! modalVisible ) } style = { styles . popupCmt } >
< View style = { styles . popupCmtContent } >
< Pressable onPress = { ( ) = > setModalVisible ( ! modalVisible ) } >
< FontAwesome style = { styles . popupCmtClose } name = "times" / >
< / Pressable >
< TextInput style = { styles . boxFormReviewInput } placeholder = "Họ tên" / >
< TextInput style = { styles . boxFormReviewInput } placeholder = "Số điện thoại" / >
< TextInput style = { styles . boxFormReviewInput } placeholder = "Email" / >
< Pressable style = { styles . boxFormReviewSubmit } >
< Text style = { styles . boxFormReviewSubmitText } > Gửi đ á nh giá < / Text >
< / Pressable >
< / View >
< / Pressable >
< / Modal >
< / View >
)
}
const styles = StyleSheet . create ( {
container : {
flex : 1 ,
alignItems : 'center' ,
justifyContent : 'center' ,
backgroundColor : '#fff' ,
} ,
title : {
fontSize : 20 ,
fontWeight : 'bold' ,
} ,
brecrumb : {
display : 'flex' ,
width : winWidth ,
paddingLeft : 10 ,
paddingRight : 10 ,
flexDirection : 'row' ,
height : 18 ,
alignItems : 'center' ,
marginTop : 10 ,
marginBottom : 10 ,
} ,
brecrumbText : {
fontSize : 13 ,
color : '#222' ,
} ,
brecrumbTextLast : {
fontSize : 13 ,
color : '#b7b7b7' ,
} ,
brecrumbIcon : {
fontSize : 13 ,
color : '#222' ,
marginLeft : 6 ,
marginRight : 6
} ,
sliderSwipperDetailBox : {
width : winWidth ,
height : 500 * ratio ,
paddingHorizontal : 10 ,
} ,
sliderSwipperDetail : {
marginBottom : 20 ,
} ,
imgSliderDetailItem : {
height : winWidth - 20 ,
width : winWidth - 20 ,
position : 'relative' ,
flexDirection : 'row' ,
justifyContent : 'center' ,
alignItems : 'center'
} ,
imgSliderDetail : {
height : winWidth - 20 ,
width : winWidth - 20 ,
maxHeight : winWidth - 20 ,
maxWidth : winWidth - 20 ,
} ,
boxContentTopDetail : {
paddingHorizontal : 10 ,
} ,
ProductDetailTitle : {
marginVertical : 5 ,
fontSize : 18 ,
fontWeight : 'bold' ,
} ,
ProductDetailSkuRate : {
marginVertical : 14 ,
display : 'flex' ,
flexDirection : 'row'
} ,
ProductDetailSku : {
fontSize : 14 ,
marginRight : 20 ,
} ,
ProductDetailSkuText : {
color : '#f00'
} ,
ProductDetailRate : {
fontSize : 14 ,
} ,
ProductDetailRateImg : { } ,
ProductDetailBoxPrice : {
backgroundColor : '#fcf8e4' ,
padding : 10 ,
borderRadius : 5 ,
width : '100%' ,
marginBottom : 10 ,
} ,
backGroundBoxPrice : {
backgroundColor : '#fcf8e4' ,
} ,
ProductDetailPrice : {
flexDirection : 'row' ,
alignItems : 'baseline' ,
paddingBottom : 5 ,
} ,
ProductDetailBoxPriceText : {
marginRight : 20 ,
fontSize : 18 ,
fontWeight : 'bold' ,
color : '#f10000'
} ,
ProductDetailBoxPriceVat : { } ,
ProductDetailOldPrice : {
flexDirection : 'row' ,
display : 'flex' ,
flexWrap : 'wrap' ,
paddingBottom : 10 ,
} ,
ProductDetailOldPriceTitle : { } ,
ProductDetailOldPriceText : {
fontWeight : 'bold' ,
fontSize : 14 ,
textDecorationLine : 'line-through' ,
} ,
ProductDetailOldPriceDiscount : { } ,
ProductDetailConfig : { } ,
ProductDetailConfigTitle : {
paddingBottom : 5 ,
fontSize : 14 ,
fontWeight : 'bold' ,
} ,
ProductDetailConfigItem : {
paddingBottom : 10 ,
backgroundColor : '#fcf8e4' ,
display : 'flex' ,
flexDirection : 'column' ,
width : '100%' ,
} ,
ProductDetailConfigItemName : {
paddingHorizontal : 10 ,
paddingVertical : 10 ,
paddingBottom : 5 ,
display : 'flex' ,
flexDirection : 'row' ,
backgroundColor : '#fff' ,
borderTopLeftRadius : 3 ,
borderTopRightRadius : 3 ,
alignItems : 'center' ,
} ,
ProductDetailConfigItemIcon : {
fontSize : 16 ,
marginRight : 10 ,
color : '#666'
} ,
ProductDetailConfigItemIconCurent : {
color : '#26b214' ,
fontSize : 16 ,
marginRight : 10 ,
} ,
ProductDetailConfigItemNamePro : {
fontSize : 14 ,
} ,
ProductDetailConfigItemPrice : {
paddingHorizontal : 10 ,
paddingVertical : 10 ,
paddingTop : 5 ,
display : 'flex' ,
flexDirection : 'row' ,
backgroundColor : '#fff' ,
borderBottomLeftRadius : 3 ,
borderBottomRightRadius : 3 ,
alignItems : 'center' ,
fontSize : 15 ,
color : '#d82a29' ,
fontWeight : 'bold'
} ,
ProductDetailBoxWarehouse : {
marginBottom : 10 ,
display : 'flex' ,
flexDirection : 'column' ,
} ,
ProductDetailBoxWarehouseTitle : {
fontSize : 14 ,
marginBottom : 5 ,
} ,
ProductDetailBoxWarehouseList : {
display : 'flex' ,
flexDirection : 'column' ,
} ,
ProductDetailBoxWarehouseItem : {
fontSize : 14 ,
marginBottom : 5 ,
color : '#f00' ,
display : 'flex' ,
flexDirection : 'row' ,
} ,
ProductDetailBoxWarehouseIcon : {
color : '#26b214' ,
marginRight : 5 ,
} ,
ProductDetailMgb10 : {
marginBottom : 10 ,
} ,
ProductDetailText14 : {
fontSize : 14 ,
} ,
detailOfferFix : {
display : 'flex' ,
flexDirection : 'column' ,
marginBottom : 10 ,
} ,
detailOfferFixItem : {
marginBottom : 10 ,
display : 'flex' ,
flexDirection : 'row' ,
alignItems : 'flex-start' ,
width : '100%'
} ,
linearGradientHot : {
width : 42 ,
height : 24 ,
display : 'flex' ,
flexDirection : 'row' ,
justifyContent : 'center' ,
alignItems : 'center' ,
borderRadius : 12 ,
marginRight : 10 ,
} ,
linearGradientHotText : {
color : '#fff'
} ,
detailOfferFixItemText : {
width : winWidth - 72 ,
} ,
detailOffer : {
marginBottom : 20 ,
display : 'flex' ,
flexDirection : 'column'
} ,
linearGradientOffer : {
padding : 10 ,
borderRadius : 3 ,
marginBottom : 10 ,
} ,
detailOfferTitle : {
textTransform : 'uppercase' ,
color : '#fff' ,
fontSize : 14 ,
} ,
detailOfferList : {
padding : 10 ,
backgroundColor : '#f1f1f1' ,
borderRadius : 3 ,
} ,
detailOfferItem : {
marginBottom : 10 ,
} ,
productDetailDes : {
marginBottom : 20 ,
paddingHorizontal : 10 ,
} ,
productDetailDesTitle : {
padding : 10 ,
backgroundColor : '#243a76' ,
borderRadius : 3 ,
fontSize : 16 ,
fontWeight : 'bold' ,
color : '#fff' ,
textTransform : 'uppercase' ,
overflow : 'hidden' ,
marginBottom : 10 ,
} ,
productDetailDesContent : { } ,
productDetailSpec : {
marginBottom : 20 ,
paddingHorizontal : 10 ,
} ,
productDetailSpecTitle : {
padding : 10 ,
backgroundColor : '#243a76' ,
borderRadius : 3 ,
fontSize : 16 ,
fontWeight : 'bold' ,
color : '#fff' ,
textTransform : 'uppercase' ,
overflow : 'hidden' ,
marginBottom : 10 ,
} ,
productDetailSpecContent : {
display : 'flex' ,
justifyContent : 'center' ,
flexDirection : 'row' ,
} ,
tableTitle : {
height : 40 ,
} ,
tableSpec : {
width : winWidth - 20 ,
} ,
row : {
height : 28 ,
} ,
col : {
height : 28 ,
} ,
tableWrapper : {
flexDirection : 'row' ,
display : 'flex' ,
justifyContent : 'center'
} ,
boxproductCombo : {
width : winWidth ,
paddingHorizontal : 10 ,
marginBottom : 20 ,
} ,
boxproductComboTotalPrice : {
display : 'flex' ,
flexDirection : 'column' ,
} ,
boxproductComboPrice : {
marginTop : 5 ,
fontSize : 18 ,
fontWeight : 'bold' ,
color : '#e00'
} ,
boxproductComboPriceOld : {
marginVertical : 5 ,
fontSize : 18 ,
fontWeight : 'bold' ,
color : '#999' ,
textDecorationLine : 'line-through'
} ,
boxproductComboButtonBuy : {
width : '100%' ,
display : 'flex' ,
flexDirection : 'row' ,
height : 42 ,
justifyContent : 'center' ,
alignItems : 'center' ,
backgroundColor : '#e00' ,
marginTop : 5 ,
} ,
boxproductComboBuyCount : {
textTransform : 'uppercase' ,
color : '#fff' ,
fontSize : 16 ,
fontWeight : 'bold' ,
borderRadius : 3 ,
} ,
productDetailVideo : {
paddingHorizontal : 10 ,
marginBottom : 20 ,
} ,
videoDetail : {
width : winWidth - 20 ,
height : 300 ,
} ,
bloxProductHome : {
width : winWidth ,
marginBottom : 20 ,
padding : 10 ,
} ,
titleProductHome : {
backgroundColor : '#243a76' ,
fontSize : 15 ,
paddingLeft : 10 ,
paddingRight : 10 ,
borderRadius : 3 ,
lineHeight : 40 ,
marginBottom : 5 ,
textTransform : 'uppercase' ,
fontWeight : '700' ,
color : '#fff' ,
overflow : 'hidden' ,
} ,
listProductHomeBao : {
overflow : 'hidden' ,
} ,
listProductHome : {
marginRight : - 5 ,
marginLeft : - 5 ,
} ,
boxProductReview : {
paddingHorizontal : 10 ,
marginBottom : 20 ,
} ,
reviewRate : {
borderWidth : 1 ,
borderColor : '#e1e1e1' ,
borderRadius : 5 ,
padding : 10 ,
display : 'flex' ,
flexDirection : 'row' ,
alignItems : 'center' ,
marginBottom : 10 ,
} ,
reviewRateTotal : {
width : ( winWidth - 20 ) / 2 ,
flexDirection : 'row' ,
alignItems : 'center' ,
} ,
reviewRateTotalNum : {
marginRight : 5 ,
fontSize : 16 ,
} ,
reviewRateTotalIcon : {
fontSize : 16 ,
} ,
reviewRateList : {
} ,
reviewRateListItem : {
flexDirection : 'row' ,
alignItems : 'center' ,
marginBottom : 10 ,
} ,
reviewRateListItemNum : {
flexDirection : 'row' ,
alignItems : 'center' ,
marginRight : 10 ,
} ,
reviewRateListItemCount : {
flexDirection : 'row' ,
} ,
reviewRateListText : {
} ,
reviewRateListIcon : { } ,
reviewRateListCount : {
color : '#288ad6' ,
fontWeight : 'bold' ,
} ,
reviewRateListCountText : {
color : '#288ad6' ,
} ,
reviewButtonShowForm : {
width : '100%' ,
borderRadius : 5 ,
borderWidth : 1 ,
borderColor : '#288ad6' ,
flexDirection : 'row' ,
justifyContent : 'center' ,
height : 46 ,
alignItems : 'center' ,
marginVertical : 10 ,
} ,
reviewButtonShowFormText : {
color : '#288ad6' ,
} ,
reviewForm : { } ,
reviewFormContent : { } ,
reviewFormTitle : {
marginRight : 10 ,
} ,
ratingStyle : {
flexDirection : 'row' ,
alignItems : 'center' ,
marginBottom : 8 ,
} ,
ratingStyleStar : {
marginHorizontal : 1 ,
} ,
ratingStyleIcon : {
fontSize : 16 ,
color : '#dadada'
} ,
ratingStyleIconActive : {
fontSize : 16 ,
color : '#ffa53f'
} ,
ratingStyleText : {
marginLeft : 8 ,
lineHeight : 18 ,
paddingHorizontal : 5 ,
color : '#fff' ,
backgroundColor : '#52b858'
} ,
boxFormReview : {
} ,
boxFormReviewContentText : {
borderColor : '#e1e1e1' ,
borderWidth : 1 ,
borderRadius : 5 ,
overflow : 'hidden' ,
marginBottom : 10 ,
} ,
boxFormReviewContent : {
height : 100 ,
padding : 10 ,
borderBottomWidth : 1 ,
borderBottomColor : '#e1e1e1'
} ,
boxFormReviewFile : {
padding : 10 ,
flexDirection : 'row' ,
alignItems : 'center' ,
backgroundColor : '#f7f7f7'
} ,
boxFormReviewFileIcon : {
marginRight : 10 ,
fontSize : 16 ,
} ,
boxFormReviewFileText : {
} ,
boxFormReviewInput : {
borderColor : '#e1e1e1' ,
borderWidth : 1 ,
borderRadius : 5 ,
overflow : 'hidden' ,
marginBottom : 10 ,
padding : 10 ,
} ,
boxFormReviewSubmit : {
width : '100%' ,
borderRadius : 5 ,
borderWidth : 1 ,
borderColor : '#288ad6' ,
flexDirection : 'row' ,
justifyContent : 'center' ,
height : 46 ,
alignItems : 'center' ,
marginVertical : 10 ,
} ,
boxFormReviewSubmitText : {
color : '#288ad6' ,
} ,
boxFormComment : {
paddingHorizontal : 10 ,
marginBottom : 20 ,
} ,
boxFormComentShowForm : {
padding : 10 ,
backgroundColor : '#f7f7f7' ,
flexDirection : 'row' ,
justifyContent : 'flex-end' ,
} ,
boxFormComentShowFormButton : {
padding : 10 ,
width : 150 ,
backgroundColor : '#288ad6' ,
borderRadius : 5 ,
flexDirection : 'row' ,
justifyContent : 'center' ,
} ,
boxFormComentShowFormButtonText : {
textTransform : 'uppercase' ,
color : '#fff' ,
} ,
popupCmt : {
flex : 1 ,
justifyContent : 'center' ,
alignItems : 'center' ,
backgroundColor : 'rgba(0,0,0,0.5)' ,
position : 'relative' ,
zIndex : 1 ,
} ,
popupCmtContent : {
width : winWidth - 30 ,
maxWidth : 300 ,
maxHeight : 450 ,
backgroundColor : '#fff' ,
shadowColor : "#000" ,
shadowOffset : {
width : 0 ,
height : 0 ,
} ,
shadowOpacity : 2.22 ,
shadowRadius : 2.22 ,
elevation : 3 ,
borderRadius : 5 ,
position : 'relative' ,
zIndex : 2 ,
padding : 10 ,
paddingTop : 20 ,
} ,
popupCmtClose : {
width : 30 ,
height : 30 ,
borderRadius : 15 ,
position : 'absolute' ,
right : - 20 ,
top : - 30 ,
shadowColor : "#000" ,
shadowOffset : {
width : 0 ,
height : 0 ,
} ,
shadowOpacity : 2.22 ,
shadowRadius : 2.22 ,
backgroundColor : '#fff' ,
zIndex : 11 ,
overflow : 'hidden' ,
textAlign : 'center' ,
lineHeight : 30 ,
fontSize : 16 ,
} ,
boxFormComentFileText : { } ,
2021-03-24 10:19:30 +07:00
2021-03-16 17:00:55 +07:00
} )