comand-component-library 4.1.78 → 4.1.80

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "comand-component-library",
3
- "version": "4.1.78",
3
+ "version": "4.1.80",
4
4
  "license": "GPL-3.0-only",
5
5
  "author": "CoManD-UI",
6
6
  "private": false,
@@ -26,7 +26,7 @@
26
26
  "dependencies": {
27
27
  "clickout-event": "^1.1.2",
28
28
  "comand-component-library": "^4.1.63",
29
- "comand-frontend-framework": "^4.1.25",
29
+ "comand-frontend-framework": "^4.1.27",
30
30
  "comand-ui-iconfonts": "^1.0.14",
31
31
  "core-js": "^3.20.1",
32
32
  "prismjs": "^1.27.0",
@@ -1974,6 +1974,10 @@
1974
1974
  <a href="#" class="button small icon-cog" title="Open Component Settings"
1975
1975
  @click.prevent="openSettingsSidebar('CmdThumbnailScroller')"></a>
1976
1976
  </h2>
1977
+ <p> date (YMD/default): {{formatDate('2025-01-28', "", "-")}}</p>
1978
+ <p> date (DMY): {{formatDate('2025-01-28', "dmy")}}</p>
1979
+ <p> date (MDY): {{formatDate('2025-01-28', "mdy", "/")}}</p>
1980
+ <p> date (invalid)): {{formatDate('invalid')}}</p>
1977
1981
  <div class="inline-size">
1978
1982
  <CmdThumbnailScroller
1979
1983
  ref="CmdThumbnailScroller"
@@ -2072,7 +2076,6 @@
2072
2076
  <CmdWidthLimitationWrapper>
2073
2077
  <h1 class="headline-demopage">Page Overview</h1>
2074
2078
  </CmdWidthLimitationWrapper>
2075
-
2076
2079
  <!-- begin page-overview -->
2077
2080
  <PageOverview/>
2078
2081
  <!-- end page-overview -->
@@ -2175,6 +2178,7 @@ import listOfComponents from "@/assets/data/listOfComponents.json"
2175
2178
  import PageOverview from "@/pages/PageOverview.vue"
2176
2179
 
2177
2180
  // import external functions
2181
+ import {formatDate} from "@/utils/date.js"
2178
2182
  import * as functions from "@/mixins/FieldValidation.js"
2179
2183
  import {openFancyBox} from "@/components/CmdFancyBox.vue"
2180
2184
  import {localizedTime} from "./components/CmdOpeningHours.vue"
@@ -2383,6 +2387,7 @@ export default {
2383
2387
  }
2384
2388
  },
