@@ -21,89 +21,121 @@ export class AppNavHeader {
2121 document . documentElement . scrollTop = 0 ; // For Chrome, Firefox, IE and Opera
2222 } ) ;
2323 } ) ;
24+
25+ this . toogleSearch ( 'hidden' ) ;
26+ }
27+
28+ toogleSearch ( value : string , pageChanged = false ) {
29+ if ( value === 'hidden' ) {
30+ document . querySelector ( 'open-forge-app' ) . style . position = 'initial' ;
31+ if ( ! pageChanged ) {
32+ const scrollY = document . querySelector ( 'open-forge-app' ) . style . top ;
33+ document . querySelector ( 'open-forge-app' ) . style . position = '' ;
34+ document . querySelector ( 'open-forge-app' ) . style . top = '' ;
35+ window . scrollTo ( 0 , parseInt ( scrollY || '0' , 10 ) * - 1 ) ;
36+ }
37+ } else {
38+ const scrollY = window . scrollY ;
39+ document . querySelector ( 'open-forge-app' ) . style . position = 'fixed' ;
40+ document . querySelector ( 'open-forge-app' ) . style . top = `-${ scrollY } px` ;
41+ window . scrollTo ( 0 , 0 ) ;
42+ setTimeout ( ( ) => document . getElementById ( 'blog-search' ) . focus ( ) ) ;
43+ }
44+
45+ document . querySelector ( 'app-search-results' ) . style . visibility = value ;
2446 }
2547
2648 render ( ) {
2749 return (
28- < nav class = "navbar navbar-expand-lg align-items-lg-end fixed-top navbar-light" >
29- < div class = "container" >
30- < div class = "navbar-brand" >
31- < stencil-route-link tabindex = "0" url = "/" exact = { true } anchorClass = "nav-link" activeClass = "active" >
32- < h1 >
33- < app-img class = "img-fluid" src = "/assets/logo-openforge.png" alt = { translate ( 'nav.header.img.alt' ) } />
34- </ h1 >
35- </ stencil-route-link >
36- </ div >
37- < button
38- class = "navbar-toggler"
39- data-cy = "burgerMenu"
40- type = "button"
41- data-toggle = "collapse"
42- data-target = "#navbarSupportedContent"
43- aria-controls = "navbarSupportedContent"
44- aria-expanded = "false"
45- aria-label = "Toggle navigation"
46- >
47- < span class = "navbar-toggler-icon" />
48- </ button >
50+ < div >
51+ < nav class = "navbar navbar-expand-lg align-items-lg-end fixed-top navbar-light" >
52+ < div class = "container" >
53+ < div class = "navbar-brand" >
54+ < stencil-route-link tabindex = "0" url = "/" exact = { true } anchorClass = "nav-link" activeClass = "active" >
55+ < h1 >
56+ < app-img class = "img-fluid" src = "/assets/logo-openforge.png" alt = { translate ( 'nav.header.img.alt' ) } />
57+ </ h1 >
58+ </ stencil-route-link >
59+ </ div >
60+ < button
61+ class = "navbar-toggler"
62+ data-cy = "burgerMenu"
63+ type = "button"
64+ data-toggle = "collapse"
65+ data-target = "#navbarSupportedContent"
66+ aria-controls = "navbarSupportedContent"
67+ aria-expanded = "false"
68+ aria-label = "Toggle navigation"
69+ >
70+ < span class = "navbar-toggler-icon" />
71+ </ button >
4972
50- < div class = "collapse navbar-collapse justify-content-between" id = "navbarSupportedContent" >
51- < ul class = "navbar-nav" >
52- < li class = "nav-item" data-target = "#navbarSupportedContent" >
53- < stencil-route-link url = "/our-work" exact = { true } anchorClass = "nav-link" activeClass = "active" >
54- { translate ( 'nav.links.ourWork' ) }
55- </ stencil-route-link >
56- </ li >
57- < li class = "nav-item dropdown" data-target = "#navbarSupportedContent" >
58- < a href = "" class = "nav-link dropdown-toggle" id = "navbarDropdown1" role = "button" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "false" >
59- { translate ( 'nav.links.resources' ) }
60- </ a >
61- < div class = "dropdown-menu" aria-labelledby = "navbarDropdown1" >
62- < stencil-route-link url = "/blog" anchorClass = "nav-link dropdown-item" activeClass = "active" >
63- Blog
73+ < div class = "collapse navbar-collapse justify-content-between" id = "navbarSupportedContent" >
74+ < ul class = "navbar-nav" >
75+ < li class = "nav-item" data-target = "#navbarSupportedContent" >
76+ < stencil-route-link url = "/our-work" exact = { true } anchorClass = "nav-link" activeClass = "active" >
77+ { translate ( 'nav.links.ourWork' ) }
6478 </ stencil-route-link >
65- < stencil-route-link url = "/forge" anchorClass = "nav-link dropdown-item" activeClass = "active" >
66- The Forge
67- </ stencil-route-link >
68- < a class = "nav-link" id = "github" href = "https://github.com/openforge" title = { translate ( 'nav.links.github' ) } target = "_blank" rel = "noopener" >
69- Github
79+ </ li >
80+ < li class = "nav-item dropdown" data-target = "#navbarSupportedContent" >
81+ < a href = "" class = "nav-link dropdown-toggle" id = "navbarDropdown1" role = "button" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "false" >
82+ { translate ( 'nav.links.resources' ) }
7083 </ a >
71- </ div >
72- </ li >
73- < li class = "nav-item dropdown" data-target = "#navbarSupportedContent" >
74- < a href = "" class = "nav-link dropdown-toggle" id = "navbarDropdown1" role = "button" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "false" >
75- { translate ( 'nav.links.about' ) }
76- </ a >
77- < div class = "dropdown-menu" aria-labelledby = "navbarDropdown1" >
78- < stencil-route-link url = "/about" anchorClass = "nav-link dropdown-item" activeClass = "active" >
79- Meet the Team
80- </ stencil-route-link >
81- < stencil-route-link url = "/process" anchorClass = "nav-link dropdown-item" activeClass = "active" >
82- Our Process
83- </ stencil-route-link >
84- < stencil-route-link url = "/partners" anchorClass = "nav-link dropdown-item" activeClass = "active" >
85- Partners
84+ < div class = "dropdown-menu" aria-labelledby = "navbarDropdown1" >
85+ < stencil-route-link url = "/blog" anchorClass = "nav-link dropdown-item" activeClass = "active" >
86+ Blog
87+ </ stencil-route-link >
88+ < stencil-route-link url = "/forge" anchorClass = "nav-link dropdown-item" activeClass = "active" >
89+ The Forge
90+ </ stencil-route-link >
91+ < a class = "nav-link" id = "github" href = "https://github.com/openforge" title = { translate ( 'nav.links.github' ) } target = "_blank" rel = "noopener" >
92+ Github
93+ </ a >
94+ </ div >
95+ </ li >
96+ < li class = "nav-item dropdown" data-target = "#navbarSupportedContent" >
97+ < a href = "" class = "nav-link dropdown-toggle" id = "navbarDropdown1" role = "button" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "false" >
98+ { translate ( 'nav.links.about' ) }
99+ </ a >
100+ < div class = "dropdown-menu" aria-labelledby = "navbarDropdown1" >
101+ < stencil-route-link url = "/about" anchorClass = "nav-link dropdown-item" activeClass = "active" >
102+ Meet the Team
103+ </ stencil-route-link >
104+ < stencil-route-link url = "/process" anchorClass = "nav-link dropdown-item" activeClass = "active" >
105+ Our Process
106+ </ stencil-route-link >
107+ < stencil-route-link url = "/partners" anchorClass = "nav-link dropdown-item" activeClass = "active" >
108+ Partners
109+ </ stencil-route-link >
110+ </ div >
111+ </ li >
112+ < li class = "nav-item contact-us-button" data-target = "#navbarSupportedContent" >
113+ < stencil-route-link url = "/contact" anchorClass = "nav-link contact-us" activeClass = "active" >
114+ { translate ( 'nav.links.workWithUs' ) }
86115 </ stencil-route-link >
87- </ div >
88- </ li >
89- < li class = "nav-item contact-us-button" data-target = "#navbarSupportedContent" >
90- < stencil-route-link url = "/contact" anchorClass = "nav-link contact-us" activeClass = "active" >
91- { translate ( 'nav.links.workWithUs' ) }
92- </ stencil-route-link >
93- </ li >
94- < li class = "nav-item search d-none d-lg-block" data-target = "#navbarSupportedContent" >
95- < i class = "fa fa-search" />
96- </ li >
97- < li class = "nav-item search-bar d-md-block d-lg-none" data-target = "#navbarSupportedContent" >
98- < input type = "text" placeholder = "Type to search content..." class = "search-input" />
99- < div class = "search-icon" >
116+ </ li >
117+ < li class = "nav-item search d-none d-lg-block" data-target = "#navbarSupportedContent" onClick = { ( ) => this . toogleSearch ( 'visible' ) } >
100118 < i class = "fa fa-search" />
101- </ div >
102- </ li >
103- </ ul >
119+ </ li >
120+ < li
121+ class = "nav-item search-bar d-md-block d-lg-none"
122+ data-target = "#navbarSupportedContent"
123+ data-toggle = "collapse"
124+ aria-controls = "navbarSupportedContent"
125+ aria-expanded = "false"
126+ onClick = { ( ) => this . toogleSearch ( 'visible' ) }
127+ >
128+ < input type = "text" placeholder = "Type to search content..." class = "search-input" />
129+ < div class = "search-icon" >
130+ < i class = "fa fa-search" />
131+ </ div >
132+ </ li >
133+ </ ul >
134+ </ div >
104135 </ div >
105- </ div >
106- </ nav >
136+ </ nav >
137+ < app-search-results onClose = { ev => this . toogleSearch ( 'hidden' , ev . detail . pageChanged ) } />
138+ </ div >
107139 ) ;
108140 }
109141}
0 commit comments