Merge branch 'release/v2.6.0' into develop

# Conflicts:
#	packages/client/src/pages/PortalSettings/categories/data-import/NextCloudWorkspace/Stepper/SelectFileStep/index.js
#	packages/client/src/pages/PortalSettings/categories/data-import/OnlyofficeWorkspace/Stepper/SelectFileStep/index.js
This commit is contained in:
Alexey Safronov 2024-07-16 12:59:23 +04:00
commit 54a5b93ac0
93 changed files with 826 additions and 589 deletions

View File

@ -146,7 +146,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "إعدادات اللغة والمنطقة الزمنية هي طريقة لتغير لغة البوابة بأكملها لجميع مستخدمين البوابة ولتهيئة المنطقة الزمنية حيث يمكنهم متابعة أحداث البوابة المعروضة بالوقت والتاريخ الصحيح.",
"LastUpdate": "اخر تحديث: {{date}}",
"LicenseLimitCounter": "حد الترخيص للمدراء/المستخدمين ذوي الصلاحيات:",
"LicenseLimitDescription": "يتكون عداد حد الترخيص من: الحسابات الموجودة بالفعل في {{productName}} والمستخدمين الجدد الذين تريد استيرادهم. إذا قمت باستيراد مستخدمين لديهم حساب {{productName}} بالفعل، فلن يتم احتسابهم مرة أخرى في العداد. يسمح لك ترخيص {{productName}} الخاص بك بالحصول على 100 مستخدم كحد أقصى.",
"LicenseLimitDescription": "يتكون عداد حد الترخيص من: الحسابات الموجودة بالفعل في {{productName}} والمستخدمين الجدد الذين تريد استيرادهم. إذا قمت باستيراد مستخدمين لديهم حساب {{productName}} بالفعل، فلن يتم احتسابهم مرة أخرى في العداد. يسمح لك ترخيص {{productName}} الخاص بك بالحصول على {{maxLimit}} مستخدم كحد أقصى.",
"Lifetime": "الوقت المتبقي (دقيقة)",
"LimitThemesTooltip": "يمكنك فقط إنشاء 3 قوالب مخصصة. لإنشاء واحدة جديدة ، يجب عليك حذف أحد القوالب السابقة.",
"LocalFile": "ملف محلي",

View File

@ -146,7 +146,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Dil və Saat qurşağı Parametrləri bütün portal istifadəçiləri üçün bütün portalın dilini dəyişmək və portaldakı bütün hadisələrin düzgün tarix və vaxtla göstərilməsi üçün saat qurşağını konfiqurasiya etmək üsuludur.",
"LastUpdate": "Son yeniləmə: {{date}}",
"LicenseLimitCounter": "Lisenziya limiti Administratorlar/Güc:",
"LicenseLimitDescription": "Lisenziya limiti sayğacı aşağıdakılardan ibarətdir: {{productName}}-də mövcud hesablar və idxal etmək istədiyiniz yeni istifadəçilər. Artıq {{productName}} hesabı olan istifadəçiləri idxal etsəniz, onlar bir daha sayğacda sayılmayacaqlar. {{productName}} lisenziyanız maksimum 100 istifadəçinin mövcud olmasına imkan verir.",
"LicenseLimitDescription": "Lisenziya limiti sayğacı aşağıdakılardan ibarətdir: {{productName}}-də mövcud hesablar və idxal etmək istədiyiniz yeni istifadəçilər. Artıq {{productName}} hesabı olan istifadəçiləri idxal etsəniz, onlar bir daha sayğacda sayılmayacaqlar. {{productName}} lisenziyanız maksimum {{maxLimit}} istifadəçinin mövcud olmasına imkan verir.",
"Lifetime": "Ömürlük (dəq)",
"LimitThemesTooltip": "Siz yalnız 3 fərdi mövzu yarada bilərsiniz. Yenisini yaratmaq üçün əvvəlki mövzulardan birini silməlisiniz.",
"LocalFile": "Yerli fayl",

View File

@ -147,7 +147,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Настройките за Език и Часова зона са начин за промяна на езика на целия портал за всички потребители на портала и за конфигуриране на часовата зона, така че всички събития на портала да се показват с правилните дата и час.",
"LastUpdate": "Последна актуализация: {{date}}",
"LicenseLimitCounter": "Ограничение на лиценза Администратори/Мощност:",
"LicenseLimitDescription": "Броячът за ограничение на лиценза се състои от: вече съществуващи профили в {{productName}} и нови потребители, които искате да входирате. Ако входирате потребители, които вече имат профил в {{productName}}, те няма да бъдат преброени отново в брояча. Вашият лиценз за {{productName}} ви позволява да имате максимум 100 потребителя.",
"LicenseLimitDescription": "Броячът за ограничение на лиценза се състои от: вече съществуващи профили в {{productName}} и нови потребители, които искате да входирате. Ако входирате потребители, които вече имат профил в {{productName}}, те няма да бъдат преброени отново в брояча. Вашият лиценз за {{productName}} ви позволява да имате максимум {{maxLimit}} потребителя.",
"Lifetime": "Живот (мин.)",
"LimitThemesTooltip": "Можете да създадете само 3 персонализирани теми. За да създадете нова, трябва да изтриете една от предишните теми.",
"LocalFile": "Локален файл",

View File

@ -147,7 +147,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Nastavení jazyka a časového pásma umožňuje změnit jazyk celého portálu pro všechny uživatele portálu a nakonfigurovat časové pásmo tak, aby se všechny události portálu zobrazovaly se správným datem a časem.",
"LastUpdate": "Poslední aktualizace: {{date}}",
"LicenseLimitCounter": "Omezení licence Administrátoři/možnosti:",
"LicenseLimitDescription": "Počítadlo licenčních limitů se skládá z: již existujících účtů v {{productName}} a nových uživatelů, které chcete importovat. Pokud importujete uživatele, kteří již účet v {{productName}} mají, nebudou do počítadla znovu započítáni. Vaše licence {{productName}} vám umožňuje mít maximálně 100 uživatelů.",
"LicenseLimitDescription": "Počítadlo licenčních limitů se skládá z: již existujících účtů v {{productName}} a nových uživatelů, které chcete importovat. Pokud importujete uživatele, kteří již účet v {{productName}} mají, nebudou do počítadla znovu započítáni. Vaše licence {{productName}} vám umožňuje mít maximálně {{maxLimit}} uživatelů.",
"Lifetime": "Životnost (min)",
"LimitThemesTooltip": "Můžete vytvořit pouze 3 vlastní motivy. Chcete-li vytvořit nové, musíte odstranit jedno z předchozích témat.",
"LocalFile": "Místní soubor",

View File

@ -145,7 +145,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Sprache- und Zeitzoneneinstellungen ist eine Möglichkeit, die Sprache des gesamten Portals für alle Portalbenutzer zu ändern und die Zeitzone so zu konfigurieren, dass alle Ereignisse des Portals mit dem richtigen Datum und der richtigen Zeit angezeigt werden.",
"LastUpdate": "Letzte Aktualisierung: {{date}}",
"LicenseLimitCounter": "Lizenzbeschränkung Administratoren/Powerusers:",
"LicenseLimitDescription": "Der Lizenzlimitzähler besteht aus: bereits vorhandenen Konten in {{productName}} und neuen Benutzern, die Sie importieren möchten. Wenn Sie Benutzer importieren, die bereits über ein {{productName}}-Konto verfügen, werden diese im Zähler nicht erneut gezählt. Mit Ihrer {{productName}}-Lizenz können Sie maximal 100 Benutzer haben.",
"LicenseLimitDescription": "Der Lizenzlimitzähler besteht aus: bereits vorhandenen Konten in {{productName}} und neuen Benutzern, die Sie importieren möchten. Wenn Sie Benutzer importieren, die bereits über ein {{productName}}-Konto verfügen, werden diese im Zähler nicht erneut gezählt. Mit Ihrer {{productName}}-Lizenz können Sie maximal {{maxLimit}} Benutzer haben.",
"Lifetime": "Lebenszeit (min)",
"LimitThemesTooltip": "Sie können nur 3 benutzerdefinierte Themen erstellen. Um ein neues Thema zu erstellen, müssen Sie eines der vorherigen Themen löschen.",
"LocalFile": "Lokale Datei",

View File

@ -145,7 +145,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Οι Ρυθμίσεις γλώσσας και ζώνης ώρας είναι ένας τρόπος για να αλλάξετε τη γλώσσα ολόκληρης της πύλης για όλους τους χρήστες της πύλης και να ρυθμίσετε τη ζώνη ώρας, ώστε όλα τα συμβάντα της πύλης να εμφανίζονται με τη σωστή ημερομηνία και ώρα.",
"LastUpdate": "Τελευταία ενημέρωση: {{date}}",
"LicenseLimitCounter": "Όριο άδειας χρήσης Διαχειριστές/Ισχύς:",
"LicenseLimitDescription": "Ο μετρητής του ορίου αδειών χρήσης αποτελείται από: τους ήδη υπάρχοντες λογαριασμούς στο {{productName}} και τους νέους χρήστες που θέλετε να εισαγάγετε. Εάν εισαγάγετε χρήστες που έχουν ήδη λογαριασμό στο {{productName}}, δεν θα υπολογίζονται ξανά στον μετρητή. Η άδεια χρήσης του {{productName}} σάς επιτρέπει να έχετε το πολύ 100 χρήστες.",
"LicenseLimitDescription": "Ο μετρητής του ορίου αδειών χρήσης αποτελείται από: τους ήδη υπάρχοντες λογαριασμούς στο {{productName}} και τους νέους χρήστες που θέλετε να εισαγάγετε. Εάν εισαγάγετε χρήστες που έχουν ήδη λογαριασμό στο {{productName}}, δεν θα υπολογίζονται ξανά στον μετρητή. Η άδεια χρήσης του {{productName}} σάς επιτρέπει να έχετε το πολύ {{maxLimit}} χρήστες.",
"Lifetime": "Διάρκεια ζωής (λεπτά)",
"LimitThemesTooltip": "Μπορείτε να δημιουργήσετε μόνο 3 προσαρμοσμένα θέματα. Για να δημιουργήσετε ένα νέο, πρέπει να διαγράψετε ένα από τα προηγούμενα θέματα.",
"LocalFile": "Τοπικό αρχείο",

View File

@ -14,6 +14,7 @@
"HotkeysCreateSpreadsheet": "Create spreadsheet",
"HotkeysCreatingObjects": "Creating items",
"HotkeysCutSelected": "Cut selected items to the clipboard",
"HotkeysRenameSelected": "Rename selected item",
"HotkeysExtendSelectionDown": "Extend selection down",
"HotkeysExtendSelectionLeft": "Extend selection left",
"HotkeysExtendSelectionRight": "Extend selection right",

View File

@ -154,7 +154,7 @@
"LastUpdate": "Last update: {{date}}",
"LDAP": "LDAP Settings",
"LicenseLimitCounter": "License limit Admins/Power users:",
"LicenseLimitDescription": "The license limit counter consists of: already existing accounts in {{productName}} and new users that you want to import. If you import users who already have a {{productName}} account, they will not be counted again in the counter. Your {{productName}} license allows you to have a maximum of 100 users.",
"LicenseLimitDescription": "The license limit counter consists of: already existing accounts in {{productName}} and new users that you want to import. If you import users who already have a {{productName}} account, they will not be counted again in the counter. Your {{productName}} license allows you to have a maximum of {{maxLimit}} users.",
"Lifetime": "Lifetime (min)",
"LimitThemesTooltip": "You can only create 3 custom themes. To create a new one, you must delete one of the previous themes.",
"LocalFile": "Local file",

View File

@ -148,7 +148,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "La configuración de idioma y zona horaria permite cambiar el idioma de todo el portal para todos los usuarios del mismo y configurar la zona horaria para que todos los eventos del portal se muestren con la fecha y hora correctas.",
"LastUpdate": "Última actualización: {{date}}",
"LicenseLimitCounter": "Límite de licencia para Administradores/Usuarios avanzados:",
"LicenseLimitDescription": "El contador de límite de licencias consta de: cuentas ya existentes en {{productName}} y nuevos usuarios que desea importar. Si importa usuarios que ya tienen una cuenta de {{productName}}, no volverán a contarse en el contador. Su licencia de {{productName}} le permite tener un máximo de 100 usuarios.",
"LicenseLimitDescription": "El contador de límite de licencias consta de: cuentas ya existentes en {{productName}} y nuevos usuarios que desea importar. Si importa usuarios que ya tienen una cuenta de {{productName}}, no volverán a contarse en el contador. Su licencia de {{productName}} le permite tener un máximo de {{maxLimit}} usuarios.",
"Lifetime": "Duración (min)",
"LimitThemesTooltip": "Solo puede crear 3 temas personalizados. Para crear uno nuevo, debe eliminar uno de los temas anteriores.",
"LocalFile": "Archivo local",

View File

@ -143,7 +143,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Kieli- ja aikavyöhyke-asetukset on tapa muuttaa koko portaalin kieli kaikille käyttäjille ja määrittää aikavyöhyke, jotta kaikki portaalin tapahtumat näytetään oikeana päivänä ja aikana.",
"LastUpdate": "Viimeinen päivitys: {{date}}",
"LicenseLimitCounter": "Lisenssiraja Järjestelmänvalvojat/Virta:",
"LicenseLimitDescription": "Lisenssirajalaskuri koostuu jo olemassa olevista {{productName}}-n tileistä ja uusistä käyttäjistä, jotka haluat tuoda. Jos tuot käyttäjiä, joilla on jo {{productName}}-tili, heitä ei lasketa uudelleen laskuriin. {{productName}}-lisenssilläsi voi olla enintaan 100 käyttäjää.",
"LicenseLimitDescription": "Lisenssirajalaskuri koostuu jo olemassa olevista {{productName}}-n tileistä ja uusistä käyttäjistä, jotka haluat tuoda. Jos tuot käyttäjiä, joilla on jo {{productName}}-tili, heitä ei lasketa uudelleen laskuriin. {{productName}}-lisenssilläsi voi olla enintaan {{maxLimit}} käyttäjää.",
"Lifetime": "Elinikä (min)",
"LimitThemesTooltip": "Voit luoda vain 3 räätälöityä teemaa. Luodaksesi uuden, sinun täytyy poistaa yksi edellisistä teemoista.",
"LocalFile": "Paikallinen tiedosto",

View File

@ -145,7 +145,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Les paramètres de langue et de fuseau horaire permettent de modifier la langue de l'ensemble du portail pour tous les utilisateurs du portail et de configurer le fuseau horaire de manière à ce que tous les événements du portail soient affichés avec la date et l'heure correctes.",
"LastUpdate": "Dernière mise à jour: {{date}}",
"LicenseLimitCounter": "Limite autorisée des Administrateurs/Utilisateurs avancés",
"LicenseLimitDescription": "Le compteur de la limite autorisée inclut: les comptes existants dans {{productName}} et de nouveaux utilisateurs que vous souhaitez importer. Lors de l'importation, le compteur ne prend pas en compte les utilisateurs qui ont déjà un compte {{productName}}. Votre licence {{productName}} vous permet d'avoir 100 utilisateurs au maximum.",
"LicenseLimitDescription": "Le compteur de la limite autorisée inclut: les comptes existants dans {{productName}} et de nouveaux utilisateurs que vous souhaitez importer. Lors de l'importation, le compteur ne prend pas en compte les utilisateurs qui ont déjà un compte {{productName}}. Votre licence {{productName}} vous permet d'avoir {{maxLimit}} utilisateurs au maximum.",
"Lifetime": "Durée de vie (min)",
"LimitThemesTooltip": "Vous ne pouvez créer que 3 thèmes personnalisés. Pour en créer un nouveau, vous devez supprimer lun des thèmes précédents.",
"LocalFile": "Fichier local",

View File

