@sfxcode/formkit-primevue 2.9.2 → 2.9.4
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/README.md +1 -1
- package/dist/composables/useFormKitInput.js +7 -7
- package/dist/composables/useFormKitInput.mjs +7 -7
- package/dist/composables/useFormKitSection.d.ts +4 -4
- package/dist/composables/useFormKitSection.js +4 -4
- package/dist/composables/useFormKitSection.mjs +4 -4
- package/dist/composables/useInputEditor.js +55 -36
- package/dist/composables/useInputEditor.mjs +80 -21
- package/dist/composables/useOutputDuration.js +15 -17
- package/dist/composables/useOutputDuration.mjs +18 -22
- package/package.json +13 -13
package/README.md
CHANGED
|
@@ -126,7 +126,7 @@ Some samples for common tasks are available
|
|
|
126
126
|
- Checkbox
|
|
127
127
|
- ColorPicker
|
|
128
128
|
- DatePicker
|
|
129
|
-
- Editor (HTML Editor)
|
|
129
|
+
- Editor (HTML Editor - if you register the editor component, make sure to import quill)
|
|
130
130
|
- InputMask
|
|
131
131
|
- InputNumber
|
|
132
132
|
- InputOtp
|
|
@@ -8,10 +8,10 @@ var _config = require("primevue/config");
|
|
|
8
8
|
var _vue = require("vue");
|
|
9
9
|
function useFormKitInput(context) {
|
|
10
10
|
const isInvalid = (0, _vue.computed)(() => {
|
|
11
|
-
return context?.state
|
|
11
|
+
return context?.state?.validationVisible && !context?.state?.valid;
|
|
12
12
|
});
|
|
13
13
|
const styleClass = (0, _vue.computed)(() => {
|
|
14
|
-
return context?.state
|
|
14
|
+
return context?.state?.validationVisible && !context?.state?.valid ? `${context?.attrs?.class || ""} p-invalid` : context?.attrs?.class || "";
|
|
15
15
|
});
|
|
16
16
|
function isGlobalUnstyledMode() {
|
|
17
17
|
let result = false;
|
|
@@ -25,18 +25,18 @@ function useFormKitInput(context) {
|
|
|
25
25
|
return context?.unstyled ?? isGlobalUnstyledMode();
|
|
26
26
|
});
|
|
27
27
|
const formKitCreateInputSlots = /* @__PURE__ */new Set(["label", "help", "messages", "message", "input"]);
|
|
28
|
-
const validSlotNames = (0, _vue.computed)(() => Object.keys(context?.slots).filter(slotName => !formKitCreateInputSlots.has(slotName)));
|
|
28
|
+
const validSlotNames = (0, _vue.computed)(() => Object.keys(context?.slots || {}).filter(slotName => !formKitCreateInputSlots.has(slotName)));
|
|
29
29
|
function handleBlur(event) {
|
|
30
|
-
context?.handlers
|
|
30
|
+
context?.handlers?.blur?.(event);
|
|
31
31
|
}
|
|
32
32
|
function handleChange(_) {
|
|
33
|
-
context?.node
|
|
33
|
+
context?.node?.input?.(context?._value);
|
|
34
34
|
}
|
|
35
35
|
function handleInput(_) {
|
|
36
|
-
context?.node
|
|
36
|
+
context?.node?.input?.(context?._value);
|
|
37
37
|
}
|
|
38
38
|
function handleSelect(e) {
|
|
39
|
-
context?.node
|
|
39
|
+
context?.node?.input?.(e);
|
|
40
40
|
}
|
|
41
41
|
return {
|
|
42
42
|
isInvalid,
|
|
@@ -2,10 +2,10 @@ import { usePrimeVue } from "primevue/config";
|
|
|
2
2
|
import { computed } from "vue";
|
|
3
3
|
export function useFormKitInput(context) {
|
|
4
4
|
const isInvalid = computed(() => {
|
|
5
|
-
return context?.state
|
|
5
|
+
return context?.state?.validationVisible && !context?.state?.valid;
|
|
6
6
|
});
|
|
7
7
|
const styleClass = computed(() => {
|
|
8
|
-
return context?.state
|
|
8
|
+
return context?.state?.validationVisible && !context?.state?.valid ? `${context?.attrs?.class || ""} p-invalid` : context?.attrs?.class || "";
|
|
9
9
|
});
|
|
10
10
|
function isGlobalUnstyledMode() {
|
|
11
11
|
let result = false;
|
|
@@ -21,19 +21,19 @@ export function useFormKitInput(context) {
|
|
|
21
21
|
});
|
|
22
22
|
const formKitCreateInputSlots = /* @__PURE__ */ new Set(["label", "help", "messages", "message", "input"]);
|
|
23
23
|
const validSlotNames = computed(
|
|
24
|
-
() => Object.keys(context?.slots).filter((slotName) => !formKitCreateInputSlots.has(slotName))
|
|
24
|
+
() => Object.keys(context?.slots || {}).filter((slotName) => !formKitCreateInputSlots.has(slotName))
|
|
25
25
|
);
|
|
26
26
|
function handleBlur(event) {
|
|
27
|
-
context?.handlers
|
|
27
|
+
context?.handlers?.blur?.(event);
|
|
28
28
|
}
|
|
29
29
|
function handleChange(_) {
|
|
30
|
-
context?.node
|
|
30
|
+
context?.node?.input?.(context?._value);
|
|
31
31
|
}
|
|
32
32
|
function handleInput(_) {
|
|
33
|
-
context?.node
|
|
33
|
+
context?.node?.input?.(context?._value);
|
|
34
34
|
}
|
|
35
35
|
function handleSelect(e) {
|
|
36
|
-
context?.node
|
|
36
|
+
context?.node?.input?.(e);
|
|
37
37
|
}
|
|
38
38
|
return { isInvalid, validSlotNames, styleClass, unstyled, handleBlur, handleChange, handleInput, handleSelect };
|
|
39
39
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare function useFormKitSection(context: any): {
|
|
2
2
|
generateId: () => string;
|
|
3
|
-
hasPrefix: import("vue").ComputedRef<
|
|
4
|
-
hasPrefixIcon: import("vue").ComputedRef<
|
|
5
|
-
hasSuffix: import("vue").ComputedRef<
|
|
6
|
-
hasSuffixIcon: import("vue").ComputedRef<
|
|
3
|
+
hasPrefix: import("vue").ComputedRef<boolean>;
|
|
4
|
+
hasPrefixIcon: import("vue").ComputedRef<boolean>;
|
|
5
|
+
hasSuffix: import("vue").ComputedRef<boolean>;
|
|
6
|
+
hasSuffixIcon: import("vue").ComputedRef<boolean>;
|
|
7
7
|
};
|
|
@@ -8,16 +8,16 @@ var _uuid = require("uuid");
|
|
|
8
8
|
var _vue = require("vue");
|
|
9
9
|
function useFormKitSection(context) {
|
|
10
10
|
const hasPrefix = (0, _vue.computed)(() => {
|
|
11
|
-
return context?.prefix
|
|
11
|
+
return Boolean(context?.prefix?.length > 0);
|
|
12
12
|
});
|
|
13
13
|
const hasPrefixIcon = (0, _vue.computed)(() => {
|
|
14
|
-
return context?.iconPrefix
|
|
14
|
+
return Boolean(context?.iconPrefix?.length > 0);
|
|
15
15
|
});
|
|
16
16
|
const hasSuffixIcon = (0, _vue.computed)(() => {
|
|
17
|
-
return context?.iconSuffix
|
|
17
|
+
return Boolean(context?.iconSuffix?.length > 0);
|
|
18
18
|
});
|
|
19
19
|
const hasSuffix = (0, _vue.computed)(() => {
|
|
20
|
-
return context?.suffix
|
|
20
|
+
return Boolean(context?.suffix?.length > 0);
|
|
21
21
|
});
|
|
22
22
|
function generateId() {
|
|
23
23
|
return (0, _uuid.v4)();
|
|
@@ -2,16 +2,16 @@ import { v4 as uuidv4 } from "uuid";
|
|
|
2
2
|
import { computed } from "vue";
|
|
3
3
|
export function useFormKitSection(context) {
|
|
4
4
|
const hasPrefix = computed(() => {
|
|
5
|
-
return context?.prefix
|
|
5
|
+
return Boolean(context?.prefix?.length > 0);
|
|
6
6
|
});
|
|
7
7
|
const hasPrefixIcon = computed(() => {
|
|
8
|
-
return context?.iconPrefix
|
|
8
|
+
return Boolean(context?.iconPrefix?.length > 0);
|
|
9
9
|
});
|
|
10
10
|
const hasSuffixIcon = computed(() => {
|
|
11
|
-
return context?.iconSuffix
|
|
11
|
+
return Boolean(context?.iconSuffix?.length > 0);
|
|
12
12
|
});
|
|
13
13
|
const hasSuffix = computed(() => {
|
|
14
|
-
return context?.suffix
|
|
14
|
+
return Boolean(context?.suffix?.length > 0);
|
|
15
15
|
});
|
|
16
16
|
function generateId() {
|
|
17
17
|
return uuidv4();
|
|
@@ -12,12 +12,12 @@ function useInputEditor() {
|
|
|
12
12
|
if (!data) return {};
|
|
13
13
|
const formkitInput = data?._dollar_formkit;
|
|
14
14
|
let tempData = {};
|
|
15
|
-
if (data.prime && data.prime.length > 0) {
|
|
16
|
-
const mapped = data.prime.map(entry => {
|
|
17
|
-
const key = entry.prime_key;
|
|
15
|
+
if (data.prime && Array.isArray(data.prime) && data.prime.length > 0) {
|
|
16
|
+
const mapped = data.prime.filter(entry => entry && typeof entry === "object" && "prime_key" in entry && "prime_value" in entry).map(entry => {
|
|
17
|
+
const key = entry.prime_key || "";
|
|
18
18
|
let value = entry.prime_value;
|
|
19
|
-
if (formkitInput === "primeInputOtp" && key === "length") {
|
|
20
|
-
value =
|
|
19
|
+
if (formkitInput === "primeInputOtp" && key === "length" && value !== void 0) {
|
|
20
|
+
value = Number(value);
|
|
21
21
|
}
|
|
22
22
|
return [key, value];
|
|
23
23
|
});
|
|
@@ -25,9 +25,9 @@ function useInputEditor() {
|
|
|
25
25
|
[key]: val
|
|
26
26
|
})));
|
|
27
27
|
}
|
|
28
|
-
const readonlyValue = data.readonly ? true : void 0;
|
|
29
|
-
const disabledValue = data.disabled ? true : void 0;
|
|
30
|
-
const preserveValue = data.preserve ? true : void 0;
|
|
28
|
+
const readonlyValue = data.readonly === true ? true : void 0;
|
|
29
|
+
const disabledValue = data.disabled === true ? true : void 0;
|
|
30
|
+
const preserveValue = data.preserve === true ? true : void 0;
|
|
31
31
|
const defaultObject = {
|
|
32
32
|
readonly: readonlyValue,
|
|
33
33
|
disabled: disabledValue,
|
|
@@ -46,42 +46,47 @@ function useInputEditor() {
|
|
|
46
46
|
slots: void 0,
|
|
47
47
|
selectButton: void 0
|
|
48
48
|
};
|
|
49
|
-
const useOptions = primeInputWithOptionNames.map(s => `prime${s}`).includes(formkitInput);
|
|
49
|
+
const useOptions = formkitInput ? primeInputWithOptionNames.map(s => `prime${s}`).includes(formkitInput) : false;
|
|
50
50
|
let result = {};
|
|
51
|
-
if (useOptions)
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
51
|
+
if (useOptions) {
|
|
52
|
+
result = {
|
|
53
|
+
...data,
|
|
54
|
+
$formkit: formkitInput,
|
|
55
|
+
...tempData,
|
|
56
|
+
...undefinedObject,
|
|
57
|
+
...defaultObject,
|
|
58
|
+
outerClass,
|
|
59
|
+
wrapperClass,
|
|
60
|
+
innerClass,
|
|
61
|
+
optionLabel: "label",
|
|
62
|
+
optionValue: "value"
|
|
63
|
+
};
|
|
64
|
+
} else {
|
|
65
|
+
result = {
|
|
66
|
+
...data,
|
|
67
|
+
$formkit: formkitInput,
|
|
68
|
+
...tempData,
|
|
69
|
+
...undefinedObject,
|
|
70
|
+
...defaultObject,
|
|
71
|
+
outerClass,
|
|
72
|
+
wrapperClass,
|
|
73
|
+
innerClass,
|
|
74
|
+
options: void 0
|
|
75
|
+
};
|
|
76
|
+
}
|
|
73
77
|
for (const key in result) {
|
|
74
78
|
const value = result[key];
|
|
75
|
-
if (
|
|
79
|
+
if (value !== null && value !== void 0 && typeof value === "string") {
|
|
76
80
|
if (value.trim().length === 0) result[key] = void 0;
|
|
77
81
|
}
|
|
78
82
|
}
|
|
79
83
|
return result;
|
|
80
84
|
}
|
|
81
85
|
function dataToSchema(data) {
|
|
86
|
+
if (!data) return {};
|
|
82
87
|
const schema = editorDataToSchema(data);
|
|
83
|
-
if (schema.options) {
|
|
84
|
-
const options = schema.options.map(o => JSON.parse(JSON.stringify(o)));
|
|
88
|
+
if (schema?.options && Array.isArray(schema.options)) {
|
|
89
|
+
const options = schema.options.map(o => o ? JSON.parse(JSON.stringify(o)) : {});
|
|
85
90
|
return {
|
|
86
91
|
...schema,
|
|
87
92
|
options
|
|
@@ -91,13 +96,19 @@ function useInputEditor() {
|
|
|
91
96
|
}
|
|
92
97
|
}
|
|
93
98
|
function editorDataToJson(data) {
|
|
99
|
+
if (!data) return "{}";
|
|
94
100
|
return JSON.stringify(dataToSchema(data));
|
|
95
101
|
}
|
|
96
102
|
function objectToString(data) {
|
|
103
|
+
if (!data) return "{}";
|
|
97
104
|
return `{${Object.entries(data).map(([key, value]) => {
|
|
98
105
|
if (key === "options" && Array.isArray(value) && value.length > 0) {
|
|
99
106
|
let result = "[";
|
|
100
|
-
value.forEach(o =>
|
|
107
|
+
value.forEach(o => {
|
|
108
|
+
if (o && typeof o === "object") {
|
|
109
|
+
result = `${result + objectToString(o)}, `;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
101
112
|
return `${key}: ${result.substring(0, result.length - 2)}]`;
|
|
102
113
|
} else if (key === "primeInputOtp") {
|
|
103
114
|
return `${key}: ${value}`;
|
|
@@ -107,9 +118,17 @@ function useInputEditor() {
|
|
|
107
118
|
}).join()}}`;
|
|
108
119
|
}
|
|
109
120
|
function editorDataToObject(data) {
|
|
110
|
-
|
|
121
|
+
if (!data) return "{}";
|
|
122
|
+
try {
|
|
123
|
+
const jsonData = editorDataToJson(data);
|
|
124
|
+
return objectToString(JSON.parse(jsonData));
|
|
125
|
+
} catch (error) {
|
|
126
|
+
console.error("Error in editorDataToObject:", error);
|
|
127
|
+
return "{}";
|
|
128
|
+
}
|
|
111
129
|
}
|
|
112
130
|
function schemaToEditorData(schema) {
|
|
131
|
+
if (!schema) return {};
|
|
113
132
|
const formkitInput = schema?.$formkit;
|
|
114
133
|
return {
|
|
115
134
|
...schema,
|
|
@@ -7,21 +7,25 @@ export function useInputEditor() {
|
|
|
7
7
|
return {};
|
|
8
8
|
const formkitInput = data?._dollar_formkit;
|
|
9
9
|
let tempData = {};
|
|
10
|
-
if (data.prime && data.prime.length > 0) {
|
|
11
|
-
const mapped = data.prime.map((entry) => {
|
|
12
|
-
const key = entry.prime_key;
|
|
10
|
+
if (data.prime && Array.isArray(data.prime) && data.prime.length > 0) {
|
|
11
|
+
const mapped = data.prime.filter((entry) => entry && typeof entry === "object" && "prime_key" in entry && "prime_value" in entry).map((entry) => {
|
|
12
|
+
const key = entry.prime_key || "";
|
|
13
13
|
let value = entry.prime_value;
|
|
14
|
-
if (formkitInput === "primeInputOtp" && key === "length") {
|
|
15
|
-
value =
|
|
14
|
+
if (formkitInput === "primeInputOtp" && key === "length" && value !== void 0) {
|
|
15
|
+
value = Number(value);
|
|
16
16
|
}
|
|
17
17
|
return [key, value];
|
|
18
18
|
});
|
|
19
19
|
tempData = Object.assign({}, ...mapped.map(([key, val]) => ({ [key]: val })));
|
|
20
20
|
}
|
|
21
|
-
const readonlyValue = data.readonly ? true : void 0;
|
|
22
|
-
const disabledValue = data.disabled ? true : void 0;
|
|
23
|
-
const preserveValue = data.preserve ? true : void 0;
|
|
24
|
-
const defaultObject = {
|
|
21
|
+
const readonlyValue = data.readonly === true ? true : void 0;
|
|
22
|
+
const disabledValue = data.disabled === true ? true : void 0;
|
|
23
|
+
const preserveValue = data.preserve === true ? true : void 0;
|
|
24
|
+
const defaultObject = {
|
|
25
|
+
readonly: readonlyValue,
|
|
26
|
+
disabled: disabledValue,
|
|
27
|
+
preserve: preserveValue
|
|
28
|
+
};
|
|
25
29
|
let outerClass = "";
|
|
26
30
|
if (data.outerClass)
|
|
27
31
|
outerClass = `${outerClass} ${data.outerClass}`.trim();
|
|
@@ -31,16 +35,44 @@ export function useInputEditor() {
|
|
|
31
35
|
let innerClass = "";
|
|
32
36
|
if (data.innerClass)
|
|
33
37
|
innerClass = `${innerClass} ${data.innerClass}`.trim();
|
|
34
|
-
const undefinedObject = {
|
|
35
|
-
|
|
38
|
+
const undefinedObject = {
|
|
39
|
+
prime: void 0,
|
|
40
|
+
schemaResultFormKey: void 0,
|
|
41
|
+
_dollar_formkit: void 0,
|
|
42
|
+
slots: void 0,
|
|
43
|
+
selectButton: void 0
|
|
44
|
+
};
|
|
45
|
+
const useOptions = formkitInput ? primeInputWithOptionNames.map((s) => `prime${s}`).includes(formkitInput) : false;
|
|
36
46
|
let result = {};
|
|
37
|
-
if (useOptions)
|
|
38
|
-
result = {
|
|
39
|
-
|
|
40
|
-
|
|
47
|
+
if (useOptions) {
|
|
48
|
+
result = {
|
|
49
|
+
...data,
|
|
50
|
+
$formkit: formkitInput,
|
|
51
|
+
...tempData,
|
|
52
|
+
...undefinedObject,
|
|
53
|
+
...defaultObject,
|
|
54
|
+
outerClass,
|
|
55
|
+
wrapperClass,
|
|
56
|
+
innerClass,
|
|
57
|
+
optionLabel: "label",
|
|
58
|
+
optionValue: "value"
|
|
59
|
+
};
|
|
60
|
+
} else {
|
|
61
|
+
result = {
|
|
62
|
+
...data,
|
|
63
|
+
$formkit: formkitInput,
|
|
64
|
+
...tempData,
|
|
65
|
+
...undefinedObject,
|
|
66
|
+
...defaultObject,
|
|
67
|
+
outerClass,
|
|
68
|
+
wrapperClass,
|
|
69
|
+
innerClass,
|
|
70
|
+
options: void 0
|
|
71
|
+
};
|
|
72
|
+
}
|
|
41
73
|
for (const key in result) {
|
|
42
74
|
const value = result[key];
|
|
43
|
-
if (
|
|
75
|
+
if (value !== null && value !== void 0 && typeof value === "string") {
|
|
44
76
|
if (value.trim().length === 0)
|
|
45
77
|
result[key] = void 0;
|
|
46
78
|
}
|
|
@@ -48,22 +80,32 @@ export function useInputEditor() {
|
|
|
48
80
|
return result;
|
|
49
81
|
}
|
|
50
82
|
function dataToSchema(data) {
|
|
83
|
+
if (!data)
|
|
84
|
+
return {};
|
|
51
85
|
const schema = editorDataToSchema(data);
|
|
52
|
-
if (schema.options) {
|
|
53
|
-
const options = schema.options.map((o) => JSON.parse(JSON.stringify(o)));
|
|
86
|
+
if (schema?.options && Array.isArray(schema.options)) {
|
|
87
|
+
const options = schema.options.map((o) => o ? JSON.parse(JSON.stringify(o)) : {});
|
|
54
88
|
return { ...schema, options };
|
|
55
89
|
} else {
|
|
56
90
|
return schema;
|
|
57
91
|
}
|
|
58
92
|
}
|
|
59
93
|
function editorDataToJson(data) {
|
|
94
|
+
if (!data)
|
|
95
|
+
return "{}";
|
|
60
96
|
return JSON.stringify(dataToSchema(data));
|
|
61
97
|
}
|
|
62
98
|
function objectToString(data) {
|
|
99
|
+
if (!data)
|
|
100
|
+
return "{}";
|
|
63
101
|
return `{${Object.entries(data).map(([key, value]) => {
|
|
64
102
|
if (key === "options" && Array.isArray(value) && value.length > 0) {
|
|
65
103
|
let result = "[";
|
|
66
|
-
value.forEach((o) =>
|
|
104
|
+
value.forEach((o) => {
|
|
105
|
+
if (o && typeof o === "object") {
|
|
106
|
+
result = `${result + objectToString(o)}, `;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
67
109
|
return `${key}: ${result.substring(0, result.length - 2)}]`;
|
|
68
110
|
} else if (key === "primeInputOtp") {
|
|
69
111
|
return `${key}: ${value}`;
|
|
@@ -73,11 +115,28 @@ export function useInputEditor() {
|
|
|
73
115
|
}).join()}}`;
|
|
74
116
|
}
|
|
75
117
|
function editorDataToObject(data) {
|
|
76
|
-
|
|
118
|
+
if (!data)
|
|
119
|
+
return "{}";
|
|
120
|
+
try {
|
|
121
|
+
const jsonData = editorDataToJson(data);
|
|
122
|
+
return objectToString(JSON.parse(jsonData));
|
|
123
|
+
} catch (error) {
|
|
124
|
+
console.error("Error in editorDataToObject:", error);
|
|
125
|
+
return "{}";
|
|
126
|
+
}
|
|
77
127
|
}
|
|
78
128
|
function schemaToEditorData(schema) {
|
|
129
|
+
if (!schema)
|
|
130
|
+
return {};
|
|
79
131
|
const formkitInput = schema?.$formkit;
|
|
80
132
|
return { ...schema, _dollar_formkit: formkitInput };
|
|
81
133
|
}
|
|
82
|
-
return {
|
|
134
|
+
return {
|
|
135
|
+
primeInputNames,
|
|
136
|
+
primeOutputNames,
|
|
137
|
+
editorDataToSchema,
|
|
138
|
+
editorDataToJson,
|
|
139
|
+
editorDataToCode: editorDataToObject,
|
|
140
|
+
schemaToEditorData
|
|
141
|
+
};
|
|
83
142
|
}
|
|
@@ -8,30 +8,28 @@ function useOutputDuration() {
|
|
|
8
8
|
function durationToMinutes(duration) {
|
|
9
9
|
let hours = 0;
|
|
10
10
|
let minutes = 0;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
minutes =
|
|
11
|
+
const lowerDuration = duration.toLowerCase();
|
|
12
|
+
if (lowerDuration.includes(":")) {
|
|
13
|
+
[hours, minutes] = lowerDuration.split(":").map(part => +part.trim());
|
|
14
14
|
} else {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
if (lowerDuration.includes("h")) {
|
|
16
|
+
hours = +lowerDuration.split("h")[0].trim();
|
|
17
|
+
const remainder = lowerDuration.split("h")[1] || "";
|
|
18
|
+
if (remainder.includes("m")) minutes = +remainder.split("m")[0].trim();else if (/^\d+$/.test(remainder)) minutes = +remainder;
|
|
19
|
+
} else if (lowerDuration.includes("m")) {
|
|
20
|
+
minutes = +lowerDuration.split("m")[0].trim();
|
|
21
|
+
} else if (/^\d+$/.test(lowerDuration)) {
|
|
22
|
+
minutes = +lowerDuration;
|
|
19
23
|
}
|
|
20
|
-
if (durationString.includes("m")) minutes = +durationString.substring(0, durationString.indexOf("m")).trim();
|
|
21
|
-
if (durationString === durationString.replace(/\D/g, "")) minutes = +durationString;
|
|
22
24
|
}
|
|
23
25
|
return hours * 60 + minutes;
|
|
24
26
|
}
|
|
25
27
|
function formattedDuration(duration) {
|
|
26
28
|
const minutes = durationToMinutes(duration);
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (minuten > 0) result = `${result} ${minuten}m`;
|
|
32
|
-
if (minutes === 0) result = "0";
|
|
33
|
-
if (result.length === 0) result = duration;
|
|
34
|
-
return result.trim();
|
|
29
|
+
const hours = Math.trunc(minutes / 60);
|
|
30
|
+
const remainingMinutes = minutes % 60;
|
|
31
|
+
if (minutes === 0) return "0";
|
|
32
|
+
return `${hours > 0 ? `${hours}h` : ""}${hours > 0 && remainingMinutes > 0 ? " " : ""}${remainingMinutes > 0 ? `${remainingMinutes}m` : ""}`;
|
|
35
33
|
}
|
|
36
34
|
return {
|
|
37
35
|
durationToMinutes,
|
|
@@ -2,36 +2,32 @@ export function useOutputDuration() {
|
|
|
2
2
|
function durationToMinutes(duration) {
|
|
3
3
|
let hours = 0;
|
|
4
4
|
let minutes = 0;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
minutes =
|
|
5
|
+
const lowerDuration = duration.toLowerCase();
|
|
6
|
+
if (lowerDuration.includes(":")) {
|
|
7
|
+
[hours, minutes] = lowerDuration.split(":").map((part) => +part.trim());
|
|
8
8
|
} else {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
if (lowerDuration.includes("h")) {
|
|
10
|
+
hours = +lowerDuration.split("h")[0].trim();
|
|
11
|
+
const remainder = lowerDuration.split("h")[1] || "";
|
|
12
|
+
if (remainder.includes("m"))
|
|
13
|
+
minutes = +remainder.split("m")[0].trim();
|
|
14
|
+
else if (/^\d+$/.test(remainder))
|
|
15
|
+
minutes = +remainder;
|
|
16
|
+
} else if (lowerDuration.includes("m")) {
|
|
17
|
+
minutes = +lowerDuration.split("m")[0].trim();
|
|
18
|
+
} else if (/^\d+$/.test(lowerDuration)) {
|
|
19
|
+
minutes = +lowerDuration;
|
|
13
20
|
}
|
|
14
|
-
if (durationString.includes("m"))
|
|
15
|
-
minutes = +durationString.substring(0, durationString.indexOf("m")).trim();
|
|
16
|
-
if (durationString === durationString.replace(/\D/g, ""))
|
|
17
|
-
minutes = +durationString;
|
|
18
21
|
}
|
|
19
22
|
return hours * 60 + minutes;
|
|
20
23
|
}
|
|
21
24
|
function formattedDuration(duration) {
|
|
22
25
|
const minutes = durationToMinutes(duration);
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
let result = "";
|
|
26
|
-
if (stunden > 0)
|
|
27
|
-
result = `${result} ${stunden}h`;
|
|
28
|
-
if (minuten > 0)
|
|
29
|
-
result = `${result} ${minuten}m`;
|
|
26
|
+
const hours = Math.trunc(minutes / 60);
|
|
27
|
+
const remainingMinutes = minutes % 60;
|
|
30
28
|
if (minutes === 0)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
result = duration;
|
|
34
|
-
return result.trim();
|
|
29
|
+
return "0";
|
|
30
|
+
return `${hours > 0 ? `${hours}h` : ""}${hours > 0 && remainingMinutes > 0 ? " " : ""}${remainingMinutes > 0 ? `${remainingMinutes}m` : ""}`;
|
|
35
31
|
}
|
|
36
32
|
return { durationToMinutes, formattedDuration };
|
|
37
33
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sfxcode/formkit-primevue",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.9.
|
|
4
|
+
"version": "2.9.4",
|
|
5
5
|
"packageManager": "pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Tom",
|
|
@@ -91,36 +91,37 @@
|
|
|
91
91
|
"@formkit/i18n": "^1.6.9",
|
|
92
92
|
"@formkit/inputs": "^1.6.9",
|
|
93
93
|
"@formkit/vue": "^1.6.9",
|
|
94
|
-
"@intlify/core": "^11.1.
|
|
94
|
+
"@intlify/core": "^11.1.5",
|
|
95
95
|
"primeicons": "^7.0.0",
|
|
96
96
|
"primevue": "^4.3.4",
|
|
97
|
-
"uuid": "^11.1.0"
|
|
97
|
+
"uuid": "^11.1.0",
|
|
98
|
+
"vue-i18n": "^11.1.5"
|
|
98
99
|
},
|
|
99
100
|
"devDependencies": {
|
|
100
101
|
"@antfu/eslint-config": "^4.13.2",
|
|
101
102
|
"@formkit/core": "^1.6.9",
|
|
102
103
|
"@formkit/drag-and-drop": "^0.5.3",
|
|
103
104
|
"@primeuix/themes": "^1.1.1",
|
|
104
|
-
"@types/node": "^22.15.
|
|
105
|
+
"@types/node": "^22.15.24",
|
|
105
106
|
"@types/uuid": "^10.0.0",
|
|
106
107
|
"@unocss/preset-icons": "66.1.2",
|
|
107
108
|
"@unocss/preset-uno": "66.1.2",
|
|
108
109
|
"@vitejs/plugin-vue": "^5.2.4",
|
|
109
110
|
"@vitest/coverage-v8": "^3.1.4",
|
|
110
111
|
"@vitest/ui": "^3.1.4",
|
|
111
|
-
"@vue/compiler-sfc": "^3.5.
|
|
112
|
-
"@vue/server-renderer": "^3.5.
|
|
112
|
+
"@vue/compiler-sfc": "^3.5.16",
|
|
113
|
+
"@vue/server-renderer": "^3.5.16",
|
|
113
114
|
"@vue/test-utils": "^2.4.6",
|
|
114
115
|
"@vue/tsconfig": "^0.7.0",
|
|
115
|
-
"@vueuse/core": "^13.
|
|
116
|
+
"@vueuse/core": "^13.3.0",
|
|
116
117
|
"@vueuse/head": "^2.0.0",
|
|
117
118
|
"changelogen": "^0.6.1",
|
|
118
119
|
"chart.js": "^4.4.9",
|
|
119
120
|
"consola": "^3.4.2",
|
|
120
121
|
"cookie": "^1.0.2",
|
|
121
|
-
"esbuild": "^0.25.
|
|
122
|
+
"esbuild": "^0.25.5",
|
|
122
123
|
"eslint": "^9.27.0",
|
|
123
|
-
"happy-dom": "^17.
|
|
124
|
+
"happy-dom": "^17.5.6",
|
|
124
125
|
"json-editor-vue": "^0.18.1",
|
|
125
126
|
"mkdist": "^2.3.0",
|
|
126
127
|
"quill": "^2.0.3",
|
|
@@ -129,8 +130,8 @@
|
|
|
129
130
|
"typescript": "^5.8.3",
|
|
130
131
|
"unbuild": "^3.5.0",
|
|
131
132
|
"unocss": "66.1.2",
|
|
132
|
-
"unplugin-auto-import": "^19.
|
|
133
|
-
"unplugin-vue-components": "^28.
|
|
133
|
+
"unplugin-auto-import": "^19.3.0",
|
|
134
|
+
"unplugin-vue-components": "^28.7.0",
|
|
134
135
|
"vite": "^6.3.5",
|
|
135
136
|
"vite-plugin-dts": "^4.5.4",
|
|
136
137
|
"vite-plugin-eslint": "^1.8.1",
|
|
@@ -138,9 +139,8 @@
|
|
|
138
139
|
"vite-ssg": "^27.0.1",
|
|
139
140
|
"vitepress": "^1.6.3",
|
|
140
141
|
"vitest": "^3.1.4",
|
|
141
|
-
"vue": "^3.5.
|
|
142
|
+
"vue": "^3.5.16",
|
|
142
143
|
"vue-demi": "^0.14.10",
|
|
143
|
-
"vue-i18n": "^11.1.4",
|
|
144
144
|
"vue-router": "^4.5.1",
|
|
145
145
|
"vue-tsc": "^2.2.10"
|
|
146
146
|
}
|