i18n: use @grafana/i18n within @grafana/ui (#106691)
This commit is contained in:
@@ -11,6 +11,17 @@ import { ResourceLoader, Resources, TFunction, TransProps, TransType } from './t
|
||||
let tFunc: I18NextTFunction<string[], undefined> | undefined;
|
||||
let transComponent: TransType;
|
||||
|
||||
function initTFuncAndTransComponent({ id, ns }: { id?: string; ns?: string[] } = {}) {
|
||||
if (id) {
|
||||
tFunc = getI18nInstance().getFixedT(null, id);
|
||||
transComponent = (props: TransProps) => <I18NextTrans shouldUnescape ns={id} {...props} />;
|
||||
return;
|
||||
}
|
||||
|
||||
tFunc = getI18nInstance().t;
|
||||
transComponent = (props: TransProps) => <I18NextTrans shouldUnescape ns={ns} {...props} />;
|
||||
}
|
||||
|
||||
// exported for testing
|
||||
export async function loadPluginResources(id: string, language: string, loaders?: ResourceLoader[]) {
|
||||
if (!loaders?.length) {
|
||||
@@ -41,8 +52,7 @@ export function initDefaultI18nInstance() {
|
||||
returnEmptyString: false,
|
||||
lng: DEFAULT_LANGUAGE, // this should be the locale of the phrases in our source JSX
|
||||
});
|
||||
tFunc = getI18nInstance().t;
|
||||
transComponent = (props: TransProps) => <I18NextTrans shouldUnescape {...props} />;
|
||||
initTFuncAndTransComponent();
|
||||
return initPromise;
|
||||
}
|
||||
|
||||
@@ -63,8 +73,7 @@ export async function initPluginTranslations(id: string, loaders?: ResourceLoade
|
||||
initDefaultReactI18nInstance();
|
||||
|
||||
const language = getResolvedLanguage();
|
||||
tFunc = getI18nInstance().getFixedT(null, id);
|
||||
transComponent = (props: TransProps) => <I18NextTrans shouldUnescape ns={id} {...props} />;
|
||||
initTFuncAndTransComponent({ id });
|
||||
|
||||
await loadPluginResources(id, language, loaders);
|
||||
|
||||
@@ -136,8 +145,7 @@ async function initTranslations({
|
||||
|
||||
await getI18nInstance().init(options);
|
||||
|
||||
tFunc = getI18nInstance().t;
|
||||
transComponent = (props: TransProps) => <I18NextTrans shouldUnescape ns={ns} {...props} />;
|
||||
initTFuncAndTransComponent({ ns });
|
||||
|
||||
return {
|
||||
language: getResolvedLanguage(),
|
||||
|
||||
@@ -46,6 +46,10 @@ interface TransProps {
|
||||
* Values to interpolate into the translation
|
||||
*/
|
||||
values?: Record<string, unknown>;
|
||||
/**
|
||||
* Class name for the Trans component
|
||||
*/
|
||||
className?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { useState } from 'react';
|
||||
|
||||
import { ActionModel, Field, ActionVariableInput } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useTheme2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Button, ButtonProps } from '../Button/Button';
|
||||
import { ConfirmModal } from '../ConfirmModal/ConfirmModal';
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { css } from '@emotion/css';
|
||||
|
||||
import { ActionModel, ActionVariableInput } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Button } from '../Button/Button';
|
||||
import { Field } from '../Forms/Field';
|
||||
import { FieldSet } from '../Forms/FieldSet';
|
||||
|
||||
@@ -4,10 +4,10 @@ import * as React from 'react';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useTheme2 } from '../../themes/ThemeContext';
|
||||
import { IconName } from '../../types/icon';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Button } from '../Button/Button';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
import { Box } from '../Layout/Box/Box';
|
||||
|
||||
@@ -3,8 +3,9 @@ import { debounce } from 'lodash';
|
||||
import { useCallback, useMemo, useRef } from 'react';
|
||||
import * as React from 'react';
|
||||
|
||||
import { Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { Trans } from '../../utils/i18n';
|
||||
import { Field, FieldProps } from '../Forms/Field';
|
||||
import { InlineToast } from '../InlineToast/InlineToast';
|
||||
|
||||
|
||||
@@ -3,10 +3,10 @@ import { memo, cloneElement, FC, useMemo, useContext, ReactNode } from 'react';
|
||||
import * as React from 'react';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { getFocusStyles } from '../../themes/mixins';
|
||||
import { t } from '../../utils/i18n';
|
||||
|
||||
import { CardContainer, CardContainerProps, getCardContainerStyles } from './CardContainer';
|
||||
|
||||
|
||||
@@ -5,9 +5,9 @@ import { OverlayContainer, useOverlay } from '@react-aria/overlays';
|
||||
import { useState, useEffect, useRef } from 'react';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Alert } from '../Alert/Alert';
|
||||
import { clearButtonStyles } from '../Button/Button';
|
||||
import { IconButton } from '../IconButton/IconButton';
|
||||
|
||||
@@ -5,10 +5,10 @@ import { PureComponent } from 'react';
|
||||
import * as React from 'react';
|
||||
|
||||
import { SelectableValue } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { withTheme2 } from '../../themes/ThemeContext';
|
||||
import { Themeable2 } from '../../types/theme';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
import { IconButton } from '../IconButton/IconButton';
|
||||
import { Input } from '../Input/Input';
|
||||
|
||||
@@ -3,9 +3,9 @@ import { useCallback, useRef, useState, useEffect } from 'react';
|
||||
import * as React from 'react';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Button, ButtonProps } from '../Button/Button';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
import { InlineToast } from '../InlineToast/InlineToast';
|
||||
|
||||
@@ -4,11 +4,11 @@ import { Component } from 'react';
|
||||
import * as React from 'react';
|
||||
|
||||
import { GrafanaTheme2, colorManipulator } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { withTheme2 } from '../../themes/ThemeContext';
|
||||
import { stylesFactory } from '../../themes/stylesFactory';
|
||||
import { Themeable2 } from '../../types/theme';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Tab } from '../Tabs/Tab';
|
||||
import { TabsBar } from '../Tabs/TabsBar';
|
||||
import { PopoverContentProps } from '../Tooltip/types';
|
||||
|
||||
@@ -5,9 +5,9 @@ import tinycolor from 'tinycolor2';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useTheme2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
|
||||
/** @internal */
|
||||
export enum ColorSwatchVariant {
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { css } from '@emotion/css';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2, useTheme2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
|
||||
import { ColorSwatch } from './ColorSwatch';
|
||||
import NamedColorsGroup from './NamedColorsGroup';
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { withTheme2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { InlineField } from '../Forms/InlineField';
|
||||
import { InlineSwitch } from '../Switch/Switch';
|
||||
import { PopoverContentProps } from '../Tooltip/types';
|
||||
|
||||
@@ -3,8 +3,9 @@ import { useVirtualizer, type Range } from '@tanstack/react-virtual';
|
||||
import { useCombobox } from 'downshift';
|
||||
import React, { useCallback, useId, useMemo } from 'react';
|
||||
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
import { AutoSizeInput } from '../Input/AutoSizeInput';
|
||||
import { Input, Props as InputProps } from '../Input/Input';
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { ReactNode } from 'react';
|
||||
|
||||
import { Trans } from '../../utils/i18n';
|
||||
import { Trans } from '@grafana/i18n';
|
||||
|
||||
import { Icon } from '../Icon/Icon';
|
||||
import { Box } from '../Layout/Box/Box';
|
||||
import { Stack } from '../Layout/Stack/Stack';
|
||||
|
||||
@@ -2,8 +2,9 @@ import { cx } from '@emotion/css';
|
||||
import { useCombobox, useMultipleSelection } from 'downshift';
|
||||
import { useCallback, useMemo, useState } from 'react';
|
||||
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
import { Box } from '../Layout/Box/Box';
|
||||
import { Portal } from '../Portal/Portal';
|
||||
|
||||
@@ -2,9 +2,9 @@ import { css } from '@emotion/css';
|
||||
import { forwardRef } from 'react';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { IconButton } from '../IconButton/IconButton';
|
||||
|
||||
interface ValuePillProps {
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import { debounce } from 'lodash';
|
||||
import { useState, useCallback, useMemo } from 'react';
|
||||
|
||||
import { t } from '../../utils/i18n';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { fuzzyFind, itemToString } from './filter';
|
||||
import { ComboboxOption } from './types';
|
||||
|
||||
@@ -3,10 +3,10 @@ import { ReactElement, useEffect, useRef, useState } from 'react';
|
||||
import * as React from 'react';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { ComponentSize } from '../../types/size';
|
||||
import { Trans } from '../../utils/i18n';
|
||||
import { Button, ButtonVariant } from '../Button/Button';
|
||||
|
||||
export interface Props {
|
||||
|
||||
@@ -5,9 +5,9 @@ import { useForm } from 'react-hook-form';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Button, ButtonVariant } from '../Button/Button';
|
||||
import { Field } from '../Forms/Field';
|
||||
import { Input } from '../Input/Input';
|
||||
|
||||
@@ -2,9 +2,9 @@ import { css } from '@emotion/css';
|
||||
import { memo, ChangeEvent } from 'react';
|
||||
|
||||
import { VariableSuggestion, GrafanaTheme2, DataLink } from '@grafana/data';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t, Trans } from '../../utils/i18n';
|
||||
import { Field } from '../Forms/Field';
|
||||
import { Input } from '../Input/Input';
|
||||
import { Switch } from '../Switch/Switch';
|
||||
|
||||
+1
-1
@@ -1,8 +1,8 @@
|
||||
import { useState } from 'react';
|
||||
|
||||
import { DataFrame, DataLink, VariableSuggestion } from '@grafana/data';
|
||||
import { Trans } from '@grafana/i18n';
|
||||
|
||||
import { Trans } from '../../../utils/i18n';
|
||||
import { Button } from '../../Button/Button';
|
||||
import { Modal } from '../../Modal/Modal';
|
||||
import { DataLinkEditor } from '../DataLinkEditor';
|
||||
|
||||
+1
-1
@@ -4,9 +4,9 @@ import { cloneDeep } from 'lodash';
|
||||
import { useEffect, useState } from 'react';
|
||||
|
||||
import { Action, DataFrame, DataLink, GrafanaTheme2 } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../../themes/ThemeContext';
|
||||
import { t } from '../../../utils/i18n';
|
||||
import { Button } from '../../Button/Button';
|
||||
import { Modal } from '../../Modal/Modal';
|
||||
|
||||
|
||||
+1
-1
@@ -2,9 +2,9 @@ import { css, cx } from '@emotion/css';
|
||||
import { Draggable } from '@hello-pangea/dnd';
|
||||
|
||||
import { Action, DataFrame, DataLink, GrafanaTheme2 } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../../themes/ThemeContext';
|
||||
import { t } from '../../../utils/i18n';
|
||||
import { Badge } from '../../Badge/Badge';
|
||||
import { Icon } from '../../Icon/Icon';
|
||||
import { IconButton } from '../../IconButton/IconButton';
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { css } from '@emotion/css';
|
||||
|
||||
import { Field, GrafanaTheme2, LinkModel } from '@grafana/data';
|
||||
import { Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { Trans } from '../../utils/i18n';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
|
||||
import { DataLinkButton } from './DataLinkButton';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { DataSourceJsonData, DataSourcePluginOptionsEditorProps } from '@grafana/data';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { InlineSwitch } from '../../components/Switch/Switch';
|
||||
import { t, Trans } from '../../utils/i18n';
|
||||
import { InlineField } from '../Forms/InlineField';
|
||||
|
||||
export interface Props<T extends DataSourceJsonData>
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import * as React from 'react';
|
||||
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { InlineField } from '../../components/Forms/InlineField';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { FormField } from '../FormField/FormField';
|
||||
import { SecretFormField } from '../SecretFormField/SecretFormField';
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { ChangeEvent, MouseEvent } from 'react';
|
||||
|
||||
import { Trans } from '../../utils/i18n';
|
||||
import { Trans } from '@grafana/i18n';
|
||||
|
||||
import { Button } from '../Button/Button';
|
||||
import { InlineField } from '../Forms/InlineField';
|
||||
import { InlineFieldRow } from '../Forms/InlineFieldRow';
|
||||
|
||||
@@ -3,9 +3,9 @@ import { uniqueId } from 'lodash';
|
||||
import { PureComponent } from 'react';
|
||||
|
||||
import { DataSourceSettings } from '@grafana/data';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t, Trans } from '../../utils/i18n';
|
||||
import { Button } from '../Button/Button';
|
||||
import { FormField } from '../FormField/FormField';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
|
||||
@@ -3,9 +3,9 @@ import { useState, useCallback, useId, useMemo } from 'react';
|
||||
|
||||
import { SelectableValue } from '@grafana/data';
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { useTheme2 } from '../../themes/ThemeContext';
|
||||
import { t, Trans } from '../../utils/i18n';
|
||||
import { Alert } from '../Alert/Alert';
|
||||
import { Button } from '../Button/Button';
|
||||
import { Field } from '../Forms/Field';
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { css } from '@emotion/css';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { InlineField } from '../Forms/InlineField';
|
||||
import { Stack } from '../Layout/Stack/Stack';
|
||||
import { InlineSwitch } from '../Switch/Switch';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { DataSourceJsonData, DataSourcePluginOptionsEditorProps } from '@grafana/data';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { InlineSwitch } from '../../components/Switch/Switch';
|
||||
import { t, Trans } from '../../utils/i18n';
|
||||
import { InlineField } from '../Forms/InlineField';
|
||||
|
||||
export interface Props<T extends DataSourceJsonData>
|
||||
|
||||
@@ -2,8 +2,8 @@ import { css, cx } from '@emotion/css';
|
||||
import * as React from 'react';
|
||||
|
||||
import { KeyValue } from '@grafana/data';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { t, Trans } from '../../utils/i18n';
|
||||
import { FormField } from '../FormField/FormField';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
import { Tooltip } from '../Tooltip/Tooltip';
|
||||
|
||||
+1
-1
@@ -19,9 +19,9 @@ import {
|
||||
TimeZone,
|
||||
} from '@grafana/data';
|
||||
import { Components } from '@grafana/e2e-selectors';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2, useTheme2 } from '../../../themes/ThemeContext';
|
||||
import { t, Trans } from '../../../utils/i18n';
|
||||
import { Button } from '../../Button/Button';
|
||||
import { InlineField } from '../../Forms/InlineField';
|
||||
import { Icon } from '../../Icon/Icon';
|
||||
|
||||
+1
-1
@@ -6,9 +6,9 @@ import { useOverlay } from '@react-aria/overlays';
|
||||
import { FormEvent, useCallback, useRef, useState } from 'react';
|
||||
|
||||
import { RelativeTimeRange, GrafanaTheme2, TimeOption } from '@grafana/data';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../../themes/ThemeContext';
|
||||
import { Trans, t } from '../../../utils/i18n';
|
||||
import { Button } from '../../Button/Button';
|
||||
import { Field } from '../../Forms/Field';
|
||||
import { Icon } from '../../Icon/Icon';
|
||||
|
||||
@@ -16,9 +16,9 @@ import {
|
||||
getTimeZoneInfo,
|
||||
} from '@grafana/data';
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t, Trans } from '../../utils/i18n';
|
||||
import { ButtonGroup } from '../Button/ButtonGroup';
|
||||
import { getModalStyles } from '../Modal/getModalStyles';
|
||||
import { getPortalContainer } from '../Portal/Portal';
|
||||
|
||||
@@ -3,9 +3,9 @@ import { useCallback } from 'react';
|
||||
import Calendar, { CalendarType } from 'react-calendar';
|
||||
|
||||
import { GrafanaTheme2, dateTimeParse, DateTime, TimeZone } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../../themes/ThemeContext';
|
||||
import { t } from '../../../utils/i18n';
|
||||
import { Icon } from '../../Icon/Icon';
|
||||
import { getWeekStart, WeekStart } from '../WeekStartPicker';
|
||||
import { adjustDateForReactCalendar } from '../utils/adjustDateForReactCalendar';
|
||||
|
||||
+2
-1
@@ -1,4 +1,5 @@
|
||||
import { Trans } from '../../../utils/i18n';
|
||||
import { Trans } from '@grafana/i18n';
|
||||
|
||||
import { Button } from '../../Button/Button';
|
||||
import { Stack } from '../../Layout/Stack/Stack';
|
||||
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { Trans, t } from '../../../utils/i18n';
|
||||
import { IconButton } from '../../IconButton/IconButton';
|
||||
import { Stack } from '../../Layout/Stack/Stack';
|
||||
|
||||
|
||||
+1
-1
@@ -3,10 +3,10 @@ import { memo, useMemo, useState } from 'react';
|
||||
|
||||
import { GrafanaTheme2, isDateTime, rangeUtil, RawTimeRange, TimeOption, TimeRange, TimeZone } from '@grafana/data';
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2, useTheme2 } from '../../../themes/ThemeContext';
|
||||
import { getFocusStyles } from '../../../themes/mixins';
|
||||
import { t, Trans } from '../../../utils/i18n';
|
||||
import { FilterInput } from '../../FilterInput/FilterInput';
|
||||
import { Icon } from '../../Icon/Icon';
|
||||
import { WeekStart } from '../WeekStartPicker';
|
||||
|
||||
+1
-1
@@ -5,9 +5,9 @@ import * as React from 'react';
|
||||
|
||||
import { getTimeZoneInfo, GrafanaTheme2, TimeZone } from '@grafana/data';
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../../themes/ThemeContext';
|
||||
import { t, Trans } from '../../../utils/i18n';
|
||||
import { Button } from '../../Button/Button';
|
||||
import { Combobox } from '../../Combobox/Combobox';
|
||||
import { Field } from '../../Forms/Field';
|
||||
|
||||
+1
-1
@@ -14,9 +14,9 @@ import {
|
||||
TimeZone,
|
||||
} from '@grafana/data';
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../../themes/ThemeContext';
|
||||
import { t, Trans } from '../../../utils/i18n';
|
||||
import { Button } from '../../Button/Button';
|
||||
import { Field } from '../../Forms/Field';
|
||||
import { Icon } from '../../Icon/Icon';
|
||||
|
||||
+1
-1
@@ -2,9 +2,9 @@ import { css } from '@emotion/css';
|
||||
import { useRef, ReactNode } from 'react';
|
||||
|
||||
import { GrafanaTheme2, TimeOption } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../../themes/ThemeContext';
|
||||
import { t } from '../../../utils/i18n';
|
||||
|
||||
import { TimePickerTitle } from './TimePickerTitle';
|
||||
import { TimeRangeOption } from './TimeRangeOption';
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { t } from '../../utils/i18n';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { ToolbarButton } from '../ToolbarButton/ToolbarButton';
|
||||
import { Tooltip } from '../Tooltip/Tooltip';
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ import {
|
||||
TimeZone,
|
||||
InternalTimeZones,
|
||||
} from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Select } from '../Select/Select';
|
||||
|
||||
import { TimeZoneGroup } from './TimeZonePicker/TimeZoneGroup';
|
||||
|
||||
@@ -8,9 +8,9 @@ import * as React from 'react';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { getDragStyles } from '../DragHandle/DragHandle';
|
||||
import { IconButton } from '../IconButton/IconButton';
|
||||
import { ScrollContainer } from '../ScrollContainer/ScrollContainer';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { FeatureState } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Badge, BadgeProps } from '../Badge/Badge';
|
||||
|
||||
export interface FeatureBadgeProps {
|
||||
|
||||
@@ -4,9 +4,9 @@ import { ReactNode, useCallback, useState } from 'react';
|
||||
import { Accept, DropEvent, DropzoneOptions, FileError, FileRejection, useDropzone, ErrorCode } from 'react-dropzone';
|
||||
|
||||
import { formattedValueToString, getValueFormat, GrafanaTheme2 } from '@grafana/data';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { useTheme2 } from '../../themes/ThemeContext';
|
||||
import { t, Trans } from '../../utils/i18n';
|
||||
import { Alert } from '../Alert/Alert';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { css } from '@emotion/css';
|
||||
|
||||
import { formattedValueToString, getValueFormat, GrafanaTheme2 } from '@grafana/data';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { trimFileName } from '../../utils/file';
|
||||
import { t, Trans } from '../../utils/i18n';
|
||||
import { Button } from '../Button/Button';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
import { IconButton } from '../IconButton/IconButton';
|
||||
|
||||
@@ -5,12 +5,12 @@ import { v4 as uuidv4 } from 'uuid';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { getFocusStyles } from '../../themes/mixins';
|
||||
import { ComponentSize } from '../../types/size';
|
||||
import { trimFileName } from '../../utils/file';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { getButtonStyles } from '../Button/Button';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { forwardRef, useRef, HTMLProps } from 'react';
|
||||
|
||||
import { escapeStringForRegex, unEscapeStringFromRegex } from '@grafana/data';
|
||||
import { Trans } from '@grafana/i18n';
|
||||
|
||||
import { Trans } from '../../utils/i18n';
|
||||
import { useCombinedRefs } from '../../utils/useCombinedRefs';
|
||||
import { Button } from '../Button/Button';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { css } from '@emotion/css';
|
||||
import { CellProps, HeaderProps } from 'react-table';
|
||||
|
||||
import { t } from '../../../utils/i18n';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { IconButton } from '../../IconButton/IconButton';
|
||||
|
||||
const expanderContainerStyles = css({
|
||||
|
||||
@@ -2,8 +2,8 @@ import { memo, useCallback } from 'react';
|
||||
import * as React from 'react';
|
||||
|
||||
import { FieldMatcherID, fieldMatchers } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Input } from '../Input/Input';
|
||||
|
||||
import { MatcherUIProps, FieldMatcherUIRegistryItem } from './types';
|
||||
|
||||
@@ -11,10 +11,10 @@ import {
|
||||
SelectableValue,
|
||||
GrafanaTheme2,
|
||||
} from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
import { ComparisonOperation } from '@grafana/schema';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Input } from '../Input/Input';
|
||||
import { Select } from '../Select/Select';
|
||||
|
||||
|
||||
@@ -3,11 +3,11 @@ import { ReactElement, useCallback, useState, useRef, useImperativeHandle, CSSPr
|
||||
import * as React from 'react';
|
||||
|
||||
import { GrafanaTheme2, LinkTarget } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { getFocusStyles } from '../../themes/mixins';
|
||||
import { IconName } from '../../types/icon';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
import { Stack } from '../Layout/Stack/Stack';
|
||||
|
||||
|
||||
@@ -5,9 +5,10 @@ import { OverlayContainer, useOverlay } from '@react-aria/overlays';
|
||||
import { PropsWithChildren, useRef } from 'react';
|
||||
import * as React from 'react';
|
||||
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { IconName } from '../../types/icon';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { IconButton } from '../IconButton/IconButton';
|
||||
import { Stack } from '../Layout/Stack/Stack';
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@ import { css } from '@emotion/css';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { useAsyncDependency } from '../../utils/useAsyncDependency';
|
||||
import { ErrorWithStack } from '../ErrorBoundary/ErrorWithStack';
|
||||
import { LoadingPlaceholder } from '../LoadingPlaceholder/LoadingPlaceholder';
|
||||
|
||||
@@ -3,11 +3,11 @@ import { memo, Children, ReactNode } from 'react';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { getFocusStyles } from '../../themes/mixins';
|
||||
import { IconName } from '../../types/icon';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
import { IconButton } from '../IconButton/IconButton';
|
||||
import { Link } from '../Link/Link';
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import { css, cx } from '@emotion/css';
|
||||
import { useMemo } from 'react';
|
||||
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Button, ButtonVariant } from '../Button/Button';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@ import { css, cx, keyframes } from '@emotion/css';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
import { Tooltip } from '../Tooltip/Tooltip';
|
||||
|
||||
|
||||
@@ -5,11 +5,11 @@ import { useMeasure, useToggle } from 'react-use';
|
||||
|
||||
import { GrafanaTheme2, LoadingState } from '@grafana/data';
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2, useTheme2 } from '../../themes/ThemeContext';
|
||||
import { getFocusStyles } from '../../themes/mixins';
|
||||
import { DelayRender } from '../../utils/DelayRender';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { usePointerDistance } from '../../utils/usePointerDistance';
|
||||
import { useElementSelection } from '../ElementSelectionContext/ElementSelectionContext';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
|
||||
@@ -2,8 +2,8 @@ import { cx } from '@emotion/css';
|
||||
import { ReactElement, useCallback } from 'react';
|
||||
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Dropdown } from '../Dropdown/Dropdown';
|
||||
import { ToolbarButton } from '../ToolbarButton/ToolbarButton';
|
||||
import { TooltipPlacement } from '../Tooltip/types';
|
||||
|
||||
@@ -4,8 +4,8 @@ import { PureComponent } from 'react';
|
||||
|
||||
import { SelectableValue, parseDuration } from '@grafana/data';
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { t } from '../../utils/i18n';
|
||||
import { ButtonGroup } from '../Button/ButtonGroup';
|
||||
import { ButtonSelect } from '../Dropdown/ButtonSelect';
|
||||
import { ToolbarButton, ToolbarButtonVariant } from '../ToolbarButton/ToolbarButton';
|
||||
|
||||
@@ -3,7 +3,8 @@ import { omit } from 'lodash';
|
||||
import { InputHTMLAttributes } from 'react';
|
||||
import * as React from 'react';
|
||||
|
||||
import { Trans } from '../../utils/i18n';
|
||||
import { Trans } from '@grafana/i18n';
|
||||
|
||||
import { Button } from '../Button/Button';
|
||||
import { FormField } from '../FormField/FormField';
|
||||
import { Field } from '../Forms/Field';
|
||||
|
||||
@@ -6,9 +6,9 @@ import { useAsyncFn } from 'react-use';
|
||||
import { type AsyncState } from 'react-use/lib/useAsync';
|
||||
|
||||
import { SelectableValue } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { InlineLabel } from '../Forms/InlineLabel';
|
||||
|
||||
import { SegmentSelect } from './SegmentSelect';
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import * as React from 'react';
|
||||
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useTheme2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { IconButton, Props as IconButtonProps } from '../IconButton/IconButton';
|
||||
|
||||
import { getSelectStyles } from './getSelectStyles';
|
||||
|
||||
@@ -12,9 +12,9 @@ import { default as AsyncCreatable } from 'react-select/async-creatable';
|
||||
import Creatable from 'react-select/creatable';
|
||||
|
||||
import { SelectableValue, toOption } from '@grafana/data';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { useTheme2 } from '../../themes/ThemeContext';
|
||||
import { t, Trans } from '../../utils/i18n';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
|
||||
import { CustomInput } from './CustomInput';
|
||||
|
||||
@@ -6,9 +6,9 @@ import { FixedSizeList as List } from 'react-window';
|
||||
|
||||
import { SelectableValue, toIconName } from '@grafana/data';
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { useTheme2 } from '../../themes/ThemeContext';
|
||||
import { t, Trans } from '../../utils/i18n';
|
||||
import { clearButtonStyles } from '../Button/Button';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
import { ScrollContainer } from '../ScrollContainer/ScrollContainer';
|
||||
|
||||
@@ -3,10 +3,10 @@ import * as React from 'react';
|
||||
import SVG from 'react-inlinesvg';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { IconSize, isIconSize } from '../../types/icon';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { spin } from '../../utils/keyframes';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
import { getIconRoot, getIconSubDir } from '../Icon/utils';
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import { useCallback } from 'react';
|
||||
import * as React from 'react';
|
||||
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { IconSize } from '../../types/icon';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { IconButton } from '../IconButton/IconButton';
|
||||
import { Stack } from '../Layout/Stack/Stack';
|
||||
import { TooltipPlacement } from '../Tooltip/types';
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { isString } from 'lodash';
|
||||
import { useState } from 'react';
|
||||
|
||||
import { t, Trans } from '../../utils/i18n';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { ClipboardButton } from '../ClipboardButton/ClipboardButton';
|
||||
import { Drawer } from '../Drawer/Drawer';
|
||||
import { Stack } from '../Layout/Stack/Stack';
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { css } from '@emotion/css';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../../../themes/ThemeContext';
|
||||
import { t } from '../../../../utils/i18n';
|
||||
import { Icon } from '../../../Icon/Icon';
|
||||
import { RowExpanderNGProps } from '../types';
|
||||
|
||||
|
||||
@@ -4,10 +4,10 @@ import { Geometry } from 'ol/geom';
|
||||
import { ReactNode, useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';
|
||||
|
||||
import { FieldType, GrafanaTheme2, isDataFrame, isTimeSeriesFrame } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
import { TableAutoCellOptions, TableCellDisplayMode } from '@grafana/schema';
|
||||
|
||||
import { useStyles2 } from '../../../../themes/ThemeContext';
|
||||
import { t } from '../../../../utils/i18n';
|
||||
import { IconButton } from '../../../IconButton/IconButton';
|
||||
// import { GeoCell } from '../../Cells/GeoCell';
|
||||
import { TableCellInspectorMode } from '../../TableCellInspector';
|
||||
|
||||
@@ -4,9 +4,9 @@ import * as React from 'react';
|
||||
import { FixedSizeList as List, ListChildComponentProps } from 'react-window';
|
||||
|
||||
import { GrafanaTheme2, formattedValueToString, getValueFormat, SelectableValue } from '@grafana/data';
|
||||
import { Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2, useTheme2 } from '../../../../themes/ThemeContext';
|
||||
import { Trans } from '../../../../utils/i18n';
|
||||
import { Checkbox } from '../../../Forms/Checkbox';
|
||||
import { Label } from '../../../Forms/Label';
|
||||
import { Stack } from '../../../Layout/Stack/Stack';
|
||||
|
||||
@@ -2,9 +2,9 @@ import { css } from '@emotion/css';
|
||||
import React, { useCallback, useMemo, useState } from 'react';
|
||||
|
||||
import { Field, GrafanaTheme2, SelectableValue } from '@grafana/data';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2, useTheme2 } from '../../../../themes/ThemeContext';
|
||||
import { t, Trans } from '../../../../utils/i18n';
|
||||
import { Button } from '../../../Button/Button';
|
||||
import { ClickOutsideWrapper } from '../../../ClickOutsideWrapper/ClickOutsideWrapper';
|
||||
import { ButtonSelect } from '../../../Dropdown/ButtonSelect';
|
||||
|
||||
@@ -16,10 +16,10 @@ import {
|
||||
GrafanaTheme2,
|
||||
ReducerID,
|
||||
} from '@grafana/data';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
import { TableCellDisplayMode } from '@grafana/schema';
|
||||
|
||||
import { useStyles2, useTheme2 } from '../../../themes/ThemeContext';
|
||||
import { t, Trans } from '../../../utils/i18n';
|
||||
import { ContextMenu } from '../../ContextMenu/ContextMenu';
|
||||
import { MenuItem } from '../../Menu/MenuItem';
|
||||
import { Pagination } from '../../Pagination/Pagination';
|
||||
|
||||
@@ -12,6 +12,7 @@ import {
|
||||
LinkModel,
|
||||
ValueLinkConfig,
|
||||
} from '@grafana/data';
|
||||
import { Trans } from '@grafana/i18n';
|
||||
import {
|
||||
BarGaugeDisplayMode,
|
||||
TableCellBackgroundDisplayMode,
|
||||
@@ -19,7 +20,6 @@ import {
|
||||
TableCellHeight,
|
||||
} from '@grafana/schema';
|
||||
|
||||
import { Trans } from '../../../utils/i18n';
|
||||
import { PanelContext } from '../../PanelChrome';
|
||||
|
||||
import { mapFrameToDataGrid, myRowRenderer } from './TableNG';
|
||||
|
||||
@@ -4,9 +4,9 @@ import * as React from 'react';
|
||||
import { FixedSizeList as List, ListChildComponentProps } from 'react-window';
|
||||
|
||||
import { GrafanaTheme2, formattedValueToString, getValueFormat, SelectableValue } from '@grafana/data';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2, useTheme2 } from '../../../themes/ThemeContext';
|
||||
import { t, Trans } from '../../../utils/i18n';
|
||||
import { ButtonSelect } from '../../Dropdown/ButtonSelect';
|
||||
import { FilterInput } from '../../FilterInput/FilterInput';
|
||||
import { Checkbox } from '../../Forms/Checkbox';
|
||||
|
||||
@@ -3,9 +3,9 @@ import { useCallback, useMemo, useState } from 'react';
|
||||
import * as React from 'react';
|
||||
|
||||
import { Field, GrafanaTheme2, SelectableValue } from '@grafana/data';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2, useTheme2 } from '../../../themes/ThemeContext';
|
||||
import { t, Trans } from '../../../utils/i18n';
|
||||
import { Button } from '../../Button/Button';
|
||||
import { ClickOutsideWrapper } from '../../ClickOutsideWrapper/ClickOutsideWrapper';
|
||||
import { Label } from '../../Forms/Label';
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { t } from '../../../utils/i18n';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { Icon } from '../../Icon/Icon';
|
||||
import { GrafanaTableRow } from '../types';
|
||||
|
||||
|
||||
@@ -12,10 +12,10 @@ import { VariableSizeList } from 'react-window';
|
||||
|
||||
import { FieldType, ReducerID, getRowUniqueId, getFieldMatcher } from '@grafana/data';
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { Trans } from '@grafana/i18n';
|
||||
import { TableCellHeight } from '@grafana/schema';
|
||||
|
||||
import { useTheme2 } from '../../../themes/ThemeContext';
|
||||
import { Trans } from '../../../utils/i18n';
|
||||
import { CustomScrollbar } from '../../CustomScrollbar/CustomScrollbar';
|
||||
import { Pagination } from '../../Pagination/Pagination';
|
||||
import { TableCellInspector } from '../TableCellInspector';
|
||||
|
||||
@@ -4,11 +4,11 @@ import { PureComponent } from 'react';
|
||||
import * as React from 'react';
|
||||
|
||||
import { DataFrame, CSVConfig, readCSV, GrafanaTheme2 } from '@grafana/data';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { withTheme2 } from '../../themes/ThemeContext';
|
||||
import { stylesFactory } from '../../themes/stylesFactory';
|
||||
import { Themeable2 } from '../../types/theme';
|
||||
import { t, Trans } from '../../utils/i18n';
|
||||
import { Icon } from '../Icon/Icon';
|
||||
import { TextArea } from '../TextArea/TextArea';
|
||||
|
||||
|
||||
@@ -2,10 +2,10 @@ import { css, cx } from '@emotion/css';
|
||||
import { forwardRef, memo } from 'react';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2, useTheme2 } from '../../themes/ThemeContext';
|
||||
import { IconName } from '../../types/icon';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { SkeletonComponent, attachSkeleton } from '../../utils/skeleton';
|
||||
|
||||
import { OnTagClick, Tag } from './Tag';
|
||||
|
||||
@@ -2,9 +2,9 @@ import { css, cx } from '@emotion/css';
|
||||
import { useMemo } from 'react';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { getTagColorsFromName } from '../../utils/tags';
|
||||
import { IconButton } from '../IconButton/IconButton';
|
||||
|
||||
|
||||
@@ -3,9 +3,9 @@ import { useCallback, useState, forwardRef } from 'react';
|
||||
import * as React from 'react';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2, useTheme2 } from '../../themes/ThemeContext';
|
||||
import { Trans } from '../../utils/i18n';
|
||||
import { Button } from '../Button/Button';
|
||||
import { Input } from '../Input/Input';
|
||||
|
||||
|
||||
@@ -16,9 +16,9 @@ import { Placement } from '@popperjs/core';
|
||||
import { memo, cloneElement, isValidElement, useRef, useState } from 'react';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2, useTheme2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { buildTooltipTheme, getPlacement } from '../../utils/tooltipUtils';
|
||||
import { IconButton } from '../IconButton/IconButton';
|
||||
|
||||
|
||||
@@ -5,9 +5,9 @@ import { useOverlay } from '@react-aria/overlays';
|
||||
import { Children, forwardRef, HTMLAttributes, useState, useRef, useLayoutEffect, createRef } from 'react';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useTheme2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { getPortalContainer } from '../Portal/Portal';
|
||||
|
||||
import { ToolbarButton } from './ToolbarButton';
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { PureComponent } from 'react';
|
||||
|
||||
import { getValueFormats, SelectableValue } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { t } from '../../utils/i18n';
|
||||
import { Cascader, CascaderOption } from '../Cascader/Cascader';
|
||||
|
||||
export interface UnitPickerProps {
|
||||
|
||||
@@ -2,9 +2,9 @@ import { css, cx } from '@emotion/css';
|
||||
import { useMemo, PropsWithChildren } from 'react';
|
||||
|
||||
import { dateTime, DateTimeInput, GrafanaTheme2 } from '@grafana/data';
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
|
||||
import { useTheme2 } from '../../themes/ThemeContext';
|
||||
import { t, Trans } from '../../utils/i18n';
|
||||
import { Tooltip } from '../Tooltip/Tooltip';
|
||||
|
||||
import { UserView } from './types';
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { css } from '@emotion/css';
|
||||
|
||||
import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
|
||||
import { UserIcon } from './UserIcon';
|
||||
import { UserView } from './types';
|
||||
|
||||
@@ -3,10 +3,10 @@ import { useCallback } from 'react';
|
||||
import * as React from 'react';
|
||||
|
||||
import { formattedValueToString, GrafanaTheme2 } from '@grafana/data';
|
||||
import { Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { hoverColor } from '../../themes/mixins';
|
||||
import { Trans } from '../../utils/i18n';
|
||||
|
||||
import { VizLegendSeriesIcon } from './VizLegendSeriesIcon';
|
||||
import { VizLegendItem } from './types';
|
||||
|
||||
@@ -2,9 +2,9 @@ import { css, cx } from '@emotion/css';
|
||||
import * as React from 'react';
|
||||
|
||||
import { GrafanaTheme2, GraphSeriesValue } from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { t } from '../../utils/i18n';
|
||||
import { SeriesIcon } from '../VizLegend/SeriesIcon';
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,9 +2,9 @@ import { css } from '@emotion/css';
|
||||
import { useMemo } from 'react';
|
||||
|
||||
import { ActionModel, Field, GrafanaTheme2, LinkModel, ThemeSpacingTokens } from '@grafana/data';
|
||||
import { Trans } from '@grafana/i18n';
|
||||
|
||||
import { useStyles2 } from '../../themes/ThemeContext';
|
||||
import { Trans } from '../../utils/i18n';
|
||||
import { ActionButton } from '../Actions/ActionButton';
|
||||
import { Button } from '../Button/Button';
|
||||
import { DataLinkButton } from '../DataLinks/DataLinkButton';
|
||||
|
||||
@@ -5,6 +5,7 @@ import {
|
||||
SelectableValue,
|
||||
StandardEditorProps,
|
||||
} from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
import { AxisColorMode, AxisConfig, AxisPlacement, ScaleDistribution, ScaleDistributionConfig } from '@grafana/schema';
|
||||
|
||||
import { Field } from '../../components/Forms/Field';
|
||||
@@ -13,7 +14,6 @@ import { Input } from '../../components/Input/Input';
|
||||
import { Stack } from '../../components/Layout/Stack/Stack';
|
||||
import { Select } from '../../components/Select/Select';
|
||||
import { graphFieldOptions } from '../../components/uPlot/config';
|
||||
import { t } from '../../utils/i18n';
|
||||
|
||||
const category = ['Axis'];
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import {
|
||||
identityOverrideProcessor,
|
||||
SelectableValue,
|
||||
} from '@grafana/data';
|
||||
import { t } from '@grafana/i18n';
|
||||
import { GraphFieldConfig, StackingConfig, StackingMode } from '@grafana/schema';
|
||||
|
||||
import { RadioButtonGroup } from '../../components/Forms/RadioButtonGroup/RadioButtonGroup';
|
||||
@@ -12,7 +13,6 @@ import { IconButton } from '../../components/IconButton/IconButton';
|
||||
import { Input } from '../../components/Input/Input';
|
||||
import { Stack } from '../../components/Layout/Stack/Stack';
|
||||
import { graphFieldOptions } from '../../components/uPlot/config';
|
||||
import { t } from '../../utils/i18n';
|
||||
|
||||
export const StackingEditor = ({
|
||||
value,
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
import i18next from 'i18next';
|
||||
import { ReactElement } from 'react';
|
||||
import { Trans as I18NextTrans, initReactI18next } from 'react-i18next'; // eslint-disable-line no-restricted-imports
|
||||
|
||||
// We want to translate grafana-ui without introducing any breaking changes for consumers
|
||||
// who use grafana-ui outside of grafana (such as grafana.com self serve). The other struggle
|
||||
// is that grafana-ui does not require a top-level provider component, so we don't get the
|
||||
// chance to do the mandatory i18next setup that <Trans /> and t() requires
|
||||
//
|
||||
// We wrap <Trans /> and t() and do a simple check if it hasn't already been set up
|
||||
// (Grafana will init i18next in app.ts), and just set it up with a minimal config
|
||||
// to use the default phrases in the source jsx.
|
||||
|
||||
// Creates a default, english i18next instance when running outside of grafana.
|
||||
// we don't support changing the locale of grafana ui when outside of Grafana
|
||||
function initI18n() {
|
||||
// resources is undefined by default and set either by grafana app.ts or here
|
||||
if (typeof i18next.options.resources !== 'object') {
|
||||
i18next.use(initReactI18next).init({
|
||||
resources: {},
|
||||
returnEmptyString: false,
|
||||
lng: 'en-US', // this should be the locale of the phrases in our source JSX
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
type I18NextTransType = typeof I18NextTrans;
|
||||
type I18NextTransProps = Parameters<I18NextTransType>[0];
|
||||
|
||||
interface TransProps extends I18NextTransProps {
|
||||
i18nKey: string;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
export const Trans = (props: TransProps): ReactElement => {
|
||||
initI18n();
|
||||
return <I18NextTrans {...props} />;
|
||||
};
|
||||
|
||||
// Reassign t() so i18next-parser doesn't warn on dynamic key, and we can have 'failOnWarnings' enabled
|
||||
const tFunc = i18next.t;
|
||||
|
||||
export const t = (id: string, defaultMessage: string, values?: Record<string, unknown>) => {
|
||||
initI18n();
|
||||
|
||||
return tFunc(id, defaultMessage, values);
|
||||
};
|
||||
Reference in New Issue
Block a user