@xh/hoist 71.0.0-SNAPSHOT.1736191971390 → 71.0.0-SNAPSHOT.1736198138276

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.
@@ -183,7 +183,9 @@ export declare class ViewManagerModel<T = PlainObject> extends HoistModel {
183
183
  */
184
184
  private constructor();
185
185
  doLoadAsync(loadSpec: LoadSpec): Promise<void>;
186
- selectViewAsync(token: string): Promise<void>;
186
+ selectViewAsync(token: string, opts?: {
187
+ alertUnsavedChanges: boolean;
188
+ }): Promise<void>;
187
189
  saveAsAsync(spec: ViewCreateSpec): Promise<void>;
188
190
  saveAsync(): Promise<void>;
189
191
  resetAsync(): Promise<void>;
@@ -21,7 +21,7 @@ import {fmtDateTime} from '@xh/hoist/format';
21
21
  import {action, bindable, makeObservable, observable, comparer, runInAction} from '@xh/hoist/mobx';
22
22
  import {olderThan, SECONDS} from '@xh/hoist/utils/datetime';
23
23
  import {executeIfFunction, pluralize, throwIf} from '@xh/hoist/utils/js';
24
- import {find, isEqual, isNil, isNull, isUndefined, lowerCase} from 'lodash';
24
+ import {find, isEqual, isNil, isNull, isUndefined, lowerCase, uniqBy} from 'lodash';
25
25
  import {ReactNode} from 'react';
26
26
  import {ViewInfo} from './ViewInfo';
27
27
  import {View} from './View';
@@ -346,14 +346,19 @@ export class ViewManagerModel<T = PlainObject> extends HoistModel {
346
346
  }
347
347
  }
348
348
 
349
- async selectViewAsync(token: string): Promise<void> {
349
+ async selectViewAsync(token: string, opts = {alertUnsavedChanges: true}): Promise<void> {
350
350
  // ensure any pending auto-save gets completed
351
351
  if (this.isValueDirty && this.isViewAutoSavable) {
352
352
  await this.maybeAutoSaveAsync();
353
353
  }
354
354
 
355
355
  // if still dirty, require confirm
356
- if (this.isValueDirty && this.view.isOwned && !(await this.confirmDiscardChangesAsync())) {
356
+ if (
357
+ opts.alertUnsavedChanges &&
358
+ this.isValueDirty &&
359
+ this.view.isOwned &&
360
+ !(await this.confirmDiscardChangesAsync())
361
+ ) {
357
362
  return;
358
363
  }
359
364
 
@@ -604,7 +609,7 @@ export class ViewManagerModel<T = PlainObject> extends HoistModel {
604
609
  this.pendingValue = pendingValue;
605
610
  // Ensure we update meta-data as well.
606
611
  if (!view.isDefault) {
607
- this.views = this.views.map(v => (v.token === view.token ? view.info : v));
612
+ this.views = uniqBy([view.info, ...this.views], 'token');
608
613
  }
609
614
  }
610
615
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xh/hoist",
3
- "version": "71.0.0-SNAPSHOT.1736191971390",
3
+ "version": "71.0.0-SNAPSHOT.1736198138276",
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",