Skip to content

Commit

Permalink
fix #14
Browse files Browse the repository at this point in the history
  • Loading branch information
thomasJang committed Nov 26, 2018
1 parent c455427 commit 833a378
Show file tree
Hide file tree
Showing 14 changed files with 58 additions and 51 deletions.
4 changes: 2 additions & 2 deletions dist/commonjs/ReactMultiEmail.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ export interface IReactMultiEmailProps {
export interface IReactMultiEmailState {
focused?: boolean;
propsEmails?: string[];
emails?: string[];
emails: string[];
inputValue?: string;
}
declare class ReactMultiEmail extends React.Component<IReactMultiEmailProps> {
declare class ReactMultiEmail extends React.Component<IReactMultiEmailProps, IReactMultiEmailState> {
state: {
focused: boolean;
emails: any[];
Expand Down
15 changes: 9 additions & 6 deletions dist/commonjs/ReactMultiEmail.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,16 @@ var ReactMultiEmail = /** @class */ (function (_super) {
_this.findEmailAddress(value);
};
_this.removeEmail = function (index) {
_this.state.emails.splice(index, 1);
_this.setState({
emails: _this.state.emails,
_this.setState(function (prevState) {
prevState.emails.splice(index, 1);
return {
emails: prevState.emails,
};
}, function () {
if (_this.props.onChange) {
_this.props.onChange(_this.state.emails);
}
});
if (_this.props.onChange) {
_this.props.onChange(_this.state.emails);
}
};
return _this;
}
Expand Down
4 changes: 2 additions & 2 deletions dist/es6/ReactMultiEmail.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ export interface IReactMultiEmailProps {
export interface IReactMultiEmailState {
focused?: boolean;
propsEmails?: string[];
emails?: string[];
emails: string[];
inputValue?: string;
}
declare class ReactMultiEmail extends React.Component<IReactMultiEmailProps> {
declare class ReactMultiEmail extends React.Component<IReactMultiEmailProps, IReactMultiEmailState> {
state: {
focused: boolean;
emails: any[];
Expand Down
15 changes: 9 additions & 6 deletions dist/es6/ReactMultiEmail.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,13 +68,16 @@ class ReactMultiEmail extends React.Component {
this.findEmailAddress(value);
};
this.removeEmail = (index) => {
this.state.emails.splice(index, 1);
this.setState({
emails: this.state.emails,
this.setState(prevState => {
prevState.emails.splice(index, 1);
return {
emails: prevState.emails,
};
}, () => {
if (this.props.onChange) {
this.props.onChange(this.state.emails);
}
});
if (this.props.onChange) {
this.props.onChange(this.state.emails);
}
};
}
static getDerivedStateFromProps(nextProps, prevState) {
Expand Down
2 changes: 1 addition & 1 deletion dist/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "react-multi-email",
"version": "0.3.8",
"version": "0.4.0",
"description": "React multi email input",
"jsnext:main": "es6/index.js",
"main": "commonjs/index.js",
Expand Down
4 changes: 2 additions & 2 deletions docs/asset-manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"main.css": "static/css/main.ab19594c.css",
"main.css.map": "static/css/main.ab19594c.css.map",
"main.js": "static/js/main.00c50675.js",
"main.js.map": "static/js/main.00c50675.js.map",
"main.js": "static/js/main.df0f327d.js",
"main.js.map": "static/js/main.df0f327d.js.map",
"static/media/axui-logo.png": "static/media/axui-logo.bdc57a37.png"
}
2 changes: 1 addition & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name="theme-color" content="#000000"><link rel="manifest" href="/manifest.json"><link rel="shortcut icon" href="/favicon.ico"><title>AXUI : react-multi-email</title><link href="/static/css/main.ab19594c.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script type="text/javascript" src="/static/js/main.00c50675.js"></script></body></html>
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name="theme-color" content="#000000"><link rel="manifest" href="/manifest.json"><link rel="shortcut icon" href="/favicon.ico"><title>AXUI : react-multi-email</title><link href="/static/css/main.ab19594c.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script type="text/javascript" src="/static/js/main.df0f327d.js"></script></body></html>
2 changes: 1 addition & 1 deletion docs/service-worker.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion docs/static/js/main.00c50675.js.map

This file was deleted.

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions docs/static/js/main.df0f327d.js.map

Large diffs are not rendered by default.

25 changes: 9 additions & 16 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "react-multi-email",
"version": "",
"version": "0.4.0",
"peerDependencies": {
"react": "^16.4.0",
"react-dom": "^16.4.0"
Expand Down Expand Up @@ -28,8 +28,7 @@
"node-sass": "^4.8.3",
"raw-loader": "^0.5.1",
"react": "^16.4.0",
"react-app-rewire-css-modules":
"github:codebandits/react-app-rewire-css-modules",
"react-app-rewire-css-modules": "github:codebandits/react-app-rewire-css-modules",
"react-app-rewire-hot-loader": "^1.0.1",
"react-app-rewire-less": "^2.1.2",
"react-app-rewired": "^1.5.0",
Expand All @@ -51,21 +50,15 @@
},
"scripts": {
"start": "react-app-rewired start --scripts-version react-scripts-ts",
"build":
"react-app-rewired build --scripts-version react-scripts-ts && rm -rf ./docs && mv build ./docs && cp ./src/CNAME ./docs/CNAME",
"dist-module":
"better-npm-run build:common && better-npm-run build:es5 && better-npm-run build:es6",
"test":
"react-app-rewired test --scripts-version react-scripts-ts --env=jsdom",
"build": "react-app-rewired build --scripts-version react-scripts-ts && rm -rf ./docs && mv build ./docs && cp ./src/CNAME ./docs/CNAME",
"dist-module": "better-npm-run build:common && better-npm-run build:es5 && better-npm-run build:es6",
"test": "react-app-rewired test --scripts-version react-scripts-ts --env=jsdom",
"tslint-check": "tslint-config-prettier-check ./tslint.json",
"publish": "cd dist && npm publish"
},
"betterScripts": {
"build:common":
"cp ./src/react-multi-email/style.css ./dist/style.css && cp ./README.md ./dist/README.md",
"build:es5":
"rm -rf ./dist/commonjs && tsc src/react-multi-email/*.tsx --declaration --outDir dist/commonjs --jsx react --module commonjs --target es5 --moduleResolution node",
"build:es6":
"rm -rf ./dist/es6 && tsc src/react-multi-email/*.tsx --declaration --outDir dist/es6 --jsx react --module es6 --target es6 --moduleResolution node"
"build:common": "cp ./src/react-multi-email/style.css ./dist/style.css && cp ./README.md ./dist/README.md",
"build:es5": "rm -rf ./dist/commonjs && tsc src/react-multi-email/*.tsx --declaration --outDir dist/commonjs --jsx react --module commonjs --target es5 --moduleResolution node",
"build:es6": "rm -rf ./dist/es6 && tsc src/react-multi-email/*.tsx --declaration --outDir dist/es6 --jsx react --module es6 --target es6 --moduleResolution node"
}
}
}
28 changes: 18 additions & 10 deletions src/react-multi-email/ReactMultiEmail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,14 @@ export interface IReactMultiEmailProps {
export interface IReactMultiEmailState {
focused?: boolean;
propsEmails?: string[];
emails?: string[];
emails: string[];
inputValue?: string;
}

class ReactMultiEmail extends React.Component<IReactMultiEmailProps> {
class ReactMultiEmail extends React.Component<
IReactMultiEmailProps,
IReactMultiEmailState
> {
state = {
focused: false,
emails: [],
Expand Down Expand Up @@ -107,14 +110,19 @@ class ReactMultiEmail extends React.Component<IReactMultiEmailProps> {
};

removeEmail = (index: number) => {
this.state.emails.splice(index, 1);
this.setState({
emails: this.state.emails,
});

if (this.props.onChange) {
this.props.onChange(this.state.emails);
}
this.setState(
prevState => {
prevState.emails.splice(index, 1);

This comment has been minimized.

Copy link
@schneckentempo

schneckentempo Nov 26, 2018

sorry for bothering, actually slice (which returns a new array) should be used. Argumentwise it also doesn't work the exact same as splice

This comment has been minimized.

This comment has been minimized.

Copy link
@thomasJang

thomasJang Nov 27, 2018

Author Member

ok~

return {
emails: prevState.emails,
};
},
() => {
if (this.props.onChange) {
this.props.onChange(this.state.emails);
}
},
);
};

render() {
Expand Down

0 comments on commit 833a378

Please sign in to comment.