@memberjunction/ng-file-storage 3.1.1 → 3.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.
- package/dist/lib/file-browser/file-browser-demo.component.d.ts +10 -0
- package/dist/lib/file-browser/file-browser-demo.component.d.ts.map +1 -0
- package/dist/lib/file-browser/file-browser-demo.component.js +39 -0
- package/dist/lib/file-browser/file-browser-demo.component.js.map +1 -0
- package/dist/lib/file-browser/file-browser-resource.component.d.ts +30 -0
- package/dist/lib/file-browser/file-browser-resource.component.d.ts.map +1 -0
- package/dist/lib/file-browser/file-browser-resource.component.js +82 -0
- package/dist/lib/file-browser/file-browser-resource.component.js.map +1 -0
- package/dist/lib/file-browser/file-browser.component.d.ts +69 -0
- package/dist/lib/file-browser/file-browser.component.d.ts.map +1 -0
- package/dist/lib/file-browser/file-browser.component.js +132 -0
- package/dist/lib/file-browser/file-browser.component.js.map +1 -0
- package/dist/lib/file-browser/file-grid.component.d.ts +429 -0
- package/dist/lib/file-browser/file-grid.component.d.ts.map +1 -0
- package/dist/lib/file-browser/file-grid.component.js +2394 -0
- package/dist/lib/file-browser/file-grid.component.js.map +1 -0
- package/dist/lib/file-browser/folder-tree.component.d.ts +115 -0
- package/dist/lib/file-browser/folder-tree.component.d.ts.map +1 -0
- package/dist/lib/file-browser/folder-tree.component.js +364 -0
- package/dist/lib/file-browser/folder-tree.component.js.map +1 -0
- package/dist/lib/file-browser/storage-providers-list.component.d.ts +59 -0
- package/dist/lib/file-browser/storage-providers-list.component.d.ts.map +1 -0
- package/dist/lib/file-browser/storage-providers-list.component.js +235 -0
- package/dist/lib/file-browser/storage-providers-list.component.js.map +1 -0
- package/dist/lib/file-upload/file-upload.d.ts +19 -19
- package/dist/lib/module.d.ts +25 -18
- package/dist/lib/module.d.ts.map +1 -1
- package/dist/lib/module.js +44 -4
- package/dist/lib/module.js.map +1 -1
- package/dist/public-api.d.ts +3 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +6 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +9 -8
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { EventEmitter, OnInit, ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { StorageAccountWithProvider } from '@memberjunction/core-entities';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Displays a list of organizational file storage accounts.
|
|
6
|
+
* In the enterprise model, accounts are configured by administrators
|
|
7
|
+
* and available to users based on permissions. Users no longer manage
|
|
8
|
+
* their own OAuth connections - credentials are handled at the org level.
|
|
9
|
+
*/
|
|
10
|
+
export declare class StorageProvidersListComponent implements OnInit {
|
|
11
|
+
private cdr;
|
|
12
|
+
/**
|
|
13
|
+
* Emits when an account is selected by the user, or null when no accounts are available.
|
|
14
|
+
* Emits the full account-with-provider object for downstream components to use.
|
|
15
|
+
*/
|
|
16
|
+
accountSelected: EventEmitter<StorageAccountWithProvider | null>;
|
|
17
|
+
/**
|
|
18
|
+
* All available storage accounts with their provider details.
|
|
19
|
+
*/
|
|
20
|
+
accounts: StorageAccountWithProvider[];
|
|
21
|
+
/**
|
|
22
|
+
* Currently selected account.
|
|
23
|
+
*/
|
|
24
|
+
selectedAccount: StorageAccountWithProvider | null;
|
|
25
|
+
/**
|
|
26
|
+
* Loading state indicator.
|
|
27
|
+
*/
|
|
28
|
+
isLoading: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Error message if loading fails.
|
|
31
|
+
*/
|
|
32
|
+
errorMessage: string | null;
|
|
33
|
+
constructor(cdr: ChangeDetectorRef);
|
|
34
|
+
ngOnInit(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Loads all available file storage accounts with their provider details.
|
|
37
|
+
* Uses FileStorageEngine for centralized, cached access.
|
|
38
|
+
*/
|
|
39
|
+
private loadAccounts;
|
|
40
|
+
/**
|
|
41
|
+
* Handles account selection by the user.
|
|
42
|
+
*/
|
|
43
|
+
selectAccount(accountWithProvider: StorageAccountWithProvider): void;
|
|
44
|
+
/**
|
|
45
|
+
* Checks if an account is currently selected.
|
|
46
|
+
*/
|
|
47
|
+
isSelected(accountWithProvider: StorageAccountWithProvider): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Gets the icon class for a provider based on its name.
|
|
50
|
+
*/
|
|
51
|
+
getProviderIcon(providerName: string): string;
|
|
52
|
+
/**
|
|
53
|
+
* Refreshes the accounts list by forcing a reload from the database.
|
|
54
|
+
*/
|
|
55
|
+
refresh(): void;
|
|
56
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StorageProvidersListComponent, never>;
|
|
57
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StorageProvidersListComponent, "mj-storage-providers-list", never, {}, { "accountSelected": "accountSelected"; }, never, never, false, never>;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=storage-providers-list.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-providers-list.component.d.ts","sourceRoot":"","sources":["../../../src/lib/file-browser/storage-providers-list.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAE,MAAM,EAAU,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAqB,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;;AAE9F;;;;;GAKG;AACH,qBAKa,6BAA8B,YAAW,MAAM;IA2B9C,OAAO,CAAC,GAAG;IA1BvB;;;OAGG;IACO,eAAe,kDAAyD;IAElF;;OAEG;IACI,QAAQ,EAAE,0BAA0B,EAAE,CAAM;IAEnD;;OAEG;IACI,eAAe,EAAE,0BAA0B,GAAG,IAAI,CAAQ;IAEjE;;OAEG;IACI,SAAS,EAAE,OAAO,CAAS;IAElC;;OAEG;IACI,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAEtB,GAAG,EAAE,iBAAiB;IAE1C,QAAQ,IAAI,IAAI;IAIhB;;;OAGG;YACW,YAAY;IAgC1B;;OAEG;IACI,aAAa,CAAC,mBAAmB,EAAE,0BAA0B,GAAG,IAAI;IAK3E;;OAEG;IACI,UAAU,CAAC,mBAAmB,EAAE,0BAA0B,GAAG,OAAO;IAI3E;;OAEG;IACI,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAsBpD;;OAEG;IACI,OAAO,IAAI,IAAI;yCAhHX,6BAA6B;2CAA7B,6BAA6B;CAmHzC"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { Component, EventEmitter, Output } from '@angular/core';
|
|
2
|
+
import { FileStorageEngine } from '@memberjunction/core-entities';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "@memberjunction/ng-shared-generic";
|
|
6
|
+
function StorageProvidersListComponent_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
7
|
+
i0.ɵɵelementStart(0, "div", 7);
|
|
8
|
+
i0.ɵɵelement(1, "mj-loading", 8);
|
|
9
|
+
i0.ɵɵelementEnd();
|
|
10
|
+
} }
|
|
11
|
+
function StorageProvidersListComponent_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
12
|
+
i0.ɵɵelementStart(0, "div", 9)(1, "div", 10);
|
|
13
|
+
i0.ɵɵelement(2, "i", 11);
|
|
14
|
+
i0.ɵɵelementEnd();
|
|
15
|
+
i0.ɵɵelementStart(3, "p", 12);
|
|
16
|
+
i0.ɵɵtext(4);
|
|
17
|
+
i0.ɵɵelementEnd()();
|
|
18
|
+
} if (rf & 2) {
|
|
19
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
20
|
+
i0.ɵɵadvance(4);
|
|
21
|
+
i0.ɵɵtextInterpolate(ctx_r0.errorMessage);
|
|
22
|
+
} }
|
|
23
|
+
function StorageProvidersListComponent_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
24
|
+
i0.ɵɵelementStart(0, "div", 13)(1, "div", 14);
|
|
25
|
+
i0.ɵɵelement(2, "i", 15);
|
|
26
|
+
i0.ɵɵelementEnd();
|
|
27
|
+
i0.ɵɵelementStart(3, "p", 16);
|
|
28
|
+
i0.ɵɵtext(4, "No storage accounts configured");
|
|
29
|
+
i0.ɵɵelementEnd();
|
|
30
|
+
i0.ɵɵelementStart(5, "p", 17);
|
|
31
|
+
i0.ɵɵtext(6, "Contact your administrator to set up file storage accounts");
|
|
32
|
+
i0.ɵɵelementEnd()();
|
|
33
|
+
} }
|
|
34
|
+
function StorageProvidersListComponent_div_7_div_1_span_9_Template(rf, ctx) { if (rf & 1) {
|
|
35
|
+
i0.ɵɵelementStart(0, "span", 29);
|
|
36
|
+
i0.ɵɵelement(1, "i", 30);
|
|
37
|
+
i0.ɵɵelementEnd();
|
|
38
|
+
} }
|
|
39
|
+
function StorageProvidersListComponent_div_7_div_1_span_10_Template(rf, ctx) { if (rf & 1) {
|
|
40
|
+
i0.ɵɵelementStart(0, "span", 31);
|
|
41
|
+
i0.ɵɵelement(1, "i", 32);
|
|
42
|
+
i0.ɵɵelementEnd();
|
|
43
|
+
} }
|
|
44
|
+
function StorageProvidersListComponent_div_7_div_1_span_11_Template(rf, ctx) { if (rf & 1) {
|
|
45
|
+
i0.ɵɵelementStart(0, "span", 33);
|
|
46
|
+
i0.ɵɵelement(1, "i", 34);
|
|
47
|
+
i0.ɵɵelementEnd();
|
|
48
|
+
} }
|
|
49
|
+
function StorageProvidersListComponent_div_7_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
50
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
51
|
+
i0.ɵɵelementStart(0, "div", 20);
|
|
52
|
+
i0.ɵɵlistener("click", function StorageProvidersListComponent_div_7_div_1_Template_div_click_0_listener() { const item_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.selectAccount(item_r3)); });
|
|
53
|
+
i0.ɵɵelementStart(1, "div", 21);
|
|
54
|
+
i0.ɵɵelement(2, "i");
|
|
55
|
+
i0.ɵɵelementEnd();
|
|
56
|
+
i0.ɵɵelementStart(3, "div", 22)(4, "div", 23);
|
|
57
|
+
i0.ɵɵtext(5);
|
|
58
|
+
i0.ɵɵelementEnd();
|
|
59
|
+
i0.ɵɵelementStart(6, "div", 24)(7, "span", 25);
|
|
60
|
+
i0.ɵɵtext(8);
|
|
61
|
+
i0.ɵɵelementEnd();
|
|
62
|
+
i0.ɵɵtemplate(9, StorageProvidersListComponent_div_7_div_1_span_9_Template, 2, 0, "span", 26)(10, StorageProvidersListComponent_div_7_div_1_span_10_Template, 2, 0, "span", 27)(11, StorageProvidersListComponent_div_7_div_1_span_11_Template, 2, 0, "span", 28);
|
|
63
|
+
i0.ɵɵelementEnd()()();
|
|
64
|
+
} if (rf & 2) {
|
|
65
|
+
const item_r3 = ctx.$implicit;
|
|
66
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
67
|
+
i0.ɵɵclassProp("selected", ctx_r0.isSelected(item_r3));
|
|
68
|
+
i0.ɵɵproperty("title", item_r3.account.Description || item_r3.account.Name);
|
|
69
|
+
i0.ɵɵadvance(2);
|
|
70
|
+
i0.ɵɵclassMap(ctx_r0.getProviderIcon(item_r3.provider.Name));
|
|
71
|
+
i0.ɵɵadvance(3);
|
|
72
|
+
i0.ɵɵtextInterpolate(item_r3.account.Name);
|
|
73
|
+
i0.ɵɵadvance(2);
|
|
74
|
+
i0.ɵɵproperty("title", item_r3.provider.Name);
|
|
75
|
+
i0.ɵɵadvance();
|
|
76
|
+
i0.ɵɵtextInterpolate1(" ", item_r3.provider.Name, " ");
|
|
77
|
+
i0.ɵɵadvance();
|
|
78
|
+
i0.ɵɵproperty("ngIf", item_r3.provider.SupportsSearch);
|
|
79
|
+
i0.ɵɵadvance();
|
|
80
|
+
i0.ɵɵproperty("ngIf", item_r3.account.CredentialID);
|
|
81
|
+
i0.ɵɵadvance();
|
|
82
|
+
i0.ɵɵproperty("ngIf", !item_r3.account.CredentialID);
|
|
83
|
+
} }
|
|
84
|
+
function StorageProvidersListComponent_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
85
|
+
i0.ɵɵelementStart(0, "div", 18);
|
|
86
|
+
i0.ɵɵtemplate(1, StorageProvidersListComponent_div_7_div_1_Template, 12, 11, "div", 19);
|
|
87
|
+
i0.ɵɵelementEnd();
|
|
88
|
+
} if (rf & 2) {
|
|
89
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
90
|
+
i0.ɵɵadvance();
|
|
91
|
+
i0.ɵɵproperty("ngForOf", ctx_r0.accounts);
|
|
92
|
+
} }
|
|
93
|
+
/**
|
|
94
|
+
* Displays a list of organizational file storage accounts.
|
|
95
|
+
* In the enterprise model, accounts are configured by administrators
|
|
96
|
+
* and available to users based on permissions. Users no longer manage
|
|
97
|
+
* their own OAuth connections - credentials are handled at the org level.
|
|
98
|
+
*/
|
|
99
|
+
export class StorageProvidersListComponent {
|
|
100
|
+
cdr;
|
|
101
|
+
/**
|
|
102
|
+
* Emits when an account is selected by the user, or null when no accounts are available.
|
|
103
|
+
* Emits the full account-with-provider object for downstream components to use.
|
|
104
|
+
*/
|
|
105
|
+
accountSelected = new EventEmitter();
|
|
106
|
+
/**
|
|
107
|
+
* All available storage accounts with their provider details.
|
|
108
|
+
*/
|
|
109
|
+
accounts = [];
|
|
110
|
+
/**
|
|
111
|
+
* Currently selected account.
|
|
112
|
+
*/
|
|
113
|
+
selectedAccount = null;
|
|
114
|
+
/**
|
|
115
|
+
* Loading state indicator.
|
|
116
|
+
*/
|
|
117
|
+
isLoading = false;
|
|
118
|
+
/**
|
|
119
|
+
* Error message if loading fails.
|
|
120
|
+
*/
|
|
121
|
+
errorMessage = null;
|
|
122
|
+
constructor(cdr) {
|
|
123
|
+
this.cdr = cdr;
|
|
124
|
+
}
|
|
125
|
+
ngOnInit() {
|
|
126
|
+
this.loadAccounts();
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Loads all available file storage accounts with their provider details.
|
|
130
|
+
* Uses FileStorageEngine for centralized, cached access.
|
|
131
|
+
*/
|
|
132
|
+
async loadAccounts() {
|
|
133
|
+
this.isLoading = true;
|
|
134
|
+
this.errorMessage = null;
|
|
135
|
+
try {
|
|
136
|
+
const engine = FileStorageEngine.Instance;
|
|
137
|
+
await engine.Config(false); // Use cached data if available
|
|
138
|
+
this.accounts = engine.AccountsWithProviders;
|
|
139
|
+
console.log('[StorageAccountsList] Loaded accounts:', this.accounts.map(a => ({
|
|
140
|
+
name: a.account.Name,
|
|
141
|
+
provider: a.provider.Name,
|
|
142
|
+
hasCredential: !!a.account.CredentialID
|
|
143
|
+
})));
|
|
144
|
+
// Auto-select first account if available
|
|
145
|
+
if (this.accounts.length > 0) {
|
|
146
|
+
this.selectAccount(this.accounts[0]);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
this.accountSelected.emit(null);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
this.errorMessage = error instanceof Error ? error.message : 'Failed to load storage accounts';
|
|
154
|
+
console.error('[StorageProvidersList] Error loading accounts:', error);
|
|
155
|
+
}
|
|
156
|
+
finally {
|
|
157
|
+
this.isLoading = false;
|
|
158
|
+
this.cdr.detectChanges();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Handles account selection by the user.
|
|
163
|
+
*/
|
|
164
|
+
selectAccount(accountWithProvider) {
|
|
165
|
+
this.selectedAccount = accountWithProvider;
|
|
166
|
+
this.accountSelected.emit(accountWithProvider);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Checks if an account is currently selected.
|
|
170
|
+
*/
|
|
171
|
+
isSelected(accountWithProvider) {
|
|
172
|
+
return this.selectedAccount?.account.ID === accountWithProvider.account.ID;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Gets the icon class for a provider based on its name.
|
|
176
|
+
*/
|
|
177
|
+
getProviderIcon(providerName) {
|
|
178
|
+
const name = providerName.toLowerCase();
|
|
179
|
+
if (name.includes('aws') || name.includes('s3')) {
|
|
180
|
+
return 'fa-brands fa-aws';
|
|
181
|
+
}
|
|
182
|
+
else if (name.includes('azure')) {
|
|
183
|
+
return 'fa-brands fa-microsoft';
|
|
184
|
+
}
|
|
185
|
+
else if (name.includes('google drive')) {
|
|
186
|
+
return 'fa-brands fa-google-drive';
|
|
187
|
+
}
|
|
188
|
+
else if (name.includes('google cloud')) {
|
|
189
|
+
return 'fa-brands fa-google';
|
|
190
|
+
}
|
|
191
|
+
else if (name.includes('dropbox')) {
|
|
192
|
+
return 'fa-brands fa-dropbox';
|
|
193
|
+
}
|
|
194
|
+
else if (name.includes('box')) {
|
|
195
|
+
return 'fa-solid fa-box';
|
|
196
|
+
}
|
|
197
|
+
else if (name.includes('sharepoint') || name.includes('onedrive')) {
|
|
198
|
+
return 'fa-brands fa-microsoft';
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
return 'fa-solid fa-cloud';
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Refreshes the accounts list by forcing a reload from the database.
|
|
206
|
+
*/
|
|
207
|
+
refresh() {
|
|
208
|
+
FileStorageEngine.Instance.Config(true).then(() => this.loadAccounts());
|
|
209
|
+
}
|
|
210
|
+
static ɵfac = function StorageProvidersListComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || StorageProvidersListComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
211
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: StorageProvidersListComponent, selectors: [["mj-storage-providers-list"]], outputs: { accountSelected: "accountSelected" }, decls: 8, vars: 4, consts: [[1, "providers-list"], [1, "providers-header"], [1, "header-title"], ["class", "loading-state", 4, "ngIf"], ["class", "error-state", 4, "ngIf"], ["class", "empty-state", 4, "ngIf"], ["class", "providers-container", 4, "ngIf"], [1, "loading-state"], ["text", "Loading accounts..."], [1, "error-state"], [1, "error-icon"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "error-message"], [1, "empty-state"], [1, "empty-icon"], [1, "fa-solid", "fa-folder-plus"], [1, "empty-message"], [1, "empty-hint"], [1, "providers-container"], ["class", "provider-item", 3, "selected", "title", "click", 4, "ngFor", "ngForOf"], [1, "provider-item", 3, "click", "title"], [1, "provider-icon"], [1, "provider-info"], [1, "provider-name"], [1, "provider-meta"], [1, "provider-type-badge", 3, "title"], ["class", "search-badge", "title", "Supports search", 4, "ngIf"], ["class", "credential-badge", "title", "Credentials configured", 4, "ngIf"], ["class", "unconfigured-badge", "title", "No credentials configured", 4, "ngIf"], ["title", "Supports search", 1, "search-badge"], [1, "fa-solid", "fa-magnifying-glass"], ["title", "Credentials configured", 1, "credential-badge"], [1, "fa-solid", "fa-key"], ["title", "No credentials configured", 1, "unconfigured-badge"], [1, "fa-solid", "fa-exclamation-triangle"]], template: function StorageProvidersListComponent_Template(rf, ctx) { if (rf & 1) {
|
|
212
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "span", 2);
|
|
213
|
+
i0.ɵɵtext(3, "Storage Accounts");
|
|
214
|
+
i0.ɵɵelementEnd()();
|
|
215
|
+
i0.ɵɵtemplate(4, StorageProvidersListComponent_div_4_Template, 2, 0, "div", 3)(5, StorageProvidersListComponent_div_5_Template, 5, 1, "div", 4)(6, StorageProvidersListComponent_div_6_Template, 7, 0, "div", 5)(7, StorageProvidersListComponent_div_7_Template, 2, 1, "div", 6);
|
|
216
|
+
i0.ɵɵelementEnd();
|
|
217
|
+
} if (rf & 2) {
|
|
218
|
+
i0.ɵɵadvance(4);
|
|
219
|
+
i0.ɵɵproperty("ngIf", ctx.isLoading);
|
|
220
|
+
i0.ɵɵadvance();
|
|
221
|
+
i0.ɵɵproperty("ngIf", ctx.errorMessage && !ctx.isLoading);
|
|
222
|
+
i0.ɵɵadvance();
|
|
223
|
+
i0.ɵɵproperty("ngIf", !ctx.isLoading && !ctx.errorMessage && ctx.accounts.length === 0);
|
|
224
|
+
i0.ɵɵadvance();
|
|
225
|
+
i0.ɵɵproperty("ngIf", !ctx.isLoading && !ctx.errorMessage && ctx.accounts.length > 0);
|
|
226
|
+
} }, dependencies: [i1.NgForOf, i1.NgIf, i2.LoadingComponent], styles: ["\n\n\n\n\n.providers-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n}\n\n\n\n.providers-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n border-bottom: 1px solid #e5e5e5;\n background-color: #fafafa;\n}\n\n.header-title[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: #1d1d1f;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.add-provider-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 50%;\n background-color: #007aff;\n color: white;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n font-size: 14px;\n}\n\n.add-provider-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: #0056b3;\n transform: scale(1.05);\n}\n\n.add-provider-btn[_ngcontent-%COMP%]:disabled {\n background-color: #ccc;\n cursor: not-allowed;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%], \n.error-state[_ngcontent-%COMP%], \n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 24px;\n text-align: center;\n color: #86868b;\n flex: 1;\n}\n\n.error-icon[_ngcontent-%COMP%], \n.empty-icon[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 12px;\n opacity: 0.7;\n}\n\n.error-icon[_ngcontent-%COMP%] {\n color: #f44336;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n color: #007aff;\n}\n\n.error-message[_ngcontent-%COMP%], \n.empty-message[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n margin: 0 0 4px 0;\n color: #1d1d1f;\n}\n\n.empty-hint[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #86868b;\n margin: 4px 0 0 0;\n max-width: 180px;\n line-height: 1.4;\n}\n\n\n\n.providers-container[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n\n\n.provider-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n transition: all 0.2s ease;\n border-bottom: 1px solid #f0f0f0;\n position: relative;\n}\n\n.provider-item[_ngcontent-%COMP%]:hover {\n background-color: #f5f5f7;\n}\n\n.provider-item.selected[_ngcontent-%COMP%] {\n background-color: #e8f4fd;\n border-left: 3px solid #007aff;\n}\n\n.provider-item.selected[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 3px;\n background-color: #007aff;\n}\n\n\n\n.provider-icon[_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n color: #424242;\n margin-right: 12px;\n}\n\n.provider-item.selected[_ngcontent-%COMP%] .provider-icon[_ngcontent-%COMP%] {\n color: #007aff;\n}\n\n\n\n.provider-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.provider-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: #1d1d1f;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.provider-item.selected[_ngcontent-%COMP%] .provider-name[_ngcontent-%COMP%] {\n color: #007aff;\n font-weight: 600;\n}\n\n.provider-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11px;\n color: #86868b;\n}\n\n\n\n.default-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n color: #f5a623;\n}\n\n.default-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n\n\n.provider-type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 6px;\n background-color: #f0f0f0;\n border-radius: 10px;\n font-size: 10px;\n color: #666;\n max-width: 100px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.provider-item.selected[_ngcontent-%COMP%] .provider-type-badge[_ngcontent-%COMP%] {\n background-color: rgba(0, 122, 255, 0.15);\n color: #007aff;\n}\n\n\n\n.search-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 6px;\n background-color: #f0f0f0;\n border-radius: 10px;\n font-size: 10px;\n color: #666;\n}\n\n.provider-item.selected[_ngcontent-%COMP%] .search-badge[_ngcontent-%COMP%] {\n background-color: rgba(0, 122, 255, 0.15);\n color: #007aff;\n}\n\n.search-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n\n\n.credential-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 6px;\n background-color: #e8f5e9;\n border-radius: 10px;\n font-size: 10px;\n color: #34c759;\n}\n\n.provider-item.selected[_ngcontent-%COMP%] .credential-badge[_ngcontent-%COMP%] {\n background-color: rgba(52, 199, 89, 0.15);\n color: #34c759;\n}\n\n.credential-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n\n\n.unconfigured-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n color: #ff9500;\n}\n\n.unconfigured-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n\n\n.oauth-connected-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 6px;\n background-color: #e8f5e9;\n border-radius: 10px;\n font-size: 10px;\n color: #34c759;\n}\n\n.oauth-connected-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n.oauth-disconnected-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 6px;\n background-color: #fff3e0;\n border-radius: 10px;\n font-size: 10px;\n color: #ff9500;\n}\n\n.oauth-disconnected-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n\n\n.provider-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-left: 8px;\n}\n\n.connect-btn[_ngcontent-%COMP%], \n.disconnect-btn[_ngcontent-%COMP%] {\n width: 26px;\n height: 26px;\n border: none;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n font-size: 12px;\n}\n\n.connect-btn[_ngcontent-%COMP%] {\n background-color: #e8f5e9;\n color: #34c759;\n}\n\n.connect-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: #c8e6c9;\n transform: scale(1.05);\n}\n\n.connect-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.disconnect-btn[_ngcontent-%COMP%] {\n background-color: transparent;\n color: #86868b;\n}\n\n.disconnect-btn[_ngcontent-%COMP%]:hover {\n background-color: #ffebee;\n color: #f44336;\n}\n\n\n\n.remove-provider-btn[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n border: none;\n border-radius: 50%;\n background-color: transparent;\n color: #999;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n font-size: 12px;\n opacity: 0;\n margin-left: 8px;\n}\n\n.provider-item[_ngcontent-%COMP%]:hover .remove-provider-btn[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.remove-provider-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: #ffebee;\n color: #f44336;\n}\n\n.remove-provider-btn[_ngcontent-%COMP%]:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n\n\n.providers-container[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n\n.providers-container[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.providers-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: #c7c7cc;\n border-radius: 3px;\n}\n\n.providers-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: #a0a0a5;\n}\n\n\n\n\n\n\n.add-provider-dialog[_ngcontent-%COMP%] {\n min-height: 150px;\n}\n\n.dialog-loading[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n}\n\n.dialog-empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 30px 20px;\n text-align: center;\n}\n\n.dialog-empty-icon[_ngcontent-%COMP%] {\n font-size: 40px;\n color: #34c759;\n margin-bottom: 12px;\n}\n\n.dialog-empty-message[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 500;\n color: #1d1d1f;\n margin: 0 0 4px 0;\n}\n\n.dialog-empty-hint[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #86868b;\n margin: 0;\n}\n\n.dialog-instruction[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #666;\n margin: 0 0 12px 0;\n padding: 0 4px;\n}\n\n.available-providers[_ngcontent-%COMP%] {\n max-height: 350px;\n overflow-y: auto;\n}\n\n.available-provider-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n margin-bottom: 8px;\n border: 1px solid #e5e5e5;\n}\n\n.available-provider-item[_ngcontent-%COMP%]:hover:not(.disabled) {\n background-color: #f5f5f7;\n border-color: #007aff;\n}\n\n.available-provider-item.disabled[_ngcontent-%COMP%] {\n opacity: 0.6;\n cursor: not-allowed;\n background-color: #f9f9f9;\n}\n\n.available-provider-item[_ngcontent-%COMP%] .provider-icon[_ngcontent-%COMP%] {\n margin-right: 12px;\n}\n\n.available-provider-item[_ngcontent-%COMP%] .provider-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.available-provider-item[_ngcontent-%COMP%] .provider-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: #1d1d1f;\n}\n\n.available-provider-item[_ngcontent-%COMP%] .provider-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #86868b;\n margin-top: 2px;\n line-height: 1.3;\n}\n\n.available-provider-item[_ngcontent-%COMP%] .provider-warning[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #ff9500;\n margin-top: 4px;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.available-provider-item[_ngcontent-%COMP%] .provider-warning[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n\n\n.available-provider-item[_ngcontent-%COMP%] .oauth-hint[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #007aff;\n margin-top: 4px;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.available-provider-item[_ngcontent-%COMP%] .oauth-hint[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.available-provider-item.oauth-provider[_ngcontent-%COMP%] {\n border-color: #007aff;\n border-style: dashed;\n}\n\n.available-provider-item.oauth-provider[_ngcontent-%COMP%]:hover:not(.disabled) {\n background-color: #e8f4fd;\n border-style: solid;\n}\n\n.add-indicator[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #007aff;\n font-size: 14px;\n}\n\n\n\n@media screen and (max-width: 768px) {\n .providers-header[_ngcontent-%COMP%] {\n padding: 10px 12px;\n }\n\n .header-title[_ngcontent-%COMP%] {\n font-size: 12px;\n }\n\n .add-provider-btn[_ngcontent-%COMP%] {\n width: 26px;\n height: 26px;\n font-size: 12px;\n }\n\n .provider-item[_ngcontent-%COMP%] {\n padding: 10px 12px;\n }\n\n .provider-icon[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n font-size: 18px;\n margin-right: 10px;\n }\n\n .provider-name[_ngcontent-%COMP%] {\n font-size: 12px;\n }\n\n .provider-status[_ngcontent-%COMP%] {\n font-size: 10px;\n }\n\n .remove-provider-btn[_ngcontent-%COMP%] {\n width: 22px;\n height: 22px;\n font-size: 11px;\n opacity: 1;\n }\n}"] });
|
|
227
|
+
}
|
|
228
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StorageProvidersListComponent, [{
|
|
229
|
+
type: Component,
|
|
230
|
+
args: [{ selector: 'mj-storage-providers-list', template: "<div class=\"providers-list\">\n <!-- Header -->\n <div class=\"providers-header\">\n <span class=\"header-title\">Storage Accounts</span>\n </div>\n\n <!-- Loading State -->\n <div *ngIf=\"isLoading\" class=\"loading-state\">\n <mj-loading text=\"Loading accounts...\"></mj-loading>\n </div>\n\n <!-- Error State -->\n <div *ngIf=\"errorMessage && !isLoading\" class=\"error-state\">\n <div class=\"error-icon\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n </div>\n <p class=\"error-message\">{{ errorMessage }}</p>\n </div>\n\n <!-- Empty State -->\n <div *ngIf=\"!isLoading && !errorMessage && accounts.length === 0\" class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-folder-plus\"></i>\n </div>\n <p class=\"empty-message\">No storage accounts configured</p>\n <p class=\"empty-hint\">Contact your administrator to set up file storage accounts</p>\n </div>\n\n <!-- Account List -->\n <div *ngIf=\"!isLoading && !errorMessage && accounts.length > 0\" class=\"providers-container\">\n <div\n *ngFor=\"let item of accounts\"\n class=\"provider-item\"\n [class.selected]=\"isSelected(item)\"\n (click)=\"selectAccount(item)\"\n [title]=\"item.account.Description || item.account.Name\"\n >\n <div class=\"provider-icon\">\n <i [class]=\"getProviderIcon(item.provider.Name)\"></i>\n </div>\n <div class=\"provider-info\">\n <div class=\"provider-name\">{{ item.account.Name }}</div>\n <div class=\"provider-meta\">\n <!-- Provider type badge -->\n <span class=\"provider-type-badge\" [title]=\"item.provider.Name\">\n {{ item.provider.Name }}\n </span>\n <!-- Search support badge -->\n <span class=\"search-badge\" *ngIf=\"item.provider.SupportsSearch\" title=\"Supports search\">\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n </span>\n <!-- Credential configured badge -->\n <span class=\"credential-badge\" *ngIf=\"item.account.CredentialID\" title=\"Credentials configured\">\n <i class=\"fa-solid fa-key\"></i>\n </span>\n <!-- No credential warning -->\n <span class=\"unconfigured-badge\" *ngIf=\"!item.account.CredentialID\" title=\"No credentials configured\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n </span>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["/* ===========================\n Storage Providers List\n =========================== */\n\n.providers-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n}\n\n/* Header with Add Button */\n.providers-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n border-bottom: 1px solid #e5e5e5;\n background-color: #fafafa;\n}\n\n.header-title {\n font-size: 13px;\n font-weight: 600;\n color: #1d1d1f;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.add-provider-btn {\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 50%;\n background-color: #007aff;\n color: white;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n font-size: 14px;\n}\n\n.add-provider-btn:hover:not(:disabled) {\n background-color: #0056b3;\n transform: scale(1.05);\n}\n\n.add-provider-btn:disabled {\n background-color: #ccc;\n cursor: not-allowed;\n}\n\n/* Loading, Error, and Empty States */\n.loading-state,\n.error-state,\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 24px;\n text-align: center;\n color: #86868b;\n flex: 1;\n}\n\n.error-icon,\n.empty-icon {\n font-size: 32px;\n margin-bottom: 12px;\n opacity: 0.7;\n}\n\n.error-icon {\n color: #f44336;\n}\n\n.empty-icon {\n color: #007aff;\n}\n\n.error-message,\n.empty-message {\n font-size: 14px;\n font-weight: 500;\n margin: 0 0 4px 0;\n color: #1d1d1f;\n}\n\n.empty-hint {\n font-size: 12px;\n color: #86868b;\n margin: 4px 0 0 0;\n max-width: 180px;\n line-height: 1.4;\n}\n\n/* Provider List Container */\n.providers-container {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n/* Individual Provider Item */\n.provider-item {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n transition: all 0.2s ease;\n border-bottom: 1px solid #f0f0f0;\n position: relative;\n}\n\n.provider-item:hover {\n background-color: #f5f5f7;\n}\n\n.provider-item.selected {\n background-color: #e8f4fd;\n border-left: 3px solid #007aff;\n}\n\n.provider-item.selected::before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 3px;\n background-color: #007aff;\n}\n\n/* Provider Icon */\n.provider-icon {\n flex-shrink: 0;\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n color: #424242;\n margin-right: 12px;\n}\n\n.provider-item.selected .provider-icon {\n color: #007aff;\n}\n\n/* Provider Info */\n.provider-info {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.provider-name {\n font-size: 13px;\n font-weight: 500;\n color: #1d1d1f;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.provider-item.selected .provider-name {\n color: #007aff;\n font-weight: 600;\n}\n\n.provider-meta {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11px;\n color: #86868b;\n}\n\n/* Default Badge */\n.default-badge {\n display: inline-flex;\n align-items: center;\n color: #f5a623;\n}\n\n.default-badge i {\n font-size: 10px;\n}\n\n/* Provider Type Badge */\n.provider-type-badge {\n display: inline-flex;\n align-items: center;\n padding: 2px 6px;\n background-color: #f0f0f0;\n border-radius: 10px;\n font-size: 10px;\n color: #666;\n max-width: 100px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.provider-item.selected .provider-type-badge {\n background-color: rgba(0, 122, 255, 0.15);\n color: #007aff;\n}\n\n/* Search Badge */\n.search-badge {\n display: inline-flex;\n align-items: center;\n padding: 2px 6px;\n background-color: #f0f0f0;\n border-radius: 10px;\n font-size: 10px;\n color: #666;\n}\n\n.provider-item.selected .search-badge {\n background-color: rgba(0, 122, 255, 0.15);\n color: #007aff;\n}\n\n.search-badge i {\n font-size: 9px;\n}\n\n/* Credential Badge */\n.credential-badge {\n display: inline-flex;\n align-items: center;\n padding: 2px 6px;\n background-color: #e8f5e9;\n border-radius: 10px;\n font-size: 10px;\n color: #34c759;\n}\n\n.provider-item.selected .credential-badge {\n background-color: rgba(52, 199, 89, 0.15);\n color: #34c759;\n}\n\n.credential-badge i {\n font-size: 9px;\n}\n\n/* Unconfigured Badge */\n.unconfigured-badge {\n display: inline-flex;\n align-items: center;\n color: #ff9500;\n}\n\n.unconfigured-badge i {\n font-size: 10px;\n}\n\n/* OAuth Status Badges */\n.oauth-connected-badge {\n display: inline-flex;\n align-items: center;\n padding: 2px 6px;\n background-color: #e8f5e9;\n border-radius: 10px;\n font-size: 10px;\n color: #34c759;\n}\n\n.oauth-connected-badge i {\n font-size: 9px;\n}\n\n.oauth-disconnected-badge {\n display: inline-flex;\n align-items: center;\n padding: 2px 6px;\n background-color: #fff3e0;\n border-radius: 10px;\n font-size: 10px;\n color: #ff9500;\n}\n\n.oauth-disconnected-badge i {\n font-size: 9px;\n}\n\n/* Provider Actions (OAuth connect/disconnect buttons) */\n.provider-actions {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-left: 8px;\n}\n\n.connect-btn,\n.disconnect-btn {\n width: 26px;\n height: 26px;\n border: none;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n font-size: 12px;\n}\n\n.connect-btn {\n background-color: #e8f5e9;\n color: #34c759;\n}\n\n.connect-btn:hover:not(:disabled) {\n background-color: #c8e6c9;\n transform: scale(1.05);\n}\n\n.connect-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.disconnect-btn {\n background-color: transparent;\n color: #86868b;\n}\n\n.disconnect-btn:hover {\n background-color: #ffebee;\n color: #f44336;\n}\n\n/* Remove Provider Button */\n.remove-provider-btn {\n width: 24px;\n height: 24px;\n border: none;\n border-radius: 50%;\n background-color: transparent;\n color: #999;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n font-size: 12px;\n opacity: 0;\n margin-left: 8px;\n}\n\n.provider-item:hover .remove-provider-btn {\n opacity: 1;\n}\n\n.remove-provider-btn:hover:not(:disabled) {\n background-color: #ffebee;\n color: #f44336;\n}\n\n.remove-provider-btn:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/* Scrollbar Styling */\n.providers-container::-webkit-scrollbar {\n width: 6px;\n}\n\n.providers-container::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.providers-container::-webkit-scrollbar-thumb {\n background: #c7c7cc;\n border-radius: 3px;\n}\n\n.providers-container::-webkit-scrollbar-thumb:hover {\n background: #a0a0a5;\n}\n\n/* ===========================\n Add Provider Dialog\n =========================== */\n\n.add-provider-dialog {\n min-height: 150px;\n}\n\n.dialog-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n}\n\n.dialog-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 30px 20px;\n text-align: center;\n}\n\n.dialog-empty-icon {\n font-size: 40px;\n color: #34c759;\n margin-bottom: 12px;\n}\n\n.dialog-empty-message {\n font-size: 16px;\n font-weight: 500;\n color: #1d1d1f;\n margin: 0 0 4px 0;\n}\n\n.dialog-empty-hint {\n font-size: 13px;\n color: #86868b;\n margin: 0;\n}\n\n.dialog-instruction {\n font-size: 13px;\n color: #666;\n margin: 0 0 12px 0;\n padding: 0 4px;\n}\n\n.available-providers {\n max-height: 350px;\n overflow-y: auto;\n}\n\n.available-provider-item {\n display: flex;\n align-items: center;\n padding: 12px;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n margin-bottom: 8px;\n border: 1px solid #e5e5e5;\n}\n\n.available-provider-item:hover:not(.disabled) {\n background-color: #f5f5f7;\n border-color: #007aff;\n}\n\n.available-provider-item.disabled {\n opacity: 0.6;\n cursor: not-allowed;\n background-color: #f9f9f9;\n}\n\n.available-provider-item .provider-icon {\n margin-right: 12px;\n}\n\n.available-provider-item .provider-info {\n flex: 1;\n}\n\n.available-provider-item .provider-name {\n font-size: 14px;\n font-weight: 500;\n color: #1d1d1f;\n}\n\n.available-provider-item .provider-description {\n font-size: 12px;\n color: #86868b;\n margin-top: 2px;\n line-height: 1.3;\n}\n\n.available-provider-item .provider-warning {\n font-size: 11px;\n color: #ff9500;\n margin-top: 4px;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.available-provider-item .provider-warning i {\n font-size: 10px;\n}\n\n/* OAuth hint in add provider dialog */\n.available-provider-item .oauth-hint {\n font-size: 11px;\n color: #007aff;\n margin-top: 4px;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.available-provider-item .oauth-hint i {\n font-size: 10px;\n}\n\n.available-provider-item.oauth-provider {\n border-color: #007aff;\n border-style: dashed;\n}\n\n.available-provider-item.oauth-provider:hover:not(.disabled) {\n background-color: #e8f4fd;\n border-style: solid;\n}\n\n.add-indicator {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #007aff;\n font-size: 14px;\n}\n\n/* Responsive Adjustments */\n@media screen and (max-width: 768px) {\n .providers-header {\n padding: 10px 12px;\n }\n\n .header-title {\n font-size: 12px;\n }\n\n .add-provider-btn {\n width: 26px;\n height: 26px;\n font-size: 12px;\n }\n\n .provider-item {\n padding: 10px 12px;\n }\n\n .provider-icon {\n width: 28px;\n height: 28px;\n font-size: 18px;\n margin-right: 10px;\n }\n\n .provider-name {\n font-size: 12px;\n }\n\n .provider-status {\n font-size: 10px;\n }\n\n .remove-provider-btn {\n width: 22px;\n height: 22px;\n font-size: 11px;\n opacity: 1;\n }\n}\n"] }]
|
|
231
|
+
}], () => [{ type: i0.ChangeDetectorRef }], { accountSelected: [{
|
|
232
|
+
type: Output
|
|
233
|
+
}] }); })();
|
|
234
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(StorageProvidersListComponent, { className: "StorageProvidersListComponent", filePath: "src/lib/file-browser/storage-providers-list.component.ts", lineNumber: 15 }); })();
|
|
235
|
+
//# sourceMappingURL=storage-providers-list.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-providers-list.component.js","sourceRoot":"","sources":["../../../src/lib/file-browser/storage-providers-list.component.ts","../../../src/lib/file-browser/storage-providers-list.component.html"],"names":[],"mappings":"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"}
|
|
@@ -55,77 +55,77 @@ declare const FileUploadMutationSchema: z.ZodObject<{
|
|
|
55
55
|
Provider: z.ZodString;
|
|
56
56
|
}, "__mj_CreatedAt" | "__mj_UpdatedAt">, z.ZodTypeAny, "passthrough">>;
|
|
57
57
|
}, "strip", z.ZodTypeAny, {
|
|
58
|
-
NameExists: boolean;
|
|
59
|
-
UploadUrl: string;
|
|
60
58
|
File: {
|
|
59
|
+
Category: string | null;
|
|
61
60
|
ID: string;
|
|
62
61
|
Name: string;
|
|
63
62
|
Description: string | null;
|
|
63
|
+
Status: string;
|
|
64
64
|
CategoryID: string | null;
|
|
65
|
-
ProviderID: string;
|
|
66
65
|
ContentType: string | null;
|
|
66
|
+
ProviderID: string;
|
|
67
67
|
ProviderKey: string | null;
|
|
68
|
-
Status: string;
|
|
69
|
-
Category: string | null;
|
|
70
68
|
Provider: string;
|
|
71
69
|
} & {
|
|
72
70
|
[k: string]: unknown;
|
|
73
71
|
};
|
|
74
|
-
}, {
|
|
75
72
|
NameExists: boolean;
|
|
76
73
|
UploadUrl: string;
|
|
74
|
+
}, {
|
|
77
75
|
File: {
|
|
76
|
+
Category: string | null;
|
|
78
77
|
ID: string;
|
|
79
78
|
Name: string;
|
|
80
79
|
Description: string | null;
|
|
80
|
+
Status: string;
|
|
81
81
|
CategoryID: string | null;
|
|
82
|
-
ProviderID: string;
|
|
83
82
|
ContentType: string | null;
|
|
83
|
+
ProviderID: string;
|
|
84
84
|
ProviderKey: string | null;
|
|
85
|
-
Status: string;
|
|
86
|
-
Category: string | null;
|
|
87
85
|
Provider: string;
|
|
88
86
|
} & {
|
|
89
87
|
[k: string]: unknown;
|
|
90
88
|
};
|
|
89
|
+
NameExists: boolean;
|
|
90
|
+
UploadUrl: string;
|
|
91
91
|
}>;
|
|
92
92
|
}, "strip", z.ZodTypeAny, {
|
|
93
93
|
CreateMJFile: {
|
|
94
|
-
NameExists: boolean;
|
|
95
|
-
UploadUrl: string;
|
|
96
94
|
File: {
|
|
95
|
+
Category: string | null;
|
|
97
96
|
ID: string;
|
|
98
97
|
Name: string;
|
|
99
98
|
Description: string | null;
|
|
99
|
+
Status: string;
|
|
100
100
|
CategoryID: string | null;
|
|
101
|
-
ProviderID: string;
|
|
102
101
|
ContentType: string | null;
|
|
102
|
+
ProviderID: string;
|
|
103
103
|
ProviderKey: string | null;
|
|
104
|
-
Status: string;
|
|
105
|
-
Category: string | null;
|
|
106
104
|
Provider: string;
|
|
107
105
|
} & {
|
|
108
106
|
[k: string]: unknown;
|
|
109
107
|
};
|
|
108
|
+
NameExists: boolean;
|
|
109
|
+
UploadUrl: string;
|
|
110
110
|
};
|
|
111
111
|
}, {
|
|
112
112
|
CreateMJFile: {
|
|
113
|
-
NameExists: boolean;
|
|
114
|
-
UploadUrl: string;
|
|
115
113
|
File: {
|
|
114
|
+
Category: string | null;
|
|
116
115
|
ID: string;
|
|
117
116
|
Name: string;
|
|
118
117
|
Description: string | null;
|
|
118
|
+
Status: string;
|
|
119
119
|
CategoryID: string | null;
|
|
120
|
-
ProviderID: string;
|
|
121
120
|
ContentType: string | null;
|
|
121
|
+
ProviderID: string;
|
|
122
122
|
ProviderKey: string | null;
|
|
123
|
-
Status: string;
|
|
124
|
-
Category: string | null;
|
|
125
123
|
Provider: string;
|
|
126
124
|
} & {
|
|
127
125
|
[k: string]: unknown;
|
|
128
126
|
};
|
|
127
|
+
NameExists: boolean;
|
|
128
|
+
UploadUrl: string;
|
|
129
129
|
};
|
|
130
130
|
}>;
|
|
131
131
|
type ApiFile = z.infer<typeof FileUploadMutationSchema>['CreateMJFile']['File'];
|
package/dist/lib/module.d.ts
CHANGED
|
@@ -2,26 +2,33 @@ import * as i0 from "@angular/core";
|
|
|
2
2
|
import * as i1 from "./category-tree/category-tree";
|
|
3
3
|
import * as i2 from "./files-grid/files-grid";
|
|
4
4
|
import * as i3 from "./file-upload/file-upload";
|
|
5
|
-
import * as i4 from "
|
|
6
|
-
import * as i5 from "
|
|
7
|
-
import * as i6 from "
|
|
8
|
-
import * as i7 from "
|
|
9
|
-
import * as i8 from "
|
|
10
|
-
import * as i9 from "
|
|
11
|
-
import * as i10 from "@
|
|
12
|
-
import * as i11 from "@progress/kendo-angular-
|
|
13
|
-
import * as i12 from "@
|
|
14
|
-
import * as i13 from "@progress/kendo-angular-
|
|
15
|
-
import * as i14 from "@progress/kendo-angular-
|
|
16
|
-
import * as i15 from "@
|
|
17
|
-
import * as i16 from "@
|
|
18
|
-
import * as i17 from "@
|
|
19
|
-
import * as i18 from "@progress/kendo-angular-
|
|
20
|
-
import * as i19 from "@progress/kendo-angular-
|
|
21
|
-
import * as i20 from "@progress/kendo-angular-
|
|
5
|
+
import * as i4 from "./file-browser/file-browser.component";
|
|
6
|
+
import * as i5 from "./file-browser/file-browser-demo.component";
|
|
7
|
+
import * as i6 from "./file-browser/file-browser-resource.component";
|
|
8
|
+
import * as i7 from "./file-browser/storage-providers-list.component";
|
|
9
|
+
import * as i8 from "./file-browser/folder-tree.component";
|
|
10
|
+
import * as i9 from "./file-browser/file-grid.component";
|
|
11
|
+
import * as i10 from "@angular/common";
|
|
12
|
+
import * as i11 from "@progress/kendo-angular-treeview";
|
|
13
|
+
import * as i12 from "@angular/forms";
|
|
14
|
+
import * as i13 from "@progress/kendo-angular-dialog";
|
|
15
|
+
import * as i14 from "@progress/kendo-angular-excel-export";
|
|
16
|
+
import * as i15 from "@memberjunction/ng-compare-records";
|
|
17
|
+
import * as i16 from "@memberjunction/ng-container-directives";
|
|
18
|
+
import * as i17 from "@memberjunction/ng-shared-generic";
|
|
19
|
+
import * as i18 from "@progress/kendo-angular-buttons";
|
|
20
|
+
import * as i19 from "@progress/kendo-angular-label";
|
|
21
|
+
import * as i20 from "@progress/kendo-angular-grid";
|
|
22
|
+
import * as i21 from "@progress/kendo-angular-dropdowns";
|
|
23
|
+
import * as i22 from "@angular/platform-browser";
|
|
24
|
+
import * as i23 from "@angular/platform-browser/animations";
|
|
25
|
+
import * as i24 from "@progress/kendo-angular-inputs";
|
|
26
|
+
import * as i25 from "@progress/kendo-angular-upload";
|
|
27
|
+
import * as i26 from "@progress/kendo-angular-menu";
|
|
28
|
+
import * as i27 from "@progress/kendo-angular-indicators";
|
|
22
29
|
export declare class FileStorageModule {
|
|
23
30
|
static ɵfac: i0.ɵɵFactoryDeclaration<FileStorageModule, never>;
|
|
24
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<FileStorageModule, [typeof i1.CategoryTreeComponent, typeof i2.FilesGridComponent, typeof i3.FileUploadComponent], [typeof
|
|
31
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<FileStorageModule, [typeof i1.CategoryTreeComponent, typeof i2.FilesGridComponent, typeof i3.FileUploadComponent, typeof i4.FileBrowserComponent, typeof i5.FileBrowserDemoComponent, typeof i6.FileBrowserResource, typeof i7.StorageProvidersListComponent, typeof i8.FolderTreeComponent, typeof i9.FileGridComponent], [typeof i10.CommonModule, typeof i11.TreeViewModule, typeof i12.FormsModule, typeof i13.DialogsModule, typeof i14.ExcelExportModule, typeof i15.CompareRecordsModule, typeof i16.ContainerDirectivesModule, typeof i17.SharedGenericModule, typeof i18.ButtonsModule, typeof i19.LabelModule, typeof i20.GridModule, typeof i21.DropDownsModule, typeof i22.BrowserModule, typeof i23.BrowserAnimationsModule, typeof i24.InputsModule, typeof i25.UploadsModule, typeof i26.MenusModule, typeof i27.IndicatorsModule], [typeof i1.CategoryTreeComponent, typeof i2.FilesGridComponent, typeof i3.FileUploadComponent, typeof i4.FileBrowserComponent, typeof i5.FileBrowserDemoComponent, typeof i6.FileBrowserResource]>;
|
|
25
32
|
static ɵinj: i0.ɵɵInjectorDeclaration<FileStorageModule>;
|
|
26
33
|
}
|
|
27
34
|
//# sourceMappingURL=module.d.ts.map
|
package/dist/lib/module.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/lib/module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/lib/module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,qBAyCa,iBAAiB;yCAAjB,iBAAiB;0CAAjB,iBAAiB;0CAAjB,iBAAiB;CAAG"}
|
package/dist/lib/module.js
CHANGED
|
@@ -15,11 +15,18 @@ import { TreeViewModule } from '@progress/kendo-angular-treeview';
|
|
|
15
15
|
import { FormsModule } from '@angular/forms';
|
|
16
16
|
import { CompareRecordsModule } from '@memberjunction/ng-compare-records';
|
|
17
17
|
import { ContainerDirectivesModule } from '@memberjunction/ng-container-directives';
|
|
18
|
+
import { SharedGenericModule } from '@memberjunction/ng-shared-generic';
|
|
18
19
|
import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
|
|
19
20
|
import { UploadsModule } from '@progress/kendo-angular-upload';
|
|
20
21
|
import { CategoryTreeComponent } from './category-tree/category-tree';
|
|
21
22
|
import { FileUploadComponent } from './file-upload/file-upload';
|
|
22
23
|
import { FilesGridComponent } from './files-grid/files-grid';
|
|
24
|
+
import { FileBrowserComponent } from './file-browser/file-browser.component';
|
|
25
|
+
import { FileBrowserDemoComponent } from './file-browser/file-browser-demo.component';
|
|
26
|
+
import { FileBrowserResource } from './file-browser/file-browser-resource.component';
|
|
27
|
+
import { StorageProvidersListComponent } from './file-browser/storage-providers-list.component';
|
|
28
|
+
import { FolderTreeComponent } from './file-browser/folder-tree.component';
|
|
29
|
+
import { FileGridComponent } from './file-browser/file-grid.component';
|
|
23
30
|
import * as i0 from "@angular/core";
|
|
24
31
|
export class FileStorageModule {
|
|
25
32
|
static ɵfac = function FileStorageModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FileStorageModule)(); };
|
|
@@ -31,6 +38,7 @@ export class FileStorageModule {
|
|
|
31
38
|
ExcelExportModule,
|
|
32
39
|
CompareRecordsModule,
|
|
33
40
|
ContainerDirectivesModule,
|
|
41
|
+
SharedGenericModule,
|
|
34
42
|
ButtonsModule,
|
|
35
43
|
LabelModule,
|
|
36
44
|
GridModule,
|
|
@@ -45,7 +53,17 @@ export class FileStorageModule {
|
|
|
45
53
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FileStorageModule, [{
|
|
46
54
|
type: NgModule,
|
|
47
55
|
args: [{
|
|
48
|
-
declarations: [
|
|
56
|
+
declarations: [
|
|
57
|
+
CategoryTreeComponent,
|
|
58
|
+
FilesGridComponent,
|
|
59
|
+
FileUploadComponent,
|
|
60
|
+
FileBrowserComponent,
|
|
61
|
+
FileBrowserDemoComponent,
|
|
62
|
+
FileBrowserResource,
|
|
63
|
+
StorageProvidersListComponent,
|
|
64
|
+
FolderTreeComponent,
|
|
65
|
+
FileGridComponent
|
|
66
|
+
],
|
|
49
67
|
imports: [
|
|
50
68
|
CommonModule,
|
|
51
69
|
TreeViewModule,
|
|
@@ -54,6 +72,7 @@ export class FileStorageModule {
|
|
|
54
72
|
ExcelExportModule,
|
|
55
73
|
CompareRecordsModule,
|
|
56
74
|
ContainerDirectivesModule,
|
|
75
|
+
SharedGenericModule,
|
|
57
76
|
ButtonsModule,
|
|
58
77
|
LabelModule,
|
|
59
78
|
GridModule,
|
|
@@ -65,16 +84,32 @@ export class FileStorageModule {
|
|
|
65
84
|
MenusModule,
|
|
66
85
|
IndicatorsModule,
|
|
67
86
|
],
|
|
68
|
-
exports: [
|
|
87
|
+
exports: [
|
|
88
|
+
CategoryTreeComponent,
|
|
89
|
+
FilesGridComponent,
|
|
90
|
+
FileUploadComponent,
|
|
91
|
+
FileBrowserComponent,
|
|
92
|
+
FileBrowserDemoComponent,
|
|
93
|
+
FileBrowserResource
|
|
94
|
+
],
|
|
69
95
|
}]
|
|
70
96
|
}], null, null); })();
|
|
71
|
-
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(FileStorageModule, { declarations: [CategoryTreeComponent,
|
|
97
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(FileStorageModule, { declarations: [CategoryTreeComponent,
|
|
98
|
+
FilesGridComponent,
|
|
99
|
+
FileUploadComponent,
|
|
100
|
+
FileBrowserComponent,
|
|
101
|
+
FileBrowserDemoComponent,
|
|
102
|
+
FileBrowserResource,
|
|
103
|
+
StorageProvidersListComponent,
|
|
104
|
+
FolderTreeComponent,
|
|
105
|
+
FileGridComponent], imports: [CommonModule,
|
|
72
106
|
TreeViewModule,
|
|
73
107
|
FormsModule,
|
|
74
108
|
DialogsModule,
|
|
75
109
|
ExcelExportModule,
|
|
76
110
|
CompareRecordsModule,
|
|
77
111
|
ContainerDirectivesModule,
|
|
112
|
+
SharedGenericModule,
|
|
78
113
|
ButtonsModule,
|
|
79
114
|
LabelModule,
|
|
80
115
|
GridModule,
|
|
@@ -84,5 +119,10 @@ export class FileStorageModule {
|
|
|
84
119
|
InputsModule,
|
|
85
120
|
UploadsModule,
|
|
86
121
|
MenusModule,
|
|
87
|
-
IndicatorsModule], exports: [CategoryTreeComponent,
|
|
122
|
+
IndicatorsModule], exports: [CategoryTreeComponent,
|
|
123
|
+
FilesGridComponent,
|
|
124
|
+
FileUploadComponent,
|
|
125
|
+
FileBrowserComponent,
|
|
126
|
+
FileBrowserDemoComponent,
|
|
127
|
+
FileBrowserResource] }); })();
|
|
88
128
|
//# sourceMappingURL=module.js.map
|
package/dist/lib/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/lib/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,2BAA2B;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;;
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/lib/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,2BAA2B;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AACrF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AAChG,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;;AA2CvE,MAAM,OAAO,iBAAiB;2GAAjB,iBAAiB;4DAAjB,iBAAiB;gEA5B1B,YAAY;YACZ,cAAc;YACd,WAAW;YACX,aAAa;YACb,iBAAiB;YACjB,oBAAoB;YACpB,yBAAyB;YACzB,mBAAmB;YACnB,aAAa;YACb,WAAW;YACX,UAAU;YACV,eAAe;YACf,aAAa;YACb,uBAAuB;YACvB,YAAY;YACZ,aAAa;YACb,WAAW;YACX,gBAAgB;;iFAWP,iBAAiB;cAzC7B,QAAQ;eAAC;gBACR,YAAY,EAAE;oBACZ,qBAAqB;oBACrB,kBAAkB;oBAClB,mBAAmB;oBACnB,oBAAoB;oBACpB,wBAAwB;oBACxB,mBAAmB;oBACnB,6BAA6B;oBAC7B,mBAAmB;oBACnB,iBAAiB;iBAClB;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,cAAc;oBACd,WAAW;oBACX,aAAa;oBACb,iBAAiB;oBACjB,oBAAoB;oBACpB,yBAAyB;oBACzB,mBAAmB;oBACnB,aAAa;oBACb,WAAW;oBACX,UAAU;oBACV,eAAe;oBACf,aAAa;oBACb,uBAAuB;oBACvB,YAAY;oBACZ,aAAa;oBACb,WAAW;oBACX,gBAAgB;iBACjB;gBACD,OAAO,EAAE;oBACP,qBAAqB;oBACrB,kBAAkB;oBAClB,mBAAmB;oBACnB,oBAAoB;oBACpB,wBAAwB;oBACxB,mBAAmB;iBACpB;aACF;;wFACY,iBAAiB,mBAvC1B,qBAAqB;QACrB,kBAAkB;QAClB,mBAAmB;QACnB,oBAAoB;QACpB,wBAAwB;QACxB,mBAAmB;QACnB,6BAA6B;QAC7B,mBAAmB;QACnB,iBAAiB,aAGjB,YAAY;QACZ,cAAc;QACd,WAAW;QACX,aAAa;QACb,iBAAiB;QACjB,oBAAoB;QACpB,yBAAyB;QACzB,mBAAmB;QACnB,aAAa;QACb,WAAW;QACX,UAAU;QACV,eAAe;QACf,aAAa;QACb,uBAAuB;QACvB,YAAY;QACZ,aAAa;QACb,WAAW;QACX,gBAAgB,aAGhB,qBAAqB;QACrB,kBAAkB;QAClB,mBAAmB;QACnB,oBAAoB;QACpB,wBAAwB;QACxB,mBAAmB"}
|
package/dist/public-api.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export * from './lib/category-tree/category-tree';
|
|
2
2
|
export * from './lib/files-grid/files-grid';
|
|
3
|
+
export * from './lib/file-browser/file-browser.component';
|
|
4
|
+
export * from './lib/file-browser/file-browser-demo.component';
|
|
5
|
+
export * from './lib/file-browser/file-browser-resource.component';
|
|
3
6
|
export * from './lib/module';
|
|
4
7
|
//# sourceMappingURL=public-api.d.ts.map
|