refactore of menus: classes and scss

This commit is contained in:
Simon Vieille
2025-04-14 20:16:54 +02:00
parent c4a92dbbc3
commit c32d1fffec
19 changed files with 358 additions and 353 deletions
+298 -300
View File
@@ -15,18 +15,14 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
.__debug {
background: red;
padding: 5px;
color: #fff;
width: 50vw;
bottom: 0;
right: 0;
z-index: 3000;
position: fixed;
#header {
.cm-opener {
margin-left: 0px;
margin-top: 0px;
}
}
#side-menu {
.cm {
position: fixed;
top: 0;
left: 0;
@@ -41,258 +37,261 @@
rgba(0, 0, 0, 0.18) 0px 4.8px 14.4px 0px;
display: none;
&-opener {
background: var(--side-menu-opener, url('../../img/side-menu-opener.svg'));
background-color: transparent !important;
height: 40px !important;
width: 40px !important;
border-radius: 0 !important;
border: 0 !important;
padding-right: 12px !important;
padding-left: 12px !important;
margin-top: 1px !important;
margin-left: 5px !important;
margin-left: 3px !important;
overflow: hidden;
span {
position: relative;
left: 50px;
display: block;
width: 1px;
height: 1px;
overflow: hidden;
}
&:active,
&:focus {
background-color: var(--side-menu-current-app-background-color, #444) !important;
}
}
&-closer {
background: url('../../img/side-menu-opener-closer.svg');
display: none;
}
a {
transition: 0.2s;
}
&-categories-wrapper {
padding-bottom: 70px;
}
&-search {
float: right;
input {
background: none;
border: 0;
border-radius: 0;
color: var(--side-menu-text-color);
&::placeholder {
color: var(--side-menu-text-color);
}
}
}
&-categories {
max-height: calc(100vh - 55px);
overflow: auto;
position: relative;
display: flex;
flex-wrap: wrap;
justify-content: center;
padding: 0 10% 0 10%;
}
&-category {
padding: 10px 20px;
flex: 1 1 auto;
&-title {
padding-left: 10px;
color: var(--side-menu-text-color, #fff);
font-weight: bold;
font-size: 20px;
margin-bottom: 12px;
line-height: 30px;
margin-top: 0;
}
}
&-header {
width: 100%;
z-index: 2300;
max-width: 290px;
padding-top: 2px;
top: 0;
&::after {
content: ' ';
display: block;
clear: both;
}
}
&-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
z-index: 3001;
&-bar {
height: 4px;
background: var(--side-menu-loader-color, #0e75ac);
width: 0;
transition-property: width;
}
}
&-apps {
height: calc(100vh - 49px);
top: 49px;
z-index: 2200;
position: fixed;
width: 100%;
max-width: 290px;
overflow: auto;
&.side-menu-apps-list--with-logo {
height: calc(100vh - 160px);
top: 160px;
}
}
&-app {
a {
line-height: 30px;
color: var(--side-menu-text-color, #fff);
display: block;
padding: 7px 0 5px 15px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
a:hover,
a:focus,
&:active,
&.active {
background: var(--side-menu-current-app-background-color, #444);
}
&-icon {
width: 20px;
vertical-align: middle;
margin-top: -4px;
margin-right: 10px;
filter: invert(var(--side-menu-icon-invert-filter, 0%));
opacity: var(--side-menu-icon-opacity, 1);
}
}
&-setting {
margin-right: 9px;
margin-top: 2px;
float: right;
line-height: 34px;
height: 42px;
display: none;
a {
color: var(--side-menu-text-color, #fff);
display: block;
padding: 4px 7px;
}
&:hover a,
a:active,
a:focus {
background: var(--side-menu-current-app-background-color, #444);
}
img {
vertical-align: bottom;
margin-left: 3px;
width: 32px;
height: 32px;
}
}
&.open {
display: block;
.side-menu-settings {
.cm-setting {
display: block;
}
}
.side-menu-opener {
margin-top: 1px !important;
&-logo {
text-align: center;
clear: both;
img {
max-width: 60%;
max-height: 100px;
}
}
&.side-menu-big {
&--topwidemenu {
max-width: 100%;
height: auto;
}
&.side-menu-with-categories {
&--sidemenuwithcategories {
max-width: 290px;
height: 100vh;
.side-menu-categories {
.cm-categories {
display: block;
padding: 0;
width: 100%;
}
.side-menu-category {
.cm-category {
padding: 10px 0;
}
}
}
#header {
.side-menu-opener {
margin-left: 0px;
margin-top: 0px;
}
}
.side-menu-settings {
margin-right: 9px;
margin-top: 2px;
float: right;
line-height: 34px;
height: 42px;
display: none;
a {
color: var(--side-menu-text-color, #fff);
display: block;
padding: 4px 7px;
}
&:hover a,
a:active,
a:focus {
background: var(--side-menu-current-app-background-color, #444);
}
img {
vertical-align: bottom;
margin-left: 3px;
width: 32px;
height: 32px;
}
}
.side-menu-opener {
background: var(--side-menu-opener, url('../../img/side-menu-opener.svg'));
background-color: transparent !important;
height: 40px !important;
width: 40px !important;
border-radius: 0 !important;
border: 0 !important;
padding-right: 12px !important;
padding-left: 12px !important;
margin-left: 5px !important;
margin-left: 3px !important;
overflow: hidden;
span {
position: relative;
left: 50px;
display: block;
width: 1px;
height: 1px;
overflow: hidden;
}
&:active,
&:focus {
background-color: var(--side-menu-current-app-background-color, #444) !important;
}
}
.side-menu-closer {
background: url('../../img/side-menu-opener-closer.svg');
display: none;
}
.side-menu-apps-list {
height: calc(100vh - 49px);
top: 49px;
z-index: 2200;
position: fixed;
width: 100%;
max-width: 290px;
overflow: auto;
&.side-menu-apps-list--with-logo {
height: calc(100vh - 160px);
top: 160px;
}
}
.side-menu-app-icon {
width: 20px;
vertical-align: middle;
margin-top: -4px;
margin-right: 10px;
filter: invert(var(--side-menu-icon-invert-filter, 0%));
opacity: var(--side-menu-icon-opacity, 1);
}
.side-menu-app {
a {
line-height: 30px;
color: var(--side-menu-text-color, #fff);
display: block;
padding: 7px 0 5px 15px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
a:hover,
a:focus,
&:active,
&.active {
background: var(--side-menu-current-app-background-color, #444);
}
}
.side-menu-logo {
text-align: center;
clear: both;
img {
max-width: 60%;
max-height: 100px;
}
}
.side-menu-header {
width: 100%;
z-index: 2300;
max-width: 290px;
padding-top: 2px;
top: 0;
&::after {
content: ' ';
display: block;
clear: both;
}
}
#side-menu.side-menu-with-categories .side-menu-header {
max-width: 295px;
}
#side-menu-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
z-index: 3001;
#side-menu-loader-bar {
height: 4px;
background: var(--side-menu-loader-color, #0e75ac);
width: 0;
transition-property: width;
}
}
.side-menu-big,
.side-menu-with-categories {
.side-menu-apps-list {
height: auto;
position: static;
max-width: 100vw;
overflow: auto;
}
.side-menu-app {
a {
padding: 7px 0 7px 7px;
.cm-header {
max-width: 295px;
}
}
.side-menu-app-icon {
vertical-align: middle;
margin-top: -2px;
&.cm--topwidemenu,
&.cm--sidemenuwithcategories {
.cm-apps {
height: auto !important;
position: static !important;
max-width: 100vw !important;
overflow: auto !important;
}
.cm-app {
a {
padding: 7px 0 7px 7px;
}
&-icon {
vertical-align: middle;
margin-top: -2px;
}
}
}
&.cm--standardmenu {
visibility: hidden;
&.show {
visibility: visible;
}
}
}
.side-menu-categories-wrapper {
padding-bottom: 70px;
}
.side-menu-categories {
max-height: calc(100vh - 55px);
overflow: auto;
position: relative;
display: flex;
flex-wrap: wrap;
justify-content: center;
padding: 0 10% 0 10%;
}
.side-menu-category {
padding: 10px 20px;
flex: 1 1 auto;
}
.side-menu-category-title {
padding-left: 10px;
color: var(--side-menu-text-color, #fff);
font-weight: bold;
font-size: 20px;
margin-bottom: 12px;
line-height: 30px;
margin-top: 0;
}
.side-menu-loader {
text-align: center;
}
.side-menu-loader svg {
width: 45px;
margin: auto;
stroke: var(--side-menu-text-color, #fff);
}
.side-menu-always-displayed {
.cm-always-displayed {
body {
width: calc(100% - 50px) !important;
position: absolute;
@@ -301,45 +300,59 @@
#header {
position: absolute !important;
.cm-opener {
display: none;
}
}
#side-menu {
.cm {
display: block;
}
.side-menu-apps-list {
height: calc(100vh - 49px);
top: 49px;
}
.side-menu-apps-list:hover {
overflow: auto;
}
#side-menu,
.side-menu-header,
.side-menu-apps-list {
width: 50px;
}
#side-menu .side-menu-app-text,
#header .side-menu-opener,
.side-menu-logo {
display: none;
}
&-apps {
height: calc(100vh - 49px);
width: 50px;
top: 49px;
#side-menu .side-menu-header {
height: 49px;
}
&:hover {
overflow: auto;
}
}
#side-menu.open,
#side-menu.open .side-menu-apps-list,
#side-menu.open .side-menu-header {
width: 100%;
}
&-header {
height: 49px;
width: 50px;
}
#side-menu.open .side-menu-app-text {
display: inline;
&-logo {
display: none;
}
&-app {
&-text {
display: none;
}
}
&.open {
width: 100%;
max-width: 290px;
.cm-apps {
width: 100%;
}
.cm-app {
&-text {
display: inline;
}
}
.cm-header {
width: 100%;
}
}
}
.app-navigation-toggle-wrapper {
@@ -348,55 +361,40 @@
}
}
.app-menu {
visibility: hidden;
}
@media screen and (max-width: 1024px) {
.cm {
&--topwidemenu {
max-width: 290px;
height: 100vh;
.app-menu.show {
visibility: visible;
}
.cm-header {
max-width: 100%;
}
}
.side-menu-search {
float: right;
}
&-categories {
display: block;
padding: 0;
}
.side-menu-search {
input {
background: none;
border: 0;
border-radius: 0;
color: var(--side-menu-text-color);
&::placeholder {
color: var(--side-menu-text-color);
&-category {
padding: 10px 0;
}
}
}
@media screen and (max-width: 1024px) {
#side-menu.side-menu-big {
max-width: 290px;
height: 100vh;
}
.side-menu-categories {
display: block;
padding: 0;
}
.side-menu-category {
padding: 10px 0;
}
}
@media screen and (min-width: 1024px) {
.side-menu-closer {
display: block;
float: right;
margin-right: 9px;
}
.cm {
&--topwidemenu {
.cm-header {
max-width: 100%;
}
}
.side-menu-big .side-menu-header {
max-width: 100%;
&-closer {
display: block;
float: right;
margin-right: 9px;
}
}
}