comand-component-library 3.1.55 → 3.1.58

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "comand-component-library",
3
- "version": "3.1.55",
3
+ "version": "3.1.58",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "vue-cli-service serve",
@@ -18,7 +18,7 @@
18
18
  ],
19
19
  "dependencies": {
20
20
  "clickout-event": "^1.1.2",
21
- "comand-frontend-framework": "^3.2.39",
21
+ "comand-frontend-framework": "^3.2.44",
22
22
  "core-js": "^3.20.1",
23
23
  "prismjs": "^1.27.0",
24
24
  "vue": "^3.2.31",
@@ -44,4 +44,4 @@
44
44
  "typescript": "~3.9.3",
45
45
  "vue-jest": "^5.0.0-0"
46
46
  }
47
- }
47
+ }
package/src/App.vue CHANGED
@@ -125,7 +125,6 @@
125
125
  v-model="fakeSelectCheckbox"
126
126
  defaultOptionName="Options:"
127
127
  :required="true"
128
- :showLabel="false"
129
128
  id="selectbox-with-checkboxes"
130
129
  type="checkboxOptions"
131
130
  :useCustomTooltip="true"
@@ -8,9 +8,9 @@
8
8
  'has-state': validationStatus && validationStatus !== 'none'
9
9
  }
10
10
  ]"
11
- :aria-labelledby="labelText"
12
- :aria-required="$attrs.required !== undefined"
13
- ref="fakeselect"
11
+ :aria-labelledby="labelText"
12
+ :aria-required="$attrs.required !== undefined"
13
+ ref="fakeselect"
14
14
  >
15
15
  <span v-if="showLabel">
16
16
  <!-- begin label -->
@@ -19,14 +19,14 @@
19
19
  </span>
20
20
  <!-- end label -->
21
21
  <a v-if="$attrs.required || inputRequirements.length"
22
- href="#"
23
- @click.prevent
24
- :class="getStatusIconClass"
25
- :title="!useCustomTooltip ? getValidationMessage : ''"
26
- :aria-errormessage="getValidationMessage"
27
- aria-live="assertive"
28
- :id="tooltipId"
29
- :role="validationStatus === 'error' ? 'alert' : 'dialog'">
22
+ href="#"
23
+ @click.prevent
24
+ :class="getStatusIconClass"
25
+ :title="!useCustomTooltip ? getValidationMessage : ''"
26
+ :aria-errormessage="getValidationMessage"
27
+ aria-live="assertive"
28
+ :id="tooltipId"
29
+ :role="validationStatus === 'error' ? 'alert' : 'dialog'">
30
30
  </a>
31
31
  </span>
32
32
  <ul :class="{'open': showOptions}" @clickout="closeOptions">
@@ -66,7 +66,7 @@
66
66
  <li v-for="(option, index) in selectData" :key="index">
67
67
  <label v-if="type === 'checkboxOptions'" :for="'option-' + (index + 1)" :class="{'active' : modelValue.includes(`${option.value}`)}">
68
68
  <input type="checkbox" :value="option.value" @change="optionSelect"
69
- :checked="modelValue.includes(option.value)" :id="'option-' + (index + 1)"/>
69
+ :checked="compareValues(option.value)" :id="'option-' + (index + 1)"/>
70
70
  <span>{{ option.text }}</span>
71
71
  </label>
72
72
 
@@ -82,12 +82,14 @@
82
82
  <span>{{ option.text }}</span>
83
83
  </a>
84
84
  </li>
85
+ <!-- begin (de)select all options -->
85
86
  <li v-if="showSelectAllOptions && type === 'checkboxOptions'" class="select-all-options">
86
87
  <a href="#" @click.prevent="toggleAllOptions">
87
88
  <span :class="selectAllOptionsIcon"></span>
88
89
  <span>{{ selectAllOptionsText }}</span>
89
90
  </a>
90
91
  </li>
92
+ <!-- end (de)select all options -->
91
93
  </ul>
92
94
  <!-- end dropdown with checkboxes -->
93
95
 
@@ -112,12 +114,13 @@
112
114
 
