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

components.snippets.Collapse.Collapse.tsx Maven / Gradle / Ivy

The newest version!
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-nocheck ошибка генерации d.ts FIXME типизировать
import React from 'react'
import PropTypes from 'prop-types'
import BaseCollapse from 'rc-collapse'
import classNames from 'classnames'
import map from 'lodash/map'

import { Icon } from '../Icon/Icon'

import { Panel } from './Panel'

// eslint-disable-next-line react/prop-types
const expandIcon = ({ isActive }, collapsible) => (collapsible ? (
    
) : null) /** * Компонент Collapse * @param {string | array} activeKey - активный ключ панели (При совпадении с ключами Panel происходит открытие последней) * @param {boolean} collapsible - флаг выключения возможности сворачивания * @returns {*} * @constructor */ export const Collapse = ({ className, children, dataKey, collapsible, ...rest }) => { // eslint-disable-next-line react/prop-types const renderPanels = ({ text, ...panelProps }) => ( {text} ) return ( expandIcon(props, collapsible)} {...rest} > {children || map(rest[dataKey], renderPanels)} ) } Collapse.propTypes = { /** * Массив ключей открытых панелей */ activeKey: PropTypes.oneOfType([PropTypes.string, PropTypes.array]), /** * Массив ключей открытых по дефолту панелей */ defaultActiveKey: PropTypes.oneOfType([PropTypes.string, PropTypes.array]), destroyInactivePanel: PropTypes.bool, /** * Флаг включения режима 'Аккордион' (При открытии панели захлопнуть предыдущую панель) */ accordion: PropTypes.bool, children: PropTypes.node, className: PropTypes.string, /** * Callback на открытие/закрытие панелей */ onChange: PropTypes.func, /** * Ключ для рендера панелей */ dataKey: PropTypes.string, /** * Флаг выключения возможности сворачивания */ collapsible: PropTypes.bool, } Collapse.defaultProps = { destroyInactivePanel: false, accordion: false, dataKey: 'items', collapsible: true, // eslint-disable-next-line react/default-props-match-prop-types isVisible: true, onChange: () => {}, } export { Panel } export default Collapse as never




© 2015 - 2024 Weber Informatics LLC | Privacy Policy