2019-07-23 17:37:07 +02:00
|
|
|
import React, { memo, useState } from 'react';
|
|
|
|
import { FormattedMessage } from 'react-intl';
|
|
|
|
import PropTypes from 'prop-types';
|
2019-12-06 18:27:07 +01:00
|
|
|
import { Plus } from '@buffetjs/icons';
|
2019-07-23 17:37:07 +02:00
|
|
|
import {
|
|
|
|
ButtonDropdown,
|
|
|
|
DropdownToggle,
|
|
|
|
DropdownMenu,
|
|
|
|
DropdownItem,
|
|
|
|
} from 'reactstrap';
|
2019-12-12 12:27:10 +01:00
|
|
|
import getTrad from '../../utils/getTrad';
|
2019-07-23 17:37:07 +02:00
|
|
|
import { Wrapper } from './components';
|
|
|
|
|
2019-12-12 12:27:10 +01:00
|
|
|
function Add({ data, isRelation, onClick, pStyle, style }) {
|
2019-08-01 16:33:51 +02:00
|
|
|
const [isOpen, setIsOpen] = useState(false);
|
2019-07-23 17:37:07 +02:00
|
|
|
|
|
|
|
return (
|
2019-08-01 16:33:51 +02:00
|
|
|
<Wrapper isOpen={isOpen} notAllowed={data.length === 0} style={style}>
|
2019-07-23 17:37:07 +02:00
|
|
|
<ButtonDropdown
|
2019-08-01 16:33:51 +02:00
|
|
|
isOpen={isOpen}
|
2019-07-23 17:37:07 +02:00
|
|
|
toggle={() => {
|
|
|
|
if (data.length > 0) {
|
2019-08-01 16:33:51 +02:00
|
|
|
setIsOpen(prevState => !prevState);
|
2019-07-23 17:37:07 +02:00
|
|
|
}
|
|
|
|
}}
|
|
|
|
>
|
|
|
|
<DropdownToggle>
|
2019-12-12 12:27:10 +01:00
|
|
|
<FormattedMessage
|
|
|
|
id={getTrad(
|
|
|
|
`containers.SettingPage.${
|
|
|
|
isRelation ? 'add.relational-field' : 'add.field'
|
|
|
|
}`
|
|
|
|
)}
|
|
|
|
>
|
2019-07-23 17:37:07 +02:00
|
|
|
{msg => (
|
|
|
|
<p style={pStyle}>
|
2019-12-10 14:26:12 +01:00
|
|
|
<Plus fill="#007eff" height="11px" width="11px" />
|
2019-07-23 17:37:07 +02:00
|
|
|
{msg}
|
|
|
|
</p>
|
|
|
|
)}
|
|
|
|
</FormattedMessage>
|
|
|
|
</DropdownToggle>
|
|
|
|
<DropdownMenu>
|
|
|
|
{data.map(item => (
|
|
|
|
<DropdownItem
|
|
|
|
key={item}
|
|
|
|
onClick={() => {
|
|
|
|
onClick(item);
|
|
|
|
}}
|
|
|
|
>
|
|
|
|
{item}
|
|
|
|
</DropdownItem>
|
|
|
|
))}
|
|
|
|
</DropdownMenu>
|
|
|
|
</ButtonDropdown>
|
|
|
|
</Wrapper>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
Add.defaultProps = {
|
|
|
|
data: [],
|
2019-12-12 12:27:10 +01:00
|
|
|
isRelation: false,
|
2019-07-23 17:37:07 +02:00
|
|
|
onClick: () => {},
|
|
|
|
pStyle: {},
|
|
|
|
style: {},
|
|
|
|
};
|
|
|
|
|
|
|
|
Add.propTypes = {
|
|
|
|
data: PropTypes.array,
|
2019-12-12 12:27:10 +01:00
|
|
|
isRelation: PropTypes.bool,
|
2019-07-23 17:37:07 +02:00
|
|
|
onClick: PropTypes.func,
|
|
|
|
pStyle: PropTypes.object,
|
|
|
|
style: PropTypes.object,
|
|
|
|
};
|
|
|
|
|
|
|
|
export default memo(Add);
|