UNPKG

5.79 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.DropdownProps = exports.default = void 0;
7
8var _vue = require("vue");
9
10var _index = _interopRequireDefault(require("../vc-dropdown/src/index"));
11
12var _dropdownButton = _interopRequireDefault(require("./dropdown-button"));
13
14var _vueTypes = _interopRequireDefault(require("../_util/vue-types"));
15
16var _vnode = require("../_util/vnode");
17
18var _classNames = _interopRequireDefault(require("../_util/classNames"));
19
20var _propsUtil = require("../_util/props-util");
21
22var _getDropdownProps = _interopRequireDefault(require("./getDropdownProps"));
23
24var _configProvider = require("../config-provider");
25
26var _RightOutlined = _interopRequireDefault(require("@ant-design/icons-vue/RightOutlined"));
27
28function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
30function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
31
32function _isSlot(s) {
33 return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !(0, _vue.isVNode)(s);
34}
35
36var DropdownProps = (0, _getDropdownProps.default)();
37exports.DropdownProps = DropdownProps;
38var Dropdown = (0, _vue.defineComponent)({
39 name: 'ADropdown',
40 inheritAttrs: false,
41 props: _extends(_extends({}, DropdownProps), {
42 prefixCls: _vueTypes.default.string,
43 mouseEnterDelay: _vueTypes.default.number.def(0.15),
44 mouseLeaveDelay: _vueTypes.default.number.def(0.1),
45 placement: DropdownProps.placement.def('bottomLeft'),
46 onVisibleChange: _vueTypes.default.func,
47 'onUpdate:visible': _vueTypes.default.func
48 }),
49 emits: ['visibleChange', 'update:visible'],
50 setup: function setup() {
51 return {
52 configProvider: (0, _vue.inject)('configProvider', _configProvider.defaultConfigProvider),
53 popupRef: null
54 };
55 },
56 created: function created() {
57 (0, _vue.provide)('savePopupRef', this.savePopupRef);
58 },
59 methods: {
60 savePopupRef: function savePopupRef(ref) {
61 this.popupRef = ref;
62 },
63 getTransitionName: function getTransitionName() {
64 var _this$$props = this.$props,
65 _this$$props$placemen = _this$$props.placement,
66 placement = _this$$props$placemen === void 0 ? '' : _this$$props$placemen,
67 transitionName = _this$$props.transitionName;
68
69 if (transitionName !== undefined) {
70 return transitionName;
71 }
72
73 if (placement.indexOf('top') >= 0) {
74 return 'slide-down';
75 }
76
77 return 'slide-up';
78 },
79 renderOverlay: function renderOverlay(prefixCls) {
80 var overlay = (0, _propsUtil.getComponent)(this, 'overlay');
81 var overlayNode = Array.isArray(overlay) ? overlay[0] : overlay; // menu cannot be selectable in dropdown defaultly
82 // menu should be focusable in dropdown defaultly
83
84 var overlayProps = overlayNode && (0, _propsUtil.getPropsData)(overlayNode);
85
86 var _ref = overlayProps || {},
87 _ref$selectable = _ref.selectable,
88 selectable = _ref$selectable === void 0 ? false : _ref$selectable,
89 _ref$focusable = _ref.focusable,
90 focusable = _ref$focusable === void 0 ? true : _ref$focusable;
91
92 var expandIcon = (0, _vue.createVNode)("span", {
93 "class": "".concat(prefixCls, "-menu-submenu-arrow")
94 }, [(0, _vue.createVNode)(_RightOutlined.default, {
95 "class": "".concat(prefixCls, "-menu-submenu-arrow-icon")
96 }, null)]);
97 var fixedModeOverlay = (0, _propsUtil.isValidElement)(overlayNode) ? (0, _vue.cloneVNode)(overlayNode, {
98 mode: 'vertical',
99 selectable: selectable,
100 focusable: focusable,
101 expandIcon: expandIcon
102 }) : overlay;
103 return fixedModeOverlay;
104 },
105 handleVisibleChange: function handleVisibleChange(val) {
106 this.$emit('update:visible', val);
107 this.$emit('visibleChange', val);
108 }
109 },
110 render: function render() {
111 var _a;
112
113 var props = (0, _propsUtil.getOptionProps)(this);
114 var customizePrefixCls = props.prefixCls,
115 trigger = props.trigger,
116 disabled = props.disabled,
117 getPopupContainer = props.getPopupContainer;
118 var getContextPopupContainer = this.configProvider.getPopupContainer;
119 var getPrefixCls = this.configProvider.getPrefixCls;
120 var prefixCls = getPrefixCls('dropdown', customizePrefixCls);
121 var child = (0, _propsUtil.getSlot)(this)[0];
122 var dropdownTrigger = (0, _vnode.cloneElement)(child, {
123 class: (0, _classNames.default)((_a = child === null || child === void 0 ? void 0 : child.props) === null || _a === void 0 ? void 0 : _a.class, "".concat(prefixCls, "-trigger")),
124 disabled: disabled
125 });
126 var triggerActions = disabled ? [] : trigger;
127 var alignPoint;
128
129 if (triggerActions && triggerActions.indexOf('contextmenu') !== -1) {
130 alignPoint = true;
131 }
132
133 var dropdownProps = _extends(_extends(_extends({
134 alignPoint: alignPoint
135 }, props), this.$attrs), {
136 prefixCls: prefixCls,
137 getPopupContainer: getPopupContainer || getContextPopupContainer,
138 transitionName: this.getTransitionName(),
139 trigger: triggerActions,
140 overlay: this.renderOverlay(prefixCls),
141 onVisibleChange: this.handleVisibleChange
142 });
143
144 return (0, _vue.createVNode)(_index.default, dropdownProps, _isSlot(dropdownTrigger) ? dropdownTrigger : {
145 default: function _default() {
146 return [dropdownTrigger];
147 }
148 });
149 }
150});
151Dropdown.Button = _dropdownButton.default;
152var _default2 = Dropdown;
153exports.default = _default2;
\No newline at end of file