@jupyterlab/filebrowser 4.3.0-alpha.1 → 4.3.0-alpha.2

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/lib/browser.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Contents } from '@jupyterlab/services';
2
2
  import { ITranslator } from '@jupyterlab/translation';
3
- import { SidePanel } from '@jupyterlab/ui-components';
3
+ import { SidePanel, Toolbar } from '@jupyterlab/ui-components';
4
4
  import { Panel } from '@lumino/widgets';
5
5
  import { BreadCrumbs } from './crumbs';
6
6
  import { DirListing } from './listing';
@@ -53,6 +53,11 @@ export declare class FileBrowser extends SidePanel {
53
53
  */
54
54
  get showFileCheckboxes(): boolean;
55
55
  set showFileCheckboxes(value: boolean);
56
+ /**
57
+ * Whether to show a text box to filter files by name.
58
+ */
59
+ get showFileFilter(): boolean;
60
+ set showFileFilter(value: boolean);
56
61
  /**
57
62
  * Whether to sort notebooks above other files
58
63
  */
@@ -167,17 +172,20 @@ export declare class FileBrowser extends SidePanel {
167
172
  * @returns the full drive path
168
173
  */
169
174
  private _toDrivePath;
175
+ protected filterToolbar: Toolbar;
170
176
  protected listing: DirListing;
171
177
  protected crumbs: BreadCrumbs;
172
178
  protected mainPanel: Panel;
173
- private _manager;
174
179
  private _directoryPending;
175
180
  private _filePending;
181
+ private _fileFilterRef;
182
+ private _manager;
176
183
  private _navigateToCurrentDirectory;
177
- private _showLastModifiedColumn;
184
+ private _showFileCheckboxes;
185
+ private _showFileFilter;
178
186
  private _showFileSizeColumn;
179
187
  private _showHiddenFiles;
180
- private _showFileCheckboxes;
188
+ private _showLastModifiedColumn;
181
189
  private _sortNotebooksFirst;
182
190
  }
183
191
  /**
package/lib/browser.js CHANGED
@@ -4,8 +4,9 @@ import { showErrorMessage } from '@jupyterlab/apputils';
4
4
  import { PathExt } from '@jupyterlab/coreutils';
5
5
  import { ServerConnection } from '@jupyterlab/services';
6
6
  import { nullTranslator } from '@jupyterlab/translation';
7
- import { SidePanel } from '@jupyterlab/ui-components';
7
+ import { FilenameSearcher, SidePanel, Toolbar } from '@jupyterlab/ui-components';
8
8
  import { Panel } from '@lumino/widgets';
9
+ import { createRef } from 'react';
9
10
  import { BreadCrumbs } from './crumbs';
10
11
  import { DirListing } from './listing';
11
12
  /**
@@ -24,10 +25,18 @@ const CRUMBS_CLASS = 'jp-FileBrowser-crumbs';
24
25
  * The class name added to the filebrowser toolbar node.
25
26
  */
26
27
  const TOOLBAR_CLASS = 'jp-FileBrowser-toolbar';
28
+ /**
29
+ * The class name added to the filebrowser filter toolbar node.
30
+ */
31
+ const FILTER_TOOLBAR_CLASS = 'jp-FileBrowser-filterToolbar';
27
32
  /**
28
33
  * The class name added to the filebrowser listing node.
29
34
  */
30
35
  const LISTING_CLASS = 'jp-FileBrowser-listing';
36
+ /**
37
+ * The class name added to the filebrowser filterbox node.
38
+ */
39
+ const FILTERBOX_CLASS = 'jp-FileBrowser-filterBox';
31
40
  /**
32
41
  * A widget which hosts a file browser.
33
42
  *
@@ -46,10 +55,12 @@ export class FileBrowser extends SidePanel {
46
55
  super({ content: new Panel(), translator: options.translator });
47
56
  this._directoryPending = null;
48
57
  this._filePending = null;
49
- this._showLastModifiedColumn = true;
58
+ this._fileFilterRef = createRef();
59
+ this._showFileCheckboxes = false;
60
+ this._showFileFilter = false;
50
61
  this._showFileSizeColumn = false;
51
62
  this._showHiddenFiles = false;
52
- this._showFileCheckboxes = false;
63
+ this._showLastModifiedColumn = true;
53
64
  this._sortNotebooksFirst = false;
54
65
  this.addClass(FILE_BROWSER_CLASS);
55
66
  this.toolbar.addClass(TOOLBAR_CLASS);
@@ -66,6 +77,24 @@ export class FileBrowser extends SidePanel {
66
77
  this.mainPanel.title.label = this._trans.__('File Browser');
67
78
  this.crumbs = new BreadCrumbs({ model, translator });
68
79
  this.crumbs.addClass(CRUMBS_CLASS);
80
+ // The filter toolbar appears immediately below the breadcrumbs and above the directory listing.
81
+ const searcher = FilenameSearcher({
82
+ updateFilter: (filterFn, query) => {
83
+ this.model.setFilter(value => {
84
+ return filterFn(value.name.toLowerCase());
85
+ });
86
+ },
87
+ useFuzzyFilter: true,
88
+ placeholder: this._trans.__('Filter files by name'),
89
+ forceRefresh: false,
90
+ showIcon: false,
91
+ inputRef: this._fileFilterRef
92
+ });
93
+ searcher.addClass(FILTERBOX_CLASS);
94
+ this.filterToolbar = new Toolbar();
95
+ this.filterToolbar.addClass(FILTER_TOOLBAR_CLASS);
96
+ this.filterToolbar.addItem('fileNameSearcher', searcher);
97
+ this.filterToolbar.setHidden(!this.showFileFilter);
69
98
  this.listing = this.createDirListing({
70
99
  model,
71
100
  renderer,
@@ -73,6 +102,7 @@ export class FileBrowser extends SidePanel {
73
102
  });
74
103
  this.listing.addClass(LISTING_CLASS);
75
104
  this.mainPanel.addWidget(this.crumbs);
105
+ this.mainPanel.addWidget(this.filterToolbar);
76
106
  this.mainPanel.addWidget(this.listing);
77
107
  this.addWidget(this.mainPanel);
78
108
  if (options.restore !== false) {
@@ -152,6 +182,34 @@ export class FileBrowser extends SidePanel {
152
182
  console.warn('Listing does not support toggling column visibility');
153
183
  }
154
184
  }
185
+ /**
186
+ * Whether to show a text box to filter files by name.
187
+ */
188
+ get showFileFilter() {
189
+ return this._showFileFilter;
190
+ }
191
+ set showFileFilter(value) {
192
+ var _a;
193
+ // If the old value was true and the new value is false, clear the filter
194
+ const oldValue = this.showFileFilter;
195
+ if (oldValue && !value) {
196
+ // Clear the search box input
197
+ if (this._fileFilterRef.current) {
198
+ this._fileFilterRef.current.value = '';
199
+ }
200
+ // Set a filter that doesn't exclude anything.
201
+ this.model.setFilter(value => {
202
+ return {};
203
+ });
204
+ this.model.refresh().catch(console.warn);
205
+ }
206
+ this._showFileFilter = value;
207
+ // Update widget visibility
208
+ this.filterToolbar.setHidden(!this.showFileFilter);
209
+ if (this.showFileFilter) {
210
+ (_a = this._fileFilterRef.current) === null || _a === void 0 ? void 0 : _a.focus();
211
+ }
212
+ }
155
213
  /**
156
214
  * Whether to sort notebooks above other files
157
215
  */
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupyterlab/filebrowser",
3
- "version": "4.3.0-alpha.1",
3
+ "version": "4.3.0-alpha.2",
4
4
  "description": "JupyterLab - FileBrowser Widget",
5
5
  "homepage": "https://github.com/jupyterlab/jupyterlab",
6
6
  "bugs": {
@@ -41,15 +41,15 @@
41
41
  "watch": "tsc -b --watch"
42
42
  },
43
43
  "dependencies": {
44
- "@jupyterlab/apputils": "^4.4.0-alpha.1",
45
- "@jupyterlab/coreutils": "^6.3.0-alpha.1",
46
- "@jupyterlab/docmanager": "^4.3.0-alpha.1",
47
- "@jupyterlab/docregistry": "^4.3.0-alpha.1",
48
- "@jupyterlab/services": "^7.3.0-alpha.1",
49
- "@jupyterlab/statedb": "^4.3.0-alpha.1",
50
- "@jupyterlab/statusbar": "^4.3.0-alpha.1",
51
- "@jupyterlab/translation": "^4.3.0-alpha.1",
52
- "@jupyterlab/ui-components": "^4.3.0-alpha.1",
44
+ "@jupyterlab/apputils": "^4.4.0-alpha.2",
45
+ "@jupyterlab/coreutils": "^6.3.0-alpha.2",
46
+ "@jupyterlab/docmanager": "^4.3.0-alpha.2",
47
+ "@jupyterlab/docregistry": "^4.3.0-alpha.2",
48
+ "@jupyterlab/services": "^7.3.0-alpha.2",
49
+ "@jupyterlab/statedb": "^4.3.0-alpha.2",
50
+ "@jupyterlab/statusbar": "^4.3.0-alpha.2",
51
+ "@jupyterlab/translation": "^4.3.0-alpha.2",
52
+ "@jupyterlab/ui-components": "^4.3.0-alpha.2",
53
53
  "@lumino/algorithm": "^2.0.1",
54
54
  "@lumino/coreutils": "^2.1.2",
55
55
  "@lumino/disposable": "^2.1.2",
@@ -63,7 +63,7 @@
63
63
  "react": "^18.2.0"
64
64
  },
65
65
  "devDependencies": {
66
- "@jupyterlab/testing": "^4.3.0-alpha.1",
66
+ "@jupyterlab/testing": "^4.3.0-alpha.2",
67
67
  "@types/jest": "^29.2.0",
68
68
  "jest": "^29.2.0",
69
69
  "rimraf": "~5.0.5",
package/src/browser.ts CHANGED
@@ -6,8 +6,14 @@ import { PathExt } from '@jupyterlab/coreutils';
6
6
  import { IDocumentManager } from '@jupyterlab/docmanager';
7
7
  import { Contents, ServerConnection } from '@jupyterlab/services';
8
8
  import { ITranslator, nullTranslator } from '@jupyterlab/translation';
9
- import { SidePanel } from '@jupyterlab/ui-components';
9
+ import {
10
+ FilenameSearcher,
11
+ IScore,
12
+ SidePanel,
13
+ Toolbar
14
+ } from '@jupyterlab/ui-components';
10
15
  import { Panel } from '@lumino/widgets';
16
+ import { createRef } from 'react';
11
17
  import { BreadCrumbs } from './crumbs';
12
18
  import { DirListing } from './listing';
13
19
  import { FilterFileBrowserModel } from './model';
@@ -32,11 +38,21 @@ const CRUMBS_CLASS = 'jp-FileBrowser-crumbs';
32
38
  */
33
39
  const TOOLBAR_CLASS = 'jp-FileBrowser-toolbar';
34
40
 
41
+ /**
42
+ * The class name added to the filebrowser filter toolbar node.
43
+ */
44
+ const FILTER_TOOLBAR_CLASS = 'jp-FileBrowser-filterToolbar';
45
+
35
46
  /**
36
47
  * The class name added to the filebrowser listing node.
37
48
  */
38
49
  const LISTING_CLASS = 'jp-FileBrowser-listing';
39
50
 
51
+ /**
52
+ * The class name added to the filebrowser filterbox node.
53
+ */
54
+ const FILTERBOX_CLASS = 'jp-FileBrowser-filterBox';
55
+
40
56
  /**
41
57
  * A widget which hosts a file browser.
42
58
  *
@@ -76,6 +92,29 @@ export class FileBrowser extends SidePanel {
76
92
  this.crumbs = new BreadCrumbs({ model, translator });
77
93
  this.crumbs.addClass(CRUMBS_CLASS);
78
94
 
95
+ // The filter toolbar appears immediately below the breadcrumbs and above the directory listing.
96
+ const searcher = FilenameSearcher({
97
+ updateFilter: (
98
+ filterFn: (item: string) => Partial<IScore> | null,
99
+ query?: string
100
+ ) => {
101
+ this.model.setFilter(value => {
102
+ return filterFn(value.name.toLowerCase());
103
+ });
104
+ },
105
+ useFuzzyFilter: true,
106
+ placeholder: this._trans.__('Filter files by name'),
107
+ forceRefresh: false,
108
+ showIcon: false,
109
+ inputRef: this._fileFilterRef
110
+ });
111
+ searcher.addClass(FILTERBOX_CLASS);
112
+
113
+ this.filterToolbar = new Toolbar();
114
+ this.filterToolbar.addClass(FILTER_TOOLBAR_CLASS);
115
+ this.filterToolbar.addItem('fileNameSearcher', searcher);
116
+ this.filterToolbar.setHidden(!this.showFileFilter);
117
+
79
118
  this.listing = this.createDirListing({
80
119
  model,
81
120
  renderer,
@@ -84,6 +123,7 @@ export class FileBrowser extends SidePanel {
84
123
  this.listing.addClass(LISTING_CLASS);
85
124
 
86
125
  this.mainPanel.addWidget(this.crumbs);
126
+ this.mainPanel.addWidget(this.filterToolbar);
87
127
  this.mainPanel.addWidget(this.listing);
88
128
 
89
129
  this.addWidget(this.mainPanel);
@@ -180,6 +220,37 @@ export class FileBrowser extends SidePanel {
180
220
  }
181
221
  }
182
222
 
223
+ /**
224
+ * Whether to show a text box to filter files by name.
225
+ */
226
+ get showFileFilter(): boolean {
227
+ return this._showFileFilter;
228
+ }
229
+
230
+ set showFileFilter(value: boolean) {
231
+ // If the old value was true and the new value is false, clear the filter
232
+ const oldValue = this.showFileFilter;
233
+ if (oldValue && !value) {
234
+ // Clear the search box input
235
+ if (this._fileFilterRef.current) {
236
+ this._fileFilterRef.current.value = '';
237
+ }
238
+
239
+ // Set a filter that doesn't exclude anything.
240
+ this.model.setFilter(value => {
241
+ return {};
242
+ });
243
+ this.model.refresh().catch(console.warn);
244
+ }
245
+ this._showFileFilter = value;
246
+
247
+ // Update widget visibility
248
+ this.filterToolbar.setHidden(!this.showFileFilter);
249
+ if (this.showFileFilter) {
250
+ this._fileFilterRef.current?.focus();
251
+ }
252
+ }
253
+
183
254
  /**
184
255
  * Whether to sort notebooks above other files
185
256
  */
@@ -426,18 +497,21 @@ export class FileBrowser extends SidePanel {
426
497
  }
427
498
  }
428
499
 
500
+ protected filterToolbar: Toolbar;
429
501
  protected listing: DirListing;
430
502
  protected crumbs: BreadCrumbs;
431
503
  protected mainPanel: Panel;
432
504
 
433
- private _manager: IDocumentManager;
434
505
  private _directoryPending: Promise<Contents.IModel> | null = null;
435
506
  private _filePending: Promise<Contents.IModel> | null = null;
507
+ private _fileFilterRef = createRef<HTMLInputElement>();
508
+ private _manager: IDocumentManager;
436
509
  private _navigateToCurrentDirectory: boolean;
437
- private _showLastModifiedColumn: boolean = true;
510
+ private _showFileCheckboxes: boolean = false;
511
+ private _showFileFilter: boolean = false;
438
512
  private _showFileSizeColumn: boolean = false;
439
513
  private _showHiddenFiles: boolean = false;
440
- private _showFileCheckboxes: boolean = false;
514
+ private _showLastModifiedColumn: boolean = true;
441
515
  private _sortNotebooksFirst: boolean = false;
442
516
  }
