@b-design/ui-console-menu
Version:
React component for Alibaba Cloud.
76 lines (69 loc) • 2.38 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import React, { useState } from 'react';
import { Icon, Dropdown, Menu } from '@b-design/ui';
import cs from 'classnames';
import * as S from './styles';
var renderItem = function renderItem(headers) {
return Array.isArray(headers) ? headers.map(function (item) {
return /*#__PURE__*/React.createElement(Menu.Item, {
key: item
}, item);
}) : null;
};
var Header = function Header(_ref) {
var header = _ref.header,
headers = _ref.headers,
onSelectHeader = _ref.onSelectHeader,
fusionPrefix = _ref.fusionPrefix;
var _useState = useState('down'),
_useState2 = _slicedToArray(_useState, 2),
direction = _useState2[0],
setDirection = _useState2[1];
var handleChangeDirection = function handleChangeDirection() {
setDirection(direction === 'down' ? 'up' : 'down');
};
var handleClick = function handleClick(selectedKey) {
handleChangeDirection();
onSelectHeader && onSelectHeader(selectedKey);
};
return /*#__PURE__*/React.createElement(S.Header, {
id: "container"
}, /*#__PURE__*/React.createElement("div", {
className: "header-text"
}, header), headers && headers.length > 0 && /*#__PURE__*/React.createElement("div", {
className: "header-select"
}, /*#__PURE__*/React.createElement(Dropdown, {
visible: direction === 'up',
triggerType: "click",
offset: [16, 10],
align: "tr br",
onVisibleChange: function onVisibleChange(visible) {
setDirection(visible ? 'up' : 'down');
},
container: function container(trigger) {
return trigger.parentNode;
},
cache: true,
trigger: /*#__PURE__*/React.createElement("div", {
className: "trigger-wrap"
}, /*#__PURE__*/React.createElement(Icon, {
onClick: handleChangeDirection,
size: "small",
type: "sort-".concat(direction),
className: cs({
'trigger-icon': true,
'icon-up': direction === 'up'
})
}))
}, /*#__PURE__*/React.createElement("div", {
style: {
minWidth: '100%'
}
}, /*#__PURE__*/React.createElement(S.SDropMenu, {
fusionPrefix: fusionPrefix,
selectedKeys: /*#__PURE__*/React.isValidElement(header) ? [] : header,
selectMode: "single",
onItemClick: handleClick
}, renderItem(headers))))));
};
export default Header;