Range Slider - creating component
This commit is contained in:
parent
c0e68b4ef6
commit
0b332cbeb6
@ -7,6 +7,7 @@ const ReactRouter = require('react-router');
|
|||||||
const Navigation = require('./navigation.js');
|
const Navigation = require('./navigation.js');
|
||||||
const Home = require('../home');
|
const Home = require('../home');
|
||||||
const Item = require('../item/');
|
const Item = require('../item/');
|
||||||
|
// const Item = require('../../../src/components/range-slider');
|
||||||
|
|
||||||
const {
|
const {
|
||||||
Base,
|
Base,
|
||||||
|
35
ui/src/components/range-slider/index.js
Normal file
35
ui/src/components/range-slider/index.js
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
const classNames = require('classnames');
|
||||||
|
const React = require('react');
|
||||||
|
const styles = require('./style.css');
|
||||||
|
|
||||||
|
const RangeSlider = ({
|
||||||
|
className,
|
||||||
|
style
|
||||||
|
}) => {
|
||||||
|
|
||||||
|
const slider = classNames(
|
||||||
|
className,
|
||||||
|
styles.input
|
||||||
|
);
|
||||||
|
|
||||||
|
// TODO: Get rid of inline styles
|
||||||
|
style = {
|
||||||
|
...style,
|
||||||
|
display: 'block'
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<input
|
||||||
|
className={slider}
|
||||||
|
style={style}
|
||||||
|
type="range"
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
RangeSlider.propTypes = {
|
||||||
|
className: React.PropTypes.string,
|
||||||
|
style: React.PropTypes.object
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = RangeSlider;
|
37
ui/src/components/range-slider/readme.md
Normal file
37
ui/src/components/range-slider/readme.md
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# `<RangeSlider>`
|
||||||
|
|
||||||
|
## demo
|
||||||
|
|
||||||
|
```embed
|
||||||
|
const React = require('react');
|
||||||
|
const ReactDOM = require('react-dom/server');
|
||||||
|
const Base = require('../base');
|
||||||
|
const Container = require('../container');
|
||||||
|
const Row = require('../row');
|
||||||
|
const Column = require('../column');
|
||||||
|
const RangeSlider = require('./index.js');
|
||||||
|
const styles = require('./style.css');
|
||||||
|
|
||||||
|
nmodule.exports = ReactDOM.renderToString(
|
||||||
|
<Base>
|
||||||
|
<Row>
|
||||||
|
<Column xs={6}>
|
||||||
|
<RangeSlider />
|
||||||
|
</Column>
|
||||||
|
</Row>
|
||||||
|
</Base>
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
## usage
|
||||||
|
|
||||||
|
```js
|
||||||
|
const React = require('react');
|
||||||
|
const RangeSlider = require('ui/range-slider');
|
||||||
|
|
||||||
|
module.exports = () => {
|
||||||
|
return (
|
||||||
|
<RangeSlider />
|
||||||
|
);
|
||||||
|
}
|
||||||
|
```
|
103
ui/src/components/range-slider/style.css
Normal file
103
ui/src/components/range-slider/style.css
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
~colors: "../../shared/constants.js";
|
||||||
|
~boxes: "../../shared/constants.js";
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--primary-background: ~colors.brandPrimary;
|
||||||
|
--box-shaddow: ~boxes.bottomShaddow;
|
||||||
|
--box-border: ~boxes.border.unchecked;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input[type="range"] {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
margin: 10px 0;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
// Try and figure out why display none is being set in doc.css
|
||||||
|
display: block;
|
||||||
|
visibility: visible;
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
&::-webkit-slider-runnable-track {
|
||||||
|
animate: 0.2s;
|
||||||
|
background: var(--primary-background);
|
||||||
|
border: var(--box-border);
|
||||||
|
border-radius: 25px;
|
||||||
|
box-shadow: var(--box-shaddow);
|
||||||
|
cursor: pointer;
|
||||||
|
height: 12.8px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
&::-webkit-slider-thumb {
|
||||||
|
background: #ffffff;
|
||||||
|
border: solid 1px #d8d8d8;
|
||||||
|
border-radius: 4px;
|
||||||
|
box-shadow: var(--box-shaddow);
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
height: 24px;
|
||||||
|
margin-top: -3.6px;
|
||||||
|
width: 36px;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
}
|
||||||
|
&:focus::-webkit-slider-runnable-track {
|
||||||
|
background: var(--primary-background);
|
||||||
|
}
|
||||||
|
&::-moz-range-track {
|
||||||
|
animate: 0.2s;
|
||||||
|
background: var(--primary-background);
|
||||||
|
border: var(--box-border);
|
||||||
|
border-radius: 25px;
|
||||||
|
box-shadow: var(--box-shaddow);
|
||||||
|
cursor: pointer;
|
||||||
|
height: 12.8px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
&::-moz-range-thumb {
|
||||||
|
background: #65001c;
|
||||||
|
box-shadow: var(--box-shaddow);
|
||||||
|
border: 0px solid #000000;
|
||||||
|
border-radius: 7px;
|
||||||
|
cursor: pointer;
|
||||||
|
height: 20px;
|
||||||
|
width: 39px;
|
||||||
|
}
|
||||||
|
&::-ms-track {
|
||||||
|
animate: 0.2s;
|
||||||
|
background: transparent;
|
||||||
|
borded: transparent;
|
||||||
|
border-width: 39px 0;
|
||||||
|
color: transparent;
|
||||||
|
cursor: pointer;
|
||||||
|
height: 12.8px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
&::-ms-fill-lower {
|
||||||
|
background: var(--primary-background);
|
||||||
|
border: var(--box-border);
|
||||||
|
border-radius: 50px;
|
||||||
|
box-shadow: var(--box-shaddow);
|
||||||
|
}
|
||||||
|
&::-ms-fill-upper {
|
||||||
|
background: #e6e6e6;
|
||||||
|
border: var(--box-border);
|
||||||
|
border-radius: 50px;
|
||||||
|
box-shadow: var(--box-shaddow);
|
||||||
|
}
|
||||||
|
&::-ms-thumb {
|
||||||
|
background: #65001c;
|
||||||
|
border: 0px solid #000000;
|
||||||
|
border-radius: 7px;
|
||||||
|
box-shadow: var(--box-shaddow);
|
||||||
|
cursor: pointer;
|
||||||
|
height: 20px;
|
||||||
|
width: 39px;
|
||||||
|
}
|
||||||
|
&:focus::-ms-fill-lower {
|
||||||
|
background: var(--primary-background);
|
||||||
|
}
|
||||||
|
&:focus::-ms-fill-upper {
|
||||||
|
background: #e6e6e6;
|
||||||
|
}
|
||||||
|
}
|
@ -14,6 +14,7 @@ module.exports = {
|
|||||||
'Radio Group': require('./components/radio-group/readme.md'),
|
'Radio Group': require('./components/radio-group/readme.md'),
|
||||||
Column: require('./components/column/readme.md'),
|
Column: require('./components/column/readme.md'),
|
||||||
Button: require('./components/button/readme.md'),
|
Button: require('./components/button/readme.md'),
|
||||||
|
'Range Slider': require('./components/range-slider/readme.md'),
|
||||||
Toggle: require('./components/toggle/readme.md'),
|
Toggle: require('./components/toggle/readme.md'),
|
||||||
Checkbox: require('./components/checkbox/readme.md'),
|
Checkbox: require('./components/checkbox/readme.md'),
|
||||||
Tab: require('./components/tab/readme.md'),
|
Tab: require('./components/tab/readme.md'),
|
||||||
|
@ -10,6 +10,7 @@ module.exports = {
|
|||||||
Tabs: require('./components/tabs'),
|
Tabs: require('./components/tabs'),
|
||||||
Toggle: require('./components/toggle'),
|
Toggle: require('./components/toggle'),
|
||||||
Input: require('./components/input'),
|
Input: require('./components/input'),
|
||||||
|
'Range Slider': require('./components/range-slider/'),
|
||||||
Radio: require('./components/radio'),
|
Radio: require('./components/radio'),
|
||||||
RadioGroup: require('./components/radio-group'),
|
RadioGroup: require('./components/radio-group'),
|
||||||
Widget: require('./components/widget')
|
Widget: require('./components/widget')
|
||||||
|
@ -67,7 +67,7 @@ const sizes = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const boxes = {
|
const boxes = {
|
||||||
borderRadius: 4,
|
borderRadius: '4px',
|
||||||
bottomShaddow: '0 2px 0 0 rgba(0, 0, 0, 0.05)',
|
bottomShaddow: '0 2px 0 0 rgba(0, 0, 0, 0.05)',
|
||||||
insetShaddow: 'inset 0 3px 0 0 rgba(0, 0, 0, 0.05)',
|
insetShaddow: 'inset 0 3px 0 0 rgba(0, 0, 0, 0.05)',
|
||||||
border: {
|
border: {
|
||||||
|
@ -24,7 +24,9 @@ const plugins = {
|
|||||||
require('postcss-cssnext')()
|
require('postcss-cssnext')()
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
'embed-markdown-loader': {}
|
'embed-markdown-loader': {
|
||||||
|
mode: 'plain'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user