vomebook commited on
Commit
45cb842
Β·
1 Parent(s): eaf2ff2

Upload 3 files

Browse files
Files changed (3) hide show
  1. static/app.js +9 -0
  2. static/index.html +9 -0
  3. static/style.css +47 -0
static/app.js CHANGED
@@ -86,6 +86,7 @@ const STATE = {
86
  isDark: true,
87
  isLoading: false,
88
  hasMore: false,
 
89
  browserPath: "",
90
  repoList: [],
91
  extensionList: [],
@@ -147,6 +148,7 @@ function cacheDOM() {
147
  DOM.extSelectAll = $("#ext-select-all");
148
  DOM.extDeselectAll = $("#ext-deselect-all");
149
  DOM.sidebarExpandBtn = $("#sidebar-expand-btn");
 
150
  }
151
 
152
  /* ═══════════════════════════════════════════════════════════
@@ -212,6 +214,7 @@ const API = {
212
  query.set("folders", STATE.filterFolders.join(","));
213
  if (STATE.filterMinSize !== null) query.set("min_size", STATE.filterMinSize);
214
  if (STATE.filterMaxSize !== null) query.set("max_size", STATE.filterMaxSize);
 
215
  const resp = await fetch(`${base}?${query.toString()}`);
216
  if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
217
  return resp.json();
@@ -876,6 +879,12 @@ async function init() {
876
  DOM.themeBtn.addEventListener("click", toggleTheme);
877
  DOM.mobileToggleBtn.addEventListener("click", toggleMobile);
878
  DOM.clearFiltersBtn.addEventListener("click", clearAllFilters);
 
 
 
 
 
 
879
  DOM.sortSelect.addEventListener("change", () => {
880
  if (DOM.sortSelect.value === "relevance") { STATE.page = 1; STATE.results = []; doSearch(); }
881
  else if (DOM.sortSelect.value === "name") { STATE.results.sort((a, b) => (a.File || "").localeCompare(b.File || "", "zh")); renderResults(); }
 
86
  isDark: true,
87
  isLoading: false,
88
  hasMore: false,
89
+ searchFolders: true,
90
  browserPath: "",
91
  repoList: [],
92
  extensionList: [],
 
148
  DOM.extSelectAll = $("#ext-select-all");
149
  DOM.extDeselectAll = $("#ext-deselect-all");
150
  DOM.sidebarExpandBtn = $("#sidebar-expand-btn");
151
+ DOM.searchFoldersToggle = $("#search-folders-toggle");
152
  }
153
 
154
  /* ═══════════════════════════════════════════════════════════
 
214
  query.set("folders", STATE.filterFolders.join(","));
215
  if (STATE.filterMinSize !== null) query.set("min_size", STATE.filterMinSize);
216
  if (STATE.filterMaxSize !== null) query.set("max_size", STATE.filterMaxSize);
217
+ query.set("search_folders", STATE.searchFolders ? "true" : "false");
218
  const resp = await fetch(`${base}?${query.toString()}`);
219
  if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
220
  return resp.json();
 
879
  DOM.themeBtn.addEventListener("click", toggleTheme);
880
  DOM.mobileToggleBtn.addEventListener("click", toggleMobile);
881
  DOM.clearFiltersBtn.addEventListener("click", clearAllFilters);
882
+ DOM.searchFoldersToggle.addEventListener("change", () => {
883
+ STATE.searchFolders = DOM.searchFoldersToggle.checked;
884
+ STATE.page = 1;
885
+ STATE.results = [];
886
+ doSearch();
887
+ });
888
  DOM.sortSelect.addEventListener("change", () => {
889
  if (DOM.sortSelect.value === "relevance") { STATE.page = 1; STATE.results = []; doSearch(); }
890
  else if (DOM.sortSelect.value === "name") { STATE.results.sort((a, b) => (a.File || "").localeCompare(b.File || "", "zh")); renderResults(); }
static/index.html CHANGED
@@ -151,6 +151,15 @@
151
  <button id="close-filters-btn" class="icon-btn-sm" aria-label="关闭过滀">&times;</button>
152
  </div>
153
  <div class="sidebar-content">
 
 
 
 
 
 
 
 
 
154
  <!-- Repo Filter -->
155
  <div id="filter-repo-section" class="filter-section">
156
  <div class="filter-section-title">仓库过滀</div>
 
151
  <button id="close-filters-btn" class="icon-btn-sm" aria-label="关闭过滀">&times;</button>
152
  </div>
153
  <div class="sidebar-content">
154
+ <!-- ζœη΄’ζ–‡δ»Άε€ΉεεΌ€ε…³ -->
155
+ <div class="filter-section" id="search-folders-section">
156
+ <label class="toggle-row">
157
+ <span class="toggle-label">ζœη΄’ζ–‡δ»Άε€Ήε</span>
158
+ <input type="checkbox" id="search-folders-toggle" checked>
159
+ <span class="toggle-switch"></span>
160
+ </label>
161
+ </div>
162
+
163
  <!-- Repo Filter -->
164
  <div id="filter-repo-section" class="filter-section">
165
  <div class="filter-section-title">仓库过滀</div>
static/style.css CHANGED
@@ -1232,4 +1232,51 @@ body.mobile .result-actions {
1232
  overflow: hidden;
1233
  text-overflow: ellipsis;
1234
  white-space: nowrap;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1235
  }
 
1232
  overflow: hidden;
1233
  text-overflow: ellipsis;
1234
  white-space: nowrap;
1235
+ }
1236
+
1237
+ /* ── Toggle Switch ──────────────────────────────────── */
1238
+ .toggle-row {
1239
+ display: flex;
1240
+ align-items: center;
1241
+ justify-content: space-between;
1242
+ cursor: pointer;
1243
+ }
1244
+
1245
+ .toggle-label {
1246
+ font-size: 13px;
1247
+ color: var(--on-surface);
1248
+ }
1249
+
1250
+ .toggle-row input[type="checkbox"] {
1251
+ display: none;
1252
+ }
1253
+
1254
+ .toggle-switch {
1255
+ position: relative;
1256
+ width: 40px;
1257
+ height: 22px;
1258
+ background: var(--outline-variant);
1259
+ border-radius: 11px;
1260
+ transition: background var(--transition);
1261
+ flex-shrink: 0;
1262
+ }
1263
+
1264
+ .toggle-switch::after {
1265
+ content: "";
1266
+ position: absolute;
1267
+ top: 2px;
1268
+ left: 2px;
1269
+ width: 18px;
1270
+ height: 18px;
1271
+ background: var(--surface);
1272
+ border-radius: 50%;
1273
+ transition: transform var(--transition);
1274
+ }
1275
+
1276
+ .toggle-row input:checked + .toggle-switch {
1277
+ background: var(--primary);
1278
+ }
1279
+
1280
+ .toggle-row input:checked + .toggle-switch::after {
1281
+ transform: translateX(18px);
1282
  }