UNPKG

@carbon/ibm-products

Version:

Carbon for IBM Products

81 lines (76 loc) 2.55 kB
/** * Copyright IBM Corp. 2020, 2025 * * This source code is licensed under the Apache-2.0 license found in the * LICENSE file in the root directory of this source tree. */ import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js'; import React__default from 'react'; import PropTypes from '../../_virtual/index.js'; import { OverflowMenu, OverflowMenuItem } from '@carbon/react'; import { ArrowUp, ArrowDown, ArrowsVertical } from '@carbon/react/icons'; import { pkg } from '../../settings.js'; var _ArrowUp, _ArrowDown; const blockClass = `${pkg.prefix}--add-select-sort`; const componentName = 'AddSelectSort'; const AddSelectSort = _ref => { let { setSortAttribute, setSortDirection, sortBy, sortByLabel } = _ref; const sortByOpts = sortBy ? sortBy?.reduce((acc, cur) => { const opts = [{ id: `${cur}-asc`, itemText: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, _ArrowUp || (_ArrowUp = /*#__PURE__*/React__default.createElement(ArrowUp, { size: 16 })), cur), direction: 'asc', attribute: cur }, { id: `${cur}-desc`, itemText: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, _ArrowDown || (_ArrowDown = /*#__PURE__*/React__default.createElement(ArrowDown, { size: 16 })), cur), direction: 'desc', attribute: cur }]; return [...acc, ...opts]; }, []) : []; // handlers const sortHandler = _ref2 => { let { direction, attribute } = _ref2; setSortAttribute?.(attribute); setSortDirection?.(direction); }; return /*#__PURE__*/React__default.createElement("div", { className: blockClass }, sortByOpts.length > 0 && /*#__PURE__*/React__default.createElement(OverflowMenu, { renderIcon: props => /*#__PURE__*/React__default.createElement(ArrowsVertical, _extends({ size: 32 }, props)), className: `${blockClass}_overflow`, flipped: true, "aria-label": sortByLabel, iconDescription: sortByLabel }, sortByOpts.map(opt => { return /*#__PURE__*/React__default.createElement(OverflowMenuItem, { className: `${blockClass}_overflow-item`, key: opt?.id, itemText: opt?.itemText, onClick: () => sortHandler(opt) }); }))); }; AddSelectSort.propTypes = { setSortAttribute: PropTypes.func, setSortDirection: PropTypes.func, sortBy: PropTypes.array, sortByLabel: PropTypes.string }; AddSelectSort.displayName = componentName; export { AddSelectSort };