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 @@
-