playbook_ui 15.4.0.pre.alpha.PLAY2465improvetruncation12292 → 15.4.0.pre.alpha.play254712379

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +44 -3
  3. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_compound_components.html.erb +2 -2
  4. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_description.md +3 -1
  5. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_default.md +1 -0
  6. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_position.html.erb +1 -1
  7. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_position.md +11 -0
  8. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_description.md +3 -1
  9. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.md +2 -1
  10. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_default.md +1 -0
  11. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_description.md +3 -1
  12. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_color.md +2 -2
  13. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_default.md +1 -0
  14. data/app/pb_kits/playbook/pb_pb_line_graph/docs/_description.md +3 -1
  15. data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_default.md +1 -0
  16. data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_legend_position.html.erb +1 -1
  17. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +384 -262
  18. data/app/pb_kits/playbook/pb_progress_step/docs/_description.md +1 -5
  19. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_color.html.erb +14 -0
  20. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_color.jsx +29 -0
  21. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_color.md +3 -0
  22. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_custom_icon.jsx +31 -0
  23. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_custom_icon.md +1 -0
  24. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.html.erb +4 -1
  25. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.jsx +14 -3
  26. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.md +3 -0
  27. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_tracker.md +3 -0
  28. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_vertical.html.erb +1 -7
  29. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_vertical.md +1 -0
  30. data/app/pb_kits/playbook/pb_progress_step/docs/example.yml +3 -0
  31. data/app/pb_kits/playbook/pb_progress_step/docs/index.js +2 -0
  32. data/app/pb_kits/playbook/pb_progress_step/progress_step.test.js +41 -0
  33. data/app/pb_kits/playbook/utilities/_truncate.scss +0 -2
  34. data/dist/chunks/{_line_graph-eQNOB_GQ.js → _line_graph-8BUASxIP.js} +1 -1
  35. data/dist/chunks/{_typeahead-vbfetkuE.js → _typeahead-DESMSfUO.js} +1 -1
  36. data/dist/chunks/{_weekday_stacked-CvJHyUq6.js → _weekday_stacked-EQMaMJvC.js} +1 -1
  37. data/dist/chunks/{lib-BCrK6CFU.js → lib-CzQFzKzw.js} +1 -1
  38. data/dist/chunks/{pb_form_validation-Cj4vdjWI.js → pb_form_validation-Bf9TK15t.js} +1 -1
  39. data/dist/chunks/vendor.js +1 -1
  40. data/dist/playbook-doc.js +1 -1
  41. data/dist/playbook-rails-react-bindings.js +1 -1
  42. data/dist/playbook-rails.js +1 -1
  43. data/dist/playbook.css +1 -1
  44. data/lib/playbook/version.rb +1 -1
  45. metadata +20 -7
@@ -5,291 +5,413 @@
5
5
  @import "../tokens/typography";
6
6
 
7
7
 
8
+ //--------- Show icon on active and complete steps ----------
9
+ .pb_progress_step_kit_horizontal_icon,
10
+ .pb_progress_step_kit_vertical_icon,
11
+ .pb_progress_step_kit_horizontal_icon_tracker,
12
+ .pb_progress_step_kit_horizontal_icon_tracker_info {
13
+ .pb_progress_step_item_complete,
14
+ .pb_progress_step_item_active {
15
+ .box .circle svg {
16
+ opacity: 1;
17
+ }
18
+ }
19
+ }
8
20
 
