better drag indication + several minor fixes and issues documented...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
4e7018efd6
commit
3e8ce38d1f
@ -228,8 +228,15 @@ button:active {
|
||||
}
|
||||
|
||||
/* image dragged over... */
|
||||
.gallery.dragged-over .images img {
|
||||
filter: saturate(0) brightness(0.4);
|
||||
}
|
||||
.gallery .images img.dragged-over {
|
||||
filter: saturate(0);
|
||||
z-index: calc(var(--base-layer) + 1);
|
||||
box-shadow:
|
||||
calc(var(--gallery-current-image-border) * -1) 0px 0px 0px rgba(0,0,0,0.8),
|
||||
/* XXX this does not work... */
|
||||
inset var(--gallery-current-image-border) 0px 0px 0px rgba(0,0,0,0.8);
|
||||
}
|
||||
|
||||
/* image marked for removal... */
|
||||
|
||||
@ -1124,6 +1124,7 @@ var Gallery = {
|
||||
|
||||
// drag/drop: sort...
|
||||
var dragged
|
||||
var dragged_over
|
||||
this.dom
|
||||
.addEventListener('dragstart', function(evt){
|
||||
var i = that.images.indexOf(evt.target)
|
||||
@ -1139,6 +1140,8 @@ var Gallery = {
|
||||
var skip_dragover = false
|
||||
this.dom
|
||||
.addEventListener('dragenter', function(evt){
|
||||
evt.preventDefault()
|
||||
evt.stopPropagation()
|
||||
// NOTE: this prevents jumping back and forth if moving
|
||||
// image causes a resize that causes the image to
|
||||
// move again...
|
||||
@ -1182,6 +1185,13 @@ var Gallery = {
|
||||
// the image below...
|
||||
this.dom
|
||||
.addEventListener('dragleave', function(evt){
|
||||
// cleanup on drag out...
|
||||
// XXX this does not work sometimes...
|
||||
if(evt.target === that.dom){
|
||||
that.dom.classList.remove('dragged-over')
|
||||
dragged_over
|
||||
&& dragged_over.classList.remove('dragged-over') }
|
||||
// check edge...
|
||||
if(!dragged
|
||||
|| skip_dragover){
|
||||
return }
|
||||
@ -1206,7 +1216,6 @@ var Gallery = {
|
||||
|| next.offsetTop != target.offsetTop){
|
||||
target.after(dragged)
|
||||
that.updateMarkers() } } } })
|
||||
var dragged_over
|
||||
this.dom
|
||||
.addEventListener('dragover', function(evt){
|
||||
evt.preventDefault()
|
||||
@ -1216,10 +1225,19 @@ var Gallery = {
|
||||
var i = that.images.indexOf(target)
|
||||
if(!dragged
|
||||
&& i >= 0){
|
||||
dragged_over
|
||||
&& dragged_over.classList.remove('dragged-over')
|
||||
dragged_over = target
|
||||
dragged_over.classList.add('dragged-over') } }, false)
|
||||
// XXX BUG: canceling drag leaves the classes in place...
|
||||
// ...handling dragend does not help...
|
||||
// indicate replacing all...
|
||||
if(!evt.shiftKey){
|
||||
that.dom.classList.add('dragged-over')
|
||||
target.classList.remove('dragged-over')
|
||||
// indicate insertion...
|
||||
} else {
|
||||
that.dom.classList.remove('dragged-over')
|
||||
dragged_over
|
||||
&& dragged_over.classList.remove('dragged-over')
|
||||
dragged_over = target
|
||||
dragged_over.classList.add('dragged-over') } } }, false)
|
||||
// drag/drop: files...
|
||||
// NOTE: if shift is pressed then this will add files to the
|
||||
// loaded list, otherwise it will replace the list...
|
||||
@ -1287,10 +1305,30 @@ var Gallery = {
|
||||
&& dragged.classList.remove('dragged')
|
||||
dragged_over
|
||||
&& dragged_over.classList.remove('dragged-over')
|
||||
that.dom.classList.remove('dragged-over')
|
||||
// XXX if this is used in the promise, move to the point
|
||||
// after we nned this...
|
||||
dragged = undefined
|
||||
dragged_over = undefined }, false)
|
||||
// drag/drom: cleanup...
|
||||
// XXX BUG: this does not handle the situation when drag was cancelled
|
||||
// but while the browser was not focused leaving the class
|
||||
// on the element...
|
||||
// to reproduce:
|
||||
// - start drag of files
|
||||
// - drag over the gallery
|
||||
// - press esc to cancel drag
|
||||
// ...this will leave the dragged-over classes in place...
|
||||
var cleanupAfterDrag = function(evt){
|
||||
console.log('11111')
|
||||
that.dom.classList.remove('dragged-over')
|
||||
dragged_over
|
||||
&& dragged_over.classList.remove('dragged-over') }
|
||||
//this.dom.addEventListener('dragend', cleanupAfterDrag)
|
||||
// XXX HACK-ish...
|
||||
document.body.addEventListener('dragenter', cleanupAfterDrag)
|
||||
// XXX HACK...
|
||||
this.dom.addEventListener('mouseover', cleanupAfterDrag)
|
||||
|
||||
// XXX
|
||||
for(var img of this.images){
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user