From 63e220ee3e4b4aa536e066db33e76737c4c4f22c Mon Sep 17 00:00:00 2001
From: Kristin Aoki <42981026+KristinAoki@users.noreply.github.com>
Date: Fri, 12 Apr 2024 13:52:51 -0400
Subject: [PATCH] fix: change dropdowns to menus to fix off-screen render
(#948)
---
src/files-and-videos/index.scss | 8 +-
.../info-sidebar/TranscriptTab.test.jsx | 6 +-
.../transcript-item/LanguageSelect.jsx | 120 ++++++++++++------
.../transcript-item/LanguageSelect.scss | 24 ++++
.../transcript-item/Transcript.jsx | 16 +--
.../transcript-item/TranscriptMenu.jsx | 93 +++++++++-----
.../transcript-item/TranscriptMenu.scss | 17 +++
7 files changed, 202 insertions(+), 82 deletions(-)
create mode 100644 src/files-and-videos/videos-page/info-sidebar/transcript-item/LanguageSelect.scss
create mode 100644 src/files-and-videos/videos-page/info-sidebar/transcript-item/TranscriptMenu.scss
diff --git a/src/files-and-videos/index.scss b/src/files-and-videos/index.scss
index 58182fe2b..2e419559a 100644
--- a/src/files-and-videos/index.scss
+++ b/src/files-and-videos/index.scss
@@ -1,5 +1,7 @@
@import "files-and-videos/videos-page/transcript-settings/TranscriptSettings";
@import "files-and-videos/videos-page/VideoThumbnail";
+@import "files-and-videos/videos-page/info-sidebar/transcript-item/LanguageSelect";
+@import "files-and-videos/videos-page/info-sidebar/transcript-item/TranscriptMenu";
@import "files-and-videos/generic/table-components/GalleryCard";
.files-table {
@@ -49,10 +51,10 @@
.pgn__menu-item {
width: 100%;
justify-content: start;
+ font-weight: 400;
- &.focus,
- &:focus {
- font-weight: 500;
+ &:hover {
+ background-color: $light-300;
}
}
}
diff --git a/src/files-and-videos/videos-page/info-sidebar/TranscriptTab.test.jsx b/src/files-and-videos/videos-page/info-sidebar/TranscriptTab.test.jsx
index 95dfaee24..d7a05d9ca 100644
--- a/src/files-and-videos/videos-page/info-sidebar/TranscriptTab.test.jsx
+++ b/src/files-and-videos/videos-page/info-sidebar/TranscriptTab.test.jsx
@@ -174,7 +174,7 @@ describe('TranscriptTab', () => {
fireEvent.click(menuButton);
});
- const deleteButton = screen.getByText(transcriptRowMessages.deleteTranscript.defaultMessage).closest('a');
+ const deleteButton = screen.getByText(transcriptRowMessages.deleteTranscript.defaultMessage).closest('button');
fireEvent.click(deleteButton);
});
@@ -237,7 +237,7 @@ describe('TranscriptTab', () => {
});
downloadButton = screen.getByText(
transcriptRowMessages.downloadTranscript.defaultMessage,
- ).closest('a');
+ ).closest('button');
});
it('should download transcript', async () => {
@@ -291,7 +291,7 @@ describe('TranscriptTab', () => {
});
const replaceButton = screen.getByText(
transcriptRowMessages.replaceTranscript.defaultMessage,
- ).closest('a');
+ ).closest('button');
fireEvent.click(replaceButton);
});
diff --git a/src/files-and-videos/videos-page/info-sidebar/transcript-item/LanguageSelect.jsx b/src/files-and-videos/videos-page/info-sidebar/transcript-item/LanguageSelect.jsx
index 91317d65b..e0ab163c6 100644
--- a/src/files-and-videos/videos-page/info-sidebar/transcript-item/LanguageSelect.jsx
+++ b/src/files-and-videos/videos-page/info-sidebar/transcript-item/LanguageSelect.jsx
@@ -1,7 +1,15 @@
-import React from 'react';
+import React, { useState } from 'react';
import PropTypes from 'prop-types';
-import { Dropdown, Icon } from '@openedx/paragon';
-import { Check, ExpandMore } from '@openedx/paragon/icons';
+
+import {
+ Button,
+ Icon,
+ ModalPopup,
+ Menu,
+ MenuItem,
+ useToggle,
+} from '@openedx/paragon';
+import { Check, ExpandMore, ExpandLess } from '@openedx/paragon/icons';
import { isEmpty } from 'lodash';
const LanguageSelect = ({
@@ -12,47 +20,87 @@ const LanguageSelect = ({
placeholderText,
}) => {
const currentSelection = isEmpty(value) ? placeholderText : options[value];
+
+ const [isOpen, , close, toggle] = useToggle();
+ const [target, setTarget] = useState(null);
+
return (
-