@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,284 @@
1
+ <template>
2
+ <div :class="['collapsible-panel', theme, 'mobile-only']">
3
+ <div class="panel-header">
4
+ <div class="panel-title">
5
+ <span class="panel-text">
6
+ {{ title }}
7
+ </span>
8
+ </div>
9
+ <button
10
+ :class="['panel-toggle', visible ? '' : 'collapsed']"
11
+ :aria-expanded="visible"
12
+ :aria-label="title"
13
+ @click="onToggle"
14
+ ></button>
15
+ </div>
16
+ <Transition name="collapse">
17
+ <div
18
+ v-if="visible"
19
+ class="panel-body"
20
+ >
21
+ <div class="panel-content">
22
+ <slot></slot>
23
+ </div>
24
+ </div>
25
+ </Transition>
26
+ </div>
27
+ </template>
28
+
29
+ <script>
30
+ export default {
31
+ name: 'CollapsiblePanel',
32
+ props: {
33
+ visible: {
34
+ type: Boolean,
35
+ default: false,
36
+ },
37
+ title: {
38
+ type: String,
39
+ default: '',
40
+ },
41
+ theme: {
42
+ type: String,
43
+ default: 'light-theme',
44
+ },
45
+ },
46
+ methods: {
47
+ onToggle() {
48
+ this.$emit('toggle')
49
+ },
50
+ },
51
+ }
52
+ </script>
53
+
54
+ <style scoped lang="scss">
55
+ @import '../scss/constants.scss';
56
+
57
+ .collapsible-panel {
58
+ margin-left: 0;
59
+ margin-right: 0;
60
+ margin-bottom: 0.25rem;
61
+ border-radius: 0;
62
+ }
63
+
64
+ .light-theme.collapsible-panel {
65
+ border: 0.5px solid $light-legend-background-color;
66
+ }
67
+
68
+ .dark-theme.collapsible-panel {
69
+ border: 0.5px solid $dark-legend-background-color;
70
+ }
71
+
72
+ .light-gray-theme.collapsible-panel {
73
+ border: 0.5px solid $light-gray-legend-background-color;
74
+ }
75
+
76
+ .dark-gray-theme.collapsible-panel {
77
+ border: 0.5px solid $dark-gray-legend-background-color;
78
+ }
79
+
80
+ .panel-header {
81
+ height: $current-warning-height;
82
+ padding: 0 0 0 15px;
83
+ line-height: $current-warning-height;
84
+ border: none;
85
+ border-bottom: 0.5px solid rgba(0, 0, 0, 0.125);
86
+ border-radius: 0;
87
+ position: relative;
88
+ }
89
+
90
+ .light-theme .panel-header {
91
+ background-color: $light-legend-heading-background-color;
92
+ }
93
+
94
+ .dark-theme .panel-header {
95
+ background-color: $dark-legend-heading-background-color;
96
+ }
97
+
98
+ .light-gray-theme .panel-header {
99
+ background-color: $light-gray-legend-heading-background-color;
100
+ }
101
+
102
+ .dark-gray-theme .panel-header {
103
+ background-color: $dark-gray-legend-heading-background-color;
104
+ }
105
+
106
+ .panel-title {
107
+ position: absolute;
108
+ left: 0;
109
+ right: 38px;
110
+ border-radius: 0;
111
+ display: flex;
112
+ align-items: center;
113
+ justify-content: start;
114
+ height: $current-warning-height;
115
+ }
116
+
117
+ .light-theme .panel-title {
118
+ background: $light-legend-heading-background-color;
119
+ }
120
+
121
+ .dark-theme .panel-title {
122
+ background: $dark-legend-heading-background-color;
123
+ }
124
+
125
+ .light-gray-theme .panel-title {
126
+ background: $light-gray-legend-heading-background-color;
127
+ }
128
+
129
+ .dark-gray-theme .panel-title {
130
+ background: $dark-gray-legend-heading-background-color;
131
+ }
132
+
133
+ .panel-text {
134
+ display: block;
135
+ text-align: left;
136
+ white-space: nowrap;
137
+ overflow: hidden;
138
+ text-overflow: ellipsis;
139
+ margin-left: 15px;
140
+ }
141
+
142
+ .light-theme .panel-text {
143
+ background-color: $light-legend-heading-background-color;
144
+ }
145
+
146
+ .dark-theme .panel-text {
147
+ background-color: $dark-legend-heading-background-color;
148
+ }
149
+
150
+ .light-gray-theme .panel-text {
151
+ background-color: $light-gray-legend-heading-background-color;
152
+ }
153
+
154
+ .dark-gray-theme .panel-text {
155
+ background-color: $dark-gray-legend-heading-background-color;
156
+ }
157
+
158
+ button.panel-toggle {
159
+ position: relative;
160
+ height: $current-warning-height;
161
+ width: $current-warning-height;
162
+ min-width: $current-warning-height;
163
+ background-image: url($ui-image-path + 'arrow-up.svg');
164
+ background-repeat: no-repeat;
165
+ background-position: center;
166
+ border-radius: 0;
167
+ border-style: none;
168
+ float: right;
169
+ padding: $image-padding;
170
+ margin-left: 5px;
171
+ cursor: pointer;
172
+
173
+ &.collapsed {
174
+ background-image: url($ui-image-path + 'arrow-down.svg');
175
+ border-radius: 0 3px 3px 0;
176
+ }
177
+ }
178
+
179
+ .light-theme .panel-toggle {
180
+ background-color: $light-legend-toggle-background-color;
181
+
182
+ &:hover {
183
+ background-color: $light-legend-toggle-background-color;
184
+ }
185
+
186
+ &:active {
187
+ background-color: $light-current-warning-toggle-active-color;
188
+ }
189
+ }
190
+
191
+ .dark-theme .panel-toggle {
192
+ background-color: $dark-legend-toggle-background-color;
193
+
194
+ &:hover {
195
+ background-color: $dark-legend-toggle-background-color;
196
+ }
197
+
198
+ &:active {
199
+ background-color: $dark-current-warning-toggle-active-color;
200
+ }
201
+ }
202
+
203
+ .light-gray-theme .panel-toggle {
204
+ background-color: $light-gray-legend-toggle-background-color;
205
+
206
+ &:hover {
207
+ background-color: $light-gray-legend-toggle-background-color;
208
+ }
209
+
210
+ &:active {
211
+ background-color: $light-gray-current-warning-toggle-active-color;
212
+ }
213
+ }
214
+
215
+ .dark-gray-theme .panel-toggle {
216
+ background-color: $dark-gray-legend-toggle-background-color;
217
+
218
+ &:hover {
219
+ background-color: $dark-gray-legend-toggle-background-color;
220
+ }
221
+
222
+ &:active {
223
+ background-color: $dark-gray-current-warning-toggle-active-color;
224
+ }
225
+ }
226
+
227
+ .panel-body {
228
+ overflow: hidden;
229
+ }
230
+
231
+ .panel-content {
232
+ padding: 15px;
233
+ border-radius: 0;
234
+ }
235
+
236
+ .light-theme .panel-content {
237
+ background-color: $light-legend-container-background-color;
238
+ border-top: 0.5px solid $light-legend-background-color;
239
+ }
240
+
241
+ .dark-theme .panel-content {
242
+ background-color: $dark-legend-container-background-color;
243
+ border-top: 0.5px solid $dark-legend-background-color;
244
+ }
245
+
246
+ .light-gray-theme .panel-content {
247
+ background-color: $light-gray-legend-container-background-color;
248
+ border-top: 0.5px solid $light-gray-legend-background-color;
249
+ }
250
+
251
+ .dark-gray-theme .panel-content {
252
+ background-color: $dark-gray-legend-container-background-color;
253
+ border-top: 0.5px solid $dark-gray-legend-background-color;
254
+ }
255
+
256
+ // Collapse transition
257
+ .collapse-enter-active,
258
+ .collapse-leave-active {
259
+ transition:
260
+ max-height 0.35s ease,
261
+ opacity 0.35s ease;
262
+ overflow: hidden;
263
+ }
264
+
265
+ .collapse-enter-from {
266
+ max-height: 0;
267
+ opacity: 0;
268
+ }
269
+
270
+ .collapse-enter-to {
271
+ max-height: 2000px;
272
+ opacity: 1;
273
+ }
274
+
275
+ .collapse-leave-from {
276
+ max-height: 2000px;
277
+ opacity: 1;
278
+ }
279
+
280
+ .collapse-leave-to {
281
+ max-height: 0;
282
+ opacity: 0;
283
+ }
284
+ </style>
@@ -1,15 +1,16 @@
1
1
  <template>
2
2
  <div>
3
3
  <div class="map-container">
4
- <div class="warning-map-status" aria-hidden="true">
4
+ <div
5
+ class="warning-map-status"
6
+ aria-hidden="true"
7
+ >
5
8
  <p>
6
- <span class="bold-text">{{ warningsTitle }}</span
7
- ><br />
9
+ <span class="bold-text">{{ warningsTitle }}</span><br />
8
10
  <span v-html="warningsDate"></span>
9
11
  </p>
10
12
  <p>
11
- <span class="bold-text">{{ updatedTitle }}</span
12
- ><br />
13
+ <span class="bold-text">{{ updatedTitle }}</span><br />
13
14
  {{ updatedDate }}<br />
14
15
  {{ atTime }} {{ updatedTime }}
15
16
  </p>
@@ -24,9 +25,13 @@
24
25
  :theme="theme"
25
26
  :language="language"
26
27
  :spinner-enabled="spinnerEnabled"
27
- @loaded="onLoaded" />
28
+ @loaded="onLoaded"
29
+ />
28
30
  </div>
29
- <div class="data-providers noselect" aria-hidden="true">
31
+ <div
32
+ class="data-providers noselect"
33
+ aria-hidden="true"
34
+ >
30
35
  <span>{{ dataProviderFirst }}</span>
