@asd20/ui-next 1.0.8 → 1.0.10

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 (50) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/package.json +1 -1
  3. package/src/components/atoms/Asd20Button/index.vue +1 -1
  4. package/src/components/atoms/Asd20CalendarEventButton/index.vue +1 -1
  5. package/src/components/atoms/Asd20Checkbox/index.vue +11 -6
  6. package/src/components/atoms/Asd20SelectInput/index.vue +10 -4
  7. package/src/components/molecules/Asd20ActionMenuItem/index.vue +1 -1
  8. package/src/components/molecules/Asd20Card/index.vue +1 -1
  9. package/src/components/molecules/Asd20FileInput/index.vue +10 -4
  10. package/src/components/molecules/Asd20ListItem/index.vue +1 -1
  11. package/src/components/molecules/Asd20SearchField/index.vue +1 -1
  12. package/src/components/molecules/Asd20SliderInput/index.vue +1 -1
  13. package/src/components/molecules/Asd20Swipe/index.vue +1 -1
  14. package/src/components/molecules/Asd20Tab/index.vue +1 -1
  15. package/src/components/molecules/Asd20TextAreaInput/index.vue +12 -6
  16. package/src/components/molecules/Asd20TextInput/index.vue +10 -4
  17. package/src/components/organisms/Asd20AccessibilityIssueModal/index.vue +6 -6
  18. package/src/components/organisms/Asd20CampusHeader/index.vue +1 -1
  19. package/src/components/organisms/Asd20EventModal/index.vue +3 -3
  20. package/src/components/organisms/Asd20ImageHeader/index.vue +2 -2
  21. package/src/components/organisms/Asd20NotificationGroup/index.vue +12 -8
  22. package/src/components/organisms/Asd20PageHeader/index.vue +2 -2
  23. package/src/components/templates/Asd20AppTemplate/index.vue +1 -1
  24. package/src/components/templates/Asd20ArticleDigestCompactTemplate/index.vue +1 -1
  25. package/src/components/templates/Asd20ArticleDigestTemplate/index.vue +1 -1
  26. package/src/components/templates/Asd20ArticleListTemplate/index.vue +1 -1
  27. package/src/components/templates/Asd20ArticleTemplate/index.vue +1 -1
  28. package/src/components/templates/Asd20BasePageTemplate/index.vue +1 -1
  29. package/src/components/templates/Asd20CampusDetailTemplate/index.vue +1 -1
  30. package/src/components/templates/Asd20CampusTemplate/index.vue +1 -1
  31. package/src/components/templates/Asd20ClubsTemplate/index.vue +1 -1
  32. package/src/components/templates/Asd20DetailAlternateTemplate/index.vue +1 -1
  33. package/src/components/templates/Asd20DetailImageFullTemplate/index.vue +1 -1
  34. package/src/components/templates/Asd20DetailImageTemplate/index.vue +1 -1
  35. package/src/components/templates/Asd20DetailTemplate/index.vue +1 -1
  36. package/src/components/templates/Asd20DistrictHomeTemplate/index.vue +1 -1
  37. package/src/components/templates/Asd20DistrictVideoTemplate/index.vue +1 -1
  38. package/src/components/templates/Asd20GroupFeatureTemplate/index.vue +1 -1
  39. package/src/components/templates/Asd20LoginsTemplate/index.vue +1 -1
  40. package/src/components/templates/Asd20PeopleFeatureTemplate/index.vue +1 -1
  41. package/src/components/templates/Asd20ProfileTemplate/index.vue +1 -1
  42. package/src/components/templates/Asd20SalaryCalculatorTemplate/index.vue +1 -1
  43. package/src/components/templates/Asd20SchoolHomeTemplate/index.vue +1 -1
  44. package/src/components/templates/Asd20SchoolHomeVideoTemplate/index.vue +1 -1
  45. package/src/components/templates/Asd20SearchAppTemplate/index.vue +1 -1
  46. package/src/components/templates/Asd20WayfindingAccessibilityTemplate/index.vue +1 -1
  47. package/src/components/templates/Asd20WayfindingAlternateTemplate/index.vue +1 -1
  48. package/src/components/templates/Asd20WayfindingImageTemplate/index.vue +1 -1
  49. package/src/components/templates/Asd20WayfindingTemplate/index.vue +1 -1
  50. package/src/mixins/inputComponentMixin.js +6 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.0.10](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v1.0.9...ui-next-v1.0.10) (2026-03-26)
4
+
5
+ ## [1.0.9](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v1.0.8...ui-next-v1.0.9) (2026-03-23)
6
+
3
7
  ## [1.0.8](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v1.0.7...ui-next-v1.0.8) (2026-03-23)
4
8
 
5
9
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asd20/ui-next",
3
- "version": "1.0.8",
3
+ "version": "1.0.10",
4
4
  "private": false,
5
5
  "description": "ASD20 UI component library migration workspace.",
6
6
  "license": "MIT",
@@ -29,7 +29,6 @@ import { shouldOpenInNewWindow } from '../../../helpers/linkPolicy'
29
29
 
30
30
  export default {
31
31
  name: 'Asd20Button',
32
- emits: ['click', 'mouseup', 'keyup', 'focusin'],
33
32
  components: { Asd20Badge, Asd20Icon },
34
33
  props: {
35
34
  label: { type: String, default: '' },
@@ -54,6 +53,7 @@ export default {
54
53
  disabled: { type: Boolean, default: false },
55
54
  iconAngle: { type: Number, default: 0 },
56
55
  },
56
+ emits: ['click', 'mouseup', 'keyup', 'focusin'],
57
57
  computed: {
58
58
  classes() {
59
59
  return {
@@ -49,11 +49,11 @@ import { format } from 'date-fns'
49
49
 
50
50
  export default {
51
51
  name: 'Asd20CalendarEventButton',
52
- emits: ['click'],
53
52
  props: {
54
53
  event: { type: Object, default: null },
55
54
  large: { type: Boolean, default: false },
56
55
  },
56
+ emits: ['click'],
57
57
  computed: {
58
58
  classes() {
59
59
  const event = this.event || {}
@@ -8,13 +8,8 @@
8
8
  ]"
9
9
  >
10
10
  <input
11
- :id="id"
11
+ v-bind="checkboxAttrs"
12
12
  ref="checkbox"
13
- :checked="resolvedValue"
14
- :role="!checkbox ? 'switch' : null"
15
- :aria-checked="resolvedValue.toString()"
16
- v-bind="$attrs"
17
- type="checkbox"
18
13
  @change="toggle"
19
14
  />
20
15
  <label
@@ -64,6 +59,16 @@ export default {
64
59
  resolvedValue() {
65
60
  return typeof this.modelValue === 'boolean' ? this.modelValue : this.value
66
61
  },
62
+ checkboxAttrs() {
63
+ return {
64
+ ...this.$attrs,
65
+ id: this.id,
66
+ checked: this.resolvedValue,
67
+ role: !this.checkbox ? 'switch' : null,
68
+ 'aria-checked': this.resolvedValue.toString(),
69
+ type: 'checkbox',
70
+ }
71
+ },
67
72
  id() {
68
73
  if (this.$attrs.id) return this.$attrs.id
69
74
 
@@ -13,10 +13,7 @@
13
13
  />
14
14
  <div class="asd20-select-input__select-wrapper">
15
15
  <select
16
- v-bind="inputAttrs"
17
- :id="computedId"
18
- :value="resolvedValue"
19
- :aria-label="hideLabel ? label : ''"
16
+ v-bind="mergedInputAttrs"
20
17
  v-on="legacyListeners"
21
18
  @input="input"
22
19
  >
@@ -62,6 +59,15 @@ export default {
62
59
  name: 'Asd20SelectInput',
63
60
  components: { Asd20Icon },
64
61
  mixins: [inputComponentMixin],
62
+ computed: {
63
+ mergedInputAttrs() {
64
+ return this.mergeInputAttrs({
65
+ id: this.computedId,
66
+ value: this.resolvedValue,
67
+ 'aria-label': this.hideLabel ? this.label : '',
68
+ })
69
+ },
70
+ },
65
71
  }
66
72
  </script>
67
73
 
@@ -18,7 +18,6 @@
18
18
  import Asd20Button from '../../atoms/Asd20Button'
19
19
  export default {
20
20
  name: 'Asd20ActionMenuItem',
21
- emits: ['click', 'mouseup', 'keyup'],
22
21
  components: {
23
22
  Asd20Button,
24
23
  },
@@ -38,6 +37,7 @@ export default {
38
37
  active: { type: Boolean, default: false },
39
38
  // target: { type: [Boolean, String], default: false },
40
39
  },
40
+ emits: ['click', 'mouseup', 'keyup'],
41
41
  computed: {
42
42
  classes() {
43
43
  return [
@@ -260,7 +260,6 @@ import truncate from 'lodash/truncate'
260
260
 
261
261
  export default {
262
262
  name: 'Asd20Card',
263
- emits: ['click', 'keydown'],
264
263
 
265
264
  components: { Asd20Icon, Asd20Tag },
266
265
 
@@ -306,6 +305,7 @@ export default {
306
305
  dateLeft: { type: Boolean, default: false },
307
306
  cardType: { type: String, default: '' },
308
307
  },
308
+ emits: ['click', 'keydown'],
309
309
  computed: {
310
310
  truncatedDescription() {
311
311
  const strippedDescription = this.description
@@ -13,10 +13,7 @@
13
13
  />
14
14
 
15
15
  <input
16
- :id="computedId"
17
- type="file"
18
- v-bind="inputAttrs"
19
- :aria-label="hideLabel ? label : ''"
16
+ v-bind="mergedInputAttrs"
20
17
  v-on="legacyListeners"
21
18
  @input="input"
22
19
  />
@@ -46,6 +43,15 @@ export default {
46
43
  components: { Asd20Icon },
47
44
  mixins: [inputComponentMixin],
48
45
  inheritAttrs: false,
46
+ computed: {
47
+ mergedInputAttrs() {
48
+ return this.mergeInputAttrs({
49
+ id: this.computedId,
50
+ type: 'file',
51
+ 'aria-label': this.hideLabel ? this.label : '',
52
+ })
53
+ },
54
+ },
49
55
  methods: {
50
56
  input(event) {
51
57
  this.isDirty = true
@@ -120,7 +120,6 @@ import {
120
120
 
121
121
  export default {
122
122
  name: 'Asd20ListItem',
123
- emits: ['click'],
124
123
 
125
124
  components: {
126
125
  Asd20Icon,
@@ -152,6 +151,7 @@ export default {
152
151
  logoUrl: { type: String, default: '' },
153
152
  attribution: { type: Boolean, default: false },
154
153
  },
154
+ emits: ['click'],
155
155
 
156
156
  computed: {
157
157
  classes() {
@@ -41,7 +41,6 @@ import Asd20Icon from '../../atoms/Asd20Icon'
41
41
 
42
42
  export default {
43
43
  name: 'Asd20SearchField',
44
- emits: ['input', 'update:modelValue', 'click', 'focusin', 'keyup'],
45
44
  components: { Asd20Icon },
46
45
  props: {
47
46
  value: { type: String, default: '' },
@@ -51,6 +50,7 @@ export default {
51
50
  large: { type: Boolean, default: false },
52
51
  placeholder: { type: String, default: 'Search' },
53
52
  },
53
+ emits: ['input', 'update:modelValue', 'click', 'focusin', 'keyup'],
54
54
  computed: {
55
55
  classes() {
56
56
  return {
@@ -24,7 +24,6 @@
24
24
  <script>
25
25
  export default {
26
26
  name: 'Asd20SliderInput',
27
- emits: ['input', 'update:modelValue'],
28
27
 
29
28
  props: {
30
29
  label: { type: String, default: '' },
@@ -35,6 +34,7 @@ export default {
35
34
  max: { type: Number, default: 100 },
36
35
  step: { type: Number, default: 1 },
37
36
  },
37
+ emits: ['input', 'update:modelValue'],
38
38
 
39
39
  computed: {
40
40
  resolvedValue() {
@@ -69,7 +69,6 @@ import createLegacyDestroyHooks from '../../../utils/createLegacyDestroyHooks'
69
69
 
70
70
  export default {
71
71
  name: 'Asd20Swipe',
72
- emits: ['change', 'click', 'keyup'],
73
72
  props: {
74
73
  loop: {
75
74
  type: Boolean,
@@ -104,6 +103,7 @@ export default {
104
103
  default: () => [],
105
104
  },
106
105
  },
106
+ emits: ['change', 'click', 'keyup'],
107
107
  data() {
108
108
  return {
109
109
  width: 0,
@@ -34,7 +34,6 @@ import Asd20Badge from '../../../components/atoms/Asd20Badge'
34
34
 
35
35
  export default {
36
36
  name: 'Asd20Tab',
37
- emits: ['click'],
38
37
 
39
38
  components: {
40
39
  Asd20Badge,
@@ -49,6 +48,7 @@ export default {
49
48
  active: { type: Boolean, default: false },
50
49
  to: { type: [String, Object], default: '' },
51
50
  },
51
+ emits: ['click'],
52
52
 
53
53
  computed: {
54
54
  component() {
@@ -17,12 +17,7 @@
17
17
  />
18
18
 
19
19
  <textarea
20
- :id="computedId"
21
- rows="10"
22
- cols="100"
23
- :value="resolvedValue"
24
- v-bind="inputAttrs"
25
- :aria-label="hideLabel ? label : ''"
20
+ v-bind="mergedInputAttrs"
26
21
  v-on="legacyListeners"
27
22
  @input="input"
28
23
  />
@@ -56,6 +51,17 @@ export default {
56
51
  value: { type: String, default: '' },
57
52
  label: { type: String, default: '' },
58
53
  },
54
+ computed: {
55
+ mergedInputAttrs() {
56
+ return this.mergeInputAttrs({
57
+ id: this.computedId,
58
+ rows: '10',
59
+ cols: '100',
60
+ value: this.resolvedValue,
61
+ 'aria-label': this.hideLabel ? this.label : '',
62
+ })
63
+ },
64
+ },
59
65
  }
60
66
  </script>
61
67
 
@@ -13,10 +13,7 @@
13
13
  />
14
14
 
15
15
  <input
16
- :id="computedId"
17
- :value="resolvedValue"
18
- v-bind="inputAttrs"
19
- :aria-label="hideLabel ? label : ''"
16
+ v-bind="mergedInputAttrs"
20
17
  v-on="legacyListeners"
21
18
  @input="input"
22
19
  />
@@ -46,6 +43,15 @@ export default {
46
43
  components: { Asd20Icon },
47
44
  mixins: [inputComponentMixin],
48
45
  inheritAttrs: false,
46
+ computed: {
47
+ mergedInputAttrs() {
48
+ return this.mergeInputAttrs({
49
+ id: this.computedId,
50
+ value: this.resolvedValue,
51
+ 'aria-label': this.hideLabel ? this.label : '',
52
+ })
53
+ },
54
+ },
49
55
  }
50
56
  </script>
51
57
 
@@ -71,12 +71,12 @@
71
71
  />
72
72
  <asd20-button
73
73
  label="Submit Issue"
74
- :disabled="!isValid || sending"
75
- horizontal
76
- centered
77
- bordered
78
- @click="sendAccessibilityIssue"
79
- />
74
+ :disabled="!isValid || sending"
75
+ horizontal
76
+ centered
77
+ bordered
78
+ @click="sendAccessibilityIssue"
79
+ />
80
80
  <asd20-spinner
81
81
  v-if="sending"
82
82
  size="sm"
@@ -90,13 +90,13 @@ import organizationSubtitle from '../../../helpers/organizationSubtitle'
90
90
 
91
91
  export default {
92
92
  name: 'Asd20CampusHeader',
93
- mixins: [responsiveBreakpointMixin],
94
93
  components: {
95
94
  Asd20Button,
96
95
  Asd20DistrictLogo,
97
96
  Asd20OrganizationPicker,
98
97
  },
99
98
  directives: { scrollTrack },
99
+ mixins: [responsiveBreakpointMixin],
100
100
  props: {
101
101
  organization: { type: Object, default: null },
102
102
  organizationOptions: { type: Array, default: () => [] },
@@ -221,9 +221,9 @@ export default {
221
221
  padding: space(1);
222
222
  font-size: 1rem;
223
223
 
224
- * {
225
- align-items: center;
226
- }
224
+ // * {
225
+ // align-items: center;
226
+ // }
227
227
  }
228
228
 
229
229
  .description {
@@ -48,7 +48,7 @@
48
48
  v-if="languageCode"
49
49
  reversed
50
50
  :language-code="languageCode"
51
- v-on="$listeners"
51
+ @update:languageCode="$emit('update:languageCode', $event)"
52
52
  />
53
53
  <Asd20Share></Asd20Share>
54
54
  <asd20-button
@@ -199,7 +199,6 @@ import truncate from 'lodash/truncate'
199
199
 
200
200
  export default {
201
201
  name: 'Asd20ImageHeader',
202
- mixins: [responsiveBreakpointMixin],
203
202
  components: {
204
203
  Asd20Button,
205
204
  // Asd20DistrictLogo,
@@ -211,6 +210,7 @@ export default {
211
210
  Asd20FormattedDate,
212
211
  },
213
212
  directives: { scrollTrack },
213
+ mixins: [responsiveBreakpointMixin],
214
214
  props: {
215
215
  heading: { type: String, default: '' },
216
216
  lead: { type: String, default: '' },
@@ -18,14 +18,8 @@
18
18
  <asd20-notification
19
19
  v-for="(notification, notificationIndex) of notificationsFromIndex"
20
20
  :key="notification.key || notification.title"
21
- class="notification"
22
- v-bind="notification"
23
- :notification-style="groupType"
24
- :aria-hidden="notificationIndex ? true : undefined"
25
- :focus-disabled="notificationIndex ? true : false"
26
- @dismiss="$emit('dismiss', notification)"
27
- >
28
- </asd20-notification>
21
+ v-bind="notificationBindings(notification, notificationIndex)"
22
+ />
29
23
  </transition-group>
30
24
  </transition>
31
25
 
@@ -154,6 +148,16 @@ export default {
154
148
  this.initNotifications(this.notifications)
155
149
  },
156
150
  methods: {
151
+ notificationBindings(notification, notificationIndex) {
152
+ return {
153
+ ...notification,
154
+ class: ['notification', notification.class].filter(Boolean),
155
+ notificationStyle: this.groupType,
156
+ ariaHidden: notificationIndex ? true : undefined,
157
+ focusDisabled: notificationIndex ? true : false,
158
+ onDismiss: () => this.$emit('dismiss', notification),
159
+ }
160
+ },
157
161
  initNotifications(incomingNotifications) {
158
162
  // filter out old notifications that are no longer present in incoming notifications
159
163
  this.notificationsFromIndex = this.notificationsFromIndex.filter(n =>
@@ -47,7 +47,7 @@
47
47
  v-if="languageCode"
48
48
  reversed
49
49
  :language-code="languageCode"
50
- v-on="$listeners"
50
+ @update:languageCode="$emit('update:languageCode', $event)"
51
51
  />
52
52
  <Asd20Share></Asd20Share>
53
53
  <asd20-button
@@ -191,7 +191,6 @@ import truncate from 'lodash/truncate'
191
191
 
192
192
  export default {
193
193
  name: 'Asd20PageHeader',
194
- mixins: [responsiveBreakpointMixin],
195
194
  components: {
196
195
  Asd20Button,
197
196
  // Asd20DistrictLogo,
@@ -203,6 +202,7 @@ export default {
203
202
  Asd20FormattedDate,
204
203
  },
205
204
  directives: { scrollTrack },
205
+ mixins: [responsiveBreakpointMixin],
206
206
  props: {
207
207
  heading: { type: String, default: '' },
208
208
  lead: { type: String, default: '' },
@@ -172,7 +172,6 @@ import MqLayout from '../../utils/MqLayout'
172
172
 
173
173
  export default {
174
174
  name: 'Asd20AppTemplate',
175
- mixins: [responsiveBreakpointMixin],
176
175
  components: {
177
176
  Asd20AppHeader,
178
177
  Asd20Button,
@@ -184,6 +183,7 @@ export default {
184
183
  Asd20NotificationGroup,
185
184
  MqLayout,
186
185
  },
186
+ mixins: [responsiveBreakpointMixin],
187
187
 
188
188
  props: {
189
189
  title: { type: String, default: '' },
@@ -35,7 +35,7 @@
35
35
  :organization-options="organizationOptions"
36
36
  :language-code="languageCode"
37
37
  :breadcrumb-links="breadcrumbLinks"
38
- v-on="$listeners"
38
+ @update:languageCode="$emit('update:languageCode', $event)"
39
39
  >
40
40
  <!-- Floating Notifications -->
41
41
  <template #top>
@@ -35,7 +35,7 @@
35
35
  :organization-options="organizationOptions"
36
36
  :language-code="languageCode"
37
37
  :breadcrumb-links="breadcrumbLinks"
38
- v-on="$listeners"
38
+ @update:languageCode="$emit('update:languageCode', $event)"
39
39
  >
40
40
  <!-- Floating Notifications -->
41
41
  <template #top>
@@ -34,7 +34,7 @@
34
34
  :organization-options="organizationOptions"
35
35
  :language-code="languageCode"
36
36
  :breadcrumb-links="breadcrumbLinks"
37
- v-on="$listeners"
37
+ @update:languageCode="$emit('update:languageCode', $event)"
38
38
  >
39
39
  <!-- Floating Notifications -->
40
40
  <template #top>
@@ -38,7 +38,7 @@
38
38
  :publish-date-time="parentPage ? '' : publishDateTime"
39
39
  :modified-date-time="parentPage ? '' : modifiedDateTime"
40
40
  :categories="parentPage ? [] : messageCategories"
41
- v-on="$listeners"
41
+ @update:languageCode="$emit('update:languageCode', $event)"
42
42
  >
43
43
  <!-- Floating Notifications -->
44
44
  <template #top>
@@ -37,7 +37,7 @@
37
37
  :publish-date-time="publishDateTime"
38
38
  :categories="messageCategories"
39
39
  :language-code="languageCode"
40
- v-on="$listeners"
40
+ @update:languageCode="$emit('update:languageCode', $event)"
41
41
  >
42
42
  <!-- Floating Notifications -->
43
43
  <template #top>
@@ -23,7 +23,7 @@
23
23
  :breadcrumb-links="breadcrumbLinks"
24
24
  :publish-date-time="parentPage ? '' : publishDateTime"
25
25
  :categories="parentPage ? [] : messageCategories"
26
- v-on="$listeners"
26
+ @update:languageCode="$emit('update:languageCode', $event)"
27
27
  >
28
28
  <!-- Floating Notifications -->
29
29
  <template #top>
@@ -23,7 +23,7 @@
23
23
  :language-code="languageCode"
24
24
  :images="firstMessage.images"
25
25
  :breadcrumb-links="breadcrumbLinks"
26
- v-on="$listeners"
26
+ @update:languageCode="$emit('update:languageCode', $event)"
27
27
  >
28
28
  <template #top>
29
29
  <client-only>
@@ -35,7 +35,7 @@
35
35
  :organization-options="organizationOptions"
36
36
  :language-code="languageCode"
37
37
  :breadcrumb-links="breadcrumbLinks"
38
- v-on="$listeners"
38
+ @update:languageCode="$emit('update:languageCode', $event)"
39
39
  >
40
40
  <!-- Floating Notifications -->
41
41
  <template #top>
@@ -38,7 +38,7 @@
38
38
  :publish-date-time="parentPage ? '' : publishDateTime"
39
39
  :modified-date-time="parentPage ? '' : modifiedDateTime"
40
40
  :categories="parentPage ? [] : messageCategories"
41
- v-on="$listeners"
41
+ @update:languageCode="$emit('update:languageCode', $event)"
42
42
  >
43
43
  <!-- Floating Notifications -->
44
44
  <template #top>
@@ -38,7 +38,7 @@
38
38
  :publish-date-time="parentPage ? '' : publishDateTime"
39
39
  :modified-date-time="parentPage ? '' : modifiedDateTime"
40
40
  :categories="parentPage ? [] : messageCategories"
41
- v-on="$listeners"
41
+ @update:languageCode="$emit('update:languageCode', $event)"
42
42
  >
43
43
  <!-- Floating Notifications -->
44
44
  <template #top>
@@ -38,7 +38,7 @@
38
38
  :publish-date-time="parentPage ? '' : publishDateTime"
39
39
  :modified-date-time="parentPage ? '' : modifiedDateTime"
40
40
  :categories="parentPage ? [] : messageCategories"
41
- v-on="$listeners"
41
+ @update:languageCode="$emit('update:languageCode', $event)"
42
42
  >
43
43
  <!-- Floating Notifications -->
44
44
  <template #top>
@@ -38,7 +38,7 @@
38
38
  :publish-date-time="parentPage ? '' : publishDateTime"
39
39
  :modified-date-time="parentPage ? '' : modifiedDateTime"
40
40
  :categories="parentPage ? [] : messageCategories"
41
- v-on="$listeners"
41
+ @update:languageCode="$emit('update:languageCode', $event)"
42
42
  >
43
43
  <!-- Floating Notifications -->
44
44
  <template #top>
@@ -72,7 +72,7 @@
72
72
  reversed
73
73
  no-label
74
74
  :language-code="languageCode"
75
- v-on="$listeners"
75
+ @update:languageCode="$emit('update:languageCode', $event)"
76
76
  />
77
77
  </client-only>
78
78
 
@@ -88,7 +88,7 @@
88
88
  reversed
89
89
  no-label
90
90
  :language-code="languageCode"
91
- v-on="$listeners"
91
+ @update:languageCode="$emit('update:languageCode', $event)"
92
92
  />
93
93
  </client-only>
94
94
 
@@ -36,7 +36,7 @@
36
36
  :breadcrumb-links="breadcrumbLinks"
37
37
  :publish-date-time="parentPage ? '' : publishDateTime"
38
38
  :categories="parentPage ? [] : messageCategories"
39
- v-on="$listeners"
39
+ @update:languageCode="$emit('update:languageCode', $event)"
40
40
  >
41
41
  <!-- Floating Notifications -->
42
42
  <template #top>
@@ -35,7 +35,7 @@
35
35
  :organization-options="organizationOptions"
36
36
  :breadcrumb-links="breadcrumbLinks"
37
37
  :language-code="languageCode"
38
- v-on="$listeners"
38
+ @update:languageCode="$emit('update:languageCode', $event)"
39
39
  >
40
40
  <!-- Floating Notifications -->
41
41
  <client-only>
@@ -35,7 +35,7 @@
35
35
  :organization-options="organizationOptions"
36
36
  :language-code="languageCode"
37
37
  :breadcrumb-links="breadcrumbLinks"
38
- v-on="$listeners"
38
+ @update:languageCode="$emit('update:languageCode', $event)"
39
39
  >
40
40
  <!-- Floating Notifications -->
41
41
  <template #top>
@@ -52,7 +52,7 @@
52
52
  :breadcrumb-links="breadcrumbLinks"
53
53
  :publish-date-time="parentPage ? '' : publishDateTime"
54
54
  :categories="parentPage ? [] : messageCategories"
55
- v-on="$listeners"
55
+ @update:languageCode="$emit('update:languageCode', $event)"
56
56
  >
57
57
  <!-- Floating Notifications -->
58
58
  <template #top>
@@ -37,7 +37,7 @@
37
37
  :breadcrumb-links="breadcrumbLinks"
38
38
  :publish-date-time="parentPage ? '' : publishDateTime"
39
39
  :categories="parentPage ? [] : messageCategories"
40
- v-on="$listeners"
40
+ @update:languageCode="$emit('update:languageCode', $event)"
41
41
  >
42
42
  <!-- Floating Notifications -->
43
43
  <template #top>
@@ -114,7 +114,7 @@
114
114
  reversed
115
115
  no-label
116
116
  :language-code="languageCode"
117
- v-on="$listeners"
117
+ @update:languageCode="$emit('update:languageCode', $event)"
118
118
  />
119
119
  </client-only>
120
120
  <!-- Floating Notifications -->
@@ -115,7 +115,7 @@
115
115
  reversed
116
116
  no-label
117
117
  :language-code="languageCode"
118
- v-on="$listeners"
118
+ @update:languageCode="$emit('update:languageCode', $event)"
119
119
  />
120
120
  </client-only>
121
121
 
@@ -112,7 +112,6 @@ import MqLayout from '../../utils/MqLayout'
112
112
 
113
113
  export default {
114
114
  name: 'Asd20SearchAppTemplate',
115
- mixins: [responsiveBreakpointMixin],
116
115
  components: {
117
116
  Asd20Viewport,
118
117
  Asd20Modal,
@@ -122,6 +121,7 @@ export default {
122
121
  Asd20Button,
123
122
  MqLayout,
124
123
  },
124
+ mixins: [responsiveBreakpointMixin],
125
125
 
126
126
  props: {
127
127
  resultCount: { type: Number, default: 0 },
@@ -35,7 +35,7 @@
35
35
  :organization-options="organizationOptions"
36
36
  :language-code="languageCode"
37
37
  :breadcrumb-links="breadcrumbLinks"
38
- v-on="$listeners"
38
+ @update:languageCode="$emit('update:languageCode', $event)"
39
39
  >
40
40
  <!-- Floating Notifications -->
41
41
  <template #top>
@@ -35,7 +35,7 @@
35
35
  :organization-options="organizationOptions"
36
36
  :language-code="languageCode"
37
37
  :breadcrumb-links="breadcrumbLinks"
38
- v-on="$listeners"
38
+ @update:languageCode="$emit('update:languageCode', $event)"
39
39
  >
40
40
  <!-- Floating Notifications -->
41
41
  <template #top>
@@ -35,7 +35,7 @@
35
35
  :organization-options="organizationOptions"
36
36
  :language-code="languageCode"
37
37
  :breadcrumb-links="breadcrumbLinks"
38
- v-on="$listeners"
38
+ @update:languageCode="$emit('update:languageCode', $event)"
39
39
  >
40
40
  <!-- Floating Notifications -->
41
41
  <template #top>
@@ -35,7 +35,7 @@
35
35
  :organization-options="organizationOptions"
36
36
  :language-code="languageCode"
37
37
  :breadcrumb-links="breadcrumbLinks"
38
- v-on="$listeners"
38
+ @update:languageCode="$emit('update:languageCode', $event)"
39
39
  >
40
40
  <!-- Floating Notifications -->
41
41
  <template #top>
@@ -143,6 +143,12 @@ export default {
143
143
  },
144
144
  },
145
145
  methods: {
146
+ mergeInputAttrs(overrides = {}) {
147
+ return {
148
+ ...this.inputAttrs,
149
+ ...overrides,
150
+ }
151
+ },
146
152
  validate(value) {
147
153
  // Clear validation errors
148
154
  this.validationErrors = []