@truedat/qx 5.14.1 → 5.15.1

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.
Files changed (120) hide show
  1. package/package.json +3 -3
  2. package/src/api.js +3 -2
  3. package/src/components/QxRoutes.js +4 -4
  4. package/src/components/common/ResourceSelector.js +80 -0
  5. package/src/components/common/TestFormWrapper.js +9 -6
  6. package/src/components/common/TypeSelector.js +3 -1
  7. package/src/components/common/__tests__/DescriptionInput.spec.js +48 -0
  8. package/src/components/common/__tests__/ResourceSelector.spec.js +124 -0
  9. package/src/components/common/__tests__/TypeSelector.spec.js +29 -0
  10. package/src/components/common/__tests__/__snapshots__/DescriptionInput.spec.js.snap +19 -0
  11. package/src/components/common/__tests__/__snapshots__/ResourceSelector.spec.js.snap +484 -0
  12. package/src/components/common/__tests__/__snapshots__/TypeSelector.spec.js.snap +230 -0
  13. package/src/components/common/expressions/Clauses.js +100 -0
  14. package/src/components/common/expressions/Condition.js +178 -0
  15. package/src/components/common/expressions/Expression.js +54 -0
  16. package/src/components/common/expressions/FieldSelector.js +66 -0
  17. package/src/components/{functions → common}/expressions/FunctionArgs.js +1 -0
  18. package/src/components/{functions → common}/expressions/FunctionSelector.js +24 -4
  19. package/src/components/{functions → common}/expressions/ParamSelector.js +3 -3
  20. package/src/components/{functions → common}/expressions/ShapeSelector.js +22 -6
  21. package/src/components/common/expressions/__tests__/Clauses.spec.js +53 -0
  22. package/src/components/common/expressions/__tests__/Condition.spec.js +33 -0
  23. package/src/components/{functions → common}/expressions/__tests__/ConstantSelector.spec.js +6 -1
  24. package/src/components/{functions → common}/expressions/__tests__/Expression.spec.js +7 -5
  25. package/src/components/common/expressions/__tests__/FieldSelector.spec.js +24 -0
  26. package/src/components/{functions → common}/expressions/__tests__/FunctionArgs.spec.js +20 -6
  27. package/src/components/{functions → common}/expressions/__tests__/FunctionSelector.spec.js +1 -1
  28. package/src/components/{functions → common}/expressions/__tests__/ParamSelector.spec.js +22 -10
  29. package/src/components/{functions → common}/expressions/__tests__/ShapeSelector.spec.js +3 -3
  30. package/src/components/common/expressions/__tests__/__snapshots__/Clauses.spec.js.snap +64 -0
  31. package/src/components/common/expressions/__tests__/__snapshots__/Condition.spec.js.snap +316 -0
  32. package/src/components/{functions → common}/expressions/__tests__/__snapshots__/ConstantSelector.spec.js.snap +1 -1
  33. package/src/components/common/expressions/__tests__/__snapshots__/Expression.spec.js.snap +939 -0
  34. package/src/components/common/expressions/__tests__/__snapshots__/FieldSelector.spec.js.snap +5 -0
  35. package/src/components/common/expressions/__tests__/__snapshots__/FunctionArgs.spec.js.snap +344 -0
  36. package/src/components/{functions → common}/expressions/__tests__/__snapshots__/ParamSelector.spec.js.snap +4 -4
  37. package/src/components/{functions → common}/expressions/__tests__/__snapshots__/ShapeSelector.spec.js.snap +17 -24
  38. package/src/components/common/expressions/constantInputs/AnySelector.js +44 -0
  39. package/src/components/{functions → common}/expressions/constantInputs/__tests__/AnySelector.spec.js +21 -14
  40. package/src/components/{functions → common}/expressions/constantInputs/__tests__/DefaultSelector.spec.js +5 -2
  41. package/src/components/{functions → common}/expressions/constantInputs/__tests__/__snapshots__/AnySelector.spec.js.snap +2 -2
  42. package/src/components/common/expressions/index.js +4 -0
  43. package/src/components/common/resourceSelectors/DataStructureSelector.js +63 -0
  44. package/src/components/common/resourceSelectors/DataViewSelector.js +65 -0
  45. package/src/components/common/resourceSelectors/ReferenceDatasetSelector.js +61 -0
  46. package/src/components/common/resourceSelectors/__tests__/DataStructureSelector.spec.js +31 -0
  47. package/src/components/common/resourceSelectors/__tests__/DataViewSelector.spec.js +133 -0
  48. package/src/components/common/resourceSelectors/__tests__/ReferenceDatasetSelector.spec.js +97 -0
  49. package/src/components/common/resourceSelectors/__tests__/__snapshots__/DataStructureSelector.spec.js.snap +105 -0
  50. package/src/components/common/resourceSelectors/__tests__/__snapshots__/DataViewSelector.spec.js.snap +50 -0
  51. package/src/components/common/resourceSelectors/__tests__/__snapshots__/ReferenceDatasetSelector.spec.js.snap +50 -0
  52. package/src/components/common/resourceSelectors/index.js +5 -0
  53. package/src/components/dataViews/DataViewEditor.js +170 -0
  54. package/src/components/dataViews/DataViewSelect.js +47 -0
  55. package/src/components/dataViews/DataViews.js +169 -0
  56. package/src/components/dataViews/Queryable.js +138 -0
  57. package/src/components/dataViews/Queryables.js +53 -0
  58. package/src/components/dataViews/__tests__/DataViewEditor.spec.js +293 -0
  59. package/src/components/dataViews/__tests__/DataViewSelect.spec.js +28 -0
  60. package/src/components/dataViews/__tests__/DataViews.spec.js +57 -0
  61. package/src/components/dataViews/__tests__/Queryable.spec.js +201 -0
  62. package/src/components/dataViews/__tests__/Queryables.spec.js +183 -0
  63. package/src/components/dataViews/__tests__/__snapshots__/DataViewEditor.spec.js.snap +1000 -0
  64. package/src/components/dataViews/__tests__/__snapshots__/DataViewSelect.spec.js.snap +55 -0
  65. package/src/components/dataViews/__tests__/__snapshots__/DataViews.spec.js.snap +77 -0
  66. package/src/components/dataViews/__tests__/__snapshots__/Queryable.spec.js.snap +874 -0
  67. package/src/components/dataViews/__tests__/__snapshots__/Queryables.spec.js.snap +911 -0
  68. package/src/components/dataViews/__tests__/queryableFunctions.spec.js +193 -0
  69. package/src/components/dataViews/queryableFunctions.js +80 -0
  70. package/src/components/dataViews/queryableProperties/From.js +15 -0
  71. package/src/components/dataViews/queryableProperties/GroupBy.js +124 -0
  72. package/src/components/dataViews/queryableProperties/Join.js +62 -0
  73. package/src/components/dataViews/queryableProperties/JoinTypeIcon.js +49 -0
  74. package/src/components/dataViews/queryableProperties/Select.js +76 -0
  75. package/src/components/dataViews/queryableProperties/SelectField.js +116 -0
  76. package/src/components/dataViews/queryableProperties/Where.js +15 -0
  77. package/src/components/dataViews/queryableProperties/__tests__/From.spec.js +30 -0
  78. package/src/components/dataViews/queryableProperties/__tests__/GroupBy.spec.js +75 -0
  79. package/src/components/dataViews/queryableProperties/__tests__/Join.spec.js +38 -0
  80. package/src/components/dataViews/queryableProperties/__tests__/JoinTypeIcon.spec.js +36 -0
  81. package/src/components/dataViews/queryableProperties/__tests__/Select.spec.js +144 -0
  82. package/src/components/dataViews/queryableProperties/__tests__/SelectField.spec.js +107 -0
  83. package/src/components/dataViews/queryableProperties/__tests__/Where.spec.js +27 -0
  84. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/From.spec.js.snap +75 -0
  85. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/GroupBy.spec.js.snap +276 -0
  86. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/Join.spec.js.snap +252 -0
  87. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/JoinTypeIcon.spec.js.snap +77 -0
  88. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/Select.spec.js.snap +411 -0
  89. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/SelectField.spec.js.snap +343 -0
  90. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/Where.spec.js.snap +22 -0
  91. package/src/components/dataViews/queryableProperties/index.js +7 -0
  92. package/src/components/functions/FunctionEditor.js +30 -29
  93. package/src/components/functions/Functions.js +3 -11
  94. package/src/components/functions/__tests__/FunctionEditor.spec.js +6 -0
  95. package/src/components/functions/__tests__/FunctionParams.spec.js +6 -0
  96. package/src/components/functions/__tests__/__snapshots__/FunctionEditor.spec.js.snap +490 -466
  97. package/src/components/functions/__tests__/__snapshots__/FunctionParams.spec.js.snap +1 -1
  98. package/src/hooks/__tests__/{useDataSets.spec.js → useDataViews.spec.js} +5 -5
  99. package/src/hooks/useDataViews.js +33 -0
  100. package/src/styles/Expression.less +150 -0
  101. package/src/types.js +11 -3
  102. package/src/components/DataSets.js +0 -64
  103. package/src/components/__tests__/DataSets.spec.js +0 -46
  104. package/src/components/__tests__/__snapshots__/DataSets.spec.js.snap +0 -82
  105. package/src/components/functions/expressions/Expression.js +0 -40
  106. package/src/components/functions/expressions/FieldSelector.js +0 -56
  107. package/src/components/functions/expressions/__tests__/__snapshots__/Expression.spec.js.snap +0 -904
  108. package/src/components/functions/expressions/__tests__/__snapshots__/FunctionArgs.spec.js.snap +0 -392
  109. package/src/components/functions/expressions/constantInputs/AnySelector.js +0 -29
  110. package/src/hooks/useDataSets.js +0 -8
  111. /package/src/components/{functions → common}/expressions/ConstantSelector.js +0 -0
  112. /package/src/components/{functions → common}/expressions/__tests__/__snapshots__/FunctionSelector.spec.js.snap +0 -0
  113. /package/src/components/{functions → common/expressions}/__tests__/useWatchParams.spec.js +0 -0
  114. /package/src/components/{functions → common}/expressions/constantInputs/BooleanSelector.js +0 -0
  115. /package/src/components/{functions → common}/expressions/constantInputs/DefaultSelector.js +0 -0
  116. /package/src/components/{functions → common}/expressions/constantInputs/__tests__/BooleanSelector.spec.js +0 -0
  117. /package/src/components/{functions → common}/expressions/constantInputs/__tests__/__snapshots__/BooleanSelector.spec.js.snap +0 -0
  118. /package/src/components/{functions → common}/expressions/constantInputs/__tests__/__snapshots__/DefaultSelector.spec.js.snap +0 -0
  119. /package/src/components/{functions → common}/expressions/constantInputs/index.js +0 -0
  120. /package/src/components/{functions → common/expressions}/useWatchParams.js +0 -0
