@asd20/ui 3.2.717 → 3.2.718

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 +419 -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
package/package-lock.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asd20/ui",
3
- "version": "3.2.589",
3
+ "version": "3.2.717",
4
4
  "lockfileVersion": 1,
5
5
  "requires": true,
6
6
  "dependencies": {
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "*.scss",
6
6
  "*.vue"
7
7
  ],
8
- "version": "3.2.717",
8
+ "version": "3.2.718",
9
9
  "private": false,
10
10
  "license": "MIT",
11
11
  "repository": {
@@ -91,6 +91,8 @@ export default {
91
91
  // fill: var(var(--website-icon__fill-color), --fill-color);
92
92
  // fill: var(--website-icon__fill-color, --fill-color);
93
93
  // color: var(--website-icon__line-color, --line-color);
94
+ fill: var(--fill-color);
95
+ color: var(--line-color);
94
96
  --fill-color: var(--website-icon__fill-color);
95
97
  --line-color: var(--website-icon__line-color);
96
98
 
@@ -0,0 +1,419 @@
1
+ <template>
2
+ <div
3
+ :class="classes"
4
+ role="status"
5
+ :style="{ '--background-color': this.color || 'currentColor' }"
6
+ >
7
+ <asd20-icon v-if="iconName" :name="iconName" :size="iconSize"></asd20-icon>
8
+
9
+ <div class="asd20-notification__content">
10
+ <div class="asd20-notification__title" v-if="title" v-html="title"></div>
11
+ <div
12
+ class="asd20-notification__description"
13
+ v-if="description || detailLinkUrl"
14
+ >
15
+ <span v-if="description" v-html="description"> </span>
16
+ <a
17
+ v-if="detailLinkUrl"
18
+ :tabindex="focusDisabled ? '-1' : undefined"
19
+ :href="detailLinkUrl"
20
+ >
21
+ {{ detailLinkLabel || detailLinkUrl }}
22
+ </a>
23
+ </div>
24
+
25
+ <asd20-button
26
+ class="asd20-notification__cta"
27
+ v-if="callToActionUrl"
28
+ horizontal
29
+ transparent
30
+ bordered
31
+ size="xs"
32
+ :label="callToActionLabel || callToActionUrl"
33
+ :link="callToActionUrl"
34
+ :tabindex="focusDisabled ? '-1' : undefined"
35
+ ></asd20-button>
36
+ <asd20-button
37
+ class="asd20-notification__dismiss"
38
+ v-if="dismissible"
39
+ transparent
40
+ size="xs"
41
+ icon="close"
42
+ label="Dismiss"
43
+ hide-label
44
+ :tabindex="focusDisabled ? '-1' : undefined"
45
+ @click.native="$emit('dismiss')"
46
+ ></asd20-button>
47
+ <slot></slot>
48
+ </div>
49
+ </div>
50
+ </template>
51
+
52
+ <script>
53
+ import Asd20Icon from '../../atoms/Asd20Icon'
54
+ import Asd20Button from '../../atoms/Asd20Button'
55
+
56
+ export default {
57
+ name: 'asd20-notification',
58
+
59
+ components: { Asd20Icon, Asd20Button },
60
+
61
+ props: {
62
+ id: { type: String, default: '' },
63
+ title: { type: String, default: '' },
64
+ icon: { type: String, default: '' },
65
+ description: { type: String, default: '' },
66
+ callToActionUrl: { type: String, default: '' },
67
+ callToActionLabel: { type: String, default: '' },
68
+ detailLinkUrl: { type: String, default: '' },
69
+ detailLinkLabel: { type: String, default: '' },
70
+ dismissible: { type: Boolean, default: false },
71
+ color: { type: String, default: '' },
72
+ notificationStyle: { type: String, default: '' },
73
+ importance: { type: String, default: 'info' },
74
+ focusDisabled: { type: Boolean, default: false },
75
+ },
76
+
77
+ computed: {
78
+ classes() {
79
+ let classes = {
80
+ 'asd20-notification': true,
81
+ 'asd20-notification--banner': this.notificationStyle.toLowerCase() === 'banner',
82
+ 'asd20-notification--floating': this.notificationStyle.toLowerCase() === 'floating',
83
+ 'asd20-notification--inline': this.notificationStyle.toLowerCase() === 'inline',
84
+ 'asd20-notification--status': this.notificationStyle.toLowerCase() === 'status',
85
+ 'asd20-notification--dismissible': this.dismissible,
86
+ }
87
+
88
+ if (this.importance && (!this.color || this.color === 'inherit')) {
89
+ classes[`asd20-notification--${this.importance.toLowerCase()}`] = true
90
+ }
91
+
92
+ return classes
93
+ },
94
+ iconName() {
95
+ if (this.icon) return this.icon
96
+ switch (this.importance.toLowerCase()) {
97
+ case 'emergency':
98
+ return 'danger'
99
+ case 'alert':
100
+ return 'alert'
101
+ default:
102
+ return 'info'
103
+ }
104
+ },
105
+ iconSize() {
106
+ switch (this.notificationStyle.toLowerCase()) {
107
+ case 'banner':
108
+ return 'lg'
109
+ default:
110
+ return 'lg'
111
+ }
112
+ },
113
+ },
114
+ }
115
+ </script>
116
+
117
+ <style lang="scss">
118
+ // @import '../../../design/_variables.scss';
119
+ // @import '../../../design/_mixins.scss';
120
+ // @import '../../../design/_typography.scss';
121
+ // @import '../../../design/_template.scss';
122
+ // @import '../../../design/_print.scss';
123
+ // @import '../../../design/tokens.css';
124
+
125
+
126
+ .asd20-notification {
127
+ position: relative;
128
+ display: flex;
129
+ flex-direction: column;
130
+ padding: 1rem;
131
+ background: white;
132
+ color: #1e1e1e;
133
+ font-size: 16px;
134
+ font-family: Arial, Helvetica, sans-serif;
135
+ a {
136
+ color: #282828;
137
+ }
138
+ .asd20-icon--lg {
139
+ height: 48px;
140
+ width: 48px;
141
+ }
142
+
143
+ &__content {
144
+ display: flex;
145
+ flex-direction: column;
146
+ margin: 0.5rem;
147
+ padding-right: 1rem;
148
+ padding-top: 0.5rem;
149
+ border-top: 2px solid #70b4c2;
150
+ }
151
+
152
+ &__title {
153
+ font-weight: bold;
154
+ font-size: 1.25rem;
155
+ color: #0e2c6c;
156
+ }
157
+
158
+ &__description {
159
+ font-size: 0.875rem;
160
+ margin: 0.25rem 0 1rem 0;
161
+ }
162
+
163
+ &__dismiss {
164
+ position: absolute !important;
165
+ top: 0;
166
+ right: 0;
167
+ }
168
+
169
+ &__content > a.asd20-notification__cta {
170
+ font-size: 0.875rem !important;
171
+ margin-top: 0.5rem;
172
+ padding: 0.5rem;
173
+ line-height: 1.1;
174
+ }
175
+
176
+ &--emergency {
177
+ .asd20-notification__title,
178
+ .asd20-notification__cta {
179
+ color: #da2e0b;
180
+ border-color: #da2e0b;
181
+
182
+ }
183
+ .asd20-icon {
184
+ --line-color: #da2e0b;
185
+ --fill-color: white;
186
+ }
187
+ .asd20-notification__dismiss g {
188
+ --line-color: black;
189
+ }
190
+ &.asd20-notification--banner {
191
+ .asd20-notification__dismiss g {
192
+ --line-color: white;
193
+ }
194
+ }
195
+ .asd20-notification__content {
196
+ border-top: 2px solid #da2e0b;
197
+ }
198
+ }
199
+
200
+ &--alert {
201
+ .asd20-notification__title,
202
+ .asd20-notification__cta {
203
+ color: #dabf50;
204
+ border-color: #dabf50;
205
+ }
206
+ .asd20-icon {
207
+ --line-color: black;
208
+ --fill-color: #dabf50;
209
+ }
210
+ .asd20-notification__content {
211
+ border-top: 2px solid #dabf50;
212
+ }
213
+ }
214
+
215
+ &--status {
216
+ .asd20-notification__title,
217
+ .asd20-notification__cta {
218
+ color: white;
219
+ }
220
+ .asd20-icon {
221
+ --line-color: black;
222
+ --fill-color: white;
223
+ }
224
+ }
225
+
226
+ &.asd20-notification--floating {
227
+ box-shadow: 0 0 1rem 0 rgba(0, 0, 0, 0.125);
228
+ .asd20-notification__title {
229
+ font-size: 1.125rem;
230
+ padding-top: 0.5rem;
231
+ }
232
+
233
+ .asd20-notification__description {
234
+ font-size: 0.875rem;
235
+ }
236
+
237
+ & > a.asd20-notification__cta {
238
+ font-size: 0.875rem !important;
239
+ line-height: 1.1;
240
+ }
241
+ }
242
+
243
+ &.asd20-notification--status {
244
+ box-shadow: none;
245
+ padding: 0;
246
+ background: transparent;
247
+ .asd20-notification__content {
248
+ display: flex;
249
+ flex-direction: row;
250
+ align-self: center;
251
+ flex-wrap: nowrap;
252
+ align-items: center;
253
+ justify-content: center;
254
+ }
255
+ .asd20-icon {
256
+ --line-color: white;
257
+ --fill-color: white;
258
+ .fill {
259
+ opacity: 0.25;
260
+ }
261
+ }
262
+ .asd20-notification__title {
263
+ font-size: 0.875rem;
264
+ white-space: nowrap;
265
+ &::after {
266
+ content: ': ';
267
+ }
268
+ }
269
+ .asd20-notification__description {
270
+ font-size: 0.875rem;
271
+ color: white;
272
+ margin: 0 0 0 0.25rem;
273
+ white-space: nowrap;
274
+ }
275
+ .asd20-notification__dismiss {
276
+ position: relative;
277
+ padding: 0;
278
+ display: none;
279
+ box-shadow: none !important;
280
+ }
281
+ a.asd20-notification__cta {
282
+ display: none;
283
+ }
284
+ }
285
+
286
+ &.asd20-notification--inline {
287
+ box-shadow: 0 0 0 5px #70b4c2;
288
+ }
289
+
290
+ &.asd20-notification--banner {
291
+ background: black;
292
+ color: white;
293
+ margin-bottom: 0;
294
+ border-bottom: 30px solid #70b4c2;
295
+ border-left: none;
296
+ a {
297
+ color: white;
298
+ }
299
+ .asd20-notification__title {
300
+ font-size: 1.25rem;
301
+ }
302
+ .asd20-notification__title,
303
+ .asd20-notification__cta {
304
+ color: white;
305
+ border-color: white !important;
306
+ }
307
+ .asd20-notification__dismiss .asd20-icon {
308
+ --line-color: white;
309
+ --fill-color: white;
310
+ }
311
+ .asd20-icon {
312
+ --line-color: white;
313
+ --fill-color: #70b4c2;
314
+ }
315
+ }
316
+
317
+ &--emergency.asd20-notification--banner {
318
+ background: black;
319
+ color: white;
320
+ border-bottom: 30px solid #da2e0b;
321
+ border-left: none;
322
+ a {
323
+ color: white;
324
+ }
325
+ .asd20-notification__title,
326
+ .asd20-notification__cta {
327
+ color: white;
328
+ border-color: white !important;
329
+ }
330
+ .asd20-icon {
331
+ --line-color: white;
332
+ --fill-color: #da2e0b;
333
+ }
334
+ }
335
+ &--alert.asd20-notification--banner {
336
+ background: black;
337
+ color: white;
338
+ border-bottom: 30px solid #dabf50;
339
+ border-left: none;
340
+ .asd20-notification__title,
341
+ .asd20-notification__cta {
342
+ color: white;
343
+ }
344
+ .asd20-notification__dismiss .asd20-icon {
345
+ --line-color: white;
346
+ --fill-color: white;
347
+ }
348
+
349
+ .asd20-icon {
350
+ --line-color: white;
351
+ --fill-color: #dabf50;
352
+ }
353
+ }
354
+ }
355
+ @media (min-width: 768px) {
356
+ .asd20-notification {
357
+ flex-direction: row;
358
+ .asd20-icon--lg {
359
+ height: 64px;
360
+ width: 64px;
361
+ }
362
+ &__content {
363
+ margin-top: 0.375rem;
364
+ padding-left: 1rem;
365
+ border-left: 2px solid #70b4c2;
366
+ border-top: none;
367
+ padding-top: 0;
368
+ }
369
+ &--emergency {
370
+ .asd20-notification__content {
371
+ border-left: 2px solid #da2e0b;
372
+ border-top: none;
373
+ }
374
+ }
375
+ &--alert {
376
+ .asd20-notification__content {
377
+ border-left: 2px solid #dabf50;
378
+ border-top: none;
379
+ }
380
+ }
381
+ &.asd20-notification--floating {
382
+ flex-direction: column;
383
+ .asd20-notification__content {
384
+ border-top: 2px solid #da2e0b;
385
+ border-left: none;
386
+ }
387
+ }
388
+ &.asd20-notification--banner {
389
+ border-left: 30px solid #70b4c2;
390
+ border-bottom: none;
391
+ }
392
+ &--emergency.asd20-notification--banner {
393
+ border-left: 30px solid #da2e0b;
394
+ border-bottom: none;
395
+ }
396
+ &--alert.asd20-notification--banner {
397
+ border-left: 30px solid #dabf50;
398
+ border-bottom: none;
399
+ }
400
+ }
401
+ }
402
+
403
+
404
+ @media (min-width: 1024px) {
405
+ .asd20-notification {
406
+ &__title {
407
+ font-size: 1.5rem;
408
+ }
409
+
410
+ &__description {
411
+ font-size: 1rem;
412
+ margin: 0.5rem 0 0 0;
413
+ }
414
+ &__content > a.asd20-notification__cta {
415
+ margin-top: 1rem;
416
+ }
417
+ }
418
+ }
419
+ </style>