diff --git a/addons/hr_expense/views/hr_expense_views.xml b/addons/hr_expense/views/hr_expense_views.xml
index 0c6ad3f3aa6..b4174103eba 100644
--- a/addons/hr_expense/views/hr_expense_views.xml
+++ b/addons/hr_expense/views/hr_expense_views.xml
@@ -245,7 +245,7 @@
hr.expense.kanban
hr.expense
-
+
diff --git a/addons/hr_recruitment/static/src/scss/hr_job.scss b/addons/hr_recruitment/static/src/scss/hr_job.scss
index 4bd6278d6bf..d0dc849c89e 100644
--- a/addons/hr_recruitment/static/src/scss/hr_job.scss
+++ b/addons/hr_recruitment/static/src/scss/hr_job.scss
@@ -1,5 +1,5 @@
-.o_kanban_renderer.o_kanban_dashboard {
- &.o_hr_recruitment_kanban {
+.o_kanban_dashboard.o_hr_recruitment_kanban {
+ .o_kanban_renderer {
&.o_kanban_ungrouped .o_kanban_record {
width: 450px;
&:not(.o_kanban_ghost) {
@@ -62,8 +62,8 @@
}
}
-.o_kanban_renderer {
- &.o_kanban_applicant {
+.o_kanban_applicant {
+ .o_kanban_renderer {
.ribbon {
&::before, &::after {
display: none;
diff --git a/addons/hr_timesheet/static/src/scss/timesheets_task_form.scss b/addons/hr_timesheet/static/src/scss/timesheets_task_form.scss
index 6dd19031f3a..6fe10fc2267 100644
--- a/addons/hr_timesheet/static/src/scss/timesheets_task_form.scss
+++ b/addons/hr_timesheet/static/src/scss/timesheets_task_form.scss
@@ -1,3 +1,3 @@
-.o_project_kanban .oe_kanban_align.badge {
+.o_project_kanban .o_kanban_renderer .oe_kanban_align.badge {
color: inherit;
}
diff --git a/addons/maintenance/static/src/scss/maintenance_team_dashboard.scss b/addons/maintenance/static/src/scss/maintenance_team_dashboard.scss
index 09774c65a37..87e17d5697f 100644
--- a/addons/maintenance/static/src/scss/maintenance_team_dashboard.scss
+++ b/addons/maintenance/static/src/scss/maintenance_team_dashboard.scss
@@ -1,3 +1,3 @@
-.o_kanban_renderer.o_maintenance_team_kanban {
+.o_maintenance_team_kanban .o_kanban_renderer {
--KanbanRecord-width: 420px;
}
diff --git a/addons/mass_mailing/static/src/scss/mass_mailing.scss b/addons/mass_mailing/static/src/scss/mass_mailing.scss
index 891f4f93bd6..68870862e6f 100644
--- a/addons/mass_mailing/static/src/scss/mass_mailing.scss
+++ b/addons/mass_mailing/static/src/scss/mass_mailing.scss
@@ -107,7 +107,10 @@
margin-bottom: 8px;
}
}
- &.o_kanban_mailing_list {
+}
+
+.o_kanban_mailing_list {
+ .o_kanban_renderer {
.o_kanban_group:not(.o_column_folded) {
flex-basis: 380px
}
diff --git a/addons/mrp/static/src/scss/mrp_workorder_kanban.scss b/addons/mrp/static/src/scss/mrp_workorder_kanban.scss
index 739e02fb8c1..28f00402658 100644
--- a/addons/mrp/static/src/scss/mrp_workorder_kanban.scss
+++ b/addons/mrp/static/src/scss/mrp_workorder_kanban.scss
@@ -1,5 +1,5 @@
.o_kanban_dashboard{
- &.o_mrp_workorder_kanban {
+ &.o_mrp_workorder_kanban .o_kanban_renderer {
.o_kanban_group:not(.o_column_folded) {
width: 400px + $o-kanban-group-padding;
}
@@ -17,14 +17,12 @@
.o_kanban_workorder_title {
flex-basis: 40%;
}
- .o_kanban_workorder_date {
- }
.o_kanban_workorder_status {
flex-basis: 20%;
}
}
}
- &.o_workcenter_kanban {
+ &.o_workcenter_kanban .o_kanban_renderer {
.o_kanban_group:not(.o_column_folded) {
width: 400px + $o-kanban-group-padding;
}
diff --git a/addons/mrp/views/ir_attachment_view.xml b/addons/mrp/views/ir_attachment_view.xml
index e9add1e525c..9b23507d437 100644
--- a/addons/mrp/views/ir_attachment_view.xml
+++ b/addons/mrp/views/ir_attachment_view.xml
@@ -5,7 +5,7 @@
mrp.document kanban.mrp
mrp.document
-
+
diff --git a/addons/note/views/note_views.xml b/addons/note/views/note_views.xml
index 460cdfaf39c..ce39d4c2fbf 100644
--- a/addons/note/views/note_views.xml
+++ b/addons/note/views/note_views.xml
@@ -76,7 +76,7 @@
note.note.kanban
note.note
-
+
diff --git a/addons/point_of_sale/static/src/scss/pos_dashboard.scss b/addons/point_of_sale/static/src/scss/pos_dashboard.scss
index ca45e6b8a72..a0819c041c5 100644
--- a/addons/point_of_sale/static/src/scss/pos_dashboard.scss
+++ b/addons/point_of_sale/static/src/scss/pos_dashboard.scss
@@ -1,4 +1,4 @@
-.o_kanban_renderer.o_kanban_dashboard.o_pos_kanban.o_kanban_ungrouped {
+.o_kanban_dashboard.o_pos_kanban .o_kanban_renderer.o_kanban_ungrouped {
.o_kanban_record {
width: 500px;
}
diff --git a/addons/product/views/product_template_views.xml b/addons/product/views/product_template_views.xml
index fe7e4019dea..b8ea52b1ea9 100644
--- a/addons/product/views/product_template_views.xml
+++ b/addons/product/views/product_template_views.xml
@@ -81,7 +81,7 @@
Product.template.product.kanban
product.template
-
+
diff --git a/addons/project/static/src/scss/project_dashboard.scss b/addons/project/static/src/scss/project_dashboard.scss
index f33057ae61f..90b431bf933 100644
--- a/addons/project/static/src/scss/project_dashboard.scss
+++ b/addons/project/static/src/scss/project_dashboard.scss
@@ -1,4 +1,4 @@
-.o_kanban_renderer.o_kanban_dashboard.o_project_kanban {
+.o_kanban_dashboard.o_project_kanban .o_kanban_renderer {
.o_project_kanban_main {
max-width: 300px;
diff --git a/addons/project/static/src/scss/project_widgets.scss b/addons/project/static/src/scss/project_widgets.scss
index bf48a53122c..bf2341ba96b 100644
--- a/addons/project/static/src/scss/project_widgets.scss
+++ b/addons/project/static/src/scss/project_widgets.scss
@@ -37,7 +37,7 @@
cursor: pointer;
}
-.o_kanban_project_tasks .o_field_many2manytags, .o_kanban_tags{
+.o_kanban_project_tasks .o_kanban_renderer .o_field_many2manytags, .o_kanban_tags{
margin: 0px;
}
diff --git a/addons/project/static/src/views/project_task_kanban/project_task_kanban_view.scss b/addons/project/static/src/views/project_task_kanban/project_task_kanban_view.scss
index 534ac1c7316..b2928cd514a 100644
--- a/addons/project/static/src/views/project_task_kanban/project_task_kanban_view.scss
+++ b/addons/project/static/src/views/project_task_kanban/project_task_kanban_view.scss
@@ -1,4 +1,4 @@
-.o_kanban_project_tasks {
+.o_kanban_project_tasks .o_kanban_renderer {
div.o_field_many2many_avatar_user[name="user_ids"] {
margin-left: 6px;
}
diff --git a/addons/project/static/src/views/project_update_kanban/project_update_kanban.scss b/addons/project/static/src/views/project_update_kanban/project_update_kanban.scss
index b67cde7724e..ad6a05c2427 100644
--- a/addons/project/static/src/views/project_update_kanban/project_update_kanban.scss
+++ b/addons/project/static/src/views/project_update_kanban/project_update_kanban.scss
@@ -1,4 +1,4 @@
-.o_pupdate_kanban {
+.o_project_update_kanban_view .o_kanban_renderer {
overflow: auto;
&.o_kanban_ungrouped {
padding:0px;
diff --git a/addons/project/static/tests/tours/project_update_tour_tests.js b/addons/project/static/tests/tours/project_update_tour_tests.js
index 2c1408a5384..f7ebf39ac50 100644
--- a/addons/project/static/tests/tours/project_update_tour_tests.js
+++ b/addons/project/static/tests/tours/project_update_tour_tests.js
@@ -12,7 +12,7 @@ function openProjectUpdateAndReturnToTasks(view, viewClass) {
}, {
trigger: ".o-kanban-button-new",
content: "Create a new update from project task view : " + view,
- extra_trigger: '.o_pupdate_kanban',
+ extra_trigger: '.o_project_update_kanban_view',
}, {
trigger: "button.o_form_button_cancel",
content: "Discard project update from project task view : " + view,
diff --git a/addons/project/views/project_update_views.xml b/addons/project/views/project_update_views.xml
index df3907ea837..07377522f6c 100644
--- a/addons/project/views/project_update_views.xml
+++ b/addons/project/views/project_update_views.xml
@@ -66,7 +66,7 @@
project.update.view.kanban
project.update
-
+
diff --git a/addons/rating/static/src/scss/rating_rating_views.scss b/addons/rating/static/src/scss/rating_rating_views.scss
index 8d5d84200b2..0b594d34739 100644
--- a/addons/rating/static/src/scss/rating_rating_views.scss
+++ b/addons/rating/static/src/scss/rating_rating_views.scss
@@ -1,4 +1,4 @@
-.o_kanban_renderer .o_rating_rating_kanban {
+.o_rating_rating_kanban .o_kanban_renderer {
.o_kanban_record {
width: 350px;
}
diff --git a/addons/sales_team/static/src/scss/crm_team_views.scss b/addons/sales_team/static/src/scss/crm_team_views.scss
index 3dbfa16ac18..760712cd31e 100644
--- a/addons/sales_team/static/src/scss/crm_team_views.scss
+++ b/addons/sales_team/static/src/scss/crm_team_views.scss
@@ -1,8 +1,8 @@
-.o_kanban_renderer.o_crm_team_kanban {
+.o_crm_team_kanban .o_kanban_renderer {
--KanbanRecord-width: 400px;
}
-.o_kanban_renderer.o_crm_team_member_kanban {
+.o_crm_team_member_kanban .o_kanban_renderer {
--KanbanRecord-width: 350px;
.o_kanban_group:not(.o_column_folded) {
diff --git a/addons/stock/views/stock_picking_type_views.xml b/addons/stock/views/stock_picking_type_views.xml
index 041286b7d22..04684b7ed0d 100644
--- a/addons/stock/views/stock_picking_type_views.xml
+++ b/addons/stock/views/stock_picking_type_views.xml
@@ -129,7 +129,7 @@
stock.picking.type.kanban
stock.picking.type
-
+
diff --git a/addons/survey/static/src/scss/survey_survey_views.scss b/addons/survey/static/src/scss/survey_survey_views.scss
index 204f40971e1..79bf3eabd0f 100644
--- a/addons/survey/static/src/scss/survey_survey_views.scss
+++ b/addons/survey/static/src/scss/survey_survey_views.scss
@@ -1,5 +1,5 @@
// KANBAN VIEW
-.o_survey_survey_view_kanban {
+.o_survey_view_kanban_view .o_kanban_renderer {
// Common: left semi-trophy icon for certifications
.o_survey_kanban_card_certification {
background-image:
diff --git a/addons/survey/views/survey_survey_views.xml b/addons/survey/views/survey_survey_views.xml
index 08c233d6710..8e5be09daca 100644
--- a/addons/survey/views/survey_survey_views.xml
+++ b/addons/survey/views/survey_survey_views.xml
@@ -209,7 +209,7 @@
survey.survey.view.kanban
survey.survey
-
+
diff --git a/addons/utm/static/src/scss/utm_views.scss b/addons/utm/static/src/scss/utm_views.scss
index 9791dea18d1..6b7db326bd8 100644
--- a/addons/utm/static/src/scss/utm_views.scss
+++ b/addons/utm/static/src/scss/utm_views.scss
@@ -1,4 +1,4 @@
-.o_kanban_renderer.o_utm_kanban {
+.o_utm_kanban .o_kanban_renderer {
--KanbanRecord-width: #{380px - 2 * ($grid-gutter-width * .25)};
--KanbanGroup-padding-h: #{$grid-gutter-width * .25};
--KanbanGroup-padding-bottom: #{$grid-gutter-width};
diff --git a/addons/web/static/src/views/kanban/kanban_arch_parser.js b/addons/web/static/src/views/kanban/kanban_arch_parser.js
index feec6f07a9b..6783c83f592 100644
--- a/addons/web/static/src/views/kanban/kanban_arch_parser.js
+++ b/addons/web/static/src/views/kanban/kanban_arch_parser.js
@@ -35,7 +35,6 @@ export class KanbanArchParser extends XMLParser {
parse(arch, models, modelName) {
const fields = models[modelName];
const xmlDoc = this.parseXML(arch);
- const className = xmlDoc.getAttribute("class") || null;
let defaultOrder = stringToOrderBy(xmlDoc.getAttribute("default_order") || null);
const defaultGroupBy = xmlDoc.getAttribute("default_group_by");
const limit = xmlDoc.getAttribute("limit");
@@ -171,7 +170,6 @@ export class KanbanArchParser extends XMLParser {
arch,
activeActions,
activeFields,
- className,
creates,
defaultGroupBy,
fieldNodes,
diff --git a/addons/web/static/src/views/kanban/kanban_controller.scss b/addons/web/static/src/views/kanban/kanban_controller.scss
index a0225d0396f..f186a63aa87 100644
--- a/addons/web/static/src/views/kanban/kanban_controller.scss
+++ b/addons/web/static/src/views/kanban/kanban_controller.scss
@@ -455,10 +455,6 @@
@include media-breakpoint-up(md) {
--KanbanGroup-width: calc(var(--KanbanRecord-width) + (2 * var(--KanbanGroup-padding-h)));
-
- &.o_kanban_small_column {
- --KanbanGroup-width: calc(var(--KanbanRecord--small-width) + (2 * var(--KanbanGroup-padding-h)));
- }
}
.o_kanban_group,
@@ -596,12 +592,6 @@
}
}
- &.o_kanban_mobile .o_kanban_record {
- div.label {
- @include o-text-overflow;
- }
- }
-
// Records colours
@include o-kanban-record-color;
@@ -612,6 +602,19 @@
}
}
+.o_kanban_mobile .o_kanban_renderer .o_kanban_record {
+ div.label {
+ @include o-text-overflow;
+ }
+}
+
+.o_kanban_small_column .o_kanban_renderer.o_kanban_grouped {
+ @include media-breakpoint-up(md) {
+ --KanbanGroup-width: calc(var(--KanbanRecord--small-width) + (2 * var(--KanbanGroup-padding-h)));
+ }
+}
+
+
// ------- Sample mode -------
.o_kanban_view .o_view_sample_data {
// all records
diff --git a/addons/web/static/src/views/kanban/kanban_dashboard.scss b/addons/web/static/src/views/kanban/kanban_dashboard.scss
index 33c40d41ae7..3810f1808f4 100644
--- a/addons/web/static/src/views/kanban/kanban_dashboard.scss
+++ b/addons/web/static/src/views/kanban/kanban_dashboard.scss
@@ -1,4 +1,4 @@
-.o_kanban_dashboard {
+.o_kanban_dashboard .o_kanban_renderer {
// ----------------------------------------------------------------------------
// Customize kanbanView default values
@@ -193,9 +193,11 @@
);
padding: $o-kanban-record-margin;
}
+}
+.o_kanban_dashboard.o_emphasize_colors .o_kanban_renderer {
// Emphasize records' colors when necessary
- &.o_emphasize_colors .o_kanban_record::after {
+ .o_kanban_record::after {
width: $o-kanban-color-border-width * 2;
}
}
diff --git a/addons/web/static/src/views/kanban/kanban_renderer.xml b/addons/web/static/src/views/kanban/kanban_renderer.xml
index 8491bca2b47..76619cc9ebd 100644
--- a/addons/web/static/src/views/kanban/kanban_renderer.xml
+++ b/addons/web/static/src/views/kanban/kanban_renderer.xml
@@ -3,7 +3,7 @@
diff --git a/addons/web/static/src/views/view.js b/addons/web/static/src/views/view.js
index d9461a0461f..cfff4a68f97 100644
--- a/addons/web/static/src/views/view.js
+++ b/addons/web/static/src/views/view.js
@@ -268,11 +268,18 @@ export class View extends Component {
let subType = rootNode.getAttribute("js_class");
const bannerRoute = rootNode.getAttribute("banner_route");
const sample = rootNode.getAttribute("sample");
+ const classList = [
+ "o_view_controller",
+ `o_${type}_view`,
+ ...(props.className || "").split(" "),
+ ...(rootNode.getAttribute("class") || "").split(" "),
+ ];
// determine ViewClass to instantiate (if not already done)
if (subType) {
if (viewRegistry.contains(subType)) {
descr = viewRegistry.get(subType);
+ classList.push(`o_${subType}_view`);
} else {
subType = null;
}
@@ -304,7 +311,7 @@ export class View extends Component {
relatedModels,
resModel,
useSampleModel: false,
- className: `${props.className} o_view_controller o_${this.env.config.viewType}_view`,
+ className: [...new Set(classList)].filter((c) => c).join(" "),
};
if (viewDescription.custom_view_id) {
// for dashboard
diff --git a/addons/web/static/tests/views/kanban_view_tests.js b/addons/web/static/tests/views/kanban_view_tests.js
index 0b3d1771770..e0bce6ba6b7 100644
--- a/addons/web/static/tests/views/kanban_view_tests.js
+++ b/addons/web/static/tests/views/kanban_view_tests.js
@@ -357,8 +357,8 @@ QUnit.module("Views", (hooks) => {
},
});
+ assert.hasClass(target.querySelector(".o_kanban_view"), "o_kanban_test");
assert.hasClass(target.querySelector(".o_kanban_renderer"), "o_kanban_ungrouped");
- assert.hasClass(target.querySelector(".o_kanban_renderer"), "o_kanban_test");
assert.containsN(target, ".o_kanban_record:not(.o_kanban_ghost)", 4);
assert.containsN(target, ".o_kanban_ghost", 6);
assert.containsOnce(target, ".o_kanban_record:contains(gnap)");
@@ -432,8 +432,8 @@ QUnit.module("Views", (hooks) => {
"bg-100",
"o_kanban_group should have a background"
);
+ assert.hasClass(target.querySelector(".o_kanban_view"), "o_kanban_test");
assert.hasClass(target.querySelector(".o_kanban_renderer"), "o_kanban_grouped");
- assert.hasClass(target.querySelector(".o_kanban_renderer"), "o_kanban_test");
assert.containsN(target, ".o_kanban_group", 2);
assert.containsOnce(target, ".o_kanban_group:first-child .o_kanban_record");
assert.containsN(target, ".o_kanban_group:nth-child(2) .o_kanban_record", 3);
diff --git a/addons/web/static/tests/views/view_tests.js b/addons/web/static/tests/views/view_tests.js
index 9de54366c54..87f14b73284 100644
--- a/addons/web/static/tests/views/view_tests.js
+++ b/addons/web/static/tests/views/view_tests.js
@@ -479,12 +479,8 @@ QUnit.module("Views", (hooks) => {
patchWithCleanup(ToyController.prototype, {
setup() {
this._super();
- const {
- irFilters,
- searchViewArch,
- searchViewFields,
- searchViewId,
- } = this.props.info;
+ const { irFilters, searchViewArch, searchViewFields, searchViewId } =
+ this.props.info;
assert.strictEqual(searchViewArch, serverData.views["animal,false,search"]);
assert.deepEqual(searchViewFields, serverData.models.animal.fields);
assert.strictEqual(searchViewId, false);
@@ -527,12 +523,8 @@ QUnit.module("Views", (hooks) => {
patchWithCleanup(ToyController.prototype, {
setup() {
this._super();
- const {
- irFilters,
- searchViewArch,
- searchViewFields,
- searchViewId,
- } = this.props.info;
+ const { irFilters, searchViewArch, searchViewFields, searchViewId } =
+ this.props.info;
assert.strictEqual(searchViewArch, ``);
assert.deepEqual(searchViewFields, {});
assert.strictEqual(searchViewId, false);
@@ -571,12 +563,8 @@ QUnit.module("Views", (hooks) => {
patchWithCleanup(ToyController.prototype, {
setup() {
this._super();
- const {
- irFilters,
- searchViewArch,
- searchViewFields,
- searchViewId,
- } = this.props.info;
+ const { irFilters, searchViewArch, searchViewFields, searchViewId } =
+ this.props.info;
assert.strictEqual(searchViewArch, ``);
assert.deepEqual(searchViewFields, {});
assert.strictEqual(searchViewId, undefined);
@@ -614,12 +602,8 @@ QUnit.module("Views", (hooks) => {
patchWithCleanup(ToyController.prototype, {
setup() {
this._super();
- const {
- irFilters,
- searchViewArch,
- searchViewFields,
- searchViewId,
- } = this.props.info;
+ const { irFilters, searchViewArch, searchViewFields, searchViewId } =
+ this.props.info;
assert.strictEqual(searchViewArch, ``);
assert.deepEqual(searchViewFields, {});
assert.strictEqual(searchViewId, false);
@@ -679,12 +663,8 @@ QUnit.module("Views", (hooks) => {
patchWithCleanup(ToyController.prototype, {
setup() {
this._super();
- const {
- irFilters,
- searchViewArch,
- searchViewFields,
- searchViewId,
- } = this.props.info;
+ const { irFilters, searchViewArch, searchViewFields, searchViewId } =
+ this.props.info;
assert.strictEqual(searchViewArch, ``);
assert.deepEqual(searchViewFields, {});
assert.strictEqual(searchViewId, undefined);
@@ -1425,7 +1405,7 @@ QUnit.module("Views", (hooks) => {
});
assert.deepEqual(domain, [[0, "=", 1]]);
assert.deepEqual(groupBy, ["birthday"]);
- assert.deepEqual(orderBy, [{name: "bar", asc: true}]);
+ assert.deepEqual(orderBy, [{ name: "bar", asc: true }]);
}
}
ToyController.template = xml``;
@@ -1439,7 +1419,7 @@ QUnit.module("Views", (hooks) => {
domain: [[0, "=", 1]],
groupBy: ["birthday"],
context: { key: "val" },
- orderBy: [{name: "bar", asc: true}],
+ orderBy: [{ name: "bar", asc: true }],
};
await mount(View, target, { env, props });
}
@@ -1593,7 +1573,7 @@ QUnit.module("Views", (hooks) => {
});
assert.deepEqual(domain, ["&", [0, "=", 1], [1, "=", 1]]);
assert.deepEqual(groupBy, ["name"]);
- assert.deepEqual(orderBy, [{name: "bar", asc: true}]);
+ assert.deepEqual(orderBy, [{ name: "bar", asc: true }]);
}
}
ToyController.template = xml``;
@@ -1607,12 +1587,35 @@ QUnit.module("Views", (hooks) => {
domain: [[0, "=", 1]],
groupBy: ["birthday"],
context: { search_default_filter: 1, search_default_group_by: 1 },
- orderBy: [{name: "bar", asc: true}],
+ orderBy: [{ name: "bar", asc: true }],
};
await mount(View, target, { env, props });
}
);
+ QUnit.test("multiple ways to pass classes for styling", async (assert) => {
+ const env = await makeTestEnv({ serverData });
+ const props = {
+ resModel: "animal",
+ type: "toy",
+ className: "o_custom_class_from_props_1 o_custom_class_from_props_2",
+ arch: `
+
+ `,
+ fields: {},
+ };
+ await mount(View, target, { env, props });
+ const view = target.querySelector(".o_toy_view");
+ assert.hasClass(view, "o_toy_imp_view", "should have the class from js_class attribute");
+ assert.hasClass(view, "o_custom_class_from_props_1", "should have the class from props");
+ assert.hasClass(view, "o_custom_class_from_props_2", "should have the class from props");
+ assert.hasClass(view, "o_custom_class_from_arch_1", "should have the class from arch");
+ assert.hasClass(view, "o_custom_class_from_arch_2", "should have the class from arch");
+ });
+
////////////////////////////////////////////////////////////////////////////
// update props
////////////////////////////////////////////////////////////////////////////
diff --git a/addons/website/static/src/scss/website.backend.scss b/addons/website/static/src/scss/website.backend.scss
index 7c79af5c9a6..7a746027ad9 100644
--- a/addons/website/static/src/scss/website.backend.scss
+++ b/addons/website/static/src/scss/website.backend.scss
@@ -195,7 +195,7 @@
display: contents;
}
-.o_kanban_renderer.o_theme_kanban {
+.o_theme_preview_kanban_view .o_kanban_renderer {
$o-theme-kanban-gray: #fcfcfc;
/// Un-grouped Layout (default)
diff --git a/addons/website/static/src/scss/website_visitor_views.scss b/addons/website/static/src/scss/website_visitor_views.scss
index 1729089b35f..1c94168e9de 100644
--- a/addons/website/static/src/scss/website_visitor_views.scss
+++ b/addons/website/static/src/scss/website_visitor_views.scss
@@ -1,4 +1,4 @@
-.o_wvisitor_kanban {
+.o_wvisitor_kanban .o_kanban_renderer {
&.o_kanban_ungrouped {
padding:0px;
.o_kanban_record {
diff --git a/addons/website/views/website_views.xml b/addons/website/views/website_views.xml
index e4b541b04a4..4aeebfee067 100644
--- a/addons/website/views/website_views.xml
+++ b/addons/website/views/website_views.xml
@@ -228,7 +228,7 @@
Themes Kanban
ir.module.module
-
+
diff --git a/addons/website_slides/static/src/scss/slide_views.scss b/addons/website_slides/static/src/scss/slide_views.scss
index 136766807c7..b75247d0fde 100644
--- a/addons/website_slides/static/src/scss/slide_views.scss
+++ b/addons/website_slides/static/src/scss/slide_views.scss
@@ -1,4 +1,4 @@
-.o_kanban_view .o_slide_kanban {
+.o_kanban_view.o_slide_kanban .o_kanban_renderer {
--KanbanRecord-width: 400px;
.o_kanban_slides_card_manage_pane {
diff --git a/addons/website_slides/views/slide_channel_views.xml b/addons/website_slides/views/slide_channel_views.xml
index 3e64969946f..75410c213d1 100644
--- a/addons/website_slides/views/slide_channel_views.xml
+++ b/addons/website_slides/views/slide_channel_views.xml
@@ -236,7 +236,7 @@
slide.channel.view.kanban
slide.channel
-
+
diff --git a/odoo/addons/base/static/src/css/modules.css b/odoo/addons/base/static/src/css/modules.css
index 615116c3dac..755299a54b2 100644
--- a/odoo/addons/base/static/src/css/modules.css
+++ b/odoo/addons/base/static/src/css/modules.css
@@ -12,24 +12,24 @@
width: 77%;
}
-.o_kanban_view .o_modules_kanban .oe_module_vignette,
+.o_kanban_view.o_modules_kanban .o_kanban_renderer .oe_module_vignette,
.o_modules_field .o_modules_kanban .oe_module_vignette {
align-items: center;
display: flex;
}
-.o_kanban_view .o_modules_kanban .o_kanban_record .o_dropdown_kanban,
-.o_modules_field .o_modules_kanban .o_kanban_record .o_dropdown_kanban {
+.o_kanban_view.o_modules_kanban .o_kanban_renderer .o_kanban_record .o_dropdown_kanban,
+.o_modules_field .o_modules_kanban .o_kanban_renderer .o_kanban_record .o_dropdown_kanban {
visibility: visible;
opacity: 0.5;
}
-.o_kanban_view .o_modules_kanban .o_kanban_record:hover .o_dropdown_kanban,
-.o_kanban_view .o_modules_kanban .o_kanban_record .o_dropdown_kanban.show {
+.o_kanban_view.o_modules_kanban .o_kanban_renderer .o_kanban_record:hover .o_dropdown_kanban,
+.o_kanban_view.o_modules_kanban .o_kanban_renderer .o_kanban_record .o_dropdown_kanban.show {
opacity: 1;
}
-.o_modules_field .o_modules_kanban {
+.o_modules_field .o_modules_kanban .o_kanban_renderer {
--KanbanRecord-width: 280px;
--KanbanRecord-width-small: 280px;
}
diff --git a/odoo/addons/base/views/res_partner_views.xml b/odoo/addons/base/views/res_partner_views.xml
index 49e5be43943..da3d32c79f6 100644
--- a/odoo/addons/base/views/res_partner_views.xml
+++ b/odoo/addons/base/views/res_partner_views.xml
@@ -456,7 +456,7 @@
res.partner.kanban
res.partner
-
+