@empathyco/x-components
Version:
Empathy X Components
77 lines (74 loc) • 2.37 kB
JavaScript
import { setConfig, mergeConfig } from '../../../store/utils/config-store.utils.js';
import { setQuery } from '../../../store/utils/query.utils.js';
import { facets } from './getters/facets.getter.js';
import { selectedFiltersByFacet } from './getters/selected-filters-by-facet.getter.js';
import { selectedFiltersForRequest } from './getters/selected-filters-for-request.getter.js';
import { selectedFilters } from './getters/selected-filters.getter.js';
/**
* {@link XStoreModule} For the facets' module.
*
* @internal
*/
const facetsXStoreModule = {
state: () => ({
query: '',
filters: {},
groups: {},
facets: {},
preselectedFilters: [],
stickyFilters: {},
config: {
filtersStrategyForRequest: 'all',
},
}),
getters: {
selectedFilters,
selectedFiltersForRequest,
selectedFiltersByFacet,
facets,
},
mutations: {
mutateFilter(state, { filter, newFilterState }) {
const newFilter = Object.assign(filter, newFilterState);
state.filters[newFilter.id] = newFilter;
},
setFilters(state, filters) {
filters.forEach(filter => (state.filters[filter.id] = filter));
},
setPreselectedFilters(state, filters) {
state.preselectedFilters = filters;
},
removeFilter(state, { id }) {
delete state.filters[id];
},
removeFilters(state, filters) {
filters.forEach(({ id }) => delete state.filters[id]);
},
setFacetGroup(state, { facetId, groupId }) {
state.groups[facetId] = groupId;
},
removeFacet(state, { id }) {
delete state.facets[id];
},
setFacet(state, facet) {
state.facets[facet.id] = facet;
},
setConfig,
mergeConfig,
setQuery,
setStickyFilter(state, filter) {
if (!state.stickyFilters[filter.id]) {
state.stickyFilters[filter.id] = filter;
}
},
removeStickyFilter(state, filter) {
delete state.stickyFilters[filter.id];
},
clearStickyFilters(state) {
state.stickyFilters = {};
},
},
actions: {},
};
export { facetsXStoreModule };
//# sourceMappingURL=module.js.map