@@ -0,0 +1,276 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`<GroupBy /> matches the latest snapshot 1`] = `
4
+ <div>
5
+ <div
6
+ class="required field"
7
+ >
8
+ <label>
9
+ group_fields
10
+ </label>
11
+ <div
12
+ class="ui list"
13
+ role="list"
14
+ >
15
+ <div
16
+ class="item"
17
+ role="listitem"
18
+ >
19
+ <div>
20
+ <div
21
+ class="ui grid"
22
+ >
23
+ <div
24
+ class="row"
25
+ >
26
+ <div
27
+ class="column"
28
+ />
29
+ <div
30
+ class="nine wide column"
31
+ >
32
+ <div
33
+ class="ui grid"
34
+ >
35
+ <div
36
+ class="sixteen wide column"
37
+ >
38
+ <div
39
+ class="expression-container"
40
+ >
41
+ <div
42
+ aria-expanded="false"
43
+ class="ui top left pointing dropdown"
44
+ role="listbox"
45
+ tabindex="0"
46
+ >
47
+ <div
48
+ class="shape-selector-trigger"
49
+ >
50
+ f(x)
51
+ </div>
52
+ <div
53
+ class="menu transition"
54
+ >
55
+ <div
56
+ aria-checked="false"
57
+ aria-selected="false"
58
+ class="item"
59
+ role="option"
60
+ style="pointer-events: all;"
61
+ >
62
+ <div
63
+ class="text flex-center"
64
+ >
65
+ <small
66
+ style="margin-right: 5px;"
67
+ >
68
+ <b>
69
+ <code>
70
+ [π]
71
+ </code>
72
+ </b>
73
+ </small>
74
+ constant
75
+ </div>
76
+ </div>
77
+ <div
78
+ aria-checked="true"
79
+ aria-selected="true"
80
+ class="active selected item"
81
+ role="option"
82
+ style="pointer-events: all;"
83
+ >
84
+ <div
85
+ class="text flex-center"
86
+ >
87
+ <small
88
+ style="margin-right: 5px;"
89
+ >
90
+ <b>
91
+ <code>
92
+ f(x)
93
+ </code>
94
+ </b>
95
+ </small>
96
+ function
97
+ </div>
98
+ </div>
99
+ </div>
100
+ </div>
101
+ <div
102
+ class="accordion ui fluid no-margin"
103
+ >
104
+ <div
105
+ class="active title no-padding"
106
+ >
107
+ <div
108
+ class="flex-center"
109
+ >
110
+ <i
111
+ aria-hidden="true"
112
+ class="dropdown icon"
113
+ />
114
+ <div
115
+ aria-expanded="false"
116
+ class="ui fluid search selection dropdown"
117
+ role="combobox"
118
+ >
119
+ <input
120
+ aria-autocomplete="list"
121
+ autocomplete="off"
122
+ class="search"
123
+ tabindex="0"
124
+ type="text"
125
+ value=""
126
+ />
127
+ <div
128
+ aria-atomic="true"
129
+ aria-live="polite"
130
+ class="divider text"
131
+ role="alert"
132
+ >
133
+ placeholder
134
+ </div>
135
+ <i
136
+ aria-hidden="true"
137
+ class="dropdown icon"
138
+ />
139
+ <div
140
+ class="menu transition"
141
+ role="listbox"
142
+ >
143
+ <div
144
+ class="message"
145
+ >
146
+ No results found.
147
+ </div>
148
+ </div>
149
+ </div>
150
+ </div>
151
+ </div>
152
+ <div
153
+ class="content active no-padding"
154
+ />
155
+ </div>
156
+ </div>
157
+ </div>
158
+ </div>
159
+ </div>
160
+ <div
161
+ class="six wide column"
162
+ >
163
+ <div
164
+ class="inline fields no-margin"
165
+ >
166
+ <div
167
+ class="field"
168
+ >
169
+ <div
170
+ class="ui input"
171
+ >
172
+ <input
173
+ autocomplete="off"
174
+ placeholder="alias"
175
+ type="text"
176
+ value=""
177
+ />
178
+ </div>
179
+ </div>
180
+ </div>
181
+ </div>
182
+ </div>
183
+ </div>
184
+ </div>
185
+ </div>
186
+ <div
187
+ class="item"
188
+ role="listitem"
189
+ >
190
+ <button
191
+ class="ui button"
192
+ >
193
+ add_group_field
194
+ </button>
195
+ </div>
196
+ </div>
197
+ </div>
198
+ <div
199
+ class="field"
200
+ >
201
+ <label>
202
+ aggregate_fields
203
+ </label>
204
+ <div
205
+ class="ui list"
206
+ role="list"
207
+ >
208
+ <div
209
+ class="item"
210
+ role="listitem"
211
+ >
212
+ <div>
213
+ <div
214
+ class="ui grid"
215
+ >
216
+ <div
217
+ class="row"
218
+ >
219
+ <div
220
+ class="column"
221
+ />
222
+ <div
223
+ class="nine wide column"
224
+ >
225
+ <div
226
+ class="ui grid"
227
+ >
228
+ <div
229
+ class="sixteen wide column"
230
+ >
231
+ <div
232
+ class="expression-container"
233
+ />
234
+ </div>
235
+ </div>
236
+ </div>
237
+ <div
238
+ class="six wide column"
239
+ >
240
+ <div
241
+ class="inline fields no-margin"
242
+ >
243
+ <div
244
+ class="field"
245
+ >
246
+ <div
247
+ class="ui input"
248
+ >
249
+ <input
250
+ autocomplete="off"
251
+ placeholder="alias"
252
+ type="text"
253
+ value=""
254
+ />
255
+ </div>
256
+ </div>
257
+ </div>
258
+ </div>
259
+ </div>
260
+ </div>
261
+ </div>
262
+ </div>
263
+ <div
264
+ class="item"
265
+ role="listitem"
266
+ >
267
+ <button
268
+ class="ui button"
269
+ >
270
+ add_aggregate_field
271
+ </button>
272
+ </div>
273
+ </div>
274
+ </div>
275
+ </div>
276
+ `;
@@ -0,0 +1,252 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`<Join /> matches the latest snapshot 1`] = `
4
+ <div>
5
+ <div
6
+ class="required field"
7
+ >
8
+ <label>
9
+ resource
10
+ </label>
11
+ <div
12
+ aria-expanded="false"
13
+ class="ui selection dropdown"
14
+ role="listbox"
15
+ tabindex="0"
16
+ >
17
+ <div
18
+ aria-atomic="true"
19
+ aria-live="polite"
20
+ class="divider default text"
21
+ role="alert"
22
+ >
23
+ type
24
+ </div>
25
+ <i
26
+ aria-hidden="true"
27
+ class="dropdown icon"
28
+ />
29
+ <div
30
+ class="menu transition"
31
+ >
32
+ <div
33
+ aria-checked="false"
34
+ aria-selected="true"
35
+ class="selected item"
36
+ role="option"
37
+ style="pointer-events: all;"
38
+ >
39
+ <span
40
+ class="text"
41
+ >
42
+ data_structure
43
+ </span>
44
+ </div>
45
+ <div
46
+ aria-checked="false"
47
+ aria-selected="false"
48
+ class="item"
49
+ role="option"
50
+ style="pointer-events: all;"
51
+ >
52
+ <span
53
+ class="text"
54
+ >
55
+ reference_dataset
56
+ </span>
57
+ </div>
58
+ <div
59
+ aria-checked="false"
60
+ aria-selected="false"
61
+ class="item"
62
+ role="option"
63
+ style="pointer-events: all;"
64
+ >
65
+ <span
66
+ class="text"
67
+ >
68
+ data_view
69
+ </span>
70
+ </div>
71
+ </div>
72
+ </div>
73
+ </div>
74
+ <div
75
+ class="vertical-space"
76
+ >
77
+ <div
78
+ class="field"
79
+ >
80
+ <label>
81
+ type
82
+ </label>
83
+ <div
84
+ aria-expanded="false"
85
+ class="ui selection dropdown select-field-dropdown"
86
+ label="alias"
87
+ role="listbox"
88
+ tabindex="0"
89
+ >
90
+ <div
91
+ aria-atomic="true"
92
+ aria-live="polite"
93
+ class="divider text"
94
+ role="alert"
95
+ >
96
+ <div
97
+ class="join_type"
98
+ >
99
+ <div
100
+ class="circle circle-left"
101
+ >
102
+ <div
103
+ class="circle circle-center fill"
104
+ />
105
+ </div>
106
+ <div
107
+ class="circle circle-right"
108
+ />
109
+ </div>
110
+ inner
111
+ </div>
112
+ <i
113
+ aria-hidden="true"
114
+ class="dropdown icon"
115
+ />
116
+ <div
117
+ class="menu transition"
118
+ >
119
+ <div
120
+ aria-checked="true"
121
+ aria-selected="true"
122
+ class="active selected item"
123
+ role="option"
124
+ style="pointer-events: all;"
125
+ >
126
+ <div
127
+ class="join_type"
128
+ >
129
+ <div
130
+ class="circle circle-left"
131
+ >
132
+ <div
133
+ class="circle circle-center fill"
134
+ />
135
+ </div>
136
+ <div
137
+ class="circle circle-right"
138
+ />
139
+ </div>
140
+ <span
141
+ class="text"
142
+ >
143
+ inner
144
+ </span>
145
+ </div>
146
+ <div
147
+ aria-checked="false"
148
+ aria-selected="false"
149
+ class="item"
150
+ role="option"
151
+ style="pointer-events: all;"
152
+ >
153
+ <div
154
+ class="join_type"
155
+ >
156
+ <div
157
+ class="circle circle-left fill"
158
+ >
159
+ <div
160
+ class="circle circle-center fill"
161
+ />
162
+ </div>
163
+ <div
164
+ class="circle circle-right"
165
+ />
166
+ </div>
167
+ <span
168
+ class="text"
169
+ >
170
+ left
171
+ </span>
172
+ </div>
173
+ <div
174
+ aria-checked="false"
175
+ aria-selected="false"
176
+ class="item"
177
+ role="option"
178
+ style="pointer-events: all;"
179
+ >
180
+ <div
181
+ class="join_type"
182
+ >
183
+ <div
184
+ class="circle circle-left"
185
+ >
186
+ <div
187
+ class="circle circle-center fill"
188
+ />
189
+ </div>
190
+ <div
191
+ class="circle circle-right fill"
192
+ />
193
+ </div>
194
+ <span
195
+ class="text"
196
+ >
197
+ right
198
+ </span>
199
+ </div>
200
+ <div
201
+ aria-checked="false"
202
+ aria-selected="false"
203
+ class="item"
204
+ role="option"
205
+ style="pointer-events: all;"
206
+ >
207
+ <div
208
+ class="join_type"
209
+ >
210
+ <div
211
+ class="circle circle-left fill"
212
+ >
213
+ <div
214
+ class="circle circle-center fill"
215
+ />
216
+ </div>
217
+ <div
218
+ class="circle circle-right fill"
219
+ />
220
+ </div>
221
+ <span
222
+ class="text"
223
+ >
224
+ full_outer
225
+ </span>
226
+ </div>
227
+ </div>
228
+ </div>
229
+ </div>
230
+ </div>
231
+ <div
232
+ class="vertical-space"
233
+ >
234
+ <div
235
+ class="field"
236
+ >
237
+ <label>
238
+ clause
239
+ </label>
240
+ <div
241
+ class="ui horizontal divider"
242
+ >
243
+ <button
244
+ class="ui mini button"
245
+ >
246
+ addGroup
247
+ </button>
248
+ </div>
249
+ </div>
250
+ </div>
251
+ </div>
252
+ `;
@@ -0,0 +1,77 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`<JoinTypeIcon /> matches the latest snapshot for full_outer join 1`] = `
4
+ <div>
5
+ <div
6
+ class="join_type"
7
+ >
8
+ <div
9
+ class="circle circle-left fill"
10
+ >
11
+ <div
12
+ class="circle circle-center fill"
13
+ />
14
+ </div>
15
+ <div
16
+ class="circle circle-right fill"
17
+ />
18
+ </div>
19
+ </div>
20
+ `;
21
+
22
+ exports[`<JoinTypeIcon /> matches the latest snapshot for inner join 1`] = `
23
+ <div>
24
+ <div
25
+ class="join_type"
26
+ >
27
+ <div
28
+ class="circle circle-left"
29
+ >
30
+ <div
31
+ class="circle circle-center fill"
32
+ />
33
+ </div>
34
+ <div
35
+ class="circle circle-right"
36
+ />
37
+ </div>
38
+ </div>
39
+ `;
40
+
41
+ exports[`<JoinTypeIcon /> matches the latest snapshot for left join 1`] = `
42
+ <div>
43
+ <div
44
+ class="join_type"
45
+ >
46
+ <div
47
+ class="circle circle-left fill"
48
+ >
49
+ <div
50
+ class="circle circle-center fill"
51
+ />
52
+ </div>
53
+ <div
54
+ class="circle circle-right"
55
+ />
56
+ </div>
57
+ </div>
58
+ `;
59
+
60
+ exports[`<JoinTypeIcon /> matches the latest snapshot for right join 1`] = `
61
+ <div>
62
+ <div
63
+ class="join_type"
64
+ >
65
+ <div
66
+ class="circle circle-left"
67
+ >
68
+ <div
69
+ class="circle circle-center fill"
70
+ />
71
+ </div>
72
+ <div
73
+ class="circle circle-right fill"
74
+ />
75
+ </div>
76
+ </div>
77
+ `;