@data-club/ai-hub 0.0.1 → 0.0.2

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":"UserMenu.d.ts","sourceRoot":"","sources":["../../../src/components/ChatShell/UserMenu.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAkB1D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,KAAK,EAAE,cAAc,CAAC;IACtB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,CA4HxD"}
1
+ {"version":3,"file":"UserMenu.d.ts","sourceRoot":"","sources":["../../../src/components/ChatShell/UserMenu.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAkB1D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,KAAK,EAAE,cAAc,CAAC;IACtB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,CAyIxD"}
@@ -57,7 +57,19 @@ export function UserMenu(props) {
57
57
  return;
58
58
  function handleClick(e) {
59
59
  const node = wrapRef.current;
60
- if (node && !node.contains(e.target)) {
60
+ if (!node)
61
+ return;
62
+ // Shadow-DOM safety: when this component is packaged as a Web Component
63
+ // (`defineWebComponent`), events that bubble to `document` are
64
+ // *retargeted* so `e.target` becomes the host element, never the clicked
65
+ // node inside the shadow root. `node.contains(e.target)` would then be
66
+ // false for clicks on the button itself, so a second click could never
67
+ // toggle the menu closed. `composedPath()` crosses the shadow boundary
68
+ // and lists the real nodes the event traversed; fall back to `e.target`
69
+ // where it isn't available.
70
+ const path = typeof e.composedPath === "function" ? e.composedPath() : [];
71
+ const clickedInside = path.length > 0 ? path.includes(node) : node.contains(e.target);
72
+ if (!clickedInside) {
61
73
  setOpen(false);
62
74
  }
63
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UserMenu.js","sourceRoot":"","sources":["../../../src/components/ChatShell/UserMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UserMenu.js","sourceRoot":"","sources":["../../../src/components/ChatShell/UserMenu.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@data-club/ai-hub",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "React package for the data-club ai-hub: chat UI, login + change-password, admin UI, AIHub.* primitives, defineWebComponent helper, client SDK. See docs/SPECIFICATIONS.md §7.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
@@ -84,7 +84,20 @@ export function UserMenu(props: UserMenuProps): ReactNode {
84
84
  if (!open) return;
85
85
  function handleClick(e: MouseEvent): void {
86
86
  const node = wrapRef.current;
87
- if (node && !node.contains(e.target as Node)) {
87
+ if (!node) return;
88
+ // Shadow-DOM safety: when this component is packaged as a Web Component
89
+ // (`defineWebComponent`), events that bubble to `document` are
90
+ // *retargeted* so `e.target` becomes the host element, never the clicked
91
+ // node inside the shadow root. `node.contains(e.target)` would then be
92
+ // false for clicks on the button itself, so a second click could never
93
+ // toggle the menu closed. `composedPath()` crosses the shadow boundary
94
+ // and lists the real nodes the event traversed; fall back to `e.target`
95
+ // where it isn't available.
96
+ const path =
97
+ typeof e.composedPath === "function" ? e.composedPath() : [];
98
+ const clickedInside =
99
+ path.length > 0 ? path.includes(node) : node.contains(e.target as Node);
100
+ if (!clickedInside) {
88
101
  setOpen(false);
89
102
  }
90
103
  }