diff --git a/app/assets/stylesheets/steps/step.scss b/app/assets/stylesheets/steps/step.scss index 31d0a72c8..44f940d8b 100644 --- a/app/assets/stylesheets/steps/step.scss +++ b/app/assets/stylesheets/steps/step.scss @@ -111,6 +111,34 @@ &.showing-comments { border: 1px dotted $brand-primary; } + + .drop-message { + @include font-h3; + align-items: center; + color: $brand-primary; + display: none; + height: 100%; + justify-content: center; + left: 0; + pointer-events: none; + position: absolute; + top: 0; + width: 100%; + } + + &.draging-file { + background-color: $brand-focus-light; + position: relative; + + .drop-message { + display: flex; + } + + *:not(.drop-message) { + opacity: 0; + pointer-events: none; + } + } } .step-element-header { @@ -137,7 +165,12 @@ } .step-element-controls { - background: linear-gradient(90deg, rgba(255,255,255,0) 0%, $color-concrete 15%, $color-concrete 100%); + background: linear-gradient( + 90deg, + transparent, + $color-concrete 15%, + $color-concrete 100% + ); display: flex; margin-left: auto; position: absolute; diff --git a/app/javascript/vue/protocol/mixins/attachments.js b/app/javascript/vue/protocol/mixins/attachments.js index e6fbc1399..a98596ebf 100644 --- a/app/javascript/vue/protocol/mixins/attachments.js +++ b/app/javascript/vue/protocol/mixins/attachments.js @@ -11,6 +11,12 @@ export default { }; }, methods: { + dropFile(e) { + if (!this.showFileModal && e.dataTransfer && e.dataTransfer.files.length) { + this.dragingFile = false; + this.uploadFiles(e.dataTransfer.files); + } + }, uploadFiles(files) { const filesToUploadCntr = files.length; let filesUploadedCntr = 0; diff --git a/app/javascript/vue/protocol/step.vue b/app/javascript/vue/protocol/step.vue index dc90a05f2..66484c22f 100644 --- a/app/javascript/vue/protocol/step.vue +++ b/app/javascript/vue/protocol/step.vue @@ -1,8 +1,15 @@