@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.
@@ -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
- <div class='form-page'>
177
- <div class='form-page-logo-wrapper'>
178
- <a href={formSetting.brand_url || 'javascript:;'}>
179
- {brandLogo ? (
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
+ }