From 2293491aba79a3696af7b66dc14758d46a768846 Mon Sep 17 00:00:00 2001 From: Gursheen Anand Date: Fri, 20 Feb 2026 14:48:43 +0530 Subject: [PATCH 1/4] fix: default readonly values for datetime and time --- frappe/public/js/frappe/ui/field_group.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/frappe/public/js/frappe/ui/field_group.js b/frappe/public/js/frappe/ui/field_group.js index 98ce569ab5..caa70877d4 100644 --- a/frappe/public/js/frappe/ui/field_group.js +++ b/frappe/public/js/frappe/ui/field_group.js @@ -35,6 +35,10 @@ frappe.ui.FieldGroup = class FieldGroup extends frappe.ui.form.Layout { if (def_value == "Today" && field.df["fieldtype"] == "Date") { def_value = frappe.datetime.get_today(); + } else if (def_value == "Now" && field.df["fieldtype"] == "Datetime") { + def_value = frappe.datetime.now_datetime(); + } else if (def_value == "Now" && field.df["fieldtype"] == "Time") { + def_value = frappe.datetime.now_time(); } field.set_input(def_value); From e9730499d636591f0758a696696aafb1f4b017b6 Mon Sep 17 00:00:00 2001 From: Gursheen Anand Date: Fri, 20 Feb 2026 17:59:07 +0530 Subject: [PATCH 2/4] refactor: cleanup date default keyword util --- frappe/public/js/frappe/ui/field_group.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/frappe/public/js/frappe/ui/field_group.js b/frappe/public/js/frappe/ui/field_group.js index caa70877d4..a379da66b1 100644 --- a/frappe/public/js/frappe/ui/field_group.js +++ b/frappe/public/js/frappe/ui/field_group.js @@ -18,6 +18,17 @@ frappe.ui.FieldGroup = class FieldGroup extends frappe.ui.form.Layout { } } + resolve_date_default_keywords(def_value, fieldtype) { + if (def_value == "Today" && fieldtype == "Date") { + return frappe.datetime.get_today(); + } else if (def_value == "Now" && fieldtype == "Datetime") { + return frappe.datetime.now_datetime(); + } else if (def_value == "Now" && fieldtype == "Time") { + return frappe.datetime.now_time(); + } + return def_value; + } + make() { let me = this; if (this.fields) { @@ -33,13 +44,7 @@ frappe.ui.FieldGroup = class FieldGroup extends frappe.ui.form.Layout { ) return; - if (def_value == "Today" && field.df["fieldtype"] == "Date") { - def_value = frappe.datetime.get_today(); - } else if (def_value == "Now" && field.df["fieldtype"] == "Datetime") { - def_value = frappe.datetime.now_datetime(); - } else if (def_value == "Now" && field.df["fieldtype"] == "Time") { - def_value = frappe.datetime.now_time(); - } + def_value = me.resolve_date_default_keywords(def_value, field.df.fieldtype); field.set_input(def_value); // if default and has depends_on, render its fields. From 9972937b072afd1b575bd6efc2e5bb19877039bd Mon Sep 17 00:00:00 2001 From: Gursheen Anand Date: Fri, 20 Feb 2026 18:11:48 +0530 Subject: [PATCH 3/4] fix: default string check ignore case --- frappe/public/js/frappe/ui/field_group.js | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/frappe/public/js/frappe/ui/field_group.js b/frappe/public/js/frappe/ui/field_group.js index a379da66b1..8c09a96858 100644 --- a/frappe/public/js/frappe/ui/field_group.js +++ b/frappe/public/js/frappe/ui/field_group.js @@ -19,13 +19,23 @@ frappe.ui.FieldGroup = class FieldGroup extends frappe.ui.form.Layout { } resolve_date_default_keywords(def_value, fieldtype) { - if (def_value == "Today" && fieldtype == "Date") { + if (!def_value) return def_value; + + def_value = def_value.toLowerCase(); + + if (def_value == "today" && fieldtype == "Date") { return frappe.datetime.get_today(); - } else if (def_value == "Now" && fieldtype == "Datetime") { - return frappe.datetime.now_datetime(); - } else if (def_value == "Now" && fieldtype == "Time") { - return frappe.datetime.now_time(); } + + if (def_value == "now") { + if (fieldtype == "Datetime") { + return frappe.datetime.now_datetime(); + } + if (fieldtype == "Time") { + return frappe.datetime.now_time(); + } + } + return def_value; } From a0b201d9a0de052f721d3def20f0b6b9280e6cb7 Mon Sep 17 00:00:00 2001 From: Gursheen Anand Date: Tue, 24 Feb 2026 15:19:50 +0530 Subject: [PATCH 4/4] fix: only check default keywords for valid fields --- frappe/public/js/frappe/ui/field_group.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/frappe/public/js/frappe/ui/field_group.js b/frappe/public/js/frappe/ui/field_group.js index 8c09a96858..e482e32159 100644 --- a/frappe/public/js/frappe/ui/field_group.js +++ b/frappe/public/js/frappe/ui/field_group.js @@ -19,7 +19,7 @@ frappe.ui.FieldGroup = class FieldGroup extends frappe.ui.form.Layout { } resolve_date_default_keywords(def_value, fieldtype) { - if (!def_value) return def_value; + if (!def_value || typeof def_value !== "string") return def_value; def_value = def_value.toLowerCase(); @@ -54,7 +54,9 @@ frappe.ui.FieldGroup = class FieldGroup extends frappe.ui.form.Layout { ) return; - def_value = me.resolve_date_default_keywords(def_value, field.df.fieldtype); + if (["Date", "Datetime", "Time"].includes(field.df.fieldtype)) { + def_value = me.resolve_date_default_keywords(def_value, field.df.fieldtype); + } field.set_input(def_value); // if default and has depends_on, render its fields.