[FIX] web: create="0" in a grouped kanban view
This commit is to remove the "Create" button in a grouped kanban view with create="0". Problem: In a kanban view with create="0", the "Create" button should never be displayed. How to reproduce : - go to a kanban view with create="0" - group the view Result before: The "Create" button is displayed Result after: The "Create" button is not displayed closes odoo/odoo#98691 Signed-off-by: Julien Mougenot (jum) <jum@odoo.com>
This commit is contained in:
@@ -96,10 +96,12 @@ export class KanbanController extends Component {
|
||||
}
|
||||
|
||||
get canCreate() {
|
||||
if (!this.model.root.isGrouped) {
|
||||
return this.props.archInfo.activeActions.create;
|
||||
const { create, groupCreate } = this.props.archInfo.activeActions;
|
||||
const list = this.model.root;
|
||||
if (!create) {
|
||||
return false;
|
||||
}
|
||||
return !this.props.archInfo.activeActions.groupCreate || this.model.root.groups.length > 0;
|
||||
return list.isGrouped ? list.groups.length > 0 || !groupCreate : true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4608,6 +4608,25 @@ QUnit.module("Views", (hooks) => {
|
||||
assert.containsNone(target, ".o-kanban-button-new");
|
||||
});
|
||||
|
||||
QUnit.test("kanban view with create=False and groupby", async (assert) => {
|
||||
await makeView({
|
||||
type: "kanban",
|
||||
resModel: "partner",
|
||||
serverData,
|
||||
arch: `
|
||||
<kanban create="0">
|
||||
<templates>
|
||||
<t t-name="kanban-box">>
|
||||
<div><field name="foo"/></div>>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>`,
|
||||
groupBy: ["product_id"],
|
||||
});
|
||||
|
||||
assert.containsNone(target, ".o-kanban-button-new");
|
||||
});
|
||||
|
||||
QUnit.test("clicking on a link triggers correct event", async (assert) => {
|
||||
await makeView({
|
||||
type: "kanban",
|
||||
@@ -10446,12 +10465,12 @@ QUnit.module("Views", (hooks) => {
|
||||
QUnit.test(
|
||||
"Color '200' (gray) can be used twice (for false value and another value) in progress bar",
|
||||
async (assert) => {
|
||||
serverData.models.partner.records.push({ id: 5, bar: true }, { id: 6, bar: false });
|
||||
await makeView({
|
||||
type: "kanban",
|
||||
resModel: "partner",
|
||||
serverData,
|
||||
arch: `
|
||||
serverData.models.partner.records.push({ id: 5, bar: true }, { id: 6, bar: false });
|
||||
await makeView({
|
||||
type: "kanban",
|
||||
resModel: "partner",
|
||||
serverData,
|
||||
arch: `
|
||||
<kanban>
|
||||
<field name="bar"/>
|
||||
<field name="foo"/>
|
||||
@@ -10465,56 +10484,57 @@ QUnit.module("Views", (hooks) => {
|
||||
</templates>
|
||||
</kanban>
|
||||
`,
|
||||
groupBy: ["bar"],
|
||||
});
|
||||
groupBy: ["bar"],
|
||||
});
|
||||
|
||||
assert.containsN(target, ".o_kanban_group:nth-child(1) .progress-bar", 2);
|
||||
assert.deepEqual(
|
||||
[...target.querySelectorAll(".o_kanban_group:nth-child(1) .progress-bar")].map(
|
||||
(el) => el.dataset.tooltip
|
||||
),
|
||||
["1 blip", "1 Other"]
|
||||
);
|
||||
assert.containsN(target, ".o_kanban_group:nth-child(2) .progress-bar", 4);
|
||||
assert.deepEqual(
|
||||
[...target.querySelectorAll(".o_kanban_group:nth-child(2) .progress-bar")].map(
|
||||
(el) => el.dataset.tooltip
|
||||
),
|
||||
["1 yop", "1 gnap", "1 blip", "1 Other"]
|
||||
);
|
||||
assert.deepEqual(getCounters(), ["2", "4"]);
|
||||
assert.containsN(target, ".o_kanban_group:nth-child(1) .progress-bar", 2);
|
||||
assert.deepEqual(
|
||||
[...target.querySelectorAll(".o_kanban_group:nth-child(1) .progress-bar")].map(
|
||||
(el) => el.dataset.tooltip
|
||||
),
|
||||
["1 blip", "1 Other"]
|
||||
);
|
||||
assert.containsN(target, ".o_kanban_group:nth-child(2) .progress-bar", 4);
|
||||
assert.deepEqual(
|
||||
[...target.querySelectorAll(".o_kanban_group:nth-child(2) .progress-bar")].map(
|
||||
(el) => el.dataset.tooltip
|
||||
),
|
||||
["1 yop", "1 gnap", "1 blip", "1 Other"]
|
||||
);
|
||||
assert.deepEqual(getCounters(), ["2", "4"]);
|
||||
|
||||
await click(target.querySelector(".o_kanban_group:nth-child(2) .progress-bar"));
|
||||
await click(target.querySelector(".o_kanban_group:nth-child(2) .progress-bar"));
|
||||
|
||||
assert.deepEqual(getCounters(), ["2", "1"]);
|
||||
assert.strictEqual(
|
||||
target.querySelector(".o_kanban_group:nth-child(2) .o_kanban_record").innerText,
|
||||
"ABC"
|
||||
);
|
||||
assert.containsNone(target, ".o_kanban_group:nth-child(2) .o_kanban_load_more");
|
||||
assert.deepEqual(getCounters(), ["2", "1"]);
|
||||
assert.strictEqual(
|
||||
target.querySelector(".o_kanban_group:nth-child(2) .o_kanban_record").innerText,
|
||||
"ABC"
|
||||
);
|
||||
assert.containsNone(target, ".o_kanban_group:nth-child(2) .o_kanban_load_more");
|
||||
|
||||
await click(
|
||||
target.querySelector(".o_kanban_group:nth-child(2) .progress-bar:nth-child(2)")
|
||||
);
|
||||
await click(
|
||||
target.querySelector(".o_kanban_group:nth-child(2) .progress-bar:nth-child(2)")
|
||||
);
|
||||
|
||||
assert.deepEqual(getCounters(), ["2", "1"]);
|
||||
assert.strictEqual(
|
||||
target.querySelector(".o_kanban_group:nth-child(2) .o_kanban_record").innerText,
|
||||
"GHI"
|
||||
);
|
||||
assert.containsNone(target, ".o_kanban_group:nth-child(2) .o_kanban_load_more");
|
||||
assert.deepEqual(getCounters(), ["2", "1"]);
|
||||
assert.strictEqual(
|
||||
target.querySelector(".o_kanban_group:nth-child(2) .o_kanban_record").innerText,
|
||||
"GHI"
|
||||
);
|
||||
assert.containsNone(target, ".o_kanban_group:nth-child(2) .o_kanban_load_more");
|
||||
|
||||
await click(
|
||||
target.querySelector(".o_kanban_group:nth-child(2) .progress-bar:nth-child(4)")
|
||||
);
|
||||
await click(
|
||||
target.querySelector(".o_kanban_group:nth-child(2) .progress-bar:nth-child(4)")
|
||||
);
|
||||
|
||||
assert.deepEqual(getCounters(), ["2", "1"]);
|
||||
assert.strictEqual(
|
||||
target.querySelector(".o_kanban_group:nth-child(2) .o_kanban_record").innerText,
|
||||
""
|
||||
);
|
||||
assert.containsNone(target, ".o_kanban_group:nth-child(2) .o_kanban_load_more");
|
||||
});
|
||||
assert.deepEqual(getCounters(), ["2", "1"]);
|
||||
assert.strictEqual(
|
||||
target.querySelector(".o_kanban_group:nth-child(2) .o_kanban_record").innerText,
|
||||
""
|
||||
);
|
||||
assert.containsNone(target, ".o_kanban_group:nth-child(2) .o_kanban_load_more");
|
||||
}
|
||||
);
|
||||
|
||||
QUnit.test(
|
||||
"keep focus inside control panel when pressing arrowdown and no kanban card",
|
||||
|
||||
Reference in New Issue
Block a user