comand-component-library 4.1.7 → 4.1.9
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/dist/comand-component-library.js +4771 -4715
- package/dist/comand-component-library.umd.cjs +36 -26
- package/dist/style.css +1 -1
- package/package.json +2 -2
- package/src/ComponentLibrary.vue +17 -20
- package/src/assets/data/listOfComponents.json +1 -0
- package/src/assets/styles/component-library-global-styles.scss +9 -0
- package/src/componentSettingsDataAndControls.vue +17 -1
- package/src/components/CmdAddressData.vue +1 -3
- package/src/components/CmdBox.vue +3 -3
- package/src/components/CmdCookieDisclaimer.vue +154 -59
- package/src/components/CmdFakeSelect.vue +4 -4
- package/src/components/CmdFancyBox.vue +113 -72
- package/src/components/CmdFormElement.vue +5 -5
- package/src/components/CmdGoogleMaps.vue +2 -2
- package/src/components/CmdImageGallery.vue +1 -1
- package/src/components/CmdListOfRequirements.vue +2 -2
- package/src/components/CmdMultistepFormProgressBar.vue +7 -7
- package/src/components/CmdPageFooter.vue +11 -2
- package/src/components/CmdPagination.vue +1 -1
- package/src/components/CmdSiteSearch.vue +2 -2
- package/src/components/CmdThumbnailScroller.vue +3 -3
- package/src/components/CmdUploadForm.vue +44 -44
- package/src/mixins/CmdBox/DefaultMessageProperties.js +4 -4
- package/src/mixins/CmdCookieDisclaimer/DefaultMessageProperties.js +3 -2
- package/src/mixins/CmdFakeSelect/DefaultMessageProperties.js +5 -5
- package/src/mixins/CmdFormElement/DefaultMessageProperties.js +5 -5
- package/src/mixins/CmdGoogleMaps/DefaultMessageProperties.js +2 -2
- package/src/mixins/CmdImageGallery/DefaultMessageProperties.js +1 -1
- package/src/mixins/CmdListOfRequirements/DefaultMessageProperties.js +2 -2
- package/src/mixins/CmdPagination/DefaultMessageProperties.js +2 -2
- package/src/mixins/CmdSiteSearch/DefaultMessageProperties.js +2 -6
- package/src/mixins/CmdThumbnailScroller/DefaultMessageProperties.js +3 -3
- package/src/mixins/CmdUploadForm/DefaultMessageProperties.js +45 -45
- package/src/mixins/FieldValidation.js +5 -5
- package/src/mixins/GlobalDefaultMessageProperties.js +7 -7
- package/src/pages/PageWrapper.vue +1 -1
- package/src/mixins/CmdAddressData/DefaultMessageProperties.js +0 -20
@@ -7,7 +7,7 @@
|
|
7
7
|
</template>
|
8
8
|
<!-- end slot -->
|
9
9
|
|
10
|
-
<
|
10
|
+
<div v-else>
|
11
11
|
<!-- begin CmdHeadline -->
|
12
12
|
<CmdHeadline
|
13
13
|
v-if="cmdHeadlineCookieDisclaimer?.show && cmdHeadlineCookieDisclaimer?.headlineText && cmdHeadlineCookieDisclaimer?.headlineLevel"
|
@@ -28,13 +28,9 @@
|
|
28
28
|
/>
|
29
29
|
<!-- end CmdHeadline -->
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
:collapsible="cmdBoxRequiredCookies?.collapsible"
|
35
|
-
:key="index"
|
36
|
-
>
|
37
|
-
<template v-slot:header>
|
31
|
+
<div v-for="(cookie, index) in cookieOptions.required.cookies || []"
|
32
|
+
:key="index" class="collapsible-box">
|
33
|
+
<header>
|
38
34
|
<!-- begin CmdFormElement -->
|
39
35
|
<CmdFormElement
|
40
36
|
element="input"
|
@@ -45,11 +41,17 @@
|
|
45
41
|
:disabled="cookie.disabled"
|
46
42
|
:id="cookie.id"
|
47
43
|
:toggleSwitch="true"
|
48
|
-
:title="getMessage('
|
44
|
+
:title="getMessage('cookie_disclaimer.title.cookie_cannot_be_disabled')"
|
49
45
|
/>
|
50
46
|
<!-- end CmdFormElement -->
|
51
|
-
|
52
|
-
|
47
|
+
|
48
|
+
<!-- begin icon to toggle box-body -->
|
49
|
+
<a href="#" @click.prevent="toggleBoxBody(cookie.id)" :title="getMessage('cookie_disclaimer.title.toggle_box_content')">
|
50
|
+
<span :class="boxIsOpen(cookie.id) ? iconClassBoxExpanded : iconClassBoxCollapsed"></span>
|
51
|
+
</a>
|
52
|
+
<!-- end icon to toggle box-body -->
|
53
|
+
</header>
|
54
|
+
<div v-show="boxIsOpen(cookie.id)" class="collapsible-box-body">
|
53
55
|
<p v-if="cookie.description">{{ cookie.description }}</p>
|
54
56
|
<p v-if="cookie.linkDataPrivacy">
|
55
57
|
{{ cookie.linkDataPrivacy.label }}
|
@@ -60,8 +62,8 @@
|
|
60
62
|
</a>
|
61
63
|
</p>
|
62
64
|
<div v-if="dataPrivacyContent" v-html="dataPrivacyContent"></div>
|
63
|
-
</
|
64
|
-
</
|
65
|
+
</div>
|
66
|
+
</div>
|
65
67
|
<!-- end CmdBox -->
|
66
68
|
</div>
|
67
69
|
<!-- end required cookies -->
|
@@ -78,13 +80,9 @@
|
|
78
80
|
"/>
|
79
81
|
<!-- end CmdHeadline -->
|
80
82
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
:collapsible="cmdBoxOptionalCookies?.collapsible"
|
85
|
-
:key="index"
|
86
|
-
>
|
87
|
-
<template v-slot:header>
|
83
|
+
<div v-for="(cookie, index) in cookieOptions.optional.cookies || []"
|
84
|
+
:key="index" class="collapsible-box">
|
85
|
+
<header>
|
88
86
|
<!-- begin CmdFormElement -->
|
89
87
|
<CmdFormElement
|
90
88
|
element="input"
|
@@ -95,11 +93,17 @@
|
|
95
93
|
:disabled="cookie.disabled"
|
96
94
|
:id="cookie.id"
|
97
95
|
:toggleSwitch="true"
|
98
|
-
:title="getMessage('
|
96
|
+
:title="getMessage('cookie_disclaimer.title.toggle_to_accept_cookie')"
|
99
97
|
/>
|
100
98
|
<!-- end CmdFormElement -->
|
101
|
-
|
102
|
-
|
99
|
+
|
100
|
+
<!-- begin icon to toggle box-body -->
|
101
|
+
<a href="#" @click.prevent="toggleBoxBody(cookie.id)" :title="getMessage('cookie_disclaimer.title.toggle_box_content')">
|
102
|
+
<span :class="boxIsOpen(cookie.id) ? iconClassBoxExpanded : iconClassBoxCollapsed"></span>
|
103
|
+
</a>
|
104
|
+
<!-- end icon to toggle box-body -->
|
105
|
+
</header>
|
106
|
+
<div v-show="boxIsOpen(cookie.id)" class="collapsible-box-body">
|
103
107
|
<p v-if="cookie.description">{{ cookie.description }}</p>
|
104
108
|
<p v-if="cookie.linkDataPrivacy">
|
105
109
|
{{ cookie.linkDataPrivacy.label }}
|
@@ -110,17 +114,16 @@
|
|
110
114
|
</a>
|
111
115
|
</p>
|
112
116
|
<div v-if="dataPrivacyContent" v-html="dataPrivacyContent"></div>
|
113
|
-
</
|
114
|
-
</
|
115
|
-
<!-- end CmdBox -->
|
117
|
+
</div>
|
118
|
+
</div>
|
116
119
|
</div>
|
117
120
|
<!-- end optional cookies -->
|
118
121
|
</slot>
|
119
122
|
<!-- end slot for cookie-options -->
|
120
123
|
|
121
|
-
<!-- begin
|
122
|
-
<
|
123
|
-
<!-- end
|
124
|
+
<!-- begin privacy-text -->
|
125
|
+
<div v-if="privacyText" class="privacy-text" v-html="privacyText"></div>
|
126
|
+
<!-- end privacy-text-->
|
124
127
|
|
125
128
|
<!-- begin button-wrapper for 'accept'-buttons -->
|
126
129
|
<div class="button-wrapper align-center">
|
@@ -132,7 +135,7 @@
|
|
132
135
|
</button>
|
133
136
|
</div>
|
134
137
|
<!-- end button-wrapper for 'accept'-buttons -->
|
135
|
-
</
|
138
|
+
</div>
|
136
139
|
</div>
|
137
140
|
</transition>
|
138
141
|
</template>
|
@@ -148,10 +151,25 @@ export default {
|
|
148
151
|
data() {
|
149
152
|
return {
|
150
153
|
showCookieDisclaimer: true,
|
151
|
-
dataPrivacyContent: ""
|
154
|
+
dataPrivacyContent: "",
|
155
|
+
openBoxes: []
|
152
156
|
}
|
153
157
|
},
|
154
158
|
props: {
|
159
|
+
/**
|
160
|
+
* define icon-class for collapsed box
|
161
|
+
*/
|
162
|
+
iconClassBoxCollapsed: {
|
163
|
+
type: String,
|
164
|
+
default: "icon-chevron-one-stripe-down"
|
165
|
+
},
|
166
|
+
/**
|
167
|
+
* define icon-class for expanded box
|
168
|
+
*/
|
169
|
+
iconClassBoxExpanded: {
|
170
|
+
type: String,
|
171
|
+
default: "icon-chevron-one-stripe-up"
|
172
|
+
},
|
155
173
|
/**
|
156
174
|
* activate if you want to use slot instead for given structure
|
157
175
|
*/
|
@@ -214,6 +232,13 @@ export default {
|
|
214
232
|
type: Object,
|
215
233
|
required: false
|
216
234
|
},
|
235
|
+
/**
|
236
|
+
* optional privacy-text shown at bottom of cookie-disclaimer
|
237
|
+
*/
|
238
|
+
privacyText: {
|
239
|
+
type: String,
|
240
|
+
required: false
|
241
|
+
},
|
217
242
|
/**
|
218
243
|
* label for button to accepting all cookies
|
219
244
|
*/
|
@@ -247,6 +272,22 @@ export default {
|
|
247
272
|
}
|
248
273
|
},
|
249
274
|
methods: {
|
275
|
+
boxIsOpen(cookieId) {
|
276
|
+
console.log("boxOpen", this.openBoxes.includes(cookieId))
|
277
|
+
console.log("cookieId", cookieId)
|
278
|
+
return this.openBoxes.includes(cookieId)
|
279
|
+
},
|
280
|
+
toggleBoxBody(cookieId) {
|
281
|
+
const index = this.openBoxes.indexOf(cookieId);
|
282
|
+
|
283
|
+
if (index === -1) {
|
284
|
+
// cookieId does not exist in the array, so add it
|
285
|
+
this.openBoxes.push(cookieId);
|
286
|
+
} else {
|
287
|
+
// cookieId already exists in the array, so remove it
|
288
|
+
this.openBoxes.splice(index, 1);
|
289
|
+
}
|
290
|
+
},
|
250
291
|
acceptCurrentCookies() {
|
251
292
|
this.$emit("close-cookie-disclaimer", this.acceptedCookies)
|
252
293
|
},
|
@@ -298,49 +339,103 @@ export default {
|
|
298
339
|
bottom: 0;
|
299
340
|
top: auto;
|
300
341
|
|
301
|
-
.
|
302
|
-
|
303
|
-
|
304
|
-
|
342
|
+
.collapsible-box {
|
343
|
+
border-radius: var(--default-border-radius);
|
344
|
+
|
345
|
+
header {
|
346
|
+
display: flex;
|
347
|
+
align-items: center;
|
348
|
+
border: var(--primary-border);
|
305
349
|
justify-content: unset; /* overwrite setting for collapsible boxes */
|
350
|
+
background: var(--primary-color);
|
351
|
+
border-top-left-radius: inherit;
|
352
|
+
border-top-right-radius: inherit;
|
353
|
+
|
354
|
+
&:has(input:checked) {
|
355
|
+
background: var(--pure-white);
|
356
|
+
|
357
|
+
span[class*="icon-"] {
|
358
|
+
color: var(--hyperlink-color);
|
359
|
+
}
|
360
|
+
|
361
|
+
label {
|
362
|
+
.label-text span {
|
363
|
+
color: var(--hyperlink-color); /* required to set label-text in header to white */
|
364
|
+
}
|
365
|
+
}
|
366
|
+
}
|
367
|
+
|
368
|
+
&:has(input:disabled) {
|
369
|
+
background: var(--disabled-background);
|
370
|
+
|
371
|
+
span[class*="icon-"] {
|
372
|
+
color: var(--hyperlink-color);
|
373
|
+
}
|
374
|
+
|
375
|
+
label {
|
376
|
+
.label-text span {
|
377
|
+
color: var(--disabled-color) !important; /* required to set label-text in header to white */
|
378
|
+
}
|
379
|
+
}
|
380
|
+
}
|
381
|
+
|
382
|
+
&:has(a:is(:hover, :active, :focus)) {
|
383
|
+
background: var(--primary-color);
|
384
|
+
|
385
|
+
label .label-text span, span[class*="icon-"] {
|
386
|
+
color: var(--pure-white) !important;
|
387
|
+
}
|
388
|
+
}
|
389
|
+
|
390
|
+
span[class*="icon-"] {
|
391
|
+
color: var(--pure-white);
|
392
|
+
}
|
306
393
|
|
307
394
|
label {
|
308
395
|
padding: calc(var(--default-padding) / 2) var(--default-padding);
|
309
396
|
|
397
|
+
.label-text span {
|
398
|
+
color: var(--pure-white); /* required to set label-text in header to white */
|
399
|
+
}
|
400
|
+
|
310
401
|
&.disabled {
|
311
402
|
.label-text span {
|
312
403
|
color: var(--pure-white) !important; /* required to set label-text in header to white */
|
313
404
|
}
|
314
405
|
}
|
315
406
|
|
316
|
-
|
317
|
-
|
318
|
-
width: 100%;
|
319
|
-
justify-content: flex-end;
|
320
|
-
text-align: right;
|
407
|
+
&:hover, &:active, &:focus {
|
408
|
+
cursor: pointer;
|
321
409
|
}
|
322
|
-
}
|
323
|
-
|
324
|
-
&:hover, &:active, &:focus {
|
325
|
-
background: var(--hyperlink-color);
|
326
410
|
|
327
|
-
|
328
|
-
|
411
|
+
input {
|
412
|
+
&:hover, &:active, &:focus {
|
413
|
+
cursor: pointer;
|
414
|
+
}
|
329
415
|
}
|
330
416
|
}
|
331
|
-
}
|
332
417
|
|
333
|
-
|
334
|
-
|
418
|
+
a {
|
419
|
+
text-decoration: none;
|
420
|
+
flex: 1;
|
421
|
+
display: flex;
|
422
|
+
justify-content: flex-end;
|
423
|
+
padding: var(--default-padding);
|
424
|
+
}
|
335
425
|
}
|
336
|
-
}
|
337
426
|
|
338
|
-
|
339
|
-
|
340
|
-
|
427
|
+
.collapsible-box-body {
|
428
|
+
padding: var(--default-padding);
|
429
|
+
border: var(--default-border);
|
430
|
+
border-top: 0;
|
431
|
+
background: var(--box-background);
|
432
|
+
border-bottom-left-radius: inherit;
|
433
|
+
border-bottom-right-radius: inherit;
|
341
434
|
|
342
|
-
|
343
|
-
|
435
|
+
p:last-child {
|
436
|
+
margin: 0;
|
437
|
+
}
|
438
|
+
}
|
344
439
|
}
|
345
440
|
|
346
441
|
> p {
|
@@ -348,10 +443,6 @@ export default {
|
|
348
443
|
color: var(--color-scheme-text-color); /* must be assigned again, because content is placed by slot */
|
349
444
|
}
|
350
445
|
|
351
|
-
#form-cookies {
|
352
|
-
margin-bottom: var(--default-margin);
|
353
|
-
}
|
354
|
-
|
355
446
|
p {
|
356
447
|
a {
|
357
448
|
text-decoration: underline;
|
@@ -361,6 +452,10 @@ export default {
|
|
361
452
|
}
|
362
453
|
}
|
363
454
|
}
|
455
|
+
|
456
|
+
.privacy-text, .button-wrapper {
|
457
|
+
margin-top: var(--default-gap);
|
458
|
+
}
|
364
459
|
}
|
365
460
|
|
366
461
|
/* end cmd-cookie-disclaimer ------------------------------------------------------------------------------------------ */
|
@@ -382,7 +382,7 @@ export default {
|
|
382
382
|
if (this.modelValue.length === 1) {
|
383
383
|
return this.selectData.find(option => String(option.value) === String(this.modelValue[0]))?.text
|
384
384
|
} else if (this.modelValue.length > 1) {
|
385
|
-
return this.getMessage("
|
385
|
+
return this.getMessage("fake_select.option.options_selected", this.modelValue.length)
|
386
386
|
}
|
387
387
|
} else if (this.selectData?.length) {
|
388
388
|
// return text of first option nothing is selected (and type !== checkboxOptions && type !== content)
|
@@ -421,10 +421,10 @@ export default {
|
|
421
421
|
selectAllOptionsText() {
|
422
422
|
if (Array.isArray(this.modelValue) && this.modelValue.length === this.selectData.length) {
|
423
423
|
this.allOptionsSelected = true
|
424
|
-
return this.getMessage("
|
424
|
+
return this.getMessage("fake_select.linktext.deselect_all_options")
|
425
425
|
}
|
426
426
|
this.allOptionsSelected = false
|
427
|
-
return this.getMessage("
|
427
|
+
return this.getMessage("fake_select.linktext.select_all_options")
|
428
428
|
}
|
429
429
|
},
|
430
430
|
methods: {
|
@@ -497,7 +497,7 @@ export default {
|
|
497
497
|
},
|
498
498
|
// overwrite requirement-message form fieldValidation.js
|
499
499
|
getRequirementMessage() {
|
500
|
-
return this.getMessage("
|
500
|
+
return this.getMessage("fake_select.headline.an_option_is_selected")
|
501
501
|
}
|
502
502
|
},
|
503
503
|
watch: {
|
@@ -10,53 +10,52 @@
|
|
10
10
|
<CmdHeadline
|
11
11
|
v-if="cmdHeadline?.headlineText"
|
12
12
|
v-bind="cmdHeadline"
|
13
|
-
:id="htmlId"
|
14
13
|
/>
|
15
14
|
<!-- end CmdHeadline -->
|
16
15
|
|
17
16
|
<!-- begin button-wrapper -->
|
18
17
|
<div
|
19
|
-
v-if="(
|
18
|
+
v-if="(fancyBoxOptionsProperties.printButtons?.color || fancyBoxOptionsProperties.printButtons?.grayscale) || fancyBoxOptionsProperties.closeIcon"
|
20
19
|
class="button-wrapper no-flex"
|
21
20
|
> <!-- begin print buttons -->
|
22
|
-
<a v-if="showPrintButtons &&
|
21
|
+
<a v-if="showPrintButtons && fancyBoxOptionsProperties.printButtons?.color"
|
23
22
|
href="#"
|
24
23
|
class="button print-color"
|
25
|
-
:title="
|
26
|
-
@click.prevent="
|
24
|
+
:title="fancyBoxOptionsProperties.printButtons.color?.tooltip"
|
25
|
+
@click.prevent="printPage('color')">
|
27
26
|
<!-- begin CmdIcon -->
|
28
27
|
<CmdIcon
|
29
|
-
:iconClass="
|
30
|
-
:type="
|
28
|
+
:iconClass="fancyBoxOptionsProperties.printButtons.color?.iconClass"
|
29
|
+
:type="fancyBoxOptionsProperties.printButtons.color?.iconType"
|
31
30
|
/>
|
32
31
|
<!-- end CmdIcon -->
|
33
32
|
</a>
|
34
|
-
<a v-if="showPrintButtons &&
|
33
|
+
<a v-if="showPrintButtons && fancyBoxOptionsProperties.printButtons?.grayscale"
|
35
34
|
href="#"
|
36
35
|
class="button print-grayscale"
|
37
|
-
:title="
|
38
|
-
@click.prevent="
|
36
|
+
:title="fancyBoxOptionsProperties.printButtons.grayscale?.tooltip"
|
37
|
+
@click.prevent="printPage('grayscale')">
|
39
38
|
<!-- begin CmdIcon -->
|
40
39
|
<CmdIcon
|
41
|
-
:iconClass="
|
42
|
-
:type="
|
40
|
+
:iconClass="fancyBoxOptionsProperties.printButtons.grayscale?.iconClass"
|
41
|
+
:type="fancyBoxOptionsProperties.printButtons.grayscale?.iconType"
|
43
42
|
/>
|
44
43
|
<!-- end CmdIcon -->
|
45
44
|
</a>
|
46
45
|
<!-- end print buttons -->
|
47
46
|
|
48
47
|
<!-- begin close-icon -->
|
49
|
-
<a v-if="
|
48
|
+
<a v-if="fancyBoxOptionsProperties.closeIcon"
|
50
49
|
href="#"
|
51
50
|
class="button"
|
52
51
|
id="close-dialog"
|
53
|
-
:title="
|
52
|
+
:title="fancyBoxOptionsProperties.closeIcon.tooltip"
|
54
53
|
ref="close-dialog"
|
55
54
|
@click.prevent="close">
|
56
55
|
<!-- begin CmdIcon -->
|
57
56
|
<CmdIcon
|
58
|
-
:iconClass="
|
59
|
-
:type="
|
57
|
+
:iconClass="fancyBoxOptionsProperties.closeIcon.iconClass"
|
58
|
+
:type="fancyBoxOptionsProperties.closeIcon.iconType"
|
60
59
|
/>
|
61
60
|
<!-- end CmdIcon -->
|
62
61
|
</a>
|
@@ -94,34 +93,34 @@
|
|
94
93
|
</div>
|
95
94
|
</div>
|
96
95
|
|
97
|
-
<footer v-if="showSubmitButtons &&
|
96
|
+
<footer v-if="showSubmitButtons && fancyBoxOptionsProperties.submitButtons" class="flex-container no-flex">
|
98
97
|
<!-- begin cancel-button -->
|
99
98
|
<button
|
100
|
-
v-if="
|
99
|
+
v-if="fancyBoxOptionsProperties.submitButtons?.cancel"
|
101
100
|
@click="cancel"
|
102
|
-
:title="
|
101
|
+
:title="fancyBoxOptionsProperties.submitButtons.cancel?.tooltip">
|
103
102
|
<CmdIcon
|
104
|
-
v-if="
|
105
|
-
:iconClass="
|
106
|
-
:type="
|
103
|
+
v-if="fancyBoxOptionsProperties.submitButtons.cancel?.iconClass"
|
104
|
+
:iconClass="fancyBoxOptionsProperties.submitButtons.cancel?.iconClass"
|
105
|
+
:type="fancyBoxOptionsProperties.submitButtons.cancel?.iconType"
|
107
106
|
/>
|
108
107
|
<span
|
109
|
-
v-if="
|
108
|
+
v-if="fancyBoxOptionsProperties.submitButtons.cancel?.buttonText">{{ fancyBoxOptionsProperties.submitButtons.cancel?.buttonText }}</span>
|
110
109
|
</button>
|
111
110
|
<!-- end cancel-button -->
|
112
111
|
|
113
112
|
<!-- begin confirm-button -->
|
114
113
|
<button
|
115
|
-
v-if="
|
114
|
+
v-if="fancyBoxOptionsProperties.submitButtons?.confirm"
|
116
115
|
@click="confirm"
|
117
|
-
:title="
|
116
|
+
:title="fancyBoxOptionsProperties.submitButtons.cancel?.tooltip">
|
118
117
|
<CmdIcon
|
119
|
-
v-if="
|
120
|
-
:iconClass="
|
121
|
-
:type="
|
118
|
+
v-if="fancyBoxOptionsProperties.submitButtons.confirm?.iconClass"
|
119
|
+
:iconClass="fancyBoxOptionsProperties.submitButtons.confirm?.iconClass"
|
120
|
+
:type="fancyBoxOptionsProperties.submitButtons.confirm?.iconType"
|
122
121
|
/>
|
123
122
|
<span
|
124
|
-
v-if="
|
123
|
+
v-if="fancyBoxOptionsProperties.submitButtons.confirm?.buttonText">{{ fancyBoxOptionsProperties.submitButtons.confirm?.buttonText }}</span>
|
125
124
|
</button>
|
126
125
|
<!-- end confirm-button -->
|
127
126
|
</footer>
|
@@ -141,9 +140,6 @@
|
|
141
140
|
<script>
|
142
141
|
import {defineComponent, createApp} from "vue"
|
143
142
|
|
144
|
-
// import mixins
|
145
|
-
import Identifier from "../mixins/Identifier"
|
146
|
-
|
147
143
|
const openFancyBox = (config) => {
|
148
144
|
const node = document.createElement("div");
|
149
145
|
document.querySelector("body").appendChild(node);
|
@@ -156,9 +152,6 @@ const openFancyBox = (config) => {
|
|
156
152
|
|
157
153
|
const FancyBox = defineComponent({
|
158
154
|
name: "CmdFancyBox",
|
159
|
-
mixins: [
|
160
|
-
Identifier
|
161
|
-
],
|
162
155
|
emits: ['cancel', 'confirm'],
|
163
156
|
data() {
|
164
157
|
return {
|
@@ -204,44 +197,9 @@ const FancyBox = defineComponent({
|
|
204
197
|
/**
|
205
198
|
* options to show at top (closeIcon, printButtons)
|
206
199
|
*/
|
207
|
-
|
200
|
+
fancyBoxOptions: {
|
208
201
|
type: Object,
|
209
|
-
|
210
|
-
return {
|
211
|
-
closeIcon: {
|
212
|
-
iconClass: "icon-cancel",
|
213
|
-
iconType: "auto",
|
214
|
-
tooltip: "Close"
|
215
|
-
},
|
216
|
-
printButtons: {
|
217
|
-
color: {
|
218
|
-
iconClass: "icon-print",
|
219
|
-
iconType: "auto",
|
220
|
-
tooltip: "print in color"
|
221
|
-
},
|
222
|
-
grayscale: {
|
223
|
-
iconClass: "icon-print",
|
224
|
-
iconType: "auto",
|
225
|
-
tooltip: "print in grayscale"
|
226
|
-
}
|
227
|
-
},
|
228
|
-
submitButtons: {
|
229
|
-
cancel: {
|
230
|
-
iconClass: "icon-cancel",
|
231
|
-
iconType: "auto",
|
232
|
-
tooltip: "Cancel",
|
233
|
-
buttonText: "Cancel"
|
234
|
-
},
|
235
|
-
confirm: {
|
236
|
-
iconClass: "icon-check",
|
237
|
-
iconType: "auto",
|
238
|
-
buttonText: "Confirm",
|
239
|
-
tooltip: "Confirm",
|
240
|
-
buttonType: "primary"
|
241
|
-
}
|
242
|
-
}
|
243
|
-
}
|
244
|
-
}
|
202
|
+
required: false
|
245
203
|
},
|
246
204
|
/**
|
247
205
|
* allow closing fancybox by escape-key
|
@@ -333,6 +291,47 @@ const FancyBox = defineComponent({
|
|
333
291
|
}
|
334
292
|
},
|
335
293
|
computed: {
|
294
|
+
fancyBoxOptionsProperties() {
|
295
|
+
return {
|
296
|
+
closeIcon: {
|
297
|
+
iconClass: "icon-cancel",
|
298
|
+
iconType: "auto",
|
299
|
+
tooltip: "Close",
|
300
|
+
...this.fancyBoxOptions?.closeIcon
|
301
|
+
},
|
302
|
+
printButtons: {
|
303
|
+
color: {
|
304
|
+
iconClass: "icon-print",
|
305
|
+
iconType: "auto",
|
306
|
+
tooltip: "print in color",
|
307
|
+
...this.fancyBoxOptions?.printButtons?.color
|
308
|
+
},
|
309
|
+
grayscale: {
|
310
|
+
iconClass: "icon-print",
|
311
|
+
iconType: "auto",
|
312
|
+
tooltip: "print in grayscale",
|
313
|
+
...this.fancyBoxOptions?.printButtons?.grayscale
|
314
|
+
}
|
315
|
+
},
|
316
|
+
submitButtons: {
|
317
|
+
cancel: {
|
318
|
+
iconClass: "icon-cancel",
|
319
|
+
iconType: "auto",
|
320
|
+
tooltip: "Cancel",
|
321
|
+
buttonText: "Cancel",
|
322
|
+
...this.fancyBoxOptions?.submitButtons?.cancel
|
323
|
+
},
|
324
|
+
confirm: {
|
325
|
+
iconClass: "icon-check",
|
326
|
+
iconType: "auto",
|
327
|
+
buttonText: "Confirm",
|
328
|
+
tooltip: "Confirm",
|
329
|
+
buttonType: "primary",
|
330
|
+
...this.fancyBoxOptions?.submitButtons?.confirm
|
331
|
+
}
|
332
|
+
}
|
333
|
+
}
|
334
|
+
},
|
336
335
|
largeGalleryImage() {
|
337
336
|
// change src-key for a single item/image in gallery to fit CmdImage-properties
|
338
337
|
const fancyBoxItem = {...this.fancyBoxGallery[this.index].image}
|
@@ -356,6 +355,48 @@ const FancyBox = defineComponent({
|
|
356
355
|
}
|
357
356
|
},
|
358
357
|
methods: {
|
358
|
+
printDialogContent() {
|
359
|
+
// Open a new window
|
360
|
+
const printWindow = window.open('', '', 'width=1000,height=600');
|
361
|
+
|
362
|
+
const dialogContent = this.elements.map( (element)=> {
|
363
|
+
return element.outerHTML
|
364
|
+
}).join("")
|
365
|
+
|
366
|
+
let styles = Array.from(document.head.querySelectorAll("style, link[rel='stylesheet']")).map( (element)=> {
|
367
|
+
return element.outerHTML
|
368
|
+
}).join("")
|
369
|
+
|
370
|
+
if(this.printInGrayscale) {
|
371
|
+
styles += "<style>body { filter: grayscale(1)}</style>"
|
372
|
+
}
|
373
|
+
|
374
|
+
const titleForPrintWindow = document.head.querySelector("title").innerText
|
375
|
+
|
376
|
+
// Write the content to the new window
|
377
|
+
printWindow.document.write(`
|
378
|
+
<html>
|
379
|
+
<head>
|
380
|
+
<title>${titleForPrintWindow}</title>
|
381
|
+
${styles}
|
382
|
+
</head>
|
383
|
+
<body>
|
384
|
+
${dialogContent}
|
385
|
+
</body>
|
386
|
+
</html>
|
387
|
+
`);
|
388
|
+
|
389
|
+
// Trigger print
|
390
|
+
printWindow.document.close();
|
391
|
+
|
392
|
+
// Optionally, close the print window after printing
|
393
|
+
printWindow.print();
|
394
|
+
printWindow.close();
|
395
|
+
},
|
396
|
+
printPage(colorScheme) {
|
397
|
+
this.printInGrayscale = colorScheme === 'grayscale'
|
398
|
+
this.printDialogContent()
|
399
|
+
},
|
359
400
|
onDialogCancel(event) {
|
360
401
|
if (!this.allowEscapeKey) {
|
361
402
|
event.preventDefault()
|