@@ -10,161 +10,10 @@ import { BaseComponent } from '../base-component.js';
10
10
import Mousetrap from 'mousetrap' ;
11
11
import 'url-search-params-polyfill' ;
12
12
13
- const SubSubList = props => {
14
- const { children, category, elem } = props ;
15
- const reorderedChildren = [ ] ;
16
-
17
- const nonViewAllItems = elem . noViewAll
18
- ? children . filter ( item => item . patternName !== 'View All' )
19
- : children . filter (
20
- item =>
21
- item . patternName !== 'View All' && ! item . patternName . includes ( ' Docs' )
22
- ) ;
23
- const viewAllItems = elem . noViewAll
24
- ? [ ]
25
- : children . filter ( item => item . patternName === 'View All' ) ;
26
-
27
- reorderedChildren . push ( ...viewAllItems , ...nonViewAllItems ) ;
28
-
29
- return (
30
- < li className = { `pl-c-nav__item pl-c-nav__item--${ category . toLowerCase ( ) } ` } >
31
- { viewAllItems . length > 0 ? (
32
- viewAllItems . map ( patternSubtypeItem => (
33
- < div class = "pl-c-nav__link--overview-wrapper" >
34
- < a
35
- href = { `patterns/${ patternSubtypeItem . patternPath } ` }
36
- className = { `pl-c-nav__link pl-c-nav__link--sublink
37
- ${
38
- patternSubtypeItem . patternName === 'View All'
39
- ? 'pl-c-nav__link--overview pl-js-link-overview'
40
- : 'pl-c-nav__link--subsublink'
41
- }
42
- ` }
43
- onClick = { e =>
44
- elem . handleClick ( e , patternSubtypeItem . patternPartial )
45
- }
46
- data-patternpartial = { patternSubtypeItem . patternPartial }
47
- >
48
- { patternSubtypeItem . patternName === 'View All'
49
- ? `${ category } `
50
- : patternSubtypeItem . patternName }
51
- { patternSubtypeItem . patternState && (
52
- < span
53
- class = { `pl-c-pattern-state pl-c-pattern-state--${ patternSubtypeItem . patternState } ` }
54
- title = { patternSubtypeItem . patternState }
55
- />
56
- ) }
57
- </ a >
58
-
59
- { nonViewAllItems . length >= 1 && (
60
- < SpecialButton
61
- aria-controls = { category }
62
- onClick = { elem . toggleSpecialNavPanel }
63
- >
64
- { category }
65
- </ SpecialButton >
66
- ) }
67
- </ div >
68
- ) )
69
- ) : (
70
- < Button aria-controls = { category } onClick = { elem . toggleNavPanel } >
71
- { category }
72
- </ Button >
73
- ) }
74
-
75
- { ( ( viewAllItems . length && nonViewAllItems . length ) ||
76
- viewAllItems . length === 0 ) && (
77
- < ol
78
- id = { category }
79
- className = { `pl-c-nav__subsublist pl-c-nav__subsublist--dropdown pl-js-acc-panel` }
80
- >
81
- { nonViewAllItems . map ( patternSubtypeItem => (
82
- < li class = "pl-c-nav__item" >
83
- < a
84
- href = { `patterns/${ patternSubtypeItem . patternPath } ` }
85
- className = { `pl-c-nav__link pl-c-nav__link--sublink
86
- ${
87
- patternSubtypeItem . patternName === 'View All'
88
- ? 'pl-c-nav__link--overview'
89
- : 'pl-c-nav__link--subsublink'
90
- }
91
- ` }
92
- onClick = { e =>
93
- elem . handleClick ( e , patternSubtypeItem . patternPartial )
94
- }
95
- data-patternpartial = { patternSubtypeItem . patternPartial }
96
- >
97
- { patternSubtypeItem . patternName === 'View All'
98
- ? `${ category } Overview`
99
- : patternSubtypeItem . patternName }
100
- { patternSubtypeItem . patternState && (
101
- < span
102
- class = { `pl-c-pattern-state pl-c-pattern-state--${ patternSubtypeItem . patternState } ` }
103
- title = { patternSubtypeItem . patternState }
104
- />
105
- ) }
106
- </ a >
107
- </ li >
108
- ) ) }
109
- </ ol >
110
- ) }
111
- </ li >
112
- ) ;
113
- } ;
114
-
115
- const SpecialButton = props => {
116
- return (
117
- < button
118
- className = { `pl-c-nav__link pl-c-nav__link--section-dropdown pl-js-acc-handle` }
119
- role = "tab"
120
- { ...props }
121
- >
122
- { props . children }
123
- < span
124
- class = "pl-c-nav__link-icon"
125
- dangerouslySetInnerHTML = { {
126
- __html : '<pl-icon name="arrow-down"></pl-icon>' ,
127
- } }
128
- />
129
- </ button >
130
- ) ;
131
- } ;
132
-
133
- const Button = props => {
134
- return (
135
- < button
136
- className = { `pl-c-nav__link pl-c-nav__link--dropdown pl-js-acc-handle` }
137
- role = "tab"
138
- { ...props }
139
- >
140
- < span className = { `pl-c-nav__link-text` } > { props . children } </ span >
141
- < span
142
- class = "pl-c-nav__link-icon"
143
- dangerouslySetInnerHTML = { {
144
- __html : '<pl-icon name="arrow-down"></pl-icon>' ,
145
- } }
146
- />
147
- </ button >
148
- ) ;
149
- } ;
150
-
151
- const ButtonTitle = props => {
152
- return (
153
- < button
154
- className = { `pl-c-nav__link pl-c-nav__link--title pl-js-acc-handle` }
155
- role = "tab"
156
- { ...props }
157
- >
158
- < span
159
- class = "pl-c-nav__link-icon"
160
- dangerouslySetInnerHTML = { {
161
- __html : '<pl-icon name="arrow-down"></pl-icon>' ,
162
- } }
163
- />
164
- < span className = { `pl-c-nav__link-text` } > { props . children } </ span >
165
- </ button >
166
- ) ;
167
- } ;
13
+ import { NavTitle } from './src/NavTitle' ;
14
+ import { NavList } from './src/NavList' ;
15
+ import { NavLink } from './src/NavLink' ;
16
+ import { NavItem } from './src/NavItem' ;
168
17
169
18
@define
170
19
class Nav extends BaseComponent {
@@ -393,32 +242,28 @@ class Nav extends BaseComponent {
393
242
return (
394
243
< ol class = "pl-c-nav__list pl-js-pattern-nav-target" >
395
244
{ patternTypes . map ( ( item , i ) => {
396
- const classes = classNames ( {
397
- [ `pl-c-nav__item pl-c-nav__item--${ item . patternTypeLC } ` ] : true ,
398
- } ) ;
399
-
400
245
const patternItems = item . patternItems ;
401
246
402
247
return (
403
- < li className = { classes } >
404
- < ButtonTitle
248
+ < NavItem className = { `pl-c-nav__item-- ${ item . patternTypeLC } ` } >
249
+ < NavTitle
405
250
aria-controls = { item . patternTypeLC }
406
251
onClick = { this . toggleNavPanel }
407
252
>
408
253
{ item . patternTypeUC }
409
- </ ButtonTitle >
254
+ </ NavTitle >
410
255
< ol
411
256
id = { item . patternSubtypeUC }
412
257
className = { `pl-c-nav__sublist pl-c-nav__sublist--dropdown pl-js-acc-panel` }
413
258
>
414
259
{ item . patternTypeItems . map ( ( patternSubtype , i ) => {
415
260
return (
416
- < SubSubList
261
+ < NavList
417
262
elem = { this . elem }
418
263
category = { patternSubtype . patternSubtypeUC }
419
264
>
420
265
{ patternSubtype . patternSubtypeItems }
421
- </ SubSubList >
266
+ </ NavList >
422
267
) ;
423
268
} ) }
424
269
@@ -428,31 +273,13 @@ class Nav extends BaseComponent {
428
273
patternItem . patternPartial . includes ( 'viewall' ) ? (
429
274
''
430
275
) : (
431
- < li class = "pl-c-nav__item" >
432
- < a
433
- href = { `patterns/${ patternItem . patternPath } ` }
434
- class = "pl-c-nav__link pl-c-nav__link--pattern"
435
- onClick = { e =>
436
- this . handleClick ( e , patternItem . patternPartial )
437
- }
438
- data-patternpartial = { patternItem . patternPartial }
439
- tabindex = "0"
440
- >
441
- { patternItem . patternName === 'View All'
442
- ? patternItem . patternName + ' ' + item . patternTypeUC
443
- : patternItem . patternName }
444
- { patternItem . patternState && (
445
- < span
446
- class = { `pl-c-pattern-state pl-c-pattern-state--${ patternItem . patternState } ` }
447
- title = { patternItem . patternState }
448
- />
449
- ) }
450
- </ a >
451
- </ li >
276
+ < NavItem >
277
+ < NavLink item = { patternItem } elem = { this } />
278
+ </ NavItem >
452
279
) ;
453
280
} ) }
454
281
</ ol >
455
- </ li >
282
+ </ NavItem >
456
283
) ;
457
284
} ) }
458
285
@@ -461,7 +288,7 @@ class Nav extends BaseComponent {
461
288
window . ishControls . ishControlsHide === undefined ||
462
289
( window . ishControls . ishControlsHide [ 'views-all' ] !== true &&
463
290
window . ishControls . ishControlsHide . all !== true ) ) && (
464
- < li class = "pl-c-nav__item" >
291
+ < NavItem >
465
292
< a
466
293
onClick = { e => this . handleClick ( e , 'all' ) }
467
294
href = "styleguide/html/styleguide.html"
@@ -471,7 +298,7 @@ class Nav extends BaseComponent {
471
298
>
472
299
All
473
300
</ a >
474
- </ li >
301
+ </ NavItem >
475
302
) }
476
303
</ ol >
477
304
) ;
0 commit comments