UNPKG

@kiwicom/orbit-components

Version:

Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.

72 lines (65 loc) 3 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties"; import * as React from "react"; import styled, { css } from "styled-components"; import useScrollBox from "./useScroll"; import Stack from "../Stack"; var StyledWrapper = styled.div.withConfig({ displayName: "HorizontalScroll__StyledWrapper", componentId: "sc-1ao5qgr-0" })(["", ""], function (_ref) { var isDragging = _ref.isDragging, minHeight = _ref.minHeight; return css(["position:relative;width:100%;min-height:", "px;cursor:", ";overflow:hidden;"], minHeight, isDragging ? "grabbing" : "grab"); }); var getSnap = function getSnap(_ref2) { var scrollSnap = _ref2.scrollSnap; if (scrollSnap === "mandatory") return "x mandatory"; if (scrollSnap === "proximity") return "x proximity"; return scrollSnap; }; var StyledOverflow = styled.div.withConfig({ displayName: "HorizontalScroll__StyledOverflow", componentId: "sc-1ao5qgr-1" })(["", ""], function (_ref3) { var isDragging = _ref3.isDragging, scrollPadding = _ref3.scrollPadding; return css(["width:100%;height:100%;overflow-y:hidden;overflow-x:scroll;scroll-snap-type:", ";scroll-padding:", ";box-sizing:border-box;-ms-overflow-style:none;overflow:-moz-scrollbars-none;scrollbar-width:none;::-webkit-scrollbar{display:none;}"], isDragging ? "none" : getSnap, scrollPadding && "".concat(scrollPadding, "px")); }); var StyledContainer = styled.div.withConfig({ displayName: "HorizontalScroll__StyledContainer", componentId: "sc-1ao5qgr-2" })(["", ""], function (_ref4) { var isDragging = _ref4.isDragging; return css(["height:100%;display:inline-flex;pointer-events:", ";"], isDragging && "none"); }); var HorizontalScroll = function HorizontalScroll(_ref5) { var children = _ref5.children, _ref5$spacing = _ref5.spacing, spacing = _ref5$spacing === void 0 ? "small" : _ref5$spacing, _ref5$scrollSnap = _ref5.scrollSnap, scrollSnap = _ref5$scrollSnap === void 0 ? "none" : _ref5$scrollSnap, scrollPadding = _ref5.scrollPadding, dataTest = _ref5.dataTest, minHeight = _ref5.minHeight, props = _objectWithoutProperties(_ref5, ["children", "spacing", "scrollSnap", "scrollPadding", "dataTest", "minHeight"]); var scrollWrapper = React.useRef(null); var _useScrollBox = useScrollBox(scrollWrapper), isDragging = _useScrollBox.isDragging; return /*#__PURE__*/React.createElement(StyledWrapper, _extends({}, props, { isDragging: isDragging, minHeight: minHeight, "data-test": dataTest }), /*#__PURE__*/React.createElement(StyledOverflow, { ref: scrollWrapper, scrollSnap: scrollSnap, scrollPadding: scrollPadding, isDragging: isDragging }, /*#__PURE__*/React.createElement(StyledContainer, { isDragging: isDragging }, /*#__PURE__*/React.createElement(Stack, { inline: true, spacing: spacing }, children)))); }; export default HorizontalScroll;