@oneblink/apps-react 13.0.0-beta.8 → 13.0.0

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.
Files changed (44) hide show
  1. package/dist/OneBlinkFormBase.js +10 -10
  2. package/dist/OneBlinkFormBase.js.map +1 -1
  3. package/dist/OneBlinkReadOnlyForm.d.ts +2 -1
  4. package/dist/OneBlinkReadOnlyForm.js +2 -1
  5. package/dist/OneBlinkReadOnlyForm.js.map +1 -1
  6. package/dist/apps/approvals-service.d.ts +2 -60
  7. package/dist/apps/approvals-service.js +1 -181
  8. package/dist/apps/approvals-service.js.map +1 -1
  9. package/dist/apps/services/api/submissions.d.ts +2 -1
  10. package/dist/apps/services/api/submissions.js +3 -1
  11. package/dist/apps/services/api/submissions.js.map +1 -1
  12. package/dist/apps/submission-service.d.ts +4 -1
  13. package/dist/apps/submission-service.js +3 -1
  14. package/dist/apps/submission-service.js.map +1 -1
  15. package/dist/form-elements/FormElementForm.js +7 -1
  16. package/dist/form-elements/FormElementForm.js.map +1 -1
  17. package/dist/hooks/useFormIsDirty.d.ts +18 -0
  18. package/dist/hooks/useFormIsDirty.js +44 -1
  19. package/dist/hooks/useFormIsDirty.js.map +1 -1
  20. package/dist/hooks/useFormValidation.d.ts +2 -2
  21. package/dist/hooks/useFormValidation.js +5 -2
  22. package/dist/hooks/useFormValidation.js.map +1 -1
  23. package/dist/index.d.ts +1 -1
  24. package/dist/index.js +1 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/services/dynamic-elements.d.ts +7 -0
  27. package/dist/services/dynamic-elements.js +16 -2
  28. package/dist/services/dynamic-elements.js.map +1 -1
  29. package/dist/services/form-validation/extensions.d.ts +2 -1
  30. package/dist/services/form-validation/extensions.js +2 -1
  31. package/dist/services/form-validation/extensions.js.map +1 -1
  32. package/dist/services/form-validation/getApproverEditableFormElementIds.d.ts +2 -0
  33. package/dist/services/form-validation/getApproverEditableFormElementIds.js +14 -0
  34. package/dist/services/form-validation/getApproverEditableFormElementIds.js.map +1 -0
  35. package/dist/services/form-validation/validateSubmission.d.ts +2 -1
  36. package/dist/services/form-validation/validateSubmission.js +17 -3
  37. package/dist/services/form-validation/validateSubmission.js.map +1 -1
  38. package/dist/services/getFlowInstanceNodesWithMeta.d.ts +70 -0
  39. package/dist/services/getFlowInstanceNodesWithMeta.js +247 -0
  40. package/dist/services/getFlowInstanceNodesWithMeta.js.map +1 -0
  41. package/dist/utils/read-only-form-elements.d.ts +22 -0
  42. package/dist/utils/read-only-form-elements.js +70 -0
  43. package/dist/utils/read-only-form-elements.js.map +1 -1
  44. package/package.json +3 -3
@@ -46,8 +46,9 @@ import { useUserProfileForInjectablesOutsideContext } from './hooks/useUserProfi
46
46
  import { ValidationIconConfigurationContext } from './hooks/useValidationIconConfiguration';
47
47
  import { Clickable } from './components/Clickable';
48
48
  import { EditableFormElementIdsContext } from './hooks/useEditableFormElementIds';
49
+ import { expandEditableFormElementIds } from './utils/read-only-form-elements';
49
50
  import { useRegisterFormSubmissionAttempt } from './hooks/useFormSubmissionAttempt';
50
- import { useRegisterFormIsDirty, FormMarkDirtyContextProvider, } from './hooks/useFormIsDirty';
51
+ import { useRegisterFormIsDirty, useRegisterAllowFormNavigation, FormMarkDirtyContextProvider, } from './hooks/useFormIsDirty';
51
52
  var AttachmentUploadStatus;
