Add explicit children types (#181257)

## Summary

Prep work for React@18 bump

tl;dr In React@18 `React.FC` doesn't contain `children` anymore, so in
order to make the bump easier I have decided to split the effort in
multiple faces and hopefully this will make it easier for everyone

This PR focuses only on adding explicit `children` declaration either by
using `React.PropsWithChildren` type or by adding `children:
React.ReactNode` to the existing props types

https://github.com/DefinitelyTyped/DefinitelyTyped/issues/46691

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Sergi Massaneda <sergi.massaneda@gmail.com>
Co-authored-by: Marco Vettorello <marco.vettorello@elastic.co>
Co-authored-by: James Gowdy <jgowdy@elastic.co>
This commit is contained in:
Patryk Kopyciński 2024-04-29 17:56:41 +02:00 committed by GitHub
parent 7fa867cdd7
commit 0780c19322
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
493 changed files with 1531 additions and 1174 deletions

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import * as React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { EuiPageTemplate, EuiPageSection, EuiPageHeader } from '@elastic/eui';
export interface PageProps {
@ -14,7 +14,11 @@ export interface PageProps {
sidebar?: React.ReactNode;
}
export const Page: React.FC<PageProps> = ({ title = 'Untitled', sidebar, children }) => {
export const Page: FC<PropsWithChildren<PageProps>> = ({
title = 'Untitled',
sidebar,
children,
}) => {
return (
<EuiPageTemplate offset={0} grow={true}>
<EuiPageTemplate.Sidebar>{sidebar}</EuiPageTemplate.Sidebar>

View file

@ -13,10 +13,7 @@ import { Page } from '../../../../components/page';
import { useDeps } from '../../../../hooks/use_deps';
import { Sidebar } from '../../sidebar';
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface Props {}
export const PageCountUntil: React.FC<Props> = () => {
export const PageCountUntil = () => {
const { plugins } = useDeps();
return (

View file

@ -13,10 +13,7 @@ import { Page } from '../../../../components/page';
import { useDeps } from '../../../../hooks/use_deps';
import { Sidebar } from '../../sidebar';
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface Props {}
export const PageDoubleIntegers: React.FC<Props> = () => {
export const PageDoubleIntegers = () => {
const { explorer } = useDeps();
return (

View file

@ -6,15 +6,14 @@
* Side Public License, v 1.
*/
import * as React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { EuiPageTemplate, EuiTitle } from '@elastic/eui';
export interface PageProps {
title?: React.ReactNode;
}
export const Page: React.FC<PageProps> = ({ title = 'Untitled', children }) => {
export const Page: FC<PropsWithChildren<PageProps>> = ({ title = 'Untitled', children }) => {
return (
<>
<EuiPageTemplate.Header>

View file

@ -49,11 +49,11 @@ interface Props {
basePath: IBasePath;
}
export const SearchExamplePage: React.FC<Props> = ({
export const SearchExamplePage: React.FC<PropsWithChildren<Props>> = ({
children,
exampleLinks,
basePath,
}: PropsWithChildren<Props>) => {
}) => {
return (
<EuiPageTemplate offset={0}>
<EuiPageTemplate.Sidebar>

View file

@ -46,11 +46,11 @@ interface Props {
exampleLinks: ExampleLink[];
}
export const StateContainersExamplesPage: React.FC<Props> = ({
export const StateContainersExamplesPage: React.FC<PropsWithChildren<Props>> = ({
navigateToApp,
children,
exampleLinks,
}: PropsWithChildren<Props>) => {
}) => {
return (
<EuiPage>
<EuiPageTemplate.Sidebar>

View file

@ -5,7 +5,7 @@
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { EuiTitle, EuiSpacer, EuiSplitPanel, EuiCodeBlock } from '@elastic/eui';
export interface PanelWithCodeBlockProps {
@ -13,7 +13,7 @@ export interface PanelWithCodeBlockProps {
code: string;
}
export const PanelWithCodeBlock: React.FunctionComponent<PanelWithCodeBlockProps> = ({
export const PanelWithCodeBlock: FC<PropsWithChildren<PanelWithCodeBlockProps>> = ({
title,
code,
children,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, useContext } from 'react';
import React, { FC, PropsWithChildren, useContext } from 'react';
export interface DeploymentDetailsContextValue {
cloudId?: string;
@ -22,7 +22,7 @@ const DeploymentDetailsContext = React.createContext<DeploymentDetailsContextVal
/**
* Abstract external service Provider.
*/
export const DeploymentDetailsProvider: FC<DeploymentDetailsContextValue> = ({
export const DeploymentDetailsProvider: FC<PropsWithChildren<DeploymentDetailsContextValue>> = ({
children,
...services
}) => {
@ -75,10 +75,9 @@ export interface DeploymentDetailsKibanaDependencies {
/**
* Kibana-specific Provider that maps to known dependency types.
*/
export const DeploymentDetailsKibanaProvider: FC<DeploymentDetailsKibanaDependencies> = ({
children,
...services
}) => {
export const DeploymentDetailsKibanaProvider: FC<
PropsWithChildren<DeploymentDetailsKibanaDependencies>
> = ({ children, ...services }) => {
const {
core: {
application: { navigateToUrl },

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { useContext, useCallback, useMemo } from 'react';
import React, { useContext, useCallback, useMemo, PropsWithChildren } from 'react';
import type { FC, ReactNode } from 'react';
import type { Observable } from 'rxjs';
import type { EuiComboBoxProps } from '@elastic/eui';
@ -45,7 +45,10 @@ const ContentEditorContext = React.createContext<Services | null>(null);
/**
* Abstract external service Provider.
*/
export const ContentEditorProvider: FC<Services> = ({ children, ...services }) => {
export const ContentEditorProvider: FC<PropsWithChildren<Services>> = ({
children,
...services
}) => {
return <ContentEditorContext.Provider value={services}>{children}</ContentEditorContext.Provider>;
};
@ -109,10 +112,9 @@ export interface ContentEditorKibanaDependencies {
/**
* Kibana-specific Provider that maps to known dependency types.
*/
export const ContentEditorKibanaProvider: FC<ContentEditorKibanaDependencies> = ({
children,
...services
}) => {
export const ContentEditorKibanaProvider: FC<
PropsWithChildren<ContentEditorKibanaDependencies>
> = ({ children, ...services }) => {
const { core, toMountPoint, savedObjectsTagging } = services;
const { openFlyout: coreOpenFlyout } = core.overlays;
const { theme$ } = core.theme;

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, useContext, useMemo, useCallback } from 'react';
import React, { FC, PropsWithChildren, useContext, useMemo, useCallback } from 'react';
import type { Observable } from 'rxjs';
import type { FormattedRelative } from '@kbn/i18n-react';
import type { MountPoint, OverlayRef } from '@kbn/core-mount-utils-browser';
@ -65,7 +65,10 @@ const TableListViewContext = React.createContext<Services | null>(null);
/**
* Abstract external service Provider.
*/
export const TableListViewProvider: FC<Services> = ({ children, ...services }) => {
export const TableListViewProvider: FC<PropsWithChildren<Services>> = ({
children,
...services
}) => {
return <TableListViewContext.Provider value={services}>{children}</TableListViewContext.Provider>;
};
@ -159,10 +162,9 @@ export interface TableListViewKibanaDependencies {
/**
* Kibana-specific Provider that maps to known dependency types.
*/
export const TableListViewKibanaProvider: FC<TableListViewKibanaDependencies> = ({
children,
...services
}) => {
export const TableListViewKibanaProvider: FC<
PropsWithChildren<TableListViewKibanaDependencies>
> = ({ children, ...services }) => {
const { core, toMountPoint, savedObjectsTagging, FormattedRelative } = services;
const searchQueryParser = useMemo(() => {

View file

@ -6,15 +6,15 @@
* Side Public License, v 1.
*/
import React, { useEffect, useRef } from 'react';
import React, { useEffect, useRef, FC, PropsWithChildren } from 'react';
import { EuiCollapsibleNavBeta } from '@elastic/eui';
import useLocalStorage from 'react-use/lib/useLocalStorage';
const LOCAL_STORAGE_IS_COLLAPSED_KEY = 'PROJECT_NAVIGATION_COLLAPSED' as const;
export const ProjectNavigation: React.FC<{
toggleSideNav: (isVisible: boolean) => void;
}> = ({ children, toggleSideNav }) => {
export const ProjectNavigation: FC<
PropsWithChildren<{ toggleSideNav: (isVisible: boolean) => void }>
> = ({ children, toggleSideNav }) => {
const isMounted = useRef(false);
const [isCollapsed, setIsCollapsed] = useLocalStorage(LOCAL_STORAGE_IS_COLLAPSED_KEY, false);
const onCollapseToggle = (nextIsCollapsed: boolean) => {

View file

@ -6,14 +6,15 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
// eslint-disable-next-line @kbn/eslint/module_migration
import { IntlProvider } from 'react-intl';
import { i18n } from '@kbn/i18n';
const emptyMessages = {};
export const I18nProviderMock: React.FC = ({ children }) => {
export const I18nProviderMock: FC<PropsWithChildren> = ({ children }) => {
return (
<IntlProvider
locale={i18n.getLocale()}

View file

@ -6,15 +6,17 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { Observable } from 'rxjs';
import useObservable from 'react-use/lib/useObservable';
import classNames from 'classnames';
import { APP_WRAPPER_CLASS } from '@kbn/core-application-common';
export const AppWrapper: React.FunctionComponent<{
chromeVisible$: Observable<boolean>;
}> = ({ chromeVisible$, children }) => {
export const AppWrapper: FC<
PropsWithChildren<{
chromeVisible$: Observable<boolean>;
}>
> = ({ chromeVisible$, children }) => {
const visible = useObservable(chromeVisible$);
return (
<div

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { type FC } from 'react';
import React, { type FC, type PropsWithChildren } from 'react';
import { CoreTheme } from '@kbn/core-theme-browser/src/types';
import { KibanaThemeProvider } from '@kbn/react-kibana-context-theme';
import { Observable } from 'rxjs';
@ -21,7 +21,7 @@ interface CoreThemeProviderProps {
* @internal Only meant to be used within core for internal usages of EUI/React
* @deprecated use `KibanaThemeProvider` from `@kbn/react-kibana-context-theme
*/
export const CoreThemeProvider: FC<CoreThemeProviderProps> = ({
export const CoreThemeProvider: FC<PropsWithChildren<CoreThemeProviderProps>> = ({
theme$,
globalStyles,
children,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, MouseEventHandler, useContext } from 'react';
import React, { FC, PropsWithChildren, MouseEventHandler, useContext } from 'react';
import { EuiGlobalToastListToast as EuiToast } from '@elastic/eui';
import { SAMPLE_DATA_API } from './constants';
@ -41,7 +41,10 @@ const Context = React.createContext<Services | null>(null);
/**
* A Context Provider that provides services to the component and its dependencies.
*/
export const SampleDataCardProvider: FC<Services> = ({ children, ...services }) => {
export const SampleDataCardProvider: FC<PropsWithChildren<Services>> = ({
children,
...services
}) => {
const {
addBasePath,
getAppNavigationHandler,
@ -99,7 +102,7 @@ export interface KibanaDependencies {
/**
* Kibana-specific Provider that maps dependencies to services.
*/
export const SampleDataCardKibanaProvider: FC<KibanaDependencies> = ({
export const SampleDataCardKibanaProvider: FC<PropsWithChildren<KibanaDependencies>> = ({
children,
...dependencies
}) => {

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, useContext } from 'react';
import React, { FC, PropsWithChildren, useContext } from 'react';
import type { EuiGlobalToastListToast as EuiToast } from '@elastic/eui';
import type { SampleDataSet } from '@kbn/home-sample-data-types';
import {
@ -46,7 +46,10 @@ const Context = React.createContext<Services | null>(null);
/**
* A Context Provider that provides services to the component and its dependencies.
*/
export const SampleDataTabProvider: FC<SampleDataTabServices> = ({ children, ...services }) => {
export const SampleDataTabProvider: FC<PropsWithChildren<SampleDataTabServices>> = ({
children,
...services
}) => {
const { fetchSampleDataSets, notifyError, logClick } = services;
return (
@ -86,10 +89,9 @@ export type SampleDataTabKibanaDependencies = KibanaDependencies & SampleDataCar
/**
* Kibana-specific Provider that maps dependencies to services.
*/
export const SampleDataTabKibanaProvider: FC<SampleDataTabKibanaDependencies> = ({
children,
...dependencies
}) => {
export const SampleDataTabKibanaProvider: FC<
PropsWithChildren<SampleDataTabKibanaDependencies>
> = ({ children, ...dependencies }) => {
const { coreStart, trackUiMetric } = dependencies;
const { http, notifications } = coreStart;

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { I18nProvider } from '@kbn/i18n-react';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { render, waitFor, cleanup, screen } from '@testing-library/react';
@ -24,7 +24,7 @@ jest.mock('./api', () => ({
fetchActiveMaintenanceWindows: jest.fn(() => Promise.resolve([])),
}));
const TestProviders: React.FC<{}> = ({ children }) => {
const TestProviders: FC<PropsWithChildren> = ({ children }) => {
const queryClient = new QueryClient();
return (
<I18nProvider>
@ -231,7 +231,7 @@ describe('MaintenanceWindowCallout', () => {
warn: console.warn,
},
});
const wrapper: React.FC = ({ children }) => (
const wrapper: FC<PropsWithChildren> = ({ children }) => (
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
);
return wrapper;

View file

@ -7,13 +7,13 @@
*/
import { renderHook } from '@testing-library/react-hooks';
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { makeAction, makeActionContext } from '../mocks/helpers';
import { CellActionsProvider, useCellActionsContext } from './cell_actions_context';
const action = makeAction('action-1', 'icon', 1);
const mockGetTriggerCompatibleActions = jest.fn(async () => [action]);
const ContextWrapper: React.FC = ({ children }) => (
const ContextWrapper: FC<PropsWithChildren> = ({ children }) => (
<CellActionsProvider getTriggerCompatibleActions={mockGetTriggerCompatibleActions}>
{children}
</CellActionsProvider>

View file

@ -5,6 +5,8 @@
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
import { PropsWithChildren } from 'react';
import type {
Action,
ActionExecutionContext,
@ -14,13 +16,13 @@ import type { FieldSpec } from '@kbn/data-views-plugin/common';
import { Serializable } from '@kbn/utility-types';
import type { CellActionsMode } from './constants';
export interface CellActionsProviderProps {
export type CellActionsProviderProps = PropsWithChildren<{
/**
* Please assign `uiActions.getTriggerCompatibleActions` function.
* This function should return a list of actions for a triggerId that are compatible with the provided context.
*/
getTriggerCompatibleActions: UiActionsService['getTriggerCompatibleActions'];
}
}>;
type Metadata = Record<string, unknown>;
@ -46,7 +48,7 @@ export interface CellActionsData {
value: CellActionFieldValue;
}
export interface CellActionsProps {
export type CellActionsProps = PropsWithChildren<{
data: CellActionsData | CellActionsData[];
/**
@ -82,7 +84,7 @@ export interface CellActionsProps {
metadata?: Metadata;
className?: string;
}
}>;
export interface CellActionExecutionContext extends ActionExecutionContext {
data: CellActionsData[];

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC } from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { EuiForm } from '@elastic/eui';
import { ComponentStory } from '@storybook/react';
import { CustomizablePalette, CustomizablePaletteProps } from '../palette_configuration';
@ -18,7 +18,7 @@ export default {
decorators: [(story: Function) => <EuiForm>{story()}</EuiForm>],
};
const Template: ComponentStory<FC<CustomizablePaletteProps>> = (args) => (
const Template: ComponentStory<FC<PropsWithChildren<CustomizablePaletteProps>>> = (args) => (
<CustomizablePalette {...args} />
);

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { PropsWithChildren } from 'react';
import classnames from 'classnames';
/**
@ -27,7 +27,7 @@ export interface DropOverlayWrapperProps {
* @param otherProps
* @constructor
*/
export const DropOverlayWrapper: React.FC<DropOverlayWrapperProps> = ({
export const DropOverlayWrapper: React.FC<PropsWithChildren<DropOverlayWrapperProps>> = ({
isVisible,
children,
overlayProps,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
// eslint-disable-next-line @kbn/eslint/module_migration
import { IntlProvider } from 'react-intl';
@ -20,7 +20,7 @@ import { PseudoLocaleWrapper } from './pseudo_locale_wrapper';
* IntlProvider should wrap react app's root component (inside each react render method).
*/
export const I18nProvider: React.FC = ({ children }) => (
export const I18nProvider: FC<PropsWithChildren> = ({ children }) => (
<IntlProvider
locale={i18n.getLocale()}
messages={i18n.getTranslation().messages}

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, useContext } from 'react';
import React, { FC, PropsWithChildren, useContext } from 'react';
import {
FormProvider,
@ -65,7 +65,7 @@ const SettingsApplicationContext = React.createContext<Services | null>(null);
/**
* A Context Provider that provides services to the component and its dependencies.
*/
export const SettingsApplicationProvider: FC<SettingsApplicationServices> = ({
export const SettingsApplicationProvider: FC<PropsWithChildren<SettingsApplicationServices>> = ({
children,
...services
}) => {
@ -114,10 +114,9 @@ export const SettingsApplicationProvider: FC<SettingsApplicationServices> = ({
/**
* Kibana-specific Provider that maps dependencies to services.
*/
export const SettingsApplicationKibanaProvider: FC<SettingsApplicationKibanaDependencies> = ({
children,
...dependencies
}) => {
export const SettingsApplicationKibanaProvider: FC<
PropsWithChildren<SettingsApplicationKibanaDependencies>
> = ({ children, ...dependencies }) => {
const {
docLinks,
notifications,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, useContext } from 'react';
import React, { FC, PropsWithChildren, useContext } from 'react';
import type { FieldInputServices, FieldInputKibanaDependencies } from './types';
const FieldInputContext = React.createContext<FieldInputServices | null>(null);
@ -14,7 +14,10 @@ const FieldInputContext = React.createContext<FieldInputServices | null>(null);
/**
* React Provider that provides services to a {@link FieldInput} component and its dependents.
*/
export const FieldInputProvider: FC<FieldInputServices> = ({ children, ...services }) => {
export const FieldInputProvider: FC<PropsWithChildren<FieldInputServices>> = ({
children,
...services
}) => {
// Typescript types are widened to accept more than what is needed. Take only what is necessary
// so the context remains clean.
const { showDanger, validateChange } = services;
@ -29,7 +32,7 @@ export const FieldInputProvider: FC<FieldInputServices> = ({ children, ...servic
/**
* Kibana-specific Provider that maps Kibana plugins and services to a {@link FieldInputProvider}.
*/
export const FieldInputKibanaProvider: FC<FieldInputKibanaDependencies> = ({
export const FieldInputKibanaProvider: FC<PropsWithChildren<FieldInputKibanaDependencies>> = ({
children,
notifications: { toasts },
settings: { client },

View file

@ -10,7 +10,7 @@ import {
FieldInputKibanaProvider,
FieldInputProvider,
} from '@kbn/management-settings-components-field-input/services';
import React, { FC, useContext } from 'react';
import React, { FC, PropsWithChildren, useContext } from 'react';
import type { FieldRowServices, FieldRowKibanaDependencies, Services } from './types';
@ -41,7 +41,7 @@ export const FieldRowProvider = ({ children, ...services }: FieldRowProviderProp
/**
* Kibana-specific Provider that maps Kibana plugins and services to a {@link FieldRowProvider}.
*/
export const FieldRowKibanaProvider: FC<FieldRowKibanaDependencies> = ({
export const FieldRowKibanaProvider: FC<PropsWithChildren<FieldRowKibanaDependencies>> = ({
children,
docLinks,
notifications,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, useContext } from 'react';
import React, { FC, PropsWithChildren, useContext } from 'react';
import {
FieldCategoryKibanaProvider,
@ -41,7 +41,10 @@ export const FormProvider = ({ children, ...services }: FormProviderProps) => {
/**
* Kibana-specific Provider that maps Kibana plugins and services to a {@link FormProvider}.
*/
export const FormKibanaProvider: FC<FormKibanaDependencies> = ({ children, ...deps }) => {
export const FormKibanaProvider: FC<PropsWithChildren<FormKibanaDependencies>> = ({
children,
...deps
}) => {
const { settings, notifications, docLinks, theme, i18n } = deps;
const services: Services = {

View file

@ -7,7 +7,7 @@
*/
import type { HttpSetup } from '@kbn/core/public';
import React, { createContext, useContext, type FunctionComponent } from 'react';
import React, { createContext, useContext, type FC, type PropsWithChildren } from 'react';
import { ReportingAPIClient } from './reporting_api_client';
interface ContextValue {
@ -17,10 +17,12 @@ interface ContextValue {
const InternalApiClientContext = createContext<undefined | ContextValue>(undefined);
export const InternalApiClientProvider: FunctionComponent<{
apiClient: ReportingAPIClient;
http: HttpSetup;
}> = ({ apiClient, http, children }) => {
export const InternalApiClientProvider: FC<
PropsWithChildren<{
apiClient: ReportingAPIClient;
http: HttpSetup;
}>
> = ({ apiClient, http, children }) => {
return (
<InternalApiClientContext.Provider value={{ http, apiClient }}>
{children}

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { Fragment } from 'react';
import React, { Fragment, FC, PropsWithChildren } from 'react';
import {
EuiFlexGroup,
@ -29,7 +29,7 @@ interface OverviewPanelProps {
overviewPanelProps?: Partial<EuiPanelProps>;
}
export const OverviewPanel: React.FC<OverviewPanelProps> = ({
export const OverviewPanel: FC<PropsWithChildren<OverviewPanelProps>> = ({
children,
description,
leftPanelContent,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import {
EuiCallOut,
@ -34,9 +34,10 @@ export interface SelectClientPanelProps {
application?: ApplicationStart;
consolePlugin?: ConsolePluginStart;
sharePlugin: SharePluginStart;
children: React.ReactNode;
}
export const SelectClientPanel: React.FC<SelectClientPanelProps> = ({
export const SelectClientPanel: FC<PropsWithChildren<SelectClientPanelProps>> = ({
docLinks,
children,
isPanelLeft = true,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { createContext, useEffect, useRef, useState } from 'react';
import React, { createContext, useEffect, useRef, useState, FC, PropsWithChildren } from 'react';
import {
EuiButton,
@ -46,6 +46,7 @@ interface ConnectorConfigurationProps {
saveConfig: (configuration: Record<string, string | number | boolean | null>) => void;
stackManagementLink?: string;
subscriptionLink?: string;
children?: React.ReactNode;
}
interface ConfigEntry extends ConnectorConfigProperties {
@ -80,7 +81,9 @@ export const LicenseContext = createContext<{
stackManagementLink: undefined,
});
export const ConnectorConfigurationComponent: React.FC<ConnectorConfigurationProps> = ({
export const ConnectorConfigurationComponent: FC<
PropsWithChildren<ConnectorConfigurationProps>
> = ({
children,
connector,
hasPlatinumLicense,

View file

@ -5,7 +5,7 @@
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
import React, { useEffect, useMemo, useState } from 'react';
import React, { useEffect, useMemo, useState, FC, PropsWithChildren } from 'react';
import {
EuiCallOut,
EuiFlexGroup,
@ -31,7 +31,11 @@ interface SchedulePanelProps {
description: string;
title: string;
}
export const SchedulePanel: React.FC<SchedulePanelProps> = ({ title, description, children }) => {
export const SchedulePanel: FC<PropsWithChildren<SchedulePanelProps>> = ({
title,
description,
children,
}) => {
return (
<>
<EuiSplitPanel.Outer>

View file

@ -6,15 +6,14 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui';
interface FlyoutPanelProps {
title: string;
}
export const FlyoutPanel: React.FC<FlyoutPanelProps> = ({ children, title }) => {
export const FlyoutPanel: FC<PropsWithChildren<FlyoutPanelProps>> = ({ children, title }) => {
return (
<EuiPanel paddingSize="l" color="subdued" hasShadow={false}>
<EuiTitle size="xs">

View file

@ -6,20 +6,23 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
export interface TestComponentProps {
customProp?: boolean;
children?: React.ReactNode;
}
export const TestComponent: React.FunctionComponent<TestComponentProps> = ({ children }) => {
export const TestComponent: FC<PropsWithChildren<TestComponentProps>> = ({ children }) => {
return <span>{children} Test component</span>;
};
export const ForwardeRefTestComponent: React.FunctionComponent<TestComponentProps> =
React.forwardRef<HTMLSpanElement, TestComponentProps>(({ children }, ref) => {
return <span ref={ref}>{children} Test component</span>;
});
export const ForwardeRefTestComponent: FC<PropsWithChildren<TestComponentProps>> = React.forwardRef<
HTMLSpanElement,
PropsWithChildren<TestComponentProps>
>(({ children }, ref) => {
return <span ref={ref}>{children} Test component</span>;
});
// eslint-disable-next-line import/no-default-export
export default TestComponent;

View file

@ -24,7 +24,7 @@ import {
useEuiTheme,
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import React, { FC, ReactNode, useState } from 'react';
import React, { FC, PropsWithChildren, ReactNode, useState } from 'react';
import { FormattedMessage } from '@kbn/i18n-react';
import type { DocumentDiffMode } from './types';
@ -368,10 +368,12 @@ const enableShowDiffTooltip = i18n.translate('unifiedDataTable.enableShowDiff',
});
const DiffModeEntry: FC<
Pick<ComparisonControlsProps, 'diffMode' | 'setDiffMode'> & {
entryDiffMode: DocumentDiffMode;
disabled?: boolean;
}
PropsWithChildren<
Pick<ComparisonControlsProps, 'diffMode' | 'setDiffMode'> & {
entryDiffMode: DocumentDiffMode;
disabled?: boolean;
}
>
> = ({ children, entryDiffMode, diffMode, disabled, setDiffMode }) => {
const { euiTheme } = useEuiTheme();

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { useEffect, useState } from 'react';
import React, { useEffect, useState, FC, PropsWithChildren } from 'react';
import { FormattedMessage } from '@kbn/i18n-react';
import { EuiButtonEmpty, EuiToolTip, useEuiTheme } from '@elastic/eui';
import { css } from '@emotion/react';
@ -28,7 +28,9 @@ export interface UnifiedDataTableFooterProps {
fieldFormats: FieldFormatsStart;
}
export const UnifiedDataTableFooter: React.FC<UnifiedDataTableFooterProps> = (props) => {
export const UnifiedDataTableFooter: FC<PropsWithChildren<UnifiedDataTableFooterProps>> = (
props
) => {
const {
isLoadingMore,
rowCount,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { EuiFlexGroup, EuiFlexItem, EuiProgress } from '@elastic/eui';
import { css } from '@emotion/react';
@ -39,7 +39,7 @@ export interface FieldListProps {
* @public
* @constructor
*/
export const FieldList: React.FC<FieldListProps> = ({
export const FieldList: FC<PropsWithChildren<FieldListProps>> = ({
'data-test-subj': dataTestSubject = 'fieldList',
isProcessing,
prepend,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, useContext } from 'react';
import React, { FC, PropsWithChildren, useContext } from 'react';
import type { I18nStart } from '@kbn/core-i18n-browser';
import type { NotificationsStart, ToastOptions } from '@kbn/core-notifications-browser';
@ -30,7 +30,10 @@ const UserProfilesContext = React.createContext<Services | null>(null);
/**
* Abstract external service Provider.
*/
export const UserProfilesProvider: FC<Services> = ({ children, ...services }) => {
export const UserProfilesProvider: FC<PropsWithChildren<Services>> = ({
children,
...services
}) => {
return <UserProfilesContext.Provider value={services}>{children}</UserProfilesContext.Provider>;
};
@ -60,7 +63,7 @@ export interface UserProfilesKibanaDependencies {
/**
* Kibana-specific Provider that maps to known dependency types.
*/
export const UserProfilesKibanaProvider: FC<UserProfilesKibanaDependencies> = ({
export const UserProfilesKibanaProvider: FC<PropsWithChildren<UserProfilesKibanaDependencies>> = ({
children,
...services
}) => {

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC } from 'react';
import React, { FC, PropsWithChildren } from 'react';
import {
KibanaRootContextProvider,
@ -21,10 +21,9 @@ export type KibanaRenderContextProviderProps = Omit<KibanaRootContextProviderPro
* The `KibanaRenderContextProvider` provides the necessary context for an out-of-current
* React render, such as using `ReactDOM.render()`.
*/
export const KibanaRenderContextProvider: FC<KibanaRenderContextProviderProps> = ({
children,
...props
}) => {
export const KibanaRenderContextProvider: FC<
PropsWithChildren<KibanaRenderContextProviderProps>
> = ({ children, ...props }) => {
return (
<KibanaRootContextProvider globalStyles={false} {...props}>
<KibanaErrorBoundaryProvider analytics={props.analytics}>

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, useMemo } from 'react';
import React, { FC, PropsWithChildren, useMemo } from 'react';
import useObservable from 'react-use/lib/useObservable';
import createCache from '@emotion/cache';
@ -56,7 +56,7 @@ const cache = { default: emotionCache, global: globalCache, utility: utilitiesCa
* Prepares and returns a configured `EuiProvider` for use in Kibana roots. In most cases, this utility context
* should not be used. Instead, refer to `KibanaRootContextProvider` to set up the root of Kibana.
*/
export const KibanaEuiProvider: FC<KibanaEuiProviderProps> = ({
export const KibanaEuiProvider: FC<PropsWithChildren<KibanaEuiProviderProps>> = ({
theme: { theme$ },
globalStyles: globalStylesProp,
colorMode: colorModeProp,

View file

@ -8,7 +8,7 @@
import type { I18nStart } from '@kbn/core-i18n-browser';
import type { AnalyticsServiceStart } from '@kbn/core-analytics-browser';
import React, { FC } from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { KibanaEuiProvider, type KibanaEuiProviderProps } from './eui_provider';
@ -34,7 +34,7 @@ export interface KibanaRootContextProviderProps extends KibanaEuiProviderProps {
* - Consider `KibanaThemeContextProvider` for altering the theme of a component or tree of components.
*
*/
export const KibanaRootContextProvider: FC<KibanaRootContextProviderProps> = ({
export const KibanaRootContextProvider: FC<PropsWithChildren<KibanaRootContextProviderProps>> = ({
children,
i18n,
...props

View file

@ -7,19 +7,23 @@
*/
import { i18n } from '@kbn/i18n';
import React, { useRef, useEffect, useState, Component } from 'react';
import React, { useRef, useEffect, useState, Component, FC, PropsWithChildren } from 'react';
import ReactDOM from 'react-dom';
import { MountPoint } from '@kbn/core/public';
import { useIfMounted } from './utils';
export interface MountPointPortalProps {
setMountPoint: (mountPoint: MountPoint<HTMLElement> | undefined) => void;
children: React.ReactNode;
}
/**
* Utility component to portal a part of a react application into the provided `MountPoint`.
*/
export const MountPointPortal: React.FC<MountPointPortalProps> = ({ children, setMountPoint }) => {
export const MountPointPortal: FC<PropsWithChildren<MountPointPortalProps>> = ({
children,
setMountPoint,
}) => {
// state used to force re-renders when the element changes
const [shouldRender, setShouldRender] = useState(false);
const el = useRef<HTMLElement>();

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, useContext } from 'react';
import React, { FC, PropsWithChildren, useContext } from 'react';
import ReactDOM from 'react-dom';
import { Loader } from './loader';
@ -17,14 +17,17 @@ const Context = React.createContext<Services | null>(null);
/**
* A Context Provider that provides services to the component and its dependencies.
*/
export const ProjectSwitcherProvider: FC<Services> = ({ children, ...services }) => {
export const ProjectSwitcherProvider: FC<PropsWithChildren<Services>> = ({
children,
...services
}) => {
return <Context.Provider value={services}>{children}</Context.Provider>;
};
/**
* Kibana-specific Provider that maps dependencies to services.
*/
export const ProjectSwitcherKibanaProvider: FC<KibanaDependencies> = ({
export const ProjectSwitcherKibanaProvider: FC<PropsWithChildren<KibanaDependencies>> = ({
children,
coreStart,
projectChangeAPIUrl,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, useContext } from 'react';
import React, { FC, useContext, PropsWithChildren } from 'react';
import type {
Services,
@ -19,7 +19,7 @@ const ExitFullScreenButtonContext = React.createContext<Services | null>(null);
/**
* Abstract external service Provider.
*/
export const ExitFullScreenButtonProvider: FC<ExitFullScreenButtonServices> = ({
export const ExitFullScreenButtonProvider: FC<PropsWithChildren<ExitFullScreenButtonServices>> = ({
children,
...services
}) => {
@ -33,10 +33,9 @@ export const ExitFullScreenButtonProvider: FC<ExitFullScreenButtonServices> = ({
/**
* Kibana-specific Provider that maps to known dependency types.
*/
export const ExitFullScreenButtonKibanaProvider: FC<ExitFullScreenButtonKibanaDependencies> = ({
children,
...services
}) => {
export const ExitFullScreenButtonKibanaProvider: FC<
PropsWithChildren<ExitFullScreenButtonKibanaDependencies>
> = ({ children, ...services }) => {
return (
<ExitFullScreenButtonContext.Provider
value={{

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, useContext } from 'react';
import React, { FC, PropsWithChildren, useContext } from 'react';
import {
RedirectAppLinksProvider,
RedirectAppLinksKibanaProvider,
@ -23,7 +23,10 @@ const Context = React.createContext<Services | null>(null);
/**
* A Context Provider that provides services to the component and its dependencies.
*/
export const NoDataCardProvider: FC<NoDataCardServices> = ({ children, ...services }) => {
export const NoDataCardProvider: FC<PropsWithChildren<NoDataCardServices>> = ({
children,
...services
}) => {
const { addBasePath, canAccessFleet } = services;
return (
@ -36,7 +39,7 @@ export const NoDataCardProvider: FC<NoDataCardServices> = ({ children, ...servic
/**
* Kibana-specific Provider that maps dependencies to services.
*/
export const NoDataCardKibanaProvider: FC<NoDataCardKibanaDependencies> = ({
export const NoDataCardKibanaProvider: FC<PropsWithChildren<NoDataCardKibanaDependencies>> = ({
children,
...dependencies
}) => {

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, useContext } from 'react';
import React, { FC, PropsWithChildren, useContext } from 'react';
import useObservable from 'react-use/lib/useObservable';
import { NavigationKibanaDependencies, NavigationServices } from './types';
@ -16,14 +16,17 @@ const Context = React.createContext<NavigationServices | null>(null);
/**
* A Context Provider that provides services to the component and its dependencies.
*/
export const NavigationProvider: FC<NavigationServices> = ({ children, ...services }) => {
export const NavigationProvider: FC<PropsWithChildren<NavigationServices>> = ({
children,
...services
}) => {
return <Context.Provider value={services}>{children}</Context.Provider>;
};
/**
* Kibana-specific Provider that maps dependencies to services.
*/
export const NavigationKibanaProvider: FC<NavigationKibanaDependencies> = ({
export const NavigationKibanaProvider: FC<PropsWithChildren<NavigationKibanaDependencies>> = ({
children,
...dependencies
}) => {

View file

@ -6,7 +6,15 @@
* Side Public License, v 1.
*/
import React, { type FC, useCallback, useContext, useMemo, useState, ReactNode } from 'react';
import React, {
type FC,
type PropsWithChildren,
useCallback,
useContext,
useMemo,
useState,
ReactNode,
} from 'react';
import type { ChromeProjectNavigationNode } from '@kbn/core-chrome-browser';
import { DefaultContent } from './default_content';
@ -30,7 +38,11 @@ interface Props {
activeNodes: ChromeProjectNavigationNode[][];
}
export const PanelProvider: FC<Props> = ({ children, contentProvider, activeNodes }) => {
export const PanelProvider: FC<PropsWithChildren<Props>> = ({
children,
contentProvider,
activeNodes,
}) => {
const [isOpen, setIsOpen] = useState(false);
const [selectedNode, setActiveNode] = useState<PanelNavNode | null>(null);

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC } from 'react';
import React, { FC, PropsWithChildren } from 'react';
import {
EuiCollapsibleNavBeta,
@ -16,7 +16,7 @@ import {
EuiPageTemplate,
} from '@elastic/eui';
export const Template: FC = ({ children }) => {
export const Template: FC<PropsWithChildren> = ({ children }) => {
return (
<>
<EuiHeader position="fixed">

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, useContext, useMemo } from 'react';
import React, { FC, PropsWithChildren, useContext, useMemo } from 'react';
import { KibanaErrorBoundaryProviderDeps, KibanaErrorBoundaryServices } from '../../types';
import { KibanaErrorService } from './error_service';
@ -17,21 +17,20 @@ const Context = React.createContext<KibanaErrorBoundaryServices | null>(null);
* A Context Provider for Jest and Storybooks
* @internal
*/
export const KibanaErrorBoundaryDepsProvider: FC<KibanaErrorBoundaryServices> = ({
children,
onClickRefresh,
errorService,
}) => <Context.Provider value={{ onClickRefresh, errorService }}>{children}</Context.Provider>;
export const KibanaErrorBoundaryDepsProvider: FC<
PropsWithChildren<KibanaErrorBoundaryServices>
> = ({ children, onClickRefresh, errorService }) => (
<Context.Provider value={{ onClickRefresh, errorService }}>{children}</Context.Provider>
);
/**
* Provider that uses dependencies to give context to the KibanaErrorBoundary component
* This provider is aware if services were already created from a higher level of the component tree
* @public
*/
export const KibanaErrorBoundaryProvider: FC<KibanaErrorBoundaryProviderDeps> = ({
children,
analytics,
}) => {
export const KibanaErrorBoundaryProvider: FC<
PropsWithChildren<KibanaErrorBoundaryProviderDeps>
> = ({ children, analytics }) => {
const parentContext = useContext(Context);
const value: KibanaErrorBoundaryServices = useMemo(() => {
// FIXME: analytics dep is optional - know when not to overwrite

View file

@ -7,7 +7,7 @@
*/
import { render } from '@testing-library/react';
import React, { FC } from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { KibanaErrorBoundary } from '../..';
import { BadComponent, ChunkLoadErrorComponent, getServicesMock } from '../../mocks';
@ -22,7 +22,7 @@ describe('<KibanaErrorBoundary>', () => {
services = getServicesMock();
});
const Template: FC = ({ children }) => {
const Template: FC<PropsWithChildren> = ({ children }) => {
return (
<KibanaErrorBoundaryDepsProvider {...services}>
<KibanaErrorBoundary>{children}</KibanaErrorBoundary>

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { createContext, useContext, type FunctionComponent } from 'react';
import React, { createContext, useContext, type FC, type PropsWithChildren } from 'react';
import type { BaseFilesClient as FilesClient } from '@kbn/shared-ux-file-types';
export interface FilesContextValue {
@ -31,8 +31,9 @@ interface ContextProps {
* A files client that will be used process uploads.
*/
client: FilesClient<any>;
children: React.ReactNode;
}
export const FilesContext: FunctionComponent<ContextProps> = ({ client, children }) => {
export const FilesContext: FC<PropsWithChildren<ContextProps>> = ({ client, children }) => {
return (
<FilesContextObject.Provider
value={{

View file

@ -7,7 +7,7 @@
*/
import React, { createContext, useContext, useMemo, useEffect } from 'react';
import type { FunctionComponent } from 'react';
import type { FC, PropsWithChildren } from 'react';
import { useFilesContext, FilesContextValue } from '@kbn/shared-ux-file-context';
import { FileJSON } from '@kbn/shared-ux-file-types';
import { FilePickerState, createFilePickerState } from './file_picker_state';
@ -30,7 +30,7 @@ interface FilePickerContextProps
uploadMeta?: unknown;
}
export const FilePickerContext: FunctionComponent<FilePickerContextProps> = ({
export const FilePickerContext: FC<PropsWithChildren<FilePickerContextProps>> = ({
kind,
shouldAllowDelete,
pageSize,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, useContext } from 'react';
import React, { FC, PropsWithChildren, useContext } from 'react';
import useObservable from 'react-use/lib/useObservable';
import {
@ -19,7 +19,7 @@ const RedirectAppLinksContext = React.createContext<RedirectAppLinksServices | n
/**
* Contextual services Provider.
*/
export const RedirectAppLinksProvider: FC<RedirectAppLinksServices> = ({
export const RedirectAppLinksProvider: FC<PropsWithChildren<RedirectAppLinksServices>> = ({
children,
...services
}) => {
@ -34,10 +34,9 @@ export const RedirectAppLinksProvider: FC<RedirectAppLinksServices> = ({
/**
* Kibana-specific contextual services Provider.
*/
export const RedirectAppLinksKibanaProvider: FC<RedirectAppLinksKibanaDependencies> = ({
children,
coreStart,
}) => {
export const RedirectAppLinksKibanaProvider: FC<
PropsWithChildren<RedirectAppLinksKibanaDependencies>
> = ({ children, coreStart }) => {
const { navigateToUrl, currentAppId$ } = coreStart.application;
const currentAppId = useObservable(currentAppId$, undefined);

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, useContext } from 'react';
import React, { FC, PropsWithChildren, useContext } from 'react';
import {
KibanaNoDataPageKibanaProvider,
KibanaNoDataPageProvider,
@ -23,7 +23,7 @@ const Context = React.createContext<Services | null>(null);
/**
* A Context Provider that provides services to the component and its dependencies.
*/
export const AnalyticsNoDataPageProvider: FC<AnalyticsNoDataPageServices> = ({
export const AnalyticsNoDataPageProvider: FC<PropsWithChildren<AnalyticsNoDataPageServices>> = ({
children,
...services
}) => {
@ -41,10 +41,9 @@ export const AnalyticsNoDataPageProvider: FC<AnalyticsNoDataPageServices> = ({
/**
* Kibana-specific Provider that maps dependencies to services.
*/
export const AnalyticsNoDataPageKibanaProvider: FC<AnalyticsNoDataPageKibanaDependencies> = ({
children,
...dependencies
}) => {
export const AnalyticsNoDataPageKibanaProvider: FC<
PropsWithChildren<AnalyticsNoDataPageKibanaDependencies>
> = ({ children, ...dependencies }) => {
const value: Services = {
kibanaGuideDocLink: dependencies.coreStart.docLinks.links.kibana.guide,
customBranding: {

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, useContext } from 'react';
import React, { FC, PropsWithChildren, useContext } from 'react';
import {
NoDataViewsPromptProvider,
NoDataViewsPromptKibanaProvider,
@ -25,7 +25,7 @@ const KibanaNoDataPageContext = React.createContext<Services | null>(null);
/**
* A Context Provider that provides services to the component.
*/
export const KibanaNoDataPageProvider: FC<KibanaNoDataPageServices> = ({
export const KibanaNoDataPageProvider: FC<PropsWithChildren<KibanaNoDataPageServices>> = ({
children,
...services
}) => {
@ -43,10 +43,9 @@ export const KibanaNoDataPageProvider: FC<KibanaNoDataPageServices> = ({
/**
* Kibana-specific Provider that maps dependencies to services.
*/
export const KibanaNoDataPageKibanaProvider: FC<KibanaNoDataPageKibanaDependencies> = ({
children,
...dependencies
}) => {
export const KibanaNoDataPageKibanaProvider: FC<
PropsWithChildren<KibanaNoDataPageKibanaDependencies>
> = ({ children, ...dependencies }) => {
const { dataViews } = dependencies;
const value: Services = {
hasESData: dataViews.hasData.hasESData,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC } from 'react';
import React, { FC, PropsWithChildren } from 'react';
import {
NoDataConfigPageProvider,
@ -21,7 +21,7 @@ import {
/**
* A Context Provider that provides services to the component and its dependencies.
*/
export const KibanaPageTemplateProvider: FC<KibanaPageTemplateServices> = ({
export const KibanaPageTemplateProvider: FC<PropsWithChildren<KibanaPageTemplateServices>> = ({
children,
...services
}) => {
@ -31,10 +31,9 @@ export const KibanaPageTemplateProvider: FC<KibanaPageTemplateServices> = ({
/**
* Kibana-specific Provider that maps dependencies to services.
*/
export const KibanaPageTemplateKibanaProvider: FC<KibanaPageTemplateKibanaDependencies> = ({
children,
...dependencies
}) => {
export const KibanaPageTemplateKibanaProvider: FC<
PropsWithChildren<KibanaPageTemplateKibanaDependencies>
> = ({ children, ...dependencies }) => {
return (
<NoDataConfigPageKibanaProvider {...dependencies}>{children}</NoDataConfigPageKibanaProvider>
);

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC } from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { NoDataCardKibanaProvider, NoDataCardProvider } from '@kbn/shared-ux-card-no-data';
@ -18,14 +18,17 @@ import type {
/**
* A Context Provider that provides services to the component and its dependencies.
*/
export const NoDataPageProvider: FC<NoDataPageServices> = ({ children, ...services }) => {
export const NoDataPageProvider: FC<PropsWithChildren<NoDataPageServices>> = ({
children,
...services
}) => {
return <NoDataCardProvider {...services}>{children}</NoDataCardProvider>;
};
/**
* Kibana-specific Provider that maps dependencies to services.
*/
export const NoDataPageKibanaProvider: FC<NoDataPageKibanaDependencies> = ({
export const NoDataPageKibanaProvider: FC<PropsWithChildren<NoDataPageKibanaDependencies>> = ({
children,
...dependencies
}) => {

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC } from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { NoDataPageProvider, NoDataPageKibanaProvider } from '@kbn/shared-ux-page-no-data';
import type {
@ -17,7 +17,7 @@ import type {
/**
* A Context Provider that provides services to the component and its dependencies.
*/
export const NoDataConfigPageProvider: FC<NoDataConfigPageServices> = ({
export const NoDataConfigPageProvider: FC<PropsWithChildren<NoDataConfigPageServices>> = ({
children,
...services
}) => {
@ -27,9 +27,8 @@ export const NoDataConfigPageProvider: FC<NoDataConfigPageServices> = ({
/**
* Kibana-specific Provider that maps dependencies to services.
*/
export const NoDataConfigPageKibanaProvider: FC<NoDataConfigPageKibanaDependencies> = ({
children,
...dependencies
}) => {
export const NoDataConfigPageKibanaProvider: FC<
PropsWithChildren<NoDataConfigPageKibanaDependencies>
> = ({ children, ...dependencies }) => {
return <NoDataPageKibanaProvider {...dependencies}>{children}</NoDataPageKibanaProvider>;
};

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, useContext } from 'react';
import React, { FC, PropsWithChildren, useContext } from 'react';
import type {
NoDataViewsPromptServices,
@ -19,7 +19,7 @@ const NoDataViewsPromptContext = React.createContext<NoDataViewsPromptServices |
/**
* Abstract external service Provider.
*/
export const NoDataViewsPromptProvider: FC<NoDataViewsPromptServices> = ({
export const NoDataViewsPromptProvider: FC<PropsWithChildren<NoDataViewsPromptServices>> = ({
children,
...services
}) => {
@ -46,10 +46,9 @@ export const NoDataViewsPromptProvider: FC<NoDataViewsPromptServices> = ({
/**
* Kibana-specific Provider that maps to known dependency types.
*/
export const NoDataViewsPromptKibanaProvider: FC<NoDataViewsPromptKibanaDependencies> = ({
children,
...services
}) => {
export const NoDataViewsPromptKibanaProvider: FC<
PropsWithChildren<NoDataViewsPromptKibanaDependencies>
> = ({ children, ...services }) => {
const {
share,
coreStart: {

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC } from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { ComponentStory } from '@storybook/react';
import { Render } from '@kbn/presentation-util-plugin/public/__stories__';
import { getPartitionVisRenderer } from '../expression_renderers';
@ -26,7 +26,7 @@ type Props = {
syncColors: PartitionChartProps['syncColors'];
} & PartitionChartProps['visConfig'];
const PartitionVis: ComponentStory<FC<Props>> = ({
const PartitionVis: ComponentStory<FC<PropsWithChildren<Props>>> = ({
visType,
syncColors,
children,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC } from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { ComponentStory } from '@storybook/react';
import { Render } from '@kbn/presentation-util-plugin/public/__stories__';
import { getPartitionVisRenderer } from '../expression_renderers';
@ -26,7 +26,7 @@ type Props = {
syncColors: PartitionChartProps['syncColors'];
} & PartitionChartProps['visConfig'];
const PartitionVis: ComponentStory<FC<Props>> = ({
const PartitionVis: ComponentStory<FC<PropsWithChildren<Props>>> = ({
visType,
syncColors,
children,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC } from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { ComponentStory } from '@storybook/react';
import { Render } from '@kbn/presentation-util-plugin/public/__stories__';
import { getPartitionVisRenderer } from '../expression_renderers';
@ -26,7 +26,7 @@ type Props = {
syncColors: PartitionChartProps['syncColors'];
} & PartitionChartProps['visConfig'];
const PartitionVis: ComponentStory<FC<Props>> = ({
const PartitionVis: ComponentStory<FC<PropsWithChildren<Props>>> = ({
visType,
syncColors,
children,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC } from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { ComponentStory } from '@storybook/react';
import { Render } from '@kbn/presentation-util-plugin/public/__stories__';
import { getPartitionVisRenderer } from '../expression_renderers';
@ -26,7 +26,7 @@ type Props = {
syncColors: PartitionChartProps['syncColors'];
} & PartitionChartProps['visConfig'];
const PartitionVis: ComponentStory<FC<Props>> = ({
const PartitionVis: ComponentStory<FC<PropsWithChildren<Props>>> = ({
visType,
syncColors,
children,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { QueryClientProvider } from '@tanstack/react-query';
import type { ContentClient } from './content_client';
@ -18,10 +18,11 @@ export const useContentClient = (): ContentClient => {
return contentClient;
};
export const ContentClientProvider: React.FC<{ contentClient: ContentClient }> = ({
contentClient,
children,
}) => {
export const ContentClientProvider: FC<
PropsWithChildren<{
contentClient: ContentClient;
}>
> = ({ contentClient, children }) => {
return (
<ContentClientContext.Provider value={contentClient}>
<QueryClientProvider client={contentClient.queryClient}>{children}</QueryClientProvider>

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { renderHook } from '@testing-library/react-hooks';
import { ContentClientProvider } from './content_client_context';
import { ContentClient } from './content_client';
@ -28,7 +28,7 @@ const setup = () => {
});
const contentClient = new ContentClient(() => crudClient, contentTypeRegistry);
const Wrapper: React.FC = ({ children }) => (
const Wrapper: FC<PropsWithChildren> = ({ children }) => (
<ContentClientProvider contentClient={contentClient}>{children}</ContentClientProvider>
);

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { renderHook } from '@testing-library/react-hooks';
import { ContentClientProvider } from './content_client_context';
import { ContentClient } from './content_client';
@ -24,7 +24,7 @@ const setup = () => {
});
const contentClient = new ContentClient(() => crudClient, contentTypeRegistry);
const Wrapper: React.FC = ({ children }) => (
const Wrapper: FC<PropsWithChildren> = ({ children }) => (
<ContentClientProvider contentClient={contentClient}>{children}</ContentClientProvider>
);

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { PropsWithChildren } from 'react';
import { coreMock } from '@kbn/core/public/mocks';
import { CustomIntegrationsSetup, CustomIntegrationsStart } from './types';
import { CustomIntegrationsServicesProvider } from './services';
@ -25,7 +25,7 @@ function createCustomIntegrationsStart(): jest.Mocked<CustomIntegrationsStart> {
return {
languageClientsUiComponents: {},
ContextProvider: jest.fn(({ children }) => (
ContextProvider: jest.fn(({ children }: PropsWithChildren) => (
<CustomIntegrationsServicesProvider {...services}>
{children}
</CustomIntegrationsServicesProvider>

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { CoreSetup, CoreStart, Plugin } from '@kbn/core/public';
import {
@ -71,7 +71,7 @@ export class CustomIntegrationsPlugin
})),
};
const ContextProvider: React.FC = ({ children }) => (
const ContextProvider: FC<PropsWithChildren> = ({ children }) => (
<CustomIntegrationsServicesProvider {...services}>
{children}
</CustomIntegrationsServicesProvider>

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { createContext, FC, useContext } from 'react';
import React, { createContext, FC, PropsWithChildren, useContext } from 'react';
import { CustomIntegrationsFindService } from './find';
import { CustomIntegrationsPlatformService } from './platform';
@ -29,10 +29,9 @@ const CustomIntegrationsServicesContext = createContext<CustomIntegrationsServic
* Within a plugin, you can use the CustomIntegrations plugin and retrieve a fully-configured
* context from the `start` contract.
*/
export const CustomIntegrationsServicesProvider: FC<CustomIntegrationsServices> = ({
children,
...services
}) => (
export const CustomIntegrationsServicesProvider: FC<
PropsWithChildren<CustomIntegrationsServices>
> = ({ children, ...services }) => (
<CustomIntegrationsServicesContext.Provider value={services}>
{children}
</CustomIntegrationsServicesContext.Provider>

View file

@ -6,6 +6,7 @@
* Side Public License, v 1.
*/
import { FC, PropsWithChildren } from 'react';
import { CustomIntegration } from '../common';
export interface CustomIntegrationsSetup {
@ -14,8 +15,8 @@ export interface CustomIntegrationsSetup {
}
export interface CustomIntegrationsStart {
ContextProvider: React.FC;
languageClientsUiComponents: Record<string, React.FC>;
ContextProvider: FC<PropsWithChildren>;
languageClientsUiComponents: Record<string, FC>;
}
// eslint-disable-next-line @typescript-eslint/no-empty-interface

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { PropsWithChildren } from 'react';
import { act } from 'react-dom/test-utils';
import { mount, ReactWrapper } from 'enzyme';
import { I18nProvider } from '@kbn/i18n-react';
@ -27,7 +27,7 @@ jest.mock('@kbn/content-management-table-list-view-table', () => {
return {
__esModule: true,
...originalModule,
TableListViewKibanaProvider: jest.fn().mockImplementation(({ children }) => {
TableListViewKibanaProvider: jest.fn().mockImplementation(({ children }: PropsWithChildren) => {
return <>{children}</>;
}),
};

View file

@ -13,6 +13,8 @@ import React, {
useCallback,
useMemo,
useLayoutEffect,
FC,
PropsWithChildren,
} from 'react';
import { EuiFlexGroup, EuiFlexGroupProps } from '@elastic/eui';
@ -48,7 +50,7 @@ export interface Props {
gutterSize?: EuiFlexGroupProps['gutterSize'];
}
export const Panels: React.FC<Props> = ({ maxWidth, flyoutClassName, ...props }) => {
export const Panels: FC<PropsWithChildren<Props>> = ({ maxWidth, flyoutClassName, ...props }) => {
const flyoutDOMelement = useMemo(() => {
const el = document.getElementsByClassName(flyoutClassName);

View file

@ -5,11 +5,11 @@
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
import React, { useEffect } from 'react';
import React, { useEffect, FC, PropsWithChildren } from 'react';
import { useFlyoutPanelContext } from './flyout_panel';
export const PanelContent: React.FC = (props) => {
export const PanelContent: FC<PropsWithChildren> = (props) => {
const { registerContent } = useFlyoutPanelContext();
useEffect(() => {

View file

@ -6,7 +6,13 @@
* Side Public License, v 1.
*/
import React, { createContext, useContext, FunctionComponent, useMemo } from 'react';
import React, {
createContext,
useContext,
FunctionComponent,
useMemo,
PropsWithChildren,
} from 'react';
import { NotificationsStart, CoreStart } from '@kbn/core/public';
import type { BehaviorSubject } from 'rxjs';
import type {
@ -54,7 +60,7 @@ export interface Context {
const fieldEditorContext = createContext<Context | undefined>(undefined);
export const FieldEditorProvider: FunctionComponent<Context> = ({
export const FieldEditorProvider: FunctionComponent<PropsWithChildren<Context>> = ({
services,
dataView,
links,

View file

@ -54,6 +54,7 @@ export interface Props {
gutterSize?: EuiFlexGroupProps['gutterSize'];
/** Flag to indicate if the panels width are declared as fixed pixel width instead of percent */
fixedPanelWidths?: boolean;
children: React.ReactNode;
}
export const Panels: React.FC<Props> = ({

View file

@ -9,7 +9,7 @@ import React, { useEffect } from 'react';
import { useFlyoutPanelContext } from './flyout_panel';
export const PanelContent: React.FC = (props) => {
export const PanelContent: React.FC<{ children: React.ReactNode }> = (props) => {
const { registerContent } = useFlyoutPanelContext();
useEffect(() => {

View file

@ -14,7 +14,8 @@ import React, {
useCallback,
useEffect,
useRef,
FunctionComponent,
FC,
PropsWithChildren,
} from 'react';
import { renderToString } from 'react-dom/server';
import useDebounce from 'react-use/lib/useDebounce';
@ -64,10 +65,11 @@ const documentsSelector = (state: PreviewState) => {
};
};
export const FieldPreviewProvider: FunctionComponent<{ controller: PreviewController }> = ({
controller,
children,
}) => {
export const FieldPreviewProvider: FC<
PropsWithChildren<{
controller: PreviewController;
}>
> = ({ controller, children }) => {
const {
dataView,
services: {

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { i18n } from '@kbn/i18n';
import { EuiButton, EuiButtonEmpty, EuiPageHeader } from '@elastic/eui';
import { DataView } from '@kbn/data-views-plugin/public';
@ -46,7 +46,7 @@ const removeTooltip = i18n.translate('indexPatternManagement.editDataView.remove
defaultMessage: 'Delete',
});
export const IndexHeader: React.FC<IndexHeaderProps> = ({
export const IndexHeader: FC<PropsWithChildren<IndexHeaderProps>> = ({
defaultIndex,
indexPattern,
setDefault,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { Fragment, useCallback, useMemo, useState } from 'react';
import React, { Fragment, useCallback, useMemo, useState, FC, PropsWithChildren } from 'react';
import { FormattedMessage } from '@kbn/i18n-react';
import { EuiSpacer, EuiText, useEuiPaddingSize } from '@elastic/eui';
import { css } from '@emotion/react';
@ -242,7 +242,7 @@ export function ContextAppContent({
);
}
const WrapperWithPadding: React.FC = ({ children }) => {
const WrapperWithPadding: FC<PropsWithChildren> = ({ children }) => {
const padding = useEuiPaddingSize('s');
return (

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { css } from '@emotion/react';
import { EuiFlexGroup, EuiFlexItem, EuiProgress } from '@elastic/eui';
import {
@ -29,7 +29,7 @@ export interface SavedSearchEmbeddableBaseProps {
interceptedWarnings?: SearchResponseWarning[];
}
export const SavedSearchEmbeddableBase: React.FC<SavedSearchEmbeddableBaseProps> = ({
export const SavedSearchEmbeddableBase: FC<PropsWithChildren<SavedSearchEmbeddableBaseProps>> = ({
isLoading,
totalHitCount,
prepend,

View file

@ -14,6 +14,8 @@ import React, {
useMemo,
useEffect,
useRef,
FC,
PropsWithChildren,
} from 'react';
import { EuiFlyout } from '@elastic/eui';
@ -39,7 +41,7 @@ const DEFAULT_FLYOUT_PROPS = {
maxWidth: 500,
};
export const GlobalFlyoutProvider: React.FC = ({ children }) => {
export const GlobalFlyoutProvider: FC<PropsWithChildren> = ({ children }) => {
const [showFlyout, setShowFlyout] = useState(false);
const [activeContent, setActiveContent] = useState<Content<any> | undefined>(undefined);

View file

@ -6,10 +6,10 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { EuiLoadingSpinner, EuiText, EuiPageTemplate } from '@elastic/eui';
export const PageLoading: React.FunctionComponent = ({ children }) => {
export const PageLoading: FC<PropsWithChildren> = ({ children }) => {
return (
<EuiPageTemplate.EmptyPrompt
title={<EuiLoadingSpinner size="xl" />}

View file

@ -5,7 +5,7 @@
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
import React, { useState, useContext, createContext } from 'react';
import React, { useState, useContext, createContext, FC, PropsWithChildren } from 'react';
import { EuiSpacer, EuiText, EuiTextColor, EuiButton } from '@elastic/eui';
import { TextField, NumericField } from '../../../components';
@ -48,7 +48,7 @@ const useGlobalFields = () => {
return ctx;
};
const FormGlobalFields: React.FC = ({ children }) => {
const FormGlobalFields: FC<PropsWithChildren> = ({ children }) => {
return (
<UseMultiFields fields={globalFields}>
{(fields) => {
@ -170,7 +170,7 @@ const useGlobalFields = () => {
return ctx;
};
const FormGlobalFields: React.FC = ({ children }) => {
const FormGlobalFields: FC<PropsWithChildren> = ({ children }) => {
return (
<UseMultiFields fields={globalFields}>
{(fields) => {

View file

@ -5,7 +5,7 @@
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
import React, { FC } from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { EuiSpacer, EuiButton } from '@elastic/eui';
import { action } from '@storybook/addon-actions';
@ -30,7 +30,7 @@ export interface FormWrapperProps {
formConfig?: FormConfig<any>;
}
export const FormWrapper: FC<FormWrapperProps> = ({ formConfig, children }) => {
export const FormWrapper: FC<PropsWithChildren<FormWrapperProps>> = ({ formConfig, children }) => {
const { form } = useForm(formConfig);
return (

View file

@ -6,13 +6,13 @@
* Side Public License, v 1.
*/
import React, { createContext, useContext, FC } from 'react';
import React, { createContext, useContext, FC, PropsWithChildren } from 'react';
import type { AppContext } from './types';
const FilesManagementAppContext = createContext<AppContext>(null as unknown as AppContext);
export const FilesManagementAppContextProvider: FC<AppContext> = ({
export const FilesManagementAppContextProvider: FC<PropsWithChildren<AppContext>> = ({
children,
filesClient,
getFileKindDefinition,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import type { FunctionComponent } from 'react';
import type { FC, PropsWithChildren } from 'react';
import React from 'react';
import ReactDOM from 'react-dom';
@ -52,7 +52,7 @@ export interface ProvidersProps {
defaultCode?: string;
}
export const Providers: FunctionComponent<ProvidersProps> = ({
export const Providers: FC<PropsWithChildren<ProvidersProps>> = ({
defaultCode,
services,
children,

View file

@ -7,10 +7,10 @@
*/
import { EuiToolTip } from '@elastic/eui';
import type { FunctionComponent } from 'react';
import type { FC, PropsWithChildren } from 'react';
import React, { useLayoutEffect, useRef, useState } from 'react';
export const TextTruncate: FunctionComponent = ({ children }) => {
export const TextTruncate: FC<PropsWithChildren> = ({ children }) => {
const textRef = useRef<HTMLSpanElement>(null);
const [showTooltip, setShowTooltip] = useState(false);

View file

@ -8,7 +8,7 @@
import { EuiModal, EuiModalHeader } from '@elastic/eui';
import constate from 'constate';
import type { FunctionComponent } from 'react';
import type { FC, PropsWithChildren } from 'react';
import React, { useEffect, useRef, useState } from 'react';
import { euiThemeVars } from '@kbn/ui-theme';
@ -38,7 +38,7 @@ const [OuterVerificationProvider, useVerification] = constate(
}
);
const InnerVerificationProvider: FunctionComponent = ({ children }) => {
const InnerVerificationProvider: FC<PropsWithChildren> = ({ children }) => {
const { http } = useKibana();
const { status, setStatus, setCode } = useVerification();
@ -72,7 +72,7 @@ const InnerVerificationProvider: FunctionComponent = ({ children }) => {
);
};
export const VerificationProvider: FunctionComponent<VerificationProps> = ({
export const VerificationProvider: FC<PropsWithChildren<VerificationProps>> = ({
defaultCode,
children,
}) => {

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import * as React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { KibanaReactContext, KibanaReactContextValue, KibanaServices } from './types';
import { createReactOverlays } from '../overlays';
import { createNotifications } from '../notifications';
@ -28,8 +28,8 @@ export const useKibana = <Extra extends object = {}>(): KibanaReactContextValue<
export const withKibana = <Props extends { kibana: KibanaReactContextValue<{}> }>(
type: React.ComponentType<Props>
): React.FC<Omit<Props, 'kibana'>> => {
const EnhancedType: React.FC<Omit<Props, 'kibana'>> = (props: Omit<Props, 'kibana'>) => {
): FC<Omit<Props, 'kibana'>> => {
const EnhancedType: FC<Omit<Props, 'kibana'>> = (props: Omit<Props, 'kibana'>) => {
const kibana = useKibana();
return React.createElement(type, { ...props, kibana } as Props);
};
@ -45,7 +45,7 @@ export const createKibanaReactContext = <Services extends KibanaServices>(
notifications: createNotifications(services),
};
const Provider: React.FC<{ services?: Services }> = ({
const Provider: FC<PropsWithChildren<{ services?: Services }>> = ({
services: newServices = {},
children,
}) => {

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import * as React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { CoreStart } from '@kbn/core/public';
import { KibanaReactOverlays } from '../overlays';
import { KibanaReactNotifications } from '../notifications';
@ -21,6 +21,6 @@ export interface KibanaReactContextValue<Services extends KibanaServices> {
export interface KibanaReactContext<T extends KibanaServices> {
value: KibanaReactContextValue<T>;
Provider: React.FC<{ services?: T }>;
Provider: FC<PropsWithChildren<{ services?: T }>>;
Consumer: React.Consumer<KibanaReactContextValue<T>>;
}

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC } from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { Observable } from 'rxjs';
import { EuiProviderProps } from '@elastic/eui';
@ -16,9 +16,12 @@ import { KibanaThemeProvider as KbnThemeProvider } from '@kbn/react-kibana-conte
export interface KibanaThemeProviderProps {
theme$: Observable<CoreTheme>;
modify?: EuiProviderProps<{}>['modify'];
children: React.ReactNode;
}
/** @deprecated use `KibanaThemeProvider` from `@kbn/react-kibana-context-theme */
export const KibanaThemeProvider: FC<KibanaThemeProviderProps> = ({ theme$, modify, children }) => (
<KbnThemeProvider {...{ theme: { theme$ }, modify }}>{children}</KbnThemeProvider>
);
export const KibanaThemeProvider: FC<PropsWithChildren<KibanaThemeProviderProps>> = ({
theme$,
modify,
children,
}) => <KbnThemeProvider {...{ theme: { theme$ }, modify }}>{children}</KbnThemeProvider>;

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { createContext, useContext } from 'react';
import React, { createContext, useContext, FC, PropsWithChildren } from 'react';
import { PluginServiceFactory } from './factory';
/**
@ -62,7 +62,7 @@ export class PluginServiceProvider<
private _requiredServices?: RequiredServices;
private context = createContext<Service | null>(null);
private pluginService: Service | null = null;
public readonly Provider: React.FC = ({ children }) => {
public readonly Provider: FC<PropsWithChildren> = ({ children }) => {
return <this.context.Provider value={this.getService()}>{children}</this.context.Provider>;
};

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { PluginServiceProvider, PluginServiceProviders } from './provider';
import { PluginServiceProvidersMediator } from './providers_mediator';
@ -58,7 +58,7 @@ export class PluginServiceRegistry<
// Collect and combine Context.Provider elements from each Service Provider into a single
// Functional Component.
const provider: React.FC = ({ children }) => (
const provider: FC<PropsWithChildren> = ({ children }) => (
<>
{values.reduceRight((acc, serviceProvider) => {
return <serviceProvider.Provider>{acc}</serviceProvider.Provider>;

View file

@ -6,6 +6,7 @@
* Side Public License, v 1.
*/
import { FC, PropsWithChildren } from 'react';
import { ContentManagementPublicStart } from '@kbn/content-management-plugin/public';
import { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public';
import { UiActionsStart } from '@kbn/ui-actions-plugin/public';
@ -16,7 +17,7 @@ import { PresentationLabsService } from './services/labs/types';
export interface PresentationUtilPluginSetup {}
export interface PresentationUtilPluginStart {
ContextProvider: React.FC;
ContextProvider: FC<PropsWithChildren>;
labsService: PresentationLabsService;
registerExpressionsLanguage: typeof registerExpressionsLanguage;
}

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import ReactDOM from 'react-dom';
import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render';
@ -32,7 +32,7 @@ interface MinimalSaveModalProps {
export function showSaveModal(
saveModal: React.ReactElement<MinimalSaveModalProps>,
Wrapper?: React.FC
Wrapper?: FC<PropsWithChildren>
) {
const container = document.createElement('div');
const closeModal = () => {

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { lazy, Suspense } from 'react';
import React, { lazy, Suspense, FC, PropsWithChildren } from 'react';
import ReactDOM from 'react-dom';
import { Router, Routes, Route } from '@kbn/shared-ux-router';
import { i18n } from '@kbn/i18n';
@ -43,7 +43,7 @@ export const mountManagementSection = async ({ core, mountParams }: MountParams)
coreStart.chrome.docTitle.change(title);
const RedirectToHomeIfUnauthorized: React.FunctionComponent = ({ children }) => {
const RedirectToHomeIfUnauthorized: FC<PropsWithChildren> = ({ children }) => {
const allowed = capabilities?.management?.kibana?.objects ?? false;
if (!allowed) {

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import * as React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { EuiButton } from '@elastic/eui';
export interface ButtonSubmitProps {
@ -14,7 +14,11 @@ export interface ButtonSubmitProps {
onClick: () => void;
}
export const ButtonSubmit: React.FC<ButtonSubmitProps> = ({ disabled, onClick, children }) => {
export const ButtonSubmit: FC<PropsWithChildren<ButtonSubmitProps>> = ({
disabled,
onClick,
children,
}) => {
return (
<EuiButton
fill

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { EuiFieldText, EuiForm, EuiFormRow, EuiSpacer, EuiCallOut, EuiCode } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { TriggerPicker, TriggerPickerProps } from '../trigger_picker';
@ -43,7 +43,7 @@ export interface FormDrilldownWizardProps {
disabled?: boolean;
}
export const DrilldownForm: React.FC<FormDrilldownWizardProps> = ({
export const DrilldownForm: FC<PropsWithChildren<FormDrilldownWizardProps>> = ({
name = '',
onNameChange,
triggers,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import {
EuiFlyoutHeader,
EuiTitle,
@ -30,7 +30,7 @@ export interface FlyoutFrameProps {
/**
* @todo This component can be moved to `kibana_react`.
*/
export const FlyoutFrame: React.FC<FlyoutFrameProps> = ({
export const FlyoutFrame: FC<PropsWithChildren<FlyoutFrameProps>> = ({
title = '',
footer,
onClose,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import * as React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import {
EuiTextColor,
EuiTextColorProps,
@ -24,7 +24,7 @@ export interface TextWithIconProps {
iconTooltip?: React.ReactNode;
}
export const TextWithIcon: React.FC<TextWithIconProps> = ({
export const TextWithIcon: FC<PropsWithChildren<TextWithIconProps>> = ({
color,
tooltip,
icon,

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import * as React from 'react';
import React, { FC, PropsWithChildren } from 'react';
import { i18n } from '@kbn/i18n';
import { TextWithIcon } from '../text_with_icon';
@ -22,7 +22,7 @@ export interface TriggerLineItemProps {
incompatible?: boolean;
}
export const TriggerLineItem: React.FC<TriggerLineItemProps> = ({
export const TriggerLineItem: FC<PropsWithChildren<TriggerLineItemProps>> = ({
tooltip,
incompatible,
children,

Some files were not shown because too many files have changed in this diff Show more