Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(99)

Unified Diff: Source/devtools/front_end/elements/Spectrum.js

Issue 1324533005: Devtools Color: Drag to delete custom color in palettes (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | Source/devtools/front_end/elements/spectrum.css » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/devtools/front_end/elements/Spectrum.js
diff --git a/Source/devtools/front_end/elements/Spectrum.js b/Source/devtools/front_end/elements/Spectrum.js
index 0706e849ae3c31fc247a8a3aaba4e9468eaa47d8..18f87460f3da6fe3364247e75da3e9da88ae4bc8 100644
--- a/Source/devtools/front_end/elements/Spectrum.js
+++ b/Source/devtools/front_end/elements/Spectrum.js
@@ -113,6 +113,12 @@ WebInspector.Spectrum = function()
var paletteSwitcher = this.contentElement.createChild("div", "spectrum-palette-switcher spectrum-switcher");
appendSwitcherIcon(paletteSwitcher);
paletteSwitcher.addEventListener("click", this._togglePalettePanel.bind(this, true));
+
+ this._deleteIconToolbar = new WebInspector.Toolbar();
+ this._deleteIconToolbar.element.classList.add("delete-color-toolbar");
+ this._deleteButton = new WebInspector.ToolbarButton("", "garbage-collect-toolbar-item");
+ this._deleteIconToolbar.appendToolbarItem(this._deleteButton);
+
var overlay = this.contentElement.createChild("div", "spectrum-overlay fill");
overlay.addEventListener("click", this._togglePalettePanel.bind(this, false));
@@ -258,10 +264,13 @@ WebInspector.Spectrum.prototype = {
if (palette.mutable)
numItems++;
var rowsNeeded = Math.max(1, Math.ceil(numItems / WebInspector.Spectrum._itemsPerPaletteRow));
- if (palette.mutable)
- this.contentElement.appendChild(this._addColorToolbar.element);
- else
+ if (palette.mutable) {
+ this._paletteContainer.appendChild(this._addColorToolbar.element);
+ this._paletteContainer.appendChild(this._deleteIconToolbar.element);
+ } else {
this._addColorToolbar.element.remove();
+ this._deleteIconToolbar.element.remove();
+ }
this._togglePalettePanel(false);
var paletteColorHeight = 12;
@@ -280,7 +289,16 @@ WebInspector.Spectrum.prototype = {
var localY = e.pageY - this._paletteContainer.totalOffsetTop();
var col = Math.min(localX / WebInspector.Spectrum._colorChipSize | 0, WebInspector.Spectrum._itemsPerPaletteRow - 1);
var row = (localY / WebInspector.Spectrum._colorChipSize) | 0;
- return Math.min(row * WebInspector.Spectrum._itemsPerPaletteRow + col, this._paletteContainer.children.length - 1);
+ return Math.min(row * WebInspector.Spectrum._itemsPerPaletteRow + col, this._customPaletteSetting.get().colors.length - 1);
+ },
+
+ /**
+ * @param {!Event} e
+ * @return {boolean}
+ */
+ _isDraggingToBin: function(e)
+ {
+ return e.pageX > this._deleteIconToolbar.element.totalOffsetLeft();
},
/**
@@ -290,13 +308,15 @@ WebInspector.Spectrum.prototype = {
_paletteDragStart: function(e)
{
var element = e.deepElementFromPoint();
- if (!element.__mutable)
+ if (!element || !element.__mutable)
return false;
var index = this._slotIndexForEvent(e);
this._dragElement = element;
this._dragHotSpotX = e.pageX - (index % WebInspector.Spectrum._itemsPerPaletteRow) * WebInspector.Spectrum._colorChipSize;
this._dragHotSpotY = e.pageY - (index / WebInspector.Spectrum._itemsPerPaletteRow | 0) * WebInspector.Spectrum._colorChipSize;
+
+ this._deleteIconToolbar.element.classList.add("dragging");
return true;
},
@@ -311,7 +331,10 @@ WebInspector.Spectrum.prototype = {
var offsetX = e.pageX - (newIndex % WebInspector.Spectrum._itemsPerPaletteRow) * WebInspector.Spectrum._colorChipSize;
var offsetY = e.pageY - (newIndex / WebInspector.Spectrum._itemsPerPaletteRow | 0) * WebInspector.Spectrum._colorChipSize;
- this._dragElement.style.transform = "translateX(" + (offsetX - this._dragHotSpotX) + "px) translateY(" + (offsetY - this._dragHotSpotY) + "px)";
+ var isDeleting = this._isDraggingToBin(e);
+ this._deleteIconToolbar.element.classList.toggle("delete-color-toolbar-active", isDeleting);
+ var dragElementTransform = "translateX(" + (offsetX - this._dragHotSpotX) + "px) translateY(" + (offsetY - this._dragHotSpotY) + "px)";
+ this._dragElement.style.transform = isDeleting ? dragElementTransform + " scale(0.8)" : dragElementTransform;
var children = Array.prototype.slice.call(this._paletteContainer.children);
var index = children.indexOf(this._dragElement);
/** @type {!Map.<!Element, {left: number, top: number}>} */
@@ -340,6 +363,8 @@ WebInspector.Spectrum.prototype = {
*/
_paletteDragEnd: function(e)
{
+ if (this._isDraggingToBin(e))
+ this._dragElement.remove();
this._dragElement.style.removeProperty("transform");
var children = this._paletteContainer.children;
var colors = [];
@@ -351,6 +376,10 @@ WebInspector.Spectrum.prototype = {
palette.colors = colors;
this._customPaletteSetting.set(palette);
this._showPalette(this._customPaletteSetting.get(), false);
+
+ this._deleteIconToolbar.element.classList.remove("dragging");
+ this._deleteIconToolbar.element.classList.remove("delete-color-toolbar-active");
+ this._deleteButton.setToggled(false);
},
/**
« no previous file with comments | « no previous file | Source/devtools/front_end/elements/spectrum.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698