mirror of
https://github.com/grafana/grafana.git
synced 2024-12-01 21:19:28 -06:00
546f569e0c
* Chore: Enable eslint react/display-name Enable react/display-name and fixed the corresponding linting issue part of: #29201 * Chore: Enable eslint react/no-deprecated Enable react/no-deprecated and add the UNSAFE_ prefix for deprected methods part of: #29201 * Chore: Enable eslint react/no-find-dom-node Enable react/no-find-dom-node rule and use ref instead part of: #29201 * Test: Update TeamGroupSync test snapshot Since we added the displayName for ToolTip compontent and tag name is changed. * Fix: Fixed ClickOutsideWrapper render The props.children might contains numbers of nodes which make cloneElement failed. Change to simply use a div to wrapper the children and assign the ref to div for this feature * Style: Use shorthand method definition style for inline component * Fix: Rebase master and fix linting Rebase from master branch and fix new displayName linting warning
55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
import React, { FC, memo } from 'react';
|
|
import { MapDispatchToProps, MapStateToProps } from 'react-redux';
|
|
import { UrlQueryMap } from '@grafana/data';
|
|
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';
|
|
import { defaultQueryParams } from '../reducers/searchQueryReducer';
|
|
|
|
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 (isOpen) {
|
|
updateLocation({
|
|
query: {
|
|
search: null,
|
|
folder: null,
|
|
...defaultQueryParams,
|
|
} as UrlQueryMap,
|
|
partial: true,
|
|
});
|
|
}
|
|
};
|
|
|
|
return isOpen ? <DashboardSearch onCloseSearch={closeSearch} folder={folder} /> : null;
|
|
});
|
|
|
|
SearchWrapper.displayName = 'SearchWrapper';
|
|
|
|
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);
|