UNPKG

antd

Version:

An enterprise-class UI design language and React components implementation

71 lines (70 loc) • 1.99 kB
"use client"; import React from 'react'; import { useEvent } from '@rc-component/util'; import { clsx } from 'clsx'; const InternalExpandIcon = props => { const { prefixCls, type, expanded, expandable, onClick, locale } = props; const iconPrefix = `${prefixCls}-row-expand-icon`; if (type === 'all' && !expandable) { return /*#__PURE__*/React.createElement("span", { className: clsx(iconPrefix, `${iconPrefix}-spaced`) }); } const ariaLabel = type === 'all' ? expanded ? locale.collapseAll : locale.expandAll : expanded ? locale.collapse : locale.expand; return /*#__PURE__*/React.createElement("button", { type: "button", onClick: onClick, className: clsx(iconPrefix, { [`${iconPrefix}-spaced`]: !expandable, [`${iconPrefix}-expanded`]: expandable && expanded, [`${iconPrefix}-collapsed`]: expandable && !expanded }), "aria-label": ariaLabel, "aria-expanded": expanded }); }; export default function useExpandIcon(locale, ExpandIcon, ...legacyRenderExpandIcon) { const MergedExpandIcon = useEvent(props => { if (ExpandIcon) { return /*#__PURE__*/React.createElement(ExpandIcon, { ...props }); } for (const renderExpandIcon of legacyRenderExpandIcon) { if (renderExpandIcon) { if (props.type === 'row') { const { prefixCls, record, expanded, expandable, onClick } = props; return renderExpandIcon({ prefixCls, record, expanded, expandable, onExpand: (_record, event) => onClick(event) }); } return /*#__PURE__*/React.createElement(InternalExpandIcon, { ...props, locale: locale }); } } return /*#__PURE__*/React.createElement(InternalExpandIcon, { ...props, locale: locale }); }); return MergedExpandIcon; }