diff --git a/package.json b/package.json index 8e41d79b9..273bc2b33 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,10 @@ "prepare": "husky install" }, "private": true, + "repository": { + "type": "git", + "url": "https://github.com/dereekb/dbcomponents" + }, "dependencies": { "@angular/animations": "^13.0.0", "@angular/cdk": "^13.0.0", @@ -50,7 +54,7 @@ "lodash.isequal": "^4.5.0", "mat-progress-buttons": "git+https://git@github.com/dereekb/mat-progress-buttons.git#60b0374a45644e8756f20b8d761738151ca3df64", "ms": "^3.0.0-canary.1", - "ng-overlay-container": "git+https://git@github.com/dereekb/ng-overlay-container.git#24931e7094c4f8f76bda061d044426febf810a4f", + "ng-overlay-container": "^13.0.0", "ngx-editor": "^12.1.1", "ngx-infinite-scroll": "^10.0.1", "ngx-mat-intl-tel-input": "^4.1.0", diff --git a/packages/util/src/lib/array/array.set.ts b/packages/util/src/lib/array/array.set.ts index 4150f4742..a330907b8 100644 --- a/packages/util/src/lib/array/array.set.ts +++ b/packages/util/src/lib/array/array.set.ts @@ -52,11 +52,15 @@ export function filterValuesFromSet(values: T[], set: Set, exclude = false /** * Returns true if the input array contains any value from the second array. */ -export function containsAnyValue(values: T[], valuesToFind: T[]): boolean { +export function containsAnyValue(values: Iterable, valuesToFind: Iterable): boolean { const set = new Set(valuesToFind); - return setContainsAnyValue(values, set); + return containsAnyValueFromSet(values, set); } -export function setContainsAnyValue(values: T[], valuesToFind: Set): boolean { - return (values) ? values.findIndex((x) => valuesToFind.has(x)) !== -1 : false; +export function containsAnyValueFromSet(values: Iterable, valuesToFind: Set): boolean { + return setContainsAnyValue(valuesToFind, values); +} + +export function setContainsAnyValue(valuesSet: Set, valuesToFind: Iterable): boolean { + return (valuesSet) ? Array.from(valuesToFind).findIndex((x) => valuesSet.has(x)) !== -1 : false; } diff --git a/packages/util/src/lib/array/array.spec.ts b/packages/util/src/lib/array/array.spec.ts index 79b9e367e..f97ffe56b 100644 --- a/packages/util/src/lib/array/array.spec.ts +++ b/packages/util/src/lib/array/array.spec.ts @@ -1,4 +1,5 @@ import { mergeIntoArray, range } from '@dereekb/util'; +import { containsAnyValue, containsAnyValueFromSet, setContainsAnyValue } from '..'; import { takeLast } from './array'; describe('takeLast', () => { @@ -73,7 +74,7 @@ describe('mergeIntoArray', () => { it('should add the values from the second array into the target array in the same order.', () => { const initial = [0]; - const second = range({ start: 1, end: 5}); + const second = range({ start: 1, end: 5 }); const target = [...initial]; const result = mergeIntoArray(target, second); @@ -89,7 +90,7 @@ describe('mergeIntoArray', () => { it('should add the values from the second and third array into the target array in the same order.', () => { const initial = [0]; - const second = range({ start: 1, end: 5}); + const second = range({ start: 1, end: 5 }); const target = [...initial]; const result = mergeIntoArray(target, second, second); // second twice @@ -107,3 +108,65 @@ describe('mergeIntoArray', () => { }); }); + +describe('containsAnyValue', () => { + + it('should return true if the array contains any value from the set.', () => { + const value = 'a'; + const set = new Set([value]); + + expect(set.has(value)); + expect(containsAnyValue(set, [value])).toBe(true); + }); + + it('should return true if the array contains any value from the array.', () => { + const value = 'a'; + const array = [value]; + + expect(array.indexOf(value) !== -1); + expect(containsAnyValue(array, [value])).toBe(false); + }); + + it('should return false if the array does not contain a value from the array.', () => { + const value = 'a'; + const array = [value]; + expect(containsAnyValue(array, [])).toBe(false); + }); + +}); + +describe('containsAnyValueFromSet', () => { + + it('should return true if the array contains any value from the set.', () => { + const value = 'a'; + const set = new Set([value]); + + expect(set.has(value)); + expect(containsAnyValueFromSet([value], set)).toBe(true); + }); + + it('should return false if the array does not contain a value from the set.', () => { + const value = 'a'; + const set = new Set(); + expect(containsAnyValueFromSet([value], set)).toBe(false); + }); + +}); + +describe('setContainsAnyValue', () => { + + it('should return true if the set contains the value.', () => { + const value = 'a'; + const set = new Set([value]); + + expect(set.has(value)); + expect(setContainsAnyValue(set, [value])).toBe(true); + }); + + it('should return false if the set does not contain the value.', () => { + const value = 'a'; + const set = new Set(); + expect(setContainsAnyValue(set, [value])).toBe(false); + }); + +});