@oneblink/apps-react 4.0.0-beta.1 → 4.0.0-beta.10
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/README.md +2 -8
- package/dist/OneBlinkAutoSaveForm.d.ts +25 -5
- package/dist/OneBlinkAutoSaveForm.js +12 -0
- package/dist/OneBlinkAutoSaveForm.js.map +1 -1
- package/dist/OneBlinkForm.d.ts +558 -8
- package/dist/OneBlinkForm.js +546 -0
- package/dist/OneBlinkForm.js.map +1 -1
- package/dist/OneBlinkFormBase.d.ts +52 -7
- package/dist/OneBlinkFormBase.js +4 -1
- package/dist/OneBlinkFormBase.js.map +1 -1
- package/dist/OneBlinkReadOnlyForm.d.ts +83 -6
- package/dist/OneBlinkReadOnlyForm.js +80 -1
- package/dist/OneBlinkReadOnlyForm.js.map +1 -1
- package/dist/PaymentReceipt.d.ts +59 -0
- package/dist/PaymentReceipt.js +49 -0
- package/dist/PaymentReceipt.js.map +1 -1
- package/dist/components/formStore/FormStoreTableProvider.js +23 -1
- package/dist/components/formStore/FormStoreTableProvider.js.map +1 -1
- package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.d.ts +5 -0
- package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.js +5 -0
- package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.js.map +1 -1
- package/dist/components/formStore/OneBlinkFormStoreColumnsButton.d.ts +5 -0
- package/dist/components/formStore/OneBlinkFormStoreColumnsButton.js +5 -0
- package/dist/components/formStore/OneBlinkFormStoreColumnsButton.js.map +1 -1
- package/dist/components/formStore/OneBlinkFormStoreDownloadButton.d.ts +5 -0
- package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js +5 -0
- package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js.map +1 -1
- package/dist/components/formStore/OneBlinkFormStoreProvider.d.ts +5 -0
- package/dist/components/formStore/OneBlinkFormStoreProvider.js +5 -0
- package/dist/components/formStore/OneBlinkFormStoreProvider.js.map +1 -1
- package/dist/components/formStore/OneBlinkFormStoreRefreshButton.d.ts +5 -0
- package/dist/components/formStore/OneBlinkFormStoreRefreshButton.js +5 -0
- package/dist/components/formStore/OneBlinkFormStoreRefreshButton.js.map +1 -1
- package/dist/components/formStore/OneBlinkFormStoreTable.d.ts +4 -0
- package/dist/components/formStore/OneBlinkFormStoreTable.js +4 -0
- package/dist/components/formStore/OneBlinkFormStoreTable.js.map +1 -1
- package/dist/components/pickers/V4CompatibleDatePicker.d.ts +5 -0
- package/dist/components/pickers/V4CompatibleDatePicker.js +5 -0
- package/dist/components/pickers/V4CompatibleDatePicker.js.map +1 -1
- package/dist/components/pickers/V4CompatibleDateTimePicker.d.ts +5 -0
- package/dist/components/pickers/V4CompatibleDateTimePicker.js +5 -0
- package/dist/components/pickers/V4CompatibleDateTimePicker.js.map +1 -1
- package/dist/components/pickers/V4CompatibleTimePicker.d.ts +5 -0
- package/dist/components/pickers/V4CompatibleTimePicker.js +5 -0
- package/dist/components/pickers/V4CompatibleTimePicker.js.map +1 -1
- package/dist/components/renderer/LookupButton.js +2 -2
- package/dist/components/renderer/LookupButton.js.map +1 -1
- package/dist/components/renderer/LookupNotification.js +43 -25
- package/dist/components/renderer/LookupNotification.js.map +1 -1
- package/dist/components/renderer/OneBlinkFormElements.d.ts +3 -3
- package/dist/components/renderer/OneBlinkFormElements.js.map +1 -1
- package/dist/components/renderer/PageFormElements.d.ts +3 -3
- package/dist/components/renderer/PageFormElements.js.map +1 -1
- package/dist/components/renderer/ProgressBar.d.ts +7 -3
- package/dist/components/renderer/ProgressBar.js +5 -0
- package/dist/components/renderer/ProgressBar.js.map +1 -1
- package/dist/form-elements/FormElementBarcodeScanner.js +2 -2
- package/dist/form-elements/FormElementBarcodeScanner.js.map +1 -1
- package/dist/form-elements/FormElementCalculation.js.map +1 -1
- package/dist/form-elements/FormElementForm.d.ts +4 -4
- package/dist/form-elements/FormElementForm.js.map +1 -1
- package/dist/form-elements/FormElementRepeatableSet.d.ts +4 -4
- package/dist/form-elements/FormElementRepeatableSet.js.map +1 -1
- package/dist/form-elements/FormElementSummary.js.map +1 -1
- package/dist/hooks/useAuth.d.ts +81 -6
- package/dist/hooks/useAuth.js +54 -0
- package/dist/hooks/useAuth.js.map +1 -1
- package/dist/hooks/useBooleanState.d.ts +42 -5
- package/dist/hooks/useBooleanState.js +36 -0
- package/dist/hooks/useBooleanState.js.map +1 -1
- package/dist/hooks/useClickOutsideElement.d.ts +40 -0
- package/dist/hooks/useClickOutsideElement.js +40 -0
- package/dist/hooks/useClickOutsideElement.js.map +1 -1
- package/dist/hooks/useConditionalLogic.d.ts +2 -3
- package/dist/hooks/useConditionalLogic.js.map +1 -1
- package/dist/hooks/useDrafts.d.ts +82 -0
- package/dist/hooks/useDrafts.js +204 -0
- package/dist/hooks/useDrafts.js.map +1 -0
- package/dist/hooks/useFormSubmissionAutoSaveState.d.ts +18 -5
- package/dist/hooks/useFormSubmissionAutoSaveState.js +10 -0
- package/dist/hooks/useFormSubmissionAutoSaveState.js.map +1 -1
- package/dist/hooks/useFormSubmissionModelContext.d.ts +4 -4
- package/dist/hooks/useFormSubmissionModelContext.js.map +1 -1
- package/dist/hooks/useFormSubmissionState.d.ts +45 -5
- package/dist/hooks/useFormSubmissionState.js +37 -0
- package/dist/hooks/useFormSubmissionState.js.map +1 -1
- package/dist/hooks/useFormValidation.d.ts +3 -3
- package/dist/hooks/useFormValidation.js.map +1 -1
- package/dist/hooks/useInjectPages.d.ts +2 -3
- package/dist/hooks/useInjectPages.js.map +1 -1
- package/dist/hooks/useIsMounted.d.ts +20 -0
- package/dist/hooks/useIsMounted.js +19 -0
- package/dist/hooks/useIsMounted.js.map +1 -1
- package/dist/hooks/useIsOffline.d.ts +54 -0
- package/dist/hooks/useIsOffline.js +54 -0
- package/dist/hooks/useIsOffline.js.map +1 -1
- package/dist/hooks/useLoadDataState.d.ts +46 -3
- package/dist/hooks/useLoadDataState.js +41 -0
- package/dist/hooks/useLoadDataState.js.map +1 -1
- package/dist/hooks/useLogin.d.ts +400 -13
- package/dist/hooks/useLogin.js +300 -0
- package/dist/hooks/useLogin.js.map +1 -1
- package/dist/hooks/useLookupNotification.d.ts +6 -2
- package/dist/hooks/useLookupNotification.js +29 -3
- package/dist/hooks/useLookupNotification.js.map +1 -1
- package/dist/hooks/useLookups.d.ts +3 -3
- package/dist/hooks/useLookups.js.map +1 -1
- package/dist/hooks/useNullableState.d.ts +46 -1
- package/dist/hooks/useNullableState.js +42 -1
- package/dist/hooks/useNullableState.js.map +1 -1
- package/dist/hooks/usePendingSubmissions.d.ts +103 -0
- package/dist/hooks/usePendingSubmissions.js +195 -0
- package/dist/hooks/usePendingSubmissions.js.map +1 -0
- package/dist/hooks/useSignUp.d.ts +5 -0
- package/dist/hooks/useSignUp.js +5 -0
- package/dist/hooks/useSignUp.js.map +1 -1
- package/dist/index.d.ts +7 -4
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/services/checkBsbsAreInvalid.d.ts +2 -3
- package/dist/services/checkBsbsAreInvalid.js.map +1 -1
- package/dist/services/checkIfAttachmentsExist.d.ts +2 -3
- package/dist/services/checkIfAttachmentsExist.js.map +1 -1
- package/dist/services/checkIfBsbsAreValidating.d.ts +2 -3
- package/dist/services/checkIfBsbsAreValidating.js.map +1 -1
- package/dist/services/cleanFormSubmissionModel.d.ts +4 -4
- package/dist/services/cleanFormSubmissionModel.js +2 -1
- package/dist/services/cleanFormSubmissionModel.js.map +1 -1
- package/dist/services/form-validation.d.ts +3 -3
- package/dist/services/form-validation.js.map +1 -1
- package/dist/services/generate-default-data.d.ts +2 -3
- package/dist/services/generate-default-data.js +3 -1
- package/dist/services/generate-default-data.js.map +1 -1
- package/dist/services/generateFreshdeskDependentFieldElements.js.map +1 -1
- package/dist/services/getDateRangeConfiguration.d.ts +2 -3
- package/dist/services/getDateRangeConfiguration.js.map +1 -1
- package/dist/services/getRepeatableSetEntriesConfiguration.d.ts +2 -3
- package/dist/services/getRepeatableSetEntriesConfiguration.js.map +1 -1
- package/dist/styles/receipt.scss +1 -1
- package/dist/styles/repeatable-set.scss +2 -2
- package/dist/typedoc.d.ts +2 -0
- package/dist/typedoc.js +3 -0
- package/dist/typedoc.js.map +1 -0
- package/dist/types/form.d.ts +5 -6
- package/dist/types/form.js.map +1 -1
- package/package.json +9 -3
package/dist/PaymentReceipt.js
CHANGED
@@ -151,5 +151,54 @@ function PaymentReceipt({ onDone, onCancel, }) {
|
|
151
151
|
retryError && (React.createElement(Modal, { isOpen: true, title: retryError.title || 'Whoops...', bodyClassName: "cypress-payment-receipt-retry-error-message", actions: React.createElement("button", { type: "button", className: "button ob-button is-primary cypress-payment-receipt-retry-error-okay-button", onClick: clearRetryError }, "Okay") }, retryError.message)),
|
152
152
|
postSubmissionError && (React.createElement(Modal, { isOpen: true, title: postSubmissionError.title || 'Whoops...', bodyClassName: "cypress-payment-receipt-retry-error-message", actions: React.createElement("button", { type: "button", className: "button ob-button is-primary cypress-payment-receipt-retry-error-okay-button", onClick: clearPostSubmissionError }, "Okay") }, postSubmissionError.message))));
|
153
153
|
}
|
154
|
+
/**
|
155
|
+
* Component for rendering a OneBlink Form Payment Receipt. This component will
|
156
|
+
* payment receipt but it is up to the developer to implement what happens when
|
157
|
+
* the user clicks 'Done'.
|
158
|
+
*
|
159
|
+
* It is also recommended to import the `css` from this library as well.
|
160
|
+
*
|
161
|
+
* ```js
|
162
|
+
* import { PaymentReceipt } from '@oneblink/apps-react'
|
163
|
+
* import '@oneblink/apps-react/dist/styles.css'
|
164
|
+
* ```
|
165
|
+
*
|
166
|
+
* #### Example
|
167
|
+
*
|
168
|
+
* ```tsx
|
169
|
+
* import React from 'react'
|
170
|
+
* import ReactDOM from 'react-dom'
|
171
|
+
* import { PaymentReceipt } from '@oneblink/apps-react'
|
172
|
+
* import '@oneblink/apps-react/dist/styles.css'
|
173
|
+
*
|
174
|
+
* function ReceiptContainer() {
|
175
|
+
* const handleDone = React.useCallback(async () => {
|
176
|
+
* console.log('All done!')
|
177
|
+
* }, [])
|
178
|
+
* const handleCancel = React.useCallback(async () => {
|
179
|
+
* console.log('Cancelled!')
|
180
|
+
* }, [])
|
181
|
+
*
|
182
|
+
* return <PaymentReceipt onDone={handleDone} onCancel={handleCancel} />
|
183
|
+
* }
|
184
|
+
*
|
185
|
+
* function App() {
|
186
|
+
* return (
|
187
|
+
* <IsOfflineContextProvider>
|
188
|
+
* <ReceiptContainer />
|
189
|
+
* </IsOfflineContextProvider>
|
190
|
+
* )
|
191
|
+
* }
|
192
|
+
*
|
193
|
+
* const root = document.getElementById('root')
|
194
|
+
* if (root) {
|
195
|
+
* ReactDOM.render(<App />, root)
|
196
|
+
* }
|
197
|
+
* ```
|
198
|
+
*
|
199
|
+
* @param props
|
200
|
+
* @returns
|
201
|
+
* @group Components
|
202
|
+
*/
|
154
203
|
export default React.memo(PaymentReceipt);
|
155
204
|
//# sourceMappingURL=PaymentReceipt.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"PaymentReceipt.js","sourceRoot":"","sources":["../src/PaymentReceipt.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { useHistory } from 'react-router-dom'\nimport {\n paymentService,\n submissionService,\n localisationService,\n OneBlinkAppsError,\n} from '@oneblink/apps'\nimport useIsMounted from './hooks/useIsMounted'\n\nimport useQuery from './hooks/useQuery'\nimport Modal from './components/renderer/Modal'\nimport OnLoading from './components/renderer/OnLoading'\nimport {\n Receipt,\n ReceiptList,\n ReceiptListItem,\n ReceiptButton,\n} from './components/receipts'\n\nconst { handlePaymentQuerystring, handlePaymentSubmissionEvent } =\n paymentService\n\nfunction PaymentReceipt({\n onDone,\n onCancel,\n}: {\n onDone: (\n submissionResult: submissionService.FormSubmissionResult,\n ) => Promise<void>\n onCancel: (\n submissionResult: submissionService.FormSubmissionResult,\n ) => Promise<void>\n}) {\n const isMounted = useIsMounted()\n const query = useQuery()\n const history = useHistory()\n\n const [\n { isLoading, loadError, transaction, submissionResult },\n setLoadState,\n ] = React.useState<{\n isLoading: boolean\n loadError: Error | null\n transaction: paymentService.HandlePaymentResult['transaction'] | null\n submissionResult: submissionService.FormSubmissionResult | null\n }>({\n isLoading: true,\n loadError: null,\n transaction: null,\n submissionResult: null,\n })\n const [\n { isRunningPostSubmissionAction, postSubmissionError },\n setPostSubmissionState,\n ] = React.useState<{\n isRunningPostSubmissionAction: boolean\n postSubmissionError: OneBlinkAppsError | null\n }>({\n isRunningPostSubmissionAction: false,\n postSubmissionError: null,\n })\n const clearPostSubmissionError = React.useCallback(() => {\n setPostSubmissionState((currentState) => ({\n ...currentState,\n postSubmissionError: null,\n }))\n }, [])\n const [{ isRetrying, retryError }, setRetryState] = React.useState<{\n isRetrying: boolean\n retryError: OneBlinkAppsError | null\n }>({\n isRetrying: false,\n retryError: null,\n })\n const clearRetryError = React.useCallback(() => {\n setRetryState((currentState) => ({\n ...currentState,\n retryError: null,\n }))\n }, [])\n\n React.useEffect(() => {\n let ignore = false\n\n const getTransaction = async () => {\n let newError = null\n let newTransaction = null\n let newSubmissionResult = null\n try {\n const result = await handlePaymentQuerystring(query)\n newTransaction = result.transaction\n newSubmissionResult = result.submissionResult\n } catch (error) {\n console.warn('Error while attempting to load transaction', error)\n newError = error as Error\n }\n\n if (!ignore) {\n setLoadState({\n isLoading: false,\n loadError: newError,\n transaction: newTransaction,\n submissionResult: newSubmissionResult,\n })\n }\n }\n getTransaction()\n\n return () => {\n ignore = true\n }\n }, [query])\n\n const executePostSubmissionAction = React.useCallback(\n async (\n action: (\n submissionRresult: submissionService.FormSubmissionResult,\n ) => Promise<void>,\n ) => {\n if (!submissionResult || !isMounted.current) {\n return\n }\n\n setPostSubmissionState({\n isRunningPostSubmissionAction: true,\n postSubmissionError: null,\n })\n\n let newError = null\n try {\n await action({ ...submissionResult, payment: null })\n } catch (error) {\n console.warn('Error while running post submission action', error)\n newError = error as OneBlinkAppsError\n }\n\n if (isMounted.current) {\n setPostSubmissionState({\n isRunningPostSubmissionAction: false,\n postSubmissionError: newError,\n })\n }\n },\n [isMounted, submissionResult],\n )\n\n const handleDone = React.useCallback(async () => {\n executePostSubmissionAction(onDone)\n }, [executePostSubmissionAction, onDone])\n\n const handleCancel = React.useCallback(() => {\n executePostSubmissionAction(onCancel)\n }, [executePostSubmissionAction, onCancel])\n\n const handleTryAgain = React.useCallback(async () => {\n if (!submissionResult || !submissionResult.payment) {\n return\n }\n const paymentSubmissionEvent = submissionResult.payment.submissionEvent\n\n if (isMounted.current) {\n setRetryState({\n isRetrying: true,\n retryError: null,\n })\n }\n\n let newError = null\n try {\n submissionResult.payment = await handlePaymentSubmissionEvent({\n amount: submissionResult.payment.amount,\n formSubmissionResult: submissionResult,\n paymentSubmissionEvent,\n paymentReceiptUrl: `${window.location.origin}${window.location.pathname}`,\n })\n await submissionService.executePostSubmissionAction(\n submissionResult,\n history.push,\n )\n } catch (error) {\n console.warn('Error while attempting to retry transaction', error)\n newError = error as OneBlinkAppsError\n }\n\n if (isMounted.current) {\n setRetryState({\n isRetrying: false,\n retryError: newError,\n })\n }\n }, [history.push, isMounted, submissionResult])\n\n return (\n <div>\n {isLoading && (\n <section>\n <div className=\"cypress-loading has-text-centered\">\n <OnLoading className=\"has-text-centered\"></OnLoading>\n <span>Retrieving transaction details...</span>\n </div>\n </section>\n )}\n\n {transaction && (\n <Receipt\n className=\"ob-payment-receipt\"\n containerClassName=\"ob-payment-receipt__container\"\n >\n <ReceiptList\n successIconClassName=\"ob-payment-receipt__success-icon\"\n warningIconClassName=\"ob-payment-receipt__warning-icon\"\n warningMessageClassName=\"ob-payment-receipt__warning-message cypress-payment-receipt-warning-message\"\n warningMessage={\n transaction.isSuccess\n ? undefined\n : transaction.errorMessage || undefined\n }\n >\n {submissionResult && submissionResult.submissionId && (\n <ReceiptListItem\n className=\"ob-payment-receipt__submission-id\"\n valueClassName=\"cypress-payment-receipt-submission-id\"\n icon=\"receipt\"\n label=\"Submission Id\"\n value={submissionResult.submissionId}\n allowCopyToClipboard\n />\n )}\n\n {!!transaction.id && (\n <ReceiptListItem\n className=\"ob-payment-receipt__transaction-id\"\n valueClassName=\"cypress-payment-receipt-transaction-id\"\n icon=\"shopping_cart\"\n label=\"Transaction Id\"\n value={transaction.id}\n allowCopyToClipboard\n />\n )}\n\n {!!transaction.creditCardMask && (\n <ReceiptListItem\n className=\"ob-payment-receipt__card-number\"\n valueClassName=\"cypress-payment-receipt-card-number\"\n icon=\"credit_card\"\n label=\"Card Number\"\n value={transaction.creditCardMask}\n />\n )}\n\n {!!transaction.amount && (\n <ReceiptListItem\n className=\"ob-payment-receipt__amount\"\n valueClassName=\"cypress-payment-receipt-amount\"\n icon=\"attach_money\"\n label=\"Amount\"\n value={localisationService.formatCurrency(transaction.amount)}\n />\n )}\n <ReceiptListItem\n className=\"ob-payment-receipt__warning\"\n valueClassName=\"cypress-payment-receipt-warning\"\n label=\"Warning\"\n value=\"Please do not click back in your browser, doing so will cause issues with your payment.\"\n />\n </ReceiptList>\n\n <div className=\"buttons\">\n {transaction.isSuccess ? (\n <ReceiptButton\n className=\"is-primary ob-payment-receipt__button ob-payment-receipt__okay-button cypress-payment-receipt-okay-button\"\n label=\"Done\"\n isLoading={isRunningPostSubmissionAction}\n onClick={handleDone}\n />\n ) : (\n <>\n <ReceiptButton\n className=\"ob-payment-receipt__button ob-payment-receipt__cancel-button cypress-payment-receipt-cancel-button\"\n label=\"Cancel\"\n isDisabled={isRetrying}\n isLoading={isRunningPostSubmissionAction}\n onClick={handleCancel}\n />\n <ReceiptButton\n className=\"is-primary ob-payment-receipt__button ob-payment-receipt__try-again-button cypress-payment-receipt-try-again-button\"\n label=\"Try Again\"\n isDisabled={isRunningPostSubmissionAction}\n isLoading={isRetrying}\n onClick={handleTryAgain}\n />\n </>\n )}\n </div>\n </Receipt>\n )}\n\n {loadError && (\n <section className=\"cypress-payment-receipt-loading-error-message\">\n <div className=\"ob-payment-receipt__error-icon-container has-text-centered has-margin-bottom-8\">\n <i className=\"ob-payment-receipt__error-icon material-icons has-text-danger icon-x-large\">\n error\n </i>\n </div>\n <p className=\"ob-payment-receipt__error-message has-text-centered has-margin-bottom-4\">\n {loadError.message}\n </p>\n </section>\n )}\n\n {retryError && (\n <Modal\n isOpen\n title={retryError.title || 'Whoops...'}\n bodyClassName=\"cypress-payment-receipt-retry-error-message\"\n actions={\n <button\n type=\"button\"\n className=\"button ob-button is-primary cypress-payment-receipt-retry-error-okay-button\"\n onClick={clearRetryError}\n >\n Okay\n </button>\n }\n >\n {retryError.message}\n </Modal>\n )}\n\n {postSubmissionError && (\n <Modal\n isOpen\n title={postSubmissionError.title || 'Whoops...'}\n bodyClassName=\"cypress-payment-receipt-retry-error-message\"\n actions={\n <button\n type=\"button\"\n className=\"button ob-button is-primary cypress-payment-receipt-retry-error-okay-button\"\n onClick={clearPostSubmissionError}\n >\n Okay\n </button>\n }\n >\n {postSubmissionError.message}\n </Modal>\n )}\n </div>\n )\n}\n\nexport default React.memo(PaymentReceipt)\n"]}
|
1
|
+
{"version":3,"file":"PaymentReceipt.js","sourceRoot":"","sources":["../src/PaymentReceipt.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { useHistory } from 'react-router-dom'\nimport {\n paymentService,\n submissionService,\n localisationService,\n OneBlinkAppsError,\n} from '@oneblink/apps'\nimport useIsMounted from './hooks/useIsMounted'\n\nimport useQuery from './hooks/useQuery'\nimport Modal from './components/renderer/Modal'\nimport OnLoading from './components/renderer/OnLoading'\nimport {\n Receipt,\n ReceiptList,\n ReceiptListItem,\n ReceiptButton,\n} from './components/receipts'\n\nconst { handlePaymentQuerystring, handlePaymentSubmissionEvent } =\n paymentService\n\nfunction PaymentReceipt({\n onDone,\n onCancel,\n}: {\n /**\n * The function to call when the user clicks 'Done'. See\n * [FormSubmissionResult](https://oneblink.github.io/apps/modules/submissionService.html#FormSubmissionResult)\n * for the structure of the argument.\n */\n onDone: (\n submissionResult: submissionService.FormSubmissionResult,\n ) => Promise<void>\n /**\n * The function to call when the user clicks 'Cancel'. See\n * [FormSubmissionResult](https://oneblink.github.io/apps/modules/submissionService.html#FormSubmissionResult)\n * for the structure of the argument.\n */\n onCancel: (\n submissionResult: submissionService.FormSubmissionResult,\n ) => Promise<void>\n}) {\n const isMounted = useIsMounted()\n const query = useQuery()\n const history = useHistory()\n\n const [\n { isLoading, loadError, transaction, submissionResult },\n setLoadState,\n ] = React.useState<{\n isLoading: boolean\n loadError: Error | null\n transaction: paymentService.HandlePaymentResult['transaction'] | null\n submissionResult: submissionService.FormSubmissionResult | null\n }>({\n isLoading: true,\n loadError: null,\n transaction: null,\n submissionResult: null,\n })\n const [\n { isRunningPostSubmissionAction, postSubmissionError },\n setPostSubmissionState,\n ] = React.useState<{\n isRunningPostSubmissionAction: boolean\n postSubmissionError: OneBlinkAppsError | null\n }>({\n isRunningPostSubmissionAction: false,\n postSubmissionError: null,\n })\n const clearPostSubmissionError = React.useCallback(() => {\n setPostSubmissionState((currentState) => ({\n ...currentState,\n postSubmissionError: null,\n }))\n }, [])\n const [{ isRetrying, retryError }, setRetryState] = React.useState<{\n isRetrying: boolean\n retryError: OneBlinkAppsError | null\n }>({\n isRetrying: false,\n retryError: null,\n })\n const clearRetryError = React.useCallback(() => {\n setRetryState((currentState) => ({\n ...currentState,\n retryError: null,\n }))\n }, [])\n\n React.useEffect(() => {\n let ignore = false\n\n const getTransaction = async () => {\n let newError = null\n let newTransaction = null\n let newSubmissionResult = null\n try {\n const result = await handlePaymentQuerystring(query)\n newTransaction = result.transaction\n newSubmissionResult = result.submissionResult\n } catch (error) {\n console.warn('Error while attempting to load transaction', error)\n newError = error as Error\n }\n\n if (!ignore) {\n setLoadState({\n isLoading: false,\n loadError: newError,\n transaction: newTransaction,\n submissionResult: newSubmissionResult,\n })\n }\n }\n getTransaction()\n\n return () => {\n ignore = true\n }\n }, [query])\n\n const executePostSubmissionAction = React.useCallback(\n async (\n action: (\n submissionRresult: submissionService.FormSubmissionResult,\n ) => Promise<void>,\n ) => {\n if (!submissionResult || !isMounted.current) {\n return\n }\n\n setPostSubmissionState({\n isRunningPostSubmissionAction: true,\n postSubmissionError: null,\n })\n\n let newError = null\n try {\n await action({ ...submissionResult, payment: null })\n } catch (error) {\n console.warn('Error while running post submission action', error)\n newError = error as OneBlinkAppsError\n }\n\n if (isMounted.current) {\n setPostSubmissionState({\n isRunningPostSubmissionAction: false,\n postSubmissionError: newError,\n })\n }\n },\n [isMounted, submissionResult],\n )\n\n const handleDone = React.useCallback(async () => {\n executePostSubmissionAction(onDone)\n }, [executePostSubmissionAction, onDone])\n\n const handleCancel = React.useCallback(() => {\n executePostSubmissionAction(onCancel)\n }, [executePostSubmissionAction, onCancel])\n\n const handleTryAgain = React.useCallback(async () => {\n if (!submissionResult || !submissionResult.payment) {\n return\n }\n const paymentSubmissionEvent = submissionResult.payment.submissionEvent\n\n if (isMounted.current) {\n setRetryState({\n isRetrying: true,\n retryError: null,\n })\n }\n\n let newError = null\n try {\n submissionResult.payment = await handlePaymentSubmissionEvent({\n amount: submissionResult.payment.amount,\n formSubmissionResult: submissionResult,\n paymentSubmissionEvent,\n paymentReceiptUrl: `${window.location.origin}${window.location.pathname}`,\n })\n await submissionService.executePostSubmissionAction(\n submissionResult,\n history.push,\n )\n } catch (error) {\n console.warn('Error while attempting to retry transaction', error)\n newError = error as OneBlinkAppsError\n }\n\n if (isMounted.current) {\n setRetryState({\n isRetrying: false,\n retryError: newError,\n })\n }\n }, [history.push, isMounted, submissionResult])\n\n return (\n <div>\n {isLoading && (\n <section>\n <div className=\"cypress-loading has-text-centered\">\n <OnLoading className=\"has-text-centered\"></OnLoading>\n <span>Retrieving transaction details...</span>\n </div>\n </section>\n )}\n\n {transaction && (\n <Receipt\n className=\"ob-payment-receipt\"\n containerClassName=\"ob-payment-receipt__container\"\n >\n <ReceiptList\n successIconClassName=\"ob-payment-receipt__success-icon\"\n warningIconClassName=\"ob-payment-receipt__warning-icon\"\n warningMessageClassName=\"ob-payment-receipt__warning-message cypress-payment-receipt-warning-message\"\n warningMessage={\n transaction.isSuccess\n ? undefined\n : transaction.errorMessage || undefined\n }\n >\n {submissionResult && submissionResult.submissionId && (\n <ReceiptListItem\n className=\"ob-payment-receipt__submission-id\"\n valueClassName=\"cypress-payment-receipt-submission-id\"\n icon=\"receipt\"\n label=\"Submission Id\"\n value={submissionResult.submissionId}\n allowCopyToClipboard\n />\n )}\n\n {!!transaction.id && (\n <ReceiptListItem\n className=\"ob-payment-receipt__transaction-id\"\n valueClassName=\"cypress-payment-receipt-transaction-id\"\n icon=\"shopping_cart\"\n label=\"Transaction Id\"\n value={transaction.id}\n allowCopyToClipboard\n />\n )}\n\n {!!transaction.creditCardMask && (\n <ReceiptListItem\n className=\"ob-payment-receipt__card-number\"\n valueClassName=\"cypress-payment-receipt-card-number\"\n icon=\"credit_card\"\n label=\"Card Number\"\n value={transaction.creditCardMask}\n />\n )}\n\n {!!transaction.amount && (\n <ReceiptListItem\n className=\"ob-payment-receipt__amount\"\n valueClassName=\"cypress-payment-receipt-amount\"\n icon=\"attach_money\"\n label=\"Amount\"\n value={localisationService.formatCurrency(transaction.amount)}\n />\n )}\n <ReceiptListItem\n className=\"ob-payment-receipt__warning\"\n valueClassName=\"cypress-payment-receipt-warning\"\n label=\"Warning\"\n value=\"Please do not click back in your browser, doing so will cause issues with your payment.\"\n />\n </ReceiptList>\n\n <div className=\"buttons\">\n {transaction.isSuccess ? (\n <ReceiptButton\n className=\"is-primary ob-payment-receipt__button ob-payment-receipt__okay-button cypress-payment-receipt-okay-button\"\n label=\"Done\"\n isLoading={isRunningPostSubmissionAction}\n onClick={handleDone}\n />\n ) : (\n <>\n <ReceiptButton\n className=\"ob-payment-receipt__button ob-payment-receipt__cancel-button cypress-payment-receipt-cancel-button\"\n label=\"Cancel\"\n isDisabled={isRetrying}\n isLoading={isRunningPostSubmissionAction}\n onClick={handleCancel}\n />\n <ReceiptButton\n className=\"is-primary ob-payment-receipt__button ob-payment-receipt__try-again-button cypress-payment-receipt-try-again-button\"\n label=\"Try Again\"\n isDisabled={isRunningPostSubmissionAction}\n isLoading={isRetrying}\n onClick={handleTryAgain}\n />\n </>\n )}\n </div>\n </Receipt>\n )}\n\n {loadError && (\n <section className=\"cypress-payment-receipt-loading-error-message\">\n <div className=\"ob-payment-receipt__error-icon-container has-text-centered has-margin-bottom-8\">\n <i className=\"ob-payment-receipt__error-icon material-icons has-text-danger icon-x-large\">\n error\n </i>\n </div>\n <p className=\"ob-payment-receipt__error-message has-text-centered has-margin-bottom-4\">\n {loadError.message}\n </p>\n </section>\n )}\n\n {retryError && (\n <Modal\n isOpen\n title={retryError.title || 'Whoops...'}\n bodyClassName=\"cypress-payment-receipt-retry-error-message\"\n actions={\n <button\n type=\"button\"\n className=\"button ob-button is-primary cypress-payment-receipt-retry-error-okay-button\"\n onClick={clearRetryError}\n >\n Okay\n </button>\n }\n >\n {retryError.message}\n </Modal>\n )}\n\n {postSubmissionError && (\n <Modal\n isOpen\n title={postSubmissionError.title || 'Whoops...'}\n bodyClassName=\"cypress-payment-receipt-retry-error-message\"\n actions={\n <button\n type=\"button\"\n className=\"button ob-button is-primary cypress-payment-receipt-retry-error-okay-button\"\n onClick={clearPostSubmissionError}\n >\n Okay\n </button>\n }\n >\n {postSubmissionError.message}\n </Modal>\n )}\n </div>\n )\n}\n\n/**\n * Component for rendering a OneBlink Form Payment Receipt. This component will\n * payment receipt but it is up to the developer to implement what happens when\n * the user clicks 'Done'.\n *\n * It is also recommended to import the `css` from this library as well.\n *\n * ```js\n * import { PaymentReceipt } from '@oneblink/apps-react'\n * import '@oneblink/apps-react/dist/styles.css'\n * ```\n *\n * #### Example\n *\n * ```tsx\n * import React from 'react'\n * import ReactDOM from 'react-dom'\n * import { PaymentReceipt } from '@oneblink/apps-react'\n * import '@oneblink/apps-react/dist/styles.css'\n *\n * function ReceiptContainer() {\n * const handleDone = React.useCallback(async () => {\n * console.log('All done!')\n * }, [])\n * const handleCancel = React.useCallback(async () => {\n * console.log('Cancelled!')\n * }, [])\n *\n * return <PaymentReceipt onDone={handleDone} onCancel={handleCancel} />\n * }\n *\n * function App() {\n * return (\n * <IsOfflineContextProvider>\n * <ReceiptContainer />\n * </IsOfflineContextProvider>\n * )\n * }\n *\n * const root = document.getElementById('root')\n * if (root) {\n * ReactDOM.render(<App />, root)\n * }\n * ```\n *\n * @param props\n * @returns\n * @group Components\n */\nexport default React.memo(PaymentReceipt)\n"]}
|
@@ -13,6 +13,13 @@ import LoadingWithMessage from '../LoadingWithMessage';
|
|
13
13
|
import NoResourcesYet from '../messages/NoResourcesYet';
|
14
14
|
import FormStoreIcon from './display/FormStoreIcon';
|
15
15
|
import { FormStoreTableContext } from './useFormStoreTableContext';
|
16
|
+
const TABLE_PARAMETERS_FORM_STORE_KEY = 'REACT_TABLE_PARAMETERS_FORM_STORE';
|
17
|
+
function getParamsFromLocalStorage() {
|
18
|
+
const text = localStorage.getItem(TABLE_PARAMETERS_FORM_STORE_KEY);
|
19
|
+
if (text) {
|
20
|
+
return JSON.parse(text);
|
21
|
+
}
|
22
|
+
}
|
16
23
|
export function FormStoreTableProvider({ form, children, }) {
|
17
24
|
var _a, _b;
|
18
25
|
const history = useHistory();
|
@@ -23,9 +30,18 @@ export function FormStoreTableProvider({ form, children, }) {
|
|
23
30
|
debounceSearchMs: 1000,
|
24
31
|
onDefaultFilters: React.useCallback((query) => {
|
25
32
|
let defaultParameters = {};
|
33
|
+
const localStorageParams = getParamsFromLocalStorage();
|
34
|
+
if (localStorageParams &&
|
35
|
+
Object(localStorageParams) === localStorageParams) {
|
36
|
+
defaultParameters = localStorageParams;
|
37
|
+
}
|
26
38
|
try {
|
27
39
|
if (typeof query.parameters === 'string') {
|
28
|
-
|
40
|
+
//allow qs params to override local storage
|
41
|
+
defaultParameters = {
|
42
|
+
...defaultParameters,
|
43
|
+
...JSON.parse(query.parameters),
|
44
|
+
};
|
29
45
|
}
|
30
46
|
}
|
31
47
|
catch (error) {
|
@@ -73,6 +89,12 @@ export function FormStoreTableProvider({ form, children, }) {
|
|
73
89
|
});
|
74
90
|
}, [history, location.search, parameters]);
|
75
91
|
const submissionIdValidationMessage = useSubmissionIdValidationMessage((_b = (_a = parameters.filters) === null || _a === void 0 ? void 0 : _a.submissionId) === null || _b === void 0 ? void 0 : _b.$eq);
|
92
|
+
React.useEffect(() => {
|
93
|
+
const paramsToStore = {
|
94
|
+
unwindRepeatableSets: parameters === null || parameters === void 0 ? void 0 : parameters.unwindRepeatableSets,
|
95
|
+
};
|
96
|
+
localStorage.setItem(TABLE_PARAMETERS_FORM_STORE_KEY, JSON.stringify(paramsToStore));
|
97
|
+
}, [parameters === null || parameters === void 0 ? void 0 : parameters.unwindRepeatableSets]);
|
76
98
|
const formStoreTable = useFormStoreTable({
|
77
99
|
formStoreRecords,
|
78
100
|
parameters,
|
@@ -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, 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"]}
|
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\nconst TABLE_PARAMETERS_FORM_STORE_KEY = 'REACT_TABLE_PARAMETERS_FORM_STORE'\n\nfunction getParamsFromLocalStorage() {\n const text = localStorage.getItem(TABLE_PARAMETERS_FORM_STORE_KEY)\n if (text) {\n return JSON.parse(text)\n }\n}\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 const localStorageParams = getParamsFromLocalStorage()\n if (\n localStorageParams &&\n Object(localStorageParams) === localStorageParams\n ) {\n defaultParameters = localStorageParams\n }\n try {\n if (typeof query.parameters === 'string') {\n //allow qs params to override local storage\n defaultParameters = {\n ...defaultParameters,\n ...JSON.parse(query.parameters),\n }\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 React.useEffect(() => {\n const paramsToStore = {\n unwindRepeatableSets: parameters?.unwindRepeatableSets,\n }\n localStorage.setItem(\n TABLE_PARAMETERS_FORM_STORE_KEY,\n JSON.stringify(paramsToStore),\n )\n }, [parameters?.unwindRepeatableSets])\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,5 +1,10 @@
|
|
1
1
|
import * as React from 'react';
|
2
2
|
import { Button } from '@mui/material';
|
3
3
|
declare function OneBlinkFormStoreClearFiltersButton(props: React.ComponentProps<typeof Button>): JSX.Element;
|
4
|
+
/**
|
5
|
+
* @param props
|
6
|
+
* @returns
|
7
|
+
* @group Components
|
8
|
+
*/
|
4
9
|
declare const _default: React.MemoExoticComponent<typeof OneBlinkFormStoreClearFiltersButton>;
|
5
10
|
export default _default;
|
@@ -16,5 +16,10 @@ function OneBlinkFormStoreClearFiltersButton(props) {
|
|
16
16
|
// eslint-disable-next-line react/no-children-prop
|
17
17
|
children: React.createElement(React.Fragment, null, "Clear Filters"), ...props }));
|
18
18
|
}
|
19
|
+
/**
|
20
|
+
* @param props
|
21
|
+
* @returns
|
22
|
+
* @group Components
|
23
|
+
*/
|
19
24
|
export default React.memo(OneBlinkFormStoreClearFiltersButton);
|
20
25
|
//# sourceMappingURL=OneBlinkFormStoreClearFiltersButton.js.map
|
@@ -1 +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,kBAAkB,EAAE,UAAU,EAAE,GAAG,wBAAwB,EAAE,CAAA;IACrE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACpC,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,CAAA;IACvE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;IACxB,OAAO,CACL,oBAAC,MAAM,IACL,SAAS,EAAC,oCAAoC,EAC9C,SAAS,EAAE,oBAAC,UAAU,OAAG,EACzB,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,GAAG,EAAE;YACZ,kBAAkB,CAChB,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;gBACtB,GAAG,iBAAiB;gBACpB,OAAO,EAAE,SAAS;aACnB,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 { onChangeParameters, parameters } = useFormStoreTableContext()\n const isDisabled = React.useMemo(() => {\n return !parameters.filters || !Object.keys(parameters.filters).length\n }, [parameters.filters])\n return (\n <Button\n className=\"ob-form-store-clear-filters-button\"\n startIcon={<FilterIcon />}\n disabled={isDisabled}\n onClick={() => {\n onChangeParameters(\n (currentParameters) => ({\n ...currentParameters,\n filters: undefined,\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"]}
|
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,kBAAkB,EAAE,UAAU,EAAE,GAAG,wBAAwB,EAAE,CAAA;IACrE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACpC,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,CAAA;IACvE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;IACxB,OAAO,CACL,oBAAC,MAAM,IACL,SAAS,EAAC,oCAAoC,EAC9C,SAAS,EAAE,oBAAC,UAAU,OAAG,EACzB,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,GAAG,EAAE;YACZ,kBAAkB,CAChB,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;gBACtB,GAAG,iBAAiB;gBACpB,OAAO,EAAE,SAAS;aACnB,CAAC,EACF,KAAK,CACN,CAAA;QACH,CAAC;QACD,kDAAkD;QAClD,QAAQ,EAAE,0DAAkB,KACxB,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,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 { onChangeParameters, parameters } = useFormStoreTableContext()\n const isDisabled = React.useMemo(() => {\n return !parameters.filters || !Object.keys(parameters.filters).length\n }, [parameters.filters])\n return (\n <Button\n className=\"ob-form-store-clear-filters-button\"\n startIcon={<FilterIcon />}\n disabled={isDisabled}\n onClick={() => {\n onChangeParameters(\n (currentParameters) => ({\n ...currentParameters,\n filters: undefined,\n }),\n false,\n )\n }}\n // eslint-disable-next-line react/no-children-prop\n children={<>Clear Filters</>}\n {...props}\n />\n )\n}\n\n/**\n * @param props\n * @returns\n * @group Components\n */\nexport default React.memo(OneBlinkFormStoreClearFiltersButton)\n"]}
|
@@ -1,5 +1,10 @@
|
|
1
1
|
import * as React from 'react';
|
2
2
|
import { Button } from '@mui/material';
|
3
3
|
declare function OneBlinkFormStoreColumnsButton(props: React.ComponentProps<typeof Button>): JSX.Element;
|
4
|
+
/**
|
5
|
+
* @param props
|
6
|
+
* @returns
|
7
|
+
* @group Components
|
8
|
+
*/
|
4
9
|
declare const _default: React.MemoExoticComponent<typeof OneBlinkFormStoreColumnsButton>;
|
5
10
|
export default _default;
|
@@ -63,5 +63,10 @@ function OneBlinkFormStoreColumnsButton(props) {
|
|
63
63
|
React.createElement(DialogActions, null,
|
64
64
|
React.createElement(Button, { onClick: hideColumnConfiguration, color: "primary", variant: "contained" }, "Done")))));
|
65
65
|
}
|
66
|
+
/**
|
67
|
+
* @param props
|
68
|
+
* @returns
|
69
|
+
* @group Components
|
70
|
+
*/
|
66
71
|
export default React.memo(OneBlinkFormStoreColumnsButton);
|
67
72
|
//# sourceMappingURL=OneBlinkFormStoreColumnsButton.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"OneBlinkFormStoreColumnsButton.js","sourceRoot":"","sources":["../../../src/components/formStore/OneBlinkFormStoreColumnsButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EACL,KAAK,EACL,UAAU,EACV,GAAG,EACH,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,aAAa,EACb,aAAa,EACb,WAAW,EACX,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,IAAI,EACJ,UAAU,EACV,UAAU,GACX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,IAAI,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,eAAe,MAAM,6BAA6B,CAAA;AACzD,OAAO,wBAAwB,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAElD,SAAS,8BAA8B,CACrC,KAA0C;IAE1C,MAAM,EACJ,4BAA4B,EAC5B,UAAU,EACV,UAAU,EACV,kBAAkB,GACnB,GAAG,wBAAwB,EAAE,CAAA;IAC9B,MAAM,CACJ,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACxB,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IAC1B,MAAM,CAAC,UAAU,EAAE,AAAD,EAAG,AAAD,EAAG,UAAU,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IAE3D,MAAM,yBAAyB,GAAG,4BAA4B,EAAE,CAAA;IAEhE,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CACrC,GAAG,EAAE,CACH,UAAU,CAAC,oBAAoB;QAC/B,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,eAAe,CAAC,EAC/D,CAAC,UAAU,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAC9C,CAAA;IAED,OAAO,CACL;QACE,oBAAC,MAAM,IACL,SAAS,EAAC,8BAA8B,EACxC,SAAS,EAAE,oBAAC,YAAY,OAAG,EAC3B,OAAO,EAAE,uBAAuB;YAChC,kDAAkD;YAClD,QAAQ,EAAE,oDAAY,KAClB,KAAK,GACT;QACF,oBAAC,MAAM,IACL,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAC,IAAI,EACb,SAAS,QACT,OAAO,EAAE,uBAAuB;YAEhC,oBAAC,WAAW,+BAAmC;YAC/C,oBAAC,aAAa,IAAC,QAAQ;gBACpB,iBAAiB,IAAI,CACpB;oBACE,oBAAC,IAAI,IAAC,SAAS;wBACb,oBAAC,IAAI,IAAC,IAAI;4BACR,oBAAC,SAAS;gCACR,oBAAC,gBAAgB,IACf,OAAO,EACL,oBAAC,QAAQ,IAAC,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,oBAAoB,GAAI,EAE1D,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;wCACvB,kBAAkB,CAChB,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;4CACtB,GAAG,iBAAiB;4CACpB,OAAO,EAAE,OAAO;gDACd,CAAC,CAAC,iBAAiB,CAAC,OAAO;gDAC3B,CAAC,CAAC;oDACE;wDACE,QAAQ,EAAE,mBAAmB;wDAC7B,SAAS,EAAE,YAAY;qDACxB;iDACF;4CACL,oBAAoB,EAAE,OAAO;yCAC9B,CAAC,EACF,KAAK,CACN,CAAA;oCACH,CAAC,EACD,KAAK,EAAC,uCAAuC,GAC7C,CACQ,CACP;wBACP,oBAAC,IAAI,IAAC,IAAI;4BACR,oBAAC,UAAU,IAAC,OAAO,EAAE,UAAU;gCAC7B,oBAAC,IAAI,OAAG,CACG,CACR,CACF;oBACP,oBAAC,QAAQ,IAAC,EAAE,EAAE,UAAU;wBACtB,oBAAC,KAAK,IAAC,QAAQ,EAAC,MAAM;4BACpB,oBAAC,UAAU,wCAA2C;4BACtD,oBAAC,aAAa;gCACZ,oBAAC,QAAQ,sFAGE;gCACX,oBAAC,QAAQ,2EAGE;gCACX,oBAAC,QAAQ,qFAGE,CACG,CACV,CACC;oBACX,oBAAC,GAAG,IAAC,OAAO,EAAE,CAAC;wBACb,oBAAC,OAAO,OAAG,CACP,CACL,CACJ;gBACD,oBAAC,SAAS;oBACR,oBAAC,gBAAgB,IACf,OAAO,EACL,oBAAC,QAAQ,OACH,yBAAyB,EAC7B,aAAa,EAAE,CAAC,CAAC,yBAAyB,CAAC,aAAa,GACxD,EAEJ,KAAK,EAAE,4CAAiB,GACxB;oBACD,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;wBACzB,OAAO,CACL,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,MAAM,CAAC,EAAE;4BAC5B,oBAAC,gBAAgB,IACf,OAAO,EAAE,oBAAC,QAAQ,OAAK,MAAM,CAAC,oBAAoB,EAAE,GAAI,EACxD,KAAK,EACH;oCACG,MAAM,CAAC,UAAU;oCACjB,MAAM,CAAC,OAAO,IAAI,CACjB,oBAAC,UAAU,IAAC,SAAS,EAAC,MAAM,EAAC,KAAK,EAAC,eAAe;wCAC/C,GAAG;;wCACF,MAAM,CAAC,OAAO;4CACL,CACd,CACA,GAEL,CACa,CAClB,CAAA;oBACH,CAAC,CAAC,CACQ,CACE;YAChB,oBAAC,aAAa;gBACZ,oBAAC,MAAM,IACL,OAAO,EAAE,uBAAuB,EAChC,KAAK,EAAC,SAAS,EACf,OAAO,EAAC,WAAW,WAGZ,CACK,CACT,CACR,CACJ,CAAA;AACH,CAAC;AAED,eAAe,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport {\n Alert,\n AlertTitle,\n Box,\n Button,\n Checkbox,\n Collapse,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n FormControlLabel,\n FormGroup,\n Grid,\n IconButton,\n Typography,\n} from '@mui/material'\nimport { Help, Settings as SettingsIcon } from '@mui/icons-material'\nimport useBooleanState from '../../hooks/useBooleanState'\nimport useFormStoreTableContext from './useFormStoreTableContext'\nimport { ListItem, UnorderedList } from '../Lists'\n\nfunction OneBlinkFormStoreColumnsButton(\n props: React.ComponentProps<typeof Button>,\n) {\n const {\n getToggleHideAllColumnsProps,\n allColumns,\n parameters,\n onChangeParameters,\n } = useFormStoreTableContext()\n const [\n isConfiguringColumns,\n showColumnConfiguration,\n hideColumnConfiguration,\n ] = useBooleanState(false)\n const [isHelpOpen, , , toggleHelp] = useBooleanState(false)\n\n const toggleHideAllColumnsProps = getToggleHideAllColumnsProps()\n\n const hasRepeatableSets = React.useMemo(\n () =>\n parameters.unwindRepeatableSets ||\n allColumns.some((c) => c.formElementType === 'repeatableSet'),\n [allColumns, parameters.unwindRepeatableSets],\n )\n\n return (\n <>\n <Button\n className=\"ob-form-store-columns-button\"\n startIcon={<SettingsIcon />}\n onClick={showColumnConfiguration}\n // eslint-disable-next-line react/no-children-prop\n children={<>Columns</>}\n {...props}\n />\n <Dialog\n open={isConfiguringColumns}\n maxWidth=\"sm\"\n fullWidth\n onClose={hideColumnConfiguration}\n >\n <DialogTitle>Column Configuration</DialogTitle>\n <DialogContent dividers>\n {hasRepeatableSets && (\n <>\n <Grid container>\n <Grid item>\n <FormGroup>\n <FormControlLabel\n control={\n <Checkbox checked={!!parameters.unwindRepeatableSets} />\n }\n onChange={(e, checked) => {\n onChangeParameters(\n (currentParameters) => ({\n ...currentParameters,\n sorting: checked\n ? currentParameters.sorting\n : [\n {\n property: 'dateTimeSubmitted',\n direction: 'descending',\n },\n ],\n unwindRepeatableSets: checked,\n }),\n false,\n )\n }}\n label=\"Output a row per repeatable set entry\"\n />\n </FormGroup>\n </Grid>\n <Grid item>\n <IconButton onClick={toggleHelp}>\n <Help />\n </IconButton>\n </Grid>\n </Grid>\n <Collapse in={isHelpOpen}>\n <Alert severity=\"info\">\n <AlertTitle>When this setting is enabled:</AlertTitle>\n <UnorderedList>\n <ListItem>\n Repeatable set columns will be expanded and create\n duplicate rows per entry\n </ListItem>\n <ListItem>\n Columns inside repeatable set entries can be sorted and\n filtered\n </ListItem>\n <ListItem>\n Columns inside repeatable set entries will be included in\n the CSV download\n </ListItem>\n </UnorderedList>\n </Alert>\n </Collapse>\n <Box marginY={2}>\n <Divider />\n </Box>\n </>\n )}\n <FormGroup>\n <FormControlLabel\n control={\n <Checkbox\n {...toggleHideAllColumnsProps}\n indeterminate={!!toggleHideAllColumnsProps.indeterminate}\n />\n }\n label={<b>Toggle All</b>}\n />\n {allColumns.map((column) => {\n return (\n <React.Fragment key={column.id}>\n <FormControlLabel\n control={<Checkbox {...column.getToggleHiddenProps()} />}\n label={\n <>\n {column.headerText}\n {column.tooltip && (\n <Typography component=\"span\" color=\"textSecondary\">\n {' '}\n ({column.tooltip})\n </Typography>\n )}\n </>\n }\n />\n </React.Fragment>\n )\n })}\n </FormGroup>\n </DialogContent>\n <DialogActions>\n <Button\n onClick={hideColumnConfiguration}\n color=\"primary\"\n variant=\"contained\"\n >\n Done\n </Button>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n\nexport default React.memo(OneBlinkFormStoreColumnsButton)\n"]}
|
1
|
+
{"version":3,"file":"OneBlinkFormStoreColumnsButton.js","sourceRoot":"","sources":["../../../src/components/formStore/OneBlinkFormStoreColumnsButton.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport {\n Alert,\n AlertTitle,\n Box,\n Button,\n Checkbox,\n Collapse,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n FormControlLabel,\n FormGroup,\n Grid,\n IconButton,\n Typography,\n} from '@mui/material'\nimport { Help, Settings as SettingsIcon } from '@mui/icons-material'\nimport useBooleanState from '../../hooks/useBooleanState'\nimport useFormStoreTableContext from './useFormStoreTableContext'\nimport { ListItem, UnorderedList } from '../Lists'\n\nfunction OneBlinkFormStoreColumnsButton(\n props: React.ComponentProps<typeof Button>,\n) {\n const {\n getToggleHideAllColumnsProps,\n allColumns,\n parameters,\n onChangeParameters,\n } = useFormStoreTableContext()\n const [\n isConfiguringColumns,\n showColumnConfiguration,\n hideColumnConfiguration,\n ] = useBooleanState(false)\n const [isHelpOpen, , , toggleHelp] = useBooleanState(false)\n\n const toggleHideAllColumnsProps = getToggleHideAllColumnsProps()\n\n const hasRepeatableSets = React.useMemo(\n () =>\n parameters.unwindRepeatableSets ||\n allColumns.some((c) => c.formElementType === 'repeatableSet'),\n [allColumns, parameters.unwindRepeatableSets],\n )\n\n return (\n <>\n <Button\n className=\"ob-form-store-columns-button\"\n startIcon={<SettingsIcon />}\n onClick={showColumnConfiguration}\n // eslint-disable-next-line react/no-children-prop\n children={<>Columns</>}\n {...props}\n />\n <Dialog\n open={isConfiguringColumns}\n maxWidth=\"sm\"\n fullWidth\n onClose={hideColumnConfiguration}\n >\n <DialogTitle>Column Configuration</DialogTitle>\n <DialogContent dividers>\n {hasRepeatableSets && (\n <>\n <Grid container>\n <Grid item>\n <FormGroup>\n <FormControlLabel\n control={\n <Checkbox checked={!!parameters.unwindRepeatableSets} />\n }\n onChange={(e, checked) => {\n onChangeParameters(\n (currentParameters) => ({\n ...currentParameters,\n sorting: checked\n ? currentParameters.sorting\n : [\n {\n property: 'dateTimeSubmitted',\n direction: 'descending',\n },\n ],\n unwindRepeatableSets: checked,\n }),\n false,\n )\n }}\n label=\"Output a row per repeatable set entry\"\n />\n </FormGroup>\n </Grid>\n <Grid item>\n <IconButton onClick={toggleHelp}>\n <Help />\n </IconButton>\n </Grid>\n </Grid>\n <Collapse in={isHelpOpen}>\n <Alert severity=\"info\">\n <AlertTitle>When this setting is enabled:</AlertTitle>\n <UnorderedList>\n <ListItem>\n Repeatable set columns will be expanded and create\n duplicate rows per entry\n </ListItem>\n <ListItem>\n Columns inside repeatable set entries can be sorted and\n filtered\n </ListItem>\n <ListItem>\n Columns inside repeatable set entries will be included in\n the CSV download\n </ListItem>\n </UnorderedList>\n </Alert>\n </Collapse>\n <Box marginY={2}>\n <Divider />\n </Box>\n </>\n )}\n <FormGroup>\n <FormControlLabel\n control={\n <Checkbox\n {...toggleHideAllColumnsProps}\n indeterminate={!!toggleHideAllColumnsProps.indeterminate}\n />\n }\n label={<b>Toggle All</b>}\n />\n {allColumns.map((column) => {\n return (\n <React.Fragment key={column.id}>\n <FormControlLabel\n control={<Checkbox {...column.getToggleHiddenProps()} />}\n label={\n <>\n {column.headerText}\n {column.tooltip && (\n <Typography component=\"span\" color=\"textSecondary\">\n {' '}\n ({column.tooltip})\n </Typography>\n )}\n </>\n }\n />\n </React.Fragment>\n )\n })}\n </FormGroup>\n </DialogContent>\n <DialogActions>\n <Button\n onClick={hideColumnConfiguration}\n color=\"primary\"\n variant=\"contained\"\n >\n Done\n </Button>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n\n/**\n * @param props\n * @returns\n * @group Components\n */\nexport default React.memo(OneBlinkFormStoreColumnsButton)\n"]}
|
@@ -1,5 +1,10 @@
|
|
1
1
|
import * as React from 'react';
|
2
2
|
import { LoadingButton } from '@mui/lab';
|
3
3
|
declare function OneBlinkFormStoreDownloadButton(props: React.ComponentProps<typeof LoadingButton>): JSX.Element;
|
4
|
+
/**
|
5
|
+
* @param props
|
6
|
+
* @returns
|
7
|
+
* @group Components
|
8
|
+
*/
|
4
9
|
declare const _default: React.MemoExoticComponent<typeof OneBlinkFormStoreDownloadButton>;
|
5
10
|
export default _default;
|
@@ -83,5 +83,10 @@ function OneBlinkFormStoreDownloadButton(props) {
|
|
83
83
|
React.createElement(Button, { onClick: cancelPromptDownloadCsv, variant: "text" }, "Cancel"),
|
84
84
|
React.createElement(Button, { onClick: downloadCsv, startIcon: React.createElement(CsvIcon, null), color: "primary", variant: "contained" }, "Download")))));
|
85
85
|
}
|
86
|
+
/**
|
87
|
+
* @param props
|
88
|
+
* @returns
|
89
|
+
* @group Components
|
90
|
+
*/
|
86
91
|
export default React.memo(OneBlinkFormStoreDownloadButton);
|
87
92
|
//# sourceMappingURL=OneBlinkFormStoreDownloadButton.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"OneBlinkFormStoreDownloadButton.js","sourceRoot":"","sources":["../../../src/components/formStore/OneBlinkFormStoreDownloadButton.tsx"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"OneBlinkFormStoreDownloadButton.js","sourceRoot":"","sources":["../../../src/components/formStore/OneBlinkFormStoreDownloadButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EACL,OAAO,EACP,MAAM,EACN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,MAAM,GACP,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,OAAO,MAAM,8BAA8B,CAAA;AAClD,OAAO,aAAa,MAAM,kBAAkB,CAAA;AAG5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,wBAAwB,MAAM,4BAA4B,CAAA;AAEjE,SAAS,+BAA+B,CACtC,KAAiD;IAEjD,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,wBAAwB,EAAE,CAAA;IACvE,MAAM,CACJ,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,EACjE,QAAQ,EACT,GAAG,KAAK,CAAC,QAAQ,CAIf;QACD,gBAAgB,EAAE,KAAK;QACvB,sBAAsB,EAAE,KAAK;QAC7B,mBAAmB,EAAE,IAAI;KAC1B,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACxC,QAAQ,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAC1B,GAAG,YAAY;YACf,mBAAmB,EAAE,IAAI;SAC1B,CAAC,CAAC,CAAA;IACL,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;QAC/C,QAAQ,CAAC;YACP,sBAAsB,EAAE,KAAK;YAC7B,gBAAgB,EAAE,IAAI;YACtB,mBAAmB,EAAE,IAAI;SAC1B,CAAC,CAAA;QACF,IAAI;YACF,MAAM,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE;gBACvD,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,cAAc,EAAE,cAAc,CAAC,GAAG,CAChC,CAAC,aAA8C,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,CACrE;gBACD,GAAG,UAAU;aACd,CAAC,CAAA;YACF,QAAQ,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;gBAC1B,GAAG,YAAY;gBACf,gBAAgB,EAAE,KAAK;gBACvB,mBAAmB,EAAE,IAAI;aAC1B,CAAC,CAAC,CAAA;SACJ;QAAC,OAAO,KAAK,EAAE;YACd,QAAQ,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;gBAC1B,GAAG,YAAY;gBACf,gBAAgB,EAAE,KAAK;gBACvB,mBAAmB,EAAE,KAAc;aACpC,CAAC,CAAC,CAAA;SACJ;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC,CAAA;IAEtC,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC/C,IACE,CAAC,UAAU,CAAC,oBAAoB;YAChC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,eAAe,CAAC,EACjE;YACA,QAAQ,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;gBAC1B,GAAG,YAAY;gBACf,mBAAmB,EAAE,IAAI;gBACzB,sBAAsB,EAAE,IAAI;aAC7B,CAAC,CAAC,CAAA;YACH,OAAM;SACP;QACD,WAAW,EAAE,CAAA;IACf,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAC,CAAA;IAElE,MAAM,uBAAuB,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACrD,QAAQ,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAC1B,GAAG,YAAY;YACf,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAA;IACL,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,CACL;QACE,oBAAC,OAAO,IAAC,KAAK,EAAC,wCAAwC;YACrD,oBAAC,aAAa,IACZ,SAAS,EAAC,mCAAmC,EAC7C,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,gBAAgB,EACzB,eAAe,EAAC,OAAO,EACvB,SAAS,EAAE,oBAAC,OAAO,OAAG,EACtB,OAAO,EAAE,iBAAiB;gBAC1B,kDAAkD;gBAClD,QAAQ,EAAE,qDAAa,KACnB,KAAK,GACT,CACM;QAEV,oBAAC,aAAa,IAAC,IAAI,EAAE,CAAC,CAAC,mBAAmB,EAAE,OAAO,EAAE,UAAU;YAC7D,8CAAmB,2BAA2B,IAC3C,mBAAmB,IAAI,mBAAmB,CAAC,OAAO,CAC9C,CACO;QAEhB,oBAAC,MAAM,IACL,IAAI,EAAE,sBAAsB,EAC5B,QAAQ,EAAC,IAAI,EACb,SAAS,QACT,OAAO,EAAE,uBAAuB;YAEhC,oBAAC,WAAW,+BAAmC;YAC/C,oBAAC,aAAa;gBACZ,oBAAC,iBAAiB;;oBACqD,GAAG;oBACxE,uEAA4C;;oBACtC,sDAA2B;wBACf,CACN;YAChB,oBAAC,aAAa;gBACZ,oBAAC,MAAM,IAAC,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAC,MAAM,aAE/C;gBACT,oBAAC,MAAM,IACL,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,oBAAC,OAAO,OAAG,EACtB,KAAK,EAAC,SAAS,EACf,OAAO,EAAC,WAAW,eAGZ,CACK,CACT,CACR,CACJ,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,eAAe,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport {\n Tooltip,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogContentText,\n DialogActions,\n Button,\n} from '@mui/material'\nimport { LoadingButton } from '@mui/lab'\nimport CsvIcon from '@mui/icons-material/Download'\nimport ErrorSnackbar from '../ErrorSnackbar'\nimport { ColumnInstance } from 'react-table'\nimport { FormStoreRecord } from '@oneblink/types/typescript/submissions'\nimport { formStoreService } from '@oneblink/apps'\nimport useFormStoreTableContext from './useFormStoreTableContext'\n\nfunction OneBlinkFormStoreDownloadButton(\n props: React.ComponentProps<typeof LoadingButton>,\n) {\n const { visibleColumns, parameters, form } = useFormStoreTableContext()\n const [\n { isDownloadingCsv, isPromptingDownloadCsv, downloadingCsvError },\n setState,\n ] = React.useState<{\n isDownloadingCsv: boolean\n isPromptingDownloadCsv: boolean\n downloadingCsvError: Error | null\n }>({\n isDownloadingCsv: false,\n isPromptingDownloadCsv: false,\n downloadingCsvError: null,\n })\n\n const clearError = React.useCallback(() => {\n setState((currentState) => ({\n ...currentState,\n downloadingCsvError: null,\n }))\n }, [])\n\n const downloadCsv = React.useCallback(async () => {\n setState({\n isPromptingDownloadCsv: false,\n isDownloadingCsv: true,\n downloadingCsvError: null,\n })\n try {\n await formStoreService.exportFormStoreRecords(form.name, {\n formId: form.id,\n includeColumns: visibleColumns.map(\n (visibleColumn: ColumnInstance<FormStoreRecord>) => visibleColumn.id,\n ),\n ...parameters,\n })\n setState((currentState) => ({\n ...currentState,\n isDownloadingCsv: false,\n downloadingCsvError: null,\n }))\n } catch (error) {\n setState((currentState) => ({\n ...currentState,\n isDownloadingCsv: false,\n downloadingCsvError: error as Error,\n }))\n }\n }, [form, parameters, visibleColumns])\n\n const promptDownloadCsv = React.useCallback(() => {\n if (\n !parameters.unwindRepeatableSets &&\n visibleColumns.some((c) => c.formElementType === 'repeatableSet')\n ) {\n setState((currentState) => ({\n ...currentState,\n downloadingCsvError: null,\n isPromptingDownloadCsv: true,\n }))\n return\n }\n downloadCsv()\n }, [downloadCsv, parameters.unwindRepeatableSets, visibleColumns])\n\n const cancelPromptDownloadCsv = React.useCallback(() => {\n setState((currentState) => ({\n ...currentState,\n isPromptingDownloadCsv: false,\n }))\n }, [])\n\n return (\n <>\n <Tooltip title=\"Download submission data as a CSV file\">\n <LoadingButton\n className=\"ob-form-store-download-csv-button\"\n type=\"button\"\n loading={isDownloadingCsv}\n loadingPosition=\"start\"\n startIcon={<CsvIcon />}\n onClick={promptDownloadCsv}\n // eslint-disable-next-line react/no-children-prop\n children={<>Download</>}\n {...props}\n />\n </Tooltip>\n\n <ErrorSnackbar open={!!downloadingCsvError} onClose={clearError}>\n <span data-cypress=\"edit-dialog-error-message\">\n {downloadingCsvError && downloadingCsvError.message}\n </span>\n </ErrorSnackbar>\n\n <Dialog\n open={isPromptingDownloadCsv}\n maxWidth=\"sm\"\n fullWidth\n onClose={cancelPromptDownloadCsv}\n >\n <DialogTitle>Column Configuration</DialogTitle>\n <DialogContent>\n <DialogContentText>\n Repeatable set columns will not be included in the export unless the{' '}\n <b>Output a row per repeatable set entry</b> option is turned on\n under <b>Column Configuration</b>.\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button onClick={cancelPromptDownloadCsv} variant=\"text\">\n Cancel\n </Button>\n <Button\n onClick={downloadCsv}\n startIcon={<CsvIcon />}\n color=\"primary\"\n variant=\"contained\"\n >\n Download\n </Button>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n\n/**\n * @param props\n * @returns\n * @group Components\n */\nexport default React.memo(OneBlinkFormStoreDownloadButton)\n"]}
|
@@ -2,6 +2,11 @@ import * as React from 'react';
|
|
2
2
|
import { FormTypes } from '@oneblink/types';
|
3
3
|
export type FormStoreElementsContextValue = FormTypes.FormElementWithName[];
|
4
4
|
export declare const FormStoreElementsContext: React.Context<FormStoreElementsContextValue>;
|
5
|
+
/**
|
6
|
+
* @param props
|
7
|
+
* @returns
|
8
|
+
* @group Components
|
9
|
+
*/
|
5
10
|
export declare function OneBlinkFormStoreProvider({ form, children, }: {
|
6
11
|
form: FormTypes.Form;
|
7
12
|
children: React.ReactNode;
|
@@ -5,6 +5,11 @@ import { formStoreService } from '@oneblink/apps';
|
|
5
5
|
import useLoadDataState from '../../hooks/useLoadDataState';
|
6
6
|
import { FormStoreTableProvider } from './FormStoreTableProvider';
|
7
7
|
export const FormStoreElementsContext = React.createContext([]);
|
8
|
+
/**
|
9
|
+
* @param props
|
10
|
+
* @returns
|
11
|
+
* @group Components
|
12
|
+
*/
|
8
13
|
export function OneBlinkFormStoreProvider({ form, children, }) {
|
9
14
|
const fetchFormStoreDefinition = React.useCallback((abortSignal) => {
|
10
15
|
return formStoreService.getFormStoreDefinition(form.id, abortSignal);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"OneBlinkFormStoreProvider.js","sourceRoot":"","sources":["../../../src/components/formStore/OneBlinkFormStoreProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,kBAAkB,MAAM,uBAAuB,CAAA;AACtD,OAAO,YAAY,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,gBAAgB,MAAM,8BAA8B,CAAA;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAIjE,MAAM,CAAC,MAAM,wBAAwB,GACnC,KAAK,CAAC,aAAa,CAAgC,EAAE,CAAC,CAAA;AAExD,MAAM,UAAU,yBAAyB,CAAC,EACxC,IAAI,EACJ,QAAQ,GAIT;IACC,MAAM,wBAAwB,GAAG,KAAK,CAAC,WAAW,CAChD,CAAC,WAAyB,EAAE,EAAE;QAC5B,OAAO,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;IACtE,CAAC,EACD,CAAC,IAAI,CAAC,EAAE,CAAC,CACV,CAAA;IACD,MAAM,CAAC,wBAAwB,EAAE,UAAU,CAAC,GAAG,gBAAgB,CAC7D,wBAAwB,CACzB,CAAA;IAED,IAAI,wBAAwB,CAAC,MAAM,KAAK,SAAS,EAAE;QACjD,OAAO,oBAAC,kBAAkB,OAAG,CAAA;KAC9B;IAED,IAAI,wBAAwB,CAAC,MAAM,KAAK,OAAO,EAAE;QAC/C,OAAO,CACL;YACE,oBAAC,YAAY,IACX,KAAK,EAAC,kCAAkC,EACxC,SAAS,QACT,UAAU,EAAE,UAAU,IAErB,wBAAwB,CAAC,KAAK,CAAC,OAAO,CAC1B,CACd,CACJ,CAAA;KACF;IAED,OAAO,CACL,oBAAC,wBAAwB,CAAC,QAAQ,IAChC,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,YAAY;QAEnD,oBAAC,sBAAsB,IAAC,IAAI,EAAE,IAAI,IAAG,QAAQ,CAA0B,CACrC,CACrC,CAAA;AACH,CAAC","sourcesContent":["import * as React from 'react'\nimport LoadingWithMessage from '../LoadingWithMessage'\nimport ErrorMessage from '../messages/ErrorMessage'\nimport { formStoreService } from '@oneblink/apps'\nimport useLoadDataState from '../../hooks/useLoadDataState'\nimport { FormTypes } from '@oneblink/types'\nimport { FormStoreTableProvider } from './FormStoreTableProvider'\n\nexport type FormStoreElementsContextValue = FormTypes.FormElementWithName[]\n\nexport const FormStoreElementsContext =\n React.createContext<FormStoreElementsContextValue>([])\n\nexport function OneBlinkFormStoreProvider({\n form,\n children,\n}: {\n form: FormTypes.Form\n children: React.ReactNode\n}) {\n const fetchFormStoreDefinition = React.useCallback(\n (abortSignal?: AbortSignal) => {\n return formStoreService.getFormStoreDefinition(form.id, abortSignal)\n },\n [form.id],\n )\n const [formStoreDefinitionState, onTryAgain] = useLoadDataState(\n fetchFormStoreDefinition,\n )\n\n if (formStoreDefinitionState.status === 'LOADING') {\n return <LoadingWithMessage />\n }\n\n if (formStoreDefinitionState.status === 'ERROR') {\n return (\n <>\n <ErrorMessage\n title=\"Error Retrieving Form Definition\"\n gutterTop\n onTryAgain={onTryAgain}\n >\n {formStoreDefinitionState.error.message}\n </ErrorMessage>\n </>\n )\n }\n\n return (\n <FormStoreElementsContext.Provider\n value={formStoreDefinitionState.result.formElements}\n >\n <FormStoreTableProvider form={form}>{children}</FormStoreTableProvider>\n </FormStoreElementsContext.Provider>\n )\n}\n"]}
|
1
|
+
{"version":3,"file":"OneBlinkFormStoreProvider.js","sourceRoot":"","sources":["../../../src/components/formStore/OneBlinkFormStoreProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,kBAAkB,MAAM,uBAAuB,CAAA;AACtD,OAAO,YAAY,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,gBAAgB,MAAM,8BAA8B,CAAA;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAIjE,MAAM,CAAC,MAAM,wBAAwB,GACnC,KAAK,CAAC,aAAa,CAAgC,EAAE,CAAC,CAAA;AAExD;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,EACxC,IAAI,EACJ,QAAQ,GAIT;IACC,MAAM,wBAAwB,GAAG,KAAK,CAAC,WAAW,CAChD,CAAC,WAAyB,EAAE,EAAE;QAC5B,OAAO,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;IACtE,CAAC,EACD,CAAC,IAAI,CAAC,EAAE,CAAC,CACV,CAAA;IACD,MAAM,CAAC,wBAAwB,EAAE,UAAU,CAAC,GAAG,gBAAgB,CAC7D,wBAAwB,CACzB,CAAA;IAED,IAAI,wBAAwB,CAAC,MAAM,KAAK,SAAS,EAAE;QACjD,OAAO,oBAAC,kBAAkB,OAAG,CAAA;KAC9B;IAED,IAAI,wBAAwB,CAAC,MAAM,KAAK,OAAO,EAAE;QAC/C,OAAO,CACL;YACE,oBAAC,YAAY,IACX,KAAK,EAAC,kCAAkC,EACxC,SAAS,QACT,UAAU,EAAE,UAAU,IAErB,wBAAwB,CAAC,KAAK,CAAC,OAAO,CAC1B,CACd,CACJ,CAAA;KACF;IAED,OAAO,CACL,oBAAC,wBAAwB,CAAC,QAAQ,IAChC,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,YAAY;QAEnD,oBAAC,sBAAsB,IAAC,IAAI,EAAE,IAAI,IAAG,QAAQ,CAA0B,CACrC,CACrC,CAAA;AACH,CAAC","sourcesContent":["import * as React from 'react'\nimport LoadingWithMessage from '../LoadingWithMessage'\nimport ErrorMessage from '../messages/ErrorMessage'\nimport { formStoreService } from '@oneblink/apps'\nimport useLoadDataState from '../../hooks/useLoadDataState'\nimport { FormTypes } from '@oneblink/types'\nimport { FormStoreTableProvider } from './FormStoreTableProvider'\n\nexport type FormStoreElementsContextValue = FormTypes.FormElementWithName[]\n\nexport const FormStoreElementsContext =\n React.createContext<FormStoreElementsContextValue>([])\n\n/**\n * @param props\n * @returns\n * @group Components\n */\nexport function OneBlinkFormStoreProvider({\n form,\n children,\n}: {\n form: FormTypes.Form\n children: React.ReactNode\n}) {\n const fetchFormStoreDefinition = React.useCallback(\n (abortSignal?: AbortSignal) => {\n return formStoreService.getFormStoreDefinition(form.id, abortSignal)\n },\n [form.id],\n )\n const [formStoreDefinitionState, onTryAgain] = useLoadDataState(\n fetchFormStoreDefinition,\n )\n\n if (formStoreDefinitionState.status === 'LOADING') {\n return <LoadingWithMessage />\n }\n\n if (formStoreDefinitionState.status === 'ERROR') {\n return (\n <>\n <ErrorMessage\n title=\"Error Retrieving Form Definition\"\n gutterTop\n onTryAgain={onTryAgain}\n >\n {formStoreDefinitionState.error.message}\n </ErrorMessage>\n </>\n )\n }\n\n return (\n <FormStoreElementsContext.Provider\n value={formStoreDefinitionState.result.formElements}\n >\n <FormStoreTableProvider form={form}>{children}</FormStoreTableProvider>\n </FormStoreElementsContext.Provider>\n )\n}\n"]}
|
@@ -1,5 +1,10 @@
|
|
1
1
|
import * as React from 'react';
|
2
2
|
import { Button } from '@mui/material';
|
3
3
|
declare function OneBlinkFormStoreRefreshButton(props: React.ComponentProps<typeof Button>): JSX.Element;
|
4
|
+
/**
|
5
|
+
* @param props
|
6
|
+
* @returns
|
7
|
+
* @group Components
|
8
|
+
*/
|
4
9
|
declare const _default: React.MemoExoticComponent<typeof OneBlinkFormStoreRefreshButton>;
|
5
10
|
export default _default;
|
@@ -8,5 +8,10 @@ function OneBlinkFormStoreRefreshButton(props) {
|
|
8
8
|
// eslint-disable-next-line react/no-children-prop
|
9
9
|
children: React.createElement(React.Fragment, null, "Refresh"), ...props }));
|
10
10
|
}
|
11
|
+
/**
|
12
|
+
* @param props
|
13
|
+
* @returns
|
14
|
+
* @group Components
|
15
|
+
*/
|
11
16
|
export default React.memo(OneBlinkFormStoreRefreshButton);
|
12
17
|
//# sourceMappingURL=OneBlinkFormStoreRefreshButton.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"OneBlinkFormStoreRefreshButton.js","sourceRoot":"","sources":["../../../src/components/formStore/OneBlinkFormStoreRefreshButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,wBAAwB,MAAM,4BAA4B,CAAA;AAEjE,SAAS,8BAA8B,CACrC,KAA0C;IAE1C,MAAM,EAAE,SAAS,EAAE,6BAA6B,EAAE,GAChD,wBAAwB,EAAE,CAAA;IAC5B,OAAO,CACL,oBAAC,MAAM,IACL,SAAS,EAAC,8BAA8B,EACxC,SAAS,EAAE,oBAAC,QAAQ,OAAG,EACvB,OAAO,EAAE,SAAS,EAClB,KAAK,EAAC,SAAS,EACf,OAAO,EAAC,WAAW,EACnB,QAAQ,EAAE,CAAC,CAAC,6BAA6B;QACzC,kDAAkD;QAClD,QAAQ,EAAE,oDAAY,KAClB,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,eAAe,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport { Button } from '@mui/material'\nimport { Sync as SyncIcon } from '@mui/icons-material'\nimport useFormStoreTableContext from './useFormStoreTableContext'\n\nfunction OneBlinkFormStoreRefreshButton(\n props: React.ComponentProps<typeof Button>,\n) {\n const { onRefresh, submissionIdValidationMessage } =\n useFormStoreTableContext()\n return (\n <Button\n className=\"ob-form-store-refresh-button\"\n startIcon={<SyncIcon />}\n onClick={onRefresh}\n color=\"primary\"\n variant=\"contained\"\n disabled={!!submissionIdValidationMessage}\n // eslint-disable-next-line react/no-children-prop\n children={<>Refresh</>}\n {...props}\n />\n )\n}\n\nexport default React.memo(OneBlinkFormStoreRefreshButton)\n"]}
|
1
|
+
{"version":3,"file":"OneBlinkFormStoreRefreshButton.js","sourceRoot":"","sources":["../../../src/components/formStore/OneBlinkFormStoreRefreshButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,wBAAwB,MAAM,4BAA4B,CAAA;AAEjE,SAAS,8BAA8B,CACrC,KAA0C;IAE1C,MAAM,EAAE,SAAS,EAAE,6BAA6B,EAAE,GAChD,wBAAwB,EAAE,CAAA;IAC5B,OAAO,CACL,oBAAC,MAAM,IACL,SAAS,EAAC,8BAA8B,EACxC,SAAS,EAAE,oBAAC,QAAQ,OAAG,EACvB,OAAO,EAAE,SAAS,EAClB,KAAK,EAAC,SAAS,EACf,OAAO,EAAC,WAAW,EACnB,QAAQ,EAAE,CAAC,CAAC,6BAA6B;QACzC,kDAAkD;QAClD,QAAQ,EAAE,oDAAY,KAClB,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,eAAe,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport { Button } from '@mui/material'\nimport { Sync as SyncIcon } from '@mui/icons-material'\nimport useFormStoreTableContext from './useFormStoreTableContext'\n\nfunction OneBlinkFormStoreRefreshButton(\n props: React.ComponentProps<typeof Button>,\n) {\n const { onRefresh, submissionIdValidationMessage } =\n useFormStoreTableContext()\n return (\n <Button\n className=\"ob-form-store-refresh-button\"\n startIcon={<SyncIcon />}\n onClick={onRefresh}\n color=\"primary\"\n variant=\"contained\"\n disabled={!!submissionIdValidationMessage}\n // eslint-disable-next-line react/no-children-prop\n children={<>Refresh</>}\n {...props}\n />\n )\n}\n\n/**\n * @param props\n * @returns\n * @group Components\n */\nexport default React.memo(OneBlinkFormStoreRefreshButton)\n"]}
|