diff --git a/src/angular/SurveyNG.tsx b/src/angular/SurveyNG.ts similarity index 64% rename from src/angular/SurveyNG.tsx rename to src/angular/SurveyNG.ts index fbdfb23f1e..ab7b43f28d 100644 --- a/src/angular/SurveyNG.tsx +++ b/src/angular/SurveyNG.ts @@ -1,8 +1,7 @@ -import * as React from "react"; -import * as ReactDOM from "react-dom"; +import * as ko from "knockout"; import { SurveyModel } from "../survey"; -import { Survey } from "../react/reactSurvey"; -import { SurveyWindow } from "../react/reactSurveyWindow"; +import { Survey } from "../knockout/kosurvey"; +import { SurveyWindow } from "../knockout/koSurveyWindow"; export class SurveyNG { public static render(elementId: string | Element, props) { @@ -10,7 +9,7 @@ export class SurveyNG { typeof elementId === "string" ? document.getElementById(elementId) : elementId; - ReactDOM.render(, element); + props.model.render(element); } } @@ -20,7 +19,8 @@ export class SurveyWindowNG { typeof elementId === "string" ? document.getElementById(elementId) : elementId; - ReactDOM.render(, element); + var survey = new SurveyWindow(...props); + survey.show(); } } diff --git a/src/entries/angular.ts b/src/entries/angular.ts index e54ab243a9..b27f5313e4 100644 --- a/src/entries/angular.ts +++ b/src/entries/angular.ts @@ -1,3 +1,3 @@ -export * from "./react"; +export * from "./knockout"; export { SurveyNG } from "../angular/SurveyNG"; export { SurveyWindowNG } from "../angular/SurveyNG"; diff --git a/src/entries/jquery.ts b/src/entries/jquery.ts new file mode 100644 index 0000000000..b2be85e77a --- /dev/null +++ b/src/entries/jquery.ts @@ -0,0 +1,24 @@ +import * as ko from "knockout"; +import { SurveyModel } from "../survey"; +import { Survey } from "../knockout/kosurvey"; +import { SurveyWindow } from "../knockout/koSurveyWindow"; +import jQuery from "jquery"; + +jQuery["fn"].extend({ + Survey: function(props) { + this.each(function() { + props.model.render(this); + }); + }, + + SurveyWindow: function(props) { + this.each(function() { + var survey = new SurveyWindow(...props); + survey.show(); + }); + } +}); + +SurveyModel.platform = "jquery"; + +export * from "./knockout"; diff --git a/src/entries/jquery.tsx b/src/entries/jquery.tsx deleted file mode 100644 index 8912403f4d..0000000000 --- a/src/entries/jquery.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import * as React from "react"; -import * as ReactDOM from "react-dom"; -import { SurveyModel } from "../survey"; -import { Survey } from "../react/reactSurvey"; -import { SurveyWindow } from "../react/reactSurveyWindow"; -import jQuery from "jquery"; - -jQuery["fn"].extend({ - Survey: function(props) { - this.each(function() { - ReactDOM.render(, this); - }); - }, - - SurveyWindow: function(props) { - this.each(function() { - ReactDOM.render(, this); - }); - } -}); - -SurveyModel.platform = "jquery"; - -export * from "./react"; diff --git a/src/knockout/koSurveyWindow.ts b/src/knockout/koSurveyWindow.ts index 27b7a94f26..e21962b241 100644 --- a/src/knockout/koSurveyWindow.ts +++ b/src/knockout/koSurveyWindow.ts @@ -8,7 +8,7 @@ export class SurveyWindow extends SurveyWindowModel { koExpanded: any; koExpandedCss: any; doExpand: any; - constructor(jsonObj: any) { + constructor(jsonObj: any = null) { super(jsonObj); this.koExpanded = ko.observable(false); this.koExpandedCss = ko.observable(this.getButtonCss()); diff --git a/webpack.config.js b/webpack.config.js index 1dfbae4a26..3a5d2f36e8 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -40,7 +40,10 @@ var platformOptions = { } }, keywords: ["react", "react-component"], - peerDependencies: { react: ">=15.0.1 || ^16.2.0", "react-dom": ">=15.0.1 || ^16.2.0" } + peerDependencies: { + react: ">=15.0.1 || ^16.2.0", + "react-dom": ">=15.0.1 || ^16.2.0" + } }, knockout: { externals: { @@ -64,12 +67,16 @@ var platformOptions = { } }, keywords: ["jquery", "jquery-plugin"], - dependencies: { jquery: ">=1.12.4", "@types/react": ">=15.0.35 || ^16.0.34" } + dependencies: { + jquery: ">=1.12.4", + knockout: "^3.4.0", + "@types/knockout": "3.4.46" + } }, angular: { externals: {}, keywords: ["angular", "angular-component"], - dependencies: { "@types/react": ">=15.0.35 || ^16.0.34" } + dependencies: { knockout: "^3.4.0", "@types/knockout": "3.4.46" } }, vue: { externals: {