@oneblink/apps-react 8.11.0-beta.3 → 8.11.0-beta.4
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.
@@ -1,9 +1,9 @@
|
|
1
1
|
import * as React from 'react';
|
2
2
|
import { FormElementWithOptions } from '@oneblink/types/typescript/forms';
|
3
|
-
export declare function FileChip({ file: { fileName,
|
3
|
+
export declare function FileChip({ file: { fileName, url, data }, }: {
|
4
4
|
file: {
|
5
5
|
fileName: string;
|
6
|
-
|
6
|
+
url?: string;
|
7
7
|
isPrivate?: boolean;
|
8
8
|
data?: string;
|
9
9
|
};
|
@@ -8,7 +8,11 @@ import tenants from '@oneblink/apps/dist/tenants';
|
|
8
8
|
import MaterialIcon from '../../MaterialIcon';
|
9
9
|
async function fetchFile(url) {
|
10
10
|
const idToken = await getCognitoIdToken();
|
11
|
-
const
|
11
|
+
const safeUrl = new URL(tenants.current.apiOrigin);
|
12
|
+
const unsafeUrl = new URL(url);
|
13
|
+
safeUrl.pathname = unsafeUrl.pathname;
|
14
|
+
safeUrl.search = unsafeUrl.search;
|
15
|
+
const response = await fetch(safeUrl.href, {
|
12
16
|
headers: {
|
13
17
|
Authorization: `Bearer ${idToken}`,
|
14
18
|
},
|
@@ -18,7 +22,7 @@ async function fetchFile(url) {
|
|
18
22
|
}
|
19
23
|
return await response.blob();
|
20
24
|
}
|
21
|
-
export function FileChip({ file: { fileName,
|
25
|
+
export function FileChip({ file: { fileName, url, data }, }) {
|
22
26
|
const [{ isDownloading, error }, setState] = React.useState({
|
23
27
|
isDownloading: false,
|
24
28
|
});
|
@@ -32,8 +36,8 @@ export function FileChip({ file: { fileName, path, data }, }) {
|
|
32
36
|
setState({
|
33
37
|
isDownloading: true,
|
34
38
|
});
|
35
|
-
if (
|
36
|
-
const blob = await fetchFile(
|
39
|
+
if (url) {
|
40
|
+
const blob = await fetchFile(url);
|
37
41
|
saveAs(blob, fileName);
|
38
42
|
}
|
39
43
|
else if (data) {
|
@@ -49,7 +53,7 @@ export function FileChip({ file: { fileName, path, data }, }) {
|
|
49
53
|
error: error,
|
50
54
|
});
|
51
55
|
}
|
52
|
-
}, [data, fileName,
|
56
|
+
}, [data, fileName, url]);
|
53
57
|
return (React.createElement(React.Fragment, null,
|
54
58
|
React.createElement(Chip, { label: fileName, deleteIcon: React.createElement(MaterialIcon, null, "save_alt"), onDelete: handleDownload, variant: "outlined", icon: isDownloading ? (React.createElement(CircularProgress, { size: 16 })) : (React.createElement(MaterialIcon, null, "attach_file")) }),
|
55
59
|
React.createElement(ErrorSnackbar, { open: !!error, onClose: clearError },
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ElementDisplay.js","sourceRoot":"","sources":["../../../../src/components/formStore/display/ElementDisplay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,aAAa,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AACxE,OAAO,OAAO,MAAM,6BAA6B,CAAA;AACjD,OAAO,YAAY,MAAM,oBAAoB,CAAA;AAE7C,KAAK,UAAU,SAAS,CAAC,GAAW;IAClC,MAAM,OAAO,GAAG,MAAM,iBAAiB,EAAE,CAAA;IACzC,MAAM,QAAQ,GAAG,MAAM,
|
1
|
+
{"version":3,"file":"ElementDisplay.js","sourceRoot":"","sources":["../../../../src/components/formStore/display/ElementDisplay.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { saveAs } from 'file-saver'\nimport { Chip, CircularProgress, Grid } from '@mui/material'\nimport ErrorSnackbar from '../../ErrorSnackbar'\nimport { UnorderedList, ListItem } from '../../Lists'\nimport { FormElementWithOptions } from '@oneblink/types/typescript/forms'\nimport { getCognitoIdToken } from '@oneblink/apps/dist/services/cognito'\nimport tenants from '@oneblink/apps/dist/tenants'\nimport MaterialIcon from '../../MaterialIcon'\n\nasync function fetchFile(url: string) {\n const idToken = await getCognitoIdToken()\n const safeUrl = new URL(tenants.current.apiOrigin)\n const unsafeUrl = new URL(url)\n safeUrl.pathname = unsafeUrl.pathname\n safeUrl.search = unsafeUrl.search\n const response = await fetch(safeUrl.href, {\n headers: {\n Authorization: `Bearer ${idToken}`,\n },\n })\n\n if (!response.ok) {\n throw new Error(\n `Unable to download file. HTTP Status Code: ${response.status}`,\n )\n }\n\n return await response.blob()\n}\n\nexport function FileChip({\n file: { fileName, url, data },\n}: {\n file: {\n fileName: string\n url?: string\n isPrivate?: boolean\n data?: string\n }\n}) {\n const [{ isDownloading, error }, setState] = React.useState<{\n error?: Error\n isDownloading: boolean\n }>({\n isDownloading: false,\n })\n const clearError = React.useCallback(() => {\n setState({\n isDownloading: false,\n })\n }, [])\n const handleDownload = React.useCallback(async () => {\n try {\n setState({\n isDownloading: true,\n })\n\n if (url) {\n const blob = await fetchFile(url)\n saveAs(blob, fileName)\n } else if (data) {\n saveAs(data, fileName)\n }\n\n setState({\n isDownloading: false,\n })\n } catch (error) {\n setState({\n isDownloading: false,\n error: error as Error,\n })\n }\n }, [data, fileName, url])\n return (\n <>\n <Chip\n label={fileName}\n deleteIcon={<MaterialIcon>save_alt</MaterialIcon>}\n onDelete={handleDownload}\n variant=\"outlined\"\n icon={\n isDownloading ? (\n <CircularProgress size={16} />\n ) : (\n <MaterialIcon>attach_file</MaterialIcon>\n )\n }\n />\n <ErrorSnackbar open={!!error} onClose={clearError}>\n <span data-cypress=\"download-legacy-file-error-message\">\n {error && error.message}\n </span>\n </ErrorSnackbar>\n </>\n )\n}\n\nexport function FilesElementDataTableCellContent({\n value,\n}: {\n value: Array<{\n fileName: string\n url?: string | undefined\n isPrivate?: boolean | undefined\n data?: string | undefined\n }>\n}) {\n return (\n <Grid container spacing={1}>\n {value.map((file, index) => {\n return (\n <Grid item key={index} xs={12}>\n <FileChip file={file} />\n </Grid>\n )\n })}\n </Grid>\n )\n}\n\nexport function MultiSelectFormElementTableCellContent({\n value,\n formElement,\n}: {\n value: string[]\n formElement: FormElementWithOptions\n}) {\n return (\n <UnorderedList disablePadding>\n {value.map((selection, index) => {\n const label = getSelectedOptionLabel(formElement, selection)\n return <ListItem key={index}>{label?.toString()}</ListItem>\n })}\n </UnorderedList>\n )\n}\n\nexport function getSelectedOptionLabel(\n formElement: FormElementWithOptions,\n value: string,\n) {\n const selectedOption = (formElement.options || []).find(\n (opt) => opt.value === value,\n )\n return selectedOption ? selectedOption.label : value\n}\n"]}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@oneblink/apps-react",
|
3
3
|
"description": "Helper functions for OneBlink apps in ReactJS.",
|
4
|
-
"version": "8.11.0-beta.
|
4
|
+
"version": "8.11.0-beta.4",
|
5
5
|
"author": "OneBlink <developers@oneblink.io> (https://oneblink.io)",
|
6
6
|
"bugs": {
|
7
7
|
"url": "https://github.com/oneblink/apps-react/issues"
|