Full Name Template
Survey.ComponentCollection.Instance.add({
name: "fullname",
title: "Full Name",
elementsJSON: [
{
type: "text",
name: "firstName",
title: "First Name",
isRequired: true,
minWidth: 200
},
{
type: "text",
name: "lastName",
title: "Last Name",
isRequired: true,
minWidth: 200,
startWithNewLine: false,
},
//Adding new middle name question
{
type: "text",
name: "middleName",
title: "Middle Name",
startWithNewLine: false,
//Initially makes middle name invisible
visible: false,
},
],
//SurveyJS calls this function one time on registing component, after creating "fullname" class.
onInit() {
//SurveyJS will create a new class "fullname". We can add properties for this class onInit()
Survey.Serializer.addProperty("fullname", {
name: "showMiddleName:boolean",
default: false,
category: "general",
});
},
//SurveyJS calls this function after creating new question and loading it's properties from JSON
//It calls in runtime and at design-time (after loading from JSON) and pass the current component/root question as parameter
onLoaded(question) {
this.changeMiddleVisibility(question);
},
//SurveyJS calls this on a property change in the component/root question
//It has three parameters that are self explained
onPropertyChanged(question, propertyName, newValue) {
if (propertyName == "showMiddleName") {
this.changeMiddleVisibility(question);
}
},
//The custom function that used in onLoaded and onPropertyChanged functions
changeMiddleVisibility(question) {
//get middle question from the content panel
let middle = question.contentPanel.getQuestionByName("middleName");
if (!!middle) {
//Set visible property based on component/root question showMiddleName property
middle.visible = question.showMiddleName === true;
}
},
});
const options = { questionTypes : ["text", "checkbox", "radiogroup", "dropdown"] };
var creator = new SurveyCreator.SurveyCreator(options);
ReactDOM.render(
<React.StrictMode>
<SurveyCreator.SurveyCreatorComponent creator={creator} />
</React.StrictMode>,
document.getElementById("creatorElement")
);
creator.JSON = {
elements: [
{
type: "fullname",
name: "question1"
}
]
};
//Select the order table component
creator.selectedElement = creator.survey.getAllQuestions()[0];
//Show property grid
creator.rightContainerActiveItem("property-grid");
<!DOCTYPE html>
<html lang="en">
<head>
<title>Adding a Full Name Template | Reactjs Example</title>
<meta name="viewport" content="width=device-width" />
<script src="https://unpkg.com/react@17.0.1/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@17.0.1/umd/react-dom.production.min.js"></script>
<script src="https://unpkg.com/@babel/standalone@7.2.5/babel.min.js"></script>
<script src="/DevBuilds/survey-core/survey.core.min.js"></script>
<script src="/DevBuilds/survey-core/survey.i18n.min.js"></script>
<script src="/DevBuilds/survey-react-ui/survey-react-ui.min.js"></script>
<link href="/DevBuilds/survey-core/defaultV2.min.css" type="text/css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.10/ace.min.js" type="text/javascript" charset="utf-8"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.10/ext-language_tools.js" type="text/javascript" charset="utf-8"></script>
<script src="/DevBuilds/survey-creator-core/survey-creator-core.min.js"></script>
<link href="/DevBuilds/survey-creator-core/survey-creator-core.min.css" type="text/css" rel="stylesheet" />
<script src="/DevBuilds/survey-creator-core/survey-creator-core.i18n.min.js"></script>
<script src="/DevBuilds/survey-creator-react/survey-creator-react.min.js"></script>
<style>
:root {
--tab-min-height: 600px;
}
</style>
<link rel="stylesheet" href="./index.css">
</head>
<body style="margin: 0">
<div id="surveyContainer">
<div id="creatorElement" style="height: 100vh;"></div>
</div>
<script type="text/babel" src="./index.js"></script>
</body>
</html>
Loading...
Sorry, we can't retrieve the data from server. Please comeback later.