967 lines
17 KiB
SCSS
967 lines
17 KiB
SCSS
|
$activeColor: #3eb998;
|
||
|
$deleteColor: #e83561;
|
||
|
$errorColor: #FC3A3F;
|
||
|
$gridMargin: 0 0.6em 0.6em 0;
|
||
|
$itemPadding: 0.4em;
|
||
|
$focusPointCircleSize: 40px;
|
||
|
|
||
|
|
||
|
.InputfieldImage {
|
||
|
.InputfieldHeader {
|
||
|
.InputfieldImageListToggle {
|
||
|
// toggles between grid, left and list mode
|
||
|
float: right;
|
||
|
padding-right: 0.75em;
|
||
|
position: relative;
|
||
|
|
||
|
&--active {
|
||
|
opacity: 0.5;
|
||
|
}
|
||
|
|
||
|
&:first-child {
|
||
|
// offset from far right side
|
||
|
padding-right: 1em;
|
||
|
}
|
||
|
}
|
||
|
.InputfieldImageSizeSlider {
|
||
|
float: right;
|
||
|
width: 100px;
|
||
|
position: relative;
|
||
|
top: 8px;
|
||
|
right: 1em;
|
||
|
|
||
|
.ui-slider-handle {
|
||
|
outline: none;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&.InputfieldFileEmpty,
|
||
|
&.InputfieldStateCollapsed {
|
||
|
.InputfieldImageListToggle,
|
||
|
.InputfieldImageSizeSlider {
|
||
|
// prevents display of toggles and slider when there are no images visible
|
||
|
display: none;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// error listing
|
||
|
.InputfieldImageErrors {
|
||
|
padding-left: 0;
|
||
|
margin-left: 0;
|
||
|
li {
|
||
|
margin-bottom: .5em;
|
||
|
margin-top: 0;
|
||
|
color: white;
|
||
|
background-color: $errorColor;
|
||
|
padding: .3em .5em;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// The <ul> element containing li.gridImage items and .InputfieldImageEdit
|
||
|
.gridImages {
|
||
|
list-style: none;
|
||
|
padding-left: 0;
|
||
|
position: relative;
|
||
|
margin: 0;
|
||
|
margin-right: -.6em;
|
||
|
display: block;
|
||
|
list-style: none;
|
||
|
}
|
||
|
|
||
|
.gridImage .gridImage__overflow, // grid view(s)
|
||
|
.InputfieldImageEditAll .gridImage .gridImage__overflow img, // list view
|
||
|
.InputfieldImageEdit__image { // clicked image in editor in grid view
|
||
|
// the following creates a checkerboard pattern (for seeing transparency)
|
||
|
background-color: #fefefe;
|
||
|
background-image: linear-gradient(45deg, #cbcbcb 25%, transparent 25%, transparent 75%, #cbcbcb 75%, #cbcbcb), linear-gradient(45deg, #cbcbcb 25%, transparent 25%, transparent 75%, #cbcbcb 75%, #cbcbcb);
|
||
|
background-size: 16px 16px;
|
||
|
background-position: 0 0, 8px 8px;
|
||
|
}
|
||
|
|
||
|
// An individual image grid item
|
||
|
.gridImage {
|
||
|
list-style: none;
|
||
|
position: relative;
|
||
|
display: inline-block;
|
||
|
|
||
|
@at-root li#{&} {
|
||
|
// overwrite .content li
|
||
|
display: inline-block;
|
||
|
margin: $gridMargin;
|
||
|
}
|
||
|
|
||
|
box-shadow: 0 1px 3px rgba(black, 0.2);
|
||
|
border-radius: 2px;
|
||
|
background: #fff;
|
||
|
padding: $itemPadding;
|
||
|
vertical-align: top;
|
||
|
border: 1px dashed transparent; // to have the placeholder item the same size
|
||
|
|
||
|
|
||
|
&__overflow {
|
||
|
width: 100%;
|
||
|
height: 100%;
|
||
|
overflow: hidden;
|
||
|
position: relative;
|
||
|
|
||
|
& > img {
|
||
|
position: absolute;
|
||
|
top: 50%;
|
||
|
left: 50%;
|
||
|
//transition: transform ease .3s;
|
||
|
-ms-transform: translate3d(-50%, -50%, 0);
|
||
|
transform: translate3d(-50%, -50%, 0);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
&.gridImagePlaceholder {
|
||
|
.gridImage__overflow {
|
||
|
background: #fff;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&.ui-sortable-placeholder {
|
||
|
display: inline-block;
|
||
|
border-radius: 2px;
|
||
|
border: 1px dashed #ccc;
|
||
|
padding: $itemPadding;
|
||
|
visibility: visible !important;
|
||
|
vertical-align: top;
|
||
|
background-color: transparent;
|
||
|
box-shadow: none;
|
||
|
|
||
|
&::after {
|
||
|
//replacement for image
|
||
|
content: " ";
|
||
|
display: block;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&__hover {
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
left: 0;
|
||
|
width: 100%;
|
||
|
height: 100%;
|
||
|
padding: $itemPadding;
|
||
|
}
|
||
|
|
||
|
&__inner {
|
||
|
position: relative;
|
||
|
width: 100%;
|
||
|
height: 100%;
|
||
|
|
||
|
.gridImage:hover & {
|
||
|
background: rgba(#3eb998, .7);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&__resize {
|
||
|
position: absolute;
|
||
|
display: block;
|
||
|
height: 100%;
|
||
|
width: 100%;
|
||
|
line-height: 130px;
|
||
|
text-align: center;
|
||
|
color: white;
|
||
|
font-size: 1.3em;
|
||
|
cursor: move;
|
||
|
text-shadow: 0px 0px 7px rgba(#3eb998, .7);
|
||
|
&.pw-resizing {
|
||
|
text-shadow: none;
|
||
|
background: rgba(0,0,0,0.7);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&__progress {
|
||
|
/* Reset the default appearance */
|
||
|
-webkit-appearance: none;
|
||
|
-moz-appearance: none;
|
||
|
appearance: none;
|
||
|
/* Get rid of default border in Firefox. */
|
||
|
border: none;
|
||
|
|
||
|
color: $activeColor;
|
||
|
width: 100%;
|
||
|
height: 10px;
|
||
|
background: transparent;
|
||
|
|
||
|
position: absolute;
|
||
|
bottom: 0;
|
||
|
left: 0;
|
||
|
|
||
|
&::-webkit-progress-bar {
|
||
|
background-color: inherit;
|
||
|
}
|
||
|
|
||
|
&[value]::-webkit-progress-value {
|
||
|
background-color: $activeColor;
|
||
|
}
|
||
|
|
||
|
&[value]::-moz-progress-bar {
|
||
|
background-color: $activeColor;
|
||
|
}
|
||
|
|
||
|
&[value='-1'] {
|
||
|
background-color: $deleteColor;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// &__trash {
|
||
|
&__btn {
|
||
|
// position: absolute;
|
||
|
position: relative;
|
||
|
float: left;
|
||
|
background: white;
|
||
|
padding: .2em .6em;
|
||
|
color: #aaa;
|
||
|
z-index: 2;
|
||
|
cursor: pointer;
|
||
|
|
||
|
@at-root .gridImage #{&} {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
&--single {
|
||
|
display: block !important;
|
||
|
position: static;
|
||
|
}
|
||
|
|
||
|
& > input {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
.gridImage:hover & {
|
||
|
display: block;
|
||
|
}
|
||
|
|
||
|
@at-root .gridImage:hover #{&}:hover {
|
||
|
// overwrite a:hover
|
||
|
display: block;
|
||
|
color: $deleteColor;
|
||
|
background-color: white;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&__edit {
|
||
|
// The "Edit" link
|
||
|
position: absolute;
|
||
|
display: block;
|
||
|
height: 100%;
|
||
|
width: 100%;
|
||
|
line-height: 130px;
|
||
|
text-align: center;
|
||
|
color: white !important;
|
||
|
font-size: 1.3em;
|
||
|
cursor: move;
|
||
|
text-shadow: 0px 0px 7px rgba(#3eb998, .7);
|
||
|
|
||
|
span {
|
||
|
cursor: pointer;
|
||
|
}
|
||
|
|
||
|
display: none;
|
||
|
|
||
|
.gridImage:hover & {
|
||
|
display: block;
|
||
|
}
|
||
|
|
||
|
&:hover {
|
||
|
color: white;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&__tooltip {
|
||
|
// tooltip that appears above a hovered .gridImage
|
||
|
pointer-events: none;
|
||
|
position: absolute;
|
||
|
bottom: 100%;
|
||
|
padding: 20px;
|
||
|
-webkit-filter: drop-shadow(0 0 5px rgba(0, 0, 0, 0.1));
|
||
|
filter: drop-shadow(0 0 5px rgba(0, 0, 0, 0.1));
|
||
|
left: 50%;
|
||
|
//transform: translate(-50%, 0) perspective(1px) scale(1.01);
|
||
|
transform: translate(-50%, 0);
|
||
|
margin-bottom: 12px;
|
||
|
background: #fff;
|
||
|
z-index: 110;
|
||
|
box-shadow: 0 0 1px rgba(black, 0.25);
|
||
|
opacity: 0;
|
||
|
transition: opacity .2s 02;
|
||
|
|
||
|
.gridImage:hover & {
|
||
|
display: block;
|
||
|
opacity: 1;
|
||
|
transition: opacity .2s 1s;
|
||
|
}
|
||
|
|
||
|
.InputfieldImageSorting & {
|
||
|
display: none !important;
|
||
|
}
|
||
|
|
||
|
input {
|
||
|
pointer-events: none;
|
||
|
}
|
||
|
|
||
|
table {
|
||
|
margin: 0;
|
||
|
border-spacing: 10px 0;
|
||
|
border-collapse: separate;
|
||
|
|
||
|
th {
|
||
|
color: black;
|
||
|
font-weight: bold;
|
||
|
text-align: right;
|
||
|
}
|
||
|
th, td {
|
||
|
border: none !important;
|
||
|
background: white !important;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&:after {
|
||
|
top: 100%;
|
||
|
left: 50%;
|
||
|
border: solid transparent;
|
||
|
content: " ";
|
||
|
height: 0;
|
||
|
width: 0;
|
||
|
position: absolute;
|
||
|
pointer-events: none;
|
||
|
border-color: rgba(#fff, 0);
|
||
|
border-top-color: #fff;
|
||
|
border-width: 10px;
|
||
|
margin-left: -10px;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&.gridImageEditing {
|
||
|
// highlights the current image being edited
|
||
|
.gridImage__inner {
|
||
|
background: rgba($activeColor, .5);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&--active {
|
||
|
background-color: $activeColor;
|
||
|
|
||
|
& .gridImage__inner {
|
||
|
background: rgba($activeColor, .5);
|
||
|
}
|
||
|
|
||
|
& .gridImage__btn {
|
||
|
background-color: $activeColor;
|
||
|
color: white;
|
||
|
|
||
|
&:hover {
|
||
|
background-color: $activeColor;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&:hover .gridImage__btn:hover {
|
||
|
background-color: $activeColor;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&--delete {
|
||
|
// gridImage item marked for deletion
|
||
|
background-color: $deleteColor;
|
||
|
|
||
|
@at-root .InputfieldImageEditSingle.gridImage--delete {
|
||
|
background-color: transparent;
|
||
|
.InputfieldImageEdit__inner {
|
||
|
outline: 3px solid $deleteColor;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
& .gridImage__trash {
|
||
|
background-color: $deleteColor;
|
||
|
color: white;
|
||
|
display: block;
|
||
|
|
||
|
&:hover {
|
||
|
background-color: $deleteColor;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&:hover .gridImage__edit {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
&:hover .gridImage__trash:hover {
|
||
|
background-color: $deleteColor;
|
||
|
color: white;
|
||
|
}
|
||
|
|
||
|
&:hover .gridImage__inner {
|
||
|
background: rgba($deleteColor, 0.3);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// A type of item that appears in a ul.gridImages but is not itself a .gridImage.
|
||
|
// It contains the image enlargement, file, edit buttons, and description/tags fields.
|
||
|
.InputfieldImageEdit {
|
||
|
position: relative;
|
||
|
display: none;
|
||
|
|
||
|
&--active,
|
||
|
&Single {
|
||
|
display: block;
|
||
|
}
|
||
|
|
||
|
&__core {
|
||
|
// when both description and custom fields are present, this prevents them from having no margin between them
|
||
|
margin-bottom: 0.5em;
|
||
|
}
|
||
|
|
||
|
&__inner {
|
||
|
position: relative;
|
||
|
display: flex;
|
||
|
flex-flow: row;
|
||
|
margin: 1em .6em 1em 0;
|
||
|
-webkit-filter: drop-shadow(0 1px 3px rgba(black, 0.2));
|
||
|
filter: drop-shadow(0 1px 3px rgba(black, 0.2));
|
||
|
background-color: white;
|
||
|
}
|
||
|
|
||
|
&__close {
|
||
|
cursor: pointer;
|
||
|
position: absolute;
|
||
|
font-size: 1.4em;
|
||
|
right: .5em;
|
||
|
top: 0;
|
||
|
color: #ccc !important;
|
||
|
text-decoration: none !important;
|
||
|
|
||
|
.InputfieldFileSingle & {
|
||
|
display: none;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&__trash-single {
|
||
|
cursor: pointer;
|
||
|
position: absolute;
|
||
|
font-size: 1.4em;
|
||
|
right: 0;
|
||
|
top: 0;
|
||
|
color: #aaa !important;
|
||
|
text-decoration: none !important;
|
||
|
|
||
|
&:hover {
|
||
|
color: $deleteColor;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&__arrow {
|
||
|
// arrow that points up to the item being edited
|
||
|
bottom: 100%;
|
||
|
content: " ";
|
||
|
height: 0;
|
||
|
width: 0;
|
||
|
position: absolute;
|
||
|
pointer-events: none;
|
||
|
border: .5em solid rgba(white, 0);
|
||
|
border-bottom-color: white;
|
||
|
transform: translate(-50%, 0);
|
||
|
}
|
||
|
|
||
|
&__imagewrapper {
|
||
|
display: inline-block;
|
||
|
display: flex;
|
||
|
vertical-align: top;
|
||
|
// align-items: center;
|
||
|
justify-content: space-around;
|
||
|
width: 300px;
|
||
|
border-right: 1px solid #eee;
|
||
|
min-height: 1em;
|
||
|
padding: 20px;
|
||
|
|
||
|
& > div {
|
||
|
// Fix for Firefox not respecting aspect ratio on images
|
||
|
width: 100%;
|
||
|
position: relative;
|
||
|
}
|
||
|
.detail {
|
||
|
text-align: center;
|
||
|
margin-top: 2px;
|
||
|
}
|
||
|
.detail-upload {
|
||
|
display: block;
|
||
|
opacity: 0;
|
||
|
}
|
||
|
.detail-focus {
|
||
|
display: none;
|
||
|
}
|
||
|
&:hover .detail-upload {
|
||
|
opacity: 0.7;
|
||
|
}
|
||
|
& > div.focusWrap .detail-upload {
|
||
|
display: none;
|
||
|
}
|
||
|
& > div.focusWrap .detail-focus {
|
||
|
display: block;
|
||
|
opacity: 0.7;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
&__replace img {
|
||
|
// dragging new img on top of old one
|
||
|
opacity: 0.5;
|
||
|
}
|
||
|
|
||
|
&__edit {
|
||
|
display: inline-block;
|
||
|
vertical-align: top;
|
||
|
min-height: 100%;
|
||
|
padding: 20px;
|
||
|
flex-grow: 1;
|
||
|
|
||
|
.InputfieldFileDescription,
|
||
|
.InputfieldFileTags {
|
||
|
input {
|
||
|
width: 100%;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&__image {
|
||
|
position: relative;
|
||
|
margin: 0 auto;
|
||
|
height: auto;
|
||
|
cursor: zoom-in;
|
||
|
max-width: 100%;
|
||
|
}
|
||
|
|
||
|
&__name {
|
||
|
font-weight: bold;
|
||
|
display: inline-block;
|
||
|
margin-right: .5em !important;
|
||
|
|
||
|
/* These are technically the same, but use both */
|
||
|
overflow-wrap: break-word;
|
||
|
word-wrap: break-word;
|
||
|
|
||
|
-ms-word-break: break-all;
|
||
|
/* This is the dangerous one in WebKit, as it breaks things wherever */
|
||
|
word-break: break-all;
|
||
|
/* Instead use this non-standard one: */
|
||
|
word-break: break-word;
|
||
|
|
||
|
/* Adds a hyphen where the word breaks, if supported (No Blink) */
|
||
|
-ms-hyphens: auto;
|
||
|
-moz-hyphens: auto;
|
||
|
-webkit-hyphens: auto;
|
||
|
hyphens: auto;
|
||
|
cursor: pointer;
|
||
|
}
|
||
|
|
||
|
&__info {
|
||
|
font-size: .9em;
|
||
|
color: #ccc;
|
||
|
white-space: nowrap;
|
||
|
}
|
||
|
|
||
|
&__buttons {
|
||
|
margin: 1em 0 0.5em 0;
|
||
|
button {
|
||
|
margin-bottom: 0.5em;
|
||
|
a, a:hover {
|
||
|
text-decoration: none;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.InputfieldFileDescription + .InputfieldFileTags {
|
||
|
margin-top: 0.5em;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
.gridImage__overflow .focusArea,
|
||
|
.InputfieldImageEdit .focusArea {
|
||
|
display: none;
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
left: 0;
|
||
|
width: 100%;
|
||
|
height: 100%;
|
||
|
color: #fff;
|
||
|
cursor: default;
|
||
|
|
||
|
&.focusActive {
|
||
|
display: block;
|
||
|
overflow: hidden;
|
||
|
}
|
||
|
|
||
|
.focusCircle {
|
||
|
cursor: move;
|
||
|
width: $focusPointCircleSize;
|
||
|
height: $focusPointCircleSize;
|
||
|
margin: ($focusPointCircleSize * -1 / 2 + 0px) !important;
|
||
|
// border: 3px solid #fff;
|
||
|
// background-color: rgba(255,255,255,0.3);
|
||
|
border: 3px solid #EB1D61;
|
||
|
border-radius: 50%;
|
||
|
background-color: rgba(255, 255, 255, 0.6);
|
||
|
background-image: url(data:image/gif;base64,R0lGODlhBAAEAIAAAOsdYQAAACH5BAAAAAAALAAAAAAEAAQAAAIEhI8JBQA7); // 4x4 px magenta
|
||
|
background-position: 15px 15px;
|
||
|
background-repeat: no-repeat;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
.InputfieldImage .ImageData {
|
||
|
// element in a .gridImage item that contains the details and editable content
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
.InputfieldImageValidExtensions {
|
||
|
margin-left: 1em;
|
||
|
}
|
||
|
|
||
|
.InputfieldImageUpload {
|
||
|
position: relative;
|
||
|
margin: 1em 0 0;
|
||
|
|
||
|
& .AjaxUploadDropHere {
|
||
|
display: none;
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
right: 0;
|
||
|
opacity: 0.75;
|
||
|
cursor: pointer;
|
||
|
|
||
|
.ie-no-drop & {
|
||
|
display: none;
|
||
|
visibility: hidden;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.InputfieldImageRefresh {
|
||
|
margin-bottom: 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.AdminThemeUikit .InputfieldImageValidExtensions {
|
||
|
position: relative;
|
||
|
top: -15px;
|
||
|
}
|
||
|
|
||
|
// Narrow mode applies when width of Inputfield is under 500px
|
||
|
.InputfieldImageNarrow {
|
||
|
|
||
|
.InputfieldHeader .InputfieldImageSizeSlider {
|
||
|
width: 50px;
|
||
|
}
|
||
|
|
||
|
.InputfieldImageEdit {
|
||
|
// the image editor becomes stacked when narrow mode is active
|
||
|
|
||
|
&__inner {
|
||
|
display: block;
|
||
|
padding-top: 0.5em;
|
||
|
}
|
||
|
&__imagewrapper {
|
||
|
display: block;
|
||
|
width: 100%;
|
||
|
padding-bottom: 0;
|
||
|
}
|
||
|
&__edit {
|
||
|
width: 100%;
|
||
|
padding-top: 0;
|
||
|
.InputfieldImageEdit__buttons,
|
||
|
.InputfieldImageEdit__info {
|
||
|
display: block;
|
||
|
text-align: center;
|
||
|
}
|
||
|
}
|
||
|
&__name {
|
||
|
margin: 0;
|
||
|
display: block;
|
||
|
text-align: center;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.InputfieldImageUpload {
|
||
|
.AjaxUploadDropHere {
|
||
|
display: none !important;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
.InputfieldFileSingle .gridImages .gridImage img,
|
||
|
.InputfieldRenderValueMode .gridImages .gridImage img {
|
||
|
cursor: zoom-in;
|
||
|
}
|
||
|
|
||
|
|
||
|
/*****************************************************************************************
|
||
|
* The "Edit All" mode is the "list" mode where edit inputs are showing for all images
|
||
|
* This is the opposite of the grid mode, but we use all the same elements from .gridImage
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
.InputfieldImageEditAll {
|
||
|
|
||
|
.gridImage {
|
||
|
display: block;
|
||
|
width: 100%;
|
||
|
|
||
|
// clearfix
|
||
|
&:before,
|
||
|
&:after {
|
||
|
content: "";
|
||
|
display: table;
|
||
|
border-collapse: collapse;
|
||
|
}
|
||
|
&:after {
|
||
|
clear: both;
|
||
|
}
|
||
|
|
||
|
&__overflow {
|
||
|
position: relative;
|
||
|
z-index: 2;
|
||
|
top: 0;
|
||
|
left: 0;
|
||
|
float: left;
|
||
|
background: none; // initial
|
||
|
display: block;
|
||
|
height: auto !important;
|
||
|
width: 23%;
|
||
|
overflow: visible;
|
||
|
cursor: move;
|
||
|
|
||
|
padding: 10px;
|
||
|
padding-right: 0;
|
||
|
|
||
|
& > img {
|
||
|
display: block;
|
||
|
position: static !important;
|
||
|
top: 0;
|
||
|
left: 0;
|
||
|
transition: none;
|
||
|
-ms-transform: none;
|
||
|
transform: none;
|
||
|
width: 100%;
|
||
|
max-width: 100% !important;
|
||
|
height: initial !important;
|
||
|
cursor: move;
|
||
|
}
|
||
|
|
||
|
& > .focusArea {
|
||
|
position: absolute;
|
||
|
top: 10px; // to match padding of __overflow
|
||
|
left: 10px;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.ImageData {
|
||
|
position: relative;
|
||
|
float: left;
|
||
|
display: block;
|
||
|
width: 77%;
|
||
|
padding-left: 20px;
|
||
|
padding-right: 10px;
|
||
|
z-index: 3;
|
||
|
|
||
|
.InputfieldFileDescription {
|
||
|
margin-bottom: 0.5em;
|
||
|
}
|
||
|
|
||
|
.InputfieldImageEdit__name {
|
||
|
margin-bottom: 0;
|
||
|
margin-top: 1em;
|
||
|
position: relative;
|
||
|
z-index: 100;
|
||
|
cursor: pointer;
|
||
|
}
|
||
|
|
||
|
.InputfieldFileSort {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
input {
|
||
|
position: relative;
|
||
|
z-index: 4;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&.gridImagePlaceholder {
|
||
|
.gridImage__overflow {
|
||
|
background: #fff;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&__inner {
|
||
|
.gridImage__edit {
|
||
|
display: none;
|
||
|
}
|
||
|
}
|
||
|
&:hover .gridImage__inner {
|
||
|
background: none; // initial;
|
||
|
}
|
||
|
|
||
|
.InputfieldImageEdit {
|
||
|
&__core {
|
||
|
input {
|
||
|
width: 100%;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&__resize {
|
||
|
margin-top: 10px;
|
||
|
color: $deleteColor;
|
||
|
text-shadow: none;
|
||
|
}
|
||
|
|
||
|
&__progress {
|
||
|
bottom: 10px;
|
||
|
margin-left: 10px;
|
||
|
}
|
||
|
|
||
|
&.gridImageUploading {
|
||
|
.gridImage__overflow {
|
||
|
margin-bottom: 10px;
|
||
|
}
|
||
|
.gridImage__inner {
|
||
|
overflow: hidden;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&__btn {
|
||
|
z-index: 5;
|
||
|
display: block !important;
|
||
|
top: 0;
|
||
|
right: 0;
|
||
|
float: right;
|
||
|
background: transparent;
|
||
|
}
|
||
|
|
||
|
&__edit {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
&__tooltip {
|
||
|
display: none !important;
|
||
|
}
|
||
|
|
||
|
&--delete {
|
||
|
background-color: $deleteColor;
|
||
|
border-bottom: 8px solid transparent;
|
||
|
height: 45px;
|
||
|
overflow: hidden;
|
||
|
|
||
|
.gridImage__overflow {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
.ImageData {
|
||
|
padding-left: 10px;
|
||
|
width: 100%;
|
||
|
}
|
||
|
|
||
|
.ImageData .InputfieldImageEdit__name {
|
||
|
color: rgba(255, 255, 255, 0.6);
|
||
|
margin-top: 3px;
|
||
|
text-decoration: line-through;
|
||
|
}
|
||
|
|
||
|
.InputfieldImageEdit__info {
|
||
|
color: rgba(255, 255, 255, 0.4);
|
||
|
}
|
||
|
|
||
|
.InputfieldImageEdit__buttons,
|
||
|
.InputfieldImageEdit__core,
|
||
|
.InputfieldImageEdit__additional {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
.gridImage__btn {
|
||
|
color: white;
|
||
|
}
|
||
|
&:hover .gridImage__btn:hover {
|
||
|
color: white;
|
||
|
background-color: $deleteColor;
|
||
|
}
|
||
|
|
||
|
&:hover .gridImage__hover,
|
||
|
.gridImage__hover {
|
||
|
background: rgba(255, 255, 255, 0);
|
||
|
}
|
||
|
|
||
|
} // &--delete
|
||
|
} // .gridImage
|
||
|
|
||
|
// Edit All narrow mode, we stack the image and editor features on top of each other
|
||
|
&.InputfieldImageNarrow {
|
||
|
.gridImage {
|
||
|
&__overflow {
|
||
|
display: block;
|
||
|
width: 100% !important;
|
||
|
height: auto !important;
|
||
|
padding: 0;
|
||
|
|
||
|
img {
|
||
|
width: 100% !important;
|
||
|
height: auto !important;
|
||
|
}
|
||
|
|
||
|
> .focusArea { // #728
|
||
|
top: 0;
|
||
|
left: 0;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
.ImageData {
|
||
|
padding: 0;
|
||
|
width: 100% !important;
|
||
|
display: block;
|
||
|
.InputfieldImageEdit__name {
|
||
|
margin-top: 0.5em;
|
||
|
}
|
||
|
.InputfieldImageEdit__name,
|
||
|
.InputfieldImageEdit__buttons,
|
||
|
.InputfieldImageEdit__info {
|
||
|
text-align: center;
|
||
|
display: block;
|
||
|
}
|
||
|
}
|
||
|
} // .gridImage
|
||
|
} // .InputfieldImageNarrow
|
||
|
} // .InputfieldImageEditAll
|
||
|
|
||
|
.InputfieldFileActionNote {
|
||
|
display: none;
|
||
|
white-space: nowrap;
|
||
|
}
|
||
|
|
||
|
.InputfieldImageList {
|
||
|
// for .svg images
|
||
|
.gridImage__overflow.landscape {
|
||
|
img { height: 100%; }
|
||
|
}
|
||
|
.gridImage__overflow.portrait {
|
||
|
img { width: 100%; }
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.InputfieldImageList[data-ragged="1"] {
|
||
|
// for .svg images
|
||
|
.gridImage__overflow.portrait {
|
||
|
img { width: auto; height: 100%; }
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* todo: 3.0.190 improves touch support but needs further testing
|
||
|
.gridImage__edit { display:block !important; }
|
||
|
.gridImage__edit span { display:none; }
|
||
|
.gridImage__edit:hover span { display:inline; }
|
||
|
*/
|