mirror of
https://github.com/elastic/kibana.git
synced 2025-06-28 11:05:39 -04:00
[discover] Extract discover grid flyout from discover grid component (#147403)
## Summary Extract discover grid flyout from discover grid component. Part of effort to turn discover into set of components consumable by other kibana apps. Closes https://github.com/elastic/kibana/issues/144154
This commit is contained in:
parent
90b1399531
commit
e43ccd13c6
5 changed files with 21 additions and 7 deletions
|
@ -23,6 +23,7 @@ import { MAX_CONTEXT_SIZE, MIN_CONTEXT_SIZE } from './services/constants';
|
||||||
import { DocTableContext } from '../../components/doc_table/doc_table_context';
|
import { DocTableContext } from '../../components/doc_table/doc_table_context';
|
||||||
import { useDiscoverServices } from '../../hooks/use_discover_services';
|
import { useDiscoverServices } from '../../hooks/use_discover_services';
|
||||||
import type { DataTableRecord } from '../../types';
|
import type { DataTableRecord } from '../../types';
|
||||||
|
import { DiscoverGridFlyout } from '../../components/discover_grid/discover_grid_flyout';
|
||||||
|
|
||||||
export interface ContextAppContentProps {
|
export interface ContextAppContentProps {
|
||||||
columns: string[];
|
columns: string[];
|
||||||
|
@ -160,6 +161,7 @@ export function ContextAppContent({
|
||||||
onAddColumn={onAddColumn}
|
onAddColumn={onAddColumn}
|
||||||
onRemoveColumn={onRemoveColumn}
|
onRemoveColumn={onRemoveColumn}
|
||||||
onSetColumns={onSetColumns}
|
onSetColumns={onSetColumns}
|
||||||
|
DocumentView={DiscoverGridFlyout}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
|
@ -37,6 +37,7 @@ import { DocumentExplorerUpdateCallout } from '../document_explorer_callout/docu
|
||||||
import { DiscoverTourProvider } from '../../../../components/discover_tour';
|
import { DiscoverTourProvider } from '../../../../components/discover_tour';
|
||||||
import { DataTableRecord } from '../../../../types';
|
import { DataTableRecord } from '../../../../types';
|
||||||
import { getRawRecordType } from '../../utils/get_raw_record_type';
|
import { getRawRecordType } from '../../utils/get_raw_record_type';
|
||||||
|
import { DiscoverGridFlyout } from '../../../../components/discover_grid/discover_grid_flyout';
|
||||||
|
|
||||||
const DocTableInfiniteMemoized = React.memo(DocTableInfinite);
|
const DocTableInfiniteMemoized = React.memo(DocTableInfinite);
|
||||||
const DataGridMemoized = React.memo(DiscoverGrid);
|
const DataGridMemoized = React.memo(DiscoverGrid);
|
||||||
|
@ -216,6 +217,7 @@ function DiscoverDocumentsComponent({
|
||||||
onUpdateRowsPerPage={onUpdateRowsPerPage}
|
onUpdateRowsPerPage={onUpdateRowsPerPage}
|
||||||
onFieldEdited={onFieldEdited}
|
onFieldEdited={onFieldEdited}
|
||||||
savedSearchId={savedSearch.id}
|
savedSearchId={savedSearch.id}
|
||||||
|
DocumentView={DiscoverGridFlyout}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|
|
@ -187,6 +187,10 @@ export interface DiscoverGridProps {
|
||||||
* Saved search id used for links to single doc and surrounding docs in the flyout
|
* Saved search id used for links to single doc and surrounding docs in the flyout
|
||||||
*/
|
*/
|
||||||
savedSearchId?: string;
|
savedSearchId?: string;
|
||||||
|
/**
|
||||||
|
* Document detail view component
|
||||||
|
*/
|
||||||
|
DocumentView?: typeof DiscoverGridFlyout;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const EuiDataGridMemoized = React.memo(EuiDataGrid);
|
export const EuiDataGridMemoized = React.memo(EuiDataGrid);
|
||||||
|
@ -226,6 +230,7 @@ export const DiscoverGrid = ({
|
||||||
rowsPerPageState,
|
rowsPerPageState,
|
||||||
onUpdateRowsPerPage,
|
onUpdateRowsPerPage,
|
||||||
onFieldEdited,
|
onFieldEdited,
|
||||||
|
DocumentView,
|
||||||
}: DiscoverGridProps) => {
|
}: DiscoverGridProps) => {
|
||||||
const dataGridRef = useRef<EuiDataGridRefProps>(null);
|
const dataGridRef = useRef<EuiDataGridRefProps>(null);
|
||||||
const services = useDiscoverServices();
|
const services = useDiscoverServices();
|
||||||
|
@ -445,9 +450,13 @@ export const DiscoverGrid = ({
|
||||||
}
|
}
|
||||||
return { columns: sortingColumns, onSort: () => {} };
|
return { columns: sortingColumns, onSort: () => {} };
|
||||||
}, [sortingColumns, onTableSort, isSortEnabled]);
|
}, [sortingColumns, onTableSort, isSortEnabled]);
|
||||||
|
|
||||||
|
const canSetExpandedDoc = Boolean(setExpandedDoc && DocumentView);
|
||||||
|
|
||||||
const lead = useMemo(
|
const lead = useMemo(
|
||||||
() => getLeadControlColumns(setExpandedDoc).filter(({ id }) => controlColumnIds.includes(id)),
|
() =>
|
||||||
[controlColumnIds, setExpandedDoc]
|
getLeadControlColumns(canSetExpandedDoc).filter(({ id }) => controlColumnIds.includes(id)),
|
||||||
|
[controlColumnIds, canSetExpandedDoc]
|
||||||
);
|
);
|
||||||
|
|
||||||
const additionalControls = useMemo(
|
const additionalControls = useMemo(
|
||||||
|
@ -625,8 +634,8 @@ export const DiscoverGrid = ({
|
||||||
</p>
|
</p>
|
||||||
</EuiScreenReaderOnly>
|
</EuiScreenReaderOnly>
|
||||||
)}
|
)}
|
||||||
{setExpandedDoc && expandedDoc && (
|
{setExpandedDoc && expandedDoc && DocumentView && (
|
||||||
<DiscoverGridFlyout
|
<DocumentView
|
||||||
dataView={dataView}
|
dataView={dataView}
|
||||||
hit={expandedDoc}
|
hit={expandedDoc}
|
||||||
hits={displayedRows}
|
hits={displayedRows}
|
||||||
|
|
|
@ -20,7 +20,6 @@ import { SelectButton } from './discover_grid_document_selection';
|
||||||
import { defaultTimeColumnWidth } from './constants';
|
import { defaultTimeColumnWidth } from './constants';
|
||||||
import { buildCopyColumnNameButton, buildCopyColumnValuesButton } from './build_copy_column_button';
|
import { buildCopyColumnNameButton, buildCopyColumnValuesButton } from './build_copy_column_button';
|
||||||
import { DiscoverServices } from '../../build_services';
|
import { DiscoverServices } from '../../build_services';
|
||||||
import { DataTableRecord } from '../../types';
|
|
||||||
import { buildEditFieldButton } from './build_edit_field_button';
|
import { buildEditFieldButton } from './build_edit_field_button';
|
||||||
|
|
||||||
const openDetails = {
|
const openDetails = {
|
||||||
|
@ -53,8 +52,8 @@ const select = {
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
export function getLeadControlColumns(setExpandedDoc?: (doc?: DataTableRecord) => void) {
|
export function getLeadControlColumns(canSetExpandedDoc: boolean) {
|
||||||
if (!setExpandedDoc) {
|
if (!canSetExpandedDoc) {
|
||||||
return [select];
|
return [select];
|
||||||
}
|
}
|
||||||
return [openDetails, select];
|
return [openDetails, select];
|
||||||
|
|
|
@ -11,6 +11,7 @@ import { DataTableRecord } from '../types';
|
||||||
import { DiscoverGrid, DiscoverGridProps } from '../components/discover_grid/discover_grid';
|
import { DiscoverGrid, DiscoverGridProps } from '../components/discover_grid/discover_grid';
|
||||||
import { TotalDocuments } from '../application/main/components/total_documents/total_documents';
|
import { TotalDocuments } from '../application/main/components/total_documents/total_documents';
|
||||||
import './saved_search_grid.scss';
|
import './saved_search_grid.scss';
|
||||||
|
import { DiscoverGridFlyout } from '../components/discover_grid/discover_grid_flyout';
|
||||||
|
|
||||||
export interface DiscoverGridEmbeddableProps extends DiscoverGridProps {
|
export interface DiscoverGridEmbeddableProps extends DiscoverGridProps {
|
||||||
totalHitCount: number;
|
totalHitCount: number;
|
||||||
|
@ -39,6 +40,7 @@ export function DiscoverGridEmbeddable(props: DiscoverGridEmbeddableProps) {
|
||||||
{...props}
|
{...props}
|
||||||
setExpandedDoc={!props.isPlainRecord ? setExpandedDoc : undefined}
|
setExpandedDoc={!props.isPlainRecord ? setExpandedDoc : undefined}
|
||||||
expandedDoc={expandedDoc}
|
expandedDoc={expandedDoc}
|
||||||
|
DocumentView={DiscoverGridFlyout}
|
||||||
/>
|
/>
|
||||||
</EuiFlexItem>
|
</EuiFlexItem>
|
||||||
</EuiFlexGroup>
|
</EuiFlexGroup>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue