parent
ed1bd15f99
commit
d481fdd9da
14 changed files with 589 additions and 55 deletions
@ -0,0 +1,57 @@ |
|||||||
|
import React from "react"; |
||||||
|
import Breadcrumbs from "@material-ui/core/Breadcrumbs"; |
||||||
|
import { Link } from "react-router-dom"; |
||||||
|
|
||||||
|
import "./index.scss"; |
||||||
|
|
||||||
|
function handleClick(event) { |
||||||
|
event.preventDefault(); |
||||||
|
console.info("You clicked a breadcrumb."); |
||||||
|
} |
||||||
|
|
||||||
|
const maxDesktopSize = 1250; |
||||||
|
const maxMobileSize = 650; |
||||||
|
|
||||||
|
const fontSize = { |
||||||
|
desktop: window.innerWidth > maxDesktopSize ? 12 : window.innerWidth / 90, |
||||||
|
mobile: window.innerWidth > maxDesktopSize ? 14 : window.innerWidth / 25, |
||||||
|
}; |
||||||
|
|
||||||
|
export default function ActiveLastBreadcrumb(props) { |
||||||
|
const { name } = props; |
||||||
|
return ( |
||||||
|
<Breadcrumbs aria-label="breadcrumb"> |
||||||
|
<Link |
||||||
|
style={{ |
||||||
|
fontSize: |
||||||
|
window.innerWidth > 1000 ? fontSize.desktop : fontSize.mobile, |
||||||
|
}} |
||||||
|
to={"/"} |
||||||
|
> |
||||||
|
صفحه اصلی |
||||||
|
</Link> |
||||||
|
<Link |
||||||
|
style={{ |
||||||
|
fontSize: |
||||||
|
window.innerWidth > 1000 ? fontSize.desktop : fontSize.mobile, |
||||||
|
}} |
||||||
|
to={"/blogs"} |
||||||
|
> |
||||||
|
وبلاگ |
||||||
|
</Link> |
||||||
|
<Link |
||||||
|
style={{ |
||||||
|
fontSize: |
||||||
|
window.innerWidth > 1000 ? fontSize.desktop : fontSize.mobile, |
||||||
|
color: "#00CC69", |
||||||
|
}} |
||||||
|
to={`/blogs/${window.location.pathname.slice( |
||||||
|
window.location.pathname.lastIndexOf("/") + 1, |
||||||
|
window.location.pathname.length |
||||||
|
)}`}
|
||||||
|
> |
||||||
|
{name} |
||||||
|
</Link> |
||||||
|
</Breadcrumbs> |
||||||
|
); |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
.MuiBreadcrumbs-li{ |
||||||
|
a { |
||||||
|
text-decoration: none; |
||||||
|
font-family: numeralLight; |
||||||
|
color: #6F7074; |
||||||
|
letter-spacing: -1px; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,143 @@ |
|||||||
|
import React, { Component, Fragment } from "react"; |
||||||
|
import Loader from "~/components/Loader/index"; |
||||||
|
import Footer from "../Home/Footer/index"; |
||||||
|
import Navbar from "../Home/Navbar/index"; |
||||||
|
import BreadCrumb from "./BreadCrumb/index"; |
||||||
|
import Image from "../QR/Image/index"; |
||||||
|
import VideoBox from "../QR/VideoBox/index"; |
||||||
|
import VoiceBox from "../QR/VoiceBox/index"; |
||||||
|
|
||||||
|
import { connect } from "react-redux"; |
||||||
|
import { publicApi } from "~/Redux/actions"; |
||||||
|
|
||||||
|
import "./index.scss"; |
||||||
|
|
||||||
|
const maxDesktopSize = 1250; |
||||||
|
|
||||||
|
class Blog extends Component { |
||||||
|
componentDidMount() { |
||||||
|
this.props.getBlogInfo({ |
||||||
|
id: window.location.pathname.slice( |
||||||
|
window.location.pathname.lastIndexOf("/") + 1, |
||||||
|
window.location.pathname.length |
||||||
|
), |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
render() { |
||||||
|
const fontSize = { |
||||||
|
desktop: { |
||||||
|
sidebar: { |
||||||
|
h1: window.innerWidth > maxDesktopSize ? 14 : window.innerWidth / 95, |
||||||
|
h2: window.innerWidth > maxDesktopSize ? 12 : window.innerWidth / 120, |
||||||
|
div: |
||||||
|
window.innerWidth > maxDesktopSize ? 12 : window.innerWidth / 120, |
||||||
|
}, |
||||||
|
content: { |
||||||
|
h1: window.innerWidth > maxDesktopSize ? 18 : window.innerWidth / 75, |
||||||
|
p: window.innerWidth > maxDesktopSize ? 14 : window.innerWidth / 90, |
||||||
|
h2: window.innerWidth > maxDesktopSize ? 14 : window.innerWidth / 90, |
||||||
|
}, |
||||||
|
}, |
||||||
|
}; |
||||||
|
const { blog } = this.props; |
||||||
|
return ( |
||||||
|
<> |
||||||
|
{window.innerWidth > 1000 ? ( |
||||||
|
<> |
||||||
|
{blog ? ( |
||||||
|
<div className="landscape-blog d-flex flex-column"> |
||||||
|
<Navbar /> |
||||||
|
<div className="landscape-blog__header d-flex flex-column"> |
||||||
|
<BreadCrumb name={blog.title} /> |
||||||
|
<div className="landscape-blog__header--top d-flex"> |
||||||
|
<h1>{blog.title}</h1> |
||||||
|
</div> |
||||||
|
<div className="landscape-blog__header--bottom d-flex"> |
||||||
|
<h2></h2> |
||||||
|
<div>{blog.date}</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div className="landscape-blog__body d-flex flex-column"> |
||||||
|
<div className="landscape-blog__body--image d-flex"> |
||||||
|
<Identifier data={blog} fontSize={fontSize} /> |
||||||
|
</div> |
||||||
|
<p className="landscape-blog__body--text d-flex"> |
||||||
|
{blog.text} |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
) : ( |
||||||
|
<div |
||||||
|
className="d-flex justify-content-center align-items-center" |
||||||
|
style={{ height: "100vh", width: "100vw" }} |
||||||
|
> |
||||||
|
<Loader /> |
||||||
|
</div> |
||||||
|
)} |
||||||
|
|
||||||
|
<Footer /> |
||||||
|
</> |
||||||
|
) : null} |
||||||
|
{window.innerWidth < 1000 ? ( |
||||||
|
blog ? ( |
||||||
|
<div className="portrait-blog d-flex flex-column"> |
||||||
|
<Navbar /> |
||||||
|
<div className="portrait-blog__header d-flex flex-column"> |
||||||
|
<BreadCrumb name={blog.title} /> |
||||||
|
<div className="portrait-blog__header--top d-flex"> |
||||||
|
<h1>{blog.title}</h1> |
||||||
|
</div> |
||||||
|
<div className="portrait-blog__header--bottom d-flex"> |
||||||
|
<h2>{blog.subTitle}</h2> |
||||||
|
<div>{blog.date}</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div className="portrait-blog__body d-flex flex-column"> |
||||||
|
<div className="portrait-blog__body--image d-flex"> |
||||||
|
<Identifier data={blog} /> |
||||||
|
</div> |
||||||
|
<p className="portrait-blog__body--text d-flex">{blog.text}</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
) : ( |
||||||
|
<div |
||||||
|
className="d-flex justify-content-center align-items-center" |
||||||
|
style={{ height: "100vh", width: "100vw" }} |
||||||
|
> |
||||||
|
<Loader /> |
||||||
|
</div> |
||||||
|
) |
||||||
|
) : null} |
||||||
|
</> |
||||||
|
); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
export default connect( |
||||||
|
(state) => ({ |
||||||
|
blog: state.publicApi.blog, |
||||||
|
}), |
||||||
|
{ getBlogInfo: publicApi.getBlogInfo } |
||||||
|
)(Blog); |
||||||
|
|
||||||
|
const Identifier = (props) => { |
||||||
|
const { data } = props; |
||||||
|
console.log(data); |
||||||
|
return ( |
||||||
|
<> |
||||||
|
{data.type === "audio" ? ( |
||||||
|
<VoiceBox fontSize={props.fontSize} data={data} /> |
||||||
|
) : null} |
||||||
|
{data.type === "video" ? ( |
||||||
|
<VideoBox fontSize={props.fontSize} data={data} /> |
||||||
|
) : null} |
||||||
|
{data.type === "image" ? ( |
||||||
|
<img |
||||||
|
src={"https://dnvn.ir/api/v1/file/" + data.fileIds} |
||||||
|
alt={data.fileIds} |
||||||
|
/> |
||||||
|
) : null} |
||||||
|
</> |
||||||
|
); |
||||||
|
}; |
@ -0,0 +1,129 @@ |
|||||||
|
.portrait-blog { |
||||||
|
width: 100vw; |
||||||
|
// height: 100vh; |
||||||
|
padding: 0px 10px; |
||||||
|
position: relative; |
||||||
|
&__header { |
||||||
|
direction: rtl; |
||||||
|
width: 100%; |
||||||
|
margin-top: 80px; |
||||||
|
&--top { |
||||||
|
width: 100%; |
||||||
|
text-align: right; |
||||||
|
align-items: center; |
||||||
|
margin-top: 20px; |
||||||
|
h1 { |
||||||
|
font-size: 24px; |
||||||
|
// color : $dusk; |
||||||
|
margin-bottom: 10px; |
||||||
|
letter-spacing: -2px; |
||||||
|
} |
||||||
|
} |
||||||
|
&--bottom { |
||||||
|
align-items: center; |
||||||
|
direction: rtl; |
||||||
|
width: 100%; |
||||||
|
justify-content: space-between; |
||||||
|
h2 { |
||||||
|
font-size: 14px; |
||||||
|
// color : $dusk; |
||||||
|
margin-bottom: 5px; |
||||||
|
letter-spacing: -1px; |
||||||
|
} |
||||||
|
& div { |
||||||
|
font-size: 14px; |
||||||
|
// color : $dusk; |
||||||
|
margin-bottom: 0px; |
||||||
|
letter-spacing: -1px; |
||||||
|
font-family: IRANSansNumeral; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
&__body { |
||||||
|
width: 100%; |
||||||
|
margin-top: 15px; |
||||||
|
&--image { |
||||||
|
width: 100%; |
||||||
|
& img { |
||||||
|
width: 100%; |
||||||
|
height: 100%; |
||||||
|
border-radius: 10px; |
||||||
|
} |
||||||
|
} |
||||||
|
&--text { |
||||||
|
margin-top: 10px; |
||||||
|
width: 100%; |
||||||
|
direction: rtl; |
||||||
|
text-align: justify !important; |
||||||
|
// color: $dusk; |
||||||
|
color: #4e4e4e; |
||||||
|
font-size: 14px; |
||||||
|
letter-spacing: -1px; |
||||||
|
font-family: numeralLight; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.landscape-blog { |
||||||
|
width: 100vw; |
||||||
|
padding: 0px 10px; |
||||||
|
position: relative; |
||||||
|
text-align: right; |
||||||
|
max-width: 1250px; |
||||||
|
margin: 0px auto; |
||||||
|
&__header { |
||||||
|
direction: rtl; |
||||||
|
width: 100%; |
||||||
|
margin-top: 100px; |
||||||
|
max-width: 800px; |
||||||
|
&--top { |
||||||
|
width: 100%; |
||||||
|
text-align: right; |
||||||
|
align-items: center; |
||||||
|
margin-top: 20px; |
||||||
|
h1 { |
||||||
|
font-size: 28px; |
||||||
|
// color : $dusk; |
||||||
|
margin-bottom: 10px; |
||||||
|
letter-spacing: -1px; |
||||||
|
} |
||||||
|
} |
||||||
|
&--bottom { |
||||||
|
align-items: center; |
||||||
|
direction: rtl; |
||||||
|
width: 100%; |
||||||
|
justify-content: space-between; |
||||||
|
h2 { |
||||||
|
font-size: 14px; |
||||||
|
// color : $dusk; |
||||||
|
margin-bottom: 5px; |
||||||
|
letter-spacing: -1px; |
||||||
|
} |
||||||
|
& div { |
||||||
|
font-size: 16px; |
||||||
|
// color : $dusk; |
||||||
|
margin-bottom: 5px; |
||||||
|
letter-spacing: -1px; |
||||||
|
font-family: IRANSansNumeral; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
&__body { |
||||||
|
width: 100%; |
||||||
|
&--image { |
||||||
|
width: 100%; |
||||||
|
max-height: 300px; |
||||||
|
} |
||||||
|
&--text { |
||||||
|
margin-top: 40px; |
||||||
|
width: 100%; |
||||||
|
direction: rtl; |
||||||
|
text-align: justify; |
||||||
|
// color: $dusk; |
||||||
|
color: #4e4e4e; |
||||||
|
font-size: 18px; |
||||||
|
letter-spacing: -1px; |
||||||
|
font-family: numeralLight; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,46 @@ |
|||||||
|
import React from "react"; |
||||||
|
import Breadcrumbs from "@material-ui/core/Breadcrumbs"; |
||||||
|
import { Link } from "react-router-dom"; |
||||||
|
|
||||||
|
import "./index.scss"; |
||||||
|
|
||||||
|
function handleClick(event) { |
||||||
|
event.preventDefault(); |
||||||
|
console.info("You clicked a breadcrumb."); |
||||||
|
} |
||||||
|
|
||||||
|
const maxDesktopSize = 1250; |
||||||
|
const maxMobileSize = 650; |
||||||
|
|
||||||
|
const fontSize = { |
||||||
|
desktop: window.innerWidth > maxDesktopSize ? 12 : window.innerWidth / 90, |
||||||
|
mobile: window.innerWidth > maxDesktopSize ? 14 : window.innerWidth / 25, |
||||||
|
}; |
||||||
|
|
||||||
|
export default function ActiveLastBreadcrumb() { |
||||||
|
return ( |
||||||
|
<Breadcrumbs aria-label="breadcrumb"> |
||||||
|
<Link |
||||||
|
to={"/"} |
||||||
|
style={{ |
||||||
|
fontSize: |
||||||
|
window.innerWidth > 1000 ? fontSize.desktop : fontSize.mobile, |
||||||
|
}} |
||||||
|
// onClick={handleClick}
|
||||||
|
> |
||||||
|
صفحه اصلی |
||||||
|
</Link> |
||||||
|
<Link |
||||||
|
to={"/blogs"} |
||||||
|
style={{ |
||||||
|
fontSize: |
||||||
|
window.innerWidth > 1000 ? fontSize.desktop : fontSize.mobile, |
||||||
|
color: "#00CC69", |
||||||
|
}} |
||||||
|
// onClick={handleClick}
|
||||||
|
> |
||||||
|
وبلاگ |
||||||
|
</Link> |
||||||
|
</Breadcrumbs> |
||||||
|
); |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
.MuiBreadcrumbs-li{ |
||||||
|
a { |
||||||
|
text-decoration: none; |
||||||
|
font-family: numeralLight; |
||||||
|
color: #6F7074; |
||||||
|
letter-spacing: -1px; |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue