@asd20/ui 3.2.717 → 3.2.719

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 (32) hide show
  1. package/package-lock.json +1 -1
  2. package/package.json +1 -1
  3. package/src/components/atoms/Asd20Icon/index.vue +2 -0
  4. package/src/components/molecules/Asd20Notification/index.vue +422 -0
  5. package/src/components/organisms/Asd20NotificationGroup/index.vue +658 -0
  6. package/src/components/organisms/Asd20OrganizationPicker/index.vue +1 -1
  7. package/src/components/organisms/Asd20SiteSearch/index.vue +1 -1
  8. package/src/components/templates/Asd20AppTemplate/index.vue +1 -1
  9. package/src/components/templates/Asd20ArticleDigestTemplate/index.vue +1 -1
  10. package/src/components/templates/Asd20ArticleListTemplate/index.vue +1 -1
  11. package/src/components/templates/Asd20ArticleTemplate/index.vue +1 -1
  12. package/src/components/templates/Asd20BasePageTemplate/index.vue +1 -1
  13. package/src/components/templates/Asd20CampusDetailTemplate/index.vue +1 -1
  14. package/src/components/templates/Asd20CampusTemplate/index.vue +1 -1
  15. package/src/components/templates/Asd20ClubsTemplate/index.vue +1 -1
  16. package/src/components/templates/Asd20DetailAlternateTemplate/index.vue +1 -1
  17. package/src/components/templates/Asd20DetailImageFullTemplate/index.vue +1 -1
  18. package/src/components/templates/Asd20DetailImageTemplate/index.vue +1 -1
  19. package/src/components/templates/Asd20DetailTemplate/index.vue +1 -1
  20. package/src/components/templates/Asd20DistrictHomeTemplate/index.vue +1 -1
  21. package/src/components/templates/Asd20DistrictVideoTemplate/index.vue +1 -1
  22. package/src/components/templates/Asd20FileListPageTemplate/index.vue +1 -1
  23. package/src/components/templates/Asd20GroupFeatureTemplate/index.vue +1 -1
  24. package/src/components/templates/Asd20LoginsTemplate/index.vue +1 -1
  25. package/src/components/templates/Asd20PeopleFeatureTemplate/index.vue +1 -1
  26. package/src/components/templates/Asd20ProfileTemplate/index.vue +1 -1
  27. package/src/components/templates/Asd20SalaryCalculatorTemplate/index.vue +1 -1
  28. package/src/components/templates/Asd20SchoolHomeTemplate/index.vue +1 -1
  29. package/src/components/templates/Asd20SchoolHomeVideoTemplate/index.vue +2 -2
  30. package/src/components/templates/Asd20WayfindingAlternateTemplate/index.vue +1 -1
  31. package/src/components/templates/Asd20WayfindingImageTemplate/index.vue +1 -1
  32. package/src/components/templates/Asd20WayfindingTemplate/index.vue +1 -1
@@ -0,0 +1,658 @@
1
+ <template>
2
+ <div
3
+ role="region"
4
+ aria-label="Notification"
5
+ :class="classes"
6
+ v-show="totalDismissedNotifications || notifications.length > 0"
7
+ >
8
+ <!-- v-show is SSR compatible -->
9
+ <transition name="cards">
10
+ <transition-group
11
+ v-if="notificationsFromIndex.length > 0"
12
+ class="notifications"
13
+ name="notifications"
14
+ :enter-active-class="enterActiveClass"
15
+ :leave-active-class="leaveActiveClass"
16
+ tag="div"
17
+ >
18
+ <asd20-notification
19
+ class="notification"
20
+ v-for="(notification, index) of notificationsFromIndex"
21
+ :key="notification.key || notification.title"
22
+ v-bind="notification"
23
+ :notificationStyle="groupType"
24
+ :aria-hidden="index ? true : undefined"
25
+ :focus-disabled="index ? true : false"
26
+ @dismiss="$emit('dismiss', notification)"
27
+ >
28
+ </asd20-notification>
29
+ </transition-group>
30
+ </transition>
31
+
32
+ <button
33
+ v-if="groupType === 'floating'"
34
+ class="bell"
35
+ :class="{ open: open }"
36
+ :title="
37
+ totalDismissedNotifications
38
+ ? 'Dismiss all notifications'
39
+ : 'Show all notifications'
40
+ "
41
+ @click="$emit('toggle-all')">
42
+ <svg
43
+ xmlns="http://www.w3.org/2000/svg"
44
+ viewBox="0 0 32 32"
45
+ aria-hidden="true"
46
+ role
47
+ >
48
+ <g>
49
+ <path
50
+ d="M16 7a6 6 0 0 1 6 6v7H10v-7a6 6 0 0 1 6-6z"
51
+ class="fill"
52
+ ></path>
53
+ <path
54
+ fill="currentColor"
55
+ d="M16 4a1 1 0 0 1 1 1v1l.75.19A7 7 0 0 1 23 13v9h1v2H8v-2h1v-9a7 7 0 0 1 5.25-6.77L15 6V5a1 1 0 0 1 1-1m0-1a2 2 0 0 0-2 2v.26A8 8 0 0 0 8 13v8H7v4h18v-4h-1v-8a8 8 0 0 0-6-7.74V5a2 2 0 0 0-2-2z"
56
+ class="line"
57
+ ></path>
58
+ <path
59
+ fill="currentColor"
60
+ d="M8 21h16v1H8zM18 24a4 4 0 0 1-8 0z"
61
+ class="line"
62
+ ></path>
63
+ </g>
64
+ </svg>
65
+ <span aria-hidden="true">{{ totalDismissedNotifications }}</span>
66
+ </button>
67
+
68
+ <div
69
+ v-if="showControls && notificationsFromIndex.length > 1"
70
+ class="pagination"
71
+ >
72
+ <button :title="prevTitle" @click="previous">
73
+ <svg
74
+ style="width: 16px"
75
+ viewBox="0 0 48 48"
76
+ xmlns="http://www.w3.org/2000/svg"
77
+ >
78
+ <path
79
+ d="M30.83 32.67l-9.17-9.17 9.17-9.17-2.83-2.83-12 12 12 12z"
80
+ ></path>
81
+ <path d="M0-.5h48v48h-48z" fill="none"></path>
82
+ </svg>
83
+ </button>
84
+ <span>{{ index + 1 }} of {{ notificationsFromIndex.length }}</span>
85
+ <button :title="nextTitle" @click="next">
86
+ <svg
87
+ style="width: 16px"
88
+ viewBox="0 0 48 48"
89
+ xmlns="http://www.w3.org/2000/svg"
90
+ >
91
+ <path
92
+ d="M17.17 32.92l9.17-9.17-9.17-9.17 2.83-2.83 12 12-12 12z"
93
+ ></path>
94
+ <path d="M0-.25h48v48h-48z" fill="none"></path>
95
+ </svg>
96
+ </button>
97
+ </div>
98
+ </div>
99
+ </template>
100
+
101
+ <script>
102
+ import Asd20Notification from '../../molecules/Asd20Notification'
103
+
104
+ export default {
105
+ name: 'asd20-notification-group',
106
+
107
+ components: { Asd20Notification },
108
+
109
+ props: {
110
+ groupType: { type: String, default: 'default' },
111
+ position: { type: String, default: 'static' },
112
+ notifications: { type: Array, default: () => [] },
113
+ totalDismissedNotifications: { type: Number, default: 0 },
114
+ },
115
+
116
+ data() {
117
+ return {
118
+ index: 0,
119
+ open: true,
120
+ notificationsFromIndex: [],
121
+ enterActiveClass: 'fade-in',
122
+ leaveActiveClass: 'fade-out',
123
+ };
124
+ },
125
+
126
+ computed: {
127
+ classes() {
128
+ return [
129
+ 'notification-group',
130
+ `notification-group--${this.groupType}`,
131
+ `notification-group--${this.position}`,
132
+ ]
133
+ },
134
+ showControls() {
135
+ return this.notifications.length > 1;
136
+ },
137
+ nextTitle () {
138
+ return `Go to notification ${
139
+ this.index + 1 > this.notificationsFromIndex.length - 1
140
+ ? 1
141
+ : this.index + 2
142
+ } of ${this.notificationsFromIndex.length}`
143
+ },
144
+ prevTitle () {
145
+ return `Go to notification ${
146
+ this.index - 1 < 0 ? this.notificationsFromIndex.length : this.index
147
+ } of ${this.notificationsFromIndex.length}`
148
+ }
149
+ },
150
+ created() {
151
+ this.initNotifications(this.notifications);
152
+ },
153
+
154
+ watch: {
155
+ notifications: function(value) {
156
+ this.initNotifications(value);
157
+ }
158
+ },
159
+ methods: {
160
+ initNotifications(incomingNotifications) {
161
+ // filter out old notifications that are no longer present in incoming notifications
162
+ this.notificationsFromIndex = this.notificationsFromIndex.filter(n =>
163
+ incomingNotifications.find(n2 => n2.id === n.id)
164
+ )
165
+ // take care of notifications that did not previously exist and give them a key
166
+ const newNotifications = incomingNotifications
167
+ .filter(n => !this.notificationsFromIndex.find(n2 => n2.id === n.id))
168
+ .map(newN => ({
169
+ ...newN,
170
+ key: Math.random().toString(36).substr(2, 9),
171
+ ariaHidden: true
172
+ }))
173
+ // take care of notifications that match and keep their existing key value to prevent animations from occurring
174
+ for (const [oldIndex, oldNotification] of Object.entries(
175
+ this.notificationsFromIndex
176
+ )) {
177
+ const matchingUpdatedNotification = (incomingNotifications || []).find(n => n.id === oldNotification.id)
178
+ if(matchingUpdatedNotification) {
179
+ this.notificationsFromIndex[oldIndex] = {
180
+ ...matchingUpdatedNotification,
181
+ key: this.notificationsFromIndex[oldIndex].key
182
+ }
183
+ }
184
+ }
185
+ // put new notifications at the beginning of the array
186
+ this.notificationsFromIndex = newNotifications.concat(this.notificationsFromIndex)
187
+ // if(this.index > this.notificationsFromIndex.length -1 )
188
+ if (
189
+ newNotifications.length > 0 ||
190
+ this.notificationsFromIndex.length > incomingNotifications.length ||
191
+ this.index > this.notificationsFromIndex.length - 1
192
+ ) {
193
+ this.index = 0
194
+ }
195
+ },
196
+ next() {
197
+ const newIndex =
198
+ this.index < this.notifications.length - 1 ? this.index + 1 : 0;
199
+
200
+ const topItem = this.notificationsFromIndex[0];
201
+
202
+ topItem.key = Math.random()
203
+ .toString(36)
204
+ .substr(2, 9);
205
+
206
+ if (this.groupType === 'banner') {
207
+ this.enterActiveClass = ''
208
+ this.leaveActiveClass = 'slide-up'
209
+ } else {
210
+ this.enterActiveClass = ''
211
+ this.leaveActiveClass = 'stack-out'
212
+ }
213
+
214
+ // Remove top item
215
+ this.notificationsFromIndex.splice(0, 1);
216
+
217
+ // Add top item to bottom
218
+ this.notificationsFromIndex.push(topItem);
219
+
220
+ // Update the index
221
+ this.index = newIndex;
222
+ },
223
+ previous() {
224
+ if (this.groupType === 'banner') {
225
+ this.enterActiveClass = 'slide-down'
226
+ this.leaveActiveClass = 'slide-up'
227
+ } else {
228
+ this.enterActiveClass = 'stack-in'
229
+ this.leaveActiveClass = 'fade-out'
230
+ }
231
+
232
+ const notifications = this.notifications.map(n => ({
233
+ ...n,
234
+ key: this.notificationsFromIndex.find(n2 => n2.title === n.title).key
235
+ }));
236
+ const replacementIndex =
237
+ this.index > 0 ? this.index - 1 : this.notifications.length - 1;
238
+
239
+ const newItem = {
240
+ ...notifications[replacementIndex],
241
+ key: Math.random()
242
+ .toString(36)
243
+ .substr(2, 9)
244
+ }
245
+
246
+ // Remove old item
247
+ notifications.splice(replacementIndex, 1);
248
+
249
+ // Add top item to top
250
+ notifications.unshift(newItem);
251
+
252
+ this.notificationsFromIndex = notifications;
253
+
254
+ // Update the index
255
+ this.index = replacementIndex;
256
+ }
257
+ }
258
+ };
259
+ </script>
260
+
261
+ <style lang="scss">
262
+ // @import '../../../design/_variables.scss';
263
+ // @import '../../../design/_mixins.scss';
264
+ // @import '../../../design/_typography.scss';
265
+ // @import '../../../design/_template.scss';
266
+ // @import '../../../design/_print.scss';
267
+ // @import '../../../design/tokens.css';
268
+
269
+ .notification-group {
270
+ position: relative;
271
+ display: flex;
272
+ flex-direction: column;
273
+
274
+ .bell {
275
+ display: none;
276
+ }
277
+
278
+ &--banner {
279
+ width: 100%;
280
+ }
281
+
282
+ &--floating {
283
+ z-index: 1000;
284
+ flex-direction: row;
285
+ margin-right: 0.25rem;
286
+ align-items: flex-start;
287
+ justify-content: flex-end;
288
+ }
289
+
290
+ &--floating .bell {
291
+ order: 2;
292
+ position: relative;
293
+ appearance: none;
294
+ border: none;
295
+ padding: none;
296
+ width: 2rem;
297
+ height: 2rem;
298
+ display: flex;
299
+ justify-content: center;
300
+ align-items: center;
301
+ background: white;
302
+ color: black;
303
+ font-size: 0.375rem;
304
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.0625);
305
+ border-radius: 50%;
306
+ z-index: 99;
307
+ cursor: pointer;
308
+
309
+ &.open {
310
+ box-shadow: none;
311
+ }
312
+
313
+ svg {
314
+ width: 100%;
315
+ height: 100%;
316
+ color: hsl(0, 0%, 0%);
317
+ fill: #80B3C0;
318
+ }
319
+
320
+ span {
321
+ position: absolute;
322
+ top: -0.5em;
323
+ right: -0.5em;
324
+ width: 1rem;
325
+ height: 1rem;
326
+ display: flex;
327
+ justify-content: center;
328
+ align-items: center;
329
+ background: #80B3C0;
330
+ color: white;
331
+ font-size: 0.5rem;
332
+ border-radius: 50%;
333
+ }
334
+ }
335
+
336
+ .pagination {
337
+ display: flex;
338
+ justify-content: flex-end;
339
+ align-items: center;
340
+ font-size: 0.75rem;
341
+ z-index: 15;
342
+
343
+ font-family: sans-serif;
344
+
345
+ button {
346
+ appearance: none;
347
+ background: transparent;
348
+ padding: 0;
349
+ border: none;
350
+ font-size: 1.5rem;
351
+ font-weight: bold;
352
+ line-height: 0;
353
+ width: 1rem;
354
+ height: 1rem;
355
+ display: flex;
356
+ justify-content: center;
357
+ align-items: center;
358
+ cursor: pointer;
359
+ outline: none;
360
+ border-radius: 100%;
361
+ background: rgba(0,0,0, 0.125);
362
+ &:focus {
363
+ box-shadow: 0 0 0 3px white, 0 0 10px 0 #477e88;
364
+ outline: 3px solid #477e88;
365
+ outline-offset: 7px;
366
+ }
367
+ }
368
+ span {
369
+ margin: 0 0.25rem;
370
+ }
371
+ }
372
+
373
+ &--floating .pagination {
374
+ margin-right: 0.5rem;
375
+ background: rgba(255,255,255,0.85);
376
+ align-self: stretch;
377
+ margin-right: -2rem;
378
+ // z-index: -1;
379
+ z-index: 8;
380
+ padding-right: 2rem;
381
+ padding-left: 0.5rem;
382
+ border-radius: 1rem;
383
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.0625);
384
+ }
385
+
386
+ &--floating .notifications {
387
+ flex-direction: column;
388
+ position: absolute;
389
+ top: calc(100% + 0.5rem);
390
+ right: 0;
391
+ left: auto;
392
+ display: flex;
393
+ }
394
+ &--floating .notification {
395
+ transition: all 0.5s;
396
+ top: 0;
397
+ transform: translateY(0) scale(1);
398
+ min-width: 300px;
399
+ &:first-child {
400
+ z-index: 9;
401
+ .asd20-notification__content, g {
402
+ transition: all 0.5s;
403
+ opacity: 1;
404
+ align-self: initial !important;
405
+ }
406
+ }
407
+
408
+ @for $i from 2 through 10 {
409
+ &:nth-child(#{$i}) {
410
+ transition: all 0.5s;
411
+ position: absolute;
412
+ z-index: #{10 - $i};
413
+ bottom: -0.125rem;
414
+ // height: 87%;
415
+ overflow-y: hidden;
416
+ transform: translateY(#{0.75 * ($i - 1)}rem)
417
+ scale(#{1 - (($i - 1) * 0.05)});
418
+ .asd20-notification__content, g {
419
+ transition: all 0.5s;
420
+ opacity: 0.5;
421
+ }
422
+ }
423
+ }
424
+ }
425
+
426
+ &--floating.notification-group--bottom-left .notifications {
427
+ top: auto;
428
+ bottom: calc(100% + 0.5rem);
429
+ left: 0;
430
+ right: auto;
431
+ }
432
+
433
+ &--floating.notification-group--bottom-right .notifications {
434
+ top: auto;
435
+ bottom: calc(100% + 0.5rem);
436
+ }
437
+
438
+ &--floating.notification-group--top-left .notifications {
439
+ left: 0;
440
+ right: auto;
441
+ }
442
+
443
+ &--bottom-right {
444
+ position: fixed;
445
+ bottom: 0.5rem;
446
+ right: 0.5rem;
447
+ }
448
+
449
+ &--top-right {
450
+ position: fixed;
451
+ top: 0.5rem;
452
+ right: 0.5rem;
453
+ }
454
+
455
+ &--bottom-left {
456
+ position: fixed;
457
+ bottom: 0.5rem;
458
+ left: 0.5rem;
459
+ }
460
+
461
+ &--top-left {
462
+ position: fixed;
463
+ top: 0.5rem;
464
+ left: 0.5rem;
465
+ }
466
+
467
+ &--banner .pagination {
468
+ position: absolute;
469
+ z-index: 100;
470
+ right: 0.5rem;
471
+ bottom: 0.5rem;
472
+ color: white;
473
+ button {
474
+ fill: white;
475
+ }
476
+ }
477
+ &--banner .notifications {
478
+ // flex-direction: column;
479
+ // position: absolute;
480
+ // top: calc(100% + 0.5rem);
481
+ // right: 0;
482
+ // left: auto;
483
+ // width: 100%;
484
+ // display: flex;
485
+ }
486
+ &--banner .notification {
487
+ transition: all 0.25s;
488
+ top: 0;
489
+ // width: 100%;
490
+ transform: translateY(0);
491
+ opacity: 1;
492
+ &:first-child {
493
+ z-index: 9;
494
+ }
495
+
496
+ @for $j from 2 through 10 {
497
+ &:nth-child(#{$j}) {
498
+ position: absolute;
499
+ z-index: #{10 - $j};
500
+ opacity: 0;
501
+ transform: translateY(-100%);
502
+ }
503
+ }
504
+ }
505
+
506
+ &--inline .pagination {
507
+ display: none;
508
+ }
509
+
510
+ &--inline .notification:not(:last-of-type) {
511
+ margin-bottom: 1rem;
512
+ }
513
+
514
+ &--status .pagination {
515
+ display: none;
516
+ }
517
+
518
+ &--status .notifications {
519
+ position: relative;
520
+ z-index: 299;
521
+ top: 0;
522
+ left: 0;
523
+ right: 0;
524
+ display: flex;
525
+ flex-direction: row;
526
+ align-items: center;
527
+ justify-content: flex-start;
528
+ flex-wrap: wrap;
529
+ order: -2;
530
+ background: white;
531
+ }
532
+ }
533
+
534
+ .cards-enter-active {
535
+ animation: swoop-in 0.5s;
536
+ }
537
+ .cards-leave-active {
538
+ animation: swoop-in 0.5s reverse;
539
+ }
540
+
541
+ .notification-group--top-left .cards-enter-active,
542
+ .notification-group--top-left .cards-leave-active {
543
+ transform-origin: top left;
544
+ }
545
+
546
+ .notification-group--static .cards-enter-active,
547
+ .notification-group--static .cards-leave-active,
548
+ .notification-group--top-right .cards-enter-active,
549
+ .notification-group--top-right .cards-leave-active {
550
+ transform-origin: top right;
551
+ }
552
+
553
+ .notification-group--bottom-right .cards-enter-active,
554
+ .notification-group--bottom-right .cards-leave-active {
555
+ transform-origin: bottom right;
556
+ }
557
+
558
+ .notification-group--bottom-left .cards-enter-active,
559
+ .notification-group--bottom-left .cards-leave-active {
560
+ transform-origin: bottom left;
561
+ }
562
+
563
+ .fade-out-to {
564
+ opacity: 0;
565
+ }
566
+
567
+ .stack-in {
568
+ animation: stack-in 0.5s;
569
+ }
570
+
571
+ .stack-out {
572
+ animation: stack-in 0.5s reverse;
573
+ }
574
+
575
+ .slide-up {
576
+ animation: slide-up 0.25s;
577
+ }
578
+
579
+ .slide-down {
580
+ animation: slide-down 0.5s;
581
+ }
582
+
583
+ @keyframes stack-in {
584
+ 0% {
585
+ transform: translateX(0) translateY(1rem) scale(0.9);
586
+ z-index: 0;
587
+ }
588
+ 50% {
589
+ transform: translateX(-100%) scale(0.95);
590
+ z-index: 0;
591
+ }
592
+ 51% {
593
+ z-index: 9;
594
+ }
595
+ 100% {
596
+ transform: translateX(0) translateY(0) scale(1);
597
+ z-index: 9;
598
+ }
599
+ }
600
+
601
+ @keyframes stack-out {
602
+ 0% {
603
+ transform: translateX(0);
604
+ z-index: 9;
605
+ }
606
+ 50% {
607
+ transform: translateX(-100%) scale(0.95);
608
+ z-index: 9;
609
+ }
610
+ 51% {
611
+ z-index: 0;
612
+ }
613
+ 100% {
614
+ transform: translateX(0) translatey(1rem) scale(0.9);
615
+ z-index: 0;
616
+ }
617
+ }
618
+
619
+ @keyframes slide-up {
620
+ 0% {
621
+ transform: translateX(0) translateY(0);
622
+ opacity: 1;
623
+ }
624
+ 100% {
625
+ transform: translateX(0) translateY(-100%);
626
+ opacity: 0;
627
+ }
628
+ }
629
+
630
+ @keyframes slide-down {
631
+ 0% {
632
+ transform: translateX(0) translateY(-100%);
633
+ opacity: 0;
634
+ width: 100%;
635
+ }
636
+ 50% {
637
+ transform: translateX(0) translateY(-100%);
638
+ opacity: 0;
639
+ width: 100%;
640
+ }
641
+ 100% {
642
+ transform: translateX(0) translateY(0);
643
+ opacity: 1;
644
+ width: 100%;
645
+ }
646
+ }
647
+
648
+ @keyframes swoop-in {
649
+ 0% {
650
+ transform: scale(0.0);
651
+ opacity: 0;
652
+ }
653
+ 100% {
654
+ transform: scale(1.0);
655
+ opacity: 1;
656
+ }
657
+ }
658
+ </style>
@@ -114,7 +114,7 @@ export default {
114
114
  @media (min-width: 768px) {
115
115
  .asd20-organization-picker {
116
116
  .asd20-district-logo {
117
- height: space(1.5);
117
+ height: space(1.75);
118
118
  padding-left: 0 !important;
119
119
  }
120
120
  }
@@ -91,7 +91,7 @@ import Asd20List from '../../organisms/Asd20List'
91
91
  import Asd20ListItem from '../../molecules/Asd20ListItem'
92
92
  import Asd20TabBar from '../../organisms/Asd20TabBar'
93
93
  import Asd20Viewport from '../../atoms/Asd20Viewport'
94
- import Asd20Notification from '@asd20/notifications-ui/src/components/Asd20Notification'
94
+ import Asd20Notification from '../../molecules/Asd20Notification'
95
95
  import Asd20Loader from '../../molecules/Asd20Loader'
96
96
  import Asd20Modal from '../../molecules/Asd20Modal'
97
97
  import Asd20DepartmentContactCard from '../../molecules/Asd20DepartmentContactCard'
@@ -141,7 +141,7 @@ import Asd20Modal from '../../molecules/Asd20Modal'
141
141
  import Asd20SearchField from '../../molecules/Asd20SearchField'
142
142
  import Asd20TabBar from '../../organisms/Asd20TabBar'
143
143
  import Asd20Badge from '../../atoms/Asd20Badge'
144
- import Asd20NotificationGroup from '@asd20/notifications-ui/src/components/Asd20NotificationGroup'
144
+ import Asd20NotificationGroup from '../../organisms/Asd20NotificationGroup'
145
145
 
146
146
  export default {
147
147
  name: 'Asd20AppTemplate',
@@ -267,7 +267,7 @@ import Asd20MediaSection from '../../../components/organisms/Asd20MediaSection'
267
267
 
268
268
  import Asd20PageFooter from '../../../components/organisms/Asd20PageFooter'
269
269
  import Asd20QuicklinksMenu from '../../../components/organisms/Asd20QuicklinksMenu'
270
- import Asd20NotificationGroup from '@asd20/notifications-ui/src/components/Asd20NotificationGroup'
270
+ import Asd20NotificationGroup from '../../../components/organisms/Asd20NotificationGroup'
271
271
 
272
272
  import Asd20SearchField from '../../../components/molecules/Asd20SearchField'
273
273
  // import Asd20MultiselectInput from '../../../components/atoms/Asd20MultiselectInput'
@@ -311,7 +311,7 @@ import Asd20MediaSection from '../../../components/organisms/Asd20MediaSection'
311
311
 
312
312
  import Asd20PageFooter from '../../../components/organisms/Asd20PageFooter'
313
313
  import Asd20QuicklinksMenu from '../../../components/organisms/Asd20QuicklinksMenu'
314
- import Asd20NotificationGroup from '@asd20/notifications-ui/src/components/Asd20NotificationGroup'
314
+ import Asd20NotificationGroup from '../../../components/organisms/Asd20NotificationGroup'
315
315
 
316
316
  import Asd20SearchField from '../../../components/molecules/Asd20SearchField'
317
317
  // import Asd20MultiselectInput from '../../../components/atoms/Asd20MultiselectInput'
@@ -143,7 +143,7 @@ import Asd20MediaSection from '../../../components/organisms/Asd20MediaSection'
143
143
 
144
144
  import Asd20PageFooter from '../../../components/organisms/Asd20PageFooter'
145
145
  import Asd20QuicklinksMenu from '../../../components/organisms/Asd20QuicklinksMenu'
146
- import Asd20NotificationGroup from '@asd20/notifications-ui/src/components/Asd20NotificationGroup'
146
+ import Asd20NotificationGroup from '../../../components/organisms/Asd20NotificationGroup'
147
147
 
148
148
  // Mixins
149
149
  import pageTemplateMixin from '../../../mixins/pageTemplateMixin'