@humandialog/forms.svelte 0.5.2 → 0.5.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.
|
@@ -35,8 +35,6 @@ const END_OF_LIST = {};
|
|
|
35
35
|
let rows = [];
|
|
36
36
|
let activate_after_dom_update = null;
|
|
37
37
|
let inserter;
|
|
38
|
-
let item_key = "";
|
|
39
|
-
let item_type = "";
|
|
40
38
|
clearActiveItem("props");
|
|
41
39
|
let last_tick = -1;
|
|
42
40
|
$:
|
|
@@ -51,29 +49,26 @@ function setup(...args) {
|
|
|
51
49
|
items = item[a];
|
|
52
50
|
if (items == void 0)
|
|
53
51
|
items = [];
|
|
54
|
-
if (items.length > 0) {
|
|
55
|
-
let first_element = items[0];
|
|
56
|
-
let keys = Object.keys(first_element);
|
|
57
|
-
if (key)
|
|
58
|
-
item_key = key;
|
|
59
|
-
else if (keys.includes("Id"))
|
|
60
|
-
item_key = "Id";
|
|
61
|
-
else if (keys.includes("$ref"))
|
|
62
|
-
item_key = "$ref";
|
|
63
|
-
else if (keys.length > 0)
|
|
64
|
-
item_key = keys[0];
|
|
65
|
-
else
|
|
66
|
-
item_key = "";
|
|
67
|
-
}
|
|
68
52
|
if (!typename)
|
|
69
53
|
typename = $contextTypesStore[ctx];
|
|
70
54
|
}
|
|
55
|
+
function getItemKey(item2) {
|
|
56
|
+
if (key)
|
|
57
|
+
return item2[key];
|
|
58
|
+
else if (item2.Id)
|
|
59
|
+
return item2.Id;
|
|
60
|
+
else if (item2.$ref)
|
|
61
|
+
return item2.$ref;
|
|
62
|
+
else
|
|
63
|
+
return 0;
|
|
64
|
+
}
|
|
71
65
|
afterUpdate(() => {
|
|
72
66
|
if (activate_after_dom_update) {
|
|
73
67
|
let row_to_activate_idx = items.findIndex((e) => e == activate_after_dom_update);
|
|
74
68
|
activate_after_dom_update = null;
|
|
75
69
|
if (row_to_activate_idx >= 0) {
|
|
76
|
-
rows[row_to_activate_idx]
|
|
70
|
+
let row = rows[row_to_activate_idx];
|
|
71
|
+
row?.activate();
|
|
77
72
|
}
|
|
78
73
|
}
|
|
79
74
|
});
|
|
@@ -94,14 +89,14 @@ export function reload(data, selectElement = KEEP_SELECTION) {
|
|
|
94
89
|
case SELECT_PREVIOUS:
|
|
95
90
|
if (currentSelectedItem) {
|
|
96
91
|
const selectedItemIdx = items?.findIndex((e) => e == currentSelectedItem);
|
|
97
|
-
if (selectedItemIdx && selectedItemIdx > 0)
|
|
92
|
+
if (selectedItemIdx != void 0 && selectedItemIdx > 0)
|
|
98
93
|
selectElementId = items[selectedItemIdx - 1].Id ?? 0;
|
|
99
94
|
}
|
|
100
95
|
break;
|
|
101
96
|
case SELECT_NEXT:
|
|
102
97
|
if (currentSelectedItem) {
|
|
103
98
|
const selectedItemIdx = items?.findIndex((e) => e == currentSelectedItem);
|
|
104
|
-
if (selectedItemIdx && selectedItemIdx < items.length - 1)
|
|
99
|
+
if (selectedItemIdx != void 0 && selectedItemIdx >= 0 && selectedItemIdx < items.length - 1)
|
|
105
100
|
selectElementId = items[selectedItemIdx + 1].Id ?? 0;
|
|
106
101
|
}
|
|
107
102
|
break;
|
|
@@ -110,7 +105,7 @@ export function reload(data, selectElement = KEEP_SELECTION) {
|
|
|
110
105
|
selectElementId = currentSelectedItem.Id ?? 0;
|
|
111
106
|
if (currentSelectedItem) {
|
|
112
107
|
const selectedItemIdx = items?.findIndex((e) => e == currentSelectedItem);
|
|
113
|
-
if (selectedItemIdx && selectedItemIdx < items.length - 1)
|
|
108
|
+
if (selectedItemIdx != void 0 && selectedItemIdx >= 0 && selectedItemIdx < items.length - 1)
|
|
114
109
|
altSelectElementId = items[selectedItemIdx + 1].Id ?? 0;
|
|
115
110
|
}
|
|
116
111
|
}
|
|
@@ -207,7 +202,6 @@ export function edit(element, property_name) {
|
|
|
207
202
|
rows[editing_idx].editProperty(property_name);
|
|
208
203
|
}
|
|
209
204
|
function reorderElements(items2, from = null) {
|
|
210
|
-
console.log(from);
|
|
211
205
|
let fromIdx;
|
|
212
206
|
let fromOrder;
|
|
213
207
|
if (from) {
|
|
@@ -217,11 +211,9 @@ function reorderElements(items2, from = null) {
|
|
|
217
211
|
fromOrder = MIN_ORDER;
|
|
218
212
|
fromIdx = 0;
|
|
219
213
|
}
|
|
220
|
-
console.log("reorder: ", fromOrder, fromIdx, items2);
|
|
221
214
|
let order = fromOrder;
|
|
222
215
|
for (let i = fromIdx; i < items2.length; i++) {
|
|
223
216
|
let el = items2[i];
|
|
224
|
-
console.log("reoder el: ", el, order, i);
|
|
225
217
|
el[orderAttrib] = order;
|
|
226
218
|
informModification(el, orderAttrib);
|
|
227
219
|
order += ORDER_STEP;
|
|
@@ -255,15 +247,16 @@ async function insert(title2, after) {
|
|
|
255
247
|
} else
|
|
256
248
|
newElement[orderAttrib] = MIN_ORDER;
|
|
257
249
|
}
|
|
250
|
+
await definition.onInsert(newElement);
|
|
251
|
+
return;
|
|
258
252
|
let insertedElement = await definition.onInsert(newElement);
|
|
259
253
|
if (!insertedElement)
|
|
260
254
|
return;
|
|
261
255
|
if (after)
|
|
262
|
-
insertAfter(items, after, insertedElement);
|
|
256
|
+
items = insertAfter(items, after, insertedElement);
|
|
263
257
|
else
|
|
264
|
-
items
|
|
258
|
+
items = [...items, insertedElement];
|
|
265
259
|
activate_after_dom_update = insertedElement;
|
|
266
|
-
rereder();
|
|
267
260
|
}
|
|
268
261
|
</script>
|
|
269
262
|
|
|
@@ -277,8 +270,8 @@ async function insert(title2, after) {
|
|
|
277
270
|
|
|
278
271
|
<!--div class="w-full h-full overflow-y-auto"-->
|
|
279
272
|
|
|
280
|
-
{#if items && items.length > 0
|
|
281
|
-
{#each items as element, i (element
|
|
273
|
+
{#if items && items.length > 0 }
|
|
274
|
+
{#each items as element, i (getItemKey(element))}
|
|
282
275
|
|
|
283
276
|
<List_element item={element}
|
|
284
277
|
{toolbarOperations}
|
|
@@ -55,7 +55,9 @@ function onNewElement(text) {
|
|
|
55
55
|
</script>
|
|
56
56
|
|
|
57
57
|
{#each objects as item (item.Id)}
|
|
58
|
-
|
|
58
|
+
{#key item} <!-- Forces to fully rerender when item changed to fire use: callbacks again -->
|
|
59
|
+
<slot {item}/>
|
|
60
|
+
{/key}
|
|
59
61
|
{/each }
|
|
60
62
|
|
|
61
63
|
{#if inserter}
|