@subiz/widget-v4 4.1.140 → 4.1.142
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/img/stars_v2.png +0 -0
- package/assets/less/form-page.less +258 -257
- package/assets/less/form.less +91 -0
- package/compiled_src/form/Form.js +57 -10
- package/compiled_src/form/FormPage.js +9 -18
- package/compiled_src/form/rating-stars.js +129 -0
- package/package.json +1 -1
- package/src/chatbox/FormAttachment2.js +83 -0
- package/src/form/Form.js +101 -43
- package/src/form/FormPage.js +89 -16
- package/src/form/rating-stars.js +89 -0
- package/compiled_src/store/store.js +0 -1257
- package/compiled_src/util/campaign.js +0 -88
- package/compiled_src/util/common.js +0 -1294
- package/compiled_src/util/common.test.js +0 -496
- package/compiled_src/util/extractor.test.js +0 -299
- package/compiled_src/util/gate.js +0 -38
- package/compiled_src/util/gate.test.js +0 -18
- package/compiled_src/util/index.js +0 -20
- package/compiled_src/util/mutex.js +0 -31
- package/compiled_src/util/op.js +0 -55
- package/compiled_src/util/pubsub.js +0 -29
- package/compiled_src/util/pubsub.test.js +0 -35
package/src/form/FormPage.js
CHANGED
|
@@ -98,6 +98,86 @@ export default class FormPage extends Com {
|
|
|
98
98
|
let json = atob(this.props.previewJson)
|
|
99
99
|
json = decodeURIComponent(json)
|
|
100
100
|
json = sb.parseJSON(json)
|
|
101
|
+
//json = {
|
|
102
|
+
//id: 'atshrpqxzuufzzdkzquz_dlbgwyib',
|
|
103
|
+
//title: 'Đặt lịch khám',
|
|
104
|
+
//components: [
|
|
105
|
+
//{
|
|
106
|
+
//type: 'input',
|
|
107
|
+
//label: 'Họ và tên',
|
|
108
|
+
//input_type: 'text',
|
|
109
|
+
//is_required: true,
|
|
110
|
+
//key: 'fullname',
|
|
111
|
+
//},
|
|
112
|
+
//{
|
|
113
|
+
//type: 'input',
|
|
114
|
+
//label: 'SĐT',
|
|
115
|
+
//input_type: 'text',
|
|
116
|
+
//is_required: true,
|
|
117
|
+
//key: 'phone',
|
|
118
|
+
//},
|
|
119
|
+
//{
|
|
120
|
+
//type: 'input',
|
|
121
|
+
//label: 'Chọn ca',
|
|
122
|
+
//input_type: 'radio',
|
|
123
|
+
//is_required: true,
|
|
124
|
+
//key: 'shift',
|
|
125
|
+
//input_options: [
|
|
126
|
+
//{
|
|
127
|
+
//label: 'Buổi sáng',
|
|
128
|
+
//value: 'Buổi sáng',
|
|
129
|
+
//},
|
|
130
|
+
//{
|
|
131
|
+
//label: 'Buổi chiều',
|
|
132
|
+
//value: 'Buổi chiều',
|
|
133
|
+
//},
|
|
134
|
+
//{
|
|
135
|
+
//label: 'Buổi toi',
|
|
136
|
+
//value: 'Buổi toi',
|
|
137
|
+
//},
|
|
138
|
+
//{
|
|
139
|
+
//label: 'Buổi dem ',
|
|
140
|
+
//value: 'Buổi dem',
|
|
141
|
+
//},
|
|
142
|
+
//{
|
|
143
|
+
//label: 'Other',
|
|
144
|
+
//value: 'Other',
|
|
145
|
+
//},
|
|
146
|
+
//],
|
|
147
|
+
//},
|
|
148
|
+
//{
|
|
149
|
+
//type: 'input',
|
|
150
|
+
//label: 'Chọn ngày',
|
|
151
|
+
//input_type: 'date',
|
|
152
|
+
//is_required: true,
|
|
153
|
+
//key: 'schedule',
|
|
154
|
+
//},
|
|
155
|
+
//{
|
|
156
|
+
//type: 'input',
|
|
157
|
+
//label: 'Đánh giá',
|
|
158
|
+
//label_description: 'Chọn theo thang điểm 1-5',
|
|
159
|
+
//input_type: 'rating',
|
|
160
|
+
//key: 'rating',
|
|
161
|
+
//},
|
|
162
|
+
//{
|
|
163
|
+
//type: 'button',
|
|
164
|
+
//label: 'Đặt lịch',
|
|
165
|
+
//},
|
|
166
|
+
//],
|
|
167
|
+
//primary_color: 'rgb(224, 31, 111)',
|
|
168
|
+
//header_style: {
|
|
169
|
+
//font_family: 'Roboto',
|
|
170
|
+
//font_size: '20',
|
|
171
|
+
//},
|
|
172
|
+
//text_style: {
|
|
173
|
+
//font_family: 'Yeseva One',
|
|
174
|
+
//font_size: '16',
|
|
175
|
+
//},
|
|
176
|
+
//input_style: {
|
|
177
|
+
//font_family: 'Dancing Script',
|
|
178
|
+
//font_size: '18',
|
|
179
|
+
//},
|
|
180
|
+
//}
|
|
101
181
|
await this.insertCss(chatbox, json)
|
|
102
182
|
this.setState({formSetting: json, loading: false})
|
|
103
183
|
return
|
|
@@ -168,27 +248,20 @@ export default class FormPage extends Com {
|
|
|
168
248
|
}
|
|
169
249
|
|
|
170
250
|
let brandLogo = sb.get(formSetting, 'logo.url')
|
|
251
|
+
let coverUrl = sb.get(formSetting, 'cover_image.url')
|
|
252
|
+
//coverUrl =
|
|
253
|
+
//'https://lh7-us.googleusercontent.com/fX5mhofX-12ygFkS6I3UbMh6_NYtd7ySVQkuFxm7Y7ArYMvWu_Ew65l4Ic3QC8eMaBJpUU_5ZNITgigAbqkNJcQRbPjnddxGGE7YOaNBACoWws7b6AuNaAjlisDDY3GCvPHFhh-99Jt0SBiJKnNloWrxxdel_EkVI6MMf6ENTwj2NDQ8MvkCI8ow6z75pwK9C1ZMxDZn?key=-6fBH6GC0hPnLatLRgG5tA'
|
|
254
|
+
let wrappercls = 'form-page'
|
|
255
|
+
if (coverUrl) wrappercls += ' sketch'
|
|
171
256
|
return (
|
|
172
257
|
<div class='form-page-body' key='form'>
|
|
173
258
|
{this.props.previewJson && (
|
|
174
259
|
<div class='form-page-preview-noti'>{'Form ở trạng thái xem thử, không ghi nhận phản hồi'}</div>
|
|
175
260
|
)}
|
|
176
|
-
|
|
177
|
-
<div class='form-page-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
<img src={brandLogo} class='form-page-logo' />
|
|
181
|
-
) : (
|
|
182
|
-
<div class='form-page-logo-text'>{sb.get(this.props.store.matchAccount(), 'name')}</div>
|
|
183
|
-
)}
|
|
184
|
-
</a>
|
|
185
|
-
</div>
|
|
186
|
-
{(formSetting.title || formSetting.description) && (
|
|
187
|
-
<div class='form-page-header'>
|
|
188
|
-
<div class='form-page-title'>{formSetting.title}</div>
|
|
189
|
-
{formSetting.description && <div class='form-page-desc'>{formSetting.description}</div>}
|
|
190
|
-
</div>
|
|
191
|
-
)}
|
|
261
|
+
{coverUrl && (
|
|
262
|
+
<div class='form-page-header-bg' style={`background: url(${coverUrl}); background-size: cover;`} />
|
|
263
|
+
)}
|
|
264
|
+
<div class={wrappercls}>
|
|
192
265
|
<Form
|
|
193
266
|
store={this.props.store}
|
|
194
267
|
formSetting={formSetting}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import {Com} from '../common.js'
|
|
2
|
+
import {h, createRef, Fragment} from 'preact'
|
|
3
|
+
import sb from '../util/index.js'
|
|
4
|
+
|
|
5
|
+
export default class Form2 extends Com {
|
|
6
|
+
state = {
|
|
7
|
+
hovering: 0,
|
|
8
|
+
selected: 0,
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
constructor(props) {
|
|
12
|
+
super(props)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
onMouseEnter = (v) => {
|
|
16
|
+
let {selected, hovering} = this.state
|
|
17
|
+
if (v <= selected) {
|
|
18
|
+
this.setState({hovering: selected})
|
|
19
|
+
return
|
|
20
|
+
}
|
|
21
|
+
this.setState({hovering: v})
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
onMouseLeave = () => {
|
|
25
|
+
let {selected, hovering} = this.state
|
|
26
|
+
this.setState({hovering: 0})
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
onToggleValue(v) {
|
|
30
|
+
let {selected} = this.state
|
|
31
|
+
let newVal = v
|
|
32
|
+
if (v === selected) newVal = 0
|
|
33
|
+
this.setState({selected: newVal, hovering: newVal})
|
|
34
|
+
this.props.onChange(newVal)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
render() {
|
|
38
|
+
let {selected, hovering} = this.state
|
|
39
|
+
let star1Cls = 'star-wrapper'
|
|
40
|
+
if (selected >= 1) {
|
|
41
|
+
star1Cls += ' selected'
|
|
42
|
+
} else if (hovering >= 1) {
|
|
43
|
+
star1Cls += ' hovering'
|
|
44
|
+
}
|
|
45
|
+
let star2Cls = 'star-wrapper'
|
|
46
|
+
if (selected >= 2) {
|
|
47
|
+
star2Cls += ' selected'
|
|
48
|
+
} else if (hovering >= 2) {
|
|
49
|
+
star2Cls += ' hovering'
|
|
50
|
+
}
|
|
51
|
+
let star3Cls = 'star-wrapper'
|
|
52
|
+
if (selected >= 3) {
|
|
53
|
+
star3Cls += ' selected'
|
|
54
|
+
} else if (hovering >= 3) {
|
|
55
|
+
star3Cls += ' hovering'
|
|
56
|
+
}
|
|
57
|
+
let star4Cls = 'star-wrapper'
|
|
58
|
+
if (selected >= 4) {
|
|
59
|
+
star4Cls += ' selected'
|
|
60
|
+
} else if (hovering >= 4) {
|
|
61
|
+
star4Cls += ' hovering'
|
|
62
|
+
}
|
|
63
|
+
let star5Cls = 'star-wrapper'
|
|
64
|
+
if (selected >= 5) {
|
|
65
|
+
star5Cls += ' selected'
|
|
66
|
+
} else if (hovering >= 5) {
|
|
67
|
+
star5Cls += ' hovering'
|
|
68
|
+
}
|
|
69
|
+
return (
|
|
70
|
+
<div class='form-ratings-wrapper' onMouseLeave={() => this.onMouseLeave()}>
|
|
71
|
+
<div class={star1Cls} onClick={() => this.onToggleValue(1)} onMouseEnter={() => this.onMouseEnter(1)}>
|
|
72
|
+
<div class='star' />
|
|
73
|
+
</div>
|
|
74
|
+
<div class={star2Cls} onClick={() => this.onToggleValue(2)} onMouseEnter={() => this.onMouseEnter(2)}>
|
|
75
|
+
<div class='star' />
|
|
76
|
+
</div>
|
|
77
|
+
<div class={star3Cls} onClick={() => this.onToggleValue(3)} onMouseEnter={() => this.onMouseEnter(3)}>
|
|
78
|
+
<div class='star' />
|
|
79
|
+
</div>
|
|
80
|
+
<div class={star4Cls} onClick={() => this.onToggleValue(4)} onMouseEnter={() => this.onMouseEnter(4)}>
|
|
81
|
+
<div class='star' />
|
|
82
|
+
</div>
|
|
83
|
+
<div class={star5Cls} onClick={() => this.onToggleValue(5)} onMouseEnter={() => this.onMouseEnter(5)}>
|
|
84
|
+
<div class='star' />
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
)
|
|
88
|
+
}
|
|
89
|
+
}
|