diff --git a/list-editor/spec/store.spec.js b/list-editor/spec/store.spec.js index 9b95aa1..24a904d 100644 --- a/list-editor/spec/store.spec.js +++ b/list-editor/spec/store.spec.js @@ -189,4 +189,30 @@ describe("A store", function () { expect(store.debug().idList).toEqual(["_a", "_c", "_b", "_d"]) }) }) + + describe("contains a moveBefore method which handles indentation", function () { + let store + + beforeEach(function () { + store = createStore([ + {text: "a", id: "_a", indented: 0}, + {text: "b", id: "_b", indented: 1}, + {text: "c", id: "_c", indented: 2}, + {text: "d", id: "_d", indented: 3}, + {text: "e", id: "_e", indented: 0}, + ]) + }) + it("moveBefore _e, _c", function () { + store.moveBefore("_e", "_c") + let debug = store.debug(); + expect(debug.idList).toEqual(["_a", "_b", "_e", "_c", "_d"]) + expect(debug.result).toEqual([ + {text: "a", id: "_a", indented: 0}, + {text: "b", id: "_b", indented: 1}, + {text: "e", id: "_e", indented: 2}, + {text: "c", id: "_c", indented: 2}, + {text: "d", id: "_d", indented: 3}, + ]) + }) + }) }) diff --git a/list-editor/store.js b/list-editor/store.js index d814d28..83a321d 100644 --- a/list-editor/store.js +++ b/list-editor/store.js @@ -301,6 +301,12 @@ function Store(inputData) { rotate(idList, toIndex, fromIndex + n, fromIndex - toIndex) changed = true } + + // Copy indent from the next item, or 0 when at the end + const v = value(to) + if (v) value(from).indented = v.indented + else value(from).indented = 0 + return [index(from), n] }