Showing
2 changed files
with
24 additions
and
46 deletions
1 | -import React from 'react'; | ||
2 | -import styled from 'styled-components'; | ||
3 | -import { dropdownListColorMap } from '../../lib/styles/palette'; | ||
4 | - | ||
5 | -const DropDownListBlock = styled.div` | ||
6 | - float: ${props => props.float || ''}; | ||
7 | - width: ${props => props.size || '40%'}; | ||
8 | -`; | ||
9 | - | ||
10 | -const DropDownList = styled.ul` | ||
11 | - padding: 0; | ||
12 | - margin: 0; | ||
13 | - background-color: ${props => dropdownListColorMap[props.color].background}; | ||
14 | - border: 2px solid ${props => dropdownListColorMap[props.color].borderColor}; | ||
15 | - box-sizing: border-box; | ||
16 | - color: ${props => dropdownListColorMap[props.color].color}; | ||
17 | - font-size: 1.3rem; | ||
18 | - font-weight: 500; | ||
19 | - &:first-child { | ||
20 | - padding-top: 0.5em; | ||
21 | - } | ||
22 | -`; | ||
23 | - | ||
24 | -const ListItem = styled.li` | ||
25 | - list-style: none; | ||
26 | - padding-left: 1em; | ||
27 | - padding-bottom: 0.3em; | ||
28 | - border-bottom: 2px solid #e5e5e5; | ||
29 | -`; | ||
30 | - | ||
31 | -const DropDown = ({ children, color, float, size }) => { | ||
32 | - return ( | ||
33 | - <DropDownListBlock color={color} float={float} size={size}> | ||
34 | - <DropDownList color={color}> | ||
35 | - <ListItem>{children}</ListItem> | ||
36 | - </DropDownList> | ||
37 | - </DropDownListBlock> | ||
38 | - ); | ||
39 | -}; | ||
40 | - | ||
41 | -export default DropDown; |
... | @@ -6,14 +6,14 @@ const DropDownBlock = styled.div` | ... | @@ -6,14 +6,14 @@ const DropDownBlock = styled.div` |
6 | margin: 0 auto; | 6 | margin: 0 auto; |
7 | float: ${props => props.float || ''}; | 7 | float: ${props => props.float || ''}; |
8 | `; | 8 | `; |
9 | - | 9 | +const DropDownHeader = styled.select` |
10 | -const DropDownHeader = styled.button` | ||
11 | margin-bottom: 0.8em; | 10 | margin-bottom: 0.8em; |
12 | padding: 0.4em; | 11 | padding: 0.4em; |
13 | width: ${props => props.width || '100px'}; | 12 | width: ${props => props.width || '100px'}; |
14 | - line-height: ${props => props.height || '30px'}; | 13 | + height: ${props => props.height || '30px'}; |
15 | padding-right: 30px; | 14 | padding-right: 30px; |
16 | font-size: ${props => props.fontsize || '20px'}; | 15 | font-size: ${props => props.fontsize || '20px'}; |
16 | + cursor: pointer; | ||
17 | color: ${props => dropdownHeaderColorMap[props.color].color}; | 17 | color: ${props => dropdownHeaderColorMap[props.color].color}; |
18 | background-color: ${props => dropdownHeaderColorMap[props.color].background}; | 18 | background-color: ${props => dropdownHeaderColorMap[props.color].background}; |
19 | &:hover { | 19 | &:hover { |
... | @@ -21,18 +21,37 @@ const DropDownHeader = styled.button` | ... | @@ -21,18 +21,37 @@ const DropDownHeader = styled.button` |
21 | dropdownHeaderColorMap[props.color].hoverBackground}; | 21 | dropdownHeaderColorMap[props.color].hoverBackground}; |
22 | } | 22 | } |
23 | border: 1px ${props => dropdownHeaderColorMap[props.color].background}; | 23 | border: 1px ${props => dropdownHeaderColorMap[props.color].background}; |
24 | + | ||
25 | + option { | ||
26 | + color: blue; | ||
27 | + background-color: blue; | ||
28 | + display: flex; | ||
29 | + white-space: pre; | ||
30 | + min-height: 20px; | ||
31 | + padding: 0px 2px 1px; | ||
32 | + } | ||
24 | `; | 33 | `; |
25 | 34 | ||
26 | -const DropDown = ({ children, float, color, fontsize, width, height }) => { | 35 | +const DropDown = ({ |
36 | + options, | ||
37 | + float, | ||
38 | + color = 'blue', | ||
39 | + fontsize, | ||
40 | + width, | ||
41 | + height, | ||
42 | +}) => { | ||
27 | return ( | 43 | return ( |
28 | <DropDownBlock float={float} color={color}> | 44 | <DropDownBlock float={float} color={color}> |
29 | <DropDownHeader | 45 | <DropDownHeader |
46 | + options={options} | ||
30 | color={color} | 47 | color={color} |
31 | fontsize={fontsize} | 48 | fontsize={fontsize} |
32 | width={width} | 49 | width={width} |
33 | height={height} | 50 | height={height} |
34 | > | 51 | > |
35 | - {children} | 52 | + {options.map(friend => ( |
53 | + <option value={friend.id}>{friend.name}</option> | ||
54 | + ))} | ||
36 | </DropDownHeader> | 55 | </DropDownHeader> |
37 | </DropDownBlock> | 56 | </DropDownBlock> |
38 | ); | 57 | ); | ... | ... |
-
Please register or login to post a comment