@ -147,7 +147,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Լեզվի և ժամային գոտու կարգավորումները պորտալի բոլոր օգտագործողների համար ամբողջ պորտալի լեզուն փոխելու և ժամային գոտին այնպես կարգավորելու միջոց է, որպեսզի պորտալի բոլոր իրադարձությունները ցուցադրվեն ճիշտ ամսաթվով և ժամով:",
"LastUpdate": "Վերջին թարմացում: {{date}}",
"LicenseLimitCounter": "Լիցենզիայի սահմանաչափ ադմիններ/հզորություն.",
"LicenseLimitDescription": "Լիցենզիայի սահմանաչափը բաղկացած է {{productName}}-ում արդեն գոյություն ունեցող հաշիվներից և նոր օգտվողներից, որոնք ցանկանում եք ներմուծել: Եթե ներմուծում եք օգտատերեր, ովքեր արդեն ունեն {{productName}} հաշիվ, նրանք կրկին չեն հաշվվելու հաշվիչում: Ձեր {{productName}} լիցենզիան թույլ է տալիս ունենալ առավելագույնը 100 օգտվող:",
"LicenseLimitDescription": "Լիցենզիայի սահմանաչափը բաղկացած է {{productName}}-ում արդեն գոյություն ունեցող հաշիվներից և նոր օգտվողներից, որոնք ցանկանում եք ներմուծել: Եթե ներմուծում եք օգտատերեր, ովքեր արդեն ունեն {{productName}} հաշիվ, նրանք կրկին չեն հաշվվելու հաշվիչում: Ձեր {{productName}} լիցենզիան թույլ է տալիս ունենալ առավելագույնը {{maxLimit}} օգտվող:",
"Lifetime": "Աշխատաժամ (րոպե)",
"LimitThemesTooltip": "Դուք կարող եք ստեղծել միայն 3 հատուկ թեմա: Նորը ստեղծելու համար դուք պետք է ջնջեք նախորդ թեմաներից մեկը:",
"LocalFile": "Տեղական ֆայլ",

View File

@ -146,7 +146,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Le impostazioni di lingua e fuso orario rappresentano un modo per cambiare la lingua dell'intero portale per tutti gli utenti del portale e per configurare il fuso orario in modo che tutti gli eventi del portale vengano visualizzati con la data e l'ora corrette.",
"LastUpdate": "Ultimo aggiornamento: {{date}}",
"LicenseLimitCounter": "Limite di licenza Amministratori/Utenti esperti:",
"LicenseLimitDescription": "Il contatore del limite di licenza è composto da: account già esistenti in {{productName}} e nuovi utenti che si desidera importare. Se importi utenti che già dispongono di un account {{productName}}, questi non verranno contati nuovamente nel contatore. La tua licenza {{productName}} ti consente di avere un massimo di 100 utenti.",
"LicenseLimitDescription": "Il contatore del limite di licenza è composto da: account già esistenti in {{productName}} e nuovi utenti che si desidera importare. Se importi utenti che già dispongono di un account {{productName}}, questi non verranno contati nuovamente nel contatore. La tua licenza {{productName}} ti consente di avere un massimo di {{maxLimit}} utenti.",
"Lifetime": "Durata (min)",
"LimitThemesTooltip": "Puoi creare solo 3 temi personalizzati. Per crearne uno nuovo, devi eliminare uno dei temi precedenti.",
"LocalFile": "File locale",

View File

@ -146,7 +146,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "言語とタイムゾーンの設定は、すべてのポータルユーザーのためにポータル全体の言語を変更し、ポータルのすべてのイベントが正しい日付と時刻で表示されるようにタイムゾーンを設定する方法です。",
"LastUpdate": "最終更新日:{{date}} ",
"LicenseLimitCounter": "ライセンス制限 管理者/パワー:",
"LicenseLimitDescription": "ライセンス制限カウンターは、{{productName}}に既に存在するアカウントと、インポートする新規ユーザーで構成されます。既に{{productName}}アカウントを持っているユーザーをインポートした場合、そのユーザーはカウントされません。現在の{{productName}}ライセンスでは、最大100人のユーザーを持つことができます。",
"LicenseLimitDescription": "ライセンス制限カウンターは、{{productName}}に既に存在するアカウントと、インポートする新規ユーザーで構成されます。既に{{productName}}アカウントを持っているユーザーをインポートした場合、そのユーザーはカウントされません。現在の{{productName}}ライセンスでは、最大{{maxLimit}}人のユーザーを持つことができます。",
"Lifetime": "有効期間(分)",
"LimitThemesTooltip": "カスタムテーマは3つまでしか作成できません。新しく作成する場合は、以前のテーマを1つ削除する必要があります。",
"LocalFile": "ローカルファイル",

View File

@ -147,7 +147,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "언어 및 시간대 설정을 통해 모든 포털 사용자에 대해 전체 포털의 언어를 변경하고 포털의 모든 이벤트가 올바른 날짜와 시간으로 표시되도록 시간대를 구성할 수 있습니다.",
"LastUpdate": "마지막 업데이트: {{date}}",
"LicenseLimitCounter": "라이센스 제한 관리자/권한:",
"LicenseLimitDescription": "라이센스 제한 카운터는 {{productName}}의 기존 계정과 가져오기하려는 새 사용자로 구성됩니다. 이미 {{productName}} 계정이 있는 사용자를 가져오기하면 해당 사용자는 카운터에 다시 계산되지 않습니다.{{productName}} 라이센스를 사용하면 최대 100명의 사용자를 보유할 수 있습니다.",
"LicenseLimitDescription": "라이센스 제한 카운터는 {{productName}}의 기존 계정과 가져오기하려는 새 사용자로 구성됩니다. 이미 {{productName}} 계정이 있는 사용자를 가져오기하면 해당 사용자는 카운터에 다시 계산되지 않습니다.{{productName}} 라이센스를 사용하면 최대 {{maxLimit}}명의 사용자를 보유할 수 있습니다.",
"Lifetime": "수명(분)",
"LimitThemesTooltip": "3개의 사용자 지정 테마만 생성할 수 있습니다. 새 테마를 생성하려면 이미 생성한 테마 중 하나를 삭제해야 합니다.",
"LocalFile": "로컬 파일",

View File

@ -146,7 +146,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Valodas un Laika joslas iestatījumi ir veids, kā mainīt visa portāla valodu visiem portāla lietotājiem un konfigurēt laika joslu tā, lai visi portāla notikumi tiktu rādīti ar pareizo datumu un laiku.",
"LastUpdate": "Pēdējā atjaunināšana: {{date}}",
"LicenseLimitCounter": "Licences ierobežojums Administratori/jauda:",
"LicenseLimitDescription": "Licenču ierobežojumu skaitītājs sastāv no: jau esošiem kontiem {{productName}} un jauniem lietotājiem, kurus vēlaties importēt. Ja importējat lietotājus, kuriem jau ir {{productName}} konts, tie vairs netiks skaitīti skaitītājā. Jūsu {{productName}} licence ļauj jums uzņemt ne vairāk kā 100 lietotājus.",
"LicenseLimitDescription": "Licenču ierobežojumu skaitītājs sastāv no: jau esošiem kontiem {{productName}} un jauniem lietotājiem, kurus vēlaties importēt. Ja importējat lietotājus, kuriem jau ir {{productName}} konts, tie vairs netiks skaitīti skaitītājā. Jūsu {{productName}} licence ļauj jums uzņemt ne vairāk kā {{maxLimit}} lietotājus.",
"Lifetime": "Kalpošanas laiks (min.)",
"LimitThemesTooltip": "Varat izveidot tikai trīs pielāgotus dizainus. Lai izveidotu jaunu dizainu, ir jāizdzēš viens no iepriekšējiem dizainiem.",
"LocalFile": "Vietējais fails",

View File

@ -147,7 +147,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Taal- en tijdzone-instellingen is een manier om de taal van de hele portaal te wijzigen voor alle portaalgebruikers en om de tijdzone te configureren, zodat alle gebeurtenissen van de portal met de juiste datum en tijd worden weergegeven.",
"LastUpdate": "Laatst bijgewerkt: {{date}}",
"LicenseLimitCounter": "Licentielimiet Beheerders/Power:",
"LicenseLimitDescription": "De licentielimiet teller bestaat uit: reeds bestaande accounts in {{productName}} en nieuwe gebruikers die u wilt importeren. Als u gebruikers importeert die al een {{productName}}-account hebben, zullen zij niet meer worden meegeteld in de teller. Met uw {{productName}}-licentie kunt u maximaal 100 gebruikers hebben.",
"LicenseLimitDescription": "De licentielimiet teller bestaat uit: reeds bestaande accounts in {{productName}} en nieuwe gebruikers die u wilt importeren. Als u gebruikers importeert die al een {{productName}}-account hebben, zullen zij niet meer worden meegeteld in de teller. Met uw {{productName}}-licentie kunt u maximaal {{maxLimit}} gebruikers hebben.",
"Lifetime": "Levensduur (min)",
"LimitThemesTooltip": "U kunt slechts 3 aangepaste thema's maken. Om een nieuwe aan te maken, moet u een van de vorige thema's verwijderen.",
"LocalFile": "Lokaal bestand",

View File

@ -148,7 +148,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Ustawienia języka i strefy czasowej to sposób na zmianę języka całego portalu dla wszystkich jego użytkowników oraz konfigurację strefy czasowej w taki sposób, aby wszystkie zdarzenia w portalu były wyświetlane z prawidłową datą i godziną.",
"LastUpdate": "Ostatnia aktualizacja: {{date}}",
"LicenseLimitCounter": "Limit licencji Administratorzy/Użytkownicy z większą liczbą uprawnień:",
"LicenseLimitDescription": "Licznik limitu licencji składa się z: kont istniejących już w {{productName}} oraz nowych użytkowników, których chcesz zaimportować. Jeśli zaimportujesz użytkowników, którzy mają już konto {{productName}}, nie zostaną oni ponownie uwzględnieni na liczniku. Twoja licencja {{productName}} pozwala Ci mieć maksymalnie 100 użytkowników.",
"LicenseLimitDescription": "Licznik limitu licencji składa się z: kont istniejących już w {{productName}} oraz nowych użytkowników, których chcesz zaimportować. Jeśli zaimportujesz użytkowników, którzy mają już konto {{productName}}, nie zostaną oni ponownie uwzględnieni na liczniku. Twoja licencja {{productName}} pozwala Ci mieć maksymalnie {{maxLimit}} użytkowników.",
"Lifetime": "Długość (min)",
"LimitThemesTooltip": "Możesz utworzyć tylko 3 niestandardowe motywy. Aby utworzyć nowy, musisz usunąć jeden z poprzednich motywów.",
"LocalFile": "Plik lokalny",

View File

@ -149,7 +149,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Configurações de Idioma e Fuso Horário é uma forma de alterar o idioma de todo o portal para todos os usuários do portal e de configurar o fuso horário para que todos os eventos do portal sejam mostrados com a data e hora corretas.",
"LastUpdate": "Última atualização: {{date}}",
"LicenseLimitCounter": "Limite de licença Administradores/Usuários avançados:",
"LicenseLimitDescription": "O contador de limite de licenças é composto por: contas já existentes no {{productName}} e novos usuários que você deseja importar. Se você importar usuários que já possuem conta no {{productName}}, eles não serão contabilizados novamente no contador. Sua licença {{productName}} permite que você tenha no máximo 100 usuários.",
"LicenseLimitDescription": "O contador de limite de licenças é composto por: contas já existentes no {{productName}} e novos usuários que você deseja importar. Se você importar usuários que já possuem conta no {{productName}}, eles não serão contabilizados novamente no contador. Sua licença {{productName}} permite que você tenha no máximo {{maxLimit}} usuários.",
"Lifetime": "Vida útil (min)",
"LimitThemesTooltip": "Você só pode criar 3 temas personalizados. Para criar um novo, você deve excluir um dos temas anteriores.",
"LocalFile": "Arquivo local",

View File

@ -148,7 +148,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Configurações de Idioma e Fuso Horário é uma forma de alterar o idioma de todo o portal para todos os usuários do portal e de configurar o fuso horário para que todos os eventos do portal sejam mostrados com a data e hora corretas.",
"LastUpdate": "Última atualização: {{date}}",
"LicenseLimitCounter": "Limite de licença Administradores/Utilizadores com poder:",
"LicenseLimitDescription": "O contador de limite de licenças é composto por: contas já existentes no {{productName}} e novos usuários que você deseja importar. Caso você importe usuários que já possuem conta no {{productName}}, eles não serão contabilizados novamente no contador. Sua licença {{productName}} permite que você tenha no máximo 100 usuários.",
"LicenseLimitDescription": "O contador de limite de licenças é composto por: contas já existentes no {{productName}} e novos usuários que você deseja importar. Caso você importe usuários que já possuem conta no {{productName}}, eles não serão contabilizados novamente no contador. Sua licença {{productName}} permite que você tenha no máximo {{maxLimit}} usuários.",
"Lifetime": "Duração (min)",
"LimitThemesTooltip": "Só se podem criar 3 temas personalizados. Para criar um novo, é necessário eliminar um dos temas anteriores.",
"LocalFile": "Ficheiro local",

View File

@ -147,7 +147,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Setări limbă și fus orar este modul de a schimba limba portalului pentru toți utilizatorii portalului și de a configura fusul orar pentru că ora și data evenimentelor de pe portal este afișată corect.",
"LastUpdate": "Ultima actualizare: {{date}}",
"LicenseLimitCounter": "Limita impusă de licență administratori/utilizatori avansați:",
"LicenseLimitDescription": "Contorul limitei de licență este format din: conturile deja existente în spațiu {{productName}} și utilizatorii noi pe care doriți să le importați. Dacă importați utilizatorii care au deja un cont {{productName}}, aceștia nu vor fi înregistrate de contorul din nou. Numărul maxim de 100 utilizatori este permis conform licenței dvs {{productName}}.",
"LicenseLimitDescription": "Contorul limitei de licență este format din: conturile deja existente în spațiu {{productName}} și utilizatorii noi pe care doriți să le importați. Dacă importați utilizatorii care au deja un cont {{productName}}, aceștia nu vor fi înregistrate de contorul din nou. Numărul maxim de {{maxLimit}} utilizatori este permis conform licenței dvs {{productName}}.",
"Lifetime": "Durata (min)",
"LimitThemesTooltip": "Puteţi crea doar 3 teme particularizate. Pentru a crea o temă nouă, trebuie să ştergeţi una dintre temele anterioare.",
"LocalFile": "Fișierul local",

View File

@ -149,7 +149,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Настройки языка и часового пояса позволяют изменить язык всего портала для всех пользователей и настроить часовой пояс, чтобы все события на портале отображались с корректной датой и временем.",
"LastUpdate": "Последнее обновление: {{date}}",
"LicenseLimitCounter": "Ограничение лицензии Администраторы/Опытные пользователи:",
"LicenseLimitDescription": "Счетчик лимита лицензии состоит из: уже существующих учетных записей в {{productName}} и новых пользователей, которых вы хотите импортировать. Если вы импортируете пользователей, у которых уже есть учетная запись {{productName}}, они больше не будут учитываться в счетчике. Ваша лицензия {{productName}} позволяет вам иметь максимум 100 пользователей.",
"LicenseLimitDescription": "Счетчик лимита лицензии состоит из: уже существующих учетных записей в {{productName}} и новых пользователей, которых вы хотите импортировать. Если вы импортируете пользователей, у которых уже есть учетная запись {{productName}}, они больше не будут учитываться в счетчике. Ваша лицензия {{productName}} позволяет вам иметь максимум {{maxLimit}} пользователей.",
"Lifetime": "Срок службы (мин)",
"LimitThemesTooltip": "Вы можете создать только 3 пользовательские темы. Чтобы создать новую, необходимо удалить одну из предыдущих тем.",
"LocalFile": "Локальный файл",

View File

