@@ -16,17 +16,25 @@ import {
16
16
} from '@six-group/ui-library-react' ;
17
17
import { Language , languages } from '@six-group/ui-library' ;
18
18
import { useLanguage } from '@/app/hooks/useLocaleStorage' ;
19
+ import styles from './header.module.css' ;
20
+ import { useState } from 'react' ;
19
21
20
22
interface HeaderProps {
21
23
taskCount : number ;
22
- open : boolean ;
24
+ toggleMenu : ( ) => void ;
23
25
}
24
26
25
- export default function Header ( { taskCount, open } : HeaderProps ) {
27
+ const SixHeaderComponent = SixHeader as React . ComponentType < any > ;
28
+ const SixIconButtonComponent = SixIconButton as React . ComponentType < any > ;
29
+
30
+ export default function Header ( { toggleMenu, taskCount } : HeaderProps ) {
26
31
const availableLangs : Language [ ] = [ ...languages ] ;
27
32
const apps = [ 'Application 1' , 'Application 2' , 'Application 3' , 'Application 4' ] ;
28
33
let currentApp = 'Application 1' ;
29
34
35
+ const [ openSearch , setOpenSearch ] = useState ( false ) ;
36
+ const [ sideMenuOpen , setsideMenuOpen ] = useState ( false ) ;
37
+
30
38
let lang = useLanguage ( ) ;
31
39
if ( lang == null || ! availableLangs . includes ( lang ) ) {
32
40
lang = 'de' ;
@@ -41,57 +49,62 @@ export default function Header({ taskCount, open }: HeaderProps) {
41
49
}
42
50
43
51
return (
44
- < SixHeader >
45
- < SixHeaderItem >
46
- < SixIconButton name = { open ? 'menu_open' : 'menu' } />
47
- </ SixHeaderItem >
52
+ < >
53
+ < SixHeaderComponent slot = "header" className = { styles } openSearch = { openSearch } >
54
+ < SixHeaderItem >
55
+ < SixIconButtonComponent name = { sideMenuOpen ? 'menu_open' : 'menu' } onClick = { toggleMenu } />
56
+ </ SixHeaderItem >
48
57
49
- < SixHeaderItem >
50
- < SixIconButton href = { 'https://six-group.github.io/six-webcomponents/demo/angular /' } >
51
- < SixLogo />
52
- </ SixIconButton >
53
- </ SixHeaderItem >
58
+ < SixHeaderItem >
59
+ < SixIconButtonComponent href = { 'https://six-group.github.io/six-webcomponents/demo/react /' } >
60
+ < SixLogo />
61
+ </ SixIconButtonComponent >
62
+ </ SixHeaderItem >
54
63
55
- < SixHeaderItem className = "search-icon" >
56
- < SixIconButton name = "search" > </ SixIconButton >
57
- </ SixHeaderItem >
64
+ < SixHeaderItem className = "search-icon" >
65
+ < SixIconButtonComponent name = "search" onClick = { ( ) => setOpenSearch ( ! openSearch ) } > </ SixIconButtonComponent >
66
+ </ SixHeaderItem >
58
67
59
- < SixSearchField slot = "search-field" debounce = { 600 } clearable />
68
+ < SixSearchField slot = "search-field" debounce = { 600 } clearable />
60
69
61
- < SixHeaderItem >
62
- < SixIconButton name = "notifications_none" >
63
- < SixBadge type = "danger" pill >
64
- { taskCount }
65
- </ SixBadge >
66
- </ SixIconButton >
67
- </ SixHeaderItem >
70
+ < SixHeaderItem >
71
+ < SixIconButtonComponent name = "notifications_none" >
72
+ < SixBadge type = "danger" pill >
73
+ { taskCount }
74
+ </ SixBadge >
75
+ </ SixIconButtonComponent >
76
+ </ SixHeaderItem >
68
77
69
- { /* <SixHeaderDropdownItem>
70
- <SixHeaderMenuButton slot="trigger">
71
- <span>{currentApp}</span>
72
- <SixIcon slot="suffix">apps</SixIcon>
73
- </SixHeaderMenuButton>
74
- <SixMenu>
75
- {apps.map((app) => (
76
- <SixMenuItem checked={app === currentApp} onClick={() => (currentApp = app)} key={app}>
77
- {app}
78
- </SixMenuItem>
79
- ))}
80
- </SixMenu>
81
- </SixHeaderDropdownItem>
78
+ < SixHeaderDropdownItem >
79
+ < SixHeaderMenuButton slot = "trigger" >
80
+ < span > { currentApp } </ span >
81
+ < SixIcon slot = "suffix" > apps</ SixIcon >
82
+ </ SixHeaderMenuButton >
83
+ < SixMenu >
84
+ { apps . map ( ( app ) => (
85
+ < SixMenuItem checked = { app === currentApp } onClick = { ( ) => ( currentApp = app ) } key = { app } >
86
+ { app }
87
+ </ SixMenuItem >
88
+ ) ) }
89
+ </ SixMenu >
90
+ </ SixHeaderDropdownItem >
82
91
83
- <SixHeaderDropdownItem>
84
- <SixIconButton slot="trigger">
85
- <SixAvatar image="https://images.unsplash.com/photo-1529778873920-4da4926a72c2?ixlib=rb-1.2.1&auto=format&fit=crop&w=300&q=80"></SixAvatar>
86
- </SixIconButton>
87
- <SixMenu>
88
- <SixMenuItem value="change-password">Change password</SixMenuItem>
89
- <SixMenuItem value="logout">Logout</SixMenuItem>
90
- <SixMenuItem>
91
- <SixLanguageSwitcher selected={language} onSixLanguageSwitcherChange={changeLanguage}></SixLanguageSwitcher>
92
- </SixMenuItem>
93
- </SixMenu>
94
- </SixHeaderDropdownItem>*/ }
95
- </ SixHeader >
92
+ < SixHeaderDropdownItem >
93
+ < SixIconButtonComponent slot = "trigger" >
94
+ < SixAvatar image = "https://images.unsplash.com/photo-1529778873920-4da4926a72c2?ixlib=rb-1.2.1& auto = format & fit = crop & w = 300 & q = 80 " > </ SixAvatar >
95
+ </ SixIconButtonComponent >
96
+ < SixMenu >
97
+ < SixMenuItem value = "change-password" > Change password</ SixMenuItem >
98
+ < SixMenuItem value = "logout" > Logout</ SixMenuItem >
99
+ < SixMenuItem >
100
+ < SixLanguageSwitcher
101
+ selected = { language }
102
+ onSixLanguageSwitcherChange = { changeLanguage }
103
+ > </ SixLanguageSwitcher >
104
+ </ SixMenuItem >
105
+ </ SixMenu >
106
+ </ SixHeaderDropdownItem >
107
+ </ SixHeaderComponent >
108
+ </ >
96
109
) ;
97
110
}
0 commit comments