admin-on-rest-fr05t1k
Version:
A frontend Framework for building admin applications on top of REST services, using ES6, React and Material UI
218 lines (171 loc) • 7.87 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactRedux = require('react-redux');
var _Card = require('material-ui/Card');
var _Toolbar = require('material-ui/Toolbar');
var _RaisedButton = require('material-ui/RaisedButton');
var _RaisedButton2 = _interopRequireDefault(_RaisedButton);
var _checkCircle = require('material-ui/svg-icons/action/check-circle');
var _checkCircle2 = _interopRequireDefault(_checkCircle);
var _errorOutline = require('material-ui/svg-icons/alert/error-outline');
var _errorOutline2 = _interopRequireDefault(_errorOutline);
var _compose = require('recompose/compose');
var _compose2 = _interopRequireDefault(_compose);
var _inflection = require('inflection');
var _inflection2 = _interopRequireDefault(_inflection);
var _ViewTitle = require('../layout/ViewTitle');
var _ViewTitle2 = _interopRequireDefault(_ViewTitle);
var _Title = require('../layout/Title');
var _Title2 = _interopRequireDefault(_Title);
var _button = require('../button');
var _dataActions = require('../../actions/dataActions');
var _translate = require('../../i18n/translate');
var _translate2 = _interopRequireDefault(_translate);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var styles = {
actions: { zIndex: 2, display: 'inline-block', float: 'right' },
toolbar: { clear: 'both' },
button: { margin: '10px 24px', position: 'relative' }
};
var Delete = function (_Component) {
(0, _inherits3.default)(Delete, _Component);
function Delete(props) {
(0, _classCallCheck3.default)(this, Delete);
var _this = (0, _possibleConstructorReturn3.default)(this, (Delete.__proto__ || Object.getPrototypeOf(Delete)).call(this, props));
_this.handleSubmit = _this.handleSubmit.bind(_this);
_this.goBack = _this.goBack.bind(_this);
return _this;
}
(0, _createClass3.default)(Delete, [{
key: 'componentDidMount',
value: function componentDidMount() {
this.props.crudGetOne(this.props.resource, this.props.id, this.getBasePath());
}
}, {
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
if (this.props.id !== nextProps.id) {
this.props.crudGetOne(nextProps.resource, nextProps.id, this.getBasePath());
}
}
}, {
key: 'getBasePath',
value: function getBasePath() {
var location = this.props.location;
return location.pathname.split('/').slice(0, -2).join('/');
}
}, {
key: 'handleSubmit',
value: function handleSubmit(event) {
event.preventDefault();
this.props.crudDelete(this.props.resource, this.props.id, this.getBasePath());
}
}, {
key: 'goBack',
value: function goBack() {
this.props.history.goBack();
}
}, {
key: 'render',
value: function render() {
var _props = this.props,
title = _props.title,
id = _props.id,
data = _props.data,
isLoading = _props.isLoading,
resource = _props.resource,
translate = _props.translate;
var basePath = this.getBasePath();
var resourceName = translate('resources.' + resource + '.name', {
smart_count: 1,
_: _inflection2.default.humanize(_inflection2.default.singularize(resource))
});
var defaultTitle = translate('aor.page.delete', {
name: '' + resourceName,
id: id,
data: data
});
var titleElement = data ? _react2.default.createElement(_Title2.default, { title: title, record: data, defaultTitle: defaultTitle }) : '';
return _react2.default.createElement(
'div',
null,
_react2.default.createElement(
_Card.Card,
{ style: { opacity: isLoading ? .8 : 1 } },
_react2.default.createElement(
_Card.CardActions,
{ style: styles.actions },
_react2.default.createElement(_button.ListButton, { basePath: basePath })
),
_react2.default.createElement(_ViewTitle2.default, { title: titleElement }),
_react2.default.createElement(
'form',
{ onSubmit: this.handleSubmit },
_react2.default.createElement(
_Card.CardText,
null,
translate('aor.message.are_you_sure')
),
_react2.default.createElement(
_Toolbar.Toolbar,
{ style: styles.toolbar },
_react2.default.createElement(
_Toolbar.ToolbarGroup,
null,
_react2.default.createElement(_RaisedButton2.default, {
type: 'submit',
label: translate('aor.action.delete'),
icon: _react2.default.createElement(_checkCircle2.default, null),
primary: true,
style: styles.button
}),
_react2.default.createElement(_RaisedButton2.default, {
label: translate('aor.action.cancel'),
icon: _react2.default.createElement(_errorOutline2.default, null),
onClick: this.goBack,
style: styles.button
})
)
)
)
)
);
}
}]);
return Delete;
}(_react.Component);
Delete.propTypes = {
title: _react.PropTypes.any,
id: _react.PropTypes.string.isRequired,
resource: _react.PropTypes.string.isRequired,
location: _react.PropTypes.object.isRequired,
match: _react.PropTypes.object.isRequired,
history: _react.PropTypes.object.isRequired,
data: _react.PropTypes.object,
isLoading: _react.PropTypes.bool.isRequired,
crudGetOne: _react.PropTypes.func.isRequired,
crudDelete: _react.PropTypes.func.isRequired,
translate: _react.PropTypes.func.isRequired
};
function mapStateToProps(state, props) {
return {
id: props.match.params.id,
data: state.admin[props.resource].data[props.match.params.id],
isLoading: state.admin.loading > 0
};
}
var enhance = (0, _compose2.default)((0, _reactRedux.connect)(mapStateToProps, { crudGetOne: _dataActions.crudGetOne, crudDelete: _dataActions.crudDelete }), _translate2.default);
exports.default = enhance(Delete);
module.exports = exports['default'];