ndla-ui
Version:
UI component library for NDLA.
66 lines (59 loc) • 1.75 kB
JSX
/**
* 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.
*
*/
import React from 'react';
import PropTypes from 'prop-types';
import BEMHelper from 'react-bem-helper';
import { ResourceShape, ContentTypeShape } from '../shapes';
import ResourceList from './ResourceList';
import ResourcesTitle from '../ResourcesWrapper/ResourcesTitle';
const classes = new BEMHelper({
name: 'resource-group',
prefix: 'c-',
});
const ResourceGroup = ({
title,
icon,
resources,
toggleAdditionalResources,
showAdditionalResources,
resourceToLinkProps,
contentType,
}) => (
<section
{...classes('', [contentType, showAdditionalResources ? 'showall' : ''])}>
<header {...classes('header')}>
<ResourcesTitle>{title}</ResourcesTitle>
</header>
{resources.length > 0 ? (
<ResourceList
title={title}
resourceToLinkProps={resourceToLinkProps}
onClick={toggleAdditionalResources}
showAdditionalResources={showAdditionalResources}
icon={icon}
resources={resources}
/>
) : null}
</section>
);
ResourceGroup.propTypes = {
title: PropTypes.string.isRequired,
icon: PropTypes.node.isRequired,
contentType: ContentTypeShape.isRequired,
resources: PropTypes.arrayOf(ResourceShape).isRequired,
toggleAdditionalResources: PropTypes.func.isRequired,
resourceToLinkProps: PropTypes.func.isRequired,
hideResourceToggleFilter: PropTypes.bool,
empty: PropTypes.bool,
showAdditionalResources: PropTypes.bool,
};
ResourceGroup.defaultProps = {
hideResourceToggleFilter: false,
showAdditionalResources: false,
};
export default ResourceGroup;