@carbon/ibm-products
Version:
Carbon for IBM Products
83 lines (77 loc) • 2.52 kB
JavaScript
/**
* 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.
*/
;
var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
var React = require('react');
var index = require('../../_virtual/index.js');
var react = require('@carbon/react');
var icons = require('@carbon/react/icons');
var settings = require('../../settings.js');
var _ArrowUp, _ArrowDown;
const blockClass = `${settings.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.createElement(React.Fragment, null, _ArrowUp || (_ArrowUp = /*#__PURE__*/React.createElement(icons.ArrowUp, {
size: 16
})), cur),
direction: 'asc',
attribute: cur
}, {
id: `${cur}-desc`,
itemText: /*#__PURE__*/React.createElement(React.Fragment, null, _ArrowDown || (_ArrowDown = /*#__PURE__*/React.createElement(icons.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.createElement("div", {
className: blockClass
}, sortByOpts.length > 0 && /*#__PURE__*/React.createElement(react.OverflowMenu, {
renderIcon: props => /*#__PURE__*/React.createElement(icons.ArrowsVertical, _rollupPluginBabelHelpers.extends({
size: 32
}, props)),
className: `${blockClass}_overflow`,
flipped: true,
"aria-label": sortByLabel,
iconDescription: sortByLabel
}, sortByOpts.map(opt => {
return /*#__PURE__*/React.createElement(react.OverflowMenuItem, {
className: `${blockClass}_overflow-item`,
key: opt?.id,
itemText: opt?.itemText,
onClick: () => sortHandler(opt)
});
})));
};
AddSelectSort.propTypes = {
setSortAttribute: index.default.func,
setSortDirection: index.default.func,
sortBy: index.default.array,
sortByLabel: index.default.string
};
AddSelectSort.displayName = componentName;
exports.AddSelectSort = AddSelectSort;