aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files')
-rw-r--r--apps/files/css/files.css2
-rw-r--r--apps/files/css/files.css.map2
-rw-r--r--apps/files/css/files.scss1
-rw-r--r--apps/files/css/merged.css2
-rw-r--r--apps/files/css/merged.css.map2
-rw-r--r--apps/files/js/filelist.js6
-rw-r--r--apps/files/js/files.js4
-rw-r--r--apps/files/l10n/ko.js78
-rw-r--r--apps/files/l10n/ko.json78
-rw-r--r--apps/files/l10n/uk.js16
-rw-r--r--apps/files/l10n/uk.json16
-rw-r--r--apps/files/l10n/zh_CN.js106
-rw-r--r--apps/files/l10n/zh_CN.json106
-rw-r--r--apps/files/src/actions/deleteAction.spec.ts3
-rw-r--r--apps/files/src/actions/downloadAction.spec.ts1
-rw-r--r--apps/files/src/actions/editLocallyAction.spec.ts163
-rw-r--r--apps/files/src/actions/editLocallyAction.ts74
-rw-r--r--apps/files/src/actions/favoriteAction.spec.ts391
-rw-r--r--apps/files/src/actions/favoriteAction.ts99
-rw-r--r--apps/files/src/actions/openFolderAction.spec.ts5
-rw-r--r--apps/files/src/actions/renameAction.spec.ts111
-rw-r--r--apps/files/src/actions/renameAction.ts51
-rw-r--r--apps/files/src/actions/sidebarAction.spec.ts2
-rw-r--r--apps/files/src/actions/sidebarAction.ts1
-rw-r--r--apps/files/src/components/SidebarTab.vue1
-rw-r--r--apps/files/src/services/FileAction.ts2
-rw-r--r--apps/files/src/services/RouterService.ts14
-rw-r--r--apps/files/src/views/Navigation.cy.ts2
28 files changed, 1151 insertions, 188 deletions
diff --git a/apps/files/css/files.css b/apps/files/css/files.css
index 957d77a3e6a..b91dcf94b81 100644
--- a/apps/files/css/files.css
+++ b/apps/files/css/files.css
@@ -1 +1 @@
-.actions{padding:3px;height:100%;display:inline-block;float:left}.actions input,.actions button,.actions .button{margin:0;float:left}.actions .button a{color:#555}.actions .button a:hover,.actions .button a:focus{background-color:var(--color-background-hover)}.actions .button a:active{background-color:var(--color-primary-element-light)}.actions.creatable{position:relative;display:flex;flex:1 1}.actions.creatable .button:not(:last-child){margin-right:3px}.actions.hidden{display:none}#trash{margin-right:8px;float:right;z-index:1010;padding:10px;font-weight:normal}.newFileMenu .error,.newFileMenu .error+.icon-confirm,.files-fileList .error{color:var(--color-error);border-color:var(--color-error)}.files-filestable{position:relative;width:100%;min-width:250px;display:block;flex-direction:column}.emptycontent:not(.hidden)~.files-filestable{display:none}.files-filestable thead{position:-webkit-sticky;position:sticky;top:44px;z-index:60;display:block;background-color:var(--color-main-background-translucent)}.files-filestable tbody{display:table;width:100%}.files-filestable tbody tr[data-permissions="0"],.files-filestable tbody tr[data-permissions="16"]{background-color:var(--color-background-dark)}.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext{color:var(--color-text-maxcontrast)}.files-filestable tbody tr[data-e2eencrypted=true] .selection{pointer-events:none}.files-filestable.hidden{display:none}.app-files #app-content>.viewcontainer{min-height:0%;width:100%}.app-files #app-content{width:calc(100% - 300px);overflow-anchor:none}.file-drag,.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:var(--color-primary-element-light) !important}.app-files #app-content.dir-drop{background-color:var(--color-main-background) !important}.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:rgba(0,0,0,0) !important}.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{background-color:var(--color-primary-element-light) !important}.nav-icon-files{background-image:var(--icon-folder-dark)}.nav-icon-recent{background-image:var(--icon-recent-dark)}.nav-icon-favorites{background-image:var(--icon-starred-dark)}.nav-icon-sharingin,.nav-icon-sharingout,.nav-icon-pendingshares,.nav-icon-shareoverview{background-image:var(--icon-share-dark)}.nav-icon-sharinglinks{background-image:var(--icon-public-dark)}.nav-icon-extstoragemounts{background-image:var(--icon-external-dark)}.nav-icon-trashbin{background-image:var(--icon-delete-dark)}.nav-icon-trashbin-starred{background-image:var(--icon-delete-#ff0000)}.nav-icon-deletedshares{background-image:var(--icon-unshare-dark)}.nav-icon-favorites-starred{background-image:var(--icon-starred-yellow)}#app-navigation .nav-files a.nav-icon-files{width:auto}#app-navigation .nav-files a.new{width:40px;height:32px;padding:0 10px;margin:0;cursor:pointer}#app-navigation .nav-files a.new.hidden{display:none}#app-navigation .nav-files a.new.disabled{opacity:.3}.files-filestable tbody tr{height:51px}.files-filestable tbody tr:hover,.files-filestable tbody tr:focus,.files-filestable tbody .name:focus,.files-filestable tbody tr:hover .filename form,table tr.mouseOver td{background-color:var(--color-background-hover)}.files-filestable tbody tr:active,.files-filestable tbody tr.highlighted,.files-filestable tbody tr.highlighted .name:focus,.files-filestable tbody tr.selected,.files-filestable tbody tr.searchresult{background-color:var(--color-primary-element-light)}tbody a{color:var(--color-main-text)}span.conflict-path,span.extension,span.uploading,td.date{color:var(--color-text-maxcontrast)}span.conflict-path,span.extension{-webkit-transition:opacity 300ms;-moz-transition:opacity 300ms;-o-transition:opacity 300ms;transition:opacity 300ms;vertical-align:top}tr:hover span.conflict-path,tr:focus span.conflict-path,tr:hover span.extension,tr:focus span.extension{opacity:1;color:var(--color-text-maxcontrast)}table th,table th a{color:var(--color-text-maxcontrast)}table.multiselect th a{color:var(--color-main-text)}table th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}table th .columntitle:focus-visible{border-radius:2px}table.multiselect th .columntitle{display:inline-block;margin-right:-20px}table th .columntitle.name{padding-left:0;margin-left:44px}table.multiselect th .columntitle.name{margin-left:0}table th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}.sort-indicator.hidden,.multiselect .sort-indicator,table.multiselect th:hover .sort-indicator.hidden,table.multiselect th:focus .sort-indicator.hidden{visibility:hidden}.multiselect .sort,.multiselect .sort span{cursor:default}table th:hover .sort-indicator.hidden,table th:focus .sort-indicator.hidden{visibility:visible}table th,table td{border-bottom:1px solid var(--color-border);text-align:left;font-weight:normal}table td{padding:0 15px;font-style:normal;background-position:8px center;background-repeat:no-repeat}table th.column-name{position:relative;width:9999px;padding:0}.column-name-container{position:relative;height:50px}table th.column-selection{padding-top:2px}table th.column-size,table td.filesize{text-align:right}table th.column-mtime,table td.date,table th.column-last,table td.column-last{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;min-width:130px}#app-content-recent,#app-content-favorites,#app-content-shareoverview,#app-content-sharingout,#app-content-sharingin,#app-content-sharinglinks,#app-content-deletedshares,#app-content-pendingshares{margin-top:22px}#app-content-recent thead,#app-content-favorites thead,#app-content-shareoverview thead,#app-content-sharingout thead,#app-content-sharingin thead,#app-content-sharinglinks thead,#app-content-deletedshares thead,#app-content-pendingshares thead{top:0}table.multiselect thead th{background-color:var(--color-main-background-translucent);font-weight:bold}#app-content.with-app-sidebar table.multiselect thead{margin-right:27%}table.multiselect .column-name{position:relative;width:9999px}table.multiselect .column-mtime>a{display:none}table td.selection,table th.selection,table td.fileaction{width:32px;text-align:center}table td.filename a.name,table td.filename p.name{display:flex;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;height:50px;line-height:50px;padding:0}table td.filename .thumbnail-wrapper{width:0;min-width:50px;max-width:50px;height:50px}table td.filename .thumbnail-wrapper.icon-loading-small:after{z-index:10}table td.filename .thumbnail-wrapper.icon-loading-small .thumbnail{opacity:.2}table td.filename .thumbnail{display:inline-block;width:32px;height:32px;background-size:contain;background-position:center;background-repeat:no-repeat;margin-left:9px;margin-top:9px;border-radius:var(--border-radius);cursor:pointer;position:absolute;z-index:4}table td.filename p.name .thumbnail{cursor:default}table tr[data-has-preview=true] .thumbnail{border:1px solid var(--color-border)}table:not(.view-grid) td.filename input.filename{width:70% !important;margin-left:48px !important;cursor:text}table td.filename form{margin-top:-40px;position:relative;top:-6px}table td.filename a,table td.login,table td.logout,table td.download,table td.upload,table td.create,table td.delete{padding:3px 8px 8px 3px}table td.filename .nametext,.modified,.column-last>span:first-child{float:left;padding:15px 0}.modified,.column-last>span:first-child{position:relative;overflow:hidden;text-overflow:ellipsis;width:110px}table td.filename{max-width:0}table td.filename .nametext{width:0;flex-grow:1;display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:100%;z-index:10;padding:0 20px 0 0}table td.filename .system-tags{--min-size: 32px;display:flex;justify-content:center;align-items:center;flex:1 1 100%;min-width:calc(var(--min-size)*2);max-width:300px}table td.filename .system-tags .system-tags__tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}table td.filename .system-tags .system-tags__tag--more{overflow:visible;text-overflow:initial}table td.filename .system-tags .system-tags__tag+.system-tags__tag{margin-left:5px}.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging{display:none !important}.files-fileList tr.animate-opacity{-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.files-fileList tr.dragging{opacity:.2}table td.filename .nametext .innernametext{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top}table td.filename .uploadtext{position:absolute;font-weight:normal;margin-left:50px;left:0;bottom:0;height:20px;padding:0 4px;padding-left:1px;font-size:11px;line-height:22px;color:var(--color-text-maxcontrast);text-overflow:ellipsis;white-space:nowrap}table td.selection{padding:0}.files-fileList tr td.selection>.selectCheckBox+label:before{opacity:.3;margin-right:0}.files-fileList tr:hover td.selection>.selectCheckBox+label:before,.files-fileList tr:focus td.selection>.selectCheckBox+label:before,.files-fileList tr td.selection>.selectCheckBox:checked+label:before,.files-fileList tr.selected td.selection>.selectCheckBox+label:before{opacity:1}.files-fileList tr.halfselected td.selection>.selectCheckBox+label:before{opacity:.5}.files-fileList tr td.selection>.selectCheckBox+label,.select-all+label{padding:16px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill);outline:none !important;border:2px solid var(--color-primary-element) !important;padding:14px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{outline-offset:0px}.files-fileList tr td.filename{position:relative;width:100%;padding-left:0;padding-right:0;-webkit-transition:background-image 500ms;-moz-transition:background-image 500ms;-o-transition:background-image 500ms;transition:background-image 500ms}.files-fileList tr td.filename a.name label,.files-fileList tr td.filename p.name label{position:absolute;width:80%;height:50px}.files-fileList tr td.filename .favorite{display:inline-block;float:left}.files-fileList tr td.filename .favorite-mark{position:absolute;display:block;top:-8px;right:-8px;line-height:100%;text-align:center}.files-fileList tr td.filename .favorite-mark.permanent{background-color:var(--color-main-background);mask:var(--icon-star-rounded-white) no-repeat;mask-size:22px 22px;width:22px;height:22px;display:flex;align-content:center;justify-content:center}.files-fileList tr:hover td.filename .favorite-mark.permanent{background-color:var(--color-background-hover)}#uploadsize-message,#delete-confirm{display:none}.fileactions{z-index:50}.busy .fileactions,.busy .action{visibility:hidden}.bubble,#app-navigation .app-navigation-entry-menu{min-width:100px}.files-fileList .icon-loading-small{opacity:1 !important;display:inline !important}.files-fileList .action.action-share-notification span,.files-fileList a.name{cursor:default !important}.files-fileList a.name.disabled *{cursor:default}.files-fileList a.name.disabled a,.files-fileList a.name.disabled a *{cursor:pointer}.files-fileList a.name.disabled:focus{background:none}a.action>img{height:16px;width:16px;vertical-align:text-bottom}a.action.action-editlocally img.icon{filter:var(--background-invert-if-dark)}.selectedActions{position:relative;display:inline-block;vertical-align:middle}.selectedActions.hidden{display:none}.selectedActions a{display:inline;line-height:50px;padding:16px 5px}.selectedActions a.hidden{display:none}.selectedActions a img{position:relative;vertical-align:text-bottom;margin-bottom:-1px}.selectedActions .actions-selected .icon-more{margin-top:-3px}.files-fileList td a a.action{display:inline;padding:17px 8px;line-height:50px;opacity:.3}.files-fileList td a a.action.action-share{padding:17px 14px}.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared+span{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.files-fileList td a a.action.action-share .avatar{display:inline-block;vertical-align:middle}.files-fileList td a a.action.action-menu{padding-top:17px;padding-bottom:17px;padding-left:14px;padding-right:14px}.files-fileList td a a.action.no-permission:hover,.files-fileList td a a.action.no-permission:focus{opacity:.3}.files-fileList td a a.action.disabled:hover,.files-fileList td a a.action.disabled:focus,.files-fileList td a a.action.disabled img{opacity:.3}.files-fileList td a a.action.disabled.action-download{opacity:.7}.files-fileList td a a.action.disabled.action-download:hover,.files-fileList td a a.action.disabled.action-download:focus{opacity:.7}.files-fileList td a a.action:hover,.files-fileList td a a.action:focus{opacity:1}.files-fileList td a a.action:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.files-fileList td a .fileActionsMenu a.action,.files-fileList td a a.action.action-share.shared-style{opacity:.7}.files-fileList td a .fileActionsMenu .action.permanent{opacity:1}.files-fileList .action.action-share.permanent.shared-style span:not(.icon){display:inline-block;max-width:70px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-left:6px}.files-fileList .remoteAddress .userDomain{margin-left:0 !important}.files-fileList .favorite-mark.permanent{opacity:1}.files-fileList .fileActionsMenu a.action:hover,.files-fileList .fileActionsMenu a.action:focus,.files-fileList a.action.action-share.shared-style:hover,.files-fileList a.action.action-share.shared-style:focus{opacity:1}.files-fileList tr a.action.disabled{background:none}.selectedActions a.download.disabled,.files-fileList tr a.action.action-download.disabled{color:#000}.files-fileList tr:hover a.action.disabled:hover *{cursor:default}.summary{color:var(--color-text-maxcontrast);height:330px}.files-filestable .summary .filesummary{width:100%;padding-left:101px}#body-public .summary{height:180px}.summary:hover,.summary:focus,.summary,table tr.summary td{background-color:rgba(0,0,0,0)}.summary td{border-bottom:none;vertical-align:top;padding-top:20px}.summary td:first-child{padding:0}.hiddeninfo{white-space:pre-line}table.dragshadow{width:auto;z-index:2000}table.dragshadow td.filename{padding-left:60px;padding-right:16px;height:36px;max-width:unset}table.dragshadow td.size{padding-right:8px}.mask{z-index:50;position:absolute;top:0;left:0;right:0;bottom:0;background-color:var(--color-main-background);background-repeat:no-repeat no-repeat;background-position:50%;opacity:.7;transition:opacity 100ms;-moz-transition:opacity 100ms;-o-transition:opacity 100ms;-ms-transition:opacity 100ms;-webkit-transition:opacity 100ms}.mask.transparent{opacity:0}.newFileMenu{font-weight:300;top:100%;left:-48px !important;margin-top:4px;min-width:100px;z-index:1001}.newFileMenu::after{left:61px !important}.files-controls{box-sizing:border-box;position:-webkit-sticky;position:sticky;height:50px;padding:0;margin:0;background-color:var(--color-main-background-translucent);z-index:62;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;top:0;padding-left:50px}.files-controls .actions>div>.button,.files-controls .actions>div button,.files-controls .actions>.button,.files-controls .actions button{box-sizing:border-box;display:inline-block;display:flex;height:44px;width:44px;padding:9px;align-items:center;justify-content:center}.files-controls .actions>div .button.hidden,.files-controls .actions .button.hidden{display:none}.viewer-mode #app-navigation+#app-content .files-controls{left:0}.files-filestable .filename .action .icon,.files-filestable .selectedActions a .icon,.files-filestable .filename .favorite-mark .icon,.files-controls .actions .button .icon{display:inline-block;vertical-align:middle;background-size:16px 16px}.files-filestable .filename .favorite-mark .icon-star{background-image:none}.files-filestable .filename .favorite-mark .icon-starred{background-image:var(--icon-starred-yellow) !important}.files-filestable .filename .action .icon.hidden,.files-filestable .selectedActions a .icon.hidden,.files-controls .actions .button .icon.hidden{display:none}.files-filestable .filename .action .icon.loading,.files-filestable .selectedActions a .icon.loading,.files-controls .actions .button .icon.loading{width:15px;height:15px}.app-files .actions .button.new{position:relative}.breadcrumb{align-items:center}.breadcrumb .icon-home{border-radius:var(--border-radius)}.breadcrumb .canDrop>a,.files-filestable tbody tr.canDrop{background-color:rgba(0,130,201,.3)}.dropzone-background{background-color:rgba(0,130,201,.3)}.dropzone-background :hover{box-shadow:none !important}.notCreatable{margin-left:12px;margin-right:44px;margin-top:12px;color:var(--color-main-text);overflow:auto;min-width:160px;height:54px}.notCreatable:not(.hidden){display:flex}.notCreatable .icon-alert-outline{top:-15px;position:relative;margin-right:4px}.quota-navigation-item{margin:0 !important;border:none;border-radius:0;background-color:rgba(0,0,0,0);z-index:1;height:44px;display:flex !important;flex-direction:column}.quota-navigation-item__text{height:30px}.quota-navigation-item[href="#"],.quota-navigation-item[href="#"] *{cursor:default !important}.quota-navigation-item__container{height:5px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) thead tr{display:block;border-bottom:1px solid var(--color-border);background-color:var(--color-main-background-translucent)}.files-filestable.view-grid:not(.hidden) thead tr th{width:auto;border:none}.files-filestable.view-grid:not(.hidden) tbody{display:grid;grid-template-columns:repeat(auto-fill, 160px);justify-content:space-around;row-gap:15px;margin:15px 0}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden){display:block;position:relative;height:190px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted{background-color:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions{background-color:var(--color-background-hover)}.files-filestable.view-grid:not(.hidden) tbody td{display:inline;border-bottom:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper{min-width:0;max-width:none;position:absolute;width:160px;height:160px;padding:14px;top:0;left:0;z-index:-1}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail{width:calc(100% - 2 * 14px);height:calc(100% - 2 * 14px);background-size:contain;margin:0;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark{left:auto;top:-11px;right:-11px}.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext{width:100%;margin:0;top:0;bottom:auto;height:28px;padding-top:4px;padding-left:28px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name{height:100%;border-radius:var(--border-radius);overflow:hidden;cursor:pointer !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext{display:flex;height:44px;margin-top:146px;text-align:center;line-height:44px;padding:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{display:inline-block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before{content:"";flex:1;min-width:14px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after{content:"";flex:1;min-width:44px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .system-tags{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions{height:initial;margin-top:146px;display:flex;align-items:center;position:absolute;right:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action{padding:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu){display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img{padding:6px;border-radius:50%}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename form{padding:3px 14px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename{width:100%;margin-left:0;cursor:text}.files-filestable.view-grid:not(.hidden) tbody td.filesize,.files-filestable.view-grid:not(.hidden) tbody td.date{display:none}.files-filestable.view-grid:not(.hidden) tbody td.selection,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark{position:absolute;top:-8px;left:-8px;display:flex;z-index:10}.files-filestable.view-grid:not(.hidden) tbody td.selection label,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label{width:44px;height:44px;display:inline-flex;padding:14px}.files-filestable.view-grid:not(.hidden) tbody td.selection label::before,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before{margin:0;width:14px;height:14px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:0;width:150px;margin:0 5px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon){overflow:hidden;text-overflow:ellipsis}.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension{display:block}.files-filestable.view-grid:not(.hidden) tfoot{display:grid}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden){display:inline-block;margin:0 auto;height:418px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td{padding-top:50px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child,.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date{display:none}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info{margin-left:0}#view-toggle{background-color:var(--color-main-background-translucent);border:none;margin:0;padding:22px;opacity:.5;float:right;right:var(--default-grid-baseline);top:var(--default-grid-baseline);z-index:100;position:sticky}#view-toggle:hover,#view-toggle:focus,#showgridview:focus+#view-toggle{opacity:1}#view-toggle:focus-visible,#showgridview:focus-visible+#view-toggle{box-shadow:inset 0 0 0 2px var(--color-primary-element) !important}#showgridview{position:fixed;top:0}#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{max-width:124px}#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:-80px}#body-public #view-toggle{position:absolute;right:0;top:0}#gallery-button{display:none}#tag_multiple_files_container{overflow:hidden;background-color:#fff;border-radius:3px;position:relative;display:flex;flex-wrap:wrap;margin-bottom:10px}#tag_multiple_files_container h3{width:100%;padding:0 18px}#tag_multiple_files_container .systemTagsInputFieldContainer{flex:1 1 80%;min-width:0;margin:0 12px}/*# sourceMappingURL=files.css.map */
+.actions{padding:3px;height:100%;display:inline-block;float:left}.actions input,.actions button,.actions .button{margin:0;float:left}.actions .button a{color:#555}.actions .button a:hover,.actions .button a:focus{background-color:var(--color-background-hover)}.actions .button a:active{background-color:var(--color-primary-element-light)}.actions.creatable{position:relative;display:flex;flex:1 1}.actions.creatable .button:not(:last-child){margin-right:3px}.actions.hidden{display:none}#trash{margin-right:8px;float:right;z-index:1010;padding:10px;font-weight:normal}.newFileMenu .error,.newFileMenu .error+.icon-confirm,.files-fileList .error{color:var(--color-error);border-color:var(--color-error)}.files-filestable{position:relative;width:100%;min-width:250px;display:block;flex-direction:column}.emptycontent:not(.hidden)~.files-filestable{display:none}.files-filestable thead{position:-webkit-sticky;position:sticky;top:44px;z-index:60;display:block;background-color:var(--color-main-background-translucent)}.files-filestable tbody{display:table;width:100%}.files-filestable tbody tr[data-permissions="0"],.files-filestable tbody tr[data-permissions="16"]{background-color:var(--color-background-dark)}.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext{color:var(--color-text-maxcontrast)}.files-filestable tbody tr[data-e2eencrypted=true] .selection{pointer-events:none}.files-filestable.hidden{display:none}.app-files #app-content>.viewcontainer{min-height:0%;width:100%}.app-files #app-content{width:calc(100% - 300px);overflow-anchor:none}.file-drag,.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:var(--color-primary-element-light) !important}.app-files #app-content.dir-drop{background-color:var(--color-main-background) !important}.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:rgba(0,0,0,0) !important}.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{background-color:var(--color-primary-element-light) !important}.nav-icon-files{background-image:var(--icon-folder-dark)}.nav-icon-recent{background-image:var(--icon-recent-dark)}.nav-icon-favorites{background-image:var(--icon-starred-dark)}.nav-icon-sharingin,.nav-icon-sharingout,.nav-icon-pendingshares,.nav-icon-shareoverview{background-image:var(--icon-share-dark)}.nav-icon-sharinglinks{background-image:var(--icon-public-dark)}.nav-icon-extstoragemounts{background-image:var(--icon-external-dark)}.nav-icon-trashbin{background-image:var(--icon-delete-dark)}.nav-icon-trashbin-starred{background-image:var(--icon-delete-#ff0000)}.nav-icon-deletedshares{background-image:var(--icon-unshare-dark)}.nav-icon-favorites-starred{background-image:var(--icon-starred-yellow)}#app-navigation .nav-files a.nav-icon-files{width:auto}#app-navigation .nav-files a.new{width:40px;height:32px;padding:0 10px;margin:0;cursor:pointer}#app-navigation .nav-files a.new.hidden{display:none}#app-navigation .nav-files a.new.disabled{opacity:.3}.files-filestable tbody tr{height:51px}.files-filestable tbody tr:hover,.files-filestable tbody tr:focus,.files-filestable tbody .name:focus,.files-filestable tbody tr:hover .filename form,table tr.mouseOver td{background-color:var(--color-background-hover)}.files-filestable tbody tr:active,.files-filestable tbody tr.highlighted,.files-filestable tbody tr.highlighted .name:focus,.files-filestable tbody tr.selected,.files-filestable tbody tr.searchresult{background-color:var(--color-primary-element-light)}tbody a{color:var(--color-main-text)}span.conflict-path,span.extension,span.uploading,td.date{color:var(--color-text-maxcontrast)}span.conflict-path,span.extension{-webkit-transition:opacity 300ms;-moz-transition:opacity 300ms;-o-transition:opacity 300ms;transition:opacity 300ms;vertical-align:top}tr:hover span.conflict-path,tr:focus span.conflict-path,tr:hover span.extension,tr:focus span.extension{opacity:1;color:var(--color-text-maxcontrast)}table th,table th a{color:var(--color-text-maxcontrast)}table.multiselect th a{color:var(--color-main-text)}table th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}table th .columntitle:focus-visible{border-radius:2px}table.multiselect th .columntitle{display:inline-block;margin-right:-20px}table th .columntitle.name{padding-left:0;margin-left:44px}table.multiselect th .columntitle.name{margin-left:0}table th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}.sort-indicator.hidden,.multiselect .sort-indicator,table.multiselect th:hover .sort-indicator.hidden,table.multiselect th:focus .sort-indicator.hidden{visibility:hidden}.multiselect .sort,.multiselect .sort span{cursor:default}table th:hover .sort-indicator.hidden,table th:focus .sort-indicator.hidden{visibility:visible}table th,table td{border-bottom:1px solid var(--color-border);text-align:left;font-weight:normal}table td{padding:0 15px;font-style:normal;background-position:8px center;background-repeat:no-repeat}table th.column-name{position:relative;width:9999px;padding:0}.column-name-container{position:relative;height:50px}table th.column-selection{padding-top:2px}table th.column-size,table td.filesize{text-align:right}table th.column-mtime,table td.date,table th.column-last,table td.column-last{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;min-width:130px}#app-content-recent,#app-content-favorites,#app-content-shareoverview,#app-content-sharingout,#app-content-sharingin,#app-content-sharinglinks,#app-content-deletedshares,#app-content-pendingshares{margin-top:22px}#app-content-recent thead,#app-content-favorites thead,#app-content-shareoverview thead,#app-content-sharingout thead,#app-content-sharingin thead,#app-content-sharinglinks thead,#app-content-deletedshares thead,#app-content-pendingshares thead{top:0}table.multiselect thead th{background-color:var(--color-main-background-translucent);font-weight:bold}#app-content.with-app-sidebar table.multiselect thead{margin-right:27%}table.multiselect .column-name{position:relative;width:9999px}table.multiselect .column-mtime>a{display:none}table td.selection,table th.selection,table td.fileaction{width:32px;text-align:center}table td.filename a.name,table td.filename p.name{display:flex;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;height:50px;line-height:50px;padding:0}table td.filename .thumbnail-wrapper{width:0;min-width:50px;max-width:50px;height:50px}table td.filename .thumbnail-wrapper.icon-loading-small:after{z-index:10}table td.filename .thumbnail-wrapper.icon-loading-small .thumbnail{opacity:.2}table td.filename .thumbnail{display:inline-block;width:32px;height:32px;background-size:contain;background-position:center;background-repeat:no-repeat;margin-left:9px;margin-top:9px;border-radius:var(--border-radius);cursor:pointer;position:absolute;z-index:4}table td.filename p.name .thumbnail{cursor:default}table tr[data-has-preview=true] .thumbnail{border:1px solid var(--color-border)}table:not(.view-grid) td.filename input.filename{width:70% !important;margin-left:48px !important;cursor:text}table td.filename form{margin-top:-40px;position:relative;top:-6px}table td.filename a,table td.login,table td.logout,table td.download,table td.upload,table td.create,table td.delete{padding:3px 8px 8px 3px}table td.filename .nametext,.modified,.column-last>span:first-child{float:left;padding:15px 0}.modified,.column-last>span:first-child{position:relative;overflow:hidden;text-overflow:ellipsis;width:110px}table td.filename{max-width:0}table td.filename .nametext{width:0;flex-grow:1;display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:100%;z-index:10;padding:0 20px 0 0}table td.filename .system-tags{--min-size: 32px;display:flex;justify-content:center;align-items:center;min-width:calc(var(--min-size)*2);max-width:300px}table td.filename .system-tags .system-tags__tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}table td.filename .system-tags .system-tags__tag--more{overflow:visible;text-overflow:initial}table td.filename .system-tags .system-tags__tag+.system-tags__tag{margin-left:5px}.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging{display:none !important}.files-fileList tr.animate-opacity{-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.files-fileList tr.dragging{opacity:.2}table td.filename .nametext .innernametext{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top}table td.filename .uploadtext{position:absolute;font-weight:normal;margin-left:50px;left:0;bottom:0;height:20px;padding:0 4px;padding-left:1px;font-size:11px;line-height:22px;color:var(--color-text-maxcontrast);text-overflow:ellipsis;white-space:nowrap}table td.selection{padding:0}.files-fileList tr td.selection>.selectCheckBox+label:before{opacity:.3;margin-right:0}.files-fileList tr:hover td.selection>.selectCheckBox+label:before,.files-fileList tr:focus td.selection>.selectCheckBox+label:before,.files-fileList tr td.selection>.selectCheckBox:checked+label:before,.files-fileList tr.selected td.selection>.selectCheckBox+label:before{opacity:1}.files-fileList tr.halfselected td.selection>.selectCheckBox+label:before{opacity:.5}.files-fileList tr td.selection>.selectCheckBox+label,.select-all+label{padding:16px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill);outline:none !important;border:2px solid var(--color-primary-element) !important;padding:14px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{outline-offset:0px}.files-fileList tr td.filename{position:relative;width:100%;padding-left:0;padding-right:0;-webkit-transition:background-image 500ms;-moz-transition:background-image 500ms;-o-transition:background-image 500ms;transition:background-image 500ms}.files-fileList tr td.filename a.name label,.files-fileList tr td.filename p.name label{position:absolute;width:80%;height:50px}.files-fileList tr td.filename .favorite{display:inline-block;float:left}.files-fileList tr td.filename .favorite-mark{position:absolute;display:block;top:-8px;right:-8px;line-height:100%;text-align:center}.files-fileList tr td.filename .favorite-mark.permanent{background-color:var(--color-main-background);mask:var(--icon-star-rounded-white) no-repeat;mask-size:22px 22px;width:22px;height:22px;display:flex;align-content:center;justify-content:center}.files-fileList tr:hover td.filename .favorite-mark.permanent{background-color:var(--color-background-hover)}#uploadsize-message,#delete-confirm{display:none}.fileactions{z-index:50}.busy .fileactions,.busy .action{visibility:hidden}.bubble,#app-navigation .app-navigation-entry-menu{min-width:100px}.files-fileList .icon-loading-small{opacity:1 !important;display:inline !important}.files-fileList .action.action-share-notification span,.files-fileList a.name{cursor:default !important}.files-fileList a.name.disabled *{cursor:default}.files-fileList a.name.disabled a,.files-fileList a.name.disabled a *{cursor:pointer}.files-fileList a.name.disabled:focus{background:none}a.action>img{height:16px;width:16px;vertical-align:text-bottom}a.action.action-editlocally img.icon{filter:var(--background-invert-if-dark)}.selectedActions{position:relative;display:inline-block;vertical-align:middle}.selectedActions.hidden{display:none}.selectedActions a{display:inline;line-height:50px;padding:16px 5px}.selectedActions a.hidden{display:none}.selectedActions a img{position:relative;vertical-align:text-bottom;margin-bottom:-1px}.selectedActions .actions-selected .icon-more{margin-top:-3px}.files-fileList td a a.action{display:inline;padding:17px 8px;line-height:50px;opacity:.3}.files-fileList td a a.action.action-share{padding:17px 14px}.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared+span{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.files-fileList td a a.action.action-share .avatar{display:inline-block;vertical-align:middle}.files-fileList td a a.action.action-menu{padding-top:17px;padding-bottom:17px;padding-left:14px;padding-right:14px}.files-fileList td a a.action.no-permission:hover,.files-fileList td a a.action.no-permission:focus{opacity:.3}.files-fileList td a a.action.disabled:hover,.files-fileList td a a.action.disabled:focus,.files-fileList td a a.action.disabled img{opacity:.3}.files-fileList td a a.action.disabled.action-download{opacity:.7}.files-fileList td a a.action.disabled.action-download:hover,.files-fileList td a a.action.disabled.action-download:focus{opacity:.7}.files-fileList td a a.action:hover,.files-fileList td a a.action:focus{opacity:1}.files-fileList td a a.action:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.files-fileList td a .fileActionsMenu a.action,.files-fileList td a a.action.action-share.shared-style{opacity:.7}.files-fileList td a .fileActionsMenu .action.permanent{opacity:1}.files-fileList .action.action-share.permanent.shared-style span:not(.icon){display:inline-block;max-width:70px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-left:6px}.files-fileList .remoteAddress .userDomain{margin-left:0 !important}.files-fileList .favorite-mark.permanent{opacity:1}.files-fileList .fileActionsMenu a.action:hover,.files-fileList .fileActionsMenu a.action:focus,.files-fileList a.action.action-share.shared-style:hover,.files-fileList a.action.action-share.shared-style:focus{opacity:1}.files-fileList tr a.action.disabled{background:none}.selectedActions a.download.disabled,.files-fileList tr a.action.action-download.disabled{color:#000}.files-fileList tr:hover a.action.disabled:hover *{cursor:default}.summary{color:var(--color-text-maxcontrast);height:330px}.files-filestable .summary .filesummary{width:100%;padding-left:101px}#body-public .summary{height:180px}.summary:hover,.summary:focus,.summary,table tr.summary td{background-color:rgba(0,0,0,0)}.summary td{border-bottom:none;vertical-align:top;padding-top:20px}.summary td:first-child{padding:0}.hiddeninfo{white-space:pre-line}table.dragshadow{width:auto;z-index:2000}table.dragshadow td.filename{padding-left:60px;padding-right:16px;height:36px;max-width:unset}table.dragshadow td.size{padding-right:8px}.mask{z-index:50;position:absolute;top:0;left:0;right:0;bottom:0;background-color:var(--color-main-background);background-repeat:no-repeat no-repeat;background-position:50%;opacity:.7;transition:opacity 100ms;-moz-transition:opacity 100ms;-o-transition:opacity 100ms;-ms-transition:opacity 100ms;-webkit-transition:opacity 100ms}.mask.transparent{opacity:0}.newFileMenu{font-weight:300;top:100%;left:-48px !important;margin-top:4px;min-width:100px;z-index:1001}.newFileMenu::after{left:61px !important}.files-controls{box-sizing:border-box;position:-webkit-sticky;position:sticky;height:50px;padding:0;margin:0;background-color:var(--color-main-background-translucent);z-index:62;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;top:0;padding-left:50px}.files-controls .actions>div>.button,.files-controls .actions>div button,.files-controls .actions>.button,.files-controls .actions button{box-sizing:border-box;display:inline-block;display:flex;height:44px;width:44px;padding:9px;align-items:center;justify-content:center}.files-controls .actions>div .button.hidden,.files-controls .actions .button.hidden{display:none}.viewer-mode #app-navigation+#app-content .files-controls{left:0}.files-filestable .filename .action .icon,.files-filestable .selectedActions a .icon,.files-filestable .filename .favorite-mark .icon,.files-controls .actions .button .icon{display:inline-block;vertical-align:middle;background-size:16px 16px}.files-filestable .filename .favorite-mark .icon-star{background-image:none}.files-filestable .filename .favorite-mark .icon-starred{background-image:var(--icon-starred-yellow) !important}.files-filestable .filename .action .icon.hidden,.files-filestable .selectedActions a .icon.hidden,.files-controls .actions .button .icon.hidden{display:none}.files-filestable .filename .action .icon.loading,.files-filestable .selectedActions a .icon.loading,.files-controls .actions .button .icon.loading{width:15px;height:15px}.app-files .actions .button.new{position:relative}.breadcrumb{align-items:center}.breadcrumb .icon-home{border-radius:var(--border-radius)}.breadcrumb .canDrop>a,.files-filestable tbody tr.canDrop{background-color:rgba(0,130,201,.3)}.dropzone-background{background-color:rgba(0,130,201,.3)}.dropzone-background :hover{box-shadow:none !important}.notCreatable{margin-left:12px;margin-right:44px;margin-top:12px;color:var(--color-main-text);overflow:auto;min-width:160px;height:54px}.notCreatable:not(.hidden){display:flex}.notCreatable .icon-alert-outline{top:-15px;position:relative;margin-right:4px}.quota-navigation-item{margin:0 !important;border:none;border-radius:0;background-color:rgba(0,0,0,0);z-index:1;height:44px;display:flex !important;flex-direction:column}.quota-navigation-item__text{height:30px}.quota-navigation-item[href="#"],.quota-navigation-item[href="#"] *{cursor:default !important}.quota-navigation-item__container{height:5px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) thead tr{display:block;border-bottom:1px solid var(--color-border);background-color:var(--color-main-background-translucent)}.files-filestable.view-grid:not(.hidden) thead tr th{width:auto;border:none}.files-filestable.view-grid:not(.hidden) tbody{display:grid;grid-template-columns:repeat(auto-fill, 160px);justify-content:space-around;row-gap:15px;margin:15px 0}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden){display:block;position:relative;height:190px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted{background-color:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions{background-color:var(--color-background-hover)}.files-filestable.view-grid:not(.hidden) tbody td{display:inline;border-bottom:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper{min-width:0;max-width:none;position:absolute;width:160px;height:160px;padding:14px;top:0;left:0;z-index:-1}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail{width:calc(100% - 2 * 14px);height:calc(100% - 2 * 14px);background-size:contain;margin:0;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark{left:auto;top:-11px;right:-11px}.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext{width:100%;margin:0;top:0;bottom:auto;height:28px;padding-top:4px;padding-left:28px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name{height:100%;border-radius:var(--border-radius);overflow:hidden;cursor:pointer !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext{display:flex;height:44px;margin-top:146px;text-align:center;line-height:44px;padding:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{display:inline-block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before{content:"";flex:1;min-width:14px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after{content:"";flex:1;min-width:44px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .system-tags{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions{height:initial;margin-top:146px;display:flex;align-items:center;position:absolute;right:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action{padding:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu){display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img{padding:6px;border-radius:50%}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename form{padding:3px 14px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename{width:100%;margin-left:0;cursor:text}.files-filestable.view-grid:not(.hidden) tbody td.filesize,.files-filestable.view-grid:not(.hidden) tbody td.date{display:none}.files-filestable.view-grid:not(.hidden) tbody td.selection,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark{position:absolute;top:-8px;left:-8px;display:flex;z-index:10}.files-filestable.view-grid:not(.hidden) tbody td.selection label,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label{width:44px;height:44px;display:inline-flex;padding:14px}.files-filestable.view-grid:not(.hidden) tbody td.selection label::before,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before{margin:0;width:14px;height:14px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:0;width:150px;margin:0 5px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon){overflow:hidden;text-overflow:ellipsis}.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension{display:block}.files-filestable.view-grid:not(.hidden) tfoot{display:grid}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden){display:inline-block;margin:0 auto;height:418px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td{padding-top:50px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child,.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date{display:none}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info{margin-left:0}#view-toggle{background-color:var(--color-main-background-translucent);border:none;margin:0;padding:22px;opacity:.5;float:right;right:var(--default-grid-baseline);top:var(--default-grid-baseline);z-index:100;position:sticky}#view-toggle:hover,#view-toggle:focus,#showgridview:focus+#view-toggle{opacity:1}#view-toggle:focus-visible,#showgridview:focus-visible+#view-toggle{box-shadow:inset 0 0 0 2px var(--color-primary-element) !important}#showgridview{position:fixed;top:0}#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{max-width:124px}#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:-80px}#body-public #view-toggle{position:absolute;right:0;top:0}#gallery-button{display:none}#tag_multiple_files_container{overflow:hidden;background-color:#fff;border-radius:3px;position:relative;display:flex;flex-wrap:wrap;margin-bottom:10px}#tag_multiple_files_container h3{width:100%;padding:0 18px}#tag_multiple_files_container .systemTagsInputFieldContainer{flex:1 1 80%;min-width:0;margin:0 12px}/*# sourceMappingURL=files.css.map */
diff --git a/apps/files/css/files.css.map b/apps/files/css/files.css.map
index 0da56c7206b..14c23a8f68d 100644
--- a/apps/files/css/files.css.map
+++ b/apps/files/css/files.css.map
@@ -1 +1 @@
-{"version":3,"sourceRoot":"","sources":["files.scss","../../../core/css/functions.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,oDAGD,mBACC,kBACA,aACA,SACA,4CACC,iBAIF,gBACC,aAGD,OACC,iBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAEA,qBAGD,6FACC,+DAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,+DAID,gBCxEC,yCD2ED,iBC3EC,yCD8ED,oBC9EC,0CDiFD,yFCjFC,wCDuFD,uBCvFC,yCD0FD,2BC1FC,2CD6FD,mBC7FC,yCDgGD,2BChGC,4CDmGD,wBCnGC,0CDsGD,4BCtGC,4CD0GD,4CACC,WAGD,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,oDAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,mBAED,2BACC,eACA,iBAGD,uCACC,cAGD,yBACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,gBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,iBAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,iBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,gBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,4BACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,mBAID,+BACC,iBACA,aACA,uBACA,mBACA,cACA,kCACA,gBAEA,iDACC,iBACA,iBACA,wCACA,iCACA,oCACA,uBACA,mBACA,gBACA,uBACA,iBACA,kBAEA,uDACC,iBACA,sBAID,mEACC,gBAOL,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,iBACA,OACA,SACA,YACA,cAEA,iBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,eAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,yDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,eACA,gBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,WACA,iBACA,kBACA,wDAEC,8CACA,8CACA,oBAEA,WACA,YACA,aACA,qBACA,uBAGF,8DACC,+CAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAGD,qCACC,wCAID,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,cACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,kBACA,mBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,gBAGD,2CACC,yBAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,mBAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,kBACA,mBACA,YAGA,gBAED,yBACC,kBAED,MACC,WACA,kBACA,MACA,OACA,QACA,SACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,sBACA,eACA,gBACA,aAGA,oBACC,qBAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,kBAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,OAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,iBACA,kBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,iBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,OACA,WAEA,yFACC,4BACA,6BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,UACA,UACA,YAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,kBAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,QAEA,sFACC,QAxJK,KAyJL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,cACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,UACA,aACA,WAEA,kJACC,WACA,YACA,oBACA,QAzNO,KA0NP,kKACC,SACA,MA5NM,KA6NN,OA7NM,KAmOT,+DACC,OACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,cAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,mCACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,mEASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,WAKF,0BACC,kBACA,QACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA","file":"files.css"} \ No newline at end of file
+{"version":3,"sourceRoot":"","sources":["files.scss","../../../core/css/functions.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,oDAGD,mBACC,kBACA,aACA,SACA,4CACC,iBAIF,gBACC,aAGD,OACC,iBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAEA,qBAGD,6FACC,+DAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,+DAID,gBCxEC,yCD2ED,iBC3EC,yCD8ED,oBC9EC,0CDiFD,yFCjFC,wCDuFD,uBCvFC,yCD0FD,2BC1FC,2CD6FD,mBC7FC,yCDgGD,2BChGC,4CDmGD,wBCnGC,0CDsGD,4BCtGC,4CD0GD,4CACC,WAGD,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,oDAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,mBAED,2BACC,eACA,iBAGD,uCACC,cAGD,yBACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,gBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,iBAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,iBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,gBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,4BACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,mBAID,+BACC,iBACA,aACA,uBACA,mBACA,kCACA,gBAEA,iDACC,iBACA,iBACA,wCACA,iCACA,oCACA,uBACA,mBACA,gBACA,uBACA,iBACA,kBAEA,uDACC,iBACA,sBAID,mEACC,gBAOL,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,iBACA,OACA,SACA,YACA,cAEA,iBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,eAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,yDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,eACA,gBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,WACA,iBACA,kBACA,wDAEC,8CACA,8CACA,oBAEA,WACA,YACA,aACA,qBACA,uBAGF,8DACC,+CAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAGD,qCACC,wCAID,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,cACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,kBACA,mBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,gBAGD,2CACC,yBAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,mBAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,kBACA,mBACA,YAGA,gBAED,yBACC,kBAED,MACC,WACA,kBACA,MACA,OACA,QACA,SACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,sBACA,eACA,gBACA,aAGA,oBACC,qBAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,kBAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,OAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,iBACA,kBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,iBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,OACA,WAEA,yFACC,4BACA,6BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,UACA,UACA,YAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,kBAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,QAEA,sFACC,QAxJK,KAyJL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,cACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,UACA,aACA,WAEA,kJACC,WACA,YACA,oBACA,QAzNO,KA0NP,kKACC,SACA,MA5NM,KA6NN,OA7NM,KAmOT,+DACC,OACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,cAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,mCACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,mEASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,WAKF,0BACC,kBACA,QACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA","file":"files.css"} \ No newline at end of file
diff --git a/apps/files/css/files.scss b/apps/files/css/files.scss
index 0bd8495c9ac..0437ad79875 100644
--- a/apps/files/css/files.scss
+++ b/apps/files/css/files.scss
@@ -445,7 +445,6 @@ table {
display: flex;
justify-content: center;
align-items: center;
- flex: 1 1 100%;
min-width: calc(var(--min-size) * 2);
max-width: 300px;
diff --git a/apps/files/css/merged.css b/apps/files/css/merged.css
index c567f17a1c0..38574ea3b86 100644
--- a/apps/files/css/merged.css
+++ b/apps/files/css/merged.css
@@ -1 +1 @@
-.actions{padding:3px;height:100%;display:inline-block;float:left}.actions input,.actions button,.actions .button{margin:0;float:left}.actions .button a{color:#555}.actions .button a:hover,.actions .button a:focus{background-color:var(--color-background-hover)}.actions .button a:active{background-color:var(--color-primary-element-light)}.actions.creatable{position:relative;display:flex;flex:1 1}.actions.creatable .button:not(:last-child){margin-right:3px}.actions.hidden{display:none}#trash{margin-right:8px;float:right;z-index:1010;padding:10px;font-weight:normal}.newFileMenu .error,.newFileMenu .error+.icon-confirm,.files-fileList .error{color:var(--color-error);border-color:var(--color-error)}.files-filestable{position:relative;width:100%;min-width:250px;display:block;flex-direction:column}.emptycontent:not(.hidden)~.files-filestable{display:none}.files-filestable thead{position:-webkit-sticky;position:sticky;top:44px;z-index:60;display:block;background-color:var(--color-main-background-translucent)}.files-filestable tbody{display:table;width:100%}.files-filestable tbody tr[data-permissions="0"],.files-filestable tbody tr[data-permissions="16"]{background-color:var(--color-background-dark)}.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext{color:var(--color-text-maxcontrast)}.files-filestable tbody tr[data-e2eencrypted=true] .selection{pointer-events:none}.files-filestable.hidden{display:none}.app-files #app-content>.viewcontainer{min-height:0%;width:100%}.app-files #app-content{width:calc(100% - 300px);overflow-anchor:none}.file-drag,.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:var(--color-primary-element-light) !important}.app-files #app-content.dir-drop{background-color:var(--color-main-background) !important}.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:rgba(0,0,0,0) !important}.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{background-color:var(--color-primary-element-light) !important}.nav-icon-files{background-image:var(--icon-folder-dark)}.nav-icon-recent{background-image:var(--icon-recent-dark)}.nav-icon-favorites{background-image:var(--icon-starred-dark)}.nav-icon-sharingin,.nav-icon-sharingout,.nav-icon-pendingshares,.nav-icon-shareoverview{background-image:var(--icon-share-dark)}.nav-icon-sharinglinks{background-image:var(--icon-public-dark)}.nav-icon-extstoragemounts{background-image:var(--icon-external-dark)}.nav-icon-trashbin{background-image:var(--icon-delete-dark)}.nav-icon-trashbin-starred{background-image:var(--icon-delete-#ff0000)}.nav-icon-deletedshares{background-image:var(--icon-unshare-dark)}.nav-icon-favorites-starred{background-image:var(--icon-starred-yellow)}#app-navigation .nav-files a.nav-icon-files{width:auto}#app-navigation .nav-files a.new{width:40px;height:32px;padding:0 10px;margin:0;cursor:pointer}#app-navigation .nav-files a.new.hidden{display:none}#app-navigation .nav-files a.new.disabled{opacity:.3}.files-filestable tbody tr{height:51px}.files-filestable tbody tr:hover,.files-filestable tbody tr:focus,.files-filestable tbody .name:focus,.files-filestable tbody tr:hover .filename form,table tr.mouseOver td{background-color:var(--color-background-hover)}.files-filestable tbody tr:active,.files-filestable tbody tr.highlighted,.files-filestable tbody tr.highlighted .name:focus,.files-filestable tbody tr.selected,.files-filestable tbody tr.searchresult{background-color:var(--color-primary-element-light)}tbody a{color:var(--color-main-text)}span.conflict-path,span.extension,span.uploading,td.date{color:var(--color-text-maxcontrast)}span.conflict-path,span.extension{-webkit-transition:opacity 300ms;-moz-transition:opacity 300ms;-o-transition:opacity 300ms;transition:opacity 300ms;vertical-align:top}tr:hover span.conflict-path,tr:focus span.conflict-path,tr:hover span.extension,tr:focus span.extension{opacity:1;color:var(--color-text-maxcontrast)}table th,table th a{color:var(--color-text-maxcontrast)}table.multiselect th a{color:var(--color-main-text)}table th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}table th .columntitle:focus-visible{border-radius:2px}table.multiselect th .columntitle{display:inline-block;margin-right:-20px}table th .columntitle.name{padding-left:0;margin-left:44px}table.multiselect th .columntitle.name{margin-left:0}table th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}.sort-indicator.hidden,.multiselect .sort-indicator,table.multiselect th:hover .sort-indicator.hidden,table.multiselect th:focus .sort-indicator.hidden{visibility:hidden}.multiselect .sort,.multiselect .sort span{cursor:default}table th:hover .sort-indicator.hidden,table th:focus .sort-indicator.hidden{visibility:visible}table th,table td{border-bottom:1px solid var(--color-border);text-align:left;font-weight:normal}table td{padding:0 15px;font-style:normal;background-position:8px center;background-repeat:no-repeat}table th.column-name{position:relative;width:9999px;padding:0}.column-name-container{position:relative;height:50px}table th.column-selection{padding-top:2px}table th.column-size,table td.filesize{text-align:right}table th.column-mtime,table td.date,table th.column-last,table td.column-last{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;min-width:130px}#app-content-recent,#app-content-favorites,#app-content-shareoverview,#app-content-sharingout,#app-content-sharingin,#app-content-sharinglinks,#app-content-deletedshares,#app-content-pendingshares{margin-top:22px}#app-content-recent thead,#app-content-favorites thead,#app-content-shareoverview thead,#app-content-sharingout thead,#app-content-sharingin thead,#app-content-sharinglinks thead,#app-content-deletedshares thead,#app-content-pendingshares thead{top:0}table.multiselect thead th{background-color:var(--color-main-background-translucent);font-weight:bold}#app-content.with-app-sidebar table.multiselect thead{margin-right:27%}table.multiselect .column-name{position:relative;width:9999px}table.multiselect .column-mtime>a{display:none}table td.selection,table th.selection,table td.fileaction{width:32px;text-align:center}table td.filename a.name,table td.filename p.name{display:flex;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;height:50px;line-height:50px;padding:0}table td.filename .thumbnail-wrapper{width:0;min-width:50px;max-width:50px;height:50px}table td.filename .thumbnail-wrapper.icon-loading-small:after{z-index:10}table td.filename .thumbnail-wrapper.icon-loading-small .thumbnail{opacity:.2}table td.filename .thumbnail{display:inline-block;width:32px;height:32px;background-size:contain;background-position:center;background-repeat:no-repeat;margin-left:9px;margin-top:9px;border-radius:var(--border-radius);cursor:pointer;position:absolute;z-index:4}table td.filename p.name .thumbnail{cursor:default}table tr[data-has-preview=true] .thumbnail{border:1px solid var(--color-border)}table:not(.view-grid) td.filename input.filename{width:70% !important;margin-left:48px !important;cursor:text}table td.filename form{margin-top:-40px;position:relative;top:-6px}table td.filename a,table td.login,table td.logout,table td.download,table td.upload,table td.create,table td.delete{padding:3px 8px 8px 3px}table td.filename .nametext,.modified,.column-last>span:first-child{float:left;padding:15px 0}.modified,.column-last>span:first-child{position:relative;overflow:hidden;text-overflow:ellipsis;width:110px}table td.filename{max-width:0}table td.filename .nametext{width:0;flex-grow:1;display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:100%;z-index:10;padding:0 20px 0 0}table td.filename .system-tags{--min-size: 32px;display:flex;justify-content:center;align-items:center;flex:1 1 100%;min-width:calc(var(--min-size)*2);max-width:300px}table td.filename .system-tags .system-tags__tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}table td.filename .system-tags .system-tags__tag--more{overflow:visible;text-overflow:initial}table td.filename .system-tags .system-tags__tag+.system-tags__tag{margin-left:5px}.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging{display:none !important}.files-fileList tr.animate-opacity{-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.files-fileList tr.dragging{opacity:.2}table td.filename .nametext .innernametext{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top}table td.filename .uploadtext{position:absolute;font-weight:normal;margin-left:50px;left:0;bottom:0;height:20px;padding:0 4px;padding-left:1px;font-size:11px;line-height:22px;color:var(--color-text-maxcontrast);text-overflow:ellipsis;white-space:nowrap}table td.selection{padding:0}.files-fileList tr td.selection>.selectCheckBox+label:before{opacity:.3;margin-right:0}.files-fileList tr:hover td.selection>.selectCheckBox+label:before,.files-fileList tr:focus td.selection>.selectCheckBox+label:before,.files-fileList tr td.selection>.selectCheckBox:checked+label:before,.files-fileList tr.selected td.selection>.selectCheckBox+label:before{opacity:1}.files-fileList tr.halfselected td.selection>.selectCheckBox+label:before{opacity:.5}.files-fileList tr td.selection>.selectCheckBox+label,.select-all+label{padding:16px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill);outline:none !important;border:2px solid var(--color-primary-element) !important;padding:14px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{outline-offset:0px}.files-fileList tr td.filename{position:relative;width:100%;padding-left:0;padding-right:0;-webkit-transition:background-image 500ms;-moz-transition:background-image 500ms;-o-transition:background-image 500ms;transition:background-image 500ms}.files-fileList tr td.filename a.name label,.files-fileList tr td.filename p.name label{position:absolute;width:80%;height:50px}.files-fileList tr td.filename .favorite{display:inline-block;float:left}.files-fileList tr td.filename .favorite-mark{position:absolute;display:block;top:-8px;right:-8px;line-height:100%;text-align:center}.files-fileList tr td.filename .favorite-mark.permanent{background-color:var(--color-main-background);mask:var(--icon-star-rounded-white) no-repeat;mask-size:22px 22px;width:22px;height:22px;display:flex;align-content:center;justify-content:center}.files-fileList tr:hover td.filename .favorite-mark.permanent{background-color:var(--color-background-hover)}#uploadsize-message,#delete-confirm{display:none}.fileactions{z-index:50}.busy .fileactions,.busy .action{visibility:hidden}.bubble,#app-navigation .app-navigation-entry-menu{min-width:100px}.files-fileList .icon-loading-small{opacity:1 !important;display:inline !important}.files-fileList .action.action-share-notification span,.files-fileList a.name{cursor:default !important}.files-fileList a.name.disabled *{cursor:default}.files-fileList a.name.disabled a,.files-fileList a.name.disabled a *{cursor:pointer}.files-fileList a.name.disabled:focus{background:none}a.action>img{height:16px;width:16px;vertical-align:text-bottom}a.action.action-editlocally img.icon{filter:var(--background-invert-if-dark)}.selectedActions{position:relative;display:inline-block;vertical-align:middle}.selectedActions.hidden{display:none}.selectedActions a{display:inline;line-height:50px;padding:16px 5px}.selectedActions a.hidden{display:none}.selectedActions a img{position:relative;vertical-align:text-bottom;margin-bottom:-1px}.selectedActions .actions-selected .icon-more{margin-top:-3px}.files-fileList td a a.action{display:inline;padding:17px 8px;line-height:50px;opacity:.3}.files-fileList td a a.action.action-share{padding:17px 14px}.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared+span{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.files-fileList td a a.action.action-share .avatar{display:inline-block;vertical-align:middle}.files-fileList td a a.action.action-menu{padding-top:17px;padding-bottom:17px;padding-left:14px;padding-right:14px}.files-fileList td a a.action.no-permission:hover,.files-fileList td a a.action.no-permission:focus{opacity:.3}.files-fileList td a a.action.disabled:hover,.files-fileList td a a.action.disabled:focus,.files-fileList td a a.action.disabled img{opacity:.3}.files-fileList td a a.action.disabled.action-download{opacity:.7}.files-fileList td a a.action.disabled.action-download:hover,.files-fileList td a a.action.disabled.action-download:focus{opacity:.7}.files-fileList td a a.action:hover,.files-fileList td a a.action:focus{opacity:1}.files-fileList td a a.action:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.files-fileList td a .fileActionsMenu a.action,.files-fileList td a a.action.action-share.shared-style{opacity:.7}.files-fileList td a .fileActionsMenu .action.permanent{opacity:1}.files-fileList .action.action-share.permanent.shared-style span:not(.icon){display:inline-block;max-width:70px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-left:6px}.files-fileList .remoteAddress .userDomain{margin-left:0 !important}.files-fileList .favorite-mark.permanent{opacity:1}.files-fileList .fileActionsMenu a.action:hover,.files-fileList .fileActionsMenu a.action:focus,.files-fileList a.action.action-share.shared-style:hover,.files-fileList a.action.action-share.shared-style:focus{opacity:1}.files-fileList tr a.action.disabled{background:none}.selectedActions a.download.disabled,.files-fileList tr a.action.action-download.disabled{color:#000}.files-fileList tr:hover a.action.disabled:hover *{cursor:default}.summary{color:var(--color-text-maxcontrast);height:330px}.files-filestable .summary .filesummary{width:100%;padding-left:101px}#body-public .summary{height:180px}.summary:hover,.summary:focus,.summary,table tr.summary td{background-color:rgba(0,0,0,0)}.summary td{border-bottom:none;vertical-align:top;padding-top:20px}.summary td:first-child{padding:0}.hiddeninfo{white-space:pre-line}table.dragshadow{width:auto;z-index:2000}table.dragshadow td.filename{padding-left:60px;padding-right:16px;height:36px;max-width:unset}table.dragshadow td.size{padding-right:8px}.mask{z-index:50;position:absolute;top:0;left:0;right:0;bottom:0;background-color:var(--color-main-background);background-repeat:no-repeat no-repeat;background-position:50%;opacity:.7;transition:opacity 100ms;-moz-transition:opacity 100ms;-o-transition:opacity 100ms;-ms-transition:opacity 100ms;-webkit-transition:opacity 100ms}.mask.transparent{opacity:0}.newFileMenu{font-weight:300;top:100%;left:-48px !important;margin-top:4px;min-width:100px;z-index:1001}.newFileMenu::after{left:61px !important}.files-controls{box-sizing:border-box;position:-webkit-sticky;position:sticky;height:50px;padding:0;margin:0;background-color:var(--color-main-background-translucent);z-index:62;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;top:0;padding-left:50px}.files-controls .actions>div>.button,.files-controls .actions>div button,.files-controls .actions>.button,.files-controls .actions button{box-sizing:border-box;display:inline-block;display:flex;height:44px;width:44px;padding:9px;align-items:center;justify-content:center}.files-controls .actions>div .button.hidden,.files-controls .actions .button.hidden{display:none}.viewer-mode #app-navigation+#app-content .files-controls{left:0}.files-filestable .filename .action .icon,.files-filestable .selectedActions a .icon,.files-filestable .filename .favorite-mark .icon,.files-controls .actions .button .icon{display:inline-block;vertical-align:middle;background-size:16px 16px}.files-filestable .filename .favorite-mark .icon-star{background-image:none}.files-filestable .filename .favorite-mark .icon-starred{background-image:var(--icon-starred-yellow) !important}.files-filestable .filename .action .icon.hidden,.files-filestable .selectedActions a .icon.hidden,.files-controls .actions .button .icon.hidden{display:none}.files-filestable .filename .action .icon.loading,.files-filestable .selectedActions a .icon.loading,.files-controls .actions .button .icon.loading{width:15px;height:15px}.app-files .actions .button.new{position:relative}.breadcrumb{align-items:center}.breadcrumb .icon-home{border-radius:var(--border-radius)}.breadcrumb .canDrop>a,.files-filestable tbody tr.canDrop{background-color:rgba(0,130,201,.3)}.dropzone-background{background-color:rgba(0,130,201,.3)}.dropzone-background :hover{box-shadow:none !important}.notCreatable{margin-left:12px;margin-right:44px;margin-top:12px;color:var(--color-main-text);overflow:auto;min-width:160px;height:54px}.notCreatable:not(.hidden){display:flex}.notCreatable .icon-alert-outline{top:-15px;position:relative;margin-right:4px}.quota-navigation-item{margin:0 !important;border:none;border-radius:0;background-color:rgba(0,0,0,0);z-index:1;height:44px;display:flex !important;flex-direction:column}.quota-navigation-item__text{height:30px}.quota-navigation-item[href="#"],.quota-navigation-item[href="#"] *{cursor:default !important}.quota-navigation-item__container{height:5px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) thead tr{display:block;border-bottom:1px solid var(--color-border);background-color:var(--color-main-background-translucent)}.files-filestable.view-grid:not(.hidden) thead tr th{width:auto;border:none}.files-filestable.view-grid:not(.hidden) tbody{display:grid;grid-template-columns:repeat(auto-fill, 160px);justify-content:space-around;row-gap:15px;margin:15px 0}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden){display:block;position:relative;height:190px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted{background-color:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions{background-color:var(--color-background-hover)}.files-filestable.view-grid:not(.hidden) tbody td{display:inline;border-bottom:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper{min-width:0;max-width:none;position:absolute;width:160px;height:160px;padding:14px;top:0;left:0;z-index:-1}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail{width:calc(100% - 2 * 14px);height:calc(100% - 2 * 14px);background-size:contain;margin:0;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark{left:auto;top:-11px;right:-11px}.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext{width:100%;margin:0;top:0;bottom:auto;height:28px;padding-top:4px;padding-left:28px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name{height:100%;border-radius:var(--border-radius);overflow:hidden;cursor:pointer !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext{display:flex;height:44px;margin-top:146px;text-align:center;line-height:44px;padding:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{display:inline-block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before{content:"";flex:1;min-width:14px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after{content:"";flex:1;min-width:44px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .system-tags{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions{height:initial;margin-top:146px;display:flex;align-items:center;position:absolute;right:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action{padding:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu){display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img{padding:6px;border-radius:50%}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename form{padding:3px 14px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename{width:100%;margin-left:0;cursor:text}.files-filestable.view-grid:not(.hidden) tbody td.filesize,.files-filestable.view-grid:not(.hidden) tbody td.date{display:none}.files-filestable.view-grid:not(.hidden) tbody td.selection,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark{position:absolute;top:-8px;left:-8px;display:flex;z-index:10}.files-filestable.view-grid:not(.hidden) tbody td.selection label,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label{width:44px;height:44px;display:inline-flex;padding:14px}.files-filestable.view-grid:not(.hidden) tbody td.selection label::before,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before{margin:0;width:14px;height:14px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:0;width:150px;margin:0 5px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon){overflow:hidden;text-overflow:ellipsis}.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension{display:block}.files-filestable.view-grid:not(.hidden) tfoot{display:grid}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden){display:inline-block;margin:0 auto;height:418px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td{padding-top:50px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child,.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date{display:none}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info{margin-left:0}#view-toggle{background-color:var(--color-main-background-translucent);border:none;margin:0;padding:22px;opacity:.5;float:right;right:var(--default-grid-baseline);top:var(--default-grid-baseline);z-index:100;position:sticky}#view-toggle:hover,#view-toggle:focus,#showgridview:focus+#view-toggle{opacity:1}#view-toggle:focus-visible,#showgridview:focus-visible+#view-toggle{box-shadow:inset 0 0 0 2px var(--color-primary-element) !important}#showgridview{position:fixed;top:0}#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{max-width:124px}#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:-80px}#body-public #view-toggle{position:absolute;right:0;top:0}#gallery-button{display:none}#tag_multiple_files_container{overflow:hidden;background-color:#fff;border-radius:3px;position:relative;display:flex;flex-wrap:wrap;margin-bottom:10px}#tag_multiple_files_container h3{width:100%;padding:0 18px}#tag_multiple_files_container .systemTagsInputFieldContainer{flex:1 1 80%;min-width:0;margin:0 12px}#upload{box-sizing:border-box;height:36px;width:39px;padding:0 !important;margin-left:3px;overflow:hidden;vertical-align:top;position:relative;z-index:-20}#upload .icon-upload{position:relative;display:block;width:100%;height:44px;width:44px;margin:-5px -3px;cursor:pointer;z-index:10;opacity:.65}.file_upload_target{display:none}.file_upload_form{display:inline;float:left;margin:0;padding:0;cursor:pointer;overflow:visible}.uploadprogresswrapper,.uploadprogresswrapper *{box-sizing:border-box}.uploadprogresswrapper{display:inline-block;vertical-align:top;height:36px;margin-left:3px}.uploadprogresswrapper>input[type=button]{height:36px;margin-left:3px}#uploadprogressbar{border-color:var(--color-border-dark);border-radius:var(--border-radius-pill) 0 0 var(--border-radius-pill);border-right:0;position:relative;float:left;width:200px;height:44px;display:inline-block;text-align:center}#uploadprogressbar .ui-progressbar-value{margin-top:.1em}#uploadprogressbar .ui-progressbar-value.ui-widget-header.ui-corner-left{height:calc(100% + 2px);top:-1px;left:-1px;position:absolute;overflow:hidden;background-color:var(--color-primary-element)}#uploadprogressbar .label{top:8px;opacity:1;overflow:hidden;white-space:nowrap;font-weight:normal}#uploadprogressbar .label.inner{color:var(--color-primary-element-text);position:absolute;display:block;width:200px}#uploadprogressbar .label.outer{position:relative;color:var(--color-main-text)}#uploadprogressbar .desktop{display:block}#uploadprogressbar .mobile{display:none}#uploadprogressbar+.stop{border-top-left-radius:0;border-bottom-left-radius:0}.oc-dialog .fileexists{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:30px}.oc-dialog .fileexists .conflict .filename,.oc-dialog .fileexists .conflict .mtime,.oc-dialog .fileexists .conflict .size{-webkit-touch-callout:initial;-webkit-user-select:initial;-khtml-user-select:initial;-moz-user-select:initial;-ms-user-select:initial;user-select:initial}.oc-dialog .fileexists .conflict .message{color:#e9322d}.oc-dialog .fileexists table{width:100%}.oc-dialog .fileexists th{padding-left:0;padding-right:0}.oc-dialog .fileexists th input[type=checkbox]{margin-right:3px}.oc-dialog .fileexists th:first-child{width:225px}.oc-dialog .fileexists th label{font-weight:normal;color:var(--color-main-text)}.oc-dialog .fileexists th .count{margin-left:3px}.oc-dialog .fileexists .conflicts .template{display:none}.oc-dialog .fileexists .conflict{width:100%;height:85px}.oc-dialog .fileexists .conflict .filename{color:#777;word-break:break-all;clear:left}.oc-dialog .fileexists .icon{width:64px;height:64px;margin:0px 5px 5px 5px;background-repeat:no-repeat;background-size:64px 64px;float:left}.oc-dialog .fileexists .original,.oc-dialog .fileexists .replacement{float:left;width:50%}.oc-dialog .fileexists .conflicts{overflow-y:auto;max-height:225px}.oc-dialog .fileexists .conflict input[type=checkbox]{float:left}.oc-dialog .fileexists #allfileslabel{float:right}.oc-dialog .fileexists #allfiles{vertical-align:bottom;position:relative;top:-3px}.oc-dialog .fileexists #allfiles+span{vertical-align:bottom}.oc-dialog .oc-dialog-buttonrow{width:100%;text-align:right}.oc-dialog .oc-dialog-buttonrow .cancel{float:left}.highlightUploaded{-webkit-animation:highlightAnimation 2s 1;-moz-animation:highlightAnimation 2s 1;-o-animation:highlightAnimation 2s 1;animation:highlightAnimation 2s 1}@-webkit-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-moz-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-o-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@media only screen and (max-width: 988px)and (min-width: 1025px),only screen and (max-width: 688px){.app-files #app-content.dir-drop{background-color:#fff !important}table th.column-size,table td.filesize,table th.column-mtime,table td.date{display:none}table td{padding:0}table.multiselect thead{padding-left:0}.fileList a.action.action-menu img{padding-left:0}.fileList .fileActionsMenu{margin-right:6px}.fileList a.action-share span:not(.icon):not(.avatar){position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}td.filename a.name .system-tags{display:none}#uploadprogressbar,#uploadprogressbar .label.inner{width:50px}#uploadprogressbar .desktop{display:none !important}#uploadprogressbar .mobile{display:block !important}table.dragshadow{z-index:1000}}@media only screen and (max-width: 480px){table th .selectedActions{float:right}table th .selectedActions>a span:not(.icon){display:none}table th .selectedActions a{padding:17px 14px}table.multiselect th .columntitle.name{margin-left:0}}.app-sidebar .detailFileInfoContainer{min-height:50px;padding:15px}.app-sidebar .detailFileInfoContainer>div{clear:both}.app-sidebar .mainFileInfoView .icon{display:inline-block;background-size:16px 16px}.app-sidebar .mainFileInfoView .permalink{padding:6px 10px;vertical-align:top;opacity:.6}.app-sidebar .mainFileInfoView .permalink:hover,.app-sidebar .mainFileInfoView .permalink:focus{opacity:1}.app-sidebar .mainFileInfoView .permalink-field>input{clear:both;width:90%}.app-sidebar .thumbnailContainer.large{margin-left:-15px;margin-right:-35px;margin-top:-15px}.app-sidebar .thumbnailContainer.large.portrait{margin:0}.app-sidebar .large .thumbnail{width:100%;display:block;background-repeat:no-repeat;background-position:center;background-size:100%;float:none;margin:0;height:auto}.app-sidebar .large .thumbnail .stretcher{content:"";display:block;padding-bottom:56.25%}.app-sidebar .large.portrait .thumbnail{background-position:50% top}.app-sidebar .large.portrait .thumbnail{background-size:contain}.app-sidebar .large.text{overflow-y:scroll;overflow-x:hidden;padding-top:14px;font-size:80%;margin-left:0}.app-sidebar .thumbnail{width:100%;min-height:75px;display:inline-block;float:left;margin-right:10px;background-size:contain;background-repeat:no-repeat}.app-sidebar .ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.app-sidebar .fileName{font-size:16px;padding-top:13px;padding-bottom:3px}.app-sidebar .fileName h3{width:calc(100% - 42px);display:inline-block;padding:5px 0;margin:-5px 0}.app-sidebar .file-details{color:var(--color-text-maxcontrast)}.app-sidebar .action-favorite{vertical-align:sub;padding:10px;margin:-10px}.app-sidebar .action-favorite>span{opacity:.7 !important}.app-sidebar .detailList{float:left}.app-sidebar .close{position:absolute;top:0;right:0;opacity:.5;z-index:1;width:44px;height:44px}.whatsNewPopover{bottom:35px !important;left:15px !important;width:270px;z-index:700}.whatsNewPopover p{width:auto !important}.whatsNewPopover .caption{font-weight:bold;cursor:auto !important}.whatsNewPopover .icon-close{position:absolute;right:0}.whatsNewPopover::after{content:none}/*# sourceMappingURL=merged.css.map */
+.actions{padding:3px;height:100%;display:inline-block;float:left}.actions input,.actions button,.actions .button{margin:0;float:left}.actions .button a{color:#555}.actions .button a:hover,.actions .button a:focus{background-color:var(--color-background-hover)}.actions .button a:active{background-color:var(--color-primary-element-light)}.actions.creatable{position:relative;display:flex;flex:1 1}.actions.creatable .button:not(:last-child){margin-right:3px}.actions.hidden{display:none}#trash{margin-right:8px;float:right;z-index:1010;padding:10px;font-weight:normal}.newFileMenu .error,.newFileMenu .error+.icon-confirm,.files-fileList .error{color:var(--color-error);border-color:var(--color-error)}.files-filestable{position:relative;width:100%;min-width:250px;display:block;flex-direction:column}.emptycontent:not(.hidden)~.files-filestable{display:none}.files-filestable thead{position:-webkit-sticky;position:sticky;top:44px;z-index:60;display:block;background-color:var(--color-main-background-translucent)}.files-filestable tbody{display:table;width:100%}.files-filestable tbody tr[data-permissions="0"],.files-filestable tbody tr[data-permissions="16"]{background-color:var(--color-background-dark)}.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext{color:var(--color-text-maxcontrast)}.files-filestable tbody tr[data-e2eencrypted=true] .selection{pointer-events:none}.files-filestable.hidden{display:none}.app-files #app-content>.viewcontainer{min-height:0%;width:100%}.app-files #app-content{width:calc(100% - 300px);overflow-anchor:none}.file-drag,.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:var(--color-primary-element-light) !important}.app-files #app-content.dir-drop{background-color:var(--color-main-background) !important}.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:rgba(0,0,0,0) !important}.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{background-color:var(--color-primary-element-light) !important}.nav-icon-files{background-image:var(--icon-folder-dark)}.nav-icon-recent{background-image:var(--icon-recent-dark)}.nav-icon-favorites{background-image:var(--icon-starred-dark)}.nav-icon-sharingin,.nav-icon-sharingout,.nav-icon-pendingshares,.nav-icon-shareoverview{background-image:var(--icon-share-dark)}.nav-icon-sharinglinks{background-image:var(--icon-public-dark)}.nav-icon-extstoragemounts{background-image:var(--icon-external-dark)}.nav-icon-trashbin{background-image:var(--icon-delete-dark)}.nav-icon-trashbin-starred{background-image:var(--icon-delete-#ff0000)}.nav-icon-deletedshares{background-image:var(--icon-unshare-dark)}.nav-icon-favorites-starred{background-image:var(--icon-starred-yellow)}#app-navigation .nav-files a.nav-icon-files{width:auto}#app-navigation .nav-files a.new{width:40px;height:32px;padding:0 10px;margin:0;cursor:pointer}#app-navigation .nav-files a.new.hidden{display:none}#app-navigation .nav-files a.new.disabled{opacity:.3}.files-filestable tbody tr{height:51px}.files-filestable tbody tr:hover,.files-filestable tbody tr:focus,.files-filestable tbody .name:focus,.files-filestable tbody tr:hover .filename form,table tr.mouseOver td{background-color:var(--color-background-hover)}.files-filestable tbody tr:active,.files-filestable tbody tr.highlighted,.files-filestable tbody tr.highlighted .name:focus,.files-filestable tbody tr.selected,.files-filestable tbody tr.searchresult{background-color:var(--color-primary-element-light)}tbody a{color:var(--color-main-text)}span.conflict-path,span.extension,span.uploading,td.date{color:var(--color-text-maxcontrast)}span.conflict-path,span.extension{-webkit-transition:opacity 300ms;-moz-transition:opacity 300ms;-o-transition:opacity 300ms;transition:opacity 300ms;vertical-align:top}tr:hover span.conflict-path,tr:focus span.conflict-path,tr:hover span.extension,tr:focus span.extension{opacity:1;color:var(--color-text-maxcontrast)}table th,table th a{color:var(--color-text-maxcontrast)}table.multiselect th a{color:var(--color-main-text)}table th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}table th .columntitle:focus-visible{border-radius:2px}table.multiselect th .columntitle{display:inline-block;margin-right:-20px}table th .columntitle.name{padding-left:0;margin-left:44px}table.multiselect th .columntitle.name{margin-left:0}table th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}.sort-indicator.hidden,.multiselect .sort-indicator,table.multiselect th:hover .sort-indicator.hidden,table.multiselect th:focus .sort-indicator.hidden{visibility:hidden}.multiselect .sort,.multiselect .sort span{cursor:default}table th:hover .sort-indicator.hidden,table th:focus .sort-indicator.hidden{visibility:visible}table th,table td{border-bottom:1px solid var(--color-border);text-align:left;font-weight:normal}table td{padding:0 15px;font-style:normal;background-position:8px center;background-repeat:no-repeat}table th.column-name{position:relative;width:9999px;padding:0}.column-name-container{position:relative;height:50px}table th.column-selection{padding-top:2px}table th.column-size,table td.filesize{text-align:right}table th.column-mtime,table td.date,table th.column-last,table td.column-last{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;min-width:130px}#app-content-recent,#app-content-favorites,#app-content-shareoverview,#app-content-sharingout,#app-content-sharingin,#app-content-sharinglinks,#app-content-deletedshares,#app-content-pendingshares{margin-top:22px}#app-content-recent thead,#app-content-favorites thead,#app-content-shareoverview thead,#app-content-sharingout thead,#app-content-sharingin thead,#app-content-sharinglinks thead,#app-content-deletedshares thead,#app-content-pendingshares thead{top:0}table.multiselect thead th{background-color:var(--color-main-background-translucent);font-weight:bold}#app-content.with-app-sidebar table.multiselect thead{margin-right:27%}table.multiselect .column-name{position:relative;width:9999px}table.multiselect .column-mtime>a{display:none}table td.selection,table th.selection,table td.fileaction{width:32px;text-align:center}table td.filename a.name,table td.filename p.name{display:flex;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;height:50px;line-height:50px;padding:0}table td.filename .thumbnail-wrapper{width:0;min-width:50px;max-width:50px;height:50px}table td.filename .thumbnail-wrapper.icon-loading-small:after{z-index:10}table td.filename .thumbnail-wrapper.icon-loading-small .thumbnail{opacity:.2}table td.filename .thumbnail{display:inline-block;width:32px;height:32px;background-size:contain;background-position:center;background-repeat:no-repeat;margin-left:9px;margin-top:9px;border-radius:var(--border-radius);cursor:pointer;position:absolute;z-index:4}table td.filename p.name .thumbnail{cursor:default}table tr[data-has-preview=true] .thumbnail{border:1px solid var(--color-border)}table:not(.view-grid) td.filename input.filename{width:70% !important;margin-left:48px !important;cursor:text}table td.filename form{margin-top:-40px;position:relative;top:-6px}table td.filename a,table td.login,table td.logout,table td.download,table td.upload,table td.create,table td.delete{padding:3px 8px 8px 3px}table td.filename .nametext,.modified,.column-last>span:first-child{float:left;padding:15px 0}.modified,.column-last>span:first-child{position:relative;overflow:hidden;text-overflow:ellipsis;width:110px}table td.filename{max-width:0}table td.filename .nametext{width:0;flex-grow:1;display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:100%;z-index:10;padding:0 20px 0 0}table td.filename .system-tags{--min-size: 32px;display:flex;justify-content:center;align-items:center;min-width:calc(var(--min-size)*2);max-width:300px}table td.filename .system-tags .system-tags__tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}table td.filename .system-tags .system-tags__tag--more{overflow:visible;text-overflow:initial}table td.filename .system-tags .system-tags__tag+.system-tags__tag{margin-left:5px}.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging{display:none !important}.files-fileList tr.animate-opacity{-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.files-fileList tr.dragging{opacity:.2}table td.filename .nametext .innernametext{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top}table td.filename .uploadtext{position:absolute;font-weight:normal;margin-left:50px;left:0;bottom:0;height:20px;padding:0 4px;padding-left:1px;font-size:11px;line-height:22px;color:var(--color-text-maxcontrast);text-overflow:ellipsis;white-space:nowrap}table td.selection{padding:0}.files-fileList tr td.selection>.selectCheckBox+label:before{opacity:.3;margin-right:0}.files-fileList tr:hover td.selection>.selectCheckBox+label:before,.files-fileList tr:focus td.selection>.selectCheckBox+label:before,.files-fileList tr td.selection>.selectCheckBox:checked+label:before,.files-fileList tr.selected td.selection>.selectCheckBox+label:before{opacity:1}.files-fileList tr.halfselected td.selection>.selectCheckBox+label:before{opacity:.5}.files-fileList tr td.selection>.selectCheckBox+label,.select-all+label{padding:16px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill);outline:none !important;border:2px solid var(--color-primary-element) !important;padding:14px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{outline-offset:0px}.files-fileList tr td.filename{position:relative;width:100%;padding-left:0;padding-right:0;-webkit-transition:background-image 500ms;-moz-transition:background-image 500ms;-o-transition:background-image 500ms;transition:background-image 500ms}.files-fileList tr td.filename a.name label,.files-fileList tr td.filename p.name label{position:absolute;width:80%;height:50px}.files-fileList tr td.filename .favorite{display:inline-block;float:left}.files-fileList tr td.filename .favorite-mark{position:absolute;display:block;top:-8px;right:-8px;line-height:100%;text-align:center}.files-fileList tr td.filename .favorite-mark.permanent{background-color:var(--color-main-background);mask:var(--icon-star-rounded-white) no-repeat;mask-size:22px 22px;width:22px;height:22px;display:flex;align-content:center;justify-content:center}.files-fileList tr:hover td.filename .favorite-mark.permanent{background-color:var(--color-background-hover)}#uploadsize-message,#delete-confirm{display:none}.fileactions{z-index:50}.busy .fileactions,.busy .action{visibility:hidden}.bubble,#app-navigation .app-navigation-entry-menu{min-width:100px}.files-fileList .icon-loading-small{opacity:1 !important;display:inline !important}.files-fileList .action.action-share-notification span,.files-fileList a.name{cursor:default !important}.files-fileList a.name.disabled *{cursor:default}.files-fileList a.name.disabled a,.files-fileList a.name.disabled a *{cursor:pointer}.files-fileList a.name.disabled:focus{background:none}a.action>img{height:16px;width:16px;vertical-align:text-bottom}a.action.action-editlocally img.icon{filter:var(--background-invert-if-dark)}.selectedActions{position:relative;display:inline-block;vertical-align:middle}.selectedActions.hidden{display:none}.selectedActions a{display:inline;line-height:50px;padding:16px 5px}.selectedActions a.hidden{display:none}.selectedActions a img{position:relative;vertical-align:text-bottom;margin-bottom:-1px}.selectedActions .actions-selected .icon-more{margin-top:-3px}.files-fileList td a a.action{display:inline;padding:17px 8px;line-height:50px;opacity:.3}.files-fileList td a a.action.action-share{padding:17px 14px}.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared+span{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.files-fileList td a a.action.action-share .avatar{display:inline-block;vertical-align:middle}.files-fileList td a a.action.action-menu{padding-top:17px;padding-bottom:17px;padding-left:14px;padding-right:14px}.files-fileList td a a.action.no-permission:hover,.files-fileList td a a.action.no-permission:focus{opacity:.3}.files-fileList td a a.action.disabled:hover,.files-fileList td a a.action.disabled:focus,.files-fileList td a a.action.disabled img{opacity:.3}.files-fileList td a a.action.disabled.action-download{opacity:.7}.files-fileList td a a.action.disabled.action-download:hover,.files-fileList td a a.action.disabled.action-download:focus{opacity:.7}.files-fileList td a a.action:hover,.files-fileList td a a.action:focus{opacity:1}.files-fileList td a a.action:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.files-fileList td a .fileActionsMenu a.action,.files-fileList td a a.action.action-share.shared-style{opacity:.7}.files-fileList td a .fileActionsMenu .action.permanent{opacity:1}.files-fileList .action.action-share.permanent.shared-style span:not(.icon){display:inline-block;max-width:70px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-left:6px}.files-fileList .remoteAddress .userDomain{margin-left:0 !important}.files-fileList .favorite-mark.permanent{opacity:1}.files-fileList .fileActionsMenu a.action:hover,.files-fileList .fileActionsMenu a.action:focus,.files-fileList a.action.action-share.shared-style:hover,.files-fileList a.action.action-share.shared-style:focus{opacity:1}.files-fileList tr a.action.disabled{background:none}.selectedActions a.download.disabled,.files-fileList tr a.action.action-download.disabled{color:#000}.files-fileList tr:hover a.action.disabled:hover *{cursor:default}.summary{color:var(--color-text-maxcontrast);height:330px}.files-filestable .summary .filesummary{width:100%;padding-left:101px}#body-public .summary{height:180px}.summary:hover,.summary:focus,.summary,table tr.summary td{background-color:rgba(0,0,0,0)}.summary td{border-bottom:none;vertical-align:top;padding-top:20px}.summary td:first-child{padding:0}.hiddeninfo{white-space:pre-line}table.dragshadow{width:auto;z-index:2000}table.dragshadow td.filename{padding-left:60px;padding-right:16px;height:36px;max-width:unset}table.dragshadow td.size{padding-right:8px}.mask{z-index:50;position:absolute;top:0;left:0;right:0;bottom:0;background-color:var(--color-main-background);background-repeat:no-repeat no-repeat;background-position:50%;opacity:.7;transition:opacity 100ms;-moz-transition:opacity 100ms;-o-transition:opacity 100ms;-ms-transition:opacity 100ms;-webkit-transition:opacity 100ms}.mask.transparent{opacity:0}.newFileMenu{font-weight:300;top:100%;left:-48px !important;margin-top:4px;min-width:100px;z-index:1001}.newFileMenu::after{left:61px !important}.files-controls{box-sizing:border-box;position:-webkit-sticky;position:sticky;height:50px;padding:0;margin:0;background-color:var(--color-main-background-translucent);z-index:62;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;top:0;padding-left:50px}.files-controls .actions>div>.button,.files-controls .actions>div button,.files-controls .actions>.button,.files-controls .actions button{box-sizing:border-box;display:inline-block;display:flex;height:44px;width:44px;padding:9px;align-items:center;justify-content:center}.files-controls .actions>div .button.hidden,.files-controls .actions .button.hidden{display:none}.viewer-mode #app-navigation+#app-content .files-controls{left:0}.files-filestable .filename .action .icon,.files-filestable .selectedActions a .icon,.files-filestable .filename .favorite-mark .icon,.files-controls .actions .button .icon{display:inline-block;vertical-align:middle;background-size:16px 16px}.files-filestable .filename .favorite-mark .icon-star{background-image:none}.files-filestable .filename .favorite-mark .icon-starred{background-image:var(--icon-starred-yellow) !important}.files-filestable .filename .action .icon.hidden,.files-filestable .selectedActions a .icon.hidden,.files-controls .actions .button .icon.hidden{display:none}.files-filestable .filename .action .icon.loading,.files-filestable .selectedActions a .icon.loading,.files-controls .actions .button .icon.loading{width:15px;height:15px}.app-files .actions .button.new{position:relative}.breadcrumb{align-items:center}.breadcrumb .icon-home{border-radius:var(--border-radius)}.breadcrumb .canDrop>a,.files-filestable tbody tr.canDrop{background-color:rgba(0,130,201,.3)}.dropzone-background{background-color:rgba(0,130,201,.3)}.dropzone-background :hover{box-shadow:none !important}.notCreatable{margin-left:12px;margin-right:44px;margin-top:12px;color:var(--color-main-text);overflow:auto;min-width:160px;height:54px}.notCreatable:not(.hidden){display:flex}.notCreatable .icon-alert-outline{top:-15px;position:relative;margin-right:4px}.quota-navigation-item{margin:0 !important;border:none;border-radius:0;background-color:rgba(0,0,0,0);z-index:1;height:44px;display:flex !important;flex-direction:column}.quota-navigation-item__text{height:30px}.quota-navigation-item[href="#"],.quota-navigation-item[href="#"] *{cursor:default !important}.quota-navigation-item__container{height:5px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) thead tr{display:block;border-bottom:1px solid var(--color-border);background-color:var(--color-main-background-translucent)}.files-filestable.view-grid:not(.hidden) thead tr th{width:auto;border:none}.files-filestable.view-grid:not(.hidden) tbody{display:grid;grid-template-columns:repeat(auto-fill, 160px);justify-content:space-around;row-gap:15px;margin:15px 0}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden){display:block;position:relative;height:190px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted{background-color:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions{background-color:var(--color-background-hover)}.files-filestable.view-grid:not(.hidden) tbody td{display:inline;border-bottom:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper{min-width:0;max-width:none;position:absolute;width:160px;height:160px;padding:14px;top:0;left:0;z-index:-1}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail{width:calc(100% - 2 * 14px);height:calc(100% - 2 * 14px);background-size:contain;margin:0;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark{left:auto;top:-11px;right:-11px}.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext{width:100%;margin:0;top:0;bottom:auto;height:28px;padding-top:4px;padding-left:28px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name{height:100%;border-radius:var(--border-radius);overflow:hidden;cursor:pointer !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext{display:flex;height:44px;margin-top:146px;text-align:center;line-height:44px;padding:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{display:inline-block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before{content:"";flex:1;min-width:14px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after{content:"";flex:1;min-width:44px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .system-tags{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions{height:initial;margin-top:146px;display:flex;align-items:center;position:absolute;right:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action{padding:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu){display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img{padding:6px;border-radius:50%}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename form{padding:3px 14px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename{width:100%;margin-left:0;cursor:text}.files-filestable.view-grid:not(.hidden) tbody td.filesize,.files-filestable.view-grid:not(.hidden) tbody td.date{display:none}.files-filestable.view-grid:not(.hidden) tbody td.selection,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark{position:absolute;top:-8px;left:-8px;display:flex;z-index:10}.files-filestable.view-grid:not(.hidden) tbody td.selection label,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label{width:44px;height:44px;display:inline-flex;padding:14px}.files-filestable.view-grid:not(.hidden) tbody td.selection label::before,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before{margin:0;width:14px;height:14px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:0;width:150px;margin:0 5px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon){overflow:hidden;text-overflow:ellipsis}.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension{display:block}.files-filestable.view-grid:not(.hidden) tfoot{display:grid}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden){display:inline-block;margin:0 auto;height:418px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td{padding-top:50px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child,.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date{display:none}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info{margin-left:0}#view-toggle{background-color:var(--color-main-background-translucent);border:none;margin:0;padding:22px;opacity:.5;float:right;right:var(--default-grid-baseline);top:var(--default-grid-baseline);z-index:100;position:sticky}#view-toggle:hover,#view-toggle:focus,#showgridview:focus+#view-toggle{opacity:1}#view-toggle:focus-visible,#showgridview:focus-visible+#view-toggle{box-shadow:inset 0 0 0 2px var(--color-primary-element) !important}#showgridview{position:fixed;top:0}#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{max-width:124px}#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:-80px}#body-public #view-toggle{position:absolute;right:0;top:0}#gallery-button{display:none}#tag_multiple_files_container{overflow:hidden;background-color:#fff;border-radius:3px;position:relative;display:flex;flex-wrap:wrap;margin-bottom:10px}#tag_multiple_files_container h3{width:100%;padding:0 18px}#tag_multiple_files_container .systemTagsInputFieldContainer{flex:1 1 80%;min-width:0;margin:0 12px}#upload{box-sizing:border-box;height:36px;width:39px;padding:0 !important;margin-left:3px;overflow:hidden;vertical-align:top;position:relative;z-index:-20}#upload .icon-upload{position:relative;display:block;width:100%;height:44px;width:44px;margin:-5px -3px;cursor:pointer;z-index:10;opacity:.65}.file_upload_target{display:none}.file_upload_form{display:inline;float:left;margin:0;padding:0;cursor:pointer;overflow:visible}.uploadprogresswrapper,.uploadprogresswrapper *{box-sizing:border-box}.uploadprogresswrapper{display:inline-block;vertical-align:top;height:36px;margin-left:3px}.uploadprogresswrapper>input[type=button]{height:36px;margin-left:3px}#uploadprogressbar{border-color:var(--color-border-dark);border-radius:var(--border-radius-pill) 0 0 var(--border-radius-pill);border-right:0;position:relative;float:left;width:200px;height:44px;display:inline-block;text-align:center}#uploadprogressbar .ui-progressbar-value{margin-top:.1em}#uploadprogressbar .ui-progressbar-value.ui-widget-header.ui-corner-left{height:calc(100% + 2px);top:-1px;left:-1px;position:absolute;overflow:hidden;background-color:var(--color-primary-element)}#uploadprogressbar .label{top:8px;opacity:1;overflow:hidden;white-space:nowrap;font-weight:normal}#uploadprogressbar .label.inner{color:var(--color-primary-element-text);position:absolute;display:block;width:200px}#uploadprogressbar .label.outer{position:relative;color:var(--color-main-text)}#uploadprogressbar .desktop{display:block}#uploadprogressbar .mobile{display:none}#uploadprogressbar+.stop{border-top-left-radius:0;border-bottom-left-radius:0}.oc-dialog .fileexists{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:30px}.oc-dialog .fileexists .conflict .filename,.oc-dialog .fileexists .conflict .mtime,.oc-dialog .fileexists .conflict .size{-webkit-touch-callout:initial;-webkit-user-select:initial;-khtml-user-select:initial;-moz-user-select:initial;-ms-user-select:initial;user-select:initial}.oc-dialog .fileexists .conflict .message{color:#e9322d}.oc-dialog .fileexists table{width:100%}.oc-dialog .fileexists th{padding-left:0;padding-right:0}.oc-dialog .fileexists th input[type=checkbox]{margin-right:3px}.oc-dialog .fileexists th:first-child{width:225px}.oc-dialog .fileexists th label{font-weight:normal;color:var(--color-main-text)}.oc-dialog .fileexists th .count{margin-left:3px}.oc-dialog .fileexists .conflicts .template{display:none}.oc-dialog .fileexists .conflict{width:100%;height:85px}.oc-dialog .fileexists .conflict .filename{color:#777;word-break:break-all;clear:left}.oc-dialog .fileexists .icon{width:64px;height:64px;margin:0px 5px 5px 5px;background-repeat:no-repeat;background-size:64px 64px;float:left}.oc-dialog .fileexists .original,.oc-dialog .fileexists .replacement{float:left;width:50%}.oc-dialog .fileexists .conflicts{overflow-y:auto;max-height:225px}.oc-dialog .fileexists .conflict input[type=checkbox]{float:left}.oc-dialog .fileexists #allfileslabel{float:right}.oc-dialog .fileexists #allfiles{vertical-align:bottom;position:relative;top:-3px}.oc-dialog .fileexists #allfiles+span{vertical-align:bottom}.oc-dialog .oc-dialog-buttonrow{width:100%;text-align:right}.oc-dialog .oc-dialog-buttonrow .cancel{float:left}.highlightUploaded{-webkit-animation:highlightAnimation 2s 1;-moz-animation:highlightAnimation 2s 1;-o-animation:highlightAnimation 2s 1;animation:highlightAnimation 2s 1}@-webkit-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-moz-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-o-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@media only screen and (max-width: 988px)and (min-width: 1025px),only screen and (max-width: 688px){.app-files #app-content.dir-drop{background-color:#fff !important}table th.column-size,table td.filesize,table th.column-mtime,table td.date{display:none}table td{padding:0}table.multiselect thead{padding-left:0}.fileList a.action.action-menu img{padding-left:0}.fileList .fileActionsMenu{margin-right:6px}.fileList a.action-share span:not(.icon):not(.avatar){position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}td.filename a.name .system-tags{display:none}#uploadprogressbar,#uploadprogressbar .label.inner{width:50px}#uploadprogressbar .desktop{display:none !important}#uploadprogressbar .mobile{display:block !important}table.dragshadow{z-index:1000}}@media only screen and (max-width: 480px){table th .selectedActions{float:right}table th .selectedActions>a span:not(.icon){display:none}table th .selectedActions a{padding:17px 14px}table.multiselect th .columntitle.name{margin-left:0}}.app-sidebar .detailFileInfoContainer{min-height:50px;padding:15px}.app-sidebar .detailFileInfoContainer>div{clear:both}.app-sidebar .mainFileInfoView .icon{display:inline-block;background-size:16px 16px}.app-sidebar .mainFileInfoView .permalink{padding:6px 10px;vertical-align:top;opacity:.6}.app-sidebar .mainFileInfoView .permalink:hover,.app-sidebar .mainFileInfoView .permalink:focus{opacity:1}.app-sidebar .mainFileInfoView .permalink-field>input{clear:both;width:90%}.app-sidebar .thumbnailContainer.large{margin-left:-15px;margin-right:-35px;margin-top:-15px}.app-sidebar .thumbnailContainer.large.portrait{margin:0}.app-sidebar .large .thumbnail{width:100%;display:block;background-repeat:no-repeat;background-position:center;background-size:100%;float:none;margin:0;height:auto}.app-sidebar .large .thumbnail .stretcher{content:"";display:block;padding-bottom:56.25%}.app-sidebar .large.portrait .thumbnail{background-position:50% top}.app-sidebar .large.portrait .thumbnail{background-size:contain}.app-sidebar .large.text{overflow-y:scroll;overflow-x:hidden;padding-top:14px;font-size:80%;margin-left:0}.app-sidebar .thumbnail{width:100%;min-height:75px;display:inline-block;float:left;margin-right:10px;background-size:contain;background-repeat:no-repeat}.app-sidebar .ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.app-sidebar .fileName{font-size:16px;padding-top:13px;padding-bottom:3px}.app-sidebar .fileName h3{width:calc(100% - 42px);display:inline-block;padding:5px 0;margin:-5px 0}.app-sidebar .file-details{color:var(--color-text-maxcontrast)}.app-sidebar .action-favorite{vertical-align:sub;padding:10px;margin:-10px}.app-sidebar .action-favorite>span{opacity:.7 !important}.app-sidebar .detailList{float:left}.app-sidebar .close{position:absolute;top:0;right:0;opacity:.5;z-index:1;width:44px;height:44px}.whatsNewPopover{bottom:35px !important;left:15px !important;width:270px;z-index:700}.whatsNewPopover p{width:auto !important}.whatsNewPopover .caption{font-weight:bold;cursor:auto !important}.whatsNewPopover .icon-close{position:absolute;right:0}.whatsNewPopover::after{content:none}/*# sourceMappingURL=merged.css.map */
diff --git a/apps/files/css/merged.css.map b/apps/files/css/merged.css.map
index 91abbce0af1..06281821a75 100644
--- a/apps/files/css/merged.css.map
+++ b/apps/files/css/merged.css.map
@@ -1 +1 @@
-{"version":3,"sourceRoot":"","sources":["files.scss","../../../core/css/functions.scss","upload.scss","mobile.scss","detailsView.scss","../../../core/css/whatsnew.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,oDAGD,mBACC,kBACA,aACA,SACA,4CACC,iBAIF,gBACC,aAGD,OACC,iBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAEA,qBAGD,6FACC,+DAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,+DAID,gBCxEC,yCD2ED,iBC3EC,yCD8ED,oBC9EC,0CDiFD,yFCjFC,wCDuFD,uBCvFC,yCD0FD,2BC1FC,2CD6FD,mBC7FC,yCDgGD,2BChGC,4CDmGD,wBCnGC,0CDsGD,4BCtGC,4CD0GD,4CACC,WAGD,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,oDAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,mBAED,2BACC,eACA,iBAGD,uCACC,cAGD,yBACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,gBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,iBAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,iBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,gBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,4BACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,mBAID,+BACC,iBACA,aACA,uBACA,mBACA,cACA,kCACA,gBAEA,iDACC,iBACA,iBACA,wCACA,iCACA,oCACA,uBACA,mBACA,gBACA,uBACA,iBACA,kBAEA,uDACC,iBACA,sBAID,mEACC,gBAOL,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,iBACA,OACA,SACA,YACA,cAEA,iBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,eAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,yDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,eACA,gBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,WACA,iBACA,kBACA,wDAEC,8CACA,8CACA,oBAEA,WACA,YACA,aACA,qBACA,uBAGF,8DACC,+CAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAGD,qCACC,wCAID,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,cACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,kBACA,mBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,gBAGD,2CACC,yBAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,mBAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,kBACA,mBACA,YAGA,gBAED,yBACC,kBAED,MACC,WACA,kBACA,MACA,OACA,QACA,SACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,sBACA,eACA,gBACA,aAGA,oBACC,qBAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,kBAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,OAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,iBACA,kBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,iBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,OACA,WAEA,yFACC,4BACA,6BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,UACA,UACA,YAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,kBAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,QAEA,sFACC,QAxJK,KAyJL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,cACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,UACA,aACA,WAEA,kJACC,WACA,YACA,oBACA,QAzNO,KA0NP,kKACC,SACA,MA5NM,KA6NN,OA7NM,KAmOT,+DACC,OACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,cAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,mCACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,mEASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,WAKF,0BACC,kBACA,QACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA,cEh2CF,QACC,sBACA,YACA,WACA,qBACA,gBACA,gBACA,mBACA,kBACA,YAED,qBACC,kBACA,cACA,WACA,YACA,WACA,iBACA,eACA,WACA,YAED,iCACA,+FAEA,gDACC,sBAGD,uBACC,qBACA,mBACA,YACA,gBAED,0CACC,YACA,gBAED,mBACC,sCACA,sEACA,eACA,kBACA,WACA,YACA,YACA,qBACA,kBAEA,yCACC,gBAGF,yEACC,wBACA,SACA,UACA,kBACA,gBACA,8CAED,0BACC,QACA,UACA,gBACA,mBACA,mBAED,gCACC,wCACA,kBACA,cACA,YAED,gCACC,kBACA,6BAED,4BACC,cAED,2BACC,aAGD,yBACC,yBACA,4BAGD,uBACC,2BACA,yBACA,wBACA,sBACA,qBACA,iBACA,mBAGD,0HAGC,8BACA,4BACA,2BACA,yBACA,wBACA,oBAED,0CACC,cAED,6BACC,WAED,0BACC,eACA,gBAED,+CACC,iBAED,sCACC,YAED,gCACC,mBACA,6BAED,iCACC,gBAED,4CACC,aAED,iCACC,WACA,YAED,2CACC,WACA,qBACA,WAED,6BACC,WACA,YACA,uBACA,4BACA,0BACA,WAGD,qEAEC,WACA,UAED,kCACC,gBACA,iBAED,sDACC,WAED,sCACC,YAED,iCACC,sBACA,kBACA,SAED,sCACC,sBAGD,gCACC,WACA,iBAEA,wCACC,WAIF,mBACC,0CACA,uCACA,qCACA,kCAGD,sCACE,4BACA,qCAEF,mCACE,4BACA,qCAEF,iCACE,4BACA,qCAEF,8BACE,4BACA,qCC3MF,oGAEA,iCACC,iCAGD,2EAIC,aAID,SACC,UAID,wBACC,eAGD,mCACC,eAGD,2BACC,iBAID,sDACC,kBACA,cACA,SACA,UACA,WACA,gBAID,gCACC,aAKD,mDACC,WAGD,4BACC,wBAED,2BACC,yBAID,iBACC,cAID,0CAEC,0BACC,YAED,4CACC,aAID,4BACC,kBAID,uCACC,eCvFF,sCACC,gBACA,aAGD,0CACC,WAID,qCACC,qBACA,0BAGD,0CACC,iBACA,mBACA,WAEA,gGAEC,UAGF,sDACC,WACA,UAGD,uCACC,kBACA,mBACA,iBAGD,gDACC,SAGD,+BACC,WACA,cACA,4BACA,2BACA,qBACA,WACA,SACA,YAGD,0CACC,WACA,cACA,sBAGD,wCACC,4BAGD,wCACC,wBAGD,yBACC,kBACA,kBACA,iBACA,cACA,cAGD,wBACC,WACA,gBACA,qBACA,WACA,kBACA,wBACA,4BAGD,uBACC,mBACA,uBACA,gBAGD,uBACC,eACA,iBACA,mBAGD,0BACC,wBACA,qBACA,cACA,cAGD,2BACC,oCAGD,8BACC,mBACA,aACA,aAGD,mCACC,sBAGD,yBACC,WAGD,oBACC,kBACA,MACA,QACA,WACA,UACA,WACA,YCxHD,iBACE,uBACA,qBACA,YACA,YAGF,mBACE,sBAGF,0BACE,iBACA,uBAGF,6BACE,kBACA,QAGF,wBACE","file":"merged.css"} \ No newline at end of file
+{"version":3,"sourceRoot":"","sources":["files.scss","../../../core/css/functions.scss","upload.scss","mobile.scss","detailsView.scss","../../../core/css/whatsnew.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,oDAGD,mBACC,kBACA,aACA,SACA,4CACC,iBAIF,gBACC,aAGD,OACC,iBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAEA,qBAGD,6FACC,+DAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,+DAID,gBCxEC,yCD2ED,iBC3EC,yCD8ED,oBC9EC,0CDiFD,yFCjFC,wCDuFD,uBCvFC,yCD0FD,2BC1FC,2CD6FD,mBC7FC,yCDgGD,2BChGC,4CDmGD,wBCnGC,0CDsGD,4BCtGC,4CD0GD,4CACC,WAGD,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,oDAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,mBAED,2BACC,eACA,iBAGD,uCACC,cAGD,yBACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,gBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,iBAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,iBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,gBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,4BACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,mBAID,+BACC,iBACA,aACA,uBACA,mBACA,kCACA,gBAEA,iDACC,iBACA,iBACA,wCACA,iCACA,oCACA,uBACA,mBACA,gBACA,uBACA,iBACA,kBAEA,uDACC,iBACA,sBAID,mEACC,gBAOL,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,iBACA,OACA,SACA,YACA,cAEA,iBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,eAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,yDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,eACA,gBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,WACA,iBACA,kBACA,wDAEC,8CACA,8CACA,oBAEA,WACA,YACA,aACA,qBACA,uBAGF,8DACC,+CAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAGD,qCACC,wCAID,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,cACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,kBACA,mBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,gBAGD,2CACC,yBAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,mBAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,kBACA,mBACA,YAGA,gBAED,yBACC,kBAED,MACC,WACA,kBACA,MACA,OACA,QACA,SACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,sBACA,eACA,gBACA,aAGA,oBACC,qBAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,kBAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,OAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,iBACA,kBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,iBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,OACA,WAEA,yFACC,4BACA,6BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,UACA,UACA,YAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,kBAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,QAEA,sFACC,QAxJK,KAyJL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,cACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,UACA,aACA,WAEA,kJACC,WACA,YACA,oBACA,QAzNO,KA0NP,kKACC,SACA,MA5NM,KA6NN,OA7NM,KAmOT,+DACC,OACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,cAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,mCACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,mEASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,WAKF,0BACC,kBACA,QACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA,cE/1CF,QACC,sBACA,YACA,WACA,qBACA,gBACA,gBACA,mBACA,kBACA,YAED,qBACC,kBACA,cACA,WACA,YACA,WACA,iBACA,eACA,WACA,YAED,iCACA,+FAEA,gDACC,sBAGD,uBACC,qBACA,mBACA,YACA,gBAED,0CACC,YACA,gBAED,mBACC,sCACA,sEACA,eACA,kBACA,WACA,YACA,YACA,qBACA,kBAEA,yCACC,gBAGF,yEACC,wBACA,SACA,UACA,kBACA,gBACA,8CAED,0BACC,QACA,UACA,gBACA,mBACA,mBAED,gCACC,wCACA,kBACA,cACA,YAED,gCACC,kBACA,6BAED,4BACC,cAED,2BACC,aAGD,yBACC,yBACA,4BAGD,uBACC,2BACA,yBACA,wBACA,sBACA,qBACA,iBACA,mBAGD,0HAGC,8BACA,4BACA,2BACA,yBACA,wBACA,oBAED,0CACC,cAED,6BACC,WAED,0BACC,eACA,gBAED,+CACC,iBAED,sCACC,YAED,gCACC,mBACA,6BAED,iCACC,gBAED,4CACC,aAED,iCACC,WACA,YAED,2CACC,WACA,qBACA,WAED,6BACC,WACA,YACA,uBACA,4BACA,0BACA,WAGD,qEAEC,WACA,UAED,kCACC,gBACA,iBAED,sDACC,WAED,sCACC,YAED,iCACC,sBACA,kBACA,SAED,sCACC,sBAGD,gCACC,WACA,iBAEA,wCACC,WAIF,mBACC,0CACA,uCACA,qCACA,kCAGD,sCACE,4BACA,qCAEF,mCACE,4BACA,qCAEF,iCACE,4BACA,qCAEF,8BACE,4BACA,qCC3MF,oGAEA,iCACC,iCAGD,2EAIC,aAID,SACC,UAID,wBACC,eAGD,mCACC,eAGD,2BACC,iBAID,sDACC,kBACA,cACA,SACA,UACA,WACA,gBAID,gCACC,aAKD,mDACC,WAGD,4BACC,wBAED,2BACC,yBAID,iBACC,cAID,0CAEC,0BACC,YAED,4CACC,aAID,4BACC,kBAID,uCACC,eCvFF,sCACC,gBACA,aAGD,0CACC,WAID,qCACC,qBACA,0BAGD,0CACC,iBACA,mBACA,WAEA,gGAEC,UAGF,sDACC,WACA,UAGD,uCACC,kBACA,mBACA,iBAGD,gDACC,SAGD,+BACC,WACA,cACA,4BACA,2BACA,qBACA,WACA,SACA,YAGD,0CACC,WACA,cACA,sBAGD,wCACC,4BAGD,wCACC,wBAGD,yBACC,kBACA,kBACA,iBACA,cACA,cAGD,wBACC,WACA,gBACA,qBACA,WACA,kBACA,wBACA,4BAGD,uBACC,mBACA,uBACA,gBAGD,uBACC,eACA,iBACA,mBAGD,0BACC,wBACA,qBACA,cACA,cAGD,2BACC,oCAGD,8BACC,mBACA,aACA,aAGD,mCACC,sBAGD,yBACC,WAGD,oBACC,kBACA,MACA,QACA,WACA,UACA,WACA,YCxHD,iBACE,uBACA,qBACA,YACA,YAGF,mBACE,sBAGF,0BACE,iBACA,uBAGF,6BACE,kBACA,QAGF,wBACE","file":"merged.css"} \ No newline at end of file
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 442fdec9322..6b964981a47 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -666,7 +666,7 @@
* @param {string} [tabId] optional tab id to select
*/
showDetailsView: function(fileName, tabId) {
- console.warn('showDetailsView is deprecated! Use OCA.Files.Sidebar.activeTab. It will be removed in nextcloud 20.');
+ OC.debug && console.warn('showDetailsView is deprecated! Use OCA.Files.Sidebar.activeTab. It will be removed in nextcloud 20.');
this._updateDetailsView(fileName);
if (tabId) {
OCA.Files.Sidebar.setActiveTab(tabId);
@@ -3879,7 +3879,7 @@
* Register a tab view to be added to all views
*/
registerTabView: function(tabView) {
- console.warn('registerTabView is deprecated! It will be removed in nextcloud 20.');
+ OC.debug && console.warn('registerTabView is deprecated! It will be removed in nextcloud 20.');
const enabled = tabView.canDisplay || undefined
if (tabView.id) {
OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({
@@ -3905,7 +3905,7 @@
* Register a detail view to be added to all views
*/
registerDetailView: function(detailView) {
- console.warn('registerDetailView is deprecated! It will be removed in nextcloud 20.');
+ OC.debug && console.warn('registerDetailView is deprecated! It will be removed in nextcloud 20.');
if (detailView.el) {
OCA.Files.Sidebar.registerSecondaryView(detailView)
}
diff --git a/apps/files/js/files.js b/apps/files/js/files.js
index b0c38248183..1788ebe9d3f 100644
--- a/apps/files/js/files.js
+++ b/apps/files/js/files.js
@@ -281,7 +281,7 @@
* @deprecated used OCA.Files.FileList.generatePreviewUrl instead
*/
generatePreviewUrl: function(urlSpec) {
- console.warn('DEPRECATED: please use generatePreviewUrl() from an OCA.Files.FileList instance');
+ OC.debug && console.warn('DEPRECATED: please use generatePreviewUrl() from an OCA.Files.FileList instance');
return OCA.Files.App.fileList.generatePreviewUrl(urlSpec);
},
@@ -290,7 +290,7 @@
* @deprecated used OCA.Files.FileList.lazyLoadPreview instead
*/
lazyLoadPreview : function(path, mime, ready, width, height, etag) {
- console.warn('DEPRECATED: please use lazyLoadPreview() from an OCA.Files.FileList instance');
+ OC.debug && console.warn('DEPRECATED: please use lazyLoadPreview() from an OCA.Files.FileList instance');
return FileList.lazyLoadPreview({
path: path,
mime: mime,
diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js
index a541a59f219..678636a1891 100644
--- a/apps/files/l10n/ko.js
+++ b/apps/files/l10n/ko.js
@@ -24,7 +24,7 @@ OC.L10N.register(
"File could not be uploaded" : "파일을 업로드할 수 없음",
"Uploading …" : "업로드 중…",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize}/{totalSize}({bitrate})",
- "Uploading that item is not supported" : "이 항목의 업로드를 지원하지 않습니다",
+ "Uploading that item is not supported" : "이 항목의 업로드를 지원하지 않습니다.",
"Target folder does not exist any more" : "대상 폴더가 더 이상 존재하지 않습니다",
"Operation is blocked by access control" : "접근 설정에 의해 동작이 차단됨",
"Error when assembling chunks, status code {status}" : "조각을 모으는 중 오류 발생, 상태 코드 {status}",
@@ -33,6 +33,7 @@ OC.L10N.register(
"Move" : "이동",
"Copy" : "복사",
"Choose target folder" : "폴더 선택",
+ "Edit locally" : "로컬에서 편집",
"Open" : "열기",
"Delete file" : "파일 삭제",
"Delete folder" : "폴더 삭제",
@@ -41,7 +42,7 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "파일 \"{file}\"의 정보를 가져올 수 없음",
"Files" : "파일",
"Details" : "자세한 정보",
- "Please select tag(s) to add to the selection" : "선택한 항목에 추가할 태그를 고르세요",
+ "Please select tag(s) to add to the selection" : "선택한 항목에 추가할 태그를 고르세요.",
"Apply tag(s) to selection" : "선택한 항목에 태그 적용하기",
"Select directory \"{dirName}\"" : "디렉터리 \"{dirName}\" 선택",
"Select file \"{fileName}\"" : "파일 \"{fileName}\" 선택",
@@ -57,6 +58,7 @@ OC.L10N.register(
"Could not copy \"{file}\"" : "\"{file}\"을(를) 복사할 수 없음",
"Copied {origin} inside {destination}" : "{origin}을(를) {destination}(으)로 복사함",
"Copied {origin} and {nbfiles} other files inside {destination}" : "{origin} 및 다른 파일 {nbfiles}개를 {destination}(으)로 복사함",
+ "Failed to redirect to client" : "클라이언트로 리디렉션 하는데 실패함",
"{newName} already exists" : "{newName}이(가) 이미 존재함",
"Could not rename \"{fileName}\", it does not exist any more" : "\"{fileName}\"의 이름을 변경할 수 없음, 더 이상 존재하지 않음",
"The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "폴더 \"{dir}\" 내에 파일 \"{targetName}\"이(가) 이미 있습니다. 다른 이름을 사용하십시오.",
@@ -67,7 +69,7 @@ OC.L10N.register(
"Could not fetch file details \"{file}\"" : "\"{file}\"의 세부사항을 불러올 수 없음",
"Error deleting file \"{fileName}\"." : "파일 \"{fileName}\"을(를) 삭제할 수 없습니다.",
"No search results in other folders for {tag}{filter}{endtag}" : "다른 폴더에 {tag}{filter}{endtag} 검색 결과가 없음",
- "Enter more than two characters to search in other folders" : "여러 폴더에서 검색하기 위해 2글자 이상 입력하십시오",
+ "Enter more than two characters to search in other folders" : "다른 폴더에서 검색하기 위해 2글자 이상 입력하세요.",
"Name" : "이름",
"Size" : "크기",
"Modified" : "수정됨",
@@ -75,9 +77,10 @@ OC.L10N.register(
"_%n file_::_%n files_" : ["파일 %n개"],
"{dirs} and {files}" : "{dirs} 그리고 {files}",
"_including %n hidden_::_including %n hidden_" : ["%n개의 숨겨진 파일 포함"],
- "You do not have permission to upload or create files here" : "여기에 파일을 업로드하거나 만들 권한이 없습니다",
+ "You do not have permission to upload or create files here" : "여기에 파일을 업로드하거나 만들 권한이 없습니다.",
"_Uploading %n file_::_Uploading %n files_" : ["파일 %n개 업로드 중"],
"New file/folder menu" : "새 파일/폴더 메뉴",
+ "Select file range" : "파일 범위 선택",
"{used} of {quota} used" : "{quota} 중 {used} 사용함",
"{used} used" : "{used} 사용함",
"\"{name}\" is an invalid file name." : "\"{name}\"은(는) 잘못된 파일 이름입니다.",
@@ -88,22 +91,25 @@ OC.L10N.register(
"Group folder \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "그룹 폴더 \"{mountPoint}\"이(가) 가득 찼습니다. 파일을 더 이상 업데이트하거나 동기화할 수 없습니다!",
"External storage \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "외부 저장소 \"{mountPoint}\"이(가) 가득 찼습니다. 파일을 더 이상 업데이트하거나 동기화할 수 없습니다!",
"Your storage is full, files cannot be updated or synced anymore!" : "저장 공간이 가득 찼습니다. 파일을 업데이트하거나 동기화할 수 없습니다!",
- "Storage of {owner} is almost full ({usedSpacePercent}%)." : "{owner}의 저장 공간이 거의 가득 찼습니다({usedSpacePercent}%)",
- "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "그룹 폴더 \"{mountPoint}\"이(가) 거의 가득 찼습니다({usedSpacePercent}%)",
- "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "외부 저장소 \"{mountPoint}\"이(가) 거의 가득 찼습니다({usedSpacePercent}%)",
- "Your storage is almost full ({usedSpacePercent}%)." : "저장 공간이 거의 가득 찼습니다({usedSpacePercent}%)",
+ "Storage of {owner} is almost full ({usedSpacePercent}%)." : "{owner}의 저장 공간이 거의 가득 찼습니다. ({usedSpacePercent}%)",
+ "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "그룹 폴더 \"{mountPoint}\"이(가) 거의 가득 찼습니다. ({usedSpacePercent}%)",
+ "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "외부 저장소 \"{mountPoint}\"이(가) 거의 가득 찼습니다. ({usedSpacePercent}%)",
+ "Your storage is almost full ({usedSpacePercent}%)." : "저장 공간이 거의 가득 찼습니다. ({usedSpacePercent}%)",
"_matches \"{filter}\"_::_match \"{filter}\"_" : ["'{filter}'와(과) 일치"],
"View in folder" : "폴더에서 보기",
+ "Direct link was copied (only works for users who have access to this file/folder)" : "직접 링크를 복사했습니다. (이 파일 및 폴더에 접근할 수 있는 사용자에게만 작동)",
"Path" : "경로",
"_%n byte_::_%n bytes_" : ["%n 바이트"],
"Favorited" : "즐겨찾기에 추가됨",
"Favorite" : "즐겨찾기",
"Copy direct link (only works for users who have access to this file/folder)" : "직접 링크 복사(이 파일/폴더에 접근 권한이 있는 사람만)",
- "You can only favorite a single file or folder at a time" : "한번에 한 파일 혹은 한 폴더만 즐겨찾기로 지정할 수 있습니다",
+ "You can only favorite a single file or folder at a time" : "한번에 한 파일 혹은 한 폴더만 즐겨찾기로 지정할 수 있습니다.",
"New folder" : "새 폴더",
"Create new folder" : "새 폴더 생성",
"Upload file" : "파일 업로드",
"Recent" : "최근",
+ "This file has the tag {tag}" : "이 파일에 {tag} 태그가 있음",
+ "This file has the tags {firstTags} and {lastTag}" : "이 파일에 {firstTags}와 {lastTag} 태그가 있음",
"Not favorited" : "즐겨찾기에 없음",
"Remove from favorites" : "즐겨찾기에서 삭제",
"Add to favorites" : "즐겨찾기에 추가",
@@ -121,27 +127,27 @@ OC.L10N.register(
"Moved by {user}" : "{user} 님이 이동함",
"\"remote user\"" : "\"원격 사용자\"",
"You created {file}" : "{file}을(를) 만듦",
- "You created an encrypted file in {file}" : "{file}에 암호화된 파일을 생성했습니다",
+ "You created an encrypted file in {file}" : "{file}에 암호화된 파일을 생성했습니다.",
"{user} created {file}" : "{user} 님이 {file}을(를) 만듦",
- "{user} created an encrypted file in {file}" : "{user}이(가) {file}에 암호화된 파일을 생성했습니다",
+ "{user} created an encrypted file in {file}" : "{user}님이 {file}에 암호화된 파일을 생성",
"{file} was created in a public folder" : "공유 폴더에 {file}이(가) 생성됨",
"You changed {file}" : "{file}을(를) 변경함",
- "You changed an encrypted file in {file}" : "{file}에 암호화된 파일을 변경했습니다",
+ "You changed an encrypted file in {file}" : "{file}에 암호화된 파일을 변경했습니다.",
"{user} changed {file}" : "{user} 님이 {file}을(를) 변경함",
- "{user} changed an encrypted file in {file}" : "{user}이(가) {file}에 암호화된 파일을 변경했습니다",
+ "{user} changed an encrypted file in {file}" : "{user}님이 {file}에 암호화된 파일을 변경",
"You deleted {file}" : "{file}을(를) 삭제함",
- "You deleted an encrypted file in {file}" : "{file}에 암호화된 파일을 제거했습니다",
+ "You deleted an encrypted file in {file}" : "{file}에 암호화된 파일을 제거했습니다.",
"{user} deleted {file}" : "{user} 님이 {file}을(를) 삭제함",
- "{user} deleted an encrypted file in {file}" : "{user}이(가) {file}에 암호화된 파일을 제거했습니다",
+ "{user} deleted an encrypted file in {file}" : "{user}님이 {file}에 암호화된 파일을 제거",
"You restored {file}" : "내가 {file}을(를) 복원함",
"{user} restored {file}" : "{user} 님이 {file}을(를) 복원함",
"You renamed {oldfile} (hidden) to {newfile} (hidden)" : "{oldfile} (숨겨짐)을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈",
"You renamed {oldfile} (hidden) to {newfile}" : "{oldfile} (숨겨짐)을(를) {newfile}(으)로 이름을 바꿈",
"You renamed {oldfile} to {newfile} (hidden)" : "{oldfile}을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈",
"You renamed {oldfile} to {newfile}" : "{oldfile}을(를) {newfile}(으)로 이름을 바꿈",
- "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user}이(가) {oldfile} (숨겨짐)을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈",
- "{user} renamed {oldfile} (hidden) to {newfile}" : "{user}이(가) {oldfile} (숨겨짐)을(를) {newfile}(으)로 이름을 바꿈",
- "{user} renamed {oldfile} to {newfile} (hidden)" : "{user}이(가) {oldfile}을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈",
+ "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user}님이 {oldfile} (숨겨짐)을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈",
+ "{user} renamed {oldfile} (hidden) to {newfile}" : "{user}님이 {oldfile} (숨겨짐)을(를) {newfile}(으)로 이름을 바꿈",
+ "{user} renamed {oldfile} to {newfile} (hidden)" : "{user}님이 {oldfile}을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈",
"{user} renamed {oldfile} to {newfile}" : "{user} 님이 {oldfile}을(를) {newfile}(으)로 이름을 바꿈",
"You moved {oldfile} to {newfile}" : "{oldfile}을(를) {newfile}(으)로 이동함",
"{user} moved {oldfile} to {newfile}" : "{user} 님이 {oldfile}을(를) {newfile}(으)로 이동함",
@@ -162,7 +168,26 @@ OC.L10N.register(
"The ownership transfer of {path} from {user} has completed." : "{user}(으)로부터 {path}의 소유권을 받았습니다.",
"in %s" : "%s",
"File Management" : "파일 관리",
+ "Reload current directory" : "이 경로를 새로고침",
+ "Go to the \"{dir}\" directory" : "\"{dir}\" 경로로 이동",
+ "Select the row for {displayName}" : "{displayName}을 위한 행을 선택",
+ "Open folder {name}" : "{name} 폴더 열기",
+ "Download file {name}" : "{name} 파일 다운로드",
+ "\"{displayName}\" action executed successfully" : "\"{displayName}\" 작업을 성공적으로 실행함",
+ "\"{displayName}\" action failed" : "\"{displayName}\" 작업을 실패함",
+ "Total rows summary" : "총 행 요약",
"Select all" : "모두 선택",
+ "Unselect all" : "모두 선택 해제",
+ "\"{displayName}\" failed on some elements " : "\"{displayName}\" 이 일부 요소들에서 실패함",
+ "\"{displayName}\" batch action executed successfully" : "\"{displayName}\" 일괄 작업을 성공적으로 실행함",
+ "ascending" : "오름차순",
+ "descending" : "내림차순",
+ "Sort list by {column} ({direction})" : "{column} ({direction})으로 목록 정렬",
+ "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "이 목록은 성능 상의 이유로 완전히 표시되지 않았습니다. 목록을 탐색하면 파일이 표시됩니다.",
+ "Storage informations" : "저장소 정보",
+ "{usedQuotaByte} used" : "{usedQuotaByte} 사용",
+ "{relative}% used" : "{relative}% 사용",
+ "Could not refresh storage stats" : "저장소 정보를 새로고칠 수 없음",
"Transfer ownership of a file or folder" : "파일이나 폴더의 소유권 이전",
"Choose file or folder to transfer" : "이전할 파일이나 폴더 고르기",
"Change" : "변경",
@@ -174,14 +199,24 @@ OC.L10N.register(
"Unknown error" : "알 수 없는 오류",
"Ownership transfer request sent" : "소유권 이전 요청이 전송됨",
"Cannot transfer ownership of a file or folder you do not own" : "내가 소유하지 않은 파일이나 폴더의 소유권을 이전할 수 없음",
+ "Select file or folder to link to" : "링크할 파일이나 폴더 선택",
+ "Loading current folder" : "현재 폴더를 불러오는 중",
"No files in here" : "여기에 파일 없음",
+ "No files or folders have been deleted yet" : "아직 삭제된 파일이나 폴더가 없습니다.",
+ "Go to the previous folder" : "이전 폴더로 이동",
"Go back" : "뒤로 가기",
+ "Open the files app settings" : "파일 앱 설정을 열기",
"Files settings" : "파일 설정",
+ "File cannot be accessed" : "파일에 접근할 수 없음",
+ "You might not have have permissions to view it, ask the sender to share it" : "이것을 볼 권한이 없는 것 같습니다, 보낸 이에게 공유를 요청하세요.",
"Show hidden files" : "숨김 파일 보이기",
+ "Crop image previews" : "이미지 미리보기 확대",
"Additional settings" : "고급 설정",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "클립보드로 복사",
- "Use this address to access your Files via WebDAV" : "이 주소를 사용하여 WebDAV를 통해 내 파일에 접근하십시오",
+ "Use this address to access your Files via WebDAV" : "이 주소를 사용하여 WebDAV를 통해 내 파일에 접근하세요.",
+ "Clipboard is not available" : "클립보드를 사용할 수 없습니다.",
+ "WebDAV URL copied to clipboard" : "WebDAV URL이 클립보드에 복사됨",
"Unable to change the favourite state of the file" : "파일의 즐겨찾기 상태를 변경할 수 없음",
"Error while loading the file data" : "파일 데이터를 불러오는 중 오류 발생",
"Pick a template for {name}" : "{name}을(를) 위한 템플릿 선택",
@@ -191,8 +226,10 @@ OC.L10N.register(
"Blank" : "여백",
"Unable to create new file from template" : "템플릿으로 새 파일을 만들 수 없음",
"Delete permanently" : "영구히 삭제",
+ "Open folder {displayName}" : "{displayName} 폴더 열기",
"Set up templates folder" : "템플릿 폴더 설정",
"Templates" : "템플릿",
+ "Create new templates folder" : "새로운 템플릿 폴더 만들기",
"Unable to initialize the templates directory" : "템플릿 디렉터리를 설정할 수 없음",
"Toggle grid view" : "모눈 보기 전환",
"Upload some content or sync with your devices!" : "파일을 업로드하거나 장치와 동기화하십시오!",
@@ -215,6 +252,7 @@ OC.L10N.register(
"Cancel" : "취소",
"%s used" : "%s 사용함",
"%1$s of %2$s used" : "%2$s 중 %1$s 사용됨",
- "Deleted files" : "삭제된 파일"
+ "Deleted files" : "삭제된 파일",
+ "Search for an account" : "계정 검색"
},
"nplurals=1; plural=0;");
diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json
index 5e9d348fd5e..2ce8390cab1 100644
--- a/apps/files/l10n/ko.json
+++ b/apps/files/l10n/ko.json
@@ -22,7 +22,7 @@
"File could not be uploaded" : "파일을 업로드할 수 없음",
"Uploading …" : "업로드 중…",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize}/{totalSize}({bitrate})",
- "Uploading that item is not supported" : "이 항목의 업로드를 지원하지 않습니다",
+ "Uploading that item is not supported" : "이 항목의 업로드를 지원하지 않습니다.",
"Target folder does not exist any more" : "대상 폴더가 더 이상 존재하지 않습니다",
"Operation is blocked by access control" : "접근 설정에 의해 동작이 차단됨",
"Error when assembling chunks, status code {status}" : "조각을 모으는 중 오류 발생, 상태 코드 {status}",
@@ -31,6 +31,7 @@
"Move" : "이동",
"Copy" : "복사",
"Choose target folder" : "폴더 선택",
+ "Edit locally" : "로컬에서 편집",
"Open" : "열기",
"Delete file" : "파일 삭제",
"Delete folder" : "폴더 삭제",
@@ -39,7 +40,7 @@
"Could not load info for file \"{file}\"" : "파일 \"{file}\"의 정보를 가져올 수 없음",
"Files" : "파일",
"Details" : "자세한 정보",
- "Please select tag(s) to add to the selection" : "선택한 항목에 추가할 태그를 고르세요",
+ "Please select tag(s) to add to the selection" : "선택한 항목에 추가할 태그를 고르세요.",
"Apply tag(s) to selection" : "선택한 항목에 태그 적용하기",
"Select directory \"{dirName}\"" : "디렉터리 \"{dirName}\" 선택",
"Select file \"{fileName}\"" : "파일 \"{fileName}\" 선택",
@@ -55,6 +56,7 @@
"Could not copy \"{file}\"" : "\"{file}\"을(를) 복사할 수 없음",
"Copied {origin} inside {destination}" : "{origin}을(를) {destination}(으)로 복사함",
"Copied {origin} and {nbfiles} other files inside {destination}" : "{origin} 및 다른 파일 {nbfiles}개를 {destination}(으)로 복사함",
+ "Failed to redirect to client" : "클라이언트로 리디렉션 하는데 실패함",
"{newName} already exists" : "{newName}이(가) 이미 존재함",
"Could not rename \"{fileName}\", it does not exist any more" : "\"{fileName}\"의 이름을 변경할 수 없음, 더 이상 존재하지 않음",
"The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "폴더 \"{dir}\" 내에 파일 \"{targetName}\"이(가) 이미 있습니다. 다른 이름을 사용하십시오.",
@@ -65,7 +67,7 @@
"Could not fetch file details \"{file}\"" : "\"{file}\"의 세부사항을 불러올 수 없음",
"Error deleting file \"{fileName}\"." : "파일 \"{fileName}\"을(를) 삭제할 수 없습니다.",
"No search results in other folders for {tag}{filter}{endtag}" : "다른 폴더에 {tag}{filter}{endtag} 검색 결과가 없음",
- "Enter more than two characters to search in other folders" : "여러 폴더에서 검색하기 위해 2글자 이상 입력하십시오",
+ "Enter more than two characters to search in other folders" : "다른 폴더에서 검색하기 위해 2글자 이상 입력하세요.",
"Name" : "이름",
"Size" : "크기",
"Modified" : "수정됨",
@@ -73,9 +75,10 @@
"_%n file_::_%n files_" : ["파일 %n개"],
"{dirs} and {files}" : "{dirs} 그리고 {files}",
"_including %n hidden_::_including %n hidden_" : ["%n개의 숨겨진 파일 포함"],
- "You do not have permission to upload or create files here" : "여기에 파일을 업로드하거나 만들 권한이 없습니다",
+ "You do not have permission to upload or create files here" : "여기에 파일을 업로드하거나 만들 권한이 없습니다.",
"_Uploading %n file_::_Uploading %n files_" : ["파일 %n개 업로드 중"],
"New file/folder menu" : "새 파일/폴더 메뉴",
+ "Select file range" : "파일 범위 선택",
"{used} of {quota} used" : "{quota} 중 {used} 사용함",
"{used} used" : "{used} 사용함",
"\"{name}\" is an invalid file name." : "\"{name}\"은(는) 잘못된 파일 이름입니다.",
@@ -86,22 +89,25 @@
"Group folder \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "그룹 폴더 \"{mountPoint}\"이(가) 가득 찼습니다. 파일을 더 이상 업데이트하거나 동기화할 수 없습니다!",
"External storage \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "외부 저장소 \"{mountPoint}\"이(가) 가득 찼습니다. 파일을 더 이상 업데이트하거나 동기화할 수 없습니다!",
"Your storage is full, files cannot be updated or synced anymore!" : "저장 공간이 가득 찼습니다. 파일을 업데이트하거나 동기화할 수 없습니다!",
- "Storage of {owner} is almost full ({usedSpacePercent}%)." : "{owner}의 저장 공간이 거의 가득 찼습니다({usedSpacePercent}%)",
- "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "그룹 폴더 \"{mountPoint}\"이(가) 거의 가득 찼습니다({usedSpacePercent}%)",
- "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "외부 저장소 \"{mountPoint}\"이(가) 거의 가득 찼습니다({usedSpacePercent}%)",
- "Your storage is almost full ({usedSpacePercent}%)." : "저장 공간이 거의 가득 찼습니다({usedSpacePercent}%)",
+ "Storage of {owner} is almost full ({usedSpacePercent}%)." : "{owner}의 저장 공간이 거의 가득 찼습니다. ({usedSpacePercent}%)",
+ "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "그룹 폴더 \"{mountPoint}\"이(가) 거의 가득 찼습니다. ({usedSpacePercent}%)",
+ "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "외부 저장소 \"{mountPoint}\"이(가) 거의 가득 찼습니다. ({usedSpacePercent}%)",
+ "Your storage is almost full ({usedSpacePercent}%)." : "저장 공간이 거의 가득 찼습니다. ({usedSpacePercent}%)",
"_matches \"{filter}\"_::_match \"{filter}\"_" : ["'{filter}'와(과) 일치"],
"View in folder" : "폴더에서 보기",
+ "Direct link was copied (only works for users who have access to this file/folder)" : "직접 링크를 복사했습니다. (이 파일 및 폴더에 접근할 수 있는 사용자에게만 작동)",
"Path" : "경로",
"_%n byte_::_%n bytes_" : ["%n 바이트"],
"Favorited" : "즐겨찾기에 추가됨",
"Favorite" : "즐겨찾기",
"Copy direct link (only works for users who have access to this file/folder)" : "직접 링크 복사(이 파일/폴더에 접근 권한이 있는 사람만)",
- "You can only favorite a single file or folder at a time" : "한번에 한 파일 혹은 한 폴더만 즐겨찾기로 지정할 수 있습니다",
+ "You can only favorite a single file or folder at a time" : "한번에 한 파일 혹은 한 폴더만 즐겨찾기로 지정할 수 있습니다.",
"New folder" : "새 폴더",
"Create new folder" : "새 폴더 생성",
"Upload file" : "파일 업로드",
"Recent" : "최근",
+ "This file has the tag {tag}" : "이 파일에 {tag} 태그가 있음",
+ "This file has the tags {firstTags} and {lastTag}" : "이 파일에 {firstTags}와 {lastTag} 태그가 있음",
"Not favorited" : "즐겨찾기에 없음",
"Remove from favorites" : "즐겨찾기에서 삭제",
"Add to favorites" : "즐겨찾기에 추가",
@@ -119,27 +125,27 @@
"Moved by {user}" : "{user} 님이 이동함",
"\"remote user\"" : "\"원격 사용자\"",
"You created {file}" : "{file}을(를) 만듦",
- "You created an encrypted file in {file}" : "{file}에 암호화된 파일을 생성했습니다",
+ "You created an encrypted file in {file}" : "{file}에 암호화된 파일을 생성했습니다.",
"{user} created {file}" : "{user} 님이 {file}을(를) 만듦",
- "{user} created an encrypted file in {file}" : "{user}이(가) {file}에 암호화된 파일을 생성했습니다",
+ "{user} created an encrypted file in {file}" : "{user}님이 {file}에 암호화된 파일을 생성",
"{file} was created in a public folder" : "공유 폴더에 {file}이(가) 생성됨",
"You changed {file}" : "{file}을(를) 변경함",
- "You changed an encrypted file in {file}" : "{file}에 암호화된 파일을 변경했습니다",
+ "You changed an encrypted file in {file}" : "{file}에 암호화된 파일을 변경했습니다.",
"{user} changed {file}" : "{user} 님이 {file}을(를) 변경함",
- "{user} changed an encrypted file in {file}" : "{user}이(가) {file}에 암호화된 파일을 변경했습니다",
+ "{user} changed an encrypted file in {file}" : "{user}님이 {file}에 암호화된 파일을 변경",
"You deleted {file}" : "{file}을(를) 삭제함",
- "You deleted an encrypted file in {file}" : "{file}에 암호화된 파일을 제거했습니다",
+ "You deleted an encrypted file in {file}" : "{file}에 암호화된 파일을 제거했습니다.",
"{user} deleted {file}" : "{user} 님이 {file}을(를) 삭제함",
- "{user} deleted an encrypted file in {file}" : "{user}이(가) {file}에 암호화된 파일을 제거했습니다",
+ "{user} deleted an encrypted file in {file}" : "{user}님이 {file}에 암호화된 파일을 제거",
"You restored {file}" : "내가 {file}을(를) 복원함",
"{user} restored {file}" : "{user} 님이 {file}을(를) 복원함",
"You renamed {oldfile} (hidden) to {newfile} (hidden)" : "{oldfile} (숨겨짐)을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈",
"You renamed {oldfile} (hidden) to {newfile}" : "{oldfile} (숨겨짐)을(를) {newfile}(으)로 이름을 바꿈",
"You renamed {oldfile} to {newfile} (hidden)" : "{oldfile}을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈",
"You renamed {oldfile} to {newfile}" : "{oldfile}을(를) {newfile}(으)로 이름을 바꿈",
- "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user}이(가) {oldfile} (숨겨짐)을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈",
- "{user} renamed {oldfile} (hidden) to {newfile}" : "{user}이(가) {oldfile} (숨겨짐)을(를) {newfile}(으)로 이름을 바꿈",
- "{user} renamed {oldfile} to {newfile} (hidden)" : "{user}이(가) {oldfile}을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈",
+ "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user}님이 {oldfile} (숨겨짐)을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈",
+ "{user} renamed {oldfile} (hidden) to {newfile}" : "{user}님이 {oldfile} (숨겨짐)을(를) {newfile}(으)로 이름을 바꿈",
+ "{user} renamed {oldfile} to {newfile} (hidden)" : "{user}님이 {oldfile}을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈",
"{user} renamed {oldfile} to {newfile}" : "{user} 님이 {oldfile}을(를) {newfile}(으)로 이름을 바꿈",
"You moved {oldfile} to {newfile}" : "{oldfile}을(를) {newfile}(으)로 이동함",
"{user} moved {oldfile} to {newfile}" : "{user} 님이 {oldfile}을(를) {newfile}(으)로 이동함",
@@ -160,7 +166,26 @@
"The ownership transfer of {path} from {user} has completed." : "{user}(으)로부터 {path}의 소유권을 받았습니다.",
"in %s" : "%s",
"File Management" : "파일 관리",
+ "Reload current directory" : "이 경로를 새로고침",
+ "Go to the \"{dir}\" directory" : "\"{dir}\" 경로로 이동",
+ "Select the row for {displayName}" : "{displayName}을 위한 행을 선택",
+ "Open folder {name}" : "{name} 폴더 열기",
+ "Download file {name}" : "{name} 파일 다운로드",
+ "\"{displayName}\" action executed successfully" : "\"{displayName}\" 작업을 성공적으로 실행함",
+ "\"{displayName}\" action failed" : "\"{displayName}\" 작업을 실패함",
+ "Total rows summary" : "총 행 요약",
"Select all" : "모두 선택",
+ "Unselect all" : "모두 선택 해제",
+ "\"{displayName}\" failed on some elements " : "\"{displayName}\" 이 일부 요소들에서 실패함",
+ "\"{displayName}\" batch action executed successfully" : "\"{displayName}\" 일괄 작업을 성공적으로 실행함",
+ "ascending" : "오름차순",
+ "descending" : "내림차순",
+ "Sort list by {column} ({direction})" : "{column} ({direction})으로 목록 정렬",
+ "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "이 목록은 성능 상의 이유로 완전히 표시되지 않았습니다. 목록을 탐색하면 파일이 표시됩니다.",
+ "Storage informations" : "저장소 정보",
+ "{usedQuotaByte} used" : "{usedQuotaByte} 사용",
+ "{relative}% used" : "{relative}% 사용",
+ "Could not refresh storage stats" : "저장소 정보를 새로고칠 수 없음",
"Transfer ownership of a file or folder" : "파일이나 폴더의 소유권 이전",
"Choose file or folder to transfer" : "이전할 파일이나 폴더 고르기",
"Change" : "변경",
@@ -172,14 +197,24 @@
"Unknown error" : "알 수 없는 오류",
"Ownership transfer request sent" : "소유권 이전 요청이 전송됨",
"Cannot transfer ownership of a file or folder you do not own" : "내가 소유하지 않은 파일이나 폴더의 소유권을 이전할 수 없음",
+ "Select file or folder to link to" : "링크할 파일이나 폴더 선택",
+ "Loading current folder" : "현재 폴더를 불러오는 중",
"No files in here" : "여기에 파일 없음",
+ "No files or folders have been deleted yet" : "아직 삭제된 파일이나 폴더가 없습니다.",
+ "Go to the previous folder" : "이전 폴더로 이동",
"Go back" : "뒤로 가기",
+ "Open the files app settings" : "파일 앱 설정을 열기",
"Files settings" : "파일 설정",
+ "File cannot be accessed" : "파일에 접근할 수 없음",
+ "You might not have have permissions to view it, ask the sender to share it" : "이것을 볼 권한이 없는 것 같습니다, 보낸 이에게 공유를 요청하세요.",
"Show hidden files" : "숨김 파일 보이기",
+ "Crop image previews" : "이미지 미리보기 확대",
"Additional settings" : "고급 설정",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "클립보드로 복사",
- "Use this address to access your Files via WebDAV" : "이 주소를 사용하여 WebDAV를 통해 내 파일에 접근하십시오",
+ "Use this address to access your Files via WebDAV" : "이 주소를 사용하여 WebDAV를 통해 내 파일에 접근하세요.",
+ "Clipboard is not available" : "클립보드를 사용할 수 없습니다.",
+ "WebDAV URL copied to clipboard" : "WebDAV URL이 클립보드에 복사됨",
"Unable to change the favourite state of the file" : "파일의 즐겨찾기 상태를 변경할 수 없음",
"Error while loading the file data" : "파일 데이터를 불러오는 중 오류 발생",
"Pick a template for {name}" : "{name}을(를) 위한 템플릿 선택",
@@ -189,8 +224,10 @@
"Blank" : "여백",
"Unable to create new file from template" : "템플릿으로 새 파일을 만들 수 없음",
"Delete permanently" : "영구히 삭제",
+ "Open folder {displayName}" : "{displayName} 폴더 열기",
"Set up templates folder" : "템플릿 폴더 설정",
"Templates" : "템플릿",
+ "Create new templates folder" : "새로운 템플릿 폴더 만들기",
"Unable to initialize the templates directory" : "템플릿 디렉터리를 설정할 수 없음",
"Toggle grid view" : "모눈 보기 전환",
"Upload some content or sync with your devices!" : "파일을 업로드하거나 장치와 동기화하십시오!",
@@ -213,6 +250,7 @@
"Cancel" : "취소",
"%s used" : "%s 사용함",
"%1$s of %2$s used" : "%2$s 중 %1$s 사용됨",
- "Deleted files" : "삭제된 파일"
+ "Deleted files" : "삭제된 파일",
+ "Search for an account" : "계정 검색"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js
index db9d6a3b43e..81b451a44a6 100644
--- a/apps/files/l10n/uk.js
+++ b/apps/files/l10n/uk.js
@@ -124,24 +124,24 @@ OC.L10N.register(
"Changed by {user}" : "Змінено користувачем {user}",
"Deleted by {user}" : "Вилучено користувачем {user}",
"Restored by {user}" : "Відновлено користувачем {user}",
- "Renamed by {user}" : "Перейменовано користувачем {user}",
+ "Renamed by {user}" : "Перейменовано {user}",
"Moved by {user}" : "Переміщено користувачем {user}",
"\"remote user\"" : "\"віддалений користувач\"",
"You created {file}" : "Ви створили {file}",
"You created an encrypted file in {file}" : "Ви створили зашифрований файл у {file}",
- "{user} created {file}" : "Користувач {user} створив файл {file}",
+ "{user} created {file}" : "{user} створив(-ла) файл {file}",
"{user} created an encrypted file in {file}" : "{user} створив зашифрований файл у {file}",
"{file} was created in a public folder" : "Файл {file} створено у публічному каталозі",
"You changed {file}" : "Ви змінили файл {file}",
"You changed an encrypted file in {file}" : "Ви змінили зашифрований файл у {file}",
- "{user} changed {file}" : "Користувач {user} змінив(-ла) файл {file}",
+ "{user} changed {file}" : "{user} змінив(-ла) файл {file}",
"{user} changed an encrypted file in {file}" : "{user} змінив(-ла) зашифрований файл {file}",
"You deleted {file}" : "Ви вилучили {file}",
"You deleted an encrypted file in {file}" : "Ви вилучити зашифрований файл у {file}",
- "{user} deleted {file}" : "Користувач {user} вилучив {file}",
+ "{user} deleted {file}" : "{user} вилучив(-ла) {file}",
"{user} deleted an encrypted file in {file}" : "{user} вилучив зашифрований файл у {file}",
"You restored {file}" : "Ви відновили {file}",
- "{user} restored {file}" : "Користувач {user} відновив {file}",
+ "{user} restored {file}" : "{user} відновив(-ла) {file}",
"You renamed {oldfile} (hidden) to {newfile} (hidden)" : "Ви перейменували файл {oldfile} (прихований) на {newfile} (прихований)",
"You renamed {oldfile} (hidden) to {newfile}" : "Ви перейменували файл {oldfile} (прихований) на {newfile}",
"You renamed {oldfile} to {newfile} (hidden)" : "Ви перейменували файл {oldfile} на {newfile} (прихований)",
@@ -149,9 +149,9 @@ OC.L10N.register(
"{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user} перейменував {oldfile} (прихований) у {newfile} (прихований)",
"{user} renamed {oldfile} (hidden) to {newfile}" : "{user} перейменував {oldfile} (прихований) у {newfile}",
"{user} renamed {oldfile} to {newfile} (hidden)" : "{user} перейменував {oldfile} у {newfile} (прихований)",
- "{user} renamed {oldfile} to {newfile}" : "Користувач {user} перейменував {oldfile} у {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} перейменував(-ла) {oldfile} у {newfile}",
"You moved {oldfile} to {newfile}" : "Ви перемістили {oldfile} до {newfile}",
- "{user} moved {oldfile} to {newfile}" : "Користувач {user} перемістив {oldfile} до {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} перемістив(-ла) {oldfile} до {newfile}",
"A file has been added to or removed from your <strong>favorites</strong>" : "Файл було додано або вилучено з ваших <strong>вподобаних</strong> документів",
"A file or folder has been <strong>changed</strong>" : "Файл або каталог було <strong> змінено </strong>",
"A favorite file or folder has been <strong>changed</strong>" : "Вподобаний файли або каталог було <strong>змінено</strong>",
@@ -212,7 +212,7 @@ OC.L10N.register(
"You might not have have permissions to view it, ask the sender to share it" : "Ймовірно у вас відсутні права на перегляд. Попросіть відправника поділитися доступом.",
"Show hidden files" : "Показувати приховані файли",
"Crop image previews" : "Попередній перегляд перед кадруванням",
- "Additional settings" : "Додаткові",
+ "Additional settings" : "Додатково",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Копіювати до буферу обміну",
"Use this address to access your Files via WebDAV" : "Адреса для доступу до файлів за допомогою протоколу WebDAV",
diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json
index b746cd21cd5..45fa9fecacb 100644
--- a/apps/files/l10n/uk.json
+++ b/apps/files/l10n/uk.json
@@ -122,24 +122,24 @@
"Changed by {user}" : "Змінено користувачем {user}",
"Deleted by {user}" : "Вилучено користувачем {user}",
"Restored by {user}" : "Відновлено користувачем {user}",
- "Renamed by {user}" : "Перейменовано користувачем {user}",
+ "Renamed by {user}" : "Перейменовано {user}",
"Moved by {user}" : "Переміщено користувачем {user}",
"\"remote user\"" : "\"віддалений користувач\"",
"You created {file}" : "Ви створили {file}",
"You created an encrypted file in {file}" : "Ви створили зашифрований файл у {file}",
- "{user} created {file}" : "Користувач {user} створив файл {file}",
+ "{user} created {file}" : "{user} створив(-ла) файл {file}",
"{user} created an encrypted file in {file}" : "{user} створив зашифрований файл у {file}",
"{file} was created in a public folder" : "Файл {file} створено у публічному каталозі",
"You changed {file}" : "Ви змінили файл {file}",
"You changed an encrypted file in {file}" : "Ви змінили зашифрований файл у {file}",
- "{user} changed {file}" : "Користувач {user} змінив(-ла) файл {file}",
+ "{user} changed {file}" : "{user} змінив(-ла) файл {file}",
"{user} changed an encrypted file in {file}" : "{user} змінив(-ла) зашифрований файл {file}",
"You deleted {file}" : "Ви вилучили {file}",
"You deleted an encrypted file in {file}" : "Ви вилучити зашифрований файл у {file}",
- "{user} deleted {file}" : "Користувач {user} вилучив {file}",
+ "{user} deleted {file}" : "{user} вилучив(-ла) {file}",
"{user} deleted an encrypted file in {file}" : "{user} вилучив зашифрований файл у {file}",
"You restored {file}" : "Ви відновили {file}",
- "{user} restored {file}" : "Користувач {user} відновив {file}",
+ "{user} restored {file}" : "{user} відновив(-ла) {file}",
"You renamed {oldfile} (hidden) to {newfile} (hidden)" : "Ви перейменували файл {oldfile} (прихований) на {newfile} (прихований)",
"You renamed {oldfile} (hidden) to {newfile}" : "Ви перейменували файл {oldfile} (прихований) на {newfile}",
"You renamed {oldfile} to {newfile} (hidden)" : "Ви перейменували файл {oldfile} на {newfile} (прихований)",
@@ -147,9 +147,9 @@
"{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user} перейменував {oldfile} (прихований) у {newfile} (прихований)",
"{user} renamed {oldfile} (hidden) to {newfile}" : "{user} перейменував {oldfile} (прихований) у {newfile}",
"{user} renamed {oldfile} to {newfile} (hidden)" : "{user} перейменував {oldfile} у {newfile} (прихований)",
- "{user} renamed {oldfile} to {newfile}" : "Користувач {user} перейменував {oldfile} у {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} перейменував(-ла) {oldfile} у {newfile}",
"You moved {oldfile} to {newfile}" : "Ви перемістили {oldfile} до {newfile}",
- "{user} moved {oldfile} to {newfile}" : "Користувач {user} перемістив {oldfile} до {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} перемістив(-ла) {oldfile} до {newfile}",
"A file has been added to or removed from your <strong>favorites</strong>" : "Файл було додано або вилучено з ваших <strong>вподобаних</strong> документів",
"A file or folder has been <strong>changed</strong>" : "Файл або каталог було <strong> змінено </strong>",
"A favorite file or folder has been <strong>changed</strong>" : "Вподобаний файли або каталог було <strong>змінено</strong>",
@@ -210,7 +210,7 @@
"You might not have have permissions to view it, ask the sender to share it" : "Ймовірно у вас відсутні права на перегляд. Попросіть відправника поділитися доступом.",
"Show hidden files" : "Показувати приховані файли",
"Crop image previews" : "Попередній перегляд перед кадруванням",
- "Additional settings" : "Додаткові",
+ "Additional settings" : "Додатково",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Копіювати до буферу обміну",
"Use this address to access your Files via WebDAV" : "Адреса для доступу до файлів за допомогою протоколу WebDAV",
diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js
index 79a869c04fb..d85a211d2e0 100644
--- a/apps/files/l10n/zh_CN.js
+++ b/apps/files/l10n/zh_CN.js
@@ -11,18 +11,18 @@ OC.L10N.register(
"Home" : "首页",
"Close" : "关闭",
"Favorites" : "收藏",
- "Could not create folder \"{dir}\"" : "无法创建文件夹 \"{dir}\"",
+ "Could not create folder \"{dir}\"" : "无法创建文件夹“{dir}”",
"This will stop your current uploads." : "这会终止您当前的上传。",
"Upload cancelled." : "上传已取消。",
- "Processing files …" : "正在处理文件……",
- "…" : "……",
+ "Processing files …" : "正在处理文件 ...",
+ "…" : "...",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "无法上传 {filename},因为它是一个目录或者是大小为 0 的空文件",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "可用空间不足,您上传的文件大小为 {size1} ,但可用空间仅剩 {size2}",
- "Target folder \"{dir}\" does not exist any more" : "目标目录 \"{dir}\" 不存在",
+ "Target folder \"{dir}\" does not exist any more" : "目标文件夹“{dir}”不存在",
"Not enough free space" : "可用空间不足",
"An unknown error has occurred" : "发生了未知错误。",
"File could not be uploaded" : "文件无法上传",
- "Uploading …" : "正在上传...",
+ "Uploading …" : "正在上传 ...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})",
"Uploading that item is not supported" : "不支持上传此项目",
"Target folder does not exist any more" : "目标文件夹已不存在",
@@ -39,35 +39,35 @@ OC.L10N.register(
"Delete folder" : "删除文件夹",
"Disconnect storage" : "断开与存储空间的连接",
"Leave this share" : "离开这个共享",
- "Could not load info for file \"{file}\"" : "无法加载文件 \"{file}\" 的信息",
+ "Could not load info for file \"{file}\"" : "无法加载文件“{file}”的信息",
"Files" : "文件",
"Details" : "详细信息",
"Please select tag(s) to add to the selection" : "请选择要添加到所选项目的标签",
"Apply tag(s) to selection" : "将标签应用到所选项目",
- "Select directory \"{dirName}\"" : "选择目录 \"{dirName}\"",
- "Select file \"{fileName}\"" : "选择文件 \"{dirName}\"",
+ "Select directory \"{dirName}\"" : "选择目录“{dirName}”",
+ "Select file \"{fileName}\"" : "选择文件“{dirName}”",
"Pending" : "等待",
"Unable to determine date" : "无法确定日期",
"This operation is forbidden" : "该操作被禁止",
"This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用,请检查日志或联系管理员",
"Storage is temporarily not available" : "存储空间暂时不可用",
- "Could not move \"{file}\", target exists" : "无法移动 \"{file}\",目标已存在",
- "Could not move \"{file}\"" : "无法移动 \"{file}\"",
+ "Could not move \"{file}\", target exists" : "无法移动“{file}”,目标已存在",
+ "Could not move \"{file}\"" : "无法移动“{file}”",
"copy" : "复制",
"Could not copy \"{file}\", target exists" : "无法复制“{file}”,目标已存在",
- "Could not copy \"{file}\"" : "无法复制 \"{file}\"",
+ "Could not copy \"{file}\"" : "无法复制“{file}”",
"Copied {origin} inside {destination}" : "在 {destination} 内复制 {origin}",
"Copied {origin} and {nbfiles} other files inside {destination}" : "在 {destination} 内复制了 {origin} 和 {nbfiles} 个其他文件",
"Failed to redirect to client" : "重定向到客户端失败",
"{newName} already exists" : "{newName} 已经存在",
- "Could not rename \"{fileName}\", it does not exist any more" : "无法重命名 \"{fileName}\",此文件已经不存在",
- "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "文件夹 \"{dir}\" 中已经存在 \"{targetName}\"。请尝试其他的名称。",
- "Could not rename \"{fileName}\"" : "无法重命名 \"{fileName}\"",
- "Could not create file \"{file}\"" : "无法创建文件 \"{file}\"",
- "Could not create file \"{file}\" because it already exists" : "无法创建文件 \"{file}\",因为它已经存在",
- "Could not create folder \"{dir}\" because it already exists" : "无法创建文件夹 \"{dir}\",因为它已经存在",
- "Could not fetch file details \"{file}\"" : "无法获取文件详细信息 “{file}”",
- "Error deleting file \"{fileName}\"." : "删除文件 \"{fileName}\" 时出错。",
+ "Could not rename \"{fileName}\", it does not exist any more" : "无法重命名“{fileName}”,此文件已经不存在",
+ "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "文件夹“{dir}”中已经存在“{targetName}”。请尝试其它名称。",
+ "Could not rename \"{fileName}\"" : "无法重命名“{fileName}”",
+ "Could not create file \"{file}\"" : "无法创建文件“{file}”",
+ "Could not create file \"{file}\" because it already exists" : "无法创建文件“{file}”,因为它已经存在",
+ "Could not create folder \"{dir}\" because it already exists" : "无法创建文件夹“{dir}”,因为它已经存在",
+ "Could not fetch file details \"{file}\"" : "无法获取文件详细信息“{file}”",
+ "Error deleting file \"{fileName}\"." : "删除文件“{fileName}”时出错。",
"No search results in other folders for {tag}{filter}{endtag}" : "在其它的文件夹里没有关于 {tag}{filter}{endtag} 的搜索结果",
"Enter more than two characters to search in other folders" : "输入至少三个字符,以搜索其他文件夹",
"Name" : "名称",
@@ -84,21 +84,21 @@ OC.L10N.register(
"{used}%" : "{used}%",
"{used} of {quota} used" : "已使用 {used} / {quota}",
"{used} used" : "已使用 {used} 存储空间",
- "\"{name}\" is an invalid file name." : "\"{name}\" 是一个无效的文件名。",
+ "\"{name}\" is an invalid file name." : "“{name}”是一个无效的文件名。",
"File name cannot be empty." : "文件名不能为空。",
- "\"/\" is not allowed inside a file name." : "文件名不能包含“/”",
- "\"{name}\" is not an allowed filetype" : "\"{name}\" 不是允许的文件类型",
+ "\"/\" is not allowed inside a file name." : "文件名不能包含“/”。",
+ "\"{name}\" is not an allowed filetype" : "“{name}”不是允许的文件类型",
"Storage of {owner} is full, files cannot be updated or synced anymore!" : "{owner} 的存储已满,无法再更新或同步文件了!",
- "Group folder \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "群组文件夹 “{mountPoint}” 已满,无法再更新或同步文件!",
- "External storage \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "外部存储器 \"{mountPoint}\" 已满,无法再更新或同步文件!",
- "Your storage is full, files cannot be updated or synced anymore!" : "你的存储已满,无法再更新或同步文件!",
+ "Group folder \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "群组文件夹“{mountPoint}”已满,无法再更新或同步文件!",
+ "External storage \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "外部存储器“{mountPoint}”已满,无法再更新或同步文件!",
+ "Your storage is full, files cannot be updated or synced anymore!" : "您的的存储已满,无法继续更新或同步文件!",
"Storage of {owner} is almost full ({usedSpacePercent}%)." : "{owner} 的存储空间几乎已满 ({usedSpacePercent}%)。",
- "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "组文件夹 \"{mountPoint}\" 的存储空间几乎已满 ({usedSpacePercent}%)。",
- "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "外部存储 \"{mountPoint}\" 的存储空间几乎已满 ({usedSpacePercent}%)。",
+ "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "组文件夹“{mountPoint}”的存储空间几乎已满 ({usedSpacePercent}%)。",
+ "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "外部存储“{mountPoint}”的存储空间几乎已满 ({usedSpacePercent}%)。",
"Your storage is almost full ({usedSpacePercent}%)." : "您的存储空间几乎已满({usedSpacePercent}%)",
- "_matches \"{filter}\"_::_match \"{filter}\"_" : ["匹配 \"{filter}\""],
+ "_matches \"{filter}\"_::_match \"{filter}\"_" : ["匹配“{filter}”"],
"View in folder" : "在文件夹中查看",
- "Direct link was copied (only works for users who have access to this file/folder)" : "已复制直链(仅对有权访问此文件/文件夹的人有效)",
+ "Direct link was copied (only works for users who have access to this file/folder)" : "已复制直链(仅适用于有权访问此文件/文件夹的用户)",
"Path" : "路径",
"_%n byte_::_%n bytes_" : ["%n 字节"],
"Favorited" : "已收藏",
@@ -126,7 +126,7 @@ OC.L10N.register(
"Restored by {user}" : "由 {user} 恢复",
"Renamed by {user}" : "由 {user} 重命名",
"Moved by {user}" : "由 {user} 移动",
- "\"remote user\"" : "\"远程用户\"",
+ "\"remote user\"" : "“远程用户”",
"You created {file}" : "您创建了 {file}",
"You created an encrypted file in {file}" : "您在 {file} 创建了一个加密文件",
"{user} created {file}" : "{user} 创建了 {file}",
@@ -142,49 +142,49 @@ OC.L10N.register(
"{user} deleted an encrypted file in {file}" : "{user} 在 {file} 删除了加密文件",
"You restored {file}" : "您恢复了{file}",
"{user} restored {file}" : "{user} 恢复了 {file}",
- "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "你将 {oldfile} (隐藏的) 重命名为了 {newfile} (隐藏的)",
- "You renamed {oldfile} (hidden) to {newfile}" : "你将 {oldfile} (隐藏的) 重命名为了 {newfile}",
- "You renamed {oldfile} to {newfile} (hidden)" : "你将 {oldfile} 重命名为了 {newfile} (隐藏的)",
+ "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "您将 {oldfile}(隐藏)重命名为 {newfile}(隐藏)",
+ "You renamed {oldfile} (hidden) to {newfile}" : "您将 {oldfile}(隐藏)重命名为 {newfile}",
+ "You renamed {oldfile} to {newfile} (hidden)" : "您将 {oldfile} 重命名为了 {newfile}(隐藏)",
"You renamed {oldfile} to {newfile}" : "您将 {oldfile} 改名为 {newfile}",
- "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user} 将 {oldfile} (隐藏的) 重命名为了 {newfile} (隐藏的)",
- "{user} renamed {oldfile} (hidden) to {newfile}" : "{user} 将 {oldfile} (隐藏的) 重命名为了 {newfile}",
- "{user} renamed {oldfile} to {newfile} (hidden)" : "{user} 将 {oldfile} 重命名为了 {newfile} (隐藏的)",
+ "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user} 将 {oldfile}(隐藏)重命名为 {newfile}(隐藏)",
+ "{user} renamed {oldfile} (hidden) to {newfile}" : "{user} 将 {oldfile}(隐藏)重命名为 {newfile}",
+ "{user} renamed {oldfile} to {newfile} (hidden)" : "{user} 将 {oldfile} 重命名为 {newfile}(隐藏)",
"{user} renamed {oldfile} to {newfile}" : "{user} 将 {oldfile} 改名为 {newfile}",
- "You moved {oldfile} to {newfile}" : "你将 {oldfile} 移动到了 {newfile}",
+ "You moved {oldfile} to {newfile}" : "您将 {oldfile} 移动到了 {newfile}",
"{user} moved {oldfile} to {newfile}" : "{user} 将 {oldfile} 移动到了 {newfile}",
- "A file has been added to or removed from your <strong>favorites</strong>" : "文件已经添加或删除到您的 <strong>收藏夹</strong> 中",
- "A file or folder has been <strong>changed</strong>" : "文件/文件夹已经 <strong>修改</strong>",
- "A favorite file or folder has been <strong>changed</strong>" : "一个文件或文件夹已<strong>修改</strong>。",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "文件已经添加或删除到您的<strong>收藏夹</strong> 中",
+ "A file or folder has been <strong>changed</strong>" : "文件或文件夹已经被<strong>修改</strong>",
+ "A favorite file or folder has been <strong>changed</strong>" : "一个收藏的文件或文件夹已经被<strong>修改</strong>",
"All files" : "全部文件",
"Upload (max. %s)" : "上传 (最大 %s)",
"Accept" : "接受",
"Reject" : "拒绝",
- "Incoming ownership transfer from {user}" : "来自{user}的所有权转移",
- "Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "您要接受{path}吗?\n\n注意:接受后转移过程可能长达1小时。",
+ "Incoming ownership transfer from {user}" : "来自 {user} 的所有权转移",
+ "Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "您要接受 {path} 吗?\n\n注意:接受后转移过程可能长达1小时。",
"Ownership transfer failed" : "所有权转移失败",
- "Your ownership transfer of {path} to {user} failed." : "您{path}的所有权向{user}转移失败。",
- "The ownership transfer of {path} from {user} failed." : "来自{user}的{path}的所有权转移失败。",
+ "Your ownership transfer of {path} to {user} failed." : "您 {path} 的所有权向 {user} 转移失败。",
+ "The ownership transfer of {path} from {user} failed." : "来自 {user} 的 {path} 的所有权转移失败。",
"Ownership transfer done" : "所有权转移完成",
- "Your ownership transfer of {path} to {user} has completed." : "您的{path}向{user}的所有权转移已完成。",
- "The ownership transfer of {path} from {user} has completed." : "来自{user}的{path}的所有权转移已完成。",
+ "Your ownership transfer of {path} to {user} has completed." : "您的 {path} 向 {user} 的所有权转移已完成。",
+ "The ownership transfer of {path} from {user} has completed." : "来自 {user} 的 {path} 的所有权转移已完成。",
"in %s" : "在 %s",
"File Management" : "文件管理",
"Reload current directory" : "重新载入当前目录",
- "Go to the \"{dir}\" directory" : "转到 \"{dir}\" 目录",
+ "Go to the \"{dir}\" directory" : "前往“{dir}”目录",
"Select the row for {displayName}" : "选择 {displayName} 的行",
"Open folder {name}" : "打开文件夹 {name}",
"Download file {name}" : "下载文件 {name}",
- "\"{displayName}\" action executed successfully" : "\"{displayName}\" 操作执行成功",
- "\"{displayName}\" action failed" : "\"{displayName}\" 操作执行失败",
+ "\"{displayName}\" action executed successfully" : "“{displayName}”操作执行成功",
+ "\"{displayName}\" action failed" : "“{displayName}”操作执行失败",
"Total rows summary" : "总行摘要",
"Select all" : "全部选择",
"Unselect all" : "取消全选",
"\"{displayName}\" failed on some elements " : "“{displayName}”在某些元素上失败",
- "\"{displayName}\" batch action executed successfully" : "批量操作 \"{displayName}\" 运行成功",
+ "\"{displayName}\" batch action executed successfully" : "批量操作“{displayName}”运行成功",
"ascending" : "升序",
"descending" : "降序",
"Sort list by {column} ({direction})" : "按 {column} ({direction}) 排序列表",
- "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "该列表因为性能原因没有完全加载。文件将会在您浏览列表的时候加载。",
+ "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "因为性能原因,该列表没有完全加载。这些文件将会在您浏览列表的时候加载。",
"Storage informations" : "存储信息",
"{usedQuotaByte} used" : "{usedQuotaByte} 已使用",
"{relative}% used" : "{relative}% 已使用",
@@ -216,7 +216,7 @@ OC.L10N.register(
"WebDAV" : "WebDAV",
"Copy to clipboard" : "复制到剪贴板",
"Use this address to access your Files via WebDAV" : "使用此地址通过 WebDAV 访问您的文件",
- "If you have enabled 2FA, you must create and use a new app password by clicking here." : "如果您启用了两步验证,您必须点击此处来创建和使用一个新的应用程序密码。",
+ "If you have enabled 2FA, you must create and use a new app password by clicking here." : "如果启用两步验证,您必须点击此处来创建和使用一个新的应用程序密码。",
"Clipboard is not available" : "剪贴板不可用",
"WebDAV URL copied to clipboard" : "WebDAV 链接已复制到剪贴板",
"Unable to change the favourite state of the file" : "无法修改文件的收藏状态",
@@ -238,7 +238,7 @@ OC.L10N.register(
"Upload some content or sync with your devices!" : "上传一些内容或与您的设备同步!",
"No entries found in this folder" : "在此文件夹中找不到项目",
"Upload too large" : "上传文件过大",
- "The files you are trying to upload exceed the maximum size for file uploads on this server." : "正在上传的文件超过了此服务器允许上传的最大容量限制",
+ "The files you are trying to upload exceed the maximum size for file uploads on this server." : "您尝试上传的文件大小超过了服务器的限制。",
"No favorites yet" : "暂无收藏",
"Files and folders you mark as favorite will show up here" : "收藏的文件和文件夹会在这里显示",
"Shares" : "共享",
diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json
index 1b622750b22..a95cbd1548c 100644
--- a/apps/files/l10n/zh_CN.json
+++ b/apps/files/l10n/zh_CN.json
@@ -9,18 +9,18 @@
"Home" : "首页",
"Close" : "关闭",
"Favorites" : "收藏",
- "Could not create folder \"{dir}\"" : "无法创建文件夹 \"{dir}\"",
+ "Could not create folder \"{dir}\"" : "无法创建文件夹“{dir}”",
"This will stop your current uploads." : "这会终止您当前的上传。",
"Upload cancelled." : "上传已取消。",
- "Processing files …" : "正在处理文件……",
- "…" : "……",
+ "Processing files …" : "正在处理文件 ...",
+ "…" : "...",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "无法上传 {filename},因为它是一个目录或者是大小为 0 的空文件",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "可用空间不足,您上传的文件大小为 {size1} ,但可用空间仅剩 {size2}",
- "Target folder \"{dir}\" does not exist any more" : "目标目录 \"{dir}\" 不存在",
+ "Target folder \"{dir}\" does not exist any more" : "目标文件夹“{dir}”不存在",
"Not enough free space" : "可用空间不足",
"An unknown error has occurred" : "发生了未知错误。",
"File could not be uploaded" : "文件无法上传",
- "Uploading …" : "正在上传...",
+ "Uploading …" : "正在上传 ...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})",
"Uploading that item is not supported" : "不支持上传此项目",
"Target folder does not exist any more" : "目标文件夹已不存在",
@@ -37,35 +37,35 @@
"Delete folder" : "删除文件夹",
"Disconnect storage" : "断开与存储空间的连接",
"Leave this share" : "离开这个共享",
- "Could not load info for file \"{file}\"" : "无法加载文件 \"{file}\" 的信息",
+ "Could not load info for file \"{file}\"" : "无法加载文件“{file}”的信息",
"Files" : "文件",
"Details" : "详细信息",
"Please select tag(s) to add to the selection" : "请选择要添加到所选项目的标签",
"Apply tag(s) to selection" : "将标签应用到所选项目",
- "Select directory \"{dirName}\"" : "选择目录 \"{dirName}\"",
- "Select file \"{fileName}\"" : "选择文件 \"{dirName}\"",
+ "Select directory \"{dirName}\"" : "选择目录“{dirName}”",
+ "Select file \"{fileName}\"" : "选择文件“{dirName}”",
"Pending" : "等待",
"Unable to determine date" : "无法确定日期",
"This operation is forbidden" : "该操作被禁止",
"This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用,请检查日志或联系管理员",
"Storage is temporarily not available" : "存储空间暂时不可用",
- "Could not move \"{file}\", target exists" : "无法移动 \"{file}\",目标已存在",
- "Could not move \"{file}\"" : "无法移动 \"{file}\"",
+ "Could not move \"{file}\", target exists" : "无法移动“{file}”,目标已存在",
+ "Could not move \"{file}\"" : "无法移动“{file}”",
"copy" : "复制",
"Could not copy \"{file}\", target exists" : "无法复制“{file}”,目标已存在",
- "Could not copy \"{file}\"" : "无法复制 \"{file}\"",
+ "Could not copy \"{file}\"" : "无法复制“{file}”",
"Copied {origin} inside {destination}" : "在 {destination} 内复制 {origin}",
"Copied {origin} and {nbfiles} other files inside {destination}" : "在 {destination} 内复制了 {origin} 和 {nbfiles} 个其他文件",
"Failed to redirect to client" : "重定向到客户端失败",
"{newName} already exists" : "{newName} 已经存在",
- "Could not rename \"{fileName}\", it does not exist any more" : "无法重命名 \"{fileName}\",此文件已经不存在",
- "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "文件夹 \"{dir}\" 中已经存在 \"{targetName}\"。请尝试其他的名称。",
- "Could not rename \"{fileName}\"" : "无法重命名 \"{fileName}\"",
- "Could not create file \"{file}\"" : "无法创建文件 \"{file}\"",
- "Could not create file \"{file}\" because it already exists" : "无法创建文件 \"{file}\",因为它已经存在",
- "Could not create folder \"{dir}\" because it already exists" : "无法创建文件夹 \"{dir}\",因为它已经存在",
- "Could not fetch file details \"{file}\"" : "无法获取文件详细信息 “{file}”",
- "Error deleting file \"{fileName}\"." : "删除文件 \"{fileName}\" 时出错。",
+ "Could not rename \"{fileName}\", it does not exist any more" : "无法重命名“{fileName}”,此文件已经不存在",
+ "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "文件夹“{dir}”中已经存在“{targetName}”。请尝试其它名称。",
+ "Could not rename \"{fileName}\"" : "无法重命名“{fileName}”",
+ "Could not create file \"{file}\"" : "无法创建文件“{file}”",
+ "Could not create file \"{file}\" because it already exists" : "无法创建文件“{file}”,因为它已经存在",
+ "Could not create folder \"{dir}\" because it already exists" : "无法创建文件夹“{dir}”,因为它已经存在",
+ "Could not fetch file details \"{file}\"" : "无法获取文件详细信息“{file}”",
+ "Error deleting file \"{fileName}\"." : "删除文件“{fileName}”时出错。",
"No search results in other folders for {tag}{filter}{endtag}" : "在其它的文件夹里没有关于 {tag}{filter}{endtag} 的搜索结果",
"Enter more than two characters to search in other folders" : "输入至少三个字符,以搜索其他文件夹",
"Name" : "名称",
@@ -82,21 +82,21 @@
"{used}%" : "{used}%",
"{used} of {quota} used" : "已使用 {used} / {quota}",
"{used} used" : "已使用 {used} 存储空间",
- "\"{name}\" is an invalid file name." : "\"{name}\" 是一个无效的文件名。",
+ "\"{name}\" is an invalid file name." : "“{name}”是一个无效的文件名。",
"File name cannot be empty." : "文件名不能为空。",
- "\"/\" is not allowed inside a file name." : "文件名不能包含“/”",
- "\"{name}\" is not an allowed filetype" : "\"{name}\" 不是允许的文件类型",
+ "\"/\" is not allowed inside a file name." : "文件名不能包含“/”。",
+ "\"{name}\" is not an allowed filetype" : "“{name}”不是允许的文件类型",
"Storage of {owner} is full, files cannot be updated or synced anymore!" : "{owner} 的存储已满,无法再更新或同步文件了!",
- "Group folder \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "群组文件夹 “{mountPoint}” 已满,无法再更新或同步文件!",
- "External storage \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "外部存储器 \"{mountPoint}\" 已满,无法再更新或同步文件!",
- "Your storage is full, files cannot be updated or synced anymore!" : "你的存储已满,无法再更新或同步文件!",
+ "Group folder \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "群组文件夹“{mountPoint}”已满,无法再更新或同步文件!",
+ "External storage \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "外部存储器“{mountPoint}”已满,无法再更新或同步文件!",
+ "Your storage is full, files cannot be updated or synced anymore!" : "您的的存储已满,无法继续更新或同步文件!",
"Storage of {owner} is almost full ({usedSpacePercent}%)." : "{owner} 的存储空间几乎已满 ({usedSpacePercent}%)。",
- "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "组文件夹 \"{mountPoint}\" 的存储空间几乎已满 ({usedSpacePercent}%)。",
- "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "外部存储 \"{mountPoint}\" 的存储空间几乎已满 ({usedSpacePercent}%)。",
+ "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "组文件夹“{mountPoint}”的存储空间几乎已满 ({usedSpacePercent}%)。",
+ "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "外部存储“{mountPoint}”的存储空间几乎已满 ({usedSpacePercent}%)。",
"Your storage is almost full ({usedSpacePercent}%)." : "您的存储空间几乎已满({usedSpacePercent}%)",
- "_matches \"{filter}\"_::_match \"{filter}\"_" : ["匹配 \"{filter}\""],
+ "_matches \"{filter}\"_::_match \"{filter}\"_" : ["匹配“{filter}”"],
"View in folder" : "在文件夹中查看",
- "Direct link was copied (only works for users who have access to this file/folder)" : "已复制直链(仅对有权访问此文件/文件夹的人有效)",
+ "Direct link was copied (only works for users who have access to this file/folder)" : "已复制直链(仅适用于有权访问此文件/文件夹的用户)",
"Path" : "路径",
"_%n byte_::_%n bytes_" : ["%n 字节"],
"Favorited" : "已收藏",
@@ -124,7 +124,7 @@
"Restored by {user}" : "由 {user} 恢复",
"Renamed by {user}" : "由 {user} 重命名",
"Moved by {user}" : "由 {user} 移动",
- "\"remote user\"" : "\"远程用户\"",
+ "\"remote user\"" : "“远程用户”",
"You created {file}" : "您创建了 {file}",
"You created an encrypted file in {file}" : "您在 {file} 创建了一个加密文件",
"{user} created {file}" : "{user} 创建了 {file}",
@@ -140,49 +140,49 @@
"{user} deleted an encrypted file in {file}" : "{user} 在 {file} 删除了加密文件",
"You restored {file}" : "您恢复了{file}",
"{user} restored {file}" : "{user} 恢复了 {file}",
- "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "你将 {oldfile} (隐藏的) 重命名为了 {newfile} (隐藏的)",
- "You renamed {oldfile} (hidden) to {newfile}" : "你将 {oldfile} (隐藏的) 重命名为了 {newfile}",
- "You renamed {oldfile} to {newfile} (hidden)" : "你将 {oldfile} 重命名为了 {newfile} (隐藏的)",
+ "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "您将 {oldfile}(隐藏)重命名为 {newfile}(隐藏)",
+ "You renamed {oldfile} (hidden) to {newfile}" : "您将 {oldfile}(隐藏)重命名为 {newfile}",
+ "You renamed {oldfile} to {newfile} (hidden)" : "您将 {oldfile} 重命名为了 {newfile}(隐藏)",
"You renamed {oldfile} to {newfile}" : "您将 {oldfile} 改名为 {newfile}",
- "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user} 将 {oldfile} (隐藏的) 重命名为了 {newfile} (隐藏的)",
- "{user} renamed {oldfile} (hidden) to {newfile}" : "{user} 将 {oldfile} (隐藏的) 重命名为了 {newfile}",
- "{user} renamed {oldfile} to {newfile} (hidden)" : "{user} 将 {oldfile} 重命名为了 {newfile} (隐藏的)",
+ "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user} 将 {oldfile}(隐藏)重命名为 {newfile}(隐藏)",
+ "{user} renamed {oldfile} (hidden) to {newfile}" : "{user} 将 {oldfile}(隐藏)重命名为 {newfile}",
+ "{user} renamed {oldfile} to {newfile} (hidden)" : "{user} 将 {oldfile} 重命名为 {newfile}(隐藏)",
"{user} renamed {oldfile} to {newfile}" : "{user} 将 {oldfile} 改名为 {newfile}",
- "You moved {oldfile} to {newfile}" : "你将 {oldfile} 移动到了 {newfile}",
+ "You moved {oldfile} to {newfile}" : "您将 {oldfile} 移动到了 {newfile}",
"{user} moved {oldfile} to {newfile}" : "{user} 将 {oldfile} 移动到了 {newfile}",
- "A file has been added to or removed from your <strong>favorites</strong>" : "文件已经添加或删除到您的 <strong>收藏夹</strong> 中",
- "A file or folder has been <strong>changed</strong>" : "文件/文件夹已经 <strong>修改</strong>",
- "A favorite file or folder has been <strong>changed</strong>" : "一个文件或文件夹已<strong>修改</strong>。",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "文件已经添加或删除到您的<strong>收藏夹</strong> 中",
+ "A file or folder has been <strong>changed</strong>" : "文件或文件夹已经被<strong>修改</strong>",
+ "A favorite file or folder has been <strong>changed</strong>" : "一个收藏的文件或文件夹已经被<strong>修改</strong>",
"All files" : "全部文件",
"Upload (max. %s)" : "上传 (最大 %s)",
"Accept" : "接受",
"Reject" : "拒绝",
- "Incoming ownership transfer from {user}" : "来自{user}的所有权转移",
- "Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "您要接受{path}吗?\n\n注意:接受后转移过程可能长达1小时。",
+ "Incoming ownership transfer from {user}" : "来自 {user} 的所有权转移",
+ "Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "您要接受 {path} 吗?\n\n注意:接受后转移过程可能长达1小时。",
"Ownership transfer failed" : "所有权转移失败",
- "Your ownership transfer of {path} to {user} failed." : "您{path}的所有权向{user}转移失败。",
- "The ownership transfer of {path} from {user} failed." : "来自{user}的{path}的所有权转移失败。",
+ "Your ownership transfer of {path} to {user} failed." : "您 {path} 的所有权向 {user} 转移失败。",
+ "The ownership transfer of {path} from {user} failed." : "来自 {user} 的 {path} 的所有权转移失败。",
"Ownership transfer done" : "所有权转移完成",
- "Your ownership transfer of {path} to {user} has completed." : "您的{path}向{user}的所有权转移已完成。",
- "The ownership transfer of {path} from {user} has completed." : "来自{user}的{path}的所有权转移已完成。",
+ "Your ownership transfer of {path} to {user} has completed." : "您的 {path} 向 {user} 的所有权转移已完成。",
+ "The ownership transfer of {path} from {user} has completed." : "来自 {user} 的 {path} 的所有权转移已完成。",
"in %s" : "在 %s",
"File Management" : "文件管理",
"Reload current directory" : "重新载入当前目录",
- "Go to the \"{dir}\" directory" : "转到 \"{dir}\" 目录",
+ "Go to the \"{dir}\" directory" : "前往“{dir}”目录",
"Select the row for {displayName}" : "选择 {displayName} 的行",
"Open folder {name}" : "打开文件夹 {name}",
"Download file {name}" : "下载文件 {name}",
- "\"{displayName}\" action executed successfully" : "\"{displayName}\" 操作执行成功",
- "\"{displayName}\" action failed" : "\"{displayName}\" 操作执行失败",
+ "\"{displayName}\" action executed successfully" : "“{displayName}”操作执行成功",
+ "\"{displayName}\" action failed" : "“{displayName}”操作执行失败",
"Total rows summary" : "总行摘要",
"Select all" : "全部选择",
"Unselect all" : "取消全选",
"\"{displayName}\" failed on some elements " : "“{displayName}”在某些元素上失败",
- "\"{displayName}\" batch action executed successfully" : "批量操作 \"{displayName}\" 运行成功",
+ "\"{displayName}\" batch action executed successfully" : "批量操作“{displayName}”运行成功",
"ascending" : "升序",
"descending" : "降序",
"Sort list by {column} ({direction})" : "按 {column} ({direction}) 排序列表",
- "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "该列表因为性能原因没有完全加载。文件将会在您浏览列表的时候加载。",
+ "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "因为性能原因,该列表没有完全加载。这些文件将会在您浏览列表的时候加载。",
"Storage informations" : "存储信息",
"{usedQuotaByte} used" : "{usedQuotaByte} 已使用",
"{relative}% used" : "{relative}% 已使用",
@@ -214,7 +214,7 @@
"WebDAV" : "WebDAV",
"Copy to clipboard" : "复制到剪贴板",
"Use this address to access your Files via WebDAV" : "使用此地址通过 WebDAV 访问您的文件",
- "If you have enabled 2FA, you must create and use a new app password by clicking here." : "如果您启用了两步验证,您必须点击此处来创建和使用一个新的应用程序密码。",
+ "If you have enabled 2FA, you must create and use a new app password by clicking here." : "如果启用两步验证,您必须点击此处来创建和使用一个新的应用程序密码。",
"Clipboard is not available" : "剪贴板不可用",
"WebDAV URL copied to clipboard" : "WebDAV 链接已复制到剪贴板",
"Unable to change the favourite state of the file" : "无法修改文件的收藏状态",
@@ -236,7 +236,7 @@
"Upload some content or sync with your devices!" : "上传一些内容或与您的设备同步!",
"No entries found in this folder" : "在此文件夹中找不到项目",
"Upload too large" : "上传文件过大",
- "The files you are trying to upload exceed the maximum size for file uploads on this server." : "正在上传的文件超过了此服务器允许上传的最大容量限制",
+ "The files you are trying to upload exceed the maximum size for file uploads on this server." : "您尝试上传的文件大小超过了服务器的限制。",
"No favorites yet" : "暂无收藏",
"Files and folders you mark as favorite will show up here" : "收藏的文件和文件夹会在这里显示",
"Shares" : "共享",
diff --git a/apps/files/src/actions/deleteAction.spec.ts b/apps/files/src/actions/deleteAction.spec.ts
index 1046fa6dad7..af7722008b6 100644
--- a/apps/files/src/actions/deleteAction.spec.ts
+++ b/apps/files/src/actions/deleteAction.spec.ts
@@ -25,8 +25,8 @@ import { File, Folder, Permission } from '@nextcloud/files'
import { FileAction } from '../services/FileAction'
import * as eventBus from '@nextcloud/event-bus'
import axios from '@nextcloud/axios'
-import type { Navigation } from '../services/Navigation'
import logger from '../logger'
+import type { Navigation } from '../services/Navigation'
const view = {
id: 'files',
@@ -44,6 +44,7 @@ describe('Delete action conditions tests', () => {
expect(action.id).toBe('delete')
expect(action.displayName([], view)).toBe('Delete')
expect(action.iconSvgInline([], view)).toBe('SvgMock')
+ expect(action.default).toBe(false)
expect(action.order).toBe(100)
})
diff --git a/apps/files/src/actions/downloadAction.spec.ts b/apps/files/src/actions/downloadAction.spec.ts
index 5d75754c50c..a9b51b39510 100644
--- a/apps/files/src/actions/downloadAction.spec.ts
+++ b/apps/files/src/actions/downloadAction.spec.ts
@@ -39,6 +39,7 @@ describe('Download action conditions tests', () => {
expect(action.id).toBe('download')
expect(action.displayName([], view)).toBe('Download')
expect(action.iconSvgInline([], view)).toBe('SvgMock')
+ expect(action.default).toBe(false)
expect(action.order).toBe(30)
})
})
diff --git a/apps/files/src/actions/editLocallyAction.spec.ts b/apps/files/src/actions/editLocallyAction.spec.ts
new file mode 100644
index 00000000000..3582c0d9138
--- /dev/null
+++ b/apps/files/src/actions/editLocallyAction.spec.ts
@@ -0,0 +1,163 @@
+/**
+ * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @author John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @license AGPL-3.0-or-later
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+import { action } from './editLocallyAction'
+import { expect } from '@jest/globals'
+import { File, Permission } from '@nextcloud/files'
+import { FileAction } from '../services/FileAction'
+import * as ncDialogs from '@nextcloud/dialogs'
+import axios from '@nextcloud/axios'
+import type { Navigation } from '../services/Navigation'
+
+const view = {
+ id: 'files',
+ name: 'Files',
+} as Navigation
+
+describe('Edit locally action conditions tests', () => {
+ test('Default values', () => {
+ expect(action).toBeInstanceOf(FileAction)
+ expect(action.id).toBe('edit-locally')
+ expect(action.displayName([], view)).toBe('Edit locally')
+ expect(action.iconSvgInline([], view)).toBe('SvgMock')
+ expect(action.default).toBe(true)
+ expect(action.order).toBe(25)
+ })
+})
+
+describe('Edit locally action enabled tests', () => {
+ test('Enabled for file with UPDATE permission', () => {
+ const file = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.ALL,
+ })
+
+ expect(action.enabled).toBeDefined()
+ expect(action.enabled!([file], view)).toBe(true)
+ })
+
+ test('Disabled for non-dav ressources', () => {
+ const file = new File({
+ id: 1,
+ source: 'https://domain.com/data/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ })
+
+ expect(action.enabled).toBeDefined()
+ expect(action.enabled!([file], view)).toBe(false)
+ })
+
+ test('Disabled if more than one node', () => {
+ const file1 = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foo.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.ALL,
+ })
+ const file2 = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/bar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.ALL,
+ })
+
+ expect(action.enabled).toBeDefined()
+ expect(action.enabled!([file1, file2], view)).toBe(false)
+ })
+
+ test('Disabled for files', () => {
+ const file = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/Foo/',
+ owner: 'admin',
+ mime: 'text/plain',
+ })
+
+ expect(action.enabled).toBeDefined()
+ expect(action.enabled!([file], view)).toBe(false)
+ })
+
+ test('Disabled without UPDATE permissions', () => {
+ const file = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.READ,
+ })
+
+ expect(action.enabled).toBeDefined()
+ expect(action.enabled!([file], view)).toBe(false)
+ })
+})
+
+describe('Edit locally action execute tests', () => {
+ test('Edit locally opens proper URL', async () => {
+ jest.spyOn(axios, 'post').mockImplementation(async () => ({ data: { ocs: { data: { token: 'foobar' } } } }))
+ jest.spyOn(ncDialogs, 'showError')
+
+ const file = new File({
+ id: 1,
+ source: 'http://localhost/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.UPDATE,
+ })
+
+ const exec = await action.exec(file, view, '/')
+
+ // Silent action
+ expect(exec).toBe(null)
+ expect(axios.post).toBeCalledTimes(1)
+ expect(axios.post).toBeCalledWith('http://localhost/ocs/v2.php/apps/files/api/v1/openlocaleditor?format=json', { path: '/foobar.txt' })
+ expect(ncDialogs.showError).toBeCalledTimes(0)
+ expect(window.location.href).toBe('nc://open/test@localhost/foobar.txt?token=foobar')
+ })
+
+ test('Edit locally fails and show error', async () => {
+ jest.spyOn(axios, 'post').mockImplementation(async () => ({}))
+ jest.spyOn(ncDialogs, 'showError').mockImplementation(async () => ({}))
+
+ const file = new File({
+ id: 1,
+ source: 'http://localhost/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.UPDATE,
+ })
+
+ const exec = await action.exec(file, view, '/')
+
+ // Silent action
+ expect(exec).toBe(null)
+ expect(axios.post).toBeCalledTimes(1)
+ expect(axios.post).toBeCalledWith('http://localhost/ocs/v2.php/apps/files/api/v1/openlocaleditor?format=json', { path: '/foobar.txt' })
+ expect(ncDialogs.showError).toBeCalledTimes(1)
+ expect(ncDialogs.showError).toBeCalledWith('Failed to redirect to client')
+ expect(window.location.href).toBe('http://localhost/')
+ })
+})
diff --git a/apps/files/src/actions/editLocallyAction.ts b/apps/files/src/actions/editLocallyAction.ts
new file mode 100644
index 00000000000..ad7e805ec2e
--- /dev/null
+++ b/apps/files/src/actions/editLocallyAction.ts
@@ -0,0 +1,74 @@
+/**
+ * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @author John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @license AGPL-3.0-or-later
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+import { encodePath } from '@nextcloud/paths'
+import { Permission, type Node } from '@nextcloud/files'
+import { translate as t } from '@nextcloud/l10n'
+import axios from '@nextcloud/axios'
+import DevicesSvg from '@mdi/svg/svg/devices.svg?raw'
+
+import { generateOcsUrl } from '@nextcloud/router'
+import { getCurrentUser } from '@nextcloud/auth'
+import { registerFileAction, FileAction } from '../services/FileAction'
+import { showError } from '@nextcloud/dialogs'
+
+const openLocalClient = async function(path: string) {
+ const link = generateOcsUrl('apps/files/api/v1') + '/openlocaleditor?format=json'
+
+ try {
+ const result = await axios.post(link, { path })
+ const uid = getCurrentUser()?.uid
+ let url = `nc://open/${uid}@` + window.location.host + encodePath(path)
+ url += '?token=' + result.data.ocs.data.token
+
+ window.location.href = url
+ } catch (error) {
+ showError(t('files', 'Failed to redirect to client'))
+ }
+}
+
+export const action = new FileAction({
+ id: 'edit-locally',
+ displayName: () => t('files', 'Edit locally'),
+ iconSvgInline: () => DevicesSvg,
+
+ // Only works on single files
+ enabled(nodes: Node[]) {
+ // Only works on single node
+ if (nodes.length !== 1) {
+ return false
+ }
+
+ return (nodes[0].permissions & Permission.UPDATE) !== 0
+ },
+
+ async exec(node: Node) {
+ openLocalClient(node.path)
+ return null
+ },
+
+ default: true,
+ order: 25,
+})
+
+if (!/Android|iPhone|iPad|iPod/i.test(navigator.userAgent)) {
+ registerFileAction(action)
+}
diff --git a/apps/files/src/actions/favoriteAction.spec.ts b/apps/files/src/actions/favoriteAction.spec.ts
new file mode 100644
index 00000000000..144c3a51dc8
--- /dev/null
+++ b/apps/files/src/actions/favoriteAction.spec.ts
@@ -0,0 +1,391 @@
+/**
+ * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @author John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @license AGPL-3.0-or-later
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+import * as favoriteAction from './favoriteAction'
+import { action } from './favoriteAction'
+import { expect } from '@jest/globals'
+import { File, Folder, Permission } from '@nextcloud/files'
+import { FileAction } from '../services/FileAction'
+import * as eventBus from '@nextcloud/event-bus'
+import axios from '@nextcloud/axios'
+import type { Navigation } from '../services/Navigation'
+import logger from '../logger'
+
+const view = {
+ id: 'files',
+ name: 'Files',
+} as Navigation
+
+const favoriteView = {
+ id: 'favorites',
+ name: 'Favorites',
+} as Navigation
+
+global.window.OC = {
+ TAG_FAVORITE: '_$!<Favorite>!$_',
+}
+
+describe('Favorite action conditions tests', () => {
+ test('Default values', () => {
+ const file = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ })
+
+ expect(action).toBeInstanceOf(FileAction)
+ expect(action.id).toBe('favorite')
+ expect(action.displayName([file], view)).toBe('Add to favorites')
+ expect(action.iconSvgInline([], view)).toBe('SvgMock')
+ expect(action.default).toBe(false)
+ expect(action.order).toBe(-50)
+ })
+
+ test('Display name is Remove from favorites if already in favorites', () => {
+ const file = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ attributes: {
+ favorite: 1,
+ },
+ })
+
+ expect(action.displayName([file], view)).toBe('Remove from favorites')
+ })
+
+ test('Display name for multiple state files', () => {
+ const file1 = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.ALL,
+ attributes: {
+ favorite: 1,
+ },
+ })
+ const file2 = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.ALL,
+ attributes: {
+ favorite: 0,
+ },
+ })
+ const file3 = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.ALL,
+ attributes: {
+ favorite: 1,
+ },
+ })
+
+ expect(action.displayName([file1, file2, file3], view)).toBe('Add to favorites')
+ expect(action.displayName([file1, file2], view)).toBe('Add to favorites')
+ expect(action.displayName([file2, file3], view)).toBe('Add to favorites')
+ expect(action.displayName([file1, file3], view)).toBe('Remove from favorites')
+ })
+})
+
+describe('Favorite action enabled tests', () => {
+ test('Enabled for dav file', () => {
+ const file = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ })
+
+ expect(action.enabled).toBeDefined()
+ expect(action.enabled!([file], view)).toBe(true)
+ })
+
+ test('Disabled for non-dav ressources', () => {
+ const file = new File({
+ id: 1,
+ source: 'https://domain.com/data/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ })
+
+ expect(action.enabled).toBeDefined()
+ expect(action.enabled!([file], view)).toBe(false)
+ })
+})
+
+describe('Favorite action execute tests', () => {
+ afterEach(() => {
+ jest.spyOn(axios, 'post').mockRestore()
+ })
+
+ test('Favorite triggers tag addition', async () => {
+ jest.spyOn(axios, 'post')
+ jest.spyOn(eventBus, 'emit')
+
+ const file = new File({
+ id: 1,
+ source: 'http://localhost/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ })
+
+ const exec = await action.exec(file, view, '/')
+
+ expect(exec).toBe(true)
+
+ // Check POST request
+ expect(axios.post).toBeCalledTimes(1)
+ expect(axios.post).toBeCalledWith('/index.php/apps/files/api/v1/files/foobar.txt', { tags: ['_$!<Favorite>!$_'] })
+
+ // Check node change propagation
+ expect(file.attributes.favorite).toBe(1)
+ expect(eventBus.emit).toBeCalledTimes(1)
+ expect(eventBus.emit).toBeCalledWith('files:favorites:added', file)
+ })
+
+ test('Favorite triggers tag removal', async () => {
+ jest.spyOn(axios, 'post')
+ jest.spyOn(eventBus, 'emit')
+
+ const file = new File({
+ id: 1,
+ source: 'http://localhost/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ attributes: {
+ favorite: 1,
+ },
+ })
+
+ const exec = await action.exec(file, view, '/')
+
+ expect(exec).toBe(true)
+
+ // Check POST request
+ expect(axios.post).toBeCalledTimes(1)
+ expect(axios.post).toBeCalledWith('/index.php/apps/files/api/v1/files/foobar.txt', { tags: [] })
+
+ // Check node change propagation
+ expect(file.attributes.favorite).toBe(0)
+ expect(eventBus.emit).toBeCalledTimes(1)
+ expect(eventBus.emit).toBeCalledWith('files:favorites:removed', file)
+ })
+
+ test('Favorite triggers node removal if favorite view and root dir', async () => {
+ jest.spyOn(axios, 'post')
+ jest.spyOn(eventBus, 'emit')
+
+ const file = new File({
+ id: 1,
+ source: 'http://localhost/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ attributes: {
+ favorite: 1,
+ },
+ })
+
+ const exec = await action.exec(file, favoriteView, '/')
+
+ expect(exec).toBe(true)
+
+ // Check POST request
+ expect(axios.post).toBeCalledTimes(1)
+ expect(axios.post).toBeCalledWith('/index.php/apps/files/api/v1/files/foobar.txt', { tags: [] })
+
+ // Check node change propagation
+ expect(file.attributes.favorite).toBe(0)
+ expect(eventBus.emit).toBeCalledTimes(2)
+ expect(eventBus.emit).toHaveBeenNthCalledWith(1, 'files:node:deleted', file)
+ expect(eventBus.emit).toHaveBeenNthCalledWith(2, 'files:favorites:removed', file)
+ })
+
+ test('Favorite does NOT triggers node removal if favorite view but NOT root dir', async () => {
+ jest.spyOn(axios, 'post')
+ jest.spyOn(eventBus, 'emit')
+
+ const file = new File({
+ id: 1,
+ source: 'http://localhost/remote.php/dav/files/admin/Foo/Bar/foobar.txt',
+ root: '/files/admin',
+ owner: 'admin',
+ mime: 'text/plain',
+ attributes: {
+ favorite: 1,
+ },
+ })
+
+ const exec = await action.exec(file, favoriteView, '/')
+
+ expect(exec).toBe(true)
+
+ // Check POST request
+ expect(axios.post).toBeCalledTimes(1)
+ expect(axios.post).toBeCalledWith('/index.php/apps/files/api/v1/files/Foo/Bar/foobar.txt', { tags: [] })
+
+ // Check node change propagation
+ expect(file.attributes.favorite).toBe(0)
+ expect(eventBus.emit).toBeCalledTimes(1)
+ expect(eventBus.emit).toBeCalledWith('files:favorites:removed', file)
+ })
+
+ test('Favorite fails and show error', async () => {
+ const error = new Error('Mock error')
+ jest.spyOn(axios, 'post').mockImplementation(() => { throw new Error('Mock error') })
+ jest.spyOn(logger, 'error').mockImplementation(() => jest.fn())
+
+ const file = new File({
+ id: 1,
+ source: 'http://localhost/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ attributes: {
+ favorite: 0,
+ },
+ })
+
+ const exec = await action.exec(file, view, '/')
+
+ expect(exec).toBe(false)
+
+ // Check POST request
+ expect(axios.post).toBeCalledTimes(1)
+ expect(axios.post).toBeCalledWith('/index.php/apps/files/api/v1/files/foobar.txt', { tags: ['_$!<Favorite>!$_'] })
+
+ // Check node change propagation
+ expect(logger.error).toBeCalledTimes(1)
+ expect(logger.error).toBeCalledWith('Error while adding a file to favourites', { error, source: file.source, node: file })
+ expect(file.attributes.favorite).toBe(0)
+ expect(eventBus.emit).toBeCalledTimes(0)
+ })
+
+ test('Removing from favorites fails and show error', async () => {
+ const error = new Error('Mock error')
+ jest.spyOn(axios, 'post').mockImplementation(() => { throw error })
+ jest.spyOn(logger, 'error').mockImplementation(() => jest.fn())
+
+ const file = new File({
+ id: 1,
+ source: 'http://localhost/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ attributes: {
+ favorite: 1,
+ },
+ })
+
+ const exec = await action.exec(file, view, '/')
+
+ expect(exec).toBe(false)
+
+ // Check POST request
+ expect(axios.post).toBeCalledTimes(1)
+ expect(axios.post).toBeCalledWith('/index.php/apps/files/api/v1/files/foobar.txt', { tags: [] })
+
+ // Check node change propagation
+ expect(logger.error).toBeCalledTimes(1)
+ expect(logger.error).toBeCalledWith('Error while removing a file from favourites', { error, source: file.source, node: file })
+ expect(file.attributes.favorite).toBe(1)
+ expect(eventBus.emit).toBeCalledTimes(0)
+ })
+})
+
+describe('Favorite action batch execute tests', () => {
+ test('Favorite action batch execute with mixed files', async () => {
+ jest.spyOn(favoriteAction, 'favoriteNode')
+ jest.spyOn(axios, 'post')
+
+ const file1 = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foo.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.ALL,
+ attributes: {
+ favorite: 1,
+ },
+ })
+ const file2 = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/bar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.ALL,
+ attributes: {
+ favorite: 0,
+ },
+ })
+
+ // Mixed states triggers favorite action
+ const exec = await action.execBatch!([file1, file2], view, '/')
+ expect(exec).toStrictEqual([true, true])
+ expect([file1, file2].every(file => file.attributes.favorite === 1)).toBe(true)
+
+ expect(favoriteAction.favoriteNode).toBeCalledTimes(2)
+ expect(axios.post).toBeCalledTimes(2)
+ expect(axios.post).toHaveBeenNthCalledWith(1, '/index.php/apps/files/api/v1/files/foo.txt', { tags: ['_$!<Favorite>!$_'] })
+ expect(axios.post).toHaveBeenNthCalledWith(2, '/index.php/apps/files/api/v1/files/bar.txt', { tags: ['_$!<Favorite>!$_'] })
+ })
+
+ test('Remove from favorite action batch execute with favorites only files', async () => {
+ jest.spyOn(favoriteAction, 'favoriteNode')
+ jest.spyOn(axios, 'post')
+
+ const file1 = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foo.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.ALL,
+ attributes: {
+ favorite: 1,
+ },
+ })
+ const file2 = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/bar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.ALL,
+ attributes: {
+ favorite: 1,
+ },
+ })
+
+ // Mixed states triggers favorite action
+ const exec = await action.execBatch!([file1, file2], view, '/')
+ expect(exec).toStrictEqual([true, true])
+ expect([file1, file2].every(file => file.attributes.favorite === 0)).toBe(true)
+
+ expect(favoriteAction.favoriteNode).toBeCalledTimes(2)
+ expect(axios.post).toBeCalledTimes(2)
+ expect(axios.post).toHaveBeenNthCalledWith(1, '/index.php/apps/files/api/v1/files/foo.txt', { tags: [] })
+ expect(axios.post).toHaveBeenNthCalledWith(2, '/index.php/apps/files/api/v1/files/bar.txt', { tags: [] })
+ })
+})
diff --git a/apps/files/src/actions/favoriteAction.ts b/apps/files/src/actions/favoriteAction.ts
new file mode 100644
index 00000000000..5b9ba7f95e6
--- /dev/null
+++ b/apps/files/src/actions/favoriteAction.ts
@@ -0,0 +1,99 @@
+/**
+ * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @author John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @license AGPL-3.0-or-later
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+import { emit } from '@nextcloud/event-bus'
+import { translate as t } from '@nextcloud/l10n'
+import axios from '@nextcloud/axios'
+import Star from '@mdi/svg/svg/star.svg?raw'
+import type { Node } from '@nextcloud/files'
+
+import { generateUrl } from '@nextcloud/router'
+import { registerFileAction, FileAction } from '../services/FileAction'
+import logger from '../logger.js'
+import type { Navigation } from '../services/Navigation'
+
+// If any of the nodes is not favorited, we display the favorite action.
+const shouldFavorite = (nodes: Node[]): boolean => {
+ return nodes.some(node => node.attributes.favorite !== 1)
+}
+
+export const favoriteNode = async (node: Node, view: Navigation, willFavorite: boolean): Promise<boolean> => {
+ try {
+ // TODO: migrate to webdav tags plugin
+ const url = generateUrl('/apps/files/api/v1/files') + node.path
+ await axios.post(url, {
+ tags: willFavorite
+ ? [window.OC.TAG_FAVORITE]
+ : [],
+ })
+
+ // Let's delete if we are in the favourites view
+ // AND if it is removed from the user favorites
+ // AND it's in the root of the favorites view
+ if (view.id === 'favorites' && !willFavorite && node.dirname === '/') {
+ emit('files:node:deleted', node)
+ }
+
+ // Update the node webdav attribute
+ node.attributes.favorite = willFavorite ? 1 : 0
+
+ // Dispatch event to whoever is interested
+ if (willFavorite) {
+ emit('files:favorites:added', node)
+ } else {
+ emit('files:favorites:removed', node)
+ }
+
+ return true
+ } catch (error) {
+ const action = willFavorite ? 'adding a file to favourites' : 'removing a file from favourites'
+ logger.error('Error while ' + action, { error, source: node.source, node })
+ return false
+ }
+}
+
+export const action = new FileAction({
+ id: 'favorite',
+ displayName(nodes: Node[]) {
+ return shouldFavorite(nodes)
+ ? t('files', 'Add to favorites')
+ : t('files', 'Remove from favorites')
+ },
+ iconSvgInline: () => Star,
+
+ enabled(nodes: Node[]) {
+ // We can only favorite nodes within files
+ return !nodes.some(node => !node.root?.startsWith?.('/files'))
+ },
+
+ async exec(node: Node, view: Navigation) {
+ const willFavorite = shouldFavorite([node])
+ return await favoriteNode(node, view, willFavorite)
+ },
+ async execBatch(nodes: Node[], view: Navigation) {
+ const willFavorite = shouldFavorite(nodes)
+ return Promise.all(nodes.map(async node => await favoriteNode(node, view, willFavorite)))
+ },
+
+ order: -50,
+})
+
+registerFileAction(action)
diff --git a/apps/files/src/actions/openFolderAction.spec.ts b/apps/files/src/actions/openFolderAction.spec.ts
index 07502be2eed..140b6722608 100644
--- a/apps/files/src/actions/openFolderAction.spec.ts
+++ b/apps/files/src/actions/openFolderAction.spec.ts
@@ -21,7 +21,7 @@
*/
import { action } from './openFolderAction'
import { expect } from '@jest/globals'
-import { File, Folder, Permission } from '@nextcloud/files'
+import { File, Folder, Node, Permission } from '@nextcloud/files'
import { FileAction } from '../services/FileAction'
import type { Navigation } from '../services/Navigation'
@@ -139,8 +139,7 @@ describe('Open folder action execute tests', () => {
const goToRouteMock = jest.fn()
window.OCP = { Files: { Router: { goToRoute: goToRouteMock } } }
- // @ts-ignore null as Node
- const exec = await action.exec(null, view, '/')
+ const exec = await action.exec(null as unknown as Node, view, '/')
expect(exec).toBe(false)
expect(goToRouteMock).toBeCalledTimes(0)
})
diff --git a/apps/files/src/actions/renameAction.spec.ts b/apps/files/src/actions/renameAction.spec.ts
new file mode 100644
index 00000000000..ae2cfcec7eb
--- /dev/null
+++ b/apps/files/src/actions/renameAction.spec.ts
@@ -0,0 +1,111 @@
+/**
+ * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @author John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @license AGPL-3.0-or-later
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+import { action } from './renameAction'
+import { expect } from '@jest/globals'
+import { File, Permission } from '@nextcloud/files'
+import { FileAction } from '../services/FileAction'
+import * as eventBus from '@nextcloud/event-bus'
+import type { Navigation } from '../services/Navigation'
+
+const view = {
+ id: 'files',
+ name: 'Files',
+} as Navigation
+
+describe('Rename action conditions tests', () => {
+ test('Default values', () => {
+ expect(action).toBeInstanceOf(FileAction)
+ expect(action.id).toBe('rename')
+ expect(action.displayName([], view)).toBe('Rename')
+ expect(action.iconSvgInline([], view)).toBe('SvgMock')
+ expect(action.default).toBe(false)
+ expect(action.order).toBe(10)
+ })
+})
+
+describe('Rename action enabled tests', () => {
+ test('Enabled for node with UPDATE permission', () => {
+ const file = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.UPDATE,
+ })
+
+ expect(action.enabled).toBeDefined()
+ expect(action.enabled!([file], view)).toBe(true)
+ })
+
+ test('Disabled for node without UPDATE permission', () => {
+ const file = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.READ,
+ })
+
+ expect(action.enabled).toBeDefined()
+ expect(action.enabled!([file], view)).toBe(false)
+ })
+
+ test('Disabled if more than one node', () => {
+ window.OCA = { Files: { Sidebar: {} } }
+
+ const file1 = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foo.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ })
+ const file2 = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/bar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ })
+
+ expect(action.enabled).toBeDefined()
+ expect(action.enabled!([file1, file2], view)).toBe(false)
+ })
+})
+
+describe('Rename action exec tests', () => {
+ test('Rename', async () => {
+ jest.spyOn(eventBus, 'emit')
+
+ const file = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ })
+
+ const exec = await action.exec(file, view, '/')
+
+ // Silent action
+ expect(exec).toBe(null)
+ expect(eventBus.emit).toBeCalledTimes(1)
+ expect(eventBus.emit).toHaveBeenCalledWith('files:node:rename', file)
+ })
+})
diff --git a/apps/files/src/actions/renameAction.ts b/apps/files/src/actions/renameAction.ts
new file mode 100644
index 00000000000..02aaaa6d3b4
--- /dev/null
+++ b/apps/files/src/actions/renameAction.ts
@@ -0,0 +1,51 @@
+/**
+ * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @author John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @license AGPL-3.0-or-later
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+import { Permission, type Node } from '@nextcloud/files'
+import { translate as t } from '@nextcloud/l10n'
+import PencilSvg from '@mdi/svg/svg/pencil.svg?raw'
+
+import { emit } from '@nextcloud/event-bus'
+import { registerFileAction, FileAction } from '../services/FileAction'
+
+export const ACTION_DETAILS = 'details'
+
+export const action = new FileAction({
+ id: 'rename',
+ displayName: () => t('files', 'Rename'),
+ iconSvgInline: () => PencilSvg,
+
+ enabled: (nodes: Node[]) => {
+ return nodes.length > 0 && nodes
+ .map(node => node.permissions)
+ .every(permission => (permission & Permission.UPDATE) !== 0)
+ },
+
+ async exec(node: Node) {
+ // Renaming is a built-in feature of the files app
+ emit('files:node:rename', node)
+ return null
+ },
+
+ order: 10,
+})
+
+registerFileAction(action)
diff --git a/apps/files/src/actions/sidebarAction.spec.ts b/apps/files/src/actions/sidebarAction.spec.ts
index cdf878459db..f6594090c53 100644
--- a/apps/files/src/actions/sidebarAction.spec.ts
+++ b/apps/files/src/actions/sidebarAction.spec.ts
@@ -42,7 +42,7 @@ describe('Open sidebar action conditions tests', () => {
})
})
-describe('Open folder action enabled tests', () => {
+describe('Open sidebar action enabled tests', () => {
test('Enabled for ressources within user root folder', () => {
window.OCA = { Files: { Sidebar: {} } }
diff --git a/apps/files/src/actions/sidebarAction.ts b/apps/files/src/actions/sidebarAction.ts
index d0baf611992..4766d2e90df 100644
--- a/apps/files/src/actions/sidebarAction.ts
+++ b/apps/files/src/actions/sidebarAction.ts
@@ -65,4 +65,3 @@ export const action = new FileAction({
})
registerFileAction(action)
-
diff --git a/apps/files/src/components/SidebarTab.vue b/apps/files/src/components/SidebarTab.vue
index 0a6432b47b6..78c050048f1 100644
--- a/apps/files/src/components/SidebarTab.vue
+++ b/apps/files/src/components/SidebarTab.vue
@@ -1,4 +1,3 @@
-
<!--
- @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>
-
diff --git a/apps/files/src/services/FileAction.ts b/apps/files/src/services/FileAction.ts
index 6b2e3750a24..03cc957e1e5 100644
--- a/apps/files/src/services/FileAction.ts
+++ b/apps/files/src/services/FileAction.ts
@@ -110,7 +110,7 @@ export class FileAction {
}
get default() {
- return this._action.default
+ return this._action.default === true
}
get inline() {
diff --git a/apps/files/src/services/RouterService.ts b/apps/files/src/services/RouterService.ts
index 978e009514e..55033f9c79c 100644
--- a/apps/files/src/services/RouterService.ts
+++ b/apps/files/src/services/RouterService.ts
@@ -19,14 +19,13 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
-import type { Route } from 'vue-router';
-import type VueRouter from 'vue-router';
-import type { Dictionary } from 'vue-router/types/router';
-import type { Location } from 'vue-router/types/router';
+import type { Route } from 'vue-router'
+import type VueRouter from 'vue-router'
+import type { Dictionary, Location } from 'vue-router/types/router'
export default class RouterService {
- private _router: VueRouter;
+ private _router: VueRouter
constructor(router: VueRouter) {
this._router = router
@@ -34,12 +33,12 @@ export default class RouterService {
/**
* Trigger a route change on the files app
- *
+ *
* @param path the url path, eg: '/trashbin?dir=/Deleted'
* @param replace replace the current history
* @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location
*/
- goTo(path: string, replace: boolean = false): Promise<Route> {
+ goTo(path: string, replace = false): Promise<Route> {
return this._router.push({
path,
replace,
@@ -68,4 +67,5 @@ export default class RouterService {
replace,
} as Location)
}
+
}
diff --git a/apps/files/src/views/Navigation.cy.ts b/apps/files/src/views/Navigation.cy.ts
index c9a7ca98ee1..97f1f8ee7b8 100644
--- a/apps/files/src/views/Navigation.cy.ts
+++ b/apps/files/src/views/Navigation.cy.ts
@@ -161,7 +161,7 @@ describe('Quota rendering', () => {
// TODO: remove when @nextcloud/l10n 2.0 is released
// https://github.com/nextcloud/nextcloud-l10n/pull/542
cy.stub(L10n, 'translate', (app, text, vars = {}, number) => {
- cy.log({app, text, vars, number})
+ cy.log({ app, text, vars, number })
return text.replace(/%n/g, '' + number).replace(/{([^{}]*)}/g, (match, key) => {
return vars[key]
})