31
36
  <br />
32
37
  <span>{{ dataProviderSecond }}</span>
@@ -1,7 +1,8 @@
1
1
  <template>
2
2
  <div
3
3
  :class="['date-selector-cell', theme, { active: active }]"
4
- :aria-label="ariaLabel">
4
+ :aria-label="ariaLabel"
5
+ >
5
6
  <div class="date-selector-cell-header"></div>
6
7
  <div class="date-selector-cell-body map-container">
7
8
  <MapSmall
@@ -11,14 +12,21 @@
11
12
  :warnings="warnings"
12
13
  :geometry-id="geometryId"
13
14
  :loading="loading"
14
- :theme="theme" />
15
+ :theme="theme"
16
+ />
15
17
  </div>
16
18
  <div class="date-selector-cell-date">
17
19
  <div :class="`date-selector-text mobile-level-${severity}`">
18
- <span v-if="staticDays" class="bold-text weekday-text">{{
20
+ <span
21
+ v-if="staticDays"
22
+ class="bold-text weekday-text"
23
+ >{{
19
24
  weekday
20
25
  }}</span>
21
- <br v-if="staticDays" class="d-inline d-sm-none" />
26
+ <br
27
+ v-if="staticDays"
28
+ class="d-inline d-sm-none"
29
+ />
22
30
  {{ date }}
23
31
  </div>
24
32
  </div>
@@ -100,11 +108,13 @@ export default {
100
108
  : ''
101
109
  },
102
110
  ariaLabel() {
111
+ const landCount = this.regions?.land?.length || 0
112
+ const seaCount = this.regions?.sea?.length || 0
103
113
  return `${this.t(this.input.weekdayName)} ${this.input.day}.${
104
114
  this.input.month
105
- }. ${this.t('warningsInEffect')} ${this.regions.land.length} ${this.t(
115
+ }. ${this.t('warningsInEffect')} ${landCount} ${this.t(
106
116
  'landAreas'
107
- )} ${this.regions.sea.length} ${this.t('seaAreas')}.`
117
+ )} ${seaCount} ${this.t('seaAreas')}.`
108
118
  },
109
119
  },
110
120
  }
@@ -1,63 +1,88 @@
1
1
  <template>
2
- <div class="row date-selector" :class="theme">
3
- <b-tabs
2
+ <div
3
+ class="row date-selector"
4
+ :class="theme"
5
+ >
6
+ <div
4
7
  id="fmi-warnings-date-selector"
5
- v-model="day"
6
- :lazy="true"
7
- :no-fade="true"
8
- nav-class="fmi-warnings-date-nav"
9
- nav-wrapper-class="fmi-warnings-date-wrapper"
10
- :justified="true">
11
- <b-tab
12
- v-for="(n, i) in numberOfDays"
13
- :key="i"
14
- :active="i === day"
15
- :title-link-class="['day', `day${i}`]">
16
- <template #title>
17
- <DaySmall
8
+ class="tabs"
9
+ >
10
+ <div class="fmi-warnings-date-wrapper">
11
+ <ul
12
+ class="nav nav-tabs fmi-warnings-date-nav"
13
+ role="tablist"
14
+ >
15
+ <li
16
+ v-for="(n, i) in numberOfDays"
17
+ :key="i"
18
+ class="nav-item"
19
+ role="presentation"
20
+ >
21
+ <button
22
+ :class="['nav-link', 'day', `day${i}`, { active: i === day }]"
23
+ type="button"
24
+ role="tab"
25
+ :aria-selected="i === day"
26
+ @click="day = i"
27
+ >
28
+ <DaySmall
29
+ :index="i"
30
+ :input="input[i]"
31
+ :visible-warnings="visibleWarnings"
32
+ :warnings="warnings"
33
+ :regions="regions[i]"
34
+ :geometry-id="geometryId"
35
+ :active="i === day"
36
+ :static-days="staticDays"
37
+ :loading="loading"
38
+ :theme="theme"
39
+ :language="language"
40
+ />
41
+ </button>
42
+ </li>
43
+ </ul>
44
+ </div>
45
+ <div class="tab-content">
46
+ <div
47
+ v-for="(n, i) in numberOfDays"
48
+ :key="i"
49
+ :class="['tab-pane', { active: i === day, show: i === day }]"
50
+ role="tabpanel"
51
+ >
52
+ <DayLarge
53
+ v-if="i === day"
18
54
  :index="i"
19
55
  :input="input[i]"
20
56
  :visible-warnings="visibleWarnings"
21
57
  :warnings="warnings"
22
58
  :regions="regions[i]"
23
59
  :geometry-id="geometryId"
24
- :active="i === day"
25
60
  :static-days="staticDays"
61
+ :time-offset="timeOffset"
26
62
  :loading="loading"
27
63
  :theme="theme"
28
- :language="language" />
29
- </template>
30
- <DayLarge
31
- :index="i"
32
- :input="input[i]"
33
- :visible-warnings="visibleWarnings"
34
- :warnings="warnings"
35
- :regions="regions[i]"
36
- :geometry-id="geometryId"
37
- :static-days="staticDays"
38
- :time-offset="timeOffset"
39
- :loading="loading"
40
- :theme="theme"
41
- :language="language"
42
- :spinner-enabled="spinnerEnabled"
43
- @loaded="onLoaded" />
44
- </b-tab>
45
- </b-tabs>
64
+ :language="language"
65
+ :spinner-enabled="spinnerEnabled"
66
+ @loaded="onLoaded"
67
+ />
68
+ </div>
69
+ </div>
70
+ </div>
46
71
  </div>
47
72
  </template>
48
73
 
49
74
  <script>
75
+ import keycodes from '../mixins/keycodes'
50
76
  import DayLarge from './DayLarge.vue'
51
77
  import DaySmall from './DaySmall.vue'
52
- import keycodes from '../mixins/keycodes'
53
78
 
54
79
  export default {
55
80
  name: 'Days',
56
- mixins: [keycodes],
57
81
  components: {
58
82
  DaySmall,
59
83
  DayLarge,
60
84
  },
85
+ mixins: [keycodes],
61
86
  props: {
62
87
  input: {
63
88
  type: Array,
@@ -120,18 +145,14 @@ export default {
120
145
  },
121
146
  },
122
147
  mounted() {
123
- const button = Array.from(this.$el.querySelectorAll('button.day')).forEach(
124
- (button) => {
125
- button.addEventListener('keydown', this.switchDay, true)
126
- }
127
- )
148
+ Array.from(this.$el.querySelectorAll('button.day')).forEach((button) => {
149
+ button.addEventListener('keydown', this.switchDay, true)
150
+ })
128
151
  },
129
152
  beforeUnmount() {
130
- const button = Array.from(this.$el.querySelectorAll('button.day')).forEach(
131
- (button) => {
132
- button.removeEventListener('keydown', this.switchDay, true)
133
- }
134
- )
153
+ Array.from(this.$el.querySelectorAll('button.day')).forEach((button) => {
154
+ button.removeEventListener('keydown', this.switchDay, true)
155
+ })
135
156
  },
136
157
  updated() {
137
158
  Array.from(this.$el.querySelectorAll('button.day')).forEach((button) => {
@@ -210,8 +231,13 @@ div#fmi-warnings-date-selector.tabs {
210
231
  flex-wrap: nowrap;
211
232
  }
212
233
 
234
+ :deep(div.fmi-warnings-date-wrapper>ul.nav.nav-tabs.fmi-warnings-date-nav>li.nav-item) {
235
+ flex: 1;
236
+ margin: 0;
237
+ }
238
+
213
239
  :deep(div.fmi-warnings-date-wrapper li.nav-item button.day) {
214
- width: $day-small-width;
240
+ width: 100%;
215
241
  height: $day-small-height;
216
242
  border-radius: 0;
217
243
  border: 0;
@@ -222,8 +248,8 @@ div#fmi-warnings-date-selector.tabs {
222
248
  }
223
249
 
224
250
  :deep(button.day div.date-selector-cell) {
225
- height: $day-small-height;
226
- overflow: hidden;
251
+ min-height: $day-small-height;
252
+ overflow: visible;
227
253
  }
228
254
 
229
255
  :deep(button.day) {
@@ -298,7 +324,7 @@ div#fmi-warnings-date-selector.tabs {
298
324
  }
299
325
 
300
326
  :deep(div.tab-content) {
301
- margin-top: 4px;
327
+ margin-top: 20px;
302
328
  }
303
329
 
304
330
  @media (max-width: 767px) {
@@ -318,6 +344,5 @@ div#fmi-warnings-date-selector.tabs {
318
344
  :deep(button.day div.date-selector-cell) {
319
345
  height: $day-small-mobile-height;
320
346
  }
321
-
322
347
  }
323
348
  </style>
@@ -1,21 +1,27 @@
1
1
  <template>
2
- <div class="current-description-row" :class="theme">
3
- <div class="current-description-image-cell" aria-hidden="true">
2
+ <div
3
+ class="current-description-row"
4
+ :class="theme"
5
+ >
6
+ <div
7
+ class="current-description-image-cell"
8
+ aria-hidden="true"
9
+ >
4
10
  <div
5
11
  :class="`current-description-image warning-image symbol-image transform-rotate-${rotation} level-${input.severity} ${typeClass}`"
6
12
  :aria-label="`${warningLevel} ${warningTitle.toLowerCase()}${warningDetails}`"
7
13
  >
8
14
  <span
9
15
  :class="`symbol-text transform-rotate-${invertedRotation} region-warning-symbol-text`"
10
- >{{ input.text }}</span
11
- >
16
+ >{{ input.text }}</span>
12
17
  </div>
13
18
  </div>
14
19
  <div class="current-description-text-cell">
15
20
  <div class="description-info">
16
21
  <span
17
22
  class="warning-valid bold-text"
18
- v-html="`${warningTitle} — ${validText} ${input.validInterval}`" />
23
+ v-html="`${warningTitle} — ${validText} ${input.validInterval}`"
24
+ />
19
25
  <span>
20
26
  {{ info }}
21
27
  </span>
@@ -30,8 +36,7 @@
30
36
  :class="['ext-link', { 'd-none': linkHidden }]"
31
37
  :href="`${input.link}`"
32
38
  target="_blank"
33
- >{{ input.linkText }}</a
34
- >
39
+ >{{ input.linkText }}</a>
35
40
  </div>
36
41
  </div>
37
42
  </div>
@@ -58,7 +63,9 @@ export default {
58
63
  if (this.input.text == null || this.input.direction == null) {
59
64
  return ''
60
65
  }
61
- return ` (${this.input.text} m/s ${this.t("fromDirection")} ${this.input.direction + 180}°)`
66
+ return ` (${this.input.text} m/s ${this.t('fromDirection')} ${
67
+ this.input.direction + 180
68
+ }°)`
62
69
  },
63
70
  info() {
64
71
  return this.input.info[this.language]
@@ -1,5 +1,9 @@
1
1
  <template>
2
- <div v-if="grayScaleSelector" id="gray-scale-select-row" :class="theme">
2
+ <div
3
+ v-if="grayScaleSelector"
4
+ id="gray-scale-select-row"
5
+ :class="theme"
6
+ >
3
7
  <div id="gray-scale-select-text">{{ grayScaleText }}</div>
4
8
  <div id="gray-scale-select-container">
5
9
  <div
@@ -15,11 +19,12 @@
15
19
  @mousedown="preventEvents"
16
20
  @click="toggleGrayScale"
17
21
  @keydown.enter="toggleGrayScale"
18
- @keydown.space="toggleGrayScale">
19
- <span>
20
- {{ toggleText }}
21
- </span>
22
- </div>
22
+ @keydown.space="toggleGrayScale"
23
+ >
24
+ <span>
25
+ {{ toggleText }}
26
+ </span>
27
+ </div>
23
28
  </div>
24
29
  </div>
25
30
  </template>