From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 81EBC913FF for ; Fri, 10 Mar 2023 15:08:10 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 651D421C70 for ; Fri, 10 Mar 2023 15:08:10 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Fri, 10 Mar 2023 15:08:09 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 842C242783 for ; Fri, 10 Mar 2023 15:08:09 +0100 (CET) From: Dominik Csapak To: pve-devel@lists.proxmox.com Date: Fri, 10 Mar 2023 15:08:07 +0100 Message-Id: <20230310140808.2245916-1-d.csapak@proxmox.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.060 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH widget-toolkit 1/1] inputpanel: improve validitychange check for advanced fields X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Mar 2023 14:08:10 -0000 instead of only checking the validity of the advanced items when the form validity changed as a whole, add a validitychange listener to each field in the advanced section. This improves the behaviour such that everytime an advanced field gets invalid the items are show, not only when the form was valid before. Signed-off-by: Dominik Csapak --- we need this for the next patch for manager to work correctly, but i guess this can happen on other panels too, just harder to trigger src/window/Edit.js | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/window/Edit.js b/src/window/Edit.js index 51ebfa5..7f94e30 100644 --- a/src/window/Edit.js +++ b/src/window/Edit.js @@ -318,21 +318,6 @@ Ext.define('Proxmox.window.Edit', { let dirty = form.isDirty(); submitBtn.setDisabled(!valid || !(dirty || me.isCreate)); resetBtn.setDisabled(!dirty); - - if (inputPanel && inputPanel.hasAdvanced) { - // we want to show the advanced options as soon as some of it is not valid - let advancedItems = me.down('#advancedContainer').query('field'); - let allAdvancedValid = true; - advancedItems.forEach(function(field) { - if (!field.isValid()) { - allAdvancedValid = false; - } - }); - - if (!allAdvancedValid) { - inputPanel.setAdvancedVisible(true); - } - } }; form.on('dirtychange', set_button_status); @@ -395,6 +380,18 @@ Ext.define('Proxmox.window.Edit', { me.callParent(); + + if (inputPanel?.hasAdvanced) { + let advancedItems = inputPanel.down('#advancedContainer').query('field'); + advancedItems.forEach(function(field) { + me.mon(field, 'validitychange', (f, valid) => { + if (!valid) { + f.up('inputpanel').setAdvancedVisible(true); + } + }); + }); + } + // always mark invalid fields me.on('afterlayout', function() { // on touch devices, the isValid function -- 2.30.2