@boomerang-io/carbon-addons-boomerang-react
Version:
Carbon Addons for Boomerang apps
49 lines (46 loc) • 1.91 kB
JavaScript
import React from 'react';
import cx from 'classnames';
import { prefix } from '../settings.js';
/*
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.
*/
const handleOnKeyDown = (event) => {
if (event.keyCode === 27) {
event.stopPropagation();
}
};
const handleClick = (event) => {
event.preventDefault();
event.stopPropagation();
};
/**
* `ListBox` is a generic container component that handles creating the
* container class name in response to certain props.
*/
const ListBox = React.forwardRef(function ListBox({ children, className: containerClassName, disabled = false, type = "default", size, invalid, invalidText, warn, warnText, light, isOpen, ...rest }, ref) {
const showWarning = !invalid && warn;
const className = cx({
[containerClassName]: !!containerClassName,
[`${prefix}--list-box`]: true,
[`${prefix}--list-box--${size}`]: size,
[`${prefix}--list-box--inline`]: type === "inline",
[`${prefix}--list-box--disabled`]: disabled,
[`${prefix}--list-box--light`]: light,
[`${prefix}--list-box--expanded`]: isOpen,
[`${prefix}--list-box--warning`]: showWarning,
});
return (React.createElement(React.Fragment, null,
React.createElement("div", { ...rest, className: className, ref: ref, onKeyDown: handleOnKeyDown, onClick: handleClick, "data-invalid": invalid || undefined }, children),
invalid ? React.createElement("div", { className: `${prefix}--form-requirement` }, invalidText) : null,
showWarning ? React.createElement("div", { className: `${prefix}--form-requirement` }, warnText) : null));
});
ListBox.displayName = "ListBox";
export { ListBox as default };