UNPKG

@douyinfe/semi-ui

Version:

A modern, comprehensive, flexible design system and UI library. Connect DesignOps & DevOps. Quickly build beautiful React apps. Maintained by Douyin-fe team.

79 lines 2.27 kB
import _noop from "lodash/noop"; import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; import cls from 'classnames'; import { strings, cssClasses } from '@douyinfe/semi-foundation/lib/es/navigation/constants'; import CollapseButton from './CollapseButton'; import '@douyinfe/semi-foundation/lib/es/navigation/navigation.css'; import NavContext from './nav-context'; export default class NavFooter extends PureComponent { constructor() { super(...arguments); this.renderCollapseButton = () => { const { collapseButton, collapseText } = this.props; if ( /*#__PURE__*/React.isValidElement(collapseButton)) { return collapseButton; } const { onCollapseChange, prefixCls, locale, isCollapsed } = this.context; return /*#__PURE__*/React.createElement(CollapseButton, { prefixCls: prefixCls, isCollapsed: isCollapsed, locale: locale, onClick: onCollapseChange, collapseText: collapseText }); }; } render() { const { style, className, collapseButton, onClick } = this.props; let { children } = this.props; const { isCollapsed, mode } = this.context; if (! /*#__PURE__*/React.isValidElement(children) && collapseButton && mode !== strings.MODE_HORIZONTAL) { children = this.renderCollapseButton(); } const wrapCls = cls(className, `${cssClasses.PREFIX}-footer`, { [`${cssClasses.PREFIX}-footer-collapsed`]: isCollapsed }); return ( /*#__PURE__*/ // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions React.createElement("div", { className: wrapCls, style: style, onClick: onClick }, children) ); } } NavFooter.contextType = NavContext; NavFooter.propTypes = { children: PropTypes.node, style: PropTypes.object, className: PropTypes.string, collapseButton: PropTypes.oneOfType([PropTypes.node, PropTypes.bool]), collapseText: PropTypes.func, onClick: PropTypes.func }; NavFooter.defaultProps = { collapseButton: false, onClick: _noop }; NavFooter.elementType = "NavFooter";