@jupyterlab/filebrowser 4.0.0-alpha.19 → 4.0.0-alpha.20

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
@@ -34,9 +34,10 @@ export declare class FileBrowser extends SidePanel {
34
34
  get showLastModifiedColumn(): boolean;
35
35
  set showLastModifiedColumn(value: boolean);
36
36
  /**
37
- * Whether to use fuzzy filtering on file names.
37
+ * Whether to show the file size column
38
38
  */
39
- set useFuzzyFilter(value: boolean);
39
+ get showFileSizeColumn(): boolean;
40
+ set showFileSizeColumn(value: boolean);
40
41
  /**
41
42
  * Whether to show hidden files
42
43
  */
@@ -142,13 +143,12 @@ export declare class FileBrowser extends SidePanel {
142
143
  protected listing: DirListing;
143
144
  protected crumbs: BreadCrumbs;
144
145
  protected mainPanel: Panel;
145
- private _filenameSearcher;
146
146
  private _manager;
147
147
  private _directoryPending;
148
148
  private _filePending;
149
149
  private _navigateToCurrentDirectory;
150
150
  private _showLastModifiedColumn;
151
- private _useFuzzyFilter;
151
+ private _showFileSizeColumn;
152
152
  private _showHiddenFiles;
153
153
  private _showFileCheckboxes;
154
154
  }
package/lib/browser.js CHANGED
@@ -3,7 +3,7 @@
3
3
  import { showErrorMessage } from '@jupyterlab/apputils';
4
4
  import { ServerConnection } from '@jupyterlab/services';
5
5
  import { nullTranslator } from '@jupyterlab/translation';
6
- import { FilenameSearcher, SidePanel } from '@jupyterlab/ui-components';
6
+ import { SidePanel } from '@jupyterlab/ui-components';
7
7
  import { Panel } from '@lumino/widgets';
8
8
  import { BreadCrumbs } from './crumbs';
9
9
  import { DirListing } from './listing';
@@ -19,10 +19,6 @@ const FILE_BROWSER_PANEL_CLASS = 'jp-FileBrowser-Panel';
19
19
  * The class name added to the filebrowser crumbs node.
20
20
  */
21
21
  const CRUMBS_CLASS = 'jp-FileBrowser-crumbs';
22
- /**
23
- * The class name added to the filebrowser filterbox node.
24
- */
25
- const FILTERBOX_CLASS = 'jp-FileBrowser-filterBox';
26
22
  /**
27
23
  * The class name added to the filebrowser toolbar node.
28
24
  */
@@ -48,7 +44,7 @@ export class FileBrowser extends SidePanel {
48
44
  var _a;
49
45
  super({ content: new Panel(), translator: options.translator });
50
46
  this._showLastModifiedColumn = true;
51
- this._useFuzzyFilter = true;
47
+ this._showFileSizeColumn = false;
52
48
  this._showHiddenFiles = false;
53
49
  this._showFileCheckboxes = false;
54
50
  this.addClass(FILE_BROWSER_CLASS);
@@ -75,17 +71,6 @@ export class FileBrowser extends SidePanel {
75
71
  translator
76
72
  });
77
73
  this.listing.addClass(LISTING_CLASS);
78
- this._filenameSearcher = FilenameSearcher({
79
- updateFilter: (filterFn, query) => {
80
- this.listing.model.setFilter(value => {
81
- return filterFn(value.name.toLowerCase());
82
- });
83
- },
84
- useFuzzyFilter: this._useFuzzyFilter,
85
- placeholder: this._trans.__('Filter files by name')
86
- });
87
- this._filenameSearcher.addClass(FILTERBOX_CLASS);
88
- this.mainPanel.addWidget(this._filenameSearcher);
89
74
  this.mainPanel.addWidget(this.crumbs);
90
75
  this.mainPanel.addWidget(this.listing);
91
76
  this.addWidget(this.mainPanel);
@@ -118,25 +103,19 @@ export class FileBrowser extends SidePanel {
118
103
  }
119
104
  }
