Changeset 225547 in webkit
- Timestamp:
- Dec 5, 2017 2:28:20 PM (6 years ago)
- Location:
- trunk/Source/WebInspectorUI
- Files:
-
- 15 edited
- 4 copied
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebInspectorUI/ChangeLog
r225546 r225547 1 2017-12-05 Nikita Vasilyev <nvasilyev@apple.com> 2 3 Web Inspector: Styles: make Computed a top-level sidebar tab 4 https://bugs.webkit.org/show_bug.cgi?id=174229 5 <rdar://problem/33170193> 6 7 Reviewed by Matt Baker. 8 9 Styles dropdown tab selector was removed. Styles and Computed are now top-level sidebar tabs. 10 11 Visual styles is no longer visible in the Styles sidebar tabs by default but can be enabled in the settings. 12 13 * Localizations/en.lproj/localizedStrings.js: 14 * UserInterface/Base/Setting.js: 15 * UserInterface/Main.html: 16 * UserInterface/Views/CSSStyleDeclarationSection.js: 17 (WI.CSSStyleDeclarationSection.prototype.findMatchingPropertiesAndSelectors): 18 * UserInterface/Views/CSSStyleDeclarationTextEditor.js: 19 (WI.CSSStyleDeclarationTextEditor.prototype.findMatchingProperties): 20 (WI.CSSStyleDeclarationTextEditor.prototype.removeNonMatchingProperties): 21 * UserInterface/Views/ComputedStyleDetailsSidebarPanel.js: Added. 22 (WI.ComputedStyleDetailsSidebarPanel): 23 * UserInterface/Views/DOMTreeOutline.js: 24 (WI.DOMTreeOutline.prototype._ondragover): 25 (WI.DOMTreeOutline.prototype._ondrop): 26 * UserInterface/Views/ElementsTabContentView.js: 27 (WI.ElementsTabContentView): 28 * UserInterface/Views/GeneralStyleDetailsSidebarPanel.css: Renamed from Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.css. 29 * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js: Renamed from Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js. 30 (WI.GeneralStyleDetailsSidebarPanel): 31 (WI.GeneralStyleDetailsSidebarPanel.prototype.get panel): 32 (WI.GeneralStyleDetailsSidebarPanel.prototype.visibilityDidChange): 33 (WI.GeneralStyleDetailsSidebarPanel.prototype.computedStyleDetailsPanelShowProperty): 34 (WI.GeneralStyleDetailsSidebarPanel.prototype.layout): 35 (WI.GeneralStyleDetailsSidebarPanel.prototype.initialLayout): 36 (WI.GeneralStyleDetailsSidebarPanel.prototype.sizeDidChange): 37 (WI.GeneralStyleDetailsSidebarPanel.prototype.get _initialScrollOffset): 38 (WI.GeneralStyleDetailsSidebarPanel.prototype._updateNoForcedPseudoClassesScrollOffset): 39 (WI.GeneralStyleDetailsSidebarPanel.prototype._showPanel): 40 (WI.GeneralStyleDetailsSidebarPanel.prototype._newRuleButtonClicked): 41 (WI.GeneralStyleDetailsSidebarPanel.prototype._newRuleButtonContextMenu): 42 (WI.GeneralStyleDetailsSidebarPanel.prototype._populateClassToggles): 43 (WI.GeneralStyleDetailsSidebarPanel.prototype._createToggleForClassName): 44 (WI.GeneralStyleDetailsSidebarPanel.prototype._filterDidChange): 45 Styles and Computed tabs share a few UI components, such as force state (:hover, :focus, etc.), 46 filter field, and CSS class toggle components. To implement this, CSSStyleDetailsSidebarPanel was renamed 47 to GeneralStyleDetailsSidebarPanel. 48 49 CSSStyleDetailsSidebarPanel used to support several panels. This is no longer the case with GeneralStyleDetailsSidebarPanel: 50 - _initiallySelectedPanel was removed. 51 - _selectedPanel was replaced by _panel. 52 53 * UserInterface/Views/GroupNavigationItem.js: 54 (WI.GroupNavigationItem.prototype.get minimumWidth): 55 * UserInterface/Views/NavigationBar.css: 56 (.navigation-bar .item,): 57 (.sidebar-navigation-bar): 58 (.sidebar-navigation-bar .holder): 59 * UserInterface/Views/NavigationBar.js: 60 (WI.NavigationBar.prototype._calculateMinimumWidth): 61 Minor optimization: don't toggle class names when there are no visible navigation items. 62 63 * UserInterface/Views/RulesStyleDetailsPanel.js: 64 (WI.RulesStyleDetailsPanel.prototype.filterDidChange): 65 * UserInterface/Views/RulesStyleDetailsSidebarPanel.js: Copied from Source/WebInspectorUI/UserInterface/Views/NavigationBar.css. 66 (WI.RulesStyleDetailsSidebarPanel): 67 * UserInterface/Views/SearchTabContentView.js: 68 (WI.SearchTabContentView): 69 * UserInterface/Views/SettingsTabContentView.js: 70 (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): 71 * UserInterface/Views/Sidebar.js: 72 (WI.Sidebar): 73 * UserInterface/Views/SidebarNavigationBar.js: Copied from Source/WebInspectorUI/UserInterface/Views/NavigationBar.css. 74 (WI.SidebarNavigationBar): 75 (WI.SidebarNavigationBar.prototype.insertNavigationItem): 76 (WI.SidebarNavigationBar.prototype._calculateMinimumWidth): 77 SidebarNavigationBar wraps navigation items in an element so it can correctly calculate the width of all items with spacing between them. 78 79 * UserInterface/Views/StyleDetailsPanel.js: 80 (WI.StyleDetailsPanel.prototype.get _initialScrollOffset): 81 * UserInterface/Views/VisualStyleDetailsSidebarPanel.js: Copied from Source/WebInspectorUI/UserInterface/Views/NavigationBar.css. 82 (WI.VisualStyleDetailsSidebarPanel): 83 1 84 2017-12-05 Joseph Pecoraro <pecoraro@apple.com> 2 85 -
trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
r225487 r225547 537 537 localizedStrings["Left"] = "Left"; 538 538 localizedStrings["Legacy Style Editor"] = "Legacy Style Editor"; 539 localizedStrings["Legacy Visual Styles Panel"] = "Legacy Visual Styles Panel"; 539 540 localizedStrings["Letter"] = "Letter"; 540 541 localizedStrings["Ligatures"] = "Ligatures"; … … 913 914 localizedStrings["Style Rules"] = "Style Rules"; 914 915 localizedStrings["Style rule"] = "Style rule"; 915 localizedStrings["Styles"] = "Styles";916 916 localizedStrings["Styles Invalidated"] = "Styles Invalidated"; 917 localizedStrings["Styles Panel:"] = "Styles Panel:";918 917 localizedStrings["Styles Recalculated"] = "Styles Recalculated"; 918 localizedStrings["Styles Sidebar:"] = "Styles Sidebar:"; 919 919 localizedStrings["Styles \u2014 Computed"] = "Styles \u2014 Computed"; 920 920 localizedStrings["Styles \u2014 Rules"] = "Styles \u2014 Rules"; -
trunk/Source/WebInspectorUI/UserInterface/Base/Setting.js
r224354 r225547 124 124 125 125 // Experimental 126 experimentalEnableLayersTab: new WI.Setting("experimental-enable-layers-tab", false), 126 127 experimentalLegacyStyleEditor: new WI.Setting("experimental-legacy-style-editor", false), 127 experimental EnableLayersTab: new WI.Setting("experimental-enable-layers-tab", false),128 experimentalLegacyVisualSidebar: new WI.Setting("experimental-legacy-visual-sidebar", false), 128 129 }; -
trunk/Source/WebInspectorUI/UserInterface/Main.html
r225259 r225547 41 41 <link rel="stylesheet" href="Views/CSSStyleDeclarationSection.css"> 42 42 <link rel="stylesheet" href="Views/CSSStyleDeclarationTextEditor.css"> 43 <link rel="stylesheet" href="Views/CSSStyleDetailsSidebarPanel.css">44 43 <link rel="stylesheet" href="Views/CallFrameIcons.css"> 45 44 <link rel="stylesheet" href="Views/CallFrameTreeElement.css"> … … 92 91 <link rel="stylesheet" href="Views/FontResourceContentView.css"> 93 92 <link rel="stylesheet" href="Views/FormattedValue.css"> 93 <link rel="stylesheet" href="Views/GeneralStyleDetailsSidebarPanel.css"> 94 94 <link rel="stylesheet" href="Views/GoToLineDialog.css"> 95 95 <link rel="stylesheet" href="Views/GradientEditor.css"> … … 465 465 <script src="Views/Popover.js"></script> 466 466 <script src="Views/SidebarPanel.js"></script> 467 <script src="Views/StyleDetailsPanel.js"></script>468 467 <script src="Views/TabBar.js"></script> 469 468 <script src="Views/TabBarItem.js"></script> … … 508 507 <script src="Views/TimelineTreeElement.js"></script> 509 508 509 <script src="Views/GeneralStyleDetailsSidebarPanel.js"></script> 510 <script src="Views/RulesStyleDetailsSidebarPanel.js"></script> 511 <script src="Views/ComputedStyleDetailsSidebarPanel.js"></script> 512 <script src="Views/VisualStyleDetailsSidebarPanel.js"></script> 513 <script src="Views/StyleDetailsPanel.js"></script> 514 510 515 <script src="Views/CanvasTabContentView.js"></script> 511 516 <script src="Views/ConsoleTabContentView.js"></script> … … 545 550 <script src="Views/CSSStyleDeclarationSection.js"></script> 546 551 <script src="Views/CSSStyleDeclarationTextEditor.js"></script> 547 <script src="Views/CSSStyleDetailsSidebarPanel.js"></script>548 552 <script src="Views/CSSStyleSheetTreeElement.js"></script> 549 553 <script src="Views/CallFrameTreeElement.js"></script> … … 724 728 <script src="Views/ShaderProgramTreeElement.js"></script> 725 729 <script src="Views/Sidebar.js"></script> 730 <script src="Views/SidebarNavigationBar.js"></script> 726 731 <script src="Views/Slider.js"></script> 727 732 <script src="Views/SoftContextMenu.js"></script> -
trunk/Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationSection.js
r223308 r225547 321 321 findMatchingPropertiesAndSelectors(needle) 322 322 { 323 this._element.classList.remove(WI. CSSStyleDetailsSidebarPanel.NoFilterMatchInSectionClassName, WI.CSSStyleDetailsSidebarPanel.FilterMatchingSectionHasLabelClassName);323 this._element.classList.remove(WI.GeneralStyleDetailsSidebarPanel.NoFilterMatchInSectionClassName, WI.GeneralStyleDetailsSidebarPanel.FilterMatchingSectionHasLabelClassName); 324 324 325 325 var hasMatchingSelector = false; 326 326 327 327 for (var selectorElement of this._selectorElements) { 328 selectorElement.classList.remove(WI. CSSStyleDetailsSidebarPanel.FilterMatchSectionClassName);328 selectorElement.classList.remove(WI.GeneralStyleDetailsSidebarPanel.FilterMatchSectionClassName); 329 329 330 330 if (needle && selectorElement.textContent.includes(needle)) { 331 selectorElement.classList.add(WI. CSSStyleDetailsSidebarPanel.FilterMatchSectionClassName);331 selectorElement.classList.add(WI.GeneralStyleDetailsSidebarPanel.FilterMatchSectionClassName); 332 332 hasMatchingSelector = true; 333 333 } … … 342 342 343 343 if (!hasMatchingProperty && !hasMatchingSelector) { 344 this._element.classList.add(WI. CSSStyleDetailsSidebarPanel.NoFilterMatchInSectionClassName);344 this._element.classList.add(WI.GeneralStyleDetailsSidebarPanel.NoFilterMatchInSectionClassName); 345 345 return false; 346 346 } -
trunk/Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js
r224354 r225547 251 251 252 252 if (matchingProperties[i]) 253 property.__filterResultClassName = WI. CSSStyleDetailsSidebarPanel.FilterMatchSectionClassName;253 property.__filterResultClassName = WI.GeneralStyleDetailsSidebarPanel.FilterMatchSectionClassName; 254 254 else 255 property.__filterResultClassName = WI. CSSStyleDetailsSidebarPanel.NoFilterMatchInPropertyClassName;255 property.__filterResultClassName = WI.GeneralStyleDetailsSidebarPanel.NoFilterMatchInPropertyClassName; 256 256 257 257 this._updateTextMarkerForPropertyIfNeeded(property); … … 289 289 if (indexesOfNeedle.length) { 290 290 matchingPropertyNames.push(property.name); 291 property.__filterResultClassName = WI. CSSStyleDetailsSidebarPanel.FilterMatchSectionClassName;291 property.__filterResultClassName = WI.GeneralStyleDetailsSidebarPanel.FilterMatchSectionClassName; 292 292 property.__filterResultNeedlePosition = {start: indexesOfNeedle, length: needle.length}; 293 293 } -
trunk/Source/WebInspectorUI/UserInterface/Views/ComputedStyleDetailsSidebarPanel.js
r225546 r225547 1 1 /* 2 * Copyright (C) 201 3Apple Inc. All rights reserved.2 * Copyright (C) 2017 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 .navigation-bar { 27 display: flex; 28 justify-content: center; 29 align-items: center; 30 flex-wrap: wrap; 31 32 border-bottom: 1px solid var(--border-color); 33 34 height: var(--navigation-bar-height); 35 36 white-space: nowrap; 37 overflow: hidden; 38 39 outline: none; 40 } 41 42 .navigation-bar .item { 43 display: flex; 44 align-items: center; 45 flex-wrap: wrap; 46 47 height: auto; 48 outline: none; 49 } 50 51 .navigation-bar .item.force-hidden { 52 display: none; 53 } 26 WI.ComputedStyleDetailsSidebarPanel = class ComputedStyleDetailsSidebarPanel extends WI.GeneralStyleDetailsSidebarPanel 27 { 28 constructor() 29 { 30 super("style-computed", "Computed", WI.ComputedStyleDetailsPanel); 31 } 32 }; -
trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js
r224314 r225547 363 363 _ondragover(event) 364 364 { 365 if (event.dataTransfer.types.includes(WI. CSSStyleDetailsSidebarPanel.ToggledClassesDragType)) {365 if (event.dataTransfer.types.includes(WI.GeneralStyleDetailsSidebarPanel.ToggledClassesDragType)) { 366 366 event.preventDefault(); 367 367 event.dataTransfer.dropEffect = "copy"; … … 445 445 this._nodeBeingDragged.moveTo(parentNode, anchorNode, callback.bind(this)); 446 446 } else { 447 let className = event.dataTransfer.getData(WI. CSSStyleDetailsSidebarPanel.ToggledClassesDragType);447 let className = event.dataTransfer.getData(WI.GeneralStyleDetailsSidebarPanel.ToggledClassesDragType); 448 448 if (className && treeElement) 449 449 treeElement.representedObject.toggleClass(className, true); -
trunk/Source/WebInspectorUI/UserInterface/Views/ElementsTabContentView.js
r222484 r225547 30 30 let {image, title} = WI.ElementsTabContentView.tabInfo(); 31 31 let tabBarItem = new WI.GeneralTabBarItem(image, title); 32 let detailsSidebarPanelConstructors = [WI. DOMNodeDetailsSidebarPanel, WI.CSSStyleDetailsSidebarPanel];32 let detailsSidebarPanelConstructors = [WI.RulesStyleDetailsSidebarPanel, WI.ComputedStyleDetailsSidebarPanel, WI.DOMNodeDetailsSidebarPanel]; 33 33 34 34 if (window.LayerTreeAgent && !WI.settings.experimentalEnableLayersTab.value) 35 35 detailsSidebarPanelConstructors.push(WI.LayerTreeDetailsSidebarPanel); 36 37 if (WI.settings.experimentalLegacyVisualSidebar.value) 38 detailsSidebarPanelConstructors.push(WI.VisualStyleDetailsSidebarPanel); 36 39 37 40 super(identifier || "elements", "elements", tabBarItem, null, detailsSidebarPanelConstructors, true); -
trunk/Source/WebInspectorUI/UserInterface/Views/GeneralStyleDetailsSidebarPanel.js
r225546 r225547 24 24 */ 25 25 26 WI. CSSStyleDetailsSidebarPanel = class CSSStyleDetailsSidebarPanel extends WI.DOMDetailsSidebarPanel26 WI.GeneralStyleDetailsSidebarPanel = class GeneralStyleDetailsSidebarPanel extends WI.DOMDetailsSidebarPanel 27 27 { 28 constructor() 29 { 30 const dontCreateNavigationItem = true; 31 super("css-style", WI.UIString("Styles"), dontCreateNavigationItem); 32 33 this._selectedPanel = null; 34 this._computedStyleDetailsPanel = new WI.ComputedStyleDetailsPanel(this); 35 this._rulesStyleDetailsPanel = new WI.RulesStyleDetailsPanel(this); 36 this._visualStyleDetailsPanel = new WI.VisualStyleDetailsPanel(this); 37 38 if (WI.settings.experimentalLegacyStyleEditor.value) 39 this._activeRulesStyleDetailsPanel = this._rulesStyleDetailsPanel; 40 else 41 this._activeRulesStyleDetailsPanel = new WI.SpreadsheetRulesStyleDetailsPanel(this); 42 43 this._panels = [this._computedStyleDetailsPanel, this._activeRulesStyleDetailsPanel, this._visualStyleDetailsPanel]; 44 this._panelNavigationInfo = [this._computedStyleDetailsPanel.navigationInfo, this._activeRulesStyleDetailsPanel.navigationInfo, this._visualStyleDetailsPanel.navigationInfo]; 45 46 this._lastSelectedPanelSetting = new WI.Setting("last-selected-style-details-panel", this._activeRulesStyleDetailsPanel.navigationInfo.identifier); 28 constructor(identifier, displayName, panelConstructor) 29 { 30 super(identifier, displayName); 31 32 this.element.classList.add("css-style"); 33 this._panel = new panelConstructor(this); 34 47 35 this._classListContainerToggledSetting = new WI.Setting("class-list-container-toggled", false); 48 49 this._initiallySelectedPanel = this._panelMatchingIdentifier(this._lastSelectedPanelSetting.value) || this._activeRulesStyleDetailsPanel;50 51 this._navigationItem = new WI.ScopeRadioButtonNavigationItem(this.identifier, this.displayName, this._panelNavigationInfo, this._initiallySelectedPanel.navigationInfo);52 this._navigationItem.addEventListener(WI.ScopeRadioButtonNavigationItem.Event.SelectedItemChanged, this._handleSelectedItemChanged, this);53 54 36 this._forcedPseudoClassCheckboxes = {}; 55 37 } … … 57 39 // Public 58 40 41 get panel() { return this._panel; } 42 59 43 supportsDOMNode(nodeToInspect) 60 44 { … … 66 50 super.visibilityDidChange(); 67 51 68 if (!this._ selectedPanel)52 if (!this._panel) 69 53 return; 70 54 71 55 if (!this.visible) { 72 this._ selectedPanel.hidden();56 this._panel.hidden(); 73 57 return; 74 58 } … … 76 60 this._updateNoForcedPseudoClassesScrollOffset(); 77 61 78 this._ selectedPanel.shown();79 this._ selectedPanel.markAsNeedsRefresh(this.domNode);62 this._panel.shown(); 63 this._panel.markAsNeedsRefresh(this.domNode); 80 64 } 81 65 82 66 computedStyleDetailsPanelShowProperty(property) 83 67 { 84 this._activeRulesStyleDetailsPanel.scrollToSectionAndHighlightProperty(property); 85 this._switchPanels(this._activeRulesStyleDetailsPanel); 86 87 this._navigationItem.selectedItemIdentifier = this._lastSelectedPanelSetting.value; 68 this.parentSidebar.selectedSidebarPanel = "style-rules"; 69 70 let styleRulesPanel = null; 71 for (let sidebarPanel of this.parentSidebar.sidebarPanels) { 72 if (!(sidebarPanel instanceof WI.RulesStyleDetailsSidebarPanel)) 73 continue; 74 75 styleRulesPanel = sidebarPanel; 76 break; 77 } 78 79 console.assert(styleRulesPanel, "Styles panel is missing."); 80 styleRulesPanel.panel.scrollToSectionAndHighlightProperty(property); 88 81 } 89 82 … … 97 90 98 91 this.contentView.element.scrollTop = this._initialScrollOffset; 99 100 for (let panel of this._panels) { 101 panel.element._savedScrollTop = undefined; 102 panel.markAsNeedsRefresh(domNode); 103 } 92 this._panel.markAsNeedsRefresh(domNode); 104 93 105 94 this._updatePseudoClassCheckboxes(); … … 164 153 } 165 154 166 this._computedStyleDetailsPanel.addEventListener(WI.StyleDetailsPanel.Event.Refreshed, this._filterDidChange, this); 167 this._rulesStyleDetailsPanel.addEventListener(WI.StyleDetailsPanel.Event.Refreshed, this._filterDidChange, this); 168 169 console.assert(this._initiallySelectedPanel, "Should have an initially selected panel."); 170 171 this._switchPanels(this._initiallySelectedPanel); 172 this._initiallySelectedPanel = null; 155 this._panel.addEventListener(WI.StyleDetailsPanel.Event.Refreshed, this._filterDidChange, this); 156 157 this._showPanel(this._panel); 173 158 174 159 let optionsContainer = this.element.createChild("div", "options-container"); … … 213 198 this._updateNoForcedPseudoClassesScrollOffset(); 214 199 215 if (this._ selectedPanel)216 this._ selectedPanel.sizeDidChange();200 if (this._panel) 201 this._panel.sizeDidChange(); 217 202 } 218 203 … … 223 208 if (!WI.cssStyleManager.canForcePseudoClasses()) 224 209 return 0; 225 return this.domNode && this.domNode.enabledPseudoClasses.length ? 0 : WI. CSSStyleDetailsSidebarPanel.NoForcedPseudoClassesScrollOffset;210 return this.domNode && this.domNode.enabledPseudoClasses.length ? 0 : WI.GeneralStyleDetailsSidebarPanel.NoForcedPseudoClassesScrollOffset; 226 211 } 227 212 … … 229 214 { 230 215 if (this._forcedPseudoClassContainer) 231 WI.CSSStyleDetailsSidebarPanel.NoForcedPseudoClassesScrollOffset = this._forcedPseudoClassContainer.offsetHeight; 232 } 233 234 _panelMatchingIdentifier(identifier) 235 { 236 let selectedPanel = null; 237 for (let panel of this._panels) { 238 if (panel.navigationInfo.identifier !== identifier) 239 continue; 240 241 selectedPanel = panel; 242 break; 243 } 244 245 return selectedPanel; 246 } 247 248 _handleSelectedItemChanged() 249 { 250 let selectedIdentifier = this._navigationItem.selectedItemIdentifier; 251 let selectedPanel = this._panelMatchingIdentifier(selectedIdentifier); 252 this._switchPanels(selectedPanel); 253 } 254 255 _switchPanels(selectedPanel) 256 { 257 console.assert(selectedPanel); 258 259 if (this._selectedPanel) { 260 this._selectedPanel.hidden(); 261 this._selectedPanel.element._savedScrollTop = this.contentView.element.scrollTop; 262 this.contentView.removeSubview(this._selectedPanel); 263 } 264 265 this._selectedPanel = selectedPanel; 266 if (!this._selectedPanel) 267 return; 268 269 this.contentView.addSubview(this._selectedPanel); 270 271 if (typeof this._selectedPanel.element._savedScrollTop === "number") 272 this.contentView.element.scrollTop = this._selectedPanel.element._savedScrollTop; 273 else 274 this.contentView.element.scrollTop = this._initialScrollOffset; 275 276 let hasFilter = typeof this._selectedPanel.filterDidChange === "function"; 216 WI.GeneralStyleDetailsSidebarPanel.NoForcedPseudoClassesScrollOffset = this._forcedPseudoClassContainer.offsetHeight; 217 } 218 219 _showPanel() 220 { 221 this.contentView.addSubview(this._panel); 222 223 let hasFilter = typeof this._panel.filterDidChange === "function"; 277 224 this.contentView.element.classList.toggle("has-filter-bar", hasFilter); 278 225 if (this._filterBar) 279 this.contentView.element.classList.toggle(WI.CSSStyleDetailsSidebarPanel.FilterInProgressClassName, hasFilter && this._filterBar.hasActiveFilters()); 280 281 this.contentView.element.classList.toggle("supports-new-rule", typeof this._selectedPanel.newRuleButtonClicked === "function"); 282 this._selectedPanel.shown(); 283 284 this._lastSelectedPanelSetting.value = selectedPanel.navigationInfo.identifier; 226 this.contentView.element.classList.toggle(WI.GeneralStyleDetailsSidebarPanel.FilterInProgressClassName, hasFilter && this._filterBar.hasActiveFilters()); 227 228 this.contentView.element.classList.toggle("supports-new-rule", typeof this._panel.newRuleButtonClicked === "function"); 229 this._panel.shown(); 285 230 } 286 231 … … 322 267 } 323 268 324 325 269 _newRuleButtonClicked() 326 270 { 327 if (this._ selectedPanel && typeof this._selectedPanel.newRuleButtonClicked === "function")328 this._ selectedPanel.newRuleButtonClicked();271 if (this._panel && typeof this._panel.newRuleButtonClicked === "function") 272 this._panel.newRuleButtonClicked(); 329 273 } 330 274 331 275 _newRuleButtonContextMenu(event) 332 276 { 333 if (this._ selectedPanel && typeof this._selectedPanel.newRuleButtonContextMenu === "function")334 this._ selectedPanel.newRuleButtonContextMenu(event);277 if (this._panel && typeof this._panel.newRuleButtonContextMenu === "function") 278 this._panel.newRuleButtonContextMenu(event); 335 279 } 336 280 … … 374 318 375 319 let classes = this.domNode.getAttribute("class"); 376 let classToggledMap = this.domNode[WI. CSSStyleDetailsSidebarPanel.ToggledClassesSymbol];320 let classToggledMap = this.domNode[WI.GeneralStyleDetailsSidebarPanel.ToggledClassesSymbol]; 377 321 if (!classToggledMap) 378 classToggledMap = this.domNode[WI. CSSStyleDetailsSidebarPanel.ToggledClassesSymbol] = new Map;322 classToggledMap = this.domNode[WI.GeneralStyleDetailsSidebarPanel.ToggledClassesSymbol] = new Map; 379 323 380 324 if (classes && classes.length) { … … 398 342 return; 399 343 400 let classToggledMap = this.domNode[WI. CSSStyleDetailsSidebarPanel.ToggledClassesSymbol];344 let classToggledMap = this.domNode[WI.GeneralStyleDetailsSidebarPanel.ToggledClassesSymbol]; 401 345 if (!classToggledMap) 402 346 return; … … 418 362 classNameTitle.draggable = true; 419 363 classNameTitle.addEventListener("dragstart", (event) => { 420 event.dataTransfer.setData(WI. CSSStyleDetailsSidebarPanel.ToggledClassesDragType, className);364 event.dataTransfer.setData(WI.GeneralStyleDetailsSidebarPanel.ToggledClassesDragType, className); 421 365 event.dataTransfer.effectAllowed = "copy"; 422 366 }); … … 438 382 _filterDidChange() 439 383 { 440 this.contentView.element.classList.toggle(WI. CSSStyleDetailsSidebarPanel.FilterInProgressClassName, this._filterBar.hasActiveFilters());441 442 this._ selectedPanel.filterDidChange(this._filterBar);384 this.contentView.element.classList.toggle(WI.GeneralStyleDetailsSidebarPanel.FilterInProgressClassName, this._filterBar.hasActiveFilters()); 385 386 this._panel.filterDidChange(this._filterBar); 443 387 } 444 388 … … 449 393 }; 450 394 451 WI. CSSStyleDetailsSidebarPanel.NoForcedPseudoClassesScrollOffset = 30; // Default height of the forced pseudo classes container. Updated in sizeDidChange.452 WI. CSSStyleDetailsSidebarPanel.FilterInProgressClassName = "filter-in-progress";453 WI. CSSStyleDetailsSidebarPanel.FilterMatchingSectionHasLabelClassName = "filter-section-has-label";454 WI. CSSStyleDetailsSidebarPanel.FilterMatchSectionClassName = "filter-matching";455 WI. CSSStyleDetailsSidebarPanel.NoFilterMatchInSectionClassName = "filter-section-non-matching";456 WI. CSSStyleDetailsSidebarPanel.NoFilterMatchInPropertyClassName = "filter-property-non-matching";457 458 WI. CSSStyleDetailsSidebarPanel.ToggledClassesSymbol = Symbol("css-style-details-sidebar-panel-toggled-classes-symbol");459 WI. CSSStyleDetailsSidebarPanel.ToggledClassesDragType = "text/classname";395 WI.GeneralStyleDetailsSidebarPanel.NoForcedPseudoClassesScrollOffset = 30; // Default height of the forced pseudo classes container. Updated in sizeDidChange. 396 WI.GeneralStyleDetailsSidebarPanel.FilterInProgressClassName = "filter-in-progress"; 397 WI.GeneralStyleDetailsSidebarPanel.FilterMatchingSectionHasLabelClassName = "filter-section-has-label"; 398 WI.GeneralStyleDetailsSidebarPanel.FilterMatchSectionClassName = "filter-matching"; 399 WI.GeneralStyleDetailsSidebarPanel.NoFilterMatchInSectionClassName = "filter-section-non-matching"; 400 WI.GeneralStyleDetailsSidebarPanel.NoFilterMatchInPropertyClassName = "filter-property-non-matching"; 401 402 WI.GeneralStyleDetailsSidebarPanel.ToggledClassesSymbol = Symbol("css-style-details-sidebar-panel-toggled-classes-symbol"); 403 WI.GeneralStyleDetailsSidebarPanel.ToggledClassesDragType = "text/classname"; -
trunk/Source/WebInspectorUI/UserInterface/Views/NavigationBar.css
r221338 r225547 40 40 } 41 41 42 .navigation-bar .item { 42 .navigation-bar .item, 43 .sidebar-navigation-bar > .holder .item { 43 44 display: flex; 44 45 align-items: center; … … 52 53 display: none; 53 54 } 55 56 .sidebar-navigation-bar { 57 display: block; 58 text-align: center; 59 height: var(--navigation-bar-height); 60 border-bottom: 1px solid var(--border-color); 61 } 62 63 .sidebar-navigation-bar .holder { 64 display: inline-flex; 65 align-items: center; 66 height: var(--navigation-bar-height); 67 padding: 0 2px; 68 border-bottom: none; 69 } -
trunk/Source/WebInspectorUI/UserInterface/Views/NavigationBar.js
r224481 r225547 422 422 _calculateMinimumWidth() 423 423 { 424 let visibleNavigationItems = this._visibleNavigationItems; 425 if (!visibleNavigationItems.length) 426 return 0; 427 424 428 const wasCollapsed = this.element.classList.contains(WI.NavigationBar.CollapsedStyleClassName); 425 429 … … 428 432 this.element.classList.add(WI.NavigationBar.CollapsedStyleClassName); 429 433 430 let totalItemWidth = this._visibleNavigationItems.reduce((total, item) => total + item.minimumWidth, 0);434 let totalItemWidth = visibleNavigationItems.reduce((total, item) => total + item.minimumWidth, 0); 431 435 432 436 // Remove the collapsed style class if we were not collapsed before. -
trunk/Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js
r225487 r225547 356 356 for (var labels of this._ruleMediaAndInherticanceList) { 357 357 for (var i = 0; i < labels.length; ++i) { 358 labels[i].classList.toggle(WI. CSSStyleDetailsSidebarPanel.NoFilterMatchInSectionClassName, filterBar.hasActiveFilters());358 labels[i].classList.toggle(WI.GeneralStyleDetailsSidebarPanel.NoFilterMatchInSectionClassName, filterBar.hasActiveFilters()); 359 359 360 360 if (i === labels.length - 1) … … 370 370 if (this._ruleMediaAndInherticanceList[i].length) { 371 371 for (var label of this._ruleMediaAndInherticanceList[i]) 372 label.classList.remove(WI. CSSStyleDetailsSidebarPanel.NoFilterMatchInSectionClassName);372 label.classList.remove(WI.GeneralStyleDetailsSidebarPanel.NoFilterMatchInSectionClassName); 373 373 } else 374 section.element.classList.add(WI. CSSStyleDetailsSidebarPanel.FilterMatchingSectionHasLabelClassName);374 section.element.classList.add(WI.GeneralStyleDetailsSidebarPanel.FilterMatchingSectionHasLabelClassName); 375 375 376 376 matchFound = true; -
trunk/Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsSidebarPanel.js
r225546 r225547 1 1 /* 2 * Copyright (C) 201 3Apple Inc. All rights reserved.2 * Copyright (C) 2017 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 .navigation-bar { 27 display: flex; 28 justify-content: center;29 align-items: center;30 flex-wrap: wrap;26 WI.RulesStyleDetailsSidebarPanel = class RulesStyleDetailsSidebarPanel extends WI.GeneralStyleDetailsSidebarPanel 27 { 28 constructor() 29 { 30 let rulesStyleDetailsPanelConstructor; 31 31 32 border-bottom: 1px solid var(--border-color); 32 if (WI.settings.experimentalLegacyStyleEditor.value) 33 rulesStyleDetailsPanelConstructor = WI.RulesStyleDetailsPanel; 34 else 35 rulesStyleDetailsPanelConstructor = WI.SpreadsheetRulesStyleDetailsPanel; 33 36 34 height: var(--navigation-bar-height); 35 36 white-space: nowrap; 37 overflow: hidden; 38 39 outline: none; 40 } 41 42 .navigation-bar .item { 43 display: flex; 44 align-items: center; 45 flex-wrap: wrap; 46 47 height: auto; 48 outline: none; 49 } 50 51 .navigation-bar .item.force-hidden { 52 display: none; 53 } 37 super("style-rules", "Styles", rulesStyleDetailsPanelConstructor); 38 } 39 }; -
trunk/Source/WebInspectorUI/UserInterface/Views/SearchTabContentView.js
r224499 r225547 31 31 let tabBarItem = new WI.GeneralTabBarItem(image, title); 32 32 let detailsSidebarPanelConstructors = [WI.ResourceDetailsSidebarPanel, WI.ProbeDetailsSidebarPanel, 33 WI.DOMNodeDetailsSidebarPanel, WI.C SSStyleDetailsSidebarPanel];33 WI.DOMNodeDetailsSidebarPanel, WI.ComputedStyleDetailsSidebarPanel, WI.RulesStyleDetailsSidebarPanel]; 34 34 35 35 if (window.LayerTreeAgent && !WI.settings.experimentalEnableLayersTab.value) -
trunk/Source/WebInspectorUI/UserInterface/Views/SettingsTabContentView.js
r225257 r225547 248 248 249 249 if (window.CSSAgent) { 250 experimentalSettingsView.addSetting(WI.UIString("Styles Panel:"), WI.settings.experimentalLegacyStyleEditor, WI.UIString("Legacy Style Editor")); 251 experimentalSettingsView.addSeparator(); 250 let stylesGroup = experimentalSettingsView.addGroup(WI.UIString("Styles Sidebar:")); 251 stylesGroup.addSetting(WI.settings.experimentalLegacyStyleEditor, WI.UIString("Legacy Style Editor")); 252 stylesGroup.addSetting(WI.settings.experimentalLegacyVisualSidebar, WI.UIString("Legacy Visual Styles Panel")); 252 253 } 253 254 … … 272 273 273 274 listenForChange(WI.settings.experimentalLegacyStyleEditor); 275 listenForChange(WI.settings.experimentalLegacyVisualSidebar); 274 276 listenForChange(WI.settings.experimentalEnableLayersTab); 275 277 -
trunk/Source/WebInspectorUI/UserInterface/Views/Sidebar.js
r223308 r225547 43 43 this.element.classList.add("has-navigation-bar"); 44 44 45 this._navigationBar = new WI. NavigationBar(null, null, "tablist");45 this._navigationBar = new WI.SidebarNavigationBar(null, null, "tablist"); 46 46 this._navigationBar.addEventListener(WI.NavigationBar.Event.NavigationItemSelected, this._navigationItemSelected, this); 47 47 this.addSubview(this._navigationBar); -
trunk/Source/WebInspectorUI/UserInterface/Views/SidebarNavigationBar.js
r225546 r225547 1 1 /* 2 * Copyright (C) 201 3Apple Inc. All rights reserved.2 * Copyright (C) 2017 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 .navigation-bar { 27 display: flex; 28 justify-content: center;29 align-items: center;30 flex-wrap: wrap;26 WI.SidebarNavigationBar = class SidebarNavigationBar extends WI.NavigationBar 27 { 28 constructor(element, navigationItems, role, label) 29 { 30 super(element, navigationItems, role, label); 31 31 32 border-bottom: 1px solid var(--border-color); 32 this.element.classList.add("sidebar-navigation-bar"); 33 this._holderElement = this.element.appendChild(document.createElement("div")); 34 this._holderElement.className = "holder"; 35 } 33 36 34 height: var(--navigation-bar-height);37 // Public 35 38 36 white-space: nowrap; 37 overflow: hidden; 39 insertNavigationItem(navigationItem, index) 40 { 41 return super.insertNavigationItem(navigationItem, index, this._holderElement); 42 } 38 43 39 outline: none; 40 } 44 // Private 41 45 42 .navigation-bar .item { 43 display: flex; 44 align-items: center; 45 flex-wrap: wrap; 46 47 height: auto; 48 outline: none; 49 } 50 51 .navigation-bar .item.force-hidden { 52 display: none; 53 } 46 _calculateMinimumWidth() 47 { 48 return this._holderElement.offsetWidth; 49 } 50 }; -
trunk/Source/WebInspectorUI/UserInterface/Views/StyleDetailsPanel.js
r221594 r225547 126 126 if (!WI.cssStyleManager.canForcePseudoClasses()) 127 127 return 0; 128 return this.nodeStyles.node.enabledPseudoClasses.length ? 0 : WI. CSSStyleDetailsSidebarPanel.NoForcedPseudoClassesScrollOffset;128 return this.nodeStyles.node.enabledPseudoClasses.length ? 0 : WI.GeneralStyleDetailsSidebarPanel.NoForcedPseudoClassesScrollOffset; 129 129 } 130 130 -
trunk/Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsSidebarPanel.js
r225546 r225547 1 1 /* 2 * Copyright (C) 201 3Apple Inc. All rights reserved.2 * Copyright (C) 2017 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 .navigation-bar { 27 display: flex; 28 justify-content: center; 29 align-items: center; 30 flex-wrap: wrap; 31 32 border-bottom: 1px solid var(--border-color); 33 34 height: var(--navigation-bar-height); 35 36 white-space: nowrap; 37 overflow: hidden; 38 39 outline: none; 40 } 41 42 .navigation-bar .item { 43 display: flex; 44 align-items: center; 45 flex-wrap: wrap; 46 47 height: auto; 48 outline: none; 49 } 50 51 .navigation-bar .item.force-hidden { 52 display: none; 53 } 26 WI.VisualStyleDetailsSidebarPanel = class VisualStyleDetailsSidebarPanel extends WI.GeneralStyleDetailsSidebarPanel 27 { 28 constructor() 29 { 30 super("style-visual", "Visual", WI.VisualStyleDetailsPanel); 31 } 32 };
Note: See TracChangeset
for help on using the changeset viewer.