UNPKG

@boomerang-io/carbon-addons-boomerang-react

Version:
55 lines (48 loc) 2.1 kB
'use strict'; 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;