Created
May 4, 2023 02:25
-
-
Save moo2u2/eeaa8b61ef714837f4312b273d1832c3 to your computer and use it in GitHub Desktop.
Sitecore (headless) Forms custom field factory with hidden field using query string value provider. Sets the value of the hidden field as a given value from the query string.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { useRouter } from 'next/router'; | |
import { | |
FieldViewModel, | |
InputViewModel | |
} from '@sitecore-jss/sitecore-jss-forms'; | |
import { | |
createDefaultFieldFactory, | |
ValueFieldProps | |
} from '@sitecore-jss/sitecore-jss-react-forms'; | |
export interface ValueProviderViewModel extends FieldViewModel { | |
valueProviderSettings: { | |
valueProviderItemId: string; | |
parameters: string; | |
}; | |
} | |
export interface ValueProviderInputViewModel extends InputViewModel, ValueProviderViewModel {} | |
const CustomFieldFactory = createDefaultFieldFactory(); | |
// GUID for Hidden field - /sitecore/system/Settings/Forms/Field Types/Basic/Hidden | |
CustomFieldFactory.setComponent('{B67C70C1-6776-4BCB-8529-AA28E02F6412}', ({ field }: ValueFieldProps<ValueProviderInputViewModel>) => { | |
const router = useRouter(); | |
// GUID is for Query String Value Provider | |
// https://github.com/bartverdonck/Sitecore-Forms-Extensions/blob/master/src/Feature/FormsExtensions/items/ValueProviders/Value%20Providers/URL%20Parameter%20-%20Query%20String.yml | |
if(field.model.valueProviderSettings.valueProviderItemId == '{ACF6ABAD-6B2C-4294-808B-02FED11552A2}') | |
field.model.value = router.query[field.model.valueProviderSettings.parameters] as string; | |
return ( | |
<input type="hidden" id={field.valueField.id} name={field.valueField.name} value={field.model.value as string} /> | |
); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment