2023-11-24 10:58:32 +00:00
|
|
|
import styled from "styled-components";
|
2023-11-30 11:51:33 +00:00
|
|
|
import { isIOS, isIOS13, isIPad13 } from "react-device-detect";
|
2021-02-08 07:44:16 +00:00
|
|
|
|
2024-02-05 10:49:14 +00:00
|
|
|
import { Scrollbar } from "./custom-scrollbar";
|
2024-02-05 10:21:48 +00:00
|
|
|
|
2023-11-24 10:58:56 +00:00
|
|
|
import { Base } from "../../themes";
|
2023-12-14 10:02:52 +00:00
|
|
|
import { mobile, desktop, tablet } from "../../utils";
|
2023-11-24 10:58:32 +00:00
|
|
|
|
2024-02-05 10:49:14 +00:00
|
|
|
const StyledScrollbar = styled(Scrollbar)<{ $fixedSize?: boolean }>`
|
2023-11-30 11:51:33 +00:00
|
|
|
.scroller::-webkit-scrollbar {
|
|
|
|
${(isIOS || isIOS13 || isIPad13) && `display: none;`}
|
|
|
|
}
|
|
|
|
|
2023-11-24 10:58:32 +00:00
|
|
|
.scroll-body {
|
2024-03-12 16:22:01 +00:00
|
|
|
padding-inline-end: ${(props) => props.theme.scrollbar.paddingInlineEnd};
|
2023-11-24 10:58:32 +00:00
|
|
|
position: relative;
|
2023-11-29 18:47:06 +00:00
|
|
|
outline: none;
|
|
|
|
tab-index: -1;
|
|
|
|
|
|
|
|
@media ${mobile} {
|
2024-03-12 16:22:01 +00:00
|
|
|
padding-inline-end: ${(props) =>
|
|
|
|
props.theme.scrollbar.paddingInlineEndMobile};
|
2023-11-29 18:47:06 +00:00
|
|
|
}
|
2023-07-27 12:54:31 +00:00
|
|
|
}
|
2023-11-23 15:46:31 +00:00
|
|
|
|
|
|
|
.track {
|
|
|
|
box-sizing: border-box;
|
|
|
|
display: flex;
|
|
|
|
padding: 4px;
|
|
|
|
border-radius: 8px !important;
|
2023-11-29 18:47:06 +00:00
|
|
|
background: transparent !important;
|
2023-11-23 15:46:31 +00:00
|
|
|
|
2023-11-24 17:17:55 +00:00
|
|
|
@media ${desktop} {
|
|
|
|
&:hover {
|
|
|
|
.thumb-vertical {
|
|
|
|
width: 8px !important;
|
|
|
|
}
|
|
|
|
|
|
|
|
.thumb-horizontal {
|
|
|
|
height: 8px !important;
|
|
|
|
}
|
2023-11-23 15:46:31 +00:00
|
|
|
}
|
2023-11-24 17:17:55 +00:00
|
|
|
}
|
2023-11-23 15:46:31 +00:00
|
|
|
|
2023-11-24 17:17:55 +00:00
|
|
|
@media ${tablet} {
|
|
|
|
pointer-events: none;
|
|
|
|
|
|
|
|
.thumb {
|
|
|
|
pointer-events: all;
|
2023-11-23 15:46:31 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.track-vertical {
|
|
|
|
direction: ${({ theme }) => theme.interfaceDirection};
|
2023-11-29 18:47:06 +00:00
|
|
|
height: ${({ noScrollY }) => (noScrollY ? 0 : "100%")} !important;
|
2023-11-23 15:46:31 +00:00
|
|
|
width: 16px !important;
|
|
|
|
top: 0 !important;
|
|
|
|
justify-content: flex-end;
|
2023-11-24 10:58:32 +00:00
|
|
|
}
|
2023-11-23 15:46:31 +00:00
|
|
|
|
|
|
|
.track-horizontal {
|
|
|
|
width: 100% !important;
|
|
|
|
height: 16px !important;
|
|
|
|
align-items: flex-end;
|
2023-11-29 18:47:06 +00:00
|
|
|
direction: ltr;
|
2023-11-24 16:17:12 +00:00
|
|
|
|
|
|
|
${({ theme }) =>
|
|
|
|
theme.interfaceDirection === "rtl"
|
|
|
|
? `left: unset !important; right: 0 !important;`
|
|
|
|
: `left: 0 !important;`}
|
|
|
|
}
|
|
|
|
|
|
|
|
&.trackYVisible.trackXVisible {
|
|
|
|
.track-vertical {
|
|
|
|
height: calc(100% - 16px) !important;
|
|
|
|
}
|
|
|
|
|
|
|
|
.track-horizontal {
|
|
|
|
width: calc(100% - 16px) !important;
|
|
|
|
}
|
2023-11-23 15:46:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
.thumb {
|
2023-11-30 10:01:47 +00:00
|
|
|
touch-action: none;
|
2023-11-24 10:58:32 +00:00
|
|
|
background-color: ${(props) =>
|
2023-11-23 11:09:55 +00:00
|
|
|
props.color ? props.color : props.theme.scrollbar.bgColor} !important;
|
2023-11-24 10:58:32 +00:00
|
|
|
z-index: 201;
|
|
|
|
position: relative;
|
|
|
|
|
2023-11-23 11:09:55 +00:00
|
|
|
:hover {
|
|
|
|
background-color: ${(props) =>
|
|
|
|
props.theme.scrollbar.hoverBgColor} !important;
|
|
|
|
}
|
|
|
|
|
2023-11-24 10:58:32 +00:00
|
|
|
:active,
|
|
|
|
&.dragging {
|
2023-11-30 10:01:47 +00:00
|
|
|
touch-action: none;
|
2023-11-24 10:58:32 +00:00
|
|
|
background-color: ${(props) =>
|
2023-11-23 11:09:55 +00:00
|
|
|
props.theme.scrollbar.pressBgColor} !important;
|
2023-11-24 10:58:32 +00:00
|
|
|
}
|
|
|
|
}
|
2023-11-23 15:46:31 +00:00
|
|
|
|
|
|
|
.thumb-vertical {
|
|
|
|
width: ${({ $fixedSize }) => ($fixedSize ? "8px" : "4px")} !important;
|
|
|
|
transition: width linear 0.1s;
|
|
|
|
|
2023-11-24 17:17:55 +00:00
|
|
|
@media ${desktop} {
|
|
|
|
&:active {
|
|
|
|
width: 8px !important;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@media ${tablet} {
|
|
|
|
width: 4px !important;
|
2023-11-23 15:46:31 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.thumb-horizontal {
|
|
|
|
height: ${({ $fixedSize }) => ($fixedSize ? "8px" : "4px")} !important;
|
|
|
|
transition: height linear 0.1s;
|
|
|
|
|
2023-11-24 17:17:55 +00:00
|
|
|
@media ${desktop} {
|
|
|
|
&:active {
|
|
|
|
height: 8px !important;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@media ${tablet} {
|
|
|
|
height: 4px !important;
|
2023-11-23 15:46:31 +00:00
|
|
|
}
|
2023-11-24 10:58:32 +00:00
|
|
|
}
|
|
|
|
`;
|
|
|
|
|
|
|
|
StyledScrollbar.defaultProps = {
|
|
|
|
theme: Base,
|
|
|
|
};
|
|
|
|
|
|
|
|
export default StyledScrollbar;
|