@ -136,7 +136,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "භාෂාව සහ වේලා කලාපයේ සැකසුම් මගින් අවකාශයේ භාෂාව සහ වේලා කලාපය සැකසීමට හැකිය. එමඟින්, සියළුම ක්‍රියාකාරකම්වල දිනය සහ වේලාව නිවැරදිව පෙන්වනු ඇත. පරිශ්‍රීලකයින්ට තමන්ගේ පැතිකඩ හරහා ද රිසි පරිදි මෙම සැකසුම් වෙනස් කිරීමට හැකිය.",
"LastUpdate": "අවසාන යාවත්කාලය: {{date}}",
"LicenseLimitCounter": "බලපත්‍රයේ සීමාව පරිපාලකයින්/බලවත්:",
"LicenseLimitDescription": "බලපත්‍රයේ සීමාව ගණනය වන්නේ {{productName}} හි දැනටමත් පවතින ගිණුම් සහ ඔබට ආයාත කිරීමට වුවමනා නව පරිශ්‍රීලකයින් අනුව වේ. ඔබ දැනටමත් {{productName}} ගිණුම් තිබෙන පරිශ්‍රීලකයින් ආයාත කළහොත් ඔවුන් නැවත ගණනය නොවේ. ඔබගේ {{productName}} බලපත්‍රය සඳහා උපරිම පරිශ්‍රීලකයින් 100 ක් ලද හැකිය.",
"LicenseLimitDescription": "බලපත්‍රයේ සීමාව ගණනය වන්නේ {{productName}} හි දැනටමත් පවතින ගිණුම් සහ ඔබට ආයාත කිරීමට වුවමනා නව පරිශ්‍රීලකයින් අනුව වේ. ඔබ දැනටමත් {{productName}} ගිණුම් තිබෙන පරිශ්‍රීලකයින් ආයාත කළහොත් ඔවුන් නැවත ගණනය නොවේ. ඔබගේ {{productName}} බලපත්‍රය සඳහා උපරිම පරිශ්‍රීලකයින් {{maxLimit}} ක් ලද හැකිය.",
"Lifetime": "ආයුකාලය (විනාඩි)",
"LimitThemesTooltip": "ඔබට අභිරුචි තේමා 𑇣 (3) ක් සෑදීමට හැකිය. නව එකක් සෑදීමට, කලින් සෑදූ තේමාවක් මකා දැමිය යුතුය.",
"LocalFile": "ස්ථානීය ගොනුව",

View File

@ -147,7 +147,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Nastavenie jazyka a časového pásma slúži na zmenu jazyka celého portálu pre všetkých používateľov portálu a na konfiguráciu časového pásma, aby sa všetky udalosti portálu zobrazovali so správnym dátumom a časom.",
"LastUpdate": "Posledná aktualizácia: {{date}}",
"LicenseLimitCounter": "Obmedzenie licencie Administrátori/Pokročilí používatelia",
"LicenseLimitDescription": "Obmedzenie licencie sa počíta takto: už existujúce účty v {{productName}} a nové používatelia, ktorých chcete importovať. Ak importujete používateľov, ktorí už majú účet v {{productName}}, nebudú sa započítavať. Vaša licencia {{productName}} vám umožňuje mať maximálne 100 používateľov.",
"LicenseLimitDescription": "Obmedzenie licencie sa počíta takto: už existujúce účty v {{productName}} a nové používatelia, ktorých chcete importovať. Ak importujete používateľov, ktorí už majú účet v {{productName}}, nebudú sa započítavať. Vaša licencia {{productName}} vám umožňuje mať maximálne {{maxLimit}} používateľov.",
"Lifetime": "Životnosť (min)",
"LimitThemesTooltip": "Môžete vytvoriť iba 3 vlastné témy. Ak chcete vytvoriť novú, musíte vymazať jednu z predchádzajúcich tém.",
"LocalFile": "Miestny súbor",

View File

@ -147,7 +147,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Nastavitve jezika in časovnega pasu so način, kako spremeniti jezik celotnega portala za vse uporabnike portala in konfigurirati časovni pas, tako da bodo vsi dogodki na portalu prikazani s pravilnim datumom in uro.",
"LastUpdate": "Zadnja posodobitev: {{date}}",
"LicenseLimitCounter": "Omejitev licence Skrbniki/Napredni uporabniki:",
"LicenseLimitDescription": "Števec omejitev licenc sestavljajo: že obstoječi računi v {{productName}} in novi uporabniki, ki jih želite uvoziti. Če uvozite uporabnike, ki že imajo račun {{productName}}, ne bodo ponovno šteti v števcu. Vaša licenca {{productName}} vam omogoča, da imate največ 100 uporabnikov.",
"LicenseLimitDescription": "Števec omejitev licenc sestavljajo: že obstoječi računi v {{productName}} in novi uporabniki, ki jih želite uvoziti. Če uvozite uporabnike, ki že imajo račun {{productName}}, ne bodo ponovno šteti v števcu. Vaša licenca {{productName}} vam omogoča, da imate največ {{maxLimit}} uporabnikov.",
"Lifetime": "Življenjska doba (min.)",
"LimitThemesTooltip": "Ustvarite lahko samo 3 teme po meri. Če želite ustvariti novo, morate izbrisati eno od prejšnjih tem.",
"LocalFile": "Lokalna datoteka",

View File

@ -148,7 +148,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Поставке jезика и временске зоне омогућавају промену језика целог портала за све кориснике портала и конфигурацију временске зоне тако да ће сви догађаји на порталу бити приказани са тачним датумом и временом.",
"LastUpdate": "Последње ажурирање: {{date}}",
"LicenseLimitCounter": "Ограничење лиценце за Админе/Напредни корисници",
"LicenseLimitDescription": "Бројач ограничења лиценце састоји се од: већ постојећих налога у {{productName}}-у и нових корисника које желите да увезете. Ако увезете кориснике који већ имају налог у {{productName}}-у, неће бити поново бројани у бројачу. Ваша {{productName}} лиценца вам дозвољава да имате максимално 100 корисника.",
"LicenseLimitDescription": "Бројач ограничења лиценце састоји се од: већ постојећих налога у {{productName}}-у и нових корисника које желите да увезете. Ако увезете кориснике који већ имају налог у {{productName}}-у, неће бити поново бројани у бројачу. Ваша {{productName}} лиценца вам дозвољава да имате максимално {{maxLimit}} корисника.",
"Lifetime": "Време трајања (мин)",
"LimitThemesTooltip": "Можете само креирати 3 прилагођене теме. Да бисте креитрали нову, морате обрисати једну од претходних.",
"LocalFile": "Локална датотека",

View File

@ -148,7 +148,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Postavke jezika i vremenske zone omogućavaju promenu jezika celog portala za sve korisnike portala i konfiguraciju vremenske zone tako da će svi događaji na portalu biti prikazani sa tačnim datumom i vremenom.",
"LastUpdate": "Poslednje ažuriranje: {{date}}",
"LicenseLimitCounter": "Ograničenje licence za Admine/Napredni korisnici",
"LicenseLimitDescription": "Brojač ograničenja licence sastoji se od: već postojećih naloga u {{productName}}-u i novih korisnika koje želite da uvezete. Ako uvezete korisnike koji već imaju nalog u {{productName}}-u, neće biti ponovo brojani u brojaču. Vaša {{productName}} licenca vam dozvoljava da imate maksimalno 100 korisnika.",
"LicenseLimitDescription": "Brojač ograničenja licence sastoji se od: već postojećih naloga u {{productName}}-u i novih korisnika koje želite da uvezete. Ako uvezete korisnike koji već imaju nalog u {{productName}}-u, neće biti ponovo brojani u brojaču. Vaša {{productName}} licenca vam dozvoljava da imate maksimalno {{maxLimit}} korisnika.",
"Lifetime": "Vreme trajanja (min)",
"LimitThemesTooltip": "Možete samo kreirati 3 prilagođene teme. Da biste kreitrali novu, morate obrisati jednu od prethodnih.",
"LocalFile": "Lokalna datoteka",

View File

@ -147,7 +147,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Dil ve Saat Dilimi Ayarları, tüm portal kullanıcıları için tüm portalın dilini değiştirmenin ve portaldaki tüm olayların doğru tarih ve saatle gösterilmesini sağlayacak şekilde saat dilimini yapılandırmanın bir yoludur.",
"LastUpdate": "Son güncelleme: {{date}}",
"LicenseLimitCounter": "Lisans sınırı Yöneticiler/Uzman:",
"LicenseLimitDescription": "Lisans limiti sayacı, {{productName}}de zaten var olan hesaplar ve içe aktarmak istediğiniz yeni kullanıcılardan oluşur. Zaten bir {{productName}} hesabı olan kullanıcıları içe aktarırsanız, bunlar sayaçta tekrar sayılmayacaktır. {{productName}} lisansınız en fazla 100 kullanıcıya sahip olmanıza izin verir.",
"LicenseLimitDescription": "Lisans limiti sayacı, {{productName}}de zaten var olan hesaplar ve içe aktarmak istediğiniz yeni kullanıcılardan oluşur. Zaten bir {{productName}} hesabı olan kullanıcıları içe aktarırsanız, bunlar sayaçta tekrar sayılmayacaktır. {{productName}} lisansınız en fazla {{maxLimit}} kullanıcıya sahip olmanıza izin verir.",
"Lifetime": "Kullanım ömrü (dk)",
"LimitThemesTooltip": "Yalnızca 3 özel tema oluşturabilirsiniz. Yeni bir tane oluşturmak için önceki temalardan birini silmeniz gerekir.",
"LocalFile": "Yerel dosya",

View File

@ -148,7 +148,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Параметри мови та часового поясу — це спосіб змінити мову усього порталу для всіх користувачів порталу, а також налаштувати часові пояси, щоб усі події порталу показувалися із правильною датою та часом.",
"LastUpdate": "Останнє оновлення: {{date}}",
"LicenseLimitCounter": "Ліцензійне обмеження адміністраторів/досвідчених користувачів:",
"LicenseLimitDescription": "Лічильник ліцензійних обмежень враховує облікові записи, що вже існують у просторі {{productName}}, та нових користувачів, яких ви хочете імпортувати. Якщо ви імпортуєте користувачів, які вже мають обліковий запис {{productName}}, лічильник не буде враховувати їх повторно. Ваша ліцензія {{productName}} дозволяє мати максимум 100 користувачів.",
"LicenseLimitDescription": "Лічильник ліцензійних обмежень враховує облікові записи, що вже існують у просторі {{productName}}, та нових користувачів, яких ви хочете імпортувати. Якщо ви імпортуєте користувачів, які вже мають обліковий запис {{productName}}, лічильник не буде враховувати їх повторно. Ваша ліцензія {{productName}} дозволяє мати максимум {{maxLimit}} користувачів.",
"Lifetime": "Час життя (хв.)",
"LimitThemesTooltip": "Ви можете створити лише 3 власні теми. Щоб створити нову тему, необхідно видалити одну з попередніх тем.",
"LocalFile": "Локальний файл",

View File

@ -146,7 +146,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Cài đặt ngôn ngữ và múi giờ là một cách để thay đổi ngôn ngữ của toàn bộ cổng thông tin cho tất cả người dùng cổng thông tin và định cấu hình múi giờ để tất cả các sự kiện của cổng thông tin sẽ được hiển thị với ngày và giờ chính xác.",
"LastUpdate": "Ngày cập nhật cuối cùng: {{date}}",
"LicenseLimitCounter": "Giới hạn bản quyền Quản trị viên/Người dùng cấp cao:",
"LicenseLimitDescription": "Số lượng giới hạn bản quyền bao gồm: tài khoản đã tồn tại trong {{productName}} và người dùng mới mà bạn muốn nhập. Nếu bạn nhập người dùng đã có tài khoản {{productName}}, họ sẽ không được tính lại trong số lượng. Bản quyền {{productName}} cho phép bạn có tối đa 100 người dùng.",
"LicenseLimitDescription": "Số lượng giới hạn bản quyền bao gồm: tài khoản đã tồn tại trong {{productName}} và người dùng mới mà bạn muốn nhập. Nếu bạn nhập người dùng đã có tài khoản {{productName}}, họ sẽ không được tính lại trong số lượng. Bản quyền {{productName}} cho phép bạn có tối đa {{maxLimit}} người dùng.",
"Lifetime": "Thời gian tồn tại (phút)",
"LimitThemesTooltip": "Bạn chỉ có thể tạo 3 theme tùy chỉnh. Để tạo một theme mới, bạn phải xóa một trong các theme trước đó.",
"LocalFile": "Tập tin cục bộ",

View File

