@oneblink/apps-react 1.2.0-beta.1 → 1.2.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.
- package/dist/components/formStore/OneBlinkFormStoreColumnsButton.js +31 -9
- package/dist/components/formStore/OneBlinkFormStoreColumnsButton.js.map +1 -1
- package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js +46 -12
- package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js.map +1 -1
- package/dist/components/formStore/OneBlinkFormStoreTable.js +13 -2
- package/dist/components/formStore/OneBlinkFormStoreTable.js.map +1 -1
- package/dist/components/formStore/table/FormElementTableCell.js +4 -1
- package/dist/components/formStore/table/FormElementTableCell.js.map +1 -1
- package/dist/components/formStore/table/RepeatableSetCell.js +3 -1
- package/dist/components/formStore/table/RepeatableSetCell.js.map +1 -1
- package/dist/components/formStore/table/generateColumns.d.ts +8 -1
- package/dist/components/formStore/table/generateColumns.js +9 -0
- package/dist/components/formStore/table/generateColumns.js.map +1 -1
- package/dist/components/formStore/table/useFormStoreTable.d.ts +38 -38
- package/dist/components/formStore/table/useFormStoreTable.js +3 -1
- package/dist/components/formStore/table/useFormStoreTable.js.map +1 -1
- package/dist/components/formStore/useFormStoreTableContext.d.ts +38 -38
- package/package.json +1 -1
@@ -1,11 +1,13 @@
|
|
1
1
|
import * as React from 'react';
|
2
|
-
import { Box, Button, Checkbox, Dialog, DialogActions, DialogContent, DialogTitle, Divider, FormControlLabel, FormGroup, Typography, } from '@mui/material';
|
3
|
-
import { Settings as SettingsIcon } from '@mui/icons-material';
|
2
|
+
import { Alert, AlertTitle, Box, Button, Checkbox, Collapse, Dialog, DialogActions, DialogContent, DialogTitle, Divider, FormControlLabel, FormGroup, Grid, IconButton, Typography, } from '@mui/material';
|
3
|
+
import { Help, Settings as SettingsIcon } from '@mui/icons-material';
|
4
4
|
import useBooleanState from '../../hooks/useBooleanState';
|
5
5
|
import useFormStoreTableContext from './useFormStoreTableContext';
|
6
|
+
import { ListItem, UnorderedList } from '../Lists';
|
6
7
|
function OneBlinkFormStoreColumnsButton(props) {
|
7
8
|
const { getToggleHideAllColumnsProps, allColumns, parameters, onChangeParameters, } = useFormStoreTableContext();
|
8
9
|
const [isConfiguringColumns, showColumnConfiguration, hideColumnConfiguration,] = useBooleanState(false);
|
10
|
+
const [isHelpOpen, , , toggleHelp] = useBooleanState(false);
|
9
11
|
const toggleHideAllColumnsProps = getToggleHideAllColumnsProps();
|
10
12
|
return (React.createElement(React.Fragment, null,
|
11
13
|
React.createElement(Button, { className: "ob-form-store-columns-button", startIcon: React.createElement(SettingsIcon, null), onClick: showColumnConfiguration,
|
@@ -14,13 +16,33 @@ function OneBlinkFormStoreColumnsButton(props) {
|
|
14
16
|
React.createElement(Dialog, { open: isConfiguringColumns, maxWidth: "sm", fullWidth: true, onClose: hideColumnConfiguration },
|
15
17
|
React.createElement(DialogTitle, null, "Column Configuration"),
|
16
18
|
React.createElement(DialogContent, { dividers: true },
|
17
|
-
React.createElement(
|
18
|
-
React.createElement(
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
React.createElement(Grid, { container: true },
|
20
|
+
React.createElement(Grid, { item: true },
|
21
|
+
React.createElement(FormGroup, null,
|
22
|
+
React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: !!parameters.unwindRepeatableSets }), onChange: (e, checked) => {
|
23
|
+
onChangeParameters((currentParameters) => ({
|
24
|
+
...currentParameters,
|
25
|
+
sorting: checked
|
26
|
+
? currentParameters.sorting
|
27
|
+
: [
|
28
|
+
{
|
29
|
+
property: 'dateTimeSubmitted',
|
30
|
+
direction: 'descending',
|
31
|
+
},
|
32
|
+
],
|
33
|
+
unwindRepeatableSets: checked,
|
34
|
+
}), false);
|
35
|
+
}, label: "Output a row per repeatable set entry" }))),
|
36
|
+
React.createElement(Grid, { item: true },
|
37
|
+
React.createElement(IconButton, { onClick: toggleHelp },
|
38
|
+
React.createElement(Help, null)))),
|
39
|
+
React.createElement(Collapse, { in: isHelpOpen },
|
40
|
+
React.createElement(Alert, { severity: "info" },
|
41
|
+
React.createElement(AlertTitle, null, "When this setting is enabled:"),
|
42
|
+
React.createElement(UnorderedList, null,
|
43
|
+
React.createElement(ListItem, null, "Repeatable set columns will be expanded and create duplicate rows per entry"),
|
44
|
+
React.createElement(ListItem, null, "Columns inside repeatable set entries can be sorted and filtered"),
|
45
|
+
React.createElement(ListItem, null, "Columns inside repeatable set entries will be included in the CSV download")))),
|
24
46
|
React.createElement(Box, { marginY: 2 },
|
25
47
|
React.createElement(Divider, null)),
|
26
48
|
React.createElement(FormGroup, null,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"OneBlinkFormStoreColumnsButton.js","sourceRoot":"","sources":["../../../src/components/formStore/OneBlinkFormStoreColumnsButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EACL,GAAG,EACH,MAAM,EACN,QAAQ,EACR,MAAM,EACN,aAAa,EACb,aAAa,EACb,WAAW,EACX,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,UAAU,GACX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAA;
|
1
|
+
{"version":3,"file":"OneBlinkFormStoreColumnsButton.js","sourceRoot":"","sources":["../../../src/components/formStore/OneBlinkFormStoreColumnsButton.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport {\n Alert,\n AlertTitle,\n Box,\n Button,\n Checkbox,\n Collapse,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n FormControlLabel,\n FormGroup,\n Grid,\n IconButton,\n Typography,\n} from '@mui/material'\nimport { Help, Settings as SettingsIcon } from '@mui/icons-material'\nimport useBooleanState from '../../hooks/useBooleanState'\nimport useFormStoreTableContext from './useFormStoreTableContext'\nimport { ListItem, UnorderedList } from '../Lists'\n\nfunction OneBlinkFormStoreColumnsButton(\n props: React.ComponentProps<typeof Button>,\n) {\n const {\n getToggleHideAllColumnsProps,\n allColumns,\n parameters,\n onChangeParameters,\n } = useFormStoreTableContext()\n const [\n isConfiguringColumns,\n showColumnConfiguration,\n hideColumnConfiguration,\n ] = useBooleanState(false)\n const [isHelpOpen, , , toggleHelp] = useBooleanState(false)\n\n const toggleHideAllColumnsProps = getToggleHideAllColumnsProps()\n\n return (\n <>\n <Button\n className=\"ob-form-store-columns-button\"\n startIcon={<SettingsIcon />}\n onClick={showColumnConfiguration}\n // eslint-disable-next-line react/no-children-prop\n children={<>Columns</>}\n {...props}\n />\n <Dialog\n open={isConfiguringColumns}\n maxWidth=\"sm\"\n fullWidth\n onClose={hideColumnConfiguration}\n >\n <DialogTitle>Column Configuration</DialogTitle>\n <DialogContent dividers>\n <Grid container>\n <Grid item>\n <FormGroup>\n <FormControlLabel\n control={\n <Checkbox checked={!!parameters.unwindRepeatableSets} />\n }\n onChange={(e, checked) => {\n onChangeParameters(\n (currentParameters) => ({\n ...currentParameters,\n sorting: checked\n ? currentParameters.sorting\n : [\n {\n property: 'dateTimeSubmitted',\n direction: 'descending',\n },\n ],\n unwindRepeatableSets: checked,\n }),\n false,\n )\n }}\n label=\"Output a row per repeatable set entry\"\n />\n </FormGroup>\n </Grid>\n <Grid item>\n <IconButton onClick={toggleHelp}>\n <Help />\n </IconButton>\n </Grid>\n </Grid>\n <Collapse in={isHelpOpen}>\n <Alert severity=\"info\">\n <AlertTitle>When this setting is enabled:</AlertTitle>\n <UnorderedList>\n <ListItem>\n Repeatable set columns will be expanded and create duplicate\n rows per entry\n </ListItem>\n <ListItem>\n Columns inside repeatable set entries can be sorted and\n filtered\n </ListItem>\n <ListItem>\n Columns inside repeatable set entries will be included in the\n CSV download\n </ListItem>\n </UnorderedList>\n </Alert>\n </Collapse>\n <Box marginY={2}>\n <Divider />\n </Box>\n <FormGroup>\n <FormControlLabel\n control={\n <Checkbox\n {...toggleHideAllColumnsProps}\n indeterminate={!!toggleHideAllColumnsProps.indeterminate}\n />\n }\n label={<b>Toggle All</b>}\n />\n {allColumns.map((column) => {\n return (\n <React.Fragment key={column.id}>\n <FormControlLabel\n control={<Checkbox {...column.getToggleHiddenProps()} />}\n label={\n <>\n {column.headerText}\n {column.tooltip && (\n <Typography component=\"span\" color=\"textSecondary\">\n {' '}\n ({column.tooltip})\n </Typography>\n )}\n </>\n }\n />\n </React.Fragment>\n )\n })}\n </FormGroup>\n </DialogContent>\n <DialogActions>\n <Button\n onClick={hideColumnConfiguration}\n color=\"primary\"\n variant=\"contained\"\n >\n Done\n </Button>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n\nexport default React.memo(OneBlinkFormStoreColumnsButton)\n"]}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as React from 'react';
|
2
|
-
import { Tooltip } from '@mui/material';
|
2
|
+
import { Tooltip, Dialog, DialogTitle, DialogContent, DialogContentText, DialogActions, Button, } from '@mui/material';
|
3
3
|
import { LoadingButton } from '@mui/lab';
|
4
4
|
import CsvIcon from '@mui/icons-material/Download';
|
5
5
|
import ErrorSnackbar from '../ErrorSnackbar';
|
@@ -7,43 +7,77 @@ import { formStoreService } from '@oneblink/apps';
|
|
7
7
|
import useFormStoreTableContext from './useFormStoreTableContext';
|
8
8
|
function OneBlinkFormStoreDownloadButton(props) {
|
9
9
|
const { visibleColumns, parameters, form } = useFormStoreTableContext();
|
10
|
-
const [{ isDownloadingCsv, downloadingCsvError }, setState] = React.useState({
|
10
|
+
const [{ isDownloadingCsv, isPromptingDownloadCsv, downloadingCsvError }, setState,] = React.useState({
|
11
11
|
isDownloadingCsv: false,
|
12
|
+
isPromptingDownloadCsv: false,
|
12
13
|
downloadingCsvError: null,
|
13
14
|
});
|
14
15
|
const clearError = React.useCallback(() => {
|
15
|
-
setState({
|
16
|
-
|
16
|
+
setState((currentState) => ({
|
17
|
+
...currentState,
|
17
18
|
downloadingCsvError: null,
|
18
|
-
});
|
19
|
+
}));
|
19
20
|
}, []);
|
20
21
|
const downloadCsv = React.useCallback(async () => {
|
21
|
-
setState({
|
22
|
+
setState({
|
23
|
+
isPromptingDownloadCsv: false,
|
24
|
+
isDownloadingCsv: true,
|
25
|
+
downloadingCsvError: null,
|
26
|
+
});
|
22
27
|
try {
|
23
28
|
await formStoreService.exportFormStoreRecords(form.name, {
|
24
29
|
formId: form.id,
|
25
30
|
includeColumns: visibleColumns.map((visibleColumn) => visibleColumn.id),
|
26
31
|
...parameters,
|
27
32
|
});
|
28
|
-
setState({
|
33
|
+
setState((currentState) => ({
|
34
|
+
...currentState,
|
29
35
|
isDownloadingCsv: false,
|
30
36
|
downloadingCsvError: null,
|
31
|
-
});
|
37
|
+
}));
|
32
38
|
}
|
33
39
|
catch (error) {
|
34
|
-
setState({
|
40
|
+
setState((currentState) => ({
|
41
|
+
...currentState,
|
35
42
|
isDownloadingCsv: false,
|
36
43
|
downloadingCsvError: error,
|
37
|
-
});
|
44
|
+
}));
|
38
45
|
}
|
39
46
|
}, [form, parameters, visibleColumns]);
|
47
|
+
const promptDownloadCsv = React.useCallback(() => {
|
48
|
+
if (!parameters.unwindRepeatableSets &&
|
49
|
+
visibleColumns.some((c) => c.formElementType === 'repeatableSet')) {
|
50
|
+
setState((currentState) => ({
|
51
|
+
...currentState,
|
52
|
+
downloadingCsvError: null,
|
53
|
+
isPromptingDownloadCsv: true,
|
54
|
+
}));
|
55
|
+
return;
|
56
|
+
}
|
57
|
+
downloadCsv();
|
58
|
+
}, [downloadCsv, parameters.unwindRepeatableSets, visibleColumns]);
|
59
|
+
const cancelPromptDownloadCsv = React.useCallback(() => {
|
60
|
+
setState((currentState) => ({
|
61
|
+
...currentState,
|
62
|
+
isPromptingDownloadCsv: false,
|
63
|
+
}));
|
64
|
+
}, []);
|
40
65
|
return (React.createElement(React.Fragment, null,
|
41
66
|
React.createElement(Tooltip, { title: "Download submission data as a CSV file" },
|
42
|
-
React.createElement(LoadingButton, { className: "ob-form-store-download-csv-button", type: "button", loading: isDownloadingCsv, loadingPosition: "start", startIcon: React.createElement(CsvIcon, null), onClick:
|
67
|
+
React.createElement(LoadingButton, { className: "ob-form-store-download-csv-button", type: "button", loading: isDownloadingCsv, loadingPosition: "start", startIcon: React.createElement(CsvIcon, null), onClick: promptDownloadCsv,
|
43
68
|
// eslint-disable-next-line react/no-children-prop
|
44
69
|
children: React.createElement(React.Fragment, null, "Download"), ...props })),
|
45
70
|
React.createElement(ErrorSnackbar, { open: !!downloadingCsvError, onClose: clearError },
|
46
|
-
React.createElement("span", { "data-cypress": "edit-dialog-error-message" }, downloadingCsvError && downloadingCsvError.message))
|
71
|
+
React.createElement("span", { "data-cypress": "edit-dialog-error-message" }, downloadingCsvError && downloadingCsvError.message)),
|
72
|
+
React.createElement(Dialog, { open: isPromptingDownloadCsv, maxWidth: "sm", fullWidth: true, onClose: cancelPromptDownloadCsv },
|
73
|
+
React.createElement(DialogTitle, null, "Column Configuration"),
|
74
|
+
React.createElement(DialogContent, null,
|
75
|
+
React.createElement(DialogContentText, null, `Repeatable set columns will not be included in the export unless the
|
76
|
+
"Output a row per repeatable set entry" option is turned on under
|
77
|
+
"Column Configuration"`)),
|
78
|
+
React.createElement(DialogActions, null,
|
79
|
+
React.createElement(Button, { onClick: cancelPromptDownloadCsv, variant: "text" }, "Cancel"),
|
80
|
+
React.createElement(Button, { onClick: downloadCsv, startIcon: React.createElement(CsvIcon, null), color: "primary", variant: "contained" }, "Download")))));
|
47
81
|
}
|
48
82
|
export default React.memo(OneBlinkFormStoreDownloadButton);
|
49
83
|
//# sourceMappingURL=OneBlinkFormStoreDownloadButton.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"OneBlinkFormStoreDownloadButton.js","sourceRoot":"","sources":["../../../src/components/formStore/OneBlinkFormStoreDownloadButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,
|
1
|
+
{"version":3,"file":"OneBlinkFormStoreDownloadButton.js","sourceRoot":"","sources":["../../../src/components/formStore/OneBlinkFormStoreDownloadButton.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport {\n Tooltip,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogContentText,\n DialogActions,\n Button,\n} from '@mui/material'\nimport { LoadingButton } from '@mui/lab'\nimport CsvIcon from '@mui/icons-material/Download'\nimport ErrorSnackbar from '../ErrorSnackbar'\nimport { ColumnInstance } from 'react-table'\nimport { FormStoreRecord } from '@oneblink/types/typescript/submissions'\nimport { formStoreService } from '@oneblink/apps'\nimport useFormStoreTableContext from './useFormStoreTableContext'\n\nfunction OneBlinkFormStoreDownloadButton(\n props: React.ComponentProps<typeof LoadingButton>,\n) {\n const { visibleColumns, parameters, form } = useFormStoreTableContext()\n const [\n { isDownloadingCsv, isPromptingDownloadCsv, downloadingCsvError },\n setState,\n ] = React.useState<{\n isDownloadingCsv: boolean\n isPromptingDownloadCsv: boolean\n downloadingCsvError: Error | null\n }>({\n isDownloadingCsv: false,\n isPromptingDownloadCsv: false,\n downloadingCsvError: null,\n })\n\n const clearError = React.useCallback(() => {\n setState((currentState) => ({\n ...currentState,\n downloadingCsvError: null,\n }))\n }, [])\n\n const downloadCsv = React.useCallback(async () => {\n setState({\n isPromptingDownloadCsv: false,\n isDownloadingCsv: true,\n downloadingCsvError: null,\n })\n try {\n await formStoreService.exportFormStoreRecords(form.name, {\n formId: form.id,\n includeColumns: visibleColumns.map(\n (visibleColumn: ColumnInstance<FormStoreRecord>) => visibleColumn.id,\n ),\n ...parameters,\n })\n setState((currentState) => ({\n ...currentState,\n isDownloadingCsv: false,\n downloadingCsvError: null,\n }))\n } catch (error) {\n setState((currentState) => ({\n ...currentState,\n isDownloadingCsv: false,\n downloadingCsvError: error as Error,\n }))\n }\n }, [form, parameters, visibleColumns])\n\n const promptDownloadCsv = React.useCallback(() => {\n if (\n !parameters.unwindRepeatableSets &&\n visibleColumns.some((c) => c.formElementType === 'repeatableSet')\n ) {\n setState((currentState) => ({\n ...currentState,\n downloadingCsvError: null,\n isPromptingDownloadCsv: true,\n }))\n return\n }\n downloadCsv()\n }, [downloadCsv, parameters.unwindRepeatableSets, visibleColumns])\n\n const cancelPromptDownloadCsv = React.useCallback(() => {\n setState((currentState) => ({\n ...currentState,\n isPromptingDownloadCsv: false,\n }))\n }, [])\n\n return (\n <>\n <Tooltip title=\"Download submission data as a CSV file\">\n <LoadingButton\n className=\"ob-form-store-download-csv-button\"\n type=\"button\"\n loading={isDownloadingCsv}\n loadingPosition=\"start\"\n startIcon={<CsvIcon />}\n onClick={promptDownloadCsv}\n // eslint-disable-next-line react/no-children-prop\n children={<>Download</>}\n {...props}\n />\n </Tooltip>\n\n <ErrorSnackbar open={!!downloadingCsvError} onClose={clearError}>\n <span data-cypress=\"edit-dialog-error-message\">\n {downloadingCsvError && downloadingCsvError.message}\n </span>\n </ErrorSnackbar>\n\n <Dialog\n open={isPromptingDownloadCsv}\n maxWidth=\"sm\"\n fullWidth\n onClose={cancelPromptDownloadCsv}\n >\n <DialogTitle>Column Configuration</DialogTitle>\n <DialogContent>\n <DialogContentText>\n {`Repeatable set columns will not be included in the export unless the\n \"Output a row per repeatable set entry\" option is turned on under\n \"Column Configuration\"`}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button onClick={cancelPromptDownloadCsv} variant=\"text\">\n Cancel\n </Button>\n <Button\n onClick={downloadCsv}\n startIcon={<CsvIcon />}\n color=\"primary\"\n variant=\"contained\"\n >\n Download\n </Button>\n </DialogActions>\n </Dialog>\n </>\n )\n}\nexport default React.memo(OneBlinkFormStoreDownloadButton)\n"]}
|
@@ -12,6 +12,9 @@ const Table = styled('div')(({ theme }) => ({
|
|
12
12
|
display: 'inline-block',
|
13
13
|
backgroundColor: theme.palette.background.paper,
|
14
14
|
fontSize: theme.typography.body2.fontSize,
|
15
|
+
'& .ob-form-store-table-row__alternate': {
|
16
|
+
backgroundColor: theme.palette.action.hover,
|
17
|
+
},
|
15
18
|
'& .tc': {
|
16
19
|
padding: theme.spacing(1),
|
17
20
|
borderBottom: '1px solid',
|
@@ -92,6 +95,7 @@ function OneBlinkFormStoreTable() {
|
|
92
95
|
if (!parentHeaderGroup) {
|
93
96
|
return null;
|
94
97
|
}
|
98
|
+
let alternateBackground = false;
|
95
99
|
return (React.createElement(React.Fragment, null,
|
96
100
|
React.createElement(Table, { ...getTableProps(), className: "ob-form-store-table" },
|
97
101
|
React.createElement("div", { className: "thead" },
|
@@ -163,12 +167,19 @@ function OneBlinkFormStoreTable() {
|
|
163
167
|
}))),
|
164
168
|
React.createElement("div", { ...getTableBodyProps(), className: "tbody" },
|
165
169
|
// Loop over the table rows
|
166
|
-
rows.map((row) => {
|
170
|
+
rows.map((row, index) => {
|
171
|
+
var _a;
|
172
|
+
if (((_a = rows[index - 1]) === null || _a === void 0 ? void 0 : _a.original.submissionId) !==
|
173
|
+
row.original.submissionId) {
|
174
|
+
alternateBackground = !alternateBackground;
|
175
|
+
}
|
167
176
|
// Prepare the row for display
|
168
177
|
prepareRow(row);
|
169
178
|
return (
|
170
179
|
// Apply the row props
|
171
|
-
React.createElement("div", { ...row.getRowProps(), key: row.id, className:
|
180
|
+
React.createElement("div", { ...row.getRowProps(), key: row.id, className: clsx('tr ob-form-store-table-row', {
|
181
|
+
'ob-form-store-table-row__alternate': alternateBackground,
|
182
|
+
}) },
|
172
183
|
// Loop over the rows cells
|
173
184
|
row.cells.map((cell) => {
|
174
185
|
// Apply the cell props
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"OneBlinkFormStoreTable.js","sourceRoot":"","sources":["../../../src/components/formStore/OneBlinkFormStoreTable.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport clsx from 'clsx'\nimport { styled, Tooltip } from '@mui/material'\nimport {\n FilterList as FilterListIcon,\n Warning as WarningIcon,\n ArrowDownward,\n} from '@mui/icons-material'\nimport { IsHoveringProvider } from '../../hooks/useIsHovering'\nimport HeaderCellMoreButton from './table/HeaderCellMoreButton'\nimport useFormStoreTableContext from './useFormStoreTableContext'\n\nconst SortingIcon = styled(ArrowDownward)(({ theme }) => ({\n transition: theme.transitions.create('transform'),\n}))\n\nconst Table = styled('div')(({ theme }) => ({\n display: 'inline-block',\n backgroundColor: theme.palette.background.paper,\n fontSize: theme.typography.body2.fontSize,\n '& .tc': {\n padding: theme.spacing(1),\n borderBottom: '1px solid',\n borderBottomColor: theme.palette.divider,\n display: 'flex',\n alignItems: 'center',\n '&.is-clickable': {\n cursor: 'pointer',\n transition: theme.transitions.create('transform'),\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n },\n },\n '& .td': {\n position: 'relative',\n borderRight: '1px solid',\n borderRightColor: theme.palette.divider,\n overflowX: 'hidden',\n // minus 1 to cater for the border\n minHeight: `${parseInt(theme.spacing(5.5)) - 1}px`,\n '&.is-resizing': {\n borderRightStyle: 'dashed',\n },\n },\n '& .th': {\n position: 'relative',\n fontWeight: theme.typography.fontWeightBold,\n paddingRight: 0,\n borderBottomWidth: '2px',\n '& .th-content': {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderRight: '1px solid',\n borderRightColor: theme.palette.divider,\n paddingRight: theme.spacing(),\n '& .th-label': {\n display: 'inline-flex',\n alignItems: 'center',\n '& .th-icon': {\n marginLeft: theme.spacing(),\n },\n },\n },\n '& .resizer': {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderWidth: 0,\n borderLeftStyle: 'solid',\n borderRightStyle: 'solid',\n borderColor: theme.palette.divider,\n paddingTop: theme.spacing(),\n paddingBottom: theme.spacing(),\n paddingRight: `calc(${theme.spacing(1)} + 1px)`,\n position: 'absolute',\n right: 0,\n top: theme.spacing(0.5),\n bottom: theme.spacing(0.5),\n transform: `translateX(calc(${theme.spacing(0.5)} + 1px))`,\n zIndex: 1,\n // prevents from scrolling while dragging on touch devices\n touchAction: 'none',\n '&:hover': {\n borderWidth: '1px',\n },\n '&.is-resizing': {\n borderWidth: '1px',\n borderColor: theme.palette.grey[700],\n },\n },\n },\n}))\n\nfunction OneBlinkFormStoreTable() {\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups: [parentHeaderGroup],\n rows,\n prepareRow,\n onChangeParameters,\n } = useFormStoreTableContext()\n\n if (!parentHeaderGroup) {\n return null\n }\n\n return (\n <>\n <Table {...getTableProps()} className=\"ob-form-store-table\">\n <div className=\"thead\">\n <div\n {...parentHeaderGroup.getHeaderGroupProps()}\n className=\"tr ob-form-store-table-header-row\"\n >\n {\n // Loop over the headers in each row\n parentHeaderGroup.headers.map((headerGroup) => {\n const sortingProperty = headerGroup.sorting?.property\n const sortingDirection = headerGroup.sorting?.direction\n\n return (\n <Tooltip\n title={headerGroup.tooltip || ''}\n arrow\n key={headerGroup.id}\n PopperProps={{\n sx: {\n zIndex: 'drawer',\n },\n }}\n >\n <div\n className={clsx('th tc ob-form-store-table-header-cell', {\n 'is-clickable': !!sortingProperty,\n })}\n onClick={\n sortingProperty\n ? () => {\n onChangeParameters((currentParameters) => {\n switch (sortingDirection) {\n case 'ascending': {\n return {\n ...currentParameters,\n sorting: [\n {\n property: sortingProperty,\n direction: 'descending',\n },\n ],\n }\n }\n case 'descending': {\n return {\n ...currentParameters,\n sorting: undefined,\n }\n }\n default: {\n return {\n ...currentParameters,\n sorting: [\n {\n property: sortingProperty,\n direction: 'ascending',\n },\n ],\n }\n }\n }\n }, false)\n }\n : undefined\n }\n // Apply the header cell props\n {...headerGroup.getHeaderProps()}\n >\n <IsHoveringProvider className=\"th-content\">\n <div className=\"th-label\">\n <span>{headerGroup.headerText}</span>\n {sortingDirection && (\n <SortingIcon\n fontSize=\"small\"\n color=\"primary\"\n sx={\n sortingDirection === 'ascending'\n ? {\n transform: 'rotate(180deg)',\n }\n : undefined\n }\n className=\"th-icon\"\n />\n )}\n {headerGroup.filter?.isInvalid ? (\n <Tooltip\n title={\n headerGroup.filter?.validationMessage || ''\n }\n >\n <WarningIcon\n fontSize=\"small\"\n color=\"error\"\n className=\"th-icon\"\n />\n </Tooltip>\n ) : headerGroup.filter?.value ? (\n <FilterListIcon\n fontSize=\"small\"\n color=\"primary\"\n className=\"th-icon\"\n />\n ) : null}\n </div>\n <HeaderCellMoreButton\n headerGroup={headerGroup}\n onHide={headerGroup.toggleHidden}\n />\n <div\n {...headerGroup.getResizerProps()}\n className={clsx('resizer', {\n 'is-resizing': headerGroup.isResizing,\n })}\n onClick={(event) => {\n event.stopPropagation()\n }}\n />\n </IsHoveringProvider>\n </div>\n </Tooltip>\n )\n })\n }\n </div>\n </div>\n <div {...getTableBodyProps()} className=\"tbody\">\n {\n // Loop over the table rows\n rows.map((row) => {\n // Prepare the row for display\n prepareRow(row)\n return (\n // Apply the row props\n <div\n {...row.getRowProps()}\n key={row.id}\n className=\"tr ob-form-store-table-row\"\n >\n {\n // Loop over the rows cells\n row.cells.map((cell) => {\n // Apply the cell props\n return (\n <IsHoveringProvider\n {...cell.getCellProps()}\n key={cell.column.id}\n className={clsx(\n 'td tc ob-form-store-table-row-cell',\n {\n 'is-resizing': cell.column.isResizing,\n },\n )}\n >\n {\n // Render the cell contents\n cell.render('Cell')\n }\n </IsHoveringProvider>\n )\n })\n }\n </div>\n )\n })\n }\n </div>\n </Table>\n </>\n )\n}\n\nexport default React.memo(OneBlinkFormStoreTable)\n"]}
|
1
|
+
{"version":3,"file":"OneBlinkFormStoreTable.js","sourceRoot":"","sources":["../../../src/components/formStore/OneBlinkFormStoreTable.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport clsx from 'clsx'\nimport { styled, Tooltip } from '@mui/material'\nimport {\n FilterList as FilterListIcon,\n Warning as WarningIcon,\n ArrowDownward,\n} from '@mui/icons-material'\nimport { IsHoveringProvider } from '../../hooks/useIsHovering'\nimport HeaderCellMoreButton from './table/HeaderCellMoreButton'\nimport useFormStoreTableContext from './useFormStoreTableContext'\n\nconst SortingIcon = styled(ArrowDownward)(({ theme }) => ({\n transition: theme.transitions.create('transform'),\n}))\n\nconst Table = styled('div')(({ theme }) => ({\n display: 'inline-block',\n backgroundColor: theme.palette.background.paper,\n fontSize: theme.typography.body2.fontSize,\n '& .ob-form-store-table-row__alternate': {\n backgroundColor: theme.palette.action.hover,\n },\n '& .tc': {\n padding: theme.spacing(1),\n borderBottom: '1px solid',\n borderBottomColor: theme.palette.divider,\n display: 'flex',\n alignItems: 'center',\n '&.is-clickable': {\n cursor: 'pointer',\n transition: theme.transitions.create('transform'),\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n },\n },\n '& .td': {\n position: 'relative',\n borderRight: '1px solid',\n borderRightColor: theme.palette.divider,\n overflowX: 'hidden',\n // minus 1 to cater for the border\n minHeight: `${parseInt(theme.spacing(5.5)) - 1}px`,\n '&.is-resizing': {\n borderRightStyle: 'dashed',\n },\n },\n '& .th': {\n position: 'relative',\n fontWeight: theme.typography.fontWeightBold,\n paddingRight: 0,\n borderBottomWidth: '2px',\n '& .th-content': {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderRight: '1px solid',\n borderRightColor: theme.palette.divider,\n paddingRight: theme.spacing(),\n '& .th-label': {\n display: 'inline-flex',\n alignItems: 'center',\n '& .th-icon': {\n marginLeft: theme.spacing(),\n },\n },\n },\n '& .resizer': {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderWidth: 0,\n borderLeftStyle: 'solid',\n borderRightStyle: 'solid',\n borderColor: theme.palette.divider,\n paddingTop: theme.spacing(),\n paddingBottom: theme.spacing(),\n paddingRight: `calc(${theme.spacing(1)} + 1px)`,\n position: 'absolute',\n right: 0,\n top: theme.spacing(0.5),\n bottom: theme.spacing(0.5),\n transform: `translateX(calc(${theme.spacing(0.5)} + 1px))`,\n zIndex: 1,\n // prevents from scrolling while dragging on touch devices\n touchAction: 'none',\n '&:hover': {\n borderWidth: '1px',\n },\n '&.is-resizing': {\n borderWidth: '1px',\n borderColor: theme.palette.grey[700],\n },\n },\n },\n}))\n\nfunction OneBlinkFormStoreTable() {\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups: [parentHeaderGroup],\n rows,\n prepareRow,\n onChangeParameters,\n } = useFormStoreTableContext()\n\n if (!parentHeaderGroup) {\n return null\n }\n\n let alternateBackground = false\n\n return (\n <>\n <Table {...getTableProps()} className=\"ob-form-store-table\">\n <div className=\"thead\">\n <div\n {...parentHeaderGroup.getHeaderGroupProps()}\n className=\"tr ob-form-store-table-header-row\"\n >\n {\n // Loop over the headers in each row\n parentHeaderGroup.headers.map((headerGroup) => {\n const sortingProperty = headerGroup.sorting?.property\n const sortingDirection = headerGroup.sorting?.direction\n\n return (\n <Tooltip\n title={headerGroup.tooltip || ''}\n arrow\n key={headerGroup.id}\n PopperProps={{\n sx: {\n zIndex: 'drawer',\n },\n }}\n >\n <div\n className={clsx('th tc ob-form-store-table-header-cell', {\n 'is-clickable': !!sortingProperty,\n })}\n onClick={\n sortingProperty\n ? () => {\n onChangeParameters((currentParameters) => {\n switch (sortingDirection) {\n case 'ascending': {\n return {\n ...currentParameters,\n sorting: [\n {\n property: sortingProperty,\n direction: 'descending',\n },\n ],\n }\n }\n case 'descending': {\n return {\n ...currentParameters,\n sorting: undefined,\n }\n }\n default: {\n return {\n ...currentParameters,\n sorting: [\n {\n property: sortingProperty,\n direction: 'ascending',\n },\n ],\n }\n }\n }\n }, false)\n }\n : undefined\n }\n // Apply the header cell props\n {...headerGroup.getHeaderProps()}\n >\n <IsHoveringProvider className=\"th-content\">\n <div className=\"th-label\">\n <span>{headerGroup.headerText}</span>\n {sortingDirection && (\n <SortingIcon\n fontSize=\"small\"\n color=\"primary\"\n sx={\n sortingDirection === 'ascending'\n ? {\n transform: 'rotate(180deg)',\n }\n : undefined\n }\n className=\"th-icon\"\n />\n )}\n {headerGroup.filter?.isInvalid ? (\n <Tooltip\n title={\n headerGroup.filter?.validationMessage || ''\n }\n >\n <WarningIcon\n fontSize=\"small\"\n color=\"error\"\n className=\"th-icon\"\n />\n </Tooltip>\n ) : headerGroup.filter?.value ? (\n <FilterListIcon\n fontSize=\"small\"\n color=\"primary\"\n className=\"th-icon\"\n />\n ) : null}\n </div>\n <HeaderCellMoreButton\n headerGroup={headerGroup}\n onHide={headerGroup.toggleHidden}\n />\n <div\n {...headerGroup.getResizerProps()}\n className={clsx('resizer', {\n 'is-resizing': headerGroup.isResizing,\n })}\n onClick={(event) => {\n event.stopPropagation()\n }}\n />\n </IsHoveringProvider>\n </div>\n </Tooltip>\n )\n })\n }\n </div>\n </div>\n <div {...getTableBodyProps()} className=\"tbody\">\n {\n // Loop over the table rows\n rows.map((row, index) => {\n if (\n rows[index - 1]?.original.submissionId !==\n row.original.submissionId\n ) {\n alternateBackground = !alternateBackground\n }\n // Prepare the row for display\n prepareRow(row)\n return (\n // Apply the row props\n <div\n {...row.getRowProps()}\n key={row.id}\n className={clsx('tr ob-form-store-table-row', {\n 'ob-form-store-table-row__alternate': alternateBackground,\n })}\n >\n {\n // Loop over the rows cells\n row.cells.map((cell) => {\n // Apply the cell props\n return (\n <IsHoveringProvider\n {...cell.getCellProps()}\n key={cell.column.id}\n className={clsx(\n 'td tc ob-form-store-table-row-cell',\n {\n 'is-resizing': cell.column.isResizing,\n },\n )}\n >\n {\n // Render the cell contents\n cell.render('Cell')\n }\n </IsHoveringProvider>\n )\n })\n }\n </div>\n )\n })\n }\n </div>\n </Table>\n </>\n )\n}\n\nexport default React.memo(OneBlinkFormStoreTable)\n"]}
|
@@ -18,7 +18,10 @@ function FormElementTableCell({ formElement, submission, allowCopy }) {
|
|
18
18
|
}
|
19
19
|
switch (formElement.type) {
|
20
20
|
case 'repeatableSet': {
|
21
|
-
|
21
|
+
if (!Array.isArray(unknown)) {
|
22
|
+
break;
|
23
|
+
}
|
24
|
+
return React.createElement(RepeatableSetCell, { formElement: formElement, value: unknown });
|
22
25
|
}
|
23
26
|
case 'location': {
|
24
27
|
const value = unknown;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"FormElementTableCell.js","sourceRoot":"","sources":["../../../../src/components/formStore/table/FormElementTableCell.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { Link, Typography } from '@mui/material'\nimport { localisationService } from '@oneblink/apps'\nimport { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport { abnService } from '@oneblink/sdk-core'\nimport {\n FileChip,\n FilesElementDataTableCellContent,\n MultiSelectFormElementTableCellContent,\n getSelectedOptionLabel,\n} from '../display/ElementDisplay'\nimport RepeatableSetCell from './RepeatableSetCell'\nimport TableCellCopyButton from './TableCellCopyButton'\nimport { format } from 'date-fns'\nimport { ABNRecord } from '@oneblink/types/typescript/misc'\nimport { GeoscapeAddress } from '@oneblink/types/typescript/geoscape'\nimport { PointAddress } from '@oneblink/types/typescript/point'\n\ntype Props = {\n formElement: FormTypes.FormElement\n submission: SubmissionTypes.S3SubmissionData['submission'] | undefined\n allowCopy: boolean\n}\n\nconst {\n shortDate: shortDateFormat,\n time: timeFormat,\n shortDateTime: shortDateTimeFormat,\n} = localisationService.getDateFnsFormats()\n\nfunction FormElementTableCell({ formElement, submission, allowCopy }: Props) {\n if (formElement.type === 'page' || formElement.type === 'section') {\n return null\n }\n const unknown = submission?.[formElement.name]\n if (unknown === undefined || unknown === null) {\n return null\n }\n\n switch (formElement.type) {\n case 'repeatableSet': {\n return (\n <RepeatableSetCell\n formElement={formElement}\n value={unknown as Record<string, unknown>[]}\n />\n )\n }\n\n case 'location': {\n const value = unknown as {\n latitude: number\n longitude: number\n }\n if (!value.latitude || !value.longitude) {\n break\n }\n\n const latLong = `${value.latitude},${value.longitude}`\n return (\n <>\n <div>\n <Typography variant=\"inherit\" component=\"p\">\n <Link\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={`https://maps.google.com/?q=${latLong}`}\n >\n View in Google Maps\n </Link>\n </Typography>\n <Typography variant=\"inherit\" component=\"p\" color=\"textSecondary\">\n Latitude: {value.latitude}\n </Typography>\n <Typography variant=\"inherit\" component=\"p\" color=\"textSecondary\">\n Longitude: {value.longitude}\n </Typography>\n </div>\n <TableCellCopyButton isHidden={!allowCopy} text={latLong} />\n </>\n )\n }\n\n case 'camera':\n case 'draw': {\n return (\n <FileChip\n file={unknown as React.ComponentProps<typeof FileChip>['file']}\n />\n )\n }\n\n case 'textarea': {\n const value = unknown as string\n return (\n <>\n <span\n style={{\n whiteSpace: 'pre-line',\n }}\n >\n {value}\n </span>\n <TableCellCopyButton isHidden={!allowCopy} text={value} />\n </>\n )\n }\n\n case 'date': {\n const value = unknown as string\n const text = format(new Date(value), shortDateFormat)\n return (\n <>\n {text}\n <TableCellCopyButton isHidden={!allowCopy} text={text} />\n </>\n )\n }\n\n case 'time': {\n const value = unknown as string\n const text = format(new Date(value), timeFormat)\n return (\n <>\n {text}\n <TableCellCopyButton isHidden={!allowCopy} text={text} />\n </>\n )\n }\n\n case 'datetime': {\n const value = unknown as string\n const text = format(new Date(value), shortDateTimeFormat)\n return (\n <>\n {text}\n <TableCellCopyButton isHidden={!allowCopy} text={text} />\n </>\n )\n }\n\n case 'number': {\n const value = unknown as number\n const text = localisationService.formatNumber(value)\n return (\n <>\n {text}\n <TableCellCopyButton isHidden={!allowCopy} text={text} />\n </>\n )\n }\n\n case 'radio':\n case 'autocomplete':\n case 'checkboxes':\n case 'select': {\n if (\n formElement.type === 'checkboxes' ||\n (formElement.type === 'select' && formElement.multi)\n ) {\n const value = unknown as string\n if (!Array.isArray(value) || !value.length) {\n break\n }\n const text = value\n .map((selection) => getSelectedOptionLabel(formElement, selection))\n .join(', ')\n return (\n <>\n <MultiSelectFormElementTableCellContent\n value={value}\n formElement={formElement}\n />\n <TableCellCopyButton isHidden={!allowCopy} text={text} />\n </>\n )\n } else {\n const value = unknown as string\n const text = getSelectedOptionLabel(formElement, value)\n return (\n <>\n {text}\n <TableCellCopyButton isHidden={!allowCopy} text={text} />\n </>\n )\n }\n }\n\n case 'email': {\n const value = unknown as string\n return (\n <>\n <Link\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={`mailto:${value}`}\n >\n {value}\n </Link>\n <TableCellCopyButton isHidden={!allowCopy} text={value} />\n </>\n )\n }\n case 'telephone': {\n const value = unknown as string\n return (\n <>\n <Link target=\"_blank\" rel=\"noopener noreferrer\" href={`tel:${value}`}>\n {value}\n </Link>\n <TableCellCopyButton isHidden={!allowCopy} text={value} />\n </>\n )\n }\n case 'text':\n case 'bsb':\n case 'barcodeScanner': {\n const value = unknown as string\n return (\n <>\n {value}\n <TableCellCopyButton isHidden={!allowCopy} text={value} />\n </>\n )\n }\n\n case 'files': {\n const value = unknown as React.ComponentProps<\n typeof FilesElementDataTableCellContent\n >['value']\n if (!Array.isArray(value) || !value.length) {\n break\n }\n return <FilesElementDataTableCellContent value={value} />\n }\n\n case 'calculation': {\n const value = unknown as number\n if (formElement.displayAsCurrency) {\n const text = localisationService.formatCurrency(value)\n return (\n <>\n {text}\n <TableCellCopyButton\n isHidden={!allowCopy}\n text={value.toString()}\n />\n </>\n )\n } else {\n const text = localisationService.formatNumber(value)\n return (\n <>\n {text}\n <TableCellCopyButton\n isHidden={!allowCopy}\n text={value.toString()}\n />\n </>\n )\n }\n }\n\n case 'civicaStreetName': {\n const value = unknown as {\n formattedStreet: string\n }\n return (\n <>\n {value.formattedStreet}\n <TableCellCopyButton\n isHidden={!allowCopy}\n text={value.formattedStreet}\n />\n </>\n )\n }\n\n case 'civicaNameRecord': {\n const value = unknown as {\n title?: string\n givenName1?: string\n familyName?: string\n emailAddress: string\n }\n const text =\n [value?.title, value?.givenName1, value?.familyName]\n .filter((t) => t)\n .join(' ') || value?.emailAddress\n return (\n <>\n {text}\n <TableCellCopyButton isHidden={!allowCopy} text={text} />\n </>\n )\n }\n\n case 'geoscapeAddress': {\n const value = unknown as GeoscapeAddress\n const fullAddress = value?.addressDetails?.formattedAddress || (\n <>\n Geoscape Address ID: <i>{value.addressId}</i>\n </>\n )\n return (\n <>\n {fullAddress}\n <TableCellCopyButton\n isHidden={!allowCopy}\n text={fullAddress as string}\n />\n </>\n )\n }\n\n case 'pointAddress': {\n const value = unknown as PointAddress\n const fullAddress = value?.addressDetails?.formattedAddress || (\n <>\n NSW Point Address ID: <i>{value.addressId}</i>\n </>\n )\n return (\n <>\n {fullAddress}\n <TableCellCopyButton\n isHidden={!allowCopy}\n text={fullAddress as string}\n />\n </>\n )\n }\n\n case 'boolean': {\n const value = unknown as boolean\n const text = value ? 'Yes' : 'No'\n return (\n <>\n {text}\n <TableCellCopyButton isHidden={!allowCopy} text={text} />\n </>\n )\n }\n\n case 'abn': {\n const value = unknown as ABNRecord\n const abnNumber = abnService.displayABNNumberFromABNRecord(value)\n return (\n <>\n <Link\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={`https://www.abr.business.gov.au/ABN/View/${abnNumber}`}\n >\n {abnNumber} |{' '}\n <i>{abnService.displayBusinessNameFromABNRecord(value)}</i>\n </Link>\n <TableCellCopyButton isHidden={!allowCopy} text={abnNumber} />\n </>\n )\n }\n\n case 'html':\n case 'form':\n case 'infoPage':\n case 'captcha':\n case 'image':\n case 'heading':\n case 'summary': {\n break\n }\n\n default: {\n console.warn(\n 'Unsupported element type in Submission Data rendering',\n formElement,\n )\n }\n }\n\n return null\n}\n\nexport default React.memo(FormElementTableCell)\n"]}
|
1
|
+
{"version":3,"file":"FormElementTableCell.js","sourceRoot":"","sources":["../../../../src/components/formStore/table/FormElementTableCell.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { Link, Typography } from '@mui/material'\nimport { localisationService } from '@oneblink/apps'\nimport { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport { abnService } from '@oneblink/sdk-core'\nimport {\n FileChip,\n FilesElementDataTableCellContent,\n MultiSelectFormElementTableCellContent,\n getSelectedOptionLabel,\n} from '../display/ElementDisplay'\nimport RepeatableSetCell from './RepeatableSetCell'\nimport TableCellCopyButton from './TableCellCopyButton'\nimport { format } from 'date-fns'\nimport { ABNRecord } from '@oneblink/types/typescript/misc'\nimport { GeoscapeAddress } from '@oneblink/types/typescript/geoscape'\nimport { PointAddress } from '@oneblink/types/typescript/point'\n\ntype Props = {\n formElement: FormTypes.FormElement\n submission: SubmissionTypes.S3SubmissionData['submission'] | undefined\n allowCopy: boolean\n}\n\nconst {\n shortDate: shortDateFormat,\n time: timeFormat,\n shortDateTime: shortDateTimeFormat,\n} = localisationService.getDateFnsFormats()\n\nfunction FormElementTableCell({ formElement, submission, allowCopy }: Props) {\n if (formElement.type === 'page' || formElement.type === 'section') {\n return null\n }\n const unknown = submission?.[formElement.name]\n if (unknown === undefined || unknown === null) {\n return null\n }\n\n switch (formElement.type) {\n case 'repeatableSet': {\n if (!Array.isArray(unknown)) {\n break\n }\n return <RepeatableSetCell formElement={formElement} value={unknown} />\n }\n\n case 'location': {\n const value = unknown as {\n latitude: number\n longitude: number\n }\n if (!value.latitude || !value.longitude) {\n break\n }\n\n const latLong = `${value.latitude},${value.longitude}`\n return (\n <>\n <div>\n <Typography variant=\"inherit\" component=\"p\">\n <Link\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={`https://maps.google.com/?q=${latLong}`}\n >\n View in Google Maps\n </Link>\n </Typography>\n <Typography variant=\"inherit\" component=\"p\" color=\"textSecondary\">\n Latitude: {value.latitude}\n </Typography>\n <Typography variant=\"inherit\" component=\"p\" color=\"textSecondary\">\n Longitude: {value.longitude}\n </Typography>\n </div>\n <TableCellCopyButton isHidden={!allowCopy} text={latLong} />\n </>\n )\n }\n\n case 'camera':\n case 'draw': {\n return (\n <FileChip\n file={unknown as React.ComponentProps<typeof FileChip>['file']}\n />\n )\n }\n\n case 'textarea': {\n const value = unknown as string\n return (\n <>\n <span\n style={{\n whiteSpace: 'pre-line',\n }}\n >\n {value}\n </span>\n <TableCellCopyButton isHidden={!allowCopy} text={value} />\n </>\n )\n }\n\n case 'date': {\n const value = unknown as string\n const text = format(new Date(value), shortDateFormat)\n return (\n <>\n {text}\n <TableCellCopyButton isHidden={!allowCopy} text={text} />\n </>\n )\n }\n\n case 'time': {\n const value = unknown as string\n const text = format(new Date(value), timeFormat)\n return (\n <>\n {text}\n <TableCellCopyButton isHidden={!allowCopy} text={text} />\n </>\n )\n }\n\n case 'datetime': {\n const value = unknown as string\n const text = format(new Date(value), shortDateTimeFormat)\n return (\n <>\n {text}\n <TableCellCopyButton isHidden={!allowCopy} text={text} />\n </>\n )\n }\n\n case 'number': {\n const value = unknown as number\n const text = localisationService.formatNumber(value)\n return (\n <>\n {text}\n <TableCellCopyButton isHidden={!allowCopy} text={text} />\n </>\n )\n }\n\n case 'radio':\n case 'autocomplete':\n case 'checkboxes':\n case 'select': {\n if (\n formElement.type === 'checkboxes' ||\n (formElement.type === 'select' && formElement.multi)\n ) {\n const value = unknown as string\n if (!Array.isArray(value) || !value.length) {\n break\n }\n const text = value\n .map((selection) => getSelectedOptionLabel(formElement, selection))\n .join(', ')\n return (\n <>\n <MultiSelectFormElementTableCellContent\n value={value}\n formElement={formElement}\n />\n <TableCellCopyButton isHidden={!allowCopy} text={text} />\n </>\n )\n } else {\n const value = unknown as string\n const text = getSelectedOptionLabel(formElement, value)\n return (\n <>\n {text}\n <TableCellCopyButton isHidden={!allowCopy} text={text} />\n </>\n )\n }\n }\n\n case 'email': {\n const value = unknown as string\n return (\n <>\n <Link\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={`mailto:${value}`}\n >\n {value}\n </Link>\n <TableCellCopyButton isHidden={!allowCopy} text={value} />\n </>\n )\n }\n case 'telephone': {\n const value = unknown as string\n return (\n <>\n <Link target=\"_blank\" rel=\"noopener noreferrer\" href={`tel:${value}`}>\n {value}\n </Link>\n <TableCellCopyButton isHidden={!allowCopy} text={value} />\n </>\n )\n }\n case 'text':\n case 'bsb':\n case 'barcodeScanner': {\n const value = unknown as string\n return (\n <>\n {value}\n <TableCellCopyButton isHidden={!allowCopy} text={value} />\n </>\n )\n }\n\n case 'files': {\n const value = unknown as React.ComponentProps<\n typeof FilesElementDataTableCellContent\n >['value']\n if (!Array.isArray(value) || !value.length) {\n break\n }\n return <FilesElementDataTableCellContent value={value} />\n }\n\n case 'calculation': {\n const value = unknown as number\n if (formElement.displayAsCurrency) {\n const text = localisationService.formatCurrency(value)\n return (\n <>\n {text}\n <TableCellCopyButton\n isHidden={!allowCopy}\n text={value.toString()}\n />\n </>\n )\n } else {\n const text = localisationService.formatNumber(value)\n return (\n <>\n {text}\n <TableCellCopyButton\n isHidden={!allowCopy}\n text={value.toString()}\n />\n </>\n )\n }\n }\n\n case 'civicaStreetName': {\n const value = unknown as {\n formattedStreet: string\n }\n return (\n <>\n {value.formattedStreet}\n <TableCellCopyButton\n isHidden={!allowCopy}\n text={value.formattedStreet}\n />\n </>\n )\n }\n\n case 'civicaNameRecord': {\n const value = unknown as {\n title?: string\n givenName1?: string\n familyName?: string\n emailAddress: string\n }\n const text =\n [value?.title, value?.givenName1, value?.familyName]\n .filter((t) => t)\n .join(' ') || value?.emailAddress\n return (\n <>\n {text}\n <TableCellCopyButton isHidden={!allowCopy} text={text} />\n </>\n )\n }\n\n case 'geoscapeAddress': {\n const value = unknown as GeoscapeAddress\n const fullAddress = value?.addressDetails?.formattedAddress || (\n <>\n Geoscape Address ID: <i>{value.addressId}</i>\n </>\n )\n return (\n <>\n {fullAddress}\n <TableCellCopyButton\n isHidden={!allowCopy}\n text={fullAddress as string}\n />\n </>\n )\n }\n\n case 'pointAddress': {\n const value = unknown as PointAddress\n const fullAddress = value?.addressDetails?.formattedAddress || (\n <>\n NSW Point Address ID: <i>{value.addressId}</i>\n </>\n )\n return (\n <>\n {fullAddress}\n <TableCellCopyButton\n isHidden={!allowCopy}\n text={fullAddress as string}\n />\n </>\n )\n }\n\n case 'boolean': {\n const value = unknown as boolean\n const text = value ? 'Yes' : 'No'\n return (\n <>\n {text}\n <TableCellCopyButton isHidden={!allowCopy} text={text} />\n </>\n )\n }\n\n case 'abn': {\n const value = unknown as ABNRecord\n const abnNumber = abnService.displayABNNumberFromABNRecord(value)\n return (\n <>\n <Link\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={`https://www.abr.business.gov.au/ABN/View/${abnNumber}`}\n >\n {abnNumber} |{' '}\n <i>{abnService.displayBusinessNameFromABNRecord(value)}</i>\n </Link>\n <TableCellCopyButton isHidden={!allowCopy} text={abnNumber} />\n </>\n )\n }\n\n case 'html':\n case 'form':\n case 'infoPage':\n case 'captcha':\n case 'image':\n case 'heading':\n case 'summary': {\n break\n }\n\n default: {\n console.warn(\n 'Unsupported element type in Submission Data rendering',\n formElement,\n )\n }\n }\n\n return null\n}\n\nexport default React.memo(FormElementTableCell)\n"]}
|
@@ -32,7 +32,9 @@ const RepeatableSetCell = ({ formElement, value }) => {
|
|
32
32
|
parentElementNames: [],
|
33
33
|
initialColumns: [],
|
34
34
|
allowCopy: false,
|
35
|
-
filters:
|
35
|
+
filters: undefined,
|
36
|
+
sorting: undefined,
|
37
|
+
unwindRepeatableSets: undefined,
|
36
38
|
}), [formElement.elements]);
|
37
39
|
const { rows, prepareRow } = useTable({
|
38
40
|
columns,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"RepeatableSetCell.js","sourceRoot":"","sources":["../../../../src/components/formStore/table/RepeatableSetCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEzE,OAAO,eAAe,MAAM,gCAAgC,CAAA;AAC5D,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,0BAA0B,MAAM,8BAA8B,CAAA;AAErE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,KAAK,EAAE,MAAM;CACd,CAAC,CAAA;AACF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5C,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,eAAe;IAC/B,aAAa,EAAE,KAAK,CAAC,OAAO,EAAE;IAC9B,KAAK,EAAE,MAAM;CACd,CAAC,CAAC,CAAA;AAEH,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,EAAE,CAAC;IACP,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE;IAC3B,SAAS,EAAE,OAAO;IAClB,KAAK,EAAE,MAAM;CACd,CAAC,CAAC,CAAA;AAEH,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC7B,CAAC,CAAC,CAAA;AAOH,MAAM,iBAAiB,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAS,EAAE,EAAE;IAC1D,MAAM,CAAC,SAAS,EAAE,AAAD,EAAG,AAAD,EAAG,gBAAgB,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IAChE,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAC3B,GAAG,EAAE,CACH,eAAe,CAAC;QACd,kBAAkB,EAAE,GAAG,EAAE,GAAE,CAAC;QAC5B,YAAY,EAAE,WAAW,CAAC,QAAQ;QAClC,kBAAkB,EAAE,EAAE;QACtB,cAAc,EAAE,EAAE;QAClB,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,EAAE;
|
1
|
+
{"version":3,"file":"RepeatableSetCell.js","sourceRoot":"","sources":["../../../../src/components/formStore/table/RepeatableSetCell.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { Typography, Divider as MuiDivider, styled } from '@mui/material'\nimport { FormTypes } from '@oneblink/types'\nimport useBooleanState from '../../../hooks/useBooleanState'\nimport generateColumns from './generateColumns'\nimport { useTable } from 'react-table'\nimport RepeatableSetCellAccordion from './RepeatableSetCellAccordion'\n\nconst Wrapper = styled('div')({\n width: '100%',\n})\nconst CellRow = styled('div')(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingBottom: theme.spacing(),\n width: '100%',\n}))\n\nconst CellValue = styled('span')(({ theme }) => ({\n flex: 2,\n marginLeft: theme.spacing(),\n textAlign: 'right',\n width: '100%',\n}))\n\nconst Divider = styled(MuiDivider)(({ theme }) => ({\n margin: theme.spacing(1, -2),\n}))\n\ntype Props = {\n value: Array<Record<string, unknown>>\n formElement: FormTypes.RepeatableSetElement\n}\n\nconst RepeatableSetCell = ({ formElement, value }: Props) => {\n const [isVisible, , , toggleVisibility] = useBooleanState(false)\n const hasMultipleEntries = value.length > 1\n const columns = React.useMemo(\n () =>\n generateColumns({\n onChangeParameters: () => {},\n formElements: formElement.elements,\n parentElementNames: [],\n initialColumns: [],\n allowCopy: false,\n filters: undefined,\n sorting: undefined,\n unwindRepeatableSets: undefined,\n }),\n [formElement.elements],\n )\n const { rows, prepareRow } = useTable({\n columns,\n data: value.map((entry) => ({ submission: entry })),\n })\n\n return (\n <RepeatableSetCellAccordion\n title={`${value.length} Entr${hasMultipleEntries ? 'ies' : 'y'}`}\n isOpen={isVisible}\n onChange={toggleVisibility}\n >\n <Wrapper>\n {rows.map((row, i) => {\n const isLast = i === rows.length - 1\n prepareRow(row)\n return (\n <React.Fragment key={row.id}>\n {row.cells.map((cell) => {\n const cellValue = cell.render('Cell')\n if (!cellValue) return null\n return (\n <CellRow key={cell.column.id}>\n <span>\n <Typography color=\"textSecondary\" variant=\"body2\">\n {cell.column.headerText}:\n </Typography>\n </span>\n <CellValue>{cellValue}</CellValue>\n </CellRow>\n )\n })}\n {!isLast && <Divider />}\n </React.Fragment>\n )\n })}\n </Wrapper>\n </RepeatableSetCellAccordion>\n )\n}\n\nexport default React.memo<Props>(RepeatableSetCell)\n"]}
|
@@ -13,5 +13,12 @@ declare const generateColumns: <T extends {
|
|
13
13
|
parentElementNames: string[];
|
14
14
|
initialColumns: ColumnWithCell<T>[];
|
15
15
|
allowCopy: boolean;
|
16
|
-
} &
|
16
|
+
} & {
|
17
|
+
filters: formStoreService.FormStoreFilters | undefined;
|
18
|
+
unwindRepeatableSets: boolean | undefined;
|
19
|
+
sorting: {
|
20
|
+
property: string;
|
21
|
+
direction: "ascending" | "descending";
|
22
|
+
}[] | undefined;
|
23
|
+
}) => ColumnWithCell<T>[];
|
17
24
|
export default generateColumns;
|
@@ -146,6 +146,8 @@ const generateColumns = ({ formElements, onChangeParameters, filters, sorting, u
|
|
146
146
|
initialColumns: columns,
|
147
147
|
filters,
|
148
148
|
allowCopy,
|
149
|
+
sorting,
|
150
|
+
unwindRepeatableSets,
|
149
151
|
});
|
150
152
|
return columns;
|
151
153
|
}
|
@@ -159,6 +161,8 @@ const generateColumns = ({ formElements, onChangeParameters, filters, sorting, u
|
|
159
161
|
filters,
|
160
162
|
initialColumns: columns,
|
161
163
|
allowCopy,
|
164
|
+
sorting,
|
165
|
+
unwindRepeatableSets,
|
162
166
|
});
|
163
167
|
break;
|
164
168
|
}
|
@@ -171,6 +175,8 @@ const generateColumns = ({ formElements, onChangeParameters, filters, sorting, u
|
|
171
175
|
initialColumns: columns,
|
172
176
|
filters,
|
173
177
|
allowCopy,
|
178
|
+
sorting,
|
179
|
+
unwindRepeatableSets,
|
174
180
|
});
|
175
181
|
}
|
176
182
|
break;
|
@@ -206,6 +212,8 @@ const generateColumns = ({ formElements, onChangeParameters, filters, sorting, u
|
|
206
212
|
initialColumns: columns,
|
207
213
|
filters,
|
208
214
|
allowCopy,
|
215
|
+
sorting,
|
216
|
+
unwindRepeatableSets,
|
209
217
|
});
|
210
218
|
break;
|
211
219
|
}
|
@@ -219,6 +227,7 @@ const generateColumns = ({ formElements, onChangeParameters, filters, sorting, u
|
|
219
227
|
}
|
220
228
|
default: {
|
221
229
|
columns.push({
|
230
|
+
formElementType: formElement.type,
|
222
231
|
id: ['FORM_ELEMENT', ...parentElementNames, formElement.name].join('_'),
|
223
232
|
sorting: generateSorting({
|
224
233
|
formElement,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generateColumns.js","sourceRoot":"","sources":["../../../../src/components/formStore/table/generateColumns.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { FormStoreRecord } from '@oneblink/types/typescript/submissions'\nimport { Column as ColumnWithCell, CellProps } from 'react-table'\nimport { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport FormElementTableCell from './FormElementTableCell'\nimport { formStoreService } from '@oneblink/apps'\nimport { OnChangeFilters } from '../../../hooks/useInfiniteScrollDataLoad'\n\nfunction generateSorting({\n formElement,\n parentElementNames,\n sorting,\n}: {\n formElement: FormTypes.FormElementWithName\n parentElementNames: string[]\n sorting: formStoreService.FormStoreParameters['sorting']\n}) {\n switch (formElement.type) {\n case 'text':\n case 'textarea':\n case 'number':\n case 'email':\n case 'telephone':\n case 'barcodeScanner':\n case 'date':\n case 'datetime':\n case 'time':\n case 'calculation': {\n const sortProperty = [\n 'submission',\n ...parentElementNames,\n formElement.name,\n ].join('.')\n return {\n property: sortProperty,\n direction: sorting?.find(({ property }) => property === sortProperty)\n ?.direction,\n }\n }\n }\n}\n\nfunction generateFilter({\n formElement,\n onChangeParameters,\n rootSubmissionFilters,\n parentElementNames,\n}: {\n formElement: FormTypes.FormElementWithName\n onChangeParameters: OnChangeFilters<formStoreService.FormStoreParameters>\n rootSubmissionFilters: formStoreService.FormStoreFilters['submission']\n parentElementNames: string[]\n}): ColumnWithCell<Record<string, unknown>>['filter'] {\n function onChange<T>(\n newValue: formStoreService.FormStoreFilter<T> | undefined,\n shouldDebounce: boolean,\n ) {\n onChangeParameters((currentParameters) => {\n let newSubmission = {\n [formElement.name]: newValue,\n }\n\n if (parentElementNames.length) {\n const copy = [...parentElementNames]\n while (copy.length) {\n const nestedSubmission = copy.reduce<\n formStoreService.FormStoreFilters['submission']\n >(\n (memo, elementName) =>\n memo?.[\n elementName\n ] as formStoreService.FormStoreFilters['submission'],\n rootSubmissionFilters,\n )\n const elementName = copy.pop()\n if (elementName) {\n newSubmission = {\n [elementName]: {\n ...nestedSubmission,\n ...newSubmission,\n },\n }\n }\n }\n }\n\n return {\n ...currentParameters,\n filters: {\n ...currentParameters.filters,\n submission: {\n ...currentParameters.filters?.submission,\n ...newSubmission,\n },\n },\n }\n }, shouldDebounce)\n }\n\n const submissionFilters = parentElementNames.reduce<\n formStoreService.FormStoreFilters['submission']\n >(\n (memo, elementName) =>\n memo?.[elementName] as formStoreService.FormStoreFilters['submission'],\n rootSubmissionFilters,\n )\n switch (formElement.type) {\n case 'text':\n case 'textarea':\n case 'email':\n case 'telephone':\n case 'barcodeScanner': {\n return {\n type: 'TEXT',\n value: submissionFilters?.[formElement.name] as\n | { $regex: string; $options?: string }\n | undefined,\n onChange,\n }\n }\n case 'number':\n case 'calculation': {\n return {\n type: 'NUMBER',\n value: submissionFilters?.[formElement.name] as\n | { $gte?: number; $lte?: number }\n | undefined,\n onChange,\n }\n }\n case 'checkboxes':\n case 'select':\n case 'radio':\n case 'autocomplete': {\n const value = submissionFilters?.[formElement.name]\n if (Array.isArray(formElement.options)) {\n if (\n (formElement.type === 'select' && formElement.multi) ||\n formElement.type === 'checkboxes'\n ) {\n return {\n type: 'OPTIONS_MULTIPLE',\n value: value as { $elemMatch: { $in: string[] } } | undefined,\n options: formElement.options,\n onChange,\n }\n } else {\n return {\n type: 'OPTIONS_SINGLE',\n value: value as { $in: string[] } | undefined,\n options: formElement.options,\n onChange,\n }\n }\n } else {\n return {\n type: 'TEXT',\n value: value as { $regex: string } | undefined,\n onChange,\n }\n }\n }\n case 'boolean':\n return {\n type: 'BOOLEAN',\n value: submissionFilters?.[formElement.name] as\n | { $eq: boolean }\n | undefined,\n onChange,\n }\n case 'date': {\n return {\n type: 'DATE',\n value: submissionFilters?.[formElement.name] as\n | { $gte?: string; $lte?: string }\n | undefined,\n onChange,\n }\n }\n case 'datetime':\n return {\n type: 'DATETIME',\n value: submissionFilters?.[formElement.name] as\n | { $gte?: string; $lte?: string }\n | undefined,\n onChange,\n }\n default: {\n return undefined\n }\n }\n}\n\nconst generateColumns = <\n T extends { submission: FormStoreRecord['submission'] },\n>({\n formElements,\n onChangeParameters,\n filters,\n sorting,\n unwindRepeatableSets,\n parentElementNames,\n initialColumns,\n allowCopy,\n}: {\n formElements: (FormTypes.FormElement & { tooltip?: string })[]\n onChangeParameters: OnChangeFilters<formStoreService.FormStoreParameters>\n parentElementNames: string[]\n initialColumns: Array<ColumnWithCell<T>>\n allowCopy: boolean\n} & formStoreService.FormStoreParameters) => {\n return formElements.reduce<Array<ColumnWithCell<T>>>(\n (columns, formElement) => {\n if (unwindRepeatableSets && formElement.type === 'repeatableSet') {\n generateColumns({\n onChangeParameters,\n formElements: formElement.elements,\n parentElementNames: [...parentElementNames, formElement.name],\n initialColumns: columns,\n filters,\n allowCopy,\n })\n return columns\n }\n switch (formElement.type) {\n case 'page':\n case 'section': {\n generateColumns({\n onChangeParameters,\n formElements: formElement.elements,\n parentElementNames,\n filters,\n initialColumns: columns,\n allowCopy,\n })\n break\n }\n case 'form': {\n if (formElement.elements) {\n generateColumns({\n onChangeParameters,\n formElements: formElement.elements,\n parentElementNames: [...parentElementNames, formElement.name],\n initialColumns: columns,\n filters,\n allowCopy,\n })\n }\n break\n }\n case 'compliance': {\n generateColumns({\n onChangeParameters,\n formElements: [\n {\n ...formElement,\n tooltip: formElement.name,\n type: 'radio',\n name: 'value',\n buttons: false,\n },\n {\n ...formElement,\n tooltip: `${formElement.name}_notes`,\n type: 'textarea',\n name: 'notes',\n label: `${formElement.label} (Notes)`,\n },\n {\n ...formElement,\n tooltip: `${formElement.name}_media`,\n type: 'files',\n restrictFileTypes: false,\n name: 'files',\n label: `${formElement.label} (Media)`,\n },\n ],\n parentElementNames: [...parentElementNames, formElement.name],\n initialColumns: columns,\n filters,\n allowCopy,\n })\n break\n }\n case 'summary':\n case 'captcha':\n case 'html':\n case 'heading':\n case 'infoPage':\n case 'image': {\n break\n }\n default: {\n columns.push({\n id: ['FORM_ELEMENT', ...parentElementNames, formElement.name].join(\n '_',\n ),\n sorting: generateSorting({\n formElement,\n sorting,\n parentElementNames,\n }),\n headerText: formElement.label,\n tooltip: formElement.tooltip || formElement.name,\n filter: generateFilter({\n parentElementNames,\n formElement,\n onChangeParameters,\n rootSubmissionFilters: filters?.submission,\n }),\n Cell: ({ row: { original: formStoreRecord } }: CellProps<T>) => {\n const submission = parentElementNames.reduce<\n SubmissionTypes.S3SubmissionData['submission']\n >(\n (memo, elementName) =>\n memo?.[elementName] as FormStoreRecord['submission'],\n formStoreRecord.submission,\n )\n return (\n <FormElementTableCell\n formElement={formElement}\n submission={submission}\n allowCopy={allowCopy}\n />\n )\n },\n })\n break\n }\n }\n return columns\n },\n initialColumns,\n )\n}\n\nexport default generateColumns\n"]}
|
1
|
+
{"version":3,"file":"generateColumns.js","sourceRoot":"","sources":["../../../../src/components/formStore/table/generateColumns.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,oBAAoB,MAAM,wBAAwB,CAAA;AAIzD,SAAS,eAAe,CAAC,EACvB,WAAW,EACX,kBAAkB,EAClB,OAAO,GAKR;;IACC,QAAQ,WAAW,CAAC,IAAI,EAAE;QACxB,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU,CAAC;QAChB,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,WAAW,CAAC;QACjB,KAAK,gBAAgB,CAAC;QACtB,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,aAAa,CAAC,CAAC;YAClB,MAAM,YAAY,GAAG;gBACnB,YAAY;gBACZ,GAAG,kBAAkB;gBACrB,WAAW,CAAC,IAAI;aACjB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACX,OAAO;gBACL,QAAQ,EAAE,YAAY;gBACtB,SAAS,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,KAAK,YAAY,CAAC,0CACjE,SAAS;aACd,CAAA;SACF;KACF;AACH,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,WAAW,EACX,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,GAMnB;IACC,SAAS,QAAQ,CACf,QAAyD,EACzD,cAAuB;QAEvB,kBAAkB,CAAC,CAAC,iBAAiB,EAAE,EAAE;;YACvC,IAAI,aAAa,GAAG;gBAClB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ;aAC7B,CAAA;YAED,IAAI,kBAAkB,CAAC,MAAM,EAAE;gBAC7B,MAAM,IAAI,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAA;gBACpC,OAAO,IAAI,CAAC,MAAM,EAAE;oBAClB,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAGlC,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CACpB,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CACF,WAAW,CACuC,EACtD,qBAAqB,CACtB,CAAA;oBACD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;oBAC9B,IAAI,WAAW,EAAE;wBACf,aAAa,GAAG;4BACd,CAAC,WAAW,CAAC,EAAE;gCACb,GAAG,gBAAgB;gCACnB,GAAG,aAAa;6BACjB;yBACF,CAAA;qBACF;iBACF;aACF;YAED,OAAO;gBACL,GAAG,iBAAiB;gBACpB,OAAO,EAAE;oBACP,GAAG,iBAAiB,CAAC,OAAO;oBAC5B,UAAU,EAAE;wBACV,GAAG,MAAA,iBAAiB,CAAC,OAAO,0CAAE,UAAU;wBACxC,GAAG,aAAa;qBACjB;iBACF;aACF,CAAA;QACH,CAAC,EAAE,cAAc,CAAC,CAAA;IACpB,CAAC;IAED,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,MAAM,CAGjD,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CACpB,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,WAAW,CAAoD,EACxE,qBAAqB,CACtB,CAAA;IACD,QAAQ,WAAW,CAAC,IAAI,EAAE;QACxB,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU,CAAC;QAChB,KAAK,OAAO,CAAC;QACb,KAAK,WAAW,CAAC;QACjB,KAAK,gBAAgB,CAAC,CAAC;YACrB,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,WAAW,CAAC,IAAI,CAE9B;gBACb,QAAQ;aACT,CAAA;SACF;QACD,KAAK,QAAQ,CAAC;QACd,KAAK,aAAa,CAAC,CAAC;YAClB,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,WAAW,CAAC,IAAI,CAE9B;gBACb,QAAQ;aACT,CAAA;SACF;QACD,KAAK,YAAY,CAAC;QAClB,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,cAAc,CAAC,CAAC;YACnB,MAAM,KAAK,GAAG,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,WAAW,CAAC,IAAI,CAAC,CAAA;YACnD,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;gBACtC,IACE,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC;oBACpD,WAAW,CAAC,IAAI,KAAK,YAAY,EACjC;oBACA,OAAO;wBACL,IAAI,EAAE,kBAAkB;wBACxB,KAAK,EAAE,KAAsD;wBAC7D,OAAO,EAAE,WAAW,CAAC,OAAO;wBAC5B,QAAQ;qBACT,CAAA;iBACF;qBAAM;oBACL,OAAO;wBACL,IAAI,EAAE,gBAAgB;wBACtB,KAAK,EAAE,KAAsC;wBAC7C,OAAO,EAAE,WAAW,CAAC,OAAO;wBAC5B,QAAQ;qBACT,CAAA;iBACF;aACF;iBAAM;gBACL,OAAO;oBACL,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,KAAuC;oBAC9C,QAAQ;iBACT,CAAA;aACF;SACF;QACD,KAAK,SAAS;YACZ,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,WAAW,CAAC,IAAI,CAE9B;gBACb,QAAQ;aACT,CAAA;QACH,KAAK,MAAM,CAAC,CAAC;YACX,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,WAAW,CAAC,IAAI,CAE9B;gBACb,QAAQ;aACT,CAAA;SACF;QACD,KAAK,UAAU;YACb,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,WAAW,CAAC,IAAI,CAE9B;gBACb,QAAQ;aACT,CAAA;QACH,OAAO,CAAC,CAAC;YACP,OAAO,SAAS,CAAA;SACjB;KACF;AACH,CAAC;AAED,MAAM,eAAe,GAAG,CAEtB,EACA,YAAY,EACZ,kBAAkB,EAClB,OAAO,EACP,OAAO,EACP,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,SAAS,GAWV,EAAE,EAAE;IACH,OAAO,YAAY,CAAC,MAAM,CACxB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE;QACvB,IAAI,oBAAoB,IAAI,WAAW,CAAC,IAAI,KAAK,eAAe,EAAE;YAChE,eAAe,CAAC;gBACd,kBAAkB;gBAClB,YAAY,EAAE,WAAW,CAAC,QAAQ;gBAClC,kBAAkB,EAAE,CAAC,GAAG,kBAAkB,EAAE,WAAW,CAAC,IAAI,CAAC;gBAC7D,cAAc,EAAE,OAAO;gBACvB,OAAO;gBACP,SAAS;gBACT,OAAO;gBACP,oBAAoB;aACrB,CAAC,CAAA;YACF,OAAO,OAAO,CAAA;SACf;QACD,QAAQ,WAAW,CAAC,IAAI,EAAE;YACxB,KAAK,MAAM,CAAC;YACZ,KAAK,SAAS,CAAC,CAAC;gBACd,eAAe,CAAC;oBACd,kBAAkB;oBAClB,YAAY,EAAE,WAAW,CAAC,QAAQ;oBAClC,kBAAkB;oBAClB,OAAO;oBACP,cAAc,EAAE,OAAO;oBACvB,SAAS;oBACT,OAAO;oBACP,oBAAoB;iBACrB,CAAC,CAAA;gBACF,MAAK;aACN;YACD,KAAK,MAAM,CAAC,CAAC;gBACX,IAAI,WAAW,CAAC,QAAQ,EAAE;oBACxB,eAAe,CAAC;wBACd,kBAAkB;wBAClB,YAAY,EAAE,WAAW,CAAC,QAAQ;wBAClC,kBAAkB,EAAE,CAAC,GAAG,kBAAkB,EAAE,WAAW,CAAC,IAAI,CAAC;wBAC7D,cAAc,EAAE,OAAO;wBACvB,OAAO;wBACP,SAAS;wBACT,OAAO;wBACP,oBAAoB;qBACrB,CAAC,CAAA;iBACH;gBACD,MAAK;aACN;YACD,KAAK,YAAY,CAAC,CAAC;gBACjB,eAAe,CAAC;oBACd,kBAAkB;oBAClB,YAAY,EAAE;wBACZ;4BACE,GAAG,WAAW;4BACd,OAAO,EAAE,WAAW,CAAC,IAAI;4BACzB,IAAI,EAAE,OAAO;4BACb,IAAI,EAAE,OAAO;4BACb,OAAO,EAAE,KAAK;yBACf;wBACD;4BACE,GAAG,WAAW;4BACd,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,QAAQ;4BACpC,IAAI,EAAE,UAAU;4BAChB,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,GAAG,WAAW,CAAC,KAAK,UAAU;yBACtC;wBACD;4BACE,GAAG,WAAW;4BACd,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,QAAQ;4BACpC,IAAI,EAAE,OAAO;4BACb,iBAAiB,EAAE,KAAK;4BACxB,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,GAAG,WAAW,CAAC,KAAK,UAAU;yBACtC;qBACF;oBACD,kBAAkB,EAAE,CAAC,GAAG,kBAAkB,EAAE,WAAW,CAAC,IAAI,CAAC;oBAC7D,cAAc,EAAE,OAAO;oBACvB,OAAO;oBACP,SAAS;oBACT,OAAO;oBACP,oBAAoB;iBACrB,CAAC,CAAA;gBACF,MAAK;aACN;YACD,KAAK,SAAS,CAAC;YACf,KAAK,SAAS,CAAC;YACf,KAAK,MAAM,CAAC;YACZ,KAAK,SAAS,CAAC;YACf,KAAK,UAAU,CAAC;YAChB,KAAK,OAAO,CAAC,CAAC;gBACZ,MAAK;aACN;YACD,OAAO,CAAC,CAAC;gBACP,OAAO,CAAC,IAAI,CAAC;oBACX,eAAe,EAAE,WAAW,CAAC,IAAI;oBACjC,EAAE,EAAE,CAAC,cAAc,EAAE,GAAG,kBAAkB,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAChE,GAAG,CACJ;oBACD,OAAO,EAAE,eAAe,CAAC;wBACvB,WAAW;wBACX,OAAO;wBACP,kBAAkB;qBACnB,CAAC;oBACF,UAAU,EAAE,WAAW,CAAC,KAAK;oBAC7B,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,IAAI;oBAChD,MAAM,EAAE,cAAc,CAAC;wBACrB,kBAAkB;wBAClB,WAAW;wBACX,kBAAkB;wBAClB,qBAAqB,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU;qBAC3C,CAAC;oBACF,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAgB,EAAE,EAAE;wBAC7D,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAG1C,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CACpB,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,WAAW,CAAkC,EACtD,eAAe,CAAC,UAAU,CAC3B,CAAA;wBACD,OAAO,CACL,oBAAC,oBAAoB,IACnB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,GACpB,CACH,CAAA;oBACH,CAAC;iBACF,CAAC,CAAA;gBACF,MAAK;aACN;SACF;QACD,OAAO,OAAO,CAAA;IAChB,CAAC,EACD,cAAc,CACf,CAAA;AACH,CAAC,CAAA;AAED,eAAe,eAAe,CAAA","sourcesContent":["import * as React from 'react'\nimport { FormStoreRecord } from '@oneblink/types/typescript/submissions'\nimport { Column as ColumnWithCell, CellProps } from 'react-table'\nimport { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport FormElementTableCell from './FormElementTableCell'\nimport { formStoreService } from '@oneblink/apps'\nimport { OnChangeFilters } from '../../../hooks/useInfiniteScrollDataLoad'\n\nfunction generateSorting({\n formElement,\n parentElementNames,\n sorting,\n}: {\n formElement: FormTypes.FormElementWithName\n parentElementNames: string[]\n sorting: formStoreService.FormStoreParameters['sorting']\n}) {\n switch (formElement.type) {\n case 'text':\n case 'textarea':\n case 'number':\n case 'email':\n case 'telephone':\n case 'barcodeScanner':\n case 'date':\n case 'datetime':\n case 'time':\n case 'calculation': {\n const sortProperty = [\n 'submission',\n ...parentElementNames,\n formElement.name,\n ].join('.')\n return {\n property: sortProperty,\n direction: sorting?.find(({ property }) => property === sortProperty)\n ?.direction,\n }\n }\n }\n}\n\nfunction generateFilter({\n formElement,\n onChangeParameters,\n rootSubmissionFilters,\n parentElementNames,\n}: {\n formElement: FormTypes.FormElementWithName\n onChangeParameters: OnChangeFilters<formStoreService.FormStoreParameters>\n rootSubmissionFilters: formStoreService.FormStoreFilters['submission']\n parentElementNames: string[]\n}): ColumnWithCell<Record<string, unknown>>['filter'] {\n function onChange<T>(\n newValue: formStoreService.FormStoreFilter<T> | undefined,\n shouldDebounce: boolean,\n ) {\n onChangeParameters((currentParameters) => {\n let newSubmission = {\n [formElement.name]: newValue,\n }\n\n if (parentElementNames.length) {\n const copy = [...parentElementNames]\n while (copy.length) {\n const nestedSubmission = copy.reduce<\n formStoreService.FormStoreFilters['submission']\n >(\n (memo, elementName) =>\n memo?.[\n elementName\n ] as formStoreService.FormStoreFilters['submission'],\n rootSubmissionFilters,\n )\n const elementName = copy.pop()\n if (elementName) {\n newSubmission = {\n [elementName]: {\n ...nestedSubmission,\n ...newSubmission,\n },\n }\n }\n }\n }\n\n return {\n ...currentParameters,\n filters: {\n ...currentParameters.filters,\n submission: {\n ...currentParameters.filters?.submission,\n ...newSubmission,\n },\n },\n }\n }, shouldDebounce)\n }\n\n const submissionFilters = parentElementNames.reduce<\n formStoreService.FormStoreFilters['submission']\n >(\n (memo, elementName) =>\n memo?.[elementName] as formStoreService.FormStoreFilters['submission'],\n rootSubmissionFilters,\n )\n switch (formElement.type) {\n case 'text':\n case 'textarea':\n case 'email':\n case 'telephone':\n case 'barcodeScanner': {\n return {\n type: 'TEXT',\n value: submissionFilters?.[formElement.name] as\n | { $regex: string; $options?: string }\n | undefined,\n onChange,\n }\n }\n case 'number':\n case 'calculation': {\n return {\n type: 'NUMBER',\n value: submissionFilters?.[formElement.name] as\n | { $gte?: number; $lte?: number }\n | undefined,\n onChange,\n }\n }\n case 'checkboxes':\n case 'select':\n case 'radio':\n case 'autocomplete': {\n const value = submissionFilters?.[formElement.name]\n if (Array.isArray(formElement.options)) {\n if (\n (formElement.type === 'select' && formElement.multi) ||\n formElement.type === 'checkboxes'\n ) {\n return {\n type: 'OPTIONS_MULTIPLE',\n value: value as { $elemMatch: { $in: string[] } } | undefined,\n options: formElement.options,\n onChange,\n }\n } else {\n return {\n type: 'OPTIONS_SINGLE',\n value: value as { $in: string[] } | undefined,\n options: formElement.options,\n onChange,\n }\n }\n } else {\n return {\n type: 'TEXT',\n value: value as { $regex: string } | undefined,\n onChange,\n }\n }\n }\n case 'boolean':\n return {\n type: 'BOOLEAN',\n value: submissionFilters?.[formElement.name] as\n | { $eq: boolean }\n | undefined,\n onChange,\n }\n case 'date': {\n return {\n type: 'DATE',\n value: submissionFilters?.[formElement.name] as\n | { $gte?: string; $lte?: string }\n | undefined,\n onChange,\n }\n }\n case 'datetime':\n return {\n type: 'DATETIME',\n value: submissionFilters?.[formElement.name] as\n | { $gte?: string; $lte?: string }\n | undefined,\n onChange,\n }\n default: {\n return undefined\n }\n }\n}\n\nconst generateColumns = <\n T extends { submission: FormStoreRecord['submission'] },\n>({\n formElements,\n onChangeParameters,\n filters,\n sorting,\n unwindRepeatableSets,\n parentElementNames,\n initialColumns,\n allowCopy,\n}: {\n formElements: (FormTypes.FormElement & { tooltip?: string })[]\n onChangeParameters: OnChangeFilters<formStoreService.FormStoreParameters>\n parentElementNames: string[]\n initialColumns: Array<ColumnWithCell<T>>\n allowCopy: boolean\n} & {\n [P in keyof Required<formStoreService.FormStoreParameters>]:\n | formStoreService.FormStoreParameters[P]\n | undefined\n}) => {\n return formElements.reduce<Array<ColumnWithCell<T>>>(\n (columns, formElement) => {\n if (unwindRepeatableSets && formElement.type === 'repeatableSet') {\n generateColumns({\n onChangeParameters,\n formElements: formElement.elements,\n parentElementNames: [...parentElementNames, formElement.name],\n initialColumns: columns,\n filters,\n allowCopy,\n sorting,\n unwindRepeatableSets,\n })\n return columns\n }\n switch (formElement.type) {\n case 'page':\n case 'section': {\n generateColumns({\n onChangeParameters,\n formElements: formElement.elements,\n parentElementNames,\n filters,\n initialColumns: columns,\n allowCopy,\n sorting,\n unwindRepeatableSets,\n })\n break\n }\n case 'form': {\n if (formElement.elements) {\n generateColumns({\n onChangeParameters,\n formElements: formElement.elements,\n parentElementNames: [...parentElementNames, formElement.name],\n initialColumns: columns,\n filters,\n allowCopy,\n sorting,\n unwindRepeatableSets,\n })\n }\n break\n }\n case 'compliance': {\n generateColumns({\n onChangeParameters,\n formElements: [\n {\n ...formElement,\n tooltip: formElement.name,\n type: 'radio',\n name: 'value',\n buttons: false,\n },\n {\n ...formElement,\n tooltip: `${formElement.name}_notes`,\n type: 'textarea',\n name: 'notes',\n label: `${formElement.label} (Notes)`,\n },\n {\n ...formElement,\n tooltip: `${formElement.name}_media`,\n type: 'files',\n restrictFileTypes: false,\n name: 'files',\n label: `${formElement.label} (Media)`,\n },\n ],\n parentElementNames: [...parentElementNames, formElement.name],\n initialColumns: columns,\n filters,\n allowCopy,\n sorting,\n unwindRepeatableSets,\n })\n break\n }\n case 'summary':\n case 'captcha':\n case 'html':\n case 'heading':\n case 'infoPage':\n case 'image': {\n break\n }\n default: {\n columns.push({\n formElementType: formElement.type,\n id: ['FORM_ELEMENT', ...parentElementNames, formElement.name].join(\n '_',\n ),\n sorting: generateSorting({\n formElement,\n sorting,\n parentElementNames,\n }),\n headerText: formElement.label,\n tooltip: formElement.tooltip || formElement.name,\n filter: generateFilter({\n parentElementNames,\n formElement,\n onChangeParameters,\n rootSubmissionFilters: filters?.submission,\n }),\n Cell: ({ row: { original: formStoreRecord } }: CellProps<T>) => {\n const submission = parentElementNames.reduce<\n SubmissionTypes.S3SubmissionData['submission']\n >(\n (memo, elementName) =>\n memo?.[elementName] as FormStoreRecord['submission'],\n formStoreRecord.submission,\n )\n return (\n <FormElementTableCell\n formElement={formElement}\n submission={submission}\n allowCopy={allowCopy}\n />\n )\n },\n })\n break\n }\n }\n return columns\n },\n initialColumns,\n )\n}\n\nexport default generateColumns\n"]}
|
@@ -11,42 +11,42 @@ export default function useFormStoreTable({ form, formStoreRecords, parameters,
|
|
11
11
|
onRefresh: () => void;
|
12
12
|
submissionIdValidationMessage?: string;
|
13
13
|
}): {
|
14
|
-
form: FormTypes.Form;
|
15
|
-
parameters: formStoreService.FormStoreParameters;
|
16
|
-
onChangeParameters: OnChangeFilters<formStoreService.FormStoreParameters>;
|
17
|
-
onRefresh: () => void;
|
18
|
-
submissionIdValidationMessage: string | undefined;
|
19
|
-
data: readonly FormStoreRecord[];
|
20
|
-
initialState?: Partial<TableState<FormStoreRecord>> | undefined;
|
21
|
-
stateReducer?: ((newState: TableState<FormStoreRecord>, action: import("react-table").ActionType, previousState: TableState<FormStoreRecord>, instance?: import("react-table").TableInstance<FormStoreRecord> | undefined) => TableState<FormStoreRecord>) | undefined;
|
22
|
-
useControlledState?: ((state: TableState<FormStoreRecord>, meta: import("react-table").MetaBase<FormStoreRecord>) => TableState<FormStoreRecord>) | undefined;
|
23
|
-
defaultColumn?: Partial<import("react-table").Column<FormStoreRecord>> | undefined;
|
24
|
-
getSubRows?: ((originalRow: FormStoreRecord, relativeIndex: number) => FormStoreRecord[]) | undefined;
|
25
|
-
getRowId?: ((originalRow: FormStoreRecord, relativeIndex: number, parent?: import("react-table").Row<FormStoreRecord> | undefined) => string) | undefined;
|
26
|
-
autoResetHiddenColumns?: boolean | undefined;
|
27
|
-
disableResizing?: boolean | undefined;
|
28
|
-
autoResetResize?: boolean | undefined;
|
29
|
-
state: TableState<FormStoreRecord>;
|
30
|
-
plugins: import("react-table").PluginHook<FormStoreRecord>[];
|
31
|
-
dispatch: import("react-table").TableDispatch<any>;
|
32
|
-
columns: import("react-table").ColumnInstance<FormStoreRecord>[];
|
33
|
-
allColumns: import("react-table").ColumnInstance<FormStoreRecord>[];
|
34
|
-
visibleColumns: import("react-table").ColumnInstance<FormStoreRecord>[];
|
35
|
-
headerGroups: import("react-table").HeaderGroup<FormStoreRecord>[];
|
36
|
-
footerGroups: import("react-table").HeaderGroup<FormStoreRecord>[];
|
37
|
-
headers: import("react-table").ColumnInstance<FormStoreRecord>[];
|
38
|
-
flatHeaders: import("react-table").ColumnInstance<FormStoreRecord>[];
|
39
|
-
rows: import("react-table").Row<FormStoreRecord>[];
|
40
|
-
rowsById: Record<string, import("react-table").Row<FormStoreRecord>>;
|
41
|
-
getTableProps: (propGetter?: import("react-table").TablePropGetter<FormStoreRecord> | undefined) => import("react-table").TableProps;
|
42
|
-
getTableBodyProps: (propGetter?: import("react-table").TableBodyPropGetter<FormStoreRecord> | undefined) => import("react-table").TableBodyProps;
|
43
|
-
prepareRow: (row: import("react-table").Row<FormStoreRecord>) => void;
|
44
|
-
flatRows: import("react-table").Row<FormStoreRecord>[];
|
45
|
-
totalColumnsWidth: number;
|
46
|
-
allColumnsHidden: boolean;
|
47
|
-
toggleHideColumn: (columnId: string, value?: boolean | undefined) => void;
|
48
|
-
setHiddenColumns: (param: string[] | ((oldHidden: string[]) => string[])) => void;
|
49
|
-
toggleHideAllColumns: (value?: boolean | undefined) => void;
|
50
|
-
getToggleHideAllColumnsProps: (props?: Partial<import("react-table").TableToggleHideAllColumnProps> | undefined) => import("react-table").TableToggleHideAllColumnProps;
|
51
|
-
getHooks: () => import("react-table").Hooks<FormStoreRecord>;
|
14
|
+
readonly form: FormTypes.Form;
|
15
|
+
readonly parameters: formStoreService.FormStoreParameters;
|
16
|
+
readonly onChangeParameters: OnChangeFilters<formStoreService.FormStoreParameters>;
|
17
|
+
readonly onRefresh: () => void;
|
18
|
+
readonly submissionIdValidationMessage: string | undefined;
|
19
|
+
readonly data: readonly FormStoreRecord[];
|
20
|
+
readonly initialState?: Partial<TableState<FormStoreRecord>> | undefined;
|
21
|
+
readonly stateReducer?: ((newState: TableState<FormStoreRecord>, action: import("react-table").ActionType, previousState: TableState<FormStoreRecord>, instance?: import("react-table").TableInstance<FormStoreRecord> | undefined) => TableState<FormStoreRecord>) | undefined;
|
22
|
+
readonly useControlledState?: ((state: TableState<FormStoreRecord>, meta: import("react-table").MetaBase<FormStoreRecord>) => TableState<FormStoreRecord>) | undefined;
|
23
|
+
readonly defaultColumn?: Partial<import("react-table").Column<FormStoreRecord>> | undefined;
|
24
|
+
readonly getSubRows?: ((originalRow: FormStoreRecord, relativeIndex: number) => FormStoreRecord[]) | undefined;
|
25
|
+
readonly getRowId?: ((originalRow: FormStoreRecord, relativeIndex: number, parent?: import("react-table").Row<FormStoreRecord> | undefined) => string) | undefined;
|
26
|
+
readonly autoResetHiddenColumns?: boolean | undefined;
|
27
|
+
readonly disableResizing?: boolean | undefined;
|
28
|
+
readonly autoResetResize?: boolean | undefined;
|
29
|
+
readonly state: TableState<FormStoreRecord>;
|
30
|
+
readonly plugins: import("react-table").PluginHook<FormStoreRecord>[];
|
31
|
+
readonly dispatch: import("react-table").TableDispatch<any>;
|
32
|
+
readonly columns: import("react-table").ColumnInstance<FormStoreRecord>[];
|
33
|
+
readonly allColumns: import("react-table").ColumnInstance<FormStoreRecord>[];
|
34
|
+
readonly visibleColumns: import("react-table").ColumnInstance<FormStoreRecord>[];
|
35
|
+
readonly headerGroups: import("react-table").HeaderGroup<FormStoreRecord>[];
|
36
|
+
readonly footerGroups: import("react-table").HeaderGroup<FormStoreRecord>[];
|
37
|
+
readonly headers: import("react-table").ColumnInstance<FormStoreRecord>[];
|
38
|
+
readonly flatHeaders: import("react-table").ColumnInstance<FormStoreRecord>[];
|
39
|
+
readonly rows: import("react-table").Row<FormStoreRecord>[];
|
40
|
+
readonly rowsById: Record<string, import("react-table").Row<FormStoreRecord>>;
|
41
|
+
readonly getTableProps: (propGetter?: import("react-table").TablePropGetter<FormStoreRecord> | undefined) => import("react-table").TableProps;
|
42
|
+
readonly getTableBodyProps: (propGetter?: import("react-table").TableBodyPropGetter<FormStoreRecord> | undefined) => import("react-table").TableBodyProps;
|
43
|
+
readonly prepareRow: (row: import("react-table").Row<FormStoreRecord>) => void;
|
44
|
+
readonly flatRows: import("react-table").Row<FormStoreRecord>[];
|
45
|
+
readonly totalColumnsWidth: number;
|
46
|
+
readonly allColumnsHidden: boolean;
|
47
|
+
readonly toggleHideColumn: (columnId: string, value?: boolean | undefined) => void;
|
48
|
+
readonly setHiddenColumns: (param: string[] | ((oldHidden: string[]) => string[])) => void;
|
49
|
+
readonly toggleHideAllColumns: (value?: boolean | undefined) => void;
|
50
|
+
readonly getToggleHideAllColumnsProps: (props?: Partial<import("react-table").TableToggleHideAllColumnProps> | undefined) => import("react-table").TableToggleHideAllColumnProps;
|
51
|
+
readonly getHooks: () => import("react-table").Hooks<FormStoreRecord>;
|
52
52
|
};
|
@@ -16,7 +16,9 @@ export default function useFormStoreTable({ form, formStoreRecords, parameters,
|
|
16
16
|
const columns = React.useMemo(() => {
|
17
17
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
18
18
|
return generateColumns({
|
19
|
-
|
19
|
+
sorting: parameters.sorting,
|
20
|
+
filters: parameters.filters,
|
21
|
+
unwindRepeatableSets: parameters.unwindRepeatableSets,
|
20
22
|
formElements,
|
21
23
|
parentElementNames: [],
|
22
24
|
onChangeParameters,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useFormStoreTable.js","sourceRoot":"","sources":["../../../../src/components/formStore/table/useFormStoreTable.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { FormStoreRecord } from '@oneblink/types/typescript/submissions'\nimport {\n CellProps,\n useFlexLayout,\n useResizeColumns,\n useTable,\n TableState,\n} from 'react-table'\nimport { format } from 'date-fns'\nimport generateColumns from './generateColumns'\nimport ActionedByTableCell from './ActionedByTableCell'\nimport TableCellCopyButton from './TableCellCopyButton'\nimport { FormTypes } from '@oneblink/types'\nimport { OnChangeFilters } from '../../../hooks/useInfiniteScrollDataLoad'\nimport { formStoreService, localisationService } from '@oneblink/apps'\nimport { FormStoreElementsContext } from '../OneBlinkFormStoreProvider'\n\nconst defaultColumn = {\n minWidth: 150,\n width: 225,\n}\n\nconst localStorageKey = (formId: number) =>\n `REACT_TABLE_STATE_FORM_STORE_${formId}`\n\nexport default function useFormStoreTable({\n form,\n formStoreRecords,\n parameters,\n onChangeParameters,\n onRefresh,\n submissionIdValidationMessage,\n}: {\n formStoreRecords: FormStoreRecord[]\n form: FormTypes.Form\n parameters: formStoreService.FormStoreParameters\n onChangeParameters: OnChangeFilters<formStoreService.FormStoreParameters>\n onRefresh: () => void\n submissionIdValidationMessage?: string\n}) {\n const formElements = React.useContext(FormStoreElementsContext)\n const columns = React.useMemo(() => {\n return generateColumns({\n ...parameters,\n formElements,\n parentElementNames: [],\n onChangeParameters,\n allowCopy: true,\n initialColumns: [\n {\n id: 'SUBMITTED_AT',\n headerText: 'Submission Date Time',\n sorting: {\n property: 'dateTimeSubmitted',\n direction: parameters.sorting?.find(\n ({ property }) => property === 'dateTimeSubmitted',\n )?.direction,\n },\n filter: {\n type: 'DATETIME',\n value: parameters.filters?.dateTimeSubmitted as\n | { $gte?: string; $lte?: string }\n | undefined,\n onChange: (newValue) => {\n onChangeParameters(\n (currentParameters) => ({\n ...currentParameters,\n filters: {\n ...currentParameters.filters,\n dateTimeSubmitted: newValue,\n },\n }),\n false,\n )\n },\n },\n Cell: ({\n row: { original: formStoreRecord },\n }: CellProps<FormStoreRecord>) => {\n const text = format(\n new Date(formStoreRecord.dateTimeSubmitted),\n localisationService.getDateFnsFormats().longDateTime,\n )\n return (\n <>\n {text}\n <TableCellCopyButton text={text} />\n </>\n )\n },\n },\n {\n id: 'SUBMITTED_BY',\n headerText: 'Submitted By',\n sorting: undefined,\n filter: {\n type: 'TEXT',\n value: parameters.filters?.submittedBy as\n | { $regex: string }\n | undefined,\n onChange: (newValue) => {\n onChangeParameters(\n (currentParameters) => ({\n ...currentParameters,\n filters: {\n ...currentParameters.filters,\n submittedBy: newValue,\n },\n }),\n true,\n )\n },\n },\n Cell: ({\n row: { original: formStoreRecord },\n }: CellProps<FormStoreRecord>) => (\n <ActionedByTableCell\n userProfile={formStoreRecord.user}\n developerKey={formStoreRecord.key}\n variant=\"outlined\"\n />\n ),\n },\n {\n id: 'SUBMISSION_ID',\n headerText: 'Submission Id',\n sorting: undefined,\n filter: {\n type: 'SUBMISSION_ID',\n value: parameters.filters?.submissionId as\n | { $eq: string }\n | undefined,\n validationMessage: submissionIdValidationMessage,\n isInvalid: !!submissionIdValidationMessage,\n onChange: (newValue) => {\n onChangeParameters(\n (currentParameters) => ({\n ...currentParameters,\n filters: {\n ...currentParameters.filters,\n submissionId: newValue,\n },\n }),\n true,\n )\n },\n },\n Cell: ({\n row: { original: formStoreRecord },\n }: CellProps<FormStoreRecord>) => (\n <>\n {formStoreRecord.submissionId}\n <TableCellCopyButton text={formStoreRecord.submissionId} />\n </>\n ),\n },\n {\n id: 'EXTERNAL_ID',\n headerText: 'External Id',\n sorting: {\n property: 'externalId',\n direction: parameters.sorting?.find(\n ({ property }) => property === 'externalId',\n )?.direction,\n },\n filter: {\n type: 'TEXT',\n value: parameters.filters?.externalId as\n | { $regex: string }\n | undefined,\n onChange: (newValue) => {\n onChangeParameters(\n (currentParameters) => ({\n ...currentParameters,\n filters: {\n ...currentParameters.filters,\n externalId: newValue,\n },\n }),\n true,\n )\n },\n },\n Cell: ({\n row: { original: formStoreRecord },\n }: CellProps<FormStoreRecord>) => (\n <>\n {formStoreRecord.externalId}\n {formStoreRecord.externalId && (\n <TableCellCopyButton text={formStoreRecord.externalId} />\n )}\n </>\n ),\n },\n ],\n })\n }, [\n formElements,\n onChangeParameters,\n parameters,\n submissionIdValidationMessage,\n ])\n\n const [initialState] = React.useState<Partial<TableState<FormStoreRecord>>>(\n () => {\n const text = localStorage.getItem(localStorageKey(form.id))\n if (text) {\n return JSON.parse(text)\n }\n },\n )\n\n const table = useTable(\n {\n columns,\n data: formStoreRecords,\n defaultColumn,\n autoResetHiddenColumns: false,\n autoResetResize: false,\n initialState: initialState\n ? initialState\n : { hiddenColumns: ['SUBMISSION_ID', 'EXTERNAL_ID'] },\n },\n useFlexLayout,\n useResizeColumns,\n )\n\n React.useEffect(() => {\n if (!table.state.columnResizing.isResizingColumn) {\n localStorage.setItem(\n localStorageKey(form.id),\n JSON.stringify(table.state),\n )\n }\n }, [form.id, table.state])\n\n return {\n ...table,\n form,\n parameters,\n onChangeParameters,\n onRefresh,\n submissionIdValidationMessage,\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"useFormStoreTable.js","sourceRoot":"","sources":["../../../../src/components/formStore/table/useFormStoreTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAEL,aAAa,EACb,gBAAgB,EAChB,QAAQ,GAET,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAC/C,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;AACvD,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;AAGvD,OAAO,EAAoB,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AAEvE,MAAM,aAAa,GAAG;IACpB,QAAQ,EAAE,GAAG;IACb,KAAK,EAAE,GAAG;CACX,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,EAAE,CACzC,gCAAgC,MAAM,EAAE,CAAA;AAE1C,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,IAAI,EACJ,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,SAAS,EACT,6BAA6B,GAQ9B;IACC,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAA;IAC/D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;;QACjC,OAAO,eAAe,CAAC;YACrB,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,oBAAoB,EAAE,UAAU,CAAC,oBAAoB;YACrD,YAAY;YACZ,kBAAkB,EAAE,EAAE;YACtB,kBAAkB;YAClB,SAAS,EAAE,IAAI;YACf,cAAc,EAAE;gBACd;oBACE,EAAE,EAAE,cAAc;oBAClB,UAAU,EAAE,sBAAsB;oBAClC,OAAO,EAAE;wBACP,QAAQ,EAAE,mBAAmB;wBAC7B,SAAS,EAAE,MAAA,MAAA,UAAU,CAAC,OAAO,0CAAE,IAAI,CACjC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,KAAK,mBAAmB,CACnD,0CAAE,SAAS;qBACb;oBACD,MAAM,EAAE;wBACN,IAAI,EAAE,UAAU;wBAChB,KAAK,EAAE,MAAA,UAAU,CAAC,OAAO,0CAAE,iBAEd;wBACb,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;4BACrB,kBAAkB,CAChB,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;gCACtB,GAAG,iBAAiB;gCACpB,OAAO,EAAE;oCACP,GAAG,iBAAiB,CAAC,OAAO;oCAC5B,iBAAiB,EAAE,QAAQ;iCAC5B;6BACF,CAAC,EACF,KAAK,CACN,CAAA;wBACH,CAAC;qBACF;oBACD,IAAI,EAAE,CAAC,EACL,GAAG,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,GACP,EAAE,EAAE;wBAC/B,MAAM,IAAI,GAAG,MAAM,CACjB,IAAI,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAC3C,mBAAmB,CAAC,iBAAiB,EAAE,CAAC,YAAY,CACrD,CAAA;wBACD,OAAO,CACL;4BACG,IAAI;4BACL,oBAAC,mBAAmB,IAAC,IAAI,EAAE,IAAI,GAAI,CAClC,CACJ,CAAA;oBACH,CAAC;iBACF;gBACD;oBACE,EAAE,EAAE,cAAc;oBAClB,UAAU,EAAE,cAAc;oBAC1B,OAAO,EAAE,SAAS;oBAClB,MAAM,EAAE;wBACN,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,MAAA,UAAU,CAAC,OAAO,0CAAE,WAEd;wBACb,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;4BACrB,kBAAkB,CAChB,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;gCACtB,GAAG,iBAAiB;gCACpB,OAAO,EAAE;oCACP,GAAG,iBAAiB,CAAC,OAAO;oCAC5B,WAAW,EAAE,QAAQ;iCACtB;6BACF,CAAC,EACF,IAAI,CACL,CAAA;wBACH,CAAC;qBACF;oBACD,IAAI,EAAE,CAAC,EACL,GAAG,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,GACP,EAAE,EAAE,CAAC,CAChC,oBAAC,mBAAmB,IAClB,WAAW,EAAE,eAAe,CAAC,IAAI,EACjC,YAAY,EAAE,eAAe,CAAC,GAAG,EACjC,OAAO,EAAC,UAAU,GAClB,CACH;iBACF;gBACD;oBACE,EAAE,EAAE,eAAe;oBACnB,UAAU,EAAE,eAAe;oBAC3B,OAAO,EAAE,SAAS;oBAClB,MAAM,EAAE;wBACN,IAAI,EAAE,eAAe;wBACrB,KAAK,EAAE,MAAA,UAAU,CAAC,OAAO,0CAAE,YAEd;wBACb,iBAAiB,EAAE,6BAA6B;wBAChD,SAAS,EAAE,CAAC,CAAC,6BAA6B;wBAC1C,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;4BACrB,kBAAkB,CAChB,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;gCACtB,GAAG,iBAAiB;gCACpB,OAAO,EAAE;oCACP,GAAG,iBAAiB,CAAC,OAAO;oCAC5B,YAAY,EAAE,QAAQ;iCACvB;6BACF,CAAC,EACF,IAAI,CACL,CAAA;wBACH,CAAC;qBACF;oBACD,IAAI,EAAE,CAAC,EACL,GAAG,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,GACP,EAAE,EAAE,CAAC,CAChC;wBACG,eAAe,CAAC,YAAY;wBAC7B,oBAAC,mBAAmB,IAAC,IAAI,EAAE,eAAe,CAAC,YAAY,GAAI,CAC1D,CACJ;iBACF;gBACD;oBACE,EAAE,EAAE,aAAa;oBACjB,UAAU,EAAE,aAAa;oBACzB,OAAO,EAAE;wBACP,QAAQ,EAAE,YAAY;wBACtB,SAAS,EAAE,MAAA,MAAA,UAAU,CAAC,OAAO,0CAAE,IAAI,CACjC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,KAAK,YAAY,CAC5C,0CAAE,SAAS;qBACb;oBACD,MAAM,EAAE;wBACN,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,MAAA,UAAU,CAAC,OAAO,0CAAE,UAEd;wBACb,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;4BACrB,kBAAkB,CAChB,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;gCACtB,GAAG,iBAAiB;gCACpB,OAAO,EAAE;oCACP,GAAG,iBAAiB,CAAC,OAAO;oCAC5B,UAAU,EAAE,QAAQ;iCACrB;6BACF,CAAC,EACF,IAAI,CACL,CAAA;wBACH,CAAC;qBACF;oBACD,IAAI,EAAE,CAAC,EACL,GAAG,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,GACP,EAAE,EAAE,CAAC,CAChC;wBACG,eAAe,CAAC,UAAU;wBAC1B,eAAe,CAAC,UAAU,IAAI,CAC7B,oBAAC,mBAAmB,IAAC,IAAI,EAAE,eAAe,CAAC,UAAU,GAAI,CAC1D,CACA,CACJ;iBACF;aACF;SACF,CAAC,CAAA;IACJ,CAAC,EAAE;QACD,YAAY;QACZ,kBAAkB;QAClB,UAAU;QACV,6BAA6B;KAC9B,CAAC,CAAA;IAEF,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CACnC,GAAG,EAAE;QACH,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;QAC3D,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;SACxB;IACH,CAAC,CACF,CAAA;IAED,MAAM,KAAK,GAAG,QAAQ,CACpB;QACE,OAAO;QACP,IAAI,EAAE,gBAAgB;QACtB,aAAa;QACb,sBAAsB,EAAE,KAAK;QAC7B,eAAe,EAAE,KAAK;QACtB,YAAY,EAAE,YAAY;YACxB,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE;KACxD,EACD,aAAa,EACb,gBAAgB,CACjB,CAAA;IAED,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,EAAE;YAChD,YAAY,CAAC,OAAO,CAClB,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EACxB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAC5B,CAAA;SACF;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IAE1B,OAAO;QACL,GAAG,KAAK;QACR,IAAI;QACJ,UAAU;QACV,kBAAkB;QAClB,SAAS;QACT,6BAA6B;KACrB,CAAA;AACZ,CAAC","sourcesContent":["import * as React from 'react'\nimport { FormStoreRecord } from '@oneblink/types/typescript/submissions'\nimport {\n CellProps,\n useFlexLayout,\n useResizeColumns,\n useTable,\n TableState,\n} from 'react-table'\nimport { format } from 'date-fns'\nimport generateColumns from './generateColumns'\nimport ActionedByTableCell from './ActionedByTableCell'\nimport TableCellCopyButton from './TableCellCopyButton'\nimport { FormTypes } from '@oneblink/types'\nimport { OnChangeFilters } from '../../../hooks/useInfiniteScrollDataLoad'\nimport { formStoreService, localisationService } from '@oneblink/apps'\nimport { FormStoreElementsContext } from '../OneBlinkFormStoreProvider'\n\nconst defaultColumn = {\n minWidth: 150,\n width: 225,\n}\n\nconst localStorageKey = (formId: number) =>\n `REACT_TABLE_STATE_FORM_STORE_${formId}`\n\nexport default function useFormStoreTable({\n form,\n formStoreRecords,\n parameters,\n onChangeParameters,\n onRefresh,\n submissionIdValidationMessage,\n}: {\n formStoreRecords: FormStoreRecord[]\n form: FormTypes.Form\n parameters: formStoreService.FormStoreParameters\n onChangeParameters: OnChangeFilters<formStoreService.FormStoreParameters>\n onRefresh: () => void\n submissionIdValidationMessage?: string\n}) {\n const formElements = React.useContext(FormStoreElementsContext)\n const columns = React.useMemo(() => {\n return generateColumns({\n sorting: parameters.sorting,\n filters: parameters.filters,\n unwindRepeatableSets: parameters.unwindRepeatableSets,\n formElements,\n parentElementNames: [],\n onChangeParameters,\n allowCopy: true,\n initialColumns: [\n {\n id: 'SUBMITTED_AT',\n headerText: 'Submission Date Time',\n sorting: {\n property: 'dateTimeSubmitted',\n direction: parameters.sorting?.find(\n ({ property }) => property === 'dateTimeSubmitted',\n )?.direction,\n },\n filter: {\n type: 'DATETIME',\n value: parameters.filters?.dateTimeSubmitted as\n | { $gte?: string; $lte?: string }\n | undefined,\n onChange: (newValue) => {\n onChangeParameters(\n (currentParameters) => ({\n ...currentParameters,\n filters: {\n ...currentParameters.filters,\n dateTimeSubmitted: newValue,\n },\n }),\n false,\n )\n },\n },\n Cell: ({\n row: { original: formStoreRecord },\n }: CellProps<FormStoreRecord>) => {\n const text = format(\n new Date(formStoreRecord.dateTimeSubmitted),\n localisationService.getDateFnsFormats().longDateTime,\n )\n return (\n <>\n {text}\n <TableCellCopyButton text={text} />\n </>\n )\n },\n },\n {\n id: 'SUBMITTED_BY',\n headerText: 'Submitted By',\n sorting: undefined,\n filter: {\n type: 'TEXT',\n value: parameters.filters?.submittedBy as\n | { $regex: string }\n | undefined,\n onChange: (newValue) => {\n onChangeParameters(\n (currentParameters) => ({\n ...currentParameters,\n filters: {\n ...currentParameters.filters,\n submittedBy: newValue,\n },\n }),\n true,\n )\n },\n },\n Cell: ({\n row: { original: formStoreRecord },\n }: CellProps<FormStoreRecord>) => (\n <ActionedByTableCell\n userProfile={formStoreRecord.user}\n developerKey={formStoreRecord.key}\n variant=\"outlined\"\n />\n ),\n },\n {\n id: 'SUBMISSION_ID',\n headerText: 'Submission Id',\n sorting: undefined,\n filter: {\n type: 'SUBMISSION_ID',\n value: parameters.filters?.submissionId as\n | { $eq: string }\n | undefined,\n validationMessage: submissionIdValidationMessage,\n isInvalid: !!submissionIdValidationMessage,\n onChange: (newValue) => {\n onChangeParameters(\n (currentParameters) => ({\n ...currentParameters,\n filters: {\n ...currentParameters.filters,\n submissionId: newValue,\n },\n }),\n true,\n )\n },\n },\n Cell: ({\n row: { original: formStoreRecord },\n }: CellProps<FormStoreRecord>) => (\n <>\n {formStoreRecord.submissionId}\n <TableCellCopyButton text={formStoreRecord.submissionId} />\n </>\n ),\n },\n {\n id: 'EXTERNAL_ID',\n headerText: 'External Id',\n sorting: {\n property: 'externalId',\n direction: parameters.sorting?.find(\n ({ property }) => property === 'externalId',\n )?.direction,\n },\n filter: {\n type: 'TEXT',\n value: parameters.filters?.externalId as\n | { $regex: string }\n | undefined,\n onChange: (newValue) => {\n onChangeParameters(\n (currentParameters) => ({\n ...currentParameters,\n filters: {\n ...currentParameters.filters,\n externalId: newValue,\n },\n }),\n true,\n )\n },\n },\n Cell: ({\n row: { original: formStoreRecord },\n }: CellProps<FormStoreRecord>) => (\n <>\n {formStoreRecord.externalId}\n {formStoreRecord.externalId && (\n <TableCellCopyButton text={formStoreRecord.externalId} />\n )}\n </>\n ),\n },\n ],\n })\n }, [\n formElements,\n onChangeParameters,\n parameters,\n submissionIdValidationMessage,\n ])\n\n const [initialState] = React.useState<Partial<TableState<FormStoreRecord>>>(\n () => {\n const text = localStorage.getItem(localStorageKey(form.id))\n if (text) {\n return JSON.parse(text)\n }\n },\n )\n\n const table = useTable(\n {\n columns,\n data: formStoreRecords,\n defaultColumn,\n autoResetHiddenColumns: false,\n autoResetResize: false,\n initialState: initialState\n ? initialState\n : { hiddenColumns: ['SUBMISSION_ID', 'EXTERNAL_ID'] },\n },\n useFlexLayout,\n useResizeColumns,\n )\n\n React.useEffect(() => {\n if (!table.state.columnResizing.isResizingColumn) {\n localStorage.setItem(\n localStorageKey(form.id),\n JSON.stringify(table.state),\n )\n }\n }, [form.id, table.state])\n\n return {\n ...table,\n form,\n parameters,\n onChangeParameters,\n onRefresh,\n submissionIdValidationMessage,\n } as const\n}\n"]}
|
@@ -3,42 +3,42 @@ import useFormStoreTable from './table/useFormStoreTable';
|
|
3
3
|
export declare type FormStoreTableContextValue = ReturnType<typeof useFormStoreTable> | undefined;
|
4
4
|
export declare const FormStoreTableContext: React.Context<FormStoreTableContextValue>;
|
5
5
|
export default function useFormStoreTableContext(): {
|
6
|
-
form: import("@oneblink/types/typescript/forms").Form;
|
7
|
-
parameters: import("@oneblink/apps/dist/form-store-service").FormStoreParameters;
|
8
|
-
onChangeParameters: import("../../hooks/useInfiniteScrollDataLoad").OnChangeFilters<import("@oneblink/apps/dist/form-store-service").FormStoreParameters>;
|
9
|
-
onRefresh: () => void;
|
10
|
-
submissionIdValidationMessage: string | undefined;
|
11
|
-
data: readonly import("@oneblink/types/typescript/submissions").FormStoreRecord[];
|
12
|
-
initialState?: Partial<import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>> | undefined;
|
13
|
-
stateReducer?: ((newState: import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>, action: import("react-table").ActionType, previousState: import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>, instance?: import("react-table").TableInstance<import("@oneblink/types/typescript/submissions").FormStoreRecord> | undefined) => import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>) | undefined;
|
14
|
-
useControlledState?: ((state: import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>, meta: import("react-table").MetaBase<import("@oneblink/types/typescript/submissions").FormStoreRecord>) => import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>) | undefined;
|
15
|
-
defaultColumn?: Partial<import("react-table").Column<import("@oneblink/types/typescript/submissions").FormStoreRecord>> | undefined;
|
16
|
-
getSubRows?: ((originalRow: import("@oneblink/types/typescript/submissions").FormStoreRecord, relativeIndex: number) => import("@oneblink/types/typescript/submissions").FormStoreRecord[]) | undefined;
|
17
|
-
getRowId?: ((originalRow: import("@oneblink/types/typescript/submissions").FormStoreRecord, relativeIndex: number, parent?: import("react-table").Row<import("@oneblink/types/typescript/submissions").FormStoreRecord> | undefined) => string) | undefined;
|
18
|
-
autoResetHiddenColumns?: boolean | undefined;
|
19
|
-
disableResizing?: boolean | undefined;
|
20
|
-
autoResetResize?: boolean | undefined;
|
21
|
-
state: import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>;
|
22
|
-
plugins: import("react-table").PluginHook<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
23
|
-
dispatch: import("react-table").TableDispatch<any>;
|
24
|
-
columns: import("react-table").ColumnInstance<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
25
|
-
allColumns: import("react-table").ColumnInstance<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
26
|
-
visibleColumns: import("react-table").ColumnInstance<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
27
|
-
headerGroups: import("react-table").HeaderGroup<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
28
|
-
footerGroups: import("react-table").HeaderGroup<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
29
|
-
headers: import("react-table").ColumnInstance<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
30
|
-
flatHeaders: import("react-table").ColumnInstance<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
31
|
-
rows: import("react-table").Row<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
32
|
-
rowsById: Record<string, import("react-table").Row<import("@oneblink/types/typescript/submissions").FormStoreRecord>>;
|
33
|
-
getTableProps: (propGetter?: import("react-table").TablePropGetter<import("@oneblink/types/typescript/submissions").FormStoreRecord> | undefined) => import("react-table").TableProps;
|
34
|
-
getTableBodyProps: (propGetter?: import("react-table").TableBodyPropGetter<import("@oneblink/types/typescript/submissions").FormStoreRecord> | undefined) => import("react-table").TableBodyProps;
|
35
|
-
prepareRow: (row: import("react-table").Row<import("@oneblink/types/typescript/submissions").FormStoreRecord>) => void;
|
36
|
-
flatRows: import("react-table").Row<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
37
|
-
totalColumnsWidth: number;
|
38
|
-
allColumnsHidden: boolean;
|
39
|
-
toggleHideColumn: (columnId: string, value?: boolean | undefined) => void;
|
40
|
-
setHiddenColumns: (param: string[] | ((oldHidden: string[]) => string[])) => void;
|
41
|
-
toggleHideAllColumns: (value?: boolean | undefined) => void;
|
42
|
-
getToggleHideAllColumnsProps: (props?: Partial<import("react-table").TableToggleHideAllColumnProps> | undefined) => import("react-table").TableToggleHideAllColumnProps;
|
43
|
-
getHooks: () => import("react-table").Hooks<import("@oneblink/types/typescript/submissions").FormStoreRecord>;
|
6
|
+
readonly form: import("@oneblink/types/typescript/forms").Form;
|
7
|
+
readonly parameters: import("@oneblink/apps/dist/form-store-service").FormStoreParameters;
|
8
|
+
readonly onChangeParameters: import("../../hooks/useInfiniteScrollDataLoad").OnChangeFilters<import("@oneblink/apps/dist/form-store-service").FormStoreParameters>;
|
9
|
+
readonly onRefresh: () => void;
|
10
|
+
readonly submissionIdValidationMessage: string | undefined;
|
11
|
+
readonly data: readonly import("@oneblink/types/typescript/submissions").FormStoreRecord[];
|
12
|
+
readonly initialState?: Partial<import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>> | undefined;
|
13
|
+
readonly stateReducer?: ((newState: import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>, action: import("react-table").ActionType, previousState: import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>, instance?: import("react-table").TableInstance<import("@oneblink/types/typescript/submissions").FormStoreRecord> | undefined) => import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>) | undefined;
|
14
|
+
readonly useControlledState?: ((state: import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>, meta: import("react-table").MetaBase<import("@oneblink/types/typescript/submissions").FormStoreRecord>) => import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>) | undefined;
|
15
|
+
readonly defaultColumn?: Partial<import("react-table").Column<import("@oneblink/types/typescript/submissions").FormStoreRecord>> | undefined;
|
16
|
+
readonly getSubRows?: ((originalRow: import("@oneblink/types/typescript/submissions").FormStoreRecord, relativeIndex: number) => import("@oneblink/types/typescript/submissions").FormStoreRecord[]) | undefined;
|
17
|
+
readonly getRowId?: ((originalRow: import("@oneblink/types/typescript/submissions").FormStoreRecord, relativeIndex: number, parent?: import("react-table").Row<import("@oneblink/types/typescript/submissions").FormStoreRecord> | undefined) => string) | undefined;
|
18
|
+
readonly autoResetHiddenColumns?: boolean | undefined;
|
19
|
+
readonly disableResizing?: boolean | undefined;
|
20
|
+
readonly autoResetResize?: boolean | undefined;
|
21
|
+
readonly state: import("react-table").TableState<import("@oneblink/types/typescript/submissions").FormStoreRecord>;
|
22
|
+
readonly plugins: import("react-table").PluginHook<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
23
|
+
readonly dispatch: import("react-table").TableDispatch<any>;
|
24
|
+
readonly columns: import("react-table").ColumnInstance<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
25
|
+
readonly allColumns: import("react-table").ColumnInstance<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
26
|
+
readonly visibleColumns: import("react-table").ColumnInstance<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
27
|
+
readonly headerGroups: import("react-table").HeaderGroup<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
28
|
+
readonly footerGroups: import("react-table").HeaderGroup<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
29
|
+
readonly headers: import("react-table").ColumnInstance<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
30
|
+
readonly flatHeaders: import("react-table").ColumnInstance<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
31
|
+
readonly rows: import("react-table").Row<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
32
|
+
readonly rowsById: Record<string, import("react-table").Row<import("@oneblink/types/typescript/submissions").FormStoreRecord>>;
|
33
|
+
readonly getTableProps: (propGetter?: import("react-table").TablePropGetter<import("@oneblink/types/typescript/submissions").FormStoreRecord> | undefined) => import("react-table").TableProps;
|
34
|
+
readonly getTableBodyProps: (propGetter?: import("react-table").TableBodyPropGetter<import("@oneblink/types/typescript/submissions").FormStoreRecord> | undefined) => import("react-table").TableBodyProps;
|
35
|
+
readonly prepareRow: (row: import("react-table").Row<import("@oneblink/types/typescript/submissions").FormStoreRecord>) => void;
|
36
|
+
readonly flatRows: import("react-table").Row<import("@oneblink/types/typescript/submissions").FormStoreRecord>[];
|
37
|
+
readonly totalColumnsWidth: number;
|
38
|
+
readonly allColumnsHidden: boolean;
|
39
|
+
readonly toggleHideColumn: (columnId: string, value?: boolean | undefined) => void;
|
40
|
+
readonly setHiddenColumns: (param: string[] | ((oldHidden: string[]) => string[])) => void;
|
41
|
+
readonly toggleHideAllColumns: (value?: boolean | undefined) => void;
|
42
|
+
readonly getToggleHideAllColumnsProps: (props?: Partial<import("react-table").TableToggleHideAllColumnProps> | undefined) => import("react-table").TableToggleHideAllColumnProps;
|
43
|
+
readonly getHooks: () => import("react-table").Hooks<import("@oneblink/types/typescript/submissions").FormStoreRecord>;
|
44
44
|
};
|
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": "1.2.0-beta.
|
4
|
+
"version": "1.2.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"
|