Compare commits
No commits in common. "6c209d0f9dab7060b237c26fc1cabebf653f59e8" and "91f587eb91b76adc4b94659defa1c53b3e99db73" have entirely different histories.
6c209d0f9d
...
91f587eb91
@ -69,10 +69,6 @@ async function GetChapters(connector, internalId){
|
|||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
function GetCoverUrl(internalId){
|
|
||||||
return `${apiUri}/Manga/Cover?internalId=${internalId}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function GetAllJobs(){
|
async function GetAllJobs(){
|
||||||
var uri = `${apiUri}/Jobs`;
|
var uri = `${apiUri}/Jobs`;
|
||||||
let json = await GetData(uri);
|
let json = await GetData(uri);
|
||||||
@ -133,8 +129,8 @@ async function GetLibraryConnectors(){
|
|||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
function CreateMonitorJob(connector, internalId){
|
function CreateMonitorJob(connector, internalId, interval){
|
||||||
var uri = `${apiUri}/Jobs/MonitorManga?connector=${connector}&internalId=${internalId}&interval=03:00:00`;
|
var uri = `${apiUri}/Jobs/MonitorManga?connector=${connector}&internalId=${internalId}&interval=${interval}`;
|
||||||
PostData(uri);
|
PostData(uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
<div id="addPublication">
|
<div id="addPublication">
|
||||||
<p>+</p>
|
<p>+</p>
|
||||||
</div>
|
</div>
|
||||||
<publication onclick="ShowNewMangaSearch()">
|
<publication>
|
||||||
<img alt="cover" src="media/cover.jpg">
|
<img alt="cover" src="media/cover.jpg">
|
||||||
<publication-information>
|
<publication-information>
|
||||||
<connector-name class="pill">MangaDex</connector-name>
|
<connector-name class="pill">MangaDex</connector-name>
|
||||||
@ -33,15 +33,6 @@
|
|||||||
</publication>
|
</publication>
|
||||||
</content>
|
</content>
|
||||||
|
|
||||||
<popup id="newMangaPopup">
|
|
||||||
<blur-background id="blurBackgroundNewMangaPopup" onclick="newMangaPopup.style.display = 'none';"></blur-background>
|
|
||||||
<div id="newMangaPopupSelector">
|
|
||||||
<select id="newMangaConnector" />
|
|
||||||
<input type="text" placeholder="Title" id="newMangaTitle" />
|
|
||||||
</div>
|
|
||||||
<div id="newMangaResult"></div>
|
|
||||||
</popup>
|
|
||||||
|
|
||||||
<popup id="settingsPopup">
|
<popup id="settingsPopup">
|
||||||
<blur-background id="blurBackgroundSettingsPopup" onclick="
|
<blur-background id="blurBackgroundSettingsPopup" onclick="
|
||||||
settingsPopup.style.display = 'none';"></blur-background>
|
settingsPopup.style.display = 'none';"></blur-background>
|
||||||
@ -89,7 +80,7 @@
|
|||||||
</popup>
|
</popup>
|
||||||
|
|
||||||
<popup id="publicationViewerPopup">
|
<popup id="publicationViewerPopup">
|
||||||
<blur-background id="blurBackgroundPublicationPopup" onclick="publicationViewerPopup.style.display= 'none';"></blur-background>
|
<blur-background id="blurBackgroundPublicationPopup"></blur-background>
|
||||||
<publication-viewer>
|
<publication-viewer>
|
||||||
<img id="pubviewcover" src="media/cover.jpg" alt="cover">
|
<img id="pubviewcover" src="media/cover.jpg" alt="cover">
|
||||||
<publication-information>
|
<publication-information>
|
||||||
|
@ -1,7 +1,30 @@
|
|||||||
let jobs = [];
|
let jobs = [];
|
||||||
let notificationConnectorTypes = [];
|
let notificationConnectorTypes = [];
|
||||||
let libraryConnectorTypes = [];
|
let libraryConnectorTypes = [];
|
||||||
let selectedManga;
|
|
||||||
|
function Setup(){
|
||||||
|
GetAvailableNotificationConnectors().then((json) => {
|
||||||
|
json.forEach(connector => {
|
||||||
|
notificationConnectorTypes[connector.Key] = connector.Value;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
GetAvailableLibraryConnectors().then((json) => {
|
||||||
|
json.forEach(connector => {
|
||||||
|
libraryConnectorTypes[connector.Key] = connector.Value;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
GetMonitorJobs().then((json) => {
|
||||||
|
json.forEach(job => {
|
||||||
|
if(!jobs.includes(job)){
|
||||||
|
jobs.push(job);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Setup();
|
||||||
|
|
||||||
|
|
||||||
const searchBox = document.querySelector("#searchbox");
|
const searchBox = document.querySelector("#searchbox");
|
||||||
const settingsPopup = document.querySelector("#settingsPopup");
|
const settingsPopup = document.querySelector("#settingsPopup");
|
||||||
@ -9,13 +32,13 @@ const settingsCog = document.querySelector("#settingscog");
|
|||||||
const tasksContent = document.querySelector("content");
|
const tasksContent = document.querySelector("content");
|
||||||
const createMonitorTaskButton = document.querySelector("#createMonitorTaskButton");
|
const createMonitorTaskButton = document.querySelector("#createMonitorTaskButton");
|
||||||
const createDownloadChapterTaskButton = document.querySelector("#createDownloadChapterTaskButton");
|
const createDownloadChapterTaskButton = document.querySelector("#createDownloadChapterTaskButton");
|
||||||
const mangaViewerPopup = document.querySelector("#publicationViewerPopup");
|
const publicationViewerPopup = document.querySelector("#publicationViewerPopup");
|
||||||
const mangaViewerWindow = document.querySelector("publication-viewer");
|
const publicationViewerWindow = document.querySelector("publication-viewer");
|
||||||
const mangaViewerDescription = document.querySelector("#publicationViewerDescription");
|
const publicationViewerDescription = document.querySelector("#publicationViewerDescription");
|
||||||
const mangaViewerName = document.querySelector("#publicationViewerName");
|
const publicationViewerName = document.querySelector("#publicationViewerName");
|
||||||
const mangaViewerTags = document.querySelector("#publicationViewerTags");
|
const publicationViewerTags = document.querySelector("#publicationViewerTags");
|
||||||
const mangaViewerAuthor = document.querySelector("#publicationViewerAuthor");
|
const publicationViewerAuthor = document.querySelector("#publicationViewerAuthor");
|
||||||
const mangaViewCover = document.querySelector("#pubviewcover");
|
const pubviewcover = document.querySelector("#pubviewcover");
|
||||||
const publicationDelete = document.querySelector("publication-delete");
|
const publicationDelete = document.querySelector("publication-delete");
|
||||||
const publicationTaskStart = document.querySelector("publication-starttask");
|
const publicationTaskStart = document.querySelector("publication-starttask");
|
||||||
const settingDownloadLocation = document.querySelector("#downloadLocation");
|
const settingDownloadLocation = document.querySelector("#downloadLocation");
|
||||||
@ -33,36 +56,8 @@ const settingKavitaConfigured = document.querySelector("#kavitaConfigured");
|
|||||||
const settingGotifyConfigured = document.querySelector("#gotifyConfigured");
|
const settingGotifyConfigured = document.querySelector("#gotifyConfigured");
|
||||||
const settingLunaseaConfigured = document.querySelector("#lunaseaConfigured");
|
const settingLunaseaConfigured = document.querySelector("#lunaseaConfigured");
|
||||||
const settingApiUri = document.querySelector("#settingApiUri");
|
const settingApiUri = document.querySelector("#settingApiUri");
|
||||||
const newMangaPopup = document.querySelector("#newMangaPopup");
|
|
||||||
const newMangaConnector = document.querySelector("#newMangaConnector");
|
|
||||||
const newMangaTitle = document.querySelector("#newMangaTitle");
|
|
||||||
const newMangaResult = document.querySelector("#newMangaResult");
|
|
||||||
|
|
||||||
function Setup(){
|
|
||||||
GetAvailableNotificationConnectors().then((json) => {
|
|
||||||
json.forEach(connector => {
|
|
||||||
notificationConnectorTypes[connector.Key] = connector.Value;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
GetAvailableLibraryConnectors().then((json) => {
|
|
||||||
json.forEach(connector => {
|
|
||||||
libraryConnectorTypes[connector.Key] = connector.Value;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
GetAvailableControllers().then((json) => {
|
|
||||||
json.forEach(connector => {
|
|
||||||
var option = document.createElement('option');
|
|
||||||
option.value = connector;
|
|
||||||
option.innerText = connector;
|
|
||||||
newMangaConnector.appendChild(option);
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
Setup();
|
|
||||||
|
|
||||||
|
ResetContent();
|
||||||
function ResetContent(){
|
function ResetContent(){
|
||||||
//Delete everything
|
//Delete everything
|
||||||
tasksContent.replaceChildren();
|
tasksContent.replaceChildren();
|
||||||
@ -73,92 +68,54 @@ function ResetContent(){
|
|||||||
var plus = document.createElement("p");
|
var plus = document.createElement("p");
|
||||||
plus.innerText = "+";
|
plus.innerText = "+";
|
||||||
add.appendChild(plus);
|
add.appendChild(plus);
|
||||||
add.addEventListener("click", () => ShowNewMangaSearch());
|
add.addEventListener("click", () => ShowNewTaskWindow());
|
||||||
tasksContent.appendChild(add);
|
tasksContent.appendChild(add);
|
||||||
}
|
}
|
||||||
|
|
||||||
function ShowNewMangaSearch(){
|
|
||||||
newMangaTitle.value = "";
|
|
||||||
newMangaPopup.style.display = "block";
|
|
||||||
newMangaResult.replaceChildren();
|
|
||||||
}
|
|
||||||
|
|
||||||
newMangaTitle.addEventListener("keypress", (event) => { if(event.key === "Enter") GetNewMangaItems();})
|
|
||||||
function GetNewMangaItems(){
|
|
||||||
if(newMangaTitle.value.length < 4)
|
|
||||||
return;
|
|
||||||
|
|
||||||
newMangaResult.replaceChildren();
|
|
||||||
newMangaConnector.disabled = true;
|
|
||||||
newMangaTitle.disabled = true;
|
|
||||||
GetPublicationFromConnector(newMangaConnector.value, newMangaTitle.value).then((json) => {
|
|
||||||
//console.log(json);
|
|
||||||
if(json.length > 0)
|
|
||||||
newMangaResult.style.display = "flex";
|
|
||||||
json.forEach(result => {
|
|
||||||
var mangaElement = CreateManga(result, newMangaConnector.value)
|
|
||||||
newMangaResult.appendChild(mangaElement);
|
|
||||||
mangaElement.addEventListener("click", (event) => {
|
|
||||||
ShowMangaWindow(result, event, true);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
newMangaConnector.disabled = false;
|
|
||||||
newMangaTitle.disabled = false;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//Returns a new "Publication" Item to display in the jobs section
|
//Returns a new "Publication" Item to display in the jobs section
|
||||||
function CreateManga(manga, connector){
|
function CreatePublication(publication, connector){
|
||||||
var mangaElement = document.createElement('publication');
|
var publicationElement = document.createElement('publication');
|
||||||
mangaElement.setAttribute("id", manga.internalId);
|
publicationElement.setAttribute("id", publication.internalId);
|
||||||
var mangaImage = document.createElement('img');
|
var img = document.createElement('img');
|
||||||
mangaImage.src = GetCoverUrl(manga.internalId);
|
img.src = `imageCache/${publication.coverFileNameInCache}`;
|
||||||
mangaElement.appendChild(mangaImage);
|
publicationElement.appendChild(img);
|
||||||
var info = document.createElement('publication-information');
|
var info = document.createElement('publication-information');
|
||||||
var connectorName = document.createElement('connector-name');
|
var connectorName = document.createElement('connector-name');
|
||||||
connectorName.innerText = connector;
|
connectorName.innerText = connector;
|
||||||
connectorName.className = "pill";
|
connectorName.className = "pill";
|
||||||
info.appendChild(connectorName);
|
info.appendChild(connectorName);
|
||||||
var mangaName = document.createElement('publication-name');
|
var publicationName = document.createElement('publication-name');
|
||||||
mangaName.innerText = manga.sortName;
|
publicationName.innerText = publication.sortName;
|
||||||
info.appendChild(mangaName);
|
info.appendChild(publicationName);
|
||||||
mangaElement.appendChild(info);
|
publicationElement.appendChild(info);
|
||||||
return mangaElement;
|
if(publications.filter(pub => pub.internalId === publication.internalId) < 1)
|
||||||
|
publications.push(publication);
|
||||||
|
return publicationElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
createMonitorTaskButton.addEventListener("click", () => {
|
function ShowPublicationViewerWindow(publicationId, event, add){
|
||||||
NewMonitorJob();
|
|
||||||
mangaViewerPopup.style.display = "none";
|
|
||||||
});
|
|
||||||
function NewMonitorJob(){
|
|
||||||
CreateMonitorJob(newMangaConnector.value, selectedManga.internalId);
|
|
||||||
UpdateJobs();
|
|
||||||
}
|
|
||||||
|
|
||||||
function ShowMangaWindow(manga, event, add){
|
|
||||||
selectedManga = manga;
|
|
||||||
//Show popup
|
//Show popup
|
||||||
mangaViewerPopup.style.display = "block";
|
publicationViewerPopup.style.display = "block";
|
||||||
|
|
||||||
//Set position to mouse-position
|
//Set position to mouse-position
|
||||||
if(event.clientY < window.innerHeight - mangaViewerWindow.offsetHeight)
|
if(event.clientY < window.innerHeight - publicationViewerWindow.offsetHeight)
|
||||||
mangaViewerWindow.style.top = `${event.clientY}px`;
|
publicationViewerWindow.style.top = `${event.clientY}px`;
|
||||||
else
|
else
|
||||||
mangaViewerWindow.style.top = `${event.clientY - mangaViewerWindow.offsetHeight}px`;
|
publicationViewerWindow.style.top = `${event.clientY - publicationViewerWindow.offsetHeight}px`;
|
||||||
|
|
||||||
if(event.clientX < window.innerWidth - mangaViewerWindow.offsetWidth)
|
if(event.clientX < window.innerWidth - publicationViewerWindow.offsetWidth)
|
||||||
mangaViewerWindow.style.left = `${event.clientX}px`;
|
publicationViewerWindow.style.left = `${event.clientX}px`;
|
||||||
else
|
else
|
||||||
mangaViewerWindow.style.left = `${event.clientX - mangaViewerWindow.offsetWidth}px`;
|
publicationViewerWindow.style.left = `${event.clientX - publicationViewerWindow.offsetWidth}px`;
|
||||||
|
|
||||||
//Edit information inside the window
|
//Edit information inside the window
|
||||||
mangaViewerName.innerText = manga.sortName;
|
var publication = publications.filter(pub => pub.internalId === publicationId)[0];
|
||||||
mangaViewerTags.innerText = manga.tags.join(", ");
|
publicationViewerName.innerText = publication.sortName;
|
||||||
mangaViewerDescription.innerText = manga.description;
|
publicationViewerTags.innerText = publication.tags.join(", ");
|
||||||
mangaViewerAuthor.innerText = manga.authors.join(',');
|
publicationViewerDescription.innerText = publication.description;
|
||||||
mangaViewCover.src = GetCoverUrl(manga.internalId);
|
publicationViewerAuthor.innerText = publication.authors.join(',');
|
||||||
toEditId = manga.internalId;
|
pubviewcover.src = `imageCache/${publication.coverFileNameInCache}`;
|
||||||
|
toEditId = publicationId;
|
||||||
|
|
||||||
//Check what action should be listed
|
//Check what action should be listed
|
||||||
if(add){
|
if(add){
|
||||||
@ -320,22 +277,3 @@ function UpdateSettings(){
|
|||||||
function utf8_to_b64(str) {
|
function utf8_to_b64(str) {
|
||||||
return window.btoa(unescape(encodeURIComponent( str )));
|
return window.btoa(unescape(encodeURIComponent( str )));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
UpdateJobs();
|
|
||||||
setInterval(() => {
|
|
||||||
UpdateJobs();
|
|
||||||
}, 1000);
|
|
||||||
function UpdateJobs(){
|
|
||||||
GetMonitorJobs().then((json) => {
|
|
||||||
ResetContent();
|
|
||||||
console.log(json);
|
|
||||||
json.forEach(job => {
|
|
||||||
var mangaView = CreateManga(job.manga, job.mangaConnector.name);
|
|
||||||
mangaView.addEventListener("click", (event) => {
|
|
||||||
ShowMangaWindow(job.manga, event, false);
|
|
||||||
});
|
|
||||||
tasksContent.appendChild(mangaView);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
@ -305,49 +305,138 @@ popup popup-window popup-content input, select {
|
|||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#newMangaPopup > div {
|
#selectPublicationPopup publication {
|
||||||
z-index: 3;
|
width: 150px;
|
||||||
position: relative;
|
height: 250px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#newMangaPopup > #newMangaPopupSelector {
|
#createTaskPopup {
|
||||||
width: 600px;
|
z-index: 7;
|
||||||
height: 40px;
|
|
||||||
margin: 80px auto 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#newMangaPopup > div > #newMangaConnector, #newMangaTitle {
|
#createTaskPopup input {
|
||||||
margin: 0;
|
height: 30px;
|
||||||
display: inline-block;
|
width: 200px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#newMangaPopup #newMangaConnector {
|
#createMonitorTaskPopup, #createDownloadChaptersTask {
|
||||||
height: 40px;
|
z-index: 9;
|
||||||
width: 100px;
|
|
||||||
padding: 0 0 0 5px;
|
|
||||||
border-radius: 5px 0 0 5px;
|
|
||||||
border-right: 1px solid darkgray;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#newMangaPopup #newMangaTitle{
|
#createMonitorTaskPopup input[type="number"] {
|
||||||
height: 40px;
|
width: 40px;
|
||||||
width: 495px;
|
|
||||||
padding: 0 0 0 5px;
|
|
||||||
border-radius: 0 5px 5px 0;
|
|
||||||
border: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#newMangaResult {
|
#createDownloadChaptersTask popup-content {
|
||||||
display: none;
|
flex-direction: column;
|
||||||
flex-direction: row;
|
align-items: start;
|
||||||
justify-content: center;
|
}
|
||||||
margin: 5px auto 0;
|
|
||||||
border-radius: 5px;
|
#createDownloadChaptersTask popup-content > * {
|
||||||
padding: 5px;
|
margin: 3px 0;
|
||||||
width: min-content;
|
}
|
||||||
max-width: 98%;
|
|
||||||
max-height: 400px;
|
#createDownloadChaptersTask #chapterOutput {
|
||||||
overflow-x: scroll;
|
max-height: 50vh;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
#createDownloadChaptersTask #chapterOutput .index{
|
||||||
|
display: inline-block;
|
||||||
|
width: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#createDownloadChaptersTask #chapterOutput .index::after{
|
||||||
|
content: ':';
|
||||||
|
}
|
||||||
|
|
||||||
|
#createDownloadChaptersTask #chapterOutput .vol::before{
|
||||||
|
content: 'Vol.';
|
||||||
|
}
|
||||||
|
|
||||||
|
#createDownloadChaptersTask #chapterOutput .vol{
|
||||||
|
display: inline-block;
|
||||||
|
width: 45px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#createDownloadChaptersTask #chapterOutput .ch::before{
|
||||||
|
content: 'Ch.';
|
||||||
|
}
|
||||||
|
|
||||||
|
#createDownloadChaptersTask #chapterOutput .ch {
|
||||||
|
display: inline-block;
|
||||||
|
width: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#downloadTasksPopup popup-window {
|
||||||
|
left: 0;
|
||||||
|
top: 80px;
|
||||||
|
margin: 0 0 0 10px;
|
||||||
|
height: calc(100vh - 140px);
|
||||||
|
width: 400px;
|
||||||
|
max-width: 95vw;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
#downloadTasksPopup popup-content {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: start;
|
||||||
|
margin: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#downloadTasksPopup popup-content > div {
|
||||||
|
display: block;
|
||||||
|
height: 80px;
|
||||||
|
position: relative;
|
||||||
|
margin: 5px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#downloadTasksPopup popup-content > div > img {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
height: 100%;
|
||||||
|
width: 60px;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
object-fit: cover;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#downloadTasksPopup popup-content > div > span {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
width: max-content;
|
||||||
|
}
|
||||||
|
|
||||||
|
#downloadTasksPopup popup-content > div > .pubTitle {
|
||||||
|
left: 70px;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#downloadTasksPopup popup-content > div > .chapterName {
|
||||||
|
left: 70px;
|
||||||
|
top: 28pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#downloadTasksPopup popup-content > div > .chapterNumber {
|
||||||
|
left: 70px;
|
||||||
|
top: 14pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#downloadTasksPopup popup-content > div > progress {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
left: 150px;
|
||||||
|
bottom: 0;
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#downloadTasksPopup popup-content > div > .progressStr {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
left: 70px;
|
||||||
|
bottom: 0;
|
||||||
|
width: 70px;
|
||||||
}
|
}
|
||||||
|
|
||||||
blur-background {
|
blur-background {
|
||||||
@ -355,10 +444,18 @@ blur-background {
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
background: rgba(245, 169, 184, 0.58);
|
background-color: black;
|
||||||
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
|
opacity: 0.5;
|
||||||
backdrop-filter: blur(4.5px);
|
}
|
||||||
-webkit-backdrop-filter: blur(4.5px);
|
|
||||||
|
#taskSelectOutput{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: start;
|
||||||
|
align-content: start;
|
||||||
|
max-height: 70vh;
|
||||||
|
overflow-y: scroll;
|
||||||
}
|
}
|
||||||
|
|
||||||
#publicationViewerPopup{
|
#publicationViewerPopup{
|
||||||
|
Loading…
Reference in New Issue
Block a user