@@ -43,15 +43,17 @@ import {
4343 buildFormSubmission ,
4444} from '@snowplow/tracker-core' ;
4545
46- export interface FormTrackingOptions {
47- forms : FilterCriterion < HTMLElement > ;
48- fields : FilterCriterion < TrackedHTMLElement > & { transform : transformFn } ;
46+ /** The form tracking configuration */
47+ export interface FormTrackingConfiguration {
48+ /** The options which can be configured for the form tracking events */
49+ options ?: FormTrackingOptions ;
50+ /** The dyanmic context which will be evaluated for each form event */
51+ context ?: DynamicContext | null ;
4952}
5053
51- export interface FormConfiguration {
52- formFilter : ( _ : HTMLFormElement ) => boolean ;
53- fieldFilter : ( _ : TrackedHTMLElement ) => boolean ;
54- fieldTransform : transformFn ;
54+ export interface FormTrackingOptions {
55+ forms ?: FilterCriterion < HTMLElement > ;
56+ fields ?: FilterCriterion < TrackedHTMLElement > & { transform : transformFn } ;
5557}
5658
5759export interface TrackedHTMLElementTagNameMap {
@@ -75,17 +77,20 @@ export const innerElementTags: Array<keyof TrackedHTMLElementTagNameMap> = ['tex
7577
7678const defaultTransformFn : transformFn = ( x ) => x ;
7779
80+ interface FormConfiguration {
81+ formFilter : ( _ : HTMLFormElement ) => boolean ;
82+ fieldFilter : ( _ : TrackedHTMLElement ) => boolean ;
83+ fieldTransform : transformFn ;
84+ }
85+
7886/*
7987 * Add submission event listeners to all form elements
8088 * Add value change event listeners to all mutable inner form elements
8189 */
82- export function addFormListeners (
83- tracker : BrowserTracker ,
84- formConfiguration ?: FormTrackingOptions ,
85- context ?: DynamicContext | null
86- ) {
87- const trackingMarker = tracker . id + 'form' ,
88- config = getConfigurationForOptions ( formConfiguration ) ;
90+ export function addFormListeners ( tracker : BrowserTracker , configuration : FormTrackingConfiguration ) {
91+ const { options, context } = configuration ,
92+ trackingMarker = tracker . id + 'form' ,
93+ config = getConfigurationForOptions ( options ) ;
8994
9095 Array . prototype . slice . call ( document . getElementsByTagName ( 'form' ) ) . forEach ( function ( form ) {
9196 if ( config . formFilter ( form ) && ! form [ trackingMarker ] ) {
@@ -143,8 +148,8 @@ function getConfigurationForOptions(options?: FormTrackingOptions) {
143148 *
144149 * @param object criterion {transform: function (elt) {return the result of transform function applied to element}
145150 */
146- function getTransform ( criterion : { transform : transformFn } ) : transformFn {
147- if ( Object . prototype . hasOwnProperty . call ( criterion , 'transform' ) ) {
151+ function getTransform ( criterion ? : { transform : transformFn } ) : transformFn {
152+ if ( criterion && Object . prototype . hasOwnProperty . call ( criterion , 'transform' ) ) {
148153 return criterion . transform ;
149154 }
150155
0 commit comments