Skip to content

Commit 25779bb

Browse files
authored
Stack: Use the component from grafana/ui (grafana#77543)
* grafana/ui: Move Stack out of unstable * grafana/ui: Replace imports * Replace the import from experimental * Cleanup * Remove invalid prop * Add flexGrow * Remove Stack used in Field * Remove import
1 parent c0d8a71 commit 25779bb

File tree

93 files changed

+317
-335
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+317
-335
lines changed

packages/grafana-ui/src/components/Layout/Stack/Stack.tsx

+14-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { css } from '@emotion/css';
2-
import React from 'react';
2+
import React, { CSSProperties } from 'react';
33

44
import { GrafanaTheme2, ThemeSpacingTokens } from '@grafana/data';
55

@@ -40,11 +40,12 @@ interface StackProps extends Omit<React.HTMLAttributes<HTMLElement>, 'className'
4040
direction?: ResponsiveProp<Direction>;
4141
wrap?: ResponsiveProp<Wrap>;
4242
children?: React.ReactNode;
43+
flexGrow?: ResponsiveProp<CSSProperties['flexGrow']>;
4344
}
4445

4546
export const Stack = React.forwardRef<HTMLDivElement, StackProps>(
46-
({ gap = 1, alignItems, justifyContent, direction, wrap, children, ...rest }, ref) => {
47-
const styles = useStyles2(getStyles, gap, alignItems, justifyContent, direction, wrap);
47+
({ gap = 1, alignItems, justifyContent, direction, wrap, children, flexGrow, ...rest }, ref) => {
48+
const styles = useStyles2(getStyles, gap, alignItems, justifyContent, direction, wrap, flexGrow);
4849

4950
return (
5051
<div ref={ref} className={styles.flex} {...rest}>
@@ -62,28 +63,32 @@ const getStyles = (
6263
alignItems: StackProps['alignItems'],
6364
justifyContent: StackProps['justifyContent'],
6465
direction: StackProps['direction'],
65-
wrap: StackProps['wrap']
66+
wrap: StackProps['wrap'],
67+
flexGrow: StackProps['flexGrow']
6668
) => {
6769
return {
6870
flex: css([
6971
{
7072
display: 'flex',
7173
},
72-
getResponsiveStyle<Direction>(theme, direction, (val) => ({
74+
getResponsiveStyle(theme, direction, (val) => ({
7375
flexDirection: val,
7476
})),
75-
getResponsiveStyle<Wrap>(theme, wrap, (val) => ({
77+
getResponsiveStyle(theme, wrap, (val) => ({
7678
flexWrap: val,
7779
})),
78-
getResponsiveStyle<AlignItems>(theme, alignItems, (val) => ({
80+
getResponsiveStyle(theme, alignItems, (val) => ({
7981
alignItems: val,
8082
})),
81-
getResponsiveStyle<JustifyContent>(theme, justifyContent, (val) => ({
83+
getResponsiveStyle(theme, justifyContent, (val) => ({
8284
justifyContent: val,
8385
})),
84-
getResponsiveStyle<ThemeSpacingTokens>(theme, gap, (val) => ({
86+
getResponsiveStyle(theme, gap, (val) => ({
8587
gap: theme.spacing(val),
8688
})),
89+
getResponsiveStyle(theme, flexGrow, (val) => ({
90+
flexGrow: val,
91+
})),
8792
]),
8893
};
8994
};

public/app/core/components/AccessControl/AddPermission.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import React, { useEffect, useMemo, useState } from 'react';
22

3-
import { Stack } from '@grafana/experimental';
4-
import { Button, Form, Select } from '@grafana/ui';
3+
import { Button, Form, Select, Stack } from '@grafana/ui';
54
import { CloseButton } from 'app/core/components/CloseButton/CloseButton';
65
import { ServiceAccountPicker } from 'app/core/components/Select/ServiceAccountPicker';
76
import { TeamPicker } from 'app/core/components/Select/TeamPicker';

public/app/core/components/QueryOperationRow/QueryOperationRowHeader.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ import React, { MouseEventHandler } from 'react';
33
import { DraggableProvided } from 'react-beautiful-dnd';
44

55
import { GrafanaTheme2 } from '@grafana/data';
6-
import { Stack } from '@grafana/experimental';
7-
import { Icon, IconButton, useStyles2 } from '@grafana/ui';
6+
import { Icon, IconButton, useStyles2, Stack } from '@grafana/ui';
87

98
export interface QueryOperationRowHeaderProps {
109
actionsElement?: React.ReactNode;
@@ -73,7 +72,7 @@ export const QueryOperationRowHeader = ({
7372
{headerElement}
7473
</div>
7574

76-
<Stack gap={1} alignItems="center" wrap={false}>
75+
<Stack gap={1} alignItems="center">
7776
{actionsElement}
7877
{draggable && (
7978
<div onMouseMove={reportDragMousePosition} {...dragHandleProps}>

public/app/features/alerting/unified/AlertsFolderView.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ import React, { useEffect, useState } from 'react';
44
import { useDebounce } from 'react-use';
55

66
import { GrafanaTheme2, SelectableValue } from '@grafana/data';
7-
import { Stack } from '@grafana/experimental';
8-
import { Card, FilterInput, Icon, Pagination, Select, TagList, useStyles2 } from '@grafana/ui';
7+
import { Card, FilterInput, Icon, Pagination, Select, TagList, useStyles2, Stack } from '@grafana/ui';
98
import { DEFAULT_PER_PAGE_PAGINATION } from 'app/core/constants';
109
import { getQueryParamValue } from 'app/core/utils/query';
1110
import { FolderState, useDispatch } from 'app/types';

public/app/features/alerting/unified/GrafanaRuleQueryViewer.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@ import { keyBy, startCase } from 'lodash';
44
import React from 'react';
55

66
import { DataSourceInstanceSettings, GrafanaTheme2, PanelData, RelativeTimeRange } from '@grafana/data';
7-
import { Stack } from '@grafana/experimental';
87
import { config } from '@grafana/runtime';
9-
import { Badge, useStyles2 } from '@grafana/ui';
8+
import { Badge, useStyles2, Stack } from '@grafana/ui';
109
import { mapRelativeTimeRangeToOption } from '@grafana/ui/src/components/DateTimePickers/RelativeTimeRangePicker/utils';
1110

1211
import { AlertQuery } from '../../../types/unified-alerting-dto';

public/app/features/alerting/unified/NotificationPolicies.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ import React, { useEffect, useMemo, useState } from 'react';
44
import { useAsyncFn } from 'react-use';
55

66
import { GrafanaTheme2, UrlQueryMap } from '@grafana/data';
7-
import { Stack } from '@grafana/experimental';
8-
import { Alert, LoadingPlaceholder, Tab, TabContent, TabsBar, useStyles2, withErrorBoundary } from '@grafana/ui';
7+
import { Alert, LoadingPlaceholder, Tab, TabContent, TabsBar, useStyles2, withErrorBoundary, Stack } from '@grafana/ui';
98
import { useQueryParams } from 'app/core/hooks/useQueryParams';
109
import { ObjectMatcher, Route, RouteWithID } from 'app/plugins/datasource/alertmanager/types';
1110
import { useDispatch } from 'app/types';

public/app/features/alerting/unified/RuleList.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react';
33
import { useAsyncFn, useInterval } from 'react-use';
44

55
import { GrafanaTheme2 } from '@grafana/data';
6-
import { Stack } from '@grafana/experimental';
7-
import { Button, useStyles2, withErrorBoundary } from '@grafana/ui';
6+
import { Button, useStyles2, withErrorBoundary, Stack } from '@grafana/ui';
87
import { useQueryParams } from 'app/core/hooks/useQueryParams';
98
import { useDispatch } from 'app/types';
109

public/app/features/alerting/unified/components/HoverCard.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ import classnames from 'classnames';
44
import React, { ReactElement, ReactNode, useRef } from 'react';
55

66
import { GrafanaTheme2 } from '@grafana/data';
7-
import { Stack } from '@grafana/experimental';
8-
import { Popover as GrafanaPopover, PopoverController, useStyles2 } from '@grafana/ui';
7+
import { Popover as GrafanaPopover, PopoverController, useStyles2, Stack } from '@grafana/ui';
98

109
export interface HoverCardProps {
1110
children: ReactElement;

public/app/features/alerting/unified/components/Label.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ import React, { ReactNode } from 'react';
33
import tinycolor2 from 'tinycolor2';
44

55
import { GrafanaTheme2, IconName } from '@grafana/data';
6-
import { Stack } from '@grafana/experimental';
7-
import { Icon, useStyles2 } from '@grafana/ui';
6+
import { Icon, useStyles2, Stack } from '@grafana/ui';
87

98
export type LabelSize = 'md' | 'sm';
109

@@ -22,7 +21,7 @@ const Label = ({ label, value, icon, color, size = 'md' }: Props) => {
2221

2322
return (
2423
<div className={styles.wrapper} role="listitem">
25-
<Stack direction="row" gap={0} alignItems="stretch" wrap={false}>
24+
<Stack direction="row" gap={0} alignItems="stretch">
2625
<div className={styles.label}>
2726
<Stack direction="row" gap={0.5} alignItems="center">
2827
{icon && <Icon name={icon} />} {label ?? ''}

public/app/features/alerting/unified/components/MetaText.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import { css, cx } from '@emotion/css';
22
import React, { ComponentProps, HTMLAttributes } from 'react';
33

4-
import { Stack } from '@grafana/experimental';
5-
import { Icon, IconName, useStyles2, Text } from '@grafana/ui';
4+
import { Icon, IconName, useStyles2, Text, Stack } from '@grafana/ui';
65

76
interface Props extends HTMLAttributes<HTMLDivElement> {
87
icon?: IconName;
@@ -22,7 +21,7 @@ const MetaText = ({ children, icon, color = 'secondary', ...rest }: Props) => {
2221
{...rest}
2322
>
2423
<Text variant="bodySmall" color={color}>
25-
<Stack direction="row" alignItems="center" gap={0.5}>
24+
<Stack direction="row" alignItems="center" gap={0.5} wrap={'wrap'}>
2625
{icon && <Icon size="sm" name={icon} />}
2726
{children}
2827
</Stack>

public/app/features/alerting/unified/components/MoreButton.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import React, { forwardRef, Ref } from 'react';
22

3-
import { Stack } from '@grafana/experimental';
4-
import { Button, ButtonProps, Icon } from '@grafana/ui';
3+
import { Button, ButtonProps, Icon, Stack } from '@grafana/ui';
54

65
const MoreButton = forwardRef(function MoreButton(props: ButtonProps, ref: Ref<HTMLButtonElement>) {
76
return (

public/app/features/alerting/unified/components/alert-groups/AlertGroup.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ import { css } from '@emotion/css';
22
import React, { useState } from 'react';
33

44
import { GrafanaTheme2 } from '@grafana/data';
5-
import { Stack } from '@grafana/experimental';
6-
import { useStyles2 } from '@grafana/ui';
5+
import { useStyles2, Stack } from '@grafana/ui';
76
import { AlertmanagerGroup, AlertState } from 'app/plugins/datasource/alertmanager/types';
87

98
import { AlertLabels } from '../AlertLabels';

public/app/features/alerting/unified/components/alert-groups/MatcherFilter.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ import { debounce } from 'lodash';
33
import React, { FormEvent, useEffect, useMemo } from 'react';
44

55
import { GrafanaTheme2 } from '@grafana/data';
6-
import { Stack } from '@grafana/experimental';
7-
import { Label, Tooltip, Input, Icon, useStyles2 } from '@grafana/ui';
6+
import { Label, Tooltip, Input, Icon, useStyles2, Stack } from '@grafana/ui';
87

98
import { logInfo, LogMessages } from '../../Analytics';
109

public/app/features/alerting/unified/components/contact-points/ContactPoints.v2.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import { Link } from 'react-router-dom';
77
import { useToggle } from 'react-use';
88

99
import { dateTime, GrafanaTheme2 } from '@grafana/data';
10-
import { Stack } from '@grafana/experimental';
1110
import {
1211
Alert,
1312
Dropdown,
@@ -23,6 +22,7 @@ import {
2322
Tab,
2423
Pagination,
2524
Button,
25+
Stack,
2626
} from '@grafana/ui';
2727
import ConditionalWrap from 'app/features/alerting/components/ConditionalWrap';
2828
import { receiverTypeNames } from 'app/plugins/datasource/alertmanager/consts';

public/app/features/alerting/unified/components/expressions/Expression.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ import { uniqueId } from 'lodash';
33
import React, { FC, useCallback, useState } from 'react';
44

55
import { DataFrame, dateTimeFormat, GrafanaTheme2, isTimeSeriesFrames, LoadingState, PanelData } from '@grafana/data';
6-
import { Stack } from '@grafana/experimental';
7-
import { AutoSizeInput, Button, clearButtonStyles, IconButton, useStyles2 } from '@grafana/ui';
6+
import { AutoSizeInput, Button, clearButtonStyles, IconButton, useStyles2, Stack } from '@grafana/ui';
87
import { ClassicConditions } from 'app/features/expressions/components/ClassicConditions';
98
import { Math } from 'app/features/expressions/components/Math';
109
import { Reduce } from 'app/features/expressions/components/Reduce';
@@ -288,7 +287,7 @@ const Header: FC<HeaderProps> = ({
288287
return (
289288
<header className={styles.header.wrapper}>
290289
<Stack direction="row" gap={0.5} alignItems="center">
291-
<Stack direction="row" gap={1} alignItems="center" wrap={false}>
290+
<Stack direction="row" gap={1} alignItems="center">
292291
{!editingRefId && (
293292
<button type="button" className={cx(clearButton, styles.editable)} onClick={() => setEditMode('refId')}>
294293
<div className={styles.expression.refId}>{refId}</div>

public/app/features/alerting/unified/components/mute-timings/MuteTimingTimeInterval.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ import React, { useEffect, useState } from 'react';
44
import { useFieldArray, useFormContext } from 'react-hook-form';
55

66
import { GrafanaTheme2 } from '@grafana/data';
7-
import { Stack } from '@grafana/experimental';
8-
import { Button, Field, FieldSet, Icon, Input, useStyles2 } from '@grafana/ui';
7+
import { Button, Field, FieldSet, Icon, Input, useStyles2, Stack } from '@grafana/ui';
98

109
import { MuteTimingFields } from '../../types/mute-timing-form';
1110
import { DAYS_OF_THE_WEEK, defaultTimeInterval, MONTHS, validateArrayField } from '../../utils/mute-timings';

public/app/features/alerting/unified/components/mute-timings/MuteTimingsTable.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ import { css } from '@emotion/css';
22
import React, { useMemo, useState } from 'react';
33

44
import { GrafanaTheme2 } from '@grafana/data';
5-
import { Stack } from '@grafana/experimental';
6-
import { IconButton, LinkButton, Link, useStyles2, ConfirmModal } from '@grafana/ui';
5+
import { IconButton, LinkButton, Link, useStyles2, ConfirmModal, Stack } from '@grafana/ui';
76
import { MuteTimeInterval } from 'app/plugins/datasource/alertmanager/types';
87
import { useDispatch } from 'app/types/store';
98

public/app/features/alerting/unified/components/notification-policies/AlertGroupsSummary.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import pluralize from 'pluralize';
22
import React, { Fragment } from 'react';
33

4-
import { Stack } from '@grafana/experimental';
5-
import { Badge } from '@grafana/ui';
4+
import { Badge, Stack } from '@grafana/ui';
65

76
interface Props {
87
active?: number;

public/app/features/alerting/unified/components/notification-policies/ContactPointSelector.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import React from 'react';
22

33
import { SelectableValue } from '@grafana/data';
4-
import { Stack } from '@grafana/experimental';
5-
import { Select, SelectCommonProps, Text } from '@grafana/ui';
4+
import { Select, SelectCommonProps, Text, Stack } from '@grafana/ui';
65

76
import {
87
RECEIVER_META_KEY,
@@ -36,7 +35,7 @@ interface ReceiversProps {
3635

3736
const ReceiversSummary = ({ receivers }: ReceiversProps) => {
3837
return (
39-
<Stack direction="row" wrap={false}>
38+
<Stack direction="row">
4039
{receivers.map((receiver, index) => (
4140
<Stack key={receiver.uid ?? index} direction="row" gap={0.5}>
4241
{receiver[RECEIVER_PLUGIN_META_KEY]?.icon && (

public/app/features/alerting/unified/components/notification-policies/EditNotificationPolicyForm.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { css } from '@emotion/css';
22
import React, { ReactNode, useState } from 'react';
33

44
import { GrafanaTheme2 } from '@grafana/data';
5-
import { Stack } from '@grafana/experimental';
65
import {
76
Button,
87
Field,
@@ -17,6 +16,7 @@ import {
1716
useStyles2,
1817
Badge,
1918
FieldValidationMessage,
19+
Stack,
2020
} from '@grafana/ui';
2121
import { MatcherOperator, RouteWithID } from 'app/plugins/datasource/alertmanager/types';
2222

public/app/features/alerting/unified/components/notification-policies/Filters.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ import { debounce } from 'lodash';
33
import React, { useCallback, useEffect, useRef } from 'react';
44

55
import { SelectableValue } from '@grafana/data';
6-
import { Stack } from '@grafana/experimental';
7-
import { Button, Field, Icon, Input, Label as LabelElement, Select, Tooltip, useStyles2 } from '@grafana/ui';
6+
import { Button, Field, Icon, Input, Label as LabelElement, Select, Tooltip, useStyles2, Stack } from '@grafana/ui';
87
import { ObjectMatcher, Receiver, RouteWithID } from 'app/plugins/datasource/alertmanager/types';
98

109
import { useURLSearchParams } from '../../hooks/useURLSearchParams';

public/app/features/alerting/unified/components/notification-policies/Matchers.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ import { take, takeRight, uniqueId } from 'lodash';
33
import React, { FC } from 'react';
44

55
import { GrafanaTheme2 } from '@grafana/data';
6-
import { Stack } from '@grafana/experimental';
7-
import { getTagColorsFromName, useStyles2 } from '@grafana/ui';
6+
import { getTagColorsFromName, useStyles2, Stack } from '@grafana/ui';
87
import { ObjectMatcher } from 'app/plugins/datasource/alertmanager/types';
98

109
import { HoverCard } from '../HoverCard';
@@ -23,7 +22,7 @@ const Matchers: FC<MatchersProps> = ({ matchers }) => {
2322

2423
return (
2524
<span data-testid="label-matchers">
26-
<Stack direction="row" gap={1} alignItems="center">
25+
<Stack direction="row" gap={1} alignItems="center" wrap={'wrap'}>
2726
{firstFew.map((matcher) => (
2827
<MatcherBadge key={uniqueId()} matcher={matcher} />
2928
))}

public/app/features/alerting/unified/components/notification-policies/Modals.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import { groupBy } from 'lodash';
22
import React, { FC, useCallback, useMemo, useState } from 'react';
33

4-
import { Stack } from '@grafana/experimental';
5-
import { Button, Icon, Modal, ModalProps, Spinner } from '@grafana/ui';
4+
import { Button, Icon, Modal, ModalProps, Spinner, Stack } from '@grafana/ui';
65
import {
76
AlertmanagerGroup,
87
AlertState,
@@ -239,7 +238,7 @@ const useAlertGroupsModal = (): [
239238
closeOnBackdropClick={true}
240239
closeOnEscape={true}
241240
title={
242-
<Stack direction="row" alignItems="center" gap={1} flexGrow={1}>
241+
<Stack direction="row" alignItems="center" gap={1} wrap={'wrap'}>
243242
<Stack direction="row" alignItems="center" gap={0.5}>
244243
<Icon name="x" /> Matchers
245244
</Stack>

public/app/features/alerting/unified/components/notification-policies/Policy.tsx

+12-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,18 @@ import { Link } from 'react-router-dom';
66
import { useToggle } from 'react-use';
77

88
import { GrafanaTheme2 } from '@grafana/data';
9-
import { Stack } from '@grafana/experimental';
10-
import { Badge, Button, Dropdown, getTagColorsFromName, Icon, Menu, Text, Tooltip, useStyles2 } from '@grafana/ui';
9+
import {
10+
Badge,
11+
Button,
12+
Dropdown,
13+
Icon,
14+
Menu,
15+
Stack,
16+
Text,
17+
Tooltip,
18+
getTagColorsFromName,
19+
useStyles2,
20+
} from '@grafana/ui';
1121
import ConditionalWrap from 'app/features/alerting/components/ConditionalWrap';
1222
import { AlertmanagerGroup, ObjectMatcher, Receiver, RouteWithID } from 'app/plugins/datasource/alertmanager/types';
1323
import { ReceiversState } from 'app/types';

public/app/features/alerting/unified/components/receivers/ReceiversAndTemplatesView.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import React from 'react';
22

3-
import { Stack } from '@grafana/experimental';
4-
import { Alert, LinkButton } from '@grafana/ui';
3+
import { Alert, LinkButton, Stack } from '@grafana/ui';
54
import { AlertManagerCortexConfig } from 'app/plugins/datasource/alertmanager/types';
65

76
import { AlertmanagerAction, useAlertmanagerAbility } from '../../hooks/useAbilities';

public/app/features/alerting/unified/components/receivers/ReceiversSection.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ import { Link } from 'react-router-dom';
44
import { useToggle } from 'react-use';
55

66
import { GrafanaTheme2 } from '@grafana/data';
7-
import { Stack } from '@grafana/experimental';
8-
import { Button, Dropdown, Icon, Menu, MenuItem, useStyles2 } from '@grafana/ui';
7+
import { Button, Dropdown, Icon, Menu, MenuItem, useStyles2, Stack } from '@grafana/ui';
98

109
import { GrafanaReceiversExporter } from '../export/GrafanaReceiversExporter';
1110

0 commit comments

Comments
 (0)