From: "Max R. Carrara" <m.carrara@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [PATCH proxmox-widget-toolkit 08/13] form: introduce new 'proxmoxtextarea' field
Date: Tue, 23 Jun 2026 16:33:25 +0200 [thread overview]
Message-ID: <20260623143402.772452-9-m.carrara@proxmox.com> (raw)
In-Reply-To: <20260623143402.772452-1-m.carrara@proxmox.com>
Define a new field named `proxmoxtextarea` and let it extend the
`TextArea` field that Ext JS ships.
`proxmoxtextarea` uses the exact same logic as `proxmoxtextfield`.
This means that it also supports the `skipEmptyText` attribute, which
is used to omit sending an empty string to the backend if the field is
left empty.
Signed-off-by: Max R. Carrara <m.carrara@proxmox.com>
---
src/form/TextAreaField.js | 47 +++++++++++++++++++++++++++++++++++++++
1 file changed, 47 insertions(+)
diff --git a/src/form/TextAreaField.js b/src/form/TextAreaField.js
index f4b0bb4..ae2e922 100644
--- a/src/form/TextAreaField.js
+++ b/src/form/TextAreaField.js
@@ -59,3 +59,50 @@ Ext.define('Proxmox.form.field.Base64TextArea', {
this.validate();
},
});
+
+Ext.define('Proxmox.form.field.TextArea', {
+ extend: 'Ext.form.field.TextArea',
+ alias: ['widget.proxmoxtextarea'],
+
+ config: {
+ skipEmptyText: true,
+ deleteEmpty: false,
+ trimValue: false,
+ },
+
+ getSubmitData: function () {
+ let me = this,
+ data = null,
+ val;
+ if (!me.disabled && me.submitValue && !me.isFileUpload()) {
+ val = me.getSubmitValue();
+ if (val !== null) {
+ data = {};
+ data[me.getName()] = val;
+ } else if (me.getDeleteEmpty()) {
+ data = {};
+ data.delete = me.getName();
+ }
+ }
+ return data;
+ },
+
+ getSubmitValue: function () {
+ let me = this;
+
+ let value = this.processRawValue(this.getRawValue());
+ if (me.getTrimValue() && typeof value === 'string') {
+ value = value.trim();
+ }
+ if (value !== '') {
+ return value;
+ }
+
+ return me.getSkipEmptyText() ? null : value;
+ },
+
+ setAllowBlank: function (allowBlank) {
+ this.allowBlank = allowBlank;
+ this.validate();
+ },
+});
--
2.47.3
next prev parent reply other threads:[~2026-06-23 14:36 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-23 14:33 [PATCH common/manager/proxmox-widget-toolkit/storage 00/13] GUI Support for Custom Storage Plugins Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-common 01/13] json schema: add multiline string format Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-storage 02/13] api: plugins/storage: add initial routes and endpoints Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-storage 03/13] api: plugins/storage/plugin: include schema in plugin metadata Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-storage 04/13] api: plugins/storage/plugin: mark sensitive properties in schema Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-storage 05/13] api: plugins/storage/plugin: factor plugin metadata code into helper Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-storage 06/13] api: plugins/storage/plugin: add plugins' 'content' to their metadata Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-storage 07/13] all plugins: add 'title' to properties, adapt 'description's Max R. Carrara
2026-06-23 14:33 ` Max R. Carrara [this message]
2026-06-23 14:33 ` [PATCH proxmox-widget-toolkit 09/13] utils: introduce helper function getFieldDefFromPropertySchema Max R. Carrara
2026-06-23 14:33 ` [PATCH proxmox-widget-toolkit 10/13] acme: use helper to construct ExtJS fields from property schemas Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-manager 11/13] api: add API routes 'plugins' and 'plugins/storage' Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-manager 12/13] ui: storage view: display error when no editor for storage type exists Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-manager 13/13] ui: storage: add basic UI integration for custom storage plugins Max R. Carrara
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260623143402.772452-9-m.carrara@proxmox.com \
--to=m.carrara@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox