@asd20/ui 3.2.511 → 3.2.513

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 CHANGED
@@ -5,7 +5,7 @@
5
5
  "*.scss",
6
6
  "*.vue"
7
7
  ],
8
- "version": "3.2.511",
8
+ "version": "3.2.513",
9
9
  "private": false,
10
10
  "license": "MIT",
11
11
  "repository": {
@@ -65,6 +65,7 @@ export default {
65
65
  background: var(--foreground, var(--color__accent));
66
66
  border-radius: 50%;
67
67
  opacity: 1;
68
+ box-shadow: 0px 0px 3px var(--background, currentColor);
68
69
  }
69
70
 
70
71
  &--bordered {
@@ -4,7 +4,7 @@
4
4
  ref="menuButton"
5
5
  id="menu-toggle-button"
6
6
  aria-owns="main-menu-list"
7
- aria-controls="main-menu-list"
7
+ aria-expanded="false"
8
8
  :size="desktop && !zoomed ? 'lg' : 'md'"
9
9
  class="menu-button"
10
10
  :icon="menuActive ? 'close' : 'menu'"
@@ -63,13 +63,15 @@
63
63
  v-if="publishDateTime"
64
64
  :dateTime="publishDateTime"
65
65
  />
66
- <br />
67
- <span v-if="modifiedDateTime" class="date-prefix">Updated:</span>
68
- <asd20-formatted-date
69
- v-if="modifiedDateTime"
70
- :dateTime="modifiedDateTime"
66
+ <div class="modified-meta" v-if="modifiedDateTime && showModifiedDateTime">
67
+ <span class="date-prefix"> | Updated:</span>
68
+ <asd20-formatted-date :dateTime="modifiedDateTime" />
69
+ </div>
70
+ <asd20-tag-group
71
+ v-if="categories.length"
72
+ :tags="categories"
73
+ class="date-prefix"
71
74
  />
72
- <asd20-tag-group v-if="categories.length" :tags="categories" />
73
75
  <slot name="meta" />
74
76
  </div>
75
77
  <div v-if="lead" class="asd20-page-header__lead">
@@ -198,6 +200,15 @@ export default {
198
200
  .pop()
199
201
  )
200
202
  },
203
+ showModifiedDateTime() {
204
+ const publishDateTimeString = new Date(this.publishDateTime)
205
+ const modifiedDateTimeString = new Date(this.modifiedDateTime)
206
+ console.log(publishDateTimeString, modifiedDateTimeString)
207
+
208
+ let publishDateTimePlusOne = new Date(publishDateTimeString.setDate(publishDateTimeString.getDate() + 1))
209
+ console.log(publishDateTimePlusOne, modifiedDateTimeString)
210
+ return modifiedDateTimeString > publishDateTimePlusOne ? true : false
211
+ },
201
212
  },
