Toby Chui 2 лет назад
Родитель
Сommit
5bc288153a

+ 21 - 63
web/SystemAO/file_system/file_explorer.css

@@ -275,6 +275,12 @@ body{
     background-color: #dadada;
 }
 
+#selectInfo{
+    padding-left: 1.2em;
+    padding-right: 1.2em;
+    color: var(--text_color_secondary);
+}
+
 .mobilePathDisplayWrapper{
     width:100%;
     margin-bottom:5px;
@@ -304,6 +310,12 @@ body{
     padding-top:2em;
     overflow-y:auto;
     background-color: var(--folder_view_background);
+    scrollbar-width: thin;
+}
+
+#folderview.fixscroll{
+    overflow: hidden;
+    padding-right: calc(2em + 12px);
 }
 
 #folderList{
@@ -447,7 +459,8 @@ body{
     -webkit-box-shadow: 3px 3px 5px 0px rgba(0,0,0,0.12);
     -moz-box-shadow: 3px 3px 5px 0px rgba(0,0,0,0.12);
     box-shadow: 3px 3px 5px 0px rgba(0,0,0,0.12);
-    border-radius: 0.4em;
+    /*border-radius: 0.4em;*/
+    z-index: 999;
 }
 
 .contextmenu.visible{
@@ -491,18 +504,19 @@ body{
 }
 .popup{
     position:fixed;
-    top:30px;
+    top:0;
     z-index:110;
-    left:34%;
-    right:34%;
+    right:0;
     bottom:30px;
     padding-bottom:24px;
     border: 0px solid transparent !important;
+    width: 30em;
+    height: 100%;
+    max-width: 100%;
 }
 
 .popup.wide{
-    left:24%;
-    right:24%;
+    width: 60em;
 }
 
 .popup{
@@ -513,62 +527,6 @@ body{
     background-color:white;
 }
 
-@media only screen and (max-width: 1920px) {
-    .popup{
-        left:35em;
-        right:35em;
-    }
-
-    .popup.wide{
-        left:20em;
-        right:20em;
-    }
-}
-
-@media only screen and (max-width: 1500px) {
-    .popup{
-        left:20em;
-        right:20em;
-    }
-    .popup.wide{
-        left:14em;
-        right:14em;
-    }
-}
-
-
-@media only screen and (max-width: 1200px) {
-    .popup{
-        left:14em;
-        right:14em;
-    }
-    .popup.wide{
-        left:5em;
-        right:5em;
-    }
-}
-
-@media only screen and (max-width: 800px) {
-    .popup{
-        left:5em;
-        right:5em;
-    }
-    .popup.wide{
-        left:2em;
-        right:2em;
-    }
-}
-
-@media only screen and (max-width: 600px) {
-    .popup{
-        position:fixed;
-        top:5%;
-        z-index:100;
-        left:1em;
-        right:1em;
-    }
-}
-
 .popupheader{
     width:100%;
     padding:3px;
@@ -661,7 +619,7 @@ body{
 }
 
 #openWithModuleList{
-    height:250px;
+    height:50vh;
     overflow-y:auto;
 }
 

+ 123 - 192
web/SystemAO/file_system/file_explorer.html

@@ -25,7 +25,7 @@
         </style>
     </head>
     <body class="whiteTheme">
-        <div id="navibar" class="navibar whiteTheme">
+        <div id="navibar" class="navibar">
             <!-- File Opr Group-->
             <div class="btnGroup" style="display:inline-block;">
                 <button class="fileOprBtn" title="Open" onclick="openViaButton();"><img class="opricon" src="img/opr/open.svg"><p class="oprtxt" locale="fileopr/Open">Open</p></button>
@@ -86,7 +86,7 @@
                 </div>
                 <button id="editPathBtn" class="navibarBtn" style="margin-left: 0.4em;" title="Edit Path" onclick="showEditCurrentPathInput(event)"><i class="ui edit icon"></i></button>
                 <div id="pathInputField" class="ui action mini input" style="display:none;">
-                    <input type="text" style="min-width: 200px;" class="whiteTheme" placeholder="Type a path and press enter" onkeydown="handleOpenPathKeydown(event);">
+                    <input type="text" style="min-width: 200px;" placeholder="Type a path and press enter" onkeydown="handleOpenPathKeydown(event);">
                     <button class="ui icon basic button" title="Open" onclick="openEnteredPath(this);">
                         <i class="checkmark icon"></i>
                     </button>
@@ -95,16 +95,16 @@
             </div>
             
              <div class="mobilePathDisplayWrapper">
-                <div id="mobilePathDisplay" style="width:100%;" class="ui pathDisplay breadcrumb whiteTheme addressText mobileOnly">
-                    <div class="section whiteTheme selectable"><i class="folder icon"></i> user</div>
-                    <div class="divider whiteTheme">:/</div>
-                    <div class="section whiteTheme selectable">Desktop</div>
+                <div id="mobilePathDisplay" style="width:100%;" class="ui pathDisplay breadcrumb addressText mobileOnly">
+                    <div class="section selectable"><i class="folder icon"></i> user</div>
+                    <div class="divider">:/</div>
+                    <div class="section selectable">Desktop</div>
                 </div>
              </div>
              <div class="searchbar" style="display:none;">
                 <div class="searInputBar" style="width: 80%; display:inline-block; margin-top:-4px;">
                     <div class="ui mini fluid input">
-                        <input autocomplete="off" id="searchInput" type="text" class="whiteTheme" placeholder="File Search (Start wildcard search with / , e.g. /*.mp3)" onkeypress="handleSearchBarPress(event);">
+                        <input autocomplete="off" id="searchInput" type="text" placeholder="File Search (Start wildcard search with / , e.g. /*.mp3)" onkeypress="handleSearchBarPress(event);">
                     </div>
                 </div>
                 <button class="navibarBtn" title="Case Sensitive" onclick="toggleCaseSensitive(this);" style="margin-left: 0.4em;">Aa</button>
@@ -126,10 +126,12 @@
                 <div id="storageroot" class="ui list" style="padding-top:0px !important;">
                     <p class="dir item"  style="opacity: 0.8;"><span locale="message/initiating">Initiating</span></p>
                 </div>
-                <div class="ui divider"></div>
+                <!-- <div class="ui divider"></div>
                 <div id="networkneibour" class="ui list" style="padding-top:0px !important;">
                     
-                </div>
+                </div> -->
+                <div class="ui divider"></div>
+                <p id="selectInfo"></p>
             </div>
             <div id="folderView" ondrop="drop(event)" ondragover="allowDrop(event)">
                 <div id="folderList" class="fileviewList">
@@ -144,8 +146,8 @@
         <!-- Other popup windows -->
         <div class="popupWrapper"></div>
         <!-- Overwrite Selection Box-->
-        <div id="overwriteModeSelection" class="popup whiteTheme" style="display:none;">
-            <div class="popupheader whiteTheme">
+        <div id="overwriteModeSelection" class="popup" style="display:none;">
+            <div class="popupheader">
                 <i class="paste icon"></i> <span locale="opr/overwrite/title">Replace, Keep or Skip Files</span> 
                 <div class="popupcloser" onclick="hideAllPopupWindows();">
                     <i class="remove icon"></i>
@@ -155,20 +157,20 @@
                 <small style="font-size:80%;"><span locale="opr/overwrite/copying">Copying</span> <span class="owm-fc"></span> <span locale="opr/overwrite/files">files from</span> <span class="owm-srcdir"></span> <span locale="opr/overwrite/to">to</span> <span class="owm-destdir"></span></small>
                 <p><span locale="opr/overwrite/dest">The destination has </span><span class="owm-fc"></span> <span locale="opr/overwrite/samename">files with the same names.</span></p>
 
-                <div class="popupbuttons whiteTheme allowHover primary" onclick="changeOverwriteRule(0,true);">
+                <div class="popupbuttons allowHover primary" onclick="changeOverwriteRule(0,true);">
                     <i class="checkmark icon"></i> <span locale="opr/overwrite/replace">Replace the files in the destination</span>
                 </div>
-                <div class="popupbuttons whiteTheme allowHover" onclick="changeOverwriteRule(1,true);">
+                <div class="popupbuttons allowHover" onclick="changeOverwriteRule(1,true);">
                     <i class="reply icon"></i> <span locale="opr/overwrite/skip">Skip these files</span>
                 </div>
-                <div class="popupbuttons whiteTheme allowHover" onclick="changeOverwriteRule(2,true);">
+                <div class="popupbuttons allowHover" onclick="changeOverwriteRule(2,true);">
                     <i class="undo icon"></i> <span locale="opr/overwrite/keep">Rename and keep the files</span>
                 </div>
             </div>
         </div>
         <!-- Force delete confirmation box -->
-        <div id="forceDeleteConfirmBox" class="popup whiteTheme" style="display:none;">
-            <div class="popupheader whiteTheme">
+        <div id="forceDeleteConfirmBox" class="popup" style="display:none;">
+            <div class="popupheader">
                 <i class="trash icon"></i> <span locale="opr/per-remove/title">Permanently Remove Files</span>
                 <div class="popupcloser" onclick="hideAllPopupWindows();">
                     <i class="remove icon"></i>
@@ -176,13 +178,13 @@
             </div>
             <div class="popupcontent" style="padding:12px;">
                 <p locale="opr/per-remove/questions">Are you sure you want to remove these files <u>permanently?</u><br>This action is <u>irreversible</u>.</p>
-                <div class="ui list whiteTheme deleteFilelist" style="max-height:350px;overflow-y:auto; ">
+                <div class="ui list deleteFilelist" style="max-height:350px;overflow-y:auto; ">
 
                 </div>
-                <div class="popupbuttons whiteTheme allowHover" style="background-color: #eb4034 !important;" onclick="forceDelete(true);";>
+                <div class="popupbuttons allowHover" style="background-color: #eb4034 !important;" onclick="forceDelete(true);";>
                 <i class="trash icon"></i> <span locale="opr/per-remove/confirm">Confirm</span>
                 </div>
-                <div class="popupbuttons whiteTheme allowHover" onclick="cancelForceDelete();hideAllPopupWindows();">
+                <div class="popupbuttons allowHover" onclick="cancelForceDelete();">
                     <i class="remove icon"></i> <span locale="opr/per-remove/cancel">Cancel</span>
                 </div>
 
@@ -190,8 +192,8 @@
         </div>
 
         <!-- Delete confirm box -->
-        <div id="deleteConfirmBox" class="popup whiteTheme" style="display:none;">
-            <div class="popupheader whiteTheme">
+        <div id="deleteConfirmBox" class="popup" style="display:none;">
+            <div class="popupheader">
                 <i class="recycle icon"></i> <span locale="opr/remove/title">Move files to Trash Bin</span>
                 <div class="popupcloser" onclick="hideAllPopupWindows();">
                     <i class="remove icon"></i>
@@ -199,16 +201,16 @@
             </div>
             <div class="popupcontent" style="padding:12px;">
                 <p locale="opr/remove/question">Are you sure you want to move these files to trash bin?</p>
-                <div class="ui list whiteTheme deleteFilelist" style="max-height:350px;overflow-y:auto; ">
+                <div class="ui list deleteFilelist" style="max-height:350px;overflow-y:auto; ">
 
                 </div>
-                <div class="popupbuttons whiteTheme allowHover" style="color: #2bbbdf !important;" onclick="deleteFile(true);";>
+                <div class="popupbuttons allowHover" style="color: #2bbbdf !important;" onclick="deleteFile(true);";>
                     <i class="recycle icon"></i> <span locale="opr/remove/confirm">Move to Trash</span>
                 </div>
-                <div class="popupbuttons whiteTheme allowHover" style="background-color: #ff7a7a !important;" onclick="hideAllPopupWindows(); forceDelete();">
+                <div class="popupbuttons allowHover" style="background-color: #ff7a7a !important;" onclick="hideAllPopupWindows(); forceDelete();">
                     <i class="trash icon"></i> <span locale="opr/per-remove/title">Delete Permanently</span>
                 </div>
-                <div class="popupbuttons whiteTheme allowHover" onclick="cancelDelete();hideAllPopupWindows();">
+                <div class="popupbuttons allowHover" onclick="cancelDelete(); ">
                     <i class="remove icon"></i> <span locale="opr/remove/cancel">Cancel</span>
                 </div>
                 
@@ -217,8 +219,8 @@
         </div>
 
         <!-- Rename tool box -->
-        <div id="renameBox" class="popup whiteTheme" style="display:none;">
-            <div class="popupheader whiteTheme">
+        <div id="renameBox" class="popup" style="display:none;">
+            <div class="popupheader">
                 <i class="text cursor icon"></i> <span locale="opr/rename/title">Rename Files</span>
                 <div class="popupcloser" onclick="hideAllPopupWindows();">
                     <i class="remove icon"></i>
@@ -228,17 +230,17 @@
                 <p locale="opr/rename/instruction">Enter the new filename for renaming. </p>
                 <p class="multifileWarning"><i class="notice icon"></i> Other files will be named as file(#)</p>
                 <div class="ui left icon small fluid input" style="margin-bottom:12px;">
-                    <input type="text" class="whiteTheme orgfn" placeholder="Original Filename" readonly="true">
+                    <input type="text" class="orgfn" placeholder="Original Filename" readonly="true">
                     <i class="minus square icon" style="color:rgb(122, 176, 247)"></i>
                 </div>
                 <div class="ui left icon small fluid input" style="margin-bottom:12px;">
-                    <input type="text" class="whiteTheme newfn" placeholder="New Filename" onkeydown="handleEnterKeyDown(event, function(){confirmRename(true);})">
+                    <input type="text" class="newfn" placeholder="New Filename" onkeydown="handleEnterKeyDown(event, function(){confirmRename(true);})">
                     <i class="add square icon" style="color:rgb(122, 176, 247)"></i>
                 </div>
-                <div class="popupbuttons whiteTheme allowHover primary"  onclick="confirmRename(true);";>
+                <div class="popupbuttons allowHover primary"  onclick="confirmRename(true);";>
                 <i class="checkmark icon"></i> <span locale="opr/rename/ok">OK</span>
                 </div>
-                <div class="popupbuttons whiteTheme allowHover" onclick="hideAllPopupWindows();">
+                <div class="popupbuttons allowHover" onclick="hideAllPopupWindows();">
                     <i class="remove icon"></i> <span locale="opr/rename/cancel">Cancel</span>
                 </div>
 
@@ -246,8 +248,8 @@
         </div>
 
         <!-- New File Dialog-->
-        <div id="newFile" class="popup whiteTheme" style="display:none;">
-            <div class="popupheader whiteTheme">
+        <div id="newFile" class="popup" style="display:none;">
+            <div class="popupheader">
                 <i class="add icon"></i> <span locale="opr/newfile/title">New File</span>
                 <div class="popupcloser" onclick="hideAllPopupWindows();">
                     <i class="remove icon"></i>
@@ -255,27 +257,27 @@
             </div>
             <div class="popupcontent" style="padding:12px;">
                 <p locale="opr/newfile/instruction">Select a type of file to be created.</p>
-                <div class="ui segmented list whiteTheme newfilelist" style="max-height:18em; overflow-y:scroll">
+                <div class="ui segmented list newfilelist" style="max-height:18em; overflow-y:scroll">
                     <div class="item newFileFormat" ext="php">No Item</div>
                 </div>
                 <p locale="opr/newfile/newempty">Or create an empty file with given filename:</p>
                 <div class="ui left icon small fluid input" style="margin-bottom:12px;">
-                    <input id="createNewFileName" type="text" class="whiteTheme" placeholder="New Filename" onkeydown="handleEnterKeyDown(event, confirmNewFile);">
+                    <input id="createNewFileName" type="text" placeholder="New Filename" onkeydown="handleEnterKeyDown(event, confirmNewFile);">
                     <i class="add square icon" style="color:rgb(122, 176, 247)"></i>
                 </div>
                 <p class="duplicateWarning" style="color:#CE5F58; display:none;"><i class="caution sign icon"></i> The given filename already exist.</p>
-                <div class="popupbuttons whiteTheme allowHover primary"  onclick="confirmNewFile();";>
+                <div class="popupbuttons allowHover primary"  onclick="confirmNewFile();";>
                     <i class="add icon"></i> <span locale="opr/newfile/create">Create</span>
                 </div>
-                <div class="popupbuttons whiteTheme allowHover" onclick="hideAllPopupWindows();">
+                <div class="popupbuttons allowHover" onclick="hideAllPopupWindows();">
                     <i class="remove icon"></i> <span locale="opr/newfile/cancel">Cancel</span>
                 </div>
             </div>
         </div>
 
         <!-- New Folder Dialog-->
-        <div id="newFolder" class="popup whiteTheme" style="display:none;">
-            <div class="popupheader whiteTheme">
+        <div id="newFolder" class="popup" style="display:none;">
+            <div class="popupheader">
                 <i class="folder icon"></i> <span locale="opr/newfolder/title">New Folder</span>
                 <div class="popupcloser" onclick="hideAllPopupWindows();">
                     <i class="remove icon"></i>
@@ -284,22 +286,22 @@
             <div class="popupcontent" style="padding:12px;">
                 <p locale="opr/newfolder/desc">Enter the new folder name to be created.</p>
                 <div class="ui left icon small fluid input" style="margin-bottom:12px;">
-                    <input id="createNewFolder" type="text" class="whiteTheme" placeholder="New Folder Name" onkeydown="handleEnterKeyDown(event, function(){newFolder(true);});">
+                    <input id="createNewFolder" type="text" placeholder="New Folder Name" onkeydown="handleEnterKeyDown(event, function(){newFolder(true);});">
                     <i class="add square icon" style="color:rgb(122, 176, 247)"></i>
                 </div>
                 <p class="duplicateWarning" style="color:#CE5F58; display:none;"><i class="caution sign icon"></i> <span locale="opr/newfolder/alreadyExists">The given folder already exist.</span></p>
-                <div class="popupbuttons whiteTheme allowHover primary"  onclick="newFolder(true);";>
+                <div class="popupbuttons allowHover primary"  onclick="newFolder(true);";>
                     <i class="add icon"></i> <span locale="opr/newfolder/create">Create</span>
                 </div>
-                <div class="popupbuttons whiteTheme allowHover" onclick="hideAllPopupWindows();">
+                <div class="popupbuttons allowHover" onclick="hideAllPopupWindows();">
                     <i class="remove icon"></i> <span locale="opr/newfolder/cancel">Cancel</span>
                 </div>
             </div>
         </div>
 
         <!-- Share File Dialog-->
-        <div id="shareFile" class="popup wide whiteTheme" style="display:none;">
-            <div class="popupheader whiteTheme">
+        <div id="shareFile" class="popup" style="display:none;">
+            <div class="popupheader">
                 <i class="external icon"></i> <span locale="opr/share/title">Share File</span>
                 <div class="popupcloser" onclick="hideShare();">
                     <i class="remove icon"></i>
@@ -310,85 +312,20 @@
 
                 </iframe>
             </div>
-            
-            <!--
-            <div class="popupcontent" style="padding:12px;">
-                <div class="ui stackable grid">
-                    <div class="eight wide column">
-                        <div class="width: 100%; ">
-                            <div style="display: block; margin-left: auto; margin-right: auto;" align="center">
-                                <div id="qrcode" style="border: 10px solid white; background-color: white;"></div>
-                            </div>
-                            <a id="sharelink" href="" target="_blank" style="margin-top:8px; font-size: 120%; padding-left: 20px; padding-right: 20px; word-break: break-all;">Scan this QR Code to copy the share link</a>
-                        </div>
-                    </div>
-                    <div class="eight wide column" style="padding-left: 12px;">
-                        <div class="ui header whiteTheme">
-                            <span locale="opr/share/settings">Share Settings</span>
-                            <div class="sub header whiteTheme" locale="opr/share/setdesc">Change who can see this file</div>
-                        </div>
-                        <div id="shareSettingForm" class="ui form">
-                            <div class="field">
-                                <label><p class="whiteTheme" locale="opr/share/visableoption">Visable options:</p></label>
-                                <div class="ui checkboxes">
-                                    <div class="ui radio checkbox">
-                                        <input id="anyone" type="radio" class="shareoption" name="shareopt" value="anyone" checked="true">
-                                        <label for="anyone">
-                                            <div class="ui header">
-                                                <div class="content whiteTheme">
-                                                    <i class="globe icon"></i> <span locale= "opr/share/anyone">Anyone with the link</span>
-                                                    <div class="sub header whiteTheme" locale="opr/share/anyonedesc">Anyone who has the link can access this file</div>
-                                                </div>
-                                            </div>
-                                        </label>
-                                    </div>
-                                    <div class="ui radio disabled checkbox">
-                                        <input id="signedin" type="radio" class="shareoption" value="signedin" name="shareopt">
-                                        <label for="signedin">
-                                            <div class="ui header">
-                                                <div class="content whiteTheme">
-                                                    <i class="user circle outline icon"></i> <span locale="opr/share/signedin">Anyone signed in</span>
-                                                    <div class="sub header whiteTheme" locale="opr/share/signedindesc">Anyone who has signed in can access this file</div>
-                                                </div>
-                                            </div>
-                                        </label>
-                                    </div>
-                                    <div class="ui radio disabled checkbox">
-                                        <input id="samegroup" type="radio" class="shareoption" value="samegroup" name="shareopt">
-                                        <label for="samegroup">
-                                            <div class="ui header">
-                                                <div class="content whiteTheme">
-                                                    <i class="users icon"></i> <span locale="opr/share/samegroup">Users in the same group</span>
-                                                    <div class="sub header whiteTheme" locale="opr/share/samegroupdesc">Anyone who is in the same group as you do</div>
-                                                </div>
-                                            </div>
-                                        </label>
-                                    </div>
-                                    <br>
-                                    <button class="ui small button" onclick="updateShareSettings(this)" locale="opr/share/update" style="border: 0px solid transparent;">Update</button>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-                  -->
-                <div style="padding:12px;">
-                    <div class="ui divider"></div>
-                    <div id="sharingRemoveBtn" class="popupbuttons negative whiteTheme allowHover" onclick="removeSharing()">
-                        <i class="remove icon"></i> <span locale="opr/share/remove">Remove Sharing</span>
-                    </div> 
-                    <div class="popupbuttons whiteTheme allowHover" onclick="hideShare();">
-                        <i class="checkmark icon"></i> <span locale="opr/share/ok">OK</span>
-                    </div> 
-                </div>
+            <div style="padding:12px;">
+                <div class="ui divider"></div>
+                <div id="sharingRemoveBtn" class="popupbuttons negative allowHover" onclick="removeSharing()">
+                    <i class="remove icon"></i> <span locale="opr/share/remove">Remove Sharing</span>
+                </div> 
+                <div class="popupbuttons allowHover" onclick="hideShare();">
+                    <i class="checkmark icon"></i> <span locale="opr/share/ok">OK</span>
+                </div> 
             </div>
-           
-            
         </div>
 
         <!-- Open With Dialog-->
-        <div id="openWith" class="popup whiteTheme" style="display:none;">
-            <div class="popupheader whiteTheme">
+        <div id="openWith" class="popup" style="display:none;">
+            <div class="popupheader">
                 <i class="external icon"></i> <span locale="opr/openwith/title">Open File With</span>
                 <div class="popupcloser" onclick="hideAllPopupWindows();">
                     <i class="remove icon"></i>
@@ -396,23 +333,23 @@
             </div>
             <div class="popupcontent" style="padding:12px;">
                <p locale="opr/openwith/desc">Select a module from the list below:</p>
-                <div id="openWithModuleList" class="ui segment whiteTheme" style="padding:0px;">
+                <div id="openWithModuleList" class="ui segment" style="padding:0px;">
                     <div class="item selectable">
                         <div class="content" style="padding-left:12px;">
                             <div class="header" locale="opr/openwith/loading">Loading...</div>
                         </div>
                     </div>
                 </div>
-                <div class="openWithModule popupbuttons whiteTheme allowHover primary" onclick="openWithSelectedModule(this);";>
+                <div class="openWithModule popupbuttons allowHover primary" onclick="openWithSelectedModule(this);";>
                     <i class="external icon"></i> <span locale="opr/openwith/openWithWebApp">Open with Selected Module</span>
                 </div> 
-                <div class="openWithModule popupbuttons whiteTheme allowHover" onclick="openFileWithModuleInNewTab(this);">
+                <div class="openWithModule popupbuttons allowHover" onclick="openFileWithModuleInNewTab(this);">
                     <i class="add icon"></i> <span locale="opr/openwith/openWithWebAppInNewWindow">Open in new tab</span>
                 </div>
-                <div class="popupbuttons whiteTheme allowHover vdonly" onclick="openRawFileInFloatWindow(this);">
+                <div class="popupbuttons allowHover vdonly" onclick="openRawFileInFloatWindow(this);">
                     <i class="window restore outline icon"></i> <span locale="opr/openwith/openInNewWindow">Open File directly in floatWindow</span>
                 </div>
-                <div class="popupbuttons whiteTheme allowHover" onclick="hideAllPopupWindows();">
+                <div class="popupbuttons allowHover" onclick="hideAllPopupWindows();">
                     <i class="remove icon"></i> <span locale="opr/openwith/cancel">Cancel</span>
                 </div>
             </div>
@@ -504,8 +441,8 @@
         </div>
 
         <!-- Upload Progress Bars-->
-        <div id="uploadTab" class="ui segment whiteTheme" style="display:none;">
-            <div class="statusBar whiteTheme">
+        <div id="uploadTab" class="ui segment" style="display:none;">
+            <div class="statusBar">
                 <i class="upload icon"></i><span id="uploadCount">0</span> <span locale="upload/count/uploading">Files</span> / <i class="wait icon"></i> <span id="waitingCount">0</span> <span locale="upload/count/pending">Files</span>
                 <div class="hideUploadButton" onclick="toggleUploadList();">
                     <i class="caret down icon"></i>
@@ -519,8 +456,8 @@
 
         <!-- Confirm Exit -->
          <!-- Open With Dialog-->
-         <div id="confirmExit" class="popup whiteTheme" style="display:none;">
-            <div class="popupheader whiteTheme">
+         <div id="confirmExit" class="popup" style="display:none;">
+            <div class="popupheader">
                 <i class="external icon"></i> <span locale="opr/confirmclose/title">Confirm Exit</span>
                 <div class="popupcloser" onclick="hideAllPopupWindows();">
                     <i class="remove icon"></i>
@@ -529,10 +466,10 @@
             <div class="popupcontent" style="padding:12px;">
                 <p locale="opr/confirmclose/desc">This file manager instance is currently uploading file to server. Closing this instance will cancel the upload tasks. <br>
                     <b>Confirm Exit?</b></p>
-                <div class="popupbuttons negative whiteTheme allowHover" onclick="ao_module_closeHandler(); hideAllPopupWindows();">
+                <div class="popupbuttons negative allowHover" onclick="ao_module_closeHandler(); hideAllPopupWindows();">
                     <i class="trash icon"></i> <span locale="opr/confirmclose/cancelAndExit">Cancel Upload and Exit</span>
                 </div>
-                <div class="popupbuttons whiteTheme allowHover" onclick="hideAllPopupWindows();">
+                <div class="popupbuttons allowHover" onclick="hideAllPopupWindows();">
                     <i class="checkmark icon"></i> <span locale="opr/confirmclose/continue">Continue Upload</span>
                 </div>
             </div>
@@ -608,6 +545,7 @@
                         initUploadMode();
                         $(".dropdown").dropdown();
                         $("#sortingMethodSelector").dropdown("set selected", sortMode);
+                        updateSelectedObjectsCount();
                     });
                 }else{
                     //Applocale not found. Is this a trim down version of ArozOS?
@@ -1398,6 +1336,9 @@
                     startThumbnailLoader();
                 }
 
