UNPKG

@yext/search-headless

Version:

A library for powering UI components for Yext Search integrations

42 lines (38 loc) 1.38 kB
import { createSlice, PayloadAction, Slice } from '@reduxjs/toolkit'; import { QuerySource, QueryTrigger, SearchIntent } from '@yext/search-core'; import { QueryState } from '../models/slices/query'; const initialState: QueryState = {}; const reducers = { setInput: (state, action: PayloadAction<string>) => { state.input = action.payload; }, setIsPagination: (state, action: PayloadAction<boolean>) => { state.isPagination = action.payload; }, setTrigger: (state, action: PayloadAction<QueryTrigger>) => { state.queryTrigger = action.payload; }, setSource: (state, action: PayloadAction<QuerySource>) => { state.querySource = action.payload; }, setQueryId: (state, action: PayloadAction<string>) => { state.queryId = action.payload; }, setMostRecentSearch: (state, action: PayloadAction<string>) => { state.mostRecentSearch = action.payload; }, setSearchIntents: (state, action: PayloadAction<SearchIntent[]>) => { state.searchIntents = action.payload; } }; /** * Registers with Redux the slice of {@link State} pertaining to queries. There are * reducers for setting query data like the query string, trigger, source, and id. */ export default function createQuerySlice(prefix: string): Slice<QueryState, typeof reducers> { return createSlice({ name: prefix + 'query', initialState, reducers }); }