mirror of
https://github.com/formbricks/formbricks.git
synced 2026-04-19 19:21:15 -05:00
Fix multiple client-side errors in formbricks-js
This commit is contained in:
@@ -1,12 +1,13 @@
|
||||
import type { TSurveyCTAQuestion } from "../../../types/v1/surveys";
|
||||
import { h } from "preact";
|
||||
import { TResponseData } from "../../../types/v1/responses";
|
||||
import type { TSurveyCTAQuestion } from "../../../types/v1/surveys";
|
||||
import Headline from "./Headline";
|
||||
import HtmlBody from "./HtmlBody";
|
||||
import SubmitButton from "./SubmitButton";
|
||||
|
||||
interface CTAQuestionProps {
|
||||
question: TSurveyCTAQuestion;
|
||||
onSubmit: (data: { [x: string]: any }) => void;
|
||||
onSubmit: (data: TResponseData) => void;
|
||||
lastQuestion: boolean;
|
||||
brandColor: string;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
import type { TSurveyConsentQuestion } from "../../../types/v1/surveys";
|
||||
import { h } from "preact";
|
||||
import { TResponseData } from "../../../types/v1/responses";
|
||||
import type { TSurveyConsentQuestion } from "../../../types/v1/surveys";
|
||||
import Headline from "./Headline";
|
||||
import HtmlBody from "./HtmlBody";
|
||||
import SubmitButton from "./SubmitButton";
|
||||
|
||||
interface ConsentQuestionProps {
|
||||
question: TSurveyConsentQuestion;
|
||||
onSubmit: (data: { [x: string]: any }) => void;
|
||||
onSubmit: (data: TResponseData) => void;
|
||||
lastQuestion: boolean;
|
||||
brandColor: string;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import type { TSurveyMultipleChoiceMultiQuestion } from "../../../types/v1/surveys";
|
||||
import { h } from "preact";
|
||||
import { useState, useRef, useEffect } from "preact/hooks";
|
||||
import { useEffect, useRef, useState } from "preact/hooks";
|
||||
import { TResponseData } from "../../../types/v1/responses";
|
||||
import type { TSurveyMultipleChoiceMultiQuestion } from "../../../types/v1/surveys";
|
||||
import { cn } from "../lib/utils";
|
||||
import Headline from "./Headline";
|
||||
import Subheader from "./Subheader";
|
||||
@@ -8,7 +9,7 @@ import SubmitButton from "./SubmitButton";
|
||||
|
||||
interface MultipleChoiceMultiProps {
|
||||
question: TSurveyMultipleChoiceMultiQuestion;
|
||||
onSubmit: (data: { [x: string]: any }) => void;
|
||||
onSubmit: (data: TResponseData) => void;
|
||||
lastQuestion: boolean;
|
||||
brandColor: string;
|
||||
}
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
import { h } from "preact";
|
||||
import { useRef, useState, useEffect } from "preact/hooks";
|
||||
import { cn } from "../lib/utils";
|
||||
import { useEffect, useRef, useState } from "preact/hooks";
|
||||
import { TResponseData } from "../../../types/v1/responses";
|
||||
import type { TSurveyMultipleChoiceSingleQuestion } from "../../../types/v1/surveys";
|
||||
import { cn } from "../lib/utils";
|
||||
import Headline from "./Headline";
|
||||
import Subheader from "./Subheader";
|
||||
import SubmitButton from "./SubmitButton";
|
||||
|
||||
interface MultipleChoiceSingleProps {
|
||||
question: TSurveyMultipleChoiceSingleQuestion;
|
||||
onSubmit: (data: { [x: string]: any }) => void;
|
||||
onSubmit: (data: TResponseData) => void;
|
||||
lastQuestion: boolean;
|
||||
brandColor: string;
|
||||
}
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
import { h } from "preact";
|
||||
import { useState } from "preact/hooks";
|
||||
import { cn } from "../lib/utils";
|
||||
import { TResponseData } from "../../../types/v1/responses";
|
||||
import type { TSurveyNPSQuestion } from "../../../types/v1/surveys";
|
||||
import { cn } from "../lib/utils";
|
||||
import Headline from "./Headline";
|
||||
import Subheader from "./Subheader";
|
||||
import SubmitButton from "./SubmitButton";
|
||||
|
||||
interface NPSQuestionProps {
|
||||
question: TSurveyNPSQuestion;
|
||||
onSubmit: (data: { [x: string]: any }) => void;
|
||||
onSubmit: (data: TResponseData) => void;
|
||||
lastQuestion: boolean;
|
||||
brandColor: string;
|
||||
}
|
||||
@@ -30,9 +31,10 @@ export default function NPSQuestion({ question, onSubmit, lastQuestion, brandCol
|
||||
onSubmit={(e) => {
|
||||
e.preventDefault();
|
||||
|
||||
const data = {
|
||||
[question.id]: selectedChoice,
|
||||
};
|
||||
const data = {};
|
||||
if (selectedChoice !== null) {
|
||||
data[question.id] = selectedChoice;
|
||||
}
|
||||
|
||||
onSubmit(data);
|
||||
// reset form
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
import type { TSurveyOpenTextQuestion } from "../../../types/v1/surveys";
|
||||
import { h } from "preact";
|
||||
import { TResponseData } from "../../../types/v1/responses";
|
||||
import type { TSurveyOpenTextQuestion } from "../../../types/v1/surveys";
|
||||
import Headline from "./Headline";
|
||||
import Subheader from "./Subheader";
|
||||
import SubmitButton from "./SubmitButton";
|
||||
|
||||
interface OpenTextQuestionProps {
|
||||
question: TSurveyOpenTextQuestion;
|
||||
onSubmit: (data: { [x: string]: any }) => void;
|
||||
onSubmit: (data: TResponseData) => void;
|
||||
lastQuestion: boolean;
|
||||
brandColor: string;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { h } from "preact";
|
||||
import { useState } from "preact/hooks";
|
||||
import { cn } from "../lib/utils";
|
||||
import { TResponseData } from "../../../types/v1/responses";
|
||||
import type { TSurveyRatingQuestion } from "../../../types/v1/surveys";
|
||||
import { cn } from "../lib/utils";
|
||||
import Headline from "./Headline";
|
||||
import Subheader from "./Subheader";
|
||||
import {
|
||||
ConfusedFace,
|
||||
FrowningFace,
|
||||
@@ -16,11 +16,12 @@ import {
|
||||
TiredFace,
|
||||
WearyFace,
|
||||
} from "./Smileys";
|
||||
import Subheader from "./Subheader";
|
||||
import SubmitButton from "./SubmitButton";
|
||||
|
||||
interface RatingQuestionProps {
|
||||
question: TSurveyRatingQuestion;
|
||||
onSubmit: (data: { [x: string]: any }) => void;
|
||||
onSubmit: (data: TResponseData) => void;
|
||||
lastQuestion: boolean;
|
||||
brandColor: string;
|
||||
}
|
||||
@@ -60,9 +61,10 @@ export default function RatingQuestion({
|
||||
onSubmit={(e) => {
|
||||
e.preventDefault();
|
||||
|
||||
const data = {
|
||||
[question.id]: selectedChoice,
|
||||
};
|
||||
const data = {};
|
||||
if (selectedChoice !== null) {
|
||||
data[question.id] = selectedChoice;
|
||||
}
|
||||
|
||||
setSelectedChoice(null); // reset choice
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ import Progress from "./Progress";
|
||||
import QuestionConditional from "./QuestionConditional";
|
||||
import ThankYouCard from "./ThankYouCard";
|
||||
import FormbricksSignature from "./FormbricksSignature";
|
||||
import type { TResponseInput } from "../../../types/v1/responses";
|
||||
import type { TResponseData, TResponseInput } from "../../../types/v1/responses";
|
||||
|
||||
interface SurveyViewProps {
|
||||
config: TJsConfig;
|
||||
@@ -168,7 +168,7 @@ export default function SurveyView({ config, survey, close, errorHandler }: Surv
|
||||
return questions[currentQuestionIndex + 1]?.id || "end";
|
||||
}
|
||||
|
||||
const submitResponse = async (data: { [x: string]: any }) => {
|
||||
const submitResponse = async (data: TResponseData) => {
|
||||
setLoadingElement(true);
|
||||
const nextQuestionId = getNextQuestion(data);
|
||||
|
||||
|
||||
@@ -98,10 +98,13 @@ export function checkUrlMatch(
|
||||
|
||||
export const checkClickMatch = (event: MouseEvent) => {
|
||||
const { state } = config.get();
|
||||
const innerHtmlEvents: TActionClass[] = state?.noCodeActionClasses.filter(
|
||||
if (!state) {
|
||||
return;
|
||||
}
|
||||
const innerHtmlEvents: TActionClass[] = state?.noCodeActionClasses?.filter(
|
||||
(e) => e.noCodeConfig?.type === "innerHtml"
|
||||
);
|
||||
const cssSelectorEvents: TActionClass[] = state?.noCodeActionClasses.filter(
|
||||
const cssSelectorEvents: TActionClass[] = state?.noCodeActionClasses?.filter(
|
||||
(e) => e.noCodeConfig?.type === "cssSelector"
|
||||
);
|
||||
|
||||
|
||||
@@ -177,7 +177,7 @@ export const setPersonAttribute = async (
|
||||
};
|
||||
|
||||
export const resetPerson = async (): Promise<Result<void, NetworkError>> => {
|
||||
logger.debug("Resetting person. Getting new person, session and settings from backend");
|
||||
logger.debug("Resetting state & getting new state from backend");
|
||||
config.update({ state: undefined });
|
||||
const syncResult = await sync();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user