UNPKG

6.41 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.default = void 0;
9
10var _vue = require("vue");
11
12var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
13
14var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
16var _vueTypes = _interopRequireDefault(require("../_util/vue-types"));
17
18var _vcTrigger = _interopRequireDefault(require("../vc-trigger"));
19
20var _placements = _interopRequireDefault(require("./placements"));
21
22var _vnode = require("../_util/vnode");
23
24var _classNames2 = _interopRequireDefault(require("../_util/classNames"));
25
26var __rest = void 0 && (void 0).__rest || function (s, e) {
27 var t = {};
28
29 for (var p in s) {
30 if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
31 }
32
33 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
34 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
35 }
36 return t;
37};
38
39var _default = (0, _vue.defineComponent)({
40 props: {
41 minOverlayWidthMatchTrigger: _vueTypes.default.looseBool,
42 arrow: _vueTypes.default.looseBool.def(false),
43 prefixCls: _vueTypes.default.string.def('rc-dropdown'),
44 transitionName: _vueTypes.default.string,
45 overlayClassName: _vueTypes.default.string.def(''),
46 openClassName: _vueTypes.default.string,
47 animation: _vueTypes.default.any,
48 align: _vueTypes.default.object,
49 overlayStyle: _vueTypes.default.style,
50 placement: _vueTypes.default.string.def('bottomLeft'),
51 overlay: _vueTypes.default.any,
52 trigger: _vueTypes.default.oneOfType([_vueTypes.default.string, _vueTypes.default.arrayOf(_vueTypes.default.string)]).def('hover'),
53 alignPoint: _vueTypes.default.looseBool,
54 showAction: _vueTypes.default.array,
55 hideAction: _vueTypes.default.array,
56 getPopupContainer: _vueTypes.default.func,
57 visible: _vueTypes.default.looseBool,
58 defaultVisible: _vueTypes.default.looseBool.def(false),
59 mouseEnterDelay: _vueTypes.default.number.def(0.15),
60 mouseLeaveDelay: _vueTypes.default.number.def(0.1)
61 },
62 emits: ['visibleChange', 'overlayClick'],
63 slots: ['overlay'],
64 setup: function setup(props, _ref) {
65 var slots = _ref.slots,
66 emit = _ref.emit,
67 expose = _ref.expose;
68 var triggerVisible = (0, _vue.ref)(!!props.visible);
69 (0, _vue.watch)(function () {
70 return props.visible;
71 }, function (val) {
72 if (val !== undefined) {
73 triggerVisible.value = val;
74 }
75 });
76 var triggerRef = (0, _vue.ref)();
77 expose({
78 triggerRef: triggerRef
79 });
80
81 var onClick = function onClick(e) {
82 if (props.visible === undefined) {
83 triggerVisible.value = false;
84 }
85
86 emit('overlayClick', e);
87 };
88
89 var onVisibleChange = function onVisibleChange(visible) {
90 if (props.visible === undefined) {
91 triggerVisible.value = visible;
92 }
93
94 emit('visibleChange', visible);
95 };
96
97 var getMenuElement = function getMenuElement() {
98 var _a;
99
100 var overlayElement = (_a = slots.overlay) === null || _a === void 0 ? void 0 : _a.call(slots);
101 var extraOverlayProps = {
102 prefixCls: "".concat(props.prefixCls, "-menu"),
103 onClick: onClick,
104 getPopupContainer: function getPopupContainer() {
105 return triggerRef.value.getPopupDomNode();
106 }
107 };
108 return (0, _vue.createVNode)(_vue.Fragment, null, [props.arrow && (0, _vue.createVNode)("div", {
109 "class": "".concat(props.prefixCls, "-arrow")
110 }, null), (0, _vnode.cloneElement)(overlayElement, extraOverlayProps, false)]);
111 };
112
113 var minOverlayWidthMatchTrigger = (0, _vue.computed)(function () {
114 var _props$minOverlayWidt = props.minOverlayWidthMatchTrigger,
115 matchTrigger = _props$minOverlayWidt === void 0 ? !props.alignPoint : _props$minOverlayWidt;
116 return matchTrigger;
117 });
118
119 var renderChildren = function renderChildren() {
120 var _a;
121
122 var children = (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots);
123 return triggerVisible.value && children ? (0, _vnode.cloneElement)(children[0], {
124 class: props.openClassName || "".concat(props.prefixCls, "-open")
125 }, false) : children;
126 };
127
128 var triggerHideAction = (0, _vue.computed)(function () {
129 if (!props.hideAction && props.trigger.indexOf('contextmenu') !== -1) {
130 return ['click'];
131 }
132
133 return props.hideAction;
134 });
135 return function () {
136 var prefixCls = props.prefixCls,
137 arrow = props.arrow,
138 showAction = props.showAction,
139 overlayStyle = props.overlayStyle,
140 trigger = props.trigger,
141 placement = props.placement,
142 align = props.align,
143 getPopupContainer = props.getPopupContainer,
144 transitionName = props.transitionName,
145 animation = props.animation,
146 overlayClassName = props.overlayClassName,
147 otherProps = __rest(props, ["prefixCls", "arrow", "showAction", "overlayStyle", "trigger", "placement", "align", "getPopupContainer", "transitionName", "animation", "overlayClassName"]);
148
149 return (0, _vue.createVNode)(_vcTrigger.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, otherProps), {}, {
150 "prefixCls": prefixCls,
151 "ref": triggerRef,
152 "popupClassName": (0, _classNames2.default)(overlayClassName, (0, _defineProperty2.default)({}, "".concat(prefixCls, "-show-arrow"), arrow)),
153 "popupStyle": overlayStyle,
154 "builtinPlacements": _placements.default,
155 "action": trigger,
156 "showAction": showAction,
157 "hideAction": triggerHideAction.value || [],
158 "popupPlacement": placement,
159 "popupAlign": align,
160 "popupTransitionName": transitionName,
161 "popupAnimation": animation,
162 "popupVisible": triggerVisible.value,
163 "stretch": minOverlayWidthMatchTrigger.value ? 'minWidth' : '',
164 "onPopupVisibleChange": onVisibleChange,
165 "getPopupContainer": getPopupContainer
166 }), {
167 popup: getMenuElement,
168 default: renderChildren
169 });
170 };
171 }
172});
173
174exports.default = _default;
\No newline at end of file