joplin-plugin-explorer 1.1.4 → 1.2.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.
@@ -1,18 +1,18 @@
1
- {
2
- "manifest_version": 1,
3
- "id": "com.github.joplin-explorer",
4
- "app_min_version": "2.6.0",
5
- "version": "1.1.4",
6
- "name": "Joplin Explorer",
7
- "description": "A unified sidebar that displays notebooks and notes together in a single tree view",
8
- "author": "lim0513",
9
- "homepage_url": "https://github.com/lim0513/joplin-explorer",
10
- "repository_url": "https://github.com/lim0513/joplin-explorer",
11
- "keywords": ["sidebar", "explorer", "tree-view", "notebooks", "notes"],
12
- "categories": ["appearance", "productivity"],
13
- "screenshots": [
14
- {"src": "screenshots/tree-view.png", "label": "Unified tree view of notebooks and notes"},
15
- {"src": "screenshots/search.png", "label": "Full-text search with keyword highlighting"},
16
- {"src": "screenshots/context-menu.png", "label": "Right-click context menu"}
17
- ]
18
- }
1
+ {
2
+ "manifest_version": 1,
3
+ "id": "com.github.joplin-explorer",
4
+ "app_min_version": "2.6.0",
5
+ "version": "1.2.0",
6
+ "name": "Joplin Explorer",
7
+ "description": "A unified sidebar that displays notebooks and notes together in a single tree view",
8
+ "author": "lim0513",
9
+ "homepage_url": "https://github.com/lim0513/joplin-explorer",
10
+ "repository_url": "https://github.com/lim0513/joplin-explorer",
11
+ "keywords": ["sidebar", "explorer", "tree-view", "notebooks", "notes"],
12
+ "categories": ["appearance", "productivity"],
13
+ "screenshots": [
14
+ {"src": "screenshots/tree-view.png", "label": "Unified tree view of notebooks and notes"},
15
+ {"src": "screenshots/search.png", "label": "Full-text search with keyword highlighting"},
16
+ {"src": "screenshots/context-menu.png", "label": "Right-click context menu"}
17
+ ]
18
+ }
Binary file
@@ -254,24 +254,110 @@ html, body {
254
254
  margin: 4px 0;
255
255
  }
256
256
 
