Repository URL to install this package:
|
Version:
8.0.0 ▾
|
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _fastDeepEqual = _interopRequireDefault(require("fast-deep-equal"));
var _pickDataAttributes = _interopRequireDefault(require("../../utils/pickDataAttributes"));
var _Icon = _interopRequireDefault(require("../../visuals/Icon"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
var renderItem = function renderItem(_ref) {
var selected = _ref.selected,
disabled = _ref.disabled,
itemClassName = _ref.itemClassName;
return function verticalMenuItem(item) {
var isSelected = (0, _fastDeepEqual["default"])(item, selected);
var itemClasses = (0, _classnames["default"])('VerticalMenu-item', {
'VerticalMenu-item--selected': isSelected,
'VerticalMenu-item--disabled': disabled
});
var icon = item.icon,
label = item.label,
key = item.key,
id = item.id,
onSelect = item.onSelect,
attributes = _objectWithoutProperties(item, ["icon", "label", "key", "id", "onSelect"]);
return /*#__PURE__*/_react["default"].createElement("li", {
id: id,
className: itemClasses,
key: key
}, /*#__PURE__*/_react["default"].createElement("button", _extends({
onClick: onSelect,
disabled: disabled
}, (0, _pickDataAttributes["default"])(attributes), {
className: itemClassName
}), icon && /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
icon: icon,
dimensions: "small"
}), label));
};
};
var VerticalMenu = function VerticalMenu(_ref2) {
var className = _ref2.className,
itemClassName = _ref2.itemClassName,
disabled = _ref2.disabled,
header = _ref2.header,
items = _ref2.items,
selected = _ref2.selected;
return /*#__PURE__*/_react["default"].createElement("nav", {
className: className
}, header ? /*#__PURE__*/_react["default"].createElement("h2", {
className: "VerticalMenu-header"
}, header) : null, /*#__PURE__*/_react["default"].createElement("ol", {
className: "VerticalMenu-items"
}, items.map(renderItem({
selected: selected,
disabled: disabled,
itemClassName: itemClassName
}))));
};
VerticalMenu.propTypes = {
className: _propTypes["default"].string,
itemClassName: _propTypes["default"].string,
header: _propTypes["default"].node,
items: _propTypes["default"].arrayOf(_propTypes["default"].shape({
key: _propTypes["default"].string.isRequired,
id: _propTypes["default"].string,
label: _propTypes["default"].node.isRequired,
onSelect: _propTypes["default"].func.isRequired,
icon: _propTypes["default"].any
})).isRequired,
selected: _propTypes["default"].object,
disabled: _propTypes["default"].bool
};
VerticalMenu.defaultProps = {
className: null,
itemClassName: null,
header: null,
selected: null,
disabled: false
};
var _default = VerticalMenu;
exports["default"] = _default;