antd
Version:
An enterprise-class UI design language and React components implementation
77 lines (76 loc) • 2.28 kB
JavaScript
;
"use client";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useExpandIcon;
var _react = _interopRequireDefault(require("react"));
var _util = require("@rc-component/util");
var _clsx = require("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.default.createElement("span", {
className: (0, _clsx.clsx)(iconPrefix, `${iconPrefix}-spaced`)
});
}
const ariaLabel = type === 'all' ? expanded ? locale.collapseAll : locale.expandAll : expanded ? locale.collapse : locale.expand;
return /*#__PURE__*/_react.default.createElement("button", {
type: "button",
onClick: onClick,
className: (0, _clsx.clsx)(iconPrefix, {
[`${iconPrefix}-spaced`]: !expandable,
[`${iconPrefix}-expanded`]: expandable && expanded,
[`${iconPrefix}-collapsed`]: expandable && !expanded
}),
"aria-label": ariaLabel,
"aria-expanded": expanded
});
};
function useExpandIcon(locale, ExpandIcon, ...legacyRenderExpandIcon) {
const MergedExpandIcon = (0, _util.useEvent)(props => {
if (ExpandIcon) {
return /*#__PURE__*/_react.default.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.default.createElement(InternalExpandIcon, {
...props,
locale: locale
});
}
}
return /*#__PURE__*/_react.default.createElement(InternalExpandIcon, {
...props,
locale: locale
});
});
return MergedExpandIcon;
}