├── .editorconfig ├── .eslintrc.json ├── .github ├── ISSUE_TEMPLATE │ ├── 1-bug-report.yaml │ ├── 2-feature-request.yaml │ └── 3-support-request.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ └── ci.yml ├── .gitignore ├── .husky └── commit-msg ├── .prettierignore ├── .prettierrc ├── .vscode └── extensions.json ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── README.md ├── angular.json ├── apps ├── .gitkeep ├── playground-e2e │ ├── .eslintrc.json │ ├── cypress.json │ ├── src │ │ ├── fixtures │ │ │ └── example.json │ │ ├── integration │ │ │ └── app.spec.ts │ │ └── support │ │ │ ├── app.po.ts │ │ │ ├── commands.ts │ │ │ └── index.ts │ └── tsconfig.json └── playground │ ├── .browserslistrc │ ├── .eslintrc.json │ ├── jest.config.js │ ├── src │ ├── app │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── demo │ │ │ ├── demo.component.css │ │ │ ├── demo.component.html │ │ │ ├── demo.component.spec.ts │ │ │ └── demo.component.ts │ │ └── user.interfaces.ts │ ├── assets │ │ └── .gitkeep │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.css │ └── test-setup.ts │ ├── tsconfig.app.json │ ├── tsconfig.editor.json │ ├── tsconfig.json │ └── tsconfig.spec.json ├── decorate-angular-cli.js ├── jest.config.js ├── jest.preset.js ├── libs ├── .gitkeep ├── eslint-plugin-reactive-forms │ ├── README.md │ ├── docs │ │ └── rules │ │ │ └── no-angular-forms-imports.md │ ├── lib │ │ ├── index.js │ │ └── rules │ │ │ └── no-angular-forms-imports.js │ ├── package-lock.json │ ├── package.json │ └── tests │ │ └── lib │ │ └── rules │ │ └── no-angular-forms-imports.js └── reactive-forms │ ├── .eslintrc.json │ ├── README.md │ ├── jest.config.js │ ├── ng-package.json │ ├── package.json │ ├── project.json │ ├── src │ ├── index.ts │ ├── lib │ │ ├── control-value.accessor.ts │ │ ├── core.ts │ │ ├── form-array.spec.ts │ │ ├── form-array.ts │ │ ├── form-builder.spec.ts │ │ ├── form-builder.ts │ │ ├── form-control.spec.ts │ │ ├── form-control.ts │ │ ├── form-group.spec.ts │ │ ├── form-group.ts │ │ ├── operators │ │ │ ├── diff.spec.ts │ │ │ └── diff.ts │ │ ├── persist │ │ │ ├── persist.spec.ts │ │ │ └── persist.ts │ │ └── types.ts │ └── test-setup.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ ├── tsconfig.lib.prod.json │ └── tsconfig.spec.json ├── logo.svg ├── migrations.json ├── nx.json ├── package-lock.json ├── package.json ├── tools ├── generators │ └── .gitkeep └── tsconfig.tools.json └── tsconfig.base.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "ignorePatterns": ["**/*"], 4 | "plugins": ["@nrwl/nx"], 5 | "overrides": [ 6 | { 7 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], 8 | "rules": { 9 | "@nrwl/nx/enforce-module-boundaries": [ 10 | "error", 11 | { 12 | "enforceBuildableLibDependency": true, 13 | "allow": [], 14 | "depConstraints": [ 15 | { 16 | "sourceTag": "*", 17 | "onlyDependOnLibsWithTags": ["*"] 18 | } 19 | ] 20 | } 21 | ] 22 | } 23 | }, 24 | { 25 | "files": ["*.ts", "*.tsx"], 26 | "extends": ["plugin:@nrwl/nx/typescript"], 27 | "rules": {} 28 | }, 29 | { 30 | "files": ["*.js", "*.jsx"], 31 | "extends": ["plugin:@nrwl/nx/javascript"], 32 | "rules": {} 33 | } 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/1-bug-report.yaml: -------------------------------------------------------------------------------- 1 | name: Bug Report 2 | description: Report a bug in the Reactive Forms Library 3 | 4 | body: 5 | - type: dropdown 6 | id: is-regression 7 | attributes: 8 | label: Is this a regression? 9 | options: 10 | - 'Yes' 11 | - 'No' 12 | validations: 13 | required: true 14 | 15 | - type: textarea 16 | id: description 17 | attributes: 18 | label: Description 19 | validations: 20 | required: true 21 | 22 | - type: input 23 | id: reproduction 24 | attributes: 25 | label: Please provide a link to a minimal reproduction of the bug 26 | 27 | - type: textarea 28 | id: exception-or-error 29 | attributes: 30 | label: Please provide the exception or error you saw 31 | render: true 32 | 33 | - type: textarea 34 | id: environment 35 | attributes: 36 | label: Please provide the environment you discovered this bug in 37 | render: true 38 | 39 | - type: textarea 40 | id: other 41 | attributes: 42 | label: Anything else? 43 | 44 | - type: dropdown 45 | id: contribute 46 | attributes: 47 | label: Do you want to create a pull request? 48 | options: 49 | - 'Yes' 50 | - 'No' 51 | validations: 52 | required: true 53 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/2-feature-request.yaml: -------------------------------------------------------------------------------- 1 | name: 'Feature Request' 2 | description: Suggest a feature for Reactive Forms Library 3 | 4 | body: 5 | - type: textarea 6 | id: description 7 | attributes: 8 | label: Description 9 | validations: 10 | required: true 11 | 12 | - type: textarea 13 | id: proposed-solution 14 | attributes: 15 | label: Proposed solution 16 | validations: 17 | required: true 18 | 19 | - type: textarea 20 | id: alternatives-considered 21 | attributes: 22 | label: Alternatives considered 23 | validations: 24 | required: true 25 | 26 | - type: dropdown 27 | id: contribute 28 | attributes: 29 | label: Do you want to create a pull request? 30 | options: 31 | - 'Yes' 32 | - 'No' 33 | validations: 34 | required: true -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/3-support-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 'Support Request' 3 | about: Questions and requests for support 4 | --- 5 | 6 | Please do not file questions or support requests on the GitHub issues tracker. 7 | 8 | You can get your questions answered using other communication channels. Please see: 9 | 10 | https://github.com/ngneat/reactive-forms/discussions 11 | 12 | Thank you! 13 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## PR Checklist 2 | 3 | Please check if your PR fulfills the following requirements: 4 | 5 | - [ ] The commit message follows our guidelines: https://github.com/ngneat/reactive-forms/blob/master/CONTRIBUTING.md#commit 6 | - [ ] Tests for the changes have been added (for bug fixes / features) 7 | - [ ] Docs have been added / updated (for bug fixes / features) 8 | 9 | ## PR Type 10 | 11 | What kind of change does this PR introduce? 12 | 13 | 14 | 15 | ``` 16 | [ ] Bugfix 17 | [ ] Feature 18 | [ ] Code style update (formatting, local variables) 19 | [ ] Refactoring (no functional changes, no api changes) 20 | [ ] Build related changes 21 | [ ] CI related changes 22 | [ ] Documentation content changes 23 | [ ] Other... Please describe: 24 | ``` 25 | 26 | ## What is the current behavior? 27 | 28 | 29 | 30 | Issue Number: N/A 31 | 32 | ## What is the new behavior? 33 | 34 | ## Does this PR introduce a breaking change? 35 | 36 | ``` 37 | [ ] Yes 38 | [ ] No 39 | ``` 40 | 41 | 42 | 43 | ## Other information 44 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: '@ngneat/reactive-forms' 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | pull_request: 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | strategy: 13 | fail-fast: true 14 | 15 | steps: 16 | - uses: actions/checkout@v2 17 | - name: Cache node modules 18 | uses: actions/cache@v2 19 | env: 20 | cache-name: cache-node-modules 21 | with: 22 | path: ~/.npm 23 | key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} 24 | restore-keys: | 25 | ${{ runner.os }}-build-${{ env.cache-name }}- 26 | ${{ runner.os }}-build- 27 | ${{ runner.os }}- 28 | - uses: actions/setup-node@v2 29 | with: 30 | node-version: '14' 31 | cache: 'npm' 32 | 33 | - name: Install dependencies 34 | run: npm i 35 | 36 | - name: Run ESLint 37 | run: npm run lint:all 38 | 39 | - name: Run Build 40 | run: npm run build:all 41 | 42 | - name: Run unit tests 43 | run: npm run test:all 44 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | 8 | # dependencies 9 | node_modules 10 | 11 | # IDEs and editors 12 | /.idea 13 | .project 14 | .classpath 15 | .c9/ 16 | *.launch 17 | .settings/ 18 | *.sublime-workspace 19 | 20 | # IDE - VSCode 21 | .vscode/* 22 | !.vscode/settings.json 23 | !.vscode/tasks.json 24 | !.vscode/launch.json 25 | !.vscode/extensions.json 26 | 27 | # misc 28 | /.angular/cache 29 | /.sass-cache 30 | /connect.lock 31 | /coverage 32 | /libpeerconnection.log 33 | npm-debug.log 34 | yarn-error.log 35 | testem.log 36 | /typings 37 | 38 | # System Files 39 | .DS_Store 40 | Thumbs.db 41 | -------------------------------------------------------------------------------- /.husky/commit-msg: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx --no-install commitlint --edit $1 5 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Add files here to ignore them from prettier formatting 2 | 3 | /dist 4 | /coverage 5 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true 3 | } 4 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "angular.ng-template", 4 | "nrwl.angular-console", 5 | "esbenp.prettier-vscode", 6 | "firsttris.vscode-jest-runner", 7 | "dbaeumer.vscode-eslint" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. 4 | 5 | ### [5.0.2](https://github.com/ngneat/reactive-forms/compare/v5.0.1...v5.0.2) (2022-12-04) 6 | 7 | 8 | ### Bug Fixes 9 | 10 | * markAsTouched typings to hadnle onlySelf argument ([d8352ea](https://github.com/ngneat/reactive-forms/commit/d8352ea0692ba17d48d1dbd3103ac88469380360)) 11 | 12 | ### [5.0.1](https://github.com/ngneat/reactive-forms/compare/v5.0.0...v5.0.1) (2022-08-03) 13 | 14 | 15 | ### Bug Fixes 16 | 17 | * incorrect typing of FormArray value for complex models ([7dc954f](https://github.com/ngneat/reactive-forms/commit/7dc954fb7ab480a9d4ece63f8b6bbfd52c03b08d)) 18 | 19 | ## [5.0.0](https://github.com/ngneat/reactive-forms/compare/v4.1.0...v5.0.0) (2022-06-10) 20 | 21 | 22 | ### ⚠ BREAKING CHANGES 23 | 24 | * The library now requires Angular v14 25 | 26 | ### Features 27 | 28 | * upgrade to Angular 14 ([9677e32](https://github.com/ngneat/reactive-forms/commit/9677e3220817d84a0da8097b9034bb21adbea14e)), closes [#164](https://github.com/ngneat/reactive-forms/issues/164) 29 | 30 | ## [4.1.0](https://github.com/ngneat/reactive-forms/compare/v4.0.4...v4.1.0) (2022-04-10) 31 | 32 | 33 | ### Features 34 | 35 | * **reactive-forms:** add invalid$ and valid$ ([f232fa1](https://github.com/ngneat/reactive-forms/commit/f232fa139eca7851d2643adc55e3fe7bf24de367)) 36 | 37 | 38 | ### Bug Fixes 39 | 40 | * readme typo ([2a0358f](https://github.com/ngneat/reactive-forms/commit/2a0358fbbcf02e245808d41200ccecdfb9544269)) 41 | 42 | ### [4.0.4](https://github.com/ngneat/reactive-forms/compare/v4.0.3...v4.0.4) (2022-01-12) 43 | 44 | 45 | ### Bug Fixes 46 | 47 | * wrong usage of Control generic type in FormArray for FormBuilder and for ValuesOf ([849500f](https://github.com/ngneat/reactive-forms/commit/849500f263f7dbb630d29f54cca1c751ecbf4369)) 48 | 49 | ### [4.0.3](https://github.com/ngneat/reactive-forms/compare/v4.0.2...v4.0.3) (2022-01-04) 50 | 51 | 52 | ### Bug Fixes 53 | 54 | * markAllDirty(FormGroup) not marking children ([5dcab34](https://github.com/ngneat/reactive-forms/commit/5dcab341b8d232e2b837125f435f2f9c48f17682)), closes [#135](https://github.com/ngneat/reactive-forms/issues/135) 55 | 56 | ### [4.0.2](https://github.com/ngneat/reactive-forms/compare/v4.0.1...v4.0.2) (2021-12-02) 57 | 58 | 59 | ### Bug Fixes 60 | 61 | * 🐛 remove redundant peer deps ([e795e69](https://github.com/ngneat/reactive-forms/commit/e795e69bc1a3d0a139a693cccc519883e3029f4d)), closes [#130](https://github.com/ngneat/reactive-forms/issues/130) 62 | 63 | ### [4.0.1](https://github.com/ngneat/reactive-forms/compare/v4.0.0...v4.0.1) (2021-11-27) 64 | 65 | 66 | ### Bug Fixes 67 | 68 | * 🐛 fix peer dep of rxjs ([1f4cd3a](https://github.com/ngneat/reactive-forms/commit/1f4cd3a9fea9bc157d635439fe897b7696f84386)), closes [#126](https://github.com/ngneat/reactive-forms/issues/126) 69 | 70 | ## [4.0.0](https://github.com/ngneat/reactive-forms/compare/v3.1.4...v4.0.0) (2021-11-20) 71 | 72 | 73 | ### ⚠ BREAKING CHANGES 74 | 75 | * 🧨 The library now requires Angular v13 76 | 77 | ### Features 78 | 79 | * 🎸 upgrade to Angular v13 ([26dab48](https://github.com/ngneat/reactive-forms/commit/26dab48955ce3ca81d572cd76934d98ab3f8c718)), closes [#117](https://github.com/ngneat/reactive-forms/issues/117) 80 | 81 | ### [3.1.4](https://github.com/ngneat/reactive-forms/compare/v3.1.3...v3.1.4) (2021-11-17) 82 | 83 | 84 | ### Bug Fixes 85 | 86 | * 🐛 form array get raw value should work ([565c885](https://github.com/ngneat/reactive-forms/commit/565c885ca5f0887429bee8cf50f2eab9e2485299)), closes [#116](https://github.com/ngneat/reactive-forms/issues/116) 87 | 88 | ### [3.1.3](https://github.com/ngneat/reactive-forms/compare/v3.1.1...v3.1.3) (2021-10-28) 89 | 90 | 91 | ### Bug Fixes 92 | 93 | * 🐛 fix type of enable disable ([67a5490](https://github.com/ngneat/reactive-forms/commit/67a549046ffa874048d1cdeb9c35185be8f3a243)), closes [#115](https://github.com/ngneat/reactive-forms/issues/115) 94 | * 🐛 fix type of status$ property ([a106a3e](https://github.com/ngneat/reactive-forms/commit/a106a3e79569b085c101155ec3c946b8c2276fdf)), closes [#113](https://github.com/ngneat/reactive-forms/issues/113) 95 | 96 | ### [3.1.2](https://github.com/ngneat/reactive-forms/compare/v3.1.1...v3.1.2) (2021-10-25) 97 | 98 | 99 | ### Bug Fixes 100 | 101 | * 🐛 fix type of status$ property ([a106a3e](https://github.com/ngneat/reactive-forms/commit/a106a3e79569b085c101155ec3c946b8c2276fdf)), closes [#113](https://github.com/ngneat/reactive-forms/issues/113) 102 | 103 | ## [3.1.0](https://github.com/ngneat/reactive-forms/compare/v3.0.0...v3.1.0) (2021-10-21) 104 | 105 | 106 | ### Features 107 | 108 | * bump rule ([8f9fa05](https://github.com/ngneat/reactive-forms/commit/8f9fa0570ac11cd73f4af0c310d308712bab20b6)) 109 | 110 | 111 | ### Bug Fixes 112 | 113 | * **controlsOf:** allow using optional fields ([513beee](https://github.com/ngneat/reactive-forms/commit/513beee460643b8bd0265cb7ef72399bc6d4542b)), closes [#111](https://github.com/ngneat/reactive-forms/issues/111) 114 | 115 | ## [3.0.0](https://github.com/ngneat/reactive-forms/compare/v1.7.5...v3.0.0) (2021-10-08) 116 | 117 | 118 | ### ⚠ BREAKING CHANGES 119 | 120 | * **library:** refactor the entire code 121 | 122 | I completely rewrote the library from scratch for two reasons: 123 | 1. Provide as much support as possible without introducing bugs, breaking strict mode, or creating an inconvenient API. 124 | 2. Reduce the library size. 125 | 126 | Here are the changes: 127 | - Angular's peer dependency is now `>= 12`. 128 | - FormGroup's generic was removed in favor of the **experimental** `ControlsOf` interface. 129 | - Remove `mergeValidators`. Use addValidators in v12. 130 | - Remove `validateOn`. 131 | - Remove `getControl` in favor of `get(key)` or `get(['nested', 'key'])`. 132 | - Remove errors typing. 133 | - Validators should now be imported from Angular. 134 | - `FormBuilder` doesn't support generic anymore. Due to the complexity of the builder API, we're currently couldn't create a "good" implementation of `ControlsOf` for the builder. 135 | - Remove the `group.persist()` from the instance to an exported function to make it tree-shakeable. 136 | 137 | ### Features 138 | 139 | * **library:** refactor the entire code base ([5cee6fe](https://github.com/ngneat/reactive-forms/commit/5cee6fef2b59499df86cbfcdf17dd468b41ac884)), closes [#197](https://github.com/ngneat/reactive-forms/issues/197) [#103](https://github.com/ngneat/reactive-forms/issues/103) [#102](https://github.com/ngneat/reactive-forms/issues/102) [#97](https://github.com/ngneat/reactive-forms/issues/97) [#100](https://github.com/ngneat/reactive-forms/issues/100) 140 | 141 | ### [1.7.5](https://github.com/ngneat/reactive-forms/compare/v1.7.4...v1.7.5) (2021-08-09) 142 | 143 | 144 | ### Bug Fixes 145 | 146 | * 🐛 fix merge validators ([c8e524b](https://github.com/ngneat/reactive-forms/commit/c8e524b13acc18ff5d20376b58e66a81906e4ff5)), closes [#87](https://github.com/ngneat/reactive-forms/issues/87) 147 | 148 | ### [1.7.4](https://github.com/ngneat/reactive-forms/compare/v1.7.3...v1.7.4) (2021-07-28) 149 | 150 | 151 | ### Bug Fixes 152 | 153 | * **control:** avoid throw of error with async validator ([cf8f861](https://github.com/ngneat/reactive-forms/commit/cf8f861cfcbdb2a4284287892c18737c6d3f9e81)), closes [#91](https://github.com/ngneat/reactive-forms/issues/91) 154 | 155 | ### [1.7.3](https://github.com/ngneat/reactive-forms/compare/v1.7.2...v1.7.3) (2021-05-20) 156 | 157 | 158 | ### Bug Fixes 159 | 160 | * 🐛 fix umd bad complier for getters and setters ([6bf84bf](https://github.com/ngneat/reactive-forms/commit/6bf84bf93543037ee61c6e231c2c9ca58b4e7e37)), closes [#88](https://github.com/ngneat/reactive-forms/issues/88) 161 | 162 | ### [1.7.2](https://github.com/ngneat/reactive-forms/compare/v1.7.1...v1.7.2) (2021-03-21) 163 | 164 | 165 | ### Bug Fixes 166 | 167 | * 🐛 fix control types ([b64da9c](https://github.com/ngneat/reactive-forms/commit/b64da9c004ab29edef190e70412206e463c145c6)), closes [#85](https://github.com/ngneat/reactive-forms/issues/85) 168 | 169 | ### [1.6.1](https://github.com/ngneat/reactive-forms/compare/v1.7.0...v1.6.1) (2021-03-14) 170 | 171 | 172 | ### Bug Fixes 173 | 174 | * 🐛 expose diff operator ([3fc264e](https://github.com/ngneat/reactive-forms/commit/3fc264e117b311e4205d67a79c95dce9deb38a55)), closes [#83](https://github.com/ngneat/reactive-forms/issues/83) 175 | 176 | ## [1.6.0](https://github.com/ngneat/reactive-forms/compare/v1.5.2...v1.6.0) (2021-01-30) 177 | 178 | 179 | ### Features 180 | 181 | * persist values of disabled controls ([9dae31f](https://github.com/ngneat/reactive-forms/commit/9dae31fdf107ac78c9ec48cd937f072a23be0101)) 182 | 183 | ### [1.5.2](https://github.com/ngneat/reactive-forms/compare/v1.5.1...v1.5.2) (2021-01-20) 184 | 185 | 186 | ### Bug Fixes 187 | 188 | * allow to pass options to updateValueAndValidity method ([3edb8ae](https://github.com/ngneat/reactive-forms/commit/3edb8ae65fcff5d87d0d7237b73589fc962aa8ec)) 189 | 190 | ### [1.5.1](https://github.com/ngneat/reactive-forms/compare/v1.5.0...v1.5.1) (2020-12-10) 191 | 192 | 193 | ### Bug Fixes 194 | 195 | * typescript 4.0 breaking changes ([#62](https://github.com/ngneat/reactive-forms/issues/62)) ([ecc1d6f](https://github.com/ngneat/reactive-forms/commit/ecc1d6f7b27d403a832d4bf12ec0bcabedbd3b22)) 196 | 197 | ## [1.5.0](https://github.com/ngneat/reactive-forms/compare/v1.4.4...v1.5.0) (2020-11-29) 198 | 199 | 200 | ### Features 201 | 202 | * 🎸 enrich abstract control type ([2a018eb](https://github.com/ngneat/reactive-forms/commit/2a018ebab77de330d1636020c00b49214f46fd06)) 203 | 204 | 205 | ### Bug Fixes 206 | 207 | * handle 'any' values properly in 'ControlOf' ([#60](https://github.com/ngneat/reactive-forms/issues/60)) ([779e083](https://github.com/ngneat/reactive-forms/commit/779e0830df22a0fb389958d1df31d3700c84584d)) 208 | * handle 'any' values properly in 'patchValue' ([#59](https://github.com/ngneat/reactive-forms/issues/59)) ([0ccdd2e](https://github.com/ngneat/reactive-forms/commit/0ccdd2ef2299ba6543fcb6e5fa3371bab873bbf4)) 209 | 210 | ### [1.4.4](https://github.com/ngneat/reactive-forms/compare/v1.4.3...v1.4.4) (2020-11-18) 211 | 212 | 213 | ### Bug Fixes 214 | 215 | * accept deep partials in patchValue and reset methods ([#54](https://github.com/ngneat/reactive-forms/issues/54)) ([ee41c40](https://github.com/ngneat/reactive-forms/commit/ee41c401c1772993e2cf52bef3a95eef1e75537c)) 216 | 217 | ### [1.4.3](https://github.com/ngneat/reactive-forms/compare/v1.4.2...v1.4.3) (2020-10-27) 218 | 219 | 220 | ### Bug Fixes 221 | 222 | * 🐛 resolve control type when no generic given ([#57](https://github.com/ngneat/reactive-forms/issues/57)) ([8eb1fa4](https://github.com/ngneat/reactive-forms/commit/8eb1fa40a0f523ef3d41a6fef771a981186cb7da)) 223 | 224 | ### [1.4.2](https://github.com/ngneat/reactive-forms/compare/v1.4.1...v1.4.2) (2020-10-22) 225 | 226 | 227 | ### Bug Fixes 228 | 229 | * 🐛 add ControlsOf type to public API ([8423c5a](https://github.com/ngneat/reactive-forms/commit/8423c5ad623a34562043ac187f925cc5efef4669)) 230 | 231 | ### [1.4.1](https://github.com/ngneat/reactive-forms/compare/v1.4.0...v1.4.1) (2020-10-22) 232 | 233 | 234 | ### Bug Fixes 235 | 236 | * 🐛 add ControlOf type to public API ([6c44f38](https://github.com/ngneat/reactive-forms/commit/6c44f38f9b324c223e5ae61e2e525483f6749a83)) 237 | 238 | ## [1.4.0](https://github.com/ngneat/reactive-forms/compare/v1.3.1...v1.4.0) (2020-10-22) 239 | 240 | 241 | ### Features 242 | 243 | * support exact control types in FormGroup and FormArray ([#35](https://github.com/ngneat/reactive-forms/issues/35)) ([0734d55](https://github.com/ngneat/reactive-forms/commit/0734d558f322efb97da2455466ba0e2f47282899)) 244 | 245 | ### [1.3.1](https://github.com/ngneat/reactive-forms/compare/v1.3.0...v1.3.1) (2020-09-16) 246 | 247 | 248 | ### Bug Fixes 249 | 250 | * make sure errors$ is nexted when setErrors is called manually ([ce820fc](https://github.com/ngneat/reactive-forms/commit/ce820fc2bf49c63989b02a45166c6bab97fa199e)) 251 | 252 | ## [1.3.0](https://github.com/ngneat/reactive-forms/compare/v1.2.0...v1.3.0) (2020-08-27) 253 | 254 | 255 | ### Features 256 | 257 | * add a helper to remove error by key ([64cabc6](https://github.com/ngneat/reactive-forms/commit/64cabc6dc3f26b973d1941260b766dbd1cae7e21)) 258 | * provide a mergeErrors helper method ([e6c9a82](https://github.com/ngneat/reactive-forms/commit/e6c9a82a4c9af5af3e83ebd0d63a090154217320)) 259 | 260 | 261 | ### Bug Fixes 262 | 263 | * better mergeErrors(null) support ([9925e49](https://github.com/ngneat/reactive-forms/commit/9925e49555bd536802f310708e8c979f68f83614)) 264 | 265 | ## [1.2.0](https://github.com/ngneat/reactive-forms/compare/v1.1.0...v1.2.0) (2020-08-24) 266 | 267 | 268 | ### Features 269 | 270 | * **form-array:** implement remove helpers ([0011944](https://github.com/ngneat/reactive-forms/commit/0011944e4300107bbb3a067cb018795f413d4132)) 271 | 272 | 273 | ### Tests 274 | 275 | * **form-array:** write spec for remove helpers ([419c8c2](https://github.com/ngneat/reactive-forms/commit/419c8c246ac8de9ab340efb79284ada30919fc7d)) 276 | 277 | ## [1.1.0](https://github.com/ngneat/reactive-forms/compare/v1.0.0...v1.1.0) (2020-08-02) 278 | 279 | 280 | ### Features 281 | 282 | * **doc:** documentation for persist form ([eae2ba7](https://github.com/ngneat/reactive-forms/commit/eae2ba771accb0d36ee983eaef0b4ae61ba277ba)), closes [#24](https://github.com/ngneat/reactive-forms/issues/24) 283 | * **storage:** add persist form to storage ([2ca8e6e](https://github.com/ngneat/reactive-forms/commit/2ca8e6e677232eb80ae0eab4109b34bcabf77dae)), closes [#24](https://github.com/ngneat/reactive-forms/issues/24) 284 | * **storage:** add support for async storage types ([6cd39d8](https://github.com/ngneat/reactive-forms/commit/6cd39d81b5d07e8ff449632de98f6057e570e67b)), closes [#24](https://github.com/ngneat/reactive-forms/issues/24) 285 | 286 | ## 1.0.0 (2020-07-06) 287 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at netanel7799@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Reactive-forms 2 | 3 | 🙏 We would ❤️ for you to contribute to Reactive-forms and help make it even better than it is today! 4 | 5 | # Developing 6 | 7 | Start by installing all dependencies: 8 | 9 | ```bash 10 | npm i 11 | ``` 12 | 13 | Run the tests: 14 | 15 | ```bash 16 | npm test 17 | npm run e2e 18 | ``` 19 | 20 | Run the playground app: 21 | 22 | ```bash 23 | npm start 24 | ``` 25 | 26 | ## Building 27 | 28 | ```bash 29 | npm run build 30 | ``` 31 | 32 | ## Coding Rules 33 | 34 | To ensure consistency throughout the source code, keep these rules in mind as you are working: 35 | 36 | - All features or bug fixes **must be tested** by one or more specs (unit-tests). 37 | - All public API methods **must be documented**. 38 | 39 | ## Commit Message Guidelines 40 | 41 | We have very precise rules over how our git commit messages can be formatted. This leads to **more 42 | readable messages** that are easy to follow when looking through the **project history**. But also, 43 | we use the git commit messages to **generate the Reactive-forms changelog**. 44 | 45 | ### Commit Message Format 46 | 47 | Each commit message consists of a **header**, a **body** and a **footer**. The header has a special 48 | format that includes a **type**, a **scope** and a **subject**: 49 | 50 | ``` 51 | (): 52 | 53 | 54 | 55 |