@asd20/ui-next 2.20.1 → 2.21.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.21.1](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.21.0...ui-next-v2.21.1) (2026-08-12)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * rename 'commtool' button; add 'submit good news button' ([5f6a976](https://github.com/academydistrict20/asd20-ui-next/commit/5f6a9761975d7f79f51d3801089a889a7ec0395f))
9
+
10
+ # [2.21.0](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.20.1...ui-next-v2.21.0) (2026-08-10)
11
+
12
+
13
+ ### Features
14
+
15
+ * remove webpack - use vite; package/dependency cleanup ([9f8da02](https://github.com/academydistrict20/asd20-ui-next/commit/9f8da02cf8a0d91c4001505ddf86aea2570e66f3))
16
+
3
17
  ## [2.20.1](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.20.0...ui-next-v2.20.1) (2026-08-10)
4
18
 
5
19
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asd20/ui-next",
3
- "version": "2.20.1",
3
+ "version": "2.21.1",
4
4
  "private": false,
5
5
  "description": "ASD20 UI component library for Vue 3.",
6
6
  "license": "MIT",
@@ -16,7 +16,7 @@ export default {
16
16
  },
17
17
  options: {
18
18
  type: Object,
19
- required: false,
19
+ default: undefined,
20
20
  },
21
21
  },
22
22
  data() {
@@ -59,7 +59,7 @@ export default {
59
59
  components: { Asd20Icon },
60
60
  mixins: [inputComponentMixin],
61
61
  props: {
62
- modelValue: { default: '' },
62
+ modelValue: { type: [String, Number], default: '' },
63
63
  },
64
64
  computed: {
65
65
  mergedInputAttrs() {
@@ -43,7 +43,7 @@ export default {
43
43
  mixins: [inputComponentMixin],
44
44
  inheritAttrs: false,
45
45
  props: {
46
- modelValue: { default: null },
46
+ modelValue: { type: null, default: null },
47
47
  },
48
48
  computed: {
49
49
  mergedInputAttrs() {
@@ -5,7 +5,10 @@
5
5
  { 'asd20-language-translation--no-label': noLabel },
6
6
  ]"
7
7
  >
8
- <asd20-loader v-show="_languageLoading" size="sm"></asd20-loader>
8
+ <asd20-loader
9
+ v-show="_languageLoading"
10
+ size="sm"
11
+ ></asd20-loader>
9
12
  <asd20-select-input
10
13
  v-show="languageOptions"
11
14
  v-model="resolvedLanguageCode"
@@ -44,6 +44,7 @@
44
44
  :loading="!Array.isArray(stories)"
45
45
  :cards="storyCards"
46
46
  :slides-per-view="3"
47
+ :show-good-news-button="isEmployeeWebsite"
47
48
  card-type="Feature"
48
49
  ></Asd20SwiperFeed>
49
50
  </intersect>
@@ -109,7 +110,7 @@ export default {
109
110
  if (!Array.isArray(this.announcements)) return []
110
111
 
111
112
  // If the organization id is not the employee org:
112
- if (this.organizationId !== '7ab6f0b0-3304-11ef-92d6-ed16a99dd422') {
113
+ if (!this.isEmployeeWebsite) {
113
114
  return this.announcements.map(a =>
114
115
  mapMessageToCard(
115
116
  a,
@@ -144,6 +145,10 @@ export default {
144
145
  })
145
146
  },
146
147
 
148
+ isEmployeeWebsite() {
149
+ return this.organizationId === '7ab6f0b0-3304-11ef-92d6-ed16a99dd422'
150
+ },
151
+
147
152
  storyCards() {
148
153
  if (!Array.isArray(this.stories)) return []
149
154
  return this.stories.map(s =>
@@ -66,7 +66,11 @@
66
66
  <div class="feed-buttons">
67
67
  <asd20-button
68
68
  v-if="link && linkLabel && (cards.length >= 10 || cardType === 'Event')"
69
- :class="showProtectedContentButtons ? 'secondary-button' : ''"
69
+ :class="
70
+ showProtectedContentButtons || showGoodNewsButton
71
+ ? 'secondary-button'
72
+ : ''
73
+ "
70
74
  :label="linkLabel"
71
75
  :link="link"
72
76
  size="md"
@@ -89,7 +93,7 @@
89
93
  <asd20-button
90
94
  v-if="showProtectedContentButtons"
91
95
  class="secondary-button"
92
- label="Communication Tool Form"
96
+ label="Request an Announcement"
93
97
  link="https://forms.office.com/Pages/ResponsePage.aspx?id=zcp1lGYYyky2X9rtmQDNB-eqaTnt2ZBNtZ1N5vhrzHNUNFBHNlNBOUJaN1VXQjhDRzBVQVdOS1pVQSQlQCN0PWcu"
94
98
  size="md"
95
99
  horizontal
@@ -97,6 +101,17 @@
97
101
  transparent
98
102
  centered
99
103
  />
104
+ <asd20-button
105
+ v-if="showGoodNewsButton"
106
+ class="secondary-button"
107
+ label="Submit Good News"
108
+ link="https://forms.cloud.microsoft/r/kxvn15bNEA"
109
+ size="md"
110
+ horizontal
111
+ bordered
112
+ transparent
113
+ centered
114
+ />
100
115
  </div>
101
116
  </component>
102
117
  </template>
@@ -126,6 +141,7 @@ export default {
126
141
  tag: { type: String, default: 'div' },
127
142
  cardType: { type: String, default: '' },
128
143
  hasProtectedContent: { type: Boolean, default: false },
144
+ showGoodNewsButton: { type: Boolean, default: false },
129
145
  },
130
146
 
131
147
  data: () => ({
@@ -67,7 +67,11 @@
67
67
  @dismiss="$emit('dismiss-notification', $event)"
68
68
  @toggle-all="$emit('toggle-all')"
69
69
  />
70
- <asd20-list class="logins-list" multi-column :column-width="480">
70
+ <asd20-list
71
+ class="logins-list"
72
+ multi-column
73
+ :column-width="480"
74
+ >
71
75
  <asd20-list-item
72
76
  v-for="(login, index) in selectedTabLogins.logins"
73
77
  :key="index"
@@ -115,7 +119,11 @@
115
119
  class="asd20-login-details-modal"
116
120
  @dismiss="selectedLogin = null"
117
121
  >
118
- <asd20-viewport v-if="selectedLogin" padded scrollable>
122
+ <asd20-viewport
123
+ v-if="selectedLogin"
124
+ padded
125
+ scrollable
126
+ >
119
127
  <asd20-messaging-group
120
128
  :messages="[selectedLogin]"
121
129
  ></asd20-messaging-group>
@@ -1,4 +1,4 @@
1
- import { format, parseISO } from 'date-fns'
1
+ import { format, parse, parseISO } from 'date-fns'
2
2
  import formattedTime from './formatEventTime'
3
3
 
4
4
  // Function to sanitize the summary
@@ -39,8 +39,6 @@ export default function mapEventToCard(event) {
39
39
  try {
40
40
  dateObj = parseISO(event.start)
41
41
  if (isNaN(dateObj)) {
42
- // fallback
43
- const { parse } = require('date-fns')
44
42
  dateObj = parse(event.start, "yyyy-MM-dd'T'HH:mm:ssX", new Date())
45
43
  }
46
44
  } catch (e) {