cloudmr-ux 0.0.3 → 0.1.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.
Files changed (62) hide show
  1. package/README.md +19 -7
  2. package/dist/index.css +14 -13
  3. package/dist/index.d.ts +19 -0
  4. package/dist/index.js +50 -146
  5. package/dist/index.mjs +30 -0
  6. package/package.json +22 -88
  7. package/dist/index.js.map +0 -1
  8. package/dist/index.modern.js +0 -147
  9. package/dist/index.modern.js.map +0 -1
  10. package/src/.eslintrc +0 -5
  11. package/src/common/components/Cmr-components/avatar/Avatar.scss +0 -0
  12. package/src/common/components/Cmr-components/avatar/Avatar.tsx +0 -25
  13. package/src/common/components/Cmr-components/button/Button.scss +0 -0
  14. package/src/common/components/Cmr-components/button/Button.tsx +0 -14
  15. package/src/common/components/Cmr-components/checkbox/Checkbox.scss +0 -11
  16. package/src/common/components/Cmr-components/checkbox/Checkbox.tsx +0 -29
  17. package/src/common/components/Cmr-components/collapse/Collapse.scss +0 -3
  18. package/src/common/components/Cmr-components/collapse/Collapse.tsx +0 -75
  19. package/src/common/components/Cmr-components/dialogue/Confirmation.tsx +0 -48
  20. package/src/common/components/Cmr-components/dialogue/DeletionDialog.tsx +0 -61
  21. package/src/common/components/Cmr-components/dialogue/EditConfirmation.tsx +0 -72
  22. package/src/common/components/Cmr-components/double-slider/DualSlider.tsx +0 -198
  23. package/src/common/components/Cmr-components/double-slider/InvertibleDualSlider.tsx +0 -224
  24. package/src/common/components/Cmr-components/dropdown/Dropdown.scss +0 -36
  25. package/src/common/components/Cmr-components/dropdown/Dropdown.tsx +0 -83
  26. package/src/common/components/Cmr-components/gui-slider/ControlledSlider.tsx +0 -139
  27. package/src/common/components/Cmr-components/gui-slider/Slider.tsx +0 -170
  28. package/src/common/components/Cmr-components/header/Header.scss +0 -20
  29. package/src/common/components/Cmr-components/header/Header.tsx +0 -101
  30. package/src/common/components/Cmr-components/input/Input.scss +0 -0
  31. package/src/common/components/Cmr-components/input/Input.tsx +0 -39
  32. package/src/common/components/Cmr-components/input-number/InputNumber.scss +0 -0
  33. package/src/common/components/Cmr-components/input-number/InputNumber.tsx +0 -29
  34. package/src/common/components/Cmr-components/label/Label.scss +0 -13
  35. package/src/common/components/Cmr-components/label/Label.tsx +0 -20
  36. package/src/common/components/Cmr-components/option/Option.scss +0 -0
  37. package/src/common/components/Cmr-components/option/Option.tsx +0 -24
  38. package/src/common/components/Cmr-components/panel/Panel.scss +0 -0
  39. package/src/common/components/Cmr-components/panel/Panel.tsx +0 -54
  40. package/src/common/components/Cmr-components/progress/Progress.scss +0 -0
  41. package/src/common/components/Cmr-components/progress/Progress.tsx +0 -38
  42. package/src/common/components/Cmr-components/radio/Radio.scss +0 -0
  43. package/src/common/components/Cmr-components/radio/Radio.tsx +0 -23
  44. package/src/common/components/Cmr-components/radio-group/RadioGroup.scss +0 -0
  45. package/src/common/components/Cmr-components/radio-group/RadioGroup.tsx +0 -32
  46. package/src/common/components/Cmr-components/rename/edit.tsx +0 -94
  47. package/src/common/components/Cmr-components/select/Select.scss +0 -3
  48. package/src/common/components/Cmr-components/select/Select.tsx +0 -33
  49. package/src/common/components/Cmr-components/select-upload/SelectUpload.scss +0 -0
  50. package/src/common/components/Cmr-components/select-upload/SelectUpload.tsx +0 -133
  51. package/src/common/components/Cmr-components/slider/Slider.scss +0 -0
  52. package/src/common/components/Cmr-components/slider/Slider.tsx +0 -66
  53. package/src/common/components/Cmr-components/spin/Spin.scss +0 -0
  54. package/src/common/components/Cmr-components/spin/Spin.tsx +0 -31
  55. package/src/common/components/Cmr-components/tooltip/Tooltip.scss +0 -0
  56. package/src/common/components/Cmr-components/tooltip/Tooltip.tsx +0 -50
  57. package/src/common/components/Cmr-components/upload/Upload.scss +0 -5
  58. package/src/common/components/Cmr-components/upload/Upload.tsx +0 -188
  59. package/src/common/components/Cmr-components/upload/UploadWindow.tsx +0 -355
  60. package/src/index.js +0 -8
  61. package/src/index.test.js +0 -7
  62. package/src/styles.module.css +0 -9
