From ab43bcf08a15aaa9fdb97d584b4eb7ef6811395f Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Wed, 18 Aug 2021 04:43:21 -0400 Subject: [PATCH] Fix url util converting `false` into `true` (#37402) (#37997) A value of key-value pair is stripped for boolean values. While this is ok for `true`, it kind of inverts `false` (cherry picked from commit 9900f2ed487748c77ec14bc51adff443c3d0d4ac) Co-authored-by: Simon Podlipsky --- packages/grafana-data/src/utils/url.test.ts | 8 ++++++++ packages/grafana-data/src/utils/url.ts | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/grafana-data/src/utils/url.test.ts b/packages/grafana-data/src/utils/url.test.ts index cbcfcb24359..28e70d6fb73 100644 --- a/packages/grafana-data/src/utils/url.test.ts +++ b/packages/grafana-data/src/utils/url.test.ts @@ -22,6 +22,14 @@ describe('toUrlParams', () => { }); expect(url).toBe('server=:@'); }); + + it('should keep booleans', () => { + const url = urlUtil.toUrlParams({ + bool1: true, + bool2: false, + }); + expect(url).toBe('bool1&bool2=false'); + }); }); describe('parseKeyValue', () => { diff --git a/packages/grafana-data/src/utils/url.ts b/packages/grafana-data/src/utils/url.ts index 545c440a762..3e53a71578d 100644 --- a/packages/grafana-data/src/utils/url.ts +++ b/packages/grafana-data/src/utils/url.ts @@ -48,7 +48,8 @@ function toUrlParams(a: any) { if (typeof v !== 'boolean') { s[s.length] = encodeURIComponentAsAngularJS(k, true) + '=' + encodeURIComponentAsAngularJS(v, true); } else { - s[s.length] = encodeURIComponentAsAngularJS(k, true); + const valueQueryPart = v ? '' : '=' + encodeURIComponentAsAngularJS('false', true); + s[s.length] = encodeURIComponentAsAngularJS(k, true) + valueQueryPart; } };