+                //Update the no. of items in the viewport
+                updateSelectedObjectsCount();
+
                 if (callback !== undefined){
                     callback();
                 }
@@ -1550,7 +1491,7 @@
             //Bind onclicke events for fileObjects
             var lastClickedFileID = 0;
             function bindFileObjectEvents(){
-                $(".fileObject").off("click").on('click',function(evt){
+                $(".fileObject").off("click").on("click",function(evt){
                     if (!ctrlHold && isMobile && !ctrlHold){
                         //If on mobile, click means open (only on not muilti selection mode)
                         evt.preventDefault();
@@ -1591,6 +1532,8 @@
                         $(this).addClass("selected");
                         lastClickedFileID = $(this).attr("fileID");
                     }
+
+                    updateSelectedObjectsCount();
                 });
 
                 //Bind right click select on items
@@ -1715,6 +1658,9 @@
                             $(".zipFileOnly").show();
                         }
                     });
+
+                    //Disable scroll on folderView
+                    $("#folderView").addClass("fixscroll");
                 });
 
                 //Right click on empty space of the file selector
@@ -1740,6 +1686,9 @@
                             $("#contextmenu").css("top",window.innerHeight - $("#contextmenu").height() + "px");
                         }
 
+                        //Disable scroll on folderView
+                        $("#folderView").addClass("fixscroll");
+
                    }
                });
 
