@etsoo/appscript 1.2.94 → 1.2.95

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.
@@ -8,7 +8,7 @@ import { IActionResult } from '../result/IActionResult';
8
8
  import { InitCallResult, InitCallResultData } from '../result/InitCallResult';
9
9
  import { IUser } from '../state/User';
10
10
  import { IAppSettings } from './AppSettings';
11
- import { IApp, IAppFields, IDetectIPCallback, RefreshTokenProps, RefreshTokenResult } from './IApp';
11
+ import { IApp, IAppFields, IDetectIPCallback, NavigateOptions, RefreshTokenProps, RefreshTokenResult } from './IApp';
12
12
  import { UserRole } from './UserRole';
13
13
  /**
14
14
  * Core application interface
@@ -407,10 +407,11 @@ export declare abstract class CoreApp<U extends IUser, S extends IAppSettings, N
407
407
  */
408
408
  hasPermission(roles: number | UserRole | number[] | UserRole[]): boolean;
409
409
  /**
410
- * Navigate the Url
411
- * @param url Url
410
+ * Navigate to Url or delta
411
+ * @param url Url or delta
412
+ * @param options Options
412
413
  */
413
- navigate(url: string): void;
414
+ navigate<T extends number | string | URL>(to: T, options?: T extends number ? never : NavigateOptions): void;
414
415
  /**
415
416
  * Callback where exit a page
416
417
  */
@@ -979,11 +979,29 @@ class CoreApp {
979
979
  return false;
980
980
  }
981
981
  /**
982
- * Navigate the Url
983
- * @param url Url
982
+ * Navigate to Url or delta
983
+ * @param url Url or delta
984
+ * @param options Options
984
985
  */
