@fmidev/smartmet-alert-client 4.4.19 → 4.7.0-alpha.0

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 (105) hide show
  1. package/.eslintignore +2 -14
  2. package/.github/workflows/test.yaml +26 -0
  3. package/.nvmrc +1 -0
  4. package/dist/index.html +5 -0
  5. package/dist/index.js +105 -135
  6. package/dist/index.mjs +112 -135
  7. package/dist/locale-en-DCEKDw5G.js +8 -0
  8. package/dist/locale-fi-DPiOM1rB.js +8 -0
  9. package/dist/locale-sv-B0FlbgEF.js +8 -0
  10. package/dist/vendor-Cfkkvdz7.js +21 -0
  11. package/dist/vue/index.mjs +15245 -0
  12. package/dist/vue/style.css +1 -0
  13. package/dist/xml-parser-BiNO9kc-.js +13 -0
  14. package/package.json +60 -24
  15. package/src/AlertClientVue.vue +170 -0
  16. package/src/App.vue +55 -205
  17. package/src/assets/img/ui/arrow-down.svg +4 -11
  18. package/src/assets/img/ui/arrow-up.svg +4 -11
  19. package/src/assets/img/ui/clear.svg +7 -21
  20. package/src/assets/img/ui/close.svg +4 -15
  21. package/src/assets/img/ui/toggle-selected.svg +5 -6
  22. package/src/assets/img/ui/toggle-unselected.svg +5 -6
  23. package/src/assets/img/warning/cold-weather.svg +3 -6
  24. package/src/assets/img/warning/flood-level-3.svg +4 -7
  25. package/src/assets/img/warning/forest-fire-weather.svg +2 -6
  26. package/src/assets/img/warning/grass-fire-weather.svg +2 -6
  27. package/src/assets/img/warning/hot-weather.svg +3 -6
  28. package/src/assets/img/warning/pedestrian-safety.svg +3 -7
  29. package/src/assets/img/warning/rain.svg +2 -7
  30. package/src/assets/img/warning/sea-icing.svg +2 -6
  31. package/src/assets/img/warning/sea-thunder-storm.svg +2 -5
  32. package/src/assets/img/warning/sea-water-height-high-water.svg +3 -8
  33. package/src/assets/img/warning/sea-water-height-shallow-water.svg +3 -7
  34. package/src/assets/img/warning/sea-wave-height.svg +4 -7
  35. package/src/assets/img/warning/sea-wind-legend.svg +2 -5
  36. package/src/assets/img/warning/sea-wind.svg +2 -5
  37. package/src/assets/img/warning/several.svg +2 -5
  38. package/src/assets/img/warning/thunder-storm.svg +2 -5
  39. package/src/assets/img/warning/traffic-weather.svg +2 -6
  40. package/src/assets/img/warning/uv-note.svg +2 -6
  41. package/src/assets/img/warning/wind.svg +2 -5
  42. package/src/components/AlertClient.vue +41 -19
  43. package/src/components/CollapsiblePanel.vue +284 -0
  44. package/src/components/DayLarge.vue +12 -7
  45. package/src/components/DaySmall.vue +16 -6
  46. package/src/components/Days.vue +76 -51
  47. package/src/components/DescriptionWarning.vue +15 -8
  48. package/src/components/GrayScaleToggle.vue +11 -6
  49. package/src/components/Legend.vue +36 -248
  50. package/src/components/MapLarge.vue +41 -42
  51. package/src/components/MapSmall.vue +44 -28
  52. package/src/components/PopupRow.vue +6 -3
  53. package/src/components/Region.vue +30 -15
  54. package/src/components/RegionWarning.vue +6 -5
  55. package/src/components/Regions.vue +50 -19
  56. package/src/components/Warning.vue +18 -10
  57. package/src/components/Warnings.vue +36 -21
  58. package/src/main.js +1 -0
  59. package/src/mixins/alertClientCore.js +210 -0
  60. package/src/mixins/config.js +262 -256
  61. package/src/mixins/utils.js +40 -26
  62. package/src/plugins/index.js +1 -1
  63. package/src/scss/_utilities.scss +193 -0
  64. package/src/scss/constants.scss +2 -1
  65. package/src/scss/warningImages.scss +8 -3
  66. package/src/vue.js +41 -0
  67. package/svgo.config.js +45 -0
  68. package/tests/README.md +430 -0
  69. package/tests/fixtures/mockWarningData.js +135 -0
  70. package/tests/integration/warning-flow.spec.js +452 -0
  71. package/tests/setup.js +41 -0
  72. package/tests/unit/components/AlertClient.spec.js +734 -0
  73. package/tests/unit/components/DayLarge.spec.js +281 -0
  74. package/tests/unit/components/DaySmall.spec.js +278 -0
  75. package/tests/unit/components/Days.spec.js +565 -0
  76. package/tests/unit/components/DescriptionWarning.spec.js +432 -0
  77. package/tests/unit/components/GrayScaleToggle.spec.js +311 -0
  78. package/tests/unit/components/Legend.spec.js +223 -0
  79. package/tests/unit/components/MapLarge.spec.js +276 -0
  80. package/tests/unit/components/MapSmall.spec.js +226 -0
  81. package/tests/unit/components/PopupRow.spec.js +261 -0
  82. package/tests/unit/components/Region.spec.js +430 -0
  83. package/tests/unit/components/RegionWarning.snapshot.spec.js +73 -0
  84. package/tests/unit/components/RegionWarning.spec.js +408 -0
  85. package/tests/unit/components/Regions.spec.js +335 -0
  86. package/tests/unit/components/Warning.snapshot.spec.js +107 -0
  87. package/tests/unit/components/Warning.spec.js +472 -0
  88. package/tests/unit/components/Warnings.spec.js +329 -0
  89. package/tests/unit/components/__snapshots__/RegionWarning.snapshot.spec.js.snap +21 -0
  90. package/tests/unit/components/__snapshots__/Warning.snapshot.spec.js.snap +199 -0
  91. package/tests/unit/mixins/config.spec.js +269 -0
  92. package/tests/unit/mixins/i18n.spec.js +115 -0
  93. package/tests/unit/mixins/keycodes.spec.js +37 -0
  94. package/tests/unit/mixins/utils.spec.js +624 -0
  95. package/vite.config.js +96 -26
  96. package/vitest.config.js +40 -0
  97. package/dist/index.mjs.map +0 -1
  98. package/dist/index.relative.html +0 -19
  99. package/dist/index.start.html +0 -20
  100. package/playwright.config.ts +0 -18
  101. package/public/index.relative.html +0 -19
  102. package/public/index.start.html +0 -20
  103. package/src/mixins/panzoom.js +0 -900
  104. package/test/snapshot.test.ts +0 -126
  105. package/vitest.config.ts +0 -6
@@ -0,0 +1,329 @@
1
+ import { describe, it, expect, afterEach } from 'vitest'
2
+ import { mount } from '@vue/test-utils'
3
+ import Warnings from '@/components/Warnings.vue'
4
+
5
+ const mockWarnings = [
6
+ {
7
+ type: 'wind',
8
+ severity: 4,
9
+ visible: true,
10
+ },
11
+ {
12
+ type: 'thunderStorm',
13
+ severity: 3,
14
+ visible: true,
15
+ },
16
+ {
17
+ type: 'rain',
18
+ severity: 2,
19
+ visible: false,
20
+ },
21
+ ]
22
+
23
+ describe('Warnings.vue', () => {
24
+ let wrapper
25
+
26
+ afterEach(() => {
27
+ if (wrapper) {
28
+ wrapper.unmount()
29
+ }
30
+ })
31
+
32
+ describe('Component mounting', () => {
33
+ it('should mount with required props', () => {
34
+ wrapper = mount(Warnings, {
35
+ props: {
36
+ input: mockWarnings,
37
+ visibleWarnings: ['wind', 'thunderStorm'],
38
+ language: 'fi',
39
+ theme: 'light-theme',
40
+ },
41
+ })
42
+
43
+ expect(wrapper.exists()).toBe(true)
44
+ })
45
+
46
+ it('should mount with empty warnings', () => {
47
+ wrapper = mount(Warnings, {
48
+ props: {
49
+ input: [],
50
+ visibleWarnings: [],
51
+ language: 'fi',
52
+ theme: 'light-theme',
53
+ },
54
+ })
55
+
56
+ expect(wrapper.exists()).toBe(true)
57
+ })
58
+ })
59
+
60
+ describe('Computed properties', () => {
61
+ it('should compute warnings from input', () => {
62
+ wrapper = mount(Warnings, {
63
+ props: {
64
+ input: mockWarnings,
65
+ visibleWarnings: [],
66
+ language: 'fi',
67
+ theme: 'light-theme',
68
+ },
69
+ })
70
+
71
+ expect(wrapper.vm.warnings).toEqual(mockWarnings)
72
+ })
73
+
74
+ it('should detect hidden warnings', () => {
75
+ wrapper = mount(Warnings, {
76
+ props: {
77
+ input: mockWarnings,
78
+ visibleWarnings: ['wind'],
79
+ language: 'fi',
80
+ theme: 'light-theme',
81
+ },
82
+ })
83
+
84
+ expect(wrapper.vm.hiddenWarnings).toBe(true)
85
+ })
86
+
87
+ it('should detect no hidden warnings when all visible', () => {
88
+ wrapper = mount(Warnings, {
89
+ props: {
90
+ input: mockWarnings,
91
+ visibleWarnings: ['wind', 'thunderStorm', 'rain'],
92
+ language: 'fi',
93
+ theme: 'light-theme',
94
+ },
95
+ })
96
+
97
+ expect(wrapper.vm.hiddenWarnings).toBe(false)
98
+ })
99
+
100
+ it('should detect no warnings state', () => {
101
+ wrapper = mount(Warnings, {
102
+ props: {
103
+ input: [],
104
+ visibleWarnings: [],
105
+ language: 'fi',
106
+ theme: 'light-theme',
107
+ },
108
+ })
109
+
110
+ expect(wrapper.vm.noWarnings).toBe(true)
111
+ })
112
+
113
+ it('should compute warningSymbolsText for warnings', () => {
114
+ wrapper = mount(Warnings, {
115
+ props: {
116
+ input: mockWarnings,
117
+ visibleWarnings: [],
118
+ language: 'fi',
119
+ theme: 'light-theme',
120
+ },
121
+ })
122
+
123
+ expect(typeof wrapper.vm.warningSymbolsText).toBe('string')
124
+ })
125
+
126
+ it('should compute noWarnings text when empty', () => {
127
+ wrapper = mount(Warnings, {
128
+ props: {
129
+ input: [],
130
+ visibleWarnings: [],
131
+ language: 'fi',
132
+ theme: 'light-theme',
133
+ },
134
+ })
135
+
136
+ expect(typeof wrapper.vm.warningSymbolsText).toBe('string')
137
+ })
138
+
139
+ it('should compute showWarningsText', () => {
140
+ wrapper = mount(Warnings, {
141
+ props: {
142
+ input: mockWarnings,
143
+ visibleWarnings: [],
144
+ language: 'fi',
145
+ theme: 'light-theme',
146
+ },
147
+ })
148
+
149
+ expect(typeof wrapper.vm.showWarningsText).toBe('string')
150
+ })
151
+
152
+ it('should compute severity level texts', () => {
153
+ wrapper = mount(Warnings, {
154
+ props: {
155
+ input: mockWarnings,
156
+ visibleWarnings: [],
157
+ language: 'fi',
158
+ theme: 'light-theme',
159
+ },
160
+ })
161
+
162
+ expect(typeof wrapper.vm.warningLevel1Text).toBe('string')
163
+ expect(typeof wrapper.vm.warningLevel2Text).toBe('string')
164
+ expect(typeof wrapper.vm.warningLevel3Text).toBe('string')
165
+ expect(typeof wrapper.vm.warningLevel4Text).toBe('string')
166
+ })
167
+ })
168
+
169
+ describe('Event handling', () => {
170
+ it('should emit warningsToggled when warning is toggled on', () => {
171
+ wrapper = mount(Warnings, {
172
+ props: {
173
+ input: mockWarnings,
174
+ visibleWarnings: ['wind'],
175
+ language: 'fi',
176
+ theme: 'light-theme',
177
+ },
178
+ })
179
+
180
+ wrapper.vm.onWarningToggled({
181
+ warning: 'rain',
182
+ visible: true,
183
+ })
184
+
185
+ expect(wrapper.emitted('warningsToggled')).toBeTruthy()
186
+ const emittedWarnings = wrapper.emitted('warningsToggled')[0][0]
187
+ expect(emittedWarnings).toContain('wind')
188
+ expect(emittedWarnings).toContain('rain')
189
+ })
190
+
191
+ it('should emit warningsToggled when warning is toggled off', () => {
192
+ wrapper = mount(Warnings, {
193
+ props: {
194
+ input: mockWarnings,
195
+ visibleWarnings: ['wind', 'rain'],
196
+ language: 'fi',
197
+ theme: 'light-theme',
198
+ },
199
+ })
200
+
201
+ wrapper.vm.onWarningToggled({
202
+ warning: 'rain',
203
+ visible: false,
204
+ })
205
+
206
+ expect(wrapper.emitted('warningsToggled')).toBeTruthy()
207
+ const emittedWarnings = wrapper.emitted('warningsToggled')[0][0]
208
+ expect(emittedWarnings).toContain('wind')
209
+ expect(emittedWarnings).not.toContain('rain')
210
+ })
211
+
212
+ it('should not add warning twice when already visible', () => {
213
+ wrapper = mount(Warnings, {
214
+ props: {
215
+ input: mockWarnings,
216
+ visibleWarnings: ['wind'],
217
+ language: 'fi',
218
+ theme: 'light-theme',
219
+ },
220
+ })
221
+
222
+ wrapper.vm.onWarningToggled({
223
+ warning: 'wind',
224
+ visible: true,
225
+ })
226
+
227
+ const emittedWarnings = wrapper.emitted('warningsToggled')[0][0]
228
+ expect(emittedWarnings.filter((w) => w === 'wind').length).toBe(1)
229
+ })
230
+
231
+ it('should emit showAllWarnings event', () => {
232
+ wrapper = mount(Warnings, {
233
+ props: {
234
+ input: mockWarnings,
235
+ visibleWarnings: [],
236
+ language: 'fi',
237
+ theme: 'light-theme',
238
+ },
239
+ })
240
+
241
+ wrapper.vm.showAll()
242
+
243
+ expect(wrapper.emitted('showAllWarnings')).toBeTruthy()
244
+ })
245
+ })
246
+
247
+ describe('Theme support', () => {
248
+ it('should apply theme class', () => {
249
+ wrapper = mount(Warnings, {
250
+ props: {
251
+ input: mockWarnings,
252
+ visibleWarnings: [],
253
+ language: 'fi',
254
+ theme: 'dark-theme',
255
+ },
256
+ })
257
+
258
+ expect(wrapper.find('#fmi-warnings-view').classes()).toContain(
259
+ 'dark-theme'
260
+ )
261
+ })
262
+
263
+ it('should support all theme variants', () => {
264
+ const themes = [
265
+ 'light-theme',
266
+ 'dark-theme',
267
+ 'light-gray-theme',
268
+ 'dark-gray-theme',
269
+ ]
270
+
271
+ themes.forEach((theme) => {
272
+ wrapper = mount(Warnings, {
273
+ props: {
274
+ input: mockWarnings,
275
+ visibleWarnings: [],
276
+ language: 'fi',
277
+ theme,
278
+ },
279
+ })
280
+
281
+ expect(wrapper.find('#fmi-warnings-view').classes()).toContain(theme)
282
+ })
283
+ })
284
+ })
285
+
286
+ describe('Content rendering', () => {
287
+ it('should render Warning components for each warning', () => {
288
+ wrapper = mount(Warnings, {
289
+ props: {
290
+ input: mockWarnings,
291
+ visibleWarnings: [],
292
+ language: 'fi',
293
+ theme: 'light-theme',
294
+ },
295
+ })
296
+
297
+ const warningComponents = wrapper.findAllComponents({ name: 'Warning' })
298
+ expect(warningComponents).toHaveLength(mockWarnings.length)
299
+ })
300
+
301
+ it('should show no-warnings separator when no warnings', () => {
302
+ wrapper = mount(Warnings, {
303
+ props: {
304
+ input: [],
305
+ visibleWarnings: [],
306
+ language: 'fi',
307
+ theme: 'light-theme',
308
+ },
309
+ })
310
+
311
+ const separator = wrapper.find('.legend-separator')
312
+ expect(separator.classes()).toContain('no-warnings')
313
+ })
314
+
315
+ it('should not show no-warnings class when warnings exist', () => {
316
+ wrapper = mount(Warnings, {
317
+ props: {
318
+ input: mockWarnings,
319
+ visibleWarnings: [],
320
+ language: 'fi',
321
+ theme: 'light-theme',
322
+ },
323
+ })
324
+
325
+ const separator = wrapper.find('.legend-separator')
326
+ expect(separator.classes()).not.toContain('no-warnings')
327
+ })
328
+ })
329
+ })
@@ -0,0 +1,21 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`RegionWarning.vue snapshots > should match snapshot for all severity levels > severity-1 1`] = `"<div data-v-77d0cfc0="" class="symbol-image warning-image current-warning-image transform-rotate-180 symbol-rotate-180 level-1 wind" aria-label="Ei vaaraa tuulivaroitus maa‑alueille (15 m/s suunnasta 360°)"><span data-v-77d0cfc0="" aria-hidden="true" class="warning-symbol-text symbol-text transform-rotate-180">15</span></div>"`;
4
+
5
+ exports[`RegionWarning.vue snapshots > should match snapshot for all severity levels > severity-2 1`] = `"<div data-v-77d0cfc0="" class="symbol-image warning-image current-warning-image transform-rotate-180 symbol-rotate-180 level-2 wind" aria-label="Mahdollisesti vaarallinen tuulivaroitus maa‑alueille (15 m/s suunnasta 360°)"><span data-v-77d0cfc0="" aria-hidden="true" class="warning-symbol-text symbol-text transform-rotate-180">15</span></div>"`;
6
+
7
+ exports[`RegionWarning.vue snapshots > should match snapshot for all severity levels > severity-3 1`] = `"<div data-v-77d0cfc0="" class="symbol-image warning-image current-warning-image transform-rotate-180 symbol-rotate-180 level-3 wind" aria-label="Vaarallinen tuulivaroitus maa‑alueille (15 m/s suunnasta 360°)"><span data-v-77d0cfc0="" aria-hidden="true" class="warning-symbol-text symbol-text transform-rotate-180">15</span></div>"`;
8
+
9
+ exports[`RegionWarning.vue snapshots > should match snapshot for all severity levels > severity-4 1`] = `"<div data-v-77d0cfc0="" class="symbol-image warning-image current-warning-image transform-rotate-180 symbol-rotate-180 level-4 wind" aria-label="Hyvin vaarallinen tuulivaroitus maa‑alueille (15 m/s suunnasta 360°)"><span data-v-77d0cfc0="" aria-hidden="true" class="warning-symbol-text symbol-text transform-rotate-180">15</span></div>"`;
10
+
11
+ exports[`RegionWarning.vue snapshots > should match snapshot for different warning types > type-forestFire 1`] = `"<div data-v-77d0cfc0="" class="symbol-image warning-image current-warning-image transform-rotate-180 symbol-rotate-180 level-3 forest-fire" aria-label="Vaarallinen (15 m/s suunnasta 360°)"><span data-v-77d0cfc0="" aria-hidden="true" class="warning-symbol-text symbol-text transform-rotate-180">15</span></div>"`;
12
+
13
+ exports[`RegionWarning.vue snapshots > should match snapshot for different warning types > type-rain 1`] = `"<div data-v-77d0cfc0="" class="symbol-image warning-image current-warning-image transform-rotate-180 symbol-rotate-180 level-3 rain" aria-label="Vaarallinen sadevaroitus (15 m/s suunnasta 360°)"><span data-v-77d0cfc0="" aria-hidden="true" class="warning-symbol-text symbol-text transform-rotate-180">15</span></div>"`;
14
+
15
+ exports[`RegionWarning.vue snapshots > should match snapshot for different warning types > type-thunderstorm 1`] = `"<div data-v-77d0cfc0="" class="symbol-image warning-image current-warning-image transform-rotate-180 symbol-rotate-180 level-3 thunderstorm" aria-label="Vaarallinen (15 m/s suunnasta 360°)"><span data-v-77d0cfc0="" aria-hidden="true" class="warning-symbol-text symbol-text transform-rotate-180">15</span></div>"`;
16
+
17
+ exports[`RegionWarning.vue snapshots > should match snapshot for different warning types > type-wind 1`] = `"<div data-v-77d0cfc0="" class="symbol-image warning-image current-warning-image transform-rotate-180 symbol-rotate-180 level-3 wind" aria-label="Vaarallinen tuulivaroitus maa‑alueille (15 m/s suunnasta 360°)"><span data-v-77d0cfc0="" aria-hidden="true" class="warning-symbol-text symbol-text transform-rotate-180">15</span></div>"`;
18
+
19
+ exports[`RegionWarning.vue snapshots > should match snapshot for wind warning 1`] = `"<div data-v-77d0cfc0="" class="symbol-image warning-image current-warning-image transform-rotate-180 symbol-rotate-180 level-3 wind" aria-label="Vaarallinen tuulivaroitus maa‑alueille (15 m/s suunnasta 360°)"><span data-v-77d0cfc0="" aria-hidden="true" class="warning-symbol-text symbol-text transform-rotate-180">15</span></div>"`;
20
+
21
+ exports[`RegionWarning.vue snapshots > should match snapshot without wind speed 1`] = `"<div data-v-77d0cfc0="" class="symbol-image warning-image current-warning-image transform-rotate-0 symbol-rotate-0 level-3 wind" aria-label="Vaarallinen tuulivaroitus maa‑alueille"><span data-v-77d0cfc0="" aria-hidden="true" class="warning-symbol-text symbol-text transform-rotate-360"></span></div>"`;
@@ -0,0 +1,199 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`Warning.vue snapshots > should match snapshot for dark theme 1`] = `
4
+ "<div data-v-bd8e0e21="" class="symbol-list-table dark-theme">
5
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-image">
6
+ <div data-v-bd8e0e21="" class="level-3 wind symbol-list-image-column symbol-list-image warning-image" aria-label="Vaarallinen tuulivaroitus maa‑alueille"></div>
7
+ </div>
8
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-text">
9
+ <div data-v-bd8e0e21="" class="symbol-list-text-select">
10
+ <!-- eslint-disable-next-line vue/no-v-html -->
11
+ <div data-v-bd8e0e21="" class="item-text symbol-list-text">Tuulivaroitus maa‑alueille</div>
12
+ <div data-v-bd8e0e21="" class="symbol-list-select-container d-none d-md-table-cell">
13
+ <div data-v-bd8e0e21="" id="fmi-warnings-flag-wind" class="symbol-list-select flag-selected d-md-block focus-ring d-none" role="button" tabindex="0" aria-pressed="true" aria-label="Tuulivaroitus maa‑alueille"><span data-v-bd8e0e21="">On</span></div>
14
+ </div>
15
+ </div>
16
+ <hr data-v-bd8e0e21="">
17
+ </div>
18
+ </div>"
19
+ `;
20
+
21
+ exports[`Warning.vue snapshots > should match snapshot for default state 1`] = `
22
+ "<div data-v-bd8e0e21="" class="symbol-list-table light-theme">
23
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-image">
24
+ <div data-v-bd8e0e21="" class="level-3 wind symbol-list-image-column symbol-list-image warning-image" aria-label="Vaarallinen tuulivaroitus maa‑alueille"></div>
25
+ </div>
26
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-text">
27
+ <div data-v-bd8e0e21="" class="symbol-list-text-select">
28
+ <!-- eslint-disable-next-line vue/no-v-html -->
29
+ <div data-v-bd8e0e21="" class="item-text symbol-list-text">Tuulivaroitus maa‑alueille</div>
30
+ <div data-v-bd8e0e21="" class="symbol-list-select-container d-none d-md-table-cell">
31
+ <div data-v-bd8e0e21="" id="fmi-warnings-flag-wind" class="symbol-list-select flag-selected d-md-block focus-ring d-none" role="button" tabindex="0" aria-pressed="true" aria-label="Tuulivaroitus maa‑alueille"><span data-v-bd8e0e21="">On</span></div>
32
+ </div>
33
+ </div>
34
+ <hr data-v-bd8e0e21="">
35
+ </div>
36
+ </div>"
37
+ `;
38
+
39
+ exports[`Warning.vue snapshots > should match snapshot for different languages > language-en 1`] = `
40
+ "<div data-v-bd8e0e21="" class="symbol-list-table light-theme">
41
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-image">
42
+ <div data-v-bd8e0e21="" class="level-3 wind symbol-list-image-column symbol-list-image warning-image" aria-label="Dangerous wind warning for land areas"></div>
43
+ </div>
44
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-text">
45
+ <div data-v-bd8e0e21="" class="symbol-list-text-select">
46
+ <!-- eslint-disable-next-line vue/no-v-html -->
47
+ <div data-v-bd8e0e21="" class="item-text symbol-list-text">Wind warning for land areas</div>
48
+ <div data-v-bd8e0e21="" class="symbol-list-select-container d-none d-md-table-cell">
49
+ <div data-v-bd8e0e21="" id="fmi-warnings-flag-wind" class="symbol-list-select flag-selected d-md-block focus-ring d-none" role="button" tabindex="0" aria-pressed="true" aria-label="Wind warning for land areas"><span data-v-bd8e0e21="">On</span></div>
50
+ </div>
51
+ </div>
52
+ <hr data-v-bd8e0e21="">
53
+ </div>
54
+ </div>"
55
+ `;
56
+
57
+ exports[`Warning.vue snapshots > should match snapshot for different languages > language-fi 1`] = `
58
+ "<div data-v-bd8e0e21="" class="symbol-list-table light-theme">
59
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-image">
60
+ <div data-v-bd8e0e21="" class="level-3 wind symbol-list-image-column symbol-list-image warning-image" aria-label="Vaarallinen tuulivaroitus maa‑alueille"></div>
61
+ </div>
62
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-text">
63
+ <div data-v-bd8e0e21="" class="symbol-list-text-select">
64
+ <!-- eslint-disable-next-line vue/no-v-html -->
65
+ <div data-v-bd8e0e21="" class="item-text symbol-list-text">Tuulivaroitus maa‑alueille</div>
66
+ <div data-v-bd8e0e21="" class="symbol-list-select-container d-none d-md-table-cell">
67
+ <div data-v-bd8e0e21="" id="fmi-warnings-flag-wind" class="symbol-list-select flag-selected d-md-block focus-ring d-none" role="button" tabindex="0" aria-pressed="true" aria-label="Tuulivaroitus maa‑alueille"><span data-v-bd8e0e21="">On</span></div>
68
+ </div>
69
+ </div>
70
+ <hr data-v-bd8e0e21="">
71
+ </div>
72
+ </div>"
73
+ `;
74
+
75
+ exports[`Warning.vue snapshots > should match snapshot for different languages > language-sv 1`] = `
76
+ "<div data-v-bd8e0e21="" class="symbol-list-table light-theme">
77
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-image">
78
+ <div data-v-bd8e0e21="" class="level-3 wind symbol-list-image-column symbol-list-image warning-image" aria-label="Farlig vindvarning för landområden"></div>
79
+ </div>
80
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-text">
81
+ <div data-v-bd8e0e21="" class="symbol-list-text-select">
82
+ <!-- eslint-disable-next-line vue/no-v-html -->
83
+ <div data-v-bd8e0e21="" class="item-text symbol-list-text">Vindvarning för landområden</div>
84
+ <div data-v-bd8e0e21="" class="symbol-list-select-container d-none d-md-table-cell">
85
+ <div data-v-bd8e0e21="" id="fmi-warnings-flag-wind" class="symbol-list-select flag-selected d-md-block focus-ring d-none" role="button" tabindex="0" aria-pressed="true" aria-label="Vindvarning för landområden"><span data-v-bd8e0e21="">On</span></div>
86
+ </div>
87
+ </div>
88
+ <hr data-v-bd8e0e21="">
89
+ </div>
90
+ </div>"
91
+ `;
92
+
93
+ exports[`Warning.vue snapshots > should match snapshot for different severity levels > severity-1 1`] = `
94
+ "<div data-v-bd8e0e21="" class="symbol-list-table light-theme">
95
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-image">
96
+ <div data-v-bd8e0e21="" class="level-0 wind symbol-list-image-column symbol-list-image warning-image" aria-label=" tuulivaroitus maa‑alueille"></div>
97
+ </div>
98
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-text">
99
+ <div data-v-bd8e0e21="" class="symbol-list-text-select">
100
+ <!-- eslint-disable-next-line vue/no-v-html -->
101
+ <div data-v-bd8e0e21="" class="item-text symbol-list-text">Tuulivaroitus maa‑alueille</div>
102
+ <div data-v-bd8e0e21="" class="symbol-list-select-container d-none d-md-table-cell">
103
+ <div data-v-bd8e0e21="" id="fmi-warnings-flag-wind" class="symbol-list-select flag-selected d-md-block focus-ring d-none" role="button" tabindex="0" aria-pressed="true" aria-label="Tuulivaroitus maa‑alueille"><span data-v-bd8e0e21="">On</span></div>
104
+ </div>
105
+ </div>
106
+ <hr data-v-bd8e0e21="">
107
+ </div>
108
+ </div>"
109
+ `;
110
+
111
+ exports[`Warning.vue snapshots > should match snapshot for different severity levels > severity-2 1`] = `
112
+ "<div data-v-bd8e0e21="" class="symbol-list-table light-theme">
113
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-image">
114
+ <div data-v-bd8e0e21="" class="level-2 wind symbol-list-image-column symbol-list-image warning-image" aria-label="Mahdollisesti vaarallinen tuulivaroitus maa‑alueille"></div>
115
+ </div>
116
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-text">
117
+ <div data-v-bd8e0e21="" class="symbol-list-text-select">
118
+ <!-- eslint-disable-next-line vue/no-v-html -->
119
+ <div data-v-bd8e0e21="" class="item-text symbol-list-text">Tuulivaroitus maa‑alueille</div>
120
+ <div data-v-bd8e0e21="" class="symbol-list-select-container d-none d-md-table-cell">
121
+ <div data-v-bd8e0e21="" id="fmi-warnings-flag-wind" class="symbol-list-select flag-selected d-md-block focus-ring d-none" role="button" tabindex="0" aria-pressed="true" aria-label="Tuulivaroitus maa‑alueille"><span data-v-bd8e0e21="">On</span></div>
122
+ </div>
123
+ </div>
124
+ <hr data-v-bd8e0e21="">
125
+ </div>
126
+ </div>"
127
+ `;
128
+
129
+ exports[`Warning.vue snapshots > should match snapshot for different severity levels > severity-3 1`] = `
130
+ "<div data-v-bd8e0e21="" class="symbol-list-table light-theme">
131
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-image">
132
+ <div data-v-bd8e0e21="" class="level-3 wind symbol-list-image-column symbol-list-image warning-image" aria-label="Vaarallinen tuulivaroitus maa‑alueille"></div>
133
+ </div>
134
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-text">
135
+ <div data-v-bd8e0e21="" class="symbol-list-text-select">
136
+ <!-- eslint-disable-next-line vue/no-v-html -->
137
+ <div data-v-bd8e0e21="" class="item-text symbol-list-text">Tuulivaroitus maa‑alueille</div>
138
+ <div data-v-bd8e0e21="" class="symbol-list-select-container d-none d-md-table-cell">
139
+ <div data-v-bd8e0e21="" id="fmi-warnings-flag-wind" class="symbol-list-select flag-selected d-md-block focus-ring d-none" role="button" tabindex="0" aria-pressed="true" aria-label="Tuulivaroitus maa‑alueille"><span data-v-bd8e0e21="">On</span></div>
140
+ </div>
141
+ </div>
142
+ <hr data-v-bd8e0e21="">
143
+ </div>
144
+ </div>"
145
+ `;
146
+
147
+ exports[`Warning.vue snapshots > should match snapshot for different severity levels > severity-4 1`] = `
148
+ "<div data-v-bd8e0e21="" class="symbol-list-table light-theme">
149
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-image">
150
+ <div data-v-bd8e0e21="" class="level-4 wind symbol-list-image-column symbol-list-image warning-image" aria-label="Hyvin vaarallinen tuulivaroitus maa‑alueille"></div>
151
+ </div>
152
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-text">
153
+ <div data-v-bd8e0e21="" class="symbol-list-text-select">
154
+ <!-- eslint-disable-next-line vue/no-v-html -->
155
+ <div data-v-bd8e0e21="" class="item-text symbol-list-text">Tuulivaroitus maa‑alueille</div>
156
+ <div data-v-bd8e0e21="" class="symbol-list-select-container d-none d-md-table-cell">
157
+ <div data-v-bd8e0e21="" id="fmi-warnings-flag-wind" class="symbol-list-select flag-selected d-md-block focus-ring d-none" role="button" tabindex="0" aria-pressed="true" aria-label="Tuulivaroitus maa‑alueille"><span data-v-bd8e0e21="">On</span></div>
158
+ </div>
159
+ </div>
160
+ <hr data-v-bd8e0e21="">
161
+ </div>
162
+ </div>"
163
+ `;
164
+
165
+ exports[`Warning.vue snapshots > should match snapshot for hidden warning 1`] = `
166
+ "<div data-v-bd8e0e21="" class="symbol-list-table light-theme">
167
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-image">
168
+ <div data-v-bd8e0e21="" class="level-3 wind symbol-list-image-column symbol-list-image warning-image" aria-label="Vaarallinen tuulivaroitus maa‑alueille"></div>
169
+ </div>
170
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-text">
171
+ <div data-v-bd8e0e21="" class="symbol-list-text-select">
172
+ <!-- eslint-disable-next-line vue/no-v-html -->
173
+ <div data-v-bd8e0e21="" class="item-text symbol-list-text">Tuulivaroitus maa‑alueille</div>
174
+ <div data-v-bd8e0e21="" class="symbol-list-select-container d-none d-md-table-cell">
175
+ <div data-v-bd8e0e21="" id="fmi-warnings-flag-wind" class="symbol-list-select flag-unselected d-md-block focus-ring d-none" role="button" tabindex="0" aria-pressed="false" aria-label="Tuulivaroitus maa‑alueille"><span data-v-bd8e0e21="">Off</span></div>
176
+ </div>
177
+ </div>
178
+ <hr data-v-bd8e0e21="">
179
+ </div>
180
+ </div>"
181
+ `;
182
+
183
+ exports[`Warning.vue snapshots > should match snapshot when not hideable 1`] = `
184
+ "<div data-v-bd8e0e21="" class="symbol-list-table light-theme">
185
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-image">
186
+ <div data-v-bd8e0e21="" class="level-3 wind symbol-list-image-column symbol-list-image warning-image" aria-label="Vaarallinen tuulivaroitus maa‑alueille"></div>
187
+ </div>
188
+ <div data-v-bd8e0e21="" class="symbol-list-cell symbol-list-cell-text">
189
+ <div data-v-bd8e0e21="" class="symbol-list-text-select">
190
+ <!-- eslint-disable-next-line vue/no-v-html -->
191
+ <div data-v-bd8e0e21="" class="item-text symbol-list-text">Tuulivaroitus maa‑alueille</div>
192
+ <div data-v-bd8e0e21="" class="symbol-list-select-container d-none d-md-table-cell">
193
+ <div data-v-bd8e0e21="" id="fmi-warnings-flag-wind" class="symbol-list-select flag-selected focus-ring d-none" role="button" tabindex="0" aria-pressed="true" aria-label="Tuulivaroitus maa‑alueille"><span data-v-bd8e0e21="">On</span></div>
194
+ </div>
195
+ </div>
196
+ <hr data-v-bd8e0e21="">
197
+ </div>
198
+ </div>"
199
+ `;