UNPKG

@bpanel/settings

Version:

A settings panel for bPanel. Uses widget areas to allow other plugins to hook in and add their own settings pane.

129 lines (105 loc) 4.13 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); 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 _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _bpanelUi = require('@bpanel/bpanel-ui'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var SettingsDashboard = function (_PureComponent) { (0, _inherits3.default)(SettingsDashboard, _PureComponent); function SettingsDashboard(props) { (0, _classCallCheck3.default)(this, SettingsDashboard); var _this = (0, _possibleConstructorReturn3.default)(this, (SettingsDashboard.__proto__ || (0, _getPrototypeOf2.default)(SettingsDashboard)).call(this, props)); _this.state = { hasError: false }; return _this; } (0, _createClass3.default)(SettingsDashboard, [{ key: 'componentDidCatch', value: function componentDidCatch(error, errorInfo) { this.setState({ hasError: true }); // eslint-disable-next-line no-console throw new Error('Plugins decorating ' + this.displayName + ' has been disabled because of a plugin crash.', error, errorInfo); } }, { key: 'render', value: function render() { var _props$settingsTabs = this.props.settingsTabs, settingsTabs = _props$settingsTabs === undefined ? [] : _props$settingsTabs; if (this.state.hasError) return _react2.default.createElement( _bpanelUi.Text, { type: 'p' }, 'There was a widget error' ); var hasWidgets = settingsTabs.length; return _react2.default.createElement( 'div', { className: 'dashboard-container container' }, _react2.default.createElement( _bpanelUi.Header, { type: 'h2' }, 'Settings Dashboard' ), _react2.default.createElement( _bpanelUi.Text, { type: 'p' }, 'Update your bPanel\'s plugin settings here. If you are a plugin developer and would like to allow users to update setting for your plugin in this view, see the docs on', ' ', _react2.default.createElement( _bpanelUi.Link, { to: 'https://bpanel.org/docs/api-decorate-plugins.html#decorateplugin' }, 'decorating plugins' ), '.' ), !hasWidgets ? _react2.default.createElement( _bpanelUi.Text, { type: 'p' }, 'No settings to display. When you have installed plugins that have customizable settings, they will be shown here.' ) : _react2.default.createElement( 'div', null, _react2.default.createElement( _bpanelUi.Header, { type: 'h4' }, 'bPanel Settings' ), _react2.default.createElement(_bpanelUi.TabMenu, { tabs: settingsTabs }) ) ); } }], [{ key: 'propTypes', get: function get() { return { settingsTabs: _propTypes2.default.arrayOf(_propTypes2.default.shape({ header: _propTypes2.default.string, body: _propTypes2.default.function })) }; } }, { key: 'defaultProps', get: function get() { return { settingsTabs: [] }; } }]); return SettingsDashboard; }(_react.PureComponent); exports.default = SettingsDashboard;