diff --git a/addons/account/static/src/scss/account_dashboard.scss b/addons/account/static/src/scss/account_dashboard.scss index b93e2d35c55..5050be09648 100644 --- a/addons/account/static/src/scss/account_dashboard.scss +++ b/addons/account/static/src/scss/account_dashboard.scss @@ -47,7 +47,7 @@ } .fa-check { - color: theme-color('success'); + @extend .text-success; } } diff --git a/addons/calendar/static/src/scss/calendar.scss b/addons/calendar/static/src/scss/calendar.scss index aafb36e2626..314a417b4f6 100644 --- a/addons/calendar/static/src/scss/calendar.scss +++ b/addons/calendar/static/src/scss/calendar.scss @@ -53,10 +53,10 @@ } .o_accepted { - color: theme-color('success'); + @extend .text-success; } .o_declined { - color: theme-color('danger'); + @extend .text-danger; } } .o_meeting_filter { diff --git a/addons/hr_skills/static/src/xml/resume_templates.xml b/addons/hr_skills/static/src/xml/resume_templates.xml index 5db3b0064cf..10d9f86df93 100644 --- a/addons/hr_skills/static/src/xml/resume_templates.xml +++ b/addons/hr_skills/static/src/xml/resume_templates.xml @@ -22,7 +22,7 @@ - diff --git a/addons/hr_skills_survey/__manifest__.py b/addons/hr_skills_survey/__manifest__.py index 1d7355e89b9..44f978d55db 100644 --- a/addons/hr_skills_survey/__manifest__.py +++ b/addons/hr_skills_survey/__manifest__.py @@ -20,9 +20,6 @@ This module adds certification to resumé for employees. ], 'auto_install': True, 'assets': { - 'web.assets_backend': [ - 'hr_skills_survey/static/src/scss/**/*', - ], 'web.assets_qweb': [ 'hr_skills_survey/static/src/xml/**/*', ], diff --git a/addons/hr_skills_survey/static/src/scss/hr_skills.scss b/addons/hr_skills_survey/static/src/scss/hr_skills.scss deleted file mode 100644 index 864fb11dd43..00000000000 --- a/addons/hr_skills_survey/static/src/scss/hr_skills.scss +++ /dev/null @@ -1,5 +0,0 @@ -.o_resume_line { - .o_resume_line_icon.icon_trophy { - color: theme-color('warning'); - } -} diff --git a/addons/hr_skills_survey/static/src/xml/resume_templates.xml b/addons/hr_skills_survey/static/src/xml/resume_templates.xml index 8705bc6b69e..17b1ca0d952 100644 --- a/addons/hr_skills_survey/static/src/xml/resume_templates.xml +++ b/addons/hr_skills_survey/static/src/xml/resume_templates.xml @@ -14,7 +14,7 @@
- +
diff --git a/addons/mail/static/src/components/activity/activity.scss b/addons/mail/static/src/components/activity/activity.scss index 64a0ceacedb..06e8c5eb63f 100644 --- a/addons/mail/static/src/components/activity/activity.scss +++ b/addons/mail/static/src/components/activity/activity.scss @@ -80,9 +80,9 @@ // ------------------------------------------------------------------ $o-mail-activity-default-color: gray('300') !default; -$o-mail-activity-overdue-color: darken(theme-color('danger'), 10%) !default; -$o-mail-activity-planned-color: darken(theme-color('success'), 10%) !default; -$o-mail-activity-today-color: darken(theme-color('warning'), 10%) !default; +$o-mail-activity-overdue-color: o-text-color('danger') !default; +$o-mail-activity-planned-color: o-text-color('success') !default; +$o-mail-activity-today-color: o-text-color('warning') !default; .o_Activity_deadlineDateText { diff --git a/addons/mail/static/src/components/follow_button/follow_button.scss b/addons/mail/static/src/components/follow_button/follow_button.scss index 36fb60e788a..b01d5b86a6a 100644 --- a/addons/mail/static/src/components/follow_button/follow_button.scss +++ b/addons/mail/static/src/components/follow_button/follow_button.scss @@ -18,10 +18,10 @@ color: gray('600'); &.o-following { - color: $green; + color: o-text-color('success'); } &.o-unfollow { - color: $orange; + color: o-text-color('warning') } } diff --git a/addons/mail/static/src/components/message/message.scss b/addons/mail/static/src/components/message/message.scss index 0729b503997..f880d1f1c22 100644 --- a/addons/mail/static/src/components/message/message.scss +++ b/addons/mail/static/src/components/message/message.scss @@ -366,7 +366,7 @@ font-style: italic; &.o-author { - color: theme-color('danger'); + color: o-text-color('danger'); font-weight: bold; } } @@ -376,7 +376,7 @@ cursor: pointer; &.o-error { - color: $red; + color: o-text-color('danger'); } } diff --git a/addons/mail/static/src/scss/activity_view.scss b/addons/mail/static/src/scss/activity_view.scss index bbb819ebdab..276c78cc928 100644 --- a/addons/mail/static/src/scss/activity_view.scss +++ b/addons/mail/static/src/scss/activity_view.scss @@ -50,13 +50,13 @@ @include o-position-absolute($bottom: 0, $right: 0); &.planned { - color: theme-color('success'); + @extend .text-success; } &.overdue { - color: theme-color('danger'); + @extend .text-danger; } &.today { - color: theme-color('warning'); + @extend .text-warning; } } } @@ -116,7 +116,7 @@ padding:5px; cursor: pointer; &:hover { - color: theme-color('success'); + color: o-text-color('success'); } } .o_kanban_counter { diff --git a/addons/mail/static/src/scss/discuss.scss b/addons/mail/static/src/scss/discuss.scss index 22e5e71c677..625d04a0a5d 100644 --- a/addons/mail/static/src/scss/discuss.scss +++ b/addons/mail/static/src/scss/discuss.scss @@ -12,9 +12,6 @@ &.o_user_online { color: $o-enterprise-primary-color; } - &.o_user_idle { - color: theme-color('warning'); - } &.fa-stack { width: 1em; height: 1em; diff --git a/addons/mail/static/src/scss/mail_activity.scss b/addons/mail/static/src/scss/mail_activity.scss index 2b31623260f..3d63360a3a5 100644 --- a/addons/mail/static/src/scss/mail_activity.scss +++ b/addons/mail/static/src/scss/mail_activity.scss @@ -130,13 +130,13 @@ } .o_activity_color_planned { - color: darken(theme-color('success'), 10%); + @extend .text-success; } .o_activity_color_overdue { - color: darken(theme-color('danger'), 10%); + @extend .text-danger; } .o_activity_color_today { - color: darken(theme-color('warning'), 10%); + @extend .text-warning; } } diff --git a/addons/mail/static/src/widgets/common.xml b/addons/mail/static/src/widgets/common.xml index 9106f96f4ea..291fcd7446a 100644 --- a/addons/mail/static/src/widgets/common.xml +++ b/addons/mail/static/src/widgets/common.xml @@ -11,7 +11,7 @@
- + diff --git a/addons/web/__manifest__.py b/addons/web/__manifest__.py index ca39386cf0b..e596e50b492 100644 --- a/addons/web/__manifest__.py +++ b/addons/web/__manifest__.py @@ -291,6 +291,7 @@ This module provides the core of the Odoo Web Client. ], 'web._assets_backend_helpers': [ 'web/static/src/legacy/scss/bootstrap_overridden.scss', + 'web/static/src/legacy/scss/bs_mixins_overrides_backend.scss', ], 'web._assets_frontend_helpers': [ 'web/static/src/legacy/scss/bootstrap_overridden_frontend.scss', diff --git a/addons/web/static/src/legacy/js/core/data_comparison_utils.js b/addons/web/static/src/legacy/js/core/data_comparison_utils.js index ad848824c3d..7e585fd249b 100644 --- a/addons/web/static/src/legacy/js/core/data_comparison_utils.js +++ b/addons/web/static/src/legacy/js/core/data_comparison_utils.js @@ -96,9 +96,9 @@ function renderVariation(variation, field, options) { var value; if (!isNaN(variation)) { if (variation > 0) { - className += ' o_positive'; + className += ' o_positive text-success'; } else if (variation < 0) { - className += ' o_negative'; + className += ' o_negative text-danger'; } else { className += ' o_null'; } diff --git a/addons/web/static/src/legacy/scss/bootstrap_overridden.scss b/addons/web/static/src/legacy/scss/bootstrap_overridden.scss index 5ea88443d06..07c04c57757 100644 --- a/addons/web/static/src/legacy/scss/bootstrap_overridden.scss +++ b/addons/web/static/src/legacy/scss/bootstrap_overridden.scss @@ -24,6 +24,11 @@ $black: #000 !default; $primary: $o-brand-primary !default; $secondary: $white !default; +$success: $o-success !default; +$info: $o-info !default; +$warning: $o-warning !default; +$danger: $o-danger !default; + // Options // // Quickly modify global styling by enabling or disabling optional features. @@ -162,3 +167,7 @@ $breadcrumb-margin-bottom: 0 !default; $breadcrumb-bg: $o-control-panel-background-color !default; $breadcrumb-active-color: #777777 !default; + +// Code + +$code-color: $o-main-code-color!default; diff --git a/addons/web/static/src/legacy/scss/bs_mixins_overrides_backend.scss b/addons/web/static/src/legacy/scss/bs_mixins_overrides_backend.scss new file mode 100644 index 00000000000..d00e0b59433 --- /dev/null +++ b/addons/web/static/src/legacy/scss/bs_mixins_overrides_backend.scss @@ -0,0 +1,63 @@ +//============================================================================== +// Bootstrap Mixins and Functions Extensions +// Those will affect how bootstrap is generated in the backend only +//============================================================================== + + +// Function used to retrive a text color prioritizing our finetuned ones. +//------------------------------------------------------------------------------ +@function o-text-color($key) { + $-all-text-colors: map-merge($theme-colors, $o-theme-text-colors); + + @if map-has-key($-all-text-colors, $key) { + @return map-get($-all-text-colors, $key); + } + + @return false; +} + + +// Customize boostrap 'text-emphasis-variant' mixin allowing text colors other +// than the '$theme-colors' ones. +// It prioritizes the '$o-theme-text-colors' map and fallbacks to default. +//------------------------------------------------------------------------------ +@mixin text-emphasis-variant($parent, $color) { + $-hover: $emphasized-link-hover-darken-percentage; + + // Check for the color name in '$theme-colors'. + $color-name: null; + @each $-name, $-value in $theme-colors { + @if $-value == $color { + $color-name: $-name; + } + } + + // Retrive the finetuned text color or fallback to default. + $color-value: o-text-color($color-name) or $color; + + #{$parent} { + color: $color-value!important; + } + + a#{$parent}, button#{$parent} { + @include hover-focus() { + color: darken($color-value, $-hover) !important; + } + } + + // Handle a very specific exception for the 'fa-circle' class when used in + // conjunction with contextual classes to achieve "status" graphical elements. + // Ideally any '.fa-circle.text-x'occurrency should be replaced with the + // 'o_status' component that uses background-color rather than text-color. + @if map-has-key($o-theme-text-colors, $color-name) { + #{$parent}.fa-circle { + color: $color!important; + } + + a#{$parent}.fa-circle, button#{$parent}.fa-circle { + @include hover-focus() { + color: darken($color, $-hover) !important; + } + } + } +} diff --git a/addons/web/static/src/legacy/scss/domain_selector.scss b/addons/web/static/src/legacy/scss/domain_selector.scss index b35934973b9..64632daf435 100644 --- a/addons/web/static/src/legacy/scss/domain_selector.scss +++ b/addons/web/static/src/legacy/scss/domain_selector.scss @@ -33,10 +33,6 @@ &.o_domain_delete_node_button { font-size: 12px; padding-left: 5px; - - &:hover { - color: theme-color('danger'); - } } } } diff --git a/addons/web/static/src/legacy/scss/fields.scss b/addons/web/static/src/legacy/scss/fields.scss index f4e16b7c78c..dba8e7990b0 100644 --- a/addons/web/static/src/legacy/scss/fields.scss +++ b/addons/web/static/src/legacy/scss/fields.scss @@ -6,7 +6,7 @@ // Invalid .o_field_invalid { &.o_input, .o_input, &.o_form_label { - color: theme-color('danger')!important; + @extend .text-danger; border-color: theme-color('danger')!important; // enterprise o_required_modifier rule overrides this without !important } } @@ -281,7 +281,7 @@ color: $o-main-color-muted; } &.fa-star { - color: gold; + color: $o-main-favorite-color; } } } @@ -292,19 +292,16 @@ font-size: 16px; } i.fa-star-o { - color: $o-main-color-muted; - &:hover { - color: gold; - } + @include o-hover-text-color($o-main-color-muted, $o-main-favorite-color); } i.fa-star { - color: gold; + color: $o-main-favorite-color; } } // Specific success color for toggle_button widget .fa.o_toggle_button_success { - color: theme-color('success'); + @extend .text-success; } // Handle widget diff --git a/addons/web/static/src/legacy/scss/form_view.scss b/addons/web/static/src/legacy/scss/form_view.scss index 6aad865b0b6..e9d60bac488 100644 --- a/addons/web/static/src/legacy/scss/form_view.scss +++ b/addons/web/static/src/legacy/scss/form_view.scss @@ -831,7 +831,6 @@ $o-form-label-margin-right: 0px; // Timezone widget warning .o_tz_warning { - color: theme-color('danger'); cursor: help; position: absolute; margin-left: 10px; diff --git a/addons/web/static/src/legacy/scss/list_view.scss b/addons/web/static/src/legacy/scss/list_view.scss index 7b37e755704..f1863f1a72e 100644 --- a/addons/web/static/src/legacy/scss/list_view.scss +++ b/addons/web/static/src/legacy/scss/list_view.scss @@ -132,13 +132,6 @@ border-style: none; display: table-cell; cursor: pointer; - @include o-hover-text-color($text-muted, theme-color('danger')); - } - - // Contextual classes - @each $color, $value in $theme-colors { - $safe: saturate(theme-color-level($color, 2), 10%); - @include text-emphasis-variant(".text-#{$color}", $safe); } // Grouped list views diff --git a/addons/web/static/src/legacy/scss/primary_variables.scss b/addons/web/static/src/legacy/scss/primary_variables.scss index 2df9300b9a7..d61769cfbae 100644 --- a/addons/web/static/src/legacy/scss/primary_variables.scss +++ b/addons/web/static/src/legacy/scss/primary_variables.scss @@ -9,9 +9,9 @@ $o-font-size-base: 13rem * (1px / $o-root-font-size) !default; $o-line-height-base: 1.5 !default; // This is BS default // Colors -$o-community-color: #7C7BAD !default; -$o-enterprise-color: #875A7B !default; -$o-enterprise-primary-color: #00A09D !default; +$o-community-color: #71639e !default; +$o-enterprise-color: #714B67 !default; +$o-enterprise-primary-color: #017e84 !default; $o-brand-odoo: $o-community-color !default; $o-brand-primary: $o-community-color !default; @@ -30,10 +30,25 @@ $o-gray-700: #495057 !default; $o-gray-800: #343a40 !default; $o-gray-900: #212529 !default; +$o-success: #28a745 !default; +$o-info: #17a2b8 !default; +$o-warning: #ffac00 !default; +$o-danger: #dc3545 !default; + +// Fine-tune contextual text colors. +$o-theme-text-colors: ( + "success": #008818, + "info": #0180a5, + "warning": #9a6b01, + "danger": #d23f3a, +)!default; + $o-main-text-color: $o-gray-700 !default; -$o-main-color-muted: rgba($o-main-text-color, .7) !default; +$o-main-color-muted: rgba($o-main-text-color, .76) !default; $o-main-headings-color: $o-gray-900 !default; $o-main-link-color: darken($o-brand-primary, 5%) !default; +$o-main-favorite-color: #f3cc00 !default; +$o-main-code-color: #d2317b !default; $o-view-background-color: white !default; $o-shadow-color: #303030 !default; diff --git a/addons/web/static/src/legacy/xml/base.xml b/addons/web/static/src/legacy/xml/base.xml index 93ab96dab2d..e4f52c0884d 100644 --- a/addons/web/static/src/legacy/xml/base.xml +++ b/addons/web/static/src/legacy/xml/base.xml @@ -135,7 +135,7 @@ t-on-change="_onInputChange" t-on-click="_onInputClick" /> - + This date is on the future. Make sure it is what you expected. @@ -1054,7 +1054,7 @@