@lyra/default-layout
Version:
The default layout components for Lyra
148 lines (133 loc) • 4.82 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SchemaErrors = SchemaErrors;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _SchemaErrors = require('./styles/SchemaErrors.css');
var _SchemaErrors2 = _interopRequireDefault(_SchemaErrors);
var _errorIcon = require('part:@lyra/base/error-icon');
var _errorIcon2 = _interopRequireDefault(_errorIcon);
var _warningIcon = require('part:@lyra/base/warning-icon');
var _warningIcon2 = _interopRequireDefault(_warningIcon);
var _generateHelpUrl = require('@lyra/generate-help-url');
var _generateHelpUrl2 = _interopRequireDefault(_generateHelpUrl);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function renderPath(path) {
return path.map(segment => {
if (segment.kind === 'type') {
return _react2.default.createElement(
'span',
{ className: _SchemaErrors2.default.segment },
_react2.default.createElement(
'span',
{ key: 'name', className: _SchemaErrors2.default.pathSegmentTypeName },
segment.name
),
'\u2002',
_react2.default.createElement(
'span',
{ key: 'type', className: _SchemaErrors2.default.pathSegmentTypeType },
segment.type
)
);
}
if (segment.kind === 'property') {
return _react2.default.createElement(
'span',
{ className: _SchemaErrors2.default.segment },
_react2.default.createElement(
'span',
{ className: _SchemaErrors2.default.pathSegmentProperty },
segment.name
)
);
}
if (segment.kind === 'type') {
return _react2.default.createElement(
'span',
{ className: _SchemaErrors2.default.segment },
_react2.default.createElement(
'span',
{ key: 'name', className: _SchemaErrors2.default.pathSegmentTypeName },
segment.name
),
_react2.default.createElement(
'span',
{ key: 'type', className: _SchemaErrors2.default.pathSegmentTypeType },
segment.type
)
);
}
return null;
}).filter(Boolean);
}
function SchemaErrors(props) {
const problemGroups = props.problemGroups;
return _react2.default.createElement(
'div',
{ className: _SchemaErrors2.default.root },
_react2.default.createElement(
'h2',
{ className: _SchemaErrors2.default.title },
'Uh oh\u2026 found errors in schema'
),
_react2.default.createElement(
'ul',
{ className: _SchemaErrors2.default.list },
problemGroups.map((group, i) => {
return _react2.default.createElement(
'li',
{ key: i, className: _SchemaErrors2.default.listItem },
_react2.default.createElement(
'h2',
{ className: _SchemaErrors2.default.path },
renderPath(group.path)
),
_react2.default.createElement(
'ul',
{ className: _SchemaErrors2.default.problems },
group.problems.map((problem, j) => _react2.default.createElement(
'li',
{ key: j, className: _SchemaErrors2.default[`problem_${problem.severity}`] },
_react2.default.createElement(
'div',
{ className: _SchemaErrors2.default.problemSeverity },
_react2.default.createElement(
'span',
{ className: _SchemaErrors2.default.problemSeverityIcon },
problem.severity === 'error' && _react2.default.createElement(_errorIcon2.default, null),
problem.severity === 'warning' && _react2.default.createElement(_warningIcon2.default, null)
),
_react2.default.createElement(
'span',
{ className: _SchemaErrors2.default.problemSeverityText },
problem.severity
)
),
_react2.default.createElement(
'div',
{ className: _SchemaErrors2.default.problemContent },
_react2.default.createElement(
'div',
{ className: _SchemaErrors2.default.problemMessage },
problem.message
),
problem.helpId && _react2.default.createElement(
'a',
{
className: _SchemaErrors2.default.problemLink,
href: (0, _generateHelpUrl2.default)(problem.helpId),
target: '_blank'
},
'View documentation'
)
)
))
)
);
})
)
);
}