@asd20/ui 3.2.1035 → 3.2.1037
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/package.json +1 -1
- package/src/components/molecules/Asd20BlockSchedule/index.stories.js +19 -0
- package/src/components/molecules/Asd20BlockSchedule/index.vue +58 -0
- package/src/components/organisms/Asd20NotificationGroup/index.vue +5 -1
- package/src/components/organisms/Asd20SchoolHomepageHeader/index.vue +36 -40
- package/src/components/organisms/Asd20SchoolHomepageVideoHeader/index.vue +2 -1
- package/src/components/organisms/Asd20SwiperFeed/index.vue +2 -2
- package/src/components/templates/Asd20DistrictVideoTemplate/index.vue +1 -1
- package/src/components/templates/Asd20SchoolHomeTemplate/index.vue +112 -39
- package/src/components/templates/Asd20SchoolHomeVideoTemplate/index.vue +133 -48
- package/src/data/events/district-events.json +27 -0
package/package.json
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { storiesOf } from '@storybook/vue'
|
|
2
|
+
import Asd20BlockSchedule from '.'
|
|
3
|
+
|
|
4
|
+
const info = {
|
|
5
|
+
summary: 'Asd20BlockSchedule',
|
|
6
|
+
}
|
|
7
|
+
const wrapper = {
|
|
8
|
+
components: { Asd20BlockSchedule },
|
|
9
|
+
data: () => ({}),
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
storiesOf('Molecules - Asd20BlockSchedule', module).add(
|
|
13
|
+
'Default',
|
|
14
|
+
() => ({
|
|
15
|
+
...wrapper,
|
|
16
|
+
template: `<Asd20BlockSchedule />`,
|
|
17
|
+
}),
|
|
18
|
+
{ info }
|
|
19
|
+
)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div v-if="blockDay" class="asd20-block-schedule">
|
|
3
|
+
<a href="/schedules">
|
|
4
|
+
<asd20-icon size="md" name="calendar" title="Block Day" />
|
|
5
|
+
<span>{{ blockDay }}</span>
|
|
6
|
+
</a>
|
|
7
|
+
</div>
|
|
8
|
+
</template>
|
|
9
|
+
|
|
10
|
+
<script>
|
|
11
|
+
import Asd20Icon from '../../atoms/Asd20Icon'
|
|
12
|
+
export default {
|
|
13
|
+
name: 'Asd20BlockSchedule',
|
|
14
|
+
components: {
|
|
15
|
+
Asd20Icon,
|
|
16
|
+
},
|
|
17
|
+
props: {
|
|
18
|
+
blockEvent: { type: Object, default: () => ({}) },
|
|
19
|
+
},
|
|
20
|
+
data: () => ({}),
|
|
21
|
+
computed: {
|
|
22
|
+
blockDay() {
|
|
23
|
+
const e = this.blockEvent
|
|
24
|
+
if (!e || !Array.isArray(e.calendarKeywords)) return ''
|
|
25
|
+
return e.calendarKeywords.includes('Block Schedule')
|
|
26
|
+
? e.summary || ''
|
|
27
|
+
: ''
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
}
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<style lang="scss" scoped>
|
|
34
|
+
@import '../../../design/_variables.scss';
|
|
35
|
+
.asd20-block-schedule {
|
|
36
|
+
display: flex;
|
|
37
|
+
flex-direction: row;
|
|
38
|
+
align-items: center;
|
|
39
|
+
margin-bottom: 0;
|
|
40
|
+
height: 2.75rem;
|
|
41
|
+
background: #fff;
|
|
42
|
+
border-radius: 2rem;
|
|
43
|
+
border: 1px solid var(--website-page__alternate-background-color);
|
|
44
|
+
padding: 0 0.75rem 0 0.5rem;
|
|
45
|
+
a {
|
|
46
|
+
display: flex;
|
|
47
|
+
flex-direction: row;
|
|
48
|
+
align-items: center;
|
|
49
|
+
color: var(--color__primary);
|
|
50
|
+
text-decoration: none;
|
|
51
|
+
font-family: sans-serif;
|
|
52
|
+
flex-grow: 1;
|
|
53
|
+
.asd20-icon {
|
|
54
|
+
margin-right: space(0.5);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
</style>
|
|
@@ -263,6 +263,8 @@ export default {
|
|
|
263
263
|
align-items: center;
|
|
264
264
|
justify-content: flex-end;
|
|
265
265
|
height: 2.75rem;
|
|
266
|
+
border-radius: 2rem;
|
|
267
|
+
border: 1px solid var(--website-page__alternate-background-color);
|
|
266
268
|
}
|
|
267
269
|
|
|
268
270
|
&--floating .bell {
|
|
@@ -316,6 +318,7 @@ export default {
|
|
|
316
318
|
.pagination {
|
|
317
319
|
display: flex;
|
|
318
320
|
justify-content: flex-end;
|
|
321
|
+
width: max-content;
|
|
319
322
|
align-items: center;
|
|
320
323
|
font-size: 0.85rem;
|
|
321
324
|
z-index: 15;
|
|
@@ -356,8 +359,9 @@ export default {
|
|
|
356
359
|
|
|
357
360
|
&--floating .pagination {
|
|
358
361
|
margin-right: 0.5rem;
|
|
359
|
-
background: rgba(255, 255, 255,
|
|
362
|
+
background: rgba(255, 255, 255, 1);
|
|
360
363
|
align-self: stretch;
|
|
364
|
+
width: max-content;
|
|
361
365
|
margin-right: -2rem;
|
|
362
366
|
z-index: 8;
|
|
363
367
|
padding-right: 2rem;
|
|
@@ -117,9 +117,9 @@ export default {
|
|
|
117
117
|
display: block;
|
|
118
118
|
position: absolute;
|
|
119
119
|
top: 0;
|
|
120
|
-
bottom: space(
|
|
120
|
+
bottom: space(2);
|
|
121
121
|
left: 0;
|
|
122
|
-
right:
|
|
122
|
+
right: 0;
|
|
123
123
|
z-index: -1;
|
|
124
124
|
background: var(--website-header__background-style);
|
|
125
125
|
background-color: var(--website-header__background-color);
|
|
@@ -147,26 +147,17 @@ export default {
|
|
|
147
147
|
--fill-two: rgba(255, 255, 255, 0.625);
|
|
148
148
|
width: 100%;
|
|
149
149
|
position: absolute;
|
|
150
|
-
right: 0;
|
|
151
150
|
z-index: 101;
|
|
152
|
-
// background: white;
|
|
153
151
|
display: flex;
|
|
154
|
-
justify-content:
|
|
152
|
+
// justify-content: space-around;
|
|
155
153
|
flex-direction: row;
|
|
156
154
|
align-items: center;
|
|
157
|
-
padding: space(0.25) space(0.25);
|
|
158
155
|
margin-top: space(0.5);
|
|
159
|
-
// width: 95vw;
|
|
160
156
|
&::v-deep .asd20-picker {
|
|
161
157
|
display: none;
|
|
162
158
|
}
|
|
163
159
|
|
|
164
160
|
&::v-deep .notification-group--status {
|
|
165
|
-
// margin-left: 0.5rem;
|
|
166
|
-
// .asd20-notification {
|
|
167
|
-
// margin: 0;
|
|
168
|
-
// padding: 0 !important;
|
|
169
|
-
// }
|
|
170
161
|
.notifications {
|
|
171
162
|
border-radius: space(0.5);
|
|
172
163
|
}
|
|
@@ -175,16 +166,14 @@ export default {
|
|
|
175
166
|
margin-left: 1rem;
|
|
176
167
|
}
|
|
177
168
|
&::v-deep .notification-group--floating {
|
|
178
|
-
|
|
169
|
+
width: max-content;
|
|
170
|
+
float: right;
|
|
179
171
|
.bell {
|
|
180
172
|
z-index: 1000;
|
|
181
173
|
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.125) !important;
|
|
182
174
|
svg {
|
|
183
175
|
fill: var(--color__accent) !important;
|
|
184
176
|
}
|
|
185
|
-
// span {
|
|
186
|
-
// background: var(--color__on-primary) !important;
|
|
187
|
-
// }
|
|
188
177
|
}
|
|
189
178
|
}
|
|
190
179
|
}
|
|
@@ -203,7 +192,7 @@ export default {
|
|
|
203
192
|
}
|
|
204
193
|
|
|
205
194
|
&__content {
|
|
206
|
-
margin-top: space(2);
|
|
195
|
+
margin-top: space(2.5);
|
|
207
196
|
background: var(--website-header__background-color);
|
|
208
197
|
}
|
|
209
198
|
|
|
@@ -219,12 +208,14 @@ export default {
|
|
|
219
208
|
}
|
|
220
209
|
|
|
221
210
|
&__call-to-action {
|
|
222
|
-
margin: space(1)
|
|
211
|
+
margin: space(1);
|
|
223
212
|
z-index: 1;
|
|
224
213
|
display: flex;
|
|
214
|
+
flex-direction: column;
|
|
225
215
|
.asd20-button {
|
|
226
216
|
flex-grow: 1;
|
|
227
|
-
|
|
217
|
+
width: calc(100% - space(3));
|
|
218
|
+
margin-bottom: space(0.5);
|
|
228
219
|
font-size: 1rem !important;
|
|
229
220
|
background-color: var(
|
|
230
221
|
--website-header__button-background-color,
|
|
@@ -269,7 +260,7 @@ export default {
|
|
|
269
260
|
}
|
|
270
261
|
|
|
271
262
|
&:not(:last-child) {
|
|
272
|
-
margin-
|
|
263
|
+
margin-bottom: space(0.5);
|
|
273
264
|
}
|
|
274
265
|
}
|
|
275
266
|
}
|
|
@@ -278,8 +269,6 @@ export default {
|
|
|
278
269
|
img {
|
|
279
270
|
display: block;
|
|
280
271
|
width: 100%;
|
|
281
|
-
// height: 100%;
|
|
282
|
-
// object-fit: cover;
|
|
283
272
|
object-position: center;
|
|
284
273
|
}
|
|
285
274
|
.image-credits {
|
|
@@ -294,15 +283,7 @@ export default {
|
|
|
294
283
|
font-size: 0.8rem !important;
|
|
295
284
|
}
|
|
296
285
|
}
|
|
297
|
-
// Hide images on mobile
|
|
298
|
-
// &__image {
|
|
299
|
-
// display: none;
|
|
300
|
-
// }
|
|
301
|
-
|
|
302
|
-
// Add a bit more space at the bottom
|
|
303
|
-
// if cta is present
|
|
304
286
|
&--has-cta {
|
|
305
|
-
margin-bottom: space(3);
|
|
306
287
|
&::after {
|
|
307
288
|
bottom: space(-1.5);
|
|
308
289
|
}
|
|
@@ -313,9 +294,14 @@ $min: 3rem;
|
|
|
313
294
|
$max: 4rem;
|
|
314
295
|
@media (min-width: 667px) {
|
|
315
296
|
.asd20-school-homepage-header {
|
|
297
|
+
&::before {
|
|
298
|
+
right: space(3);
|
|
299
|
+
bottom: space(2);
|
|
300
|
+
border-top-right-radius: var(--website-shape__radius-l);
|
|
301
|
+
}
|
|
316
302
|
&__top {
|
|
317
303
|
flex-direction: row;
|
|
318
|
-
justify-content: flex-end;
|
|
304
|
+
// justify-content: flex-end;
|
|
319
305
|
// padding: space(0.25) space(1);
|
|
320
306
|
align-items: center !important;
|
|
321
307
|
}
|
|
@@ -325,6 +311,19 @@ $max: 4rem;
|
|
|
325
311
|
bottom: 0;
|
|
326
312
|
}
|
|
327
313
|
}
|
|
314
|
+
&__call-to-action {
|
|
315
|
+
flex-direction: row;
|
|
316
|
+
margin: space(1);
|
|
317
|
+
.asd20-button {
|
|
318
|
+
flex-grow: 0;
|
|
319
|
+
width: max-content;
|
|
320
|
+
min-width: 4rem;
|
|
321
|
+
margin-bottom: 0 !important;
|
|
322
|
+
&:not(:last-child) {
|
|
323
|
+
margin-right: space(0.5);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
328
327
|
}
|
|
329
328
|
}
|
|
330
329
|
|
|
@@ -370,8 +369,6 @@ $max: 4rem;
|
|
|
370
369
|
background: var(--website-quick-links__background-color);
|
|
371
370
|
}
|
|
372
371
|
|
|
373
|
-
// Provide space between logo and breadcrumb
|
|
374
|
-
// TODO: Revisit for school logo
|
|
375
372
|
&::v-deep .asd20-logo {
|
|
376
373
|
& + .asd20-breadcrumb {
|
|
377
374
|
margin-top: space(2);
|
|
@@ -390,6 +387,11 @@ $max: 4rem;
|
|
|
390
387
|
&::v-deep .asd20-picker {
|
|
391
388
|
display: flex;
|
|
392
389
|
}
|
|
390
|
+
// &::v-deep .notification-group--floating {
|
|
391
|
+
// position: absolute;
|
|
392
|
+
// top: 9rem;
|
|
393
|
+
// right: 5.5rem;
|
|
394
|
+
// }
|
|
393
395
|
}
|
|
394
396
|
|
|
395
397
|
&::v-deep .asd20-notification-group--status {
|
|
@@ -398,12 +400,6 @@ $max: 4rem;
|
|
|
398
400
|
grid-row: 3 / 5;
|
|
399
401
|
padding-right: 0;
|
|
400
402
|
}
|
|
401
|
-
&::v-deep .asd20-notification-group--floating {
|
|
402
|
-
// position: absolute;
|
|
403
|
-
// right: space(3);
|
|
404
|
-
// top: space(3.5);
|
|
405
|
-
// margin-right: 0;
|
|
406
|
-
}
|
|
407
403
|
|
|
408
404
|
&__content {
|
|
409
405
|
margin-top: 0;
|
|
@@ -430,7 +426,7 @@ $max: 4rem;
|
|
|
430
426
|
height: min-content;
|
|
431
427
|
align-self: end;
|
|
432
428
|
.asd20-button {
|
|
433
|
-
min-height: space(
|
|
429
|
+
min-height: space(1);
|
|
434
430
|
font-size: 1.25rem !important;
|
|
435
431
|
}
|
|
436
432
|
}
|
|
@@ -195,7 +195,7 @@ export default {
|
|
|
195
195
|
.asd20-swiper {
|
|
196
196
|
flex-shrink: 0;
|
|
197
197
|
margin: 0 0;
|
|
198
|
-
width: 100%;
|
|
198
|
+
// width: 100%;
|
|
199
199
|
z-index: 2;
|
|
200
200
|
}
|
|
201
201
|
.feed-buttons {
|
|
@@ -240,7 +240,7 @@ export default {
|
|
|
240
240
|
|
|
241
241
|
.asd20-swiper {
|
|
242
242
|
// margin-left: space(1);
|
|
243
|
-
width: calc(100% - #{space(
|
|
243
|
+
width: calc(100% - #{space(4)});
|
|
244
244
|
}
|
|
245
245
|
.asd20-button {
|
|
246
246
|
font-size: 1rem !important;
|
|
@@ -83,34 +83,46 @@
|
|
|
83
83
|
|
|
84
84
|
<template slot="top">
|
|
85
85
|
<div class="notification-translation-container">
|
|
86
|
-
<
|
|
87
|
-
<
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
86
|
+
<div class="language-wrapper">
|
|
87
|
+
<!-- <client-only>
|
|
88
|
+
<a
|
|
89
|
+
v-if="activeNotificationsByType.status.length > 0"
|
|
90
|
+
class="weather-link"
|
|
91
|
+
href="https://www.asd20.org/alerts-and-communication/weather-related-communication/"
|
|
92
|
+
>
|
|
93
|
+
<asd20-notification-group
|
|
94
|
+
:notifications="activeNotificationsByType.status"
|
|
95
|
+
group-type="status"
|
|
96
|
+
@dismiss="$emit('dismiss-notification', $event)"
|
|
97
|
+
@toggle-all="$emit('toggle-all')"
|
|
98
|
+
/>
|
|
99
|
+
</a>
|
|
100
|
+
</client-only> -->
|
|
101
|
+
<client-only>
|
|
102
|
+
<Asd20BlockSchedule
|
|
103
|
+
v-if="blockEvent"
|
|
104
|
+
:block-event="blockEvent"
|
|
105
|
+
class="block-schedule"
|
|
97
106
|
/>
|
|
98
|
-
</
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
</client-only>
|
|
107
|
+
</client-only>
|
|
108
|
+
<client-only>
|
|
109
|
+
<Asd20LanguageTranslation
|
|
110
|
+
v-if="languageCode"
|
|
111
|
+
reversed
|
|
112
|
+
:language-code="languageCode"
|
|
113
|
+
v-on="$listeners"
|
|
114
|
+
/>
|
|
115
|
+
</client-only>
|
|
116
|
+
</div>
|
|
109
117
|
|
|
110
118
|
<!-- Floating Notifications -->
|
|
111
119
|
<client-only>
|
|
112
120
|
<asd20-notification-group
|
|
113
|
-
class="
|
|
121
|
+
:class="
|
|
122
|
+
!blockEvent
|
|
123
|
+
? 'asd20-notification-group--floating no-block-widget'
|
|
124
|
+
: 'asd20-notification-group--floating'
|
|
125
|
+
"
|
|
114
126
|
:notifications="activeNotificationsByType.floating"
|
|
115
127
|
:total-dismissed-notifications="totalDismissedNotifications"
|
|
116
128
|
group-type="floating"
|
|
@@ -176,6 +188,7 @@ import Asd20NotificationGroup from '../../../components/organisms/Asd20Notificat
|
|
|
176
188
|
import Asd20FeedsSection from '../../../components/organisms/Asd20FeedsSection'
|
|
177
189
|
import Asd20OrganizationPicker from '../../../components/organisms/Asd20OrganizationPicker'
|
|
178
190
|
import Asd20LanguageTranslation from '../../molecules/Asd20LanguageTranslation'
|
|
191
|
+
import Asd20BlockSchedule from '../../molecules/Asd20BlockSchedule'
|
|
179
192
|
|
|
180
193
|
// Helpers
|
|
181
194
|
import _get from 'lodash-es/get'
|
|
@@ -198,6 +211,7 @@ export default {
|
|
|
198
211
|
Asd20FeedsSection,
|
|
199
212
|
Asd20OrganizationPicker,
|
|
200
213
|
Asd20LanguageTranslation,
|
|
214
|
+
Asd20BlockSchedule,
|
|
201
215
|
},
|
|
202
216
|
props: {
|
|
203
217
|
languageCode: { type: String, default: 'en' },
|
|
@@ -241,10 +255,30 @@ export default {
|
|
|
241
255
|
: '',
|
|
242
256
|
}
|
|
243
257
|
},
|
|
258
|
+
blockEvent() {
|
|
259
|
+
if (!this.events || this.events.length === 0) return null
|
|
260
|
+
return (
|
|
261
|
+
this.events.find(
|
|
262
|
+
e =>
|
|
263
|
+
Array.isArray(e.calendarKeywords) &&
|
|
264
|
+
e.calendarKeywords.includes('Block Schedule')
|
|
265
|
+
) || null
|
|
266
|
+
)
|
|
267
|
+
},
|
|
244
268
|
},
|
|
245
269
|
mounted() {
|
|
246
270
|
this.showLogo = window.innerWidth >= 1350
|
|
247
271
|
window.addEventListener('resize', this.handleResize)
|
|
272
|
+
// If nothing is loaded yet, ask parent to load events now.
|
|
273
|
+
if (!this.events || this.events.length === 0) {
|
|
274
|
+
this.$emit('events-in-view')
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
watch: {
|
|
278
|
+
// If the organization changes (picker, route change, etc.), refetch.
|
|
279
|
+
'organization.id': function () {
|
|
280
|
+
this.$emit('events-in-view')
|
|
281
|
+
},
|
|
248
282
|
},
|
|
249
283
|
methods: {
|
|
250
284
|
handleResize() {
|
|
@@ -288,24 +322,39 @@ export default {
|
|
|
288
322
|
align-items: center;
|
|
289
323
|
flex-wrap: wrap;
|
|
290
324
|
justify-content: flex-end;
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
325
|
+
width: 100%;
|
|
326
|
+
margin: 0 0.5rem;
|
|
327
|
+
.language-wrapper {
|
|
328
|
+
display: flex;
|
|
329
|
+
flex-direction: row;
|
|
330
|
+
align-items: center;
|
|
331
|
+
justify-content: space-between;
|
|
332
|
+
width: 100%;
|
|
333
|
+
margin-bottom: space(0.25);
|
|
334
|
+
|
|
335
|
+
.asd20-language-translation {
|
|
336
|
+
background: rgba(255, 255, 255, 1);
|
|
337
|
+
border-radius: 3rem;
|
|
338
|
+
border: 1px solid var(--website-page__alternate-background-color);
|
|
339
|
+
&::v-deep .asd20-select-input {
|
|
340
|
+
// padding: 0.25rem 0.25rem;
|
|
341
|
+
color: currentColor;
|
|
342
|
+
font-family: Ariel, Arial, Helvetica, sans-serif;
|
|
343
|
+
&__overlay-label {
|
|
344
|
+
// display: none;
|
|
345
|
+
}
|
|
346
|
+
&__field-wrapper {
|
|
347
|
+
padding: 0 0.5rem;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
306
350
|
}
|
|
307
351
|
}
|
|
352
|
+
.no-block-widget {
|
|
353
|
+
position: absolute;
|
|
354
|
+
top: 0;
|
|
355
|
+
}
|
|
308
356
|
}
|
|
357
|
+
|
|
309
358
|
.asd20-language-loader {
|
|
310
359
|
order: 1;
|
|
311
360
|
}
|
|
@@ -338,7 +387,17 @@ export default {
|
|
|
338
387
|
@media (min-width: 667px) {
|
|
339
388
|
.asd20-school-home-template {
|
|
340
389
|
.notification-translation-container {
|
|
341
|
-
margin
|
|
390
|
+
margin: 0 1.5rem;
|
|
391
|
+
justify-content: flex-end;
|
|
392
|
+
flex-wrap: nowrap;
|
|
393
|
+
.language-wrapper {
|
|
394
|
+
justify-content: flex-start;
|
|
395
|
+
margin-bottom: 0;
|
|
396
|
+
}
|
|
397
|
+
.no-block-widget {
|
|
398
|
+
position: relative;
|
|
399
|
+
top: unset;
|
|
400
|
+
}
|
|
342
401
|
}
|
|
343
402
|
}
|
|
344
403
|
}
|
|
@@ -349,7 +408,21 @@ export default {
|
|
|
349
408
|
margin-left: space(3);
|
|
350
409
|
margin-top: 0;
|
|
351
410
|
.notification-translation-container {
|
|
411
|
+
display: block;
|
|
412
|
+
width: 100%;
|
|
413
|
+
justify-content: flex-start;
|
|
414
|
+
// margin-left: space(1);
|
|
415
|
+
max-width: 13rem;
|
|
352
416
|
margin-right: 0;
|
|
417
|
+
justify-content: flex-end;
|
|
418
|
+
.language-wrapper {
|
|
419
|
+
flex-wrap: wrap;
|
|
420
|
+
}
|
|
421
|
+
.block-schedule,
|
|
422
|
+
.asd20-language-translation {
|
|
423
|
+
flex-grow: 1;
|
|
424
|
+
margin-bottom: space(0.25);
|
|
425
|
+
}
|
|
353
426
|
}
|
|
354
427
|
.asd20-notification--status {
|
|
355
428
|
.asd20-notification__content {
|
|
@@ -78,37 +78,51 @@
|
|
|
78
78
|
</client-only>
|
|
79
79
|
</template>
|
|
80
80
|
|
|
81
|
-
<template>
|
|
81
|
+
<template slot="top">
|
|
82
82
|
<div class="notification-translation-container">
|
|
83
|
-
<
|
|
84
|
-
<
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
83
|
+
<div class="language-wrapper">
|
|
84
|
+
<!-- <client-only>
|
|
85
|
+
<a
|
|
86
|
+
v-if="activeNotificationsByType.status.length > 0"
|
|
87
|
+
class="weather-link"
|
|
88
|
+
href="https://www.asd20.org/alerts-and-communication/weather-related-communication/"
|
|
89
|
+
>
|
|
90
|
+
<asd20-notification-group
|
|
91
|
+
class="asd20-notification-group--status"
|
|
92
|
+
:notifications="activeNotificationsByType.status"
|
|
93
|
+
group-type="status"
|
|
94
|
+
@dismiss="$emit('dismiss-notification', $event)"
|
|
95
|
+
@toggle-all="$emit('toggle-all')"
|
|
96
|
+
/>
|
|
97
|
+
</a>
|
|
98
|
+
</client-only> -->
|
|
99
|
+
|
|
100
|
+
<client-only>
|
|
101
|
+
<Asd20BlockSchedule
|
|
102
|
+
v-if="blockEvent"
|
|
103
|
+
:block-event="blockEvent"
|
|
104
|
+
class="block-schedule"
|
|
95
105
|
/>
|
|
96
|
-
</
|
|
97
|
-
</client-only>
|
|
106
|
+
</client-only>
|
|
98
107
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
108
|
+
<client-only>
|
|
109
|
+
<Asd20LanguageTranslation
|
|
110
|
+
v-if="languageCode"
|
|
111
|
+
reversed
|
|
112
|
+
:language-code="languageCode"
|
|
113
|
+
v-on="$listeners"
|
|
114
|
+
/>
|
|
115
|
+
</client-only>
|
|
116
|
+
</div>
|
|
107
117
|
|
|
108
118
|
<!-- Floating Notifications -->
|
|
109
119
|
<client-only>
|
|
110
120
|
<asd20-notification-group
|
|
111
|
-
class="
|
|
121
|
+
:class="
|
|
122
|
+
!blockEvent
|
|
123
|
+
? 'asd20-notification-group--floating no-block-widget'
|
|
124
|
+
: 'asd20-notification-group--floating'
|
|
125
|
+
"
|
|
112
126
|
:notifications="activeNotificationsByType.floating"
|
|
113
127
|
:total-dismissed-notifications="totalDismissedNotifications"
|
|
114
128
|
group-type="floating"
|
|
@@ -174,6 +188,7 @@ import Asd20NotificationGroup from '../../../components/organisms/Asd20Notificat
|
|
|
174
188
|
import Asd20FeedsSection from '../../../components/organisms/Asd20FeedsSection'
|
|
175
189
|
import Asd20OrganizationPicker from '../../../components/organisms/Asd20OrganizationPicker'
|
|
176
190
|
import Asd20LanguageTranslation from '../../molecules/Asd20LanguageTranslation'
|
|
191
|
+
import Asd20BlockSchedule from '../../molecules/Asd20BlockSchedule'
|
|
177
192
|
|
|
178
193
|
// Helpers
|
|
179
194
|
import _get from 'lodash-es/get'
|
|
@@ -196,10 +211,35 @@ export default {
|
|
|
196
211
|
Asd20FeedsSection,
|
|
197
212
|
Asd20OrganizationPicker,
|
|
198
213
|
Asd20LanguageTranslation,
|
|
214
|
+
Asd20BlockSchedule,
|
|
199
215
|
},
|
|
200
216
|
props: {
|
|
201
217
|
languageCode: { type: String, default: 'en' },
|
|
202
218
|
},
|
|
219
|
+
mounted() {
|
|
220
|
+
// If nothing is loaded yet, ask parent to load events now.
|
|
221
|
+
if (!this.events || this.events.length === 0) {
|
|
222
|
+
this.$emit('events-in-view')
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
watch: {
|
|
226
|
+
// If the organization changes (picker, route change, etc.), refetch.
|
|
227
|
+
'organization.id': function () {
|
|
228
|
+
this.$emit('events-in-view')
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
computed: {
|
|
232
|
+
blockEvent() {
|
|
233
|
+
if (!this.events || this.events.length === 0) return null
|
|
234
|
+
return (
|
|
235
|
+
this.events.find(
|
|
236
|
+
e =>
|
|
237
|
+
Array.isArray(e.calendarKeywords) &&
|
|
238
|
+
e.calendarKeywords.includes('Block Schedule')
|
|
239
|
+
) || null
|
|
240
|
+
)
|
|
241
|
+
},
|
|
242
|
+
},
|
|
203
243
|
}
|
|
204
244
|
</script>
|
|
205
245
|
|
|
@@ -225,34 +265,50 @@ export default {
|
|
|
225
265
|
flex-direction: row;
|
|
226
266
|
align-items: center;
|
|
227
267
|
flex-wrap: wrap;
|
|
268
|
+
margin: space(0.25);
|
|
228
269
|
justify-content: flex-end;
|
|
229
|
-
|
|
270
|
+
width: calc(100% - 1rem);
|
|
230
271
|
position: absolute;
|
|
231
|
-
top: space(0.
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
272
|
+
top: space(0.25);
|
|
273
|
+
.language-wrapper {
|
|
274
|
+
display: flex;
|
|
275
|
+
flex-direction: row;
|
|
276
|
+
align-items: center;
|
|
277
|
+
justify-content: space-between;
|
|
278
|
+
flex-wrap: wrap;
|
|
279
|
+
width: 100%;
|
|
280
|
+
margin-bottom: space(0.25);
|
|
281
|
+
|
|
282
|
+
.weather-link {
|
|
283
|
+
text-decoration: none;
|
|
284
|
+
border: 1px solid var(--website-page__alternate-background-color);
|
|
285
|
+
background: white;
|
|
286
|
+
border-radius: 3rem;
|
|
287
|
+
// position: absolute;
|
|
288
|
+
// right: space(6);
|
|
289
|
+
// top: 0 !important;
|
|
290
|
+
}
|
|
291
|
+
.asd20-language-translation {
|
|
292
|
+
z-index: 2;
|
|
293
|
+
background: rgba(255, 255, 255, 1);
|
|
294
|
+
border-radius: 3rem;
|
|
295
|
+
border: 1px solid var(--website-page__alternate-background-color);
|
|
296
|
+
margin: 0 0.05rem;
|
|
297
|
+
height: 2.75rem;
|
|
298
|
+
&::v-deep .asd20-select-input {
|
|
299
|
+
padding: 0.375rem 0.375rem;
|
|
300
|
+
color: currentColor;
|
|
301
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
302
|
+
}
|
|
254
303
|
}
|
|
255
304
|
}
|
|
305
|
+
.asd20-notification-group--floating {
|
|
306
|
+
position: absolute;
|
|
307
|
+
top: 3.5rem;
|
|
308
|
+
}
|
|
309
|
+
.no-block-widget {
|
|
310
|
+
top: 0;
|
|
311
|
+
}
|
|
256
312
|
.asd20-language-loader {
|
|
257
313
|
order: 1;
|
|
258
314
|
}
|
|
@@ -285,6 +341,27 @@ export default {
|
|
|
285
341
|
}
|
|
286
342
|
}
|
|
287
343
|
|
|
344
|
+
@media (min-width: 667px) {
|
|
345
|
+
.asd20-school-home-video-template {
|
|
346
|
+
.notification-translation-container {
|
|
347
|
+
margin: 0;
|
|
348
|
+
justify-content: flex-end;
|
|
349
|
+
position: absolute;
|
|
350
|
+
right: space(0.5);
|
|
351
|
+
top: space(0.5);
|
|
352
|
+
width: auto;
|
|
353
|
+
flex-wrap: nowrap;
|
|
354
|
+
.language-wrapper {
|
|
355
|
+
justify-content: flex-end;
|
|
356
|
+
margin-bottom: 0;
|
|
357
|
+
}
|
|
358
|
+
.asd20-notification-group--floating {
|
|
359
|
+
position: unset;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
288
365
|
@media (min-width: 1024px) {
|
|
289
366
|
.asd20-school-home-video-template {
|
|
290
367
|
display: block;
|
|
@@ -300,6 +377,14 @@ export default {
|
|
|
300
377
|
.notification-translation-container {
|
|
301
378
|
top: space(5.5);
|
|
302
379
|
right: space(3.5);
|
|
380
|
+
.language-wrapper {
|
|
381
|
+
// justify-content: flex-end;
|
|
382
|
+
// flex-wrap: nowrap;
|
|
383
|
+
// margin-bottom: space(0.25);
|
|
384
|
+
// .asd20-language-translation {
|
|
385
|
+
// margin: 0 space(0.25);
|
|
386
|
+
// }
|
|
387
|
+
}
|
|
303
388
|
}
|
|
304
389
|
|
|
305
390
|
.asd20-quicklinks-menu {
|
|
@@ -21,6 +21,33 @@
|
|
|
21
21
|
]
|
|
22
22
|
},
|
|
23
23
|
"value": [
|
|
24
|
+
{
|
|
25
|
+
"@search.score": 1,
|
|
26
|
+
"id": null,
|
|
27
|
+
"uid": "MDQwMDAwMDA4MjAwRTAwMDc0QzVCNzEwMUE4MkUwMDgwMDAwMDAwMDc3N0RBQjVFNzBCMkQ4MDEwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDA4Q0IxNTUwMjk4QzVDNzQ2ODZDNDg3NTI2NTFCMEI5Lg==",
|
|
28
|
+
"type": "event",
|
|
29
|
+
"summary": "Blue Day",
|
|
30
|
+
"description": "No School",
|
|
31
|
+
"location": "AAHS",
|
|
32
|
+
"start": "2025-10-13T07:00:00Z",
|
|
33
|
+
"end": "2025-10-14T07:00:00Z",
|
|
34
|
+
"dtstamp": "2025-10-13T07:00:00Z",
|
|
35
|
+
"class": "",
|
|
36
|
+
"priority": "",
|
|
37
|
+
"transparency": "",
|
|
38
|
+
"status": "",
|
|
39
|
+
"sequence": "",
|
|
40
|
+
"url": null,
|
|
41
|
+
"calendarId": "da74e260-04f3-11ec-a052-79c69b6cfc2x",
|
|
42
|
+
"calendarName": "Blue/Silver Schedule",
|
|
43
|
+
"calendarOrganizationId": "bb6e9cd6-da25-9e6f-5e8d-072b9a7df4f0",
|
|
44
|
+
"calendarOrganizationTitle": "Air Academy High School",
|
|
45
|
+
"calendarCategories": [],
|
|
46
|
+
"calendarKeywords": ["Block Schedule"],
|
|
47
|
+
"calendarUrl": "https://outlook.office365.com/owa/calendar/6a1a45f079b7416f8b301747cd731778@asd20.org/1ff6c80db4dd42c5be39096fdf50a4ee10284553908289904160/calendar.ics",
|
|
48
|
+
"calendarFormat": "ical",
|
|
49
|
+
"calendarColor": "#213f94"
|
|
50
|
+
},
|
|
24
51
|
{
|
|
25
52
|
"@search.score": 1,
|
|
26
53
|
"id": null,
|