Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • minerva/frontend
1 result
Show changes
Commits on Source (16)
Showing
with 137 additions and 18 deletions
src/assets/images/logo.png

2.7 KiB

src/assets/images/luxembourg-logo.png

2.14 KiB

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="svg1"
width="180.87634"
height="180.87642"
viewBox="0 0 180.87634 180.87642"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<g
id="g1"
transform="matrix(1.3333333,0,0,-1.3333333,0,180.87642)">
<g
id="g2">
<path
d="m 60.43,135.235 -6.707,-11.546 c -5.641,-1.43 -10.418,-3.403 -15.422,-6.391 l -12.903,3.426 c -4.039,-3.239 -7.222,-6.426 -10.464,-10.465 L 18.359,97.357 C 15.375,92.353 13.395,87.579 11.973,81.931 L 0.422,75.228 c -0.563,-5.149 -0.563,-9.649 0,-14.797 l 11.551,-6.707 c 1.422,-5.645 3.402,-10.418 6.386,-15.422 L 14.934,25.396 c 3.242,-4.039 6.425,-7.219 10.464,-10.461 l 12.903,3.422 c 5.004,-2.981 9.781,-4.961 15.422,-6.383 L 60.43,0.423 c 5.152,-0.563 9.652,-0.563 14.797,0 l 6.707,11.551 c 5.648,1.422 10.418,3.402 15.421,6.383 l 12.907,-3.422 c 4.039,3.242 7.222,6.422 10.461,10.461 l -3.422,12.906 c 2.984,5.004 4.961,9.777 6.387,15.422 l 11.546,6.707 c 0.563,5.148 0.563,9.648 0,14.797 l -11.546,6.703 c -1.426,5.648 -3.403,10.422 -6.387,15.426 l 3.422,12.902 c -3.239,4.039 -6.422,7.226 -10.461,10.465 l -12.907,-3.426 c -5.003,2.988 -9.773,4.961 -15.421,6.391 l -6.707,11.546 c -5.145,0.563 -9.645,0.563 -14.797,0 z M 18.059,67.329 c 0,27.211 22.058,49.266 49.265,49.266 27.207,0 49.262,-22.055 49.262,-49.266 0,-27.203 -22.055,-49.258 -49.262,-49.258 -27.207,0 -49.265,22.055 -49.265,49.258"
style="fill:#373f41;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path2" />
<path
d="M 94.418,91.376 C 87.969,91.72 83.32,85.892 82.992,79.95 c 0.235,-4.238 2.172,-7.254 4.832,-9.05 -2.582,-3.868 -5.156,-7.735 -7.726,-11.598 -1.446,0.75 -3.051,1.203 -4.668,1.293 -2.278,0.121 -4.301,-0.653 -5.93,-1.942 -2.945,3.293 -5.895,6.59 -8.844,9.879 0.508,1.059 0.824,2.211 0.887,3.375 0.238,4.434 -3.777,7.649 -7.867,7.864 -4.43,0.242 -7.637,-3.778 -7.864,-7.864 0.071,-1.222 0.383,-2.34 0.86,-3.343 -2.418,-2.805 -4.844,-5.618 -7.27,-8.422 -1.062,0.761 -2.379,1.222 -3.859,1.297 -3.813,0.211 -6.566,-3.243 -6.762,-6.754 -0.203,-3.813 3.254,-6.575 6.762,-6.762 3.816,-0.211 6.574,3.254 6.766,6.762 -0.071,1.281 -0.45,2.422 -1.028,3.402 l 5.539,6.422 c 0.5,0.586 1.012,1.172 1.516,1.762 1.363,-1.297 3.207,-2.102 5.34,-2.215 2.14,-0.121 3.988,0.754 5.355,2.152 2.852,-3.191 5.703,-6.375 8.551,-9.562 -1.277,-1.754 -2.066,-3.918 -2.191,-6.094 0.308,-5.68 4.363,-9.731 10.039,-10.039 5.664,-0.309 9.758,4.82 10.035,10.039 0.164,2.902 -1.117,5.387 -3.098,7.164 2.641,3.973 5.285,7.953 7.934,11.922 6.5,-2.348 15.043,1.09 15.535,10.312 0.348,6.45 -5.484,11.106 -11.418,11.426"
style="fill:#41b9e7;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3" />
<path
d="m 81.953,80.439 c 0,6.968 5.649,12.617 12.613,12.617 6.965,0 12.61,-5.649 12.61,-12.617 0,-6.961 -5.645,-12.61 -12.61,-12.61 -6.964,0 -12.613,5.649 -12.613,12.61"
style="fill:#41b9e7;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path4" />
<path
d="m 64.043,51.181 c 0,6.269 5.086,11.351 11.352,11.351 6.269,0 11.351,-5.082 11.351,-11.351 0,-6.27 -5.082,-11.348 -11.351,-11.348 -6.266,0 -11.352,5.078 -11.352,11.348"
style="fill:#ed1e2d;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path5" />
<path
d="m 28.102,55.216 c 0,4.391 3.558,7.945 7.945,7.945 4.387,0 7.945,-3.554 7.945,-7.945 0,-4.387 -3.558,-7.945 -7.945,-7.945 -4.387,0 -7.945,3.558 -7.945,7.945"
style="fill:#ed1e2d;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path6" />
<path
d="m 43.582,72.368 c 0,5.313 4.305,9.614 9.617,9.614 5.309,0 9.613,-4.301 9.613,-9.614 0,-5.308 -4.304,-9.613 -9.613,-9.613 -5.312,0 -9.617,4.305 -9.617,9.613"
style="fill:#41b9e7;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path7" />
</g>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" width="500px" height="423.45px" viewBox="0 0 500 423.45" enable-background="new 0 0 500 423.45" xml:space="preserve">
<line fill="none" stroke="#676A69" stroke-width="2" x1="0" y1="257.093" x2="500" y2="257.093"/>
<path fill="#676A69" d="M23.256,340.698c-10.965,0-18.596-7.046-18.596-18.785v-29.619h6.58v29.619c0,9.189,5.754,12.652,12.016,12.652c6.191,0,12.195-3.523,12.195-12.652v-29.619h6.459v29.619C41.91,333.265,33.883,340.698,23.256,340.698 M92.192,339.913v-47.619h-6.512v33.658c0,0.586,0.12,1.568,0.12,1.568s-0.456-0.845-0.844-1.37l-24.658-33.856h-5.538v47.619h6.521v-34.235c0-0.525-0.13-1.576-0.13-1.576s0.595,0.922,0.845,1.301l24.977,34.511H92.192z M105.369,339.913h6.521v-47.619h-6.521V339.913z M159.313,292.294h-6.201l-12.127,34.382c-0.189,0.586-0.396,1.628-0.396,1.628s-0.189-1.042-0.388-1.628l-12.075-34.382h-6.322l16.77,47.619h4.039L159.313,292.294z M197.07,339.913v-6.132h-21.325V319.76h19.628v-6.132h-19.628v-15.202h20.094v-6.132h-26.614v47.619H197.07z M242.796,339.913l-17.544-19.955c7.105,0,13.564-6.004,13.564-13.643c0-7.684-5.873-14.021-14.744-14.021h-15.383v47.619h6.52v-22.246l19.241,22.246H242.796z M222.9,298.426c6.201,0,9.139,4.376,9.139,7.648c0,5.081-3.395,8.733-9.268,8.733h-7.563v-16.382H222.9 M263.863,340.698c7.949,0,14.607-4.824,14.607-13.367c0-7.967-5.736-11.422-11.154-14.1c-5.865-2.929-10.422-4.677-10.422-9.845c0-3.583,3.118-5.47,6.83-5.47c3.988,0,6.469,0.845,9.406,2.998l3.514-5.357c-3.713-2.602-8.079-4.039-12.851-4.039c-8.535,0-13.755,5.211-13.755,12.265c0,9.052,6.916,12.058,13.686,15.528c4.256,2.154,7.967,4.358,7.967,8.406c0,4.505-3.332,6.658-8.147,6.658c-3.272,0-7.372-1.249-9.922-3.531l-3.712,5.029C254.277,339.466,259.049,340.698,263.863,340.698 M289.176,339.913h6.512v-47.619h-6.512V339.913z M332.8,298.426v-6.132h-26.338v6.132h9.716v41.487h6.52v-41.487H332.8z M371.42,339.913v-6.132h-21.326V319.76h19.629v-6.132h-19.629v-15.202h20.086v-6.132h-26.613v47.619H371.42z M365.029,278.927h-6.262l-6.072,9.594h6.271L365.029,278.927z M420.918,339.913c16.32,0,26.027-10.688,26.027-23.935c0-12.987-9.189-23.685-25.434-23.685h-12.135v47.619H420.918 M421.374,298.167c11.421,0,18.784,8.148,18.784,17.872c0,8.871-5.934,18.009-20.016,18.009h-4.246v-35.881H421.374 M476.428,340.698c10.628,0,18.664-7.434,18.664-18.785v-29.619h-6.469v29.619c0,9.129-5.994,12.652-12.195,12.652c-6.262,0-12.007-3.463-12.007-12.652v-29.619h-6.571v29.619C457.85,333.652,465.472,340.698,476.428,340.698 M29.482,422.675v-6.133h-18.07v-41.488h-6.52v47.621H29.482z M60.402,423.45c10.619,0,18.646-7.434,18.646-18.777v-29.619H72.59v29.619c0,9.121-5.995,12.645-12.188,12.645c-6.27,0-12.016-3.454-12.016-12.645v-29.619h-6.58v29.619C41.807,416.413,49.438,423.45,60.402,423.45 M132.525,422.675l-16.563-25.443l14.548-22.178h-7.502l-9.198,13.953c-0.844,1.258-1.559,2.618-1.559,2.618s-0.784-1.36-1.508-2.472l-9.129-14.1h-8.02l14.607,22.506l-16.502,25.115h7.57l10.56-16.115c0.913-1.378,2.153-3.453,2.153-3.453s1.24,2.152,2.023,3.324l10.629,16.244H132.525z M173.23,422.675v-6.133h-21.326v-14.03h19.629v-6.124h-19.629v-15.201h20.094v-6.133h-26.621v47.621H173.23z M236.432,422.675v-47.621h-5.806l-17.415,23.289l-17.932-23.289h-5.547v47.621h6.528v-34.512c0-0.854-0.138-1.758-0.138-1.758s0.388,0.715,0.654,1.043l15.072,19.637h2.602l14.943-20.162c0.267-0.328,0.654-1.111,0.654-1.111s-0.138,0.973-0.138,1.834v35.029H236.432z M268.781,422.675c10.508,0,14.685-6.985,14.685-12.92c0-5.873-4.315-10.24-8.027-11.343c3.075-1.964,5.478-5.495,5.478-10.964c0-7.434-5.736-12.395-13.832-12.395H254.5v47.621H268.781 M265.981,381.187c5.349,0,8.157,2.541,8.157,6.795c0,3.963-1.637,8.269-8.742,8.269h-4.367v-15.063H265.981 M268.721,402.382c4.822,0,7.958,2.74,7.958,6.848c0,4.444-2.739,7.313-8.612,7.313h-7.037v-14.16H268.721 M318.873,423.45c13.444,0,24.34-10.758,24.34-24.59c0-13.824-9.914-24.59-24.658-24.59c-13.764,0-24.134,10.568-24.134,24.461C294.421,413.089,305.248,423.45,318.873,423.45 M318.623,380.669c10.49,0,17.803,7.614,17.803,17.933c0,11.412-8.217,18.466-17.553,18.466c-9.379,0-17.665-7.769-17.665-18.336C301.208,388.283,308.313,380.669,318.623,380.669 M374.641,423.45c10.629,0,18.664-7.434,18.664-18.777v-29.619h-6.468v29.619c0,9.121-5.995,12.645-12.196,12.645c-6.262,0-12.006-3.454-12.006-12.645v-29.619h-6.572v29.619C356.063,416.413,363.677,423.45,374.641,423.45 M442.217,422.675l-17.544-19.965c7.114,0,13.565-6.004,13.565-13.625c0-7.691-5.874-14.031-14.746-14.031h-15.391v47.621h6.529v-22.238l19.24,22.238H442.217z M422.33,381.187c6.193,0,9.129,4.375,9.129,7.631c0,5.09-3.401,8.742-9.258,8.742h-7.57v-16.373H422.33 M474.11,423.45c11.481,0,21.79-9.19,21.79-22.109h-21.92v6.132h14.35c-1.688,5.736-7.166,9.595-14.021,9.595c-9.655,0-17.545-8.483-17.545-18.146c0-11.017,7.691-18.252,17.287-18.252c5.537,0,9.594,1.5,13.693,4.893l3.979-4.832c-4.573-3.979-9.853-6.459-17.544-6.459c-13.117,0-24.203,9.844-24.203,24.59C449.977,413.604,462.053,423.45,474.11,423.45"/>
<path fill="#E31B1D" d="M238.326,55.157c7.02,0,13.1-3.979,16.131-10.104h2.068v158.717c0,10.034-8.148,18.191-18.199,18.191c-10.043,0-18.19-8.157-18.19-18.191V45.054h2.075C225.252,51.178,231.324,55.157,238.326,55.157 M223.142,18.518c0,8.406,6.804,15.228,15.219,15.228c8.406,0,15.228-6.821,15.228-15.228c0-8.406-6.821-15.201-15.228-15.201C229.945,3.316,223.142,10.112,223.142,18.518 M223.142,18.518c0,8.406,6.804,15.228,15.219,15.228c8.406,0,15.228-6.821,15.228-15.228c0-8.406-6.821-15.201-15.228-15.201C229.945,3.316,223.142,10.112,223.142,18.518 M41.118,221.97V63.235c0-10.051-8.156-18.189-18.198-18.189c-10.052,0-18.217,8.139-18.217,18.189v140.535c0,10.061,8.165,18.199,18.217,18.199l0,0H41.118z M50.963,221.97h7.605c10.051,0,18.207-9.689,18.207-19.732h-0.018c0,9.742,1.98,19.732,10.586,19.732h-0.026V63.235c0-10.051-8.147-18.189-18.19-18.189s-18.182,8.139-18.182,18.189V221.97h0.009 M158.734,45.036V203.78c0,10.051,8.166,18.189,18.208,18.189c10.025,0,18.182-8.139,18.182-18.189V63.244c0-10.06-8.156-18.208-18.182-18.208l0,0H158.734z M141.268,45.036c-10.033,0-18.182,9.698-18.182,19.741h0.018c0-9.741-1.998-19.731-10.594-19.741h0.018V203.78c0,10.051,8.147,18.189,18.207,18.189c10.034,0,18.182-8.139,18.182-18.189V45.036h-0.025H141.268z"/>
<path fill="#00A4DD" d="M369.344,10.095c7.002,0,13.092-3.971,16.133-10.095h2.031v203.771c0,10.034-8.139,18.191-18.172,18.191c-10.129,0-18.251-8.157-18.251-18.191V0h2.059C356.176,6.124,362.333,10.095,369.344,10.095 M449.056,221.97V63.235c0-10.051-8.165-18.199-18.208-18.199c-10.033,0-18.182,8.148-18.182,18.199v140.535c0,10.052,8.148,18.199,18.182,18.199l0,0H449.056z M466.514,221.97c10.034,0,18.19-9.689,18.19-19.74h-0.017c0,9.74,1.998,19.732,10.602,19.74h-0.025V63.235c0-10.051-8.148-18.199-18.199-18.199c-10.043,0-18.189,8.148-18.189,18.199V221.97h0.033H466.514z M285.688,203.736c0,10.068,8.165,18.233,18.251,18.233c10.06,0,18.233-8.165,18.233-18.233s-8.174-18.241-18.233-18.241C293.853,185.495,285.688,193.668,285.688,203.736"/>
</svg>
\ No newline at end of file
......@@ -28,6 +28,7 @@ export const ModalLayout = ({ children }: ModalLayoutProps): JSX.Element => {
className={twMerge(
'flex h-5/6 w-10/12 flex-col overflow-hidden rounded-lg',
modalName === 'login' && 'h-auto w-[400px]',
modalName === 'edit-overlay' && 'h-auto w-[432px]',
)}
>
<div className="flex items-center justify-between bg-white p-[24px] text-xl">
......
import logoImg from '@/assets/images/logo.png';
import luxembourgLogoImg from '@/assets/images/luxembourg-logo.png';
import logoImg from '@/assets/vectors/branding/logo.svg';
import luxembourgLogoImg from '@/assets/vectors/branding/luxembourg-logo.svg';
import { API_DOCS_URL, MINERVA_WEBSITE_URL } from '@/constants';
import { openDrawer } from '@/redux/drawer/drawer.slice';
import { useAppDispatch } from '@/redux/hooks/useAppDispatch';
import { openLegend } from '@/redux/legend/legend.slice';
......@@ -37,7 +38,9 @@ export const NavBar = (): JSX.Element => {
<div data-testid="nav-buttons">
<div className="mb-8 flex flex-col gap-[10px]">
<IconButton icon="info" onClick={openDrawerInfo} title="Project info" />
<IconButton icon="page" title="API Doc" />
<a href={API_DOCS_URL} target="_blank">
<IconButton icon="page" title="API Doc" />
</a>
<IconButton icon="plugin" onClick={openDrawerPlugins} title="Available plugins" />
<IconButton icon="export" onClick={openDrawerExport} title="Export" />
</div>
......@@ -57,7 +60,10 @@ export const NavBar = (): JSX.Element => {
/>
<Image src={logoImg} alt="logo" height={48} width={48} />
<span className="h-16 w-14 text-center text-[8px] leading-4">
Powered by: MINERVA Platform (v16.0.8)
Powered by: MINERVA Platform{' '}
<a href={MINERVA_WEBSITE_URL} target="_blank">
(v16.0.8)
</a>
</span>
</div>
</div>
......
......@@ -226,5 +226,50 @@ describe('LoadPluginFromUrl - component', () => {
});
});
});
it('should load plugin from url after pressing enter key', async () => {
const pluginUrl = 'http://example.com/plugin.js';
const pluginScript = `function init() {} init()`;
mockedAxiosClient.onGet(pluginUrl).reply(HttpStatusCode.Ok, pluginScript);
global.URL.canParse = jest.fn().mockReturnValue(true);
const { store } = renderComponent();
const dispatchSpy = jest.spyOn(store, 'dispatch');
const input = screen.getByTestId('load-plugin-input-url');
act(() => {
fireEvent.change(input, { target: { value: pluginUrl } });
fireEvent.keyDown(input, { key: 'Enter', code: 'Enter', charCode: 13 });
});
await waitFor(() => {
expect(dispatchSpy).toHaveBeenCalledWith({
payload: 'e008fb2ceb97e3d6139ffe38a1b39d5d',
type: 'plugins/setCurrentDrawerPluginHash',
});
});
});
it('should not load plugin from url after pressing enter key if url is not correct', async () => {
global.URL.canParse = jest.fn().mockReturnValue(false);
const { store } = renderComponent();
const dispatchSpy = jest.spyOn(store, 'dispatch');
const input = screen.getByTestId('load-plugin-input-url');
expect(input).toBeVisible();
act(() => {
fireEvent.change(input, { target: { value: 'abcd' } });
fireEvent.keyDown(input, { key: 'Enter', code: 'Enter', charCode: 13 });
});
const button = screen.getByTestId('load-plugin-button');
expect(button).toBeDisabled();
await waitFor(() => {
expect(dispatchSpy).not.toHaveBeenCalled();
});
});
});
});
......@@ -3,7 +3,8 @@ import { Input } from '@/shared/Input';
import { useLoadPluginFromUrl } from './hooks/useLoadPluginFromUrl';
export const LoadPluginFromUrl = (): JSX.Element => {
const { handleChangePluginUrl, handleLoadPlugin, isPending, pluginUrl } = useLoadPluginFromUrl();
const { handleChangePluginUrl, handleLoadPlugin, isPending, pluginUrl, handleKeyPress } =
useLoadPluginFromUrl();
return (
<div className="flex w-full">
......@@ -13,6 +14,7 @@ export const LoadPluginFromUrl = (): JSX.Element => {
className="h-10 w-full flex-none bg-cultured p-3"
type="url"
value={pluginUrl}
onKeyDown={handleKeyPress}
onChange={handleChangePluginUrl}
data-testid="load-plugin-input-url"
/>
......
......@@ -5,8 +5,9 @@ import { setCurrentDrawerPluginHash } from '@/redux/plugins/plugins.slice';
import { PluginsManager } from '@/services/pluginsManager';
import { showToast } from '@/utils/showToast';
import axios from 'axios';
import { ChangeEvent, useMemo, useState } from 'react';
import { ChangeEvent, useMemo, useState, KeyboardEvent } from 'react';
import { getErrorMessage } from '@/utils/getErrorMessage';
import { ENTER_KEY_CODE } from '@/constants/common';
import { PLUGIN_LOADING_ERROR_PREFIX } from '../../AvailablePluginsDrawer.constants';
type UseLoadPluginReturnType = {
......@@ -14,6 +15,7 @@ type UseLoadPluginReturnType = {
handleLoadPlugin: () => Promise<void>;
isPending: boolean;
pluginUrl: string;
handleKeyPress: (event: KeyboardEvent<HTMLInputElement>) => Promise<void>;
};
export const useLoadPluginFromUrl = (): UseLoadPluginReturnType => {
......@@ -64,6 +66,13 @@ export const useLoadPluginFromUrl = (): UseLoadPluginReturnType => {
setIsLoading(false);
}
};
const handleKeyPress = async (event: KeyboardEvent<HTMLInputElement>): Promise<void> => {
if (event.code === ENTER_KEY_CODE && !isPending) {
await handleLoadPlugin();
}
};
const handleChangePluginUrl = (event: ChangeEvent<HTMLInputElement>): void => {
setPluginUrl(event.target.value);
};
......@@ -71,6 +80,7 @@ export const useLoadPluginFromUrl = (): UseLoadPluginReturnType => {
return {
handleChangePluginUrl,
handleLoadPlugin,
handleKeyPress,
isPending,
pluginUrl,
};
......
......@@ -92,7 +92,7 @@ export const CheckboxFilter = ({
{filteredOptions.length === 0 ? (
<p className="w-full text-sm text-font-400">No matching elements found.</p>
) : (
<ul className="columns-2 gap-8">
<ul>
{filteredOptions.map(option => (
<li key={option.id} className="mb-5 flex items-center gap-x-2">
<OptionInput
......
......@@ -76,7 +76,7 @@ describe('OverlayListItem - component', () => {
},
});
});
it('should disable overlay on view button click if overlay is active', async () => {
it('should hide overlay on view button click if overlay is active', async () => {
const OVERLAY_ID = 21;
const { store } = renderComponent({
map: {
......@@ -88,7 +88,7 @@ describe('OverlayListItem - component', () => {
models: { ...MODELS_INITIAL_STATE_MOCK, data: [CORE_PD_MODEL_MOCK] },
});
const ViewButton = screen.getByRole('button', { name: 'Disable' });
const ViewButton = screen.getByRole('button', { name: 'Hide' });
await act(() => {
ViewButton.click();
});
......@@ -108,7 +108,7 @@ describe('OverlayListItem - component', () => {
});
expect(screen.getByAltText('spinner icon')).toBeVisible();
expect(screen.getByText('Disable')).toBeVisible();
expect(screen.getByText('Hide')).toBeVisible();
});
});
......
......@@ -30,7 +30,7 @@ export const OverlayListItem = ({ name, overlayId }: OverlayListItemProps): JSX.
className="animate-spin"
/>
)}
{isOverlayActive || isOverlayActive ? 'Disable' : 'View'}
{isOverlayActive || isOverlayActive ? 'Hide' : 'View'}
</Button>
<Button className="max-h-8" variantStyles="ghost" onClick={downloadOverlay}>
Download
......
......@@ -53,7 +53,7 @@ export const UserOverlayListItem = ({
className="animate-spin"
/>
)}
{isOverlayActive || isOverlayLoading ? 'Disable' : 'View'}
{isOverlayActive || isOverlayLoading ? 'Hide' : 'View'}
</Button>
<UserOverlayActions overlay={userOverlay} />
</div>
......
......@@ -262,7 +262,7 @@ describe('UserOverlaysWithoutGroup - component', () => {
toggleOverlayButton.click();
});
expect(screen.getByTestId('toggle-overlay-button')).toHaveTextContent('Disable');
expect(screen.getByTestId('toggle-overlay-button')).toHaveTextContent('Hide');
});
it('should call window.open with download link after download action click', async () => {
renderComponent({
......@@ -346,6 +346,6 @@ describe('UserOverlaysWithoutGroup - component', () => {
});
expect(screen.getByAltText('spinner icon')).toBeVisible();
expect(screen.getByText('Disable')).toBeVisible();
expect(screen.getByText('Hide')).toBeVisible();
});
});
......@@ -16,7 +16,7 @@ export const PluginContent = (): JSX.Element => {
<div
id={PLUGINS_CONTENT_ELEMENT_ID}
data-testid="drawer-plugins-content"
className="h-full"
className="h-[calc(100%-166px)] max-h-[calc(100%-166px)] overflow-y-auto"
/>
</>
);
......
......@@ -23,7 +23,9 @@ export const PluginHeaderInfo = ({ plugin }: Props): JSX.Element => {
return (
<>
Plugin: <b>{plugin.name}</b>
<p className="truncate">
Plugin: <b title={plugin.name}>{plugin.name}</b>
</p>
<button type="button" onClick={reloadPlugin} role={RELOAD_PLUGIN_DRAWER_BUTTON_ROLE}>
<Icon name="reload" />
</button>
......
......@@ -21,7 +21,7 @@ export const PluginsHeader = (): JSX.Element => {
data-testid="drawer-plugins-header"
>
<div className="flex w-full justify-between">
<div className="flex items-center gap-2 text-xl">
<div className="flex max-w-[90%] items-center gap-2 text-xl">
{currentPlugin ? <PluginHeaderInfo plugin={currentPlugin} /> : <>No plugin selected</>}
</div>
<IconButton
......
......@@ -24,7 +24,7 @@ export const PluginsTabs = (): JSX.Element => {
return (
<div
className="flex h-10 w-full flex-row flex-nowrap justify-start border-b border-b-divide bg-white-pearl text-xs"
className="flex w-full flex-row flex-nowrap justify-start overflow-x-auto overflow-y-clip border-b border-b-divide bg-white-pearl text-xs"
data-testid="drawer-plugins-tab"
>
{isPluginsEmpty ? pluginsEmptyInfo : pluginsTabs}
......
......@@ -19,3 +19,5 @@ export const ONE_HUNDRED = 100;
export const EMPTY_ARRAY_STRING = '[]';
export const ZOOM_FACTOR = 2.0; // Zoom factor indicating doubling the distance for each zoom level
export const ENTER_KEY_CODE = 'Enter';
......@@ -10,3 +10,5 @@ export const PROJECT_ID = getProjectIdFromUrl() || DEFAULT_PROJECT_ID;
export const ZOD_SEED = parseInt(process.env.ZOD_SEED || '123', 10);
export const BIO_ENTITY = 'bioEntity';
export const DRUGS_CHEMICALS = ['drugs', 'chemicals'];
export const MINERVA_WEBSITE_URL = 'https://minerva.pages.uni.lu/doc/';
export const API_DOCS_URL = 'https://lux1.atcomp.pl/minerva/docs/';