@feedmepos/mf-menu-portal 1.0.4-dev.4 → 1.0.5-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 (78) hide show
  1. package/dist/{App-CrpoLCjA.js → App-B2xq1U4S.js} +699 -687
  2. package/dist/{ApplyProduct.vue_vue_type_script_setup_true_lang-Hdsnu29V.js → ApplyProduct.vue_vue_type_script_setup_true_lang-CPh1GBw9.js} +11 -10
  3. package/dist/{BindingTable.vue_vue_type_script_setup_true_lang-D3CmOOPY.js → BindingTable.vue_vue_type_script_setup_true_lang-DCgMQJE-.js} +50 -46
  4. package/dist/Catalog-BEI73S_k.js +433 -0
  5. package/dist/{CatalogBinding-BNATtZEY.js → CatalogBinding-3rhuTWDD.js} +30 -29
  6. package/dist/{CatalogEditTabs.vue_vue_type_script_setup_true_lang-BmG-xpW4.js → CatalogEditTabs.vue_vue_type_script_setup_true_lang-CraEwqCY.js} +30 -29
  7. package/dist/{CatalogEditor.vue_vue_type_script_setup_true_lang-BFsRDFpj.js → CatalogEditor.vue_vue_type_script_setup_true_lang-Dc72SNpI.js} +314 -304
  8. package/dist/CatalogLinkProductAction.vue_vue_type_script_setup_true_lang-CMyubLvP.js +127 -0
  9. package/dist/{Category-DMoXTsfG.js → Category-BVCdkA5K.js} +14 -13
  10. package/dist/{Category-DxjdQ-NN.js → Category-P5DYjIeF.js} +2 -2
  11. package/dist/{CategoryList.vue_vue_type_script_setup_true_lang-B3Ts1O-9.js → CategoryList.vue_vue_type_script_setup_true_lang-DyhW52Df.js} +274 -262
  12. package/dist/{CookingGuide-DiZZDYD-.js → CookingGuide-Y-c1NLP5.js} +144 -140
  13. package/dist/{Group-rzfh_o6r.js → Group-D6wA3jCF.js} +2 -2
  14. package/dist/{Group-DFR8q-tt.js → Group-qqr5SUIc.js} +17 -15
  15. package/dist/GroupList.vue_vue_type_script_setup_true_lang-DNTVfY2d.js +1996 -0
  16. package/dist/{Ingredient-DpjGIuH9.js → Ingredient-CJHkJZ0y.js} +94 -93
  17. package/dist/{LinkProductSideSheet.vue_vue_type_script_setup_true_lang-CnI80Ojd.js → LinkProductSideSheet.vue_vue_type_script_setup_true_lang-Cb6nO43H.js} +1 -1
  18. package/dist/{MenuSetting-DR-pDSF_.js → MenuSetting-YcEGo51l.js} +462 -446
  19. package/dist/{OrderPacing-JcTuweqF.js → OrderPacing-DwQU7c0Y.js} +207 -204
  20. package/dist/{OrderPacingFields.vue_vue_type_script_setup_true_lang-HwwJ2mGv.js → OrderPacingFields.vue_vue_type_script_setup_true_lang-2Cdz70u-.js} +1 -2
  21. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-DrhsROXo.js +44 -0
  22. package/dist/PhoneFab.vue_vue_type_script_setup_true_lang-CipbTqbp.js +12 -0
  23. package/dist/{Preview-BZyun5lZ.js → Preview-DLeXy5V-.js} +2 -2
  24. package/dist/{PriceTierNotice.vue_vue_type_script_setup_true_lang-DquqNbE1.js → PriceTierNotice.vue_vue_type_script_setup_true_lang-D_OV9Z_4.js} +1 -1
  25. package/dist/{PrintRoute-CzEx2dCt.js → PrintRoute-R38w0-U2.js} +151 -150
  26. package/dist/{Product-CQb0n06E.js → Product-sbMCaVhM.js} +8 -7
  27. package/dist/ProductAttributeFilter.vue_vue_type_script_setup_true_lang-DoHQeOHy.js +7826 -0
  28. package/dist/ProductChipSummary.vue_vue_type_script_setup_true_lang-D9v88xZs.js +111 -0
  29. package/dist/{ProductEditorHost.vue_vue_type_script_setup_true_lang-CBlDEjqF.js → ProductEditorHost.vue_vue_type_script_setup_true_lang-DsIGLKNS.js} +17 -17
  30. package/dist/{ProductGroupCreateSheet.vue_vue_type_script_setup_true_lang-D8NQTCLx.js → ProductGroupCreateSheet.vue_vue_type_script_setup_true_lang-CEliG36Z.js} +726 -726
  31. package/dist/{ProductImageEditorDialog.vue_vue_type_script_setup_true_lang-cG47Pu-6.js → ProductImageEditorDialog.vue_vue_type_script_setup_true_lang-B3bShTjM.js} +127 -124
  32. package/dist/{ProductInlineCreateHost.vue_vue_type_script_setup_true_lang-0UwUcA2L.js → ProductInlineCreateHost.vue_vue_type_script_setup_true_lang-BzctosMW.js} +820 -807
  33. package/dist/{ProductInternalTools-QrBR1nFp.js → ProductInternalTools-jE3Ovo4l.js} +3 -3
  34. package/dist/{ProductInventoryDialog-fV38GO1a.js → ProductInventoryDialog-EDlrXupB.js} +1 -1
  35. package/dist/{ProductInventoryDialog.vue_vue_type_script_setup_true_lang-Bzb3RrMg.js → ProductInventoryDialog.vue_vue_type_script_setup_true_lang-LOwSpoiA.js} +1 -1
  36. package/dist/{ProductList.vue_vue_type_script_setup_true_lang-BwKQESr3.js → ProductList.vue_vue_type_script_setup_true_lang-rczFAWVa.js} +1135 -1098
  37. package/dist/{ProductVariantTranslationSheet.vue_vue_type_script_setup_true_lang-CDYcHXo1.js → ProductVariantTranslationSheet.vue_vue_type_script_setup_true_lang-C4iK-sAd.js} +1 -1
  38. package/dist/{Products-B8tysOAL.js → Products-DUE10OyS.js} +51 -49
  39. package/dist/Publish-BlMxKniP.js +1300 -0
  40. package/dist/{Recipe-Ddx31csF.js → Recipe-BhjPAidT.js} +83 -82
  41. package/dist/{Scheduler-CST5L_cw.js → Scheduler-wKG3_D1f.js} +137 -136
  42. package/dist/{ServingSequence-DYyEZI2S.js → ServingSequence-B26BETQs.js} +63 -61
  43. package/dist/Setting-DBdNl3WL.js +185 -0
  44. package/dist/{Subcategory-BIgjzVta.js → Subcategory-B06yMcuE.js} +147 -144
  45. package/dist/{Takeaway-CekhGM-m.js → Takeaway-CFATfy-6.js} +2 -2
  46. package/dist/{Takeaway-aXsPg4JT.js → Takeaway-DFqOtls7.js} +17 -16
  47. package/dist/TakeawayList.vue_vue_type_script_setup_true_lang-CUHB-g9I.js +616 -0
  48. package/dist/TextChip.vue_vue_type_script_setup_true_lang-YkUjMTXo.js +32 -0
  49. package/dist/{TreeEditorOpenner.vue_vue_type_script_setup_true_lang-CshqYpc9.js → TreeEditorOpenner.vue_vue_type_script_setup_true_lang-DoS4Btzj.js} +281 -308
  50. package/dist/{Unit-BMW8u0Us.js → Unit-B5wKBmIT.js} +90 -89
  51. package/dist/{Variant-CZsrYRMU.js → Variant-C5ePu0za.js} +167 -174
  52. package/dist/{_id_-D4swrvNa.js → _id_-HRDqt6oD.js} +3 -3
  53. package/dist/{app-BWwwHsWi.js → app-CxJjx2ma.js} +39 -39
  54. package/dist/app.js +1 -1
  55. package/dist/apps/mf-menu/src/app.d.ts +35 -0
  56. package/dist/apps/mf-menu/src/components/GroupList.vue.d.ts +8 -0
  57. package/dist/apps/mf-menu/src/components/Product/OrderFromChip.vue.d.ts +6 -0
  58. package/dist/apps/mf-menu/src/components/Product/ProductThumbnail.vue.d.ts +6 -0
  59. package/dist/apps/mf-menu/src/components/ProductList.vue.d.ts +4 -2
  60. package/dist/apps/mf-menu/src/components/PublishList.vue.d.ts +1 -1
  61. package/dist/apps/mf-menu/src/components/layout/MobileXScrollable.vue.d.ts +9 -0
  62. package/dist/apps/mf-menu/src/components/layout/PageLayout.vue.d.ts +7 -0
  63. package/dist/apps/mf-menu/src/components/layout/PhoneFab.vue.d.ts +9 -0
  64. package/dist/apps/mf-menu/tsconfig.app.tsbuildinfo +1 -1
  65. package/dist/assets/{menu-compute-D7TdiHt4.js → menu-compute-CQdeCEBO.js} +19 -19
  66. package/dist/assets/{validate-menu-DXppWUVq.js → validate-menu-BVo4fNWG.js} +14 -14
  67. package/dist/mf-menu-portal.css +1 -1
  68. package/dist/{provide-CDmXzkhz.js → provide-BGLSDsuJ.js} +99816 -99564
  69. package/dist/{useActionFeedback-Dm2HDa_2.js → useActionFeedback-CElXij1W.js} +1 -1
  70. package/package.json +1 -1
  71. package/dist/Catalog-VU3HhNro.js +0 -374
  72. package/dist/CatalogLinkProductAction.vue_vue_type_script_setup_true_lang-Bk4FqVmx.js +0 -117
  73. package/dist/GroupList.vue_vue_type_script_setup_true_lang-DiN-wQXX.js +0 -1807
  74. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-B3szUH39.js +0 -41
  75. package/dist/ProductAttributeFilter.vue_vue_type_script_setup_true_lang-B2KdolJS.js +0 -7931
  76. package/dist/Publish-DTvOvFNa.js +0 -1337
  77. package/dist/Setting-Ip0pGjks.js +0 -179
  78. package/dist/TakeawayList.vue_vue_type_script_setup_true_lang-CaRR4_j3.js +0 -554
