@feedmepos/mf-menu 0.32.42-dev.2 → 0.32.42-dev.3

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.
Files changed (67) hide show
  1. package/dist/{App-DyZQZRjQ.js → App-1oMjfIcc.js} +5 -5
  2. package/dist/{ApplyProduct.vue_vue_type_script_setup_true_lang-Dmc7Gawc.js → ApplyProduct.vue_vue_type_script_setup_true_lang-AIw0Zgzf.js} +3 -3
  3. package/dist/{Catalog-DJK-TFnH.js → Catalog-CvQo24ck.js} +6 -6
  4. package/dist/{Category-BuI4C-2a.js → Category-C8bM8EwO.js} +4 -4
  5. package/dist/{Category-CPzzDgEf.js → Category-DmIaxrrK.js} +4 -4
  6. package/dist/{CookingGuide-DUhJyB8k.js → CookingGuide-CKEbyk4o.js} +4 -4
  7. package/dist/{CustomAttributeChip.vue_vue_type_script_setup_true_lang-CNFPeZwz.js → CustomAttributeChip.vue_vue_type_script_setup_true_lang-Ci4gwgnH.js} +1 -1
  8. package/dist/{Group-BOzJII7-.js → Group-CoYyRvcx.js} +1 -1
  9. package/dist/{Group-B3FUEieg.js → Group-EnJDk54z.js} +3 -3
  10. package/dist/{Group.vue_vue_type_script_setup_true_lang-DnkI2_Oa.js → Group.vue_vue_type_script_setup_true_lang-tH2U82rV.js} +7 -7
  11. package/dist/{GroupMarkupPriceDialog.vue_vue_type_script_setup_true_lang-KRANAiR_.js → GroupMarkupPriceDialog.vue_vue_type_script_setup_true_lang-BDxjuWcY.js} +5 -5
  12. package/dist/{ImportProductDialog.vue_vue_type_script_setup_true_lang-Dossu1rN.js → ImportProductDialog.vue_vue_type_script_setup_true_lang-gVXNoAaN.js} +210 -210
  13. package/dist/{Ingredient-D2ikFdFk.js → Ingredient-7PPPp7Yf.js} +3 -3
  14. package/dist/{InventoryBinding.vue_vue_type_script_setup_true_lang-C_8s8d6S.js → InventoryBinding.vue_vue_type_script_setup_true_lang-DQPjpqtv.js} +2 -2
  15. package/dist/{LinkProductSideSheet-D4rj-g7A.js → LinkProductSideSheet-BS-MEIOG.js} +3 -3
  16. package/dist/{MenuSetting-DoLdFE5R.js → MenuSetting-BNVyT0oG.js} +5 -5
  17. package/dist/{PrintRoute-CCmnaHAm.js → PrintRoute-BMdk0zDv.js} +4 -4
  18. package/dist/{Product-BN6HXtCO.js → Product-DbIK7Eog.js} +1 -1
  19. package/dist/{Product.vue_vue_type_script_setup_true_lang-C0G-qKY-.js → Product.vue_vue_type_script_setup_true_lang-FnX_M8lJ.js} +25 -25
  20. package/dist/{ProductInternalTools-C0z1uq-O.js → ProductInternalTools-BC8jWpQd.js} +5 -5
  21. package/dist/Products-CPi2vuUO.js +307 -0
  22. package/dist/{Publish-CH1SAEmF.js → Publish-BcxHXZ1J.js} +3 -3
  23. package/dist/{Recipe-Bv7Xvvig.js → Recipe-egyxyFfA.js} +4 -4
  24. package/dist/RestaurantAttributesSelector.vue_vue_type_script_setup_true_lang-CP1NjxzF.js +144 -0
  25. package/dist/{RuleView.vue_vue_type_script_setup_true_lang-yK04zs8F.js → RuleView.vue_vue_type_script_setup_true_lang-CPMCeAK9.js} +2 -2
  26. package/dist/{Scheduler-34IfrdGd.js → Scheduler-Cb-IJtj8.js} +3 -3
  27. package/dist/{ServingSequence-BZV2R5sJ.js → ServingSequence-B46n34xA.js} +3 -3
  28. package/dist/{Setting-C2tFfdTn.js → Setting-B_dZG5ZC.js} +5 -5
  29. package/dist/{Subcategory-867aDkMq.js → Subcategory-DbjLfXvf.js} +5 -5
  30. package/dist/{Takeaway-DG6W-5rb.js → Takeaway-D4axornr.js} +4 -4
  31. package/dist/{Takeaway-DA67zMKW.js → Takeaway-DNu6jYFC.js} +1 -1
  32. package/dist/{Takeaway.vue_vue_type_script_setup_true_lang-oTjvIuW5.js → Takeaway.vue_vue_type_script_setup_true_lang-Dvm8Lfp3.js} +5 -5
  33. package/dist/{Thumbnail.vue_vue_type_script_setup_true_lang-XOx8U70f.js → Thumbnail.vue_vue_type_script_setup_true_lang-BjPOOURv.js} +4 -4
  34. package/dist/{TranslationSideSheet.vue_vue_type_script_setup_true_lang-CaWVsB5J.js → TranslationSideSheet.vue_vue_type_script_setup_true_lang-CXGsdChM.js} +1 -1
  35. package/dist/TreeEditorOpenner.vue_vue_type_script_setup_true_lang-C9eskCL4.js +5767 -0
  36. package/dist/{Unit-BrnUnuKe.js → Unit-jV5Bee8E.js} +2 -2
  37. package/dist/{Variant-DNqNIjGo.js → Variant-jGcgA-W8.js} +3 -3
  38. package/dist/{_id_-C3f3DoB2.js → _id_-CtvQ64EN.js} +9 -9
  39. package/dist/app-B6laFmet.js +2286 -0
  40. package/dist/{app-B-QXUPPG.js → app-eq7TaFfk.js} +1 -1
  41. package/dist/app.js +2 -2
  42. package/dist/apps/mf-menu/tsconfig.app.tsbuildinfo +1 -1
  43. package/dist/assets/{linked-status-dZQn0E-t.js → linked-status-Db18QnYH.js} +2 -2
  44. package/dist/assets/{menu-export-DjmfmMlF.js → menu-export-24uzPEwW.js} +2 -2
  45. package/dist/assets/{override-menu-VI40pTYL.js → override-menu-DreGPEa-.js} +2 -2
  46. package/dist/assets/{validate-menu-Bx6Q4XmI.js → validate-menu-BSFHH8O3.js} +2 -2
  47. package/dist/{catalog-lpCtSLwi.js → catalog-CXcQ-QmP.js} +1 -1
  48. package/dist/{catalogSetting-CjkTvvES.js → catalogSetting-DnUHD0I1.js} +1 -1
  49. package/dist/{currency-CvxKEiUE.js → currency-CwtLEvAZ.js} +1 -1
  50. package/dist/{dayjs.min-CIOb7sxL.js → dayjs.min-BgQgGKeN.js} +2 -2
  51. package/dist/{index-D2CiC7yd.js → index-Cx1Nqii7.js} +5 -5
  52. package/dist/{index-vQOhdIJK.js → index-D-Saeea8.js} +3 -3
  53. package/dist/{index.vue_vue_type_script_setup_true_lang-DJ_7qEQX.js → index.vue_vue_type_script_setup_true_lang-CA1qH7Vf.js} +5 -5
  54. package/dist/{item-BpsW9Dh2.js → item-CKRLnCIs.js} +14 -14
  55. package/dist/{jszip.min-Cu3w0lqa.js → jszip.min-DOHC0a7i.js} +3 -3
  56. package/dist/{menu-BDPvT1K5.js → menu-BduvULfe.js} +1 -1
  57. package/dist/{menuV2-D_qXpcQq.js → menuV2-Da1zBhkS.js} +94 -94
  58. package/dist/{priceTier-BfGUaC4W.js → priceTier-tObdSj6z.js} +1 -1
  59. package/dist/{rules-Dyypmwof.js → rules-DD816lrT.js} +3 -3
  60. package/dist/{scheduler-4eaMAOaq.js → scheduler-CDhxmmVX.js} +4 -4
  61. package/dist/{toExcel-BBKjTeeK.js → toExcel-tz6MIiQY.js} +2 -2
  62. package/dist/{unit-gujLoxgg.js → unit-NGl3h7Qh.js} +2 -2
  63. package/package.json +1 -1
  64. package/dist/Products-TpbvQRuF.js +0 -334
  65. package/dist/TreeEditorOpenner.vue_vue_type_script_setup_true_lang-EvzBnFBA.js +0 -6130
  66. package/dist/app-C6mqBuy7.js +0 -1643
  67. package/dist/index-ByYyYErE.js +0 -246
