Skip to content

Commit 246e157

Browse files
committed
fix: cleans up build outputs and test coverage
BREAKING CHANGE: context utilities are now included in the root files - react-form-state-hooks/controlled/context and react-form-state-hooks/uncontrolled/context files are no longer available
1 parent 34da6b6 commit 246e157

32 files changed

+237
-170
lines changed

.gitignore

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,7 @@ typings/
6464
.idea
6565

6666
# built files
67-
/dist
6867
/index.js
69-
/controlled
70-
/uncontrolled
68+
/controlled.js
69+
/uncontrolled.js
7170
*.d.ts

CHANGELOG.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# [0.3.0-rc.1](https://github.com/bvalyou/react-form-state-hooks/compare/v0.3.0-rc.0...v0.3.0-rc.1) (2021-02-28)
2+
3+
4+
### Features
5+
6+
* Updates README, refactors examples, and fixes logical flaw in uncontrolled connectFormStateInput ([260e1fa](https://github.com/bvalyou/react-form-state-hooks/commit/260e1facc14ce4e4bf2e61742b209243858bcebf))
7+
8+
9+
10+
# [0.3.0-rc.0](https://github.com/bvalyou/react-form-state-hooks/compare/0.2.1...v0.3.0-rc.0) (2021-01-29)
11+
12+
13+
### Bug Fixes
14+
15+
* uncontrolled storybooks & adds test coverage ([dfd23f7](https://github.com/bvalyou/react-form-state-hooks/commit/dfd23f76a69a642b626203e0265aea1ab7eb9e0f))
16+
* useFormState fails to properly sync with initial data from a parent formState ([4c2708a](https://github.com/bvalyou/react-form-state-hooks/commit/4c2708a8e8aef503cd2c9fc93d3c5472b6d4c6b0))
17+
18+
19+
### Features
20+
21+
* adds TypeScript and an uncontrolled interface ([4f73fb3](https://github.com/bvalyou/react-form-state-hooks/commit/4f73fb3297e81470dc9f50b1c005e3f97c67eda1))
22+
* adds generics to support strongly typing forms ([99fd85a](https://github.com/bvalyou/react-form-state-hooks/commit/99fd85aeeb53cd89030c6e2514c4e35766e30078))
23+
* build exports consolidated .d.ts files ([06339e0](https://github.com/bvalyou/react-form-state-hooks/commit/06339e0343a1b679c87f9cc6e9eef6302b60e3e6))
24+
25+
26+
27+
## [0.2.1](https://github.com/bvalyou/react-form-state-hooks/compare/0.2.0...0.2.1) (2020-06-28)
28+
29+
30+
### Features
31+
32+
* add context utilities ([6df15fa](https://github.com/bvalyou/react-form-state-hooks/commit/6df15fa7425302fcb7700b05cc627db286a77a5b)), closes [#2](https://github.com/bvalyou/react-form-state-hooks/issues/2)
33+
34+
35+
36+
# [0.1.0](https://github.com/bvalyou/react-form-state-hooks/compare/0.1.0-dev.1...0.1.0) (2020-04-18)
37+
38+
39+
40+
# 0.1.0-dev.1 (2020-04-16)
41+
42+
43+

jest.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ module.exports = {
33
moduleNameMapper: {
44
'react-form-state-hooks(.*)$': '<rootDir>/src/$1',
55
},
6+
testPathIgnorePatterns: ['<rootDir>/dist/', '<rootDir>/node_modules/'],
67
};

package.json

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,14 @@
55
"main": "index.js",
66
"scripts": {
77
"test": "jest --coverage --collectCoverageFrom=src/**",
8-
"build": "shx rm -rf dist && tsc && rollup -c",
8+
"build": "shx rm -rf dist && rollup -c",
99
"lint": "eslint . --ext ts,tsx,js,jsx",
1010
"storybook": "start-storybook -p 6006 --ci",
11-
"build-storybook": "build-storybook"
11+
"build-storybook": "build-storybook",
12+
"release": "standard-version",
13+
"release:minor": "standard-version --release-as minor",
14+
"release:patch": "standard-version --release-as patch",
15+
"release:major": "standard-version --release-as major"
1216
},
1317
"repository": {
1418
"type": "git",
@@ -26,42 +30,43 @@
2630
},
2731
"dependencies": {},
2832
"devDependencies": {
29-
"@babel/core": "^7.9.0",
30-
"@babel/plugin-proposal-object-rest-spread": "^7.9.5",
31-
"@babel/plugin-proposal-optional-chaining": "^7.12.7",
32-
"@babel/preset-env": "^7.9.5",
33-
"@babel/preset-react": "^7.9.4",
34-
"@babel/preset-typescript": "^7.12.7",
35-
"@material-ui/core": "^4.9.11",
36-
"@rollup/plugin-babel": "^5.2.2",
37-
"@rollup/plugin-commonjs": "^17.0.0",
38-
"@rollup/plugin-node-resolve": "^11.0.1",
39-
"@rollup/plugin-typescript": "^8.1.0",
33+
"@babel/core": "^7.14.3",
34+
"@babel/plugin-proposal-object-rest-spread": "^7.14.4",
35+
"@babel/plugin-proposal-optional-chaining": "^7.14.2",
36+
"@babel/preset-env": "^7.14.4",
37+
"@babel/preset-react": "^7.13.13",
38+
"@babel/preset-typescript": "^7.13.0",
39+
"@material-ui/core": "^4.11.4",
40+
"@rollup/plugin-babel": "^5.3.0",
41+
"@rollup/plugin-commonjs": "^17.1.0",
42+
"@rollup/plugin-node-resolve": "^11.2.1",
43+
"@rollup/plugin-typescript": "^8.2.1",
4044
"@storybook/addon-actions": "^5.3.18",
4145
"@storybook/addon-links": "^5.3.18",
4246
"@storybook/addons": "^5.3.18",
4347
"@storybook/react": "^5.3.18",
44-
"@testing-library/react": "^11.2.2",
45-
"@testing-library/react-hooks": "^3.4.2",
46-
"@types/jest": "^26.0.15",
47-
"@typescript-eslint/eslint-plugin": "^4.8.2",
48-
"@typescript-eslint/parser": "^4.8.2",
48+
"@testing-library/react": "^11.2.7",
49+
"@testing-library/react-hooks": "^3.7.0",
50+
"@types/jest": "^26.0.23",
51+
"@typescript-eslint/eslint-plugin": "^4.26.0",
52+
"@typescript-eslint/parser": "^4.26.0",
4953
"babel-eslint": "^10.1.0",
5054
"babel-loader": "^8.2.2",
51-
"eslint": "^7.18.0",
52-
"eslint-plugin-prettier": "^3.3.1",
53-
"eslint-plugin-react": "^7.22.0",
55+
"eslint": "^7.28.0",
56+
"eslint-plugin-prettier": "^3.4.0",
57+
"eslint-plugin-react": "^7.24.0",
5458
"eslint-plugin-react-hooks": "^4.2.0",
5559
"jest": "^26.6.3",
56-
"prettier": "^2.2.1",
60+
"prettier": "^2.3.1",
5761
"prop-types": "^15.7.2",
58-
"react": "^17.0.1",
59-
"react-dom": "^17.0.1",
60-
"react-test-renderer": "^17.0.1",
61-
"rollup": "^2.38.0",
62+
"react": "^17.0.2",
63+
"react-dom": "^17.0.2",
64+
"react-test-renderer": "^17.0.2",
65+
"rollup": "^2.50.6",
6266
"rollup-plugin-dts": "^2.0.1",
6367
"shx": "^0.3.3",
64-
"ts-loader": "^8.0.14",
65-
"typescript": "^4.1.3"
68+
"standard-version": "^9.3.0",
69+
"ts-loader": "^8.3.0",
70+
"typescript": "^4.3.2"
6671
}
6772
}

rollup.config.js

Lines changed: 24 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -15,53 +15,48 @@ const plugins = [
1515
const external = Object.keys(pkg.peerDependencies).concat(Object.keys(pkg.dependencies));
1616

1717
export default [
18-
{
19-
input: 'src/index.ts',
20-
output: {
21-
file: 'index.js',
22-
format: 'cjs',
23-
},
24-
plugins,
25-
external,
26-
},
27-
{
28-
input: 'dist/src/index.d.ts',
29-
output: {
30-
file: 'index.d.ts',
31-
format: 'es',
32-
},
33-
plugins: [dts()],
34-
},
3518
{
3619
input: 'src/controlled/index.ts',
37-
output: {
38-
file: 'controlled/index.js',
39-
format: 'cjs',
40-
},
20+
output: [
21+
{
22+
file: 'controlled.js',
23+
format: 'cjs',
24+
},
25+
{
26+
file: 'index.js',
27+
format: 'cjs',
28+
},
29+
],
4130
plugins,
4231
external,
4332
},
4433
{
45-
input: 'dist/src/controlled/index.d.ts',
46-
output: {
47-
file: 'controlled/index.d.ts',
48-
format: 'es',
49-
},
34+
input: 'src/controlled/index.ts',
35+
output: [
36+
{
37+
file: 'controlled.d.ts',
38+
format: 'es',
39+
},
40+
{
41+
file: 'index.d.ts',
42+
format: 'es',
43+
},
44+
],
5045
plugins: [dts()],
5146
},
5247
{
5348
input: 'src/uncontrolled/index.ts',
5449
output: {
55-
file: 'uncontrolled/index.js',
50+
file: 'uncontrolled.js',
5651
format: 'cjs',
5752
},
5853
plugins,
5954
external,
6055
},
6156
{
62-
input: 'dist/src/uncontrolled/index.d.ts',
57+
input: 'src/uncontrolled/index.ts',
6358
output: {
64-
file: 'uncontrolled/index.d.ts',
59+
file: 'uncontrolled.d.ts',
6560
format: 'es',
6661
},
6762
plugins: [dts()],
Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
1-
import { createContext, useContext } from 'react';
1+
import { createContext } from 'react';
22
import type { ListFormState } from '../list/useListFormState.types';
33
import type { FormState } from '../useFormState.types';
44

55
const FormStateContext = createContext<FormState | ListFormState | null>(null);
66

7-
export const useFormStateContext = <T = unknown>(): FormState<T> =>
8-
(useContext(FormStateContext) as unknown) as FormState<T>;
9-
10-
export const useListFormStateContext = <T = unknown>(): ListFormState<T> =>
11-
(useContext(FormStateContext) as unknown) as ListFormState<T>;
12-
137
export default FormStateContext;

src/controlled/context/connectFormStateInput.spec.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ describe('connectFormStateInput', () => {
5353

5454
const { getByLabelText } = render(<MyForm />);
5555

56-
formValue = (formValue as unknown) as FormState;
56+
formValue = formValue as unknown as FormState;
5757

5858
expect(formValue.data).toEqual({});
5959

@@ -83,7 +83,7 @@ describe('connectFormStateInput', () => {
8383

8484
const { getByLabelText } = render(<MyForm />);
8585

86-
formValue = (formValue as unknown) as FormState;
86+
formValue = formValue as unknown as FormState;
8787

8888
expect(formValue.data).toEqual(['']);
8989

@@ -109,7 +109,7 @@ describe('connectFormStateInput', () => {
109109

110110
const { getByLabelText } = render(<MyForm />);
111111

112-
formValue = (formValue as unknown) as FormState;
112+
formValue = formValue as unknown as FormState;
113113

114114
expect(formValue.data).toEqual({});
115115

src/controlled/context/connectFormStateInput.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ function connectFormStateInput<P extends InputProps>(
3232
string,
3333
unknown
3434
>;
35-
const value = data?.[props.name] || '';
35+
const value = data?.[props.name] ?? '';
3636
const stateProps = formState
3737
? props.type === 'checkbox' || props.type === 'radio'
3838
? {

src/controlled/createOnChange.ts

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,21 @@ import type { OnChange, UpdateData } from './useFormState.types';
1616
* @returns {onChange} Takes a change event and uses it to update the form state
1717
* @alias module:createOnChange
1818
*/
19-
const createOnChange = (updateData: UpdateData, onChange?: OnChange): OnChange => (event) => {
20-
const {
21-
target: { name, value, type },
22-
} = event;
19+
function createOnChange(updateData: UpdateData, onChange?: OnChange): OnChange {
20+
return (event) => {
21+
const {
22+
target: { name, value, type },
23+
} = event;
2324

24-
onChange?.(event);
25+
onChange?.(event);
2526

26-
if (type === 'radio' || type === 'checkbox') {
27-
const { checked } = event.target as HTMLInputElement;
28-
updateData(name, checked ? value || true : false);
29-
} else {
30-
updateData(name, value);
31-
}
32-
};
27+
if (type === 'radio' || type === 'checkbox') {
28+
const { checked } = event.target as HTMLInputElement;
29+
updateData(name, checked ? value || true : false);
30+
} else {
31+
updateData(name, value);
32+
}
33+
};
34+
}
3335

3436
export default createOnChange;

src/controlled/useFormState.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { act, renderHook } from '@testing-library/react-hooks';
2-
import { useFormState } from '../index';
2+
import useFormState from './useFormState';
33
import { reducer } from './useFormState.reducer';
44
import type { Data } from './useFormState.types';
55
import { FormStateActionType } from './useFormState.types';

0 commit comments

Comments
 (0)