Adding light contrast theme (#22028)

* Adding light contrast theme

* fixing oe icons

* Fixing more files

* Converting ep files to support hc light

* Revert "Copy Headers for Selected Columns (#21622)"

This reverts commit f74d6f6d9b.

* Adding more css rules

* Fixing modal

* Fixing azure icons
This commit is contained in:
Aasim Khan
2023-03-06 17:31:27 -08:00
committed by GitHub
parent 29c1f5edd0
commit d3f4f0daa4
61 changed files with 912 additions and 267 deletions

View File

@@ -24,6 +24,8 @@
.modal.callout-dialog .modal-content .row {
margin-bottom: 16px;
}
.hc-light .modal.callout-dialog .modal-dialog,
.hc-black .modal.callout-dialog .modal-dialog {
box-shadow: none;
}
@@ -55,9 +57,12 @@
width: 26px;
}
.hc-light .callout-arrow:before,
.hc-black .callout-arrow:before {
box-shadow: none;
}
.hc-light .callout-arrow.from-left:before,
.hc-black .callout-arrow.from-left:before {
box-shadow: none;
}

View File

@@ -219,16 +219,16 @@
margin: 3px 10px 3px 3px;
}
.modal.flyout-dialog .dialog-message.info .dialog-message-button > a:focus,
.modal.flyout-dialog .dialog-message.error .dialog-message-button > a:focus {
.modal.flyout-dialog .dialog-message.info .dialog-message-button>a:focus,
.modal.flyout-dialog .dialog-message.error .dialog-message-button>a:focus {
outline-color: #FFFFFF;
}
.modal.flyout-dialog .dialog-message.warning .dialog-message-button > a:focus {
.modal.flyout-dialog .dialog-message.warning .dialog-message-button>a:focus {
outline-color: #000000;
}
.modal.flyout-dialog .dialog-message-button > a {
.modal.flyout-dialog .dialog-message-button>a {
background-position-x: 2px !important;
background-color: inherit !important;
color: inherit !important;
@@ -298,11 +298,32 @@
background: url('error_notification_inverse.svg') center center no-repeat;
}
.hc-light .dialog-message.info .dialog-message-icon {
background: url('info_notification.svg') center center no-repeat !important;
}
.hc-light .dialog-message.error .dialog-message-icon {
background: url('error_notification.svg') center center no-repeat !important;
}
.hc-light .dialog-message.warning .dialog-message-icon {
background: url('warning_notification.svg') center center no-repeat !important;
}
.hc-light .copy-message-icon {
background: url('copy.svg') center center no-repeat !important;
}
.hc-light .close-message-icon {
background: url('close.svg') center center no-repeat !important;
}
.codicon.masked-icon.browse-local {
display: inline-block;
height: 25px;
width: 25px;
}
.codicon.masked-icon.browse-local:before {
height: 25px;
width: 25px;

View File

@@ -47,7 +47,8 @@
align-items: center;
}
.backButtonIcon {
.backButtonIcon,
.hc-light .backButtonIcon {
content: url('back.svg');
width: 20px;
margin-right: 10px;
@@ -73,7 +74,8 @@
background-size: 16px;
}
.vs .optionsDialog-options .optionsDialog-description .modal-title {
.vs .optionsDialog-options .optionsDialog-description .modal-title,
.hc-light .optionsDialog-options .optionsDialog-description .modal-title {
background-image: url('info_notification.svg')
}

View File

@@ -754,6 +754,8 @@ export abstract class Modal extends Disposable implements IThemable {
box-shadow: 0px 3.2px 7.2px rgba(${shadowRgb.rgba.r}, ${shadowRgb.rgba.g}, ${shadowRgb.rgba.b}, 0.132),
0px 0.6px 1.8px rgba(${shadowRgb.rgba.r}, ${shadowRgb.rgba.g}, ${shadowRgb.rgba.b}, 0.108);
}
.hc-light .modal.callout-dialog .modal-dialog,
.hc-black .modal.callout-dialog .modal-dialog {
border-color: rgba(${exteriorBorderRgb.rgba.r}, ${exteriorBorderRgb.rgba.g}, ${exteriorBorderRgb.rgba.b}, 1);
}
@@ -764,6 +766,8 @@ export abstract class Modal extends Disposable implements IThemable {
background-color: ${this._dialogBodyBackground};
border-color: transparent transparent rgba(${exteriorBorderRgb.rgba.r}, ${exteriorBorderRgb.rgba.g}, ${exteriorBorderRgb.rgba.b}, 0.5) rgba(${exteriorBorderRgb.rgba.r}, ${exteriorBorderRgb.rgba.g}, ${exteriorBorderRgb.rgba.b}, 0.5);
}
.hc-light .callout-arrow:before,
.hc-black .callout-arrow:before {
border-color: transparent transparent rgba(${exteriorBorderRgb.rgba.r}, ${exteriorBorderRgb.rgba.g}, ${exteriorBorderRgb.rgba.b}, 1) rgba(${exteriorBorderRgb.rgba.r}, ${exteriorBorderRgb.rgba.g}, ${exteriorBorderRgb.rgba.b}, 1);
}

View File

@@ -25,7 +25,7 @@ export function createIconCssClass(iconPath: IconPath, className?: string): stri
removeCSSRulesContainingSelector(iconClass);
const icon = getLightIconUri(iconPath);
const iconDark = getDarkIconUri(iconPath) || icon;
createCSSRule(`.icon.${iconClass}`, `background-image: ${asCSSUrl(icon)}`);
createCSSRule(`.icon.${iconClass}, .hc-light .icon.${iconClass}`, `background-image: ${asCSSUrl(icon)}`);
createCSSRule(`.vs-dark .icon.${iconClass}, .hc-black .icon.${iconClass}`, `background-image: ${asCSSUrl(iconDark)}`);
return iconClass;
}

View File

@@ -24,6 +24,10 @@ modelview-diff-editor-component {
font-size: 11px
}
.hc-light .modelview-diff-editor-title-background {
background-color: #6fc3df;
}
.vs-dark .modelview-diff-editor-title-background {
background-color: #434343;
}
@@ -34,4 +38,4 @@ modelview-diff-editor-component {
.modelview-diff-editor-title-background {
background-color: #d5d5d5;
}
}

View File

@@ -27,7 +27,8 @@
cursor: pointer;
}
.vs .modelview-group-header-collapsible.expanded {
.vs .modelview-group-header-collapsible.expanded,
.hc-light .modelview-group-header-collapsible.expanded {
background-image: url("expanded.svg");
}
@@ -36,7 +37,8 @@
background-image: url("expanded_inverse.svg");
}
.vs .modelview-group-header-collapsible.collapsed {
.vs .modelview-group-header-collapsible.collapsed,
.hc-light .modelview-group-header-collapsible.collapsed {
background-image: url("collapsed.svg");
}

View File

@@ -14,7 +14,8 @@
margin-left: 5px;
}
.vs .modelview-loadingComponent-spinner {
.vs .modelview-loadingComponent-spinner,
.hc-light .modelview-loadingComponent-spinner {
content: url("loading.svg");
}

View File

@@ -56,15 +56,18 @@ modelview-dom-component .showEditorSelection li.code-line:hover:before {
left: -30px;
}
modelview-dom-component .showEditorSelection .code-active-line:before {
modelview-dom-component .showEditorSelection .code-active-line:before,
.monaco-workbench.hc-light modelview-dom-component .showEditorSelection .code-active-line:before {
border-left: 3px solid rgba(0, 0, 0, 0.15);
}
modelview-dom-component .showEditorSelection .code-line:hover:before {
modelview-dom-component .showEditorSelection .code-line:hover:before,
.monaco-workbench.hc-light modelview-dom-component .showEditorSelection .code-line:hover:before {
border-left: 3px solid rgba(0, 0, 0, 0.40);
}
modelview-dom-component .showEditorSelection .code-line .code-line:hover:before {
modelview-dom-component .showEditorSelection .code-line .code-line:hover:before,
.monaco-workbench.hc-light modelview-dom-component .showEditorSelection .code-line .code-line:hover:before {
border-left: none;
}
@@ -91,6 +94,14 @@ modelview-dom-component .showEditorSelection .code-line .code-line:hover:before
border-left: 3px solid rgba(255, 160, 0, 1);
}
.hc-light modelview-dom-component .showEditorSelection .code-active-line:before {
border-left: 3px solid #6fc3df;
}
.hc-light modelview-dom-component .showEditorSelection .code-line:hover:before {
border-left: 3px solid #6fc3df;
}
modelview-dom-component .showEditorSelection .code-line .code-line:hover:before {
border-left: none;
}
@@ -205,6 +216,14 @@ modelview-dom-component pre {
background-color: rgba(220, 220, 220, 0.4);
}
.monaco-workbench.hc-light modelview-dom-component pre {
background-color: rgba(255, 255, 255);
}
.monaco-workbench.hc-light modelview-dom-component h1 {
border-color: rgba(255, 255, 255);
}
.monaco-workbench.vs-dark modelview-dom-component pre {
background-color: rgba(10, 10, 10, 0.4);
}

View File

@@ -17,7 +17,7 @@ modelview-text div#textContainer {
margin-left: 5px;
}
.vs .modelview-text-tooltip {
.vs .modelview-text-tooltip, .hc-light .modelview-text-tooltip {
background-image: url('info.svg')
}
@@ -36,7 +36,7 @@ modelview-text div#textContainer {
margin-left: 14px;
}
.vs .modelview-text-tooltip .modelview-text-tooltip-content {
.vs .modelview-text-tooltip .modelview-text-tooltip-content, .hc-light .modelview-text-tooltip .modelview-text-tooltip-content {
background-color: #f5f5f5;
}

View File

@@ -68,7 +68,7 @@ ExtensionsRegistry.registerExtensionPoint<IAccountContrib | IAccountContrib[]>({
} else {
const light = resources.joinPath(extension.description.extensionLocation, icon.light);
const dark = resources.joinPath(extension.description.extensionLocation, icon.dark);
createCSSRule(`.codicon.${iconClass}`, `background-image: ${asCSSUrl(light)}`);
createCSSRule(`.codicon.${iconClass}, .hc-light .codicon.${iconClass}`, `background-image: ${asCSSUrl(light)}`);
createCSSRule(`.vs-dark .codicon.${iconClass}, .hc-black .codicon.${iconClass}`, `background-image: ${asCSSUrl(dark)}`);
}
}

View File

@@ -98,7 +98,8 @@ asmtview-component .asmtview-grid .slick-cell.error-row {
margin-left: 5px;
}
.vs asmtview-component .action-label.codicon.exportAsScriptIcon {
.vs asmtview-component .action-label.codicon.exportAsScriptIcon,
.hc-light asmtview-component .action-label.codicon.exportAsScriptIcon {
background-image: url("newquery.svg");
}
@@ -107,7 +108,8 @@ asmtview-component .asmtview-grid .slick-cell.error-row {
background-image: url("newquery_inverse.svg");
}
.vs asmtview-component .action-label.codicon.asmt-learnmore {
.vs asmtview-component .action-label.codicon.asmt-learnmore,
.hc-light asmtview-component .action-label.codicon.asmt-learnmore {
background-image: url("configuredashboard.svg");
}

View File

@@ -53,7 +53,8 @@ dashboard-page .editor-toolbar {
background-size: 8px;
}
.dashboardEditor breadcrumb {
.dashboardEditor breadcrumb,
.hc-light .dashboardEditor breadcrumb {
font-size: 13px;
color: #323130;
}

View File

@@ -21,7 +21,7 @@ export function createCSSRuleForIcon(icon: IUserFriendlyIcon, extension: IExtens
} else {
const light = resources.joinPath(extension.description.extensionLocation, icon.light);
const dark = resources.joinPath(extension.description.extensionLocation, icon.dark);
createCSSRule(`.codicon.${iconClass}`, `background-image: ${asCSSUrl(light)}`);
createCSSRule(`.codicon.${iconClass}, .hc-light .codicon.${iconClass}`, `background-image: ${asCSSUrl(light)}`);
createCSSRule(`.vs-dark .codicon.${iconClass}, .hc-black .codicon.${iconClass}`, `background-image: ${asCSSUrl(dark)}`);
}
}

View File

@@ -25,6 +25,7 @@
}
/* High Contrast Theming */
.monaco-workbench.hc-light .server-explorer-viewlet .server-group,
.monaco-workbench.hc-black .server-explorer-viewlet .server-group {
line-height: 20px;
}
@@ -134,7 +135,9 @@
}
.monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .connection-tile > .icon.server-page,
.monaco-list .monaco-list-rows > .monaco-list-row .connection-tile > .icon.server-page {
.hc-light .monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .connection-tile > .icon.server-page,
.monaco-list .monaco-list-rows > .monaco-list-row .connection-tile > .icon.server-page,
.hc-light .monaco-list .monaco-list-rows > .monaco-list-row .connection-tile > .icon.server-page {
background: url('default_server.svg') center center no-repeat;
}

View File

@@ -152,6 +152,22 @@ slick-grid.active .editDataGrid .slick-cell.selected {
--color-grid-dirty-text: #000;
}
.hc-light .slickgridContainer {
--color-content: #101010;
--color-content-disabled: grey;
--color-error: #E81123;
--color-success: #7CD300;
--color-bg-header: hsla(0,0%,50%,.2); /* used for pane toolbars */
--color-resize-handle: #000000;
--color-bg-content-header: #ffffff; /* used for color of grid headers */
--color-cell-border-active: #6fc3df;
--color-cell-bg-grid-selected: rgb(173, 214, 255);
--color-grid-link: #0078D7;
--color-grid-link-hover: #0b93ff;
--color-grid-dirty-background: #FFF;
--color-grid-dirty-text: #000;
}
.vs-dark .slickgridContainer {
--color-content: #E5E5E5;
--color-content-disabled: grey;
@@ -183,3 +199,6 @@ slick-grid.active .editDataGrid .slick-cell.selected {
--color-grid-dirty-background: #CCC;
--color-grid-dirty-text: #101010;
}

View File

@@ -316,7 +316,8 @@ However we always want it to be the width of the container it is resizing.
z-index: 3;
}
.eps-container .ep-save-plan-icon {
.eps-container .ep-save-plan-icon,
.hc-light .eps-container .ep-save-plan-icon {
background-image: url(../images/actionIcons/save.svg);
background-size: 16px 16px;
background-position: center;
@@ -331,7 +332,8 @@ However we always want it to be the width of the container it is resizing.
background-repeat: no-repeat;
}
.eps-container .ep-open-properties-icon {
.eps-container .ep-open-properties-icon,
.hc-light .eps-container .ep-open-properties-icon {
background-image: url(../images/actionIcons/openProperties.svg);
background-size: 16px 16px;
background-position: center;
@@ -346,7 +348,8 @@ However we always want it to be the width of the container it is resizing.
background-repeat: no-repeat;
}
.eps-container .ep-open-query-icon {
.eps-container .ep-open-query-icon,
.hc-light .eps-container .ep-open-query-icon {
background-image: url(../images/actionIcons/openQuery.svg);
background-size: 16px 16px;
background-position: center;
@@ -361,7 +364,8 @@ However we always want it to be the width of the container it is resizing.
background-repeat: no-repeat;
}
.eps-container .ep-open-plan-file-icon {
.eps-container .ep-open-plan-file-icon,
.hc-light .eps-container .ep-open-plan-file-icon {
background-image: url(../images/actionIcons/openPlanFile.svg);
background-size: 16px 16px;
background-position: center;
@@ -378,7 +382,9 @@ However we always want it to be the width of the container it is resizing.
.eps-container .ep-search-icon,
.top-operations-tab .ep-search-icon {
.top-operations-tab .ep-search-icon,
.hc-light .eps-container .ep-search-icon,
.hc-light .top-operations-tab .ep-search-icon {
background-image: url(../images/actionIcons/search.svg);
background-size: 16px 16px;
background-position: center;
@@ -396,7 +402,9 @@ However we always want it to be the width of the container it is resizing.
}
.eps-container .ep-filter-icon,
.top-operations-tab .ep-filter-icon {
.top-operations-tab .ep-filter-icon,
.hc-light .eps-container .ep-filter-icon,
.hc-light .top-operations-tab .ep-filter-icon {
background-image: url(../images/actionIcons/filter.svg);
background-size: 16px 16px;
background-position: center;
@@ -413,7 +421,8 @@ However we always want it to be the width of the container it is resizing.
background-repeat: no-repeat;
}
.eps-container .ep-sort-alphabetically-icon {
.eps-container .ep-sort-alphabetically-icon,
.hc-light .eps-container .ep-sort-alphabetically-icon {
background-image: url(../images/actionIcons/sortAlphabetically.svg);
background-size: 16px 16px;
background-position: center;
@@ -428,7 +437,8 @@ However we always want it to be the width of the container it is resizing.
background-repeat: no-repeat;
}
.eps-container .ep-sort-reverse-alphabetically-icon {
.eps-container .ep-sort-reverse-alphabetically-icon,
.hc-light .eps-container .ep-sort-reverse-alphabetically-icon {
background-image: url(../images/actionIcons/sortReverseAlphabetically.svg);
background-size: 16px 16px;
background-position: center;
@@ -443,7 +453,8 @@ However we always want it to be the width of the container it is resizing.
background-repeat: no-repeat;
}
.eps-container .ep-sort-display-order-icon {
.eps-container .ep-sort-display-order-icon,
.hc-light .eps-container .ep-sort-display-order-icon {
background-image: url(../images/actionIcons/sortByDisplayOrder.svg);
background-size: 16px 16px;
background-position: center;
@@ -458,7 +469,8 @@ However we always want it to be the width of the container it is resizing.
background-repeat: no-repeat;
}
.eps-container .ep-zoom-in-icon {
.eps-container .ep-zoom-in-icon,
.hc-light .eps-container .ep-zoom-in-icon {
background-image: url(../images/actionIcons/zoomIn.svg);
background-size: 16px 16px;
background-position: center;
@@ -473,7 +485,8 @@ However we always want it to be the width of the container it is resizing.
background-repeat: no-repeat;
}
.eps-container .ep-zoom-out-icon {
.eps-container .ep-zoom-out-icon,
.hc-light .eps-container .ep-zoom-out-icon {
background-image: url(../images/actionIcons/zoomOut.svg);
background-size: 16px 16px;
background-position: center;
@@ -488,7 +501,8 @@ However we always want it to be the width of the container it is resizing.
background-repeat: no-repeat;
}
.eps-container .ep-custom-zoom-icon {
.eps-container .ep-custom-zoom-icon,
.hc-light .eps-container .ep-custom-zoom-icon {
background-image: url(../images/actionIcons/customZoom.svg);
background-size: 16px 16px;
background-position: center;
@@ -503,7 +517,8 @@ However we always want it to be the width of the container it is resizing.
background-repeat: no-repeat;
}
.eps-container .ep-zoom-to-fit-icon {
.eps-container .ep-zoom-to-fit-icon,
.hc-light .eps-container .ep-zoom-to-fit-icon {
background-image: url(../images/actionIcons/zoomToFit.svg);
background-size: 16px 16px;
background-position: center;
@@ -518,21 +533,24 @@ However we always want it to be the width of the container it is resizing.
background-repeat: no-repeat;
}
.eps-container .ep-zoom-icon {
.eps-container .ep-zoom-icon,
.hc-light .eps-container .ep-zoom-icon {
background-image: url(../images/actionIcons/zoom.svg);
background-size: 16px 16px;
background-position: center;
background-repeat: no-repeat;
}
.eps-container .ep-zoom-icon {
.eps-container .ep-zoom-icon,
.hc-light .eps-container .ep-zoom-icon {
background-image: url(../images/actionIcons/zoomDark.svg);
background-size: 16px 16px;
background-position: center;
background-repeat: no-repeat;
}
.eps-container .ep-highlight-expensive-operation-icon {
.eps-container .ep-highlight-expensive-operation-icon,
.hc-light .eps-container .ep-highlight-expensive-operation-icon {
background-image: url(../images/actionIcons/highlightExpensiveOperation.svg);
background-size: 16px 16px;
background-position: center;
@@ -547,7 +565,8 @@ However we always want it to be the width of the container it is resizing.
background-repeat: no-repeat;
}
.eps-container .ep-enable-tooltip-icon {
.eps-container .ep-enable-tooltip-icon,
.hc-light .eps-container .ep-enable-tooltip-icon {
background-image: url(../images/actionIcons/enableTooltip.svg);
background-size: 16px 16px;
background-position: center;
@@ -562,7 +581,8 @@ However we always want it to be the width of the container it is resizing.
background-repeat: no-repeat;
}
.eps-container .ep-disable-tooltip-icon {
.eps-container .ep-disable-tooltip-icon,
.hc-light .eps-container .ep-disable-tooltip-icon {
background-image: url(../images/actionIcons/disableTooltip.svg);
background-size: 16px 16px;
background-position: center;
@@ -577,7 +597,8 @@ However we always want it to be the width of the container it is resizing.
background-repeat: no-repeat;
}
.eps-container .ep-add-icon {
.eps-container .ep-add-icon,
.hc-light .eps-container .ep-add-icon {
background-image: url(../images/actionIcons/add.svg);
background-size: 16px 16px;
background-position: center;
@@ -592,14 +613,16 @@ However we always want it to be the width of the container it is resizing.
background-repeat: no-repeat;
}
.eps-container .ep-settings-icon {
.eps-container .ep-settings-icon,
.hc-light .eps-container .ep-settings-icon {
background-image: url(../images/actionIcons/settings.svg);
background-size: 16px 16px;
background-position: center;
background-repeat: no-repeat;
}
.ep-split-screen-horizontally-icon {
.ep-split-screen-horizontally-icon,
.hc-light .ep-split-screen-horizontally-icon {
background-image: url(../images/actionIcons/splitScreenHorizontally.svg);
background-size: 16px 16px;
background-position: center;
@@ -614,7 +637,8 @@ However we always want it to be the width of the container it is resizing.
background-repeat: no-repeat;
}
.eps-container .ep-split-screen-vertically-icon {
.eps-container .ep-split-screen-vertically-icon,
.hc-light .eps-container .ep-split-screen-vertically-icon {
background-image: url(../images/actionIcons/splitScreenVertically.svg);
background-size: 16px 16px;
background-position: center;
@@ -629,7 +653,8 @@ However we always want it to be the width of the container it is resizing.
background-repeat: no-repeat;
}
.eps-container .ep-reset-zoom-icon {
.eps-container .ep-reset-zoom-icon,
.hc-light .eps-container .ep-reset-zoom-icon {
background-image: url(../images/actionIcons/resetZoom.svg);
background-size: 16px 16px;
background-position: center;
@@ -645,7 +670,8 @@ However we always want it to be the width of the container it is resizing.
}
.eps-container .ep-plan-compare-icon {
.eps-container .ep-plan-compare-icon,
.hc-light .eps-container .ep-plan-compare-icon {
background-image: url(../images/actionIcons/execution-plan-compare.svg);
background-size: 16px 16px;
background-position: center;
@@ -660,7 +686,8 @@ However we always want it to be the width of the container it is resizing.
background-repeat: no-repeat;
}
.eps-container .ep-properties-different {
.eps-container .ep-properties-different,
.hc-light .eps-container .ep-properties-different {
background-image: url(../images/actionIcons/different.svg);
background-size: 16px 16px;
background-position: center;
@@ -689,7 +716,8 @@ However we always want it to be the width of the container it is resizing.
margin-left: -28px;
}
.eps-container .ep-properties-down-arrow {
.eps-container .ep-properties-down-arrow,
.hc-light .eps-container .ep-properties-down-arrow {
background-image: url(../images/actionIcons/downArrow.svg);
background-size: 16px 16px;
background-position: center;
@@ -708,7 +736,8 @@ However we always want it to be the width of the container it is resizing.
height: 16px;
}
.eps-container .ep-properties-up-arrow {
.eps-container .ep-properties-up-arrow,
.hc-light .eps-container .ep-properties-up-arrow {
background-image: url(../images/actionIcons/upArrow.svg);
background-size: 16px 16px;
background-position: center;
@@ -727,7 +756,8 @@ However we always want it to be the width of the container it is resizing.
height: 16px;
}
.eps-container .ep-top-operations {
.eps-container .ep-top-operations,
.hc-light .eps-container .ep-top-operations {
background-image: url(../images/actionIcons/topOperations.svg);
background-size: 16px 16px;
background-position: center;
@@ -851,7 +881,6 @@ However we always want it to be the width of the container it is resizing.
height: fit-content;
}
.eps-container .comparison-editor .plan-comparison-container .split-view-container .plan-container .plan-diagram {
flex: 1;
overflow: scroll;

View File

@@ -46,6 +46,10 @@ notebookhistory-component .all-jobs {
color: #ffffff;
}
.hc-light .overview-container .overview-tab {
color: #000000;
}
.overview-container > .overview-tab {
position: relative;
margin-bottom: 1px;
@@ -75,6 +79,11 @@ input#accordion{
border: 1px solid #2b56f2;
}
.hc-light .overview-container .overview-tab label {
background: #ffffff;
border: 1px solid #6fc3df;
}
.overview-container .overview-tab label {
position: relative;
display: block;
@@ -96,6 +105,12 @@ input#accordion{
border: 1px solid #2b56f2;
}
.hc-light .overview-tab .accordion-content,
.grid-arrow {
background: #ffffff;
border: 1px solid #6fc3df;
}
.overview-tab .accordion-content {
max-height: 0;
overflow: hidden;
@@ -136,7 +151,8 @@ input#accordion:checked ~ .accordion-content,
transition: all 0.3s;
}
.all-jobs > .back-button-icon {
.all-jobs > .back-button-icon,
.hc-light .all-jobs > .back-button-icon {
content: url("back.svg");
width: 20px;
margin-right: 10px;
@@ -151,7 +167,8 @@ input#accordion:checked ~ .accordion-content,
content: url("back_inverse.svg");
}
.vs .action-label.codicon.newStepIcon {
.vs .action-label.codicon.newStepIcon,
.hc-light .action-label.codicon.newStepIcon {
background-image: url("new.svg");
}
@@ -168,7 +185,9 @@ notebookhistory-component .vs-dark .codicon.edit {
}
jobhistory-component .vs .codicon.edit,
notebookhistory-component .vs .codicon.edit {
jobhistory-component .hc-light .codicon.edit,
notebookhistory-component .vs .codicon.edit,
notebookhistory-component .hc-light .codicon.edit {
background-image: url("edit.svg");
}
@@ -231,6 +250,10 @@ table.step-list tr.step-row td {
border-left: 3px solid #2b56f2;
}
.hc-light .history-details > .job-steps {
border-left: 3px solid #6fc3df;
}
.history-details > .job-steps > table.step-list {
padding-bottom: 10px;
display: flex;
@@ -331,6 +354,11 @@ notebookhistory-component > .agent-actionbar-container {
border-top: 3px solid #2b56f2;
}
.hc-light jobhistory-component > .agent-actionbar-container,
.hc-light notebookhistory-component > .agent-actionbar-container {
border-top: 3px solid #6fc3df;
}
jobhistory-component
.step-table.prev-run-list
.monaco-tree-wrapper
@@ -374,7 +402,8 @@ notebookhistory-component
height: 50px;
}
.notebook-grid-item:hover {
.notebook-grid-item:hover,
.hc-light .notebook-grid-item:hover {
background: #dcdcdc !important;
}
@@ -396,6 +425,11 @@ notebookhistory-component
background-repeat: no-repeat;
}
.hc-light .notebook-grid-item > .img-success {
background-image: url(./NotebookSuccess_16x.svg);
background-position: center;
}
.vs-dark .notebook-grid-item > .img-success,
.hc-black .notebook-grid-item > .img-success {
background-image: url(./NotebookSuccess_16x_white.svg);
@@ -415,6 +449,11 @@ notebookhistory-component
background-repeat: no-repeat;
}
.hc-light .notebook-grid-item > .img-failure {
background-image: url(./NotebookFail_16x.svg);
background-position: center;
}
.vs-dark .notebook-grid-item > .img-failure,
.hc-black .notebook-grid-item > .img-failure {
background-image: url(./NotebookFail_16x_white.svg);
@@ -435,6 +474,11 @@ notebookhistory-component
cursor: pointer;
}
.hc-light .notebook-grid-item > .img-error {
background-image: url(./NotebookError_16x.svg);
background-position: center;
}
.vs-dark .notebook-grid-item > .img-error,
.hc-black .notebook-grid-item > .img-error {
background-image: url(./NotebookError_16x_white.svg);
@@ -475,3 +519,8 @@ notebookhistory-component
background: #000000;
border: 1px solid #2b56f2;
}
.hc-light .grid-title {
background: #ffffff;
border: 1px solid #6fc3df;
}

View File

@@ -70,7 +70,8 @@
content: url("step_inverse.svg");
}
.steps-header > .steps-icon {
.steps-header > .steps-icon,
.hc-light .steps-header > .steps-icon {
content: url("step.svg");
}
@@ -100,6 +101,13 @@ jobstepsview-component .steps-tree .monaco-tree-wrapper .monaco-tree-row {
background: none !important;
}
.hc-light jobstepsview-component .steps-tree .monaco-tree-wrapper .monaco-tree-row.step-column-row,
.hc-light jobstepsview-component .steps-tree .monaco-tree-wrapper .monaco-tree-row.step-column-row.focused,
.hc-light jobstepsview-component .steps-tree .monaco-tree-wrapper .monaco-tree-row.step-column-row.selected,
.hc-light jobstepsview-component .steps-tree .monaco-tree-wrapper .monaco-tree-row.step-column-row.focused.selected {
background: #ffffff !important;
}
jobstepsview-component .steps-tree .monaco-tree-wrapper .monaco-tree-row.step-column-row,
jobstepsview-component .steps-tree .monaco-tree-wrapper .monaco-tree-row.step-column-row.focused,
jobstepsview-component .steps-tree .monaco-tree-wrapper .monaco-tree-row.step-column-row.selected,

View File

@@ -30,6 +30,10 @@ notebooksview-component {
border-bottom: 3px solid #2b56f2;
}
.hc-light .job-heading-container {
border-bottom: 3px solid #6fc3df;
}
.jobview-grid {
height: calc(100% - 75px);
width: 100%;
@@ -69,6 +73,23 @@ notebooksview-component {
border: 1px solid #2b56f2;
}
.hc-light
#jobsDiv
jobsview-component
.jobview-grid
.grid-canvas
.ui-widget-content.slick-row
.slick-cell,
.hc-light
#notebooksDiv
notebooksview-component
.jobnotebooksview-grid
.grid-canvas
.ui-widget-content.slick-row
.slick-cell {
border: 1px solid #6fc3df;
}
#jobsDiv
jobsview-component
.jobview-grid
@@ -268,7 +289,8 @@ notebooksview-component {
margin-left: 20px;
}
.jobsview-icon {
.jobsview-icon,
.hc-light .jobsview-icon {
background-image: url("./job.svg");
}
@@ -277,7 +299,8 @@ notebooksview-component {
background-image: url("./job_inverse.svg");
}
.notebooksview-icon {
.notebooksview-icon,
.hc-light .notebooksview-icon {
background-image: url("./notebook.svg");
}
@@ -286,7 +309,8 @@ notebooksview-component {
background-image: url("./notebook_inverse.svg");
}
.alertsview-icon {
.alertsview-icon,
.hc-light .alertsview-icon {
background-image: url("./alert.svg");
}
@@ -295,7 +319,8 @@ notebooksview-component {
background-image: url("./alert_inverse.svg");
}
.proxiesview-icon {
.proxiesview-icon,
.hc-light .proxiesview-icon {
background-image: url("./proxy.svg");
}
@@ -304,7 +329,8 @@ notebooksview-component {
background-image: url("./proxy_inverse.svg");
}
.operatorsview-icon {
.operatorsview-icon,
.hc-light .operatorsview-icon {
background-image: url("./operator.svg");
}
@@ -342,6 +368,14 @@ agentview-component
border-left: 1px dotted #2b56f2;
}
.hc-light
.jobview-grid
> .monaco-table
.slick-header-columns
.slick-resizable-handle {
border-left: 1px dotted #6fc3df;
}
.jobview-grid > .monaco-table .slick-header-columns .slick-resizable-handle {
border-left: 1px dotted #444444;
}
@@ -519,6 +553,57 @@ agentview-component
background: none !important;
}
.hc-light
#jobsDiv
.jobview-grid
> .monaco-table
.slick-viewport
> .grid-canvas
> .ui-widget-content.slick-row:hover
> .slick-cell,
.hc-light
#jobsDiv
.jobview-grid
> .monaco-table
.slick-viewport
> .grid-canvas
> .ui-widget-content.slick-row
> .slick-cell.hovered,
.hc-light
#jobsDiv
.jobview-grid
> .monaco-table
.slick-viewport
> .grid-canvas
> .ui-widget-content.slick-row.hovered
> .slick-cell,
.hc-light
#notebooksDiv
.jobnotebooksview-grid
> .monaco-table
.slick-viewport
> .grid-canvas
> .ui-widget-content.slick-row:hover
> .slick-cell,
.hc-light
#notebooksDiv
.jobnotebooksview-grid
> .monaco-table
.slick-viewport
> .grid-canvas
> .ui-widget-content.slick-row
> .slick-cell.hovered,
.hc-light
#notebooksDiv
.jobnotebooksview-grid
> .monaco-table
.slick-viewport
> .grid-canvas
> .ui-widget-content.slick-row.hovered
> .slick-cell {
background: #fff !important;
}
table.jobprevruns div.bar,
table.jobprevruns div.bar0,
table.jobprevruns div.bar1,
@@ -574,7 +659,8 @@ table.jobprevruns > tbody {
display: block;
}
.vs .action-label.codicon.refreshIcon {
.vs .action-label.codicon.refreshIcon,
.hc-light .action-label.codicon.refreshIcon {
background-image: url("refresh.svg");
}
@@ -583,7 +669,8 @@ table.jobprevruns > tbody {
background-image: url("refresh_inverse.svg");
}
.vs .action-label.codicon.openNotebook {
.vs .action-label.codicon.openNotebook,
.hc-light .action-label.codicon.openNotebook {
background-image: url("open_notebook.svg");
}

View File

@@ -49,6 +49,7 @@ cell-toolbar-component .carbon-taskbar.monaco-toolbar .monaco-action-bar ul.acti
cell-toolbar-component .codicon.masked-icon,
.vs cell-toolbar-component .codicon.masked-icon,
.vs-dark cell-toolbar-component .codicon.masked-icon,
.hc-black cell-toolbar-component .codicon.masked-icon {
.hc-black cell-toolbar-component .codicon.masked-icon,
.hc-light cell-toolbar-component .codicon.masked-icon {
background-image: none;
}

View File

@@ -44,7 +44,8 @@ code-component .toolbar .carbon-taskbar.monaco-toolbar .monaco-action-bar .codic
background-position: center;
}
.notebook-cell:not(.active):hover code-component .toolbarIconRun {
.notebook-cell:not(.active):hover code-component .toolbarIconRun,
.hc-light .notebook-cell:not(.active):hover code-component .toolbarIconRun {
background-image: url('./media/execute_cell_grey.svg');
}
.vs-dark .notebook-cell:not(.active):hover code-component .toolbarIconRun {

View File

@@ -89,6 +89,18 @@
border-left: none;
}
.hc-light .notebook-preview .showEditorSelection .code-active-line:before {
border-left: 3px solid rgba(111, 195, 223, 0.4);
}
.hc-light .notebook-preview .showEditorSelection .code-line:hover:before {
border-left: 3px solid rgba(111, 195, 223, 0.60);
}
.hc-light .notebook-preview .showEditorSelection .code-line .code-line:hover:before {
border-left: none;
}
.notebook-preview img {
max-width: 100%;
max-height: 100%;
@@ -209,6 +221,14 @@
border-color: rgb(0, 0, 0);
}
.hc-light .notebook-preview pre {
background-color: rgb(255, 255, 255);
}
.hc-light .notebook-preview h1 {
border-color: rgb(255, 255, 255);
}
.notebook-preview table > thead > tr > th {
border-color: rgba(0, 0, 0, 0.69);
}

View File

@@ -107,7 +107,8 @@
}
/* non-preview */
.notebookEditor :not(.in-preview) .codicon.icon-add {
.notebookEditor :not(.in-preview) .codicon.icon-add,
.hc-light .notebookEditor :not(.in-preview) .codicon.icon-add {
background-image: url("./media/light/add.svg");
}
@@ -116,7 +117,8 @@
background-image: url("./media/dark/add_inverse.svg");
}
.notebookEditor :not(.in-preview) .codicon.icon-run-cells {
.notebookEditor :not(.in-preview) .codicon.icon-run-cells,
.hc-light .notebookEditor :not(.in-preview) .codicon.icon-run-cells {
background-image: url("./media/light/run_cells.svg");
}
@@ -125,7 +127,8 @@
background-image: url("./media/dark/run_cells_inverse.svg");
}
.notebookEditor :not(.in-preview) .codicon.icon-trusted {
.notebookEditor :not(.in-preview) .codicon.icon-trusted,
.hc-light .notebookEditor :not(.in-preview) .codicon.icon-trusted {
background-image: url("./media/light/trusted.svg");
}
@@ -133,7 +136,9 @@
.hc-black .notebookEditor :not(.in-preview) .codicon.icon-trusted {
background-image: url("./media/dark/trusted_inverse.svg");
}
.notebookEditor :not(.in-preview) .codicon.icon-notTrusted {
.notebookEditor :not(.in-preview) .codicon.icon-notTrusted,
.hc-light .notebookEditor :not(.in-preview) .codicon.icon-notTrusted {
background-image: url("./media/light/nottrusted.svg");
}
@@ -142,7 +147,8 @@
background-image: url("./media/dark/nottrusted_inverse.svg");
}
.notebookEditor :not(.in-preview) .codicon.icon-show-cells {
.notebookEditor :not(.in-preview) .codicon.icon-show-cells,
.hc-light .notebookEditor :not(.in-preview) .codicon.icon-show-cells {
background-image: url("./media/light/show_code.svg");
}
@@ -151,7 +157,8 @@
background-image: url("./media/dark/show_code_inverse.svg");
}
.notebookEditor :not(.in-preview) .codicon.icon-hide-cells {
.notebookEditor :not(.in-preview) .codicon.icon-hide-cells,
.hc-light .notebookEditor :not(.in-preview) .codicon.icon-hide-cells {
background-image: url("./media/light/hide_code.svg");
}
@@ -160,7 +167,8 @@
background-image: url("./media/dark/hide_code_inverse.svg");
}
.notebookEditor :not(.in-preview) .codicon.icon-clear-results {
.notebookEditor :not(.in-preview) .codicon.icon-clear-results,
.hc-light .notebookEditor :not(.in-preview) .codicon.icon-clear-results {
background-image: url("./media/light/clear_results.svg");
}
@@ -170,6 +178,7 @@
}
.notebookEditor .in-preview .codicon.masked-icon,
.hc-light .nodebookEditor .in-preview .codicon.masked-icon,
.vs-dark .notebookEditor .in-preview .codicon.icon-clear-results,
.hc-black .notebookEditor .in-preview .codicon.icon-clear-results {
background-image: none;
@@ -215,7 +224,8 @@
min-height: 39px;
}
.monaco-workbench .notebook-action.new-notebook {
.monaco-workbench .notebook-action.new-notebook,
.monaco-workbench.hc-light .notebook-action.new-notebook {
background: url("./media/light/new_notebook.svg") center center no-repeat;
}

View File

@@ -72,11 +72,13 @@ export function registerNotebookThemes(overrideEditorThemeSetting: boolean, conf
const hcOutline = theme.getColor(contrastBorder);
if (outline) {
collector.addRule(`
.hc-black .notebookEditor .notebook-cell:not(.active) code-component {
.hc-black .notebookEditor .notebook-cell:not(.active) code-component,
.hc-light .notebookEditor .notebook-cell:not(.active) code-component {
border-color: ${hcOutline};
border-width: 0px 0px 1px 0px;
}
.hc-black .notebookEditor .notebook-cell:not(.active) {
.hc-black .notebookEditor .notebook-cell:not(.active),
.hc-light .notebookEditor .notebook-cell:not(.active) {
outline-color: ${hcOutline};
outline-width: 1px;
outline-style: solid;

View File

@@ -48,7 +48,8 @@
.nb-grid-stack .grid-stack-item .notebook-cell .actionbar .codicon.masked-icon,
.vs .nb-grid-stack .grid-stack-item .notebook-cell .actionbar .codicon.masked-icon,
.vs-dark .nb-grid-stack .grid-stack-item .notebook-cell .actionbar .codicon.masked-icon,
.hc-black .nb-grid-stack .grid-stack-item .notebook-cell .actionbar .codicon.masked-icon {
.hc-black .nb-grid-stack .grid-stack-item .notebook-cell .actionbar .codicon.masked-icon,
.hc-light .nb-grid-stack .grid-stack-item .notebook-cell .actionbar .codicon.masked-icon {
background-image: none;
}

View File

@@ -6,7 +6,7 @@
import { OnInit, Component, Input, Inject, ViewChild, ElementRef, ChangeDetectorRef, forwardRef } from '@angular/core';
import * as azdata from 'azdata';
import { IGridDataProvider, getResultsString, getTableHeaderString } from 'sql/workbench/services/query/common/gridDataProvider';
import { IGridDataProvider, getResultsString } from 'sql/workbench/services/query/common/gridDataProvider';
import { IContextMenuService, IContextViewService } from 'vs/platform/contextview/browser/contextView';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
@@ -410,16 +410,7 @@ export class DataResourceDataProvider implements IGridDataProvider {
let results = await getResultsString(this, selection, includeHeaders, tableView);
this._clipboardService.writeText(results);
} catch (error) {
this._notificationService.error(localize('copyFailed', "Copy failed with error: {0}", getErrorMessage(error)));
}
}
async copyHeaders(selection: Slick.Range[]): Promise<void> {
try {
const results = getTableHeaderString(this, selection);
await this._clipboardService.writeText(results);
} catch (error) {
this._notificationService.error(localize('copyFailed', "Copy failed with error: {0}", getErrorMessage(error)));
this._notificationService.error(localize('copyFailed', "Copy failed with error {0}", getErrorMessage(error)));
}
}

View File

@@ -4,7 +4,8 @@
*--------------------------------------------------------------------------------------------*/
/* Icons for various registered servers actions */
.monaco-workbench .actions-container .action-label.add-server-action {
.monaco-workbench .actions-container .action-label.add-server-action,
.monaco-workbench.hc-light .actions-container .action-label.add-server-action {
background-image: url('add_server.svg') !important;
}
@@ -13,7 +14,8 @@
background-image: url('add_server_inverse.svg') !important;
}
.monaco-workbench .dataExplorer-viewlet .actions-container .action-label.add-server-group-action {
.monaco-workbench .dataExplorer-viewlet .actions-container .action-label.add-server-group-action,
.monaco-workbench.hc-light .dataExplorer-viewlet .actions-container .action-label.add-server-group-action {
background-image: url('new_servergroup.svg') !important;
}
@@ -22,7 +24,8 @@
background-image: url('new_servergroup_inverse.svg') !important;
}
.monaco-workbench .actions-container .action-label.active-connections-action {
.monaco-workbench .actions-container .action-label.active-connections-action,
.monaco-workbench.hc-light .actions-container .action-label.active-connections-action {
background-image: url('connected_active_server.svg') !important;
}
@@ -31,7 +34,8 @@
background-image: url('connected_active_server_inverse.svg') !important;
}
.monaco-workbench .actions-container .action-label.server-page {
.monaco-workbench .actions-container .action-label.server-page,
.monaco-workbench.hc-light .actions-container .action-label.server-page {
background-image: url('server_page.svg') !important;
}

View File

@@ -23,6 +23,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur
import { IStorageService } from 'vs/platform/storage/common/storage';
import { getChartMaxRowCount, notifyMaxRowCountExceeded } from 'sql/workbench/contrib/charts/browser/utils';
import { IEncodingSupport } from 'vs/workbench/services/textfile/common/textfiles';
import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService';
export interface IGridActionContext {
gridDataProvider: IGridDataProvider;
@@ -126,13 +127,19 @@ export class CopyHeadersAction extends Action {
private static ID = 'grid.copyHeaders';
private static LABEL = localize('copyHeaders', 'Copy Headers');
constructor() {
constructor(
@IClipboardService private clipboardService: IClipboardService
) {
super(CopyHeadersAction.ID, CopyHeadersAction.LABEL);
}
public override async run(context: IGridActionContext): Promise<void> {
const selection = mapForNumberColumn(context.selection);
await context.gridDataProvider.copyHeaders(selection);
// Starting at index 1 to ignore the first column of row numbers
const columnHeaders = context.table.columns.slice(1, context.table.columns.length)
.map(c => c.name ? c.name : '')
.join(',');
await this.clipboardService.writeText(columnHeaders);
}
}

View File

@@ -45,7 +45,8 @@
background-position: center;
}
.vs .footer-button .validating {
.vs .footer-button .validating,
.hc-light .footer-button .validating {
background-image: url("loading.svg");
}

View File

@@ -17,6 +17,13 @@
background-color: unset;
}
.hc-light .wizardNavigation-container {
border-right-color: #6fc3df;
border-right-style: solid;
border-right-width: 1px;
background-color: unset;
}
.wizardNavigation-pageNumber {
flex-grow: 1;
display: flex;
@@ -51,6 +58,14 @@
border-color: white;
}
.hc-light .wizardNavigation-dot {
flex-grow: 1;
background-color: unset;
border-style: solid;
border-width: 1px;
border-color: black;
}
.wizardNavigation-connector {
width: 3px;
display: inline-block;
@@ -62,6 +77,10 @@
display: none;
}
.hc-light .wizardNavigation-connector {
display: none;
}
.wizardNavigation-connector.active,
.wizardNavigation-dot.active {
background-color: rgb(9, 109, 201);
@@ -73,16 +92,33 @@
border-style: solid;
}
.hc-light .wizardNavigation-dot.active {
border-color: #6fc3df;
background-color: unset;
border-style: solid;
}
.hc-black .wizardNavigation-dot.active:hover,
.hc-black .wizardNavigation-dot.active.currentPage:hover {
border-color: #F38518;
border-style: dashed;
}
.hc-light .wizardNavigation-dot.active:hover,
.hc-light .wizardNavigation-dot.active.currentPage:hover {
border-color: #0F4A85;
border-style: dashed;
}
.wizardNavigation-dot.active.currentPage {
border-style: double;
}
.hc-light .wizardNavigation-dot.active.currentPage {
border-style: solid;
border-color: #0F4A85;
}
.hc-black .wizardNavigation-dot.active.currentPage {
border-style: solid;
border-color: #F38518;
@@ -90,4 +126,4 @@
.wizardNavigation-connector.invisible {
visibility: hidden;
}
}

View File

@@ -50,7 +50,8 @@
display: inline-block;
}
.vs .monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.not-started {
.vs .monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.not-started,
.hc-light .monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.not-started {
background-image: url('status_queuedtask.svg');
}
@@ -59,7 +60,8 @@
background-image: url('status_queuedtask_inverse.svg');
}
.vs .monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.in-progress {
.vs .monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.in-progress,
.hc-light .monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.in-progress {
background-image: url("loading.svg");
}
@@ -68,14 +70,17 @@
background-image: url("loading_inverse.svg");
}
.monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.success {
.monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.success,
.hc-light .monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.success {
background-image: url("status_success.svg");
}
.monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.canceled {
.monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.canceled,
.hc-light .monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.canceled {
background-image: url("status_cancelled.svg");
}
.monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.error {
.monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.error,
.hc-light .monaco-tree .monaco-tree-rows > .monaco-tree-row > .content > .task-group > .task-icon.error {
background-image: url("error.svg");
}

View File

@@ -808,7 +808,8 @@ class TreeRenderer extends Disposable implements ITreeRenderer<ITreeItem, FuzzyS
}
return ({ start, end });
}) : undefined;
const icon = this.themeService.getColorTheme().type === ColorScheme.LIGHT ? node.icon : node.iconDark;
const isLightTheme = [ColorScheme.LIGHT, ColorScheme.HIGH_CONTRAST_LIGHT].includes(this.themeService.getColorTheme().type);
const icon = isLightTheme ? node.icon : node.iconDark;
const iconUrl = icon ? URI.revive(icon) : null;
const title = node.tooltip ? isString(node.tooltip) ? node.tooltip : undefined : resource ? undefined : label;
const sqlIcon = node.sqlIcon;
@@ -916,7 +917,8 @@ class Aligner extends Disposable {
}
private hasIcon(node: ITreeItem): boolean {
const icon = this.themeService.getColorTheme().type === ColorScheme.LIGHT ? node.icon : node.iconDark;
const isLightTheme = [ColorScheme.LIGHT, ColorScheme.HIGH_CONTRAST_LIGHT].includes(this.themeService.getColorTheme().type);
const icon = isLightTheme ? node.icon : node.iconDark;
if (icon) {
return true;
}

View File

@@ -32,7 +32,10 @@
.hc-black .monaco-workbench.blur-background #workbench\.parts\.editor,
.hc-black .monaco-workbench.blur-background #workbench\.parts\.panel,
.hc-black .monaco-workbench.blur-background #workbench\.parts\.sidebar {
.hc-black .monaco-workbench.blur-background #workbench\.parts\.sidebar,
.hc-light .monaco-workbench.blur-background #workbench\.parts\.editor,
.hc-light .monaco-workbench.blur-background #workbench\.parts\.panel,
.hc-light .monaco-workbench.blur-background #workbench\.parts\.sidebar {
opacity: .2;
}

View File

@@ -83,6 +83,7 @@
.vs-dark .connection-dialog .connection-history-actions .action-label.codicon,
.hc-black .connection-dialog .connection-history-actions .action-label.codicon,
.hc-light .connection-dialog .connection-history-actions .action-label.codicon,
.connection-dialog .connection-history-actions .action-label.codicon {
display: block;
height: 20px;
@@ -95,7 +96,8 @@
width: auto;
}
.search-action.clear-search-results {
.search-action.clear-search-results,
.hc-light .search-action.clear-search-results {
background: url('clear-search-results.svg');
}
@@ -112,6 +114,7 @@
}
.custom-connection-options .connection-label .dialog-label-container,
.hc-light .custom-connection-options .connection-label .dialog-label-container,
.vs-dark .custom-connection-options .connection-label .dialog-label-container,
.hc-black .custom-connection-options .connection-label .dialog-label-container {
background-size: 9px;
@@ -122,7 +125,8 @@
}
.dialog-label-container.info-icon,
.vs .dialog-label-container.info-icon {
.vs .dialog-label-container.info-icon,
.hc-light .dialog-label-container.info-icon {
background-image: url("info.svg");
}

View File

@@ -45,7 +45,8 @@
background-position: center;
}
.vs .footer-button .validating {
.vs .footer-button .validating,
.hc-light .footer-button .validating {
background-image: url("loading.svg");
}

View File

@@ -18,6 +18,13 @@
background-color: unset;
}
.hc-light .wizardNavigation-container {
border-right-color: rgb(111, 195, 223);
border-right-style: solid;
border-right-width: 1px;
background-color: unset;
}
.wizardNavigation-pageNumber {
flex-grow: 1;
display: flex;
@@ -52,6 +59,13 @@
border-color: white;
}
.hc-light .wizardNavigation-dot {
flex-grow: 1;
border-style: solid;
border-width: 1px;
color: black;
}
.wizardNavigation-connector {
width: 3px;
display: inline-block;
@@ -60,7 +74,16 @@
}
.hc-black .wizardNavigation-connector {
display: none;
width: 3px;
display: inline-block;
flex-grow: 1;
background-color: rgb(200, 200, 200);
}
.hc-light .wizardNavigation-connector {
width: 3px;
display: inline-block;
flex-grow: 1;
}
.wizardNavigation-connector.active,
@@ -74,12 +97,23 @@
border-style: solid;
}
.hc-light .wizardNavigation-dot.active {
background-color: unset;
border-style: solid;
}
.hc-black .wizardNavigation-dot.active:hover,
.hc-black .wizardNavigation-dot.active.currentPage:hover {
border-color: #F38518;
border-style: dashed;
}
.hc-light .wizardNavigation-dot.active:hover,
.hc-light .wizardNavigation-dot.active.currentPage:hover {
border-color: #0F4A85;
border-style: dashed;
}
.wizardNavigation-dot.active.currentPage {
border-style: double;
}
@@ -89,6 +123,11 @@
border-color: #F38518;
}
.hc-light .wizardNavigation-dot.active.currentPage {
border-style: solid;
border-color: #0F4A85;
}
.wizardNavigation-connector.invisible {
visibility: hidden;
}

View File

@@ -16,7 +16,7 @@ class IconRenderer {
const iconPath: ThemedIconUri = this.toThemedIconUri(path);
const iconUid: string | undefined = this.getIconUid(iconPath);
if (iconUid && !this.iconRegistered.has(iconUid)) {
createCSSRule(`.icon#${iconUid}`, `background: ${asCSSUrl(iconPath.light || iconPath.dark)} center center no-repeat`);
createCSSRule(`.icon#${iconUid}, .hc-light .icon#${iconUid}`, `background: ${asCSSUrl(iconPath.light || iconPath.dark)} center center no-repeat`);
createCSSRule(`.vs-dark .icon#${iconUid}, .hc-black .icon#${iconUid}`, `background: ${asCSSUrl(iconPath.dark)} center center no-repeat`);
this.iconRegistered.add(iconUid);
}

View File

@@ -4,6 +4,7 @@
*--------------------------------------------------------------------------------------------*/
.vs .icon.table,
.hc-light .icon.table,
.vs-dark .icon.table,
.hc-black .icon.table,
.vs .codicon.table,
@@ -13,675 +14,791 @@
}
.vs .icon.aggregatefunction,
.hc-light .icon.aggregatefunction,
.vs-dark .icon.aggregatefunction,
.hc-black .icon.aggregatefunction {
background: url("AggregateFunction.svg") center center no-repeat;
}
.vs .icon.aggregatefunctionparameter_input,
.hc-light .icon.aggregatefunctionparameter_input,
.vs-dark .icon.aggregatefunctionparameter_input,
.hc-black .icon.aggregatefunctionparameter_input {
background: url("AggregateFunctionParameter_Input.svg") center center no-repeat;
}
.vs .icon.aggregatefunctionparameter_output,
.hc-light .icon.aggregatefunctionparameter_output,
.vs-dark .icon.aggregatefunctionparameter_output,
.hc-black .icon.aggregatefunctionparameter_output {
background: url("AggregateFunctionParameter_Output.svg") center center no-repeat;
}
.vs .icon.aggregatefunctionparameter_return,
.hc-light .icon.aggregatefunctionparameter_return,
.vs-dark .icon.aggregatefunctionparameter_return,
.hc-black .icon.aggregatefunctionparameter_return {
background: url("AggregateFunctionParameter_Return.svg") center center no-repeat;
}
.vs .icon.applicationrole,
.hc-light .icon.applicationrole,
.vs-dark .icon.applicationrole,
.hc-black .icon.applicationrole {
background: url("ApplicationRole.svg") center center no-repeat;
}
.vs .icon.assembly,
.hc-light .icon.assembly,
.vs-dark .icon.assembly,
.hc-black .icon.assembly {
background: url("Assembly.svg") center center no-repeat;
}
.vs .icon.asymmetrickey,
.hc-light .icon.asymmetrickey,
.vs-dark .icon.asymmetrickey,
.hc-black .icon.asymmetrickey {
background: url("AsymmetricKey.svg") center center no-repeat;
}
.vs .icon.brokerpriority,
.hc-light .icon.brokerpriority,
.vs-dark .icon.brokerpriority,
.hc-black .icon.brokerpriority {
background: url("BrokerPriority.svg") center center no-repeat;
}
.vs .icon.certificate,
.hc-light .icon.certificate,
.vs-dark .icon.certificate,
.hc-black .icon.certificate {
background: url("Certificate.svg") center center no-repeat;
}
.vs .icon.column,
.hc-light .icon.column,
.vs-dark .icon.column,
.hc-black .icon.column {
background: url("Column.svg") center center no-repeat;
}
.vs .icon.columnencryptionkey,
.hc-light .icon.columnencryptionkey,
.vs-dark .icon.columnencryptionkey,
.hc-black .icon.columnencryptionkey {
background: url("ColumnEncryptionKey.svg") center center no-repeat;
}
.vs .icon.columnmasterkey,
.hc-light .icon.columnmasterkey,
.vs-dark .icon.columnmasterkey,
.hc-black .icon.columnmasterkey {
background: url("ColumnMasterKey.svg") center center no-repeat;
}
.vs .icon.constraint,
.hc-light .icon.constraint,
.vs-dark .icon.constraint,
.hc-black .icon.constraint {
background: url("Constraint.svg") center center no-repeat;
}
.vs .icon.contract,
.hc-light .icon.contract,
.vs-dark .icon.contract,
.hc-black .icon.contract {
background: url("Contract.svg") center center no-repeat;
}
.vs .icon.database,
.hc-light .icon.database,
.vs-dark .icon.database,
.hc-black .icon.database {
background: url("Database.svg") center center no-repeat;
}
.vs .icon.database_ledger,
.hc-light .icon.database_ledger,
.vs-dark .icon.database_ledger,
.hc-black .icon.database_ledger {
background: url("Database_Ledger.svg") center center no-repeat;
}
.vs .icon.database_unavailable,
.hc-light .icon.database_unavailable,
.vs-dark .icon.database_unavailable,
.hc-black .icon.database_unavailable {
background: url("Database_Unavailable.svg") center center no-repeat;
}
.vs .icon.databaseandqueueeventnotification,
.hc-light .icon.databaseandqueueeventnotification,
.vs-dark .icon.databaseandqueueeventnotification,
.hc-black .icon.databaseandqueueeventnotification {
background: url("DatabaseAndQueueEventNotification.svg") center center no-repeat;
}
.vs .icon.databaseauditspecification,
.hc-light .icon.databaseauditspecification,
.vs-dark .icon.databaseauditspecification,
.hc-black .icon.databaseauditspecification {
background: url("DatabaseAuditSpecification.svg") center center no-repeat;
}
.vs .icon.databaseencryptionkey,
.hc-light .icon.databaseencryptionkey,
.vs-dark .icon.databaseencryptionkey,
.hc-black .icon.databaseencryptionkey {
background: url("DatabaseEncryptionKey.svg") center center no-repeat;
}
.vs .icon.databaserole,
.hc-light .icon.databaserole,
.vs-dark .icon.databaserole,
.hc-black .icon.databaserole {
background: url("DatabaseRole.svg") center center no-repeat;
}
.vs .icon.databasescopedcredential,
.hc-light .icon.databasescopedcredential,
.vs-dark .icon.databasescopedcredential,
.hc-black .icon.databasescopedcredential {
background: url("DatabaseScopedCredential.svg") center center no-repeat;
}
.vs .icon.databasetrigger,
.hc-light .icon.databasetrigger,
.vs-dark .icon.databasetrigger,
.hc-black .icon.databasetrigger {
background: url("DatabaseTrigger.svg") center center no-repeat;
}
.vs .icon.defaulticon,
.hc-light .icon.defaulticon,
.vs-dark .icon.defaulticon,
.hc-black .icon.defaulticon,
.vs .icon.filegroup,
.hc-light .icon.filegroup,
.vs-dark .icon.filegroup,
.hc-black .icon.filegroup,
.vs .icon.historytable,
.hc-light .icon.historytable,
.vs-dark .icon.historytable,
.hc-black .icon.historytable {
background: url("DefaultIcon.svg") center center no-repeat;
}
.vs .icon.externaldatasource,
.hc-light .icon.externaldatasource,
.vs-dark .icon.externaldatasource,
.hc-black .icon.externaldatasource {
background: url("ExternalDataSource.svg") center center no-repeat;
}
.vs .icon.externalfileformat,
.hc-light .icon.externalfileformat,
.vs-dark .icon.externalfileformat,
.hc-black .icon.externalfileformat {
background: url("ExternalFileFormat.svg") center center no-repeat;
}
.vs .icon.filegroupfile,
.hc-light .icon.filegroupfile,
.vs-dark .icon.filegroupfile,
.hc-black .icon.filegroupfile {
background: url("FileGroupFile.svg") center center no-repeat;
}
.vs .icon.filegroupfile_mounted,
.hc-light .icon.filegroupfile_mounted,
.vs-dark .icon.filegroupfile_mounted,
.hc-black .icon.filegroupfile_mounted {
background: url("FileGroupFile_mounted.svg") center center no-repeat;
}
.vs .icon.folder,
.hc-light .icon.folder,
.vs-dark .icon.folder,
.hc-black .icon.folder {
background: url("Folder.svg") center center no-repeat;
}
.vs .icon.folder_mounted,
.hc-light .icon.folder_mounted,
.vs-dark .icon.folder_mounted,
.hc-black .icon.folder_mounted {
background: url("Folder_mounted.svg") center center no-repeat;
}
.vs .icon.fulltextcatalog,
.hc-light .icon.fulltextcatalog,
.vs-dark .icon.fulltextcatalog,
.hc-black .icon.fulltextcatalog {
background: url("FullTextCatalog.svg") center center no-repeat;
}
.vs .icon.fulltextstoplist,
.hc-light .icon.fulltextstoplist,
.vs-dark .icon.fulltextstoplist,
.hc-black .icon.fulltextstoplist {
background: url("FullTextStopList.svg") center center no-repeat;
}
.vs .icon.index,
.hc-light .icon.index,
.vs-dark .icon.index,
.hc-black .icon.index {
background: url("Index.svg") center center no-repeat;
}
.vs .icon.key_foreignkey,
.hc-light .icon.key_foreignkey,
.vs-dark .icon.key_foreignkey,
.hc-black .icon.key_foreignkey {
background: url("Key_ForeignKey.svg") center center no-repeat;
}
.vs .icon.key_primarykey,
.hc-light .icon.key_primarykey,
.vs-dark .icon.key_primarykey,
.hc-black .icon.key_primarykey,
.vs .icon.index_primarykey,
.hc-light .icon.index_primarykey,
.vs-dark .icon.index_primarykey,
.hc-black .icon.index_primarykey {
background: url("Key_PrimaryKey.svg") center center no-repeat;
}
.vs .icon.key_uniquekey,
.hc-light .icon.key_uniquekey,
.vs-dark .icon.key_uniquekey,
.hc-black .icon.key_uniquekey,
.vs .icon.index_uniquekey,
.hc-light .icon.index_uniquekey,
.vs-dark .icon.index_uniquekey,
.hc-black .icon.index_uniquekey {
background: url("Key_UniqueKey.svg") center center no-repeat;
}
.vs .icon.masterkey,
.hc-light .icon.masterkey,
.vs-dark .icon.masterkey,
.hc-black .icon.masterkey {
background: url("MasterKey.svg") center center no-repeat;
}
.vs .icon.messagetype,
.hc-light .icon.messagetype,
.vs-dark .icon.messagetype,
.hc-black .icon.messagetype {
background: url("MessageType.svg") center center no-repeat;
}
.vs .icon.objecttypes.css,
.hc-light .icon.objecttypes.css,
.vs-dark .icon.objecttypes.css,
.hc-black .icon.objecttypes.css {
background: url("objecttypes.css") center center no-repeat;
}
.vs .icon.partitionfunction,
.hc-light .icon.partitionfunction,
.vs-dark .icon.partitionfunction,
.hc-black .icon.partitionfunction {
background: url("PartitionFunction.svg") center center no-repeat;
}
.vs .icon.partitionscheme,
.hc-light .icon.partitionscheme,
.vs-dark .icon.partitionscheme,
.hc-black .icon.partitionscheme {
background: url("PartitionScheme.svg") center center no-repeat;
}
.vs .icon.queue,
.hc-light .icon.queue,
.vs-dark .icon.queue,
.hc-black .icon.queue {
background: url("Queue.svg") center center no-repeat;
}
.vs .icon.remoteservicebinding,
.hc-light .icon.remoteservicebinding,
.vs-dark .icon.remoteservicebinding,
.hc-black .icon.remoteservicebinding {
background: url("RemoteServiceBinding.svg") center center no-repeat;
}
.vs .icon.route,
.hc-light .icon.route,
.vs-dark .icon.route,
.hc-black .icon.route {
background: url("Route.svg") center center no-repeat;
}
.vs .icon.scalarvaluedfunction,
.hc-light .icon.scalarvaluedfunction,
.vs-dark .icon.scalarvaluedfunction,
.hc-black .icon.scalarvaluedfunction {
background: url("ScalarValuedFunction.svg") center center no-repeat;
}
.vs .icon.scalarvaluedfunctionparameter_input,
.hc-light .icon.scalarvaluedfunctionparameter_input,
.vs-dark .icon.scalarvaluedfunctionparameter_input,
.hc-black .icon.scalarvaluedfunctionparameter_input {
background: url("ScalarValuedFunctionParameter_Input.svg") center center no-repeat;
}
.vs .icon.scalarvaluedfunctionparameter_output,
.hc-light .icon.scalarvaluedfunctionparameter_output,
.vs-dark .icon.scalarvaluedfunctionparameter_output,
.hc-black .icon.scalarvaluedfunctionparameter_output {
background: url("ScalarValuedFunctionParameter_Output.svg") center center no-repeat;
}
.vs .icon.scalarvaluedfunctionparameter_return,
.hc-light .icon.scalarvaluedfunctionparameter_return,
.vs-dark .icon.scalarvaluedfunctionparameter_return,
.hc-black .icon.scalarvaluedfunctionparameter_return {
background: url("ScalarValuedFunctionParameter_Return.svg") center center no-repeat;
}
.vs .icon.schema,
.hc-light .icon.schema,
.vs-dark .icon.schema,
.hc-black .icon.schema {
background: url("Schema.svg") center center no-repeat;
}
.vs .icon.searchpropertylist,
.hc-light .icon.searchpropertylist,
.vs-dark .icon.searchpropertylist,
.hc-black .icon.searchpropertylist {
background: url("SearchPropertyList.svg") center center no-repeat;
}
.vs .icon.securitypolicy,
.hc-light .icon.securitypolicy,
.vs-dark .icon.securitypolicy,
.hc-black .icon.securitypolicy {
background: url("SecurityPolicy.svg") center center no-repeat;
}
.vs .icon.sequence,
.hc-light .icon.sequence,
.vs-dark .icon.sequence,
.hc-black .icon.sequence {
background: url("Sequence.svg") center center no-repeat;
}
.vs .icon.server,
.hc-light .icon.server,
.vs-dark .icon.server,
.hc-black .icon.server {
background: url("Server.svg") center center no-repeat;
}
.vs .icon.serverlevelcredential,
.hc-light .icon.serverlevelcredential,
.vs-dark .icon.serverlevelcredential,
.hc-black .icon.serverlevelcredential {
background: url("ServerLevelCredential.svg") center center no-repeat;
}
.vs .icon.serverlevelcryptographicprovider,
.hc-light .icon.serverlevelcryptographicprovider,
.vs-dark .icon.serverlevelcryptographicprovider,
.hc-black .icon.serverlevelcryptographicprovider {
background: url("ServerLevelCryptographicProvider.svg") center center no-repeat;
}
.vs .icon.serverlevelendpoint,
.hc-light .icon.serverlevelendpoint,
.vs-dark .icon.serverlevelendpoint,
.hc-black .icon.serverlevelendpoint {
background: url("ServerLevelEndpoint.svg") center center no-repeat;
}
.vs .icon.serverlevellinkedserver,
.hc-light .icon.serverlevellinkedserver,
.vs-dark .icon.serverlevellinkedserver,
.hc-black .icon.serverlevellinkedserver {
background: url("ServerLevelLinkedServer.svg") center center no-repeat;
}
.vs .icon.serverlevellinkedserverlogin,
.hc-light .icon.serverlevellinkedserverlogin,
.vs-dark .icon.serverlevellinkedserverlogin,
.hc-black .icon.serverlevellinkedserverlogin {
background: url("ServerLevelLinkedServerLogin.svg") center center no-repeat;
}
.vs .icon.serverlevellinkedserverlogin_disabled,
.hc-light .icon.serverlevellinkedserverlogin_disabled,
.vs-dark .icon.serverlevellinkedserverlogin_disabled,
.hc-black .icon.serverlevellinkedserverlogin_disabled {
background: url("ServerLevelLinkedServerLogin_Disabled.svg") center center no-repeat;
}
.vs .icon.serverlevellogin,
.hc-light .icon.serverlevellogin,
.vs-dark .icon.serverlevellogin,
.hc-black .icon.serverlevellogin {
background: url("ServerLevelLogin.svg") center center no-repeat;
}
.vs .icon.serverlevellogin_disabled,
.hc-light .icon.serverlevellogin_disabled,
.vs-dark .icon.serverlevellogin_disabled,
.hc-black .icon.serverlevellogin_disabled {
background: url("ServerLevelLogin_Disabled.svg") center center no-repeat;
}
.vs .icon.serverlevelserveraudit,
.hc-light .icon.serverlevelserveraudit,
.vs-dark .icon.serverlevelserveraudit,
.hc-black .icon.serverlevelserveraudit {
background: url("ServerLevelServerAudit.svg") center center no-repeat;
}
.vs .icon.serverlevelserverauditspecification,
.hc-light .icon.serverlevelserverauditspecification,
.vs-dark .icon.serverlevelserverauditspecification,
.hc-black .icon.serverlevelserverauditspecification {
background: url("ServerLevelServerAuditSpecification.svg") center center no-repeat;
}
.vs .icon.serverlevelserverrole,
.hc-light .icon.serverlevelserverrole,
.vs-dark .icon.serverlevelserverrole,
.hc-black .icon.serverlevelserverrole {
background: url("ServerLevelServerRole.svg") center center no-repeat;
}
.vs .icon.serverlevelservertrigger,
.hc-light .icon.serverlevelservertrigger,
.vs-dark .icon.serverlevelservertrigger,
.hc-black .icon.serverlevelservertrigger {
background: url("ServerLevelServerTrigger.svg") center center no-repeat;
}
.vs .icon.serverlevelservertrigger_disabled,
.hc-light .icon.serverlevelservertrigger_disabled,
.vs-dark .icon.serverlevelservertrigger_disabled,
.hc-black .icon.serverlevelservertrigger_disabled {
background: url("ServerLevelServerTrigger_Disabled.svg") center center no-repeat;
}
.vs .icon.service,
.hc-light .icon.service,
.vs-dark .icon.service,
.hc-black .icon.service {
background: url("Service.svg") center center no-repeat;
}
.vs .icon.sqllogfile,
.hc-light .icon.sqllogfile,
.vs-dark .icon.sqllogfile,
.hc-black .icon.sqllogfile {
background: url("SqlLogFile.svg") center center no-repeat;
}
.vs .icon.statistic,
.hc-light .icon.statistic,
.vs-dark .icon.statistic,
.hc-black .icon.statistic {
background: url("Statistic.svg") center center no-repeat;
}
.vs .icon.storedprocedure,
.hc-light .icon.storedprocedure,
.vs-dark .icon.storedprocedure,
.hc-black .icon.storedprocedure {
background: url("StoredProcedure.svg") center center no-repeat;
}
.vs .icon.storedprocedureparameter_input,
.hc-light .icon.storedprocedureparameter_input,
.vs-dark .icon.storedprocedureparameter_input,
.hc-black .icon.storedprocedureparameter_input {
background: url("StoredProcedureParameter_Input.svg") center center no-repeat;
}
.vs .icon.storedprocedureparameter_output,
.hc-light .icon.storedprocedureparameter_output,
.vs-dark .icon.storedprocedureparameter_output,
.hc-black .icon.storedprocedureparameter_output {
background: url("StoredProcedureParameter_Output.svg") center center no-repeat;
}
.vs .icon.storedprocedureparameter_return,
.hc-light .icon.storedprocedureparameter_return,
.vs-dark .icon.storedprocedureparameter_return,
.hc-black .icon.storedprocedureparameter_return {
background: url("StoredProcedureParameter_Return.svg") center center no-repeat;
}
.vs .icon.symmetrickey,
.hc-light .icon.symmetrickey,
.vs-dark .icon.symmetrickey,
.hc-black .icon.symmetrickey {
background: url("SymmetricKey.svg") center center no-repeat;
}
.vs .icon.synonym,
.hc-light .icon.synonym,
.vs-dark .icon.synonym,
.hc-black .icon.synonym {
background: url("Synonym.svg") center center no-repeat;
}
.vs .icon.systemapproximatenumeric,
.hc-light .icon.systemapproximatenumeric,
.vs-dark .icon.systemapproximatenumeric,
.hc-black .icon.systemapproximatenumeric {
background: url("SystemApproximateNumeric.svg") center center no-repeat;
}
.vs .icon.systembinarystring,
.hc-light .icon.systembinarystring,
.vs-dark .icon.systembinarystring,
.hc-black .icon.systembinarystring {
background: url("SystemBinaryString.svg") center center no-repeat;
}
.vs .icon.systemcharacterstring,
.hc-light .icon.systemcharacterstring,
.vs-dark .icon.systemcharacterstring,
.hc-black .icon.systemcharacterstring {
background: url("SystemCharacterString.svg") center center no-repeat;
}
.vs .icon.systemclrdatatype,
.hc-light .icon.systemclrdatatype,
.vs-dark .icon.systemclrdatatype,
.hc-black .icon.systemclrdatatype {
background: url("SystemClrDataType.svg") center center no-repeat;
}
.vs .icon.systemcontract,
.hc-light .icon.systemcontract,
.vs-dark .icon.systemcontract,
.hc-black .icon.systemcontract {
background: url("SystemContract.svg") center center no-repeat;
}
.vs .icon.systemdateandtime,
.hc-light .icon.systemdateandtime,
.vs-dark .icon.systemdateandtime,
.hc-black .icon.systemdateandtime {
background: url("SystemDateAndTime.svg") center center no-repeat;
}
.vs .icon.systemexactnumeric,
.hc-light .icon.systemexactnumeric,
.vs-dark .icon.systemexactnumeric,
.hc-black .icon.systemexactnumeric {
background: url("SystemExactNumeric.svg") center center no-repeat;
}
.vs .icon.systemmessagetype,
.hc-light .icon.systemmessagetype,
.vs-dark .icon.systemmessagetype,
.hc-black .icon.systemmessagetype {
background: url("SystemMessageType.svg") center center no-repeat;
}
.vs .icon.systemotherdatatype,
.hc-light .icon.systemotherdatatype,
.vs-dark .icon.systemotherdatatype,
.hc-black .icon.systemotherdatatype {
background: url("SystemOtherDataType.svg") center center no-repeat;
}
.vs .icon.systemqueue,
.hc-light .icon.systemqueue,
.vs-dark .icon.systemqueue,
.hc-black .icon.systemqueue {
background: url("SystemQueue.svg") center center no-repeat;
}
.vs .icon.systemservice,
.hc-light .icon.systemservice,
.vs-dark .icon.systemservice,
.hc-black .icon.systemservice {
background: url("SystemService.svg") center center no-repeat;
}
.vs .icon.systemspatialdatatype,
.hc-light .icon.systemspatialdatatype,
.vs-dark .icon.systemspatialdatatype,
.hc-black .icon.systemspatialdatatype {
background: url("SystemSpatialDataType.svg") center center no-repeat;
}
.vs .icon.systemunicodecharacterstring,
.hc-light .icon.systemunicodecharacterstring,
.vs-dark .icon.systemunicodecharacterstring,
.hc-black .icon.systemunicodecharacterstring {
background: url("SystemUnicodeCharacterString.svg") center center no-repeat;
}
.vs .icon.function,
.hc-light .icon.function,
.vs-dark .icon.function,
.hc-black .icon.function,
.vs .icon.tablevaluedfunction,
.hc-light .icon.tablevaluedfunction,
.vs-dark .icon.tablevaluedfunction,
.hc-black .icon.tablevaluedfunction {
background: url("TableValuedFunction.svg") center center no-repeat;
}
.vs .icon.tablevaluedfunctionparameter_input,
.hc-light .icon.tablevaluedfunctionparameter_input,
.vs-dark .icon.tablevaluedfunctionparameter_input,
.hc-black .icon.tablevaluedfunctionparameter_input {
background: url("TableValuedFunctionParameter_Input.svg") center center no-repeat;
}
.vs .icon.tablevaluedfunctionparameter_output,
.hc-light .icon.tablevaluedfunctionparameter_output,
.vs-dark .icon.tablevaluedfunctionparameter_output,
.hc-black .icon.tablevaluedfunctionparameter_output {
background: url("TableValuedFunctionParameter_Output.svg") center center no-repeat;
}
.vs .icon.tablevaluedfunctionparameter_return,
.hc-light .icon.tablevaluedfunctionparameter_return,
.vs-dark .icon.tablevaluedfunctionparameter_return,
.hc-black .icon.tablevaluedfunctionparameter_return {
background: url("TableValuedFunctionParameter_Return.svg") center center no-repeat;
}
.vs .icon.table_ledgerappendonly,
.hc-light .icon.table_ledgerappendonly,
.vs-dark .icon.table_ledgerappendonly,
.hc-black .icon.table_ledgerappendonly,
.vs .icon.table_ledgerupdatable,
.hc-light .icon.table_ledgerupdatable,
.vs-dark .icon.table_ledgerupdatable,
.hc-black .icon.table_ledgerupdatable,
.vs .icon.table_ledgerdropped,
.hc-light .icon.table_ledgerdropped,
.vs-dark .icon.table_ledgerdropped,
.hc-black .icon.table_ledgerdropped {
background: url("Table_Ledger.svg") center center no-repeat;
}
.vs .icon.table_temporal,
.hc-light .icon.table_temporal,
.vs-dark .icon.table_temporal,
.hc-black .icon.table_temporal {
background: url("Table_Temporal.svg") center center no-repeat;
}
.vs .icon.table_graphnode,
.hc-light .icon.table_graphnode,
.vs-dark .icon.table_graphnode,
.hc-black .icon.table_graphnode {
background: url("Table_GraphNode.svg") center center no-repeat;
}
.vs .icon.table_graphedge,
.hc-light .icon.table_graphedge,
.vs-dark .icon.table_graphedge,
.hc-black .icon.table_graphedge {
background: url("Table_GraphEdge.svg") center center no-repeat;
}
.vs .icon.historytable_ledgerhistory,
.hc-light .icon.historytable_ledgerhistory,
.vs-dark .icon.historytable_ledgerhistory,
.hc-black .icon.historytable_ledgerhistory {
background: url("Table_LedgerHistory.svg") center center no-repeat;
}
.vs .icon.trigger,
.hc-light .icon.trigger,
.vs-dark .icon.trigger,
.hc-black .icon.trigger {
background: url("Trigger.svg") center center no-repeat;
}
.vs .icon.trigger_disabled,
.hc-light .icon.trigger_disabled,
.vs-dark .icon.trigger_disabled,
.hc-black .icon.trigger_disabled {
background: url("Trigger_Disabled.svg") center center no-repeat;
}
.vs .icon.user,
.hc-light .icon.user,
.vs-dark .icon.user,
.hc-black .icon.user {
background: url("User.svg") center center no-repeat;
}
.vs .icon.user_disabled,
.hc-light .icon.user_disabled,
.vs-dark .icon.user_disabled,
.hc-black .icon.user_disabled {
background: url("User_Disabled.svg") center center no-repeat;
}
.vs .icon.userdefineddatatype,
.hc-light .icon.userdefineddatatype,
.vs-dark .icon.userdefineddatatype,
.hc-black .icon.userdefineddatatype {
background: url("UserDefinedDataType.svg") center center no-repeat;
}
.vs .icon.userdefinedtabletype,
.hc-light .icon.userdefinedtabletype,
.vs-dark .icon.userdefinedtabletype,
.hc-black .icon.userdefinedtabletype {
background: url("UserDefinedTableType.svg") center center no-repeat;
}
.vs .icon.userdefinedtabletypecolumn,
.hc-light .icon.userdefinedtabletypecolumn,
.vs-dark .icon.userdefinedtabletypecolumn,
.hc-black .icon.userdefinedtabletypecolumn {
background: url("UserDefinedTableTypeColumn.svg") center center no-repeat;
}
.vs .icon.userdefinedtabletypeconstraint,
.hc-light .icon.userdefinedtabletypeconstraint,
.vs-dark .icon.userdefinedtabletypeconstraint,
.hc-black .icon.userdefinedtabletypeconstraint {
background: url("UserDefinedTableTypeConstraint.svg") center center no-repeat;
}
.vs .icon.userdefinedtype,
.hc-light .icon.userdefinedtype,
.vs-dark .icon.userdefinedtype,
.hc-black .icon.userdefinedtype {
background: url("UserDefinedType.svg") center center no-repeat;
}
.vs .icon.view,
.hc-light .icon.view,
.vs-dark .icon.view,
.hc-black .icon.view {
background: url("View.svg") center center no-repeat;
}
.vs .icon.view_ledger,
.hc-light .icon.view_ledger,
.vs-dark .icon.view_ledger,
.hc-black .icon.view_ledger {
background: url("View_Ledger.svg") center center no-repeat;
}
.vs .icon.xmlschemacollection,
.hc-light .icon.xmlschemacollection,
.vs-dark .icon.xmlschemacollection,
.hc-black .icon.xmlschemacollection {
background: url("XmlSchemaCollection.svg") center center no-repeat;

View File

@@ -25,12 +25,6 @@ export interface IGridDataProvider {
*/
copyResults(selection: Slick.Range[], includeHeaders?: boolean, tableView?: IDisposableDataProvider<Slick.SlickData>): Promise<void>;
/**
* Sends a copy request to copy table headers to the clipboard
* @param selection The selection range to copy
*/
copyHeaders(selection: Slick.Range[]): Promise<void>;
/**
* Gets the EOL terminator to use for this data type.
*/
@@ -106,8 +100,11 @@ export async function getResultsString(provider: IGridDataProvider, selection: S
// Make sure all these tasks have executed
await Promise.all(actionedTasks);
headers = sortMapEntriesByColumnOrder(headers);
rows = sortMapEntriesByColumnOrder(rows);
const sortResults = (e1: [number, any], e2: [number, any]) => {
return e1[0] - e2[0];
};
headers = new Map([...headers].sort(sortResults));
rows = new Map([...rows].sort(sortResults));
let copyString = '';
if (includeHeaders) {
@@ -135,42 +132,6 @@ export async function getResultsString(provider: IGridDataProvider, selection: S
return copyString;
}
export function getTableHeaderString(provider: IGridDataProvider, selection: Slick.Range[]): string {
let headers: Map<number, string> = new Map(); // Maps a column index -> header
selection.forEach((range) => {
let startCol = range.fromCell;
let columnHeaders = provider.getColumnHeaders(range);
if (columnHeaders !== undefined) {
let idx = 0;
for (let header of columnHeaders) {
headers.set(startCol + idx, header);
idx++;
}
}
});
headers = sortMapEntriesByColumnOrder(headers)
const copyString = Array.from(headers.values())
.map(colHeader => colHeader ? colHeader : '')
.join('\t');
return copyString;
}
/**
* Ensures that table entries in the map appear in column order instead of the order that they were selected.
* @param map Contains the entries selected in a table
* @returns Sorted map with entries appearing in column order.
*/
function sortMapEntriesByColumnOrder(map: Map<number, any>): Map<number, any> {
const leftToRight = (e1: [number, any], e2: [number, any]) => {
return e1[0] - e2[0];
};
return new Map([...map].sort(leftToRight));
}
function removeNewLines(inputString: string): string {
// This regex removes all newlines in all OS types

View File

@@ -21,7 +21,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur
import { URI } from 'vs/base/common/uri';
import * as perf from 'vs/base/common/performance';
import { mssqlProviderName } from 'sql/platform/connection/common/constants';
import { IGridDataProvider, getResultsString, getTableHeaderString } from 'sql/workbench/services/query/common/gridDataProvider';
import { IGridDataProvider, getResultsString } from 'sql/workbench/services/query/common/gridDataProvider';
import { getErrorMessage } from 'vs/base/common/errors';
import { ILogService } from 'vs/platform/log/common/log';
import { IRange, Range } from 'vs/editor/common/core/range';
@@ -564,16 +564,7 @@ export class QueryGridDataProvider implements IGridDataProvider {
const results = await getResultsString(this, selection, includeHeaders, tableView);
await this._clipboardService.writeText(results);
} catch (error) {
this._notificationService.error(nls.localize('copyFailed', "Copy failed with error: {0}", getErrorMessage(error)));
}
}
async copyHeaders(selection: Slick.Range[]): Promise<void> {
try {
const results = getTableHeaderString(this, selection);
await this._clipboardService.writeText(results);
} catch (error) {
this._notificationService.error(nls.localize('copyFailed', "Copy failed with error: {0}", getErrorMessage(error)));
this._notificationService.error(nls.localize('copyFailed', "Copy failed with error {0}", getErrorMessage(error)));
}
}

View File

@@ -62,7 +62,7 @@ export const TaskRegistry: ITaskRegistry = new class implements ITaskRegistry {
// TODO
} else if (item.icon?.dark) { // at the very least we need a dark icon
iconClass = ids.nextId();
createCSSRule(`.codicon.${iconClass}`, `background-image: ${asCSSUrl(item.icon.light || item.icon.dark)}`);
createCSSRule(`.codicon.${iconClass}, .hc-light .codicon.${iconClass}`, `background-image: ${asCSSUrl(item.icon.light || item.icon.dark)}`);
createCSSRule(`.vs-dark .codicon.${iconClass}, .hc-black .codicon.${iconClass}`, `background-image: ${asCSSUrl(item.icon.dark)}`);
this.taskIdToIconClassNameMap.set(item.id, iconClass);
}