Browse Source

Improve checkbox for screenreaders 2 (#2980)

* Improve checkbox for screenreaders

* Remove redundant aria attributes

Co-authored-by: Antoine du Hamel <duhamelantoine1995@gmail.com>

* Update French locale

* Fix order in English locale

* Rename classname

* Fix checkbox a11y for `GridLi`

* Remove old locale strings

* Correctly scope class name

Co-authored-by: Murderlon <merlijn@soverin.net>
Co-authored-by: Antoine du Hamel <duhamelantoine1995@gmail.com>
Artur Paikin 3 years ago
parent
commit
e78722ec3a
45 changed files with 104 additions and 139 deletions
  1. 4 2
      packages/@uppy/core/src/_utils.scss
  2. 1 2
      packages/@uppy/core/src/index.js
  3. 0 2
      packages/@uppy/locales/src/ar_SA.js
  4. 0 2
      packages/@uppy/locales/src/bg_BG.js
  5. 0 2
      packages/@uppy/locales/src/cs_CZ.js
  6. 0 2
      packages/@uppy/locales/src/da_DK.js
  7. 0 2
      packages/@uppy/locales/src/de_DE.js
  8. 0 2
      packages/@uppy/locales/src/el_GR.js
  9. 1 2
      packages/@uppy/locales/src/en_US.js
  10. 0 2
      packages/@uppy/locales/src/es_ES.js
  11. 0 2
      packages/@uppy/locales/src/fa_IR.js
  12. 0 2
      packages/@uppy/locales/src/fi_FI.js
  13. 1 2
      packages/@uppy/locales/src/fr_FR.js
  14. 0 2
      packages/@uppy/locales/src/gl_ES.js
  15. 0 2
      packages/@uppy/locales/src/he_IL.js
  16. 0 2
      packages/@uppy/locales/src/hr_HR.js
  17. 0 2
      packages/@uppy/locales/src/hu_HU.js
  18. 0 2
      packages/@uppy/locales/src/id_ID.js
  19. 0 2
      packages/@uppy/locales/src/is_IS.js
  20. 0 2
      packages/@uppy/locales/src/it_IT.js
  21. 0 2
      packages/@uppy/locales/src/ja_JP.js
  22. 0 2
      packages/@uppy/locales/src/ko_KR.js
  23. 0 2
      packages/@uppy/locales/src/nb_NO.js
  24. 1 2
      packages/@uppy/locales/src/nl_NL.js
  25. 0 2
      packages/@uppy/locales/src/pl_PL.js
  26. 0 3
      packages/@uppy/locales/src/pt_BR.js
  27. 0 4
      packages/@uppy/locales/src/pt_PT.js
  28. 0 2
      packages/@uppy/locales/src/ro_RO.js
  29. 0 2
      packages/@uppy/locales/src/ru_RU.js
  30. 0 2
      packages/@uppy/locales/src/sk_SK.js
  31. 0 2
      packages/@uppy/locales/src/sr_RS_Cyrillic.js
  32. 0 2
      packages/@uppy/locales/src/sr_RS_Latin.js
  33. 0 2
      packages/@uppy/locales/src/sv_SE.js
  34. 0 2
      packages/@uppy/locales/src/th_TH.js
  35. 0 2
      packages/@uppy/locales/src/tr_TR.js
  36. 0 2
      packages/@uppy/locales/src/uk_UA.js
  37. 0 2
      packages/@uppy/locales/src/vi_VN.js
  38. 0 2
      packages/@uppy/locales/src/zh_CN.js
  39. 0 2
      packages/@uppy/locales/src/zh_TW.js
  40. 37 16
      packages/@uppy/provider-views/src/Item/components/GridLi.js
  41. 45 34
      packages/@uppy/provider-views/src/Item/components/ListLi.js
  42. 1 1
      packages/@uppy/provider-views/src/style.scss
  43. 9 3
      packages/@uppy/provider-views/src/style/uppy-ProviderBrowser-viewType--grid.scss
  44. 2 2
      packages/@uppy/provider-views/src/style/uppy-ProviderBrowser-viewType--list.scss
  45. 2 2
      packages/@uppy/provider-views/src/style/uppy-ProviderBrowserItem-checkbox.scss

+ 4 - 2
packages/@uppy/core/src/_utils.scss

@@ -1,4 +1,6 @@
-// Utility Mixins
+@import '@uppy/core/src/_variables.scss';
+
+$focus-shadow: 0 0 0 3px rgba($blue, 0.5);
 
 @mixin clearfix() {
   &:after {
@@ -44,7 +46,7 @@
   @include clear-focus();
 
   &:focus {
-    box-shadow: 0 0 0 3px rgba($blue, 0.5);
+    box-shadow: $focus-shadow;
   }
 }
 

+ 1 - 2
packages/@uppy/core/src/index.js

@@ -74,8 +74,7 @@ class Uppy {
           0: 'Select %{smart_count}',
           1: 'Select %{smart_count}',
         },
-        selectAllFilesFromFolderNamed: 'Select all files from folder %{name}',
-        unselectAllFilesFromFolderNamed: 'Unselect all files from folder %{name}',
+        allFilesFromFolderNamed: 'All files from folder %{name}',
         selectFileNamed: 'Select file %{name}',
         unselectFileNamed: 'Unselect file %{name}',
         openFolderNamed: 'Open folder %{name}',

+ 0 - 2
packages/@uppy/locales/src/ar_SA.js

@@ -132,8 +132,6 @@ ar_SA.strings = {
     '1': 'يجب ان تختار على الاقل  %{smart_count} ملفات',
     '2': 'يجب ان تختار على الاقل  %{smart_count} ملفات',
   },
-  selectAllFilesFromFolderNamed: 'حدد جميع الملفات من المجلد %{name}',
-  unselectAllFilesFromFolderNamed: 'قم بإلغاء تحديد جميع الملفات من المجلد %{name}',
   selectFileNamed: 'اختر الملف %{name}',
   unselectFileNamed: 'إلغاء تحديد الملف %{name}',
   openFolderNamed: 'افتح المجلد %{name}',

+ 0 - 2
packages/@uppy/locales/src/bg_BG.js

@@ -92,7 +92,6 @@ bg_BG.strings = {
   retry: 'Нов опит',
   retryUpload: 'Нов опит за качване',
   saveChanges: 'Запис на промените',
-  selectAllFilesFromFolderNamed: 'Изберете всички файлове от директория %{name}',
   selectFileNamed: 'Изберете файл %{name}',
   selectX: {
     '0': 'Избран %{smart_count}',
@@ -108,7 +107,6 @@ bg_BG.strings = {
   submitRecordedFile: 'Подаване на записаното видео',
   takePicture: 'Направа на снимка',
   timedOut: 'Качването е в застой за %{seconds} секунди, прекъсване.',
-  unselectAllFilesFromFolderNamed: 'Размаркиране на всички файлове от директория %{name}',
   unselectFileNamed: 'Размаркиране файл %{name}',
   upload: 'Качване',
   uploadComplete: 'Качването е успешно',

+ 0 - 2
packages/@uppy/locales/src/cs_CZ.js

@@ -82,7 +82,6 @@ cs_CZ.strings = {
   retry: 'Opakovat',
   retryUpload: 'Opakovat nahrávání',
   saveChanges: 'Uložit změny',
-  selectAllFilesFromFolderNamed: 'Vybrat vše z adresáře %{name}',
   selectFileNamed: 'Vybrat soubor %{name}',
   selectX: {
     '0': 'Vybrat %{smart_count}',
@@ -94,7 +93,6 @@ cs_CZ.strings = {
   stopRecording: 'Zastavit nahrávání videa',
   takePicture: 'Pořídit fotografii',
   timedOut: 'Stav nahrávání se nezměnil %{seconds} sekund, ruším nahrávání.',
-  unselectAllFilesFromFolderNamed: 'Zrušit výběr všech souborů z adresáře %{name}',
   unselectFileNamed: 'Zrušit výběr souboru %{name}',
   upload: 'Nahrát',
   uploadComplete: 'Nahrání dokončeno',

+ 0 - 2
packages/@uppy/locales/src/da_DK.js

@@ -81,7 +81,6 @@ da_DK.strings = {
   retry: 'Forsøg igen',
   retryUpload: 'Forsøg upload igen',
   saveChanges: 'Gem ændringer',
-  selectAllFilesFromFolderNamed: 'Vælg alle filer fra mappen %{name}',
   selectFileNamed: 'Vælg fil %{name}',
   selectX: {
     '0': 'Vælg %{smart_count}',
@@ -93,7 +92,6 @@ da_DK.strings = {
   stopRecording: 'Stop video optagelse',
   takePicture: 'Tag et billede',
   timedOut: 'Upload gået i stå for %{seconds} sekunder, afbryder.',
-  unselectAllFilesFromFolderNamed: 'Afmarker alle filer fra mappen %{name}',
   unselectFileNamed: 'Afmarker filen %{name}',
   upload: 'Upload',
   uploadComplete: 'Upload færdig',

+ 0 - 2
packages/@uppy/locales/src/de_DE.js

@@ -138,8 +138,6 @@ de_DE.strings = {
     '1': 'Sie müssen mindestens %{smart_count} Dateien auswählen',
     '2': 'Sie müssen mindestens %{smart_count} Dateien auswählen',
   },
-  selectAllFilesFromFolderNamed: 'Wählen Sie alle Dateien aus dem Ordner %{name}',
-  unselectAllFilesFromFolderNamed: 'Heben Sie die Auswahl aller Dateien aus dem Ordner auf %{name}',
   selectFileNamed: 'Datei aussuchen %{name}',
   unselectFileNamed: 'Datei abwählen %{name}',
   openFolderNamed: 'Ordner öffnen %{name}',

+ 0 - 2
packages/@uppy/locales/src/el_GR.js

@@ -81,7 +81,6 @@ el_GR.strings = {
   retry: 'Προσπάθεια ξανά',
   retryUpload: 'Προσπάθεια μεταφόρτωσης ξανά',
   saveChanges: 'Αποθήκευση αλλαγών',
-  selectAllFilesFromFolderNamed: 'Επιλογή όλων των αρχείων από τον φάκελο %{name}',
   selectFileNamed: 'Επιλογή αρχείου %{name}',
   selectX: {
     '0': 'Επιλογή %{smart_count}',
@@ -93,7 +92,6 @@ el_GR.strings = {
   stopRecording: 'Σταμάτημα εγγραφής βίντεο',
   takePicture: 'Βγάλτε μια φωτογραφία',
   timedOut: 'Η μεταφόρτωση σταμάτησε για %{seconds} δευτερόλεπτα, γίνεται ακύρωση.',
-  unselectAllFilesFromFolderNamed: 'Αποεπιλογή όλων των αρχείων από τον φάκελο %{name}',
   unselectFileNamed: 'Αποεπιλογή αρχείου %{name}',
   upload: 'Μεταφόρτωση',
   uploadComplete: 'Μεταφόρτωση ολοκληρώθηκε',

+ 1 - 2
packages/@uppy/locales/src/en_US.js

@@ -8,6 +8,7 @@ en_US.strings = {
   addMore: 'Add more',
   addMoreFiles: 'Add more files',
   addingMoreFiles: 'Adding more files',
+  allFilesFromFolderNamed: 'All files from folder %{name}',
   allowAccessDescription: 'In order to take pictures or record video with your camera, please allow camera access for this site.',
   allowAccessTitle: 'Please allow access to your camera',
   aspectRatioLandscape: 'Crop landscape (16:9)',
@@ -114,7 +115,6 @@ en_US.strings = {
   save: 'Save',
   saveChanges: 'Save changes',
   searchImages: 'Search for images',
-  selectAllFilesFromFolderNamed: 'Select all files from folder %{name}',
   selectFileNamed: 'Select file %{name}',
   selectX: {
     '0': 'Select %{smart_count}',
@@ -131,7 +131,6 @@ en_US.strings = {
   submitRecordedFile: 'Submit recorded file',
   takePicture: 'Take a picture',
   timedOut: 'Upload stalled for %{seconds} seconds, aborting.',
-  unselectAllFilesFromFolderNamed: 'Unselect all files from folder %{name}',
   unselectFileNamed: 'Unselect file %{name}',
   upload: 'Upload',
   uploadComplete: 'Upload complete',

+ 0 - 2
packages/@uppy/locales/src/es_ES.js

@@ -133,8 +133,6 @@ es_ES.strings = {
     '1': 'Tienes que seleccionar al menos %{smart_count} archivos',
     '2': 'Tienes que seleccionar al menos %{smart_count} archivos',
   },
-  selectAllFilesFromFolderNamed: 'Seleccionar todos los archivos de la carpeta %{name}',
-  unselectAllFilesFromFolderNamed: 'Deselecciona todos los archivos de la carpeta %{name}',
   selectFileNamed: 'Seleccione archivo %{name}',
   unselectFileNamed: 'Deseleccionar archivo %{name}',
   openFolderNamed: 'Carpeta abierta %{name}',

+ 0 - 2
packages/@uppy/locales/src/fa_IR.js

@@ -132,8 +132,6 @@ fa_IR.strings = {
     '1': 'می‌بایست حداقل %{smart_count} فایل انتخاب کنید',
     '2': 'می‌بایست حداقل %{smart_count} فایل انتخاب کنید',
   },
-  selectAllFilesFromFolderNamed: 'همه فایل ها را از پوشه انتخاب کنید %{name}',
-  unselectAllFilesFromFolderNamed: 'همه فایل ها را از پوشه حذف کنید %{name}',
   selectFileNamed: 'فایل را انتخاب کنید %{name}',
   unselectFileNamed: 'لغو انتخاب پرونده %{name}',
   openFolderNamed: 'پوشه باز کنید %{name}',

+ 0 - 2
packages/@uppy/locales/src/fi_FI.js

@@ -81,7 +81,6 @@ fi_FI.strings = {
   retry: 'Yritä uudelleen',
   retryUpload: 'Yritä lähetystä uudelleen',
   saveChanges: 'Tallenna muutokset',
-  selectAllFilesFromFolderNamed: 'Valitse kaikki tiedostot kansiosta %{name}',
   selectFileNamed: 'Valitse tiedosto %{name}',
   selectX: {
     '0': 'Valitse %{smart_count}',
@@ -93,7 +92,6 @@ fi_FI.strings = {
   stopRecording: 'Lopeta videon tallennus',
   takePicture: 'Ota kuva',
   timedOut: 'Lähetys jumittunut %{seconds} sekunniksi, keskeytetään.',
-  unselectAllFilesFromFolderNamed: 'Poista tiedostojen valinta kansiossa %{name}',
   unselectFileNamed: 'Poista valinta tiedostosta %{name}',
   upload: 'Lähetä',
   uploadComplete: 'Lähetys valmis',

+ 1 - 2
packages/@uppy/locales/src/fr_FR.js

@@ -8,6 +8,7 @@ fr_FR.strings = {
   addMore: 'Ajouter d\'autres',
   addMoreFiles: 'Ajouter d\'autres fichiers',
   addingMoreFiles: 'En train d\'ajouter des fichiers',
+  allFilesFromFolderNamed: 'Tous les fichiers du dossier %{name}',
   allowAccessDescription: 'Pour prendre des photos ou enregistrer une vidéo avec votre caméra, veuillez autoriser l\'accès à votre caméra pour ce site.',
   allowAccessTitle: 'Veuillez autoriser l\'accès à votre caméra',
   authenticateWith: 'Se connecter à %{pluginName}',
@@ -93,7 +94,6 @@ fr_FR.strings = {
   retry: 'Réessayer',
   retryUpload: 'Réessayer le téléchargement',
   saveChanges: 'Sauvegarder les modifications',
-  selectAllFilesFromFolderNamed: 'Sélectionner tous les fichiers du dossier %{name}',
   selectFileNamed: 'Sélectionner le fichier %{name}',
   selectX: {
     '0': 'Sélectionner %{smart_count}',
@@ -108,7 +108,6 @@ fr_FR.strings = {
   submitRecordedFile: 'Envoyer la vidéo enregistrée',
   takePicture: 'Prendre une photo',
   timedOut: 'Téléchargement bloqué durant %{seconds} secondes, annulation.',
-  unselectAllFilesFromFolderNamed: 'Désélectionner tous les fichiers du dossier %{name}',
   unselectFileNamed: 'Désélectionner le fichier %{name}',
   upload: 'Télécharger',
   uploadComplete: 'Téléchargement terminé',

+ 0 - 2
packages/@uppy/locales/src/gl_ES.js

@@ -132,8 +132,6 @@ gl_ES.strings = {
     '1': 'Tes que seleccionar polo menos %{smart_count} arquivos',
     '2': 'Tes que seleccionar polo menos %{smart_count} arquivos',
   },
-  selectAllFilesFromFolderNamed: 'Seleccionar todos os arquivos do cartafol %{name}',
-  unselectAllFilesFromFolderNamed: 'Deselecciona todos os arquivos do cartafol %{name}',
   selectFileNamed: 'Seleccione arquivo %{name}',
   unselectFileNamed: 'Deseleccionar arquivo %{name}',
   openFolderNamed: 'Cartafol aberto %{name}',

+ 0 - 2
packages/@uppy/locales/src/he_IL.js

@@ -83,7 +83,6 @@ he_IL.strings = {
   retry: 'נסה שוב',
   retryUpload: 'נסה להעלות שוב',
   saveChanges: 'שמור שינויים',
-  selectAllFilesFromFolderNamed: 'בחר את כל הקבצים בתיקייה %{name}',
   selectFileNamed: 'בחר את הקובץ %{name}',
   selectX: {
     '0': 'בחר %{smart_count}',
@@ -95,7 +94,6 @@ he_IL.strings = {
   stopRecording: 'עצור הסרטת ווידאו',
   takePicture: 'צלם תמונה',
   timedOut: 'העלאה נתקעה %{seconds} שניות, מבטל.',
-  unselectAllFilesFromFolderNamed: 'בטל בחירת כל הקבצים בתיקייה %{name}',
   unselectFileNamed: 'בטל בחירת הקובץ %{name}',
   upload: 'מעלה',
   uploadComplete: 'העלאה הסתיימה',

+ 0 - 2
packages/@uppy/locales/src/hr_HR.js

@@ -132,8 +132,6 @@ hr_HR.strings = {
     '1': 'Izaberite datoteke. Najmanje: %{smart_count}',
     '2': 'Izaberite datoteke. Najmanje: %{smart_count}',
   },
-  selectAllFilesFromFolderNamed: 'Izaberite sve datoteke iz mape %{name}',
-  unselectAllFilesFromFolderNamed: 'Isključite sve datoteke iz mape %{name}',
   selectFileNamed: 'Izaberite datoteku %{name}',
   unselectFileNamed: 'Isključite datoteku %{name}',
   openFolderNamed: 'Otvori mapu %{name}',

+ 0 - 2
packages/@uppy/locales/src/hu_HU.js

@@ -134,8 +134,6 @@ hu_HU.strings = {
     '1': 'Legalább %{smart_count} fájlt ki kell választania',
     '2': 'Legalább %{smart_count} fájlt ki kell választania',
   },
-  selectAllFilesFromFolderNamed: 'Válassza ki az összes fájlt a mappából %{name}',
-  unselectAllFilesFromFolderNamed: 'Az összes fájl törlése a mappából %{name}',
   selectFileNamed: 'Válaszd ki a fájlt %{name}',
   unselectFileNamed: 'A fájl törlése %{name}',
   openFolderNamed: 'Nyitott mappa %{name}',

+ 0 - 2
packages/@uppy/locales/src/id_ID.js

@@ -81,7 +81,6 @@ id_ID.strings = {
   retry: 'Ulangi',
   retryUpload: 'Ulangi pengungahan',
   saveChanges: 'Simpan perubahan',
-  selectAllFilesFromFolderNamed: 'Pilih semua berkas dari folder %{name}',
   selectFileNamed: 'Pilih berkas %{name}',
   selectX: {
     '0': 'Pilih %{smart_count}',
@@ -93,7 +92,6 @@ id_ID.strings = {
   stopRecording: 'Menghentikan perekaman video',
   takePicture: 'Mengambil gambar',
   timedOut: 'Pengunggahan terhenti untuk %{seconds} detik, membatalkan.',
-  unselectAllFilesFromFolderNamed: 'Batalkan pemilihan semua berkas dari folder %{name}',
   unselectFileNamed: 'Batalkan pemilihan berkas %{name}',
   upload: 'Unggah',
   uploadComplete: 'Pengunggahan selesai',

+ 0 - 2
packages/@uppy/locales/src/is_IS.js

@@ -88,7 +88,6 @@ is_IS.strings = {
   retry: 'Reyna aftur',
   retryUpload: 'Reyna upphölun aftur',
   saveChanges: 'Vista breytingar',
-  selectAllFilesFromFolderNamed: 'Velja allar skrár í möppu %{name}',
   selectFileNamed: 'Velja skrá %{name}',
   selectX: {
     '0': 'Velja %{smart_count}',
@@ -100,7 +99,6 @@ is_IS.strings = {
   stopRecording: 'Stöðva myndbandsupptöku',
   takePicture: 'Taka mynd',
   timedOut: 'Upphölun tafin um %{seconds} sekúndur, hætti við.',
-  unselectAllFilesFromFolderNamed: 'Afvelja allar skrár í möppu %{name}',
   unselectFileNamed: 'Afvelja skrá %{name}',
   upload: 'Upphala',
   uploadComplete: 'Upphölun lokið',

+ 0 - 2
packages/@uppy/locales/src/it_IT.js

@@ -132,8 +132,6 @@ it_IT.strings = {
     '1': 'Devi selezionare almeno %{smart_count} file',
     '2': 'Devi selezionare almeno %{smart_count} file',
   },
-  selectAllFilesFromFolderNamed: 'Seleziona tutti i file dalla cartella %{name}',
-  unselectAllFilesFromFolderNamed: 'Deseleziona tutti i file dalla cartella %{name}',
   selectFileNamed: 'Seleziona il file %{name}',
   unselectFileNamed: 'Deseleziona il file %{name}',
   openFolderNamed: 'Cartella aperta %{name}',

+ 0 - 2
packages/@uppy/locales/src/ja_JP.js

@@ -132,8 +132,6 @@ ja_JP.strings = {
     '1': '最低でも %{smart_count} ファイル選択してください',
     '2': '最低でも %{smart_count} ファイル選択してください',
   },
-  selectAllFilesFromFolderNamed: 'フォルダからすべてのファイルを選択 %{name}',
-  unselectAllFilesFromFolderNamed: 'フォルダからすべてのファイルを選択解除 %{name}',
   selectFileNamed: 'ファイルを選ぶ %{name}',
   unselectFileNamed: 'ファイルの選択を解除 %{name}',
   openFolderNamed: '開いたフォルダ %{name}',

+ 0 - 2
packages/@uppy/locales/src/ko_KR.js

@@ -72,7 +72,6 @@ ko_KR.strings = {
   retry: '재시도',
   retryUpload: '업로드 재시도',
   saveChanges: '변경사항 저장',
-  selectAllFilesFromFolderNamed: '%{name} 폴더의 모든 파일 선택',
   selectFileNamed: '%{name} 파일 선택',
   selectX: '%{smart_count}개 선택',
   smile: 'Smile!',
@@ -80,7 +79,6 @@ ko_KR.strings = {
   stopRecording: '비디오 녹화 정지',
   takePicture: '사진 촬영',
   timedOut: '%{seconds}초 동안 업로드 정지되어 업로드를 취소합니다.',
-  unselectAllFilesFromFolderNamed: '%{name} 폴더의 모든 파일 선택 해제',
   unselectFileNamed: '%{name} 파일 선택 해제',
   upload: '업로드',
   uploadComplete: '업로드 완료',

+ 0 - 2
packages/@uppy/locales/src/nb_NO.js

@@ -105,7 +105,6 @@ nb_NO.strings = {
   save: 'Lagre',
   saveChanges: 'Lagre endringer',
   searchImages: 'Søk etter bilder',
-  selectAllFilesFromFolderNamed: 'Velg alle filer fra mappen %{name}',
   selectFileNamed: 'Velg fil %{name}',
   selectX: {
     0: 'Velg %{smart_count}',
@@ -121,7 +120,6 @@ nb_NO.strings = {
   submitRecordedFile: 'Send inn opptak',
   takePicture: 'Ta bilde',
   timedOut: 'Opplasting stoppet for %{seconds} sekunder, avbryter.',
-  unselectAllFilesFromFolderNamed: 'Fjern markering for alle filer i mappen %{name}',
   unselectFileNamed: 'Fjern markering for %{name}',
   upload: 'Last opp',
   uploadComplete: 'Opplasting ferdig',

+ 1 - 2
packages/@uppy/locales/src/nl_NL.js

@@ -125,8 +125,7 @@ nl_NL.strings = {
     '0': 'Je moet minstens %{smart_count} bestand selecteren',
     '1': 'Je moet minstens %{smart_count} bestanden selecteren',
   },
-  selectAllFilesFromFolderNamed: 'Selecteer alle bestanden uit de map %{name}',
-  unselectAllFilesFromFolderNamed: 'Deselecteer alle bestanden uit de map %{name}',
+  allFilesFromFolderNamed: 'Alle bestanden uit de map %{name}',
   selectFileNamed: 'Selecteer bestand %{name}',
   unselectFileNamed: 'Deselecteer bestand %{name}',
   openFolderNamed: 'Open map %{name}',

+ 0 - 2
packages/@uppy/locales/src/pl_PL.js

@@ -90,7 +90,6 @@ pl_PL.strings = {
   retry: 'Ponów próbę',
   retryUpload: 'Ponów próbę wysyłki',
   saveChanges: 'Zapisz zmiany',
-  selectAllFilesFromFolderNamed: 'Wybierz wszystkie pliki z folderu %{name}',
   selectFileNamed: 'Wybierz plik %{name}',
   selectX: {
     '0': 'Wybierz %{smart_count}',
@@ -102,7 +101,6 @@ pl_PL.strings = {
   stopRecording: 'Zatrzymaj nagrywanie wideo',
   takePicture: 'Zrób zdjęcie',
   timedOut: 'Wysyłka wstrzymana przez %{seconds} sekund, przerywanie.',
-  unselectAllFilesFromFolderNamed: 'Odznacz wszystkie pliki z folderu %{name}',
   unselectFileNamed: 'Odznacz plik %{name}',
   upload: 'Wgrywanie',
   uploadComplete: 'Wgrywanie ukończone',

+ 0 - 3
packages/@uppy/locales/src/pt_BR.js

@@ -126,9 +126,6 @@ pt_BR.strings = {
     0: 'Você precisa selecionar pelo menos %{smart_count} arquivo',
     1: 'Você precisa selecionar pelo menos %{smart_count} arquivos',
   },
-  selectAllFilesFromFolderNamed: 'Selecione todos os arquivos da pasta %{name}',
-  unselectAllFilesFromFolderNamed:
-    'Desmarque todos os arquivos da pasta %{name}',
   selectFileNamed: 'Selecione o arquivo %{name}',
   unselectFileNamed: 'Deselecionar arquivo %{name}',
   openFolderNamed: 'Pasta aberta %{name}',

+ 0 - 4
packages/@uppy/locales/src/pt_PT.js

@@ -126,10 +126,6 @@ pt_PT.strings = {
     0: 'Precisa de selecionar pelo menos %{smart_count} ficheiro',
     1: 'Precisa de selecionar pelo menos %{smart_count} ficheiros',
   },
-  selectAllFilesFromFolderNamed:
-    'Selecione todos os ficheiros da pasta %{name}',
-  unselectAllFilesFromFolderNamed:
-    'Desmarque todos os ficheiros da pasta %{name}',
   selectFileNamed: 'Selecione o ficheiro %{name}',
   unselectFileNamed: 'Deselecionar ficheiro %{name}',
   openFolderNamed: 'Pasta aberta %{name}',

+ 0 - 2
packages/@uppy/locales/src/ro_RO.js

@@ -90,7 +90,6 @@ ro_RO.strings = {
   retry: 'Reîncercare',
   retryUpload: 'Reîncearcă încărcarea',
   saveChanges: 'Salvează modificări',
-  selectAllFilesFromFolderNamed: 'Selectează toate fișierele din %{name}',
   selectFileNamed: 'Selectează fișier %{name}',
   selectX: {
     '0': 'Selectează %{smart_count}',
@@ -101,7 +100,6 @@ ro_RO.strings = {
   stopRecording: 'Oprește înregistrarea video',
   takePicture: 'Fă o poză',
   timedOut: 'Încărcarea blocată pentru %{seconds} secunde, se anulează.',
-  unselectAllFilesFromFolderNamed: 'Deselectează toate fișierele în directorul %{name}',
   unselectFileNamed: 'Deselectează fișier %{name}',
   upload: 'Încarcă',
   uploadComplete: 'Încărcare finalizată',

+ 0 - 2
packages/@uppy/locales/src/ru_RU.js

@@ -134,8 +134,6 @@ ru_RU.strings = {
     '1': 'Вы должны выбрать хотя бы %{smart_count} файла',
     '2': 'Вы должны выбрать хотя бы %{smart_count} файлов',
   },
-  selectAllFilesFromFolderNamed: 'Выбрать все файлы из папки %{name}',
-  unselectAllFilesFromFolderNamed: 'Отменить выбор всех файлов из папки %{name}',
   selectFileNamed: 'Выбрать файл %{name}',
   unselectFileNamed: 'Отменить выбор файла %{name}',
   openFolderNamed: 'Открыть папку %{name}',

+ 0 - 2
packages/@uppy/locales/src/sk_SK.js

@@ -107,7 +107,6 @@ sk_SK.strings = {
   save: 'Uložiť',
   saveChanges: 'Uložiť zmeny',
   searchImages: 'Vyhľadajte obrázky',
-  selectAllFilesFromFolderNamed: 'Vybrať všetky súbory zo zložky %{name}',
   selectFileNamed: 'Vybrať súbor %{name}',
   selectX: {
     '0': 'Vybrať %{smart_count}',
@@ -123,7 +122,6 @@ sk_SK.strings = {
   submitRecordedFile: 'Odoslať nahraté video',
   takePicture: 'Urobiť fotku',
   timedOut: 'Nahrávanie bolo prerušené na %{seconds}, prerušuje sa.',
-  unselectAllFilesFromFolderNamed: 'Zrušiť výber všetkých súborov zo zložky %{name}',
   unselectFileNamed: 'Zrušiť výber súboru %{name}',
   upload: 'Nahrať',
   uploadComplete: 'Nahrávanie dokončené',

+ 0 - 2
packages/@uppy/locales/src/sr_RS_Cyrillic.js

@@ -132,8 +132,6 @@ sr_RS_Cyrillic.strings = {
     '1': 'Изаберите датотеке. Најмање: %{smart_count}',
     '2': 'Изаберите датотеке. Најмање: %{smart_count}',
   },
-  selectAllFilesFromFolderNamed: 'Изаберите све датотеке из фолдера %{name}',
-  unselectAllFilesFromFolderNamed: 'Искључите све датотеке из фолдера %{name}',
   selectFileNamed: 'Изаберите фајл %{name}',
   unselectFileNamed: 'Искључите фајл %{name}',
   openFolderNamed: 'Отвори фолдер %{name}',

+ 0 - 2
packages/@uppy/locales/src/sr_RS_Latin.js

@@ -132,8 +132,6 @@ sr_RS_Latin.strings = {
     '1': 'Izaberite datoteke. Najmanje: %{smart_count}',
     '2': 'Izaberite datoteke. Najmanje: %{smart_count}',
   },
-  selectAllFilesFromFolderNamed: 'Izaberite sve datoteke iz foldera %{name}',
-  unselectAllFilesFromFolderNamed: 'Isključite sve datoteke iz foldera %{name}',
   selectFileNamed: 'Izaberite fajl %{name}',
   unselectFileNamed: 'Isključite fajl %{name}',
   openFolderNamed: 'Otvori folder %{name}',

+ 0 - 2
packages/@uppy/locales/src/sv_SE.js

@@ -81,7 +81,6 @@ sv_SE.strings = {
   retry: 'Försök igen',
   retryUpload: 'Försök igen',
   saveChanges: 'Spara ändringar',
-  selectAllFilesFromFolderNamed: 'Välj alla filer i mappen %{name}',
   selectFileNamed: 'Välj fil %{name}',
   selectX: {
     '0': 'Välj %{smart_count}',
@@ -93,7 +92,6 @@ sv_SE.strings = {
   stopRecording: 'Avbryt inspelning',
   takePicture: 'Ta bild',
   timedOut: 'Uppladdningen har stått stilla i %{seconds} sekunder; avbryter.',
-  unselectAllFilesFromFolderNamed: 'Avmarkera alla filer i mappen %{name}',
   unselectFileNamed: 'Avmarkera filen %{name}',
   upload: 'Ladda upp',
   uploadComplete: 'Uppladdning slutförd',

+ 0 - 2
packages/@uppy/locales/src/th_TH.js

@@ -103,7 +103,6 @@ th_TH.strings = {
   rotate: 'หมุน',
   save: 'บันทึก',
   saveChanges: 'บันทึกการแก้ไข',
-  selectAllFilesFromFolderNamed: 'เลือกไฟล์ทั้งหมดจากโฟลเดอร์ %{name}',
   selectFileNamed: 'เลือกไฟล์ %{name}',
   selectX: {
     '0': 'เลือก %{smart_count}',
@@ -119,7 +118,6 @@ th_TH.strings = {
   submitRecordedFile: 'ส่งวิดีโอที่ถ่าย',
   takePicture: 'ถ่ายภาพ',
   timedOut: 'ยกเลิก, ไม่สามารถอัพโหลดไฟล์ได้เป็นเวลา %{seconds} วินาที',
-  unselectAllFilesFromFolderNamed: 'ยกเลิกการเลือกไฟล์ทั้งหมดจากโฟลเดอร์ %{name}',
   unselectFileNamed: 'ยกเลิกการเลือกไฟล์ %{name}',
   upload: 'อัพโหลด',
   uploadComplete: 'อัพโหลดไฟล์สำเร็จ',

+ 0 - 2
packages/@uppy/locales/src/tr_TR.js

@@ -132,8 +132,6 @@ tr_TR.strings = {
     '1': 'En az %{smart_count} dosya seçmelisin',
     '2': 'En az %{smart_count} dosya seçmelisin',
   },
-  selectAllFilesFromFolderNamed: 'Klasördeki tüm dosyaları seç %{name}',
-  unselectAllFilesFromFolderNamed: 'Klasördeki tüm dosyaların seçimini kaldır %{name}',
   selectFileNamed: 'Dosya Seç %{name}',
   unselectFileNamed: 'Dosya seçimini kaldır %{name}',
   openFolderNamed: 'Açık dosya %{name}',

+ 0 - 2
packages/@uppy/locales/src/uk_UA.js

@@ -132,8 +132,6 @@ uk_UA.strings = {
     '1': 'Ви повинні обрати хоча б %{smart_count} файли',
     '2': 'Ви повинні обрати хоча б %{smart_count} файлів',
   },
-  selectAllFilesFromFolderNamed: 'Обрати всі файли з теки %{name}',
-  unselectAllFilesFromFolderNamed: 'Скасувати вибір усіх файлів з теки %{name}',
   selectFileNamed: 'Обрати файл %{name}',
   unselectFileNamed: 'Скасувати вибір файлу %{name}',
   openFolderNamed: 'Відкрити теку %{name}',

+ 0 - 2
packages/@uppy/locales/src/vi_VN.js

@@ -84,7 +84,6 @@ vi_VN.strings = {
   retry: 'Thử lại',
   retryUpload: 'Tải lên lại',
   saveChanges: 'Lưu các thay đổi',
-  selectAllFilesFromFolderNamed: 'Chọn mọi tập tin từ thư mục %{name}',
   selectFileNamed: 'Chọn tập tin %{name}',
   selectX: {
     '0': 'Chọn %{smart_count}',
@@ -96,7 +95,6 @@ vi_VN.strings = {
   stopRecording: 'Dừng thu hình',
   takePicture: 'Chụp ảnh',
   timedOut: 'Tải lên bị đình trệ %{seconds} giây, đang huỷ.',
-  unselectAllFilesFromFolderNamed: ' Bỏ chọn mọi tập tin từ thư mục %{name}',
   unselectFileNamed: 'Bỏ chọn tập tin %{name}',
   upload: 'Tải lên',
   uploadComplete: 'Tải lên hoàn tất',

+ 0 - 2
packages/@uppy/locales/src/zh_CN.js

@@ -82,7 +82,6 @@ zh_CN.strings = {
   retry: '重试',
   retryUpload: '重试',
   saveChanges: '保存变更',
-  selectAllFilesFromFolderNamed: '从文件夹中选择所有文件 %{name}',
   selectFileNamed: '选择文件 %{name}',
   selectX: '选择 %{smart_count}',
   smile: '笑一笑!',
@@ -95,7 +94,6 @@ zh_CN.strings = {
   submitRecordedFile: '提交已录制视频',
   takePicture: '拍照',
   timedOut: '上传已超时 %{seconds} 秒,中止上传',
-  unselectAllFilesFromFolderNamed: '取消选择文件夹中的所有文件 %{name}',
   unselectFileNamed: '取消选择文件 %{name}',
   upload: '上传',
   uploadComplete: '上传完成',

+ 0 - 2
packages/@uppy/locales/src/zh_TW.js

@@ -90,7 +90,6 @@ zh_TW.strings = {
   retry: '重試',
   retryUpload: '重試上傳',
   saveChanges: '儲存變更',
-  selectAllFilesFromFolderNamed: '選擇資料夾 %{name} 中的所有檔案',
   selectFileNamed: '選擇檔案 %{name}',
   selectX: {
     '0': '選擇%{smart_count}',
@@ -102,7 +101,6 @@ zh_TW.strings = {
   stopRecording: '停止錄影',
   takePicture: '拍照',
   timedOut: '上傳已經停滯%{seconds}秒,中止上傳',
-  unselectAllFilesFromFolderNamed: '取消選擇資料夾 %{name} 中的所有檔案',
   unselectFileNamed: '取消選擇檔案 %{name}',
   upload: '上傳',
   uploadComplete: '上傳完成',

+ 37 - 16
packages/@uppy/provider-views/src/Item/components/GridLi.js

@@ -1,24 +1,45 @@
 const { h } = require('preact')
 
-// it could be a <li><button class="fake-checkbox"/> <button/></li>
-module.exports = (props) => {
+function GridListItem (props) {
+  const {
+    className,
+    isDisabled,
+    restrictionReason,
+    isChecked,
+    title,
+    itemIconEl,
+    showTitles,
+    toggleCheckbox,
+    id,
+  } = props
+
   return (
-    <li className={props.className} title={props.isDisabled ? props.restrictionReason : null}>
-      <div aria-hidden className={`uppy-ProviderBrowserItem-fakeCheckbox ${props.isChecked ? 'uppy-ProviderBrowserItem-fakeCheckbox--is-checked' : ''}`} />
-      <button
-        type="button"
-        className="uppy-u-reset uppy-ProviderBrowserItem-inner"
-        onClick={props.toggleCheckbox}
-        role="option"
-        aria-label={props.isChecked ? props.i18n('unselectFileNamed', { name: props.title }) : props.i18n('selectFileNamed', { name: props.title })}
-        aria-selected={props.isChecked}
-        aria-disabled={props.isDisabled}
-        disabled={props.isDisabled}
+    <li
+      className={className}
+      title={isDisabled ? restrictionReason : null}
+    >
+      <input
+        type="checkbox"
+        className={`uppy-u-reset uppy-ProviderBrowserItem-checkbox ${
+          isChecked ? 'uppy-ProviderBrowserItem-checkbox--is-checked' : ''
+        } uppy-ProviderBrowserItem-checkbox--grid`}
+        onChange={toggleCheckbox}
+        name="listitem"
+        id={id}
+        checked={isChecked}
+        disabled={isDisabled}
         data-uppy-super-focusable
+      />
+      <label
+        htmlFor={id}
+        aria-label={title}
+        className="uppy-u-reset uppy-ProviderBrowserItem-inner"
       >
-        {props.itemIconEl}
-        {props.showTitles && props.title}
-      </button>
+        {itemIconEl}
+        {showTitles && title}
+      </label>
     </li>
   )
 }
+
+module.exports = GridListItem

+ 45 - 34
packages/@uppy/provider-views/src/Item/components/ListLi.js

@@ -1,65 +1,76 @@
 const { h } = require('preact')
 
-const getAriaLabelOfCheckbox = (props) => {
-  if (props.type === 'folder') {
-    if (props.isChecked) {
-      return props.i18n('unselectAllFilesFromFolderNamed', { name: props.title })
-    }
-    return props.i18n('selectAllFilesFromFolderNamed', { name: props.title })
-  }
-  if (props.isChecked) {
-    return props.i18n('unselectFileNamed', { name: props.title })
-  }
-  return props.i18n('selectFileNamed', { name: props.title })
-}
-
 // if folder:
 //   + checkbox (selects all files from folder)
 //   + folder name (opens folder)
 // if file:
 //   + checkbox (selects file)
 //   + file name (selects file)
-module.exports = (props) => {
+
+function ListItem (props) {
+  const {
+    className,
+    isDisabled,
+    restrictionReason,
+    isCheckboxDisabled,
+    isChecked,
+    toggleCheckbox,
+    type,
+    id,
+    itemIconEl,
+    title,
+    handleFolderClick,
+    showTitles,
+    i18n,
+  } = props
+
   return (
-    <li className={props.className} title={props.isDisabled ? props.restrictionReason : null}>
-      {!props.isCheckboxDisabled ? (
-        <button
-          type="button"
-          className={`uppy-u-reset uppy-ProviderBrowserItem-fakeCheckbox ${props.isChecked ? 'uppy-ProviderBrowserItem-fakeCheckbox--is-checked' : ''}`}
-          onClick={props.toggleCheckbox}
+    <li
+      className={className}
+      title={isDisabled ? restrictionReason : null}
+    >
+      {!isCheckboxDisabled ? (
+        <input
+          type="checkbox"
+          className={`uppy-u-reset uppy-ProviderBrowserItem-checkbox ${isChecked ? 'uppy-ProviderBrowserItem-checkbox--is-checked' : ''}`}
+          onChange={toggleCheckbox}
           // for the <label/>
-          id={props.id}
-          role="option"
-          aria-label={getAriaLabelOfCheckbox(props)}
-          aria-selected={props.isChecked}
-          aria-disabled={props.isDisabled}
-          disabled={props.isDisabled}
+          name="listitem"
+          id={id}
+          checked={isChecked}
+          aria-label={type === 'file' ? null : i18n('allFilesFromFolderNamed', { name: title })}
+          disabled={isDisabled}
           data-uppy-super-focusable
         />
       ) : null}
 
-      {props.type === 'file' ? (
+      {type === 'file' ? (
         // label for a checkbox
-        <label htmlFor={props.id} className="uppy-u-reset uppy-ProviderBrowserItem-inner">
+        <label
+          htmlFor={id}
+          className="uppy-u-reset uppy-ProviderBrowserItem-inner"
+        >
           <div className="uppy-ProviderBrowserItem-iconWrap">
-            {props.itemIconEl}
+            {itemIconEl}
           </div>
-          {props.showTitles && props.title}
+          {showTitles && title}
         </label>
       ) : (
         // button to open a folder
         <button
           type="button"
           className="uppy-u-reset uppy-ProviderBrowserItem-inner"
-          onClick={props.handleFolderClick}
-          aria-label={props.i18n('openFolderNamed', { name: props.title })}
+          onClick={handleFolderClick}
+          aria-label={i18n('openFolderNamed', { name: title })}
         >
           <div className="uppy-ProviderBrowserItem-iconWrap">
-            {props.itemIconEl}
+            {itemIconEl}
           </div>
-          {props.showTitles && <span>{props.title}</span>}
+          {showTitles && <span>{title}</span>}
         </button>
       )}
     </li>
   )
 }
+
+module.exports = ListItem

+ 1 - 1
packages/@uppy/provider-views/src/style.scss

@@ -3,7 +3,7 @@
 
 @import './style/uppy-ProviderBrowser-viewType--grid';
 @import './style/uppy-ProviderBrowser-viewType--list';
-@import './style/uppy-ProviderBrowserItem-fakeCheckbox';
+@import './style/uppy-ProviderBrowserItem-checkbox';
 @import './style/uppy-SearchProvider-input.scss';
 
 .uppy-DashboardContent-panelBody {

+ 9 - 3
packages/@uppy/provider-views/src/style/uppy-ProviderBrowser-viewType--grid.scss

@@ -65,7 +65,7 @@
   }
 
   // button with a large picture
-  button.uppy-ProviderBrowserItem-inner {
+  .uppy-ProviderBrowserItem-inner {
     border-radius: 4px;
     overflow: hidden;
     position: absolute;
@@ -95,7 +95,7 @@
   }
 
   // Checkbox
-  .uppy-ProviderBrowserItem-fakeCheckbox {
+  .uppy-ProviderBrowserItem-checkbox {
     position: absolute;
     top: 16px; right: 16px;
     width: 26px; height: 26px;
@@ -111,7 +111,13 @@
     }
   }
   // Checked: show the checkmark
-  .uppy-ProviderBrowserItem-fakeCheckbox--is-checked {
+  .uppy-ProviderBrowserItem-checkbox--is-checked {
     opacity: 1;
   }
+
+  .uppy-ProviderBrowserItem-checkbox--grid:focus + label {
+    @include clear-focus();
+    box-shadow: $focus-shadow;
+  }
 }
+

+ 2 - 2
packages/@uppy/provider-views/src/style/uppy-ProviderBrowser-viewType--list.scss

@@ -25,7 +25,7 @@
   }
 
   // Checkbox
-  .uppy-ProviderBrowserItem-fakeCheckbox {
+  .uppy-ProviderBrowserItem-checkbox {
     margin-inline-end: 15px;
     height: 17px; width: 17px;
     border-radius: 3px;
@@ -52,7 +52,7 @@
     }
   }
   // Checked: color the background, show the checkmark
-  .uppy-ProviderBrowserItem-fakeCheckbox--is-checked {
+  .uppy-ProviderBrowserItem-checkbox--is-checked {
     background-color: $blue;
     border-color: $blue;
     &::after {

+ 2 - 2
packages/@uppy/provider-views/src/style/uppy-ProviderBrowserItem-fakeCheckbox.scss → packages/@uppy/provider-views/src/style/uppy-ProviderBrowserItem-checkbox.scss

@@ -1,4 +1,4 @@
-.uppy-ProviderBrowserItem-fakeCheckbox {
+.uppy-ProviderBrowserItem-checkbox {
   position: relative;
   cursor: pointer;
   flex-shrink: 0;
@@ -29,7 +29,7 @@
   }
 }
 
-.uppy-ProviderBrowserItem-fakeCheckbox--is-checked {
+.uppy-ProviderBrowserItem-checkbox--is-checked {
   [data-uppy-theme="dark"] & {
     background-color: $gray-800;
   }