Skip to content

Instantly share code, notes, and snippets.

@moo2u2
Created May 4, 2023 02:25
Show Gist options
  • Save moo2u2/eeaa8b61ef714837f4312b273d1832c3 to your computer and use it in GitHub Desktop.
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.
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