From 7edcca9b0797068d26c5b1b2cf31f74ad47a6594 Mon Sep 17 00:00:00 2001 From: Nikhil Mohite Date: Mon, 20 Jul 2020 11:51:21 +0530 Subject: [PATCH] Added High Contrast theme support. Fixes #5653 Fixed text color issue in explain analyze for the Dark theme. Fixes #5677 --- docs/en_US/enabling_ldap_authentication.rst | 10 + docs/en_US/preferences.rst | 1 + docs/en_US/release_notes_4_24.rst | 6 +- .../static/js/fts_configuration.js | 2 +- .../static/js/exclusion_constraint.js | 2 +- .../foreign_key/static/js/foreign_key.js | 2 +- .../servers/static/js/variable.js | 2 +- .../tablespaces/static/js/tablespace.js | 2 +- web/pgadmin/browser/static/js/browser.js | 2 +- web/pgadmin/browser/static/js/collection.js | 4 +- web/pgadmin/browser/static/js/node.js | 6 +- web/pgadmin/browser/static/js/toolbar.js | 8 +- web/pgadmin/browser/static/js/wizard.js | 2 +- web/pgadmin/browser/static/scss/_wizard.scss | 4 +- .../dashboard/database_dashboard.html | 2 +- .../templates/dashboard/server_dashboard.html | 2 +- .../misc/bgprocess/static/js/bgprocess.js | 6 +- .../misc/file_manager/static/js/utility.js | 2 +- .../static/scss/_file_manager.scss | 13 +- .../templates/file_manager/index.html | 22 +- web/pgadmin/misc/static/explain/js/explain.js | 10 +- .../misc/static/explain/scss/_explain.scss | 1 + .../preferences/static/js/preferences.js | 2 +- .../static/js/alertify.pgadmin.defaults.js | 6 +- web/pgadmin/static/js/backform.pgadmin.js | 6 +- .../static/js/sqleditor/filter_dialog.js | 2 +- .../static/scss/_aci_tree.overrides.scss | 20 +- web/pgadmin/static/scss/_alert.scss | 2 +- .../static/scss/_alertify.overrides.scss | 17 +- .../static/scss/_backgrid.overrides.scss | 6 + .../static/scss/_bootstrap.overrides.scss | 84 +++++++- .../static/scss/_codemirror.overrides.scss | 6 +- web/pgadmin/static/scss/_pgadmin.style.scss | 4 +- .../static/scss/_select2.overrides.scss | 10 +- .../static/scss/_webcabin.pgadmin.scss | 4 +- .../static/scss/resources/_default.style.scss | 6 +- .../scss/resources/_default.variables.scss | 122 ++++++++--- .../scss/resources/dark/_theme.variables.scss | 26 +++ .../high_contrast/_theme.variables.scss | 201 ++++++++++++++++++ .../high_contrast/high_contrast_preview.png | Bin 0 -> 57572 bytes .../backup/static/js/backup_dialog_wrapper.js | 4 +- .../tools/datagrid/static/js/show_data.js | 2 +- .../datagrid/templates/datagrid/index.html | 42 ++-- .../maintenance/static/js/maintenance.js | 4 +- .../static/js/restore_dialog_wrapper.js | 4 +- .../static/js/schema_diff.backform.js | 6 +- .../schema_diff/static/scss/_schema_diff.scss | 14 +- .../js/search_objects_dialog_wrapper.js | 2 +- .../tools/sqleditor/static/scss/_history.scss | 2 +- .../sqleditor/static/scss/_sqleditor.scss | 3 +- .../static/js/user_management.js | 4 +- web/webpack.config.js | 9 +- 52 files changed, 586 insertions(+), 145 deletions(-) create mode 100644 web/pgadmin/static/scss/resources/high_contrast/_theme.variables.scss create mode 100644 web/pgadmin/static/scss/resources/high_contrast/high_contrast_preview.png diff --git a/docs/en_US/enabling_ldap_authentication.rst b/docs/en_US/enabling_ldap_authentication.rst index 62c269da3..a76dbfa70 100644 --- a/docs/en_US/enabling_ldap_authentication.rst +++ b/docs/en_US/enabling_ldap_authentication.rst @@ -38,6 +38,16 @@ and modify the values for the following parameters: want to connect to. For example, 'ldap://172.16.209.35:389' is a valid LDAP_SERVER_URI where ldap is the connection protocol, 172.16.209.35 is the IP address and 389 is the port. Port 636 is used for the ldaps communication protocol." + "LDAP_BIND_USER", "The account of the user to log in for simple bind. + Set this parameter to allow the connection to bind using a dedicated user. + After the connection is made, the pgadmin login user will be further + authenticated by the username and password provided at the login screen. + + This is an optional parameter. If you do not specify any value for LDAP_BIND_USER, + LDAP connection and authentication will be done by the username and password provided + at the login screen." + "LDAP_BIND_PASSWORD", "Password for simple bind. + Specify the value if you have set the LDAP_BIND_USER parameter." "LDAP_BASE_DN","Specifies the base DN from where a server will start the search for users. For example, an LDAP search for any user will be performed by the server starting at the base DN (dc=example,dc=com). When the base DN matches, the full diff --git a/docs/en_US/preferences.rst b/docs/en_US/preferences.rst index 858ca7b60..587025963 100644 --- a/docs/en_US/preferences.rst +++ b/docs/en_US/preferences.rst @@ -185,6 +185,7 @@ Expand the *Miscellaneous* node to specify miscellaneous display preferences. * Use the *Themes* drop-down listbox to select the theme for pgAdmin. You'll also get a preview just below the drop down. Note that, to apply the theme you need to refresh the pgAdmin page. You can also submit your own themes, check `here `_ how. + Currently we support Standard, Dark and High Contrast (Beta) theme. The Paths Node ************** diff --git a/docs/en_US/release_notes_4_24.rst b/docs/en_US/release_notes_4_24.rst index 09a008d18..f986baca9 100644 --- a/docs/en_US/release_notes_4_24.rst +++ b/docs/en_US/release_notes_4_24.rst @@ -14,6 +14,7 @@ New features | `Issue #5583 `_ - Added support for schema level restriction. | `Issue #5601 `_ - Added RLS Policy support in Schema Diff. | `Issue #5622 `_ - Added support for permissive/restricted policy type while creating RLS Policy. +| `Issue #5653 `_ - Added High Contrast theme support. Housekeeping ************ @@ -21,7 +22,6 @@ Housekeeping | `Issue #5323 `_ - Improve code coverage and API test cases for Foreign Data Wrapper. | `Issue #5326 `_ - Improve code coverage and API test cases for Domain and Domain Constraints. | `Issue #5329 `_ - Improve code coverage and API test cases for FTS Configuration, FTS Parser, FTS Dictionaries, and FTS Template. -| `Issue #5666 `_ - Added missing dependencies/dependent and corrected some wrongly identified. Bug fixes ********* @@ -45,5 +45,7 @@ Bug fixes | `Issue #5633 `_ - Ensure that create RLS Policy menu should not be visible for catalog objects. | `Issue #5647 `_ - Fixed an issue where difference DDL is showing the wrong SQL when changing the policy owner. | `Issue #5662 `_ - Fixed accessibility issue where few dialogs are not rendering properly when we zoomed in browser window 200% and screen resolution is low. +| `Issue #5666 `_ - Added missing dependencies/dependent and corrected some wrongly identified. | `Issue #5673 `_ - Fixed an issue where fetching the schema throws an error if the database is not connected in Schema Diff. -| `Issue #5675 `_ - Fixed CSRF errors when pgAdmin opened in an iframe on safari browser. \ No newline at end of file +| `Issue #5675 `_ - Fixed CSRF errors when pgAdmin opened in an iframe on safari browser. +| `Issue #5677 `_ - Fixed text color issue in explain analyze for the Dark theme. \ No newline at end of file diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/static/js/fts_configuration.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/static/js/fts_configuration.js index 3d2b34614..d69e22a38 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/static/js/fts_configuration.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/static/js/fts_configuration.js @@ -213,7 +213,7 @@ define('pgadmin.node.fts_configuration', [ ' ', '
', '
', - ' ', + ' ', '
', ' ', ' ', diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.js index ba1566a6f..57d65d3bc 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.js @@ -450,7 +450,7 @@ define('pgadmin.node.exclusion_constraint', [ titleTmpl = _.template([ '
', ' ', - ' ', + ' ', '
'].join('\n')), $gridBody = $('
').append( diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.js index 0af5ca0b0..49b533cf7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.js @@ -385,7 +385,7 @@ define('pgadmin.node.foreign_key', [ titleTmpl = _.template([ '
', ' ', - ' ', + ' ', '
'].join('\n')), $gridBody = $('
').append( diff --git a/web/pgadmin/browser/server_groups/servers/static/js/variable.js b/web/pgadmin/browser/server_groups/servers/static/js/variable.js index a28977909..6d03a172a 100644 --- a/web/pgadmin/browser/server_groups/servers/static/js/variable.js +++ b/web/pgadmin/browser/server_groups/servers/static/js/variable.js @@ -338,7 +338,7 @@ function(gettext, _, $, Backbone, Backform, Backgrid, Alertify, pgAdmin, pgNode) titleTmpl = _.template([ '
', '<%-label%>', - '', + '', '
'].join('\n')), $gridBody = $('
').append( diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/static/js/tablespace.js b/web/pgadmin/browser/server_groups/servers/tablespaces/static/js/tablespace.js index 9b4fe75ba..8e4db7ef0 100644 --- a/web/pgadmin/browser/server_groups/servers/tablespaces/static/js/tablespace.js +++ b/web/pgadmin/browser/server_groups/servers/tablespaces/static/js/tablespace.js @@ -190,7 +190,7 @@ define('pgadmin.node.tablespace', [ return { buttons: [{ text: '', key: 112, - className: 'btn btn-secondary pull-left fa fa-question pg-alertify-icon-button', + className: 'btn btn-primary-icon pull-left fa fa-question pg-alertify-icon-button', attrs:{name:'dialog_help', type:'button', label: gettext('Users'), url: url_for('help.static', {'filename': 'move_objects.html'})}, },{ diff --git a/web/pgadmin/browser/static/js/browser.js b/web/pgadmin/browser/static/js/browser.js index dcf3cc09e..c7f1b7216 100644 --- a/web/pgadmin/browser/static/js/browser.js +++ b/web/pgadmin/browser/static/js/browser.js @@ -603,7 +603,7 @@ define('pgadmin.browser', [ return { buttons:[{ text: '', - className: 'btn btn-secondary pull-left fa fa-question pg-alertify-icon-button', + className: 'btn btn-primary-icon pull-left fa fa-question pg-alertify-icon-button', attrs: { name: 'dialog_help', type: 'button', diff --git a/web/pgadmin/browser/static/js/collection.js b/web/pgadmin/browser/static/js/collection.js index 3207f7841..124817a71 100644 --- a/web/pgadmin/browser/static/js/collection.js +++ b/web/pgadmin/browser/static/js/collection.js @@ -246,7 +246,7 @@ define([ label: '', type: 'delete', tooltip: gettext('Delete/Drop'), - extraClasses: ['btn-secondary m-1', 'delete_multiple'], + extraClasses: ['btn-primary-icon m-1', 'delete_multiple'], icon: 'fa fa-lg fa-trash-o', disabled: (_.isFunction(that.canDrop)) ? !(that.canDrop.apply(self, [data, item])) : (!that.canDrop), register: function(btn) { @@ -260,7 +260,7 @@ define([ label: '', type: 'delete', tooltip: gettext('Drop Cascade'), - extraClasses: ['btn-secondary m-1', 'delete_multiple_cascade'], + extraClasses: ['btn-primary-icon m-1', 'delete_multiple_cascade'], icon: 'pg-font-icon icon-drop-cascade', disabled: (_.isFunction(that.canDropCascade)) ? !(that.canDropCascade.apply(self, [data, item])) : (!that.canDropCascade), register: function(btn) { diff --git a/web/pgadmin/browser/static/js/node.js b/web/pgadmin/browser/static/js/node.js index fec65ebdc..93285fbb3 100644 --- a/web/pgadmin/browser/static/js/node.js +++ b/web/pgadmin/browser/static/js/node.js @@ -1245,7 +1245,7 @@ define('pgadmin.browser.node', [ label: '', type: 'help', tooltip: gettext('SQL help for this object type.'), - extraClasses: ['btn-secondary', 'btn-secondary', 'm-1'], + extraClasses: ['btn-primary-icon', 'btn-primary-icon', 'm-1'], icon: 'fa fa-lg fa-info', disabled: (that.sqlAlterHelp == '' && that.sqlCreateHelp == '') ? true : false, register: function(btn) { @@ -1498,7 +1498,7 @@ define('pgadmin.browser.node', [ label: '', type: 'help', tooltip: gettext('SQL help for this object type.'), - extraClasses: ['btn-secondary', 'pull-left', 'mx-1'], + extraClasses: ['btn-primary-icon', 'pull-left', 'mx-1'], icon: 'fa fa-lg fa-info', disabled: (that.sqlAlterHelp == '' && that.sqlCreateHelp == '') ? true : false, register: function(btn) { @@ -1510,7 +1510,7 @@ define('pgadmin.browser.node', [ label: '', type: 'help', tooltip: gettext('Help for this dialog.'), - extraClasses: ['btn-secondary', 'pull-left', 'mx-1'], + extraClasses: ['btn-primary-icon', 'pull-left', 'mx-1'], icon: 'fa fa-lg fa-question', disabled: (that.dialogHelp == '') ? true : false, register: function(btn) { diff --git a/web/pgadmin/browser/static/js/toolbar.js b/web/pgadmin/browser/static/js/toolbar.js index 355354f61..d0f66681a 100644 --- a/web/pgadmin/browser/static/js/toolbar.js +++ b/web/pgadmin/browser/static/js/toolbar.js @@ -24,7 +24,7 @@ let _defaultToolBarButtons = [ text: '', toggled: false, toggleClass: '', - parentClass: 'pg-toolbar-btn btn-secondary', + parentClass: 'pg-toolbar-btn btn-primary-icon', enabled: false, }, { @@ -34,7 +34,7 @@ let _defaultToolBarButtons = [ text: '', toggled: false, toggleClass: '', - parentClass: 'pg-toolbar-btn btn-secondary', + parentClass: 'pg-toolbar-btn btn-primary-icon', enabled: false, }, { @@ -44,7 +44,7 @@ let _defaultToolBarButtons = [ text: '', toggled: false, toggleClass: '', - parentClass: 'pg-toolbar-btn btn-secondary', + parentClass: 'pg-toolbar-btn btn-primary-icon', enabled: false, }, { @@ -54,7 +54,7 @@ let _defaultToolBarButtons = [ text: '', toggled: false, toggleClass: '', - parentClass: 'pg-toolbar-btn btn-secondary', + parentClass: 'pg-toolbar-btn btn-primary-icon', enabled: false, }, ]; diff --git a/web/pgadmin/browser/static/js/wizard.js b/web/pgadmin/browser/static/js/wizard.js index 408b4fff8..af4cd1601 100644 --- a/web/pgadmin/browser/static/js/wizard.js +++ b/web/pgadmin/browser/static/js/wizard.js @@ -129,7 +129,7 @@ define([ '
' + '
' + ' ' + '
' + '
' + diff --git a/web/pgadmin/browser/static/scss/_wizard.scss b/web/pgadmin/browser/static/scss/_wizard.scss index 8a9c31d14..67e2b8c2c 100644 --- a/web/pgadmin/browser/static/scss/_wizard.scss +++ b/web/pgadmin/browser/static/scss/_wizard.scss @@ -2,10 +2,10 @@ padding: 6px!important; min-height: $title-height; max-height: $title-height; - background-color: $color-primary; + background-color: $alert-header-bg; font-size: $font-size-base; font-weight: bold; - color: $color-primary-fg; + color: $alert-header-fg; overflow: hidden; white-space: nowrap; border-radius: 0rem; diff --git a/web/pgadmin/dashboard/templates/dashboard/database_dashboard.html b/web/pgadmin/dashboard/templates/dashboard/database_dashboard.html index 5b19a6402..0f9e7d80b 100644 --- a/web/pgadmin/dashboard/templates/dashboard/database_dashboard.html +++ b/web/pgadmin/dashboard/templates/dashboard/database_dashboard.html @@ -85,7 +85,7 @@
- diff --git a/web/pgadmin/dashboard/templates/dashboard/server_dashboard.html b/web/pgadmin/dashboard/templates/dashboard/server_dashboard.html index 709bccec0..08addc1db 100644 --- a/web/pgadmin/dashboard/templates/dashboard/server_dashboard.html +++ b/web/pgadmin/dashboard/templates/dashboard/server_dashboard.html @@ -89,7 +89,7 @@ - diff --git a/web/pgadmin/misc/bgprocess/static/js/bgprocess.js b/web/pgadmin/misc/bgprocess/static/js/bgprocess.js index daa51ef05..c2b81e778 100644 --- a/web/pgadmin/misc/bgprocess/static/js/bgprocess.js +++ b/web/pgadmin/misc/bgprocess/static/js/bgprocess.js @@ -38,21 +38,21 @@ define('misc.bgprocess', [
-
<%-status_text%>
+
<%-status_text%>
`), failed_status_tpl: _.template(`
-
<%-status_text%>
+
<%-status_text%>
`), other_status_tpl: _.template(`
-
<%-status_text%>
+
<%-status_text%>
`), initialize: function(info, notify) { _.extend(this, { diff --git a/web/pgadmin/misc/file_manager/static/js/utility.js b/web/pgadmin/misc/file_manager/static/js/utility.js index ce5f04b5b..c9f32fcde 100644 --- a/web/pgadmin/misc/file_manager/static/js/utility.js +++ b/web/pgadmin/misc/file_manager/static/js/utility.js @@ -1542,7 +1542,7 @@ define([ // we remove simple file upload element $('.file-input-container').remove(); $('.upload').remove(); - $('.create').before(' '); + $('.create').before(' '); $('#uploader .upload').off().on('click', function() { // we create prompt diff --git a/web/pgadmin/misc/file_manager/static/scss/_file_manager.scss b/web/pgadmin/misc/file_manager/static/scss/_file_manager.scss index b259df978..d2682f686 100644 --- a/web/pgadmin/misc/file_manager/static/scss/_file_manager.scss +++ b/web/pgadmin/misc/file_manager/static/scss/_file_manager.scss @@ -53,7 +53,8 @@ .file_listing #contents.grid li.selected { cursor: pointer; border: $table-hover-border; - background: $table-hover-bg-color; + background: $grid-hover-bg-color; + color: $grid-hover-fg-color; } .fileinfo #contents li span.less_text { @@ -317,6 +318,16 @@ cursor: pointer; } +.cap_select_file:hover { + color: $grid-hover-fg-color !important; + .fm_folder_list, + .fm_folder_grid, + .fm_file_grid, + .fm_file_list { + color: $grid-hover-fg-color !important; + } +} + .add-folder-icon { position: relative; top: -8px; diff --git a/web/pgadmin/misc/file_manager/templates/file_manager/index.html b/web/pgadmin/misc/file_manager/templates/file_manager/index.html index 99ef0acf9..b3766b216 100644 --- a/web/pgadmin/misc/file_manager/templates/file_manager/index.html +++ b/web/pgadmin/misc/file_manager/templates/file_manager/index.html @@ -8,11 +8,11 @@
- - @@ -24,32 +24,32 @@
- - - -
- -
@@ -67,14 +67,14 @@
{{ _('Are you sure you want to delete this item?') }} - +
{{ _('Are you sure you want to replace this file?') }} - +
diff --git a/web/pgadmin/misc/static/explain/js/explain.js b/web/pgadmin/misc/static/explain/js/explain.js index 3ebfee32b..bea5e7b52 100644 --- a/web/pgadmin/misc/static/explain/js/explain.js +++ b/web/pgadmin/misc/static/explain/js/explain.js @@ -1285,7 +1285,7 @@ define('pgadmin.misc.explain', [ role: 'group', }).appendTo(graphicalContainer), zoomInBtn = $('', { - class: 'btn btn-secondary pg-explain-zoom-btn', + class: 'btn btn-primary-icon pg-explain-zoom-btn', title: gettext('Zoom in'), 'aria-label': gettext('Zoom in'), tabindex: 0, @@ -1294,7 +1294,7 @@ define('pgadmin.misc.explain', [ class: 'fa fa-search-plus', })), zoomToNormal = $('', { - class: 'btn btn-secondary pg-explain-zoom-btn', + class: 'btn btn-primary-icon pg-explain-zoom-btn', title: gettext('Zoom to original'), 'aria-label': gettext('Zoom to original'), tabindex: 0, @@ -1303,7 +1303,7 @@ define('pgadmin.misc.explain', [ class: 'fa fa-arrows-alt', })), zoomOutBtn = $('', { - class: 'btn btn-secondary pg-explain-zoom-btn', + class: 'btn btn-primary-icon pg-explain-zoom-btn', title: gettext('Zoom out'), 'aria-label': gettext('Zoom out'), tabindex: 0, @@ -1318,7 +1318,7 @@ define('pgadmin.misc.explain', [ }).appendTo(graphicalContainer), downloadBtn = $('', { id: 'btn-explain-download', - class: 'btn btn-secondary pg-explain-download-btn', + class: 'btn btn-primary-icon pg-explain-download-btn', title: gettext('Download'), 'aria-label': gettext('Download'), tabindex: 0, @@ -1347,7 +1347,7 @@ define('pgadmin.misc.explain', [ $('', { id: 'btn-explain-stats', - class: 'btn btn-secondary pg-explain-stats-btn', + class: 'btn btn-primary-icon pg-explain-stats-btn', title: gettext('Statistics'), 'aria-label': gettext('Statistics'), tabindex: 0, diff --git a/web/pgadmin/misc/static/explain/scss/_explain.scss b/web/pgadmin/misc/static/explain/scss/_explain.scss index ff32fb20c..56518d0f7 100644 --- a/web/pgadmin/misc/static/explain/scss/_explain.scss +++ b/web/pgadmin/misc/static/explain/scss/_explain.scss @@ -49,6 +49,7 @@ div.tab-pane[data-explain-tabpanel=table] { td.pga-ex-inclusive-2, td.pga-ex-rowsx-2 { background-color: $explain-sev-2-bg; + color: $explain-sev-2-color; } td.pga-ex-exclusive-3, diff --git a/web/pgadmin/preferences/static/js/preferences.js b/web/pgadmin/preferences/static/js/preferences.js index dd96717d6..2afa9fe36 100644 --- a/web/pgadmin/preferences/static/js/preferences.js +++ b/web/pgadmin/preferences/static/js/preferences.js @@ -420,7 +420,7 @@ define('pgadmin.preferences', [ buttons: [{ text: '', key: 112, - className: 'btn btn-secondary pull-left fa fa-question pg-alertify-icon-button', + className: 'btn btn-primary-icon pull-left fa fa-question pg-alertify-icon-button', attrs: { name: 'dialog_help', type: 'button', diff --git a/web/pgadmin/static/js/alertify.pgadmin.defaults.js b/web/pgadmin/static/js/alertify.pgadmin.defaults.js index 8b0f8acd6..1ed7712f9 100644 --- a/web/pgadmin/static/js/alertify.pgadmin.defaults.js +++ b/web/pgadmin/static/js/alertify.pgadmin.defaults.js @@ -442,7 +442,7 @@ define([
-
${message}
+
${message}
`; return alertify.orig_success(alertMessage, timeout, callback); }, @@ -452,7 +452,7 @@ define([
-
${message}
+
${message}
`; return alertify.orig_error(alertMessage, timeout, callback); }, @@ -462,7 +462,7 @@ define([
-
${message}
+
${message}
`; var alert = alertify.notify(alertMessage, timeout); return alert; diff --git a/web/pgadmin/static/js/backform.pgadmin.js b/web/pgadmin/static/js/backform.pgadmin.js index 9a259c649..6be16b783 100644 --- a/web/pgadmin/static/js/backform.pgadmin.js +++ b/web/pgadmin/static/js/backform.pgadmin.js @@ -1298,7 +1298,7 @@ define([ gridHeader = _.template([ '
', ' <%-label%>', - ' ', + ' ', '
', ].join('\n')), gridBody = $('
').append( @@ -1585,7 +1585,7 @@ define([ var self = this, gridHeader = ['
', ' ' + data.label + '', - ' ', + ' ', '
', ].join('\n'), gridBody = $('
').append(gridHeader); @@ -2728,7 +2728,7 @@ define([ '
', ' <%=readonly ? "readonly aria-readonly=true" : ""%> <%=required ? "required" : ""%> />', '
', - '', + '', '
', '
', '<% if (helpMessage && helpMessage.length) { %>', diff --git a/web/pgadmin/static/js/sqleditor/filter_dialog.js b/web/pgadmin/static/js/sqleditor/filter_dialog.js index 4263d4280..b275b8641 100644 --- a/web/pgadmin/static/js/sqleditor/filter_dialog.js +++ b/web/pgadmin/static/js/sqleditor/filter_dialog.js @@ -65,7 +65,7 @@ let FilterDialog = { buttons: [{ text: '', key: 112, - className: 'btn btn-secondary pull-left fa fa-question pg-alertify-icon-button', + className: 'btn btn-primary-icon pull-left fa fa-question pg-alertify-icon-button', attrs: { name: 'dialog_help', type: 'button', diff --git a/web/pgadmin/static/scss/_aci_tree.overrides.scss b/web/pgadmin/static/scss/_aci_tree.overrides.scss index 88e0d92c4..44ee7c634 100644 --- a/web/pgadmin/static/scss/_aci_tree.overrides.scss +++ b/web/pgadmin/static/scss/_aci_tree.overrides.scss @@ -10,7 +10,7 @@ .aciTree, .aciTree.aciTreeFullRow { & .aciTreeButton, & .aciTreePush, & .aciTreeItem, & .aciTreeIcon, & .aciTreeText, & .aciTreeColumn { - color: $color-fg; + color: $tree-text-fg; } .aciTreeLi { @@ -53,6 +53,15 @@ border-radius: none !important; color: $tree-fg-selected; } + + & .aciTreeText { + color: $tree-text-hover-fg; + } + + & .aciTreePush { + color: $tree-text-hover-fg; + } + } .aciTreeItem { @@ -77,6 +86,15 @@ border-radius: none !important; color: $tree-fg-hover; } + + & .aciTreeText { + color: $tree-text-hover-fg; + } + + & .aciTreePush { + color: $tree-text-hover-fg; + } + } &.aciTreeFocus { diff --git a/web/pgadmin/static/scss/_alert.scss b/web/pgadmin/static/scss/_alert.scss index 1df081277..dac552bed 100644 --- a/web/pgadmin/static/scss/_alert.scss +++ b/web/pgadmin/static/scss/_alert.scss @@ -44,7 +44,7 @@ align-self: center; // To make sure IE picks up the correct font font-family: $font-family-primary; - color: $color-fg; + color: $alert-color-fg; } .alert-info { diff --git a/web/pgadmin/static/scss/_alertify.overrides.scss b/web/pgadmin/static/scss/_alertify.overrides.scss index 43747df15..498965f59 100644 --- a/web/pgadmin/static/scss/_alertify.overrides.scss +++ b/web/pgadmin/static/scss/_alertify.overrides.scss @@ -5,10 +5,10 @@ //margin is calculated with -$alertify-borderremove-margin, adjust the header min-height: $title-height + $alertify-borderremove-margin !important; max-height: $title-height + $alertify-borderremove-margin !important; - background-color: $color-primary; + background-color: $alert-header-bg; font-size: $font-size-base; font-weight: bold; - color: $color-primary-fg; + color: $alert-header-fg; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; @@ -19,12 +19,12 @@ margin: -24px - $alertify-borderremove-margin; //-24px is default by alertify margin-bottom: 0px; &:hover { - background-color: $color-primary; + background-color: $alert-header-bg; } } .ajs-body { - background-color: $color-bg !important; + background-color: $alert-dialog-body-bg !important; color: $color-fg !important; } @@ -123,7 +123,7 @@ border: $panel-border; border-radius: $panel-border-radius; box-shadow: $dialog-box-shadow; - background-color: $color-bg !important; + background-color: $alert-dialog-body-bg !important; color: $color-fg !important; } .ajs-content { @@ -146,7 +146,7 @@ width: 20px; height: 20px; border: $input-btn-border-width solid $btn-secondary-border !important; - background-color: $color-secondary !important; + background-color: $alert-action-bg !important; font-size: 12px; border-radius: $btn-border-radius; position: relative; @@ -157,7 +157,7 @@ } .ajs-pin:hover, .ajs-maximize:hover, .ajs-close:hover { - background-color: $btn-secondary-hover-bg !important; + background-color: $alert-action-hover-bg !important; } .alertify.ajs-modeless.ajs-pinnable .ajs-commands button.ajs-pin { @@ -280,6 +280,9 @@ } } +.alert-text-body { + color: $alert-color-fg; +} .ajs-commands, .ajs-close { button { diff --git a/web/pgadmin/static/scss/_backgrid.overrides.scss b/web/pgadmin/static/scss/_backgrid.overrides.scss index 9bb383d8b..4fc1f5f19 100644 --- a/web/pgadmin/static/scss/_backgrid.overrides.scss +++ b/web/pgadmin/static/scss/_backgrid.overrides.scss @@ -169,6 +169,12 @@ table.backgrid { font-weight: normal; } +.backgrid tr:hover { + .label { + color: $grid-hover-fg-color; + } +} + .subnode { border: $panel-border; background: $color-bg; diff --git a/web/pgadmin/static/scss/_bootstrap.overrides.scss b/web/pgadmin/static/scss/_bootstrap.overrides.scss index 00fe2f1b8..1314eb53a 100644 --- a/web/pgadmin/static/scss/_bootstrap.overrides.scss +++ b/web/pgadmin/static/scss/_bootstrap.overrides.scss @@ -100,17 +100,84 @@ legend { * Refer file : bootstrap/scss/mixins/_buttons.scss */ .btn-secondary { - @include button-variant($color-secondary, $btn-secondary-border, $btn-secondary-hover-bg); + @include button-variant($btn-secondary-bg, $btn-secondary-border, $btn-secondary-hover-bg, $hover-border: $btn-secondary-border-hover-bg); + @include hover() { + color: $btn-secondary-hover-fg !important; + } &.disabled, &:disabled { + color: $btn-secondary-disabled-fg !important; + border-color: $btn-secondary-disabled-bg !important; + } + color: $btn-secondary-fg !important; + } -/** Overriding secondary button of bootstrap **/ +/** Overriding ternary button of bootstrap **/ /* Used Bootstrap 4 Mixin button-variant * Refer file : bootstrap/scss/mixins/_buttons.scss */ -.btn-ternary { - @include button-variant($color-ternary, $btn-ternary-border, $btn-ternary-hover-bg); + .btn-ternary { + @include button-variant($color-ternary, $color-fg); + border-color: $color-ternary; + } + +.btn-ternary[disabled] { + background-color: $btn-ternary-disabled-bg !important; + color: $btn-ternary-disabled-fg !important; + border-color: btn-ternary-disabled-border-color !important; + + label { + background-color: $btn-ternary-disabled-bg !important; + color: $btn-ternary-disabled-fg !important; + border-color: btn-ternary-disabled-border-color !important; + } + } +.btn-primary { + @include button-variant($color-primary, $color-primary, $hover-background: $btn-primary-hover-bg, $hover-border: $btn-primary-border-hover-bg); + & .disabled, + &:disabled { + background-color: $btn-primary-disabled-bg; + border-color: $btn-primary-disabled-bg; + } +} + +.btn-primary-icon { + @include button-variant($btn-primary-icon-bg, $btn-primary-icon-border-color); + @include hover() { + background-color: $btn-primary-icon-hover-bg; + color: $btn-primary-icon-hover-fg; + } &.disabled, &:disabled { + color: $btn-primary-icon-disable-fg !important; + border-color: $btn-primary-icon-border-disable-bg !important; + background-color: $btn-primary-icon-disable-bg; + } + + border-color: $btn-primary-icon-border-color; +} + +.btn-success { + @include button-variant($color-success, $color-fg); + border-color: $color-success; + @include hover() { + color: $color-success-hover-fg !important; + border-color: $color-success !important; + } +} + +.btn-success[disabled] { + background-color: $color-success-disabled-bg !important; + border-color: $color-success-disabled-bg !important; + color: $color-success-disabled-fg !important; + + label { + background-color: $color-success-disabled-bg !important; + border-color: $color-success-disabled-bg !important; + color: $color-success-disabled-fg !important; + } +} + + .form-group fieldset { background-color: $color-gray-lighter; border-color: $color-gray-lighter; @@ -167,6 +234,9 @@ legend { .card-header { padding: $card-header-padding; font-weight: bold; + background-color: $card-header-bg; + color: $card-header-fg; + border-color: $card-header-border-color; } .table { @@ -228,6 +298,7 @@ legend { & > tbody { & > tr:not(.nohover):not(.empty):hover, tr.selected { background-color: $table-hover-bg-color; + color: $grid-hover-fg-color; & > td { border-top: $table-hover-border; border-bottom: $table-hover-border; @@ -236,6 +307,7 @@ legend { & > tr.nohover { background-color: transparent; + color: $input-color; } } } @@ -330,6 +402,10 @@ td.switch-cell > div.toggle { &:focus:checked ~ .custom-control-label::before { border-color: $custom-control-indicator-focus-border-color; } + + &:hover { + border-color: $custom-control-indicator-focus-border-color; + } } @media (max-width: 992px) { diff --git a/web/pgadmin/static/scss/_codemirror.overrides.scss b/web/pgadmin/static/scss/_codemirror.overrides.scss index b2d3900c9..90a8c4c91 100644 --- a/web/pgadmin/static/scss/_codemirror.overrides.scss +++ b/web/pgadmin/static/scss/_codemirror.overrides.scss @@ -168,7 +168,7 @@ } .CodeMirror .CodeMirror-selected { - background: $color-primary-light !important; + background: $sql-editor-selection-bg !important; } .CodeMirror-activeline-background { @@ -200,3 +200,7 @@ } } } + +.bg-gray-lighter { + background-color: $sql-editor-disable-bg !important; +} diff --git a/web/pgadmin/static/scss/_pgadmin.style.scss b/web/pgadmin/static/scss/_pgadmin.style.scss index 53e09161e..0a2b1b6a7 100644 --- a/web/pgadmin/static/scss/_pgadmin.style.scss +++ b/web/pgadmin/static/scss/_pgadmin.style.scss @@ -368,7 +368,7 @@ display: block; text-align: left; cursor: pointer; - background-color: $header-bg; + background-color: $badge-header-bg; padding: 7px; font-size: inherit; border-bottom: $panel-border; @@ -866,7 +866,7 @@ body { } .editor-toolbar { - background: $sql-gutters-bg; + background: $editor-toolbar-bg; padding: 0.05rem 0.25rem; } diff --git a/web/pgadmin/static/scss/_select2.overrides.scss b/web/pgadmin/static/scss/_select2.overrides.scss index 31cf90c14..c17225b51 100644 --- a/web/pgadmin/static/scss/_select2.overrides.scss +++ b/web/pgadmin/static/scss/_select2.overrides.scss @@ -4,13 +4,13 @@ } .select2-container--default .select2-results__option[aria-selected=true] { - background-color: $tree-bg-selected; - color: $tree-fg-selected; + background-color: $select2-container-bg-selected; + color: $select2-container-fg-selected; } .select2-container--default .select2-results__option--highlighted { - background-color: $tree-bg-hover !important; - color: $tree-fg-hover !important; + background-color: $select2-container-hover-bg !important; + color: $select2-container-hover-fg !important; } .select2-container--default .select2-selection--multiple { @@ -27,7 +27,7 @@ line-height: 2; & .select2-selection__choice__remove { - color: $dropdown-link-hover-bg; + color: $dropdown-link-remove-color; margin-right: 0.25rem; } } diff --git a/web/pgadmin/static/scss/_webcabin.pgadmin.scss b/web/pgadmin/static/scss/_webcabin.pgadmin.scss index 5cf5c0571..291135e90 100644 --- a/web/pgadmin/static/scss/_webcabin.pgadmin.scss +++ b/web/pgadmin/static/scss/_webcabin.pgadmin.scss @@ -38,7 +38,7 @@ /* darken % taken from bootstrap - button_variant */ .wcFrameButton:hover, .wcFrameButtonHover, .wcFrameButton:focus { - background-color: $btn-secondary-hover-bg; + background-color: $btn-frame-close-bg; } .wcFrameButton.disabled { @@ -74,7 +74,7 @@ } .wcPanelTab, .wcFrameTitle{ - color: $color-fg; + color: $panel-color-fg; padding: $tabs-padding; margin: 0px; } diff --git a/web/pgadmin/static/scss/resources/_default.style.scss b/web/pgadmin/static/scss/resources/_default.style.scss index 46030715e..186f20051 100644 --- a/web/pgadmin/static/scss/resources/_default.style.scss +++ b/web/pgadmin/static/scss/resources/_default.style.scss @@ -113,15 +113,15 @@ } .text-danger { - color: $color-danger; + color: $color-danger-fg; } .text-primary { - color: $color-primary; + color: $color-primary-fg; } .text-success { - color: $color-success; + color: $color-success-fg; } .text-bold { diff --git a/web/pgadmin/static/scss/resources/_default.variables.scss b/web/pgadmin/static/scss/resources/_default.variables.scss index 670e6ecf2..a854cc382 100644 --- a/web/pgadmin/static/scss/resources/_default.variables.scss +++ b/web/pgadmin/static/scss/resources/_default.variables.scss @@ -18,6 +18,7 @@ $color-ternary: #5b6d7c !default; $color-ternary-fg: $white !default; $color-danger: #e53935 !default; +$color-danger-icon-fg: $color-danger !default; $color-danger-fg: $white !default; $color-danger-light: #F39999 !default; $color-danger-lighter: #FAECEC !default; @@ -26,6 +27,10 @@ $color-success: #26852B !default; $color-success-fg: $black !default; $color-success-light: #D9ECDA !default; +$color-success-disabled-fg: $color-bg !default; +$color-success-disabled-bg: $color-success !default; +$color-success-hover-fg: $white !default; + $color-warning: #eea236 !default; $color-warning-fg: $black !default; $color-warning-light: #fce5c5 !default; @@ -61,6 +66,7 @@ $border-radius: 0.25rem; $text-muted: #667185 !default; $header-bg: $color-bg !default; +$badge-header-bg: $header-bg !default; $tree-font-size: 0.815rem; @@ -71,14 +77,14 @@ $alert-danger-color: $color-danger !default; $alert-success-bg: $color-success-light !default; $alert-success-color: $color-success !default; -$navbar-bg: $color-primary; +$navbar-bg: $color-primary !default; $navbar-font-size: 0.925rem; $navbar-height: 32px; $navbar-dropdown-top: 100%; -$navbar-dark-color: $color-primary-fg; +$navbar-dark-color: $color-primary-fg !default; $navbar-dark-hover-color: $color-primary-fg; -$navbar-dark-active-color: $color-primary-fg; -$navbar-dark-disabled-color: $color-gray; +$navbar-dark-active-color: $color-primary-fg !default; +$navbar-dark-disabled-color: $color-gray !default; $navbar-toggler-padding-y: 0.25rem; //no-change @@ -92,6 +98,7 @@ $dropdown-color: $color-fg; $dropdown-link-color: $color-fg; $dropdown-link-hover-color: $color-primary-fg; $dropdown-link-hover-bg: $color-primary; +$dropdown-link-remove-color: $color-primary !default; $dropdown-border-color: $border-color; $dropdown-box-shadow: 0 0.125rem 0.5rem rgba($shadow-base-color, .275); $dropdown-divider-bg: $dropdown-border-color; @@ -113,9 +120,9 @@ $btn-transition: color .05s ease-in-out, background-color .05s ease-in-out, bord $card-spacer-y: 0rem; $card-spacer-x: 0rem; $card-border-radius: $border-radius; -$card-border-color: $border-color; -$card-cap-bg: $header-bg; -$card-bg: $color-bg; +$card-border-color: $border-color !default; +$card-cap-bg: $header-bg !default; +$card-bg: $color-bg !default; $navbar-padding-y: 0rem; $navbar-padding-x: 0rem; @@ -135,9 +142,9 @@ $nav-tabs-link-active-border-color: none; $table-cell-padding: 0.25rem; $table-header-cell-padding: 0.75rem; -$table-hover-bg: none; //we will use our own classes +$table-hover-bg: none !default; //we will use our own classes $table-hover-color: #000 !default; -$table-active-bg: $color-primary-light; +$table-active-bg: $color-primary-light !default; $table-border-width: $border-width; $table-border-color: $border-color; $table-head-bg: $color-primary; @@ -162,9 +169,10 @@ $btn-danger-color: $color-danger-fg; $component-active-bg: $color-primary; $input-btn-focus-width: .2rem; $input-btn-focus-color: rgba($component-active-bg, .25); -$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color; +$input-btn-focus-shadow-color: $input-btn-focus-color !default; +$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-shadow-color; $input-focus-bg: $input-bg; -$input-focus-border-color: lighten($component-active-bg, 25%); +$input-focus-border-color: lighten($component-active-bg, 25%) !default; $input-focus-color: $input-color; $input-focus-width: $input-btn-focus-width; $input-focus-box-shadow: $input-btn-focus-box-shadow; @@ -186,12 +194,13 @@ $color-editor-foldmarker: #0000FF !default; $color-editor-activeline: #50B0F0 !default; $active-color: $color-primary !default; -$active-border: 3px solid $active-color; +$active-border: 3px solid $active-color !default; $panel-border-width: $border-width; -$panel-border-color: $border-color; +$panel-border-color: $border-color !default; $panel-border-radius: $border-radius; $panel-border: $panel-border-width solid $panel-border-color !important; $panel-border-dark: $panel-border-width solid $border-color-dark !important; +$panel-color-fg: $color-fg !default; $tabs-padding: 5px 10px 2px; $title-height: ($line-height-base*16px) + 5px + 2px + $border-width; $footer-padding: 0.5rem; @@ -207,13 +216,16 @@ $table-bg: $color-bg !default; $table-bg-selected: $color-primary-light; $table-hover-border-color: $color-primary; $table-hover-border: $panel-border-width solid $color-primary !important; -$table-hover-bg-color: $color-primary-light; -$datagrid-bg: $color-gray-light; +$table-hover-bg-color: $color-primary-light !default; +$datagrid-bg: $color-gray-light !default; +$datagrid-selected-color : $color-primary-fg !default; -$tree-fg-hover: $color-fg; -$tree-bg-hover: $color-gray-light; -$tree-fg-selected: $color-fg; -$tree-bg-selected: $color-primary-light; +$tree-text-fg: $color-fg !default; +$tree-text-hover-fg: $color-fg !default; +$tree-fg-hover: $color-fg !default; +$tree-bg-hover: $color-gray-light !default; +$tree-fg-selected: $color-fg !default; +$tree-bg-selected: $color-primary-light !default; $sql-grid-data-cell-fg: $input-color; $sql-grid-data-cell-bg: $input-bg; @@ -221,19 +233,21 @@ $sql-grid-title-cell-fg: $input-color; $sql-grid-title-cell-bg: $input-bg; $sql-title-padding: 3px; -$sql-title-bg: $color-ternary; -$sql-title-fg: $color-ternary-fg; +$sql-title-bg: $color-ternary !default; +$sql-title-fg: $color-ternary-fg !default; // Toolbar + editor title heights + title bottom border $sql-editor-panel-top: $title-height + $text-height-calc*16px + $sql-title-padding*2 + $panel-border-width - 0.5px; -$sql-gutters-bg: $datagrid-bg; -$sql-history-detail-bg: $color-gray-lighter; +$sql-editor-disable-bg: $color-gray-lighter !default; +$sql-editor-selection-bg: $color-primary-light !default; +$sql-gutters-bg: $datagrid-bg !default; +$sql-history-detail-bg: $color-gray-lighter !default; $sql-history-success-bg: $color-primary-light; -$sql-history-success-fg: $active-color; +$sql-history-success-fg: $active-color !default; $sql-history-error-bg: $color-danger-lighter; $sql-history-error-fg: $color-danger; $sql-hint-bg: $color-bg; $sql-hint-active-bg: $color-primary; -$sql-hint-active-fg: $white; +$sql-hint-active-fg: $white !default; $sql-bracket-match-fg: #5b6d7c; $sql-bracket-match-bg: #f5d2af; @@ -243,19 +257,45 @@ $explain-sev-3-bg: #EE8800 !default; $explain-sev-4-bg: #880000 !default; $explain-sev-3-color: #FFFFFF !default; $explain-sev-4-color: #FFFFFF !default; +$explain-sev-2-color: $black !default; $dialog-box-shadow: 0 0.5rem 3rem $shadow-base-color; $alert-icon-color: $white; +$alert-header-bg: $color-primary !default; +$alert-header-fg: $white !default; +$alert-action-bg: $color-secondary !default; +$alert-action-hover-bg: $color-gray-light !default; $alertify-borderremove-margin: $panel-border-width; +$alert-color-fg: $color-fg !default; +$alert-dialog-body-bg: $color-bg !default; -$btn-secondary-border: $color-gray; -$btn-secondary-hover-bg: $color-gray-light; +$btn-primary-hover-bg: darken($color-primary, 7.5%) !default; +$btn-primary-border-hover-bg: darken($color-primary, 7.5%) !default; +$btn-primary-disabled-bg: $color-primary !default; + +$btn-secondary-bg: $color-secondary !default; +$btn-secondary-border-hover-bg: $color-gray !default; +$btn-secondary-fg: $color-fg !default; +$btn-secondary-hover-fg: $color-fg !default; +$btn-secondary-border: $color-gray !default; +$btn-secondary-hover-bg: $color-gray-light !default; +$btn-secondary-disabled-bg: $color-gray !default; +$btn-secondary-disabled-fg: $color-fg !default; + +$btn-frame-close-bg:$btn-secondary-hover-bg !default; $btn-ternary-border: $color-ternary !default; $btn-ternary-hover-bg: darken($color-ternary, 7.5%) !default; +$btn-ternary-disabled-bg: $color-ternary !default; +$btn-ternary-disabled-fg: $color-bg !default; +$btn-ternary-disabled-border-color: $btn-ternary-disabled-bg !default; + $card-header-padding : 0.25rem 0.5rem; +$card-header-bg: $color-bg !default; +$card-header-fg: $color-fg !default; +$card-header-border-color: $border-color !default; $no-border-radius: 0px !important; $btn-checkbox-padding: $input-btn-padding-y $input-btn-padding-x; @@ -278,8 +318,30 @@ $loader-icon-small: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='ut $schemadiff-diff-row-color: #fff9c4 !default; $schemadiff-source-row-color: #ffebee !default; $schemadiff-target-row-color: #fbe3bf !default; +$schema-diff-color-fg: $input-color !default; /* Custom controls bootstrap changes */ -$custom-forms-transition: none; -$custom-control-indicator-focus-border-color: $input-focus-border-color; -$custom-control-indicator-border-color: $input-border-color; +$custom-forms-transition: none !default; +$custom-control-indicator-focus-border-color: $input-focus-border-color !default; +$custom-control-indicator-border-color: $input-border-color !default; + +$select2-container-hover-bg: $tree-bg-hover !default; +$select2-container-hover-fg: $tree-fg-hover !default; +$select2-container-bg-selected: $tree-bg-selected !default; +$select2-container-fg-selected: $tree-fg-selected !default; + +$btn-primary-icon-bg: $color-bg !default; +$btn-primary-icon-fg: $color-fg !default; +$btn-primary-icon-hover-fg: $color-fg !default; +$btn-primary-icon-hover-bg: $color-gray-light !default; +$btn-primary-icon-border-color: $color-gray !default; +$btn-primary-icon-border-disable-bg: $color-gray !default; +$btn-primary-icon-disable-fg: $color-fg !default; +$btn-primary-icon-disable-bg: $color-bg !default; + +$editor-toolbar-bg: $sql-gutters-bg !default; +$grid-hover-bg-color: $table-hover-bg-color !default; +$grid-hover-fg-color: $color-fg !default; + +$btn-copied-color-fg: $active-color !default; + diff --git a/web/pgadmin/static/scss/resources/dark/_theme.variables.scss b/web/pgadmin/static/scss/resources/dark/_theme.variables.scss index 8a9fb7aa9..ad85c845d 100644 --- a/web/pgadmin/static/scss/resources/dark/_theme.variables.scss +++ b/web/pgadmin/static/scss/resources/dark/_theme.variables.scss @@ -20,6 +20,9 @@ $color-success: #26852B; $color-success-fg: $black; $color-success-light: #2B472C; +$color-success-disabled-fg: $color-fg; +$color-success-disabled-bg: $color-success; + $color-warning: #eea236; $color-warning-fg: $black; $color-warning-light: #b18d5a; @@ -56,6 +59,7 @@ $alert-danger-bg: $color-bg; $alert-danger-color: $color-danger; $alert-success-bg: $color-bg; $alert-success-color: $color-success; +$alert-header-fg: $color-fg; $table-bg: $color-gray-lighter; @@ -77,6 +81,7 @@ $explain-sev-3-bg: #c2812b; $explain-sev-4-bg: #880000; $explain-sev-3-color: $color-fg; $explain-sev-4-color: $color-fg; +$explain-sev-2-color: $black; $negative-bg: $color-bg; @@ -88,3 +93,24 @@ $loader-icon-small: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='ut $schemadiff-diff-row-color: #807a48 !default; $schemadiff-source-row-color: #402025 !default; $schemadiff-target-row-color: #6b5438 !default; + +$btn-secondary-fg: $white; +$btn-secondary-border-hover-bg: $color-gray-light; +$btn-secondary-hover-fg: $white; + +$card-header-bg: $color-gray-lighter; +$card-header-fg: $color-fg; +$card-header-border-color: $border-color; + + +$btn-primary-icon-bg: $color-secondary; +$btn-primary-icon-fg: $white; +$btn-primary-icon-hover-fg: $white; +$btn-primary-icon-hover-bg: $color-gray-light; +$btn-primary-icon-border-color: $color-gray; +$btn-primary-icon-border-disable-bg: $color-gray; +$btn-primary-icon-disable-fg: $white; +$btn-primary-icon-disable-bg: $color-secondary; + +$btn-ternary-disabled-fg: $color-fg; +$color-success-hover-fg: $color-fg; diff --git a/web/pgadmin/static/scss/resources/high_contrast/_theme.variables.scss b/web/pgadmin/static/scss/resources/high_contrast/_theme.variables.scss new file mode 100644 index 000000000..18edcc9b2 --- /dev/null +++ b/web/pgadmin/static/scss/resources/high_contrast/_theme.variables.scss @@ -0,0 +1,201 @@ +$white: #FFFFFF; +$color-bg: #010B15; +$color-fg: $white; + +$color-primary: #84D6FF; +$color-primary-fg: $color-bg; +$color-primary-light: #84D6FF; +$color-primary-light-fg: $color-bg; +$color-secondary: #6B6B6B; + +$color-ternary: #c9d0d7; +$color-ternary-fg: $color-bg; + +$color-danger: #EE7A55; +$color-danger-icon-fg: $color-bg; +$color-danger-fg: $color-bg; +$color-danger-light: #EE7A55; +$color-danger-lighter: #EE7A55; + +$color-success: #45D48A; +$color-success-fg: $color-bg; +$color-success-light: #45D48A; + +$color-success-disabled-fg: $color-fg; +$color-success-disabled-bg: $color-bg; +$color-success-hover-fg: #010B15; + +$color-warning: #F4D35E; +$color-warning-fg: $color-bg; +$color-warning-light: #F4D35E; + + +$color-gray-dark: #010B15; +$color-gray: #1F2932; +$color-gray-light: #2D3A48; +$color-gray-lighter: #8B9CAD; + +$sql-gutters-bg: $color-gray-light; +$sql-title-bg: #1F2932; +$sql-title-fg: $color-fg; +$sql-editor-disable-bg: $color-gray; +$sql-editor-selection-bg: $color-gray; +$sql-history-detail-bg: $color-gray; +$sql-history-success-fg: #010B15; + +$color-brand: $color-primary; + +$border-color: #A6B7C8; + +// $shadow-base-color: #C9D0D7; +$shadow-base-color: transparent; + +$text-muted: #8b9cad; + +$header-bg: $color-bg; +$card-cap-bg: $color-bg; +$badge-header-bg: $color-bg; + +$alert-primary-bg: $color-primary; +$alert-primary-color: $color-bg; +$alert-danger-bg: $color-danger; +$alert-danger-color: $color-bg !important; +$alert-success-bg̰: $color-success; +$alert-success-color: $color-bg; + +$alert-color-fg: $color-bg; + +$negative-bg: $color-bg; + +$popover-bg: $color-gray-dark; +$popover-body-color: $color-fg; + +$table-hover-color: $color-bg; +$table-hover-bg: $color-fg !important; +$table-hover-bg-color: $color-primary-light; + +$input-bg: $color-bg; +$input-color: $color-fg; +$input-border-color: $border-color; +$input-disabled-bg: $color-gray; +$input-focus-border-color: $color-primary; +$input-btn-focus-shadow-color: none; + +$color-editor-fg: $white; +$color-editor-keyword: #F8845F; +$color-editor-number: #45D48A; +$color-editor-string: #EAEA43; +$color-editor-variable: #7DC9F1; +$color-editor-variable-2: #7DC9F1; +$color-editor-builtin: #B394FC; +$color-editor-comment: #FFAD65; +$color-editor-bracket: #D6AAAA; +$color-editor-operator: $color-fg; +$color-editor-foldmarker: #FFFFFF; +$color-editor-activeline: #50B0F0; + +$active-color: $color-fg; +$active-border: 3px solid $color-primary; + +$table-bg: $color-bg; + +$explain-sev-2-bg: #EAEA43; +$explain-sev-3-bg: #FFAD65; +$explain-sev-4-bg: #EE7A55; +$explain-sev-3-color: #010B15; +$explain-sev-4-color: #010B15; +$explain-sev-2-color: #010B15; + +$btn-ternary-border: $color-ternary; +$btn-ternary-hover-bg: #a6b7c8; +$btn-ternary-disabled-bg: $color-bg; +$btn-ternary-disabled-fg: $color-fg; +$btn-ternary-disabled-border-color: $btn-ternary-disabled-fg; + +$scrollbar-base-color: #C9D0D7; + +$loader-icon : url("data:image/svg+xml;charset=UTF-8,%3c?xml version='1.0' encoding='utf-8'?%3e%3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 38 38' style='enable-background:new 0 0 38 38;' xml:space='preserve'%3e%3cstyle type='text/css'%3e .st0%7bfill:none;stroke:%23ebeef3;stroke-width:2;%7d .st1%7bfill:none;stroke:%23326690;stroke-width:2;%7d %3c/style%3e%3cg%3e%3cg transform='translate(1 1)'%3e%3ccircle class='st0' cx='18' cy='18' r='18'/%3e%3cpath class='st1' d='M36,18c0-9.9-8.1-18-18-18 '%3e%3canimateTransform accumulate='none' additive='replace' attributeName='transform' calcMode='linear' dur='0.7s' fill='remove' from='0 18 18' repeatCount='indefinite' restart='always' to='360 18 18' type='rotate'%3e%3c/animateTransform%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/svg%3e "); +$loader-icon-small: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3C!-- Generator: Adobe Illustrator 23.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 38 38' style='enable-background:new 0 0 38 38;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bfill:none;stroke:%23EBEEF3;stroke-width:5;%7D .st1%7Bfill:none;stroke:%23326690;stroke-width:5;%7D%0A%3C/style%3E%3Cg%3E%3Cg transform='translate(1 1)'%3E%3Ccircle class='st0' cx='18' cy='18' r='16'/%3E%3Cpath class='st1' d='M34,18c0-8.8-7.2-16-16-16 '%3E%3CanimateTransform accumulate='none' additive='replace' attributeName='transform' calcMode='linear' dur='0.7s' fill='remove' from='0 18 18' repeatCount='indefinite' restart='always' to='360 18 18' type='rotate'%3E%3C/animateTransform%3E%3C/path%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A"); + +$schemadiff-diff-row-color: #CFC56E; +$schemadiff-source-row-color: #EE97A5; +$schemadiff-target-row-color: #FFAD65; +$schema-diff-color-fg: #010B15; + +$tree-text-fg: $color-fg; +$tree-text-hover-fg: $color-bg; +$tree-fg-hover: $color-bg; +$tree-bg-hover: $color-fg; +$tree-fg-selected: $color-fg; +$tree-bg-selected: $color-primary-light; + +$select2-container-hover-bg: $color-primary; +$select2-container-hover-fg: $color-bg; +$select2-container-bg-selected: $color-fg; +$select2-container-fg-selected: $color-bg; + +$sql-hint-active-fg: $color-bg; + +$btn-primary-hover-bg: $color-fg; +$btn-primary-border-hover-bg: $color-fg; +$btn-primary-disabled-bg: $color-gray-lighter; + +$btn-secondary-hover-bg: transparent; +$btn-secondary-border-hover-bg: $color-fg; +$btn-secondary-bg: transparent; +$btn-secondary-fg: $color-primary; +$btn-secondary-hover-fg: $color-fg; +$btn-secondary-border: $color-primary; +$btn-secondary-disabled-bg: $color-gray-lighter; +$btn-secondary-disabled-fg: $color-gray-lighter; + +$btn-frame-close-bg: $color-gray-light; +// $dialog-box-shadow: 0rem 0rem transparent !important; + +$navbar-bg: #062F57; +$navbar-dark-color: $color-fg; +$navbar-dark-active-color: $color-fg; +// $navbar-dark-disabled-color: $color-gray !important; + +$alert-header-bg: #062F57 !important; +$alert-header-fg: $color-fg; +$alert-action-bg: $alert-header-fg; +$alert-action-hover-bg: $color-fg; +$alert-dialog-body-bg: $color-gray; + +$datagrid-bg: $color-bg; +$datagrid-selected-color : $color-primary-fg; + +$card-header-bg: #062F57 !important; +$card-header-fg: $color-fg !important; +$card-header-border-color: $card-header-bg; +$card-border-color: transparent; +$card-bg: $color-gray; + + +$custom-forms-transition: none; +$custom-control-indicator-focus-border-color: #FFFFFF !important; +$custom-control-indicator-border-color: $color-gray-lighter; + +$panel-color-fg: $color-ternary; +$panel-border-color: $color-gray; + +$btn-primary-icon-bg: $color-bg; +$btn-primary-icon-border-color: $color-fg; +$btn-primary-icon-border-disable-bg: $color-gray-lighter; +$btn-primary-icon-fg: $color-fg; +$btn-primary-icon-hover-bg: $color-fg; +$btn-primary-icon-hover-fg: $color-bg; +$btn-primary-icon-disable-fg: $color-gray-lighter; +$btn-primary-icon-disable-bg: $color-gray; + +$dropdown-link-remove-color: $color-bg; + +$editor-toolbar-bg: $color-bg; + +$grid-hover-bg-color: $white; +$grid-hover-fg-color: #010B15; + +$btn-copied-color-fg: #010B15; + + diff --git a/web/pgadmin/static/scss/resources/high_contrast/high_contrast_preview.png b/web/pgadmin/static/scss/resources/high_contrast/high_contrast_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..76347b40d694ea44459500738f0e5d44863b4ab9 GIT binary patch literal 57572 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 Bi$4GW literal 0 HcmV?d00001 diff --git a/web/pgadmin/tools/backup/static/js/backup_dialog_wrapper.js b/web/pgadmin/tools/backup/static/js/backup_dialog_wrapper.js index a45af72cc..c3610cf59 100644 --- a/web/pgadmin/tools/backup/static/js/backup_dialog_wrapper.js +++ b/web/pgadmin/tools/backup/static/js/backup_dialog_wrapper.js @@ -38,7 +38,7 @@ export class BackupDialogWrapper extends DialogWrapper { return { buttons: [{ text: '', - className: 'btn btn-secondary pull-left fa fa-info pg-alertify-icon-button', + className: 'btn btn-primary-icon pull-left fa fa-info pg-alertify-icon-button', attrs: { name: 'object_help', type: 'button', @@ -49,7 +49,7 @@ export class BackupDialogWrapper extends DialogWrapper { }, { text: '', key: 112, - className: 'btn btn-secondary pull-left fa fa-question pg-alertify-icon-button', + className: 'btn btn-primary-icon pull-left fa fa-question pg-alertify-icon-button', attrs: { name: 'dialog_help', type: 'button', diff --git a/web/pgadmin/tools/datagrid/static/js/show_data.js b/web/pgadmin/tools/datagrid/static/js/show_data.js index 04a2b46f2..8a5071d4f 100644 --- a/web/pgadmin/tools/datagrid/static/js/show_data.js +++ b/web/pgadmin/tools/datagrid/static/js/show_data.js @@ -125,7 +125,7 @@ function initFilterDialog(alertify, pgBrowser) { buttons:[{ text: '', key: 112, - className: 'btn btn-secondary pull-left fa fa-question pg-alertify-icon-button', + className: 'btn btn-primary-icon pull-left fa fa-question pg-alertify-icon-button', attrs: { name: 'dialog_help', type: 'button', diff --git a/web/pgadmin/tools/datagrid/templates/datagrid/index.html b/web/pgadmin/tools/datagrid/templates/datagrid/index.html index 21c38525c..88b3c55b5 100644 --- a/web/pgadmin/tools/datagrid/templates/datagrid/index.html +++ b/web/pgadmin/tools/datagrid/templates/datagrid/index.html @@ -15,19 +15,19 @@