@@ -5,8 +5,8 @@ import { h } from 'preact';
5
5
const classNames = require ( 'classnames' ) ;
6
6
7
7
import { store } from '../../store.js' ; // redux store
8
- import ArrowIcon from '../../../icons/arrow-down.svg' ;
9
8
import { BaseComponent } from '../base-component.js' ;
9
+ import Mousetrap from 'mousetrap' ;
10
10
import 'url-search-params-polyfill' ;
11
11
12
12
const SubSubList = props => {
@@ -125,14 +125,12 @@ const SpecialButton = props => {
125
125
{ ...props }
126
126
>
127
127
{ props . children }
128
- < span class = "pl-c-nav__link-icon" >
129
- < ArrowIcon
130
- height = { 24 }
131
- width = { 24 }
132
- viewBox = "0 0 24 24"
133
- fill = "currentColor"
134
- />
135
- </ span >
128
+ < span
129
+ class = "pl-c-nav__link-icon"
130
+ dangerouslySetInnerHTML = { {
131
+ __html : '<pl-icon name="arrow-down"></pl-icon>' ,
132
+ } }
133
+ />
136
134
</ button >
137
135
) ;
138
136
} ;
@@ -147,14 +145,12 @@ const Button = props => {
147
145
{ ...props }
148
146
>
149
147
< span className = { `pl-c-nav__link-text` } > { props . children } </ span >
150
- < span class = "pl-c-nav__link-icon" >
151
- < ArrowIcon
152
- height = { 24 }
153
- width = { 24 }
154
- viewBox = "0 0 24 24"
155
- fill = "currentColor"
156
- />
157
- </ span >
148
+ < span
149
+ class = "pl-c-nav__link-icon"
150
+ dangerouslySetInnerHTML = { {
151
+ __html : '<pl-icon name="arrow-down"></pl-icon>' ,
152
+ } }
153
+ />
158
154
</ button >
159
155
) ;
160
156
} ;
@@ -168,14 +164,12 @@ const ButtonTitle = props => {
168
164
role = "tab"
169
165
{ ...props }
170
166
>
171
- < span class = "pl-c-nav__link-icon" >
172
- < ArrowIcon
173
- height = { 24 }
174
- width = { 16 }
175
- viewBox = "0 0 24 24"
176
- fill = "currentColor"
177
- />
178
- </ span >
167
+ < span
168
+ class = "pl-c-nav__link-icon"
169
+ dangerouslySetInnerHTML = { {
170
+ __html : '<pl-icon name="arrow-down"></pl-icon>' ,
171
+ } }
172
+ />
179
173
< span className = { `pl-c-nav__link-text` } > { props . children } </ span >
180
174
</ button >
181
175
) ;
@@ -207,26 +201,38 @@ class Nav extends BaseComponent {
207
201
this . elem = this ;
208
202
this . previousActiveLinks = [ ] ;
209
203
this . iframeElem = document . querySelector ( 'pl-iframe' ) ;
204
+
205
+ Mousetrap . bind ( 'esc' , function ( e ) {
206
+ self . cleanupActiveNav ( ) ;
207
+ } ) ;
208
+
210
209
window . addEventListener ( 'message' , this . receiveIframeMessage , false ) ;
211
210
212
211
document . body . addEventListener ( 'click' , function ( e ) {
213
212
if (
214
- e . target . closest ( 'pl-header' ) === null &&
213
+ e . target . closest ( '.pl-c-nav' ) === null &&
214
+ e . target . closest ( '.pl-js-nav-trigger' ) === null &&
215
215
e . target . closest ( 'svg' ) === null
216
216
) {
217
217
self . cleanupActiveNav ( ) ;
218
218
}
219
219
} ) ;
220
220
}
221
221
222
+ disconnected ( ) {
223
+ super . disconnected && super . disconnected ( ) ;
224
+ window . removeEventListener ( 'message' , this . receiveIframeMessage ) ;
225
+ }
226
+
222
227
_stateChanged ( state ) {
223
- this . layoutMode = state . app . layoutMode || '' ;
228
+ if ( this . layoutMode !== state . app . layoutMode ) {
229
+ this . layoutMode = state . app . layoutMode || '' ;
230
+ }
224
231
225
232
if ( this . currentPattern !== state . app . currentPattern ) {
226
233
this . currentPattern = state . app . currentPattern ;
234
+ this . handleURLChange ( ) ; // so the nav logic is always correct (ex. layout changes)
227
235
}
228
-
229
- this . handleURLChange ( ) ; // so the nav logic is always correct (ex. layout changes)
230
236
}
231
237
232
238
receiveIframeMessage ( event ) {
@@ -251,9 +257,13 @@ class Nav extends BaseComponent {
251
257
if ( data . event !== undefined && data . event === 'patternLab.pageClick' ) {
252
258
try {
253
259
if (
254
- window . matchMedia ( '(min-width: calc(42em))' ) . matches &&
255
- self . layoutMode !== 'vertical'
260
+ window . innerWidth <= 670 ||
261
+ ( window . innerWidth >= 670 && self . layoutMode !== 'vertical' )
256
262
) {
263
+ console . log (
264
+ window . innerWidth <= 670 ||
265
+ ( window . innerWidth >= 670 && self . layoutMode !== 'vertical' )
266
+ ) ;
257
267
self . cleanupActiveNav ( ) ;
258
268
}
259
269
} catch ( error ) {
0 commit comments