@@ -1,334 +0,0 @@
1
- import { defineComponent as T, computed as g, ref as W, resolveComponent as C, createBlock as _, openBlock as c, unref as e, withCtx as x, createElementVNode as b, toDisplayString as Z, createVNode as m, createCommentVNode as w, createElementBlock as Y, Fragment as U } from "vue";
2
- import { D as V } from "./dayjs.min-CIOb7sxL.js";
3
- import { J as re, F as ie } from "./jszip.min-Cu3w0lqa.js";
4
- import { u as K, B as Q, z, D as H, y as X, A as le, G as ue, H as L, I as ce } from "./index.vue_vue_type_script_setup_true_lang-DJ_7qEQX.js";
5
- import { w as me } from "./ImportProductDialog.vue_vue_type_script_setup_true_lang-Dossu1rN.js";
6
- import { A as de, b as pe, h as $ } from "./app-C6mqBuy7.js";
7
- import { useCoreStore as ee, useI18n as fe } from "@feedmepos/mf-common";
8
- import { useDialog as te, useDialogChild as ve, useSnackbar as ne, useBreakpoints as _e, FmButtonVariant as E, FmButtonColorThemeVariant as M } from "@feedmepos/ui-library";
9
- import { _ as A } from "./ResponsiveFabButton.vue_vue_type_script_setup_true_lang-Cn-3MRBO.js";
10
- import { _ as ge, a as O } from "./BottomSheetMenuItem.vue_vue_type_script_setup_true_lang-DhrXKy3b.js";
11
- import { _ as be } from "./PageLayout.vue_vue_type_script_setup_true_lang-2f0QfweQ.js";
12
- import { u as ye, a as ke } from "./menu-BDPvT1K5.js";
13
- import { u as xe } from "./item-BpsW9Dh2.js";
14
- import { _ as q, a as Se } from "./Product.vue_vue_type_script_setup_true_lang-C0G-qKY-.js";
15
- import { L as G } from "./LinkProductSideSheet-D4rj-g7A.js";
16
- import { _ as he } from "./TreeEditorOpenner.vue_vue_type_script_setup_true_lang-EvzBnFBA.js";
17
- import { u as Me } from "./Thumbnail.vue_vue_type_script_setup_true_lang-XOx8U70f.js";
18
- import { m as we } from "./toExcel-BBKjTeeK.js";
19
- function Ce(d) {
20
- return d.map((t) => ({
21
- ...t,
22
- subject: pe(t.subject),
23
- reason: t.source !== void 0 ? JSON.stringify(t.source) : t.reason
24
- }));
25
- }
26
- function Fe(d) {
27
- return new de(Ce(d));
28
- }
29
- function J(d, t, S) {
30
- const y = Array.isArray(d) ? d : [d], o = Fe(t), p = (n) => n.subject, f = (n) => o.can(n.action, p(n), n.field) ? !0 : n.coverSubject !== void 0 ? o.can(n.action, n.coverSubject, n.field) : !1, a = y.find((n) => !f(n));
31
- if (a) {
32
- const n = o.relevantRuleFor(
33
- a.action,
34
- p(a),
35
- a.field
36
- );
37
- return {
38
- granted: !1,
39
- decisivePermission: a,
40
- decisiveRule: n ?? null
41
- };
42
- }
43
- const l = y[0], v = o.relevantRuleFor(l.action, p(l), l.field);
44
- return { granted: !0, decisivePermission: l, decisiveRule: v ?? null };
45
- }
46
- const $e = { class: "space-y-24 mb-24" }, Ve = ["innerHTML"], Ee = { class: "flex justify-end gap-8" }, Ae = /* @__PURE__ */ T({
47
- __name: "ConfirmActionDialog",
48
- props: {
49
- description: {},
50
- value: {},
51
- message: { default: "To confirm your action, type <b>[[value]]</b> in the text field." }
52
- },
53
- setup(d) {
54
- const t = d, S = g(() => t.message.replace("[[value]]", t.value)), y = W(""), o = te(), { emitAction: p } = ve();
55
- return (f, a) => {
56
- const l = C("FmTextField"), v = C("FmButton"), n = C("FmForm");
57
- return c(), _(n, {
58
- "on-validation-success": () => e(p)("primary"),
59
- "blame-form-child-on-validation-failed": ""
60
- }, {
61
- default: x(() => [
62
- b("div", $e, [
63
- b("div", null, Z(f.description), 1),
64
- b("div", { innerHTML: S.value }, null, 8, Ve),
65
- b("div", null, [
66
- m(l, {
67
- modelValue: y.value,
68
- "onUpdate:modelValue": [
69
- a[0] || (a[0] = (k) => y.value = k),
70
- a[1] || (a[1] = () => {
71
- })
72
- ],
73
- placeholder: f.value,
74
- rules: [(k) => k === f.value || "Value does not match"]
75
- }, null, 8, ["modelValue", "placeholder", "rules"])
76
- ]),
77
- b("div", Ee, [
78
- m(v, {
79
- label: "Cancel",
80
- variant: "secondary",
81
- onClick: a[2] || (a[2] = (k) => e(o).close())
82
- }),
83
- m(v, {
84
- label: "Confirm",
85
- type: "submit"
86
- })
87
- ])
88
- ])
89
- ]),
90
- _: 1
91
- }, 8, ["on-validation-success"]);
92
- };
93
- }
94
- }), Te = /* @__PURE__ */ T({
95
- __name: "Migrate",
96
- setup(d) {
97
- const t = K(), S = ee(), y = ne(), { minor: o } = Q(y), p = W(!1), f = te();
98
- async function a() {
99
- l.value || p.value || f.open({
100
- title: "Migrate to new version",
101
- contentComponent: Ae,
102
- contentComponentProps: {
103
- value: "MIGRATE",
104
- description: "Do you want to migrate to new version? Once migrate it will unable to revert to the older version."
105
- }
106
- }).onPrimary(async () => {
107
- f.close(), await o(
108
- async () => {
109
- await t.migrate(), setTimeout(() => {
110
- window.location.reload();
111
- }, 2e3);
112
- },
113
- {
114
- isLoading: p,
115
- customId: t.state.menu._id,
116
- message: "Migrating menu",
117
- successMessage: "Migration completed"
118
- }
119
- );
120
- });
121
- }
122
- const l = g(() => {
123
- const v = S.restaurants.value;
124
- if (!v.length) return "Required at least one restaurant to migrate";
125
- const n = v.filter((h) => !h.posVersion || !z.Pos.canUse({ feature: H.F_FEATURE.enum.menuV4, posVersion: h.posVersion }));
126
- return n.length ? `Upgrade POS to V${z.Pos.minVersionToUse(H.F_FEATURE.enum.menuV4)} to use new menu: ${n.map((h) => h.profile.name).join(", ")}` : null;
127
- });
128
- return g(() => l.value ? l.value : "Migrate your menu to new version to enjoy more features. Content of new menu will remain the same as current."), (v, n) => {
129
- const k = C("FmSnackbar");
130
- return !l.value && e(t).version !== e(X.F_MENU_VERSION).enum.v4 ? (c(), _(k, {
131
- key: 0,
132
- class: "!max-w-full",
133
- title: "New version of menu is out now!",
134
- description: "Migrate your current menu version to the latest to enjoy more features such as product sequential dispatch, serving sequence, scheduler and more! Your content and current setting will be preserved.",
135
- variant: "info",
136
- action: "Migrate",
137
- "z-index": 0,
138
- onOnAction: a
139
- })) : w("", !0);
140
- };
141
- }
142
- }), Ie = "/assets/menu-export-DjmfmMlF.js", je = { class: "flex-1 flex justify-between gap-8 pl-8" }, De = { class: "flex items-center" }, Ne = { class: "bg-fm-color-neutral-gray-100 rounded-md px-8 py-4" }, Be = { class: "fm-typo-en-body-md-600 font-semibold" }, Re = { class: "flex gap-8" }, ot = /* @__PURE__ */ T({
143
- __name: "Products",
144
- setup(d) {
145
- const { t } = fe(), S = ee(), y = Q(ne()), o = K(), p = g(() => o.rules.item), f = xe(), a = g(() => !o.state.currentSchedulerId), { selectedCategories: l } = ye(), v = g(() => ({
146
- ...le.menuV4ToV3(ue(o.state.menu)),
147
- _id: o.state.menu._id,
148
- _rev: o.state.menu._rev
149
- })), n = g(() => {
150
- const u = L.flatten(l.value.map((s) => s.items));
151
- return L.uniqBy(u, (s) => s._id).length;
152
- });
153
- async function k(u, s) {
154
- const r = new re();
155
- for (let F = 0; F < u.length; F++)
156
- r.file(`${s[F]}.xlsx`, u[F]);
157
- const i = await r.generateAsync({ type: "blob" });
158
- ie.saveAs(i, `books_${V().format("DD-MM-YYYY_HH-mm")}.zip`);
159
- }
160
- async function h() {
161
- await y.minor(
162
- async () => {
163
- if (await o.readMenu(), o.version === X.F_MENU_VERSION.enum.v4) {
164
- const u = o.state.menu, s = V().format("DD-MM-YYYY_HH-mm"), r = [
165
- `menu_${s}`,
166
- `addonGroup_${s}`,
167
- `itemLinkedAddon_${s}`
168
- ], i = await ce(
169
- Ie,
170
- JSON.stringify({
171
- menu: u,
172
- attributeSettings: S.itemAttributeSettings.value
173
- })
174
- );
175
- await k(i, r);
176
- } else {
177
- const u = we(v.value), s = `menu_${V().format("DD-MM-YYYY_HH-mm")}`;
178
- await me(u, `${s}.xlsx`, {
179
- bookType: "xlsx",
180
- bookSST: !0,
181
- type: "array",
182
- compression: !0
183
- });
184
- }
185
- },
186
- { successMessage: "Menu exported", customId: o.state.menu._id }
187
- );
188
- }
189
- const {
190
- menuItems: I,
191
- categories: j,
192
- linkItemRules: D,
193
- handleSubmit: N,
194
- catalogManager: B,
195
- schedulerManager: R
196
- } = Me(!1), oe = _e(), ae = g(() => oe.breakpoints.value.xs), se = g(() => {
197
- var r;
198
- const u = ((r = S.sessionUser.value) == null ? void 0 : r.permissions) ?? [], s = {
199
- action: $.Action.manage,
200
- subject: $.Subject.Business.menu_menuManagement
201
- };
202
- return J([s], u).granted;
203
- }), P = g(() => {
204
- var r;
205
- const u = ((r = S.sessionUser.value) == null ? void 0 : r.permissions) ?? [], s = {
206
- action: $.Action.manage,
207
- subject: $.Subject.Business.menu_importExport
208
- };
209
- return J([s], u).granted;
210
- });
211
- return ke().resetOnMount(), (u, s) => {
212
- const r = C("fm-button");
213
- return c(), _(be, {
214
- heading: e(t)("menu.products.title")
215
- }, {
216
- default: x(() => [
217
- m(Te),
218
- m(Se)
219
- ]),
220
- "append-heading": x(() => [
221
- b("div", je, [
222
- b("div", De, [
223
- b("div", Ne, [
224
- b("p", Be, Z(n.value), 1)
225
- ])
226
- ]),
227
- b("div", Re, [
228
- ae.value ? (c(), _(q, { key: 1 }, {
229
- default: x(({ trigger: i }) => [
230
- m(ge, null, {
231
- default: x(() => [
232
- m(O, {
233
- label: e(t)("menu.products.actions.export"),
234
- onClick: h
235
- }, null, 8, ["label"]),
236
- m(O, {
237
- label: e(t)("menu.products.actions.import"),
238
- onClick: i
239
- }, null, 8, ["label", "onClick"])
240
- ]),
241
- _: 2
242
- }, 1024)
243
- ]),
244
- _: 1
245
- })) : (c(), Y(U, { key: 0 }, [
246
- se.value ? (c(), _(he, { key: 0 }, {
247
- default: x(({ trigger: i }) => [
248
- m(r, {
249
- label: e(t)("menu.tree_editor.title"),
250
- "bg-color": e(M).NeutralGray100,
251
- "text-color": e(M).TypoSecondary,
252
- variant: e(E).Primary,
253
- onClick: i
254
- }, null, 8, ["label", "bg-color", "text-color", "variant", "onClick"])
255
- ]),
256
- _: 1
257
- })) : w("", !0),
258
- P.value ? (c(), _(r, {
259
- key: 1,
260
- "bg-color": e(M).NeutralGray100,
261
- "text-color": e(M).TypoSecondary,
262
- variant: e(E).Primary,
263
- label: e(t)("menu.products.actions.export"),
264
- onClick: h
265
- }, null, 8, ["bg-color", "text-color", "variant", "label"])) : w("", !0),
266
- P.value ? (c(), _(q, { key: 2 }, {
267
- default: x(({ trigger: i }) => [
268
- m(r, {
269
- "bg-color": e(M).NeutralGray100,
270
- "text-color": e(M).TypoSecondary,
271
- variant: e(E).Primary,
272
- label: e(t)("menu.products.actions.import"),
273
- onClick: i
274
- }, null, 8, ["bg-color", "text-color", "variant", "label", "onClick"])
275
- ]),
276
- _: 1
277
- })) : w("", !0)
278
- ], 64)),
279
- n.value > 0 ? (c(), Y(U, { key: 2 }, [
280
- p.value.create ? (c(), _(A, {
281
- key: 0,
282
- label: e(t)("menu.products.actions.add"),
283
- "prepend-icon": "add",
284
- onClick: s[0] || (s[0] = (i) => e(f).create(null))
285
- }, null, 8, ["label"])) : a.value ? (c(), _(G, {
286
- key: 1,
287
- "categorized-items": e(B).linkableItems.value,
288
- "initial-value": e(B).currentItems.value,
289
- "show-variant": !1,
290
- "menu-items": e(I),
291
- categories: e(j),
292
- "link-item-rules": e(D),
293
- "no-scheduler": a.value,
294
- onSubmit: e(N)
295
- }, {
296
- default: x(({ trigger: i }) => [
297
- m(A, {
298
- label: e(t)("menu.products.actions.link"),
299
- "prepend-icon": "link",
300
- onClick: i
301
- }, null, 8, ["label", "onClick"])
302
- ]),
303
- _: 1
304
- }, 8, ["categorized-items", "initial-value", "menu-items", "categories", "link-item-rules", "no-scheduler", "onSubmit"])) : (c(), _(G, {
305
- key: 2,
306
- "categorized-items": e(R).linkableItems.value,
307
- "initial-value": e(R).currentItems.value,
308
- "show-variant": !1,
309
- "menu-items": e(I),
310
- categories: e(j),
311
- "link-item-rules": e(D),
312
- "no-scheduler": a.value,
313
- onSubmit: e(N)
314
- }, {
315
- default: x(({ trigger: i }) => [
316
- m(A, {
317
- label: e(t)("menu.products.actions.apply_scheduler"),
318
- onClick: i
319
- }, null, 8, ["label", "onClick"])
320
- ]),
321
- _: 1
322
- }, 8, ["categorized-items", "initial-value", "menu-items", "categories", "link-item-rules", "no-scheduler", "onSubmit"]))
323
- ], 64)) : w("", !0)
324
- ])
325
- ])
326
- ]),
327
- _: 1
328
- }, 8, ["heading"]);
329
- };
330
- }
331
- });
332
- export {
333
- ot as default
334
- };