@v-c/dropdown 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/Dropdown.js CHANGED
@@ -1,21 +1,15 @@
1
1
  import useAccessibility from "./hooks/useAccessibility.js";
2
- import Overlay_default from "./Overlay.js";
3
- import placements_default from "./placements.js";
2
+ import Overlay from "./Overlay.js";
3
+ import placements from "./placements.js";
4
4
  import { computed, createVNode, defineComponent, isVNode, mergeDefaults, mergeProps, shallowRef } from "vue";
5
5
  import { Trigger } from "@v-c/trigger";
6
6
  import { clsx } from "@v-c/util";
7
7
  import { filterEmpty, removeUndefined, toPropsRefs } from "@v-c/util/dist/props-util";
8
+ //#region src/Dropdown.tsx
8
9
  function _isSlot(s) {
9
10
  return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
10
11
  }
11
- var defaults = {
12
- prefixCls: "vc-dropdown",
13
- arrow: false,
14
- placement: "bottomLeft",
15
- placements: placements_default,
16
- trigger: ["hover"]
17
- };
18
- var Dropdown_default = /* @__PURE__ */ defineComponent((props, { expose, slots }) => {
12
+ var Dropdown = /* @__PURE__ */ defineComponent((props, { expose, slots }) => {
19
13
  const { autoFocus } = toPropsRefs(props, "autoFocus");
20
14
  const triggerVisible = shallowRef();
21
15
  const mergedVisible = computed(() => {
@@ -46,8 +40,8 @@ var Dropdown_default = /* @__PURE__ */ defineComponent((props, { expose, slots }
46
40
  if (onOverlayClick) onOverlayClick(e);
47
41
  };
48
42
  return () => {
49
- const { overlay, prefixCls, arrow, hideAction, trigger, placement, placements, overlayClassName, getPopupContainer, showAction, overlayStyle, align,...otherProps } = props;
50
- const getMenuElement = () => createVNode(Overlay_default, {
43
+ const { overlay, prefixCls, arrow, hideAction, trigger, placement, placements, overlayClassName, getPopupContainer, showAction, overlayStyle, align, ...otherProps } = props;
44
+ const getMenuElement = () => createVNode(Overlay, {
51
45
  "ref": overlayRef,
52
46
  "overlay": overlay,
53
47
  "prefixCls": prefixCls,
@@ -93,7 +87,7 @@ var Dropdown_default = /* @__PURE__ */ defineComponent((props, { expose, slots }
93
87
  "getPopupContainer": getPopupContainer
94
88
  }), _isSlot(childrenNode) ? childrenNode : { default: () => [childrenNode] });
95
89
  };
96
- }, { props: /* @__PURE__ */ mergeDefaults({
90
+ }, { props: /*@__PURE__*/ mergeDefaults({
97
91
  minOverlayWidthMatchTrigger: {
98
92
  type: Boolean,
99
93
  required: false,
@@ -202,7 +196,7 @@ var Dropdown_default = /* @__PURE__ */ defineComponent((props, { expose, slots }
202
196
  default: void 0
203
197
  },
204
198
  getPopupContainer: {
205
- type: Function,
199
+ type: [Function, Boolean],
206
200
  required: false,
207
201
  default: void 0
208
202
  },
@@ -231,5 +225,12 @@ var Dropdown_default = /* @__PURE__ */ defineComponent((props, { expose, slots }
231
225
  required: false,
232
226
  default: void 0
233
227
  }
234
- }, defaults) });
235
- export { Dropdown_default as default };
228
+ }, {
229
+ prefixCls: "vc-dropdown",
230
+ arrow: false,
231
+ placement: "bottomLeft",
232
+ placements,
233
+ trigger: ["hover"]
234
+ }) });
235
+ //#endregion
236
+ export { Dropdown as default };
package/dist/Overlay.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { Fragment, createVNode, defineComponent, shallowRef } from "vue";
2
- var Overlay_default = /* @__PURE__ */ defineComponent((props) => {
2
+ //#region src/Overlay.tsx
3
+ var Overlay = /* @__PURE__ */ defineComponent((props) => {
3
4
  const overlayRef = shallowRef();
4
5
  const setRef = (el) => {
5
6
  overlayRef.value = el;
@@ -34,4 +35,5 @@ var Overlay_default = /* @__PURE__ */ defineComponent((props) => {
34
35
  default: void 0
35
36
  }
36
37
  } });
37
- export { Overlay_default as default };
38
+ //#endregion
39
+ export { Overlay as default };
@@ -1,6 +1,7 @@
1
1
  import { shallowRef, watch } from "vue";
2
2
  import KeyCode from "@v-c/util/dist/KeyCode";
3
3
  import raf from "@v-c/util/dist/raf";
4
+ //#region src/hooks/useAccessibility.ts
4
5
  var { ESC, TAB } = KeyCode;
5
6
  function useAccessibility({ visible, triggerRef, onVisibleChange, autoFocus, overlayRef }) {
6
7
  const focusMenuRef = shallowRef(false);
@@ -45,4 +46,5 @@ function useAccessibility({ visible, triggerRef, onVisibleChange, autoFocus, ove
45
46
  });
46
47
  });
47
48
  }
49
+ //#endregion
48
50
  export { useAccessibility as default };
package/dist/index.js CHANGED
@@ -1,3 +1,5 @@
1
- import Dropdown_default from "./Dropdown.js";
2
- var src_default = Dropdown_default;
1
+ import Dropdown from "./Dropdown.js";
2
+ //#region src/index.tsx
3
+ var src_default = Dropdown;
4
+ //#endregion
3
5
  export { src_default as default };
@@ -1,9 +1,10 @@
1
+ //#region src/placements.ts
1
2
  var autoAdjustOverflow = {
2
3
  adjustX: 1,
3
4
  adjustY: 1
4
5
  };
5
6
  var targetOffset = [0, 0];
6
- var placements_default = {
7
+ var placements = {
7
8
  topLeft: {
8
9
  points: ["bl", "tl"],
9
10
  overflow: autoAdjustOverflow,
@@ -41,4 +42,5 @@ var placements_default = {
41
42
  targetOffset
42
43
  }
43
44
  };
44
- export { placements_default as default };
45
+ //#endregion
46
+ export { placements as default };
package/package.json CHANGED
@@ -1,10 +1,15 @@
1
1
  {
2
2
  "name": "@v-c/dropdown",
3
3
  "type": "module",
4
- "version": "1.0.1",
4
+ "version": "1.0.3",
5
5
  "description": "dropdown ui component for vue",
6
6
  "author": "",
7
7
  "license": "MIT",
8
+ "homepage": "https://github.com/antdv-next/vue-components/tree/next/packages/dropdown",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/antdv-next/vue-components.git"
12
+ },
8
13
  "publishConfig": {
9
14
  "access": "public"
10
15
  },
@@ -15,7 +20,7 @@
15
20
  ".": {
16
21
  "types": "./dist/index.d.ts",
17
22
  "import": "./dist/index.js",
18
- "require": "./dist/index.cjs"
23
+ "default": "./dist/index.js"
19
24
  },
20
25
  "./dist/*": "./dist/*",
21
26
  "./package.json": "./package.json"
@@ -29,8 +34,8 @@
29
34
  "vue": "^3.0.0"
30
35
  },
31
36
  "dependencies": {
32
- "@v-c/util": "^1.0.3",
33
- "@v-c/trigger": "^1.0.2"
37
+ "@v-c/trigger": "^1.0.17",
38
+ "@v-c/util": "^1.0.19"
34
39
  },
35
40
  "scripts": {
36
41
  "build": "vite build",
package/dist/Dropdown.cjs DELETED
@@ -1,238 +0,0 @@
1
- Object.defineProperty(exports, "__esModule", { value: true });
2
- const require_rolldown_runtime = require("./_virtual/rolldown_runtime.cjs");
3
- const require_useAccessibility = require("./hooks/useAccessibility.cjs");
4
- const require_Overlay = require("./Overlay.cjs");
5
- const require_placements = require("./placements.cjs");
6
- let vue = require("vue");
7
- let __v_c_trigger = require("@v-c/trigger");
8
- let __v_c_util = require("@v-c/util");
9
- let __v_c_util_dist_props_util = require("@v-c/util/dist/props-util");
10
- function _isSlot(s) {
11
- return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !(0, vue.isVNode)(s);
12
- }
13
- var defaults = {
14
- prefixCls: "vc-dropdown",
15
- arrow: false,
16
- placement: "bottomLeft",
17
- placements: require_placements.default,
18
- trigger: ["hover"]
19
- };
20
- var Dropdown = /* @__PURE__ */ (0, vue.defineComponent)((props, { expose, slots }) => {
21
- const { autoFocus } = (0, __v_c_util_dist_props_util.toPropsRefs)(props, "autoFocus");
22
- const triggerVisible = (0, vue.shallowRef)();
23
- const mergedVisible = (0, vue.computed)(() => {
24
- return props?.visible ?? triggerVisible.value;
25
- });
26
- const mergedMotionName = (0, vue.computed)(() => {
27
- const { prefixCls, transitionName, animation } = props;
28
- return animation ? `${prefixCls}-${animation}` : transitionName;
29
- });
30
- const triggerRef = (0, vue.shallowRef)();
31
- const overlayRef = (0, vue.shallowRef)();
32
- const childRef = (0, vue.shallowRef)();
33
- expose({ triggerRef });
34
- const handleVisibleChange = (visible) => {
35
- triggerVisible.value = visible;
36
- props.onVisibleChange?.(visible);
37
- };
38
- require_useAccessibility.default({
39
- visible: mergedVisible,
40
- triggerRef: childRef,
41
- onVisibleChange: handleVisibleChange,
42
- autoFocus,
43
- overlayRef
44
- });
45
- const onClick = (e) => {
46
- const { onOverlayClick } = props;
47
- triggerVisible.value = false;
48
- if (onOverlayClick) onOverlayClick(e);
49
- };
50
- return () => {
51
- const { overlay, prefixCls, arrow, hideAction, trigger, placement, placements, overlayClassName, getPopupContainer, showAction, overlayStyle, align,...otherProps } = props;
52
- const getMenuElement = () => (0, vue.createVNode)(require_Overlay.default, {
53
- "ref": overlayRef,
54
- "overlay": overlay,
55
- "prefixCls": prefixCls,
56
- "arrow": arrow
57
- }, null);
58
- const getMenuElementOrLambda = () => {
59
- if (typeof overlay === "function") return getMenuElement;
60
- return getMenuElement();
61
- };
62
- const getMinOverlayWidthMatchTrigger = () => {
63
- const { minOverlayWidthMatchTrigger, alignPoint } = props;
64
- if (minOverlayWidthMatchTrigger !== void 0) return minOverlayWidthMatchTrigger;
65
- return !alignPoint;
66
- };
67
- const getOpenClassName = () => {
68
- const { openClassName } = props;
69
- if (openClassName !== void 0) return openClassName;
70
- return `${prefixCls}-open`;
71
- };
72
- const children = (0, __v_c_util_dist_props_util.filterEmpty)(slots?.default?.() ?? [])?.[0];
73
- const childrenNode = (0, vue.createVNode)(children, {
74
- class: (0, __v_c_util.clsx)(mergedVisible.value && getOpenClassName()),
75
- ref: childRef
76
- });
77
- let triggerHideAction = hideAction;
78
- if (!triggerHideAction && trigger?.includes("contextMenu")) triggerHideAction = ["click"];
79
- return (0, vue.createVNode)(__v_c_trigger.Trigger, (0, vue.mergeProps)({ "builtinPlacements": placements }, (0, __v_c_util_dist_props_util.removeUndefined)(otherProps), {
80
- "prefixCls": prefixCls,
81
- "ref": triggerRef,
82
- "popupClassName": (0, __v_c_util.clsx)(overlayClassName, { [`${prefixCls}-show-arrow`]: arrow }),
83
- "popupStyle": overlayStyle,
84
- "action": trigger,
85
- "showAction": showAction,
86
- "hideAction": triggerHideAction,
87
- "popupPlacement": placement,
88
- "popupAlign": align,
89
- "popupMotion": { name: mergedMotionName.value },
90
- "popupVisible": mergedVisible.value,
91
- "stretch": getMinOverlayWidthMatchTrigger() ? "minWidth" : "",
92
- "popup": getMenuElementOrLambda(),
93
- "onOpenChange": handleVisibleChange,
94
- "onPopupClick": onClick,
95
- "getPopupContainer": getPopupContainer
96
- }), _isSlot(childrenNode) ? childrenNode : { default: () => [childrenNode] });
97
- };
98
- }, { props: /* @__PURE__ */ (0, vue.mergeDefaults)({
99
- minOverlayWidthMatchTrigger: {
100
- type: Boolean,
101
- required: false,
102
- default: void 0
103
- },
104
- arrow: {
105
- type: Boolean,
106
- required: false,
107
- default: void 0
108
- },
109
- onVisibleChange: {
110
- type: Function,
111
- required: false,
112
- default: void 0
113
- },
114
- onOverlayClick: {
115
- type: Function,
116
- required: false,
117
- default: void 0
118
- },
119
- prefixCls: {
120
- type: String,
121
- required: false,
122
- default: void 0
123
- },
124
- transitionName: {
125
- type: String,
126
- required: false,
127
- default: void 0
128
- },
129
- overlayClassName: {
130
- type: String,
131
- required: false,
132
- default: void 0
133
- },
134
- openClassName: {
135
- type: String,
136
- required: false,
137
- default: void 0
138
- },
139
- animation: {
140
- type: String,
141
- required: false,
142
- default: void 0
143
- },
144
- align: {
145
- type: Object,
146
- required: false,
147
- default: void 0
148
- },
149
- overlayStyle: {
150
- type: Object,
151
- required: false,
152
- default: void 0
153
- },
154
- placement: {
155
- required: false,
156
- default: void 0
157
- },
158
- placements: {
159
- type: Object,
160
- required: false,
161
- default: void 0
162
- },
163
- overlay: {
164
- type: [
165
- Function,
166
- Object,
167
- String,
168
- Number,
169
- null,
170
- Boolean,
171
- Array
172
- ],
173
- required: false,
174
- default: void 0
175
- },
176
- trigger: {
177
- type: [String, Array],
178
- required: false,
179
- default: void 0
180
- },
181
- alignPoint: {
182
- type: Boolean,
183
- required: false,
184
- default: void 0
185
- },
186
- showAction: {
187
- type: Array,
188
- required: false,
189
- default: void 0
190
- },
191
- hideAction: {
192
- type: Array,
193
- required: false,
194
- default: void 0
195
- },
196
- visible: {
197
- type: Boolean,
198
- required: false,
199
- default: void 0
200
- },
201
- autoFocus: {
202
- type: Boolean,
203
- required: false,
204
- default: void 0
205
- },
206
- getPopupContainer: {
207
- type: Function,
208
- required: false,
209
- default: void 0
210
- },
211
- mouseEnterDelay: {
212
- type: Number,
213
- required: false,
214
- default: void 0
215
- },
216
- mouseLeaveDelay: {
217
- type: Number,
218
- required: false,
219
- default: void 0
220
- },
221
- onPopupAlign: {
222
- type: Function,
223
- required: false,
224
- default: void 0
225
- },
226
- builtinPlacements: {
227
- type: Object,
228
- required: false,
229
- default: void 0
230
- },
231
- autoDestroy: {
232
- type: Boolean,
233
- required: false,
234
- default: void 0
235
- }
236
- }, defaults) });
237
- var Dropdown_default = Dropdown;
238
- exports.default = Dropdown_default;
package/dist/Overlay.cjs DELETED
@@ -1,40 +0,0 @@
1
- Object.defineProperty(exports, "__esModule", { value: true });
2
- const require_rolldown_runtime = require("./_virtual/rolldown_runtime.cjs");
3
- let vue = require("vue");
4
- var Overlay = /* @__PURE__ */ (0, vue.defineComponent)((props) => {
5
- const overlayRef = (0, vue.shallowRef)();
6
- const setRef = (el) => {
7
- overlayRef.value = el;
8
- };
9
- return () => {
10
- const { overlay, arrow, prefixCls } = props;
11
- const overlayNode = typeof overlay === "function" ? overlay?.() : overlay;
12
- return (0, vue.createVNode)(vue.Fragment, null, [arrow && (0, vue.createVNode)("div", { "class": `${prefixCls}-arrow` }, null), (0, vue.createVNode)(overlayNode, { ref: setRef })]);
13
- };
14
- }, { props: {
15
- overlay: {
16
- type: [
17
- Function,
18
- Object,
19
- String,
20
- Number,
21
- null,
22
- Boolean,
23
- Array
24
- ],
25
- required: false,
26
- default: void 0
27
- },
28
- arrow: {
29
- type: Boolean,
30
- required: false,
31
- default: void 0
32
- },
33
- prefixCls: {
34
- type: String,
35
- required: false,
36
- default: void 0
37
- }
38
- } });
39
- var Overlay_default = Overlay;
40
- exports.default = Overlay_default;
@@ -1,21 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __copyProps = (to, from, except, desc) => {
8
- if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
9
- key = keys[i];
10
- if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
11
- get: ((k) => from[k]).bind(null, key),
12
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
13
- });
14
- }
15
- return to;
16
- };
17
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
18
- value: mod,
19
- enumerable: true
20
- }) : target, mod));
21
- exports.__toESM = __toESM;
@@ -1,52 +0,0 @@
1
- Object.defineProperty(exports, "__esModule", { value: true });
2
- const require_rolldown_runtime = require("../_virtual/rolldown_runtime.cjs");
3
- let vue = require("vue");
4
- let __v_c_util_dist_KeyCode = require("@v-c/util/dist/KeyCode");
5
- __v_c_util_dist_KeyCode = require_rolldown_runtime.__toESM(__v_c_util_dist_KeyCode);
6
- let __v_c_util_dist_raf = require("@v-c/util/dist/raf");
7
- __v_c_util_dist_raf = require_rolldown_runtime.__toESM(__v_c_util_dist_raf);
8
- var { ESC, TAB } = __v_c_util_dist_KeyCode.default;
9
- function useAccessibility({ visible, triggerRef, onVisibleChange, autoFocus, overlayRef }) {
10
- const focusMenuRef = (0, vue.shallowRef)(false);
11
- const handleCloseMenuAndReturnFocus = () => {
12
- if (visible.value) {
13
- triggerRef.value?.focus?.();
14
- onVisibleChange?.(false);
15
- }
16
- };
17
- const focusMenu = () => {
18
- if (overlayRef?.value?.focus) {
19
- overlayRef.value.focus();
20
- focusMenuRef.value = true;
21
- return true;
22
- }
23
- return false;
24
- };
25
- const handleKeyDown = (event) => {
26
- switch (event.keyCode) {
27
- case ESC:
28
- handleCloseMenuAndReturnFocus();
29
- break;
30
- case TAB: {
31
- let focusResult = false;
32
- if (!focusMenuRef.value) focusResult = focusMenu();
33
- if (focusResult) event.preventDefault();
34
- else handleCloseMenuAndReturnFocus();
35
- break;
36
- }
37
- }
38
- };
39
- (0, vue.watch)(visible, (_n, _o, onCleanup) => {
40
- if (visible.value) {
41
- window.addEventListener("keydown", handleKeyDown);
42
- if (autoFocus) (0, __v_c_util_dist_raf.default)(focusMenu, 3);
43
- onCleanup(() => {
44
- window.removeEventListener("keydown", handleKeyDown);
45
- focusMenuRef.value = false;
46
- });
47
- } else onCleanup(() => {
48
- focusMenuRef.value = false;
49
- });
50
- });
51
- }
52
- exports.default = useAccessibility;
package/dist/index.cjs DELETED
@@ -1,4 +0,0 @@
1
- Object.defineProperty(exports, "__esModule", { value: true });
2
- const require_Dropdown = require("./Dropdown.cjs");
3
- var src_default = require_Dropdown.default;
4
- exports.default = src_default;
@@ -1,46 +0,0 @@
1
- Object.defineProperty(exports, "__esModule", { value: true });
2
- var autoAdjustOverflow = {
3
- adjustX: 1,
4
- adjustY: 1
5
- };
6
- var targetOffset = [0, 0];
7
- var placements = {
8
- topLeft: {
9
- points: ["bl", "tl"],
10
- overflow: autoAdjustOverflow,
11
- offset: [0, -4],
12
- targetOffset
13
- },
14
- top: {
15
- points: ["bc", "tc"],
16
- overflow: autoAdjustOverflow,
17
- offset: [0, -4],
18
- targetOffset
19
- },
20
- topRight: {
21
- points: ["br", "tr"],
22
- overflow: autoAdjustOverflow,
23
- offset: [0, -4],
24
- targetOffset
25
- },
26
- bottomLeft: {
27
- points: ["tl", "bl"],
28
- overflow: autoAdjustOverflow,
29
- offset: [0, 4],
30
- targetOffset
31
- },
32
- bottom: {
33
- points: ["tc", "bc"],
34
- overflow: autoAdjustOverflow,
35
- offset: [0, 4],
36
- targetOffset
37
- },
38
- bottomRight: {
39
- points: ["tr", "br"],
40
- overflow: autoAdjustOverflow,
41
- offset: [0, 4],
42
- targetOffset
43
- }
44
- };
45
- var placements_default = placements;
46
- exports.default = placements_default;