@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
JavaScript
'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;