113
115
  <template v-if="showRequirements && (validationStatus === '' || validationStatus === 'error')">
114
116
  <!-- begin list of requirements -->
115
- <h6>{{ getMessage("cmdfakeselect.headline.requirements_for_input") }}<br />"{{labelText}}"</h6>
117
+ <h6>{{ getMessage("cmdfakeselect.headline.requirements_for_input") }}<br/>"{{ labelText }}"</h6>
116
118
  <dl class="list-of-requirements">
117
119
  <template v-for="(requirement, index) in inputRequirements" :key="index">
118
- <dt aria-live="assertive" :class="requirement.valid(modelValue, $attrs) ? 'success' : 'error'">{{requirement.message}}:</dt>
120
+ <dt aria-live="assertive" :class="requirement.valid(modelValue, $attrs) ? 'success' : 'error'">{{ requirement.message }}:</dt>
119
121
  <dd :class="requirement.valid(modelValue, $attrs) ? 'success' : 'error'">
120
- <span aria-live="assertive" :class="requirement.valid(modelValue, $attrs) ? 'icon-check-circle' : 'icon-error-circle'" :title="requirement.valid(modelValue, $attrs) ? 'success' : 'error'"></span>
122
+ <span aria-live="assertive" :class="requirement.valid(modelValue, $attrs) ? 'icon-check-circle' : 'icon-error-circle'"
123
+ :title="requirement.valid(modelValue, $attrs) ? 'success' : 'error'"></span>
121
124
  </dd>
122
125
  </template>
123
126
  </dl>
@@ -125,7 +128,7 @@
125
128
 
126
129
  <!-- begin helplink -->
127
130
  <template v-if="helplink">
128
- <hr v-if="helplink.show" />
131
+ <hr v-if="helplink.show"/>
129
132
  <a v-if="helplink.show && helplink.url"
130
133
  :href="helplink.url"
131
134
  :target="helplink.target"
