@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
64 lines (63 loc) • 2.15 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const jsxRuntime = require("react/jsx-runtime");
const React = require("react");
const uikitReactUtils = require("@hitachivantara/uikit-react-utils");
const Select_styles = require("./Select.styles.cjs");
const BaseDropdown = require("../BaseDropdown/BaseDropdown.cjs");
const Panel = require("../Panel/Panel.cjs");
const SelectionList = require("../SelectionList/SelectionList.cjs");
const ListItem = require("../ListContainer/ListItem/ListItem.cjs");
const Option = ({ ...props }) => /* @__PURE__ */ jsxRuntime.jsx(ListItem.HvListItem, { ...props });
const HvSelect = (props) => {
const {
className,
classes: classesProp,
onChange,
disabled,
value,
children,
...others
} = uikitReactUtils.useDefaultProps("HvPaginationSelect", props);
const { classes } = Select_styles.useClasses(classesProp);
const [open, setOpen] = React.useState(false);
const handleSelect = (evt, val) => {
onChange?.(evt, val);
setOpen(false);
};
const handleToggle = (_evt, s) => {
setOpen(s);
};
const setFocusToContent = (containerRef) => {
const listItems = containerRef != null ? [...containerRef.getElementsByTagName("li")] : [];
listItems.every((listItem) => {
if (listItem.tabIndex >= 0) {
listItem.focus();
return false;
}
return true;
});
};
return /* @__PURE__ */ jsxRuntime.jsx(
BaseDropdown.HvBaseDropdown,
{
className,
classes: {
selection: classes.selection,
header: classes.header,
headerOpen: classes.headerOpen,
root: classes.root
},
expanded: open,
onToggle: handleToggle,
onContainerCreation: setFocusToContent,
placeholder: value,
disabled,
variableWidth: true,
...others,
children: /* @__PURE__ */ jsxRuntime.jsx(Panel.HvPanel, { children: /* @__PURE__ */ jsxRuntime.jsx(SelectionList.HvSelectionList, { value, onChange: handleSelect, children }) })
}
);
};
exports.Option = Option;
exports.default = HvSelect;