Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@ngneat/reactive-forms

Package Overview
Dependencies
Maintainers
3
Versions
53
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ngneat/reactive-forms - npm Package Compare versions

Comparing version 1.6.0 to 1.7.0

11

bundles/ngneat-reactive-forms.umd.js

@@ -340,2 +340,13 @@ (function (global, factory) {

}
function isObjectEmpty(obj) {
return Object.keys(obj).length === 0 && obj.constructor === Object;
}
/**
* @return {boolean} True if arrays are identical.
*/
function compareArraysContent(left, right) {
left = Array.isArray(left) ? left : [];
right = Array.isArray(right) ? right : [];
return left.length === right.length && left.every(function (value) { return right.includes(value); });
}

@@ -342,0 +353,0 @@ function getControlValue(control) {

13

esm2015/lib/utils.js

@@ -34,2 +34,13 @@ import { from, isObservable, of } from 'rxjs';

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL25ldGFuZWxiYXNhbC93d3cvcmVhY3RpdmUtZm9ybXMvcHJvamVjdHMvbmduZWF0L3JlYWN0aXZlLWZvcm1zL3NyYy8iLCJzb3VyY2VzIjpbImxpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUQsTUFBTSxVQUFVLFdBQVcsQ0FBSSxLQUFjO0lBQzNDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLENBQU07SUFDL0IsT0FBTyxPQUFPLENBQUMsS0FBSyxVQUFVLENBQUM7QUFDakMsQ0FBQztBQUVELE1BQU0sVUFBVSxLQUFLLENBQUMsQ0FBTTtJQUMxQixPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FBQztBQUN2QyxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFVO0lBQ2xDLE9BQU8sUUFBTyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsSUFBSSxDQUFBLEtBQUssVUFBVSxDQUFDO0FBQzNDLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUksS0FBcUM7SUFDekUsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQzNDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3BCO0lBRUQsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUksUUFBb0IsRUFBRSxLQUFpQjtJQUNwRSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCx1Q0FDSyxRQUFRLEdBQ1IsS0FBSyxFQUNSO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUksTUFBUyxFQUFFLEdBQVk7SUFDcEQsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxNQUFNLGFBQWEscUJBQ2QsTUFBTSxDQUNWLENBQUM7SUFDRixPQUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDdEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb20sIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUFycmF5PFQ+KHZhbHVlOiBUIHwgVFtdKTogVFtdIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGdW5jdGlvbih4OiBhbnkpOiB4IGlzIEZ1bmN0aW9uIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOaWwodjogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiB2ID09PSBudWxsIHx8IHYgPT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvbWlzZSh2YWx1ZTogYW55KTogdmFsdWUgaXMgUHJvbWlzZTx1bmtub3duPiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWU/LnRoZW4gPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwSW50b09ic2VydmFibGU8VD4odmFsdWU6IFQgfCBQcm9taXNlPFQ+IHwgT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD4ge1xuICBpZiAoaXNPYnNlcnZhYmxlKHZhbHVlKSB8fCBpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZyb20odmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIG9mKHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRXJyb3JzPEU+KGV4aXN0aW5nOiBQYXJ0aWFsPEU+LCB0b0FkZDogUGFydGlhbDxFPikge1xuICBpZiAoIWV4aXN0aW5nICYmICF0b0FkZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4uZXhpc3RpbmcsXG4gICAgLi4udG9BZGRcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUVycm9yPEU+KGVycm9yczogRSwga2V5OiBrZXlvZiBFKSB7XG4gIGlmICghZXJyb3JzKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgdXBkYXRlZEVycm9ycyA9IHtcbiAgICAuLi5lcnJvcnNcbiAgfTtcbiAgZGVsZXRlIHVwZGF0ZWRFcnJvcnNba2V5XTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHVwZGF0ZWRFcnJvcnMpLmxlbmd0aCA+IDAgPyB1cGRhdGVkRXJyb3JzIDogbnVsbDtcbn1cbiJdfQ==
export function isObjectEmpty(obj) {
return Object.keys(obj).length === 0 && obj.constructor === Object;
}
/**
* @return {boolean} True if arrays are identical.
*/
export function compareArraysContent(left, right) {
left = Array.isArray(left) ? left : [];
right = Array.isArray(right) ? right : [];
return left.length === right.length && left.every(value => right.includes(value));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL25ldGFuZWxiYXNhbC93d3cvcmVhY3RpdmUtZm9ybXMvcHJvamVjdHMvbmduZWF0L3JlYWN0aXZlLWZvcm1zL3NyYy8iLCJzb3VyY2VzIjpbImxpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUQsTUFBTSxVQUFVLFdBQVcsQ0FBSSxLQUFjO0lBQzNDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLENBQU07SUFDL0IsT0FBTyxPQUFPLENBQUMsS0FBSyxVQUFVLENBQUM7QUFDakMsQ0FBQztBQUVELE1BQU0sVUFBVSxLQUFLLENBQUMsQ0FBTTtJQUMxQixPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FBQztBQUN2QyxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFVO0lBQ2xDLE9BQU8sUUFBTyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsSUFBSSxDQUFBLEtBQUssVUFBVSxDQUFDO0FBQzNDLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUksS0FBcUM7SUFDekUsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQzNDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3BCO0lBRUQsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUksUUFBb0IsRUFBRSxLQUFpQjtJQUNwRSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCx1Q0FDSyxRQUFRLEdBQ1IsS0FBSyxFQUNSO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUksTUFBUyxFQUFFLEdBQVk7SUFDcEQsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxNQUFNLGFBQWEscUJBQ2QsTUFBTSxDQUNWLENBQUM7SUFDRixPQUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDdEUsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBRztJQUMvQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsV0FBVyxLQUFLLE1BQU0sQ0FBQztBQUNyRSxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQWUsSUFBTyxFQUFFLEtBQVE7SUFDbEUsSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUUsRUFBUSxDQUFDO0lBQzlDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFFLEVBQVEsQ0FBQztJQUNqRCxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3BGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcm9tLCBpc09ic2VydmFibGUsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VBcnJheTxUPih2YWx1ZTogVCB8IFRbXSk6IFRbXSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRnVuY3Rpb24oeDogYW55KTogeCBpcyBGdW5jdGlvbiB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTmlsKHY6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdiA9PT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UodmFsdWU6IGFueSk6IHZhbHVlIGlzIFByb21pc2U8dW5rbm93bj4ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlPy50aGVuID09PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcEludG9PYnNlcnZhYmxlPFQ+KHZhbHVlOiBUIHwgUHJvbWlzZTxUPiB8IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgaWYgKGlzT2JzZXJ2YWJsZSh2YWx1ZSkgfHwgaXNQcm9taXNlKHZhbHVlKSkge1xuICAgIHJldHVybiBmcm9tKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiBvZih2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUVycm9yczxFPihleGlzdGluZzogUGFydGlhbDxFPiwgdG9BZGQ6IFBhcnRpYWw8RT4pIHtcbiAgaWYgKCFleGlzdGluZyAmJiAhdG9BZGQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLmV4aXN0aW5nLFxuICAgIC4uLnRvQWRkXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVFcnJvcjxFPihlcnJvcnM6IEUsIGtleToga2V5b2YgRSkge1xuICBpZiAoIWVycm9ycykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHVwZGF0ZWRFcnJvcnMgPSB7XG4gICAgLi4uZXJyb3JzXG4gIH07XG4gIGRlbGV0ZSB1cGRhdGVkRXJyb3JzW2tleV07XG4gIHJldHVybiBPYmplY3Qua2V5cyh1cGRhdGVkRXJyb3JzKS5sZW5ndGggPiAwID8gdXBkYXRlZEVycm9ycyA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdEVtcHR5KG9iaikge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT09IDAgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBPYmplY3Q7XG59XG5cbi8qKlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBhcnJheXMgYXJlIGlkZW50aWNhbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmVBcnJheXNDb250ZW50PFQgZXh0ZW5kcyBbXT4obGVmdDogVCwgcmlnaHQ6IFQpOiBib29sZWFuIHtcbiAgbGVmdCA9IEFycmF5LmlzQXJyYXkobGVmdCkgPyBsZWZ0IDogKFtdIGFzIFQpO1xuICByaWdodCA9IEFycmF5LmlzQXJyYXkocmlnaHQpID8gcmlnaHQgOiAoW10gYXMgVCk7XG4gIHJldHVybiBsZWZ0Lmxlbmd0aCA9PT0gcmlnaHQubGVuZ3RoICYmIGxlZnQuZXZlcnkodmFsdWUgPT4gcmlnaHQuaW5jbHVkZXModmFsdWUpKTtcbn1cbiJdfQ==

@@ -38,2 +38,13 @@ import { FormArray as FormArray$1, FormControl as FormControl$1, FormGroup as FormGroup$1, FormBuilder as FormBuilder$1 } from '@angular/forms';

}
function isObjectEmpty(obj) {
return Object.keys(obj).length === 0 && obj.constructor === Object;
}
/**
* @return {boolean} True if arrays are identical.
*/
function compareArraysContent(left, right) {
left = Array.isArray(left) ? left : [];
right = Array.isArray(right) ? right : [];
return left.length === right.length && left.every(value => right.includes(value));
}

@@ -40,0 +51,0 @@ function getControlValue(control) {

@@ -9,1 +9,6 @@ import { Observable } from 'rxjs';

export declare function removeError<E>(errors: E, key: keyof E): E;
export declare function isObjectEmpty(obj: any): boolean;
/**
* @return {boolean} True if arrays are identical.
*/
export declare function compareArraysContent<T extends []>(left: T, right: T): boolean;

2

package.json
{
"name": "@ngneat/reactive-forms",
"description": "(Angular Reactive) Forms with Benefits",
"version": "1.6.0",
"version": "1.7.0",
"schematics": "./schematics/collection.json",

@@ -6,0 +6,0 @@ "keywords": [

@@ -26,2 +26,4 @@ <p align="center">

✅ Offers (almost) seamless `FormControl`, `FormGroup`, `FormArray` Replacement<br>

@@ -45,2 +47,3 @@ ✅ Allows Typed Forms! <br>

- [Control Errors](#control-errors)
- [Control Operators](#control-operators)
- [ControlValueAccessor](#controlvalueaccessor)

@@ -84,3 +87,3 @@ - [Form Builder](#form-builder)

```ts
import { FormGroup } from '@ngneat/reactive-forms';
import { FormGroup, FormControl } from '@ngneat/reactive-forms';

@@ -114,3 +117,3 @@ interface Profile {

```ts
import { FormGroup } from '@ngneat/reactive-forms';
import { FormGroup, FormControl } from '@ngneat/reactive-forms';

@@ -476,3 +479,24 @@ interface ProfileControls {

```
## Control Operators
Each `valueChanges` or `values$` takes an operator `diff()`, which emits only changed parts of form:
```ts
import { FormGroup, FormControl } from '@ngneat/reactive-forms';
const control = new FormGroup<string>({
name: new FormControl(''),
phone: new FormGroup({
num: new FormControl(),
prefix: new FormControl()
}),
skills: new FormArray([])
});
control.value$
.pipe(diff())
.subscribe(value => {
// value is emitted only if it has been changed, and only the changed parts.
});
```
## ControlValueAccessor

@@ -479,0 +503,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc