Add highlight to open page tab
This commit is contained in:
parent
14d31b9e19
commit
68b24effde
4 changed files with 111 additions and 39 deletions
119
src/index.scss
119
src/index.scss
|
|
@ -22,6 +22,7 @@ h4,
|
||||||
h5,
|
h5,
|
||||||
h6 {
|
h6 {
|
||||||
font-family: 'Comfortaa', sans-serif;
|
font-family: 'Comfortaa', sans-serif;
|
||||||
|
margin-bottom: var(--small-margin);
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
|
|
@ -31,6 +32,7 @@ p {
|
||||||
html {
|
html {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
-webkit-font-smooth: antialiased;
|
-webkit-font-smooth: antialiased;
|
||||||
|
|
||||||
> body {
|
> body {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
@ -83,12 +85,13 @@ html {
|
||||||
@include blurred-background(#fff);
|
@include blurred-background(#fff);
|
||||||
display: flex;
|
display: flex;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
@include on-large-screen {
|
@include on-large-screen {
|
||||||
top: 50%;
|
top: 50%;
|
||||||
left: 0;
|
left: 0;
|
||||||
transform: translateY(-50%);
|
transform: translateY(-50%);
|
||||||
height: 400px;
|
max-height: 350px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@include on-small-screen {
|
@include on-small-screen {
|
||||||
|
|
@ -104,31 +107,113 @@ html {
|
||||||
|
|
||||||
> nav.buttons {
|
> nav.buttons {
|
||||||
@include center-children;
|
@include center-children;
|
||||||
gap: var(--normal-margin);
|
justify-content: space-evenly;
|
||||||
margin: var(--small-margin);
|
|
||||||
|
|
||||||
@include on-large-screen {
|
@include on-large-screen {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
> button.info {
|
> button {
|
||||||
@include image-button(url('../assets/icons/info.svg'), var(--accent-color));
|
position: relative;
|
||||||
}
|
border: none;
|
||||||
|
background-color: transparent;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
> button.maximize-full-screen {
|
@include square(var(--icon-size));
|
||||||
@include image-button(url('../assets/icons/maximize.svg'), var(--accent-color));
|
margin: var(--small-margin);
|
||||||
}
|
|
||||||
|
|
||||||
> button.minimize-full-screen {
|
&::before,
|
||||||
@include image-button(url('../assets/icons/minimize.svg'), var(--accent-color));
|
&::after {
|
||||||
}
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
> button.settings {
|
&::before {
|
||||||
@include image-button(url('../assets/icons/settings.svg'), var(--accent-color));
|
background-color: var(--accent-color);
|
||||||
}
|
|
||||||
|
|
||||||
> button.restart {
|
@include on-large-screen {
|
||||||
@include image-button(url('../assets/icons/restart.svg'), var(--accent-color));
|
width: 0;
|
||||||
|
border-radius: 0 var(--border-radius) var(--border-radius) 0;
|
||||||
|
transition: background-color var(--transition-time),
|
||||||
|
width var(--transition-time);
|
||||||
|
left: calc(-1 * var(--small-margin));
|
||||||
|
height: 140%;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
@include on-small-screen {
|
||||||
|
height: 0;
|
||||||
|
border-radius: 0 0 var(--border-radius) var(--border-radius);
|
||||||
|
transition: background-color var(--transition-time),
|
||||||
|
height var(--transition-time);
|
||||||
|
top: calc(-1 * var(--small-margin));
|
||||||
|
width: 140%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
background-color: var(--accent-color);
|
||||||
|
|
||||||
|
transition: transform var(--transition-time),
|
||||||
|
background-color var(--transition-time);
|
||||||
|
|
||||||
|
-webkit-mask-repeat: no-repeat;
|
||||||
|
mask-repeat: no-repeat;
|
||||||
|
|
||||||
|
@include square(var(--icon-size));
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
&::before {
|
||||||
|
@include on-large-screen {
|
||||||
|
width: calc(100% + 2 * var(--small-margin));
|
||||||
|
}
|
||||||
|
|
||||||
|
@include on-small-screen {
|
||||||
|
height: calc(100% + 2 * var(--small-margin));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover::after {
|
||||||
|
transform: scale(1.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.info::after {
|
||||||
|
-webkit-mask-image: url('../assets/icons/info.svg');
|
||||||
|
mask-image: url('../assets/icons/info.svg');
|
||||||
|
}
|
||||||
|
|
||||||
|
&.maximize-full-screen::after {
|
||||||
|
-webkit-mask-image: url('../assets/icons/maximize.svg');
|
||||||
|
mask-image: url('../assets/icons/maximize.svg');
|
||||||
|
}
|
||||||
|
|
||||||
|
&.minimize-full-screen::after {
|
||||||
|
-webkit-mask-image: url('../assets/icons/minimize.svg');
|
||||||
|
mask-image: url('../assets/icons/minimize.svg');
|
||||||
|
}
|
||||||
|
|
||||||
|
&.settings::after {
|
||||||
|
-webkit-mask-image: url('../assets/icons/settings.svg');
|
||||||
|
mask-image: url('../assets/icons/settings.svg');
|
||||||
|
}
|
||||||
|
|
||||||
|
&.restart::after {
|
||||||
|
-webkit-mask-image: url('../assets/icons/restart.svg');
|
||||||
|
mask-image: url('../assets/icons/restart.svg');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,11 @@ export class CollapsiblePanelAnimator {
|
||||||
public onClose: () => unknown = () => {};
|
public onClose: () => unknown = () => {};
|
||||||
|
|
||||||
public constructor(
|
public constructor(
|
||||||
infoButton: HTMLButtonElement,
|
private readonly toggleButton: HTMLButtonElement,
|
||||||
private readonly infoPage: HTMLElement,
|
private readonly collapsibleContent: HTMLElement,
|
||||||
ignoreForCloseOnClick: HTMLElement
|
ignoreForCloseOnClick: HTMLElement
|
||||||
) {
|
) {
|
||||||
infoButton.addEventListener('click', this.toggle.bind(this));
|
toggleButton.addEventListener('click', this.toggle.bind(this));
|
||||||
window.addEventListener(
|
window.addEventListener(
|
||||||
'click',
|
'click',
|
||||||
(event) => !ignoreForCloseOnClick.contains(event.target as Node) && this.close()
|
(event) => !ignoreForCloseOnClick.contains(event.target as Node) && this.close()
|
||||||
|
|
@ -18,13 +18,15 @@ export class CollapsiblePanelAnimator {
|
||||||
|
|
||||||
public open() {
|
public open() {
|
||||||
this.isOpen = true;
|
this.isOpen = true;
|
||||||
this.infoPage.classList.remove('hidden');
|
this.collapsibleContent.classList.remove('hidden');
|
||||||
|
this.toggleButton.classList.add('active');
|
||||||
this.onOpen();
|
this.onOpen();
|
||||||
}
|
}
|
||||||
|
|
||||||
public close() {
|
public close() {
|
||||||
this.isOpen = false;
|
this.isOpen = false;
|
||||||
this.infoPage.classList.add('hidden');
|
this.collapsibleContent.classList.add('hidden');
|
||||||
|
this.toggleButton.classList.remove('active');
|
||||||
this.onClose();
|
this.onClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,22 +33,6 @@ $breakpoint-width: 600px !default;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin image-button($background-image, $background-color) {
|
|
||||||
@include square(var(--icon-size));
|
|
||||||
border: none;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
background-color: $background-color;
|
|
||||||
mask-image: $background-image;
|
|
||||||
-webkit-mask-image: $background-image;
|
|
||||||
mask-repeat: no-repeat;
|
|
||||||
|
|
||||||
transition: transform var(--transition-time), background-color var(--transition-time);
|
|
||||||
&:hover {
|
|
||||||
transform: scale(1.15);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin center-children() {
|
@mixin center-children() {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
--normal-margin: 2rem;
|
--normal-margin: 2rem;
|
||||||
--small-margin: 1rem;
|
--small-margin: 1rem;
|
||||||
--shadow: 0 0 5px 2px rgba(0, 0, 0, 0.15), 0 0 1px rgba(0, 0, 0, 0.2);
|
--shadow: 0 0 5px 2px rgba(0, 0, 0, 0.15), 0 0 1px rgba(0, 0, 0, 0.2);
|
||||||
--icon-size: 2.8rem;
|
--icon-size: 2.5rem;
|
||||||
--large-icon-size: 3.75rem;
|
--large-icon-size: 3.75rem;
|
||||||
--body-width: min(80%, 60rem);
|
--body-width: min(80%, 60rem);
|
||||||
}
|
}
|
||||||
|
|
@ -29,5 +29,6 @@
|
||||||
--body-width: 90%;
|
--body-width: 90%;
|
||||||
--large-margin: 2.8rem;
|
--large-margin: 2.8rem;
|
||||||
--normal-margin: 2rem;
|
--normal-margin: 2rem;
|
||||||
|
--icon-size: 2rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue