@inglorious/web 6.5.0 → 6.5.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.
- package/README.md +4 -0
- package/package.json +3 -3
- package/src/router/handlers.js +21 -0
- package/types/router.d.ts +15 -0
package/README.md
CHANGED
|
@@ -1045,6 +1045,10 @@ api.notify("navigate", "/users/456")
|
|
|
1045
1045
|
// Or navigate back in history
|
|
1046
1046
|
api.notify("navigate", -1)
|
|
1047
1047
|
|
|
1048
|
+
// Go back, or to "/users" when the app was opened on this page and has
|
|
1049
|
+
// nothing of its own to go back to (a deep link, a fresh tab)
|
|
1050
|
+
api.notify("back", "/users")
|
|
1051
|
+
|
|
1048
1052
|
// With options
|
|
1049
1053
|
api.notify("navigate", {
|
|
1050
1054
|
to: "/users/456",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inglorious/web",
|
|
3
|
-
"version": "6.5.
|
|
3
|
+
"version": "6.5.2",
|
|
4
4
|
"description": "A new web framework that leverages the power of the Inglorious Store combined with the performance and simplicity of lit-html.",
|
|
5
5
|
"author": "Matteo Antony Mistretta <antony.mistretta@gmail.com> (https://ingloriouscoderz.it)",
|
|
6
6
|
"contributors": [
|
|
@@ -104,12 +104,12 @@
|
|
|
104
104
|
},
|
|
105
105
|
"sideEffects": false,
|
|
106
106
|
"dependencies": {
|
|
107
|
-
"@inglorious/utils": "
|
|
107
|
+
"@inglorious/utils": "5.0.0",
|
|
108
108
|
"@lit-labs/ssr-client": "^1.1.8",
|
|
109
109
|
"lit-html": "^3.3.3"
|
|
110
110
|
},
|
|
111
111
|
"peerDependencies": {
|
|
112
|
-
"@inglorious/store": "11.0.
|
|
112
|
+
"@inglorious/store": "11.0.3"
|
|
113
113
|
},
|
|
114
114
|
"devDependencies": {
|
|
115
115
|
"@inglorious/eslint-config": "1.1.2",
|
package/src/router/handlers.js
CHANGED
|
@@ -221,6 +221,27 @@ export function createHandlers(routeConfig) {
|
|
|
221
221
|
api.notify("routeChange", historyState)
|
|
222
222
|
},
|
|
223
223
|
|
|
224
|
+
/**
|
|
225
|
+
* Goes back one entry when the app has an entry of its own to go back to,
|
|
226
|
+
* and otherwise navigates to the fallback in place. An app opened on a deep
|
|
227
|
+
* link starts at the first index, where `history.back()` would leave the
|
|
228
|
+
* app or do nothing at all.
|
|
229
|
+
* @param {RouterEntity} entity - The router entity.
|
|
230
|
+
* @param {string|{to: string, params?: object, state?: object}} [fallback] - Where to go when there is nothing to go back to.
|
|
231
|
+
* @param {Api} api - The application API.
|
|
232
|
+
*/
|
|
233
|
+
back(entity, fallback, api) {
|
|
234
|
+
if (entity.idx > FIRST_HISTORY_INDEX) {
|
|
235
|
+
history.back()
|
|
236
|
+
return
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
if (fallback == null) return
|
|
240
|
+
|
|
241
|
+
const options = typeof fallback === "string" ? { to: fallback } : fallback
|
|
242
|
+
api.notify(`#${entity.id}:navigate`, { ...options, replace: true })
|
|
243
|
+
},
|
|
244
|
+
|
|
224
245
|
/**
|
|
225
246
|
* Handles successful loading of a lazily-loaded route module.
|
|
226
247
|
* Registers the loaded type in the runtime type registry via `api.setType`
|
package/types/router.d.ts
CHANGED
|
@@ -38,6 +38,8 @@ export interface RouterEntity {
|
|
|
38
38
|
query?: QueryParams
|
|
39
39
|
/** The hash from the current URL. */
|
|
40
40
|
hash?: string
|
|
41
|
+
/** The position of the current entry in the session history, counted from the entry the app started on. */
|
|
42
|
+
idx?: number
|
|
41
43
|
/** Whether a route is currently loading asynchronously. */
|
|
42
44
|
isLoading?: boolean
|
|
43
45
|
/** An error that occurred during route loading. */
|
|
@@ -104,6 +106,19 @@ export interface RouterType {
|
|
|
104
106
|
api: Api,
|
|
105
107
|
): void | Promise<void>
|
|
106
108
|
|
|
109
|
+
/**
|
|
110
|
+
* Goes back one history entry when the app pushed one, and otherwise
|
|
111
|
+
* navigates to the fallback, replacing the current entry.
|
|
112
|
+
* @param {RouterEntity} entity - The router entity.
|
|
113
|
+
* @param {string|Omit<NavigatePayload, "replace">} [fallback] - Where to go when there is nothing to go back to.
|
|
114
|
+
* @param {StoreApi} api - The store API.
|
|
115
|
+
*/
|
|
116
|
+
back(
|
|
117
|
+
entity: RouterEntity,
|
|
118
|
+
fallback: string | Omit<NavigatePayload, "replace"> | undefined,
|
|
119
|
+
api: Api,
|
|
120
|
+
): void
|
|
121
|
+
|
|
107
122
|
/**
|
|
108
123
|
* Synchronizes the router entity's state with data from a routing event,
|
|
109
124
|
* typically triggered by a `popstate` event (browser back/forward).
|