UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

91 lines (90 loc) 3.34 kB
"use client"; import { rem } from "../../core/utils/units-converters/rem.mjs"; import { createVarsResolver } from "../../core/styles-api/create-vars-resolver/create-vars-resolver.mjs"; import { getThemeColor } from "../../core/MantineProvider/color-functions/get-theme-color/get-theme-color.mjs"; import { useProps } from "../../core/MantineProvider/use-props/use-props.mjs"; import { useStyles } from "../../core/styles-api/use-styles/use-styles.mjs"; import { factory } from "../../core/factory/factory.mjs"; import { Box } from "../../core/Box/Box.mjs"; import { UnstyledButton } from "../UnstyledButton/UnstyledButton.mjs"; import { AccordionChevron } from "../Accordion/AccordionChevron.mjs"; import Scroller_module_default from "./Scroller.module.mjs"; import { useScroller } from "@mantine/hooks"; import { jsx, jsxs } from "react/jsx-runtime"; //#region packages/@mantine/core/src/components/Scroller/Scroller.tsx const defaultProps = { scrollAmount: 200, draggable: true }; const varsResolver = createVarsResolver((theme, { controlSize, edgeGradientColor }) => ({ root: { "--scroller-control-size": rem(controlSize), "--scroller-background-color": edgeGradientColor ? getThemeColor(edgeGradientColor, theme) : void 0 } })); const Scroller = factory((_props) => { const props = useProps("Scroller", defaultProps, _props); const { classNames, className, style, styles, unstyled, vars, children, scrollAmount, controlSize, edgeGradientColor, startControlProps, endControlProps, startControlIcon, endControlIcon, showStartControl, showEndControl, draggable, mod, ref, attributes, ...others } = props; const getStyles = useStyles({ name: "Scroller", classes: Scroller_module_default, props, className, style, classNames, styles, unstyled, vars, varsResolver, attributes }); const scroller = useScroller({ scrollAmount, draggable }); const showStart = showStartControl || scroller.canScrollStart; const showEnd = showEndControl || scroller.canScrollEnd; return /* @__PURE__ */ jsxs(Box, { ...getStyles("root"), ref, mod, ...others, children: [ /* @__PURE__ */ jsx(UnstyledButton, { ...getStyles("control"), onClick: scroller.scrollStart, "data-position": "start", "data-hidden": !showStart || void 0, "aria-label": "Scroll left", tabIndex: showStart ? 0 : -1, ...startControlProps, children: startControlIcon || /* @__PURE__ */ jsx(AccordionChevron, { ...getStyles("chevron") }) }), /* @__PURE__ */ jsx("div", { ...getStyles("container"), ref: scroller.ref, role: "presentation", "data-draggable": draggable || void 0, ...scroller.dragHandlers, children: /* @__PURE__ */ jsx("div", { ...getStyles("content"), children }) }), /* @__PURE__ */ jsx(UnstyledButton, { ...getStyles("control"), onClick: scroller.scrollEnd, "data-position": "end", "data-hidden": !showEnd || void 0, "aria-label": "Scroll right", tabIndex: showEnd ? 0 : -1, ...endControlProps, children: endControlIcon || /* @__PURE__ */ jsx(AccordionChevron, { ...getStyles("chevron") }) }) ] }); }); Scroller.classes = Scroller_module_default; Scroller.varsResolver = varsResolver; Scroller.displayName = "@mantine/core/Scroller"; //#endregion export { Scroller }; //# sourceMappingURL=Scroller.mjs.map