diff options
| author | Oliver <oliver@mohlin.dev> | 2025-10-07 07:26:21 +0200 |
|---|---|---|
| committer | Tobias Järvelöv <tobias.jarvelov@mullvad.net> | 2025-10-10 13:38:06 +0200 |
| commit | 2f150d373fbba9555891a647d57812166330d6a6 (patch) | |
| tree | 2dd806f11cbebe6adbf33498c036a73d2c9db11d /desktop | |
| parent | cfd0a4e1528c3dc9cc573fc0a1cb6f571c0ac32f (diff) | |
| download | mullvadvpn-2f150d373fbba9555891a647d57812166330d6a6.tar.xz mullvadvpn-2f150d373fbba9555891a647d57812166330d6a6.zip | |
Refactor device list item remove button into separate component
Diffstat (limited to 'desktop')
4 files changed, 32 insertions, 18 deletions
diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/device-list-item/DeviceListItem.tsx b/desktop/packages/mullvad-vpn/src/renderer/components/device-list-item/DeviceListItem.tsx index 93186de4a5..bfb834fd5a 100644 --- a/desktop/packages/mullvad-vpn/src/renderer/components/device-list-item/DeviceListItem.tsx +++ b/desktop/packages/mullvad-vpn/src/renderer/components/device-list-item/DeviceListItem.tsx @@ -4,13 +4,13 @@ import styled, { css } from 'styled-components'; import { IDevice } from '../../../shared/daemon-rpc-types'; import { messages } from '../../../shared/gettext'; import { capitalizeEveryWord } from '../../../shared/string-helpers'; -import { IconButton, Text } from '../../lib/components'; +import { Text } from '../../lib/components'; import { FlexColumn } from '../../lib/components/flex-column'; import { ListItem, ListItemProps } from '../../lib/components/list-item'; import { spacings } from '../../lib/foundations'; import { useBoolean } from '../../lib/utility-hooks'; import { DeviceListItemProvider, useDeviceListItemContext } from './'; -import { ConfirmDialog, ErrorDialog } from './components'; +import { ConfirmDialog, ErrorDialog, RemoveButton } from './components'; import { useIsCurrentDevice } from './hooks'; export type SettingsToggleListItemProps = { @@ -31,8 +31,7 @@ const StyledListItem = styled(ListItem)<{ $isCurrentDevice: boolean }>( ); function DeviceListItemInner({ ...props }: Omit<SettingsToggleListItemProps, 'device'>) { - const { device, deleting, showConfirmDialog, confirmDialogVisible, error } = - useDeviceListItemContext(); + const { device, deleting, confirmDialogVisible, error } = useDeviceListItemContext(); const isCurrentDevice = useIsCurrentDevice(); const deviceName = capitalizeEveryWord(device.name); const createdDate = device.created.toISOString().split('T')[0]; @@ -65,20 +64,7 @@ function DeviceListItemInner({ ...props }: Omit<SettingsToggleListItemProps, 'de } </Text> ) : ( - <IconButton - variant="secondary" - onClick={showConfirmDialog} - disabled={deleting} - aria-label={sprintf( - // TRANSLATORS: Button action description provided to accessibility tools such as screen - // TRANSLATORS: readers. - // TRANSLATORS: Available placeholders: - // TRANSLATORS: %(deviceName)s - The device name to remove. - messages.pgettext('accessibility', 'Remove device named %(deviceName)s'), - { deviceName: device.name }, - )}> - <IconButton.Icon icon="cross-circle" /> - </IconButton> + <RemoveButton /> )} </ListItem.Group> </ListItem.Content> diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/device-list-item/components/index.ts b/desktop/packages/mullvad-vpn/src/renderer/components/device-list-item/components/index.ts index 27e8a9ffe6..75769df7f5 100644 --- a/desktop/packages/mullvad-vpn/src/renderer/components/device-list-item/components/index.ts +++ b/desktop/packages/mullvad-vpn/src/renderer/components/device-list-item/components/index.ts @@ -1,2 +1,3 @@ export * from './confirm-dialog'; +export * from './remove-button'; export * from './error-dialog'; diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/device-list-item/components/remove-button/RemoveButton.tsx b/desktop/packages/mullvad-vpn/src/renderer/components/device-list-item/components/remove-button/RemoveButton.tsx new file mode 100644 index 0000000000..2e551c6a2d --- /dev/null +++ b/desktop/packages/mullvad-vpn/src/renderer/components/device-list-item/components/remove-button/RemoveButton.tsx @@ -0,0 +1,26 @@ +import { sprintf } from 'sprintf-js'; + +import { messages } from '../../../../../shared/gettext'; +import { IconButton } from '../../../../lib/components'; +import { useDeviceListItemContext } from '../..'; + +export function RemoveButton() { + const { device, deleting, showConfirmDialog } = useDeviceListItemContext(); + + return ( + <IconButton + variant="secondary" + onClick={showConfirmDialog} + disabled={deleting} + aria-label={sprintf( + // TRANSLATORS: Button action description provided to accessibility tools such as screen + // TRANSLATORS: readers. + // TRANSLATORS: Available placeholders: + // TRANSLATORS: %(deviceName)s - The device name to remove. + messages.pgettext('accessibility', 'Remove device named %(deviceName)s'), + { deviceName: device.name }, + )}> + <IconButton.Icon icon="cross-circle" /> + </IconButton> + ); +} diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/device-list-item/components/remove-button/index.ts b/desktop/packages/mullvad-vpn/src/renderer/components/device-list-item/components/remove-button/index.ts new file mode 100644 index 0000000000..38a9e24aac --- /dev/null +++ b/desktop/packages/mullvad-vpn/src/renderer/components/device-list-item/components/remove-button/index.ts @@ -0,0 +1 @@ +export * from './RemoveButton'; |
