diff --git a/CHANGELOG.md b/CHANGELOG.md index e43f11f..912de6e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [6.0.4](https://github.com/SortableJS/react-sortablejs/compare/v6.0.3...v6.0.4) (2022-01-30) + + +### Bug Fixes + +* preserve original objects ([362cbd5](https://github.com/SortableJS/react-sortablejs/commit/362cbd57e75e02f12eff12925f7ec346a20721d9)) + ## [6.0.3](https://github.com/SortableJS/react-sortablejs/compare/v6.0.2...v6.0.3) (2022-01-14) diff --git a/package.json b/package.json index 91f5d20..6fcff71 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-sortablejs", - "version": "6.0.3", + "version": "6.0.4", "author": { "name": "Wayne Van Son", "email": "waynevanson@gmail.com" diff --git a/src/react-sortable.tsx b/src/react-sortable.tsx index ca530a5..9d1e033 100644 --- a/src/react-sortable.tsx +++ b/src/react-sortable.tsx @@ -49,11 +49,14 @@ export class ReactSortable extends Component< this.ref = createRef(); // make all state false because we can't change sortable unless a mouse gesture is made. - const newList = props.list.map((item) => ({ - ...item, - chosen: false, - selected: false, - })); + const newList = [...props.list]; + + newList.forEach((item: T) => { + Object.assign(item, { + chosen: false, + selected: false, + }); + }) props.setList(newList, this.sortable, store); invariant( @@ -235,10 +238,14 @@ Please read the updated README.md at https://github.com/SortableJS/react-sortabl const otherList = [...store.dragging!.props.list]; const customs = createCustoms(evt, otherList); removeNodes(customs); - const newList = handleStateAdd(customs, list, evt, clone).map((item) => ({ - ...item, - selected: false, - })); + + const newList = handleStateAdd(customs, list, evt, clone) + + newList.forEach((item) => { + Object.assign(item, { + selected: false, + }); + }); setList(newList, this.sortable, store); } @@ -289,7 +296,11 @@ Please read the updated README.md at https://github.com/SortableJS/react-sortabl } // remove item.selected from list - newList = newList.map((item) => ({ ...item, selected: false })); + newList.forEach((item: T) => { + Object.assign(item, { + selected: false, + }); + }) setList(newList, this.sortable, store); } @@ -314,10 +325,9 @@ Please read the updated README.md at https://github.com/SortableJS/react-sortabl const { list, setList } = this.props; const newList = list.map((item, index) => { if (index === evt.oldIndex) { - return { - ...item, + Object.assign(item, { chosen: true, - }; + }); } return item; }); @@ -328,10 +338,9 @@ Please read the updated README.md at https://github.com/SortableJS/react-sortabl const { list, setList } = this.props; const newList = list.map((item, index) => { if (index === evt.oldIndex) { - return { - ...item, + Object.assign(item, { chosen: false, - }; + }); } return item; }); @@ -345,7 +354,12 @@ Please read the updated README.md at https://github.com/SortableJS/react-sortabl onSelect(evt: MultiDragEvent): void { const { list, setList } = this.props; - const newList = list.map((item) => ({ ...item, selected: false })); + const newList = [...list]; + newList.forEach((item) => { + Object.assign(item, { + chosen: false, + }); + }); evt.newIndicies.forEach((curr) => { const index = curr.index; if (index === -1) { @@ -362,7 +376,12 @@ Please read the updated README.md at https://github.com/SortableJS/react-sortabl onDeselect(evt: MultiDragEvent): void { const { list, setList } = this.props; - const newList = list.map((item) => ({ ...item, selected: false })); + const newList = [...list]; + newList.forEach((item) => { + Object.assign(item, { + chosen: false, + }); + }); evt.newIndicies.forEach((curr) => { const index = curr.index; if (index === -1) return;