comand-component-library 4.0.2 → 4.0.3

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/README.md +32 -32
  2. package/dist/comand-component-library.js +3264 -1450
  3. package/dist/comand-component-library.umd.cjs +3 -4
  4. package/dist/index.html +16 -16
  5. package/dist/style.css +1 -1
  6. package/dist/styles/demopage-only.css +4 -0
  7. package/dist/styles/templates/casual.css +3 -0
  8. package/package.json +4 -4
  9. package/src/App.vue +2117 -0
  10. package/src/ComponentLibrary.vue +150 -586
  11. package/src/assets/data/fake-select-options.json +3 -2
  12. package/src/assets/data/form-elements.json +1 -1
  13. package/src/assets/styles/global-styles.scss +17 -4
  14. package/src/componentSettingsDataAndControls.vue +705 -0
  15. package/src/components/CmdAddressData.vue +1 -2
  16. package/src/components/CmdBox.vue +60 -42
  17. package/src/components/CmdCopyrightInformation.vue +5 -3
  18. package/src/components/CmdFakeSelect.vue +138 -67
  19. package/src/components/CmdFancyBox.vue +2 -2
  20. package/src/components/CmdFormElement.vue +53 -27
  21. package/src/components/CmdGoogleMaps.vue +5 -0
  22. package/src/components/CmdHeadline.vue +13 -5
  23. package/src/components/CmdIcon.vue +6 -2
  24. package/src/components/CmdImage.vue +6 -1
  25. package/src/components/CmdImageGallery.vue +15 -4
  26. package/src/components/CmdInputGroup.vue +76 -24
  27. package/src/components/CmdListOfLinks.vue +20 -7
  28. package/src/components/CmdListOfRequirements.vue +10 -18
  29. package/src/components/CmdLoginForm.vue +14 -2
  30. package/src/components/CmdMainNavigation.vue +5 -1
  31. package/src/components/CmdMultistepFormProgressBar.vue +12 -7
  32. package/src/components/CmdOpeningHoursItem.vue +1 -3
  33. package/src/components/CmdPagination.vue +5 -1
  34. package/src/components/CmdSiteFooter.vue +11 -1
  35. package/src/components/CmdSiteHeader.vue +1 -0
  36. package/src/components/CmdSlideButton.vue +7 -1
  37. package/src/components/CmdSlideshow.vue +33 -5
  38. package/src/components/CmdSocialNetworks.vue +18 -13
  39. package/src/components/CmdSocialNetworksItem.vue +5 -1
  40. package/src/components/CmdSystemMessage.vue +7 -1
  41. package/src/components/CmdTabs.vue +5 -5
  42. package/src/components/CmdTextImageBlock.vue +11 -2
  43. package/src/components/CmdThumbnailScroller.vue +22 -4
  44. package/src/components/CmdTooltip.vue +49 -14
  45. package/src/components/CmdTooltipForFormElements.vue +96 -0
  46. package/src/components/CmdUploadForm.vue +25 -20
  47. package/src/components/CmdWidthLimitationWrapper.vue +1 -1
  48. package/src/components/ComponentSettings.vue +1 -1
  49. package/src/main.js +1 -1
  50. package/src/assets/data/accordion.json +0 -45
