diff options
Diffstat (limited to 'modern/src/store/devices.js')
-rw-r--r-- | modern/src/store/devices.js | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/modern/src/store/devices.js b/modern/src/store/devices.js index cca23cb..f63602a 100644 --- a/modern/src/store/devices.js +++ b/modern/src/store/devices.js @@ -1,9 +1,11 @@ -import { createSlice } from '@reduxjs/toolkit'; +import { createSlice, current } from '@reduxjs/toolkit'; const { reducer, actions } = createSlice({ name: 'devices', initialState: { items: {}, + filterTerm: '', + filteredItems: {}, selectedId: null, }, reducers: { @@ -17,6 +19,20 @@ const { reducer, actions } = createSlice({ select(state, action) { state.selectedId = action.payload.id; }, + unselect(state, action) { + state.selectedId = null; + }, + setFilter(state, action) { + state.filterTerm = action.payload; + const items = Object.entries(current(state).items); + state.filteredItems = Object.fromEntries(items.filter(([k, v]) => { + return v.name.toLowerCase().includes(action.payload.toLowerCase()); + })); + }, + clearFilter(state, action) { + state.filterTerm = ''; + state.filteredItems = {}; + }, remove(state, action) { delete state.items[action.payload]; }, |