120
105
  /**
121
- * Whether to use fuzzy filtering on file names.
106
+ * Whether to show the file size column
122
107
  */
123
- set useFuzzyFilter(value) {
124
- this._useFuzzyFilter = value;
125
- // Detach and dispose the current widget
126
- this._filenameSearcher.parent = null;
127
- this._filenameSearcher.dispose();
128
- this._filenameSearcher = FilenameSearcher({
129
- updateFilter: (filterFn, query) => {
130
- this.listing.model.setFilter(value => {
131
- return filterFn(value.name.toLowerCase());
132
- });
133
- },
134
- useFuzzyFilter: this._useFuzzyFilter,
135
- placeholder: this._trans.__('Filter files by name'),
136
- forceRefresh: true
137
- });
138
- this._filenameSearcher.addClass(FILTERBOX_CLASS);
139
- this.mainPanel.insertWidget(0, this._filenameSearcher);
108
+ get showFileSizeColumn() {
109
+ return this._showFileSizeColumn;
110
+ }
111
+ set showFileSizeColumn(value) {
112
+ if (this.listing.setColumnVisibility) {
113
+ this.listing.setColumnVisibility('file_size', value);
114
+ this._showFileSizeColumn = value;
115
+ }
116
+ else {
117
+ console.warn('Listing does not support toggling column visibility');
118
+ }
140
119
  }
141
120
  /**
142
121
  * Whether to show hidden files
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAY,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAe,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EACL,gBAAgB,EAGhB,SAAS,EACV,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC;;GAEG;AACH,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAE5C;;GAEG;AACH,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AAExD;;GAEG;AACH,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAE7C;;GAEG;AACH,MAAM,eAAe,GAAG,0BAA0B,CAAC;AAEnD;;GAEG;AACH,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAE/C;;GAEG;AACH,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,OAAO,WAAY,SAAQ,SAAS;IACxC;;;;OAIG;IACH,YAAY,OAA6B;;QACvC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QA2W1D,4BAAuB,GAAY,IAAI,CAAC;QACxC,oBAAe,GAAY,IAAI,CAAC;QAChC,qBAAgB,GAAY,KAAK,CAAC;QAClC,wBAAmB,GAAY,KAAK,CAAC;QA7W3C,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,MAAA,OAAO,CAAC,UAAU,mCAAI,cAAc,CAAC,CAAC;QAE5E,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAElC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;QAE9B,OAAO;QACP,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAC5B,YAAY,EACZ,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,CAC/B,CAAC;QAEF,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAE/B,iCAAiC;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;QAE5D,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAEnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC;YACnC,KAAK;YACL,QAAQ;YACR,UAAU;SACX,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAErC,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;YACxC,YAAY,EAAE,CACZ,QAAkD,EAClD,KAAc,EACd,EAAE;gBACF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;oBACnC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;YACL,CAAC;YACD,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,sBAAsB,CAAC;SACpD,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAEjD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE/B,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE;YAC7B,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC7B;IACH,CAAC;IAOD;;OAEG;IACH,IAAI,0BAA0B;QAC5B,OAAO,IAAI,CAAC,2BAA2B,CAAC;IAC1C,CAAC;IAED,IAAI,0BAA0B,CAAC,KAAc;QAC3C,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACtC,CAAC;IAED,IAAI,sBAAsB,CAAC,KAAc;QACvC,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACpC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YACzD,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;SACtC;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;SACrE;IACH,CAAC;IAED;;OAEG;IACH,IAAI,cAAc,CAAC,KAAc;QAC/B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAE7B,wCAAwC;QACxC,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,IAAI,CAAC;QACrC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;QAEjC,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;YACxC,YAAY,EAAE,CACZ,QAAkD,EAClD,KAAc,EACd,EAAE;gBACF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;oBACnC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;YACL,CAAC;YACD,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,sBAAsB,CAAC;YACnD,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAEjD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,IAAI,eAAe,CAAC,KAAc;QAChC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,IAAI,kBAAkB,CAAC,KAAc;QACnC,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACpC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YACvD,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;SAClC;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;SACrE;IACH,CAAC;IAED;;;;OAIG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,CAAC,IAAY;QACjC,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,GAAG;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE;YACnC,OAAO;SACR;QACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,+CAA+C;QAC/C,iDAAiD;QACjD,+CAA+C;QAC/C,iDAAiD;QACjD,WAAW;QACX,KAAK,IAAI,CAAC,QAAQ;aACf,WAAW,CAAC;YACX,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,IAAI,EAAE,WAAW;SAClB,CAAC;aACD,IAAI,CAAC,KAAK,EAAC,KAAK,EAAC,EAAE;YAClB,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QACjC,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,KAAK,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;YACpD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAiC;QAC7C,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;YAC9B,OAAO;SACR;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,+CAA+C;QAC/C,4CAA4C;QAC5C,0CAA0C;QAC1C,4CAA4C;QAC5C,WAAW;QACX,KAAK,IAAI,CAAC,QAAQ;aACf,WAAW,CAAC;YACX,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC;aACD,IAAI,CAAC,KAAK,EAAC,KAAK,EAAC,EAAE;YAClB,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,KAAK,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;YACpD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,KAAiB;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;OAMG;IACO,gBAAgB,CAAC,OAA4B;QACrD,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAID;;OAEG;IACK,oBAAoB,CAC1B,MAA8B,EAC9B,IAAW;QAEX,IACE,IAAI,YAAY,gBAAgB,CAAC,aAAa;YAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAC5B;YACA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC;YACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAC3B,2BAA2B,EAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAChB,CAAC;YACF,KAAK,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SACpC;IACH,CAAC;CAeF"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
package/lib/listing.d.ts CHANGED
@@ -353,12 +353,12 @@ export declare namespace DirListing {
353
353
  /**
354
354
  * The sort key.
355
355
  */
356
- key: 'name' | 'last_modified';
356
+ key: 'name' | 'last_modified' | 'file_size';
357
357
  }
