@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,127 +1,138 @@
1
- import { FdoEPaymentMethod, F_ORDER_PAYMENT_TYPE } from "@entity";
2
- import { FdoOfflinePaymentMethod } from '@feedmepos/core/entity';
3
-
4
- export interface MfKioskSubmitOrderInstruction {
5
- payAtCounter: string | null,
6
- paid: string | null,
7
- }
8
-
9
- export type KioskSubmitOrderInstructionForm = MfKioskSubmitOrderInstruction;
10
-
11
- export interface MfDisplayStandSetting {
12
- enabled: boolean,
13
- standSlotRange: {
14
- min: number,
15
- max: number,
16
- },
17
- prefix: string | null,
18
- padDigit: number,
19
- enablePaxDialog: boolean,
20
- submitOrderInstruction: MfKioskSubmitOrderInstruction,
21
- }
22
-
23
- export interface DisplayStandSettingForm {
24
- enabled: boolean,
25
- standSlotRange: {
26
- min: number | null,
27
- max: number | null
28
- },
29
- prefix: string | null,
30
- padDigit: number | null,
31
- enablePaxDialog: boolean,
32
- submitOrderInstruction: KioskSubmitOrderInstructionForm,
33
- }
34
-
35
- export interface MfKioskPickAtCounterSetting {
36
- enabled: boolean,
37
- enablePaxDialog: boolean,
38
- submitOrderInstruction: MfKioskSubmitOrderInstruction,
39
- }
40
-
41
- export interface PickAtCounterSettingForm {
42
- enabled: boolean,
43
- enablePaxDialog: boolean,
44
- submitOrderInstruction: KioskSubmitOrderInstructionForm,
45
- }
46
-
47
- export interface MfKioskSequenceNumberSetting {
48
- prefix: string,
49
- current: number,
50
- }
51
-
52
- export interface MfKioskDineInSetting {
53
- enabled: boolean,
54
- sequenceNumber: MfKioskSequenceNumberSetting,
55
- displayStand: MfDisplayStandSetting,
56
- pickUp: MfKioskPickAtCounterSetting,
57
- }
58
-
59
- export interface MfKioskTakeawaySetting {
60
- enabled: boolean,
61
- submitOrderInstruction: MfKioskSubmitOrderInstruction,
62
- }
63
-
64
- export interface MfKioskPaymentSetting {
65
- paymentTypes: MfKioskPaymentTypes,
66
- offlinePaymentTypes: FdoOfflinePaymentMethod[],
67
- ePaymentTypes: FdoEPaymentMethod
68
- }
69
-
70
- export type MfKioskPaymentTypes = F_ORDER_PAYMENT_TYPE[];
71
-
72
- export type KioskTakeawaySettingForm = MfKioskTakeawaySetting;
73
-
74
- export type KioskPaymentTypesForm = MfKioskPaymentTypes;
75
-
76
- export type KioskPaymentSettingForm = MfKioskPaymentSetting;
77
-
78
- export interface MfKioskOrderSetting {
79
- dineIn: MfKioskDineInSetting,
80
- takeaway: MfKioskTakeawaySetting,
81
- paymentSetting: MfKioskPaymentSetting,
82
- menuItem: MfKioskOrderSettingMenuItemForm,
83
- coverImageLandscape: string | null,
84
- coverImagePortrait: string | null,
85
- otaChannel?: string | null,
86
- // null = merchant never chose; the backend then keeps inheriting
87
- // dineInSettings. Must stay nullable end-to-end or saving any unrelated
88
- // kiosk field would persist `false` and silently kill inheritance.
89
- autoCloseBill: boolean | null,
90
- printReceiptAfterClose: boolean | null,
91
- // Locales the kiosk may offer the customer. null or [] = no restriction,
92
- // i.e. the kiosk shows every language it ships. Anything else is the exact
93
- // allowed set.
94
- languages: string[] | null,
95
- }
96
-
97
- export interface MfKioskOrderSettingMenuItemForm {
98
- showAllOnly: boolean,
99
- }
100
-
101
- export interface MfKioskOrderSettingForm {
102
- dineIn: KioskDineInSettingForm,
103
- takeaway: KioskTakeawaySettingForm,
104
- paymentSetting: KioskPaymentSettingForm,
105
- menuItem: KioskMenuItemSettingForm,
106
- coverImageLandscape: string | null,
107
- coverImagePortrait: string | null,
108
- otaChannel?: string | null,
109
- // null = merchant never chose; the backend then keeps inheriting
110
- // dineInSettings. Must stay nullable end-to-end or saving any unrelated
111
- // kiosk field would persist `false` and silently kill inheritance.
112
- autoCloseBill: boolean | null,
113
- printReceiptAfterClose: boolean | null,
114
- // Locales the kiosk may offer the customer. null or [] = no restriction,
115
- // i.e. the kiosk shows every language it ships. Anything else is the exact
116
- // allowed set.
117
- languages: string[] | null,
118
- }
119
-
120
- export type KioskPickAtCounterSettingForm = MfKioskPickAtCounterSetting;
121
- export type KioskMenuItemSettingForm = MfKioskOrderSettingMenuItemForm;
122
- export interface KioskDineInSettingForm {
123
- enabled: boolean,
124
- sequenceNumber: MfKioskSequenceNumberSetting,
125
- displayStand: DisplayStandSettingForm,
126
- pickUp: KioskPickAtCounterSettingForm,
127
- }
1
+ import { FdoEPaymentMethod, F_ORDER_PAYMENT_TYPE, type OrderKioskSettings } from "@entity";
2
+ import { FdoOfflinePaymentMethod } from '@feedmepos/core/entity';
3
+
4
+ export interface MfKioskSubmitOrderInstruction {
5
+ payAtCounter: string | null,
6
+ paid: string | null,
7
+ }
8
+
9
+ export type KioskSubmitOrderInstructionForm = MfKioskSubmitOrderInstruction;
10
+
11
+ export interface MfDisplayStandSetting {
12
+ enabled: boolean,
13
+ standSlotRange: {
14
+ min: number,
15
+ max: number,
16
+ },
17
+ prefix: string | null,
18
+ padDigit: number,
19
+ enablePaxDialog: boolean,
20
+ submitOrderInstruction: MfKioskSubmitOrderInstruction,
21
+ }
22
+
23
+ export interface DisplayStandSettingForm {
24
+ enabled: boolean,
25
+ standSlotRange: {
26
+ min: number | null,
27
+ max: number | null
28
+ },
29
+ prefix: string | null,
30
+ padDigit: number | null,
31
+ enablePaxDialog: boolean,
32
+ submitOrderInstruction: KioskSubmitOrderInstructionForm,
33
+ }
34
+
35
+ export interface MfKioskPickAtCounterSetting {
36
+ enabled: boolean,
37
+ enablePaxDialog: boolean,
38
+ submitOrderInstruction: MfKioskSubmitOrderInstruction,
39
+ }
40
+
41
+ export interface PickAtCounterSettingForm {
42
+ enabled: boolean,
43
+ enablePaxDialog: boolean,
44
+ submitOrderInstruction: KioskSubmitOrderInstructionForm,
45
+ }
46
+
47
+ export interface MfKioskSequenceNumberSetting {
48
+ prefix: string,
49
+ current: number,
50
+ }
51
+
52
+ export interface MfKioskDineInSetting {
53
+ enabled: boolean,
54
+ sequenceNumber: MfKioskSequenceNumberSetting,
55
+ displayStand: MfDisplayStandSetting,
56
+ pickUp: MfKioskPickAtCounterSetting,
57
+ }
58
+
59
+ export interface MfKioskTakeawaySetting {
60
+ enabled: boolean,
61
+ submitOrderInstruction: MfKioskSubmitOrderInstruction,
62
+ }
63
+
64
+ export interface MfKioskPaymentSetting {
65
+ paymentTypes: MfKioskPaymentTypes,
66
+ offlinePaymentTypes: FdoOfflinePaymentMethod[],
67
+ ePaymentTypes: FdoEPaymentMethod
68
+ }
69
+
70
+ export type MfKioskPaymentTypes = F_ORDER_PAYMENT_TYPE[];
71
+
72
+ export type KioskTakeawaySettingForm = MfKioskTakeawaySetting;
73
+
74
+ export type KioskPaymentTypesForm = MfKioskPaymentTypes;
75
+
76
+ export type KioskPaymentSettingForm = MfKioskPaymentSetting;
77
+
78
+ export interface MfKioskOrderSetting {
79
+ dineIn: MfKioskDineInSetting,
80
+ takeaway: MfKioskTakeawaySetting,
81
+ paymentSetting: MfKioskPaymentSetting,
82
+ menuItem: MfKioskOrderSettingMenuItemForm,
83
+ coverImageLandscape: string | null,
84
+ coverImagePortrait: string | null,
85
+ // Multi-image landing background. Edited by the cover-image section of
86
+ // KioskSettingView; it must also stay listed here because the backend
87
+ // $sets kioskSettings as a whole subdocument, so any field the mapper does
88
+ // not rebuild is deleted on the next save of an unrelated kiosk field.
89
+ coverCarousel?: OrderKioskSettings['coverCarousel'],
90
+ otaChannel?: string | null,
91
+ // null = merchant never chose; the backend then keeps inheriting
92
+ // dineInSettings. Must stay nullable end-to-end or saving any unrelated
93
+ // kiosk field would persist `false` and silently kill inheritance.
94
+ autoSendKitchen: boolean | null,
95
+ autoCloseBill: boolean | null,
96
+ printReceiptAfterClose: boolean | null,
97
+ // Locales the kiosk may offer the customer. null or [] = no restriction,
98
+ // i.e. the kiosk shows every language it ships. Anything else is the exact
99
+ // allowed set.
100
+ languages: string[] | null,
101
+ }
102
+
103
+ export interface MfKioskOrderSettingMenuItemForm {
104
+ showAllOnly: boolean,
105
+ }
106
+
107
+ export interface MfKioskOrderSettingForm {
108
+ dineIn: KioskDineInSettingForm,
109
+ takeaway: KioskTakeawaySettingForm,
110
+ paymentSetting: KioskPaymentSettingForm,
111
+ menuItem: KioskMenuItemSettingForm,
112
+ coverImageLandscape: string | null,
113
+ coverImagePortrait: string | null,
114
+ // Multi-image landing background, edited together with the two single
115
+ // fields above — the form shows ONE list per orientation and
116
+ // modules/order-setting/kiosk/coverCarousel.ts maps it onto both fields.
117
+ coverCarousel?: OrderKioskSettings['coverCarousel'],
118
+ otaChannel?: string | null,
119
+ // null = merchant never chose; the backend then keeps inheriting
120
+ // dineInSettings. Must stay nullable end-to-end or saving any unrelated
121
+ // kiosk field would persist `false` and silently kill inheritance.
122
+ autoSendKitchen: boolean | null,
123
+ autoCloseBill: boolean | null,
124
+ printReceiptAfterClose: boolean | null,
125
+ // Locales the kiosk may offer the customer. null or [] = no restriction,
126
+ // i.e. the kiosk shows every language it ships. Anything else is the exact
127
+ // allowed set.
128
+ languages: string[] | null,
129
+ }
130
+
131
+ export type KioskPickAtCounterSettingForm = MfKioskPickAtCounterSetting;
132
+ export type KioskMenuItemSettingForm = MfKioskOrderSettingMenuItemForm;
133
+ export interface KioskDineInSettingForm {
134
+ enabled: boolean,
135
+ sequenceNumber: MfKioskSequenceNumberSetting,
136
+ displayStand: DisplayStandSettingForm,
137
+ pickUp: KioskPickAtCounterSettingForm,
138
+ }
@@ -42,3 +42,29 @@ describe('kiosk languages round-trip', () => {
42
42
  ])
43
43
  })
44
44
  })
45
+
46
+ describe('kiosk cover carousel round-trip', () => {
47
+ const carousel = { landscape: ['l1.jpg', 'l2.jpg'], portrait: ['p1.jpg'], intervalMs: 9000 }
48
+
49
+ it('reads a stored carousel back onto the form', () => {
50
+ expect(toKioskForm({ coverCarousel: carousel }).coverCarousel).toEqual(carousel)
51
+ })
52
+
53
+ it('reads an unset carousel as undefined', () => {
54
+ expect(toKioskForm({}).coverCarousel).toBeUndefined()
55
+ })
56
+
57
+ // The regression this guards: the write side rebuilds kioskSettings field by
58
+ // field and the backend $sets the whole subdocument, so a field the mapper
59
+ // forgets is DELETED the next time the merchant saves some unrelated kiosk
60
+ // setting. Same class of bug as the language/queue-segment guards above.
61
+ it('survives a save of an unrelated kiosk field', () => {
62
+ const form = { ...defaultKioskOrderSetting, coverCarousel: carousel, otaChannel: 'beta' }
63
+ expect(saved(form).coverCarousel).toEqual(carousel)
64
+ })
65
+
66
+ it('writes null through, so clearing the last extra image really removes it', () => {
67
+ const form = { ...defaultKioskOrderSetting, coverCarousel: null }
68
+ expect(saved(form).coverCarousel).toBeNull()
69
+ })
70
+ })