comand-component-library 4.0.2 → 4.0.4
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.
- 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() {
|