UNPKG

@mindhive/documents

Version:

Standard document viewing, editing, listing etc

141 lines (117 loc) 4.7 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reduxForm = require('redux-form'); var _reactHotkeys = require('react-hotkeys'); var _recompose = require('recompose'); var _Overlay = require('material-ui/internal/Overlay'); var _Overlay2 = _interopRequireDefault(_Overlay); var _List = require('material-ui/List'); var _Icon = require('@mindhive/components/Icon'); var _withStore = require('@mindhive/mobx/withStore'); var _withStore2 = _interopRequireDefault(_withStore); var _EditStyles = require('./edit/EditStyles'); var _Buttons = require('./edit/Buttons'); var _Buttons2 = _interopRequireDefault(_Buttons); var _EditDomain = require('./edit/EditDomain'); var _EditDomain2 = _interopRequireDefault(_EditDomain); var _withDocEditContext = require('./withDocEditContext'); var _withDocEditContext2 = _interopRequireDefault(_withDocEditContext); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var lastFocusId = 'DOC_EDIT_LAST_FOCUS'; var DocEdit = function DocEdit(_ref) { var editDomain = _ref.editDomain, docType = _ref.docType, docIcon = _ref.docIcon, onCancel = _ref.onCancel, containerStyle = _ref.containerStyle, _ref$showIcon = _ref.showIcon, showIcon = _ref$showIcon === undefined ? false : _ref$showIcon, styles = _ref.styles, isNew = _ref.isNew, id = _ref.id, children = _ref.children, extraButtons = _ref.extraButtons, processing = _ref.processing, pristine = _ref.pristine, submitting = _ref.submitting, valid = _ref.valid, error = _ref.error, handleSubmit = _ref.handleSubmit; return _react2.default.createElement( _reactHotkeys.HotKeys, { keyMap: editDomain.keyMap, handlers: editDomain.handlers }, _react2.default.createElement(_Overlay2.default, { autoLockScrolling: false, style: styles.overlay, show: isNew || !pristine }), _react2.default.createElement( _List.ListItem, { disableTouchRipple: true, disableFocusRipple: true, ref: editDomain.registerListItem, style: Object.assign({}, styles.container, containerStyle, editDomain.show ? styles.shown : styles.hidden), id: docType + '-list-item-' + (id || 'new') + '-selector', leftIcon: showIcon ? _react2.default.createElement(_Icon.Icon, { ligature: docIcon, style: styles.icon }) : null }, error && _react2.default.createElement( 'div', { style: styles.error }, error.reason ), _react2.default.createElement( 'form', { id: docType + '-form', onSubmit: handleSubmit }, _react2.default.Children.map(children, function (child) { if (!child) { return child; } var isFirstFocus = child && child.props && child.props.autoFocus === true; var props = {}; if (isFirstFocus) { props.ref = editDomain.registerFirstFocus; if (typeof child.type !== 'string') props.withRef = isFirstFocus; } return _react2.default.cloneElement(child, props); }), _react2.default.createElement(_Buttons2.default, { props: { isNew: isNew, docType: docType, extraButtons: extraButtons, processing: processing, pristine: pristine, submitting: submitting, valid: valid }, closeTouchTap: function closeTouchTap() { return editDomain.handleClose(onCancel); }, lastFocusId: lastFocusId }) ) ) ); }; exports.default = (0, _recompose.compose)((0, _recompose.withProps)(function (_ref2) { var _ref2$document = _ref2.document, document = _ref2$document === undefined ? {} : _ref2$document, _ref2$docType = _ref2.docType, docType = _ref2$docType === undefined ? 'doc' : _ref2$docType, _ref2$id = _ref2.id, id = _ref2$id === undefined ? document._id : _ref2$id; return { document: document, docType: docType, isNew: !document._id, id: id, initialValues: document, form: docType + '-form-' + (id || 'new') }; }), (0, _reduxForm.reduxForm)(), (0, _withStore2.default)({ storeClass: _EditDomain2.default, propName: 'editDomain' }), (0, _recompose.lifecycle)({ componentDidMount: function componentDidMount() { this.props.editDomain.componentDidMount(); }, componentWillUnmount: function componentWillUnmount() { this.props.editDomain.componentWillUnmount(); } }), _withDocEditContext2.default, _EditStyles.injectStylesSheet)(DocEdit);