@plutonhq/core-frontend 0.1.9 → 0.1.11
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/components/Plan/PlanStats/PlanStats.js +9 -9
- package/dist-lib/components/Plan/PlanStats/PlanStats.js.map +1 -1
- package/dist-lib/components/Storage/AddStorage/AddStorage.d.ts.map +1 -1
- package/dist-lib/components/Storage/AddStorage/AddStorage.js +52 -51
- package/dist-lib/components/Storage/AddStorage/AddStorage.js.map +1 -1
- package/dist-lib/components/Storage/StorageItem/StorageItem.d.ts.map +1 -1
- package/dist-lib/components/Storage/StorageItem/StorageItem.js +36 -36
- package/dist-lib/components/Storage/StorageItem/StorageItem.js.map +1 -1
- package/dist-lib/components/common/Icon/Icon.d.ts.map +1 -1
- package/dist-lib/components/common/Icon/Icon.js +7 -0
- package/dist-lib/components/common/Icon/Icon.js.map +1 -1
- package/dist-lib/components/common/form/Select/Select.js +12 -12
- package/dist-lib/components/common/form/Select/Select.js.map +1 -1
- package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.d.ts +20 -0
- package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.d.ts.map +1 -0
- package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.js +75 -0
- package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.js.map +1 -0
- package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.module.scss.js +30 -0
- package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.module.scss.js.map +1 -0
- package/dist-lib/providers/drime.png +0 -0
- package/dist-lib/providers/filelu.png +0 -0
- package/dist-lib/providers/filen.png +0 -0
- package/dist-lib/providers/internxt.png +0 -0
- package/dist-lib/providers/shade.png +0 -0
- package/dist-lib/styles/core-frontend.css +1 -1
- package/dist-lib/utils/storageProviders.d.ts +40 -0
- package/dist-lib/utils/storageProviders.d.ts.map +1 -1
- package/dist-lib/utils/storageProviders.js +35 -0
- package/dist-lib/utils/storageProviders.js.map +1 -1
- package/package.json +14 -12
- package/src/components/Plan/PlanStats/PlanStats.tsx +1 -1
- package/src/components/Storage/AddStorage/AddStorage.tsx +7 -6
- package/src/components/Storage/StorageItem/StorageItem.tsx +9 -2
- package/src/components/common/Icon/Icon.tsx +8 -0
- package/src/components/common/form/Select/Select.tsx +1 -1
- package/src/components/common/form/StorageProviderSelect/StorageProviderSelect.module.scss +223 -0
- package/src/components/common/form/StorageProviderSelect/StorageProviderSelect.tsx +106 -0
- package/src/utils/storageProviders.ts +35 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import { FormField, Icon } from '../../..';
|
|
3
|
+
import classes from './StorageProviderSelect.module.scss';
|
|
4
|
+
|
|
5
|
+
interface StorageProviderSelectProps {
|
|
6
|
+
label?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
full?: boolean;
|
|
9
|
+
error?: string;
|
|
10
|
+
customClasses?: string;
|
|
11
|
+
options: { label: string; value: string; image?: JSX.Element; disabled?: boolean; doc?: string }[];
|
|
12
|
+
fieldValue: string;
|
|
13
|
+
onUpdate: (f: string) => void;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const StorageProviderSelect = ({
|
|
18
|
+
options,
|
|
19
|
+
fieldValue,
|
|
20
|
+
onUpdate,
|
|
21
|
+
disabled,
|
|
22
|
+
label,
|
|
23
|
+
description,
|
|
24
|
+
full,
|
|
25
|
+
customClasses,
|
|
26
|
+
error,
|
|
27
|
+
}: StorageProviderSelectProps) => {
|
|
28
|
+
const [showDropDown, setShowDropDown] = useState(false);
|
|
29
|
+
const [searchText, setSearchText] = useState('');
|
|
30
|
+
const selectedItemIndex = options.length > 0 && fieldValue ? options.findIndex((x) => x.value === fieldValue) : null;
|
|
31
|
+
console.log('selectedItemIndex :', selectedItemIndex);
|
|
32
|
+
const selectedItem = selectedItemIndex === -1 || selectedItemIndex === null ? null : options[selectedItemIndex || 0];
|
|
33
|
+
const selectedItemLabel = selectedItem && selectedItem.label ? selectedItem.label : 'Select Storage Provider..';
|
|
34
|
+
const selectedItemValue = selectedItem && selectedItem.value ? selectedItem.value : '';
|
|
35
|
+
const selectedItemImage = selectedItem && selectedItem.image ? selectedItem.image : '';
|
|
36
|
+
|
|
37
|
+
const updateOption = (val: string) => {
|
|
38
|
+
onUpdate(val);
|
|
39
|
+
setShowDropDown(false);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const optionsItems = searchText ? options.filter((s) => s.label.toLowerCase().includes(searchText.toLowerCase())) : options;
|
|
43
|
+
|
|
44
|
+
return (
|
|
45
|
+
<FormField
|
|
46
|
+
type="select"
|
|
47
|
+
label={label}
|
|
48
|
+
description={description}
|
|
49
|
+
required={false}
|
|
50
|
+
error={error}
|
|
51
|
+
classes={`${classes.storageProviderSelectField} ${full ? classes.storageProviderSelectFieldFull : ''} ${customClasses}`}
|
|
52
|
+
>
|
|
53
|
+
<div className={`${classes.dropdown} ${showDropDown ? classes.dropdownOpen : ''} ${disabled ? classes.dropdownDisabled : ''}`}>
|
|
54
|
+
{selectedItem && (
|
|
55
|
+
<div className={classes.docLink}>
|
|
56
|
+
<a href={`https://docs.usepluton.com/docs/${selectedItem.doc}`} target="_blank" rel="noopener noreferrer">
|
|
57
|
+
<Icon type="link" size={12} /> {selectedItem.label} Setup Guide
|
|
58
|
+
</a>
|
|
59
|
+
</div>
|
|
60
|
+
)}
|
|
61
|
+
<div className={classes.selected} onClick={() => setShowDropDown(!disabled ? !showDropDown : false)}>
|
|
62
|
+
<span>
|
|
63
|
+
{selectedItemImage} {selectedItemLabel}
|
|
64
|
+
</span>
|
|
65
|
+
<button className={classes.dropBtn}>
|
|
66
|
+
<Icon type={showDropDown ? 'caret-up' : 'caret-down'} size={12} />
|
|
67
|
+
</button>
|
|
68
|
+
</div>
|
|
69
|
+
{showDropDown && (
|
|
70
|
+
<div>
|
|
71
|
+
<div className={classes.search}>
|
|
72
|
+
<Icon type="search" size={15} />
|
|
73
|
+
<input placeholder="Search Storage Providers..." value={searchText} onChange={(e) => setSearchText(e.target.value)} />
|
|
74
|
+
{searchText && (
|
|
75
|
+
<button onClick={() => setSearchText('')}>
|
|
76
|
+
<Icon type="close" size={15} />
|
|
77
|
+
</button>
|
|
78
|
+
)}
|
|
79
|
+
</div>
|
|
80
|
+
|
|
81
|
+
<div className={`${classes.lists} styled__scrollbar`}>
|
|
82
|
+
<ul>
|
|
83
|
+
{optionsItems.length > 0 &&
|
|
84
|
+
optionsItems.map((item, indx) => {
|
|
85
|
+
return (
|
|
86
|
+
<li
|
|
87
|
+
key={indx}
|
|
88
|
+
onClick={() => !item.disabled && updateOption(item.value)}
|
|
89
|
+
className={`${item.value === selectedItemValue ? classes.selectedItem : ''} ${item.disabled ? classes.disabledItem : ''}`}
|
|
90
|
+
>
|
|
91
|
+
{item.image && item.image}
|
|
92
|
+
{item.label}
|
|
93
|
+
</li>
|
|
94
|
+
);
|
|
95
|
+
})}
|
|
96
|
+
</ul>
|
|
97
|
+
{searchText && !optionsItems && <div>No Providers Found</div>}
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
)}
|
|
101
|
+
</div>
|
|
102
|
+
</FormField>
|
|
103
|
+
);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
export default StorageProviderSelect;
|
|
@@ -371,4 +371,39 @@ export const storageProviders = {
|
|
|
371
371
|
name: 'The local filesystem',
|
|
372
372
|
fields: [],
|
|
373
373
|
},
|
|
374
|
+
drime: {
|
|
375
|
+
id: 'drime',
|
|
376
|
+
name: 'Drime',
|
|
377
|
+
fields: [{ label: 'API Access Token', value: 'access_token' }],
|
|
378
|
+
},
|
|
379
|
+
filelu: {
|
|
380
|
+
id: 'filelu',
|
|
381
|
+
name: 'FileLu',
|
|
382
|
+
fields: [{ label: 'Key', value: 'key' }],
|
|
383
|
+
},
|
|
384
|
+
filen: {
|
|
385
|
+
id: 'filen',
|
|
386
|
+
name: 'Filen',
|
|
387
|
+
fields: [
|
|
388
|
+
{ label: 'Email', value: 'email' },
|
|
389
|
+
{ label: 'Password', value: 'password' },
|
|
390
|
+
{ label: 'API Key', value: 'apiKey' },
|
|
391
|
+
],
|
|
392
|
+
},
|
|
393
|
+
internxt: {
|
|
394
|
+
id: 'internxt',
|
|
395
|
+
name: 'Internxt Drive',
|
|
396
|
+
fields: [
|
|
397
|
+
{ label: 'Email', value: 'email' },
|
|
398
|
+
{ label: 'Password', value: 'password' },
|
|
399
|
+
],
|
|
400
|
+
},
|
|
401
|
+
shade: {
|
|
402
|
+
id: 'shade',
|
|
403
|
+
name: 'Shade',
|
|
404
|
+
fields: [
|
|
405
|
+
{ label: 'Drive ID', value: 'drive_id' },
|
|
406
|
+
{ label: 'API Key', value: 'api_key' },
|
|
407
|
+
],
|
|
408
|
+
},
|
|
374
409
|
};
|