mirror of
https://github.com/Joxit/docker-registry-ui.git
synced 2025-04-29 08:29:54 +03:00
feat(shift-key): add support to shift + click for multi delete in a row
This commit is contained in:
parent
959af86333
commit
dc64f72483
3 changed files with 42 additions and 2 deletions
|
@ -140,6 +140,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
setRegistryServers(props.defaultRegistries);
|
setRegistryServers(props.defaultRegistries);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
window.onselectstart = (e) => {
|
||||||
|
if (e.target && e.target.className) {
|
||||||
|
return !['checkbox', 'checkmark', 'remove-tag'].find((elt) => e.target.className.indexOf(elt) >= 0);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// props.singleRegistry === 'true' means old static version
|
// props.singleRegistry === 'true' means old static version
|
||||||
const registryUrl =
|
const registryUrl =
|
||||||
props.registryUrl ||
|
props.registryUrl ||
|
||||||
|
|
|
@ -60,7 +60,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
},
|
},
|
||||||
handleCheckboxChange(event) {
|
handleCheckboxChange(event) {
|
||||||
const action = event.target.checked ? ACTION_CHECK_TO_DELETE : ACTION_UNCHECK_TO_DELETE;
|
const action = event.target.checked ? ACTION_CHECK_TO_DELETE : ACTION_UNCHECK_TO_DELETE;
|
||||||
this.props.handleCheckboxChange(action, this.props.image);
|
this.props.handleCheckboxChange(action, this.props.image, event.shiftKey);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -183,23 +183,32 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
this.update({
|
this.update({
|
||||||
multiDelete: true,
|
multiDelete: true,
|
||||||
toDelete: this.state.toDelete,
|
toDelete: this.state.toDelete,
|
||||||
|
slectedImage: undefined,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.update({
|
this.update({
|
||||||
multiDelete: event.target.checked,
|
multiDelete: event.target.checked,
|
||||||
|
slectedImage: undefined,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onRemoveImageChange(action, image) {
|
onRemoveImageChange(action, image, shiftKey) {
|
||||||
let confirmDeleteImage = false;
|
let confirmDeleteImage = false;
|
||||||
let singleDeleteAction = false;
|
let singleDeleteAction = false;
|
||||||
|
let slectedImage = undefined;
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case ACTION_CHECK_TO_DELETE: {
|
case ACTION_CHECK_TO_DELETE: {
|
||||||
this.state.toDelete.add(image);
|
this.state.toDelete.add(image);
|
||||||
|
if (shiftKey) {
|
||||||
|
slectedImage = this.supportShiftKey(image, true);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ACTION_UNCHECK_TO_DELETE: {
|
case ACTION_UNCHECK_TO_DELETE: {
|
||||||
this.state.toDelete.delete(image);
|
this.state.toDelete.delete(image);
|
||||||
|
if (shiftKey) {
|
||||||
|
slectedImage = this.supportShiftKey(image, false);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ACTION_DELETE_IMAGE: {
|
case ACTION_DELETE_IMAGE: {
|
||||||
|
@ -213,8 +222,33 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
toDelete: this.state.toDelete,
|
toDelete: this.state.toDelete,
|
||||||
confirmDeleteImage,
|
confirmDeleteImage,
|
||||||
singleDeleteAction,
|
singleDeleteAction,
|
||||||
|
slectedImage,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
supportShiftKey(selectedImage, addOrRemove) {
|
||||||
|
if (!this.state.slectedImage) {
|
||||||
|
return selectedImage;
|
||||||
|
} else {
|
||||||
|
let shouldChange = false;
|
||||||
|
const tags = getPage(this.props.tags, this.props.page);
|
||||||
|
tags
|
||||||
|
.filter((image) => {
|
||||||
|
if (image == this.state.slectedImage || image == selectedImage) {
|
||||||
|
shouldChange = !shouldChange;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return shouldChange;
|
||||||
|
})
|
||||||
|
.forEach((image) => {
|
||||||
|
if (addOrRemove) {
|
||||||
|
this.state.toDelete.add(image);
|
||||||
|
} else {
|
||||||
|
this.state.toDelete.delete(image);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
},
|
||||||
onReverseOrder() {
|
onReverseOrder() {
|
||||||
this.state.orderType = null;
|
this.state.orderType = null;
|
||||||
this.state.desc = false;
|
this.state.desc = false;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue