Rev 3755 | Rev 4637 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
/* eslint-disable react/prop-types */import React from 'react'import { axios } from '../../utils'import Slider from "react-slick";import styled from 'styled-components';const StyledSlider = styled(Slider)`.slick-list {padding: 0 !important;}.slick-slide {margin: 0 27px;}.slick-track {display: flex;}.slick-prev:before, .slick-next:before {color: #FBFBFB !important;font-size: 24px;}.slick-prev, .slick-next {width: 24px;height: 22px;position: relative;}@media (max-width:768px) {.slick-prev{left: auto;margin-left: auto;margin-right: .5rem;grid-row: 1;}.slick-next {right: 0;grid-row: 1;}}`;const SampleNextArrow = ({ className, style, onClick }) => {return (<divclassName={className}style={{ ...style, display: "block", backgroundColor: "#D9D9D9", borderRadius: '100px' }}onClick={onClick}/>);}const SamplePrevArrow = ({ className, style, onClick }) => {return (<divclassName={className}style={{ ...style, display: "block", backgroundColor: "#D9D9D9", borderRadius: '100px' }}onClick={onClick}/>);}const MarketPlace = ({backendVars,labels = {title: 'Cápsulas de Microaprendizaje'}}) => {const [categories, setCategories] = React.useState([])const [capsules, setCapsules] = React.useState([])const [searchParams, setSearchParams] = React.useState({search: '',category: 'capsules'})const handleChange = ({ target },) => setSearchParams({ ...searchParams, [target.name]: target.value })const load = async (_search = searchParams.search, _entity = searchParams.category) => {try {const { data } = await axios.get('/marketplace?search=' + _search + '&entity=' + _entity)if (data.success) setCapsules(data.data)} catch (error) {console.log('>>: error > ', error)}}const getCategories = async () => {const categories = await axios.get('/marketplace/categories')if (categories.data.data) {const _categories = Object.keys(categories.data.data).map(element => {return {label: categories.data.data[element],value: element}})setCategories(_categories)}}const checkParams = () => {const url = window.location.hrefconst hasEntity = url.includes('?entity=')if (hasEntity) {const value = url.split('?entity=')[1]if (value)setSearchParams({ ...searchParams, category: value })}}React.useEffect(() => {getCategories()checkParams()}, [])React.useEffect(() => {load(searchParams.search, searchParams.category)}, [searchParams])const enroll = async url => {try {await axios.post(url)load()} catch (error) {console.log('>>: error > ', error)}}const settings = {// dots: true,infinite: true,speed: 1500,slidesToShow: capsules.length < 4 ? 1 : 4,slidesToScroll: 1,nextArrow: <SampleNextArrow />,prevArrow: <SamplePrevArrow />,responsive: [{breakpoint: 768,settings: {slidesToShow: 2,slidesToScroll: 2,initialSlide: 0}},{breakpoint: 1024,settings: {slidesToShow: 3,slidesToScroll: 3,initialSlide: 0}}]};return (<React.Fragment><section className="companies-info"><div className="container"><div className="company-title"><form name="form-capsule-search"><div className="market_admin_title_buttons"><div className="form-group search_input"><inputtype="text"name="search"id="search"className="form-control"onChange={e => handleChange(e)}value={searchParams.search}placeholder="Realiza una busqueda"/><button className='search-btn'>Buscar</button></div><div className="form-group search_categories"><selectname="select"className="form-control"value={searchParams.category}onChange={e => handleChange(e)}><option value="">Seleccione una categoria</option>{categories.map((element, i) =><option value={element.value} key={i.toString()}>{element.label}</option>)}</select></div></div></form></div><div className="list-col"><h3 className="p-2" style={{ fontWeight: '700' }}>{labels.title}</h3><StyledSlider {...settings}>{capsules.map((element) =><div className="marketplace_card" key={element.name}><div className="microlearning-up-info"><img src={element.image} alt={element.name} /><h3>{element.name}</h3><h4>{backendVars.labelStatus} : {element.status}</h4>{element.link_enroll &&<ul><li><buttononClick={() => enroll(element.link_enroll)}title={'Seleccionar: ' + element.name}className="btn btn-primary cursor-pointer">{backendVars.labelEnroll}</button></li></ul>}</div></div>)}</StyledSlider></div></div></section></React.Fragment>);}export default MarketPlace;