From 74e6de03bef36cc3b18be09de015cf91c4f4ad4f Mon Sep 17 00:00:00 2001 From: "stefanorigano (SRI)" Date: Tue, 30 Aug 2022 14:37:28 +0000 Subject: [PATCH 01/19] [REF] web: use `$input-bg` for `o_input`s Partially remove visual discrepancies between odoo and Bootstrap fields, allowing to use BS variables to control fields' design across versions and color-schemes. This commit is preparatory to the introduction of dark-mode. task-2710677 Part-of: odoo/odoo#102868 --- addons/web/static/src/legacy/scss/fields.scss | 2 +- addons/web/static/src/scss/bootstrap_overridden.scss | 2 +- addons/web/static/src/search/search_panel/search_view.scss | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/legacy/scss/fields.scss b/addons/web/static/src/legacy/scss/fields.scss index 7fffb1ba174..fc036cdef02 100644 --- a/addons/web/static/src/legacy/scss/fields.scss +++ b/addons/web/static/src/legacy/scss/fields.scss @@ -35,7 +35,7 @@ border:$input-border-width solid var(--o-input-border-color); border-width: 0 0 $input-border-width 0; padding: $o-input-padding-y $o-input-padding-x; - background-color: var(--o-input-background-color, unset); + background-color: var(--o-input-background-color, #{$input-bg}); // -- Nested o_input(s) .o_input { diff --git a/addons/web/static/src/scss/bootstrap_overridden.scss b/addons/web/static/src/scss/bootstrap_overridden.scss index c1ae660db62..9c9b8ccefd3 100644 --- a/addons/web/static/src/scss/bootstrap_overridden.scss +++ b/addons/web/static/src/scss/bootstrap_overridden.scss @@ -251,7 +251,7 @@ $kbd-bg: $o-gray-100 !default; $kbd-box-shadow: 0px 1px 1px rgba($o-black, 0.2), inset 0px -1px 1px 1px rgba($o-gray-200, 0.8), inset 0px 2px 0px 0px rgba($o-white, 0.8) !default; // Input -$input-bg: $o-white !default; +$input-bg: $o-view-background-color !default; $input-focus-border-color: $o-brand-primary !default; $form-check-input-checked-color: $o-brand-lightsecondary !default; $form-check-input-checked-border-color: $o-brand-primary !default; diff --git a/addons/web/static/src/search/search_panel/search_view.scss b/addons/web/static/src/search/search_panel/search_view.scss index 1a2ee362714..a4413e21a3c 100644 --- a/addons/web/static/src/search/search_panel/search_view.scss +++ b/addons/web/static/src/search/search_panel/search_view.scss @@ -69,6 +69,7 @@ width: 75px; border: none; outline: none; + background-color: var(--o-input-background-color, #{$input-bg}); } .o_searchview_autocomplete { @@ -193,6 +194,7 @@ border-bottom: 1px solid $o-brand-secondary; margin-bottom: 15px; width: 100%; + background-color: var(--o-input-background-color, #{$input-bg}); } .o_searchview_facet { From 9c923d68b8d13589da893b9ff7101a2f5156f52c Mon Sep 17 00:00:00 2001 From: "stefanorigano (SRI)" Date: Wed, 31 Aug 2022 11:55:09 +0000 Subject: [PATCH 02/19] [IMP] web_editor: preserve backend's `black` and `white` colors Add 'black' and 'white' color in the list of backend's $theme-colors to preserve during website's customization. This commit is preparatory to the introduction of dark-mode. task-2710677 Part-of: odoo/odoo#102868 --- addons/web_editor/static/src/scss/bootstrap_overridden.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web_editor/static/src/scss/bootstrap_overridden.scss b/addons/web_editor/static/src/scss/bootstrap_overridden.scss index b64c0690974..460d51a7424 100644 --- a/addons/web_editor/static/src/scss/bootstrap_overridden.scss +++ b/addons/web_editor/static/src/scss/bootstrap_overridden.scss @@ -35,7 +35,7 @@ $grays: () !default; // prevent-backend-colors-alteration for more information) @if variable-exists('prevent-backend-colors-alteration') and $prevent-backend-colors-alteration { $theme-colors: map-remove($theme-colors, 'primary', 'secondary', 'success', 'info', 'warning', 'danger', 'light', 'dark'); - $grays: map-remove($grays, '100', '200', '300', '400', '500', '600', '700', '800', '900'); + $grays: map-remove($grays, '100', '200', '300', '400', '500', '600', '700', '800', '900', 'black', 'white'); } // Bootstrap use standard variables to define individual colors which are then From 17ec20ca75207a9ca080234886be45a360e21d65 Mon Sep 17 00:00:00 2001 From: "stefanorigano (SRI)" Date: Tue, 6 Sep 2022 08:09:08 +0000 Subject: [PATCH 03/19] [IMP] web, mail: introduce `bg-view` class Since the view's background-color has been historically white, the `bg-white` class has been used to make match several UI components. Despite working for the default color-scheme, this approach leads to inconsistencies when the default view's background-color changes, eg. dark-mode. This commit introduce 'bg-view' to set any element to match the view's background-color, whatever it is. Commit preparatory to the introduction of dark-mode. task-2710677 Part-of: odoo/odoo#102868 --- addons/mail/static/src/components/chatter/chatter.xml | 2 +- .../src/components/message_list/message_list.xml | 2 +- addons/web/static/src/legacy/xml/search_panel.xml | 2 +- addons/web/static/src/scss/utilities_custom.scss | 10 ++++++++++ .../static/src/search/search_panel/search_panel.xml | 2 +- 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/addons/mail/static/src/components/chatter/chatter.xml b/addons/mail/static/src/components/chatter/chatter.xml index 0055eb2964b..7d149bec206 100644 --- a/addons/mail/static/src/components/chatter/chatter.xml +++ b/addons/mail/static/src/components/chatter/chatter.xml @@ -3,7 +3,7 @@ -
+
-
+
diff --git a/addons/web/static/src/legacy/xml/search_panel.xml b/addons/web/static/src/legacy/xml/search_panel.xml index 04639a0a4b1..2c916d8159b 100644 --- a/addons/web/static/src/legacy/xml/search_panel.xml +++ b/addons/web/static/src/legacy/xml/search_panel.xml @@ -2,7 +2,7 @@ -
+
diff --git a/addons/web/static/src/scss/utilities_custom.scss b/addons/web/static/src/scss/utilities_custom.scss index 01ac4500901..b2647d4360b 100644 --- a/addons/web/static/src/scss/utilities_custom.scss +++ b/addons/web/static/src/scss/utilities_custom.scss @@ -74,6 +74,16 @@ $utilities: map-merge( values: $utilities-opacity, ), ), + "background-color": map-merge( + map-get($utilities, "background-color"), + ( + values: map-merge($utilities-bg-colors, + ( + "view": $o-view-background-color, + ) + ) + ) + ), "rounded-top": ( property: border-top-left-radius border-top-right-radius, class: rounded-top, diff --git a/addons/web/static/src/search/search_panel/search_panel.xml b/addons/web/static/src/search/search_panel/search_panel.xml index e4aa92df2ea..bafb24dbacd 100644 --- a/addons/web/static/src/search/search_panel/search_panel.xml +++ b/addons/web/static/src/search/search_panel/search_panel.xml @@ -11,7 +11,7 @@ -
+
From 9622839cc96a0d787c76c4455ecae708578a22f5 Mon Sep 17 00:00:00 2001 From: "stefanorigano (SRI)" Date: Tue, 6 Sep 2022 11:25:32 +0000 Subject: [PATCH 04/19] [IMP] web: `PivotRenderer`, after BS5 cleanup Commit preparatory to the introduction of dark-mode. task-2710677 Part-of: odoo/odoo#102868 --- addons/web/static/src/views/pivot/pivot_renderer.xml | 6 +++--- addons/web/static/src/views/pivot/pivot_view.scss | 9 --------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/addons/web/static/src/views/pivot/pivot_renderer.xml b/addons/web/static/src/views/pivot/pivot_renderer.xml index 37f784cfa19..ba8d6ab0d30 100644 --- a/addons/web/static/src/views/pivot/pivot_renderer.xml +++ b/addons/web/static/src/views/pivot/pivot_renderer.xml @@ -54,7 +54,7 @@ diff --git a/addons/web/static/src/views/pivot/pivot_view.scss b/addons/web/static/src/views/pivot/pivot_view.scss index d0128ba2630..6cff10dae84 100644 --- a/addons/web/static/src/views/pivot/pivot_view.scss +++ b/addons/web/static/src/views/pivot/pivot_view.scss @@ -8,19 +8,10 @@ @include o-hover-text-color($body-color, $o-main-link-color); } - // This can be removed after the migration to BS5. - th, - td { - border-width: $border-width; - } - .o_pivot_measure_row, .o_pivot_origin_row, .o_pivot_header_cell_closed, .o_pivot_header_cell_opened { - // "user-select-none" class doesn't exist in BS 4.3.1, the user-select property - // could be replaced by a class after the migration to BS5 - user-select: none; @include o-hover-text-color($body-color, $headings-color); &:hover { From cb8677eb05805ce160b78fe0b70c75cc31132ee0 Mon Sep 17 00:00:00 2001 From: "stefanorigano (SRI)" Date: Wed, 7 Sep 2022 09:13:31 +0000 Subject: [PATCH 05/19] [IMP] web: introduce 'border-transparent' utility-class Since the view's backgound-color has been historically white, white borders have been used to adjust layout discrepancies between components. This commit introduces 'border-transparent' to handle the scenario regardless by the view background color. Commit preparatory to the introduction of dark-mode. task-2710677 Part-of: odoo/odoo#102868 --- addons/web/static/src/core/pager/pager.xml | 2 +- addons/web/static/src/scss/utilities_custom.scss | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/core/pager/pager.xml b/addons/web/static/src/core/pager/pager.xml index dd61398ef58..67cc4a26b07 100644 --- a/addons/web/static/src/core/pager/pager.xml +++ b/addons/web/static/src/core/pager/pager.xml @@ -8,7 +8,7 @@ - + / diff --git a/addons/web/static/src/scss/utilities_custom.scss b/addons/web/static/src/scss/utilities_custom.scss index b2647d4360b..38aa93b6e37 100644 --- a/addons/web/static/src/scss/utilities_custom.scss +++ b/addons/web/static/src/scss/utilities_custom.scss @@ -84,6 +84,15 @@ $utilities: map-merge( ) ) ), + "border-color": map-merge( + map-get($utilities, "border-color"), + ( + values: map-merge( + map-get(map-get($utilities, "border-color"), "values"), + ("transparent": transparent), + ), + ), + ), "rounded-top": ( property: border-top-left-radius border-top-right-radius, class: rounded-top, From 1ced9f10aa353afa4a7583ad2ff62e33ea3467a3 Mon Sep 17 00:00:00 2001 From: "stefanorigano (SRI)" Date: Wed, 7 Sep 2022 09:17:26 +0000 Subject: [PATCH 06/19] [IMP] web: add 'odoo' fine-tuned text-color The '$o-theme-text-colors' provides a list of fine-tuned text-color that differ from the bg ones since used for text. This commit adds `$o-brand-odoo` in the list. Commit preparatory to the introduction of dark-mode. task-2710677 Part-of: odoo/odoo#102868 --- addons/web/static/src/scss/primary_variables.scss | 1 + addons/web/static/src/views/form/button_box/button_box.scss | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/scss/primary_variables.scss b/addons/web/static/src/scss/primary_variables.scss index fcf9b54a65c..f6793ec3212 100644 --- a/addons/web/static/src/scss/primary_variables.scss +++ b/addons/web/static/src/scss/primary_variables.scss @@ -52,6 +52,7 @@ $o-theme-text-colors: ( "info": #0180a5, "warning": #9a6b01, "danger": #d23f3a, + "odoo": $o-brand-odoo, )!default; $o-opacity-disabled: .5 !default; diff --git a/addons/web/static/src/views/form/button_box/button_box.scss b/addons/web/static/src/views/form/button_box/button_box.scss index be3ef0d6dbc..c3015e265ee 100644 --- a/addons/web/static/src/views/form/button_box/button_box.scss +++ b/addons/web/static/src/views/form/button_box/button_box.scss @@ -68,7 +68,7 @@ .o_stat_value { font-weight: $font-weight-bold; - color: $o-brand-odoo; + color: map-get($o-theme-text-colors, 'odoo'); } .o_stat_text .o_field_empty { From 5234fad374c9c8a71fb20d9bd910411743aa2a5b Mon Sep 17 00:00:00 2001 From: "stefanorigano (SRI)" Date: Fri, 7 Oct 2022 09:29:34 +0000 Subject: [PATCH 07/19] [IMP] web, base: adapt for dark-mode This commit adapts several components in order to correctly handle color-scheme variations. It also allows user_menu to handle switch entries task-2710677 Part-of: odoo/odoo#102868 --- addons/web/static/img/odoo_logo_dark.svg | 10 +++ .../lib/tempusdominus/tempusdominus.scss | 22 +++--- .../static/src/core/colorlist/colorlist.scss | 4 +- .../static/src/core/errors/error_dialogs.xml | 2 +- .../src/legacy/js/fields/basic_fields_owl.js | 2 +- .../static/src/legacy/scss/datepicker.scss | 11 ++- .../src/legacy/scss/daterangepicker.scss | 76 +++++++++++++++++-- .../src/legacy/scss/domain_selector.scss | 2 +- .../web/static/src/legacy/scss/dropdown.scss | 10 +++ addons/web/static/src/legacy/scss/fields.scss | 3 +- .../static/src/legacy/scss/kanban_view.scss | 2 +- .../web/static/src/legacy/scss/list_view.scss | 2 +- addons/web/static/src/legacy/scss/modal.scss | 5 +- .../src/legacy/scss/name_and_signature.scss | 4 + .../web/static/src/legacy/scss/popover.scss | 1 - .../static/src/legacy/scss/progress_bar.scss | 4 +- .../legacy/scss/tempusdominus_overridden.scss | 1 - addons/web/static/src/legacy/scss/utils.scss | 2 +- addons/web/static/src/legacy/scss/views.scss | 10 ++- addons/web/static/src/legacy/xml/base.xml | 2 +- .../src/legacy/xml/name_and_signature.xml | 2 +- .../static/src/scss/bootstrap_overridden.scss | 8 +- .../static/src/scss/primary_variables.scss | 17 +++-- .../static/src/scss/secondary_variables.scss | 4 +- .../web/static/src/scss/utilities_custom.scss | 5 +- .../src/search/search_bar/search_bar.scss | 12 +++ .../src/search/search_bar/search_bar.xml | 8 +- .../views/calendar/calendar_controller.scss | 1 + .../src/views/calendar/calendar_renderer.scss | 22 +++--- .../static/src/views/fields/ace/ace_field.js | 3 + .../src/views/fields/badge/badge_field.js | 2 +- .../src/views/fields/badge/badge_field.xml | 2 +- .../src/views/fields/image/image_field.scss | 9 +-- .../src/views/fields/image/image_field.xml | 20 ++--- .../journal_dashboard_graph_field.js | 7 +- .../src/views/form/form_controller.scss | 21 ++--- addons/web/static/src/views/graph/colors.js | 38 ++++++++-- .../src/views/graph/graph_controller.xml | 16 ++-- .../static/src/views/graph/graph_renderer.xml | 2 +- .../src/views/kanban/kanban_controller.scss | 7 +- .../static/src/views/pivot/pivot_renderer.xml | 12 +-- addons/web/static/src/views/view.scss | 4 +- .../webclient/burger_menu/burger_menu.scss | 14 ++-- .../burger_menu/burger_menu.variables.scss | 7 ++ .../src/webclient/burger_menu/burger_menu.xml | 6 +- .../static/src/webclient/navbar/navbar.scss | 3 +- .../settings_form_view.scss | 14 ++-- .../settings_form_view_mobile.scss | 4 +- .../src/webclient/user_menu/user_menu.js | 3 +- .../src/webclient/user_menu/user_menu.xml | 15 +++- .../web/static/src/webclient/webclient.scss | 20 ++--- .../tests/legacy/fields/basic_fields_tests.js | 8 +- .../relational_fields/field_one2many_tests.js | 4 +- .../tests/views/fields/badge_field_tests.js | 4 +- .../views/fields/one2many_field_tests.js | 4 +- .../static/tests/webclient/user_menu_tests.js | 22 ++++-- .../base/static/src/scss/onboarding.scss | 12 +++ odoo/addons/base/views/onboarding_views.xml | 14 ++-- 58 files changed, 369 insertions(+), 182 deletions(-) create mode 100644 addons/web/static/img/odoo_logo_dark.svg create mode 100644 addons/web/static/src/search/search_bar/search_bar.scss create mode 100644 addons/web/static/src/webclient/burger_menu/burger_menu.variables.scss diff --git a/addons/web/static/img/odoo_logo_dark.svg b/addons/web/static/img/odoo_logo_dark.svg new file mode 100644 index 00000000000..ead69d7324d --- /dev/null +++ b/addons/web/static/img/odoo_logo_dark.svg @@ -0,0 +1,10 @@ + + + Odoo Logo + + + + diff --git a/addons/web/static/lib/tempusdominus/tempusdominus.scss b/addons/web/static/lib/tempusdominus/tempusdominus.scss index c38f1e87fcb..b5de3afbdf3 100644 --- a/addons/web/static/lib/tempusdominus/tempusdominus.scss +++ b/addons/web/static/lib/tempusdominus/tempusdominus.scss @@ -1,14 +1,14 @@ -$bs-datetimepicker-timepicker-font-size: 1.2em !default; -$bs-datetimepicker-active-bg: $blue !default; -$bs-datetimepicker-active-color: $white !default; -$bs-datetimepicker-border-radius: $border-radius !default; -$bs-datetimepicker-btn-hover-bg: $gray-200 !default; -$bs-datetimepicker-disabled-color: $gray-600 !default; -$bs-datetimepicker-alternate-color: $gray-600 !default; -$bs-datetimepicker-secondary-border-color: #ccc !default; -$bs-datetimepicker-secondary-border-color-rgba: rgba(0, 0, 0, 0.2) !default; -$bs-datetimepicker-primary-border-color: white !default; -$bs-datetimepicker-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !default; +$bs-datetimepicker-timepicker-font-size: var(--bs-datetimepicker-timepicker-font-size, 1.2em) !default; +$bs-datetimepicker-active-bg: var(--bs-datetimepicker-active-bg, #{$blue}) !default; +$bs-datetimepicker-active-color: var(--bs-datetimepicker-active-color, #{$white}) !default; +$bs-datetimepicker-border-radius: var(--bs-datetimepicker-border-radius, #{$border-radius}) !default; +$bs-datetimepicker-btn-hover-bg: var(--bs-datetimepicker-btn-hover-bg, #{$gray-200}) !default; +$bs-datetimepicker-disabled-color: var(--bs-datetimepicker-disabled-color, #{$gray-600}) !default; +$bs-datetimepicker-alternate-color: var(--bs-datetimepicker-alternate-color, #{$gray-600}) !default; +$bs-datetimepicker-secondary-border-color: var(--bs-datetimepicker-secondary-border-color, #ccc) !default; +$bs-datetimepicker-secondary-border-color-rgba: var(--bs-datetimepicker-secondary-border-color-rgba, rgba(0, 0, 0, 0.2)) !default; +$bs-datetimepicker-primary-border-color: var(--bs-datetimepicker-primary-border-color, white) !default; +$bs-datetimepicker-text-shadow: var(--bs-datetimepicker-text-shadow, 0 -1px 0 rgba(0, 0, 0, 0.25)) !default; .bootstrap-datetimepicker-widget { list-style: none; diff --git a/addons/web/static/src/core/colorlist/colorlist.scss b/addons/web/static/src/core/colorlist/colorlist.scss index 56c488ca107..cd28f4e57ab 100644 --- a/addons/web/static/src/core/colorlist/colorlist.scss +++ b/addons/web/static/src/core/colorlist/colorlist.scss @@ -1,7 +1,7 @@ .o_colorlist { button { - border: 1px solid white; - box-shadow: 0 0 0 1px #c9ccd2; + border: 1px solid $white; + box-shadow: 0 0 0 1px $gray-500; width: 22px; height: 17px; } diff --git a/addons/web/static/src/core/errors/error_dialogs.xml b/addons/web/static/src/core/errors/error_dialogs.xml index 94cac028eb4..3e5fbf2bfb1 100644 --- a/addons/web/static/src/core/errors/error_dialogs.xml +++ b/addons/web/static/src/core/errors/error_dialogs.xml @@ -58,7 +58,7 @@ -