@ssa-ui-kit/widgets 0.0.16-alpha → 0.0.17-alpha

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ssa-ui-kit/widgets",
3
- "version": "0.0.16-alpha",
3
+ "version": "0.0.17-alpha",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "private": false,
@@ -30,8 +30,8 @@
30
30
  "loose-envify": "^1.4.0",
31
31
  "scheduler": "^0.23.0",
32
32
  "@ssa-ui-kit/core": "^0.0.12-alpha",
33
- "@ssa-ui-kit/hooks": "^0.0.1-alpha",
34
- "@ssa-ui-kit/utils": "^0.0.1-alpha"
33
+ "@ssa-ui-kit/utils": "^0.0.1-alpha",
34
+ "@ssa-ui-kit/hooks": "^0.0.1-alpha"
35
35
  },
36
36
  "browserslist": [
37
37
  ">0.1%",
@@ -1,7 +1,9 @@
1
1
  import { useState, useId, useEffect } from 'react';
2
2
  import { Wrapper } from '@ssa-ui-kit/core';
3
+ import { useWindowSize } from '@ssa-ui-kit/hooks';
3
4
  import * as S from './styles';
4
5
 
6
+ import { SCREEN_SIZES } from '../../consts';
5
7
  import CollapsibleNavBarBase from './CollapsibleNavBarBase';
6
8
  import CollapsibleNavBarWrapper from './CollapsibleNavBarWrapper';
7
9
  import CollapsibleNavBarList from './CollapsibleNavBarList';
@@ -10,7 +12,6 @@ import { CollapsibleNavBarExtendedProps } from './types';
10
12
  import { NavContentToggle } from './CollapsibleNavContentToggle';
11
13
  import { NavBarItemWithSubMenu } from './NavBarItemWithSubMenu';
12
14
  import { NavBarItemWithoutSubMenu } from './NavBarItemWithoutSubMenu';
13
-
14
15
  /**
15
16
  * UI Component that shows the collapsible navigation bar
16
17
  */
@@ -19,18 +20,19 @@ export const CollapsibleNavBar = ({
19
20
  renderLogo,
20
21
  }: CollapsibleNavBarExtendedProps) => {
21
22
  const toggleId = useId();
23
+ const { width } = useWindowSize();
22
24
  const [isChecked, onToggle] = useState(false);
25
+ const isMobile = width < SCREEN_SIZES['900'].width;
23
26
 
24
27
  useEffect(() => {
25
- const onResize = () => {
26
- onToggle(false);
27
- };
28
+ onToggle(false);
29
+ }, [width]);
28
30
 
29
- window.addEventListener('resize', onResize);
30
- return () => {
31
- window.removeEventListener('resize', onResize);
32
- };
33
- }, []);
31
+ const handleCloseMobileMenu = () => {
32
+ if (isMobile) {
33
+ onToggle(!isChecked);
34
+ }
35
+ };
34
36
 
35
37
  return (
36
38
  <CollapsibleNavBarBase className={isChecked ? 'opened' : undefined}>
@@ -55,9 +57,17 @@ export const CollapsibleNavBar = ({
55
57
  const { iconName, title } = item;
56
58
  const keyName = iconName + title.replace(' ', '').toLowerCase();
57
59
  return 'items' in item ? (
58
- <NavBarItemWithSubMenu item={item} key={keyName} />
60
+ <NavBarItemWithSubMenu
61
+ item={item}
62
+ key={keyName}
63
+ onClick={handleCloseMobileMenu}
64
+ />
59
65
  ) : (
60
- <NavBarItemWithoutSubMenu item={item} key={keyName} />
66
+ <NavBarItemWithoutSubMenu
67
+ item={item}
68
+ key={keyName}
69
+ onClick={handleCloseMobileMenu}
70
+ />
61
71
  );
62
72
  })}
63
73
  </CollapsibleNavBarList>
@@ -26,12 +26,14 @@ export const NavBarAccordionContent = ({
26
26
  accordionUniqueName,
27
27
  prefix,
28
28
  isPopover,
29
+ onClick,
29
30
  ...rest
30
31
  }: RenderContentProps & {
31
32
  items: Array<{ path: string; title: string }>;
32
33
  accordionUniqueName: string;
33
34
  prefix?: string;
34
35
  isPopover?: boolean;
36
+ onClick?: () => void;
35
37
  }) => (
36
38
  <AccordionContent
37
39
  {...rest}
@@ -41,6 +43,7 @@ export const NavBarAccordionContent = ({
41
43
  key={`${accordionUniqueName}-link-${subMenuItem.title
42
44
  .replace(' ', '')
43
45
  .toLowerCase()}`}
46
+ onClick={onClick}
44
47
  to={'/' + prefix + subMenuItem.path}>
45
48
  {subMenuItem.title}
46
49
  </Link>
@@ -18,8 +18,10 @@ const Link = CollapsibleNavBarLink.withComponent('div');
18
18
 
19
19
  export const NavBarItemWithSubMenu = ({
20
20
  item,
21
+ onClick,
21
22
  }: {
22
23
  item: CollapsibleNavBarGroup;
24
+ onClick?: () => void;
23
25
  }) => {
24
26
  const { iconName, iconSize, title, items, prefix, css } = item;
25
27
  const uniqName = iconName + title.replace(' ', '').toLowerCase();
@@ -55,6 +57,7 @@ export const NavBarItemWithSubMenu = ({
55
57
  accordionUniqueName={accordionUniqName}
56
58
  prefix={prefix}
57
59
  isPopover={false}
60
+ onClick={onClick}
58
61
  {...props}
59
62
  />
60
63
  )}
@@ -6,8 +6,10 @@ import * as T from './types';
6
6
 
7
7
  export const NavBarItemWithoutSubMenu = ({
8
8
  item,
9
+ onClick,
9
10
  }: {
10
11
  item: T.CollapsibleNavBarItem;
12
+ onClick?: () => void;
11
13
  }) => {
12
14
  const { path, iconName, title, iconSize, css } = item;
13
15
  const Icon = () => (
@@ -16,7 +18,7 @@ export const NavBarItemWithoutSubMenu = ({
16
18
 
17
19
  return (
18
20
  <CollapsibleNavBarItem key={path}>
19
- <CollapsibleNavBarLink to={'/' + path}>
21
+ <CollapsibleNavBarLink to={'/' + path} onClick={onClick}>
20
22
  <CollapsibleNavBarPopover triggerIcon={<Icon />} title={title} />
21
23
  <Icon />
22
24
  <span>{title}</span>