import classNames from 'classnames'; import * as React from 'react'; import { ConfigContext } from '../config-provider'; import warning from '../_util/warning'; import useStyle from './style'; export interface DividerProps { prefixCls?: string; type?: 'horizontal' | 'vertical'; orientation?: 'left' | 'right' | 'center'; orientationMargin?: string | number; className?: string; rootClassName?: string; children?: React.ReactNode; dashed?: boolean; style?: React.CSSProperties; plain?: boolean; } const Divider: React.FC = (props) => { const { getPrefixCls, direction } = React.useContext(ConfigContext); const { prefixCls: customizePrefixCls, type = 'horizontal', orientation = 'center', orientationMargin, className, rootClassName, children, dashed, plain, ...restProps } = props; const prefixCls = getPrefixCls('divider', customizePrefixCls); const [wrapSSR, hashId] = useStyle(prefixCls); const orientationPrefix = orientation.length > 0 ? `-${orientation}` : orientation; const hasChildren = !!children; const hasCustomMarginLeft = orientation === 'left' && orientationMargin != null; const hasCustomMarginRight = orientation === 'right' && orientationMargin != null; const classString = classNames( prefixCls, hashId, `${prefixCls}-${type}`, { [`${prefixCls}-with-text`]: hasChildren, [`${prefixCls}-with-text${orientationPrefix}`]: hasChildren, [`${prefixCls}-dashed`]: !!dashed, [`${prefixCls}-plain`]: !!plain, [`${prefixCls}-rtl`]: direction === 'rtl', [`${prefixCls}-no-default-orientation-margin-left`]: hasCustomMarginLeft, [`${prefixCls}-no-default-orientation-margin-right`]: hasCustomMarginRight, }, className, rootClassName, ); const innerStyle: React.CSSProperties = { ...(hasCustomMarginLeft && { marginLeft: orientationMargin }), ...(hasCustomMarginRight && { marginRight: orientationMargin }), }; // Warning children not work in vertical mode if (process.env.NODE_ENV !== 'production') { warning( !children || type !== 'vertical', 'Divider', '`children` not working in `vertical` mode.', ); } return wrapSSR(
{children && type !== 'vertical' && ( {children} )}
, ); }; if (process.env.NODE_ENV !== 'production') { Divider.displayName = 'Divider'; } export default Divider;