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

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