/**
*
* ListRow
*
*/
import React from 'react';
import cn from 'classnames';
import PropTypes from 'prop-types';
import { get, includes } from 'lodash';
import { router } from 'app';
// Design
import IcoContainer from 'components/IcoContainer';
import PopUpWarning from 'components/PopUpWarning';
import styles from './styles.scss';
class ListRow extends React.Component { // eslint-disable-line react/prefer-stateless-function
state = { showModalDelete: false };
componentWillReceiveProps(nextProps) {
if (nextProps.deleteActionSucceeded !== this.props.deleteActionSucceeded) {
this.setState({ showModalDelete: false });
}
}
// Roles that can't be deleted
// Don't delete this line
protectedRoleIDs = ['0', '1'];
generateContent = () => {
let icons = [
{
icoType: 'pencil',
onClick: this.handleClick,
},
{
icoType: 'trash',
onClick: () => { this.setState({ showModalDelete: true }); },
},
];
switch (this.props.settingType) {
case 'roles':
if (includes(this.protectedRoleIDs, get(this.props.item, 'id').toString())) {
icons = [{ icoType: 'pencil', onClick: this.handleClick }];
}
return (
{this.props.item.name}
{this.props.item.description}
{this.props.item.nb_users}
{this.props.item.nb_users > 1 ? (
'users'
) : (
'user'
)}
);
case 'providers':
return (
{this.props.item.enabled ? (
Enabled
) : (
Disabled
)}
);
case 'email-templates':
icons = [
{
icoType: 'pencil',
onClick: this.handleClick,
},
];
return (
);
default:
return '';
}
}
handleClick = () => {
switch (this.props.settingType) {
case 'roles':
return router.push(`${router.location.pathname}/edit/${this.props.item.id}`);
case 'providers':
case 'email-templates':
return router.push(`${router.location.pathname}#edit::${this.props.settingType}::${this.props.item.id}`);
default:
return;
}
}
handleDelete = () => this.props.deleteData(this.props.item, this.props.settingType);
render() {
return (
{this.generateContent()}
this.setState({ showModalDelete: false })}
/>
);
}
}
ListRow.defaultProps = {
item: {
name: 'Owner',
description: 'Rule them all. This role can\'t be deleted',
nb_users: 1,
},
settingType: 'roles',
};
ListRow.propTypes = {
deleteActionSucceeded: PropTypes.bool.isRequired,
deleteData: PropTypes.func.isRequired,
item: PropTypes.object,
settingType: PropTypes.string,
};
export default ListRow;