react-images-uploader
Version:
React.js component for uploading images to the server
265 lines (242 loc) • 5.25 kB
CSS
button::-moz-focus-inner,
input[type="reset"]::-moz-focus-inner,
input[type="button"]::-moz-focus-inner,
input[type="submit"]::-moz-focus-inner,
input[type="submit"]::-moz-focus-inner,
input[type="file"] > input[type="button"]::-moz-focus-inner {
border: none;
}
.iu-button-container {
display: inline-block;
width: 100%;
text-align: center;
}
.iu-button-container .iu-button-button {
box-sizing: content-box;
padding: 0;
width: 100%;
height: 100%;
outline: none;
border: none;
background: transparent;
box-shadow: none;
color: currentColor;
text-align: center;
text-decoration: none;
cursor: pointer;
transition: background-color 0.3s, width 0.3s, border-width 0.3s, border-color 0.3s, border-radius 0.3s;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-webkit-tap-highlight-color: transparent;
& span {
display: flex;
align-items: center;
justify-content: center;
}
}
.iu-button-container .iu-button-button > span {
display: inherit;
font-weight: 100;
font-size: 2em;
transition: opacity 0.3s 0.1s;
}
.iu-button-container .iu-button-button > svg {
position: absolute;
width: 54px;
height: 54px;
transform: translate(-50%, -50%);
pointer-events: none;
}
.iu-button-container .iu-button-button > svg path {
opacity: 0;
fill: none;
}
.iu-button-container .iu-button-button svg.iu-button-progress-circle {
animation: spin 0.9s infinite cubic-bezier(0.085, 0.260, 0.935, 0.710);
}
.iu-button-container .iu-button-button svg.iu-button-progress-circle path {
stroke: currentColor;
stroke-width: 5;
}
.iu-button-container .iu-button-button svg.iu-button-checkmark path,
.iu-button-container .iu-button-button svg.iu-button-cross path {
stroke: #fff;
stroke-linecap: round;
stroke-width: 4;
}
.iu-button-container.disabled .iu-button-button {
cursor: not-allowed;
}
.iu-button-container.loading .iu-button-button {
padding: 0;
width: 54px;
border-width: 6.5px;
border-color: #ddd;
background-color: transparent;
color: currentColor;
cursor: wait;
}
.iu-button-container.loading .iu-button-button span {
display: none;
opacity: 0;
transition: all 0.15s;
}
.iu-button-container.loading .iu-button-button .iu-button-progress-circle > path {
opacity: 1;
transition: opacity 0.15s 0.3s;
}
.iu-button-container.success .iu-button-button {
border-color: #A0D468;
background-color: #A0D468;
}
.iu-button-container.success .iu-button-button span {
display: none;
opacity: 0;
transition: all 0.15s;
}
.iu-button-container.success .iu-button-button .iu-button-checkmark > path {
opacity: 1;
}
.iu-button-container.error .iu-button-button {
border-color: #ED5565;
background-color: #ED5565;
}
.iu-button-container.error .iu-button-button span {
display: none;
opacity: 0;
transition: all 0.15s;
}
.iu-button-container.error .iu-button-button .iu-button-cross > path {
opacity: 1;
}
.iu-button-container.loading, .iu-button-container.success, .iu-button-container.error {
width: 100% ;
height: 100% ;
}
@keyframes spin {
from {
transform: translate(-50%, -50%) rotate(0deg);
transform-origin: center center;
}
to {
transform: translate(-50%, -50%) rotate(360deg);
transform-origin: center center;
}
}
.iu-container {
box-sizing: border-box;
& * {
box-sizing: border-box;
outline: none;
}
&.disabled {
& .iu-loadContainer {
cursor: not-allowed;
& .iu-dropzone {
background: transparent ;
}
& .iu-pseudobutton {
& * {
cursor: not-allowed;
}
}
}
& .iu-label {
cursor: not-allowed;
}
& .iu-deletePreview {
cursor: not-allowed;
}
}
}
.iu-imgPreview {
position: relative;
display: inline-block;
margin: 5px 10px 5px 0;
width: 100px;
height: 100px;
border: #bec3c7 1px solid;
border-radius: 10px;
background-position: center;
background-size: cover;
background-repeat: no-repeat;
vertical-align: bottom;
}
.iu-deletePreview {
position: absolute;
top: 2px;
right: 2px;
z-index: 1;
display: flex;
align-items: center;
justify-content: center;
padding: 4px;
border: #bec3c7 1px solid;
border-radius: 50%;
background: #fff;
font-size: initial;
cursor: pointer;
}
.iu-fileInput {
display: inline-block;
}
.iu-emptyPreview {
}
.iu-filesInputContainer {
display: inline-block;
margin: 5px 10px 5px 0;
vertical-align: bottom;
}
.iu-loadContainer {
position: relative;
overflow: hidden;
width: 100px;
height: 100px;
border-radius: 10px;
cursor: pointer;
}
.iu-pseudobutton span {
height: 100%;
& .iu-imgPreview {
margin: 0;
}
}
.iu-dropzone {
display: flex;
align-items: center;
justify-content: center;
width: 100% ;
height: 100% ;
border-width: 1px ;
border-style: solid ;
border-radius: 10px ;
&:hover {
background-color: rgb(238, 238, 238);
}
}
.iu-label {
display: block;
padding-bottom: 5px;
font-size: 16px;
cursor: pointer;
}
.iu-pseudobutton {
margin-top: 0;
width: 100px;
height: 100px;
}
.iu-pseudobuttonContent {
line-height: 1 ;
}
.iu-notification {
position: absolute;
bottom: 0;
left: 0;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.3);
}