diff --git a/invokeai/frontend/web/src/app/components/AppErrorBoundaryFallback.tsx b/invokeai/frontend/web/src/app/components/AppErrorBoundaryFallback.tsx
index b20a8148e2..3ec5e364d3 100644
--- a/invokeai/frontend/web/src/app/components/AppErrorBoundaryFallback.tsx
+++ b/invokeai/frontend/web/src/app/components/AppErrorBoundaryFallback.tsx
@@ -65,10 +65,10 @@ const AppErrorBoundaryFallback = ({ error, resetErrorBoundary }: Props) => {
- } onClick={resetErrorBoundary}>
+ } onPointerUp={resetErrorBoundary}>
{t('accessibility.resetUI')}
- } onClick={handleCopy}>
+ } onPointerUp={handleCopy}>
{t('common.copyError')}
diff --git a/invokeai/frontend/web/src/common/components/ColorPicker/RgbColorPicker.tsx b/invokeai/frontend/web/src/common/components/ColorPicker/RgbColorPicker.tsx
index 1361039b75..dd8d86462d 100644
--- a/invokeai/frontend/web/src/common/components/ColorPicker/RgbColorPicker.tsx
+++ b/invokeai/frontend/web/src/common/components/ColorPicker/RgbColorPicker.tsx
@@ -98,8 +98,8 @@ const RgbColorPicker = (props: Props) => {
export default memo(RgbColorPicker);
const ColorSwatch = ({ color, onChange }: { color: RgbColor; onChange: (color: RgbColor) => void }) => {
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
onChange(color);
}, [color, onChange]);
- return ;
+ return ;
};
diff --git a/invokeai/frontend/web/src/common/components/ColorPicker/RgbaColorPicker.tsx b/invokeai/frontend/web/src/common/components/ColorPicker/RgbaColorPicker.tsx
index fb3b1da2a0..a83831f5a9 100644
--- a/invokeai/frontend/web/src/common/components/ColorPicker/RgbaColorPicker.tsx
+++ b/invokeai/frontend/web/src/common/components/ColorPicker/RgbaColorPicker.tsx
@@ -109,8 +109,8 @@ const RgbaColorPicker = (props: Props) => {
export default memo(RgbaColorPicker);
const ColorSwatch = ({ color, onChange }: { color: RgbaColor; onChange: (color: RgbaColor) => void }) => {
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
onChange(color);
}, [color, onChange]);
- return ;
+ return ;
};
diff --git a/invokeai/frontend/web/src/common/components/IAIDndImage.tsx b/invokeai/frontend/web/src/common/components/IAIDndImage.tsx
index f4b85736c5..6522a6b9a5 100644
--- a/invokeai/frontend/web/src/common/components/IAIDndImage.tsx
+++ b/invokeai/frontend/web/src/common/components/IAIDndImage.tsx
@@ -55,7 +55,7 @@ type IAIDndImageProps = FlexProps & {
imageDTO: ImageDTO | undefined;
onError?: (event: SyntheticEvent) => void;
onLoad?: (event: SyntheticEvent) => void;
- onClick?: (event: MouseEvent) => void;
+ onPointerUp?: (event: MouseEvent) => void;
withMetadataOverlay?: boolean;
isDragDisabled?: boolean;
isDropDisabled?: boolean;
@@ -82,7 +82,7 @@ const IAIDndImage = (props: IAIDndImageProps) => {
const {
imageDTO,
onError,
- onClick,
+ onPointerUp,
withMetadataOverlay = false,
isDropDisabled = false,
isDragDisabled = false,
@@ -228,7 +228,7 @@ const IAIDndImage = (props: IAIDndImageProps) => {
)}
diff --git a/invokeai/frontend/web/src/common/components/IAIDndImageIcon.tsx b/invokeai/frontend/web/src/common/components/IAIDndImageIcon.tsx
index 8c24c2be55..42814fc904 100644
--- a/invokeai/frontend/web/src/common/components/IAIDndImageIcon.tsx
+++ b/invokeai/frontend/web/src/common/components/IAIDndImageIcon.tsx
@@ -16,17 +16,17 @@ const sx: SystemStyleObject = {
},
};
-type Props = Omit & {
- onClick: (event: MouseEvent) => void;
+type Props = Omit & {
+ onPointerUp: (event: MouseEvent) => void;
tooltip: string;
};
const IAIDndImageIcon = (props: Props) => {
- const { onClick, tooltip, icon, ...rest } = props;
+ const { onPointerUp, tooltip, icon, ...rest } = props;
return (
{
[feature, t]
);
- const onClickLearnMore = useCallback(() => {
+ const onPointerUpLearnMore = useCallback(() => {
if (!data?.href) {
return;
}
window.open(data.href);
}, [data?.href]);
- const onClickDontShowMeThese = useCallback(() => {
+ const onPointerUpDontShowMeThese = useCallback(() => {
dispatch(setShouldEnableInformationalPopovers(false));
toast({
title: t('settings.informationalPopoversDisabled'),
@@ -135,13 +135,13 @@ const Content = ({ data, feature, hideDisable }: ContentProps) => {
{!hideDisable && (
-
)}
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/CanvasAddEntityButtons.tsx b/invokeai/frontend/web/src/features/controlLayers/components/CanvasAddEntityButtons.tsx
index 861ff3636f..7cccf3433a 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/CanvasAddEntityButtons.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/CanvasAddEntityButtons.tsx
@@ -33,7 +33,7 @@ export const CanvasAddEntityButtons = memo(() => {
variant="ghost"
justifyContent="flex-start"
leftIcon={}
- onClick={addGlobalReferenceImage}
+ onPointerUp={addGlobalReferenceImage}
isDisabled={isFLUX}
>
{t('controlLayers.globalReferenceImage')}
@@ -46,7 +46,7 @@ export const CanvasAddEntityButtons = memo(() => {
variant="ghost"
justifyContent="flex-start"
leftIcon={}
- onClick={addInpaintMask}
+ onPointerUp={addInpaintMask}
>
{t('controlLayers.inpaintMask')}
@@ -55,7 +55,7 @@ export const CanvasAddEntityButtons = memo(() => {
variant="ghost"
justifyContent="flex-start"
leftIcon={}
- onClick={addRegionalGuidance}
+ onPointerUp={addRegionalGuidance}
isDisabled={isFLUX}
>
{t('controlLayers.regionalGuidance')}
@@ -65,7 +65,7 @@ export const CanvasAddEntityButtons = memo(() => {
variant="ghost"
justifyContent="flex-start"
leftIcon={}
- onClick={addRegionalReferenceImage}
+ onPointerUp={addRegionalReferenceImage}
isDisabled={isFLUX}
>
{t('controlLayers.regionalReferenceImage')}
@@ -79,7 +79,7 @@ export const CanvasAddEntityButtons = memo(() => {
variant="ghost"
justifyContent="flex-start"
leftIcon={}
- onClick={addControlLayer}
+ onPointerUp={addControlLayer}
isDisabled={isFLUX}
>
{t('controlLayers.controlLayer')}
@@ -89,7 +89,7 @@ export const CanvasAddEntityButtons = memo(() => {
variant="ghost"
justifyContent="flex-start"
leftIcon={}
- onClick={addRasterLayer}
+ onPointerUp={addRasterLayer}
>
{t('controlLayers.rasterLayer')}
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/CanvasAlerts/CanvasAlertsSendingTo.tsx b/invokeai/frontend/web/src/features/controlLayers/components/CanvasAlerts/CanvasAlertsSendingTo.tsx
index 67df7ee3a1..7291e8f847 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/CanvasAlerts/CanvasAlertsSendingTo.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/CanvasAlerts/CanvasAlertsSendingTo.tsx
@@ -17,12 +17,12 @@ import { Trans, useTranslation } from 'react-i18next';
const ActivateImageViewerButton = (props: PropsWithChildren) => {
const imageViewer = useImageViewer();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
imageViewer.open();
selectCanvasRightPanelGalleryTab();
}, [imageViewer]);
return (
-
+
{props.children}
);
@@ -58,13 +58,13 @@ export const CanvasAlertsSendingToGallery = () => {
const ActivateCanvasButton = (props: PropsWithChildren) => {
const dispatch = useAppDispatch();
const imageViewer = useImageViewer();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
dispatch(setActiveTab('canvas'));
selectCanvasRightPanelLayersTab();
imageViewer.close();
}, [dispatch, imageViewer]);
return (
-
+
{props.children}
);
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/CanvasContextMenu/CanvasContextMenuGlobalMenuItems.tsx b/invokeai/frontend/web/src/features/controlLayers/components/CanvasContextMenu/CanvasContextMenuGlobalMenuItems.tsx
index c66257320c..1280b886f2 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/CanvasContextMenu/CanvasContextMenuGlobalMenuItems.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/CanvasContextMenu/CanvasContextMenuGlobalMenuItems.tsx
@@ -30,24 +30,24 @@ export const CanvasContextMenuGlobalMenuItems = memo(() => {
- } isDisabled={isBusy} onClick={saveCanvasToGallery}>
+ } isDisabled={isBusy} onPointerUp={saveCanvasToGallery}>
{t('controlLayers.canvasContextMenu.saveCanvasToGallery')}
- } isDisabled={isBusy} onClick={saveBboxToGallery}>
+ } isDisabled={isBusy} onPointerUp={saveBboxToGallery}>
{t('controlLayers.canvasContextMenu.saveBboxToGallery')}
- } isDisabled={isBusy} onClick={newGlobalReferenceImageFromBbox}>
+ } isDisabled={isBusy} onPointerUp={newGlobalReferenceImageFromBbox}>
{t('controlLayers.canvasContextMenu.newGlobalReferenceImage')}
- } isDisabled={isBusy} onClick={newRegionalReferenceImageFromBbox}>
+ } isDisabled={isBusy} onPointerUp={newRegionalReferenceImageFromBbox}>
{t('controlLayers.canvasContextMenu.newRegionalReferenceImage')}
- } isDisabled={isBusy} onClick={newControlLayerFromBbox}>
+ } isDisabled={isBusy} onPointerUp={newControlLayerFromBbox}>
{t('controlLayers.canvasContextMenu.newControlLayer')}
- } isDisabled={isBusy} onClick={newRasterLayerFromBbox}>
+ } isDisabled={isBusy} onPointerUp={newRasterLayerFromBbox}>
{t('controlLayers.canvasContextMenu.newRasterLayer')}
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/CanvasContextMenu/CanvasContextMenuItemsCropCanvasToBbox.tsx b/invokeai/frontend/web/src/features/controlLayers/components/CanvasContextMenu/CanvasContextMenuItemsCropCanvasToBbox.tsx
index 5f034ed797..e8bbd39a6b 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/CanvasContextMenu/CanvasContextMenuItemsCropCanvasToBbox.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/CanvasContextMenu/CanvasContextMenuItemsCropCanvasToBbox.tsx
@@ -17,7 +17,7 @@ export const CanvasContextMenuItemsCropCanvasToBbox = memo(() => {
}, [canvasManager]);
return (
- } isDisabled={isBusy} onClick={cropCanvasToBbox}>
+ } isDisabled={isBusy} onPointerUp={cropCanvasToBbox}>
{t('controlLayers.canvasContextMenu.cropCanvasToBbox')}
);
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListGlobalActionBarAddLayerMenu.tsx b/invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListGlobalActionBarAddLayerMenu.tsx
index a98773e7f4..091f29a08a 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListGlobalActionBarAddLayerMenu.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListGlobalActionBarAddLayerMenu.tsx
@@ -40,26 +40,26 @@ export const EntityListGlobalActionBarAddLayerMenu = memo(() => {
/>
- } onClick={addGlobalReferenceImage} isDisabled={isFLUX}>
+ } onPointerUp={addGlobalReferenceImage} isDisabled={isFLUX}>
{t('controlLayers.globalReferenceImage')}
- } onClick={addInpaintMask}>
+ } onPointerUp={addInpaintMask}>
{t('controlLayers.inpaintMask')}
- } onClick={addRegionalGuidance} isDisabled={isFLUX}>
+ } onPointerUp={addRegionalGuidance} isDisabled={isFLUX}>
{t('controlLayers.regionalGuidance')}
- } onClick={addRegionalReferenceImage} isDisabled={isFLUX}>
+ } onPointerUp={addRegionalReferenceImage} isDisabled={isFLUX}>
{t('controlLayers.regionalReferenceImage')}
- } onClick={addControlLayer} isDisabled={isFLUX}>
+ } onPointerUp={addControlLayer} isDisabled={isFLUX}>
{t('controlLayers.controlLayer')}
- } onClick={addRasterLayer}>
+ } onPointerUp={addRasterLayer}>
{t('controlLayers.rasterLayer')}
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBarDuplicateButton.tsx b/invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBarDuplicateButton.tsx
index 977d027b99..a9368ba7d8 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBarDuplicateButton.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBarDuplicateButton.tsx
@@ -12,7 +12,7 @@ export const EntityListSelectedEntityActionBarDuplicateButton = memo(() => {
const dispatch = useAppDispatch();
const isBusy = useCanvasIsBusy();
const selectedEntityIdentifier = useAppSelector(selectSelectedEntityIdentifier);
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
if (!selectedEntityIdentifier) {
return;
}
@@ -21,7 +21,7 @@ export const EntityListSelectedEntityActionBarDuplicateButton = memo(() => {
return (
{
return (
{
const selectedEntityIdentifier = useAppSelector(selectSelectedEntityIdentifier);
const adapter = useEntityAdapterSafe(selectedEntityIdentifier);
const saveLayerToAssets = useSaveLayerToAssets();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
saveLayerToAssets(adapter);
}, [saveLayerToAssets, adapter]);
@@ -29,7 +29,7 @@ export const EntityListSelectedEntityActionBarSaveToAssetsButton = memo(() => {
return (
{
return (
{
const { t } = useTranslation();
const tabIndex = useStore($canvasRightPanelTabIndex);
const imageViewer = useImageViewer();
- const onClickViewerToggleButton = useCallback(() => {
+ const onPointerUpViewerToggleButton = useCallback(() => {
if ($canvasRightPanelTabIndex.get() !== 1) {
$canvasRightPanelTabIndex.set(1);
}
@@ -38,7 +38,7 @@ export const CanvasRightPanel = memo(() => {
-
+
{imageViewer.isOpen ? t('gallery.closeViewer') : t('gallery.openViewer')}
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/ControlLayer/ControlLayerControlAdapter.tsx b/invokeai/frontend/web/src/features/controlLayers/components/ControlLayer/ControlLayerControlAdapter.tsx
index 4d324f6599..f2a06d55a3 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/ControlLayer/ControlLayerControlAdapter.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/ControlLayer/ControlLayerControlAdapter.tsx
@@ -84,7 +84,7 @@ export const ControlLayerControlAdapter = memo(() => {
{
icon={}
/>
{
}, [dispatch, entityIdentifier]);
return (
- } isDisabled={!isInteractable}>
+ } isDisabled={!isInteractable}>
{t('controlLayers.convertToRasterLayer')}
);
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/ControlLayer/ControlLayerMenuItemsTransparencyEffect.tsx b/invokeai/frontend/web/src/features/controlLayers/components/ControlLayer/ControlLayerMenuItemsTransparencyEffect.tsx
index 2875774d75..3e25988c15 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/ControlLayer/ControlLayerMenuItemsTransparencyEffect.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/ControlLayer/ControlLayerMenuItemsTransparencyEffect.tsx
@@ -28,7 +28,7 @@ export const ControlLayerMenuItemsTransparencyEffect = memo(() => {
}, [dispatch, entityIdentifier]);
return (
- } isDisabled={!isInteractable}>
+ } isDisabled={!isInteractable}>
{withTransparencyEffect
? t('controlLayers.disableTransparencyEffect')
: t('controlLayers.enableTransparencyEffect')}
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/Filters/Filter.tsx b/invokeai/frontend/web/src/features/controlLayers/components/Filters/Filter.tsx
index 484fdfd9e9..a1bde92693 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/Filters/Filter.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/Filters/Filter.tsx
@@ -109,7 +109,7 @@ const FilterContent = memo(
}
- onClick={adapter.filterer.processImmediate}
+ onPointerUp={adapter.filterer.processImmediate}
isLoading={isProcessing}
loadingText={t('controlLayers.filter.process')}
isDisabled={!isValid || autoProcessFilter}
@@ -119,7 +119,7 @@ const FilterContent = memo(
}
- onClick={adapter.filterer.reset}
+ onPointerUp={adapter.filterer.reset}
isLoading={isProcessing}
loadingText={t('controlLayers.filter.reset')}
variant="ghost"
@@ -129,7 +129,7 @@ const FilterContent = memo(
}
- onClick={adapter.filterer.apply}
+ onPointerUp={adapter.filterer.apply}
isLoading={isProcessing}
loadingText={t('controlLayers.filter.apply')}
isDisabled={!isValid || !hasProcessed}
@@ -139,7 +139,7 @@ const FilterContent = memo(
}
- onClick={adapter.filterer.cancel}
+ onPointerUp={adapter.filterer.cancel}
loadingText={t('controlLayers.filter.cancel')}
>
{t('controlLayers.filter.cancel')}
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/IPAdapter/IPAdapterImagePreview.tsx b/invokeai/frontend/web/src/features/controlLayers/components/IPAdapter/IPAdapterImagePreview.tsx
index b310b06589..a00791336a 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/IPAdapter/IPAdapterImagePreview.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/IPAdapter/IPAdapterImagePreview.tsx
@@ -60,7 +60,7 @@ export const IPAdapterImagePreview = memo(({ image, onChangeImage, droppableData
{controlImage && (
}
tooltip={t('common.reset')}
/>
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/IPAdapter/IPAdapterSettings.tsx b/invokeai/frontend/web/src/features/controlLayers/components/IPAdapter/IPAdapterSettings.tsx
index 32209af39c..662b05ea36 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/IPAdapter/IPAdapterSettings.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/IPAdapter/IPAdapterSettings.tsx
@@ -103,7 +103,7 @@ export const IPAdapterSettings = memo(() => {
/>
{
const defaultControlAdapter = useAppSelector(selectDefaultControlAdapter);
const isInteractable = useIsEntityInteractable(entityIdentifier);
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
dispatch(
rasterLayerConvertedToControlLayer({
entityIdentifier,
@@ -27,7 +27,7 @@ export const RasterLayerMenuItemsConvertRasterToControl = memo(() => {
}, [defaultControlAdapter, dispatch, entityIdentifier]);
return (
- } isDisabled={!isInteractable}>
+ } isDisabled={!isInteractable}>
{t('controlLayers.convertToControlLayer')}
);
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/RegionalGuidance/RegionalGuidanceAddPromptsIPAdapterButtons.tsx b/invokeai/frontend/web/src/features/controlLayers/components/RegionalGuidance/RegionalGuidanceAddPromptsIPAdapterButtons.tsx
index 059135b507..5841ea2ce5 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/RegionalGuidance/RegionalGuidanceAddPromptsIPAdapterButtons.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/RegionalGuidance/RegionalGuidanceAddPromptsIPAdapterButtons.tsx
@@ -30,7 +30,7 @@ export const RegionalGuidanceAddPromptsIPAdapterButtons = () => {
size="sm"
variant="ghost"
leftIcon={}
- onClick={addRegionalGuidancePositivePrompt}
+ onPointerUp={addRegionalGuidancePositivePrompt}
isDisabled={!validActions.canAddPositivePrompt}
>
{t('controlLayers.prompt')}
@@ -39,12 +39,12 @@ export const RegionalGuidanceAddPromptsIPAdapterButtons = () => {
size="sm"
variant="ghost"
leftIcon={}
- onClick={addRegionalGuidanceNegativePrompt}
+ onPointerUp={addRegionalGuidanceNegativePrompt}
isDisabled={!validActions.canAddNegativePrompt}
>
{t('controlLayers.negativePrompt')}
- } onClick={addRegionalGuidanceIPAdapter}>
+ } onPointerUp={addRegionalGuidanceIPAdapter}>
{t('controlLayers.referenceImage')}
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/RegionalGuidance/RegionalGuidanceDeletePromptButton.tsx b/invokeai/frontend/web/src/features/controlLayers/components/RegionalGuidance/RegionalGuidanceDeletePromptButton.tsx
index 2fc7483756..182382082f 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/RegionalGuidance/RegionalGuidanceDeletePromptButton.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/RegionalGuidance/RegionalGuidanceDeletePromptButton.tsx
@@ -15,7 +15,7 @@ export const RegionalGuidanceDeletePromptButton = memo(({ onDelete }: Props) =>
variant="link"
aria-label={t('controlLayers.deletePrompt')}
icon={}
- onClick={onDelete}
+ onPointerUp={onDelete}
flexGrow={0}
size="sm"
p={0}
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/RegionalGuidance/RegionalGuidanceIPAdapterSettings.tsx b/invokeai/frontend/web/src/features/controlLayers/components/RegionalGuidance/RegionalGuidanceIPAdapterSettings.tsx
index e6c6f292a3..f946d0c2de 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/RegionalGuidance/RegionalGuidanceIPAdapterSettings.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/RegionalGuidance/RegionalGuidanceIPAdapterSettings.tsx
@@ -120,7 +120,7 @@ export const RegionalGuidanceIPAdapterSettings = memo(({ referenceImageId }: Pro
icon={}
tooltip={t('controlLayers.deleteReferenceImage')}
aria-label={t('controlLayers.deleteReferenceImage')}
- onClick={onDeleteIPAdapter}
+ onPointerUp={onDeleteIPAdapter}
colorScheme="error"
/>
@@ -135,7 +135,7 @@ export const RegionalGuidanceIPAdapterSettings = memo(({ referenceImageId }: Pro
/>
{
return (
<>
-
}
>
{t('controlLayers.moveBackward')}
}
>
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsCopyToClipboard.tsx b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsCopyToClipboard.tsx
index 9d9882399b..79e52b97e7 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsCopyToClipboard.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsCopyToClipboard.tsx
@@ -14,12 +14,12 @@ export const CanvasEntityMenuItemsCopyToClipboard = memo(() => {
const isInteractable = useIsEntityInteractable(entityIdentifier);
const copyLayerToClipboard = useCopyLayerToClipboard();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
copyLayerToClipboard(adapter);
}, [copyLayerToClipboard, adapter]);
return (
- } isDisabled={!isInteractable}>
+ } isDisabled={!isInteractable}>
{t('controlLayers.copyToClipboard')}
);
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsCropToBbox.tsx b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsCropToBbox.tsx
index 4842553109..e9a4907343 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsCropToBbox.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsCropToBbox.tsx
@@ -11,7 +11,7 @@ export const CanvasEntityMenuItemsCropToBbox = memo(() => {
const entityIdentifier = useEntityIdentifierContext();
const adapter = useEntityAdapterSafe(entityIdentifier);
const isInteractable = useIsEntityInteractable(entityIdentifier);
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
if (!adapter) {
return;
}
@@ -19,7 +19,7 @@ export const CanvasEntityMenuItemsCropToBbox = memo(() => {
}, [adapter]);
return (
- } isDisabled={!isInteractable}>
+ } isDisabled={!isInteractable}>
{t('controlLayers.cropLayerToBbox')}
);
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsDelete.tsx b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsDelete.tsx
index 5e65990b5b..e3a14945c8 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsDelete.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsDelete.tsx
@@ -18,7 +18,7 @@ export const CanvasEntityMenuItemsDelete = memo(() => {
}, [dispatch, entityIdentifier]);
return (
- } isDestructive isDisabled={!isInteractable}>
+ } isDestructive isDisabled={!isInteractable}>
{t('common.delete')}
);
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsDuplicate.tsx b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsDuplicate.tsx
index 053087a3dc..d38ba30314 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsDuplicate.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsDuplicate.tsx
@@ -13,12 +13,12 @@ export const CanvasEntityMenuItemsDuplicate = memo(() => {
const entityIdentifier = useEntityIdentifierContext();
const isInteractable = useIsEntityInteractable(entityIdentifier);
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
dispatch(entityDuplicated({ entityIdentifier }));
}, [dispatch, entityIdentifier]);
return (
- } isDisabled={!isInteractable}>
+ } isDisabled={!isInteractable}>
{t('controlLayers.duplicate')}
);
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsFilter.tsx b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsFilter.tsx
index 9e361c0911..cb04804fcf 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsFilter.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsFilter.tsx
@@ -11,7 +11,7 @@ export const CanvasEntityMenuItemsFilter = memo(() => {
const filter = useEntityFilter(entityIdentifier);
return (
- } isDisabled={filter.isDisabled}>
+ } isDisabled={filter.isDisabled}>
{t('controlLayers.filter.filter')}
);
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsSave.tsx b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsSave.tsx
index 9aa3134de8..78aa93fdf5 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsSave.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsSave.tsx
@@ -13,12 +13,12 @@ export const CanvasEntityMenuItemsSave = memo(() => {
const adapter = useEntityAdapterSafe(entityIdentifier);
const isInteractable = useIsEntityInteractable(entityIdentifier);
const saveLayerToAssets = useSaveLayerToAssets();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
saveLayerToAssets(adapter);
}, [saveLayerToAssets, adapter]);
return (
- } isDisabled={!isInteractable}>
+ } isDisabled={!isInteractable}>
{t('controlLayers.saveLayerToAssets')}
);
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsTransform.tsx b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsTransform.tsx
index 187099a4eb..4479d823cd 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsTransform.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsTransform.tsx
@@ -11,7 +11,7 @@ export const CanvasEntityMenuItemsTransform = memo(() => {
const transform = useEntityTransform(entityIdentifier);
return (
- } isDisabled={transform.isDisabled}>
+ } isDisabled={transform.isDisabled}>
{t('controlLayers.transform.transform')}
);
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMergeVisibleButton.tsx b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMergeVisibleButton.tsx
index 1457cef836..0e98977883 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMergeVisibleButton.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMergeVisibleButton.tsx
@@ -26,7 +26,7 @@ export const CanvasEntityMergeVisibleButton = memo(({ type }: Props) => {
const canvasManager = useCanvasManager();
const isBusy = useCanvasIsBusy();
const entityCount = useEntityTypeCount(type);
- const onClick = useCallback(async () => {
+ const onPointerUp = useCallback(async () => {
if (type === 'raster_layer') {
const rect = canvasManager.stage.getVisibleRect('raster_layer');
const result = await withResultAsync(() =>
@@ -83,7 +83,7 @@ export const CanvasEntityMergeVisibleButton = memo(({ type }: Props) => {
tooltip={t('controlLayers.mergeVisible')}
variant="link"
icon={}
- onClick={onClick}
+ onPointerUp={onPointerUp}
alignSelf="stretch"
isDisabled={entityCount <= 1 || isBusy}
/>
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityTypeIsHiddenToggle.tsx b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityTypeIsHiddenToggle.tsx
index de8e1eb315..744a5d945a 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityTypeIsHiddenToggle.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityTypeIsHiddenToggle.tsx
@@ -18,7 +18,7 @@ export const CanvasEntityTypeIsHiddenToggle = memo(({ type }: Props) => {
const dispatch = useAppDispatch();
const isHidden = useEntityTypeIsHidden(type);
const typeString = useEntityTypeString(type, true);
- const onClick = useCallback(
+ const onPointerUp = useCallback(
(e) => {
e.stopPropagation();
dispatch(allEntitiesOfTypeIsHiddenToggled({ type }));
@@ -33,7 +33,7 @@ export const CanvasEntityTypeIsHiddenToggle = memo(({ type }: Props) => {
tooltip={t(isHidden ? 'controlLayers.hidingType' : 'controlLayers.showingType', { type: typeString })}
variant="link"
icon={isHidden ? : }
- onClick={onClick}
+ onPointerUp={onPointerUp}
alignSelf="stretch"
/>
);
diff --git a/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageButton.tsx b/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageButton.tsx
index ff790f82c6..c702dd4788 100644
--- a/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageButton.tsx
+++ b/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageButton.tsx
@@ -9,11 +9,11 @@ import { PiTrashSimpleBold } from 'react-icons/pi';
import { $isConnected } from 'services/events/stores';
type DeleteImageButtonProps = Omit & {
- onClick: () => void;
+ onPointerUp: () => void;
};
export const DeleteImageButton = memo((props: DeleteImageButtonProps) => {
- const { onClick, isDisabled } = props;
+ const { onPointerUp, isDisabled } = props;
const { t } = useTranslation();
const isConnected = useStore($isConnected);
const imageSelectionLength = useAppSelector(selectSelectionCount);
@@ -21,7 +21,7 @@ export const DeleteImageButton = memo((props: DeleteImageButtonProps) => {
return (
}
tooltip={labelMessage}
aria-label={labelMessage}
diff --git a/invokeai/frontend/web/src/features/dynamicPrompts/components/ShowDynamicPromptsPreviewButton.tsx b/invokeai/frontend/web/src/features/dynamicPrompts/components/ShowDynamicPromptsPreviewButton.tsx
index 1a23f0d375..02e04d292f 100644
--- a/invokeai/frontend/web/src/features/dynamicPrompts/components/ShowDynamicPromptsPreviewButton.tsx
+++ b/invokeai/frontend/web/src/features/dynamicPrompts/components/ShowDynamicPromptsPreviewButton.tsx
@@ -28,7 +28,7 @@ export const ShowDynamicPromptsPreviewButton = memo(() => {
isDisabled={isOpen}
aria-label={t('dynamicPrompts.showDynamicPrompts')}
icon={}
- onClick={onOpen}
+ onPointerUp={onOpen}
sx={isLoading ? loadingStyles : undefined}
colorScheme={isError && !isLoading ? 'error' : 'base'}
/>
diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardContextMenu.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardContextMenu.tsx
index 5b4e6236b1..1067be2035 100644
--- a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardContextMenu.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardContextMenu.tsx
@@ -75,29 +75,29 @@ const BoardContextMenu = ({ board, children }: Props) => {
{!autoAssignBoardOnClick && (
- } isDisabled={isSelectedForAutoAdd} onClick={handleSetAutoAdd}>
+ } isDisabled={isSelectedForAutoAdd} onPointerUp={handleSetAutoAdd}>
{isSelectedForAutoAdd ? t('boards.selectedForAutoAdd') : t('boards.menuItemAutoAdd')}
)}
{isBulkDownloadEnabled && (
- } onClickCapture={handleBulkDownload}>
+ } onPointerUpCapture={handleBulkDownload}>
{t('boards.downloadBoard')}
)}
{board.archived && (
- } onClick={handleUnarchive}>
+ } onPointerUp={handleUnarchive}>
{t('boards.unarchiveBoard')}
)}
{!board.archived && (
- } onClick={handleArchive}>
+ } onPointerUp={handleArchive}>
{t('boards.archiveBoard')}
)}
- } onClick={setAsBoardToDelete} isDestructive>
+ } onPointerUp={setAsBoardToDelete} isDestructive>
{t('boards.deleteBoard')}
diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/AddBoardButton.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/AddBoardButton.tsx
index 6a9e51cb74..7666fa0ea8 100644
--- a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/AddBoardButton.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/AddBoardButton.tsx
@@ -42,7 +42,7 @@ const AddBoardButton = ({ isPrivateBoard }: Props) => {
isLoading={isLoading}
tooltip={label}
aria-label={label}
- onClick={handleCreateBoard}
+ onPointerUp={handleCreateBoard}
size="md"
data-testid="add-board-button"
variant="link"
diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/BoardsList.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/BoardsList.tsx
index 0a325d3737..b5f4978495 100644
--- a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/BoardsList.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/BoardsList.tsx
@@ -84,7 +84,7 @@ export const BoardsList = ({ isPrivate }: Props) => {
bg="base.900"
>
{allowPrivateBoards ? (
-
+
{
{boardSearchText && boardSearchText.length && (
{
const [localBoardName, setLocalBoardName] = useState(board.board_name);
const onStartEditingRef = useRef(undefined);
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
if (selectedBoardId !== board.board_id) {
dispatch(boardIdSelected({ boardId: board.board_id }));
}
@@ -123,7 +123,7 @@ const GalleryBoard = ({ board, isSelected }: GalleryBoardProps) => {
{
const JankEditableHijack = memo((props: { onStartEditingRef: MutableRefObject }) => {
const editableControls = useEditableControls();
useEffect(() => {
- props.onStartEditingRef.current = editableControls.getEditButtonProps().onClick;
+ props.onStartEditingRef.current = editableControls.getEditButtonProps().onPointerUp;
}, [props, editableControls]);
return null;
});
diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/NoBoardBoard.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/NoBoardBoard.tsx
index 2c8b8caa4e..20099ad218 100644
--- a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/NoBoardBoard.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/NoBoardBoard.tsx
@@ -64,7 +64,7 @@ const NoBoardBoard = memo(({ isSelected }: Props) => {
{
-
+
{t('boards.cancel')}
-
+
{t('boards.deleteBoardOnly')}
-
+
{t('boards.deleteBoardAndImages')}
diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/NoBoardBoardContextMenu.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/NoBoardBoardContextMenu.tsx
index 2f130430a4..8c9b2ce62a 100644
--- a/invokeai/frontend/web/src/features/gallery/components/Boards/NoBoardBoardContextMenu.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/Boards/NoBoardBoardContextMenu.tsx
@@ -38,12 +38,12 @@ const NoBoardBoardContextMenu = ({ children }: Props) => {
{!autoAssignBoardOnClick && (
- } isDisabled={isSelectedForAutoAdd} onClick={handleSetAutoAdd}>
+ } isDisabled={isSelectedForAutoAdd} onPointerUp={handleSetAutoAdd}>
{isSelectedForAutoAdd ? t('boards.selectedForAutoAdd') : t('boards.menuItemAutoAdd')}
)}
{isBulkDownloadEnabled && (
- } onClickCapture={handleBulkDownload}>
+ } onPointerUpCapture={handleBulkDownload}>
{t('boards.downloadBoard')}
)}
diff --git a/invokeai/frontend/web/src/features/gallery/components/Gallery.tsx b/invokeai/frontend/web/src/features/gallery/components/Gallery.tsx
index 0ef57047ed..2419615727 100644
--- a/invokeai/frontend/web/src/features/gallery/components/Gallery.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/Gallery.tsx
@@ -74,17 +74,17 @@ export const Gallery = () => {
{boardName}
-
+
{t('parameters.images')}
-
+
{t('gallery.assets')}
}
diff --git a/invokeai/frontend/web/src/features/gallery/components/GalleryPanelContent.tsx b/invokeai/frontend/web/src/features/gallery/components/GalleryPanelContent.tsx
index bd29d1f174..1f5bf604fc 100644
--- a/invokeai/frontend/web/src/features/gallery/components/GalleryPanelContent.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/GalleryPanelContent.tsx
@@ -56,7 +56,7 @@ const GalleryPanelContent = () => {
: }
>
{boardsListPanel.isCollapsed ? t('boards.viewBoards') : t('boards.hideBoards')}
@@ -69,7 +69,7 @@ const GalleryPanelContent = () => {
size="sm"
variant="link"
alignSelf="stretch"
- onClick={handleClickBoardSearch}
+ onPointerUp={handleClickBoardSearch}
tooltip={
boardSearchDisclosure.isOpen ? `${t('gallery.exitBoardSearch')}` : `${t('gallery.displayBoardSearch')}`
}
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemChangeBoard.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemChangeBoard.tsx
index 200b08b4c2..f566ca9b7d 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemChangeBoard.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemChangeBoard.tsx
@@ -11,13 +11,13 @@ export const ImageMenuItemChangeBoard = memo(() => {
const dispatch = useAppDispatch();
const imageDTO = useImageDTOContext();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
dispatch(imagesToChangeSelected([imageDTO]));
dispatch(isModalOpenChanged(true));
}, [dispatch, imageDTO]);
return (
- } onClickCapture={onClick}>
+ } onPointerUpCapture={onPointerUp}>
{t('boards.changeBoard')}
);
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemCopy.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemCopy.tsx
index a30efc6099..1809d16093 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemCopy.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemCopy.tsx
@@ -10,7 +10,7 @@ export const ImageMenuItemCopy = memo(() => {
const imageDTO = useImageDTOContext();
const { isClipboardAPIAvailable, copyImageToClipboard } = useCopyImageToClipboard();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
copyImageToClipboard(imageDTO.image_url);
}, [copyImageToClipboard, imageDTO.image_url]);
@@ -23,7 +23,7 @@ export const ImageMenuItemCopy = memo(() => {
icon={}
aria-label={t('parameters.copyImage')}
tooltip={t('parameters.copyImage')}
- onClickCapture={onClick}
+ onPointerUpCapture={onPointerUp}
variant="ghost"
colorScheme="base"
/>
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemDelete.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemDelete.tsx
index afcc8bf71c..150248f764 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemDelete.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemDelete.tsx
@@ -11,14 +11,14 @@ export const ImageMenuItemDelete = memo(() => {
const dispatch = useAppDispatch();
const imageDTO = useImageDTOContext();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
dispatch(imagesToDeleteSelected([imageDTO]));
}, [dispatch, imageDTO]);
return (
}
- onClickCapture={onClick}
+ onPointerUpCapture={onPointerUp}
aria-label={t('gallery.deleteImage', { count: 1 })}
tooltip={t('gallery.deleteImage', { count: 1 })}
variant="ghost"
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemDownload.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemDownload.tsx
index 687cc330c0..5a1a8d9a99 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemDownload.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemDownload.tsx
@@ -10,7 +10,7 @@ export const ImageMenuItemDownload = memo(() => {
const imageDTO = useImageDTOContext();
const { downloadImage } = useDownloadImage();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
downloadImage(imageDTO.image_url, imageDTO.image_name);
}, [downloadImage, imageDTO.image_name, imageDTO.image_url]);
@@ -21,7 +21,7 @@ export const ImageMenuItemDownload = memo(() => {
tooltip={t('parameters.downloadImage')}
variant="ghost"
colorScheme="base"
- onClick={onClick}
+ onPointerUp={onPointerUp}
/>
);
});
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemLoadWorkflow.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemLoadWorkflow.tsx
index 1aab80b21d..9254e30561 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemLoadWorkflow.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemLoadWorkflow.tsx
@@ -14,14 +14,14 @@ export const ImageMenuItemLoadWorkflow = memo(() => {
const [getAndLoadEmbeddedWorkflow, { isLoading }] = useGetAndLoadEmbeddedWorkflow();
const hasTemplates = useStore($hasTemplates);
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
getAndLoadEmbeddedWorkflow(imageDTO.image_name);
}, [getAndLoadEmbeddedWorkflow, imageDTO.image_name]);
return (
: }
- onClickCapture={onClick}
+ onPointerUpCapture={onPointerUp}
isDisabled={!imageDTO.has_workflow || !hasTemplates}
>
{t('nodes.loadWorkflow')}
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemMetadataRecallActions.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemMetadataRecallActions.tsx
index 0d1b1a84c5..cdd752cc17 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemMetadataRecallActions.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemMetadataRecallActions.tsx
@@ -20,19 +20,19 @@ export const ImageMenuItemMetadataRecallActions = memo(() => {
return (
<>
- } onClickCapture={remix} isDisabled={!hasMetadata}>
+ } onPointerUpCapture={remix} isDisabled={!hasMetadata}>
{t('parameters.remixImage')}
- } onClickCapture={recallPrompts} isDisabled={!hasPrompts}>
+ } onPointerUpCapture={recallPrompts} isDisabled={!hasPrompts}>
{t('parameters.usePrompt')}
- } onClickCapture={recallSeed} isDisabled={!hasSeed}>
+ } onPointerUpCapture={recallSeed} isDisabled={!hasSeed}>
{t('parameters.useSeed')}
- } onClickCapture={recallAll} isDisabled={!hasMetadata}>
+ } onPointerUpCapture={recallAll} isDisabled={!hasMetadata}>
{t('parameters.useAll')}
- } onClickCapture={createAsPreset} isDisabled={!hasPrompts}>
+ } onPointerUpCapture={createAsPreset} isDisabled={!hasPrompts}>
{t('stylePresets.useForTemplate')}
>
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemNewCanvasFromImage.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemNewCanvasFromImage.tsx
index 39279c870e..18838f233f 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemNewCanvasFromImage.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemNewCanvasFromImage.tsx
@@ -41,7 +41,7 @@ export const ImageMenuItemNewCanvasFromImage = memo(() => {
}, [bboxRect.x, bboxRect.y, dispatch, imageDTO, imageViewer, t]);
return (
- } onClickCapture={handleSendToCanvas}>
+ } onPointerUpCapture={handleSendToCanvas}>
{t('controlLayers.newCanvasFromImage')}
);
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemNewLayerFromImage.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemNewLayerFromImage.tsx
index 8594db8b50..86476654f0 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemNewLayerFromImage.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemNewLayerFromImage.tsx
@@ -41,7 +41,7 @@ export const ImageMenuItemNewLayerFromImage = memo(() => {
}, [bboxRect.x, bboxRect.y, dispatch, imageDTO, imageViewer, t]);
return (
- } onClickCapture={handleSendToCanvas}>
+ } onPointerUpCapture={handleSendToCanvas}>
{t('controlLayers.newLayerFromImage')}
);
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemOpenInNewTab.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemOpenInNewTab.tsx
index c06525499f..ad4e1021df 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemOpenInNewTab.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemOpenInNewTab.tsx
@@ -7,13 +7,13 @@ import { PiArrowSquareOutBold } from 'react-icons/pi';
export const ImageMenuItemOpenInNewTab = memo(() => {
const { t } = useTranslation();
const imageDTO = useImageDTOContext();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
window.open(imageDTO.image_url, '_blank');
}, [imageDTO.image_url]);
return (
}
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemOpenInViewer.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemOpenInViewer.tsx
index b8a86082f9..a4a5dd47f9 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemOpenInViewer.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemOpenInViewer.tsx
@@ -9,14 +9,14 @@ export const ImageMenuItemOpenInViewer = memo(() => {
const { t } = useTranslation();
const imageDTO = useImageDTOContext();
const imageViewer = useImageViewer();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
imageViewer.openImageInViewer(imageDTO);
}, [imageDTO, imageViewer]);
return (
}
- onClick={onClick}
+ onPointerUp={onPointerUp}
aria-label={t('common.openInViewer')}
tooltip={t('common.openInViewer')}
variant="ghost"
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemSelectForCompare.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemSelectForCompare.tsx
index 08ca424ad7..c7186f3265 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemSelectForCompare.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemSelectForCompare.tsx
@@ -17,7 +17,7 @@ export const ImageMenuItemSelectForCompare = memo(() => {
);
const maySelectForCompare = useAppSelector(selectMaySelectForCompare);
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
dispatch(imageToCompareChanged(imageDTO));
}, [dispatch, imageDTO]);
@@ -25,7 +25,7 @@ export const ImageMenuItemSelectForCompare = memo(() => {
}
isDisabled={!maySelectForCompare}
- onClick={onClick}
+ onPointerUp={onPointerUp}
aria-label={t('gallery.selectForCompare')}
tooltip={t('gallery.selectForCompare')}
variant="ghost"
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemSendToUpscale.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemSendToUpscale.tsx
index 13c2287bf5..f2a7cb2161 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemSendToUpscale.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemSendToUpscale.tsx
@@ -24,7 +24,7 @@ export const ImageMenuItemSendToUpscale = memo(() => {
}, [dispatch, imageDTO, t]);
return (
- } onClickCapture={handleSendToCanvas} id="send-to-upscale">
+ } onPointerUpCapture={handleSendToCanvas} id="send-to-upscale">
{t('parameters.sendToUpscale')}
);
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemStarUnstar.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemStarUnstar.tsx
index a82e8ed2a8..ff01bfa5be 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemStarUnstar.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemStarUnstar.tsx
@@ -28,14 +28,14 @@ export const ImageMenuItemStarUnstar = memo(() => {
if (imageDTO.starred) {
return (
- } onClickCapture={unstarImage}>
+ } onPointerUpCapture={unstarImage}>
{customStarUi ? customStarUi.off.text : t('gallery.unstarImage')}
);
}
return (
- } onClickCapture={starImage}>
+ } onPointerUpCapture={starImage}>
{customStarUi ? customStarUi.on.text : t('gallery.starImage')}
);
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/MultipleSelectionMenuItems.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/MultipleSelectionMenuItems.tsx
index 54fb19c844..33d44806c6 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/MultipleSelectionMenuItems.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/MultipleSelectionMenuItems.tsx
@@ -58,25 +58,25 @@ const MultipleSelectionMenuItems = () => {
return (
<>
{areAllStarred && (
- } onClickCapture={handleUnstarSelection}>
+ } onPointerUpCapture={handleUnstarSelection}>
{customStarUi ? customStarUi.off.text : `Unstar All`}
)}
{(areAllUnstarred || (!areAllStarred && !areAllUnstarred)) && (
- } onClickCapture={handleStarSelection}>
+ } onPointerUpCapture={handleStarSelection}>
{customStarUi ? customStarUi.on.text : `Star All`}
)}
{isBulkDownloadEnabled && (
- } onClickCapture={handleBulkDownload}>
+ } onPointerUpCapture={handleBulkDownload}>
{t('gallery.downloadSelection')}
)}
- } onClickCapture={handleChangeBoard}>
+ } onPointerUpCapture={handleChangeBoard}>
{t('boards.changeBoard')}
- } onClickCapture={handleDeleteSelection}>
+ } onPointerUpCapture={handleDeleteSelection}>
{t('gallery.deleteSelection')}
>
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GalleryImage.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GalleryImage.tsx
index 8a4ca0e35d..04aea091cb 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GalleryImage.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GalleryImage.tsx
@@ -157,7 +157,7 @@ const GalleryImageContent = memo(({ index, imageDTO }: HoverableImageProps) => {
aspectRatio="1/1"
>
{
>{`${imageDTO.width}x${imageDTO.height}`}
)}
{
const shift = useShiftModifier();
const { t } = useTranslation();
const dispatch = useAppDispatch();
- const onClick = useCallback(
+ const onPointerUp = useCallback(
(e: MouseEvent) => {
e.stopPropagation();
if (!imageDTO) {
@@ -230,7 +230,7 @@ const DeleteIcon = ({ imageDTO }: { imageDTO: ImageDTO }) => {
return (
}
tooltip={t('gallery.deleteImage_one')}
position="absolute"
@@ -244,13 +244,13 @@ const OpenInViewerIconButton = ({ imageDTO }: { imageDTO: ImageDTO }) => {
const imageViewer = useImageViewer();
const { t } = useTranslation();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
imageViewer.openImageInViewer(imageDTO);
}, [imageDTO, imageViewer]);
return (
}
tooltip={t('gallery.openInViewer')}
position="absolute"
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GalleryPagination.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GalleryPagination.tsx
index 27776ab77d..54bb75c5ce 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GalleryPagination.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GalleryPagination.tsx
@@ -9,11 +9,11 @@ export const GalleryPagination = () => {
const { goPrev, goNext, isPrevEnabled, isNextEnabled, pageButtons, goToPage, currentPage, total } =
useGalleryPagination();
- const onClickPrev = useCallback(() => {
+ const onPointerUpPrev = useCallback(() => {
goPrev();
}, [goPrev]);
- const onClickNext = useCallback(() => {
+ const onPointerUpNext = useCallback(() => {
goNext();
}, [goNext]);
@@ -27,7 +27,7 @@ export const GalleryPagination = () => {
size="sm"
aria-label="prev"
icon={}
- onClick={onClickPrev}
+ onPointerUp={onPointerUpPrev}
isDisabled={!isPrevEnabled}
variant="ghost"
/>
@@ -40,7 +40,7 @@ export const GalleryPagination = () => {
size="sm"
aria-label="next"
icon={}
- onClick={onClickNext}
+ onPointerUp={onPointerUpNext}
isDisabled={!isNextEnabled}
variant="ghost"
/>
@@ -64,7 +64,7 @@ const PageButton = ({ page, currentPage, goToPage }: PageButtonProps) => {
);
}
return (
-
+
{page}
);
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GallerySearch.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GallerySearch.tsx
index bb2fe8ff29..468463b81e 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GallerySearch.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GallerySearch.tsx
@@ -54,7 +54,7 @@ export const GallerySearch = ({ searchTerm, onChangeSearchTerm, onResetSearchTer
{!isPending && searchTerm.length && (
{selection.length} {t('common.selected')}
-
+
);
});
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageGrid/JumpTo.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageGrid/JumpTo.tsx
index 72f4bba4e8..fdf143c1c6 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageGrid/JumpTo.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageGrid/JumpTo.tsx
@@ -35,7 +35,7 @@ export const JumpTo = () => {
setNewPage(v - 1);
}, []);
- const onClickGo = useCallback(() => {
+ const onPointerUpGo = useCallback(() => {
goToPage(newPage);
onClose();
}, [newPage, goToPage, onClose]);
@@ -43,10 +43,10 @@ export const JumpTo = () => {
useHotkeys(
'enter',
() => {
- onClickGo();
+ onPointerUpGo();
},
{ enabled: isOpen, enableOnFormTags: ['input'] },
- [isOpen, onClickGo]
+ [isOpen, onPointerUpGo]
);
useHotkeys(
@@ -66,7 +66,7 @@ export const JumpTo = () => {
return (
-
+
{t('gallery.jump')}
@@ -86,7 +86,7 @@ export const JumpTo = () => {
onChange={onChangeJumpTo}
/>
-
+
{t('gallery.go')}
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/DataViewer.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/DataViewer.tsx
index 2cbf93b899..38b22fe345 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/DataViewer.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/DataViewer.tsx
@@ -56,7 +56,7 @@ const DataViewer = (props: Props) => {
icon={}
variant="ghost"
opacity={0.7}
- onClick={handleDownload}
+ onPointerUp={handleDownload}
/>
)}
@@ -67,7 +67,7 @@ const DataViewer = (props: Props) => {
icon={}
variant="ghost"
opacity={0.7}
- onClick={handleCopy}
+ onPointerUp={handleCopy}
/>
)}
@@ -105,7 +105,7 @@ const ExtraCopyAction = ({ label, data, getData }: ExtraCopyActionProps) => {
icon={}
variant="ghost"
opacity={0.7}
- onClick={handleCopy}
+ onPointerUp={handleCopy}
/>
);
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageViewer/CompareToolbar.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageViewer/CompareToolbar.tsx
index 5a6d326a52..dba14d786a 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageViewer/CompareToolbar.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageViewer/CompareToolbar.tsx
@@ -67,13 +67,13 @@ export const CompareToolbar = memo(() => {
icon={}
aria-label={`${t('gallery.swapImages')} (C)`}
tooltip={`${t('gallery.swapImages')} (C)`}
- onClick={swapImages}
+ onPointerUp={swapImages}
/>
{comparisonMode !== 'side-by-side' && (
}
@@ -85,21 +85,21 @@ export const CompareToolbar = memo(() => {
{t('gallery.slider')}
{t('gallery.sideBySide')}
{t('gallery.hover')}
@@ -117,7 +117,7 @@ export const CompareToolbar = memo(() => {
variant="ghost"
aria-label={`${t('gallery.exitCompare')} (Esc)`}
tooltip={`${t('gallery.exitCompare')} (Esc)`}
- onClick={exitCompare}
+ onPointerUp={exitCompare}
>
{t('gallery.exitCompare')}
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageViewer/CurrentImageButtons.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageViewer/CurrentImageButtons.tsx
index c8c6e3f1ee..e0cf5001e4 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageViewer/CurrentImageButtons.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageViewer/CurrentImageButtons.tsx
@@ -65,34 +65,34 @@ const CurrentImageButtonsContent = memo(({ imageDTO }: { imageDTO: ImageDTO }) =
tooltip={`${t('nodes.loadWorkflow')} (W)`}
aria-label={`${t('nodes.loadWorkflow')} (W)`}
isDisabled={!imageActions.hasWorkflow || !hasTemplates}
- onClick={imageActions.loadWorkflow}
+ onPointerUp={imageActions.loadWorkflow}
/>
}
tooltip={`${t('parameters.remixImage')} (R)`}
aria-label={`${t('parameters.remixImage')} (R)`}
isDisabled={!imageActions.hasMetadata}
- onClick={imageActions.remix}
+ onPointerUp={imageActions.remix}
/>
}
tooltip={`${t('parameters.usePrompt')} (P)`}
aria-label={`${t('parameters.usePrompt')} (P)`}
isDisabled={!imageActions.hasPrompts}
- onClick={imageActions.recallPrompts}
+ onPointerUp={imageActions.recallPrompts}
/>
}
tooltip={`${t('parameters.useSeed')} (S)`}
aria-label={`${t('parameters.useSeed')} (S)`}
isDisabled={!imageActions.hasSeed}
- onClick={imageActions.recallSeed}
+ onPointerUp={imageActions.recallSeed}
/>
}
tooltip={`${t('parameters.useSize')} (D)`}
aria-label={`${t('parameters.useSize')} (D)`}
- onClick={imageActions.recallSize}
+ onPointerUp={imageActions.recallSize}
isDisabled={isStaging}
/>
@@ -111,7 +111,7 @@ const CurrentImageButtonsContent = memo(({ imageDTO }: { imageDTO: ImageDTO }) =
)}
-
+
>
);
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageViewer/ToggleMetadataViewerButton.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageViewer/ToggleMetadataViewerButton.tsx
index e728a87caf..0624272cea 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageViewer/ToggleMetadataViewerButton.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageViewer/ToggleMetadataViewerButton.tsx
@@ -36,7 +36,7 @@ export const ToggleMetadataViewerButton = memo(() => {
icon={}
tooltip={`${t('parameters.info')} (I)`}
aria-label={`${t('parameters.info')} (I)`}
- onClick={toggleMetadataViewer}
+ onPointerUp={toggleMetadataViewer}
isDisabled={!imageDTO}
variant="outline"
colorScheme={shouldShowImageDetails ? 'invokeBlue' : 'base'}
diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageViewer/ToggleProgressButton.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageViewer/ToggleProgressButton.tsx
index de3967f945..757a99779e 100644
--- a/invokeai/frontend/web/src/features/gallery/components/ImageViewer/ToggleProgressButton.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/ImageViewer/ToggleProgressButton.tsx
@@ -11,7 +11,7 @@ export const ToggleProgressButton = memo(() => {
const shouldShowProgressInViewer = useAppSelector(selectShouldShowProgressInViewer);
const { t } = useTranslation();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
dispatch(setShouldShowProgressInViewer(!shouldShowProgressInViewer));
}, [dispatch, shouldShowProgressInViewer]);
@@ -20,7 +20,7 @@ export const ToggleProgressButton = memo(() => {
aria-label={t('settings.displayInProgress')}
tooltip={t('settings.displayInProgress')}
icon={}
- onClick={onClick}
+ onPointerUp={onPointerUp}
variant="outline"
colorScheme={shouldShowProgressInViewer ? 'invokeBlue' : 'base'}
data-testid="toggle-show-progress-button"
diff --git a/invokeai/frontend/web/src/features/gallery/components/NextPrevImageButtons.tsx b/invokeai/frontend/web/src/features/gallery/components/NextPrevImageButtons.tsx
index 573fae141c..fd6534293e 100644
--- a/invokeai/frontend/web/src/features/gallery/components/NextPrevImageButtons.tsx
+++ b/invokeai/frontend/web/src/features/gallery/components/NextPrevImageButtons.tsx
@@ -24,7 +24,7 @@ const NextPrevImageButtons = ({ inset = 8 }: { inset?: ChakraProps['insetInlineS
return false;
}, [isOnFirstImageOfView, isPrevEnabled]);
- const onClickLeftArrow = useCallback(() => {
+ const onPointerUpLeftArrow = useCallback(() => {
if (isOnFirstImageOfView) {
if (isPrevEnabled && !isFetching) {
goPrev('arrow');
@@ -44,7 +44,7 @@ const NextPrevImageButtons = ({ inset = 8 }: { inset?: ChakraProps['insetInlineS
return false;
}, [isNextEnabled, isOnLastImageOfView]);
- const onClickRightArrow = useCallback(() => {
+ const onPointerUpRightArrow = useCallback(() => {
if (isOnLastImageOfView) {
if (isNextEnabled && !isFetching) {
goNext('arrow');
@@ -64,7 +64,7 @@ const NextPrevImageButtons = ({ inset = 8 }: { inset?: ChakraProps['insetInlineS
aria-label={t('accessibility.previousImage')}
icon={}
variant="unstyled"
- onClick={onClickLeftArrow}
+ onPointerUp={onPointerUpLeftArrow}
isDisabled={isFetching}
color="base.100"
pointerEvents="auto"
@@ -79,7 +79,7 @@ const NextPrevImageButtons = ({ inset = 8 }: { inset?: ChakraProps['insetInlineS
aria-label={t('accessibility.nextImage')}
icon={}
variant="unstyled"
- onClick={onClickRightArrow}
+ onPointerUp={onPointerUpRightArrow}
isDisabled={isFetching}
color="base.100"
pointerEvents="auto"
diff --git a/invokeai/frontend/web/src/features/lora/components/LoRACard.tsx b/invokeai/frontend/web/src/features/lora/components/LoRACard.tsx
index 28c0ea8198..d0c44ff4b1 100644
--- a/invokeai/frontend/web/src/features/lora/components/LoRACard.tsx
+++ b/invokeai/frontend/web/src/features/lora/components/LoRACard.tsx
@@ -56,7 +56,7 @@ export const LoRACard = memo((props: LoRACardProps) => {
aria-label="Remove LoRA"
variant="ghost"
size="sm"
- onClick={handleRemoveLora}
+ onPointerUp={handleRemoveLora}
icon={}
/>
diff --git a/invokeai/frontend/web/src/features/metadata/components/MetadataItemView.tsx b/invokeai/frontend/web/src/features/metadata/components/MetadataItemView.tsx
index 233e427798..53a38f1898 100644
--- a/invokeai/frontend/web/src/features/metadata/components/MetadataItemView.tsx
+++ b/invokeai/frontend/web/src/features/metadata/components/MetadataItemView.tsx
@@ -14,7 +14,7 @@ export const MetadataItemView = memo(
({ label, onRecall, isDisabled, renderedValue, direction = 'row' }: MetadataItemViewProps) => {
return (
- {onRecall && }
+ {onRecall && }
{label}:
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/hooks/useStarterModelsToast.tsx b/invokeai/frontend/web/src/features/modelManagerV2/hooks/useStarterModelsToast.tsx
index 101394f85a..a698564935 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/hooks/useStarterModelsToast.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/hooks/useStarterModelsToast.tsx
@@ -43,7 +43,7 @@ const ToastDescription = () => {
const dispatch = useAppDispatch();
const toast = useToast();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
dispatch(setActiveTab('models'));
$installModelsTab.set(3);
toast.close(TOAST_ID);
@@ -52,7 +52,7 @@ const ToastDescription = () => {
return (
{t('modelManager.noModelsInstalledDesc1')}{' '}
-
+
{t('ui.tabs.modelsTab')}.
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/HuggingFaceFolder/HuggingFaceForm.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/HuggingFaceFolder/HuggingFaceForm.tsx
index 905063f900..17e84851f9 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/HuggingFaceFolder/HuggingFaceForm.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/HuggingFaceFolder/HuggingFaceForm.tsx
@@ -51,7 +51,7 @@ export const HuggingFaceForm = memo(() => {
onChange={handleSetHuggingFaceRepo}
/>
{
const [installModel] = useInstallModel();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
installModel({ source: result });
}, [installModel, result]);
@@ -24,7 +24,7 @@ export const HuggingFaceResultItem = memo(({ result }: Props) => {
{result}
- } onClick={onClick} size="sm" />
+ } onPointerUp={onPointerUp} size="sm" />
);
});
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/HuggingFaceFolder/HuggingFaceResults.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/HuggingFaceFolder/HuggingFaceResults.tsx
index 25546c6822..ed00edbf63 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/HuggingFaceFolder/HuggingFaceResults.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/HuggingFaceFolder/HuggingFaceResults.tsx
@@ -42,7 +42,7 @@ export const HuggingFaceResults = memo(({ results }: HuggingFaceResultsProps) =>
setSearchTerm('');
}, []);
- const onClickAddAll = useCallback(() => {
+ const onPointerUpAddAll = useCallback(() => {
for (const result of filteredResults) {
installModel({ source: result });
}
@@ -55,7 +55,7 @@ export const HuggingFaceResults = memo(({ results }: HuggingFaceResultsProps) =>
{t('modelManager.availableModels')}
-
+
{t('modelManager.installAll')}
@@ -74,7 +74,7 @@ export const HuggingFaceResults = memo(({ results }: HuggingFaceResultsProps) =>
variant="link"
aria-label={t('boards.clearSearch')}
icon={}
- onClick={clearSearch}
+ onPointerUp={clearSearch}
/>
)}
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/InstallModelForm.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/InstallModelForm.tsx
index 64eb725e5e..21931ff651 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/InstallModelForm.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/InstallModelForm.tsx
@@ -48,7 +48,7 @@ export const InstallModelForm = memo(() => {
{
{t('modelManager.prune')}
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueueItem.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueueItem.tsx
index b14b1fbc4c..6cd1a80593 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueueItem.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueueItem.tsx
@@ -119,7 +119,7 @@ export const ModelInstallQueueItem = memo((props: ModelListItemProps) => {
tooltip={t('modelManager.cancel')}
aria-label={t('modelManager.cancel')}
icon={}
- onClick={handleDeleteModelImport}
+ onPointerUp={handleDeleteModelImport}
variant="ghost"
/>
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ScanFolder/ScanFolderForm.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ScanFolder/ScanFolderForm.tsx
index d95196b46b..5c6e3b4ca5 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ScanFolder/ScanFolderForm.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ScanFolder/ScanFolderForm.tsx
@@ -43,7 +43,7 @@ export const ScanModelsForm = memo(() => {
{
{result.is_installed ? (
{t('common.installed')}
) : (
- } onClick={handleInstall} size="sm" />
+ } onPointerUp={handleInstall} size="sm" />
)}
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ScanFolder/ScanFolderResults.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ScanFolder/ScanFolderResults.tsx
index ee8b834a29..c59e53ed2d 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ScanFolder/ScanFolderResults.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ScanFolder/ScanFolderResults.tsx
@@ -77,7 +77,7 @@ export const ScanModelsResults = memo(({ results }: ScanModelResultsProps) => {
{t('modelManager.inplaceInstall')}
-
+
{t('modelManager.installAll')}
@@ -96,7 +96,7 @@ export const ScanModelsResults = memo(({ results }: ScanModelResultsProps) => {
variant="link"
aria-label={t('boards.clearSearch')}
icon={}
- onClick={clearSearch}
+ onPointerUp={clearSearch}
flexShrink={0}
/>
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/StarterModels/StartModelsResultItem.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/StarterModels/StartModelsResultItem.tsx
index 81913f3e8e..a1969de716 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/StarterModels/StartModelsResultItem.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/StarterModels/StartModelsResultItem.tsx
@@ -38,7 +38,7 @@ export const StarterModelsResultItem = memo(({ result, modelList }: Props) => {
}, [result]);
const [installModel] = useInstallModel();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
for (const { config, source } of allSources) {
if (modelList.some((mc) => config.base === mc.base && config.name === mc.name && config.type === mc.type)) {
continue;
@@ -61,7 +61,7 @@ export const StarterModelsResultItem = memo(({ result, modelList }: Props) => {
{result.is_installed ? (
{t('common.installed')}
) : (
- } onClick={onClick} size="sm" />
+ } onPointerUp={onPointerUp} size="sm" />
)}
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/StarterModels/StarterModelsResults.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/StarterModels/StarterModelsResults.tsx
index c443171060..25c89445c4 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/StarterModels/StarterModelsResults.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/StarterModels/StarterModelsResults.tsx
@@ -63,7 +63,7 @@ export const StarterModelsResults = memo(({ results, modelList }: StarterModelsR
variant="link"
aria-label={t('boards.clearSearch')}
icon={}
- onClick={clearSearch}
+ onPointerUp={clearSearch}
flexShrink={0}
/>
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/InstallModels.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/InstallModels.tsx
index 754dab8c78..812cb4ebca 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/InstallModels.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/InstallModels.tsx
@@ -20,7 +20,7 @@ export const InstallModels = memo(() => {
$installModelsTab.set(index);
}, []);
- const onClickLearnMore = useCallback(() => {
+ const onPointerUpLearnMore = useCallback(() => {
window.open('https://support.invoke.ai/support/solutions/articles/151000170961-supported-models');
}, []);
@@ -28,7 +28,7 @@ export const InstallModels = memo(() => {
{t('modelManager.addModel')}
- } onClick={onClickLearnMore}>
+ } onPointerUp={onPointerUpLearnMore}>
{t('modelManager.learnMoreAboutSupportedModels')}
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelManager.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelManager.tsx
index a07cb8c10b..c082af32b3 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelManager.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelManager.tsx
@@ -19,7 +19,7 @@ export const ModelManager = memo(() => {
{t('common.modelManager')}
- } onClick={handleClickAddModel}>
+ } onPointerUp={handleClickAddModel}>
{t('modelManager.addModels')}
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelManagerPanel/ModelListItem.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelManagerPanel/ModelListItem.tsx
index 60e4964b6d..8958df5a17 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelManagerPanel/ModelListItem.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelManagerPanel/ModelListItem.tsx
@@ -43,7 +43,7 @@ const ModelListItem = ({ model }: ModelListItemProps) => {
dispatch(setSelectedModelKey(model.key));
}, [model.key, dispatch]);
- const onClickDeleteButton = useCallback(
+ const onPointerUpDeleteButton = useCallback(
(e: MouseEvent) => {
e.stopPropagation();
onOpen();
@@ -83,7 +83,7 @@ const ModelListItem = ({ model }: ModelListItemProps) => {
alignItems="center"
gap={2}
cursor="pointer"
- onClick={handleSelectModel}
+ onPointerUp={handleSelectModel}
>
@@ -110,7 +110,7 @@ const ModelListItem = ({ model }: ModelListItemProps) => {
}
aria-label={t('modelManager.deleteConfig')}
colorScheme="error"
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelManagerPanel/ModelListNavigation.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelManagerPanel/ModelListNavigation.tsx
index c0a85216a9..d4459b94b0 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelManagerPanel/ModelListNavigation.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelManagerPanel/ModelListNavigation.tsx
@@ -42,7 +42,7 @@ export const ModelListNavigation = memo(() => {
variant="link"
aria-label={t('boards.clearSearch')}
icon={}
- onClick={clearSearch}
+ onPointerUp={clearSearch}
/>
)}
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelManagerPanel/ModelTypeFilter.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelManagerPanel/ModelTypeFilter.tsx
index f395c70d0e..4814d077ec 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelManagerPanel/ModelTypeFilter.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelManagerPanel/ModelTypeFilter.tsx
@@ -46,12 +46,12 @@ export const ModelTypeFilter = memo(() => {
{filteredModelType ? MODEL_TYPE_LABELS[filteredModelType] : t('modelManager.allModels')}
- {t('modelManager.allModels')}
+ {t('modelManager.allModels')}
{objectKeys(MODEL_TYPE_LABELS).map((option) => (
{MODEL_TYPE_LABELS[option]}
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ControlNetOrT2IAdapterDefaultSettings/ControlNetOrT2IAdapterDefaultSettings.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ControlNetOrT2IAdapterDefaultSettings/ControlNetOrT2IAdapterDefaultSettings.tsx
index 25005e76c9..314a8c1939 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ControlNetOrT2IAdapterDefaultSettings/ControlNetOrT2IAdapterDefaultSettings.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ControlNetOrT2IAdapterDefaultSettings/ControlNetOrT2IAdapterDefaultSettings.tsx
@@ -71,7 +71,7 @@ export const ControlNetOrT2IAdapterDefaultSettings = memo(({ modelConfig }: Prop
leftIcon={}
colorScheme="invokeYellow"
isDisabled={!formState.isDirty}
- onClick={handleSubmit(onSubmit)}
+ onPointerUp={handleSubmit(onSubmit)}
isLoading={isLoadingUpdateModel}
>
{t('common.save')}
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/Fields/ModelImageUpload.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/Fields/ModelImageUpload.tsx
index 292835a7b7..80827ef58c 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/Fields/ModelImageUpload.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/Fields/ModelImageUpload.tsx
@@ -94,7 +94,7 @@ const ModelImageUpload = ({ model_key, model_image }: Props) => {
position="absolute"
insetInlineEnd={0}
insetBlockStart={0}
- onClick={handleResetImage}
+ onPointerUp={handleResetImage}
aria-label={t('modelManager.deleteModelImage')}
tooltip={t('modelManager.deleteModelImage')}
icon={}
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/MainModelDefaultSettings/MainModelDefaultSettings.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/MainModelDefaultSettings/MainModelDefaultSettings.tsx
index 714d2a6b2a..a33496a955 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/MainModelDefaultSettings/MainModelDefaultSettings.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/MainModelDefaultSettings/MainModelDefaultSettings.tsx
@@ -116,7 +116,7 @@ export const MainModelDefaultSettings = memo(({ modelConfig }: Props) => {
leftIcon={}
colorScheme="invokeYellow"
isDisabled={!formState.isDirty}
- onClick={handleSubmit(onSubmit)}
+ onPointerUp={handleSubmit(onSubmit)}
isLoading={isLoadingUpdateModel}
>
{t('common.save')}
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ModelConvertButton.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ModelConvertButton.tsx
index 14119374d4..55d65f1c0f 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ModelConvertButton.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ModelConvertButton.tsx
@@ -52,7 +52,7 @@ export const ModelConvertButton = memo(({ modelConfig }: ModelConvertProps) => {
return (
<>
{
return (
- }>
+ }>
{t('common.cancel')}
{
size="sm"
colorScheme="invokeYellow"
leftIcon={}
- onClick={form.handleSubmit(onSubmit)}
+ onPointerUp={form.handleSubmit(onSubmit)}
isLoading={isSubmitting}
isDisabled={Boolean(Object.keys(form.formState.errors).length)}
>
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ModelEditButton.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ModelEditButton.tsx
index c308426bc4..2242e69556 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ModelEditButton.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ModelEditButton.tsx
@@ -14,7 +14,7 @@ export const ModelEditButton = memo(() => {
}, [dispatch]);
return (
- } colorScheme="invokeYellow" onClick={handleEditModel} flexShrink={0}>
+ } colorScheme="invokeYellow" onPointerUp={handleEditModel} flexShrink={0}>
{t('modelManager.edit')}
);
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/TriggerPhrases.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/TriggerPhrases.tsx
index 3f5133dedf..421556f851 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/TriggerPhrases.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/TriggerPhrases.tsx
@@ -85,7 +85,7 @@ export const TriggerPhrases = memo(({ modelConfig }: Props) => {
}
size="sm"
- onClick={addTriggerPhrase}
+ onPointerUp={addTriggerPhrase}
isDisabled={!phrase || Boolean(errors.length)}
isLoading={isLoading}
>
@@ -103,7 +103,7 @@ export const TriggerPhrases = memo(({ modelConfig }: Props) => {
{triggerPhrases.map((phrase, index) => (
{phrase}
-
+
))}
diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/EditableFieldTitle.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/EditableFieldTitle.tsx
index 49fd320558..8b79a05358 100644
--- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/EditableFieldTitle.tsx
+++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/EditableFieldTitle.tsx
@@ -113,11 +113,11 @@ const EditableControls = memo(() => {
const { isEditing, getEditButtonProps } = useEditableControls();
const handleClick = useCallback(
(e: MouseEvent) => {
- const { onClick } = getEditButtonProps();
- if (!onClick) {
+ const { onPointerUp } = getEditButtonProps();
+ if (!onPointerUp) {
return;
}
- onClick(e);
+ onPointerUp(e);
e.preventDefault();
},
[getEditButtonProps]
@@ -129,7 +129,7 @@ const EditableControls = memo(() => {
return (
{
tooltip={t('nodes.addLinearView')}
aria-label={t('nodes.addLinearView')}
icon={}
- onClick={handleExposeField}
+ onPointerUp={handleExposeField}
pointerEvents="auto"
size="xs"
/>
@@ -57,7 +57,7 @@ const FieldLinearViewToggle = ({ nodeId, fieldName }: Props) => {
tooltip={t('nodes.removeLinearView')}
aria-label={t('nodes.removeLinearView')}
icon={}
- onClick={handleUnexposeField}
+ onPointerUp={handleUnexposeField}
pointerEvents="auto"
size="xs"
/>
diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/LinearViewField.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/LinearViewField.tsx
index ef466b2882..82d657a4f6 100644
--- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/LinearViewField.tsx
+++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/LinearViewField.tsx
@@ -71,7 +71,7 @@ const LinearViewFieldInternal = ({ nodeId, fieldName }: Props) => {
tooltip={t('nodes.resetToDefaultValue')}
variant="ghost"
size="sm"
- onClick={onReset}
+ onPointerUp={onReset}
icon={}
/>
)}
@@ -89,7 +89,7 @@ const LinearViewFieldInternal = ({ nodeId, fieldName }: Props) => {
tooltip={t('nodes.removeLinearView')}
variant="ghost"
size="sm"
- onClick={handleRemoveField}
+ onPointerUp={handleRemoveField}
icon={}
/>
diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/ImageFieldInputComponent.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/ImageFieldInputComponent.tsx
index b6c264abf1..20747e8139 100644
--- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/ImageFieldInputComponent.tsx
+++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/ImageFieldInputComponent.tsx
@@ -78,7 +78,7 @@ const ImageFieldInputComponent = (props: FieldComponentProps
: undefined}
tooltip="Reset Image"
/>
diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeCollapseButton.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeCollapseButton.tsx
index 372854b703..2024b02aa1 100644
--- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeCollapseButton.tsx
+++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeCollapseButton.tsx
@@ -22,7 +22,7 @@ const NodeCollapseButton = ({ nodeId, isOpen }: Props) => {
return (
) => {
- const { onClick } = getEditButtonProps();
- if (!onClick) {
+ const { onPointerUp } = getEditButtonProps();
+ if (!onPointerUp) {
return;
}
- onClick(e);
+ onPointerUp(e);
},
[getEditButtonProps]
);
diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeWrapper.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeWrapper.tsx
index 7ae3872864..3b4bd72e3f 100644
--- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeWrapper.tsx
+++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeWrapper.tsx
@@ -59,7 +59,7 @@ const NodeWrapper = (props: NodeWrapperProps) => {
return (
{
}
/>
}
/>
}
/>
{/* {
}
/>
*/}
@@ -74,7 +74,7 @@ const ViewportControls = () => {
tooltip={shouldShowMinimapPanel ? t('nodes.hideMinimapnodes') : t('nodes.showMinimapnodes')}
aria-label={shouldShowMinimapPanel ? t('nodes.hideMinimapnodes') : t('nodes.showMinimapnodes')}
isChecked={shouldShowMinimapPanel}
- onClick={handleClickedToggleMiniMapPanel}
+ onPointerUp={handleClickedToggleMiniMapPanel}
icon={}
/>
diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/AddNodeButton.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/AddNodeButton.tsx
index 72beff084c..be354ee460 100644
--- a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/AddNodeButton.tsx
+++ b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/AddNodeButton.tsx
@@ -13,7 +13,7 @@ const AddNodeButton = () => {
tooltip={t('nodes.addNodeToolTip')}
aria-label={t('nodes.addNode')}
icon={}
- onClick={addNodeCmdk.setTrue}
+ onPointerUp={addNodeCmdk.setTrue}
pointerEvents="auto"
/>
);
diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/ClearFlowButton.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/ClearFlowButton.tsx
index 87f7ad71ce..295779165b 100644
--- a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/ClearFlowButton.tsx
+++ b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/ClearFlowButton.tsx
@@ -25,7 +25,7 @@ const ClearFlowButton = () => {
onClose();
}, [dispatch, onClose, t]);
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
if (!isTouched) {
handleNewWorkflow();
return;
@@ -39,7 +39,7 @@ const ClearFlowButton = () => {
tooltip={t('nodes.clearWorkflow')}
aria-label={t('nodes.clearWorkflow')}
icon={}
- onClick={onClick}
+ onPointerUp={onPointerUp}
pointerEvents="auto"
/>
{
aria-label={t('workflows.saveWorkflow')}
icon={}
isDisabled={!isTouched}
- onClick={handleClickSave}
+ onPointerUp={handleClickSave}
pointerEvents="auto"
/>
);
diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/UpdateNodesButton.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/UpdateNodesButton.tsx
index 9fa710bfb5..f521521923 100644
--- a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/UpdateNodesButton.tsx
+++ b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/UpdateNodesButton.tsx
@@ -23,7 +23,7 @@ const UpdateNodesButton = () => {
tooltip={t('nodes.updateAllNodes')}
aria-label={t('nodes.updateAllNodes')}
icon={}
- onClick={handleClickUpdateNodes}
+ onPointerUp={handleClickUpdateNodes}
pointerEvents="auto"
colorScheme="warning"
/>
diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopRightPanel/ReloadSchemaButton.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopRightPanel/ReloadSchemaButton.tsx
index 86fa639bf7..f7f75c1487 100644
--- a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopRightPanel/ReloadSchemaButton.tsx
+++ b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopRightPanel/ReloadSchemaButton.tsx
@@ -17,7 +17,7 @@ const ReloadNodeTemplatesButton = () => {
leftIcon={}
tooltip={t('nodes.reloadNodeTemplates')}
aria-label={t('nodes.reloadNodeTemplates')}
- onClick={handleReloadSchema}
+ onPointerUp={handleReloadSchema}
>
{t('nodes.reloadNodeTemplates')}
diff --git a/invokeai/frontend/web/src/features/nodes/components/sidePanel/ModeToggle.tsx b/invokeai/frontend/web/src/features/nodes/components/sidePanel/ModeToggle.tsx
index d1af8e7a74..72ae6b2e90 100644
--- a/invokeai/frontend/web/src/features/nodes/components/sidePanel/ModeToggle.tsx
+++ b/invokeai/frontend/web/src/features/nodes/components/sidePanel/ModeToggle.tsx
@@ -10,11 +10,11 @@ export const ModeToggle = () => {
const mode = useAppSelector(selectWorkflowMode);
const { t } = useTranslation();
- const onClickEdit = useCallback(() => {
+ const onPointerUpEdit = useCallback(() => {
dispatch(workflowModeChanged('edit'));
}, [dispatch]);
- const onClickView = useCallback(() => {
+ const onPointerUpView = useCallback(() => {
dispatch(workflowModeChanged('view'));
}, [dispatch]);
@@ -24,7 +24,7 @@ export const ModeToggle = () => {
}
colorScheme="invokeBlue"
/>
@@ -33,7 +33,7 @@ export const ModeToggle = () => {
}
colorScheme="invokeBlue"
/>
diff --git a/invokeai/frontend/web/src/features/nodes/components/sidePanel/viewMode/EmptyState.tsx b/invokeai/frontend/web/src/features/nodes/components/sidePanel/viewMode/EmptyState.tsx
index 322e7014ca..664ebbd545 100644
--- a/invokeai/frontend/web/src/features/nodes/components/sidePanel/viewMode/EmptyState.tsx
+++ b/invokeai/frontend/web/src/features/nodes/components/sidePanel/viewMode/EmptyState.tsx
@@ -9,7 +9,7 @@ export const EmptyState = () => {
const { t } = useTranslation();
const dispatch = useAppDispatch();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
dispatch(workflowModeChanged('edit'));
}, [dispatch]);
@@ -46,7 +46,7 @@ export const EmptyState = () => {
{t('nodes.noFieldsViewMode')}
-
+
{t('nodes.edit')}
diff --git a/invokeai/frontend/web/src/features/nodes/components/sidePanel/viewMode/WorkflowField.tsx b/invokeai/frontend/web/src/features/nodes/components/sidePanel/viewMode/WorkflowField.tsx
index 482de6693e..bda5827636 100644
--- a/invokeai/frontend/web/src/features/nodes/components/sidePanel/viewMode/WorkflowField.tsx
+++ b/invokeai/frontend/web/src/features/nodes/components/sidePanel/viewMode/WorkflowField.tsx
@@ -32,7 +32,7 @@ const WorkflowFieldInternal = ({ nodeId, fieldName }: Props) => {
tooltip={t('nodes.resetToDefaultValue')}
variant="ghost"
size="sm"
- onClick={onReset}
+ onPointerUp={onReset}
icon={}
/>
)}
diff --git a/invokeai/frontend/web/src/features/parameters/components/Bbox/BboxLockAspectRatioButton.tsx b/invokeai/frontend/web/src/features/parameters/components/Bbox/BboxLockAspectRatioButton.tsx
index c8ea636242..64238f017e 100644
--- a/invokeai/frontend/web/src/features/parameters/components/Bbox/BboxLockAspectRatioButton.tsx
+++ b/invokeai/frontend/web/src/features/parameters/components/Bbox/BboxLockAspectRatioButton.tsx
@@ -15,7 +15,7 @@ export const BboxLockAspectRatioButton = memo(() => {
const dispatch = useAppDispatch();
const isLocked = useAppSelector(selectAspectRatioIsLocked);
const isStaging = useAppSelector(selectIsStaging);
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
dispatch(bboxAspectRatioLockToggled());
}, [dispatch]);
@@ -23,7 +23,7 @@ export const BboxLockAspectRatioButton = memo(() => {
: }
diff --git a/invokeai/frontend/web/src/features/parameters/components/Bbox/BboxSetOptimalSizeButton.tsx b/invokeai/frontend/web/src/features/parameters/components/Bbox/BboxSetOptimalSizeButton.tsx
index b01fd78a5f..799634ad84 100644
--- a/invokeai/frontend/web/src/features/parameters/components/Bbox/BboxSetOptimalSizeButton.tsx
+++ b/invokeai/frontend/web/src/features/parameters/components/Bbox/BboxSetOptimalSizeButton.tsx
@@ -27,7 +27,7 @@ export const BboxSetOptimalSizeButton = memo(() => {
() => getIsSizeTooLarge(width, height, optimalDimension),
[height, width, optimalDimension]
);
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
dispatch(bboxSizeOptimized());
}, [dispatch]);
const tooltip = useMemo(() => {
@@ -44,7 +44,7 @@ export const BboxSetOptimalSizeButton = memo(() => {
}
diff --git a/invokeai/frontend/web/src/features/parameters/components/Bbox/BboxSwapDimensionsButton.tsx b/invokeai/frontend/web/src/features/parameters/components/Bbox/BboxSwapDimensionsButton.tsx
index a516cd27a9..e76775286c 100644
--- a/invokeai/frontend/web/src/features/parameters/components/Bbox/BboxSwapDimensionsButton.tsx
+++ b/invokeai/frontend/web/src/features/parameters/components/Bbox/BboxSwapDimensionsButton.tsx
@@ -10,14 +10,14 @@ export const BboxSwapDimensionsButton = memo(() => {
const { t } = useTranslation();
const dispatch = useAppDispatch();
const isStaging = useAppSelector(selectIsStaging);
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
dispatch(bboxDimensionsSwapped());
}, [dispatch]);
return (
}
diff --git a/invokeai/frontend/web/src/features/parameters/components/MainModel/NavigateToModelManagerButton.tsx b/invokeai/frontend/web/src/features/parameters/components/MainModel/NavigateToModelManagerButton.tsx
index cd29a8035b..cd01891b42 100644
--- a/invokeai/frontend/web/src/features/parameters/components/MainModel/NavigateToModelManagerButton.tsx
+++ b/invokeai/frontend/web/src/features/parameters/components/MainModel/NavigateToModelManagerButton.tsx
@@ -25,7 +25,7 @@ export const NavigateToModelManagerButton = memo((props: Omit}
tooltip={`${t('common.goTo')} ${t('ui.tabs.modelsTab')}`}
aria-label={`${t('common.goTo')} ${t('ui.tabs.modelsTab')}`}
- onClick={handleClick}
+ onPointerUp={handleClick}
size="sm"
variant="ghost"
{...props}
diff --git a/invokeai/frontend/web/src/features/parameters/components/MainModel/UseDefaultSettingsButton.tsx b/invokeai/frontend/web/src/features/parameters/components/MainModel/UseDefaultSettingsButton.tsx
index 739ae445fe..3e1f99a846 100644
--- a/invokeai/frontend/web/src/features/parameters/components/MainModel/UseDefaultSettingsButton.tsx
+++ b/invokeai/frontend/web/src/features/parameters/components/MainModel/UseDefaultSettingsButton.tsx
@@ -21,7 +21,7 @@ export const UseDefaultSettingsButton = () => {
tooltip={t('modelManager.useDefaultSettings')}
aria-label={t('modelManager.useDefaultSettings')}
isDisabled={!model}
- onClick={handleClickDefaultSettings}
+ onPointerUp={handleClickDefaultSettings}
size="sm"
variant="ghost"
/>
diff --git a/invokeai/frontend/web/src/features/parameters/components/PostProcessing/PostProcessingPopover.tsx b/invokeai/frontend/web/src/features/parameters/components/PostProcessing/PostProcessingPopover.tsx
index 2b8b335994..5d70f9d4b3 100644
--- a/invokeai/frontend/web/src/features/parameters/components/PostProcessing/PostProcessingPopover.tsx
+++ b/invokeai/frontend/web/src/features/parameters/components/PostProcessing/PostProcessingPopover.tsx
@@ -44,7 +44,7 @@ export const PostProcessingPopover = memo((props: Props) => {
}
aria-label={t('parameters.postProcessing')}
/>
@@ -54,7 +54,7 @@ export const PostProcessingPopover = memo((props: Props) => {
{!postProcessingModel && }
-
+
{t('parameters.processImage')}
@@ -81,7 +81,7 @@ const MissingModelWarning = () => {
i18nKey="upscaling.postProcessingMissingModelWarning"
components={{
LinkComponent: (
-
+
),
}}
/>
diff --git a/invokeai/frontend/web/src/features/parameters/components/Prompts/ViewModePrompt.tsx b/invokeai/frontend/web/src/features/parameters/components/Prompts/ViewModePrompt.tsx
index d2801dd34c..0a9a82c6ea 100644
--- a/invokeai/frontend/web/src/features/parameters/components/Prompts/ViewModePrompt.tsx
+++ b/invokeai/frontend/web/src/features/parameters/components/Prompts/ViewModePrompt.tsx
@@ -32,7 +32,7 @@ export const ViewModePrompt = ({
{
}
flexShrink={0}
>
diff --git a/invokeai/frontend/web/src/features/prompt/AddPromptTriggerButton.tsx b/invokeai/frontend/web/src/features/prompt/AddPromptTriggerButton.tsx
index bda8f2eed2..4c0778ab06 100644
--- a/invokeai/frontend/web/src/features/prompt/AddPromptTriggerButton.tsx
+++ b/invokeai/frontend/web/src/features/prompt/AddPromptTriggerButton.tsx
@@ -18,7 +18,7 @@ export const AddPromptTriggerButton = memo((props: Props) => {
isDisabled={isOpen}
aria-label={t('prompt.addPromptTrigger')}
icon={}
- onClick={onOpen}
+ onPointerUp={onOpen}
/>
);
diff --git a/invokeai/frontend/web/src/features/queue/components/ClearInvocationCacheButton.tsx b/invokeai/frontend/web/src/features/queue/components/ClearInvocationCacheButton.tsx
index 52b1b237e7..2a6e27617a 100644
--- a/invokeai/frontend/web/src/features/queue/components/ClearInvocationCacheButton.tsx
+++ b/invokeai/frontend/web/src/features/queue/components/ClearInvocationCacheButton.tsx
@@ -8,7 +8,7 @@ const ClearInvocationCacheButton = () => {
const { clearInvocationCache, isDisabled, isLoading } = useClearInvocationCache();
return (
-
+
{t('invocationCache.clear')}
);
diff --git a/invokeai/frontend/web/src/features/queue/components/ClearQueueButton.tsx b/invokeai/frontend/web/src/features/queue/components/ClearQueueButton.tsx
index 297eb313e4..cb7a325563 100644
--- a/invokeai/frontend/web/src/features/queue/components/ClearQueueButton.tsx
+++ b/invokeai/frontend/web/src/features/queue/components/ClearQueueButton.tsx
@@ -20,7 +20,7 @@ const ClearQueueButton = (props: Props) => {
tooltip={t('queue.clearTooltip')}
leftIcon={}
colorScheme="error"
- onClick={clearQueue.openDialog}
+ onPointerUp={clearQueue.openDialog}
data-testid={t('queue.clear')}
{...props}
>
diff --git a/invokeai/frontend/web/src/features/queue/components/ClearQueueIconButton.tsx b/invokeai/frontend/web/src/features/queue/components/ClearQueueIconButton.tsx
index 9d9ccc0b49..12a2e18de4 100644
--- a/invokeai/frontend/web/src/features/queue/components/ClearQueueIconButton.tsx
+++ b/invokeai/frontend/web/src/features/queue/components/ClearQueueIconButton.tsx
@@ -24,7 +24,7 @@ export const ClearQueueIconButton = memo((_) => {
tooltip={shift ? t('queue.clearTooltip') : t('queue.cancelTooltip')}
icon={shift ? : }
colorScheme="error"
- onClick={shift ? clearQueue.openDialog : cancelCurrentQueueItem.cancelQueueItem}
+ onPointerUp={shift ? clearQueue.openDialog : cancelCurrentQueueItem.cancelQueueItem}
data-testid={shift ? t('queue.clear') : t('queue.cancel')}
/>
);
diff --git a/invokeai/frontend/web/src/features/queue/components/InvokeQueueBackButton.tsx b/invokeai/frontend/web/src/features/queue/components/InvokeQueueBackButton.tsx
index 54b076bee9..83b4e7524f 100644
--- a/invokeai/frontend/web/src/features/queue/components/InvokeQueueBackButton.tsx
+++ b/invokeai/frontend/web/src/features/queue/components/InvokeQueueBackButton.tsx
@@ -20,7 +20,7 @@ export const InvokeButton = memo(() => {
{
isDisabled={isDisabled}
isLoading={isLoading}
icon={}
- onClick={pauseProcessor}
+ onPointerUp={pauseProcessor}
colorScheme="gold"
/>
);
diff --git a/invokeai/frontend/web/src/features/queue/components/PruneQueueButton.tsx b/invokeai/frontend/web/src/features/queue/components/PruneQueueButton.tsx
index 8ecf7a60c9..ed177d3ba5 100644
--- a/invokeai/frontend/web/src/features/queue/components/PruneQueueButton.tsx
+++ b/invokeai/frontend/web/src/features/queue/components/PruneQueueButton.tsx
@@ -21,7 +21,7 @@ const PruneQueueButton = ({ asIconButton }: Props) => {
label={t('queue.prune')}
tooltip={t('queue.pruneTooltip', { item_count: finishedCount })}
icon={}
- onClick={pruneQueue}
+ onPointerUp={pruneQueue}
colorScheme="invokeBlue"
/>
);
diff --git a/invokeai/frontend/web/src/features/queue/components/QueueActionsMenuButton.tsx b/invokeai/frontend/web/src/features/queue/components/QueueActionsMenuButton.tsx
index 1ae76eec4b..142f015bcc 100644
--- a/invokeai/frontend/web/src/features/queue/components/QueueActionsMenuButton.tsx
+++ b/invokeai/frontend/web/src/features/queue/components/QueueActionsMenuButton.tsx
@@ -52,10 +52,10 @@ export const QueueActionsMenuButton = memo(() => {
} />
- } onClick={newGallerySessionWithDialog}>
+ } onPointerUp={newGallerySessionWithDialog}>
{t('controlLayers.newGallerySession')}
- } onClick={newCanvasSessionWithDialog}>
+ } onPointerUp={newCanvasSessionWithDialog}>
{t('controlLayers.newCanvasSession')}
@@ -63,7 +63,7 @@ export const QueueActionsMenuButton = memo(() => {
}
- onClick={clearQueue.openDialog}
+ onPointerUp={clearQueue.openDialog}
isLoading={clearQueue.isLoading}
isDisabled={clearQueue.isDisabled}
>
@@ -72,7 +72,7 @@ export const QueueActionsMenuButton = memo(() => {
}
- onClick={clearQueue.openDialog}
+ onPointerUp={clearQueue.openDialog}
isLoading={clearQueue.isLoading}
isDisabled={clearQueue.isDisabled}
>
@@ -81,7 +81,7 @@ export const QueueActionsMenuButton = memo(() => {
{isResumeEnabled && (
}
- onClick={resumeProcessor}
+ onPointerUp={resumeProcessor}
isLoading={isLoadingResumeProcessor}
isDisabled={isDisabledResumeProcessor}
>
@@ -91,14 +91,14 @@ export const QueueActionsMenuButton = memo(() => {
{isPauseEnabled && (
}
- onClick={pauseProcessor}
+ onPointerUp={pauseProcessor}
isLoading={isLoadingPauseProcessor}
isDisabled={isDisabledPauseProcessor}
>
{t('queue.pauseTooltip')}
)}
- } onClick={openQueue}>
+ } onPointerUp={openQueue}>
{t('queue.openQueue')}
diff --git a/invokeai/frontend/web/src/features/queue/components/QueueList/QueueItemComponent.tsx b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueItemComponent.tsx
index a4a1b41a9d..a57331988e 100644
--- a/invokeai/frontend/web/src/features/queue/components/QueueList/QueueItemComponent.tsx
+++ b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueItemComponent.tsx
@@ -66,7 +66,7 @@ const QueueItemComponent = ({ index, item, context }: InnerItemProps) => {
sx={sx}
data-testid="queue-item"
>
-
+
{index + 1}
@@ -110,7 +110,7 @@ const QueueItemComponent = ({ index, item, context }: InnerItemProps) => {
{
{
{t('queue.cancelItem')}
{
isDisabled={isDisabled}
isLoading={isLoading}
icon={}
- onClick={resumeProcessor}
+ onPointerUp={resumeProcessor}
colorScheme="green"
/>
);
diff --git a/invokeai/frontend/web/src/features/queue/components/SendToToggle.tsx b/invokeai/frontend/web/src/features/queue/components/SendToToggle.tsx
index d458a61e85..71145a75c3 100644
--- a/invokeai/frontend/web/src/features/queue/components/SendToToggle.tsx
+++ b/invokeai/frontend/web/src/features/queue/components/SendToToggle.tsx
@@ -184,14 +184,14 @@ TooltipContent.displayName = 'TooltipContent';
const ActivateCanvasButton = (props: PropsWithChildren) => {
const dispatch = useAppDispatch();
const imageViewer = useImageViewer();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
dispatch(setActiveTab('canvas'));
selectCanvasRightPanelLayersTab();
imageViewer.close();
}, [dispatch, imageViewer]);
return (
{
if (cacheStatus?.enabled) {
return (
-
+
{t('invocationCache.disable')}
);
}
return (
-
+
{t('invocationCache.enable')}
);
diff --git a/invokeai/frontend/web/src/features/queue/components/common/QueueButton.tsx b/invokeai/frontend/web/src/features/queue/components/common/QueueButton.tsx
index 786708faf1..4441043368 100644
--- a/invokeai/frontend/web/src/features/queue/components/common/QueueButton.tsx
+++ b/invokeai/frontend/web/src/features/queue/components/common/QueueButton.tsx
@@ -7,7 +7,7 @@ type Props = {
label: string;
tooltip: ReactNode;
icon?: ReactElement;
- onClick?: () => void;
+ onPointerUp?: () => void;
isDisabled?: boolean;
colorScheme: ThemeTypings['colorSchemes'];
asIconButton?: boolean;
@@ -20,7 +20,7 @@ const QueueButton = ({
label,
tooltip,
icon,
- onClick,
+ onPointerUp,
isDisabled,
colorScheme,
asIconButton,
@@ -34,7 +34,7 @@ const QueueButton = ({
aria-label={label}
tooltip={tooltip}
icon={icon}
- onClick={onClick}
+ onPointerUp={onPointerUp}
isDisabled={isDisabled}
colorScheme={colorScheme}
isLoading={isLoading}
@@ -49,7 +49,7 @@ const QueueButton = ({
aria-label={label}
tooltip={tooltip}
leftIcon={icon}
- onClick={onClick}
+ onPointerUp={onPointerUp}
isDisabled={isDisabled}
colorScheme={colorScheme}
isLoading={isLoading}
diff --git a/invokeai/frontend/web/src/features/sdxl/components/SDXLPrompts/SDXLConcatButton.tsx b/invokeai/frontend/web/src/features/sdxl/components/SDXLPrompts/SDXLConcatButton.tsx
index 79a23e3717..ccda764b42 100644
--- a/invokeai/frontend/web/src/features/sdxl/components/SDXLPrompts/SDXLConcatButton.tsx
+++ b/invokeai/frontend/web/src/features/sdxl/components/SDXLPrompts/SDXLConcatButton.tsx
@@ -24,7 +24,7 @@ export const SDXLConcatButton = memo(() => {
: }
variant="promptOverlay"
fontSize={12}
diff --git a/invokeai/frontend/web/src/features/sdxl/components/SDXLRefiner/ParamSDXLRefinerModelSelect.tsx b/invokeai/frontend/web/src/features/sdxl/components/SDXLRefiner/ParamSDXLRefinerModelSelect.tsx
index 75b00624a6..3591c8c133 100644
--- a/invokeai/frontend/web/src/features/sdxl/components/SDXLRefiner/ParamSDXLRefinerModelSelect.tsx
+++ b/invokeai/frontend/web/src/features/sdxl/components/SDXLRefiner/ParamSDXLRefinerModelSelect.tsx
@@ -56,7 +56,7 @@ const ParamSDXLRefinerModelSelect = () => {
variant="ghost"
icon={}
aria-label={t('common.reset')}
- onClick={onReset}
+ onPointerUp={onReset}
isDisabled={!value}
/>
diff --git a/invokeai/frontend/web/src/features/settingsAccordions/components/UpscaleSettingsAccordion/UpscaleInitialImage.tsx b/invokeai/frontend/web/src/features/settingsAccordions/components/UpscaleSettingsAccordion/UpscaleInitialImage.tsx
index b4bacc1ad0..6fd16eae11 100644
--- a/invokeai/frontend/web/src/features/settingsAccordions/components/UpscaleSettingsAccordion/UpscaleInitialImage.tsx
+++ b/invokeai/frontend/web/src/features/settingsAccordions/components/UpscaleSettingsAccordion/UpscaleInitialImage.tsx
@@ -44,7 +44,7 @@ export const UpscaleInitialImage = () => {
<>
}
tooltip={t('common.reset')}
/>
diff --git a/invokeai/frontend/web/src/features/settingsAccordions/components/UpscaleSettingsAccordion/UpscaleWarning.tsx b/invokeai/frontend/web/src/features/settingsAccordions/components/UpscaleSettingsAccordion/UpscaleWarning.tsx
index 757fc27b67..d3e7ec82f4 100644
--- a/invokeai/frontend/web/src/features/settingsAccordions/components/UpscaleSettingsAccordion/UpscaleWarning.tsx
+++ b/invokeai/frontend/web/src/features/settingsAccordions/components/UpscaleSettingsAccordion/UpscaleWarning.tsx
@@ -79,7 +79,7 @@ export const UpscaleWarning = () => {
i18nKey="upscaling.missingModelsWarning"
components={{
LinkComponent: (
-
+
),
}}
/>
diff --git a/invokeai/frontend/web/src/features/stylePresets/components/ActiveStylePreset.tsx b/invokeai/frontend/web/src/features/stylePresets/components/ActiveStylePreset.tsx
index e3cf278edf..a24403f90d 100644
--- a/invokeai/frontend/web/src/features/stylePresets/components/ActiveStylePreset.tsx
+++ b/invokeai/frontend/web/src/features/stylePresets/components/ActiveStylePreset.tsx
@@ -81,7 +81,7 @@ export const ActiveStylePreset = () => {
{
{
{
icon={}
tooltip={t('stylePresets.createPromptTemplate')}
aria-label={t('stylePresets.createPromptTemplate')}
- onClick={handleClickAddNew}
+ onPointerUp={handleClickAddNew}
size="md"
variant="ghost"
w={8}
diff --git a/invokeai/frontend/web/src/features/stylePresets/components/StylePresetExportButton.tsx b/invokeai/frontend/web/src/features/stylePresets/components/StylePresetExportButton.tsx
index dc02b63c4f..ac53bf72e1 100644
--- a/invokeai/frontend/web/src/features/stylePresets/components/StylePresetExportButton.tsx
+++ b/invokeai/frontend/web/src/features/stylePresets/components/StylePresetExportButton.tsx
@@ -53,7 +53,7 @@ export const StylePresetExportButton = () => {
return (
: }
tooltip={t('stylePresets.exportPromptTemplates')}
aria-label={t('stylePresets.exportPromptTemplates')}
diff --git a/invokeai/frontend/web/src/features/stylePresets/components/StylePresetForm/StylePresetForm.tsx b/invokeai/frontend/web/src/features/stylePresets/components/StylePresetForm/StylePresetForm.tsx
index aadc82f1fe..dc409b7bd1 100644
--- a/invokeai/frontend/web/src/features/stylePresets/components/StylePresetForm/StylePresetForm.tsx
+++ b/invokeai/frontend/web/src/features/stylePresets/components/StylePresetForm/StylePresetForm.tsx
@@ -111,7 +111,7 @@ export const StylePresetForm = ({
{allowPrivateStylePresets ? : }
diff --git a/invokeai/frontend/web/src/features/stylePresets/components/StylePresetForm/StylePresetImageField.tsx b/invokeai/frontend/web/src/features/stylePresets/components/StylePresetForm/StylePresetImageField.tsx
index 38eaac471a..6166bd3138 100644
--- a/invokeai/frontend/web/src/features/stylePresets/components/StylePresetForm/StylePresetImageField.tsx
+++ b/invokeai/frontend/web/src/features/stylePresets/components/StylePresetForm/StylePresetImageField.tsx
@@ -48,7 +48,7 @@ export const StylePresetImageField = (props: UseControllerProps}
diff --git a/invokeai/frontend/web/src/features/stylePresets/components/StylePresetForm/StylePresetPromptField.tsx b/invokeai/frontend/web/src/features/stylePresets/components/StylePresetForm/StylePresetPromptField.tsx
index 32c8a51661..cc4077ddd5 100644
--- a/invokeai/frontend/web/src/features/stylePresets/components/StylePresetForm/StylePresetPromptField.tsx
+++ b/invokeai/frontend/web/src/features/stylePresets/components/StylePresetForm/StylePresetPromptField.tsx
@@ -50,7 +50,7 @@ export const StylePresetPromptField = (props: Props) => {
{props.label}
-
+
diff --git a/invokeai/frontend/web/src/features/stylePresets/components/StylePresetListItem.tsx b/invokeai/frontend/web/src/features/stylePresets/components/StylePresetListItem.tsx
index 3b7364e954..ff30ecc2cc 100644
--- a/invokeai/frontend/web/src/features/stylePresets/components/StylePresetListItem.tsx
+++ b/invokeai/frontend/web/src/features/stylePresets/components/StylePresetListItem.tsx
@@ -97,7 +97,7 @@ export const StylePresetListItem = ({ preset }: { preset: StylePresetRecordWithI
<>
}
/>
{preset.type !== 'default' && (
@@ -140,14 +140,14 @@ export const StylePresetListItem = ({ preset }: { preset: StylePresetRecordWithI
size="sm"
variant="ghost"
aria-label={t('stylePresets.editTemplate')}
- onClick={handleClickEdit}
+ onPointerUp={handleClickEdit}
icon={}
/>
}
/>
diff --git a/invokeai/frontend/web/src/features/stylePresets/components/StylePresetMenuTrigger.tsx b/invokeai/frontend/web/src/features/stylePresets/components/StylePresetMenuTrigger.tsx
index 5e6701cc11..662bf2900f 100644
--- a/invokeai/frontend/web/src/features/stylePresets/components/StylePresetMenuTrigger.tsx
+++ b/invokeai/frontend/web/src/features/stylePresets/components/StylePresetMenuTrigger.tsx
@@ -22,7 +22,7 @@ export const StylePresetMenuTrigger = () => {
return (
{
{searchTerm && searchTerm.length && (
{
return (
<>
{cloneElement(children, {
- onClick: onOpen,
+ onPointerUp: onOpen,
})}
@@ -67,7 +67,7 @@ const AboutModal = ({ children }: AboutModalProps) => {
}
diff --git a/invokeai/frontend/web/src/features/system/components/HotkeysModal/HotkeysModal.tsx b/invokeai/frontend/web/src/features/system/components/HotkeysModal/HotkeysModal.tsx
index 953f0f724c..71440dfee4 100644
--- a/invokeai/frontend/web/src/features/system/components/HotkeysModal/HotkeysModal.tsx
+++ b/invokeai/frontend/web/src/features/system/components/HotkeysModal/HotkeysModal.tsx
@@ -77,7 +77,7 @@ const HotkeysModal = ({ children }: HotkeysModalProps) => {
return (
<>
{cloneElement(children, {
- onClick: onOpen,
+ onPointerUp: onOpen,
})}
@@ -90,7 +90,7 @@ const HotkeysModal = ({ children }: HotkeysModalProps) => {
{hotkeyFilter.length && (
{
const { t } = useTranslation();
const dispatch = useDispatch();
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
dispatch(logNamespaceToggled(namespace));
}, [dispatch, namespace]);
@@ -46,7 +46,7 @@ const LogLevelTag = ({ namespace, isEnabled }: { namespace: LogNamespace; isEnab
{cloneElement(children, {
- onClick: settingsModal.setTrue,
+ onPointerUp: settingsModal.setTrue,
})}
@@ -248,7 +248,7 @@ const SettingsModal = ({ config = defaultConfig, children }: SettingsModalProps)
@@ -263,7 +263,7 @@ const SettingsModal = ({ config = defaultConfig, children }: SettingsModalProps)
)}
-
+
{t('settings.resetWebUI')}
{Boolean(config?.shouldShowResetWebUiText) && (
diff --git a/invokeai/frontend/web/src/features/toast/ErrorToastDescription.tsx b/invokeai/frontend/web/src/features/toast/ErrorToastDescription.tsx
index 26baf9c739..ba869f19d7 100644
--- a/invokeai/frontend/web/src/features/toast/ErrorToastDescription.tsx
+++ b/invokeai/frontend/web/src/features/toast/ErrorToastDescription.tsx
@@ -50,7 +50,7 @@ export default function ErrorToastDescription({ errorType, errorMessage, session
size="sm"
aria-label="Copy"
icon={}
- onClick={onCopy.bind(null, sessionId)}
+ onPointerUp={onCopy.bind(null, sessionId)}
variant="ghost"
sx={sx}
/>
diff --git a/invokeai/frontend/web/src/features/ui/components/FloatingGalleryButton.tsx b/invokeai/frontend/web/src/features/ui/components/FloatingGalleryButton.tsx
index 20c38b2d55..894a7c47c5 100644
--- a/invokeai/frontend/web/src/features/ui/components/FloatingGalleryButton.tsx
+++ b/invokeai/frontend/web/src/features/ui/components/FloatingGalleryButton.tsx
@@ -16,7 +16,7 @@ const FloatingGalleryButton = (props: Props) => {
}
h={48}
/>
diff --git a/invokeai/frontend/web/src/features/ui/components/FloatingParametersPanelButtons.tsx b/invokeai/frontend/web/src/features/ui/components/FloatingParametersPanelButtons.tsx
index 1ec9559bad..6e32901b2d 100644
--- a/invokeai/frontend/web/src/features/ui/components/FloatingParametersPanelButtons.tsx
+++ b/invokeai/frontend/web/src/features/ui/components/FloatingParametersPanelButtons.tsx
@@ -57,7 +57,7 @@ const FloatingSidePanelButtons = (props: Props) => {
}
flexGrow={1}
/>
@@ -65,7 +65,7 @@ const FloatingSidePanelButtons = (props: Props) => {
{
isLoading={cancelCurrent.isLoading}
aria-label={t('queue.cancelTooltip')}
icon={}
- onClick={cancelCurrent.cancelQueueItem}
+ onPointerUp={cancelCurrent.cancelQueueItem}
colorScheme="error"
flexGrow={1}
/>
@@ -92,7 +92,7 @@ const FloatingSidePanelButtons = (props: Props) => {
aria-label={t('queue.clearTooltip')}
icon={}
colorScheme="error"
- onClick={clearQueue.openDialog}
+ onPointerUp={clearQueue.openDialog}
data-testid={t('queue.clear')}
flexGrow={1}
/>
diff --git a/invokeai/frontend/web/src/features/ui/components/TabButton.tsx b/invokeai/frontend/web/src/features/ui/components/TabButton.tsx
index d59f51f3ed..8c815f3d44 100644
--- a/invokeai/frontend/web/src/features/ui/components/TabButton.tsx
+++ b/invokeai/frontend/web/src/features/ui/components/TabButton.tsx
@@ -9,7 +9,7 @@ export const TabButton = memo(
forwardRef(({ tab, icon, label }: { tab: TabName; icon: ReactElement; label: string }, ref) => {
const dispatch = useAppDispatch();
const activeTabName = useAppSelector(selectActiveTab);
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
dispatch(setActiveTab(tab));
}, [dispatch, tab]);
@@ -18,7 +18,7 @@ export const TabButton = memo(
{
-
+
{t('workflows.convertGraph')}
@@ -77,7 +77,7 @@ export const LoadWorkflowFromGraphModal = () => {
-
+
{t('workflows.loadWorkflow')}
diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/NewWorkflowButton.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/NewWorkflowButton.tsx
index c1211f9e2b..ec8035a82f 100644
--- a/invokeai/frontend/web/src/features/workflowLibrary/components/NewWorkflowButton.tsx
+++ b/invokeai/frontend/web/src/features/workflowLibrary/components/NewWorkflowButton.tsx
@@ -8,12 +8,12 @@ export const NewWorkflowButton = memo(() => {
const { t } = useTranslation();
const renderButton = useCallback(
- (onClick: () => void) => (
+ (onPointerUp: () => void) => (
}
- onClick={onClick}
+ onPointerUp={onPointerUp}
pointerEvents="auto"
/>
),
diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/NewWorkflowConfirmationAlertDialog.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/NewWorkflowConfirmationAlertDialog.tsx
index c0b5fee85b..b434da4927 100644
--- a/invokeai/frontend/web/src/features/workflowLibrary/components/NewWorkflowConfirmationAlertDialog.tsx
+++ b/invokeai/frontend/web/src/features/workflowLibrary/components/NewWorkflowConfirmationAlertDialog.tsx
@@ -7,7 +7,7 @@ import { memo, useCallback } from 'react';
import { useTranslation } from 'react-i18next';
type Props = {
- renderButton: (onClick: () => void) => JSX.Element;
+ renderButton: (onPointerUp: () => void) => JSX.Element;
};
export const NewWorkflowConfirmationAlertDialog = memo((props: Props) => {
@@ -29,7 +29,7 @@ export const NewWorkflowConfirmationAlertDialog = memo((props: Props) => {
onClose();
}, [dispatch, onClose, t]);
- const onClick = useCallback(() => {
+ const onPointerUp = useCallback(() => {
if (!isTouched) {
handleNewWorkflow();
return;
@@ -39,7 +39,7 @@ export const NewWorkflowConfirmationAlertDialog = memo((props: Props) => {
return (
<>
- {props.renderButton(onClick)}
+ {props.renderButton(onPointerUp)}
{
-
+
{t('common.cancel')}
-
+
{t('common.saveAs')}
diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryButton.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryButton.tsx
index dcc347f905..18f28c619f 100644
--- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryButton.tsx
+++ b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryButton.tsx
@@ -17,7 +17,7 @@ const WorkflowLibraryButton = () => {
aria-label={t('workflows.workflowLibrary')}
tooltip={t('workflows.workflowLibrary')}
icon={}
- onClick={workflowLibraryModal.setTrue}
+ onPointerUp={workflowLibraryModal.setTrue}
pointerEvents="auto"
/>
diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryList.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryList.tsx
index cae78b82a2..1a65d9a083 100644
--- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryList.tsx
+++ b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryList.tsx
@@ -161,7 +161,7 @@ const WorkflowLibraryList = () => {
{t(`workflows.${category}Workflows`)}
@@ -208,7 +208,7 @@ const WorkflowLibraryList = () => {
{query.trim().length && (
{
@@ -83,7 +83,7 @@ const WorkflowLibraryListItem = ({ workflowDTO }: Props) => {
flexShrink={0}
colorScheme="error"
isDisabled={isOpen}
- onClick={handleDeleteWorkflow}
+ onPointerUp={handleDeleteWorkflow}
isLoading={deleteWorkflowResult.isLoading}
aria-label={t('workflows.deleteWorkflow')}
>
diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/DownloadWorkflowMenuItem.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/DownloadWorkflowMenuItem.tsx
index 485c4c9a3c..dfbf128942 100644
--- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/DownloadWorkflowMenuItem.tsx
+++ b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/DownloadWorkflowMenuItem.tsx
@@ -9,7 +9,7 @@ const DownloadWorkflowMenuItem = () => {
const downloadWorkflow = useDownloadWorkflow();
return (
- } onClick={downloadWorkflow}>
+ } onPointerUp={downloadWorkflow}>
{t('workflows.downloadWorkflow')}
);
diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/LoadWorkflowFromGraphMenuItem.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/LoadWorkflowFromGraphMenuItem.tsx
index 8006ca937f..ff8724af04 100644
--- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/LoadWorkflowFromGraphMenuItem.tsx
+++ b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/LoadWorkflowFromGraphMenuItem.tsx
@@ -13,7 +13,7 @@ const LoadWorkflowFromGraphMenuItem = () => {
const { onOpen } = useLoadWorkflowFromGraphModal();
return (
- } onClick={onOpen} isDisabled={!size(templates)}>
+ } onPointerUp={onOpen} isDisabled={!size(templates)}>
{t('workflows.loadFromGraph')}
);
diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/NewWorkflowMenuItem.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/NewWorkflowMenuItem.tsx
index 6c5baa584f..20c883e794 100644
--- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/NewWorkflowMenuItem.tsx
+++ b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/NewWorkflowMenuItem.tsx
@@ -8,8 +8,8 @@ export const NewWorkflowMenuItem = memo(() => {
const { t } = useTranslation();
const renderButton = useCallback(
- (onClick: () => void) => (
- } onClick={onClick}>
+ (onPointerUp: () => void) => (
+ } onPointerUp={onPointerUp}>
{t('nodes.newWorkflow')}
),
diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SaveWorkflowAsMenuItem.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SaveWorkflowAsMenuItem.tsx
index bd8a909ace..b7e1d05455 100644
--- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SaveWorkflowAsMenuItem.tsx
+++ b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SaveWorkflowAsMenuItem.tsx
@@ -9,7 +9,7 @@ const SaveWorkflowAsMenuItem = () => {
const { onOpen } = useSaveWorkflowAsDialog();
return (
- } onClick={onOpen}>
+ } onPointerUp={onOpen}>
{t('workflows.saveWorkflowAs')}
);
diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SaveWorkflowMenuItem.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SaveWorkflowMenuItem.tsx
index c1335b1dc9..56abf10da0 100644
--- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SaveWorkflowMenuItem.tsx
+++ b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SaveWorkflowMenuItem.tsx
@@ -28,7 +28,7 @@ const SaveWorkflowMenuItem = () => {
}, [onOpen, saveWorkflow]);
return (
- } onClick={handleClickSave}>
+ } onPointerUp={handleClickSave}>
{t('workflows.saveWorkflow')}
);
diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SettingsMenuItem.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SettingsMenuItem.tsx
index 5969942795..ede918b6bd 100644
--- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SettingsMenuItem.tsx
+++ b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SettingsMenuItem.tsx
@@ -9,7 +9,7 @@ const DownloadWorkflowMenuItem = () => {
const modal = useWorkflowEditorSettingsModal();
return (
- } onClick={modal.setTrue}>
+ } onPointerUp={modal.setTrue}>
{t('nodes.workflowSettings')}
);
diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryPagination.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryPagination.tsx
index f2b6d958ab..cb17e07e0b 100644
--- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryPagination.tsx
+++ b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryPagination.tsx
@@ -9,7 +9,7 @@ const PAGES_TO_DISPLAY = 7;
type PageData = {
page: number;
- onClick: () => void;
+ onPointerUp: () => void;
};
type Props = {
@@ -39,7 +39,7 @@ const WorkflowLibraryPagination = ({ page, setPage, data }: Props) => {
for (let i = first; i < last; i++) {
pages.push({
page: i,
- onClick: () => setPage(i),
+ onPointerUp: () => setPage(i),
});
}
return pages;
@@ -49,7 +49,7 @@ const WorkflowLibraryPagination = ({ page, setPage, data }: Props) => {
}
@@ -58,7 +58,7 @@ const WorkflowLibraryPagination = ({ page, setPage, data }: Props) => {
{
))}
}