@sfxcode/formkit-primevue 4.1.10 → 4.2.0
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/dist/components/FormKitDataEdit.vue +12 -1
- package/dist/components/FormKitDataView.vue +12 -1
- package/dist/components/PrimeListbox.d.vue.ts +4 -0
- package/dist/components/PrimeListbox.vue +55 -19
- package/dist/components/PrimeListbox.vue.d.ts +4 -0
- package/dist/definitions/repeater.js +14 -20
- package/dist/definitions/repeater.mjs +16 -19
- package/dist/sass/formkit-primevue.scss +24 -0
- package/dist/style.css +1 -1
- package/package.json +5 -4
|
@@ -3,7 +3,7 @@ import type { FormKitSchemaDefinition } from '@formkit/core'
|
|
|
3
3
|
import type { PropType } from 'vue'
|
|
4
4
|
import { reset } from '@formkit/core'
|
|
5
5
|
import { FormKit, FormKitMessages, FormKitSchema } from '@formkit/vue'
|
|
6
|
-
import { ref } from 'vue'
|
|
6
|
+
import { ref, watch } from 'vue'
|
|
7
7
|
import FormKitDataDebug from './FormKitDataDebug.vue'
|
|
8
8
|
|
|
9
9
|
const props = defineProps({
|
|
@@ -82,6 +82,17 @@ if (props.data) {
|
|
|
82
82
|
|
|
83
83
|
const formSchema = ref(props.schema)
|
|
84
84
|
|
|
85
|
+
// Watch for changes to props and update internal refs
|
|
86
|
+
watch(() => props.schema, (newSchema) => {
|
|
87
|
+
formSchema.value = newSchema
|
|
88
|
+
}, { deep: true })
|
|
89
|
+
|
|
90
|
+
watch(() => props.data, (newData) => {
|
|
91
|
+
if (newData && newData !== formData.value) {
|
|
92
|
+
formData.value = newData
|
|
93
|
+
}
|
|
94
|
+
}, { deep: true })
|
|
95
|
+
|
|
85
96
|
function handleSave() {
|
|
86
97
|
emit('dataSaved', formData.value)
|
|
87
98
|
}
|
|
@@ -3,7 +3,7 @@ import type { FormKitSchemaDefinition } from '@formkit/core'
|
|
|
3
3
|
import type { PropType } from 'vue'
|
|
4
4
|
|
|
5
5
|
import { FormKit, FormKitSchema } from '@formkit/vue'
|
|
6
|
-
import { ref } from 'vue'
|
|
6
|
+
import { ref, watch } from 'vue'
|
|
7
7
|
import FormKitDataDebug from './FormKitDataDebug.vue'
|
|
8
8
|
|
|
9
9
|
const props = defineProps({
|
|
@@ -33,6 +33,17 @@ const formSchema = ref(props.schema)
|
|
|
33
33
|
|
|
34
34
|
const formData = defineModel<any>()
|
|
35
35
|
|
|
36
|
+
// Watch for changes to props and update internal refs
|
|
37
|
+
watch(() => props.schema, (newSchema) => {
|
|
38
|
+
formSchema.value = newSchema
|
|
39
|
+
}, { deep: true })
|
|
40
|
+
|
|
41
|
+
watch(() => props.data, (newData) => {
|
|
42
|
+
if (newData && newData !== formData.value) {
|
|
43
|
+
formData.value = newData
|
|
44
|
+
}
|
|
45
|
+
}, { deep: true })
|
|
46
|
+
|
|
36
47
|
if (props.data) {
|
|
37
48
|
formData.value = props.data
|
|
38
49
|
}
|
|
@@ -31,6 +31,10 @@ export interface FormKitPrimeListboxProps {
|
|
|
31
31
|
transferRightHeaderText?: string;
|
|
32
32
|
transferHeaderClass?: string;
|
|
33
33
|
transferAll?: boolean;
|
|
34
|
+
transferButtonSeverity?: string;
|
|
35
|
+
transferContainerClass?: string;
|
|
36
|
+
transferListContainerClass?: string;
|
|
37
|
+
transferButtonClass?: string;
|
|
34
38
|
}
|
|
35
39
|
declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
36
40
|
context: {
|
|
@@ -35,6 +35,10 @@ export interface FormKitPrimeListboxProps {
|
|
|
35
35
|
transferRightHeaderText?: string
|
|
36
36
|
transferHeaderClass?: string
|
|
37
37
|
transferAll?: boolean
|
|
38
|
+
transferButtonSeverity?: string
|
|
39
|
+
transferContainerClass?: string
|
|
40
|
+
transferListContainerClass?: string
|
|
41
|
+
transferButtonClass?: string
|
|
38
42
|
}
|
|
39
43
|
|
|
40
44
|
const props = defineProps({
|
|
@@ -44,7 +48,24 @@ const props = defineProps({
|
|
|
44
48
|
},
|
|
45
49
|
})
|
|
46
50
|
|
|
47
|
-
const { validSlotNames, unstyled, isInvalid, handleInput, handleBlur, modelValue } = useFormKitInput(props.context)
|
|
51
|
+
const { validSlotNames, unstyled, isInvalid, handleInput, handleBlur, handleChange, modelValue } = useFormKitInput(props.context)
|
|
52
|
+
|
|
53
|
+
// Computed properties for transfer mode styling
|
|
54
|
+
const transferContainerClass = computed(() => {
|
|
55
|
+
return props.context.transferContainerClass || 'p-formkit-transfer'
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
const transferListContainerClass = computed(() => {
|
|
59
|
+
return props.context.transferListContainerClass || 'p-formkit-transfer-list-container'
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
const transferButtonClass = computed(() => {
|
|
63
|
+
return props.context.transferButtonClass || ''
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
const transferButtonSeverity = computed(() => {
|
|
67
|
+
return props.context.transferButtonSeverity || 'secondary'
|
|
68
|
+
})
|
|
48
69
|
|
|
49
70
|
// Transfer List functionality
|
|
50
71
|
const optionValueKey = computed(() => {
|
|
@@ -89,22 +110,30 @@ const sourceItems = computed(() => {
|
|
|
89
110
|
})
|
|
90
111
|
|
|
91
112
|
function transferSelected() {
|
|
92
|
-
|
|
113
|
+
if (sourceSelection.value.length === 0)
|
|
114
|
+
return
|
|
115
|
+
// Use splice-based approach for better performance
|
|
93
116
|
targetItems.value = [...targetItems.value, ...sourceSelection.value]
|
|
94
117
|
sourceSelection.value = []
|
|
95
118
|
}
|
|
96
119
|
|
|
97
120
|
function transferAll() {
|
|
121
|
+
if (sourceItems.value.length === 0)
|
|
122
|
+
return
|
|
98
123
|
targetItems.value = [...targetItems.value, ...sourceItems.value]
|
|
99
124
|
sourceSelection.value = []
|
|
100
125
|
}
|
|
101
126
|
|
|
102
127
|
function removeSelected() {
|
|
103
|
-
|
|
128
|
+
if (targetSelection.value.length === 0)
|
|
129
|
+
return
|
|
130
|
+
|
|
131
|
+
// Filter out selected items using splice-inspired logic
|
|
132
|
+
const valueKey = optionValueKey.value
|
|
104
133
|
targetItems.value = targetItems.value.filter((item: any) => {
|
|
105
|
-
const itemValue =
|
|
134
|
+
const itemValue = valueKey && typeof item === 'object' ? item[valueKey] : item
|
|
106
135
|
return !targetSelection.value.some((sel: any) => {
|
|
107
|
-
const selValue =
|
|
136
|
+
const selValue = valueKey && typeof sel === 'object' ? sel[valueKey] : sel
|
|
108
137
|
return selValue === itemValue
|
|
109
138
|
})
|
|
110
139
|
})
|
|
@@ -112,6 +141,8 @@ function removeSelected() {
|
|
|
112
141
|
}
|
|
113
142
|
|
|
114
143
|
function removeAll() {
|
|
144
|
+
if (targetItems.value.length === 0)
|
|
145
|
+
return
|
|
115
146
|
targetItems.value = []
|
|
116
147
|
targetSelection.value = []
|
|
117
148
|
}
|
|
@@ -119,6 +150,7 @@ function removeAll() {
|
|
|
119
150
|
watch(targetItems, (newVal) => {
|
|
120
151
|
modelValue.value = newVal
|
|
121
152
|
handleInput(newVal)
|
|
153
|
+
handleChange(newVal)
|
|
122
154
|
}, { deep: true })
|
|
123
155
|
|
|
124
156
|
// Watch for external changes to modelValue and update targetItems
|
|
@@ -168,7 +200,8 @@ watch(() => modelValue.value, (newVal) => {
|
|
|
168
200
|
:pt="context.pt"
|
|
169
201
|
:pt-options="context.ptOptions"
|
|
170
202
|
:unstyled="unstyled"
|
|
171
|
-
@
|
|
203
|
+
@update:model-value="handleInput"
|
|
204
|
+
@change="handleChange"
|
|
172
205
|
@blur="handleBlur"
|
|
173
206
|
>
|
|
174
207
|
<template v-for="slotName in validSlotNames" :key="slotName" #[slotName]="slotProps">
|
|
@@ -180,11 +213,10 @@ watch(() => modelValue.value, (newVal) => {
|
|
|
180
213
|
<!-- Transfer Mode -->
|
|
181
214
|
<div
|
|
182
215
|
v-if="context.displayMode === 'transfer'"
|
|
183
|
-
class="
|
|
184
|
-
style="display: flex; align-items: stretch; gap: 1rem; width: 100%;"
|
|
216
|
+
:class="transferContainerClass"
|
|
185
217
|
>
|
|
186
218
|
<!-- Source List -->
|
|
187
|
-
<div
|
|
219
|
+
<div :class="transferListContainerClass">
|
|
188
220
|
<span
|
|
189
221
|
v-if="context.transferLeftHeaderText"
|
|
190
222
|
:class="transferHeaderClass"
|
|
@@ -199,7 +231,7 @@ watch(() => modelValue.value, (newVal) => {
|
|
|
199
231
|
:class="context?.attrs?.class"
|
|
200
232
|
:invalid="isInvalid"
|
|
201
233
|
:tabindex="context?.attrs.tabindex"
|
|
202
|
-
:aria-label="context?.attrs.ariaLabel"
|
|
234
|
+
:aria-label="context?.attrs.ariaLabel || 'Source list'"
|
|
203
235
|
:aria-labelledby="context?.attrs.ariaLabelledby"
|
|
204
236
|
:options="sourceItems"
|
|
205
237
|
:option-label="context.optionLabel"
|
|
@@ -229,19 +261,21 @@ watch(() => modelValue.value, (newVal) => {
|
|
|
229
261
|
</div>
|
|
230
262
|
|
|
231
263
|
<!-- Transfer Buttons -->
|
|
232
|
-
<div
|
|
264
|
+
<div class="p-formkit-transfer-buttons">
|
|
233
265
|
<Button
|
|
234
266
|
icon="pi pi-angle-right"
|
|
235
|
-
severity="
|
|
267
|
+
:severity="transferButtonSeverity"
|
|
268
|
+
:class="transferButtonClass"
|
|
236
269
|
outlined
|
|
237
270
|
:disabled="sourceSelection.length === 0"
|
|
238
|
-
aria-label="Move selected to target"
|
|
271
|
+
:aria-label="context.transferAll ? 'Move selected to target' : 'Move to target'"
|
|
239
272
|
@click="transferSelected"
|
|
240
273
|
/>
|
|
241
274
|
<Button
|
|
242
275
|
v-if="context.transferAll"
|
|
243
276
|
icon="pi pi-angle-double-right"
|
|
244
|
-
severity="
|
|
277
|
+
:severity="transferButtonSeverity"
|
|
278
|
+
:class="transferButtonClass"
|
|
245
279
|
outlined
|
|
246
280
|
:disabled="sourceItems.length === 0"
|
|
247
281
|
aria-label="Move all to target"
|
|
@@ -249,16 +283,18 @@ watch(() => modelValue.value, (newVal) => {
|
|
|
249
283
|
/>
|
|
250
284
|
<Button
|
|
251
285
|
icon="pi pi-angle-left"
|
|
252
|
-
severity="
|
|
286
|
+
:severity="transferButtonSeverity"
|
|
287
|
+
:class="transferButtonClass"
|
|
253
288
|
outlined
|
|
254
289
|
:disabled="targetSelection.length === 0"
|
|
255
|
-
aria-label="Move selected to source"
|
|
290
|
+
:aria-label="context.transferAll ? 'Move selected to source' : 'Move to source'"
|
|
256
291
|
@click="removeSelected"
|
|
257
292
|
/>
|
|
258
293
|
<Button
|
|
259
294
|
v-if="context.transferAll"
|
|
260
295
|
icon="pi pi-angle-double-left"
|
|
261
|
-
severity="
|
|
296
|
+
:severity="transferButtonSeverity"
|
|
297
|
+
:class="transferButtonClass"
|
|
262
298
|
outlined
|
|
263
299
|
:disabled="targetItems.length === 0"
|
|
264
300
|
aria-label="Move all to source"
|
|
@@ -267,7 +303,7 @@ watch(() => modelValue.value, (newVal) => {
|
|
|
267
303
|
</div>
|
|
268
304
|
|
|
269
305
|
<!-- Target List -->
|
|
270
|
-
<div
|
|
306
|
+
<div :class="transferListContainerClass">
|
|
271
307
|
<span
|
|
272
308
|
v-if="context.transferRightHeaderText"
|
|
273
309
|
:class="transferHeaderClass"
|
|
@@ -282,7 +318,7 @@ watch(() => modelValue.value, (newVal) => {
|
|
|
282
318
|
:class="context?.attrs?.class"
|
|
283
319
|
:invalid="isInvalid"
|
|
284
320
|
:tabindex="context?.attrs.tabindex"
|
|
285
|
-
:aria-label="context?.attrs.ariaLabel"
|
|
321
|
+
:aria-label="context?.attrs.ariaLabel || 'Target list'"
|
|
286
322
|
:aria-labelledby="context?.attrs.ariaLabelledby"
|
|
287
323
|
:options="targetItems"
|
|
288
324
|
:option-label="context.optionLabel"
|
|
@@ -31,6 +31,10 @@ export interface FormKitPrimeListboxProps {
|
|
|
31
31
|
transferRightHeaderText?: string;
|
|
32
32
|
transferHeaderClass?: string;
|
|
33
33
|
transferAll?: boolean;
|
|
34
|
+
transferButtonSeverity?: string;
|
|
35
|
+
transferContainerClass?: string;
|
|
36
|
+
transferListContainerClass?: string;
|
|
37
|
+
transferButtonClass?: string;
|
|
34
38
|
}
|
|
35
39
|
declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
36
40
|
context: {
|
|
@@ -24,7 +24,7 @@ function addButtonGroup(buttonGroupClass = "", buttonGroupItemClass = "", button
|
|
|
24
24
|
class: buttonGroupItemClass
|
|
25
25
|
}, render2);
|
|
26
26
|
};
|
|
27
|
-
return addElement("div", [addActionButtonComponent("$moveNodeUp($node.parent, $index)", "pi pi-arrow-up", "secondary", "$renderMoveButtons", "$index === 0"), addActionButtonComponent("$removeNode($node.parent, $index)", "pi pi-trash", "danger", "$displayDeleteButton", "$
|
|
27
|
+
return addElement("div", [addActionButtonComponent("$moveNodeUp($node.parent, $index)", "pi pi-arrow-up", "secondary", "$renderMoveButtons", "$index === 0"), addActionButtonComponent("$removeNode($node.parent, $index)", "pi pi-trash", "danger", "$displayDeleteButton", "$node.parent.value.length === $minItems"), addActionButtonComponent("$cloneNode($node.parent, $index)", "pi pi-clone", "", "$displayCloneButton", "$node.parent.value.length > $maxItems -1"), addActionButtonComponent("$addNode($node.parent, $index)", "pi pi-plus", "", "$displayAddButton", "$node.parent.value.length > $maxItems -1"), addActionButtonComponent("$moveNodeDown($node.parent, $index)", "pi pi-arrow-down", "secondary", "$renderMoveButtons", "$index === $node.parent.value.length -1")], {
|
|
28
28
|
class: buttonGroupClass
|
|
29
29
|
}, render);
|
|
30
30
|
}
|
|
@@ -33,7 +33,8 @@ function addInsertButton(label = "Add Item", icon = "i-lucide-plus", styleClass
|
|
|
33
33
|
onClick: "$insertNode($node)",
|
|
34
34
|
label,
|
|
35
35
|
icon,
|
|
36
|
-
size: buttonSize
|
|
36
|
+
size: buttonSize,
|
|
37
|
+
disabled: "$node.value.length > $maxItems -1"
|
|
37
38
|
})], {
|
|
38
39
|
class: styleClass
|
|
39
40
|
}, render);
|
|
@@ -45,16 +46,13 @@ const primeRepeaterDefinition = exports.primeRepeaterDefinition = (0, _vue.creat
|
|
|
45
46
|
})], true, {})], true, "true")], {
|
|
46
47
|
class: "$internalListClass"
|
|
47
48
|
}, true), {
|
|
48
|
-
props: ["insertButtonLabel", "insertButtonClass", "insertButtonSize", "alwaysDisplayInsertButton", "newItem", "listClass", "listItemClass", "hideButtonGroup", "hideMoveButtons", "buttonGroupClass", "buttonGroupItemClass", "buttonSize", "displayCloneButton", "displayAddButton", "displayDeleteButton"],
|
|
49
|
+
props: ["insertButtonLabel", "insertButtonClass", "insertButtonSize", "alwaysDisplayInsertButton", "newItem", "listClass", "listItemClass", "hideButtonGroup", "hideMoveButtons", "buttonGroupClass", "buttonGroupItemClass", "buttonSize", "displayCloneButton", "displayAddButton", "displayDeleteButton", "minItems", "maxItems"],
|
|
49
50
|
features: [addRepeaterHandler]
|
|
50
51
|
});
|
|
51
52
|
function addRepeaterHandler(node) {
|
|
52
53
|
const swapElements = (array, index1, index2) => {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
newArray[index1] = newArray[index2];
|
|
56
|
-
newArray[index2] = temp;
|
|
57
|
-
return newArray;
|
|
54
|
+
array.splice(index2, 0, array.splice(index1, 1)[0]);
|
|
55
|
+
return array;
|
|
58
56
|
};
|
|
59
57
|
node.on("created", () => {
|
|
60
58
|
if (node.context) {
|
|
@@ -81,31 +79,27 @@ function addRepeaterHandler(node) {
|
|
|
81
79
|
};
|
|
82
80
|
node.context.addNode = (parentNode, index) => () => {
|
|
83
81
|
if (parentNode && Array.isArray(parentNode._value)) {
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
parentNode.input([...newArray], false);
|
|
82
|
+
const array = parentNode.value;
|
|
83
|
+
array.splice(index + 1, 0, newItem);
|
|
84
|
+
parentNode.input(array, false);
|
|
88
85
|
}
|
|
89
86
|
};
|
|
90
87
|
node.context.cloneNode = (parentNode, index) => () => {
|
|
91
88
|
if (parentNode && Array.isArray(parentNode._value)) {
|
|
92
89
|
const item = parentNode.value[index];
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
parentNode.input([...newArray], false);
|
|
90
|
+
const array = parentNode.value;
|
|
91
|
+
array.splice(index + 1, 0, item);
|
|
92
|
+
parentNode.input(array, false);
|
|
97
93
|
}
|
|
98
94
|
};
|
|
99
95
|
node.context.moveNodeUp = (parentNode, index) => () => {
|
|
100
96
|
if (parentNode && Array.isArray(parentNode._value)) {
|
|
101
|
-
|
|
102
|
-
if (index > 0) parentNode.input(swapElements(array, index - 1, index), false);
|
|
97
|
+
if (index > 0) parentNode.input(swapElements(parentNode.value, index - 1, index), false);
|
|
103
98
|
}
|
|
104
99
|
};
|
|
105
100
|
node.context.moveNodeDown = (parentNode, index) => () => {
|
|
106
101
|
if (parentNode && Array.isArray(parentNode._value)) {
|
|
107
|
-
|
|
108
|
-
if (index < array.length - 1) parentNode.input(swapElements(array, index, index + 1), false);
|
|
102
|
+
if (index < parentNode.value.length - 1) parentNode.input(swapElements(parentNode.value, index, index + 1), false);
|
|
109
103
|
}
|
|
110
104
|
};
|
|
111
105
|
}
|
|
@@ -7,15 +7,15 @@ function addButtonGroup(buttonGroupClass = "", buttonGroupItemClass = "", button
|
|
|
7
7
|
};
|
|
8
8
|
return addElement("div", [
|
|
9
9
|
addActionButtonComponent("$moveNodeUp($node.parent, $index)", "pi pi-arrow-up", "secondary", "$renderMoveButtons", "$index === 0"),
|
|
10
|
-
addActionButtonComponent("$removeNode($node.parent, $index)", "pi pi-trash", "danger", "$displayDeleteButton", "$
|
|
11
|
-
addActionButtonComponent("$cloneNode($node.parent, $index)", "pi pi-clone", "", "$displayCloneButton", "$
|
|
12
|
-
addActionButtonComponent("$addNode($node.parent, $index)", "pi pi-plus", "", "$displayAddButton", "$
|
|
10
|
+
addActionButtonComponent("$removeNode($node.parent, $index)", "pi pi-trash", "danger", "$displayDeleteButton", "$node.parent.value.length === $minItems"),
|
|
11
|
+
addActionButtonComponent("$cloneNode($node.parent, $index)", "pi pi-clone", "", "$displayCloneButton", "$node.parent.value.length > $maxItems -1"),
|
|
12
|
+
addActionButtonComponent("$addNode($node.parent, $index)", "pi pi-plus", "", "$displayAddButton", "$node.parent.value.length > $maxItems -1"),
|
|
13
13
|
addActionButtonComponent("$moveNodeDown($node.parent, $index)", "pi pi-arrow-down", "secondary", "$renderMoveButtons", "$index === $node.parent.value.length -1")
|
|
14
14
|
], { class: buttonGroupClass }, render);
|
|
15
15
|
}
|
|
16
16
|
function addInsertButton(label = "Add Item", icon = "i-lucide-plus", styleClass = "", buttonSize, render = "true") {
|
|
17
17
|
return addElement("div", [
|
|
18
|
-
addComponent("Button", { onClick: "$insertNode($node)", label, icon, size: buttonSize })
|
|
18
|
+
addComponent("Button", { onClick: "$insertNode($node)", label, icon, size: buttonSize, disabled: "$node.value.length > $maxItems -1" })
|
|
19
19
|
], { class: styleClass }, render);
|
|
20
20
|
}
|
|
21
21
|
export const primeRepeaterDefinition = createInput(
|
|
@@ -28,17 +28,14 @@ export const primeRepeaterDefinition = createInput(
|
|
|
28
28
|
], true, "true")
|
|
29
29
|
], { class: "$internalListClass" }, true),
|
|
30
30
|
{
|
|
31
|
-
props: ["insertButtonLabel", "insertButtonClass", "insertButtonSize", "alwaysDisplayInsertButton", "newItem", "listClass", "listItemClass", "hideButtonGroup", "hideMoveButtons", "buttonGroupClass", "buttonGroupItemClass", "buttonSize", "displayCloneButton", "displayAddButton", "displayDeleteButton"],
|
|
31
|
+
props: ["insertButtonLabel", "insertButtonClass", "insertButtonSize", "alwaysDisplayInsertButton", "newItem", "listClass", "listItemClass", "hideButtonGroup", "hideMoveButtons", "buttonGroupClass", "buttonGroupItemClass", "buttonSize", "displayCloneButton", "displayAddButton", "displayDeleteButton", "minItems", "maxItems"],
|
|
32
32
|
features: [addRepeaterHandler]
|
|
33
33
|
}
|
|
34
34
|
);
|
|
35
35
|
function addRepeaterHandler(node) {
|
|
36
36
|
const swapElements = (array, index1, index2) => {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
newArray[index1] = newArray[index2];
|
|
40
|
-
newArray[index2] = temp;
|
|
41
|
-
return newArray;
|
|
37
|
+
array.splice(index2, 0, array.splice(index1, 1)[0]);
|
|
38
|
+
return array;
|
|
42
39
|
};
|
|
43
40
|
node.on("created", () => {
|
|
44
41
|
if (node.context) {
|
|
@@ -63,29 +60,29 @@ function addRepeaterHandler(node) {
|
|
|
63
60
|
};
|
|
64
61
|
node.context.addNode = (parentNode, index) => () => {
|
|
65
62
|
if (parentNode && Array.isArray(parentNode._value)) {
|
|
66
|
-
const
|
|
67
|
-
|
|
63
|
+
const array = parentNode.value;
|
|
64
|
+
array.splice(index + 1, 0, newItem);
|
|
65
|
+
parentNode.input(array, false);
|
|
68
66
|
}
|
|
69
67
|
};
|
|
70
68
|
node.context.cloneNode = (parentNode, index) => () => {
|
|
71
69
|
if (parentNode && Array.isArray(parentNode._value)) {
|
|
72
70
|
const item = parentNode.value[index];
|
|
73
|
-
const
|
|
74
|
-
|
|
71
|
+
const array = parentNode.value;
|
|
72
|
+
array.splice(index + 1, 0, item);
|
|
73
|
+
parentNode.input(array, false);
|
|
75
74
|
}
|
|
76
75
|
};
|
|
77
76
|
node.context.moveNodeUp = (parentNode, index) => () => {
|
|
78
77
|
if (parentNode && Array.isArray(parentNode._value)) {
|
|
79
|
-
const array = [...parentNode.value];
|
|
80
78
|
if (index > 0)
|
|
81
|
-
parentNode.input(swapElements(
|
|
79
|
+
parentNode.input(swapElements(parentNode.value, index - 1, index), false);
|
|
82
80
|
}
|
|
83
81
|
};
|
|
84
82
|
node.context.moveNodeDown = (parentNode, index) => () => {
|
|
85
83
|
if (parentNode && Array.isArray(parentNode._value)) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
parentNode.input(swapElements(array, index, index + 1), false);
|
|
84
|
+
if (index < parentNode.value.length - 1)
|
|
85
|
+
parentNode.input(swapElements(parentNode.value, index, index + 1), false);
|
|
89
86
|
}
|
|
90
87
|
};
|
|
91
88
|
}
|
|
@@ -287,6 +287,30 @@ $grid-breakpoints: (
|
|
|
287
287
|
}
|
|
288
288
|
}
|
|
289
289
|
|
|
290
|
+
// Listbox Transfer
|
|
291
|
+
.p-formkit-transfer {
|
|
292
|
+
display: flex;
|
|
293
|
+
align-items: stretch;
|
|
294
|
+
gap: 1rem;
|
|
295
|
+
width: 100%;
|
|
296
|
+
min-width: 600px;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
.p-formkit-transfer-list-container {
|
|
300
|
+
display: flex;
|
|
301
|
+
flex-direction: column;
|
|
302
|
+
flex: 1;
|
|
303
|
+
gap: 0.5rem;
|
|
304
|
+
min-width: 0;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
.p-formkit-transfer-buttons {
|
|
308
|
+
display: flex;
|
|
309
|
+
flex-direction: column;
|
|
310
|
+
align-items: center;
|
|
311
|
+
justify-content: center;
|
|
312
|
+
gap: 0.5rem;
|
|
313
|
+
}
|
|
290
314
|
|
|
291
315
|
|
|
292
316
|
// Debug
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--formkit-error-color: #ef9a9a}.formkit-form .formkit-messages{margin:.125rem 0;padding-top:.5rem;padding-left:.5rem}.formkit-form .formkit-message{list-style:none;padding:0;margin:0;color:var(--formkit-error-color);font-size:.8rem}.formkit-form .formkit-outer{padding-bottom:.8rem}.formkit-form .formkit-outer .formkit-messages{margin:.125rem 0;padding-top:.25rem;padding-left:0}.formkit-form .formkit-outer .formkit-inner .p-formkit .p-formkit-icon{box-sizing:border-box;width:100%}.formkit-form .formkit-outer .formkit-inner .p-formkit .p-inputtext,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-textarea,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-password,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-multiselect,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-select,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-editor{box-sizing:border-box;width:100%}.formkit-form .formkit-outer .formkit-inner .p-formkit .p-inputtext.p-colorpicker-preview,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-textarea.p-colorpicker-preview,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-password.p-colorpicker-preview,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-multiselect.p-colorpicker-preview,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-select.p-colorpicker-preview,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-editor.p-colorpicker-preview{width:2rem}.formkit-form .formkit-outer .formkit-help{margin:.25rem 0 0 0;font-size:.8rem;color:var(--text-color-secondary)}.formkit-form .formkit-label{display:block;margin:0;padding-bottom:.5rem;font-weight:bold;font-size:.8rem}.formkit-form .p-formkit>*{margin-right:.5rem}.formkit-form .p-formkit>*:last-child,.formkit-form .p-formkit>*:only-child{margin-right:0}.formkit-form .p-formkit-options{display:flex;flex-wrap:wrap;gap:.5rem}.formkit-form .p-formkit-options .p-formkit-option{display:flex;align-items:center}.formkit-form .p-formkit-options .p-formkit-option label{margin-left:.5rem}.formkit-form .formkit-fieldset{margin:0;padding:0;border-radius:0;border:0}.formkit-form .formkit-fieldset:focus-within{border:0}.formkit-form .formkit-fieldset>.formkit-help{margin-top:0;margin-bottom:0}.formkit-form .formkit-legend{display:block;margin:0;padding:0}.formkit-form .formkit-actions{padding-top:.5rem;display:flex}.formkit-form .formkit-actions button{margin-right:.5rem}.formkit-form .p-action-buttons{margin-top:.25rem}.formkit-form .p-action-buttons .p-button{margin-right:.5rem}.formkit-form .p-action-buttons span .p-space{margin-right:3rem}.formkit-form .p-chip-item{align-items:center;background:var(--p-surface-500);color:var(--p-surface-0);border-radius:1rem;padding:.2rem .5rem}.p-formkit-data-view .formkit-outer{padding-bottom:.5rem}.p-formkit-data-view.form-horizontal{padding-bottom:.8rem}.p-formkit-data-view .formkit-help{padding-top:.25rem;margin:0}.p-formkit-data-view ul,.p-formkit-data-view ol{padding-inline-start:1rem;margin-block-start:0;margin-block-end:0}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper{display:flex;flex-wrap:wrap}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper .formkit-inner{width:auto !important}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper label{width:auto;order:2;padding:.125rem 0}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper label:after{content:""}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper label+.formkit-inner{margin-left:0 !important;order:1;flex-basis:2rem;flex-grow:0;flex-shrink:0;overflow:hidden}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper label+.formkit-inner:has(label){flex-grow:1;flex-basis:100%}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper label:first-child:nth-last-child(3),.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper label:first-child:nth-last-child(3)~label{width:auto}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper label:first-child:nth-last-child(3){order:1}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper label:first-child:nth-last-child(3)+div.p-checkbox{order:2;width:auto}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper label:first-child:nth-last-child(3)~label{order:3}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper .formkit-inner:first-child{margin-left:0 !important}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper .formkit-inner:first-child .p-formkit{display:flex}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper .p-checkbox:not(:only-child){width:2rem;overflow:hidden}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-help{width:auto !important}.p-formkit-data-debug pre,.p-formkit-data-debug span{font-size:.75rem;line-height:1rem}@media(min-width: 1024px){.formkit-form{display:flex;flex-wrap:wrap;margin-left:-0.5rem;margin-right:-0.5rem}.formkit-form>*{flex-shrink:0;width:100%;max-width:100%;padding-left:.5rem;padding-right:.5rem}.col-1{width:8.3333333333%}.col-2{width:16.6666666667%}.col-3{width:25%}.col-4{width:33.3333333333%}.col-5{width:41.6666666667%}.col-6{width:50%}.col-7{width:58.3333333333%}.col-8{width:66.6666666667%}.col-9{width:75%}.col-10{width:83.3333333333%}.col-11{width:91.6666666667%}.col-12{width:100%}}@media(min-width: 768px){.formkit-form.form-horizontal .formkit-wrapper{display:flex}.formkit-form.form-horizontal .formkit-wrapper label{display:inline-block;padding:0 .25rem 0 0;font-size:inherit}.formkit-form.form-horizontal .formkit-wrapper label:after{content:":"}}@media(min-width: 768px)and (min-width: 768px){.formkit-form.form-horizontal.form-horizontal-checkbox-indent .formkit-outer[data-type=primeCheckbox]{padding-left:33.3333333333%}}@media(min-width: 768px){.p-formkit-data-view .formkit-form.form-horizontal label{white-space:nowrap}.p-formkit-data-edit .formkit-form.form-horizontal .formkit-outer{width:100%}.p-formkit-data-edit .formkit-form.form-horizontal .formkit-outer label{width:33.3333333333%;padding-top:.25rem;line-height:normal}.p-formkit-data-edit .formkit-form.form-horizontal .formkit-outer .formkit-inner{width:66.6666666667%}.p-formkit-data-edit .formkit-form.form-horizontal div[data-type=primeCheckbox] .formkit-inner{margin-left:auto}.p-formkit-data-edit .formkit-form.form-horizontal div[data-type=primeCheckbox] .formkit-inner .p-formkit{display:flex}.p-formkit-data-edit .formkit-form.form-horizontal div[data-type=primeCheckbox] .formkit-inner label{width:auto;padding:0}.p-formkit-data-edit .formkit-form.form-horizontal .formkit-help,.p-formkit-data-edit .formkit-form.form-horizontal .formkit-messages{width:66.6666666667%;margin-left:auto}}
|
|
1
|
+
:root{--formkit-error-color: #ef9a9a}.formkit-form .formkit-messages{margin:.125rem 0;padding-top:.5rem;padding-left:.5rem}.formkit-form .formkit-message{list-style:none;padding:0;margin:0;color:var(--formkit-error-color);font-size:.8rem}.formkit-form .formkit-outer{padding-bottom:.8rem}.formkit-form .formkit-outer .formkit-messages{margin:.125rem 0;padding-top:.25rem;padding-left:0}.formkit-form .formkit-outer .formkit-inner .p-formkit .p-formkit-icon{box-sizing:border-box;width:100%}.formkit-form .formkit-outer .formkit-inner .p-formkit .p-inputtext,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-textarea,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-password,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-multiselect,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-select,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-editor{box-sizing:border-box;width:100%}.formkit-form .formkit-outer .formkit-inner .p-formkit .p-inputtext.p-colorpicker-preview,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-textarea.p-colorpicker-preview,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-password.p-colorpicker-preview,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-multiselect.p-colorpicker-preview,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-select.p-colorpicker-preview,.formkit-form .formkit-outer .formkit-inner .p-formkit .p-editor.p-colorpicker-preview{width:2rem}.formkit-form .formkit-outer .formkit-help{margin:.25rem 0 0 0;font-size:.8rem;color:var(--text-color-secondary)}.formkit-form .formkit-label{display:block;margin:0;padding-bottom:.5rem;font-weight:bold;font-size:.8rem}.formkit-form .p-formkit>*{margin-right:.5rem}.formkit-form .p-formkit>*:last-child,.formkit-form .p-formkit>*:only-child{margin-right:0}.formkit-form .p-formkit-options{display:flex;flex-wrap:wrap;gap:.5rem}.formkit-form .p-formkit-options .p-formkit-option{display:flex;align-items:center}.formkit-form .p-formkit-options .p-formkit-option label{margin-left:.5rem}.formkit-form .formkit-fieldset{margin:0;padding:0;border-radius:0;border:0}.formkit-form .formkit-fieldset:focus-within{border:0}.formkit-form .formkit-fieldset>.formkit-help{margin-top:0;margin-bottom:0}.formkit-form .formkit-legend{display:block;margin:0;padding:0}.formkit-form .formkit-actions{padding-top:.5rem;display:flex}.formkit-form .formkit-actions button{margin-right:.5rem}.formkit-form .p-action-buttons{margin-top:.25rem}.formkit-form .p-action-buttons .p-button{margin-right:.5rem}.formkit-form .p-action-buttons span .p-space{margin-right:3rem}.formkit-form .p-chip-item{align-items:center;background:var(--p-surface-500);color:var(--p-surface-0);border-radius:1rem;padding:.2rem .5rem}.p-formkit-data-view .formkit-outer{padding-bottom:.5rem}.p-formkit-data-view.form-horizontal{padding-bottom:.8rem}.p-formkit-data-view .formkit-help{padding-top:.25rem;margin:0}.p-formkit-data-view ul,.p-formkit-data-view ol{padding-inline-start:1rem;margin-block-start:0;margin-block-end:0}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper{display:flex;flex-wrap:wrap}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper .formkit-inner{width:auto !important}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper label{width:auto;order:2;padding:.125rem 0}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper label:after{content:""}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper label+.formkit-inner{margin-left:0 !important;order:1;flex-basis:2rem;flex-grow:0;flex-shrink:0;overflow:hidden}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper label+.formkit-inner:has(label){flex-grow:1;flex-basis:100%}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper label:first-child:nth-last-child(3),.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper label:first-child:nth-last-child(3)~label{width:auto}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper label:first-child:nth-last-child(3){order:1}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper label:first-child:nth-last-child(3)+div.p-checkbox{order:2;width:auto}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper label:first-child:nth-last-child(3)~label{order:3}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper .formkit-inner:first-child{margin-left:0 !important}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper .formkit-inner:first-child .p-formkit{display:flex}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-wrapper .p-checkbox:not(:only-child){width:2rem;overflow:hidden}.p-formkit-data-edit .formkit-outer[data-type=primeCheckbox] .formkit-help{width:auto !important}.p-formkit-transfer{display:flex;align-items:stretch;gap:1rem;width:100%;min-width:600px}.p-formkit-transfer-list-container{display:flex;flex-direction:column;flex:1;gap:.5rem;min-width:0}.p-formkit-transfer-buttons{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem}.p-formkit-data-debug pre,.p-formkit-data-debug span{font-size:.75rem;line-height:1rem}@media(min-width: 1024px){.formkit-form{display:flex;flex-wrap:wrap;margin-left:-0.5rem;margin-right:-0.5rem}.formkit-form>*{flex-shrink:0;width:100%;max-width:100%;padding-left:.5rem;padding-right:.5rem}.col-1{width:8.3333333333%}.col-2{width:16.6666666667%}.col-3{width:25%}.col-4{width:33.3333333333%}.col-5{width:41.6666666667%}.col-6{width:50%}.col-7{width:58.3333333333%}.col-8{width:66.6666666667%}.col-9{width:75%}.col-10{width:83.3333333333%}.col-11{width:91.6666666667%}.col-12{width:100%}}@media(min-width: 768px){.formkit-form.form-horizontal .formkit-wrapper{display:flex}.formkit-form.form-horizontal .formkit-wrapper label{display:inline-block;padding:0 .25rem 0 0;font-size:inherit}.formkit-form.form-horizontal .formkit-wrapper label:after{content:":"}}@media(min-width: 768px)and (min-width: 768px){.formkit-form.form-horizontal.form-horizontal-checkbox-indent .formkit-outer[data-type=primeCheckbox]{padding-left:33.3333333333%}}@media(min-width: 768px){.p-formkit-data-view .formkit-form.form-horizontal label{white-space:nowrap}.p-formkit-data-edit .formkit-form.form-horizontal .formkit-outer{width:100%}.p-formkit-data-edit .formkit-form.form-horizontal .formkit-outer label{width:33.3333333333%;padding-top:.25rem;line-height:normal}.p-formkit-data-edit .formkit-form.form-horizontal .formkit-outer .formkit-inner{width:66.6666666667%}.p-formkit-data-edit .formkit-form.form-horizontal div[data-type=primeCheckbox] .formkit-inner{margin-left:auto}.p-formkit-data-edit .formkit-form.form-horizontal div[data-type=primeCheckbox] .formkit-inner .p-formkit{display:flex}.p-formkit-data-edit .formkit-form.form-horizontal div[data-type=primeCheckbox] .formkit-inner label{width:auto;padding:0}.p-formkit-data-edit .formkit-form.form-horizontal .formkit-help,.p-formkit-data-edit .formkit-form.form-horizontal .formkit-messages{width:66.6666666667%;margin-left:auto}}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sfxcode/formkit-primevue",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.2.0",
|
|
5
5
|
"packageManager": "pnpm@11.0.9+sha512.34ce82e6780233cf9cad8685029a8f81d2e06196c5a9bad98879f7424940c6817c4e4524fb7d38b8553ceed48b9758b8ebaf1abd3600c232c4c8cf7366086f38",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Tom",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"dev": "vite serve dev",
|
|
80
80
|
"dev:build": "vite build dev",
|
|
81
81
|
"dev:preview": "vite preview dev",
|
|
82
|
-
"release": "npm run lint && npm run build && changelogen --
|
|
82
|
+
"release": "npm run lint && npm run build && changelogen --minor --release && npm publish --access public && git push --follow-tags",
|
|
83
83
|
"lint": "eslint .",
|
|
84
84
|
"lint:fix": "eslint . --fix",
|
|
85
85
|
"prepublishOnly": "pnpm build",
|
|
@@ -95,6 +95,7 @@
|
|
|
95
95
|
},
|
|
96
96
|
"dependencies": {
|
|
97
97
|
"@formkit/addons": "^2.0.0",
|
|
98
|
+
"@formkit/auto-animate": "^0.9.0",
|
|
98
99
|
"@formkit/core": "^2.0.0",
|
|
99
100
|
"@formkit/i18n": "^2.0.0",
|
|
100
101
|
"@formkit/inputs": "^2.0.0",
|
|
@@ -116,7 +117,7 @@
|
|
|
116
117
|
"@vitest/ui": "^4.1.8",
|
|
117
118
|
"@vue/compiler-sfc": "^3.5.35",
|
|
118
119
|
"@vue/server-renderer": "^3.5.35",
|
|
119
|
-
"@vue/test-utils": "^2.4.
|
|
120
|
+
"@vue/test-utils": "^2.4.11",
|
|
120
121
|
"@vue/tsconfig": "^0.9.1",
|
|
121
122
|
"@vueuse/core": "^14.3.0",
|
|
122
123
|
"@vueuse/head": "^2.0.0",
|
|
@@ -126,7 +127,7 @@
|
|
|
126
127
|
"cookie": "^1.1.1",
|
|
127
128
|
"esbuild": "^0.28.0",
|
|
128
129
|
"eslint": "^10.4.1",
|
|
129
|
-
"happy-dom": "^20.
|
|
130
|
+
"happy-dom": "^20.10.1",
|
|
130
131
|
"json-editor-vue": "^0.18.1",
|
|
131
132
|
"mkdist": "^2.4.1",
|
|
132
133
|
"sass": "^1.100.0",
|