KeywordTrigger.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import Trigger from '@rc-component/trigger';
  2. import * as React from 'react';
  3. import { useMemo } from 'react';
  4. import DropdownMenu from "./DropdownMenu";
  5. var BUILT_IN_PLACEMENTS = {
  6. bottomRight: {
  7. points: ['tl', 'br'],
  8. offset: [0, 4],
  9. overflow: {
  10. adjustX: 1,
  11. adjustY: 1
  12. }
  13. },
  14. bottomLeft: {
  15. points: ['tr', 'bl'],
  16. offset: [0, 4],
  17. overflow: {
  18. adjustX: 1,
  19. adjustY: 1
  20. }
  21. },
  22. topRight: {
  23. points: ['bl', 'tr'],
  24. offset: [0, -4],
  25. overflow: {
  26. adjustX: 1,
  27. adjustY: 1
  28. }
  29. },
  30. topLeft: {
  31. points: ['br', 'tl'],
  32. offset: [0, -4],
  33. overflow: {
  34. adjustX: 1,
  35. adjustY: 1
  36. }
  37. }
  38. };
  39. var KeywordTrigger = function KeywordTrigger(props) {
  40. var prefixCls = props.prefixCls,
  41. options = props.options,
  42. children = props.children,
  43. visible = props.visible,
  44. transitionName = props.transitionName,
  45. getPopupContainer = props.getPopupContainer,
  46. dropdownClassName = props.dropdownClassName,
  47. direction = props.direction,
  48. placement = props.placement;
  49. var dropdownPrefix = "".concat(prefixCls, "-dropdown");
  50. var dropdownElement = /*#__PURE__*/React.createElement(DropdownMenu, {
  51. prefixCls: dropdownPrefix,
  52. options: options
  53. });
  54. var dropdownPlacement = useMemo(function () {
  55. var popupPlacement;
  56. if (direction === 'rtl') {
  57. popupPlacement = placement === 'top' ? 'topLeft' : 'bottomLeft';
  58. } else {
  59. popupPlacement = placement === 'top' ? 'topRight' : 'bottomRight';
  60. }
  61. return popupPlacement;
  62. }, [direction, placement]);
  63. return /*#__PURE__*/React.createElement(Trigger, {
  64. prefixCls: dropdownPrefix,
  65. popupVisible: visible,
  66. popup: dropdownElement,
  67. popupPlacement: dropdownPlacement,
  68. popupTransitionName: transitionName,
  69. builtinPlacements: BUILT_IN_PLACEMENTS,
  70. getPopupContainer: getPopupContainer,
  71. popupClassName: dropdownClassName
  72. }, children);
  73. };
  74. export default KeywordTrigger;