@@ -3,6 +3,8 @@ import PropTypes from 'prop-types';
3
3
import { Link } from 'react-router' ;
4
4
import styled from 'styled-components' ;
5
5
import { remSize , prop , common } from '../theme' ;
6
+ import IconButton from './mobile/IconButton' ;
7
+ import Button from '../common/Button' ;
6
8
7
9
8
10
// <ul className="nav__dropdown">
@@ -51,21 +53,21 @@ import { remSize, prop, common } from '../theme';
51
53
// color: getThemifyVariable('primary-text-color');
52
54
// }
53
55
// text-align: left;
54
- // width: #{ 180 / $base-font-size}rem ;
56
+ // width: ${remSize( 180)} ;
55
57
// display: flex;
56
58
// position: absolute;
57
59
// flex-direction: column;
58
60
// top: 95%;
59
61
// height: auto;
60
62
// z-index: 9999;
61
- // border-radius: #{6 / $base-font-size}rem;
62
- // -------------
63
+ // border-radius: ${remSize(6)};
63
64
// & li:first-child {
64
- // border-radius: #{5 / $base-font-size}rem #{5 / $base-font-size}rem 0 0;
65
+ // border-radius: ${remSize(5)} ${remSize(5)} 0 0;
65
66
// }
66
67
// & li:last-child {
67
- // border-radius: 0 0 #{5 / $base-font-size}rem #{5 / $base-font-size}rem ;
68
+ // border-radius: 0 0 ${remSize(5)} ${remSize(5)} ;
68
69
// }
70
+ // -------------
69
71
// & li {
70
72
// & button,
71
73
// & a {
@@ -74,9 +76,9 @@ import { remSize, prop, common } from '../theme';
74
76
// }
75
77
// width: 100%;
76
78
// text-align: left;
77
- // padding: #{8 / $base-font-size}rem #{16 / $base-font-size}rem ;
79
+ // padding: ${remSize(8)} ${remSize(16)} ;
78
80
// }
79
- // height: #{35 / $base-font-size}rem ;
81
+ // height: ${remSize(35)} ;
80
82
// cursor: pointer;
81
83
// display: flex;
82
84
// align-items: center;
@@ -105,10 +107,10 @@ import { remSize, prop, common } from '../theme';
105
107
// }
106
108
107
109
108
- const DropdownWrapper = styled . div `
110
+ const DropdownWrapper = styled . ul `
109
111
background-color: ${ prop ( 'Modal.background' ) } ;
110
112
border: 1px solid ${ prop ( 'Modal.border' ) } ;
111
- box-shadow: 0 0 18px 0 ${ common . shadowColor } ;
113
+ box-shadow: 0 0 18px 0 ${ prop ( ' shadowColor' ) } ;
112
114
color: ${ prop ( 'primaryTextColor' ) } ;
113
115
114
116
text-align: left;
@@ -120,45 +122,68 @@ const DropdownWrapper = styled.div`
120
122
height: auto;
121
123
z-index: 9999;
122
124
border-radius: ${ remSize ( 6 ) } ;
123
- ` ;
124
125
126
+ & li:first-child { border-radius: ${ remSize ( 5 ) } ${ remSize ( 5 ) } 0 0; }
127
+ & li:last-child { border-radius: 0 0 ${ remSize ( 5 ) } ${ remSize ( 5 ) } ; }
128
+
129
+ & li:hover {
130
+
131
+ background-color: ${ prop ( 'Button.hover.background' ) } ;
132
+ color: ${ prop ( 'Button.hover.foreground' ) } ;
133
+
134
+ & button, & a {
135
+ color: ${ prop ( 'Button.hover.foreground' ) } ;
136
+ }
137
+ }
138
+
139
+ li {
140
+ height: ${ remSize ( 36 ) } ;
141
+ cursor: pointer;
142
+ display: flex;
143
+ align-items: center;
144
+
145
+ & button,
146
+ & a {
147
+ color: ${ prop ( 'primaryTextColor' ) } ;
148
+ width: 100%;
149
+ text-align: left;
150
+ padding: ${ remSize ( 8 ) } ${ remSize ( 16 ) } ;
151
+ }
152
+ }
125
153
126
- // @include themify() {
127
- // background-color: map-get($theme-map, 'modal-background-color');
128
- // border: 1px solid map-get($theme-map, 'modal-border-color');
129
- // box-shadow: 0 0 18px 0 getThemifyVariable('shadow-color');
130
- // color: getThemifyVariable('primary-text-color');
131
- // }
154
+ ` ;
155
+
156
+ // { onPress
157
+ // ? <IconButton
158
+ // : <Link to={to}>{title}</Link> }
132
159
160
+ const MaybeIcon = ( Element , label ) => Element && < Element aria-label = { label } /> ;
133
161
134
162
const Dropdown = ( { items } ) => (
135
163
< DropdownWrapper >
136
- < h1 > space</ h1 >
137
- < h1 > space</ h1 >
138
- < h1 > space</ h1 >
139
- < h1 > space</ h1 >
140
164
{ /* className="nav__items-left" */ }
141
- < ul className = "nav__items-left nav__dropdown nav__item nav__item--open" >
142
- < h1 className = "nav__dropdown-item" > hello</ h1 >
143
- < h1 className = "nav__dropdown-item" > hello</ h1 >
144
- { items && items . map ( ( { title } ) => (
145
- < li className = "nav__dropdown-item" key = { `nav-${ title && title . toLowerCase ( ) } ` } >
146
- < h1 > space</ h1 >
147
- </ li >
148
- ) )
149
- }
150
- </ ul >
165
+ { items && items . map ( ( { title, icon, href } ) => (
166
+ < li key = { `nav-${ title && title . toLowerCase ( ) } ` } >
167
+ < Link to = { href } >
168
+ { MaybeIcon ( icon , `Navigate to ${ title } ` ) }
169
+ { title }
170
+ </ Link >
171
+ </ li >
172
+ ) )
173
+ }
151
174
</ DropdownWrapper >
152
175
) ;
153
176
154
177
Dropdown . propTypes = {
155
178
items : PropTypes . arrayOf ( PropTypes . shape ( {
156
- action : PropTypes . func
157
- } ) )
179
+ action : PropTypes . func ,
180
+ icon : PropTypes . func ,
181
+ href : PropTypes . string
182
+ } ) ) ,
158
183
} ;
159
184
160
185
Dropdown . defaultProps = {
161
- items : [ ]
186
+ items : [ ] ,
162
187
} ;
163
188
164
189
export default Dropdown ;
0 commit comments