From 5f44806287997456977895d40996ac9bb1b17839 Mon Sep 17 00:00:00 2001 From: Alex Turchyn Date: Wed, 14 May 2025 00:54:48 +0300 Subject: [PATCH] adjust dropoze border style --- app/javascript/elements/dashboard_dropzone.js | 16 ++++++++++++ app/javascript/elements/file_dropzone.js | 26 ++++++++++++++++--- app/javascript/template_builder/builder.vue | 1 - app/javascript/template_builder/dropzone.vue | 7 +---- .../template_builder/hover_dropzone.vue | 5 +--- app/javascript/template_builder/i18n.js | 12 ++++----- app/views/shared/_classes.html.erb | 2 +- app/views/templates/_dropzone.html.erb | 2 +- 8 files changed, 48 insertions(+), 23 deletions(-) diff --git a/app/javascript/elements/dashboard_dropzone.js b/app/javascript/elements/dashboard_dropzone.js index b99c00ff..3ac0a4c7 100644 --- a/app/javascript/elements/dashboard_dropzone.js +++ b/app/javascript/elements/dashboard_dropzone.js @@ -165,11 +165,27 @@ export default targetable(class extends HTMLElement { onDragover (e) { if (e.dataTransfer?.types?.includes('Files') || this.dataset.targets !== 'dashboard-dropzone.templateCards') { this.style.backgroundColor = '#F7F3F0' + + if (this.classList.contains('before:border-base-300')) { + this.classList.remove('before:border-base-300') + this.classList.add('before:border-base-content/50') + } else if (this.classList.contains('border-base-300')) { + this.classList.remove('border-base-300') + this.classList.add('border-base-content/50') + } } } onDragleave () { this.style.backgroundColor = null + + if (this.classList.contains('before:border-base-content/50')) { + this.classList.remove('before:border-base-content/50') + this.classList.add('before:border-base-300') + } else if (this.classList.contains('border-base-content/50')) { + this.classList.remove('border-base-content/50') + this.classList.add('border-base-300') + } } onWindowDragleave = (e) => { diff --git a/app/javascript/elements/file_dropzone.js b/app/javascript/elements/file_dropzone.js index 76411a50..02fc1083 100644 --- a/app/javascript/elements/file_dropzone.js +++ b/app/javascript/elements/file_dropzone.js @@ -5,19 +5,37 @@ export default actionable(targetable(class extends HTMLElement { static [target.static] = [ 'loading', 'icon', - 'input' + 'input', + 'area' ] connectedCallback () { - this.addEventListener('drop', this.onDrop) - this.addEventListener('dragover', (e) => e.preventDefault()) - + this.addEventListener('drop', this.onDrop) document.addEventListener('turbo:submit-end', this.toggleLoading) + this.area?.addEventListener('dragover', this.onDragover) + this.area?.addEventListener('dragleave', this.onDragleave) } disconnectedCallback () { + this.removeEventListener('drop', this.onDrop) document.removeEventListener('turbo:submit-end', this.toggleLoading) + this.area?.removeEventListener('dragover', this.onDragover) + this.area?.removeEventListener('dragleave', this.onDragleave) + } + + onDragover (e) { + if (e.dataTransfer?.types?.includes('Files')) { + this.style.backgroundColor = '#F7F3F0' + this.classList.remove('border-base-300', 'hover:bg-base-200/30') + this.classList.add('border-base-content/50') + } + } + + onDragleave () { + this.style.backgroundColor = null + this.classList.remove('border-base-content/50') + this.classList.add('border-base-300', 'hover:bg-base-200/30') } onDrop (e) { diff --git a/app/javascript/template_builder/builder.vue b/app/javascript/template_builder/builder.vue index 77e1bb96..514740eb 100644 --- a/app/javascript/template_builder/builder.vue +++ b/app/javascript/template_builder/builder.vue @@ -13,7 +13,6 @@ :template-id="template.id" :accept-file-types="acceptFileTypes" :with-replace-and-clone="withReplaceAndCloneUpload" - hover-class="bg-base-200/50" @add="[updateFromUpload($event), isDragFile = false]" @replace="[onDocumentsReplace($event), isDragFile = false]" @replace-and-clone="onDocumentsReplaceAndTemplateClone($event)" diff --git a/app/javascript/template_builder/dropzone.vue b/app/javascript/template_builder/dropzone.vue index ce97bcc1..e6f0030d 100644 --- a/app/javascript/template_builder/dropzone.vue +++ b/app/javascript/template_builder/dropzone.vue @@ -10,7 +10,7 @@ id="document_dropzone" class="w-full relative rounded-md border-2 border-base-content/10 border-dashed" :for="inputId" - :class="[{ 'opacity-50': isLoading, 'hover:bg-base-200/30': !hoverClass }, isDragEntering && hoverClass ? hoverClass : '']" + :class="{ 'opacity-50': isLoading, 'hover:bg-base-200/50': !isDragEntering, 'bg-base-200/50 border-base-content/50': isDragEntering }" >
@@ -84,11 +84,6 @@ export default { required: false, default: 'IconCloudUpload' }, - hoverClass: { - type: String, - required: false, - default: null - }, cloneTemplateOnUpload: { type: Boolean, required: false, diff --git a/app/javascript/template_builder/hover_dropzone.vue b/app/javascript/template_builder/hover_dropzone.vue index 5c9ccf28..54a495c1 100644 --- a/app/javascript/template_builder/hover_dropzone.vue +++ b/app/javascript/template_builder/hover_dropzone.vue @@ -6,12 +6,11 @@
+<% 'stats stat stat-figure stat-title stat-value text-accent w-fit hover:bg-white dropdown-open border-base-content/50 before:border-base-content/50' %> diff --git a/app/views/templates/_dropzone.html.erb b/app/views/templates/_dropzone.html.erb index 95128c1a..766fb0dc 100644 --- a/app/views/templates/_dropzone.html.erb +++ b/app/views/templates/_dropzone.html.erb @@ -2,7 +2,7 @@ -