@@ -1,355 +0,0 @@
1
- import * as React from 'react';
2
- import Button from '@mui/material/Button';
3
- import TextField from '@mui/material/TextField';
4
- import Dialog from '@mui/material/Dialog';
5
- import DialogActions from '@mui/material/DialogActions';
6
- import DialogContent from '@mui/material/DialogContent';
7
- import DialogContentText from '@mui/material/DialogContentText';
8
- import DialogTitle from '@mui/material/DialogTitle';
9
- import Typography from '@mui/material/Typography';
10
- import Box from "@mui/material/Box";
11
- import {Alert, AlertColor, AlertTitle, Collapse, MenuItem} from "@mui/material";
12
- import {ChangeEvent, useEffect, useRef} from "react";
13
- import './Upload.scss';
14
- import CmrLabel from "../label/Label";
15
-
16
- interface UploadWindowProps {
17
- upload: (file: File, fileAlias: string, fileDatabase: string) => Promise<number>;
18
- open: boolean;
19
- setOpen: React.Dispatch<React.SetStateAction<boolean>>;
20
- fileExtension?: string,
21
- template?: {
22
- showFileName?: boolean;
23
- showDatabase?: boolean;
24
- showFileSize?: boolean;
25
- };
26
- }
27
-
28
- export default function UploadWindow({
29
- upload, open, setOpen, fileExtension,
30
- template = {showFileName: true, showDatabase: true, showFileSize: true}, // default values
31
- }: UploadWindowProps) {
32
- const [fileOriginalName, setFileOriginalName] = React.useState('');
33
- const [fileAlias, setFileAlias] = React.useState('/');
34
- const [fileSize, setFileSize] = React.useState('0 MB');
35
- const [warningText, setWarningText] = React.useState('Unknown Status');
36
- const [infoOpen, setInfoOpen] = React.useState(false);
37
- const [locationSelection, setLocationSelection] = React.useState('s3');
38
- const [infoStyle, setInfoStyle] = React.useState<AlertColor>('info');
39
- const [uploadedFiles, setUploaded] = React.useState<File[]>([]);
40
- const [UpBtnDisabled, setUpBtnDisabled] = React.useState(false);
41
- const [UpBtnText, setUpBtnText] = React.useState('Upload');
42
- const [uploadBoxWarning, setUploadBoxWarning] = React.useState<undefined | string>(undefined);
43
-
44
- const handleClickOpen = () => {
45
- setOpen(true);
46
- };
47
-
48
- const handleClose = () => {
49
- setOpen(false);
50
- };
51
-
52
- const getExtension = (fileName: string | undefined) => {
53
- if (fileName == undefined)
54
- return;
55
- return fileName.split('.').pop();
56
- }
57
-
58
- const handleConfirm = () => {
59
- if (uploadedFiles.length === 0) {
60
- setInfoOpen(true);
61
- setInfoStyle('error');
62
- setWarningText('Must select files to upload!');
63
- setTimeout(() => setInfoOpen(false), 2500);
64
- return;
65
- }
66
- if (fileAlias.length === 0) {
67
- setInfoOpen(true);
68
- setInfoStyle('error');
69
- setWarningText("File name can't be empty");
70
- setTimeout(() => setInfoOpen(false), 2500);
71
- return;
72
- }
73
- setOpen(false);
74
- upload(uploadedFiles[0], fileAlias, locationSelection).then((response: number) => {
75
- console.log(response);
76
- //Update image with another ajax
77
- if (response > 0) {
78
- setInfoOpen(true);
79
- if (response === 200) {
80
- setInfoStyle('success');
81
- setWarningText("Upload successful");
82
- setTimeout(() => {
83
- setInfoOpen(false);
84
- setOpen(false);
85
- }, 1000);
86
- setUpBtnDisabled(false);
87
- setUpBtnText('Upload');
88
- } else if (response === 413) {
89
- setInfoStyle('error');
90
- setWarningText("File size limit exceeded");
91
- setTimeout(() => {
92
- setInfoOpen(false);
93
- setUpBtnDisabled(false);
94
- setUpBtnText('Upload');
95
- }, 2000);
96
- } else if (response === 500) {
97
- setInfoStyle('error');
98
- setWarningText("Internal server error");
99
- setTimeout(() => {
100
- setInfoOpen(false);
101
- setUpBtnDisabled(false);
102
- setUpBtnText('Upload');
103
- }, 1500);
104
- setOpen(true);
105
- } else if (response === 400) {
106
- setInfoStyle('warning');
107
- setWarningText("File upload cancelled");
108
- setTimeout(() => {
109
- setInfoOpen(false);
110
- setUpBtnDisabled(false);
111
- setUpBtnText('Upload');
112
- }, 1000);
113
- setOpen(true);
114
- } else {
115
- setInfoStyle('warning');
116
- setWarningText("Unknown status");
117
- setTimeout(() => {
118
- setInfoOpen(false);
119
- setUpBtnDisabled(false);
120
- setUpBtnText('Upload');
121
- }, 2000);
122
- setOpen(true);
123
- }
124
- }
125
- }).catch((error) => {
126
- setUpBtnDisabled(false);
127
- setUpBtnText('Upload');
128
- setInfoOpen(true);
129
- setInfoStyle('error');
130
- setWarningText("Upload unsuccessful: " + error.message);
131
- setTimeout(() => setInfoOpen(false), 2500);
132
- console.error('Error:', error);
133
- });
134
- setUpBtnDisabled(true);
135
- setUpBtnText('Uploading');
136
- };
137
-
138
- const changeFileName = (e: ChangeEvent) => {
139
- // @ts-ignore
140
- setFileAlias(e.target.value);
141
- }
142
-
143
- function loadFiles(files: File[]) {
144
- if (files.length==0){
145
- setInfoOpen(true);
146
- setInfoStyle('warning');
147
- setWarningText('No file selected');
148
- setTimeout(() => setInfoOpen(false), 2500);
149
- return;
150
- }
151
- if (files.length > 1) {
152
- setInfoOpen(true);
153
- setInfoStyle('warning');
154
- setWarningText('Only accepts one file at a time');
155
- setTimeout(() => setInfoOpen(false), 2500);
156
- return;
157
- }
158
- let file = files[0];
159
- setUploaded([file]);
160
- // let reader = new FileReader();
161
- // reader.onload =
162
- function readFile(file: File) {
163
- setFileOriginalName(file.name);
164
- setFileAlias(file.name);
165
- const units = [
166
- "B",
167
- "KiB",
168
- "MiB",
169
- "GiB",
170
- "TiB",
171
- "PiB",
172
- "EiB",
173
- "ZiB",
174
- "YiB",
175
- ];
176
- let numberOfBytes = file.size;
177
- const exponent = Math.min(
178
- Math.floor(Math.log(numberOfBytes) / Math.log(1024)),
179
- units.length - 1
180
- );
181
- const approx = numberOfBytes / 1024 ** exponent;
182
- const output =
183
- exponent === 0
184
- ? `${numberOfBytes} bytes`
185
- : `${approx.toFixed(3)} ${
186
- units[exponent]
187
- }`;
188
- setFileSize(output);
189
- }
190
- readFile(file); // start reading the file data.
191
- }
192
-
193
- let initialized = false;
194
- let fileInput = (inputRef: HTMLElement) => {
195
- if (initialized)
196
- return;
197
- inputRef.addEventListener('dragover', function (e) {
198
- e.stopPropagation();
199
- e.preventDefault();
200
- // @ts-ignore
201
- if (e.dataTransfer.files) {
202
- // @ts-ignore
203
- let draggedFiles = e.dataTransfer.files;
204
- if (draggedFiles.length > 1) {
205
- setUploadBoxWarning('Only one file can be uploaded at a time')
206
- } else if (fileExtension != undefined && draggedFiles.length != 0 &&
207
- getExtension(draggedFiles[0].name) != fileExtension) {
208
- setUploadBoxWarning(`Only accepting files with extension ${fileExtension}`);
209
- }
210
- }
211
- // @ts-ignore
212
- e.dataTransfer.dropEffect = 'copy';
213
- });
214
- // Get file data on drop
215
- inputRef.addEventListener('drop', function (e) {
216
- e.stopPropagation();
217
- e.preventDefault();
218
- setUploadBoxWarning(undefined);
219
- // @ts-ignore
220
- let files = e.dataTransfer.files; // Array of all files
221
- if (files.length > 1) {
222
- setInfoOpen(true);
223
- setInfoStyle('warning');
224
- setWarningText('Only one file can be uploaded at a time');
225
- setTimeout(() => setInfoOpen(false), 2500);
226
- return;
227
- } else if (fileExtension != undefined && `.${getExtension(files[0].name)}` != fileExtension) {
228
- setInfoOpen(true);
229
- setInfoStyle('warning');
230
- setWarningText(`Only accepting files with extension ${fileExtension}`);
231
- setTimeout(() => setInfoOpen(false), 2500);
232
- return;
233
- }
234
- // @ts-ignore
235
- loadFiles(files);
236
- });
237
- inputRef.addEventListener('dragleave', () => {
238
- setUploadBoxWarning(undefined);
239
- });
240
- initialized = true;
241
- };
242
-
243
- const fileInputClick = (e: any) => {
244
- const fileElem = document.getElementById("file-window");
245
- e.preventDefault();
246
- if (fileElem) {
247
- fileElem.click();
248
- }
249
- }
250
-
251
- const loadSelectedFiles = (e: ChangeEvent) => {
252
- e.preventDefault();
253
- const fileElem = document.getElementById('file-window');
254
- // @ts-ignore
255
- loadFiles(fileElem.files);
256
- }
257
-
258
- // @ts-ignore
259
- return (
260
- <div>
261
- <Dialog open={open} onClose={handleClose}>
262
- <DialogTitle>File Upload</DialogTitle>
263
- <DialogContent>
264
- <DialogContentText>
265
- </DialogContentText>
266
- <DialogContent dividers>
267
- <Box width={500} height={250}
268
- style={{
269
- borderStyle: 'dashed',
270
- borderRadius: '5pt',
271
- borderColor: (uploadBoxWarning == undefined) ? 'lightGray' : '#BA3C3C'
272
- }}>
273
- <Typography component="div" style={{height: '100%'}}>
274
- <Box style={{
275
- display: 'flex',
276
- justifyContent: 'center',
277
- alignItems: 'center',
278
- height: '100%'
279
- }}
280
- onClick={fileInputClick}
281
- ref={fileInput}>
282
- {uploadBoxWarning != undefined ? uploadBoxWarning : 'Drag & Drop or Click to Upload Your File Here'}
283
- </Box>
284
- </Typography>
285
- </Box>
286
- <input
287
- type="file"
288
- id="file-window"
289
- multiple
290
- accept={fileExtension == undefined ? "*" : fileExtension}
291
- style={{display: 'none'}}
292
- onChange={loadSelectedFiles}
293
- />
294
- <Box component="form" sx={{'& .MuiTextField-root': {m: 2, width: '25ch', mb: 0}}}>
295
- <div>
296
- {template.showFileName && (
297
- <TextField
298
- required
299
- style={{marginTop:'30px'}}
300
- label={`File Alias:`}
301
- value={fileAlias}
302
- variant="standard"
303
- onChange={changeFileName}
304
- />
305
- )}
306
-
307
- {fileOriginalName!=''&&<CmrLabel style={{marginLeft:'16px', fontSize:'9pt', color:'#267833'}}>
308
- {fileOriginalName}
309
- </CmrLabel>}
310
- {template.showDatabase && (
311
- <TextField
312
- select
313
- label="Database:"
314
- defaultValue="s3"
315
- helperText="Upstream Storage Location"
316
- variant="standard"
317
- >
318
- {[{value: 's3', label: 'S3'}].map((option) => (
319
- <MenuItem key={option.value} value={option.value}>
320
- {option.label}
321
- </MenuItem>
322
- ))}
323
- </TextField>
324
- )}
325
- </div>
326
- <div>
327
- {template.showFileSize && (
328
- <TextField
329
- label="File Size:"
330
- value={fileSize}
331
- InputProps={{
332
- readOnly: true,
333
- }}
334
- variant="standard"
335
- />
336
- )}
337
- <Collapse in={infoOpen}>
338
- <Alert severity={infoStyle} sx={{m: 1}}>
339
- {warningText}
340
- </Alert>
341
- </Collapse>
342
- </div>
343
- </Box>
344
- </DialogContent>
345
- <DialogActions>
346
- <Button color={'inherit'} sx={{color: '#333'}} disabled={UpBtnDisabled}
347
- onClick={handleClose}>Cancel</Button>
348
- <Button variant='contained' disabled={UpBtnDisabled}
349
- onClick={handleConfirm}>{UpBtnText}</Button>
350
- </DialogActions>
351
- </DialogContent>
352
- </Dialog>
353
- </div>
354
- );
355
- }
package/src/index.js DELETED
@@ -1,8 +0,0 @@
1
- import {CmrButton } from './common/components/Cmr-components/button/Button.tsx';
2
- import {CmrInput } from './common/components/Cmr-components/input/Input.tsx';
3
- // import {CmrAvatar } from './common/components/Cmr-components/avatar/Avatar.tsx'; 'antd/lib/avatar/SizeContext'
4
- import {CmrCheckbox } from './common/components/Cmr-components/checkbox/Checkbox.tsx';
5
- import {CmrCollapse} from './common/components/Cmr-components/collapse/Collapse.tsx';
6
-
7
-
8
- export { CmrButton,CmrInput,CmrCheckbox,CmrCollapse };
package/src/index.test.js DELETED
@@ -1,7 +0,0 @@
1
- import { ExampleComponent } from '.'
2
-
3
- describe('ExampleComponent', () => {
4
- it('is truthy', () => {
5
- expect(ExampleComponent).toBeTruthy()
6
- })
7
- })
@@ -1,9 +0,0 @@
1
- /* add css module styles here (optional) */
2
-
3
- .test {
4
- margin: 2em;
5
- padding: 0.5em;
6
- border: 2px solid #000;
7
- font-size: 2em;
8
- text-align: center;
9
- }