/** * @copyright Copyright (c) 2018 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ $property-label-min-width: 60px; $property-label-max-width: 2 * $property-label-min-width; $property-value-max-width: 250px; .property { position: relative; width: 100%; // we need this to keep the alignment of the ext and delete/action button // The flex grow will never go over those values. Therefore we can set // the max width and keep the right alignment max-width: $property-label-max-width + $property-value-max-width + 44px; @include generate-grid-span(1); justify-self: center; &--last { margin-bottom: $grid-height-unit; } // no delete/action icon on addressbook selector &--addressbooks &__actions { display: none !important; } &--without-actions { padding-right: 44px; // actions menu / button } // property row &__row { position: relative; display: flex; align-items: center; } // property label or multiselect within row &__label, &__label.multiselect { flex: 1 0; // min width is 60px, let's grow until 120px width: $property-label-min-width; min-width: $property-label-min-width !important; // override multiselect max-width: $property-label-max-width; height: $grid-input-height-with-margin; margin: $grid-input-margin 5px $grid-input-margin 0 !important; // override multiselect user-select: none; text-align: right; background-size: 16px; line-height: $grid-input-height-with-margin + 1px; &, .multiselect__input { &::placeholder { text-align: right; } + .multiselect__single { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } } &:not(.multiselect) { overflow: hidden; overflow-x: hidden; white-space: nowrap; text-overflow: ellipsis; opacity: .7; } // mouse feedback .multiselect__tags { opacity: .7; } &:hover, &:focus, &:active { .multiselect__tags { opacity: 1; border-color: var(--color-border-dark); } } // read-only mode &.multiselect--disabled { &, .multiselect__single { &, &:hover, &:focus &:active { border-color: transparent !important; background-color: var(--color-main-background) !important; } } } } &__label.multiselect { .multiselect__tags { border: none !important; // override multiselect .multiselect__single { padding-right: 24px; background-repeat: no-repeat; background-position: center right 4px; } } .multiselect__content-wrapper { right: 0; // align right width: auto !important; // grow bigger if content is bigger than the original 100% min-width: $property-label-max-width; // improve readability on narrow screens } @media only screen and (max-width: 768px) { // align left of screen on narrow views .multiselect__content-wrapper { right: auto; left: 0; } } } // Property value within row, after label &__value { flex: 1 1; textarea& { align-self: flex-start; min-height: 2 * $grid-height-unit - 2*$grid-input-margin; max-height: 5 * $grid-height-unit - 2*$grid-input-margin; } // read-only mode &:read-only { border-color: var(--color-border-dark); } input&--with-ext { // ext icon width + 8px padding padding-right: 24px; &:hover, &:focus, &:active { ~ .property__ext { opacity: .5; } } } } // show ext button on full row hover &:hover &__ext { opacity: .5; } // External link (tel, mailto, http, ftp...) &__ext { position: absolute; // 8px padding + actions right: 44px + 8px; opacity: 0; &:hover, &:focus, &:active { opacity: .7; } } // Delete property button + actions &__actions { z-index: 10; margin-left: auto !important; // floating actions next to the title &--floating { position: absolute !important; right: 0; bottom: 0; } } .property__value { margin-right: 0; } }