ndla-ui
Version:
UI component library for NDLA.
137 lines (118 loc) • 3.96 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
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; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _reactBemHelper = require('react-bem-helper');
var _reactBemHelper2 = _interopRequireDefault(_reactBemHelper);
var _common = require('ndla-icons/common');
var _SafeLink = require('../common/SafeLink');
var _SafeLink2 = _interopRequireDefault(_SafeLink);
var _SectionHeading = require('../SectionHeading');
var _SectionHeading2 = _interopRequireDefault(_SectionHeading);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var classes = (0, _reactBemHelper2.default)('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 _react2.default.createElement(
'section',
classes('', { center: center }),
_react2.default.createElement(
_SectionHeading2.default,
{ large: true, className: classes('heading').className },
heading
),
_react2.default.createElement(
'div',
classes('description'),
_react2.default.createElement(
'p',
null,
description
)
),
_react2.default.createElement(
'div',
classes('links'),
iconLinks && iconLinks.map(function (link) {
if (link.url) {
return _react2.default.createElement(
_SafeLink2.default,
_extends({
key: link.url
}, classes('icon-link'), {
to: link.url,
'aria-label': link.name }),
link.icon
);
}
if (link.href) {
return _react2.default.createElement(
'a',
_extends({
key: link.href,
href: link.href
}, classes('icon-link'), {
'aria-label': link.name }),
link.icon
);
}
return _react2.default.createElement(
'span',
_extends({
key: link.name
}, classes('icon-link'), {
'aria-label': link.name }),
link.icon
);
}),
mainLink.url ? _react2.default.createElement(
'div',
{ className: 'o-text-link__wrapper o-text-link__wrapper--right' },
_react2.default.createElement(
_SafeLink2.default,
{ className: 'o-text-link', to: mainLink.url },
_react2.default.createElement(
'span',
null,
mainLink.name
),
' ',
_react2.default.createElement(_common.Forward, null)
)
) : _react2.default.createElement(
'a',
_extends({}, classes('main-link'), { href: mainLink.href }),
mainLink.name
)
)
);
};
InfoWidget.propTypes = {
heading: _propTypes2.default.string.isRequired,
description: _propTypes2.default.string.isRequired,
mainLink: _propTypes2.default.shape({
name: _propTypes2.default.string.isRequired,
url: _propTypes2.default.string,
href: _propTypes2.default.string
}).isRequired,
iconLinks: _propTypes2.default.arrayOf(_propTypes2.default.shape({
name: _propTypes2.default.string.isRequired,
url: _propTypes2.default.string,
href: _propTypes2.default.string,
icon: _propTypes2.default.node.isRequired
})),
center: _propTypes2.default.bool
};
InfoWidget.defaultProps = {
center: false
};
exports.default = InfoWidget;