mirror of
https://github.com/explosion/spaCy.git
synced 2024-11-14 13:47:13 +03:00
Move Dropdown to own component
This commit is contained in:
parent
761431f5cb
commit
164559c336
28
website/src/components/dropdown.js
Normal file
28
website/src/components/dropdown.js
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
import React from 'react'
|
||||||
|
import PropTypes from 'prop-types'
|
||||||
|
import classNames from 'classnames'
|
||||||
|
import { navigate } from 'gatsby'
|
||||||
|
|
||||||
|
import classes from '../styles/dropdown.module.sass'
|
||||||
|
|
||||||
|
const Dropdown = ({ defaultValue, className, onChange, children }) => {
|
||||||
|
const defaultOnChange = ({ target }) => navigate(target.value)
|
||||||
|
return (
|
||||||
|
<select
|
||||||
|
defaultValue={defaultValue}
|
||||||
|
className={classNames(classes.root, className)}
|
||||||
|
onChange={onChange || defaultOnChange}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</select>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
Dropdown.propTypes = {
|
||||||
|
defaultValue: PropTypes.string,
|
||||||
|
className: PropTypes.string,
|
||||||
|
onChange: PropTypes.func,
|
||||||
|
children: PropTypes.node.isRequired,
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Dropdown
|
|
@ -1,23 +1,19 @@
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import PropTypes from 'prop-types'
|
import PropTypes from 'prop-types'
|
||||||
import classNames from 'classnames'
|
import classNames from 'classnames'
|
||||||
import { navigate } from 'gatsby'
|
|
||||||
|
|
||||||
import Link from './link'
|
import Link from './link'
|
||||||
import Icon from './icon'
|
import Icon from './icon'
|
||||||
|
import Dropdown from './dropdown'
|
||||||
import { github } from './util'
|
import { github } from './util'
|
||||||
import { ReactComponent as Logo } from '../images/logo.svg'
|
import { ReactComponent as Logo } from '../images/logo.svg'
|
||||||
import classes from '../styles/navigation.module.sass'
|
import classes from '../styles/navigation.module.sass'
|
||||||
|
|
||||||
const Dropdown = ({ items, section }) => {
|
const NavigationDropdown = ({ items, section }) => {
|
||||||
const active = items.find(({ text }) => text.toLowerCase() === section)
|
const active = items.find(({ text }) => text.toLowerCase() === section)
|
||||||
const defaultValue = active ? active.url : 'title'
|
const defaultValue = active ? active.url : 'title'
|
||||||
return (
|
return (
|
||||||
<select
|
<Dropdown defaultValue={defaultValue} className={classes.dropdown}>
|
||||||
defaultValue={defaultValue}
|
|
||||||
className={classes.dropdown}
|
|
||||||
onChange={({ target }) => navigate(target.value)}
|
|
||||||
>
|
|
||||||
<option value="title" disabled>
|
<option value="title" disabled>
|
||||||
Menu
|
Menu
|
||||||
</option>
|
</option>
|
||||||
|
@ -26,7 +22,7 @@ const Dropdown = ({ items, section }) => {
|
||||||
{text}
|
{text}
|
||||||
</option>
|
</option>
|
||||||
))}
|
))}
|
||||||
</select>
|
</Dropdown>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,7 +35,7 @@ const Navigation = ({ title, items, section, search, children }) => {
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<div className={classes.menu}>
|
<div className={classes.menu}>
|
||||||
<Dropdown items={items} section={section} />
|
<NavigationDropdown items={items} section={section} />
|
||||||
|
|
||||||
<ul className={classes.list}>
|
<ul className={classes.list}>
|
||||||
{items.map(({ text, url }, i) => {
|
{items.map(({ text, url }, i) => {
|
||||||
|
|
15
website/src/styles/dropdown.module.sass
Normal file
15
website/src/styles/dropdown.module.sass
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
.root
|
||||||
|
font: inherit
|
||||||
|
background: transparent
|
||||||
|
border: none
|
||||||
|
appearance: none
|
||||||
|
background-color: var(--color-back)
|
||||||
|
background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23929e9b%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E')
|
||||||
|
background-repeat: no-repeat
|
||||||
|
background-position: right 0.7em top 50%
|
||||||
|
background-size: 0.5em auto
|
||||||
|
padding: 0 1.4em 0 0.5em
|
||||||
|
|
||||||
|
&:-moz-focusring
|
||||||
|
text-shadow: 0 0 0 var(--color-theme)
|
||||||
|
color: transparent
|
|
@ -74,23 +74,10 @@
|
||||||
font-weight: bold
|
font-weight: bold
|
||||||
color: var(--color-theme)
|
color: var(--color-theme)
|
||||||
text-transform: uppercase
|
text-transform: uppercase
|
||||||
background: transparent
|
|
||||||
border: 0
|
|
||||||
margin-right: 0.5rem
|
margin-right: 0.5rem
|
||||||
appearance: none
|
|
||||||
background-color: var(--color-back)
|
|
||||||
background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23929e9b%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E')
|
|
||||||
background-repeat: no-repeat
|
|
||||||
background-position: right 0.7em top 50%
|
|
||||||
background-size: 0.5em auto
|
|
||||||
padding: 0 1.4em 0 0.5em
|
|
||||||
border: 2px solid var(--color-back)
|
border: 2px solid var(--color-back)
|
||||||
border-radius: 2em
|
border-radius: 2em
|
||||||
|
|
||||||
&:-moz-focusring
|
|
||||||
text-shadow: 0 0 0 var(--color-theme)
|
|
||||||
color: transparent
|
|
||||||
|
|
||||||
&:focus
|
&:focus
|
||||||
border: 2px dotted var(--color-theme)
|
border: 2px dotted var(--color-theme)
|
||||||
outline: none
|
outline: none
|
||||||
|
|
Loading…
Reference in New Issue
Block a user