@oneblink/apps-react 1.0.0-beta.1 → 1.0.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/CopyToClipboardIconButton.js +6 -15
- package/dist/components/CopyToClipboardIconButton.js.map +1 -1
- package/dist/components/CustomAccordion.d.ts +4 -4
- package/dist/components/CustomAccordion.js +29 -34
- package/dist/components/CustomAccordion.js.map +1 -1
- package/dist/components/ErrorSnackbar.d.ts +3 -3
- package/dist/components/ErrorSnackbar.js +15 -44
- package/dist/components/ErrorSnackbar.js.map +1 -1
- package/dist/components/Lists.d.ts +19 -4
- package/dist/components/Lists.js +40 -38
- package/dist/components/Lists.js.map +1 -1
- package/dist/components/formStore/FormStoreTableProvider.d.ts +6 -0
- package/dist/components/formStore/FormStoreTableProvider.js +86 -0
- package/dist/components/formStore/FormStoreTableProvider.js.map +1 -0
- package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.d.ts +5 -0
- package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.js +16 -0
- package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.js.map +1 -0
- package/dist/components/formStore/OneBlinkFormStoreColumnsButton.d.ts +5 -0
- package/dist/components/formStore/{ColumnsConfigurationButton.js → OneBlinkFormStoreColumnsButton.js} +8 -4
- package/dist/components/formStore/OneBlinkFormStoreColumnsButton.js.map +1 -0
- package/dist/components/formStore/OneBlinkFormStoreDownloadButton.d.ts +5 -0
- package/dist/components/formStore/{DownloadSubmissionDataButton.js → OneBlinkFormStoreDownloadButton.js} +8 -4
- package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js.map +1 -0
- package/dist/components/formStore/OneBlinkFormStoreProvider.d.ts +8 -0
- package/dist/components/formStore/OneBlinkFormStoreProvider.js +25 -0
- package/dist/components/formStore/OneBlinkFormStoreProvider.js.map +1 -0
- package/dist/components/formStore/OneBlinkFormStoreRefreshButton.d.ts +5 -0
- package/dist/components/formStore/OneBlinkFormStoreRefreshButton.js +12 -0
- package/dist/components/formStore/OneBlinkFormStoreRefreshButton.js.map +1 -0
- package/dist/components/formStore/OneBlinkFormStoreTable.d.ts +4 -0
- package/dist/components/formStore/OneBlinkFormStoreTable.js +184 -0
- package/dist/components/formStore/OneBlinkFormStoreTable.js.map +1 -0
- package/dist/components/formStore/table/FormElementTableCell.js +28 -8
- package/dist/components/formStore/table/FormElementTableCell.js.map +1 -1
- package/dist/components/formStore/table/RepeatableSetCell.d.ts +0 -1
- package/dist/components/formStore/table/RepeatableSetCell.js +23 -25
- package/dist/components/formStore/table/RepeatableSetCell.js.map +1 -1
- package/dist/components/formStore/table/TableCellCopyButton.js +15 -18
- package/dist/components/formStore/table/TableCellCopyButton.js.map +1 -1
- package/dist/components/formStore/table/generateColumns.js.map +1 -1
- package/dist/components/formStore/table/useFormStoreTable.d.ts +43 -3
- package/dist/components/formStore/table/useFormStoreTable.js +11 -2
- package/dist/components/formStore/table/useFormStoreTable.js.map +1 -1
- package/dist/components/formStore/useFormStoreTableContext.d.ts +44 -0
- package/dist/components/formStore/useFormStoreTableContext.js +10 -0
- package/dist/components/formStore/useFormStoreTableContext.js.map +1 -0
- package/dist/components/{ErrorMessage.d.ts → messages/ErrorMessage.d.ts} +2 -3
- package/dist/components/{ErrorMessage.js → messages/ErrorMessage.js} +1 -1
- package/dist/components/messages/ErrorMessage.js.map +1 -0
- package/dist/components/messages/LargeIconMessage.d.ts +4 -3
- package/dist/components/messages/LargeIconMessage.js +31 -61
- package/dist/components/messages/LargeIconMessage.js.map +1 -1
- package/dist/components/{NoResourcesYet.d.ts → messages/NoResourcesYet.d.ts} +2 -3
- package/dist/components/{NoResourcesYet.js → messages/NoResourcesYet.js} +1 -1
- package/dist/components/messages/NoResourcesYet.js.map +1 -0
- package/dist/form-elements/FormElementDate.js +1 -1
- package/dist/form-elements/FormElementDate.js.map +1 -1
- package/dist/hooks/useSubmissionIdIsValid.d.ts +0 -1
- package/dist/hooks/useSubmissionIdIsValid.js +1 -2
- package/dist/hooks/useSubmissionIdIsValid.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/package.json +7 -5
- package/dist/OneBlinkFormStoreView.d.ts +0 -8
- package/dist/OneBlinkFormStoreView.js +0 -55
- package/dist/OneBlinkFormStoreView.js.map +0 -1
- package/dist/components/ErrorMessage.js.map +0 -1
- package/dist/components/NoResourcesYet.js.map +0 -1
- package/dist/components/formStore/ColumnsConfigurationButton.d.ts +0 -10
- package/dist/components/formStore/ColumnsConfigurationButton.js.map +0 -1
- package/dist/components/formStore/DownloadSubmissionDataButton.d.ts +0 -13
- package/dist/components/formStore/DownloadSubmissionDataButton.js.map +0 -1
- package/dist/components/formStore/FormStore.d.ts +0 -9
- package/dist/components/formStore/FormStore.js +0 -103
- package/dist/components/formStore/FormStore.js.map +0 -1
- package/dist/components/formStore/table/index.d.ts +0 -17
- package/dist/components/formStore/table/index.js +0 -194
- package/dist/components/formStore/table/index.js.map +0 -1
- package/dist/hooks/useLegacyElements.d.ts +0 -16
- package/dist/hooks/useLegacyElements.js +0 -55
- package/dist/hooks/useLegacyElements.js.map +0 -1
@@ -1,21 +1,12 @@
|
|
1
1
|
import * as React from 'react';
|
2
2
|
import copy from 'copy-to-clipboard';
|
3
3
|
import { IconButton, Tooltip, Snackbar } from '@mui/material';
|
4
|
-
import makeStyles from '@mui/styles/makeStyles';
|
5
4
|
import FileCopy from '@mui/icons-material/FileCopy';
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
fontSize: 18,
|
11
|
-
},
|
12
|
-
noMarginY: {
|
13
|
-
marginTop: theme.spacing(-1),
|
14
|
-
marginBottom: theme.spacing(-1),
|
15
|
-
},
|
16
|
-
}));
|
5
|
+
const noMargin = {
|
6
|
+
marginTop: -1,
|
7
|
+
marginBottom: -1,
|
8
|
+
};
|
17
9
|
export function CopyToClipBoardIconButton({ text, large, noMarginY, className, ...rest }) {
|
18
|
-
const classes = useStyles();
|
19
10
|
const [isCopyToClipboardOpen, setIsCopyToClipboardOpen] = React.useState(false);
|
20
11
|
const copyToClipboard = React.useCallback(() => {
|
21
12
|
copy(text);
|
@@ -29,8 +20,8 @@ export function CopyToClipBoardIconButton({ text, large, noMarginY, className, .
|
|
29
20
|
React.createElement(IconButton, { onClick: (e) => {
|
30
21
|
e.stopPropagation();
|
31
22
|
copyToClipboard();
|
32
|
-
}, "data-cypress": "copy-to-clip-board-button", className:
|
33
|
-
React.createElement(FileCopy, {
|
23
|
+
}, "data-cypress": "copy-to-clip-board-button", className: className, sx: noMarginY ? noMargin : undefined, ...rest },
|
24
|
+
React.createElement(FileCopy, { sx: large ? undefined : { fontSize: 18 } }))),
|
34
25
|
React.createElement(Snackbar, { anchorOrigin: {
|
35
26
|
vertical: 'bottom',
|
36
27
|
horizontal: 'right',
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"CopyToClipboardIconButton.js","sourceRoot":"","sources":["../../src/components/CopyToClipboardIconButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,IAAI,MAAM,mBAAmB,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,
|
1
|
+
{"version":3,"file":"CopyToClipboardIconButton.js","sourceRoot":"","sources":["../../src/components/CopyToClipboardIconButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,IAAI,MAAM,mBAAmB,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAW,MAAM,eAAe,CAAA;AACtE,OAAO,QAAQ,MAAM,8BAA8B,CAAA;AAQnD,MAAM,QAAQ,GAAY;IACxB,SAAS,EAAE,CAAC,CAAC;IACb,YAAY,EAAE,CAAC,CAAC;CACjB,CAAA;AACD,MAAM,UAAU,yBAAyB,CAAC,EACxC,IAAI,EACJ,KAAK,EACL,SAAS,EACT,SAAS,EACT,GAAG,IAAI,EACD;IACN,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GACrD,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvB,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC7C,IAAI,CAAC,IAAI,CAAC,CAAA;QACV,wBAAwB,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IACV,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACzC,wBAAwB,CAAC,KAAK,CAAC,CAAA;IACjC,CAAC,EAAE,EAAE,CAAC,CAAA;IACN,OAAO,CACL;QACE,oBAAC,OAAO,IAAC,KAAK,EAAC,mBAAmB;YAChC,oBAAC,UAAU,IACT,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACb,CAAC,CAAC,eAAe,EAAE,CAAA;oBACnB,eAAe,EAAE,CAAA;gBACnB,CAAC,kBACY,2BAA2B,EACxC,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,KAChC,IAAI;gBAER,oBAAC,QAAQ,IAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAI,CAC3C,CACL;QACV,oBAAC,QAAQ,IACP,YAAY,EAAE;gBACZ,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,OAAO;aACpB,EACD,IAAI,EAAE,qBAAqB,EAC3B,OAAO,EAAE,WAAW,EACpB,gBAAgB,EAAE,IAAI,EACtB,YAAY,EAAE;gBACZ,kBAAkB,EAAE,4BAA4B;aACjD,EACD,OAAO,EACL,8BACE,EAAE,EAAC,4BAA4B,kBAClB,mCAAmC,0BAG3C,GAET,CACD,CACJ,CAAA;AACH,CAAC;AAED,eAAe,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport copy from 'copy-to-clipboard'\nimport { IconButton, Tooltip, Snackbar, SxProps } from '@mui/material'\nimport FileCopy from '@mui/icons-material/FileCopy'\n\ntype Props = {\n text: string\n large?: boolean\n noMarginY?: boolean\n} & React.ComponentProps<typeof IconButton>\n\nconst noMargin: SxProps = {\n marginTop: -1,\n marginBottom: -1,\n}\nexport function CopyToClipBoardIconButton({\n text,\n large,\n noMarginY,\n className,\n ...rest\n}: Props) {\n const [isCopyToClipboardOpen, setIsCopyToClipboardOpen] =\n React.useState(false)\n const copyToClipboard = React.useCallback(() => {\n copy(text)\n setIsCopyToClipboardOpen(true)\n }, [text])\n const handleClose = React.useCallback(() => {\n setIsCopyToClipboardOpen(false)\n }, [])\n return (\n <>\n <Tooltip title=\"Copy to clipboard\">\n <IconButton\n onClick={(e) => {\n e.stopPropagation()\n copyToClipboard()\n }}\n data-cypress=\"copy-to-clip-board-button\"\n className={className}\n sx={noMarginY ? noMargin : undefined}\n {...rest}\n >\n <FileCopy sx={large ? undefined : { fontSize: 18 }} />\n </IconButton>\n </Tooltip>\n <Snackbar\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n open={isCopyToClipboardOpen}\n onClose={handleClose}\n autoHideDuration={1500}\n ContentProps={{\n 'aria-describedby': 'copy-clip-board-message-id',\n }}\n message={\n <span\n id=\"copy-clip-board-message-id\"\n data-cypress=\"copied-text-to-clip-board-message\"\n >\n Copied to Clipboard\n </span>\n }\n />\n </>\n )\n}\n\nexport default React.memo(CopyToClipBoardIconButton)\n"]}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/// <reference types="react" />
|
2
|
-
export declare const CustomAccordion: import("
|
3
|
-
export declare const CustomAccordionSummary: import("
|
2
|
+
export declare const CustomAccordion: import("@emotion/styled").StyledComponent<import("@mui/material").AccordionProps & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
|
3
|
+
export declare const CustomAccordionSummary: import("@emotion/styled").StyledComponent<{
|
4
4
|
children?: import("react").ReactNode;
|
5
5
|
classes?: Partial<import("@mui/material").AccordionSummaryClasses> | undefined;
|
6
6
|
expandIcon?: import("react").ReactNode;
|
@@ -23,5 +23,5 @@ export declare const CustomAccordionSummary: import("react").JSXElementConstruct
|
|
23
23
|
touchRippleRef?: import("react").Ref<import("@mui/material/ButtonBase/TouchRipple").TouchRippleActions> | undefined;
|
24
24
|
}, "classes"> & import("@mui/material/OverridableComponent").CommonProps & Omit<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import("react").HTMLAttributes<HTMLDivElement> | "key"> & {
|
25
25
|
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
26
|
-
}, "children" | "disabled" | "tabIndex" | keyof import("@mui/material/OverridableComponent").CommonProps | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "sx" | "TouchRippleProps" | "touchRippleRef" | "expandIcon"
|
27
|
-
export declare const CustomAccordionDetails: import("
|
26
|
+
}, "children" | "disabled" | "tabIndex" | keyof import("@mui/material/OverridableComponent").CommonProps | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "sx" | "TouchRippleProps" | "touchRippleRef" | "expandIcon"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
|
27
|
+
export declare const CustomAccordionDetails: import("@emotion/styled").StyledComponent<import("@mui/material").AccordionDetailsProps & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
|
@@ -1,40 +1,35 @@
|
|
1
|
-
import { Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
'&:not(:last-of-type)': {
|
9
|
-
borderBottom: 'none',
|
10
|
-
},
|
11
|
-
'&:before': {
|
12
|
-
display: 'none',
|
13
|
-
},
|
14
|
-
'&$expanded': {
|
15
|
-
margin: 'auto',
|
16
|
-
},
|
1
|
+
import { Accordion, AccordionSummary, AccordionDetails, styled, } from '@mui/material';
|
2
|
+
export const CustomAccordion = styled(Accordion)(({ theme }) => ({
|
3
|
+
border: `1px solid ${theme.palette.divider}`,
|
4
|
+
boxShadow: 'none',
|
5
|
+
width: '100%',
|
6
|
+
'&:not(:last-of-type)': {
|
7
|
+
borderBottom: 'none',
|
17
8
|
},
|
18
|
-
|
19
|
-
|
20
|
-
export const CustomAccordionSummary = withStyles((theme) => ({
|
21
|
-
root: {
|
22
|
-
backgroundColor: 'rgba(0, 0, 0, .03)',
|
23
|
-
'&$expanded': {
|
24
|
-
borderBottom: `1px solid ${theme.palette.divider}`,
|
25
|
-
minHeight: theme.spacing(6),
|
26
|
-
},
|
9
|
+
'&:before': {
|
10
|
+
display: 'none',
|
27
11
|
},
|
28
|
-
|
29
|
-
'
|
12
|
+
'& .Mui-expanded': {
|
13
|
+
margin: 'auto',
|
14
|
+
},
|
15
|
+
}));
|
16
|
+
export const CustomAccordionSummary = styled(AccordionSummary)(({ theme }) => ({
|
17
|
+
backgroundColor: 'rgba(0, 0, 0, .03)',
|
18
|
+
'&.Mui-expanded': {
|
19
|
+
minHeight: theme.spacing(6),
|
20
|
+
},
|
21
|
+
'& .Mui-expanded': {
|
22
|
+
marginTop: theme.spacing(1.5),
|
23
|
+
marginBottom: theme.spacing(1.5),
|
24
|
+
},
|
25
|
+
'& .MuiAccordionSummary-content': {
|
26
|
+
'.Mui-expanded': {
|
30
27
|
margin: theme.spacing(1, 0),
|
31
28
|
},
|
32
29
|
},
|
33
|
-
|
34
|
-
})
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
},
|
39
|
-
}))(AccordionDetails);
|
30
|
+
}));
|
31
|
+
export const CustomAccordionDetails = styled(AccordionDetails)(({ theme }) => ({
|
32
|
+
padding: theme.spacing(1, 2),
|
33
|
+
borderTop: `1px solid ${theme.palette.divider}`,
|
34
|
+
}));
|
40
35
|
//# sourceMappingURL=CustomAccordion.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"CustomAccordion.js","sourceRoot":"","sources":["../../src/components/CustomAccordion.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"CustomAccordion.js","sourceRoot":"","sources":["../../src/components/CustomAccordion.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,GACP,MAAM,eAAe,CAAA;AAEtB,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/D,MAAM,EAAE,aAAa,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE;IAC5C,SAAS,EAAE,MAAM;IACjB,KAAK,EAAE,MAAM;IACb,sBAAsB,EAAE;QACtB,YAAY,EAAE,MAAM;KACrB;IACD,UAAU,EAAE;QACV,OAAO,EAAE,MAAM;KAChB;IACD,iBAAiB,EAAE;QACjB,MAAM,EAAE,MAAM;KACf;CACF,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7E,eAAe,EAAE,oBAAoB;IACrC,gBAAgB,EAAE;QAChB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;KAC5B;IACD,iBAAiB,EAAE;QACjB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAC7B,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;KACjC;IACD,gCAAgC,EAAE;QAChC,eAAe,EAAE;YACf,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;SAC5B;KACF;CACF,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7E,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5B,SAAS,EAAE,aAAa,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE;CAChD,CAAC,CAAC,CAAA","sourcesContent":["import {\n Accordion,\n AccordionSummary,\n AccordionDetails,\n styled,\n} from '@mui/material'\n\nexport const CustomAccordion = styled(Accordion)(({ theme }) => ({\n border: `1px solid ${theme.palette.divider}`,\n boxShadow: 'none',\n width: '100%',\n '&:not(:last-of-type)': {\n borderBottom: 'none',\n },\n '&:before': {\n display: 'none',\n },\n '& .Mui-expanded': {\n margin: 'auto',\n },\n}))\n\nexport const CustomAccordionSummary = styled(AccordionSummary)(({ theme }) => ({\n backgroundColor: 'rgba(0, 0, 0, .03)',\n '&.Mui-expanded': {\n minHeight: theme.spacing(6),\n },\n '& .Mui-expanded': {\n marginTop: theme.spacing(1.5),\n marginBottom: theme.spacing(1.5),\n },\n '& .MuiAccordionSummary-content': {\n '.Mui-expanded': {\n margin: theme.spacing(1, 0),\n },\n },\n}))\n\nexport const CustomAccordionDetails = styled(AccordionDetails)(({ theme }) => ({\n padding: theme.spacing(1, 2),\n borderTop: `1px solid ${theme.palette.divider}`,\n}))\n"]}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import * as React from 'react';
|
2
|
-
declare
|
2
|
+
declare function ErrorSnackbar({ open, onClose, children, }: {
|
3
3
|
open: boolean;
|
4
4
|
children: React.ReactNode;
|
5
5
|
onClose: (arg: null) => unknown;
|
6
|
-
};
|
7
|
-
declare const _default: React.
|
6
|
+
}): JSX.Element;
|
7
|
+
declare const _default: React.MemoExoticComponent<typeof ErrorSnackbar>;
|
8
8
|
export default _default;
|
@@ -1,49 +1,20 @@
|
|
1
1
|
import * as React from 'react';
|
2
|
-
import clsx from 'clsx';
|
3
|
-
import withStyles from '@mui/styles/withStyles';
|
4
|
-
import IconButton from '@mui/material/IconButton';
|
5
2
|
import Snackbar from '@mui/material/Snackbar';
|
6
|
-
import
|
7
|
-
|
8
|
-
|
9
|
-
const styles = (theme) => ({
|
10
|
-
snackbarContent: {
|
11
|
-
backgroundColor: theme.palette.error.dark,
|
12
|
-
},
|
13
|
-
icon: {
|
14
|
-
fontSize: 20,
|
15
|
-
},
|
16
|
-
iconVariant: {
|
17
|
-
marginRight: theme.spacing(2),
|
18
|
-
},
|
19
|
-
message: {
|
20
|
-
display: 'flex',
|
21
|
-
alignItems: 'center',
|
22
|
-
},
|
3
|
+
import MuiAlert from '@mui/material/Alert';
|
4
|
+
const Alert = React.forwardRef(function Alert(props, ref) {
|
5
|
+
return React.createElement(MuiAlert, { elevation: 6, ref: ref, variant: "filled", ...props });
|
23
6
|
});
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
return (React.createElement(Snackbar, { anchorOrigin: {
|
36
|
-
vertical: 'bottom',
|
37
|
-
horizontal: 'right',
|
38
|
-
}, open: open, onClose: this.handleClose },
|
39
|
-
React.createElement(SnackbarContent, { className: classes.snackbarContent, message: React.createElement("span", { className: classes.message },
|
40
|
-
React.createElement(ErrorIcon, { className: clsx(classes.icon, classes.iconVariant) }),
|
41
|
-
children), action: [
|
42
|
-
// @ts-expect-error ???
|
43
|
-
React.createElement(IconButton, { key: "close", "aria-label": "Close", color: "inherit", className: classes.close, onClick: this.handleClose, "data-cypress": "error-snackbar-close", size: "large" },
|
44
|
-
React.createElement(CloseIcon, { className: classes.icon })),
|
45
|
-
] })));
|
46
|
-
}
|
7
|
+
function ErrorSnackbar({ open, onClose, children, }) {
|
8
|
+
const handleClose = React.useCallback((e, reason) => {
|
9
|
+
if (reason !== 'clickaway') {
|
10
|
+
onClose(null);
|
11
|
+
}
|
12
|
+
}, [onClose]);
|
13
|
+
return (React.createElement(Snackbar, { anchorOrigin: {
|
14
|
+
vertical: 'bottom',
|
15
|
+
horizontal: 'right',
|
16
|
+
}, open: open, onClose: handleClose },
|
17
|
+
React.createElement(Alert, { onClose: handleClose, severity: "error" }, children)));
|
47
18
|
}
|
48
|
-
export default
|
19
|
+
export default React.memo(ErrorSnackbar);
|
49
20
|
//# sourceMappingURL=ErrorSnackbar.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ErrorSnackbar.js","sourceRoot":"","sources":["../../src/components/ErrorSnackbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,
|
1
|
+
{"version":3,"file":"ErrorSnackbar.js","sourceRoot":"","sources":["../../src/components/ErrorSnackbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,QAAQ,MAAM,wBAAwB,CAAA;AAC7C,OAAO,QAAwB,MAAM,qBAAqB,CAAA;AAE1D,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAA6B,SAAS,KAAK,CACvE,KAAK,EACL,GAAG;IAEH,OAAO,oBAAC,QAAQ,IAAC,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAC,QAAQ,KAAK,KAAK,GAAI,CAAA;AACzE,CAAC,CAAC,CAAA;AAEF,SAAS,aAAa,CAAC,EACrB,IAAI,EACJ,OAAO,EACP,QAAQ,GAKT;IACC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACnC,CAAC,CAAU,EAAE,MAAe,EAAE,EAAE;QAC9B,IAAI,MAAM,KAAK,WAAW,EAAE;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;SACd;IACH,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAA;IACD,OAAO,CACL,oBAAC,QAAQ,IACP,YAAY,EAAE;YACZ,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,OAAO;SACpB,EACD,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,WAAW;QAEpB,oBAAC,KAAK,IAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAC,OAAO,IAC1C,QAAQ,CACH,CACC,CACZ,CAAA;AACH,CAAC;AAED,eAAe,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport Snackbar from '@mui/material/Snackbar'\nimport MuiAlert, { AlertProps } from '@mui/material/Alert'\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(function Alert(\n props,\n ref,\n) {\n return <MuiAlert elevation={6} ref={ref} variant=\"filled\" {...props} />\n})\n\nfunction ErrorSnackbar({\n open,\n onClose,\n children,\n}: {\n open: boolean\n children: React.ReactNode\n onClose: (arg: null) => unknown\n}) {\n const handleClose = React.useCallback(\n (e: unknown, reason?: string) => {\n if (reason !== 'clickaway') {\n onClose(null)\n }\n },\n [onClose],\n )\n return (\n <Snackbar\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n open={open}\n onClose={handleClose}\n >\n <Alert onClose={handleClose} severity=\"error\">\n {children}\n </Alert>\n </Snackbar>\n )\n}\n\nexport default React.memo(ErrorSnackbar)\n"]}
|
@@ -1,10 +1,25 @@
|
|
1
1
|
import * as React from 'react';
|
2
|
-
|
2
|
+
import { Theme } from '@mui/material';
|
3
|
+
declare type ListItemsProps = {
|
3
4
|
children: React.ReactNode;
|
4
5
|
disablePadding?: boolean;
|
6
|
+
};
|
7
|
+
export declare const OrderedList: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<Theme> & ListItemsProps, React.DetailedHTMLProps<React.OlHTMLAttributes<HTMLOListElement>, HTMLOListElement>, {}>;
|
8
|
+
export declare const UnorderedList: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<Theme> & ListItemsProps, React.DetailedHTMLProps<React.HTMLAttributes<HTMLUListElement>, HTMLUListElement>, {}>;
|
9
|
+
declare type ListProps = {
|
5
10
|
spaced?: boolean;
|
6
11
|
};
|
7
|
-
export declare const
|
8
|
-
|
9
|
-
|
12
|
+
export declare const ListItem: import("@emotion/styled").StyledComponent<Omit<import("@mui/system").SystemProps<Theme> & {
|
13
|
+
align?: "inherit" | "right" | "left" | "center" | "justify" | undefined;
|
14
|
+
children?: React.ReactNode;
|
15
|
+
classes?: Partial<import("@mui/material").TypographyClasses> | undefined;
|
16
|
+
gutterBottom?: boolean | undefined;
|
17
|
+
noWrap?: boolean | undefined;
|
18
|
+
paragraph?: boolean | undefined;
|
19
|
+
sx?: import("@mui/material").SxProps<Theme> | undefined;
|
20
|
+
variant?: "button" | "caption" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "inherit" | "subtitle1" | "subtitle2" | "body1" | "body2" | "overline" | undefined;
|
21
|
+
variantMapping?: Partial<Record<"button" | "caption" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "inherit" | "subtitle1" | "subtitle2" | "body1" | "body2" | "overline", string>> | undefined;
|
22
|
+
} & import("@mui/material/OverridableComponent").CommonProps & Omit<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "key" | keyof React.HTMLAttributes<HTMLSpanElement>> & {
|
23
|
+
ref?: ((instance: HTMLSpanElement | null) => void) | React.RefObject<HTMLSpanElement> | null | undefined;
|
24
|
+
}, "children" | keyof import("@mui/material/OverridableComponent").CommonProps | "sx" | ("p" | "color" | "top" | "right" | "bottom" | "left" | "height" | "width" | "fontStyle" | "marginBottom" | "position" | "my" | "pl" | "pt" | "zIndex" | "typography" | "fontFamily" | "fontSize" | "flex" | "border" | "borderTop" | "borderRight" | "borderBottom" | "borderLeft" | "borderColor" | "borderRadius" | "display" | "displayPrint" | "overflow" | "textOverflow" | "visibility" | "whiteSpace" | "flexBasis" | "flexDirection" | "flexWrap" | "justifyContent" | "alignItems" | "alignContent" | "order" | "flexGrow" | "flexShrink" | "alignSelf" | "justifyItems" | "justifySelf" | "gap" | "columnGap" | "rowGap" | "gridColumn" | "gridRow" | "gridAutoFlow" | "gridAutoColumns" | "gridAutoRows" | "gridTemplateColumns" | "gridTemplateRows" | "gridTemplateAreas" | "gridArea" | "bgcolor" | "boxShadow" | "maxWidth" | "minWidth" | "maxHeight" | "minHeight" | "boxSizing" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "pr" | "pb" | "px" | "py" | "margin" | "marginTop" | "marginRight" | "marginLeft" | "marginX" | "marginY" | "padding" | "paddingTop" | "paddingRight" | "paddingBottom" | "paddingLeft" | "paddingX" | "paddingY" | "fontWeight" | "letterSpacing" | "lineHeight" | "textAlign" | "textTransform") | "align" | "gutterBottom" | "noWrap" | "paragraph" | "variant" | "variantMapping">, "ref"> & import("@mui/system").MUIStyledCommonProps<Theme> & ListProps, {}, {}>;
|
10
25
|
export {};
|
package/dist/components/Lists.js
CHANGED
@@ -1,43 +1,45 @@
|
|
1
1
|
import * as React from 'react';
|
2
|
-
import clsx from 'clsx';
|
3
|
-
import withStyles from '@mui/styles/withStyles';
|
4
2
|
import Typography from '@mui/material/Typography';
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
'padding-top': 0,
|
16
|
-
'padding-bottom': 0,
|
17
|
-
},
|
18
|
-
listItem: {
|
19
|
-
display: 'list-item',
|
20
|
-
},
|
21
|
-
spacedLineHeight: {
|
22
|
-
lineHeight: 1.9,
|
23
|
-
},
|
3
|
+
import { styled } from '@mui/material';
|
4
|
+
const noPaddingY = {
|
5
|
+
paddingTop: 0,
|
6
|
+
paddingBottom: 0,
|
7
|
+
};
|
8
|
+
const getListStyles = (theme) => ({
|
9
|
+
margin: 0,
|
10
|
+
padding: theme.spacing(1, 1, 1, 4),
|
11
|
+
listStyle: 'inherit',
|
12
|
+
'& > ul, & > ol': noPaddingY,
|
24
13
|
});
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
return
|
37
|
-
|
38
|
-
|
14
|
+
export const OrderedList = styled('ol', {
|
15
|
+
shouldForwardProp: (prop) => prop !== 'disablePadding',
|
16
|
+
})(({ theme, disablePadding }) => {
|
17
|
+
return {
|
18
|
+
...getListStyles(theme),
|
19
|
+
...(disablePadding ? noPaddingY : {}),
|
20
|
+
};
|
21
|
+
});
|
22
|
+
export const UnorderedList = styled('ul', {
|
23
|
+
shouldForwardProp: (prop) => prop !== 'disablePadding',
|
24
|
+
})(({ theme, disablePadding }) => {
|
25
|
+
return {
|
26
|
+
...getListStyles(theme),
|
27
|
+
...(disablePadding ? noPaddingY : {}),
|
28
|
+
};
|
29
|
+
});
|
30
|
+
function Li(props) {
|
31
|
+
return (React.createElement(Typography, { ...props, component: "li", color: "inherit", variant: "body2" }));
|
39
32
|
}
|
40
|
-
export const
|
41
|
-
|
42
|
-
|
33
|
+
export const ListItem = styled(Li, {
|
34
|
+
shouldForwardProp: (prop) => prop !== 'spaced',
|
35
|
+
})(({ spaced }) => {
|
36
|
+
return {
|
37
|
+
display: 'list-item',
|
38
|
+
...(spaced
|
39
|
+
? {
|
40
|
+
lineHeight: 1.9,
|
41
|
+
}
|
42
|
+
: {}),
|
43
|
+
};
|
44
|
+
});
|
43
45
|
//# sourceMappingURL=Lists.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Lists.js","sourceRoot":"","sources":["../../src/components/Lists.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,
|
1
|
+
{"version":3,"file":"Lists.js","sourceRoot":"","sources":["../../src/components/Lists.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,UAAU,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,MAAM,EAAS,MAAM,eAAe,CAAA;AAO7C,MAAM,UAAU,GAAG;IACjB,UAAU,EAAE,CAAC;IACb,aAAa,EAAE,CAAC;CACjB,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,KAAY,EAAE,EAAE,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClC,SAAS,EAAE,SAAS;IACpB,gBAAgB,EAAE,UAAU;CAC7B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE;IACtC,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,gBAAgB;CACvD,CAAC,CAAiB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE;IAC/C,OAAO;QACL,GAAG,aAAa,CAAC,KAAK,CAAC;QACvB,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;KACtC,CAAA;AACH,CAAC,CAAC,CAAA;AACF,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE;IACxC,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,gBAAgB;CACvD,CAAC,CAAiB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE;IAC/C,OAAO;QACL,GAAG,aAAa,CAAC,KAAK,CAAC;QACvB,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;KACtC,CAAA;AACH,CAAC,CAAC,CAAA;AAMF,SAAS,EAAE,CAAC,KAA2D;IACrE,OAAO,CACL,oBAAC,UAAU,OAAK,KAAK,EAAE,SAAS,EAAC,IAAI,EAAC,KAAK,EAAC,SAAS,EAAC,OAAO,EAAC,OAAO,GAAG,CACzE,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,EAAE;IACjC,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ;CAC/C,CAAC,CAAY,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IAC3B,OAAO;QACL,OAAO,EAAE,WAAW;QACpB,GAAG,CAAC,MAAM;YACR,CAAC,CAAC;gBACE,UAAU,EAAE,GAAG;aAChB;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAA;AACH,CAAC,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport Typography from '@mui/material/Typography'\nimport { styled, Theme } from '@mui/material'\n\ntype ListItemsProps = {\n children: React.ReactNode\n disablePadding?: boolean\n}\n\nconst noPaddingY = {\n paddingTop: 0,\n paddingBottom: 0,\n}\n\nconst getListStyles = (theme: Theme) => ({\n margin: 0,\n padding: theme.spacing(1, 1, 1, 4),\n listStyle: 'inherit',\n '& > ul, & > ol': noPaddingY,\n})\n\nexport const OrderedList = styled('ol', {\n shouldForwardProp: (prop) => prop !== 'disablePadding',\n})<ListItemsProps>(({ theme, disablePadding }) => {\n return {\n ...getListStyles(theme),\n ...(disablePadding ? noPaddingY : {}),\n }\n})\nexport const UnorderedList = styled('ul', {\n shouldForwardProp: (prop) => prop !== 'disablePadding',\n})<ListItemsProps>(({ theme, disablePadding }) => {\n return {\n ...getListStyles(theme),\n ...(disablePadding ? noPaddingY : {}),\n }\n})\n\ntype ListProps = {\n spaced?: boolean\n}\n\nfunction Li(props: Omit<React.ComponentProps<typeof Typography>, 'ref'>) {\n return (\n <Typography {...props} component=\"li\" color=\"inherit\" variant=\"body2\" />\n )\n}\n\nexport const ListItem = styled(Li, {\n shouldForwardProp: (prop) => prop !== 'spaced',\n})<ListProps>(({ spaced }) => {\n return {\n display: 'list-item',\n ...(spaced\n ? {\n lineHeight: 1.9,\n }\n : {}),\n }\n})\n"]}
|
@@ -0,0 +1,86 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { useHistory } from 'react-router-dom';
|
3
|
+
import querystring from 'query-string';
|
4
|
+
import { formStoreService } from '@oneblink/apps';
|
5
|
+
import useInfiniteScrollDataLoad from '../../hooks/useInfiniteScrollDataLoad';
|
6
|
+
import useFormStoreTable from './table/useFormStoreTable';
|
7
|
+
import { Button, Grid } from '@mui/material';
|
8
|
+
import { Settings as SettingsIcon } from '@mui/icons-material';
|
9
|
+
import useSubmissionIdValidationMessage, { validateIsUUID, } from '../../hooks/useSubmissionIdIsValid';
|
10
|
+
import ErrorMessage from '../messages/ErrorMessage';
|
11
|
+
import LoadingWithMessage from '../LoadingWithMessage';
|
12
|
+
import NoResourcesYet from '../messages/NoResourcesYet';
|
13
|
+
import FormStoreIcon from './display/FormStoreIcon';
|
14
|
+
import { FormStoreTableContext } from './useFormStoreTableContext';
|
15
|
+
export function FormStoreTableProvider({ form, children, }) {
|
16
|
+
var _a;
|
17
|
+
const history = useHistory();
|
18
|
+
const { isLoading, loadError, records: formStoreRecords, onTryAgain, onRefresh, filters, onChangeFilters, } = useInfiniteScrollDataLoad({
|
19
|
+
limit: 50,
|
20
|
+
debounceSearchMs: 1000,
|
21
|
+
onDefaultFilters: React.useCallback((query) => {
|
22
|
+
let filters = {};
|
23
|
+
try {
|
24
|
+
if (typeof query.filters === 'string') {
|
25
|
+
filters = JSON.parse(query.filters);
|
26
|
+
}
|
27
|
+
}
|
28
|
+
catch (error) {
|
29
|
+
console.warn('Could not parse filter as JSON', error);
|
30
|
+
}
|
31
|
+
if (!filters.sorting) {
|
32
|
+
filters.sorting = [
|
33
|
+
{ property: 'dateTimeSubmitted', direction: 'descending' },
|
34
|
+
];
|
35
|
+
}
|
36
|
+
return filters;
|
37
|
+
}, []),
|
38
|
+
onSearch: React.useCallback(async (filters, paging, abortSignal) => {
|
39
|
+
// Exclude all search parameters if searching
|
40
|
+
// for a specific submission using an identifier
|
41
|
+
const searchFilters = filters.submissionId
|
42
|
+
? {
|
43
|
+
submissionId: filters.submissionId,
|
44
|
+
}
|
45
|
+
: filters;
|
46
|
+
const result = await formStoreService.searchFormStoreRecords({
|
47
|
+
paging,
|
48
|
+
formId: form.id,
|
49
|
+
filters: searchFilters,
|
50
|
+
}, abortSignal);
|
51
|
+
return {
|
52
|
+
records: result.formStoreRecords,
|
53
|
+
meta: result.meta,
|
54
|
+
};
|
55
|
+
}, [form.id]),
|
56
|
+
onValidateFilters: React.useCallback((currentFilters) => {
|
57
|
+
var _a;
|
58
|
+
return validateIsUUID((_a = currentFilters.submissionId) === null || _a === void 0 ? void 0 : _a.$eq);
|
59
|
+
}, []),
|
60
|
+
});
|
61
|
+
React.useEffect(() => {
|
62
|
+
history.replace({
|
63
|
+
search: querystring.stringify({
|
64
|
+
filters: JSON.stringify(filters),
|
65
|
+
}),
|
66
|
+
});
|
67
|
+
}, [filters, history]);
|
68
|
+
const submissionIdValidationMessage = useSubmissionIdValidationMessage((_a = filters.submissionId) === null || _a === void 0 ? void 0 : _a.$eq);
|
69
|
+
const formStoreTable = useFormStoreTable({
|
70
|
+
formStoreRecords,
|
71
|
+
filters,
|
72
|
+
onChangeFilters,
|
73
|
+
submissionIdValidationMessage,
|
74
|
+
form,
|
75
|
+
onRefresh,
|
76
|
+
});
|
77
|
+
return (React.createElement(FormStoreTableContext.Provider, { value: formStoreTable },
|
78
|
+
children,
|
79
|
+
formStoreTable.visibleColumns.length ? (React.createElement(React.Fragment, null, !formStoreRecords.length && !isLoading && !loadError && (React.createElement(NoResourcesYet, { IconComponent: FormStoreIcon, title: "No Records Found..." }, "There are no Submissions matching your filters.")))) : (React.createElement(NoResourcesYet, { IconComponent: SettingsIcon, title: "No Columns Visible", gutterBottom: true }, "It looks like you have hidden all of the available columns. Please enable at least one column to view submissions.")),
|
80
|
+
isLoading && React.createElement(LoadingWithMessage, { message: "Loading more records..." }),
|
81
|
+
loadError && (React.createElement(React.Fragment, null,
|
82
|
+
React.createElement(ErrorMessage, { title: "Error Retrieving Submissions", gutterBottom: true, gutterTop: true }, loadError.message),
|
83
|
+
React.createElement(Grid, { container: true, justifyContent: "center" },
|
84
|
+
React.createElement(Button, { variant: "outlined", color: "primary", onClick: () => onTryAgain() }, "Try Again"))))));
|
85
|
+
}
|
86
|
+
//# sourceMappingURL=FormStoreTableProvider.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"FormStoreTableProvider.js","sourceRoot":"","sources":["../../../src/components/formStore/FormStoreTableProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { useHistory } from 'react-router-dom'\nimport querystring from 'query-string'\nimport { FormStoreRecord } from '@oneblink/types/typescript/submissions'\nimport { formStoreService } from '@oneblink/apps'\nimport useInfiniteScrollDataLoad from '../../hooks/useInfiniteScrollDataLoad'\nimport useFormStoreTable from './table/useFormStoreTable'\nimport { Button, Grid } from '@mui/material'\nimport { Settings as SettingsIcon } from '@mui/icons-material'\nimport { FormTypes } from '@oneblink/types'\nimport useSubmissionIdValidationMessage, {\n validateIsUUID,\n} from '../../hooks/useSubmissionIdIsValid'\nimport ErrorMessage from '../messages/ErrorMessage'\nimport LoadingWithMessage from '../LoadingWithMessage'\nimport NoResourcesYet from '../messages/NoResourcesYet'\nimport FormStoreIcon from './display/FormStoreIcon'\nimport { FormStoreTableContext } from './useFormStoreTableContext'\n\nexport function FormStoreTableProvider({\n form,\n children,\n}: {\n form: FormTypes.Form\n children: React.ReactNode\n}) {\n const history = useHistory()\n const {\n isLoading,\n loadError,\n records: formStoreRecords,\n onTryAgain,\n onRefresh,\n filters,\n onChangeFilters,\n } = useInfiniteScrollDataLoad<\n formStoreService.FormStoreFilters,\n FormStoreRecord\n >({\n limit: 50,\n debounceSearchMs: 1000,\n onDefaultFilters: React.useCallback((query) => {\n let filters: formStoreService.FormStoreFilters = {}\n try {\n if (typeof query.filters === 'string') {\n filters = JSON.parse(query.filters)\n }\n } catch (error) {\n console.warn('Could not parse filter as JSON', error)\n }\n if (!filters.sorting) {\n filters.sorting = [\n { property: 'dateTimeSubmitted', direction: 'descending' },\n ]\n }\n return filters\n }, []),\n onSearch: React.useCallback(\n async (filters, paging, abortSignal) => {\n // Exclude all search parameters if searching\n // for a specific submission using an identifier\n const searchFilters = filters.submissionId\n ? {\n submissionId: filters.submissionId,\n }\n : filters\n const result = await formStoreService.searchFormStoreRecords(\n {\n paging,\n formId: form.id,\n filters: searchFilters,\n },\n abortSignal,\n )\n return {\n records: result.formStoreRecords,\n meta: result.meta,\n }\n },\n [form.id],\n ),\n onValidateFilters: React.useCallback(\n (currentFilters: formStoreService.FormStoreFilters) => {\n return validateIsUUID(currentFilters.submissionId?.$eq)\n },\n [],\n ),\n })\n\n React.useEffect(() => {\n history.replace({\n search: querystring.stringify({\n filters: JSON.stringify(filters),\n }),\n })\n }, [filters, history])\n\n const submissionIdValidationMessage = useSubmissionIdValidationMessage(\n filters.submissionId?.$eq,\n )\n\n const formStoreTable = useFormStoreTable({\n formStoreRecords,\n filters,\n onChangeFilters,\n submissionIdValidationMessage,\n form,\n onRefresh,\n })\n\n return (\n <FormStoreTableContext.Provider value={formStoreTable}>\n {children}\n {formStoreTable.visibleColumns.length ? (\n <>\n {!formStoreRecords.length && !isLoading && !loadError && (\n <NoResourcesYet\n IconComponent={FormStoreIcon}\n title=\"No Records Found...\"\n >\n There are no Submissions matching your filters.\n </NoResourcesYet>\n )}\n </>\n ) : (\n <NoResourcesYet\n IconComponent={SettingsIcon}\n title=\"No Columns Visible\"\n gutterBottom\n >\n It looks like you have hidden all of the available columns. Please\n enable at least one column to view submissions.\n </NoResourcesYet>\n )}\n\n {isLoading && <LoadingWithMessage message=\"Loading more records...\" />}\n\n {loadError && (\n <>\n <ErrorMessage\n title=\"Error Retrieving Submissions\"\n gutterBottom\n gutterTop\n >\n {loadError.message}\n </ErrorMessage>\n <Grid container justifyContent=\"center\">\n <Button\n variant=\"outlined\"\n color=\"primary\"\n onClick={() => onTryAgain()}\n >\n Try Again\n </Button>\n </Grid>\n </>\n )}\n </FormStoreTableContext.Provider>\n )\n}\n"]}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { Button } from '@mui/material';
|
3
|
+
declare function OneBlinkFormStoreClearFiltersButton(props: React.ComponentProps<typeof Button>): JSX.Element;
|
4
|
+
declare const _default: React.MemoExoticComponent<typeof OneBlinkFormStoreClearFiltersButton>;
|
5
|
+
export default _default;
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { Button } from '@mui/material';
|
3
|
+
import { FilterList as FilterIcon } from '@mui/icons-material';
|
4
|
+
import useFormStoreTableContext from './useFormStoreTableContext';
|
5
|
+
function OneBlinkFormStoreClearFiltersButton(props) {
|
6
|
+
const { onChangeFilters } = useFormStoreTableContext();
|
7
|
+
return (React.createElement(Button, { startIcon: React.createElement(FilterIcon, null), onClick: () => {
|
8
|
+
onChangeFilters((currentFilters) => ({
|
9
|
+
sorting: currentFilters.sorting,
|
10
|
+
}), false);
|
11
|
+
},
|
12
|
+
// eslint-disable-next-line react/no-children-prop
|
13
|
+
children: React.createElement(React.Fragment, null, "Clear Filters"), ...props }));
|
14
|
+
}
|
15
|
+
export default React.memo(OneBlinkFormStoreClearFiltersButton);
|
16
|
+
//# sourceMappingURL=OneBlinkFormStoreClearFiltersButton.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"OneBlinkFormStoreClearFiltersButton.js","sourceRoot":"","sources":["../../../src/components/formStore/OneBlinkFormStoreClearFiltersButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,UAAU,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,wBAAwB,MAAM,4BAA4B,CAAA;AAEjE,SAAS,mCAAmC,CAC1C,KAA0C;IAE1C,MAAM,EAAE,eAAe,EAAE,GAAG,wBAAwB,EAAE,CAAA;IACtD,OAAO,CACL,oBAAC,MAAM,IACL,SAAS,EAAE,oBAAC,UAAU,OAAG,EACzB,OAAO,EAAE,GAAG,EAAE;YACZ,eAAe,CACb,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;gBACnB,OAAO,EAAE,cAAc,CAAC,OAAO;aAChC,CAAC,EACF,KAAK,CACN,CAAA;QACH,CAAC;QACD,kDAAkD;QAClD,QAAQ,EAAE,0DAAkB,KACxB,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,eAAe,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport { Button } from '@mui/material'\nimport { FilterList as FilterIcon } from '@mui/icons-material'\nimport useFormStoreTableContext from './useFormStoreTableContext'\n\nfunction OneBlinkFormStoreClearFiltersButton(\n props: React.ComponentProps<typeof Button>,\n) {\n const { onChangeFilters } = useFormStoreTableContext()\n return (\n <Button\n startIcon={<FilterIcon />}\n onClick={() => {\n onChangeFilters(\n (currentFilters) => ({\n sorting: currentFilters.sorting,\n }),\n false,\n )\n }}\n // eslint-disable-next-line react/no-children-prop\n children={<>Clear Filters</>}\n {...props}\n />\n )\n}\n\nexport default React.memo(OneBlinkFormStoreClearFiltersButton)\n"]}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { Button } from '@mui/material';
|
3
|
+
declare function OneBlinkFormStoreColumnsButton(props: React.ComponentProps<typeof Button>): JSX.Element;
|
4
|
+
declare const _default: React.MemoExoticComponent<typeof OneBlinkFormStoreColumnsButton>;
|
5
|
+
export default _default;
|
@@ -2,11 +2,15 @@ import * as React from 'react';
|
|
2
2
|
import { Button, Checkbox, Dialog, DialogActions, DialogContent, DialogTitle, FormControlLabel, FormGroup, Typography, } from '@mui/material';
|
3
3
|
import { Settings as SettingsIcon } from '@mui/icons-material';
|
4
4
|
import useBooleanState from '../../hooks/useBooleanState';
|
5
|
-
|
5
|
+
import useFormStoreTableContext from './useFormStoreTableContext';
|
6
|
+
function OneBlinkFormStoreColumnsButton(props) {
|
7
|
+
const { getToggleHideAllColumnsProps, allColumns } = useFormStoreTableContext();
|
6
8
|
const [isConfiguringColumns, showColumnConfiguration, hideColumnConfiguration,] = useBooleanState(false);
|
7
9
|
const toggleHideAllColumnsProps = getToggleHideAllColumnsProps();
|
8
10
|
return (React.createElement(React.Fragment, null,
|
9
|
-
React.createElement(Button, { startIcon: React.createElement(SettingsIcon, null), onClick: showColumnConfiguration,
|
11
|
+
React.createElement(Button, { startIcon: React.createElement(SettingsIcon, null), onClick: showColumnConfiguration,
|
12
|
+
// eslint-disable-next-line react/no-children-prop
|
13
|
+
children: React.createElement(React.Fragment, null, "Columns"), ...props }),
|
10
14
|
React.createElement(Dialog, { open: isConfiguringColumns, maxWidth: "sm", fullWidth: true, onClose: hideColumnConfiguration },
|
11
15
|
React.createElement(DialogTitle, null, "Column Configuration"),
|
12
16
|
React.createElement(DialogContent, { dividers: true },
|
@@ -25,5 +29,5 @@ function ColumnsConfigurationButton({ allColumns, getToggleHideAllColumnsProps,
|
|
25
29
|
React.createElement(DialogActions, null,
|
26
30
|
React.createElement(Button, { onClick: hideColumnConfiguration, color: "primary", variant: "contained" }, "Done")))));
|
27
31
|
}
|
28
|
-
export default React.memo(
|
29
|
-
//# sourceMappingURL=
|
32
|
+
export default React.memo(OneBlinkFormStoreColumnsButton);
|
33
|
+
//# sourceMappingURL=OneBlinkFormStoreColumnsButton.js.map
|