From 8e384a75692c089e58fb97413c16157cf3ba3bee Mon Sep 17 00:00:00 2001 From: "Lucas Perais (lpe)" Date: Wed, 2 Jun 2021 15:22:32 +0200 Subject: [PATCH] [FIX] web: confirmation_dialog: confirm callback optional This commit makes the confirm callback optional in ConfirmationDialog It also adds an AlertDialog which can warn the user by simply passing some body text --- .../confirmation_dialog.js | 34 ++++++++++++++++--- .../confirmation_dialog.xml | 2 +- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js b/addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js index b879f17a8a9..8c61ffe6af7 100644 --- a/addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js +++ b/addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js @@ -1,6 +1,7 @@ /** @odoo-module */ import { Dialog } from "../dialog/dialog"; +import { _lt } from "../l10n/translation"; export class ConfirmationDialog extends Dialog { setup() { @@ -15,17 +16,42 @@ export class ConfirmationDialog extends Dialog { } _confirm() { - this.props.confirm(); + if (this.props.confirm) { + this.props.confirm(); + } this.close(); } } ConfirmationDialog.props = { - title: String, + title: { + validate: (m) => { + return ( + typeof m === "string" || (typeof m === "object" && typeof m.toString === "function") + ); + }, + }, body: String, - confirm: Function, - cancel: Function, + confirm: { type: Function, optional: true }, + cancel: { type: Function, optional: true }, close: Function, }; ConfirmationDialog.bodyTemplate = "web.ConfirmationDialogBody"; ConfirmationDialog.footerTemplate = "web.ConfirmationDialogFooter"; + +export class AlertDialog extends ConfirmationDialog { + setup() { + super.setup(); + if ("contentClass" in this.props) { + this.contentClass = this.props.contentClass; + } + } +} +AlertDialog.size = "modal-sm"; +AlertDialog.props = Object.assign(Object.create(ConfirmationDialog.props), { + contentClass: { type: String, optional: true }, +}); + +AlertDialog.defaultProps = { + title: _lt("Alert"), +}; diff --git a/addons/web/static/src/core/confirmation_dialog/confirmation_dialog.xml b/addons/web/static/src/core/confirmation_dialog/confirmation_dialog.xml index d99f734c14a..45606c1c04a 100644 --- a/addons/web/static/src/core/confirmation_dialog/confirmation_dialog.xml +++ b/addons/web/static/src/core/confirmation_dialog/confirmation_dialog.xml @@ -9,7 +9,7 @@ -