diff --git a/frappe/public/js/frappe/web_form/web_form.js b/frappe/public/js/frappe/web_form/web_form.js index 206c3fc61a..67abc959db 100644 --- a/frappe/public/js/frappe/web_form/web_form.js +++ b/frappe/public/js/frappe/web_form/web_form.js @@ -28,6 +28,7 @@ export default class WebForm extends frappe.ui.FieldGroup { if (this.is_new || this.in_edit_mode) { this.setup_primary_action(); + this.setup_clear_action(); } this.setup_previous_next_button(); @@ -157,6 +158,25 @@ export default class WebForm extends frappe.ui.FieldGroup { $(".web-form").on("submit", () => this.save()); } + setup_clear_action() { + $(".web-form-footer .clear-btn").on("click", () => this.clear_form()); + } + + clear_form() { + let title = __("Clear Form?"); + let message = __("Are you sure you want to clear the form? It cannot be undone."); + let clear_button_text = __("Clear Form"); + + if (location.href.includes("/edit")) { + title = __("Reset Form?"); + message = __("Are you sure you want to reset all field values?"); + clear_button_text = __("Reset Form"); + } + + frappe.warn(title, message, () => location.reload(true), clear_button_text); + return false; + } + validate_section() { if (this.allow_incomplete) return true; diff --git a/frappe/public/scss/website/web_form.scss b/frappe/public/scss/website/web_form.scss index 0a8ae43e30..a106fa8f92 100644 --- a/frappe/public/scss/website/web_form.scss +++ b/frappe/public/scss/website/web_form.scss @@ -140,6 +140,15 @@ font-size: var(--text-base); } + .btn-link { + padding-left: 0px; + color: var(--text-color); + + &:hover { + color: var(--text-on-light-blue); + } + } + .left-area { display: flex; flex: 1; diff --git a/frappe/website/doctype/web_form/templates/web_form.html b/frappe/website/doctype/web_form/templates/web_form.html index c5c393576a..7c4dc6d94d 100644 --- a/frappe/website/doctype/web_form/templates/web_form.html +++ b/frappe/website/doctype/web_form/templates/web_form.html @@ -21,13 +21,13 @@