@ -144,6 +144,18 @@ const withHotkeys = (Component) => {
window.dispatchEvent(event);
};
const onRename = () => {
if (selection.length === 1) {
const item = selection[0];
if (!item.contextOptions.includes("rename")) return;
const event = new Event(Events.RENAME);
event.item = item;
window.dispatchEvent(event);
}
};
const onCreateRoom = () => {
if (!isVisitor && isRoomsFolder && security?.Create) {
if (isGracePeriod) {
@ -385,6 +397,8 @@ const withHotkeys = (Component) => {
hotkeysFilter,
);
useHotkeys("f2", onRename, hotkeysFilter);
//Upload file
useHotkeys(
"Shift+u",

View File

@ -138,14 +138,13 @@ export default inject(
usersStore;
const { setCustomRoomQuota, needResetFilesSelection } = filesStore;
const { defaultUsersQuota, defaultRoomsQuota } = currentQuotaStore;
const {
selection: infoPanelSelection,
infoPanelSelection,
setNewInfoPanelSelection,
setInfoPanelSelection,
} = infoPanelStore;
const inRoom = infoPanelSelection?.inRoom;
const inRoom = !!infoPanelSelection?.navigationPath;
const needResetSelection =
type === "user" ? needResetUserSelection : needResetFilesSelection;

View File

@ -108,9 +108,6 @@ const RenameEvent = ({
: renameFolder(item.id, value)
.then(() => completeAction(item, type))
.then(() => {
if (selectedFolderId === item.id) {
setSelectedFolder({ title: value });
}
toastr.success(
t("FolderRenamed", {
folderTitle: item.title,

View File

@ -59,7 +59,7 @@ const Main = (props) => {
window.addEventListener("resize", onResize);
return () => {
window.addEventListener("resize", onResize);
window.removeEventListener("resize", onResize);
clearTimeout(updateSizeRef.current);
};

View File

@ -63,6 +63,7 @@ const StyledNav = styled.nav`
.icon-profile-menu {
cursor: pointer;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
z-index: 300;
}
`;
const HeaderNav = ({

View File

@ -87,6 +87,7 @@ const SpaceQuota = (props) => {
needResetSelection,
setSelected,
inRoom,
} = props;
const [isLoading, setIsLoading] = useState(false);
@ -123,7 +124,7 @@ const SpaceQuota = (props) => {
if (action === "no-quota") {
try {
const items = await updateQuota(-1, [item.id]);
const items = await updateQuota(-1, [item.id], inRoom);
options.map((item) => {
if (item.key === "no-quota") item.label = t("Common:Unlimited");
@ -140,7 +141,7 @@ const SpaceQuota = (props) => {
}
try {
const items = await resetQuota([item.id]);
const items = await resetQuota([item.id], inRoom);
options.map((item) => {
if (item.key === "default-quota") item.label = defaultQuotaSize;
@ -204,7 +205,13 @@ const SpaceQuota = (props) => {
export default inject(
(
{ peopleStore, filesActionsStore, filesStore, currentQuotaStore },
{
peopleStore,
filesActionsStore,
filesStore,
currentQuotaStore,
infoPanelStore,
},
{ type },
) => {
const { changeUserQuota, usersStore, selectionStore } = peopleStore;
@ -225,6 +232,9 @@ export default inject(
defaultRoomsQuota,
} = currentQuotaStore;
const { infoPanelSelection } = infoPanelStore;
const inRoom = !!infoPanelSelection?.navigationPath;
const { setSelected: setUsersSelected } = selectionStore;
const changeQuota = type === "user" ? changeUserQuota : changeRoomQuota;
@ -251,6 +261,7 @@ export default inject(
resetQuota,
defaultSize,
needResetSelection,
inRoom,
};
},
)(observer(SpaceQuota));

View File

@ -52,6 +52,7 @@ import {
StyledSelectedOwner,
} from "./StyledDialog";
import { PRODUCT_NAME } from "@docspace/shared/constants";
import { EmployeeActivationStatus } from "@docspace/shared/enums";
const ChangePortalOwnerDialog = ({
t,
@ -91,7 +92,7 @@ const ChangePortalOwnerDialog = ({
onClose && onClose();
toastr.success(
t("Settings:ConfirmEmailSended", {
ownerName: selectedUser.label,
ownerName: displayName,
}),
);
})
@ -122,6 +123,14 @@ const ChangePortalOwnerDialog = ({
t("DeactivateOrDeletePortal", { productName: PRODUCT_NAME }),
];
const filter = React.useMemo(() => {
const newFilter = new Filter();
newFilter.employeeStatus = EmployeeActivationStatus.Activated;
return newFilter;
}, []);
return (
<ModalDialog
displayType={"aside"}
@ -149,6 +158,7 @@ const ChangePortalOwnerDialog = ({
}}
currentUserId={id}
disableDisabledUsers
filter={filter}
/>
</ModalDialog.Container>
)}

View File

@ -523,6 +523,7 @@ const AddUsersPanel = ({
// Todo: Update groups empty screen texts when they are ready
headerLabel: t("Common:ListAccounts"),
withoutBackButton: false,
withoutBorder: true,
onBackClick,
}}
onSelect={onSelect}

View File

@ -31,9 +31,14 @@ const StyledModalDialog = styled(ModalDialog)`
.modal-header {
margin: 0;
}
.modal-body {
padding: 0 0 8px;
}
`;
const StyledBody = styled.div`
padding: 0 16px;
.embedding-panel_header-link {
margin: 10px 0 2px;
}
@ -132,10 +137,10 @@ const StyledBody = styled.div`
${(props) =>
props.theme.interfaceDirection === "rtl"
? css`
left: 16px;
left: 32px;
`
: css`
right: 16px;
right: 32px;
`}
}

View File

@ -462,6 +462,7 @@ const EmbeddingPanelComponent = (props: EmbeddingPanelProps) => {
selectedOption={selectedLink as TOption}
displaySelectedOption
directionY="bottom"
withLabel={false}
/>
</>
)}

View File

@ -73,6 +73,12 @@ const ActionsBlock = ({ t, textStyles, keyTextStyles, CtrlKey }) => {
<Text {...keyTextStyles}> {CtrlKey} + x</Text>
</>
</Row>
<Row className="hotkeys_row">
<>
<Text {...textStyles}>{t("HotkeysRenameSelected")}</Text>
<Text {...keyTextStyles}> F2</Text>
</>
</Row>
</>
);
};

View File

@ -325,6 +325,28 @@ const StyledInviteInputContainer = styled.div`
.header_aside-panel {
max-width: 100% !important;
.selector_body_tabs {
display: flex;
justify-content: left;
margin-bottom: 16px;
padding: 0;
width: -webkit-fill-available;
.sticky-indent {
height: 0;
}
.sticky {
.scroll-body {
overflow-x: hidden;
}
.scroll-body > div {
justify-content: left;
padding-left: 16px;
}
}
}
}
`;

View File

@ -109,7 +109,6 @@ const ConfirmRoute = ({
switch (validationResult) {
case ValidationResult.Ok:
case ValidationResult.UserExisted:
const confirmHeader = search.slice(1);
const linkData = {
...confirmLinkData,
@ -129,6 +128,19 @@ const ConfirmRoute = ({
setState((val) => ({ ...val, isLoaded: true, linkData, roomData }));
break;
case ValidationResult.UserExisted:
const finalUrl = res?.roomId
? `/rooms/shared/${res?.roomId}/filter?folder=${res?.roomId}`
: defaultPage;
console.log("user already exists", {
confirmLinkData,
validationResult,
finalUrl,
});
window.location.replace(finalUrl);
break;
case ValidationResult.Invalid:
console.error("invalid link", {
confirmLinkData,

View File

@ -134,10 +134,11 @@ export const getCategoryType = (location) => {
if (pathname.indexOf("personal") > -1) {
categoryType = CategoryType.Personal;
} else if (pathname.indexOf("shared") > -1) {
categoryType =
pathname.indexOf("shared/filter") > -1
? CategoryType.Shared
: CategoryType.SharedRoom;
const regexp = /(rooms)\/([\d])\/(shared)/;
categoryType = !regexp.test(location)
? CategoryType.Shared
: CategoryType.SharedRoom;
} else if (pathname.indexOf("share") > -1) {
categoryType = CategoryType.PublicRoom;
} else if (pathname.indexOf("archive") > -1) {

View File

@ -212,7 +212,7 @@ const CreateUserForm = (props) => {
});
const finalUrl = roomId
? `/rooms/shared/filter?folder=${roomId}`
? `/rooms/shared/${roomId}/filter?folder=${roomId}`
: defaultPage;
if (roomId) {
@ -324,7 +324,7 @@ const CreateUserForm = (props) => {
signupOAuth(signupAccount)
.then(() => {
const url = roomData.roomId
? `/rooms/shared/filter?folder=${roomData.roomId}/`
? `/rooms/shared/${roomData.roomId}/filter?folder=${roomData.roomId}/`
: defaultPage;
window.location.replace(url);
})
@ -352,7 +352,7 @@ const CreateUserForm = (props) => {
//console.log({ res });
const finalUrl = roomData.roomId
? `/rooms/shared/filter?folder=${roomData.roomId}`
? `/rooms/shared/${roomData.roomId}/filter?folder=${roomData.roomId}`
: defaultPage;
const isConfirm = typeof res === "string" && res.includes("confirm");

View File

@ -50,17 +50,18 @@ import { PRODUCT_NAME } from "@docspace/shared/constants";
const RemovePortal = (props) => {
const { t, greetingTitle, linkData, companyInfoSettingsData } = props;
const [isRemoved, setIsRemoved] = useState(false);
const navigate = useNavigate();
const url = companyInfoSettingsData?.site
? companyInfoSettingsData.site
: "https://onlyoffice.com";
const navigate = useNavigate();
const onDeleteClick = async () => {
try {
await deletePortal(linkData.confirmHeader);
const res = await deletePortal(linkData.confirmHeader);
setIsRemoved(true);
setTimeout(() => (location.href = url), 10000);
setTimeout(() => (location.href = res ? res : url), 10000);
} catch (e) {
toastr.error(e);
}

View File

@ -122,7 +122,7 @@ export const HistoryItemList = ({
iconName={FolderLocationReactSvgUrl}
size="16"
isFill
onClick={() => checkAndOpenLocationAction!(item)}
onClick={() => checkAndOpenLocationAction!(item, actionType)}
title={t("Files:OpenLocation")}
/>
</StyledHistoryBlockFile>

View File

@ -59,8 +59,8 @@ const GroupsRow = ({
changeGroupContextSelection(item, !rightMouseButtonClick);
};
const onOpenGroup = () => {
openGroupAction(item.id, true, item.name);
const onOpenGroup = (e) => {
openGroupAction(item.id, true, item.name, e);
};
const nameColor =

View File

@ -62,8 +62,8 @@ const GroupsTableItem = ({
changeGroupContextSelection(item, !rightMouseButtonClick);
};
const onOpenGroup = () => {
openGroupAction(item.id, true, item.name);
const onOpenGroup = (e) => {
openGroupAction(item.id, true, item.name, e);
};
const onRowClick = (e) => {

View File

@ -209,6 +209,7 @@ const StyledTileContainer = styled.div`
}
@media ${tablet} {
margin-top: 16px;
${(props) =>
props.theme.interfaceDirection === "rtl"
? css`

View File

@ -646,7 +646,6 @@ export default inject(
pathParts,
navigationPath,
security,
canCopyPublicLink,
rootFolderType,
shared,
} = selectedFolderStore;
@ -663,8 +662,6 @@ export default inject(
const isRoom = !!roomType;
const isPublicRoomType = roomType === RoomsType.PublicRoom;
const isCustomRoomType = roomType === RoomsType.CustomRoom;
const isFormRoomType = roomType === RoomsType.FormRoom;
const {
onCreateAndCopySharedLink,
@ -717,14 +714,9 @@ export default inject(
const sharedItem = navigationPath.find((r) => r.shared);
const showNavigationButton =
isLoading || !security?.CopyLink
isLoading || !security?.CopyLink || isPublicRoom || isArchive
? false
: (!isPublicRoom &&
!isArchive &&
canCopyPublicLink &&
(isPublicRoomType || isCustomRoomType || isFormRoomType) &&
shared) ||
(sharedItem && sharedItem.canCopyPublicLink);
: security?.Read && (shared || sharedItem);
return {
showText: settingsStore.showText,
@ -748,7 +740,6 @@ export default inject(
setSelected,
security,
canCopyPublicLink,
getHeaderMenu,
getCheckboxItemLabel,

View File

@ -130,6 +130,7 @@ const UsersInfoBlock = ({
<Text fontSize="12px">
{t("Settings:LicenseLimitDescription", {
productName: PRODUCT_NAME,
maxLimit: totalLicenceLimit,
})}
</Text>
}

View File

@ -96,9 +96,17 @@ const StyledLdapPage = styled(Box)`
}
display: grid;
grid-gap: 12px;
}
.access-selector-wrapper {
width: 356px;
@media ${mobile} {
width: 100%;
}
.access-selector {
margin-right: 0;
margin-right: 0 !important;
margin-top: -4px;
}
}

View File

@ -230,7 +230,7 @@ const AttributeMapping = (props) => {
{t("LdapUsersTypeInfo")}
</Text>
</Box>
<Box widthProp="356px">
<Box className="access-selector-wrapper">
<AccessSelector
className="add-manually-access"
t={t}

View File

@ -57,6 +57,7 @@ const StyledWrapper = styled.div`
}
.checkbox-input {
width: fit-content;
margin: 10px 8px 6px 0;
}
@ -172,6 +173,7 @@ const FieldMapping = (props) => {
<Text fontSize="12px">{t("AdvancedSettingsTooltip")}</Text>
}
tooltipClass="advanced-settings-tooltip icon-button"
labelVisible={true}
>
<Checkbox
id="hide-auth-page"

View File

@ -132,7 +132,7 @@ const IntegrationWrapper = (props) => {
items={data}
selectedItemId={currentTabId}
onSelect={onSelect}
topProps={SECTION_HEADER_HEIGHT[currentDeviceType]}
stickyTop={SECTION_HEADER_HEIGHT[currentDeviceType]}
/>
);
};

View File

@ -185,7 +185,7 @@ const Header = (props) => {
size={17}
getData={getUserContextOptions}
isDisabled={false}
usePortal={false}
usePortal={true}
/>
)}

View File

@ -193,7 +193,7 @@ const confirmRoutes = [
{
path: "PortalSuspend",
element: (
<ConfirmRoute>
<ConfirmRoute doAuthenticated={AuthenticatedAction.Logout}>
<DeactivatePortal />
</ConfirmRoute>
),
@ -201,7 +201,7 @@ const confirmRoutes = [
{
path: "PortalContinue",
element: (
<ConfirmRoute>
<ConfirmRoute doAuthenticated={AuthenticatedAction.Logout}>
<ContinuePortal />
</ConfirmRoute>
),

View File

@ -136,7 +136,7 @@ class AccessRightsStore {
isOwner: userIsOwner,
} = user;
const needActivate = status !== EmployeeStatus.Active && userId !== id;
const needActivate = status === EmployeeStatus.Disabled && userId !== id;
if (isOwner) return needActivate;
@ -158,7 +158,9 @@ class AccessRightsStore {
if (isLDAP) return false;
const needDisable = status !== EmployeeStatus.Disabled && userId !== id;
const needDisable =
(status == EmployeeStatus.Active || status == EmployeeStatus.Pending) &&
userId !== id;
if (isOwner) return needDisable;

View File

@ -396,17 +396,14 @@ class ContextOptionsStore {
};
onCopyLink = async (item, t) => {
const { shared, navigationPath, canCopyPublicLink } =
this.selectedFolderStore;
const { shared, navigationPath } = this.selectedFolderStore;
const isArchive = item.rootFolderType === FolderType.Archive;
const { href } = item;
const sharedItem = navigationPath.find((r) => r.shared);
const isShared =
(sharedItem && sharedItem.canCopyPublicLink) ||
(shared && canCopyPublicLink);
const isShared = shared || sharedItem;
if (isShared && !isArchive) {
try {
@ -1118,7 +1115,7 @@ class ContextOptionsStore {
return [
{
key: "public-room_share",
label: t("Files:CopyLink"),
label: t("Files:CopySharedLink"),
icon: TabletLinkReactSvgUrl,
onClick: () => {
copy(window.location.href);
@ -1126,6 +1123,11 @@ class ContextOptionsStore {
},
disabled: this.settingsStore.isFrame,
},
{
key: "separator0",
isSeparator: true,
disabled: !item.security?.Download,
},
{
key: "public-room_edit",
label: t("Common:Download"),
@ -1218,8 +1220,7 @@ class ContextOptionsStore {
const hasInfoPanel = contextOptions.includes("show-info");
//const emailSendIsDisabled = true;
const showSeparator0 =
(hasInfoPanel || !isMedia) && !this.publicRoomStore.isPublicRoom; // || !emailSendIsDisabled;
const showSeparator0 = hasInfoPanel || !isMedia; // || !emailSendIsDisabled;
const { isGroupMenuBlocked } = this.filesActionsStore;
@ -1311,72 +1312,71 @@ class ContextOptionsStore {
disabled: false,
},
];
const moveActions =
isDesktop() && !isInfoPanel
? [
{
id: "option_move-or-copy",
key: "move",
label: t("MoveOrCopy"),
icon: CopyReactSvgUrl,
items: [
{
id: "option_move-to",
key: "move-to",
label: t("Common:MoveTo"),
icon: MoveReactSvgUrl,
onClick: isEditing
? () => this.onShowEditingToast(t)
: () => this.onMoveAction(item),
disabled: false,
},
{
id: "option_copy-to",
key: "copy-to",
label: t("Common:Copy"),
icon: CopyReactSvgUrl,
onClick: () => this.onCopyAction(item),
disabled: false,
},
{
id: "option_create-duplicate",
key: "duplicate",
label: t("Common:Duplicate"),
icon: DuplicateReactSvgUrl,
onClick: () => this.onDuplicate(item, t),
disabled: false,
},
],
},
]
: [
{
id: "option_move-to",
key: "move-to",
label: t("Common:MoveTo"),
icon: MoveReactSvgUrl,
onClick: isEditing
? () => this.onShowEditingToast(t)
: () => this.onMoveAction(item),
disabled: false,
},
{
id: "option_copy-to",
key: "copy-to",
label: t("Common:Copy"),
icon: CopyReactSvgUrl,
onClick: () => this.onCopyAction(item),
disabled: false,
},
{
id: "option_create-duplicate",
key: "duplicate",
label: t("Common:Duplicate"),
icon: DuplicateReactSvgUrl,
onClick: () => this.onDuplicate(item, t),
disabled: false,
},
];
const moveActions = isDesktop()
? [
{
id: "option_move-or-copy",
key: "move",
label: t("MoveOrCopy"),
icon: CopyReactSvgUrl,
items: [
{
id: "option_move-to",
key: "move-to",
label: t("Common:MoveTo"),
icon: MoveReactSvgUrl,
onClick: isEditing
? () => this.onShowEditingToast(t)
: () => this.onMoveAction(item),
disabled: false,
},
{
id: "option_copy-to",
key: "copy-to",
label: t("Common:Copy"),
icon: CopyReactSvgUrl,
onClick: () => this.onCopyAction(item),
disabled: false,
},
{
id: "option_create-duplicate",
key: "duplicate",
label: t("Common:Duplicate"),
icon: DuplicateReactSvgUrl,
onClick: () => this.onDuplicate(item, t),
disabled: false,
},
],
},
]
: [
{
id: "option_move-to",
key: "move-to",
label: t("Common:MoveTo"),
icon: MoveReactSvgUrl,
onClick: isEditing
? () => this.onShowEditingToast(t)
: () => this.onMoveAction(item),
disabled: false,
},
{
id: "option_copy-to",
key: "copy-to",
label: t("Common:Copy"),
icon: CopyReactSvgUrl,
onClick: () => this.onCopyAction(item),
disabled: false,
},
{
id: "option_create-duplicate",
key: "duplicate",
label: t("Common:Duplicate"),
icon: DuplicateReactSvgUrl,
onClick: () => this.onDuplicate(item, t),
disabled: false,
},
];
const { pinOptions, muteOptions } = this.getRoomsRootContextOptions(
item,
@ -1553,8 +1553,7 @@ class ContextOptionsStore {
icon: InvitationLinkReactSvgUrl,
onClick: () => this.onCopyLink(item, t),
disabled:
(isPublicRoomType && item.canCopyPublicLink && !isArchive) ||
this.publicRoomStore.isPublicRoom ||
(isPublicRoomType && item.security?.Read && !isArchive) ||
!item.security?.CopyLink,
},
{
@ -1565,7 +1564,7 @@ class ContextOptionsStore {
disabled:
this.publicRoomStore.isPublicRoom ||
isArchive ||
!item.canCopyPublicLink ||
!item.security?.Read ||
!isPublicRoomType,
onClick: () => this.onCreateAndCopySharedLink(item, t),
// onLoad: () => this.onLoadLinks(t, item),
@ -1617,7 +1616,7 @@ class ContextOptionsStore {
label: t("Common:Info"),
icon: InfoOutlineReactSvgUrl,
onClick: () => this.onShowInfoPanel(item),
disabled: this.publicRoomStore.isPublicRoom,
disabled: false,
},
{
id: "option_block-unblock-version",
@ -1627,7 +1626,7 @@ class ContextOptionsStore {
onClick: () => this.lockFile(item, t),
disabled: false,
},
!this.publicRoomStore.isPublicRoom && {
{
key: "separator1",
isSeparator: true,
},

View File

@ -165,6 +165,8 @@ class CreateEditRoomStore {
actions.push(createTag(createTagsData[i]));
}
if (!!actions.length) await Promise.all(actions);
// add new tags to room
if (!!addTagsData.length)
room = await addTagsToRoom(room.id, addTagsData);
@ -203,7 +205,9 @@ class CreateEditRoomStore {
? [bufferSelection]
: [];
preparingDataForCopyingToRoom(room.id, selections, t);
preparingDataForCopyingToRoom(room.id, selections, t).catch((error) =>
toastr.error(error),
);
}
this.roomIsCreated = true;

View File

@ -1470,7 +1470,7 @@ class FilesActionStore {
return titleWithoutExtension;
};
checkAndOpenLocationAction = async (item) => {
checkAndOpenLocationAction = async (item, actionType) => {
const { categoryType } = this.filesStore;
const { myRoomsId, myFolderId, archiveRoomsId, recycleBinFolderId } =
this.treeFoldersStore;
@ -1482,7 +1482,8 @@ class FilesActionStore {
};
const { title, fileExst } = item;
const parentId = item.parentId || item.toFolderId || recycleBinFolderId;
const parentId =
item.parentId || item.toFolderId || item.folderId || recycleBinFolderId;
const parentTitle = item.parentTitle || item.toFolderTitle;
const isRoot = [
@ -1501,7 +1502,11 @@ class FilesActionStore {
rootFolderType,
};
const url = getCategoryUrl(categoryType, parentId);
const isTrash = actionType === "delete";
const url = getCategoryUrl(
isTrash ? CategoryType.Trash : categoryType,
parentId,
);
const newFilter = FilesFilter.getDefault();
@ -2511,6 +2516,12 @@ class FilesActionStore {
clearFiles();
if (window.location.search.includes("group")) {
setSelectedNode(["accounts", "groups", "filter"]);
return window.DocSpace.navigate(`accounts/groups?${params}`, {
replace: true,
});
}
setSelectedNode(["accounts", "people", "filter"]);
if (fromHotkeys) return;
@ -2666,7 +2677,7 @@ class FilesActionStore {
content: oneFolder,
};
this.uploadDataStore.itemOperationToFolder(operationData);
return this.uploadDataStore.itemOperationToFolder(operationData);
};
onLeaveRoom = (t, isOwner = false) => {

View File

@ -1575,18 +1575,14 @@ class FilesStore {
(data.current.rootFolderType === Rooms ||
data.current.rootFolderType === Archive);
let shared, canCopyPublicLink;
let shared;
if (idx === 1) {
let room = data.current;
if (!isCurrentFolder) {
room = await api.files.getFolderInfo(folderId);
shared = room.shared;
canCopyPublicLink =
room.access === ShareAccessRights.RoomManager ||
room.access === ShareAccessRights.None;
room.canCopyPublicLink = canCopyPublicLink;
this.infoPanelStore.setInfoPanelRoom(room);
}
@ -1604,7 +1600,6 @@ class FilesStore {
roomType,
isRootRoom,
shared,
canCopyPublicLink,
};
}),
).then((res) => {
@ -1943,10 +1938,10 @@ class FilesStore {
return rooms;
};
resetRoomQuota = async (itemsIDs, filter) => {
resetRoomQuota = async (itemsIDs, inRoom = false, filter) => {
const rooms = await api.rooms.resetRoomQuota(itemsIDs);
await this.fetchRooms(null, filter, false, false, false);
if (!inRoom) await this.fetchRooms(null, filter, false, false, false);
return rooms;
};
@ -2129,6 +2124,20 @@ class FilesStore {
fileOptions = this.removeOptions(fileOptions, optionsToRemove);
}
if (this.publicRoomStore.isPublicRoom) {
fileOptions = this.removeOptions(fileOptions, [
"separator0",
"sharing-settings",
"send-by-email",
"show-info",
"separator1",
"create-room",
"separator2",
"remove-from-recent",
"copy-general-link",
]);
}
if (!canDownload) {
fileOptions = this.removeOptions(fileOptions, ["download"]);
}
@ -2545,6 +2554,15 @@ class FilesStore {
folderOptions = this.removeOptions(folderOptions, optionsToRemove);
}
if (this.publicRoomStore.isPublicRoom) {
folderOptions = this.removeOptions(folderOptions, [
"show-info",
"sharing-settings",
"separator1",
"create-room",
]);
}
if (!canDownload) {
folderOptions = this.removeOptions(folderOptions, ["download"]);
}
@ -3367,10 +3385,6 @@ class FilesStore {
const isForm = fileExst === ".oform";
const canCopyPublicLink =
access === ShareAccessRights.RoomManager ||
access === ShareAccessRights.None;
return {
availableExternalRights,
access,
@ -3440,7 +3454,6 @@ class FilesStore {
type,
hasDraft,
isForm,
canCopyPublicLink,
requestToken,
lastOpened,
quotaLimit,

View File

@ -40,6 +40,7 @@ import { combineUrl } from "@docspace/shared/utils/combineUrl";
import AccountsFilter from "@docspace/shared/api/people/filter";
import api from "@docspace/shared/api";
import { TGroup } from "@docspace/shared/api/groups/types";
import { openingNewTab } from "@docspace/shared/utils/openingNewTab";
class GroupsStore {
authStore;
@ -593,10 +594,15 @@ class GroupsStore {
groupId: string,
withBackURL: boolean,
tempTitle: string,
e: React.MouseEvent<Element, MouseEvent>,
) => {
const { setIsSectionBodyLoading, setIsSectionFilterLoading } =
this.clientLoadingStore;
const url = `/accounts/groups/${groupId}`;
if (openingNewTab(url, e)) return;
this.setSelection([]);
this.setBufferSelection(null);
this.setCurrentGroup(null);
@ -610,7 +616,7 @@ class GroupsStore {
this.setInsideGroupBackUrl(url);
}
window.DocSpace.navigate(`/accounts/groups/${groupId}`);
window.DocSpace.navigate(url);
};
updateGroup = async (

View File

@ -654,7 +654,7 @@ class HotkeyStore {
},
};
if (isPublic) {
if (isPublic && !selections.rootFolderType) {
this.dialogsStore.setMoveToPublicRoomVisible(true, operationData);
return;
}

View File

@ -121,7 +121,8 @@ class InfoPanelStore {
setIsVisible = (bool) => {
if (
(this.infoPanelSelectedItems.length &&
!this.infoPanelSelectedItems[0]?.isRoom) ||
!this.infoPanelSelectedItems[0]?.isRoom &&
!this.infoPanelSelectedItems[0]?.inRoom) ||
(this.selectedFolderStore && !this.selectedFolderStore?.inRoom)
) {
this.setView(infoDetails);
@ -297,9 +298,6 @@ class InfoPanelStore {
...infoPanelSelection,
isRoom: infoPanelSelection.isRoom || !!infoPanelSelection.roomType,
icon: this.getInfoPanelItemIcon(infoPanelSelection, 32),
canCopyPublicLink:
infoPanelSelection.access === ShareAccessRights.RoomManager ||
infoPanelSelection.access === ShareAccessRights.None,
};
};

View File

@ -207,8 +207,11 @@ class PublicRoomStore {
.then((res) => {
if (res?.shared) {
const filter = FilesFilter.getDefault();
const subFolder = new URLSearchParams(window.location.search).get(
"folder",
);
const url = getCategoryUrl(CategoryType.Shared);
filter.folder = res.id;
filter.folder = subFolder ? subFolder : res.id;
return window.location.replace(`${url}?${filter.toUrlParams()}`);
}

View File

@ -51,7 +51,6 @@ export type TNavigationPath = {
roomType: RoomsType;
isRootRoom: boolean;
shared: boolean;
canCopyPublicLink: boolean;
};
type ExcludeTypes = SettingsStore | Function;
@ -141,6 +140,12 @@ class SelectedFolderStore {
parentRoomType: Nullable<FolderType> = null;
usedSpace: number | undefined;
quotaLimit: number | undefined;
isCustomQuota: boolean | undefined;
constructor(settingsStore: SettingsStore) {
makeAutoObservable(this);
this.settingsStore = settingsStore;
@ -181,10 +186,12 @@ class SelectedFolderStore {
private: this.private,
canShare: this.canShare,
isArchive: this.isArchive,
canCopyPublicLink: this.canCopyPublicLink,
type: this.type,
isRootFolder: this.isRootFolder,
parentRoomType: this.parentRoomType,
usedSpace: this.usedSpace,
quotaLimit: this.quotaLimit,
isCustomQuota: this.isCustomQuota,
};
};
@ -192,13 +199,6 @@ class SelectedFolderStore {
return this.pathParts && this.pathParts.length <= 1;
}
get canCopyPublicLink() {
return (
this.access === ShareAccessRights.RoomManager ||
this.access === ShareAccessRights.None
);
}
toDefault = () => {
this.folders = null;
this.parentId = 0;
@ -230,6 +230,9 @@ class SelectedFolderStore {
this.type = null;
this.inRoom = false;
this.parentRoomType = null;
this.usedSpace = undefined;
this.quotaLimit = undefined;
this.isCustomQuota = undefined;
};
setParentId = (parentId: number) => {
@ -348,6 +351,10 @@ class SelectedFolderStore {
}
});
}
selectedFolder?.pathParts?.forEach((value) => {
if (value.roomType) this.setInRoom(true);
});
};
}

View File

@ -1647,7 +1647,6 @@ class UploadDataStore {
.then(() =>
this.moveToCopyTo(destFolderId, pbData, true, fileIds, folderIds),
)
.catch((error) => toastr.error(error))
.finally(async () => {
//to update the status of trashIsEmpty filesStore
if (this.treeFoldersStore.isRecycleBinFolder)

View File

@ -384,9 +384,12 @@ class UsersStore {
) {
options.push("separator-1");
if (status === EmployeeStatus.Active) {
if (
status === EmployeeStatus.Active ||
status === EmployeeStatus.Pending
) {
options.push("disable");
} else {
} else if (status === EmployeeStatus.Disabled) {
options.push("enable");
}
}

View File

@ -1,6 +1,6 @@
{
"Title": "The form is completed",
"Description": "Your PDF form has been saved in the Complete section.",
"Description": "Your form completed and saved",
"FillItOutAgain": "Fill it out again",
"GoToCompleteFolder": "Go to Complete folder"
}

View File

@ -25,6 +25,10 @@
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
import type { Metadata } from "next";
import { headers } from "next/headers";
import { getSelectorsByUserAgent } from "react-device-detect";
import { BRAND_NAME } from "@docspace/shared/constants";
import { getData } from "@/utils/actions";
@ -51,6 +55,17 @@ async function Page({ searchParams }: RootPageProps) {
const { fileId, fileid, version, doc, action, share, editorType, error } =
searchParams ?? initialSearchParams;
const hdrs = headers();
let type = editorType;
const ua = hdrs.get("user-agent");
if (ua && !type) {
const { isMobile } = getSelectorsByUserAgent(ua);
if (isMobile) type = "mobile";
}
const startDate = new Date();
const data = await getData(
@ -59,7 +74,7 @@ async function Page({ searchParams }: RootPageProps) {
doc,
action,
share,
editorType,
type,
);
const timer = new Date().getTime() - startDate.getTime();

View File

@ -28,7 +28,6 @@
import React from "react";
import { useRouter, useSearchParams } from "next/navigation";
import { isMobile } from "react-device-detect";
import { useTranslation } from "react-i18next";
import { DocumentEditor } from "@onlyoffice/document-editor-react";
@ -142,14 +141,9 @@ const Editor = ({
if (config) newConfig.editorConfig = { ...config.editorConfig };
const search = typeof window !== "undefined" ? window.location.search : "";
const editorType = new URLSearchParams(search).get("editorType");
//if (view && newConfig.editorConfig) newConfig.editorConfig.mode = "view";
if (editorType) newConfig.type = editorType;
if (isMobile) newConfig.type = "mobile";
let goBack: TGoBack = {} as TGoBack;
if (fileInfo) {

View File

@ -348,6 +348,18 @@ export async function getSettings(share?: string) {
return settings.response as TSettings;
}
export const checkIsAuthenticated = async () => {
const [request] = createRequest(["/authentication"], [["", ""]], "GET");
const res = await fetch(request);
if (!res.ok) return;
const isAuth = await res.json();
return isAuth.response as boolean;
};
export async function checkFillFromDraft(
templateFileId: number,
share?: string,
@ -401,15 +413,17 @@ export async function openEdit(
return { ...config.response, timer } as IInitialConfig;
}
const editorUrl =
cookie?.includes("asc_auth_key") || share
? (await getEditorUrl("", share)).docServiceUrl
: "";
const isAuth = share ? true : await checkIsAuthenticated();
const editorUrl = isAuth
? (await getEditorUrl("", share)).docServiceUrl
: "";
const status =
config.error?.type === EditorConfigErrorType.NotFoundScope
? "not-found"
: config.error?.type === EditorConfigErrorType.AccessDeniedScope
: config.error?.type === EditorConfigErrorType.AccessDeniedScope &&
isAuth
? "access-denied"
: config.error?.type === EditorConfigErrorType.TenantQuotaException
? "quota-exception"
@ -419,12 +433,11 @@ export async function openEdit(
const message = status ? config.error.message : undefined;
const error =
cookie?.includes("asc_auth_key") || share
? config.error.type === EditorConfigErrorType.LinkScope
? { message: message ?? "unauthorized", status, editorUrl }
: { ...config.error, status, editorUrl }
: { message: "unauthorized", status, editorUrl };
const error = isAuth
? config.error.type === EditorConfigErrorType.LinkScope
? { message: message ?? "unauthorized", status, editorUrl }
: { ...config.error, status, editorUrl }
: { message: "unauthorized", status, editorUrl };
return error as TError;
}

View File

@ -45,6 +45,7 @@ const DEFAULT_SORT_BY = "";
const DEFAULT_SORT_ORDER = "";
const DEFAULT_CATEGORIZE_BY = "";
const DEFAULT_CATEGORY_ID = "";
const DEFAULT_EXTENSION = "pdf";
class OformsFilter {
constructor(
@ -54,6 +55,7 @@ class OformsFilter {
categoryId = DEFAULT_CATEGORY_ID,
locale = DEFAULT_LOCALE,
search = DEFAULT_SEARCH,
extension = DEFAULT_EXTENSION,
sortBy = DEFAULT_SORT_BY,
sortOrder = DEFAULT_SORT_ORDER,
total = DEFAULT_TOTAL,
@ -64,12 +66,13 @@ class OformsFilter {
this.categoryId = categoryId;
this.locale = locale;
this.search = search;
this.extension = extension;
this.sortBy = sortBy;
this.sortOrder = sortOrder;
this.total = total;
}
static getDefault(total = DEFAULT_TOTAL) {
static getDefault(total = DEFAULT_TOTAL, extension = DEFAULT_EXTENSION) {
return new OformsFilter(
DEFAULT_PAGE,
DEFAULT_PAGE_SIZE,
@ -77,6 +80,7 @@ class OformsFilter {
DEFAULT_CATEGORY_ID,
DEFAULT_LOCALE,
DEFAULT_SEARCH,
extension,
DEFAULT_SORT_BY,
DEFAULT_SORT_ORDER,
total,
@ -110,6 +114,7 @@ class OformsFilter {
categoryId,
locale,
search,
defaultFilter.extension,
sortBy,
sortOrder,
defaultFilter.total,
@ -126,6 +131,7 @@ class OformsFilter {
this.categoryId,
this.locale,
this.search,
this.extension,
this.sortBy,
this.sortOrder,
this.total,
@ -155,6 +161,7 @@ class OformsFilter {
categoryId,
locale,
search,
extension,
sortBy,
sortOrder,
} = this;
@ -166,6 +173,7 @@ class OformsFilter {
dtoFilter[`filters[${categorizeBy}][id][$eq]`] = categoryId;
dtoFilter[LOCALE] = locale;
dtoFilter[`filters[name_form][$containsi]`] = search;
dtoFilter[`filters[form_exts][ext][$eq]`] = extension;
if (sortBy && sortOrder) dtoFilter[SORT] = `${sortBy}:${sortOrder}`;
return toUrlParams(dtoFilter, true);

View File

@ -44,7 +44,7 @@ const StyledErrorContainer = styled.div<{ isEditor: boolean }>`
display: flex;
flex-direction: column;
align-items: center;
margin: 0 auto;
margin: 0 auto 8px 0;
padding-top: 100px;
border: 0;
box-sizing: border-box;

View File

@ -33,7 +33,7 @@ import Headline from "../headline/Headline";
import StyledErrorContainer from "./ErrorContainer.styled";
import type { ErrorContainerProps } from "./ErrorContainer.types";
import { Scrollbar } from "../scrollbar";
const ErrorContainer = (props: ErrorContainerProps) => {
const {
headerText,
@ -48,351 +48,353 @@ const ErrorContainer = (props: ErrorContainerProps) => {
} = props;
return (
<StyledErrorContainer
{...rest}
isEditor={isEditor}
data-testid="ErrorContainer"
>
<PortalLogo isResizable />
<div id="container">
<svg
id="background"
width="753"
height="361"
viewBox="0 0 753 361"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M605.159 329.5L502.298 335.217C254.439 335.217 356.184 345.596 268.916 345.596C179.954 345.596 145.188 350.392 79.3741 349.916C17.1668 345.596 -36.4313 231.143 31.8546 171.934C109.509 90.4003 120.656 5.02279e-06 254.764 0C357.493 -3.84752e-06 383.499 65.6633 577.897 46.6555C712.51 33.4934 779.566 260.925 742.919 335.217C713.53 394.796 605.159 329.5 605.159 329.5Z"
fill="#E9F7FF"
/>
</svg>
<svg
id="birds"
width="263"
height="123"
viewBox="0 0 263 123"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M53.0374 0C52.4644 0 52 0.457978 52 1.02292C52 1.58787 52.4644 2.04584 53.0374 2.04584C57.1445 2.04584 60.1955 5.68928 61.3682 9.2816C61.5035 9.70858 61.9047 10 62.3585 10C62.8124 10 63.2137 9.70875 63.3489 9.28152L63.3492 9.28052C64.4188 5.99204 67.0823 2.04584 70.9626 2.04584C71.5356 2.04584 72 1.58787 72 1.02292C72 0.457978 71.5356 0 70.9626 0C66.9479 0 64.0346 3.08772 62.3445 6.38386C60.4819 2.8992 57.243 0 53.0374 0Z"
fill="#BADAF4"
/>
<path
d="M27.193 29C26.5341 29 26 29.5496 26 30.2275C26 30.9054 26.5341 31.455 27.193 31.455C31.9162 31.455 35.4248 35.8271 36.7734 40.1379C36.929 40.6503 37.3905 41 37.9123 41C38.4343 41 38.8957 40.6505 39.0512 40.1378L39.0516 40.1366C40.2816 36.1905 43.3447 31.455 47.807 31.455C48.4659 31.455 49 30.9054 49 30.2275C49 29.5496 48.4659 29 47.807 29C43.1901 29 39.8397 32.7053 37.8962 36.6606C35.7542 32.479 32.0294 29 27.193 29Z"
fill="#BADAF4"
/>
<path
d="M0 6.97439C0 6.43625 0.473705 6 1.05805 6C3.80222 6 5.62553 7.54675 6.702 8.93327C6.89487 9.18168 7.06749 9.4293 7.22099 9.66845C7.36273 9.43672 7.52095 9.19713 7.6963 8.95671C8.68661 7.59887 10.39 6 12.9419 6C13.5263 6 14 6.43625 14 6.97439C14 7.51254 13.5263 7.94879 12.9419 7.94879C11.4534 7.94879 10.3046 8.87553 9.45294 10.0433C9.03994 10.6096 8.73563 11.1828 8.53414 11.6183C8.43406 11.8346 8.361 12.0133 8.31384 12.1353C8.2903 12.1962 8.27331 12.2428 8.26273 12.2725L8.25168 12.3041L8.25017 12.3084C8.1147 12.7189 7.70352 13 7.23768 13C6.77235 13 6.36174 12.72 6.22581 12.3103L6.22539 12.3091C6.22529 12.3088 6.22518 12.3084 7.23768 12.0256L6.22539 12.3091L6.22407 12.3052L6.21337 12.2749C6.203 12.246 6.18614 12.2004 6.16254 12.1403C6.11528 12.0201 6.04139 11.8434 5.93891 11.6292C5.73262 11.198 5.41731 10.6292 4.98064 10.0667C4.09627 8.92764 2.82976 7.94879 1.05805 7.94879C0.473705 7.94879 0 7.51254 0 6.97439Z"
fill="#BADAF4"
/>
<path
d="M250.058 116C249.474 116 249 116.436 249 116.974C249 117.513 249.474 117.949 250.058 117.949C251.83 117.949 253.096 118.928 253.981 120.067C254.417 120.629 254.733 121.198 254.939 121.629C255.041 121.843 255.115 122.02 255.163 122.14C255.176 122.174 255.187 122.203 255.196 122.228C255.203 122.246 255.209 122.262 255.213 122.275L255.224 122.305L255.225 122.308L256.238 122.026C255.225 122.308 255.225 122.308 255.225 122.308L255.226 122.31"
fill="#BADAF4"
/>
<path
d="M250.058 116C252.802 116 254.626 117.547 255.702 118.933L250.058 116Z"
fill="#BADAF4"
/>
<path
d="M255.702 118.933C255.895 119.182 256.068 119.429 256.221 119.668L255.702 118.933Z"
fill="#BADAF4"
/>
<path
d="M256.221 119.668C256.363 119.437 256.521 119.197 256.696 118.957L256.221 119.668Z"
fill="#BADAF4"
/>
<path
d="M256.696 118.957C257.687 117.599 259.39 116 261.942 116L256.696 118.957Z"
fill="#BADAF4"
/>
<path
d="M261.942 116C262.526 116 263 116.436 263 116.974L261.942 116Z"
fill="#BADAF4"
/>
<path
d="M263 116.974C263 117.513 262.526 117.949 261.942 117.949L263 116.974Z"
fill="#BADAF4"
/>
<path
d="M261.942 117.949C260.453 117.949 259.305 118.876 258.453 120.043L261.942 117.949Z"
fill="#BADAF4"
/>
<path
d="M258.453 120.043C258.04 120.61 257.736 121.183 257.534 121.618L258.453 120.043Z"
fill="#BADAF4"
/>
<path
d="M257.534 121.618C257.434 121.835 257.361 122.013 257.314 122.135L257.534 121.618Z"
fill="#BADAF4"
/>
<path
d="M257.314 122.135C257.29 122.196 257.273 122.243 257.263 122.272L257.314 122.135Z"
fill="#BADAF4"
/>
<path
d="M257.263 122.272L257.252 122.304L257.263 122.272Z"
fill="#BADAF4"
/>
<path
d="M257.252 122.304L257.25 122.308L257.252 122.304Z"
fill="#BADAF4"
/>
<path
d="M257.25 122.308C257.115 122.719 256.704 123 256.238 123L257.25 122.308Z"
fill="#BADAF4"
/>
<path
d="M256.238 123C255.772 123 255.362 122.719 255.226 122.31L256.238 123Z"
fill="#BADAF4"
/>
<path
d="M255.226 122.31C255.226 122.31 255.226 122.31 255.226 122.31V122.31Z"
fill="#BADAF4"
/>
</svg>
<svg
id="mountain-left"
width="191"
height="130"
viewBox="0 0 191 130"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M100.787 5.63419L179.184 110.875C181.935 114.568 190.942 119.551 190.942 119.551C190.942 119.551 148.016 118.255 88.8323 126.895C29.6489 135.535 0 119.234 0 119.234C0 119.234 3.8778 114.47 6.75659 110.778L88.8323 5.53793C91.5955 1.99477 98.1152 2.04727 100.787 5.63419Z"
fill="#E1C6C6"
/>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M95.5 5.53794C121 36.912 127.5 87.412 159 119.234C159 119.234 148.016 118.255 88.8323 126.895C29.6489 135.535 0 119.234 0 119.234C0 119.234 3.8778 114.47 6.75659 110.778L88.8323 5.53794C91.5955 1.99478 92.828 1.95102 95.5 5.53794Z"
fill="#E6CECE"
/>
<path
d="M108.5 33.912C113 28.412 120.893 33.1437 120 30.912C119 28.412 110.66 17.004 108.5 14.412L99.5 3.41202C95.5 -1.08798 90 0.412003 85 7.41202L78.5 15.912C74.5 20.9261 66.5 32.912 66.5 32.912C77.5 22.912 82.1015 32.5223 87 27.912C95.5 19.912 102.003 41.8522 108.5 33.912Z"
fill="white"
/>
</svg>
<svg
id="mountain-right"
width="230"
height="162"
viewBox="0 0 230 162"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M129.056 6.27931L222.861 131.807C226.153 136.213 229.641 144.1 229.641 144.1C229.641 144.1 208.905 171.748 121.642 156.196C34.3791 140.644 0.251465 156.196 0.251465 156.196C0.251465 156.196 13.0994 136.095 16.544 131.692L114.751 6.16449C118.058 1.93832 125.859 2.00093 129.056 6.27931Z"
fill="#B59C9C"
/>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M129.056 6.27931C143.5 57.412 184.124 100.94 206 150.412C206 150.412 208.905 171.748 121.642 156.196C34.3791 140.644 0.251465 156.196 0.251465 156.196C0.251465 156.196 13.0994 136.095 16.544 131.692L114.751 6.16449C118.058 1.93832 125.859 2.00093 129.056 6.27931Z"
fill="#BCA7A7"
/>
<path
d="M109 39.912C105.361 43.8211 104 29.9121 95.5 28.912C95.5 28.912 96.2357 26.3398 98.1979 23.9575L114.845 3.03197C117.929 -0.71246 124.826 -0.603776 127.724 3.23494L145.223 26.4121C146.136 27.6214 151.854 34.2395 151.018 35.484C144 35.484 138.674 23.9041 132 31.412C124 40.412 122.5 25.412 109 39.912Z"
fill="white"
/>
</svg>
<svg
id="mountain-center"
width="364"
height="242"
viewBox="0 0 364 242"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M196.843 8.54528L345.932 200.731C351.165 207.476 363.298 222.596 363.298 222.596C363.298 222.596 293.315 257.164 180.564 230.372C67.8133 203.579 5.17395 215.997 5.17395 215.997C5.17395 215.997 12.5485 207.296 18.0231 200.555L174.108 8.36949C179.363 1.89911 191.762 1.99498 196.843 8.54528Z"
fill="#FAE0D2"
/>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M192 5.77758C251.837 82.912 281 186.912 333.923 232.532C333.923 232.532 270.851 252.836 174.108 232.532C77.3655 212.228 0.854004 219.14 0.854004 219.14C58.5157 151.11 117.888 75.0012 174.108 5.77758C179.363 -0.6928 186.919 -0.772726 192 5.77758Z"
fill="#FFE9DD"
/>
<path
d="M147.732 91.7013C137.365 88.6773 149.808 61.2481 120 72.912C112.211 69.8585 151.512 30.5027 168.9 9.16558C177.108 -0.263733 185.748 -4.83696 196.98 7.46215C213.582 28.4184 249.705 64.8585 245.5 71.412C223.9 62.3926 252.154 99.9491 217.284 78.6262C204.756 70.9655 202.164 59.7336 196.98 59.7336C191.796 59.7336 186.18 76.1494 173.652 76.1494C161.124 76.1494 158.1 94.7252 147.732 91.7013Z"
fill="white"
/>
</svg>
<svg
id="white-cloud-behind"
width="63"
height="27"
viewBox="0 0 63 27"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M62.0283 26.8523H1.63598C1.08018 25.5954 0.771484 24.2047 0.771484 22.7419C0.771484 17.8782 4.18439 13.8116 8.74599 12.8063C10.407 5.47421 16.9629 0 24.7974 0C30.5416 0 35.5985 2.94278 38.5427 7.40298C40.0926 6.52762 41.883 6.02808 43.79 6.02808C49.6918 6.02808 54.4762 10.8124 54.4762 16.7142C54.4762 17.3503 54.4206 17.9734 54.314 18.579C54.5181 18.5615 54.7246 18.5526 54.9332 18.5526C58.8995 18.5526 62.1148 21.768 62.1148 25.7343C62.1148 26.1146 62.0853 26.488 62.0283 26.8523Z"
fill="white"
/>
</svg>
<svg
id="white-cloud-center"
width="74"
height="33"
viewBox="0 0 74 33"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M73.3357 32.1895H1.03496C0.369565 30.6847 0 29.0198 0 27.2686C0 21.4458 4.08587 16.5773 9.54695 15.3738C11.5355 6.59599 19.3841 0.0423584 28.7634 0.0423584C35.6403 0.0423584 41.6943 3.5654 45.219 8.90507C47.0746 7.8571 49.218 7.25906 51.5011 7.25906C58.5666 7.25906 64.2943 12.9868 64.2943 20.0523C64.2943 20.8138 64.2278 21.5598 64.1002 22.2847C64.3445 22.2639 64.5918 22.2532 64.8415 22.2532C69.5899 22.2532 73.4392 26.1026 73.4392 30.851C73.4392 31.3063 73.4038 31.7533 73.3357 32.1895Z"
fill="white"
/>
</svg>
<svg
id="white-cloud-left"
width="180"
height="80"
viewBox="0 0 180 80"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M178.952 79.5991H3.02637C1.08826 75.6491 0 71.2064 0 66.5096C0 50.0768 13.3215 36.7553 29.7543 36.7553C31.2286 36.7553 32.6778 36.8625 34.0946 37.0696C39.0926 15.8192 58.1735 0 80.9492 0C103.664 0 122.703 15.7345 127.763 36.8987C138.074 38.9576 146.476 46.3064 150.02 55.9956C152.586 54.8778 155.42 54.2579 158.398 54.2579C169.998 54.2579 179.401 63.6613 179.401 75.2609C179.401 76.7482 179.246 78.1993 178.952 79.5991Z"
fill="white"
/>
</svg>
<svg
id="white-cloud-right"
width="160"
height="70"
viewBox="0 0 160 70"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M159.613 69.9674H2.25259C0.80436 66.6922 0 63.0686 0 59.2571C0 46.584 8.89278 35.9879 20.7787 33.3685C25.1067 14.2638 42.189 0 62.6028 0C77.5701 0 90.7464 7.6678 98.4179 19.2894C102.457 17.0086 107.122 15.707 112.091 15.707C127.468 15.707 139.935 28.1732 139.935 43.5511C139.935 45.2085 139.79 46.8321 139.512 48.4099C140.044 48.3645 140.582 48.3413 141.126 48.3413C151.46 48.3413 159.838 56.7193 159.838 67.0541C159.838 68.0451 159.761 69.0181 159.613 69.9674Z"
fill="white"
/>
</svg>
<svg
id="blue-cloud-left"
width="63"
height="24"
viewBox="0 0 63 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M62.1979 23.7708H0C0.135632 10.6194 10.8389 0 24.0224 0C32.5025 0 39.9564 4.3938 44.2317 11.029C45.7258 10.4393 47.3539 10.1152 49.0576 10.1152C56.3201 10.1152 62.2074 16.0026 62.2074 23.265C62.2074 23.4344 62.2042 23.603 62.1979 23.7708Z"
fill="#D0E7F9"
/>
</svg>
<svg
id="blue-cloud-right"
width="85"
height="33"
viewBox="0 0 85 33"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M0.011907 32.1712H84.4586C83.3204 14.213 68.3946 0 50.1493 0C37.9859 0 27.2979 6.31668 21.1866 15.8486C19.6727 15.3875 18.0658 15.1394 16.401 15.1394C7.34299 15.1394 0 22.4824 0 31.5404C0 31.7516 0.00399277 31.9619 0.011907 32.1712Z"
fill="#D0E7F9"
/>
</svg>
<svg
id="baloon"
width="92"
height="139"
viewBox="0 0 92 139"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M4.75806 61.9671L46.4736 135.739M46.4736 135.739L22.9019 80.111M46.4736 135.739L27.6538 37.7754M46.4736 135.739L65.2374 37.7754M46.4736 135.739L70.4214 80.111M46.4736 135.739L88.5652 61.9671M46.4736 135.739V56.3512"
stroke="#CBE4F6"
/>
<path
d="M40.1818 126.334H52.2776V135.43C52.2776 137.087 50.9345 138.43 49.2776 138.43H43.1818C41.5249 138.43 40.1818 137.087 40.1818 135.43V126.334Z"
fill="#BCA7A7"
/>
<rect
x="39.3177"
y="125.47"
width="13.8239"
height="1.72798"
fill="#CBE4F6"
/>
<rect
x="41.9097"
y="128.926"
width="1.72798"
height="6.91193"
fill="#E1C6C6"
/>
<rect
x="45.3657"
y="128.926"
width="1.72798"
height="6.91193"
fill="#E1C6C6"
/>
<rect
x="48.8217"
y="128.926"
width="1.72798"
height="6.91193"
fill="#E1C6C6"
/>
<circle cx="46" cy="46" r="46" fill="#D0E7F9" />
<ellipse cx="46" cy="46" rx="30" ry="46" fill="#E9F7FF" />
<ellipse cx="46" cy="46" rx="12" ry="46" fill="#D0E7F9" />
</svg>
</div>
{headerText && (
<Headline id="header" type="header">
{headerText}
</Headline>
)}
{bodyText && <Text id="text">{bodyText}</Text>}
{customizedBodyText && (
<Text id="customized-text" fontWeight={600} fontSize="13px">
{customizedBodyText}
</Text>
)}
{buttonText && onClickButton && (
<div id="button-container">
<Button
id="button"
scale
label={buttonText}
onClick={onClickButton}
size={ButtonSize.normal}
primary={isPrimaryButton}
/>
<Scrollbar style={{ height: "100dvh" }}>
<StyledErrorContainer
{...rest}
isEditor={isEditor}
data-testid="ErrorContainer"
>
<PortalLogo isResizable />
<div id="container">
<svg
id="background"
width="753"
height="361"
viewBox="0 0 753 361"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M605.159 329.5L502.298 335.217C254.439 335.217 356.184 345.596 268.916 345.596C179.954 345.596 145.188 350.392 79.3741 349.916C17.1668 345.596 -36.4313 231.143 31.8546 171.934C109.509 90.4003 120.656 5.02279e-06 254.764 0C357.493 -3.84752e-06 383.499 65.6633 577.897 46.6555C712.51 33.4934 779.566 260.925 742.919 335.217C713.53 394.796 605.159 329.5 605.159 329.5Z"
fill="#E9F7FF"
/>
</svg>
<svg
id="birds"
width="263"
height="123"
viewBox="0 0 263 123"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M53.0374 0C52.4644 0 52 0.457978 52 1.02292C52 1.58787 52.4644 2.04584 53.0374 2.04584C57.1445 2.04584 60.1955 5.68928 61.3682 9.2816C61.5035 9.70858 61.9047 10 62.3585 10C62.8124 10 63.2137 9.70875 63.3489 9.28152L63.3492 9.28052C64.4188 5.99204 67.0823 2.04584 70.9626 2.04584C71.5356 2.04584 72 1.58787 72 1.02292C72 0.457978 71.5356 0 70.9626 0C66.9479 0 64.0346 3.08772 62.3445 6.38386C60.4819 2.8992 57.243 0 53.0374 0Z"
fill="#BADAF4"
/>
<path
d="M27.193 29C26.5341 29 26 29.5496 26 30.2275C26 30.9054 26.5341 31.455 27.193 31.455C31.9162 31.455 35.4248 35.8271 36.7734 40.1379C36.929 40.6503 37.3905 41 37.9123 41C38.4343 41 38.8957 40.6505 39.0512 40.1378L39.0516 40.1366C40.2816 36.1905 43.3447 31.455 47.807 31.455C48.4659 31.455 49 30.9054 49 30.2275C49 29.5496 48.4659 29 47.807 29C43.1901 29 39.8397 32.7053 37.8962 36.6606C35.7542 32.479 32.0294 29 27.193 29Z"
fill="#BADAF4"
/>
<path
d="M0 6.97439C0 6.43625 0.473705 6 1.05805 6C3.80222 6 5.62553 7.54675 6.702 8.93327C6.89487 9.18168 7.06749 9.4293 7.22099 9.66845C7.36273 9.43672 7.52095 9.19713 7.6963 8.95671C8.68661 7.59887 10.39 6 12.9419 6C13.5263 6 14 6.43625 14 6.97439C14 7.51254 13.5263 7.94879 12.9419 7.94879C11.4534 7.94879 10.3046 8.87553 9.45294 10.0433C9.03994 10.6096 8.73563 11.1828 8.53414 11.6183C8.43406 11.8346 8.361 12.0133 8.31384 12.1353C8.2903 12.1962 8.27331 12.2428 8.26273 12.2725L8.25168 12.3041L8.25017 12.3084C8.1147 12.7189 7.70352 13 7.23768 13C6.77235 13 6.36174 12.72 6.22581 12.3103L6.22539 12.3091C6.22529 12.3088 6.22518 12.3084 7.23768 12.0256L6.22539 12.3091L6.22407 12.3052L6.21337 12.2749C6.203 12.246 6.18614 12.2004 6.16254 12.1403C6.11528 12.0201 6.04139 11.8434 5.93891 11.6292C5.73262 11.198 5.41731 10.6292 4.98064 10.0667C4.09627 8.92764 2.82976 7.94879 1.05805 7.94879C0.473705 7.94879 0 7.51254 0 6.97439Z"
fill="#BADAF4"
/>
<path
d="M250.058 116C249.474 116 249 116.436 249 116.974C249 117.513 249.474 117.949 250.058 117.949C251.83 117.949 253.096 118.928 253.981 120.067C254.417 120.629 254.733 121.198 254.939 121.629C255.041 121.843 255.115 122.02 255.163 122.14C255.176 122.174 255.187 122.203 255.196 122.228C255.203 122.246 255.209 122.262 255.213 122.275L255.224 122.305L255.225 122.308L256.238 122.026C255.225 122.308 255.225 122.308 255.225 122.308L255.226 122.31"
fill="#BADAF4"
/>
<path
d="M250.058 116C252.802 116 254.626 117.547 255.702 118.933L250.058 116Z"
fill="#BADAF4"
/>
<path
d="M255.702 118.933C255.895 119.182 256.068 119.429 256.221 119.668L255.702 118.933Z"
fill="#BADAF4"
/>
<path
d="M256.221 119.668C256.363 119.437 256.521 119.197 256.696 118.957L256.221 119.668Z"
fill="#BADAF4"
/>
<path
d="M256.696 118.957C257.687 117.599 259.39 116 261.942 116L256.696 118.957Z"
fill="#BADAF4"
/>
<path
d="M261.942 116C262.526 116 263 116.436 263 116.974L261.942 116Z"
fill="#BADAF4"
/>
<path
d="M263 116.974C263 117.513 262.526 117.949 261.942 117.949L263 116.974Z"
fill="#BADAF4"
/>
<path
d="M261.942 117.949C260.453 117.949 259.305 118.876 258.453 120.043L261.942 117.949Z"
fill="#BADAF4"
/>
<path
d="M258.453 120.043C258.04 120.61 257.736 121.183 257.534 121.618L258.453 120.043Z"
fill="#BADAF4"
/>
<path
d="M257.534 121.618C257.434 121.835 257.361 122.013 257.314 122.135L257.534 121.618Z"
fill="#BADAF4"
/>
<path
d="M257.314 122.135C257.29 122.196 257.273 122.243 257.263 122.272L257.314 122.135Z"
fill="#BADAF4"
/>
<path
d="M257.263 122.272L257.252 122.304L257.263 122.272Z"
fill="#BADAF4"
/>
<path
d="M257.252 122.304L257.25 122.308L257.252 122.304Z"
fill="#BADAF4"
/>
<path
d="M257.25 122.308C257.115 122.719 256.704 123 256.238 123L257.25 122.308Z"
fill="#BADAF4"
/>
<path
d="M256.238 123C255.772 123 255.362 122.719 255.226 122.31L256.238 123Z"
fill="#BADAF4"
/>
<path
d="M255.226 122.31C255.226 122.31 255.226 122.31 255.226 122.31V122.31Z"
fill="#BADAF4"
/>
</svg>
<svg
id="mountain-left"
width="191"
height="130"
viewBox="0 0 191 130"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M100.787 5.63419L179.184 110.875C181.935 114.568 190.942 119.551 190.942 119.551C190.942 119.551 148.016 118.255 88.8323 126.895C29.6489 135.535 0 119.234 0 119.234C0 119.234 3.8778 114.47 6.75659 110.778L88.8323 5.53793C91.5955 1.99477 98.1152 2.04727 100.787 5.63419Z"
fill="#E1C6C6"
/>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M95.5 5.53794C121 36.912 127.5 87.412 159 119.234C159 119.234 148.016 118.255 88.8323 126.895C29.6489 135.535 0 119.234 0 119.234C0 119.234 3.8778 114.47 6.75659 110.778L88.8323 5.53794C91.5955 1.99478 92.828 1.95102 95.5 5.53794Z"
fill="#E6CECE"
/>
<path
d="M108.5 33.912C113 28.412 120.893 33.1437 120 30.912C119 28.412 110.66 17.004 108.5 14.412L99.5 3.41202C95.5 -1.08798 90 0.412003 85 7.41202L78.5 15.912C74.5 20.9261 66.5 32.912 66.5 32.912C77.5 22.912 82.1015 32.5223 87 27.912C95.5 19.912 102.003 41.8522 108.5 33.912Z"
fill="white"
/>
</svg>
<svg
id="mountain-right"
width="230"
height="162"
viewBox="0 0 230 162"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M129.056 6.27931L222.861 131.807C226.153 136.213 229.641 144.1 229.641 144.1C229.641 144.1 208.905 171.748 121.642 156.196C34.3791 140.644 0.251465 156.196 0.251465 156.196C0.251465 156.196 13.0994 136.095 16.544 131.692L114.751 6.16449C118.058 1.93832 125.859 2.00093 129.056 6.27931Z"
fill="#B59C9C"
/>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M129.056 6.27931C143.5 57.412 184.124 100.94 206 150.412C206 150.412 208.905 171.748 121.642 156.196C34.3791 140.644 0.251465 156.196 0.251465 156.196C0.251465 156.196 13.0994 136.095 16.544 131.692L114.751 6.16449C118.058 1.93832 125.859 2.00093 129.056 6.27931Z"
fill="#BCA7A7"
/>
<path
d="M109 39.912C105.361 43.8211 104 29.9121 95.5 28.912C95.5 28.912 96.2357 26.3398 98.1979 23.9575L114.845 3.03197C117.929 -0.71246 124.826 -0.603776 127.724 3.23494L145.223 26.4121C146.136 27.6214 151.854 34.2395 151.018 35.484C144 35.484 138.674 23.9041 132 31.412C124 40.412 122.5 25.412 109 39.912Z"
fill="white"
/>
</svg>
<svg
id="mountain-center"
width="364"
height="242"
viewBox="0 0 364 242"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M196.843 8.54528L345.932 200.731C351.165 207.476 363.298 222.596 363.298 222.596C363.298 222.596 293.315 257.164 180.564 230.372C67.8133 203.579 5.17395 215.997 5.17395 215.997C5.17395 215.997 12.5485 207.296 18.0231 200.555L174.108 8.36949C179.363 1.89911 191.762 1.99498 196.843 8.54528Z"
fill="#FAE0D2"
/>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M192 5.77758C251.837 82.912 281 186.912 333.923 232.532C333.923 232.532 270.851 252.836 174.108 232.532C77.3655 212.228 0.854004 219.14 0.854004 219.14C58.5157 151.11 117.888 75.0012 174.108 5.77758C179.363 -0.6928 186.919 -0.772726 192 5.77758Z"
fill="#FFE9DD"
/>
<path
d="M147.732 91.7013C137.365 88.6773 149.808 61.2481 120 72.912C112.211 69.8585 151.512 30.5027 168.9 9.16558C177.108 -0.263733 185.748 -4.83696 196.98 7.46215C213.582 28.4184 249.705 64.8585 245.5 71.412C223.9 62.3926 252.154 99.9491 217.284 78.6262C204.756 70.9655 202.164 59.7336 196.98 59.7336C191.796 59.7336 186.18 76.1494 173.652 76.1494C161.124 76.1494 158.1 94.7252 147.732 91.7013Z"
fill="white"
/>
</svg>
<svg
id="white-cloud-behind"
width="63"
height="27"
viewBox="0 0 63 27"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M62.0283 26.8523H1.63598C1.08018 25.5954 0.771484 24.2047 0.771484 22.7419C0.771484 17.8782 4.18439 13.8116 8.74599 12.8063C10.407 5.47421 16.9629 0 24.7974 0C30.5416 0 35.5985 2.94278 38.5427 7.40298C40.0926 6.52762 41.883 6.02808 43.79 6.02808C49.6918 6.02808 54.4762 10.8124 54.4762 16.7142C54.4762 17.3503 54.4206 17.9734 54.314 18.579C54.5181 18.5615 54.7246 18.5526 54.9332 18.5526C58.8995 18.5526 62.1148 21.768 62.1148 25.7343C62.1148 26.1146 62.0853 26.488 62.0283 26.8523Z"
fill="white"
/>
</svg>
<svg
id="white-cloud-center"
width="74"
height="33"
viewBox="0 0 74 33"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M73.3357 32.1895H1.03496C0.369565 30.6847 0 29.0198 0 27.2686C0 21.4458 4.08587 16.5773 9.54695 15.3738C11.5355 6.59599 19.3841 0.0423584 28.7634 0.0423584C35.6403 0.0423584 41.6943 3.5654 45.219 8.90507C47.0746 7.8571 49.218 7.25906 51.5011 7.25906C58.5666 7.25906 64.2943 12.9868 64.2943 20.0523C64.2943 20.8138 64.2278 21.5598 64.1002 22.2847C64.3445 22.2639 64.5918 22.2532 64.8415 22.2532C69.5899 22.2532 73.4392 26.1026 73.4392 30.851C73.4392 31.3063 73.4038 31.7533 73.3357 32.1895Z"
fill="white"
/>
</svg>
<svg
id="white-cloud-left"
width="180"
height="80"
viewBox="0 0 180 80"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M178.952 79.5991H3.02637C1.08826 75.6491 0 71.2064 0 66.5096C0 50.0768 13.3215 36.7553 29.7543 36.7553C31.2286 36.7553 32.6778 36.8625 34.0946 37.0696C39.0926 15.8192 58.1735 0 80.9492 0C103.664 0 122.703 15.7345 127.763 36.8987C138.074 38.9576 146.476 46.3064 150.02 55.9956C152.586 54.8778 155.42 54.2579 158.398 54.2579C169.998 54.2579 179.401 63.6613 179.401 75.2609C179.401 76.7482 179.246 78.1993 178.952 79.5991Z"
fill="white"
/>
</svg>
<svg
id="white-cloud-right"
width="160"
height="70"
viewBox="0 0 160 70"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M159.613 69.9674H2.25259C0.80436 66.6922 0 63.0686 0 59.2571C0 46.584 8.89278 35.9879 20.7787 33.3685C25.1067 14.2638 42.189 0 62.6028 0C77.5701 0 90.7464 7.6678 98.4179 19.2894C102.457 17.0086 107.122 15.707 112.091 15.707C127.468 15.707 139.935 28.1732 139.935 43.5511C139.935 45.2085 139.79 46.8321 139.512 48.4099C140.044 48.3645 140.582 48.3413 141.126 48.3413C151.46 48.3413 159.838 56.7193 159.838 67.0541C159.838 68.0451 159.761 69.0181 159.613 69.9674Z"
fill="white"
/>
</svg>
<svg
id="blue-cloud-left"
width="63"
height="24"
viewBox="0 0 63 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M62.1979 23.7708H0C0.135632 10.6194 10.8389 0 24.0224 0C32.5025 0 39.9564 4.3938 44.2317 11.029C45.7258 10.4393 47.3539 10.1152 49.0576 10.1152C56.3201 10.1152 62.2074 16.0026 62.2074 23.265C62.2074 23.4344 62.2042 23.603 62.1979 23.7708Z"
fill="#D0E7F9"
/>
</svg>
<svg
id="blue-cloud-right"
width="85"
height="33"
viewBox="0 0 85 33"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M0.011907 32.1712H84.4586C83.3204 14.213 68.3946 0 50.1493 0C37.9859 0 27.2979 6.31668 21.1866 15.8486C19.6727 15.3875 18.0658 15.1394 16.401 15.1394C7.34299 15.1394 0 22.4824 0 31.5404C0 31.7516 0.00399277 31.9619 0.011907 32.1712Z"
fill="#D0E7F9"
/>
</svg>
<svg
id="baloon"
width="92"
height="139"
viewBox="0 0 92 139"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M4.75806 61.9671L46.4736 135.739M46.4736 135.739L22.9019 80.111M46.4736 135.739L27.6538 37.7754M46.4736 135.739L65.2374 37.7754M46.4736 135.739L70.4214 80.111M46.4736 135.739L88.5652 61.9671M46.4736 135.739V56.3512"
stroke="#CBE4F6"
/>
<path
d="M40.1818 126.334H52.2776V135.43C52.2776 137.087 50.9345 138.43 49.2776 138.43H43.1818C41.5249 138.43 40.1818 137.087 40.1818 135.43V126.334Z"
fill="#BCA7A7"
/>
<rect
x="39.3177"
y="125.47"
width="13.8239"
height="1.72798"
fill="#CBE4F6"
/>
<rect
x="41.9097"
y="128.926"
width="1.72798"
height="6.91193"
fill="#E1C6C6"
/>
<rect
x="45.3657"
y="128.926"
width="1.72798"
height="6.91193"
fill="#E1C6C6"
/>
<rect
x="48.8217"
y="128.926"
width="1.72798"
height="6.91193"
fill="#E1C6C6"
/>
<circle cx="46" cy="46" r="46" fill="#D0E7F9" />
<ellipse cx="46" cy="46" rx="30" ry="46" fill="#E9F7FF" />
<ellipse cx="46" cy="46" rx="12" ry="46" fill="#D0E7F9" />
</svg>
</div>
)}
{children}
</StyledErrorContainer>
{headerText && (
<Headline id="header" type="header">
{headerText}
</Headline>
)}
{bodyText && <Text id="text">{bodyText}</Text>}
{customizedBodyText && (
<Text id="customized-text" fontWeight={600} fontSize="13px">
{customizedBodyText}
</Text>
)}
{buttonText && onClickButton && (
<div id="button-container">
<Button
id="button"
scale
label={buttonText}
onClick={onClickButton}
size={ButtonSize.normal}
primary={isPrimaryButton}
/>
</div>
)}
{children}
</StyledErrorContainer>
</Scrollbar>
);
};

View File

@ -57,6 +57,7 @@ const FileInputPure = ({
path,
idButton,
isDocumentIcon,
isMultiple = true,
...rest
}: FileInputProps) => {
const { t } = useTranslation("Common");
@ -118,7 +119,12 @@ const FileInputPure = ({
fromStorage && !isDisabled ? { onClick: rest.onClick } : {};
return (
<Dropzone onDrop={onDrop} noClick={isDisabled || isLoading} accept={accept}>
<Dropzone
onDrop={onDrop}
noClick={isDisabled || isLoading}
accept={accept}
multiple={isMultiple}
>
{({ getRootProps, getInputProps }) => (
<StyledFileInput
scale={scale ? 1 : 0}
@ -198,6 +204,7 @@ FileInputPure.defaultProps = {
isLoading: false,
accept: [""],
isDocumentIcon: false,
isMultiple: true,
};
export { FileInputPure };

View File

@ -63,4 +63,6 @@ export interface FileInputProps {
idButton?: string;
path?: string;
fromStorage?: boolean;
/** Indicates that the input may contain multiple files. */
isMultiple?: boolean;
}

View File

@ -229,7 +229,7 @@ const FilterBlock = ({
};
});
if (isSelected) {
if (isSelected && key !== "0") {
if (isMultiSelect) {
const groupIdx = value.findIndex(
(item) => "group" in item && item.group === group,
@ -293,7 +293,7 @@ const FilterBlock = ({
) {
item.key.push(key);
} else {
item.key = key;
item.key = isSelected && key === "0" ? "1" : key;
if (label) {
item.label = label;
}

View File

@ -25,6 +25,7 @@
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
import React from "react";
import { isIOS, isMobileOnly, isSafari } from "react-device-detect";
import { classNames } from "../../../utils";
import { DialogSkeleton, DialogAsideSkeleton } from "../../../skeletons";
@ -102,6 +103,24 @@ const Modal = ({
? (footer?.props as { className?: string })
: { className: "" };
const onTouchMove = () => {
const activeElement = document.activeElement;
if (activeElement?.tagName === "INPUT") activeElement.blur();
};
const onFocusAction = () => {
document.addEventListener("touchmove", onTouchMove);
};
const onBlurAction = () => {
document.removeEventListener("touchmove", onTouchMove);
};
const iOSActions =
isMobileOnly && isIOS && isSafari
? { onFocus: onFocusAction, onBlur: onBlurAction }
: {};
return (
<StyledModal
id={id}
@ -194,6 +213,7 @@ const Modal = ({
hasFooter={!!footer}
currentDisplayType={currentDisplayType}
{...bodyProps}
{...iOSActions}
// embedded={embedded}
>
{currentDisplayType === "aside" && withBodyScroll ? (

View File

@ -63,7 +63,7 @@ const StyledSelector = styled.div`
overflow: hidden;
`;
const StyledHeader = styled.div`
const StyledHeader = styled.div<{ withoutBorder: boolean }>`
width: calc(100% - 32px);
min-height: 53px;
height: 53px;
@ -71,7 +71,10 @@ const StyledHeader = styled.div`
padding: 0 16px;
border-bottom: ${(props) => props.theme.selector.border};
${(props) =>
props.withoutBorder
? "border-bottom: none;"
: `border-bottom: ${props.theme.selector.border};`}
display: flex;
align-items: center;
@ -115,7 +118,7 @@ const StyledBody = styled.div<{
? `calc(100% - 16px - ${props.headerHeight}px)`
: `calc(100% - 16px)`};
padding: ${({ withTabs }) => (withTabs ? "8px 0 0 0" : "16px 0 0 0")};
padding: ${({ withTabs }) => (withTabs ? "0" : "16px 0 0 0")};
.search-input,
.search-loader {
@ -432,6 +435,8 @@ const StyledFooter = styled.div<{
padding: 0 16px;
background-color: ${(props) => props.theme.backgroundColor};
border-top: ${(props) => props.theme.selector.border};
.button {

View File

@ -42,10 +42,12 @@ type THeaderBackButton =
| {
onBackClick: () => void;
withoutBackButton: false;
withoutBorder: false;
}
| {
onBackClick?: undefined;
withoutBackButton?: undefined;
withoutBorder: undefined;
};
export type HeaderProps = {

View File

@ -203,7 +203,11 @@ const Body = ({
<BreadCrumbs />
{withTabs && tabsData && (
<StyledTabs items={tabsData} selectedItemId={activeTabId} />
<StyledTabs
items={tabsData}
selectedItemId={activeTabId}
className="selector_body_tabs"
/>
)}
<Search isSearch={itemsCount > 0 || isSearch} />

View File

@ -29,6 +29,7 @@ import { useTranslation } from "react-i18next";
import PlusSvgUrl from "PUBLIC_DIR/images/plus.svg?url";
import UpSvgUrl from "PUBLIC_DIR/images/up.svg?url";
import ClearEmptyFilterSvgUrl from "PUBLIC_DIR/images/clear.empty.filter.svg?url";
import { Heading } from "../../heading";
import { Text } from "../../text";
@ -42,6 +43,7 @@ import useCreateDropDown from "../hooks/useCreateDropDown";
import { EmptyScreenContext } from "../contexts/EmptyScreen";
import NewItemDropDown from "./NewItemDropDown";
import { SearchContext } from "../contexts/Search";
const linkStyles = {
isHovered: true,
@ -65,6 +67,7 @@ const EmptyScreen = ({
searchEmptyScreenDescription,
} = useContext(EmptyScreenContext);
const { t } = useTranslation(["Common"]);
const { onClearSearch } = useContext(SearchContext);
const { isOpenDropDown, setIsOpenDropDown, onCloseDropDown } =
useCreateDropDown();
@ -128,12 +131,19 @@ const EmptyScreen = ({
<IconButton
className="empty-folder_container-icon"
size={12}
onClick={createItem.onBackClick}
iconName={UpSvgUrl}
onClick={
withSearch ? () => onClearSearch?.() : createItem.onBackClick
}
iconName={withSearch ? ClearEmptyFilterSvgUrl : UpSvgUrl}
isFill
/>
<Link {...linkStyles} onClick={createItem.onBackClick}>
{t("Common:Back")}
<Link
{...linkStyles}
onClick={
withSearch ? () => onClearSearch?.() : createItem.onBackClick
}
>
{withSearch ? t("Common:ClearFilter") : t("Common:Back")}
</Link>
</div>
</div>

View File

@ -35,9 +35,14 @@ import { StyledHeader } from "../Selector.styled";
import { HeaderProps } from "../Selector.types";
const Header = React.memo(
({ onBackClick, withoutBackButton, headerLabel }: HeaderProps) => {
({
onBackClick,
withoutBackButton,
headerLabel,
withoutBorder,
}: HeaderProps) => {
return (
<StyledHeader>
<StyledHeader withoutBorder={withoutBorder}>
{!withoutBackButton && typeof withoutBackButton === "boolean" && (
<IconButton
className="arrow-button"

View File

@ -415,10 +415,14 @@ const StyledTableHeaderCell = styled.div<{
? props.theme.tableContainer.header.activeTextColor
: props.theme.tableContainer.header.textColor};
&:hover {
color: ${(props) =>
props.theme.tableContainer.header.hoverTextColor} !important;
}
${(props) =>
props.showIcon &&
props.sortingVisible &&
css`
&:hover {
color: ${props.theme.tableContainer.header.hoverTextColor} !important;
}
`}
}
`;

View File

@ -39,6 +39,7 @@ import { TTableColumn, TableHeaderProps } from "./Table.types";
import { TableSettings } from "./sub-components/TableSettings";
import { TableHeaderCell } from "./sub-components/TableHeaderCell";
import { checkingForUnfixedSize, getSubstring } from "./Table.utils";
import { isDesktop } from "../../utils";
const defaultMinColumnSize = 110;
const settingsSize = 24;
@ -347,6 +348,8 @@ class TableHeader extends React.Component<
setHideColumns,
} = this.props;
if (!isDesktop()) return;
let activeColumnIndex = null;
const container = containerRef.current

View File

@ -48,7 +48,7 @@
"react-autosize-textarea": "^7.1.0",
"react-content-loader": "^5.1.4",
"react-countdown": "2.3.5",
"react-device-detect": "^1.17.0",
"react-device-detect": "^2.2.3",
"react-dom": "^18.2.0",
"react-draggable": "^4.4.6",
"react-dropzone": "^11.7.1",

View File

@ -329,7 +329,9 @@ const useFilesHelper = ({
}
if (firstLoadRef.current || startIndex === 0) {
if (withCreate) {
const { security } = current;
if (withCreate && security.Create) {
setTotal(total + 1);
itemList.unshift({
isCreateNewItem: true,

View File

@ -155,7 +155,9 @@ const useRoomsHelper = ({
setHasNextPage(count === PAGE_COUNT);
if (firstLoadRef.current || startIndex === 0) {
if (withCreate) {
const { security } = current;
if (withCreate && security.Create) {
setTotal(total + 1);
const createItem: TSelectorItem = {
isCreateNewItem: true,

View File

@ -427,7 +427,9 @@ const FilesSelectorComponent = ({
isChecked: boolean,
) => {
const isPublic =
breadCrumbs.findIndex((f) => f.roomType === RoomsType.PublicRoom) > -1;
breadCrumbs.findIndex((f) => f.roomType === RoomsType.PublicRoom) >
-1 && rootFolderType !== FolderType.Rooms;
const folderTitle = breadCrumbs[breadCrumbs.length - 1].label;
await onSubmit(

View File

@ -3003,7 +3003,7 @@ __metadata:
react-autosize-textarea: "npm:^7.1.0"
react-content-loader: "npm:^5.1.4"
react-countdown: "npm:2.3.5"
react-device-detect: "npm:^1.17.0"
react-device-detect: "npm:^2.2.3"
react-docgen-typescript-plugin: "npm:^1.0.5"
react-dom: "npm:^18.2.0"
react-draggable: "npm:^4.4.6"
@ -23784,15 +23784,15 @@ __metadata:
languageName: node
linkType: hard
"react-device-detect@npm:^1.17.0":
version: 1.17.0
resolution: "react-device-detect@npm:1.17.0"
"react-device-detect@npm:^2.2.3":
version: 2.2.3
resolution: "react-device-detect@npm:2.2.3"
dependencies:
ua-parser-js: "npm:^0.7.24"
ua-parser-js: "npm:^1.0.33"
peerDependencies:
react: ">= 0.14.0 < 18.0.0"
react-dom: ">= 0.14.0 < 18.0.0"
checksum: 10/7a108095222057653a68bbee5d3ef208b110440a9a78790fb41737f0dec684250a5fa98da8a0e8da4443da49a29272eb6d6eb157999d4c06187f6af27b79d38d
react: ">= 0.14.0"
react-dom: ">= 0.14.0"
checksum: 10/7152e2b216b3bb6fd75c7859d3441b89658695c629a13c5d374f076756705650be585d5c4dc19d9d34908ef1b61f19b52f1055d74dd7104b77d1b6f897ee09e0
languageName: node
linkType: hard
@ -27795,13 +27795,20 @@ __metadata:
languageName: node
linkType: hard
"ua-parser-js@npm:^0.7.24, ua-parser-js@npm:^0.7.9":
"ua-parser-js@npm:^0.7.9":
version: 0.7.37
resolution: "ua-parser-js@npm:0.7.37"
checksum: 10/a50e8f7ee5618822670443b05e33ab184e3186d3f88c4761cdf65cf264219c626b74ee6cf96146091d9738c61412afe2788eeda75ef98f71a69a81495abe20ff
languageName: node
linkType: hard
"ua-parser-js@npm:^1.0.33":
version: 1.0.38
resolution: "ua-parser-js@npm:1.0.38"
checksum: 10/f2345e9bd0f9c5f85bcaa434535fae88f4bb891538e568106f0225b2c2937fbfbeb5782bd22320d07b6b3d68b350b8861574c1d7af072ff9b2362fb72d326fd9
languageName: node
linkType: hard
"ua-parser-js@npm:^1.0.35":
version: 1.0.37
resolution: "ua-parser-js@npm:1.0.37"