diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index 1772eb456b2d5..0b42d599859ba 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -177,7 +177,7 @@ pageLoadAssetSize: uiActionsEnhanced: 38494 unifiedDocViewer: 25099 unifiedHistogram: 19928 - unifiedSearch: 71059 + unifiedSearch: 23000 upgradeAssistant: 81241 uptime: 60000 urlDrilldown: 30063 diff --git a/src/platform/plugins/shared/unified_search/public/actions/index.ts b/src/platform/plugins/shared/unified_search/public/actions/actions_module.ts similarity index 67% rename from src/platform/plugins/shared/unified_search/public/actions/index.ts rename to src/platform/plugins/shared/unified_search/public/actions/actions_module.ts index 6e38358a21961..dbb21286324cd 100644 --- a/src/platform/plugins/shared/unified_search/public/actions/index.ts +++ b/src/platform/plugins/shared/unified_search/public/actions/actions_module.ts @@ -7,6 +7,5 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export type { ApplyGlobalFilterActionContext } from './apply_filter_action'; -export { ACTION_GLOBAL_APPLY_FILTER } from './apply_filter_action'; -export { UPDATE_FILTER_REFERENCES_ACTION } from './update_filter_references_action'; +export { createFilterAction } from './apply_filter_action/apply_filter_action'; +export { createUpdateFilterReferencesAction } from './update_filter_references_action'; diff --git a/src/platform/plugins/shared/unified_search/public/actions/apply_filter_action.ts b/src/platform/plugins/shared/unified_search/public/actions/apply_filter_action/apply_filter_action.tsx similarity index 72% rename from src/platform/plugins/shared/unified_search/public/actions/apply_filter_action.ts rename to src/platform/plugins/shared/unified_search/public/actions/apply_filter_action/apply_filter_action.tsx index 96d760eb560dc..20da26e4426b1 100644 --- a/src/platform/plugins/shared/unified_search/public/actions/apply_filter_action.ts +++ b/src/platform/plugins/shared/unified_search/public/actions/apply_filter_action/apply_filter_action.tsx @@ -7,25 +7,21 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +import React from 'react'; import { i18n } from '@kbn/i18n'; -import { CoreSetup } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { toMountPoint } from '@kbn/react-kibana-mount'; import { IncompatibleActionError, UiActionsActionDefinition } from '@kbn/ui-actions-plugin/public'; -// for cleanup esFilters need to fix the issue https://github.com/elastic/kibana/issues/131292 import { FilterManager, TimefilterContract } from '@kbn/data-plugin/public'; -import type { Filter, RangeFilter } from '@kbn/es-query'; -import { getIndexPatterns } from '../services'; -import { applyFiltersPopover } from '../apply_filters'; - -export const ACTION_GLOBAL_APPLY_FILTER = 'ACTION_GLOBAL_APPLY_FILTER'; +import type { Filter } from '@kbn/es-query'; +import { convertRangeFilterToTimeRange, extractTimeFilter } from '@kbn/es-query'; +import { getIndexPatterns } from '../../services'; +import { ApplyFiltersPopoverContent } from './apply_filter_popover_content'; +import { ACTION_GLOBAL_APPLY_FILTER } from '../constants'; export interface ApplyGlobalFilterActionContext { filters: Filter[]; timeFieldName?: string; - // Need to make this unknown to prevent circular dependencies. - // Apps using this property will need to cast to `IEmbeddable`. - // TODO: We should consider moving these commonly used types into a separate package to avoid circular dependencies - // https://github.com/elastic/kibana/issues/163994 embeddable?: unknown; // controlledBy is an optional key in filter.meta that identifies the owner of a filter // Pass controlledBy to cleanup an existing filter(s) owned by embeddable prior to adding new filters @@ -39,7 +35,7 @@ async function isCompatible(context: ApplyGlobalFilterActionContext) { export function createFilterAction( filterManager: FilterManager, timeFilter: TimefilterContract, - core: CoreSetup, + coreStart: CoreStart, id: string = ACTION_GLOBAL_APPLY_FILTER, type: string = ACTION_GLOBAL_APPLY_FILTER ): UiActionsActionDefinition { @@ -66,7 +62,6 @@ export function createFilterAction( let selectedFilters: Filter[] = filters; if (selectedFilters.length > 1) { - const [coreStart] = await core.getStartServices(); const indexPatterns = await Promise.all( filters.map((filter) => { return getIndexPatterns().get(filter.meta.index!); @@ -76,18 +71,18 @@ export function createFilterAction( const filterSelectionPromise: Promise = new Promise((resolve) => { const overlay = coreStart.overlays.openModal( toMountPoint( - applyFiltersPopover( - filters, - indexPatterns, - () => { + { overlay.close(); resolve([]); - }, - (filterSelection: Filter[]) => { + }} + onSubmit={(filterSelection: Filter[]) => { overlay.close(); resolve(filterSelection); - } - ), + }} + />, coreStart ), { @@ -109,14 +104,13 @@ export function createFilterAction( } if (timeFieldName) { - const { extractTimeFilter } = await import('@kbn/es-query'); const { timeRangeFilter, restOfFilters } = extractTimeFilter( timeFieldName, selectedFilters ); filterManager.addFilters(restOfFilters); if (timeRangeFilter) { - changeTimeFilter(timeFilter, timeRangeFilter); + timeFilter.setTime(convertRangeFilterToTimeRange(timeRangeFilter)); } } else { filterManager.addFilters(selectedFilters); @@ -124,8 +118,3 @@ export function createFilterAction( }, }; } - -async function changeTimeFilter(timeFilter: TimefilterContract, filter: RangeFilter) { - const { convertRangeFilterToTimeRange } = await import('@kbn/es-query'); - timeFilter.setTime(convertRangeFilterToTimeRange(filter)); -} diff --git a/src/platform/plugins/shared/unified_search/public/apply_filters/apply_filter_popover_content.tsx b/src/platform/plugins/shared/unified_search/public/actions/apply_filter_action/apply_filter_popover_content.tsx similarity index 94% rename from src/platform/plugins/shared/unified_search/public/apply_filters/apply_filter_popover_content.tsx rename to src/platform/plugins/shared/unified_search/public/actions/apply_filter_action/apply_filter_popover_content.tsx index 967b7145515f5..aa88b83b91ea1 100644 --- a/src/platform/plugins/shared/unified_search/public/apply_filters/apply_filter_popover_content.tsx +++ b/src/platform/plugins/shared/unified_search/public/actions/apply_filter_action/apply_filter_popover_content.tsx @@ -28,7 +28,7 @@ import { } from '@kbn/data-plugin/public'; import type { Filter } from '@kbn/es-query'; import type { DataView } from '@kbn/data-views-plugin/public'; -import { FilterContent } from '../filter_badge'; +import { FilterContent } from '../../filter_badge'; interface Props { filters: Filter[]; @@ -42,9 +42,7 @@ interface State { fieldLabel?: string; } -// Needed for React.lazy -// eslint-disable-next-line import/no-default-export -export default class ApplyFiltersPopoverContent extends Component { +export class ApplyFiltersPopoverContent extends Component { public static defaultProps = { filters: [], }; diff --git a/src/platform/plugins/shared/unified_search/public/apply_filters/index.ts b/src/platform/plugins/shared/unified_search/public/actions/constants.ts similarity index 75% rename from src/platform/plugins/shared/unified_search/public/apply_filters/index.ts rename to src/platform/plugins/shared/unified_search/public/actions/constants.ts index 311e6828a4865..b85f6850c5d52 100644 --- a/src/platform/plugins/shared/unified_search/public/apply_filters/index.ts +++ b/src/platform/plugins/shared/unified_search/public/actions/constants.ts @@ -7,4 +7,5 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export { applyFiltersPopover } from './apply_filters_popover'; +export const ACTION_GLOBAL_APPLY_FILTER = 'ACTION_GLOBAL_APPLY_FILTER'; +export const UPDATE_FILTER_REFERENCES_ACTION = 'UPDATE_FILTER_REFERENCES_ACTION'; diff --git a/src/platform/plugins/shared/unified_search/public/actions/update_filter_references_action.ts b/src/platform/plugins/shared/unified_search/public/actions/update_filter_references_action.ts index bca5875c0e8ec..f10793dea5387 100644 --- a/src/platform/plugins/shared/unified_search/public/actions/update_filter_references_action.ts +++ b/src/platform/plugins/shared/unified_search/public/actions/update_filter_references_action.ts @@ -9,8 +9,7 @@ import { ActionExecutionMeta, UiActionsActionDefinition } from '@kbn/ui-actions-plugin/public'; import { FilterManager } from '@kbn/data-plugin/public'; - -export const UPDATE_FILTER_REFERENCES_ACTION = 'UPDATE_FILTER_REFERENCES_ACTION'; +import { UPDATE_FILTER_REFERENCES_ACTION } from './constants'; export interface UpdateFilterReferencesActionContext extends ActionExecutionMeta { /** The initial data view of the editable layer **/ diff --git a/src/platform/plugins/shared/unified_search/public/apply_filters/apply_filters_popover.tsx b/src/platform/plugins/shared/unified_search/public/apply_filters/apply_filters_popover.tsx deleted file mode 100644 index d8eb86b49b46f..0000000000000 --- a/src/platform/plugins/shared/unified_search/public/apply_filters/apply_filters_popover.tsx +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import type { Filter } from '@kbn/es-query'; -import { DataView } from '@kbn/data-views-plugin/common'; - -type CancelFnType = () => void; -type SubmitFnType = (filters: Filter[]) => void; - -const Fallback = () =>
; - -const LazyApplyFiltersPopoverContent = React.lazy(() => import('./apply_filter_popover_content')); - -export const applyFiltersPopover = ( - filters: Filter[], - indexPatterns: DataView[], - onCancel: CancelFnType, - onSubmit: SubmitFnType -) => { - return ( - }> - - - ); -}; diff --git a/src/platform/plugins/shared/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx b/src/platform/plugins/shared/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx index 81fa10da32ebb..e0f16cf3ea1a3 100644 --- a/src/platform/plugins/shared/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx +++ b/src/platform/plugins/shared/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx @@ -10,6 +10,7 @@ import { indexPatterns as indexPatternsUtils } from '@kbn/data-plugin/public'; import type { DataViewField } from '@kbn/data-views-plugin/public'; import { flatten } from 'lodash'; +import { escapeKuery } from '@kbn/es-query'; import { sortPrefixFirst } from './sort_prefix_first'; import { QuerySuggestionField, QuerySuggestionTypes } from '../query_suggestion_provider'; import { KqlQuerySuggestionProvider } from './types'; @@ -56,7 +57,6 @@ export const setupGetFieldSuggestions: KqlQuerySuggestionProvider { const isNested = field.subType && field.subType.nested; const isSuggestionsAbstractionOn = !!suggestionsAbstraction?.fields?.[field.name]; diff --git a/src/platform/plugins/shared/unified_search/public/autocomplete/providers/kql_query_suggestion/index.ts b/src/platform/plugins/shared/unified_search/public/autocomplete/providers/kql_query_suggestion/index.ts index ab47c1154f8d3..2c964543ec5a0 100644 --- a/src/platform/plugins/shared/unified_search/public/autocomplete/providers/kql_query_suggestion/index.ts +++ b/src/platform/plugins/shared/unified_search/public/autocomplete/providers/kql_query_suggestion/index.ts @@ -39,13 +39,14 @@ export const setupKqlQuerySuggestionProvider = ( if (getSuggestionsByType) { return getSuggestionsByType; } + const { + fromKueryExpression, setupGetFieldSuggestions, setupGetValueSuggestions, setupGetOperatorSuggestions, setupGetConjunctionSuggestions, - } = await import('./async_loads'); - const { fromKueryExpression } = await import('@kbn/es-query'); + } = await import('./kql_module'); const providers = { field: setupGetFieldSuggestions(core), diff --git a/src/platform/plugins/shared/unified_search/public/autocomplete/providers/kql_query_suggestion/async_loads.ts b/src/platform/plugins/shared/unified_search/public/autocomplete/providers/kql_query_suggestion/kql_module.ts similarity index 92% rename from src/platform/plugins/shared/unified_search/public/autocomplete/providers/kql_query_suggestion/async_loads.ts rename to src/platform/plugins/shared/unified_search/public/autocomplete/providers/kql_query_suggestion/kql_module.ts index 45936d06ad731..924af99469aa6 100644 --- a/src/platform/plugins/shared/unified_search/public/autocomplete/providers/kql_query_suggestion/async_loads.ts +++ b/src/platform/plugins/shared/unified_search/public/autocomplete/providers/kql_query_suggestion/kql_module.ts @@ -7,6 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +export { fromKueryExpression } from '@kbn/es-query'; export { setupGetFieldSuggestions } from './field'; export { setupGetValueSuggestions } from './value'; export { setupGetOperatorSuggestions } from './operator'; diff --git a/src/platform/plugins/shared/unified_search/public/autocomplete/providers/value_suggestion_provider.ts b/src/platform/plugins/shared/unified_search/public/autocomplete/providers/value_suggestion_provider.ts index 88c8299a389ff..8e72197ac7c68 100644 --- a/src/platform/plugins/shared/unified_search/public/autocomplete/providers/value_suggestion_provider.ts +++ b/src/platform/plugins/shared/unified_search/public/autocomplete/providers/value_suggestion_provider.ts @@ -13,6 +13,7 @@ import { memoize } from 'lodash'; import { UI_SETTINGS, ValueSuggestionsMethod } from '@kbn/data-plugin/common'; import type { DataView, DataViewField } from '@kbn/data-views-plugin/common'; import type { TimefilterSetup } from '@kbn/data-plugin/public'; +import { buildQueryFromFilters } from '@kbn/es-query'; import type { AutocompleteUsageCollector } from '../collectors'; export type ValueSuggestionsGetFn = (args: ValueSuggestionsGetFnArgs) => Promise; @@ -125,7 +126,6 @@ export const setupValueSuggestionProvider = ( const timeFilter = useTimeRange ? getAutocompleteTimefilter(timefilter, indexPattern) : undefined; - const { buildQueryFromFilters } = await import('@kbn/es-query'); const filterQuery = timeFilter ? buildQueryFromFilters([timeFilter], indexPattern).filter : []; const filters = [...(boolFilter ? boolFilter : []), ...filterQuery]; try { diff --git a/src/platform/plugins/shared/unified_search/public/dataview_picker/data_view_picker.tsx b/src/platform/plugins/shared/unified_search/public/dataview_picker/data_view_picker.tsx index 85c30edc3b6e1..660f9d24a150d 100644 --- a/src/platform/plugins/shared/unified_search/public/dataview_picker/data_view_picker.tsx +++ b/src/platform/plugins/shared/unified_search/public/dataview_picker/data_view_picker.tsx @@ -107,7 +107,3 @@ export const DataViewPicker = ({ /> ); }; - -// React.lazy support -// eslint-disable-next-line import/no-default-export -export default DataViewPicker; diff --git a/src/platform/plugins/shared/unified_search/public/dataview_picker/data_view_selector.tsx b/src/platform/plugins/shared/unified_search/public/dataview_picker/data_view_selector.tsx index d76fb4ffd453c..4e77b6acde47c 100644 --- a/src/platform/plugins/shared/unified_search/public/dataview_picker/data_view_selector.tsx +++ b/src/platform/plugins/shared/unified_search/public/dataview_picker/data_view_selector.tsx @@ -93,7 +93,3 @@ export const DataViewSelector = ({ ); }; - -// React.lazy support -// eslint-disable-next-line import/no-default-export -export default DataViewSelector; diff --git a/src/platform/plugins/shared/unified_search/public/dataview_picker/dataview_list.tsx b/src/platform/plugins/shared/unified_search/public/dataview_picker/dataview_list.tsx index 8bc93ef5efdd9..e3487f7d9856b 100644 --- a/src/platform/plugins/shared/unified_search/public/dataview_picker/dataview_list.tsx +++ b/src/platform/plugins/shared/unified_search/public/dataview_picker/dataview_list.tsx @@ -207,7 +207,3 @@ export function DataViewsList({ ); } - -// React.lazy support -// eslint-disable-next-line import/no-default-export -export default DataViewsList; diff --git a/src/platform/plugins/shared/unified_search/public/dataview_picker/index.tsx b/src/platform/plugins/shared/unified_search/public/dataview_picker/index.tsx index ef829a223e299..d2ba2988f6d89 100644 --- a/src/platform/plugins/shared/unified_search/public/dataview_picker/index.tsx +++ b/src/platform/plugins/shared/unified_search/public/dataview_picker/index.tsx @@ -16,7 +16,10 @@ export type { DataViewPickerProps } from './data_view_picker'; * The Lazily-loaded `DataViewsList` component. Consumers should use `React.Suspense` or * the withSuspense` HOC to load this component. */ -export const DataViewsListLazy = React.lazy(() => import('./dataview_list')); +export const DataViewsListLazy = React.lazy(async () => { + const { DataViewsList } = await import('../ui_module'); + return { default: DataViewsList }; +}); /** * A `DataViewsList` component that is wrapped by the `withSuspense` HOC. This component can @@ -29,7 +32,10 @@ export const DataViewsList = withSuspense(DataViewsListLazy); * The Lazily-loaded `DataViewSelector` component. Consumers should use `React.Suspense` or * the withSuspense` HOC to load this component. */ -export const DataViewSelectorLazy = React.lazy(() => import('./data_view_selector')); +export const DataViewSelectorLazy = React.lazy(async () => { + const { DataViewSelector } = await import('../ui_module'); + return { default: DataViewSelector }; +}); /** * A `DataViewSelector` component that is wrapped by the `withSuspense` HOC. This component can @@ -42,7 +48,10 @@ export const DataViewSelector = withSuspense(DataViewSelectorLazy); * The Lazily-loaded `DataViewPicker` component. Consumers should use `React.Suspense` or * the withSuspense` HOC to load this component. */ -export const DataViewPickerLazy = React.lazy(() => import('./data_view_picker')); +export const DataViewPickerLazy = React.lazy(async () => { + const { DataViewPicker } = await import('../ui_module'); + return { default: DataViewPicker }; +}); /** * A `DataViewPicker` component that is wrapped by the `withSuspense` HOC. This component can diff --git a/src/platform/plugins/shared/unified_search/public/filter_badge/filter_badge.tsx b/src/platform/plugins/shared/unified_search/public/filter_badge/filter_badge.tsx index 564494f8e9ac6..1ae7541dd9159 100644 --- a/src/platform/plugins/shared/unified_search/public/filter_badge/filter_badge.tsx +++ b/src/platform/plugins/shared/unified_search/public/filter_badge/filter_badge.tsx @@ -27,7 +27,7 @@ export interface FilterBadgeProps { readOnly?: boolean; } -function FilterBadge({ +export function FilterBadge({ filter, dataViews, valueLabel, @@ -91,7 +91,3 @@ function FilterBadge({ ); } - -// React.lazy support -// eslint-disable-next-line import/no-default-export -export default FilterBadge; diff --git a/src/platform/plugins/shared/unified_search/public/filter_badge/filter_badge_group.tsx b/src/platform/plugins/shared/unified_search/public/filter_badge/filter_badge_group.tsx index bb9e50766469f..23943e0b7ea1a 100644 --- a/src/platform/plugins/shared/unified_search/public/filter_badge/filter_badge_group.tsx +++ b/src/platform/plugins/shared/unified_search/public/filter_badge/filter_badge_group.tsx @@ -56,7 +56,3 @@ export function FilterBadgeGroup({ ); } - -// Needed for React.lazy -// eslint-disable-next-line import/no-default-export -export default FilterBadgeGroup; diff --git a/src/platform/plugins/shared/unified_search/public/filter_badge/filter_content/filter_content.test.tsx b/src/platform/plugins/shared/unified_search/public/filter_badge/filter_content/filter_content.test.tsx index 6587b1bf26ef6..f88deebecc91f 100644 --- a/src/platform/plugins/shared/unified_search/public/filter_badge/filter_content/filter_content.test.tsx +++ b/src/platform/plugins/shared/unified_search/public/filter_badge/filter_content/filter_content.test.tsx @@ -8,7 +8,7 @@ */ import React from 'react'; -import FilterContent from './filter_content'; +import { FilterContent } from './filter_content'; import { render } from '@testing-library/react'; import { phraseFilter } from '@kbn/data-plugin/common/stubs'; diff --git a/src/platform/plugins/shared/unified_search/public/filter_badge/filter_content/filter_content.tsx b/src/platform/plugins/shared/unified_search/public/filter_badge/filter_content/filter_content.tsx index c0a06bb0c07c5..06578d1b08f8a 100644 --- a/src/platform/plugins/shared/unified_search/public/filter_badge/filter_content/filter_content.tsx +++ b/src/platform/plugins/shared/unified_search/public/filter_badge/filter_content/filter_content.tsx @@ -98,7 +98,3 @@ export function FilterContent({ filter, valueLabel, fieldLabel, hideAlias }: Fil ); } } - -// Needed for React.lazy -// eslint-disable-next-line import/no-default-export -export default FilterContent; diff --git a/src/platform/plugins/shared/unified_search/public/filter_badge/filter_content/index.ts b/src/platform/plugins/shared/unified_search/public/filter_badge/filter_content/index.ts index caa4430de2b12..a0dbd3f763492 100644 --- a/src/platform/plugins/shared/unified_search/public/filter_badge/filter_content/index.ts +++ b/src/platform/plugins/shared/unified_search/public/filter_badge/filter_content/index.ts @@ -14,7 +14,10 @@ import { withSuspense } from '@kbn/shared-ux-utility'; * The Lazily-loaded `FilterContent` component. Consumers should use `React.Suspense` or * the withSuspense` HOC to load this component. */ -export const FilterContentLazy = React.lazy(() => import('./filter_content')); +export const FilterContentLazy = React.lazy(async () => { + const { FilterContent } = await import('../../ui_module'); + return { default: FilterContent }; +}); /** * A `FilterContent` component that is wrapped by the `withSuspense` HOC. This component can diff --git a/src/platform/plugins/shared/unified_search/public/filter_badge/index.ts b/src/platform/plugins/shared/unified_search/public/filter_badge/index.ts index af42b17bc1fc0..e5c1608af5b67 100644 --- a/src/platform/plugins/shared/unified_search/public/filter_badge/index.ts +++ b/src/platform/plugins/shared/unified_search/public/filter_badge/index.ts @@ -16,7 +16,10 @@ export { FilterContent, FilterContentLazy } from './filter_content'; * The Lazily-loaded `FilterBadge` component. Consumers should use `React.Suspense` or * the withSuspense` HOC to load this component. */ -export const FilterBadgeLazy = React.lazy(() => import('./filter_badge')); +export const FilterBadgeLazy = React.lazy(async () => { + const { FilterBadge } = await import('../ui_module'); + return { default: FilterBadge }; +}); /** * A `FilterBadge` component that is wrapped by the `withSuspense` HOC. This component can @@ -29,7 +32,10 @@ export const FilterBadge = withSuspense(FilterBadgeLazy); * The Lazily-loaded `FilterBadgeGroup` component. Consumers should use `React.Suspense` or * the withSuspense` HOC to load this component. */ -export const FilterBadgeGroupLazy = React.lazy(() => import('./filter_badge_group')); +export const FilterBadgeGroupLazy = React.lazy(async () => { + const { FilterBadgeGroup } = await import('../ui_module'); + return { default: FilterBadgeGroup }; +}); /** * A `FilterBadgeGroup` component that is wrapped by the `withSuspense` HOC. This component can diff --git a/src/platform/plugins/shared/unified_search/public/filter_bar/filter_bar.tsx b/src/platform/plugins/shared/unified_search/public/filter_bar/filter_bar.tsx index 1fdc5031862c8..13f39e895dceb 100644 --- a/src/platform/plugins/shared/unified_search/public/filter_bar/filter_bar.tsx +++ b/src/platform/plugins/shared/unified_search/public/filter_bar/filter_bar.tsx @@ -12,7 +12,7 @@ import { injectI18n, IntlShape } from '@kbn/i18n-react'; import type { Filter } from '@kbn/es-query'; import React, { ReactNode, useRef } from 'react'; import { DataView } from '@kbn/data-views-plugin/public'; -import FilterItems, { type FilterItemsProps } from './filter_item/filter_items'; +import { FilterItems, type FilterItemsProps } from './filter_item/filter_items'; import { filterBarStyles } from './filter_bar.styles'; import { SuggestionsAbstraction } from '../typeahead/suggestions_component'; @@ -74,7 +74,4 @@ const FilterBarUI = React.memo(function FilterBarUI(props: Props) { ); }); -const FilterBar = injectI18n(FilterBarUI); -// Needed for React.lazy -// eslint-disable-next-line import/no-default-export -export default FilterBar; +export const FilterBar = injectI18n(FilterBarUI); diff --git a/src/platform/plugins/shared/unified_search/public/filter_bar/filter_item/filter_item.tsx b/src/platform/plugins/shared/unified_search/public/filter_bar/filter_item/filter_item.tsx index 9c8e7b074149f..155c4612f5d55 100644 --- a/src/platform/plugins/shared/unified_search/public/filter_bar/filter_item/filter_item.tsx +++ b/src/platform/plugins/shared/unified_search/public/filter_bar/filter_item/filter_item.tsx @@ -412,7 +412,3 @@ function FilterItemComponent(props: FilterItemProps) { } export const FilterItem = withCloseFilterEditorConfirmModal(FilterItemComponent); - -// Needed for React.lazy -// eslint-disable-next-line import/no-default-export -export default FilterItem; diff --git a/src/platform/plugins/shared/unified_search/public/filter_bar/filter_item/filter_items.tsx b/src/platform/plugins/shared/unified_search/public/filter_bar/filter_item/filter_items.tsx index 44d20c5288589..b4d87a344233e 100644 --- a/src/platform/plugins/shared/unified_search/public/filter_bar/filter_item/filter_items.tsx +++ b/src/platform/plugins/shared/unified_search/public/filter_bar/filter_item/filter_items.tsx @@ -109,7 +109,4 @@ const FilterItemsUI = React.memo(function FilterItemsUI(props: FilterItemsProps) return <>{renderItems()}; }); -const FilterItems = injectI18n(FilterItemsUI); -// Needed for React.lazy -// eslint-disable-next-line import/no-default-export -export default FilterItems; +export const FilterItems = injectI18n(FilterItemsUI); diff --git a/src/platform/plugins/shared/unified_search/public/filter_bar/index.tsx b/src/platform/plugins/shared/unified_search/public/filter_bar/index.tsx index 7bad208d57245..40b4fb3435cd4 100644 --- a/src/platform/plugins/shared/unified_search/public/filter_bar/index.tsx +++ b/src/platform/plugins/shared/unified_search/public/filter_bar/index.tsx @@ -13,14 +13,20 @@ export type { FilterItemsProps } from './filter_item/filter_items'; const Fallback = () =>
; -const LazyFilterBar = React.lazy(() => import('./filter_bar')); +const LazyFilterBar = React.lazy(async () => { + const { FilterBar } = await import('../ui_module'); + return { default: FilterBar }; +}); export const FilterBar = (props: React.ComponentProps) => ( }> ); -const LazyFilterItems = React.lazy(() => import('./filter_item/filter_items')); +const LazyFilterItems = React.lazy(async () => { + const { FilterItems } = await import('../ui_module'); + return { default: FilterItems }; +}); /** * Renders a group of filter pills */ @@ -30,7 +36,10 @@ export const FilterItems = (props: React.ComponentProps) ); -const LazyFilterItem = React.lazy(() => import('./filter_item/filter_item')); +const LazyFilterItem = React.lazy(async () => { + const { FilterItem } = await import('../ui_module'); + return { default: FilterItem }; +}); /** * Renders a single filter pill */ diff --git a/src/platform/plugins/shared/unified_search/public/filters_builder/__stories__/filter_builder.stories.tsx b/src/platform/plugins/shared/unified_search/public/filters_builder/__stories__/filter_builder.stories.tsx index 46fefb195e40c..70976113bc1b9 100644 --- a/src/platform/plugins/shared/unified_search/public/filters_builder/__stories__/filter_builder.stories.tsx +++ b/src/platform/plugins/shared/unified_search/public/filters_builder/__stories__/filter_builder.stories.tsx @@ -16,7 +16,7 @@ import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import type { Filter } from '@kbn/es-query'; import type { StoryObj } from '@storybook/react'; import { getFiltersMock, getFiltersMockOrHide } from '../__mock__/filters'; -import FiltersBuilder from '../filters_builder'; +import { FiltersBuilder } from '../filters_builder'; export default { title: 'Filters Builder', diff --git a/src/platform/plugins/shared/unified_search/public/filters_builder/filters_builder.tsx b/src/platform/plugins/shared/unified_search/public/filters_builder/filters_builder.tsx index 071d73d0a1bdb..6954ac28bd903 100644 --- a/src/platform/plugins/shared/unified_search/public/filters_builder/filters_builder.tsx +++ b/src/platform/plugins/shared/unified_search/public/filters_builder/filters_builder.tsx @@ -35,7 +35,7 @@ export interface FiltersBuilderProps { const rootLevelConditionType = BooleanRelation.AND; const DEFAULT_MAX_DEPTH = 10; -function FiltersBuilder({ +export function FiltersBuilder({ onChange, dataView, filters, @@ -149,7 +149,3 @@ function FiltersBuilder({
); } - -// React.lazy support -// eslint-disable-next-line import/no-default-export -export default FiltersBuilder; diff --git a/src/platform/plugins/shared/unified_search/public/filters_builder/index.ts b/src/platform/plugins/shared/unified_search/public/filters_builder/index.ts index a7be3ae4797fa..2d2ad34290516 100644 --- a/src/platform/plugins/shared/unified_search/public/filters_builder/index.ts +++ b/src/platform/plugins/shared/unified_search/public/filters_builder/index.ts @@ -14,7 +14,10 @@ import { withSuspense } from '@kbn/shared-ux-utility'; * The Lazily-loaded `FiltersBuilder` component. Consumers should use `React.Suspense` or * the withSuspense` HOC to load this component. */ -export const FiltersBuilderLazy = React.lazy(() => import('./filters_builder')); +export const FiltersBuilderLazy = React.lazy(async () => { + const { FiltersBuilder } = await import('../ui_module'); + return { default: FiltersBuilder }; +}); /** * A `FiltersBuilder` component that is wrapped by the `withSuspense` HOC. This component can diff --git a/src/platform/plugins/shared/unified_search/public/index.ts b/src/platform/plugins/shared/unified_search/public/index.ts index f5b1286a16df3..c90a01b775883 100755 --- a/src/platform/plugins/shared/unified_search/public/index.ts +++ b/src/platform/plugins/shared/unified_search/public/index.ts @@ -7,48 +7,50 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { PluginInitializerContext } from '@kbn/core/public'; +import { CoreStart, PluginInitializerContext } from '@kbn/core/public'; +import { FilterManager, TimefilterContract } from '@kbn/data-plugin/public'; import type { ConfigSchema } from '../server/config'; +import { UnifiedSearchPublicPlugin } from './plugin'; + +export type { + QuerySuggestion, + QuerySuggestionGetFn, + QuerySuggestionGetFnArgs, + AutocompleteStart, +} from './autocomplete'; export type { IndexPatternSelectProps } from './index_pattern_select'; export type { QueryStringInputProps } from './query_string_input'; -export { QueryStringInput } from './query_string_input'; export type { StatefulSearchBarProps, SearchBarProps } from './search_bar'; export type { UnifiedSearchPublicPluginStart, UnifiedSearchPluginSetup, IUnifiedSearchPluginServices, } from './types'; -export { SearchBar } from './search_bar'; export type { FilterItemsProps } from './filter_bar'; +export type { DataViewPickerProps } from './dataview_picker'; +export type { ApplyGlobalFilterActionContext } from './actions/apply_filter_action/apply_filter_action'; + +export { QueryStringInput } from './query_string_input'; +export { QuerySuggestionTypes } from './autocomplete/providers/query_suggestion_provider'; +export { SearchBar } from './search_bar'; +export { createSearchBar } from './search_bar/create_search_bar'; export { FilterItem, FilterItems } from './filter_bar'; export { FilterBadgeGroup } from './filter_badge'; - export { DataViewPicker, DataViewSelector, DataViewsList } from './dataview_picker'; -export type { DataViewPickerProps } from './dataview_picker'; - -export type { ApplyGlobalFilterActionContext } from './actions'; -export { ACTION_GLOBAL_APPLY_FILTER, UPDATE_FILTER_REFERENCES_ACTION } from './actions'; +export { ACTION_GLOBAL_APPLY_FILTER, UPDATE_FILTER_REFERENCES_ACTION } from './actions/constants'; export { UPDATE_FILTER_REFERENCES_TRIGGER } from './triggers'; -export { createSearchBar } from './search_bar/create_search_bar'; -export { createFilterAction } from './actions/apply_filter_action'; - -/* - * Autocomplete query suggestions: - */ -export type { - QuerySuggestion, - QuerySuggestionGetFn, - QuerySuggestionGetFnArgs, - AutocompleteStart, -} from './autocomplete'; - -export { QuerySuggestionTypes } from './autocomplete/providers/query_suggestion_provider'; - -import { UnifiedSearchPublicPlugin } from './plugin'; +export async function createFilterAction( + filterManager: FilterManager, + timeFilter: TimefilterContract, + coreStart: CoreStart, + id: string, + type: string +) { + const { createFilterAction: createAction } = await import('./actions/actions_module'); + return createAction(filterManager, timeFilter, coreStart, id, type); +} -// This exports static code and TypeScript types, -// as well as, Kibana Platform `plugin()` initializer. export function plugin(initializerContext: PluginInitializerContext) { return new UnifiedSearchPublicPlugin(initializerContext); } diff --git a/src/platform/plugins/shared/unified_search/public/index_pattern_select/index.tsx b/src/platform/plugins/shared/unified_search/public/index_pattern_select/index.tsx index cb65b04225093..24487ddeb4c86 100644 --- a/src/platform/plugins/shared/unified_search/public/index_pattern_select/index.tsx +++ b/src/platform/plugins/shared/unified_search/public/index_pattern_select/index.tsx @@ -12,7 +12,10 @@ import type { IndexPatternSelectInternalProps } from './index_pattern_select'; const Fallback = () =>
; -const LazyIndexPatternSelect = React.lazy(() => import('./index_pattern_select')); +const LazyIndexPatternSelect = React.lazy(async () => { + const { IndexPatternSelect } = await import('../ui_module'); + return { default: IndexPatternSelect }; +}); export const IndexPatternSelect = (props: IndexPatternSelectInternalProps) => ( }> diff --git a/src/platform/plugins/shared/unified_search/public/index_pattern_select/index_pattern_select.tsx b/src/platform/plugins/shared/unified_search/public/index_pattern_select/index_pattern_select.tsx index 3a531bb0b5eb1..1b7260418b7bd 100644 --- a/src/platform/plugins/shared/unified_search/public/index_pattern_select/index_pattern_select.tsx +++ b/src/platform/plugins/shared/unified_search/public/index_pattern_select/index_pattern_select.tsx @@ -39,9 +39,7 @@ interface IndexPatternSelectState { searchValue: string | undefined; } -// Needed for React.lazy -// eslint-disable-next-line import/no-default-export -export default class IndexPatternSelect extends Component { +export class IndexPatternSelect extends Component { private isMounted: boolean = false; state: IndexPatternSelectState; diff --git a/src/platform/plugins/shared/unified_search/public/plugin.ts b/src/platform/plugins/shared/unified_search/public/plugin.ts index ae2813e790e55..b8a23ded72170 100755 --- a/src/platform/plugins/shared/unified_search/public/plugin.ts +++ b/src/platform/plugins/shared/unified_search/public/plugin.ts @@ -25,13 +25,9 @@ import type { UnifiedSearchPublicPluginStart, UnifiedSearchPublicPluginStartUi, } from './types'; -import { createFilterAction } from './actions/apply_filter_action'; -import { createUpdateFilterReferencesAction } from './actions/update_filter_references_action'; -import { ACTION_GLOBAL_APPLY_FILTER, UPDATE_FILTER_REFERENCES_ACTION } from './actions'; +import { ACTION_GLOBAL_APPLY_FILTER, UPDATE_FILTER_REFERENCES_ACTION } from './actions/constants'; import { FiltersBuilderLazy } from './filters_builder'; -import './index.scss'; - export class UnifiedSearchPublicPlugin implements Plugin { @@ -53,11 +49,6 @@ export class UnifiedSearchPublicPlugin uiActions.registerTrigger(updateFilterReferencesTrigger); - uiActions.registerAction( - createFilterAction(query.filterManager, query.timefilter.timefilter, core) - ); - - uiActions.registerAction(createUpdateFilterReferencesAction(query.filterManager)); this.usageCollection = usageCollection; return { @@ -99,9 +90,19 @@ export class UnifiedSearchPublicPlugin const SearchBar = getCustomSearchBar(); - uiActions.attachAction(APPLY_FILTER_TRIGGER, ACTION_GLOBAL_APPLY_FILTER); - - uiActions.attachAction(UPDATE_FILTER_REFERENCES_TRIGGER, UPDATE_FILTER_REFERENCES_ACTION); + uiActions.addTriggerActionAsync(APPLY_FILTER_TRIGGER, ACTION_GLOBAL_APPLY_FILTER, async () => { + const { createFilterAction } = await import('./actions/actions_module'); + return createFilterAction(data.query.filterManager, data.query.timefilter.timefilter, core); + }); + + uiActions.addTriggerActionAsync( + UPDATE_FILTER_REFERENCES_TRIGGER, + UPDATE_FILTER_REFERENCES_ACTION, + async () => { + const { createUpdateFilterReferencesAction } = await import('./actions/actions_module'); + return createUpdateFilterReferencesAction(data.query.filterManager); + } + ); return { ui: { diff --git a/src/platform/plugins/shared/unified_search/public/query_string_input/index.tsx b/src/platform/plugins/shared/unified_search/public/query_string_input/index.tsx index 878d06a444a38..15199053856bd 100644 --- a/src/platform/plugins/shared/unified_search/public/query_string_input/index.tsx +++ b/src/platform/plugins/shared/unified_search/public/query_string_input/index.tsx @@ -14,7 +14,10 @@ import type { QueryStringInputProps } from './query_string_input'; const Fallback = () =>
; -const LazyQueryBarTopRow = React.lazy(() => import('./query_bar_top_row')); +const LazyQueryBarTopRow = React.lazy(async () => { + const { QueryBarTopRow } = await import('../ui_module'); + return { default: QueryBarTopRow }; +}); export const QueryBarTopRow = ( props: QueryBarTopRowProps @@ -24,7 +27,10 @@ export const QueryBarTopRow = ( ); -const LazyQueryStringInputUI = React.lazy(() => import('./query_string_input')); +const LazyQueryStringInputUI = React.lazy(async () => { + const { QueryStringInput } = await import('../ui_module'); + return { default: QueryStringInput }; +}); export const QueryStringInput = (props: QueryStringInputProps) => ( }> diff --git a/src/platform/plugins/shared/unified_search/public/query_string_input/query_bar_top_row.test.tsx b/src/platform/plugins/shared/unified_search/public/query_string_input/query_bar_top_row.test.tsx index 9b95e58baac38..1863a8c3ac915 100644 --- a/src/platform/plugins/shared/unified_search/public/query_string_input/query_bar_top_row.test.tsx +++ b/src/platform/plugins/shared/unified_search/public/query_string_input/query_bar_top_row.test.tsx @@ -14,7 +14,7 @@ import { mount, shallow } from 'enzyme'; import { render } from '@testing-library/react'; import { EMPTY } from 'rxjs'; -import QueryBarTopRow, { SharingMetaFields } from './query_bar_top_row'; +import { QueryBarTopRow, SharingMetaFields } from './query_bar_top_row'; import { coreMock } from '@kbn/core/public/mocks'; import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; @@ -112,7 +112,7 @@ function wrapQueryBarTopRowInContext(testProps: any) { } describe('QueryBarTopRowTopRow', () => { - const QUERY_INPUT_SELECTOR = 'QueryStringInputUI'; + const QUERY_INPUT_SELECTOR = 'QueryStringInput'; const TIMEPICKER_SELECTOR = 'Memo(EuiSuperDatePicker)'; const REFRESH_BUTTON_SELECTOR = 'EuiSuperUpdateButton'; const CANCEL_BUTTON_SELECTOR = '[data-test-subj="queryCancelButton"]'; diff --git a/src/platform/plugins/shared/unified_search/public/query_string_input/query_bar_top_row.tsx b/src/platform/plugins/shared/unified_search/public/query_string_input/query_bar_top_row.tsx index 1105f27a2fb95..824eb09fb6f48 100644 --- a/src/platform/plugins/shared/unified_search/public/query_string_input/query_bar_top_row.tsx +++ b/src/platform/plugins/shared/unified_search/public/query_string_input/query_bar_top_row.tsx @@ -46,7 +46,7 @@ import type { PersistedLog } from '@kbn/data-plugin/public'; import { useKibana } from '@kbn/kibana-react-plugin/public'; import { UI_SETTINGS } from '@kbn/data-plugin/common'; import type { IUnifiedSearchPluginServices } from '../types'; -import QueryStringInputUI from './query_string_input'; +import { QueryStringInput } from './query_string_input'; import { NoDataPopover } from './no_data_popover'; import { shallowEqual } from '../utils/shallow_equal'; import { AddFilterPopover } from './add_filter_popover'; @@ -685,7 +685,7 @@ export const QueryBarTopRow = React.memo( const filterButtonGroup = !renderFilterMenuOnly() && renderFilterButtonGroup(); const queryInput = shouldRenderQueryInput() && ( - { }) ); - const instance = component.find('QueryStringInputUI').instance() as QueryStringInput; + const instance = component.find('QueryStringInput').instance() as QueryStringInput; const input = instance.inputRef; const inputWrapper = component.find(EuiTextArea).find('textarea'); inputWrapper.simulate('keyDown', { target: input, keyCode: 13, key: 'Enter', metaKey: true }); @@ -338,7 +338,7 @@ describe('QueryStringInput', () => { }) ); - const instance = component.find('QueryStringInputUI').instance() as QueryStringInput; + const instance = component.find('QueryStringInput').instance() as QueryStringInput; const input = instance.inputRef; const inputWrapper = component.find(EuiTextArea).find('textarea'); inputWrapper.simulate('keyDown', { target: input, keyCode: 13, key: 'Enter', metaKey: true }); @@ -415,7 +415,7 @@ describe('QueryStringInput', () => { }) ); - const instance = component.find('QueryStringInputUI').instance() as QueryStringInput; + const instance = component.find('QueryStringInput').instance() as QueryStringInput; const input = instance.inputRef; const inputWrapper = component.find(EuiTextArea).find('textarea'); input!.value = 'foo\u00A0bar'; diff --git a/src/platform/plugins/shared/unified_search/public/query_string_input/query_string_input.tsx b/src/platform/plugins/shared/unified_search/public/query_string_input/query_string_input.tsx index 2c5469ef306d7..6abc1568ec7a3 100644 --- a/src/platform/plugins/shared/unified_search/public/query_string_input/query_string_input.tsx +++ b/src/platform/plugins/shared/unified_search/public/query_string_input/query_string_input.tsx @@ -182,9 +182,7 @@ const KEY_CODES = { END: 35, }; -// Needed for React.lazy -// eslint-disable-next-line import/no-default-export -export default class QueryStringInputUI extends PureComponent { +export class QueryStringInput extends PureComponent { static defaultProps = { storageKey: KIBANA_USER_QUERY_LANGUAGE_KEY, iconType: 'search', diff --git a/src/platform/plugins/shared/unified_search/public/search_bar/index.tsx b/src/platform/plugins/shared/unified_search/public/search_bar/index.tsx index 3df2a7e7dac6a..07df2b0b31292 100644 --- a/src/platform/plugins/shared/unified_search/public/search_bar/index.tsx +++ b/src/platform/plugins/shared/unified_search/public/search_bar/index.tsx @@ -29,7 +29,10 @@ const Fallback = ({ displayStyle }: FallbackProps) => { ); }; -const LazySearchBar = React.lazy(() => import('./search_bar')); +const LazySearchBar = React.lazy(async () => { + const { SearchBar } = await import('../ui_module'); + return { default: SearchBar }; +}); const WrappedSearchBar = ( props: Omit, 'intl' | 'kibana'> ) => { diff --git a/src/platform/plugins/shared/unified_search/public/search_bar/search_bar.tsx b/src/platform/plugins/shared/unified_search/public/search_bar/search_bar.tsx index c1a39c23318b2..9a27b0d02e0cf 100644 --- a/src/platform/plugins/shared/unified_search/public/search_bar/search_bar.tsx +++ b/src/platform/plugins/shared/unified_search/public/search_bar/search_bar.tsx @@ -41,7 +41,7 @@ import { SavedQueryMeta, SaveQueryForm } from '../saved_query_form'; import { SavedQueryManagementList } from '../saved_query_management'; import { QueryBarMenu, QueryBarMenuProps } from '../query_string_input/query_bar_menu'; import type { DataViewPickerProps } from '../dataview_picker'; -import QueryBarTopRow, { QueryBarTopRowProps } from '../query_string_input/query_bar_top_row'; +import { QueryBarTopRow, QueryBarTopRowProps } from '../query_string_input/query_bar_top_row'; import { FilterBar, FilterItems } from '../filter_bar'; import type { SuggestionsAbstraction, diff --git a/src/platform/plugins/shared/unified_search/public/typeahead/index.tsx b/src/platform/plugins/shared/unified_search/public/typeahead/index.tsx index 30e0c6699a0fe..4c9fb6c2c87c4 100644 --- a/src/platform/plugins/shared/unified_search/public/typeahead/index.tsx +++ b/src/platform/plugins/shared/unified_search/public/typeahead/index.tsx @@ -11,7 +11,10 @@ import React from 'react'; const Fallback = () =>
; -const LazySuggestionsComponent = React.lazy(() => import('./suggestions_component')); +const LazySuggestionsComponent = React.lazy(async () => { + const { SuggestionsComponent } = await import('../ui_module'); + return { default: SuggestionsComponent }; +}); export const SuggestionsComponent = ( props: React.ComponentProps ) => ( diff --git a/src/platform/plugins/shared/unified_search/public/typeahead/suggestions_component.test.tsx b/src/platform/plugins/shared/unified_search/public/typeahead/suggestions_component.test.tsx index ab563eeb8315e..a521decf8f1ea 100644 --- a/src/platform/plugins/shared/unified_search/public/typeahead/suggestions_component.test.tsx +++ b/src/platform/plugins/shared/unified_search/public/typeahead/suggestions_component.test.tsx @@ -11,7 +11,7 @@ import { mount, shallow } from 'enzyme'; import React from 'react'; import { QuerySuggestion, QuerySuggestionTypes } from '../autocomplete'; import { SuggestionComponent } from './suggestion_component'; -import SuggestionsComponent from './suggestions_component'; +import { SuggestionsComponent } from './suggestions_component'; const noop = () => { return; diff --git a/src/platform/plugins/shared/unified_search/public/typeahead/suggestions_component.tsx b/src/platform/plugins/shared/unified_search/public/typeahead/suggestions_component.tsx index d03525e1b69fc..a3026ae999fe5 100644 --- a/src/platform/plugins/shared/unified_search/public/typeahead/suggestions_component.tsx +++ b/src/platform/plugins/shared/unified_search/public/typeahead/suggestions_component.tsx @@ -51,9 +51,7 @@ export interface SuggestionsAbstraction { export type SuggestionsListSize = 's' | 'l'; -// Needed for React.lazy -// eslint-disable-next-line import/no-default-export -export default class SuggestionsComponent extends PureComponent { +export class SuggestionsComponent extends PureComponent { private childNodes: HTMLDivElement[] = []; private parentNode: HTMLDivElement | null = null; diff --git a/src/platform/plugins/shared/unified_search/public/ui_module.ts b/src/platform/plugins/shared/unified_search/public/ui_module.ts new file mode 100644 index 0000000000000..f354124d31b36 --- /dev/null +++ b/src/platform/plugins/shared/unified_search/public/ui_module.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import './index.scss'; + +export { DataViewsList } from './dataview_picker/dataview_list'; +export { DataViewPicker } from './dataview_picker/data_view_picker'; +export { DataViewSelector } from './dataview_picker/data_view_selector'; +export { FilterBadge } from './filter_badge/filter_badge'; +export { FilterBadgeGroup } from './filter_badge/filter_badge_group'; +export { FilterBar } from './filter_bar/filter_bar'; +export { FiltersBuilder } from './filters_builder/filters_builder'; +export { FilterContent } from './filter_badge/filter_content/filter_content'; +export { FilterItem } from './filter_bar/filter_item/filter_item'; +export { FilterItems } from './filter_bar/filter_item/filter_items'; +export { IndexPatternSelect } from './index_pattern_select/index_pattern_select'; +export { QueryBarTopRow } from './query_string_input/query_bar_top_row'; +export { QueryStringInput } from './query_string_input/query_string_input'; +export { SuggestionsComponent } from './typeahead/suggestions_component'; +export { default as SearchBar } from './search_bar/search_bar'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/app/actions/register.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/register.ts index 6267539f40625..3808f812a21c1 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/app/actions/register.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/app/actions/register.ts @@ -43,7 +43,7 @@ import { registerDiscoverHistogramActions } from './register_discover_histogram_ import { createFilterInLensAction } from './filter/lens/filter_in'; import { createFilterOutLensAction } from './filter/lens/filter_out'; -export const registerUIActions = ( +export const registerUIActions = async ( store: SecurityAppStore, history: History, coreSetup: CoreSetup, @@ -53,7 +53,7 @@ export const registerUIActions = ( registerDiscoverCellActions(store, services); registerCellActions(store, history, services); // TODO: Remove discover histogram actions when timeline esql tab is extracted from discover - registerDiscoverHistogramActions(store, history, coreSetup, services); + await registerDiscoverHistogramActions(store, history, coreSetup, services); }; const registerLensEmbeddableActions = (store: SecurityAppStore, services: StartServices) => { diff --git a/x-pack/solutions/security/plugins/security_solution/public/app/actions/register_discover_histogram_actions.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/register_discover_histogram_actions.ts index 796550bba63ae..fea4c1c2e3977 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/app/actions/register_discover_histogram_actions.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/app/actions/register_discover_histogram_actions.ts @@ -12,16 +12,17 @@ import type { SecurityAppStore } from '../../common/store'; import type { StartServices } from '../../types'; import { EsqlInTimelineTrigger, EsqlInTimelineAction } from './constants'; -const createDiscoverHistogramCustomFilterAction = ( +const createDiscoverHistogramCustomFilterAction = async ( _store: SecurityAppStore, _history: History, coreSetup: CoreSetup, services: StartServices ) => { - const histogramApplyFilter = createFilterAction( + const [coreStart] = await coreSetup.getStartServices(); + const histogramApplyFilter = await createFilterAction( services.customDataService.query.filterManager, services.customDataService.query.timefilter.timefilter, - coreSetup, + coreStart, EsqlInTimelineAction.VIS_FILTER_ACTION, EsqlInTimelineAction.VIS_FILTER_ACTION ); @@ -40,7 +41,7 @@ const createDiscoverHistogramCustomTrigger = ( }); }; -export const registerDiscoverHistogramActions = ( +export const registerDiscoverHistogramActions = async ( store: SecurityAppStore, history: History, coreSetup: CoreSetup, @@ -48,7 +49,7 @@ export const registerDiscoverHistogramActions = ( ) => { createDiscoverHistogramCustomTrigger(store, history, services); - const histogramApplyFilter = createDiscoverHistogramCustomFilterAction( + const histogramApplyFilter = await createDiscoverHistogramCustomFilterAction( store, history, coreSetup, diff --git a/x-pack/solutions/security/plugins/security_solution/public/plugin.tsx b/x-pack/solutions/security/plugins/security_solution/public/plugin.tsx index cdb98175223e3..e276dde848565 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/plugin.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/plugin.tsx @@ -422,7 +422,7 @@ export class Plugin implements IPlugin