@memberjunction/ng-file-storage 6.2.0-edge.0 → 6.2.0-edge.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.
Files changed (36) hide show
  1. package/dist/lib/admin/storage-admin-dialog.component.d.ts +1 -1
  2. package/dist/lib/admin/storage-admin-dialog.component.js +2 -2
  3. package/dist/lib/admin/storage-admin-dialog.component.js.map +1 -1
  4. package/dist/lib/category-tree/category-tree.d.ts +83 -9
  5. package/dist/lib/category-tree/category-tree.d.ts.map +1 -1
  6. package/dist/lib/category-tree/category-tree.js +192 -50
  7. package/dist/lib/category-tree/category-tree.js.map +1 -1
  8. package/dist/lib/file-browser/file-browser.component.d.ts +30 -4
  9. package/dist/lib/file-browser/file-browser.component.d.ts.map +1 -1
  10. package/dist/lib/file-browser/file-browser.component.js +68 -16
  11. package/dist/lib/file-browser/file-browser.component.js.map +1 -1
  12. package/dist/lib/file-browser/file-grid.component.d.ts +404 -58
  13. package/dist/lib/file-browser/file-grid.component.d.ts.map +1 -1
  14. package/dist/lib/file-browser/file-grid.component.js +1040 -396
  15. package/dist/lib/file-browser/file-grid.component.js.map +1 -1
  16. package/dist/lib/file-browser/folder-tree.component.d.ts +65 -9
  17. package/dist/lib/file-browser/folder-tree.component.d.ts.map +1 -1
  18. package/dist/lib/file-browser/folder-tree.component.js +166 -58
  19. package/dist/lib/file-browser/folder-tree.component.js.map +1 -1
  20. package/dist/lib/file-browser/storage-providers-list.component.d.ts +55 -7
  21. package/dist/lib/file-browser/storage-providers-list.component.d.ts.map +1 -1
  22. package/dist/lib/file-browser/storage-providers-list.component.js +124 -34
  23. package/dist/lib/file-browser/storage-providers-list.component.js.map +1 -1
  24. package/dist/lib/file-upload/file-upload.d.ts +22 -2
  25. package/dist/lib/file-upload/file-upload.d.ts.map +1 -1
  26. package/dist/lib/file-upload/file-upload.js +40 -10
  27. package/dist/lib/file-upload/file-upload.js.map +1 -1
  28. package/dist/lib/files-grid/files-grid.d.ts +28 -4
  29. package/dist/lib/files-grid/files-grid.d.ts.map +1 -1
  30. package/dist/lib/files-grid/files-grid.js +71 -23
  31. package/dist/lib/files-grid/files-grid.js.map +1 -1
  32. package/dist/lib/record-attachments/record-attachments.component.d.ts +15 -7
  33. package/dist/lib/record-attachments/record-attachments.component.d.ts.map +1 -1
  34. package/dist/lib/record-attachments/record-attachments.component.js +34 -18
  35. package/dist/lib/record-attachments/record-attachments.component.js.map +1 -1
  36. package/package.json +13 -13