443
517
 
package/style/base.css CHANGED
@@ -29,6 +29,20 @@
29
29
  row-gap: 12px;
30
30
  }
31
31
 
32
+ .jp-FileBrowser-filterToolbar {
33
+ display: flex;
34
+ flex: 0 0 auto;
35
+ flex-direction: column;
36
+ }
37
+
38
+ .jp-FileBrowser-filterToolbar.jp-Toolbar {
39
+ border-bottom: none;
40
+ height: auto;
41
+ margin: 0 12px 6px;
42
+ box-shadow: none;
43
+ padding: 0;
44
+ }
45
+
32
46
  .jp-FileBrowser-Panel {
33
47
  flex: 1 1 auto;
34
48
  display: flex;
@@ -64,7 +78,8 @@
64
78
  | Buttons
65
79
  |----------------------------------------------------------------------------*/
66
80
 
67
- .jp-FileBrowser-toolbar > .jp-Toolbar-item {
81
+ .jp-FileBrowser-toolbar > .jp-Toolbar-item,
82
+ .jp-FileBrowser-filterToolbar > .jp-Toolbar-item {
68
83
  flex: 0 0 auto;
69
84
  padding-left: 0;
70
85
  align-items: center;
@@ -72,7 +87,7 @@
72
87
  }
73
88
 
74
89
  .jp-FileBrowser-toolbar > .jp-Toolbar-item .jp-ToolbarButtonComponent {
75
- width: 40px;
90
+ width: 28px;
76
91
  }
77
92
 
78
93
  /*-----------------------------------------------------------------------------
@@ -99,7 +114,11 @@
99
114
  display: none;
100
115
  }
101
116
 
102
- .jp-FileBrowser-toolbar > .jp-FileBrowser-filterBox {
117
+ .jp-FileBrowser-filterToolbar > .jp-FileBrowser-filterBox {
118
+ width: 100%;
119
+ }
120
+
121
+ .jp-FileBrowser-filterBox > .jp-FilterBox {
103
122
  width: 100%;
104
123
  }
105
124