From e17f676a98bf8c69182b84d83fbf12b955390971 Mon Sep 17 00:00:00 2001 From: Josh Hunt Date: Mon, 22 May 2023 09:59:46 +0100 Subject: [PATCH] NestedFolders: Style tweaks (#68532) * Center align cell items * Change empty folder message + style * Use new Text components in TypeCell * Use new components in Move and Delete modals * fix test * Change spinner in DescendantsCount to the same font size as the text to prevent layout shift --- .../src/components/Spinner/Spinner.tsx | 22 ++++++-------- .../components/AccessControl/Permissions.tsx | 2 ++ .../components/BrowseActions/DeleteModal.tsx | 21 +++++-------- .../BrowseActions/DescendantCount.tsx | 30 +++++++------------ .../components/BrowseActions/MoveModal.tsx | 10 ++++++- .../components/DashboardsTree.test.tsx | 2 +- .../components/DashboardsTree.tsx | 6 ++-- .../browse-dashboards/components/NameCell.tsx | 21 ++++++++----- .../browse-dashboards/components/TypeCell.tsx | 26 +++++----------- 9 files changed, 63 insertions(+), 77 deletions(-) diff --git a/packages/grafana-ui/src/components/Spinner/Spinner.tsx b/packages/grafana-ui/src/components/Spinner/Spinner.tsx index 0267c34f806..acffc8f4997 100644 --- a/packages/grafana-ui/src/components/Spinner/Spinner.tsx +++ b/packages/grafana-ui/src/components/Spinner/Spinner.tsx @@ -4,17 +4,13 @@ import React from 'react'; import { stylesFactory } from '../../themes'; import { Icon } from '../Icon/Icon'; -const getStyles = stylesFactory((size: number, inline: boolean) => { - return { - wrapper: css` - font-size: ${size}px; - ${inline - ? css` - display: inline-block; - ` - : ''} - `, - }; +const getStyles = stylesFactory((size: number | string, inline: boolean) => { + return css([ + { + fontSize: typeof size === 'string' ? size : `${size}px`, + }, + inline && { display: 'inline-block' }, + ]); }); export type Props = { @@ -22,7 +18,7 @@ export type Props = { style?: React.CSSProperties; iconClassName?: string; inline?: boolean; - size?: number; + size?: number | string; }; /** @@ -31,7 +27,7 @@ export type Props = { export const Spinner = ({ className, inline = false, iconClassName, style, size = 16 }: Props) => { const styles = getStyles(size, inline); return ( -
+
); diff --git a/public/app/core/components/AccessControl/Permissions.tsx b/public/app/core/components/AccessControl/Permissions.tsx index e7a01370d97..2a203e0a1f5 100644 --- a/public/app/core/components/AccessControl/Permissions.tsx +++ b/public/app/core/components/AccessControl/Permissions.tsx @@ -3,6 +3,7 @@ import { sortBy } from 'lodash'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; +import { Space } from '@grafana/experimental'; import { config } from '@grafana/runtime'; import { Button, useStyles2 } from '@grafana/ui'; import { SlideDown } from 'app/core/components/Animations/SlideDown'; @@ -143,6 +144,7 @@ export const Permissions = ({ $all: false, }} /> + )} {canSetPermissions && ( diff --git a/public/app/features/browse-dashboards/components/BrowseActions/DeleteModal.tsx b/public/app/features/browse-dashboards/components/BrowseActions/DeleteModal.tsx index 4b43e10bb37..98c52aebf65 100644 --- a/public/app/features/browse-dashboards/components/BrowseActions/DeleteModal.tsx +++ b/public/app/features/browse-dashboards/components/BrowseActions/DeleteModal.tsx @@ -1,8 +1,8 @@ -import { css } from '@emotion/css'; import React from 'react'; -import { GrafanaTheme2 } from '@grafana/data'; -import { ConfirmModal, useStyles2 } from '@grafana/ui'; +import { Space } from '@grafana/experimental'; +import { ConfirmModal } from '@grafana/ui'; +import { P } from '@grafana/ui/src/unstable'; import { DashboardTreeSelection } from '../../types'; @@ -16,8 +16,6 @@ export interface Props { } export const DeleteModal = ({ onConfirm, onDismiss, selectedItems, ...props }: Props) => { - const styles = useStyles2(getStyles); - const onDelete = () => { onConfirm(); onDismiss(); @@ -26,10 +24,11 @@ export const DeleteModal = ({ onConfirm, onDismiss, selectedItems, ...props }: P return ( - This action will delete the following content: + <> +

This action will delete the following content:

-
+ + } confirmationText="Delete" confirmText="Delete" @@ -40,9 +39,3 @@ export const DeleteModal = ({ onConfirm, onDismiss, selectedItems, ...props }: P /> ); }; - -const getStyles = (theme: GrafanaTheme2) => ({ - modalBody: css({ - ...theme.typography.body, - }), -}); diff --git a/public/app/features/browse-dashboards/components/BrowseActions/DescendantCount.tsx b/public/app/features/browse-dashboards/components/BrowseActions/DescendantCount.tsx index 121e466e6bd..e4f256daa05 100644 --- a/public/app/features/browse-dashboards/components/BrowseActions/DescendantCount.tsx +++ b/public/app/features/browse-dashboards/components/BrowseActions/DescendantCount.tsx @@ -1,8 +1,7 @@ -import { css } from '@emotion/css'; import React from 'react'; -import { GrafanaTheme2 } from '@grafana/data'; -import { Alert, Spinner, useStyles2 } from '@grafana/ui'; +import { Alert, Spinner, useTheme2 } from '@grafana/ui'; +import { P } from '@grafana/ui/src/unstable'; import { useGetAffectedItemsQuery } from '../../api/browseDashboardsAPI'; import { DashboardTreeSelection } from '../../types'; @@ -14,24 +13,17 @@ export interface Props { } export const DescendantCount = ({ selectedItems }: Props) => { - const styles = useStyles2(getStyles); + const theme = useTheme2(); const { data, isFetching, isLoading, error } = useGetAffectedItemsQuery(selectedItems); return ( -
- <> - {data && buildBreakdownString(data.folder, data.dashboard, data.libraryPanel, data.alertRule)} - {(isFetching || isLoading) && } - {error && } - -
+ <> + {data && ( +

{buildBreakdownString(data.folder, data.dashboard, data.libraryPanel, data.alertRule)}

+ )} + + {(isFetching || isLoading) && } + {error && } + ); }; - -const getStyles = (theme: GrafanaTheme2) => ({ - breakdown: css({ - ...theme.typography.bodySmall, - color: theme.colors.text.secondary, - marginBottom: theme.spacing(2), - }), -}); diff --git a/public/app/features/browse-dashboards/components/BrowseActions/MoveModal.tsx b/public/app/features/browse-dashboards/components/BrowseActions/MoveModal.tsx index bab0a0a0461..c235b7608a8 100644 --- a/public/app/features/browse-dashboards/components/BrowseActions/MoveModal.tsx +++ b/public/app/features/browse-dashboards/components/BrowseActions/MoveModal.tsx @@ -1,6 +1,8 @@ import React, { useState } from 'react'; +import { Space } from '@grafana/experimental'; import { Alert, Button, Field, Modal } from '@grafana/ui'; +import { P } from '@grafana/ui/src/unstable'; import { FolderPicker } from 'app/core/components/Select/FolderPicker'; import { DashboardTreeSelection } from '../../types'; @@ -28,11 +30,17 @@ export const MoveModal = ({ onConfirm, onDismiss, selectedItems, ...props }: Pro return ( {selectedFolders.length > 0 && } - This action will move the following content: + +

This action will move the following content:

+ + + + setMoveTarget(uid)} /> +