comand-component-library 4.3.16 → 4.3.19

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.
@@ -0,0 +1,8 @@
1
+ {
2
+ "descriptionTermType": "number",
3
+ "descriptionData": [
4
+ "Footnotetext #1",
5
+ "Footnotetext #2",
6
+ "Footnotetext #3"
7
+ ]
8
+ }
@@ -10,9 +10,10 @@
10
10
  "CompanyLogo",
11
11
  "Container",
12
12
  "CookieDisclaimer",
13
- "Forms",
14
13
  "Fancybox",
15
14
  "FlexibleScrollContainer",
15
+ "Footnote",
16
+ "Forms",
16
17
  "GoogleMaps",
17
18
  "Headlines",
18
19
  "Icons",
@@ -350,6 +350,24 @@ export default {
350
350
  }
351
351
  ]
352
352
  },
353
+ cmdFootnoteSettingsData: {
354
+ cmdHeadline: {
355
+ headlineText: "Headline text",
356
+ headlineLevel: 3
357
+ }
358
+ },
359
+ cmdFootnoteSettingsControls: {
360
+ descriptionTermType: [
361
+ {
362
+ text: "Asterisk (default)",
363
+ value: "asterisk"
364
+ },
365
+ {
366
+ text: "Number",
367
+ value: "number"
368
+ }
369
+ ]
370
+ },
353
371
  cmdHeadlineSettingsData: {
354
372
  preHeadlineText: "Pre-headline text",
355
373
  headlineText: "Headline text",
@@ -1,16 +1,23 @@
1
1
  <template>
2
2
  <!-- begin CmdAccordion ---------------------------------------------------------------------------------------- -->
3
- <details :class="['cmd-accordion', highlightLevel]" :name="accordionName">
3
+ <details ref="cmdAccordion" :class="['cmd-accordion', highlightLevel, { 'flex-container no-gap' : rowView }]" :name="accordionName">
4
4
  <summary>
5
+ <!--
5
6
  <span :class="[cmdIconClosed.iconClass, 'closed']" :title="cmdIconClosed.tooltip"></span>
6
7
  <span :class="[cmdIconOpen.iconClass, 'open']" :title="cmdIconOpen.tooltip"></span>
8
+ -->
9
+ <CmdIcon :iconClass="toggleIconIconClass" :class="toggleIconStatus" :tooltip="toggleIconTooltip" />
7
10
  <CmdHeadline v-bind="cmdHeadlineProperties" />
11
+ <!--
12
+ toggleIconStatus: {{ toggleIconStatus }}<br />
13
+ this.$refs.cmdAccordion?.open: {{ $refs.cmdAccordion?.open }}<br />
14
+ isOpen: {{ isOpen() }}
15
+ -->
8
16
  </summary>
9
17
  <div class="accordion-body">
10
18
  <!-- begin slot-content -->
11
19
  <slot>
12
- <p v-html="textAccordionBody">
13
- </p>
20
+ <CmdParagraph :content="textAccordionBody" />
14
21
  </slot>
15
22
  <!-- end slot-content -->
16
23
  </div>
@@ -21,17 +28,29 @@
21
28
  <script>
22
29
  export default {
23
30
  name: "CmdAccordion",
31
+ mounted() {
32
+ console.log("this.$refs.cmdAccordion.open:", this.$refs.cmdAccordion?.open)
33
+ },
24
34
  props: {
35
+ /**
36
+ * arranges box-content in a row
37
+ *
38
+ * @affectsStyling: true
39
+ */
40
+ rowView: {
41
+ type: Boolean,
42
+ default: false
43
+ },
25
44
  /**
26
45
  * set highlight-level for headline
27
46
  *
28
- * @allowedValues: "none", "primary", "secondary", "tertiary"
47
+ * @allowedValues: "", "primary", "secondary", "tertiary"
29
48
  */
30
49
  highlightLevel: {
31
50
  type: String,
32
- default: "none",
51
+ default: null,
33
52
  validator(value) {
34
- return value === "none" ||
53
+ return value === null ||
35
54
  value === "primary" ||
36
55
  value === "secondary" ||
37
56
  value === "tertiary"
@@ -47,7 +66,31 @@ export default {
47
66
  /**
48
67
  * properties for CmdIcon-component if accordion is collapsed/closed
49
68
  */
50
- cmdIconClosed: {
69
+ cmdIconClosedRowView: {
70
+ type: Object,
71
+ default() {
72
+ return {
73
+ iconClass: "icon-chevron-one-stripe-down",
74
+ tooltip: "Expand accordion"
75
+ }
76
+ }
77
+ },
78
+ /**
79
+ * properties for CmdIcon-component if accordion is expanded/open
80
+ */
81
+ cmdIconOpenRowView: {
82
+ type: Object,
83
+ default() {
84
+ return {
85
+ iconClass: "icon-chevron-one-stripe-right",
86
+ tooltip: "Collapse accordion"
87
+ }
88
+ }
89
+ },
90
+ /**
91
+ * properties for CmdIcon-component if accordion is collapsed/closed
92
+ */
93
+ cmdIconClosedColumnView: {
51
94
  type: Object,
52
95
  default() {
53
96
  return {
@@ -59,7 +102,7 @@ export default {
59
102
  /**
60
103
  * properties for CmdIcon-component if accordion is expanded/open
61
104
  */
62
- cmdIconOpen: {
105
+ cmdIconOpenColumnView: {
63
106
  type: Object,
64
107
  default() {
65
108
  return {
@@ -89,6 +132,28 @@ export default {
89
132
  headlineLevel: 4,
90
133
  ...this.cmdHeadline
91
134
  }
135
+ },
136
+ toggleIconIconClass() {
137
+ if(this.rowView) {
138
+ return this.isOpen ? this.cmdIconOpenRowView?.iconClass : this.cmdIconClosedRowView?.iconClass
139
+ } else {
140
+ return this.isOpen ? this.cmdIconOpenColumnView?.iconClass : this.cmdIconClosedColumnView?.iconClass
141
+ }
142
+ },
143
+ toggleIconStatus() {
144
+ return this.isOpen ? 'open' : 'closed'
145
+ },
146
+ toggleIconTooltip() {
147
+ if(this.rowView) {
148
+ return this.isOpen ? this.cmdIconOpenRowView?.tooltip : this.cmdIconClosedRowView?.tooltip
149
+ } else {
150
+ return this.isOpen ? this.cmdIconOpenColumnView?.tooltip : this.cmdIconClosedColumnView?.tooltip
151
+ }
152
+ }
153
+ },
154
+ methods: {
155
+ isOpen() {
156
+ return this.$refs.cmdAccordion?.open + "test"
92
157
  }
93
158
  }
94
159
  }
@@ -96,6 +161,26 @@ export default {
96
161
 
97
162
  <style>
98
163
  .cmd-accordion {
164
+ &.flex-container {
165
+ flex-wrap: nowrap;
166
+ align-items: center;
167
+
168
+ > * {
169
+ flex: none;
170
+ }
171
+
172
+ &[open] {
173
+ summary {
174
+ border: 0;
175
+ }
176
+ }
177
+
178
+ summary {
179
+ writing-mode: vertical-rl;
180
+ transform: rotate(180deg);
181
+ }
182
+ }
183
+
99
184
  summary {
100
185
  .cmd-headline {
101
186
  margin: 0;
@@ -0,0 +1,209 @@
1
+ <template>
2
+ <!-- begin CmdBoxWrapper ---------------------------------------------------------------------------------------- -->
3
+ <div class="cmd-accordions-wrapper">
4
+ <div v-if="cmdHeadline.headlineText || allowUserToToggleOrientation" class="flex-container headline-wrapper">
5
+ <!-- begin CmdHeadline -->
6
+ <CmdHeadline v-if="cmdHeadline.headlineText" v-bind="cmdHeadline" />
7
+ <!-- end CmdHeadline -->
8
+
9
+ <div v-if="allowUserToToggleOrientation" class="options-wrapper">
10
+ <a href="#" @click.prevent="toggleOrientation" :title="rowView ? iconRowView.tooltip : iconColumnView.tooltip">
11
+ <!-- begin CmdIcon -->
12
+ <CmdIcon :iconClass="rowView ? iconColumnView.iconClass : iconRowView.iconClass" :type="rowView ? iconColumnView.iconType : iconRowView.iconType" />
13
+ <!-- end CmdIcon -->
14
+ </a>
15
+ </div>
16
+ </div>
17
+ <div :class="['inner-accordions-wrapper',
18
+ {
19
+ 'no-gap': !useGap,
20
+ 'flex-container' : rowView
21
+ }
22
+ ]">
23
+ <slot
24
+ :collapsingBoxesOpen="collapsingBoxesOpen"
25
+ :boxToggled="boxToggled"
26
+ :boxIsOpen="boxIsOpen"
27
+ :rowView="rowView"
28
+ @toggleCollapse="boxIsToggled"
29
+ >
30
+ </slot>
31
+ </div>
32
+ </div>
33
+ <!-- end CmdBoxWrapper ---------------------------------------------------------------------------------------- -->
34
+ </template>
35
+
36
+ <script>
37
+ export default {
38
+ name: "CmdAccordionsWrapper",
39
+ data() {
40
+ return {
41
+ rowView: this.useRowViewAsDefault,
42
+ collapsingBoxesOpen: true,
43
+ currentOpenBox: [],
44
+ oneBoxPerRow: false
45
+ }
46
+ },
47
+ props: {
48
+ /**
49
+ * give list of box-indices that should be open by default
50
+ *
51
+ * allowMultipleExpandedBoxes-property must be activated if more than one box should be open by default
52
+ */
53
+ openBoxesByDefault: {
54
+ type: Array,
55
+ required: false
56
+ },
57
+
58
+ /**
59
+ * activate if a gap between boxes should be used
60
+ */
61
+ useGap: {
62
+ type: Boolean,
63
+ default: true
64
+ },
65
+ /**
66
+ * activate if boxes should be arranged vertically (each box is a row) by default
67
+ */
68
+ useRowViewAsDefault: {
69
+ type: Boolean,
70
+ default: false
71
+ },
72
+ /**
73
+ * activate if user can toggle grid- and row-orientation by himself
74
+ */
75
+ allowUserToToggleOrientation: {
76
+ type: Boolean,
77
+ default: true
78
+ },
79
+ /**
80
+ * icon for collapsed box
81
+ */
82
+ collapseBoxesIcon: {
83
+ type: Object,
84
+ default() {
85
+ return {
86
+ iconClass: "icon-chevron-two-stripes-down",
87
+ tooltip: "Collapse all boxes"
88
+ }
89
+ }
90
+ },
91
+ /**
92
+ * icon for expanded box
93
+ */
94
+ expandBoxesIcon: {
95
+ type: Object,
96
+ default() {
97
+ return {
98
+ iconClass: "icon-chevron-two-stripes-up",
99
+ tooltip: "Expand all boxes"
100
+ }
101
+ }
102
+ },
103
+ /**
104
+ * set if more than one collapsible box can be expanded at a time
105
+ */
106
+ allowMultipleExpandedBoxes: {
107
+ type: Boolean,
108
+ default: true
109
+ },
110
+ /**
111
+ * define icon for grid-view
112
+ */
113
+ iconColumnView: {
114
+ type: Object,
115
+ default
116
+ () {
117
+ return {
118
+ iconClass: 'icon-blocks-small',
119
+ tooltip: 'Toggle to row view'
120
+ }
121
+ }
122
+ }
123
+ ,
124
+ /**
125
+ * define icon for row-view
126
+ */
127
+ iconRowView: {
128
+ type: Object,
129
+ default() {
130
+ return {
131
+ iconClass: 'icon-rows',
132
+ tooltip: 'Toggle to column view'
133
+ }
134
+ }
135
+ },
136
+ /**
137
+ * properties for CmdHeadline-component
138
+ */
139
+ cmdHeadline: {
140
+ type: Object,
141
+ default() {
142
+ return {
143
+ headlineText: "",
144
+ headlineLevel: 4
145
+ }
146
+ }
147
+ }
148
+ },
149
+ methods: {
150
+ toggleOrientation() {
151
+ this.rowView = !this.rowView
152
+ this.oneBoxPerRow = this.rowView
153
+ },
154
+ boxIsOpen(index) {
155
+ return this.currentOpenBox.includes(index)
156
+ },
157
+ toggleCollapsingBoxes() {
158
+ this.collapsingBoxesOpen = !this.collapsingBoxesOpen
159
+ },
160
+ boxToggled(boxIndex, open) {
161
+ if(this.allowMultipleExpandedBoxes) {
162
+ if(open) {
163
+ this.currentOpenBox.push(boxIndex)
164
+ } else {
165
+ // remove boxIndex from array to close specific box
166
+ let position = this.currentOpenBox.indexOf(boxIndex)
167
+ this.currentOpenBox.splice(position, 1)
168
+ }
169
+ } else {
170
+ this.currentOpenBox = []
171
+
172
+ // add current boxIndex to array to open specific box
173
+ if(open) {
174
+ this.currentOpenBox.push(boxIndex)
175
+ }
176
+ }
177
+ }
178
+ },
179
+ watch: {
180
+ openBoxesByDefault: {
181
+ handler() {
182
+ this.currentOpenBox = [...this.openBoxesByDefault || []]
183
+ },
184
+ immediate: true
185
+ },
186
+ useRowViewAsDefault: {
187
+ handler() {
188
+ this.oneBoxPerRow = this.useRowViewAsDefault
189
+ },
190
+ immediate: true
191
+ }
192
+ }
193
+ }
194
+ </script>
195
+
196
+ <style>
197
+ /* begin cmd-box-wrapper ---------------------------------------------------------------------------------------- */
198
+ .cmd-accordions-wrapper {
199
+ .inner-accordions-wrapper {
200
+ .cmd-accordion {
201
+ flex: none;
202
+ }
203
+ }
204
+ }
205
+ </style>
206
+
207
+ <style>
208
+ /* end cmd-box-wrapper ---------------------------------------------------------------------------------------- */
209
+ </style>
@@ -0,0 +1,92 @@
1
+ <template>
2
+ <div class="cmd-footnote">
3
+ <CmdHeadline v-if="cmdHeadline?.headlineText" v-bind="cmdHeadlineProperties" />
4
+ <CmdList listType="description" :items="items" :class="'type-' + descriptionTermType" />
5
+ </div>
6
+ </template>
7
+
8
+ <script>
9
+ export default {
10
+ name: "CmdFootnote",
11
+ props: {
12
+ /**
13
+ * set type of descriptionTerm
14
+ *
15
+ * @allowedValues: "asterisk", "number"
16
+ */
17
+ descriptionTermType: {
18
+ type: String,
19
+ default: "asterisk",
20
+ validator(value) {
21
+ return value === "number" ||
22
+ value === "asterisk"
23
+ }
24
+ },
25
+ /**
26
+ * descriptionData (the footnote-texts)
27
+ */
28
+ descriptionData: {
29
+ type: Array,
30
+ required: true
31
+ },
32
+ /**
33
+ * properties for CmdHeadline-component
34
+ */
35
+ cmdHeadline: {
36
+ type: Object,
37
+ required: false
38
+ },
39
+ },
40
+ computed: {
41
+ cmdHeadlineProperties() {
42
+ return {
43
+ headlineLevel: 6,
44
+ ...this.cmdHeadline
45
+ }
46
+ },
47
+ items() {
48
+ const items = []
49
+
50
+ for (let i = 0; i < this.descriptionData.length; i++) {
51
+ const getTerm = (index) => {
52
+ if (this.descriptionTermType === "number") {
53
+ return { text: index + 1 };
54
+ } else {
55
+ return { text: "*".repeat(index + 1) }
56
+ }
57
+ }
58
+
59
+ items.push({
60
+ descriptionTerm: getTerm(i),
61
+ descriptionData: {
62
+ text: this.descriptionData[i]
63
+ }
64
+ })
65
+ }
66
+
67
+ return items
68
+ }
69
+ }
70
+ }
71
+ </script>
72
+
73
+ <style>
74
+ .cmd-footnote {
75
+ .cmd-list {
76
+ dl {
77
+ grid-column-gap: .1rem; /* overwrite settings from frontend-framework */
78
+
79
+ dt {
80
+ vertical-align: super;
81
+ font-size: 1rem;
82
+ }
83
+ }
84
+
85
+ &.type-asterisk {
86
+ dt {
87
+ text-align: right;
88
+ }
89
+ }
90
+ }
91
+ }
92
+ </style>
@@ -152,13 +152,13 @@ export default {
152
152
  /**
153
153
  * set highlight-level for headline
154
154
  *
155
- * @allowedValues: "none", "primary", "secondary", "tertiary"
155
+ * @allowedValues: "", "primary", "secondary", "tertiary"
156
156
  */
157
157
  highlightLevel: {
158
158
  type: String,
159
- default: "none",
159
+ default: "",
160
160
  validator(value) {
161
- return value === "none" ||
161
+ return value === "" ||
162
162
  value === "primary" ||
163
163
  value === "secondary" ||
164
164
  value === "tertiary"
@@ -338,7 +338,7 @@ export default {
338
338
  },
339
339
  // set/write a value to update v-model for this component
340
340
  set(value) {
341
- this.$emit('validation-status-change', this.validationStatus)
341
+ this.$emit("validation-status-change", this.validationStatus)
342
342
  this.$emit("update:modelValue", value)
343
343
  }
344
344
  }
@@ -11,7 +11,7 @@
11
11
  'list-content-type-' + listContentType
12
12
  ]">
13
13
  <!-- begin cmd-headline -->
14
- <CmdHeadline v-if="cmdHeadline?.headlineText || editModeContext" v-bind="cmdHeadline" />
14
+ <CmdHeadline v-if="cmdHeadline?.headlineText || editModeContext" v-bind="cmdHeadlineProperties" />
15
15
  <!-- end cmd-headline -->
16
16
 
17
17
  <!-- begin list of links ordered/unordered -->
@@ -147,13 +147,13 @@ export default {
147
147
  /**
148
148
  * define the highlight-level
149
149
  *
150
- * @allowedValues: "none", "primary", "secondary", "tertiary"
150
+ * @allowedValues: "", "primary", "secondary", "tertiary"
151
151
  */
152
152
  highlightLevel: {
153
153
  type: String,
154
- default: "none",
154
+ default: null,
155
155
  validator(value) {
156
- return value === "none" ||
156
+ return value === null ||
157
157
  value === "primary" ||
158
158
  value === "secondary" ||
159
159
  value === "tertiary"
@@ -176,6 +176,8 @@ export default {
176
176
  },
177
177
  /**
178
178
  * set list-type
179
+ *
180
+ * listType-property must be set to "ordered" or "unordered"
179
181
  *
180
182
  * @allowedValues: links, images, tags
181
183
  */
@@ -231,6 +233,8 @@ export default {
231
233
  },
232
234
  /**
233
235
  * toggle list-style-items visibility
236
+ *
237
+ * listType-property must be set to "ordered" or "unordered"
234
238
  *
235
239
  * @affectsStyling: true
236
240
  */
@@ -284,9 +288,9 @@ export default {
284
288
  }
285
289
  },
286
290
  /**
287
- * allow tags to be remove by click
291
+ * allow tags to be removed by click
288
292
  *
289
- * (listContentType-property must be set to "tags")
293
+ * listContentType-property must be set to "tags"
290
294
  */
291
295
  removeTagByClick: {
292
296
  type: Boolean,
@@ -295,7 +299,7 @@ export default {
295
299
  /**
296
300
  * define remove-icon/link for tags
297
301
  *
298
- * (listContentType-property must be set to "tags" and removeTabByClick-property must be set to true)
302
+ * listContentType-property must be set to "tags" and removeTabByClick-property must be set to true
299
303
  */
300
304
  iconRemoveTag: {
301
305
  type: Object,
@@ -319,6 +323,12 @@ export default {
319
323
  this.updateActiveClass()
320
324
  },
321
325
  computed: {
326
+ cmdHeadlineProperties() {
327
+ return {
328
+ headlineLevel: 3,
329
+ ...this.cmdHeadline
330
+ }
331
+ },
322
332
  setStretchClass() {
323
333
  if (this.largeIcons && this.orientation === "horizontal") {
324
334
  return "stretch"
package/src/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  // export components
2
2
  export { default as CmdAddressData } from '@/components/CmdAddressData.vue'
3
+ export { default as CmdAccordion } from '@/components/CmdAccordion.vue'
3
4
  export { default as CmdBackToTopButton } from '@/components/CmdBackToTopButton.vue'
4
5
  export { default as CmdBankAccountData } from '@/components/CmdBankAccountData.vue'
5
6
  export { default as CmdBasicForm } from '@/components/CmdBasicForm.vue'
@@ -35,6 +36,7 @@ export { default as CmdOpeningHours } from '@/components/CmdOpeningHours.vue'
35
36
  export { default as CmdPagination } from '@/components/CmdPagination.vue'
36
37
  export { default as CmdPageFooter } from '@/components/CmdPageFooter.vue'
37
38
  export { default as CmdPageHeader } from '@/components/CmdPageHeader.vue'
39
+ export { default as CmdParagraph } from '@/components/CmdParagraph.vue'
38
40
  export { default as CmdProgressBar } from '@/components/CmdProgressBar.vue'
39
41
  export { default as CmdSection } from '@/components/CmdSection.vue'
40
42
  export { default as CmdSidebar } from '@/components/CmdSidebar.vue'