Merge branch 'develop' into feature/oauth2-client

This commit is contained in:
Timofey Boyko 2024-06-06 12:39:08 +03:00
commit 9419551e8c
75 changed files with 469 additions and 269 deletions

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "أنشئ جدول بيانات",
"HotkeysCreatingObjects": "إنشاء العناصر",
"HotkeysCutSelected": "قص العناصر المحددة إلى الحافظة.",
"HotkeysEnterKey": "ادخل",
"HotkeysExtendSelectionDown": "تمديد التحديد لأسفل",
"HotkeysExtendSelectionLeft": "تمديد التحديد لليسار",
"HotkeysExtendSelectionRight": "تمديد التحديد لليمين",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "حدد العنصر التالي على اليمين",
"HotkeysSelectUp": "حدد العنصر التالي لأعلى",
"HotkeysShortcuts": "عرض قائمة مفاتيح الاخصار للوحة المفاتيح",
"HotkeysSpaceKey": "إستضافة",
"HotkeysUndoLastAction": "التراجع عن الإجراء الأخير",
"HotkeysUploadFile": "ارفع الملف",
"HotkeysUploadingObjects": "رفع العناصر",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Cədvəl yarat",
"HotkeysCreatingObjects": "Elementlərin yaradılması",
"HotkeysCutSelected": "Seçilmiş elementləri mübadilə buferinə kopyalayın",
"HotkeysEnterKey": "Daxil olun",
"HotkeysExtendSelectionDown": "Seçimi sağa doğru uzadın",
"HotkeysExtendSelectionLeft": "Seçimi sola doğru uzadın",
"HotkeysExtendSelectionRight": "Seçimi sağa doğru uzadın",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Sağdakı növbəti elementi seçin",
"HotkeysSelectUp": "Yuxarıdakı növbəti elementi seçin",
"HotkeysShortcuts": "Klaviaturadakı qısayollar siyahısını göstərin",
"HotkeysSpaceKey": "Boşluq",
"HotkeysUndoLastAction": "Son hərəkəti ləğv edin",
"HotkeysUploadFile": "Fayl yüklə",
"HotkeysUploadingObjects": "Elementlərin yüklənilməsi",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Създайте таблица",
"HotkeysCreatingObjects": "Създаване на елементи",
"HotkeysCutSelected": "Изрежи избраните елементи в клипборда",
"HotkeysEnterKey": "Влез",
"HotkeysExtendSelectionDown": "Разширяване на избора надолу",
"HotkeysExtendSelectionLeft": "Разширяване на избора вляво",
"HotkeysExtendSelectionRight": "Разширете избора надясно",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Изберете следващия елемент вдясно",
"HotkeysSelectUp": "Изберете следващия елемент нагоре",
"HotkeysShortcuts": "Показване на списък с клавишни комбинации на клавиатурата",
"HotkeysSpaceKey": "Пространство",
"HotkeysUndoLastAction": "Отмяна на последното действие",
"HotkeysUploadFile": "Качи файл",
"HotkeysUploadingObjects": "Качване на елементи",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Vytvořit tabulku",
"HotkeysCreatingObjects": "Vytváření položek",
"HotkeysCutSelected": "Vyjmutí vybraných položek do schránky",
"HotkeysEnterKey": "Zadat",
"HotkeysExtendSelectionDown": "Rozšířit výběr dolů",
"HotkeysExtendSelectionLeft": "Rozšířit výběr vlevo",
"HotkeysExtendSelectionRight": "Rozšířit výběr doprava",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Vybrat další položku vpravo",
"HotkeysSelectUp": "Vybrat další položku nahoru",
"HotkeysShortcuts": "Zobrazit seznam klávesových zkratek",
"HotkeysSpaceKey": "Mezera",
"HotkeysUndoLastAction": "Vrátit poslední akci",
"HotkeysUploadFile": "Nahrát soubor",
"HotkeysUploadingObjects": "Nahrávání položek",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Eine Tabelle erstellen",
"HotkeysCreatingObjects": "Erstellen von Elementen",
"HotkeysCutSelected": "Ausgewählte Elemente in der Zwischenablage ausschneiden",
"HotkeysEnterKey": "Eingeben",
"HotkeysExtendSelectionDown": "Auswahl nach unten erweitern",
"HotkeysExtendSelectionLeft": "Auswahl nach links erweitern",
"HotkeysExtendSelectionRight": "Auswahl nach rechts erweitern",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Nächstes Element nach rechts auswählen",
"HotkeysSelectUp": "Nächstes Element nach oben auswählen",
"HotkeysShortcuts": "Liste der Tastenkombinationen anzeigen",
"HotkeysSpaceKey": "Leerzeichen",
"HotkeysUndoLastAction": "Rückgängig machen",
"HotkeysUploadFile": "Datei hochladen",
"HotkeysUploadingObjects": "Hochladen von Elementen",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Δημιουργία υπολογιστικού φύλλου",
"HotkeysCreatingObjects": "Δημιουργία στοιχείων",
"HotkeysCutSelected": "Αποκοπή επιλεγμένων στοιχείων στο πρόχειρο",
"HotkeysEnterKey": "Εισαγωγή",
"HotkeysExtendSelectionDown": "Επέκταση της επιλογής προς τα κάτω",
"HotkeysExtendSelectionLeft": "Επέκταση της επιλογής αριστερά",
"HotkeysExtendSelectionRight": "Επέκταση της επιλογής δεξιά",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Επιλέξτε το επόμενο στοιχείο στα δεξιά",
"HotkeysSelectUp": "Επιλέξτε το επόμενο στοιχείο επάνω",
"HotkeysShortcuts": "Εμφάνιση λίστας πλήκτρων συντομεύσεων πληκτρολογίου",
"HotkeysSpaceKey": "Κενό διάστημα",
"HotkeysUndoLastAction": "Αναίρεση της τελευταίας ενέργειας",
"HotkeysUploadFile": "Μεταφόρτωση αρχείου",
"HotkeysUploadingObjects": "Μεταφόρτωση στοιχείων",

View File

@ -182,6 +182,7 @@
"WantLeaveRoom": "Do you really want to leave this room? You will be able to join it again via new invitation by a room admin.",
"WantToRestoreTheRoom": "All shared links in this room will become active, and its contents will be available to everyone with the link. Do you want to restore the room?",
"WantToRestoreTheRooms": "All shared links in restored rooms will become active, and their contents will be available to everyone with the room links. Do you want to restore the rooms?",
"WaitOperation": "Wait for the current operation to complete",
"WithSubfolders": "With subfolders",
"YouLeftTheRoom": "You have left the room"
}

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Create spreadsheet",
"HotkeysCreatingObjects": "Creating items",
"HotkeysCutSelected": "Cut selected items to the clipboard",
"HotkeysEnterKey": "Enter",
"HotkeysExtendSelectionDown": "Extend selection down",
"HotkeysExtendSelectionLeft": "Extend selection left",
"HotkeysExtendSelectionRight": "Extend selection right",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Select next item to the right",
"HotkeysSelectUp": "Select next item up",
"HotkeysShortcuts": "Display keyboard hotkeys list",
"HotkeysSpaceKey": "Space",
"HotkeysUndoLastAction": "Undo the last action",
"HotkeysUploadFile": "Upload file",
"HotkeysUploadingObjects": "Uploading items",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Crear hoja de cálculo",
"HotkeysCreatingObjects": "Creando elementos",
"HotkeysCutSelected": "Cortar los elementos seleccionados en el portapapeles",
"HotkeysEnterKey": "Introducir",
"HotkeysExtendSelectionDown": "Ampliar la selección hacia abajo",
"HotkeysExtendSelectionLeft": "Ampliar la selección hacia la izquierda",
"HotkeysExtendSelectionRight": "Ampliar la selección hacia la derecha",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Seleccionar el siguiente elemento hacia la derecha",
"HotkeysSelectUp": "Seleccionar el siguiente elemento hacia arriba",
"HotkeysShortcuts": "Mostrar la lista de atajos de teclado",
"HotkeysSpaceKey": "Espacio",
"HotkeysUndoLastAction": "Deshacer la última acción",
"HotkeysUploadFile": "Cargar archivo",
"HotkeysUploadingObjects": "Cargando elementos",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Luo laskentataulukko",
"HotkeysCreatingObjects": "Kohteiden luominen",
"HotkeysCutSelected": "Leikkaa valitut kohteet leikepöydälle",
"HotkeysEnterKey": "Syötä",
"HotkeysExtendSelectionDown": "Laajenna valintaa alaspäin",
"HotkeysExtendSelectionLeft": "Laajenna valintaa vasemmalle",
"HotkeysExtendSelectionRight": "Laajenna valintaa oikealle",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Valitse seuraava kohde oikealta",
"HotkeysSelectUp": "Valitse seuraava kohde yltä",
"HotkeysShortcuts": "Näytä näppäimistön pikanäppäinten luettelo",
"HotkeysSpaceKey": "Väli",
"HotkeysUndoLastAction": "Kumoa viimeinen toiminto",
"HotkeysUploadFile": "Lataa tiedosto",
"HotkeysUploadingObjects": "Kohteiden lataaminen",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Créer une feuille de calcul",
"HotkeysCreatingObjects": "Création d'éléments",
"HotkeysCutSelected": "Couper les éléments sélectionnés dans le presse-papiers",
"HotkeysEnterKey": "Entrer",
"HotkeysExtendSelectionDown": "Étendre la sélection vers le bas",
"HotkeysExtendSelectionLeft": "Étendre la sélection vers la gauche",
"HotkeysExtendSelectionRight": "Étendre la sélection vers la droite",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Sélectionner l'élément suivant à droite",
"HotkeysSelectUp": "Sélectionner l'élément suivant vers le haut",
"HotkeysShortcuts": "Afficher la liste des raccourcis clavier",
"HotkeysSpaceKey": "Espace",
"HotkeysUndoLastAction": "Annuler la dernière action",
"HotkeysUploadFile": "Télécharger le fichier",
"HotkeysUploadingObjects": "Chargement d'éléments",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Ստեղծել աղյուսակաթերթ",
"HotkeysCreatingObjects": "Միավորների ստեղծում",
"HotkeysCutSelected": "Կտրեք ընտրված տարրերը սեղմատախտակի վրա",
"HotkeysEnterKey": "Մուտքագրել",
"HotkeysExtendSelectionDown": "Ընդարձակում է ընտրարկումը վար",
"HotkeysExtendSelectionLeft": "Ընդարձակում է ընտրարկումը ձախ",
"HotkeysExtendSelectionRight": "Ընդարձակում է ընտրարկումը աջ",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Ընտրեք հաջորդ միավորը ձախ կողմում",
"HotkeysSelectUp": "Ընտրեք հաջորդ միավորը աջ կողմում",
"HotkeysShortcuts": "Ցուցադրել ստեղնաշարի թեժ ստեղների ցանկը",
"HotkeysSpaceKey": "Բացատ",
"HotkeysUndoLastAction": "Հետարկել վերջին գործողությունը",
"HotkeysUploadFile": "Վերբեռնել ֆայլը",
"HotkeysUploadingObjects": "Միավորների վերբեռնում",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Creare foglio di calcolo",
"HotkeysCreatingObjects": "Creazione elementi",
"HotkeysCutSelected": "Tagliare gli elementi selezionati negli appunti",
"HotkeysEnterKey": "Invio",
"HotkeysExtendSelectionDown": "Estendere la selezione verso il basso",
"HotkeysExtendSelectionLeft": "Estendere la selezione a sinistra",
"HotkeysExtendSelectionRight": "Estendere la selezione a destra",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Selezionare l'elemento successivo a destra",
"HotkeysSelectUp": "Selezionare l'elemento successivo in alto",
"HotkeysShortcuts": "Visualizzare l'elenco dei tasti di scelta rapida della tastiera",
"HotkeysSpaceKey": "Spazio",
"HotkeysUndoLastAction": "Annullare l'ultima azione",
"HotkeysUploadFile": "Caricare file",
"HotkeysUploadingObjects": "Caricamento elementi",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "スプレッドシートを作成する",
"HotkeysCreatingObjects": "アイテムの作成",
"HotkeysCutSelected": "選択した項目をクリップボードにカット",
"HotkeysEnterKey": "入力",
"HotkeysExtendSelectionDown": "選択範囲の拡大(下)",
"HotkeysExtendSelectionLeft": "選択範囲の拡大(左)",
"HotkeysExtendSelectionRight": "選択範囲の拡大(右)",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "次のアイテムを選択(右)",
"HotkeysSelectUp": "次のアイテムを選択(上)",
"HotkeysShortcuts": "キーボードのホットキーリストを表示",
"HotkeysSpaceKey": "スペース",
"HotkeysUndoLastAction": "直前のアクションを元に戻す",
"HotkeysUploadFile": "ファイルをアップロード",
"HotkeysUploadingObjects": "アイテムのアップロード",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "스프레드 시트를 만듭니다",
"HotkeysCreatingObjects": "항목 생성",
"HotkeysCutSelected": "선택한 항목을 클립보드로 잘라내기",
"HotkeysEnterKey": "입력",
"HotkeysExtendSelectionDown": "아래쪽으로 선택 확장",
"HotkeysExtendSelectionLeft": "왼쪽으로 선택 확장",
"HotkeysExtendSelectionRight": "오른쪽으로 선택 확장",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "오른쪽으로 다음 항목 선택",
"HotkeysSelectUp": "위로 다음 항목 선택",
"HotkeysShortcuts": "키보드 단축키 목록 표시",
"HotkeysSpaceKey": "공간",
"HotkeysUndoLastAction": "마지막 작업 실행 취소",
"HotkeysUploadFile": "파일 업로드",
"HotkeysUploadingObjects": "항목 업로드",

