comand-component-library 4.0.2 → 4.0.4
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +32 -32
- package/dist/comand-component-library.js +3315 -1486
- package/dist/comand-component-library.umd.cjs +3 -4
- package/dist/index.html +16 -16
- package/dist/style.css +1 -1
- package/dist/styles/demopage-only.css +4 -0
- package/dist/styles/templates/casual.css +3 -0
- package/package.json +4 -4
- package/src/App.vue +2117 -0
- package/src/ComponentLibrary.vue +275 -610
- package/src/assets/data/fake-select-options.json +3 -2
- package/src/assets/data/form-elements.json +1 -1
- package/src/assets/styles/{global-styles.scss → component-library-global-styles.scss} +27 -14
- package/src/componentSettingsDataAndControls.vue +705 -0
- package/src/components/CmdAddressData.vue +1 -2
- package/src/components/CmdBox.vue +106 -52
- package/src/components/CmdCopyrightInformation.vue +5 -3
- package/src/components/CmdFakeSelect.vue +149 -78
- package/src/components/CmdFancyBox.vue +2 -2
- package/src/components/CmdFormElement.vue +62 -36
- package/src/components/CmdGoogleMaps.vue +5 -0
- package/src/components/CmdHeadline.vue +13 -5
- package/src/components/CmdIcon.vue +6 -2
- package/src/components/CmdImage.vue +6 -1
- package/src/components/CmdImageGallery.vue +15 -4
- package/src/components/CmdInputGroup.vue +87 -35
- package/src/components/CmdListOfLinks.vue +20 -7
- package/src/components/CmdListOfRequirements.vue +10 -18
- package/src/components/CmdLoginForm.vue +14 -2
- package/src/components/CmdMainNavigation.vue +5 -1
- package/src/components/CmdMultistepFormProgressBar.vue +13 -8
- package/src/components/CmdNewsletterSubscription.vue +18 -1
- package/src/components/CmdOpeningHoursItem.vue +1 -3
- package/src/components/CmdPagination.vue +5 -1
- package/src/components/CmdSiteFooter.vue +12 -2
- package/src/components/CmdSiteHeader.vue +2 -1
- package/src/components/CmdSlideButton.vue +7 -1
- package/src/components/CmdSlideshow.vue +33 -5
- package/src/components/CmdSocialNetworks.vue +18 -13
- package/src/components/CmdSocialNetworksItem.vue +5 -1
- package/src/components/CmdSystemMessage.vue +7 -1
- package/src/components/CmdTabs.vue +7 -7
- package/src/components/CmdTextImageBlock.vue +11 -2
- package/src/components/CmdThumbnailScroller.vue +23 -5
- package/src/components/CmdToggleDarkMode.vue +2 -2
- package/src/components/CmdTooltip.vue +50 -15
- package/src/components/CmdTooltipForFormElements.vue +96 -0
- package/src/components/CmdUploadForm.vue +29 -24
- package/src/components/CmdWidthLimitationWrapper.vue +1 -1
- package/src/components/ComponentSettings.vue +1 -1
- package/src/components/EditComponentWrapper.vue +1 -1
- package/src/main.js +2 -2
- package/src/assets/data/accordion.json +0 -45
@@ -1,7 +1,7 @@
|
|
1
1
|
<template>
|
2
|
+
<!-- begin default-view -->
|
2
3
|
<div v-if="!editModeContext || settingsContext || mainSidebarContext"
|
3
4
|
:class="['cmd-headline', {'has-pre-headline-text': preHeadlineText, 'has-icon': headlineIcon?.iconClass}, getTextAlign]">
|
4
|
-
|
5
5
|
<template v-if="preHeadlineText">
|
6
6
|
<component v-if="headlineText" :is="headlineTag">
|
7
7
|
<!-- begin CmdIcon -->
|
@@ -21,17 +21,20 @@
|
|
21
21
|
</span>
|
22
22
|
</component>
|
23
23
|
</template>
|
24
|
-
<component v-else
|
24
|
+
<component v-else :is="headlineTag">
|
25
25
|
<!-- begin CmdIcon -->
|
26
26
|
<CmdIcon v-if="headlineIcon" :iconClass="headlineIcon?.iconClass" :type="headlineIcon?.iconType"/>
|
27
27
|
<!-- end CmdIcon -->
|
28
|
+
|
28
29
|
<span>
|
29
|
-
|
30
|
-
|
30
|
+
<!-- being slot -->
|
31
|
+
<slot>{{ headlineText }}</slot>
|
31
32
|
<!-- end slot -->
|
32
33
|
</span>
|
33
34
|
</component>
|
34
35
|
</div>
|
36
|
+
<!-- end default-view -->
|
37
|
+
|
35
38
|
<!-- begin edit-mode -->
|
36
39
|
<EditComponentWrapper
|
37
40
|
v-else
|
@@ -142,7 +145,12 @@ export default {
|
|
142
145
|
*/
|
143
146
|
textAlign: {
|
144
147
|
type: String,
|
145
|
-
default: null
|
148
|
+
default: null,
|
149
|
+
validator(value) {
|
150
|
+
return value === "left" ||
|
151
|
+
value === "center" ||
|
152
|
+
value === "right"
|
153
|
+
}
|
146
154
|
}
|
147
155
|
},
|
148
156
|
computed: {
|
@@ -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
|
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
|
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
|
-
|
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,36 @@
|
|
2
2
|
<div :class="[
|
3
3
|
'cmd-input-group label',
|
4
4
|
validationStatus,
|
5
|
-
{
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
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
|
-
|
17
|
+
<span :id="htmlId">{{ labelText }}<sup v-if="required">*</sup></span>
|
18
|
+
|
19
|
+
<!-- begin status-icon -->
|
20
|
+
<a v-if="(required || inputRequirements.length > 0) && showStatusIcon"
|
21
|
+
href="#"
|
22
|
+
@click.prevent
|
23
|
+
:title="validationTooltip"
|
24
|
+
:aria-errormessage="tooltipId"
|
25
|
+
aria-live="assertive"
|
26
|
+
:id="tooltipId">
|
27
|
+
<!-- begin CmdIcon -->
|
28
|
+
<CmdIcon :iconClass="getStatusIconClass"/>
|
29
|
+
<!-- end CmdIcon -->
|
30
|
+
</a>
|
31
|
+
<!-- end status-icon -->
|
15
32
|
|
16
|
-
<!-- begin
|
17
|
-
<
|
33
|
+
<!-- begin CmdTooltipForFormElements -->
|
34
|
+
<CmdTooltipForFormElements
|
18
35
|
v-if="useCustomTooltip && (validationStatus === '' || validationStatus === 'error')"
|
19
36
|
ref="tooltip"
|
20
37
|
:showRequirements="showRequirements"
|
@@ -27,20 +44,11 @@
|
|
27
44
|
:relatedId="tooltipId"
|
28
45
|
:role="validationStatus === 'error' ? 'alert' : 'dialog'"
|
29
46
|
/>
|
30
|
-
<!-- end
|
31
|
-
|
32
|
-
<a v-if="required || inputRequirements.length"
|
33
|
-
href="#"
|
34
|
-
@click.prevent
|
35
|
-
:title="validationTooltip"
|
36
|
-
:aria-errormessage="tooltipId"
|
37
|
-
aria-live="assertive"
|
38
|
-
:id="tooltipId">
|
39
|
-
<!-- begin CmdIcon -->
|
40
|
-
<CmdIcon :iconClass="getStatusIconClass"/>
|
41
|
-
<!-- end CmdIcon -->
|
42
|
-
</a>
|
47
|
+
<!-- end CmdTooltipForFormElements -->
|
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
|
57
|
-
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
158
|
-
|
157
|
+
span[class*="icon-"] {
|
158
|
+
color: var(--status-color);
|
159
|
+
}
|
159
160
|
|
160
|
-
|
161
|
-
|
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)
|
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="
|
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="
|
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)
|
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
|
}
|
@@ -261,7 +266,7 @@ export default {
|
|
261
266
|
}
|
262
267
|
|
263
268
|
& ~ li {
|
264
|
-
background: var(--default-background
|
269
|
+
background: var(--default-background);
|
265
270
|
border-left-color: var(--border-color);
|
266
271
|
|
267
272
|
a {
|
@@ -34,7 +34,7 @@
|
|
34
34
|
element="button"
|
35
35
|
:type="buttonType"
|
36
36
|
:disabled="buttonDisabled"
|
37
|
-
:nativeButton="
|
37
|
+
:nativeButton="cmdFormElementSubmitDynamicLabel"
|
38
38
|
@click="sendData"
|
39
39
|
/>
|
40
40
|
<!-- end cmd-form-element -->
|
@@ -145,6 +145,14 @@ export default {
|
|
145
145
|
}
|
146
146
|
},
|
147
147
|
computed: {
|
148
|
+
cmdFormElementSubmitDynamicLabel() {
|
149
|
+
return this.updateButtonLabelText
|
150
|
+
},
|
151
|
+
updateButtonLabelText() {
|
152
|
+
const button = {...this.cmdFormElementSubmit}
|
153
|
+
button.text = this.subscription === "subscribe" ? "Subscribe now" : "Unsubscribe from list"
|
154
|
+
return button
|
155
|
+
},
|
148
156
|
subscription: {
|
149
157
|
get() {
|
150
158
|
return this.modelValue.subscription || "subscribe"
|
@@ -169,6 +177,15 @@ export default {
|
|
169
177
|
checkValidationStatus(event) {
|
170
178
|
this.buttonDisabled = event !== "success"
|
171
179
|
}
|
180
|
+
},
|
181
|
+
watch: {
|
182
|
+
modelValue: {
|
183
|
+
handler() {
|
184
|
+
return this.updateButtonLabelText
|
185
|
+
},
|
186
|
+
deep: true,
|
187
|
+
immediate: true
|
188
|
+
}
|
172
189
|
}
|
173
190
|
}
|
174
191
|
</script>
|
@@ -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
|
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() {
|