Panel.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  8. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  9. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  10. var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
  11. var _classnames = _interopRequireDefault(require("classnames"));
  12. var _rcMotion = _interopRequireDefault(require("rc-motion"));
  13. var _KeyCode = _interopRequireDefault(require("rc-util/lib/KeyCode"));
  14. var _react = _interopRequireDefault(require("react"));
  15. var _PanelContent = _interopRequireDefault(require("./PanelContent"));
  16. var _excluded = ["showArrow", "headerClass", "isActive", "onItemClick", "forceRender", "className", "classNames", "styles", "prefixCls", "collapsible", "accordion", "panelKey", "extra", "header", "expandIcon", "openMotion", "destroyInactivePanel", "children"];
  17. var CollapsePanel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
  18. var _props$showArrow = props.showArrow,
  19. showArrow = _props$showArrow === void 0 ? true : _props$showArrow,
  20. headerClass = props.headerClass,
  21. isActive = props.isActive,
  22. onItemClick = props.onItemClick,
  23. forceRender = props.forceRender,
  24. className = props.className,
  25. _props$classNames = props.classNames,
  26. customizeClassNames = _props$classNames === void 0 ? {} : _props$classNames,
  27. _props$styles = props.styles,
  28. styles = _props$styles === void 0 ? {} : _props$styles,
  29. prefixCls = props.prefixCls,
  30. collapsible = props.collapsible,
  31. accordion = props.accordion,
  32. panelKey = props.panelKey,
  33. extra = props.extra,
  34. header = props.header,
  35. expandIcon = props.expandIcon,
  36. openMotion = props.openMotion,
  37. destroyInactivePanel = props.destroyInactivePanel,
  38. children = props.children,
  39. resetProps = (0, _objectWithoutProperties2.default)(props, _excluded);
  40. var disabled = collapsible === 'disabled';
  41. var ifExtraExist = extra !== null && extra !== undefined && typeof extra !== 'boolean';
  42. var collapsibleProps = (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({
  43. onClick: function onClick() {
  44. onItemClick === null || onItemClick === void 0 || onItemClick(panelKey);
  45. },
  46. onKeyDown: function onKeyDown(e) {
  47. if (e.key === 'Enter' || e.keyCode === _KeyCode.default.ENTER || e.which === _KeyCode.default.ENTER) {
  48. onItemClick === null || onItemClick === void 0 || onItemClick(panelKey);
  49. }
  50. },
  51. role: accordion ? 'tab' : 'button'
  52. }, 'aria-expanded', isActive), 'aria-disabled', disabled), "tabIndex", disabled ? -1 : 0);
  53. // ======================== Icon ========================
  54. var iconNodeInner = typeof expandIcon === 'function' ? expandIcon(props) : /*#__PURE__*/_react.default.createElement("i", {
  55. className: "arrow"
  56. });
  57. var iconNode = iconNodeInner && /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
  58. className: "".concat(prefixCls, "-expand-icon")
  59. }, ['header', 'icon'].includes(collapsible) ? collapsibleProps : {}), iconNodeInner);
  60. var collapsePanelClassNames = (0, _classnames.default)("".concat(prefixCls, "-item"), (0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(prefixCls, "-item-active"), isActive), "".concat(prefixCls, "-item-disabled"), disabled), className);
  61. var headerClassName = (0, _classnames.default)(headerClass, "".concat(prefixCls, "-header"), (0, _defineProperty2.default)({}, "".concat(prefixCls, "-collapsible-").concat(collapsible), !!collapsible), customizeClassNames.header);
  62. // ======================== HeaderProps ========================
  63. var headerProps = (0, _objectSpread2.default)({
  64. className: headerClassName,
  65. style: styles.header
  66. }, ['header', 'icon'].includes(collapsible) ? {} : collapsibleProps);
  67. // ======================== Render ========================
  68. return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, resetProps, {
  69. ref: ref,
  70. className: collapsePanelClassNames
  71. }), /*#__PURE__*/_react.default.createElement("div", headerProps, showArrow && iconNode, /*#__PURE__*/_react.default.createElement("span", (0, _extends2.default)({
  72. className: "".concat(prefixCls, "-header-text")
  73. }, collapsible === 'header' ? collapsibleProps : {}), header), ifExtraExist && /*#__PURE__*/_react.default.createElement("div", {
  74. className: "".concat(prefixCls, "-extra")
  75. }, extra)), /*#__PURE__*/_react.default.createElement(_rcMotion.default, (0, _extends2.default)({
  76. visible: isActive,
  77. leavedClassName: "".concat(prefixCls, "-content-hidden")
  78. }, openMotion, {
  79. forceRender: forceRender,
  80. removeOnLeave: destroyInactivePanel
  81. }), function (_ref, motionRef) {
  82. var motionClassName = _ref.className,
  83. motionStyle = _ref.style;
  84. return /*#__PURE__*/_react.default.createElement(_PanelContent.default, {
  85. ref: motionRef,
  86. prefixCls: prefixCls,
  87. className: motionClassName,
  88. classNames: customizeClassNames,
  89. style: motionStyle,
  90. styles: styles,
  91. isActive: isActive,
  92. forceRender: forceRender,
  93. role: accordion ? 'tabpanel' : void 0
  94. }, children);
  95. }));
  96. });
  97. var _default = exports.default = CollapsePanel;