@@ -1779,9 +1728,16 @@
 
                $(document).on("click",function(evt){
                    $(".contextmenu").removeClass("visible");
+                    //Enable scroll on folderView
+                    $("#folderView").removeClass("fixscroll");
                });
             }
 
+            //Update the selected items display count
+            function updateSelectedObjectsCount(){
+                $("#selectInfo").text($(".fileObject").length + applocale.getString("tooltip/filecount", " items")  + " / " + $(".fileObject.selected").length + applocale.getString("tooltip/selectedcount", " selected"));
+            }
+
             //Change the current view mode
             function changeViewMode(object){
                 var targetMode = $(object).attr("mode");
@@ -1891,6 +1847,7 @@
                     $("#pathDisplayField").hide();
                 }
                 $("#pathInputField").show();
+                $("#pathInputField").find("input").focus();
                 pathInputMode = true;
             }
 
@@ -1900,6 +1857,7 @@
                     openEnteredPath($("#pathInputField").find("button"));
                 }
             }
+
             function openEnteredPath(object){
                 var newPath = $(object).parent().find("input").val();
                 //Filter out the path
@@ -1922,6 +1880,12 @@
                 $("#editPathBtn").show();
             }
 
+            $("#folderView").on("click", function(){
+                if (pathInputMode){
+                    hideManualOpenPathInput();
+                }
+            })
+
             function checkIfParentDirExists(path){
                 if (path.includes("/")){
                     pathInfo = path.split("/");
@@ -2202,7 +2166,6 @@
                 if (doPasteAgain){
                     //Initiate paste without checking and close the overwritemode selector
                     paste(undefined, true);
-                    $("#overwriteModeSelection").fadeOut(100);
                 }
             }
 
@@ -2410,7 +2373,7 @@
                 $(".popup").fadeOut(100);
                 var duplicatedFileCounts = duplicateFileList.length;
                 showPopupWrapper();
-                $("#overwriteModeSelection").fadeIn(100);
+                $("#overwriteModeSelection").transition("slide left in");
                 $("#overwriteModeSelection").find(".owm-fc").text(duplicatedFileCounts);
                 var srcpath = duplicateFileList[0];
                 srcpath = srcpath.split("/");
@@ -2437,11 +2400,10 @@
                         $(listObject).append(`<div class="item" ><span style="display:inline-block;">${thisfilename}</span></div>`);
                     });
                     showPopupWrapper();