@@ -28,7 +28,11 @@ export default {
28
28
  */
29
29
  type: {
30
30
  type: String,
31
- default: "auto"
31
+ default: "auto",
32
+ validator(value) {
33
+ return value === "auto" ||
34
+ value === "iconify"
35
+ }
32
36
  },
33
37
  /**
34
38
  * icon-class for icon from local iconfont
@@ -65,7 +69,7 @@ export default {
65
69
 
66
70
  <style>
67
71
  .iconify {
68
- font-size: var(--icon-size);
72
+ font-size: var(--default-icon-size);
69
73
  vertical-align: text-bottom;
70
74
 
71
75
  & + span, span + & {
@@ -376,6 +376,11 @@ export default {
376
376
  display: block;
377
377
  }
378
378
 
379
+ figcaption {
380
+ border-bottom-left-radius: var(--default-border-radius);
381
+ border-bottom-right-radius: var(--default-border-radius);
382
+ }
383
+
379
384
  &.text-center {
380
385
  figcaption {
381
386
  text-align: center;
@@ -401,7 +406,7 @@ export default {
401
406
  transform: translateX(-50%) translateY(-50%);
402
407
  font-size: 10rem;
403
408
  color: var(--pure-white);
404
- text-shadow: var(--text-shadow);
409
+ text-shadow: var(--default-text-shadow);
405
410
  z-index: 10;
406
411
  }
407
412
 
@@ -15,13 +15,13 @@
15
15
  href="#"
16
16
  @click.prevent="showFancyBox(index)"
17
17
  :title="getMessage('cmdimagegallery.tooltip.open_large_image')">
18
- <CmdImage :image="image.image" :figcaption="image.figcaption"/>
18
+ <CmdImage :image="image.image" :figcaption="figcaption(image)"/>
19
19
  </a>
20
20
  <!-- end images linked to fancybox -->
21
21
 
22
22
  <!-- begin images not linked to fancybox -->
23
23
  <div v-else v-for="(image, index) in images" :key="`i${index}`" class="image-wrapper">
24
- <CmdImage :image="image.image" :figcaption="image.figcaption"/>
24
+ <CmdImage :image="image.image" :figcaption="figcaption(image)"/>
25
25
  </div>
26
26
  <!-- end images not linked to fancybox -->
27
27
  </template>
@@ -89,7 +89,11 @@ export default {
89
89
  */
90
90
  figcaptionPosition: {
91
91
  type: String,
92
- default: "bottom"
92
+ required: false,
93
+ validator(value) {
94
+ return value === "top" ||
95
+ value === "bottom"
96
+ }
93
97
  }
94
98
  },
95
99
  methods: {
@@ -107,6 +111,13 @@ export default {
107
111
  }
108
112
  }
109
113
  },
