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')} -