|
@@ -97,9 +97,36 @@ const ClContextMenu = defineComponent({
|
|
// 显示
|
|
// 显示
|
|
visible.value = true;
|
|
visible.value = true;
|
|
|
|
|
|
- nextTick(() => {
|
|
|
|
- const el = refs["context-menu"].querySelector(".cl-context-menu__box");
|
|
|
|
|
|
+ // 元素
|
|
|
|
+ const el = refs["context-menu"].querySelector(".cl-context-menu__box") as HTMLElement;
|
|
|
|
+
|
|
|
|
+ // 点击样式
|
|
|
|
+ if (options?.hover) {
|
|
|
|
+ const d = options.hover === true ? {} : options.hover;
|
|
|
|
+ targetEl = event.target;
|
|
|
|
+
|
|
|
|
+ if (targetEl && isString(targetEl.className)) {
|
|
|
|
+ if (d.target) {
|
|
|
|
+ while (!targetEl.className.includes(d.target)) {
|
|
|
|
+ targetEl = targetEl.parentNode;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ addClass(targetEl, d.className || "cl-context-menu__target");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ // 自定义样式
|
|
|
|
+ if (options?.class) {
|
|
|
|
+ addClass(el, options.class);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 菜单列表
|
|
|
|
+ if (options?.list) {
|
|
|
|
+ list.value = parseList(options.list);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ nextTick(() => {
|
|
// 计算位置
|
|
// 计算位置
|
|
let left = event.pageX;
|
|
let left = event.pageX;
|
|
let top = event.pageY;
|
|
let top = event.pageY;
|
|
@@ -123,33 +150,7 @@ const ClContextMenu = defineComponent({
|
|
|
|
|
|
style.left = left + "px";
|
|
style.left = left + "px";
|
|
style.top = top + "px";
|
|
style.top = top + "px";
|
|
-
|
|
|
|
- // 点击样式
|
|
|
|
- if (options?.hover) {
|
|
|
|
- const d = options.hover === true ? {} : options.hover;
|
|
|
|
- targetEl = event.target;
|
|
|
|
-
|
|
|
|
- if (targetEl && isString(targetEl.className)) {
|
|
|
|
- if (d.target) {
|
|
|
|
- while (!targetEl.className.includes(d.target)) {
|
|
|
|
- targetEl = targetEl.parentNode;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- addClass(targetEl, d.className || "cl-context-menu__target");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 自定义样式
|
|
|
|
- if (options?.class) {
|
|
|
|
- addClass(el, options.class);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 菜单列表
|
|
|
|
- if (options?.list) {
|
|
|
|
- list.value = parseList(options.list);
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
|
|
+ })
|
|
|
|
|
|
return {
|
|
return {
|
|
close
|
|
close
|