joyent-portal/ui/src/components/list/item.js

67 lines
1.4 KiB
JavaScript
Raw Normal View History

2017-01-09 14:13:12 +02:00
const constants = require('../../shared/constants');
const fns = require('../../shared/functions');
const React = require('react');
const Row = require('../row');
const Styled = require('styled-components');
2017-01-16 21:43:11 +02:00
const transferProps = require('../../shared/transfer-props');
2017-01-09 14:13:12 +02:00
const {
boxes,
colors
} = constants;
const {
remcalc
} = fns;
const {
2017-01-10 00:20:54 +02:00
default: styled
2017-01-09 14:13:12 +02:00
} = Styled;
2017-01-09 22:33:32 +02:00
const paper = `
2017-02-02 21:05:45 +02:00
0 ${remcalc(8)} 0 ${remcalc(-5)} ${colors.base.grey},
2017-02-06 18:18:44 +02:00
0 ${remcalc(8)} ${remcalc(1)} ${remcalc(-4)} ${colors.base.greyDarker},
2017-02-02 21:05:45 +02:00
0 ${remcalc(16)} 0 ${remcalc(-10)} ${colors.base.grey},
2017-02-06 18:18:44 +02:00
0 ${remcalc(16)} ${remcalc(1)} ${remcalc(-9)} ${colors.base.greyDarker};
2017-01-09 22:33:32 +02:00
`;
2017-01-09 20:58:30 +02:00
const height = (props) => props.collapsed
? remcalc(48)
2017-01-10 00:14:10 +02:00
: 'auto';
const minHeight = (props) => props.collapsed
? 'auto'
2017-01-09 20:58:30 +02:00
: remcalc(126);
2017-01-09 22:33:32 +02:00
const shadow = (props) => props.stacked
? paper
2017-01-10 00:14:10 +02:00
: props.flat
? 'none'
: props.collapsed && props.headed
? boxes.bottomShaddowDarker
: boxes.bottomShaddow;
2017-01-09 14:13:12 +02:00
const marginBottom = (props) => props.stacked
? remcalc(16)
: remcalc(10);
2017-01-09 14:13:12 +02:00
const Item = styled(Row)`
2017-01-09 20:58:30 +02:00
position: relative;
2017-01-10 00:14:10 +02:00
height: ${height};
min-height: ${minHeight};
2017-01-09 20:58:30 +02:00
box-shadow: ${shadow};
2017-02-07 01:00:55 +02:00
border: ${remcalc(1)} solid ${colors.base.greyDark};
2017-02-02 21:05:45 +02:00
background-color: ${colors.base.white};
margin-bottom: ${marginBottom};
2017-01-09 14:13:12 +02:00
`;
2017-01-09 20:58:30 +02:00
module.exports = transferProps([
'collapsed',
'headed'
], (props) => (
2017-01-09 14:13:12 +02:00
<Item name='list-item' {...props}>
{props.children}
</Item>
));