All Downloads are FREE. Search and download functionalities are using the official Maven repository.

components.widgets.Card.Card.jsx Maven / Gradle / Ivy

The newest version!
import React from 'react'
import PropTypes from 'prop-types'
import map from 'lodash/map'
import flow from 'lodash/flow'

// eslint-disable-next-line import/no-named-as-default
import CardItem from './CardItem'
import CardLayout from './CardLayout'

/**
 * Контейнер для карточек
 * @param {boolean} linear - Линейное отображение каждого элемента
 * @param {boolean} circle - Закругление изображения
 * @param {array} items - данные
 * @param {boolean} inverse: - Инверсия цвета текста,
 * @param {boolean} outline: - применение свойства color к бордеру,
 * @param {node} children - элемент потомок компонента Card
 * @param {...any} rest
 * @returns {*}
 * @constructor
 */
function Card({ linear, circle, items, children, outline, inverse, ...rest }) {
    const setPropsAllItem = x => ({
        ...x,
        linear,
        circle,
        outline,
        inverse,
    })

    return (
        
            {children ||
        map(
            items,
            flow(
                setPropsAllItem,
                CardItem,
            ),
        )}
        
    )
}

Card.propTypes = {
    /**
   * Массив элементов
   */
    items: PropTypes.array,
    /**
   * Линейное отображение каждого элемента
   */
    linear: PropTypes.bool,
    /**
   * Закругление изображения
   */
    circle: PropTypes.bool,
    children: PropTypes.node,
    /**
   * Применение свойства color к бордеру,
   */
    outline: PropTypes.bool,
    /**
   * Инверсия цвета текста
   */
    inverse: PropTypes.bool,
}

Card.defaultProps = {
    linear: false,
    inverse: false,
    outline: false,
}

Card.Layout = CardLayout
Card.Item = CardItem

export default Card




© 2015 - 2024 Weber Informatics LLC | Privacy Policy