mirror of
https://github.com/formbricks/formbricks.git
synced 2026-05-05 02:52:50 -05:00
8ea6016cf5
* add first part of sync service * add actionClasses to js sync * fix errors, add product to sync * rewrite formbricks-js for new states and types * fix tests * fix build errors * add cors * fix cors errors and other bugs * comment test in checks until working again
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import type { TJsConfig } from "../../types/v1/js";
|
|
import type { TSurvey } from "../../types/v1/surveys";
|
|
import { VNode, h } from "preact";
|
|
import { useState } from "preact/hooks";
|
|
import Modal from "./components/Modal";
|
|
import SurveyView from "./components/SurveyView";
|
|
import { IErrorHandler } from "./lib/errors";
|
|
|
|
interface AppProps {
|
|
config: TJsConfig;
|
|
survey: TSurvey;
|
|
closeSurvey: () => Promise<void>;
|
|
errorHandler: IErrorHandler;
|
|
}
|
|
|
|
export default function App({ config, survey, closeSurvey, errorHandler }: AppProps): VNode {
|
|
const [isOpen, setIsOpen] = useState(true);
|
|
|
|
const close = () => {
|
|
setIsOpen(false);
|
|
setTimeout(() => {
|
|
closeSurvey();
|
|
}, 1000); // wait for animation to finish}
|
|
};
|
|
|
|
return (
|
|
<div id="fbjs">
|
|
<Modal
|
|
isOpen={isOpen}
|
|
close={close}
|
|
placement={config.state.product.placement}
|
|
darkOverlay={config.state.product.darkOverlay}
|
|
clickOutside={config.state.product.clickOutsideClose}>
|
|
<SurveyView config={config} survey={survey} close={close} errorHandler={errorHandler} />
|
|
</Modal>
|
|
</div>
|
|
);
|
|
}
|