@empathyco/x-components
Version:
Empathy X Components
104 lines (101 loc) • 2.66 kB
JavaScript
import { namespacedWireCommit, namespacedWireDispatch } from '../../wiring/namespaced-wires.factory.js';
import { filter } from '../../wiring/wires.operators.js';
import { createWiring } from '../../wiring/wiring.utils.js';
/**
* `searchBox` {@link XModuleName | XModule name}.
*
* @internal
*/
const moduleName = 'searchBox';
/**
* WireCommit for {@link SearchBoxXModule}.
*
* @internal
*/
const wireCommit = namespacedWireCommit(moduleName);
/**
* WireDispatch for {@link SearchBoxXModule}.
*
* @internal
*/
const wireDispatch = namespacedWireDispatch(moduleName);
/**
* Sets the query of the search-box module.
*
* @public
*/
const setSearchBoxQuery = wireCommit('setQuery');
/**
* Sets the search state `query` with the selectedQueryPreview's query.
*
* @public
*/
const setSearchBoxQueryFromPreview = wireCommit('setQuery', ({ eventPayload: { query } }) => query);
/**
* Clears the query of the search-box module.
*
* @public
*/
const clearSearchBoxQuery = wireCommit('setQuery', '');
/**
* Sets the search state `query`.
*
* @public
*/
const setUrlParams = wireDispatch('setUrlParams');
/**
* Sets the search state `status`.
*
* @param event - The {@link XEvent} used to transition the status.
*
* @returns A wire.
*
* @public
*/
const setInputStatus = (event) => wireDispatch('setInputStatus', event);
/**
* SearchBox wiring.
*
* @internal
*/
const searchBoxWiring = createWiring({
ParamsLoadedFromUrl: {
setUrlParams,
transitionState: filter(setInputStatus('UserAcceptedAQuery'), ({ eventPayload: urlParams }) => {
// eslint-disable-next-line ts/no-unsafe-member-access
return !!urlParams.query;
}),
},
UserIsTypingAQuery: {
setSearchBoxQuery,
transitionState: setInputStatus('UserIsTypingAQuery'),
},
UserAcceptedAQuery: {
setSearchBoxQuery,
transitionState: setInputStatus('UserAcceptedAQuery'),
},
UserAcceptedAQueryPreview: {
setSearchBoxQueryFromPreview,
transitionState: setInputStatus('UserAcceptedAQuery'),
},
UserPressedClearSearchBoxButton: {
clearSearchBoxQuery,
},
UserClickedCloseX: {
clearSearchBoxQuery,
},
UserClickedOutOfMainModal: {
clearSearchBoxQuery,
},
UserClearedQuery: {
transitionState: setInputStatus('UserClearedQuery'),
},
UserFocusedSearchBox: {
transitionState: setInputStatus('UserFocusedSearchBox'),
},
UserBlurredSearchBox: {
transitionState: setInputStatus('UserBlurredSearchBox'),
},
});
export { searchBoxWiring };
//# sourceMappingURL=wiring.js.map