focus-components-v3
Version:
Focus web components to build applications (based on Material Design)
167 lines (132 loc) • 15.7 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _i18next = require('i18next');
var _i18next2 = _interopRequireDefault(_i18next);
var _includes = require('lodash/includes');
var _includes2 = _interopRequireDefault(_includes);
var _uniqueId = require('lodash/uniqueId');
var _uniqueId2 = _interopRequireDefault(_uniqueId);
var _omit = require('lodash/omit');
var _omit2 = _interopRequireDefault(_omit);
var _snakeCase = require('lodash/snakeCase');
var _snakeCase2 = _interopRequireDefault(_snakeCase);
var _buttonHelp = require('../button-help');
var _buttonHelp2 = _interopRequireDefault(_buttonHelp);
var _editSaveButtons = require('./edit-save-buttons');
var _editSaveButtons2 = _interopRequireDefault(_editSaveButtons);
var _mdlProgress = require('../spinner/mdl-progress');
var _mdlProgress2 = _interopRequireDefault(_mdlProgress);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }
/**
* Panel.
*/
var Panel = function (_PureComponent) {
_inherits(Panel, _PureComponent);
function Panel(props) {
_classCallCheck(this, Panel);
var _this = _possibleConstructorReturn(this, _PureComponent.call(this, props));
_this.spyId = (0, _uniqueId2.default)('panel_');
return _this;
}
/**
* Render the a block container and the cild content of the block.
* @return {DOM} React DOM element
*/
Panel.prototype.render = function render() {
var _props = this.props,
blockName = _props.blockName,
Buttons = _props.Buttons,
buttonsPosition = _props.buttonsPosition,
children = _props.children,
loading = _props.loading,
saving = _props.saving,
Spinner = _props.Spinner,
title = _props.title,
showHelp = _props.showHelp,
editing = _props.editing,
toggleEdit = _props.toggleEdit,
getUserInput = _props.getUserInput,
save = _props.save,
hideOnScrollspy = _props.hideOnScrollspy;
var shouldDisplayActionsTop = Buttons && (0, _includes2.default)(['both', 'top'], buttonsPosition);
var shouldDisplayActionsBottom = Buttons && (0, _includes2.default)(['both', 'bottom'], buttonsPosition);
var displaySpinner = Spinner && (loading || saving);
var panelDivProps = { className: 'mdl-card mdl-card--border mdl-shadow--4dp', 'data-spy': this.spyId, 'data-focus': 'panel', 'data-loading': loading, 'data-saving': saving, 'data-editing': editing };
var divProps = !hideOnScrollspy ? (0, _omit2.default)(panelDivProps, ['data-spy']) : panelDivProps;
return _react2.default.createElement(
'div',
divProps,
displaySpinner && _react2.default.createElement(Spinner, null),
_react2.default.createElement(
'div',
{ className: 'mdl-card__title mdl-card--border', 'data-focus': 'panel-title' },
title && _react2.default.createElement(
'h3',
{ 'data-spy-title': true },
_i18next2.default.t(title)
),
shouldDisplayActionsTop && _react2.default.createElement(
'div',
{ className: 'buttons' },
_react2.default.createElement(Buttons, { saving: saving, editing: editing, toggleEdit: toggleEdit, getUserInput: getUserInput, save: save })
),
showHelp && _react2.default.createElement(_buttonHelp2.default, { blockName: blockName || (0, _snakeCase2.default)(_i18next2.default.t(title)).split('_')[0] })
),
_react2.default.createElement(
'div',
{ className: 'mdl-card__supporting-text', 'data-focus': 'panel-content' },
children
),
shouldDisplayActionsBottom && _react2.default.createElement(
'div',
{ className: 'mdl-card__actions mdl-card--border', 'data-focus': 'panel-actions' },
_react2.default.createElement(
'div',
{ className: 'buttons' },
_react2.default.createElement(Buttons, { saving: saving, editing: editing, toggleEdit: toggleEdit, getUserInput: getUserInput, save: save })
)
)
);
};
return Panel;
}(_react.PureComponent);
Panel.displayName = 'Panel';
Panel.defaultProps = {
Buttons: _editSaveButtons2.default,
buttonsPosition: 'top',
editing: false,
hideOnScrollspy: true,
save: function save() {
return alert('please define a save action');
},
showHelp: false,
Spinner: _mdlProgress2.default,
toggleEdit: function toggleEdit() {
return alert('please define a toggleEdit action');
}
};
Panel.propTypes = {
blockName: _react.PropTypes.string,
Buttons: _react.PropTypes.func,
buttonsPosition: _react.PropTypes.oneOf(['both', 'bottom', 'top']).isRequired,
editing: _react.PropTypes.bool,
getUserInput: _react.PropTypes.func,
hideOnScrollspy: _react.PropTypes.bool,
save: _react.PropTypes.func,
showHelp: _react.PropTypes.bool,
saving: _react.PropTypes.bool,
Spinner: _react.PropTypes.func,
title: _react.PropTypes.string,
toggleEdit: _react.PropTypes.func
};
exports.default = Panel;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZyLUZSLmpzIl0sIm5hbWVzIjpbIlBhbmVsIiwicHJvcHMiLCJzcHlJZCIsInJlbmRlciIsImJsb2NrTmFtZSIsIkJ1dHRvbnMiLCJidXR0b25zUG9zaXRpb24iLCJjaGlsZHJlbiIsImxvYWRpbmciLCJzYXZpbmciLCJTcGlubmVyIiwidGl0bGUiLCJzaG93SGVscCIsImVkaXRpbmciLCJ0b2dnbGVFZGl0IiwiZ2V0VXNlcklucHV0Iiwic2F2ZSIsImhpZGVPblNjcm9sbHNweSIsInNob3VsZERpc3BsYXlBY3Rpb25zVG9wIiwic2hvdWxkRGlzcGxheUFjdGlvbnNCb3R0b20iLCJkaXNwbGF5U3Bpbm5lciIsInBhbmVsRGl2UHJvcHMiLCJjbGFzc05hbWUiLCJkaXZQcm9wcyIsInQiLCJzcGxpdCIsImRpc3BsYXlOYW1lIiwiZGVmYXVsdFByb3BzIiwiYWxlcnQiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJmdW5jIiwib25lT2YiLCJpc1JlcXVpcmVkIiwiYm9vbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBRUE7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7Ozs7Ozs7OztBQUdBOzs7SUFHTUEsSztjQUFBQSxLOztBQUNGLGFBREVBLEtBQ0YsQ0FBWUMsS0FBWixFQUFtQjtBQUFBLDhCQURqQkQsS0FDaUI7O0FBQUEscURBQ2YsMEJBQU1DLEtBQU4sQ0FEZTs7QUFFZixjQUFLQyxLQUFMLEdBQWEsd0JBQVMsUUFBVCxDQUFiO0FBRmU7QUFHbEI7O0FBRUQ7Ozs7OztBQU5FRixTLFdBVUZHLE0scUJBQVM7QUFBQSxxQkFDd0osS0FBS0YsS0FEN0o7QUFBQSxZQUNFRyxTQURGLFVBQ0VBLFNBREY7QUFBQSxZQUNhQyxPQURiLFVBQ2FBLE9BRGI7QUFBQSxZQUNzQkMsZUFEdEIsVUFDc0JBLGVBRHRCO0FBQUEsWUFDdUNDLFFBRHZDLFVBQ3VDQSxRQUR2QztBQUFBLFlBQ2lEQyxPQURq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VTBCLElBRkw7QUFHZHpCLHFCQUFpQixpQkFBVTBCLEtBQVYsQ0FBZ0IsQ0FBQyxNQUFELEVBQVMsUUFBVCxFQUFtQixLQUFuQixDQUFoQixFQUEyQ0MsVUFIOUM7QUFJZHBCLGFBQVMsaUJBQVVxQixJQUpMO0FBS2RuQixrQkFBYyxpQkFBVWdCLElBTFY7QUFNZGQscUJBQWlCLGlCQUFVaUIsSUFOYjtBQU9kbEIsVUFBTSxpQkFBVWUsSUFQRjtBQVFkbkIsY0FBVSxpQkFBVXNCLElBUk47QUFTZHpCLFlBQVEsaUJBQVV5QixJQVRKO0FBVWR4QixhQUFTLGlCQUFVcUIsSUFWTDtBQVdkcEIsV0FBTyxpQkFBVW1CLE1BWEg7QUFZZGhCLGdCQUFZLGlCQUFVaUI7QUFaUixDQUFsQjtrQkFjZS9CLEsiLCJmaWxlIjoiZnItRlIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtQcm9wVHlwZXMsIFB1cmVDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IGkxOG5leHQgZnJvbSAnaTE4bmV4dCc7XHJcbmltcG9ydCBpbmNsdWRlcyBmcm9tICdsb2Rhc2gvaW5jbHVkZXMnO1xyXG5pbXBvcnQgdW5pcXVlSWQgZnJvbSAnbG9kYXNoL3VuaXF1ZUlkJztcclxuaW1wb3J0IG9taXQgZnJvbSAnbG9kYXNoL29taXQnO1xyXG5pbXBvcnQgc25ha2VDYXNlIGZyb20gJ2xvZGFzaC9zbmFrZUNhc2UnO1xyXG5cclxuaW1wb3J0IEJ1dHRvbkhlbHAgZnJvbSAnLi4vYnV0dG9uLWhlbHAnO1xyXG5pbXBvcnQgQnV0dG9ucyBmcm9tICcuL2VkaXQtc2F2ZS1idXR0b25zJztcclxuaW1wb3J0IE1kbFByb2dyZXNzIGZyb20gJy4uL3NwaW5uZXIvbWRsLXByb2dyZXNzJztcclxuXHJcblxyXG4vKipcclxuKiBQYW5lbC5cclxuKi9cclxuY2xhc3MgUGFuZWwgZXh0ZW5kcyBQdXJlQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIHRoaXMuc3B5SWQgPSB1bmlxdWVJZCgncGFuZWxfJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFJlbmRlciB0aGUgYSBibG9jayBjb250YWluZXIgYW5kIHRoZSBjaWxkIGNvbnRlbnQgb2YgdGhlIGJsb2NrLlxyXG4gICAgKiBAcmV0dXJuIHtET019IFJlYWN0IERPTSBlbGVtZW50XHJcbiAgICAqL1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHtibG9ja05hbWUsIEJ1dHRvbnMsIGJ1dHRvbnNQb3NpdGlvbiwgY2hpbGRyZW4sIGxvYWRpbmcsIHNhdmluZywgU3Bpbm5lciwgdGl0bGUsIHNob3dIZWxwLCBlZGl0aW5nLCB0b2dnbGVFZGl0LCBnZXRVc2VySW5wdXQsIHNhdmUsIGhpZGVPblNjcm9sbHNweX0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgIGNvbnN0IHNob3VsZERpc3BsYXlBY3Rpb25zVG9wID0gQnV0dG9ucyAmJiBpbmNsdWRlcyhbJ2JvdGgnLCAndG9wJ10sIGJ1dHRvbnNQb3NpdGlvbik7XHJcbiAgICAgICAgY29uc3Qgc2hvdWxkRGlzcGxheUFjdGlvbnNCb3R0b20gPSBCdXR0b25zICYmIGluY2x1ZGVzKFsnYm90aCcsICdib3R0b20nXSwgYnV0dG9uc1Bvc2l0aW9uKTtcclxuICAgICAgICBjb25zdCBkaXNwbGF5U3Bpbm5lciA9IFNwaW5uZXIgJiYgKGxvYWRpbmcgfHwgc2F2aW5nKTtcclxuICAgICAgICBjb25zdCBwYW5lbERpdlByb3BzID0ge2NsYXNzTmFtZTogJ21kbC1jYXJkIG1kbC1jYXJkLS1ib3JkZXIgbWRsLXNoYWRvdy0tNGRwJywgJ2RhdGEtc3B5JzogdGhpcy5zcHlJZCwgJ2RhdGEtZm9jdXMnOiAncGFuZWwnLCAnZGF0YS1sb2FkaW5nJzogbG9hZGluZywgJ2RhdGEtc2F2aW5nJzogc2F2aW5nLCAnZGF0YS1lZGl0aW5nJzogZWRpdGluZ307XHJcbiAgICAgICAgY29uc3QgZGl2UHJvcHMgPSAhaGlkZU9uU2Nyb2xsc3B5ID8gb21pdChwYW5lbERpdlByb3BzLCBbJ2RhdGEtc3B5J10pIDogcGFuZWxEaXZQcm9wcztcclxuXHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiB7Li4uZGl2UHJvcHN9PlxyXG4gICAgICAgICAgICAgICAge2Rpc3BsYXlTcGlubmVyICYmIDxTcGlubmVyIC8+fVxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J21kbC1jYXJkX190aXRsZSBtZGwtY2FyZC0tYm9yZGVyJyBkYXRhLWZvY3VzPSdwYW5lbC10aXRsZSc+XHJcbiAgICAgICAgICAgICAgICAgICAge3RpdGxlICYmIDxoMyBkYXRhLXNweS10aXRsZT57aTE4bmV4dC50KHRpdGxlKX08L2gzPn1cclxuICAgICAgICAgICAgICAgICAgICB7c2hvdWxkRGlzcGxheUFjdGlvbnNUb3AgJiYgPGRpdiBjbGFzc05hbWU9J2J1dHRvbnMnPjxCdXR0b25zIHNhdmluZz17c2F2aW5nfSBlZGl0aW5nPXtlZGl0aW5nfSB0b2dnbGVFZGl0PXt0b2dnbGVFZGl0fSBnZXRVc2VySW5wdXQ9e2dldFVzZXJJbnB1dH0gc2F2ZT17c2F2ZX0vPjwvZGl2Pn1cclxuICAgICAgICAgICAgICAgICAgICB7c2hvd0hlbHAgJiYgPEJ1dHRvbkhlbHAgYmxvY2tOYW1lPXtibG9ja05hbWUgfHwgc25ha2VDYXNlKGkxOG5leHQudCh0aXRsZSkpLnNwbGl0KCdfJylbMF19IC8+fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWRsLWNhcmRfX3N1cHBvcnRpbmctdGV4dCcgZGF0YS1mb2N1cz0ncGFuZWwtY29udGVudCc+XHJcbiAgICAgICAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB7c2hvdWxkRGlzcGxheUFjdGlvbnNCb3R0b20gJiZcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWRsLWNhcmRfX2FjdGlvbnMgbWRsLWNhcmQtLWJvcmRlcicgZGF0YS1mb2N1cz0ncGFuZWwtYWN0aW9ucyc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdidXR0b25zJz48QnV0dG9ucyBzYXZpbmc9e3NhdmluZ30gZWRpdGluZz17ZWRpdGluZ30gdG9nZ2xlRWRpdD17dG9nZ2xlRWRpdH0gZ2V0VXNlcklucHV0PXtnZXRVc2VySW5wdXR9IHNhdmU9e3NhdmV9Lz48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG5QYW5lbC5kaXNwbGF5TmFtZSA9ICdQYW5lbCc7XHJcblBhbmVsLmRlZmF1bHRQcm9wcyA9IHtcclxuICAgIEJ1dHRvbnM6IEJ1dHRvbnMsXHJcbiAgICBidXR0b25zUG9zaXRpb246ICd0b3AnLFxyXG4gICAgZWRpdGluZzogZmFsc2UsXHJcbiAgICBoaWRlT25TY3JvbGxzcHk6IHRydWUsXHJcbiAgICBzYXZlOiAoKSA9PiBhbGVydCgncGxlYXNlIGRlZmluZSBhIHNhdmUgYWN0aW9uJyksXHJcbiAgICBzaG93SGVscDogZmFsc2UsXHJcbiAgICBTcGlubmVyOiBNZGxQcm9ncmVzcyxcclxuICAgIHRvZ2dsZUVkaXQ6ICgpID0+IGFsZXJ0KCdwbGVhc2UgZGVmaW5lIGEgdG9nZ2xlRWRpdCBhY3Rpb24nKVxyXG59O1xyXG5QYW5lbC5wcm9wVHlwZXMgPSB7XHJcbiAgICBibG9ja05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXHJcbiAgICBCdXR0b25zOiBQcm9wVHlwZXMuZnVuYyxcclxuICAgIGJ1dHRvbnNQb3NpdGlvbjogUHJvcFR5cGVzLm9uZU9mKFsnYm90aCcsICdib3R0b20nLCAndG9wJ10pLmlzUmVxdWlyZWQsXHJcbiAgICBlZGl0aW5nOiBQcm9wVHlwZXMuYm9vbCxcclxuICAgIGdldFVzZXJJbnB1dDogUHJvcFR5cGVzLmZ1bmMsXHJcbiAgICBoaWRlT25TY3JvbGxzcHk6IFByb3BUeXBlcy5ib29sLFxyXG4gICAgc2F2ZTogUHJvcFR5cGVzLmZ1bmMsXHJcbiAgICBzaG93SGVscDogUHJvcFR5cGVzLmJvb2wsXHJcbiAgICBzYXZpbmc6IFByb3BUeXBlcy5ib29sLFxyXG4gICAgU3Bpbm5lcjogUHJvcFR5cGVzLmZ1bmMsXHJcbiAgICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcclxuICAgIHRvZ2dsZUVkaXQ6IFByb3BUeXBlcy5mdW5jXHJcbn07XHJcbmV4cG9ydCBkZWZhdWx0IFBhbmVsO1xyXG4iXX0=