@oneblink/apps-react 6.9.0-beta.4 → 6.9.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/OneBlinkForm.d.ts +2 -0
- package/dist/OneBlinkFormBase.d.ts +6 -1
- package/dist/OneBlinkFormBase.js +2 -2
- package/dist/OneBlinkFormBase.js.map +1 -1
- package/dist/components/MaterialIcon.d.ts +4 -2
- package/dist/components/MaterialIcon.js +3 -3
- package/dist/components/MaterialIcon.js.map +1 -1
- package/dist/components/ValidationErrorsCard.d.ts +2 -1
- package/dist/components/ValidationErrorsCard.js +9 -5
- package/dist/components/ValidationErrorsCard.js.map +1 -1
- package/dist/components/renderer/OneBlinkFormElements.js +1 -1
- package/dist/components/renderer/OneBlinkFormElements.js.map +1 -1
- package/dist/components/renderer/attachments/DropdownMenu.js +2 -0
- package/dist/components/renderer/attachments/DropdownMenu.js.map +1 -1
- package/dist/styles/validation-errors-card.scss +14 -22
- package/dist/styles.css +2 -5
- package/package.json +1 -1
package/dist/OneBlinkForm.d.ts
CHANGED
@@ -348,6 +348,7 @@ declare const OneBlinkFormControlled: React.NamedExoticComponent<import("./OneBl
|
|
348
348
|
isInfoPage?: "YES" | "NO" | "CALCULATED" | undefined;
|
349
349
|
onUploadAttachment?: typeof import("@oneblink/apps/dist/attachments-service").uploadAttachment | undefined;
|
350
350
|
captchaType?: import(".").CaptchaType | undefined;
|
351
|
+
validationErrorsNavigationTopOffset?: number | undefined;
|
351
352
|
} & OneBlinkFormControlledProps>;
|
352
353
|
/**
|
353
354
|
* Component for rendering a OneBlink Form. This component will render the
|
@@ -591,6 +592,7 @@ declare const OneBlinkFormUncontrolled: React.NamedExoticComponent<import("./One
|
|
591
592
|
isInfoPage?: "YES" | "NO" | "CALCULATED" | undefined;
|
592
593
|
onUploadAttachment?: typeof import("@oneblink/apps/dist/attachments-service").uploadAttachment | undefined;
|
593
594
|
captchaType?: import(".").CaptchaType | undefined;
|
595
|
+
validationErrorsNavigationTopOffset?: number | undefined;
|
594
596
|
} & OneBlinkFormUncontrolledProps & {
|
595
597
|
/** The element to resume the form at. */
|
596
598
|
resumeAtElement?: FormTypes.FormElement | undefined;
|
@@ -93,6 +93,11 @@ export type OneBlinkFormBaseProps = OneBlinkReadOnlyFormProps & {
|
|
93
93
|
* elements. Defaults to "CHECKBOX"
|
94
94
|
*/
|
95
95
|
captchaType?: CaptchaType;
|
96
|
+
/**
|
97
|
+
* A pixel offset for validation error navigation markers. Use this to account
|
98
|
+
* for any headers your page might have.
|
99
|
+
*/
|
100
|
+
validationErrorsNavigationTopOffset?: number;
|
96
101
|
};
|
97
102
|
export type OneBlinkFormUncontrolledProps = {
|
98
103
|
/** The OneBlink Form to render */
|
@@ -110,6 +115,6 @@ export type OneBlinkFormControlledProps = {
|
|
110
115
|
type Props = OneBlinkFormBaseProps & OneBlinkFormControlledProps & {
|
111
116
|
isReadOnly: boolean;
|
112
117
|
};
|
113
|
-
declare function OneBlinkFormBase({ googleMapsApiKey, abnLookupAuthenticationGuid, captchaSiteKey, definition, disabled, isPreview, submission, isReadOnly, onCancel, onSubmit, onSaveDraft, setFormSubmission, buttons, primaryColour, attachmentRetentionInDays, isPendingQueueEnabled, handleNavigateAway, isInfoPage: isInfoPageProp, lastElementUpdated, executedLookups, task, taskGroup, taskGroupInstance, onUploadAttachment, captchaType, }: Props): React.JSX.Element;
|
118
|
+
declare function OneBlinkFormBase({ googleMapsApiKey, abnLookupAuthenticationGuid, captchaSiteKey, definition, disabled, isPreview, submission, isReadOnly, onCancel, onSubmit, onSaveDraft, setFormSubmission, buttons, primaryColour, attachmentRetentionInDays, isPendingQueueEnabled, handleNavigateAway, isInfoPage: isInfoPageProp, lastElementUpdated, executedLookups, task, taskGroup, taskGroupInstance, onUploadAttachment, captchaType, validationErrorsNavigationTopOffset, }: Props): React.JSX.Element;
|
114
119
|
declare const _default: React.MemoExoticComponent<typeof OneBlinkFormBase>;
|
115
120
|
export default _default;
|
package/dist/OneBlinkFormBase.js
CHANGED
@@ -35,7 +35,7 @@ import { OnUploadAttachmentContext } from './hooks/useOnUploadAttachment';
|
|
35
35
|
import { injectOptionsAcrossAllElements } from './services/injectableOptions';
|
36
36
|
import MaterialIcon from './components/MaterialIcon';
|
37
37
|
import ValidationErrorsCard from './components/ValidationErrorsCard';
|
38
|
-
function OneBlinkFormBase({ googleMapsApiKey, abnLookupAuthenticationGuid, captchaSiteKey, definition, disabled, isPreview, submission, isReadOnly, onCancel, onSubmit, onSaveDraft, setFormSubmission, buttons, primaryColour, attachmentRetentionInDays, isPendingQueueEnabled, handleNavigateAway, isInfoPage: isInfoPageProp, lastElementUpdated, executedLookups, task, taskGroup, taskGroupInstance, onUploadAttachment, captchaType, }) {
|
38
|
+
function OneBlinkFormBase({ googleMapsApiKey, abnLookupAuthenticationGuid, captchaSiteKey, definition, disabled, isPreview, submission, isReadOnly, onCancel, onSubmit, onSaveDraft, setFormSubmission, buttons, primaryColour, attachmentRetentionInDays, isPendingQueueEnabled, handleNavigateAway, isInfoPage: isInfoPageProp, lastElementUpdated, executedLookups, task, taskGroup, taskGroupInstance, onUploadAttachment, captchaType, validationErrorsNavigationTopOffset, }) {
|
39
39
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
40
40
|
const isOffline = useIsOffline();
|
41
41
|
const { isUsingFormsKey, userProfile } = useAuth();
|
@@ -716,7 +716,7 @@ function OneBlinkFormBase({ googleMapsApiKey, abnLookupAuthenticationGuid, captc
|
|
716
716
|
' ',
|
717
717
|
"button below to come back to this later."))),
|
718
718
|
React.createElement(MaterialIcon, { className: "has-text-warning icon-x-large ob-modal__offline-submission-attempt-icon" }, "wifi_off")))),
|
719
|
-
!!formElementsValidation && hasAttemptedSubmit && (React.createElement(ValidationErrorsCard, { formElementsValidation: formElementsValidation, setPageId: setPageId, currentPage: currentPage })))))))));
|
719
|
+
!!formElementsValidation && hasAttemptedSubmit && (React.createElement(ValidationErrorsCard, { formElementsValidation: formElementsValidation, setPageId: setPageId, currentPage: currentPage, navigationTopOffset: validationErrorsNavigationTopOffset !== null && validationErrorsNavigationTopOffset !== void 0 ? validationErrorsNavigationTopOffset : 0 })))))))));
|
720
720
|
}
|
721
721
|
export default React.memo(OneBlinkFormBase);
|
722
722
|
//# sourceMappingURL=OneBlinkFormBase.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"OneBlinkFormBase.js","sourceRoot":"","sources":["../src/OneBlinkFormBase.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { createTheme as createMuiTheme, ThemeProvider } from '@mui/material'\nimport Tooltip from './components/renderer/Tooltip'\nimport { Prompt, useHistory } from 'react-router-dom'\nimport clsx from 'clsx'\nimport * as bulmaToast from 'bulma-toast'\nimport { localisationService, submissionService } from '@oneblink/apps'\nimport {\n FormTypes,\n FormsAppsTypes,\n ScheduledTasksTypes,\n SubmissionTypes,\n} from '@oneblink/types'\nimport { attachmentsService } from '@oneblink/apps'\nimport * as H from 'history'\n\nimport Modal from './components/renderer/Modal'\nimport cleanFormSubmissionModel from './services/cleanFormSubmissionModel'\nimport PageFormElements from './components/renderer/PageFormElements'\nimport useFormValidation from './hooks/useFormValidation'\nimport useConditionalLogic from './hooks/useConditionalLogic'\nimport usePages from './hooks/usePages'\nimport useLookups from './hooks/useLookups'\nimport { FormDefinitionContext } from './hooks/useFormDefinition'\nimport { InjectPagesContext } from './hooks/useInjectPages'\nimport { FormElementOptionsContextProvider } from './hooks/useDynamicOptionsLoaderState'\nimport { FormElementLookupsContextProvider } from './hooks/useFormElementLookups'\nimport { OneBlinkFormContainerContext } from './hooks/useOneBlinkFormContainer'\nimport { GoogleMapsApiKeyContext } from './hooks/useGoogleMapsApiKey'\nimport { AbnLookupAuthenticationGuidContext } from './hooks/useAbnLookupAuthenticationGuid'\nimport { CaptchaContext } from './hooks/useCaptcha'\nimport { FormIsReadOnlyContext } from './hooks/useFormIsReadOnly'\nimport { AttachmentBlobsProvider } from './hooks/attachments/useAttachmentBlobs'\nimport useIsOffline from './hooks/useIsOffline'\nimport CustomisableButtonInner from './components/renderer/CustomisableButtonInner'\nimport {\n CaptchaType,\n ExecutedLookups,\n FormElementsValidation,\n NestedFormElementValueChangeHandler,\n SetFormSubmission,\n} from './types/form'\nimport checkBsbsAreInvalid from './services/checkBsbsAreInvalid'\nimport checkIfBsbsAreValidating from './services/checkIfBsbsAreValidating'\nimport checkIfAttachmentsExist from './services/checkIfAttachmentsExist'\nimport useAuth from './hooks/useAuth'\nimport { formElementsService } from '@oneblink/sdk-core'\nimport { TaskContext } from './hooks/useTaskContext'\nimport { OnUploadAttachmentContext } from './hooks/useOnUploadAttachment'\nimport { injectOptionsAcrossAllElements } from './services/injectableOptions'\nimport MaterialIcon from './components/MaterialIcon'\nimport ReCAPTCHA from 'react-google-recaptcha'\nimport ValidationErrorsCard from './components/ValidationErrorsCard'\n\nexport type OneBlinkReadOnlyFormProps = {\n /**\n * A [Google Maps API\n * Key](https://developers.google.com/maps/documentation/javascript/get-api-key).\n * Required if the form contains a `location` form element.\n */\n googleMapsApiKey?: string\n /** Hex colour value for certain inputs (defaults to `#4c8da7`). */\n primaryColour?: string\n /**\n * Pass a task if the user was attempting to complete a scheduled task via a\n * form submission\n */\n task?: ScheduledTasksTypes.Task\n /**\n * Pass a task group if the user was attempting to complete a scheduled task\n * associated with a group via a form submission\n */\n taskGroup?: ScheduledTasksTypes.TaskGroup\n /**\n * Pass a task group instance if the user was attempting to complete a\n * scheduled task associated with a group via a form submission\n */\n taskGroupInstance?: ScheduledTasksTypes.TaskGroupInstance\n}\n\nexport type OneBlinkFormBaseProps = OneBlinkReadOnlyFormProps & {\n /** The function to call when the user cancels the form */\n onCancel: () => unknown\n /**\n * The function to call when the user submits the form with valid submission\n * data. See\n * [NewFormSubmission](https://oneblink.github.io/apps/modules/submissionService.html#NewFormSubmission)\n * for the structure of the argument.\n */\n onSubmit: (newFormSubmission: submissionService.NewFormSubmission) => unknown\n /** Whether the form is currently able to be submitted. False by default. */\n disabled?: boolean\n /** Whether the form is in preview mode. False by default. */\n isPreview?: boolean\n /**\n * An [ABN Lookup Authentication\n * Guid](https://abr.business.gov.au/Tools/WebServices). Required if the form\n * contains a `abn` form element.\n */\n abnLookupAuthenticationGuid?: string\n /**\n * A [reCAPTCHA Site Key](https://developers.google.com/recaptcha/intro).\n * Required if the form contains a `captcha` form element.\n */\n captchaSiteKey?: string\n /** Change properties for certain buttons on the form. */\n buttons?: FormsAppsTypes.FormsListStyles['buttons']\n /** Number of days attachments are retained for. */\n attachmentRetentionInDays?: number\n /**\n * If set to `false`, submission will be prevented while offline. If set to\n * `true`, the user will be prompted to allow them to continue with\n * attachments uploading in the background later.\n */\n isPendingQueueEnabled: boolean\n /**\n * The function to call when the user wishes to save their submission data as\n * a draft submission. If not specified, drafts cannot be saved. See\n * [NewDraftSubmission](https://oneblink.github.io/apps/modules/submissionService.html#NewDraftSubmission)\n * for the structure of the argument.\n */\n onSaveDraft?: (\n newDraftSubmission: submissionService.NewDraftSubmission,\n ) => unknown\n /**\n * The function to call when the user needs to navigate away from the form.\n * e.g. `history.push`\n */\n handleNavigateAway?: () => unknown\n /**\n * Determines whether the form is submittable or not. Info page type forms\n * show a \"Done\" button instead of a \"Submit\" button. Defaults to\n * \"CALCULATED\"\n */\n isInfoPage?: 'YES' | 'NO' | 'CALCULATED'\n /**\n * The function to call when a user uploads an attachment through an element\n * that allows attachment upload. See\n * [uploadAttachment](https://oneblink.github.io/apps/modules/attachmentsService.html#uploadAttachment)\n * for the structure of the argument and a sample function to be used.\n */\n onUploadAttachment?: typeof attachmentsService.uploadAttachment\n /**\n * Determines whether to use checkboxes or invisible recaptcha v2 for captcha\n * elements. Defaults to \"CHECKBOX\"\n */\n captchaType?: CaptchaType\n}\n\nexport type OneBlinkFormUncontrolledProps = {\n /** The OneBlink Form to render */\n form: FormTypes.Form\n /** The initial submission data */\n initialSubmission?: SubmissionTypes.S3SubmissionData['submission']\n}\n\nexport type OneBlinkFormControlledProps = {\n definition: FormTypes.Form\n submission: SubmissionTypes.S3SubmissionData['submission']\n setFormSubmission: SetFormSubmission\n lastElementUpdated?: FormTypes.FormElement\n executedLookups: ExecutedLookups\n}\n\ntype Props = OneBlinkFormBaseProps &\n OneBlinkFormControlledProps & {\n isReadOnly: boolean\n }\n\nfunction OneBlinkFormBase({\n googleMapsApiKey,\n abnLookupAuthenticationGuid,\n captchaSiteKey,\n definition,\n disabled,\n isPreview,\n submission,\n isReadOnly,\n onCancel,\n onSubmit,\n onSaveDraft,\n setFormSubmission,\n buttons,\n primaryColour,\n attachmentRetentionInDays,\n isPendingQueueEnabled,\n handleNavigateAway,\n isInfoPage: isInfoPageProp,\n lastElementUpdated,\n executedLookups,\n task,\n taskGroup,\n taskGroupInstance,\n onUploadAttachment,\n captchaType,\n}: Props) {\n const isOffline = useIsOffline()\n const { isUsingFormsKey, userProfile } = useAuth()\n const captchasRef = React.useRef<Array<ReCAPTCHA>>([])\n\n const theme = React.useMemo(\n () =>\n createMuiTheme({\n palette: {\n primary: {\n main: primaryColour || '#4c8da7',\n },\n success: {\n main: '#4caf50',\n },\n },\n }),\n [primaryColour],\n )\n\n const isInfoPage = React.useMemo(() => {\n if (!!isInfoPageProp && isInfoPageProp !== 'CALCULATED') {\n return isInfoPageProp === 'YES'\n }\n return formElementsService.determineIsInfoPage(definition)\n }, [definition, isInfoPageProp])\n\n const taskContextValue = React.useMemo(() => {\n return {\n task,\n taskGroup,\n taskGroupInstance,\n }\n }, [task, taskGroup, taskGroupInstance])\n\n //\n //\n // #region Form Definition\n\n const pages = React.useMemo<FormTypes.PageElement[]>(() => {\n if (definition.isMultiPage) {\n return definition.elements.reduce(\n (\n pageElements: FormTypes.PageElement[],\n formElement: FormTypes.FormElement,\n ) => {\n if (formElement.type === 'page') {\n pageElements.push(formElement)\n }\n return pageElements\n },\n [],\n )\n } else {\n return [\n {\n type: 'page',\n id: definition.id.toString(),\n label: definition.name,\n elements: definition.elements,\n conditionallyShow: false,\n requiresAllConditionallyShowPredicates: false,\n },\n ]\n }\n }, [\n definition.elements,\n definition.id,\n definition.isMultiPage,\n definition.name,\n ])\n\n // #endregion\n //\n //\n\n //\n //\n // #region Unsaved Changed\n\n const history = useHistory()\n\n const [isPreparingToSubmit, setIsPreparingToSubmit] =\n React.useState<boolean>(false)\n const [\n { isDirty, isNavigationAllowed, hasConfirmedNavigation, goToLocation },\n setUnsavedChangesState,\n ] = React.useState<{\n isDirty: boolean\n isNavigationAllowed: boolean\n hasConfirmedNavigation: boolean | null\n goToLocation: H.Location | null\n }>({\n isDirty: false,\n isNavigationAllowed: false,\n hasConfirmedNavigation: null,\n goToLocation: null,\n })\n const [promptOfflineSubmissionAttempt, setPromptOfflineSubmissionAttempt] =\n React.useState<boolean>(false)\n const [promptUploadingAttachments, setPromptUploadingAttachments] =\n React.useState<boolean>(false)\n const handleBlockedNavigation = React.useCallback<\n (location: H.Location, action: H.Action) => string | boolean\n >((location) => {\n setUnsavedChangesState((current) => ({\n ...current,\n goToLocation: location,\n hasConfirmedNavigation: false,\n }))\n return false\n }, [])\n\n const handleKeepGoing = React.useCallback(() => {\n setUnsavedChangesState((current) => ({\n ...current,\n goToLocation: null,\n hasConfirmedNavigation: null,\n }))\n }, [])\n\n const handleDiscardUnsavedChanges = React.useCallback(() => {\n setUnsavedChangesState((current) => ({\n ...current,\n isNavigationAllowed: true,\n hasConfirmedNavigation: true,\n }))\n }, [])\n\n React.useEffect(() => {\n if (hasConfirmedNavigation) {\n // Navigate to the previous blocked location with your navigate function\n if (goToLocation) {\n history.push(`${goToLocation.pathname}${goToLocation.search}`)\n if (handleNavigateAway) {\n handleNavigateAway()\n }\n } else {\n onCancel()\n }\n }\n }, [\n goToLocation,\n handleNavigateAway,\n hasConfirmedNavigation,\n history,\n onCancel,\n ])\n\n const handleCancel = React.useCallback(() => {\n if (isDirty) {\n setUnsavedChangesState((current) => ({\n ...current,\n hasConfirmedNavigation: false,\n }))\n } else {\n onCancel()\n }\n }, [isDirty, onCancel])\n\n const allowNavigation = React.useCallback(() => {\n setUnsavedChangesState((current) => ({\n ...current,\n isNavigationAllowed: true,\n }))\n }, [])\n\n // #endregion Unsaved Changed\n //\n //\n\n //\n //\n // #region Conditional Logic\n\n const {\n formElementsConditionallyShown,\n conditionalLogicError,\n submissionConditionallyEnabled,\n } = useConditionalLogic(definition, submission)\n\n // #endregion\n //\n //\n\n //\n //\n // #region Validation\n\n const { validate } = useFormValidation(pages)\n\n const recaptchaType = React.useMemo(\n () => captchaType ?? 'CHECKBOX',\n [captchaType],\n )\n\n const formElementsValidation = React.useMemo<\n FormElementsValidation | undefined\n >(\n () =>\n !isReadOnly\n ? validate(\n submission,\n formElementsConditionallyShown,\n executedLookups ?? {},\n recaptchaType,\n )\n : undefined,\n [\n formElementsConditionallyShown,\n isReadOnly,\n submission,\n validate,\n executedLookups,\n recaptchaType,\n ],\n )\n\n // #endregion\n //\n //\n\n //\n //\n // #region Pages\n\n const [hasAttemptedSubmit, setHasAttemptedSubmit] = React.useState(false)\n\n const {\n visiblePages,\n isFirstVisiblePage,\n isLastVisiblePage,\n isDisplayingCurrentPageError,\n isShowingMultiplePages,\n isStepsHeaderActive,\n toggleStepsNavigation,\n currentPageIndex,\n currentPage,\n currentPageNumber,\n checkDisplayPageError,\n setPageId,\n goToPreviousPage,\n goToNextPage,\n scrollToTopOfPageHTMLElementRef,\n } = usePages({\n hasAttemptedSubmit,\n pages,\n formElementsValidation,\n formElementsConditionallyShown,\n })\n\n // #endregion\n //\n //\n\n //\n //\n // #region Submissions\n\n const getCurrentSubmissionData = React.useCallback(\n (stripBinaryData: boolean) => {\n const { model, captchaTokens } = cleanFormSubmissionModel(\n submission,\n definition.elements,\n formElementsConditionallyShown,\n stripBinaryData,\n )\n return {\n submission: model,\n captchaTokens,\n }\n },\n [definition.elements, formElementsConditionallyShown, submission],\n )\n\n const obFormContainerHTMLElementRef = React.useRef<HTMLDivElement>(null)\n React.useEffect(() => {\n const obFormContainerHTMLElement = obFormContainerHTMLElementRef.current\n if (obFormContainerHTMLElement) {\n console.log(\n 'Setting toast notifications to be appended to HTML Element',\n obFormContainerHTMLElement,\n )\n bulmaToast.setDefaults({\n position: 'bottom-right',\n opacity: 0.95,\n appendTo: obFormContainerHTMLElement,\n })\n }\n return () => {\n bulmaToast.resetDefaults()\n }\n }, [])\n\n const checkAttachmentsCanBeSubmitted = React.useCallback(\n (submission: SubmissionTypes.S3SubmissionData['submission']) => {\n // Prevent submission until all attachment uploads are finished\n // Unless the user is offline, in which case, the uploads will\n // be taken care of by a pending queue if enabled, otherwise\n // the user will be prompted to try again or save a draft.\n if (isOffline) {\n return true\n }\n const attachmentsAreUploading =\n attachmentsService.checkIfAttachmentsAreUploading(\n definition,\n submission,\n )\n\n if (attachmentsAreUploading) {\n if (isUsingFormsKey || !isPendingQueueEnabled) {\n bulmaToast.toast({\n message:\n 'Attachments are still uploading, please wait for them to finish before trying again.',\n type: 'is-primary',\n extraClasses: 'ob-toast cypress-still-uploading-toast',\n duration: 4000,\n pauseOnHover: true,\n closeOnClick: true,\n })\n return false\n } else {\n setPromptUploadingAttachments(true)\n return false\n }\n }\n\n return true\n },\n [definition, isOffline, isPendingQueueEnabled, isUsingFormsKey],\n )\n\n const checkBsbsCanBeSubmitted = React.useCallback(\n (submission: SubmissionTypes.S3SubmissionData['submission']) => {\n return !checkBsbsAreInvalid(definition, submission)\n },\n [definition],\n )\n\n const checkBsbAreValidating = React.useCallback(\n (submission: SubmissionTypes.S3SubmissionData['submission']) => {\n if (checkIfBsbsAreValidating(definition, submission)) {\n bulmaToast.toast({\n message:\n 'Bsb(s) are still being validated, please wait for them to finish before trying again.',\n type: 'is-primary',\n extraClasses: 'ob-toast cypress-still-validating-toast',\n duration: 4000,\n pauseOnHover: true,\n closeOnClick: true,\n })\n return false\n }\n\n return true\n },\n [definition],\n )\n\n const addCaptchaRef = React.useCallback((recaptcha: ReCAPTCHA) => {\n captchasRef.current.push(recaptcha)\n // this allows the FormElementCaptcha element to unregister any captchas\n return () => {\n captchasRef.current = captchasRef.current.filter(\n (recaptchaInstance) => recaptchaInstance !== recaptcha,\n )\n }\n }, [])\n\n const captchaContextValue = React.useMemo(\n () => ({\n captchaSiteKey,\n captchaType: recaptchaType,\n addCaptchaRef,\n }),\n [addCaptchaRef, captchaSiteKey, recaptchaType],\n )\n\n const resetRecaptchas = React.useCallback(() => {\n // unset the submission model value for each captcha element\n const updatedModel = { ...submission }\n formElementsService.forEachFormElement(definition.elements, (element) => {\n if (element.type === 'captcha') {\n updatedModel[element.name] = undefined\n }\n })\n // reset each captcha\n if (captchaType === 'CHECKBOX') {\n captchasRef.current.forEach((captcha) => {\n captcha.reset()\n })\n }\n\n setHasAttemptedSubmit(false)\n setFormSubmission((current) => {\n return { ...current, submission: updatedModel }\n })\n }, [definition.elements, setFormSubmission, submission, captchaType])\n\n const prepareSubmission = React.useCallback(\n async (\n continueWhilstAttachmentsAreUploading: boolean,\n ): Promise<ReturnType<typeof getCurrentSubmissionData> | undefined> => {\n const submissionData = getCurrentSubmissionData(false)\n if (!checkBsbAreValidating(submissionData.submission)) {\n return\n }\n if (formElementsValidation) {\n console.log('Validation errors', formElementsValidation)\n return\n }\n if (!checkBsbsCanBeSubmitted(submissionData.submission)) {\n return\n }\n if (\n !continueWhilstAttachmentsAreUploading &&\n !checkAttachmentsCanBeSubmitted(submissionData.submission)\n ) {\n return\n }\n\n if (captchaType === 'INVISIBLE') {\n if (captchasRef.current.length) {\n const tokenResults = await Promise.allSettled(\n captchasRef.current.map((captcha) => captcha.executeAsync()),\n )\n\n const captchaTokens: string[] = []\n\n for (const result of tokenResults) {\n if (result.status === 'rejected' || !result.value) {\n console.log('Captcha token failure')\n bulmaToast.toast({\n message: 'Failed to get a captcha token',\n type: 'is-danger',\n extraClasses: 'ob-toast cypress-failed-captcha-token-creation',\n duration: 4000,\n pauseOnHover: true,\n closeOnClick: true,\n })\n return\n }\n captchaTokens.push(result.value)\n }\n\n submissionData.captchaTokens = captchaTokens\n }\n }\n\n // check if attachments exist\n const newSubmission = checkIfAttachmentsExist(\n definition,\n submissionData.submission,\n attachmentRetentionInDays,\n )\n if (newSubmission) {\n setFormSubmission((currentFormSubmission) => ({\n ...currentFormSubmission,\n submission: newSubmission,\n }))\n bulmaToast.toast({\n message:\n \"Some files that were included in your submission have been removed based on your administrator's data retention policy, please remove them and upload them again.\",\n type: 'is-danger',\n extraClasses: 'ob-toast cypress-invalid-submit-attempt',\n duration: 4000,\n pauseOnHover: true,\n closeOnClick: true,\n })\n return\n }\n\n if (isOffline && !isPendingQueueEnabled) {\n console.log('User is offline and form does not support a pending queue')\n setPromptOfflineSubmissionAttempt(true)\n return\n }\n return submissionData\n },\n [\n attachmentRetentionInDays,\n captchaType,\n checkAttachmentsCanBeSubmitted,\n checkBsbAreValidating,\n checkBsbsCanBeSubmitted,\n definition,\n formElementsValidation,\n getCurrentSubmissionData,\n isOffline,\n isPendingQueueEnabled,\n setFormSubmission,\n ],\n )\n\n const handleSubmit = React.useCallback(\n async (\n event:\n | React.FormEvent<HTMLFormElement>\n | React.MouseEvent<HTMLButtonElement, MouseEvent>,\n continueWhilstAttachmentsAreUploading: boolean,\n ) => {\n event.preventDefault()\n if (disabled || isReadOnly) return\n setHasAttemptedSubmit(true)\n\n setIsPreparingToSubmit(true)\n\n const submissionData = await prepareSubmission(\n continueWhilstAttachmentsAreUploading,\n )\n\n if (!submissionData) {\n setIsPreparingToSubmit(false)\n return\n }\n\n allowNavigation()\n\n // transplant injected options on the definition\n const elementsWithInjectedOptions = injectOptionsAcrossAllElements({\n contextElements: definition.elements,\n elements: definition.elements,\n submission: submissionData.submission,\n taskContext: taskContextValue,\n userProfile: userProfile ?? undefined,\n })\n setIsPreparingToSubmit(false)\n onSubmit({\n definition: {\n ...definition,\n elements: elementsWithInjectedOptions,\n },\n submission: submissionData.submission,\n captchaTokens: submissionData.captchaTokens,\n })\n resetRecaptchas()\n },\n [\n disabled,\n isReadOnly,\n prepareSubmission,\n allowNavigation,\n definition,\n taskContextValue,\n userProfile,\n onSubmit,\n resetRecaptchas,\n ],\n )\n\n const handleSaveDraft = React.useCallback(\n (continueWhilstAttachmentsAreUploading: boolean) => {\n if (disabled) return\n if (onSaveDraft) {\n allowNavigation()\n\n // For drafts we don't need to save the captcha tokens,\n // they will need to prove they are not robot again\n const { submission } = getCurrentSubmissionData(false)\n if (!checkBsbAreValidating(submission)) {\n return\n }\n if (\n !continueWhilstAttachmentsAreUploading &&\n !checkAttachmentsCanBeSubmitted(submission)\n ) {\n return\n }\n onSaveDraft({\n definition,\n submission,\n backgroundUpload: continueWhilstAttachmentsAreUploading,\n lastElementUpdated,\n })\n }\n },\n [\n allowNavigation,\n checkAttachmentsCanBeSubmitted,\n definition,\n disabled,\n getCurrentSubmissionData,\n onSaveDraft,\n checkBsbAreValidating,\n lastElementUpdated,\n ],\n )\n\n const handleContinueWithAttachments = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n setPromptUploadingAttachments(false)\n if (hasAttemptedSubmit) {\n handleSubmit(e, true)\n } else {\n handleSaveDraft(true)\n }\n },\n [\n handleSubmit,\n setPromptUploadingAttachments,\n hasAttemptedSubmit,\n handleSaveDraft,\n ],\n )\n const handleWaitForAttachments = React.useCallback(() => {\n setPromptUploadingAttachments(false)\n }, [setPromptUploadingAttachments])\n\n // #endregion\n //\n //\n\n //\n //\n // #region Lookups\n\n const { handlePagesLookupResult } = useLookups(\n definition.id,\n setFormSubmission,\n )\n\n // #endregion\n //\n //\n\n //\n //\n // #region Submission/Definition Changes\n\n const handleChange = React.useCallback<NestedFormElementValueChangeHandler>(\n (element, { value, executedLookups }) => {\n if (\n //This will ensure on a read only form that the summary and calculation elements\n //can still be displayed as it needs handleChange so it can render\n //due to the dynamic nature of the summary element.\n (disabled &&\n element.type !== 'summary' &&\n element.type !== 'calculation') ||\n element.type === 'page' ||\n element.type === 'section'\n ) {\n return\n }\n\n setUnsavedChangesState((current) => ({\n ...current,\n isDirty: true,\n }))\n // dont update the last element updated for elements the user cannot set the value of\n if (element.type === 'summary' || element.type === 'calculation') {\n setFormSubmission((currentFormSubmission) => ({\n ...currentFormSubmission,\n submission: {\n ...currentFormSubmission.submission,\n [element.name]:\n typeof value === 'function'\n ? value(currentFormSubmission.submission[element.name])\n : value,\n },\n }))\n } else {\n setFormSubmission((currentFormSubmission) => {\n return {\n ...currentFormSubmission,\n submission: {\n ...currentFormSubmission.submission,\n [element.name]:\n typeof value === 'function'\n ? value(currentFormSubmission.submission[element.name])\n : value,\n },\n lastElementUpdated: element,\n executedLookups: {\n ...currentFormSubmission.executedLookups,\n [element.name]:\n typeof executedLookups === 'function'\n ? executedLookups(\n currentFormSubmission.executedLookups?.[element.name],\n )\n : executedLookups,\n },\n }\n })\n }\n },\n [disabled, setFormSubmission],\n )\n\n // #endregion\n //\n //\n\n const lastElementUpdatedExistsOnForm = React.useMemo(() => {\n return !!formElementsService.findFormElement(\n definition.elements,\n (el) => el.id === lastElementUpdated?.id,\n )\n }, [definition.elements, lastElementUpdated])\n\n const lastElementUpdatedPage = React.useMemo(() => {\n return definition.elements.find((pageElement: FormTypes.FormElement) => {\n if (pageElement.type === 'page') {\n return formElementsService.findFormElement(\n pageElement.elements,\n (el) => el.id === lastElementUpdated?.id,\n )\n }\n })\n }, [lastElementUpdated, definition])\n\n const [hasResumed, setHasResumed] = React.useState(false)\n React.useEffect(() => {\n if (!hasResumed) {\n if (lastElementUpdated && lastElementUpdatedExistsOnForm) {\n if (lastElementUpdatedPage) {\n setPageId(lastElementUpdatedPage.id)\n }\n const element = document.getElementById(lastElementUpdated.id)\n if (element) {\n window.requestAnimationFrame(() => {\n element.scrollIntoView({ behavior: 'smooth' })\n })\n }\n }\n setHasResumed(true)\n }\n }, [\n lastElementUpdated,\n hasResumed,\n lastElementUpdatedPage,\n lastElementUpdatedExistsOnForm,\n setPageId,\n ])\n\n if (conditionalLogicError) {\n return (\n <>\n <div className=\"has-text-centered\">\n <MaterialIcon className=\"has-text-warning icon-x-large\">\n error\n </MaterialIcon>\n <h3 className=\"title is-3\">Bad Form Configuration</h3>\n <p className=\"cypress-conditional-logic-error-message\">\n {conditionalLogicError.message}\n </p>\n <p className=\"has-text-grey\">\n {localisationService.formatDatetimeLong(new Date())}\n </p>\n </div>\n </>\n )\n }\n\n return (\n <ThemeProvider theme={theme}>\n <FormDefinitionContext.Provider value={definition}>\n <FormElementOptionsContextProvider>\n <FormElementLookupsContextProvider>\n <OneBlinkFormContainerContext.Provider\n value={obFormContainerHTMLElementRef.current}\n >\n <div\n className={clsx('ob-form-container', {\n 'is-showing-pages': isShowingMultiplePages,\n })}\n ref={obFormContainerHTMLElementRef}\n >\n <form\n name=\"obForm\"\n className={`ob-form cypress-ob-form ob-form__page-${\n currentPageIndex + 1\n }`}\n noValidate\n onSubmit={(e) => handleSubmit(e, false)}\n >\n <div>\n <div ref={scrollToTopOfPageHTMLElementRef} />\n {isShowingMultiplePages && (\n <div\n className={clsx('ob-steps-navigation', {\n 'is-active': isStepsHeaderActive,\n })}\n >\n <div\n className={clsx('ob-steps-navigation__header', {\n 'is-active': isStepsHeaderActive,\n })}\n onClick={toggleStepsNavigation}\n >\n <span className=\"icon is-invisible\">\n <MaterialIcon>keyboard_arrow_down</MaterialIcon>\n </span>\n <div className=\"steps-header-active-page\">\n {isDisplayingCurrentPageError ? (\n <span className=\"icon\">\n <MaterialIcon className=\"has-text-danger is-size-4\">\n warning\n </MaterialIcon>\n </span>\n ) : (\n <span className=\"steps-header-active-page-icon\">\n {currentPageNumber}\n </span>\n )}\n <span className=\"steps-header-active-page-label cypress-tablet-step-title\">\n {currentPage ? currentPage.label : ''}\n </span>\n </div>\n <span className=\"dropdown icon\">\n <MaterialIcon>keyboard_arrow_down</MaterialIcon>\n </span>\n </div>\n\n <div\n className={clsx('ob-steps-navigation__steps', {\n 'is-active': isStepsHeaderActive,\n })}\n >\n <div className=\"steps is-small is-horizontal-tablet cypress-steps\">\n {visiblePages.map(\n (page: FormTypes.PageElement, index: number) => {\n const hasErrors = checkDisplayPageError(page)\n return (\n <div\n key={page.id}\n id={`steps-navigation-step-${page.id}`}\n className={clsx(\n 'step-item cypress-step-item',\n {\n 'is-active': currentPage.id === page.id,\n 'is-completed':\n currentPageIndex > index,\n 'is-error': hasErrors,\n },\n )}\n onClick={(e) => {\n e.stopPropagation()\n if (page.id !== currentPage.id) {\n setPageId(page.id)\n }\n }}\n >\n <div\n className=\"step-marker step-marker-error ob-step-marker cypress-step-marker\"\n // @ts-expect-error ???\n name={`cypress-page-stepper-${index + 1}`}\n value={index + 1}\n >\n {hasErrors ? (\n <Tooltip title=\"Page has errors\">\n <span className=\"icon tooltip has-tooltip-top cypress-page-error\">\n <MaterialIcon className=\"has-text-danger is-size-3\">\n warning\n </MaterialIcon>\n </span>\n </Tooltip>\n ) : (\n <span>{index + 1}</span>\n )}\n </div>\n <div className=\"step-details ob-step-details\">\n <p\n className=\"step-title ob-step-title cypress-desktop-step-title\"\n id={`steps-navigation-step-label-${page.id}`}\n >\n {page.label}\n </p>\n </div>\n </div>\n )\n },\n )}\n </div>\n </div>\n </div>\n )}\n\n <div\n className={clsx('ob-steps-navigation__background', {\n 'is-active': isStepsHeaderActive,\n })}\n onClick={toggleStepsNavigation}\n />\n\n <div className=\"steps\">\n <div\n className={clsx('steps-content', {\n 'is-single-step': !isShowingMultiplePages,\n })}\n >\n <InjectPagesContext.Provider\n value={handlePagesLookupResult}\n >\n <GoogleMapsApiKeyContext.Provider\n value={googleMapsApiKey}\n >\n <AbnLookupAuthenticationGuidContext.Provider\n value={abnLookupAuthenticationGuid}\n >\n <CaptchaContext.Provider\n value={captchaContextValue}\n >\n <AttachmentBlobsProvider>\n <FormIsReadOnlyContext.Provider\n value={isReadOnly}\n >\n <TaskContext.Provider\n value={taskContextValue}\n >\n <OnUploadAttachmentContext.Provider\n value={onUploadAttachment}\n >\n {visiblePages.map(\n (\n pageElement: FormTypes.PageElement,\n ) => (\n <PageFormElements\n key={pageElement.id}\n isActive={\n pageElement.id ===\n currentPage.id\n }\n formId={definition.id}\n formElementsConditionallyShown={\n formElementsConditionallyShown\n }\n formElementsValidation={\n formElementsValidation\n }\n displayValidationMessages={\n hasAttemptedSubmit ||\n isDisplayingCurrentPageError\n }\n pageElement={pageElement}\n onChange={handleChange}\n model={submission}\n setFormSubmission={\n setFormSubmission\n }\n />\n ),\n )}\n </OnUploadAttachmentContext.Provider>\n </TaskContext.Provider>\n </FormIsReadOnlyContext.Provider>\n </AttachmentBlobsProvider>\n </CaptchaContext.Provider>\n </AbnLookupAuthenticationGuidContext.Provider>\n </GoogleMapsApiKeyContext.Provider>\n </InjectPagesContext.Provider>\n </div>\n\n {isShowingMultiplePages && (\n <div className=\"steps-actions\">\n <div className=\"steps-action\">\n <button\n type=\"button\"\n onClick={goToPreviousPage}\n disabled={isFirstVisiblePage}\n className=\"button is-light cypress-pages-previous\"\n >\n <span className=\"icon\">\n <MaterialIcon>keyboard_arrow_left</MaterialIcon>\n </span>\n <span>Back</span>\n </button>\n </div>\n <div className=\"step-progress-mobile cypress-steps-mobile\">\n {visiblePages.map(\n (page: FormTypes.PageElement, index) => (\n <div\n key={page.id}\n className={clsx('step-progress-mobile-dot', {\n 'is-active': currentPage.id === page.id,\n 'is-completed': currentPageIndex > index,\n 'has-background-danger':\n currentPage.id !== page.id &&\n checkDisplayPageError(page),\n })}\n />\n ),\n )}\n </div>\n <div className=\"steps-action\">\n <button\n type=\"button\"\n onClick={goToNextPage}\n disabled={isLastVisiblePage}\n className=\"button is-light cypress-pages-next\"\n >\n <span>Next</span>\n <span className=\"icon\">\n <MaterialIcon>\n keyboard_arrow_right\n </MaterialIcon>\n </span>\n </button>\n </div>\n </div>\n )}\n </div>\n {!isReadOnly && (\n <div className=\"buttons ob-buttons ob-buttons-submit\">\n {onSaveDraft && !isInfoPage && (\n <button\n type=\"button\"\n className=\"button ob-button is-primary ob-button-save-draft cypress-save-draft-form\"\n onClick={() => handleSaveDraft(false)}\n disabled={isPreview || disabled}\n >\n <CustomisableButtonInner\n label={buttons?.saveDraft?.label || 'Save Draft'}\n icon={buttons?.saveDraft?.icon}\n />\n </button>\n )}\n <span className=\"ob-buttons-submit__spacer\"></span>\n {!isInfoPage && (\n <button\n type=\"button\"\n className=\"button ob-button is-light ob-button-submit-cancel cypress-cancel-form\"\n onClick={handleCancel}\n disabled={isPreview || disabled}\n >\n <CustomisableButtonInner\n label={buttons?.cancel?.label || 'Cancel'}\n icon={buttons?.cancel?.icon}\n />\n </button>\n )}\n {isLastVisiblePage && (\n <Tooltip\n title={\n submissionConditionallyEnabled\n ? ''\n : 'Submission disabled: Your inputs have not met the criteria for submission'\n }\n >\n <button\n type=\"submit\"\n className={clsx(\n 'button ob-button is-success ob-button-submit cypress-submit-form-button cypress-submit-form',\n { 'is-loading': isPreparingToSubmit },\n {\n 'ob-button-submit-is-disabled':\n submissionConditionallyEnabled,\n },\n )}\n disabled={\n isPreview ||\n disabled ||\n isPreparingToSubmit ||\n !submissionConditionallyEnabled\n }\n >\n <CustomisableButtonInner\n label={\n isInfoPage\n ? 'Done'\n : buttons?.submit?.label || 'Submit'\n }\n icon={buttons?.submit?.icon}\n />\n </button>\n </Tooltip>\n )}\n </div>\n )}\n </div>\n </form>\n\n {!isReadOnly && !isPreview && (\n <React.Fragment>\n <Prompt\n when={isDirty && !isNavigationAllowed}\n message={handleBlockedNavigation}\n />\n <Modal\n isOpen={hasConfirmedNavigation === false}\n title=\"Unsaved Changes\"\n cardClassName=\"cypress-cancel-confirm\"\n titleClassName=\"cypress-cancel-confirm-title\"\n bodyClassName=\"cypress-cancel-confirm-body\"\n actions={\n <>\n {onSaveDraft && (\n <button\n type=\"button\"\n className=\"button ob-button is-success cypress-cancel-confirm-save-draft\"\n onClick={() => handleSaveDraft(false)}\n >\n <CustomisableButtonInner\n label={\n buttons?.saveDraft?.label || 'Save Draft'\n }\n icon={buttons?.saveDraft?.icon}\n />\n </button>\n )}\n <span style={{ flex: 1 }}></span>\n <button\n type=\"button\"\n className=\"button ob-button is-light cypress-cancel-confirm-back\"\n onClick={handleKeepGoing}\n >\n <CustomisableButtonInner\n label={buttons?.cancelPromptNo?.label || 'Back'}\n icon={buttons?.cancelPromptNo?.icon}\n />\n </button>\n <button\n type=\"button\"\n className=\"button ob-button is-primary cypress-cancel-confirm-discard\"\n onClick={handleDiscardUnsavedChanges}\n autoFocus\n >\n <CustomisableButtonInner\n label={\n buttons?.cancelPromptYes?.label || 'Discard'\n }\n icon={buttons?.cancelPromptYes?.icon}\n />\n </button>\n </>\n }\n >\n <p>\n You have unsaved changes, are you sure you want discard\n them?\n </p>\n </Modal>\n <Modal\n isOpen={promptUploadingAttachments === true}\n title=\"Attachment upload in progress\"\n cardClassName=\"cypress-attachments-wait-continue\"\n titleClassName=\"cypress-attachments-confirm-wait-title\"\n bodyClassName=\"cypress-attachments-confirm-wait-body\"\n actions={\n <>\n <span style={{ flex: 1 }}></span>\n <button\n type=\"button\"\n className=\"button ob-button is-light cypress-attachments-confirm-wait\"\n onClick={handleWaitForAttachments}\n >\n Wait\n </button>\n <button\n type=\"button\"\n className=\"button ob-button is-primary cypress-attachments-confirm-continue\"\n onClick={handleContinueWithAttachments}\n autoFocus\n >\n Continue\n </button>\n </>\n }\n >\n <p>\n Your attachments are still uploading, do you want to\n wait for the uploads to complete or continue using the\n app? If you click continue the attachments will upload\n in the background. Do not close the app until the upload\n has been completed.\n </p>\n </Modal>\n\n <Modal\n isOpen={promptOfflineSubmissionAttempt}\n title=\"It looks like you're Offline\"\n className=\"ob-modal__offline-submission-attempt\"\n cardClassName=\"cypress-submission-offline has-text-centered\"\n titleClassName=\"cypress-offline-title\"\n bodyClassName=\"cypress-offline-body\"\n actions={\n <>\n {onSaveDraft && (\n <button\n type=\"button\"\n className=\"button ob-button ob-button__offline-submission-attempt-save-draft is-success\"\n onClick={() => handleSaveDraft(false)}\n >\n <CustomisableButtonInner\n label={\n buttons?.saveDraft?.label || 'Save Draft'\n }\n icon={buttons?.saveDraft?.icon}\n />\n </button>\n )}\n <span style={{ flex: 1 }}></span>\n <button\n className=\"button ob-button ob-button__offline-submission-attempt-cancel is-light\"\n onClick={() =>\n setPromptOfflineSubmissionAttempt(false)\n }\n >\n Cancel\n </button>\n <button\n className=\"button ob-button ob-button__offline-submission-attempt-try-again is-primary\"\n onClick={(e) => {\n setPromptOfflineSubmissionAttempt(false)\n handleSubmit(e, false)\n }}\n autoFocus\n >\n Try Again\n </button>\n </>\n }\n >\n <p className=\"ob-modal__offline-submission-attempt-message\">\n You cannot submit this form while offline, please try\n again when connectivity is restored.\n {onSaveDraft && (\n <span className=\"ob-modal__offline-submission-attempt-save-draft-message\">\n {' '}\n Alternatively, click the{' '}\n <b>\n {buttons?.saveDraft?.label || 'Save Draft'}\n </b>{' '}\n button below to come back to this later.\n </span>\n )}\n </p>\n <MaterialIcon className=\"has-text-warning icon-x-large ob-modal__offline-submission-attempt-icon\">\n wifi_off\n </MaterialIcon>\n </Modal>\n </React.Fragment>\n )}\n {!!formElementsValidation && hasAttemptedSubmit && (\n <ValidationErrorsCard\n formElementsValidation={formElementsValidation}\n setPageId={setPageId}\n currentPage={currentPage}\n />\n )}\n </div>\n </OneBlinkFormContainerContext.Provider>\n </FormElementLookupsContextProvider>\n </FormElementOptionsContextProvider>\n </FormDefinitionContext.Provider>\n </ThemeProvider>\n )\n}\n\nexport default React.memo(OneBlinkFormBase)\n"]}
|
1
|
+
{"version":3,"file":"OneBlinkFormBase.js","sourceRoot":"","sources":["../src/OneBlinkFormBase.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { createTheme as createMuiTheme, ThemeProvider } from '@mui/material'\nimport Tooltip from './components/renderer/Tooltip'\nimport { Prompt, useHistory } from 'react-router-dom'\nimport clsx from 'clsx'\nimport * as bulmaToast from 'bulma-toast'\nimport { localisationService, submissionService } from '@oneblink/apps'\nimport {\n FormTypes,\n FormsAppsTypes,\n ScheduledTasksTypes,\n SubmissionTypes,\n} from '@oneblink/types'\nimport { attachmentsService } from '@oneblink/apps'\nimport * as H from 'history'\n\nimport Modal from './components/renderer/Modal'\nimport cleanFormSubmissionModel from './services/cleanFormSubmissionModel'\nimport PageFormElements from './components/renderer/PageFormElements'\nimport useFormValidation from './hooks/useFormValidation'\nimport useConditionalLogic from './hooks/useConditionalLogic'\nimport usePages from './hooks/usePages'\nimport useLookups from './hooks/useLookups'\nimport { FormDefinitionContext } from './hooks/useFormDefinition'\nimport { InjectPagesContext } from './hooks/useInjectPages'\nimport { FormElementOptionsContextProvider } from './hooks/useDynamicOptionsLoaderState'\nimport { FormElementLookupsContextProvider } from './hooks/useFormElementLookups'\nimport { OneBlinkFormContainerContext } from './hooks/useOneBlinkFormContainer'\nimport { GoogleMapsApiKeyContext } from './hooks/useGoogleMapsApiKey'\nimport { AbnLookupAuthenticationGuidContext } from './hooks/useAbnLookupAuthenticationGuid'\nimport { CaptchaContext } from './hooks/useCaptcha'\nimport { FormIsReadOnlyContext } from './hooks/useFormIsReadOnly'\nimport { AttachmentBlobsProvider } from './hooks/attachments/useAttachmentBlobs'\nimport useIsOffline from './hooks/useIsOffline'\nimport CustomisableButtonInner from './components/renderer/CustomisableButtonInner'\nimport {\n CaptchaType,\n ExecutedLookups,\n FormElementsValidation,\n NestedFormElementValueChangeHandler,\n SetFormSubmission,\n} from './types/form'\nimport checkBsbsAreInvalid from './services/checkBsbsAreInvalid'\nimport checkIfBsbsAreValidating from './services/checkIfBsbsAreValidating'\nimport checkIfAttachmentsExist from './services/checkIfAttachmentsExist'\nimport useAuth from './hooks/useAuth'\nimport { formElementsService } from '@oneblink/sdk-core'\nimport { TaskContext } from './hooks/useTaskContext'\nimport { OnUploadAttachmentContext } from './hooks/useOnUploadAttachment'\nimport { injectOptionsAcrossAllElements } from './services/injectableOptions'\nimport MaterialIcon from './components/MaterialIcon'\nimport ReCAPTCHA from 'react-google-recaptcha'\nimport ValidationErrorsCard from './components/ValidationErrorsCard'\n\nexport type OneBlinkReadOnlyFormProps = {\n /**\n * A [Google Maps API\n * Key](https://developers.google.com/maps/documentation/javascript/get-api-key).\n * Required if the form contains a `location` form element.\n */\n googleMapsApiKey?: string\n /** Hex colour value for certain inputs (defaults to `#4c8da7`). */\n primaryColour?: string\n /**\n * Pass a task if the user was attempting to complete a scheduled task via a\n * form submission\n */\n task?: ScheduledTasksTypes.Task\n /**\n * Pass a task group if the user was attempting to complete a scheduled task\n * associated with a group via a form submission\n */\n taskGroup?: ScheduledTasksTypes.TaskGroup\n /**\n * Pass a task group instance if the user was attempting to complete a\n * scheduled task associated with a group via a form submission\n */\n taskGroupInstance?: ScheduledTasksTypes.TaskGroupInstance\n}\n\nexport type OneBlinkFormBaseProps = OneBlinkReadOnlyFormProps & {\n /** The function to call when the user cancels the form */\n onCancel: () => unknown\n /**\n * The function to call when the user submits the form with valid submission\n * data. See\n * [NewFormSubmission](https://oneblink.github.io/apps/modules/submissionService.html#NewFormSubmission)\n * for the structure of the argument.\n */\n onSubmit: (newFormSubmission: submissionService.NewFormSubmission) => unknown\n /** Whether the form is currently able to be submitted. False by default. */\n disabled?: boolean\n /** Whether the form is in preview mode. False by default. */\n isPreview?: boolean\n /**\n * An [ABN Lookup Authentication\n * Guid](https://abr.business.gov.au/Tools/WebServices). Required if the form\n * contains a `abn` form element.\n */\n abnLookupAuthenticationGuid?: string\n /**\n * A [reCAPTCHA Site Key](https://developers.google.com/recaptcha/intro).\n * Required if the form contains a `captcha` form element.\n */\n captchaSiteKey?: string\n /** Change properties for certain buttons on the form. */\n buttons?: FormsAppsTypes.FormsListStyles['buttons']\n /** Number of days attachments are retained for. */\n attachmentRetentionInDays?: number\n /**\n * If set to `false`, submission will be prevented while offline. If set to\n * `true`, the user will be prompted to allow them to continue with\n * attachments uploading in the background later.\n */\n isPendingQueueEnabled: boolean\n /**\n * The function to call when the user wishes to save their submission data as\n * a draft submission. If not specified, drafts cannot be saved. See\n * [NewDraftSubmission](https://oneblink.github.io/apps/modules/submissionService.html#NewDraftSubmission)\n * for the structure of the argument.\n */\n onSaveDraft?: (\n newDraftSubmission: submissionService.NewDraftSubmission,\n ) => unknown\n /**\n * The function to call when the user needs to navigate away from the form.\n * e.g. `history.push`\n */\n handleNavigateAway?: () => unknown\n /**\n * Determines whether the form is submittable or not. Info page type forms\n * show a \"Done\" button instead of a \"Submit\" button. Defaults to\n * \"CALCULATED\"\n */\n isInfoPage?: 'YES' | 'NO' | 'CALCULATED'\n /**\n * The function to call when a user uploads an attachment through an element\n * that allows attachment upload. See\n * [uploadAttachment](https://oneblink.github.io/apps/modules/attachmentsService.html#uploadAttachment)\n * for the structure of the argument and a sample function to be used.\n */\n onUploadAttachment?: typeof attachmentsService.uploadAttachment\n /**\n * Determines whether to use checkboxes or invisible recaptcha v2 for captcha\n * elements. Defaults to \"CHECKBOX\"\n */\n captchaType?: CaptchaType\n\n /**\n * A pixel offset for validation error navigation markers. Use this to account\n * for any headers your page might have.\n */\n validationErrorsNavigationTopOffset?: number\n}\n\nexport type OneBlinkFormUncontrolledProps = {\n /** The OneBlink Form to render */\n form: FormTypes.Form\n /** The initial submission data */\n initialSubmission?: SubmissionTypes.S3SubmissionData['submission']\n}\n\nexport type OneBlinkFormControlledProps = {\n definition: FormTypes.Form\n submission: SubmissionTypes.S3SubmissionData['submission']\n setFormSubmission: SetFormSubmission\n lastElementUpdated?: FormTypes.FormElement\n executedLookups: ExecutedLookups\n}\n\ntype Props = OneBlinkFormBaseProps &\n OneBlinkFormControlledProps & {\n isReadOnly: boolean\n }\n\nfunction OneBlinkFormBase({\n googleMapsApiKey,\n abnLookupAuthenticationGuid,\n captchaSiteKey,\n definition,\n disabled,\n isPreview,\n submission,\n isReadOnly,\n onCancel,\n onSubmit,\n onSaveDraft,\n setFormSubmission,\n buttons,\n primaryColour,\n attachmentRetentionInDays,\n isPendingQueueEnabled,\n handleNavigateAway,\n isInfoPage: isInfoPageProp,\n lastElementUpdated,\n executedLookups,\n task,\n taskGroup,\n taskGroupInstance,\n onUploadAttachment,\n captchaType,\n validationErrorsNavigationTopOffset,\n}: Props) {\n const isOffline = useIsOffline()\n const { isUsingFormsKey, userProfile } = useAuth()\n const captchasRef = React.useRef<Array<ReCAPTCHA>>([])\n\n const theme = React.useMemo(\n () =>\n createMuiTheme({\n palette: {\n primary: {\n main: primaryColour || '#4c8da7',\n },\n success: {\n main: '#4caf50',\n },\n },\n }),\n [primaryColour],\n )\n\n const isInfoPage = React.useMemo(() => {\n if (!!isInfoPageProp && isInfoPageProp !== 'CALCULATED') {\n return isInfoPageProp === 'YES'\n }\n return formElementsService.determineIsInfoPage(definition)\n }, [definition, isInfoPageProp])\n\n const taskContextValue = React.useMemo(() => {\n return {\n task,\n taskGroup,\n taskGroupInstance,\n }\n }, [task, taskGroup, taskGroupInstance])\n\n //\n //\n // #region Form Definition\n\n const pages = React.useMemo<FormTypes.PageElement[]>(() => {\n if (definition.isMultiPage) {\n return definition.elements.reduce(\n (\n pageElements: FormTypes.PageElement[],\n formElement: FormTypes.FormElement,\n ) => {\n if (formElement.type === 'page') {\n pageElements.push(formElement)\n }\n return pageElements\n },\n [],\n )\n } else {\n return [\n {\n type: 'page',\n id: definition.id.toString(),\n label: definition.name,\n elements: definition.elements,\n conditionallyShow: false,\n requiresAllConditionallyShowPredicates: false,\n },\n ]\n }\n }, [\n definition.elements,\n definition.id,\n definition.isMultiPage,\n definition.name,\n ])\n\n // #endregion\n //\n //\n\n //\n //\n // #region Unsaved Changed\n\n const history = useHistory()\n\n const [isPreparingToSubmit, setIsPreparingToSubmit] =\n React.useState<boolean>(false)\n const [\n { isDirty, isNavigationAllowed, hasConfirmedNavigation, goToLocation },\n setUnsavedChangesState,\n ] = React.useState<{\n isDirty: boolean\n isNavigationAllowed: boolean\n hasConfirmedNavigation: boolean | null\n goToLocation: H.Location | null\n }>({\n isDirty: false,\n isNavigationAllowed: false,\n hasConfirmedNavigation: null,\n goToLocation: null,\n })\n const [promptOfflineSubmissionAttempt, setPromptOfflineSubmissionAttempt] =\n React.useState<boolean>(false)\n const [promptUploadingAttachments, setPromptUploadingAttachments] =\n React.useState<boolean>(false)\n const handleBlockedNavigation = React.useCallback<\n (location: H.Location, action: H.Action) => string | boolean\n >((location) => {\n setUnsavedChangesState((current) => ({\n ...current,\n goToLocation: location,\n hasConfirmedNavigation: false,\n }))\n return false\n }, [])\n\n const handleKeepGoing = React.useCallback(() => {\n setUnsavedChangesState((current) => ({\n ...current,\n goToLocation: null,\n hasConfirmedNavigation: null,\n }))\n }, [])\n\n const handleDiscardUnsavedChanges = React.useCallback(() => {\n setUnsavedChangesState((current) => ({\n ...current,\n isNavigationAllowed: true,\n hasConfirmedNavigation: true,\n }))\n }, [])\n\n React.useEffect(() => {\n if (hasConfirmedNavigation) {\n // Navigate to the previous blocked location with your navigate function\n if (goToLocation) {\n history.push(`${goToLocation.pathname}${goToLocation.search}`)\n if (handleNavigateAway) {\n handleNavigateAway()\n }\n } else {\n onCancel()\n }\n }\n }, [\n goToLocation,\n handleNavigateAway,\n hasConfirmedNavigation,\n history,\n onCancel,\n ])\n\n const handleCancel = React.useCallback(() => {\n if (isDirty) {\n setUnsavedChangesState((current) => ({\n ...current,\n hasConfirmedNavigation: false,\n }))\n } else {\n onCancel()\n }\n }, [isDirty, onCancel])\n\n const allowNavigation = React.useCallback(() => {\n setUnsavedChangesState((current) => ({\n ...current,\n isNavigationAllowed: true,\n }))\n }, [])\n\n // #endregion Unsaved Changed\n //\n //\n\n //\n //\n // #region Conditional Logic\n\n const {\n formElementsConditionallyShown,\n conditionalLogicError,\n submissionConditionallyEnabled,\n } = useConditionalLogic(definition, submission)\n\n // #endregion\n //\n //\n\n //\n //\n // #region Validation\n\n const { validate } = useFormValidation(pages)\n\n const recaptchaType = React.useMemo(\n () => captchaType ?? 'CHECKBOX',\n [captchaType],\n )\n\n const formElementsValidation = React.useMemo<\n FormElementsValidation | undefined\n >(\n () =>\n !isReadOnly\n ? validate(\n submission,\n formElementsConditionallyShown,\n executedLookups ?? {},\n recaptchaType,\n )\n : undefined,\n [\n formElementsConditionallyShown,\n isReadOnly,\n submission,\n validate,\n executedLookups,\n recaptchaType,\n ],\n )\n\n // #endregion\n //\n //\n\n //\n //\n // #region Pages\n\n const [hasAttemptedSubmit, setHasAttemptedSubmit] = React.useState(false)\n\n const {\n visiblePages,\n isFirstVisiblePage,\n isLastVisiblePage,\n isDisplayingCurrentPageError,\n isShowingMultiplePages,\n isStepsHeaderActive,\n toggleStepsNavigation,\n currentPageIndex,\n currentPage,\n currentPageNumber,\n checkDisplayPageError,\n setPageId,\n goToPreviousPage,\n goToNextPage,\n scrollToTopOfPageHTMLElementRef,\n } = usePages({\n hasAttemptedSubmit,\n pages,\n formElementsValidation,\n formElementsConditionallyShown,\n })\n\n // #endregion\n //\n //\n\n //\n //\n // #region Submissions\n\n const getCurrentSubmissionData = React.useCallback(\n (stripBinaryData: boolean) => {\n const { model, captchaTokens } = cleanFormSubmissionModel(\n submission,\n definition.elements,\n formElementsConditionallyShown,\n stripBinaryData,\n )\n return {\n submission: model,\n captchaTokens,\n }\n },\n [definition.elements, formElementsConditionallyShown, submission],\n )\n\n const obFormContainerHTMLElementRef = React.useRef<HTMLDivElement>(null)\n React.useEffect(() => {\n const obFormContainerHTMLElement = obFormContainerHTMLElementRef.current\n if (obFormContainerHTMLElement) {\n console.log(\n 'Setting toast notifications to be appended to HTML Element',\n obFormContainerHTMLElement,\n )\n bulmaToast.setDefaults({\n position: 'bottom-right',\n opacity: 0.95,\n appendTo: obFormContainerHTMLElement,\n })\n }\n return () => {\n bulmaToast.resetDefaults()\n }\n }, [])\n\n const checkAttachmentsCanBeSubmitted = React.useCallback(\n (submission: SubmissionTypes.S3SubmissionData['submission']) => {\n // Prevent submission until all attachment uploads are finished\n // Unless the user is offline, in which case, the uploads will\n // be taken care of by a pending queue if enabled, otherwise\n // the user will be prompted to try again or save a draft.\n if (isOffline) {\n return true\n }\n const attachmentsAreUploading =\n attachmentsService.checkIfAttachmentsAreUploading(\n definition,\n submission,\n )\n\n if (attachmentsAreUploading) {\n if (isUsingFormsKey || !isPendingQueueEnabled) {\n bulmaToast.toast({\n message:\n 'Attachments are still uploading, please wait for them to finish before trying again.',\n type: 'is-primary',\n extraClasses: 'ob-toast cypress-still-uploading-toast',\n duration: 4000,\n pauseOnHover: true,\n closeOnClick: true,\n })\n return false\n } else {\n setPromptUploadingAttachments(true)\n return false\n }\n }\n\n return true\n },\n [definition, isOffline, isPendingQueueEnabled, isUsingFormsKey],\n )\n\n const checkBsbsCanBeSubmitted = React.useCallback(\n (submission: SubmissionTypes.S3SubmissionData['submission']) => {\n return !checkBsbsAreInvalid(definition, submission)\n },\n [definition],\n )\n\n const checkBsbAreValidating = React.useCallback(\n (submission: SubmissionTypes.S3SubmissionData['submission']) => {\n if (checkIfBsbsAreValidating(definition, submission)) {\n bulmaToast.toast({\n message:\n 'Bsb(s) are still being validated, please wait for them to finish before trying again.',\n type: 'is-primary',\n extraClasses: 'ob-toast cypress-still-validating-toast',\n duration: 4000,\n pauseOnHover: true,\n closeOnClick: true,\n })\n return false\n }\n\n return true\n },\n [definition],\n )\n\n const addCaptchaRef = React.useCallback((recaptcha: ReCAPTCHA) => {\n captchasRef.current.push(recaptcha)\n // this allows the FormElementCaptcha element to unregister any captchas\n return () => {\n captchasRef.current = captchasRef.current.filter(\n (recaptchaInstance) => recaptchaInstance !== recaptcha,\n )\n }\n }, [])\n\n const captchaContextValue = React.useMemo(\n () => ({\n captchaSiteKey,\n captchaType: recaptchaType,\n addCaptchaRef,\n }),\n [addCaptchaRef, captchaSiteKey, recaptchaType],\n )\n\n const resetRecaptchas = React.useCallback(() => {\n // unset the submission model value for each captcha element\n const updatedModel = { ...submission }\n formElementsService.forEachFormElement(definition.elements, (element) => {\n if (element.type === 'captcha') {\n updatedModel[element.name] = undefined\n }\n })\n // reset each captcha\n if (captchaType === 'CHECKBOX') {\n captchasRef.current.forEach((captcha) => {\n captcha.reset()\n })\n }\n\n setHasAttemptedSubmit(false)\n setFormSubmission((current) => {\n return { ...current, submission: updatedModel }\n })\n }, [definition.elements, setFormSubmission, submission, captchaType])\n\n const prepareSubmission = React.useCallback(\n async (\n continueWhilstAttachmentsAreUploading: boolean,\n ): Promise<ReturnType<typeof getCurrentSubmissionData> | undefined> => {\n const submissionData = getCurrentSubmissionData(false)\n if (!checkBsbAreValidating(submissionData.submission)) {\n return\n }\n if (formElementsValidation) {\n console.log('Validation errors', formElementsValidation)\n return\n }\n if (!checkBsbsCanBeSubmitted(submissionData.submission)) {\n return\n }\n if (\n !continueWhilstAttachmentsAreUploading &&\n !checkAttachmentsCanBeSubmitted(submissionData.submission)\n ) {\n return\n }\n\n if (captchaType === 'INVISIBLE') {\n if (captchasRef.current.length) {\n const tokenResults = await Promise.allSettled(\n captchasRef.current.map((captcha) => captcha.executeAsync()),\n )\n\n const captchaTokens: string[] = []\n\n for (const result of tokenResults) {\n if (result.status === 'rejected' || !result.value) {\n console.log('Captcha token failure')\n bulmaToast.toast({\n message: 'Failed to get a captcha token',\n type: 'is-danger',\n extraClasses: 'ob-toast cypress-failed-captcha-token-creation',\n duration: 4000,\n pauseOnHover: true,\n closeOnClick: true,\n })\n return\n }\n captchaTokens.push(result.value)\n }\n\n submissionData.captchaTokens = captchaTokens\n }\n }\n\n // check if attachments exist\n const newSubmission = checkIfAttachmentsExist(\n definition,\n submissionData.submission,\n attachmentRetentionInDays,\n )\n if (newSubmission) {\n setFormSubmission((currentFormSubmission) => ({\n ...currentFormSubmission,\n submission: newSubmission,\n }))\n bulmaToast.toast({\n message:\n \"Some files that were included in your submission have been removed based on your administrator's data retention policy, please remove them and upload them again.\",\n type: 'is-danger',\n extraClasses: 'ob-toast cypress-invalid-submit-attempt',\n duration: 4000,\n pauseOnHover: true,\n closeOnClick: true,\n })\n return\n }\n\n if (isOffline && !isPendingQueueEnabled) {\n console.log('User is offline and form does not support a pending queue')\n setPromptOfflineSubmissionAttempt(true)\n return\n }\n return submissionData\n },\n [\n attachmentRetentionInDays,\n captchaType,\n checkAttachmentsCanBeSubmitted,\n checkBsbAreValidating,\n checkBsbsCanBeSubmitted,\n definition,\n formElementsValidation,\n getCurrentSubmissionData,\n isOffline,\n isPendingQueueEnabled,\n setFormSubmission,\n ],\n )\n\n const handleSubmit = React.useCallback(\n async (\n event:\n | React.FormEvent<HTMLFormElement>\n | React.MouseEvent<HTMLButtonElement, MouseEvent>,\n continueWhilstAttachmentsAreUploading: boolean,\n ) => {\n event.preventDefault()\n if (disabled || isReadOnly) return\n setHasAttemptedSubmit(true)\n\n setIsPreparingToSubmit(true)\n\n const submissionData = await prepareSubmission(\n continueWhilstAttachmentsAreUploading,\n )\n\n if (!submissionData) {\n setIsPreparingToSubmit(false)\n return\n }\n\n allowNavigation()\n\n // transplant injected options on the definition\n const elementsWithInjectedOptions = injectOptionsAcrossAllElements({\n contextElements: definition.elements,\n elements: definition.elements,\n submission: submissionData.submission,\n taskContext: taskContextValue,\n userProfile: userProfile ?? undefined,\n })\n setIsPreparingToSubmit(false)\n onSubmit({\n definition: {\n ...definition,\n elements: elementsWithInjectedOptions,\n },\n submission: submissionData.submission,\n captchaTokens: submissionData.captchaTokens,\n })\n resetRecaptchas()\n },\n [\n disabled,\n isReadOnly,\n prepareSubmission,\n allowNavigation,\n definition,\n taskContextValue,\n userProfile,\n onSubmit,\n resetRecaptchas,\n ],\n )\n\n const handleSaveDraft = React.useCallback(\n (continueWhilstAttachmentsAreUploading: boolean) => {\n if (disabled) return\n if (onSaveDraft) {\n allowNavigation()\n\n // For drafts we don't need to save the captcha tokens,\n // they will need to prove they are not robot again\n const { submission } = getCurrentSubmissionData(false)\n if (!checkBsbAreValidating(submission)) {\n return\n }\n if (\n !continueWhilstAttachmentsAreUploading &&\n !checkAttachmentsCanBeSubmitted(submission)\n ) {\n return\n }\n onSaveDraft({\n definition,\n submission,\n backgroundUpload: continueWhilstAttachmentsAreUploading,\n lastElementUpdated,\n })\n }\n },\n [\n allowNavigation,\n checkAttachmentsCanBeSubmitted,\n definition,\n disabled,\n getCurrentSubmissionData,\n onSaveDraft,\n checkBsbAreValidating,\n lastElementUpdated,\n ],\n )\n\n const handleContinueWithAttachments = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n setPromptUploadingAttachments(false)\n if (hasAttemptedSubmit) {\n handleSubmit(e, true)\n } else {\n handleSaveDraft(true)\n }\n },\n [\n handleSubmit,\n setPromptUploadingAttachments,\n hasAttemptedSubmit,\n handleSaveDraft,\n ],\n )\n const handleWaitForAttachments = React.useCallback(() => {\n setPromptUploadingAttachments(false)\n }, [setPromptUploadingAttachments])\n\n // #endregion\n //\n //\n\n //\n //\n // #region Lookups\n\n const { handlePagesLookupResult } = useLookups(\n definition.id,\n setFormSubmission,\n )\n\n // #endregion\n //\n //\n\n //\n //\n // #region Submission/Definition Changes\n\n const handleChange = React.useCallback<NestedFormElementValueChangeHandler>(\n (element, { value, executedLookups }) => {\n if (\n //This will ensure on a read only form that the summary and calculation elements\n //can still be displayed as it needs handleChange so it can render\n //due to the dynamic nature of the summary element.\n (disabled &&\n element.type !== 'summary' &&\n element.type !== 'calculation') ||\n element.type === 'page' ||\n element.type === 'section'\n ) {\n return\n }\n\n setUnsavedChangesState((current) => ({\n ...current,\n isDirty: true,\n }))\n // dont update the last element updated for elements the user cannot set the value of\n if (element.type === 'summary' || element.type === 'calculation') {\n setFormSubmission((currentFormSubmission) => ({\n ...currentFormSubmission,\n submission: {\n ...currentFormSubmission.submission,\n [element.name]:\n typeof value === 'function'\n ? value(currentFormSubmission.submission[element.name])\n : value,\n },\n }))\n } else {\n setFormSubmission((currentFormSubmission) => {\n return {\n ...currentFormSubmission,\n submission: {\n ...currentFormSubmission.submission,\n [element.name]:\n typeof value === 'function'\n ? value(currentFormSubmission.submission[element.name])\n : value,\n },\n lastElementUpdated: element,\n executedLookups: {\n ...currentFormSubmission.executedLookups,\n [element.name]:\n typeof executedLookups === 'function'\n ? executedLookups(\n currentFormSubmission.executedLookups?.[element.name],\n )\n : executedLookups,\n },\n }\n })\n }\n },\n [disabled, setFormSubmission],\n )\n\n // #endregion\n //\n //\n\n const lastElementUpdatedExistsOnForm = React.useMemo(() => {\n return !!formElementsService.findFormElement(\n definition.elements,\n (el) => el.id === lastElementUpdated?.id,\n )\n }, [definition.elements, lastElementUpdated])\n\n const lastElementUpdatedPage = React.useMemo(() => {\n return definition.elements.find((pageElement: FormTypes.FormElement) => {\n if (pageElement.type === 'page') {\n return formElementsService.findFormElement(\n pageElement.elements,\n (el) => el.id === lastElementUpdated?.id,\n )\n }\n })\n }, [lastElementUpdated, definition])\n\n const [hasResumed, setHasResumed] = React.useState(false)\n React.useEffect(() => {\n if (!hasResumed) {\n if (lastElementUpdated && lastElementUpdatedExistsOnForm) {\n if (lastElementUpdatedPage) {\n setPageId(lastElementUpdatedPage.id)\n }\n const element = document.getElementById(lastElementUpdated.id)\n if (element) {\n window.requestAnimationFrame(() => {\n element.scrollIntoView({ behavior: 'smooth' })\n })\n }\n }\n setHasResumed(true)\n }\n }, [\n lastElementUpdated,\n hasResumed,\n lastElementUpdatedPage,\n lastElementUpdatedExistsOnForm,\n setPageId,\n ])\n\n if (conditionalLogicError) {\n return (\n <>\n <div className=\"has-text-centered\">\n <MaterialIcon className=\"has-text-warning icon-x-large\">\n error\n </MaterialIcon>\n <h3 className=\"title is-3\">Bad Form Configuration</h3>\n <p className=\"cypress-conditional-logic-error-message\">\n {conditionalLogicError.message}\n </p>\n <p className=\"has-text-grey\">\n {localisationService.formatDatetimeLong(new Date())}\n </p>\n </div>\n </>\n )\n }\n\n return (\n <ThemeProvider theme={theme}>\n <FormDefinitionContext.Provider value={definition}>\n <FormElementOptionsContextProvider>\n <FormElementLookupsContextProvider>\n <OneBlinkFormContainerContext.Provider\n value={obFormContainerHTMLElementRef.current}\n >\n <div\n className={clsx('ob-form-container', {\n 'is-showing-pages': isShowingMultiplePages,\n })}\n ref={obFormContainerHTMLElementRef}\n >\n <form\n name=\"obForm\"\n className={`ob-form cypress-ob-form ob-form__page-${\n currentPageIndex + 1\n }`}\n noValidate\n onSubmit={(e) => handleSubmit(e, false)}\n >\n <div>\n <div ref={scrollToTopOfPageHTMLElementRef} />\n {isShowingMultiplePages && (\n <div\n className={clsx('ob-steps-navigation', {\n 'is-active': isStepsHeaderActive,\n })}\n >\n <div\n className={clsx('ob-steps-navigation__header', {\n 'is-active': isStepsHeaderActive,\n })}\n onClick={toggleStepsNavigation}\n >\n <span className=\"icon is-invisible\">\n <MaterialIcon>keyboard_arrow_down</MaterialIcon>\n </span>\n <div className=\"steps-header-active-page\">\n {isDisplayingCurrentPageError ? (\n <span className=\"icon\">\n <MaterialIcon className=\"has-text-danger is-size-4\">\n warning\n </MaterialIcon>\n </span>\n ) : (\n <span className=\"steps-header-active-page-icon\">\n {currentPageNumber}\n </span>\n )}\n <span className=\"steps-header-active-page-label cypress-tablet-step-title\">\n {currentPage ? currentPage.label : ''}\n </span>\n </div>\n <span className=\"dropdown icon\">\n <MaterialIcon>keyboard_arrow_down</MaterialIcon>\n </span>\n </div>\n\n <div\n className={clsx('ob-steps-navigation__steps', {\n 'is-active': isStepsHeaderActive,\n })}\n >\n <div className=\"steps is-small is-horizontal-tablet cypress-steps\">\n {visiblePages.map(\n (page: FormTypes.PageElement, index: number) => {\n const hasErrors = checkDisplayPageError(page)\n return (\n <div\n key={page.id}\n id={`steps-navigation-step-${page.id}`}\n className={clsx(\n 'step-item cypress-step-item',\n {\n 'is-active': currentPage.id === page.id,\n 'is-completed':\n currentPageIndex > index,\n 'is-error': hasErrors,\n },\n )}\n onClick={(e) => {\n e.stopPropagation()\n if (page.id !== currentPage.id) {\n setPageId(page.id)\n }\n }}\n >\n <div\n className=\"step-marker step-marker-error ob-step-marker cypress-step-marker\"\n // @ts-expect-error ???\n name={`cypress-page-stepper-${index + 1}`}\n value={index + 1}\n >\n {hasErrors ? (\n <Tooltip title=\"Page has errors\">\n <span className=\"icon tooltip has-tooltip-top cypress-page-error\">\n <MaterialIcon className=\"has-text-danger is-size-3\">\n warning\n </MaterialIcon>\n </span>\n </Tooltip>\n ) : (\n <span>{index + 1}</span>\n )}\n </div>\n <div className=\"step-details ob-step-details\">\n <p\n className=\"step-title ob-step-title cypress-desktop-step-title\"\n id={`steps-navigation-step-label-${page.id}`}\n >\n {page.label}\n </p>\n </div>\n </div>\n )\n },\n )}\n </div>\n </div>\n </div>\n )}\n\n <div\n className={clsx('ob-steps-navigation__background', {\n 'is-active': isStepsHeaderActive,\n })}\n onClick={toggleStepsNavigation}\n />\n\n <div className=\"steps\">\n <div\n className={clsx('steps-content', {\n 'is-single-step': !isShowingMultiplePages,\n })}\n >\n <InjectPagesContext.Provider\n value={handlePagesLookupResult}\n >\n <GoogleMapsApiKeyContext.Provider\n value={googleMapsApiKey}\n >\n <AbnLookupAuthenticationGuidContext.Provider\n value={abnLookupAuthenticationGuid}\n >\n <CaptchaContext.Provider\n value={captchaContextValue}\n >\n <AttachmentBlobsProvider>\n <FormIsReadOnlyContext.Provider\n value={isReadOnly}\n >\n <TaskContext.Provider\n value={taskContextValue}\n >\n <OnUploadAttachmentContext.Provider\n value={onUploadAttachment}\n >\n {visiblePages.map(\n (\n pageElement: FormTypes.PageElement,\n ) => (\n <PageFormElements\n key={pageElement.id}\n isActive={\n pageElement.id ===\n currentPage.id\n }\n formId={definition.id}\n formElementsConditionallyShown={\n formElementsConditionallyShown\n }\n formElementsValidation={\n formElementsValidation\n }\n displayValidationMessages={\n hasAttemptedSubmit ||\n isDisplayingCurrentPageError\n }\n pageElement={pageElement}\n onChange={handleChange}\n model={submission}\n setFormSubmission={\n setFormSubmission\n }\n />\n ),\n )}\n </OnUploadAttachmentContext.Provider>\n </TaskContext.Provider>\n </FormIsReadOnlyContext.Provider>\n </AttachmentBlobsProvider>\n </CaptchaContext.Provider>\n </AbnLookupAuthenticationGuidContext.Provider>\n </GoogleMapsApiKeyContext.Provider>\n </InjectPagesContext.Provider>\n </div>\n\n {isShowingMultiplePages && (\n <div className=\"steps-actions\">\n <div className=\"steps-action\">\n <button\n type=\"button\"\n onClick={goToPreviousPage}\n disabled={isFirstVisiblePage}\n className=\"button is-light cypress-pages-previous\"\n >\n <span className=\"icon\">\n <MaterialIcon>keyboard_arrow_left</MaterialIcon>\n </span>\n <span>Back</span>\n </button>\n </div>\n <div className=\"step-progress-mobile cypress-steps-mobile\">\n {visiblePages.map(\n (page: FormTypes.PageElement, index) => (\n <div\n key={page.id}\n className={clsx('step-progress-mobile-dot', {\n 'is-active': currentPage.id === page.id,\n 'is-completed': currentPageIndex > index,\n 'has-background-danger':\n currentPage.id !== page.id &&\n checkDisplayPageError(page),\n })}\n />\n ),\n )}\n </div>\n <div className=\"steps-action\">\n <button\n type=\"button\"\n onClick={goToNextPage}\n disabled={isLastVisiblePage}\n className=\"button is-light cypress-pages-next\"\n >\n <span>Next</span>\n <span className=\"icon\">\n <MaterialIcon>\n keyboard_arrow_right\n </MaterialIcon>\n </span>\n </button>\n </div>\n </div>\n )}\n </div>\n {!isReadOnly && (\n <div className=\"buttons ob-buttons ob-buttons-submit\">\n {onSaveDraft && !isInfoPage && (\n <button\n type=\"button\"\n className=\"button ob-button is-primary ob-button-save-draft cypress-save-draft-form\"\n onClick={() => handleSaveDraft(false)}\n disabled={isPreview || disabled}\n >\n <CustomisableButtonInner\n label={buttons?.saveDraft?.label || 'Save Draft'}\n icon={buttons?.saveDraft?.icon}\n />\n </button>\n )}\n <span className=\"ob-buttons-submit__spacer\"></span>\n {!isInfoPage && (\n <button\n type=\"button\"\n className=\"button ob-button is-light ob-button-submit-cancel cypress-cancel-form\"\n onClick={handleCancel}\n disabled={isPreview || disabled}\n >\n <CustomisableButtonInner\n label={buttons?.cancel?.label || 'Cancel'}\n icon={buttons?.cancel?.icon}\n />\n </button>\n )}\n {isLastVisiblePage && (\n <Tooltip\n title={\n submissionConditionallyEnabled\n ? ''\n : 'Submission disabled: Your inputs have not met the criteria for submission'\n }\n >\n <button\n type=\"submit\"\n className={clsx(\n 'button ob-button is-success ob-button-submit cypress-submit-form-button cypress-submit-form',\n { 'is-loading': isPreparingToSubmit },\n {\n 'ob-button-submit-is-disabled':\n submissionConditionallyEnabled,\n },\n )}\n disabled={\n isPreview ||\n disabled ||\n isPreparingToSubmit ||\n !submissionConditionallyEnabled\n }\n >\n <CustomisableButtonInner\n label={\n isInfoPage\n ? 'Done'\n : buttons?.submit?.label || 'Submit'\n }\n icon={buttons?.submit?.icon}\n />\n </button>\n </Tooltip>\n )}\n </div>\n )}\n </div>\n </form>\n\n {!isReadOnly && !isPreview && (\n <React.Fragment>\n <Prompt\n when={isDirty && !isNavigationAllowed}\n message={handleBlockedNavigation}\n />\n <Modal\n isOpen={hasConfirmedNavigation === false}\n title=\"Unsaved Changes\"\n cardClassName=\"cypress-cancel-confirm\"\n titleClassName=\"cypress-cancel-confirm-title\"\n bodyClassName=\"cypress-cancel-confirm-body\"\n actions={\n <>\n {onSaveDraft && (\n <button\n type=\"button\"\n className=\"button ob-button is-success cypress-cancel-confirm-save-draft\"\n onClick={() => handleSaveDraft(false)}\n >\n <CustomisableButtonInner\n label={\n buttons?.saveDraft?.label || 'Save Draft'\n }\n icon={buttons?.saveDraft?.icon}\n />\n </button>\n )}\n <span style={{ flex: 1 }}></span>\n <button\n type=\"button\"\n className=\"button ob-button is-light cypress-cancel-confirm-back\"\n onClick={handleKeepGoing}\n >\n <CustomisableButtonInner\n label={buttons?.cancelPromptNo?.label || 'Back'}\n icon={buttons?.cancelPromptNo?.icon}\n />\n </button>\n <button\n type=\"button\"\n className=\"button ob-button is-primary cypress-cancel-confirm-discard\"\n onClick={handleDiscardUnsavedChanges}\n autoFocus\n >\n <CustomisableButtonInner\n label={\n buttons?.cancelPromptYes?.label || 'Discard'\n }\n icon={buttons?.cancelPromptYes?.icon}\n />\n </button>\n </>\n }\n >\n <p>\n You have unsaved changes, are you sure you want discard\n them?\n </p>\n </Modal>\n <Modal\n isOpen={promptUploadingAttachments === true}\n title=\"Attachment upload in progress\"\n cardClassName=\"cypress-attachments-wait-continue\"\n titleClassName=\"cypress-attachments-confirm-wait-title\"\n bodyClassName=\"cypress-attachments-confirm-wait-body\"\n actions={\n <>\n <span style={{ flex: 1 }}></span>\n <button\n type=\"button\"\n className=\"button ob-button is-light cypress-attachments-confirm-wait\"\n onClick={handleWaitForAttachments}\n >\n Wait\n </button>\n <button\n type=\"button\"\n className=\"button ob-button is-primary cypress-attachments-confirm-continue\"\n onClick={handleContinueWithAttachments}\n autoFocus\n >\n Continue\n </button>\n </>\n }\n >\n <p>\n Your attachments are still uploading, do you want to\n wait for the uploads to complete or continue using the\n app? If you click continue the attachments will upload\n in the background. Do not close the app until the upload\n has been completed.\n </p>\n </Modal>\n\n <Modal\n isOpen={promptOfflineSubmissionAttempt}\n title=\"It looks like you're Offline\"\n className=\"ob-modal__offline-submission-attempt\"\n cardClassName=\"cypress-submission-offline has-text-centered\"\n titleClassName=\"cypress-offline-title\"\n bodyClassName=\"cypress-offline-body\"\n actions={\n <>\n {onSaveDraft && (\n <button\n type=\"button\"\n className=\"button ob-button ob-button__offline-submission-attempt-save-draft is-success\"\n onClick={() => handleSaveDraft(false)}\n >\n <CustomisableButtonInner\n label={\n buttons?.saveDraft?.label || 'Save Draft'\n }\n icon={buttons?.saveDraft?.icon}\n />\n </button>\n )}\n <span style={{ flex: 1 }}></span>\n <button\n className=\"button ob-button ob-button__offline-submission-attempt-cancel is-light\"\n onClick={() =>\n setPromptOfflineSubmissionAttempt(false)\n }\n >\n Cancel\n </button>\n <button\n className=\"button ob-button ob-button__offline-submission-attempt-try-again is-primary\"\n onClick={(e) => {\n setPromptOfflineSubmissionAttempt(false)\n handleSubmit(e, false)\n }}\n autoFocus\n >\n Try Again\n </button>\n </>\n }\n >\n <p className=\"ob-modal__offline-submission-attempt-message\">\n You cannot submit this form while offline, please try\n again when connectivity is restored.\n {onSaveDraft && (\n <span className=\"ob-modal__offline-submission-attempt-save-draft-message\">\n {' '}\n Alternatively, click the{' '}\n <b>\n {buttons?.saveDraft?.label || 'Save Draft'}\n </b>{' '}\n button below to come back to this later.\n </span>\n )}\n </p>\n <MaterialIcon className=\"has-text-warning icon-x-large ob-modal__offline-submission-attempt-icon\">\n wifi_off\n </MaterialIcon>\n </Modal>\n </React.Fragment>\n )}\n {!!formElementsValidation && hasAttemptedSubmit && (\n <ValidationErrorsCard\n formElementsValidation={formElementsValidation}\n setPageId={setPageId}\n currentPage={currentPage}\n navigationTopOffset={\n validationErrorsNavigationTopOffset ?? 0\n }\n />\n )}\n </div>\n </OneBlinkFormContainerContext.Provider>\n </FormElementLookupsContextProvider>\n </FormElementOptionsContextProvider>\n </FormDefinitionContext.Provider>\n </ThemeProvider>\n )\n}\n\nexport default React.memo(OneBlinkFormBase)\n"]}
|
@@ -1,3 +1,5 @@
|
|
1
1
|
import * as React from 'react';
|
2
|
-
|
3
|
-
|
2
|
+
declare const _default: React.ForwardRefExoticComponent<Omit<import("@mui/material").IconOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & {
|
3
|
+
ref?: ((instance: HTMLSpanElement | null) => void) | React.RefObject<HTMLSpanElement> | null | undefined;
|
4
|
+
}, "className" | "style" | "children" | "classes" | "sx" | "color" | "fontSize" | "baseClassName">, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
5
|
+
export default _default;
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import * as React from 'react';
|
2
2
|
import { Icon } from '@mui/material';
|
3
3
|
import clsx from 'clsx';
|
4
|
-
export default function MaterialIcon({ className, ...props }) {
|
5
|
-
return (React.createElement(Icon, { role: "img", className: clsx('ob-icon', className), "aria-hidden": true, ...props }));
|
6
|
-
}
|
4
|
+
export default React.forwardRef(function MaterialIcon({ className, ...props }, ref) {
|
5
|
+
return (React.createElement(Icon, { ref: ref, role: "img", className: clsx('ob-icon', className), "aria-hidden": true, ...props }));
|
6
|
+
});
|
7
7
|
//# sourceMappingURL=MaterialIcon.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"MaterialIcon.js","sourceRoot":"","sources":["../../src/components/MaterialIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,
|
1
|
+
{"version":3,"file":"MaterialIcon.js","sourceRoot":"","sources":["../../src/components/MaterialIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,eAAe,KAAK,CAAC,UAAU,CAG7B,SAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG;IAClD,OAAO,CACL,oBAAC,IAAI,IACH,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,KAAK,EACV,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,0BAEjC,KAAK,GACT,CACH,CAAA;AACH,CAAC,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport { Icon } from '@mui/material'\nimport clsx from 'clsx'\n\nexport default React.forwardRef<\n HTMLSpanElement,\n React.ComponentProps<typeof Icon>\n>(function MaterialIcon({ className, ...props }, ref) {\n return (\n <Icon\n ref={ref}\n role=\"img\"\n className={clsx('ob-icon', className)}\n aria-hidden\n {...props}\n />\n )\n})\n"]}
|
@@ -1,9 +1,10 @@
|
|
1
1
|
import * as React from 'react';
|
2
2
|
import { FormElementsValidation } from '../types/form';
|
3
3
|
import { FormTypes } from '@oneblink/types';
|
4
|
-
declare const _default: React.MemoExoticComponent<({ formElementsValidation, currentPage, setPageId, }: {
|
4
|
+
declare const _default: React.MemoExoticComponent<({ formElementsValidation, currentPage, setPageId, navigationTopOffset, }: {
|
5
5
|
formElementsValidation: FormElementsValidation | undefined;
|
6
6
|
currentPage: FormTypes.PageElement;
|
7
7
|
setPageId: (pageId: string) => void;
|
8
|
+
navigationTopOffset: number;
|
8
9
|
}) => React.JSX.Element>;
|
9
10
|
export default _default;
|
@@ -33,7 +33,7 @@ const getValidationErrors = ({ formElementsValidation, elements, page, idPrefix,
|
|
33
33
|
validationData.type === 'repeatableSet') {
|
34
34
|
if (validationData.set) {
|
35
35
|
memo.push({
|
36
|
-
id:
|
36
|
+
id: `element-container__${idPrefix}${el.name}`,
|
37
37
|
errorMessage: validationData.set,
|
38
38
|
label: el.label,
|
39
39
|
page,
|
@@ -73,7 +73,7 @@ const getValidationErrors = ({ formElementsValidation, elements, page, idPrefix,
|
|
73
73
|
const validationMessage = formElementsValidation[el.name];
|
74
74
|
if (typeof validationMessage === 'string') {
|
75
75
|
memo.push({
|
76
|
-
id:
|
76
|
+
id: `element-container__${idPrefix}${el.name}`,
|
77
77
|
label: el.label,
|
78
78
|
page,
|
79
79
|
errorMessage: validationMessage,
|
@@ -84,7 +84,7 @@ const getValidationErrors = ({ formElementsValidation, elements, page, idPrefix,
|
|
84
84
|
return memo;
|
85
85
|
}, []);
|
86
86
|
};
|
87
|
-
const ValidationErrorsCard = ({ formElementsValidation, currentPage, setPageId, }) => {
|
87
|
+
const ValidationErrorsCard = ({ formElementsValidation, currentPage, setPageId, navigationTopOffset, }) => {
|
88
88
|
const [isExpanded, expand, contract] = useBooleanState(false);
|
89
89
|
const form = useFormDefinition();
|
90
90
|
const pagesWithValidationErrors = React.useMemo(() => {
|
@@ -143,7 +143,7 @@ const ValidationErrorsCard = ({ formElementsValidation, currentPage, setPageId,
|
|
143
143
|
React.createElement("div", { className: "ob-validation-notification-card-collapse-wrapper" },
|
144
144
|
React.createElement(Collapse, { in: isExpanded }, pagesWithValidationErrors.map(({ page, errors }, pageIndex) => {
|
145
145
|
const isNotFirstPage = pageIndex > 0;
|
146
|
-
return (React.createElement(React.Fragment,
|
146
|
+
return (React.createElement(React.Fragment, { key: pageIndex },
|
147
147
|
page && (React.createElement("p", { className: clsx('ob-validation-notification-card-page-label ob-validation-color-transition', {
|
148
148
|
'is-not-first': isNotFirstPage,
|
149
149
|
}) }, page.label)),
|
@@ -160,7 +160,11 @@ const ValidationErrorsCard = ({ formElementsValidation, currentPage, setPageId,
|
|
160
160
|
const element = document.getElementById(id);
|
161
161
|
if (element) {
|
162
162
|
window.requestAnimationFrame(() => {
|
163
|
-
|
163
|
+
window.scrollTo({
|
164
|
+
top: element.getBoundingClientRect().top +
|
165
|
+
window.scrollY +
|
166
|
+
// We allow an offset to cater for any headers
|
167
|
+
navigationTopOffset,
|
164
168
|
behavior: 'smooth',
|
165
169
|
});
|
166
170
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ValidationErrorsCard.js","sourceRoot":"","sources":["../../src/components/ValidationErrorsCard.tsx"],"names":[],"mappings":"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","sourcesContent":["import { IconButton, Collapse, Tooltip } from '@mui/material'\nimport * as React from 'react'\nimport MaterialIcon from './MaterialIcon'\nimport { FormElementsValidation } from '../types/form'\nimport useBooleanState from '../hooks/useBooleanState'\nimport clsx from 'clsx'\nimport useFormDefinition from '../hooks/useFormDefinition'\nimport { FormTypes } from '@oneblink/types'\n\nconst NO_PAGE_KEY = 'NO_PAGE'\ntype ValidationErrorMetaData = {\n id: string\n label: string\n page?: {\n label: string\n id: string\n }\n errorMessage: string\n}\nconst getValidationErrors = ({\n formElementsValidation,\n elements,\n page,\n idPrefix,\n}: {\n formElementsValidation: FormElementsValidation\n elements: FormTypes.FormElement[]\n page?: ValidationErrorMetaData['page']\n idPrefix: string\n}) => {\n return elements.reduce<Array<ValidationErrorMetaData>>((memo, el) => {\n switch (el.type) {\n case 'page': {\n memo.push(\n ...getValidationErrors({\n formElementsValidation,\n elements: el.elements,\n page: el,\n idPrefix,\n }),\n )\n break\n }\n case 'section': {\n memo.push(\n ...getValidationErrors({\n formElementsValidation,\n elements: el.elements,\n page,\n idPrefix,\n }),\n )\n break\n }\n case 'repeatableSet': {\n const validationData = formElementsValidation[el.name]\n if (\n !!validationData &&\n typeof validationData !== 'string' &&\n validationData.type === 'repeatableSet'\n ) {\n if (validationData.set) {\n memo.push({\n id: `${idPrefix}${el.name}-label`,\n errorMessage: validationData.set,\n label: el.label,\n page,\n })\n }\n for (const [key, entry] of Object.entries(validationData.entries)) {\n if (!entry) continue\n memo.push(\n ...getValidationErrors({\n formElementsValidation: entry,\n elements: el.elements,\n page,\n idPrefix: `${idPrefix}${el.name}_entry-${key}_`,\n }),\n )\n }\n }\n break\n }\n case 'infoPage':\n case 'form': {\n const validationData = formElementsValidation[el.name]\n if (\n !!validationData &&\n typeof validationData !== 'string' &&\n validationData.type === 'formElements'\n ) {\n if (validationData.formElements && el.elements) {\n memo.push(\n ...getValidationErrors({\n formElementsValidation: validationData.formElements,\n elements: el.elements,\n page,\n idPrefix: `${idPrefix}${el.name}_`,\n }),\n )\n }\n }\n break\n }\n default: {\n const validationMessage = formElementsValidation[el.name]\n if (typeof validationMessage === 'string') {\n memo.push({\n id: `${idPrefix}${el.name}`,\n label: el.label,\n page,\n errorMessage: validationMessage,\n })\n }\n }\n }\n return memo\n }, [])\n}\n\nconst ValidationErrorsCard = ({\n formElementsValidation,\n currentPage,\n setPageId,\n}: {\n formElementsValidation: FormElementsValidation | undefined\n currentPage: FormTypes.PageElement\n setPageId: (pageId: string) => void\n}) => {\n const [isExpanded, expand, contract] = useBooleanState(false)\n\n const form = useFormDefinition()\n\n const pagesWithValidationErrors = React.useMemo(() => {\n if (!formElementsValidation) return []\n const flatErrors = getValidationErrors({\n formElementsValidation,\n elements: form.elements,\n idPrefix: '',\n })\n\n // Organise into pages\n const pages = new Map<\n string,\n {\n page: ValidationErrorMetaData['page']\n errors: ValidationErrorMetaData[]\n }\n >()\n for (const error of flatErrors) {\n if (error.page) {\n // If error belongs to a page\n const existingSetEntry = pages.get(error.page.id)\n const errors = [...(existingSetEntry?.errors || []), error]\n const page = error.page\n\n pages.set(page.id, {\n page,\n errors,\n })\n } else {\n // No page associated with error\n const existingSetEntry = pages.get(NO_PAGE_KEY)\n const errors = [...(existingSetEntry?.errors || []), error]\n pages.set(NO_PAGE_KEY, {\n page: undefined,\n errors,\n })\n }\n }\n return Array.from(pages.values())\n }, [form.elements, formElementsValidation])\n\n return (\n <div className=\"ob-validation-notification-wrapper\">\n <div\n className={clsx(\n 'ob-validation-notification-card cypress-invalid-submit-attempt',\n {\n 'is-clickable': !isExpanded,\n 'is-contracted': !isExpanded,\n 'is-expanded': isExpanded,\n },\n )}\n onClick={!isExpanded ? expand : undefined}\n >\n <div className=\"ob-validation-notification-card-content\">\n <div className=\"ob-validation-notification-card-header-wrapper\">\n <div className=\"ob-validation-notification-card-header-title-wrapper\">\n <MaterialIcon\n className={clsx(\n 'ob-validation-notification-card-header-title-icon ob-validation-color-transition',\n {\n 'has-text-danger': isExpanded,\n 'has-text-white': !isExpanded,\n },\n )}\n >\n error\n </MaterialIcon>\n <p\n className={clsx(\n 'ob-validation-color-transition ob-validation-notification-card-header-title-text',\n {\n 'has-text-danger': isExpanded,\n 'has-text-white': !isExpanded,\n },\n )}\n >\n Validation Errors\n </p>\n </div>\n <div className=\"ob-validation-notification-card-header-collapse-icon-wrapper\">\n {isExpanded ? (\n <IconButton onClick={contract}>\n <MaterialIcon className=\"icon-small\">\n expand_more\n </MaterialIcon>\n </IconButton>\n ) : (\n <IconButton>\n <MaterialIcon className=\"icon-small has-text-white\">\n expand_less\n </MaterialIcon>\n </IconButton>\n )}\n </div>\n </div>\n <div className=\"ob-validation-notification-card-collapse-wrapper\">\n <Collapse in={isExpanded}>\n {pagesWithValidationErrors.map(({ page, errors }, pageIndex) => {\n const isNotFirstPage = pageIndex > 0\n return (\n <>\n {page && (\n <p\n className={clsx(\n 'ob-validation-notification-card-page-label ob-validation-color-transition',\n {\n 'is-not-first': isNotFirstPage,\n },\n )}\n >\n {page.label}\n </p>\n )}\n <div className=\"ob-list has-dividers has-borders ob-validation-notification-card-list ob-validation-color-transition\">\n {errors.map(\n ({ errorMessage, label, id }, index, list) => {\n const isFirst = index === 0\n const isLast = index === list.length - 1\n return (\n <div\n key={index}\n className={clsx(\n 'ob-list__item is-clickable ob-validation-notification-card-item',\n {\n 'is-first': isFirst,\n 'is-last': isLast,\n },\n )}\n onClick={() => {\n if (page && page.id !== currentPage.id) {\n setPageId(page.id)\n }\n const element = document.getElementById(id)\n if (element) {\n window.requestAnimationFrame(() => {\n element.scrollIntoView({\n behavior: 'smooth',\n })\n })\n }\n }}\n >\n <div className=\"ob-validation-notification-card-item-text\">\n <p>{label}</p>\n <Tooltip\n title={errorMessage}\n placement=\"left\"\n arrow\n >\n <p className=\"ob-validation-notification-card-item-text-error-message has-text-danger\">\n {errorMessage}\n </p>\n </Tooltip>\n </div>\n <MaterialIcon className=\"has-text-grey icon-small ob-validation-notification-card-item-icon\">\n chevron_right\n </MaterialIcon>\n </div>\n )\n },\n )}\n </div>\n </>\n )\n })}\n </Collapse>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default React.memo(ValidationErrorsCard)\n"]}
|
1
|
+
{"version":3,"file":"ValidationErrorsCard.js","sourceRoot":"","sources":["../../src/components/ValidationErrorsCard.tsx"],"names":[],"mappings":"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","sourcesContent":["import { IconButton, Collapse, Tooltip } from '@mui/material'\nimport * as React from 'react'\nimport MaterialIcon from './MaterialIcon'\nimport { FormElementsValidation } from '../types/form'\nimport useBooleanState from '../hooks/useBooleanState'\nimport clsx from 'clsx'\nimport useFormDefinition from '../hooks/useFormDefinition'\nimport { FormTypes } from '@oneblink/types'\n\nconst NO_PAGE_KEY = 'NO_PAGE'\ntype ValidationErrorMetaData = {\n id: string\n label: string\n page?: {\n label: string\n id: string\n }\n errorMessage: string\n}\nconst getValidationErrors = ({\n formElementsValidation,\n elements,\n page,\n idPrefix,\n}: {\n formElementsValidation: FormElementsValidation\n elements: FormTypes.FormElement[]\n page?: ValidationErrorMetaData['page']\n idPrefix: string\n}) => {\n return elements.reduce<Array<ValidationErrorMetaData>>((memo, el) => {\n switch (el.type) {\n case 'page': {\n memo.push(\n ...getValidationErrors({\n formElementsValidation,\n elements: el.elements,\n page: el,\n idPrefix,\n }),\n )\n break\n }\n case 'section': {\n memo.push(\n ...getValidationErrors({\n formElementsValidation,\n elements: el.elements,\n page,\n idPrefix,\n }),\n )\n break\n }\n case 'repeatableSet': {\n const validationData = formElementsValidation[el.name]\n if (\n !!validationData &&\n typeof validationData !== 'string' &&\n validationData.type === 'repeatableSet'\n ) {\n if (validationData.set) {\n memo.push({\n id: `element-container__${idPrefix}${el.name}`,\n errorMessage: validationData.set,\n label: el.label,\n page,\n })\n }\n for (const [key, entry] of Object.entries(validationData.entries)) {\n if (!entry) continue\n memo.push(\n ...getValidationErrors({\n formElementsValidation: entry,\n elements: el.elements,\n page,\n idPrefix: `${idPrefix}${el.name}_entry-${key}_`,\n }),\n )\n }\n }\n break\n }\n case 'infoPage':\n case 'form': {\n const validationData = formElementsValidation[el.name]\n if (\n !!validationData &&\n typeof validationData !== 'string' &&\n validationData.type === 'formElements'\n ) {\n if (validationData.formElements && el.elements) {\n memo.push(\n ...getValidationErrors({\n formElementsValidation: validationData.formElements,\n elements: el.elements,\n page,\n idPrefix: `${idPrefix}${el.name}_`,\n }),\n )\n }\n }\n break\n }\n default: {\n const validationMessage = formElementsValidation[el.name]\n if (typeof validationMessage === 'string') {\n memo.push({\n id: `element-container__${idPrefix}${el.name}`,\n label: el.label,\n page,\n errorMessage: validationMessage,\n })\n }\n }\n }\n return memo\n }, [])\n}\n\nconst ValidationErrorsCard = ({\n formElementsValidation,\n currentPage,\n setPageId,\n navigationTopOffset,\n}: {\n formElementsValidation: FormElementsValidation | undefined\n currentPage: FormTypes.PageElement\n setPageId: (pageId: string) => void\n navigationTopOffset: number\n}) => {\n const [isExpanded, expand, contract] = useBooleanState(false)\n\n const form = useFormDefinition()\n\n const pagesWithValidationErrors = React.useMemo(() => {\n if (!formElementsValidation) return []\n const flatErrors = getValidationErrors({\n formElementsValidation,\n elements: form.elements,\n idPrefix: '',\n })\n\n // Organise into pages\n const pages = new Map<\n string,\n {\n page: ValidationErrorMetaData['page']\n errors: ValidationErrorMetaData[]\n }\n >()\n for (const error of flatErrors) {\n if (error.page) {\n // If error belongs to a page\n const existingSetEntry = pages.get(error.page.id)\n const errors = [...(existingSetEntry?.errors || []), error]\n const page = error.page\n\n pages.set(page.id, {\n page,\n errors,\n })\n } else {\n // No page associated with error\n const existingSetEntry = pages.get(NO_PAGE_KEY)\n const errors = [...(existingSetEntry?.errors || []), error]\n pages.set(NO_PAGE_KEY, {\n page: undefined,\n errors,\n })\n }\n }\n return Array.from(pages.values())\n }, [form.elements, formElementsValidation])\n\n return (\n <div className=\"ob-validation-notification-wrapper\">\n <div\n className={clsx(\n 'ob-validation-notification-card cypress-invalid-submit-attempt',\n {\n 'is-clickable': !isExpanded,\n 'is-contracted': !isExpanded,\n 'is-expanded': isExpanded,\n },\n )}\n onClick={!isExpanded ? expand : undefined}\n >\n <div className=\"ob-validation-notification-card-content\">\n <div className=\"ob-validation-notification-card-header-wrapper\">\n <div className=\"ob-validation-notification-card-header-title-wrapper\">\n <MaterialIcon\n className={clsx(\n 'ob-validation-notification-card-header-title-icon ob-validation-color-transition',\n {\n 'has-text-danger': isExpanded,\n 'has-text-white': !isExpanded,\n },\n )}\n >\n error\n </MaterialIcon>\n <p\n className={clsx(\n 'ob-validation-color-transition ob-validation-notification-card-header-title-text',\n {\n 'has-text-danger': isExpanded,\n 'has-text-white': !isExpanded,\n },\n )}\n >\n Validation Errors\n </p>\n </div>\n <div className=\"ob-validation-notification-card-header-collapse-icon-wrapper\">\n {isExpanded ? (\n <IconButton onClick={contract}>\n <MaterialIcon className=\"icon-small\">\n expand_more\n </MaterialIcon>\n </IconButton>\n ) : (\n <IconButton>\n <MaterialIcon className=\"icon-small has-text-white\">\n expand_less\n </MaterialIcon>\n </IconButton>\n )}\n </div>\n </div>\n <div className=\"ob-validation-notification-card-collapse-wrapper\">\n <Collapse in={isExpanded}>\n {pagesWithValidationErrors.map(({ page, errors }, pageIndex) => {\n const isNotFirstPage = pageIndex > 0\n return (\n <React.Fragment key={pageIndex}>\n {page && (\n <p\n className={clsx(\n 'ob-validation-notification-card-page-label ob-validation-color-transition',\n {\n 'is-not-first': isNotFirstPage,\n },\n )}\n >\n {page.label}\n </p>\n )}\n <div className=\"ob-list has-dividers has-borders ob-validation-notification-card-list ob-validation-color-transition\">\n {errors.map(\n ({ errorMessage, label, id }, index, list) => {\n const isFirst = index === 0\n const isLast = index === list.length - 1\n return (\n <div\n key={index}\n className={clsx(\n 'ob-list__item is-clickable ob-validation-notification-card-item',\n {\n 'is-first': isFirst,\n 'is-last': isLast,\n },\n )}\n onClick={() => {\n if (page && page.id !== currentPage.id) {\n setPageId(page.id)\n }\n const element = document.getElementById(id)\n if (element) {\n window.requestAnimationFrame(() => {\n window.scrollTo({\n top:\n element.getBoundingClientRect().top +\n window.scrollY +\n // We allow an offset to cater for any headers\n navigationTopOffset,\n behavior: 'smooth',\n })\n })\n }\n }}\n >\n <div className=\"ob-validation-notification-card-item-text\">\n <p>{label}</p>\n <Tooltip\n title={errorMessage}\n placement=\"left\"\n arrow\n >\n <p className=\"ob-validation-notification-card-item-text-error-message has-text-danger\">\n {errorMessage}\n </p>\n </Tooltip>\n </div>\n <MaterialIcon className=\"has-text-grey icon-small ob-validation-notification-card-item-icon\">\n chevron_right\n </MaterialIcon>\n </div>\n )\n },\n )}\n </div>\n </React.Fragment>\n )\n })}\n </Collapse>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default React.memo(ValidationErrorsCard)\n"]}
|
@@ -83,7 +83,7 @@ function FormElementSwitchContainer(props) {
|
|
83
83
|
if (element.type === 'page' || element.type === 'section') {
|
84
84
|
return null;
|
85
85
|
}
|
86
|
-
return (React.createElement("div", { id: element.id
|
86
|
+
return (React.createElement("div", { id: `element-container__${props.id}`, className: clsx('ob-element cypress-element-container', element.customCssClasses, validationClassName, {
|
87
87
|
'is-hidden': element.isHidden,
|
88
88
|
}), "data-cypress-element-name": element.name, "data-ob-name": element.name },
|
89
89
|
React.createElement(FormElementSwitch, { ...props, isDirty: isDirty, setIsDirty: setIsDirty })));
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"OneBlinkFormElements.js","sourceRoot":"","sources":["../../../src/components/renderer/OneBlinkFormElements.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport clsx from 'clsx'\n\nimport LookupNotification from './LookupNotification'\nimport ReverseGeocode from './ReverseGeocode'\n\nimport FormElementBarcodeScanner from '../../form-elements/FormElementBarcodeScanner'\nimport FormElementEmail from '../../form-elements/FormElementEmail'\nimport FormElementABN from '../../form-elements/FormElementABN'\nimport FormElementBSB from '../../form-elements/FormElementBSB'\nimport FormElementText from '../../form-elements/FormElementText'\nimport FormElementTextarea from '../../form-elements/FormElementTextarea'\nimport FormElementNumber from '../../form-elements/FormElementNumber'\nimport FormElementHeading from '../../form-elements/FormElementHeading'\nimport FormElementHTML from '../../form-elements/FormElementHTML'\nimport FormElementTelephone from '../../form-elements/FormElementTelephone'\nimport FormElementSelect from '../../form-elements/FormElementSelect'\nimport FormElementDate from '../../form-elements/FormElementDate'\nimport FormElementImage from '../../form-elements/FormElementImage'\nimport FormElementDateTime from '../../form-elements/FormElementDateTime'\nimport FormElementTime from '../../form-elements/FormElementTime'\nimport FormElementCalculation from '../../form-elements/FormElementCalculation'\nimport FormElementRadio from '../../form-elements/FormElementRadio'\nimport FormElementAutocomplete from '../../form-elements/FormElementAutocomplete'\nimport FormElementRepeatableSet from '../../form-elements/FormElementRepeatableSet'\nimport FormElementSignature from '../../form-elements/FormElementSignature'\nimport FormElementCheckBoxes from '../../form-elements/FormElementCheckBoxes'\nimport FormElementFiles, {\n stringifyAttachments,\n} from '../../form-elements/FormElementFiles'\nimport FormElementForm from '../../form-elements/FormElementForm'\nimport FormElementSection from '../../form-elements/FormElementSection'\nimport FormElementCamera from '../../form-elements/FormElementCamera'\nimport FormElementSummary from '../../form-elements/FormElementSummary'\nimport FormElementCaptcha from '../../form-elements/FormElementCaptcha'\nimport FormElementLocation, {\n stringifyLocation,\n} from '../../form-elements/FormElementLocation'\nimport FormElementGeoscapeAddress from '../../form-elements/FormElementGeoscapeAddress'\nimport FormElementCompliance from '../../form-elements/FormElementCompliance'\nimport FormElementPointAddress from '../../form-elements/FormElementPointAddress'\nimport FormElementGoogleAddress from '../../form-elements/FormElementGoogleAddress'\nimport FormElementBoolean from '../../form-elements/FormElementBoolean'\nimport FormElementCivicaStreetName from '../../form-elements/FormElementCivicaStreetName'\nimport FormElementCivicaNameRecord from '../../form-elements/FormElementCivicaNameRecord'\nimport FormElementFreshdeskDependentField from '../../form-elements/FormElementFreshdeskDependentField'\nimport FormElementArcGISWebMap from '../../form-elements/FormElementArcGISWebMap'\n\nimport {\n APINSWTypes,\n CivicaTypes,\n FormTypes,\n GeoscapeTypes,\n GoogleTypes,\n MiscTypes,\n PointTypes,\n SubmissionTypes,\n} from '@oneblink/types'\n\nimport { FormSubmissionModelContextProvider } from '../../hooks/useFormSubmissionModelContext'\nimport useBooleanState from '../../hooks/useBooleanState'\nimport { FormElementBinaryStorageValue } from '../../types/attachments'\nimport {\n FormElementConditionallyShown,\n FormElementLookupHandler,\n FormElementsConditionallyShown,\n FormElementsValidation,\n FormElementValidation,\n NestedFormElementValueChangeHandler,\n IsDirtyProps,\n UpdateFormElementsHandler,\n} from '../../types/form'\nimport { attachmentsService } from '@oneblink/apps'\nimport FormElementAPINSWLiquorLicence from '../../form-elements/FormElementAPINSWLiquorLicence'\n\nexport type Props<T extends FormTypes._NestedElementsElement> = {\n formId: number\n elements: FormTypes.FormElement[]\n formElementsConditionallyShown: FormElementsConditionallyShown | undefined\n formElementsValidation: FormElementsValidation | undefined\n displayValidationMessages: boolean\n onChange: NestedFormElementValueChangeHandler\n onLookup: FormElementLookupHandler\n onUpdateFormElements: UpdateFormElementsHandler\n // Props passed by repeatable sets\n isEven?: boolean\n idPrefix: string\n model: SubmissionTypes.S3SubmissionData['submission']\n parentElement: T\n}\n\ninterface FormElementSwitchProps extends IsDirtyProps {\n formId: number\n element: FormTypes.FormElement\n value: unknown | undefined\n formElementValidation: FormElementValidation | undefined\n displayValidationMessage: boolean\n formElementConditionallyShown: FormElementConditionallyShown | undefined\n id: string\n isEven: boolean | undefined\n onChange: NestedFormElementValueChangeHandler\n onLookup: FormElementLookupHandler\n onUpdateFormElements: UpdateFormElementsHandler\n}\n\nfunction OneBlinkFormElements<T extends FormTypes._NestedElementsElement>({\n formId,\n elements,\n isEven,\n idPrefix,\n displayValidationMessages,\n formElementsValidation,\n formElementsConditionallyShown,\n onChange,\n onLookup,\n onUpdateFormElements,\n model,\n parentElement,\n}: Props<T>) {\n return (\n <FormSubmissionModelContextProvider\n elements={parentElement.elements}\n model={model}\n formElementsConditionallyShown={formElementsConditionallyShown}\n >\n {elements.map((element) => {\n if (element.type === 'section') {\n if (formElementsConditionallyShown?.[element.id]?.isHidden) {\n return null\n }\n\n const ariaDescribedBy =\n element.hintPosition === 'BELOW_LABEL' && !!element.hint\n ? `${idPrefix}${element.id}-hint`\n : undefined\n\n const sectionHeaderId = `ob-section-header-${element.id}`\n\n return (\n <div\n key={element.id}\n className={clsx(\n 'ob-element cypress-element-container',\n element.customCssClasses,\n {\n 'is-hidden': element.isHidden,\n },\n )}\n aria-labelledby={sectionHeaderId}\n aria-describedby={ariaDescribedBy}\n role=\"region\"\n >\n <FormElementSection\n formId={formId}\n element={element}\n displayValidationMessages={displayValidationMessages}\n idPrefix={idPrefix}\n formElementsConditionallyShown={formElementsConditionallyShown}\n formElementsValidation={formElementsValidation}\n onChange={onChange}\n onLookup={onLookup}\n onUpdateFormElements={onUpdateFormElements}\n model={model}\n parentElement={parentElement}\n sectionHeaderId={sectionHeaderId}\n />\n </div>\n )\n }\n\n if (\n element.type === 'page' ||\n formElementsConditionallyShown?.[element.name]?.isHidden\n ) {\n return null\n }\n\n return (\n <FormElementSwitchContainer\n key={element.id}\n formId={formId}\n element={element}\n value={model[element.name]}\n displayValidationMessage={displayValidationMessages}\n isEven={isEven}\n id={`${idPrefix}${element.name}`}\n formElementConditionallyShown={\n formElementsConditionallyShown?.[element.name]\n }\n formElementValidation={formElementsValidation?.[element.name]}\n onChange={onChange}\n onLookup={onLookup}\n onUpdateFormElements={onUpdateFormElements}\n />\n )\n })}\n </FormSubmissionModelContextProvider>\n )\n}\n\nexport default React.memo(OneBlinkFormElements)\n\nfunction FormElementSwitchContainer(\n props: Omit<FormElementSwitchProps, 'isDirty' | 'setIsDirty'>,\n) {\n const { element, formElementValidation, displayValidationMessage } = props\n const [isDirty, setIsDirty] = useBooleanState(false)\n\n const getValidationClass = () => {\n if (!('elements' in element)) {\n if (!formElementValidation) {\n return 'ob-element__valid'\n }\n if (isDirty || displayValidationMessage) {\n return 'ob-element__invalid'\n }\n }\n }\n const validationClassName = getValidationClass()\n\n if (element.type === 'page' || element.type === 'section') {\n return null\n }\n\n return (\n <div\n id={element.id}\n className={clsx(\n 'ob-element cypress-element-container',\n element.customCssClasses,\n validationClassName,\n {\n 'is-hidden': element.isHidden,\n },\n )}\n data-cypress-element-name={element.name}\n data-ob-name={element.name}\n >\n <FormElementSwitch {...props} isDirty={isDirty} setIsDirty={setIsDirty} />\n </div>\n )\n}\n\nconst FormElementSwitch = React.memo(function OneBlinkFormElement({\n formId,\n element,\n value,\n displayValidationMessage,\n formElementValidation,\n formElementConditionallyShown,\n isEven,\n id,\n onChange,\n onLookup,\n onUpdateFormElements,\n isDirty,\n setIsDirty,\n}: FormElementSwitchProps & IsDirtyProps) {\n const dirtyProps = React.useMemo(\n () => ({ isDirty, setIsDirty }),\n [isDirty, setIsDirty],\n )\n const conditionallyShownOptionsElement =\n formElementConditionallyShown?.type === 'formElement'\n ? formElementConditionallyShown\n : undefined\n const validationMessage =\n typeof formElementValidation === 'string'\n ? formElementValidation\n : undefined\n const autocompleteAttributes =\n 'autocompleteAttributes' in element\n ? element.autocompleteAttributes?.join(' ')\n : undefined\n switch (element.type) {\n case 'heading': {\n return <FormElementHeading element={element} />\n }\n case 'html': {\n return <FormElementHTML element={element} />\n }\n case 'date': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementDate\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementDate\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'email': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementEmail\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementEmail\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'text': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementText\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementText\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'abn': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementABN\n id={id}\n element={element}\n value={value as MiscTypes.ABNRecord | undefined}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementABN\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'bsb': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementBSB\n id={id}\n formId={formId}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementBSB\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'barcodeScanner': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementBarcodeScanner\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementBarcodeScanner\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'textarea': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementTextarea\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementTextarea\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'number': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementNumber\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementNumber\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'telephone': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementTelephone\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementTelephone\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'autocomplete': {\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementAutocomplete\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementAutocomplete\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptionsElement={conditionallyShownOptionsElement}\n onUpdateFormElements={onUpdateFormElements}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'select': {\n return (\n <LookupNotification\n autoLookupValue={!element.multi ? value : undefined}\n element={element}\n onLookup={onLookup}\n >\n <FormElementSelect\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementSelect\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptionsElement={conditionallyShownOptionsElement}\n onUpdateFormElements={onUpdateFormElements}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'radio': {\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementRadio\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementRadio\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptionsElement={conditionallyShownOptionsElement}\n onUpdateFormElements={onUpdateFormElements}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'draw': {\n return (\n <FormElementSignature\n id={id}\n element={element}\n value={value as FormElementBinaryStorageValue}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementSignature\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n {...dirtyProps}\n />\n )\n }\n case 'calculation': {\n return (\n <FormElementCalculation\n element={element}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCalculation\n >['onChange']\n }\n value={value}\n />\n )\n }\n case 'repeatableSet': {\n return (\n <FormElementRepeatableSet\n formId={formId}\n id={id}\n isEven={!isEven}\n element={element}\n value={\n value as\n | Array<SubmissionTypes.S3SubmissionData['submission']>\n | undefined\n }\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementRepeatableSet\n >['onChange']\n }\n onLookup={onLookup}\n formElementConditionallyShown={formElementConditionallyShown}\n formElementValidation={formElementValidation}\n displayValidationMessage={displayValidationMessage}\n onUpdateFormElements={onUpdateFormElements}\n {...dirtyProps}\n />\n )\n }\n case 'image': {\n return <FormElementImage element={element} />\n }\n case 'datetime': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementDateTime\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementDateTime\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'time': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementTime\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementTime\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'checkboxes': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementCheckBoxes\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCheckBoxes\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptionsElement={conditionallyShownOptionsElement}\n onUpdateFormElements={onUpdateFormElements}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'files': {\n return (\n <LookupNotification\n element={element}\n onLookup={onLookup}\n autoLookupValue={value}\n stringifyAutoLookupValue={\n stringifyAttachments as React.ComponentProps<\n typeof LookupNotification\n >['stringifyAutoLookupValue']\n }\n >\n <FormElementFiles\n id={id}\n element={element}\n value={value as attachmentsService.Attachment[] | undefined}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementFiles\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'infoPage':\n case 'form': {\n return (\n <FormElementForm\n formId={formId}\n id={id}\n element={element}\n value={\n value as SubmissionTypes.S3SubmissionData['submission'] | undefined\n }\n onChange={\n onChange as React.ComponentProps<typeof FormElementForm>['onChange']\n }\n onLookup={onLookup}\n displayValidationMessages={displayValidationMessage}\n formElementValidation={formElementValidation}\n formElementConditionallyShown={formElementConditionallyShown}\n onUpdateFormElements={onUpdateFormElements}\n />\n )\n }\n case 'camera': {\n return (\n <FormElementCamera\n id={id}\n element={element}\n value={value as FormElementBinaryStorageValue}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCamera\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n {...dirtyProps}\n />\n )\n }\n case 'summary': {\n return (\n <FormElementSummary\n element={element}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementSummary\n >['onChange']\n }\n value={value}\n />\n )\n }\n case 'captcha': {\n return (\n <FormElementCaptcha\n value={value as string | undefined}\n element={element}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCaptcha\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n {...dirtyProps}\n />\n )\n }\n case 'location': {\n return (\n <LookupNotification\n autoLookupValue={value}\n stringifyAutoLookupValue={\n stringifyLocation as React.ComponentProps<\n typeof LookupNotification\n >['stringifyAutoLookupValue']\n }\n element={element}\n onLookup={onLookup}\n >\n <ReverseGeocode\n value={value}\n element={element}\n onChange={\n onChange as React.ComponentProps<\n typeof ReverseGeocode\n >['onChange']\n }\n >\n <FormElementLocation\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementLocation\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n {...dirtyProps}\n />\n </ReverseGeocode>\n </LookupNotification>\n )\n }\n case 'geoscapeAddress': {\n const v = value as GeoscapeTypes.GeoscapeAddress | undefined\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementGeoscapeAddress\n id={id}\n formId={formId}\n element={element}\n value={v}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementGeoscapeAddress\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'compliance': {\n return (\n <LookupNotification\n autoLookupValue={\n value ? (value as { value: unknown }).value : undefined\n }\n element={element}\n onLookup={onLookup}\n >\n <FormElementCompliance\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCompliance\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptionsElement={conditionallyShownOptionsElement}\n isEven={isEven}\n onUpdateFormElements={onUpdateFormElements}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'freshdeskDependentField': {\n return (\n <FormElementFreshdeskDependentField\n formId={formId}\n id={id}\n element={element}\n value={\n value as SubmissionTypes.S3SubmissionData['submission'] | undefined\n }\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementFreshdeskDependentField\n >['onChange']\n }\n onLookup={onLookup}\n displayValidationMessages={displayValidationMessage}\n formElementValidation={formElementValidation}\n formElementConditionallyShown={formElementConditionallyShown}\n onUpdateFormElements={onUpdateFormElements}\n />\n )\n }\n case 'pointAddress': {\n const v = value as PointTypes.PointAddress | undefined\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementPointAddress\n id={id}\n formId={formId}\n element={element}\n value={v}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementPointAddress\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'googleAddress': {\n const v = value as GoogleTypes.GoogleMapsAddress | undefined\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementGoogleAddress\n id={id}\n formId={formId}\n element={element}\n value={v}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementGoogleAddress\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'boolean': {\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementBoolean\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementBoolean\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'civicaStreetName': {\n const v = value as CivicaTypes.CivicaStreetName | undefined\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementCivicaStreetName\n id={id}\n formId={formId}\n element={element}\n value={v}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCivicaStreetName\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'civicaNameRecord': {\n return (\n <FormElementCivicaNameRecord\n formId={formId}\n id={id}\n element={element}\n value={\n value as SubmissionTypes.S3SubmissionData['submission'] | undefined\n }\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCivicaNameRecord\n >['onChange']\n }\n onLookup={onLookup}\n displayValidationMessages={displayValidationMessage}\n formElementValidation={formElementValidation}\n formElementConditionallyShown={formElementConditionallyShown}\n onUpdateFormElements={onUpdateFormElements}\n />\n )\n }\n case 'apiNSWLiquorLicence': {\n const v = value as APINSWTypes.LiquorLicenceDetails | undefined\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementAPINSWLiquorLicence\n formId={formId}\n id={id}\n element={element}\n value={v}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementAPINSWLiquorLicence\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'arcGISWebMap': {\n return <FormElementArcGISWebMap id={id} element={element} />\n }\n default: {\n console.warn('Invalid element', element)\n return null\n }\n }\n})\n"]}
|
1
|
+
{"version":3,"file":"OneBlinkFormElements.js","sourceRoot":"","sources":["../../../src/components/renderer/OneBlinkFormElements.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport clsx from 'clsx'\n\nimport LookupNotification from './LookupNotification'\nimport ReverseGeocode from './ReverseGeocode'\n\nimport FormElementBarcodeScanner from '../../form-elements/FormElementBarcodeScanner'\nimport FormElementEmail from '../../form-elements/FormElementEmail'\nimport FormElementABN from '../../form-elements/FormElementABN'\nimport FormElementBSB from '../../form-elements/FormElementBSB'\nimport FormElementText from '../../form-elements/FormElementText'\nimport FormElementTextarea from '../../form-elements/FormElementTextarea'\nimport FormElementNumber from '../../form-elements/FormElementNumber'\nimport FormElementHeading from '../../form-elements/FormElementHeading'\nimport FormElementHTML from '../../form-elements/FormElementHTML'\nimport FormElementTelephone from '../../form-elements/FormElementTelephone'\nimport FormElementSelect from '../../form-elements/FormElementSelect'\nimport FormElementDate from '../../form-elements/FormElementDate'\nimport FormElementImage from '../../form-elements/FormElementImage'\nimport FormElementDateTime from '../../form-elements/FormElementDateTime'\nimport FormElementTime from '../../form-elements/FormElementTime'\nimport FormElementCalculation from '../../form-elements/FormElementCalculation'\nimport FormElementRadio from '../../form-elements/FormElementRadio'\nimport FormElementAutocomplete from '../../form-elements/FormElementAutocomplete'\nimport FormElementRepeatableSet from '../../form-elements/FormElementRepeatableSet'\nimport FormElementSignature from '../../form-elements/FormElementSignature'\nimport FormElementCheckBoxes from '../../form-elements/FormElementCheckBoxes'\nimport FormElementFiles, {\n stringifyAttachments,\n} from '../../form-elements/FormElementFiles'\nimport FormElementForm from '../../form-elements/FormElementForm'\nimport FormElementSection from '../../form-elements/FormElementSection'\nimport FormElementCamera from '../../form-elements/FormElementCamera'\nimport FormElementSummary from '../../form-elements/FormElementSummary'\nimport FormElementCaptcha from '../../form-elements/FormElementCaptcha'\nimport FormElementLocation, {\n stringifyLocation,\n} from '../../form-elements/FormElementLocation'\nimport FormElementGeoscapeAddress from '../../form-elements/FormElementGeoscapeAddress'\nimport FormElementCompliance from '../../form-elements/FormElementCompliance'\nimport FormElementPointAddress from '../../form-elements/FormElementPointAddress'\nimport FormElementGoogleAddress from '../../form-elements/FormElementGoogleAddress'\nimport FormElementBoolean from '../../form-elements/FormElementBoolean'\nimport FormElementCivicaStreetName from '../../form-elements/FormElementCivicaStreetName'\nimport FormElementCivicaNameRecord from '../../form-elements/FormElementCivicaNameRecord'\nimport FormElementFreshdeskDependentField from '../../form-elements/FormElementFreshdeskDependentField'\nimport FormElementArcGISWebMap from '../../form-elements/FormElementArcGISWebMap'\n\nimport {\n APINSWTypes,\n CivicaTypes,\n FormTypes,\n GeoscapeTypes,\n GoogleTypes,\n MiscTypes,\n PointTypes,\n SubmissionTypes,\n} from '@oneblink/types'\n\nimport { FormSubmissionModelContextProvider } from '../../hooks/useFormSubmissionModelContext'\nimport useBooleanState from '../../hooks/useBooleanState'\nimport { FormElementBinaryStorageValue } from '../../types/attachments'\nimport {\n FormElementConditionallyShown,\n FormElementLookupHandler,\n FormElementsConditionallyShown,\n FormElementsValidation,\n FormElementValidation,\n NestedFormElementValueChangeHandler,\n IsDirtyProps,\n UpdateFormElementsHandler,\n} from '../../types/form'\nimport { attachmentsService } from '@oneblink/apps'\nimport FormElementAPINSWLiquorLicence from '../../form-elements/FormElementAPINSWLiquorLicence'\n\nexport type Props<T extends FormTypes._NestedElementsElement> = {\n formId: number\n elements: FormTypes.FormElement[]\n formElementsConditionallyShown: FormElementsConditionallyShown | undefined\n formElementsValidation: FormElementsValidation | undefined\n displayValidationMessages: boolean\n onChange: NestedFormElementValueChangeHandler\n onLookup: FormElementLookupHandler\n onUpdateFormElements: UpdateFormElementsHandler\n // Props passed by repeatable sets\n isEven?: boolean\n idPrefix: string\n model: SubmissionTypes.S3SubmissionData['submission']\n parentElement: T\n}\n\ninterface FormElementSwitchProps extends IsDirtyProps {\n formId: number\n element: FormTypes.FormElement\n value: unknown | undefined\n formElementValidation: FormElementValidation | undefined\n displayValidationMessage: boolean\n formElementConditionallyShown: FormElementConditionallyShown | undefined\n id: string\n isEven: boolean | undefined\n onChange: NestedFormElementValueChangeHandler\n onLookup: FormElementLookupHandler\n onUpdateFormElements: UpdateFormElementsHandler\n}\n\nfunction OneBlinkFormElements<T extends FormTypes._NestedElementsElement>({\n formId,\n elements,\n isEven,\n idPrefix,\n displayValidationMessages,\n formElementsValidation,\n formElementsConditionallyShown,\n onChange,\n onLookup,\n onUpdateFormElements,\n model,\n parentElement,\n}: Props<T>) {\n return (\n <FormSubmissionModelContextProvider\n elements={parentElement.elements}\n model={model}\n formElementsConditionallyShown={formElementsConditionallyShown}\n >\n {elements.map((element) => {\n if (element.type === 'section') {\n if (formElementsConditionallyShown?.[element.id]?.isHidden) {\n return null\n }\n\n const ariaDescribedBy =\n element.hintPosition === 'BELOW_LABEL' && !!element.hint\n ? `${idPrefix}${element.id}-hint`\n : undefined\n\n const sectionHeaderId = `ob-section-header-${element.id}`\n\n return (\n <div\n key={element.id}\n className={clsx(\n 'ob-element cypress-element-container',\n element.customCssClasses,\n {\n 'is-hidden': element.isHidden,\n },\n )}\n aria-labelledby={sectionHeaderId}\n aria-describedby={ariaDescribedBy}\n role=\"region\"\n >\n <FormElementSection\n formId={formId}\n element={element}\n displayValidationMessages={displayValidationMessages}\n idPrefix={idPrefix}\n formElementsConditionallyShown={formElementsConditionallyShown}\n formElementsValidation={formElementsValidation}\n onChange={onChange}\n onLookup={onLookup}\n onUpdateFormElements={onUpdateFormElements}\n model={model}\n parentElement={parentElement}\n sectionHeaderId={sectionHeaderId}\n />\n </div>\n )\n }\n\n if (\n element.type === 'page' ||\n formElementsConditionallyShown?.[element.name]?.isHidden\n ) {\n return null\n }\n\n return (\n <FormElementSwitchContainer\n key={element.id}\n formId={formId}\n element={element}\n value={model[element.name]}\n displayValidationMessage={displayValidationMessages}\n isEven={isEven}\n id={`${idPrefix}${element.name}`}\n formElementConditionallyShown={\n formElementsConditionallyShown?.[element.name]\n }\n formElementValidation={formElementsValidation?.[element.name]}\n onChange={onChange}\n onLookup={onLookup}\n onUpdateFormElements={onUpdateFormElements}\n />\n )\n })}\n </FormSubmissionModelContextProvider>\n )\n}\n\nexport default React.memo(OneBlinkFormElements)\n\nfunction FormElementSwitchContainer(\n props: Omit<FormElementSwitchProps, 'isDirty' | 'setIsDirty'>,\n) {\n const { element, formElementValidation, displayValidationMessage } = props\n const [isDirty, setIsDirty] = useBooleanState(false)\n\n const getValidationClass = () => {\n if (!('elements' in element)) {\n if (!formElementValidation) {\n return 'ob-element__valid'\n }\n if (isDirty || displayValidationMessage) {\n return 'ob-element__invalid'\n }\n }\n }\n const validationClassName = getValidationClass()\n\n if (element.type === 'page' || element.type === 'section') {\n return null\n }\n\n return (\n <div\n id={`element-container__${props.id}`}\n className={clsx(\n 'ob-element cypress-element-container',\n element.customCssClasses,\n validationClassName,\n {\n 'is-hidden': element.isHidden,\n },\n )}\n data-cypress-element-name={element.name}\n data-ob-name={element.name}\n >\n <FormElementSwitch {...props} isDirty={isDirty} setIsDirty={setIsDirty} />\n </div>\n )\n}\n\nconst FormElementSwitch = React.memo(function OneBlinkFormElement({\n formId,\n element,\n value,\n displayValidationMessage,\n formElementValidation,\n formElementConditionallyShown,\n isEven,\n id,\n onChange,\n onLookup,\n onUpdateFormElements,\n isDirty,\n setIsDirty,\n}: FormElementSwitchProps & IsDirtyProps) {\n const dirtyProps = React.useMemo(\n () => ({ isDirty, setIsDirty }),\n [isDirty, setIsDirty],\n )\n const conditionallyShownOptionsElement =\n formElementConditionallyShown?.type === 'formElement'\n ? formElementConditionallyShown\n : undefined\n const validationMessage =\n typeof formElementValidation === 'string'\n ? formElementValidation\n : undefined\n const autocompleteAttributes =\n 'autocompleteAttributes' in element\n ? element.autocompleteAttributes?.join(' ')\n : undefined\n switch (element.type) {\n case 'heading': {\n return <FormElementHeading element={element} />\n }\n case 'html': {\n return <FormElementHTML element={element} />\n }\n case 'date': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementDate\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementDate\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'email': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementEmail\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementEmail\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'text': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementText\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementText\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'abn': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementABN\n id={id}\n element={element}\n value={value as MiscTypes.ABNRecord | undefined}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementABN\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'bsb': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementBSB\n id={id}\n formId={formId}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementBSB\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'barcodeScanner': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementBarcodeScanner\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementBarcodeScanner\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'textarea': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementTextarea\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementTextarea\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'number': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementNumber\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementNumber\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'telephone': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementTelephone\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementTelephone\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'autocomplete': {\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementAutocomplete\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementAutocomplete\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptionsElement={conditionallyShownOptionsElement}\n onUpdateFormElements={onUpdateFormElements}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'select': {\n return (\n <LookupNotification\n autoLookupValue={!element.multi ? value : undefined}\n element={element}\n onLookup={onLookup}\n >\n <FormElementSelect\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementSelect\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptionsElement={conditionallyShownOptionsElement}\n onUpdateFormElements={onUpdateFormElements}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'radio': {\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementRadio\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementRadio\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptionsElement={conditionallyShownOptionsElement}\n onUpdateFormElements={onUpdateFormElements}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'draw': {\n return (\n <FormElementSignature\n id={id}\n element={element}\n value={value as FormElementBinaryStorageValue}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementSignature\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n {...dirtyProps}\n />\n )\n }\n case 'calculation': {\n return (\n <FormElementCalculation\n element={element}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCalculation\n >['onChange']\n }\n value={value}\n />\n )\n }\n case 'repeatableSet': {\n return (\n <FormElementRepeatableSet\n formId={formId}\n id={id}\n isEven={!isEven}\n element={element}\n value={\n value as\n | Array<SubmissionTypes.S3SubmissionData['submission']>\n | undefined\n }\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementRepeatableSet\n >['onChange']\n }\n onLookup={onLookup}\n formElementConditionallyShown={formElementConditionallyShown}\n formElementValidation={formElementValidation}\n displayValidationMessage={displayValidationMessage}\n onUpdateFormElements={onUpdateFormElements}\n {...dirtyProps}\n />\n )\n }\n case 'image': {\n return <FormElementImage element={element} />\n }\n case 'datetime': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementDateTime\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementDateTime\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'time': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementTime\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementTime\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'checkboxes': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementCheckBoxes\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCheckBoxes\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptionsElement={conditionallyShownOptionsElement}\n onUpdateFormElements={onUpdateFormElements}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'files': {\n return (\n <LookupNotification\n element={element}\n onLookup={onLookup}\n autoLookupValue={value}\n stringifyAutoLookupValue={\n stringifyAttachments as React.ComponentProps<\n typeof LookupNotification\n >['stringifyAutoLookupValue']\n }\n >\n <FormElementFiles\n id={id}\n element={element}\n value={value as attachmentsService.Attachment[] | undefined}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementFiles\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'infoPage':\n case 'form': {\n return (\n <FormElementForm\n formId={formId}\n id={id}\n element={element}\n value={\n value as SubmissionTypes.S3SubmissionData['submission'] | undefined\n }\n onChange={\n onChange as React.ComponentProps<typeof FormElementForm>['onChange']\n }\n onLookup={onLookup}\n displayValidationMessages={displayValidationMessage}\n formElementValidation={formElementValidation}\n formElementConditionallyShown={formElementConditionallyShown}\n onUpdateFormElements={onUpdateFormElements}\n />\n )\n }\n case 'camera': {\n return (\n <FormElementCamera\n id={id}\n element={element}\n value={value as FormElementBinaryStorageValue}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCamera\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n {...dirtyProps}\n />\n )\n }\n case 'summary': {\n return (\n <FormElementSummary\n element={element}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementSummary\n >['onChange']\n }\n value={value}\n />\n )\n }\n case 'captcha': {\n return (\n <FormElementCaptcha\n value={value as string | undefined}\n element={element}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCaptcha\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n {...dirtyProps}\n />\n )\n }\n case 'location': {\n return (\n <LookupNotification\n autoLookupValue={value}\n stringifyAutoLookupValue={\n stringifyLocation as React.ComponentProps<\n typeof LookupNotification\n >['stringifyAutoLookupValue']\n }\n element={element}\n onLookup={onLookup}\n >\n <ReverseGeocode\n value={value}\n element={element}\n onChange={\n onChange as React.ComponentProps<\n typeof ReverseGeocode\n >['onChange']\n }\n >\n <FormElementLocation\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementLocation\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n {...dirtyProps}\n />\n </ReverseGeocode>\n </LookupNotification>\n )\n }\n case 'geoscapeAddress': {\n const v = value as GeoscapeTypes.GeoscapeAddress | undefined\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementGeoscapeAddress\n id={id}\n formId={formId}\n element={element}\n value={v}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementGeoscapeAddress\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'compliance': {\n return (\n <LookupNotification\n autoLookupValue={\n value ? (value as { value: unknown }).value : undefined\n }\n element={element}\n onLookup={onLookup}\n >\n <FormElementCompliance\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCompliance\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptionsElement={conditionallyShownOptionsElement}\n isEven={isEven}\n onUpdateFormElements={onUpdateFormElements}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'freshdeskDependentField': {\n return (\n <FormElementFreshdeskDependentField\n formId={formId}\n id={id}\n element={element}\n value={\n value as SubmissionTypes.S3SubmissionData['submission'] | undefined\n }\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementFreshdeskDependentField\n >['onChange']\n }\n onLookup={onLookup}\n displayValidationMessages={displayValidationMessage}\n formElementValidation={formElementValidation}\n formElementConditionallyShown={formElementConditionallyShown}\n onUpdateFormElements={onUpdateFormElements}\n />\n )\n }\n case 'pointAddress': {\n const v = value as PointTypes.PointAddress | undefined\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementPointAddress\n id={id}\n formId={formId}\n element={element}\n value={v}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementPointAddress\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'googleAddress': {\n const v = value as GoogleTypes.GoogleMapsAddress | undefined\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementGoogleAddress\n id={id}\n formId={formId}\n element={element}\n value={v}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementGoogleAddress\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'boolean': {\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementBoolean\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementBoolean\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'civicaStreetName': {\n const v = value as CivicaTypes.CivicaStreetName | undefined\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementCivicaStreetName\n id={id}\n formId={formId}\n element={element}\n value={v}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCivicaStreetName\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'civicaNameRecord': {\n return (\n <FormElementCivicaNameRecord\n formId={formId}\n id={id}\n element={element}\n value={\n value as SubmissionTypes.S3SubmissionData['submission'] | undefined\n }\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCivicaNameRecord\n >['onChange']\n }\n onLookup={onLookup}\n displayValidationMessages={displayValidationMessage}\n formElementValidation={formElementValidation}\n formElementConditionallyShown={formElementConditionallyShown}\n onUpdateFormElements={onUpdateFormElements}\n />\n )\n }\n case 'apiNSWLiquorLicence': {\n const v = value as APINSWTypes.LiquorLicenceDetails | undefined\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementAPINSWLiquorLicence\n formId={formId}\n id={id}\n element={element}\n value={v}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementAPINSWLiquorLicence\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n autocompleteAttributes={autocompleteAttributes}\n {...dirtyProps}\n />\n </LookupNotification>\n )\n }\n case 'arcGISWebMap': {\n return <FormElementArcGISWebMap id={id} element={element} />\n }\n default: {\n console.warn('Invalid element', element)\n return null\n }\n }\n})\n"]}
|
@@ -31,6 +31,8 @@ const DropdownMenu = ({ element, onRemove, onDownload, onRetry, attachmentUrl, }
|
|
31
31
|
display: 'flex',
|
32
32
|
alignItems: 'center',
|
33
33
|
gap: 2,
|
34
|
+
}, onClick: () => {
|
35
|
+
hideMore();
|
34
36
|
} },
|
35
37
|
React.createElement("span", null, "Open"),
|
36
38
|
React.createElement(MaterialIcon, { className: "icon-small" }, "open_in_new"))),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DropdownMenu.js","sourceRoot":"","sources":["../../../../src/components/renderer/attachments/DropdownMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,eAAe,MAAM,gCAAgC,CAAA;AAC5D,OAAO,sBAAsB,MAAM,uCAAuC,CAAA;AAC1E,OAAO,YAAY,MAAM,oBAAoB,CAAA;AAU7C,MAAM,YAAY,GAAG,CAAC,EACpB,OAAO,EACP,QAAQ,EACR,UAAU,EACV,OAAO,EACP,aAAa,GACP,EAAE,EAAE;IACV,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACtC,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IAElE,sBAAsB,CACpB,WAAW,EACX,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACrB,IAAI,aAAa,EAAE;YACjB,QAAQ,EAAE,CAAA;SACX;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAC9B,CAAA;IAED,OAAO,CACL,6BACE,SAAS,EAAE,IAAI,CAAC,kCAAkC,EAAE;YAClD,WAAW,EAAE,aAAa;SAC3B,CAAC,EACF,GAAG,EAAE,WAAW;QAEhB,6BAAK,SAAS,EAAC,kBAAkB;YAC/B,gCACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,uDAAuD,mBACnD,MAAM,mBACN,eAAe,EAC7B,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;gBAE5C,oBAAC,YAAY,IAAC,SAAS,EAAC,qBAAqB,gBAAyB,CAC/D,CACL;QACN,6BAAK,SAAS,EAAC,eAAe,EAAC,IAAI,EAAC,MAAM;YACxC,6BAAK,SAAS,EAAC,kBAAkB;gBAC9B,OAAO,IAAI,CACV,2BACE,SAAS,EAAC,yCAAyC,EACnD,OAAO,EAAE,GAAG,EAAE;wBACZ,QAAQ,EAAE,CAAA;wBACV,OAAO,EAAE,CAAA;oBACX,CAAC,EACD,IAAI,EAAC,UAAU,YAGb,CACL;gBACA,UAAU,IAAI,CACb,2BACE,SAAS,EAAC,4CAA4C,EACtD,OAAO,EAAE,GAAG,EAAE;wBACZ,QAAQ,EAAE,CAAA;wBACV,UAAU,EAAE,CAAA;oBACd,CAAC,EACD,IAAI,EAAC,UAAU,eAGb,CACL;gBACA,aAAa,IAAI,CAChB,2BACE,IAAI,EAAE,aAAa,EACnB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,YAAY,EAChB,SAAS,EAAC,wCAAwC,EAClD,KAAK,EAAE;wBACL,OAAO,EAAE,MAAM;wBACf,UAAU,EAAE,QAAQ;wBACpB,GAAG,EAAE,CAAC;qBACP;oBAED,yCAAiB;oBACjB,oBAAC,YAAY,IAAC,SAAS,EAAC,YAAY,kBAA2B,CAC7D,CACL;gBACD,2BACE,SAAS,EAAE,IAAI,CAAC,0CAA0C,EAAE;wBAC1D,8BAA8B,EAAE,OAAO,CAAC,QAAQ;qBACjD,CAAC,EACF,OAAO,EAAE,GAAG,EAAE;wBACZ,QAAQ,EAAE,CAAA;wBACV,QAAQ,EAAE,CAAA;oBACZ,CAAC,EACD,IAAI,EAAC,UAAU,aAGb,CACA,CACF,CACF,CACP,CAAA;AACH,CAAC,CAAA;AAED,eAAe,KAAK,CAAC,IAAI,CAAQ,YAAY,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport clsx from 'clsx'\nimport { FormTypes } from '@oneblink/types'\nimport useBooleanState from '../../../hooks/useBooleanState'\nimport useClickOutsideElement from '../../../hooks/useClickOutsideElement'\nimport MaterialIcon from '../../MaterialIcon'\n\ninterface Props {\n element: FormTypes.FilesElement\n onRemove: () => void\n onDownload?: () => void\n onRetry?: () => void\n attachmentUrl: string | null | undefined\n}\n\nconst DropdownMenu = ({\n element,\n onRemove,\n onDownload,\n onRetry,\n attachmentUrl,\n}: Props) => {\n const dropDownRef = React.useRef(null)\n const [isShowingMore, showMore, hideMore] = useBooleanState(false)\n\n useClickOutsideElement(\n dropDownRef,\n React.useCallback(() => {\n if (isShowingMore) {\n hideMore()\n }\n }, [hideMore, isShowingMore]),\n )\n\n return (\n <div\n className={clsx('dropdown is-right ob-files__menu', {\n 'is-active': isShowingMore,\n })}\n ref={dropDownRef}\n >\n <div className=\"dropdown-trigger\">\n <button\n type=\"button\"\n className=\"button ob-files__menu-button cypress-file-menu-button\"\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\"\n onClick={isShowingMore ? hideMore : showMore}\n >\n <MaterialIcon className=\"ob-files__menu-icon\">more_vert</MaterialIcon>\n </button>\n </div>\n <div className=\"dropdown-menu\" role=\"menu\">\n <div className=\"dropdown-content\">\n {onRetry && (\n <a\n className=\"dropdown-item cypress-file-retry-button\"\n onClick={() => {\n hideMore()\n onRetry()\n }}\n role=\"menuitem\"\n >\n Retry\n </a>\n )}\n {onDownload && (\n <a\n className=\"dropdown-item cypress-file-download-button\"\n onClick={() => {\n hideMore()\n onDownload()\n }}\n role=\"menuitem\"\n >\n Download\n </a>\n )}\n {attachmentUrl && (\n <a\n href={attachmentUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"dropdown-item cypress-file-open-button\"\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 2,\n }}\n >\n <span>Open</span>\n <MaterialIcon className=\"icon-small\">open_in_new</MaterialIcon>\n </a>\n )}\n <a\n className={clsx('dropdown-item cypress-file-remove-button', {\n 'ob-files__menu-remove-hidden': element.readOnly,\n })}\n onClick={() => {\n hideMore()\n onRemove()\n }}\n role=\"menuitem\"\n >\n Remove\n </a>\n </div>\n </div>\n </div>\n )\n}\n\nexport default React.memo<Props>(DropdownMenu)\n"]}
|
1
|
+
{"version":3,"file":"DropdownMenu.js","sourceRoot":"","sources":["../../../../src/components/renderer/attachments/DropdownMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,eAAe,MAAM,gCAAgC,CAAA;AAC5D,OAAO,sBAAsB,MAAM,uCAAuC,CAAA;AAC1E,OAAO,YAAY,MAAM,oBAAoB,CAAA;AAU7C,MAAM,YAAY,GAAG,CAAC,EACpB,OAAO,EACP,QAAQ,EACR,UAAU,EACV,OAAO,EACP,aAAa,GACP,EAAE,EAAE;IACV,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACtC,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IAElE,sBAAsB,CACpB,WAAW,EACX,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACrB,IAAI,aAAa,EAAE;YACjB,QAAQ,EAAE,CAAA;SACX;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAC9B,CAAA;IAED,OAAO,CACL,6BACE,SAAS,EAAE,IAAI,CAAC,kCAAkC,EAAE;YAClD,WAAW,EAAE,aAAa;SAC3B,CAAC,EACF,GAAG,EAAE,WAAW;QAEhB,6BAAK,SAAS,EAAC,kBAAkB;YAC/B,gCACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,uDAAuD,mBACnD,MAAM,mBACN,eAAe,EAC7B,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;gBAE5C,oBAAC,YAAY,IAAC,SAAS,EAAC,qBAAqB,gBAAyB,CAC/D,CACL;QACN,6BAAK,SAAS,EAAC,eAAe,EAAC,IAAI,EAAC,MAAM;YACxC,6BAAK,SAAS,EAAC,kBAAkB;gBAC9B,OAAO,IAAI,CACV,2BACE,SAAS,EAAC,yCAAyC,EACnD,OAAO,EAAE,GAAG,EAAE;wBACZ,QAAQ,EAAE,CAAA;wBACV,OAAO,EAAE,CAAA;oBACX,CAAC,EACD,IAAI,EAAC,UAAU,YAGb,CACL;gBACA,UAAU,IAAI,CACb,2BACE,SAAS,EAAC,4CAA4C,EACtD,OAAO,EAAE,GAAG,EAAE;wBACZ,QAAQ,EAAE,CAAA;wBACV,UAAU,EAAE,CAAA;oBACd,CAAC,EACD,IAAI,EAAC,UAAU,eAGb,CACL;gBACA,aAAa,IAAI,CAChB,2BACE,IAAI,EAAE,aAAa,EACnB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,YAAY,EAChB,SAAS,EAAC,wCAAwC,EAClD,KAAK,EAAE;wBACL,OAAO,EAAE,MAAM;wBACf,UAAU,EAAE,QAAQ;wBACpB,GAAG,EAAE,CAAC;qBACP,EACD,OAAO,EAAE,GAAG,EAAE;wBACZ,QAAQ,EAAE,CAAA;oBACZ,CAAC;oBAED,yCAAiB;oBACjB,oBAAC,YAAY,IAAC,SAAS,EAAC,YAAY,kBAA2B,CAC7D,CACL;gBACD,2BACE,SAAS,EAAE,IAAI,CAAC,0CAA0C,EAAE;wBAC1D,8BAA8B,EAAE,OAAO,CAAC,QAAQ;qBACjD,CAAC,EACF,OAAO,EAAE,GAAG,EAAE;wBACZ,QAAQ,EAAE,CAAA;wBACV,QAAQ,EAAE,CAAA;oBACZ,CAAC,EACD,IAAI,EAAC,UAAU,aAGb,CACA,CACF,CACF,CACP,CAAA;AACH,CAAC,CAAA;AAED,eAAe,KAAK,CAAC,IAAI,CAAQ,YAAY,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport clsx from 'clsx'\nimport { FormTypes } from '@oneblink/types'\nimport useBooleanState from '../../../hooks/useBooleanState'\nimport useClickOutsideElement from '../../../hooks/useClickOutsideElement'\nimport MaterialIcon from '../../MaterialIcon'\n\ninterface Props {\n element: FormTypes.FilesElement\n onRemove: () => void\n onDownload?: () => void\n onRetry?: () => void\n attachmentUrl: string | null | undefined\n}\n\nconst DropdownMenu = ({\n element,\n onRemove,\n onDownload,\n onRetry,\n attachmentUrl,\n}: Props) => {\n const dropDownRef = React.useRef(null)\n const [isShowingMore, showMore, hideMore] = useBooleanState(false)\n\n useClickOutsideElement(\n dropDownRef,\n React.useCallback(() => {\n if (isShowingMore) {\n hideMore()\n }\n }, [hideMore, isShowingMore]),\n )\n\n return (\n <div\n className={clsx('dropdown is-right ob-files__menu', {\n 'is-active': isShowingMore,\n })}\n ref={dropDownRef}\n >\n <div className=\"dropdown-trigger\">\n <button\n type=\"button\"\n className=\"button ob-files__menu-button cypress-file-menu-button\"\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\"\n onClick={isShowingMore ? hideMore : showMore}\n >\n <MaterialIcon className=\"ob-files__menu-icon\">more_vert</MaterialIcon>\n </button>\n </div>\n <div className=\"dropdown-menu\" role=\"menu\">\n <div className=\"dropdown-content\">\n {onRetry && (\n <a\n className=\"dropdown-item cypress-file-retry-button\"\n onClick={() => {\n hideMore()\n onRetry()\n }}\n role=\"menuitem\"\n >\n Retry\n </a>\n )}\n {onDownload && (\n <a\n className=\"dropdown-item cypress-file-download-button\"\n onClick={() => {\n hideMore()\n onDownload()\n }}\n role=\"menuitem\"\n >\n Download\n </a>\n )}\n {attachmentUrl && (\n <a\n href={attachmentUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"dropdown-item cypress-file-open-button\"\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 2,\n }}\n onClick={() => {\n hideMore()\n }}\n >\n <span>Open</span>\n <MaterialIcon className=\"icon-small\">open_in_new</MaterialIcon>\n </a>\n )}\n <a\n className={clsx('dropdown-item cypress-file-remove-button', {\n 'ob-files__menu-remove-hidden': element.readOnly,\n })}\n onClick={() => {\n hideMore()\n onRemove()\n }}\n role=\"menuitem\"\n >\n Remove\n </a>\n </div>\n </div>\n </div>\n )\n}\n\nexport default React.memo<Props>(DropdownMenu)\n"]}
|
@@ -2,9 +2,9 @@ $validation-errors-border-radius: 8px;
|
|
2
2
|
|
3
3
|
.ob-validation-notification-wrapper {
|
4
4
|
position: fixed;
|
5
|
-
bottom:
|
6
|
-
right:
|
7
|
-
z-index:
|
5
|
+
bottom: $size-6;
|
6
|
+
right: $size-6;
|
7
|
+
z-index: 30;
|
8
8
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
9
9
|
transition-duration: 300ms;
|
10
10
|
}
|
@@ -31,7 +31,7 @@ $validation-errors-border-radius: 8px;
|
|
31
31
|
box-shadow: 0 0 0 0px rgba(255, 0, 0, 0.4);
|
32
32
|
}
|
33
33
|
100% {
|
34
|
-
box-shadow: 0 0 0
|
34
|
+
box-shadow: 0 0 0 $size-6 rgba(255, 0, 0, 0);
|
35
35
|
}
|
36
36
|
}
|
37
37
|
}
|
@@ -52,12 +52,12 @@ $validation-errors-border-radius: 8px;
|
|
52
52
|
transition-property: padding;
|
53
53
|
transition-duration: inherit;
|
54
54
|
transition-timing-function: inherit;
|
55
|
-
padding:
|
56
|
-
padding-bottom:
|
55
|
+
padding: $size-6;
|
56
|
+
padding-bottom: $size-4;
|
57
57
|
}
|
58
58
|
.is-contracted .ob-validation-notification-card-content {
|
59
|
-
padding-top:
|
60
|
-
padding-bottom:
|
59
|
+
padding-top: $size-8;
|
60
|
+
padding-bottom: $size-8;
|
61
61
|
}
|
62
62
|
|
63
63
|
// Card Content Header
|
@@ -78,7 +78,7 @@ $validation-errors-border-radius: 8px;
|
|
78
78
|
}
|
79
79
|
|
80
80
|
.ob-validation-notification-card-header-title-icon {
|
81
|
-
margin-right:
|
81
|
+
margin-right: $size-8;
|
82
82
|
font-size: 22px;
|
83
83
|
}
|
84
84
|
|
@@ -113,10 +113,10 @@ $validation-errors-border-radius: 8px;
|
|
113
113
|
font-size: 0.875rem;
|
114
114
|
}
|
115
115
|
.ob-validation-notification-card-page-label.is-not-first {
|
116
|
-
margin-top:
|
116
|
+
margin-top: $size-8;
|
117
117
|
}
|
118
118
|
.ob-validation-notification-card-list {
|
119
|
-
margin-top:
|
119
|
+
margin-top: $size-8;
|
120
120
|
border-radius: $validation-errors-border-radius;
|
121
121
|
}
|
122
122
|
|
@@ -125,7 +125,7 @@ $validation-errors-border-radius: 8px;
|
|
125
125
|
display: flex;
|
126
126
|
justify-content: space-between;
|
127
127
|
align-items: center;
|
128
|
-
padding:
|
128
|
+
padding: $size-8;
|
129
129
|
}
|
130
130
|
.ob-validation-notification-card-item.is-first {
|
131
131
|
border-top-left-radius: $validation-errors-border-radius;
|
@@ -146,7 +146,7 @@ $validation-errors-border-radius: 8px;
|
|
146
146
|
}
|
147
147
|
|
148
148
|
.ob-validation-notification-card-item-icon {
|
149
|
-
margin-left:
|
149
|
+
margin-left: $size-8;
|
150
150
|
}
|
151
151
|
|
152
152
|
// Below desktop
|
@@ -160,16 +160,8 @@ $validation-errors-border-radius: 8px;
|
|
160
160
|
|
161
161
|
// Mobile size
|
162
162
|
@media only screen and (max-width: $tablet) {
|
163
|
-
.ob-bottom-navigation__content {
|
164
|
-
.is-showing-pages {
|
165
|
-
.ob-validation-notification-wrapper {
|
166
|
-
margin-bottom: 7.5rem;
|
167
|
-
}
|
168
|
-
}
|
169
|
-
}
|
170
|
-
|
171
163
|
.ob-validation-notification-wrapper {
|
172
|
-
left:
|
164
|
+
left: $size-6;
|
173
165
|
}
|
174
166
|
|
175
167
|
.is-contracted .ob-validation-notification-card-collapse-wrapper {
|
package/dist/styles.css
CHANGED
@@ -9859,7 +9859,7 @@ textarea:disabled {
|
|
9859
9859
|
position: fixed;
|
9860
9860
|
bottom: 1rem;
|
9861
9861
|
right: 1rem;
|
9862
|
-
z-index:
|
9862
|
+
z-index: 30;
|
9863
9863
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
9864
9864
|
transition-duration: 300ms;
|
9865
9865
|
}
|
@@ -9887,7 +9887,7 @@ textarea:disabled {
|
|
9887
9887
|
box-shadow: 0 0 0 0px rgba(255, 0, 0, 0.4);
|
9888
9888
|
}
|
9889
9889
|
100% {
|
9890
|
-
box-shadow: 0 0 0
|
9890
|
+
box-shadow: 0 0 0 1rem rgba(255, 0, 0, 0);
|
9891
9891
|
}
|
9892
9892
|
}
|
9893
9893
|
|
@@ -10009,9 +10009,6 @@ textarea:disabled {
|
|
10009
10009
|
}
|
10010
10010
|
}
|
10011
10011
|
@media only screen and (max-width: 769px) {
|
10012
|
-
.ob-bottom-navigation__content .is-showing-pages .ob-validation-notification-wrapper {
|
10013
|
-
margin-bottom: 7.5rem;
|
10014
|
-
}
|
10015
10012
|
.ob-validation-notification-wrapper {
|
10016
10013
|
left: 1rem;
|
10017
10014
|
}
|
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": "6.9.0-beta.
|
4
|
+
"version": "6.9.0-beta.6",
|
5
5
|
"author": "OneBlink <developers@oneblink.io> (https://oneblink.io)",
|
6
6
|
"bugs": {
|
7
7
|
"url": "https://github.com/oneblink/apps-react/issues"
|