TabNode.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. var _typeof = require("@babel/runtime/helpers/typeof");
  4. Object.defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = void 0;
  8. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  9. var _classnames = _interopRequireDefault(require("classnames"));
  10. var React = _interopRequireWildcard(require("react"));
  11. var _util = require("../util");
  12. function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
  13. function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
  14. var TabNode = function TabNode(props) {
  15. var prefixCls = props.prefixCls,
  16. id = props.id,
  17. active = props.active,
  18. focus = props.focus,
  19. _props$tab = props.tab,
  20. key = _props$tab.key,
  21. label = _props$tab.label,
  22. disabled = _props$tab.disabled,
  23. closeIcon = _props$tab.closeIcon,
  24. icon = _props$tab.icon,
  25. closable = props.closable,
  26. renderWrapper = props.renderWrapper,
  27. removeAriaLabel = props.removeAriaLabel,
  28. editable = props.editable,
  29. onClick = props.onClick,
  30. onFocus = props.onFocus,
  31. onBlur = props.onBlur,
  32. onKeyDown = props.onKeyDown,
  33. onMouseDown = props.onMouseDown,
  34. onMouseUp = props.onMouseUp,
  35. style = props.style,
  36. tabCount = props.tabCount,
  37. currentPosition = props.currentPosition;
  38. var tabPrefix = "".concat(prefixCls, "-tab");
  39. var removable = (0, _util.getRemovable)(closable, closeIcon, editable, disabled);
  40. function onInternalClick(e) {
  41. if (disabled) {
  42. return;
  43. }
  44. onClick(e);
  45. }
  46. function onRemoveTab(event) {
  47. event.preventDefault();
  48. event.stopPropagation();
  49. editable.onEdit('remove', {
  50. key: key,
  51. event: event
  52. });
  53. }
  54. var labelNode = React.useMemo(function () {
  55. return icon && typeof label === 'string' ? /*#__PURE__*/React.createElement("span", null, label) : label;
  56. }, [label, icon]);
  57. var btnRef = React.useRef(null);
  58. React.useEffect(function () {
  59. if (focus && btnRef.current) {
  60. btnRef.current.focus();
  61. }
  62. }, [focus]);
  63. var node = /*#__PURE__*/React.createElement("div", {
  64. key: key,
  65. "data-node-key": (0, _util.genDataNodeKey)(key),
  66. className: (0, _classnames.default)(tabPrefix, (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(tabPrefix, "-with-remove"), removable), "".concat(tabPrefix, "-active"), active), "".concat(tabPrefix, "-disabled"), disabled), "".concat(tabPrefix, "-focus"), focus)),
  67. style: style,
  68. onClick: onInternalClick
  69. }, /*#__PURE__*/React.createElement("div", {
  70. ref: btnRef,
  71. role: "tab",
  72. "aria-selected": active,
  73. id: id && "".concat(id, "-tab-").concat(key),
  74. className: "".concat(tabPrefix, "-btn"),
  75. "aria-controls": id && "".concat(id, "-panel-").concat(key),
  76. "aria-disabled": disabled,
  77. tabIndex: disabled ? null : active ? 0 : -1,
  78. onClick: function onClick(e) {
  79. e.stopPropagation();
  80. onInternalClick(e);
  81. },
  82. onKeyDown: onKeyDown,
  83. onMouseDown: onMouseDown,
  84. onMouseUp: onMouseUp,
  85. onFocus: onFocus,
  86. onBlur: onBlur
  87. }, focus && /*#__PURE__*/React.createElement("div", {
  88. "aria-live": "polite",
  89. style: {
  90. width: 0,
  91. height: 0,
  92. position: 'absolute',
  93. overflow: 'hidden',
  94. opacity: 0
  95. }
  96. }, "Tab ".concat(currentPosition, " of ").concat(tabCount)), icon && /*#__PURE__*/React.createElement("span", {
  97. className: "".concat(tabPrefix, "-icon")
  98. }, icon), label && labelNode), removable && /*#__PURE__*/React.createElement("button", {
  99. type: "button",
  100. role: "tab",
  101. "aria-label": removeAriaLabel || 'remove',
  102. tabIndex: active ? 0 : -1,
  103. className: "".concat(tabPrefix, "-remove"),
  104. onClick: function onClick(e) {
  105. e.stopPropagation();
  106. onRemoveTab(e);
  107. }
  108. }, closeIcon || editable.removeIcon || '×'));
  109. return renderWrapper ? renderWrapper(node) : node;
  110. };
  111. var _default = exports.default = TabNode;