feature/sidebar #8
@@ -1,4 +1,4 @@
|
||||
import { derived, Readable, Writable, writable } from 'svelte/store';
|
||||
import { derived, type Readable, type Writable, writable } from 'svelte/store';
|
||||
|
||||
export interface Category {
|
||||
/**
|
||||
@@ -12,7 +12,7 @@ export interface Category {
|
||||
/**
|
||||
* Category selected state
|
||||
*/
|
||||
selected: boolean;
|
||||
selected?: boolean;
|
||||
}
|
||||
|
||||
export interface FilterModel {
|
||||
@@ -35,6 +35,11 @@ export interface FilterStore<T extends FilterModel> extends Writable<T> {
|
||||
* @returns Readable store with filter data
|
||||
*/
|
||||
getStore: () => Readable<T>;
|
||||
/**
|
||||
* Get all categories.
|
||||
* @returns Readable store with categories
|
||||
*/
|
||||
getAllCategories: () => Readable<Category[]>;
|
||||
/**
|
||||
* Get the selected categories.
|
||||
* @returns Readable store with selected categories
|
||||
@@ -83,7 +88,7 @@ export interface FilterStore<T extends FilterModel> extends Writable<T> {
|
||||
* @returns FilterStore<T>
|
||||
*/
|
||||
export function createFilterStore<T extends FilterModel>(
|
||||
initialState: T,
|
||||
initialState?: T,
|
||||
): FilterStore<T> {
|
||||
const { subscribe, set, update } = writable<T>(initialState);
|
||||
|
||||
@@ -103,6 +108,14 @@ export function createFilterStore<T extends FilterModel>(
|
||||
subscribe,
|
||||
};
|
||||
},
|
||||
/**
|
||||
* Get the filtered categories.
|
||||
*/
|
||||
getAllCategories: () => {
|
||||
return derived({ subscribe }, $store => {
|
||||
return $store.categories;
|
||||
});
|
||||
},
|
||||
/**
|
||||
* Get the selected categories.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user