9
- [class^=pb_progress_step_kit]{
10
- list-style:none;
21
+ //---------- Start of Horizontal ----------
22
+ .pb_progress_step_kit_horizontal,
23
+ .pb_progress_step_kit_horizontal_icon,
24
+ .pb_progress_step_kit_horizontal_tracker,
25
+ .pb_progress_step_kit_horizontal_icon_tracker,
26
+ .pb_progress_step_kit_horizontal_tracker_info,
27
+ .pb_progress_step_kit_horizontal_icon_tracker_info {
28
+ list-style: none;
29
+ display: flex;
30
+ flex-direction: row;
31
+
32
+ .pb_progress_step_item_inactive,
33
+ .pb_progress_step_item_active,
34
+ .pb_progress_step_item_complete,
35
+ .pb_progress_step_item_hidden {
11
36
  display: flex;
12
- [class*=pb_progress_step_item] {
13
- display:flex;
14
- flex-direction:column;
37
+ flex-direction: column;
15
38
  position: relative;
16
39
  flex-basis: 100%;
40
+ align-items: flex-end;
17
41
 
18
42
  .circle {
19
- height:14px;
20
- width:14px;
21
- border-radius:100%;
22
- display: flex;
23
- align-items: center;
24
- justify-content: center;
25
- z-index: 3;
26
- box-shadow: 0 0 0 2px $white;
27
-
28
- svg {
29
- width:10px;
30
- height:10px;
31
- opacity: 0;
32
- color: $white;
33
- }
34
- }
35
-
36
- &::before{
37
- content: '';
38
- height: 4px;
43
+ height: 14px;
44
+ width: 14px;
45
+ border-radius: 100%;
46
+ display: flex;
47
+ align-items: center;
48
+ justify-content: center;
49
+ z-index: 3;
50
+ box-shadow: 0 0 0 2px $white;
51
+
52
+ svg {
53
+ width: 10px;
54
+ height: 10px;
55
+ opacity: 0;
56
+ color: $white;
57
+ }
58
+ }
59
+
60
+ &::before {
61
+ content: "";
62
+ height: 4px;
63
+ position: absolute;
64
+ top: 5px;
65
+ width: calc(100% + 0.04em);
66
+ background-color: $border_light;
67
+ }
68
+
69
+ &:last-child::after,
70
+ &:first-child::before {
71
+ display: none;
72
+ }
73
+
74
+ &:first-child {
75
+ position: relative;
76
+ align-items: flex-start;
77
+ flex-basis: 0;
78
+
79
+ .box {
80
+ align-items: flex-start;
81
+ }
82
+ }
83
+
84
+ &:last-child {
85
+ .box {
86
+ align-items: flex-end;
87
+ }
88
+ }
89
+
90
+ .box {
91
+ display: flex;
92
+ flex-direction: column;
93
+ align-items: center;
94
+
95
+ .content {
96
+ top: 16px;
39
97
  position: absolute;
40
- top: 5px;
41
- width:100%;
42
- background-color:$border_light;
43
- }
44
-
45
- &:last-child::after, &:first-child::before {
46
- display:none;
47
- }
48
-
49
- &[class*=_inactive]{
50
- .circle{
51
- background-color: $border_light;
52
- color: $border_light;
53
- }
54
- }
55
- &[class*=_active]{
56
- .circle{
57
- background-color: $white;
58
- border: solid 2px $primary;
59
- color: rgba( $primary, 0)
60
- }
61
- &::before{
62
- background-color: $primary;
63
- }
64
- }
65
- &[class*=_complete]{
66
- .circle{
67
- background-color: $primary;
68
- color:$white;
69
- }
70
- &::before{
71
- background-color: $primary;
72
- }
98
+ width: fit-content;
99
+ min-width: max-content;
100
+ }
73
101
  }
74
102
  }
75
- // Start of Horizontal
76
- &[class*=horizontal]{
77
- flex-direction: row;
78
- [class*=pb_progress_step_item]{
79
- align-items: flex-end;
80
- &::before{
81
- width: calc(100% + .04em);
82
- }
83
- [class*=box]{
84
- display: flex;
85
- flex-direction: column;
86
- align-items: center;
87
- .content{
88
- top: 16px;
89
- position: absolute;
90
- width: fit-content;
91
- min-width: max-content;
92
- }
93
- }
94
- &:first-child {
95
- position: relative;
96
- align-items: flex-start;
97
- flex-basis: 0;
98
- .box{
99
- align-items: flex-start;
100
- }
101
- }
102
- &:last-child{
103
- .box{
104
- align-items: flex-end;
105
- }
106
-
107
- }
108
- }
109
- // Start of Tracker
110
- &[class*=tracker] {
111
- background-color: $border_light;
112
- border-radius: 1rem;
113
- height:24px;
114
- align-items: center;
115
- [class*=box]{
116
- .circle{
117
- box-shadow: none;
118
- height: 24px;
119
- width: 24px;
120
- border: $primary solid 4px;
121
- }
122
- .content{
123
- top:-24px;
124
- position: absolute;
125
- }
126
- }
127
- li[class*=pb_progress_step_item]{
128
- &::before{
129
- background-color: $border_light;
130
- height: 24px;
131
- border-radius: 1rem;
132
- top: 0;
133
- width: calc(100% + 1.5em);
134
- }
135
- .box{
136
- align-items: center;
137
- }
138
- &:first-child{
139
- position: relative;
140
- .box{
141
- align-items: flex-start;
142
- }
143
- }
144
- &:last-child{
145
- .box{
146
- align-items: flex-end;
147
- }
148
- }
149
- }
150
- li[class*=_active]{
151
- .circle{
152
- height: 24px;
153
- width: 24px;
154
- border: $primary solid $border_rad_light;
155
- background-color: rgba($white, $opacity_8);
156
- svg {
157
- color: darken($primary,25%);
158
- }
159
- }
160
- &::before {
161
- background-color: $primary;
162
- }
163
- }
164
- li[class*=_inactive]{
165
- &::before {
166
- display: none;
167
- background-color: $border_light;
168
- }
169
- .circle{
170
- background-color: darken($border_light,10%);
171
- border: $border_light solid 6px;
172
- }
173
-
174
- }
175
- li[class*=_complete]{
176
- &::before {
177
- background-color: $primary;
178
- }
179
- .circle{
180
- background-color: darken($primary,25%);
181
- }
182
- }
183
- li[class*=_hidden]{
184
- &::before, .circle {
185
- display: none;
186
- }
187
- }
188
- li[class*=_hidden] ~ li[class*=_active],
189
- li[class*=_hidden] ~ li[class*=_complete] {
190
- &::before {
191
- width: calc(200% + 1.5em);
192
- }
193
- }
194
- &[class*=dark]{
195
- background-color: tint($bg_dark,20%);
196
- [class*=_inactive]{
197
- .circle{
198
- border-color: tint($bg_dark,20%);
199
- }
200
- }
201
- }
202
- &[class*=info]{
203
- li[class*=inactive] .circle{
204
- border-color: $border_light;
205
- }
206
- .box .circle , li[class*=_active] .circle{
207
- border-color: $teal;
208
- }
209
- li[class*=_complete],li[class*=_active]{
210
- &::before {
211
- background-color: $teal;
212
- }
213
- }
214
- li[class*=_complete] .circle{
215
- background-color: darken($teal,25%);
216
- }
217
- }
218
- }
219
- //End of Tracker
220
103
 
104
+ .pb_progress_step_item_inactive {
105
+ .circle {
106
+ background-color: $border_light;
107
+ color: $border_light;
108
+ }
109
+ }
110
+
111
+ .pb_progress_step_item_active {
112
+ .circle {
113
+ background-color: $white;
114
+ border: solid 2px $primary;
115
+ color: rgba($primary, 0);
116
+ }
117
+
118
+ &::before {
119
+ background-color: $primary;
120
+ }
221
121
  }
222
- // End of Horizontal
223
-
224
- // Start of Vertical
225
- &[class*=vertical]{
226
- flex-direction: column;
227
- [class*=pb_progress_step_item]{
228
- [class*=box]{
229
- display:flex;
230
- flex-direction: row;
122
+
123
+ .pb_progress_step_item_complete {
124
+ .circle {
125
+ background-color: $primary;
126
+ color: $white;
127
+ }
128
+
129
+ &::before {
130
+ background-color: $primary;
131
+ }
132
+ }
133
+ }
134
+
135
+ //---------- Start of Tracker ----------
136
+ .pb_progress_step_kit_horizontal_tracker,
137
+ .pb_progress_step_kit_horizontal_icon_tracker,
138
+ .pb_progress_step_kit_horizontal_tracker_info,
139
+ .pb_progress_step_kit_horizontal_icon_tracker_info {
140
+ background-color: $border_light;
141
+ border-radius: 1rem;
142
+ height: 24px;
143
+ align-items: center;
144
+
145
+ .box {
146
+ .circle {
147
+ box-shadow: none;
148
+ height: 24px;
149
+ width: 24px;
150
+ border: $primary solid 4px;
151
+ }
152
+
153
+ .content {
154
+ top: -24px !important;
155
+ position: absolute;
156
+ }
157
+ }
158
+
159
+ li.pb_progress_step_item_inactive,
160
+ li.pb_progress_step_item_active,
161
+ li.pb_progress_step_item_complete,
162
+ li.pb_progress_step_item_hidden {
163
+ &::before {
164
+ background-color: $border_light;
165
+ height: 24px;
166
+ border-radius: 1rem;
167
+ top: 0;
168
+ width: calc(100% + 1.5em);
169
+ }
170
+
171
+ .box {
172
+ align-items: center;
173
+ }
174
+
175
+ &:first-child {
176
+ position: relative;
177
+
178
+ .box {
231
179
  align-items: flex-start;
232
- justify-content: flex-start;
233
- margin: 8px;
234
- }
235
- &::before {
236
- display: flex;
237
- flex-direction: column;
238
- content: '';
239
- height: 100%;
240
- position: absolute;
241
- top:14px;
242
- left: 21px;
243
- width:4px;
244
- background-color:$border_light;
245
- }
246
- &:last-child::before{
247
- display:none;
248
- }
249
- .circle{
250
- margin: 0 8px;
251
- }
180
+ }
181
+ }
182
+
183
+ &:last-child {
184
+ .box {
185
+ align-items: flex-end;
186
+ }
187
+ }
188
+ }
189
+
190
+ li.pb_progress_step_item_active {
191
+ .circle {
192
+ height: 24px;
193
+ width: 24px;
194
+ border: $primary solid $border_rad_light;
195
+ background-color: rgba($white, $opacity_8);
196
+
197
+ svg {
198
+ color: darken($primary, 25%);
199
+ }
200
+ }
201
+
202
+ &::before {
203
+ background-color: $primary;
204
+ }
205
+ }
206
+
207
+ li.pb_progress_step_item_inactive {
208
+ &::before {
209
+ display: none;
210
+ background-color: $border_light;
211
+ }
212
+
213
+ .circle {
214
+ background-color: darken($border_light, 10%);
215
+ border: $border_light solid 6px;
216
+ }
217
+ }
218
+
219
+ li.pb_progress_step_item_complete {
220
+ &::before {
221
+ background-color: $primary;
222
+ }
223
+
224
+ .circle {
225
+ background-color: darken($primary, 25%);
226
+ }
227
+ }
228
+
229
+ li.pb_progress_step_item_hidden {
230
+ &::before,
231
+ .circle {
232
+ display: none;
252
233
  }
253
234
  }
254
- //End of Vertical
255
- &[class*=icon]{
256
- [class*=progress_step_item][class*=_complete],
257
- [class*=progress_step_item][class*=_active] {
258
- [class*=box] .circle svg {
259
- opacity: 1;
260
-
261
- }
235
+
236
+ li.pb_progress_step_item_hidden ~ li.pb_progress_step_item_active,
237
+ li.pb_progress_step_item_hidden ~ li.pb_progress_step_item_complete {
238
+ &::before {
239
+ width: calc(200% + 1.5em);
262
240
  }
241
+ }
242
+ }
243
+
244
+ .pb_progress_step_kit_horizontal_tracker.dark,
245
+ .pb_progress_step_kit_horizontal_icon_tracker.dark,
246
+ .pb_progress_step_kit_horizontal_tracker_info.dark,
247
+ .pb_progress_step_kit_horizontal_icon_tracker_info.dark {
248
+ background-color: tint($bg_dark, 20%);
249
+
250
+ .pb_progress_step_item_inactive {
251
+ .circle {
252
+ border-color: tint($bg_dark, 20%);
263
253
  }
254
+ }
255
+ }
256
+
257
+ .pb_progress_step_kit_horizontal_tracker_info,
258
+ .pb_progress_step_kit_horizontal_icon_tracker_info {
259
+ li.pb_progress_step_item_inactive .circle {
260
+ border-color: $border_light;
261
+ }
264
262
 
263
+ .box .circle,
264
+ li.pb_progress_step_item_active .circle {
265
+ border-color: $teal;
266
+ }
265
267
 
266
- &[class*=dark] {
267
- [class*=progress_step_item]{
268
- &::before{
269
- background-color: tint($bg_dark,20%);
270
- }
268
+ li.pb_progress_step_item_complete,
269
+ li.pb_progress_step_item_active {
270
+ &::before {
271
+ background-color: $teal;
271
272
  }
272
- .circle{
273
- box-shadow: 0 0 0 2px tint($bg_dark,10%);
273
+ }
274
+
275
+ li.pb_progress_step_item_complete .circle {
276
+ background-color: darken($teal, 25%);
277
+ }
278
+ }
279
+ //---------- End of Tracker ----------
280
+ //---------- End of Horizontal ----------
281
+
282
+ //---------- Start of Vertical ----------
283
+ .pb_progress_step_kit_vertical,
284
+ .pb_progress_step_kit_vertical_icon {
285
+ list-style: none;
286
+ display: flex;
287
+ flex-direction: column;
288
+
289
+ .pb_progress_step_item_inactive,
290
+ .pb_progress_step_item_active,
291
+ .pb_progress_step_item_complete,
292
+ .pb_progress_step_item_hidden {
293
+ display: flex;
294
+ flex-direction: column;
295
+ position: relative;
296
+ flex-basis: 100%;
297
+
298
+ .circle {
299
+ height: 14px;
300
+ width: 14px;
301
+ border-radius: 100%;
302
+ display: flex;
303
+ align-items: center;
304
+ justify-content: center;
305
+ z-index: 3;
306
+ box-shadow: 0 0 0 2px $white;
307
+ margin: 0 8px;
308
+
309
+ svg {
310
+ width: 10px;
311
+ height: 10px;
312
+ opacity: 0;
313
+ color: $white;
314
+ }
274
315
  }
275
- [class*=active]{
276
- .circle{
277
- background-color: tint($bg_dark,10%);
278
- }
279
- &::before{
280
- background-color: $primary;
281
- }
316
+
317
+ &::before {
318
+ display: flex;
319
+ flex-direction: column;
320
+ content: "";
321
+ height: 100%;
322
+ position: absolute;
323
+ top: 14px;
324
+ left: 21px;
325
+ width: 4px;
326
+ background-color: $border_light;
282
327
  }
283
- [class*=inactive]{
284
- .circle, &::before{
285
- background-color: tint($bg_dark,20%);
286
- }
328
+
329
+ &:last-child::after,
330
+ &:last-child::before {
331
+ display: none;
287
332
  }
288
- [class*=complete]{
289
- .circle, &::before{
290
- background-color: $primary;
291
- }
333
+
334
+ .box {
335
+ display: flex;
336
+ flex-direction: row;
337
+ align-items: flex-start;
338
+ justify-content: flex-start;
339
+ margin: 8px;
292
340
  }
293
341
  }
294
342
 
343
+ .pb_progress_step_item_inactive {
344
+ .circle {
345
+ background-color: $border_light;
346
+ color: $border_light;
347
+ }
348
+ }
349
+
350
+ .pb_progress_step_item_active {
351
+ .circle {
352
+ background-color: $white;
353
+ border: solid 2px $primary;
354
+ color: rgba($primary, 0);
355
+ }
356
+ }
357
+
358
+ .pb_progress_step_item_complete {
359
+ .circle {
360
+ background-color: $primary;
361
+ color: $white;
362
+ }
363
+
364
+ &::before {
365
+ background-color: $primary;
366
+ }
367
+ }
368
+ }
369
+ //------- End of Vertical ---------
370
+
371
+
372
+ //---------- Dark Mode Styles ----------
373
+ .pb_progress_step_kit_horizontal.dark,
374
+ .pb_progress_step_kit_vertical.dark,
375
+ .pb_progress_step_kit_horizontal_icon.dark,
376
+ .pb_progress_step_kit_vertical_icon.dark {
377
+ .pb_progress_step_item_inactive,
378
+ .pb_progress_step_item_active,
379
+ .pb_progress_step_item_complete,
380
+ .pb_progress_step_item_hidden {
381
+ &::before {
382
+ background-color: tint($bg_dark, 20%);
383
+ }
384
+ }
385
+
386
+ .circle {
387
+ box-shadow: 0 0 0 2px tint($bg_dark, 10%) !important;
388
+ }
389
+
390
+ .pb_progress_step_item_inactive {
391
+ .circle,
392
+ &::before {
393
+ background-color: tint($bg_dark, 20%);
394
+ }
395
+ }
396
+
397
+ .pb_progress_step_item_complete {
398
+ .circle,
399
+ &::before {
400
+ background-color: $primary;
401
+ }
402
+ }
403
+ .pb_progress_step_item_active {
404
+ .circle {
405
+ background-color: tint($bg_dark, 10%);
406
+ }
407
+ }
408
+ }
409
+
410
+ .pb_progress_step_kit_horizontal.dark,
411
+ .pb_progress_step_kit_horizontal_icon.dark {
412
+ .pb_progress_step_item_active {
413
+ &::before {
414
+ background-color: $primary;
415
+ }
416
+ }
295
417
  }
@@ -1,5 +1 @@
1
- Progress step kit is used to show the progress of a process. There are three types of steps in this kit: completed, active, and inactive. Completed steps are indicated by a solid, blue circle (with or without an icon). The current, or active, step is indicated by an outlined blue circle. The inactive, or future, step is indicated by a solid gray circle.
2
-
3
- **Tracker**
4
- You must set the icon prop to true for this kit.
5
- This variant takes children just like the default progress step. It is best to use the caption kit for children in this variant.
1
+ Progress Step kit is used to show the progress of a process. There are three types of steps in this kit: completed, active, and inactive. Completed steps are indicated by a solid, blue circle (with or without an icon). The current, or active, step is indicated by an outlined blue circle. The inactive, or future, step is indicated by a solid gray circle.
@@ -0,0 +1,14 @@
1
+ <br><br>
2
+ <%= pb_rails("progress_step",props:{ variant:"tracker", icon:true, color: "info"}) do %>
3
+ <%= pb_rails("progress_step/progress_step_item", props: {status: "complete"}) do %>
4
+ <%= pb_rails("caption", props:{text: "Ordered"})%>
5
+ <% end %>
6
+ <%= pb_rails("progress_step/progress_step_item", props: {status: "active"}) do %>
7
+ <%= pb_rails("caption", props:{text: "Shipped"})%>
8
+ <% end %>
9
+ <%= pb_rails("progress_step/progress_step_item", props: {status: "inactive"}) do %>
10
+ <%= pb_rails("caption", props:{text: "Delivered"})%>
11
+ <% end %>
12
+ <% end %>
13
+
14
+ <br>