From 319c7aa33a9b41c02e3eae838ece9c8c7d526f83 Mon Sep 17 00:00:00 2001 From: Aine Date: Tue, 20 May 2025 12:16:40 +0300 Subject: [PATCH] In-App Docs: tooltips --- src/components/DeleteRoomButton.tsx | 36 +++---- src/components/DeleteUserButton.tsx | 36 +++---- src/components/DeviceRemoveButton.tsx | 33 ++++--- src/components/ExperimentalFeatures.tsx | 11 ++- src/components/media.tsx | 125 +++++++++++++++--------- 5 files changed, 144 insertions(+), 97 deletions(-) diff --git a/src/components/DeleteRoomButton.tsx b/src/components/DeleteRoomButton.tsx index 346d08f..f73d9bf 100644 --- a/src/components/DeleteRoomButton.tsx +++ b/src/components/DeleteRoomButton.tsx @@ -1,7 +1,7 @@ import ActionCheck from "@mui/icons-material/CheckCircle"; import ActionDelete from "@mui/icons-material/Delete"; import AlertError from "@mui/icons-material/ErrorOutline"; -import { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from "@mui/material"; +import { Button, Tooltip, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from "@mui/material"; import { Fragment, useState } from "react"; import { SimpleForm, @@ -63,22 +63,24 @@ const DeleteRoomButton: React.FC = props => { return ( - + + + {translate(props.confirmTitle)} diff --git a/src/components/DeleteUserButton.tsx b/src/components/DeleteUserButton.tsx index a58ee89..dceed59 100644 --- a/src/components/DeleteUserButton.tsx +++ b/src/components/DeleteUserButton.tsx @@ -1,7 +1,7 @@ import ActionCheck from "@mui/icons-material/CheckCircle"; import ActionDelete from "@mui/icons-material/Delete"; import AlertError from "@mui/icons-material/ErrorOutline"; -import { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from "@mui/material"; +import { Tooltip, Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from "@mui/material"; import { Fragment, useState } from "react"; import { SimpleForm, @@ -69,22 +69,24 @@ const DeleteUserButton: React.FC = props => { return ( - + + + {translate(props.confirmTitle)} diff --git a/src/components/DeviceRemoveButton.tsx b/src/components/DeviceRemoveButton.tsx index daa613f..6e2f863 100644 --- a/src/components/DeviceRemoveButton.tsx +++ b/src/components/DeviceRemoveButton.tsx @@ -1,8 +1,11 @@ +import { Tooltip } from "@mui/material"; import { DeleteWithConfirmButton, DeleteWithConfirmButtonProps, useRecordContext } from "react-admin"; +import { useTranslate } from "react-admin"; import { isASManaged } from "../utils/mxid"; export const DeviceRemoveButton = (props: DeleteWithConfirmButtonProps) => { + const translate = useTranslate(); const record = useRecordContext(); if (!record) return null; @@ -12,19 +15,23 @@ export const DeviceRemoveButton = (props: DeleteWithConfirmButtonProps) => { } return ( - + + + ); }; diff --git a/src/components/ExperimentalFeatures.tsx b/src/components/ExperimentalFeatures.tsx index ab086bd..5bc9f5d 100644 --- a/src/components/ExperimentalFeatures.tsx +++ b/src/components/ExperimentalFeatures.tsx @@ -1,8 +1,6 @@ -import { Stack, Switch, Typography } from "@mui/material"; +import { Tooltip, Stack, Switch, Typography } from "@mui/material"; import { useState, useEffect } from "react"; -import { useRecordContext } from "react-admin"; -import { useNotify } from "react-admin"; -import { useDataProvider } from "react-admin"; +import { useRecordContext, useTranslate, useNotify, useDataProvider } from "react-admin"; import { ExperimentalFeaturesModel, SynapseDataProvider } from "../synapse/dataProvider"; @@ -15,6 +13,7 @@ const ExperimentalFeatureRow = (props: { featureValue: boolean; updateFeature: (feature_name: string, feature_value: boolean) => void; }) => { + const translate = useTranslate(); const featureKey = props.featureKey; const featureValue = props.featureValue; const featureDescription = experimentalFeaturesMap[featureKey] ?? ""; @@ -34,7 +33,9 @@ const ExperimentalFeatureRow = (props: { padding: 2, }} > - + + + { const DeleteMediaToolbar = (props: ToolbarProps) => ( - } /> - + + } /> + + + + ); @@ -63,9 +67,20 @@ const DeleteMediaDialog = ({ open, onClose, onSubmit }) => { {translate("delete_media.helper.send")} } onSubmit={onSubmit}> - - - + + + + + + + + + @@ -76,6 +91,7 @@ export const DeleteMediaButton = (props: ButtonProps) => { const theme = useTheme(); const [open, setOpen] = useState(false); const notify = useNotify(); + const translate = useTranslate(); const dataProvider = useDataProvider(); const { mutate: deleteMedia, isPending } = useMutation({ mutationFn: (values: DeleteMediaParams) => dataProvider.deleteMedia(values), @@ -95,24 +111,26 @@ export const DeleteMediaButton = (props: ButtonProps) => { return ( <> - + }} + > + + + ); @@ -123,10 +141,14 @@ const PurgeRemoteMediaDialog = ({ open, onClose, onSubmit }) => { const PurgeRemoteMediaToolbar = (props: ToolbarProps) => ( - } /> - + + } /> + + + + ); @@ -152,6 +174,7 @@ export const PurgeRemoteMediaButton = (props: ButtonProps) => { const theme = useTheme(); const [open, setOpen] = useState(false); const notify = useNotify(); + const translate = useTranslate(); const dataProvider = useDataProvider(); const { mutate: purgeRemoteMedia, isPending } = useMutation({ mutationFn: (values: DeleteMediaParams) => dataProvider.purgeRemoteMedia(values), @@ -171,22 +194,24 @@ export const PurgeRemoteMediaButton = (props: ButtonProps) => { return ( <> - + }} + > + + + ); @@ -462,6 +487,7 @@ export const ViewMediaButton = ({ mxcURL, label, uploadName, mimetype }) => { }; export const MediaIDField = ({ source }) => { + const translate = useTranslate(); const record = useRecordContext(); if (!record) { return null; @@ -484,10 +510,15 @@ export const MediaIDField = ({ source }) => { mxcURL = `mxc://${homeserver}/${mediaID}`; } - return ; + return ( + + + + ); }; export const ReportMediaContent = ({ source }) => { + const translate = useTranslate(); const record = useRecordContext(); if (!record) { return null; @@ -503,5 +534,9 @@ export const ReportMediaContent = ({ source }) => { uploadName = decodeURLComponent(get(record, "event_json.content.body")?.toString()); } - return ; + return ( + + + + ); };