lkt-item-crud 1.1.15 → 1.1.17

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