lkt-item-crud 1.0.8 → 1.0.10

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.
@@ -1,11 +1,210 @@
1
- import o from "lkt-button";
2
- import n from "lkt-http-info";
3
- import e from "lkt-loader";
4
- const i = {
5
- install: (t, m = {}) => {
6
- t.component("lkt-item-crud") === void 0 && t.component("lkt-item-crud", i), t.component("lkt-button") === void 0 && t.use(o), t.component("lkt-http-info") === void 0 && t.use(n), t.component("lkt-loader") === void 0 && t.use(e);
1
+ import { defineComponent as le, useSlots as ue, ref as i, computed as r, watch as B, resolveComponent as w, openBlock as d, createElementBlock as p, createElementVNode as H, toDisplayString as q, renderSlot as R, createCommentVNode as k, withDirectives as O, createBlock as V, withCtx as A, unref as F, vShow as I, createVNode as P } from "vue";
2
+ import { httpCall as oe } from "lkt-http-client";
3
+ import { DataState as re } from "lkt-data-state";
4
+ import de from "lkt-button";
5
+ import se from "lkt-http-info";
6
+ import ne from "lkt-loader";
7
+ const ie = { class: "lkt-item-crud" }, ce = {
8
+ key: 0,
9
+ class: "lkt-item-crud_header"
10
+ }, ve = { class: "lkt-item-crud_header-title" }, fe = { class: "lkt-item-crud_header-slot" }, pe = {
11
+ key: 1,
12
+ class: "lkt-item-crud-buttons"
13
+ }, me = { key: 1 }, ke = { key: 1 }, he = {
14
+ key: 2,
15
+ class: "lkt-item-crud_content"
16
+ }, ye = {
17
+ key: 0,
18
+ class: "lkt-grid-1"
19
+ }, Se = { name: "LktItemCrud", inheritAttrs: !1 }, Ce = /* @__PURE__ */ le({
20
+ ...Se,
21
+ props: {
22
+ modelValue: { type: Object, required: !1, default: () => ({}) },
23
+ title: { type: String, default: "" },
24
+ editModeText: { type: String, default: "Edition Mode" },
25
+ saveText: { type: String, default: "Save" },
26
+ dropText: { type: String, default: "Delete" },
27
+ hiddenSave: { type: Boolean, default: !1 },
28
+ hiddenDrop: { type: Boolean, default: !1 },
29
+ hiddenButtons: { type: Boolean, default: !1 },
30
+ readResource: { type: String, required: !1 },
31
+ createResource: { type: String, required: !1 },
32
+ updateResource: { type: String, required: !1 },
33
+ dropResource: { type: String, required: !1 },
34
+ readData: { type: Object, required: !1, default: () => ({}) },
35
+ createData: { type: Object, required: !1, default: () => ({}) },
36
+ updateData: { type: Object, required: !1, default: () => ({}) },
37
+ dropData: { type: Object, required: !1, default: () => ({}) },
38
+ isCreate: { type: Boolean, default: !1 },
39
+ createConfirm: { type: String, default: "" },
40
+ updateConfirm: { type: String, default: "" },
41
+ dropConfirm: { type: String, default: "" },
42
+ createDisabled: { type: Boolean, default: !1 },
43
+ updateDisabled: { type: Boolean, default: !1 },
44
+ dropDisabled: { type: Boolean, default: !1 },
45
+ saveValidator: { type: Function, required: !1, default: () => !0 }
46
+ },
47
+ emits: ["update:modelValue", "read", "create", "update", "drop", "perms", "error", "modified-data"],
48
+ setup(t, { expose: M, emit: z }) {
49
+ const e = t, _ = ue(), s = z;
50
+ let G = [];
51
+ const l = i(!0), o = i(e.modelValue), h = i(G), c = i(!1), v = i(!1), f = i(!1), n = i(200), S = i(null), C = i(null), y = i(new re(o.value)), K = r(() => e.isCreate ? e.createConfirm : e.updateConfirm), N = r(() => e.isCreate ? e.createResource : e.updateResource), Q = r(() => e.isCreate ? { ...e.createData, ...JSON.parse(JSON.stringify(o.value)) } : { ...e.updateData, ...JSON.parse(JSON.stringify(o.value)) }), W = r(() => e.isCreate ? e.createDisabled : e.updateDisabled), D = r(() => !e.isCreate && h.value.includes("update")), b = r(() => !e.isCreate && h.value.includes("drop")), L = async () => {
52
+ l.value = !0, n.value = -1, f.value = !1;
53
+ try {
54
+ const a = await oe(e.readResource, e.readData);
55
+ if (l.value = !1, n.value = a.httpStatus, !a.success) {
56
+ v.value = !1, n.value = a.httpStatus, s("error", a.httpStatus);
57
+ return;
58
+ }
59
+ v.value = !0, o.value = a.data, h.value = a.perms, y.value.increment(o.value).turnStoredIntoOriginal(), s("read", a);
60
+ } catch {
61
+ l.value = !1, v.value = !1, n.value = 404, s("error", 404);
62
+ return;
63
+ }
64
+ }, X = r(() => l.value ? !1 : e.title || !!_["post-title"]);
65
+ B(() => e.modelValue, (a) => {
66
+ o.value = a, y.value.increment(a);
67
+ }, { deep: !0 }), B(o, (a) => {
68
+ s("update:modelValue", o.value), y.value.increment(a);
69
+ }, { deep: !0 }), B(h, () => s("perms", h.value));
70
+ const T = r(() => W.value || !e.isCreate && !D.value || typeof e.saveValidator == "function" && !e.saveValidator(o.value) ? !1 : y.value.changed());
71
+ B(T, (a) => s("modified-data", a)), e.readResource && !e.isCreate ? L() : e.isCreate && (v.value = !0, c.value = !0, l.value = !1);
72
+ const Y = (a, u) => {
73
+ if (l.value = !1, n.value = u.httpStatus, !u.success) {
74
+ f.value = !0, s("error", u.httpStatus);
75
+ return;
76
+ }
77
+ f.value = !0, s("drop", u);
78
+ }, Z = (a, u) => {
79
+ if (N.value) {
80
+ if (l.value = !1, n.value = u.httpStatus, !u.success) {
81
+ f.value = !0, s("error", u.httpStatus);
82
+ return;
83
+ }
84
+ f.value = !0;
85
+ }
86
+ let g = e.isCreate ? "create" : "update";
87
+ e.isCreate || y.value.turnStoredIntoOriginal(), u.autoReloadId && (e.readData.id = u.autoReloadId, L()), s(g, u);
88
+ }, $ = () => {
89
+ l.value = !0, n.value = -1;
90
+ }, x = () => {
91
+ l.value = !1;
92
+ };
93
+ M({
94
+ doDrop: () => {
95
+ C.value && typeof C.value.click == "function" && C.value.click();
96
+ },
97
+ doRefresh: L,
98
+ doSave: () => {
99
+ S.value && typeof S.value.click == "function" && S.value.click();
100
+ }
101
+ });
102
+ const j = r(() => !e.hiddenDrop && !l.value && c.value && v.value), U = r(() => !e.hiddenSave && !l.value && c.value && v.value), J = r(() => !l.value && !e.isCreate && v.value), ee = r(() => !e.hiddenButtons && (U.value || j.value || J.value));
103
+ return (a, u) => {
104
+ const g = w("lkt-button"), te = w("lkt-field-switch"), E = w("lkt-http-info"), ae = w("lkt-loader");
105
+ return d(), p("article", ie, [
106
+ X.value ? (d(), p("header", ce, [
107
+ H("h1", ve, q(t.title), 1),
108
+ H("div", fe, [
109
+ R(a.$slots, "post-title", {
110
+ item: o.value,
111
+ loading: l.value
112
+ })
113
+ ])
114
+ ])) : k("", !0),
115
+ ee.value ? (d(), p("div", pe, [
116
+ t.isCreate ? k("", !0) : O((d(), V(g, {
117
+ key: 0,
118
+ ref: (m) => C.value = m,
119
+ palette: "danger",
120
+ disabled: t.dropDisabled || !b.value,
121
+ "confirm-modal": t.dropConfirm,
122
+ resource: t.dropResource,
123
+ "resource-data": t.dropData,
124
+ onLoading: $,
125
+ onLoaded: x,
126
+ onClick: Y
127
+ }, {
128
+ default: A(() => [
129
+ F(_)["button-drop"] ? R(a.$slots, "button-drop", {
130
+ key: 0,
131
+ item: o.value,
132
+ editMode: c.value,
133
+ isCreate: t.isCreate,
134
+ canUpdate: D.value,
135
+ canDrop: b.value
136
+ }) : (d(), p("span", me, q(t.dropText), 1))
137
+ ]),
138
+ _: 3
139
+ }, 8, ["disabled", "confirm-modal", "resource", "resource-data"])), [
140
+ [I, j.value]
141
+ ]),
142
+ O(P(g, {
143
+ ref: (m) => S.value = m,
144
+ palette: "success",
145
+ disabled: !T.value,
146
+ "confirm-modal": K.value,
147
+ resource: N.value,
148
+ "resource-data": Q.value,
149
+ onLoading: $,
150
+ onLoaded: x,
151
+ onClick: Z
152
+ }, {
153
+ default: A(() => [
154
+ F(_)["button-save"] ? R(a.$slots, "button-save", {
155
+ key: 0,
156
+ item: o.value,
157
+ editMode: c.value,
158
+ isCreate: t.isCreate,
159
+ canUpdate: D.value,
160
+ canDrop: b.value
161
+ }) : (d(), p("span", ke, q(t.saveText), 1))
162
+ ]),
163
+ _: 3
164
+ }, 8, ["disabled", "confirm-modal", "resource", "resource-data"]), [
165
+ [I, U.value]
166
+ ]),
167
+ O(P(te, {
168
+ modelValue: c.value,
169
+ "onUpdate:modelValue": u[0] || (u[0] = (m) => c.value = m),
170
+ label: t.editModeText
171
+ }, null, 8, ["modelValue", "label"]), [
172
+ [I, J.value]
173
+ ])
174
+ ])) : k("", !0),
175
+ l.value ? k("", !0) : (d(), p("div", he, [
176
+ v.value ? (d(), p("div", ye, [
177
+ f.value ? (d(), V(E, {
178
+ key: 0,
179
+ code: n.value,
180
+ quick: "",
181
+ palette: n.value === 200 ? "success" : "danger",
182
+ "can-close": "",
183
+ onClose: u[1] || (u[1] = (m) => f.value = !1)
184
+ }, null, 8, ["code", "palette"])) : k("", !0),
185
+ R(a.$slots, "item", {
186
+ item: o.value,
187
+ loading: l.value,
188
+ editMode: c.value,
189
+ isCreate: t.isCreate,
190
+ canUpdate: D.value,
191
+ canDrop: b.value
192
+ })
193
+ ])) : (d(), V(E, {
194
+ key: 1,
195
+ code: n.value
196
+ }, null, 8, ["code"]))
197
+ ])),
198
+ l.value ? (d(), V(ae, { key: 3 })) : k("", !0)
199
+ ]);
200
+ };
201
+ }
202
+ });
203
+ const Le = {
204
+ install: (t, M = {}) => {
205
+ t.component("lkt-item-crud") === void 0 && t.component("lkt-item-crud", Ce), t.component("lkt-button") === void 0 && t.use(de), t.component("lkt-http-info") === void 0 && t.use(se), t.component("lkt-loader") === void 0 && t.use(ne);
7
206
  }
8
207
  };
9
208
  export {
10
- i as default
209
+ Le as default
11
210
  };
@@ -1 +1 @@
1
- (function(e,o){typeof exports=="object"&&typeof module<"u"?module.exports=o(require("lkt-button"),require("lkt-http-info"),require("lkt-loader")):typeof define=="function"&&define.amd?define(["lkt-button","lkt-http-info","lkt-loader"],o):(e=typeof globalThis<"u"?globalThis:e||self,e.LktItemCrud=o(e.LktButton,e.LktHttpInfo,e.LktLoader))})(this,function(e,o,d){"use strict";const n=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},i=n(e),f=n(o),l=n(d),k="",u={install:(t,r={})=>{t.component("lkt-item-crud")===void 0&&t.component("lkt-item-crud",u),t.component("lkt-button")===void 0&&t.use(i.default),t.component("lkt-http-info")===void 0&&t.use(f.default),t.component("lkt-loader")===void 0&&t.use(l.default)}};return u});
1
+ (function(e,p){typeof exports=="object"&&typeof module<"u"?module.exports=p(require("vue"),require("lkt-http-client"),require("lkt-data-state"),require("lkt-button"),require("lkt-http-info"),require("lkt-loader")):typeof define=="function"&&define.amd?define(["vue","lkt-http-client","lkt-data-state","lkt-button","lkt-http-info","lkt-loader"],p):(e=typeof globalThis<"u"?globalThis:e||self,e.LktItemCrud=p(e.Vue,e.LktHttpClient,e.LktDataState,e.LktButton,e.LktHttpInfo,e.LktLoader))})(this,function(e,p,O,E,T,x){"use strict";const B=a=>a&&typeof a=="object"&&"default"in a?a:{default:a},M=B(E),j=B(T),$=B(x),U={class:"lkt-item-crud"},H={key:0,class:"lkt-item-crud_header"},J={class:"lkt-item-crud_header-title"},A={class:"lkt-item-crud_header-slot"},F={key:1,class:"lkt-item-crud-buttons"},P={key:1},z={key:1},G={key:2,class:"lkt-item-crud_content"},K={key:0,class:"lkt-grid-1"},Q={name:"LktItemCrud",inheritAttrs:!1},W=e.defineComponent({...Q,props:{modelValue:{type:Object,required:!1,default:()=>({})},title:{type:String,default:""},editModeText:{type:String,default:"Edition Mode"},saveText:{type:String,default:"Save"},dropText:{type:String,default:"Delete"},hiddenSave:{type:Boolean,default:!1},hiddenDrop:{type:Boolean,default:!1},hiddenButtons:{type:Boolean,default:!1},readResource:{type:String,required:!1},createResource:{type:String,required:!1},updateResource:{type:String,required:!1},dropResource:{type:String,required:!1},readData:{type:Object,required:!1,default:()=>({})},createData:{type:Object,required:!1,default:()=>({})},updateData:{type:Object,required:!1,default:()=>({})},dropData:{type:Object,required:!1,default:()=>({})},isCreate:{type:Boolean,default:!1},createConfirm:{type:String,default:""},updateConfirm:{type:String,default:""},dropConfirm:{type:String,default:""},createDisabled:{type:Boolean,default:!1},updateDisabled:{type:Boolean,default:!1},dropDisabled:{type:Boolean,default:!1},saveValidator:{type:Function,required:!1,default:()=>!0}},emits:["update:modelValue","read","create","update","drop","perms","error","modified-data"],setup(a,{expose:g,emit:X}){const t=a,D=e.useSlots(),d=X;let Y=[];const o=e.ref(!0),n=e.ref(t.modelValue),m=e.ref(Y),u=e.ref(!1),i=e.ref(!1),c=e.ref(!1),s=e.ref(200),h=e.ref(null),v=e.ref(null),k=e.ref(new O.DataState(n.value)),Z=e.computed(()=>t.isCreate?t.createConfirm:t.updateConfirm),w=e.computed(()=>t.isCreate?t.createResource:t.updateResource),ee=e.computed(()=>t.isCreate?{...t.createData,...JSON.parse(JSON.stringify(n.value))}:{...t.updateData,...JSON.parse(JSON.stringify(n.value))}),te=e.computed(()=>t.isCreate?t.createDisabled:t.updateDisabled),y=e.computed(()=>!t.isCreate&&m.value.includes("update")),C=e.computed(()=>!t.isCreate&&m.value.includes("drop")),b=async()=>{o.value=!0,s.value=-1,c.value=!1;try{const l=await p.httpCall(t.readResource,t.readData);if(o.value=!1,s.value=l.httpStatus,!l.success){i.value=!1,s.value=l.httpStatus,d("error",l.httpStatus);return}i.value=!0,n.value=l.data,m.value=l.perms,k.value.increment(n.value).turnStoredIntoOriginal(),d("read",l)}catch{o.value=!1,i.value=!1,s.value=404,d("error",404);return}},ae=e.computed(()=>o.value?!1:t.title||!!D["post-title"]);e.watch(()=>t.modelValue,l=>{n.value=l,k.value.increment(l)},{deep:!0}),e.watch(n,l=>{d("update:modelValue",n.value),k.value.increment(l)},{deep:!0}),e.watch(m,()=>d("perms",m.value));const L=e.computed(()=>te.value||!t.isCreate&&!y.value||typeof t.saveValidator=="function"&&!t.saveValidator(n.value)?!1:k.value.changed());e.watch(L,l=>d("modified-data",l)),t.readResource&&!t.isCreate?b():t.isCreate&&(i.value=!0,u.value=!0,o.value=!1);const le=(l,r)=>{if(o.value=!1,s.value=r.httpStatus,!r.success){c.value=!0,d("error",r.httpStatus);return}c.value=!0,d("drop",r)},oe=(l,r)=>{if(w.value){if(o.value=!1,s.value=r.httpStatus,!r.success){c.value=!0,d("error",r.httpStatus);return}c.value=!0}let S=t.isCreate?"create":"update";t.isCreate||k.value.turnStoredIntoOriginal(),r.autoReloadId&&(t.readData.id=r.autoReloadId,b()),d(S,r)},V=()=>{o.value=!0,s.value=-1},_=()=>{o.value=!1};g({doDrop:()=>{v.value&&typeof v.value.click=="function"&&v.value.click()},doRefresh:b,doSave:()=>{h.value&&typeof h.value.click=="function"&&h.value.click()}});const q=e.computed(()=>!t.hiddenDrop&&!o.value&&u.value&&i.value),N=e.computed(()=>!t.hiddenSave&&!o.value&&u.value&&i.value),R=e.computed(()=>!o.value&&!t.isCreate&&i.value),re=e.computed(()=>!t.hiddenButtons&&(N.value||q.value||R.value));return(l,r)=>{const S=e.resolveComponent("lkt-button"),ne=e.resolveComponent("lkt-field-switch"),I=e.resolveComponent("lkt-http-info"),de=e.resolveComponent("lkt-loader");return e.openBlock(),e.createElementBlock("article",U,[ae.value?(e.openBlock(),e.createElementBlock("header",H,[e.createElementVNode("h1",J,e.toDisplayString(a.title),1),e.createElementVNode("div",A,[e.renderSlot(l.$slots,"post-title",{item:n.value,loading:o.value})])])):e.createCommentVNode("",!0),re.value?(e.openBlock(),e.createElementBlock("div",F,[a.isCreate?e.createCommentVNode("",!0):e.withDirectives((e.openBlock(),e.createBlock(S,{key:0,ref:f=>v.value=f,palette:"danger",disabled:a.dropDisabled||!C.value,"confirm-modal":a.dropConfirm,resource:a.dropResource,"resource-data":a.dropData,onLoading:V,onLoaded:_,onClick:le},{default:e.withCtx(()=>[e.unref(D)["button-drop"]?e.renderSlot(l.$slots,"button-drop",{key:0,item:n.value,editMode:u.value,isCreate:a.isCreate,canUpdate:y.value,canDrop:C.value}):(e.openBlock(),e.createElementBlock("span",P,e.toDisplayString(a.dropText),1))]),_:3},8,["disabled","confirm-modal","resource","resource-data"])),[[e.vShow,q.value]]),e.withDirectives(e.createVNode(S,{ref:f=>h.value=f,palette:"success",disabled:!L.value,"confirm-modal":Z.value,resource:w.value,"resource-data":ee.value,onLoading:V,onLoaded:_,onClick:oe},{default:e.withCtx(()=>[e.unref(D)["button-save"]?e.renderSlot(l.$slots,"button-save",{key:0,item:n.value,editMode:u.value,isCreate:a.isCreate,canUpdate:y.value,canDrop:C.value}):(e.openBlock(),e.createElementBlock("span",z,e.toDisplayString(a.saveText),1))]),_:3},8,["disabled","confirm-modal","resource","resource-data"]),[[e.vShow,N.value]]),e.withDirectives(e.createVNode(ne,{modelValue:u.value,"onUpdate:modelValue":r[0]||(r[0]=f=>u.value=f),label:a.editModeText},null,8,["modelValue","label"]),[[e.vShow,R.value]])])):e.createCommentVNode("",!0),o.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",G,[i.value?(e.openBlock(),e.createElementBlock("div",K,[c.value?(e.openBlock(),e.createBlock(I,{key:0,code:s.value,quick:"",palette:s.value===200?"success":"danger","can-close":"",onClose:r[1]||(r[1]=f=>c.value=!1)},null,8,["code","palette"])):e.createCommentVNode("",!0),e.renderSlot(l.$slots,"item",{item:n.value,loading:o.value,editMode:u.value,isCreate:a.isCreate,canUpdate:y.value,canDrop:C.value})])):(e.openBlock(),e.createBlock(I,{key:1,code:s.value},null,8,["code"]))])),o.value?(e.openBlock(),e.createBlock(de,{key:3})):e.createCommentVNode("",!0)])}}}),se="";return{install:(a,g={})=>{a.component("lkt-item-crud")===void 0&&a.component("lkt-item-crud",W),a.component("lkt-button")===void 0&&a.use(M.default),a.component("lkt-http-info")===void 0&&a.use(j.default),a.component("lkt-loader")===void 0&&a.use($.default)}}});
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .lkt-item-crud,.lkt-item-crud_content{display:flex;flex-direction:column;gap:15px}.lkt-item-crud-buttons{position:sticky;top:calc(-1 * var(--gap));display:flex;align-items:center;gap:var(--gap);transition:all linear .15s;background:#ffffff;z-index:2;padding:var(--gap) 0}.lkt-item-crud-buttons>:last-child{margin-left:auto}
1
+ .lkt-item-crud{display:flex;flex-direction:column;gap:var(--gap)}.lkt-item-crud_content{display:flex;flex-direction:column;gap:15px}.lkt-item-crud-buttons{position:sticky;top:calc(-1 * var(--gap));display:flex;align-items:center;gap:var(--gap);transition:all linear .15s;background:#ffffff;z-index:2}.lkt-item-crud-buttons>:last-child{margin-left:auto}
@@ -21,6 +21,18 @@ declare const _default: {
21
21
  type: StringConstructor;
22
22
  default: string;
23
23
  };
24
+ hiddenSave: {
25
+ type: BooleanConstructor;
26
+ default: boolean;
27
+ };
28
+ hiddenDrop: {
29
+ type: BooleanConstructor;
30
+ default: boolean;
31
+ };
32
+ hiddenButtons: {
33
+ type: BooleanConstructor;
34
+ default: boolean;
35
+ };
24
36
  readResource: {
25
37
  type: StringConstructor;
26
38
  required: false;
@@ -125,6 +137,18 @@ declare const _default: {
125
137
  type: StringConstructor;
126
138
  default: string;
127
139
  };
140
+ hiddenSave: {
141
+ type: BooleanConstructor;
142
+ default: boolean;
143
+ };
144
+ hiddenDrop: {
145
+ type: BooleanConstructor;
146
+ default: boolean;
147
+ };
148
+ hiddenButtons: {
149
+ type: BooleanConstructor;
150
+ default: boolean;
151
+ };
128
152
  readResource: {
129
153
  type: StringConstructor;
130
154
  required: false;
@@ -209,6 +233,9 @@ declare const _default: {
209
233
  editModeText: string;
210
234
  saveText: string;
211
235
  dropText: string;
236
+ hiddenSave: boolean;
237
+ hiddenDrop: boolean;
238
+ hiddenButtons: boolean;
212
239
  readData: Record<string, any>;
213
240
  createData: Record<string, any>;
214
241
  updateData: Record<string, any>;
@@ -250,6 +277,18 @@ declare const _default: {
250
277
  type: StringConstructor;
251
278
  default: string;
252
279
  };
280
+ hiddenSave: {
281
+ type: BooleanConstructor;
282
+ default: boolean;
283
+ };
284
+ hiddenDrop: {
285
+ type: BooleanConstructor;
286
+ default: boolean;
287
+ };
288
+ hiddenButtons: {
289
+ type: BooleanConstructor;
290
+ default: boolean;
291
+ };
253
292
  readResource: {
254
293
  type: StringConstructor;
255
294
  required: false;
@@ -338,6 +377,9 @@ declare const _default: {
338
377
  editModeText: string;
339
378
  saveText: string;
340
379
  dropText: string;
380
+ hiddenSave: boolean;
381
+ hiddenDrop: boolean;
382
+ hiddenButtons: boolean;
341
383
  readData: Record<string, any>;
342
384
  createData: Record<string, any>;
343
385
  updateData: Record<string, any>;
@@ -376,6 +418,18 @@ declare const _default: {
376
418
  type: StringConstructor;
377
419
  default: string;
378
420
  };
421
+ hiddenSave: {
422
+ type: BooleanConstructor;
423
+ default: boolean;
424
+ };
425
+ hiddenDrop: {
426
+ type: BooleanConstructor;
427
+ default: boolean;
428
+ };
429
+ hiddenButtons: {
430
+ type: BooleanConstructor;
431
+ default: boolean;
432
+ };
379
433
  readResource: {
380
434
  type: StringConstructor;
381
435
  required: false;
@@ -464,6 +518,9 @@ declare const _default: {
464
518
  editModeText: string;
465
519
  saveText: string;
466
520
  dropText: string;
521
+ hiddenSave: boolean;
522
+ hiddenDrop: boolean;
523
+ hiddenButtons: boolean;
467
524
  readData: Record<string, any>;
468
525
  createData: Record<string, any>;
469
526
  updateData: Record<string, any>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lkt-item-crud",
3
- "version": "1.0.8",
3
+ "version": "1.0.10",
4
4
  "description": "",
5
5
  "main": "src/index.ts",
6
6
  "module": "src/index.ts",
package/src/index.ts CHANGED
@@ -9,7 +9,7 @@ import LktLoader from "lkt-loader";
9
9
  const LktItemCrud = {
10
10
  install: (app: App, options = {}) => {
11
11
  // Register plugin components
12
- if (app.component('lkt-item-crud') === undefined) app.component('lkt-item-crud', LktItemCrud);
12
+ if (app.component('lkt-item-crud') === undefined) app.component('lkt-item-crud', itemCrud);
13
13
 
14
14
  // Register additional components
15
15
  if (app.component('lkt-button') === undefined) app.use(LktButton);
@@ -14,6 +14,9 @@ const props = defineProps({
14
14
  editModeText: {type: String, default: 'Edition Mode'},
15
15
  saveText: {type: String, default: 'Save'},
16
16
  dropText: {type: String, default: 'Delete'},
17
+ hiddenSave: {type: Boolean, default: false},
18
+ hiddenDrop: {type: Boolean, default: false},
19
+ hiddenButtons: {type: Boolean, default: false},
17
20
 
18
21
  readResource: {type: String, required: false},
19
22
  createResource: {type: String, required: false},
@@ -198,6 +201,27 @@ defineExpose({
198
201
  doRefresh: fetchItem,
199
202
  doSave
200
203
  });
204
+
205
+ const showDropButton = computed(() => {
206
+ return !props.hiddenDrop
207
+ && !isLoading.value
208
+ && editMode.value
209
+ && httpSuccessRead.value;
210
+ }),
211
+ showSaveButton = computed(() => {
212
+ return !props.hiddenSave
213
+ && !isLoading.value
214
+ && editMode.value
215
+ && httpSuccessRead.value;
216
+ }),
217
+ showSwitchButton = computed(() => {
218
+ return !isLoading.value
219
+ && !props.isCreate
220
+ && httpSuccessRead.value;
221
+ }),
222
+ showButtons = computed(() => {
223
+ return !props.hiddenButtons && (showSaveButton.value || showDropButton.value || showSwitchButton.value);
224
+ })
201
225
  </script>
202
226
 
203
227
  <template>
@@ -208,10 +232,10 @@ defineExpose({
208
232
  <slot name="post-title" v-bind:item="item" v-bind:loading="isLoading"></slot>
209
233
  </div>
210
234
  </header>
211
- <div class="lkt-item-crud-buttons" v-show="httpSuccessRead">
235
+ <div class="lkt-item-crud-buttons" v-if="showButtons">
212
236
  <lkt-button
213
237
  :ref="(el:any) => dropButton = el"
214
- v-show="!isLoading && editMode && httpSuccessRead"
238
+ v-show="showDropButton"
215
239
  v-if="!isCreate"
216
240
  palette="danger"
217
241
  v-bind:disabled="dropDisabled || !canDrop"
@@ -223,15 +247,15 @@ defineExpose({
223
247
  v-on:click="onDrop">
224
248
  <slot v-if="!!slots['button-drop']" name="button-drop" v-bind:item="item"
225
249
  v-bind:edit-mode="editMode"
226
- v-bind:is-create="isCreate"
227
- v-bind:can-update="canUpdate"
228
- v-bind:can-drop="canDrop"></slot>
250
+ v-bind:is-create="isCreate"
251
+ v-bind:can-update="canUpdate"
252
+ v-bind:can-drop="canDrop"></slot>
229
253
  <span v-else>{{ dropText }}</span>
230
254
  </lkt-button>
231
255
 
232
256
  <lkt-button
233
257
  :ref="(el:any) => saveButton = el"
234
- v-show="!isLoading && editMode && httpSuccessRead"
258
+ v-show="showSaveButton"
235
259
  palette="success"
236
260
  v-bind:disabled="!ableToSave"
237
261
  v-bind:confirm-modal="saveConfirm"
@@ -242,14 +266,14 @@ defineExpose({
242
266
  v-on:click="onSave">
243
267
  <slot v-if="!!slots['button-save']" name="button-save" v-bind:item="item"
244
268
  v-bind:edit-mode="editMode"
245
- v-bind:is-create="isCreate"
246
- v-bind:can-update="canUpdate"
247
- v-bind:can-drop="canDrop"></slot>
269
+ v-bind:is-create="isCreate"
270
+ v-bind:can-update="canUpdate"
271
+ v-bind:can-drop="canDrop"></slot>
248
272
  <span v-else>{{ saveText }}</span>
249
273
  </lkt-button>
250
274
 
251
275
  <lkt-field-switch
252
- v-show="!isLoading && httpSuccessRead && !isCreate" v-model="editMode"
276
+ v-show="showSwitchButton" v-model="editMode"
253
277
  :label="editModeText"></lkt-field-switch>
254
278
  </div>
255
279
  <div class="lkt-item-crud_content" v-if="!isLoading">
@@ -258,9 +282,9 @@ defineExpose({
258
282
  :palette="httpStatus === 200 ? 'success' : 'danger'" can-close
259
283
  v-on:close="showStoreMessage = false"></lkt-http-info>
260
284
  <slot name="item" v-bind:item="item" v-bind:loading="isLoading" v-bind:edit-mode="editMode"
261
- v-bind:is-create="isCreate"
262
- v-bind:can-update="canUpdate"
263
- v-bind:can-drop="canDrop"></slot>
285
+ v-bind:is-create="isCreate"
286
+ v-bind:can-update="canUpdate"
287
+ v-bind:can-drop="canDrop"></slot>
264
288
  </div>
265
289
  <lkt-http-info :code="httpStatus" v-else></lkt-http-info>
266
290
  </div>