UNPKG

strapi-plugin-content-manager

Version:

A powerful UI to easily manage your data.

79 lines (67 loc) 2.18 kB
import React, { memo } from 'react'; import styled from 'styled-components'; import PropTypes from 'prop-types'; import { LayoutIcon, CheckPermissions } from 'strapi-helper-plugin'; import { Button as Base } from '@buffetjs/core'; import { useHistory } from 'react-router-dom'; import { useIntl } from 'react-intl'; import pluginPermissions from '../../../permissions'; import pluginId from '../../../pluginId'; const StyledButton = styled(Base)` padding-left: 15px; padding-right: 15px; `; const Button = ({ isTemporary, isInContentTypeView, contentTypeKind, targetUid }) => { const { formatMessage } = useIntl(); const { push } = useHistory(); const { collectionTypesConfigurations, componentsConfigurations, singleTypesConfigurations, } = pluginPermissions; const icon = <LayoutIcon className="colored" fill={isTemporary ? '#B4B6BA' : '#007eff'} />; const label = formatMessage({ id: 'content-type-builder.form.button.configure-view' }); let permissionsToApply = collectionTypesConfigurations; const handleClick = () => { if (isTemporary) { return false; } if (isInContentTypeView) { push(`/plugins/${pluginId}/collectionType/${targetUid}/configurations/edit`); } else { push(`/plugins/${pluginId}/components/${targetUid}/configurations/edit`); } return false; }; if (isInContentTypeView && contentTypeKind === 'singleType') { permissionsToApply = singleTypesConfigurations; } if (!isInContentTypeView) { permissionsToApply = componentsConfigurations; } return ( <CheckPermissions permissions={permissionsToApply}> <StyledButton icon={icon} label={label} color="secondary" onClick={handleClick} style={{ marginTop: '2px' }} disabled={isTemporary} /> </CheckPermissions> ); }; Button.defaultProps = { contentTypeKind: 'collectionType', isInContentTypeView: true, isTemporary: false, targetUid: '', }; Button.propTypes = { contentTypeKind: PropTypes.string, isInContentTypeView: PropTypes.bool, isTemporary: PropTypes.bool, targetUid: PropTypes.string, }; export default memo(Button);