@mongodb-js/compass-context-menu 0.2.8 → 0.2.10

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.
@@ -1 +1 @@
1
- {"version":3,"file":"context-menu-provider.d.ts","sourceRoot":"","sources":["../src/context-menu-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAOjB,eAAO,MAAM,kBAAkB,8CAE9B,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAClC,QAAgB,EAChB,QAAQ,EACR,WAAW,EAAE,OAAO,EACpB,iBAAiB,GAClB,EAAE;IACD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC;QAC/B,IAAI,EAAE,gBAAgB,GAAG;YAAE,KAAK,EAAE,MAAM,IAAI,CAAA;SAAE,CAAC;KAChD,CAAC,CAAC;IACH,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,oBAAoB,EAAE,KAAK,IAAI,CAAC;CAClE,qBA2FA"}
1
+ {"version":3,"file":"context-menu-provider.d.ts","sourceRoot":"","sources":["../src/context-menu-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAOjB,eAAO,MAAM,kBAAkB,8CAE9B,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAClC,QAAgB,EAChB,QAAQ,EACR,WAAW,EAAE,OAAO,EACpB,iBAAiB,GAClB,EAAE;IACD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC;QAC/B,IAAI,EAAE,gBAAgB,GAAG;YAAE,KAAK,EAAE,MAAM,IAAI,CAAA;SAAE,CAAC;KAChD,CAAC,CAAC;IACH,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,oBAAoB,EAAE,KAAK,IAAI,CAAC;CAClE,qBAuGA"}
@@ -42,6 +42,7 @@ exports.ContextMenuContext = (0, react_1.createContext)(null);
42
42
  function ContextMenuProvider({ disabled = false, children, menuWrapper: Wrapper, onContextMenuOpen, }) {
43
43
  // Check if there's already a parent context menu provider
44
44
  const parentContext = (0, react_1.useContext)(exports.ContextMenuContext);
45
+ const containerRef = (0, react_1.useRef)(null);
45
46
  const [menu, setMenu] = (0, react_1.useState)({
46
47
  isOpen: false,
47
48
  itemGroups: [],
@@ -56,15 +57,16 @@ function ContextMenuProvider({ disabled = false, children, menuWrapper: Wrapper,
56
57
  }
57
58
  }, [close]);
58
59
  (0, react_1.useEffect)(() => {
59
- // Don't set up event listeners if we have a parent context
60
- if (parentContext || disabled)
60
+ // We skip registering listeners when parentContext is known to avoid registering multiple (nested) listeners
61
+ const { current: container } = containerRef;
62
+ if (parentContext || disabled || !container)
61
63
  return;
62
64
  function handleContextMenu(event) {
63
- event.preventDefault();
64
65
  const itemGroups = (0, context_menu_content_1.getContextMenuContent)(event);
65
- if (itemGroups.length === 0) {
66
+ if (itemGroups.length === 0 || event.shiftKey) {
66
67
  return;
67
68
  }
69
+ event.preventDefault();
68
70
  onContextMenuOpenRef.current?.(itemGroups);
69
71
  setMenu({
70
72
  isOpen: true,
@@ -75,7 +77,7 @@ function ContextMenuProvider({ disabled = false, children, menuWrapper: Wrapper,
75
77
  },
76
78
  });
77
79
  }
78
- document.addEventListener('contextmenu', handleContextMenu);
80
+ container.addEventListener('contextmenu', handleContextMenu);
79
81
  window.addEventListener('resize', handleClosingEvent);
80
82
  window.addEventListener('scroll', (e) => {
81
83
  const isCompassContextMenu = e.target instanceof HTMLElement &&
@@ -84,13 +86,19 @@ function ContextMenuProvider({ disabled = false, children, menuWrapper: Wrapper,
84
86
  handleClosingEvent(e);
85
87
  }, { capture: true });
86
88
  return () => {
87
- document.removeEventListener('contextmenu', handleContextMenu);
89
+ container.removeEventListener('contextmenu', handleContextMenu);
88
90
  window.removeEventListener('resize', handleClosingEvent);
89
91
  window.removeEventListener('scroll', handleClosingEvent, {
90
92
  capture: true,
91
93
  });
92
94
  };
93
- }, [disabled, handleClosingEvent, onContextMenuOpenRef, parentContext]);
95
+ }, [
96
+ disabled,
97
+ containerRef,
98
+ handleClosingEvent,
99
+ onContextMenuOpenRef,
100
+ parentContext,
101
+ ]);
94
102
  const value = (0, react_1.useMemo)(() => ({
95
103
  close,
96
104
  }), [close]);
@@ -99,7 +107,7 @@ function ContextMenuProvider({ disabled = false, children, menuWrapper: Wrapper,
99
107
  return react_1.default.createElement(react_1.default.Fragment, null, children);
100
108
  }
101
109
  return (react_1.default.createElement(exports.ContextMenuContext.Provider, { value: value },
102
- children,
110
+ react_1.default.createElement("div", { ref: containerRef, "data-testid": "context-menu-children-container", style: { display: 'contents' } }, children),
103
111
  react_1.default.createElement(Wrapper, { menu: { ...menu, close } })));
104
112
  }
105
113
  //# sourceMappingURL=context-menu-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-menu-provider.js","sourceRoot":"","sources":["../src/context-menu-provider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-menu-provider.js","sourceRoot":"","sources":["../src/context-menu-provider.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -13,7 +13,7 @@
13
13
  "email": "compass@mongodb.com"
14
14
  },
15
15
  "homepage": "https://github.com/mongodb-js/compass",
16
- "version": "0.2.8",
16
+ "version": "0.2.10",
17
17
  "repository": {
18
18
  "type": "git",
19
19
  "url": "https://github.com/mongodb-js/compass.git"
@@ -53,10 +53,10 @@
53
53
  "react": "^17.0.2"
54
54
  },
55
55
  "devDependencies": {
56
- "@mongodb-js/eslint-config-compass": "^1.4.9",
56
+ "@mongodb-js/eslint-config-compass": "^1.4.10",
57
57
  "@mongodb-js/mocha-config-compass": "^1.7.1",
58
58
  "@mongodb-js/prettier-config-compass": "^1.2.8",
59
- "@mongodb-js/testing-library-compass": "^1.3.12",
59
+ "@mongodb-js/testing-library-compass": "^1.3.14",
60
60
  "@mongodb-js/tsconfig-compass": "^1.2.10",
61
61
  "@types/chai": "^4.2.21",
62
62
  "@types/mocha": "^9.0.0",
@@ -70,5 +70,5 @@
70
70
  "sinon": "^9.2.3",
71
71
  "typescript": "^5.9.2"
72
72
  },
73
- "gitHead": "ac9a6d71c21329317f613f43b5ee3ee9b8d8618c"
73
+ "gitHead": "3566310d827fff23154a5b387d20215f4f3c155a"
74
74
  }