mbkbucket 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +1 -1
- package/index.js +16 -2
- package/lib/bucket.js +111 -48
- package/lib/s3.js +9 -3
- package/package.json +2 -2
- package/public/{css/bucketadmin.css → bucketadmin.css} +271 -51
- package/public/{js/bucketadmincontent.js → bucketadmin.js} +359 -127
- package/views/bucket.handlebars +2 -2
- package/views/bucketadmincontent.handlebars +44 -58
package/views/bucket.handlebars
CHANGED
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
.logo img {
|
|
75
|
-
width:
|
|
75
|
+
width: 35px
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
.main-content {
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
display: flex;
|
|
126
126
|
align-items: center;
|
|
127
127
|
justify-content: space-between;
|
|
128
|
-
margin-bottom:
|
|
128
|
+
margin-bottom: 1rem;
|
|
129
129
|
padding-bottom: 1rem;
|
|
130
130
|
border-bottom: 2px solid var(--gray-light-color-ml)
|
|
131
131
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{{!-- File Management System - Bucket Dashboard --}}
|
|
2
|
-
<link rel="stylesheet" href="/
|
|
3
|
-
<div id="bucketAppData" data-app-name="{{
|
|
2
|
+
<link rel="stylesheet" href="/mbkbucket/bucketadmin.css?v={{assetVersion}}">
|
|
3
|
+
<div id="bucketAppData" data-app-name="{{APP_NAME}}" hidden></div>
|
|
4
4
|
<!-- File Statistics -->
|
|
5
5
|
<div class="dashboard-card file-stats">
|
|
6
6
|
<div class="card-body">
|
|
@@ -36,32 +36,35 @@
|
|
|
36
36
|
</div>
|
|
37
37
|
{{/if}}
|
|
38
38
|
|
|
39
|
-
<div class="
|
|
39
|
+
<div class="mb-4">
|
|
40
40
|
<!-- Upload Form -->
|
|
41
|
-
<div class="col-lg-
|
|
41
|
+
<div class="col-lg-12">
|
|
42
42
|
<div class="dashboard-card h-100">
|
|
43
|
-
<div class="card-header">
|
|
43
|
+
<div class="card-header upload-card-header" id="uploadToggleBtn">
|
|
44
44
|
<h5 class="card-title">
|
|
45
45
|
<div class="card-icon">
|
|
46
46
|
<i class="fas fa-upload"></i>
|
|
47
47
|
</div>
|
|
48
48
|
Upload File
|
|
49
49
|
</h5>
|
|
50
|
+
<button type="button" class="collapse-btn">
|
|
51
|
+
<i class="fas fa-chevron-down"></i>
|
|
52
|
+
</button>
|
|
50
53
|
</div>
|
|
51
|
-
<div class="card-body">
|
|
54
|
+
<div class="card-body collapsible-content" id="uploadSection">
|
|
52
55
|
<form id="uploadForm" action="/mbkbucket/upload" method="post" enctype="multipart/form-data">
|
|
53
56
|
<input type="hidden" name="prefix" value="{{prefix}}">
|
|
54
57
|
|
|
55
58
|
<div class="mb-3">
|
|
56
59
|
<label for="fileInput" class="form-label">Select Files or drag & drop</label>
|
|
57
|
-
<div id="dropZone" class="
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
<
|
|
61
|
-
<div
|
|
60
|
+
<div id="dropZone" class="upload-drop-zone">
|
|
61
|
+
<div class="drop-zone-content">
|
|
62
|
+
<i class="fas fa-cloud-upload-alt"></i>
|
|
63
|
+
<div class="drop-text">Drop files here or click to browse</div>
|
|
64
|
+
<div class="drop-hint">Supports multiple files</div>
|
|
62
65
|
</div>
|
|
63
66
|
</div>
|
|
64
|
-
<input type="file" class="form-control d-none" id="fileInput" name="files" multiple>
|
|
67
|
+
<input type="file" class="form-control d-none" style="display: none;" id="fileInput" name="files" multiple>
|
|
65
68
|
<div class="form-text">
|
|
66
69
|
<i class="fas fa-info-circle"></i>
|
|
67
70
|
You can drop multiple files. Large files will use chunked upload when available.
|
|
@@ -99,58 +102,39 @@
|
|
|
99
102
|
</div>
|
|
100
103
|
</div>
|
|
101
104
|
</div>
|
|
102
|
-
|
|
103
|
-
<!-- Search Filter -->
|
|
104
|
-
<div class="col-lg-6">
|
|
105
|
-
<div class="dashboard-card h-100">
|
|
106
|
-
<div class="card-header">
|
|
107
|
-
<h5 class="card-title">
|
|
108
|
-
<div class="card-icon">
|
|
109
|
-
<i class="fas fa-search"></i>
|
|
110
|
-
</div>
|
|
111
|
-
Search Files & Folders
|
|
112
|
-
</h5>
|
|
113
|
-
</div>
|
|
114
|
-
<div class="card-body">
|
|
115
|
-
<div class="mb-3">
|
|
116
|
-
<label for="searchInput" class="form-label">Search by Name</label>
|
|
117
|
-
<input type="text" class="form-control form-control-lg" id="searchInput" placeholder="Enter search term..."
|
|
118
|
-
onkeypress="if(event.key==='Enter') performSearch()">
|
|
119
|
-
<div class="form-text">
|
|
120
|
-
<i class="fas fa-info-circle"></i>
|
|
121
|
-
Search across all files and folders by name (case-insensitive)
|
|
122
|
-
</div>
|
|
123
|
-
</div>
|
|
124
|
-
<div class="d-grid gap-2 d-md-flex justify-content-md-end">
|
|
125
|
-
<button type="button" class="btn btn-primary btn-lg" onclick="performSearch()">
|
|
126
|
-
<i class="fas fa-search"></i>
|
|
127
|
-
Search
|
|
128
|
-
</button>
|
|
129
|
-
<button type="button" class="btn btn-outline-secondary btn-lg" onclick="clearSearch()">
|
|
130
|
-
<i class="fas fa-times"></i>
|
|
131
|
-
Clear
|
|
132
|
-
</button>
|
|
133
|
-
</div>
|
|
134
|
-
</div>
|
|
135
|
-
</div>
|
|
136
|
-
</div>
|
|
137
105
|
</div>
|
|
138
106
|
|
|
139
107
|
<!-- File List -->
|
|
140
108
|
<div class="dashboard-card">
|
|
141
|
-
<div class="card-header
|
|
109
|
+
<div class="card-header file-list-header">
|
|
142
110
|
<h5 class="card-title">
|
|
143
111
|
<div>
|
|
144
112
|
<i class="fas fa-folder-open"></i>
|
|
145
113
|
</div>
|
|
146
114
|
<span id="fileListTitle">Files</span>
|
|
147
115
|
</h5>
|
|
148
|
-
|
|
116
|
+
|
|
117
|
+
<!-- Inline Search (moved from separate card) -->
|
|
118
|
+
<div class="search-inline">
|
|
119
|
+
<input type="text" class="form-control form-control-sm" id="searchInput" placeholder="Search files and folders..." aria-label="Search files">
|
|
120
|
+
<button type="button" class="btn btn-sm btn-primary" onclick="performSearch()" aria-label="Search"><i class="fas fa-search"></i></button>
|
|
121
|
+
<button type="button" class="btn btn-sm btn-outline-secondary" onclick="clearSearch()" aria-label="Clear search"><i class="fas fa-times"></i></button>
|
|
122
|
+
</div>
|
|
123
|
+
|
|
124
|
+
<div class="btn-group" role="group" aria-label="Actions">
|
|
125
|
+
<button type="button" class="btn btn-sm btn-success" onclick="createFile()" title="New Text File">
|
|
126
|
+
<i class="fas fa-file-alt"></i> New File
|
|
127
|
+
</button>
|
|
128
|
+
<button type="button" class="btn btn-sm btn-outline-success" onclick="createFolder()" title="New Folder">
|
|
129
|
+
<i class="fas fa-folder-plus"></i> New Folder
|
|
130
|
+
</button>
|
|
131
|
+
</div>
|
|
132
|
+
|
|
149
133
|
<div class="btn-group" role="group" aria-label="View Mode">
|
|
150
|
-
<button type="button" class="btn btn-sm btn-light view-toggle-btn active" id="viewBtnFolder" onclick="changeViewMode('folder')" title="Folder View"
|
|
134
|
+
<button type="button" class="btn btn-sm btn-light view-toggle-btn view-btn-left active" id="viewBtnFolder" onclick="changeViewMode('folder')" title="Folder View">
|
|
151
135
|
<i class="fas fa-folder"></i> Folders
|
|
152
136
|
</button>
|
|
153
|
-
<button type="button" class="btn btn-sm btn-outline-light view-toggle-btn" id="viewBtnFlat" onclick="changeViewMode('flat')" title="Flat List (All Files)"
|
|
137
|
+
<button type="button" class="btn btn-sm btn-outline-light view-toggle-btn view-btn-right" id="viewBtnFlat" onclick="changeViewMode('flat')" title="Flat List (All Files)">
|
|
154
138
|
<i class="fas fa-list-ul"></i> Flat View
|
|
155
139
|
</button>
|
|
156
140
|
</div>
|
|
@@ -165,8 +149,7 @@
|
|
|
165
149
|
</div>
|
|
166
150
|
|
|
167
151
|
<!-- Pagination -->
|
|
168
|
-
<div id="paginationContainer"
|
|
169
|
-
style="display: none; padding: 1rem; border-top: 1px solid var(--gray-light-color-ml); background: var(--light-color-ml);">
|
|
152
|
+
<div id="paginationContainer" class="pagination-container">
|
|
170
153
|
<nav aria-label="File pagination">
|
|
171
154
|
<ul class="pagination" id="paginationList">
|
|
172
155
|
</ul>
|
|
@@ -190,10 +173,10 @@
|
|
|
190
173
|
<div class="modal-body">
|
|
191
174
|
<i class="fas fa-trash-alt fa-3x"></i>
|
|
192
175
|
<h6>Are you sure you want to delete this file?</h6>
|
|
193
|
-
<p
|
|
176
|
+
<p class="modal-body-text-style">
|
|
194
177
|
<strong id="deleteFileName" style="color: var(--dark-color-ml);"></strong>
|
|
195
178
|
</p>
|
|
196
|
-
<p
|
|
179
|
+
<p class="modal-body-text-top">
|
|
197
180
|
<small>This action cannot be undone.</small>
|
|
198
181
|
</p>
|
|
199
182
|
</div>
|
|
@@ -230,10 +213,10 @@
|
|
|
230
213
|
</div>
|
|
231
214
|
</div>
|
|
232
215
|
<div class="modal-body">
|
|
233
|
-
<div class="preview-content" aria-live="polite">
|
|
216
|
+
<div class="preview-content" id="previewContent" aria-live="polite">
|
|
234
217
|
<div class="empty-preview">
|
|
235
218
|
<i class="fas fa-spinner fa-spin"></i>
|
|
236
|
-
<div
|
|
219
|
+
<div class="modal-header-spacing">Loading preview...</div>
|
|
237
220
|
</div>
|
|
238
221
|
</div>
|
|
239
222
|
</div>
|
|
@@ -250,4 +233,7 @@
|
|
|
250
233
|
</div>
|
|
251
234
|
</div>
|
|
252
235
|
|
|
253
|
-
|
|
236
|
+
<!-- Toast Container -->
|
|
237
|
+
<div id="toast-container" class="toast-container"></div>
|
|
238
|
+
|
|
239
|
+
<script src="/mbkbucket/bucketadmin.js?v={{assetVersion}}"></script>
|