@xh/hoist 73.0.0-SNAPSHOT.1746195895077 → 73.0.0-SNAPSHOT.1746205425691

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
@@ -9,19 +9,19 @@ and new properties on `TrackLog`.
9
9
 
10
10
  ### 🎁 New Features
11
11
 
12
- * Added a new "Clients" Admin Console tab- a consolidated view of all websocket-connected clients
12
+ * Added a new Admin Console "Clients" tab - a consolidated view of all websocket-connected clients
13
13
  across all instances in the cluster.
14
- * Major Enhancements to Admin 'User Activity' tab:
15
- * Provide user customizable persisted views via ViewManager.
16
- * Provide the ability to promote data in `data` block to grids for aggregation, reporting and charting.
17
- * Improved charting.
18
- * Enhanced all messages with new `tabId` and `loadId` properties, to disambiguate activity for
19
- users with multiple browser tabs and multiple full refreshes/restarts of a client app within
20
- the same tab.
14
+ * Significantly upgraded the Admin Console "User Activity" tab with:
15
+ * Persisted custom views via `ViewManager`.
16
+ * New ability to promote data in `data` block to grids for aggregation, reporting and charting.
17
+ * Enhanced track messages with new `tabId` and `loadId` properties, to disambiguate activity for
18
+ users with multiple browser tabs and multiple full refreshes/restarts of a client app within
19
+ the same tab.
20
+ * Improved charting, with a column chart used for both timeseries and category data and fixes to
21
+ the "skip weekends" option.
21
22
  * Updated `FormModel` to support `persistWith` for storing and recalling its values, including
22
23
  developer options to persist all or a provided subset of fields.
23
24
 
24
-
25
25
  ### 🐞 Bug Fixes
26
26
 
27
27
  * Fixed drag-and-drop usability issues with the mobile `ColChooser`.
@@ -30,8 +30,8 @@ and new properties on `TrackLog`.
30
30
 
31
31
  ### ⚙️ Typescript API Adjustments
32
32
 
33
- * Corrected `StoreCountLabelProps` interface.
34
33
  * Corrected `GridGroupSortFn` param types.
34
+ * Corrected `StoreCountLabelProps` interface.
35
35
 
36
36
  ### ⚙️ Technical
37
37
 
@@ -43,8 +43,8 @@ and new properties on `TrackLog`.
43
43
  the client remained on an older version.
44
44
  * Note that a misconfigured build - where the client build version is not set to the same value
45
45
  as the server - would result in a false positive for an upgrade. The two should always match.
46
- * Calls to `Promise.track()` that are rejected with an exception will be tracked with new
47
- severity level of `TrackSeverity.ERROR`
46
+ * Calls to `Promise.track()` that are rejected with an exception will be tracked with new
47
+ severity level of `TrackSeverity.ERROR`
48
48
 
49
49
  ## v72.5.1 - 2025-04-15
50
50
 
@@ -27,10 +27,6 @@ export interface NavigatorConfig {
27
27
  * See enum for description of supported modes.
28
28
  */
29
29
  refreshMode?: RefreshMode;
30
- /**
31
- * Base route name for this navigator, with the route for each page being "[route]/[page.id]".
32
- */
33
- route?: string;
34
30
  }
35
31
  /**
36
32
  * Model for handling stack-based navigation between pages.
@@ -38,8 +34,6 @@ export interface NavigatorConfig {
38
34
  */