View File

@ -12,7 +12,6 @@
"HotkeysCreatePresentation": "ສ້າງການນໍາສະເຫນີ",
"HotkeysCreateSpreadsheet": "ສ້າງຕາຕະລາງ",
"HotkeysCreatingObjects": "ການສ້າງລາຍການ",
"HotkeysEnterKey": "ເຂົ້າ",
"HotkeysExtendSelectionDown": "ຂະຫຍາຍການເລືອກລົງ",
"HotkeysExtendSelectionLeft": "ຂະຫຍາຍການເລືອກຊ້າຍ",
"HotkeysExtendSelectionRight": "ຂະຫຍາຍການເລືອກທີ່ຖືກຕ້ອງ",
@ -36,7 +35,6 @@
"HotkeysSelectRight": "ເລືອກລາຍການຕໍ່ໄປໄປທາງຂວາ",
"HotkeysSelectUp": "ເລືອກລາຍການຕໍ່ໄປ",
"HotkeysShortcuts": "ສະແດງລາຍການຄີບອດແປ້ນພິມ",
"HotkeysSpaceKey": "ຍະຫວ່າງ",
"HotkeysUndoLastAction": "ຍົກເລີກການກະ ທຳ ສຸດທ້າຍ",
"HotkeysUploadFile": "ອັບໂຫລດໄຟລ໌",
"HotkeysUploadingObjects": "ການອັບໂຫລດລາຍການ"

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Izveidot tabulu",
"HotkeysCreatingObjects": "Izveidot vienumus",
"HotkeysCutSelected": "Izgrieziet atlasītos vienumus starpliktuvē",
"HotkeysEnterKey": "Ievadīt",
"HotkeysExtendSelectionDown": "Paplašināt atlasi uz leju",
"HotkeysExtendSelectionLeft": "Paplašināt atlasi pa kreisi",
"HotkeysExtendSelectionRight": "Paplašināt atlasi pa labi",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Atlasīt nākamo vienumu pa labi",
"HotkeysSelectUp": "Izvēlēties nākamo vienumu uz augšu",
"HotkeysShortcuts": "Parādīt tastatūras karsto taustiņu sarakstu",
"HotkeysSpaceKey": "Atstarpe",
"HotkeysUndoLastAction": "Atsaukt pēdējo darbību",
"HotkeysUploadFile": "Augšupielādēt failu",
"HotkeysUploadingObjects": "Notiek vienumu augšupielāde",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Spreadsheet maken",
"HotkeysCreatingObjects": "Items aanmaken",
"HotkeysCutSelected": "Knip geselecteerde items naar het klembord",
"HotkeysEnterKey": "Invoeren",
"HotkeysExtendSelectionDown": "Selectie uitbreiden naar beneden",
"HotkeysExtendSelectionLeft": "Selectie naar links uitbreiden",
"HotkeysExtendSelectionRight": "Selectie naar rechts uitbreiden",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Kies het volgende item aan de rechterkant",
"HotkeysSelectUp": "Kies het volgende item omhoog",
"HotkeysShortcuts": "Lijst met sneltoetsen weergeven",
"HotkeysSpaceKey": "Spatie",
"HotkeysUndoLastAction": "Laatste actie ongedaan maken",
"HotkeysUploadFile": "Bestand uploaden",
"HotkeysUploadingObjects": "Items uploaden",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Utwórz arkusz kalkulacyjny",
"HotkeysCreatingObjects": "Tworzenie elementów",
"HotkeysCutSelected": "Wytnij zaznaczone pliki do schowka",
"HotkeysEnterKey": "Wpisz",
"HotkeysExtendSelectionDown": "Rozszerz zaznaczenie w dół",
"HotkeysExtendSelectionLeft": "Rozszerz zaznaczenie w lewo",
"HotkeysExtendSelectionRight": "Rozszerz zaznaczenie w prawo",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Zaznacz kolejny element po prawej",
"HotkeysSelectUp": "Zaznacz kolejny element powyżej",
"HotkeysShortcuts": "Wyświetl listę skrótów klawiaturowych",
"HotkeysSpaceKey": "Odstęp",
"HotkeysUndoLastAction": "Cofnij ostatnią akcję",
"HotkeysUploadFile": "Przesyłanie pliku",
"HotkeysUploadingObjects": "Wgrywanie elementów",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Criar Planilha",
"HotkeysCreatingObjects": "Criar itens",
"HotkeysCutSelected": "Cortar itens selecionados para a área de transferência",
"HotkeysEnterKey": "Inserir",
"HotkeysExtendSelectionDown": "Estender seleção para baixo",
"HotkeysExtendSelectionLeft": "Estender seleção para a esquerda",
"HotkeysExtendSelectionRight": "Estender seleção para a direita",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Selecionar o próximo item à direita",
"HotkeysSelectUp": "Selecionar o próximo item acima",
"HotkeysShortcuts": "Exibir lista de teclas de acesso do teclado",
"HotkeysSpaceKey": "Espaço",
"HotkeysUndoLastAction": "Desfazer a última ação",
"HotkeysUploadFile": "Carregar arquivo",
"HotkeysUploadingObjects": "Fazer upload de itens",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Criar folha de cálculo",
"HotkeysCreatingObjects": "A criar itens",
"HotkeysCutSelected": "Cortar itens selecionados para a área de transferência",
"HotkeysEnterKey": "Introduzir",
"HotkeysExtendSelectionDown": "Expandir a seleção para baixo",
"HotkeysExtendSelectionLeft": "Expandir a seleção para a esquerda",
"HotkeysExtendSelectionRight": "Expandir a seleção para a direita",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Selecionar o próximo item à direita",
"HotkeysSelectUp": "Selecionar o próximo item acima",
"HotkeysShortcuts": "Mostrar lista de teclas de atalho",
"HotkeysSpaceKey": "Espaço",
"HotkeysUndoLastAction": "Anular a última ação",
"HotkeysUploadFile": "Carregar ficheiro",
"HotkeysUploadingObjects": "A carregar itens",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Creează o foaie de calcul",
"HotkeysCreatingObjects": "Creează elemente",
"HotkeysCutSelected": "Decupare elemente selectate în clipboard",
"HotkeysEnterKey": "Enter",
"HotkeysExtendSelectionDown": "Extinde selecția în jos",
"HotkeysExtendSelectionLeft": "Extinde selecția la stânga",
"HotkeysExtendSelectionRight": "Extinde selecția la dreapta",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Selectează următorul element din dreapta",
"HotkeysSelectUp": "Selectează următorul element de deasupra",
"HotkeysShortcuts": "Afișează lista de comenzi rapide de la tastatură",
"HotkeysSpaceKey": "Spațiu",
"HotkeysUndoLastAction": "Anulează ultima acțiune",
"HotkeysUploadFile": "Încarcă fișier",
"HotkeysUploadingObjects": "Încărcare elemente",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Создать таблицу",
"HotkeysCreatingObjects": "Создание объектов",
"HotkeysCutSelected": "Вырезать выбранные элементы в буфер обмена",
"HotkeysEnterKey": "Ввод",
"HotkeysExtendSelectionDown": "Расширить выделение вниз",
"HotkeysExtendSelectionLeft": "Расширить выделение влево",
"HotkeysExtendSelectionRight": "Расширить выделение вправо",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Выделить следующий объект справа",
"HotkeysSelectUp": "Выделить следующий объект сверху",
"HotkeysShortcuts": "Показать список быстрых клавиш",
"HotkeysSpaceKey": "Пробел",
"HotkeysUndoLastAction": "Отменить последнее действие",
"HotkeysUploadFile": "Загрузить файл",
"HotkeysUploadingObjects": "Загрузка объектов",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "පැතුරුම්පතක් සාදන්න",
"HotkeysCreatingObjects": "අථක සෑදීම",
"HotkeysCutSelected": "තෝරාගත් අථක කපන්න",
"HotkeysEnterKey": "ඇතුල් කරන්න",
"HotkeysExtendSelectionDown": "තේරීම පහළට පතුරුවන්න",
"HotkeysExtendSelectionLeft": "තේරීම වමට පතුරුවන්න",
"HotkeysExtendSelectionRight": "තේරීම දකුණට පතුරුවන්න",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "දකුණු පස ඊළඟ අථකය තෝරන්න",
"HotkeysSelectUp": "ඉහළ ඊළඟ අථකය තෝරන්න",
"HotkeysShortcuts": "කෙටිමං ලැයිස්තුව පෙන්වන්න",
"HotkeysSpaceKey": "හිස්තැන",
"HotkeysUndoLastAction": "අවසාන ක්‍රියාව පෙරසේ තබන්න",
"HotkeysUploadFile": "ගොනුවක් උඩුගත කරන්න",
"HotkeysUploadingObjects": "අථක උඩුගත වෙමින්",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Vytvoriť tabuľku",
"HotkeysCreatingObjects": "Vytváranie položiek",
"HotkeysCutSelected": "Vyrezať vybrané položky do schránky",
"HotkeysEnterKey": "Zadať",
"HotkeysExtendSelectionDown": "Rozšíriť výber nadol",
"HotkeysExtendSelectionLeft": "Rozšíriť výber doľava",
"HotkeysExtendSelectionRight": "Rozšíriť výber doprava",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Vybrať ďalšiu položku vpravo",
"HotkeysSelectUp": "Vybrať ďalšiu položku hore",
"HotkeysShortcuts": "Zobraziť zoznam klávesových skratiek na klávesnici",
"HotkeysSpaceKey": "Priestor",
"HotkeysUndoLastAction": "Vrátiť späť poslednú akciu",
"HotkeysUploadFile": "Nahrať súbor",
"HotkeysUploadingObjects": "Nahrávanie položiek",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Ustvari preglednico",
"HotkeysCreatingObjects": "Ustvarjanje predmetov",
"HotkeysCutSelected": "Izreži izbrane elemente v odložišče",
"HotkeysEnterKey": "Vstopi",
"HotkeysExtendSelectionDown": "Premakni izbiro navzdol",
"HotkeysExtendSelectionLeft": "Premakni izbiro na levo",
"HotkeysExtendSelectionRight": "Premakni izbiro na desno",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Izberi naslednji predmet desno",
"HotkeysSelectUp": "Izberi naslednji predmet zgoraj",
"HotkeysShortcuts": "Prikaži seznam bližnjic na tipkovnici",
"HotkeysSpaceKey": "Razmik",
"HotkeysUndoLastAction": "Razveljavi zadnjo akcijo",
"HotkeysUploadFile": "Naloži datoteko",
"HotkeysUploadingObjects": "Nalaganje predmetov",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Kreiraj proračunsku tabelu",
"HotkeysCreatingObjects": "Kreiranje stavki",
"HotkeysCutSelected": "Iseci odabrane stavke na privremenu memoriju",
"HotkeysEnterKey": "Uđi",
"HotkeysExtendSelectionDown": "Proširi selekciju dole",
"HotkeysExtendSelectionLeft": "Proširi selekciju levo",
"HotkeysExtendSelectionRight": "Proširi selekciju desno",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Odaberi sledeću stavku sa desne strane",
"HotkeysSelectUp": "Odaberi sledeću stavku gore",
"HotkeysShortcuts": "Prikaži listu prečica tastature",
"HotkeysSpaceKey": "Prostor",
"HotkeysUndoLastAction": "Poništi poslednju radnju",
"HotkeysUploadFile": "Otpremi datoteku",
"HotkeysUploadingObjects": "Otpremljivanje stavki",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Elektronik Tablo Oluştur",
"HotkeysCreatingObjects": "Öğeler oluşturuluyor",
"HotkeysCutSelected": "Seçilen öğeleri panoya kes",
"HotkeysEnterKey": "Giriş",
"HotkeysExtendSelectionDown": "Seçimi aşağı genişlet",
"HotkeysExtendSelectionLeft": "Seçimi sola genişlet",
"HotkeysExtendSelectionRight": "Seçimi sağa genişlet",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Sıradaki öğeyi sağa doğru seç",
"HotkeysSelectUp": "Sıradaki öğeyi yukarı doğru seç",
"HotkeysShortcuts": "Klavye kısayol tuşları listesini görüntüle",
"HotkeysSpaceKey": "Boşluk",
"HotkeysUndoLastAction": "Son işlemi geri al",
"HotkeysUploadFile": "Dosya yükle",
"HotkeysUploadingObjects": "Öğeler yükleniyor",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Створити таблицю",
"HotkeysCreatingObjects": "Створення елементів",
"HotkeysCutSelected": "Вирізати вибрані елементи до буфера обміну",
"HotkeysEnterKey": "Ввести",
"HotkeysExtendSelectionDown": "Розширити виділення вниз",
"HotkeysExtendSelectionLeft": "Розширити виділення ліворуч",
"HotkeysExtendSelectionRight": "Розширити виділення праворуч",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Вибрати наступний елемент праворуч",
"HotkeysSelectUp": "Вибрати наступний елемент угорі",
"HotkeysShortcuts": "Показати список сполучень клавіш",
"HotkeysSpaceKey": "Пробіл",
"HotkeysUndoLastAction": "Скасувати останню дію",
"HotkeysUploadFile": "Завантажити файл",
"HotkeysUploadingObjects": "Передавання елементів",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Tạo bảng tính",
"HotkeysCreatingObjects": "Tạo mục",
"HotkeysCutSelected": "Cắt các mục đã chọn vào bộ nhớ tạm",
"HotkeysEnterKey": "Nhập",
"HotkeysExtendSelectionDown": "Mở rộng lựa chọn xuống",
"HotkeysExtendSelectionLeft": "Mở rộng lựa chọn bên trái",
"HotkeysExtendSelectionRight": "Mở rộng lựa chọn bên phải",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Chọn mục tiếp theo bên phải",
"HotkeysSelectUp": "Chọn mục tiếp theo bên trên",
"HotkeysShortcuts": "Hiển thị danh sách phím tắt",
"HotkeysSpaceKey": "Khoảng cách",
"HotkeysUndoLastAction": "Hoàn tác hành động cuối cùng",
"HotkeysUploadFile": "Tải file lên",
"HotkeysUploadingObjects": "Đang tải lên các mục",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "新建电子表格",
"HotkeysCreatingObjects": "创建项目",
"HotkeysCutSelected": "将选定的项目剪切到剪贴板",
"HotkeysEnterKey": "输入",
"HotkeysExtendSelectionDown": "向下扩展选定",
"HotkeysExtendSelectionLeft": "向左扩展选定",
"HotkeysExtendSelectionRight": "向右扩展选定",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "向右选择下一个项目",
"HotkeysSelectUp": "向上选择下一个项目",
"HotkeysShortcuts": "显示快捷键列表",
"HotkeysSpaceKey": "空格",
"HotkeysUndoLastAction": "撤销上次的行动",
"HotkeysUploadFile": "上传文件",
"HotkeysUploadingObjects": "上传项目",

