@lyra/components
Version:
Basic UX components
104 lines (92 loc) • 3.29 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _blockStyle = require('part:@lyra/components/previews/block-style');
var _blockStyle2 = _interopRequireDefault(_blockStyle);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const fieldProp = _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.node, _propTypes2.default.func]); /* eslint-disable complexity */
class BlockPreview extends _react2.default.PureComponent {
render() {
var _props = this.props;
const title = _props.title,
subtitle = _props.subtitle,
description = _props.description,
mediaDimensions = _props.mediaDimensions,
media = _props.media,
children = _props.children;
return _react2.default.createElement(
'div',
{ className: description ? _blockStyle2.default.hasDescription : _blockStyle2.default.root },
status && _react2.default.createElement(
'div',
{ className: _blockStyle2.default.status },
typeof status === 'function' && status({ layout: 'default' }) || status
),
media && _react2.default.createElement(
'div',
{ className: `${_blockStyle2.default.media}` },
typeof media === 'function' && media({ dimensions: mediaDimensions, layout: 'default' }),
typeof media === 'string' && _react2.default.createElement(
'div',
{ className: _blockStyle2.default.mediaString },
media
),
_react2.default.isValidElement(media) && media
),
_react2.default.createElement(
'div',
{ className: _blockStyle2.default.heading },
_react2.default.createElement(
'h2',
{ className: _blockStyle2.default.title },
title
),
_react2.default.createElement(
'h3',
{ className: _blockStyle2.default.subtitle },
subtitle
),
description && _react2.default.createElement(
'p',
{ className: _blockStyle2.default.description },
description
)
),
children && _react2.default.createElement(
'div',
{ className: _blockStyle2.default.children },
children
)
);
}
}
exports.default = BlockPreview;
BlockPreview.propTypes = {
title: _propTypes2.default.string,
subtitle: _propTypes2.default.string,
description: _propTypes2.default.string,
mediaDimensions: _propTypes2.default.shape({
width: _propTypes2.default.number,
height: _propTypes2.default.number,
fit: _propTypes2.default.oneOf(['clip', 'crop', 'fill', 'fillmax', 'max', 'scale', 'min']),
aspect: _propTypes2.default.number
}),
media: fieldProp,
children: _propTypes2.default.func,
type: _propTypes2.default.shape({
title: _propTypes2.default.string,
name: _propTypes2.default.string
})
};
BlockPreview.defaultProps = {
mediaDimensions: { width: 160, height: 160, aspect: 1, fit: 'crop' },
type: {
title: undefined,
name: undefined
}
};