diff --git a/packages/console/src/assets/images/clear.svg b/packages/console/src/assets/images/clear.svg
new file mode 100644
index 000000000..f935ea9ec
--- /dev/null
+++ b/packages/console/src/assets/images/clear.svg
@@ -0,0 +1,7 @@
+
diff --git a/packages/console/src/components/IconButton/index.tsx b/packages/console/src/components/IconButton/index.tsx
index 60dc4e313..14113cde2 100644
--- a/packages/console/src/components/IconButton/index.tsx
+++ b/packages/console/src/components/IconButton/index.tsx
@@ -1,18 +1,49 @@
+import { AdminConsoleKey } from '@logto/phrases';
+import { Nullable } from '@silverhand/essentials';
import classNames from 'classnames';
-import { HTMLProps } from 'react';
+import { ForwardedRef, forwardRef, HTMLProps, useImperativeHandle, useRef } from 'react';
+import { useTranslation } from 'react-i18next';
+import Tooltip from '../Tooltip';
import * as styles from './index.module.scss';
export type Props = Omit, 'size' | 'type'> & {
size?: 'small' | 'medium' | 'large';
+ tooltip?: AdminConsoleKey;
};
-const IconButton = ({ size = 'medium', children, className, ...rest }: Props) => {
+const IconButton = (
+ { size = 'medium', children, className, tooltip, ...rest }: Props,
+ reference: ForwardedRef
+) => {
+ const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' });
+ const innerReference = useRef(null);
+
+ useImperativeHandle, Nullable>(
+ reference,
+ () => innerReference.current
+ );
+
return (
-
+ <>
+
+ {tooltip && (
+
+ )}
+ >
);
};
-export default IconButton;
+export default forwardRef(IconButton);
diff --git a/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageDetails.module.scss b/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageDetails.module.scss
index 30cb7797d..4850f904a 100644
--- a/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageDetails.module.scss
+++ b/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageDetails.module.scss
@@ -71,9 +71,7 @@
}
.clearButton {
- display: flex;
- margin-left: _.unit(2);
- flex-direction: row-reverse;
+ margin-left: _.unit(1);
}
.sectionTitle {
diff --git a/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageDetails.tsx b/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageDetails.tsx
index 5bff12a29..4832797b9 100644
--- a/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageDetails.tsx
+++ b/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageDetails.tsx
@@ -10,6 +10,7 @@ import { toast } from 'react-hot-toast';
import { useTranslation } from 'react-i18next';
import useSWR, { useSWRConfig } from 'swr';
+import Clear from '@/assets/images/clear.svg';
import Delete from '@/assets/images/delete.svg';
import Button from '@/components/Button';
import ConfirmModal from '@/components/ConfirmModal';
@@ -158,6 +159,7 @@ const LanguageDetails = () => {
{!isBuiltIn && (
{
setIsDeletionAlertOpen(true);
}}
@@ -183,11 +185,9 @@ const LanguageDetails = () => {
{t('sign_in_exp.others.manage_language.custom_values')}
- }
+ tooltip="sign_in_exp.others.manage_language.clear_all"
onClick={() => {
for (const [key, value] of Object.entries(
flattenTranslation(emptyUiTranslation)
@@ -195,7 +195,9 @@ const LanguageDetails = () => {
setValue(key, value, { shouldDirty: true });
}
}}
- />
+ >
+
+
|