From a2eb0d80d2a7c8d3e22c43b0412ddaf0eb3e3de0 Mon Sep 17 00:00:00 2001 From: thatmattlove Date: Wed, 1 Sep 2021 11:41:35 -0700 Subject: [PATCH] #7084: Fix issue where hidden VLAN form fields were incorrectly included in the form submission --- docs/release-notes/version-3.0.md | 1 + netbox/project-static/dist/netbox.js | Bin 322387 -> 322801 bytes netbox/project-static/dist/netbox.js.map | Bin 310912 -> 311263 bytes netbox/project-static/src/forms/vlanTags.ts | 54 ++++++++++++++---- .../src/select/api/apiSelect.ts | 24 ++++++++ 5 files changed, 68 insertions(+), 11 deletions(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 341cd1ac4..58bc4a87a 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -14,6 +14,7 @@ * [#7082](https://github.com/netbox-community/netbox/issues/7082) - Avoid exception when referencing invalid content type in table * [#7083](https://github.com/netbox-community/netbox/issues/7083) - Correct labeling for VM memory attribute * [#7084](https://github.com/netbox-community/netbox/issues/7084) - Fix KeyError exception when editing access VLAN on an interface +* [#7084](https://github.com/netbox-community/netbox/issues/7084) - Fix issue where hidden VLAN form fields were incorrectly included in the form submission * [#7089](https://github.com/netbox-community/netbox/issues/7089) - Fix ContentTypeFilterSet not filtering on q filter * [#7090](https://github.com/netbox-community/netbox/issues/7090) - Fix Cable Bulk Edit Form - allow decimal input on Length field * [#7091](https://github.com/netbox-community/netbox/issues/7091) - Ensure API requests from the UI are aware of `BASE_PATH` diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index e9ea8ddbfe19387a60e7c0b0f5bbf4c71efe92a8..c64df2e2675c42a34b6b222691c58e1b504dd890 100644 GIT binary patch delta 27858 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 diff --git a/netbox/project-static/dist/netbox.js.map b/netbox/project-static/dist/netbox.js.map index 1d338086839c579d3d5e36b9e8bb1e8682914ad6..c9deea0b1e37db8877273adb0b5af93d09bec526 100644 GIT binary patch delta 645 zcmb7CJxc>Y5Jh+KBM^ijHkP8*LZaeFu#nl!ah~THjx&U46`~kX6TbriF-1_pAFzdp zkjBPRII!{`sId|Pmi`LSnY$Dz1hE-r-@G?(c6MuDv5)Uqt=?7deqdkEXWoj)fii>v z3Me>2fw3%10EdD{VFQCoN=hwZ0px@O;8KcDY;MSpXT4|g#u zF16a{BSW~iVq06r^_L|+oilk?-{<{!f~ZvB9|mDS)00@wCX&^~3!K tGvFh1RxD66GMvJLOv*p6@Z6M$15NSI0h>|_Hy|0L)Dm4OE@OcP_v0G(xG;{X5v diff --git a/netbox/project-static/src/forms/vlanTags.ts b/netbox/project-static/src/forms/vlanTags.ts index 03ec73e60..4ad97c363 100644 --- a/netbox/project-static/src/forms/vlanTags.ts +++ b/netbox/project-static/src/forms/vlanTags.ts @@ -1,4 +1,4 @@ -import { all, getElement, resetSelect, toggleVisibility } from '../util'; +import { all, getElement, resetSelect, toggleVisibility as _toggleVisibility } from '../util'; /** * Get a select element's containing `.row` element. @@ -14,6 +14,38 @@ function fieldContainer(element: Nullable): Nullable>( + element: E, + action: 'show' | 'hide', +): void { + // Find the select element's containing element. + const parent = fieldContainer(element); + if (element !== null && parent !== null) { + // Toggle container visibility to visually remove it from the form. + _toggleVisibility(parent, action); + // Create a new event so that the APISelect instance properly handles the enable/disable + // action. + const event = new Event(`netbox.select.disabled.${element.name}`); + switch (action) { + case 'hide': + // Disable the native select element and dispatch the event APISelect is listening for. + element.disabled = true; + element.dispatchEvent(event); + break; + case 'show': + // Enable the native select element and dispatch the event APISelect is listening for. + element.disabled = false; + element.dispatchEvent(event); + } + } +} + /** * Toggle element visibility when the mode field does not have a value. */ @@ -29,7 +61,7 @@ function handleModeNone(): void { resetSelect(untaggedVlan); resetSelect(taggedVlans); for (const element of elements) { - toggleVisibility(fieldContainer(element), 'hide'); + toggleVisibility(element, 'hide'); } } } @@ -46,9 +78,9 @@ function handleModeAccess(): void { if (all(elements)) { const [taggedVlans, untaggedVlan, vlanGroup] = elements; resetSelect(taggedVlans); - toggleVisibility(fieldContainer(vlanGroup), 'show'); - toggleVisibility(fieldContainer(untaggedVlan), 'show'); - toggleVisibility(fieldContainer(taggedVlans), 'hide'); + toggleVisibility(vlanGroup, 'show'); + toggleVisibility(untaggedVlan, 'show'); + toggleVisibility(taggedVlans, 'hide'); } } @@ -63,9 +95,9 @@ function handleModeTagged(): void { ]; if (all(elements)) { const [taggedVlans, untaggedVlan, vlanGroup] = elements; - toggleVisibility(fieldContainer(taggedVlans), 'show'); - toggleVisibility(fieldContainer(vlanGroup), 'show'); - toggleVisibility(fieldContainer(untaggedVlan), 'show'); + toggleVisibility(taggedVlans, 'show'); + toggleVisibility(vlanGroup, 'show'); + toggleVisibility(untaggedVlan, 'show'); } } @@ -81,9 +113,9 @@ function handleModeTaggedAll(): void { if (all(elements)) { const [taggedVlans, untaggedVlan, vlanGroup] = elements; resetSelect(taggedVlans); - toggleVisibility(fieldContainer(vlanGroup), 'show'); - toggleVisibility(fieldContainer(untaggedVlan), 'show'); - toggleVisibility(fieldContainer(taggedVlans), 'hide'); + toggleVisibility(vlanGroup, 'show'); + toggleVisibility(untaggedVlan, 'show'); + toggleVisibility(taggedVlans, 'hide'); } } diff --git a/netbox/project-static/src/select/api/apiSelect.ts b/netbox/project-static/src/select/api/apiSelect.ts index a10f646d2..fe7c218a3 100644 --- a/netbox/project-static/src/select/api/apiSelect.ts +++ b/netbox/project-static/src/select/api/apiSelect.ts @@ -320,6 +320,7 @@ export class APISelect { this.slim.slim.multiSelected.container.setAttribute('disabled', ''); } } + this.slim.disable(); } /** @@ -335,6 +336,7 @@ export class APISelect { this.slim.slim.multiSelected.container.removeAttribute('disabled'); } } + this.slim.enable(); } /** @@ -357,6 +359,11 @@ export class APISelect { this.fetchOptions(this.more, 'merge'), ); + // When the base select element is disabled or enabled, properly disable/enable this instance. + this.base.addEventListener(`netbox.select.disabled.${this.name}`, event => + this.handleDisableEnable(event), + ); + // Create a unique iterator of all possible form fields which, when changed, should cause this // element to update its API query. // const dependencies = new Set([...this.filterParams.keys(), ...this.pathValues.keys()]); @@ -578,6 +585,23 @@ export class APISelect { Promise.all([this.loadData()]); } + /** + * Event handler to be dispatched when the base select element is disabled or enabled. When that + * occurs, run the instance's `disable()` or `enable()` methods to synchronize UI state with + * desired action. + * + * @param event Dispatched event matching pattern `netbox.select.disabled.` + */ + private handleDisableEnable(event: Event): void { + const target = event.target as HTMLSelectElement; + + if (target.disabled === true) { + this.disable(); + } else if (target.disabled === false) { + this.enable(); + } + } + /** * When the API returns an error, show it to the user and reset this element's available options. *