@feedmepos/mf-order-setting 0.0.84 → 0.0.85

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 (109) hide show
  1. package/dist/DisplaySystemView-hmlT9gsb.js +6485 -0
  2. package/dist/{KioskDevicesView-DdwFuenU.js → KioskDevicesView-fW6M9Hao.js} +1 -1
  3. package/dist/{KioskDevicesView.vue_vue_type_script_setup_true_lang-CxtLm_oh.js → KioskDevicesView.vue_vue_type_script_setup_true_lang-GrsnYo80.js} +3 -3
  4. package/dist/KioskSettingView-BdEPftHH.js +839 -0
  5. package/dist/{KioskView-fwBwUGCQ.js → KioskView-Bwk9S0tc.js} +82 -70
  6. package/dist/{OrderSettingsView-RhlyZmzs.js → OrderSettingsView-DVXfVdXj.js} +30858 -30699
  7. package/dist/{app-ClOkRxOZ.js → app-BnrruYco.js} +74 -12
  8. package/dist/app.js +1 -1
  9. package/dist/display-preview/assets/BandBoard-DIcfXsNV.js +1 -0
  10. package/dist/display-preview/assets/CarouselBlock-XAhTyEWB.js +1 -0
  11. package/dist/display-preview/assets/{CategoryBoard-DClMUGfS.js → CategoryBoard-DBKe18hv.js} +1 -1
  12. package/dist/display-preview/assets/ImageBlock-BCbnYSHq.js +1 -0
  13. package/dist/display-preview/assets/PickupMode-Df_TPCh8.js +1 -0
  14. package/dist/display-preview/assets/{StatusBoard-BVESD28J.js → StatusBoard-28z3bPOf.js} +1 -1
  15. package/dist/display-preview/assets/TextBlock-CvJKITtx.js +1 -0
  16. package/dist/display-preview/assets/VideoBlock-Dop43wDv.js +1 -0
  17. package/dist/display-preview/assets/index-C6DET5zJ.css +1 -0
  18. package/dist/display-preview/assets/index-cqMoOpSN.js +2 -0
  19. package/dist/display-preview/assets/pickupView-DRMVXqrc.js +1 -0
  20. package/dist/display-preview/index.html +2 -2
  21. package/dist/frontend/mf-order/src/app.d.ts +62 -0
  22. package/dist/frontend/mf-order/src/main.d.ts +62 -0
  23. package/dist/frontend/mf-order/src/modules/display-system/interface.d.ts +21 -0
  24. package/dist/frontend/mf-order/src/modules/order-setting/kiosk/coverCarousel.d.ts +69 -0
  25. package/dist/frontend/mf-order/src/modules/order-setting/kiosk/interface.d.ts +5 -1
  26. package/dist/frontend/mf-order/src/stores/order-setting/index.d.ts +90 -3
  27. package/dist/frontend/mf-order/src/views/display-system/DisplayFieldControl.vue.d.ts +3 -0
  28. package/dist/frontend/mf-order/src/views/display-system/DisplayInspector.vue.d.ts +3 -13
  29. package/dist/frontend/mf-order/src/views/order-settings/auto-send-kitchen.d.ts +58 -0
  30. package/dist/frontend/mf-order/src/views/order-settings/delivery/inhouse/InHouseDelivery.vue.d.ts +16 -1
  31. package/dist/frontend/mf-order/src/views/order-settings/pickup/PickUpSettingDialogContent.vue.d.ts +16 -1
  32. package/dist/frontend/mf-order/src/views/order-settings/useAutoSendGuard.d.ts +48 -0
  33. package/dist/frontend/mf-order/tsconfig.app.tsbuildinfo +1 -1
  34. package/dist/{index-CKEbr9Es.js → index-D5wABuUx.js} +1 -1
  35. package/dist/{index-5k7kGCpJ.js → index-D7IWjZdy.js} +2 -2
  36. package/dist/{index-I2YGevce.js → index-LyvBqKnv.js} +1 -1
  37. package/dist/{order.dto-Dbn-hRrm.js → order.dto-D7HGiueX.js} +3579 -3428
  38. package/dist/package/entity/alert/investigation.dto.d.ts +25 -6
  39. package/dist/package/entity/alert/lark-callback.dto.d.ts +31 -12
  40. package/dist/package/entity/alert/suggestion.dto.d.ts +4 -4
  41. package/dist/package/entity/display/blocks.d.ts +42 -76
  42. package/dist/package/entity/incoming-order/incoming-order-to-bill.dto.d.ts +47 -36
  43. package/dist/package/entity/incoming-order/incoming-order.dto.d.ts +1 -0
  44. package/dist/package/entity/index.d.ts +2 -0
  45. package/dist/package/entity/index.frontend.d.ts +2 -0
  46. package/dist/package/entity/order/effects/effect.dto.d.ts +266 -0
  47. package/dist/package/entity/order/order-item/order-item.dto.d.ts +36 -36
  48. package/dist/package/entity/order/order.do.d.ts +7 -64
  49. package/dist/package/entity/order/order.dto.d.ts +13006 -795
  50. package/dist/package/entity/order-platform/grabfood/grabfood-settings.do.d.ts +13 -0
  51. package/dist/package/entity/order-platform/grabfood/grabfood.dto.d.ts +3 -0
  52. package/dist/package/entity/order-platform/menu.dto.d.ts +10 -10
  53. package/dist/package/entity/order-platform/shopeefood/shopeefood-order.dto.d.ts +11 -8
  54. package/dist/package/entity/order-setting/auto-accept.dto.d.ts +94 -0
  55. package/dist/package/entity/order-setting/auto-send.resolve.d.ts +110 -0
  56. package/dist/package/entity/order-setting/delivery/inhouse-delivery.do.d.ts +3 -0
  57. package/dist/package/entity/order-setting/delivery/inhouse-delivery.dto.d.ts +3 -0
  58. package/dist/package/entity/order-setting/dine-in/dine-in.do.d.ts +3 -0
  59. package/dist/package/entity/order-setting/dine-in/dine-in.dto.d.ts +3 -0
  60. package/dist/package/entity/order-setting/kiosk/kiosk.do.d.ts +26 -0
  61. package/dist/package/entity/order-setting/kiosk/kiosk.dto.d.ts +39 -0
  62. package/dist/package/entity/order-setting/order-setting.do.d.ts +57 -4
  63. package/dist/package/entity/order-setting/order-setting.dto.d.ts +259 -9
  64. package/dist/package/entity/order-setting/pickup/pickup.do.d.ts +3 -0
  65. package/dist/package/entity/order-setting/pickup/pickup.dto.d.ts +3 -0
  66. package/dist/package/entity/order-setting/queue/queue.do.d.ts +2 -2
  67. package/dist/package/entity/order-setting/queue/queue.dto.d.ts +2 -2
  68. package/dist/package/entity/queue/queue.dto.d.ts +48 -48
  69. package/dist/package/entity/restaurant/restaurant.dto.d.ts +46 -8
  70. package/dist/package/entity/websocket/websocket.dto.d.ts +88 -0
  71. package/dist/style.css +1 -1
  72. package/package.json +2 -2
  73. package/src/locales/en-US.json +22 -2
  74. package/src/locales/ja-JP.json +12 -1
  75. package/src/locales/th-TH.json +12 -1
  76. package/src/locales/zh-CN.json +22 -2
  77. package/src/modules/display-system/interface.spec.ts +32 -18
  78. package/src/modules/display-system/interface.ts +32 -0
  79. package/src/modules/order-setting/kiosk/coverCarousel.spec.ts +172 -0
  80. package/src/modules/order-setting/kiosk/coverCarousel.ts +186 -0
  81. package/src/modules/order-setting/kiosk/interface.ts +138 -127
  82. package/src/stores/order-setting/mapper.spec.ts +26 -0
  83. package/src/stores/order-setting/mapper.ts +305 -293
  84. package/src/views/display-system/DisplayFieldControl.vue +46 -0
  85. package/src/views/display-system/DisplayInspector.vue +8 -3
  86. package/src/views/display-system/DisplaySystemView.vue +7 -3
  87. package/src/views/display-system/DisplayTemplateEditor.vue +28 -2
  88. package/src/views/kiosk/settings/KioskSettingView.vue +176 -60
  89. package/src/views/order-settings/auto-send-kitchen.spec.ts +137 -0
  90. package/src/views/order-settings/auto-send-kitchen.ts +92 -0
  91. package/src/views/order-settings/auto-send-resolve.spec.ts +123 -0
  92. package/src/views/order-settings/delivery/DeliverySetting.vue +10 -0
  93. package/src/views/order-settings/delivery/inhouse/InHouseDelivery.vue +40 -5
  94. package/src/views/order-settings/dine-in/DineInSetting.vue +38 -5
  95. package/src/views/order-settings/pickup/PickUpSetting.vue +1 -0
  96. package/src/views/order-settings/pickup/PickUpSettingDialogContent.vue +38 -5
  97. package/src/views/order-settings/queue/QueueSetting.vue +6 -9
  98. package/src/views/order-settings/useAutoSendGuard.ts +142 -0
  99. package/tsconfig.app.json +10 -1
  100. package/dist/DisplaySystemView-4Bz8p26A.js +0 -5892
  101. package/dist/KioskSettingView-D57KtQ-t.js +0 -711
  102. package/dist/display-preview/assets/BandBoard-BrDTYDc9.js +0 -1
  103. package/dist/display-preview/assets/CarouselBlock-CrkGxoGk.js +0 -1
  104. package/dist/display-preview/assets/ImageBlock-DtgfHd5G.js +0 -1
  105. package/dist/display-preview/assets/PickupMode-DKmqGlG8.js +0 -1
  106. package/dist/display-preview/assets/TextBlock-gAfeCCmE.js +0 -1
  107. package/dist/display-preview/assets/index-BB0ReVXy.js +0 -2
  108. package/dist/display-preview/assets/index-BWVpFSIw.css +0 -1
  109. package/dist/display-preview/assets/pickupView-C-BGcOu8.js +0 -1
