forked from space10-community/conversational-form
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreactjs.html
executable file
·148 lines (133 loc) · 5.15 KB
/
reactjs.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, minimal-ui" />
<link rel="stylesheet" href="build/conversational-form-docs.min.css">
<script type="text/javascript" src="https://cf-4053.kxcdn.com/conversational-form/0.9.6/conversational-form.min.js" crossorigin></script>
</head>
<body>
<script src="build/conversational-form-examples.min.js" id="examples-script"></script>
<main class="content">
<menu id="small-screen-menu">
<h2>Conversational Form examples</h2>
<div class="switch-btn">
<label class="switch">
<input type="checkbox" onclick="window.conversationalFormExamples.toggleConversation(event)">
<div class="slider round"></div>
</label>
</div>
<div class="hamburger-btn" onclick="window.conversationalFormExamples.toggleMenuState(event)">
<svg viewBox="0 0 29 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="square">
<g transform="translate(-325.000000, -87.000000)" stroke="#FFFFFF" stroke-width="2">
<g transform="translate(325.000000, 87.000000)">
<path d="M27.4802431,7 L1.23827993,7"></path>
<path d="M27.4802431,1 L1.23827993,1"></path>
<path d="M27.4802431,13 L1.23827993,13"></path>
</g>
</g>
</g>
</svg>
</div>
</menu>
<div class="switch-btn" id="cf-toggle-btn" data-label="Enable Conversational Form" data-label-toggled="Disable Conversational Form">
<label class="switch">
<input type="checkbox" onclick="window.conversationalFormExamples.toggleConversation(event)">
<div class="slider round"></div>
</label>
</div>
<section id="info" role="info">
<div class="close-btn" onclick="window.conversationalFormExamples.toggleMenuState()">
<svg viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="square">
<g transform="translate(-328.000000, -83.000000)" stroke="#FFFFFF" stroke-width="2">
<g id="close" transform="translate(329.000000, 84.000000)">
<path d="M19.6371966,19.2779351 L1.08132646,0.722064927"></path>
<path d="M19.4923318,0.722064927 L0.936461672,19.2779351"></path>
</g>
</g>
</g>
</svg>
</div>
<article>
<h1 id="writer">
Setup Conversational Form from a React component
</h1>
<h2>
Check the source — we use ES6 class — we create a React component {Hello} and renders Conversational Form using React API basics.
</h2>
</article>
</section>
<section role="form">
<div class="form-outer">
</div>
</section>
<section id="cf-context" role="cf-context" cf-context>
</section>
<!-- load React.js -->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/react/15.5.4/react.js" crossorigin></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/react/15.5.4/react-dom.js" crossorigin></script>
<script>
(function(){
class Hello extends React.Component {
constructor(props) {
super(props);
this.cf = null; // <-- Conversational Form ref
}
componentDidMount(){
// add Conversational Form info
this.refs.name.setAttribute('cf-questions', "Your name?");
this.refs.email.setAttribute('cf-questions', "Your email?");
this.refs.description.setAttribute('cf-questions', "What is description?");
this.cf = window.cf.ConversationalForm.startTheConversation({
formEl: this.refs.form,
context: document.getElementById("cf-context"),
flowStepCallback: function(dto, success, error){
success();
},
submitCallback: function(){
// this callback could also be added to the React.createElement it self...
alert("You made it!")
console.log("Form submitted...");
}
});
}
render() {
return React.createElement('form', {
id: "form",
ref: "form",
className: 'form'
},
React.createElement('input', {
type: 'text',
ref: "name",
placeholder: 'Name (required)',
defaultValue: this.props.name,
}),
React.createElement('input', {
type: 'email',
ref: "email",
placeholder: 'Email',
defaultValue: this.props.email,
}),
React.createElement('textarea', {
placeholder: 'Description',
ref: "description",
defaultValue: this.props.description,
}),
React.createElement('button', {type: 'submit'}, "Submit")
)
}
};
ReactDOM.render(React.createElement(Hello, {
name: "Input name..",
email: "Input email..",
description: "Input description..",
}), document.getElementsByClassName('form-outer')[0]);
})();
</script>
</main>
</body>
</html>