{
setIsHovering(false)
}, [])
- const handleClickEdit = useCallback(
- (event: MouseEvent) => {
- event.preventDefault()
- event.stopPropagation()
- // Can only edit user owned playlists
- if (typeof id === 'number') {
- dispatch(openEditPlaylistModal({ collectionId: id }))
- record(make(Name.PLAYLIST_OPEN_EDIT_FROM_LIBRARY, {}))
- }
- },
- [dispatch, id, record]
- )
+ const handleEdit = useCallback(() => {
+ if (typeof id === 'number') {
+ dispatch(openEditPlaylistModal({ collectionId: id }))
+ record(make(Name.PLAYLIST_OPEN_EDIT_FROM_LIBRARY, {}))
+ }
+ }, [dispatch, id, record])
const handleShare = useCallback(() => {
if (typeof id === 'number') {
@@ -122,7 +116,7 @@ export const CollectionNavItem = (props: CollectionNavItemProps) => {
const kebabItems: PopupMenuItem[] = [
{
text: messages.edit,
- onClick: handleClickEdit
+ onClick: handleEdit
},
{ text: messages.share, onClick: handleShare },
{ text: messages.delete, onClick: handleDelete }
@@ -201,7 +195,6 @@ export const CollectionNavItem = (props: CollectionNavItemProps) => {
diff --git a/packages/web/src/components/nav/desktop/PlaylistLibrary/NavItemKebabButton.tsx b/packages/web/src/components/nav/desktop/PlaylistLibrary/NavItemKebabButton.tsx
index 899f9b28f5..b8397b1710 100644
--- a/packages/web/src/components/nav/desktop/PlaylistLibrary/NavItemKebabButton.tsx
+++ b/packages/web/src/components/nav/desktop/PlaylistLibrary/NavItemKebabButton.tsx
@@ -42,7 +42,6 @@ export const NavItemKebabButton = (props: EditNavItemButtonProps) => {
items={items}
renderTrigger={(ref, onClick, triggerProps) => {
const handleClick = (e: MouseEvent) => {
- e.stopPropagation()
e.preventDefault()
onClick()
}
diff --git a/packages/web/src/components/upload/UploadArtwork.js b/packages/web/src/components/upload/UploadArtwork.js
index bc33eef459..b298229f75 100644
--- a/packages/web/src/components/upload/UploadArtwork.js
+++ b/packages/web/src/components/upload/UploadArtwork.js
@@ -1,4 +1,4 @@
-import { useState, useEffect } from 'react'
+import { useState, useEffect, useRef } from 'react'
import { imageBlank as placeholderArt } from '@audius/common'
import cn from 'classnames'
@@ -17,6 +17,7 @@ const messages = {
const UploadArtwork = (props) => {
const [processing, setProcessing] = useState(false)
const [showTip, setShowTip] = useState(false)
+ const imageSelectionAnchorRef = useRef()
useEffect(() => {
if (props.error) {
@@ -39,6 +40,7 @@ const UploadArtwork = (props) => {
className={cn(styles.uploadArtwork, {
[styles.error]: props.error
})}
+ ref={imageSelectionAnchorRef}
>
{
open={showTip}
>
}
+ render={({ location }) => {
+ return (
+
+ )
+ }}
/>
}
+ render={({ location }) => (
+
+ )}
/>
{/* Hash id routes */}
diff --git a/packages/web/src/pages/chat-page/components/ChatMessageListItem.module.css b/packages/web/src/pages/chat-page/components/ChatMessageListItem.module.css
index dc7b4ded03..31666436e9 100644
--- a/packages/web/src/pages/chat-page/components/ChatMessageListItem.module.css
+++ b/packages/web/src/pages/chat-page/components/ChatMessageListItem.module.css
@@ -21,7 +21,7 @@
max-width: 448px;
filter: var(--drop-shadow-near);
color: var(--static-netural);
- transition: background-color var(--calm), filter var(--calm);
+ transition: background-color var(--expressive), filter var(--expressive);
}
.bubbleCorners {