Skip to content
This repository was archived by the owner on Sep 6, 2021. It is now read-only.

Commit 29bb4df

Browse files
committed
Merge pull request #3689 from WebsiteDeveloper/Issue-3338
Replaced toggleClass with add/removeClass where appropriate
2 parents 155e554 + dbc5164 commit 29bb4df

File tree

6 files changed

+34
-23
lines changed

6 files changed

+34
-23
lines changed

src/command/Menus.js

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ define(function (require, exports, module) {
3434
KeyBindingManager = require("command/KeyBindingManager"),
3535
StringUtils = require("utils/StringUtils"),
3636
CommandManager = require("command/CommandManager"),
37-
PopUpManager = require("widgets/PopUpManager");
37+
PopUpManager = require("widgets/PopUpManager"),
38+
ViewUtils = require("utils/ViewUtils");
3839

3940
/**
4041
* Brackets Application Menu Constants
@@ -694,13 +695,7 @@ define(function (require, exports, module) {
694695
}
695696
});
696697
} else {
697-
// Note, checked can also be undefined, so we explicitly check
698-
// for truthiness and don't use toggleClass().
699-
if (checked) {
700-
$(_getHTMLMenuItem(this.id)).addClass("checked");
701-
} else {
702-
$(_getHTMLMenuItem(this.id)).removeClass("checked");
703-
}
698+
ViewUtils.toggleClass($(_getHTMLMenuItem(this.id)), "checked", checked);
704699
}
705700
};
706701

@@ -717,7 +712,7 @@ define(function (require, exports, module) {
717712
}
718713
});
719714
} else {
720-
$(_getHTMLMenuItem(this.id)).toggleClass("disabled", !this._command.getEnabled());
715+
ViewUtils.toggleClass($(_getHTMLMenuItem(this.id)), "disabled", !this._command.getEnabled());
721716
}
722717
};
723718

src/editor/MultiRangeInlineEditor.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,14 +208,14 @@ define(function (require, exports, module) {
208208
var $previousItem = (this._selectedRangeIndex >= 0) ? this._ranges[this._selectedRangeIndex].$listItem : null;
209209

210210
if ($previousItem) {
211-
$previousItem.toggleClass("selected", false);
211+
$previousItem.removeClass("selected");
212212
}
213213

214214
this._selectedRangeIndex = newIndex;
215215

216216
var $rangeItem = this._ranges[this._selectedRangeIndex].$listItem;
217217

218-
this._ranges[this._selectedRangeIndex].$listItem.toggleClass("selected", true);
218+
this._ranges[this._selectedRangeIndex].$listItem.addClass("selected");
219219

220220
// Remove previous editors
221221
this.editors.forEach(function (editor) {

src/project/WorkingSetView.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -321,9 +321,8 @@ define(function (require, exports, module) {
321321

322322
// Set icon's class
323323
if ($fileStatusIcon) {
324-
// cast to Boolean needed because toggleClass() distinguishes true/false from truthy/falsy
325-
$fileStatusIcon.toggleClass("dirty", Boolean(isDirty));
326-
$fileStatusIcon.toggleClass("can-close", Boolean(canClose));
324+
ViewUtils.toggleClass($fileStatusIcon, "dirty", isDirty);
325+
ViewUtils.toggleClass($fileStatusIcon, "can-close", canClose);
327326
}
328327
}
329328

@@ -336,8 +335,7 @@ define(function (require, exports, module) {
336335
function _updateListItemSelection(listItem, selectedDoc) {
337336
var shouldBeSelected = (selectedDoc && $(listItem).data(_FILE_KEY).fullPath === selectedDoc.file.fullPath);
338337

339-
// cast to Boolean needed because toggleClass() distinguishes true/false from truthy/falsy
340-
$(listItem).toggleClass("selected", Boolean(shouldBeSelected));
338+
ViewUtils.toggleClass($(listItem), "selected", shouldBeSelected);
341339
}
342340

343341
function isOpenAndDirty(file) {

src/search/FindReplace.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ define(function (require, exports, module) {
4040
StringUtils = require("utils/StringUtils"),
4141
Editor = require("editor/Editor"),
4242
EditorManager = require("editor/EditorManager"),
43-
ModalBar = require("widgets/ModalBar").ModalBar;
43+
ModalBar = require("widgets/ModalBar").ModalBar,
44+
ViewUtils = require("utils/ViewUtils");
4445

4546
var modalBar,
4647
isFindFirst = false;
@@ -221,7 +222,7 @@ define(function (require, exports, module) {
221222
var foundAny = findNext(editor, rev);
222223

223224
if (modalBar) {
224-
getDialogTextField().toggleClass("no-results", !foundAny);
225+
ViewUtils.toggleClass(getDialogTextField(), "no-results", !foundAny);
225226
}
226227
});
227228
isFindFirst = false;

src/search/QuickOpen.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ define(function (require, exports, module) {
5151
LanguageManager = require("language/LanguageManager"),
5252
KeyEvent = require("utils/KeyEvent"),
5353
ModalBar = require("widgets/ModalBar").ModalBar,
54-
StringMatch = require("utils/StringMatch");
54+
StringMatch = require("utils/StringMatch"),
55+
ViewUtils = require("utils/ViewUtils");
5556

5657

5758
/** @type Array.<QuickOpenPlugin> */
@@ -402,8 +403,9 @@ define(function (require, exports, module) {
402403
QuickNavigateDialog.prototype._handleResultsReady = function (e, results) {
403404
// Give visual clue when there are no results (unless we're in "Go To Line" mode, where there
404405
// are never results, or we're in file search mode and waiting for the index to get rebuilt)
405-
var isNoResults = (results.length === 0 && (fileList || currentPlugin) && !this._isValidLineNumberQuery(this.$searchField.val()));
406-
this.$searchField.toggleClass("no-results", Boolean(isNoResults));
406+
var hasNoResults = (results.length === 0 && (fileList || currentPlugin) && !this._isValidLineNumberQuery(this.$searchField.val()));
407+
408+
ViewUtils.toggleClass(this.$searchField, "no-results", hasNoResults);
407409
};
408410

409411
/**

src/utils/ViewUtils.js

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,20 @@ define(function (require, exports, module) {
154154
$displayElement.off("contentChanged.scroller-shadow");
155155
}
156156

157+
/**
158+
* Utility function to replace jQuery.toggleClass when used with the second argument, which needs to be a true boolean for jQuery
159+
* @param {!jQueryObject} $domElement The jQueryObject to toggle the Class on
160+
* @param {!string} className Class name or names (separated by spaces) to toggle
161+
* @param {!boolean} addClass A truthy value to add the class and a falsy value to remove the class
162+
*/
163+
function toggleClass($domElement, className, addClass) {
164+
if (addClass) {
165+
$domElement.addClass(className);
166+
} else {
167+
$domElement.removeClass(className);
168+
}
169+
}
170+
157171
/**
158172
* Within a scrolling DOMElement, creates and positions a styled selection
159173
* div to align a single selected list item from a ul list element.
@@ -202,8 +216,8 @@ define(function (require, exports, module) {
202216

203217
$selectionTriangle.css("top", triangleTop);
204218
$selectionTriangle.css("left", $sidebar.width() - $selectionTriangle.outerWidth());
205-
$selectionTriangle.toggleClass("triangle-visible", showTriangle);
206-
219+
toggleClass($selectionTriangle, "triangle-visible", showTriangle);
220+
207221
var triangleClipOffsetYBy = Math.floor((selectionMarkerHeight - triangleHeight) / 2),
208222
triangleBottom = triangleTop + triangleHeight + triangleClipOffsetYBy;
209223

@@ -351,4 +365,5 @@ define(function (require, exports, module) {
351365
exports.sidebarList = sidebarList;
352366
exports.scrollElementIntoView = scrollElementIntoView;
353367
exports.getFileEntryDisplay = getFileEntryDisplay;
368+
exports.toggleClass = toggleClass;
354369
});

0 commit comments

Comments
 (0)