
* Don't show an exception when bookmarking doesn't have anything to change. * Cleaned up the bookmark code a bit. * Implemented fullscreen mode in the web reader. Refactored User Settings to move Password and 3rd Party Clients to a tab rather than accordion. Removed color filters for web reader. * Implemented fullscreen mode into book reader * Added some code for toggling fullscreen which re-renders the screen to ensure the fitting works optimially * Fixed an issue where moving from FitToScreen -> Split (L/R) wouldn't render the screen correctly due to canvas not being reset. * Fixed bad optimization and scaling when drawing fit to screen * Removed left/right highlights on page direction change in favor for icons. Double arrow will dictate the page change. * Reduced overlay auto close time to 3 seconds * Updated the paginging direction overlay to use icons and colors. Added a blur effect on menus * Removed debug flags
257 lines
No EOL
4.2 KiB
SCSS
257 lines
No EOL
4.2 KiB
SCSS
@use '../../theme/colors';
|
|
|
|
$center-width: 50%;
|
|
$side-width: 25%;
|
|
|
|
$dash-width: 3px;
|
|
$pointer-offset: 5px;
|
|
|
|
|
|
@media(min-width: 600px) {
|
|
.overlay .left .i {
|
|
left: 20px;
|
|
}
|
|
.overlay .right .i {
|
|
right: 20px;
|
|
}
|
|
}
|
|
|
|
.btn-icon {
|
|
color: white;
|
|
}
|
|
|
|
canvas {
|
|
position: absolute;
|
|
}
|
|
|
|
.reader {
|
|
background-color: black;
|
|
|
|
img {
|
|
align-items: center;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.loading {
|
|
position: absolute;
|
|
left: 48%;
|
|
top: 20%;
|
|
z-index: 1;
|
|
}
|
|
|
|
.title, .subtitle {
|
|
text-overflow: ellipsis;
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.bottom-menu {
|
|
padding: 20px 20px;
|
|
}
|
|
|
|
|
|
.overlay {
|
|
background-color: rgba(0,0,0,0.5);
|
|
backdrop-filter: blur(10px);
|
|
color: white;
|
|
}
|
|
|
|
// Fitting Options
|
|
.full-height {
|
|
position: absolute;
|
|
margin: auto;
|
|
top: 0px;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0px;
|
|
height: 100%;
|
|
}
|
|
|
|
.original {
|
|
position: absolute;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
top: 0px;
|
|
bottom: 0px;
|
|
left: 0;
|
|
right: 0;
|
|
}
|
|
|
|
.full-width {
|
|
width: 100%;
|
|
}
|
|
|
|
|
|
.right {
|
|
position: fixed;
|
|
right: 0px;
|
|
top: 0px;
|
|
width: $side-width;
|
|
height: 100%;
|
|
background: rgba(0, 0, 0, 0);
|
|
z-index: 2;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.top {
|
|
position: fixed;
|
|
right: 0px;
|
|
top: 0px;
|
|
width: 100%;
|
|
height: $side-width;
|
|
background: rgba(0, 0, 0, 0);
|
|
z-index: 2;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.left {
|
|
position: fixed;
|
|
left: 0px;
|
|
top: 0px;
|
|
width: $side-width;
|
|
height: 100%;
|
|
background: rgba(0, 0, 0, 0);
|
|
z-index: 2;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.bottom {
|
|
position: fixed;
|
|
left: 0px;
|
|
bottom: 0px;
|
|
width: 100%;
|
|
height: $side-width;
|
|
background: rgba(0, 0, 0, 0);
|
|
z-index: 2;
|
|
cursor: pointer;
|
|
}
|
|
|
|
|
|
// Splitting Icon
|
|
.split {
|
|
height: 20px;
|
|
width: 40px;
|
|
z-index: 1;
|
|
top: 0;
|
|
overflow: hidden;
|
|
border: 2px solid #ccc;
|
|
|
|
&::before {
|
|
margin-left: 30%;
|
|
}
|
|
|
|
/* Control the left side */
|
|
.left-side {
|
|
height: 20px;
|
|
width: 20px;
|
|
background-color: rgba(255, 255, 255, 0.6);
|
|
margin-top: -16px;
|
|
}
|
|
|
|
/* Control the right side */
|
|
.right-side {
|
|
height: 20px;
|
|
margin-left: 20px;
|
|
width: 20px;
|
|
background-color: rgba(255, 255, 255, 0.6);
|
|
margin-top: -16px;
|
|
}
|
|
|
|
.none {
|
|
background-color: rgba(255, 255, 255, 0.5);
|
|
}
|
|
}
|
|
|
|
::ng-deep {
|
|
.custom-slider .ngx-slider .ngx-slider-bar {
|
|
background: #e9ffe2;
|
|
height: 2px;
|
|
}
|
|
.custom-slider .ngx-slider .ngx-slider-selection {
|
|
background: colors.$primary-color;
|
|
}
|
|
|
|
.custom-slider .ngx-slider .ngx-slider-pointer {
|
|
width: 8px;
|
|
height: 16px;
|
|
top: auto; /* to remove the default positioning */
|
|
bottom: 0;
|
|
background-color: colors.$primary-color; // #333;
|
|
border-top-left-radius: 3px;
|
|
border-top-right-radius: 3px;
|
|
}
|
|
|
|
.custom-slider .ngx-slider .ngx-slider-pointer:after {
|
|
display: none;
|
|
}
|
|
|
|
.custom-slider .ngx-slider .ngx-slider-bubble {
|
|
bottom: 14px;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.custom-slider .ngx-slider .ngx-slider-limit {
|
|
font-weight: bold;
|
|
color: white !important;
|
|
|
|
}
|
|
|
|
|
|
.custom-slider .ngx-slider .ngx-slider-tick {
|
|
width: 1px;
|
|
height: 10px;
|
|
margin-left: 4px;
|
|
border-radius: 0;
|
|
background: #ffe4d1;
|
|
top: -1px;
|
|
}
|
|
|
|
.custom-slider .ngx-slider .ngx-slider-tick.ngx-slider-selected {
|
|
background: colors.$primary-color;
|
|
}
|
|
}
|
|
|
|
.webtoon-images {
|
|
text-align: center;
|
|
width: 100%;
|
|
}
|
|
|
|
.pagination-area {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
|
|
i {
|
|
color: white;
|
|
font-size: 42px;
|
|
}
|
|
}
|
|
|
|
.highlight {
|
|
background-color: rgba(65, 225, 100, 0.5) !important;
|
|
animation: fadein .5s both;
|
|
backdrop-filter: blur(10px);
|
|
}
|
|
.highlight-2 {
|
|
background-color: rgba(65, 105, 225, 0.5) !important;
|
|
animation: fadein .5s both;
|
|
backdrop-filter: blur(10px);
|
|
}
|
|
|
|
|
|
.bookmark-effect {
|
|
animation: bookmark 0.7s cubic-bezier(0.165, 0.84, 0.44, 1);
|
|
}
|
|
|
|
@keyframes bookmark {
|
|
0%, 100% {
|
|
border: 0px;
|
|
}
|
|
50% {
|
|
border: 5px solid colors.$primary-color;
|
|
}
|
|
} |