TeaWeb/shared/js/ui/modal/permission/PermissionEditor.scss
2020-06-15 16:58:17 +02:00

458 lines
No EOL
10 KiB
SCSS

@import "../../../../css/static/mixin";
@import "../../../../css/static/properties";
html:root {
--modal-permission-loading: #666;
--modal-permission-error: #666161;
}
.containerMenuBar {
padding-top: .5em;
padding-left: .5em;
padding-right: .5em;
flex-shrink: 0;
flex-grow: 0;
height: 3em;
box-sizing: content-box;
display: flex;
flex-direction: row;
justify-content: stretch;
.clients {
width: 12em;
min-width: 3em;
flex-shrink: 1;
flex-grow: 0;
margin-right: 1em;
align-self: center;
&.hidden {
display: none;
}
}
.filter {
flex-grow: 1;
flex-shrink: 1;
min-width: 4em;
align-self: center;
padding-top: 0 !important;
margin-bottom: 0 !important;
.label {
top: 0.5em;
}
&:focus-within .label, .labelFloating {
top: -0.4em!important;
}
}
.options {
display: flex;
flex-direction: column;
justify-content: center;
margin-left: .5em;
font-size: .9em;
padding-top: .8em; /* since we've only one switch currently */
}
.containerIconSelect {
position: relative;
height: 2.5em;
border-radius: .2em;
margin-left: 1em;
display: flex;
flex-direction: row;
justify-content: flex-end;
cursor: pointer;
background-color: var(--modal-permissions-icon-select);
border: 1px solid var(--modal-permissions-icon-select-border);
.preview {
height: 100%;
width: 3em;
border: none;
border-right: 1px solid var(--modal-permissions-icon-select-border);
display: flex;
flex-direction: column;
justify-content: space-around;
> div {
align-self: center;
}
> img {
align-self: center;
width: 1em;
height: 1em;
}
@include transition(border-color $button_hover_animation_time ease-in-out);
}
.containerDropdown {
position: relative;
cursor: pointer;
display: flex;
flex-direction: column;
justify-content: space-around;
height: 100%;
width: 1.5em;
.button {
text-align: center;
:global(.arrow) {
border-color: var(--text);
}
}
.dropdown {
display: none;
position: absolute;
width: max-content;
top: calc(2.5em - 2px);
flex-direction: column;
justify-content: flex-start;
background-color: var(--modal-permissions-icon-select);
border: 1px solid var(--modal-permissions-icon-select-border);
border-radius: .2em 0 .2em .2em;
right: -1px;
z-index: 10;
.entry {
padding: .5em;
&:not(:last-of-type) {
border: none;
border-bottom: 1px solid var(--modal-permissions-icon-select-border);
}
&:hover {
background-color: var(--modal-permissions-icon-select-hover);
}
}
}
&:hover {
border-bottom-right-radius: 0;
.dropdown {
display: flex;
}
}
}
&:hover {
background-color: var(--modal-permissions-icon-select-hover);
border-color: var(--modal-permissions-icon-select-hover-border);
.preview {
border-color: var(--modal-permissions-icon-select-hover-border);
}
}
@include transition(border-color $button_hover_animation_time ease-in-out);
}
}
.permissionTable {
@include user-select(none);
position: relative;
display: flex;
flex-direction: column;
justify-content: stretch;
min-height: 6em;
height: 50em;
flex-shrink: 1;
flex-grow: 1;
padding-left: .5em;
padding-right: .5em;
.row {
display: flex;
flex-direction: row;
justify-content: stretch;
flex-grow: 0;
flex-shrink: 0;
width: 100%;
height: 2em;
border: none;
border-bottom: 1px solid var(--modal-permissions-table-border);
@mixin fixed-column($name, $width) {
.column#{$name} {
display: flex;
flex-direction: row;
justify-content: stretch;
flex-grow: 0;
flex-shrink: 0;
width: $width;
align-items: center;
padding-left: 1em;
border: none;
border-right: 1px solid var(--modal-permissions-table-border);
overflow: hidden;
a {
max-width: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
}
@include fixed-column(Name, 6em);
@include fixed-column(Value, 6em);
@include fixed-column(Skip, 5em);
@include fixed-column(Negate, 5em);
@include fixed-column(Granted, 6em);
.columnName {
flex-grow: 1;
flex-shrink: 1;
.groupName {
margin-left: .5em;
}
}
.columnGranted {
border-right: none;
}
&.active {
color: var(--modal-permissions-table-entry-active-text)!important;
}
&.group {
color: var(--modal-permissions-table-entry-group-text)!important;
font-weight: bold;
:global(.arrow) {
cursor: pointer;
border-color: var(--modal-permissions-table-entry-active-text);
}
}
&.permission {}
}
.header {
.row {
background-color: var(--modal-permissions-table-header);
color: var(--modal-permissions-table-header-text);
font-weight: bold;
.columnGranted {
margin-right: .5em;
}
}
}
.body {
flex-grow: 1;
flex-shrink: 1;
position: relative;
min-height: 6em; /* TODO: Width */
display: flex;
flex-direction: column;
justify-content: stretch;
overflow-y: scroll;
overflow-x: auto;
@include chat-scrollbar-vertical();
@include chat-scrollbar-horizontal();
.row {
position: absolute;
left: 0;
right: 0;
color: var(--modal-permissions-table-row-text);
background-color: var(--modal-permissions-table-row-odd);
&.even {
background-color: var(--modal-permissions-table-row-even);
}
&:hover {
background-color: var(--modal-permissions-table-row-hover);
}
input[type="number"] {
color: var(--modal-permissions-table-input);
outline: none;
background: transparent;
border: none;
height: 1.5em;
width: 5em; /* the column width minus one */
/* fix the column padding */
padding-left: 1em;
margin-left: -.5em; /* have a bit of space on both sides */
border-bottom: 2px solid transparent;
@include transition(border-bottom-color $button_hover_animation_time ease-in-out);
&:not(.applying):focus {
border-bottom-color: var(--modal-permissions-table-input-focus);
}
&.applying {
padding-left: 0;
}
}
/* We cant use this effect here because the odd/even effect would be a bit crazy then */
//@include transition(background-color $button_hover_animation_time ease-in-out);
}
.spaceAllocator {
width: 100%;
flex-shrink: 0;
flex-grow: 0;
}
.overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: flex;
flex-direction: column;
justify-content: flex-start;
z-index: 1;
background-color: var(--modal-permission-right);
padding-top: 2em;
a {
text-align: center;
font-size: 1.6em;
color: var(--modal-permission-loading);
}
&.hidden {
opacity: 0;
pointer-events: none;
}
&.error {
a {
color: var(--modal-permission-error);
}
}
}
}
.overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: flex;
flex-direction: column;
justify-content: center;
z-index: 1;
background: var(--modal-permission-right);
&.hidden {
display: none;
}
&.unset {}
&.noPermissions {
justify-content: flex-start;
padding-top: 2em;
font-size: 1em;
a {
text-align: center;
font-size: 1.5em;
color: var(--modal-permission-no-permnissions);
}
}
}
}
.containerFooter {
display: flex;
flex-direction: row;
justify-content: flex-end;
padding: .5em;
button {
display: flex;
flex-direction: row;
justify-content: center;
* {
align-self: center;
}
div {
margin-right: .5em;
}
}
}