lkt-item-crud 1.1.16 → 1.1.18

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 CHANGED
@@ -1,5 +1,5 @@
1
- declare function qe(u?: boolean): void;
2
- declare namespace Oe {
3
- function install(u: any, T?: {}): void;
1
+ declare function Te(l?: boolean): void;
2
+ declare namespace $e {
3
+ function install(l: any, f?: {}): void;
4
4
  }
5
- export { qe as debugLktItemCrud, Oe as default };
5
+ export { Te as debugLktItemCrud, $e as default };
package/dist/build.js CHANGED
@@ -1,228 +1,253 @@
1
- import { defineComponent as ne, useSlots as ie, ref as s, computed as d, watch as D, resolveComponent as w, openBlock as v, createElementBlock as h, createElementVNode as E, toDisplayString as j, renderSlot as q, createCommentVNode as g, withDirectives as O, createBlock as V, withCtx as G, unref as K, vShow as I, createVNode as Q } from "vue";
2
- import { httpCall as se } from "lkt-http-client";
3
- import { DataState as ce } from "lkt-data-state";
4
- const N = class N {
1
+ import { defineComponent as ie, useSlots as ce, ref as s, computed as n, watch as M, nextTick as ve, resolveComponent as E, openBlock as v, createElementBlock as b, createElementVNode as J, toDisplayString as K, renderSlot as V, createCommentVNode as g, withDirectives as I, createBlock as N, withCtx as W, unref as X, vShow as L, createVNode as Y } from "vue";
2
+ import { httpCall as fe } from "lkt-http-client";
3
+ import { DataState as pe } from "lkt-data-state";
4
+ import { execModal as me, refreshModal as he, closeModal as ke, openModal as Ce, reOpenModal as be } from "lkt-modal";
5
+ const j = class j {
5
6
  };
6
- N.debugEnabled = !1;
7
- let U = N;
8
- const n = (...u) => {
9
- U.debugEnabled && console.info("[LktItemCrud] ", ...u);
10
- }, qe = (u = !0) => {
11
- U.debugEnabled = u;
12
- }, ve = { class: "lkt-item-crud" }, fe = {
7
+ j.debugEnabled = !1;
8
+ let O = j;
9
+ const r = (...l) => {
10
+ O.debugEnabled && console.info("[LktItemCrud] ", ...l);
11
+ }, Te = (l = !0) => {
12
+ O.debugEnabled = l;
13
+ }, Z = (l) => {
14
+ r("runModalCallback -> init", l);
15
+ let f = l.modalKey ? l.modalKey : "_", k = l.args ? l.args : {};
16
+ switch (l.action) {
17
+ case "reOpen":
18
+ return be(l.modalName, f, k);
19
+ case "open":
20
+ return Ce(l.modalName, f, k);
21
+ case "close":
22
+ return ke(l.modalName, f);
23
+ case "refresh":
24
+ return he(l.modalName, f, k);
25
+ case "exec":
26
+ let e = l.method;
27
+ return e ? me(l.modalName, f, e, k) : void 0;
28
+ }
29
+ }, De = { class: "lkt-item-crud" }, Se = {
13
30
  key: 0,
14
31
  class: "lkt-item-crud_header"
15
- }, pe = { class: "lkt-item-crud_header-title" }, me = { class: "lkt-item-crud_header-slot" }, ye = { class: "lkt-item-crud-buttons" }, he = { key: 1 }, be = { key: 1 }, Se = {
32
+ }, ye = { class: "lkt-item-crud_header-title" }, _e = { class: "lkt-item-crud_header-slot" }, Me = { class: "lkt-item-crud-buttons" }, ge = { key: 1 }, Be = { key: 1 }, Ue = {
16
33
  key: 1,
17
34
  class: "lkt-item-crud_content"
18
- }, ke = {
35
+ }, we = {
19
36
  key: 0,
20
37
  class: "lkt-grid-1"
21
- }, De = { name: "LktItemCrud", inheritAttrs: !1 }, ge = /* @__PURE__ */ ne({
22
- ...De,
38
+ }, Re = /* @__PURE__ */ ie({
39
+ __name: "LktItemCrud",
23
40
  props: {
24
- modelValue: { type: Object, required: !1, default: () => ({}) },
25
- title: { type: String, default: "" },
26
- editModeText: { type: String, default: "Edition Mode" },
27
- saveText: { type: String, default: "Save" },
28
- dropText: { type: String, default: "Delete" },
41
+ modelValue: { default: () => ({}) },
42
+ title: { default: "" },
43
+ editModeText: { default: "Edition Mode" },
44
+ saveText: { default: "Save" },
45
+ dropText: { default: "Delete" },
29
46
  hiddenSave: { type: Boolean, default: !1 },
30
47
  hiddenDrop: { type: Boolean, default: !1 },
31
48
  hiddenButtons: { type: Boolean, default: !1 },
32
- readResource: { type: String, required: !1 },
33
- createResource: { type: String, required: !1 },
34
- updateResource: { type: String, required: !1 },
35
- dropResource: { type: String, required: !1 },
36
- readData: { type: Object, required: !1, default: () => ({}) },
37
- createData: { type: Object, required: !1, default: () => ({}) },
38
- updateData: { type: Object, required: !1, default: () => ({}) },
39
- dropData: { type: Object, required: !1, default: () => ({}) },
49
+ readResource: { default: "" },
50
+ createResource: { default: "" },
51
+ updateResource: { default: "" },
52
+ dropResource: { default: "" },
53
+ readData: { default: () => ({}) },
54
+ createData: { default: () => ({}) },
55
+ updateData: { default: () => ({}) },
56
+ dropData: { default: () => ({}) },
40
57
  isCreate: { type: Boolean, default: !1 },
41
- createConfirm: { type: String, default: "" },
42
- updateConfirm: { type: String, default: "" },
43
- dropConfirm: { type: String, default: "" },
44
- createConfirmData: { type: Object, default: () => ({}) },
45
- updateConfirmData: { type: Object, default: () => ({}) },
46
- dropConfirmData: { type: Object, default: () => ({}) },
58
+ createConfirm: { default: "" },
59
+ updateConfirm: { default: "" },
60
+ dropConfirm: { default: "" },
61
+ createConfirmData: { default: () => ({}) },
62
+ updateConfirmData: { default: () => ({}) },
63
+ dropConfirmData: { default: () => ({}) },
47
64
  createDisabled: { type: Boolean, default: !1 },
48
65
  updateDisabled: { type: Boolean, default: !1 },
49
66
  dropDisabled: { type: Boolean, default: !1 },
50
- saveValidator: { type: Function, required: !1, default: () => !0 },
51
- beforeEmitUpdate: { type: Function, required: !1, default: () => !0 },
52
- onCreate: { type: Function, required: !1, default: () => !0 },
53
- onUpdate: { type: Function, required: !1, default: () => !0 },
54
- insideModal: { type: Boolean, default: !1 }
67
+ saveValidator: { type: Function, default: () => !0 },
68
+ beforeEmitUpdate: { type: Function, default: void 0 },
69
+ onCreate: { type: Function, default: void 0 },
70
+ onUpdate: { type: Function, default: void 0 },
71
+ insideModal: { type: Boolean, default: !1 },
72
+ dataStateConfig: { default: () => ({}) },
73
+ onCreateModalCallbacks: { default: () => [] },
74
+ onUpdateModalCallbacks: { default: () => [] }
55
75
  },
56
76
  emits: ["update:modelValue", "update:isCreate", "read", "create", "update", "drop", "perms", "error", "modified-data"],
57
- setup(u, { expose: T, emit: W }) {
58
- const e = u, L = ie(), i = W;
59
- let X = [];
60
- const o = s(!0), r = s(e.modelValue), b = s(X), f = s(!1), p = s(!1), m = s(!1), c = s(200), C = s(null), B = s(null), S = s(new ce(r.value)), l = s(e.isCreate), Y = d(() => l.value ? e.createConfirm : e.updateConfirm), Z = d(() => l.value ? e.createConfirmData : e.updateConfirmData), $ = d(() => l.value ? e.createResource : e.updateResource), ee = d(() => l.value ? { ...e.createData, ...JSON.parse(JSON.stringify(r.value)) } : { ...e.updateData, ...JSON.parse(JSON.stringify(r.value)) }), te = d(() => l.value ? e.createDisabled : e.updateDisabled), _ = d(() => !l.value && b.value.includes("update")), R = d(() => !l.value && b.value.includes("drop")), M = async () => {
61
- n("fetchItem"), o.value = !0, c.value = -1, m.value = !1;
77
+ setup(l, { expose: f, emit: k }) {
78
+ const e = l, T = ce(), i = k;
79
+ let ee = [];
80
+ const d = s(!0), u = s(e.modelValue), D = s(ee), p = s(!1), m = s(!1), h = s(!1), c = s(200), B = s(null), U = s(null), S = s(new pe(u.value, e.dataStateConfig)), o = s(e.isCreate), $ = s(!1), ae = n(() => o.value ? e.createConfirm : e.updateConfirm), te = n(() => o.value ? e.createConfirmData : e.updateConfirmData), q = n(() => o.value ? e.createResource : e.updateResource), le = n(() => o.value ? { ...e.createData, ...JSON.parse(JSON.stringify(u.value)) } : { ...e.updateData, ...JSON.parse(JSON.stringify(u.value)) }), oe = n(() => o.value ? e.createDisabled : e.updateDisabled), w = n(() => !o.value && D.value.includes("update")), R = n(() => !o.value && D.value.includes("drop")), F = async () => {
81
+ r("fetchItem"), d.value = !0, c.value = -1, h.value = !1;
62
82
  try {
63
- const t = await se(e.readResource, e.readData);
64
- if (n("fetchItem -> response", t), o.value = !1, c.value = t.httpStatus, !t.success) {
65
- p.value = !1, c.value = t.httpStatus, i("error", t.httpStatus);
83
+ const a = await fe(e.readResource, e.readData);
84
+ if (r("fetchItem -> response", a), d.value = !1, c.value = a.httpStatus, !a.success) {
85
+ m.value = !1, c.value = a.httpStatus, i("error", a.httpStatus);
66
86
  return;
67
87
  }
68
- p.value = !0, r.value = t.data, b.value = t.perms, S.value.increment(r.value).turnStoredIntoOriginal(), i("read", t);
88
+ m.value = !0, u.value = a.data, D.value = a.perms, S.value.increment(u.value).turnStoredIntoOriginal(), i("read", a);
69
89
  } catch {
70
- o.value = !1, p.value = !1, c.value = 404, i("error", 404);
90
+ d.value = !1, m.value = !1, c.value = 404, i("error", 404);
71
91
  return;
72
92
  }
73
- }, ae = d(() => o.value ? !1 : e.title || !!L["post-title"]);
74
- D(() => e.modelValue, (t) => {
75
- r.value = t, S.value.increment(t);
76
- }, { deep: !0 }), D(r, (t) => {
77
- if (n("item updated ->", r.value), typeof e.beforeEmitUpdate == "function") {
78
- n("item updated -> has beforeEmitUpdate");
79
- let a = e.beforeEmitUpdate(r.value);
80
- n("item updated -> override with: ", a), typeof a == "object" && (r.value = a);
93
+ }, ue = n(() => d.value ? !1 : e.title || !!T["post-title"]);
94
+ M(() => e.modelValue, (a) => {
95
+ u.value = a, S.value.increment(a);
96
+ }, { deep: !0 }), M(u, (a) => {
97
+ if ($.value = !0, r("item updated ->", u.value), typeof e.beforeEmitUpdate == "function") {
98
+ r("item updated -> has beforeEmitUpdate");
99
+ let t = e.beforeEmitUpdate(u.value);
100
+ r("item updated -> override with: ", t), typeof t == "object" && (u.value = t);
81
101
  }
82
- i("update:modelValue", r.value), n("item updated -> update dataState"), S.value.increment(t);
83
- }, { deep: !0 }), D(b, () => i("perms", b.value));
84
- const x = d(() => te.value || !l.value && !_.value || typeof e.saveValidator == "function" && !e.saveValidator(r.value) ? !1 : S.value.changed());
85
- D(x, (t) => i("modified-data", t)), D(l, (t) => i("update:isCreate", t)), e.readResource && !l.value ? M() : l.value && (p.value = !0, f.value = !0, o.value = !1);
86
- const le = (t, a) => {
87
- if (o.value = !1, c.value = a.httpStatus, !a.success) {
88
- m.value = !0, i("error", a.httpStatus);
102
+ i("update:modelValue", u.value), r("item updated -> update dataState"), S.value.increment(a), ve(() => $.value = !1);
103
+ }, { deep: !0 }), M(D, () => i("perms", D.value));
104
+ const H = n(() => oe.value || !o.value && !w.value || typeof e.saveValidator == "function" && !e.saveValidator(u.value) ? !1 : S.value.changed());
105
+ M(H, (a) => i("modified-data", a)), M(o, (a) => i("update:isCreate", a)), e.readResource && !o.value ? F() : o.value && (m.value = !0, p.value = !0, d.value = !1);
106
+ const de = (a, t) => {
107
+ if (d.value = !1, c.value = t.httpStatus, !t.success) {
108
+ h.value = !0, i("error", t.httpStatus);
89
109
  return;
90
110
  }
91
- m.value = !0, i("drop", a);
92
- }, ue = (t, a) => {
93
- if (n("onSave -> received response:", a), $.value) {
94
- if (o.value = !1, c.value = a.httpStatus, !a.success) {
95
- m.value = !0, i("error", a.httpStatus);
111
+ h.value = !0, i("drop", t);
112
+ }, re = (a, t) => {
113
+ if (r("onSave -> received response:", t), q.value) {
114
+ if (d.value = !1, c.value = t.httpStatus, !t.success) {
115
+ h.value = !0, i("error", t.httpStatus);
96
116
  return;
97
117
  }
98
- m.value = !0;
118
+ h.value = !0;
99
119
  }
100
- let k = l.value ? "create" : "update";
101
- l.value || (n("onSave -> turn stored data into original"), S.value.turnStoredIntoOriginal()), k === "create" ? typeof e.onCreate == "function" && (n("onSave -> trigger onCreate callback"), e.onCreate(a)) : typeof e.onUpdate == "function" && (n("onSave -> trigger onUpdate callback"), e.onUpdate(a)), !e.insideModal && a.autoReloadId && (n("onSave -> autoReloadId detected: ", a.autoReloadId), e.readData.id = a.autoReloadId, n("onSave -> turning off create mode"), l.value = !1, M()), i(k, a);
102
- }, F = () => {
103
- o.value = !0, c.value = -1;
104
- }, J = () => {
105
- o.value = !1;
120
+ let y = o.value ? "create" : "update";
121
+ o.value || (r("onSave -> turn stored data into original"), S.value.turnStoredIntoOriginal()), y === "create" ? typeof e.onCreate == "function" && (r("onSave -> trigger onCreate callback"), e.onCreate(t), e.onCreateModalCallbacks.length > 0 && (r("onSave -> has onCreateModalCallbacks"), e.onCreateModalCallbacks.forEach((_) => {
122
+ Z(_);
123
+ }))) : typeof e.onUpdate == "function" && (r("onSave -> trigger onUpdate callback"), e.onUpdate(t), e.onUpdateModalCallbacks.length > 0 && (r("onSave -> has onUpdateModalCallbacks"), e.onUpdateModalCallbacks.forEach((_) => {
124
+ Z(_);
125
+ }))), !e.insideModal && t.autoReloadId && (r("onSave -> autoReloadId detected: ", t.autoReloadId), e.readData.id = t.autoReloadId, r("onSave -> turning off create mode"), o.value = !1, F()), i(y, t);
126
+ }, P = () => {
127
+ d.value = !0, c.value = -1;
128
+ }, x = () => {
129
+ d.value = !1;
106
130
  };
107
- T({
131
+ f({
108
132
  doDrop: () => {
109
- B.value && typeof B.value.click == "function" && B.value.click();
133
+ U.value && typeof U.value.click == "function" && U.value.click();
110
134
  },
111
- doRefresh: M,
135
+ doRefresh: F,
112
136
  doSave: () => {
113
- C.value && typeof C.value.click == "function" && C.value.click();
137
+ B.value && typeof B.value.click == "function" && B.value.click();
114
138
  }
115
139
  });
116
- const A = d(() => !e.hiddenDrop && !o.value && f.value && p.value), H = d(() => o.value ? !1 : l.value ? !0 : !e.hiddenSave && f.value && p.value), P = d(() => !o.value && !l.value && p.value && !(e.dropDisabled && e.updateDisabled)), oe = d(() => !e.hiddenButtons && (H.value || A.value || P.value));
117
- return (t, a) => {
118
- const k = w("lkt-button"), re = w("lkt-field-switch"), z = w("lkt-http-info"), de = w("lkt-loader");
119
- return v(), h("article", ve, [
120
- ae.value ? (v(), h("header", fe, [
121
- E("h1", pe, j(u.title), 1),
122
- E("div", me, [
123
- q(t.$slots, "post-title", {
124
- item: r.value,
125
- loading: o.value
140
+ const z = n(() => !e.hiddenDrop && !d.value && p.value && m.value), A = n(() => d.value ? !1 : o.value ? !0 : !e.hiddenSave && p.value && m.value), G = n(() => !d.value && !o.value && m.value && !(e.dropDisabled && e.updateDisabled)), ne = n(() => !e.hiddenButtons && (A.value || z.value || G.value));
141
+ return n(() => u), (a, t) => {
142
+ const y = E("lkt-button"), _ = E("lkt-field-switch"), Q = E("lkt-http-info"), se = E("lkt-loader");
143
+ return v(), b("article", De, [
144
+ ue.value ? (v(), b("header", Se, [
145
+ J("h1", ye, K(a.title), 1),
146
+ J("div", _e, [
147
+ V(a.$slots, "post-title", {
148
+ item: u.value,
149
+ loading: d.value
126
150
  })
127
151
  ])
128
152
  ])) : g("", !0),
129
- O(E("div", ye, [
130
- l.value ? g("", !0) : O((v(), V(k, {
153
+ I(J("div", Me, [
154
+ o.value ? g("", !0) : I((v(), N(y, {
131
155
  key: 0,
132
- ref: (y) => B.value = y,
156
+ ref: (C) => U.value = C,
133
157
  palette: "danger",
134
- disabled: u.dropDisabled || !R.value,
135
- "confirm-modal": u.dropConfirm,
136
- "confirm-data": u.dropConfirmData,
137
- resource: u.dropResource,
138
- "resource-data": u.dropData,
139
- onLoading: F,
140
- onLoaded: J,
141
- onClick: le
158
+ disabled: a.dropDisabled || !R.value,
159
+ "confirm-modal": a.dropConfirm,
160
+ "confirm-data": a.dropConfirmData,
161
+ resource: a.dropResource,
162
+ "resource-data": a.dropData,
163
+ onLoading: P,
164
+ onLoaded: x,
165
+ onClick: de
142
166
  }, {
143
- default: G(() => [
144
- K(L)["button-drop"] ? q(t.$slots, "button-drop", {
167
+ default: W(() => [
168
+ X(T)["button-drop"] ? V(a.$slots, "button-drop", {
145
169
  key: 0,
146
- item: r.value,
147
- editMode: f.value,
148
- isCreate: l.value,
149
- canUpdate: _.value,
170
+ item: u.value,
171
+ editMode: p.value,
172
+ isCreate: o.value,
173
+ canUpdate: w.value,
150
174
  canDrop: R.value
151
- }) : (v(), h("span", he, j(u.dropText), 1))
175
+ }) : (v(), b("span", ge, K(a.dropText), 1))
152
176
  ]),
153
177
  _: 3
154
178
  }, 8, ["disabled", "confirm-modal", "confirm-data", "resource", "resource-data"])), [
155
- [I, A.value]
179
+ [L, z.value]
156
180
  ]),
157
- O(Q(k, {
158
- ref: (y) => C.value = y,
181
+ I(Y(y, {
182
+ ref: (C) => B.value = C,
159
183
  palette: "success",
160
- disabled: !x.value,
161
- "confirm-modal": Y.value,
162
- "confirm-data": Z.value,
163
- resource: $.value,
164
- "resource-data": ee.value,
165
- onLoading: F,
166
- onLoaded: J,
167
- onClick: ue
184
+ disabled: !H.value,
185
+ "confirm-modal": ae.value,
186
+ "confirm-data": te.value,
187
+ resource: q.value,
188
+ "resource-data": le.value,
189
+ onLoading: P,
190
+ onLoaded: x,
191
+ onClick: re
168
192
  }, {
169
- default: G(() => [
170
- K(L)["button-save"] ? q(t.$slots, "button-save", {
193
+ default: W(() => [
194
+ X(T)["button-save"] ? V(a.$slots, "button-save", {
171
195
  key: 0,
172
- item: r.value,
173
- editMode: f.value,
174
- isCreate: l.value,
175
- canUpdate: _.value,
196
+ item: u.value,
197
+ editMode: p.value,
198
+ isCreate: o.value,
199
+ canUpdate: w.value,
176
200
  canDrop: R.value
177
- }) : (v(), h("span", be, j(u.saveText), 1))
201
+ }) : (v(), b("span", Be, K(a.saveText), 1))
178
202
  ]),
179
203
  _: 3
180
204
  }, 8, ["disabled", "confirm-modal", "confirm-data", "resource", "resource-data"]), [
181
- [I, H.value]
205
+ [L, A.value]
182
206
  ]),
183
- O(Q(re, {
184
- modelValue: f.value,
185
- "onUpdate:modelValue": a[0] || (a[0] = (y) => f.value = y),
186
- label: u.editModeText
207
+ I(Y(_, {
208
+ modelValue: p.value,
209
+ "onUpdate:modelValue": t[0] || (t[0] = (C) => p.value = C),
210
+ label: a.editModeText
187
211
  }, null, 8, ["modelValue", "label"]), [
188
- [I, P.value]
212
+ [L, G.value]
189
213
  ])
190
214
  ], 512), [
191
- [I, oe.value]
215
+ [L, ne.value]
192
216
  ]),
193
- o.value ? g("", !0) : (v(), h("div", Se, [
194
- p.value ? (v(), h("div", ke, [
195
- m.value ? (v(), V(z, {
217
+ d.value ? g("", !0) : (v(), b("div", Ue, [
218
+ m.value ? (v(), b("div", we, [
219
+ h.value ? (v(), N(Q, {
196
220
  key: 0,
197
221
  code: c.value,
198
222
  quick: "",
199
223
  palette: c.value === 200 ? "success" : "danger",
200
224
  "can-close": "",
201
- onClose: a[1] || (a[1] = (y) => m.value = !1)
225
+ onClose: t[1] || (t[1] = (C) => h.value = !1)
202
226
  }, null, 8, ["code", "palette"])) : g("", !0),
203
- q(t.$slots, "item", {
204
- item: r.value,
205
- loading: o.value,
206
- editMode: f.value,
207
- isCreate: l.value,
208
- canUpdate: _.value,
209
- canDrop: R.value
227
+ V(a.$slots, "item", {
228
+ item: u.value,
229
+ loading: d.value,
230
+ editMode: p.value,
231
+ isCreate: o.value,
232
+ canUpdate: w.value,
233
+ canDrop: R.value,
234
+ itemBeingEdited: $.value
210
235
  })
211
- ])) : (v(), V(z, {
236
+ ])) : (v(), N(Q, {
212
237
  key: 1,
213
238
  code: c.value
214
239
  }, null, 8, ["code"]))
215
240
  ])),
216
- o.value ? (v(), V(de, { key: 2 })) : g("", !0)
241
+ d.value ? (v(), N(se, { key: 2 })) : g("", !0)
217
242
  ]);
218
243
  };
219
244
  }
220
- }), Oe = {
221
- install: (u, T = {}) => {
222
- u.component("lkt-item-crud") === void 0 && u.component("lkt-item-crud", ge);
245
+ }), $e = {
246
+ install: (l, f = {}) => {
247
+ l.component("lkt-item-crud") === void 0 && l.component("lkt-item-crud", Re);
223
248
  }
224
249
  };
225
250
  export {
226
- qe as debugLktItemCrud,
227
- Oe as default
251
+ Te as debugLktItemCrud,
252
+ $e as default
228
253
  };
@@ -0,0 +1,2 @@
1
+ import { ModalCallbackConfig } from "../types/ModalCallbackConfig";
2
+ export declare const runModalCallback: (cfg: ModalCallbackConfig) => void;
@@ -1,138 +1,76 @@
1
- declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
2
- modelValue: {
3
- type: ObjectConstructor;
4
- required: false;
5
- default: () => {};
6
- };
7
- title: {
8
- type: StringConstructor;
9
- default: string;
10
- };
11
- editModeText: {
12
- type: StringConstructor;
13
- default: string;
14
- };
15
- saveText: {
16
- type: StringConstructor;
17
- default: string;
18
- };
19
- dropText: {
20
- type: StringConstructor;
21
- default: string;
22
- };
23
- hiddenSave: {
24
- type: BooleanConstructor;
25
- default: boolean;
26
- };
27
- hiddenDrop: {
28
- type: BooleanConstructor;
29
- default: boolean;
30
- };
31
- hiddenButtons: {
32
- type: BooleanConstructor;
33
- default: boolean;
34
- };
35
- readResource: {
36
- type: StringConstructor;
37
- required: false;
38
- };
39
- createResource: {
40
- type: StringConstructor;
41
- required: false;
42
- };
43
- updateResource: {
44
- type: StringConstructor;
45
- required: false;
46
- };
47
- dropResource: {
48
- type: StringConstructor;
49
- required: false;
50
- };
51
- readData: {
52
- type: ObjectConstructor;
53
- required: false;
54
- default: () => {};
55
- };
56
- createData: {
57
- type: ObjectConstructor;
58
- required: false;
59
- default: () => {};
60
- };
61
- updateData: {
62
- type: ObjectConstructor;
63
- required: false;
64
- default: () => {};
65
- };
66
- dropData: {
67
- type: ObjectConstructor;
68
- required: false;
69
- default: () => {};
70
- };
71
- isCreate: {
72
- type: BooleanConstructor;
73
- default: boolean;
74
- };
75
- createConfirm: {
76
- type: StringConstructor;
77
- default: string;
78
- };
79
- updateConfirm: {
80
- type: StringConstructor;
81
- default: string;
82
- };
83
- dropConfirm: {
84
- type: StringConstructor;
85
- default: string;
86
- };
87
- createConfirmData: {
88
- type: ObjectConstructor;
89
- default: () => {};
90
- };
91
- updateConfirmData: {
92
- type: ObjectConstructor;
93
- default: () => {};
94
- };
95
- dropConfirmData: {
96
- type: ObjectConstructor;
97
- default: () => {};
98
- };
99
- createDisabled: {
100
- type: BooleanConstructor;
101
- default: boolean;
102
- };
103
- updateDisabled: {
104
- type: BooleanConstructor;
105
- default: boolean;
106
- };
107
- dropDisabled: {
108
- type: BooleanConstructor;
109
- default: boolean;
110
- };
111
- saveValidator: {
112
- type: FunctionConstructor;
113
- required: false;
114
- default: () => boolean;
115
- };
116
- beforeEmitUpdate: {
117
- type: FunctionConstructor;
118
- required: false;
119
- default: () => boolean;
120
- };
121
- onCreate: {
122
- type: FunctionConstructor;
123
- required: false;
124
- default: () => boolean;
125
- };
126
- onUpdate: {
127
- type: FunctionConstructor;
128
- required: false;
129
- default: () => boolean;
130
- };
131
- insideModal: {
132
- type: BooleanConstructor;
133
- default: boolean;
134
- };
135
- }, {
1
+ import { LktObject } from "lkt-ts-interfaces";
2
+ import { ModalCallbackConfig } from "../types/ModalCallbackConfig";
3
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
4
+ modelValue: LktObject;
5
+ title: string;
6
+ editModeText: string;
7
+ saveText: string;
8
+ dropText: string;
9
+ hiddenSave: boolean;
10
+ hiddenDrop: boolean;
11
+ hiddenButtons: boolean;
12
+ readResource: string;
13
+ createResource: string;
14
+ updateResource: string;
15
+ dropResource: string;
16
+ readData: LktObject;
17
+ createData: LktObject;
18
+ updateData: LktObject;
19
+ dropData: LktObject;
20
+ isCreate: boolean;
21
+ createConfirm: string;
22
+ updateConfirm: string;
23
+ dropConfirm: string;
24
+ createConfirmData: LktObject;
25
+ updateConfirmData: LktObject;
26
+ dropConfirmData: LktObject;
27
+ createDisabled: boolean;
28
+ updateDisabled: boolean;
29
+ dropDisabled: boolean;
30
+ saveValidator: Function;
31
+ beforeEmitUpdate: Function | undefined;
32
+ onCreate: Function | undefined;
33
+ onUpdate: Function | undefined;
34
+ insideModal: boolean;
35
+ dataStateConfig: LktObject;
36
+ onCreateModalCallbacks: ModalCallbackConfig[];
37
+ onUpdateModalCallbacks: ModalCallbackConfig[];
38
+ }>, {
39
+ modelValue: () => {};
40
+ title: string;
41
+ editModeText: string;
42
+ saveText: string;
43
+ dropText: string;
44
+ hiddenSave: boolean;
45
+ hiddenDrop: boolean;
46
+ hiddenButtons: boolean;
47
+ readResource: string;
48
+ createResource: string;
49
+ updateResource: string;
50
+ dropResource: string;
51
+ readData: () => {};
52
+ createData: () => {};
53
+ updateData: () => {};
54
+ dropData: () => {};
55
+ isCreate: boolean;
56
+ createConfirm: string;
57
+ updateConfirm: string;
58
+ dropConfirm: string;
59
+ createConfirmData: () => {};
60
+ updateConfirmData: () => {};
61
+ dropConfirmData: () => {};
62
+ createDisabled: boolean;
63
+ updateDisabled: boolean;
64
+ dropDisabled: boolean;
65
+ saveValidator: () => true;
66
+ beforeEmitUpdate: undefined;
67
+ onCreate: undefined;
68
+ onUpdate: undefined;
69
+ insideModal: boolean;
70
+ dataStateConfig: () => {};
71
+ onCreateModalCallbacks: () => never[];
72
+ onUpdateModalCallbacks: () => never[];
73
+ }>, {
136
74
  doDrop: () => void;
137
75
  doRefresh: () => Promise<void>;
138
76
  doSave: () => void;
@@ -146,207 +84,168 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
146
84
  create: (...args: any[]) => void;
147
85
  perms: (...args: any[]) => void;
148
86
  "modified-data": (...args: any[]) => void;
149
- }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
150
- modelValue: {
151
- type: ObjectConstructor;
152
- required: false;
153
- default: () => {};
154
- };
155
- title: {
156
- type: StringConstructor;
157
- default: string;
158
- };
159
- editModeText: {
160
- type: StringConstructor;
161
- default: string;
162
- };
163
- saveText: {
164
- type: StringConstructor;
165
- default: string;
166
- };
167
- dropText: {
168
- type: StringConstructor;
169
- default: string;
170
- };
171
- hiddenSave: {
172
- type: BooleanConstructor;
173
- default: boolean;
174
- };
175
- hiddenDrop: {
176
- type: BooleanConstructor;
177
- default: boolean;
178
- };
179
- hiddenButtons: {
180
- type: BooleanConstructor;
181
- default: boolean;
182
- };
183
- readResource: {
184
- type: StringConstructor;
185
- required: false;
186
- };
187
- createResource: {
188
- type: StringConstructor;
189
- required: false;
190
- };
191
- updateResource: {
192
- type: StringConstructor;
193
- required: false;
194
- };
195
- dropResource: {
196
- type: StringConstructor;
197
- required: false;
198
- };
199
- readData: {
200
- type: ObjectConstructor;
201
- required: false;
202
- default: () => {};
203
- };
204
- createData: {
205
- type: ObjectConstructor;
206
- required: false;
207
- default: () => {};
208
- };
209
- updateData: {
210
- type: ObjectConstructor;
211
- required: false;
212
- default: () => {};
213
- };
214
- dropData: {
215
- type: ObjectConstructor;
216
- required: false;
217
- default: () => {};
218
- };
219
- isCreate: {
220
- type: BooleanConstructor;
221
- default: boolean;
222
- };
223
- createConfirm: {
224
- type: StringConstructor;
225
- default: string;
226
- };
227
- updateConfirm: {
228
- type: StringConstructor;
229
- default: string;
230
- };
231
- dropConfirm: {
232
- type: StringConstructor;
233
- default: string;
234
- };
235
- createConfirmData: {
236
- type: ObjectConstructor;
237
- default: () => {};
238
- };
239
- updateConfirmData: {
240
- type: ObjectConstructor;
241
- default: () => {};
242
- };
243
- dropConfirmData: {
244
- type: ObjectConstructor;
245
- default: () => {};
246
- };
247
- createDisabled: {
248
- type: BooleanConstructor;
249
- default: boolean;
250
- };
251
- updateDisabled: {
252
- type: BooleanConstructor;
253
- default: boolean;
254
- };
255
- dropDisabled: {
256
- type: BooleanConstructor;
257
- default: boolean;
258
- };
259
- saveValidator: {
260
- type: FunctionConstructor;
261
- required: false;
262
- default: () => boolean;
263
- };
264
- beforeEmitUpdate: {
265
- type: FunctionConstructor;
266
- required: false;
267
- default: () => boolean;
268
- };
269
- onCreate: {
270
- type: FunctionConstructor;
271
- required: false;
272
- default: () => boolean;
273
- };
274
- onUpdate: {
275
- type: FunctionConstructor;
276
- required: false;
277
- default: () => boolean;
278
- };
279
- insideModal: {
280
- type: BooleanConstructor;
281
- default: boolean;
282
- };
283
- }>> & {
87
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
88
+ modelValue: LktObject;
89
+ title: string;
90
+ editModeText: string;
91
+ saveText: string;
92
+ dropText: string;
93
+ hiddenSave: boolean;
94
+ hiddenDrop: boolean;
95
+ hiddenButtons: boolean;
96
+ readResource: string;
97
+ createResource: string;
98
+ updateResource: string;
99
+ dropResource: string;
100
+ readData: LktObject;
101
+ createData: LktObject;
102
+ updateData: LktObject;
103
+ dropData: LktObject;
104
+ isCreate: boolean;
105
+ createConfirm: string;
106
+ updateConfirm: string;
107
+ dropConfirm: string;
108
+ createConfirmData: LktObject;
109
+ updateConfirmData: LktObject;
110
+ dropConfirmData: LktObject;
111
+ createDisabled: boolean;
112
+ updateDisabled: boolean;
113
+ dropDisabled: boolean;
114
+ saveValidator: Function;
115
+ beforeEmitUpdate: Function | undefined;
116
+ onCreate: Function | undefined;
117
+ onUpdate: Function | undefined;
118
+ insideModal: boolean;
119
+ dataStateConfig: LktObject;
120
+ onCreateModalCallbacks: ModalCallbackConfig[];
121
+ onUpdateModalCallbacks: ModalCallbackConfig[];
122
+ }>, {
123
+ modelValue: () => {};
124
+ title: string;
125
+ editModeText: string;
126
+ saveText: string;
127
+ dropText: string;
128
+ hiddenSave: boolean;
129
+ hiddenDrop: boolean;
130
+ hiddenButtons: boolean;
131
+ readResource: string;
132
+ createResource: string;
133
+ updateResource: string;
134
+ dropResource: string;
135
+ readData: () => {};
136
+ createData: () => {};
137
+ updateData: () => {};
138
+ dropData: () => {};
139
+ isCreate: boolean;
140
+ createConfirm: string;
141
+ updateConfirm: string;
142
+ dropConfirm: string;
143
+ createConfirmData: () => {};
144
+ updateConfirmData: () => {};
145
+ dropConfirmData: () => {};
146
+ createDisabled: boolean;
147
+ updateDisabled: boolean;
148
+ dropDisabled: boolean;
149
+ saveValidator: () => true;
150
+ beforeEmitUpdate: undefined;
151
+ onCreate: undefined;
152
+ onUpdate: undefined;
153
+ insideModal: boolean;
154
+ dataStateConfig: () => {};
155
+ onCreateModalCallbacks: () => never[];
156
+ onUpdateModalCallbacks: () => never[];
157
+ }>>> & {
284
158
  onError?: ((...args: any[]) => any) | undefined;
285
159
  onDrop?: ((...args: any[]) => any) | undefined;
160
+ onCreate?: ((...args: any[]) => any) | undefined;
286
161
  onUpdate?: ((...args: any[]) => any) | undefined;
287
162
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
288
163
  "onUpdate:isCreate"?: ((...args: any[]) => any) | undefined;
289
164
  onRead?: ((...args: any[]) => any) | undefined;
290
- onCreate?: ((...args: any[]) => any) | undefined;
291
165
  onPerms?: ((...args: any[]) => any) | undefined;
292
166
  "onModified-data"?: ((...args: any[]) => any) | undefined;
293
167
  }, {
294
168
  title: string;
295
- onUpdate: Function;
296
- onCreate: Function;
297
- modelValue: Record<string, any>;
169
+ modelValue: LktObject;
298
170
  editModeText: string;
299
171
  saveText: string;
300
172
  dropText: string;
301
173
  hiddenSave: boolean;
302
174
  hiddenDrop: boolean;
303
175
  hiddenButtons: boolean;
304
- readData: Record<string, any>;
305
- createData: Record<string, any>;
306
- updateData: Record<string, any>;
307
- dropData: Record<string, any>;
176
+ readResource: string;
177
+ createResource: string;
178
+ updateResource: string;
179
+ dropResource: string;
180
+ readData: LktObject;
181
+ createData: LktObject;
182
+ updateData: LktObject;
183
+ dropData: LktObject;
308
184
  isCreate: boolean;
309
185
  createConfirm: string;
310
186
  updateConfirm: string;
311
187
  dropConfirm: string;
312
- createConfirmData: Record<string, any>;
313
- updateConfirmData: Record<string, any>;
314
- dropConfirmData: Record<string, any>;
188
+ createConfirmData: LktObject;
189
+ updateConfirmData: LktObject;
190
+ dropConfirmData: LktObject;
315
191
  createDisabled: boolean;
316
192
  updateDisabled: boolean;
317
193
  dropDisabled: boolean;
318
194
  saveValidator: Function;
319
- beforeEmitUpdate: Function;
195
+ beforeEmitUpdate: Function | undefined;
196
+ onCreate: Function | undefined;
197
+ onUpdate: Function | undefined;
320
198
  insideModal: boolean;
199
+ dataStateConfig: LktObject;
200
+ onCreateModalCallbacks: ModalCallbackConfig[];
201
+ onUpdateModalCallbacks: ModalCallbackConfig[];
321
202
  }, {}>, {
322
203
  "post-title"?(_: {
323
- item: Record<string, any>;
204
+ item: LktObject;
324
205
  loading: boolean;
325
206
  }): any;
326
207
  "button-drop"?(_: {
327
- item: Record<string, any>;
208
+ item: LktObject;
328
209
  editMode: boolean;
329
210
  isCreate: false;
330
211
  canUpdate: boolean;
331
212
  canDrop: boolean;
332
213
  }): any;
333
214
  "button-save"?(_: {
334
- item: Record<string, any>;
215
+ item: LktObject;
335
216
  editMode: boolean;
336
217
  isCreate: boolean;
337
218
  canUpdate: boolean;
338
219
  canDrop: boolean;
339
220
  }): any;
340
221
  item?(_: {
341
- item: Record<string, any>;
222
+ item: LktObject;
342
223
  loading: false;
343
224
  editMode: boolean;
344
225
  isCreate: boolean;
345
226
  canUpdate: boolean;
346
227
  canDrop: boolean;
228
+ itemBeingEdited: boolean;
347
229
  }): any;
348
230
  }>;
349
231
  export default _default;
232
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
233
+ type __VLS_TypePropsToRuntimeProps<T> = {
234
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
235
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
236
+ } : {
237
+ type: import('vue').PropType<T[K]>;
238
+ required: true;
239
+ };
240
+ };
241
+ type __VLS_WithDefaults<P, D> = {
242
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
243
+ default: D[K];
244
+ }> : P[K];
245
+ };
246
+ type __VLS_Prettify<T> = {
247
+ [K in keyof T]: T[K];
248
+ } & {};
350
249
  type __VLS_WithTemplateSlots<T, S> = T & {
351
250
  new (): {
352
251
  $slots: S;
@@ -0,0 +1,8 @@
1
+ import { LktObject } from "lkt-ts-interfaces";
2
+ export type ModalCallbackConfig = {
3
+ modalName: string;
4
+ modalKey?: '_' | string | number;
5
+ action: 'refresh' | 'close' | 'reOpen' | 'exec' | 'open';
6
+ method?: string;
7
+ args?: LktObject;
8
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lkt-item-crud",
3
- "version": "1.1.16",
3
+ "version": "1.1.18",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "module": "./dist/build.js",
@@ -11,7 +11,10 @@
11
11
  "./styles": "./dist/style.css"
12
12
  },
13
13
  "types": "./dist/index.d.ts",
14
- "files": ["dist/*", "src/**/*.vue"],
14
+ "files": [
15
+ "dist/*",
16
+ "src/**/*.vue"
17
+ ],
15
18
  "license": "MIT",
16
19
  "sideEffects": false,
17
20
  "scripts": {
@@ -40,6 +43,7 @@
40
43
  "lkt-http-client": "^1.0.12",
41
44
  "lkt-http-info": "^1.0.2",
42
45
  "lkt-loader": "^1.0.2",
46
+ "lkt-modal": "^1.1.1",
43
47
  "lkt-string-tools": "^1.0.2",
44
48
  "lkt-ts-interfaces": "^1.0.2",
45
49
  "path": "^0.12.7"
@@ -1,54 +1,82 @@
1
- <script lang="ts">
2
- export default {name: "LktItemCrud", inheritAttrs: false}
3
- </script>
4
-
5
1
  <script setup lang="ts">
6
- import {ref, watch, useSlots, computed} from "vue";
2
+ import {ref, watch, useSlots, computed, nextTick} from "vue";
7
3
  import {httpCall, HTTPResponse} from "lkt-http-client";
8
4
  import {DataState} from "lkt-data-state";
9
5
  import {debug} from "../functions/debug";
10
-
11
- const props = defineProps({
12
- modelValue: {type: Object, required: false, default: () => ({})},
13
- title: {type: String, default: ''},
14
-
15
- editModeText: {type: String, default: 'Edition Mode'},
16
- saveText: {type: String, default: 'Save'},
17
- dropText: {type: String, default: 'Delete'},
18
- hiddenSave: {type: Boolean, default: false},
19
- hiddenDrop: {type: Boolean, default: false},
20
- hiddenButtons: {type: Boolean, default: false},
21
-
22
- readResource: {type: String, required: false},
23
- createResource: {type: String, required: false},
24
- updateResource: {type: String, required: false},
25
- dropResource: {type: String, required: false},
26
-
27
- readData: {type: Object, required: false, default: () => ({})},
28
- createData: {type: Object, required: false, default: () => ({})},
29
- updateData: {type: Object, required: false, default: () => ({})},
30
- dropData: {type: Object, required: false, default: () => ({})},
31
-
32
- isCreate: {type: Boolean, default: false},
33
- createConfirm: {type: String, default: ''},
34
- updateConfirm: {type: String, default: ''},
35
- dropConfirm: {type: String, default: ''},
36
-
37
- createConfirmData: {type: Object, default: () => ({})},
38
- updateConfirmData: {type: Object, default: () => ({})},
39
- dropConfirmData: {type: Object, default: () => ({})},
40
-
41
- createDisabled: {type: Boolean, default: false},
42
- updateDisabled: {type: Boolean, default: false},
43
- dropDisabled: {type: Boolean, default: false},
44
-
45
- saveValidator: {type: Function, required: false, default: () => true},
46
- beforeEmitUpdate: {type: Function, required: false, default: () => true},
47
-
48
- onCreate: {type: Function, required: false, default: () => true},
49
- onUpdate: {type: Function, required: false, default: () => true},
50
-
51
- insideModal: {type: Boolean, default: false},
6
+ import {LktObject} from "lkt-ts-interfaces";
7
+ import {ModalCallbackConfig} from "../types/ModalCallbackConfig";
8
+ import {runModalCallback} from "../functions/modalCallbacks";
9
+
10
+ const props = withDefaults(defineProps<{
11
+ modelValue: LktObject
12
+ title: string
13
+ editModeText: string
14
+ saveText: string
15
+ dropText: string
16
+ hiddenSave: boolean
17
+ hiddenDrop: boolean
18
+ hiddenButtons: boolean
19
+ readResource: string
20
+ createResource: string
21
+ updateResource: string
22
+ dropResource: string
23
+ readData: LktObject
24
+ createData: LktObject
25
+ updateData: LktObject
26
+ dropData: LktObject
27
+ isCreate: boolean
28
+ createConfirm: string
29
+ updateConfirm: string
30
+ dropConfirm: string
31
+ createConfirmData: LktObject
32
+ updateConfirmData: LktObject
33
+ dropConfirmData: LktObject
34
+ createDisabled: boolean
35
+ updateDisabled: boolean
36
+ dropDisabled: boolean
37
+ saveValidator: Function
38
+ beforeEmitUpdate: Function|undefined
39
+ onCreate: Function|undefined
40
+ onUpdate: Function|undefined
41
+ insideModal: boolean
42
+ dataStateConfig: LktObject
43
+ onCreateModalCallbacks: ModalCallbackConfig[]
44
+ onUpdateModalCallbacks: ModalCallbackConfig[]
45
+ }>(), {
46
+ modelValue: () => ({}),
47
+ title: '',
48
+ editModeText: 'Edition Mode',
49
+ saveText: 'Save',
50
+ dropText: 'Delete',
51
+ hiddenSave: false,
52
+ hiddenDrop: false,
53
+ hiddenButtons: false,
54
+ readResource: '',
55
+ createResource: '',
56
+ updateResource: '',
57
+ dropResource: '',
58
+ readData: () => ({}),
59
+ createData: () => ({}),
60
+ updateData: () => ({}),
61
+ dropData: () => ({}),
62
+ isCreate: false,
63
+ createConfirm: '',
64
+ updateConfirm: '',
65
+ dropConfirm: '',
66
+ createConfirmData: () => ({}),
67
+ updateConfirmData: () => ({}),
68
+ dropConfirmData: () => ({}),
69
+ createDisabled: false,
70
+ updateDisabled: false,
71
+ dropDisabled: false,
72
+ saveValidator: () => true,
73
+ beforeEmitUpdate: undefined,
74
+ onCreate: undefined,
75
+ onUpdate: undefined,
76
+ insideModal: false,
77
+ dataStateConfig: () => ({}),
78
+ onCreateModalCallbacks: () => [],
79
+ onUpdateModalCallbacks: () => [],
52
80
  });
53
81
 
54
82
  const slots = useSlots();
@@ -66,8 +94,9 @@ const isLoading = ref(true),
66
94
  httpStatus = ref(200),
67
95
  saveButton = ref(null),
68
96
  dropButton = ref(null),
69
- dataState = ref(new DataState(item.value)),
70
- createMode = ref(props.isCreate);
97
+ dataState = ref(new DataState(item.value, props.dataStateConfig)),
98
+ createMode = ref(props.isCreate),
99
+ itemBeingEdited = ref(false);
71
100
 
72
101
  const saveConfirm = computed(() => {
73
102
  return createMode.value
@@ -140,6 +169,7 @@ watch(() => props.modelValue, v => {
140
169
  }, {deep: true});
141
170
 
142
171
  watch(item, (v) => {
172
+ itemBeingEdited.value = true;
143
173
  debug('item updated ->', item.value);
144
174
  if (typeof props.beforeEmitUpdate === 'function') {
145
175
  debug('item updated -> has beforeEmitUpdate');
@@ -150,6 +180,7 @@ watch(item, (v) => {
150
180
  emit('update:modelValue', item.value);
151
181
  debug('item updated -> update dataState');
152
182
  dataState.value.increment(v);
183
+ nextTick(() => itemBeingEdited.value = false)
153
184
  }, {deep: true});
154
185
 
155
186
  watch(perms, () => emit('perms', perms.value));
@@ -207,11 +238,23 @@ const onDrop = ($event: PointerEvent, r: HTTPResponse) => {
207
238
  if (typeof props.onCreate === 'function') {
208
239
  debug('onSave -> trigger onCreate callback');
209
240
  props.onCreate(r);
241
+ if (props.onCreateModalCallbacks.length > 0) {
242
+ debug('onSave -> has onCreateModalCallbacks');
243
+ props.onCreateModalCallbacks.forEach(cb => {
244
+ runModalCallback(cb);
245
+ });
246
+ }
210
247
  }
211
248
  } else {
212
249
  if (typeof props.onUpdate === 'function') {
213
250
  debug('onSave -> trigger onUpdate callback');
214
251
  props.onUpdate(r);
252
+ if (props.onUpdateModalCallbacks.length > 0) {
253
+ debug('onSave -> has onUpdateModalCallbacks');
254
+ props.onUpdateModalCallbacks.forEach(cb => {
255
+ runModalCallback(cb);
256
+ });
257
+ }
215
258
  }
216
259
  }
217
260
 
@@ -269,7 +312,10 @@ const showDropButton = computed(() => {
269
312
  }),
270
313
  showButtons = computed(() => {
271
314
  return !props.hiddenButtons && (showSaveButton.value || showDropButton.value || showSwitchButton.value);
272
- })
315
+ }),
316
+ computedItem = computed(() => {
317
+ return item;
318
+ });
273
319
  </script>
274
320
 
275
321
  <template>
@@ -334,7 +380,8 @@ const showDropButton = computed(() => {
334
380
  <slot name="item" v-bind:item="item" v-bind:loading="isLoading" v-bind:edit-mode="editMode"
335
381
  v-bind:is-create="createMode"
336
382
  v-bind:can-update="canUpdate"
337
- v-bind:can-drop="canDrop"></slot>
383
+ v-bind:can-drop="canDrop"
384
+ v-bind:item-being-edited="itemBeingEdited"></slot>
338
385
  </div>
339
386
  <lkt-http-info :code="httpStatus" v-else></lkt-http-info>
340
387
  </div>