257
+ /* Pinned section */
258
+ .pinned-section-header {
259
+ display: flex;
260
+ align-items: center;
261
+ padding: 3px 8px 3px 0;
262
+ gap: 5px;
263
+ margin: 1px 4px;
264
+ min-height: 24px;
265
+ border-radius: 3px;
266
+ cursor: pointer;
267
+ user-select: none;
268
+ color: var(--joplin-color-faded, #888);
269
+ font-weight: 700;
270
+ }
271
+
272
+ .pinned-section-header:hover {
273
+ background: var(--joplin-background-color-hover3, rgba(100, 100, 100, 0.12));
274
+ }
275
+
276
+ .pinned-section-body {
277
+ border-bottom: 1px solid var(--joplin-divider-color, #ddd);
278
+ margin-bottom: 2px;
279
+ }
280
+
281
+ .pinned-section-body.collapsed {
282
+ display: none;
283
+ }
284
+
285
+ .pinned-item {
286
+ padding-left: 18px !important;
287
+ }
288
+
257
289
  /* Drag & Drop */
258
290
  .tree-item.dragging {
259
- opacity: 0.4;
291
+ opacity: 0.35;
292
+ filter: grayscale(30%);
260
293
  }
261
294
 
262
295
  .tree-item.drop-target {
263
- background: var(--joplin-selected-color, rgba(74, 156, 245, 0.25));
296
+ background: var(--joplin-selected-color, rgba(74, 156, 245, 0.28));
264
297
  outline: 2px solid var(--joplin-color2, #4a9cf5);
265
298
  outline-offset: -2px;
266
- border-radius: 3px;
299
+ border-radius: 4px;
300
+ box-shadow: 0 0 0 2px rgba(74, 156, 245, 0.15);
267
301
  }
268
302
 
269
- .tree-item.drop-above {
270
- box-shadow: 0 -2px 0 0 var(--joplin-color2, #4a9cf5);
303
+ /* Horizontal insertion bar (above/below) — position:relative only when active */
304
+ .tree-item.drop-above,
305
+ .tree-item.drop-below {
306
+ position: relative;
271
307
  }
272
308
 
273
- .tree-item.drop-below {
274
- box-shadow: 0 2px 0 0 var(--joplin-color2, #4a9cf5);
309
+ .tree-item.drop-above::before,
310
+ .tree-item.drop-below::before {
311
+ content: '';
312
+ position: absolute;
313
+ left: 4px;
314
+ right: 4px;
315
+ height: 3px;
316
+ background: var(--joplin-color2, #4a9cf5);
317
+ border-radius: 2px;
318
+ box-shadow: 0 0 4px rgba(74, 156, 245, 0.6);
319
+ pointer-events: none;
320
+ z-index: 5;
321
+ }
322
+
323
+ .tree-item.drop-above::before {
324
+ top: -2px;
325
+ }
326
+
327
+ .tree-item.drop-below::before {
328
+ bottom: -2px;
329
+ }
330
+
331
+ /* Dropping into empty area -> create new notebook */
332
+ #tree-container.drop-empty {
333
+ box-shadow: inset 0 0 0 2px var(--joplin-color2, #4a9cf5);
334
+ background: rgba(74, 156, 245, 0.06);
335
+ }
336
+
337
+ /* Floating hint: position:fixed keeps it out of layout flow so the tree
338
+ never shifts while dragging (which would otherwise cause oscillation). */
339
+ #empty-drop-hint {
340
+ display: none;
341
+ position: fixed;
342
+ left: 50%;
343
+ top: 50%;
344
+ transform: translate(-50%, -50%);
345
+ padding: 12px 20px;
346
+ border: 2px dashed var(--joplin-color2, #4a9cf5);
347
+ border-radius: 8px;
348
+ text-align: center;
349
+ font-size: 13px;
350
+ font-weight: 600;
351
+ color: var(--joplin-color2, #4a9cf5);
352
+ background: var(--joplin-background-color, #fff);
353
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
354
+ pointer-events: none;
355
+ z-index: 10000;
356
+ white-space: nowrap;
357
+ }
358
+
359
+ #tree-container.drop-empty ~ #empty-drop-hint {
360
+ display: block;
275
361
  }
276
362
 
277
363
  #search-results {
@@ -307,11 +393,16 @@ html, body {
307
393
  padding: 8px 10px;
308
394
  gap: 8px;
309
395
  min-height: auto;
396
+ margin: 0; /* override .tree-item margin for note items in search results */
397
+ border-radius: 0;
310
398
  }
311
399
 
312
400
  .search-result-item .icon {
313
- margin-top: 2px;
314
401
  flex-shrink: 0;
402
+ font-size: 12px;
403
+ width: 18px;
404
+ text-align: center;
405
+ line-height: 16.8px; /* match .search-result-title 12px * 1.4 */
315
406
  }
316
407
 
317
408
  .search-result-content {
@@ -347,6 +438,83 @@ html, body {
347
438
  word-break: break-all;
348
439
  }
349
440
 
441
+ /* Search section headers */
442
+ .search-section-header {
443
+ padding: 6px 10px;
444
+ font-size: 11px;
445
+ font-weight: 700;
446
+ color: var(--joplin-color-faded, #888);
447
+ background: var(--joplin-background-color3, rgba(100, 100, 100, 0.06));
448
+ border-bottom: 1px solid var(--joplin-divider-color, #eee);
449
+ text-transform: uppercase;
450
+ letter-spacing: 0.5px;
451
+ cursor: pointer;
452
+ user-select: none;
453
+ }
454
+
455
+ .search-section-header:hover {
456
+ background: var(--joplin-background-color-hover3, rgba(100, 100, 100, 0.12));
457
+ }
458
+
459
+ .section-toggle {
460
+ display: inline-block;
461
+ font-size: 9px;
462
+ width: 12px;
463
+ text-align: center;
464
+ transition: transform 0.15s;
465
+ }
466
+
467
+ .search-section-body.collapsed {
468
+ display: none;
469
+ }
470
+
471
+ /* Tag items in search results */
472
+ .search-tag-item {
473
+ cursor: pointer;
474
+ }
475
+
476
+ .search-tag-item:hover {
477
+ background: var(--joplin-background-color-hover3, rgba(100, 100, 100, 0.1));
478
+ }
479
+
480
+ .tag-expand-arrow {
481
+ flex-shrink: 0;
482
+ font-size: 9px;
483
+ color: var(--joplin-color-faded, #888);
484
+ transition: transform 0.15s;
485
+ margin-right: 4px;
486
+ }
487
+
488
+ .tag-expand-arrow.expanded {
489
+ transform: rotate(90deg);
490
+ }
491
+
492
+ .tag-notes-container {
493
+ padding-left: 16px;
494
+ border-left: 2px solid var(--joplin-divider-color, #eee);
495
+ margin-left: 18px;
496
+ }
497
+
498
+ /* Folder items in search results */
499
+ .search-folder-item {
500
+ cursor: pointer;
501
+ }
502
+
503
+ .search-folder-item:hover {
504
+ background: var(--joplin-background-color-hover3, rgba(100, 100, 100, 0.1));
505
+ }
506
+
507
+ /* Flash highlight when locating a folder from search */
508
+ @keyframes locate-pulse {
509
+ 0% { background: rgba(74, 156, 245, 0.5); }
510
+ 100% { background: transparent; }
511
+ }
512
+
513
+ .tree-item.locate-flash {
514
+ animation: locate-pulse 1.5s ease-out;
515
+ border-radius: 4px;
516
+ }
517
+
350
518
  /* Inline input dialog */
351
519
  .inline-input-overlay {
352
520
  position: fixed;