eddev 2.1.0 → 2.1.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/integrations/gravityforms/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/integrations/gravityforms/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACrE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAE9D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAA;IACnD,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAA;IACtE,oBAAoB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IACxC,oBAAoB,EAAE,MAAM,CAAA;IAC5B,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAA;AAE1B,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,iBAAiB,EAAE,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oBAAoB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,EAAE,CAAA;QACf,IAAI,EAAE,MAAM,CAAA;QACZ,yBAAyB,CAAC,EAAE,MAAM,CAAA;KACnC,CAAA;IACD,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;CACF,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;KACxB,CAAC,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK;CACnG,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;KAC1B,CAAC,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAC,GAAG,QAAQ,GAAG,KAAK;CACvG,CAAA;AAED,MAAM,MAAM,YAAY,CAAC,KAAK,EAAE,QAAQ,IAAI,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG;IACpF,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,SAAS,CAAA;CAC9G,CAAA;AAED,MAAM,MAAM,gBAAgB,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,SAAS,CAAA;AAEnG,MAAM,MAAM,eAAe,CAAC,KAAK,EAAE,QAAQ,IAAI;IAC7C,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,KAAK,GAAG,SAAS,CAAA;IAC5D,UAAU,CAAC,KAAK,EAAE,iBAAiB,GAAG,QAAQ,CAAA;IAC9C,gBAAgB,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC7D,UAAU,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3F,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,eAAe,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AAE/G,0DAA0D;AAC1D,MAAM,MAAM,OAAO,CAAC,QAAQ,SAAS,eAAe,IAAI,QAAQ,SAAS,MAAM,YAAY,GACvF,YAAY,CAAC,QAAQ,CAAC,GACtB,GAAG,CAAA;AAEP,wDAAwD;AACxD,MAAM,MAAM,SAAS,CAAC,QAAQ,SAAS,eAAe,IAAI,QAAQ,SAAS,MAAM,cAAc,GAC3F,cAAc,CAAC,QAAQ,CAAC,GACxB,EAAE,CAAA;AAEN,MAAM,MAAM,mBAAmB,GAAG;KAC/B,QAAQ,IAAI,eAAe,CAAC,CAAC,EAAE,aAAa,CAC3C,sBAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,SAAS,MAAM,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CACjH;CACF,CAAA"}
@@ -1,14 +1,54 @@
1
1
  import { GravityFormData, GravityFormsField } from "./types.js";
2
2
  type Options = {
3
3
  form: GravityFormData;
4
+ prepopulate?: {
5
+ [key: string]: any;
6
+ };
4
7
  };
8
+ export type UseGravityFormResult = ReturnType<typeof useGravityForm>;
5
9
  export type GravityFormsFieldState<T = any, TExtra = {}> = GravityFormsField & {
6
10
  value: T | undefined;
7
11
  error: string | undefined;
8
12
  set(value: T | undefined): void;
9
13
  } & TExtra;