View File

@ -89,6 +89,8 @@ const withHotkeys = (Component) => {
security,
copyToClipboard,
uploadClipboardFiles,
isGroupMenuBlocked,
} = props;
const navigate = useNavigate();
@ -317,7 +319,7 @@ const withHotkeys = (Component) => {
return;
}
if (isAvailableOption("delete")) {
if (isAvailableOption("delete") && !isGroupMenuBlocked) {
if (isRecentFolder) return;
if (isFavoritesFolder) {
@ -460,6 +462,7 @@ const withHotkeys = (Component) => {
setFavoriteAction,
deleteRooms,
archiveRooms,
isGroupMenuBlocked,
} = filesActionsStore;
const { visible: mediaViewerIsVisible } = mediaViewerDataStore;
@ -533,6 +536,8 @@ const withHotkeys = (Component) => {
copyToClipboard,
uploadClipboardFiles,
isGroupMenuBlocked,
};
},
)(observer(WithHotkeys));

View File

@ -184,6 +184,8 @@ const CreateEvent = ({
searchParams.append("formId", gallerySelected.id);
}
searchParams.append("hash", new Date().getTime());
const url = combineUrl(
window.location.origin,
window.DocSpaceConfig?.proxy?.url,

View File

@ -208,6 +208,7 @@ class ProfileMenu extends React.Component {
open={open}
clickOutsideAction={clickOutsideAction}
forwardedRef={forwardedRef}
isDefaultMode={false}
withBlur={true}
isBannerVisible={isBannerVisible}
withPortal={true}
@ -236,7 +237,15 @@ class ProfileMenu extends React.Component {
};
render() {
return <StyledWrapper>{this.renderDropDown()}</StyledWrapper>;
const { open } = this.props;
const element = this.renderDropDown();
const root = document.getElementById("root");
const wrapper = <StyledWrapper>{element}</StyledWrapper>;
return <>{<Portal element={wrapper} appendTo={root} visible={open} />}</>;
}
}

View File

@ -103,6 +103,8 @@ const ConvertPasswordDialogComponent = (props) => {
searchParams.append("password", password);
searchParams.append("fromFile", true);
searchParams.append("hash", new Date().getTime());
const url = combineUrl(
window.location.origin,
window.DocSpaceConfig?.proxy?.url,

View File

@ -34,7 +34,7 @@ const ActionsBlock = ({ t, textStyles, keyTextStyles, CtrlKey }) => {
<Row className="hotkeys_row">
<>
<Text {...textStyles}>{t("HotkeysOpen")}</Text>
<Text {...keyTextStyles}>{t("HotkeysEnterKey")}</Text>
<Text {...keyTextStyles}>Enter</Text>
</>
</Row>
<Row className="hotkeys_row">

View File

@ -40,7 +40,7 @@ const PreviewActionsBlock = ({ t, textStyles, keyTextStyles }) => {
<Row className="hotkeys_row">
<>
<Text {...textStyles}>{t("HotkeysPlayPause")}</Text>
<Text {...keyTextStyles}>{t("HotkeysSpaceKey")}</Text>
<Text {...keyTextStyles}>Space</Text>
</>
</Row>
<Row className="hotkeys_row">

View File

@ -127,14 +127,14 @@ export const CategoryFilterSubList = styled(DropDown)`
${({ theme }) =>
theme.interfaceDirection !== "rtl"
? css`
left: -5px;
left: -4px;
`
: css`
right: -5px;
right: -4px;
`};
top: 0;
width: 4px;
width: 6px;
height: 100%;
}
`;

View File

@ -31,6 +31,7 @@ import { ComboBox } from "@docspace/shared/components/combobox";
export const SortButton = styled.div`
.combo-button {
padding-inline-end: 3px;
background: ${(props) =>
props.theme.filterInput.sort.background} !important;
@ -67,6 +68,7 @@ export const SortButton = styled.div`
align-items: center;
justify-content: center;
margin: 0;
padding: 0 16px;
}
.combo-buttons_arrow-icon {

View File

@ -37,6 +37,7 @@ interface AccountsHotkeysProps {
selectUpper: () => void;
activateHotkeys: (e: KeyboardEvent) => void;
setSelected: (value: string) => void;
selectAll: () => void;
}
const useAccountsHotkeys = ({
@ -46,6 +47,7 @@ const useAccountsHotkeys = ({
selectUpper,
activateHotkeys,
setSelected,
selectAll,
}: AccountsHotkeysProps) => {
const [isEnabled, setIsEnabled] = useState(true);
@ -75,10 +77,10 @@ const useAccountsHotkeys = ({
useEffect(() => {
const throttledKeyDownEvent = throttle(onKeyDown, 300);
window.addEventListener("keydown", onKeyDown);
window.addEventListener("keydown", throttledKeyDownEvent);
return () => {
window.removeEventListener("keypress", throttledKeyDownEvent);
window.removeEventListener("keydown", throttledKeyDownEvent);
};
}, [onKeyDown]);
@ -107,6 +109,9 @@ const useAccountsHotkeys = ({
hotkeysFilter,
);
// Select all accounts
useHotkeys("shift+a, ctrl+a", selectAll, hotkeysFilter);
// Deselect all accounts
useHotkeys("shift+n, ESC", () => setSelected("none"), hotkeysFilter);
};

View File

@ -56,6 +56,7 @@ const SectionBodyContent = (props) => {
setHotkeyCaretStart,
setHotkeyCaret,
setSelected,
selectAll,
} = props;
const location = useLocation();
@ -68,6 +69,7 @@ const SectionBodyContent = (props) => {
selectUpper,
activateHotkeys,
setSelected,
selectAll,
});
useEffect(() => {
@ -143,6 +145,7 @@ export default inject(({ peopleStore }) => {
setBufferSelection: setPeopleBufferSelection,
selectUser,
setSelected,
selectAll,
} = peopleStore.selectionStore;
const {
@ -180,6 +183,7 @@ export default inject(({ peopleStore }) => {
setHotkeyCaretStart,
setHotkeyCaret,
setSelected,
selectAll,
};
})(
withTranslation(["People", "Common", "PeopleTranslations"])(

View File

@ -126,7 +126,7 @@ const StyledSimpleFilesRow = styled(Row)`
!props.isThirdPartyFolder &&
(props.checked || props.isActive) &&
props.canDrag &&
`url(${CursorPalmReactSvgUrl}), auto`};
`url(${CursorPalmReactSvgUrl}) 8 0, auto`};
${(props) =>
props.inProgress &&
css`

View File

@ -148,7 +148,7 @@ const StyledTableRow = styled(TableRow)`
!props.isThirdPartyFolder &&
(props.checked || props.isActive) &&
props.canDrag &&
`url(${CursorPalmSvgUrl}), auto !important`};
`url(${CursorPalmSvgUrl}) 8 0, auto !important`};
${(props) =>
props.inProgress &&
@ -438,24 +438,17 @@ const StyledQuickButtonsContainer = styled.div`
}
.badge {
${(props) =>
props.theme.interfaceDirection === "rtl"
? css`
margin-left: 14px;
`
: css`
margin-right: 14px;
`}
padding: 12px 7px;
}
.badge:last-child {
${(props) =>
props.theme.interfaceDirection === "rtl"
? css`
margin-left: 10px;
margin-left: 3px;
`
: css`
margin-right: 10px;
margin-right: 3px;
`}
}

View File

@ -94,6 +94,8 @@ export const HeaderContainer = styled.div`
}
.arrow-button {
flex-shrink: 0;
${(props) =>
props.theme.interfaceDirection === "rtl"
? css`

View File

@ -107,7 +107,7 @@ const ImportCompleteStep = ({
setIsSaving(true);
setTimeout(() => {
setIsSaving(false);
navigate(-1);
navigate("/portal-settings/data-import/migration");
}, 1000);
};

View File

@ -89,6 +89,8 @@ const ErrorBlock = styled.div`
}
`;
const FAILS_TRIES = 1;
const SelectFileStep = ({
t,
onNextStep,
@ -117,9 +119,10 @@ const SelectFileStep = ({
const uploadInterval = useRef(null);
const navigate = useNavigate();
const [failTries, setFailsTries] = useState(FAILS_TRIES);
const goBack = () => {
cancelMigration();
setTimeout(() => navigate(-1), 100);
navigate("/portal-settings/data-import/migration");
};
const checkMigrationStatusAndUpdate = async () => {
@ -187,7 +190,6 @@ const SelectFileStep = ({
};
const onUploadFile = async (file) => {
setProgress(0);
setIsVisible(true);
try {
if (file.length) {
@ -195,23 +197,18 @@ const SelectFileStep = ({
} else {
await singleFileUploading(file, setProgress, isAbort);
}
if (isAbort.current) return;
await initMigrationName(searchParams.get("service"));
uploadInterval.current = setInterval(async () => {
try {
const res = await getMigrationStatus();
setProgress(res?.progress);
if (res.progress > 10) {
setIsVisible(false);
} else {
setIsVisible(true);
}
if (res.error || res.parseResult.failedArchives.length > 0) {
setShowErrorText(true);
} else {
setShowErrorText(false);
if (!res && failTries) {
setFailsTries((tries) => tries - 1);
return;
}
if (!res || res.parseResult.failedArchives.length > 0 || res.error) {
@ -219,12 +216,14 @@ const SelectFileStep = ({
setIsFileError(true);
setIsFileLoading(false);
clearInterval(uploadInterval.current);
} else if (res.isCompleted || res.parseResult.progress === 100) {
setShowErrorText(true);
return;
}
if (res.isCompleted || res.parseResult.progress === 100) {
clearInterval(uploadInterval.current);
setIsFileLoading(false);
setIsVisible(false);
setProgress(100);
if (
res.parseResult.users.length +
res.parseResult.existUsers.length +
@ -239,12 +238,23 @@ const SelectFileStep = ({
cancelMigration();
}
}
setProgress(res?.progress);
if (res.progress > 10) {
setIsVisible(false);
} else {
setIsVisible(true);
}
setShowErrorText(false);
} catch (error) {
toastr.error(error || t("Common:SomethingWentWrong"));
setIsFileError(true);
setIsFileLoading(false);
setIsError(true);
clearInterval(uploadInterval.current);
} finally {
isAbort.current = false;
}
}, 1000);
} catch (error) {
@ -259,6 +269,7 @@ const SelectFileStep = ({
setIsFileError(false);
setShowReminder(false);
setIsFileLoading(true);
setFailsTries(FAILS_TRIES);
try {
onUploadFile(file);
} catch (error) {
@ -286,7 +297,6 @@ const SelectFileStep = ({
});
} catch (error) {
toastr.error(error);
console.log(error);
}
};

View File

@ -32,9 +32,9 @@ import { SearchInput } from "@docspace/shared/components/search-input";
import AccountsTable from "./AccountsTable";
import AccountsPaging from "../../../sub-components/AccountsPaging";
// import UsersInfoBlock from "./../../../sub-components/UsersInfoBlock";
import UsersInfoBlock from "./../../../sub-components/UsersInfoBlock";
// const LICENSE_LIMIT = 100;
import { parseQuota } from "../../../utils";
const SelectUsersStep = ({
t,
@ -46,11 +46,16 @@ const SelectUsersStep = ({
setResultUsers,
areCheckedUsersEmpty,
cancelMigration,
checkedUsers,
quotaCharacteristics,
}) => {
const [dataPortion, setDataPortion] = useState(withEmailUsers.slice(0, 25));
const [quota, setQuota] = useState({ used: 0, max: 0 });
const [isSaving, setIsSaving] = useState(false);
useEffect(() => {
setSearchValue("");
setQuota(parseQuota(quotaCharacteristics[1]));
}, []);
const handleDataChange = (leftBoundary, rightBoundary) => {
@ -79,9 +84,17 @@ const SelectUsersStep = ({
const goBack = () => {
cancelMigration();
setTimeout(onPrevStep, 100);
setIsSaving(true);
setTimeout(() => {
setIsSaving(false);
onPrevStep();
}, 1000);
};
const totalUsedUsers =
quota.used +
checkedUsers.withEmail.filter((user) => !user.isDuplicate).length;
return (
<>
<SaveCancelButtons
@ -92,15 +105,21 @@ const SelectUsersStep = ({
saveButtonLabel={t("Settings:NextStep")}
cancelButtonLabel={t("Common:Back")}
displaySettings={true}
saveButtonDisabled={areCheckedUsersEmpty}
saveButtonDisabled={
areCheckedUsersEmpty || (quota.max && totalUsedUsers > quota.max)
}
isSaving={isSaving}
/>
{/* <UsersInfoBlock
t={t}
selectedUsers={100}
totalUsers={withEmailUsers.length}
totalLicenceLimit={LICENSE_LIMIT}
/> */}
{quota.max && (
<UsersInfoBlock
t={t}
totalUsedUsers={totalUsedUsers}
selectedUsers={checkedUsers.withEmail.length}
totalUsers={withEmailUsers.length}
totalLicenceLimit={quota.max}
/>
)}
<SearchInput
id="search-withEmailUsers-input"
@ -131,14 +150,17 @@ const SelectUsersStep = ({
saveButtonLabel={t("Settings:NextStep")}
cancelButtonLabel={t("Common:Back")}
displaySettings={true}
saveButtonDisabled={areCheckedUsersEmpty}
saveButtonDisabled={
areCheckedUsersEmpty || (quota.max && totalUsedUsers > quota.max)
}
isSaving={isSaving}
/>
)}
</>
);
};
export default inject(({ importAccountsStore }) => {
export default inject(({ importAccountsStore, currentQuotaStore }) => {
const {
withEmailUsers,
searchValue,
@ -146,7 +168,9 @@ export default inject(({ importAccountsStore }) => {
areCheckedUsersEmpty,
setResultUsers,
cancelMigration,
checkedUsers,
} = importAccountsStore;
const { quotaCharacteristics } = currentQuotaStore;
return {
withEmailUsers,
@ -155,5 +179,7 @@ export default inject(({ importAccountsStore }) => {
areCheckedUsersEmpty,
setResultUsers,
cancelMigration,
checkedUsers,
quotaCharacteristics,
};
})(observer(SelectUsersStep));

View File

@ -51,11 +51,11 @@ const StyledTableContainer = styled(TableContainer)`
position: sticky;
z-index: 201;
width: calc(100% + 40px);
margin-top: 20px;
margin-top: -33px;
margin-left: -20px;
top: 0;
margin-bottom: -37.5px;
margin-bottom: -36px;
.table-container_group-menu {
border-image-slice: 0;

View File

@ -92,16 +92,14 @@ const SelectUsersTypeStep = ({
{filteredUsers.length > 0 && (
<>
{!checkedUsers.result.length > 0 && (
<StyledSearchInput
id="search-users-type-input"
placeholder={t("Common:Search")}
value={searchValue}
onChange={onChangeInput}
refreshTimeout={100}
onClearSearch={onClearSearchInput}
/>
)}
<StyledSearchInput
id="search-users-type-input"
placeholder={t("Common:Search")}
value={searchValue}
onChange={onChangeInput}
refreshTimeout={100}
onClearSearch={onClearSearchInput}
/>
<AccountsTable t={t} accountsData={filteredAccounts} />

View File

@ -28,7 +28,10 @@ import { useState, useEffect } from "react";
import { inject, observer } from "mobx-react";
import { Trans, withTranslation } from "react-i18next";
import { getStepTitle, getGoogleStepDescription } from "../../../utils";
import { tablet } from "@docspace/shared/utils/device";
import {
tablet,
isMobile as isMobileBreakpoint,
} from "@docspace/shared/utils/device";
import { isMobile } from "react-device-detect";
import useViewEffect from "SRC_DIR/Hooks/useViewEffect";
@ -215,7 +218,7 @@ const GoogleWorkspace = ({
return clearCheckedAccounts;
}, []);
if (isMobile)
if (isMobile || isMobileBreakpoint())
return (
<BreakpointWarning
isMobileUnavailableOnly

View File

@ -178,7 +178,7 @@ const UsersTableRow = ({
{isEmailOpen ? (
<EmailInputWrapper ref={emailInputRef}>
<EmailInput
placeholder={t("Settings:NoEmail")}
placeholder={t("EnterEmail")}
className="import-email-input"
value={tempEmail}
onChange={handleEmailChange}
@ -197,7 +197,7 @@ const UsersTableRow = ({
<span onClick={openEmail} className="user-email" ref={emailTextRef}>
<EditSvg />
<Text fontWeight={600} color="#A3A9AE" className="textOverflow">
{prevEmail !== "" ? prevEmail : t("EnterEmail")}
{prevEmail !== "" ? prevEmail : t("Settings:NoEmail")}
</Text>
</span>
)}

View File

@ -24,7 +24,7 @@
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
import { useState } from "react";
import { useState, useEffect } from "react";
import { inject, observer } from "mobx-react";
import { SaveCancelButtons } from "@docspace/shared/components/save-cancel-buttons";
@ -36,10 +36,10 @@ import { Text } from "@docspace/shared/components/text";
import { Wrapper } from "../StyledStepper";
// import UsersInfoBlock from "../../../sub-components/UsersInfoBlock";
import UsersInfoBlock from "../../../sub-components/UsersInfoBlock";
import { NoEmailUsersBlock } from "../../../sub-components/NoEmailUsersBlock";
// const LICENSE_LIMIT = 100;
import { parseQuota } from "../../../utils";
const AddEmailsStep = (props) => {
const {
@ -51,11 +51,15 @@ const AddEmailsStep = (props) => {
setSearchValue,
setResultUsers,
areCheckedUsersEmpty,
checkedUsers,
quotaCharacteristics,
withEmailUsers,
} = props;
const [dataPortion, setDataPortion] = useState(
users.withoutEmail.slice(0, 25),
);
const [quota, setQuota] = useState({ used: 0, max: 0 });
const handleDataChange = (leftBoundary, rightBoundary) => {
setDataPortion(users.withoutEmail.slice(leftBoundary, rightBoundary));
@ -80,6 +84,18 @@ const AddEmailsStep = (props) => {
incrementStep();
};
const numberOfSelectedUsers =
checkedUsers.withEmail.length + checkedUsers.withoutEmail.length;
useEffect(() => {
setQuota(parseQuota(quotaCharacteristics[1]));
}, []);
const totalUsedUsers =
quota.used +
checkedUsers.withEmail.filter((user) => !user.isDuplicate).length +
checkedUsers.withoutEmail.length;
return (
<Wrapper>
{users.withoutEmail.length > 0 && (
@ -100,15 +116,20 @@ const AddEmailsStep = (props) => {
cancelButtonLabel={t("Common:Back")}
showReminder
displaySettings
saveButtonDisabled={areCheckedUsersEmpty}
saveButtonDisabled={
areCheckedUsersEmpty || (quota.max && totalUsedUsers > quota.max)
}
/>
{/* <UsersInfoBlock
t={t}
selectedUsers={numberOfCheckedAccounts}
totalUsers={users.withoutEmail.length}
totalLicenceLimit={LICENSE_LIMIT}
/> */}
{quota.max && (
<UsersInfoBlock
t={t}
totalUsedUsers={totalUsedUsers}
selectedUsers={numberOfSelectedUsers}
totalUsers={withEmailUsers.length + users.withoutEmail.length}
totalLicenceLimit={quota.max}
/>
)}
<SearchInput
id="search-users-input"
@ -143,13 +164,15 @@ const AddEmailsStep = (props) => {
cancelButtonLabel={t("Common:Back")}
showReminder
displaySettings
saveButtonDisabled={areCheckedUsersEmpty}
saveButtonDisabled={
areCheckedUsersEmpty || (quota.max && totalUsedUsers > quota.max)
}
/>
</Wrapper>
);
};
export default inject(({ setup, importAccountsStore }) => {
export default inject(({ setup, importAccountsStore, currentQuotaStore }) => {
const { viewAs } = setup;
const {
searchValue,
@ -157,7 +180,10 @@ export default inject(({ setup, importAccountsStore }) => {
users,
setResultUsers,
areCheckedUsersEmpty,
checkedUsers,
withEmailUsers,
} = importAccountsStore;
const { quotaCharacteristics } = currentQuotaStore;
return {
viewAs,
@ -166,5 +192,8 @@ export default inject(({ setup, importAccountsStore }) => {
users,
setResultUsers,
areCheckedUsersEmpty,
checkedUsers,
quotaCharacteristics,
withEmailUsers,
};
})(observer(AddEmailsStep));

View File

@ -96,7 +96,7 @@ const ImportCompleteStep = ({
setIsSaving(true);
setTimeout(() => {
setIsSaving(false);
navigate(-1);
navigate("/portal-settings/data-import/migration");
}, 1000);
};

View File

@ -39,7 +39,6 @@ import { SaveCancelButtons } from "@docspace/shared/components/save-cancel-butto
import { Box } from "@docspace/shared/components/box";
import { Link } from "@docspace/shared/components/link";
import { toastr } from "@docspace/shared/components/toast";
// import { mockRes } from "./tempMock";
const Wrapper = styled.div`
max-width: 700px;
@ -101,6 +100,8 @@ const ErrorBlock = styled.div`
}
`;
const FAILS_TRIES = 1;
const SelectFileStep = ({
t,
incrementStep,
@ -125,9 +126,10 @@ const SelectFileStep = ({
const uploadInterval = useRef(null);
const navigate = useNavigate();
const [failTries, setFailsTries] = useState(FAILS_TRIES);
const goBack = () => {
cancelMigration();
setTimeout(() => navigate(-1), 100);
navigate("/portal-settings/data-import/migration");
};
const checkMigrationStatusAndUpdate = async () => {
@ -188,15 +190,41 @@ const SelectFileStep = ({
};
const onUploadFile = async (file) => {
setProgress(0);
setIsVisible(true);
try {
if (Array.isArray(file)) throw new Error(t("Common:SomethingWentWrong"));
await singleFileUploading(file, setProgress, isAbort);
if (isAbort.current) return;
await initMigrationName(searchParams.get("service"));
uploadInterval.current = setInterval(async () => {
try {
const res = await getMigrationStatus();
if (!res && failTries) {
setFailsTries((tries) => tries - 1);
return;
}
if (!res || res.parseResult.failedArchives.length > 0 || res.error) {
clearInterval(uploadInterval.current);
setIsFileError(true);
setIsFileLoading(false);
toastr.error(res.error);
return;
}
if (res.isCompleted || res.parseResult.progress === 100) {
clearInterval(uploadInterval.current);
setIsFileLoading(false);
setIsVisible(false);
setUsers(res.parseResult);
setIsSaveDisabled(true);
}
setProgress(res.progress);
if (res.progress > 10) {
@ -204,26 +232,14 @@ const SelectFileStep = ({
} else {
setIsVisible(true);
}
if (!res || res.parseResult.failedArchives.length > 0 || res.error) {
toastr.error(res.error);
setIsFileError(true);
setIsFileLoading(false);
clearInterval(uploadInterval.current);
} else if (res.isCompleted || res.parseResult.progress === 100) {
clearInterval(uploadInterval.current);
setIsFileLoading(false);
setIsVisible(false);
setProgress(100);
setUsers(res.parseResult);
setIsSaveDisabled(true);
}
} catch (error) {
toastr.error(error || error.message);
setIsFileError(true);
setIsFileLoading(false);
setIsError(true);
clearInterval(uploadInterval.current);
} finally {
isAbort.current = false;
}
}, 1000);
} catch (error) {
@ -238,6 +254,7 @@ const SelectFileStep = ({
setIsFileError(false);
setIsSaveDisabled(false);
setIsFileLoading(true);
setFailsTries(FAILS_TRIES);
try {
onUploadFile(file);
} catch (error) {
@ -264,7 +281,6 @@ const SelectFileStep = ({
window.URL.revokeObjectURL(url);
});
} catch (error) {
console.log(error);
toastr.error(error);
}
};

View File

@ -34,10 +34,10 @@ import { Text } from "@docspace/shared/components/text";
import AccountsTable from "./AccountsTable";
import AccountsPaging from "../../../sub-components/AccountsPaging";
// import UsersInfoBlock from "../../../sub-components/UsersInfoBlock";
import UsersInfoBlock from "../../../sub-components/UsersInfoBlock";
import { Wrapper } from "../StyledStepper";
// const LICENSE_LIMIT = 100;
import { parseQuota } from "../../../utils";
const SelectUsersStep = (props) => {
const {
@ -48,12 +48,18 @@ const SelectUsersStep = (props) => {
searchValue,
setSearchValue,
cancelMigration,
checkedUsers,
quotaCharacteristics,
users,
} = props;
const [dataPortion, setDataPortion] = useState(withEmailUsers.slice(0, 25));
const [quota, setQuota] = useState({ used: 0, max: 0 });
const [isSaving, setIsSaving] = useState(false);
useEffect(() => {
setSearchValue("");
setQuota(parseQuota(quotaCharacteristics[1]));
}, []);
const handleDataChange = (leftBoundary, rightBoundary) => {
@ -77,9 +83,21 @@ const SelectUsersStep = (props) => {
const goBack = () => {
cancelMigration();
setTimeout(decrementStep, 100);
setIsSaving(true);
setTimeout(() => {
setIsSaving(false);
decrementStep();
}, 1000);
};
const numberOfSelectedUsers =
checkedUsers.withEmail.length + checkedUsers.withoutEmail.length;
const totalUsedUsers =
quota.used +
checkedUsers.withEmail.filter((user) => !user.isDuplicate).length +
checkedUsers.withoutEmail.length;
return (
<Wrapper>
{withEmailUsers.length > 0 ? (
@ -92,14 +110,18 @@ const SelectUsersStep = (props) => {
cancelButtonLabel={t("Common:Back")}
showReminder
displaySettings
isSaving={isSaving}
/>
{/* <UsersInfoBlock
t={t}
selectedUsers={numberOfCheckedAccounts}
totalUsers={users.length}
totalLicenceLimit={LICENSE_LIMIT}
/> */}
{quota.max && (
<UsersInfoBlock
t={t}
totalUsedUsers={totalUsedUsers}
selectedUsers={numberOfSelectedUsers}
totalUsers={withEmailUsers.length + users.withoutEmail.length}
totalLicenceLimit={quota.max}
/>
)}
<SearchInput
id="search-users-input"
@ -135,20 +157,23 @@ const SelectUsersStep = (props) => {
cancelButtonLabel={t("Common:Back")}
showReminder
displaySettings
isSaving={isSaving}
/>
)}
</Wrapper>
);
};
export default inject(({ importAccountsStore }) => {
export default inject(({ importAccountsStore, currentQuotaStore }) => {
const {
users,
withEmailUsers,
searchValue,
setSearchValue,
cancelMigration,
checkedUsers,
} = importAccountsStore;
const { quotaCharacteristics } = currentQuotaStore;
return {
users,
@ -156,5 +181,7 @@ export default inject(({ importAccountsStore }) => {
searchValue,
setSearchValue,
cancelMigration,
checkedUsers,
quotaCharacteristics,
};
})(observer(SelectUsersStep));

View File

@ -49,11 +49,11 @@ const UserSelectTableContainer = styled(StyledTableContainer)`
position: sticky;
z-index: 201;
width: calc(100% + 40px);
margin-top: 20px;
margin-top: -33px;
margin-left: -20px;
top: 0;
margin-bottom: -37.5px;
margin-bottom: -36px;
.table-container_group-menu {
border-image-slice: 0;

View File

@ -89,17 +89,15 @@ const SelectUsersTypeStep = (props) => {
{filteredUsers.length > 0 && (
<>
{!checkedUsers.result.length > 0 && (
<SearchInput
id="search-checkedUsers-type-input"
className="importUsersSearch"
placeholder={t("Common:Search")}
value={searchValue}
onChange={onChangeInput}
refreshTimeout={100}
onClearSearch={onClearSearchInput}
/>
)}
<SearchInput
id="search-checkedUsers-type-input"
className="importUsersSearch"
placeholder={t("Common:Search")}
value={searchValue}
onChange={onChangeInput}
refreshTimeout={100}
onClearSearch={onClearSearchInput}
/>
<AccountsTable t={t} accountsData={filteredAccounts} />

View File

@ -27,6 +27,7 @@
import { useState, useEffect } from "react";
import { inject, observer } from "mobx-react";
import { withTranslation } from "react-i18next";
import { isMobile as isMobileBreakpoint } from "@docspace/shared/utils/device";
import { isMobile } from "react-device-detect";
import { useNavigate } from "react-router-dom";
import useViewEffect from "SRC_DIR/Hooks/useViewEffect";
@ -131,7 +132,7 @@ const NextcloudWorkspace = (props) => {
return clearCheckedAccounts;
}, []);
if (isMobile)
if (isMobile || isMobileBreakpoint())
return (
<BreakpointWarning
isMobileUnavailableOnly

View File

@ -107,7 +107,7 @@ const ImportCompleteStep = ({
setIsSaving(true);
setTimeout(() => {
setIsSaving(false);
navigate(-1);
navigate("/portal-settings/data-import/migration")
}, 1000);
};

View File

@ -89,6 +89,8 @@ const ErrorBlock = styled.div`
}
`;
const FAILS_TRIES = 1;
const SelectFileStep = ({
t,
onNextStep,
@ -115,9 +117,10 @@ const SelectFileStep = ({
const uploadInterval = useRef(null);
const navigate = useNavigate();
const [failTries, setFailsTries] = useState(FAILS_TRIES);
const goBack = () => {
cancelMigration();
setTimeout(() => navigate(-1), 100);
navigate("/portal-settings/data-import/migration");
};
const checkMigrationStatusAndUpdate = async () => {
@ -178,16 +181,45 @@ const SelectFileStep = ({
};
const onUploadFile = async (file) => {
setProgress(0);
setIsVisible(true);
try {
if (Array.isArray(file)) {
setShowErrorText(true);
throw new Error(t("Common:SomethingWentWrong"));
}
await singleFileUploading(file, setProgress, isAbort);
if (isAbort.current) return;
await initMigrationName(searchParams.get("service"));
uploadInterval.current = setInterval(async () => {
try {
const res = await getMigrationStatus();
setProgress(res?.progress);
if (!res && failTries) {
setFailsTries((tries) => tries - 1);
return;
}
if (!res || res.parseResult.failedArchives.length > 0 || res.error) {
toastr.error(res.error || t("Common:SomethingWentWrong"));
setIsFileError(true);
setIsFileLoading(false);
clearInterval(uploadInterval.current);
return;
}
if (res.isCompleted || res.parseResult.progress === 100) {
clearInterval(uploadInterval.current);
setIsFileLoading(false);
setIsVisible(false);
setUsers(res.parseResult);
setShowReminder(true);
}
setProgress(res.progress);
if (res.progress > 10) {
setIsVisible(false);
@ -200,26 +232,14 @@ const SelectFileStep = ({
} else {
setShowErrorText(false);
}
if (!res || res.parseResult.failedArchives.length > 0 || res.error) {
toastr.error(res.error || t("Common:SomethingWentWrong"));
setIsFileError(true);
setIsFileLoading(false);
clearInterval(uploadInterval.current);
} else if (res.isCompleted || res.parseResult.progress === 100) {
clearInterval(uploadInterval.current);
setIsFileLoading(false);
setIsVisible(false);
setProgress(100);
setUsers(res.parseResult);
setShowReminder(true);
}
} catch (error) {
toastr.error(error || t("Common:SomethingWentWrong"));
setIsFileError(true);
setIsFileLoading(false);
setIsError(true);
clearInterval(uploadInterval.current);
} finally {
isAbort.current = false;
}
}, 1000);
} catch (error) {
@ -234,6 +254,7 @@ const SelectFileStep = ({
setIsFileError(false);
setShowReminder(false);
setIsFileLoading(true);
setFailsTries(FAILS_TRIES);
try {
onUploadFile(file);
} catch (error) {
@ -261,7 +282,6 @@ const SelectFileStep = ({
});
} catch (error) {
toastr.error(error);
console.log(error);
}
};

View File

@ -32,9 +32,9 @@ import { SearchInput } from "@docspace/shared/components/search-input";
import AccountsTable from "./AccountsTable";
import AccountsPaging from "../../../sub-components/AccountsPaging";
// import UsersInfoBlock from "./../../../sub-components/UsersInfoBlock";
import UsersInfoBlock from "./../../../sub-components/UsersInfoBlock";
// const LICENSE_LIMIT = 100;
import { parseQuota } from "../../../utils";
const SelectUsersStep = ({
t,
@ -46,11 +46,16 @@ const SelectUsersStep = ({
searchValue,
setSearchValue,
cancelMigration,
checkedUsers,
quotaCharacteristics,
}) => {
const [dataPortion, setDataPortion] = useState(withEmailUsers.slice(0, 25));
const [quota, setQuota] = useState({ used: 0, max: 0 });
const [isSaving, setIsSaving] = useState(false);
useEffect(() => {
setSearchValue("");
setQuota(parseQuota(quotaCharacteristics[1]));
}, []);
const handleDataChange = (leftBoundary, rightBoundary) => {
@ -79,9 +84,17 @@ const SelectUsersStep = ({
const goBack = () => {
cancelMigration();
setTimeout(onPrevStep, 100);
setIsSaving(true);
setTimeout(() => {
setIsSaving(false);
onPrevStep();
}, 1000);
};
const totalUsedUsers =
quota.used +
checkedUsers.withEmail.filter((user) => !user.isDuplicate).length;
return (
<>
<SaveCancelButtons
@ -92,15 +105,21 @@ const SelectUsersStep = ({
saveButtonLabel={t("Settings:NextStep")}
cancelButtonLabel={t("Common:Back")}
displaySettings
saveButtonDisabled={areCheckedUsersEmpty}
saveButtonDisabled={
areCheckedUsersEmpty || (quota.max && totalUsedUsers > quota.max)
}
isSaving={isSaving}
/>
{/* <UsersInfoBlock
t={t}
selectedUsers={numberOfCheckedAccounts}
totalUsers={users.length}
totalLicenceLimit={LICENSE_LIMIT}
/> */}
{quota.max && (
<UsersInfoBlock
t={t}
totalUsedUsers={totalUsedUsers}
selectedUsers={checkedUsers.withEmail.length}
totalUsers={withEmailUsers.length}
totalLicenceLimit={quota.max}
/>
)}
<SearchInput
id="search-users-input"
@ -131,14 +150,17 @@ const SelectUsersStep = ({
saveButtonLabel={t("Settings:NextStep")}
cancelButtonLabel={t("Common:Back")}
displaySettings
saveButtonDisabled={areCheckedUsersEmpty}
saveButtonDisabled={
areCheckedUsersEmpty || (quota.max && totalUsedUsers > quota.max)
}
isSaving={isSaving}
/>
)}
</>
);
};
export default inject(({ importAccountsStore }) => {
export default inject(({ importAccountsStore, currentQuotaStore }) => {
const {
withEmailUsers,
searchValue,
@ -146,7 +168,9 @@ export default inject(({ importAccountsStore }) => {
setResultUsers,
areCheckedUsersEmpty,
cancelMigration,
checkedUsers,
} = importAccountsStore;
const { quotaCharacteristics } = currentQuotaStore;
return {
setResultUsers,
@ -155,5 +179,7 @@ export default inject(({ importAccountsStore }) => {
searchValue,
setSearchValue,
cancelMigration,
checkedUsers,
quotaCharacteristics,
};
})(observer(SelectUsersStep));

View File

@ -51,11 +51,11 @@ const StyledTableContainer = styled(TableContainer)`
position: sticky;
z-index: 201;
width: calc(100% + 40px);
margin-top: 20px;
margin-top: -33px;
margin-left: -20px;
top: 0;
margin-bottom: -37.5px;
margin-bottom: -36px;
.table-container_group-menu {
border-image-slice: 0;

View File

@ -86,17 +86,15 @@ const SelectUsersTypeStep = ({
{filteredUsers.length > 0 && (
<>
{!checkedUsers.result.length > 0 && (
<SearchInput
id="search-users-type-input"
placeholder={t("Common:Search")}
style={{ marginTop: "20px" }}
value={searchValue}
onChange={onChangeInput}
refreshTimeout={100}
onClearSearch={onClearSearchInput}
/>
)}
<SearchInput
id="search-users-type-input"
placeholder={t("Common:Search")}
style={{ marginTop: "20px" }}
value={searchValue}
onChange={onChangeInput}
refreshTimeout={100}
onClearSearch={onClearSearchInput}
/>
<AccountsTable t={t} accountsData={filteredAccounts} />

View File

@ -28,7 +28,10 @@ import { useState, useEffect } from "react";
import { inject, observer } from "mobx-react";
import { Trans, withTranslation } from "react-i18next";
import { getStepTitle, getWorkspaceStepDescription } from "../../../utils";
import { tablet } from "@docspace/shared/utils/device";
import {
tablet,
isMobile as isMobileBreakpoint,
} from "@docspace/shared/utils/device";
import { isMobile } from "react-device-detect";
import useViewEffect from "SRC_DIR/Hooks/useViewEffect";
import styled, { css } from "styled-components";
@ -212,7 +215,7 @@ const OnlyofficeWorkspace = ({
return clearCheckedAccounts;
}, []);
if (isMobile) {
if (isMobile || isMobileBreakpoint()) {
return (
<BreakpointWarning
isMobileUnavailableOnly

View File

@ -87,6 +87,7 @@ const UsersInfoBlock = ({
t,
selectedUsers,
totalUsers,
totalUsedUsers,
totalLicenceLimit,
}) => {
return (
@ -98,7 +99,7 @@ const UsersInfoBlock = ({
)}
<UsersInfoWrapper
selectedUsers={selectedUsers}
selectedUsers={totalUsedUsers}
totalLicenceLimit={totalLicenceLimit}
>
<Text className="selected-users-count" truncate>
@ -107,7 +108,7 @@ const UsersInfoBlock = ({
<Text as="div" className="selected-admins-count" truncate>
{t("Settings:LicenseLimitCounter")}
<Text as="span">
{selectedUsers}/{totalLicenceLimit}
{totalUsedUsers}/{totalLicenceLimit}
</Text>
</Text>
<HelpButton

View File

@ -0,0 +1,50 @@
// (c) Copyright Ascensio System SIA 2009-2024
//
// This program is a free software product.
// You can redistribute it and/or modify it under the terms
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
// any third-party rights.
//
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
//
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
//
// The interactive user interfaces in modified source and object code versions of the Program must
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
//
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
// trademark law for use of our trademarks.
//
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
import { PortalFeaturesLimitations } from "@docspace/shared/enums";
import { getConvertedSize } from "@docspace/shared/utils/common";
export const parseQuota = (quotaCharacteristics) => {
const maxValue = quotaCharacteristics.value;
const usedValue = quotaCharacteristics.used.value;
if (maxValue === PortalFeaturesLimitations.Unavailable) return;
const isExistsMaxValue = maxValue !== PortalFeaturesLimitations.Limitless;
const resultingMaxValue =
quotaCharacteristics.type === "size" && isExistsMaxValue
? getConvertedSize(t, maxValue)
: isExistsMaxValue
? maxValue
: null;
const resultingUsedValue =
quotaCharacteristics.type === "size"
? getConvertedSize(t, usedValue)
: usedValue;
return { used: resultingUsedValue, max: resultingMaxValue };
};

View File

@ -880,6 +880,10 @@ class ContextOptionsStore {
toastr.error(t("Files:DocumentEdited"));
};
onShowWaitOperationToast = (t) => {
toastr.warning(t("Files:WaitOperation"));
};
onClickMute = (e, item, t) => {
const data = (e.currentTarget && e.currentTarget.dataset) || e;
const { action } = data;
@ -1062,6 +1066,8 @@ class ContextOptionsStore {
const showSeparator0 =
(hasInfoPanel || !isMedia) && !this.publicRoomStore.isPublicRoom; // || !emailSendIsDisabled;
const { isGroupMenuBlocked } = this.filesActionsStore;
const separator0 = showSeparator0
? {
key: "separator0",
@ -1594,7 +1600,11 @@ class ContextOptionsStore {
: t("Common:Delete"),
icon: TrashReactSvgUrl,
onClick: () =>
isEditing ? this.onShowEditingToast(t) : this.onClickDelete(item, t),
isEditing
? this.onShowEditingToast(t)
: isGroupMenuBlocked
? this.onShowWaitOperationToast(t)
: this.onClickDelete(item, t),
disabled: false,
},
{

View File

@ -102,7 +102,9 @@ class ImportAccountsStore {
get filteredUsers() {
return this.users.result.filter(
(user) =>
!this.users.existing.some((existingUser) => existingUser.key === user.key),
!this.users.existing.some(
(existingUser) => existingUser.key === user.key,
),
);
}
@ -290,8 +292,6 @@ class ImportAccountsStore {
}
} catch (e) {
console.error(e);
} finally {
isAbort.current = false;
}
};
@ -331,8 +331,6 @@ class ImportAccountsStore {
}
} catch (e) {
console.error(e);
} finally {
isAbort.current = false;
}
};

View File

@ -141,6 +141,8 @@ const useEditorEvents = ({
const onSDKAppReady = React.useCallback(() => {
docEditor = window.DocEditor.instances[EDITOR_ID];
frameCallCommand("setIsLoaded");
if (errorMessage || isSkipError)
return docEditor?.showMessage?.(errorMessage || t("Common:InvalidLink"));
@ -167,8 +169,6 @@ const useEditorEvents = ({
// console.log("onDocumentReady", { docEditor });
setDocumentReady(true);
frameCallCommand("setIsLoaded");
if (config?.errorMessage) docEditor?.showMessage?.(config.errorMessage);
// if (config?.file?.canShare) {

View File

@ -54,6 +54,7 @@ export const LoginFormWrapper = styled.div<{ bgPattern: string }>`
@media ${mobile} {
background-image: none;
height: 0;
}
}
@ -82,8 +83,7 @@ export const LoginFormWrapper = styled.div<{ bgPattern: string }>`
top: 28px;
@media ${mobile} {
top: 7px;
right: 8px;
display: none;
}
}
.invitation-info-container {

View File

@ -34,6 +34,7 @@ import { mobile } from "@docspace/shared/utils/device";
import { getLogoUrl } from "@docspace/shared/utils/common";
import { Base, Dark } from "@docspace/shared/themes";
import { ThemeKeys, WhiteLabelLogoType } from "@docspace/shared/enums";
import LanguageComboboxWrapper from "./LanguageCombobox";
const StyledSimpleNav = styled.div`
display: none;
@ -50,6 +51,12 @@ const StyledSimpleNav = styled.div`
@media ${mobile} {
display: flex;
.language-combo-box {
position: absolute;
top: 7px;
right: 8px;
}
}
`;
@ -66,6 +73,7 @@ const SimpleNav = ({ systemTheme }: SimpleNavProps) => {
return (
<StyledSimpleNav id="login-header" theme={isDark ? Dark : Base}>
<img src={logoUrl} alt="logo-url" />
<LanguageComboboxWrapper />
</StyledSimpleNav>
);
};

View File

@ -37,7 +37,6 @@ import { Row } from "./sub-components/Row";
import { DropDownProps } from "./DropDown.types";
import { DEFAULT_PARENT_HEIGHT } from "./DropDown.constants";
import { Backdrop } from "../backdrop";
const DropDown = ({
directionY = "bottom",
@ -68,11 +67,6 @@ const DropDown = ({
manualY,
className,
style,
withoutBackground,
withBackground,
withBackdrop,
isAside,
withBlur,
}: DropDownProps) => {
const theme = useTheme();
@ -381,23 +375,19 @@ const DropDown = ({
? { height: `${calculatedHeight}px` }
: {};
const toggleDropDown = () => {
clickOutsideAction?.({} as Event, !open);
};
return (
<>
{withBackdrop ? (
{/* {withBackdrop ? ( //TODO: consider a solution when there will be a structure of correct z index for components
<Backdrop
visible={open || false}
zIndex={310}
zIndex={199} // TODO: zIndex should almost be equal to the dropdown index
onClick={toggleDropDown}
withoutBlur={!withBlur}
isAside={isAside}
withBackground={withBackground}
withoutBackground={withoutBackground}
/>
) : null}
) : null} */}
<StyledDropdown
ref={dropDownRef}
style={style}

View File

@ -33,11 +33,23 @@ import { DropDownProps } from "./DropDown.types";
import { EnhancedComponent } from "./DropDown";
const DropDown = (props: DropDownProps) => {
const { eventTypes, forceCloseClickOutside } = props;
const {
clickOutsideAction,
open,
withBackdrop = true,
// const toggleDropDown = () => {
// clickOutsideAction?.({} as Event, !open);
// };
withBlur = false,
isAside,
withBackground,
eventTypes,
forceCloseClickOutside,
withoutBackground,
} = props;
const toggleDropDown = () => {
clickOutsideAction?.({} as Event, !open);
};
const eventTypesProp = forceCloseClickOutside
? {}
@ -49,7 +61,7 @@ const DropDown = (props: DropDownProps) => {
return (
<>
{/* {withBackdrop ? (
{withBackdrop ? (
<Backdrop
visible={open || false}
zIndex={199}
@ -59,12 +71,11 @@ const DropDown = (props: DropDownProps) => {
withBackground={withBackground}
withoutBackground={withoutBackground}
/>
) : null} */}
) : null}
<EnhancedComponent {...eventTypesProp} {...props} />
</>
);
};
DropDown.defaultProps = {
withBackdrop: true,
showDisabledItems: false,

View File

@ -61,6 +61,8 @@ const SectionBody = React.memo(
}>(null);
const location = useLocation();
const [isOpen, setIsOpen] = React.useState(false);
const onContextMenu = React.useCallback(
(e: MouseEvent | React.MouseEvent<Element, MouseEvent>) => {
const bodyElem = document.getElementsByClassName(
@ -80,11 +82,20 @@ const SectionBody = React.memo(
e.stopPropagation();
e.preventDefault();
if (cmRef.current) cmRef.current.toggle(e);
// if (cmRef.current) cmRef.current.toggle(e);
if (cmRef.current) {
if (!isOpen) cmRef?.current?.show(e);
else cmRef?.current?.hide(e);
setIsOpen(!isOpen);
}
},
[getContextModel],
[getContextModel, isOpen],
);
const onHide = () => {
setIsOpen(false);
};
const focusSectionBody = React.useCallback(() => {
if (focusRef.current) focusRef.current.focus({ preventScroll: true });
}, []);
@ -137,6 +148,7 @@ const SectionBody = React.memo(
const contextBlock = (
<ContextMenu
ref={cmRef}
onHide={onHide}
getContextModel={getContextModel}
withBackdrop
model={[]}

View File

@ -1,9 +1,9 @@
<svg width="22" height="26" viewBox="0 0 22 26" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<rect x="1" width="21" height="26" fill="url(#pattern0)"/>
<rect x="1" width="21" height="26" fill="url(#pattern0_494_3779)"/>
<defs>
<pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
<use xlink:href="#image0" transform="scale(0.047619 0.0384615)"/>
<pattern id="pattern0_494_3779" patternContentUnits="objectBoundingBox" width="1" height="1">
<use xlink:href="#image0_494_3779" transform="scale(0.047619 0.0384615)"/>
</pattern>
<image id="image0" width="21" height="26" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAaCAYAAABYQRdDAAACpklEQVRIibVVz2sTURD+dtMqCilC40H0IvYieNGLLQVJQhMLRaSKtQiepSDiuVjBg+DBP6Ap6EHFnwgiFUlbQy+2lW6kKgUv0RYKFgyEJERj9sfIbN5bnsl22SoODG92M/n2++a9eaMREYJM07psADpRRQtMFKZpGsCgi0uGu0rn3xgIiNokrD8+vMDPQJTUXD9SHX5fS6TOZ4lIm5977b17Oz/XR1RBPv/RZU9UiWzJlr+UTI+q72ZyM49TaEoHA6mx4ziIRPZALYcrWbUm/ajqnuSWmGzbJtM03fjylXGSpWizvwUtl8tUKpWoWWdExD64pofZ0RCm+4BW/xV0h8pWYVqV4Cr7MEo45xCAvQB2QTlSuiLB2WZZOL8hYpVp1IwPnMs+ePT0xDbAVGOGOwF0ukw1rYvEWUwm06NJNVOeURlblgXbtv1AOwRgRNCNkvpn9cB7+hzHdQZkZ3D5HIsddIBqP4AygCKA7+5FkUiN5CTA+MREaECORR07hOteTUfODj1LD12Y5fjM6ZOhAQUoGwe22DTZUejs3n/sq2F8kA3kdU+9XqdareZ1ULFYpM3NTdrY2KCX01k60NP7BcBxAIcBxKAcHfvm9au3rt24HZohx4vvVjCY6F0QDC3JVII65NTuL79fXVs2VkIB8pq58/CbrtffCEBTrFAvWW0yc+/S4KmLgZLX19epUCjQ8xfTUnofgCMA9gHYjZbOIcnWMD4FMuTVyK9K6ZboqIbYrD/bcWxsrM61fZXNBQKyt0hvCPntoLK2U3efrAUB8gdNy9amMpOfBVhD3Si/waXHB0ZmxZDb0vvjw0sAjgLoAdAtet+9UNwZ1TZjmn3MlwSPAl75vvQzZvhD3Jk/5e77TlNRmzoLEclbTU7OY/m/POn/xQD8BpP9ctoIZHyxAAAAAElFTkSuQmCC"/>
<image id="image0_494_3779" width="21" height="26" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAaCAYAAABYQRdDAAACpklEQVRIibVVz2sTURD+dtMqCilC40H0IvYieNGLLQVJQhMLRaSKtQiepSDiuVjBg+DBP6Ap6EHFnwgiFUlbQy+2lW6kKgUv0RYKFgyEJERj9sfIbN5bnsl22SoODG92M/n2++a9eaMREYJM07psADpRRQtMFKZpGsCgi0uGu0rn3xgIiNokrD8+vMDPQJTUXD9SHX5fS6TOZ4lIm5977b17Oz/XR1RBPv/RZU9UiWzJlr+UTI+q72ZyM49TaEoHA6mx4ziIRPZALYcrWbUm/ajqnuSWmGzbJtM03fjylXGSpWizvwUtl8tUKpWoWWdExD64pofZ0RCm+4BW/xV0h8pWYVqV4Cr7MEo45xCAvQB2QTlSuiLB2WZZOL8hYpVp1IwPnMs+ePT0xDbAVGOGOwF0ukw1rYvEWUwm06NJNVOeURlblgXbtv1AOwRgRNCNkvpn9cB7+hzHdQZkZ3D5HIsddIBqP4AygCKA7+5FkUiN5CTA+MREaECORR07hOteTUfODj1LD12Y5fjM6ZOhAQUoGwe22DTZUejs3n/sq2F8kA3kdU+9XqdareZ1ULFYpM3NTdrY2KCX01k60NP7BcBxAIcBxKAcHfvm9au3rt24HZohx4vvVjCY6F0QDC3JVII65NTuL79fXVs2VkIB8pq58/CbrtffCEBTrFAvWW0yc+/S4KmLgZLX19epUCjQ8xfTUnofgCMA9gHYjZbOIcnWMD4FMuTVyK9K6ZboqIbYrD/bcWxsrM61fZXNBQKyt0hvCPntoLK2U3efrAUB8gdNy9amMpOfBVhD3Si/waXHB0ZmxZDb0vvjw0sAjgLoAdAtet+9UNwZ1TZjmn3MlwSPAl75vvQzZvhD3Jk/5e77TlNRmzoLEclbTU7OY/m/POn/xQD8BpP9ctoIZHyxAAAAAElFTkSuQmCC"/>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB