@asd20/ui-next 2.7.3 → 2.7.4
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/CHANGELOG.md +2 -0
- package/package.json +1 -1
- package/src/components/organisms/Asd20ComposeEmailModal/index.vue +58 -101
- package/src/components/organisms/Asd20QuicklinksMenu/index.vue +5 -7
- package/src/components/organisms/Asd20SchoolHomepageHeader/index.vue +1 -13
- package/src/components/organisms/Asd20SchoolHomepageVideoHeader/index.vue +3 -7
- package/src/components/templates/Asd20SchoolHomeTemplate/index.vue +2 -8
- package/src/components/templates/Asd20SchoolHomeVideoTemplate/index.vue +48 -43
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.7.4](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.7.3...ui-next-v2.7.4) (2026-05-05)
|
|
4
|
+
|
|
3
5
|
## [2.7.3](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.7.2...ui-next-v2.7.3) (2026-05-05)
|
|
4
6
|
|
|
5
7
|
## [2.7.2](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.7.1...ui-next-v2.7.2) (2026-05-05)
|
package/package.json
CHANGED
|
@@ -9,91 +9,60 @@
|
|
|
9
9
|
@dismiss="$emit('dismiss')"
|
|
10
10
|
>
|
|
11
11
|
<Asd20Viewport scrollable>
|
|
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
|
-
<div
|
|
38
|
-
class="asd20-compose-email-modal__submit"
|
|
39
|
-
aria-live="polite"
|
|
40
|
-
>
|
|
41
|
-
<Recaptcha
|
|
42
|
-
v-if="!sending && !sendSucceeded"
|
|
43
|
-
sitekey="6LfidKoUAAAAAFqr3QEbia3jIkecsZyxBYlMvWrX"
|
|
44
|
-
:load-recaptcha-script="true"
|
|
45
|
-
size="invisible"
|
|
46
|
-
@verify="captchaVerified"
|
|
47
|
-
>
|
|
48
|
-
<asd20-button
|
|
49
|
-
:disabled="!isValid"
|
|
50
|
-
label="Send"
|
|
51
|
-
horizontal
|
|
52
|
-
centered
|
|
53
|
-
bordered
|
|
54
|
-
/>
|
|
55
|
-
</Recaptcha>
|
|
56
|
-
<asd20-spinner
|
|
57
|
-
v-else-if="sending"
|
|
58
|
-
size="sm"
|
|
59
|
-
/>
|
|
60
|
-
<p
|
|
61
|
-
v-else
|
|
62
|
-
class="asd20-compose-email-modal__success"
|
|
63
|
-
role="status"
|
|
64
|
-
>
|
|
65
|
-
Your message was sent.
|
|
66
|
-
</p>
|
|
67
|
-
</div>
|
|
68
|
-
</template>
|
|
12
|
+
<asd20-text-input
|
|
13
|
+
id="senderName"
|
|
14
|
+
v-model="emailMessage.senderName"
|
|
15
|
+
label="Your Full Name"
|
|
16
|
+
aria-required="true"
|
|
17
|
+
@validated="validationErrors.senderName = $event"
|
|
18
|
+
/>
|
|
19
|
+
<asd20-text-input
|
|
20
|
+
id="senderEmail"
|
|
21
|
+
v-model="emailMessage.senderEmail"
|
|
22
|
+
type="email"
|
|
23
|
+
:validator="validateEmailAddress"
|
|
24
|
+
label="Your Email Address"
|
|
25
|
+
aria-required="true"
|
|
26
|
+
@validated="validationErrors.senderEmail = $event"
|
|
27
|
+
/>
|
|
28
|
+
<asd20-text-area-input
|
|
29
|
+
id="messageBody"
|
|
30
|
+
v-model="emailMessage.messageBody"
|
|
31
|
+
label="Message"
|
|
32
|
+
help-text="All fields are required."
|
|
33
|
+
aria-required="true"
|
|
34
|
+
@validated="validationErrors.messageBody = $event"
|
|
35
|
+
/>
|
|
69
36
|
<div
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
role="status"
|
|
37
|
+
class="asd20-compose-email-modal__submit"
|
|
38
|
+
aria-live="polite"
|
|
73
39
|
>
|
|
74
|
-
<
|
|
75
|
-
|
|
40
|
+
<Recaptcha
|
|
41
|
+
v-if="!sending && !sendSucceeded && !sendRejected"
|
|
42
|
+
sitekey="6LfidKoUAAAAAFqr3QEbia3jIkecsZyxBYlMvWrX"
|
|
43
|
+
:load-recaptcha-script="true"
|
|
44
|
+
size="invisible"
|
|
45
|
+
@verify="captchaVerified"
|
|
76
46
|
>
|
|
77
|
-
Please contact the Academy District 20 Help Desk who can evaluate your
|
|
78
|
-
request and route it appropriately.
|
|
79
|
-
</p>
|
|
80
|
-
<div class="asd20-compose-email-modal__rejection-actions">
|
|
81
47
|
<asd20-button
|
|
82
|
-
|
|
83
|
-
|
|
48
|
+
:disabled="!isValid"
|
|
49
|
+
label="Send"
|
|
84
50
|
horizontal
|
|
85
51
|
centered
|
|
86
52
|
bordered
|
|
87
53
|
/>
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
54
|
+
</Recaptcha>
|
|
55
|
+
<asd20-spinner
|
|
56
|
+
v-else-if="sending"
|
|
57
|
+
size="sm"
|
|
58
|
+
/>
|
|
59
|
+
<p
|
|
60
|
+
v-else
|
|
61
|
+
class="asd20-compose-email-modal__status"
|
|
62
|
+
role="status"
|
|
63
|
+
>
|
|
64
|
+
{{ sendStatusMessage }}
|
|
65
|
+
</p>
|
|
97
66
|
</div>
|
|
98
67
|
</Asd20Viewport>
|
|
99
68
|
</asd20-modal>
|
|
@@ -134,7 +103,6 @@ export default {
|
|
|
134
103
|
sending: false,
|
|
135
104
|
sendSucceeded: false,
|
|
136
105
|
sendRejected: false,
|
|
137
|
-
helpDeskUrl: 'https://asd20.org/help-desk',
|
|
138
106
|
emailMessage: {
|
|
139
107
|
senderName: '',
|
|
140
108
|
senderEmail: '',
|
|
@@ -143,7 +111,12 @@ export default {
|
|
|
143
111
|
}),
|
|
144
112
|
computed: {
|
|
145
113
|
modalTitle() {
|
|
146
|
-
return
|
|
114
|
+
return 'Send an Email'
|
|
115
|
+
},
|
|
116
|
+
sendStatusMessage() {
|
|
117
|
+
return this.sendRejected
|
|
118
|
+
? "Your message couldn't be sent via this form."
|
|
119
|
+
: 'Your message was sent.'
|
|
147
120
|
},
|
|
148
121
|
isValid() {
|
|
149
122
|
return (
|
|
@@ -246,7 +219,7 @@ export default {
|
|
|
246
219
|
return null
|
|
247
220
|
}
|
|
248
221
|
},
|
|
249
|
-
|
|
222
|
+
isModerationRejection(error) {
|
|
250
223
|
return (
|
|
251
224
|
this.getSendEmailResponseData(error)?.code === 'moderation_rejected'
|
|
252
225
|
)
|
|
@@ -283,11 +256,11 @@ export default {
|
|
|
283
256
|
} catch (error) {
|
|
284
257
|
this.sendSucceeded = false
|
|
285
258
|
console.error('Email send failed:', error?.message || error)
|
|
286
|
-
if (this.
|
|
287
|
-
this.
|
|
288
|
-
this.getSendEmailResponseData(error)?.helpDeskUrl ||
|
|
289
|
-
'https://asd20.org/help-desk'
|
|
259
|
+
if (this.isModerationRejection(error)) {
|
|
260
|
+
this.sending = false
|
|
290
261
|
this.sendRejected = true
|
|
262
|
+
await this.waitForSuccessMessage()
|
|
263
|
+
this.$emit('dismiss')
|
|
291
264
|
return
|
|
292
265
|
}
|
|
293
266
|
alert(this.getSendEmailFailureMessage(error))
|
|
@@ -314,27 +287,11 @@ export default {
|
|
|
314
287
|
min-height: 3rem;
|
|
315
288
|
}
|
|
316
289
|
|
|
317
|
-
&
|
|
290
|
+
&__status {
|
|
318
291
|
font-weight: 600;
|
|
319
292
|
margin: 0;
|
|
320
293
|
text-align: center;
|
|
321
294
|
}
|
|
322
|
-
|
|
323
|
-
&__rejection {
|
|
324
|
-
display: flex;
|
|
325
|
-
flex-direction: column;
|
|
326
|
-
gap: space(1);
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
&__rejection-message {
|
|
330
|
-
margin: 0;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
&__rejection-actions {
|
|
334
|
-
display: flex;
|
|
335
|
-
flex-wrap: wrap;
|
|
336
|
-
gap: space(0.75);
|
|
337
|
-
}
|
|
338
295
|
}
|
|
339
296
|
|
|
340
297
|
@media (min-width: 1024px) {
|
|
@@ -35,7 +35,8 @@ export default {
|
|
|
35
35
|
background: var(--website-quick-links__background-color);
|
|
36
36
|
min-height: 3vh;
|
|
37
37
|
display: block;
|
|
38
|
-
padding: space(1) space(0);
|
|
38
|
+
padding: space(1) space(0.5);
|
|
39
|
+
gap: 0.25rem;
|
|
39
40
|
|
|
40
41
|
.asd20-button {
|
|
41
42
|
display: flex;
|
|
@@ -43,7 +44,6 @@ export default {
|
|
|
43
44
|
flex: 1 1;
|
|
44
45
|
justify-content: flex-start;
|
|
45
46
|
width: auto;
|
|
46
|
-
margin: space(0.5) space(0.5);
|
|
47
47
|
font-size: 0.875rem !important;
|
|
48
48
|
color: var(--website-quick-links__button-foreground-color) !important;
|
|
49
49
|
& :deep(.asd20-button__label) {
|
|
@@ -71,17 +71,15 @@ export default {
|
|
|
71
71
|
flex-wrap: wrap;
|
|
72
72
|
align-items: flex-start;
|
|
73
73
|
min-height: 3vh;
|
|
74
|
-
padding: space(0.5) space(0);
|
|
75
74
|
|
|
76
75
|
.asd20-button {
|
|
77
76
|
display: flex;
|
|
78
77
|
flex-direction: column;
|
|
79
78
|
text-align: center;
|
|
80
79
|
flex: 1 1;
|
|
81
|
-
|
|
82
|
-
margin: space(0.5) 0;
|
|
80
|
+
padding: space(0.5) space(0.25) !important;
|
|
83
81
|
& :deep(.asd20-button__label) {
|
|
84
|
-
margin-left:
|
|
82
|
+
margin-left: 0;
|
|
85
83
|
}
|
|
86
84
|
}
|
|
87
85
|
}
|
|
@@ -89,7 +87,7 @@ export default {
|
|
|
89
87
|
|
|
90
88
|
@media (min-width: 1024px) {
|
|
91
89
|
.asd20-quicklinks-menu {
|
|
92
|
-
padding:
|
|
90
|
+
padding: 1rem 1rem;
|
|
93
91
|
}
|
|
94
92
|
}
|
|
95
93
|
</style>
|
|
@@ -322,8 +322,6 @@ $max: 4rem;
|
|
|
322
322
|
}
|
|
323
323
|
&__top {
|
|
324
324
|
flex-direction: row;
|
|
325
|
-
/* justify-content: flex-end;*/
|
|
326
|
-
/* padding: space(0.25) space(1);*/
|
|
327
325
|
align-items: center !important;
|
|
328
326
|
}
|
|
329
327
|
&__image {
|
|
@@ -352,10 +350,7 @@ $max: 4rem;
|
|
|
352
350
|
.asd20-school-homepage-header {
|
|
353
351
|
display: grid;
|
|
354
352
|
grid-template-columns: space(3) repeat(5, 1fr space(3)) 1fr space(3);
|
|
355
|
-
grid-template-rows: repeat(6, space(1)) space(3) 1fr space(3) repeat(
|
|
356
|
-
3,
|
|
357
|
-
space(1)
|
|
358
|
-
);
|
|
353
|
+
grid-template-rows: repeat(6, space(1)) space(3) 1fr space(3) repeat(3, space(1));
|
|
359
354
|
margin-bottom: 0;
|
|
360
355
|
&::before {
|
|
361
356
|
content: '';
|
|
@@ -368,8 +363,6 @@ $max: 4rem;
|
|
|
368
363
|
grid-column: 1 / -1;
|
|
369
364
|
grid-row: 7 / -4;
|
|
370
365
|
z-index: 1;
|
|
371
|
-
/* transform: translate3d(0, calc(5% * var(--scroll-progress)), 0);*/
|
|
372
|
-
/* border-radius: var(--website-shape__radius-l);*/
|
|
373
366
|
border-top-left-radius: 0;
|
|
374
367
|
border-top-right-radius: 0;
|
|
375
368
|
border-bottom-left-radius: 3rem;
|
|
@@ -406,11 +399,6 @@ $max: 4rem;
|
|
|
406
399
|
& :deep(.asd20-picker) {
|
|
407
400
|
display: flex;
|
|
408
401
|
}
|
|
409
|
-
/* &::v-deep .notification-group--floating {*/
|
|
410
|
-
/* position: absolute;*/
|
|
411
|
-
/* top: 9rem;*/
|
|
412
|
-
/* right: 5.5rem;*/
|
|
413
|
-
/* }*/
|
|
414
402
|
}
|
|
415
403
|
|
|
416
404
|
& :deep(.asd20-notification-group--status) {
|
|
@@ -534,7 +534,7 @@ $max: 4rem;
|
|
|
534
534
|
|
|
535
535
|
&__top {
|
|
536
536
|
margin: 0;
|
|
537
|
-
padding: space(
|
|
537
|
+
padding: space(0.5) space(3) space(1) space(3);
|
|
538
538
|
grid-column: 1/-1;
|
|
539
539
|
grid-row: 1/7;
|
|
540
540
|
background: transparent;
|
|
@@ -618,10 +618,7 @@ $max: 4rem;
|
|
|
618
618
|
.asd20-school-homepage-video-header {
|
|
619
619
|
display: grid;
|
|
620
620
|
grid-template-columns: space(3) repeat(5, 1fr space(3)) 1fr space(3);
|
|
621
|
-
grid-template-rows: repeat(6, space(1)) space(3) 1fr space(3) repeat(
|
|
622
|
-
3,
|
|
623
|
-
space(1)
|
|
624
|
-
);
|
|
621
|
+
grid-template-rows: repeat(6, space(1)) space(3) 1fr space(3) repeat(3, space(1));
|
|
625
622
|
margin-bottom: 0;
|
|
626
623
|
.background-video {
|
|
627
624
|
display: block;
|
|
@@ -654,7 +651,6 @@ $max: 4rem;
|
|
|
654
651
|
grid-column: 1 / -1;
|
|
655
652
|
grid-row: 7 / -4;
|
|
656
653
|
z-index: 1;
|
|
657
|
-
/* transform: translate3d(0, calc(5% * var(--scroll-progress)), 0);*/
|
|
658
654
|
border-radius: var(--website-shape__radius-l);
|
|
659
655
|
border-top-left-radius: 0;
|
|
660
656
|
border-top-right-radius: 0;
|
|
@@ -682,7 +678,7 @@ $max: 4rem;
|
|
|
682
678
|
|
|
683
679
|
&__top {
|
|
684
680
|
margin: 0;
|
|
685
|
-
padding: space(
|
|
681
|
+
padding: space(0.5) space(3) space(1) space(3);
|
|
686
682
|
grid-column: 1/-1;
|
|
687
683
|
grid-row: 1/7;
|
|
688
684
|
background: transparent;
|
|
@@ -476,16 +476,10 @@ export default {
|
|
|
476
476
|
}
|
|
477
477
|
.pickerContainer {
|
|
478
478
|
display: flex;
|
|
479
|
-
/* .optionalLogo {*/
|
|
480
|
-
/* display: none;*/
|
|
481
|
-
/* }*/
|
|
482
479
|
}
|
|
483
480
|
.asd20-quicklinks-menu {
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
&::after {
|
|
487
|
-
bottom: space(-4);
|
|
488
|
-
}
|
|
481
|
+
margin-top: -1rem;
|
|
482
|
+
padding: 0 1rem 2rem 1rem;
|
|
489
483
|
}
|
|
490
484
|
.button-group {
|
|
491
485
|
display: flex;
|
|
@@ -38,40 +38,42 @@
|
|
|
38
38
|
:organization="organization"
|
|
39
39
|
logo-size="lg"
|
|
40
40
|
/>
|
|
41
|
-
<
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
@click="onLogoClick($event, websiteLogoProps2.logoLink)"
|
|
62
|
-
>
|
|
63
|
-
<img
|
|
64
|
-
class="optionalLogo"
|
|
65
|
-
:src="
|
|
66
|
-
websiteLogoProps2.logoImageUrl
|
|
67
|
-
? websiteLogoProps2.logoImageUrl
|
|
68
|
-
: ''
|
|
69
|
-
"
|
|
70
|
-
:alt="
|
|
71
|
-
websiteLogoProps2.logoAlt ? websiteLogoProps2.logoAlt : ''
|
|
41
|
+
<div class="website-logos">
|
|
42
|
+
<a
|
|
43
|
+
v-if="websiteLogoProps"
|
|
44
|
+
:href="websiteLogoProps.logoLink ? websiteLogoProps.logoLink : ''"
|
|
45
|
+
@click="onLogoClick($event, websiteLogoProps.logoLink)"
|
|
46
|
+
>
|
|
47
|
+
<img
|
|
48
|
+
class="optionalLogo"
|
|
49
|
+
:src="
|
|
50
|
+
websiteLogoProps.logoImageUrl
|
|
51
|
+
? websiteLogoProps.logoImageUrl
|
|
52
|
+
: ''
|
|
53
|
+
"
|
|
54
|
+
:alt="websiteLogoProps.logoAlt ? websiteLogoProps.logoAlt : ''"
|
|
55
|
+
/>
|
|
56
|
+
</a>
|
|
57
|
+
<a
|
|
58
|
+
v-if="websiteLogoProps2"
|
|
59
|
+
:href="
|
|
60
|
+
websiteLogoProps2.logoLink ? websiteLogoProps2.logoLink : ''
|
|
72
61
|
"
|
|
73
|
-
|
|
74
|
-
|
|
62
|
+
@click="onLogoClick($event, websiteLogoProps2.logoLink)"
|
|
63
|
+
>
|
|
64
|
+
<img
|
|
65
|
+
class="optionalLogo"
|
|
66
|
+
:src="
|
|
67
|
+
websiteLogoProps2.logoImageUrl
|
|
68
|
+
? websiteLogoProps2.logoImageUrl
|
|
69
|
+
: ''
|
|
70
|
+
"
|
|
71
|
+
:alt="
|
|
72
|
+
websiteLogoProps2.logoAlt ? websiteLogoProps2.logoAlt : ''
|
|
73
|
+
"
|
|
74
|
+
/>
|
|
75
|
+
</a>
|
|
76
|
+
</div>
|
|
75
77
|
</div>
|
|
76
78
|
<div class="notification-translation-container">
|
|
77
79
|
<div class="language-wrapper">
|
|
@@ -422,9 +424,17 @@ export default {
|
|
|
422
424
|
margin-top: 0;
|
|
423
425
|
.pickerContainer {
|
|
424
426
|
display: flex;
|
|
425
|
-
.
|
|
426
|
-
|
|
427
|
-
|
|
427
|
+
.asd20-organization-picker {
|
|
428
|
+
display: flex;
|
|
429
|
+
}
|
|
430
|
+
.website-logos {
|
|
431
|
+
display: flex;
|
|
432
|
+
flex-direction: row;
|
|
433
|
+
gap: 1rem;
|
|
434
|
+
.optionalLogo {
|
|
435
|
+
max-width: 12rem;
|
|
436
|
+
max-height: 6rem;
|
|
437
|
+
}
|
|
428
438
|
}
|
|
429
439
|
}
|
|
430
440
|
.notification-translation-container {
|
|
@@ -434,11 +444,8 @@ export default {
|
|
|
434
444
|
}
|
|
435
445
|
|
|
436
446
|
.asd20-quicklinks-menu {
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
&::after {
|
|
440
|
-
bottom: space(-4);
|
|
441
|
-
}
|
|
447
|
+
margin-top: -1rem;
|
|
448
|
+
padding: 0 1rem 2rem 1rem;
|
|
442
449
|
}
|
|
443
450
|
.button-group {
|
|
444
451
|
display: flex;
|
|
@@ -448,8 +455,6 @@ export default {
|
|
|
448
455
|
}
|
|
449
456
|
.asd20-notification-group--status {
|
|
450
457
|
order: 0;
|
|
451
|
-
/* right: space(5.5) !important;*/
|
|
452
|
-
/* top: space(6) !important;*/
|
|
453
458
|
}
|
|
454
459
|
}
|
|
455
460
|
}
|