From 9900f2ed487748c77ec14bc51adff443c3d0d4ac Mon Sep 17 00:00:00 2001 From: Simon Podlipsky Date: Wed, 18 Aug 2021 10:10:29 +0200 Subject: [PATCH] Fix url util converting `false` into `true` (#37402) A value of key-value pair is stripped for boolean values. While this is ok for `true`, it kind of inverts `false` --- 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; } };