From 0f8bf64b74e0bb5a3f9b9b29815bdbff58d1cfd2 Mon Sep 17 00:00:00 2001 From: Iben Van de Veire Date: Thu, 16 Jan 2025 13:28:24 +0100 Subject: [PATCH] feat(ngx-core): Move simple-changes util to ngx-core --- libs/angular/core/src/index.ts | 1 + libs/angular/core/src/lib/utils/index.ts | 1 + .../simple-changes/simple-changes.util.md | 17 ++++++++++ .../simple-changes.util.spec.ts | 32 +++++++++++++++++++ .../simple-changes/simple-changes.util.ts | 10 ++++++ tsconfig.base.json | 2 +- 6 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 libs/angular/core/src/lib/utils/index.ts create mode 100644 libs/angular/core/src/lib/utils/simple-changes/simple-changes.util.md create mode 100644 libs/angular/core/src/lib/utils/simple-changes/simple-changes.util.spec.ts create mode 100644 libs/angular/core/src/lib/utils/simple-changes/simple-changes.util.ts diff --git a/libs/angular/core/src/index.ts b/libs/angular/core/src/index.ts index 5fa5b09a..5ba2871d 100644 --- a/libs/angular/core/src/index.ts +++ b/libs/angular/core/src/index.ts @@ -1 +1,2 @@ export * from './lib/services'; +export * from './lib/utils'; diff --git a/libs/angular/core/src/lib/utils/index.ts b/libs/angular/core/src/lib/utils/index.ts new file mode 100644 index 00000000..ac8ad3af --- /dev/null +++ b/libs/angular/core/src/lib/utils/index.ts @@ -0,0 +1 @@ +export * from './simple-changes/simple-changes.util'; diff --git a/libs/angular/core/src/lib/utils/simple-changes/simple-changes.util.md b/libs/angular/core/src/lib/utils/simple-changes/simple-changes.util.md new file mode 100644 index 00000000..471f804b --- /dev/null +++ b/libs/angular/core/src/lib/utils/simple-changes/simple-changes.util.md @@ -0,0 +1,17 @@ +# simpleChangeHasChanged + +Checks whether or not a simpleChange has changed + +## How to use + +```typescript +import { simpleChangeHasChanged } from "@ngx/utils"; + +// ... + +public ngOnChanges(changes: SimpleChanges): void { + if (simpleChangeHasChanged(changes.layoutType)) { + // Do something + } +} +``` diff --git a/libs/angular/core/src/lib/utils/simple-changes/simple-changes.util.spec.ts b/libs/angular/core/src/lib/utils/simple-changes/simple-changes.util.spec.ts new file mode 100644 index 00000000..e00988fa --- /dev/null +++ b/libs/angular/core/src/lib/utils/simple-changes/simple-changes.util.spec.ts @@ -0,0 +1,32 @@ +import { SimpleChange } from '@angular/core'; + +import { simpleChangeHasChanged } from './simple-changes.util'; + +it('hasChanged', () => { + let result = simpleChangeHasChanged(new SimpleChange(null, 'foo', false)); + expect(result).toEqual(true); + + result = simpleChangeHasChanged(new SimpleChange({ foo: 'bar' }, { foo: 'bar' }, false)); + expect(result).toEqual(false); + + result = simpleChangeHasChanged(new SimpleChange({ foo: 'bar' }, { foo: 'baz' }, false)); + expect(result).toEqual(true); + + result = simpleChangeHasChanged(new SimpleChange(['foo'], ['foo'], false)); + expect(result).toEqual(false); + + result = simpleChangeHasChanged(new SimpleChange(['foo'], ['bar'], false)); + expect(result).toEqual(true); + + result = simpleChangeHasChanged(new SimpleChange('foo', 'foo', false)); + expect(result).toEqual(false); + + result = simpleChangeHasChanged(new SimpleChange('foo', 'bar', false)); + expect(result).toEqual(true); + + result = simpleChangeHasChanged(new SimpleChange(0, 0, false)); + expect(result).toEqual(false); + + result = simpleChangeHasChanged(new SimpleChange(NaN, 1, false)); + expect(result).toEqual(true); +}); diff --git a/libs/angular/core/src/lib/utils/simple-changes/simple-changes.util.ts b/libs/angular/core/src/lib/utils/simple-changes/simple-changes.util.ts new file mode 100644 index 00000000..dbaf252f --- /dev/null +++ b/libs/angular/core/src/lib/utils/simple-changes/simple-changes.util.ts @@ -0,0 +1,10 @@ +import { SimpleChange } from '@angular/core'; + +/** + * Method checks if given value has changed + * @param {SimpleChange} value: value to check + * @returns {boolean} whether or not if the given input has changed + */ +export const simpleChangeHasChanged = (value: SimpleChange): boolean => { + return value && JSON.stringify(value.previousValue) !== JSON.stringify(value.currentValue); +}; diff --git a/tsconfig.base.json b/tsconfig.base.json index 940b4cb7..2b44458e 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -33,7 +33,7 @@ "@js/regex": ["libs/javascript/regex/src/index.ts"], "@js/testing": ["libs/javascript/testing/src/index.ts"], "@express/status": ["libs/express/status/src/index.ts"], - "@studiohyperdrive/ngx-core": ["libs/angular/core/src/index.ts"] + "@ngx/core": ["libs/angular/core/src/index.ts"] }, "useDefineForClassFields": false, "skipLibCheck": true,