@@ -30,41 +30,81 @@ export declare class FolderTreeComponent {
30
30
  */
31
31
  private _account;
32
32
  constructor();
33
- set account(value: StorageAccountWithProvider | null);
33
+ set Account(value: StorageAccountWithProvider | null);
34
+ get Account(): StorageAccountWithProvider | null;
35
+ /** @deprecated Use {@link Account}. */
34
36
  get account(): StorageAccountWithProvider | null;
37
+ /** @deprecated Use {@link Account}. */
38
+ set account(value: StorageAccountWithProvider | null);
35
39
  /**
36
40
  * Emits when a folder is selected in the tree
37
41
  */
42
+ FolderSelected: EventEmitter<string>;
43
+ /**
44
+ * @deprecated Use {@link FolderSelected}.
45
+ *
46
+ * The same emitter under the old binding name, so a template still binding
47
+ * (folderSelected) keeps working. Must stay AFTER FolderSelected: class fields
48
+ * initialise in order, and the other way round this captures undefined.
49
+ */
38
50
  folderSelected: EventEmitter<string>;
39
51
  /**
40
52
  * Current folder path
41
53
  */
42
- currentPath: string;
54
+ CurrentPath: string;
55
+ /** @deprecated Use {@link CurrentPath}. */
56
+ get currentPath(): string;
57
+ /** @deprecated Use {@link CurrentPath}. */
58
+ set currentPath(value: string);
43
59
  /**
44
60
  * Navigation history (for back button)
45
61
  */
46
- history: string[];
62
+ History: string[];
63
+ /** @deprecated Use {@link History}. */
64
+ get history(): string[];
65
+ /** @deprecated Use {@link History}. */
66
+ set history(value: string[]);
47
67
  /**
48
68
  * Current position in history
49
69
  */
50
- historyIndex: number;
70
+ HistoryIndex: number;
71
+ /** @deprecated Use {@link HistoryIndex}. */
72
+ get historyIndex(): number;
73
+ /** @deprecated Use {@link HistoryIndex}. */
74
+ set historyIndex(value: number);
51
75
  /**
52
76
  * Breadcrumb items for current path
53
77
  */
54
- breadcrumbs: BreadcrumbItem[];
78
+ Breadcrumbs: BreadcrumbItem[];
79
+ /** @deprecated Use {@link Breadcrumbs}. */
80
+ get breadcrumbs(): BreadcrumbItem[];
81
+ /** @deprecated Use {@link Breadcrumbs}. */
82
+ set breadcrumbs(value: BreadcrumbItem[]);
55
83
  /**
56
84
  * Folders in current path
57
85
  */
58
- folders: FolderItem[];
86
+ Folders: FolderItem[];
87
+ /** @deprecated Use {@link Folders}. */
88
+ get folders(): FolderItem[];
89
+ /** @deprecated Use {@link Folders}. */
90
+ set folders(value: FolderItem[]);
59
91
  private cdr;
60
92
  /**
61
93
  * Loading state
62
94
  */
63
- isLoading: boolean;
95
+ IsLoading: boolean;
96
+ /** @deprecated Use {@link IsLoading}. */
97
+ get isLoading(): boolean;
98
+ /** @deprecated Use {@link IsLoading}. */
99
+ set isLoading(value: boolean);
64
100
  /**
65
101
  * Error message
66
102
  */
67
- errorMessage: string | null;
103
+ ErrorMessage: string | null;
104
+ /** @deprecated Use {@link ErrorMessage}. */
105
+ get errorMessage(): string | null;
106
+ /** @deprecated Use {@link ErrorMessage}. */
107
+ set errorMessage(value: string | null);
68
108
  /**
69
109
  * Resets navigation when provider changes
70
110
  */
@@ -72,27 +112,39 @@ export declare class FolderTreeComponent {
72
112
  /**
73
113
  * Navigates to a specific folder path
74
114
  */
115
+ NavigateToPath(path: string): void;
116
+ /** @deprecated Use {@link NavigateToPath}. */
75
117
  navigateToPath(path: string): void;
76
118
  /**
77
119
  * Refreshes the current folder view without changing navigation
78
120
  * Used when folder structure changes (e.g., folder deleted) but we're staying in the same location
79
121
  */
122
+ Refresh(): void;
123
+ /** @deprecated Use {@link Refresh}. */
80
124
  refresh(): void;
81
125
  /**
82
126
  * Navigates back in history
83
127
  */
128
+ NavigateBack(): void;
129
+ /** @deprecated Use {@link NavigateBack}. */
84
130
  navigateBack(): void;
85
131
  /**
86
132
  * Navigates forward in history
87
133
  */
134
+ NavigateForward(): void;
135
+ /** @deprecated Use {@link NavigateForward}. */
88
136
  navigateForward(): void;
89
137
  /**
90
138
  * Checks if can navigate back
91
139
  */
140
+ CanGoBack(): boolean;
141
+ /** @deprecated Use {@link CanGoBack}. */
92
142
  canGoBack(): boolean;
93
143
  /**
94
144
  * Checks if can navigate forward
95
145
  */
146
+ CanGoForward(): boolean;
147
+ /** @deprecated Use {@link CanGoForward}. */
96
148
  canGoForward(): boolean;
97
149
  /**
98
150
  * Updates breadcrumbs based on current path
@@ -101,6 +153,8 @@ export declare class FolderTreeComponent {
101
153
  /**
102
154
  * Handles breadcrumb click
103
155
  */
156
+ OnBreadcrumbClick(item: BreadcrumbItem): void;
157
+ /** @deprecated Use {@link OnBreadcrumbClick}. */
104
158
  onBreadcrumbClick(item: BreadcrumbItem): void;
105
159
  /**
106
160
  * Loads folders from the storage account for the current path
@@ -109,8 +163,10 @@ export declare class FolderTreeComponent {
109
163
  /**
110
164
  * Handles folder click for navigation
111
165
  */
166
+ OnFolderClick(folder: FolderItem): void;
167
+ /** @deprecated Use {@link OnFolderClick}. */
112
168
  onFolderClick(folder: FolderItem): void;
113
169
  static ɵfac: i0.ɵɵFactoryDeclaration<FolderTreeComponent, never>;
114
- static ɵcmp: i0.ɵɵComponentDeclaration<FolderTreeComponent, "mj-folder-tree", never, { "account": { "alias": "account"; "required": false; }; }, { "folderSelected": "folderSelected"; }, never, never, false, never>;
170
+ static ɵcmp: i0.ɵɵComponentDeclaration<FolderTreeComponent, "mj-folder-tree", never, { "Account": { "alias": "Account"; "required": false; }; "account": { "alias": "account"; "required": false; }; }, { "FolderSelected": "FolderSelected"; "folderSelected": "folderSelected"; }, never, never, false, never>;
115
171
  }
116
172
  //# sourceMappingURL=folder-tree.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"folder-tree.component.d.ts","sourceRoot":"","sources":["../../../src/lib/file-browser/folder-tree.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAA4C,MAAM,eAAe,CAAC;AAElG,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;;AAG3E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,qBAMa,mBAAmB;IAC9B;;OAEG;IACH,OAAO,CAAC,aAAa,CAA2B;IAEhD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAA2C;;IAM3D,IACI,OAAO,CAAC,KAAK,EAAE,0BAA0B,GAAG,IAAI,EAQnD;IACD,IAAI,OAAO,IAAI,0BAA0B,GAAG,IAAI,CAE/C;IAED;;OAEG;IACO,cAAc,uBAA8B;IAEtD;;OAEG;IACI,WAAW,EAAE,MAAM,CAAO;IAEjC;;OAEG;IACI,OAAO,EAAE,MAAM,EAAE,CAAM;IAE9B;;OAEG;IACI,YAAY,EAAE,MAAM,CAAM;IAEjC;;OAEG;IACI,WAAW,EAAE,cAAc,EAAE,CAAM;IAE1C;;OAEG;IACI,OAAO,EAAE,UAAU,EAAE,CAAM;IAElC,OAAO,CAAC,GAAG,CAA6B;IAExC;;OAEG;IACI,SAAS,EAAE,OAAO,CAAS;IAElC;;OAEG;IACI,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE1C;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACI,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAuBzC;;;OAGG;IACI,OAAO,IAAI,IAAI;IAItB;;OAEG;IACI,YAAY,IAAI,IAAI;IAY3B;;OAEG;IACI,eAAe,IAAI,IAAI;IAY9B;;OAEG;IACI,SAAS,IAAI,OAAO;IAI3B;;OAEG;IACI,YAAY,IAAI,OAAO;IAI9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA+BzB;;OAEG;IACI,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAKpD;;OAEG;YACW,WAAW;IA6CzB;;OAEG;IACI,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;yCA5PnC,mBAAmB;2CAAnB,mBAAmB;CAgQ/B"}
1
+ {"version":3,"file":"folder-tree.component.d.ts","sourceRoot":"","sources":["../../../src/lib/file-browser/folder-tree.component.ts"],"names":[],"mappings":"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"}
@@ -132,7 +132,7 @@ export class FolderTreeComponent {
132
132
  constructor() {
133
133
  this.storageClient = new GraphQLFileStorageClient(GraphQLDataProvider.Instance);
134
134
  }
135
- set account(value) {
135
+ set Account(value) {
136
136
  const previousAccount = this._account;
137
137
  this._account = value;
138
138
  if (value && !UUIDsEqual(value.account.ID, previousAccount?.account.ID)) {
@@ -140,138 +140,234 @@ export class FolderTreeComponent {
140
140
  this.loadFolders();
141
141
  }
142
142
  }
143
- get account() {
143
+ get Account() {
144
144
  return this._account;
145
145
  }
146
+ /** @deprecated Use {@link Account}. */
147
+ get account() {
148
+ return this.Account;
149
+ }
150
+ /** @deprecated Use {@link Account}. */
151
+ set account(value) {
152
+ this.Account = value;
153
+ }
146
154
  /**
147
155
  * Emits when a folder is selected in the tree
148
156
  */
149
- folderSelected = new EventEmitter();
157
+ FolderSelected = new EventEmitter();
158
+ /**
159
+ * @deprecated Use {@link FolderSelected}.
160
+ *
161
+ * The same emitter under the old binding name, so a template still binding
162
+ * (folderSelected) keeps working. Must stay AFTER FolderSelected: class fields
163
+ * initialise in order, and the other way round this captures undefined.
164
+ */
165
+ folderSelected = this.FolderSelected;
150
166
  /**
151
167
  * Current folder path
152
168
  */
153
- currentPath = '/';
169
+ CurrentPath = '/';
170
+ /** @deprecated Use {@link CurrentPath}. */
171
+ get currentPath() {
172
+ return this.CurrentPath;
173
+ }
174
+ /** @deprecated Use {@link CurrentPath}. */
175
+ set currentPath(value) {
176
+ this.CurrentPath = value;
177
+ }
154
178
  /**
155
179
  * Navigation history (for back button)
156
180
  */
157
- history = [];
181
+ History = [];
182
+ /** @deprecated Use {@link History}. */
183
+ get history() {
184
+ return this.History;
185
+ }
186
+ /** @deprecated Use {@link History}. */
187
+ set history(value) {
188
+ this.History = value;
189
+ }
158
190
  /**
159
191
  * Current position in history
160
192
  */
161
- historyIndex = -1;
193
+ HistoryIndex = -1;
194
+ /** @deprecated Use {@link HistoryIndex}. */
195
+ get historyIndex() {
196
+ return this.HistoryIndex;
197
+ }
198
+ /** @deprecated Use {@link HistoryIndex}. */
199
+ set historyIndex(value) {
200
+ this.HistoryIndex = value;
201
+ }
162
202
  /**
163
203
  * Breadcrumb items for current path
164
204
  */
165
- breadcrumbs = [];
205
+ Breadcrumbs = [];
206
+ /** @deprecated Use {@link Breadcrumbs}. */
207
+ get breadcrumbs() {
208
+ return this.Breadcrumbs;
209
+ }
210
+ /** @deprecated Use {@link Breadcrumbs}. */
211
+ set breadcrumbs(value) {
212
+ this.Breadcrumbs = value;
213
+ }
166
214
  /**
167
215
  * Folders in current path
168
216
  */
169
- folders = [];
217
+ Folders = [];
218
+ /** @deprecated Use {@link Folders}. */
219
+ get folders() {
220
+ return this.Folders;
221
+ }
222
+ /** @deprecated Use {@link Folders}. */
223
+ set folders(value) {
224
+ this.Folders = value;
225
+ }
170
226
  cdr = inject(ChangeDetectorRef);
171
227
  /**
172
228
  * Loading state
173
229
  */
174
- isLoading = false;
230
+ IsLoading = false;
231
+ /** @deprecated Use {@link IsLoading}. */
232
+ get isLoading() {
233
+ return this.IsLoading;
234
+ }
235
+ /** @deprecated Use {@link IsLoading}. */
236
+ set isLoading(value) {
237
+ this.IsLoading = value;
238
+ }
175
239
  /**
176
240
  * Error message
177
241
  */
178
- errorMessage = null;
242
+ ErrorMessage = null;
243
+ /** @deprecated Use {@link ErrorMessage}. */
244
+ get errorMessage() {
245
+ return this.ErrorMessage;
246
+ }
247
+ /** @deprecated Use {@link ErrorMessage}. */
248
+ set errorMessage(value) {
249
+ this.ErrorMessage = value;
250
+ }
179
251
  /**
180
252
  * Resets navigation when provider changes
181
253
  */
182
254
  resetNavigation() {
183
- this.currentPath = '/';
184
- this.history = ['/'];
185
- this.historyIndex = 0;
255
+ this.CurrentPath = '/';
256
+ this.History = ['/'];
257
+ this.HistoryIndex = 0;
186
258
  this.updateBreadcrumbs();
187
259
  }
188
260
  /**
189
261
  * Navigates to a specific folder path
190
262
  */
191
- navigateToPath(path) {
263
+ NavigateToPath(path) {
192
264
  // Don't navigate if already at this path
193
- if (path === this.currentPath) {
265
+ if (path === this.CurrentPath) {
194
266
  return;
195
267
  }
196
268
  // Add to history if navigating from user action (not back/forward)
197
- if (this.historyIndex === this.history.length - 1) {
198
- this.history.push(path);
199
- this.historyIndex = this.history.length - 1;
269
+ if (this.HistoryIndex === this.History.length - 1) {
270
+ this.History.push(path);
271
+ this.HistoryIndex = this.History.length - 1;
200
272
  }
201
273
  else {
202
274
  // Navigating from middle of history - truncate forward history
203
- this.history = this.history.slice(0, this.historyIndex + 1);
204
- this.history.push(path);
205
- this.historyIndex = this.history.length - 1;
275
+ this.History = this.History.slice(0, this.HistoryIndex + 1);
276
+ this.History.push(path);
277
+ this.HistoryIndex = this.History.length - 1;
206
278
  }
207
- this.currentPath = path;
279
+ this.CurrentPath = path;
208
280
  this.updateBreadcrumbs();
209
281
  this.loadFolders();
210
- this.folderSelected.emit(path);
282
+ this.FolderSelected.emit(path);
283
+ }
284
+ /** @deprecated Use {@link NavigateToPath}. */
285
+ navigateToPath(path) {
286
+ return this.NavigateToPath(path);
211
287
  }
212
288
  /**
213
289
  * Refreshes the current folder view without changing navigation
214
290
  * Used when folder structure changes (e.g., folder deleted) but we're staying in the same location
215
291
  */
216
- refresh() {
292
+ Refresh() {
217
293
  this.loadFolders();
218
294
  }
295
+ /** @deprecated Use {@link Refresh}. */
296
+ refresh() {
297
+ return this.Refresh();
298
+ }
219
299
  /**
220
300
  * Navigates back in history
221
301
  */
222
- navigateBack() {
223
- if (!this.canGoBack()) {
302
+ NavigateBack() {
303
+ if (!this.CanGoBack()) {
224
304
  return;
225
305
  }
226
- this.historyIndex--;
227
- this.currentPath = this.history[this.historyIndex];
306
+ this.HistoryIndex--;
307
+ this.CurrentPath = this.History[this.HistoryIndex];
228
308
  this.updateBreadcrumbs();
229
- this.folderSelected.emit(this.currentPath);
309
+ this.FolderSelected.emit(this.CurrentPath);
230
310
  this.loadFolders();
231
311
  }
312
+ /** @deprecated Use {@link NavigateBack}. */
313
+ navigateBack() {
314
+ return this.NavigateBack();
315
+ }
232
316
  /**
233
317
  * Navigates forward in history
234
318
  */
235
- navigateForward() {
236
- if (!this.canGoForward()) {
319
+ NavigateForward() {
320
+ if (!this.CanGoForward()) {
237
321
  return;
238
322
  }
239
- this.historyIndex++;
240
- this.currentPath = this.history[this.historyIndex];
323
+ this.HistoryIndex++;
324
+ this.CurrentPath = this.History[this.HistoryIndex];
241
325
  this.updateBreadcrumbs();
242
- this.folderSelected.emit(this.currentPath);
326
+ this.FolderSelected.emit(this.CurrentPath);
243
327
  this.loadFolders();
244
328
  }
329
+ /** @deprecated Use {@link NavigateForward}. */
330
+ navigateForward() {
331
+ return this.NavigateForward();
332
+ }
245
333
  /**
246
334
  * Checks if can navigate back
247
335
  */
336
+ CanGoBack() {
337
+ return this.HistoryIndex > 0;
338
+ }
339
+ /** @deprecated Use {@link CanGoBack}. */
248
340
  canGoBack() {
249
- return this.historyIndex > 0;
341
+ return this.CanGoBack();
250
342
  }
251
343
  /**
252
344
  * Checks if can navigate forward
253
345
  */
346
+ CanGoForward() {
347
+ return this.HistoryIndex < this.History.length - 1;
348
+ }
349
+ /** @deprecated Use {@link CanGoForward}. */
254
350
  canGoForward() {
255
- return this.historyIndex < this.history.length - 1;
351
+ return this.CanGoForward();
256
352
  }
257
353
  /**
258
354
  * Updates breadcrumbs based on current path
259
355
  */
260
356
  updateBreadcrumbs() {
261
- if (!this.account) {
262
- this.breadcrumbs = [];
357
+ if (!this.Account) {
358
+ this.Breadcrumbs = [];
263
359
  return;
264
360
  }
265
361
  // Start with account root (show account name)
266
362
  const items = [
267
363
  {
268
- label: this.account.account.Name,
364
+ label: this.Account.account.Name,
269
365
  path: '/'
270
366
  }
271
367
  ];
272
368
  // Add path segments if not at root
273
- if (this.currentPath !== '/') {
274
- const segments = this.currentPath.split('/').filter(s => s.length > 0);
369
+ if (this.CurrentPath !== '/') {
370
+ const segments = this.CurrentPath.split('/').filter(s => s.length > 0);
275
371
  let builtPath = '';
276
372
  for (const segment of segments) {
277
373
  builtPath += '/' + segment;
@@ -281,37 +377,41 @@ export class FolderTreeComponent {
281
377
  });
282
378
  }
283
379
  }
284
- this.breadcrumbs = items;
380
+ this.Breadcrumbs = items;
285
381
  }
286
382
  /**
287
383
  * Handles breadcrumb click
288
384
  */
289
- onBreadcrumbClick(item) {
290
- this.navigateToPath(item.path);
385
+ OnBreadcrumbClick(item) {
386
+ this.NavigateToPath(item.path);
291
387
  this.loadFolders();
292
388
  }
389
+ /** @deprecated Use {@link OnBreadcrumbClick}. */
390
+ onBreadcrumbClick(item) {
391
+ return this.OnBreadcrumbClick(item);
392
+ }
293
393
  /**
294
394
  * Loads folders from the storage account for the current path
295
395
  */
296
396
  async loadFolders() {
297
- if (!this.account) {
298
- this.folders = [];
397
+ if (!this.Account) {
398
+ this.Folders = [];
299
399
  return;
300
400
  }
301
- this.isLoading = true;
302
- this.errorMessage = null;
401
+ this.IsLoading = true;
402
+ this.ErrorMessage = null;
303
403
  this.cdr.detectChanges();
304
404
  try {
305
405
  // Blob keys (Azure/S3) have NO leading slash and use a trailing slash to denote a
306
406
  // directory prefix. currentPath is stored with a leading slash (e.g. "/test"), which
307
407
  // never matches real keys — so nested-folder listings came back empty (empty folder
308
408
  // names). Normalize to a slash-free, trailing-slash prefix before listing.
309
- const rawPath = this.currentPath && this.currentPath !== '/' ? this.currentPath : '';
409
+ const rawPath = this.CurrentPath && this.CurrentPath !== '/' ? this.CurrentPath : '';
310
410
  const listPrefix = rawPath ? rawPath.replace(/^\/+/, '').replace(/\/+$/, '') + '/' : '';
311
- const listResult = await this.storageClient.ListObjects(this.account.account.ID, listPrefix, '/');
411
+ const listResult = await this.storageClient.ListObjects(this.Account.account.ID, listPrefix, '/');
312
412
  // Convert prefixes to FolderItems
313
413
  const prefixes = listResult.prefixes || [];
314
- this.folders = prefixes.map((prefix) => {
414
+ this.Folders = prefixes.map((prefix) => {
315
415
  // Remove trailing slash and get just the folder name
316
416
  const cleanPath = prefix.endsWith('/') ? prefix.slice(0, -1) : prefix;
317
417
  const name = cleanPath.split('/').pop() || cleanPath;
@@ -323,23 +423,27 @@ export class FolderTreeComponent {
323
423
  }
324
424
  catch (error) {
325
425
  console.error('Error loading folders:', error);
326
- this.errorMessage = error instanceof Error ? error.message : 'Failed to load folders';
327
- this.folders = [];
426
+ this.ErrorMessage = error instanceof Error ? error.message : 'Failed to load folders';
427
+ this.Folders = [];
328
428
  }
329
429
  finally {
330
- this.isLoading = false;
430
+ this.IsLoading = false;
331
431
  this.cdr.detectChanges();
332
432
  }
333
433
  }
334
434
  /**
335
435
  * Handles folder click for navigation
336
436
  */
337
- onFolderClick(folder) {
338
- this.navigateToPath(folder.fullPath);
437
+ OnFolderClick(folder) {
438
+ this.NavigateToPath(folder.fullPath);
339
439
  this.loadFolders();
340
440
  }
441
+ /** @deprecated Use {@link OnFolderClick}. */
442
+ onFolderClick(folder) {
443
+ return this.OnFolderClick(folder);
444
+ }
341
445
  static ɵfac = function FolderTreeComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FolderTreeComponent)(); };
342
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FolderTreeComponent, selectors: [["mj-folder-tree"]], inputs: { account: "account" }, outputs: { folderSelected: "folderSelected" }, standalone: false, decls: 6, vars: 4, consts: [[1, "folder-tree"], [1, "navigation-bar"], [1, "tree-content"], [1, "tree-loading"], [1, "tree-error"], [1, "folder-list"], [1, "nav-buttons"], ["type", "button", "title", "Go back", 1, "nav-button", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], ["type", "button", "title", "Go forward", 1, "nav-button", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-right"], [1, "breadcrumbs"], ["type", "button", 1, "breadcrumb-item", 3, "click"], [1, "fa-solid", "fa-chevron-right", "breadcrumb-separator"], ["text", "Loading folders..."], [1, "fa-solid", "fa-triangle-exclamation", "error-icon"], [1, "error-text"], [1, "folder-item", 3, "title"], [1, "tree-placeholder"], [1, "folder-item", 3, "click", "title"], [1, "fa-solid", "fa-folder", "folder-icon"], [1, "folder-name"], [1, "fa-solid", "fa-folder-open", "placeholder-icon"], [1, "placeholder-text"], [1, "placeholder-hint"]], template: function FolderTreeComponent_Template(rf, ctx) { if (rf & 1) {
446
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FolderTreeComponent, selectors: [["mj-folder-tree"]], inputs: { Account: "Account", account: "account" }, outputs: { FolderSelected: "FolderSelected", folderSelected: "folderSelected" }, standalone: false, decls: 6, vars: 4, consts: [[1, "folder-tree"], [1, "navigation-bar"], [1, "tree-content"], [1, "tree-loading"], [1, "tree-error"], [1, "folder-list"], [1, "nav-buttons"], ["type", "button", "title", "Go back", 1, "nav-button", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], ["type", "button", "title", "Go forward", 1, "nav-button", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-right"], [1, "breadcrumbs"], ["type", "button", 1, "breadcrumb-item", 3, "click"], [1, "fa-solid", "fa-chevron-right", "breadcrumb-separator"], ["text", "Loading folders..."], [1, "fa-solid", "fa-triangle-exclamation", "error-icon"], [1, "error-text"], [1, "folder-item", 3, "title"], [1, "tree-placeholder"], [1, "folder-item", 3, "click", "title"], [1, "fa-solid", "fa-folder", "folder-icon"], [1, "folder-name"], [1, "fa-solid", "fa-folder-open", "placeholder-icon"], [1, "placeholder-text"], [1, "placeholder-hint"]], template: function FolderTreeComponent_Template(rf, ctx) { if (rf & 1) {
343
447
  i0.ɵɵelementStart(0, "div", 0);
344
448
  i0.ɵɵconditionalCreate(1, FolderTreeComponent_Conditional_1_Template, 9, 2, "div", 1);
345
449
  i0.ɵɵelementStart(2, "div", 2);
@@ -361,8 +465,12 @@ export class FolderTreeComponent {
361
465
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FolderTreeComponent, [{
362
466
  type: Component,
363
467
  args: [{ standalone: false, selector: 'mj-folder-tree', template: "<div class=\"folder-tree\">\n <!-- Navigation bar with back/forward buttons and breadcrumbs -->\n @if (account) {\n <div class=\"navigation-bar\">\n <!-- Back/Forward buttons -->\n <div class=\"nav-buttons\">\n <button\n type=\"button\"\n [disabled]=\"!canGoBack()\"\n (click)=\"navigateBack()\"\n title=\"Go back\"\n class=\"nav-button\">\n <i class=\"fa-solid fa-chevron-left\"></i>\n </button>\n <button\n type=\"button\"\n [disabled]=\"!canGoForward()\"\n (click)=\"navigateForward()\"\n title=\"Go forward\"\n class=\"nav-button\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n <!-- Breadcrumb path -->\n <div class=\"breadcrumbs\">\n @for (item of breadcrumbs; track item.path; let last = $last) {\n <button\n type=\"button\"\n (click)=\"onBreadcrumbClick(item)\"\n [class.current]=\"last\"\n class=\"breadcrumb-item\">\n {{ item.label }}\n </button>\n @if (!last) {\n <i class=\"fa-solid fa-chevron-right breadcrumb-separator\"></i>\n }\n }\n </div>\n </div>\n }\n\n <!-- Folder tree content -->\n <div class=\"tree-content\">\n <!-- Loading state -->\n @if (isLoading) {\n <div class=\"tree-loading\">\n <mj-loading text=\"Loading folders...\"></mj-loading>\n </div>\n }\n\n <!-- Error state -->\n @if (errorMessage && !isLoading) {\n <div class=\"tree-error\">\n <i class=\"fa-solid fa-triangle-exclamation error-icon\"></i>\n <p class=\"error-text\">{{ errorMessage }}</p>\n </div>\n }\n\n <!-- Folder list -->\n @if (!isLoading && !errorMessage) {\n <div class=\"folder-list\">\n @for (folder of folders; track folder.name) {\n <div\n class=\"folder-item\"\n (click)=\"onFolderClick(folder)\"\n [title]=\"folder.name\">\n <i class=\"fa-solid fa-folder folder-icon\"></i>\n <span class=\"folder-name\">{{ folder.name }}</span>\n </div>\n }\n <!-- Empty state -->\n @if (folders.length === 0) {\n <div class=\"tree-placeholder\">\n <i class=\"fa-solid fa-folder-open placeholder-icon\"></i>\n <p class=\"placeholder-text\">No folders in this location</p>\n @if (account) {\n <p class=\"placeholder-hint\">Account: {{ account.account.Name }}</p>\n }\n <p class=\"placeholder-hint\">Path: {{ currentPath }}</p>\n </div>\n }\n </div>\n }\n </div>\n</div>\n", styles: [".folder-tree {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n color: var(--mj-text-primary);\n}\n\n/* Navigation Bar */\n.navigation-bar {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n background-color: transparent;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n/* Back/Forward buttons */\n.nav-buttons {\n display: flex;\n gap: 3px;\n flex-shrink: 0;\n}\n\n.nav-button {\n width: 26px;\n height: 26px;\n min-width: 26px;\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--mj-radius-sm, 6px);\n border: 1px solid var(--mj-border-default);\n background-color: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.nav-button i {\n font-size: 10px;\n}\n\n.nav-button:hover:not([disabled]) {\n background-color: color-mix(in srgb, var(--mj-text-primary) 6%, var(--mj-bg-surface));\n color: var(--mj-text-primary);\n border-color: var(--mj-brand-primary);\n}\n\n.nav-button[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n background-color: transparent;\n border-color: transparent;\n}\n\n/* Breadcrumbs */\n.breadcrumbs {\n display: flex;\n align-items: center;\n gap: 2px;\n flex: 1;\n min-width: 0;\n overflow-x: auto;\n overflow-y: hidden;\n}\n\n.breadcrumb-item {\n flex-shrink: 0;\n height: 24px;\n padding: 0 8px;\n font-size: 0.76rem;\n font-weight: 500;\n color: var(--mj-text-secondary);\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n transition: all 0.12s ease;\n white-space: nowrap;\n}\n\n.breadcrumb-item:hover {\n background-color: color-mix(in srgb, var(--mj-text-primary) 6%, var(--mj-bg-surface));\n color: var(--mj-text-primary);\n}\n\n.breadcrumb-item.current {\n color: var(--mj-brand-primary);\n font-weight: 600;\n background-color: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.breadcrumb-separator {\n font-size: 8px;\n color: var(--mj-text-muted);\n flex-shrink: 0;\n}\n\n/* Tree content area */\n.tree-content {\n flex: 1;\n overflow-y: auto;\n padding: 6px 8px;\n}\n\n.tree-loading {\n padding: 24px;\n display: flex;\n justify-content: center;\n}\n\n/* Folder list */\n.folder-list {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.folder-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 7px 10px;\n border-radius: var(--mj-radius-sm, 6px);\n cursor: pointer;\n transition: all 0.12s ease;\n color: var(--mj-text-primary);\n}\n\n.folder-item:hover {\n background-color: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.folder-icon {\n font-size: 0.88rem;\n color: var(--mj-status-warning, #f59e0b);\n flex-shrink: 0;\n}\n\n.folder-item:hover .folder-icon {\n color: var(--mj-brand-primary);\n}\n\n.folder-name {\n font-size: 0.82rem;\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Error State */\n.tree-error {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 32px 16px;\n text-align: center;\n gap: 8px;\n}\n\n.error-icon {\n font-size: 1.5rem;\n color: var(--mj-status-error, #ef4444);\n}\n\n.error-text {\n margin: 0;\n font-size: 0.82rem;\n color: var(--mj-status-error, #ef4444);\n font-weight: 500;\n}\n\n/* Placeholder State */\n.tree-placeholder {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 32px 16px;\n text-align: center;\n gap: 6px;\n}\n\n.placeholder-icon {\n font-size: 2rem;\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n}\n\n.placeholder-text {\n margin: 0;\n font-size: 0.84rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.placeholder-hint {\n margin: 0;\n font-size: 0.74rem;\n color: var(--mj-text-muted);\n}\n"] }]
364
- }], () => [], { account: [{
468
+ }], () => [], { Account: [{
365
469
  type: Input
470
+ }], account: [{
471
+ type: Input
472
+ }], FolderSelected: [{
473
+ type: Output
366
474
  }], folderSelected: [{
367
475
  type: Output
368
476
  }] }); })();