Merge branch 'develop' into bugfix/fixed-infinite-tiles-styles
This commit is contained in:
commit
d0a01ff723
@ -4,8 +4,8 @@
|
||||
"Archives": "Arxivlər",
|
||||
"BackToParentFolderButton": "Ana qovluğa qayıt",
|
||||
"ByAuthor": "Müəllif",
|
||||
"ByCreationDate": "Yaradıldı",
|
||||
"ByLastModifiedDate": "Dəyişdirilib",
|
||||
"ByCreation": "Yaradıldı",
|
||||
"ByLastModified": "Dəyişdirilib",
|
||||
"ByTitle": "Başlıq",
|
||||
"CommonEmptyContainerDescription": "'Ümumi' bölməsi portal inzibatçısı tərəfindən bütün istifadəçilərlə paylaşılan faylları ehtiva edir. Orada yalnız portal inzibatçıları fayl yarada bilər. İstifadəçilərə bölmə daxilində müəyyən bir qovluğa tam giriş verilə bilər. Bu şəkildə bu qovluqda fayllar yarada/yükləyə biləcəklər.",
|
||||
"ContainsSpecCharacter": "Başlıqda aşağıdakı simvollardan heç biri ola bilməz: *+: \"<>? |/ ",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Архиви",
|
||||
"BackToParentFolderButton": "Обратно към родителската папка",
|
||||
"ByAuthor": "Автор",
|
||||
"ByCreationDate": "Създаден",
|
||||
"ByLastModifiedDate": "Модифициран",
|
||||
"ByCreation": "Създаден",
|
||||
"ByLastModified": "Модифициран",
|
||||
"ByTitle": "Заглавие",
|
||||
"CommonEmptyContainerDescription": "Разделът 'Често срещани' съдържа файлове, които са споделени с всички потребители от администратора на портала. Само администраторите на портала могат да създават файлове там. Потребителите могат да се сдобият с Пълен достъп до определена папка в рамките на раздела. По този начин те ще могат да създават/качват файлове във всяка папка.",
|
||||
"ContainsSpecCharacter": "Заглавието не може да съдържа някой от следните символи: *+:\"<>?|/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Archivy",
|
||||
"BackToParentFolderButton": "Zpět do nadřazené složky",
|
||||
"ByAuthor": "Autor",
|
||||
"ByCreationDate": "Vytvořeno",
|
||||
"ByLastModifiedDate": "Upraveno",
|
||||
"ByCreation": "Vytvořeno",
|
||||
"ByLastModified": "Upraveno",
|
||||
"ByTitle": "Název",
|
||||
"CommonEmptyContainerDescription": "Sekce 'Sdílené' obsahuje soubory, které správce portálu sdílí se všemi uživateli. Soubory v ní mohou vytvářet pouze správci portálu. Uživatelům lze v rámci sekce udělit plný přístup k určité složce. Tímto způsobem budou moci vytvářet/nahrávat soubory právě v této složce. ",
|
||||
"ContainsSpecCharacter": "Název nesmí obsahovat žádný z následujících znaků: *+:\"<>?|/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Archive",
|
||||
"BackToParentFolderButton": "Zurück zum übergeordneten Ordner",
|
||||
"ByAuthor": "Verfasser",
|
||||
"ByCreationDate": "Erstellt",
|
||||
"ByLastModifiedDate": "Verändert",
|
||||
"ByCreation": "Erstellt",
|
||||
"ByLastModified": "Verändert",
|
||||
"ByTitle": "Titel",
|
||||
"CommonEmptyContainerDescription": "In gemeinsamen Dokumenten finden Sie Dateien, auf denen alle Benutzer Zugriff haben. Nur Portaladministratoren können dort Dateien erstellen. Benutzern kann der vollständigen Zugriff auf einen bestimmten Ordner innerhalb des Abschnitts erteilt werden. Dann können Sie Dateien in diesem Ordner erstellen / hochladen.",
|
||||
"ContainsSpecCharacter": "Der Titel darf diese Symbole nicht beinhalten: *+:\"<>?|/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Αρχειοθετήσεις",
|
||||
"BackToParentFolderButton": "Επιστροφή στον γονικό φάκελο",
|
||||
"ByAuthor": "Δημιουργός",
|
||||
"ByCreationDate": "Δημιουργήθηκε",
|
||||
"ByLastModifiedDate": "Τροποποιήθηκε",
|
||||
"ByCreation": "Δημιουργήθηκε",
|
||||
"ByLastModified": "Τροποποιήθηκε",
|
||||
"ByTitle": "Τίτλος",
|
||||
"CommonEmptyContainerDescription": "Η ενότητα «Κοινά» περιέχει αρχεία που μοιράζονται σε όλους τους χρήστες από τον διαχειριστή της πύλης. Μόνο οι διαχειριστές της πύλης μπορούν να δημιουργήσουν αρχεία εκεί. Οι χρήστες μπορούν να έχουν πλήρη πρόσβαση σε έναν συγκεκριμένο φάκελο εντός της ενότητας. Έτσι, θα μπορούν να δημιουργούν/μεταφορτώνουν αρχεία σε αυτόν τον φάκελο.",
|
||||
"ContainsSpecCharacter": "Ο τίτλος δεν μπορεί να περιέχει τους ακόλουθους χαρακτήρες: *+:\"<>?|/",
|
||||
|
@ -1,12 +1,12 @@
|
||||
{
|
||||
"AdvancedFilter": "Advanced search options",
|
||||
"AdvancedFilter": "Search options",
|
||||
"All": "All",
|
||||
"AllFiles": "All files",
|
||||
"Archives": "Archives",
|
||||
"BackToParentFolderButton": "Back to parent folder",
|
||||
"ByAuthor": "Author",
|
||||
"ByCreationDate": "Created",
|
||||
"ByLastModifiedDate": "Modified",
|
||||
"ByCreation": "Created",
|
||||
"ByLastModified": "Modified",
|
||||
"ByOwner": "Owner",
|
||||
"ByTitle": "Title",
|
||||
"CollaborationRooms": "Collaboration",
|
||||
@ -24,7 +24,9 @@
|
||||
"EmptyFolderHeader": "No files in this folder",
|
||||
"EmptyRecycleBin": "Empty Trash",
|
||||
"EmptyScreenFolder": "No docs here yet",
|
||||
"ExcludeSubfolders": "Exclude subfolders",
|
||||
"FavoritesEmptyContainerDescription": "To mark files as favorites or remove them from this list, use the context menu.",
|
||||
"FileContents": "File contents",
|
||||
"FileRemoved": "File moved to Trash",
|
||||
"FileRenamed": "The document '{{oldTitle}}' is renamed to '{{newTitle}}'",
|
||||
"FillingFormRooms": "Filling form",
|
||||
@ -33,6 +35,7 @@
|
||||
"Folder": "Folder",
|
||||
"FolderRemoved": "Folder moved to Trash",
|
||||
"FolderRenamed": "The folder '{{folderTitle}}' is renamed to '{{newFoldedTitle}}'",
|
||||
"Forms": "Forms",
|
||||
"FromArchive": "Move from archive",
|
||||
"GoToMyButton": "Go to My Documents",
|
||||
"Images": "Images",
|
||||
@ -40,6 +43,7 @@
|
||||
"MarkAsFavorite": "Mark as favorite",
|
||||
"MarkRead": "Mark as read",
|
||||
"MarkedAsFavorite": "Added to favorites",
|
||||
"FormsTemplates": "Forms templates",
|
||||
"Media": "Media",
|
||||
"MoveItem": "<strong>{{title}}</strong> moved",
|
||||
"MoveItems": "<strong>{{qty}}</strong> elements have been moved",
|
||||
@ -74,6 +78,7 @@
|
||||
"ReviewRooms": "Review",
|
||||
"RoomRemoved": "Room removed",
|
||||
"RoomsRemoved": "Rooms removed",
|
||||
"SearchByContent": "Search by file contents",
|
||||
"SendByEmail": "Send by email",
|
||||
"Share": "Share",
|
||||
"SharedEmptyContainerDescription": "The 'Shared with Me' section shows files shared to you by teammates. If you haven't seen the latest changes, they are marked as new. You can remove the files from the list using the context menu. ",
|
||||
@ -93,5 +98,6 @@
|
||||
"VersionHistory": "Version history",
|
||||
"ViewList": "List",
|
||||
"ViewOnlyRooms": "View-only",
|
||||
"ViewTiles": "Tiles"
|
||||
"ViewTiles": "Tiles",
|
||||
"WithSubfolders": "With subfolders"
|
||||
}
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Archivos",
|
||||
"BackToParentFolderButton": "Volver a la carpeta principal",
|
||||
"ByAuthor": "Autor",
|
||||
"ByCreationDate": "Creado",
|
||||
"ByLastModifiedDate": "Modificado",
|
||||
"ByCreation": "Creado",
|
||||
"ByLastModified": "Modificado",
|
||||
"ByTitle": "Título",
|
||||
"CommonEmptyContainerDescription": "La sección 'Documentos comunes' contiene archivos compartidos por el administrador del portal con todos los usuarios. Sólo los administradores del portal pueden crear archivos allí. Los usuarios pueden tener acceso completo a una determinada carpeta dentro de la sección. De esta manera podrán crear/subir archivos en esta misma carpeta. ",
|
||||
"ContainsSpecCharacter": "El título no puede contener ninguno de los siguientes caracteres: *+:\"<>?|/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Arkistot",
|
||||
"BackToParentFolderButton": "Takaisin pääkansioon",
|
||||
"ByAuthor": "Tekijä",
|
||||
"ByCreationDate": "Luotu",
|
||||
"ByLastModifiedDate": "Muokattu",
|
||||
"ByCreation": "Luotu",
|
||||
"ByLastModified": "Muokattu",
|
||||
"ByTitle": "Otsikko",
|
||||
"CommonEmptyContainerDescription": "’Yleinen’ -osio sisältää tiedostoja, jotka portaalin ylläpitäjä on jakanut kaikille käyttäjille. Vain portaalin ylläpitäjät voivat luoda tiedostoja sinne. Käyttäjille voidaan myöntää täysi käyttöoikeus tiettyyn osion kansioon. Tällä tavalla he voivat luoda/ladata tiedostoja juuri tähän kansioon. ",
|
||||
"ContainsSpecCharacter": "Otsikko ei voi sisältää mitään seuraavista merkeistä: *+: \"<>? |/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Archives",
|
||||
"BackToParentFolderButton": "Retour vers le dossier précédent",
|
||||
"ByAuthor": "Auteur",
|
||||
"ByCreationDate": "Créé",
|
||||
"ByLastModifiedDate": "Modifié",
|
||||
"ByCreation": "Créé",
|
||||
"ByLastModified": "Modifié",
|
||||
"ByTitle": "Titre",
|
||||
"CommonEmptyContainerDescription": "La section \"Documents Communs\" contient des fichiers partagés par l'administrateur du portail avec tous les utilisateurs. Seuls les administrateurs du portail peuvent y créer des fichiers. Les utilisateurs peuvent obtenir un accès complet à un certain dossier de la section. Ainsi, ils pourront créer/télécharger des fichiers dans ce même dossier. ",
|
||||
"ContainsSpecCharacter": "Le titre ne peut contenir aucun des caractères suivants : *+ :\"<>?|/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Արխիվներ",
|
||||
"BackToParentFolderButton": "Վերադառնալ ծնող պանակ",
|
||||
"ByAuthor": "Հեղինակ",
|
||||
"ByCreationDate": "Ստեղծված",
|
||||
"ByLastModifiedDate": "Փոփոխված",
|
||||
"ByCreation": "Ստեղծված",
|
||||
"ByLastModified": "Փոփոխված",
|
||||
"ByTitle": "Անվանում",
|
||||
"CommonEmptyContainerDescription": "'Ընդհանուր'բաժինը պարունակում է ֆայլեր, որոնք կայքէջի ադմինիստրատորի կողմից համօգտագործվում են բոլոր օգտատերերին: Միայն կայքէջի ադմինիստրատորները կարող են այնտեղ ֆայլեր ստեղծել։ Օգտագործողներին կարող է տրվել ամբողջական մուտք դեպի որոշակի պանակ այս բաժնում: Այս կերպ նրանք կկարողանան ստեղծել/վերբեռնել ֆայլեր հենց այս պանակում:",
|
||||
"ContainsSpecCharacter": "Վերնագիրը չի կարող պարունակել հետևյալ նիշերից որևէ մեկը՝ *+:\"<>?|/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Archivi",
|
||||
"BackToParentFolderButton": "Vai alla cartella superiore",
|
||||
"ByAuthor": "Autore",
|
||||
"ByCreationDate": "Creato",
|
||||
"ByLastModifiedDate": "Modificato",
|
||||
"ByCreation": "Creato",
|
||||
"ByLastModified": "Modificato",
|
||||
"ByTitle": "Titolo",
|
||||
"CommonEmptyContainerDescription": "La sezione \"Comune\" contiene i file condivisi con tutti gli utenti di tipo amministratore del portale. Solo gli amministratori del portale possono creare file nel posto \"Comune\". Agli utenti può essere concesso l'accesso completo a una determinata cartella all'interno della sezione. In questo modo potranno creare / caricare file in questa stessa cartella.",
|
||||
"ContainsSpecCharacter": "Il titolo non può contenere nessuno dei seguenti caratteri: *+:\"<>?|/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "アーカイブ",
|
||||
"BackToParentFolderButton": "親フォルダに戻る",
|
||||
"ByAuthor": "作成者",
|
||||
"ByCreationDate": "作成",
|
||||
"ByLastModifiedDate": "変更",
|
||||
"ByCreation": "作成",
|
||||
"ByLastModified": "変更",
|
||||
"ByTitle": "タイトル",
|
||||
"CommonEmptyContainerDescription": "「共通」セクションには、ポータル管理者が全ユーザに共有するファイルがあります。ここにファイルを作成できるのは、ポータル管理者のみです。ユーザーは、セクション内の特定のフォルダへのフルアクセスを許可することができます。この場合、ユーザーは、このフォルダにファイルを作成/アップロードすることができます。 ",
|
||||
"ContainsSpecCharacter": "タイトルには以下の文字*+:\"<>?|/は使用できません。",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "아카이브",
|
||||
"BackToParentFolderButton": "상위 폴더로 돌아가기",
|
||||
"ByAuthor": "생성자",
|
||||
"ByCreationDate": "생성일",
|
||||
"ByLastModifiedDate": "수정일",
|
||||
"ByCreation": "생성일",
|
||||
"ByLastModified": "수정일",
|
||||
"ByTitle": "제목",
|
||||
"CommonEmptyContainerDescription": "'공통' 섹션은 포털 관리자에 의해 모든 사용자에게 공유된 파일을 포함합니다. 포털 관리자만 공통 섹션에 파일을 생성할 수 있습니다. 사용자는 해당 섹션 내 특정 폴더에 대한 전체 액세스 권한을 부여 받을 수 있습니다. 그리고 이러한 방식으로 해당 폴더에 파일을 생성/업로드할 수 있습니다.",
|
||||
"ContainsSpecCharacter": "제목에는 다음 문자가 포함될 수 없습니다: *+:\"<>?|/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "ຮວບຮວມ",
|
||||
"BackToParentFolderButton": "ກັບໄປທີ່ແຟ້ມຫຼັກ",
|
||||
"ByAuthor": "ຜູ້ຂຽນ",
|
||||
"ByCreationDate": "ສ້າງ",
|
||||
"ByLastModifiedDate": "ແກ້ໄຂ",
|
||||
"ByCreation": "ສ້າງ",
|
||||
"ByLastModified": "ແກ້ໄຂ",
|
||||
"ByTitle": "ຫົວຂໍ້",
|
||||
"CommonEmptyContainerDescription": "ສ່ວນ common 'ມີເອກະສານທີ່ແບ່ງປັນໃຫ້ຜູ້ຊົມໃຊ້ທັງໝົດ ໂດຍ Portal admin. ມີພຽງແຕ່ Portal ເປັນຜູ້ຮັບຮອງເທົ່ານັ້ນທີ່ສາມາດສ້າງເອກະສານຢູ່ບ່ອນນັ້ນ. ຜູ້ໃຊ້ສາມາດໄດ້ຮັບການອະນຸຍາດເຂົ້າເຖິງໂຟນເດີທີ່ແນ່ນອນພາຍໃນພາກສ່ວນໃດໜື່ງ. ວິທີນີ້ພວກເຂົາຈະສາມາດສ້າງ / ອັບໂຫລດເອກະສານໃນໂຟນເດີນັ້ນໄດ້.",
|
||||
"ContainsSpecCharacter": "ຫົວຂໍ້ບໍ່ສາມາດມີຕົວອັກສອນຕໍ່ໄປນີ້: * +: \"<>? | /",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Arhīvi",
|
||||
"BackToParentFolderButton": "Atpakaļ uz vecāku mapi",
|
||||
"ByAuthor": "Autors",
|
||||
"ByCreationDate": "Izveidots",
|
||||
"ByLastModifiedDate": "Modificēts",
|
||||
"ByCreation": "Izveidots",
|
||||
"ByLastModified": "Modificēts",
|
||||
"ByTitle": "Nosaukums",
|
||||
"CommonEmptyContainerDescription": "Sadaļā 'Kopējs' ir faili, kurus visiem lietotājiem ir kopīgojis portāla administrators. Failus tur var izveidot tikai portāla administratori. Lietotājiem var piešķirt pilnu piekļuvi noteiktai sadaļas mapei. Tādā veidā viņi varēs izveidot/augšupielādēt failus tieši šajā mapē. ",
|
||||
"ContainsSpecCharacter": "Nosaukumā nedrīkst būt neviena no šīm rakstzīmēm: *+:\"<>?|/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Archieven",
|
||||
"BackToParentFolderButton": "Terug naar bovenliggende map",
|
||||
"ByAuthor": "Auteur",
|
||||
"ByCreationDate": "Aangemaakt",
|
||||
"ByLastModifiedDate": "Gewijzigd",
|
||||
"ByCreation": "Aangemaakt",
|
||||
"ByLastModified": "Gewijzigd",
|
||||
"ByTitle": "Titel",
|
||||
"CommonEmptyContainerDescription": "'Algemene' sectie bevat bestanden die door de portaal beheerder worden gedeeld met alle gebruikers. Alleen portaal beheerders kunnen daar bestanden aanmaken. Gebruikers kunnen volledige toegang krijgen tot een bepaalde map binnen de sectie. Op deze manier kunnen ze bestanden maken/uploaden in deze map. ",
|
||||
"ContainsSpecCharacter": "De titel mag geen van de volgende tekens bevatten: *+:\"<>?|/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Archiwa",
|
||||
"BackToParentFolderButton": "Wróć do folderu nadrzędnego",
|
||||
"ByAuthor": "Autor",
|
||||
"ByCreationDate": "Utworzono",
|
||||
"ByLastModifiedDate": "Zmodyfikowano",
|
||||
"ByCreation": "Utworzono",
|
||||
"ByLastModified": "Zmodyfikowano",
|
||||
"ByTitle": "Tytuł",
|
||||
"CommonEmptyContainerDescription": "Sekcja 'Wspólne' zawiera pliki udostępnione wszystkim użytkownikom przez administratora portalu. Tylko on może tworzyć w niej nowe pliki. Użytkownicy mogą uzyskać pełen dostęp do pewnych folderów znajdujących się w tej sekcji. Dzięki temu będą w stanie tworzyć/wgrywać w nich dowolne pliki. ",
|
||||
"ContainsSpecCharacter": "Tytuł nie może zawierać następujących znaków: *+:\"<>?|/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Arquivos",
|
||||
"BackToParentFolderButton": "Voltar para pasta principal",
|
||||
"ByAuthor": "Autor",
|
||||
"ByCreationDate": "Criado",
|
||||
"ByLastModifiedDate": "Modificado",
|
||||
"ByCreation": "Criado",
|
||||
"ByLastModified": "Modificado",
|
||||
"ByTitle": "Titulo",
|
||||
"CommonEmptyContainerDescription": "A seção 'Comum' contém arquivos compartilhados a todos os usuários pelo administrador do portal. Somente os administradores do portal podem criar arquivos lá. Os usuários podem ter acesso total a uma determinada pasta dentro da seção. Desta forma, eles poderão criar/enviar arquivos nesta mesma pasta.",
|
||||
"ContainsSpecCharacter": "O título não pode conter nenhum dos seguintes caracteres: *+:\"<>?|/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Arquivos",
|
||||
"BackToParentFolderButton": "Voltar à pasta principal",
|
||||
"ByAuthor": "Autor",
|
||||
"ByCreationDate": "Criado",
|
||||
"ByLastModifiedDate": "Modificado",
|
||||
"ByCreation": "Criado",
|
||||
"ByLastModified": "Modificado",
|
||||
"ByTitle": "Titulo",
|
||||
"CommonEmptyContainerDescription": "A secção 'Comum' contém ficheiro partilhados a todos os utilizadores pelo administrador do portal. Apenas os administradores do portal podem criar lá ficheiros. Os utilizadores podem ter acesso total a uma determinada pasta dentro da secção. Desta forma, eles poderão criar/enviar ficheiros nesta mesma pasta.",
|
||||
"ContainsSpecCharacter": "O título não pode conter nenhum dos seguintes caracteres: *+:\"<>?|/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Arhive",
|
||||
"BackToParentFolderButton": "Revenire la folderul părinte",
|
||||
"ByAuthor": "Autor",
|
||||
"ByCreationDate": "A fost creat la",
|
||||
"ByLastModifiedDate": "Modificat",
|
||||
"ByCreation": "A fost creat la",
|
||||
"ByLastModified": "Modificat",
|
||||
"ByTitle": "Titlu",
|
||||
"CommonEmptyContainerDescription": "Secțiunea Comune conține fișiere partajate cu alți utilizatori de către administratorul portalului. Numai administratorii portalului pot crea fișiere acolo. Utilizatorii pot primi acces complet la un anumit dosar din secțiunea. În acest mod, utilizatorii pot crea/încărca fișiere în acest dosar.",
|
||||
"ContainsSpecCharacter": "Numele nu poate conține niciun din caractere următoare: *+:\"<>?|/ ",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Архивы",
|
||||
"BackToParentFolderButton": "Вернуться в папку на уровень выше",
|
||||
"ByAuthor": "Автор",
|
||||
"ByCreationDate": "Создан",
|
||||
"ByLastModifiedDate": "Изменен",
|
||||
"ByCreation": "Создан",
|
||||
"ByLastModified": "Изменен",
|
||||
"ByTitle": "Название",
|
||||
"CollaborationRooms": "Совместное редактирование",
|
||||
"CommonEmptyContainerDescription": "В разделе «Общие документы» отображаются все документы, которыми администратор портала предоставил общий доступ. Только администраторы портала могут создавать папки в этом разделе, но с предоставленным доступом пользователи портала также могут загружать свои файлы здесь. Перетащите файлы со своего компьютера сюда, чтобы загрузить их на свой портал еще проще.",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Archívy",
|
||||
"BackToParentFolderButton": "Späť do nadradeného priečinka",
|
||||
"ByAuthor": "Autor",
|
||||
"ByCreationDate": "Vytvorené",
|
||||
"ByLastModifiedDate": "Upravené",
|
||||
"ByCreation": "Vytvorené",
|
||||
"ByLastModified": "Upravené",
|
||||
"ByTitle": "Názov",
|
||||
"CommonEmptyContainerDescription": "Sekcia 'Spoločné' obsahuje súbory zdieľané všetkým používateľom správcom portálu. Súbory tam môžu vytvárať iba správcovia portálu. Používateľom môže byť udelený úplný prístup k určitému priečinku v rámci sekcie. Týmto spôsobom budú môcť vytvárať/nahrávať súbory práve do tohto priečinka.",
|
||||
"ContainsSpecCharacter": "Názov nemôže obsahovať žiadne z nasledujúcich znakov: *+:\"<>?|/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Arhivi",
|
||||
"BackToParentFolderButton": "Nazaj na starševsko mapo",
|
||||
"ByAuthor": "Avtor",
|
||||
"ByCreationDate": "Ustvarjeno",
|
||||
"ByLastModifiedDate": "Popravljeno",
|
||||
"ByCreation": "Ustvarjeno",
|
||||
"ByLastModified": "Popravljeno",
|
||||
"ByTitle": "Naslov",
|
||||
"CommonEmptyContainerDescription": "'Skupen' razdelek vsebuje datoteke, ki jih skrbnik portala deli z vsemi uporabniki. Samo skrbniki portala lahko tam ustvarjajo datoteke. Uporabniki lahko dobijo popoln dostop do določene mape v razdelku. Tako bodo lahko ustvarili/naložili datoteke ravno v tej mapi. ",
|
||||
"ContainsSpecCharacter": "Naslov ne sme vsebovati nobenega od naslednjih znakov: *+:\"<>?|/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Arşivler",
|
||||
"BackToParentFolderButton": "Üst klasöre geri dön",
|
||||
"ByAuthor": "Yazar",
|
||||
"ByCreationDate": "Oluşturuldu",
|
||||
"ByLastModifiedDate": "Değiştirilmiş",
|
||||
"ByCreation": "Oluşturuldu",
|
||||
"ByLastModified": "Değiştirilmiş",
|
||||
"ByTitle": "Başlık",
|
||||
"CommonEmptyContainerDescription": "'Ortak' bölüm, portal yöneticisi tarafından tüm kullanıcılarla paylaşılan dosyaları içerir. Burada yalnızca portal yöneticileri dosya oluşturabilir. Bu bölüm içinde kullanıcılara belirli bir klasöre Tam erişim verilebilir. Bu şekilde, bu klasörde dosya oluşturabilecek/yükleyebileceklerdir.",
|
||||
"ContainsSpecCharacter": "Başlık şu karakterlerden herhangi birini içeremez:: *+:\"<>?|/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Архіви",
|
||||
"BackToParentFolderButton": "Назад до батьківської папки",
|
||||
"ByAuthor": "Автор",
|
||||
"ByCreationDate": "Створено",
|
||||
"ByLastModifiedDate": "Змінено",
|
||||
"ByCreation": "Створено",
|
||||
"ByLastModified": "Змінено",
|
||||
"ByTitle": "Заголовок",
|
||||
"CommonEmptyContainerDescription": "Розділ \"Загальне\" містить файли, до яких адміністратор порталу надав доступ усім користувачам. Тільки адміністратори порталу можуть створювати тут файли. Користувачам може бути наданий повний доступ до певної папки в розділі. Це дозволить їм створювати файли в цій папці та передавати їх до неї.",
|
||||
"ContainsSpecCharacter": "Заголовок не може містити жодного з цих символів: *+:\"<>?|/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "Lưu trữ",
|
||||
"BackToParentFolderButton": "Quay lại thư mục gốc",
|
||||
"ByAuthor": "Tác giả",
|
||||
"ByCreationDate": "Đã tạo",
|
||||
"ByLastModifiedDate": "Đã sửa đổi",
|
||||
"ByCreation": "Đã tạo",
|
||||
"ByLastModified": "Đã sửa đổi",
|
||||
"ByTitle": "Tiêu đề",
|
||||
"CommonEmptyContainerDescription": "Phần Chung chứa các tệp được quản trị viên cổng thông tin chia sẻ cho tất cả người dùng. Chỉ quản trị viên cổng thông tin mới có thể tạo ệp ở đó. Người dùng có thể được cấp toàn quyền truy cập vào một thư mục nhất định trong phần này. Bằng cách này họ sẽ có thể tạo/tải lên các tệp trong chính thư mục này.",
|
||||
"ContainsSpecCharacter": "Tiêu đề không được chứa bất kỳ ký tự nào sau đây: *+:\"<>?|/",
|
||||
|
@ -4,8 +4,8 @@
|
||||
"Archives": "归档",
|
||||
"BackToParentFolderButton": "返回父文件夹",
|
||||
"ByAuthor": "作者",
|
||||
"ByCreationDate": "创建日期",
|
||||
"ByLastModifiedDate": "修改日期",
|
||||
"ByCreation": "创建日期",
|
||||
"ByLastModified": "修改日期",
|
||||
"ByTitle": "标题",
|
||||
"CommonEmptyContainerDescription": "'Common'部分包含由门户管理员分享给所有用户的文件。仅门户管理员可在此处创建文件。用户将被授予该部分中特定文件夹的完整访问权限。这样其就能在该文件夹中创建/上传文件了。",
|
||||
"ContainsSpecCharacter": "标题中不得包含任意以下字符:*+:\"<>?|/",
|
||||
|
@ -1,7 +1,7 @@
|
||||
import React, { useEffect } from "react";
|
||||
import { useHotkeys } from "react-hotkeys-hook";
|
||||
import { observer, inject } from "mobx-react";
|
||||
import { Events } from "@docspace/client/src/helpers/filesConstants";
|
||||
import { Events } from "@docspace/common/constants";
|
||||
import toastr from "@docspace/components/toast/toastr";
|
||||
import throttle from "lodash/throttle";
|
||||
|
||||
|
@ -14,7 +14,7 @@ import MobileView from "./MobileView";
|
||||
import { combineUrl } from "@docspace/common/utils";
|
||||
import config from "PACKAGE_FILE";
|
||||
import withLoader from "../../../HOCs/withLoader";
|
||||
import { Events } from "@docspace/client/src/helpers/filesConstants";
|
||||
import { Events } from "@docspace/common/constants";
|
||||
import { getMainButtonItems } from "SRC_DIR/helpers/plugins";
|
||||
|
||||
import toastr from "@docspace/components/toast/toastr";
|
||||
|
@ -5,7 +5,7 @@ import EmptyFilterContainer from "./EmptyFilterContainer";
|
||||
import EmptyFolderContainer from "./EmptyFolderContainer";
|
||||
import { FileAction } from "@docspace/common/constants";
|
||||
import { isMobile } from "react-device-detect";
|
||||
import { Events } from "@docspace/client/src/helpers/filesConstants";
|
||||
import { Events } from "@docspace/common/constants";
|
||||
|
||||
const linkStyles = {
|
||||
isHovered: true,
|
||||
|
@ -1,7 +1,7 @@
|
||||
import React, { useState, useEffect, useCallback, memo } from "react";
|
||||
|
||||
import { FileAction } from "@docspace/common/constants";
|
||||
import { Events } from "@docspace/client/src/helpers/filesConstants";
|
||||
import { Events } from "@docspace/common/constants";
|
||||
|
||||
import CreateEvent from "./CreateEvent";
|
||||
import RenameEvent from "./RenameEvent";
|
||||
|
@ -51,6 +51,16 @@ export const CategoryType = Object.freeze({
|
||||
Trash: 7,
|
||||
});
|
||||
|
||||
/**
|
||||
* Enum for table columns version
|
||||
* @readonly
|
||||
*/
|
||||
export const TableVersions = Object.freeze({
|
||||
Files: "2",
|
||||
Rooms: "1",
|
||||
Accounts: "2",
|
||||
});
|
||||
|
||||
export const BINDING_POST = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST";
|
||||
export const BINDING_REDIRECT =
|
||||
"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect";
|
||||
|
@ -11,17 +11,11 @@ export const thumbnailStatuses = {
|
||||
|
||||
export const ADS_TIMEOUT = 300000; // 5 min
|
||||
|
||||
export const Events = Object.freeze({
|
||||
CREATE: "create",
|
||||
RENAME: "rename",
|
||||
ROOM_CREATE: "create_room",
|
||||
ROOM_EDIT: "edit_room",
|
||||
});
|
||||
|
||||
export const FilterGroups = Object.freeze({
|
||||
filterType: "filter-filterType",
|
||||
filterAuthor: "filter-author",
|
||||
filterFolders: "filter-folders",
|
||||
filterContent: "filter-withContent",
|
||||
roomFilterType: "filter-type",
|
||||
roomFilterOwner: "filter-owner",
|
||||
roomFilterTags: "filter-tags",
|
||||
|
@ -11,10 +11,10 @@ import EmptyScreen from "../EmptyScreen";
|
||||
import TableRow from "./TableRow";
|
||||
import TableHeader from "./TableHeader";
|
||||
import { Base } from "@docspace/components/themes";
|
||||
import { TableVersions } from "SRC_DIR/helpers/constants";
|
||||
|
||||
const TABLE_VERSION = "2";
|
||||
const COLUMNS_SIZE = `peopleColumnsSize_ver-${TABLE_VERSION}`;
|
||||
const INFO_PANEL_COLUMNS_SIZE = `infoPanelPeopleColumnsSize_ver-${TABLE_VERSION}`;
|
||||
const COLUMNS_SIZE = `peopleColumnsSize_ver-${TableVersions.Accounts}`;
|
||||
const INFO_PANEL_COLUMNS_SIZE = `infoPanelPeopleColumnsSize_ver-${TableVersions.Accounts}`;
|
||||
|
||||
const marginCss = css`
|
||||
margin-top: -1px;
|
||||
|
@ -320,6 +320,11 @@ const SectionFilterContent = ({
|
||||
fetchPeople(newFilter).finally(() => setIsLoading(false));
|
||||
};
|
||||
|
||||
const clearAll = () => {
|
||||
setIsLoading(true);
|
||||
fetchPeople().finally(() => setIsLoading(false));
|
||||
};
|
||||
|
||||
return isLoaded && tReady ? (
|
||||
<FilterInput
|
||||
t={t}
|
||||
@ -338,6 +343,8 @@ const SectionFilterContent = ({
|
||||
viewAs={viewAs}
|
||||
viewSelectorVisible={false}
|
||||
removeSelectedItem={removeSelectedItem}
|
||||
isAccounts={true}
|
||||
clearAll={clearAll}
|
||||
/>
|
||||
) : (
|
||||
<Loaders.Filter />
|
||||
|
@ -56,9 +56,7 @@ const SingleItem = (props) => {
|
||||
|
||||
<StyledProperties>
|
||||
<div className="property">
|
||||
<Text className="property-title">
|
||||
{t("Files:ByLastModifiedDate")}
|
||||
</Text>
|
||||
<Text className="property-title">{t("Files:ByLastModified")}</Text>
|
||||
<Text className="property-content">
|
||||
{parseAndFormatDate(selectedItem.attributes.updatedAt)}
|
||||
</Text>
|
||||
|
@ -106,6 +106,8 @@ const SingleItem = (props) => {
|
||||
case FileType.Presentation:
|
||||
return t("Home:Presentation");
|
||||
case FileType.Document:
|
||||
case FileType.OForm:
|
||||
case FileType.OFormTemplate:
|
||||
return t("Home:Document");
|
||||
default:
|
||||
return t("Home:Folder");
|
||||
@ -147,8 +149,8 @@ const SingleItem = (props) => {
|
||||
content: styledText(itemSize),
|
||||
},
|
||||
{
|
||||
id: "ByLastModifiedDate",
|
||||
title: t("Files:ByLastModifiedDate"),
|
||||
id: "ByLastModified",
|
||||
title: t("Files:ByLastModified"),
|
||||
content: styledText(parseAndFormatDate(item.updated)),
|
||||
},
|
||||
{
|
||||
@ -162,8 +164,8 @@ const SingleItem = (props) => {
|
||||
),
|
||||
},
|
||||
{
|
||||
id: "ByCreationDate",
|
||||
title: t("Files:ByCreationDate"),
|
||||
id: "ByCreation",
|
||||
title: t("Files:ByCreation"),
|
||||
content: styledText(parseAndFormatDate(item.created)),
|
||||
},
|
||||
];
|
||||
|
@ -8,6 +8,7 @@ import TableBody from "@docspace/components/table-container/TableBody";
|
||||
import { isMobile } from "react-device-detect";
|
||||
import styled, { css } from "styled-components";
|
||||
import { Base } from "@docspace/components/themes";
|
||||
import { TableVersions } from "SRC_DIR/helpers/constants";
|
||||
|
||||
const marginCss = css`
|
||||
margin-top: -1px;
|
||||
@ -98,15 +99,13 @@ const StyledTableContainer = styled(TableContainer)`
|
||||
|
||||
StyledTableContainer.defaultProps = { theme: Base };
|
||||
|
||||
const TABLE_VERSION = "2";
|
||||
const TABLE_COLUMNS = `filesTableColumns_ver-${TABLE_VERSION}`;
|
||||
const COLUMNS_SIZE = `filesColumnsSize_ver-${TABLE_VERSION}`;
|
||||
const COLUMNS_SIZE_INFO_PANEL = `filesColumnsSizeInfoPanel_ver-${TABLE_VERSION}`;
|
||||
const TABLE_COLUMNS = `filesTableColumns_ver-${TableVersions.Files}`;
|
||||
const COLUMNS_SIZE = `filesColumnsSize_ver-${TableVersions.Files}`;
|
||||
const COLUMNS_SIZE_INFO_PANEL = `filesColumnsSizeInfoPanel_ver-${TableVersions.Files}`;
|
||||
|
||||
const TABLE_ROOMS_VERSION = "1";
|
||||
const TABLE_ROOMS_COLUMNS = `roomsTableColumns_ver-${TABLE_ROOMS_VERSION}`;
|
||||
const COLUMNS_ROOMS_SIZE = `roomsColumnsSize_ver-${TABLE_ROOMS_VERSION}`;
|
||||
const COLUMNS_ROOMS_SIZE_INFO_PANEL = `roomsColumnsSizeInfoPanel_ver-${TABLE_ROOMS_VERSION}`;
|
||||
const TABLE_ROOMS_COLUMNS = `roomsTableColumns_ver-${TableVersions.Rooms}`;
|
||||
const COLUMNS_ROOMS_SIZE = `roomsColumnsSize_ver-${TableVersions.Rooms}`;
|
||||
const COLUMNS_ROOMS_SIZE_INFO_PANEL = `roomsColumnsSizeInfoPanel_ver-${TableVersions.Rooms}`;
|
||||
|
||||
const Table = ({
|
||||
filesList,
|
||||
|
@ -2,6 +2,9 @@ import React from "react";
|
||||
import TableHeader from "@docspace/components/table-container/TableHeader";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import { withTranslation } from "react-i18next";
|
||||
import { Events } from "@docspace/common/constants";
|
||||
|
||||
const WITH_AUTHOR = "withAuthorColumn";
|
||||
|
||||
class FilesTableHeader extends React.Component {
|
||||
constructor(props) {
|
||||
@ -13,9 +16,16 @@ class FilesTableHeader extends React.Component {
|
||||
}
|
||||
|
||||
getTableColumns = (fromUpdate = false) => {
|
||||
const { t, personal, tableStorageName, isRooms } = this.props;
|
||||
const {
|
||||
t,
|
||||
personal,
|
||||
tableStorageName,
|
||||
isRooms,
|
||||
isPersonalRoom,
|
||||
} = this.props;
|
||||
|
||||
const defaultColumns = [];
|
||||
|
||||
if (isRooms) {
|
||||
const columns = [
|
||||
{
|
||||
@ -57,7 +67,7 @@ class FilesTableHeader extends React.Component {
|
||||
},
|
||||
{
|
||||
key: "Activity",
|
||||
title: t("ByLastModifiedDate"),
|
||||
title: t("ByLastModified"),
|
||||
enable: true,
|
||||
resizable: true,
|
||||
sortBy: "DateAndTime",
|
||||
@ -68,6 +78,22 @@ class FilesTableHeader extends React.Component {
|
||||
|
||||
defaultColumns.push(...columns);
|
||||
} else {
|
||||
const authorOption = {
|
||||
key: "Author",
|
||||
title: t("ByAuthor"),
|
||||
enable: false,
|
||||
resizable: true,
|
||||
sortBy: "Author",
|
||||
|
||||
isDisabled: isPersonalRoom,
|
||||
onClick: this.onFilter,
|
||||
onChange: this.onColumnChange,
|
||||
};
|
||||
|
||||
if (isPersonalRoom) {
|
||||
authorOption.defaultSize = 0;
|
||||
}
|
||||
|
||||
const columns = [
|
||||
{
|
||||
key: "Name",
|
||||
@ -79,18 +105,10 @@ class FilesTableHeader extends React.Component {
|
||||
minWidth: 210,
|
||||
onClick: this.onFilter,
|
||||
},
|
||||
{
|
||||
key: "Author",
|
||||
title: t("ByAuthor"),
|
||||
enable: false,
|
||||
resizable: true,
|
||||
sortBy: "Author",
|
||||
onClick: this.onFilter,
|
||||
onChange: this.onColumnChange,
|
||||
},
|
||||
authorOption,
|
||||
{
|
||||
key: "Created",
|
||||
title: t("ByCreationDate"),
|
||||
title: t("ByCreation"),
|
||||
enable: true,
|
||||
resizable: true,
|
||||
sortBy: "DateAndTimeCreation",
|
||||
@ -99,7 +117,7 @@ class FilesTableHeader extends React.Component {
|
||||
},
|
||||
{
|
||||
key: "Modified",
|
||||
title: t("ByLastModifiedDate"),
|
||||
title: t("ByLastModified"),
|
||||
enable: true,
|
||||
resizable: true,
|
||||
sortBy: "DateAndTime",
|
||||
@ -151,12 +169,14 @@ class FilesTableHeader extends React.Component {
|
||||
columns: columns,
|
||||
resetColumnsSize: resetColumnsSize,
|
||||
isRooms: isRooms,
|
||||
isPersonalRoom: isPersonalRoom,
|
||||
});
|
||||
} else {
|
||||
this.state = {
|
||||
columns: columns,
|
||||
resetColumnsSize: resetColumnsSize,
|
||||
isRooms: isRooms,
|
||||
isPersonalRoom: isPersonalRoom,
|
||||
};
|
||||
}
|
||||
};
|
||||
@ -198,6 +218,10 @@ class FilesTableHeader extends React.Component {
|
||||
return this.getTableColumns(true);
|
||||
}
|
||||
|
||||
if (this.props.isPersonalRoom !== this.state.isPersonalRoom) {
|
||||
return this.getTableColumns(true);
|
||||
}
|
||||
|
||||
const { columns } = this.state;
|
||||
if (this.props.withContent !== prevProps.withContent) {
|
||||
const columnIndex = columns.findIndex((c) => c.key === "Share");
|
||||
@ -220,6 +244,8 @@ class FilesTableHeader extends React.Component {
|
||||
this.customScrollElm.removeEventListener("scroll", this.onBeginScroll);
|
||||
}
|
||||
getColumns = (defaultColumns, splitColumns) => {
|
||||
const { isPersonalRoom, isRooms } = this.props;
|
||||
|
||||
const columns = [];
|
||||
|
||||
if (splitColumns) {
|
||||
@ -227,6 +253,22 @@ class FilesTableHeader extends React.Component {
|
||||
const column = splitColumns.find((key) => key === col.key);
|
||||
column ? (col.enable = true) : (col.enable = false);
|
||||
|
||||
if (!isRooms) {
|
||||
if (column === "Author" && isPersonalRoom) {
|
||||
col.enable = false;
|
||||
}
|
||||
|
||||
if (col.key === "Author" && !isPersonalRoom) {
|
||||
if (!col.enable) {
|
||||
const withAuthor = localStorage.getItem(WITH_AUTHOR);
|
||||
|
||||
if (withAuthor === "true") {
|
||||
col.enable = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
columns.push(col);
|
||||
}
|
||||
return columns;
|
||||
@ -246,6 +288,14 @@ class FilesTableHeader extends React.Component {
|
||||
|
||||
const tableColumns = columns.map((c) => c.enable && c.key);
|
||||
this.setTableColumns(tableColumns);
|
||||
|
||||
if (key === "Author") {
|
||||
localStorage.setItem(WITH_AUTHOR, columns[columnIndex].enable);
|
||||
}
|
||||
|
||||
const event = new Event(Events.CHANGE_COLUMN);
|
||||
|
||||
window.dispatchEvent(event);
|
||||
};
|
||||
|
||||
onFilter = (sortBy) => {
|
||||
@ -361,7 +411,11 @@ export default inject(
|
||||
roomsFilter,
|
||||
fetchRooms,
|
||||
} = filesStore;
|
||||
const { isPrivacyFolder, isRecentFolder } = treeFoldersStore;
|
||||
const {
|
||||
isPrivacyFolder,
|
||||
isRecentFolder,
|
||||
isPersonalRoom,
|
||||
} = treeFoldersStore;
|
||||
|
||||
const withContent = canShare || (canShare && isPrivacyFolder && isDesktop);
|
||||
const sortingVisible = !isRecentFolder;
|
||||
@ -386,6 +440,8 @@ export default inject(
|
||||
|
||||
infoPanelVisible,
|
||||
withPaging,
|
||||
|
||||
isPersonalRoom,
|
||||
};
|
||||
}
|
||||
)(
|
||||
|
@ -21,6 +21,8 @@ const TypeCell = ({ t, item, sideColor }) => {
|
||||
case FileType.Presentation:
|
||||
return t("Presentation");
|
||||
case FileType.Document:
|
||||
case FileType.OForm:
|
||||
case FileType.OFormTemplate:
|
||||
return t("Document");
|
||||
|
||||
default:
|
||||
|
@ -19,6 +19,7 @@ import { withLayoutSize } from "@docspace/common/utils";
|
||||
import { getDefaultRoomName } from "@docspace/client/src/helpers/filesUtils";
|
||||
|
||||
import withLoader from "../../../../HOCs/withLoader";
|
||||
import { TableVersions } from "SRC_DIR/helpers/constants";
|
||||
|
||||
const getFilterType = (filterValues) => {
|
||||
const filterType = result(
|
||||
@ -87,16 +88,16 @@ const getOwner = (filterValues) => {
|
||||
// return filterFolders ? filterFolders : null;
|
||||
// };
|
||||
|
||||
// const getFilterContent = (filterValues) => {
|
||||
// const filterContent = result(
|
||||
// find(filterValues, (value) => {
|
||||
// return value.group === FilterGroups.roomFilterContent;
|
||||
// }),
|
||||
// "key"
|
||||
// );
|
||||
const getFilterContent = (filterValues) => {
|
||||
const filterContent = result(
|
||||
find(filterValues, (value) => {
|
||||
return value.group === FilterGroups.filterContent;
|
||||
}),
|
||||
"key"
|
||||
);
|
||||
|
||||
// return filterContent ? filterContent : null;
|
||||
// };
|
||||
return filterContent ? filterContent : null;
|
||||
};
|
||||
|
||||
const getTags = (filterValues) => {
|
||||
const filterTags = filterValues.find(
|
||||
@ -108,6 +109,14 @@ const getTags = (filterValues) => {
|
||||
return tags;
|
||||
};
|
||||
|
||||
const TABLE_COLUMNS = `filesTableColumns_ver-${TableVersions.Files}`;
|
||||
|
||||
const COLUMNS_SIZE_INFO_PANEL = `filesColumnsSizeInfoPanel_ver-${TableVersions.Files}`;
|
||||
|
||||
const TABLE_ROOMS_COLUMNS = `roomsTableColumns_ver-${TableVersions.Rooms}`;
|
||||
|
||||
const COLUMNS_ROOMS_SIZE_INFO_PANEL = `roomsColumnsSizeInfoPanel_ver-${TableVersions.Rooms}`;
|
||||
|
||||
const SectionFilterContent = ({
|
||||
t,
|
||||
filter,
|
||||
@ -127,6 +136,7 @@ const SectionFilterContent = ({
|
||||
infoPanelVisible,
|
||||
isRooms,
|
||||
userId,
|
||||
isPersonalRoom,
|
||||
setCurrentRoomsFilter,
|
||||
}) => {
|
||||
const onFilter = React.useCallback(
|
||||
@ -181,18 +191,24 @@ const SectionFilterContent = ({
|
||||
);
|
||||
} else {
|
||||
const filterType = getFilterType(data) || null;
|
||||
|
||||
const authorType = !!getAuthorType(data)
|
||||
? getAuthorType(data).includes("user_")
|
||||
? getAuthorType(data)
|
||||
: `user_${getAuthorType(data)}`
|
||||
: null;
|
||||
const withSubfolders = getSearchParams(data);
|
||||
const withContent = getFilterContent(data);
|
||||
|
||||
const newFilter = filter.clone();
|
||||
newFilter.page = 0;
|
||||
|
||||
newFilter.filterType = filterType;
|
||||
|
||||
newFilter.authorType = authorType;
|
||||
newFilter.withSubfolders = withSubfolders;
|
||||
newFilter.withSubfolders =
|
||||
withSubfolders === FilterKeys.excludeSubfolders ? "false" : "true";
|
||||
newFilter.searchInContent = withContent === "true" ? "true" : null;
|
||||
|
||||
setIsLoading(true);
|
||||
|
||||
@ -296,7 +312,13 @@ const SectionFilterContent = ({
|
||||
);
|
||||
|
||||
const getSelectedInputValue = React.useCallback(() => {
|
||||
return isRooms ? roomsFilter.filterValue : filter.search;
|
||||
return isRooms
|
||||
? roomsFilter.filterValue
|
||||
? roomsFilter.filterValue
|
||||
: ""
|
||||
: filter.search
|
||||
? filter.search
|
||||
: "";
|
||||
}, [isRooms, roomsFilter.filterValue, filter.search]);
|
||||
|
||||
const getSelectedSortData = React.useCallback(() => {
|
||||
@ -386,10 +408,26 @@ const SectionFilterContent = ({
|
||||
});
|
||||
}
|
||||
} else {
|
||||
if (filter.withSubfolders === "false") {
|
||||
filterValues.push({
|
||||
key: FilterKeys.excludeSubfolders,
|
||||
label: t("ExcludeSubfolders"),
|
||||
group: FilterGroups.filterFolders,
|
||||
});
|
||||
}
|
||||
|
||||
if (filter.searchInContent) {
|
||||
filterValues.push({
|
||||
key: "true",
|
||||
label: t("FileContents"),
|
||||
group: FilterGroups.filterContent,
|
||||
});
|
||||
}
|
||||
|
||||
if (filter.filterType) {
|
||||
let label = "";
|
||||
|
||||
switch (filter.filterType) {
|
||||
switch (filter.filterType.toString()) {
|
||||
case FilterType.DocumentsOnly.toString():
|
||||
label = t("Common:Documents");
|
||||
break;
|
||||
@ -414,11 +452,17 @@ const SectionFilterContent = ({
|
||||
case FilterType.FilesOnly.toString():
|
||||
label = t("AllFiles");
|
||||
break;
|
||||
case FilterType.OFormTemplateOnly.toString():
|
||||
label = t("FormsTemplates");
|
||||
break;
|
||||
case FilterType.OFormOnly.toString():
|
||||
label = t("Forms");
|
||||
break;
|
||||
}
|
||||
|
||||
filterValues.push({
|
||||
key: `${filter.filterType}`,
|
||||
label: label,
|
||||
label: label.toLowerCase(),
|
||||
group: FilterGroups.filterType,
|
||||
});
|
||||
}
|
||||
@ -431,14 +475,6 @@ const SectionFilterContent = ({
|
||||
label: user.displayName,
|
||||
});
|
||||
}
|
||||
|
||||
if (filter.withSubfolders === "false") {
|
||||
filterValues.push({
|
||||
key: filter.withSubfolders,
|
||||
label: "Exclude subfolders",
|
||||
group: FilterGroups.filterFolders,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return filterValues;
|
||||
@ -446,6 +482,7 @@ const SectionFilterContent = ({
|
||||
filter.withSubfolders,
|
||||
filter.authorType,
|
||||
filter.filterType,
|
||||
filter.searchInContent,
|
||||
roomsFilter.type,
|
||||
roomsFilter.subjectId,
|
||||
roomsFilter.tags,
|
||||
@ -465,18 +502,7 @@ const SectionFilterContent = ({
|
||||
{
|
||||
key: FilterType.FoldersOnly.toString(),
|
||||
group: FilterGroups.filterType,
|
||||
label: t("Translations:Folders"),
|
||||
},
|
||||
]
|
||||
: "";
|
||||
|
||||
const allFiles =
|
||||
!isFavoritesFolder && !isRecentFolder
|
||||
? [
|
||||
{
|
||||
key: FilterType.FilesOnly.toString(),
|
||||
group: FilterGroups.filterType,
|
||||
label: t("AllFiles"),
|
||||
label: t("Translations:Folders").toLowerCase(),
|
||||
},
|
||||
]
|
||||
: "";
|
||||
@ -486,7 +512,7 @@ const SectionFilterContent = ({
|
||||
{
|
||||
key: FilterType.ImagesOnly.toString(),
|
||||
group: FilterGroups.filterType,
|
||||
label: t("Images"),
|
||||
label: t("Images").toLowerCase(),
|
||||
},
|
||||
]
|
||||
: "";
|
||||
@ -496,7 +522,7 @@ const SectionFilterContent = ({
|
||||
{
|
||||
key: FilterType.ArchiveOnly.toString(),
|
||||
group: FilterGroups.filterType,
|
||||
label: t("Archives"),
|
||||
label: t("Archives").toLowerCase(),
|
||||
},
|
||||
]
|
||||
: "";
|
||||
@ -506,7 +532,7 @@ const SectionFilterContent = ({
|
||||
{
|
||||
key: FilterType.MediaOnly.toString(),
|
||||
group: FilterGroups.filterType,
|
||||
label: t("Media"),
|
||||
label: t("Media").toLowerCase(),
|
||||
},
|
||||
]
|
||||
: "";
|
||||
@ -551,27 +577,38 @@ const SectionFilterContent = ({
|
||||
group: FilterGroups.filterType,
|
||||
label: t("Common:Type"),
|
||||
isHeader: true,
|
||||
},
|
||||
{
|
||||
key: FilterType.DocumentsOnly.toString(),
|
||||
group: FilterGroups.filterType,
|
||||
label: t("Common:Documents"),
|
||||
isLast: true,
|
||||
},
|
||||
...folders,
|
||||
{
|
||||
key: FilterType.SpreadsheetsOnly.toString(),
|
||||
key: FilterType.DocumentsOnly.toString(),
|
||||
group: FilterGroups.filterType,
|
||||
label: t("Translations:Spreadsheets"),
|
||||
label: t("Common:Documents").toLowerCase(),
|
||||
},
|
||||
...archives,
|
||||
{
|
||||
key: FilterType.PresentationsOnly.toString(),
|
||||
group: FilterGroups.filterType,
|
||||
label: t("Translations:Presentations"),
|
||||
label: t("Translations:Presentations").toLowerCase(),
|
||||
},
|
||||
{
|
||||
key: FilterType.SpreadsheetsOnly.toString(),
|
||||
group: FilterGroups.filterType,
|
||||
label: t("Translations:Spreadsheets").toLowerCase(),
|
||||
},
|
||||
{
|
||||
key: FilterType.OFormTemplateOnly.toString(),
|
||||
group: FilterGroups.filterType,
|
||||
label: t("FormsTemplates").toLowerCase(),
|
||||
},
|
||||
{
|
||||
key: FilterType.OFormOnly.toString(),
|
||||
group: FilterGroups.filterType,
|
||||
label: t("Forms").toLowerCase(),
|
||||
},
|
||||
...archives,
|
||||
|
||||
...images,
|
||||
...media,
|
||||
...allFiles,
|
||||
];
|
||||
|
||||
const ownerOptions = [
|
||||
@ -580,6 +617,7 @@ const SectionFilterContent = ({
|
||||
group: FilterGroups.roomFilterOwner,
|
||||
label: t("Common:Owner"),
|
||||
isHeader: true,
|
||||
withMultiItems: true,
|
||||
},
|
||||
{
|
||||
key: FilterKeys.me,
|
||||
@ -672,7 +710,49 @@ const SectionFilterContent = ({
|
||||
filterOptions.push(...tagsOptions);
|
||||
}
|
||||
} else {
|
||||
if (!personal) {
|
||||
if (!isRecentFolder && !isFavoritesFolder) {
|
||||
const foldersOptions = [
|
||||
{
|
||||
key: FilterGroups.filterFolders,
|
||||
group: FilterGroups.filterFolders,
|
||||
label: t("Common:Search"),
|
||||
isHeader: true,
|
||||
withoutSeparator: true,
|
||||
},
|
||||
{
|
||||
key: "folders",
|
||||
group: FilterGroups.filterFolders,
|
||||
label: "",
|
||||
withOptions: true,
|
||||
options: [
|
||||
{ key: FilterKeys.withSubfolders, label: t("WithSubfolders") },
|
||||
{
|
||||
key: FilterKeys.excludeSubfolders,
|
||||
label: t("ExcludeSubfolders"),
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
const contentOptions = [
|
||||
{
|
||||
key: FilterGroups.filterContent,
|
||||
group: FilterGroups.filterContent,
|
||||
isHeader: true,
|
||||
withoutHeader: true,
|
||||
},
|
||||
{
|
||||
key: "true",
|
||||
group: FilterGroups.filterContent,
|
||||
label: t("SearchByContent"),
|
||||
isCheckbox: true,
|
||||
},
|
||||
];
|
||||
filterOptions.push(...foldersOptions);
|
||||
filterOptions.push(...contentOptions);
|
||||
}
|
||||
|
||||
if (!isPersonalRoom) {
|
||||
filterOptions.push(
|
||||
{
|
||||
key: FilterGroups.filterAuthor,
|
||||
@ -690,29 +770,10 @@ const SectionFilterContent = ({
|
||||
}
|
||||
|
||||
filterOptions.push(...typeOptions);
|
||||
|
||||
if (!isRecentFolder && !isFavoritesFolder) {
|
||||
filterOptions.push(
|
||||
{
|
||||
key: FilterGroups.filterFolders,
|
||||
group: FilterGroups.filterFolders,
|
||||
label: t("Translations:Folders"),
|
||||
isHeader: true,
|
||||
withoutHeader: true,
|
||||
isLast: true,
|
||||
},
|
||||
{
|
||||
key: "false",
|
||||
group: FilterGroups.filterFolders,
|
||||
label: t("NoSubfolders"),
|
||||
isToggle: true,
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return filterOptions;
|
||||
}, [isFavoritesFolder, isRecentFolder, isRooms, t, personal]);
|
||||
}, [isFavoritesFolder, isRecentFolder, isRooms, t, personal, isPersonalRoom]);
|
||||
|
||||
const getViewSettingsData = React.useCallback(() => {
|
||||
const viewSettings = [
|
||||
@ -733,35 +794,132 @@ const SectionFilterContent = ({
|
||||
}, [createThumbnails]);
|
||||
|
||||
const getSortData = React.useCallback(() => {
|
||||
const commonOptions = isRooms
|
||||
? [
|
||||
{ key: "AZ", label: "Name", default: true },
|
||||
{ key: "roomType", label: t("Common:Type"), default: true },
|
||||
{ key: "Tags", label: t("Tags"), default: true },
|
||||
{ key: "Author", label: t("Common:Owner"), default: true },
|
||||
{ key: "DateAndTime", label: t("ByLastModifiedDate"), default: true },
|
||||
]
|
||||
: [
|
||||
{ key: "AZ", label: t("ByTitle"), default: true },
|
||||
{ key: "Type", label: t("Common:Type"), default: true },
|
||||
{ key: "Size", label: t("Common:Size"), default: true },
|
||||
{
|
||||
key: "DateAndTimeCreation",
|
||||
label: t("ByCreationDate"),
|
||||
default: true,
|
||||
},
|
||||
{ key: "DateAndTime", label: t("ByLastModifiedDate"), default: true },
|
||||
];
|
||||
const commonOptions = [];
|
||||
|
||||
if (!personal && !isRooms) {
|
||||
commonOptions.splice(1, 0, {
|
||||
key: "Author",
|
||||
label: t("ByAuthor"),
|
||||
default: true,
|
||||
});
|
||||
const name = { key: "AZ", label: t("Common:Name"), default: true };
|
||||
const modifiedDate = {
|
||||
key: "DateAndTime",
|
||||
label: t("ByLastModified"),
|
||||
default: true,
|
||||
};
|
||||
|
||||
const type = { key: "Type", label: t("Common:Type"), default: true };
|
||||
const size = { key: "Size", label: t("Common:Size"), default: true };
|
||||
const creationDate = {
|
||||
key: "DateAndTimeCreation",
|
||||
label: t("ByCreation"),
|
||||
default: true,
|
||||
};
|
||||
const authorOption = {
|
||||
key: "Author",
|
||||
label: t("ByAuthor"),
|
||||
default: true,
|
||||
};
|
||||
|
||||
const owner = { key: "Author", label: t("Common:Owner"), default: true };
|
||||
const tags = { key: "Tags", label: t("Tags"), default: true };
|
||||
const roomType = {
|
||||
key: "roomType",
|
||||
label: t("Common:Type"),
|
||||
default: true,
|
||||
};
|
||||
|
||||
commonOptions.push(name);
|
||||
|
||||
if (viewAs === "table") {
|
||||
if (isRooms) {
|
||||
const availableSort = localStorage
|
||||
?.getItem(`${TABLE_ROOMS_COLUMNS}=${userId}`)
|
||||
?.split(",");
|
||||
|
||||
const infoPanelColumnsSize = localStorage
|
||||
?.getItem(`${COLUMNS_ROOMS_SIZE_INFO_PANEL}=${userId}`)
|
||||
?.split(" ");
|
||||
|
||||
if (availableSort?.includes("Type")) {
|
||||
const idx = availableSort.findIndex((x) => x === "Type");
|
||||
const hide = infoPanelVisible && infoPanelColumnsSize[idx] === "0px";
|
||||
|
||||
!hide && commonOptions.push(roomType);
|
||||
}
|
||||
|
||||
if (availableSort?.includes("Tags")) {
|
||||
const idx = availableSort.findIndex((x) => x === "Tags");
|
||||
const hide = infoPanelVisible && infoPanelColumnsSize[idx] === "0px";
|
||||
|
||||
!hide && commonOptions.push(tags);
|
||||
}
|
||||
|
||||
if (availableSort?.includes("Owner")) {
|
||||
const idx = availableSort.findIndex((x) => x === "Owner");
|
||||
const hide = infoPanelVisible && infoPanelColumnsSize[idx] === "0px";
|
||||
|
||||
!hide && commonOptions.push(owner);
|
||||
}
|
||||
|
||||
if (availableSort?.includes("Activity")) {
|
||||
const idx = availableSort.findIndex((x) => x === "Activity");
|
||||
const hide = infoPanelVisible && infoPanelColumnsSize[idx] === "0px";
|
||||
|
||||
!hide && commonOptions.push(modifiedDate);
|
||||
}
|
||||
} else {
|
||||
const availableSort = localStorage
|
||||
?.getItem(`${TABLE_COLUMNS}=${userId}`)
|
||||
?.split(",");
|
||||
|
||||
const infoPanelColumnsSize = localStorage
|
||||
?.getItem(`${COLUMNS_SIZE_INFO_PANEL}=${userId}`)
|
||||
?.split(" ");
|
||||
|
||||
if (availableSort?.includes("Author") && !isPersonalRoom) {
|
||||
const idx = availableSort.findIndex((x) => x === "Author");
|
||||
const hide = infoPanelVisible && infoPanelColumnsSize[idx] === "0px";
|
||||
|
||||
!hide && commonOptions.push(authorOption);
|
||||
}
|
||||
if (availableSort?.includes("Create")) {
|
||||
const idx = availableSort.findIndex((x) => x === "Create");
|
||||
const hide = infoPanelVisible && infoPanelColumnsSize[idx] === "0px";
|
||||
|
||||
!hide && commonOptions.push(creationDate);
|
||||
}
|
||||
if (availableSort?.includes("Modified")) {
|
||||
const idx = availableSort.findIndex((x) => x === "Modified");
|
||||
const hide = infoPanelVisible && infoPanelColumnsSize[idx] === "0px";
|
||||
|
||||
!hide && commonOptions.push(modifiedDate);
|
||||
}
|
||||
if (availableSort?.includes("Size")) {
|
||||
const idx = availableSort.findIndex((x) => x === "Size");
|
||||
const hide = infoPanelVisible && infoPanelColumnsSize[idx] === "0px";
|
||||
|
||||
!hide && commonOptions.push(size);
|
||||
}
|
||||
if (availableSort?.includes("Type")) {
|
||||
const idx = availableSort.findIndex((x) => x === "Type");
|
||||
const hide = infoPanelVisible && infoPanelColumnsSize[idx] === "0px";
|
||||
|
||||
!hide && commonOptions.push(type);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (isRooms) {
|
||||
commonOptions.push(roomType);
|
||||
commonOptions.push(tags);
|
||||
commonOptions.push(owner);
|
||||
commonOptions.push(modifiedDate);
|
||||
} else {
|
||||
commonOptions.push(authorOption);
|
||||
commonOptions.push(creationDate);
|
||||
commonOptions.push(modifiedDate);
|
||||
commonOptions.push(size);
|
||||
commonOptions.push(type);
|
||||
}
|
||||
}
|
||||
|
||||
return commonOptions;
|
||||
}, [personal, isRooms, t]);
|
||||
}, [personal, isRooms, t, userId, infoPanelVisible, viewAs, isPersonalRoom]);
|
||||
|
||||
const removeSelectedItem = React.useCallback(
|
||||
({ key, group }) => {
|
||||
@ -820,7 +978,10 @@ const SectionFilterContent = ({
|
||||
newFilter.authorType = null;
|
||||
}
|
||||
if (group === FilterGroups.filterFolders) {
|
||||
newFilter.withSubfolders = null;
|
||||
newFilter.withSubfolders = "true";
|
||||
}
|
||||
if (group === FilterGroups.filterContent) {
|
||||
newFilter.searchInContent = null;
|
||||
}
|
||||
|
||||
newFilter.page = 0;
|
||||
@ -842,6 +1003,18 @@ const SectionFilterContent = ({
|
||||
]
|
||||
);
|
||||
|
||||
const clearAll = () => {
|
||||
if (isRooms) {
|
||||
setIsLoading(true);
|
||||
|
||||
fetchRooms(selectedFolderId).finally(() => setIsLoading(false));
|
||||
} else {
|
||||
setIsLoading(true);
|
||||
|
||||
fetchFiles(selectedFolderId).finally(() => setIsLoading(false));
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<FilterInput
|
||||
t={t}
|
||||
@ -862,7 +1035,10 @@ const SectionFilterContent = ({
|
||||
view={t("Common:View")}
|
||||
isFavoritesFolder={isFavoritesFolder}
|
||||
isRecentFolder={isRecentFolder}
|
||||
isPersonalRoom={isPersonalRoom}
|
||||
isRooms={isRooms}
|
||||
removeSelectedItem={removeSelectedItem}
|
||||
clearAll={clearAll}
|
||||
/>
|
||||
);
|
||||
};
|
||||
@ -890,6 +1066,7 @@ export default inject(
|
||||
isRecentFolder,
|
||||
isRoomsFolder,
|
||||
isArchiveFolder,
|
||||
isPersonalRoom,
|
||||
} = treeFoldersStore;
|
||||
|
||||
const isRooms = isRoomsFolder || isArchiveFolder;
|
||||
@ -918,6 +1095,7 @@ export default inject(
|
||||
createThumbnails,
|
||||
|
||||
personal,
|
||||
isPersonalRoom,
|
||||
infoPanelVisible,
|
||||
setCurrentRoomsFilter,
|
||||
};
|
||||
|
@ -18,7 +18,7 @@ import { Consumer } from "@docspace/components/utils/context";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import TableGroupMenu from "@docspace/components/table-container/TableGroupMenu";
|
||||
import Navigation from "@docspace/common/components/Navigation";
|
||||
import { Events } from "@docspace/client/src/helpers/filesConstants";
|
||||
import { Events } from "@docspace/common/constants";
|
||||
import config from "PACKAGE_FILE";
|
||||
import { combineUrl } from "@docspace/common/utils";
|
||||
import RoomsFilter from "@docspace/common/api/rooms/filter";
|
||||
|
@ -29,7 +29,7 @@ import DragTooltip from "../../components/DragTooltip";
|
||||
import { observer, inject } from "mobx-react";
|
||||
//import config from "PACKAGE_FILE";
|
||||
import { Consumer } from "@docspace/components/utils/context";
|
||||
import { Events } from "@docspace/client/src/helpers/filesConstants";
|
||||
import { Events } from "@docspace/common/constants";
|
||||
import RoomsFilter from "@docspace/common/api/rooms/filter";
|
||||
import { getCategoryType } from "SRC_DIR/helpers/utils";
|
||||
import { CategoryType } from "SRC_DIR/helpers/constants";
|
||||
|
@ -10,7 +10,7 @@ import {
|
||||
isMobile as isMobileUtils,
|
||||
isTablet as isTabletUtils,
|
||||
} from "@docspace/components/utils/device";
|
||||
import { Events } from "@docspace/client/src/helpers/filesConstants";
|
||||
import { Events } from "@docspace/common/constants";
|
||||
import { getContextMenuItems } from "SRC_DIR/helpers/plugins";
|
||||
|
||||
class ContextOptionsStore {
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { getNewFiles } from "@docspace/common/api/files";
|
||||
import { FileAction } from "@docspace/common/constants";
|
||||
import { makeAutoObservable } from "mobx";
|
||||
import { Events } from "@docspace/client/src/helpers/filesConstants";
|
||||
import { Events } from "@docspace/common/constants";
|
||||
|
||||
class DialogsStore {
|
||||
authStore;
|
||||
|
@ -134,6 +134,10 @@ class TreeFoldersStore {
|
||||
return this.archiveFolder ? this.archiveFolder.id : null;
|
||||
}
|
||||
|
||||
get isPersonalRoom() {
|
||||
return this.myFolder && this.myFolder.id === this.selectedFolderStore.id;
|
||||
}
|
||||
|
||||
get isShareFolder() {
|
||||
return (
|
||||
this.shareFolder && this.shareFolder.id === this.selectedFolderStore.id
|
||||
|
@ -13,6 +13,7 @@ const DEFAULT_SEARCH = null;
|
||||
const DEFAULT_AUTHOR_TYPE = null;
|
||||
const DEFAULT_SELECTED_ITEM = {};
|
||||
const DEFAULT_FOLDER = "@my";
|
||||
const DEFAULT_SEARCH_IN_CONTENT = null;
|
||||
|
||||
const SEARCH_TYPE = "withSubfolders";
|
||||
const AUTHOR_TYPE = "authorType";
|
||||
@ -25,11 +26,11 @@ const PAGE = "page";
|
||||
const PAGE_COUNT = "count";
|
||||
const FOLDER = "folder";
|
||||
const PREVIEW = "preview";
|
||||
const SEARCH_IN_CONTENT = "searchInContent";
|
||||
|
||||
// TODO: add next params
|
||||
// subjectGroup bool
|
||||
// subjectID
|
||||
// searchInContent bool
|
||||
|
||||
class FilesFilter {
|
||||
static getDefault(total = DEFAULT_TOTAL) {
|
||||
@ -66,6 +67,8 @@ class FilesFilter {
|
||||
(urlFilter[PAGE_COUNT] && +urlFilter[PAGE_COUNT]) ||
|
||||
defaultFilter.pageCount;
|
||||
const folder = urlFilter[FOLDER] || defaultFilter.folder;
|
||||
const searchInContent =
|
||||
urlFilter[SEARCH_IN_CONTENT] || defaultFilter.searchInContent;
|
||||
|
||||
const newFilter = new FilesFilter(
|
||||
page,
|
||||
@ -79,7 +82,8 @@ class FilesFilter {
|
||||
search,
|
||||
authorType,
|
||||
defaultFilter.selectedItem,
|
||||
folder
|
||||
folder,
|
||||
searchInContent
|
||||
);
|
||||
|
||||
return newFilter;
|
||||
@ -97,7 +101,8 @@ class FilesFilter {
|
||||
search = DEFAULT_SEARCH,
|
||||
authorType = DEFAULT_AUTHOR_TYPE,
|
||||
selectedItem = DEFAULT_SELECTED_ITEM,
|
||||
folder = DEFAULT_FOLDER
|
||||
folder = DEFAULT_FOLDER,
|
||||
searchInContent = DEFAULT_SEARCH_IN_CONTENT
|
||||
) {
|
||||
this.page = page;
|
||||
this.pageCount = pageCount;
|
||||
@ -111,6 +116,7 @@ class FilesFilter {
|
||||
this.authorType = authorType;
|
||||
this.selectedItem = selectedItem;
|
||||
this.folder = folder;
|
||||
this.searchInContent = searchInContent;
|
||||
}
|
||||
|
||||
getStartIndex = () => {
|
||||
@ -136,6 +142,7 @@ class FilesFilter {
|
||||
sortOrder,
|
||||
withSubfolders,
|
||||
startIndex,
|
||||
searchInContent,
|
||||
} = this;
|
||||
|
||||
const isFilterSet =
|
||||
@ -157,6 +164,7 @@ class FilesFilter {
|
||||
filterValue: (search ?? "").trim(),
|
||||
withSubfolders: isFilterSet,
|
||||
userIdOrGroupId,
|
||||
searchInContent,
|
||||
};
|
||||
|
||||
const str = toUrlParams(dtoFilter, true);
|
||||
@ -174,6 +182,7 @@ class FilesFilter {
|
||||
sortBy,
|
||||
sortOrder,
|
||||
withSubfolders,
|
||||
searchInContent,
|
||||
} = this;
|
||||
|
||||
const dtoFilter = {};
|
||||
@ -206,6 +215,10 @@ class FilesFilter {
|
||||
dtoFilter[PREVIEW] = URLParams.preview;
|
||||
}
|
||||
|
||||
if (searchInContent) {
|
||||
dtoFilter[SEARCH_IN_CONTENT] = searchInContent;
|
||||
}
|
||||
|
||||
dtoFilter[PAGE] = page + 1;
|
||||
dtoFilter[SORT_BY] = sortBy;
|
||||
dtoFilter[SORT_ORDER] = sortOrder;
|
||||
@ -231,7 +244,8 @@ class FilesFilter {
|
||||
this.search,
|
||||
this.authorType,
|
||||
this.selectedItem,
|
||||
this.folder
|
||||
this.folder,
|
||||
this.searchInContent
|
||||
);
|
||||
}
|
||||
|
||||
@ -247,7 +261,8 @@ class FilesFilter {
|
||||
this.page === filter.page &&
|
||||
this.selectedItem.key === filter.selectedItem.key &&
|
||||
this.folder === filter.folder &&
|
||||
this.pageCount === filter.pageCount;
|
||||
this.pageCount === filter.pageCount &&
|
||||
this.searchInContent === filter.searchInContent;
|
||||
|
||||
return equals;
|
||||
}
|
||||
|
@ -35,6 +35,10 @@ const StyledFilterInput = styled.div`
|
||||
flex-wrap: wrap;
|
||||
|
||||
margin-bottom: 8px;
|
||||
|
||||
.clear-all-link {
|
||||
margin-left: 12px;
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
|
@ -7,6 +7,7 @@ import {
|
||||
} from "@docspace/components/utils/device";
|
||||
|
||||
import ViewSelector from "@docspace/components/view-selector";
|
||||
import Link from "@docspace/components/link";
|
||||
|
||||
import FilterButton from "./sub-components/FilterButton";
|
||||
import SortButton from "./sub-components/SortButton";
|
||||
@ -34,9 +35,14 @@ const FilterInput = React.memo(
|
||||
|
||||
filterHeader,
|
||||
selectorLabel,
|
||||
clearAll,
|
||||
|
||||
isRecentFolder,
|
||||
removeSelectedItem,
|
||||
|
||||
isPersonalRoom,
|
||||
isRooms,
|
||||
isAccounts,
|
||||
}) => {
|
||||
const [viewSettings, setViewSettings] = React.useState([]);
|
||||
const [inputValue, setInputValue] = React.useState("");
|
||||
@ -52,7 +58,7 @@ const FilterInput = React.memo(
|
||||
React.useEffect(() => {
|
||||
const value = getSelectedInputValue && getSelectedInputValue();
|
||||
|
||||
if (value) setInputValue(value);
|
||||
setInputValue(value);
|
||||
}, [getSelectedInputValue]);
|
||||
|
||||
React.useEffect(() => {
|
||||
@ -116,6 +122,9 @@ const FilterInput = React.memo(
|
||||
selectedFilterValue={selectedFilterValue}
|
||||
filterHeader={filterHeader}
|
||||
selectorLabel={selectorLabel}
|
||||
isPersonalRoom={isPersonalRoom}
|
||||
isRooms={isRooms}
|
||||
isAccounts={isAccounts}
|
||||
/>
|
||||
{!isRecentFolder && (
|
||||
<SortButton
|
||||
@ -159,6 +168,18 @@ const FilterInput = React.memo(
|
||||
removeSelectedItem={removeSelectedItemAction}
|
||||
/>
|
||||
))}
|
||||
{selectedItems.length > 1 && (
|
||||
<Link
|
||||
className={"clear-all-link"}
|
||||
isHovered
|
||||
fontWeight={600}
|
||||
isSemitransparent
|
||||
type="action"
|
||||
onClick={clearAll}
|
||||
>
|
||||
{t("Common:ClearAll")}
|
||||
</Link>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</StyledFilterInput>
|
||||
|
@ -31,6 +31,9 @@ const FilterBlock = ({
|
||||
hideFilterBlock,
|
||||
onFilter,
|
||||
selectorLabel,
|
||||
isPersonalRoom,
|
||||
isRooms,
|
||||
isAccounts,
|
||||
}) => {
|
||||
const [showSelector, setShowSelector] = React.useState({
|
||||
show: false,
|
||||
@ -74,14 +77,22 @@ const FilterBlock = ({
|
||||
if (groupItem.isMultiSelect) {
|
||||
groupItem.isSelected = currentFilter.key.includes(groupItem.key);
|
||||
}
|
||||
if (groupItem.withOptions) {
|
||||
groupItem.isSelected = currentFilter.key.includes(groupItem.key);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
item.groupItem.forEach((groupItem) => {
|
||||
item.groupItem.forEach((groupItem, idx) => {
|
||||
groupItem.isSelected = false;
|
||||
if (groupItem.isSelector) {
|
||||
groupItem.selectedKey = null;
|
||||
groupItem.selectedLabel = null;
|
||||
}
|
||||
if (groupItem.withOptions) {
|
||||
item.groupItem[idx].options.forEach((x, index) => {
|
||||
item.groupItem[idx].options[index].isSelected = false;
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
@ -244,7 +255,7 @@ const FilterBlock = ({
|
||||
|
||||
setTimeout(() => {
|
||||
setIsLoading(false);
|
||||
}, 300);
|
||||
}, 500);
|
||||
}, []);
|
||||
|
||||
React.useEffect(() => {
|
||||
@ -363,19 +374,25 @@ const FilterBlock = ({
|
||||
<StyledFilterBlock showFooter={showFooter}>
|
||||
<StyledFilterBlockHeader>
|
||||
<Heading size="medium">{filterHeader}</Heading>
|
||||
<IconButton
|
||||
iconName="/static/images/clear.react.svg"
|
||||
isFill={true}
|
||||
onClick={onClearFilter}
|
||||
size={17}
|
||||
/>
|
||||
{showFooter && (
|
||||
<IconButton
|
||||
iconName="/static/images/clear.react.svg"
|
||||
isFill={true}
|
||||
onClick={onClearFilter}
|
||||
size={17}
|
||||
/>
|
||||
)}
|
||||
</StyledFilterBlockHeader>
|
||||
<div className="filter-body">
|
||||
{isLoading ? (
|
||||
<Loaders.FilterBlock />
|
||||
<Loaders.FilterBlock
|
||||
isPersonalRoom={isPersonalRoom}
|
||||
isRooms={isRooms}
|
||||
isAccounts={isAccounts}
|
||||
/>
|
||||
) : (
|
||||
<Scrollbar className="filter-body__scrollbar" stype="mediumBlack">
|
||||
{filterData.map((item) => {
|
||||
{filterData.map((item, index) => {
|
||||
return (
|
||||
<FilterBlockItem
|
||||
key={item.key}
|
||||
@ -384,10 +401,12 @@ const FilterBlock = ({
|
||||
group={item.group}
|
||||
groupItem={item.groupItem}
|
||||
isLast={item.isLast}
|
||||
isFirst={index === 0}
|
||||
withoutHeader={item.withoutHeader}
|
||||
withoutSeparator={item.withoutSeparator}
|
||||
changeFilterValue={changeFilterValue}
|
||||
showSelector={changeShowSelector}
|
||||
withMultiItems={item.withMultiItems}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
@ -399,10 +418,16 @@ const FilterBlock = ({
|
||||
<Button
|
||||
size="normal"
|
||||
primary={true}
|
||||
label={t("AddFilter")}
|
||||
label={t("ApplyButton")}
|
||||
scale={true}
|
||||
onClick={onFilterAction}
|
||||
/>
|
||||
<Button
|
||||
size="normal"
|
||||
label={t("CancelButton")}
|
||||
scale={true}
|
||||
onClick={hideFilterBlock}
|
||||
/>
|
||||
</StyledFilterBlockFooter>
|
||||
)}
|
||||
|
||||
|
@ -34,6 +34,8 @@ const FilterBlockItem = ({
|
||||
withoutSeparator,
|
||||
changeFilterValue,
|
||||
showSelector,
|
||||
isFirst,
|
||||
withMultiItems,
|
||||
}) => {
|
||||
const changeFilterValueAction = (
|
||||
key,
|
||||
@ -129,24 +131,29 @@ const FilterBlockItem = ({
|
||||
};
|
||||
|
||||
const getWithOptionsItem = (item) => {
|
||||
const selectedOption = item.options.find((option) => option.isSelected);
|
||||
const selectedOption =
|
||||
item.options.find((option) => option.isSelected) || item.options[0];
|
||||
|
||||
return (
|
||||
<ComboBox
|
||||
className={"combo-item"}
|
||||
key={item.key}
|
||||
onSelect={(data) =>
|
||||
changeFilterValueAction(
|
||||
data.key,
|
||||
data.key === selectedOption?.key,
|
||||
data.key === item.options[0].key,
|
||||
false,
|
||||
item.withOptions
|
||||
)
|
||||
}
|
||||
options={item.options}
|
||||
selectedOption={selectedOption ? selectedOption : item.options[0]}
|
||||
selectedOption={selectedOption}
|
||||
displaySelectedOption={true}
|
||||
scaled={true}
|
||||
scaledOptions={true}
|
||||
isDefaultMode={false}
|
||||
directionY={"bottom"}
|
||||
fixedDirection
|
||||
/>
|
||||
);
|
||||
};
|
||||
@ -187,14 +194,18 @@ const FilterBlockItem = ({
|
||||
};
|
||||
|
||||
return (
|
||||
<StyledFilterBlockItem withoutHeader={withoutHeader}>
|
||||
<StyledFilterBlockItem isFirst={isFirst} withoutHeader={withoutHeader}>
|
||||
{!withoutHeader && (
|
||||
<StyledFilterBlockItemHeader>
|
||||
<Heading size="xsmall">{label}</Heading>
|
||||
</StyledFilterBlockItemHeader>
|
||||
)}
|
||||
|
||||
<StyledFilterBlockItemContent withoutHeader={withoutHeader}>
|
||||
<StyledFilterBlockItemContent
|
||||
withMultiItems={withMultiItems}
|
||||
withoutHeader={withoutHeader}
|
||||
withoutSeparator={withoutSeparator}
|
||||
>
|
||||
{groupItem.map((item) => {
|
||||
if (item.isSelector === true) return getSelectorItem(item);
|
||||
if (item.isToggle === true) return getToggleItem(item);
|
||||
|
@ -17,6 +17,10 @@ const FilterButton = ({
|
||||
|
||||
filterHeader,
|
||||
selectorLabel,
|
||||
|
||||
isPersonalRoom,
|
||||
isRooms,
|
||||
isAccounts,
|
||||
}) => {
|
||||
const [showFilterBlock, setShowFilterBlock] = React.useState(false);
|
||||
|
||||
@ -42,6 +46,9 @@ const FilterButton = ({
|
||||
getFilterData={getFilterData}
|
||||
onFilter={onFilter}
|
||||
selectorLabel={selectorLabel}
|
||||
isPersonalRoom={isPersonalRoom}
|
||||
isRooms={isRooms}
|
||||
isAccounts={isAccounts}
|
||||
/>
|
||||
)}
|
||||
</>
|
||||
|
@ -14,6 +14,7 @@ import { Base } from "@docspace/components/themes";
|
||||
|
||||
import SortDesc from "../../../../../public/images/sort.desc.react.svg";
|
||||
import Backdrop from "@docspace/components/backdrop";
|
||||
import { Events } from "@docspace/common/constants";
|
||||
|
||||
const selectedViewIcon = css`
|
||||
svg {
|
||||
@ -191,7 +192,7 @@ const SortButton = ({
|
||||
sortId: null,
|
||||
});
|
||||
|
||||
React.useEffect(() => {
|
||||
const getSortDataAction = React.useCallback(() => {
|
||||
const value = getSortData && getSortData();
|
||||
const selectedValue = getSelectedSortData && getSelectedSortData();
|
||||
|
||||
@ -212,7 +213,15 @@ const SortButton = ({
|
||||
sortDirection: selectedValue.sortDirection,
|
||||
sortId: selectedValue.sortId,
|
||||
});
|
||||
}, [getSortData, getSelectedSortData]);
|
||||
}, [getSortData, getSelectedSortData, viewAs]);
|
||||
|
||||
React.useEffect(() => {
|
||||
window.addEventListener(Events.CHANGE_COLUMN, getSortDataAction);
|
||||
getSortDataAction();
|
||||
|
||||
return () =>
|
||||
window.removeEventListener(Events.CHANGE_COLUMN, getSortDataAction);
|
||||
}, [getSortDataAction]);
|
||||
|
||||
const toggleCombobox = React.useCallback(() => {
|
||||
setIsOpen((val) => !val);
|
||||
|
@ -51,6 +51,16 @@ const StyledFilterBlock = styled.div`
|
||||
|
||||
.filter-body {
|
||||
height: ${(props) => (props.showFooter ? "calc(100% - 125px)" : "100%")};
|
||||
|
||||
.combo-button {
|
||||
justify-content: space-between;
|
||||
|
||||
.combo-button-label {
|
||||
font-size: 13px;
|
||||
font-weight: 400;
|
||||
line-height: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
@ -72,6 +82,10 @@ const StyledFilterBlockHeader = styled.div`
|
||||
align-items: center;
|
||||
justify-content: ${(props) => (props.isSelector ? "start" : "space-between")};
|
||||
|
||||
h1 {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.arrow-button {
|
||||
margin-right: 12px;
|
||||
}
|
||||
@ -84,8 +98,9 @@ const StyledFilterBlockHeader = styled.div`
|
||||
StyledFilterBlockHeader.defaultProps = { theme: Base };
|
||||
|
||||
const StyledFilterBlockItem = styled.div`
|
||||
padding: ${(props) =>
|
||||
!props.withoutHeader ? "12px 16px 0px 16px" : "6px 16px 0px 16px"};
|
||||
margin: ${(props) =>
|
||||
props.withoutHeader ? "0" : props.isFirst ? "12px 0 0 0" : "16px 0 0 0"};
|
||||
padding: 0 15px 0 16px;
|
||||
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@ -102,8 +117,8 @@ const StyledFilterBlockItemHeader = styled.div`
|
||||
`;
|
||||
|
||||
const StyledFilterBlockItemContent = styled.div`
|
||||
margin-top: ${(props) => !props.withoutHeader && "12px"};
|
||||
margin-right: -16px;
|
||||
margin: ${(props) =>
|
||||
props.withoutSeparator ? "12px -16px 0 0" : "12px -16px 16px 0"};
|
||||
|
||||
height: fit-content;
|
||||
|
||||
@ -111,6 +126,8 @@ const StyledFilterBlockItemContent = styled.div`
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
|
||||
gap: ${(props) => (props.withMultiItems ? "12px 8px" : "8px")};
|
||||
`;
|
||||
|
||||
const StyledFilterBlockItemSelector = styled.div`
|
||||
@ -120,8 +137,6 @@ const StyledFilterBlockItemSelector = styled.div`
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
|
||||
margin: 0 0 11px;
|
||||
`;
|
||||
|
||||
const StyledFilterBlockItemSelectorText = styled(Text)`
|
||||
@ -143,8 +158,8 @@ const selectedItemTag = css`
|
||||
`;
|
||||
|
||||
const StyledFilterBlockItemTag = styled.div`
|
||||
height: 30px;
|
||||
max-height: 30px;
|
||||
height: 28px;
|
||||
max-height: 28px;
|
||||
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
@ -157,8 +172,6 @@ const StyledFilterBlockItemTag = styled.div`
|
||||
|
||||
padding: 4px 15px;
|
||||
|
||||
margin: 0 6px 12px 0;
|
||||
|
||||
cursor: pointer;
|
||||
|
||||
${(props) => props.isSelected && selectedItemTag}
|
||||
@ -170,12 +183,13 @@ StyledFilterBlockItemTag.defaultProps = { theme: Base };
|
||||
|
||||
const selectedItemTagText = css`
|
||||
color: ${(props) => props.theme.filterInput.filter.selectedItem.color};
|
||||
font-weight: 600;
|
||||
`;
|
||||
|
||||
const StyledFilterBlockItemTagText = styled(Text)`
|
||||
height: 20px;
|
||||
|
||||
font-weight: normal;
|
||||
font-weight: 400;
|
||||
font-size: 13px;
|
||||
line-height: 20px;
|
||||
|
||||
@ -222,7 +236,13 @@ const StyledFilterBlockItemToggleButton = styled(ToggleButton)`
|
||||
grid-gap: 0px;
|
||||
`;
|
||||
const StyledFilterBlockItemCheckboxContainer = styled.div`
|
||||
margin: 7px 0 11px;
|
||||
.checkbox {
|
||||
margin-right: 8px !important;
|
||||
}
|
||||
|
||||
.checkbox-text {
|
||||
line-height: 20px;
|
||||
}
|
||||
`;
|
||||
|
||||
const StyledFilterBlockItemSeparator = styled.div`
|
||||
@ -232,8 +252,6 @@ const StyledFilterBlockItemSeparator = styled.div`
|
||||
margin-right: 16px;
|
||||
|
||||
background: ${(props) => props.theme.filterInput.filter.separatorColor};
|
||||
|
||||
margin: 2px 0 0 0;
|
||||
`;
|
||||
|
||||
StyledFilterBlockItemToggleButton.defaultProps = { theme: Base };
|
||||
@ -256,6 +274,8 @@ const StyledFilterBlockFooter = styled.div`
|
||||
padding: 0 16px;
|
||||
margin: 0;
|
||||
|
||||
gap: 10px;
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
@ -1,7 +1,5 @@
|
||||
import styled, { css } from "styled-components";
|
||||
|
||||
import RectangleLoader from "../RectangleLoader";
|
||||
|
||||
const StyledContainer = styled.div`
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
@ -12,28 +10,33 @@ const StyledContainer = styled.div`
|
||||
`;
|
||||
|
||||
const StyledBlock = styled.div`
|
||||
padding: 12px 0 6px;
|
||||
padding: 12px 0 16px;
|
||||
|
||||
margin-bottom: 6px;
|
||||
margin-bottom: 4px;
|
||||
|
||||
width: 100%;
|
||||
height: auto;
|
||||
|
||||
display: flex;
|
||||
|
||||
flex-direction: column;
|
||||
|
||||
border-bottom: 1px solid #eceef1;
|
||||
gap: 12px 8px;
|
||||
|
||||
box-sizing: border-box;
|
||||
|
||||
${(props) =>
|
||||
!props.isLast &&
|
||||
css`
|
||||
border-bottom: 1px solid #eceef1;
|
||||
`}
|
||||
|
||||
.row-loader {
|
||||
display: flex;
|
||||
|
||||
align-items: center;
|
||||
}
|
||||
flex-wrap: wrap;
|
||||
|
||||
.loader-item {
|
||||
margin-bottom: 12px;
|
||||
margin-right: 8px;
|
||||
gap: 8px;
|
||||
}
|
||||
`;
|
||||
|
||||
|
@ -4,76 +4,158 @@ import RectangleLoader from "../RectangleLoader";
|
||||
|
||||
import { StyledBlock, StyledContainer } from "./StyledFilterBlockLoader";
|
||||
|
||||
const FilterBlockLoader = ({ id, className, style, ...rest }) => {
|
||||
const FilterBlockLoader = ({
|
||||
id,
|
||||
className,
|
||||
style,
|
||||
isPersonalRoom,
|
||||
isRooms,
|
||||
isAccounts,
|
||||
...rest
|
||||
}) => {
|
||||
return (
|
||||
<StyledContainer id={id} className={className} style={style} {...rest}>
|
||||
{/* <StyledBlock>
|
||||
<RectangleLoader
|
||||
width={"50"}
|
||||
height={"16"}
|
||||
borderRadius={"3"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"448"}
|
||||
height={"32"}
|
||||
borderRadius={"3"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<div className="row-loader">
|
||||
{!isRooms && !isAccounts && (
|
||||
<StyledBlock>
|
||||
<RectangleLoader
|
||||
width={"16"}
|
||||
width={"50"}
|
||||
height={"16"}
|
||||
borderRadius={"3"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"137"}
|
||||
height={"20"}
|
||||
borderRadius={"3"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
</div>
|
||||
</StyledBlock> */}
|
||||
|
||||
<StyledBlock>
|
||||
<RectangleLoader
|
||||
width={"50"}
|
||||
height={"16"}
|
||||
borderRadius={"3"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<div className="row-loader">
|
||||
<RectangleLoader
|
||||
width={"49"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"67"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
</div>
|
||||
<div className="row-loader">
|
||||
<RectangleLoader
|
||||
width={"32"}
|
||||
width={"100%"}
|
||||
height={"32"}
|
||||
borderRadius={"6"}
|
||||
borderRadius={"3"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<div className="row-loader">
|
||||
<RectangleLoader
|
||||
width={"16"}
|
||||
height={"16"}
|
||||
borderRadius={"3"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"137"}
|
||||
height={"20"}
|
||||
borderRadius={"3"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
</div>
|
||||
</StyledBlock>
|
||||
)}
|
||||
|
||||
{!isPersonalRoom && !isAccounts && (
|
||||
<StyledBlock>
|
||||
<RectangleLoader
|
||||
width={"76"}
|
||||
width={"51"}
|
||||
height={"16"}
|
||||
borderRadius={"3"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
</div>
|
||||
</StyledBlock>
|
||||
<div className="row-loader">
|
||||
<RectangleLoader
|
||||
width={"49"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"76"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
</div>
|
||||
<div className="row-loader">
|
||||
<RectangleLoader
|
||||
width={"32"}
|
||||
height={"32"}
|
||||
borderRadius={"6"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"103"}
|
||||
height={"16"}
|
||||
borderRadius={"3"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
</div>
|
||||
</StyledBlock>
|
||||
)}
|
||||
|
||||
<StyledBlock>
|
||||
{(isRooms || isAccounts) && (
|
||||
<StyledBlock>
|
||||
<RectangleLoader
|
||||
width={"50"}
|
||||
height={"16"}
|
||||
borderRadius={"3"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<div className="row-loader">
|
||||
{isAccounts ? (
|
||||
<>
|
||||
<RectangleLoader
|
||||
width={"67"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"80"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"83"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
</>
|
||||
) : isRooms ? (
|
||||
<>
|
||||
<RectangleLoader
|
||||
width={"77"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"98"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"112"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"73"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"89"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
</>
|
||||
) : (
|
||||
<></>
|
||||
)}
|
||||
</div>
|
||||
</StyledBlock>
|
||||
)}
|
||||
|
||||
<StyledBlock isLast>
|
||||
<RectangleLoader
|
||||
width={"50"}
|
||||
height={"16"}
|
||||
@ -81,90 +163,125 @@ const FilterBlockLoader = ({ id, className, style, ...rest }) => {
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<div className="row-loader">
|
||||
<RectangleLoader
|
||||
width={"79"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"79"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"79"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"79"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"79"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
{isAccounts ? (
|
||||
<>
|
||||
<RectangleLoader
|
||||
width={"114"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"84"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"59"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
</>
|
||||
) : isRooms ? (
|
||||
<>
|
||||
<RectangleLoader
|
||||
width={"67"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"73"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"67"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"74"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"65"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"72"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
<RectangleLoader
|
||||
width={"73"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"99"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"114"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"112"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"130"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"66"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"81"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"74"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"68"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item tag-item"}
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
<RectangleLoader
|
||||
width={"79"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
</StyledBlock>
|
||||
|
||||
<StyledBlock>
|
||||
<RectangleLoader
|
||||
width={"50"}
|
||||
height={"16"}
|
||||
borderRadius={"3"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<div className="row-loader">
|
||||
<RectangleLoader
|
||||
width={"79"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"79"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"79"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"79"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
<RectangleLoader
|
||||
width={"79"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
</div>
|
||||
<RectangleLoader
|
||||
width={"79"}
|
||||
height={"28"}
|
||||
borderRadius={"16"}
|
||||
className={"loader-item"}
|
||||
/>
|
||||
</StyledBlock>
|
||||
</StyledContainer>
|
||||
);
|
||||
|
@ -45,6 +45,8 @@ export const FilterType = Object.freeze({
|
||||
ArchiveOnly: 10,
|
||||
ByExtension: 11,
|
||||
MediaOnly: 12,
|
||||
OFormTemplateOnly: 18,
|
||||
OFormOnly: 19,
|
||||
});
|
||||
/**
|
||||
* Enum for file type.
|
||||
@ -59,6 +61,8 @@ export const FileType = Object.freeze({
|
||||
Spreadsheet: 5,
|
||||
Presentation: 6,
|
||||
Document: 7,
|
||||
OFormTemplate: 8,
|
||||
OForm: 9,
|
||||
});
|
||||
/**
|
||||
* Enum for room type.
|
||||
@ -244,3 +248,15 @@ export const ThemeKeys = Object.freeze({
|
||||
System: "2",
|
||||
SystemStr: "System",
|
||||
});
|
||||
|
||||
/**
|
||||
* Enum for global events.
|
||||
* @readonly
|
||||
*/
|
||||
export const Events = Object.freeze({
|
||||
CREATE: "create",
|
||||
RENAME: "rename",
|
||||
ROOM_CREATE: "create_room",
|
||||
ROOM_EDIT: "edit_room",
|
||||
CHANGE_COLUMN: "change_column",
|
||||
});
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { makeAutoObservable } from "mobx";
|
||||
import { Events } from "@docspace/common/constants";
|
||||
|
||||
class InfoPanelStore {
|
||||
isVisible = false;
|
||||
@ -9,14 +10,24 @@ class InfoPanelStore {
|
||||
|
||||
toggleIsVisible = () => {
|
||||
this.isVisible = !this.isVisible;
|
||||
const event = new Event(Events.CHANGE_COLUMN);
|
||||
|
||||
window.dispatchEvent(event);
|
||||
};
|
||||
|
||||
setVisible = () => {
|
||||
this.isVisible = true;
|
||||
const event = new Event(Events.CHANGE_COLUMN);
|
||||
|
||||
window.dispatchEvent(event);
|
||||
};
|
||||
|
||||
setIsVisible = (bool) => {
|
||||
this.isVisible = bool;
|
||||
|
||||
const event = new Event(Events.CHANGE_COLUMN);
|
||||
|
||||
window.dispatchEvent(event);
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -43,6 +43,8 @@ const TableSettings = ({ columns, infoPanelVisible }) => {
|
||||
withBackdrop={false}
|
||||
>
|
||||
{columns.map((column) => {
|
||||
if (column.isDisabled) return;
|
||||
|
||||
const onChange = (e) =>
|
||||
column.onChange && column.onChange(column.key, e);
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
"AddUsers": "Add users",
|
||||
"AdminSettings": "Admin",
|
||||
"Alert": "Alert",
|
||||
"ApplyButton": "Apply",
|
||||
"Archive": "Archive",
|
||||
"Attention": "Attention",
|
||||
"Audio": "Audio",
|
||||
@ -19,6 +20,7 @@
|
||||
"ByLastNameSorting": "By last name",
|
||||
"CancelButton": "Cancel",
|
||||
"ClearButton": "Reset filter",
|
||||
"ClearAll": "Clear all",
|
||||
"ClearFilter": "Clear search",
|
||||
"CloseButton": "Close",
|
||||
"Color": "Color",
|
||||
|
Loading…
Reference in New Issue
Block a user