@softwareone/spi-sv5-library 1.16.0 → 1.16.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/components/controls/select/Select.svelte +1 -1
- package/dist/components/header/Header.svelte +2 -2
- package/dist/components/header/Header.svelte.d.ts +2 -2
- package/dist/components/menu/Menu.svelte +10 -9
- package/dist/components/menu/Menu.svelte.d.ts +2 -2
- package/dist/components/menu/utils.d.ts +1 -0
- package/dist/components/menu/utils.js +9 -4
- package/dist/utils/url.d.ts +1 -2
- package/dist/utils/url.js +6 -14
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import type { AnnouncementItem, MenuItem } from '../../index.js';
|
|
2
|
+
import type { AnnouncementItem, MainMenu, MenuItem } from '../../index.js';
|
|
3
3
|
import Announcement from '../announcement/Announcement.svelte';
|
|
4
4
|
import Menu from '../menu/Menu.svelte';
|
|
5
5
|
import Waffle from '../waffle/Waffle.svelte';
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
userName?: string;
|
|
18
18
|
hideLoader?: boolean;
|
|
19
19
|
hideAnnouncement?: boolean;
|
|
20
|
-
menuItems?:
|
|
20
|
+
menuItems?: MainMenu[];
|
|
21
21
|
waffleItems?: WaffleItem[];
|
|
22
22
|
profileMenuItems?: MenuItem[];
|
|
23
23
|
announcementItems?: AnnouncementItem[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AnnouncementItem, MenuItem } from '../../index.js';
|
|
1
|
+
import type { AnnouncementItem, MainMenu, MenuItem } from '../../index.js';
|
|
2
2
|
import type { WaffleItem } from '../waffle/types.js';
|
|
3
3
|
interface Props {
|
|
4
4
|
title?: string;
|
|
@@ -9,7 +9,7 @@ interface Props {
|
|
|
9
9
|
userName?: string;
|
|
10
10
|
hideLoader?: boolean;
|
|
11
11
|
hideAnnouncement?: boolean;
|
|
12
|
-
menuItems?:
|
|
12
|
+
menuItems?: MainMenu[];
|
|
13
13
|
waffleItems?: WaffleItem[];
|
|
14
14
|
profileMenuItems?: MenuItem[];
|
|
15
15
|
announcementItems?: AnnouncementItem[];
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { page } from '$app/state';
|
|
2
3
|
import { fade } from 'svelte/transition';
|
|
3
4
|
|
|
4
|
-
import { existRoute,
|
|
5
|
+
import { existRoute, getSectionPrefix } from '../../utils/index.js';
|
|
5
6
|
import MainMenuItem from './MenuItem.svelte';
|
|
6
|
-
import type {
|
|
7
|
+
import type { MainMenu } from './types.js';
|
|
8
|
+
import { hasMenuItems } from './utils.js';
|
|
7
9
|
|
|
8
10
|
interface Props {
|
|
9
|
-
menuItems:
|
|
11
|
+
menuItems: MainMenu[];
|
|
10
12
|
showMenu: boolean;
|
|
11
13
|
}
|
|
12
14
|
|
|
@@ -15,14 +17,13 @@
|
|
|
15
17
|
let activeItem = $state('');
|
|
16
18
|
|
|
17
19
|
const setActiveMenuItem = () => {
|
|
18
|
-
activeItem =
|
|
19
|
-
menuItems.find((menuItem: MenuItem) => isActiveMenuItem(menuItem.url))?.text || '';
|
|
20
|
+
activeItem = menuItems.find((menu) => isActiveMenuItem(menu))?.text || '';
|
|
20
21
|
};
|
|
21
22
|
|
|
22
|
-
const isActiveMenuItem = (
|
|
23
|
-
const pathname =
|
|
24
|
-
const
|
|
25
|
-
return existRoute(
|
|
23
|
+
const isActiveMenuItem = (menu: MainMenu): boolean => {
|
|
24
|
+
const pathname = page.url.pathname;
|
|
25
|
+
const routeToMatch = hasMenuItems(menu.children) ? getSectionPrefix(menu.url) : menu.url;
|
|
26
|
+
return existRoute(routeToMatch, pathname);
|
|
26
27
|
};
|
|
27
28
|
|
|
28
29
|
const onHandleMenu = () => {
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { page } from '$app/state';
|
|
2
|
+
import { existRoute, getSectionPrefix } from '../../utils/index.js';
|
|
3
|
+
export const hasMenuItems = (children) => {
|
|
4
|
+
return Boolean(children?.some((child) => child.menuItems.length));
|
|
5
|
+
};
|
|
2
6
|
export const getSubMenuItemsFromMenu = (items, excludedRoutes) => {
|
|
3
|
-
const pathname =
|
|
7
|
+
const pathname = page.url.pathname;
|
|
4
8
|
if (excludedRoutes?.includes(pathname))
|
|
5
9
|
return [];
|
|
6
|
-
const firstPathSegment = getFirstPathSegment(pathname);
|
|
7
10
|
const matchedMenu = items.find((menu) => {
|
|
8
|
-
|
|
11
|
+
if (!hasMenuItems(menu.children))
|
|
12
|
+
return false;
|
|
13
|
+
return existRoute(getSectionPrefix(menu.url), pathname);
|
|
9
14
|
});
|
|
10
15
|
return matchedMenu?.children ?? [];
|
|
11
16
|
};
|
package/dist/utils/url.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export declare const
|
|
2
|
-
export declare const getFirstPathSegment: (pathname: string) => string;
|
|
1
|
+
export declare const getSectionPrefix: (url: string) => string;
|
|
3
2
|
export declare const existRoute: (url: string, pathname: string) => boolean;
|
package/dist/utils/url.js
CHANGED
|
@@ -1,17 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const pathname = page.url.pathname;
|
|
6
|
-
const withoutBase = base && pathname.startsWith(base) ? pathname.slice(base.length) : pathname;
|
|
7
|
-
return normalizePathname(withoutBase);
|
|
8
|
-
};
|
|
9
|
-
export const getFirstPathSegment = (pathname) => {
|
|
10
|
-
const matchedPath = /^\/[^/]+/.exec(pathname);
|
|
11
|
-
return matchedPath?.[0] ?? '/';
|
|
1
|
+
export const getSectionPrefix = (url) => {
|
|
2
|
+
const segments = url.split('/');
|
|
3
|
+
segments.pop();
|
|
4
|
+
return segments.join('/') || '/';
|
|
12
5
|
};
|
|
13
6
|
export const existRoute = (url, pathname) => {
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
return regex.test(normalizedPathname);
|
|
7
|
+
const regex = new RegExp(String.raw `^${url}(?![\w-])`);
|
|
8
|
+
return regex.test(pathname);
|
|
17
9
|
};
|