ndla-ui
Version:
UI component library for NDLA.
116 lines (108 loc) • 3.15 kB
JavaScript
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
import React from 'react';
import PropTypes from 'prop-types';
import BEMHelper from 'react-bem-helper';
import { Forward } from 'ndla-icons/common';
import SafeLink from '../common/SafeLink';
import SectionHeading from '../SectionHeading';
var classes = BEMHelper('c-info-widget');
var InfoWidget = function InfoWidget(_ref) {
var heading = _ref.heading,
description = _ref.description,
mainLink = _ref.mainLink,
iconLinks = _ref.iconLinks,
center = _ref.center;
return React.createElement(
'section',
classes('', { center: center }),
React.createElement(
SectionHeading,
{ large: true, className: classes('heading').className },
heading
),
React.createElement(
'div',
classes('description'),
React.createElement(
'p',
null,
description
)
),
React.createElement(
'div',
classes('links'),
iconLinks && iconLinks.map(function (link) {
if (link.url) {
return React.createElement(
SafeLink,
_extends({
key: link.url
}, classes('icon-link'), {
to: link.url,
'aria-label': link.name }),
link.icon
);
}
if (link.href) {
return React.createElement(
'a',
_extends({
key: link.href,
href: link.href
}, classes('icon-link'), {
'aria-label': link.name }),
link.icon
);
}
return React.createElement(
'span',
_extends({
key: link.name
}, classes('icon-link'), {
'aria-label': link.name }),
link.icon
);
}),
mainLink.url ? React.createElement(
'div',
{ className: 'o-text-link__wrapper o-text-link__wrapper--right' },
React.createElement(
SafeLink,
{ className: 'o-text-link', to: mainLink.url },
React.createElement(
'span',
null,
mainLink.name
),
' ',
React.createElement(Forward, null)
)
) : React.createElement(
'a',
_extends({}, classes('main-link'), { href: mainLink.href }),
mainLink.name
)
)
);
};
InfoWidget.propTypes = {
heading: PropTypes.string.isRequired,
description: PropTypes.string.isRequired,
mainLink: PropTypes.shape({
name: PropTypes.string.isRequired,
url: PropTypes.string,
href: PropTypes.string
}).isRequired,
iconLinks: PropTypes.arrayOf(PropTypes.shape({
name: PropTypes.string.isRequired,
url: PropTypes.string,
href: PropTypes.string,
icon: PropTypes.node.isRequired
})),
center: PropTypes.bool
};
InfoWidget.defaultProps = {
center: false
};
export default InfoWidget;