diff --git a/package.json b/package.json index 7be07be7e6..62eca6b344 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "@sentry/browser": "^7.0.0", "@testing-library/react-hooks": "^8.0.1", "@vector-im/compound-design-tokens": "^1.2.0", - "@vector-im/compound-web": "^4.1.2", + "@vector-im/compound-web": "^4.2.0", "@zxcvbn-ts/core": "^3.0.4", "@zxcvbn-ts/language-common": "^3.0.4", "@zxcvbn-ts/language-en": "^3.0.2", diff --git a/res/css/views/rooms/_MessageComposerFormatBar.pcss b/res/css/views/rooms/_MessageComposerFormatBar.pcss index 68520cc741..1cbabecc3a 100644 --- a/res/css/views/rooms/_MessageComposerFormatBar.pcss +++ b/res/css/views/rooms/_MessageComposerFormatBar.pcss @@ -102,9 +102,4 @@ limitations under the License. font-weight: var(--cpd-font-weight-semibold); min-width: 54px; text-align: center; - - .mx_MessageComposerFormatBar_tooltipShortcut { - font-size: $font-9px; - opacity: 0.7; - } } diff --git a/res/css/views/rooms/wysiwyg_composer/components/_FormattingButtons.pcss b/res/css/views/rooms/wysiwyg_composer/components/_FormattingButtons.pcss index 8f23227c80..347f475063 100644 --- a/res/css/views/rooms/wysiwyg_composer/components/_FormattingButtons.pcss +++ b/res/css/views/rooms/wysiwyg_composer/components/_FormattingButtons.pcss @@ -64,19 +64,11 @@ limitations under the License. } } -.mx_FormattingButtons_Tooltip { - padding: 0 2px 0 2px; - - .mx_FormattingButtons_Tooltip_KeyboardShortcut { - color: $tertiary-content; - - kbd { - margin-top: 2px; - text-align: center; - display: inline-block; - text-transform: capitalize; - font-size: 12px; - font-family: Inter, sans-serif; - } +.mx_FormattingButtons_Tooltip_KeyboardShortcut { + kbd { + text-align: center; + display: inline-block; + text-transform: capitalize; + font-family: Inter, sans-serif; } } diff --git a/src/components/views/elements/AccessibleButton.tsx b/src/components/views/elements/AccessibleButton.tsx index 055818f742..d94162393e 100644 --- a/src/components/views/elements/AccessibleButton.tsx +++ b/src/components/views/elements/AccessibleButton.tsx @@ -92,12 +92,12 @@ type Props = DynamicHtmlElementProps & /** * The tooltip to show on hover or focus. */ - title?: string; + title?: TooltipProps["label"]; /** * The caption is a secondary text displayed under the `title` of the tooltip. * Only valid when used in conjunction with `title`. */ - caption?: string; + caption?: TooltipProps["caption"]; /** * The placement of the tooltip. */ diff --git a/src/components/views/rooms/MessageComposer.tsx b/src/components/views/rooms/MessageComposer.tsx index f9aae433fe..613701bf23 100644 --- a/src/components/views/rooms/MessageComposer.tsx +++ b/src/components/views/rooms/MessageComposer.tsx @@ -35,7 +35,6 @@ import { makeRoomPermalink, RoomPermalinkCreator } from "../../../utils/permalin import E2EIcon from "./E2EIcon"; import SettingsStore from "../../../settings/SettingsStore"; import { aboveLeftOf, MenuProps } from "../../structures/ContextMenu"; -import AccessibleTooltipButton from "../elements/AccessibleTooltipButton"; import ReplyPreview from "./ReplyPreview"; import { UPDATE_EVENT } from "../../../stores/AsyncStore"; import VoiceRecordComposerTile from "./VoiceRecordComposerTile"; @@ -52,7 +51,7 @@ import UIStore, { UI_EVENTS } from "../../../stores/UIStore"; import RoomContext from "../../../contexts/RoomContext"; import { SettingUpdatedPayload } from "../../../dispatcher/payloads/SettingUpdatedPayload"; import MessageComposerButtons from "./MessageComposerButtons"; -import { ButtonEvent } from "../elements/AccessibleButton"; +import AccessibleButton, { ButtonEvent } from "../elements/AccessibleButton"; import { ViewRoomPayload } from "../../../dispatcher/payloads/ViewRoomPayload"; import { isLocalRoom } from "../../../utils/localRoom/isLocalRoom"; import { Features } from "../../../settings/Settings"; @@ -75,7 +74,7 @@ interface ISendButtonProps { function SendButton(props: ISendButtonProps): JSX.Element { return ( - boolean; @@ -128,7 +127,7 @@ const MessageComposerButtons: React.FC = (props: IProps) => { {mainButtons} {moreButtons.length > 0 && ( - ; label: string; keyCombo?: KeyCombo; } -function Tooltip({ label, keyCombo }: TooltipProps): JSX.Element { - return ( -
- {label} - {keyCombo && ( - - )} -
- ); -} - -interface ButtonProps extends TooltipProps { - icon: ReactNode; - actionState: ActionState; - onClick: MouseEventHandler; -} - function Button({ label, keyCombo, onClick, actionState, icon }: ButtonProps): JSX.Element { return ( - void} - title={label} + aria-label={label} className={classNames("mx_FormattingButtons_Button", { mx_FormattingButtons_active: actionState === "reversed", mx_FormattingButtons_Button_hover: actionState === "enabled", mx_FormattingButtons_disabled: actionState === "disabled", })} - tooltip={keyCombo && } - forceHide={actionState === "disabled"} - alignment={Alignment.Top} + title={actionState === "disabled" ? undefined : label} + caption={ + keyCombo && ( + + ) + } + placement="top" > {icon} - + ); } diff --git a/test/components/views/rooms/wysiwyg_composer/components/FormattingButtons-test.tsx b/test/components/views/rooms/wysiwyg_composer/components/FormattingButtons-test.tsx index 1e41b57162..6055d6bab7 100644 --- a/test/components/views/rooms/wysiwyg_composer/components/FormattingButtons-test.tsx +++ b/test/components/views/rooms/wysiwyg_composer/components/FormattingButtons-test.tsx @@ -15,7 +15,7 @@ limitations under the License. */ import React from "react"; -import { cleanup, render, screen } from "@testing-library/react"; +import { cleanup, render, screen, waitFor } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { ActionState, ActionTypes, AllActionStates, FormattingFunctions } from "@matrix-org/matrix-wysiwyg"; @@ -135,7 +135,7 @@ describe("FormattingButtons", () => { const { label } = testCase; await userEvent.hover(screen.getByLabelText(label)); - expect(screen.getByText(label)).toBeInTheDocument(); + await waitFor(() => expect(screen.getByText(label)).toBeInTheDocument()); } }); diff --git a/yarn.lock b/yarn.lock index 38b88f2a63..2ed1cbc0ab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3097,10 +3097,10 @@ dependencies: svg2vectordrawable "^2.9.1" -"@vector-im/compound-web@^4.1.2": - version "4.1.2" - resolved "https://registry.yarnpkg.com/@vector-im/compound-web/-/compound-web-4.1.2.tgz#d8f9ba523700660942722a800c64406216bbbfea" - integrity sha512-u/jj8HF8qpX1NU+sh6f/S1B7HUMGcoAGYLH0wc5lVbf6x6elBsYKD0LSa+/8NDPuQqVWMztu76chUsM5slC49w== +"@vector-im/compound-web@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@vector-im/compound-web/-/compound-web-4.2.0.tgz#16915a5e64c405360fc049ddfa39b5185725f950" + integrity sha512-VSZxIFToDesjiiCGLOj+DrrKv1I0rtpzJbdylarJXY7REnHzVdgaBBtGm403iJ8KkZ2Rn16Mxe+P1/+VS4yiAA== dependencies: "@floating-ui/react" "^0.26.9" "@floating-ui/react-dom" "^2.0.8"