358
358
  /**
359
359
  * Toggleable columns.
360
360
  */
361
- type ToggleableColumn = 'last_modified' | 'is_selected';
361
+ type ToggleableColumn = 'last_modified' | 'is_selected' | 'file_size';
362
362
  /**
363
363
  * A file contents model thunk.
364
364
  *
package/lib/listing.js CHANGED
@@ -54,6 +54,10 @@ const ITEM_ICON_CLASS = 'jp-DirListing-itemIcon';
54
54
  * The class name added to the listing item modified cell.
55
55
  */
56
56
  const ITEM_MODIFIED_CLASS = 'jp-DirListing-itemModified';
57
+ /**
58
+ * The class name added to the listing item file size cell.
59
+ */
60
+ const ITEM_FILE_SIZE_CLASS = 'jp-DirListing-itemFileSize';
57
61
  /**
58
62
  * The class name added to the label element that wraps each item's checkbox and
59
63
  * the header's check-all checkbox.
@@ -71,6 +75,10 @@ const NAME_ID_CLASS = 'jp-id-name';
71
75
  * The class name added to the modified column header cell.
72
76
  */
73
77
  const MODIFIED_ID_CLASS = 'jp-id-modified';
78
+ /**
79
+ * The class name added to the file size column header cell.
80
+ */
81
+ const FILE_SIZE_ID_CLASS = 'jp-id-filesize';
74
82
  /**
75
83
  * The class name added to the narrow column header cell.
76
84
  */
@@ -79,6 +87,10 @@ const NARROW_ID_CLASS = 'jp-id-narrow';
79
87
  * The class name added to the modified column header cell and modified item cell when hidden.
80
88
  */
81
89
  const MODIFIED_COLUMN_HIDDEN = 'jp-LastModified-hidden';
90
+ /**
91
+ * The class name added to the size column header cell and size item cell when hidden.
92
+ */
93
+ const FILE_SIZE_COLUMN_HIDDEN = 'jp-FileSize-hidden';
82
94
  /**
83
95
  * The mime type for a contents drag object.
84
96
  */