52
53
  (function (AttachmentUploadStatus) {
53
54
  AttachmentUploadStatus["ATTACHMENTS_UPLOADED"] = "ATTACHMENTS_UPLOADED";
@@ -160,6 +161,7 @@ function OneBlinkFormBase({ googleMapsApiKey, abnLookupAuthenticationGuid, captc
160
161
  const pagesWithDynamicElements = React.useMemo(() => {
161
162
  return injectDynamicElements(pages);
162
163
  }, [pages]);
164
+ const expandedEditableFormElementIds = React.useMemo(() => expandEditableFormElementIds(editableFormElementIds, pagesWithDynamicElements), [editableFormElementIds, pagesWithDynamicElements]);
163
165
  // #endregion
164
166
  //
165
167
  //
@@ -287,10 +289,10 @@ function OneBlinkFormBase({ googleMapsApiKey, abnLookupAuthenticationGuid, captc
287
289
  // #region Validation
288
290
  const validationErrorToastFocusElementRef = React.useRef(null);
289
291
  const [isShowingValidationErrorsCard, setIsShowingValidationErrorsCard] = React.useState(false);
290
- const { validate } = useFormValidation(pages);
292
+ const { validate } = useFormValidation(pages, definition.approvalSteps);
291
293
  const recaptchaType = React.useMemo(() => captchaType !== null && captchaType !== void 0 ? captchaType : 'CHECKBOX', [captchaType]);
292
- const formElementsValidation = React.useMemo(() => !isReadOnly || editableFormElementIds !== undefined
293
- ? validate(submission, formElementsConditionallyShown, executedLookups !== null && executedLookups !== void 0 ? executedLookups : {}, recaptchaType, isOffline, audience, editableFormElementIds)
294
+ const formElementsValidation = React.useMemo(() => !isReadOnly || expandedEditableFormElementIds !== undefined
295
+ ? validate(submission, formElementsConditionallyShown, executedLookups !== null && executedLookups !== void 0 ? executedLookups : {}, recaptchaType, isOffline, audience, expandedEditableFormElementIds)
294
296
  : undefined, [
295
297
  isReadOnly,
296
298
  validate,
@@ -300,7 +302,7 @@ function OneBlinkFormBase({ googleMapsApiKey, abnLookupAuthenticationGuid, captc
300
302
  recaptchaType,
301
303
  isOffline,
302
304
  audience,
303
- editableFormElementIds,
305
+ expandedEditableFormElementIds,
304
306
  ]);
305
307
  React.useEffect(() => {
306
308
  if (!formElementsValidation) {
@@ -581,6 +583,7 @@ function OneBlinkFormBase({ googleMapsApiKey, abnLookupAuthenticationGuid, captc
581
583
  }, [hostAttemptPhase, hostAttemptResolver]);
582
584
  useRegisterFormSubmissionAttempt(editableFormElementIds === undefined ? undefined : attemptFormSubmission);
583
585
  useRegisterFormIsDirty(definition.id, isDirty);
586
+ useRegisterAllowFormNavigation(definition.id, allowNavigationAfterHostAction);
584
587
  const handleSubmit = React.useCallback(async (event, continueWhilstAttachmentsAreUploading) => {
585
588
  event.preventDefault();
586
589
  // Approvers are not shown a submit button, so reaching here means the
@@ -749,10 +752,7 @@ function OneBlinkFormBase({ googleMapsApiKey, abnLookupAuthenticationGuid, captc
749
752
  else {
750
753
  handleSubmit(e, false);
751
754
  }
752
- }, [
753
- handleSubmit,
754
- hostAttemptPhase,
755
- ]);
755
+ }, [handleSubmit, hostAttemptPhase]);
756
756
  // #endregion
757
757
  //
758
758
  //
@@ -922,7 +922,7 @@ function OneBlinkFormBase({ googleMapsApiKey, abnLookupAuthenticationGuid, captc
922
922
  'is-active': isStepsHeaderActive,
923
923
  }), onClick: toggleStepsNavigation }), _jsxs("div", { className: "steps", children: [_jsx("div", { className: clsx('steps-content', {
924
924
  'is-single-step': !isShowingMultiplePages,
925
- }), children: _jsx(InjectPagesContext.Provider, { value: handlePagesLookupResult, children: _jsx(GoogleMapsApiKeyContext.Provider, { value: googleMapsApiKey, children: _jsx(AbnLookupAuthenticationGuidContext.Provider, { value: abnLookupAuthenticationGuid, children: _jsx(ValidationIconConfigurationContext.Provider, { value: validationIcon, children: _jsx(CaptchaContext.Provider, { value: captchaContextValue, children: _jsx(AttachmentBlobsProvider, { children: _jsx(FormIsReadOnlyContext.Provider, { value: isReadOnly, children: _jsx(EditableFormElementIdsContext.Provider, { value: editableFormElementIds, children: _jsx(FormAudienceContext.Provider, { value: audience, children: _jsx(TaskContext.Provider, { value: taskContextValue, children: _jsx(OnUploadAttachmentContext.Provider, { value: onUploadAttachment, children: visiblePages.map((pageElement) => (_jsx(PageFormElements, { isActive: pageElement.id ===
925
+ }), children: _jsx(InjectPagesContext.Provider, { value: handlePagesLookupResult, children: _jsx(GoogleMapsApiKeyContext.Provider, { value: googleMapsApiKey, children: _jsx(AbnLookupAuthenticationGuidContext.Provider, { value: abnLookupAuthenticationGuid, children: _jsx(ValidationIconConfigurationContext.Provider, { value: validationIcon, children: _jsx(CaptchaContext.Provider, { value: captchaContextValue, children: _jsx(AttachmentBlobsProvider, { children: _jsx(FormIsReadOnlyContext.Provider, { value: isReadOnly, children: _jsx(EditableFormElementIdsContext.Provider, { value: expandedEditableFormElementIds, children: _jsx(FormAudienceContext.Provider, { value: audience, children: _jsx(TaskContext.Provider, { value: taskContextValue, children: _jsx(OnUploadAttachmentContext.Provider, { value: onUploadAttachment, children: visiblePages.map((pageElement) => (_jsx(PageFormElements, { isActive: pageElement.id ===
926
926
  currentPage.id, formId: definition.id, formElementsConditionallyShown: formElementsConditionallyShown, formElementsValidation: formElementsValidation, displayValidationMessages: hasAttemptedSubmit ||
927
927
  isDisplayingCurrentPageError, pageElement: pageElement, onChange: handleChange, model: submission, setFormSubmission: setFormSubmission, sectionState: sectionState }, pageElement.id))) }) }) }) }) }) }) }) }) }) }) }) }), isShowingMultiplePages && (_jsxs("div", { className: "steps-actions", children: [_jsx("div", { className: "steps-action", children: _jsxs("button", { type: "button", onClick: goToPreviousPage, disabled: isFirstVisiblePage, className: "button is-light cypress-pages-previous", children: [_jsx("span", { className: "icon", children: _jsx(MaterialIcon, { children: "keyboard_arrow_left" }) }), _jsx("span", { children: "Back" })] }) }), _jsx("div", { className: "step-progress-mobile cypress-steps-mobile", children: visiblePages.map((page, index) => (_jsx("div", { className: clsx('step-progress-mobile-dot', {
928
928
  'is-active': currentPage.id === page.id,