@oneblink/apps-react 2.5.2 → 2.5.3-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as React from 'react';
|
2
|
-
import { useHistory } from 'react-router-dom';
|
2
|
+
import { useHistory, useLocation } from 'react-router-dom';
|
3
3
|
import querystring from 'query-string';
|
4
4
|
import { formStoreService } from '@oneblink/apps';
|
5
5
|
import useInfiniteScrollDataLoad from '../../hooks/useInfiniteScrollDataLoad';
|
@@ -16,6 +16,7 @@ import { FormStoreTableContext } from './useFormStoreTableContext';
|
|
16
16
|
export function FormStoreTableProvider({ form, children, }) {
|
17
17
|
var _a, _b;
|
18
18
|
const history = useHistory();
|
19
|
+
const location = useLocation();
|
19
20
|
const { isLoading, loadError, records: formStoreRecords, onTryAgain, onRefresh, filters: parameters, onChangeFilters: onChangeParameters, nextOffset, } = useInfiniteScrollDataLoad({
|
20
21
|
limit: 50,
|
21
22
|
isManual: true,
|
@@ -63,12 +64,14 @@ export function FormStoreTableProvider({ form, children, }) {
|
|
63
64
|
}, []),
|
64
65
|
});
|
65
66
|
React.useEffect(() => {
|
67
|
+
const currentSearch = querystring.parse(location.search);
|
66
68
|
history.replace({
|
67
69
|
search: querystring.stringify({
|
70
|
+
...currentSearch,
|
68
71
|
parameters: JSON.stringify(parameters),
|
69
72
|
}),
|
70
73
|
});
|
71
|
-
}, [history, parameters]);
|
74
|
+
}, [history, location.search, parameters]);
|
72
75
|
const submissionIdValidationMessage = useSubmissionIdValidationMessage((_b = (_a = parameters.filters) === null || _a === void 0 ? void 0 : _a.submissionId) === null || _b === void 0 ? void 0 : _b.$eq);
|
73
76
|
const formStoreTable = useFormStoreTable({
|
74
77
|
formStoreRecords,
|
@@ -1 +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 { Box, Button, Grid } from '@mui/material'\nimport { LoadingButton } from '@mui/lab'\nimport {\n Settings as SettingsIcon,\n ReadMore as LoadMoreIcon,\n} 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: parameters,\n onChangeFilters: onChangeParameters,\n nextOffset,\n } = useInfiniteScrollDataLoad<\n formStoreService.FormStoreParameters,\n FormStoreRecord\n >({\n limit: 50,\n isManual: true,\n debounceSearchMs: 1000,\n onDefaultFilters: React.useCallback((query) => {\n let defaultParameters: formStoreService.FormStoreParameters = {}\n try {\n if (typeof query.parameters === 'string') {\n defaultParameters = JSON.parse(query.parameters)\n }\n } catch (error) {\n console.warn('Could not parse filter as JSON', error)\n }\n if (!defaultParameters.sorting) {\n defaultParameters.sorting = [\n { property: 'dateTimeSubmitted', direction: 'descending' },\n ]\n }\n return defaultParameters\n }, []),\n onSearch: React.useCallback(\n async (currentParameters, paging, abortSignal) => {\n // Exclude all search parameters if searching\n // for a specific submission using an identifier\n const filters = currentParameters.filters?.submissionId\n ? {\n submissionId: currentParameters.filters.submissionId,\n }\n : currentParameters.filters\n const result = await formStoreService.searchFormStoreRecords(\n {\n ...currentParameters,\n paging,\n formId: form.id,\n filters,\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 (currentParameters: formStoreService.FormStoreParameters) => {\n return validateIsUUID(currentParameters.filters?.submissionId?.$eq)\n },\n [],\n ),\n })\n\n React.useEffect(() => {\n history.replace({\n search: querystring.stringify({\n parameters: JSON.stringify(parameters),\n }),\n })\n }, [history, parameters])\n\n const submissionIdValidationMessage = useSubmissionIdValidationMessage(\n parameters.filters?.submissionId?.$eq,\n )\n\n const formStoreTable = useFormStoreTable({\n formStoreRecords,\n parameters,\n onChangeParameters,\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 === 'INITIAL' && (\n <div className=\"ob-form-store-loading-initial\">\n <LoadingWithMessage message=\"Loading initial records...\" />\n </div>\n )}\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 className=\"ob-form-store-try-again-button\"\n variant=\"outlined\"\n color=\"primary\"\n onClick={() => onTryAgain()}\n >\n Try Again\n </Button>\n </Grid>\n </>\n )}\n\n {!!nextOffset && !loadError && isLoading !== 'INITIAL' && (\n <Box padding={4} className=\"ob-form-store-load-more-button-container\">\n <Grid container justifyContent=\"center\">\n <LoadingButton\n className=\"ob-form-store-load-more-button\"\n variant=\"outlined\"\n color=\"primary\"\n onClick={() => onTryAgain(nextOffset)}\n loading={isLoading === 'MORE'}\n size=\"large\"\n loadingPosition=\"start\"\n startIcon={<LoadMoreIcon />}\n classes={{\n loadingIndicator: 'ob-form-store-loading-more-indicator',\n }}\n >\n Load More\n </LoadingButton>\n </Grid>\n </Box>\n )}\n </FormStoreTableContext.Provider>\n )\n}\n"]}
|
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, useLocation } 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 { Box, Button, Grid } from '@mui/material'\nimport { LoadingButton } from '@mui/lab'\nimport {\n Settings as SettingsIcon,\n ReadMore as LoadMoreIcon,\n} 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 location = useLocation()\n const {\n isLoading,\n loadError,\n records: formStoreRecords,\n onTryAgain,\n onRefresh,\n filters: parameters,\n onChangeFilters: onChangeParameters,\n nextOffset,\n } = useInfiniteScrollDataLoad<\n formStoreService.FormStoreParameters,\n FormStoreRecord\n >({\n limit: 50,\n isManual: true,\n debounceSearchMs: 1000,\n onDefaultFilters: React.useCallback((query) => {\n let defaultParameters: formStoreService.FormStoreParameters = {}\n try {\n if (typeof query.parameters === 'string') {\n defaultParameters = JSON.parse(query.parameters)\n }\n } catch (error) {\n console.warn('Could not parse filter as JSON', error)\n }\n if (!defaultParameters.sorting) {\n defaultParameters.sorting = [\n { property: 'dateTimeSubmitted', direction: 'descending' },\n ]\n }\n return defaultParameters\n }, []),\n onSearch: React.useCallback(\n async (currentParameters, paging, abortSignal) => {\n // Exclude all search parameters if searching\n // for a specific submission using an identifier\n const filters = currentParameters.filters?.submissionId\n ? {\n submissionId: currentParameters.filters.submissionId,\n }\n : currentParameters.filters\n const result = await formStoreService.searchFormStoreRecords(\n {\n ...currentParameters,\n paging,\n formId: form.id,\n filters,\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 (currentParameters: formStoreService.FormStoreParameters) => {\n return validateIsUUID(currentParameters.filters?.submissionId?.$eq)\n },\n [],\n ),\n })\n\n React.useEffect(() => {\n const currentSearch = querystring.parse(location.search)\n history.replace({\n search: querystring.stringify({\n ...currentSearch,\n parameters: JSON.stringify(parameters),\n }),\n })\n }, [history, location.search, parameters])\n\n const submissionIdValidationMessage = useSubmissionIdValidationMessage(\n parameters.filters?.submissionId?.$eq,\n )\n\n const formStoreTable = useFormStoreTable({\n formStoreRecords,\n parameters,\n onChangeParameters,\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 === 'INITIAL' && (\n <div className=\"ob-form-store-loading-initial\">\n <LoadingWithMessage message=\"Loading initial records...\" />\n </div>\n )}\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 className=\"ob-form-store-try-again-button\"\n variant=\"outlined\"\n color=\"primary\"\n onClick={() => onTryAgain()}\n >\n Try Again\n </Button>\n </Grid>\n </>\n )}\n\n {!!nextOffset && !loadError && isLoading !== 'INITIAL' && (\n <Box padding={4} className=\"ob-form-store-load-more-button-container\">\n <Grid container justifyContent=\"center\">\n <LoadingButton\n className=\"ob-form-store-load-more-button\"\n variant=\"outlined\"\n color=\"primary\"\n onClick={() => onTryAgain(nextOffset)}\n loading={isLoading === 'MORE'}\n size=\"large\"\n loadingPosition=\"start\"\n startIcon={<LoadMoreIcon />}\n classes={{\n loadingIndicator: 'ob-form-store-loading-more-indicator',\n }}\n >\n Load More\n </LoadingButton>\n </Grid>\n </Box>\n )}\n </FormStoreTableContext.Provider>\n )\n}\n"]}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@oneblink/apps-react",
|
3
3
|
"description": "Helper functions for OneBlink apps in ReactJS.",
|
4
|
-
"version": "2.5.
|
4
|
+
"version": "2.5.3-beta.1",
|
5
5
|
"author": "OneBlink <developers@oneblink.io> (https://oneblink.io)",
|
6
6
|
"bugs": {
|
7
7
|
"url": "https://github.com/oneblink/apps-react/issues"
|