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

Unified Diff: third_party/WebKit/Source/devtools/front_end/elements/StylesSidebarPane.js

Issue 2637593002: DevTools: Autocomplete CSS variables in StylesSidebar (Closed)
Patch Set: merge Created 3 years, 10 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
Index: third_party/WebKit/Source/devtools/front_end/elements/StylesSidebarPane.js
diff --git a/third_party/WebKit/Source/devtools/front_end/elements/StylesSidebarPane.js b/third_party/WebKit/Source/devtools/front_end/elements/StylesSidebarPane.js
index 98765e8b0dac739fd0edca8fea663625801dd2b6..82a5a0d13020d309c300c25eebf544e17231b7ba 100644
--- a/third_party/WebKit/Source/devtools/front_end/elements/StylesSidebarPane.js
+++ b/third_party/WebKit/Source/devtools/front_end/elements/StylesSidebarPane.js
@@ -2353,8 +2353,9 @@ Elements.StylePropertyTreeElement = class extends UI.TreeElement {
} else {
cssCompletions = SDK.cssMetadata().propertyValues(this.nameElement.textContent);
}
+ var cssVariables = this._matchedStyles.cssVariables().sort(String.naturalOrderComparator);
- this._prompt = new Elements.StylesSidebarPane.CSSPropertyPrompt(cssCompletions, this, isEditingName);
+ this._prompt = new Elements.StylesSidebarPane.CSSPropertyPrompt(cssCompletions, cssVariables, this, isEditingName);
this._prompt.setAutocompletionTimeout(0);
if (applyItemCallback) {
this._prompt.addEventListener(UI.TextPrompt.Events.ItemApplied, applyItemCallback, this);
@@ -2760,14 +2761,16 @@ Elements.StylePropertyTreeElement.Context;
Elements.StylesSidebarPane.CSSPropertyPrompt = class extends UI.TextPrompt {
/**
* @param {!Array<string>} cssCompletions
+ * @param {!Array<string>} cssVariables
* @param {!Elements.StylePropertyTreeElement} treeElement
* @param {boolean} isEditingName
*/
- constructor(cssCompletions, treeElement, isEditingName) {
+ constructor(cssCompletions, cssVariables, treeElement, isEditingName) {
// Use the same callback both for applyItemCallback and acceptItemCallback.
super();
this.initialize(this._buildPropertyCompletions.bind(this), UI.StyleValueDelimiters);
this._cssCompletions = cssCompletions;
+ this._cssVariables = cssVariables;
this._treeElement = treeElement;
this._isEditingName = isEditingName;
@@ -2887,7 +2890,7 @@ Elements.StylesSidebarPane.CSSPropertyPrompt = class extends UI.TextPrompt {
if (!word)
return false;
word = word.toLowerCase();
- return this._cssCompletions.indexOf(word) !== -1;
+ return this._cssCompletions.indexOf(word) !== -1 || word.startsWith('--');
}
/**
@@ -2898,21 +2901,29 @@ Elements.StylesSidebarPane.CSSPropertyPrompt = class extends UI.TextPrompt {
*/
_buildPropertyCompletions(expression, query, force) {
var lowerQuery = query.toLowerCase();
- if (!query && !force && (this._isEditingName || expression))
+ var editingVariable = !this._isEditingName && expression.trim().endsWith('var(');
+ if (!query && !force && !editingVariable && (this._isEditingName || expression))
return Promise.resolve([]);
var prefixResults = [];
var anywhereResults = [];
- this._cssCompletions.forEach(filterCompletions.bind(this));
- var results = prefixResults.concat(anywhereResults);
+ if (!editingVariable)
+ this._cssCompletions.forEach(filterCompletions.bind(this));
+ if (this._isEditingName || editingVariable)
+ this._cssVariables.forEach(filterCompletions.bind(this));
+ var results = prefixResults.concat(anywhereResults);
if (!this._isEditingName && !results.length && query.length > 1 && '!important'.startsWith(lowerQuery))
results.push({text: '!important'});
var userEnteredText = query.replace('-', '');
if (userEnteredText && (userEnteredText === userEnteredText.toUpperCase())) {
- for (var i = 0; i < results.length; ++i)
- results[i].text = results[i].text.toUpperCase();
+ for (var i = 0; i < results.length; ++i) {
+ if (!results[i].text.startsWith('--'))
+ results[i].text = results[i].text.toUpperCase();
+ }
}
+ if (editingVariable)
+ results.forEach(result => result.text += ')');
return Promise.resolve(results);
/**
@@ -2920,7 +2931,7 @@ Elements.StylesSidebarPane.CSSPropertyPrompt = class extends UI.TextPrompt {
* @this {Elements.StylesSidebarPane.CSSPropertyPrompt}
*/
function filterCompletions(completion) {
- var index = completion.indexOf(lowerQuery);
+ var index = completion.toLowerCase().indexOf(lowerQuery);
if (index === 0) {
var priority = this._isEditingName ? SDK.cssMetadata().propertyUsageWeight(completion) : 1;
prefixResults.push({text: completion, priority: priority});

Powered by Google App Engine
This is Rietveld 408576698