@boomerang-io/carbon-addons-boomerang-react
Version:
Carbon Addons for Boomerang apps
55 lines (48 loc) • 2.1 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var cx = require('classnames');
var settings = require('../settings.js');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var React__default = /*#__PURE__*/_interopDefault(React);
var cx__default = /*#__PURE__*/_interopDefault(cx);
/*
IBM Confidential
694970X, 69497O0
© Copyright IBM Corp. 2022, 2024
*/
/**
* Copyright IBM Corp. 2016, 2018
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
function useIsTruncated(ref) {
const [isTruncated, setIsTruncated] = React.useState(false);
React.useEffect(() => {
const { offsetWidth, scrollWidth } = ref.current;
setIsTruncated(offsetWidth < scrollWidth);
}, [ref, setIsTruncated]);
return isTruncated;
}
/**
* `ListBoxMenuItem` is a helper component for managing the container class
* name, alongside any classes for any corresponding states, for a generic list
* box menu item.
*/
const ListBoxMenuItem = React__default.default.forwardRef(function ListBoxMenuItem({ children, isActive, isHighlighted, title, ...rest }, forwardedRef) {
const ref = React.useRef(null);
const isTruncated = useIsTruncated(forwardedRef?.menuItemOptionRef || ref);
const className = cx__default.default(`${settings.prefix}--list-box__menu-item`, {
[`${settings.prefix}--list-box__menu-item--active`]: isActive,
[`${settings.prefix}--list-box__menu-item--highlighted`]: isHighlighted,
});
return (React__default.default.createElement("div", { ...rest, className: className, title: isTruncated ? title : undefined },
React__default.default.createElement("div", { className: `${settings.prefix}--list-box__menu-item__option`, ref: forwardedRef?.menuItemOptionRef || ref }, children)));
});
ListBoxMenuItem.displayName = "ListBoxMenuItem";
ListBoxMenuItem.defaultProps = {
isActive: false,
isHighlighted: false,
};
exports.default = ListBoxMenuItem;