diff --git a/src/vs/base/browser/dom.ts b/src/vs/base/browser/dom.ts index 2d753c91e78..7d5f15fc6e6 100644 --- a/src/vs/base/browser/dom.ts +++ b/src/vs/base/browser/dom.ts @@ -35,33 +35,17 @@ export function isInDOM(node: Node | null): boolean { interface IDomClassList { addClass(node: HTMLElement | SVGElement, className: string): void; - addClasses(node: HTMLElement | SVGElement, ...classNames: string[]): void; - removeClasses(node: HTMLElement | SVGElement, ...classNames: string[]): void; toggleClass(node: HTMLElement | SVGElement, className: string, shouldHaveIt?: boolean): void; } const _classList: IDomClassList = new class implements IDomClassList { - addClasses(node: HTMLElement, ...classNames: string[]): void { - classNames.forEach(nameValue => nameValue.split(' ').forEach(name => this.addClass(node, name))); - } - addClass(node: HTMLElement, className: string): void { if (className && node.classList) { node.classList.add(className); } } - removeClass(node: HTMLElement, className: string): void { - if (className && node.classList) { - node.classList.remove(className); - } - } - - removeClasses(node: HTMLElement, ...classNames: string[]): void { - classNames.forEach(nameValue => nameValue.split(' ').forEach(name => this.removeClass(node, name))); - } - toggleClass(node: HTMLElement, className: string, shouldHaveIt?: boolean): void { if (node.classList) { node.classList.toggle(className, shouldHaveIt); @@ -72,10 +56,6 @@ const _classList: IDomClassList = new class implements IDomClassList { /** @deprecated ES6 - use classList*/ export function addClass(node: HTMLElement | SVGElement, className: string): void { return _classList.addClass(node, className); } /** @deprecated ES6 - use classList*/ -export function addClasses(node: HTMLElement | SVGElement, ...classNames: string[]): void { return _classList.addClasses(node, ...classNames); } -/** @deprecated ES6 - use classList*/ -export function removeClasses(node: HTMLElement | SVGElement, ...classNames: string[]): void { return _classList.removeClasses(node, ...classNames); } -/** @deprecated ES6 - use classList*/ export function toggleClass(node: HTMLElement | SVGElement, className: string, shouldHaveIt?: boolean): void { return _classList.toggleClass(node, className, shouldHaveIt); } class DomListener implements IDisposable { diff --git a/src/vs/editor/contrib/codeAction/lightBulbWidget.ts b/src/vs/editor/contrib/codeAction/lightBulbWidget.ts index 5caf1cd6a60..2d95a32a5ae 100644 --- a/src/vs/editor/contrib/codeAction/lightBulbWidget.ts +++ b/src/vs/editor/contrib/codeAction/lightBulbWidget.ts @@ -204,8 +204,8 @@ export class LightBulbWidget extends Disposable implements IContentWidget { private _updateLightBulbTitleAndIcon(): void { if (this.state.type === LightBulbState.Type.Showing && this.state.actions.hasAutoFix) { // update icon - dom.removeClasses(this._domNode, Codicon.lightBulb.classNames); - dom.addClasses(this._domNode, Codicon.lightbulbAutofix.classNames); + this._domNode.classList.remove(...Codicon.lightBulb.classNamesArray); + this._domNode.classList.add(...Codicon.lightbulbAutofix.classNamesArray); const preferredKb = this._keybindingService.lookupKeybinding(this._preferredFixActionId); if (preferredKb) { @@ -215,8 +215,8 @@ export class LightBulbWidget extends Disposable implements IContentWidget { } // update icon - dom.removeClasses(this._domNode, Codicon.lightbulbAutofix.classNames); - dom.addClasses(this._domNode, Codicon.lightBulb.classNames); + this._domNode.classList.remove(...Codicon.lightbulbAutofix.classNamesArray); + this._domNode.classList.add(...Codicon.lightBulb.classNamesArray); const kb = this._keybindingService.lookupKeybinding(this._quickFixActionId); if (kb) { diff --git a/src/vs/workbench/services/themes/browser/workbenchThemeService.ts b/src/vs/workbench/services/themes/browser/workbenchThemeService.ts index eb96d29d5cd..cde9e21cf7e 100644 --- a/src/vs/workbench/services/themes/browser/workbenchThemeService.ts +++ b/src/vs/workbench/services/themes/browser/workbenchThemeService.ts @@ -18,7 +18,7 @@ import { Event, Emitter } from 'vs/base/common/event'; import { registerFileIconThemeSchemas } from 'vs/workbench/services/themes/common/fileIconThemeSchema'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { FileIconThemeData } from 'vs/workbench/services/themes/browser/fileIconThemeData'; -import { removeClasses, addClasses, createStyleSheet } from 'vs/base/browser/dom'; +import { createStyleSheet } from 'vs/base/browser/dom'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; import { IFileService, FileChangeType } from 'vs/platform/files/common/files'; import { URI } from 'vs/base/common/uri'; @@ -456,11 +456,11 @@ export class WorkbenchThemeService implements IWorkbenchThemeService { this.updateDynamicCSSRules(newTheme); if (this.currentColorTheme.id) { - removeClasses(this.container, this.currentColorTheme.id); + this.container.classList.remove(...this.currentColorTheme.classNames); } else { - removeClasses(this.container, VS_DARK_THEME, VS_LIGHT_THEME, VS_HC_THEME); + this.container.classList.remove(VS_DARK_THEME, VS_LIGHT_THEME, VS_HC_THEME); } - addClasses(this.container, newTheme.id); + this.container.classList.add(...newTheme.classNames); this.currentColorTheme.clearCaches(); this.currentColorTheme = newTheme; @@ -575,9 +575,9 @@ export class WorkbenchThemeService implements IWorkbenchThemeService { _applyRules(iconThemeData.styleSheetContent!, fileIconThemeRulesClassName); if (iconThemeData.id) { - addClasses(this.container, fileIconsEnabledClass); + this.container.classList.add(fileIconsEnabledClass); } else { - removeClasses(this.container, fileIconsEnabledClass); + this.container.classList.remove(fileIconsEnabledClass); } this.fileIconThemeWatcher.update(iconThemeData); diff --git a/src/vs/workbench/services/themes/common/colorThemeData.ts b/src/vs/workbench/services/themes/common/colorThemeData.ts index b4cef7e7368..73ede2fd1f3 100644 --- a/src/vs/workbench/services/themes/common/colorThemeData.ts +++ b/src/vs/workbench/services/themes/common/colorThemeData.ts @@ -515,7 +515,6 @@ export class ColorThemeData implements IWorkbenchColorTheme { id: this.id, label: this.label, settingsId: this.settingsId, - selector: this.id.split(' ').join('.'), // to not break old clients themeTokenColors: this.themeTokenColors, semanticTokenRules: this.semanticTokenRules.map(SemanticTokenRule.toJSONObject), extensionData: ExtensionData.toJSONObject(this.extensionData), @@ -527,7 +526,11 @@ export class ColorThemeData implements IWorkbenchColorTheme { } get baseTheme(): string { - return this.id.split(' ')[0]; + return this.classNames[0]; + } + + get classNames(): string[] { + return this.id.split(' '); } get type(): ColorScheme {