@kadira/react-storybook-addon-info
Version:
A React Storybook addon to show additional information for your stories.
58 lines (49 loc) • 1.45 kB
JavaScript
import React from 'react';
import PropVal from './PropVal';
const stylesheet = {
propStyle: {
},
propNameStyle: {
},
propValueStyle: {
}
}
export default class Props extends React.Component {
render() {
const props = this.props.node.props;
const defaultProps = this.props.node.type.defaultProps;
if (!props || typeof props !== 'object') {
return <span />;
}
const {propStyle, propValueStyle, propNameStyle} = stylesheet;
const names = Object.keys(props).filter(name => {
return name[0] !== '_' && name !== 'children' && (!defaultProps || props[name] != defaultProps[name]);
});
const breakIntoNewLines = names.length > 3;
const endingSpace = this.props.singleLine ? ' ' : '';
const items = [];
names.forEach((name, i) => {
items.push(
<span key={name}>
{breakIntoNewLines ? (
<span>
<br />
</span>
) : ' '}
<span style={propNameStyle}>{name}</span>
{/* Use implicit true: */}
{(!props[name] || typeof props[name] !== 'boolean') && (
<span>
=
<span style={propValueStyle}><PropVal val={props[name]} /></span>
</span>
)}
{i === (names.length - 1) && (
breakIntoNewLines ? <br /> : endingSpace
)}
</span>
);
});
return <span>{items}</span>;
}
}