lkt-item-crud 1.1.20 → 1.1.22
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/build.d.ts +4 -4
- package/dist/build.js +143 -136
- package/dist/lib-components/LktItemCrud.vue.d.ts +9 -0
- package/package.json +1 -1
- package/src/lib-components/LktItemCrud.vue +23 -5
package/dist/build.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
declare function
|
|
2
|
-
declare namespace
|
|
3
|
-
function install(l: any,
|
|
1
|
+
declare function $e(l?: boolean): void;
|
|
2
|
+
declare namespace Fe {
|
|
3
|
+
function install(l: any, p?: {}): void;
|
|
4
4
|
}
|
|
5
|
-
export {
|
|
5
|
+
export { $e as debugLktItemCrud, Fe as default };
|
package/dist/build.js
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { httpCall as
|
|
3
|
-
import { DataState as
|
|
4
|
-
import { execModal as
|
|
5
|
-
const
|
|
1
|
+
import { defineComponent as ve, useSlots as fe, ref as s, computed as i, watch as h, nextTick as pe, resolveComponent as I, openBlock as f, createElementBlock as M, createElementVNode as K, toDisplayString as j, renderSlot as V, createCommentVNode as w, withDirectives as N, createBlock as L, withCtx as Y, unref as Z, vShow as O, createVNode as ee } from "vue";
|
|
2
|
+
import { httpCall as me } from "lkt-http-client";
|
|
3
|
+
import { DataState as ae } from "lkt-data-state";
|
|
4
|
+
import { execModal as he, refreshModal as ke, closeModal as Ce, openModal as be, reOpenModal as De } from "lkt-modal";
|
|
5
|
+
const H = class H {
|
|
6
6
|
};
|
|
7
|
-
|
|
8
|
-
let
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
},
|
|
12
|
-
|
|
13
|
-
},
|
|
14
|
-
|
|
15
|
-
let
|
|
7
|
+
H.debugEnabled = !1;
|
|
8
|
+
let T = H;
|
|
9
|
+
const u = (...l) => {
|
|
10
|
+
T.debugEnabled && console.info("[LktItemCrud] ", ...l);
|
|
11
|
+
}, $e = (l = !0) => {
|
|
12
|
+
T.debugEnabled = l;
|
|
13
|
+
}, q = (l) => {
|
|
14
|
+
u("runModalCallback -> init", l);
|
|
15
|
+
let p = l.modalKey ? l.modalKey : "_", S = l.args ? l.args : {};
|
|
16
16
|
switch (l.action) {
|
|
17
17
|
case "reOpen":
|
|
18
|
-
return
|
|
18
|
+
return De(l.modalName, p, S);
|
|
19
19
|
case "open":
|
|
20
|
-
return
|
|
20
|
+
return be(l.modalName, p, S);
|
|
21
21
|
case "close":
|
|
22
|
-
return
|
|
22
|
+
return Ce(l.modalName, p);
|
|
23
23
|
case "refresh":
|
|
24
|
-
return
|
|
24
|
+
return ke(l.modalName, p, S);
|
|
25
25
|
case "exec":
|
|
26
26
|
let e = l.method;
|
|
27
|
-
return e ?
|
|
27
|
+
return e ? he(l.modalName, p, e, S) : void 0;
|
|
28
28
|
}
|
|
29
|
-
},
|
|
29
|
+
}, Se = { class: "lkt-item-crud" }, ye = {
|
|
30
30
|
key: 0,
|
|
31
31
|
class: "lkt-item-crud_header"
|
|
32
|
-
},
|
|
32
|
+
}, ge = { class: "lkt-item-crud_header-title" }, Me = { class: "lkt-item-crud_header-slot" }, _e = { class: "lkt-item-crud-buttons" }, Be = { key: 1 }, we = { key: 1 }, Ue = {
|
|
33
33
|
key: 1,
|
|
34
34
|
class: "lkt-item-crud_content"
|
|
35
|
-
},
|
|
35
|
+
}, Re = {
|
|
36
36
|
key: 0,
|
|
37
37
|
class: "lkt-grid-1"
|
|
38
|
-
},
|
|
38
|
+
}, Ee = /* @__PURE__ */ ve({
|
|
39
39
|
__name: "LktItemCrud",
|
|
40
40
|
props: {
|
|
41
41
|
modelValue: { default: () => ({}) },
|
|
@@ -72,185 +72,192 @@ const r = (...l) => {
|
|
|
72
72
|
dataStateConfig: { default: () => ({}) },
|
|
73
73
|
onCreateModalCallbacks: { default: () => [] },
|
|
74
74
|
onUpdateModalCallbacks: { default: () => [] },
|
|
75
|
-
onDropModalCallbacks: { default: () => [] }
|
|
75
|
+
onDropModalCallbacks: { default: () => [] },
|
|
76
|
+
editing: { type: Boolean, default: !1 }
|
|
76
77
|
},
|
|
77
|
-
emits: ["update:modelValue", "update:isCreate", "read", "create", "update", "drop", "perms", "error", "modified-data"],
|
|
78
|
-
setup(l, { expose:
|
|
79
|
-
const e = l,
|
|
80
|
-
let
|
|
81
|
-
const d = s(!0),
|
|
82
|
-
|
|
78
|
+
emits: ["update:modelValue", "update:isCreate", "update:editing", "read", "create", "update", "drop", "before-save", "perms", "error", "modified-data"],
|
|
79
|
+
setup(l, { expose: p, emit: S }) {
|
|
80
|
+
const e = l, $ = fe(), n = S;
|
|
81
|
+
let te = [];
|
|
82
|
+
const d = s(!0), r = s(e.modelValue), _ = s(te), c = s(e.editing), m = s(!1), k = s(!1), v = s(200), U = s(null), R = s(null), y = s(new ae(r.value, e.dataStateConfig)), F = s(new ae(e.readData)), o = s(e.isCreate), J = s(!1), le = i(() => o.value ? e.createConfirm : e.updateConfirm), oe = i(() => o.value ? e.createConfirmData : e.updateConfirmData), P = i(() => o.value ? e.createResource : e.updateResource), ue = i(() => o.value ? { ...e.createData, ...JSON.parse(JSON.stringify(r.value)) } : { ...e.updateData, ...JSON.parse(JSON.stringify(r.value)) }), de = i(() => o.value ? e.createDisabled : e.updateDisabled), C = i(() => !o.value && _.value.includes("update")), b = i(() => !o.value && _.value.includes("drop")), E = async () => {
|
|
83
|
+
u("fetchItem"), d.value = !0, v.value = -1, k.value = !1;
|
|
83
84
|
try {
|
|
84
|
-
const a = await
|
|
85
|
-
if (
|
|
86
|
-
m.value = !1,
|
|
85
|
+
const a = await me(e.readResource, e.readData);
|
|
86
|
+
if (u("fetchItem -> response", a), d.value = !1, v.value = a.httpStatus, !a.success) {
|
|
87
|
+
m.value = !1, v.value = a.httpStatus, n("error", a.httpStatus);
|
|
87
88
|
return;
|
|
88
89
|
}
|
|
89
|
-
m.value = !0,
|
|
90
|
+
m.value = !0, r.value = a.data, _.value = a.perms, y.value.increment(r.value).turnStoredIntoOriginal(), F.value.turnStoredIntoOriginal(), n("read", a);
|
|
90
91
|
} catch {
|
|
91
|
-
d.value = !1, m.value = !1,
|
|
92
|
+
d.value = !1, m.value = !1, v.value = 404, n("error", 404);
|
|
92
93
|
return;
|
|
93
94
|
}
|
|
94
|
-
},
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}, { deep: !0 }),
|
|
98
|
-
if (
|
|
99
|
-
|
|
100
|
-
let t = e.beforeEmitUpdate(
|
|
101
|
-
|
|
95
|
+
}, re = i(() => d.value ? !1 : e.title || !!$["post-title"]);
|
|
96
|
+
h(() => e.modelValue, (a) => {
|
|
97
|
+
r.value = a, y.value.increment(a);
|
|
98
|
+
}, { deep: !0 }), h(r, (a) => {
|
|
99
|
+
if (J.value = !0, u("item updated ->", r.value), typeof e.beforeEmitUpdate == "function") {
|
|
100
|
+
u("item updated -> has beforeEmitUpdate");
|
|
101
|
+
let t = e.beforeEmitUpdate(r.value);
|
|
102
|
+
u("item updated -> override with: ", t), typeof t == "object" && (r.value = t);
|
|
102
103
|
}
|
|
103
|
-
|
|
104
|
-
}, { deep: !0 }),
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
104
|
+
n("update:modelValue", r.value), u("item updated -> update dataState"), y.value.increment(a), pe(() => J.value = !1);
|
|
105
|
+
}, { deep: !0 }), h(_, () => n("perms", _.value));
|
|
106
|
+
const x = i(() => de.value || !o.value && !C.value || typeof e.saveValidator == "function" && !e.saveValidator(r.value) ? !1 : y.value.changed());
|
|
107
|
+
h(x, (a) => n("modified-data", a)), h(o, (a) => n("update:isCreate", a)), h(() => e.readData, (a) => {
|
|
108
|
+
F.value.increment(a), F.value.changed() && E();
|
|
109
|
+
}), h(() => e.editing, (a) => {
|
|
110
|
+
u("editing updated -> updating editMode", a), c.value = a;
|
|
111
|
+
}), h(c, (a) => {
|
|
112
|
+
u("editMode updated -> emit update", a), n("update:editing", a);
|
|
113
|
+
}), e.readResource && !o.value ? E() : o.value && (m.value = !0, c.value = !0, d.value = !1);
|
|
114
|
+
const ne = (a, t) => {
|
|
115
|
+
if (d.value = !1, v.value = t.httpStatus, !t.success) {
|
|
116
|
+
k.value = !0, n("error", t.httpStatus);
|
|
110
117
|
return;
|
|
111
118
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
})),
|
|
115
|
-
},
|
|
116
|
-
if (
|
|
117
|
-
if (d.value = !1,
|
|
118
|
-
|
|
119
|
+
k.value = !0, e.onDropModalCallbacks.length > 0 && (u("onDrop -> has onDropModalCallbacks"), e.onDropModalCallbacks.forEach((D) => {
|
|
120
|
+
q(D);
|
|
121
|
+
})), n("drop", t);
|
|
122
|
+
}, se = (a, t) => {
|
|
123
|
+
if (u("onSave -> received response:", t), n("before-save"), P.value) {
|
|
124
|
+
if (d.value = !1, v.value = t.httpStatus, !t.success) {
|
|
125
|
+
k.value = !0, n("error", t.httpStatus);
|
|
119
126
|
return;
|
|
120
127
|
}
|
|
121
|
-
|
|
128
|
+
k.value = !0;
|
|
122
129
|
}
|
|
123
|
-
let
|
|
124
|
-
o.value || (
|
|
125
|
-
|
|
126
|
-
}))) : typeof e.onUpdate == "function" && (
|
|
127
|
-
|
|
128
|
-
}))), !e.insideModal && t.autoReloadId && (
|
|
129
|
-
}, x = () => {
|
|
130
|
-
d.value = !0, c.value = -1;
|
|
130
|
+
let D = o.value ? "create" : "update";
|
|
131
|
+
o.value || (u("onSave -> turn stored data into original"), y.value.turnStoredIntoOriginal()), D === "create" ? typeof e.onCreate == "function" && (u("onSave -> trigger onCreate callback"), e.onCreate(t), e.onCreateModalCallbacks.length > 0 && (u("onSave -> has onCreateModalCallbacks"), e.onCreateModalCallbacks.forEach((B) => {
|
|
132
|
+
q(B);
|
|
133
|
+
}))) : typeof e.onUpdate == "function" && (u("onSave -> trigger onUpdate callback"), e.onUpdate(t), e.onUpdateModalCallbacks.length > 0 && (u("onSave -> has onUpdateModalCallbacks"), e.onUpdateModalCallbacks.forEach((B) => {
|
|
134
|
+
q(B);
|
|
135
|
+
}))), !e.insideModal && t.autoReloadId && (u("onSave -> autoReloadId detected: ", t.autoReloadId), e.readData.id = t.autoReloadId, u("onSave -> turning off create mode"), o.value = !1, E()), n(D, t);
|
|
131
136
|
}, z = () => {
|
|
137
|
+
d.value = !0, v.value = -1;
|
|
138
|
+
}, A = () => {
|
|
132
139
|
d.value = !1;
|
|
133
140
|
};
|
|
134
|
-
|
|
141
|
+
p({
|
|
135
142
|
doDrop: () => {
|
|
136
143
|
R.value && typeof R.value.click == "function" && R.value.click();
|
|
137
144
|
},
|
|
138
|
-
doRefresh:
|
|
145
|
+
doRefresh: E,
|
|
139
146
|
doSave: () => {
|
|
140
|
-
|
|
147
|
+
U.value && typeof U.value.click == "function" && U.value.click();
|
|
141
148
|
}
|
|
142
149
|
});
|
|
143
|
-
const
|
|
144
|
-
return
|
|
145
|
-
const
|
|
146
|
-
return
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
+
const G = i(() => !C.value && b.value ? !0 : !e.hiddenDrop && !d.value && c.value && m.value), Q = i(() => y.value.changed() ? !0 : d.value ? !1 : o.value ? !0 : !e.hiddenSave && c.value && m.value), W = i(() => !C.value && !b.value || !C.value && b.value ? !1 : !d.value && !o.value && m.value && !(e.dropDisabled && e.updateDisabled)), ie = i(() => !e.hiddenButtons && (Q.value || G.value || W.value));
|
|
151
|
+
return (a, t) => {
|
|
152
|
+
const D = I("lkt-button"), B = I("lkt-field-switch"), X = I("lkt-http-info"), ce = I("lkt-loader");
|
|
153
|
+
return f(), M("article", Se, [
|
|
154
|
+
re.value ? (f(), M("header", ye, [
|
|
155
|
+
K("h1", ge, j(a.title), 1),
|
|
156
|
+
K("div", Me, [
|
|
150
157
|
V(a.$slots, "post-title", {
|
|
151
|
-
item:
|
|
158
|
+
item: r.value,
|
|
152
159
|
loading: d.value
|
|
153
160
|
})
|
|
154
161
|
])
|
|
155
|
-
])) :
|
|
156
|
-
|
|
157
|
-
o.value ?
|
|
162
|
+
])) : w("", !0),
|
|
163
|
+
N(K("div", _e, [
|
|
164
|
+
o.value ? w("", !0) : N((f(), L(D, {
|
|
158
165
|
key: 0,
|
|
159
|
-
ref: (
|
|
166
|
+
ref: (g) => R.value = g,
|
|
160
167
|
palette: "danger",
|
|
161
|
-
disabled: a.dropDisabled || !
|
|
168
|
+
disabled: a.dropDisabled || !b.value,
|
|
162
169
|
"confirm-modal": a.dropConfirm,
|
|
163
170
|
"confirm-data": a.dropConfirmData,
|
|
164
171
|
resource: a.dropResource,
|
|
165
172
|
"resource-data": a.dropData,
|
|
166
|
-
onLoading:
|
|
167
|
-
onLoaded:
|
|
168
|
-
onClick:
|
|
173
|
+
onLoading: z,
|
|
174
|
+
onLoaded: A,
|
|
175
|
+
onClick: ne
|
|
169
176
|
}, {
|
|
170
|
-
default:
|
|
171
|
-
|
|
177
|
+
default: Y(() => [
|
|
178
|
+
Z($)["button-drop"] ? V(a.$slots, "button-drop", {
|
|
172
179
|
key: 0,
|
|
173
|
-
item:
|
|
174
|
-
editMode:
|
|
180
|
+
item: r.value,
|
|
181
|
+
editMode: c.value,
|
|
175
182
|
isCreate: o.value,
|
|
176
|
-
canUpdate:
|
|
177
|
-
canDrop:
|
|
178
|
-
}) : (
|
|
183
|
+
canUpdate: C.value,
|
|
184
|
+
canDrop: b.value
|
|
185
|
+
}) : (f(), M("span", Be, j(a.dropText), 1))
|
|
179
186
|
]),
|
|
180
187
|
_: 3
|
|
181
188
|
}, 8, ["disabled", "confirm-modal", "confirm-data", "resource", "resource-data"])), [
|
|
182
|
-
[
|
|
189
|
+
[O, G.value]
|
|
183
190
|
]),
|
|
184
|
-
|
|
185
|
-
ref: (
|
|
191
|
+
N(ee(D, {
|
|
192
|
+
ref: (g) => U.value = g,
|
|
186
193
|
palette: "success",
|
|
187
|
-
disabled: !
|
|
188
|
-
"confirm-modal":
|
|
189
|
-
"confirm-data":
|
|
190
|
-
resource:
|
|
191
|
-
"resource-data":
|
|
192
|
-
onLoading:
|
|
193
|
-
onLoaded:
|
|
194
|
-
onClick:
|
|
194
|
+
disabled: !x.value,
|
|
195
|
+
"confirm-modal": le.value,
|
|
196
|
+
"confirm-data": oe.value,
|
|
197
|
+
resource: P.value,
|
|
198
|
+
"resource-data": ue.value,
|
|
199
|
+
onLoading: z,
|
|
200
|
+
onLoaded: A,
|
|
201
|
+
onClick: se
|
|
195
202
|
}, {
|
|
196
|
-
default:
|
|
197
|
-
|
|
203
|
+
default: Y(() => [
|
|
204
|
+
Z($)["button-save"] ? V(a.$slots, "button-save", {
|
|
198
205
|
key: 0,
|
|
199
|
-
item:
|
|
200
|
-
editMode:
|
|
206
|
+
item: r.value,
|
|
207
|
+
editMode: c.value,
|
|
201
208
|
isCreate: o.value,
|
|
202
|
-
canUpdate:
|
|
203
|
-
canDrop:
|
|
204
|
-
}) : (
|
|
209
|
+
canUpdate: C.value,
|
|
210
|
+
canDrop: b.value
|
|
211
|
+
}) : (f(), M("span", we, j(a.saveText), 1))
|
|
205
212
|
]),
|
|
206
213
|
_: 3
|
|
207
214
|
}, 8, ["disabled", "confirm-modal", "confirm-data", "resource", "resource-data"]), [
|
|
208
|
-
[
|
|
215
|
+
[O, Q.value]
|
|
209
216
|
]),
|
|
210
|
-
|
|
211
|
-
modelValue:
|
|
212
|
-
"onUpdate:modelValue": t[0] || (t[0] = (
|
|
217
|
+
N(ee(B, {
|
|
218
|
+
modelValue: c.value,
|
|
219
|
+
"onUpdate:modelValue": t[0] || (t[0] = (g) => c.value = g),
|
|
213
220
|
label: a.editModeText
|
|
214
221
|
}, null, 8, ["modelValue", "label"]), [
|
|
215
|
-
[
|
|
222
|
+
[O, W.value]
|
|
216
223
|
])
|
|
217
224
|
], 512), [
|
|
218
|
-
[
|
|
225
|
+
[O, ie.value]
|
|
219
226
|
]),
|
|
220
|
-
d.value ?
|
|
221
|
-
m.value ? (
|
|
222
|
-
|
|
227
|
+
d.value ? w("", !0) : (f(), M("div", Ue, [
|
|
228
|
+
m.value ? (f(), M("div", Re, [
|
|
229
|
+
k.value ? (f(), L(X, {
|
|
223
230
|
key: 0,
|
|
224
|
-
code:
|
|
231
|
+
code: v.value,
|
|
225
232
|
quick: "",
|
|
226
|
-
palette:
|
|
233
|
+
palette: v.value === 200 ? "success" : "danger",
|
|
227
234
|
"can-close": "",
|
|
228
|
-
onClose: t[1] || (t[1] = (
|
|
229
|
-
}, null, 8, ["code", "palette"])) :
|
|
235
|
+
onClose: t[1] || (t[1] = (g) => k.value = !1)
|
|
236
|
+
}, null, 8, ["code", "palette"])) : w("", !0),
|
|
230
237
|
V(a.$slots, "item", {
|
|
231
|
-
item:
|
|
238
|
+
item: r.value,
|
|
232
239
|
loading: d.value,
|
|
233
|
-
editMode:
|
|
240
|
+
editMode: c.value,
|
|
234
241
|
isCreate: o.value,
|
|
235
|
-
canUpdate:
|
|
236
|
-
canDrop:
|
|
237
|
-
itemBeingEdited:
|
|
242
|
+
canUpdate: C.value,
|
|
243
|
+
canDrop: b.value,
|
|
244
|
+
itemBeingEdited: J.value
|
|
238
245
|
})
|
|
239
|
-
])) : (
|
|
246
|
+
])) : (f(), L(X, {
|
|
240
247
|
key: 1,
|
|
241
|
-
code:
|
|
248
|
+
code: v.value
|
|
242
249
|
}, null, 8, ["code"]))
|
|
243
250
|
])),
|
|
244
|
-
d.value ? (
|
|
251
|
+
d.value ? (f(), L(ce, { key: 2 })) : w("", !0)
|
|
245
252
|
]);
|
|
246
253
|
};
|
|
247
254
|
}
|
|
248
|
-
}),
|
|
249
|
-
install: (l,
|
|
250
|
-
l.component("lkt-item-crud") === void 0 && l.component("lkt-item-crud",
|
|
255
|
+
}), Fe = {
|
|
256
|
+
install: (l, p = {}) => {
|
|
257
|
+
l.component("lkt-item-crud") === void 0 && l.component("lkt-item-crud", Ee);
|
|
251
258
|
}
|
|
252
259
|
};
|
|
253
260
|
export {
|
|
254
|
-
|
|
255
|
-
|
|
261
|
+
$e as debugLktItemCrud,
|
|
262
|
+
Fe as default
|
|
256
263
|
};
|
|
@@ -36,6 +36,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
|
|
|
36
36
|
onCreateModalCallbacks: ModalCallbackConfig[];
|
|
37
37
|
onUpdateModalCallbacks: ModalCallbackConfig[];
|
|
38
38
|
onDropModalCallbacks: ModalCallbackConfig[];
|
|
39
|
+
editing: boolean;
|
|
39
40
|
}>, {
|
|
40
41
|
modelValue: () => {};
|
|
41
42
|
title: string;
|
|
@@ -72,6 +73,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
|
|
|
72
73
|
onCreateModalCallbacks: () => never[];
|
|
73
74
|
onUpdateModalCallbacks: () => never[];
|
|
74
75
|
onDropModalCallbacks: () => never[];
|
|
76
|
+
editing: boolean;
|
|
75
77
|
}>, {
|
|
76
78
|
doDrop: () => void;
|
|
77
79
|
doRefresh: () => Promise<void>;
|
|
@@ -82,8 +84,10 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
|
|
|
82
84
|
update: (...args: any[]) => void;
|
|
83
85
|
"update:modelValue": (...args: any[]) => void;
|
|
84
86
|
"update:isCreate": (...args: any[]) => void;
|
|
87
|
+
"update:editing": (...args: any[]) => void;
|
|
85
88
|
read: (...args: any[]) => void;
|
|
86
89
|
create: (...args: any[]) => void;
|
|
90
|
+
"before-save": (...args: any[]) => void;
|
|
87
91
|
perms: (...args: any[]) => void;
|
|
88
92
|
"modified-data": (...args: any[]) => void;
|
|
89
93
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
@@ -122,6 +126,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
|
|
|
122
126
|
onCreateModalCallbacks: ModalCallbackConfig[];
|
|
123
127
|
onUpdateModalCallbacks: ModalCallbackConfig[];
|
|
124
128
|
onDropModalCallbacks: ModalCallbackConfig[];
|
|
129
|
+
editing: boolean;
|
|
125
130
|
}>, {
|
|
126
131
|
modelValue: () => {};
|
|
127
132
|
title: string;
|
|
@@ -158,6 +163,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
|
|
|
158
163
|
onCreateModalCallbacks: () => never[];
|
|
159
164
|
onUpdateModalCallbacks: () => never[];
|
|
160
165
|
onDropModalCallbacks: () => never[];
|
|
166
|
+
editing: boolean;
|
|
161
167
|
}>>> & {
|
|
162
168
|
onError?: ((...args: any[]) => any) | undefined;
|
|
163
169
|
onDrop?: ((...args: any[]) => any) | undefined;
|
|
@@ -165,7 +171,9 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
|
|
|
165
171
|
onUpdate?: ((...args: any[]) => any) | undefined;
|
|
166
172
|
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
|
|
167
173
|
"onUpdate:isCreate"?: ((...args: any[]) => any) | undefined;
|
|
174
|
+
"onUpdate:editing"?: ((...args: any[]) => any) | undefined;
|
|
168
175
|
onRead?: ((...args: any[]) => any) | undefined;
|
|
176
|
+
"onBefore-save"?: ((...args: any[]) => any) | undefined;
|
|
169
177
|
onPerms?: ((...args: any[]) => any) | undefined;
|
|
170
178
|
"onModified-data"?: ((...args: any[]) => any) | undefined;
|
|
171
179
|
}, {
|
|
@@ -204,6 +212,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
|
|
|
204
212
|
onCreateModalCallbacks: ModalCallbackConfig[];
|
|
205
213
|
onUpdateModalCallbacks: ModalCallbackConfig[];
|
|
206
214
|
onDropModalCallbacks: ModalCallbackConfig[];
|
|
215
|
+
editing: boolean;
|
|
207
216
|
}, {}>, {
|
|
208
217
|
"post-title"?(_: {
|
|
209
218
|
item: LktObject;
|
package/package.json
CHANGED
|
@@ -43,6 +43,7 @@ const props = withDefaults(defineProps<{
|
|
|
43
43
|
onCreateModalCallbacks: ModalCallbackConfig[]
|
|
44
44
|
onUpdateModalCallbacks: ModalCallbackConfig[]
|
|
45
45
|
onDropModalCallbacks: ModalCallbackConfig[]
|
|
46
|
+
editing: boolean
|
|
46
47
|
}>(), {
|
|
47
48
|
modelValue: () => ({}),
|
|
48
49
|
title: '',
|
|
@@ -79,24 +80,26 @@ const props = withDefaults(defineProps<{
|
|
|
79
80
|
onCreateModalCallbacks: () => [],
|
|
80
81
|
onUpdateModalCallbacks: () => [],
|
|
81
82
|
onDropModalCallbacks: () => [],
|
|
83
|
+
editing: false,
|
|
82
84
|
});
|
|
83
85
|
|
|
84
86
|
const slots = useSlots();
|
|
85
87
|
|
|
86
|
-
const emit = defineEmits(['update:modelValue', 'update:isCreate', 'read', 'create', 'update', 'drop', 'perms', 'error', 'modified-data']);
|
|
88
|
+
const emit = defineEmits(['update:modelValue', 'update:isCreate', 'update:editing', 'read', 'create', 'update', 'drop', 'before-save', 'perms', 'error', 'modified-data']);
|
|
87
89
|
|
|
88
90
|
let basePerms: string[] = [];
|
|
89
91
|
|
|
90
92
|
const isLoading = ref(true),
|
|
91
93
|
item = ref(props.modelValue),
|
|
92
94
|
perms = ref(basePerms),
|
|
93
|
-
editMode = ref(
|
|
95
|
+
editMode = ref(props.editing),
|
|
94
96
|
httpSuccessRead = ref(false),
|
|
95
97
|
showStoreMessage = ref(false),
|
|
96
98
|
httpStatus = ref(200),
|
|
97
99
|
saveButton = ref(null),
|
|
98
100
|
dropButton = ref(null),
|
|
99
101
|
dataState = ref(new DataState(item.value, props.dataStateConfig)),
|
|
102
|
+
readDataState = ref(new DataState(props.readData)),
|
|
100
103
|
createMode = ref(props.isCreate),
|
|
101
104
|
itemBeingEdited = ref(false);
|
|
102
105
|
|
|
@@ -149,6 +152,7 @@ const fetchItem = async () => {
|
|
|
149
152
|
item.value = r.data;
|
|
150
153
|
perms.value = r.perms;
|
|
151
154
|
dataState.value.increment(item.value).turnStoredIntoOriginal();
|
|
155
|
+
readDataState.value.turnStoredIntoOriginal();
|
|
152
156
|
emit('read', r);
|
|
153
157
|
} catch (e) {
|
|
154
158
|
isLoading.value = false;
|
|
@@ -198,6 +202,20 @@ const ableToSave = computed(() => {
|
|
|
198
202
|
watch(ableToSave, (v) => emit('modified-data', v));
|
|
199
203
|
watch(createMode, (v) => emit('update:isCreate', v));
|
|
200
204
|
|
|
205
|
+
watch(() => props.readData, v => {
|
|
206
|
+
readDataState.value.increment(v);
|
|
207
|
+
if (readDataState.value.changed()) fetchItem()
|
|
208
|
+
})
|
|
209
|
+
|
|
210
|
+
watch(() => props.editing, v => {
|
|
211
|
+
debug('editing updated -> updating editMode', v);
|
|
212
|
+
editMode.value = v;
|
|
213
|
+
});
|
|
214
|
+
watch(editMode, (v) => {
|
|
215
|
+
debug('editMode updated -> emit update', v);
|
|
216
|
+
emit('update:editing', v)
|
|
217
|
+
});
|
|
218
|
+
|
|
201
219
|
// Fetch item
|
|
202
220
|
if (props.readResource && !createMode.value) fetchItem();
|
|
203
221
|
else if (createMode.value) {
|
|
@@ -225,6 +243,7 @@ const onDrop = ($event: PointerEvent, r: HTTPResponse) => {
|
|
|
225
243
|
},
|
|
226
244
|
onSave = ($event: PointerEvent, r: HTTPResponse) => {
|
|
227
245
|
debug('onSave -> received response:', r);
|
|
246
|
+
emit('before-save');
|
|
228
247
|
if (saveResource.value) {
|
|
229
248
|
isLoading.value = false;
|
|
230
249
|
httpStatus.value = r.httpStatus;
|
|
@@ -305,6 +324,8 @@ const showDropButton = computed(() => {
|
|
|
305
324
|
&& httpSuccessRead.value;
|
|
306
325
|
}),
|
|
307
326
|
showSaveButton = computed(() => {
|
|
327
|
+
|
|
328
|
+
if (dataState.value.changed()) return true;
|
|
308
329
|
if (isLoading.value) return false;
|
|
309
330
|
|
|
310
331
|
if (createMode.value) return true;
|
|
@@ -324,9 +345,6 @@ const showDropButton = computed(() => {
|
|
|
324
345
|
}),
|
|
325
346
|
showButtons = computed(() => {
|
|
326
347
|
return !props.hiddenButtons && (showSaveButton.value || showDropButton.value || showSwitchButton.value);
|
|
327
|
-
}),
|
|
328
|
-
computedItem = computed(() => {
|
|
329
|
-
return item;
|
|
330
348
|
});
|
|
331
349
|
</script>
|
|
332
350
|
|