@@ -180,6 +192,8 @@ export class DirListing extends Widget {
180
192
  this._manager = this._model.manager;
181
193
  this._renderer = options.renderer || DirListing.defaultRenderer;
182
194
  const headerNode = DOMUtils.findElement(this.node, HEADER_CLASS);
195
+ // hide the file size column by default
196
+ this._hiddenColumns.add('file_size');
183
197
  this._renderer.populateHeaderNode(headerNode, this.translator, this._hiddenColumns);
184
198
  this._manager.activateRequested.connect(this._onActivateRequested, this);
185
199
  }
@@ -1508,18 +1522,19 @@ export class DirListing extends Widget {
1508
1522
  * @param node - The header node to populate.
1509
1523
  */
1510
1524
  populateHeaderNode(node, translator, hiddenColumns) {
1511
- var _a, _b;
1512
1525
  translator = translator || nullTranslator;
1513
1526
  const trans = translator.load('jupyterlab');
1514
1527
  const name = this.createHeaderItemNode(trans.__('Name'));
1515
1528
  const narrow = document.createElement('div');
1516
1529
  const modified = this.createHeaderItemNode(trans.__('Last Modified'));
1530
+ const fileSize = this.createHeaderItemNode(trans.__('File Size'));
1517
1531
  name.classList.add(NAME_ID_CLASS);
1518
1532
  name.classList.add(SELECTED_CLASS);
1519
1533
  modified.classList.add(MODIFIED_ID_CLASS);
1534
+ fileSize.classList.add(FILE_SIZE_ID_CLASS);
1520
1535
  narrow.classList.add(NARROW_ID_CLASS);
1521
1536
  narrow.textContent = '...';
1522
- if (!((_a = hiddenColumns === null || hiddenColumns === void 0 ? void 0 : hiddenColumns.has) === null || _a === void 0 ? void 0 : _a.call(hiddenColumns, 'is_selected'))) {
1537
+ if (!(hiddenColumns === null || hiddenColumns === void 0 ? void 0 : hiddenColumns.has('is_selected'))) {
1523
1538
  const checkboxWrapper = this.createCheckboxWrapperNode({
1524
1539
  alwaysVisible: true
1525
1540
  });
@@ -1528,12 +1543,19 @@ export class DirListing extends Widget {
1528
1543
  node.appendChild(name);
1529
1544
  node.appendChild(narrow);
1530
1545
  node.appendChild(modified);
1531
- if ((_b = hiddenColumns === null || hiddenColumns === void 0 ? void 0 : hiddenColumns.has) === null || _b === void 0 ? void 0 : _b.call(hiddenColumns, 'last_modified')) {
1546
+ node.appendChild(fileSize);
1547
+ if (hiddenColumns === null || hiddenColumns === void 0 ? void 0 : hiddenColumns.has('last_modified')) {
1532
1548
  modified.classList.add(MODIFIED_COLUMN_HIDDEN);
1533
1549
  }
1534
1550
  else {
1535
1551
  modified.classList.remove(MODIFIED_COLUMN_HIDDEN);
1536
1552
  }
1553
+ if (hiddenColumns === null || hiddenColumns === void 0 ? void 0 : hiddenColumns.has('file_size')) {
1554
+ fileSize.classList.add(FILE_SIZE_COLUMN_HIDDEN);
1555
+ }
1556
+ else {
1557
+ fileSize.classList.remove(FILE_SIZE_COLUMN_HIDDEN);
1558
+ }
1537
1559
  // set the initial caret icon
1538
1560
  Private.updateCaret(DOMUtils.findElement(name, HEADER_ITEM_ICON_CLASS), 'right', 'up');
1539
1561
  }
@@ -1549,11 +1571,13 @@ export class DirListing extends Widget {
1549
1571
  handleHeaderClick(node, event) {
1550
1572
  const name = DOMUtils.findElement(node, NAME_ID_CLASS);
1551
1573
  const modified = DOMUtils.findElement(node, MODIFIED_ID_CLASS);
1574
+ const fileSize = DOMUtils.findElement(node, FILE_SIZE_ID_CLASS);
1552
1575
  const state = { direction: 'ascending', key: 'name' };
1553
1576
  const target = event.target;
1577
+ const modifiedIcon = DOMUtils.findElement(modified, HEADER_ITEM_ICON_CLASS);
1578
+ const fileSizeIcon = DOMUtils.findElement(fileSize, HEADER_ITEM_ICON_CLASS);
1579
+ const nameIcon = DOMUtils.findElement(name, HEADER_ITEM_ICON_CLASS);
1554
1580
  if (name.contains(target)) {
1555
- const modifiedIcon = DOMUtils.findElement(modified, HEADER_ITEM_ICON_CLASS);
1556
- const nameIcon = DOMUtils.findElement(name, HEADER_ITEM_ICON_CLASS);
1557
1581
  if (name.classList.contains(SELECTED_CLASS)) {
1558
1582
  if (!name.classList.contains(DESCENDING_CLASS)) {
1559
1583
  state.direction = 'descending';
@@ -1572,12 +1596,13 @@ export class DirListing extends Widget {
1572
1596
  name.classList.add(SELECTED_CLASS);
1573
1597
  modified.classList.remove(SELECTED_CLASS);
1574
1598
  modified.classList.remove(DESCENDING_CLASS);
1599
+ fileSize.classList.remove(SELECTED_CLASS);
1600
+ fileSize.classList.remove(DESCENDING_CLASS);
1575
1601
  Private.updateCaret(modifiedIcon, 'left');
1602
+ Private.updateCaret(fileSizeIcon, 'left');
1576
1603
  return state;
1577
1604
  }
1578
1605
  if (modified.contains(target)) {
1579
- const modifiedIcon = DOMUtils.findElement(modified, HEADER_ITEM_ICON_CLASS);
1580
- const nameIcon = DOMUtils.findElement(name, HEADER_ITEM_ICON_CLASS);
1581
1606
  state.key = 'last_modified';
1582
1607
  if (modified.classList.contains(SELECTED_CLASS)) {
1583
1608
  if (!modified.classList.contains(DESCENDING_CLASS)) {
@@ -1597,7 +1622,36 @@ export class DirListing extends Widget {
1597
1622
  modified.classList.add(SELECTED_CLASS);
1598
1623
  name.classList.remove(SELECTED_CLASS);
1599
1624
  name.classList.remove(DESCENDING_CLASS);
1625
+ fileSize.classList.remove(SELECTED_CLASS);
1626
+ fileSize.classList.remove(DESCENDING_CLASS);
1600
1627
  Private.updateCaret(nameIcon, 'right');
1628
+ Private.updateCaret(fileSizeIcon, 'left');
1629
+ return state;
1630
+ }
1631
+ if (fileSize.contains(target)) {
1632
+ state.key = 'file_size';
1633
+ if (fileSize.classList.contains(SELECTED_CLASS)) {
1634
+ if (!fileSize.classList.contains(DESCENDING_CLASS)) {
1635
+ state.direction = 'descending';
1636
+ fileSize.classList.add(DESCENDING_CLASS);
1637
+ Private.updateCaret(fileSizeIcon, 'left', 'down');
1638
+ }
1639
+ else {
1640
+ fileSize.classList.remove(DESCENDING_CLASS);
1641
+ Private.updateCaret(fileSizeIcon, 'left', 'up');
1642
+ }
1643
+ }
1644
+ else {
1645
+ fileSize.classList.remove(DESCENDING_CLASS);
1646
+ Private.updateCaret(fileSizeIcon, 'left', 'up');
1647
+ }
1648
+ fileSize.classList.add(SELECTED_CLASS);
1649
+ name.classList.remove(SELECTED_CLASS);
1650
+ name.classList.remove(DESCENDING_CLASS);
1651
+ modified.classList.remove(SELECTED_CLASS);
1652
+ modified.classList.remove(DESCENDING_CLASS);
1653
+ Private.updateCaret(nameIcon, 'right');
1654
+ Private.updateCaret(modifiedIcon, 'left');
1601
1655
  return state;
1602
1656
  }
1603
1657
  return state;
@@ -1608,32 +1662,40 @@ export class DirListing extends Widget {
1608
1662
  * @returns A new DOM node to use as a content item.
1609
1663
  */
1610
1664
  createItemNode(hiddenColumns) {
1611
- var _a, _b;
1612
1665
  const node = document.createElement('li');
1613
1666
  const icon = document.createElement('span');
1614
1667
  const text = document.createElement('span');
1615
1668
  const modified = document.createElement('span');
1669
+ const fileSize = document.createElement('span');
1616
1670
  icon.className = ITEM_ICON_CLASS;
1617
1671
  text.className = ITEM_TEXT_CLASS;
1618
1672
  modified.className = ITEM_MODIFIED_CLASS;
1619
- if (!((_a = hiddenColumns === null || hiddenColumns === void 0 ? void 0 : hiddenColumns.has) === null || _a === void 0 ? void 0 : _a.call(hiddenColumns, 'is_selected'))) {
1673
+ fileSize.className = ITEM_FILE_SIZE_CLASS;
1674
+ if (!(hiddenColumns === null || hiddenColumns === void 0 ? void 0 : hiddenColumns.has('is_selected'))) {
1620
1675
  const checkboxWrapper = this.createCheckboxWrapperNode();
1621
1676
  node.appendChild(checkboxWrapper);
1622
1677
  }
1623
1678
  node.appendChild(icon);
1624
1679
  node.appendChild(text);
1625
1680
  node.appendChild(modified);
1681
+ node.appendChild(fileSize);
1626
1682
  // Make the text note focusable so that it receives keyboard events;
1627
1683
  // text node was specifically chosen to receive shortcuts because
1628
1684
  // text element gets substituted with input area during file name edits
1629
1685
  // which conveniently deactivate irrelevant shortcuts.
1630
1686
  text.tabIndex = 0;
1631
- if ((_b = hiddenColumns === null || hiddenColumns === void 0 ? void 0 : hiddenColumns.has) === null || _b === void 0 ? void 0 : _b.call(hiddenColumns, 'last_modified')) {
1687
+ if (hiddenColumns === null || hiddenColumns === void 0 ? void 0 : hiddenColumns.has('last_modified')) {
1632
1688
  modified.classList.add(MODIFIED_COLUMN_HIDDEN);
1633
1689
  }
1634
1690
  else {
1635
1691
  modified.classList.remove(MODIFIED_COLUMN_HIDDEN);
1636
1692
  }
1693
+ if (hiddenColumns === null || hiddenColumns === void 0 ? void 0 : hiddenColumns.has('file_size')) {
1694
+ fileSize.classList.add(FILE_SIZE_COLUMN_HIDDEN);
1695
+ }
1696
+ else {
1697
+ fileSize.classList.remove(FILE_SIZE_COLUMN_HIDDEN);
1698
+ }
1637
1699
  return node;
1638
1700
  }
1639
1701
  /**
@@ -1681,7 +1743,6 @@ export class DirListing extends Widget {
1681
1743
  *
1682
1744
  */
1683
1745
  updateItemNode(node, model, fileType, translator, hiddenColumns, selected) {
1684
- var _a, _b;
1685
1746
  if (selected) {
1686
1747
  node.classList.add(SELECTED_CLASS);
1687
1748
  }
@@ -1693,8 +1754,9 @@ export class DirListing extends Widget {
1693
1754
  const iconContainer = DOMUtils.findElement(node, ITEM_ICON_CLASS);
1694
1755
  const text = DOMUtils.findElement(node, ITEM_TEXT_CLASS);
1695
1756
  const modified = DOMUtils.findElement(node, ITEM_MODIFIED_CLASS);
1757
+ const fileSize = DOMUtils.findElement(node, ITEM_FILE_SIZE_CLASS);
1696
1758
  const checkboxWrapper = DOMUtils.findElement(node, CHECKBOX_WRAPPER_CLASS);
1697
- const showFileCheckboxes = !((_a = hiddenColumns === null || hiddenColumns === void 0 ? void 0 : hiddenColumns.has) === null || _a === void 0 ? void 0 : _a.call(hiddenColumns, 'is_selected'));
1759
+ const showFileCheckboxes = !(hiddenColumns === null || hiddenColumns === void 0 ? void 0 : hiddenColumns.has('is_selected'));
1698
1760
  if (checkboxWrapper && !showFileCheckboxes) {
1699
1761
  node.removeChild(checkboxWrapper);
1700
1762
  }
@@ -1702,12 +1764,18 @@ export class DirListing extends Widget {
1702
1764
  const checkboxWrapper = this.createCheckboxWrapperNode();
1703
1765
  node.insertBefore(checkboxWrapper, iconContainer);
1704
1766
  }
1705
- if ((_b = hiddenColumns === null || hiddenColumns === void 0 ? void 0 : hiddenColumns.has) === null || _b === void 0 ? void 0 : _b.call(hiddenColumns, 'last_modified')) {
1767
+ if (hiddenColumns === null || hiddenColumns === void 0 ? void 0 : hiddenColumns.has('last_modified')) {
1706
1768
  modified.classList.add(MODIFIED_COLUMN_HIDDEN);
1707
1769
  }
1708
1770
  else {
1709
1771
  modified.classList.remove(MODIFIED_COLUMN_HIDDEN);
1710
1772
  }
1773
+ if (hiddenColumns === null || hiddenColumns === void 0 ? void 0 : hiddenColumns.has('file_size')) {
1774
+ fileSize.classList.add(FILE_SIZE_COLUMN_HIDDEN);
1775
+ }
1776
+ else {
1777
+ fileSize.classList.remove(FILE_SIZE_COLUMN_HIDDEN);
1778
+ }
1711
1779
  // render the file item's icon
1712
1780
  LabIcon.resolveElement({
1713
1781
  icon,
@@ -1719,8 +1787,13 @@ export class DirListing extends Widget {
1719
1787
  let hoverText = trans.__('Name: %1', model.name);
1720
1788
  // add file size to pop up if its available
1721
1789
  if (model.size !== null && model.size !== undefined) {
1790
+ const fileSizeText = Private.formatFileSize(model.size, 1, 1024);
1791
+ fileSize.textContent = fileSizeText;
1722
1792
  hoverText += trans.__('\nSize: %1', Private.formatFileSize(model.size, 1, 1024));
1723
1793
  }
1794
+ else {
1795
+ fileSize.textContent = '';
1796
+ }
1724
1797
  if (model.path) {
1725
1798
  const dirname = PathExt.dirname(model.path);
1726
1799
  if (dirname) {
@@ -1927,6 +2000,15 @@ var Private;
1927
2000
  return t1 - t2 || (valA - valB) * reverse;
1928
2001
  });
1929
2002
  }
2003
+ else if (state.key === 'file_size') {
2004
+ // Sort by size (grouping directories first)
2005
+ copy.sort((a, b) => {
2006
+ var _a, _b;
2007
+ const t1 = a.type === 'directory' ? 0 : 1;
2008
+ const t2 = b.type === 'directory' ? 0 : 1;
2009
+ return t1 - t2 || (((_a = a.size) !== null && _a !== void 0 ? _a : 0) - ((_b = b.size) !== null && _b !== void 0 ? _b : 0)) * reverse;
2010
+ });
2011
+ }
1930
2012
  else {
1931
2013
  // Sort by name (grouping directories first)
1932
2014
  copy.sort((a, b) => {
@@ -1952,10 +2034,10 @@ var Private;
1952
2034
  function formatFileSize(bytes, decimalPoint, k) {
1953
2035
  // https://www.codexworld.com/how-to/convert-file-size-bytes-kb-mb-gb-javascript/
1954
2036
  if (bytes === 0) {
1955
- return '0 Bytes';
2037
+ return '0 B';
1956
2038
  }
1957
2039
  const dm = decimalPoint || 2;
1958
- const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
2040
+ const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
1959
2041
  const i = Math.floor(Math.log(bytes) / Math.log(k));
1960
2042
  if (i >= 0 && i < sizes.length) {
1961
2043
  return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];