114
+ figcaption(image) {
115
+ const figcaption = {...image.figcaption}
116
+ if(this.figcaptionPosition) {
117
+ figcaption.position = this.figcaptionPosition
118
+ }
119
+ return figcaption
120
+ },
110
121
  onAddItem() {
111
122
  this.editModeContext.content.addContent(
112
123
  buildComponentPath(this, 'props', 'images', -1),
@@ -162,7 +173,7 @@ export default {
162
173
 
163
174
  img {
164
175
  border: var(--default-border);
165
- border-radius: var(--border-radius);
176
+ border-radius: var(--default-border-radius);
166
177
  max-height: 30rem;
167
178
  }
168
179
 
@@ -2,19 +2,22 @@
2
2
  <div :class="[
3
3
  'cmd-input-group label',
4
4
  validationStatus,
5
- {inline: labelInline,
6
- 'multiple-switch': multipleSwitch,
7
- disabled: disabled,
8
- 'toggle-switch': toggleSwitch,
9
- 'has-state': validationStatus
5
+ {
6
+ inline: labelInline,
7
+ 'multiple-switch': multipleSwitch,
8
+ disabled: disabled,
9
+ 'toggle-switch': toggleSwitch,
10
+ 'has-state': validationStatus
10
11
  }
11
12
  ]"
12
13
  :aria-labelledby="htmlId">
14
+
15
+ <!-- begin label -->
13
16
  <span v-show="showLabel" class="label-text">
14
- <span :id="htmlId">{{ labelText }}<sup v-if="required">*</sup></span>
17
+ <span :id="htmlId">{{ labelText }}<sup v-if="required">*</sup></span>
15
18
 
16
- <!-- begin CmdTooltipForInputElements -->
17
- <CmdTooltipForInputElements
19
+ <!-- begin CmdTooltipForFormElements -->
20
+ <CmdTooltipForFormElements
18
21
  v-if="useCustomTooltip && (validationStatus === '' || validationStatus === 'error')"
19
22
  ref="tooltip"
20
23
  :showRequirements="showRequirements"
@@ -27,9 +30,10 @@
27
30
  :relatedId="tooltipId"
28
31
  :role="validationStatus === 'error' ? 'alert' : 'dialog'"
29
32
  />
30
- <!-- end CmdTooltipForInputElements -->
33
+ <!-- end CmdTooltipForFormElements -->
31
34
 
32
- <a v-if="required || inputRequirements.length"
35
+ <!-- begin status-icon -->
36
+ <a v-if="(required || inputRequirements.length > 0) && showStatusIcon"
33
37
  href="#"
34
38
  @click.prevent
35
39
  :title="validationTooltip"
@@ -40,7 +44,11 @@
40
44
  <CmdIcon :iconClass="getStatusIconClass"/>
41
45
  <!-- end CmdIcon -->
42
46
  </a>
47
+ <!-- end status-icon -->
43
48
  </span>
49
+ <!-- end label -->
50
+
51
+ <!-- begin view without slot -->
44
52
  <span v-if="!useSlot" :class="['flex-container', {'no-flex': !stretchHorizontally, 'no-gap': multipleSwitch}]">
45
53
  <label v-for="(inputElement, index) in inputElements" :key="index" :for="inputElement.id">
46
54
  <input
@@ -53,12 +61,16 @@
53
61
  :class="{'replace-input-type': replaceInputType, 'toggle-switch': toggleSwitch}"
54
62
  />
55
63
  <!-- begin CmdIcon -->
56
- <CmdIcon v-if="multipleSwitch && inputElement.iconClass" :iconClass="inputElement.iconClass"
57
- :type="inputElement.iconType"/>
64
+ <CmdIcon
65
+ v-if="multipleSwitch && inputElement.iconClass"
66
+ :iconClass="inputElement.iconClass"
67
+ :type="inputElement.iconType"
68
+ />
58
69
  <!-- end CmdIcon -->
59
- <span v-if="inputElement.labelText">{{ inputElement.labelText }}</span>
70
+ <span v-if="inputElement.labelText" class="label-text">{{ inputElement.labelText }}</span>
60
71
  </label>
61
72
  </span>
73
+ <!-- end view without slot -->
62
74
 
63
75
  <!-- begin useSlot -->
64
76
  <div v-else class="flex-container no-flex">
@@ -82,11 +94,6 @@ export default {
82
94
  Identifier,
83
95
  Tooltip
84
96
  ],
85
- data() {
86
- return {
87
- value: ""
88
- }
89
- },
90
97
  props: {
91
98
  /**
92
99
  * set value for v-model (must be named modelValue in vue3 if default v-model should be used)
@@ -102,6 +109,13 @@ export default {
102
109
  type: Boolean,
103
110
  default: false
104
111
  },
112
+ /**
113
+ * activate if interactive status-icon (to show requirements) should be shown inline with label
114
+ */
115
+ showStatusIcon: {
116
+ type: Boolean,
117
+ default: true
118
+ },
105
119
  /**
106
120
  * list of input-elements inside group
107
121
  *
@@ -118,18 +132,29 @@ export default {
118
132
  */
119
133
  inputTypes: {
120
134
  type: String,
121
- default: "radio"
135
+ default: "radio",
136
+ validator(value) {
137
+ return value === "checkbox" ||
138
+ value === "radio"
139
+ }
122
140
  },
123
141
  /**
124
142
  * set status for label and inner form-elements
125
143
  *
126
- * @allowedValues: error, warning, success, info
144
+ * @allowedValues: "", error, warning, success, info
127
145
  *
128
146
  * @affectsStyling: true
129
147
  */
130
148
  status: {
131
149
  type: String,
132
- required: false
150
+ required: false,
151
+ validator(value) {
152
+ return value === "" ||
153
+ value === "error" ||
154
+ value === "warning" ||
155
+ value === "success" ||
156
+ value === "info"
157
+ }
133
158
  },
134
159
  /**
135
160
  * for replacing native checkboxes/radio-buttons by custom ones (based on frontend-framework)
@@ -267,6 +292,7 @@ export default {
267
292
  </script>
268
293
 
269
294
  <style>
295
+ /* begin cmd-input-group ------------------------------------------------------------------------------------------ */
270
296
  .cmd-input-group {
271
297
  &.inline {
272
298
  display: flex;
@@ -279,24 +305,50 @@ export default {
279
305
  }
280
306
 
281
307
  /* overwrite default behavior from frontend-framework */
282
- .label-text {
308
+ > .label-text {
283
309
  display: inline-flex;
310
+ margin-bottom: calc(var(--default-margin) / 2);
284
311
 
285
- > span + a [class*="icon-"] {
312
+ > span + a:has([class*="icon-"]) {
286
313
  margin-left: calc(var(--default-margin) / 2);
287
314
  }
315
+
316
+ &:hover, &:active, &:focus {
317
+ span {
318
+ color: var(--hyperlink-color-highlighted)
319
+ }
320
+
321
+ & + .flex-container {
322
+ label:not(:has(input:checked)) .label-text {
323
+ color: var(--default-text-color);
324
+ }
325
+
326
+ input {
327
+ border-color: var(--default-border-color);
328
+ }
329
+ }
330
+ }
288
331
  }
289
332
 
290
333
  &.has-state {
291
- label {
334
+ &.error {
335
+ --status-color: var(--error-color);
336
+ }
337
+
338
+ label, [class*="icon-"] {
292
339
  color: var(--status-color);
293
340
  }
294
341
 
295
342
  &.multiple-switch {
296
343
  label {
297
344
  border-color: var(--status-color);
345
+
346
+ > * {
347
+ color: var(--status-color);
348
+ }
298
349
  }
299
350
  }
300
351
  }
301
352
  }
353
+ /* end cmd-input-group ------------------------------------------------------------------------------------------ */
302
354
  </style>
@@ -8,7 +8,7 @@
8
8
  <!-- end cmd-headline -->
9
9
 
10
10
  <!-- begin list of links -->
11
- <ul :class="['flex-container', {'no-gap': !useGap},'align-' + align, setStretchClass]">
11
+ <ul :class="['flex-container', {'no-gap': !useGap}, 'align-' + align, setStretchClass]">
12
12
  <CmdListOfLinksItem
13
13
  v-if="!editModeContext"
14
14
  v-for="(link, index) in links"
@@ -106,7 +106,12 @@ export default {
106
106
  */
107
107
  align: {
108
108
  type: String,
109
- default: "left"
109
+ default: "left",
110
+ validator(value) {
111
+ return value === "left" ||
112
+ value === "center" ||
113
+ value === "right"
114
+ }
110
115
  },
111
116
  /**
112
117
  * properties for CmdHeadline-component
@@ -129,7 +134,11 @@ export default {
129
134
  */
130
135
  orientation: {
131
136
  type: String,
132
- default: "vertical"
137
+ default: "vertical",
138
+ validator(value) {
139
+ return value === "horizontal" ||
140
+ value === "vertical"
141
+ }
133
142
  }
134
143
  },
135
144
  computed: {
@@ -183,6 +192,14 @@ export default {
183
192
  list-style: none;
184
193
  margin-left: 0;
185
194
  }
195
+
196
+ &.align-center {
197
+ justify-content: center;
198
+ }
199
+
200
+ &.align-right li {
201
+ text-align: right;
202
+ }
186
203
  }
187
204
 
188
205
  &.horizontal {
@@ -195,10 +212,6 @@ export default {
195
212
  display: flex;
196
213
  }
197
214
 
198
- &.align-center {
199
- justify-content: center;
200
- }
201
-
202
215
  &.align-right {
203
216
  justify-content: flex-end;
204
217
  }
@@ -2,7 +2,7 @@
2
2
  <div class="cmd-list-of-requirements">
3
3
  <!-- begin CmdHeadline -->
4
4
  <CmdHeadline v-if="showHeadline" :headline-level="cmdHeadline.headlineLevel">
5
- {{ headlineRequirements }}<template v-if="labelText"><br/><em>{{ labelText }}</em></template>
5
+ {{ headlineRequirements }}<template v-if="labelText"><br/><em>{{ labelText }}</em></template>
6
6
  </CmdHeadline>
7
7
  <!-- end CmdHeadline -->
8
8
 
@@ -154,27 +154,23 @@ export default {
154
154
  /* begin cmd-list-of-requirements ------------------------------------------------------------------------------------------ */
155
155
  .cmd-list-of-requirements {
156
156
  dl {
157
- .error {
158
- --status-color: var(--error-color);
157
+ span[class*="icon-"] {
158
+ color: var(--status-color);
159
+ }
159
160
 
160
- [class*="icon-"] {
161
- color: var(--status-color);
162
- }
161
+ .error, .error span {
162
+ --status-color: var(--error-color);
163
163
  }
164
164
 
165
- .warning {
165
+ .warning, .warning span {
166
166
  --status-color: var(--warning-color);
167
167
  }
168
168
 
169
- .success {
170
- --status-color: var(--success-color) !important;
171
-
172
- [class*="icon-"] {
173
- color: var(--status-color);
174
- }
169
+ .success, .success span {
170
+ --status-color: var(--success-color);
175
171
  }
176
172
 
177
- .info {
173
+ .info, .info span {
178
174
  --status-color: var(--info-color);
179
175
  }
180
176
 
@@ -182,10 +178,6 @@ export default {
182
178
  color: var(--status-color);
183
179
  }
184
180
 
185
- [class*="icon-"] {
186
- color: var(--status-color);
187
- }
188
-
189
181
  & ~ a {
190
182
  display: flex;
191
183
  align-items: center;
@@ -15,6 +15,7 @@
15
15
  <CmdFormElement
16
16
  element="input"
17
17
  type="text"
18
+ ref="username"
18
19
  :name="cmdFormElementUsername.name"
19
20
  :id="cmdFormElementUsername.id"
20
21
  v-model="username"
@@ -46,7 +47,7 @@
46
47
  <div class="option-wrapper flex-container">
47
48
  <template v-if="options.forgotPassword || options.createAccount">
48
49
  <!-- begin link for 'forgot password' -->
49
- <a v-if="options.forgotPassword" href="#" @click.prevent="sendLogin = true">
50
+ <a v-if="options.forgotPassword" href="#" @click.prevent="toggleSendLoginView">
50
51
  <!-- begin CmdIcon -->
51
52
  <CmdIcon v-if="options.forgotPassword.icon?.show && options.forgotPassword.icon?.iconClass"
52
53
  :iconClass="options.forgotPassword.icon.iconClass"
@@ -134,7 +135,7 @@
134
135
  <!-- end CmdFormElement -->
135
136
 
136
137
  <div class="option-wrapper flex-container">
137
- <a href="#" @click.prevent="sendLogin = false">
138
+ <a href="#" @click.prevent="toggleSendLoginView">
138
139
  <!-- begin CmdIcon -->
139
140
  <CmdIcon
140
141
  v-if="options.backToLoginForm && options.backToLoginForm.icon && options.backToLoginForm.icon.show && options.backToLoginForm.icon.iconClass"
@@ -392,6 +393,17 @@ export default {
392
393
  }
393
394
  },
394
395
  methods: {
396
+ toggleSendLoginView() {
397
+ this.sendLogin = !this.sendLogin
398
+
399
+ this.$nextTick(() => {
400
+ if(this.sendLogin) {
401
+ this.$refs.sendPassword.setFocus()
402
+ } else {
403
+ this.$refs.username.setFocus()
404
+ }
405
+ })
406
+ },
395
407
  modelChange() {
396
408
  this.$emit("update:modelValue", { "username": this.username, "password": this.password })
397
409
  },
@@ -219,7 +219,11 @@ export default {
219
219
  */
220
220
  offcanvasPosition: {
221
221
  type: String,
222
- default: "right"
222
+ default: "right",
223
+ validator(value) {
224
+ return value === "right" ||
225
+ value === "left"
226
+ }
223
227
  },
224
228
  /**
225
229
  * button to open off-canvas-navigation
@@ -119,7 +119,8 @@ export default {
119
119
  gap: var(--default-gap);
120
120
 
121
121
  li {
122
- border: var(--default-border) !important;
122
+ border: var(--default-border);
123
+ border-color: var(--primary-color-reduced-opacity);
123
124
  border-radius: var(--default-border-radius);;
124
125
 
125
126
  a, a.active {
@@ -138,6 +139,14 @@ export default {
138
139
  color: var(--default-text-color) !important;
139
140
  }
140
141
  }
142
+
143
+ &.active {
144
+ border-color: var(--primary-color);
145
+
146
+ & ~li {
147
+ border-color: var(--border-color);
148
+ }
149
+ }
141
150
  }
142
151
  }
143
152
 
@@ -174,7 +183,7 @@ export default {
174
183
  border: var(--default-border);
175
184
  border-radius: var(--full-circle);
176
185
  background: var(--pure-white);
177
- color: var(--text-color);
186
+ color: var(--default-text-color);
178
187
  margin: 0;
179
188
  position: absolute;
180
189
  right: 0;
@@ -219,10 +228,6 @@ export default {
219
228
  }
220
229
  }
221
230
 
222
- &:not(:first-child) {
223
- border-left: .2rem solid var(--border-color);
224
- }
225
-
226
231
  &:last-child {
227
232
  a {
228
233
  [class*="icon-"] {
@@ -247,7 +252,7 @@ export default {
247
252
 
248
253
  & + [class*="icon-"] {
249
254
  &:last-child {
250
- color: var(--text-color);
255
+ color: var(--default-text-color);
251
256
  }
252
257
  }
253
258
  }
@@ -197,13 +197,11 @@ export default {
197
197
  toggleClosedStatus(period) {
198
198
  period === 'am' ? this.editableDay.amClosed = !this.editableDay.amClosed : this.editableDay.pmClosed = !this.editableDay.pmClosed
199
199
  },
200
- getTime(time, suffix) {
200
+ getTime(time) {
201
201
  if (this.timeFormatter) {
202
202
  return this.timeFormatter(time.hours, time.mins)
203
203
  }
204
204
 
205
- console.log("suffix", suffix)
206
-
207
205
  return timeFormatting(":", " " + this.abbreviationTextAm, " " + this.abbreviationTextPm, false)(time.hours, time.mins)
208
206
  },
209
207
  updateHandlerProvider() {
@@ -90,7 +90,11 @@ export default {
90
90
  */
91
91
  linkType: {
92
92
  type: String,
93
- default: "href"
93
+ default: "href",
94
+ validator(value) {
95
+ return value === "href" ||
96
+ value === "button"
97
+ }
94
98
  },
95
99
  /**
96
100
  * link to switch to previous page
@@ -17,7 +17,11 @@ export default {
17
17
  */
18
18
  orientation: {
19
19
  type: String,
20
- default: 'horizontal'
20
+ default: "horizontal",
21
+ validator(value) {
22
+ return value === "horizontal" ||
23
+ value === "vertical"
24
+ }
21
25
  }
22
26
  }
23
27
  }
@@ -29,6 +33,8 @@ export default {
29
33
  padding: var(--grid-gap) 0;
30
34
  border-top: var(--default-border);
31
35
  background: var(--default-background-color);
36
+ margin-top: auto;
37
+ flex: none;
32
38
 
33
39
  footer {
34
40
  max-width: var(--max-width);
@@ -46,6 +52,10 @@ export default {
46
52
  width: 100%;
47
53
  flex: none;
48
54
  }
55
+
56
+ + .cmd-copyright-information {
57
+ margin-top: 0;
58
+ }
49
59
  }
50
60
  </style>
51
61
 
@@ -123,6 +123,7 @@ export default {
123
123
  grid-area: site-header;
124
124
  display: flex;
125
125
  flex-direction: column;
126
+ flex: none;
126
127
  border-bottom: var(--default-border);
127
128
  background: var(--color-scheme-background-color);
128
129
 
@@ -21,7 +21,13 @@ export default {
21
21
  */
22
22
  slideButtonType: {
23
23
  type: String,
24
- default: "next"
24
+ default: "next",
25
+ validator(value) {
26
+ return value === "next" ||
27
+ value === "prev" ||
28
+ value === "up" ||
29
+ value === "down"
30
+ }
25
31
  },
26
32
  /**
27
33
  * default slide-buttons
@@ -180,12 +180,15 @@ export default {
180
180
  }
181
181
  },
182
182
  beforeUnmount() {
183
- if (this.hnd !== null) {
184
- window.clearInterval(this.hnd);
185
- this.hnd = null;
186
- }
183
+ this.stopAutoplay()
187
184
  },
188
185
  methods: {
186
+ stopAutoplay() {
187
+ if (this.hnd !== null) {
188
+ window.clearInterval(this.hnd);
189
+ this.hnd = null;
190
+ }
191
+ },
189
192
  itemProvider() {
190
193
  return {
191
194
  "image": {
@@ -302,6 +305,19 @@ export default {
302
305
  immediate: true,
303
306
  deep: true
304
307
  },
308
+ autoplay() {
309
+ if(this.autoplay) {
310
+ this.setupSlider()
311
+ } else {
312
+ this.stopAutoplay()
313
+ }
314
+ },
315
+ autoplayInterval() {
316
+ if(this.autoplay) {
317
+ this.stopAutoplay()
318
+ this.setupSlider()
319
+ }
320
+ },
305
321
  currentItem() {
306
322
  // wait to nextTick to ensure ref is available
307
323
  this.$nextTick(() => {
@@ -334,6 +350,18 @@ export default {
334
350
  background: var(--primary-color);
335
351
  }
336
352
 
353
+ &:has(figcaption) {
354
+ img {
355
+ border-bottom-left-radius: 0;
356
+ border-bottom-right-radius: 0;
357
+ }
358
+
359
+ figcaption {
360
+ border-bottom-left-radius: var(--default-border-radius);
361
+ border-bottom-right-radius: var(--default-border-radius);
362
+ }
363
+ }
364
+
337
365
  .inner-slideshow-wrapper {
338
366
  display: flex;
339
367
  justify-content: center;
@@ -441,7 +469,7 @@ export default {
441
469
  top: .5rem;
442
470
  right: 5.5rem;
443
471
  padding: 0 0.2rem;
444
- border-radius: var(--border-radius);
472
+ border-radius: var(--default-border-radius);
445
473
  background: var(--pure-white-reduced-opacity);
446
474
  }
447
475
  }