985
- navigate(url) {
986
- globalThis.location.href = this.settings.homepage + url;
986
+ navigate(to, options) {
987
+ if (typeof to === 'number') {
988
+ globalThis.history.go(to);
989
+ }
990
+ else {
991
+ const { state, replace = false } = options !== null && options !== void 0 ? options : {};
992
+ if (replace) {
993
+ if (state)
994
+ globalThis.history.replaceState(state, '', to);
995
+ else
996
+ globalThis.location.replace(to);
997
+ }
998
+ else {
999
+ if (state)
1000
+ globalThis.history.pushState(state, '', to);
1001
+ else
1002
+ globalThis.location.assign(to);
1003
+ }
1004
+ }
987
1005
  }
988
1006
  /**
989
1007
  * Callback where exit a page
@@ -13,6 +13,13 @@ import { UserRole } from './UserRole';
13
13
  export interface IDetectIPCallback {
14
14
  (): void;
15
15
  }
16
+ /**
17
+ * Navigate options
18
+ */
19
+ export interface NavigateOptions {
20
+ replace?: boolean;
21
+ state?: any;
22
+ }
16
23
  /**
17
24
  * Refresh token result type
18
25
  * true means success, false means failed but no any message
@@ -336,10 +343,11 @@ export interface IApp {
336
343
  */
337
344
  isValidPassword(password: string): boolean;
338
345
  /**
339
- * Navigate the Url
340
- * @param url Url
346
+ * Navigate to Url or delta
347
+ * @param url Url or delta
348
+ * @param options Options
341
349
  */
342
- navigate(url: string): void;
350
+ navigate<T extends number | string | URL>(to: T, options?: T extends number ? never : NavigateOptions): void;
343
351
  /**
344
352
  * Callback where exit a page
345
353
  */
@@ -8,7 +8,7 @@ import { IActionResult } from '../result/IActionResult';
8
8
  import { InitCallResult, InitCallResultData } from '../result/InitCallResult';
9
9
  import { IUser } from '../state/User';
10
10
  import { IAppSettings } from './AppSettings';
11
- import { IApp, IAppFields, IDetectIPCallback, RefreshTokenProps, RefreshTokenResult } from './IApp';
11
+ import { IApp, IAppFields, IDetectIPCallback, NavigateOptions, RefreshTokenProps, RefreshTokenResult } from './IApp';
12
12
  import { UserRole } from './UserRole';
13
13
  /**
14
14
  * Core application interface
@@ -407,10 +407,11 @@ export declare abstract class CoreApp<U extends IUser, S extends IAppSettings, N
407
407
  */
408
408
  hasPermission(roles: number | UserRole | number[] | UserRole[]): boolean;
409
409
  /**
410
- * Navigate the Url
411
- * @param url Url
410
+ * Navigate to Url or delta
411
+ * @param url Url or delta
412
+ * @param options Options
412
413
  */
413
- navigate(url: string): void;
414
+ navigate<T extends number | string | URL>(to: T, options?: T extends number ? never : NavigateOptions): void;
414
415
  /**
415
416
  * Callback where exit a page
416
417
  */
@@ -976,11 +976,29 @@ export class CoreApp {
976
976
  return false;
977
977
  }
978
978
  /**
979
- * Navigate the Url
980
- * @param url Url
979
+ * Navigate to Url or delta
980
+ * @param url Url or delta
981
+ * @param options Options
981
982
  */
982
- navigate(url) {
983
- globalThis.location.href = this.settings.homepage + url;
983
+ navigate(to, options) {
984
+ if (typeof to === 'number') {
985
+ globalThis.history.go(to);
986
+ }
987
+ else {
988
+ const { state, replace = false } = options !== null && options !== void 0 ? options : {};
989
+ if (replace) {
990
+ if (state)
991
+ globalThis.history.replaceState(state, '', to);
992
+ else
993
+ globalThis.location.replace(to);
994
+ }
995
+ else {
996
+ if (state)
997
+ globalThis.history.pushState(state, '', to);
998
+ else
999
+ globalThis.location.assign(to);
1000
+ }
1001
+ }
984
1002
  }
985
1003
  /**
986
1004
  * Callback where exit a page
@@ -13,6 +13,13 @@ import { UserRole } from './UserRole';
13
13
  export interface IDetectIPCallback {
14
14
  (): void;
15
15
  }
16
+ /**
17
+ * Navigate options
18
+ */
19
+ export interface NavigateOptions {
20
+ replace?: boolean;
21
+ state?: any;
22
+ }
16
23
  /**
17
24
  * Refresh token result type
18
25
  * true means success, false means failed but no any message
@@ -336,10 +343,11 @@ export interface IApp {
336
343
  */
337
344
  isValidPassword(password: string): boolean;
338
345
  /**
339
- * Navigate the Url
340
- * @param url Url
346
+ * Navigate to Url or delta
347
+ * @param url Url or delta
348
+ * @param options Options
341
349
  */
342
- navigate(url: string): void;
350
+ navigate<T extends number | string | URL>(to: T, options?: T extends number ? never : NavigateOptions): void;
343
351
  /**
344
352
  * Callback where exit a page
345
353
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etsoo/appscript",
3
- "version": "1.2.94",
3
+ "version": "1.2.95",
4
4
  "description": "Applications shared TypeScript framework",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/mjs/index.js",
@@ -46,6 +46,7 @@ import {
46
46
  IApp,
47
47
  IAppFields,
48
48
  IDetectIPCallback,
49
+ NavigateOptions,
49
50
  RefreshTokenProps,
50
51
  RefreshTokenResult
51
52
  } from './IApp';
@@ -1304,11 +1305,27 @@ export abstract class CoreApp<
1304
1305
  }
1305
1306
 
1306
1307
  /**
1307
- * Navigate the Url
1308
- * @param url Url
1308
+ * Navigate to Url or delta
1309
+ * @param url Url or delta
1310
+ * @param options Options
1309
1311
  */
1310
- navigate(url: string): void {
1311
- globalThis.location.href = this.settings.homepage + url;
1312
+ navigate<T extends number | string | URL>(
1313
+ to: T,
1314
+ options?: T extends number ? never : NavigateOptions
1315
+ ) {
1316
+ if (typeof to === 'number') {
1317
+ globalThis.history.go(to);
1318
+ } else {
1319
+ const { state, replace = false } = options ?? {};
1320
+
1321
+ if (replace) {
1322
+ if (state) globalThis.history.replaceState(state, '', to);
1323
+ else globalThis.location.replace(to);
1324
+ } else {
1325
+ if (state) globalThis.history.pushState(state, '', to);
1326
+ else globalThis.location.assign(to);
1327
+ }
1328
+ }
1312
1329
  }
1313
1330
 
1314
1331
  /**
package/src/app/IApp.ts CHANGED
@@ -21,6 +21,14 @@ export interface IDetectIPCallback {
21
21
  (): void;
22
22
  }
23
23
 
24
+ /**
25
+ * Navigate options
26
+ */
27
+ export interface NavigateOptions {
28
+ replace?: boolean;
29
+ state?: any;
30
+ }
31
+
24
32
  /**
25
33
  * Refresh token result type
26
34
  * true means success, false means failed but no any message
@@ -438,10 +446,14 @@ export interface IApp {
438
446
  isValidPassword(password: string): boolean;
439
447
 
440
448
  /**
441
- * Navigate the Url
442
- * @param url Url
449
+ * Navigate to Url or delta
450
+ * @param url Url or delta
451
+ * @param options Options
443
452
  */
444
- navigate(url: string): void;
453
+ navigate<T extends number | string | URL>(
454
+ to: T,
455
+ options?: T extends number ? never : NavigateOptions
456
+ ): void;
445
457
 
446
458
  /**
447
459
  * Callback where exit a page