lkt-item-crud 1.0.11 → 1.1.0

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.js ADDED
@@ -0,0 +1,205 @@
1
+ import { defineComponent as le, useSlots as ue, ref as n, computed as o, watch as B, resolveComponent as w, openBlock as i, createElementBlock as m, createElementVNode as M, toDisplayString as I, renderSlot as R, createCommentVNode as S, withDirectives as V, createBlock as _, withCtx as F, unref as H, vShow as q, createVNode as P } from "vue";
2
+ import { httpCall as re } from "lkt-http-client";
3
+ import { DataState as oe } from "lkt-data-state";
4
+ const se = { class: "lkt-item-crud" }, de = {
5
+ key: 0,
6
+ class: "lkt-item-crud_header"
7
+ }, ne = { class: "lkt-item-crud_header-title" }, ie = { class: "lkt-item-crud_header-slot" }, ce = { class: "lkt-item-crud-buttons" }, ve = { key: 1 }, fe = { key: 1 }, pe = {
8
+ key: 1,
9
+ class: "lkt-item-crud_content"
10
+ }, me = {
11
+ key: 0,
12
+ class: "lkt-grid-1"
13
+ }, he = { name: "LktItemCrud", inheritAttrs: !1 }, ye = /* @__PURE__ */ le({
14
+ ...he,
15
+ props: {
16
+ modelValue: { type: Object, required: !1, default: () => ({}) },
17
+ title: { type: String, default: "" },
18
+ editModeText: { type: String, default: "Edition Mode" },
19
+ saveText: { type: String, default: "Save" },
20
+ dropText: { type: String, default: "Delete" },
21
+ hiddenSave: { type: Boolean, default: !1 },
22
+ hiddenDrop: { type: Boolean, default: !1 },
23
+ hiddenButtons: { type: Boolean, default: !1 },
24
+ readResource: { type: String, required: !1 },
25
+ createResource: { type: String, required: !1 },
26
+ updateResource: { type: String, required: !1 },
27
+ dropResource: { type: String, required: !1 },
28
+ readData: { type: Object, required: !1, default: () => ({}) },
29
+ createData: { type: Object, required: !1, default: () => ({}) },
30
+ updateData: { type: Object, required: !1, default: () => ({}) },
31
+ dropData: { type: Object, required: !1, default: () => ({}) },
32
+ isCreate: { type: Boolean, default: !1 },
33
+ createConfirm: { type: String, default: "" },
34
+ updateConfirm: { type: String, default: "" },
35
+ dropConfirm: { type: String, default: "" },
36
+ createDisabled: { type: Boolean, default: !1 },
37
+ updateDisabled: { type: Boolean, default: !1 },
38
+ dropDisabled: { type: Boolean, default: !1 },
39
+ saveValidator: { type: Function, required: !1, default: () => !0 }
40
+ },
41
+ emits: ["update:modelValue", "read", "create", "update", "drop", "perms", "error", "modified-data"],
42
+ setup(a, { expose: N, emit: z }) {
43
+ const e = a, O = ue(), s = z;
44
+ let G = [];
45
+ const l = n(!0), r = n(e.modelValue), h = n(G), c = n(!1), v = n(!1), f = n(!1), d = n(200), k = n(null), C = n(null), y = n(new oe(r.value)), K = o(() => e.isCreate ? e.createConfirm : e.updateConfirm), T = o(() => e.isCreate ? e.createResource : e.updateResource), Q = o(() => e.isCreate ? { ...e.createData, ...JSON.parse(JSON.stringify(r.value)) } : { ...e.updateData, ...JSON.parse(JSON.stringify(r.value)) }), W = o(() => e.isCreate ? e.createDisabled : e.updateDisabled), D = o(() => !e.isCreate && h.value.includes("update")), b = o(() => !e.isCreate && h.value.includes("drop")), L = async () => {
46
+ l.value = !0, d.value = -1, f.value = !1;
47
+ try {
48
+ const t = await re(e.readResource, e.readData);
49
+ if (l.value = !1, d.value = t.httpStatus, !t.success) {
50
+ v.value = !1, d.value = t.httpStatus, s("error", t.httpStatus);
51
+ return;
52
+ }
53
+ v.value = !0, r.value = t.data, h.value = t.perms, y.value.increment(r.value).turnStoredIntoOriginal(), s("read", t);
54
+ } catch {
55
+ l.value = !1, v.value = !1, d.value = 404, s("error", 404);
56
+ return;
57
+ }
58
+ }, X = o(() => l.value ? !1 : e.title || !!O["post-title"]);
59
+ B(() => e.modelValue, (t) => {
60
+ r.value = t, y.value.increment(t);
61
+ }, { deep: !0 }), B(r, (t) => {
62
+ s("update:modelValue", r.value), y.value.increment(t);
63
+ }, { deep: !0 }), B(h, () => s("perms", h.value));
64
+ const $ = o(() => W.value || !e.isCreate && !D.value || typeof e.saveValidator == "function" && !e.saveValidator(r.value) ? !1 : y.value.changed());
65
+ B($, (t) => s("modified-data", t)), e.readResource && !e.isCreate ? L() : e.isCreate && (v.value = !0, c.value = !0, l.value = !1);
66
+ const Y = (t, u) => {
67
+ if (l.value = !1, d.value = u.httpStatus, !u.success) {
68
+ f.value = !0, s("error", u.httpStatus);
69
+ return;
70
+ }
71
+ f.value = !0, s("drop", u);
72
+ }, Z = (t, u) => {
73
+ if (T.value) {
74
+ if (l.value = !1, d.value = u.httpStatus, !u.success) {
75
+ f.value = !0, s("error", u.httpStatus);
76
+ return;
77
+ }
78
+ f.value = !0;
79
+ }
80
+ let g = e.isCreate ? "create" : "update";
81
+ e.isCreate || y.value.turnStoredIntoOriginal(), u.autoReloadId && (e.readData.id = u.autoReloadId, L()), s(g, u);
82
+ }, x = () => {
83
+ l.value = !0, d.value = -1;
84
+ }, j = () => {
85
+ l.value = !1;
86
+ };
87
+ N({
88
+ doDrop: () => {
89
+ C.value && typeof C.value.click == "function" && C.value.click();
90
+ },
91
+ doRefresh: L,
92
+ doSave: () => {
93
+ k.value && typeof k.value.click == "function" && k.value.click();
94
+ }
95
+ });
96
+ const U = o(() => !e.hiddenDrop && !l.value && c.value && v.value), J = o(() => l.value ? !1 : e.isCreate ? !0 : !e.hiddenSave && c.value && v.value), E = o(() => !l.value && !e.isCreate && v.value), ee = o(() => !e.hiddenButtons && (J.value || U.value || E.value));
97
+ return (t, u) => {
98
+ const g = w("lkt-button"), te = w("lkt-field-switch"), A = w("lkt-http-info"), ae = w("lkt-loader");
99
+ return i(), m("article", se, [
100
+ X.value ? (i(), m("header", de, [
101
+ M("h1", ne, I(a.title), 1),
102
+ M("div", ie, [
103
+ R(t.$slots, "post-title", {
104
+ item: r.value,
105
+ loading: l.value
106
+ })
107
+ ])
108
+ ])) : S("", !0),
109
+ V(M("div", ce, [
110
+ a.isCreate ? S("", !0) : V((i(), _(g, {
111
+ key: 0,
112
+ ref: (p) => C.value = p,
113
+ palette: "danger",
114
+ disabled: a.dropDisabled || !b.value,
115
+ "confirm-modal": a.dropConfirm,
116
+ resource: a.dropResource,
117
+ "resource-data": a.dropData,
118
+ onLoading: x,
119
+ onLoaded: j,
120
+ onClick: Y
121
+ }, {
122
+ default: F(() => [
123
+ H(O)["button-drop"] ? R(t.$slots, "button-drop", {
124
+ key: 0,
125
+ item: r.value,
126
+ editMode: c.value,
127
+ isCreate: a.isCreate,
128
+ canUpdate: D.value,
129
+ canDrop: b.value
130
+ }) : (i(), m("span", ve, I(a.dropText), 1))
131
+ ]),
132
+ _: 3
133
+ }, 8, ["disabled", "confirm-modal", "resource", "resource-data"])), [
134
+ [q, U.value]
135
+ ]),
136
+ V(P(g, {
137
+ ref: (p) => k.value = p,
138
+ palette: "success",
139
+ disabled: !$.value,
140
+ "confirm-modal": K.value,
141
+ resource: T.value,
142
+ "resource-data": Q.value,
143
+ onLoading: x,
144
+ onLoaded: j,
145
+ onClick: Z
146
+ }, {
147
+ default: F(() => [
148
+ H(O)["button-save"] ? R(t.$slots, "button-save", {
149
+ key: 0,
150
+ item: r.value,
151
+ editMode: c.value,
152
+ isCreate: a.isCreate,
153
+ canUpdate: D.value,
154
+ canDrop: b.value
155
+ }) : (i(), m("span", fe, I(a.saveText), 1))
156
+ ]),
157
+ _: 3
158
+ }, 8, ["disabled", "confirm-modal", "resource", "resource-data"]), [
159
+ [q, J.value]
160
+ ]),
161
+ V(P(te, {
162
+ modelValue: c.value,
163
+ "onUpdate:modelValue": u[0] || (u[0] = (p) => c.value = p),
164
+ label: a.editModeText
165
+ }, null, 8, ["modelValue", "label"]), [
166
+ [q, E.value]
167
+ ])
168
+ ], 512), [
169
+ [q, ee.value]
170
+ ]),
171
+ l.value ? S("", !0) : (i(), m("div", pe, [
172
+ v.value ? (i(), m("div", me, [
173
+ f.value ? (i(), _(A, {
174
+ key: 0,
175
+ code: d.value,
176
+ quick: "",
177
+ palette: d.value === 200 ? "success" : "danger",
178
+ "can-close": "",
179
+ onClose: u[1] || (u[1] = (p) => f.value = !1)
180
+ }, null, 8, ["code", "palette"])) : S("", !0),
181
+ R(t.$slots, "item", {
182
+ item: r.value,
183
+ loading: l.value,
184
+ editMode: c.value,
185
+ isCreate: a.isCreate,
186
+ canUpdate: D.value,
187
+ canDrop: b.value
188
+ })
189
+ ])) : (i(), _(A, {
190
+ key: 1,
191
+ code: d.value
192
+ }, null, 8, ["code"]))
193
+ ])),
194
+ l.value ? (i(), _(ae, { key: 2 })) : S("", !0)
195
+ ]);
196
+ };
197
+ }
198
+ }), ge = {
199
+ install: (a, N = {}) => {
200
+ a.component("lkt-item-crud") === void 0 && a.component("lkt-item-crud", ye);
201
+ }
202
+ };
203
+ export {
204
+ ge as default
205
+ };
@@ -0,0 +1,4 @@
1
+ import { Plugin } from "vue";
2
+ import "./../lkt-item-crud.css";
3
+ declare const LktItemCrud: Plugin;
4
+ export default LktItemCrud;
@@ -0,0 +1,283 @@
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
+ createDisabled: {
88
+ type: BooleanConstructor;
89
+ default: boolean;
90
+ };
91
+ updateDisabled: {
92
+ type: BooleanConstructor;
93
+ default: boolean;
94
+ };
95
+ dropDisabled: {
96
+ type: BooleanConstructor;
97
+ default: boolean;
98
+ };
99
+ saveValidator: {
100
+ type: FunctionConstructor;
101
+ required: false;
102
+ default: () => boolean;
103
+ };
104
+ }, {
105
+ doDrop: () => void;
106
+ doRefresh: () => Promise<void>;
107
+ doSave: () => void;
108
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
109
+ error: (...args: any[]) => void;
110
+ drop: (...args: any[]) => void;
111
+ update: (...args: any[]) => void;
112
+ "update:modelValue": (...args: any[]) => void;
113
+ read: (...args: any[]) => void;
114
+ create: (...args: any[]) => void;
115
+ perms: (...args: any[]) => void;
116
+ "modified-data": (...args: any[]) => void;
117
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
118
+ modelValue: {
119
+ type: ObjectConstructor;
120
+ required: false;
121
+ default: () => {};
122
+ };
123
+ title: {
124
+ type: StringConstructor;
125
+ default: string;
126
+ };
127
+ editModeText: {
128
+ type: StringConstructor;
129
+ default: string;
130
+ };
131
+ saveText: {
132
+ type: StringConstructor;
133
+ default: string;
134
+ };
135
+ dropText: {
136
+ type: StringConstructor;
137
+ default: string;
138
+ };
139
+ hiddenSave: {
140
+ type: BooleanConstructor;
141
+ default: boolean;
142
+ };
143
+ hiddenDrop: {
144
+ type: BooleanConstructor;
145
+ default: boolean;
146
+ };
147
+ hiddenButtons: {
148
+ type: BooleanConstructor;
149
+ default: boolean;
150
+ };
151
+ readResource: {
152
+ type: StringConstructor;
153
+ required: false;
154
+ };
155
+ createResource: {
156
+ type: StringConstructor;
157
+ required: false;
158
+ };
159
+ updateResource: {
160
+ type: StringConstructor;
161
+ required: false;
162
+ };
163
+ dropResource: {
164
+ type: StringConstructor;
165
+ required: false;
166
+ };
167
+ readData: {
168
+ type: ObjectConstructor;
169
+ required: false;
170
+ default: () => {};
171
+ };
172
+ createData: {
173
+ type: ObjectConstructor;
174
+ required: false;
175
+ default: () => {};
176
+ };
177
+ updateData: {
178
+ type: ObjectConstructor;
179
+ required: false;
180
+ default: () => {};
181
+ };
182
+ dropData: {
183
+ type: ObjectConstructor;
184
+ required: false;
185
+ default: () => {};
186
+ };
187
+ isCreate: {
188
+ type: BooleanConstructor;
189
+ default: boolean;
190
+ };
191
+ createConfirm: {
192
+ type: StringConstructor;
193
+ default: string;
194
+ };
195
+ updateConfirm: {
196
+ type: StringConstructor;
197
+ default: string;
198
+ };
199
+ dropConfirm: {
200
+ type: StringConstructor;
201
+ default: string;
202
+ };
203
+ createDisabled: {
204
+ type: BooleanConstructor;
205
+ default: boolean;
206
+ };
207
+ updateDisabled: {
208
+ type: BooleanConstructor;
209
+ default: boolean;
210
+ };
211
+ dropDisabled: {
212
+ type: BooleanConstructor;
213
+ default: boolean;
214
+ };
215
+ saveValidator: {
216
+ type: FunctionConstructor;
217
+ required: false;
218
+ default: () => boolean;
219
+ };
220
+ }>> & {
221
+ onError?: ((...args: any[]) => any) | undefined;
222
+ onDrop?: ((...args: any[]) => any) | undefined;
223
+ onUpdate?: ((...args: any[]) => any) | undefined;
224
+ "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
225
+ onRead?: ((...args: any[]) => any) | undefined;
226
+ onCreate?: ((...args: any[]) => any) | undefined;
227
+ onPerms?: ((...args: any[]) => any) | undefined;
228
+ "onModified-data"?: ((...args: any[]) => any) | undefined;
229
+ }, {
230
+ title: string;
231
+ modelValue: Record<string, any>;
232
+ editModeText: string;
233
+ saveText: string;
234
+ dropText: string;
235
+ hiddenSave: boolean;
236
+ hiddenDrop: boolean;
237
+ hiddenButtons: boolean;
238
+ readData: Record<string, any>;
239
+ createData: Record<string, any>;
240
+ updateData: Record<string, any>;
241
+ dropData: Record<string, any>;
242
+ isCreate: boolean;
243
+ createConfirm: string;
244
+ updateConfirm: string;
245
+ dropConfirm: string;
246
+ createDisabled: boolean;
247
+ updateDisabled: boolean;
248
+ dropDisabled: boolean;
249
+ saveValidator: Function;
250
+ }, {}>, {
251
+ "post-title"?(_: {
252
+ item: Record<string, any>;
253
+ loading: boolean;
254
+ }): any;
255
+ "button-drop"?(_: {
256
+ item: Record<string, any>;
257
+ editMode: boolean;
258
+ isCreate: false;
259
+ canUpdate: boolean;
260
+ canDrop: boolean;
261
+ }): any;
262
+ "button-save"?(_: {
263
+ item: Record<string, any>;
264
+ editMode: boolean;
265
+ isCreate: boolean;
266
+ canUpdate: boolean;
267
+ canDrop: boolean;
268
+ }): any;
269
+ item?(_: {
270
+ item: Record<string, any>;
271
+ loading: false;
272
+ editMode: boolean;
273
+ isCreate: boolean;
274
+ canUpdate: boolean;
275
+ canDrop: boolean;
276
+ }): any;
277
+ }>;
278
+ export default _default;
279
+ type __VLS_WithTemplateSlots<T, S> = T & {
280
+ new (): {
281
+ $slots: S;
282
+ };
283
+ };
package/dist/style.css CHANGED
@@ -1 +1 @@
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}
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:#fff;z-index:2}.lkt-item-crud-buttons>:last-child{margin-left:auto}
package/package.json CHANGED
@@ -1,61 +1,36 @@
1
1
  {
2
2
  "name": "lkt-item-crud",
3
- "version": "1.0.11",
3
+ "version": "1.1.0",
4
4
  "description": "",
5
- "main": "src/index.ts",
6
- "module": "src/index.ts",
7
- "files": [
8
- "dist/*",
9
- "src/**/*.vue"
10
- ],
11
- "sideEffects": false,
5
+ "type": "module",
6
+ "module": "./dist/build.js",
12
7
  "exports": {
13
8
  ".": {
14
- "import": "./dist/lkt-item-crud.es.js",
15
- "require": "./dist/lkt-item-crud.umd.js"
9
+ "import": "./dist/build.js"
16
10
  },
17
- "./dist/style.css": "./dist/style.css"
11
+ "./styles": "./dist/style.css"
18
12
  },
19
- "types": "./dist/types/index.d.ts",
13
+ "types": "./dist/index.d.ts",
14
+ "files": ["dist/*", "src/**/*.vue"],
15
+ "license": "MIT",
16
+ "sideEffects": false,
20
17
  "scripts": {
21
- "serve": "vite",
22
- "build": "vite build && vue-tsc --emitDeclarationOnly --project tsconfig.json && mv dist/src dist/types",
23
- "build2": "vite build",
24
- "preview": "vite preview",
25
- "test": "jest",
26
- "test-coverage": "vitest run --coverage"
18
+ "build": "rm -rf dist/*; vue-tsc --declaration --emitDeclarationOnly; vite build; cp build/* dist/"
27
19
  },
28
20
  "author": "Antonio Ibáñez",
29
21
  "devDependencies": {
30
- "@babel/core": "^7.13.13",
31
- "@babel/preset-env": "^7.13.12",
32
- "@babel/types": "^7.18.9",
33
- "@testing-library/cypress": "^7.0.4",
34
- "@testing-library/dom": "^7.30.1",
35
- "@testing-library/jest-dom": "^5.11.10",
36
- "@types/jest": "^29.0.1",
37
- "@types/node": "^18.6.2",
38
- "@typescript-eslint/eslint-plugin": "^5.36.2",
39
- "@typescript-eslint/parser": "^5.36.2",
40
- "@vitejs/plugin-vue": "^3.0.1",
41
- "babel-eslint": "^10.1.0",
42
- "babel-jest": "^29.0.3",
43
- "babel-loader": "^8.2.2",
44
- "cypress": "^6.8.0",
45
- "eslint": "8.22.0",
46
- "eslint-config-prettier": "^8.1.0",
47
- "eslint-plugin-cypress": "^2.11.2",
48
- "eslint-plugin-html": "^7.1.0",
49
- "eslint-plugin-import": "^2.22.1",
50
- "eslint-plugin-jest": "^24.3.2",
51
- "eslint-plugin-prettier": "^3.3.1",
52
- "eslint-plugin-simple-import-sort": "^7.0.0",
53
- "jest": "^29.0.3",
54
- "prettier": "^2.7.1",
55
- "ts-jest": "^29.0.0",
56
- "typescript": "^4.8.3",
57
- "vite": "^3.1.2",
58
- "vue-tsc": "^0.38.9"
22
+ "@babel/types": "^7.23.6",
23
+ "@types/node": "^20.11.19",
24
+ "@types/rollup": "^0.54.0",
25
+ "@vitejs/plugin-vue": "^5.0.4",
26
+ "rollup": "^4.9.6",
27
+ "typescript": "^5.3.3",
28
+ "vite": "^5.1.3",
29
+ "vue": "^3.3.0",
30
+ "vue-tsc": "^1.8.27"
31
+ },
32
+ "engines": {
33
+ "node": ">=18"
59
34
  },
60
35
  "dependencies": {
61
36
  "lkt-button": "^1.0.14",
@@ -67,10 +42,6 @@
67
42
  "lkt-loader": "^1.0.2",
68
43
  "lkt-string-tools": "^1.0.2",
69
44
  "lkt-ts-interfaces": "^1.0.2",
70
- "path": "^0.12.7",
71
- "vue": "^3.3.0"
72
- },
73
- "engines": {
74
- "node": ">=18"
45
+ "path": "^0.12.7"
75
46
  }
76
47
  }
@@ -209,8 +209,11 @@ const showDropButton = computed(() => {
209
209
  && httpSuccessRead.value;
210
210
  }),
211
211
  showSaveButton = computed(() => {
212
+ if (isLoading.value) return false;
213
+
214
+ if (props.isCreate) return true;
215
+
212
216
  return !props.hiddenSave
213
- && !isLoading.value
214
217
  && editMode.value
215
218
  && httpSuccessRead.value;
216
219
  }),
@@ -1,2 +0,0 @@
1
- export const preset: string;
2
- export const testEnvironment: string;