diff --git a/src/frontend/static/frontend/src/cgds.tsx b/src/frontend/static/frontend/src/cgds.tsx
index fd25c110..d143aae9 100644
--- a/src/frontend/static/frontend/src/cgds.tsx
+++ b/src/frontend/static/frontend/src/cgds.tsx
@@ -2,6 +2,7 @@ import React from 'react'
import { createRoot } from 'react-dom/client'
import './css/files.css'
+import './css/cgds.css'
import { CGDSPanel } from './components/cgds-panel/CGDSPanel'
import { IntlProvider } from 'react-intl'
diff --git a/src/frontend/static/frontend/src/components/Base.tsx b/src/frontend/static/frontend/src/components/Base.tsx
index a20d8bcf..e80d1e51 100644
--- a/src/frontend/static/frontend/src/components/Base.tsx
+++ b/src/frontend/static/frontend/src/components/Base.tsx
@@ -14,6 +14,7 @@ import en from '../locales/en'
// Common dependencies for all the pages
import 'fomantic-ui-css/semantic.css'
import '../css/base.css'
+import '../css/responsive.css'
const messages = { en, es }
const LOCALE_STORAGE_KEY = 'multiomix_locale'
diff --git a/src/frontend/static/frontend/src/components/MainNavbar.tsx b/src/frontend/static/frontend/src/components/MainNavbar.tsx
index 4bd1baeb..c485c19f 100644
--- a/src/frontend/static/frontend/src/components/MainNavbar.tsx
+++ b/src/frontend/static/frontend/src/components/MainNavbar.tsx
@@ -170,161 +170,145 @@ const MainNavbar = (props: MainNavbarProps) => {
const intl = useIntl()
// Gets current user context
const currentUser = useContext(CurrentUserContext)
+ const [menuOpen, setMenuOpen] = useState(false)
const cBioPortalOption = (
)
- return (
-
+ >
+ )
+
+ return (
+ <>
+
+
+ {menuOpen && (
+
+ )}
+ >
)
}
diff --git a/src/frontend/static/frontend/src/components/UpdateUserModal.tsx b/src/frontend/static/frontend/src/components/UpdateUserModal.tsx
index 837b28e2..5c53c2ff 100644
--- a/src/frontend/static/frontend/src/components/UpdateUserModal.tsx
+++ b/src/frontend/static/frontend/src/components/UpdateUserModal.tsx
@@ -5,6 +5,7 @@ import { getDjangoHeader } from '../utils/util_functions'
import { DjangoUser } from '../utils/django_interfaces'
import { CustomAlertTypes, Nullable } from '../utils/interfaces'
import { useIntl } from 'react-intl'
+import '../css/update-user-modal.css'
declare const urlUpdateUser: string
@@ -16,6 +17,10 @@ interface Props {
handleUpdateAlert: (isOpen: boolean, type: CustomAlertTypes, message: string, callback: Nullable<() => void>) => void,
}
+/**
+ * Renders the modal for editing a user's profile.
+ * @returns Component
+ */
export const UpdateUserModal = (props: Props) => {
const intl = useIntl()
const [isLoading, setIsLoading] = useState(false)
@@ -87,6 +92,7 @@ export const UpdateUserModal = (props: Props) => {
return (
}
style={{ width: '30%' }}
>
diff --git a/src/frontend/static/frontend/src/components/common/PaginatedTable.tsx b/src/frontend/static/frontend/src/components/common/PaginatedTable.tsx
index c91ee9aa..314be36c 100644
--- a/src/frontend/static/frontend/src/components/common/PaginatedTable.tsx
+++ b/src/frontend/static/frontend/src/components/common/PaginatedTable.tsx
@@ -1,6 +1,6 @@
import ky from 'ky'
import React, { ReactElement } from 'react'
-import { Checkbox, DropdownItemProps, Form, Grid, Header, Icon, Pagination, SemanticWIDTHS, SemanticWIDTHSNUMBER, Table } from 'semantic-ui-react'
+import { Accordion, Checkbox, DropdownItemProps, Form, Grid, Header, Icon, Pagination, SemanticWIDTHS, SemanticWIDTHSNUMBER, Table } from 'semantic-ui-react'
import { RowHeader } from '../../utils/django_interfaces'
import { GeneralTableControl, Nullable, ResponseRequestWithPagination, WebsocketConfig } from '../../utils/interfaces'
import { getDefaultGeneralTableControl, getDefaultPageSizeOption, alertGeneralError, generatesOrderingQuery } from '../../utils/util_functions'
@@ -112,6 +112,7 @@ interface PaginatedTableProps {
infoPopupContent?: string,
/** `width` prop of Form.Item of the _Entries_ select. */
entriesSelectWidth?: SemanticWIDTHS,
+ mobileFiltersLabel?: string,
/** Callback to render custom components applied to data retrieved from backend API */
mapFunction: (elem: T) => ReactElement
intl: IntlShape
@@ -131,7 +132,8 @@ interface PaginatedTableState {
}
},
elements: T[],
- gettingData: boolean
+ gettingData: boolean,
+ mobileFiltersOpen: boolean
}
/**
@@ -176,7 +178,8 @@ class PaginatedTable extends React.Component, Paginate
elements: [],
tableControl: generalTableControl,
retrievedOptions: {},
- gettingData: false
+ gettingData: false,
+ mobileFiltersOpen: false
}
}
@@ -481,6 +484,43 @@ class PaginatedTable extends React.Component, Paginate
)
: tableBody
+ const filtersForm = (
+
+ {this.props.customElements}
+
+ {this.props.showSearchInput && (
+ {
+ this.handleTableControlChanges(name, value)
+ }}
+ />
+ )}
+ {customFilters}
+ {
+ this.handleTableControlChanges(name, value)
+ }}
+ />
+
+
+ )
+
return (
@@ -501,48 +541,30 @@ class PaginatedTable extends React.Component, Paginate
)}
-
- {this.props.customElements}
-
- {/* Search input */}
- {this.props.showSearchInput && (
- {
- this.handleTableControlChanges(name, value)
- }}
- />
- )}
- {customFilters}
- {/* Page size */}
- {
- this.handleTableControlChanges(name, value)
- }}
- />
-
-
+ {this.props.mobileFiltersLabel
+ ? (
+
+ >}
+ onClick={() => this.setState((prevState) => ({ mobileFiltersOpen: !prevState.mobileFiltersOpen }))}
+ >
+ {this.props.mobileFiltersLabel}
+
+
+
+ {filtersForm}
+
+
+ )
+ : filtersForm}
-
+
{/* Table */}
-
+
{/* Header */}
diff --git a/src/frontend/static/frontend/src/components/pipeline/MiRNAPipeline.tsx b/src/frontend/static/frontend/src/components/pipeline/MiRNAPipeline.tsx
index 6cac2445..f344cb6f 100644
--- a/src/frontend/static/frontend/src/components/pipeline/MiRNAPipeline.tsx
+++ b/src/frontend/static/frontend/src/components/pipeline/MiRNAPipeline.tsx
@@ -913,7 +913,14 @@ class MiRNAPipeline extends React.Component
-
+ {this.state.activeTab === 'all-experiments' && (
+
+
+
+
+
+ )}
+