39
35
  export declare class NavigatorModel extends HoistModel {
40
36
  disableAppRefreshButton: boolean;
41
- readonly route: string;
42
- readonly routePrefix: string;
43
37
  stack: PageModel[];
44
38
  pages: PageConfig[];
45
39
  track: boolean;
@@ -55,7 +49,7 @@ export declare class NavigatorModel extends HoistModel {
55
49
  get activePageIdx(): number;
56
50
  get allowSlideNext(): boolean;
57
51
  get allowSlidePrev(): boolean;
58
- constructor({ pages, route, track, pullDownToRefresh, transitionMs, renderMode, refreshMode }: NavigatorConfig);
52
+ constructor({ pages, track, pullDownToRefresh, transitionMs, renderMode, refreshMode }: NavigatorConfig);
59
53
  /**
60
54
  * @param callback - function to execute (once) after the next page transition.
61
55
  */
@@ -144,10 +144,10 @@ export class TabContainerModel extends HoistModel implements Persistable<{active
144
144
  this.refreshContextModel.xhImpl = xhImpl;
145
145
 
146
146
  if (route) {
147
- // if (XH.isMobileApp) {
148
- // this.logWarn('TabContainer routing is not supported for mobile applications.');
149
- // return;
150
- // }
147
+ if (XH.isMobileApp) {
148
+ this.logWarn('TabContainer routing is not supported for mobile applications.');
149
+ return;
150
+ }
151
151
 
152
152
  this.addReaction({
153
153
  track: () => XH.routerState,
@@ -356,11 +356,8 @@ export class TabContainerModel extends HoistModel implements Persistable<{active
356
356
  {router} = XH,
357
357
  state = router.getState();
358
358
 
359
- console.log('syncWithRouter', state, router.isActive(route));
360
-
361
359
  if (state && router.isActive(route)) {
362
360
  const tab = tabs.find(t => router.isActive(route + '.' + t.id, state.params));
363
- console.log('activating', tab);
364
361
  if (tab && !tab.isActive && !tab.disabled) {
365
362
  this.setActiveTabIdInternal(tab.id);
366
363
  }
@@ -44,11 +44,6 @@ export interface NavigatorConfig {
44
44
  * See enum for description of supported modes.
45
45
  */
46
46
  refreshMode?: RefreshMode;
47
-
48
- /**
49
- * Base route name for this navigator, with the route for each page being "[route]/[page.id]".
50
- */
51
- route?: string;
52
47
  }
53
48
 
54
49
  /**
@@ -58,9 +53,6 @@ export interface NavigatorConfig {
58
53
  export class NavigatorModel extends HoistModel {
59
54
  @bindable disableAppRefreshButton: boolean;
60
55
 
61
- readonly route: string;
62
- readonly routePrefix: string;
63
-
64
56
  @bindable.ref
65
57
  stack: PageModel[] = [];
66
58
 
@@ -97,7 +89,6 @@ export class NavigatorModel extends HoistModel {
97
89
 
98
90
  constructor({
99
91
  pages,
100
- route,
101
92
  track = false,
102
93
  pullDownToRefresh = true,
103
94
  transitionMs = 500,
@@ -110,10 +101,6 @@ export class NavigatorModel extends HoistModel {
110
101
  ensureNotEmpty(pages, 'NavigatorModel needs at least one page.');
111
102
  ensureUniqueBy(pages, 'id', 'Multiple NavigatorModel PageModels have the same id.');
112
103
 
113
- this.route = route ?? '';
114
- this.routePrefix = route ? route.substring(0, route.lastIndexOf('.') + 1) : '';
115
- console.log(this.route, this.routePrefix);
116
-
117
104
  this.pages = pages;
118
105
  this.track = track;
119
106
  this.pullDownToRefresh = pullDownToRefresh;
@@ -212,22 +199,19 @@ export class NavigatorModel extends HoistModel {
212
199
  swiper.allowTouchMove = false;
213
200
  });
214
201
 
215
- console.log('swiper change');
216
202
  this.onRouteChange(true);
217
203
  }
218
204
 
219
205
  /** @internal */
220
206
  @action
221
207
  onPageChange = () => {
222
- console.log('onPageChange');
223
208
  // 1) Clear any pages after the active page. These can be left over from a back swipe.
224
209
  this.stack = this.stack.slice(0, this._swiper.activeIndex + 1);
225
210
 
226
211
  // 2) Sync route to match the current page stack
227
- const newRouteName = this.routePrefix + this.stack.map(it => it.id).join('.'),
212
+ const newRouteName = this.stack.map(it => it.id).join('.'),
228
213
  newRouteParams = mergeDeep({}, ...this.stack.map(it => it.props));
229
214
 
230
- console.log('newRouteName', newRouteName);
231
215
  XH.navigate(newRouteName, newRouteParams);
232
216
 
233
217
  // 3) Update state according to the active page and trigger optional callback
@@ -242,18 +226,16 @@ export class NavigatorModel extends HoistModel {
242
226
  };
243
227
 
244
228
  private onRouteChange(init: boolean = false) {
245
- const {route: myRoute, routePrefix: myRoutePrefix, _swiper} = this;
246
- console.log('onRouteChange', XH.router.isActive(myRoute));
247
- if (!XH.routerState || (myRoute && !XH.router.isActive(myRoute)) || !_swiper) return;
229
+ if (!this._swiper || !XH.routerState) return;
248
230
 
249
- // Break the current route name into parts, only looking at our part of it (myRoute and below).
250
- // Collect any params for each part. Use meta.params to determine which params are associated
251
- // with each route part. Save these params to use as props for the page.
231
+ // Break the current route name into parts, and collect any params for each part.
232
+ // Use meta.params to determine which params are associated with each route part.
233
+ // Save these params to use as props for the page.
252
234
  const {meta, name, params} = XH.routerState,
253
- parts = name.replace(myRoutePrefix, '').split('.');
235
+ parts = name.split('.');
254
236
 
255
237
  const routeParts = parts.map((id, idx) => {
256
- const metaKey = myRoutePrefix + parts.slice(0, idx + 1).join('.'),
238
+ const metaKey = parts.slice(0, idx + 1).join('.'),
257
239
  props = {};
258
240
 
259
241
  // Extract props for this part
@@ -263,7 +245,6 @@ export class NavigatorModel extends HoistModel {
263
245
 
264
246
  return {id, props};
265
247
  });
266
- console.log(myRoutePrefix, XH.routerState, parts, routeParts);
267
248
 
268
249
  // Loop through the route parts, rebuilding the page stack to match.
269
250
  const stack = [];
@@ -281,7 +262,7 @@ export class NavigatorModel extends HoistModel {
281
262
  // we drop the rest of the route and redirect to the route so far
282
263
  if (init && pageModelCfg.disableDirectLink) {
283
264
  const completedRouteParts = routeParts.slice(0, i),
284
- newRouteName = myRoutePrefix + completedRouteParts.map(it => it.id).join('.'),
265
+ newRouteName = completedRouteParts.map(it => it.id).join('.'),
285
266
  newRouteParams = mergeDeep({}, ...completedRouteParts.map(it => it.props));
286
267
 
287
268
  XH.navigate(newRouteName, newRouteParams, {replace: true});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xh/hoist",
3
- "version": "73.0.0-SNAPSHOT.1746195895077",
3
+ "version": "73.0.0-SNAPSHOT.1746205425691",
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",