@oneblink/apps-react 10.3.1-beta.3 → 10.3.1-beta.5
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/OneBlinkFormBase.js +11 -9
- package/dist/OneBlinkFormBase.js.map +1 -1
- package/dist/components/renderer/OneBlinkFormElements.js +2 -2
- package/dist/components/renderer/OneBlinkFormElements.js.map +1 -1
- package/dist/components/renderer/PageFormElements.js +1 -1
- package/dist/components/renderer/PageFormElements.js.map +1 -1
- package/dist/components/renderer/Tooltip.d.ts +1 -1
- package/dist/components/renderer/Tooltip.js +6 -3
- package/dist/components/renderer/Tooltip.js.map +1 -1
- package/dist/form-elements/FormElementCheckBoxes.js +1 -1
- package/dist/form-elements/FormElementCheckBoxes.js.map +1 -1
- package/dist/form-elements/FormElementCompliance.d.ts +3 -2
- package/dist/form-elements/FormElementCompliance.js +22 -2
- package/dist/form-elements/FormElementCompliance.js.map +1 -1
- package/dist/form-elements/FormElementLookupButton.js +9 -1
- package/dist/form-elements/FormElementLookupButton.js.map +1 -1
- package/dist/form-elements/FormElementRadio.js +1 -1
- package/dist/form-elements/FormElementRadio.js.map +1 -1
- package/dist/types/form.d.ts +8 -0
- package/dist/types/form.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormElementCompliance.js","sourceRoot":"","sources":["../../src/form-elements/FormElementCompliance.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport clsx from 'clsx'\n\nimport FormElementOptions from '../components/renderer/FormElementOptions'\nimport useFormElementOptions from '../hooks/useFormElementOptions'\nimport useToggleComplianceChildren from '../hooks/useToggleComplianceChildren'\nimport { FormTypes } from '@oneblink/types'\nimport OptionButton from './OptionButton'\nimport FormElementLabelContainer from '../components/renderer/FormElementLabelContainer'\nimport ComplianceButton from './ComplianceButton'\nimport FormElementFiles from './FormElementFiles'\nimport FormElementTextarea from './FormElementTextarea'\nimport {\n FormElementValueChangeHandler,\n FormElementConditionallyShownElement,\n IsDirtyProps,\n UpdateFormElementsHandler,\n} from '../types/form'\nimport { attachmentsService } from '../apps'\nimport useElementAriaDescribedby from '../hooks/useElementAriaDescribedby'\nimport FormElementValidationMessage from '../components/renderer/FormElementValidationMessage'\n\ninterface Props extends IsDirtyProps {\n id: string\n element: FormTypes.ComplianceElement\n value: unknown\n onChange: FormElementValueChangeHandler<Value>\n displayValidationMessage: boolean\n validationMessage: string | undefined\n conditionallyShownOptionsElement:\n | FormElementConditionallyShownElement\n | undefined\n isEven?: boolean\n onUpdateFormElements: UpdateFormElementsHandler\n}\n\nexport interface Value {\n value?: string\n notes?: string\n files?: attachmentsService.Attachment[]\n}\n\nconst baseElement = {\n conditionallyShow: false,\n isDataLookup: false,\n isElementLookup: false,\n required: false,\n requiresAllConditionallyShowPredicates: false,\n}\n\nfunction FormElementCompliance({\n id,\n element,\n value,\n onChange,\n conditionallyShownOptionsElement,\n validationMessage,\n displayValidationMessage,\n isEven,\n onUpdateFormElements,\n isDirty,\n setIsDirty,\n}: Props) {\n const ariaDescribedby = useElementAriaDescribedby(id, element)\n const typedValue = value as Value | undefined\n\n const notesElement = React.useMemo<FormTypes.TextareaElement>(\n () => ({\n ...baseElement,\n readOnly: element.readOnly,\n id: `${element.id}-notes`,\n label: 'Notes',\n name: `${element.name}_notes`,\n type: 'textarea',\n autocompleteAttributes: element.autocompleteAttributes,\n }),\n [\n element.autocompleteAttributes,\n element.id,\n element.name,\n element.readOnly,\n ],\n )\n const filesElement = React.useMemo<FormTypes.FilesElement>(\n () => ({\n ...baseElement,\n readOnly: element.readOnly,\n id: `${element.id}-files`,\n label: 'Media',\n name: `${element.name}_files`,\n type: 'files',\n maxEntries: undefined,\n minEntries: undefined,\n restrictFileTypes: false,\n storageType: element.storageType,\n }),\n [element.id, element.name, element.readOnly, element.storageType],\n )\n\n const handleValueChange = React.useCallback<\n FormElementValueChangeHandler<string>\n >(\n (fe, { value: v }) => {\n onChange(fe, {\n value: (existingValue: Value | undefined) => {\n let newValue = undefined\n if (typeof v === 'function') {\n newValue = v(existingValue ? existingValue.value : undefined)\n } else {\n newValue = v\n }\n if (!newValue) {\n return\n }\n return {\n ...existingValue,\n value: newValue,\n }\n },\n })\n },\n [onChange],\n )\n const handleNotesChange = React.useCallback<\n React.ComponentProps<typeof FormElementTextarea>['onChange']\n >(\n (fe, { value: v }) => {\n onChange(element, {\n value: (existingValue) => {\n if (!existingValue) {\n return\n }\n let newNotes = undefined\n if (typeof v === 'function') {\n newNotes = v(existingValue.notes)\n } else {\n newNotes = v\n }\n return {\n ...existingValue,\n notes: newNotes,\n }\n },\n })\n },\n [element, onChange],\n )\n const handleFilesChange = React.useCallback<\n React.ComponentProps<typeof FormElementFiles>['onChange']\n >(\n (fe, { value: v }) => {\n onChange(element, {\n value: (existingValue) => {\n if (!existingValue) {\n return\n }\n let newFiles = undefined\n if (typeof v === 'function') {\n newFiles = v(existingValue.files)\n } else {\n newFiles = v\n }\n return {\n ...existingValue,\n files: newFiles && newFiles.length ? newFiles : undefined,\n }\n },\n })\n },\n [element, onChange],\n )\n\n const [isShowingNotes, toggleIsShowingNotes] = useToggleComplianceChildren(\n element,\n !!typedValue?.notes,\n handleNotesChange,\n )\n const [isShowingFiles, toggleIsShowingFiles] = useToggleComplianceChildren(\n element,\n !!typedValue?.files,\n handleFilesChange,\n )\n\n const filteredOptions = useFormElementOptions({\n element,\n value: typedValue?.value,\n onChange: handleValueChange,\n conditionallyShownOptionsElement,\n onUpdateFormElements,\n })\n\n return (\n <div\n className=\"cypress-compliance-element\"\n aria-labelledby={`${id}-label`}\n aria-describedby={ariaDescribedby}\n role=\"region\"\n >\n <FormElementLabelContainer\n className={`ob-compliance ${!isEven ? 'even' : 'odd'}`}\n id={id}\n element={element}\n required={element.required}\n >\n <div className=\"ob-compliance__container\">\n <FormElementOptions\n options={element.options}\n conditionallyShownOptionsElement={conditionallyShownOptionsElement}\n >\n <div\n className=\"buttons ob-buttons ob-buttons-radio cypress-radio-button-group\"\n role=\"group\"\n aria-labelledby={`${id}-label`}\n aria-describedby={ariaDescribedby}\n >\n {filteredOptions.map((option) => {\n const isSelected = typedValue?.value === option.value\n return (\n <div className=\"ob-button-radio-container\" key={option.value}>\n <OptionButton\n element={element}\n option={option}\n isSelected={isSelected}\n onClick={() => {\n setIsDirty()\n if (!isSelected) {\n handleValueChange(element, {\n value: option.value,\n })\n }\n }}\n className={clsx(\n 'button ob-button ob-button__input ob-radio__button cypress-radio-button-control',\n {\n 'is-primary': isSelected,\n 'is-light': !isSelected,\n },\n )}\n aria-describedby={ariaDescribedby}\n />\n </div>\n )\n })}\n </div>\n </FormElementOptions>\n {(isDirty || displayValidationMessage) && !!validationMessage && (\n <FormElementValidationMessage message={validationMessage} />\n )}\n <div className=\"buttons ob-buttons ob-buttons-compliance cypress-compliance-button-group\">\n <ComplianceButton\n isActive={isShowingNotes}\n icon=\"notes\"\n onClick={toggleIsShowingNotes}\n disabled={element.readOnly || !typedValue?.value}\n >\n Notes\n </ComplianceButton>\n <ComplianceButton\n isActive={isShowingFiles}\n icon=\"perm_media\"\n onClick={toggleIsShowingFiles}\n disabled={element.readOnly || !typedValue?.value}\n >\n Media\n </ComplianceButton>\n </div>\n {isShowingNotes && (\n <div className=\"ob-compliance-child-element\">\n <FormElementTextarea\n id={`${id}-notes`}\n onChange={handleNotesChange}\n displayValidationMessage={false}\n validationMessage={undefined}\n value={typedValue?.notes}\n element={notesElement}\n isDirty={isDirty}\n setIsDirty={setIsDirty}\n autocompleteAttributes={notesElement.autocompleteAttributes?.join(\n ' ',\n )}\n />\n </div>\n )}\n {isShowingFiles && (\n <div className=\"ob-compliance-child-element\">\n <FormElementFiles\n id={`${id}-files`}\n onChange={handleFilesChange}\n displayValidationMessage={false}\n validationMessage={undefined}\n value={typedValue?.files}\n element={filesElement}\n isDirty={isDirty}\n setIsDirty={setIsDirty}\n />\n </div>\n )}\n </div>\n </FormElementLabelContainer>\n </div>\n )\n}\nexport default React.memo(FormElementCompliance)\n"]}
|
|
1
|
+
{"version":3,"file":"FormElementCompliance.js","sourceRoot":"","sources":["../../src/form-elements/FormElementCompliance.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport clsx from 'clsx'\n\nimport FormElementOptions from '../components/renderer/FormElementOptions'\nimport useFormElementOptions from '../hooks/useFormElementOptions'\nimport useToggleComplianceChildren from '../hooks/useToggleComplianceChildren'\nimport { FormTypes } from '@oneblink/types'\nimport OptionButton from './OptionButton'\nimport FormElementLabelContainer from '../components/renderer/FormElementLabelContainer'\nimport ComplianceButton from './ComplianceButton'\nimport FormElementFiles from './FormElementFiles'\nimport FormElementTextarea from './FormElementTextarea'\nimport {\n FormElementValueChangeHandler,\n FormElementConditionallyShownElement,\n IsDirtyProps,\n NestedFormElementValueChangeHandler,\n UpdateFormElementsHandler,\n} from '../types/form'\nimport { attachmentsService } from '../apps'\nimport useElementAriaDescribedby from '../hooks/useElementAriaDescribedby'\nimport { LookupNotificationContext } from '../hooks/useLookupNotification'\nimport FormElementValidationMessage from '../components/renderer/FormElementValidationMessage'\n\ninterface Props extends IsDirtyProps {\n id: string\n element: FormTypes.ComplianceElement\n value: unknown\n onChange: NestedFormElementValueChangeHandler<Value>\n displayValidationMessage: boolean\n validationMessage: string | undefined\n conditionallyShownOptionsElement:\n | FormElementConditionallyShownElement\n | undefined\n isEven?: boolean\n onUpdateFormElements: UpdateFormElementsHandler\n}\n\nexport interface Value {\n value?: string\n notes?: string\n files?: attachmentsService.Attachment[]\n}\n\nconst baseElement = {\n conditionallyShow: false,\n isDataLookup: false,\n isElementLookup: false,\n required: false,\n requiresAllConditionallyShowPredicates: false,\n}\n\nexport function stringifyComplianceValue(value: unknown): string {\n if (!value) {\n return ''\n }\n const selectedValue = (value as { value: unknown }).value\n return typeof selectedValue === 'string' ? selectedValue : ''\n}\n\nfunction FormElementCompliance({\n id,\n element,\n value,\n onChange,\n conditionallyShownOptionsElement,\n validationMessage,\n displayValidationMessage,\n isEven,\n onUpdateFormElements,\n isDirty,\n setIsDirty,\n}: Props) {\n const ariaDescribedby = useElementAriaDescribedby(id, element)\n const typedValue = value as Value | undefined\n\n const notesElement = React.useMemo<FormTypes.TextareaElement>(\n () => ({\n ...baseElement,\n readOnly: element.readOnly,\n id: `${element.id}-notes`,\n label: 'Notes',\n name: `${element.name}_notes`,\n type: 'textarea',\n autocompleteAttributes: element.autocompleteAttributes,\n }),\n [\n element.autocompleteAttributes,\n element.id,\n element.name,\n element.readOnly,\n ],\n )\n const filesElement = React.useMemo<FormTypes.FilesElement>(\n () => ({\n ...baseElement,\n readOnly: element.readOnly,\n id: `${element.id}-files`,\n label: 'Media',\n name: `${element.name}_files`,\n type: 'files',\n maxEntries: undefined,\n minEntries: undefined,\n restrictFileTypes: false,\n storageType: element.storageType,\n }),\n [element.id, element.name, element.readOnly, element.storageType],\n )\n\n const handleValueChange = React.useCallback<\n FormElementValueChangeHandler<string>\n >(\n (fe, { value: v }) => {\n onChange(fe, {\n value: (existingValue: Value | undefined) => {\n let newValue = undefined\n if (typeof v === 'function') {\n newValue = v(existingValue ? existingValue.value : undefined)\n } else {\n newValue = v\n }\n if (!newValue) {\n return\n }\n return {\n ...existingValue,\n value: newValue,\n }\n },\n executedLookups: undefined,\n sectionState: undefined,\n })\n },\n [onChange],\n )\n const handleNotesChange = React.useCallback<\n React.ComponentProps<typeof FormElementTextarea>['onChange']\n >(\n (fe, { value: v }) => {\n onChange(element, {\n value: (existingValue: Value | undefined) => {\n if (!existingValue) {\n return\n }\n let newNotes = undefined\n if (typeof v === 'function') {\n newNotes = v(existingValue.notes)\n } else {\n newNotes = v\n }\n return {\n ...existingValue,\n notes: newNotes,\n }\n },\n // Preserve the executed lookups state to indicate the\n // lookup does not need to be executed again if the notes change.\n executedLookups: (executedLookups) => executedLookups,\n sectionState: undefined,\n })\n },\n [element, onChange],\n )\n const handleFilesChange = React.useCallback<\n React.ComponentProps<typeof FormElementFiles>['onChange']\n >(\n (fe, { value: v }) => {\n onChange(element, {\n value: (existingValue: Value | undefined) => {\n if (!existingValue) {\n return\n }\n let newFiles = undefined\n if (typeof v === 'function') {\n newFiles = v(existingValue.files)\n } else {\n newFiles = v\n }\n return {\n ...existingValue,\n files: newFiles && newFiles.length ? newFiles : undefined,\n }\n },\n // Preserve the executed lookups state to indicate the\n // lookup does not need to be executed again if the files change.\n executedLookups: (executedLookups) => executedLookups,\n sectionState: undefined,\n })\n },\n [element, onChange],\n )\n\n const [isShowingNotes, toggleIsShowingNotes] = useToggleComplianceChildren(\n element,\n !!typedValue?.notes,\n handleNotesChange,\n )\n const [isShowingFiles, toggleIsShowingFiles] = useToggleComplianceChildren(\n element,\n !!typedValue?.files,\n handleFilesChange,\n )\n\n const filteredOptions = useFormElementOptions({\n element,\n value: typedValue?.value,\n onChange: handleValueChange,\n conditionallyShownOptionsElement,\n onUpdateFormElements,\n })\n\n const { isLookingUp } = React.useContext(LookupNotificationContext)\n const isDisplayingValidationMessage =\n (isDirty || displayValidationMessage) && !!validationMessage && !isLookingUp\n\n return (\n <div\n className=\"cypress-compliance-element\"\n aria-labelledby={`${id}-label`}\n aria-describedby={ariaDescribedby}\n role=\"region\"\n >\n <FormElementLabelContainer\n className={`ob-compliance ${!isEven ? 'even' : 'odd'}`}\n id={id}\n element={element}\n required={element.required}\n associateLabelWithInput={false}\n >\n <div className=\"ob-compliance__container\">\n <FormElementOptions\n options={element.options}\n conditionallyShownOptionsElement={conditionallyShownOptionsElement}\n >\n <div\n className=\"buttons ob-buttons ob-buttons-radio cypress-radio-button-group\"\n role=\"group\"\n aria-labelledby={`${id}-label`}\n aria-describedby={ariaDescribedby}\n >\n {filteredOptions.map((option) => {\n const isSelected = typedValue?.value === option.value\n return (\n <div className=\"ob-button-radio-container\" key={option.value}>\n <OptionButton\n element={element}\n option={option}\n isSelected={isSelected}\n onClick={() => {\n setIsDirty()\n if (!isSelected) {\n handleValueChange(element, {\n value: option.value,\n })\n }\n }}\n className={clsx(\n 'button ob-button ob-button__input ob-radio__button cypress-radio-button-control',\n {\n 'is-primary': isSelected,\n 'is-light': !isSelected,\n },\n )}\n aria-describedby={ariaDescribedby}\n />\n </div>\n )\n })}\n </div>\n </FormElementOptions>\n {isDisplayingValidationMessage && (\n <FormElementValidationMessage message={validationMessage} />\n )}\n <div className=\"buttons ob-buttons ob-buttons-compliance cypress-compliance-button-group\">\n <ComplianceButton\n isActive={isShowingNotes}\n icon=\"notes\"\n onClick={toggleIsShowingNotes}\n disabled={element.readOnly || !typedValue?.value}\n >\n Notes\n </ComplianceButton>\n <ComplianceButton\n isActive={isShowingFiles}\n icon=\"perm_media\"\n onClick={toggleIsShowingFiles}\n disabled={element.readOnly || !typedValue?.value}\n >\n Media\n </ComplianceButton>\n </div>\n {isShowingNotes && (\n <div className=\"ob-compliance-child-element\">\n <FormElementTextarea\n id={`${id}-notes`}\n onChange={handleNotesChange}\n displayValidationMessage={false}\n validationMessage={undefined}\n value={typedValue?.notes}\n element={notesElement}\n isDirty={isDirty}\n setIsDirty={setIsDirty}\n autocompleteAttributes={notesElement.autocompleteAttributes?.join(\n ' ',\n )}\n />\n </div>\n )}\n {isShowingFiles && (\n <div className=\"ob-compliance-child-element\">\n <FormElementFiles\n id={`${id}-files`}\n onChange={handleFilesChange}\n displayValidationMessage={false}\n validationMessage={undefined}\n value={typedValue?.files}\n element={filesElement}\n isDirty={isDirty}\n setIsDirty={setIsDirty}\n />\n </div>\n )}\n </div>\n </FormElementLabelContainer>\n </div>\n )\n}\nexport default React.memo(FormElementCompliance)\n"]}
|
|
@@ -130,7 +130,15 @@ function generateLookupButtonValue(elementDependencies, elements, formSubmission
|
|
|
130
130
|
}
|
|
131
131
|
default: {
|
|
132
132
|
if (formElement && 'name' in formElement) {
|
|
133
|
-
|
|
133
|
+
let dependencyValue = formSubmissionModel[formElement.name];
|
|
134
|
+
// If the dependency is a compliance element, we need to get the value of the compliance element
|
|
135
|
+
// and not trigger the lookup if the notes or files are changing.
|
|
136
|
+
if (formElement.type === 'compliance' &&
|
|
137
|
+
typeof dependencyValue === 'object' &&
|
|
138
|
+
dependencyValue !== null &&
|
|
139
|
+
'value' in dependencyValue) {
|
|
140
|
+
dependencyValue = dependencyValue.value;
|
|
141
|
+
}
|
|
134
142
|
const isAutoLookupChecker = autoLookupElementMap[formElement.type];
|
|
135
143
|
const isFormElementAutoLookup = typeof isAutoLookupChecker === 'function'
|
|
136
144
|
? isAutoLookupChecker(formElement)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormElementLookupButton.js","sourceRoot":"","sources":["../../src/form-elements/FormElementLookupButton.tsx"],"names":[],"mappings":"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","sourcesContent":["import { memo, useCallback, useContext, useEffect, useMemo } from 'react'\nimport LookupButton from '../components/renderer/LookupButton'\nimport { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport FormElementLabelContainer from '../components/renderer/FormElementLabelContainer'\nimport {\n FormElementLookupHandler,\n FormElementValueChangeHandler,\n IsDirtyProps,\n} from '../types/form'\nimport { LookupNotificationContext } from '../hooks/useLookupNotification'\nimport LookupNotification from '../components/renderer/LookupNotification'\nimport useFormSubmissionModel from '../hooks/useFormSubmissionModelContext'\nimport { formElementsService } from '@oneblink/sdk-core'\nimport FormElementValidationMessage from '../components/renderer/FormElementValidationMessage'\n\ntype ValidationMessageProps = {\n displayValidationMessage: boolean\n validationMessage: string | undefined\n} & IsDirtyProps\n\ntype Props = {\n id: string\n element: FormTypes.LookupButtonFormElement\n} & ValidationMessageProps\n\nfunction stringifyLookupButtonValue(v: unknown): string {\n return JSON.stringify(v) as string\n}\n\nconst FormElementLookupButtonValidationMessage = memo(\n function FormElementLookupButtonValidationMessageComponent({\n validationMessage,\n displayValidationMessage,\n isDirty,\n }: ValidationMessageProps) {\n const { isLookingUp } = useContext(LookupNotificationContext)\n const isDisplayingValidationMessage =\n (isDirty || displayValidationMessage) &&\n !!validationMessage &&\n !isLookingUp\n\n if (!isDisplayingValidationMessage) {\n return null\n }\n\n return <FormElementValidationMessage message={validationMessage} />\n },\n)\n\nfunction FormElementLookupButton({\n id,\n element,\n onChange,\n onLookup,\n validationMessage,\n ...validationMessageProps\n}: Props & {\n onChange: FormElementValueChangeHandler\n onLookup: FormElementLookupHandler\n}) {\n const { formSubmissionModel, elements } = useFormSubmissionModel()\n const { isAutoLookup, data } = useMemo(() => {\n return generateLookupButtonValue(\n element.elementDependencies,\n elements,\n formSubmissionModel,\n )\n }, [element.elementDependencies, elements, formSubmissionModel])\n\n const handleLookup = useCallback<FormElementLookupHandler>(\n (setter) => {\n onLookup((data) => {\n const dataAfterSetting = setter(data)\n dataAfterSetting.submission[element.name] = true\n return dataAfterSetting\n })\n },\n [element.name, onLookup],\n )\n\n const stringifyData = useMemo(() => {\n if (!data) {\n return undefined\n }\n return stringifyLookupButtonValue(data)\n }, [data])\n\n useEffect(() => {\n onChange(element, {\n value: false,\n })\n }, [element, onChange, stringifyData])\n\n const value = useMemo(() => {\n // Want the value to be `true` if there is data or if there are\n // no element dependencies i.e. the lookup can be run at any time.\n if (!element.elementDependencies.length || data) {\n return true\n }\n return undefined\n }, [data, element.elementDependencies.length])\n\n return (\n <LookupNotification\n autoLookupValue={isAutoLookup ? stringifyData : undefined}\n element={element}\n onLookup={handleLookup}\n stringifyAutoLookupValue={stringifyLookupButtonValue}\n >\n <div className=\"cypress-lookup-button-element\">\n <FormElementLabelContainer\n className=\"ob-lookup-button\"\n id={id}\n element={element}\n required={false}\n >\n <LookupButton\n value={value}\n validationMessage={validationMessage}\n lookupButtonConfig={element.lookupButton}\n overrideRequiredMessage={element.requiredMessage}\n />\n <FormElementLookupButtonValidationMessage\n validationMessage={validationMessage}\n {...validationMessageProps}\n />\n </FormElementLabelContainer>\n </div>\n </LookupNotification>\n )\n}\n\nexport default memo(FormElementLookupButton)\n\nfunction generateLookupButtonValue(\n elementDependencies: FormTypes.LookupButtonFormElement['elementDependencies'],\n elements: FormTypes.FormElement[],\n formSubmissionModel:\n | SubmissionTypes.S3SubmissionData['submission']\n | undefined,\n): {\n isAutoLookup: boolean\n data: SubmissionTypes.S3SubmissionData['submission'] | undefined\n} {\n if (!formSubmissionModel) {\n return {\n isAutoLookup: false,\n data: undefined,\n }\n }\n\n // \"data\" should be `undefined` if there are no dependent elements with a value.\n // If a least one dependent element has a value, we will enable to lookup to run.\n return elementDependencies.reduce<{\n isAutoLookup: boolean\n data: SubmissionTypes.S3SubmissionData['submission'] | undefined\n }>(\n (memo, elementDependency) => {\n const formElement = formElementsService.findFormElement(\n elements,\n (formElement) => formElement.id === elementDependency.elementId,\n )\n if (!formElement || !('name' in formElement)) {\n return memo\n }\n\n const formElementValue = formSubmissionModel[formElement.name]\n\n switch (elementDependency.type) {\n case 'FORM_FORM_ELEMENT': {\n if (\n formElement.type === 'form' &&\n Array.isArray(formElement.elements)\n ) {\n const nestedLookupButtonValue = generateLookupButtonValue(\n [elementDependency.elementDependency],\n formElement.elements,\n formElementValue as SubmissionTypes.S3SubmissionData['submission'],\n )\n return {\n isAutoLookup:\n memo.isAutoLookup && nestedLookupButtonValue.isAutoLookup,\n data:\n nestedLookupButtonValue.data !== undefined\n ? {\n ...memo.data,\n [formElement.name]: {\n ...(memo?.data?.[formElement.name] || {}),\n ...nestedLookupButtonValue.data,\n },\n }\n : memo.data,\n }\n }\n break\n }\n case 'REPEATABLE_SET_FORM_ELEMENT': {\n if (formElement.type === 'repeatableSet') {\n const entries: {\n isAutoLookup: boolean\n data: Record<\n number,\n SubmissionTypes.S3SubmissionData['submission'] | undefined\n >\n } = {\n isAutoLookup: memo.isAutoLookup,\n data: {},\n }\n let hasAnEntry = false\n const existingEntries =\n (memo.data?.[formElement.name] as object[]) || undefined\n if (Array.isArray(formElementValue)) {\n for (const entry of formElementValue) {\n const index = formElementValue.indexOf(entry)\n const nestedLookupButtonValue = generateLookupButtonValue(\n [elementDependency.elementDependency],\n formElement.elements,\n entry as SubmissionTypes.S3SubmissionData['submission'],\n )\n entries.isAutoLookup =\n entries.isAutoLookup && nestedLookupButtonValue.isAutoLookup\n if (nestedLookupButtonValue.data || existingEntries?.[index]) {\n entries.data[index] = {\n ...existingEntries?.[index],\n ...nestedLookupButtonValue.data,\n }\n hasAnEntry = true\n } else {\n entries.data[index] = undefined\n }\n }\n }\n\n return {\n isAutoLookup: memo.isAutoLookup && entries.isAutoLookup,\n data: hasAnEntry\n ? {\n ...memo.data,\n [formElement.name]: entries.data,\n }\n : memo.data,\n }\n }\n break\n }\n default: {\n if (formElement && 'name' in formElement) {\n const dependencyValue = formSubmissionModel[formElement.name]\n const isAutoLookupChecker = autoLookupElementMap[formElement.type]\n const isFormElementAutoLookup =\n typeof isAutoLookupChecker === 'function'\n ? isAutoLookupChecker(formElement)\n : isAutoLookupChecker\n return {\n isAutoLookup: memo.isAutoLookup && isFormElementAutoLookup,\n data:\n dependencyValue !== undefined && dependencyValue !== null\n ? {\n ...memo.data,\n [formElement.name]: dependencyValue,\n }\n : memo.data,\n }\n }\n break\n }\n }\n\n return memo\n },\n {\n isAutoLookup: true,\n data: undefined,\n },\n )\n}\n\n// Creating an object here so we get a Typescript error when adding a\n// new element type and forgetting to add to the array of allowed types\nconst autoLookupElementMap: Record<\n Exclude<FormTypes.FormElement['type'], 'page'>,\n boolean | ((element: FormTypes.FormElement) => boolean)\n> = {\n text: false,\n textarea: false,\n number: false,\n email: false,\n telephone: false,\n barcodeScanner: false,\n radio: true,\n checkboxes: false,\n select: (formElement) => formElement.type === 'select' && !formElement.multi,\n autocomplete: true,\n boolean: true,\n date: false,\n datetime: false,\n time: false,\n heading: false,\n html: false,\n image: false,\n infoPage: false,\n camera: false,\n repeatableSet: false,\n draw: false,\n calculation: false,\n location: true,\n files: true,\n captcha: false,\n form: false,\n summary: false,\n compliance: true,\n geoscapeAddress: true,\n pointAddress: true,\n pointAddressV3: true,\n googleAddress: false,\n civicaStreetName: true,\n civicaNameRecord: false,\n section: false,\n bsb: false,\n abn: false,\n freshdeskDependentField: false,\n apiNSWLiquorLicence: true,\n arcGISWebMap: true,\n pointCadastralParcel: true,\n lookupButton: false,\n}\n"]}
|
|
1
|
+
{"version":3,"file":"FormElementLookupButton.js","sourceRoot":"","sources":["../../src/form-elements/FormElementLookupButton.tsx"],"names":[],"mappings":"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","sourcesContent":["import { memo, useCallback, useContext, useEffect, useMemo } from 'react'\nimport LookupButton from '../components/renderer/LookupButton'\nimport { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport FormElementLabelContainer from '../components/renderer/FormElementLabelContainer'\nimport {\n FormElementLookupHandler,\n FormElementValueChangeHandler,\n IsDirtyProps,\n} from '../types/form'\nimport { LookupNotificationContext } from '../hooks/useLookupNotification'\nimport LookupNotification from '../components/renderer/LookupNotification'\nimport useFormSubmissionModel from '../hooks/useFormSubmissionModelContext'\nimport { formElementsService } from '@oneblink/sdk-core'\nimport FormElementValidationMessage from '../components/renderer/FormElementValidationMessage'\n\ntype ValidationMessageProps = {\n displayValidationMessage: boolean\n validationMessage: string | undefined\n} & IsDirtyProps\n\ntype Props = {\n id: string\n element: FormTypes.LookupButtonFormElement\n} & ValidationMessageProps\n\nfunction stringifyLookupButtonValue(v: unknown): string {\n return JSON.stringify(v) as string\n}\n\nconst FormElementLookupButtonValidationMessage = memo(\n function FormElementLookupButtonValidationMessageComponent({\n validationMessage,\n displayValidationMessage,\n isDirty,\n }: ValidationMessageProps) {\n const { isLookingUp } = useContext(LookupNotificationContext)\n const isDisplayingValidationMessage =\n (isDirty || displayValidationMessage) &&\n !!validationMessage &&\n !isLookingUp\n\n if (!isDisplayingValidationMessage) {\n return null\n }\n\n return <FormElementValidationMessage message={validationMessage} />\n },\n)\n\nfunction FormElementLookupButton({\n id,\n element,\n onChange,\n onLookup,\n validationMessage,\n ...validationMessageProps\n}: Props & {\n onChange: FormElementValueChangeHandler\n onLookup: FormElementLookupHandler\n}) {\n const { formSubmissionModel, elements } = useFormSubmissionModel()\n const { isAutoLookup, data } = useMemo(() => {\n return generateLookupButtonValue(\n element.elementDependencies,\n elements,\n formSubmissionModel,\n )\n }, [element.elementDependencies, elements, formSubmissionModel])\n\n const handleLookup = useCallback<FormElementLookupHandler>(\n (setter) => {\n onLookup((data) => {\n const dataAfterSetting = setter(data)\n dataAfterSetting.submission[element.name] = true\n return dataAfterSetting\n })\n },\n [element.name, onLookup],\n )\n\n const stringifyData = useMemo(() => {\n if (!data) {\n return undefined\n }\n return stringifyLookupButtonValue(data)\n }, [data])\n\n useEffect(() => {\n onChange(element, {\n value: false,\n })\n }, [element, onChange, stringifyData])\n\n const value = useMemo(() => {\n // Want the value to be `true` if there is data or if there are\n // no element dependencies i.e. the lookup can be run at any time.\n if (!element.elementDependencies.length || data) {\n return true\n }\n return undefined\n }, [data, element.elementDependencies.length])\n\n return (\n <LookupNotification\n autoLookupValue={isAutoLookup ? stringifyData : undefined}\n element={element}\n onLookup={handleLookup}\n stringifyAutoLookupValue={stringifyLookupButtonValue}\n >\n <div className=\"cypress-lookup-button-element\">\n <FormElementLabelContainer\n className=\"ob-lookup-button\"\n id={id}\n element={element}\n required={false}\n >\n <LookupButton\n value={value}\n validationMessage={validationMessage}\n lookupButtonConfig={element.lookupButton}\n overrideRequiredMessage={element.requiredMessage}\n />\n <FormElementLookupButtonValidationMessage\n validationMessage={validationMessage}\n {...validationMessageProps}\n />\n </FormElementLabelContainer>\n </div>\n </LookupNotification>\n )\n}\n\nexport default memo(FormElementLookupButton)\n\nfunction generateLookupButtonValue(\n elementDependencies: FormTypes.LookupButtonFormElement['elementDependencies'],\n elements: FormTypes.FormElement[],\n formSubmissionModel:\n | SubmissionTypes.S3SubmissionData['submission']\n | undefined,\n): {\n isAutoLookup: boolean\n data: SubmissionTypes.S3SubmissionData['submission'] | undefined\n} {\n if (!formSubmissionModel) {\n return {\n isAutoLookup: false,\n data: undefined,\n }\n }\n\n // \"data\" should be `undefined` if there are no dependent elements with a value.\n // If a least one dependent element has a value, we will enable to lookup to run.\n return elementDependencies.reduce<{\n isAutoLookup: boolean\n data: SubmissionTypes.S3SubmissionData['submission'] | undefined\n }>(\n (memo, elementDependency) => {\n const formElement = formElementsService.findFormElement(\n elements,\n (formElement) => formElement.id === elementDependency.elementId,\n )\n if (!formElement || !('name' in formElement)) {\n return memo\n }\n\n const formElementValue = formSubmissionModel[formElement.name]\n\n switch (elementDependency.type) {\n case 'FORM_FORM_ELEMENT': {\n if (\n formElement.type === 'form' &&\n Array.isArray(formElement.elements)\n ) {\n const nestedLookupButtonValue = generateLookupButtonValue(\n [elementDependency.elementDependency],\n formElement.elements,\n formElementValue as SubmissionTypes.S3SubmissionData['submission'],\n )\n return {\n isAutoLookup:\n memo.isAutoLookup && nestedLookupButtonValue.isAutoLookup,\n data:\n nestedLookupButtonValue.data !== undefined\n ? {\n ...memo.data,\n [formElement.name]: {\n ...(memo?.data?.[formElement.name] || {}),\n ...nestedLookupButtonValue.data,\n },\n }\n : memo.data,\n }\n }\n break\n }\n case 'REPEATABLE_SET_FORM_ELEMENT': {\n if (formElement.type === 'repeatableSet') {\n const entries: {\n isAutoLookup: boolean\n data: Record<\n number,\n SubmissionTypes.S3SubmissionData['submission'] | undefined\n >\n } = {\n isAutoLookup: memo.isAutoLookup,\n data: {},\n }\n let hasAnEntry = false\n const existingEntries =\n (memo.data?.[formElement.name] as object[]) || undefined\n if (Array.isArray(formElementValue)) {\n for (const entry of formElementValue) {\n const index = formElementValue.indexOf(entry)\n const nestedLookupButtonValue = generateLookupButtonValue(\n [elementDependency.elementDependency],\n formElement.elements,\n entry as SubmissionTypes.S3SubmissionData['submission'],\n )\n entries.isAutoLookup =\n entries.isAutoLookup && nestedLookupButtonValue.isAutoLookup\n if (nestedLookupButtonValue.data || existingEntries?.[index]) {\n entries.data[index] = {\n ...existingEntries?.[index],\n ...nestedLookupButtonValue.data,\n }\n hasAnEntry = true\n } else {\n entries.data[index] = undefined\n }\n }\n }\n\n return {\n isAutoLookup: memo.isAutoLookup && entries.isAutoLookup,\n data: hasAnEntry\n ? {\n ...memo.data,\n [formElement.name]: entries.data,\n }\n : memo.data,\n }\n }\n break\n }\n default: {\n if (formElement && 'name' in formElement) {\n let dependencyValue = formSubmissionModel[formElement.name]\n // If the dependency is a compliance element, we need to get the value of the compliance element\n // and not trigger the lookup if the notes or files are changing.\n if (\n formElement.type === 'compliance' &&\n typeof dependencyValue === 'object' &&\n dependencyValue !== null &&\n 'value' in dependencyValue\n ) {\n dependencyValue = dependencyValue.value\n }\n const isAutoLookupChecker = autoLookupElementMap[formElement.type]\n const isFormElementAutoLookup =\n typeof isAutoLookupChecker === 'function'\n ? isAutoLookupChecker(formElement)\n : isAutoLookupChecker\n return {\n isAutoLookup: memo.isAutoLookup && isFormElementAutoLookup,\n data:\n dependencyValue !== undefined && dependencyValue !== null\n ? {\n ...memo.data,\n [formElement.name]: dependencyValue,\n }\n : memo.data,\n }\n }\n break\n }\n }\n\n return memo\n },\n {\n isAutoLookup: true,\n data: undefined,\n },\n )\n}\n\n// Creating an object here so we get a Typescript error when adding a\n// new element type and forgetting to add to the array of allowed types\nconst autoLookupElementMap: Record<\n Exclude<FormTypes.FormElement['type'], 'page'>,\n boolean | ((element: FormTypes.FormElement) => boolean)\n> = {\n text: false,\n textarea: false,\n number: false,\n email: false,\n telephone: false,\n barcodeScanner: false,\n radio: true,\n checkboxes: false,\n select: (formElement) => formElement.type === 'select' && !formElement.multi,\n autocomplete: true,\n boolean: true,\n date: false,\n datetime: false,\n time: false,\n heading: false,\n html: false,\n image: false,\n infoPage: false,\n camera: false,\n repeatableSet: false,\n draw: false,\n calculation: false,\n location: true,\n files: true,\n captcha: false,\n form: false,\n summary: false,\n compliance: true,\n geoscapeAddress: true,\n pointAddress: true,\n pointAddressV3: true,\n googleAddress: false,\n civicaStreetName: true,\n civicaNameRecord: false,\n section: false,\n bsb: false,\n abn: false,\n freshdeskDependentField: false,\n apiNSWLiquorLicence: true,\n arcGISWebMap: true,\n pointCadastralParcel: true,\n lookupButton: false,\n}\n"]}
|
|
@@ -20,7 +20,7 @@ function FormElementRadio({ id, element, value, onChange, conditionallyShownOpti
|
|
|
20
20
|
});
|
|
21
21
|
const { isLookingUp } = React.useContext(LookupNotificationContext);
|
|
22
22
|
const isDisplayingValidationMessage = (isDirty || displayValidationMessage) && !!validationMessage && !isLookingUp;
|
|
23
|
-
return (_jsx("div", { className: "cypress-radio-element", children: _jsxs(FormElementLabelContainer, { className: "ob-radio", id: id, element: element, required: element.required, children: [_jsx(FormElementOptions, { options: element.options, conditionallyShownOptionsElement: conditionallyShownOptionsElement, children: !element.buttons ? (_jsx(RadioGroup, { className: "ob-radio-container", "aria-labelledby": `${id}-label`, "aria-describedby": ariaDescribedby, onBlur: setIsDirty, children: filteredOptions.map((option) => (_jsx("div", { className: "control", children: _jsxs("label", { className: "radio ob-radio__input-label cypress-radio-label", htmlFor: `${id}_${option.value}`, children: [_jsx(Radio, { color: "primary", className: "ob-radio__input cypress-radio-control", classes: {
|
|
23
|
+
return (_jsx("div", { className: "cypress-radio-element", children: _jsxs(FormElementLabelContainer, { className: "ob-radio", id: id, element: element, required: element.required, associateLabelWithInput: false, children: [_jsx(FormElementOptions, { options: element.options, conditionallyShownOptionsElement: conditionallyShownOptionsElement, children: !element.buttons ? (_jsx(RadioGroup, { className: "ob-radio-container", "aria-labelledby": `${id}-label`, "aria-describedby": ariaDescribedby, onBlur: setIsDirty, children: filteredOptions.map((option) => (_jsx("div", { className: "control", children: _jsxs("label", { className: "radio ob-radio__input-label cypress-radio-label", htmlFor: `${id}_${option.value}`, children: [_jsx(Radio, { color: "primary", className: "ob-radio__input cypress-radio-control", classes: {
|
|
24
24
|
checked: 'ob-radio__input-checked',
|
|
25
25
|
}, value: option.value || '', id: `${id}_${option.value}`, disabled: element.readOnly, checked: value === option.value, onChange: (e) => {
|
|
26
26
|
setIsDirty();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormElementRadio.js","sourceRoot":"","sources":["../../src/form-elements/FormElementRadio.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAEjD,OAAO,kBAAkB,MAAM,2CAA2C,CAAA;AAC1E,OAAO,qBAAqB,MAAM,gCAAgC,CAAA;AAElE,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,yBAAyB,MAAM,kDAAkD,CAAA;AAOxF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC1E,OAAO,yBAAyB,MAAM,oCAAoC,CAAA;AAC1E,OAAO,4BAA4B,MAAM,qDAAqD,CAAA;AAe9F,SAAS,gBAAgB,CAAC,EACxB,EAAE,EACF,OAAO,EACP,KAAK,EACL,QAAQ,EACR,gCAAgC,EAChC,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EACpB,OAAO,EACP,UAAU,GACJ;IACN,MAAM,eAAe,GAAG,yBAAyB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAC9D,MAAM,eAAe,GAAG,qBAAqB,CAAC;QAC5C,OAAO;QACP,KAAK;QACL,QAAQ;QACR,gCAAgC;QAChC,oBAAoB;KACrB,CAAC,CAAA;IAEF,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAA;IACnE,MAAM,6BAA6B,GACjC,CAAC,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,iBAAiB,IAAI,CAAC,WAAW,CAAA;IAE9E,OAAO,CACL,cAAK,SAAS,EAAC,uBAAuB,YACpC,MAAC,yBAAyB,IACxB,SAAS,EAAC,UAAU,EACpB,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"FormElementRadio.js","sourceRoot":"","sources":["../../src/form-elements/FormElementRadio.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport clsx from 'clsx'\nimport { Radio, RadioGroup } from '@mui/material'\n\nimport FormElementOptions from '../components/renderer/FormElementOptions'\nimport useFormElementOptions from '../hooks/useFormElementOptions'\nimport { FormTypes } from '@oneblink/types'\nimport OptionButton from './OptionButton'\nimport FormElementLabelContainer from '../components/renderer/FormElementLabelContainer'\nimport {\n FormElementValueChangeHandler,\n FormElementConditionallyShownElement,\n IsDirtyProps,\n UpdateFormElementsHandler,\n} from '../types/form'\nimport { LookupNotificationContext } from '../hooks/useLookupNotification'\nimport useElementAriaDescribedby from '../hooks/useElementAriaDescribedby'\nimport FormElementValidationMessage from '../components/renderer/FormElementValidationMessage'\n\ntype Props = {\n id: string\n element: FormTypes.RadioButtonElement\n value: unknown\n onChange: FormElementValueChangeHandler<string>\n displayValidationMessage: boolean\n validationMessage: string | undefined\n conditionallyShownOptionsElement:\n | FormElementConditionallyShownElement\n | undefined\n onUpdateFormElements: UpdateFormElementsHandler\n} & IsDirtyProps\n\nfunction FormElementRadio({\n id,\n element,\n value,\n onChange,\n conditionallyShownOptionsElement,\n validationMessage,\n displayValidationMessage,\n onUpdateFormElements,\n isDirty,\n setIsDirty,\n}: Props) {\n const ariaDescribedby = useElementAriaDescribedby(id, element)\n const filteredOptions = useFormElementOptions({\n element,\n value,\n onChange,\n conditionallyShownOptionsElement,\n onUpdateFormElements,\n })\n\n const { isLookingUp } = React.useContext(LookupNotificationContext)\n const isDisplayingValidationMessage =\n (isDirty || displayValidationMessage) && !!validationMessage && !isLookingUp\n\n return (\n <div className=\"cypress-radio-element\">\n <FormElementLabelContainer\n className=\"ob-radio\"\n id={id}\n element={element}\n required={element.required}\n associateLabelWithInput={false}\n >\n <FormElementOptions\n options={element.options}\n conditionallyShownOptionsElement={conditionallyShownOptionsElement}\n >\n {!element.buttons ? (\n <RadioGroup\n className=\"ob-radio-container\"\n aria-labelledby={`${id}-label`}\n aria-describedby={ariaDescribedby}\n onBlur={setIsDirty}\n >\n {filteredOptions.map((option) => (\n <div className=\"control\" key={option.value}>\n <label\n className=\"radio ob-radio__input-label cypress-radio-label\"\n htmlFor={`${id}_${option.value}`}\n >\n <Radio\n color=\"primary\"\n className=\"ob-radio__input cypress-radio-control\"\n classes={{\n checked: 'ob-radio__input-checked',\n }}\n value={option.value || ''}\n id={`${id}_${option.value}`}\n disabled={element.readOnly}\n checked={value === option.value}\n onChange={(e) => {\n setIsDirty()\n onChange(element, {\n value: e.target.value,\n })\n }}\n edge=\"start\"\n />\n {` ${option.label}`}\n </label>\n </div>\n ))}\n </RadioGroup>\n ) : (\n <div\n className=\"buttons ob-buttons ob-buttons-radio cypress-radio-button-group\"\n role=\"group\"\n aria-labelledby={`${id}-label`}\n aria-describedby={ariaDescribedby}\n >\n {filteredOptions.map((option, index) => {\n const isSelected = value === option.value\n return (\n <div className=\"ob-button-radio-container\" key={option.value}>\n <OptionButton\n element={element}\n option={option}\n isSelected={isSelected}\n onClick={() => {\n if (!isSelected) {\n setIsDirty()\n onChange(element, {\n value: option.value,\n })\n }\n }}\n className={clsx(\n 'button ob-button ob-button__input ob-radio__button cypress-radio-button-control',\n {\n 'is-primary': isSelected,\n 'is-light': !isSelected,\n },\n )}\n aria-describedby={ariaDescribedby}\n onBlur={() => {\n if (index === filteredOptions.length - 1) {\n setIsDirty()\n }\n }}\n />\n </div>\n )\n })}\n </div>\n )}\n </FormElementOptions>\n\n {isDisplayingValidationMessage && (\n <FormElementValidationMessage message={validationMessage} />\n )}\n </FormElementLabelContainer>\n </div>\n )\n}\nexport default React.memo(FormElementRadio)\n"]}
|
package/dist/types/form.d.ts
CHANGED
|
@@ -23,8 +23,16 @@ export type FormElementValueChangeHandler<T = unknown> = ValueChangeHandler<{
|
|
|
23
23
|
export type SectionState = NewS3SubmissionData['sectionState'];
|
|
24
24
|
export type NestedFormElementValueChangeHandler<T = unknown> = ValueChangeHandler<{
|
|
25
25
|
value?: T | ((existingValue?: T) => T | undefined);
|
|
26
|
+
/**
|
|
27
|
+
* The executed lookups to preserve when the nested element is changed,
|
|
28
|
+
* setting to undefined indicate the lookup has not been executed.
|
|
29
|
+
*/
|
|
26
30
|
executedLookups: ExecutedLookupValue | ((currentExecutedLookups: ExecutedLookupValue) => ExecutedLookupValue);
|
|
27
31
|
deleteSection?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* The section state to preserve when the nested element is changed, setting
|
|
34
|
+
* to undefined will not update the section state
|
|
35
|
+
*/
|
|
28
36
|
sectionState: SectionState | ((currentSectionState: SectionState) => SectionState);
|
|
29
37
|
}>;
|
|
30
38
|
export type FormElementLookupHandler = (setter: (data: {
|
package/dist/types/form.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/types/form.ts"],"names":[],"mappings":"","sourcesContent":["import { FormTypes, SubmissionTypes, IntegrationTypes } from '@oneblink/types'\nimport { NewS3SubmissionData } from '@oneblink/types/typescript/submissions'\n\nexport {\n FormElementConditionallyShownElement,\n FormElementConditionallyShown,\n FormElementsConditionallyShown,\n} from '@oneblink/sdk-core/dist/conditionalLogicService'\n\nexport type FormElementKey = string\nexport type RepeatableSetEntryIndex = string\n\nexport type FormElementsValidation = Record<\n FormElementKey,\n FormElementValidation\n>\n\nexport type FormElementValidation =\n | undefined\n | string\n | {\n type: 'formElements'\n formElements: FormElementsValidation | undefined\n }\n | {\n type: 'repeatableSet'\n set: string | undefined\n entries: Record<\n RepeatableSetEntryIndex,\n FormElementsValidation | undefined\n >\n }\n\nexport type ExecutedLookups =\n | {\n [elementName: string]:\n | boolean\n | ExecutedLookups\n | ExecutedLookups[]\n | undefined\n }\n | undefined\n\nexport type ExecutedLookupValue = NonNullable<ExecutedLookups>[string]\n\ntype ValueChangeHandler<U extends Record<string, unknown>> = (\n element: FormTypes.FormElement,\n opts: U,\n idPrefix?: string,\n) => void\n\nexport type FormElementValueChangeHandler<T = unknown> = ValueChangeHandler<{\n value?: T | ((existingValue?: T) => T | undefined)\n}>\n\nexport type SectionState = NewS3SubmissionData['sectionState']\n\nexport type NestedFormElementValueChangeHandler<T = unknown> =\n ValueChangeHandler<{\n value?: T | ((existingValue?: T) => T | undefined)\n executedLookups:\n | ExecutedLookupValue\n | ((currentExecutedLookups: ExecutedLookupValue) => ExecutedLookupValue)\n deleteSection?: boolean\n sectionState
|
|
1
|
+
{"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/types/form.ts"],"names":[],"mappings":"","sourcesContent":["import { FormTypes, SubmissionTypes, IntegrationTypes } from '@oneblink/types'\nimport { NewS3SubmissionData } from '@oneblink/types/typescript/submissions'\n\nexport {\n FormElementConditionallyShownElement,\n FormElementConditionallyShown,\n FormElementsConditionallyShown,\n} from '@oneblink/sdk-core/dist/conditionalLogicService'\n\nexport type FormElementKey = string\nexport type RepeatableSetEntryIndex = string\n\nexport type FormElementsValidation = Record<\n FormElementKey,\n FormElementValidation\n>\n\nexport type FormElementValidation =\n | undefined\n | string\n | {\n type: 'formElements'\n formElements: FormElementsValidation | undefined\n }\n | {\n type: 'repeatableSet'\n set: string | undefined\n entries: Record<\n RepeatableSetEntryIndex,\n FormElementsValidation | undefined\n >\n }\n\nexport type ExecutedLookups =\n | {\n [elementName: string]:\n | boolean\n | ExecutedLookups\n | ExecutedLookups[]\n | undefined\n }\n | undefined\n\nexport type ExecutedLookupValue = NonNullable<ExecutedLookups>[string]\n\ntype ValueChangeHandler<U extends Record<string, unknown>> = (\n element: FormTypes.FormElement,\n opts: U,\n idPrefix?: string,\n) => void\n\nexport type FormElementValueChangeHandler<T = unknown> = ValueChangeHandler<{\n value?: T | ((existingValue?: T) => T | undefined)\n}>\n\nexport type SectionState = NewS3SubmissionData['sectionState']\n\nexport type NestedFormElementValueChangeHandler<T = unknown> =\n ValueChangeHandler<{\n value?: T | ((existingValue?: T) => T | undefined)\n /**\n * The executed lookups to preserve when the nested element is changed,\n * setting to undefined indicate the lookup has not been executed.\n */\n executedLookups:\n | ExecutedLookupValue\n | ((currentExecutedLookups: ExecutedLookupValue) => ExecutedLookupValue)\n deleteSection?: boolean\n /**\n * The section state to preserve when the nested element is changed, setting\n * to undefined will not update the section state\n */\n sectionState:\n | SectionState\n | ((currentSectionState: SectionState) => SectionState)\n }>\n\nexport type FormElementLookupHandler = (\n setter: (data: {\n submission: SubmissionTypes.S3SubmissionData['submission']\n elements: FormTypes.FormElement[]\n lastElementUpdated: FormTypes.FormElement | undefined\n executedLookups: ExecutedLookups\n sectionState: SectionState | undefined\n }) => {\n submission: SubmissionTypes.S3SubmissionData['submission']\n elements: FormTypes.FormElement[]\n executedLookups: ExecutedLookups\n },\n) => void\n\nexport type UpdateFormElementsHandler = (\n setter: (element: FormTypes.FormElement[]) => FormTypes.FormElement[],\n) => void\n\nexport type SetFormSubmission = React.Dispatch<\n React.SetStateAction<{\n definition: FormTypes.Form\n submission: SubmissionTypes.S3SubmissionData['submission']\n lastElementUpdated: FormTypes.FormElement | undefined\n executedLookups: ExecutedLookups\n sectionState: SectionState | undefined\n }>\n>\n\nexport type IsDirtyProps = {\n isDirty: boolean\n setIsDirty: () => void\n}\n\nexport type CaptchaType = NonNullable<\n IntegrationTypes.IntegrationRecaptcha['configuration']['domains'][number]['type']\n>\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oneblink/apps-react",
|
|
3
3
|
"description": "Helper functions for OneBlink apps in ReactJS.",
|
|
4
|
-
"version": "10.3.1-beta.
|
|
4
|
+
"version": "10.3.1-beta.5",
|
|
5
5
|
"author": "OneBlink <developers@oneblink.io> (https://oneblink.io)",
|
|
6
6
|
"bugs": {
|
|
7
7
|
"url": "https://github.com/oneblink/apps-react/issues"
|
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
"copy:sass": "copyfiles -u 1 ./src/styles.scss ./dist",
|
|
133
133
|
"copy:styles": "copyfiles -u 1 ./src/styles/* ./dist",
|
|
134
134
|
"docs": "typedoc",
|
|
135
|
-
"eslint": "eslint
|
|
135
|
+
"eslint": "eslint src --fix --cache",
|
|
136
136
|
"fixpack": "fixpack",
|
|
137
137
|
"format": "prettier --write .",
|
|
138
138
|
"prepare": "npm run build",
|