@xh/hoist 73.0.0-SNAPSHOT.1742503059030 → 73.0.0-SNAPSHOT.1743106945210

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/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  ## v73.0.0-SNAPSHOT - unreleased
4
4
 
5
+ * Support for reporting Client Version in Admin WebSockets tab.
6
+
5
7
  ## v72.2.0 - 2025-03-13
6
8
 
7
9
  ### 🎁 New Features
@@ -72,3 +72,12 @@ export const lastReceivedTime: ColumnSpec = {
72
72
  ...Col.compactDate,
73
73
  width: 140
74
74
  };
75
+
76
+ export const clientAppVersion: ColumnSpec = {
77
+ field: {
78
+ name: 'clientAppVersion',
79
+ type: 'string',
80
+ displayName: 'Client Version'
81
+ },
82
+ width: 120
83
+ };
@@ -77,7 +77,8 @@ export class WebSocketModel extends BaseInstanceModel {
77
77
  WSCol.sentMessageCount,
78
78
  WSCol.lastSentTime,
79
79
  WSCol.receivedMessageCount,
80
- WSCol.lastReceivedTime
80
+ WSCol.lastReceivedTime,
81
+ WSCol.clientAppVersion
81
82
  ]
82
83
  });
83
84
 
@@ -6,3 +6,4 @@ export declare const sentMessageCount: ColumnSpec;
6
6
  export declare const lastSentTime: ColumnSpec;
7
7
  export declare const receivedMessageCount: ColumnSpec;
8
8
  export declare const lastReceivedTime: ColumnSpec;
9
+ export declare const clientAppVersion: ColumnSpec;
@@ -49,11 +49,23 @@ export const [BooleanEditor, booleanEditor] = hoistCmp.withFactory<BooleanEditor
49
49
  }
50
50
  });
51
51
 
52
- function useInstantEditor({onValueChange, initialValue, stopEditing}: CustomCellEditorProps, ref) {
52
+ function useInstantEditor(
53
+ {onValueChange, initialValue, stopEditing, eventKey, eGridCell}: CustomCellEditorProps,
54
+ ref
55
+ ) {
56
+ // Don't toggle if the user has tabbed into the editor. See https://github.com/xh/hoist-react/issues/3943.
57
+ // Fortunately, `eventKey` is null for tab, so we can use that to accept other keyboard events.
58
+ // Unfortunately, it is also null for mouse events, so we check if the grid cell is currently
59
+ // underneath the mouse position via `:hover` selector.
53
60
  useEffect(() => {
54
- onValueChange(!initialValue);
61
+ const els = document.querySelectorAll(':hover'),
62
+ topEl = els[els.length - 1];
63
+
64
+ if (eventKey || topEl === eGridCell) {
65
+ onValueChange(!initialValue);
66
+ }
55
67
  stopEditing();
56
- }, [stopEditing, initialValue, onValueChange]);
68
+ }, [stopEditing, initialValue, onValueChange, eventKey, eGridCell]);
57
69
 
58
70
  return null;
59
71
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xh/hoist",
3
- "version": "73.0.0-SNAPSHOT.1742503059030",
3
+ "version": "73.0.0-SNAPSHOT.1743106945210",
4
4
  "description": "Hoist add-on for building and deploying React Applications.",
5
5
  "repository": "github:xh/hoist-react",
6
6
  "homepage": "https://xh.io",
@@ -282,8 +282,7 @@ export class WebSocketService extends HoistService {
282
282
 
283
283
  buildWebSocketUrl() {
284
284
  const protocol = window.location.protocol == 'https:' ? 'wss:' : 'ws:',
285
- endpoint = 'xhWebSocket';
286
-
285
+ endpoint = 'xhWebSocket?clientAppVersion=' + XH.appVersion;
287
286
  return XH.isDevelopmentMode
288
287
  ? `${protocol}//${XH.baseUrl.split('//')[1]}${endpoint}`
289
288
  : `${protocol}//${window.location.host}${XH.baseUrl}${endpoint}`;