Budibase is an open-source low-code platform for creating internal apps in minutes. Supports PostgreSQL, MySQL, MSSQL, MongoDB, Rest API, Docker, K8s 🚀
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

54 lines
1002 B

import { writable } from "svelte/store"
function createItemsStore(componentOnSelect, initialState = []) {
const { subscribe, set, update } = writable(initialState)
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 && i._id === itemId)
}
return {
subscribe,
addItem,
addSingleItem,
removeItem,
clearItems,
getItemIdx,
}
}
export default createItemsStore