@oneblink/apps-react 6.8.0 → 6.9.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/OneBlinkAutoSaveForm.js.map +1 -1
- package/dist/OneBlinkForm.d.ts +25 -35
- package/dist/OneBlinkFormBase.d.ts +6 -1
- package/dist/OneBlinkFormBase.js +8 -12
- package/dist/OneBlinkFormBase.js.map +1 -1
- package/dist/OneBlinkReadOnlyForm.js +0 -1
- package/dist/OneBlinkReadOnlyForm.js.map +1 -1
- package/dist/PaymentReceipt.js.map +1 -1
- package/dist/components/ArcGISWebMap.js.map +1 -1
- package/dist/components/CustomAccordion.d.ts +12 -13
- package/dist/components/ErrorSnackbar.js.map +1 -1
- package/dist/components/MaterialIcon.d.ts +4 -2
- package/dist/components/MaterialIcon.js +7 -3
- package/dist/components/MaterialIcon.js.map +1 -1
- package/dist/components/ValidationErrorsCard.d.ts +11 -0
- package/dist/components/ValidationErrorsCard.js +185 -0
- package/dist/components/ValidationErrorsCard.js.map +1 -0
- package/dist/components/ValidationErrorsCard_framer.d.ts +10 -0
- package/dist/components/ValidationErrorsCard_framer.js +218 -0
- package/dist/components/ValidationErrorsCard_framer.js.map +1 -0
- package/dist/components/formStore/FormStoreTableProvider.js.map +1 -1
- package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js.map +1 -1
- package/dist/components/formStore/OneBlinkFormStoreProvider.js.map +1 -1
- package/dist/components/formStore/OneBlinkFormStoreTable.js.map +1 -1
- package/dist/components/formStore/display/ElementDisplay.js.map +1 -1
- package/dist/components/formStore/table/ActionedByTableCell.js.map +1 -1
- package/dist/components/formStore/table/ColumnFilters.js.map +1 -1
- package/dist/components/formStore/table/FormElementTableCell.js.map +1 -1
- package/dist/components/formStore/table/TableCellCopyButton.js.map +1 -1
- package/dist/components/formStore/table/generateColumns.d.ts +3 -10
- package/dist/components/formStore/table/generateColumns.js.map +1 -1
- package/dist/components/formStore/table/useFormStoreTable.d.ts +4 -4
- package/dist/components/formStore/table/useFormStoreTable.js.map +1 -1
- package/dist/components/formStore/useFormStoreTableContext.d.ts +4 -4
- package/dist/components/formStore/useFormStoreTableContext.js.map +1 -1
- package/dist/components/payments/PaymentForm.js.map +1 -1
- package/dist/components/payments/WestpacQuickStreamPaymentForm.js.map +1 -1
- package/dist/components/renderer/AnnotationModal.js.map +1 -1
- package/dist/components/renderer/AutocompleteDropdown.js.map +1 -1
- package/dist/components/renderer/FormElementOptions.js.map +1 -1
- package/dist/components/renderer/LookupButton.js.map +1 -1
- package/dist/components/renderer/LookupNotification.js.map +1 -1
- package/dist/components/renderer/OneBlinkAppsErrorOriginalMessage.js.map +1 -1
- package/dist/components/renderer/OneBlinkFormElements.js +3 -1
- package/dist/components/renderer/OneBlinkFormElements.js.map +1 -1
- package/dist/components/renderer/PageFormElements.js.map +1 -1
- package/dist/components/renderer/ReverseGeocode.js.map +1 -1
- package/dist/components/renderer/ToggleAllCheckbox.js.map +1 -1
- package/dist/components/renderer/attachments/AttachmentStatus.d.ts +7 -7
- package/dist/components/renderer/attachments/AttachmentStatus.js +4 -4
- package/dist/components/renderer/attachments/AttachmentStatus.js.map +1 -1
- package/dist/components/renderer/attachments/DropdownMenu.d.ts +1 -0
- package/dist/components/renderer/attachments/DropdownMenu.js +10 -1
- package/dist/components/renderer/attachments/DropdownMenu.js.map +1 -1
- package/dist/components/renderer/attachments/FileCard.d.ts +5 -4
- package/dist/components/renderer/attachments/FileCard.js +5 -4
- package/dist/components/renderer/attachments/FileCard.js.map +1 -1
- package/dist/components/renderer/attachments/FileCardContent.d.ts +3 -2
- package/dist/components/renderer/attachments/FileCardContent.js +3 -3
- package/dist/components/renderer/attachments/FileCardContent.js.map +1 -1
- package/dist/form-elements/FormElementABN.js.map +1 -1
- package/dist/form-elements/FormElementAPINSWLiquorLicence.js.map +1 -1
- package/dist/form-elements/FormElementArcGISWebMap.js.map +1 -1
- package/dist/form-elements/FormElementAutocomplete.js.map +1 -1
- package/dist/form-elements/FormElementBSB.js.map +1 -1
- package/dist/form-elements/FormElementBarcodeScanner.js.map +1 -1
- package/dist/form-elements/FormElementCalculation.js.map +1 -1
- package/dist/form-elements/FormElementCamera.js +13 -13
- package/dist/form-elements/FormElementCamera.js.map +1 -1
- package/dist/form-elements/FormElementCaptcha.js.map +1 -1
- package/dist/form-elements/FormElementCheckBoxes.js.map +1 -1
- package/dist/form-elements/FormElementCivicaNameRecord.js.map +1 -1
- package/dist/form-elements/FormElementCivicaStreetName.js.map +1 -1
- package/dist/form-elements/FormElementCompliance.js.map +1 -1
- package/dist/form-elements/FormElementDate.js.map +1 -1
- package/dist/form-elements/FormElementDateTime.js.map +1 -1
- package/dist/form-elements/FormElementFile.js +1 -1
- package/dist/form-elements/FormElementFile.js.map +1 -1
- package/dist/form-elements/FormElementFiles.js.map +1 -1
- package/dist/form-elements/FormElementForm.js +3 -1
- package/dist/form-elements/FormElementForm.js.map +1 -1
- package/dist/form-elements/FormElementFreshdeskDependentField.js.map +1 -1
- package/dist/form-elements/FormElementGeoscapeAddress.js.map +1 -1
- package/dist/form-elements/FormElementGoogleAddress.js.map +1 -1
- package/dist/form-elements/FormElementHeading.js.map +1 -1
- package/dist/form-elements/FormElementLocation.js.map +1 -1
- package/dist/form-elements/FormElementNumber.js.map +1 -1
- package/dist/form-elements/FormElementPointAddress.js.map +1 -1
- package/dist/form-elements/FormElementRadio.js.map +1 -1
- package/dist/form-elements/FormElementRepeatableSet.js +3 -1
- package/dist/form-elements/FormElementRepeatableSet.js.map +1 -1
- package/dist/form-elements/FormElementSection.js.map +1 -1
- package/dist/form-elements/FormElementSelect.js.map +1 -1
- package/dist/form-elements/FormElementSignature.js +7 -7
- package/dist/form-elements/FormElementSignature.js.map +1 -1
- package/dist/form-elements/FormElementSummary.js.map +1 -1
- package/dist/form-elements/FormElementTime.js.map +1 -1
- package/dist/hooks/attachments/useAttachment.d.ts +4 -3
- package/dist/hooks/attachments/useAttachment.js +32 -45
- package/dist/hooks/attachments/useAttachment.js.map +1 -1
- package/dist/hooks/attachments/useAttachments.d.ts +1 -1
- package/dist/hooks/attachments/useAttachments.js.map +1 -1
- package/dist/hooks/useCaptcha.d.ts +0 -1
- package/dist/hooks/useClickOutsideElement.js.map +1 -1
- package/dist/hooks/useConditionalLogic.js.map +1 -1
- package/dist/hooks/useDrafts.js.map +1 -1
- package/dist/hooks/useDynamicOptionsLoaderState.js.map +1 -1
- package/dist/hooks/useFlatpickr.js.map +1 -1
- package/dist/hooks/useFormDefinition.js.map +1 -1
- package/dist/hooks/useFormElementLookups.js.map +1 -1
- package/dist/hooks/useFormElementOptions.js.map +1 -1
- package/dist/hooks/useFormSubmissionAutoSaveState.d.ts +1 -3
- package/dist/hooks/useFormSubmissionAutoSaveState.js.map +1 -1
- package/dist/hooks/useFormSubmissionModelContext.js.map +1 -1
- package/dist/hooks/useFormSubmissionState.d.ts +2 -2
- package/dist/hooks/useFormValidation.d.ts +1 -1
- package/dist/hooks/useFormValidation.js.map +1 -1
- package/dist/hooks/useInfiniteScrollDataLoad.js.map +1 -1
- package/dist/hooks/useIsOffline.d.ts +1 -1
- package/dist/hooks/useLoadDataState.js.map +1 -1
- package/dist/hooks/useLogin.js.map +1 -1
- package/dist/hooks/useLookupNotification.js.map +1 -1
- package/dist/hooks/useLookups.d.ts +1 -1
- package/dist/hooks/useLookups.js.map +1 -1
- package/dist/hooks/useOneBlinkFormContainer.d.ts +0 -1
- package/dist/hooks/usePages.js.map +1 -1
- package/dist/hooks/usePendingSubmissions.js.map +1 -1
- package/dist/hooks/useReCAPTCHAProps.js.map +1 -1
- package/dist/hooks/useSignUp.js.map +1 -1
- package/dist/hooks/useSubmissionIdIsValid.js.map +1 -1
- package/dist/hooks/useToggleComplianceChildren.js.map +1 -1
- package/dist/hooks/useValidationClass.js.map +1 -1
- package/dist/services/attachments.js.map +1 -1
- package/dist/services/blob-utils.js.map +1 -1
- package/dist/services/checkBsbsAreInvalid.js.map +1 -1
- package/dist/services/checkIfAttachmentsExist.js.map +1 -1
- package/dist/services/checkIfBsbsAreValidating.js.map +1 -1
- package/dist/services/cleanFormSubmissionModel.js.map +1 -1
- package/dist/services/download-file.js.map +1 -1
- package/dist/services/drawTimestampOnCanvas.js.map +1 -1
- package/dist/services/form-validation.js.map +1 -1
- package/dist/services/generate-default-data.js.map +1 -1
- package/dist/services/generateCivicaNameRecordElements.js.map +1 -1
- package/dist/services/generateFreshdeskDependentFieldElements.js.map +1 -1
- package/dist/services/geolocation.js +1 -1
- package/dist/services/geolocation.js.map +1 -1
- package/dist/services/getDateRangeConfiguration.js.map +1 -1
- package/dist/services/getRepeatableSetEntriesConfiguration.js.map +1 -1
- package/dist/services/injectableOptions.js.map +1 -1
- package/dist/services/scrolling-service.js.map +1 -1
- package/dist/styles/ob-html.scss +3 -0
- package/dist/styles/section.scss +4 -0
- package/dist/styles/validation-errors-card.scss +180 -0
- package/dist/styles.css +179 -0
- package/dist/styles.scss +1 -0
- package/dist/types/form.d.ts +0 -1
- package/dist/utils/elementDOMIds.d.ts +13 -0
- package/dist/utils/elementDOMIds.js +24 -0
- package/dist/utils/elementDOMIds.js.map +1 -0
- package/dist/utils/merge-executed-lookups.js.map +1 -1
- package/dist/utils/scrollToElement.d.ts +6 -0
- package/dist/utils/scrollToElement.js +65 -0
- package/dist/utils/scrollToElement.js.map +1 -0
- package/package.json +6 -5
package/dist/styles.css
CHANGED
@@ -8637,6 +8637,10 @@ button on-loading {
|
|
8637
8637
|
right: 15px;
|
8638
8638
|
}
|
8639
8639
|
|
8640
|
+
.ql-editor strong {
|
8641
|
+
color: inherit;
|
8642
|
+
}
|
8643
|
+
|
8640
8644
|
.ob-buttons-radio {
|
8641
8645
|
container-name: ob-buttons-radio;
|
8642
8646
|
container-type: inline-size;
|
@@ -9544,6 +9548,10 @@ textarea:disabled {
|
|
9544
9548
|
transform: translate(-50%, 50%);
|
9545
9549
|
}
|
9546
9550
|
|
9551
|
+
.ob-section__collapsed {
|
9552
|
+
display: none;
|
9553
|
+
}
|
9554
|
+
|
9547
9555
|
.ob-bsb__record-control {
|
9548
9556
|
min-width: 0;
|
9549
9557
|
}
|
@@ -9855,6 +9863,177 @@ textarea:disabled {
|
|
9855
9863
|
}
|
9856
9864
|
}
|
9857
9865
|
|
9866
|
+
.ob-validation-notification-wrapper {
|
9867
|
+
position: fixed;
|
9868
|
+
bottom: 1rem;
|
9869
|
+
right: 1rem;
|
9870
|
+
z-index: 30;
|
9871
|
+
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
9872
|
+
transition-duration: 300ms;
|
9873
|
+
}
|
9874
|
+
|
9875
|
+
.ob-validation-color-transition {
|
9876
|
+
transition-property: color;
|
9877
|
+
transition-duration: inherit;
|
9878
|
+
transition-timing-function: inherit;
|
9879
|
+
}
|
9880
|
+
|
9881
|
+
.ob-validation-notification-card {
|
9882
|
+
transition-property: transform, background-color;
|
9883
|
+
transition-duration: inherit;
|
9884
|
+
transition-timing-function: inherit;
|
9885
|
+
border-radius: 8px;
|
9886
|
+
max-height: 350px;
|
9887
|
+
overflow-y: auto;
|
9888
|
+
border-color: #e8113c;
|
9889
|
+
border-width: 2px;
|
9890
|
+
border-style: solid;
|
9891
|
+
animation: pulse-animation 1.5s infinite;
|
9892
|
+
}
|
9893
|
+
@keyframes pulse-animation {
|
9894
|
+
0% {
|
9895
|
+
box-shadow: 0 0 0 0px rgba(255, 0, 0, 0.4);
|
9896
|
+
}
|
9897
|
+
100% {
|
9898
|
+
box-shadow: 0 0 0 1rem rgba(255, 0, 0, 0);
|
9899
|
+
}
|
9900
|
+
}
|
9901
|
+
|
9902
|
+
.ob-validation-notification-card.is-expanded {
|
9903
|
+
background-color: hsl(0, 0%, 100%);
|
9904
|
+
color: hsl(0, 0%, 4%);
|
9905
|
+
}
|
9906
|
+
|
9907
|
+
.ob-validation-notification-card.is-contracted {
|
9908
|
+
background-color: #e8113c;
|
9909
|
+
color: hsl(0, 0%, 100%);
|
9910
|
+
}
|
9911
|
+
|
9912
|
+
.ob-validation-notification-card-content {
|
9913
|
+
transition-property: padding;
|
9914
|
+
transition-duration: inherit;
|
9915
|
+
transition-timing-function: inherit;
|
9916
|
+
padding: 1rem;
|
9917
|
+
padding-bottom: 1.5rem;
|
9918
|
+
}
|
9919
|
+
|
9920
|
+
.is-contracted .ob-validation-notification-card-content {
|
9921
|
+
padding-top: 0.5rem;
|
9922
|
+
padding-bottom: 0.5rem;
|
9923
|
+
}
|
9924
|
+
|
9925
|
+
.ob-validation-notification-card-header-wrapper {
|
9926
|
+
display: flex;
|
9927
|
+
width: 100%;
|
9928
|
+
align-items: center;
|
9929
|
+
justify-content: space-between;
|
9930
|
+
}
|
9931
|
+
|
9932
|
+
.ob-validation-notification-card-header-title-wrapper {
|
9933
|
+
display: flex;
|
9934
|
+
align-items: center;
|
9935
|
+
}
|
9936
|
+
|
9937
|
+
.ob-validation-notification-card-header-title-text {
|
9938
|
+
font-weight: 600;
|
9939
|
+
}
|
9940
|
+
|
9941
|
+
.ob-validation-notification-card-header-title-icon {
|
9942
|
+
margin-right: 0.5rem;
|
9943
|
+
font-size: 22px;
|
9944
|
+
}
|
9945
|
+
|
9946
|
+
.ob-validation-notification-card-collapse-wrapper {
|
9947
|
+
transition-property: width, opacity;
|
9948
|
+
transition-duration: inherit;
|
9949
|
+
transition-timing-function: inherit;
|
9950
|
+
white-space: nowrap;
|
9951
|
+
overflow-x: hidden;
|
9952
|
+
}
|
9953
|
+
|
9954
|
+
.ob-validation-notification-wrapper .MuiCollapse-root {
|
9955
|
+
transition-property: height;
|
9956
|
+
transition-duration: inherit;
|
9957
|
+
transition-timing-function: inherit;
|
9958
|
+
}
|
9959
|
+
|
9960
|
+
.is-contracted .ob-validation-notification-card-collapse-wrapper {
|
9961
|
+
width: 196px;
|
9962
|
+
opacity: 0;
|
9963
|
+
}
|
9964
|
+
|
9965
|
+
.is-expanded .ob-validation-notification-card-collapse-wrapper {
|
9966
|
+
width: 300px;
|
9967
|
+
opacity: 1;
|
9968
|
+
}
|
9969
|
+
|
9970
|
+
.ob-validation-notification-card-page-label {
|
9971
|
+
font-weight: 600;
|
9972
|
+
font-size: 0.875rem;
|
9973
|
+
}
|
9974
|
+
|
9975
|
+
.ob-validation-notification-card-page-label.is-not-first {
|
9976
|
+
margin-top: 0.5rem;
|
9977
|
+
}
|
9978
|
+
|
9979
|
+
.ob-validation-notification-card-list {
|
9980
|
+
margin-top: 0.5rem;
|
9981
|
+
border-radius: 8px;
|
9982
|
+
}
|
9983
|
+
|
9984
|
+
.ob-validation-notification-card-item {
|
9985
|
+
display: flex;
|
9986
|
+
justify-content: space-between;
|
9987
|
+
align-items: center;
|
9988
|
+
padding: 0.5rem;
|
9989
|
+
}
|
9990
|
+
|
9991
|
+
.ob-validation-notification-card-item.is-first {
|
9992
|
+
border-top-left-radius: 8px;
|
9993
|
+
border-top-right-radius: 8px;
|
9994
|
+
}
|
9995
|
+
|
9996
|
+
.ob-validation-notification-card-item.is-last {
|
9997
|
+
border-bottom-left-radius: 8px;
|
9998
|
+
border-bottom-right-radius: 8px;
|
9999
|
+
}
|
10000
|
+
|
10001
|
+
.ob-validation-notification-card-item-text {
|
10002
|
+
white-space: nowrap;
|
10003
|
+
overflow: hidden;
|
10004
|
+
font-size: 0.875rem;
|
10005
|
+
}
|
10006
|
+
|
10007
|
+
.ob-validation-notification-card-item-text-error-message {
|
10008
|
+
overflow: hidden;
|
10009
|
+
text-overflow: ellipsis;
|
10010
|
+
}
|
10011
|
+
|
10012
|
+
.ob-validation-notification-card-item-icon {
|
10013
|
+
margin-left: 0.5rem;
|
10014
|
+
}
|
10015
|
+
|
10016
|
+
@media only screen and (max-width: 1024px) {
|
10017
|
+
.ob-bottom-navigation__content .ob-validation-notification-wrapper {
|
10018
|
+
margin-bottom: 4rem;
|
10019
|
+
}
|
10020
|
+
}
|
10021
|
+
@media only screen and (max-width: 769px) {
|
10022
|
+
.ob-validation-notification-wrapper {
|
10023
|
+
left: 1rem;
|
10024
|
+
}
|
10025
|
+
.is-contracted .ob-validation-notification-card-collapse-wrapper {
|
10026
|
+
width: 100%;
|
10027
|
+
}
|
10028
|
+
.is-expanded .ob-validation-notification-card-collapse-wrapper {
|
10029
|
+
width: 100%;
|
10030
|
+
}
|
10031
|
+
.section .ob-list.ob-validation-notification-card-list {
|
10032
|
+
margin-right: unset;
|
10033
|
+
margin-left: unset;
|
10034
|
+
width: unset;
|
10035
|
+
}
|
10036
|
+
}
|
9858
10037
|
.flatpickr-calendar {
|
9859
10038
|
background: transparent;
|
9860
10039
|
opacity: 0;
|
package/dist/styles.scss
CHANGED
@@ -141,6 +141,7 @@ $section-padding-mobile: $section-padding-mobile-y $section-padding-mobile-x;
|
|
141
141
|
@import './styles/api-nsw-liquor-licence.scss';
|
142
142
|
@import './styles/arcgis-web-map.scss';
|
143
143
|
@import './styles/abn.scss';
|
144
|
+
@import './styles/validation-errors-card.scss';
|
144
145
|
//
|
145
146
|
// Third Party
|
146
147
|
//
|
package/dist/types/form.d.ts
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
/// <reference types="react" />
|
2
1
|
import { FormTypes, SubmissionTypes, IntegrationTypes } from '@oneblink/types';
|
3
2
|
export { FormElementConditionallyShownElement, FormElementConditionallyShown, FormElementsConditionallyShown, } from '@oneblink/sdk-core/dist/conditionalLogicService';
|
4
3
|
export type FormElementKey = string;
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { FormTypes } from '@oneblink/types';
|
2
|
+
declare class ElementDOMId {
|
3
|
+
elementDOMId: string;
|
4
|
+
constructor(params: {
|
5
|
+
element: FormTypes.FormElementWithName;
|
6
|
+
idPrefix: string;
|
7
|
+
} | string);
|
8
|
+
get value(): string;
|
9
|
+
get elementContainerDOMId(): string;
|
10
|
+
get subFormDOMIdPrefix(): string;
|
11
|
+
repeatableSetEntryDOMIdPrefix: (entryKey: string) => string;
|
12
|
+
}
|
13
|
+
export default ElementDOMId;
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class ElementDOMId {
|
2
|
+
constructor(params) {
|
3
|
+
this.repeatableSetEntryDOMIdPrefix = (entryKey) => {
|
4
|
+
return `${this.elementDOMId}_entry-${entryKey}_`;
|
5
|
+
};
|
6
|
+
if (typeof params !== 'string') {
|
7
|
+
this.elementDOMId = `${params.idPrefix}${params.element.name}`;
|
8
|
+
}
|
9
|
+
else {
|
10
|
+
this.elementDOMId = params;
|
11
|
+
}
|
12
|
+
}
|
13
|
+
get value() {
|
14
|
+
return this.elementDOMId;
|
15
|
+
}
|
16
|
+
get elementContainerDOMId() {
|
17
|
+
return `element-container__${this.elementDOMId}`;
|
18
|
+
}
|
19
|
+
get subFormDOMIdPrefix() {
|
20
|
+
return `${this.elementDOMId}_`;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
export default ElementDOMId;
|
24
|
+
//# sourceMappingURL=elementDOMIds.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"elementDOMIds.js","sourceRoot":"","sources":["../../src/utils/elementDOMIds.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY;IAEhB,YACE,MAKU;QAoBZ,kCAA6B,GAAG,CAAC,QAAgB,EAAE,EAAE;YACnD,OAAO,GAAG,IAAI,CAAC,YAAY,UAAU,QAAQ,GAAG,CAAA;QAClD,CAAC,CAAA;QApBC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,GAAG,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QAChE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,GAAG,MAAM,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IACD,IAAI,qBAAqB;QACvB,OAAO,sBAAsB,IAAI,CAAC,YAAY,EAAE,CAAA;IAClD,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,GAAG,IAAI,CAAC,YAAY,GAAG,CAAA;IAChC,CAAC;CAKF;AAED,eAAe,YAAY,CAAA","sourcesContent":["import { FormTypes } from '@oneblink/types'\n\nclass ElementDOMId {\n elementDOMId: string\n constructor(\n params:\n | {\n element: FormTypes.FormElementWithName\n idPrefix: string\n }\n | string,\n ) {\n if (typeof params !== 'string') {\n this.elementDOMId = `${params.idPrefix}${params.element.name}`\n } else {\n this.elementDOMId = params\n }\n }\n\n get value() {\n return this.elementDOMId\n }\n get elementContainerDOMId() {\n return `element-container__${this.elementDOMId}`\n }\n\n get subFormDOMIdPrefix() {\n return `${this.elementDOMId}_`\n }\n\n repeatableSetEntryDOMIdPrefix = (entryKey: string) => {\n return `${this.elementDOMId}_entry-${entryKey}_`\n }\n}\n\nexport default ElementDOMId\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"merge-executed-lookups.js","sourceRoot":"","sources":["../../src/utils/merge-executed-lookups.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAC3C,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,GAKhB;;IACC,IAAI,CAAC,gBAAgB,EAAE;
|
1
|
+
{"version":3,"file":"merge-executed-lookups.js","sourceRoot":"","sources":["../../src/utils/merge-executed-lookups.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAC3C,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,GAKhB;;IACC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,eAAe,CAAA;IACxB,CAAC;IAED,MAAM,sBAAsB,GAAG,EAAE,GAAG,eAAe,EAAE,CAAA;IACrD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,sBAAsB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;;gBACvD,MAAM,sBAAsB,GAC1B,MAAC,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,GAAG,CAAuB,mCAAI,EAAE,CAAA;gBACrD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,GAAG,CAAC,CAAC;oBAC1D,CAAC,CAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAChB,GAAG,CACiD;oBACxD,CAAC,CAAC,EAAE,CAAA;gBACN,OAAO,oBAAoB,CAAC;oBAC1B,gBAAgB,EAAE,KAAK;oBACvB,iBAAiB,EAAE,YAAY,CAAC,KAAK,CAAC;oBACtC,eAAe,EAAE,MAAA,sBAAsB,CAAC,KAAK,CAAC,mCAAI,EAAE;iBACrD,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YACF,SAAQ;QACV,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;YAC5B,sBAAsB,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC;gBACjD,gBAAgB,EACd,KAAuD;gBACzD,iBAAiB,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAClC,GAAG,CAC8C;gBACnD,eAAe,EAAE,MAAC,sBAAsB,CAAC,GAAG,CAAqB,mCAAI,EAAE;aACxE,CAAC,CAAA;YACF,SAAQ;QACV,CAAC;QACD,sBAAsB,CAAC,GAAG,CAAC;YACzB,sBAAsB,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,KAAK,MAAK,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,GAAG,CAAC,CAAA,CAAA;IAC9E,CAAC;IACD,OAAO,sBAAsB,CAAA;AAC/B,CAAC","sourcesContent":["import { SubmissionTypes } from '@oneblink/types'\nimport { ExecutedLookups } from '../types/form'\n\nexport default function mergeExecutedLookups({\n dataLookupResult,\n currentSubmission,\n executedLookups,\n}: {\n dataLookupResult: SubmissionTypes.S3SubmissionData['submission'] | undefined\n currentSubmission: SubmissionTypes.S3SubmissionData['submission'] | undefined\n executedLookups: ExecutedLookups\n}): ExecutedLookups {\n if (!dataLookupResult) {\n return executedLookups\n }\n\n const updatedExecutedLookups = { ...executedLookups }\n for (const [key, value] of Object.entries(dataLookupResult)) {\n if (Array.isArray(value)) {\n updatedExecutedLookups[key] = value.map((entry, index) => {\n const elementExecutedLookups =\n (executedLookups?.[key] as ExecutedLookups[]) ?? []\n const elementValue = Array.isArray(currentSubmission?.[key])\n ? (currentSubmission?.[\n key\n ] as SubmissionTypes.S3SubmissionData['submission'][])\n : []\n return mergeExecutedLookups({\n dataLookupResult: entry,\n currentSubmission: elementValue[index],\n executedLookups: elementExecutedLookups[index] ?? {},\n })\n })\n continue\n }\n if (Object(value) === value) {\n updatedExecutedLookups[key] = mergeExecutedLookups({\n dataLookupResult:\n value as SubmissionTypes.S3SubmissionData['submission'],\n currentSubmission: currentSubmission?.[\n key\n ] as SubmissionTypes.S3SubmissionData['submission'],\n executedLookups: (updatedExecutedLookups[key] as ExecutedLookups) ?? {},\n })\n continue\n }\n updatedExecutedLookups[key] =\n updatedExecutedLookups[key] === true && value === currentSubmission?.[key]\n }\n return updatedExecutedLookups\n}\n"]}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
/**
|
2
|
+
* Recursively traverses ancestors to find the first visible ancestor element
|
3
|
+
* and allow getting its scroll point. It handles the case of ancestor elements
|
4
|
+
* being hidden by `ob-hidden` or an ancestor section being collapsed.
|
5
|
+
*
|
6
|
+
* @param element - The element for which to find its first visible ancestor or
|
7
|
+
* ancestor sibling.
|
8
|
+
* @returns A callback that returns the scroll point of the first visible
|
9
|
+
* ancestor element, or undefined if none is found.
|
10
|
+
*/
|
11
|
+
const findScrollPointOfVisibleAncestorElement = (element) => {
|
12
|
+
var _a;
|
13
|
+
const isVisible = element.checkVisibility();
|
14
|
+
if (!isVisible) {
|
15
|
+
const OBHiddenElement = element.closest('.is-hidden');
|
16
|
+
if (OBHiddenElement) {
|
17
|
+
// In the case of a hidden ancestor element we will navigate to the bottom of the previous visible sibling.
|
18
|
+
const parentIsVisible = (_a = OBHiddenElement.parentElement) === null || _a === void 0 ? void 0 : _a.checkVisibility();
|
19
|
+
if (!parentIsVisible) {
|
20
|
+
return findScrollPointOfVisibleAncestorElement(OBHiddenElement);
|
21
|
+
}
|
22
|
+
let previousSibling = OBHiddenElement.previousElementSibling;
|
23
|
+
while (previousSibling) {
|
24
|
+
if (previousSibling.checkVisibility()) {
|
25
|
+
// Have to reasign for TS, because it does not recognise the typeguard in the `while` inside the callback function
|
26
|
+
const sib = previousSibling;
|
27
|
+
return () => sib.getBoundingClientRect().bottom;
|
28
|
+
}
|
29
|
+
previousSibling = previousSibling.previousElementSibling;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
// Collapsed section ancestor
|
33
|
+
const ancestorCollapsedSection = element.closest('.ob-section__collapsed');
|
34
|
+
if (ancestorCollapsedSection) {
|
35
|
+
const ancestorSectionRoot = ancestorCollapsedSection.closest('.ob-section');
|
36
|
+
return ancestorSectionRoot
|
37
|
+
? findScrollPointOfVisibleAncestorElement(ancestorSectionRoot)
|
38
|
+
: undefined;
|
39
|
+
}
|
40
|
+
// Not visible for some other reason
|
41
|
+
return;
|
42
|
+
}
|
43
|
+
else {
|
44
|
+
return () => element.getBoundingClientRect().top;
|
45
|
+
}
|
46
|
+
};
|
47
|
+
const scrollToElement = ({ id, navigationTopOffset, }) => {
|
48
|
+
const element = document.getElementById(id);
|
49
|
+
if (element) {
|
50
|
+
const getScrollPoint = findScrollPointOfVisibleAncestorElement(element);
|
51
|
+
if (getScrollPoint) {
|
52
|
+
window.requestAnimationFrame(() => {
|
53
|
+
window.scrollTo({
|
54
|
+
top: getScrollPoint() +
|
55
|
+
window.scrollY -
|
56
|
+
// We allow an offset to cater for any headers
|
57
|
+
navigationTopOffset,
|
58
|
+
behavior: 'smooth',
|
59
|
+
});
|
60
|
+
});
|
61
|
+
}
|
62
|
+
}
|
63
|
+
};
|
64
|
+
export default scrollToElement;
|
65
|
+
//# sourceMappingURL=scrollToElement.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"scrollToElement.js","sourceRoot":"","sources":["../../src/utils/scrollToElement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,uCAAuC,GAAG,CAC9C,OAAgB,EACY,EAAE;;IAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,EAAE,CAAA;IAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;QAErD,IAAI,eAAe,EAAE,CAAC;YACpB,2GAA2G;YAC3G,MAAM,eAAe,GAAG,MAAA,eAAe,CAAC,aAAa,0CAAE,eAAe,EAAE,CAAA;YACxE,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,OAAO,uCAAuC,CAAC,eAAe,CAAC,CAAA;YACjE,CAAC;YACD,IAAI,eAAe,GAAG,eAAe,CAAC,sBAAsB,CAAA;YAC5D,OAAO,eAAe,EAAE,CAAC;gBACvB,IAAI,eAAe,CAAC,eAAe,EAAE,EAAE,CAAC;oBACtC,kHAAkH;oBAClH,MAAM,GAAG,GAAG,eAAe,CAAA;oBAC3B,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAA;gBACjD,CAAC;gBACD,eAAe,GAAG,eAAe,CAAC,sBAAsB,CAAA;YAC1D,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,MAAM,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAA;QAC1E,IAAI,wBAAwB,EAAE,CAAC;YAC7B,MAAM,mBAAmB,GACvB,wBAAwB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;YACjD,OAAO,mBAAmB;gBACxB,CAAC,CAAC,uCAAuC,CAAC,mBAAmB,CAAC;gBAC9D,CAAC,CAAC,SAAS,CAAA;QACf,CAAC;QAED,oCAAoC;QACpC,OAAM;IACR,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAA;IAClD,CAAC;AACH,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,EACvB,EAAE,EACF,mBAAmB,GAKpB,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;IAE3C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,cAAc,GAAG,uCAAuC,CAAC,OAAO,CAAC,CAAA;QACvE,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE;gBAChC,MAAM,CAAC,QAAQ,CAAC;oBACd,GAAG,EACD,cAAc,EAAE;wBAChB,MAAM,CAAC,OAAO;wBACd,8CAA8C;wBAC9C,mBAAmB;oBACrB,QAAQ,EAAE,QAAQ;iBACnB,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,eAAe,eAAe,CAAA","sourcesContent":["/**\n * Recursively traverses ancestors to find the first visible ancestor element\n * and allow getting its scroll point. It handles the case of ancestor elements\n * being hidden by `ob-hidden` or an ancestor section being collapsed.\n *\n * @param element - The element for which to find its first visible ancestor or\n * ancestor sibling.\n * @returns A callback that returns the scroll point of the first visible\n * ancestor element, or undefined if none is found.\n */\nconst findScrollPointOfVisibleAncestorElement = (\n element: Element,\n): (() => number) | undefined => {\n const isVisible = element.checkVisibility()\n if (!isVisible) {\n const OBHiddenElement = element.closest('.is-hidden')\n\n if (OBHiddenElement) {\n // In the case of a hidden ancestor element we will navigate to the bottom of the previous visible sibling.\n const parentIsVisible = OBHiddenElement.parentElement?.checkVisibility()\n if (!parentIsVisible) {\n return findScrollPointOfVisibleAncestorElement(OBHiddenElement)\n }\n let previousSibling = OBHiddenElement.previousElementSibling\n while (previousSibling) {\n if (previousSibling.checkVisibility()) {\n // Have to reasign for TS, because it does not recognise the typeguard in the `while` inside the callback function\n const sib = previousSibling\n return () => sib.getBoundingClientRect().bottom\n }\n previousSibling = previousSibling.previousElementSibling\n }\n }\n\n // Collapsed section ancestor\n const ancestorCollapsedSection = element.closest('.ob-section__collapsed')\n if (ancestorCollapsedSection) {\n const ancestorSectionRoot =\n ancestorCollapsedSection.closest('.ob-section')\n return ancestorSectionRoot\n ? findScrollPointOfVisibleAncestorElement(ancestorSectionRoot)\n : undefined\n }\n\n // Not visible for some other reason\n return\n } else {\n return () => element.getBoundingClientRect().top\n }\n}\n\nconst scrollToElement = ({\n id,\n navigationTopOffset,\n}: {\n id: string\n /** We allow an offset to cater for any headers */\n navigationTopOffset: number\n}) => {\n const element = document.getElementById(id)\n\n if (element) {\n const getScrollPoint = findScrollPointOfVisibleAncestorElement(element)\n if (getScrollPoint) {\n window.requestAnimationFrame(() => {\n window.scrollTo({\n top:\n getScrollPoint() +\n window.scrollY -\n // We allow an offset to cater for any headers\n navigationTopOffset,\n behavior: 'smooth',\n })\n })\n }\n }\n}\n\nexport default scrollToElement\n"]}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@oneblink/apps-react",
|
3
3
|
"description": "Helper functions for OneBlink apps in ReactJS.",
|
4
|
-
"version": "6.
|
4
|
+
"version": "6.9.0-beta.10",
|
5
5
|
"author": "OneBlink <developers@oneblink.io> (https://oneblink.io)",
|
6
6
|
"bugs": {
|
7
7
|
"url": "https://github.com/oneblink/apps-react/issues"
|
@@ -76,17 +76,18 @@
|
|
76
76
|
"eslint-plugin-react": "^7.33.2",
|
77
77
|
"eslint-plugin-react-hooks": "^4.6.0",
|
78
78
|
"fixpack": "^4.0.0",
|
79
|
-
"jest": "^
|
79
|
+
"jest": "^29.7.0",
|
80
|
+
"jest-environment-jsdom": "^29.7.0",
|
80
81
|
"prettier": "^3.2.4",
|
81
82
|
"prettier-plugin-jsdoc": "^1.3.0",
|
82
83
|
"react": "^17.0.2",
|
83
84
|
"react-dom": "^17.0.2",
|
84
85
|
"react-router-dom": "^5.3.4",
|
85
86
|
"sass": "^1.70.0",
|
86
|
-
"ts-jest": "^
|
87
|
+
"ts-jest": "^29.2.5",
|
87
88
|
"tsc-watch": "^6.0.4",
|
88
|
-
"typedoc": "^0.
|
89
|
-
"typescript": "^
|
89
|
+
"typedoc": "^0.26.9",
|
90
|
+
"typescript": "^5.6.3"
|
90
91
|
},
|
91
92
|
"directories": {
|
92
93
|
"doc": "docs"
|