-                    $("#forceDeleteConfirmBox").fadeIn(100);
+                    $("#forceDeleteConfirmBox").transition("slide left in");
                     forceDeleteList = deletePendingList;
                 }else{
                     //Start force delete function
-                    $("#forceDeleteConfirmBox").fadeOut(100);
                     let fdlistLength = forceDeleteList.length;
                     requestCSRFToken(function(token){
                         $.ajax({
@@ -2482,7 +2444,7 @@
                     }else{
                         //File selected. Continue to delete
                         showPopupWrapper();
-                        $("#deleteConfirmBox").fadeIn(100);
+                        $("#deleteConfirmBox").transition("slide left in");
                     }
                 }else{
                     //Continue to delete files
@@ -2516,11 +2478,12 @@
 
             function cancelDelete(){
                 deleteFileList=[];
+                hideAllPopupWindows();
             }            
 
             function cancelForceDelete(){
-                $("#forceDeleteConfirmBox").fadeOut(100);
                 forceDeleteList = [];
+                hideAllPopupWindows();
             }
 
             function createDesktopShortcut(){
@@ -2617,13 +2580,13 @@
                 if (l > 3){
                     //E.g. user:/Desktop/test/boo/ => Display as user:/.../test/boo/
                     $(".pathDisplay").append(`<div class="section">...</div>`);
-                    $(".pathDisplay").append(`<div class="divider whiteTheme">/</div>`);
+                    $(".pathDisplay").append(`<div class="divider">/</div>`);
                     $(".pathDisplay").append(`<div class="section selectable"  onclick="event.stopImmediatePropagation(); parentDir();">${shortenLongFoldername(pathInfo[l-2], 40)}</div>`);
-                    $(".pathDisplay").append(`<div class="divider whiteTheme">/</div>`);
+                    $(".pathDisplay").append(`<div class="divider">/</div>`);
                     $(".pathDisplay").append(`<div class="section selectable" onclick="event.stopImmediatePropagation(); refreshList();">${shortenLongFoldername(pathInfo[l-1], 60)}</div>`);
                 }else if (l == 3){
                     $(".pathDisplay").append(`<div class="section selectable"  onclick="event.stopImmediatePropagation(); parentDir();">${shortenLongFoldername(pathInfo[l-2], 40)}</div>`);
-                    $(".pathDisplay").append(`<div class="divider whiteTheme">/</div>`);
+                    $(".pathDisplay").append(`<div class="divider">/</div>`);
                     $(".pathDisplay").append(`<div class="section selectable" onclick="event.stopImmediatePropagation(); refreshList();">${shortenLongFoldername(pathInfo[l-1], 60)}</div>`);
                 }else if (l == 2){
                     //E.g. user:/Desktop or user:/
@@ -2856,9 +2819,9 @@
 
             //Create a new file
             function newfile(){
-                $(".popup").fadeOut('fast');
+                $(".popup:visible ").transition('slide left out');
                 showPopupWrapper();
-                $("#newFile").fadeIn('fast');
+                $("#newFile").transition('slide left in');
                 $("#newFile").find(".duplicateWarning").hide();
                 $("#createNewFileName").parent().removeClass("error");
                 //Update the newfile list
@@ -2933,12 +2896,12 @@
             function newFolder(confirmed = false){
                 if (confirmed == false){
                     //Launch the dialog for newFolder
-                    $(".popup").fadeOut(100);
+                    hideAllPopupWindows();
                     $("#createNewFolder").val("");
                     $("#createNewFolder").parent().removeClass("error").removeClass("success");
                     $("#newFolder").find(".duplicateWarning").hide();
                     showPopupWrapper();
-                    $("#newFolder").fadeIn(100);
+                    $("#newFolder").transition("slide left in");
                 }else{
                     //Create new folder
                     var newFoldername = $("#createNewFolder").val();
@@ -3071,12 +3034,13 @@
                     }
                 });
                 $(".openWithModule.popupbuttons").addClass("disabled");
-
+                
+                hideAllPopupWindows();
                 if (!ao_module_virtualDesktop){
                     $("#openWith").find(".vdonly").hide();
                 }
                 showPopupWrapper();
-                $("#openWith").fadeIn('fast');
+                $("#openWith").transition("slide left in");
 
             }
 
@@ -3422,38 +3386,6 @@
                             msgbox("red remove",applocale.getString("message/" + data.error,data.error), 5000);
                         }else{
                             //Build the predicted share endpoint
-                            
-                            /*
-                            let protocol = "https://";
-                            if (location.protocol !== 'https:') {
-                                protocol = "http://";
-                            }
-
-                            //Continue to render QR Code and UI contents
-                            $("#qrcode").html("");
-                            var port = ":" + window.location.port;
-                            if (window.location.port == ""){
-                                port = "";
-                            }
-                            var shareURL = protocol + window.location.hostname + port + "/share/" + data.UUID;
-                            shareEditingUUID = data.UUID;
-                            new QRCode(document.getElementById("qrcode"), shareURL);
-                            $("#sharelink").text(shareURL);
-                            $("#sharelink").attr("href", shareURL);
-                            $(".shareoption").parent().removeClass("disabled");
-                            $("#sharingRemoveBtn").show();
-
-                            //Check the correct checkbox
-                            var tagetCheckbox = data.Permission;
-                            if (tagetCheckbox == "anyone"){
-                                $("#anyone")[0].checked = true;
-                            }else if (tagetCheckbox == "signedin"){
-                                $("#signedin")[0].checked = true;
-                            }else if (tagetCheckbox == "samegroup"){
-                                $("#samegroup")[0].checked = true;
-                            }
-                            */ 
-
                             selectedFileObject["QRCode"] = true;
                             selectedFileObject["ActionButtons"] = false;
                             var payload = encodeURIComponent(JSON.stringify([selectedFileObject]));
@@ -3463,9 +3395,9 @@
                             resizeShareIframe();
 
                             //Show the share file interface
-                            $(".popup").fadeOut('fast');
+                            hideAllPopupWindows();
                             showPopupWrapper();
-                            $("#shareFile").fadeIn("fast");
+                            $("#shareFile").transition('slide left');
 
                             //Reload the list
                             listDirectory(currentPath);
@@ -3502,8 +3434,7 @@
                     }
                 });
 
-                $("#shareFile").fadeOut(100);
-                $(".popupWrapper").fadeOut(100);
+                hideAllPopupWindows();
                 msgbox("checkmark", applocale.getString("message/share/removed", "File share removed"))
             }
 
@@ -3531,7 +3462,6 @@
             function hideShare(){
                 hideAllPopupWindows();
                 $("#shareFileEmbedded").attr("src", "");
-               
             }
 
             function toggleSidebar(useAnimation=true){
@@ -3615,7 +3545,7 @@
 
             function toggleDarkTheme(){
                 if ($(".darkTheme").length > 0){
-                    //Set To Whitetheme
+                    //Set To
                     $(".darkTheme").removeClass("darkTheme").addClass("whiteTheme");
                     currentTheme = "whiteTheme";
                     $("#darkthemebtn").attr("class","moon icon");
@@ -3693,6 +3623,7 @@
                     //Ctrl + A
                     event.preventDefault();
                     $(".fileObject").addClass("selected");
+                    updateSelectedObjectsCount();
                 }else if (event.which == 78 && shiftHold == true){
                     //Shift + N, Open new file manager window with current path
                     event.preventDefault();
@@ -4644,9 +4575,9 @@
 
         function toggleSearch(){
             //Start search mode
-            $(".searchbar").slideDown("fast", function(){
-                initWindowSizes(true);
-            });
+            $(".searchbar").show()
+            initWindowSizes(true);
+            
             $("#searhbtn").addClass("disabled");
 
             //Force videmode to list
@@ -4674,9 +4605,8 @@
         }
 
         function hideSearchBar(skipFilelistRefresh = false){
-            $(".searchbar").slideUp("fast", function(){
-                initWindowSizes(true);
-            });
+            $(".searchbar").hide();
+            initWindowSizes(true);
             $("#searchInput").val("");
             $("#searhbtn").removeClass("disabled");
             $(".videmode.button").each(function(){
@@ -4959,7 +4889,7 @@
         });
 
         function hideAllPopupWindows(){
-            $(".popup").fadeOut(100);
+            $(".popup:visible").transition('slide left out');
             $(".popupWrapper").fadeOut(100);
             $('body').css("overflow","");
             if($("#shareFile").is(":visible")){
@@ -5025,8 +4955,9 @@
             if (uploadPendingList.length > 0 || uploadingFileCount > 0){
                 //There are pending upload item or uploading items
                 //ask the user to confirm exit
+                hideAllPopupWindows();
                 showPopupWrapper();
-                $("#confirmExit").show();
+                $("#confirmExit").transition("slide left in");
                 return
             }
             //Exit window

+ 3 - 0
web/SystemAO/locale/file_explorer.json

@@ -51,6 +51,9 @@
                 "view/details/shared": " 已分享",
                 "view/details/size": " 大小",
 
+                "tooltip/filecount":" 個項目",
+                "tooltip/selectedcount":" 個已選",
+
 
                 "sidebar/vroot/user": "使用者",
                 "sidebar/vroot/fsh": "虛擬儲存裝置",