@ulu/frontend-vue 0.1.0-beta.17 → 0.1.0-beta.18
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/{breakpoints-Cd3pu0Is.js → breakpoints-Cuct6LCy.js} +1 -1
- package/dist/frontend-vue.js +7 -6
- package/dist/{index-Cdy3vpXx.js → index-NdgoSqkD.js} +1204 -1079
- package/lib/index.js +1 -0
- package/lib/utils/index.js +2 -0
- package/lib/utils/{vue-router.js → router.js} +46 -11
- package/package.json +1 -1
- package/types/index.d.ts +1 -0
- package/types/utils/index.d.ts +3 -0
- package/types/utils/index.d.ts.map +1 -0
- package/types/utils/router.d.ts +126 -0
- package/types/utils/router.d.ts.map +1 -0
- package/lib/utils/placeholder.js +0 -6
package/lib/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* This Module Creates Menus from route or router config
|
|
3
3
|
* - Note: Functions prefixed with "$" work with $route objects (running application, provided by vue-router ie $router, useRoute, etc),
|
|
4
|
-
* @module
|
|
4
|
+
* @module router-utils
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -21,21 +21,56 @@
|
|
|
21
21
|
*/
|
|
22
22
|
export function createBaseMenu(routes, options) {
|
|
23
23
|
const defaults = {
|
|
24
|
-
qualifier
|
|
24
|
+
qualifier(route, parentPath) {
|
|
25
|
+
if (!parentPath) {
|
|
26
|
+
return isStaticBaseRoute(route);
|
|
27
|
+
} else {
|
|
28
|
+
return isStaticRoute(route);
|
|
29
|
+
}
|
|
30
|
+
},
|
|
25
31
|
sort: sortByWeight,
|
|
26
|
-
item: {}
|
|
32
|
+
item: {},
|
|
33
|
+
includeChildren: false
|
|
27
34
|
};
|
|
28
35
|
const opts = Object.assign({}, defaults, options);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
const getItemPath = (r, parentPath) => parentPath ? `${ parentPath }/${ r.path }` : r.path;
|
|
37
|
+
const toMenuItems = (currentRoutes, parentPath = null) => {
|
|
38
|
+
return currentRoutes
|
|
39
|
+
.filter(r => opts.qualifier(r, parentPath))
|
|
40
|
+
.map(r => {
|
|
41
|
+
// Need to grab meta from child but use the parent path
|
|
42
|
+
const menuRoute = r.children ? getChildIndexRoute(r.children) : r;
|
|
43
|
+
const children = r.children ? r.children.filter(child => child.path !== "") : false;
|
|
44
|
+
const item = createMenuItem(menuRoute, getItemPath(r, parentPath), opts.item);
|
|
45
|
+
if (opts.includeChildren && children.length) {
|
|
46
|
+
item.children = toMenuItems(children, item.path);
|
|
47
|
+
}
|
|
48
|
+
return item;
|
|
49
|
+
})
|
|
50
|
+
.sort(opts.sort);
|
|
51
|
+
};
|
|
52
|
+
return toMenuItems(routes);
|
|
37
53
|
}
|
|
38
54
|
|
|
55
|
+
/**
|
|
56
|
+
* Returns menu flat (no parent children)
|
|
57
|
+
*/
|
|
58
|
+
export function flattenMenu(menu) {
|
|
59
|
+
function flatten(items) {
|
|
60
|
+
const result = [];
|
|
61
|
+
for (const item of items) {
|
|
62
|
+
const newItem = { ...item };
|
|
63
|
+
delete newItem.children;
|
|
64
|
+
result.push(newItem);
|
|
65
|
+
if (item.children) {
|
|
66
|
+
result.push(...flatten(item.children));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
return flatten(menu);
|
|
72
|
+
}
|
|
73
|
+
|
|
39
74
|
/**
|
|
40
75
|
* Print out a section's menu based on path
|
|
41
76
|
* @param {*} routes All routes
|
package/package.json
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/utils/index.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This Module Creates Menus from route or router config
|
|
3
|
+
* - Note: Functions prefixed with "$" work with $route objects (running application, provided by vue-router ie $router, useRoute, etc),
|
|
4
|
+
* @module router-utils
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Route Menu Item
|
|
8
|
+
* @typedef {Object} RouteMenuItem
|
|
9
|
+
* @property {String} path - Menu item route path
|
|
10
|
+
* @property {String} title - Menu item title
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Get root/base static routes as menu items
|
|
14
|
+
* @param {*} routes Routes to build menu from (not router instance)
|
|
15
|
+
* @param {Object} options Options
|
|
16
|
+
* @param {Object} options.qualifier Callback to qualify as a base route (defaults to isStaticBaseRoute)
|
|
17
|
+
* @param {Object} options.item Options for createMenuItem
|
|
18
|
+
* @returns {Array.<RouteMenuItem>} Array of menu items
|
|
19
|
+
*/
|
|
20
|
+
export function createBaseMenu(routes: any, options: {
|
|
21
|
+
qualifier: any;
|
|
22
|
+
item: any;
|
|
23
|
+
}): Array<RouteMenuItem>;
|
|
24
|
+
/**
|
|
25
|
+
* Returns menu flat (no parent children)
|
|
26
|
+
*/
|
|
27
|
+
export function flattenMenu(menu: any): any;
|
|
28
|
+
/**
|
|
29
|
+
* Print out a section's menu based on path
|
|
30
|
+
* @param {*} routes All routes
|
|
31
|
+
* @param {*} sectionPath Path for section to create menu
|
|
32
|
+
* @param {Object} options Options
|
|
33
|
+
* @param {Boolean} options.includeIndex Include the parent/index in the menu items ie ({ path: "" })
|
|
34
|
+
* @param {Object} options.item Options to be passed to createMenuItem
|
|
35
|
+
* @returns {Array.<RouteMenuItem>} Array of menu items
|
|
36
|
+
*/
|
|
37
|
+
export function createSectionMenu(routes: any, sectionPath: any, options: {
|
|
38
|
+
includeIndex: boolean;
|
|
39
|
+
item: any;
|
|
40
|
+
}): Array<RouteMenuItem>;
|
|
41
|
+
/**
|
|
42
|
+
* For a given route this will return the route that renders. For routes without
|
|
43
|
+
* children this is the route itself for those with children (first child with empty path)
|
|
44
|
+
* @param {Object} route Route object to resolve
|
|
45
|
+
* @returns {Object} Resolved route
|
|
46
|
+
*/
|
|
47
|
+
/**
|
|
48
|
+
* For a given array of child routes return the index
|
|
49
|
+
* @param {Array} children Children array of routes
|
|
50
|
+
* @returns {Object} Route
|
|
51
|
+
*/
|
|
52
|
+
export function getChildIndexRoute(children: any[]): any;
|
|
53
|
+
/**
|
|
54
|
+
* Creates common menu item structure from route, pulls title and weight from meta (on route or index child)
|
|
55
|
+
* @param {Object} route Route
|
|
56
|
+
* @param {Object} routePath The final path for the menu item
|
|
57
|
+
* @param {Object} options Function to allow alterering the menu item (adding meta, etc)
|
|
58
|
+
* @param {Function} options.modify Function to allow alterering the menu item (adding meta, etc) (args: item, route)
|
|
59
|
+
* @param {Function} options.indexMeta Include the routes index child's meta (merged on top of route meta)
|
|
60
|
+
* @returns {RouteMenuItem} Menu item
|
|
61
|
+
*/
|
|
62
|
+
export function createMenuItem(route: any, routePath: any, options: {
|
|
63
|
+
modify: Function;
|
|
64
|
+
indexMeta: Function;
|
|
65
|
+
}): RouteMenuItem;
|
|
66
|
+
/**
|
|
67
|
+
* Test if route is static (doesn't incude parameters)
|
|
68
|
+
* @param {Object} route Route object to test
|
|
69
|
+
* @returns {Boolean} Whether or not this route is static (not dynamic)
|
|
70
|
+
*/
|
|
71
|
+
export function isStaticRoute(route: any): boolean;
|
|
72
|
+
/**
|
|
73
|
+
*
|
|
74
|
+
* @param {Object} route Route object to test
|
|
75
|
+
* @returns {Boolean} Whether or not this route is a static base route
|
|
76
|
+
*/
|
|
77
|
+
export function isStaticBaseRoute(route: any): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Function to make normal <a> behave as router links instread of page reload
|
|
80
|
+
* @param {Object} router Router instance (ie src/router) to push routes to
|
|
81
|
+
* @param {Object} event The event object that triggered route change (ie. onclick) pass event object
|
|
82
|
+
*/
|
|
83
|
+
export function nativeLinkRouter(router: any, event: any): void;
|
|
84
|
+
/**
|
|
85
|
+
* Returns the child routes for base route
|
|
86
|
+
* @param {Object} route Route Object
|
|
87
|
+
* @returns
|
|
88
|
+
*/
|
|
89
|
+
export function $getRouteChildren(route: any, parent?: any): any;
|
|
90
|
+
/**
|
|
91
|
+
* Returns the route's parent
|
|
92
|
+
* @param {Object} route Route Object
|
|
93
|
+
* @param {Object} deepest By default this returns the routes parent, if deepest it will return it's base route (top level parent)
|
|
94
|
+
* @return {Object|Null} Parent route, if there is no parent route for the given route this will return null
|
|
95
|
+
*/
|
|
96
|
+
export function $getParentRoute(route: any, deepest: any): any | null;
|
|
97
|
+
/**
|
|
98
|
+
* For a given $route will return all it's children as menu items,
|
|
99
|
+
* using the route's meta.title property for the title. This is for sections only (routes with children)
|
|
100
|
+
* - Useful for dynamic menus (menus within some unknown section) where you don't want to write static paths
|
|
101
|
+
* @param {Object} route Actual $route object
|
|
102
|
+
* @param {Object} options Options
|
|
103
|
+
* @param {Object} options.parent Route parent object, defaults to parent of route
|
|
104
|
+
* @param {Boolean} options.includeIndex Include the parent/index in the menu items ie ({ path: "" })
|
|
105
|
+
* @param {Object} options.item Options for createMenuItem
|
|
106
|
+
* @returns {Array.<RouteMenuItem>} Array of menu items
|
|
107
|
+
*/
|
|
108
|
+
export function $createSectionMenu(route: any, options: {
|
|
109
|
+
parent: any;
|
|
110
|
+
includeIndex: boolean;
|
|
111
|
+
item: any;
|
|
112
|
+
}): Array<RouteMenuItem>;
|
|
113
|
+
/**
|
|
114
|
+
* Route Menu Item
|
|
115
|
+
*/
|
|
116
|
+
export type RouteMenuItem = {
|
|
117
|
+
/**
|
|
118
|
+
* - Menu item route path
|
|
119
|
+
*/
|
|
120
|
+
path: string;
|
|
121
|
+
/**
|
|
122
|
+
* - Menu item title
|
|
123
|
+
*/
|
|
124
|
+
title: string;
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../lib/utils/router.js"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,uCANW,GAAC,WAET;IAAwB,SAAS;IACT,IAAI;CAC5B,GAAU,KAAK,CAAE,aAAa,CAAC,CAiCjC;AAED;;GAEG;AACH,4CAcC;AAED;;;;;;;;GAQG;AACH,0CAPW,GAAC,eACD,GAAC,WAET;IAAyB,YAAY;IACb,IAAI;CAC5B,GAAU,KAAK,CAAE,aAAa,CAAC,CA6BjC;AAED;;;;;GAKG;AASH;;;;GAIG;AACH,yDAEC;AACD;;;;;;;;GAQG;AACH,oEAJG;IAA0B,MAAM;IACN,SAAS;CACnC,GAAU,aAAa,CAsBzB;AACD;;;;GAIG;AACH,mDAEC;AACD;;;;GAIG;AACH,uDAGC;AACD;;;;GAIG;AACH,gEAUC;AACD;;;;GAIG;AACH,iEAEC;AACD;;;;;GAKG;AACH,2DAFY,UAAW,CAUtB;AAUD;;;;;;;;;;GAUG;AACH,wDALG;IAAwB,MAAM;IACL,YAAY;IACb,IAAI;CAC5B,GAAU,KAAK,CAAE,aAAa,CAAC,CAgBjC"}
|
package/lib/utils/placeholder.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam commodo felis nisi, nec pretium justo varius sit amet. Vestibulum vitae quam in velit scelerisque tincidunt et vitae mauris. Fusce aliquet, ipsum sit amet lacinia euismod, est risus rhoncus ligula, eget egestas urna ligula nec enim. Fusce vulputate ornare ligula ut tempus. Sed accumsan orci sed turpis iaculis, at aliquam nibh rhoncus. Maecenas porta lorem a sem tincidunt, sed tristique ex laoreet. Nullam accumsan metus at lobortis interdum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam sagittis sem erat, quis fermentum lectus ultrices quis.",
|
|
3
|
-
textSmall: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam commodo felis nisi, nec pretium justo varius sit amet.",
|
|
4
|
-
paragraph: "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam commodo felis nisi, nec pretium justo varius sit amet. Vestibulum vitae quam in velit scelerisque tincidunt et vitae mauris. Fusce aliquet, ipsum sit amet lacinia euismod, est risus rhoncus ligula, eget egestas urna ligula nec enim. Fusce vulputate ornare ligula ut tempus. Sed accumsan orci sed turpis iaculis, at aliquam nibh rhoncus. Maecenas porta lorem a sem tincidunt, sed tristique ex laoreet. Nullam accumsan metus at lobortis interdum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam sagittis sem erat, quis fermentum lectus ultrices quis.</p>",
|
|
5
|
-
paragraphSmall: "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam commodo felis nisi, nec pretium justo varius sit amet. Vestibulum vitae quam in velit scelerisque tincidunt et vitae mauris. </p>"
|
|
6
|
-
}
|