mirror of
https://github.com/grafana/grafana.git
synced 2025-02-16 18:34:52 -06:00
* Search: Toggle Search based on search query * Search: Fix types and closed search param * Search: Remove appEvents from SearchWrapper * Search: Reset folder on close Co-Authored-By: Alexander Zobnin <alexanderzobnin@gmail.com> * Search: Disable reloadOnSearch for manage dashboards urls Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
import React, { FC, memo } from 'react';
|
|
import { MapDispatchToProps, MapStateToProps } from 'react-redux';
|
|
import { getLocationQuery } from 'app/core/selectors/location';
|
|
import { updateLocation } from 'app/core/reducers/location';
|
|
import { connectWithStore } from 'app/core/utils/connectWithReduxStore';
|
|
import { StoreState } from 'app/types';
|
|
import { DashboardSearch } from './DashboardSearch';
|
|
|
|
interface OwnProps {
|
|
search?: string | null;
|
|
folder?: string;
|
|
queryText?: string;
|
|
filter?: string;
|
|
}
|
|
|
|
interface DispatchProps {
|
|
updateLocation: typeof updateLocation;
|
|
}
|
|
|
|
export type Props = OwnProps & DispatchProps;
|
|
|
|
export const SearchWrapper: FC<Props> = memo(({ search, folder, updateLocation }) => {
|
|
const isOpen = search === 'open';
|
|
|
|
const closeSearch = () => {
|
|
if (search === 'open') {
|
|
updateLocation({
|
|
query: {
|
|
search: null,
|
|
folder: null,
|
|
},
|
|
partial: true,
|
|
});
|
|
}
|
|
};
|
|
|
|
return isOpen ? <DashboardSearch onCloseSearch={closeSearch} folder={folder} /> : null;
|
|
});
|
|
|
|
const mapStateToProps: MapStateToProps<{}, OwnProps, StoreState> = (state: StoreState) => {
|
|
const { search, folder } = getLocationQuery(state.location);
|
|
return { search, folder };
|
|
};
|
|
|
|
const mapDispatchToProps: MapDispatchToProps<DispatchProps, OwnProps> = {
|
|
updateLocation,
|
|
};
|
|
|
|
export default connectWithStore(SearchWrapper, mapStateToProps, mapDispatchToProps);
|