fix(store): copy indent from next item after moving

This commit is contained in:
Peter Stuifzand 2021-08-24 21:44:10 +02:00
parent 38f3c58da9
commit 22edb6165b
2 changed files with 32 additions and 0 deletions

View File

@ -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},
])
})
})
})

View File

@ -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]
}