diff --git a/client/src/sass/base/_main.scss b/client/src/sass/base/_main.scss
index 397f570f..9d3b8f5a 100644
--- a/client/src/sass/base/_main.scss
+++ b/client/src/sass/base/_main.scss
@@ -5,3 +5,30 @@ body {
ul {
list-style: none;
}
+
+* {
+ scrollbar-width: thin;
+}
+
+::-webkit-scrollbar {
+ height: 6px;
+ width: 6px;
+}
+
+::-webkit-scrollbar-corner {
+ background: none;
+}
+
+::-webkit-scrollbar-track {
+ opacity: 0;
+}
+
+::-webkit-scrollbar-thumb {
+ border-radius: 4px;
+ background: #8d8d8d;
+}
+
+::-webkit-scrollbar-thumb:hover {
+ border-radius: 4px;
+ background: lighten(#8d8d8d, 10%);
+}
diff --git a/client/src/sass/components/_sidebar.scss b/client/src/sass/components/_sidebar.scss
index 546a3342..a2794004 100644
--- a/client/src/sass/components/_sidebar.scss
+++ b/client/src/sass/components/_sidebar.scss
@@ -6,7 +6,9 @@
flex: 1;
min-width: 240px;
max-width: 250px;
- overflow: auto;
+ height: 100%;
+ overflow-x: hidden;
+ overflow-y: overlay;
position: relative;
z-index: 2;
transition: transform 0.2s;
diff --git a/client/src/sass/components/_table.scss b/client/src/sass/components/_table.scss
index 644ebe9d..4ded0961 100644
--- a/client/src/sass/components/_table.scss
+++ b/client/src/sass/components/_table.scss
@@ -9,6 +9,7 @@ $table--heading--resize--indicator--width: 1px;
@include theme('color', 'table--heading--color');
display: flex;
height: 24px;
+ overflow: hidden;
font-size: 12px;
white-space: nowrap;
z-index: 1;
@@ -121,7 +122,7 @@ $table--heading--resize--indicator--width: 1px;
bottom: 0;
left: 0;
opacity: 0;
- position: absolute;
+ position: fixed;
top: 0;
transition: opacity 0.125s;
will-change: opacity, transform;
diff --git a/client/src/sass/components/_torrent.scss b/client/src/sass/components/_torrent.scss
index e24fa267..a7bfd2ec 100644
--- a/client/src/sass/components/_torrent.scss
+++ b/client/src/sass/components/_torrent.scss
@@ -475,9 +475,11 @@ $more-info--border: $textbox-repeater--button--border;
@include theme('border-top', 'torrent--border');
display: flex;
height: 30px;
+ min-width: max-content;
+ max-width: 100%;
padding: 0;
- &:nth-child(0n + 2) {
+ &:nth-child(0n + 1) {
border-top: none;
}
diff --git a/client/src/sass/components/_torrents.scss b/client/src/sass/components/_torrents.scss
index d1ce37f2..6ce6340c 100644
--- a/client/src/sass/components/_torrents.scss
+++ b/client/src/sass/components/_torrents.scss
@@ -2,8 +2,9 @@
@include theme('background', 'torrent-list--background');
@include theme('box-shadow', 'torrent-list--border');
display: flex;
- flex: 1 1 auto;
+ flex: 1 1 0px;
flex-direction: column;
+ overflow: hidden;
position: relative;
.loading-indicator {
@@ -52,11 +53,18 @@
}
}
+ &__viewport {
+ overflow-x: auto;
+ overflow-y: overlay;
+ height: 100%;
+ }
+
&__wrapper {
display: flex;
flex: 1 1 auto;
flex-direction: column;
height: 100%;
+ width: 100%;
justify-content: center;
list-style: none;
opacity: 1;
@@ -101,7 +109,6 @@
box-shadow: -1px 0 $torrent-list--border;
display: flex;
flex-direction: column;
- flex: 1;
flex: 0 1 100%;
}
}
diff --git a/client/src/sass/style.scss.d.ts b/client/src/sass/style.scss.d.ts
index 666fa579..9835e44d 100644
--- a/client/src/sass/style.scss.d.ts
+++ b/client/src/sass/style.scss.d.ts
@@ -477,6 +477,7 @@ declare const styles: {
readonly torrent__list: string;
readonly 'torrent__list__scrollbars--horizontal': string;
readonly 'torrent__list__scrollbars--vertical': string;
+ readonly torrent__list__viewport: string;
readonly torrent__list__wrapper: string;
readonly 'torrent__list--loading-enter': string;
readonly 'torrent__list--loading-enter-active': string;
diff --git a/package-lock.json b/package-lock.json
index 10af718a..93faf156 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -48,7 +48,6 @@
"@types/passport": "^1.0.4",
"@types/passport-jwt": "^3.0.3",
"@types/react": "^16.9.52",
- "@types/react-custom-scrollbars": "^4.0.7",
"@types/react-dnd-multi-backend": "^6.0.0",
"@types/react-dom": "^16.9.8",
"@types/react-measure": "^2.0.6",
@@ -128,7 +127,6 @@
"prettier": "^2.1.2",
"promise": "^8.1.0",
"react": "^16.14.0",
- "react-custom-scrollbars": "^4.2.1",
"react-dev-utils": "^10.2.1",
"react-dnd": "^11.1.3",
"react-dnd-html5-backend": "^11.1.3",
@@ -3105,15 +3103,6 @@
"csstype": "^3.0.2"
}
},
- "node_modules/@types/react-custom-scrollbars": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/@types/react-custom-scrollbars/-/react-custom-scrollbars-4.0.7.tgz",
- "integrity": "sha512-4QPZdwd+wmzWq9TyNSA/4MZFYvlQn1GlEFFkpFx8VSs13gR/L+hQne0vFnbzwlQmGG7OksthkoVpYxWJjzz95w==",
- "dev": true,
- "dependencies": {
- "@types/react": "*"
- }
- },
"node_modules/@types/react-dnd-multi-backend": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@types/react-dnd-multi-backend/-/react-dnd-multi-backend-6.0.0.tgz",
@@ -3806,12 +3795,6 @@
"node": ">=0.4.0"
}
},
- "node_modules/add-px-to-style": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/add-px-to-style/-/add-px-to-style-1.0.0.tgz",
- "integrity": "sha1-0ME1RB+oAUqBN5BFMQlvZ/KPJjo=",
- "dev": true
- },
"node_modules/address": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz",
@@ -7933,17 +7916,6 @@
"utila": "~0.4"
}
},
- "node_modules/dom-css": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/dom-css/-/dom-css-2.1.0.tgz",
- "integrity": "sha1-/bwtWgFdCj4YcuEUcrvQ57nmogI=",
- "dev": true,
- "dependencies": {
- "add-px-to-style": "1.0.0",
- "prefix-style": "2.0.1",
- "to-camel-case": "1.0.0"
- }
- },
"node_modules/dom-helpers": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.0.tgz",
@@ -20189,12 +20161,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/prefix-style": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/prefix-style/-/prefix-style-2.0.1.tgz",
- "integrity": "sha1-ZrupqHDP2jCKXcIOhekSCTLJWgY=",
- "dev": true
- },
"node_modules/prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -20470,15 +20436,6 @@
}
]
},
- "node_modules/raf": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
- "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
- "dev": true,
- "dependencies": {
- "performance-now": "^2.1.0"
- }
- },
"node_modules/randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -20558,21 +20515,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/react-custom-scrollbars": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/react-custom-scrollbars/-/react-custom-scrollbars-4.2.1.tgz",
- "integrity": "sha1-gw/ZUCkn6X6KeMIIaBOJmyqLZts=",
- "dev": true,
- "dependencies": {
- "dom-css": "^2.0.0",
- "prop-types": "^15.5.10",
- "raf": "^3.1.0"
- },
- "peerDependencies": {
- "react": "^0.14.0 || ^15.0.0 || ^16.0.0",
- "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0"
- }
- },
"node_modules/react-dev-utils": {
"version": "10.2.1",
"resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.1.tgz",
@@ -25009,15 +24951,6 @@
"integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
"dev": true
},
- "node_modules/to-camel-case": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/to-camel-case/-/to-camel-case-1.0.0.tgz",
- "integrity": "sha1-GlYFSy+daWKYzmamCJcyK29CPkY=",
- "dev": true,
- "dependencies": {
- "to-space-case": "^1.0.0"
- }
- },
"node_modules/to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
@@ -25027,12 +24960,6 @@
"node": ">=4"
}
},
- "node_modules/to-no-case": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/to-no-case/-/to-no-case-1.0.2.tgz",
- "integrity": "sha1-xyKQcWTvaxeBMsjmmTAhLRtKoWo=",
- "dev": true
- },
"node_modules/to-object-path": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
@@ -25084,15 +25011,6 @@
"node": ">=8.0"
}
},
- "node_modules/to-space-case": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/to-space-case/-/to-space-case-1.0.0.tgz",
- "integrity": "sha1-sFLar7Gysp3HcM6gFj5ewOvJ/Bc=",
- "dev": true,
- "dependencies": {
- "to-no-case": "^1.0.0"
- }
- },
"node_modules/toidentifier": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
@@ -30859,15 +30777,6 @@
"csstype": "^3.0.2"
}
},
- "@types/react-custom-scrollbars": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/@types/react-custom-scrollbars/-/react-custom-scrollbars-4.0.7.tgz",
- "integrity": "sha512-4QPZdwd+wmzWq9TyNSA/4MZFYvlQn1GlEFFkpFx8VSs13gR/L+hQne0vFnbzwlQmGG7OksthkoVpYxWJjzz95w==",
- "dev": true,
- "requires": {
- "@types/react": "*"
- }
- },
"@types/react-dnd-multi-backend": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@types/react-dnd-multi-backend/-/react-dnd-multi-backend-6.0.0.tgz",
@@ -31456,12 +31365,6 @@
"integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
"dev": true
},
- "add-px-to-style": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/add-px-to-style/-/add-px-to-style-1.0.0.tgz",
- "integrity": "sha1-0ME1RB+oAUqBN5BFMQlvZ/KPJjo=",
- "dev": true
- },
"address": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz",
@@ -34865,17 +34768,6 @@
"utila": "~0.4"
}
},
- "dom-css": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/dom-css/-/dom-css-2.1.0.tgz",
- "integrity": "sha1-/bwtWgFdCj4YcuEUcrvQ57nmogI=",
- "dev": true,
- "requires": {
- "add-px-to-style": "1.0.0",
- "prefix-style": "2.0.1",
- "to-camel-case": "1.0.0"
- }
- },
"dom-helpers": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.0.tgz",
@@ -44676,12 +44568,6 @@
"integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
"dev": true
},
- "prefix-style": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/prefix-style/-/prefix-style-2.0.1.tgz",
- "integrity": "sha1-ZrupqHDP2jCKXcIOhekSCTLJWgY=",
- "dev": true
- },
"prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -44909,15 +44795,6 @@
"integrity": "sha512-J95OVUiS4b8qqmpqhCodN8yPpHG2mpZUPQ8tDGyIY0VhM+kBHszOuvsMJVGNQ1OH2BnTFbqz45i+2jGpDw9H0w==",
"dev": true
},
- "raf": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
- "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
- "dev": true,
- "requires": {
- "performance-now": "^2.1.0"
- }
- },
"randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -44987,17 +44864,6 @@
"prop-types": "^15.6.2"
}
},
- "react-custom-scrollbars": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/react-custom-scrollbars/-/react-custom-scrollbars-4.2.1.tgz",
- "integrity": "sha1-gw/ZUCkn6X6KeMIIaBOJmyqLZts=",
- "dev": true,
- "requires": {
- "dom-css": "^2.0.0",
- "prop-types": "^15.5.10",
- "raf": "^3.1.0"
- }
- },
"react-dev-utils": {
"version": "10.2.1",
"resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.1.tgz",
@@ -48618,27 +48484,12 @@
"integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
"dev": true
},
- "to-camel-case": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/to-camel-case/-/to-camel-case-1.0.0.tgz",
- "integrity": "sha1-GlYFSy+daWKYzmamCJcyK29CPkY=",
- "dev": true,
- "requires": {
- "to-space-case": "^1.0.0"
- }
- },
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
"dev": true
},
- "to-no-case": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/to-no-case/-/to-no-case-1.0.2.tgz",
- "integrity": "sha1-xyKQcWTvaxeBMsjmmTAhLRtKoWo=",
- "dev": true
- },
"to-object-path": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
@@ -48680,15 +48531,6 @@
"is-number": "^7.0.0"
}
},
- "to-space-case": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/to-space-case/-/to-space-case-1.0.0.tgz",
- "integrity": "sha1-sFLar7Gysp3HcM6gFj5ewOvJ/Bc=",
- "dev": true,
- "requires": {
- "to-no-case": "^1.0.0"
- }
- },
"toidentifier": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
diff --git a/package.json b/package.json
index 1375d257..45251983 100644
--- a/package.json
+++ b/package.json
@@ -87,7 +87,6 @@
"@types/passport": "^1.0.4",
"@types/passport-jwt": "^3.0.3",
"@types/react": "^16.9.52",
- "@types/react-custom-scrollbars": "^4.0.7",
"@types/react-dnd-multi-backend": "^6.0.0",
"@types/react-dom": "^16.9.8",
"@types/react-measure": "^2.0.6",
@@ -167,7 +166,6 @@
"prettier": "^2.1.2",
"promise": "^8.1.0",
"react": "^16.14.0",
- "react-custom-scrollbars": "^4.2.1",
"react-dev-utils": "^10.2.1",
"react-dnd": "^11.1.3",
"react-dnd-html5-backend": "^11.1.3",