@ktjs/router 0.14.0 → 0.14.1
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/dist/index.d.ts +15 -1
- package/dist/index.iife.js +41 -0
- package/dist/index.legacy.js +47 -4
- package/dist/index.mjs +41 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { KTHTMLElement } from '@ktjs/core';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Guard level that determines which guards to apply during navigation
|
|
3
5
|
* - there are global and route-level guards
|
|
@@ -31,6 +33,8 @@ interface RawRouteConfig {
|
|
|
31
33
|
name?: string;
|
|
32
34
|
/** Optional metadata attached to the route */
|
|
33
35
|
meta?: Record<string, any>;
|
|
36
|
+
/** Optional component to render */
|
|
37
|
+
component: () => HTMLElement | Promise<HTMLElement>;
|
|
34
38
|
/** Route-level guard executed before entering this route. Return false to block, string/object to redirect */
|
|
35
39
|
beforeEnter?: (
|
|
36
40
|
context: RouteContext
|
|
@@ -130,6 +134,9 @@ interface Router {
|
|
|
130
134
|
/** Navigation history */
|
|
131
135
|
history: RouteContext[];
|
|
132
136
|
|
|
137
|
+
/** Set the router view container */
|
|
138
|
+
setRouterView(view: HTMLElement): void;
|
|
139
|
+
|
|
133
140
|
/** Navigate with guards */
|
|
134
141
|
push(location: string | NavOptions): boolean | Promise<boolean>;
|
|
135
142
|
|
|
@@ -152,10 +159,17 @@ interface RouteMatch {
|
|
|
152
159
|
result: RouteConfig[];
|
|
153
160
|
}
|
|
154
161
|
|
|
162
|
+
/**
|
|
163
|
+
* Create a router view container that automatically renders route components
|
|
164
|
+
*/
|
|
165
|
+
declare function KTRouter({ router }: {
|
|
166
|
+
router: Router;
|
|
167
|
+
}): KTHTMLElement;
|
|
168
|
+
|
|
155
169
|
/**
|
|
156
170
|
* Create a new router instance
|
|
157
171
|
*/
|
|
158
172
|
declare const createRouter: (config: RouterConfig) => Router;
|
|
159
173
|
|
|
160
|
-
export { GuardLevel, createRouter };
|
|
174
|
+
export { GuardLevel, KTRouter, createRouter };
|
|
161
175
|
export type { NavOptions, RawRouteConfig, RouteConfig, RouteContext, RouteMatch, Router, RouterConfig };
|
package/dist/index.iife.js
CHANGED
|
@@ -150,6 +150,15 @@ var __ktjs_router__ = (function (exports) {
|
|
|
150
150
|
};
|
|
151
151
|
};
|
|
152
152
|
|
|
153
|
+
/**
|
|
154
|
+
* Create a router view container that automatically renders route components
|
|
155
|
+
*/
|
|
156
|
+
function KTRouter({ router }) {
|
|
157
|
+
const view = document.createElement('kt-router-view');
|
|
158
|
+
router.setRouterView(view);
|
|
159
|
+
return view;
|
|
160
|
+
}
|
|
161
|
+
|
|
153
162
|
/**
|
|
154
163
|
* Create a new router instance
|
|
155
164
|
*/
|
|
@@ -162,6 +171,7 @@ var __ktjs_router__ = (function (exports) {
|
|
|
162
171
|
const asyncGuards = config.asyncGuards ?? true;
|
|
163
172
|
// # private values
|
|
164
173
|
const routes = [];
|
|
174
|
+
let routerView = null;
|
|
165
175
|
/**
|
|
166
176
|
* Normalize routes by adding default guards
|
|
167
177
|
*/
|
|
@@ -174,6 +184,7 @@ var __ktjs_router__ = (function (exports) {
|
|
|
174
184
|
beforeEnter: route.beforeEnter ?? defaultHook,
|
|
175
185
|
after: route.after ?? defaultHook,
|
|
176
186
|
children: route.children ? normalize(route.children, path) : [],
|
|
187
|
+
component: route.component,
|
|
177
188
|
};
|
|
178
189
|
// directly push the normalized route to the list
|
|
179
190
|
// avoid flatten them again
|
|
@@ -338,6 +349,23 @@ var __ktjs_router__ = (function (exports) {
|
|
|
338
349
|
// Update current route
|
|
339
350
|
current = to;
|
|
340
351
|
history.push(to);
|
|
352
|
+
// Render component if routerView exists
|
|
353
|
+
if (routerView && to.matched.length > 0) {
|
|
354
|
+
const route = to.matched[to.matched.length - 1];
|
|
355
|
+
if (route.component) {
|
|
356
|
+
const element = route.component();
|
|
357
|
+
if (element instanceof Promise) {
|
|
358
|
+
element.then((el) => {
|
|
359
|
+
routerView.innerHTML = '';
|
|
360
|
+
routerView.appendChild(el);
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
364
|
+
routerView.innerHTML = '';
|
|
365
|
+
routerView.appendChild(element);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
341
369
|
// Execute after hooks
|
|
342
370
|
executeAfterHooksSync(to, history[history.length - 2] ?? null);
|
|
343
371
|
return true;
|
|
@@ -377,6 +405,15 @@ var __ktjs_router__ = (function (exports) {
|
|
|
377
405
|
}
|
|
378
406
|
current = to;
|
|
379
407
|
history.push(to);
|
|
408
|
+
// Render component if routerView exists
|
|
409
|
+
if (routerView && to.matched.length > 0) {
|
|
410
|
+
const route = to.matched[to.matched.length - 1];
|
|
411
|
+
if (route.component) {
|
|
412
|
+
const element = await route.component();
|
|
413
|
+
routerView.innerHTML = '';
|
|
414
|
+
routerView.appendChild(element);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
380
417
|
executeAfterHooks(to, history[history.length - 2] ?? null);
|
|
381
418
|
return true;
|
|
382
419
|
}
|
|
@@ -425,6 +462,9 @@ var __ktjs_router__ = (function (exports) {
|
|
|
425
462
|
get history() {
|
|
426
463
|
return history.concat();
|
|
427
464
|
},
|
|
465
|
+
setRouterView(view) {
|
|
466
|
+
routerView = view;
|
|
467
|
+
},
|
|
428
468
|
push(location) {
|
|
429
469
|
const options = normalizeLocation(location);
|
|
430
470
|
return navigate(options);
|
|
@@ -446,6 +486,7 @@ var __ktjs_router__ = (function (exports) {
|
|
|
446
486
|
};
|
|
447
487
|
};
|
|
448
488
|
|
|
489
|
+
exports.KTRouter = KTRouter;
|
|
449
490
|
exports.createRouter = createRouter;
|
|
450
491
|
|
|
451
492
|
return exports;
|
package/dist/index.legacy.js
CHANGED
|
@@ -239,6 +239,16 @@ var __ktjs_router__ = (function (exports) {
|
|
|
239
239
|
};
|
|
240
240
|
};
|
|
241
241
|
|
|
242
|
+
/**
|
|
243
|
+
* Create a router view container that automatically renders route components
|
|
244
|
+
*/
|
|
245
|
+
function KTRouter(_a) {
|
|
246
|
+
var router = _a.router;
|
|
247
|
+
var view = document.createElement('kt-router-view');
|
|
248
|
+
router.setRouterView(view);
|
|
249
|
+
return view;
|
|
250
|
+
}
|
|
251
|
+
|
|
242
252
|
/**
|
|
243
253
|
* Create a new router instance
|
|
244
254
|
*/
|
|
@@ -252,6 +262,7 @@ var __ktjs_router__ = (function (exports) {
|
|
|
252
262
|
var asyncGuards = (_e = config.asyncGuards) !== null && _e !== void 0 ? _e : true;
|
|
253
263
|
// # private values
|
|
254
264
|
var routes = [];
|
|
265
|
+
var routerView = null;
|
|
255
266
|
/**
|
|
256
267
|
* Normalize routes by adding default guards
|
|
257
268
|
*/
|
|
@@ -266,6 +277,7 @@ var __ktjs_router__ = (function (exports) {
|
|
|
266
277
|
beforeEnter: (_c = route.beforeEnter) !== null && _c !== void 0 ? _c : defaultHook,
|
|
267
278
|
after: (_d = route.after) !== null && _d !== void 0 ? _d : defaultHook,
|
|
268
279
|
children: route.children ? normalize(route.children, path) : [],
|
|
280
|
+
component: route.component,
|
|
269
281
|
};
|
|
270
282
|
// directly push the normalized route to the list
|
|
271
283
|
// avoid flatten them again
|
|
@@ -445,6 +457,23 @@ var __ktjs_router__ = (function (exports) {
|
|
|
445
457
|
// Update current route
|
|
446
458
|
current = to;
|
|
447
459
|
history.push(to);
|
|
460
|
+
// Render component if routerView exists
|
|
461
|
+
if (routerView && to.matched.length > 0) {
|
|
462
|
+
var route = to.matched[to.matched.length - 1];
|
|
463
|
+
if (route.component) {
|
|
464
|
+
var element = route.component();
|
|
465
|
+
if (element instanceof Promise) {
|
|
466
|
+
element.then(function (el) {
|
|
467
|
+
routerView.innerHTML = '';
|
|
468
|
+
routerView.appendChild(el);
|
|
469
|
+
});
|
|
470
|
+
}
|
|
471
|
+
else {
|
|
472
|
+
routerView.innerHTML = '';
|
|
473
|
+
routerView.appendChild(element);
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
448
477
|
// Execute after hooks
|
|
449
478
|
executeAfterHooksSync(to, (_a = history[history.length - 2]) !== null && _a !== void 0 ? _a : null);
|
|
450
479
|
return true;
|
|
@@ -460,13 +489,13 @@ var __ktjs_router__ = (function (exports) {
|
|
|
460
489
|
args_1[_i - 1] = arguments[_i];
|
|
461
490
|
}
|
|
462
491
|
return __awaiter(void 0, __spreadArray([options_1], args_1, true), void 0, function (options, redirectCount) {
|
|
463
|
-
var prep, guardLevel, replace, to, fullPath, guardResult, url, error_2;
|
|
492
|
+
var prep, guardLevel, replace, to, fullPath, guardResult, url, route, element, error_2;
|
|
464
493
|
var _a;
|
|
465
494
|
if (redirectCount === void 0) { redirectCount = 0; }
|
|
466
495
|
return __generator(this, function (_b) {
|
|
467
496
|
switch (_b.label) {
|
|
468
497
|
case 0:
|
|
469
|
-
_b.trys.push([0,
|
|
498
|
+
_b.trys.push([0, 4, , 5]);
|
|
470
499
|
// Prevent infinite redirect loop
|
|
471
500
|
if (redirectCount > 10) {
|
|
472
501
|
onError(new Error('Maximum redirect count exceeded'));
|
|
@@ -496,13 +525,23 @@ var __ktjs_router__ = (function (exports) {
|
|
|
496
525
|
}
|
|
497
526
|
current = to;
|
|
498
527
|
history.push(to);
|
|
528
|
+
if (!(routerView && to.matched.length > 0)) return [3 /*break*/, 3];
|
|
529
|
+
route = to.matched[to.matched.length - 1];
|
|
530
|
+
if (!route.component) return [3 /*break*/, 3];
|
|
531
|
+
return [4 /*yield*/, route.component()];
|
|
532
|
+
case 2:
|
|
533
|
+
element = _b.sent();
|
|
534
|
+
routerView.innerHTML = '';
|
|
535
|
+
routerView.appendChild(element);
|
|
536
|
+
_b.label = 3;
|
|
537
|
+
case 3:
|
|
499
538
|
executeAfterHooks(to, (_a = history[history.length - 2]) !== null && _a !== void 0 ? _a : null);
|
|
500
539
|
return [2 /*return*/, true];
|
|
501
|
-
case
|
|
540
|
+
case 4:
|
|
502
541
|
error_2 = _b.sent();
|
|
503
542
|
onError(error_2);
|
|
504
543
|
return [2 /*return*/, false];
|
|
505
|
-
case
|
|
544
|
+
case 5: return [2 /*return*/];
|
|
506
545
|
}
|
|
507
546
|
});
|
|
508
547
|
});
|
|
@@ -559,6 +598,9 @@ var __ktjs_router__ = (function (exports) {
|
|
|
559
598
|
get history() {
|
|
560
599
|
return history.concat();
|
|
561
600
|
},
|
|
601
|
+
setRouterView: function (view) {
|
|
602
|
+
routerView = view;
|
|
603
|
+
},
|
|
562
604
|
push: function (location) {
|
|
563
605
|
var options = normalizeLocation(location);
|
|
564
606
|
return navigate(options);
|
|
@@ -580,6 +622,7 @@ var __ktjs_router__ = (function (exports) {
|
|
|
580
622
|
};
|
|
581
623
|
};
|
|
582
624
|
|
|
625
|
+
exports.KTRouter = KTRouter;
|
|
583
626
|
exports.createRouter = createRouter;
|
|
584
627
|
|
|
585
628
|
return exports;
|
package/dist/index.mjs
CHANGED
|
@@ -147,6 +147,15 @@ const createMatcher = (routes) => {
|
|
|
147
147
|
};
|
|
148
148
|
};
|
|
149
149
|
|
|
150
|
+
/**
|
|
151
|
+
* Create a router view container that automatically renders route components
|
|
152
|
+
*/
|
|
153
|
+
function KTRouter({ router }) {
|
|
154
|
+
const view = document.createElement('kt-router-view');
|
|
155
|
+
router.setRouterView(view);
|
|
156
|
+
return view;
|
|
157
|
+
}
|
|
158
|
+
|
|
150
159
|
/**
|
|
151
160
|
* Create a new router instance
|
|
152
161
|
*/
|
|
@@ -159,6 +168,7 @@ const createRouter = (config) => {
|
|
|
159
168
|
const asyncGuards = config.asyncGuards ?? true;
|
|
160
169
|
// # private values
|
|
161
170
|
const routes = [];
|
|
171
|
+
let routerView = null;
|
|
162
172
|
/**
|
|
163
173
|
* Normalize routes by adding default guards
|
|
164
174
|
*/
|
|
@@ -171,6 +181,7 @@ const createRouter = (config) => {
|
|
|
171
181
|
beforeEnter: route.beforeEnter ?? defaultHook,
|
|
172
182
|
after: route.after ?? defaultHook,
|
|
173
183
|
children: route.children ? normalize(route.children, path) : [],
|
|
184
|
+
component: route.component,
|
|
174
185
|
};
|
|
175
186
|
// directly push the normalized route to the list
|
|
176
187
|
// avoid flatten them again
|
|
@@ -335,6 +346,23 @@ const createRouter = (config) => {
|
|
|
335
346
|
// Update current route
|
|
336
347
|
current = to;
|
|
337
348
|
history.push(to);
|
|
349
|
+
// Render component if routerView exists
|
|
350
|
+
if (routerView && to.matched.length > 0) {
|
|
351
|
+
const route = to.matched[to.matched.length - 1];
|
|
352
|
+
if (route.component) {
|
|
353
|
+
const element = route.component();
|
|
354
|
+
if (element instanceof Promise) {
|
|
355
|
+
element.then((el) => {
|
|
356
|
+
routerView.innerHTML = '';
|
|
357
|
+
routerView.appendChild(el);
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
routerView.innerHTML = '';
|
|
362
|
+
routerView.appendChild(element);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
338
366
|
// Execute after hooks
|
|
339
367
|
executeAfterHooksSync(to, history[history.length - 2] ?? null);
|
|
340
368
|
return true;
|
|
@@ -374,6 +402,15 @@ const createRouter = (config) => {
|
|
|
374
402
|
}
|
|
375
403
|
current = to;
|
|
376
404
|
history.push(to);
|
|
405
|
+
// Render component if routerView exists
|
|
406
|
+
if (routerView && to.matched.length > 0) {
|
|
407
|
+
const route = to.matched[to.matched.length - 1];
|
|
408
|
+
if (route.component) {
|
|
409
|
+
const element = await route.component();
|
|
410
|
+
routerView.innerHTML = '';
|
|
411
|
+
routerView.appendChild(element);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
377
414
|
executeAfterHooks(to, history[history.length - 2] ?? null);
|
|
378
415
|
return true;
|
|
379
416
|
}
|
|
@@ -422,6 +459,9 @@ const createRouter = (config) => {
|
|
|
422
459
|
get history() {
|
|
423
460
|
return history.concat();
|
|
424
461
|
},
|
|
462
|
+
setRouterView(view) {
|
|
463
|
+
routerView = view;
|
|
464
|
+
},
|
|
425
465
|
push(location) {
|
|
426
466
|
const options = normalizeLocation(location);
|
|
427
467
|
return navigate(options);
|
|
@@ -443,4 +483,4 @@ const createRouter = (config) => {
|
|
|
443
483
|
};
|
|
444
484
|
};
|
|
445
485
|
|
|
446
|
-
export { createRouter };
|
|
486
|
+
export { KTRouter, createRouter };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ktjs/router",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.1",
|
|
4
4
|
"description": "Router for kt.js - client-side routing with navigation guards",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"directory": "packages/router"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@ktjs/core": "0.
|
|
34
|
+
"@ktjs/core": "0.14.3"
|
|
35
35
|
},
|
|
36
36
|
"scripts": {
|
|
37
37
|
"build": "rollup -c rollup.config.mjs",
|