@@ -1,711 +0,0 @@
1
- import { defineComponent as ie, computed as k, ref as $, onMounted as be, resolveComponent as S, openBlock as h, createBlock as H, withCtx as C, createVNode as s, unref as l, createElementVNode as r, withDirectives as U, vShow as R, toDisplayString as b, watch as ge, createElementBlock as L, createCommentVNode as Z, Fragment as Ie, renderList as Pe } from "vue";
2
- import { e as oe, b as ue, s as me, d as Se, r as re, f as se, h as _e } from "./app-ClOkRxOZ.js";
3
- import { c as p, K as xe, d as he } from "./order.dto-Dbn-hRrm.js";
4
- import { _ as we, u as Ve, a as ke } from "./index-5k7kGCpJ.js";
5
- import { useI18n as pe, FeedMeAuth as ce, useCoreStore as Te } from "@feedmepos/mf-common";
6
- import { useSnackbar as Ce } from "@feedmepos/ui-library";
7
- const Ae = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary ml-7" }, Ue = { class: "ml-7" }, Re = { class: "ml-7" }, Fe = { class: "flex flex-row gap-9" }, Ee = /* @__PURE__ */ ie({
8
- __name: "KioskPaymentTypeSection",
9
- props: {
10
- paymentTypes: {
11
- type: Array,
12
- required: !0
13
- },
14
- offlinePaymentTypes: {
15
- type: Array,
16
- required: !0
17
- },
18
- allowEPayment: {
19
- type: [Boolean, String],
20
- required: !0
21
- },
22
- allowCredit: {
23
- type: [Boolean, String],
24
- default: !1
25
- },
26
- ePaymentTypes: {
27
- type: Object,
28
- required: !0
29
- }
30
- },
31
- emits: ["update:paymentTypes", "update:offlinePaymentTypes", "update:ePaymentTypes"],
32
- setup(i, { emit: c }) {
33
- const { t: e } = pe(), g = i, w = c, P = k(() => (g.paymentTypes || []).includes(oe.F_ORDER_PAYMENT_TYPE.enum.ePayment)), I = $(), v = $([]), a = $(!1), A = $(!1), V = $(!1), W = () => {
34
- Object.keys(g.ePaymentTypes).length !== 0 && (g.ePaymentTypes.terminal && (A.value = !0), g.ePaymentTypes.card.terminal ? (I.value = p.enum.TERMINAL, a.value = !0) : g.ePaymentTypes.card.nfc && (I.value = p.enum.NFC, a.value = !0), g.ePaymentTypes.eWallet.qrPay && (v.value.push(p.enum.QRPAY), V.value = !0), g.ePaymentTypes.eWallet.scanPay && (v.value.push(p.enum.SCANPAY), V.value = !0));
35
- };
36
- W();
37
- const G = (y) => {
38
- const d = {
39
- terminal: !1,
40
- card: {
41
- terminal: !1,
42
- nfc: !1
43
- },
44
- eWallet: {
45
- qrPay: !1,
46
- scanPay: !1
47
- }
48
- };
49
- P.value && (y == p.enum.TERMINAL && (d.card.terminal = !0), y == p.enum.NFC && (d.card.nfc = !0), v.value.length > 0 && (v.value.includes(p.enum.QRPAY) && (d.eWallet.qrPay = !0), v.value.includes(p.enum.SCANPAY) && (d.eWallet.scanPay = !0))), A.value && (d.terminal = !0), w("update:ePaymentTypes", d);
50
- }, T = () => {
51
- const y = {
52
- terminal: !1,
53
- card: {
54
- terminal: !1,
55
- nfc: !1
56
- },
57
- eWallet: {
58
- qrPay: !1,
59
- scanPay: !1,
60
- terminalScanPay: !1,
61
- terminalQrPay: !1
62
- }
63
- };
64
- P.value && (I.value && (I.value === p.enum.TERMINAL && (y.card.terminal = !0), I.value === p.enum.NFC && (y.card.nfc = !0)), A.value && (y.terminal = !0), v.value.includes(p.enum.QRPAY) && (y.eWallet.qrPay = !0), v.value.includes(p.enum.SCANPAY) && (y.eWallet.scanPay = !0), v.value.includes(p.enum.TERMINAL_SCAN_PAY) && (y.eWallet.terminalScanPay = !0), v.value.includes(p.enum.TERMINAL_QR_PAY) && (y.eWallet.terminalQrPay = !0)), w("update:ePaymentTypes", y);
65
- }, O = (y) => {
66
- I.value = "", y && (I.value = p.enum.TERMINAL), T();
67
- }, K = (y) => {
68
- v.value = [], y && (v.value = [
69
- p.enum.QRPAY,
70
- p.enum.SCANPAY
71
- ]), T();
72
- }, J = (y) => {
73
- w("update:paymentTypes", y), y.includes(oe.F_ORDER_PAYMENT_TYPE.enum.ePayment) || (a.value = !1, V.value = !1, O(!1), K(!1));
74
- };
75
- return be(() => {
76
- W();
77
- }), (y, d) => {
78
- const F = S("FmSwitch"), Y = S("FmRadio"), X = S("FmRadioGroup"), j = S("FmCardSection"), q = S("FmCard"), E = S("FmCheckbox");
79
- return h(), H(we, {
80
- "payment-types": i.paymentTypes,
81
- "offline-payment-types": i.offlinePaymentTypes,
82
- "allow-e-payment": g.allowEPayment,
83
- "allow-credit": g.allowCredit,
84
- "onUpdate:paymentTypes": J,
85
- "onUpdate:offlinePaymentTypes": d[8] || (d[8] = (f) => w("update:offlinePaymentTypes", f || []))
86
- }, {
87
- "e-payment-note": C(() => [
88
- r("div", Ae, b(l(e)("order.legacyEPaymentNote")), 1)
89
- ]),
90
- "e-payment-content": C(() => [
91
- s(q, { variant: "outlined" }, {
92
- default: C(() => [
93
- s(j, null, {
94
- default: C(() => [
95
- s(F, {
96
- label: l(e)("order.bankCard"),
97
- sublabel: l(e)("order.cardPaymentDescription"),
98
- "label-placement": "right",
99
- modelValue: a.value,
100
- "onUpdate:modelValue": [
101
- d[0] || (d[0] = (f) => a.value = f),
102
- O
103
- ]
104
- }, null, 8, ["label", "sublabel", "modelValue"]),
105
- d[9] || (d[9] = r("br", null, null, -1)),
106
- U(r("div", Ue, [
107
- s(X, {
108
- modelValue: I.value,
109
- "onUpdate:modelValue": [
110
- d[1] || (d[1] = (f) => I.value = f),
111
- G
112
- ],
113
- inline: ""
114
- }, {
115
- default: C(() => [
116
- s(Y, {
117
- label: l(e)("order.terminal"),
118
- value: l(p).enum.TERMINAL
119
- }, null, 8, ["label", "value"]),
120
- s(Y, {
121
- label: l(e)("order.nfc"),
122
- value: l(p).enum.NFC
123
- }, null, 8, ["label", "value"])
124
- ]),
125
- _: 1
126
- }, 8, ["modelValue"])
127
- ], 512), [
128
- [R, a.value]
129
- ])
130
- ]),
131
- _: 1
132
- })
133
- ]),
134
- _: 1
135
- }),
136
- s(q, {
137
- variant: "outlined",
138
- class: "mt-2"
139
- }, {
140
- default: C(() => [
141
- s(j, null, {
142
- default: C(() => [
143
- s(F, {
144
- label: l(e)("order.terminal"),
145
- sublabel: l(e)("order.terminalPaymentDescription"),
146
- "label-placement": "right",
147
- modelValue: A.value,
148
- "onUpdate:modelValue": [
149
- d[2] || (d[2] = (f) => A.value = f),
150
- T
151
- ]
152
- }, null, 8, ["label", "sublabel", "modelValue"])
153
- ]),
154
- _: 1
155
- })
156
- ]),
157
- _: 1
158
- }),
159
- s(q, {
160
- variant: "outlined",
161
- class: "mt-2"
162
- }, {
163
- default: C(() => [
164
- s(j, null, {
165
- default: C(() => [
166
- s(F, {
167
- label: l(e)("order.eWallet"),
168
- sublabel: l(e)("order.eWalletDescription"),
169
- "label-placement": "right",
170
- modelValue: V.value,
171
- "onUpdate:modelValue": [
172
- d[3] || (d[3] = (f) => V.value = f),
173
- K
174
- ]
175
- }, null, 8, ["label", "sublabel", "modelValue"]),
176
- d[10] || (d[10] = r("br", null, null, -1)),
177
- U(r("div", Re, [
178
- r("div", Fe, [
179
- s(E, {
180
- modelValue: v.value,
181
- "onUpdate:modelValue": [
182
- d[4] || (d[4] = (f) => v.value = f),
183
- T
184
- ],
185
- label: l(e)("order.qrPay"),
186
- value: l(p).enum.QRPAY
187
- }, null, 8, ["modelValue", "label", "value"]),
188
- s(E, {
189
- modelValue: v.value,
190
- "onUpdate:modelValue": [
191
- d[5] || (d[5] = (f) => v.value = f),
192
- T
193
- ],
194
- label: l(e)("order.scanPay"),
195
- value: l(p).enum.SCANPAY
196
- }, null, 8, ["modelValue", "label", "value"]),
197
- s(E, {
198
- modelValue: v.value,
199
- "onUpdate:modelValue": [
200
- d[6] || (d[6] = (f) => v.value = f),
201
- T
202
- ],
203
- label: l(e)("order.terminalScanPay"),
204
- value: l(p).enum.TERMINAL_SCAN_PAY
205
- }, null, 8, ["modelValue", "label", "value"]),
206
- s(E, {
207
- modelValue: v.value,
208
- "onUpdate:modelValue": [
209
- d[7] || (d[7] = (f) => v.value = f),
210
- T
211
- ],
212
- label: l(e)("order.terminalQrPay"),
213
- value: l(p).enum.TERMINAL_QR_PAY
214
- }, null, 8, ["modelValue", "label", "value"])
215
- ])
216
- ], 512), [
217
- [R, V.value]
218
- ])
219
- ]),
220
- _: 1
221
- })
222
- ]),
223
- _: 1
224
- })
225
- ]),
226
- _: 1
227
- }, 8, ["payment-types", "offline-payment-types", "allow-e-payment", "allow-credit"]);
228
- };
229
- }
230
- }), Ne = {
231
- "en-US": "English",
232
- "zh-CN": "中文",
233
- "th-TH": "ไทย",
234
- "vi-VN": "Tiếng Việt",
235
- "id-ID": "Bahasa Indonesia",
236
- "ko-KR": "한국어",
237
- "ja-JP": "日本語",
238
- "ar-SA": "العربية"
239
- }, Le = xe.map((i) => ({
240
- code: i,
241
- label: Ne[i]
242
- }));
243
- var Oe = { firebase: {} }, De = {};
244
- let z = null;
245
- function Me(i) {
246
- var g;
247
- const c = (g = i.name.split(".").pop()) == null ? void 0 : g.toLowerCase();
248
- return c && /^[a-z0-9]+$/.test(c) ? c : {
249
- "image/jpeg": "jpg",
250
- "image/png": "png",
251
- "image/webp": "webp",
252
- "image/gif": "gif"
253
- }[i.type] ?? "bin";
254
- }
255
- function $e() {
256
- var e;
257
- return (((e = De.firebase) == null ? void 0 : e.storageBucket) ?? Oe.firebase.storageBucket ?? "image.feedme.cc").replace(/^https?:\/\//, "").replace(/\/+$/, "");
258
- }
259
- function We(i) {
260
- const c = i.replace(/^\/+/, "");
261
- return `https://${$e()}/${c}`;
262
- }
263
- async function Ye() {
264
- const i = ue();
265
- if (!i.currentUser && (await i.authStateReady(), !i.currentUser && (z || (z = (async () => {
266
- const c = await ce.getCustomToken();
267
- await me(i, c);
268
- })().finally(() => {
269
- z = null;
270
- })), await z, !i.currentUser)))
271
- throw new Error("User not authenticated for image upload");
272
- }
273
- async function je() {
274
- const i = ue();
275
- i.currentUser && await _e(i);
276
- const c = await ce.getCustomToken();
277
- await me(i, c);
278
- }
279
- async function qe(i, c) {
280
- const e = Se(), g = re(e, i);
281
- try {
282
- await se(g, c, {
283
- contentType: c.type || void 0
284
- });
285
- return;
286
- } catch (P) {
287
- if ((P == null ? void 0 : P.code) !== "storage/unauthorized")
288
- throw P;
289
- }
290
- await je();
291
- const w = re(e, i);
292
- await se(w, c, {
293
- contentType: c.type || void 0
294
- });
295
- }
296
- async function Be(i, c) {
297
- await Ye();
298
- const e = i.replace(/^\/+/, "").replace(/\/+$/, ""), g = Me(c), w = `${Date.now()}_${Math.random().toString(36).slice(2, 10)}.${g}`, P = `${e}/${w}`;
299
- return await qe(P, c), We(P);
300
- }
301
- const Ke = {
302
- key: 0,
303
- class: "flex flex-col gap-32"
304
- }, Qe = {
305
- key: 0,
306
- class: "flex flex-col gap-2"
307
- }, ze = { class: "fm-typo-en-title-sm-600" }, He = { class: "flex flex-col gap-1 w-full md:w-1/2" }, Ge = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Je = { class: "flex flex-col gap-2" }, Xe = { class: "fm-typo-en-title-sm-600" }, Ze = { class: "flex flex-col gap-5" }, ea = { class: "flex flex-col gap-16" }, aa = { class: "border p-[1.5rem] fm-corner-radius-lg flex flex-col gap-2 my-5 w-11/12" }, la = { class: "fm-typo-en-title-sm-600" }, ta = { class: "border p-[1.5rem] fm-corner-radius-lg flex flex-col gap-2 my-5 w-11/12" }, na = { class: "fm-typo-en-title-sm-600" }, oa = { class: "flex flex-row gap-2" }, ra = { class: "border p-[1.5rem] fm-corner-radius-lg flex flex-col gap-2 my-5 w-11/12" }, sa = { class: "fm-typo-en-title-sm-600" }, da = { class: "flex flex-col gap-2" }, ia = { class: "fm-typo-en-title-sm-600" }, ua = { class: "border p-[1.5rem] fm-corner-radius-lg flex flex-col gap-2 my-5 w-11/12" }, ma = { class: "fm-typo-en-title-sm-600" }, pa = { class: "flex flex-col gap-2" }, ca = { class: "fm-typo-en-title-sm-600" }, ya = { class: "flex flex-col gap-2" }, fa = { class: "fm-typo-en-title-sm-600" }, va = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, ba = { class: "border p-[1.5rem] fm-corner-radius-lg flex flex-col gap-4 my-5 w-11/12" }, ga = { class: "grid grid-cols-1 md:grid-cols-2 gap-3" }, Ia = {
308
- key: 0,
309
- class: "fm-typo-en-body-sm-400 text-fm-color-system-error-300"
310
- }, Pa = { class: "flex flex-col gap-2" }, Sa = { class: "fm-typo-en-title-sm-600" }, _a = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, xa = { class: "border p-[1.5rem] fm-corner-radius-lg flex flex-col gap-4 my-5 w-11/12" }, ha = { class: "fm-typo-en-body-md-600" }, wa = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Va = {
311
- key: 1,
312
- class: "flex flex-col gap-2"
313
- }, ka = ["src", "alt"], Ta = { class: "border p-[1.5rem] fm-corner-radius-lg flex flex-col gap-4 my-5 w-11/12" }, Ca = { class: "fm-typo-en-body-md-600" }, Aa = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Ua = {
314
- key: 1,
315
- class: "flex flex-col gap-2"
316
- }, Ra = ["src", "alt"], Fa = { class: "flex flex-col gap-2" }, Ea = { class: "fm-typo-en-title-sm-600" }, Na = { class: "flex flex-col gap-2" }, La = { key: 1 }, de = 10 * 1e3 * 1e3, ja = /* @__PURE__ */ ie({
317
- __name: "KioskSettingView",
318
- props: {
319
- restaurantId: {},
320
- form: {}
321
- },
322
- emits: ["updateKioskOrderSetting"],
323
- setup(i, { emit: c }) {
324
- const { t: e } = pe(), g = Te(), w = k(() => {
325
- var o;
326
- return ((o = g.sessionUser.value) == null ? void 0 : o.role.isAdmin) ?? !1;
327
- }), P = i, I = Ce(), v = c, a = $(P.form), A = Le, V = k(() => a.value.languages != null), W = k(() => a.value.languages ?? []);
328
- function G(o) {
329
- a.value.languages = o ? ["en-US"] : null;
330
- }
331
- function T(o, t) {
332
- const u = a.value.languages ?? [];
333
- a.value.languages = t ? A.filter((m) => m.code === o || u.includes(m.code)).map((m) => m.code) : u.filter((m) => m !== o);
334
- }
335
- const O = (o) => o < 0 ? e("order.nonNegativeRule") : !0, K = (o) => o <= (a.value.dineIn.displayStand.standSlotRange.min ?? 0) ? e("order.greaterThanMinRule") : !0, J = k(() => [O]), y = k(() => [O]), d = k(() => [O, K]), F = k(() => {
336
- var m, _, N, B, D, n, Q, te;
337
- const o = a.value, t = (m = o.otaChannel) == null ? void 0 : m.trim();
338
- if (o.dineIn.enabled && o.dineIn.displayStand.enabled) {
339
- const { padDigit: x, standSlotRange: M } = o.dineIn.displayStand;
340
- if (!(x != null && x >= 0 && M.min != null && M.max != null && M.min <= M.max)) return null;
341
- }
342
- if (o.languages != null && o.languages.length === 0) return null;
343
- const u = o.paymentSetting;
344
- if ((_ = u == null ? void 0 : u.paymentTypes) != null && _.includes(he.enum.ePayment)) {
345
- const x = u.ePaymentTypes;
346
- if (!x) return null;
347
- const M = ((N = x.card) == null ? void 0 : N.terminal) || ((B = x.card) == null ? void 0 : B.nfc), ne = ((D = x.eWallet) == null ? void 0 : D.qrPay) || ((n = x.eWallet) == null ? void 0 : n.scanPay) || ((Q = x.eWallet) == null ? void 0 : Q.terminalScanPay) || ((te = x.eWallet) == null ? void 0 : te.terminalQrPay), ve = x.terminal;
348
- if (!M && !ne && !ve) return null;
349
- }
350
- return {
351
- ...o,
352
- otaChannel: t || void 0,
353
- dineIn: {
354
- ...o.dineIn,
355
- displayStand: {
356
- ...o.dineIn.displayStand,
357
- enabled: o.dineIn.enabled && o.dineIn.displayStand.enabled,
358
- padDigit: o.dineIn.displayStand.padDigit ?? 0,
359
- standSlotRange: {
360
- min: o.dineIn.displayStand.standSlotRange.min ?? 0,
361
- max: o.dineIn.displayStand.standSlotRange.max ?? 10
362
- },
363
- prefix: o.dineIn.displayStand.prefix ?? ""
364
- }
365
- }
366
- };
367
- }), { startAsyncCall: Y } = Ve();
368
- function X(o) {
369
- a.value.paymentSetting.paymentTypes = o;
370
- }
371
- function j(o) {
372
- a.value.paymentSetting.ePaymentTypes = o;
373
- }
374
- const q = ke();
375
- function E(o) {
376
- a.value[o] = null;
377
- }
378
- function f(o) {
379
- const t = a.value[o];
380
- if (!t) return null;
381
- const u = t.trim();
382
- return u.length > 0 ? u : null;
383
- }
384
- async function ee(o, t) {
385
- try {
386
- const u = await Y(async () => {
387
- const m = `/restaurant/${P.restaurantId}/kiosk/${o}`;
388
- return await Be(m, t);
389
- });
390
- a.value[o] = u, I.open({
391
- title: e("order.imageUploadSuccess"),
392
- type: "success"
393
- });
394
- } catch (u) {
395
- console.error(u), I.open({
396
- title: e("order.imageUploadFailed"),
397
- type: "error"
398
- });
399
- }
400
- }
401
- function ae(o, t) {
402
- var _, N;
403
- const u = e(o === "coverImageLandscape" ? "order.coverImageLandscape" : "order.coverImagePortrait"), m = (N = (_ = t[0]) == null ? void 0 : _.reason) == null ? void 0 : N[0];
404
- I.open({
405
- title: m ? `${e("order.imageUploadRejected")}: ${u} (${m})` : `${e("order.imageUploadRejected")}: ${u}`,
406
- type: "error"
407
- });
408
- }
409
- const ye = k(() => q.getRestaurantEPayment()), le = k({
410
- get: () => (a.value.dineIn.displayStand.enabled && a.value.dineIn.displayStand.enablePaxDialog || a.value.dineIn.pickUp.enablePaxDialog) ?? !1,
411
- set: (o) => {
412
- a.value.dineIn.displayStand.enablePaxDialog = o, a.value.dineIn.pickUp.enablePaxDialog = o;
413
- }
414
- });
415
- ge(
416
- () => [
417
- a.value.dineIn.enabled,
418
- a.value.dineIn.pickUp.enabled,
419
- a.value.dineIn.displayStand.enabled
420
- ],
421
- ([o, t, u], m) => {
422
- const _ = (m == null ? void 0 : m[0]) ?? !1;
423
- o && !t && !u && (a.value.dineIn.pickUp.enabled = !0, _ || I.open({
424
- title: e("order.dineInModeAutoCorrected"),
425
- type: "info"
426
- }));
427
- },
428
- { immediate: !0 }
429
- );
430
- async function fe() {
431
- if (F.value) {
432
- const o = F.value;
433
- Y(async () => {
434
- await v("updateKioskOrderSetting", o);
435
- });
436
- } else
437
- I.open({
438
- title: e("order.failedToUpdateSetting"),
439
- type: "error"
440
- });
441
- }
442
- return (o, t) => {
443
- const u = S("FmTextField"), m = S("FmSwitch"), _ = S("FmStepperField"), N = S("FmCheckbox"), B = S("FmDropField"), D = S("FmButton");
444
- return a.value ? (h(), L("div", Ke, [
445
- w.value ? (h(), L("div", Qe, [
446
- r("span", ze, b(l(e)("order.otaChannel")), 1),
447
- r("div", He, [
448
- s(u, {
449
- modelValue: a.value.otaChannel,
450
- "onUpdate:modelValue": t[0] || (t[0] = (n) => a.value.otaChannel = n),
451
- label: l(e)("order.otaChannel"),
452
- placeholder: l(e)("order.otaChannelHint")
453
- }, null, 8, ["modelValue", "label", "placeholder"]),
454
- r("span", Ge, b(l(e)("order.otaChannelHint")), 1)
455
- ])
456
- ])) : Z("", !0),
457
- r("div", Je, [
458
- r("span", Xe, b(l(e)("order.dineIn")), 1),
459
- r("div", Ze, [
460
- s(m, {
461
- modelValue: a.value.dineIn.enabled,
462
- "onUpdate:modelValue": t[1] || (t[1] = (n) => a.value.dineIn.enabled = n),
463
- label: l(e)("order.dineIn"),
464
- "label-placement": "right"
465
- }, null, 8, ["modelValue", "label"]),
466
- U(r("div", ea, [
467
- r("div", null, [
468
- s(m, {
469
- modelValue: a.value.dineIn.pickUp.enabled,
470
- "onUpdate:modelValue": t[2] || (t[2] = (n) => a.value.dineIn.pickUp.enabled = n),
471
- label: l(e)("order.pickAtCounter"),
472
- "label-placement": "right"
473
- }, null, 8, ["modelValue", "label"]),
474
- U(r("div", aa, [
475
- r("span", la, b(l(e)("order.submitOrderInstruction")), 1),
476
- s(u, {
477
- modelValue: a.value.dineIn.pickUp.submitOrderInstruction.payAtCounter,
478
- "onUpdate:modelValue": t[3] || (t[3] = (n) => a.value.dineIn.pickUp.submitOrderInstruction.payAtCounter = n),
479
- label: l(e)("order.payAtCounter"),
480
- placeholder: "Collect your transaction slip below and present it to the cashier"
481
- }, null, 8, ["modelValue", "label"]),
482
- s(u, {
483
- modelValue: a.value.dineIn.pickUp.submitOrderInstruction.paid,
484
- "onUpdate:modelValue": t[4] || (t[4] = (n) => a.value.dineIn.pickUp.submitOrderInstruction.paid = n),
485
- label: l(e)("order.paid"),
486
- placeholder: "Please wait as we prepare your food. We'll call your number when it's ready."
487
- }, null, 8, ["modelValue", "label"])
488
- ], 512), [
489
- [R, a.value.dineIn.pickUp.enabled]
490
- ])
491
- ]),
492
- r("div", null, [
493
- s(m, {
494
- modelValue: a.value.dineIn.displayStand.enabled,
495
- "onUpdate:modelValue": t[5] || (t[5] = (n) => a.value.dineIn.displayStand.enabled = n),
496
- label: l(e)("order.displayStand"),
497
- "label-placement": "right"
498
- }, null, 8, ["modelValue", "label"]),
499
- U(r("div", ta, [
500
- r("span", na, b(l(e)("order.tableServiceSetting")), 1),
501
- s(u, {
502
- modelValue: a.value.dineIn.displayStand.prefix,
503
- "onUpdate:modelValue": t[6] || (t[6] = (n) => a.value.dineIn.displayStand.prefix = n),
504
- label: l(e)("order.prefix"),
505
- placeholder: l(e)("order.prefix")
506
- }, null, 8, ["modelValue", "label", "placeholder"]),
507
- r("div", oa, [
508
- s(_, {
509
- modelValue: a.value.dineIn.displayStand.standSlotRange.min,
510
- "onUpdate:modelValue": t[7] || (t[7] = (n) => a.value.dineIn.displayStand.standSlotRange.min = n),
511
- class: "w-1/2",
512
- label: l(e)("order.start"),
513
- labelMark: "required",
514
- rules: y.value,
515
- placeholder: l(e)("order.enterANumber")
516
- }, null, 8, ["modelValue", "label", "rules", "placeholder"]),
517
- s(_, {
518
- modelValue: a.value.dineIn.displayStand.standSlotRange.max,
519
- "onUpdate:modelValue": t[8] || (t[8] = (n) => a.value.dineIn.displayStand.standSlotRange.max = n),
520
- class: "w-1/2",
521
- label: l(e)("order.end"),
522
- labelMark: "required",
523
- rules: d.value,
524
- placeholder: l(e)("order.enterANumber")
525
- }, null, 8, ["modelValue", "label", "rules", "placeholder"])
526
- ]),
527
- s(_, {
528
- modelValue: a.value.dineIn.displayStand.padDigit,
529
- "onUpdate:modelValue": t[9] || (t[9] = (n) => a.value.dineIn.displayStand.padDigit = n),
530
- label: l(e)("order.padDigit"),
531
- labelMark: "required",
532
- rules: J.value,
533
- placeholder: l(e)("order.padDigit")
534
- }, null, 8, ["modelValue", "label", "rules", "placeholder"])
535
- ], 512), [
536
- [R, a.value.dineIn.displayStand.enabled]
537
- ]),
538
- U(r("div", ra, [
539
- r("span", sa, b(l(e)("order.submitOrderInstruction")), 1),
540
- s(u, {
541
- modelValue: a.value.dineIn.displayStand.submitOrderInstruction.payAtCounter,
542
- "onUpdate:modelValue": t[10] || (t[10] = (n) => a.value.dineIn.displayStand.submitOrderInstruction.payAtCounter = n),
543
- label: l(e)("order.payAtCounter"),
544
- placeholder: "Collect your transaction slip below and present it to the cashier"
545
- }, null, 8, ["modelValue", "label"]),
546
- s(u, {
547
- modelValue: a.value.dineIn.displayStand.submitOrderInstruction.paid,
548
- "onUpdate:modelValue": t[11] || (t[11] = (n) => a.value.dineIn.displayStand.submitOrderInstruction.paid = n),
549
- label: l(e)("order.paid"),
550
- placeholder: "Please collect your receipt and we'll bring your food to your table once it's ready."
551
- }, null, 8, ["modelValue", "label"])
552
- ], 512), [
553
- [R, a.value.dineIn.displayStand.enabled]
554
- ])
555
- ])
556
- ], 512), [
557
- [R, a.value.dineIn.enabled]
558
- ])
559
- ])
560
- ]),
561
- r("div", da, [
562
- r("span", ia, b(l(e)("order.takeawayTitle")), 1),
563
- s(m, {
564
- modelValue: a.value.takeaway.enabled,
565
- "onUpdate:modelValue": t[12] || (t[12] = (n) => a.value.takeaway.enabled = n),
566
- label: l(e)("order.takeaway"),
567
- "label-placement": "right",
568
- class: "mb-5"
569
- }, null, 8, ["modelValue", "label"]),
570
- U(r("div", ua, [
571
- r("span", ma, b(l(e)("order.submitOrderInstruction")), 1),
572
- s(u, {
573
- modelValue: a.value.takeaway.submitOrderInstruction.payAtCounter,
574
- "onUpdate:modelValue": t[13] || (t[13] = (n) => a.value.takeaway.submitOrderInstruction.payAtCounter = n),
575
- label: l(e)("order.payAtCounter"),
576
- placeholder: "Collect your transaction slip below and present it to the cashier"
577
- }, null, 8, ["modelValue", "label"]),
578
- s(u, {
579
- modelValue: a.value.takeaway.submitOrderInstruction.paid,
580
- "onUpdate:modelValue": t[14] || (t[14] = (n) => a.value.takeaway.submitOrderInstruction.paid = n),
581
- label: l(e)("order.paid"),
582
- placeholder: "Please wait as we prepare your food. We'll call your number when it's ready."
583
- }, null, 8, ["modelValue", "label"])
584
- ], 512), [
585
- [R, a.value.takeaway.enabled]
586
- ])
587
- ]),
588
- r("div", pa, [
589
- r("span", ca, b(l(e)("order.menuItem")), 1),
590
- s(m, {
591
- modelValue: a.value.menuItem.showAllOnly,
592
- "onUpdate:modelValue": t[15] || (t[15] = (n) => a.value.menuItem.showAllOnly = n),
593
- label: l(e)("order.showNotAvailableMenuItem"),
594
- "label-placement": "right",
595
- class: "mb-5"
596
- }, null, 8, ["modelValue", "label"])
597
- ]),
598
- r("div", ya, [
599
- r("span", fa, b(l(e)("order.kioskLanguage")), 1),
600
- r("span", va, b(l(e)("order.kioskLanguageHint")), 1),
601
- r("div", ba, [
602
- s(m, {
603
- "model-value": V.value,
604
- label: l(e)("order.kioskLanguageRestrict"),
605
- sublabel: l(e)("order.kioskLanguageRestrictSublabel"),
606
- "label-placement": "right",
607
- "onUpdate:modelValue": G
608
- }, null, 8, ["model-value", "label", "sublabel"]),
609
- U(r("div", ga, [
610
- (h(!0), L(Ie, null, Pe(l(A), (n) => (h(), H(N, {
611
- key: n.code,
612
- "model-value": W.value.includes(n.code),
613
- value: n.code,
614
- label: n.label,
615
- "onUpdate:modelValue": (Q) => T(n.code, Q)
616
- }, null, 8, ["model-value", "value", "label", "onUpdate:modelValue"]))), 128))
617
- ], 512), [
618
- [R, V.value]
619
- ]),
620
- V.value && W.value.length === 0 ? (h(), L("span", Ia, b(l(e)("order.kioskLanguageAtLeastOne")), 1)) : Z("", !0)
621
- ])
622
- ]),
623
- r("div", Pa, [
624
- r("span", Sa, b(l(e)("order.coverImage")), 1),
625
- r("span", _a, b(l(e)("order.coverImageFallbackHint")), 1),
626
- r("div", xa, [
627
- r("span", ha, b(l(e)("order.coverImageLandscape")), 1),
628
- r("span", wa, b(l(e)("order.coverImageLandscapeHint")), 1),
629
- f("coverImageLandscape") ? (h(), L("div", Va, [
630
- r("img", {
631
- src: f("coverImageLandscape"),
632
- alt: l(e)("order.coverImageLandscape"),
633
- class: "max-w-[400px] aspect-video object-cover rounded-md border border-fm-color-neutral-gray-200"
634
- }, null, 8, ka),
635
- s(D, {
636
- variant: "tertiary",
637
- class: "mr-auto",
638
- label: l(e)("common.delete"),
639
- onClick: t[18] || (t[18] = (n) => E("coverImageLandscape"))
640
- }, null, 8, ["label"])
641
- ])) : (h(), H(B, {
642
- key: 0,
643
- accept: "image/*",
644
- "max-file-size": de,
645
- "content-class": "w-full max-w-[400px] aspect-video",
646
- onFileUpload: t[16] || (t[16] = (n) => ee("coverImageLandscape", n)),
647
- onFileRejected: t[17] || (t[17] = (n) => ae("coverImageLandscape", n))
648
- }))
649
- ]),
650
- r("div", Ta, [
651
- r("span", Ca, b(l(e)("order.coverImagePortrait")), 1),
652
- r("span", Aa, b(l(e)("order.coverImagePortraitHint")), 1),
653
- f("coverImagePortrait") ? (h(), L("div", Ua, [
654
- r("img", {
655
- src: f("coverImagePortrait"),
656
- alt: l(e)("order.coverImagePortrait"),
657
- class: "max-w-[200px] aspect-[9/16] object-cover rounded-md border border-fm-color-neutral-gray-200"
658
- }, null, 8, Ra),
659
- s(D, {
660
- variant: "tertiary",
661
- class: "mr-auto",
662
- label: l(e)("common.delete"),
663
- onClick: t[21] || (t[21] = (n) => E("coverImagePortrait"))
664
- }, null, 8, ["label"])
665
- ])) : (h(), H(B, {
666
- key: 0,
667
- accept: "image/*",
668
- "max-file-size": de,
669
- "content-class": "w-[240px] aspect-[9/16]",
670
- onFileUpload: t[19] || (t[19] = (n) => ee("coverImagePortrait", n)),
671
- onFileRejected: t[20] || (t[20] = (n) => ae("coverImagePortrait", n))
672
- }))
673
- ])
674
- ]),
675
- r("div", Fa, [
676
- r("span", Ea, b(l(e)("order.displayPaxDialogTitle")), 1),
677
- s(m, {
678
- modelValue: le.value,
679
- "onUpdate:modelValue": t[22] || (t[22] = (n) => le.value = n),
680
- label: l(e)("order.displayPaxDialogDescription"),
681
- "label-placement": "right",
682
- class: "mb-5"
683
- }, null, 8, ["modelValue", "label"])
684
- ]),
685
- Z("", !0),
686
- r("div", Na, [
687
- s(Ee, {
688
- "payment-types": a.value.paymentSetting.paymentTypes ?? [],
689
- "allow-credit": !0,
690
- "allow-e-payment": ye.value,
691
- "offline-payment-types": a.value.paymentSetting.offlinePaymentTypes ?? [],
692
- ePaymentTypes: a.value.paymentSetting.ePaymentTypes ?? {},
693
- "onUpdate:paymentTypes": X,
694
- "onUpdate:offlinePaymentTypes": t[24] || (t[24] = (n) => a.value.paymentSetting.offlinePaymentTypes = n),
695
- "onUpdate:ePaymentTypes": j
696
- }, null, 8, ["payment-types", "allow-e-payment", "offline-payment-types", "ePaymentTypes"])
697
- ]),
698
- s(D, {
699
- class: "w-1/4 mb-10",
700
- variant: "primary",
701
- label: l(e)("order.updateSetting"),
702
- disabled: !F.value,
703
- onClick: fe
704
- }, null, 8, ["label", "disabled"])
705
- ])) : (h(), L("div", La, b(l(e)("order.pleaseSelectRestaurant")), 1));
706
- };
707
- }
708
- });
709
- export {
710
- ja as default
711
- };