From 095b6301c399f37d7159cbb64cb7b01765cf1168 Mon Sep 17 00:00:00 2001 From: UmakanthKaspa Date: Mon, 13 Oct 2025 11:26:19 +0000 Subject: [PATCH 1/4] feat: add placeholder field to web form field doctype --- .../web_form_field/web_form_field.json | 13 ++++++-- .../doctype/web_form_field/web_form_field.py | 30 ++----------------- 2 files changed, 12 insertions(+), 31 deletions(-) diff --git a/frappe/website/doctype/web_form_field/web_form_field.json b/frappe/website/doctype/web_form_field/web_form_field.json index 02d794e546..1bcc3100e7 100644 --- a/frappe/website/doctype/web_form_field/web_form_field.json +++ b/frappe/website/doctype/web_form_field/web_form_field.json @@ -26,7 +26,8 @@ "section_break_6", "description", "column_break_8", - "default" + "default", + "placeholder" ], "fields": [ { @@ -152,17 +153,23 @@ "fieldtype": "Select", "label": "Precision", "options": "\n0\n1\n2\n3\n4\n5\n6\n7\n8\n9" + }, + { + "fieldname": "placeholder", + "fieldtype": "Data", + "label": "Placeholder" } ], "istable": 1, "links": [], - "modified": "2024-04-15 16:11:58.469820", + "modified": "2025-10-13 16:53:27.147994", "modified_by": "Administrator", "module": "Website", "name": "Web Form Field", "owner": "Administrator", "permissions": [], + "row_format": "Dynamic", "sort_field": "creation", "sort_order": "DESC", "states": [] -} \ No newline at end of file +} diff --git a/frappe/website/doctype/web_form_field/web_form_field.py b/frappe/website/doctype/web_form_field/web_form_field.py index e6f07899e3..8c6a7023b1 100644 --- a/frappe/website/doctype/web_form_field/web_form_field.py +++ b/frappe/website/doctype/web_form_field/web_form_field.py @@ -19,34 +19,7 @@ class WebFormField(Document): depends_on: DF.Code | None description: DF.Text | None fieldname: DF.Literal[None] - fieldtype: DF.Literal[ - "Attach", - "Attach Image", - "Check", - "Currency", - "Color", - "Data", - "Date", - "Datetime", - "Duration", - "Float", - "HTML", - "Int", - "Link", - "Password", - "Phone", - "Rating", - "Select", - "Signature", - "Small Text", - "Text", - "Text Editor", - "Table", - "Time", - "Section Break", - "Column Break", - "Page Break", - ] + fieldtype: DF.Literal["Attach", "Attach Image", "Check", "Currency", "Color", "Data", "Date", "Datetime", "Duration", "Float", "HTML", "Int", "Link", "Password", "Phone", "Rating", "Select", "Signature", "Small Text", "Text", "Text Editor", "Table", "Time", "Section Break", "Column Break", "Page Break"] hidden: DF.Check label: DF.Data | None mandatory_depends_on: DF.Code | None @@ -56,6 +29,7 @@ class WebFormField(Document): parent: DF.Data parentfield: DF.Data parenttype: DF.Data + placeholder: DF.Data | None precision: DF.Literal["", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] read_only: DF.Check read_only_depends_on: DF.Code | None From 5986c9badc1b73cdf2129f02b9ea22d19c02a1dd Mon Sep 17 00:00:00 2001 From: UmakanthKaspa Date: Mon, 13 Oct 2025 12:22:50 +0000 Subject: [PATCH 2/4] feat: copy placeholder when getting webform fields --- frappe/website/doctype/web_form/web_form.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frappe/website/doctype/web_form/web_form.js b/frappe/website/doctype/web_form/web_form.js index 8eea71c186..15b57016b9 100644 --- a/frappe/website/doctype/web_form/web_form.js +++ b/frappe/website/doctype/web_form/web_form.js @@ -118,6 +118,7 @@ frappe.ui.form.on("Web Form", { read_only: df.read_only, precision: df.precision, depends_on: df.depends_on, + placeholder: df.placeholder, mandatory_depends_on: df.mandatory_depends_on, read_only_depends_on: df.read_only_depends_on, }); @@ -337,6 +338,7 @@ frappe.ui.form.on("Web Form Field", { doc.default = df.default; doc.read_only = df.read_only; doc.depends_on = df.depends_on; + doc.placeholder = df.placeholder; doc.mandatory_depends_on = df.mandatory_depends_on; doc.read_only_depends_on = df.read_only_depends_on; From 15c6761f48dcbba785bf49e3102292ad2861347b Mon Sep 17 00:00:00 2001 From: UmakanthKaspa Date: Mon, 13 Oct 2025 12:29:48 +0000 Subject: [PATCH 3/4] feat: copy max_length when getting webform fields --- frappe/website/doctype/web_form/web_form.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frappe/website/doctype/web_form/web_form.js b/frappe/website/doctype/web_form/web_form.js index 15b57016b9..a9f18e62d3 100644 --- a/frappe/website/doctype/web_form/web_form.js +++ b/frappe/website/doctype/web_form/web_form.js @@ -119,6 +119,7 @@ frappe.ui.form.on("Web Form", { precision: df.precision, depends_on: df.depends_on, placeholder: df.placeholder, + max_length: df.length, mandatory_depends_on: df.mandatory_depends_on, read_only_depends_on: df.read_only_depends_on, }); @@ -340,6 +341,7 @@ frappe.ui.form.on("Web Form Field", { doc.depends_on = df.depends_on; doc.placeholder = df.placeholder; doc.mandatory_depends_on = df.mandatory_depends_on; + doc.max_length = df.length; doc.read_only_depends_on = df.read_only_depends_on; frm.refresh_field("web_form_fields"); From 9e346c7ab8002e11c855ce1fbd5db0d8f5cb50a7 Mon Sep 17 00:00:00 2001 From: UmakanthKaspa Date: Thu, 16 Oct 2025 04:32:39 +0000 Subject: [PATCH 4/4] style: fix ruff formatting for web_form_field.py --- .../doctype/web_form_field/web_form_field.py | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/frappe/website/doctype/web_form_field/web_form_field.py b/frappe/website/doctype/web_form_field/web_form_field.py index 8c6a7023b1..585bc9bd8c 100644 --- a/frappe/website/doctype/web_form_field/web_form_field.py +++ b/frappe/website/doctype/web_form_field/web_form_field.py @@ -19,7 +19,34 @@ class WebFormField(Document): depends_on: DF.Code | None description: DF.Text | None fieldname: DF.Literal[None] - fieldtype: DF.Literal["Attach", "Attach Image", "Check", "Currency", "Color", "Data", "Date", "Datetime", "Duration", "Float", "HTML", "Int", "Link", "Password", "Phone", "Rating", "Select", "Signature", "Small Text", "Text", "Text Editor", "Table", "Time", "Section Break", "Column Break", "Page Break"] + fieldtype: DF.Literal[ + "Attach", + "Attach Image", + "Check", + "Currency", + "Color", + "Data", + "Date", + "Datetime", + "Duration", + "Float", + "HTML", + "Int", + "Link", + "Password", + "Phone", + "Rating", + "Select", + "Signature", + "Small Text", + "Text", + "Text Editor", + "Table", + "Time", + "Section Break", + "Column Break", + "Page Break", + ] hidden: DF.Check label: DF.Data | None mandatory_depends_on: DF.Code | None