diff --git a/CHANGELOG.md b/CHANGELOG.md index 03022e6..a25bd48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] +## [3.0.2] - 2023-01-20 + +## Fixed + +- Fixed when filtering with an operator, object is added as a value ([#361](https://github.com/reyesoft/ngx-jsonapi/pull/361)) + ## [3.0.0] - 2021-12-23 ## Changed diff --git a/src/package.json b/src/package.json index f3eb182..5111380 100644 --- a/src/package.json +++ b/src/package.json @@ -1,6 +1,6 @@ { "name": "ngx-jsonapi", - "version": "3.0.0", + "version": "3.0.2", "description": "JSON API library for Angular", "module": "ngx-jsonapi/@ngx-jsonapi/ngx-jsonapi.es5.js", "es2015": "ngx-jsonapi/@ngx-jsonapi/ngx-jsonapi.js", diff --git a/src/services/path-collection-builder.spec.ts b/src/services/path-collection-builder.spec.ts index 5dd47a9..cf59103 100644 --- a/src/services/path-collection-builder.spec.ts +++ b/src/services/path-collection-builder.spec.ts @@ -58,6 +58,11 @@ describe('Path Builder', () => { expect(path_collection_builder.get().includes('filter[field]=foo%26bar')).toBeTruthy(); }); + it('if filter with operator (ne) they should be formatted and included in get_params', () => { + path_collection_builder.applyParams(testService, { remotefilter: { status: { ne: 'archived' } } }); + expect(path_collection_builder.get().includes('filter[status][ne]=archived')).toBeTruthy(); + }); + it('if page params are provided, applyParams should call addParam one or two times with the page number and size', () => { Core.me.injectedServices.rsJsonapiConfig.parameters.page.number = 'page_index'; Core.me.injectedServices.rsJsonapiConfig.parameters.page.size = 'page_size'; diff --git a/src/services/url-params-builder.ts b/src/services/url-params-builder.ts index 820f727..311a34f 100644 --- a/src/services/url-params-builder.ts +++ b/src/services/url-params-builder.ts @@ -14,7 +14,8 @@ export class UrlParamsBuilder { let ret = ''; if (Array.isArray(params) || params instanceof Object) { Base.forEach(params, (value, key) => { - ret += this.toparamsarray(encodeURIComponent(value), add + '[' + key + ']'); + let valueEncodeOrNot = value instanceof Object ? value : encodeURIComponent(value); + ret += this.toparamsarray(valueEncodeOrNot, add + '[' + key + ']'); }); } else { ret += add + '=' + params;