2385
2389
  methods: {
2390
+ formatDate,
2386
2391
  updateLanguage(event) {
2387
2392
  this.selectedLanguage = event.iso2
2388
2393
  },
@@ -40,7 +40,7 @@
40
40
  <!-- begin submit-button (inside fieldset) -->
41
41
  <button
42
42
  v-if="submitButtonOptions && (submitButtonOptions.position === 'insideFieldset' || submitButtonOptions.position === null) "
43
- :class="['button stretch-on-small-devices', {primary: submitButtonOptions.primary}]"
43
+ :class="['button stretch-on-small-devices', {primary: submitButtonOptions.primary}, {disabled: submitButtonOptions.disabled}]"
44
44
  :type="submitButtonOptions.type"
45
45
  >
46
46
  <span v-if="submitButtonOptions.iconClass" :class="submitButtonOptions.iconClass"></span>
@@ -51,7 +51,7 @@
51
51
 
52
52
  <div v-if="submitButtonOptions && submitButtonOptions.position === 'belowFieldset'" class="button-wrapper">
53
53
  <!-- begin submit-button (below fieldset) -->
54
- <button :class="['button stretch-on-small-devices', {primary: submitButtonOptions.primary}]"
54
+ <button :class="['button stretch-on-small-devices', {primary: submitButtonOptions.primary}, {disabled: submitButtonOptions.disabled}]"
55
55
  :type="submitButtonOptions.type || 'submit'">
56
56
  <span v-if="submitButtonOptions.iconClass" :class="submitButtonOptions.iconClass"></span>
57
57
  <span v-if="submitButtonOptions.text">{{ submitButtonOptions.text }}</span>
package/src/index.js CHANGED
@@ -66,9 +66,10 @@ export { default as DirFancybox } from '@/directives/fancybox'
66
66
  // export functions
67
67
  export { createUuid, createHtmlId } from '@/utils/common'
68
68
  export { getFileExtension } from '@/utils/getFileExtension'
69
- export { capitalize } from '@/utils/string.js'
70
- export { useScrollspy } from '@/composables/scrollspy.js'
69
+ export { capitalize } from '@/utils/string'
70
+ export { useScrollspy } from '@/composables/scrollspy'
71
71
  export { setCookieDisclaimerCookie, getCookieDisclaimerCookie } from '@/utils/cookie'
72
+ export { formatDate } from "@/utils/date"
72
73
 
73
74
  // export composables
74
75
  export { useSequence } from '@/composables/sequence'
@@ -1,67 +1,67 @@
1
1
  export default {
2
- props: {
3
- /**
4
- * Message properties for internationalization.
5
- *
6
- * You can either specify an object with key-value-pairs or a function which
7
- * takes at least one input parameter (the key) and returns the according
8
- * message.
9
- *
10
- * If key-value-pairs are provided, the value can be either a string or a
11
- * function. If it is a function, then it is called with an array of
12
- * replacements for placeholders in the message.
13
- *
14
- * If a function is provided, it is called with two parameters. The first
15
- * parameter is the message key and the second parameter is an array of
16
- * replacements for placeholders in the message.
17
- *
18
- * Example:
19
- * <pre>
20
- * {
21
- * "my.message1": "My {0} test message with {1} placeholders",
22
- * "my.message2": params => "My {0} message".replace("{0}", params[0])
23
- * }
24
- * </pre>
25
- */
26
- i18n: {
27
- type: [Object, Function],
28
- default: () => ({})
29
- }
30
- },
31
- methods: {
32
- getMessage(key, ...params) {
33
- if (!key) {
34
- return ""
35
- }
36
- let messages = this.i18n
37
- if (typeof this.i18n === "function") {
38
- messages = this.i18n.call(this, key, params)
39
- if (typeof messages !== "object") {
40
- return messages
2
+ props: {
3
+ /**
4
+ * Message properties for internationalization.
5
+ *
6
+ * You can either specify an object with key-value-pairs or a function which
7
+ * takes at least one input parameter (the key) and returns the according
8
+ * message.
9
+ *
10
+ * If key-value-pairs are provided, the value can be either a string or a
11
+ * function. If it is a function, then it is called with an array of
12
+ * replacements for placeholders in the message.
13
+ *
14
+ * If a function is provided, it is called with two parameters. The first
15
+ * parameter is the message key and the second parameter is an array of
16
+ * replacements for placeholders in the message.
17
+ *
18
+ * Example:
19
+ * <pre>
20
+ * {
21
+ * "my.message1": "My {0} test message with {1} placeholders",
22
+ * "my.message2": params => "My {0} message".replace("{0}", params[0])
23
+ * }
24
+ * </pre>
25
+ */
26
+ i18n: {
27
+ type: [Object, Function],
28
+ default: () => ({})
41
29
  }
42
- }
43
- let message =
44
- messages[key] ||
45
- this.getDefaultMessageProperty(key) ||
46
- key
47
- if (typeof message === "function") {
48
- return message.call(this, params || []);
49
- }
50
- if (Array.isArray(params) && params.length) {
51
- params.forEach((param, index) => (message = message.replace("{" + index + "}", param)))
52
- }
53
- return message
54
30
  },
55
- getDefaultMessageProperty(key) {
56
- if (Object.hasOwn(this, "defaultMessageProperties") && this.defaultMessageProperties && this.defaultMessageProperties[key]) {
57
- return this.defaultMessageProperties[key]
58
- }
59
- //const propertyKey = Object.keys(this).find(p => p.slice(-24) === "DefaultMessageProperties")
60
- const propertyKey = Object.hasOwn(this, "fieldValidationDefaultMessageProperties") ? "fieldValidationDefaultMessageProperties" : null
61
- if (propertyKey && this[propertyKey]?.[key]) {
62
- return this[propertyKey][key]
63
- }
64
- return null
31
+ methods: {
32
+ getMessage(key, ...params) {
33
+ if (!key) {
34
+ return ""
35
+ }
36
+ let messages = this.i18n
37
+ if (typeof this.i18n === "function") {
38
+ messages = this.i18n.call(this, key, params)
39
+ if (typeof messages !== "object") {
40
+ return messages
41
+ }
42
+ }
43
+ let message =
44
+ messages[key] ||
45
+ this.getDefaultMessageProperty(key) ||
46
+ key
47
+ if (typeof message === "function") {
48
+ return message.call(this, params || []);
49
+ }
50
+ if (Array.isArray(params) && params.length) {
51
+ params.forEach((param, index) => (message = message.replace("{" + index + "}", param)))
52
+ }
53
+ return message
54
+ },
55
+ getDefaultMessageProperty(key) {
56
+ if (Object.hasOwn(this, "defaultMessageProperties") && this.defaultMessageProperties && this.defaultMessageProperties[key]) {
57
+ return this.defaultMessageProperties[key]
58
+ }
59
+ //const propertyKey = Object.keys(this).find(p => p.slice(-24) === "DefaultMessageProperties")
60
+ const propertyKey = Object.hasOwn(this, "fieldValidationDefaultMessageProperties") ? "fieldValidationDefaultMessageProperties" : null
61
+ if (propertyKey && this[propertyKey]?.[key]) {
62
+ return this[propertyKey][key]
63
+ }
64
+ return null
65
+ }
65
66
  }
66
- }
67
67
  }
@@ -0,0 +1,29 @@
1
+ function formatDate(inputDate, format = "dmy", separator=".") {
2
+ // Ensure the input is a valid date object or string
3
+ const date = new Date(inputDate);
4
+
5
+ if (isNaN(date)) {
6
+ console.error("function formatDate received an invalid date as parameter. Provide date in format YYYY-MM-DD");
7
+ }
8
+
9
+ const year = date.getFullYear();
10
+ const month = String(date.getMonth() + 1).padStart(2, '0'); // Months are zero-based
11
+ const day = String(date.getDate()).padStart(2, '0');
12
+ let dateFormated = ""
13
+
14
+ switch (format) {
15
+ case 'dmy':
16
+ dateFormated = `${day}${separator}${month}${separator}${year}` // DD-MM-YYYY
17
+ break
18
+ case 'mdy':
19
+ dateFormated = `${month}${separator}${day}${separator}${year}` // MM-DD-YYYY
20
+ break
21
+ default:
22
+ dateFormated = `${year}${separator}${month}${separator}${day}` // YYYY-MM-DD
23
+
24
+ }
25
+
26
+ return dateFormated
27
+ }
28
+
29
+ export {formatDate}