add dropdown + responsive

This commit is contained in:
BlasenhauerJ 2022-11-18 19:07:08 +01:00
parent 3ed3fbe991
commit 3ccc12d789
7 changed files with 3312 additions and 47 deletions

View file

@ -807,6 +807,10 @@ h6 {
z-index: 50;
}
.-z-10 {
z-index: -10;
}
.order-2 {
order: 2;
}
@ -1163,6 +1167,10 @@ h6 {
height: 7.5rem;
}
.h-60 {
height: 15rem;
}
.h-\[90vh\] {
height: 90vh;
}
@ -1179,6 +1187,14 @@ h6 {
height: 33.333333%;
}
.h-20 {
height: 5rem;
}
.\!h-full {
height: 100% !important;
}
.max-h-screen {
max-height: 100vh;
}
@ -1195,6 +1211,22 @@ h6 {
max-height: 2rem;
}
.max-h-20 {
max-height: 5rem;
}
.max-h-16 {
max-height: 4rem;
}
.max-h-10 {
max-height: 2.5rem;
}
.\!max-h-10 {
max-height: 2.5rem !important;
}
.min-h-20 {
min-height: 5rem;
}
@ -1215,8 +1247,8 @@ h6 {
min-height: 13rem;
}
.min-h-75-screen {
min-height: 75vh;
.min-h-12 {
min-height: 3rem;
}
.min-h-75 {
@ -1227,14 +1259,6 @@ h6 {
min-height: 85vh;
}
.min-h-10 {
min-height: 2.5rem;
}
.min-h-12 {
min-height: 3rem;
}
.w-full {
width: 100%;
}
@ -1335,6 +1359,14 @@ h6 {
max-width: 300px;
}
.max-w-\[500px\] {
max-width: 500px;
}
.max-w-\[400px\] {
max-width: 400px;
}
.flex-auto {
flex: 1 1 auto;
}
@ -1351,6 +1383,10 @@ h6 {
flex-basis: 100%;
}
.border-separate {
border-collapse: separate;
}
.translate-y-2 {
--tw-translate-y: 0.5rem;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
@ -1541,6 +1577,10 @@ h6 {
justify-content: space-between;
}
.justify-evenly {
justify-content: space-evenly;
}
.justify-items-center {
justify-items: center;
}
@ -1582,6 +1622,10 @@ h6 {
overflow-x: hidden;
}
.overflow-y-hidden {
overflow-y: hidden;
}
.whitespace-nowrap {
white-space: nowrap;
}
@ -1670,6 +1714,10 @@ h6 {
border-width: 0px;
}
.border-4 {
border-width: 4px;
}
.border-t {
border-top-width: 1px;
}
@ -1694,6 +1742,14 @@ h6 {
border-style: solid;
}
.border-dashed {
border-style: dashed;
}
.border-dotted {
border-style: dotted;
}
.border-white {
--tw-border-opacity: 1;
border-color: rgb(255 255 255 / var(--tw-border-opacity));
@ -3060,6 +3116,18 @@ h6 {
grid-column: span 1 / span 1;
}
.sm\:col-span-8 {
grid-column: span 8 / span 8;
}
.sm\:col-span-5 {
grid-column: span 5 / span 5;
}
.sm\:col-span-7 {
grid-column: span 7 / span 7;
}
.sm\:col-start-5 {
grid-column-start: 5;
}
@ -3165,8 +3233,12 @@ h6 {
grid-column: span 6 / span 6;
}
.md\:col-span-3 {
grid-column: span 3 / span 3;
.md\:col-span-5 {
grid-column: span 5 / span 5;
}
.md\:col-span-7 {
grid-column: span 7 / span 7;
}
.md\:my-0 {
@ -3271,10 +3343,6 @@ h6 {
grid-column: span 8 / span 8;
}
.lg\:col-span-2 {
grid-column: span 2 / span 2;
}
.lg\:col-span-3 {
grid-column: span 3 / span 3;
}
@ -3341,10 +3409,6 @@ h6 {
justify-content: space-between;
}
.lg\:justify-items-start {
justify-items: start;
}
.lg\:gap-6 {
gap: 1.5rem;
}
@ -3367,6 +3431,10 @@ h6 {
top: 0.75rem;
}
.xl\:col-span-4 {
grid-column: span 4 / span 4;
}
.xl\:mx-4 {
margin-left: 1rem;
margin-right: 1rem;

View file

@ -1 +0,0 @@
.dropzone,.dropzone *{box-sizing:border-box}.dropzone{position:relative}.dropzone .dz-preview{position:relative;display:inline-block;width:120px;margin:.5em}.dropzone .dz-preview .dz-progress{display:block;height:15px;border:1px solid #aaa}.dropzone .dz-preview .dz-progress .dz-upload{display:block;height:100%;width:0;background:green}.dropzone .dz-preview .dz-error-message{color:red;display:none}.dropzone .dz-preview.dz-error .dz-error-message,.dropzone .dz-preview.dz-error .dz-error-mark{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{display:block}.dropzone .dz-preview .dz-error-mark,.dropzone .dz-preview .dz-success-mark{position:absolute;display:none;left:30px;top:30px;width:54px;height:58px;left:50%;margin-left:-27px}/*# sourceMappingURL=basic.css.map */

View file

@ -1 +1,274 @@
@keyframes passing-through{0%{opacity:0;transform:translateY(40px)}30%,70%{opacity:1;transform:translateY(0px)}100%{opacity:0;transform:translateY(-40px)}}@keyframes slide-in{0%{opacity:0;transform:translateY(40px)}30%{opacity:1;transform:translateY(0px)}}@keyframes pulse{0%{transform:scale(1)}10%{transform:scale(1.1)}20%{transform:scale(1)}}.dropzone,.dropzone *{box-sizing:border-box}.dropzone{min-height:150px;border:1px solid rgba(0,0,0,.8);border-radius:5px;padding:20px 20px}.dropzone.dz-clickable{cursor:pointer}.dropzone.dz-clickable *{cursor:default}.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message *{cursor:pointer}.dropzone.dz-started .dz-message{display:none}.dropzone.dz-drag-hover{border-style:solid}.dropzone.dz-drag-hover .dz-message{opacity:.5}.dropzone .dz-message{text-align:center;margin:3em 0}.dropzone .dz-message .dz-button{background:none;color:inherit;border:none;padding:0;font:inherit;cursor:pointer;outline:inherit}.dropzone .dz-preview{position:relative;display:inline-block;vertical-align:top;margin:16px;min-height:100px}.dropzone .dz-preview:hover{z-index:1000}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview.dz-file-preview .dz-image{border-radius:20px;background:#999;background:linear-gradient(to bottom, #eee, #ddd)}.dropzone .dz-preview.dz-file-preview .dz-details{opacity:1}.dropzone .dz-preview.dz-image-preview{background:#fff}.dropzone .dz-preview.dz-image-preview .dz-details{transition:opacity .2s linear}.dropzone .dz-preview .dz-remove{font-size:14px;text-align:center;display:block;cursor:pointer;border:none}.dropzone .dz-preview .dz-remove:hover{text-decoration:underline}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview .dz-details{z-index:20;position:absolute;top:0;left:0;opacity:0;font-size:13px;min-width:100%;max-width:100%;padding:2em 1em;text-align:center;color:rgba(0,0,0,.9);line-height:150%}.dropzone .dz-preview .dz-details .dz-size{margin-bottom:1em;font-size:16px}.dropzone .dz-preview .dz-details .dz-filename{white-space:nowrap}.dropzone .dz-preview .dz-details .dz-filename:hover span{border:1px solid rgba(200,200,200,.8);background-color:rgba(255,255,255,.8)}.dropzone .dz-preview .dz-details .dz-filename:not(:hover){overflow:hidden;text-overflow:ellipsis}.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span{border:1px solid transparent}.dropzone .dz-preview .dz-details .dz-filename span,.dropzone .dz-preview .dz-details .dz-size span{background-color:rgba(255,255,255,.4);padding:0 .4em;border-radius:3px}.dropzone .dz-preview:hover .dz-image img{transform:scale(1.05, 1.05);filter:blur(8px)}.dropzone .dz-preview .dz-image{border-radius:20px;overflow:hidden;width:120px;height:120px;position:relative;display:block;z-index:10}.dropzone .dz-preview .dz-image img{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1)}.dropzone .dz-preview.dz-error .dz-error-mark{opacity:1;animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1)}.dropzone .dz-preview .dz-success-mark,.dropzone .dz-preview .dz-error-mark{pointer-events:none;opacity:0;z-index:500;position:absolute;display:block;top:50%;left:50%;margin-left:-27px;margin-top:-27px;background:rgba(0,0,0,.8);border-radius:50%}.dropzone .dz-preview .dz-success-mark svg,.dropzone .dz-preview .dz-error-mark svg{display:block;width:54px;height:54px;fill:#fff}.dropzone .dz-preview.dz-processing .dz-progress{opacity:1;transition:all .2s linear}.dropzone .dz-preview.dz-complete .dz-progress{opacity:0;transition:opacity .4s ease-in}.dropzone .dz-preview:not(.dz-processing) .dz-progress{animation:pulse 6s ease infinite}.dropzone .dz-preview .dz-progress{opacity:1;z-index:1000;pointer-events:none;position:absolute;height:20px;top:50%;margin-top:-10px;left:15%;right:15%;border:3px solid rgba(0,0,0,.8);background:rgba(0,0,0,.8);border-radius:10px;overflow:hidden}.dropzone .dz-preview .dz-progress .dz-upload{background:#fff;display:block;position:relative;height:100%;width:0;transition:width 300ms ease-in-out;border-radius:17px}.dropzone .dz-preview.dz-error .dz-error-message{display:block}.dropzone .dz-preview.dz-error:hover .dz-error-message{opacity:1;pointer-events:auto}.dropzone .dz-preview .dz-error-message{pointer-events:none;z-index:1000;position:absolute;display:block;display:none;opacity:0;transition:opacity .3s ease;border-radius:8px;font-size:13px;top:130px;left:-10px;width:140px;background:#b10606;padding:.5em 1em;color:#fff}.dropzone .dz-preview .dz-error-message:after{content:"";position:absolute;top:-6px;left:64px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #b10606}/*# sourceMappingURL=dropzone.css.map */
/*# sourceMappingURL=basic.css.map */
@keyframes passing-through {
0% {
opacity: 0;
transform: translateY(40px);
}
30%,
70% {
opacity: 1;
transform: translateY(0px);
}
100% {
opacity: 0;
transform: translateY(-40px);
}
}
@keyframes slide-in {
0% {
opacity: 0;
transform: translateY(40px);
}
30% {
opacity: 1;
transform: translateY(0px);
}
}
@keyframes pulse {
0% {
transform: scale(1);
}
10% {
transform: scale(1.1);
}
20% {
transform: scale(1);
}
}
.dropzone,
.dropzone * {
box-sizing: border-box;
}
.dropzone {
min-height: 100px;
border: 1px solid rgba(0, 0, 0, 0.8);
border-radius: 5px;
padding: 0;
}
.dropzone.dz-clickable {
cursor: pointer;
}
.dropzone.dz-clickable * {
cursor: default;
}
.dropzone.dz-clickable .dz-message,
.dropzone.dz-clickable .dz-message * {
cursor: pointer;
}
.dropzone.dz-started .dz-message {
display: none;
}
.dropzone.dz-drag-hover {
border-style: solid;
}
.dropzone.dz-drag-hover .dz-message {
opacity: 0.5;
}
.dropzone .dz-message {
text-align: center;
margin: 0;
display: flex;
justify-content: center;
align-items: center;
}
.dropzone .dz-message .dz-button {
background: none;
color: inherit;
border: none;
padding: 0;
font: inherit;
cursor: pointer;
outline: inherit;
}
.dropzone .dz-preview {
position: relative;
display: inline-block;
vertical-align: top;
margin: 12px;
min-height: 100px;
}
.dropzone .dz-preview:hover {
z-index: 1000;
}
.dropzone .dz-preview:hover .dz-details {
opacity: 1;
}
.dropzone .dz-preview.dz-file-preview .dz-image {
border-radius: 20px;
background: #999;
background: linear-gradient(to bottom, #eee, #ddd);
}
.dropzone .dz-preview.dz-file-preview .dz-details {
opacity: 1;
}
.dropzone .dz-preview.dz-image-preview {
background: #fff;
}
.dropzone .dz-preview.dz-image-preview .dz-details {
transition: opacity 0.2s linear;
}
.dropzone .dz-preview .dz-remove {
font-size: 14px;
text-align: center;
display: block;
cursor: pointer;
border: none;
}
.dropzone .dz-preview .dz-remove:hover {
text-decoration: underline;
}
.dropzone .dz-preview:hover .dz-details {
opacity: 1;
}
.dropzone .dz-preview .dz-details {
z-index: 20;
position: absolute;
top: 0;
left: 0;
opacity: 0;
font-size: 13px;
min-width: 100%;
max-width: 100%;
padding: 2em 1em;
text-align: center;
color: rgba(0, 0, 0, 0.9);
line-height: 150%;
}
.dropzone .dz-preview .dz-details .dz-size {
margin-bottom: 1em;
font-size: 16px;
}
.dropzone .dz-preview .dz-details .dz-filename {
white-space: nowrap;
}
.dropzone .dz-preview .dz-details .dz-filename:hover span {
border: 1px solid rgba(200, 200, 200, 0.8);
background-color: rgba(255, 255, 255, 0.8);
}
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) {
overflow: hidden;
text-overflow: ellipsis;
}
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {
border: 1px solid transparent;
}
.dropzone .dz-preview .dz-details .dz-filename span,
.dropzone .dz-preview .dz-details .dz-size span {
background-color: rgba(255, 255, 255, 0.4);
padding: 0 0.4em;
border-radius: 3px;
}
.dropzone .dz-preview:hover .dz-image img {
transform: scale(1.05, 1.05);
filter: blur(8px);
}
.dropzone .dz-preview .dz-image {
border-radius: 20px;
overflow: hidden;
width: 120px;
height: 120px;
position: relative;
display: block;
z-index: 10;
}
.dropzone .dz-preview .dz-image img {
display: block;
}
.dropzone .dz-preview.dz-success .dz-success-mark {
animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
}
.dropzone .dz-preview.dz-error .dz-error-mark {
opacity: 1;
animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
}
.dropzone .dz-preview .dz-success-mark,
.dropzone .dz-preview .dz-error-mark {
pointer-events: none;
opacity: 0;
z-index: 500;
position: absolute;
display: block;
top: 50%;
left: 50%;
margin-left: -27px;
margin-top: -27px;
background: rgba(0, 0, 0, 0.8);
border-radius: 50%;
}
.dropzone .dz-preview .dz-success-mark svg,
.dropzone .dz-preview .dz-error-mark svg {
display: block;
width: 54px;
height: 54px;
fill: #fff;
}
.dropzone .dz-preview.dz-processing .dz-progress {
opacity: 1;
transition: all 0.2s linear;
}
.dropzone .dz-preview.dz-complete .dz-progress {
opacity: 0;
transition: opacity 0.4s ease-in;
}
.dropzone .dz-preview:not(.dz-processing) .dz-progress {
animation: pulse 6s ease infinite;
}
.dropzone .dz-preview .dz-progress {
opacity: 1;
z-index: 1000;
pointer-events: none;
position: absolute;
height: 20px;
top: 50%;
margin-top: -10px;
left: 15%;
right: 15%;
border: 3px solid rgba(0, 0, 0, 0.8);
background: rgba(0, 0, 0, 0.8);
border-radius: 10px;
overflow: hidden;
}
.dropzone .dz-preview .dz-progress .dz-upload {
background: #fff;
display: block;
position: relative;
height: 100%;
width: 0;
transition: width 300ms ease-in-out;
border-radius: 17px;
}
.dropzone .dz-preview.dz-error .dz-error-message {
display: block;
}
.dropzone .dz-preview.dz-error:hover .dz-error-message {
opacity: 1;
pointer-events: auto;
}
.dropzone .dz-preview .dz-error-message {
pointer-events: none;
z-index: 1000;
position: absolute;
display: block;
display: none;
opacity: 0;
transition: opacity 0.3s ease;
border-radius: 8px;
font-size: 13px;
top: 130px;
left: -10px;
width: 140px;
background: #b10606;
padding: 0.5em 1em;
color: #fff;
}
.dropzone .dz-preview .dz-error-message:after {
content: "";
position: absolute;
top: -6px;
left: 64px;
width: 0;
height: 0;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #b10606;
} /*# sourceMappingURL=dropzone.css.map */

File diff suppressed because one or more lines are too long

View file

@ -1,5 +1,3 @@
import AirDatepicker from "./air-datepicker/index.es.js";
class Upload {
constructor(prefix) {
this.prefix = prefix;
@ -28,3 +26,21 @@ class Upload {
});
}
}
const dropEl = document.querySelector("#dropzone");
const drop = new Dropzone(dropEl, {
paramName: "file",
method: "post",
maxFiles: 100,
autoProcessQueue: false,
uploadMultiple: true,
parallelUploads: 100,
url: "#",
});
const submit = dropEl.querySelector('button[type="submit"]');
submit.addEventListener("click", (e) => {
e.preventDefault();
e.stopPropagation();
drop.processQueue();
});

View file

@ -35,7 +35,11 @@
<script defer type="module" src="./js/services.js"></script>
{% elif current_endpoint == "plugins" %}
<script type="module" defer src="./js/dropzone/dropzone-min.js"></script>
<script type="module" defer src="./js/dropzone/dropzone-min.js.map"></script>
<script
type="application"
defer
src="./js/dropzone/dropzone-min.js.map"
></script>
<script type="module" defer src="./js/plugins.js"></script>
<link rel="stylesheet" type="text/css" href="./css/dropzone/dropzone.css" />
{% elif current_endpoint == "cache" %}

View file

@ -1,35 +1,62 @@
{% extends "base.html" %} {% block content %}{% set current_endpoint =
url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
<!-- info -->
<div
class="p-4 col-span-12 md:col-span-5 2xl:col-span-4 grid grid-cols-12 relative min-w-0 break-words bg-white shadow-xl dark:bg-slate-850 dark:shadow-dark-xl rounded-2xl bg-clip-border"
>
<h5 class="col-span-12 mb-2 font-bold dark:text-white">INFO</h5>
</div>
<!-- end info -->
<!-- upload layout -->
<div
class="p-4 col-span-12 lg:col-span-8 grid grid-cols-12 relative min-w-0 break-words bg-white shadow-xl dark:bg-slate-850 dark:shadow-dark-xl rounded-2xl bg-clip-border"
class="p-4 col-span-12 md:col-span-7 2xl:col-span-4 grid grid-cols-12 relative min-w-0 break-words bg-white shadow-xl dark:bg-slate-850 dark:shadow-dark-xl rounded-2xl bg-clip-border"
>
<h5 class="col-span-12 mb-2 font-bold dark:text-white">UPLOAD PLUGIN</h5>
<form
action="#"
class="grid grid-cols-12 w-full justify-items-center lg:justify-items-start"
>
<input
type="hidden"
id="csrf_token"
name="csrf_token"
value="{{ csrf_token() }}"
/>
<input class="hidden" type="file" name="file" multiple="multiple" />
</form>
<form method="POST">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
<button type="submit" class="btn btn-outline-primary btn-block mt-2">
Reload plugins
</button>
</form>
<div class="p-0 col-span-12 grid">
<form id="dropzone" class="col-span-12 dropzone max-h-16 overflow-y-auto">
<!-- Now setup your input fields -->
<input
name="upload-csrf"
class="hidden"
name="csrf_token"
value="{{ csrf_token() }}"
/>
<button name="upload-submit" class="hidden" type="submit">
Submit data and files!
</button>
</form>
<div class="col-span-12 flex justify-center mt-3">
<button
type="button"
class="dark:brightness-90 inline-block px-6 py-3 font-bold text-center text-white uppercase align-middle transition-all rounded-lg cursor-pointer bg-primary hover:bg-primary/80 focus:bg-primary/80 leading-normal text-sm ease-in tracking-tight-rem shadow-xs bg-150 bg-x-25 hover:-translate-y-px active:opacity-85 hover:shadow-md"
>
Upload
</button>
</div>
<form
method="post"
class="mt-2 col-span-12 flex flex-col justify-center align-middle items-center"
>
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
<p class="mb-0 font-sans font-semibold leading-normal uppercase text-sm">
or
</p>
<button
type="submit"
class="mt-2 dark:brightness-90 inline-block px-6 py-3 font-bold text-center text-white uppercase align-middle transition-all rounded-lg cursor-pointer bg-primary hover:bg-primary/80 focus:bg-primary/80 leading-normal text-sm ease-in tracking-tight-rem shadow-xs bg-150 bg-x-25 hover:-translate-y-px active:opacity-85 hover:shadow-md"
>
Reload plugins
</button>
</form>
</div>
</div>
<!-- end upload layout -->
<!-- filter -->
<div
class="p-4 col-span-12 lg:col-span-4 grid grid-cols-12 relative min-w-0 break-words bg-white shadow-xl dark:bg-slate-850 dark:shadow-dark-xl rounded-2xl bg-clip-border"
class="p-4 col-span-12 2xl:col-span-4 grid grid-cols-12 relative min-w-0 break-words bg-white shadow-xl dark:bg-slate-850 dark:shadow-dark-xl rounded-2xl bg-clip-border"
>
<h5 class="col-span-12 mb-2 font-bold dark:text-white">FILTER</h5>
</div>
@ -42,7 +69,6 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
<div class="grid grid-cols-12 gap-3">
{% for plugin in plugins %} {% if plugin['page'] %}
<a
{{current_endpoint}}-external="{{plugin['external']}}"
href="/plugins?{{plugin['id']}}"