joplin-plugin-explorer 1.1.4 → 1.2.1

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,13 @@
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.1",
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
+ }
Binary file
@@ -254,26 +254,118 @@ 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
+
289
+ /* Empty drop zone — sticky at bottom of scroll viewport */
290
+ .drop-zone-empty {
291
+ position: sticky;
292
+ bottom: 0;
293
+ height: 32px;
294
+ flex-shrink: 0;
295
+ opacity: 0;
296
+ pointer-events: none;
297
+ transition: opacity 0.15s;
298
+ }
299
+
300
+ /* Only show during drag (activated by JS class on tree-container) */
301
+ #tree-container.dragging-active .drop-zone-empty {
302
+ opacity: 1;
303
+ pointer-events: auto;
304
+ border: 2px dashed var(--joplin-color2, #4a9cf5);
305
+ border-radius: 6px;
306
+ margin: 4px 8px;
307
+ text-align: center;
308
+ line-height: 28px;
309
+ font-size: 11px;
310
+ color: var(--joplin-color2, #4a9cf5);
311
+ background: rgba(74, 156, 245, 0.08);
312
+ }
313
+
314
+ /* Pinned section accepts drops during drag */
315
+ #tree-container.dragging-active .pinned-section-header {
316
+ border: 2px dashed var(--joplin-color2, #4a9cf5);
317
+ border-radius: 4px;
318
+ }
319
+
257
320
  /* Drag & Drop */
258
321
  .tree-item.dragging {
259
- opacity: 0.4;
322
+ opacity: 0.35;
323
+ filter: grayscale(30%);
260
324
  }
261
325
 
262
326
  .tree-item.drop-target {
263
- background: var(--joplin-selected-color, rgba(74, 156, 245, 0.25));
327
+ background: var(--joplin-selected-color, rgba(74, 156, 245, 0.28));
264
328
  outline: 2px solid var(--joplin-color2, #4a9cf5);
265
329
  outline-offset: -2px;
266
- border-radius: 3px;
330
+ border-radius: 4px;
331
+ box-shadow: 0 0 0 2px rgba(74, 156, 245, 0.15);
267
332
  }
268
333
 
269
- .tree-item.drop-above {
270
- box-shadow: 0 -2px 0 0 var(--joplin-color2, #4a9cf5);
334
+ /* Horizontal insertion bar (above/below) — position:relative only when active */
335
+ .tree-item.drop-above,
336
+ .tree-item.drop-below {
337
+ position: relative;
271
338
  }
272
339
 
273
- .tree-item.drop-below {
274
- box-shadow: 0 2px 0 0 var(--joplin-color2, #4a9cf5);
340
+ .tree-item.drop-above::before,
341
+ .tree-item.drop-below::before {
342
+ content: '';
343
+ position: absolute;
344
+ left: 4px;
345
+ right: 4px;
346
+ height: 3px;
347
+ background: var(--joplin-color2, #4a9cf5);
348
+ border-radius: 2px;
349
+ box-shadow: 0 0 4px rgba(74, 156, 245, 0.6);
350
+ pointer-events: none;
351
+ z-index: 5;
275
352
  }
276
353
 
354
+ .tree-item.drop-above::before {
355
+ top: -2px;
356
+ }
357
+
358
+ .tree-item.drop-below::before {
359
+ bottom: -2px;
360
+ }
361
+
362
+ /* Dropping into empty area -> create new notebook */
363
+ #tree-container.drop-empty {
364
+ box-shadow: inset 0 0 0 2px var(--joplin-color2, #4a9cf5);
365
+ background: rgba(74, 156, 245, 0.06);
366
+ }
367
+
368
+
277
369
  #search-results {
278
370
  flex: 1;
279
371
  overflow-y: scroll;
@@ -307,11 +399,16 @@ html, body {
307
399
  padding: 8px 10px;
308
400
  gap: 8px;
309
401
  min-height: auto;
402
+ margin: 0; /* override .tree-item margin for note items in search results */
403
+ border-radius: 0;
310
404
  }
311
405
 
312
406
  .search-result-item .icon {
313
- margin-top: 2px;
314
407
  flex-shrink: 0;
408
+ font-size: 12px;
409
+ width: 18px;
410
+ text-align: center;
411
+ line-height: 16.8px; /* match .search-result-title 12px * 1.4 */
315
412
  }
316
413
 
317
414
  .search-result-content {
@@ -347,6 +444,83 @@ html, body {
347
444
  word-break: break-all;
348
445
  }
349
446
 
447
+ /* Search section headers */
448
+ .search-section-header {
449
+ padding: 6px 10px;
450
+ font-size: 11px;
451
+ font-weight: 700;
452
+ color: var(--joplin-color-faded, #888);
453
+ background: var(--joplin-background-color3, rgba(100, 100, 100, 0.06));
454
+ border-bottom: 1px solid var(--joplin-divider-color, #eee);
455
+ text-transform: uppercase;
456
+ letter-spacing: 0.5px;
457
+ cursor: pointer;
458
+ user-select: none;
459
+ }
460
+
461
+ .search-section-header:hover {
462
+ background: var(--joplin-background-color-hover3, rgba(100, 100, 100, 0.12));
463
+ }
464
+
465
+ .section-toggle {
466
+ display: inline-block;
467
+ font-size: 9px;
468
+ width: 12px;
469
+ text-align: center;
470
+ transition: transform 0.15s;
471
+ }
472
+
473
+ .search-section-body.collapsed {
474
+ display: none;
475
+ }
476
+
477
+ /* Tag items in search results */
478
+ .search-tag-item {
479
+ cursor: pointer;
480
+ }
481
+
482
+ .search-tag-item:hover {
483
+ background: var(--joplin-background-color-hover3, rgba(100, 100, 100, 0.1));
484
+ }
485
+
486
+ .tag-expand-arrow {
487
+ flex-shrink: 0;
488
+ font-size: 9px;
489
+ color: var(--joplin-color-faded, #888);
490
+ transition: transform 0.15s;
491
+ margin-right: 4px;
492
+ }
493
+
494
+ .tag-expand-arrow.expanded {
495
+ transform: rotate(90deg);
496
+ }
497
+
498
+ .tag-notes-container {
499
+ padding-left: 16px;
500
+ border-left: 2px solid var(--joplin-divider-color, #eee);
501
+ margin-left: 18px;
502
+ }
503
+
504
+ /* Folder items in search results */
505
+ .search-folder-item {
506
+ cursor: pointer;
507
+ }
508
+
509
+ .search-folder-item:hover {
510
+ background: var(--joplin-background-color-hover3, rgba(100, 100, 100, 0.1));
511
+ }
512
+
513
+ /* Flash highlight when locating a folder from search */
514
+ @keyframes locate-pulse {
515
+ 0% { background: rgba(74, 156, 245, 0.5); }
516
+ 100% { background: transparent; }
517
+ }
518
+
519
+ .tree-item.locate-flash {
520
+ animation: locate-pulse 1.5s ease-out;
521
+ border-radius: 4px;
522
+ }
523
+
350
524
  /* Inline input dialog */
351
525
  .inline-input-overlay {
352
526
  position: fixed;