From 7e63202f9a93ad83acd1207137d740c369a3d702 Mon Sep 17 00:00:00 2001 From: Michael Weimann Date: Wed, 4 May 2022 17:22:09 +0200 Subject: [PATCH] Replace compose context menu with IconizedContextMenu (#22046) Signed-off-by: Michael Weimann --- res/css/views/rooms/_MessageComposer.scss | 33 +++---------------- .../views/location/LocationButton.tsx | 2 +- .../views/rooms/CollapsibleButton.tsx | 16 ++++----- .../views/rooms/MessageComposerButtons.tsx | 24 +++++++++----- 4 files changed, 29 insertions(+), 46 deletions(-) diff --git a/res/css/views/rooms/_MessageComposer.scss b/res/css/views/rooms/_MessageComposer.scss index 1fc36a9af9..9619bad3fe 100644 --- a/res/css/views/rooms/_MessageComposer.scss +++ b/res/css/views/rooms/_MessageComposer.scss @@ -178,12 +178,6 @@ limitations under the License. } } -.mx_ContextualMenu { - .mx_MessageComposer_button { - padding-left: calc(var(--size) + 6px); - } -} - .mx_MessageComposer_button { --size: 26px; position: relative; @@ -192,20 +186,16 @@ limitations under the License. line-height: var(--size); width: auto; padding-left: var(--size); + border-radius: 50%; + margin-right: 6px; - &:not(.mx_CallContextMenu_item) { - border-radius: 50%; - margin-right: 6px; - - &:last-child { - margin-right: auto; - } + &:last-child { + margin-right: auto; } &::before { content: ''; position: absolute; - top: 3px; left: 3px; height: 20px; @@ -399,18 +389,3 @@ limitations under the License. left: 0; } } - -.mx_MessageComposer_Menu .mx_CallContextMenu_item { - display: flex; - align-items: center; - max-width: unset; - margin: 7px 7px 7px 16px; // space out the buttons -} - -.mx_MessageComposer_Menu .mx_ContextualMenu { - min-width: 150px; - width: max-content; - padding: 5px 10px 5px 0; - box-shadow: 0px 2px 9px rgba(0, 0, 0, 0.25); - border-radius: 8px; -} diff --git a/src/components/views/location/LocationButton.tsx b/src/components/views/location/LocationButton.tsx index e6a6f8d92e..b119268588 100644 --- a/src/components/views/location/LocationButton.tsx +++ b/src/components/views/location/LocationButton.tsx @@ -58,7 +58,6 @@ export const LocationButton: React.FC = ({ roomId, sender, menuPosition, const className = classNames( "mx_MessageComposer_button", - "mx_MessageComposer_location", { "mx_MessageComposer_button_highlight": menuDisplayed, }, @@ -67,6 +66,7 @@ export const LocationButton: React.FC = ({ roomId, sender, menuPosition, return diff --git a/src/components/views/rooms/CollapsibleButton.tsx b/src/components/views/rooms/CollapsibleButton.tsx index b9e9f083d0..d89d277073 100644 --- a/src/components/views/rooms/CollapsibleButton.tsx +++ b/src/components/views/rooms/CollapsibleButton.tsx @@ -20,27 +20,27 @@ import classNames from 'classnames'; import AccessibleTooltipButton from "../elements/AccessibleTooltipButton"; import { MenuItem } from "../../structures/ContextMenu"; import { OverflowMenuContext } from './MessageComposerButtons'; +import { IconizedContextMenuOption } from '../context_menus/IconizedContextMenu'; interface ICollapsibleButtonProps extends ComponentProps { title: string; + iconClassName: string; } -export const CollapsibleButton = ({ title, children, className, ...props }: ICollapsibleButtonProps) => { +export const CollapsibleButton = ({ title, children, className, iconClassName, ...props }: ICollapsibleButtonProps) => { const inOverflowMenu = !!useContext(OverflowMenuContext); if (inOverflowMenu) { - return - { title } - { children } - ; + iconClassName={iconClassName} + label={title} + />; } return { children } ; diff --git a/src/components/views/rooms/MessageComposerButtons.tsx b/src/components/views/rooms/MessageComposerButtons.tsx index 17c87b15ca..fe5c42ea26 100644 --- a/src/components/views/rooms/MessageComposerButtons.tsx +++ b/src/components/views/rooms/MessageComposerButtons.tsx @@ -38,6 +38,7 @@ import MatrixClientContext from '../../../contexts/MatrixClientContext'; import RoomContext from '../../../contexts/RoomContext'; import { useDispatcher } from "../../../hooks/useDispatcher"; import { chromeFileInputFix } from "../../../utils/BrowserWorkarounds"; +import IconizedContextMenu, { IconizedContextMenuOptionList } from '../context_menus/IconizedContextMenu'; interface IProps { addEmoji: (emoji: string) => boolean; @@ -108,15 +109,18 @@ const MessageComposerButtons: React.FC = (props: IProps) => { title={_t("More options")} /> } { props.isMenuOpen && ( - - { moreButtons } + + { moreButtons } + - + ) } ; }; @@ -158,7 +162,6 @@ const EmojiButton: React.FC = ({ addEmoji, menuPosition }) => const className = classNames( "mx_MessageComposer_button", - "mx_MessageComposer_emoji", { "mx_MessageComposer_button_highlight": menuDisplayed, }, @@ -169,6 +172,7 @@ const EmojiButton: React.FC = ({ addEmoji, menuPosition }) => return @@ -254,7 +258,8 @@ const UploadButton = () => { }; return ; @@ -266,7 +271,8 @@ function showStickersButton(props: IProps): ReactElement { ? props.setStickerPickerOpen(!props.isStickerPickerOpen)} title={props.isStickerPickerOpen ? _t("Hide stickers") : _t("Sticker")} /> @@ -281,7 +287,8 @@ function voiceRecordingButton(props: IProps, narrow: boolean): ReactElement { ? null : @@ -345,7 +352,8 @@ class PollButton extends React.PureComponent { return (