@elastic/eui
Version:
Elastic UI Component Library
124 lines (123 loc) • 5.02 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.EuiDescriptionList = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _description_list_title = require("./description_list_title");
var _description_list_description = require("./description_list_description");
var _services = require("../../services");
var _description_list = require("./description_list.styles");
var _description_list_context = require("./description_list_context");
var _react2 = require("@emotion/react");
var _excluded = ["align", "children", "className", "compressed", "descriptionProps", "listItems", "textStyle", "titleProps", "type", "gutterSize"];
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
var EuiDescriptionList = function EuiDescriptionList(_ref) {
var _ref$align = _ref.align,
align = _ref$align === void 0 ? 'left' : _ref$align,
children = _ref.children,
className = _ref.className,
_ref$compressed = _ref.compressed,
compressed = _ref$compressed === void 0 ? false : _ref$compressed,
descriptionProps = _ref.descriptionProps,
listItems = _ref.listItems,
_ref$textStyle = _ref.textStyle,
textStyle = _ref$textStyle === void 0 ? 'normal' : _ref$textStyle,
titleProps = _ref.titleProps,
_ref$type = _ref.type,
type = _ref$type === void 0 ? 'row' : _ref$type,
_ref$gutterSize = _ref.gutterSize,
gutterSize = _ref$gutterSize === void 0 ? 'm' : _ref$gutterSize,
rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
var euiTheme = (0, _services.useEuiTheme)();
var styles = (0, _description_list.euiDescriptionListStyles)(euiTheme);
var cssStyles = [styles.euiDescriptionList, styles[type], styles[align]];
var classes = (0, _classnames.default)('euiDescriptionList', className);
var childrenOrListItems = null;
if (listItems) {
childrenOrListItems = listItems.map(function (item, index) {
return [(0, _react2.jsx)(_description_list_title.EuiDescriptionListTitle, (0, _extends2.default)({
key: "title-".concat(index)
}, titleProps), item.title), (0, _react2.jsx)(_description_list_description.EuiDescriptionListDescription, (0, _extends2.default)({
key: "description-".concat(index)
}, descriptionProps), item.description)];
});
} else {
childrenOrListItems = children;
}
return (0, _react2.jsx)(_description_list_context.EuiDescriptionListContext.Provider, {
value: {
type: type,
compressed: compressed,
textStyle: textStyle,
align: align,
gutterSize: gutterSize
}
}, (0, _react2.jsx)("dl", (0, _extends2.default)({
className: classes,
css: cssStyles
}, rest, {
"data-type": type
}), childrenOrListItems));
};
exports.EuiDescriptionList = EuiDescriptionList;
EuiDescriptionList.propTypes = {
className: _propTypes.default.string,
"aria-label": _propTypes.default.string,
"data-test-subj": _propTypes.default.string,
css: _propTypes.default.any,
listItems: _propTypes.default.arrayOf(_propTypes.default.shape({
title: _propTypes.default.any.isRequired,
description: _propTypes.default.any.isRequired
}).isRequired),
/**
* Text alignment
*/
align: _propTypes.default.any,
/**
* Smaller text and condensed spacing
*/
compressed: _propTypes.default.bool,
/**
* How should the content be styled, by default
* this will emphasize the title
*/
textStyle: _propTypes.default.oneOf(["normal", "reverse"]),
/**
* How each item should be laid out
*/
type: _propTypes.default.any,
/**
* Props object to be passed to `EuiDescriptionListTitle`
*/
titleProps: _propTypes.default.shape({
className: _propTypes.default.string,
"aria-label": _propTypes.default.string,
"data-test-subj": _propTypes.default.string,
css: _propTypes.default.any
}),
/**
* Props object to be passed to `EuiDescriptionListDescription`
*/
descriptionProps: _propTypes.default.shape({
className: _propTypes.default.string,
"aria-label": _propTypes.default.string,
"data-test-subj": _propTypes.default.string,
css: _propTypes.default.any
}),
/**
* Vertical spacing added between `EuiDescriptionList` elements
*/
gutterSize: _propTypes.default.any
};