comand-component-library 3.1.22 → 3.1.26

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. package/dist/comand-component-library.css +1 -1
  2. package/dist/comand-component-library.umd.min.js +1 -1
  3. package/package.json +3 -4
  4. package/src/App.vue +30 -9
  5. package/src/assets/data/accordion.json +13 -4
  6. package/src/components/CmdAccordion.vue +84 -15
  7. package/src/components/CmdAddressData.vue +12 -0
  8. package/src/components/CmdBackToTopButton.vue +3 -0
  9. package/src/components/CmdBox.vue +16 -1
  10. package/src/components/CmdBoxSiteSearch.vue +3 -0
  11. package/src/components/CmdBreadcrumbs.vue +9 -0
  12. package/src/components/CmdCompanyLogo.vue +12 -0
  13. package/src/components/CmdCookieDisclaimer.vue +15 -4
  14. package/src/components/CmdCopyrightInformation.vue +2 -8
  15. package/src/components/CmdFakeSelect.vue +33 -6
  16. package/src/components/CmdFancyBox.vue +31 -1
  17. package/src/components/CmdFooterNavigation.vue +6 -0
  18. package/src/components/CmdGoogleMaps.vue +3 -0
  19. package/src/components/CmdImageGallery.vue +3 -2
  20. package/src/components/CmdImageZoom.vue +6 -0
  21. package/src/components/CmdMainHeadline.vue +9 -0
  22. package/src/components/CmdMainNavigation.vue +24 -0
  23. package/src/components/CmdMultipleSwitch.vue +1 -5
  24. package/src/components/CmdMultistepFormProgressBar.vue +6 -0
  25. package/src/components/CmdOpeningHours.vue +23 -2
  26. package/src/components/CmdPager.vue +24 -2
  27. package/src/components/CmdProgressBar.vue +10 -4
  28. package/src/components/CmdShareButtons.vue +6 -0
  29. package/src/components/CmdSiteHeader.vue +12 -16
  30. package/src/components/CmdSlideButton.vue +3 -0
  31. package/src/components/CmdSlideshow.vue +25 -6
  32. package/src/components/CmdUploadForm.vue +5 -5
  33. package/src/index.js +3 -1
  34. package/src/main.js +2 -2
@@ -4,7 +4,7 @@
4
4
  aria-labelledby="fancybox">
5
5
  <div class="popup" :class="{'image' : fancyBoxImageUrl || fancyBoxGallery }">
6
6
  <div class="button-wrapper no-flex"
7
- v-if="((fancyboxOptions.printButtons && (fancyboxOptions.printButtons.color || fancyboxOptions.printButtons.grayscale))) || fancyboxOptions.closeIcon">
7
+ v-if="(fancyboxOptions.printButtons && (fancyboxOptions.printButtons.color || fancyboxOptions.printButtons.grayscale)) || fancyboxOptions.closeIcon">
8
8
  <a href="#"
9
9
  v-if="fancyboxOptions.printButtons && fancyboxOptions.printButtons.color"
10
10
  :class="['button', fancyboxOptions.printButtons.color.iconClass]"
@@ -69,10 +69,16 @@
69
69
  const FancyBox = defineComponent({
70
70
  name: "CmdFancyBox",
71
71
  props: {
72
+ /**
73
+ * set if content should be loaded by url
74
+ */
72
75
  url: {
73
76
  type: String,
74
77
  required: false
75
78
  },
79
+ /**
80
+ * options to show at top (closeIcon, printButtons)
81
+ */
76
82
  fancyboxOptions: {
77
83
  type: Object,
78
84
  default() {
@@ -94,34 +100,58 @@
94
100
  }
95
101
  }
96
102
  },
103
+ /**
104
+ * allow closing fancybox by escape-key
105
+ */
97
106
  allowEscapeKey: {
98
107
  type: Boolean,
99
108
  default: true
100
109
  },
110
+ /**
111
+ * the content shown in the main area
112
+ */
101
113
  content: {
102
114
  type: String,
103
115
  required: false
104
116
  },
117
+ /**
118
+ *
119
+ */
105
120
  elements: {
106
121
  type: Array,
107
122
  required: false
108
123
  },
124
+ /**
125
+ * use if a gallery of images should be opened (and navigated) inside fancybox
126
+ */
109
127
  fancyBoxGallery: {
110
128
  type: Array,
111
129
  required: false
112
130
  },
131
+ /**
132
+ * if gallery is used, you can set default index
133
+ */
113
134
  defaultGalleryIndex: {
114
135
  type: Number,
115
136
  required: false
116
137
  },
138
+ /**
139
+ * show/hide entire fancybox
140
+ */
117
141
  show: {
118
142
  type: Boolean,
119
143
  default: false
120
144
  },
145
+ /**
146
+ * show/hide overlay (around fancybox, above website)
147
+ */
121
148
  showOverlay: {
122
149
  type: Boolean,
123
150
  default: true
124
151
  },
152
+ /**
153
+ * show slide-buttons (left/previous and right/next)
154
+ */
125
155
  slideButtons: {
126
156
  type: Object,
127
157
  default() {
@@ -24,10 +24,16 @@ import {openFancyBox} from "./CmdFancyBox.vue"
24
24
  export default {
25
25
  name: "CmdFooterNavigation",
26
26
  props: {
27
+ /**
28
+ * headlien above links
29
+ */
27
30
  headline: {
28
31
  type: String,
29
32
  required: false
30
33
  },
34
+ /**
35
+ * list of links shown vertically
36
+ */
31
37
  footerNavigation: {
32
38
  type: Array,
33
39
  required: false
@@ -8,6 +8,9 @@
8
8
  export default {
9
9
  name: "CmdGoogleMaps",
10
10
  props: {
11
+ /**
12
+ * address to show show on Google Maps&trade;
13
+ */
11
14
  addressData: {
12
15
  type: Object,
13
16
  required: true
@@ -15,11 +15,12 @@ import {openFancyBox} from "./CmdFancyBox"
15
15
 
16
16
  export default {
17
17
  name: "CmdImageGallery",
18
-
19
18
  props: {
19
+ /**
20
+ * list of images (incl. captions)
21
+ */
20
22
  images: Array
21
23
  },
22
-
23
24
  methods: {
24
25
  showFancyBox(index) {
25
26
  openFancyBox({fancyBoxGallery: this.images, defaultGalleryIndex: index})
@@ -17,10 +17,16 @@
17
17
  export default {
18
18
  name: "CmdImageZoom",
19
19
  props: {
20
+ /**
21
+ * url for small images
22
+ */
20
23
  smallImageUrl: {
21
24
  type: String,
22
25
  required: true
23
26
  },
27
+ /**
28
+ * url for large image
29
+ */
24
30
  largeImageUrl: {
25
31
  type: String,
26
32
  required: true
@@ -13,14 +13,23 @@
13
13
  export default {
14
14
  name: "CmdMainHeadline",
15
15
  props: {
16
+ /**
17
+ * main/h1-headline
18
+ */
16
19
  mainHeadline: {
17
20
  type: String,
18
21
  required: true
19
22
  },
23
+ /**
24
+ * small pre-headline above main-headline
25
+ */
20
26
  preHeadline: {
21
27
  type: String,
22
28
  required: false
23
29
  },
30
+ /**
31
+ * icon-class for icon shown left/before headline
32
+ */
24
33
  iconClass: {
25
34
  type: String,
26
35
  required: false
@@ -58,18 +58,30 @@ export default {
58
58
  }
59
59
  },
60
60
  props: {
61
+ /**
62
+ * toggle if main-entries (on firt-level) should be (horizontally) stretched equally
63
+ */
61
64
  stretchMainItems: {
62
65
  type: Boolean,
63
66
  default: false
64
67
  },
68
+ /**
69
+ * set if navigation should persist on mobile and not be collapsed to off-canvas
70
+ */
65
71
  persistOnMobile: {
66
72
  type: Boolean,
67
73
  default: false
68
74
  },
75
+ /**
76
+ * list of all navigation-entries (incl. sub-entries)
77
+ */
69
78
  navigationEntries: {
70
79
  type: Array,
71
80
  required: true
72
81
  },
82
+ /**
83
+ * link shown inside off-canvas-navigation to close itself
84
+ */
73
85
  closeOffcanvas: {
74
86
  type: Object,
75
87
  default: function () {
@@ -80,6 +92,9 @@ export default {
80
92
  }
81
93
  }
82
94
  },
95
+ /**
96
+ * button to open off-canvas-navigation
97
+ */
83
98
  buttonOffcanvas: {
84
99
  type: Object,
85
100
  default: function () {
@@ -90,14 +105,23 @@ export default {
90
105
  }
91
106
  }
92
107
  },
108
+ /**
109
+ * icon to show if an navigation-entry has sub-entries
110
+ */
93
111
  subentriesIconClass: {
94
112
  type: String,
95
113
  default: "icon-single-arrow-down"
96
114
  },
115
+ /**
116
+ * icon to show if a sub-entry has further sub-entries
117
+ */
97
118
  subSubentriesIconClass: {
98
119
  type: String,
99
120
  default: "icon-single-arrow-right"
100
121
  },
122
+ /**
123
+ * toggle if overlay over content should be shown if off-canvas is open
124
+ */
101
125
  showContentOverlay: {
102
126
  type: Boolean,
103
127
  default: true
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div :class="['label', 'multiple-switch', htmlClass, {disabled: status === 'disabled', error: status === 'error'}]">
2
+ <div :class="['label', 'multiple-switch', {disabled: status === 'disabled', error: status === 'error'}]">
3
3
  <span v-if="labelText">{{ labelText }}</span>
4
4
  <span class="flex-container no-gap no-flex">
5
5
  <label :class="{disabled: status === 'disabled'}" :for="multipleswitch.id"
@@ -28,10 +28,6 @@ export default {
28
28
  required: false,
29
29
  default: ""
30
30
  },
31
- htmlClass: {
32
- type: String,
33
- required: false
34
- },
35
31
  labelText: {
36
32
  type: String,
37
33
  required: false
@@ -21,10 +21,16 @@ export default {
21
21
  }
22
22
  },
23
23
  props: {
24
+ /**
25
+ * list of multisteps
26
+ */
24
27
  multisteps: {
25
28
  type: Array,
26
29
  required: true
27
30
  },
31
+ /**
32
+ * icon-class for separator shown inbetween multisteps
33
+ */
28
34
  separatorIconClass: {
29
35
  type: String,
30
36
  required: true
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div class="cmd-opening-hours">
3
3
  <h4 v-if="headline">{{ headline }}</h4>
4
- <a v-if="path" :href="path" :class="{'closed': closed}">{{ textOpenClosed }}</a>
4
+ <a v-if="pathToDetails" :href="pathToDetails" :class="{'closed': closed}">{{ textOpenClosed }}</a>
5
5
  <span v-else :class="{'closed': closed}">{{ textOpenClosed }}</span>
6
6
  <dl>
7
7
  <template v-for="day in openingHours" :key="day.day">
@@ -20,30 +20,51 @@
20
20
  export default {
21
21
  name: "CmdOpeningHours",
22
22
  props: {
23
+ /**
24
+ * headline above displayed opening hours
25
+ */
23
26
  headline: {
24
27
  type: String,
25
28
  required: false
26
29
  },
27
- path: {
30
+ /**
31
+ * set a path to a detail page
32
+ */
33
+ pathToDetails: {
28
34
  type: String,
29
35
  required: false
30
36
  },
37
+ /**
38
+ * toggles if "closed"-text will be shown
39
+ */
31
40
  closed: {
32
41
  type: Boolean,
33
42
  default: false
34
43
  },
44
+ /**
45
+ * text for open/closed-information
46
+ */
35
47
  textOpenClosed: {
36
48
  type: String,
37
49
  required: true
38
50
  },
51
+ /**
52
+ * list of opening-hours
53
+ */
39
54
  openingHours: {
40
55
  type: Array,
41
56
  required: true
42
57
  },
58
+ /**
59
+ * text to show if holidays closed (shown below opening-hours)
60
+ */
43
61
  textHolidaysClosed: {
44
62
  type: String,
45
63
  required: false
46
64
  },
65
+ /**
66
+ * additional/miscellaneous text (shown below holiday-closed-text/opening hours)
67
+ */
47
68
  textMiscInfo: {
48
69
  type: String,
49
70
  required: false
@@ -47,25 +47,47 @@ export default {
47
47
  }
48
48
  },
49
49
  props: {
50
+ /**
51
+ * number of items displayed
52
+ */
50
53
  items: {
51
54
  type: Number,
52
55
  required: true
53
56
  },
57
+ /**
58
+ * number of items shown per page
59
+ */
54
60
  itemsPerPage: {
55
61
  type: Number,
56
62
  required: true
57
63
  },
64
+ /**
65
+ * show links as buttons
66
+ */
58
67
  showLinksAsButtons: {
59
68
  type: Boolean,
60
69
  default: true
61
70
  },
71
+ /**
72
+ *
73
+ */
62
74
  prevButton: {
63
75
  type: Object,
64
- required: false
76
+ default: function() {
77
+ return {
78
+ iconClass: "icon-single-arrow-left",
79
+ buttonText: "prev"
80
+ }
81
+ }
65
82
  },
66
83
  nextButton: {
67
84
  type: Object,
68
- required: false
85
+ default: function() {
86
+ return {
87
+ iconClass: "icon-single-arrow-right",
88
+ buttonText: "next"
89
+ }
90
+ }
69
91
  }
70
92
  },
71
93
  computed: {
@@ -1,10 +1,10 @@
1
1
  <template>
2
2
  <label class="cmd-progressbar" :for="id">
3
- <span>{{ labelText }}</span>
3
+ <span v-if="labelText">{{ labelText }}</span>
4
4
  <span class="progressbar">
5
- <span>{{ loadingStatus }}%</span><!-- do not place inside progress-tag (will not be displayed then) -->
6
- <progress v-bind="$attrs" :id="id" :value="loadingStatus"></progress>
7
- </span>
5
+ <span>{{ loadingStatus }}%</span><!-- do not place inside progress-tag (will not be displayed then) -->
6
+ <progress v-bind="$attrs" :id="id" :value="loadingStatus"></progress>
7
+ </span>
8
8
  </label>
9
9
  </template>
10
10
 
@@ -17,10 +17,16 @@ export default {
17
17
  }
18
18
  },
19
19
  props: {
20
+ /**
21
+ * label-text for progress-bar
22
+ */
20
23
  labelText: {
21
24
  type: String,
22
25
  required: false
23
26
  },
27
+ /**
28
+ * id for progress-bar
29
+ */
24
30
  id: {
25
31
  type: String,
26
32
  required: true
@@ -12,10 +12,16 @@
12
12
  export default {
13
13
  name: "CmdContentFooter",
14
14
  props: {
15
+ /**
16
+ * stretch-buttons to share horizontal space vertically
17
+ */
15
18
  stretchButtons: {
16
19
  type: Boolean,
17
20
  default: true
18
21
  },
22
+ /**
23
+ * list of share-buttons (i.e. facebook, twitter etc.)
24
+ */
19
25
  shareButtons: {
20
26
  type: Array,
21
27
  required: true
@@ -19,34 +19,30 @@ export default {
19
19
  CmdMainNavigation
20
20
  },
21
21
  props: {
22
- showHeaderNavBar: {
23
- type: Boolean,
24
- default: true
25
- },
22
+ /**
23
+ * list of main-navigation-entries (incl. sub-entries) given to inner navigationcomponent
24
+ */
26
25
  mainNavigationEntries: {
27
26
  type: Array,
28
27
  required: true
29
28
  },
30
- headerWidthLimitation: {
31
- type: Boolean,
32
- default: false
33
- },
34
- linkLogo: {
35
- type: Object,
36
- required: false
37
- },
38
- logo: {
39
- type: Object,
40
- required: false
41
- },
29
+ /**
30
+ * activated sticky-header (stays on top if page is scrolled
31
+ */
42
32
  sticky: {
43
33
  type: Boolean,
44
34
  default: true
45
35
  },
36
+ /**
37
+ * use a grid for positioning of inner-elements (else a flex-container will be used)
38
+ */
46
39
  useGrid: {
47
40
  type: Boolean,
48
41
  default: true
49
42
  },
43
+ /**
44
+ * use only if default-button of inner navigation-component should not be used
45
+ */
50
46
  closeOffcanvas: {
51
47
  type: Object,
52
48
  required: false
@@ -12,6 +12,9 @@
12
12
  export default {
13
13
  name: "CmdSlideButton",
14
14
  props: {
15
+ /**
16
+ * set slide-button to "next" (= right), else it will be displayed as previous (=left) button
17
+ */
15
18
  slideButtonType: {
16
19
  type: Object,
17
20
  required: true
@@ -10,10 +10,8 @@
10
10
  </figure>
11
11
  </a>
12
12
  <figure v-else-if="!currentItem.href && currentItem && !useSlot" :key="index" class="slideshow-item">
13
- <template>
14
13
  <img :src="currentItem.imgPath" :alt="currentItem.alt"/>
15
14
  <figcaption>{{ currentItem.figcaption }}</figcaption>
16
- </template>
17
15
  </figure>
18
16
  <div
19
17
  class="image-wrapper"
@@ -57,30 +55,51 @@ export default {
57
55
  CmdSlideButton
58
56
  },
59
57
  props: {
58
+ /**
59
+ * use slot for images
60
+ */
60
61
  useSlot: {
61
62
  type: Boolean,
62
63
  default: false
63
64
  },
65
+ /**
66
+ * activate if images should switch automatically
67
+ */
64
68
  autoplay: {
65
69
  type: Boolean,
66
70
  default: false
67
71
  },
72
+ /**
73
+ * set milliseconds to switch images (if autoplay is activated only)
74
+ */
75
+ autoplayInterval: {
76
+ type: Number,
77
+ default: 5000
78
+ },
79
+ /**
80
+ * shows buttons/icons to let user quick jump to each image
81
+ */
68
82
  showQuickLinkIcons: {
69
83
  type: Boolean,
70
84
  default: true
71
85
  },
86
+ /**
87
+ * activate if current number of each image should be displayed
88
+ */
72
89
  showCounter: {
73
90
  type: Boolean,
74
91
  default: false
75
92
  },
76
- autoplayInterval: {
77
- type: Number,
78
- default: 5000
79
- },
93
+ /**
94
+ * list of images to display (use slot smust be set to false)
95
+ */
80
96
  slideshowItems: {
81
97
  type: Array,
82
98
  required: true
83
99
  },
100
+ /**
101
+ * slide-buttons (next/previous) to switch images
102
+ */
84
103
  slideButtons: {
85
104
  type: Object,
86
105
  default() {
@@ -34,14 +34,14 @@
34
34
  </span>
35
35
  </li>
36
36
  </ul>
37
- <CmdSystemMessage v-if="!listOfFiles.length" messageStatus="warning" :fullWidth="true"
38
- systemMessage="No files selected for upload!">
37
+ <CmdSystemMessage v-if="!listOfFiles.length" status="warning" :fullWidth="true"
38
+ message="No files selected for upload!">
39
39
  </CmdSystemMessage>
40
- <CmdSystemMessage v-else :messageStatus="messageStatusUploadSize()" :fullWidth="true">
40
+ <CmdSystemMessage v-else :status="messageStatusUploadSize()" :fullWidth="true">
41
41
  <p>Current upload size is {{ formatSize(uploadSize) }} (of max. {{ formatSize(maxUploadSize) }}).</p>
42
42
  </CmdSystemMessage>
43
- <CmdSystemMessage v-if="uploadSize > maxUploadSize" messageStatus="error" :fullWidth="true"
44
- systemMessage="Total file size to large!">
43
+ <CmdSystemMessage v-if="uploadSize > maxUploadSize" status="error" :fullWidth="true"
44
+ message="Total file size to large!">
45
45
  </CmdSystemMessage>
46
46
  <CmdFormElement
47
47
  v-if="enableComment"
package/src/index.js CHANGED
@@ -1,3 +1,5 @@
1
+ import "clickout-event"
2
+
1
3
  export { default as CmdAccordion } from '@/components/CmdAccordion'
2
4
  export { default as CmdAddressData } from '@/components/CmdAddressData'
3
5
  export { default as CmdBackToTopButton } from '@/components/CmdBackToTopButton'
@@ -31,4 +33,4 @@ export { default as CmdTabs } from '@/components/CmdTabs'
31
33
  export { default as CmdThumbnailScroller } from '@/components/CmdThumbnailScroller'
32
34
  export { default as CmdTooltip } from '@/components/CmdTooltip'
33
35
  export { default as CmdTopHeaderNavigation } from '@/components/CmdTopHeaderNavigation'
34
- export { default as CmdWidthLimitationWrapper } from '@/components/CmdWidthLimitationWrapper'
36
+ export { default as CmdWidthLimitationWrapper } from '@/components/CmdWidthLimitationWrapper'
package/src/main.js CHANGED
@@ -6,7 +6,7 @@ import 'comand-frontend-framework/src/assets/css/framework-iconfont.css'
6
6
  import { createApp } from 'vue'
7
7
  import App from './App.vue'
8
8
  import { createRouter, createWebHistory } from 'vue-router'
9
- import vClickOutside from 'v-click-outside'
9
+ import "clickout-event"
10
10
 
11
11
  /* import additional iconfont containing company-logos */
12
12
  import '@/assets/styles/logos-iconfont.css'
@@ -34,4 +34,4 @@ const router = createRouter({
34
34
  ]
35
35
  })
36
36
 
37
- createApp(App).use(router).use(vClickOutside).mount('#app')
37
+ createApp(App).use(router).mount('#app')