Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

106 рядки
3.9 KiB

  1. import React, { useState, useEffect } from "react";
  2. import ReactHtmlParser from "react-html-parser";
  3. // @material-ui/core components
  4. import { makeStyles } from "@material-ui/core/styles";
  5. import ReactPaginate from "react-paginate";
  6. import classNames from "classnames";
  7. import GridContainer from "components/Grid/GridContainer.js";
  8. import Grid from '@material-ui/core/Grid';
  9. import GridItem from "components/Grid/GridItem.js";
  10. import CardHeader from "components/Card/CardHeader.js";
  11. import Card from "components/Card/Card.js";
  12. import Carousel from "react-slick";
  13. import CardBody from "components/Card/CardBody.js";
  14. import Button from "components/CustomButtons/Button.js";
  15. import Icon from "@material-ui/core/Icon";
  16. import styles from "assets/jss/nextjs-material-kit/pages/componentsSections/notificationsStyles.js";
  17. const useStyles = makeStyles(styles);
  18. const DataLatestNews = function ({ backend, news, othernews,...props }) {
  19. const classes = useStyles();
  20. const imageClasses = classNames(
  21. classes.imgRaised,
  22. classes.imgRoundedCircle,
  23. classes.imgFluid
  24. );
  25. const settings = {
  26. dots: true,
  27. infinite: true,
  28. speed: 500,
  29. slidesToShow: 1,
  30. slidesToScroll: 1,
  31. autoplay: true,
  32. time: 5
  33. };
  34. const navImageClasses = classNames(classes.imgRounded, classes.imgGallery);
  35. const otherlatnews = othernews.map((data) => {
  36. return (
  37. <Grid align="center" style={{padding:"5px", marginTop:"-50px"}}>
  38. <Card style={{width: "20rem"}}>
  39. <img
  40. style={{height: "180px", width: "100%", display: "block"}}
  41. className={classes.imgCardTop}
  42. src={`${backend}${data.img[0]["url"]}`}
  43. />
  44. <CardBody>
  45. <p>{data.title}</p>
  46. <Button color="info" round href={"/latestnews_details?s="+data.id}>
  47. <Icon className={classes.icons}>open_in_new</Icon>Read More
  48. </Button>
  49. </CardBody>
  50. </Card>
  51. </Grid>
  52. );
  53. })
  54. const latnews = news.map((data) => {
  55. return (
  56. <GridContainer justify="center">
  57. <Grid fluid xs={4}>
  58. <div className={classes.section} id="notifications">
  59. <div className={classes.section}>
  60. <div className={classes.container}>
  61. <GridContainer>
  62. <GridItem className={classes.marginAuto}>
  63. <Card carousel>
  64. <Carousel {...settings}>
  65. <img className={navImageClasses} width="300px" alt="First slide" src={`${backend}${data.img[0]["url"]}`} />
  66. </Carousel>
  67. </Card>
  68. </GridItem>
  69. </GridContainer>
  70. </div>
  71. </div>
  72. </div>
  73. </Grid>
  74. <Grid xs={7} style={{padding:"40px", marginTop:"-30px"}}>
  75. <h4>{data.title}</h4>
  76. <h4>{data.published_at}</h4>
  77. <hr></hr>
  78. <div align="justify">
  79. <p>{ReactHtmlParser(data.description)}</p>
  80. </div>
  81. </Grid>
  82. </GridContainer>
  83. );
  84. });
  85. return (
  86. <Card className={classes.textCenter}>
  87. <div align="center">
  88. <CardHeader color="info">News</CardHeader>
  89. </div>
  90. <CardBody>
  91. <div align="center">
  92. </div>
  93. <GridContainer justify="center">
  94. {latnews}
  95. </GridContainer>
  96. </CardBody>
  97. </Card>
  98. );
  99. };
  100. export default DataLatestNews;