@@ -0,0 +1,616 @@
1
+ import { defineComponent as Be, computed as m, ref as T, shallowRef as ie, h as $, withModifiers as B, onUnmounted as ze, resolveComponent as _, openBlock as r, createBlock as h, unref as t, withCtx as v, renderSlot as q, createElementBlock as y, toDisplayString as k, Fragment as z, createElementVNode as d, withDirectives as E, createVNode as c, renderList as ue, createCommentVNode as x, mergeProps as Ee } from "vue";
2
+ import { useI18n as Ne } from "@feedmepos/mf-common";
3
+ import { useDialog as De, useBreakpoints as Ae, components as N, FmButtonVariant as Ie } from "@feedmepos/ui-library";
4
+ import { _ as Me } from "./index.vue_vue_type_script_setup_true_lang-CGPDazqs.js";
5
+ import { _ as Ke } from "./LinkProductSideSheet.vue_vue_type_script_setup_true_lang-Cb6nO43H.js";
6
+ import { _ as re } from "./vuedraggable-CBtQLb_S.js";
7
+ import { _ as Re } from "./PageLayout.vue_vue_type_script_setup_true_lang-DrhsROXo.js";
8
+ import { _ as Qe } from "./PhoneFab.vue_vue_type_script_setup_true_lang-CipbTqbp.js";
9
+ import { _ as je } from "./TranslationSideSheet.vue_vue_type_script_setup_true_lang-B0j2PNih.js";
10
+ import { u as qe } from "./useActionFeedback-CElXij1W.js";
11
+ import { u as Ge } from "./useEditorValidation-Ctef5Bxt.js";
12
+ import { b as Oe, u as de } from "./provide-BGLSDsuJ.js";
13
+ import { v as He } from "./tableSemantics-C9WFO_I_.js";
14
+ const Je = {
15
+ key: 0,
16
+ class: "flex-1 flex justify-between gap-8 pl-8"
17
+ }, We = { class: "flex items-center" }, Xe = { class: "bg-fm-color-neutral-gray-100 rounded-md px-8 py-4" }, Ye = { class: "fm-typo-en-body-md-600" }, Ze = {
18
+ key: 0,
19
+ class: "text-fm-color-typo-secondary",
20
+ role: "alert"
21
+ }, ea = {
22
+ key: 1,
23
+ class: "text-fm-color-typo-secondary",
24
+ "data-menu-state": "unavailable"
25
+ }, aa = {
26
+ key: 0,
27
+ class: "flex flex-col flex-1 overflow-hidden pt-16 space-y-16"
28
+ }, ta = { class: "flex items-center justify-end space-x-8" }, la = { class: "w-[320px]" }, na = { class: "px-16 pt-8" }, oa = {
29
+ class: "flex-1 overflow-scroll divide-y divide-fm-color-neutral-gray-100",
30
+ "data-testid": "takeaway-phone-list"
31
+ }, sa = ["onClick"], ia = { class: "flex-1 min-w-0" }, ua = { class: "fm-typo-en-body-lg-600 mb-4 break-words" }, ra = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, da = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, ca = { class: "fm-typo-en-title-md-600" }, ma = { class: "flex flex-col gap-32 h-full min-h-0" }, pa = { class: "flex flex-col flex-1 min-h-0 space-y-16" }, va = { class: "flex items-center space-x-24" }, ba = { class: "fm-typo-en-body-lg-400 text-fm-color-typo-secondary" }, ya = { class: "flex gap-8 items-center justify-start" }, La = /* @__PURE__ */ Be({
32
+ __name: "TakeawayList",
33
+ props: {
34
+ sdk: {},
35
+ catalogPage: { type: Boolean, default: !1 },
36
+ heading: { default: "" }
37
+ },
38
+ setup(ce) {
39
+ const b = ce, { t: a, n: G } = Ne(), D = Oe(), me = De(), { run: O } = qe(), f = de(b.sdk.takeaway.list), i = m(
40
+ () => f.value.status === "ready" ? f.value.value : null
41
+ ), A = m(() => {
42
+ var e;
43
+ return ((e = i.value) == null ? void 0 : e.query) ?? "";
44
+ }), pe = m(() => {
45
+ var e;
46
+ return [...((e = i.value) == null ? void 0 : e.rows) ?? []];
47
+ }), { breakpoints: ve } = Ae(), I = m(() => ve.value.xs);
48
+ function H(e) {
49
+ return G(e.price.amount, {
50
+ minimumFractionDigits: e.price.precision,
51
+ maximumFractionDigits: e.price.precision
52
+ });
53
+ }
54
+ const M = {
55
+ mounted: (e, l) => {
56
+ var o;
57
+ (o = e.querySelector("input")) == null || o.setAttribute("aria-label", String(l.value));
58
+ },
59
+ updated: (e, l) => {
60
+ var o;
61
+ (o = e.querySelector("input")) == null || o.setAttribute("aria-label", String(l.value));
62
+ }
63
+ }, P = T(!1), L = T(!1), S = T(!1), J = de(
64
+ b.sdk.linkProduct.catalogue
65
+ ), be = m(
66
+ () => J.value.status === "ready" ? J.value.value : null
67
+ ), ye = m(() => {
68
+ var e;
69
+ return ((e = s.value) == null ? void 0 : e.linkedProducts) ?? [];
70
+ }), ke = m(
71
+ () => {
72
+ var e;
73
+ return ((e = s.value) == null ? void 0 : e.linkVariantCombinations.state) === "allowed";
74
+ }
75
+ ), W = m(
76
+ () => {
77
+ var e;
78
+ return ((e = s.value) == null ? void 0 : e.linkedGroups) ?? [];
79
+ }
80
+ ), fe = m(
81
+ () => {
82
+ var e;
83
+ return ((e = s.value) == null ? void 0 : e.linkedProductQuery) ?? "";
84
+ }
85
+ ), ge = m(
86
+ () => {
87
+ var e;
88
+ return ((e = s.value) == null ? void 0 : e.linkedProductCount) ?? 0;
89
+ }
90
+ );
91
+ function _e(e) {
92
+ u.value.setLinkedProducts(e), L.value = !1;
93
+ }
94
+ function he() {
95
+ var e;
96
+ ((e = s.value) == null ? void 0 : e.translation.state) === "allowed" && (u.value.beginTranslationEdit(), S.value = !0);
97
+ }
98
+ function we() {
99
+ u.value.saveTranslationEdit(), S.value = !1;
100
+ }
101
+ function K() {
102
+ u.value.discardTranslationEdit(), S.value = !1;
103
+ }
104
+ const U = T(/* @__PURE__ */ new Set());
105
+ function xe(e) {
106
+ const l = new Set(U.value);
107
+ l.has(e) ? l.delete(e) : l.add(e), U.value = l;
108
+ }
109
+ function Se(e) {
110
+ const l = [];
111
+ for (const o of e.products)
112
+ if (l.push({
113
+ kind: "product",
114
+ key: o.id,
115
+ itemId: o.id,
116
+ label: o.label,
117
+ combinationCount: o.combinations.length,
118
+ unlink: o.unlink
119
+ }), !!U.value.has(o.id))
120
+ for (const p of o.combinations)
121
+ l.push({
122
+ kind: "combination",
123
+ key: `${o.id}@${p.combinationKey}`,
124
+ itemId: o.id,
125
+ combinationKey: p.combinationKey,
126
+ label: p.label,
127
+ unlink: p.unlink
128
+ });
129
+ return l;
130
+ }
131
+ const Ce = m(() => {
132
+ const e = /* @__PURE__ */ new Map();
133
+ for (const l of W.value)
134
+ e.set(l.id ?? "", Se(l));
135
+ return e;
136
+ });
137
+ function X(e) {
138
+ return Ce.value.get(e.id ?? "") ?? [];
139
+ }
140
+ function Pe(e) {
141
+ return $(N.FmButton, {
142
+ icon: "delete",
143
+ variant: "tertiary",
144
+ textColor: "neutral-gray-400",
145
+ disabled: e.unlink.state !== "allowed",
146
+ "aria-label": e.kind === "product" ? a("menu.apply_product.table.remove_product", {
147
+ name: e.label
148
+ }) : a("menu.apply_product.table.remove_combination", {
149
+ name: e.label
150
+ }),
151
+ onClick: B(() => {
152
+ e.kind === "product" ? u.value.unlinkProduct(e.itemId) : u.value.unlinkCombination(e.itemId, e.combinationKey);
153
+ }, ["stop", "prevent"])
154
+ });
155
+ }
156
+ function Fe(e) {
157
+ return [
158
+ {
159
+ accessorKey: "label",
160
+ enableSorting: !1,
161
+ header: () => a("menu.apply_product.table.category_count", {
162
+ name: e.isSynthetic ? a("menu.tree_editor.labels.addon") : e.name,
163
+ count: e.products.length
164
+ }),
165
+ cell: (l) => {
166
+ const o = l.row.original;
167
+ if (o.kind === "combination")
168
+ return $("span", { class: "pl-24" }, o.label);
169
+ if (o.combinationCount === 0) return o.label;
170
+ const p = U.value.has(o.itemId);
171
+ return $("span", { class: "flex gap-8 items-center" }, [
172
+ o.label,
173
+ $(N.FmButton, {
174
+ icon: "keyboard_arrow_up",
175
+ variant: "tertiary",
176
+ class: p ? "" : "rotate-180",
177
+ "aria-expanded": p,
178
+ "aria-label": a(
179
+ p ? "menu.apply_product.table.collapse_combinations" : "menu.apply_product.table.expand_combinations",
180
+ { name: o.label }
181
+ ),
182
+ onClick: B(
183
+ () => xe(o.itemId),
184
+ ["stop", "prevent"]
185
+ )
186
+ })
187
+ ]);
188
+ }
189
+ },
190
+ {
191
+ id: "actions",
192
+ enableSorting: !1,
193
+ header: "",
194
+ cell: (l) => Pe(l.row.original)
195
+ }
196
+ ];
197
+ }
198
+ const u = ie(
199
+ b.sdk.takeaway.editor()
200
+ ), F = ie(
201
+ u.value.get()
202
+ );
203
+ let R = u.value.subscribe(
204
+ (e) => F.value = e
205
+ );
206
+ const s = m(
207
+ () => F.value.status === "ready" ? F.value.value : null
208
+ ), Q = Ge(() => u.value), Y = m(
209
+ () => s.value ? Q.issue(s.value.fieldIssues, "name") : null
210
+ );
211
+ function Z(e) {
212
+ S.value = !1, R(), u.value.dispose(), u.value = b.sdk.takeaway.editor(e), F.value = u.value.get(), R = u.value.subscribe(
213
+ (l) => F.value = l
214
+ );
215
+ }
216
+ function j() {
217
+ i.value && i.value.create.state !== "allowed" || (Z(), P.value = !0);
218
+ }
219
+ function ee(e) {
220
+ Z(e.id), P.value = !0;
221
+ }
222
+ function ae() {
223
+ S.value && K(), P.value = !1;
224
+ }
225
+ async function Ve() {
226
+ var p, C;
227
+ const e = ((p = s.value) == null ? void 0 : p.name.trim()) ?? "", l = b.catalogPage ? ((C = i.value) == null ? void 0 : C.catalogName) ?? (b.heading || e) : e;
228
+ (await O(
229
+ () => Q.submit(() => u.value.submit()),
230
+ {
231
+ successMessage: a("menu.takeaway.form.saved", { name: l }),
232
+ showLoading: () => {
233
+ var V;
234
+ return ((V = s.value) == null ? void 0 : V.status) === "submitting";
235
+ }
236
+ }
237
+ )).kind === "success" && ae();
238
+ }
239
+ function te(e) {
240
+ e.remove.state === "allowed" && me.open({
241
+ title: a("menu.common.dialog.remove.takeaway.title"),
242
+ message: a("menu.common.dialog.remove.takeaway.message", {
243
+ name: e.name
244
+ }),
245
+ primaryActions: {
246
+ text: a("menu.common.actions.remove"),
247
+ close: !0,
248
+ variant: Ie.Destructive
249
+ },
250
+ secondaryActions: {
251
+ text: a("menu.common.actions.cancel"),
252
+ close: !0
253
+ }
254
+ }).onPrimary(async () => {
255
+ await O(() => b.sdk.takeaway.remove(e.id), {
256
+ successMessage: a("menu.takeaway.form.removed", { name: e.name })
257
+ });
258
+ });
259
+ }
260
+ const $e = m(() => [
261
+ {
262
+ accessorKey: "name",
263
+ header: () => a("menu.takeaway.table.columns.name"),
264
+ enableSorting: !1,
265
+ // Legacy fixes the four column widths at 700/200/200/52 rather than
266
+ // letting them distribute (`portal views/Catalog/Edit/Takeaway.vue:84,
267
+ // 103, 116, 126`).
268
+ size: 700
269
+ },
270
+ {
271
+ id: "price",
272
+ // Legacy's header carries the currency symbol once
273
+ // (`menu.takeaway.table.columns.price` = "Price ({symbol})"), resolved
274
+ // from the business country (`Country.getCountry(country).currency`);
275
+ // the cell itself is a plain formatted number with no symbol
276
+ // (`formatCurrency(value, false)`), reproduced here rather than
277
+ // repeating the symbol on every row. `currencySymbol` is the SDK's own
278
+ // country-derived value, not a row's stored currency code.
279
+ header: () => {
280
+ var e;
281
+ return a("menu.takeaway.table.columns.price", {
282
+ symbol: ((e = i.value) == null ? void 0 : e.currencySymbol) ?? ""
283
+ });
284
+ },
285
+ enableSorting: !1,
286
+ size: 200,
287
+ meta: { textAlign: "right" },
288
+ cell: (e) => H(e.row.original)
289
+ },
290
+ {
291
+ id: "linkedProducts",
292
+ header: () => a("menu.takeaway.table.columns.products"),
293
+ enableSorting: !1,
294
+ size: 200,
295
+ cell: (e) => a("menu.takeaway.table.items_linked", {
296
+ count: e.row.original.linkedProductCount
297
+ })
298
+ },
299
+ ...b.catalogPage ? [] : [
300
+ {
301
+ id: "actions",
302
+ size: 52,
303
+ meta: { cellClass: "pl-16", headerContentClass: "-mx-16" },
304
+ header: "",
305
+ cell: (e) => $(N.FmButton, {
306
+ icon: "delete",
307
+ variant: "tertiary",
308
+ textColor: "neutral-gray-400",
309
+ disabled: e.row.original.remove.state !== "allowed",
310
+ "aria-label": a("menu.takeaway.table.remove_takeaway", {
311
+ name: e.row.original.name
312
+ }),
313
+ onClick: B(
314
+ () => te(e.row.original),
315
+ ["stop", "prevent"]
316
+ )
317
+ })
318
+ }
319
+ ]
320
+ ]);
321
+ return ze(() => {
322
+ b.sdk.takeaway.search(""), R(), u.value.dispose();
323
+ }), (e, l) => {
324
+ var ne;
325
+ const o = _("FmButton"), p = _("FmCircularProgress"), C = _("FmSearch"), V = _("FmTable"), Le = _("FmTooltip"), le = _("FmTextField"), Ue = _("FmSpacer"), Te = _("FmSideSheet");
326
+ return r(), h(Re, {
327
+ heading: e.catalogPage ? ((ne = i.value) == null ? void 0 : ne.catalogName) ?? (e.heading || t(a)("menu.common.labels.main")) : t(a)("menu.takeaway.title")
328
+ }, {
329
+ "prepend-heading": v(() => [
330
+ q(e.$slots, "prepend-heading")
331
+ ]),
332
+ "append-heading": v(() => [
333
+ !e.catalogPage && t(f).status === "ready" && i.value ? (r(), y("div", Je, [
334
+ d("div", We, [
335
+ d("div", Xe, [
336
+ d("p", Ye, k(t(G)(i.value.rows.length)), 1)
337
+ ])
338
+ ]),
339
+ i.value.rows.length > 0 && !I.value ? (r(), h(o, {
340
+ key: 0,
341
+ disabled: i.value.create.state !== "allowed",
342
+ label: t(a)("menu.takeaway.add"),
343
+ "prepend-icon": "add",
344
+ onClick: j
345
+ }, null, 8, ["disabled", "label"])) : x("", !0)
346
+ ])) : x("", !0),
347
+ q(e.$slots, "append-heading")
348
+ ]),
349
+ default: v(() => [
350
+ q(e.$slots, "navigation"),
351
+ t(f).status === "error" ? (r(), y("p", Ze, k(t(D)(t(f).error.message)), 1)) : t(f).status === "unavailable" ? (r(), y("p", ea, k(t(D)(t(f).reason)), 1)) : t(f).status === "loading" ? (r(), h(p, { key: 2 })) : i.value && i.value.rows.length === 0 && !A.value ? (r(), h(t(Me), {
352
+ key: 3,
353
+ class: "xs:pt-24",
354
+ action: i.value.create.state === "allowed" ? { text: t(a)("menu.takeaway.add"), callback: j } : void 0,
355
+ title: t(a)("menu.takeaway.empty.title"),
356
+ subtitle: t(a)("menu.takeaway.empty.subtitle")
357
+ }, null, 8, ["action", "title", "subtitle"])) : i.value ? (r(), y(z, { key: 4 }, [
358
+ I.value ? (r(), y(z, { key: 1 }, [
359
+ d("div", na, [
360
+ E(c(C, {
361
+ class: "w-full",
362
+ autofocus: "",
363
+ "model-value": A.value,
364
+ placeholder: t(a)("menu.takeaway.table.search.placeholder"),
365
+ "onUpdate:modelValue": b.sdk.takeaway.search
366
+ }, null, 8, ["model-value", "placeholder", "onUpdate:modelValue"]), [
367
+ [M, t(a)("menu.takeaway.table.search.label")]
368
+ ])
369
+ ]),
370
+ d("div", oa, [
371
+ (r(!0), y(z, null, ue(i.value.rows, (n) => (r(), y("div", {
372
+ key: n.id,
373
+ class: "py-12 px-16 flex space-x-8 items-center cursor-pointer",
374
+ "data-testid": "takeaway-phone-card",
375
+ onClick: (g) => ee(n)
376
+ }, [
377
+ d("div", ia, [
378
+ d("p", ua, k(n.name), 1),
379
+ d("p", ra, k(t(a)("menu.takeaway.table.items_linked", {
380
+ count: n.linkedProductCount
381
+ })), 1),
382
+ d("p", da, k(t(a)("menu.takeaway.mobile.price", {
383
+ price: `${i.value.currencySymbol}${H(n)}`
384
+ })), 1)
385
+ ]),
386
+ e.catalogPage ? x("", !0) : (r(), h(o, {
387
+ key: 0,
388
+ disabled: n.remove.state !== "allowed",
389
+ "aria-label": t(a)("menu.takeaway.table.remove_takeaway", { name: n.name }),
390
+ "prepend-icon": "delete",
391
+ "text-color": "neutral-gray-400",
392
+ variant: "tertiary",
393
+ onClick: B((g) => te(n), ["stop"])
394
+ }, null, 8, ["disabled", "aria-label", "onClick"]))
395
+ ], 8, sa))), 128))
396
+ ])
397
+ ], 64)) : (r(), y("div", aa, [
398
+ d("div", ta, [
399
+ d("div", la, [
400
+ E(c(C, {
401
+ autofocus: "",
402
+ "model-value": A.value,
403
+ placeholder: t(a)("menu.takeaway.table.search.placeholder"),
404
+ "onUpdate:modelValue": b.sdk.takeaway.search
405
+ }, null, 8, ["model-value", "placeholder", "onUpdate:modelValue"]), [
406
+ [M, t(a)("menu.takeaway.table.search.label")]
407
+ ])
408
+ ])
409
+ ]),
410
+ E(c(V, {
411
+ "column-defs": $e.value,
412
+ "hide-footer": "",
413
+ "page-size": i.value.rows.length,
414
+ "pin-header-row": "",
415
+ "row-data": pe.value,
416
+ "shrink-at": !1,
417
+ onRowClick: l[0] || (l[0] = (n) => ee(n.original))
418
+ }, null, 8, ["column-defs", "page-size", "row-data"]), [
419
+ [t(He), t(a)("menu.takeaway.table.columns.name")]
420
+ ])
421
+ ])),
422
+ I.value && !e.catalogPage && i.value.rows.length > 0 ? (r(), h(Qe, { key: 2 }, {
423
+ default: v(() => [
424
+ c(o, {
425
+ disabled: i.value.create.state !== "allowed",
426
+ label: t(a)("menu.takeaway.add"),
427
+ "prepend-icon": "add",
428
+ variant: "fab",
429
+ onClick: j
430
+ }, null, 8, ["disabled", "label"])
431
+ ]),
432
+ _: 1
433
+ })) : x("", !0)
434
+ ], 64)) : x("", !0),
435
+ c(Te, {
436
+ modelValue: P.value,
437
+ "onUpdate:modelValue": l[4] || (l[4] = (n) => P.value = n),
438
+ "is-container": t(N).FmForm,
439
+ "is-container-props": { onValidationSuccess: Ve },
440
+ "max-width": 560
441
+ }, {
442
+ "side-sheet-header": v(() => {
443
+ var n;
444
+ return [
445
+ d("p", ca, k(((n = s.value) == null ? void 0 : n.mode) === "update" ? t(a)("menu.takeaway.update") : t(a)("menu.takeaway.add")), 1)
446
+ ];
447
+ }),
448
+ "side-sheet-footer": v(() => {
449
+ var n, g;
450
+ return [
451
+ d("div", ya, [
452
+ c(o, {
453
+ disabled: ((n = s.value) == null ? void 0 : n.submit.state) !== "allowed",
454
+ label: ((g = s.value) == null ? void 0 : g.mode) === "update" ? t(a)("menu.common.actions.update") : t(a)("menu.common.actions.add"),
455
+ size: "lg",
456
+ type: "submit",
457
+ variant: "primary"
458
+ }, null, 8, ["disabled", "label"]),
459
+ c(o, {
460
+ label: t(a)("menu.common.actions.cancel"),
461
+ size: "lg",
462
+ variant: "tertiary",
463
+ onClick: ae
464
+ }, null, 8, ["label"])
465
+ ])
466
+ ];
467
+ }),
468
+ default: v(() => [
469
+ d("div", ma, [
470
+ c(re, null, {
471
+ default: v(() => {
472
+ var n, g, oe, se;
473
+ return [
474
+ c(le, Ee({
475
+ disabled: ((n = s.value) == null ? void 0 : n.editName.state) !== "allowed",
476
+ "error-messages": Y.value ? [t(D)(Y.value)] : [],
477
+ label: t(a)("menu.takeaway.columns.title"),
478
+ "model-value": ((g = s.value) == null ? void 0 : g.name) ?? "",
479
+ placeholder: t(a)("menu.takeaway.placeholders.title")
480
+ }, t(Q).field("name", u.value.setName)), {
481
+ append: v(() => [
482
+ c(Le, {
483
+ placement: "top",
484
+ variant: "plain",
485
+ "z-index": 999
486
+ }, {
487
+ default: v(() => {
488
+ var w;
489
+ return [
490
+ c(o, {
491
+ "aria-label": t(a)("menu.common.translation.translation_label"),
492
+ disabled: ((w = s.value) == null ? void 0 : w.translation.state) !== "allowed",
493
+ icon: "g_translate",
494
+ variant: "tertiary",
495
+ onClick: he
496
+ }, null, 8, ["aria-label", "disabled"])
497
+ ];
498
+ }),
499
+ _: 1
500
+ })
501
+ ]),
502
+ _: 1
503
+ }, 16, ["disabled", "error-messages", "label", "model-value", "placeholder"]),
504
+ c(le, {
505
+ disabled: ((oe = s.value) == null ? void 0 : oe.editPrice.state) !== "allowed",
506
+ inputmode: "decimal",
507
+ label: t(a)("menu.takeaway.columns.price"),
508
+ "model-value": ((se = s.value) == null ? void 0 : se.price) ?? "",
509
+ placeholder: t(a)("menu.takeaway.placeholders.price"),
510
+ "onUpdate:modelValue": l[1] || (l[1] = (w) => u.value.setPrice(w))
511
+ }, {
512
+ prepend: v(() => {
513
+ var w;
514
+ return [
515
+ d("span", null, k(((w = s.value) == null ? void 0 : w.currencySymbol) ?? ""), 1)
516
+ ];
517
+ }),
518
+ _: 1
519
+ }, 8, ["disabled", "label", "model-value", "placeholder"])
520
+ ];
521
+ }),
522
+ _: 1
523
+ }),
524
+ d("div", pa, [
525
+ c(re, {
526
+ title: t(a)("menu.common.labels.product")
527
+ }, {
528
+ "append-title": v(() => {
529
+ var n;
530
+ return [
531
+ c(Ue),
532
+ ((n = s.value) == null ? void 0 : n.editLinkedProducts.state) === "allowed" ? (r(), h(o, {
533
+ key: 0,
534
+ label: t(a)("menu.common.actions.link_product"),
535
+ "border-color": "primary",
536
+ "prepend-icon": "link",
537
+ "text-color": "primary",
538
+ variant: "secondary",
539
+ onClick: l[2] || (l[2] = (g) => L.value = !0)
540
+ }, null, 8, ["label"])) : x("", !0)
541
+ ];
542
+ }),
543
+ default: v(() => [
544
+ d("div", va, [
545
+ d("p", ba, k(t(a)("menu.common.labels.product_count", {
546
+ count: ge.value
547
+ })), 1),
548
+ E(c(C, {
549
+ "model-value": fe.value,
550
+ class: "flex-1",
551
+ placeholder: t(a)("menu.common.labels.search_product"),
552
+ "aria-label": t(a)("menu.apply_product.table.search.label"),
553
+ "onUpdate:modelValue": l[3] || (l[3] = (n) => u.value.setLinkedProductQuery(String(n ?? "")))
554
+ }, null, 8, ["model-value", "placeholder", "aria-label"]), [
555
+ [
556
+ M,
557
+ t(a)("menu.apply_product.table.search.label")
558
+ ]
559
+ ])
560
+ ])
561
+ ]),
562
+ _: 1
563
+ }, 8, ["title"]),
564
+ (r(!0), y(z, null, ue(W.value, (n) => (r(), y("div", {
565
+ key: n.id ?? ""
566
+ }, [
567
+ c(V, {
568
+ "column-defs": Fe(n),
569
+ "hide-footer": "",
570
+ "page-size": X(n).length,
571
+ "row-data": X(n),
572
+ "shrink-at": !1
573
+ }, null, 8, ["column-defs", "page-size", "row-data"])
574
+ ]))), 128))
575
+ ])
576
+ ])
577
+ ]),
578
+ _: 1
579
+ }, 8, ["modelValue", "is-container", "is-container-props"]),
580
+ c(Ke, {
581
+ modelValue: L.value,
582
+ "onUpdate:modelValue": l[5] || (l[5] = (n) => L.value = n),
583
+ catalogue: be.value,
584
+ "select-variant": ke.value,
585
+ "selected-products": ye.value,
586
+ title: t(a)("menu.takeaway.form.link_product.title"),
587
+ onSubmitLinks: _e
588
+ }, null, 8, ["modelValue", "catalogue", "select-variant", "selected-products", "title"]),
589
+ s.value ? (r(), h(je, {
590
+ key: 5,
591
+ dirty: s.value.translationDirty,
592
+ "model-value": S.value,
593
+ name: s.value.name,
594
+ "name-locale": s.value.nameLocale,
595
+ "name-section-label": t(a)("menu.common.translation.name_section", {
596
+ entity: t(a)("menu.takeaway.title")
597
+ }),
598
+ "supported-locales": s.value.supportedLocales,
599
+ title: t(a)("menu.common.translation.sheet_title", {
600
+ entity: t(a)("menu.takeaway.title")
601
+ }),
602
+ onDiscard: K,
603
+ onSave: we,
604
+ "onUpdate:modelValue": l[6] || (l[6] = (n) => n || K()),
605
+ "onUpdate:name": u.value.setName,
606
+ "onUpdate:nameLocale": u.value.setNameLocale
607
+ }, null, 8, ["dirty", "model-value", "name", "name-locale", "name-section-label", "supported-locales", "title", "onUpdate:name", "onUpdate:nameLocale"])) : x("", !0)
608
+ ]),
609
+ _: 3
610
+ }, 8, ["heading"]);
611
+ };
612
+ }
613
+ });
614
+ export {
615
+ La as _
616
+ };
@@ -0,0 +1,32 @@
1
+ import { defineComponent as s, computed as m, openBlock as l, createElementBlock as a, normalizeClass as c, toDisplayString as p } from "vue";
2
+ const i = /* @__PURE__ */ s({
3
+ __name: "TextChip",
4
+ props: {
5
+ label: {},
6
+ variant: {},
7
+ border: { type: Boolean },
8
+ bold: { type: Boolean, default: !0 },
9
+ size: { default: "md" }
10
+ },
11
+ setup(e) {
12
+ const o = e, t = {
13
+ neutral: "text-fm-color-typo-neutral bg-fm-color-neutral-gray-100",
14
+ primary: "text-fm-color-typo-primary bg-fm-color-system-primary-100",
15
+ secondary: "text-fm-color-typo-secondary bg-fm-color-system-secondary-100",
16
+ success: "text-fm-color-typo-success bg-fm-color-system-success-100",
17
+ warning: "text-fm-color-primary bg-fm-color-system-warning-100",
18
+ error: "text-fm-color-typo-error bg-fm-color-system-error-100",
19
+ info: "text-fm-color-typo-info bg-fm-color-system-info-100"
20
+ }, n = m(() => o.size === "xs" ? "text-[8px] tracking-wide leading-[10px] no-underline" : o.size === "sm" ? o.bold ? "fm-typo-en-body-sm-600" : "fm-typo-en-body-sm-400" : o.bold ? "fm-typo-en-body-md-600" : "fm-typo-en-body-md-400");
21
+ return (r, y) => (l(), a("span", {
22
+ class: c(["inline-block fm-corner-radius-md px-4 py-[2px] text-nowrap max-w-full", [
23
+ n.value,
24
+ t[r.variant],
25
+ r.border ? "border border-fm-color-neutral-gray-400" : ""
26
+ ]])
27
+ }, p(r.label), 3));
28
+ }
29
+ });
30
+ export {
31
+ i as _
32
+ };