Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>tags/v28.0.0beta1
{"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,iBACA,YACA,SACA,oDACA,8CACA,aACA,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,gBC9EC,yCDiFD,iBCjFC,yCDoFD,oBCpFC,0CDuFD,qGCvFC,wCD6FD,0BC7FC,yCDgGD,2BChGC,2CDmGD,mBCnGC,yCDsGD,2BCtGC,4CDyGD,2BCzGC,0CD4GD,4BC5GC,4CDgHD,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,2BAKA,0EACC,wCAKF,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,kBACA,YACA,SACA,oDACA,8CACA,aACA,iBAGD,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"} | |||||
{"version":3,"sourceRoot":"","sources":["files.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,oDAGD,mBACC,kBACA,aACA,SACA,4CACC,iBACA,YACA,SACA,oDACA,8CACA,aACA,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,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,2BAKA,0EACC,wCAKF,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,kBACA,YACA,SACA,oDACA,8CACA,aACA,iBAGD,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"} |
background-color: var(--color-primary-element-light) !important; | background-color: var(--color-primary-element-light) !important; | ||||
} | } | ||||
/* icons for sidebar */ | |||||
.nav-icon-files { | |||||
@include icon-color('folder', 'files', variables.$color-black); | |||||
} | |||||
.nav-icon-recent { | |||||
@include icon-color('recent', 'files', variables.$color-black); | |||||
} | |||||
.nav-icon-favorites { | |||||
@include icon-color('starred', 'actions', variables.$color-black, 2, true); | |||||
} | |||||
.nav-icon-sharinginOld, | |||||
.nav-icon-sharingoutOld, | |||||
.nav-icon-pendingsharesOld, | |||||
.nav-icon-shareoverviewOld { | |||||
@include icon-color('share', 'files', variables.$color-black); | |||||
} | |||||
.nav-icon-sharinglinksOld { | |||||
@include icon-color('public', 'files', variables.$color-black); | |||||
} | |||||
.nav-icon-extstoragemounts { | |||||
@include icon-color('external', 'files', variables.$color-black); | |||||
} | |||||
.nav-icon-trashbin { | |||||
@include icon-color('delete', 'files', variables.$color-black); | |||||
} | |||||
.nav-icon-trashbin-starred { | |||||
@include icon-color('delete', 'files', #ff0000); | |||||
} | |||||
.nav-icon-deletedsharesOld { | |||||
@include icon-color('unshare', 'files', variables.$color-black); | |||||
} | |||||
.nav-icon-favorites-starred { | |||||
@include icon-color('starred', 'actions', variables.$color-yellow, 2, true); | |||||
} | |||||
#app-navigation .nav-files a.nav-icon-files { | |||||
width: auto; | |||||
} | |||||
/* button needs overrides due to navigation styles */ | /* button needs overrides due to navigation styles */ | ||||
#app-navigation .nav-files a.new { | #app-navigation .nav-files a.new { | ||||
width: 40px; | width: 40px; |
<svg xmlns="http://www.w3.org/2000/svg" id="mdi-folder" viewBox="0 0 24 24"><path d="M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z" /></svg> |
<svg width="32" height="32" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m3 4c-0.5 0-1 0.5-1 1v22c0 0.52 0.48 1 1 1h26c0.52 0 1-0.482 1-1v-18c0-0.5-0.5-1-1-1h-13l-4-4z" fill="#fff"/></svg> | |||||
<svg xmlns="http://www.w3.org/2000/svg" id="mdi-folder" viewBox="0 0 24 24"><path d="M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z" fill="#fff" /></svg> |
<svg width="24px" height="24px" fill="#000000" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 18c1.1 0 1.99-.9 1.99-2L22 6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2H1c-.55 0-1 .45-1 1s.45 1 1 1h22c.55 0 1-.45 1-1s-.45-1-1-1h-3zM5 6h14c.55 0 1 .45 1 1v8c0 .55-.45 1-1 1H5c-.55 0-1-.45-1-1V7c0-.55.45-1 1-1z"/></svg> |
<svg width="16" height="16" version="1.1" viewbox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M6.5 1L6 2H3c-.554 0-1 .446-1 1v1h12V3c0-.554-.446-1-1-1h-3l-.5-1zM3 5l.875 9c.06.55.573 1 1.125 1h6c.552 0 1.064-.45 1.125-1L13 5z"/></svg> |
<svg width="16" height="16" version="1.1" viewbox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m8 1 2.4 2.44-3.46 3.5 2.12 2.12 3.5-3.5 2.44 2.44v-7zm-5.25 1.5c-0.68 0-1.25 0.57-1.25 1.25v9.5c0 0.68 0.57 1.25 1.25 1.25h9.5c0.68 0 1.25-0.57 1.25-1.25v-4.25l-1.5-1.5v5.5h-9v-9h5.5l-1.5-1.5z"/></svg> |
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m1.5 2c-0.25 0-0.5 0.25-0.5 0.5v11c0 0.26 0.24 0.5 0.5 0.5h13c0.26 0 0.5-0.241 0.5-0.5v-9c0-0.25-0.25-0.5-0.5-0.5h-6.5l-2-2z"/></svg> | |||||
<svg xmlns="http://www.w3.org/2000/svg" id="mdi-folder" viewBox="0 0 24 24"><path d="M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z" /></svg> |
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m9.2363 2.166-3.1816 3.1836c-0.7071 0.7072-1.0378 1.6182-0.9883 2.457 0.05 0.8389 0.4333 1.5841 0.9883 2.1387l1.4121-1.416c-0.5672-0.5672-0.5444-1.2192 2e-3 -1.7656l3.1812-3.1817c0.52536-0.52536 1.2507-0.52318 1.772-2e-3 0.48245 0.5556 0.52732 1.2382-4e-3 1.7695l-0.82 0.8203c0.555 0.785 0.645 1.3663 0.593 2.2344l1.641-1.6406c1.2374-1.2374 1.2371-3.3645 0-4.6016-1.236-1.2361-3.342-1.2113-4.5957 4e-3zm0.7071 3.8848-1.4141 1.418h4e-3c0.55 0.55 0.50736 1.2582-4e-3 1.7695l-3.1816 3.1817c-0.696 0.59192-1.2985 0.47105-1.7696 0-0.62636-0.62636-0.5-1.2681 0-1.768l0.85-0.8473c-0.556-0.7835-0.6484-1.365-0.5976-2.2324l-1.666 1.666c-1.2393 1.2393-1.2357 3.36 0 4.5957 1.2353 1.2353 3.362 1.2356 4.5976 0l3.1817-3.182c0.7086-0.7083 1.0396-1.6184 0.9906-2.4586-0.048-0.8401-0.432-1.5864-0.9887-2.1407z"/></svg> |
<svg width="16" height="16" version="1.1" viewbox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><circle cx="8" cy="8" r="7" fill="none" stroke="#000" stroke-width="2"/><path d="m8 3.5-1 5 3.5 2-2-2z" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/></svg> |
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><circle cx="3.5" cy="8" r="2.5"/><circle cx="12.5" cy="12.5" r="2.5"/><circle cx="12.5" cy="3.5" r="2.5"/><path d="m3.5 8 9 4.5m-9-4.5 9-4.5" fill="none" stroke="#000" stroke-width="2"/></svg> |
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m8 0.5 2.2 5.3 5.8 0.45-4.5 3.75 1.5 5.5-5-3.1-5 3.1 1.5-5.5-4.5-3.75 5.8-0.45z"/></svg> |
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m12.5 1a2.5 2.5 0 0 0-2.5 2.5 2.5 2.5 0 0 0 0.003906 0.12891l-4.9023 2.4512a2.5 2.5 0 0 0-1.6016-0.58008 2.5 2.5 0 0 0-2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 0.30469-0.021484l3.4395-1.7246-1.25-0.625a2.5 2.5 0 0 0 0.0058594-0.12891 2.5 2.5 0 0 0-0.0039062-0.12891l4.9023-2.4512a2.5 2.5 0 0 0 1.6016 0.58008 2.5 2.5 0 0 0 0.26562-0.013672l1.5625-0.7832a2.5 2.5 0 0 0 0.67188-1.7031 2.5 2.5 0 0 0-2.5-2.5zm0.25391 9.0156-3.7246 1.8672 0.97656 0.48828a2.5 2.5 0 0 0-0.005859 0.12891 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5-2.5 2.5 2.5 0 0 0-2.2461-2.4844z"/><rect transform="rotate(-26.63)" x="-1.0586" y="11.891" width="11.687" height="2.0029" ry="0" style="paint-order:normal"/></svg> |
$context->injectFn([Listener::class, 'register']); | $context->injectFn([Listener::class, 'register']); | ||||
$context->injectFn(Closure::fromCallable([$this, 'registerSearchProvider'])); | $context->injectFn(Closure::fromCallable([$this, 'registerSearchProvider'])); | ||||
$this->registerTemplates(); | $this->registerTemplates(); | ||||
$context->injectFn(Closure::fromCallable([$this, 'registerNavigation'])); | |||||
$this->registerHooks(); | $this->registerHooks(); | ||||
} | } | ||||
$templateManager->registerTemplate('application/vnd.oasis.opendocument.spreadsheet', 'core/templates/filetemplates/template.ods'); | $templateManager->registerTemplate('application/vnd.oasis.opendocument.spreadsheet', 'core/templates/filetemplates/template.ods'); | ||||
} | } | ||||
private function registerNavigation(IL10N $l10n): void { | |||||
\OCA\Files\App::getNavigationManager()->add(function () use ($l10n) { | |||||
return [ | |||||
'id' => 'files', | |||||
'appname' => 'files', | |||||
'script' => 'list.php', | |||||
'order' => 0, | |||||
'name' => $l10n->t('All files') | |||||
]; | |||||
}); | |||||
} | |||||
private function registerHooks(): void { | private function registerHooks(): void { | ||||
Util::connectHook('\OCP\Config', 'js', '\OCA\Files\App', 'extendJsConfig'); | Util::connectHook('\OCP\Config', 'js', '\OCA\Files\App', 'extendJsConfig'); | ||||
} | } |
<template> | <template> | ||||
<Fragment> | <Fragment> | ||||
<span v-if="source.attributes.failed" class="files-list__row--failed" /> | |||||
<td class="files-list__row-checkbox"> | <td class="files-list__row-checkbox"> | ||||
<NcCheckboxRadioSwitch v-if="active" | <NcCheckboxRadioSwitch v-if="active" | ||||
:aria-label="t('files', 'Select the row for {displayName}', { displayName })" | :aria-label="t('files', 'Select the row for {displayName}', { displayName })" | ||||
}, | }, | ||||
linkTo() { | linkTo() { | ||||
if (this.source.attributes.failed) { | |||||
return { | |||||
title: this.t('files', 'This node is unavailable'), | |||||
is: 'span', | |||||
} | |||||
} | |||||
if (this.enabledDefaultActions.length > 0) { | if (this.enabledDefaultActions.length > 0) { | ||||
const action = this.enabledDefaultActions[0] | const action = this.enabledDefaultActions[0] | ||||
const displayName = action.displayName([this.source], this.currentView) | const displayName = action.displayName([this.source], this.currentView) | ||||
// Sorted actions that are enabled for this node | // Sorted actions that are enabled for this node | ||||
enabledActions() { | enabledActions() { | ||||
if (this.source.attributes.failed) { | |||||
return [] | |||||
} | |||||
return actions | return actions | ||||
.filter(action => !action.enabled || action.enabled([this.source], this.currentView)) | .filter(action => !action.enabled || action.enabled([this.source], this.currentView)) | ||||
.sort((a, b) => (a.order || 0) - (b.order || 0)) | .sort((a, b) => (a.order || 0) - (b.order || 0)) |
align-items: center; | align-items: center; | ||||
width: 100%; | width: 100%; | ||||
border-bottom: 1px solid var(--color-border); | border-bottom: 1px solid var(--color-border); | ||||
user-select: none; | |||||
} | } | ||||
td, th { | td, th { | ||||
} | } | ||||
} | } | ||||
.files-list__row--failed { | |||||
position: absolute; | |||||
display: block; | |||||
top: 0; | |||||
left: 0; | |||||
right: 0; | |||||
bottom: 0; | |||||
opacity: .1; | |||||
z-index: -1; | |||||
background: var(--color-error); | |||||
} | |||||
.files-list__row-checkbox { | .files-list__row-checkbox { | ||||
justify-content: center; | justify-content: center; | ||||
.checkbox-radio-switch { | .checkbox-radio-switch { | ||||
display: flex; | display: flex; | ||||
justify-content: center; | justify-content: center; |
import processLegacyFilesViews from './legacy/navigationMapper.js' | import processLegacyFilesViews from './legacy/navigationMapper.js' | ||||
import registerFavoritesView from './views/favorites' | import registerFavoritesView from './views/favorites' | ||||
import registerRecentView from './views/recent' | import registerRecentView from './views/recent' | ||||
import registerFilesView from './views/files' | |||||
import registerPreviewServiceWorker from './services/ServiceWorker.js' | import registerPreviewServiceWorker from './services/ServiceWorker.js' | ||||
import router from './router/router.js' | import router from './router/router.js' | ||||
import RouterService from './services/RouterService' | import RouterService from './services/RouterService' | ||||
// Init legacy and new files views | // Init legacy and new files views | ||||
processLegacyFilesViews() | processLegacyFilesViews() | ||||
registerFavoritesView() | registerFavoritesView() | ||||
registerFilesView() | |||||
registerRecentView() | registerRecentView() | ||||
// Register preview service worker | // Register preview service worker |
* along with this program. If not, see <http://www.gnu.org/licenses/>. | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
* | * | ||||
*/ | */ | ||||
import { File, Folder, parseWebdavPermissions } from '@nextcloud/files' | |||||
import { File, Folder, davParsePermissions } from '@nextcloud/files' | |||||
import { generateRemoteUrl } from '@nextcloud/router' | import { generateRemoteUrl } from '@nextcloud/router' | ||||
import { getClient, rootPath } from './WebdavClient' | import { getClient, rootPath } from './WebdavClient' | ||||
import { getCurrentUser } from '@nextcloud/auth' | import { getCurrentUser } from '@nextcloud/auth' | ||||
const resultToNode = function(node: FileStat): File | Folder { | const resultToNode = function(node: FileStat): File | Folder { | ||||
const props = node.props as ResponseProps | const props = node.props as ResponseProps | ||||
const permissions = parseWebdavPermissions(props?.permissions) | |||||
const permissions = davParsePermissions(props?.permissions) | |||||
const owner = getCurrentUser()?.uid as string | const owner = getCurrentUser()?.uid as string | ||||
const nodeData = { | const nodeData = { |
/** | |||||
* @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 type { ContentsWithRoot } from './Navigation' | |||||
import type { FileStat, ResponseDataDetailed, DAVResultResponseProps } from 'webdav' | |||||
import { File, Folder, davParsePermissions } from '@nextcloud/files' | |||||
import { generateRemoteUrl } from '@nextcloud/router' | |||||
import { getCurrentUser } from '@nextcloud/auth' | |||||
import { getClient, rootPath } from './WebdavClient' | |||||
import { getDefaultPropfind } from './DavProperties' | |||||
import { hashCode } from '../utils/hashUtils' | |||||
import logger from '../logger' | |||||
const client = getClient() | |||||
interface ResponseProps extends DAVResultResponseProps { | |||||
permissions: string, | |||||
fileid: number, | |||||
size: number, | |||||
} | |||||
const resultToNode = function(node: FileStat): File | Folder { | |||||
const props = node.props as ResponseProps | |||||
const permissions = davParsePermissions(props?.permissions) | |||||
const owner = getCurrentUser()?.uid as string | |||||
const source = generateRemoteUrl('dav' + rootPath + node.filename) | |||||
const id = props?.fileid < 0 | |||||
? hashCode(source) | |||||
: props?.fileid as number || 0 | |||||
const nodeData = { | |||||
id, | |||||
source, | |||||
mtime: new Date(node.lastmod), | |||||
mime: node.mime as string, | |||||
size: props?.size as number || 0, | |||||
permissions, | |||||
owner, | |||||
root: rootPath, | |||||
attributes: { | |||||
...node, | |||||
...props, | |||||
hasPreview: props?.['has-preview'], | |||||
failed: props?.fileid < 0, | |||||
}, | |||||
} | |||||
delete nodeData.attributes.props | |||||
return node.type === 'file' | |||||
? new File(nodeData) | |||||
: new Folder(nodeData) | |||||
} | |||||
export const getContents = async (path = '/'): Promise<ContentsWithRoot> => { | |||||
const propfindPayload = getDefaultPropfind() | |||||
const contentsResponse = await client.getDirectoryContents(path, { | |||||
details: true, | |||||
data: propfindPayload, | |||||
includeSelf: true, | |||||
}) as ResponseDataDetailed<FileStat[]> | |||||
const root = contentsResponse.data[0] | |||||
const contents = contentsResponse.data.slice(1) | |||||
if (root.filename !== path) { | |||||
throw new Error('Root node does not match requested path') | |||||
} | |||||
return { | |||||
folder: resultToNode(root) as Folder, | |||||
contents: contents.map(result => { | |||||
try { | |||||
return resultToNode(result) | |||||
} catch (error) { | |||||
logger.error(`Invalid node detected '${result.basename}'`, { error }) | |||||
return null | |||||
} | |||||
}).filter(Boolean) as File[], | |||||
} | |||||
} |
* along with this program. If not, see <http://www.gnu.org/licenses/>. | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
* | * | ||||
*/ | */ | ||||
import { File, Folder, Permission, parseWebdavPermissions } from '@nextcloud/files' | |||||
import { File, Folder, Permission, davParsePermissions } from '@nextcloud/files' | |||||
import { generateRemoteUrl } from '@nextcloud/router' | import { generateRemoteUrl } from '@nextcloud/router' | ||||
import { getClient, rootPath } from './WebdavClient' | import { getClient, rootPath } from './WebdavClient' | ||||
import { getCurrentUser } from '@nextcloud/auth' | import { getCurrentUser } from '@nextcloud/auth' | ||||
const resultToNode = function(node: FileStat): File | Folder { | const resultToNode = function(node: FileStat): File | Folder { | ||||
const props = node.props as ResponseProps | const props = node.props as ResponseProps | ||||
const permissions = parseWebdavPermissions(props?.permissions) | |||||
const permissions = davParsePermissions(props?.permissions) | |||||
const owner = getCurrentUser()?.uid as string | const owner = getCurrentUser()?.uid as string | ||||
const nodeData = { | const nodeData = { |
/** | |||||
* @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 type NavigationService from '../services/Navigation' | |||||
import type { Navigation } from '../services/Navigation' | |||||
import { translate as t } from '@nextcloud/l10n' | |||||
import FolderSvg from '@mdi/svg/svg/folder.svg?raw' | |||||
import { getContents } from '../services/Files' | |||||
export default () => { | |||||
const Navigation = window.OCP.Files.Navigation as NavigationService | |||||
Navigation.register({ | |||||
id: 'files', | |||||
name: t('files', 'All files'), | |||||
caption: t('files', 'List of your files and folders.'), | |||||
icon: FolderSvg, | |||||
order: 0, | |||||
getContents, | |||||
} as Navigation) | |||||
} |
*/ | */ | ||||
/* eslint-disable */ | /* eslint-disable */ | ||||
import { getCurrentUser } from '@nextcloud/auth' | import { getCurrentUser } from '@nextcloud/auth' | ||||
import { File, Folder, parseWebdavPermissions } from '@nextcloud/files' | |||||
import { File, Folder, davParsePermissions } from '@nextcloud/files' | |||||
import { generateRemoteUrl, generateUrl } from '@nextcloud/router' | import { generateRemoteUrl, generateUrl } from '@nextcloud/router' | ||||
import type { FileStat, ResponseDataDetailed } from 'webdav' | import type { FileStat, ResponseDataDetailed } from 'webdav' | ||||
const resultToNode = function(node: FileStat): File | Folder { | const resultToNode = function(node: FileStat): File | Folder { | ||||
const permissions = parseWebdavPermissions(node.props?.permissions) | |||||
const permissions = davParsePermissions(node.props?.permissions) | |||||
const owner = getCurrentUser()?.uid as string | const owner = getCurrentUser()?.uid as string | ||||
const previewUrl = generateUrl('/apps/files_trashbin/preview?fileId={fileid}&x=32&y=32', node.props) | const previewUrl = generateUrl('/apps/files_trashbin/preview?fileId={fileid}&x=32&y=32', node.props) | ||||
public function dataGetAppImage() { | public function dataGetAppImage() { | ||||
return [ | return [ | ||||
['core', 'logo/logo.svg', \OC::$SERVERROOT . '/core/img/logo/logo.svg'], | ['core', 'logo/logo.svg', \OC::$SERVERROOT . '/core/img/logo/logo.svg'], | ||||
['files', 'external', \OC::$SERVERROOT . '/apps/files/img/external.svg'], | |||||
['files', 'external.svg', \OC::$SERVERROOT . '/apps/files/img/external.svg'], | |||||
['files', 'folder', \OC::$SERVERROOT . '/apps/files/img/folder.svg'], | |||||
['files', 'folder.svg', \OC::$SERVERROOT . '/apps/files/img/folder.svg'], | |||||
['noapplikethis', 'foobar.svg', false], | ['noapplikethis', 'foobar.svg', false], | ||||
]; | ]; | ||||
} | } |
"@nextcloud/capabilities": "^1.0.4", | "@nextcloud/capabilities": "^1.0.4", | ||||
"@nextcloud/dialogs": "^4.1.0", | "@nextcloud/dialogs": "^4.1.0", | ||||
"@nextcloud/event-bus": "^3.1.0", | "@nextcloud/event-bus": "^3.1.0", | ||||
"@nextcloud/files": "^3.0.0-beta.11", | |||||
"@nextcloud/files": "^3.0.0-beta.13", | |||||
"@nextcloud/initial-state": "^2.0.0", | "@nextcloud/initial-state": "^2.0.0", | ||||
"@nextcloud/l10n": "^2.1.0", | "@nextcloud/l10n": "^2.1.0", | ||||
"@nextcloud/logger": "^2.5.0", | "@nextcloud/logger": "^2.5.0", | ||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" | ||||
}, | }, | ||||
"node_modules/@nextcloud/files": { | "node_modules/@nextcloud/files": { | ||||
"version": "3.0.0-beta.11", | |||||
"resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.0.0-beta.11.tgz", | |||||
"integrity": "sha512-eYPtUo+pBAvY8H0pSDyBJrpUKWILIadOmPVoHKpwOFwljNN3xh+AeT1ofT3oJI6ALfrKD/lDTe18BKU8uhLADA==", | |||||
"version": "3.0.0-beta.14", | |||||
"resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.0.0-beta.14.tgz", | |||||
"integrity": "sha512-wyq+BcOE2KFjhPtpUOIkLRHLxOPVu/ZlbioII4qoD2NtjUHCx9U8RDBo28kFr45Nj3eDsQ1TFEUipocRMJ6J7g==", | |||||
"dependencies": { | "dependencies": { | ||||
"@nextcloud/auth": "^2.0.0", | |||||
"@nextcloud/l10n": "^2.1.0", | |||||
"@nextcloud/logger": "^2.5.0" | |||||
"@nextcloud/auth": "^2.1.0", | |||||
"@nextcloud/l10n": "^2.2.0", | |||||
"@nextcloud/logger": "^2.5.0", | |||||
"@nextcloud/router": "^2.1.2", | |||||
"webdav": "^5.2.3" | |||||
}, | }, | ||||
"engines": { | "engines": { | ||||
"node": "^20.0.0", | "node": "^20.0.0", |
"@nextcloud/capabilities": "^1.0.4", | "@nextcloud/capabilities": "^1.0.4", | ||||
"@nextcloud/dialogs": "^4.1.0", | "@nextcloud/dialogs": "^4.1.0", | ||||
"@nextcloud/event-bus": "^3.1.0", | "@nextcloud/event-bus": "^3.1.0", | ||||
"@nextcloud/files": "^3.0.0-beta.11", | |||||
"@nextcloud/files": "^3.0.0-beta.13", | |||||
"@nextcloud/initial-state": "^2.0.0", | "@nextcloud/initial-state": "^2.0.0", | ||||
"@nextcloud/l10n": "^2.1.0", | "@nextcloud/l10n": "^2.1.0", | ||||
"@nextcloud/logger": "^2.5.0", | "@nextcloud/logger": "^2.5.0", |
public function imagePathProvider(): array { | public function imagePathProvider(): array { | ||||
return [ | return [ | ||||
['core', 'favicon-mask.svg', \OC::$WEBROOT . '/core/img/favicon-mask.svg'], | ['core', 'favicon-mask.svg', \OC::$WEBROOT . '/core/img/favicon-mask.svg'], | ||||
['files', 'external.svg', \OC::$WEBROOT . '/apps/files/img/external.svg'], | |||||
['files', 'folder.svg', \OC::$WEBROOT . '/apps/files/img/folder.svg'], | |||||
]; | ]; | ||||
} | } | ||||