Arrow.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. "use strict";
  2. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  4. Object.defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = Arrow;
  8. var _classnames = _interopRequireDefault(require("classnames"));
  9. var React = _interopRequireWildcard(require("react"));
  10. function Arrow(props) {
  11. var prefixCls = props.prefixCls,
  12. align = props.align,
  13. arrow = props.arrow,
  14. arrowPos = props.arrowPos;
  15. var _ref = arrow || {},
  16. className = _ref.className,
  17. content = _ref.content;
  18. var _arrowPos$x = arrowPos.x,
  19. x = _arrowPos$x === void 0 ? 0 : _arrowPos$x,
  20. _arrowPos$y = arrowPos.y,
  21. y = _arrowPos$y === void 0 ? 0 : _arrowPos$y;
  22. var arrowRef = React.useRef();
  23. // Skip if no align
  24. if (!align || !align.points) {
  25. return null;
  26. }
  27. var alignStyle = {
  28. position: 'absolute'
  29. };
  30. // Skip if no need to align
  31. if (align.autoArrow !== false) {
  32. var popupPoints = align.points[0];
  33. var targetPoints = align.points[1];
  34. var popupTB = popupPoints[0];
  35. var popupLR = popupPoints[1];
  36. var targetTB = targetPoints[0];
  37. var targetLR = targetPoints[1];
  38. // Top & Bottom
  39. if (popupTB === targetTB || !['t', 'b'].includes(popupTB)) {
  40. alignStyle.top = y;
  41. } else if (popupTB === 't') {
  42. alignStyle.top = 0;
  43. } else {
  44. alignStyle.bottom = 0;
  45. }
  46. // Left & Right
  47. if (popupLR === targetLR || !['l', 'r'].includes(popupLR)) {
  48. alignStyle.left = x;
  49. } else if (popupLR === 'l') {
  50. alignStyle.left = 0;
  51. } else {
  52. alignStyle.right = 0;
  53. }
  54. }
  55. return /*#__PURE__*/React.createElement("div", {
  56. ref: arrowRef,
  57. className: (0, _classnames.default)("".concat(prefixCls, "-arrow"), className),
  58. style: alignStyle
  59. }, content);
  60. }