@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
101 lines (100 loc) • 3.74 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const jsxRuntime = require("react/jsx-runtime");
const styles = require("@mui/material/styles");
const useMediaQuery = require("@mui/material/useMediaQuery");
const uikitReactUtils = require("@hitachivantara/uikit-react-utils");
const uikitStyles = require("@hitachivantara/uikit-styles");
const useScrollTo = require("../hooks/useScrollTo.cjs");
const keyboardUtils = require("../utils/keyboardUtils.cjs");
const setId = require("../utils/setId.cjs");
const ScrollToHorizontal_styles = require("./ScrollToHorizontal.styles.cjs");
const HorizontalScrollListItem = require("./HorizontalScrollListItem/HorizontalScrollListItem.cjs");
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
const useMediaQuery__default = /* @__PURE__ */ _interopDefault(useMediaQuery);
const HvScrollToHorizontal = (props) => {
const {
id,
defaultSelectedIndex = 0,
scrollElementId,
// @ts-ignore
href = true,
navigationMode = href ? "push" : "none",
relativeLinks = false,
onChange,
onClick,
onEnter,
className,
classes: classesProp,
options,
offset = 0,
position = "relative",
tooltipPosition = "top",
...others
} = uikitReactUtils.useDefaultProps("HvScrollToHorizontal", props);
const { classes, css, cx } = ScrollToHorizontal_styles.useClasses(classesProp);
const muiTheme = styles.useTheme();
const downSm = useMediaQuery__default.default(muiTheme.breakpoints.down("sm"));
const upMd = useMediaQuery__default.default(muiTheme.breakpoints.up("md"));
const [selectedIndex, setScrollTo, elements] = useScrollTo.useScrollTo(
defaultSelectedIndex,
scrollElementId,
navigationMode,
relativeLinks,
offset,
options,
onChange
);
const tabs = elements.map((option, index) => /* @__PURE__ */ jsxRuntime.jsx(
HorizontalScrollListItem.HvHorizontalScrollListItem,
{
id: setId.setId(id, `item-${index}`),
onClick: (event) => {
event.preventDefault();
setScrollTo(event, option.value, index, () => onChange?.(event, index));
onClick?.(event, index);
},
onKeyDown: (event) => {
if (keyboardUtils.isKey(event, "Enter") !== true) return;
event.preventDefault();
setScrollTo(event, option.value, index, () => onChange?.(event, index));
onEnter?.(event, index);
},
href: navigationMode !== "none" ? option.href : void 0,
tooltipPlacement: tooltipPosition,
selected: selectedIndex === index,
label: option.label,
iconClasses: cx({
[classes.selected]: selectedIndex === index,
[classes.notSelected]: selectedIndex !== index,
[classes.notSelectedRoot]: selectedIndex !== index
})
},
option.key || option.label
));
return /* @__PURE__ */ jsxRuntime.jsx(
"ol",
{
className: cx(
css({
width: position === "fixed" && (upMd || downSm) ? `calc(100% - 2*${uikitStyles.theme.spacing(upMd ? 4 : 2)})` : "100%",
marginTop: 0,
marginBottom: 0,
marginRight: position === "fixed" && (upMd || downSm) ? uikitStyles.theme.spacing(upMd ? 4 : 2) : 0,
marginLeft: position === "fixed" && (upMd || downSm) ? uikitStyles.theme.spacing(upMd ? 4 : 2) : 0
}),
classes.root,
{
[classes.positionSticky]: position === "sticky",
[classes.positionFixed]: position === "fixed"
},
className
),
id,
...others,
children: tabs
}
);
};
exports.scrollToHorizontalClasses = ScrollToHorizontal_styles.staticClasses;
exports.HvScrollToHorizontal = HvScrollToHorizontal;