@feedmepos/mf-menu 0.32.37 → 0.32.38-dev.1

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 (129) hide show
  1. package/dist/{App-Dl-BiHwh.js → App-DGdS9nht.js} +7 -7
  2. package/dist/{ApplyProduct.vue_vue_type_script_setup_true_lang-Z4PgBxr3.js → ApplyProduct.vue_vue_type_script_setup_true_lang-CBy3XScH.js} +3 -3
  3. package/dist/{Catalog-BSZ8BAbX.js → Catalog-BuI0IVpf.js} +6 -6
  4. package/dist/{Category-bGvXpr0F.js → Category-DSTt-Sl6.js} +9 -9
  5. package/dist/Category-DbL3CS-5.js +224 -0
  6. package/dist/{CookingGuide-DijUR2JM.js → CookingGuide-Baw7iMDl.js} +4 -4
  7. package/dist/{CustomAttributeChip.vue_vue_type_script_setup_true_lang-B30t_PW1.js → CustomAttributeChip.vue_vue_type_script_setup_true_lang-BDZDojOt.js} +1 -1
  8. package/dist/{Group-O4L3iHx0.js → Group-BnzmEllK.js} +1 -1
  9. package/dist/{Group-CrqE40ia.js → Group-D158_Fr0.js} +7 -7
  10. package/dist/{Group.vue_vue_type_script_setup_true_lang-CsM72Jnq.js → Group.vue_vue_type_script_setup_true_lang-C3H6xvlY.js} +227 -216
  11. package/dist/{GroupMarkupPriceDialog.vue_vue_type_script_setup_true_lang-BGR4kFzj.js → GroupMarkupPriceDialog.vue_vue_type_script_setup_true_lang-D2G40Yc6.js} +5 -5
  12. package/dist/{ImportProductDialog.vue_vue_type_script_setup_true_lang-wf0Wm51b.js → ImportProductDialog.vue_vue_type_script_setup_true_lang-D-JOSWUn.js} +1743 -1743
  13. package/dist/{Ingredient-DvvuwOdH.js → Ingredient-C-gP75uQ.js} +3 -3
  14. package/dist/{InventoryBinding.vue_vue_type_script_setup_true_lang-anFCPZZD.js → InventoryBinding.vue_vue_type_script_setup_true_lang-BpuYVaKl.js} +2 -2
  15. package/dist/{LinkProductSideSheet-ImK8azTA.js → LinkProductSideSheet-DN5fbJVw.js} +3 -3
  16. package/dist/{MenuSetting-BX0ohmwF.js → MenuSetting-CjQ6_Ti_.js} +5 -5
  17. package/dist/{PrintRoute-CXYZHJsf.js → PrintRoute-DK25vS8X.js} +4 -4
  18. package/dist/{Product-BnnwL5DZ.js → Product-DCEMAuw3.js} +1 -1
  19. package/dist/{Product.vue_vue_type_script_setup_true_lang-DUBnQJZ1.js → Product.vue_vue_type_script_setup_true_lang-DCutU0Ny.js} +348 -337
  20. package/dist/{ProductInternalTools-DzRnmE1r.js → ProductInternalTools-CiDa1V3D.js} +23 -23
  21. package/dist/{Products-CtzHONQZ.js → Products-DUxtMLiy.js} +32 -32
  22. package/dist/{Publish-DmIbDy8-.js → Publish-Bs5zVwDw.js} +3 -3
  23. package/dist/{Recipe-D_0Ezt1C.js → Recipe-_WCpFOU6.js} +4 -4
  24. package/dist/{RuleView.vue_vue_type_script_setup_true_lang-DdeQnyfQ.js → RuleView.vue_vue_type_script_setup_true_lang-3AVOVYpW.js} +366 -366
  25. package/dist/{Scheduler-BgQsbdVM.js → Scheduler-BqFwfRlm.js} +3 -3
  26. package/dist/{ServingSequence-DCRzJsrs.js → ServingSequence-ByNsE8ha.js} +3 -3
  27. package/dist/{Setting-CgtttPN_.js → Setting-widqJGfT.js} +5 -5
  28. package/dist/Subcategory-DXaz2g4-.js +345 -0
  29. package/dist/{Takeaway-BfcHs1we.js → Takeaway-Ce_y1_UW.js} +1 -1
  30. package/dist/{Takeaway-CExKsbN5.js → Takeaway-DVBJn6re.js} +4 -4
  31. package/dist/Takeaway.vue_vue_type_script_setup_true_lang-DK2Cp2Dg.js +316 -0
  32. package/dist/{Thumbnail.vue_vue_type_script_setup_true_lang-Br279NC_.js → Thumbnail.vue_vue_type_script_setup_true_lang-CAiNaQMP.js} +4 -4
  33. package/dist/TranslationSideSheet.vue_vue_type_script_setup_true_lang-BPs9D7Pq.js +185 -0
  34. package/dist/TreeEditorOpenner.vue_vue_type_script_setup_true_lang-nFLEeipN.js +6120 -0
  35. package/dist/{Unit-B6P_ykM-.js → Unit-XJLHLSYf.js} +2 -2
  36. package/dist/Variant-BA1AQl9-.js +247 -0
  37. package/dist/{_id_-D2ozS9Ck.js → _id_-CA2rV7Eb.js} +9 -9
  38. package/dist/app-C9zsFCoJ.js +363 -0
  39. package/dist/{app-DqyNXgYz.js → app-D2Sxejos.js} +1 -1
  40. package/dist/app.js +1 -1
  41. package/dist/apps/mf-menu/src/app.d.ts +264 -0
  42. package/dist/apps/mf-menu/src/components/ProductTranslationDialog.vue.d.ts +41 -0
  43. package/dist/apps/mf-menu/src/components/TranslationBadge.vue.d.ts +29 -0
  44. package/dist/apps/mf-menu/src/components/TranslationFieldSection.vue.d.ts +39 -0
  45. package/dist/apps/mf-menu/src/components/TranslationSideSheet.vue.d.ts +23 -0
  46. package/dist/apps/mf-menu/src/components/feature/ApplyProduct/ApplyProduct.vue.d.ts +12 -0
  47. package/dist/apps/mf-menu/src/components/feature/ApplyProduct/ApplyProductDialog.vue.d.ts +6 -0
  48. package/dist/apps/mf-menu/src/components/feature/ApplyProduct/index.d.ts +54 -0
  49. package/dist/apps/mf-menu/src/components/feature/CategoryManager/Form.vue.d.ts +1 -0
  50. package/dist/apps/mf-menu/src/components/feature/Fields/ImageDropField.vue.d.ts +1 -0
  51. package/dist/apps/mf-menu/src/components/feature/GroupManager/OptionTable.vue.d.ts +16 -0
  52. package/dist/apps/mf-menu/src/components/feature/GroupManager/ProductOverrideTranslation.vue.d.ts +22 -0
  53. package/dist/apps/mf-menu/src/components/feature/GroupManager/UpdateForm.vue.d.ts +6 -0
  54. package/dist/apps/mf-menu/src/components/feature/PriceTier/PriceTierButton.vue.d.ts +20 -0
  55. package/dist/apps/mf-menu/src/components/feature/PriceTier/PriceTierForm.vue.d.ts +20 -0
  56. package/dist/apps/mf-menu/src/components/feature/TreeEditor/composable/category.d.ts +8 -2
  57. package/dist/apps/mf-menu/src/components/feature/TreeEditor/composable/item.d.ts +24 -1
  58. package/dist/apps/mf-menu/src/components/feature/TreeEditor/composable/scheduler.d.ts +16 -0
  59. package/dist/apps/mf-menu/src/components/feature/TreeEditor/composable/useItemFormManagement.d.ts +10 -0
  60. package/dist/apps/mf-menu/src/components/feature/TreeEditor/form/GroupManager/OptionTable.vue.d.ts +16 -0
  61. package/dist/apps/mf-menu/src/components/feature/TreeEditor/form/GroupManager/UpdateForm.vue.d.ts +6 -0
  62. package/dist/apps/mf-menu/src/components/feature/TreeEditor/form/GroupManager/index.d.ts +24 -0
  63. package/dist/apps/mf-menu/src/components/feature/TreeEditor/item/ItemForm.vue.d.ts +30 -0
  64. package/dist/apps/mf-menu/src/components/feature/TreeEditor/menuUtils.d.ts +10 -0
  65. package/dist/apps/mf-menu/src/components/feature/TreeEditor/store/menuV2.d.ts +125 -1
  66. package/dist/apps/mf-menu/src/components/feature/VariantManager/ProductVariantTranslation.vue.d.ts +37 -0
  67. package/dist/apps/mf-menu/src/components/import/PreviewAddonContent.vue.d.ts +20 -0
  68. package/dist/apps/mf-menu/src/composable/linkProducts.d.ts +16 -0
  69. package/dist/apps/mf-menu/src/helper/item.d.ts +1 -0
  70. package/dist/apps/mf-menu/src/helper/itemCategories.d.ts +10 -0
  71. package/dist/apps/mf-menu/src/helper/menu.d.ts +11 -0
  72. package/dist/apps/mf-menu/src/helper/menuImport.d.ts +125 -1
  73. package/dist/apps/mf-menu/src/helper/menuSanitizer.d.ts +125 -1
  74. package/dist/apps/mf-menu/src/manager/menu/category.d.ts +8 -2
  75. package/dist/apps/mf-menu/src/manager/menu/group.d.ts +1 -0
  76. package/dist/apps/mf-menu/src/manager/menu/item.d.ts +125 -1
  77. package/dist/apps/mf-menu/src/manager/menu/subcategory.d.ts +6 -0
  78. package/dist/apps/mf-menu/src/stores/manager/item.d.ts +31 -1
  79. package/dist/apps/mf-menu/src/stores/manager/scheduler.d.ts +16 -0
  80. package/dist/apps/mf-menu/src/stores/manager/takeaway.d.ts +9 -0
  81. package/dist/apps/mf-menu/src/stores/menu.d.ts +125 -1
  82. package/dist/apps/mf-menu/src/utils/translation.d.ts +2 -0
  83. package/dist/apps/mf-menu/src/views/Catalog/Edit/AddCategoryDialogContentComponent.vue.d.ts +1 -0
  84. package/dist/apps/mf-menu/src/views/Catalog/Edit/AddProductPopup/Form.vue.d.ts +20 -0
  85. package/dist/apps/mf-menu/src/views/Publish/UpdateCatalogDialog.vue.d.ts +46 -0
  86. package/dist/apps/mf-menu/src/views/Scheduler/FilterForm.vue.d.ts +10 -0
  87. package/dist/apps/mf-menu/src/views/Scheduler/SchedulerDialog.vue.d.ts +10 -0
  88. package/dist/apps/mf-menu/tsconfig.app.tsbuildinfo +1 -1
  89. package/dist/assets/linked-status-BrleJSCp.js +13 -0
  90. package/dist/assets/menu-export-Da3-wtnw.js +107 -0
  91. package/dist/assets/override-menu-ChjeVe4O.js +13 -0
  92. package/dist/assets/validate-menu-YVTxOfeq.js +13 -0
  93. package/dist/{catalog-CFKVaXk7.js → catalog-YvUT-JIh.js} +1 -1
  94. package/dist/{catalogSetting-N4nT-nGm.js → catalogSetting-CXOYJZO3.js} +1 -1
  95. package/dist/{currency-Bi_GukGE.js → currency-np4zdWW1.js} +1 -1
  96. package/dist/dayjs.min-CSuLNurY.js +6 -0
  97. package/dist/{index-uiJS0BKT.js → index-3wQe-6lg.js} +1 -1
  98. package/dist/index-CFbB7bM3.js +335 -0
  99. package/dist/index-Cek4Z9eM.js +539 -0
  100. package/dist/{index.vue_vue_type_script_setup_true_lang-CL6a622s.js → index.vue_vue_type_script_setup_true_lang-HZXySVXs.js} +18858 -18656
  101. package/dist/item-DR9qrNf6.js +8117 -0
  102. package/dist/{jszip.min-v__o3BM4.js → jszip.min-Bz8ZTO2s.js} +2 -2
  103. package/dist/{menu-LtIuM7Qj.js → menu-BWsDRctK.js} +1 -1
  104. package/dist/{menuV2-N0hB53Gw.js → menuV2-CfsbyMis.js} +39 -39
  105. package/dist/mf-menu.css +1 -1
  106. package/dist/{priceTier-DZeAvlXs.js → priceTier-BNCJtFVM.js} +1 -1
  107. package/dist/rules-DU-MRKWH.js +212 -0
  108. package/dist/{scheduler-FVlscyjB.js → scheduler-BizSj8q8.js} +4 -4
  109. package/dist/{toExcel-DBCbupeI.js → toExcel-DhRigI9c.js} +2 -2
  110. package/dist/translation-BeqjfyEb.js +75 -0
  111. package/dist/{unit-DNphv-4C.js → unit-CaOym7HP.js} +2 -2
  112. package/package.json +3 -3
  113. package/dist/Category-DMgNea31.js +0 -392
  114. package/dist/Subcategory-6SgvwWpX.js +0 -280
  115. package/dist/Takeaway.vue_vue_type_script_setup_true_lang-GAZ3S2_n.js +0 -305
  116. package/dist/TreeEditorOpenner.vue_vue_type_script_setup_true_lang-BFwMfAlB.js +0 -6024
  117. package/dist/Variant-DmNuLi96.js +0 -230
  118. package/dist/app-CE0yoao0.js +0 -363
  119. package/dist/assets/linked-status-BB6BrSUB.js +0 -13
  120. package/dist/assets/menu-export-C1TBcoi-.js +0 -107
  121. package/dist/assets/override-menu-C0RijOOI.js +0 -13
  122. package/dist/assets/validate-menu-9VpR7oZY.js +0 -13
  123. package/dist/category-BSGaVgyv.js +0 -156
  124. package/dist/dayjs.min-DgXlcVSD.js +0 -6
  125. package/dist/index-BaxQ5Nq0.js +0 -273
  126. package/dist/index-Bun2EboK.js +0 -239
  127. package/dist/item-DPivBmJh.js +0 -6950
  128. package/dist/rules-CIWTZQfh.js +0 -6
  129. package/dist/subcategory-CIctYwBF.js +0 -148
