forked from tsai/budibase
6 changed files with 118 additions and 52 deletions
@ -0,0 +1,54 @@ |
|||
import { writable } from "svelte/store"; |
|||
|
|||
function createItemsStore(componentOnSelect) { |
|||
const { subscribe, set, update } = writable([]); |
|||
|
|||
function addItem(item) { |
|||
update(items => { |
|||
return [...items, item] |
|||
}) |
|||
if (componentOnSelect) { |
|||
componentOnSelect(); |
|||
} |
|||
} |
|||
|
|||
function addSingleItem(item) { |
|||
set([item]) |
|||
if (componentOnSelect) { |
|||
componentOnSelect(); |
|||
} |
|||
} |
|||
|
|||
function removeItem(itemId) { |
|||
update(items => { |
|||
let index = getItemIdx(items, itemId) |
|||
items.splice(index, 1); |
|||
return items; |
|||
}) |
|||
if (componentOnSelect) { |
|||
componentOnSelect(); |
|||
} |
|||
} |
|||
|
|||
function clearItems() { |
|||
set([]); |
|||
if (componentOnSelect) { |
|||
componentOnSelect(); |
|||
} |
|||
} |
|||
|
|||
function getItemIdx(items, itemId) { |
|||
return items.findIndex(i => i._id === itemId); |
|||
} |
|||
|
|||
return { |
|||
subscribe, |
|||
addItem, |
|||
addSingleItem, |
|||
removeItem, |
|||
clearItems, |
|||
getItemIdx |
|||
} |
|||
} |
|||
|
|||
export default createItemsStore |
|||
Loading…
Reference in new issue