From e02796a64ea4cd0345a755e5f7829d5326d17579 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 4 Jul 2024 10:28:52 -0400 Subject: [PATCH] Fixes #16721: Fix errant API request after deselecting a rack in device edit form --- netbox/project-static/dist/netbox.js | Bin 390786 -> 390811 bytes netbox/project-static/dist/netbox.js.map | Bin 355635 -> 355666 bytes .../src/select/classes/dynamicTomSelect.ts | 16 ++++++++++++---- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index 27db4718bed9d0d4e9b6862e03f0020a4f7d8790..618fb33d15e850ddc2c92060ce7bb0280b34c8f4 100644 GIT binary patch delta 117 zcmZpAD?a6%cALlMa;s}XBIK*D_iHJmMG+9+NNgerKgqzr52W^7MFw; z-YFaDiW!BVaOiw9dHl2R5i21_w8O6+(*fP^JiZeB*=a(?c@>!?m6sIZ_rIwTy U6%OXad=?z895<;n&ddWGdiADYeC7Jno#TuGA)8`d2n@;yB sV%DF2sfhXF^d-g27g>ul)zmbmSC=r$GHSLjD`5s=mhH<*Sid#`0GCuCvj6}9 diff --git a/netbox/project-static/dist/netbox.js.map b/netbox/project-static/dist/netbox.js.map index d54ded87b5f3bc021aade9c894a3d3f64e9e1dec..95dd32d484166f20173893ba27e4a0853282cb95 100644 GIT binary patch delta 149 zcmdmdOZ3t$(S{br7N#xC@7y>&lXTo29ldo@r<=Mn>uCYmzB-;D0xX*B=$H)TI_o>> zI669d>Nq<(Is^HhK02P$1>Kp|7=5NExijBo^q=nF!Mu+fsK*ni(b-MMeLANnv#db6 olcRf?vyQ)`qd!pGH)*@JC$l*RQ(0JhN+2^3vusZZWIZnp0P&|Px&QzG delta 117 zcmca~OLX%s(S{br7N#xC@7yNW|6`N&)p2)p^wvpsbWGOqboA7Bg78xvU43-ir~A7z zt4;su#;h~F+@1Ljqwn+(59WQ`j*gC=K*i2(I-b*IJ(*=$6CHicows{=GMjTS>4&yA P2QmXO%l76#*7MQ;6YC`e diff --git a/netbox/project-static/src/select/classes/dynamicTomSelect.ts b/netbox/project-static/src/select/classes/dynamicTomSelect.ts index 758462b60..72c9fe518 100644 --- a/netbox/project-static/src/select/classes/dynamicTomSelect.ts +++ b/netbox/project-static/src/select/classes/dynamicTomSelect.ts @@ -74,20 +74,25 @@ export class DynamicTomSelect extends TomSelect { load(value: string) { const self = this; - const url = self.getRequestUrl(value); // Automatically clear any cached options. (Only options included // in the API response should be present.) self.clearOptions(); - addClasses(self.wrapper, self.settings.loadingClass); - self.loading++; - // Populate the null option (if any) if not searching if (self.nullOption && !value) { self.addOption(self.nullOption); } + // Get the API request URL. If none is provided, abort as no request can be made. + const url = self.getRequestUrl(value); + if (!url) { + return; + } + + addClasses(self.wrapper, self.settings.loadingClass); + self.loading++; + // Make the API request fetch(url) .then(response => response.json()) @@ -129,6 +134,9 @@ export class DynamicTomSelect extends TomSelect { for (const result of this.api_url.matchAll(new RegExp(`({{${key}}})`, 'g'))) { if (value) { url = replaceAll(url, result[1], value.toString()); + } else { + // No value is available to replace the token; abort. + return ''; } } }