@@ -199,7 +202,7 @@ export default {
199
202
  * set default v-model (must be named modelValue in Vue3)
200
203
  */
201
204
  modelValue: {
202
- type: [String, Array],
205
+ type: [String, Number, Array],
203
206
  default: ""
204
207
  },
205
208
  /**
@@ -272,7 +275,7 @@ export default {
272
275
  computed: {
273
276
  // get the displayed option name
274
277
  optionName() {
275
- // fake a normal checkbox
278
+ // fake a native selectbox
276
279
  if (this.type !== "checkboxOptions" && this.type !== "content" && this.modelValue) {
277
280
  const result = this.selectData.find(option => option.value === this.modelValue)?.text
278
281
 
@@ -285,13 +288,11 @@ export default {
285
288
  // selectbox with checkbox-options
286
289
  else if (this.type === "checkboxOptions") {
287
290
  if (this.modelValue.length === 1) {
288
- return this.selectData.find(option => option.value === this.modelValue[0])?.text
291
+ return this.selectData.find(option => String(option.value) === String(this.modelValue[0]))?.text
289
292
  } else if (this.modelValue.length > 1) {
290
293
  return this.modelValue.length + " options selected"
291
294
  }
292
- }
293
-
294
- else if (this.selectData?.length) {
295
+ } else if (this.selectData?.length) {
295
296
  return this.selectData[0].text
296
297
  }
297
298
 
@@ -319,7 +320,7 @@ export default {
319
320
  return null
320
321
  },
321
322
  selectAllOptionsText() {
322
- if(Array.isArray(this.modelValue) && this.modelValue.length === this.selectData.length) {
323
+ if (Array.isArray(this.modelValue) && this.modelValue.length === this.selectData.length) {
323
324
  return "Deselect all options"
324
325
  }
325
326
  return "Select all options"
@@ -342,20 +343,20 @@ export default {
342
343
  toggleAllOptions() {
343
344
  this.validationStatus = "success"
344
345
  const checkboxValues = []
345
- if(this.modelValue.length === this.selectData.length) {
346
- if(this.$attrs.required) {
346
+ if (this.modelValue.length === this.selectData.length) {
347
+ if (this.$attrs.required) {
347
348
  this.validationStatus = "error"
348
349
  }
349
350
  } else {
350
351
  for (let i = 0; i < this.selectData.length; i++) {
351
- checkboxValues.push(this.selectData[i].value)
352
+ checkboxValues.push(String(this.selectData[i].value))
352
353
  }
353
354
  }
354
355
 
355
356
  this.$emit("update:modelValue", checkboxValues)
356
357
  },
357
358
  limitWidth() {
358
- if(this.$refs.fakeselect) {
359
+ if (this.$refs.fakeselect) {
359
360
  const outerWidth = this.$refs.fakeselect.offsetWidth
360
361
  this.limitWidthStyle = {width: outerWidth / 100 * 90 + "px"}
361
362
  }
@@ -365,17 +366,23 @@ export default {
365
366
  this.showOptions = !this.showOptions
366
367
  }
367
368
  },
368
- // check is an option is selected for default-selectbox
369
+ // check if array of selected options includes number or string version of value
370
+ compareValues(option) {
371
+ return this.modelValue.some((item) => {
372
+ return item === option || item === String(option)
373
+ })
374
+ },
375
+ // check if an option is selected for default-selectbox
369
376
  selectOption(optionValue) {
370
377
  this.validationStatus = "success"
371
- if(this.$attrs.required !== undefined) {
372
- if(!optionValue) {
378
+ if (this.$attrs.required !== undefined) {
379
+ if (!optionValue) {
373
380
  this.validationStatus = "error"
374
381
  }
375
382
  }
376
383
 
377
384
  this.showOptions = false
378
- this.$emit('update:modelValue', optionValue);
385
+ this.$emit('update:modelValue', optionValue)
379
386
  },
380
387
  // check if a checkbox is changed for selectbox with checkboxes
381
388
  optionSelect(event) {
@@ -383,15 +390,15 @@ export default {
383
390
 
384
391
  let value = [...this.modelValue] // copy array from props
385
392
  if (event.target.checked) {
386
- value.push(event.target.value); // attention: value will be transformed into string!
393
+ value.push(event.target.value) // attention: value will be transformed into string!
387
394
  } else {
388
- value = value.filter(v => v !== event.target.value);
395
+ value = value.filter(item => item !== event.target.value && String(item) !== event.target.value)
389
396
  }
390
- if(this.$attrs.required !== undefined && !value.length) {
397
+ if (this.$attrs.required !== undefined && !value.length) {
391
398
  this.validationStatus = "error"
392
399
  }
393
400
 
394
- this.$emit('update:modelValue', value);
401
+ this.$emit('update:modelValue', value)
395
402
  },
396
403
  closeOptions() {
397
404
  this.showOptions = false
@@ -420,10 +427,10 @@ export default {
420
427
  },
421
428
  selectData: {
422
429
  handler() {
423
- // check if given value by modelValue exists (else pre-select first option)
424
- if(this.type === "default" && this.selectData?.length && !this.selectData.some((option) => option.value === this.modelValue)) {
425
- this.$emit("update:modelValue", this.selectData[0].value)
426
- }
430
+ // check if given value by modelValue exists (else pre-select first option)
431
+ if (this.type === "default" && this.selectData?.length && !this.selectData.some((option) => option.value === this.modelValue)) {
432
+ this.$emit("update:modelValue", this.selectData[0].value)
433
+ }
427
434
  },
428
435
  immediate: true,
429
436
  deep: true
package/src/main.js CHANGED
@@ -5,6 +5,9 @@ import 'comand-frontend-framework/src/assets/css/normalize.css'
5
5
  /* import framework-styles */
6
6
  import 'comand-frontend-framework/src/assets/css/framework.css'
7
7
 
8
+ /* import breakpoints */
9
+ import 'comand-frontend-framework/src/assets/css/breakpoints.css'
10
+
8
11
  /* import framework-iconfont */
9
12
  import 'comand-frontend-framework/src/assets/css/framework-iconfont.css'
10
13
  /* end imports css from comand-frontend-framework ---------------------------------------------------------------------------------------- */