@oneblink/apps-react 0.6.2-beta.3 → 1.0.0-beta.2
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/OneBlinkAutoSaveForm.js +2 -2
- package/dist/OneBlinkAutoSaveForm.js.map +1 -1
- package/dist/OneBlinkFormBase.js +4 -4
- package/dist/OneBlinkFormBase.js.map +1 -1
- package/dist/OneBlinkFormStoreView.d.ts +8 -0
- package/dist/OneBlinkFormStoreView.js +55 -0
- package/dist/OneBlinkFormStoreView.js.map +1 -0
- package/dist/components/CopyToClipboardIconButton.d.ts +10 -0
- package/dist/components/CopyToClipboardIconButton.js +42 -0
- package/dist/components/CopyToClipboardIconButton.js.map +1 -0
- package/dist/components/CustomAccordion.d.ts +27 -0
- package/dist/components/CustomAccordion.js +40 -0
- package/dist/components/CustomAccordion.js.map +1 -0
- package/dist/components/ErrorMessage.d.ts +13 -0
- package/dist/components/ErrorMessage.js +13 -0
- package/dist/components/ErrorMessage.js.map +1 -0
- package/dist/components/ErrorSnackbar.d.ts +8 -0
- package/dist/components/ErrorSnackbar.js +49 -0
- package/dist/components/ErrorSnackbar.js.map +1 -0
- package/dist/components/Lists.d.ts +10 -0
- package/dist/components/Lists.js +43 -0
- package/dist/components/Lists.js.map +1 -0
- package/dist/components/LoadingWithMessage.d.ts +6 -0
- package/dist/components/LoadingWithMessage.js +12 -0
- package/dist/components/LoadingWithMessage.js.map +1 -0
- package/dist/components/NoResourcesYet.d.ts +12 -0
- package/dist/components/NoResourcesYet.js +7 -0
- package/dist/components/NoResourcesYet.js.map +1 -0
- package/dist/components/formStore/ColumnsConfigurationButton.d.ts +10 -0
- package/dist/components/formStore/ColumnsConfigurationButton.js +29 -0
- package/dist/components/formStore/ColumnsConfigurationButton.js.map +1 -0
- package/dist/components/formStore/DownloadSubmissionDataButton.d.ts +13 -0
- package/dist/components/formStore/DownloadSubmissionDataButton.js +45 -0
- package/dist/components/formStore/DownloadSubmissionDataButton.js.map +1 -0
- package/dist/components/formStore/FormStore.d.ts +9 -0
- package/dist/components/formStore/FormStore.js +103 -0
- package/dist/components/formStore/FormStore.js.map +1 -0
- package/dist/components/formStore/display/ElementDisplay.d.ts +23 -0
- package/dist/components/formStore/display/ElementDisplay.js +78 -0
- package/dist/components/formStore/display/ElementDisplay.js.map +1 -0
- package/dist/components/formStore/display/FormStoreIcon.d.ts +2 -0
- package/dist/components/formStore/display/FormStoreIcon.js +3 -0
- package/dist/components/formStore/display/FormStoreIcon.js.map +1 -0
- package/dist/components/formStore/table/ActionedByTableCell.d.ts +11 -0
- package/dist/components/formStore/table/ActionedByTableCell.js +44 -0
- package/dist/components/formStore/table/ActionedByTableCell.js.map +1 -0
- package/dist/components/formStore/table/ColumnFilters.d.ts +9 -0
- package/dist/components/formStore/table/ColumnFilters.js +180 -0
- package/dist/components/formStore/table/ColumnFilters.js.map +1 -0
- package/dist/components/formStore/table/FormElementTableCell.d.ts +10 -0
- package/dist/components/formStore/table/FormElementTableCell.js +195 -0
- package/dist/components/formStore/table/FormElementTableCell.js.map +1 -0
- package/dist/components/formStore/table/HeaderCellMoreButton.d.ts +9 -0
- package/dist/components/formStore/table/HeaderCellMoreButton.js +49 -0
- package/dist/components/formStore/table/HeaderCellMoreButton.js.map +1 -0
- package/dist/components/formStore/table/RepeatableSetCell.d.ts +9 -0
- package/dist/components/formStore/table/RepeatableSetCell.js +63 -0
- package/dist/components/formStore/table/RepeatableSetCell.js.map +1 -0
- package/dist/components/formStore/table/RepeatableSetCellAccordion.d.ts +9 -0
- package/dist/components/formStore/table/RepeatableSetCellAccordion.js +12 -0
- package/dist/components/formStore/table/RepeatableSetCellAccordion.js.map +1 -0
- package/dist/components/formStore/table/TableCellCopyButton.d.ts +7 -0
- package/dist/components/formStore/table/TableCellCopyButton.js +31 -0
- package/dist/components/formStore/table/TableCellCopyButton.js.map +1 -0
- package/dist/components/formStore/table/generateColumns.d.ts +18 -0
- package/dist/components/formStore/table/generateColumns.js +233 -0
- package/dist/components/formStore/table/generateColumns.js.map +1 -0
- package/dist/components/formStore/table/index.d.ts +17 -0
- package/dist/components/formStore/table/index.js +194 -0
- package/dist/components/formStore/table/index.js.map +1 -0
- package/dist/components/formStore/table/useFormStoreTable.d.ts +12 -0
- package/dist/components/formStore/table/useFormStoreTable.js +130 -0
- package/dist/components/formStore/table/useFormStoreTable.js.map +1 -0
- package/dist/components/messages/LargeIconMessage.d.ts +14 -0
- package/dist/components/messages/LargeIconMessage.js +68 -0
- package/dist/components/messages/LargeIconMessage.js.map +1 -0
- package/dist/components/pickers/V4CompatibleDatePicker.d.ts +30 -0
- package/dist/components/pickers/V4CompatibleDatePicker.js +58 -0
- package/dist/components/pickers/V4CompatibleDatePicker.js.map +1 -0
- package/dist/components/pickers/V4CompatibleDateTimePicker.d.ts +29 -0
- package/dist/components/pickers/V4CompatibleDateTimePicker.js +58 -0
- package/dist/components/pickers/V4CompatibleDateTimePicker.js.map +1 -0
- package/dist/components/pickers/V4CompatibleTimePicker.d.ts +26 -0
- package/dist/components/pickers/V4CompatibleTimePicker.js +41 -0
- package/dist/components/pickers/V4CompatibleTimePicker.js.map +1 -0
- package/dist/components/{AnnotationModal.d.ts → renderer/AnnotationModal.d.ts} +0 -0
- package/dist/components/{AnnotationModal.js → renderer/AnnotationModal.js} +2 -2
- package/dist/components/renderer/AnnotationModal.js.map +1 -0
- package/dist/components/{AutocompleteDropdown.d.ts → renderer/AutocompleteDropdown.d.ts} +0 -0
- package/dist/components/{AutocompleteDropdown.js → renderer/AutocompleteDropdown.js} +1 -1
- package/dist/components/renderer/AutocompleteDropdown.js.map +1 -0
- package/dist/components/{CopyToClipboardButton.d.ts → renderer/CopyToClipboardButton.d.ts} +0 -0
- package/dist/components/{CopyToClipboardButton.js → renderer/CopyToClipboardButton.js} +1 -1
- package/dist/components/renderer/CopyToClipboardButton.js.map +1 -0
- package/dist/components/{CustomisableButtonInner.d.ts → renderer/CustomisableButtonInner.d.ts} +0 -0
- package/dist/components/{CustomisableButtonInner.js → renderer/CustomisableButtonInner.js} +0 -0
- package/dist/components/renderer/CustomisableButtonInner.js.map +1 -0
- package/dist/components/{FormElementLabelContainer.d.ts → renderer/FormElementLabelContainer.d.ts} +0 -0
- package/dist/components/{FormElementLabelContainer.js → renderer/FormElementLabelContainer.js} +0 -0
- package/dist/components/renderer/FormElementLabelContainer.js.map +1 -0
- package/dist/components/{FormElementOptions.d.ts → renderer/FormElementOptions.d.ts} +0 -0
- package/dist/components/{FormElementOptions.js → renderer/FormElementOptions.js} +0 -0
- package/dist/components/renderer/FormElementOptions.js.map +1 -0
- package/dist/components/{LookupButton.d.ts → renderer/LookupButton.d.ts} +0 -0
- package/dist/components/{LookupButton.js → renderer/LookupButton.js} +3 -3
- package/dist/components/renderer/LookupButton.js.map +1 -0
- package/dist/components/{LookupNotification.d.ts → renderer/LookupNotification.d.ts} +1 -1
- package/dist/components/{LookupNotification.js → renderer/LookupNotification.js} +9 -9
- package/dist/components/renderer/LookupNotification.js.map +1 -0
- package/dist/components/{Modal.d.ts → renderer/Modal.d.ts} +0 -0
- package/dist/components/{Modal.js → renderer/Modal.js} +0 -0
- package/dist/components/renderer/Modal.js.map +1 -0
- package/dist/components/{OnLoading.d.ts → renderer/OnLoading.d.ts} +0 -0
- package/dist/components/{OnLoading.js → renderer/OnLoading.js} +0 -0
- package/dist/components/renderer/OnLoading.js.map +1 -0
- package/dist/components/{OneBlinkAppsErrorOriginalMessage.d.ts → renderer/OneBlinkAppsErrorOriginalMessage.d.ts} +0 -0
- package/dist/components/{OneBlinkAppsErrorOriginalMessage.js → renderer/OneBlinkAppsErrorOriginalMessage.js} +0 -0
- package/dist/components/renderer/OneBlinkAppsErrorOriginalMessage.js.map +1 -0
- package/dist/components/{OneBlinkFormElements.d.ts → renderer/OneBlinkFormElements.d.ts} +1 -1
- package/dist/components/{OneBlinkFormElements.js → renderer/OneBlinkFormElements.js} +36 -36
- package/dist/components/renderer/OneBlinkFormElements.js.map +1 -0
- package/dist/components/{PageFormElements.d.ts → renderer/PageFormElements.d.ts} +1 -1
- package/dist/components/{PageFormElements.js → renderer/PageFormElements.js} +3 -3
- package/dist/components/renderer/PageFormElements.js.map +1 -0
- package/dist/components/{ToggleAllCheckbox.d.ts → renderer/ToggleAllCheckbox.d.ts} +1 -1
- package/dist/components/{ToggleAllCheckbox.js → renderer/ToggleAllCheckbox.js} +0 -0
- package/dist/components/renderer/ToggleAllCheckbox.js.map +1 -0
- package/dist/components/{attachments → renderer/attachments}/AttachmentStatus.d.ts +0 -0
- package/dist/components/{attachments → renderer/attachments}/AttachmentStatus.js +1 -1
- package/dist/components/renderer/attachments/AttachmentStatus.js.map +1 -0
- package/dist/components/{attachments → renderer/attachments}/FileCard.d.ts +0 -0
- package/dist/components/{attachments → renderer/attachments}/FileCard.js +4 -4
- package/dist/components/renderer/attachments/FileCard.js.map +1 -0
- package/dist/components/{attachments → renderer/attachments}/FileCardContent.d.ts +0 -0
- package/dist/components/{attachments → renderer/attachments}/FileCardContent.js +0 -0
- package/dist/components/renderer/attachments/FileCardContent.js.map +1 -0
- package/dist/components/{attachments → renderer/attachments}/Files.d.ts +0 -0
- package/dist/components/{attachments → renderer/attachments}/Files.js +0 -0
- package/dist/components/renderer/attachments/Files.js.map +1 -0
- package/dist/components/{attachments → renderer/attachments}/ImagePreviewUnavailable.d.ts +0 -0
- package/dist/components/{attachments → renderer/attachments}/ImagePreviewUnavailable.js +1 -1
- package/dist/components/renderer/attachments/ImagePreviewUnavailable.js.map +1 -0
- package/dist/components/{attachments → renderer/attachments}/UploadingAttachment.d.ts +0 -0
- package/dist/components/{attachments → renderer/attachments}/UploadingAttachment.js +1 -1
- package/dist/components/renderer/attachments/UploadingAttachment.js.map +1 -0
- package/dist/form-elements/FormElementABN.js +3 -3
- package/dist/form-elements/FormElementABN.js.map +1 -1
- package/dist/form-elements/FormElementAutocomplete.js +3 -3
- package/dist/form-elements/FormElementAutocomplete.js.map +1 -1
- package/dist/form-elements/FormElementBSB.js +3 -3
- package/dist/form-elements/FormElementBSB.js.map +1 -1
- package/dist/form-elements/FormElementBarcodeScanner.js +4 -4
- package/dist/form-elements/FormElementBarcodeScanner.js.map +1 -1
- package/dist/form-elements/FormElementBoolean.js +1 -1
- package/dist/form-elements/FormElementBoolean.js.map +1 -1
- package/dist/form-elements/FormElementCamera.js +6 -6
- package/dist/form-elements/FormElementCamera.js.map +1 -1
- package/dist/form-elements/FormElementCheckBoxes.js +4 -4
- package/dist/form-elements/FormElementCheckBoxes.js.map +1 -1
- package/dist/form-elements/FormElementCivicaStreetName.js +2 -2
- package/dist/form-elements/FormElementCivicaStreetName.js.map +1 -1
- package/dist/form-elements/FormElementCompliance.js +2 -2
- package/dist/form-elements/FormElementCompliance.js.map +1 -1
- package/dist/form-elements/FormElementDate.js +4 -4
- package/dist/form-elements/FormElementDate.js.map +1 -1
- package/dist/form-elements/FormElementDateTime.js +4 -4
- package/dist/form-elements/FormElementDateTime.js.map +1 -1
- package/dist/form-elements/FormElementEmail.js +3 -3
- package/dist/form-elements/FormElementEmail.js.map +1 -1
- package/dist/form-elements/FormElementFiles/FormElementFile.js +1 -1
- package/dist/form-elements/FormElementFiles/FormElementFile.js.map +1 -1
- package/dist/form-elements/FormElementFiles/FormElementFiles.js +1 -1
- package/dist/form-elements/FormElementFiles/FormElementFiles.js.map +1 -1
- package/dist/form-elements/FormElementFiles/legacy/FormElementFiles.js +2 -2
- package/dist/form-elements/FormElementFiles/legacy/FormElementFiles.js.map +1 -1
- package/dist/form-elements/FormElementForm.js +1 -1
- package/dist/form-elements/FormElementForm.js.map +1 -1
- package/dist/form-elements/FormElementGeoscapeAddress.js +2 -2
- package/dist/form-elements/FormElementGeoscapeAddress.js.map +1 -1
- package/dist/form-elements/FormElementLocation.js +2 -2
- package/dist/form-elements/FormElementLocation.js.map +1 -1
- package/dist/form-elements/FormElementNumber.js +3 -3
- package/dist/form-elements/FormElementNumber.js.map +1 -1
- package/dist/form-elements/FormElementPointAddress.js +2 -2
- package/dist/form-elements/FormElementPointAddress.js.map +1 -1
- package/dist/form-elements/FormElementRadio.js +2 -2
- package/dist/form-elements/FormElementRadio.js.map +1 -1
- package/dist/form-elements/FormElementRepeatableSet.js +3 -3
- package/dist/form-elements/FormElementRepeatableSet.js.map +1 -1
- package/dist/form-elements/FormElementSection.d.ts +1 -1
- package/dist/form-elements/FormElementSection.js +1 -1
- package/dist/form-elements/FormElementSection.js.map +1 -1
- package/dist/form-elements/FormElementSelect.js +4 -4
- package/dist/form-elements/FormElementSelect.js.map +1 -1
- package/dist/form-elements/FormElementSignature.js +4 -4
- package/dist/form-elements/FormElementSignature.js.map +1 -1
- package/dist/form-elements/FormElementTelephone.js +3 -3
- package/dist/form-elements/FormElementTelephone.js.map +1 -1
- package/dist/form-elements/FormElementText.js +3 -3
- package/dist/form-elements/FormElementText.js.map +1 -1
- package/dist/form-elements/FormElementTextarea.js +3 -3
- package/dist/form-elements/FormElementTextarea.js.map +1 -1
- package/dist/form-elements/FormElementTime.js +4 -4
- package/dist/form-elements/FormElementTime.js.map +1 -1
- package/dist/hooks/useConditionalLogic.js +1 -1
- package/dist/hooks/useConditionalLogic.js.map +1 -1
- package/dist/hooks/useInfiniteScrollDataLoad.d.ts +28 -0
- package/dist/hooks/useInfiniteScrollDataLoad.js +118 -0
- package/dist/hooks/useInfiniteScrollDataLoad.js.map +1 -0
- package/dist/hooks/useIsHovering.d.ts +5 -0
- package/dist/hooks/useIsHovering.js +13 -0
- package/dist/hooks/useIsHovering.js.map +1 -0
- package/dist/hooks/useLegacyElements.d.ts +16 -0
- package/dist/hooks/useLegacyElements.js +55 -0
- package/dist/hooks/useLegacyElements.js.map +1 -0
- package/dist/hooks/useQuery.d.ts +2 -0
- package/dist/hooks/useQuery.js +8 -0
- package/dist/hooks/useQuery.js.map +1 -0
- package/dist/hooks/useSubmissionIdIsValid.d.ts +3 -0
- package/dist/hooks/useSubmissionIdIsValid.js +20 -0
- package/dist/hooks/useSubmissionIdIsValid.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/services/defaultCoordinates.js +1 -1
- package/dist/services/defaultCoordinates.js.map +1 -1
- package/dist/services/generate-default-data.js +1 -1
- package/dist/services/generate-default-data.js.map +1 -1
- package/package.json +11 -4
- package/dist/components/AnnotationModal.js.map +0 -1
- package/dist/components/AutocompleteDropdown.js.map +0 -1
- package/dist/components/CopyToClipboardButton.js.map +0 -1
- package/dist/components/CustomisableButtonInner.js.map +0 -1
- package/dist/components/FormElementLabelContainer.js.map +0 -1
- package/dist/components/FormElementOptions.js.map +0 -1
- package/dist/components/LookupButton.js.map +0 -1
- package/dist/components/LookupNotification.js.map +0 -1
- package/dist/components/Modal.js.map +0 -1
- package/dist/components/OnLoading.js.map +0 -1
- package/dist/components/OneBlinkAppsErrorOriginalMessage.js.map +0 -1
- package/dist/components/OneBlinkFormElements.js.map +0 -1
- package/dist/components/PageFormElements.js.map +0 -1
- package/dist/components/ToggleAllCheckbox.js.map +0 -1
- package/dist/components/attachments/AttachmentStatus.js.map +0 -1
- package/dist/components/attachments/FileCard.js.map +0 -1
- package/dist/components/attachments/FileCardContent.js.map +0 -1
- package/dist/components/attachments/Files.js.map +0 -1
- package/dist/components/attachments/ImagePreviewUnavailable.js.map +0 -1
- package/dist/components/attachments/UploadingAttachment.js.map +0 -1
@@ -0,0 +1,9 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { FormTypes } from '@oneblink/types';
|
3
|
+
export declare const useRepeatableSetCellStyles: (props?: any) => import("@mui/styles/withStyles").ClassNameMap<"divider" | "entriesWrapper" | "cellRowWrapper" | "cellValueWrapper">;
|
4
|
+
declare type Props = {
|
5
|
+
value: Array<Record<string, unknown>>;
|
6
|
+
formElement: FormTypes.RepeatableSetElement;
|
7
|
+
};
|
8
|
+
declare const _default: React.NamedExoticComponent<Props>;
|
9
|
+
export default _default;
|
@@ -0,0 +1,63 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { Typography, Divider } from '@mui/material';
|
3
|
+
import makeStyles from '@mui/styles/makeStyles';
|
4
|
+
import useBooleanState from '../../../hooks/useBooleanState';
|
5
|
+
import generateColumns from './generateColumns';
|
6
|
+
import { useTable } from 'react-table';
|
7
|
+
import RepeatableSetCellAccordion from './RepeatableSetCellAccordion';
|
8
|
+
export const useRepeatableSetCellStyles = makeStyles((theme) => {
|
9
|
+
return {
|
10
|
+
entriesWrapper: { width: '100%' },
|
11
|
+
cellRowWrapper: {
|
12
|
+
display: 'flex',
|
13
|
+
alignItems: 'center',
|
14
|
+
justifyContent: 'space-between',
|
15
|
+
paddingBottom: theme.spacing(),
|
16
|
+
width: '100%',
|
17
|
+
},
|
18
|
+
cellValueWrapper: {
|
19
|
+
flex: 2,
|
20
|
+
marginLeft: theme.spacing(),
|
21
|
+
textAlign: 'right',
|
22
|
+
width: '100%',
|
23
|
+
},
|
24
|
+
divider: { margin: theme.spacing(1, -2) },
|
25
|
+
};
|
26
|
+
});
|
27
|
+
const RepeatableSetCell = ({ formElement, value }) => {
|
28
|
+
const classes = useRepeatableSetCellStyles();
|
29
|
+
const [isVisible, , , toggleVisibility] = useBooleanState(false);
|
30
|
+
const hasMultipleEntries = value.length > 1;
|
31
|
+
const columns = React.useMemo(() => generateColumns({
|
32
|
+
onChangeFilters: () => { },
|
33
|
+
formElements: formElement.elements,
|
34
|
+
parentElementNames: [],
|
35
|
+
initialColumns: [],
|
36
|
+
allowCopy: false,
|
37
|
+
filters: {},
|
38
|
+
}), [formElement.elements]);
|
39
|
+
const { rows, prepareRow } = useTable({
|
40
|
+
columns,
|
41
|
+
data: value.map((entry) => ({ submission: entry })),
|
42
|
+
});
|
43
|
+
return (React.createElement(RepeatableSetCellAccordion, { title: `${value.length} Entr${hasMultipleEntries ? 'ies' : 'y'}`, isOpen: isVisible, onChange: toggleVisibility },
|
44
|
+
React.createElement("div", { className: classes.entriesWrapper }, rows.map((row, i) => {
|
45
|
+
const isLast = i === rows.length - 1;
|
46
|
+
prepareRow(row);
|
47
|
+
return (React.createElement(React.Fragment, { key: row.id },
|
48
|
+
row.cells.map((cell) => {
|
49
|
+
const cellValue = cell.render('Cell');
|
50
|
+
if (!cellValue)
|
51
|
+
return null;
|
52
|
+
return (React.createElement("div", { className: classes.cellRowWrapper, key: cell.column.id },
|
53
|
+
React.createElement("span", null,
|
54
|
+
React.createElement(Typography, { color: "textSecondary", variant: "body2" },
|
55
|
+
cell.column.headerText,
|
56
|
+
":")),
|
57
|
+
React.createElement("span", { className: classes.cellValueWrapper }, cellValue)));
|
58
|
+
}),
|
59
|
+
!isLast && React.createElement(Divider, { className: classes.divider })));
|
60
|
+
}))));
|
61
|
+
};
|
62
|
+
export default React.memo(RepeatableSetCell);
|
63
|
+
//# sourceMappingURL=RepeatableSetCell.js.map
|
@@ -0,0 +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,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAE/C,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,CAAC,MAAM,0BAA0B,GAAG,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE;IAC7D,OAAO;QACL,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QACjC,cAAc,EAAE;YACd,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,eAAe;YAC/B,aAAa,EAAE,KAAK,CAAC,OAAO,EAAE;YAC9B,KAAK,EAAE,MAAM;SACd;QACD,gBAAgB,EAAE;YAChB,IAAI,EAAE,CAAC;YACP,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE;YAC3B,SAAS,EAAE,OAAO;YAClB,KAAK,EAAE,MAAM;SACd;QACD,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;KAC1C,CAAA;AACH,CAAC,CAAC,CAAA;AAOF,MAAM,iBAAiB,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAS,EAAE,EAAE;IAC1D,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAA;IAC5C,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,eAAe,EAAE,GAAG,EAAE,GAAE,CAAC;QACzB,YAAY,EAAE,WAAW,CAAC,QAAQ;QAClC,kBAAkB,EAAE,EAAE;QACtB,cAAc,EAAE,EAAE;QAClB,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,EAAE;KACZ,CAAC,EACJ,CAAC,WAAW,CAAC,QAAQ,CAAC,CACvB,CAAA;IACD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC;QACpC,OAAO;QACP,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;KACpD,CAAC,CAAA;IAEF,OAAO,CACL,oBAAC,0BAA0B,IACzB,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,QAAQ,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,EAChE,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,gBAAgB;QAE1B,6BAAK,SAAS,EAAE,OAAO,CAAC,cAAc,IACnC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACnB,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;YACpC,UAAU,CAAC,GAAG,CAAC,CAAA;YACf,OAAO,CACL,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,GAAG,CAAC,EAAE;gBACxB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACtB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;oBACrC,IAAI,CAAC,SAAS;wBAAE,OAAO,IAAI,CAAA;oBAC3B,OAAO,CACL,6BAAK,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;wBACzD;4BACE,oBAAC,UAAU,IAAC,KAAK,EAAC,eAAe,EAAC,OAAO,EAAC,OAAO;gCAC9C,IAAI,CAAC,MAAM,CAAC,UAAU;oCACZ,CACR;wBACP,8BAAM,SAAS,EAAE,OAAO,CAAC,gBAAgB,IACtC,SAAS,CACL,CACH,CACP,CAAA;gBACH,CAAC,CAAC;gBACD,CAAC,MAAM,IAAI,oBAAC,OAAO,IAAC,SAAS,EAAE,OAAO,CAAC,OAAO,GAAI,CACpC,CAClB,CAAA;QACH,CAAC,CAAC,CACE,CACqB,CAC9B,CAAA;AACH,CAAC,CAAA;AAED,eAAe,KAAK,CAAC,IAAI,CAAQ,iBAAiB,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport { Typography, Divider } from '@mui/material'\nimport makeStyles from '@mui/styles/makeStyles'\nimport { FormTypes } from '@oneblink/types'\nimport useBooleanState from '../../../hooks/useBooleanState'\nimport generateColumns from './generateColumns'\nimport { useTable } from 'react-table'\nimport RepeatableSetCellAccordion from './RepeatableSetCellAccordion'\n\nexport const useRepeatableSetCellStyles = makeStyles((theme) => {\n return {\n entriesWrapper: { width: '100%' },\n cellRowWrapper: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingBottom: theme.spacing(),\n width: '100%',\n },\n cellValueWrapper: {\n flex: 2,\n marginLeft: theme.spacing(),\n textAlign: 'right',\n width: '100%',\n },\n divider: { margin: theme.spacing(1, -2) },\n }\n})\n\ntype Props = {\n value: Array<Record<string, unknown>>\n formElement: FormTypes.RepeatableSetElement\n}\n\nconst RepeatableSetCell = ({ formElement, value }: Props) => {\n const classes = useRepeatableSetCellStyles()\n const [isVisible, , , toggleVisibility] = useBooleanState(false)\n const hasMultipleEntries = value.length > 1\n const columns = React.useMemo(\n () =>\n generateColumns({\n onChangeFilters: () => {},\n formElements: formElement.elements,\n parentElementNames: [],\n initialColumns: [],\n allowCopy: false,\n filters: {},\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 <div className={classes.entriesWrapper}>\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 <div className={classes.cellRowWrapper} key={cell.column.id}>\n <span>\n <Typography color=\"textSecondary\" variant=\"body2\">\n {cell.column.headerText}:\n </Typography>\n </span>\n <span className={classes.cellValueWrapper}>\n {cellValue}\n </span>\n </div>\n )\n })}\n {!isLast && <Divider className={classes.divider} />}\n </React.Fragment>\n )\n })}\n </div>\n </RepeatableSetCellAccordion>\n )\n}\n\nexport default React.memo<Props>(RepeatableSetCell)\n"]}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { CustomAccordion, CustomAccordionSummary, CustomAccordionDetails, } from '../../CustomAccordion';
|
3
|
+
import { Typography } from '@mui/material';
|
4
|
+
import { ExpandMore } from '@mui/icons-material';
|
5
|
+
const RepeatableSetCell = ({ isOpen, onChange, title, children }) => {
|
6
|
+
return (React.createElement(CustomAccordion, { expanded: isOpen, onChange: onChange, "data-cypress": "form-store-repeatable-set-cell-accordion" },
|
7
|
+
React.createElement(CustomAccordionSummary, { expandIcon: React.createElement(ExpandMore, null), "data-cypress": "form-store-repeatable-set-cell-accordion-summary" },
|
8
|
+
React.createElement(Typography, null, title)),
|
9
|
+
React.createElement(CustomAccordionDetails, null, children)));
|
10
|
+
};
|
11
|
+
export default React.memo(RepeatableSetCell);
|
12
|
+
//# sourceMappingURL=RepeatableSetCellAccordion.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"RepeatableSetCellAccordion.js","sourceRoot":"","sources":["../../../../src/components/formStore/table/RepeatableSetCellAccordion.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAShD,MAAM,iBAAiB,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAS,EAAE,EAAE;IACzE,OAAO,CACL,oBAAC,eAAe,IACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,kBACL,0CAA0C;QAEvD,oBAAC,sBAAsB,IACrB,UAAU,EAAE,oBAAC,UAAU,OAAG,kBACb,kDAAkD;YAE/D,oBAAC,UAAU,QAAE,KAAK,CAAc,CACT;QACzB,oBAAC,sBAAsB,QAAE,QAAQ,CAA0B,CAC3C,CACnB,CAAA;AACH,CAAC,CAAA;AAED,eAAe,KAAK,CAAC,IAAI,CAAQ,iBAAiB,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport {\n CustomAccordion,\n CustomAccordionSummary,\n CustomAccordionDetails,\n} from '../../CustomAccordion'\nimport { Typography } from '@mui/material'\nimport { ExpandMore } from '@mui/icons-material'\n\ntype Props = {\n isOpen: boolean\n onChange: () => void\n title: string\n children: React.ReactNode\n}\n\nconst RepeatableSetCell = ({ isOpen, onChange, title, children }: Props) => {\n return (\n <CustomAccordion\n expanded={isOpen}\n onChange={onChange}\n data-cypress=\"form-store-repeatable-set-cell-accordion\"\n >\n <CustomAccordionSummary\n expandIcon={<ExpandMore />}\n data-cypress=\"form-store-repeatable-set-cell-accordion-summary\"\n >\n <Typography>{title}</Typography>\n </CustomAccordionSummary>\n <CustomAccordionDetails>{children}</CustomAccordionDetails>\n </CustomAccordion>\n )\n}\n\nexport default React.memo<Props>(RepeatableSetCell)\n"]}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { Zoom } from '@mui/material';
|
3
|
+
import makeStyles from '@mui/styles/makeStyles';
|
4
|
+
import CopyToClipboardIconButton from '../../CopyToClipboardIconButton';
|
5
|
+
import { useIsHovering } from '../../../hooks/useIsHovering';
|
6
|
+
const useStyles = makeStyles((theme) => ({
|
7
|
+
iconButton: {
|
8
|
+
backgroundColor: theme.palette.background.paper,
|
9
|
+
'&:hover': {
|
10
|
+
// Rough equivalent of the color created by transparency `rgba(0,0,0,0.04)` on white
|
11
|
+
backgroundColor: '#f3f3f3',
|
12
|
+
},
|
13
|
+
},
|
14
|
+
wrapper: {
|
15
|
+
position: 'absolute',
|
16
|
+
top: 0,
|
17
|
+
right: 0,
|
18
|
+
},
|
19
|
+
}));
|
20
|
+
function TableCellCopyButton({ text, isHidden, }) {
|
21
|
+
const classes = useStyles();
|
22
|
+
const isHovering = useIsHovering();
|
23
|
+
if (isHidden) {
|
24
|
+
return null;
|
25
|
+
}
|
26
|
+
return (React.createElement(Zoom, { in: isHovering },
|
27
|
+
React.createElement("span", { className: classes.wrapper },
|
28
|
+
React.createElement(CopyToClipboardIconButton, { text: text, className: classes.iconButton }))));
|
29
|
+
}
|
30
|
+
export default React.memo(TableCellCopyButton);
|
31
|
+
//# sourceMappingURL=TableCellCopyButton.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"TableCellCopyButton.js","sourceRoot":"","sources":["../../../../src/components/formStore/table/TableCellCopyButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAC/C,OAAO,yBAAyB,MAAM,iCAAiC,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAE5D,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACvC,UAAU,EAAE;QACV,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;QAC/C,SAAS,EAAE;YACT,oFAAoF;YACpF,eAAe,EAAE,SAAS;SAC3B;KACF;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,CAAC;QACN,KAAK,EAAE,CAAC;KACT;CACF,CAAC,CAAC,CAAA;AAEH,SAAS,mBAAmB,CAAC,EAC3B,IAAI,EACJ,QAAQ,GAIT;IACC,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAC3B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,IAAI,QAAQ,EAAE;QACZ,OAAO,IAAI,CAAA;KACZ;IACD,OAAO,CACL,oBAAC,IAAI,IAAC,EAAE,EAAE,UAAU;QAClB,8BAAM,SAAS,EAAE,OAAO,CAAC,OAAO;YAC9B,oBAAC,yBAAyB,IAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,UAAU,GAAI,CACnE,CACF,CACR,CAAA;AACH,CAAC;AAED,eAAe,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport { Zoom } from '@mui/material'\nimport makeStyles from '@mui/styles/makeStyles'\nimport CopyToClipboardIconButton from '../../CopyToClipboardIconButton'\nimport { useIsHovering } from '../../../hooks/useIsHovering'\n\nconst useStyles = makeStyles((theme) => ({\n iconButton: {\n backgroundColor: theme.palette.background.paper,\n '&:hover': {\n // Rough equivalent of the color created by transparency `rgba(0,0,0,0.04)` on white\n backgroundColor: '#f3f3f3',\n },\n },\n wrapper: {\n position: 'absolute',\n top: 0,\n right: 0,\n },\n}))\n\nfunction TableCellCopyButton({\n text,\n isHidden,\n}: {\n text: string\n isHidden?: boolean\n}) {\n const classes = useStyles()\n const isHovering = useIsHovering()\n if (isHidden) {\n return null\n }\n return (\n <Zoom in={isHovering}>\n <span className={classes.wrapper}>\n <CopyToClipboardIconButton text={text} className={classes.iconButton} />\n </span>\n </Zoom>\n )\n}\n\nexport default React.memo(TableCellCopyButton)\n"]}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { FormStoreRecord } from '@oneblink/types/typescript/submissions';
|
2
|
+
import { Column as ColumnWithCell } from 'react-table';
|
3
|
+
import { FormTypes } from '@oneblink/types';
|
4
|
+
import { formStoreService } from '@oneblink/apps';
|
5
|
+
import { OnChangeFilters } from '../../../hooks/useInfiniteScrollDataLoad';
|
6
|
+
declare const generateColumns: <T extends {
|
7
|
+
submission: FormStoreRecord['submission'];
|
8
|
+
}>({ formElements, onChangeFilters, filters, parentElementNames, initialColumns, allowCopy, }: {
|
9
|
+
formElements: (FormTypes.FormElement & {
|
10
|
+
tooltip?: string;
|
11
|
+
})[];
|
12
|
+
onChangeFilters: OnChangeFilters<formStoreService.FormStoreFilters>;
|
13
|
+
filters: formStoreService.FormStoreFilters;
|
14
|
+
parentElementNames: string[];
|
15
|
+
initialColumns: ColumnWithCell<T>[];
|
16
|
+
allowCopy: boolean;
|
17
|
+
}) => ColumnWithCell<T>[];
|
18
|
+
export default generateColumns;
|
@@ -0,0 +1,233 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import FormElementTableCell from './FormElementTableCell';
|
3
|
+
function generateSorting({ formElement, parentElementNames, filters, }) {
|
4
|
+
var _a, _b;
|
5
|
+
switch (formElement.type) {
|
6
|
+
case 'text':
|
7
|
+
case 'textarea':
|
8
|
+
case 'number':
|
9
|
+
case 'email':
|
10
|
+
case 'telephone':
|
11
|
+
case 'barcodeScanner':
|
12
|
+
case 'date':
|
13
|
+
case 'datetime':
|
14
|
+
case 'time':
|
15
|
+
case 'calculation': {
|
16
|
+
const sortProperty = [
|
17
|
+
'submission',
|
18
|
+
...parentElementNames,
|
19
|
+
formElement.name,
|
20
|
+
].join('.');
|
21
|
+
return {
|
22
|
+
property: sortProperty,
|
23
|
+
direction: (_b = (_a = filters.sorting) === null || _a === void 0 ? void 0 : _a.find(({ property }) => property === sortProperty)) === null || _b === void 0 ? void 0 : _b.direction,
|
24
|
+
};
|
25
|
+
}
|
26
|
+
}
|
27
|
+
}
|
28
|
+
function generateFilter({ formElement, onChangeFilters, rootSubmissionFilters, parentElementNames, }) {
|
29
|
+
function onChange(newValue, shouldDebounce) {
|
30
|
+
onChangeFilters((currentFilters) => {
|
31
|
+
let newSubmission = {
|
32
|
+
[formElement.name]: newValue,
|
33
|
+
};
|
34
|
+
if (parentElementNames.length) {
|
35
|
+
const copy = [...parentElementNames];
|
36
|
+
while (copy.length) {
|
37
|
+
const nestedSubmission = copy.reduce((memo, elementName) => memo === null || memo === void 0 ? void 0 : memo[elementName], rootSubmissionFilters);
|
38
|
+
const elementName = copy.pop();
|
39
|
+
if (elementName) {
|
40
|
+
newSubmission = {
|
41
|
+
[elementName]: {
|
42
|
+
...nestedSubmission,
|
43
|
+
...newSubmission,
|
44
|
+
},
|
45
|
+
};
|
46
|
+
}
|
47
|
+
}
|
48
|
+
}
|
49
|
+
return {
|
50
|
+
...currentFilters,
|
51
|
+
submission: {
|
52
|
+
...currentFilters.submission,
|
53
|
+
...newSubmission,
|
54
|
+
},
|
55
|
+
};
|
56
|
+
}, shouldDebounce);
|
57
|
+
}
|
58
|
+
const submissionFilters = parentElementNames.reduce((memo, elementName) => memo === null || memo === void 0 ? void 0 : memo[elementName], rootSubmissionFilters);
|
59
|
+
switch (formElement.type) {
|
60
|
+
case 'text':
|
61
|
+
case 'textarea':
|
62
|
+
case 'email':
|
63
|
+
case 'telephone':
|
64
|
+
case 'barcodeScanner': {
|
65
|
+
return {
|
66
|
+
type: 'TEXT',
|
67
|
+
value: submissionFilters === null || submissionFilters === void 0 ? void 0 : submissionFilters[formElement.name],
|
68
|
+
onChange,
|
69
|
+
};
|
70
|
+
}
|
71
|
+
case 'number':
|
72
|
+
case 'calculation': {
|
73
|
+
return {
|
74
|
+
type: 'NUMBER',
|
75
|
+
value: submissionFilters === null || submissionFilters === void 0 ? void 0 : submissionFilters[formElement.name],
|
76
|
+
onChange,
|
77
|
+
};
|
78
|
+
}
|
79
|
+
case 'checkboxes':
|
80
|
+
case 'select':
|
81
|
+
case 'radio':
|
82
|
+
case 'autocomplete': {
|
83
|
+
const value = submissionFilters === null || submissionFilters === void 0 ? void 0 : submissionFilters[formElement.name];
|
84
|
+
if (Array.isArray(formElement.options)) {
|
85
|
+
if ((formElement.type === 'select' && formElement.multi) ||
|
86
|
+
formElement.type === 'checkboxes') {
|
87
|
+
return {
|
88
|
+
type: 'OPTIONS_MULTIPLE',
|
89
|
+
value: value,
|
90
|
+
options: formElement.options,
|
91
|
+
onChange,
|
92
|
+
};
|
93
|
+
}
|
94
|
+
else {
|
95
|
+
return {
|
96
|
+
type: 'OPTIONS_SINGLE',
|
97
|
+
value: value,
|
98
|
+
options: formElement.options,
|
99
|
+
onChange,
|
100
|
+
};
|
101
|
+
}
|
102
|
+
}
|
103
|
+
else {
|
104
|
+
return {
|
105
|
+
type: 'TEXT',
|
106
|
+
value: value,
|
107
|
+
onChange,
|
108
|
+
};
|
109
|
+
}
|
110
|
+
}
|
111
|
+
case 'boolean':
|
112
|
+
return {
|
113
|
+
type: 'BOOLEAN',
|
114
|
+
value: submissionFilters === null || submissionFilters === void 0 ? void 0 : submissionFilters[formElement.name],
|
115
|
+
onChange,
|
116
|
+
};
|
117
|
+
case 'date': {
|
118
|
+
return {
|
119
|
+
type: 'DATE',
|
120
|
+
value: submissionFilters === null || submissionFilters === void 0 ? void 0 : submissionFilters[formElement.name],
|
121
|
+
onChange,
|
122
|
+
};
|
123
|
+
}
|
124
|
+
case 'datetime':
|
125
|
+
return {
|
126
|
+
type: 'DATETIME',
|
127
|
+
value: submissionFilters === null || submissionFilters === void 0 ? void 0 : submissionFilters[formElement.name],
|
128
|
+
onChange,
|
129
|
+
};
|
130
|
+
default: {
|
131
|
+
return undefined;
|
132
|
+
}
|
133
|
+
}
|
134
|
+
}
|
135
|
+
const generateColumns = ({ formElements, onChangeFilters, filters, parentElementNames, initialColumns, allowCopy, }) => {
|
136
|
+
return formElements.reduce((columns, formElement) => {
|
137
|
+
switch (formElement.type) {
|
138
|
+
case 'page':
|
139
|
+
case 'section': {
|
140
|
+
generateColumns({
|
141
|
+
onChangeFilters,
|
142
|
+
formElements: formElement.elements,
|
143
|
+
parentElementNames,
|
144
|
+
filters,
|
145
|
+
initialColumns: columns,
|
146
|
+
allowCopy,
|
147
|
+
});
|
148
|
+
break;
|
149
|
+
}
|
150
|
+
case 'form': {
|
151
|
+
if (formElement.elements) {
|
152
|
+
generateColumns({
|
153
|
+
onChangeFilters,
|
154
|
+
formElements: formElement.elements,
|
155
|
+
parentElementNames: [...parentElementNames, formElement.name],
|
156
|
+
initialColumns: columns,
|
157
|
+
filters,
|
158
|
+
allowCopy,
|
159
|
+
});
|
160
|
+
}
|
161
|
+
break;
|
162
|
+
}
|
163
|
+
case 'compliance': {
|
164
|
+
generateColumns({
|
165
|
+
onChangeFilters,
|
166
|
+
formElements: [
|
167
|
+
{
|
168
|
+
...formElement,
|
169
|
+
tooltip: formElement.name,
|
170
|
+
type: 'radio',
|
171
|
+
name: 'value',
|
172
|
+
buttons: false,
|
173
|
+
},
|
174
|
+
{
|
175
|
+
...formElement,
|
176
|
+
tooltip: `${formElement.name}_notes`,
|
177
|
+
type: 'textarea',
|
178
|
+
name: 'notes',
|
179
|
+
label: `${formElement.label} (Notes)`,
|
180
|
+
},
|
181
|
+
{
|
182
|
+
...formElement,
|
183
|
+
tooltip: `${formElement.name}_media`,
|
184
|
+
type: 'files',
|
185
|
+
restrictFileTypes: false,
|
186
|
+
name: 'files',
|
187
|
+
label: `${formElement.label} (Media)`,
|
188
|
+
},
|
189
|
+
],
|
190
|
+
parentElementNames: [...parentElementNames, formElement.name],
|
191
|
+
initialColumns: columns,
|
192
|
+
filters,
|
193
|
+
allowCopy,
|
194
|
+
});
|
195
|
+
break;
|
196
|
+
}
|
197
|
+
case 'summary':
|
198
|
+
case 'captcha':
|
199
|
+
case 'html':
|
200
|
+
case 'heading':
|
201
|
+
case 'infoPage':
|
202
|
+
case 'image': {
|
203
|
+
break;
|
204
|
+
}
|
205
|
+
default: {
|
206
|
+
columns.push({
|
207
|
+
id: ['FORM_ELEMENT', ...parentElementNames, formElement.name].join('_'),
|
208
|
+
sorting: generateSorting({
|
209
|
+
formElement,
|
210
|
+
filters,
|
211
|
+
parentElementNames,
|
212
|
+
}),
|
213
|
+
headerText: formElement.label,
|
214
|
+
tooltip: formElement.tooltip || formElement.name,
|
215
|
+
filter: generateFilter({
|
216
|
+
parentElementNames,
|
217
|
+
formElement,
|
218
|
+
onChangeFilters,
|
219
|
+
rootSubmissionFilters: filters.submission,
|
220
|
+
}),
|
221
|
+
Cell: ({ row: { original: formStoreRecord } }) => {
|
222
|
+
const submission = parentElementNames.reduce((memo, elementName) => memo === null || memo === void 0 ? void 0 : memo[elementName], formStoreRecord.submission);
|
223
|
+
return (React.createElement(FormElementTableCell, { formElement: formElement, submission: submission, allowCopy: allowCopy }));
|
224
|
+
},
|
225
|
+
});
|
226
|
+
break;
|
227
|
+
}
|
228
|
+
}
|
229
|
+
return columns;
|
230
|
+
}, initialColumns);
|
231
|
+
};
|
232
|
+
export default generateColumns;
|
233
|
+
//# sourceMappingURL=generateColumns.js.map
|
@@ -0,0 +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 filters,\n}: {\n formElement: FormTypes.FormElementWithName\n parentElementNames: string[]\n filters: formStoreService.FormStoreFilters\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: filters.sorting?.find(\n ({ property }) => property === sortProperty,\n )?.direction,\n }\n }\n }\n}\n\nfunction generateFilter({\n formElement,\n onChangeFilters,\n rootSubmissionFilters,\n parentElementNames,\n}: {\n formElement: FormTypes.FormElementWithName\n onChangeFilters: OnChangeFilters<formStoreService.FormStoreFilters>\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 onChangeFilters((currentFilters) => {\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 ...currentFilters,\n submission: {\n ...currentFilters.submission,\n ...newSubmission,\n },\n } as formStoreService.FormStoreFilters\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 onChangeFilters,\n filters,\n parentElementNames,\n initialColumns,\n allowCopy,\n}: {\n formElements: (FormTypes.FormElement & { tooltip?: string })[]\n onChangeFilters: OnChangeFilters<formStoreService.FormStoreFilters>\n filters: formStoreService.FormStoreFilters\n parentElementNames: string[]\n initialColumns: Array<ColumnWithCell<T>>\n allowCopy: boolean\n}) => {\n return formElements.reduce<Array<ColumnWithCell<T>>>(\n (columns, formElement) => {\n switch (formElement.type) {\n case 'page':\n case 'section': {\n generateColumns({\n onChangeFilters,\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 onChangeFilters,\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 onChangeFilters,\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 filters,\n parentElementNames,\n }),\n headerText: formElement.label,\n tooltip: formElement.tooltip || formElement.name,\n filter: generateFilter({\n parentElementNames,\n formElement,\n onChangeFilters,\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) => memo?.[elementName],\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"]}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { TableInstance } from 'react-table';
|
3
|
+
import { SubmissionTypes } from '@oneblink/types';
|
4
|
+
import { OnChangeFilters } from '../../../hooks/useInfiniteScrollDataLoad';
|
5
|
+
import { formStoreService } from '@oneblink/apps';
|
6
|
+
declare type FormStoreTableInstance = TableInstance<SubmissionTypes.FormStoreRecord>;
|
7
|
+
declare function FormStoreTable({ getTableProps, getTableBodyProps, headerGroups, rows, prepareRow, isEmptyResults, onChangeFilters, }: {
|
8
|
+
getTableProps: FormStoreTableInstance['getTableProps'];
|
9
|
+
getTableBodyProps: FormStoreTableInstance['getTableBodyProps'];
|
10
|
+
headerGroups: FormStoreTableInstance['headerGroups'];
|
11
|
+
rows: FormStoreTableInstance['rows'];
|
12
|
+
prepareRow: FormStoreTableInstance['prepareRow'];
|
13
|
+
isEmptyResults: boolean;
|
14
|
+
onChangeFilters: OnChangeFilters<formStoreService.FormStoreFilters>;
|
15
|
+
}): JSX.Element;
|
16
|
+
declare const _default: React.MemoExoticComponent<typeof FormStoreTable>;
|
17
|
+
export default _default;
|