14
+ export type GFLayoutFieldsItem = {
15
+ type: "fields";
16
+ fields: GravityFormsFieldState[];
17
+ };
18
+ export type GFLayoutHeadingItem = {
19
+ type: "heading";
20
+ text: string;
21
+ className?: string;
22
+ };
23
+ export type GFLayoutItem = {
24
+ type: "fields";
25
+ fields: GravityFormsFieldState[];
26
+ } | {
27
+ type: "heading";
28
+ text: string;
29
+ className?: string;
30
+ };
31
+ export type GFLayoutType = {
32
+ type: "page";
33
+ page: number;
34
+ title?: string;
35
+ items: GFLayoutItem[];
36
+ } | {
37
+ type: "success";
38
+ message: string;
39
+ };
10
40
  export declare function useGravityForm(opts: Options): {
41
+ submitLabel: string;
42
+ pageInfo: {
43
+ title?: string;
44
+ } | null;
45
+ canGoBack: boolean;
46
+ canGoForward: boolean;
47
+ goBack: (() => void) | null;
48
+ goForward: (() => void) | null;
49
+ goToPage: (num: number) => void;
11
50
  fields: GravityFormsFieldState<any, {}>[];
51
+ layout: GFLayoutType;
12
52
  submit(): void;
13
53
  updateField(id: number, value: any): void;
14
54
  submitting: boolean;
@@ -16,6 +56,10 @@ export declare function useGravityForm(opts: Options): {
16
56
  successMessage: string | null;
17
57
  mainError: string | null;
18
58
  hasErrors: boolean;
59
+ page: number;
60
+ pages: {
61
+ title?: string;
62
+ }[];
19
63
  values: {
20
64
  [key: number]: any;
21
65
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useGravityForm.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/integrations/gravityforms/useGravityForm.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,eAAe,EACf,iBAAiB,EAClB,MAAM,YAAY,CAAA;AAEnB,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,eAAe,CAAA;CACtB,CAAA;AAiBD,MAAM,MAAM,sBAAsB,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,iBAAiB,GAAG;IAC7E,KAAK,EAAE,CAAC,GAAG,SAAS,CAAA;IACpB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,CAAA;CAChC,GAAG,MAAM,CAAA;AAgKV,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO;;;oBA6CxB,MAAM,SAAS,GAAG;gBA/NxB,OAAO;cACT,OAAO;oBACD,MAAM,GAAG,IAAI;eAClB,MAAM,GAAG,IAAI;eACb,OAAO;YACV;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;YACtB;QACN,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAClC;cACS;QACR,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB;EAwNF;AAED,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA"}
1
+ {"version":3,"file":"useGravityForm.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/integrations/gravityforms/useGravityForm.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE/E,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,eAAe,CAAA;IACrB,WAAW,CAAC,EAAE;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACnB,CAAA;CACF,CAAA;AAsBD,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAEpE,MAAM,MAAM,sBAAsB,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,iBAAiB,GAAG;IAC7E,KAAK,EAAE,CAAC,GAAG,SAAS,CAAA;IACpB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,CAAA;CAChC,GAAG,MAAM,CAAA;AAEV,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,EAAE,sBAAsB,EAAE,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,YAAY,GACpB;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,EAAE,sBAAsB,EAAE,CAAA;CACjC,GACD;IACE,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAEL,MAAM,MAAM,YAAY,GACpB;IACE,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,YAAY,EAAE,CAAA;CACtB,GACD;IACE,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AA4HL,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO;;;gBAhLhC,MAAM;;;;;;oBAoSE,MAAM;;YAWZ,YAAY;;oBAQN,MAAM,SAAS,GAAG;gBA9TxB,OAAO;cACT,OAAO;oBACD,MAAM,GAAG,IAAI;eAClB,MAAM,GAAG,IAAI;eACb,OAAO;UACZ,MAAM;WACL;QACL,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,EAAE;YACK;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;YACtB;QACN,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAClC;cACS;QACR,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB;EAmTF;AAED,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA"}
@@ -1,6 +1,5 @@
1
- import { useEffect } from "react";
2
- import { useState } from "react";
3
- import { useReducer } from "react";
1
+ import { useEffect, useMemo, useReducer, useState } from "react";
2
+ import { getBuiltinType } from "./field-types.js";
4
3
  const reducer = (state, action) => {
5
4
  switch (action.type) {
6
5
  case "field":
@@ -56,6 +55,11 @@ const reducer = (state, action) => {
56
55
  [action.id]: undefined,
57
56
  },
58
57
  };
58
+ case "goToPage":
59
+ return {
60
+ ...state,
61
+ page: action.number,
62
+ };
59
63
  default:
60
64
  throw new Error(`Unknown GravityForms action ${JSON.stringify(action)}`);
61
65
  }
@@ -67,75 +71,33 @@ const initializer = (form) => {
67
71
  submitting: false,
68
72
  mainError: null,
69
73
  complete: false,
74
+ page: 0,
75
+ pages: form?.pagination
76
+ ? form.pagination.pages.map((title, i) => ({
77
+ number: i,
78
+ title,
79
+ }))
80
+ : [],
70
81
  successMessage: null,
71
82
  hasErrors: false,
72
83
  values: initialValues,
73
84
  errors: {},
74
85
  validity: {},
86
+ submitLabel: form.button?.text || "Submit",
75
87
  };
76
88
  };
77
89
  function optionsForField(field) {
78
- if (field.type === "fileupload") {
79
- return {
80
- allowedExtensions: field.allowedExtensions?.split(/\s*,\s*/g) ?? [],
81
- maxFileSize: field.maxFileSize ? parseFloat(field.maxFileSize) : undefined,
82
- multiple: field.multipleFiles ? true : false,
83
- maxFiles: field.maxFiles ? parseInt(field.maxFiles) : undefined,
84
- };
85
- }
86
- else if (field.type === "address") {
87
- const subfield = (id, name) => {
88
- const item = field.inputs.find((input) => String(input.id).endsWith("." + id));
89
- return {
90
- name: name,
91
- visible: !item?.isHidden,
92
- placeholder: item?.placeholder,
93
- label: item?.customLabel ?? item?.label,
94
- autocomplete: item?.autocompleteAttribute,
95
- };
96
- };
97
- return {
98
- addressType: field.addressType,
99
- defaultCountry: field.defaultCountry,
100
- defaultState: field.defaultState,
101
- subfields: {
102
- address1: subfield(1, "address1"),
103
- address2: subfield(2, "address2"),
104
- city: subfield(3, "city"),
105
- state: subfield(4, "state"),
106
- zip: subfield(5, "zip"),
107
- country: subfield(6, "country"),
108
- },
109
- };
110
- }
111
- else if (field.type === "name") {
112
- const subfield = (id, name) => {
113
- const item = field.inputs.find((input) => String(input.id).endsWith("." + id));
114
- return {
115
- name: name,
116
- visible: !item?.isHidden,
117
- placeholder: item?.placeholder,
118
- label: item?.customLabel ?? item?.label,
119
- autocomplete: item?.autocompleteAttribute,
120
- choices: item?.choices,
121
- };
122
- };
123
- return {
124
- subfields: {
125
- prefix: subfield(2, "prefix"),
126
- first: subfield(3, "first"),
127
- middle: subfield(4, "middle"),
128
- last: subfield(6, "last"),
129
- suffix: subfield(8, "suffix"),
130
- },
131
- };
132
- }
133
- return {};
90
+ return getBuiltinType(field.type)?.getOptions(field) || {};
134
91
  }
135
92
  export function useGravityForm(opts) {
136
93
  const { form } = opts;
94
+ useMemo(() => {
95
+ for (const field of form.fields) {
96
+ field.descriptionPlacement = field.descriptionPlacement || form.descriptionPlacement || "below";
97
+ }
98
+ }, [form]);
137
99
  const [state, dispatch] = useReducer(reducer, form, initializer);
138
- const fields = form.fields.map((field) => ({
100
+ const fields = useMemo(() => form.fields.map((field) => ({
139
101
  ...field,
140
102
  value: state.values[field.id],
141
103
  error: state.errors[field.id],
@@ -144,7 +106,52 @@ export function useGravityForm(opts) {
144
106
  },
145
107
  ...optionsForField(field),
146
108
  showLabel: field.labelPlacement !== "hidden_label",
147
- }));
109
+ })), [state, form.fields]);
110
+ const fieldsLayout = useMemo(() => {
111
+ const layout = [];
112
+ const fieldGroups = new Map();
113
+ for (const field of fields) {
114
+ if (field.type === "hidden")
115
+ continue;
116
+ if (field.visibility === "administrative")
117
+ continue;
118
+ if (field.visibility === "hidden")
119
+ continue;
120
+ if (field.pageNumber !== state.page + 1)
121
+ continue;
122
+ if (field.type === "section") {
123
+ layout.push({
124
+ type: "heading",
125
+ text: field.label || "",
126
+ className: field.cssClass || undefined,
127
+ });
128
+ }
129
+ else {
130
+ if (field.layoutGroupId) {
131
+ let group = fieldGroups.get(field.layoutGroupId);
132
+ if (!group) {
133
+ group = { type: "fields", fields: [] };
134
+ fieldGroups.set(field.layoutGroupId, group);
135
+ layout.push(group);
136
+ }
137
+ group.fields.push(field);
138
+ }
139
+ }
140
+ }
141
+ return layout;
142
+ }, [fields, state.page]);
143
+ useEffect(() => {
144
+ const vals = {
145
+ ...opts.prepopulate,
146
+ };
147
+ if (vals) {
148
+ for (const field of fields) {
149
+ if (field.inputName in vals) {
150
+ field.set(vals[field.inputName]);
151
+ }
152
+ }
153
+ }
154
+ }, [JSON.stringify([opts.prepopulate])]);
148
155
  const [submitter, setSubmitter] = useState(null);
149
156
  useEffect(() => {
150
157
  let cancelled = false;
@@ -170,11 +177,45 @@ export function useGravityForm(opts) {
170
177
  cancelled = true;
171
178
  };
172
179
  }, []);
180
+ useEffect(() => {
181
+ let firstErrorPage = Infinity;
182
+ for (const fieldId in state.errors) {
183
+ const field = fields.find((f) => f.id === parseInt(fieldId));
184
+ if (field && field.pageNumber !== undefined && field.pageNumber - 1 < firstErrorPage) {
185
+ firstErrorPage = field.pageNumber - 1;
186
+ }
187
+ }
188
+ if (firstErrorPage < Infinity && firstErrorPage !== state.page) {
189
+ dispatch({ type: "goToPage", number: firstErrorPage });
190
+ }
191
+ }, [JSON.stringify(state.errors)]);
173
192
  return {
174
193
  ...state,
194
+ submitLabel: state.page < state.pages.length - 1 ? "Next" : state.submitLabel || "Submit",
195
+ pageInfo: state.complete ? null : state.pages[state.page],
196
+ canGoBack: state.page > 0,
197
+ canGoForward: state.page < state.pages.length - 1,
198
+ goBack: state.page > 0 ? () => dispatch({ type: "goToPage", number: state.page - 1 }) : null,
199
+ goForward: state.page < state.pages.length - 1 ? () => dispatch({ type: "goToPage", number: state.page + 1 }) : null,
200
+ goToPage: (num) => dispatch({ type: "goToPage", number: num }),
175
201
  fields,
202
+ layout: (state.complete
203
+ ? {
204
+ type: "success",
205
+ }
206
+ : {
207
+ type: "page",
208
+ page: state.page,
209
+ title: state.pages[state.page]?.title,
210
+ items: fieldsLayout,
211
+ }),
176
212
  submit() {
177
- submitter?.submit(state);
213
+ if (state.page === form.pagination?.pages.length - 1) {
214
+ submitter?.submit(state);
215
+ }
216
+ else {
217
+ dispatch({ type: "goToPage", number: state.page + 1 });
218
+ }
178
219
  },
179
220
  updateField(id, value) {
180
221
  dispatch({ type: "field", id, value });
@@ -184,70 +225,17 @@ export function useGravityForm(opts) {
184
225
  function prepareValuesPayload(form, state, data) {
185
226
  for (const field of form.fields) {
186
227
  const value = state.values[field.id];
187
- let key = "input_" + field.id;
188
- if (field.type === "checkbox") {
189
- field.choices.forEach((choice, i) => {
190
- let fieldKey = field.inputs[i].id;
191
- data.append(`input_${fieldKey.toString()}`, value?.includes(choice.value) ? choice.value : "");
192
- });
193
- }
194
- else if (field.type === "multi_choice" && field.choiceLimit !== "single") {
195
- field.choices.forEach((choice, i) => {
196
- let fieldKey = field.inputs[i].id;
197
- data.append(`input_${fieldKey}`, value?.includes(choice.value) ? choice.value : "");
198
- });
199
- }
200
- else if (field.type === "image_choice" && field.choiceLimit !== "single") {
201
- field.choices.forEach((choice, i) => {
202
- let fieldKey = field.inputs[i].id;
203
- data.append(`input_${fieldKey}`, value?.includes(choice.value) ? choice.value : "");
204
- });
205
- }
206
- else if (field.type === "consent") {
207
- data.append(`${key}.1`, value ? "1" : "");
208
- data.append(`${key}.2`, field?.consentText ?? field?.checkboxLabel ?? "");
209
- // data.append(`${key}.3`, String(form.revisionId ?? "5"))
210
- }
211
- else if (field.type === "name") {
212
- data.append(`${key}_2`, value?.prefix ?? "");
213
- data.append(`${key}_3`, value?.first ?? "");
214
- data.append(`${key}_4`, value?.middle ?? "");
215
- data.append(`${key}_6`, value?.last ?? "");
216
- data.append(`${key}_8`, value?.suffix ?? "");
217
- }
218
- else if (field.type === "address") {
219
- data.append(`${key}_1`, value?.address1 ?? "");
220
- data.append(`${key}_2`, value?.address2 ?? "");
221
- data.append(`${key}_3`, value?.city ?? "");
222
- data.append(`${key}_4`, value?.state ?? "");
223
- data.append(`${key}_5`, value?.zip ?? "");
224
- data.append(`${key}_6`, value?.country ?? "");
225
- }
226
- else if (field.type === "captcha") {
227
- data.append("g-recaptcha-response", value);
228
- }
229
- else if (field.type === "fileupload") {
230
- const keyName = field.maxFiles > 1 || field.multipleFiles ? `${key}[]` : key;
231
- if (Array.isArray(value)) {
232
- value.forEach((file) => {
233
- data.append(keyName, file);
234
- });
235
- }
236
- else if (value instanceof FileList) {
237
- for (let i = 0; i < value.length; i++) {
238
- data.append(keyName, value.item(i));
239
- }
240
- }
241
- else if (value) {
242
- data.append(keyName, value);
243
- }
228
+ const defaultKey = "input_" + field.id;
229
+ const type = getBuiltinType(field.type);
230
+ if (type?.appendData) {
231
+ type.appendData(data, field, value, defaultKey);
244
232
  }
245
233
  else {
246
234
  if (value === undefined || value === null) {
247
- data.append(key, "");
235
+ data.append(defaultKey, "");
248
236
  }
249
237
  else {
250
- data.append(key, value);
238
+ data.append(defaultKey, value);
251
239
  }
252
240
  }
253
241
  }
@@ -130,6 +130,8 @@ program
130
130
  return;
131
131
  if (typeof args[0] === "string" && args[0].includes("useLayoutEffect does nothing"))
132
132
  return;
133
+ if (typeof args[0] === "string" && args[0].includes("Type Stripping is an experimental feature"))
134
+ return;
133
135
  serverlessLog.error(...args);
134
136
  };
135
137
  console.warn = (...args) => {
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "2.1.0";
1
+ export declare const VERSION = "2.1.2";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- export const VERSION = "2.1.0";
1
+ export const VERSION = "2.1.2";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eddev",
3
- "version": "2.1.0",
3
+ "version": "2.1.3",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "type": "module",