@@ -1,280 +0,0 @@
1
- import { defineComponent as L, ref as w, watch as W, resolveComponent as y, createElementBlock as V, openBlock as p, Fragment as P, renderSlot as X, createVNode as m, unref as t, withCtx as h, createElementVNode as s, toDisplayString as T, computed as F, h as U, withModifiers as R, getCurrentInstance as Z, renderList as ee, createBlock as M, createCommentVNode as te } from "vue";
2
- import { useI18n as B } from "@feedmepos/mf-common";
3
- import { useSnackbar as O, components as j, useDialog as Y, FmButtonVariant as z, useBreakpoints as ae, FmButtonColorThemeVariant as oe } from "@feedmepos/ui-library";
4
- import { _ as ne } from "./ResponsiveFabButton.vue_vue_type_script_setup_true_lang-Cn-3MRBO.js";
5
- import { G as D, u as N, Q as A, M as K, A as G, a5 as le } from "./index.vue_vue_type_script_setup_true_lang-CL6a622s.js";
6
- import { _ as se } from "./PageLayout.vue_vue_type_script_setup_true_lang-2f0QfweQ.js";
7
- import { _ as re } from "./app-CE0yoao0.js";
8
- import { c as ie } from "./createForm-BoUQeZTd.js";
9
- import { u as ce } from "./discardConfirm-BHni0LNu.js";
10
- import { c as I } from "./object-DVUNCr7w.js";
11
- import { r as ue } from "./rules-CIWTZQfh.js";
12
- import { c as de } from "./check-C9mY6LiX.js";
13
- import { u as q } from "./subcategory-CIctYwBF.js";
14
- import { a as me } from "./menu-LtIuM7Qj.js";
15
- const pe = {
16
- class: "fm-typo-en-title-md-600"
17
- }, _e = {
18
- class: "flex flex-col gap-32 h-full min-h-0 py-16"
19
- }, fe = {
20
- class: "flex gap-8 items-center justify-start"
21
- }, ge = /* @__PURE__ */ L({
22
- __name: "Form",
23
- props: {
24
- initialValue: {}
25
- },
26
- setup(S, {
27
- expose: f
28
- }) {
29
- const _ = S, x = O(), g = D(x), k = A(g), d = N(), {
30
- t: a
31
- } = B(), v = w(!1), e = w(!1), b = (r) => {
32
- de.isBoolean(r) ? e.value = r : e.value = !e.value;
33
- }, n = w(I(_.initialValue)), $ = ce(() => n.value.name !== _.initialValue.name, () => {
34
- e.value = !1;
35
- });
36
- async function E() {
37
- const r = d.subcategories.find((C) => C._id === n.value._id), {
38
- updateMenu: c
39
- } = k;
40
- await c({
41
- module: G.F_MENU_MODULE_V4_KEY.enum.subCategory,
42
- operation: K.F_OPERATION_TYPE.update,
43
- // @ts-ignore FIXME: The backend hasn't exported SubcategoryRequest yet. Fix this once it's available.
44
- data: {
45
- ...r,
46
- name: n.value.name ?? (r == null ? void 0 : r.name)
47
- }
48
- }, n.value.name), b(!1);
49
- }
50
- return W(() => e.value, () => {
51
- e.value && (n.value = I(_.initialValue));
52
- }), f({
53
- trigger: b,
54
- show: e
55
- }), (r, c) => {
56
- const C = y("FmTextField"), o = y("fm-button"), l = y("fm-side-sheet");
57
- return p(), V(P, null, [X(r.$slots, "default", {
58
- trigger: b
59
- }), m(l, {
60
- id: "group-form",
61
- modelValue: e.value,
62
- "onUpdate:modelValue": c[2] || (c[2] = (u) => e.value = u),
63
- "is-container": t(j).FmForm,
64
- "is-container-props": {
65
- onValidationSuccess: E,
66
- blameFormChildOnValidationFailed: !0
67
- },
68
- "max-width": 560,
69
- "onOn:clickedAway": t($)
70
- }, {
71
- "side-sheet-header": h(() => [s("p", pe, T(t(a)("menu.subcategory.title")), 1)]),
72
- "side-sheet-footer": h(() => [s("div", fe, [m(o, {
73
- label: t(a)("menu.common.actions.update"),
74
- loading: v.value,
75
- size: "lg",
76
- type: "submit",
77
- variant: "primary",
78
- disabled: !n.value._id
79
- }, null, 8, ["label", "loading", "disabled"]), m(o, {
80
- label: t(a)("menu.common.actions.cancel"),
81
- size: "lg",
82
- variant: "tertiary",
83
- onClick: c[1] || (c[1] = () => e.value = !1)
84
- }, null, 8, ["label"])])]),
85
- default: h(() => [s("div", _e, [m(C, {
86
- label: t(a)("menu.subcategory.name"),
87
- modelValue: n.value.name,
88
- "onUpdate:modelValue": c[0] || (c[0] = (u) => n.value.name = u),
89
- disabled: !n.value._id,
90
- rules: [t(ue)]
91
- }, null, 8, ["label", "modelValue", "disabled", "rules"])])]),
92
- _: 1
93
- }, 8, ["modelValue", "is-container", "is-container-props", "onOn:clickedAway"])], 64);
94
- };
95
- }
96
- }), ve = ge, be = {
97
- key: 0
98
- }, ye = {
99
- class: "flex justify-end items-center"
100
- }, he = {
101
- class: "w-[320px]"
102
- }, xe = {
103
- key: 1,
104
- class: "flex-1 flex flex-col min-h-0"
105
- }, ke = {
106
- class: "p-8"
107
- }, Ce = {
108
- class: "flex flex-1 flex-col min-h-0 overflow-scroll divide-y divide-fm-color-neutral-gray-100 pb-64"
109
- }, Ve = ["onClick"], we = {
110
- class: "flex-1 space-y-4"
111
- }, Fe = {
112
- class: "fm-typo-en-body-lg-600"
113
- }, Me = /* @__PURE__ */ L({
114
- __name: "SubcategoryTable",
115
- setup(S) {
116
- const f = Y(), _ = O(), x = D(_), g = A(x), k = q({
117
- dialog: f,
118
- menuLoader: g
119
- }), d = F(() => N().subcategories), a = w(""), v = F(() => d.value.filter((o) => o.name.toLowerCase().includes(a.value.toLowerCase()))), {
120
- t: e
121
- } = B(), b = w([{
122
- accessorKey: "name",
123
- header: () => e("menu.subcategory.columns.title"),
124
- enableSorting: !1,
125
- meta: {
126
- width: "auto"
127
- }
128
- }, {
129
- id: "actions",
130
- size: 52,
131
- meta: {
132
- cellClass: "pl-16",
133
- headerContentClass: "-mx-16"
134
- },
135
- header: "",
136
- cell: (o) => {
137
- const l = o.row.original;
138
- return U("div", {
139
- class: "flex justify-end"
140
- }, [U(j.FmButton, {
141
- icon: "delete",
142
- disabled: !l._id,
143
- variant: "tertiary",
144
- textColor: "neutral-gray-400",
145
- onClick: R(async () => {
146
- await n(l);
147
- }, ["stop", "prevent"])
148
- })]);
149
- }
150
- }]);
151
- async function n(o) {
152
- if (!o._id) {
153
- _.open({
154
- message: e("menu.subcategory.dialog.remove.error"),
155
- type: "warning"
156
- });
157
- return;
158
- }
159
- f.open({
160
- title: e("menu.subcategory.dialog.remove.title"),
161
- message: e("menu.common.dialog.remove_confirmation", {
162
- name: o.name
163
- }),
164
- primaryActions: {
165
- text: "Remove",
166
- close: !0,
167
- variant: z.Destructive
168
- },
169
- secondaryActions: {
170
- text: "Cancel",
171
- close: !0
172
- }
173
- }).onPrimary(async () => {
174
- await g.updateMenu({
175
- module: G.F_MENU_MODULE_V4_KEY.enum.subCategory,
176
- operation: K.F_OPERATION_TYPE.delete,
177
- data: o._id
178
- }, o.name, !0);
179
- });
180
- }
181
- async function $(o) {
182
- const l = o.map((u) => u._id).filter((u) => !!u);
183
- await k.rearrange(l);
184
- }
185
- const E = Z();
186
- async function r(o) {
187
- ie(E, ve, {
188
- initialValue: o
189
- });
190
- }
191
- const c = ae(), C = F(() => c.breakpoints.value.xs);
192
- return (o, l) => {
193
- const u = y("FmSearch"), Q = y("FmTable"), H = y("FmButton");
194
- return C.value ? (p(), V("div", xe, [s("div", ke, [m(u, {
195
- autofocus: "",
196
- modelValue: a.value,
197
- "onUpdate:modelValue": l[2] || (l[2] = (i) => a.value = i),
198
- class: "w-full",
199
- placeholder: t(e)("menu.common.labels.search_placeholder", {
200
- type: "categories"
201
- })
202
- }, null, 8, ["modelValue", "placeholder"])]), s("div", Ce, [(p(!0), V(P, null, ee(v.value, (i) => (p(), V("div", {
203
- key: i._id || "",
204
- class: "flex flex-row py-12 px-16",
205
- onClick: (J) => r(i)
206
- }, [s("div", we, [s("p", Fe, T(i.name), 1)]), m(H, {
207
- "text-color": t(oe).NeutralGray400,
208
- variant: t(z).Tertiary,
209
- "prepend-icon": "delete",
210
- disabled: !i._id,
211
- onClick: R((J) => n(i), ["stop"])
212
- }, null, 8, ["text-color", "variant", "disabled", "onClick"])], 8, Ve))), 128))])])) : (p(), V("div", be, [s("div", ye, [s("div", he, [m(u, {
213
- modelValue: a.value,
214
- "onUpdate:modelValue": l[0] || (l[0] = (i) => a.value = i),
215
- autofocus: "",
216
- class: "mb-8",
217
- placeholder: t(e)("menu.common.labels.search_placeholder", {
218
- type: t(e)("menu.subcategory.title")
219
- })
220
- }, null, 8, ["modelValue", "placeholder"])])]), m(re, null, {
221
- default: h(() => [m(Q, {
222
- "column-defs": b.value,
223
- draggable: !0,
224
- "page-size": d.value.length,
225
- "row-data": d.value,
226
- "search-value": a.value,
227
- "shrink-at": !1,
228
- "hide-footer": "",
229
- "pin-header-row": "",
230
- onDndChanged: $,
231
- onRowClick: l[1] || (l[1] = (i) => r(i.original))
232
- }, null, 8, ["column-defs", "page-size", "row-data", "search-value"])]),
233
- _: 1
234
- })]));
235
- };
236
- }
237
- }), Se = { class: "flex-1 flex justify-between gap-8 pl-8" }, $e = { class: "flex items-center" }, Ee = { class: "bg-fm-color-neutral-gray-100 rounded-md px-8 py-4" }, Le = { class: "fm-typo-en-body-md-600 font-semibold" }, Ge = /* @__PURE__ */ L({
238
- __name: "Subcategory",
239
- setup(S) {
240
- const f = Y(), _ = O(), x = D(_), g = A(x), k = q({ dialog: f, menuLoader: g }), d = F(() => N().subcategories), { t: a } = B();
241
- function v() {
242
- k.create();
243
- }
244
- const e = F(() => d.value.length);
245
- return me().resetOnMount(), (b, n) => (p(), M(se, {
246
- heading: t(a)("menu.subcategory.title")
247
- }, {
248
- default: h(() => [
249
- d.value.length > 0 ? (p(), M(Me, { key: 0 })) : (p(), M(t(le), {
250
- key: 1,
251
- action: {
252
- text: t(a)("menu.subcategory.add"),
253
- callback: v
254
- },
255
- subtitle: t(a)("menu.subcategory.empty.subtitle"),
256
- title: t(a)("menu.subcategory.empty.title")
257
- }, null, 8, ["action", "subtitle", "title"]))
258
- ]),
259
- "append-heading": h(() => [
260
- s("div", Se, [
261
- s("div", $e, [
262
- s("div", Ee, [
263
- s("p", Le, T(e.value), 1)
264
- ])
265
- ]),
266
- d.value.length > 0 ? (p(), M(ne, {
267
- key: 0,
268
- label: t(a)("menu.subcategory.add"),
269
- "prepend-icon": "add",
270
- onClick: v
271
- }, null, 8, ["label"])) : te("", !0)
272
- ])
273
- ]),
274
- _: 1
275
- }, 8, ["heading"]));
276
- }
277
- });
278
- export {
279
- Ge as default
280
- };
@@ -1,305 +0,0 @@
1
- import { getCurrentInstance as te, defineComponent as oe, computed as h, watch as ne, h as R, resolveComponent as S, createElementBlock as C, openBlock as _, Fragment as O, normalizeClass as D, createElementVNode as k, createVNode as V, unref as t, isRef as j, withCtx as P, renderList as ie, createBlock as G, createCommentVNode as $, toDisplayString as I, withModifiers as Q } from "vue";
2
- import { G as H, u as J, Q as W, M as N, A as z, I as L, B as se, ap as q, a5 as re } from "./index.vue_vue_type_script_setup_true_lang-CL6a622s.js";
3
- import { useI18n as X, useCoreStore as le } from "@feedmepos/mf-common";
4
- import { useDialog as ce, useSnackbar as Z, FmButtonVariant as A, components as de, useBreakpoints as ue } from "@feedmepos/ui-library";
5
- import { _ as me } from "./app-CE0yoao0.js";
6
- import { a as ye, l as ee, T as pe } from "./index-BaxQ5Nq0.js";
7
- import { u as fe } from "./search-BAPEUu1R.js";
8
- import { f as F } from "./currency-Bi_GukGE.js";
9
- import { defineStore as _e } from "pinia";
10
- import { C as ke } from "./catalog-CFKVaXk7.js";
11
- import { c as ve } from "./createComponentProgrammatically-Bt2rn1IQ.js";
12
- function we(T, M, l, m) {
13
- var y, v, w, g;
14
- const i = L(T);
15
- i.override.takeaway[l._id] = {
16
- price: l.price || void 0
17
- };
18
- const f = [...l.usedBy, ...M.usedBy];
19
- for (const r of f) {
20
- const c = l.usedBy.some(
21
- (e) => e._id == r._id && e.combinationKey == r.combinationKey
22
- ) ? l._id : null, a = (i.override.items[r._id] || []).findIndex(
23
- (e) => e.combinationKey === r.combinationKey
24
- );
25
- let d;
26
- if (a >= 0)
27
- d = (y = i.override.items[r._id][a]) != null && y.takeawayUsed ? L((v = i.override.items[r._id][a]) == null ? void 0 : v.takeawayUsed) : void 0;
28
- else {
29
- const e = m.find((u) => u._id === r._id);
30
- r.combinationKey ? d = ((g = (w = e == null ? void 0 : e.variant) == null ? void 0 : w.variantCombinations.find(
31
- (u) => u.combinationKey === r.combinationKey
32
- )) == null ? void 0 : g.takeawayUsed) || (e == null ? void 0 : e.takeawayUsed) : d = e == null ? void 0 : e.takeawayUsed;
33
- }
34
- if (a >= 0)
35
- i.override.items[r._id][a].takeawayUsed = c;
36
- else if (d !== c) {
37
- const e = {
38
- _id: r._id,
39
- combinationKey: r.combinationKey,
40
- takeawayUsed: c
41
- };
42
- i.override.items[r._id] = [...i.override.items[r._id] || [], e];
43
- }
44
- }
45
- return i;
46
- }
47
- const ge = _e("takeaway-manager", () => {
48
- const T = ce(), M = Z(), l = H(M), m = W(l), i = J(), f = te(), { t: y } = X(), v = (a) => {
49
- var e, u;
50
- const { vNode: d } = ve(
51
- ye,
52
- f,
53
- a
54
- );
55
- (u = (e = d.component) == null ? void 0 : e.exposed) == null || u.trigger();
56
- };
57
- async function w(a) {
58
- var u, U;
59
- const e = ((U = (u = i.currentCatalog) == null ? void 0 : u.override.takeaway[a._id]) == null ? void 0 : U.price) ? null : i.state.menu.modules.takeaway.find((b) => b._id === a._id);
60
- v({
61
- initialValue: a,
62
- applyProduct: !0,
63
- bindToVariant: i.rules.item.bindToVariant,
64
- fallback: e,
65
- action: "update",
66
- "onUpdate:takeaway": async (b) => {
67
- let o = L(i.currentCatalog);
68
- b.price ? o.override.takeaway[a._id] = { price: b.price } : delete o.override.takeaway[a._id], o = we(o, a, b, i.state.menu.modules.item), await new ke(o, i, m.updateMenu, T).update();
69
- }
70
- });
71
- }
72
- async function g(a) {
73
- v({
74
- initialValue: a,
75
- bindToVariant: i.rules.item.bindToVariant,
76
- applyProduct: !0,
77
- action: "update",
78
- "onUpdate:takeaway": async (d) => {
79
- await m.updateMenu(
80
- {
81
- module: z.F_MENU_MODULE_V4_KEY.enum.takeaway,
82
- operation: N.F_OPERATION_TYPE.update,
83
- data: d,
84
- link: ee(d.usedBy || [])
85
- },
86
- d.name
87
- );
88
- }
89
- });
90
- }
91
- async function r(a) {
92
- i.currentCatalog ? await w(a) : await g(a);
93
- }
94
- async function c(a) {
95
- T.open({
96
- title: y("menu.common.dialog.remove.takeaway.title"),
97
- message: y("menu.common.dialog.remove.takeaway.message", { name: a.name }),
98
- primaryActions: {
99
- text: y("menu.common.actions.remove"),
100
- close: !0,
101
- variant: A.Destructive
102
- },
103
- secondaryActions: {
104
- text: y("menu.common.actions.cancel"),
105
- close: !0
106
- }
107
- }).onPrimary(async () => {
108
- await m.updateMenu(
109
- {
110
- module: z.F_MENU_MODULE_V4_KEY.enum.takeaway,
111
- operation: N.F_OPERATION_TYPE.delete,
112
- data: a._id
113
- },
114
- a.name,
115
- !0
116
- );
117
- });
118
- }
119
- return {
120
- deleteTakeaway: c,
121
- updateTakeaway: r
122
- };
123
- }), be = {
124
- key: 0,
125
- class: /* @__PURE__ */ D(["flex-1 overflow-hidden", "space-y-16", "flex flex-col", "overflow-hidden", "pt-16"])
126
- }, he = {
127
- class: "flex items-center space-x-8 justify-end"
128
- }, xe = {
129
- class: "w-[320px]"
130
- }, Ce = {
131
- class: "px-16 pt-8"
132
- }, Ve = {
133
- class: /* @__PURE__ */ D(["flex-1", "overflow-scroll", "divide-y divide-fm-color-neutral-gray-100"])
134
- }, Te = ["onClick"], Me = {
135
- class: "flex-1"
136
- }, Ue = {
137
- class: "fm-typo-en-body-lg-600 mb-4"
138
- }, Ee = {
139
- class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary"
140
- }, Ke = {
141
- class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary"
142
- }, Ie = {
143
- key: 1,
144
- class: "xs:pt-24"
145
- }, Re = /* @__PURE__ */ oe({
146
- __name: "Takeaway",
147
- emits: ["update:count"],
148
- setup(T, {
149
- emit: M
150
- }) {
151
- const l = J(), m = ge(), i = h(() => l.rules.item.bindToVariant), f = h(() => l.rules.takeaway), y = W(H(Z())), v = le(), w = h(() => se.Country.getCountry(v.currentCountry.value).currency), g = h(() => l.takeaways.map((o) => ({
152
- ...o,
153
- usedBy: l.items.reduce((s, p) => {
154
- var n, E, Y;
155
- const x = p.takeawayUsed === o._id;
156
- if ((!i.value || !((E = (n = p.variant) == null ? void 0 : n.variantGroupIds) != null && E.length)) && x)
157
- s.push({
158
- _id: p._id
159
- });
160
- else {
161
- const ae = (((Y = p.variant) == null ? void 0 : Y.variantCombinations) || []).filter((K) => K.takeawayUsed === o._id || !K.takeawayUsed && x).map((K) => ({
162
- _id: p._id,
163
- combinationKey: K.combinationKey
164
- }));
165
- s = [...s, ...ae];
166
- }
167
- return s;
168
- }, [])
169
- }))), {
170
- filter: r,
171
- searchKey: c
172
- } = fe(), a = h(() => g.value.filter((o) => r([o.name, F(o.price, !1)]))), d = M;
173
- ne(() => a.value.length, (o) => {
174
- d("update:count", o);
175
- }, {
176
- immediate: !0
177
- });
178
- const {
179
- t: e
180
- } = X(), u = h(() => [{
181
- accessorKey: "name",
182
- header: () => e("menu.takeaway.table.columns.name"),
183
- enableSorting: !1,
184
- size: 700
185
- }, {
186
- accessorKey: "price",
187
- header: () => e("menu.takeaway.table.columns.price", {
188
- symbol: w.value.symbol
189
- }),
190
- enableSorting: !1,
191
- size: 200,
192
- meta: {
193
- textAlign: "right"
194
- },
195
- cell: (o) => {
196
- const s = o.getValue();
197
- return F(s, !1);
198
- }
199
- }, {
200
- accessorKey: "usedBy",
201
- header: () => e("menu.takeaway.table.columns.products"),
202
- enableSorting: !1,
203
- size: 200,
204
- cell: (o) => {
205
- const s = o.getValue(), p = q(l.categorizedItems, s).flatMap((x) => x.items).length ?? 0;
206
- return e("menu.takeaway.table.items_linked", {
207
- count: p
208
- });
209
- }
210
- }, {
211
- id: "action",
212
- size: 52,
213
- meta: {
214
- cellClass: "pl-16",
215
- headerContentClass: "-mx-16"
216
- },
217
- cell: (o) => R("div", {
218
- class: "flex justify-end items-center"
219
- }, [f.value.delete ? R(de.FmButton, {
220
- prependIcon: "delete",
221
- variant: A.Tertiary,
222
- textColor: "neutral-gray-400",
223
- onClick: (s) => {
224
- s.stopPropagation(), m.deleteTakeaway(o.row.original);
225
- }
226
- }) : null])
227
- }]), U = ue(), b = h(() => U.breakpoints.value.xs);
228
- return (o, s) => {
229
- const p = S("fm-search"), x = S("fm-table"), B = S("fm-button");
230
- return g.value.length ? (_(), C(O, {
231
- key: 0
232
- }, [b.value ? (_(), C(O, {
233
- key: 1
234
- }, [k("div", Ce, [V(p, {
235
- class: "w-full",
236
- autofocus: "",
237
- modelValue: t(c),
238
- "onUpdate:modelValue": s[2] || (s[2] = (n) => j(c) ? c.value = n : null),
239
- placeholder: t(e)("menu.takeaway.table.search.placeholder")
240
- }, null, 8, ["modelValue", "placeholder"])]), k("div", Ve, [(_(!0), C(O, null, ie(a.value, (n) => (_(), C("div", {
241
- key: n._id,
242
- class: D(["py-12 px-16", "flex space-x-8", "items-center"]),
243
- onClick: () => {
244
- f.value.edit && t(m).updateTakeaway(n);
245
- }
246
- }, [k("div", Me, [k("p", Ue, I(n.name), 1), k("p", Ee, I(`${t(q)(t(l).categorizedItems, n.usedBy).flatMap((E) => E.items).length ?? 0} items linked`), 1), k("p", Ke, " Price: " + I(w.value.symbol) + I(t(F)(n.price, !1)), 1)]), f.value.delete ? (_(), G(B, {
247
- key: 0,
248
- variant: t(A).Tertiary,
249
- "text-color": "neutral-gray-400",
250
- "prepend-icon": "delete",
251
- onClick: Q(() => t(m).deleteTakeaway(n), ["stop"])
252
- }, null, 8, ["variant", "onClick"])) : $("", !0)], 8, Te))), 128))])], 64)) : (_(), C("div", be, [k("div", he, [k("div", xe, [V(p, {
253
- autofocus: "",
254
- modelValue: t(c),
255
- "onUpdate:modelValue": s[0] || (s[0] = (n) => j(c) ? c.value = n : null),
256
- placeholder: t(e)("menu.takeaway.table.search.placeholder")
257
- }, null, 8, ["modelValue", "placeholder"])])]), V(me, null, {
258
- default: P(() => [V(x, {
259
- "column-defs": u.value,
260
- loading: t(y).checkMenuIsLoading(),
261
- "page-size": a.value.length,
262
- "row-data": a.value,
263
- "search-value": t(c),
264
- "shrink-at": !1,
265
- class: "flex-1 overflow-hidden",
266
- "hide-footer": "",
267
- "pin-header-row": "",
268
- onRowClick: s[1] || (s[1] = (n) => {
269
- f.value.edit && t(m).updateTakeaway(n.original);
270
- })
271
- }, null, 8, ["column-defs", "loading", "page-size", "row-data", "search-value"])]),
272
- _: 1
273
- })]))], 64)) : (_(), C("div", Ie, [V(t(re), {
274
- subtitle: t(e)("menu.takeaway.empty.subtitle"),
275
- title: t(e)("menu.takeaway.empty.title")
276
- }, {
277
- action: P(() => [f.value.create ? (_(), G(t(pe), {
278
- key: 0,
279
- "bind-to-variant": i.value,
280
- action: "add",
281
- "apply-product": "",
282
- "onUpdate:takeaway": s[3] || (s[3] = (n) => t(y).updateMenu({
283
- module: t(z.F_MENU_MODULE_V4_KEY).enum.takeaway,
284
- operation: t(N.F_OPERATION_TYPE).create,
285
- data: n,
286
- link: t(ee)(n.usedBy || [])
287
- }, n.name))
288
- }, {
289
- default: P(({
290
- trigger: n
291
- }) => [V(B, {
292
- "prepend-icon": "add",
293
- label: t(e)("menu.takeaway.empty.action"),
294
- onClick: Q(n, ["stop"])
295
- }, null, 8, ["label", "onClick"])]),
296
- _: 1
297
- }, 8, ["bind-to-variant"])) : $("", !0)]),
298
- _: 1
299
- }, 8, ["subtitle", "title"])]));
300
- };
301
- }
302
- });
303
- export {
304
- Re as _
305
- };