UNPKG

@elastic/eui

Version:

Elastic UI Component Library

119 lines (118 loc) 5.54 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.EuiTreeViewItem = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var _services = require("../../services"); var _icon = require("../icon"); var _tree_view_item = require("./tree_view_item.styles"); var _react2 = require("@emotion/react"); var _excluded = ["id", "label", "className", "children", "display", "icon", "hasArrow", "isActive", "isExpanded", "buttonRef", "wrapperProps"]; /* * 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. */ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } var EuiTreeViewItem = exports.EuiTreeViewItem = /*#__PURE__*/(0, _react.memo)(function (_ref) { var id = _ref.id, label = _ref.label, className = _ref.className, children = _ref.children, _ref$display = _ref.display, display = _ref$display === void 0 ? 'default' : _ref$display, icon = _ref.icon, hasArrow = _ref.hasArrow, isActive = _ref.isActive, isExpanded = _ref.isExpanded, buttonRef = _ref.buttonRef, wrapperProps = _ref.wrapperProps, rest = (0, _objectWithoutProperties2.default)(_ref, _excluded); var euiTheme = (0, _services.useEuiTheme)(); var styles = (0, _tree_view_item.euiTreeViewItemStyles)(euiTheme); var wrapperClasses = (0, _classnames.default)('euiTreeView__node', { 'euiTreeView__node--expanded': isExpanded }, wrapperProps === null || wrapperProps === void 0 ? void 0 : wrapperProps.className); var wrapperStyles = [styles.li.euiTreeView__node, styles.li[display], isExpanded && styles.li.expanded]; var buttonClasses = (0, _classnames.default)('euiTreeView__nodeInner', className, { 'euiTreeView__node--active': isActive }); var buttonStyles = [styles.button.euiTreeView__nodeInner, styles.button[display]]; var iconStyles = [styles.icon.euiTreeView__iconWrapper, styles.icon[display]]; return (0, _react2.jsx)("li", (0, _extends2.default)({}, wrapperProps, { css: wrapperStyles, className: wrapperClasses }), (0, _react2.jsx)("button", (0, _extends2.default)({ id: id, css: buttonStyles, className: buttonClasses, "aria-expanded": isExpanded, ref: buttonRef }, rest), hasArrow && (!!children ? (0, _react2.jsx)(_icon.EuiIcon, { className: "euiTreeView__expansionArrow", size: display === 'compressed' ? 's' : 'm', type: isExpanded ? 'arrowDown' : 'arrowRight' }) : (0, _react2.jsx)("span", { css: iconStyles, className: "euiTreeView__arrowPlaceholder" })), icon && (0, _react2.jsx)("span", { css: iconStyles, className: "euiTreeView__iconWrapper" }, icon), (0, _react2.jsx)("span", { className: "euiTreeView__nodeLabel eui-textTruncate" }, label)), children); }); EuiTreeViewItem.propTypes = { className: _propTypes.default.string, "aria-label": _propTypes.default.string, "data-test-subj": _propTypes.default.string, css: _propTypes.default.any, /** * Required for `aria-controls` accessibility */ id: _propTypes.default.string.isRequired, /** * The main button content */ label: _propTypes.default.node.isRequired, /** * Used to render nested `EuiTreeView`s */ children: _propTypes.default.node, /** * Optional icon to render. Pass, e.g., `<EuiIcon />` or `<EuiToken />` */ icon: _propTypes.default.node, /** * Renders an arrow if `children` exists. Otherwise renders a blank icon */ hasArrow: _propTypes.default.bool, /** * Adds a targetable modifier class */ isActive: _propTypes.default.bool, /** * Sets the `aria-expanded` attribute */ isExpanded: _propTypes.default.bool, /** * Determines default or compressed display */ display: _propTypes.default.oneOf(["default", "compressed"]), buttonRef: _propTypes.default.any, /** * Optional extra props to pass to the wrapping `<li>` */ wrapperProps: _propTypes.default.any }; EuiTreeViewItem.displayName = 'EuiTreeViewItem';