UNPKG

ndla-ui

Version:

UI component library for NDLA.

174 lines (149 loc) 7.35 kB
'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; }; /** * Copyright (c) 2017-present, NDLA. * * This source code is licensed under the GPLv3 license found in the * LICENSE file in the root directory of this source tree. * */ 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 _ndlaUi = require('ndla-ui'); var _ndlaI18n = require('ndla-i18n'); var _common = require('ndla-icons/common'); var _shapes = require('../shapes'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } var classes = new _reactBemHelper2.default({ name: 'topic-resource', prefix: 'c-' }); var Resource = function Resource(_ref) { var resource = _ref.resource, icon = _ref.icon, resourceToLinkProps = _ref.resourceToLinkProps, showAdditionalResources = _ref.showAdditionalResources, id = _ref.id, contentTypeDescription = _ref.contentTypeDescription; var hidden = resource.additional ? !showAdditionalResources : false; return _react2.default.createElement( 'li', classes('item', { hidden: hidden, additional: resource.additional }), _react2.default.createElement( 'div', classes('body o-flag__body'), _react2.default.createElement( _ndlaUi.SafeLink, _extends({}, resourceToLinkProps(resource), classes('link o-flag o-flag--top'), { 'aria-describedby': id }), _react2.default.createElement( 'div', classes('icon o-flag__img'), icon ), _react2.default.createElement( 'h1', classes('title'), _react2.default.createElement( 'span', null, resource.name ) ) ), _react2.default.createElement( 'span', { id: id, hidden: true }, contentTypeDescription ), _react2.default.createElement( 'div', null, resource.additional && _react2.default.createElement( _ndlaUi.Tooltip, { tooltip: contentTypeDescription, align: 'left' }, _react2.default.createElement(_common.Additional, { className: 'c-icon--20 u-margin-left-tiny c-topic-resource__list__additional-icons' }) ), !resource.additional && showAdditionalResources && _react2.default.createElement( _ndlaUi.Tooltip, { tooltip: contentTypeDescription, align: 'left' }, _react2.default.createElement(_common.Core, { className: 'c-icon--20 u-margin-left-tiny c-topic-resource__list__additional-icons' }) ) ) ) ); }; Resource.propTypes = { showAdditionalResources: _propTypes2.default.bool, icon: _propTypes2.default.node.isRequired, resource: _shapes.ResourceShape.isRequired, resourceToLinkProps: _propTypes2.default.func.isRequired, id: _propTypes2.default.string.isRequired, contentTypeDescription: _propTypes2.default.string.isRequired }; (0, _ndlaI18n.injectT)(Resource); var ResourceList = function ResourceList(_ref2) { var resources = _ref2.resources, onClick = _ref2.onClick, type = _ref2.type, title = _ref2.title, showAdditionalResources = _ref2.showAdditionalResources, t = _ref2.t, rest = _objectWithoutProperties(_ref2, ['resources', 'onClick', 'type', 'title', 'showAdditionalResources', 't']); var renderAdditionalResourceTrigger = !showAdditionalResources && resources.filter(function (res) { return res.additional; }).length > 0 && resources.filter(function (res) { return !res.additional; }).length === 0; return _react2.default.createElement( 'div', null, _react2.default.createElement( 'ul', classes('list'), resources.map(function (resource, index) { return _react2.default.createElement(Resource, _extends({ key: resource.id, type: type, showAdditionalResources: showAdditionalResources }, rest, { resource: resource, contentTypeDescription: resource.additional ? t('resource.tooltipAdditionalTopic') : t('resource.tooltipCoreTopic'), id: resource.id + '_' + index })); }), renderAdditionalResourceTrigger && _react2.default.createElement( 'li', null, _react2.default.createElement(_ndlaUi.NoContentBox, { onClick: onClick, buttonText: t('resource.toggleFilterLabel'), text: t('resource.noCoreResourcesAvailable', { name: title.toLowerCase() }) }) ) ) ); }; ResourceList.propTypes = { resources: _propTypes2.default.arrayOf(_shapes.ResourceShape).isRequired, type: _propTypes2.default.string, showAdditionalResources: _propTypes2.default.bool, onChange: _propTypes2.default.func, resourceToLinkProps: _propTypes2.default.func.isRequired, onClick: _propTypes2.default.func.isRequired, title: _propTypes2.default.string.isRequired, t: _propTypes2.default.func.isRequired }; exports.default = (0, _ndlaI18n.injectT)(ResourceList);