202
213
  methods: {
203
214
  goBack() {
@@ -368,16 +379,18 @@ export default {
368
379
  }
369
380
  .date-prefix {
370
381
  @include asd20-font(
371
- 0.75,
382
+ 0.6,
372
383
  var(--website-typography__font-family-headlines)
373
384
  );
374
385
  }
386
+ .modified-meta {
387
+ display: inline-block;
388
+ }
375
389
  .asd20-formatted-date {
376
390
  @include asd20-font(
377
- 0.75,
391
+ 0.6,
378
392
  var(--website-typography__font-family-headlines)
379
393
  );
380
- text-transform: uppercase;
381
394
  }
382
395
  }
383
396
 
@@ -1,79 +1,119 @@
1
1
  <template>
2
- <div
2
+ <!-- <div
3
3
  id="main-menu-list"
4
4
  ref="menuContainer"
5
5
  class="asd20-site-menu"
6
- role="menu"
7
6
  @click="onBackgroundClick"
8
7
  @focus="onFocus"
9
8
  @blur="onBlur"
10
9
  @keyup.up.stop.prevent="previous"
11
10
  @keyup.down.stop.prevent="next"
12
11
  @keyup.right.stop.prevent="activateSection"
13
- @keyup.enter="activateSection"
14
12
  @keyup.left.stop.prevent="deactivateSection"
13
+ @keyup.enter="activateSection"
15
14
  @keyup.escape="deactivateSection"
16
15
  @keydown.tab.stop="dismiss"
17
16
  tabindex="0"
17
+ > -->
18
+ <div
19
+ id="main-menu-list"
20
+ ref="menuContainer"
21
+ class="asd20-site-menu"
22
+ @keyup.right.stop.prevent="activateSection"
23
+ @keyup.left.stop.prevent="deactivateSection"
24
+ @keyup.escape="deactivateSection"
25
+ @keyup.enter="activateSection"
26
+ tabindex="-1"
18
27
  >
19
- <div class="asd20-site-menu__viewport">
20
- <transition name="slide-right">
21
- <div v-if="!activeSection" class="asd20-table-of-contents">
22
- <button
23
- role="menuitem"
24
- v-for="(section, index) in sections"
25
- :key="index"
26
- :id="`asd20-site-menu__section-${index}`"
27
- class="asd20-table-of-contents__item"
28
- @click="activeSectionIndex = index"
29
- @mouseup="keyboardTriggeredLastAction = false"
30
- @keyup="keyboardTriggeredLastAction = true"
31
- tabindex="-1"
32
- >
33
- <span class="title">{{ section.title }}</span>
34
- <asd20-icon name="chevron" size="sm" />
35
- </button>
36
- </div>
37
- </transition>
38
- <transition name="slide-left" v-on:after-enter="afterActivateTransition">
39
- <div v-if="activeSection" class="asd20-site-menu__section">
28
+ <focus-trap
29
+ :active="active"
30
+ aria-hidden="true"
31
+ tabindex="-1"
32
+ :initial-focus="() => $refs.focused[0]"
33
+ >
34
+ <div class="asd20-site-menu__viewport" tabindex="-1">
35
+ <transition name="slide-right" tabindex="-1">
40
36
  <div
41
- class="asd20-site-menu__section__back"
42
- @click="deactivateSection"
43
- @mouseup="keyboardTriggeredLastAction = false"
44
- @keyup="keyboardTriggeredLastAction = true"
37
+ v-if="!activeSection"
38
+ class="asd20-table-of-contents"
39
+ tabindex="-1"
40
+ role="menubar"
45
41
  >
46
- <asd20-icon name="chevron" size="sm" />
47
- <span class="title">{{ activeSection.title }}</span>
48
- </div>
49
- <div class="asd20-site-menu__items">
50
- <a
51
- v-for="(item, index) in activeSection.items"
52
- :id="`asd20-site-menu__item-${activeSectionIndex}-${index}`"
42
+ <button
43
+ v-for="(section, index) in sections"
53
44
  :key="index"
54
- class="asd20-site-menu__item"
55
- :href="item.url"
56
- @click="dismiss"
57
- tabindex="-1"
58
- :target="
59
- !item.url || item.url.startsWith('/') ? undefined : '_blank'
60
- "
61
- >{{ item.title }}</a
45
+ :id="`asd20-site-menu__section-${index}`"
46
+ class="asd20-table-of-contents__item"
47
+ role="menuitem"
48
+ ref="focused"
49
+ aria-expanded="false"
50
+ :aria-owns="`asd20-site-menu__item-${index}`"
51
+ @click="activeSectionIndex = index"
52
+ @mouseup="keyboardTriggeredLastAction = false"
53
+ @keyup="keyboardTriggeredLastAction = true"
62
54
  >
55
+ <span class="title">{{ section.title }}</span>
56
+ <asd20-icon name="chevron" size="sm" />
57
+ </button>
58
+ </div>
59
+ </transition>
60
+ <transition
61
+ name="slide-left"
62
+ v-on:after-enter="afterActivateTransition"
63
+ >
64
+ <!-- <focus-trap
65
+ :active="active"
66
+ aria-hidden="true"
67
+ returnFocusOnDeactivate="true"
68
+ > -->
69
+ <div v-if="activeSection" class="asd20-site-menu__section">
70
+ <div>
71
+ <button
72
+ class="asd20-site-menu__section__back"
73
+ aria-expanded="true"
74
+ @click="deactivateSection"
75
+ @mouseup="keyboardTriggeredLastAction = false"
76
+ @keyup="keyboardTriggeredLastAction = true"
77
+ >
78
+ <asd20-icon name="chevron" size="sm" />
79
+ <span class="title">{{ activeSection.title }}</span>
80
+ </button>
81
+
82
+ <div
83
+ :id="`asd20-site-menu__item-${activeSectionIndex}`"
84
+ class="asd20-site-menu__items"
85
+ role="menu"
86
+ >
87
+ <a
88
+ v-for="(item, index) in activeSection.items"
89
+ :id="`asd20-site-menu__item-${activeSectionIndex}-${index}`"
90
+ :key="index"
91
+ class="asd20-site-menu__item"
92
+ :href="item.url"
93
+ @click="dismiss"
94
+ :target="
95
+ !item.url || item.url.startsWith('/') ? undefined : '_blank'
96
+ "
97
+ >{{ item.title }}</a
98
+ >
99
+ </div>
100
+ </div>
63
101
  </div>
64
- </div>
65
- </transition>
66
- </div>
102
+ <!-- </focus-trap> -->
103
+ </transition>
104
+ </div>
105
+ </focus-trap>
67
106
  </div>
68
107
  </template>
69
108
 
70
109
  <script>
71
110
  import { setTimeout } from 'timers'
111
+ import { FocusTrap } from 'focus-trap-vue'
72
112
  import Asd20Icon from '../../atoms/Asd20Icon'
73
113
 
74
114
  export default {
75
115
  name: 'Asd20SiteMenu',
76
- components: { Asd20Icon },
116
+ components: { Asd20Icon, FocusTrap },
77
117
  props: {
78
118
  sections: { type: Array, default: () => [] },
79
119
  active: { type: Boolean, default: false },
@@ -88,10 +128,13 @@ export default {
88
128
  computed: {
89
129
  activeSection() {
90
130
  return this.activeSectionIndex === -1
91
- ? null
131
+ ? 0
92
132
  : this.sections[this.activeSectionIndex]
93
133
  },
94
134
  },
135
+ mounted() {
136
+ this.setFocus()
137
+ },
95
138
  methods: {
96
139
  onFocus(event) {
97
140
  this.hasFocus = true
@@ -150,6 +193,7 @@ export default {
150
193
  this.$nextTick(() => {
151
194
  if (this.keyboardTriggeredLastAction) {
152
195
  this.setFocusSection()
196
+ this.setFocus()
153
197
  }
154
198
  })
155
199
  } else {
@@ -188,6 +232,11 @@ export default {
188
232
  this.$emit('update:active', false)
189
233
  }
190
234
  },
235
+ setFocus() {
236
+ this.$nextTick(() => {
237
+ this.$refs.focused[0].focus()
238
+ })
239
+ },
191
240
  },
192
241
  }
193
242
  </script>
@@ -314,6 +363,8 @@ export default {
314
363
  padding: space(0.75) space(1) space(0.75) space(2);
315
364
  cursor: pointer;
316
365
  box-shadow: 0 -1px 0 0 var(--website-menu__divider-color) inset;
366
+ border: none;
367
+ width: 100%;
317
368
  transition: background asd20-speed(1) ease-in-out;
318
369
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
319
370
  touch-action: manipulation;
@@ -99,12 +99,25 @@
99
99
  medium
100
100
  />
101
101
  <asd20-multiselect-input
102
+ role="combobox"
103
+ aria-label="Choose a Category to Sort By"
104
+ aria-controls="joketypes"
105
+ aria-autocomplete="list"
106
+ aria-expanded="true"
107
+ aria-activedescendant=""
108
+ title="Choose a Category"
102
109
  label="Categories"
103
110
  :taggable="false"
104
111
  :value="selectedCategories"
105
112
  :items="categoryOptions"
106
113
  @input="$emit('update:selected-categories', $event)"
107
114
  />
115
+ <form>
116
+ <label for="multi-select">Choose a Category</label>
117
+ <select name="categories" multiple id="multi-select">
118
+ <options :options="categoryOptions"/>
119
+ </select>
120
+ </form>
108
121
  </div>
109
122
 
110
123
  <div class="feed">
@@ -128,6 +141,7 @@
128
141
  class="load-more"
129
142
  icon="chevron"
130
143
  label="Prev"
144
+ aira-label="Previous"
131
145
  :iconAngle="-90"
132
146
  size="md"
133
147
  horizontal
@@ -17,14 +17,7 @@
17
17
  }
18
18
  ],
19
19
  "links": [],
20
- "parentPage": {
21
- "id": "253ba306-6e0f-72bc-9ab7-ec7558f6cd8e",
22
- "path": {
23
- "level": 1,
24
- "path": "/"
25
- },
26
- "title": "Home"
27
- },
20
+ "parentPage": null,
28
21
  "path": {
29
22
  "path": "/buses-and-transportation/choice-transportation"
30
23
  },
@@ -41,6 +34,7 @@
41
34
  "bodyHtml": "<h2>Bring Your Own Device (BYOD) for Digital Learning at AAHS</h2><p>The advantages of student-owned devices include:&nbsp;</p><ul><li><p>Any time, anywhere access to class resources, support and extension activities</p></li><li><p>The ability to develop \"digital\" folders and exercise books for their classes (that can't be lost, and never need replacing) through Google Apps</p></li><li><p>Anytime, anywhere access to the school library e-books, database and cataloged web resources.</p></li><li><p>Greater ability to communicate with teachers, parents, and peers to support their learning through instant access to their student e-mail</p></li><li><p>Anytime, anywhere access to unlimited resources and information on the internet</p></li><li><p>The ability to draft, redraft and publish their work at the click of a button</p></li><li><p>Allowing students to become active partners in their learning</p></li></ul><p></p><h2>Digital Citizenship</h2><p>Internet safety and helping our students become good digital citizens is of paramount importance at AAHS! Our staff is committed to helping students maintain a positive digital footprint and&nbsp;keeping our students safe an while using the vast collection of educational resources available on the internet. We use digital citizenship lessons from&nbsp;<a href=\"https://www.commonsensemedia.org/\" rel=\"noopener noreferrer nofollow\">Common Sense Media</a>.&nbsp;</p><p>Practicing good digital citizenship extends beyond the classroom and into the home. For great resources for your family, visit the links below:</p><ul><li><p><a href=\"http://www.safeteens.com/\" rel=\"noopener noreferrer nofollow\">SafeTeens</a>&nbsp;A place for teens and parents to learn how to use the Internet safely.</p></li><li><p><a href=\"http://www.cyber-safety.com/\" rel=\"noopener noreferrer nofollow\">Cyber-Safety.com</a>&nbsp;A website dedicated to keeping kids safe in a wired world.</p></li><li><p><a href=\"http://www.connectsafely.org/\" rel=\"noopener noreferrer nofollow\">ConnectSafely.org</a>&nbsp;is dedicated to educating users of connected technology about safety, privacy and security.</p></li><li><p><a href=\"https://www.commonsensemedia.org/educators/digital-compass\" rel=\"noopener noreferrer nofollow\">Digital Compass</a>&nbsp;- Where are you headed? The only educational game that gives kids the freedom to explore how decisions made in their digital lives can impact their relationships and future.&nbsp; (from Common Sense Media)</p></li></ul><h2>Getting Internet Access at Home</h2><ol><li><p><a href=\"https://internetessentials.com/\" rel=\"noopener noreferrer nofollow\">Internet Essentials from Comcast</a><a href=\"http://www.centurylink.com/home/internetbasics/?rid=internetbasics\" rel=\"noopener noreferrer nofollow\">Internet</a></p></li><li><p><a href=\"http://www.centurylink.com/home/internetbasics/?rid=internetbasics\" rel=\"noopener noreferrer nofollow\">Basics from CenturyLink</a></p></li><li><p><a href=\"https://everyoneon.org/get-connected/\" rel=\"noopener noreferrer nofollow\">EveryoneOn.org</a><br></p></li></ol><h2>Borrowing Equipment</h2><p>1. Print and sign the last page of the <a href=\"https://airacademy.asd20.org/SiteAssets/Pages/BYOD/Tech%20Guidelines%20and%20Device%20Checkout%20Form%20Nov%202020.pdf\" rel=\"noopener noreferrer nofollow\">Technology Guidelines and Responsible Use Agreement</a>.</p><p>2. Electronically sign and email it or direct questions to <a href=\"mailto: traci.trimbach@asd20.org\" rel=\"noopener noreferrer nofollow\">Traci Trimbach</a>.<br></p><h2>Educational Discounts&nbsp;</h2><p><a href=\"https://airacademy.asd20.org/ems/byod/Documents/Educational%20Discounts%20for%20Devices.pdf\" rel=\"noopener noreferrer nofollow\">List of links</a>&nbsp;to sites offering educational discounts<br></p><h2>Have teenagers?&nbsp; Get insurance! &nbsp;</h2><p>Students and parents are responsible to pay for damages that occur on their district-provided-devices.</p><p><a href=\"http://www.studentinsurancepartners.com/\" rel=\"noopener noreferrer nofollow\">​Li​nk to 3rd party insurance</a></p><p></p><h2>Need troubleshooting?</h2><p>At AAHS, go to Room 416 to see Ms. Hiner or Mr. Duran for help.</p><p>At home, consider using the following links.</p><ul><li><p><strong>PC Troubleshooting links</strong></p><ul><li><p><a href=\"https://www.youtube.com/results?search_query=troubleshooting+a+pc\" rel=\"noopener noreferrer nofollow\">PC Troubleshooting videos</a>&nbsp;(YouTube)</p></li></ul></li><li><p><strong>Mac Troubleshooting links</strong></p><ul><li><p><a href=\"https://www.youtube.com/results?search_query=troubleshooting+a+Mac\" rel=\"noopener noreferrer nofollow\">Mac Troubleshooting videos</a>&nbsp;(YouTube)</p></li></ul></li></ul><h2>Long List</h2> <ol> <li><p>Nikolas Abbotts</p></li><li><p>Emma Errickson</p></li><li><p>Zackery Kuster</p></li><li><p>Remzi Revia</p></li><li><p>Nancy Ahmed</p></li><li><p>Morgan Feher</p></li><li><p>Jessica Lange</p></li><li><p>Lauryn Robinson</p></li><li><p>Isabella Alexander</p></li><li><p>Sarah Fesler</p></li><li><p>Michelle Lau</p></li><li><p>Isaiah Roux</p></li><li><p>Ava Amsden</p></li><li><p>Sonia Florek</p></li><li><p>Connor Laxson</p></li><li><p>Darius Rymski</p></li><li><p>Natalie Asay</p></li><li><p>Sophia Footman</p></li><li><p>Addison Leslie</p></li><li><p>Diego Sauceda</p></li><li><p>Falon Asiu</p></li><li><p>Kailen Ford</p></li><li><p>Sophia Li</p></li><li><p>Julia Schneider</p></li><li><p>Jason Baek</p></li><li><p>Leah Fox</p></li><li><p>Reign Linn</p></li><li><p>Ethan Schoeneck</p></li><li><p>Emily Baldridge</p></li><li><p>Annabelle Frailey</p></li><li><p>Emma Lucero</p></li><li><p>Tyler Scholes</p></li><li><p>Nathan Baldridge</p></li><li><p>Mackenzie Frazee</p></li><li><p>Amari Luu</p></li><li><p>James Schreiber</p></li><li><p>Damian Balon</p></li><li><p>Taryn Galceran</p></li><li><p>Zoe Maher</p></li><li><p>Isobel Schwartz</p></li><li><p>Ella Beckwith</p></li><li><p>Isabella Garcia</p></li><li><p>Brayden Mallery</p></li><li><p>Nuwanya Senanayake</p></li><li><p>Piper Behan</p></li><li><p>Aurora Gazetti</p></li><li><p>Jacob Marlett</p></li><li><p>Camryn Shade</p></li><li><p>Ethan Benedict</p></li><li><p>Jillian Gehrmann</p></li><li><p>Thomas Masciullo</p></li><li><p>Samantha Mae Sheridan</p></li><li><p>Stanley Black</p></li><li><p>Skylar Gordon</p></li><li><p>Megan Mattorano</p></li><li><p>Lauren Shrank</p></li><li><p>Daniel Boland</p></li><li><p>Ethan Gosnell</p></li><li><p>Cooper McDowell</p></li><li><p>Priyaj Shrestha</p></li><li><p>Evan Boudreau</p></li><li><p>Paul Grier IV</p></li><li><p>Demetrius McGriff</p></li><li><p>Matthew Silver</p></li><li><p>Laura Bunnell</p></li><li><p>Jayden Guerrero</p></li><li><p>Kennedy McHugh</p></li><li><p>Patrick Simpson</p></li><li><p>Brayden Burk</p></li><li><p>Brandon Guterriz</p></li><li><p>Seth McKamey</p></li><li><p>Allan Sindler</p></li><li><p>Isabella Burton</p></li><li><p>Karol Gutierrez</p></li><li><p>Cecilia Molden</p></li><li><p>Anthony Sintas</p></li><li><p>Carson Caplan</p></li><li><p>Samah Halim</p></li><li><p>Tatjana Montalvo</p></li><li><p>Kira Smith</p></li><li><p>Max Caron</p></li><li><p>Alyssa Hanson</p></li><li><p>Ashlee Moore</p></li><li><p>Megan Smith</p></li><li><p>Aidan Chen</p></li><li><p>Raya Hardson</p></li><li><p>Julian Moore</p></li><li><p>Dustin Spillar</p></li><li><p>Ashley Choi</p></li><li><p>Isaac Hatch</p></li><li><p>Aaron Mulder</p></li><li><p>Charles Stephenson</p></li><li><p>Chad Compton</p></li><li><p>Karolyn Heredia-Martell</p></li><li><p>Elijah Mullin</p></li><li><p>Trevor Timms-Martinez</p></li><li><p>Emily Cook</p></li><li><p>Madisyn Herron</p></li><li><p>Regan Nelson</p></li><li><p>Joshua Tobiasz</p></li><li><p>Collin Cooper</p></li><li><p>Kaden Hillman</p></li><li><p>Andrew Nguyen</p></li><li><p>Erica Tong</p></li><li><p>Briana Crippen</p></li><li><p>Lauren Hoffa</p></li><li><p>Tyler Nielsen</p></li><li><p>Noah Tongen</p></li><li><p>Nicholas Curtis</p></li><li><p>Allison Holcombe</p></li><li><p>Tanja Oostenrijk</p></li><li><p>Sophia Turner</p></li><li><p>Daxton Davenport</p></li><li><p>Ashton Holmes</p></li><li><p>Peyton Oppelt</p></li><li><p>Avery Valdez</p></li><li><p>Zachariah Davis</p></li><li><p>Quinn Howell</p></li><li><p>Brenner Page</p></li><li><p>Angelique Vuldy</p></li><li><p>Abigail DeCecco</p></li><li><p>Grace Hu</p></li><li><p>Erin Park</p></li><li><p>Hannah Wade</p></li><li><p>Sophia DeJoia</p></li><li><p>Madison Huxhold</p></li><li><p>Cade Parker</p></li><li><p>Isabella Wade</p></li><li><p>Chloe Dembroski</p></li><li><p>Matthew Jennings</p></li><li><p>Lauryn Peck</p></li><li><p>Allan Watson</p></li><li><p>Anna DeThomas</p></li><li><p>Samuel Jensen</p></li><li><p>Sadie Peroulas</p></li><li><p>Madison Weiner</p></li><li><p>Avery Dial</p></li><li><p>Ethan Johnson</p></li><li><p>Sydney Provan</p></li><li><p>Liam Whetzal</p></li><li><p>Jake Eaton</p></li><li><p>Keira Johnson</p></li><li><p>Nikhil Pudtha</p></li><li><p>Emma Wilhelm</p></li><li><p>Lauren Ebner</p></li><li><p>Maya Kaipus</p></li><li><p>Nitya Pudtha</p></li><li><p>Aidan Wilson</p></li><li><p>Mark Eddings II</p></li><li><p>Shunya Kawazoe</p></li><li><p>Tessa Raedeke</p></li><li><p>Christian Winkler</p></li><li><p>Gus Engel</p></li><li><p>Addison King</p></li><li><p>Abby Reardanz</p></li><li><p>Skyler Wood</p></li><li><p>Caitlyn Ericksen</p></li><li><p>Bailey King</p></li><li><p>Gabriella Redfern</p></li><li><p>Jasmine Woods</p></li> </ol><hr/>",
42
35
  "status": "Published",
43
36
  "publishDateTime": "2019-07-29T21:04:21.000Z",
37
+ "modifiedDateTime": "2019-07-31T21:04:21.000Z",
44
38
  "expireDateTime": null,
45
39
  "translations": [],
46
40
  "images": [