@feedmepos/mf-connect 0.1.38-beta.9 → 0.1.38-beta.91

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 (162) hide show
  1. package/dist/{Analytic-3MN2saaU.js → Analytic-Drbkm5By.js} +31 -32
  2. package/dist/{App-Co8X5Wdy.js → App-C0cdcG5i.js} +741 -728
  3. package/dist/AuditLogs-BZZLtf2u.js +2013 -0
  4. package/dist/{Bin-8a56ZDib.js → Bin-DRV5lRmj.js} +10 -10
  5. package/dist/Broadcast-C90FN2LB.js +266 -0
  6. package/dist/{CampaignTypeDialog.vue_vue_type_script_setup_true_lang-BVXlfq31.js → CampaignTypeDialog.vue_vue_type_script_setup_true_lang-CsdxwjCn.js} +6 -6
  7. package/dist/{Card-B8_09LJu.js → Card-CWF84A1O.js} +145 -140
  8. package/dist/Collections-ja0gMaFf.js +540 -0
  9. package/dist/Credit-D8U2AJgq.js +260 -0
  10. package/dist/CustomSelect.vue_vue_type_script_setup_true_lang-Du7fRSZC.js +128 -0
  11. package/dist/DateInput.vue_vue_type_script_setup_true_lang-BN4Q5Y3l.js +54 -0
  12. package/dist/{DateRangeChip.vue_vue_type_script_setup_true_lang-BUzUIIUW.js → DateRangeChip.vue_vue_type_script_setup_true_lang-eIoPtgO5.js} +1 -1
  13. package/dist/EditCampaignSheet.vue_vue_type_script_setup_true_lang-YR62BvBG.js +3120 -0
  14. package/dist/EffectSheet.vue_vue_type_style_index_0_lang-BVbhDMqH.js +351 -0
  15. package/dist/Experience-DDXLGizu.js +259 -0
  16. package/dist/{FileSaver.min-NlMItPOc.js → FileSaver.min-Dng61jiL.js} +1 -1
  17. package/dist/FilterChip.vue_vue_type_script_setup_true_lang-DaU-9GzO.js +129 -0
  18. package/dist/FmTableSelection.vue_vue_type_script_setup_true_lang-DzcUc0_w.js +52 -0
  19. package/dist/Game-CMOilzsW.js +330 -0
  20. package/dist/Grab-tPVQB39R.js +300 -0
  21. package/dist/{ImageInput.vue_vue_type_script_setup_true_lang-rWUkV9gn.js → ImageInput.vue_vue_type_script_setup_true_lang-BbtEXO4b.js} +49 -48
  22. package/dist/{Index-DLF71mx_.js → Index-Ch7wiShF.js} +54 -54
  23. package/dist/LocationPicker.vue_vue_type_script_setup_true_lang-DLO0jj6Z.js +48 -0
  24. package/dist/{LottieAnimation.vue_vue_type_script_setup_true_lang-CyGJxUol.js → LottieAnimation.vue_vue_type_script_setup_true_lang-CplyhUFF.js} +1 -1
  25. package/dist/{MainLayout-B1aJoR95.js → MainLayout-BMqnfxHh.js} +1 -1
  26. package/dist/Marketing-C0weDg-u.js +236 -0
  27. package/dist/MarketingMaterialEdit-BD-SyXVQ.js +1036 -0
  28. package/dist/{Member-Bkw4aqtv.js → Member-Bpf0amjr.js} +38 -37
  29. package/dist/{MemberList-a3PdVYB3.js → MemberList-cWYPEpL4.js} +485 -489
  30. package/dist/{MemberTransactions-CPDBd-n3.js → MemberTransactions-vzRUVwpO.js} +1 -1
  31. package/dist/{MessageInput.vue_vue_type_script_setup_true_lang-pbN8pN1m.js → MessageInput.vue_vue_type_script_setup_true_lang-DY3L9CvB.js} +10392 -9967
  32. package/dist/Mission-HRwIp1QY.js +334 -0
  33. package/dist/{Overview-De97NDoe.js → Overview-D9cfX4Kr.js} +34 -34
  34. package/dist/Point-Dz-Z0_m9.js +262 -0
  35. package/dist/Promotion-Csb0bdI6.js +397 -0
  36. package/dist/{Queue-ISVZxCE2.js → Queue-CAVKh9bK.js} +18 -18
  37. package/dist/{Record-2FMByNC6.js → Record-bPnIoHnT.js} +15 -14
  38. package/dist/Review-D2DfvLqJ.js +621 -0
  39. package/dist/ReviewFacebookCallback-CI7V3xbp.js +243 -0
  40. package/dist/ReviewGoogleCallback-LA2S8FLZ.js +213 -0
  41. package/dist/{Reward-DPRyQ37x.js → Reward-DdHF5Pr7.js} +16 -16
  42. package/dist/{RewardGroup.vue_vue_type_script_setup_true_lang-Ba7-3bL-.js → RewardGroup.vue_vue_type_script_setup_true_lang-DyZhWnI4.js} +13 -14
  43. package/dist/RuleGroup.vue_vue_type_script_setup_true_lang-B0OSLJVN.js +1912 -0
  44. package/dist/Segment-DV1zcWF7.js +1015 -0
  45. package/dist/{SelectItems.vue_vue_type_script_setup_true_lang-DZbyDVid.js → SelectItems.vue_vue_type_script_setup_true_lang-Df1HE9sL.js} +23 -23
  46. package/dist/{SendCollectionSheet.vue_vue_type_script_setup_true_lang-ioMFYIwK.js → SendCollectionSheet.vue_vue_type_script_setup_true_lang-C0K9giqI.js} +12 -12
  47. package/dist/SendVoucherSheet.vue_vue_type_script_setup_true_lang-CzJL8Xl0.js +226 -0
  48. package/dist/Setting-DZiZy8A5.js +2039 -0
  49. package/dist/SettingAdvertisements-Bb9shWVJ.js +264 -0
  50. package/dist/Store-mymtMyho.js +1996 -0
  51. package/dist/StoreRewards-jcjZfSv7.js +537 -0
  52. package/dist/StoreTransactions.vue_vue_type_script_setup_true_lang-B-b5_TFL.js +1130 -0
  53. package/dist/TargetLocationInput.vue_vue_type_script_setup_true_lang-sCa1J_hq.js +7007 -0
  54. package/dist/{Tier-CwRj0oJ1.js → Tier-Ba6aHC3R.js} +562 -480
  55. package/dist/{Title-EII5OxSP.js → Title-C4uKD8E1.js} +151 -149
  56. package/dist/{Transaction-1MTkAfej.js → Transaction-Bf2uG6co.js} +2 -2
  57. package/dist/{UserRuleGroup.vue_vue_type_script_setup_true_lang-BlQVWQHJ.js → UserRuleGroup.vue_vue_type_script_setup_true_lang-C3ttU-bw.js} +7 -7
  58. package/dist/Voucher-Lsc2pKCk.js +421 -0
  59. package/dist/VoucherEditor.vue_vue_type_script_setup_true_lang-MA7tsTm-.js +421 -0
  60. package/dist/{ZodTextField.vue_vue_type_script_setup_true_lang-CTeGK4bk.js → ZodTextField.vue_vue_type_script_setup_true_lang-DEDavbCx.js} +2 -2
  61. package/dist/app-BRrGcz9U.js +59647 -0
  62. package/dist/app.js +1 -1
  63. package/dist/{business-DjnN-J4U.js → business-TBSvPv65.js} +11 -8
  64. package/dist/campaign-CL95CZkI.js +219 -0
  65. package/dist/campaign-DxcuYXB7.js +254 -0
  66. package/dist/campaign.enum-DRydaoy9.js +26 -0
  67. package/dist/campaign.fn-BsoUwQ5N.js +776 -0
  68. package/dist/{collectible.enum-r6N115Lu.js → collectible.enum-CpTbpumt.js} +1 -1
  69. package/dist/{collection.fn-CSsfVv26.js → collection.fn-BNrPdDIr.js} +2 -2
  70. package/dist/dto-BGrkIVqX.js +222 -0
  71. package/dist/duplicateCampaign-DBaFROXd.js +51 -0
  72. package/dist/effect-fonU-1xO.js +89 -0
  73. package/dist/{email-addresses-D8uheCCF.js → email-addresses-WeV5Gvxa.js} +2 -2
  74. package/dist/{export-Ver6WiX6.js → export-DDXf8yf_.js} +4 -4
  75. package/dist/{helper-Bg4xoFbh.js → helper-DwnzJKxo.js} +22 -7
  76. package/dist/index-10x-WMiS.js +30289 -0
  77. package/dist/index-9Wt89ReU.js +3625 -0
  78. package/dist/{index-Bb0CHeNx.js → index-Brh5FXQ7.js} +3 -3
  79. package/dist/index-BxxNZQUc.js +8910 -0
  80. package/dist/{index-hJUxCNsF.js → index-CDAMmPIn.js} +1 -1
  81. package/dist/{index-CNhr0_Zx.js → index-Cg1vzNzf.js} +617 -191
  82. package/dist/{index-BZZ4iF4-.js → index-Cl7QnFc4.js} +23 -12
  83. package/dist/index-CuvNtC_M.js +61 -0
  84. package/dist/{index-BPQyQc4q.js → index-Cvw-xFek.js} +1 -1
  85. package/dist/index-DCJ_r_e2.js +85 -0
  86. package/dist/{index-Dn_bmcns.js → index-DLG8B-TK.js} +3 -3
  87. package/dist/{index-D4JOeJJJ.js → index-DWhh_u0L.js} +1 -1
  88. package/dist/index-DsQJTvKe.js +28900 -0
  89. package/dist/index-oR7xhhIt.js +48 -0
  90. package/dist/{index.esm2017-hK1Mi9yY.js → index.esm2017-CFvohTUs.js} +122 -122
  91. package/dist/{loading-kIQFOTwH.js → loading-DiD8J1Jc.js} +4 -3
  92. package/dist/{lodash-B5I3zXaY.js → lodash-BJgKlNEt.js} +1 -1
  93. package/dist/{membership--xR-HZoa.js → membership-C8HuK9_K.js} +38 -18
  94. package/dist/{moment-BWErdI6_.js → moment-D7p2TMB-.js} +6 -1
  95. package/dist/{money-c-ITXnlg.js → money-DXl1-c0l.js} +1 -1
  96. package/dist/{number-DfZSBLOY.js → number-C6RGu6qp.js} +1 -1
  97. package/dist/objectid-8Boc1xMT.js +145 -0
  98. package/dist/{campaign-BpJ1O6KS.js → plugins-CxBcRdUi.js} +677 -699
  99. package/dist/remy-D_Deb3ue.js +13 -0
  100. package/dist/{reward-CE0ifMHS.js → reward-CEh2CA9Z.js} +1 -1
  101. package/dist/{rule-DrjdmpaB.js → rule-DEfU8NOO.js} +505 -487
  102. package/dist/rule-builder-BZIx2IzX.js +102 -0
  103. package/dist/string-Gcy5IM_H.js +32 -0
  104. package/dist/style.css +11 -2
  105. package/dist/template-Ba8NxY41.js +188 -0
  106. package/dist/timezone-DUqMvcwo.js +1156 -0
  107. package/dist/trigger-KQ-DPHv-.js +213 -0
  108. package/dist/useMarketingMaterialActions-DSI7Fpu9.js +96 -0
  109. package/dist/usePagination-BeTADCIt.js +220 -0
  110. package/dist/{user-Cl3IotYV.js → user-DN6_QE2j.js} +15 -14
  111. package/dist/vue-i18n-B4dOYJz4.js +2365 -0
  112. package/dist/{xlsx-BDBzdOuM.js → xlsx-BDFTkXYe.js} +1 -1
  113. package/dist/{zod-Bg2FbC-D.js → zod-B8WJKIxe.js} +32 -31
  114. package/package.json +14 -6
  115. package/dist/AuditLogs-DTq6IAuc.js +0 -1887
  116. package/dist/Broadcast-UreS5Kiq.js +0 -227
  117. package/dist/Collections-B0I5ULxR.js +0 -465
  118. package/dist/Credit-B4Ad8DWP.js +0 -222
  119. package/dist/CustomSelect.vue_vue_type_script_setup_true_lang-DLnvDVgf.js +0 -108
  120. package/dist/EditCampaignSheet.vue_vue_type_script_setup_true_lang-DjgACf9F.js +0 -2185
  121. package/dist/EffectSheet.vue_vue_type_style_index_0_lang-y5JnuIev.js +0 -347
  122. package/dist/Experience-xO5KpTTm.js +0 -223
  123. package/dist/FilterChip.vue_vue_type_script_setup_true_lang-d8rh38tD.js +0 -114
  124. package/dist/Game-ChgrVvz5.js +0 -278
  125. package/dist/Marketing-BlmRXSGl.js +0 -20073
  126. package/dist/Mission-B07wK0HX.js +0 -296
  127. package/dist/Point-Ckj9QIeH.js +0 -226
  128. package/dist/Promotion-aGNCOeRN.js +0 -289
  129. package/dist/RuleGroup.vue_vue_type_script_setup_true_lang-DWj-421v.js +0 -1751
  130. package/dist/Segment-CRMNJ11X.js +0 -882
  131. package/dist/SendVoucherSheet.vue_vue_type_script_setup_true_lang-Cfp8XXdO.js +0 -147
  132. package/dist/Setting-c0FWRZsD.js +0 -1936
  133. package/dist/Store-Bm1_15s8.js +0 -1842
  134. package/dist/StoreRewards-BCQHHfay.js +0 -423
  135. package/dist/StoreTransactions.vue_vue_type_script_setup_true_lang-CfTF2l-D.js +0 -1029
  136. package/dist/TargetLocationInput.vue_vue_type_script_setup_true_lang-rvhoxo0w.js +0 -139
  137. package/dist/Voucher-CYvjCb-v.js +0 -384
  138. package/dist/VoucherEditor.vue_vue_type_script_setup_true_lang-63Jr71dJ.js +0 -419
  139. package/dist/_commonjsHelpers-BkfeUUK-.js +0 -28
  140. package/dist/app-BJLHk8ao.js +0 -33357
  141. package/dist/app-BzIk1ojT.js +0 -7086
  142. package/dist/campaign-BHNS5kXt.js +0 -96
  143. package/dist/campaign.enum-CJDWE_Om.js +0 -20
  144. package/dist/campaign.fn-C0HQE9uh.js +0 -758
  145. package/dist/dto-Byq51uVH.js +0 -214
  146. package/dist/effect-Do3yTM-_.js +0 -78
  147. package/dist/index-B1V9UnI9.js +0 -76
  148. package/dist/index-BM9CWjC6.js +0 -38
  149. package/dist/index-CsaQJMAR.js +0 -66
  150. package/dist/index-D6VxioBg.js +0 -30038
  151. package/dist/index-DGKlRWn3.js +0 -32260
  152. package/dist/index-DLKyOu7W.js +0 -8861
  153. package/dist/index-DyYF6HYL.js +0 -121
  154. package/dist/index-UXtH44XQ.js +0 -3120
  155. package/dist/objectid-DKbha9-x.js +0 -145
  156. package/dist/plugins-DtakupKW.js +0 -208
  157. package/dist/remy-vue-client-Cpppk9h-.js +0 -1693
  158. package/dist/rule-builder-B_hCyq3x.js +0 -89
  159. package/dist/template-WI4a-lFY.js +0 -190
  160. package/dist/trigger-DieDHht3.js +0 -144
  161. package/dist/usePagination-BeF5K3M7.js +0 -223
  162. package/dist/vue-i18n-DKh0SMhL.js +0 -2365
@@ -0,0 +1,262 @@
1
+ import { defineComponent as H, ref as I, computed as q, h as x, onMounted as z, resolveComponent as m, openBlock as d, createElementBlock as v, Fragment as k, createVNode as s, unref as o, withCtx as h, createElementVNode as n, toDisplayString as u, renderList as G, createBlock as F, resolveDynamicComponent as J } from "vue";
2
+ import { _ as Q } from "./campaign-CpzFl8Vr.js";
3
+ import { useDialog as W, components as V } from "@feedmepos/ui-library";
4
+ import { p as X } from "./plugins-CxBcRdUi.js";
5
+ import { u as Y } from "./loading-DiD8J1Jc.js";
6
+ import { u as Z } from "./business-TBSvPv65.js";
7
+ import { u as ee, c as f } from "./campaign-CL95CZkI.js";
8
+ import { a as te, b as $, c as N } from "./campaign-DxcuYXB7.js";
9
+ import { c as oe, p as ae } from "./duplicateCampaign-DBaFROXd.js";
10
+ import { _ as ne } from "./FilterChip.vue_vue_type_script_setup_true_lang-DaU-9GzO.js";
11
+ import { _ as ie } from "./EditCampaignSheet.vue_vue_type_script_setup_true_lang-YR62BvBG.js";
12
+ import { u as se } from "./template-Ba8NxY41.js";
13
+ import { u as re } from "./vue-i18n-B4dOYJz4.js";
14
+ const le = { class: "flex items-center" }, ce = { class: "fm-typo-en-title-md-600 fm-step-title line-clamp-2 mr-8" }, me = { class: "px-24 flex flex-col gap-y-16" }, pe = { class: "flex items-center justify-between w-full" }, de = { class: "flex gap-8 overflow-x-auto" }, ue = { class: "space-y-8" }, fe = { class: "flex w-full gap-4 items-center" }, ge = { class: "space-y-4" }, ye = { class: "fm-typo-en-body-lg-600" }, _e = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, he = { class: "flex items-center gap-8" }, Ce = { class: "flex flex-col gap-16 text-center" }, we = { class: "fm-typo-en-title-sm-800" }, be = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, Oe = /* @__PURE__ */ H({
15
+ __name: "Point",
16
+ setup(xe) {
17
+ const { t: i } = re(), D = {
18
+ label: i("connect.program.common.actions.create", {
19
+ type: i("connect.program.point.title").toLowerCase()
20
+ }),
21
+ value: "create",
22
+ isPrimary: !0,
23
+ prependIcon: "add"
24
+ }, K = se("COIN", W()), C = Z(), p = ee(), { global: O, minor: S } = Y, l = I({
25
+ searchKey: "",
26
+ location: []
27
+ });
28
+ function A(e) {
29
+ const t = l.value.location;
30
+ return !t || t.length === 0 || !e.targetLocation ? !0 : Array.isArray(t) ? t.some((c) => {
31
+ var r;
32
+ return (r = e == null ? void 0 : e.targetLocation) == null ? void 0 : r.includes(c);
33
+ }) : e.targetLocation.includes(t);
34
+ }
35
+ const g = q(
36
+ () => p.campaigns.point.filter((e) => A(e))
37
+ ), R = [
38
+ {
39
+ header: i("connect.program.common.table.title"),
40
+ accessorFn: (e) => e.name
41
+ },
42
+ {
43
+ header: i("connect.program.common.table.status"),
44
+ accessorFn: (e) => te(e),
45
+ cell(e) {
46
+ return $(e.row.original);
47
+ }
48
+ },
49
+ {
50
+ header: i("connect.program.common.table.summary"),
51
+ accessorFn: (e) => N(e)
52
+ },
53
+ {
54
+ header: i("connect.program.common.table.actions"),
55
+ cell(e) {
56
+ return x("div", { class: "flex items-center gap-8 justify-end" }, [
57
+ x(V.FmButton, {
58
+ variant: "tertiary",
59
+ icon: "content_copy",
60
+ iconColor: "neutral-gray-400",
61
+ onClick: async (t) => {
62
+ t.stopPropagation(), await P(e.row.original);
63
+ }
64
+ }),
65
+ x(V.FmButton, {
66
+ variant: "tertiary",
67
+ icon: "delete",
68
+ iconColor: "neutral-gray-400",
69
+ onClick: (t) => {
70
+ t.stopPropagation(), L(e.row.original);
71
+ }
72
+ })
73
+ ]);
74
+ }
75
+ }
76
+ ], w = I();
77
+ async function L(e) {
78
+ await X.remove(`Are you sure you want to remove ${e.name}?`) && await S(
79
+ async () => {
80
+ await f.delete(e._id), await p.read("COIN");
81
+ },
82
+ {
83
+ message: `Removing ${e.name}`,
84
+ successMessage: `Removed ${e.name} successfully`
85
+ }
86
+ );
87
+ }
88
+ async function y(e) {
89
+ e ? await t() : K.open(async (c) => {
90
+ await t(c);
91
+ });
92
+ async function t(c) {
93
+ var r;
94
+ (r = w.value) == null || r.showSheet(
95
+ !0,
96
+ "COIN",
97
+ e ? await f.readById(e._id) : void 0,
98
+ c
99
+ );
100
+ }
101
+ }
102
+ async function P(e) {
103
+ var r;
104
+ if (!await oe(e.name))
105
+ return;
106
+ const t = await f.readById(e._id), c = ae(t, {
107
+ keepCollectible: !0
108
+ });
109
+ (r = w.value) == null || r.showSheet(
110
+ !0,
111
+ "COIN",
112
+ c,
113
+ t.template
114
+ );
115
+ }
116
+ async function U(e) {
117
+ await S(
118
+ async () => {
119
+ e.campaign._id ? await f.update(e.campaign._id, e) : await f.create(e), await p.read("COIN");
120
+ },
121
+ {
122
+ message: `${e.campaign._id ? "Updating" : "Creating"} point program`,
123
+ successMessage: `Point program ${e.campaign._id ? "updated" : "created"} successfully`
124
+ }
125
+ );
126
+ }
127
+ return z(async () => {
128
+ await O(async () => {
129
+ await p.read("COIN");
130
+ });
131
+ }), (e, t) => {
132
+ const c = m("FmPill"), r = m("FmPageHead"), B = m("FmSearch"), j = m("FmTable"), b = m("FmButton"), T = m("FmListItem"), E = m("FmList"), M = m("FmCard");
133
+ return d(), v(k, null, [
134
+ s(r, {
135
+ title: o(i)("connect.program.point.title"),
136
+ actions: o(g).length > 0 && o(C).isPremium ? [D] : [],
137
+ "onClick:action": t[0] || (t[0] = () => y())
138
+ }, {
139
+ title: h(() => [
140
+ n("div", le, [
141
+ n("span", ce, u(o(i)("connect.program.point.title")), 1),
142
+ s(c, { variant: "premium" })
143
+ ])
144
+ ]),
145
+ _: 1
146
+ }, 8, ["title", "actions"]),
147
+ n("div", me, [
148
+ s(B, {
149
+ modelValue: o(l).searchKey,
150
+ "onUpdate:modelValue": t[1] || (t[1] = (a) => o(l).searchKey = a),
151
+ class: "hidden xs:!block sm:!block border-b-2 border-fm-color-neutral-gray-100",
152
+ placeholder: "search",
153
+ collapsible: ""
154
+ }, null, 8, ["modelValue"]),
155
+ o(p).campaigns.point && o(p).campaigns.point.length > 0 ? (d(), v(k, { key: 0 }, [
156
+ n("div", pe, [
157
+ n("div", de, [
158
+ s(ne, {
159
+ label: `${o(i)("connect.common.location")}: `,
160
+ "right-icon": "keyboard_arrow_down",
161
+ modelValue: o(l).location,
162
+ "onUpdate:modelValue": t[2] || (t[2] = (a) => o(l).location = a),
163
+ icon: "storefront",
164
+ "show-item-label": !0,
165
+ items: o(C).locationOptions
166
+ }, null, 8, ["label", "modelValue", "items"])
167
+ ]),
168
+ s(B, {
169
+ modelValue: o(l).searchKey,
170
+ "onUpdate:modelValue": t[3] || (t[3] = (a) => o(l).searchKey = a),
171
+ class: "xs:hidden sm:hidden",
172
+ placeholder: "search",
173
+ collapsible: ""
174
+ }, null, 8, ["modelValue"])
175
+ ]),
176
+ s(j, {
177
+ class: "xs:hidden sm:hidden",
178
+ "row-data": o(g),
179
+ "column-defs": R,
180
+ "search-value": o(l).searchKey,
181
+ "column-filter": [],
182
+ onRowClick: t[4] || (t[4] = (a) => y(a.original)),
183
+ "hide-footer": o(g).length < 10
184
+ }, null, 8, ["row-data", "search-value", "hide-footer"]),
185
+ s(E, { class: "hidden xs:!flex sm:!flex flex-col mx-[-24px]" }, {
186
+ default: h(() => [
187
+ (d(!0), v(k, null, G(o(g).filter(
188
+ (a) => a.name.toLowerCase().includes(o(l).searchKey.toLowerCase())
189
+ ), (a) => (d(), F(T, {
190
+ key: a._id.toString(),
191
+ onClick: (_) => y(a),
192
+ class: "py-12 px-16 flex items-center justify-between border-b border-fm-color-neutral-gray-100"
193
+ }, {
194
+ default: h(() => [
195
+ n("div", ue, [
196
+ n("div", fe, [
197
+ (d(), F(J(o($)(a))))
198
+ ]),
199
+ n("div", ge, [
200
+ n("div", ye, u(a.name), 1),
201
+ n("div", _e, u(o(N)(a)), 1)
202
+ ])
203
+ ]),
204
+ n("div", he, [
205
+ s(b, {
206
+ icon: "content_copy",
207
+ "icon-color": "neutral-gray-400",
208
+ variant: "tertiary",
209
+ onClick: async (_) => {
210
+ _.stopPropagation(), await P(a);
211
+ }
212
+ }, null, 8, ["onClick"]),
213
+ s(b, {
214
+ icon: "delete",
215
+ "icon-color": "neutral-gray-400",
216
+ variant: "tertiary",
217
+ onClick: (_) => (_.stopPropagation(), L(a))
218
+ }, null, 8, ["onClick"])
219
+ ])
220
+ ]),
221
+ _: 2
222
+ }, 1032, ["onClick"]))), 128))
223
+ ]),
224
+ _: 1
225
+ })
226
+ ], 64)) : (d(), F(M, {
227
+ key: 1,
228
+ variant: "outlined",
229
+ class: "w-full flex flex-col items-center justify-center gap-y-24 p-24"
230
+ }, {
231
+ default: h(() => [
232
+ t[6] || (t[6] = n("img", {
233
+ src: Q,
234
+ class: "aspect-square w-[150px]"
235
+ }, null, -1)),
236
+ n("div", Ce, [
237
+ n("div", we, u(o(i)("connect.program.point.empty_state.title")), 1),
238
+ n("div", be, u(o(i)("connect.program.point.empty_state.description")), 1)
239
+ ]),
240
+ s(b, {
241
+ variant: "primary",
242
+ label: "Create point program",
243
+ disabled: !o(C).isPremium,
244
+ icon: "add",
245
+ onClick: t[5] || (t[5] = (a) => y())
246
+ }, null, 8, ["disabled"])
247
+ ]),
248
+ _: 1
249
+ })),
250
+ s(ie, {
251
+ ref_key: "sheetRef",
252
+ ref: w,
253
+ "onSubmit:modelValue": U
254
+ }, null, 512)
255
+ ])
256
+ ], 64);
257
+ };
258
+ }
259
+ });
260
+ export {
261
+ Oe as default
262
+ };
@@ -0,0 +1,397 @@
1
+ import { defineComponent as Q, ref as w, resolveComponent as d, openBlock as f, createBlock as S, unref as a, isRef as te, withCtx as k, createElementVNode as i, createVNode as c, computed as ne, h as I, onMounted as ae, createElementBlock as L, Fragment as B, renderList as se, resolveDynamicComponent as ie, toDisplayString as h } from "vue";
2
+ import { _ as re } from "./campaign-CpzFl8Vr.js";
3
+ import { useDialog as le, components as N } from "@feedmepos/ui-library";
4
+ import { p as $ } from "./plugins-CxBcRdUi.js";
5
+ import { u as ce } from "./loading-DiD8J1Jc.js";
6
+ import { u as me } from "./business-TBSvPv65.js";
7
+ import { c as y, u as ue } from "./campaign-CL95CZkI.js";
8
+ import { u as de } from "./vue-i18n-B4dOYJz4.js";
9
+ import { g as j, a as pe, b as q } from "./campaign-DxcuYXB7.js";
10
+ import { c as fe, p as ye } from "./duplicateCampaign-DBaFROXd.js";
11
+ import { e as K } from "./effect-fonU-1xO.js";
12
+ import { c as U } from "./string-Gcy5IM_H.js";
13
+ import { _ as ge } from "./EditCampaignSheet.vue_vue_type_script_setup_true_lang-YR62BvBG.js";
14
+ import { u as he } from "./template-Ba8NxY41.js";
15
+ import { _ as E } from "./FilterChip.vue_vue_type_script_setup_true_lang-DaU-9GzO.js";
16
+ const _e = { class: "space-y-8" }, be = /* @__PURE__ */ Q({
17
+ __name: "QueueSheet",
18
+ emits: ["update:model-value"],
19
+ setup(H, { expose: n, emit: R }) {
20
+ const p = w(!1), _ = w([]);
21
+ async function P() {
22
+ p.value = !0;
23
+ const r = await y.getPromotionQueue();
24
+ console.log(r, "jobs"), _.value = r;
25
+ }
26
+ const v = [
27
+ {
28
+ header: "Started At",
29
+ accessorFn: (r) => r.createdAt,
30
+ enableSorting: !0
31
+ },
32
+ {
33
+ header: "Campaigns",
34
+ accessorFn: (r) => r.campaigns
35
+ // cell(props) {
36
+ // const r = props.row.original;
37
+ // return h('div', {
38
+ // innerHTML: r.campaigns.map((c: any) => c.name).join(', '),
39
+ // });
40
+ // },
41
+ }
42
+ ];
43
+ return n({
44
+ showSheet: P
45
+ }), (r, u) => {
46
+ const b = d("FmTable"), T = d("FmSideSheet");
47
+ return f(), S(T, {
48
+ "max-width": 550,
49
+ header: "Promotion Sync Queue",
50
+ modelValue: a(p),
51
+ "onUpdate:modelValue": [
52
+ u[1] || (u[1] = (s) => te(p) ? p.value = s : null),
53
+ u[2] || (u[2] = (s) => p.value = s)
54
+ ]
55
+ }, {
56
+ default: k(() => [
57
+ i("div", _e, [
58
+ u[3] || (u[3] = i("div", { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, " Promotion synchronizing to your restaurant(s) is queued here. Depending on the number of campaigns and restaurants, this process may take several minutes. No task displayed here means there are no pending promotions to sync. ", -1)),
59
+ c(b, {
60
+ modelValue: r.tableRef,
61
+ "onUpdate:modelValue": u[0] || (u[0] = (s) => r.tableRef = s),
62
+ "column-filter": r.jobFilters,
63
+ "column-defs": v,
64
+ "row-data": a(_),
65
+ "hide-footer": a(_).length <= 10
66
+ }, null, 8, ["modelValue", "column-filter", "row-data", "hide-footer"])
67
+ ])
68
+ ]),
69
+ _: 1
70
+ }, 8, ["modelValue"]);
71
+ };
72
+ }
73
+ }), we = { class: "px-24 flex flex-col gap-y-16" }, ve = { class: "flex items-center justify-between w-full" }, Ce = { class: "flex gap-8 overflow-x-auto" }, xe = { class: "space-y-8" }, Fe = { class: "flex w-full gap-4 items-center" }, Se = { class: "space-y-4" }, ke = { class: "fm-typo-en-body-lg-600" }, Pe = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, Te = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, Ve = { class: "flex items-center gap-8" }, Oe = { class: "flex flex-col gap-16 text-center" }, Ie = { class: "fm-typo-en-title-sm-800" }, Le = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, Ge = /* @__PURE__ */ Q({
74
+ __name: "Promotion",
75
+ setup(H) {
76
+ const { t: n } = de(), R = {
77
+ label: n("connect.promotion.createCampaign"),
78
+ value: "create",
79
+ isPrimary: !0,
80
+ prependIcon: "add"
81
+ }, p = {
82
+ label: "Force sync",
83
+ value: "sync",
84
+ isPrimary: !1,
85
+ prependIcon: "refresh"
86
+ }, _ = {
87
+ label: "Queue",
88
+ value: "queue",
89
+ isPrimary: !1,
90
+ prependIcon: "work_history"
91
+ }, P = he("PROMOTION", le()), v = me(), r = ue(), { global: u, minor: b } = ce, T = [
92
+ {
93
+ label: "Bill promotion",
94
+ value: "BILL"
95
+ },
96
+ {
97
+ label: "Item promotion",
98
+ value: "ITEM"
99
+ }
100
+ ], s = w({
101
+ searchKey: "",
102
+ location: [],
103
+ effectType: []
104
+ });
105
+ function z(e) {
106
+ const o = s.value.location;
107
+ return !o || o.length === 0 || !e.targetLocation ? !0 : Array.isArray(o) ? o.some((m) => {
108
+ var l;
109
+ return (l = e == null ? void 0 : e.targetLocation) == null ? void 0 : l.includes(m);
110
+ }) : e.targetLocation.includes(o);
111
+ }
112
+ function G(e) {
113
+ var l, x;
114
+ const o = s.value.effectType;
115
+ if (!o || o.length === 0) return !0;
116
+ const m = (x = (l = e.effect) == null ? void 0 : l.options) == null ? void 0 : x.target;
117
+ return o.includes(m);
118
+ }
119
+ const g = ne(
120
+ () => r.campaigns.promotion.filter(
121
+ (e) => z(e) && G(e)
122
+ )
123
+ ), J = [
124
+ {
125
+ header: n("connect.promotion.promotionTitle"),
126
+ accessorFn: (e) => e.name
127
+ },
128
+ {
129
+ header: n("connect.promotion.campaignDate"),
130
+ accessorFn: (e) => j(e)
131
+ },
132
+ {
133
+ header: n("connect.promotion.status"),
134
+ accessorFn: (e) => pe(e),
135
+ cell(e) {
136
+ return q(e.row.original);
137
+ }
138
+ },
139
+ {
140
+ header: n("connect.promotion.type"),
141
+ accessorFn: (e) => `${U.title(e.effect.options.target)} promotion`
142
+ },
143
+ {
144
+ header: n("connect.promotion.summary"),
145
+ accessorFn: (e) => K(e.effect)
146
+ },
147
+ {
148
+ header: n("connect.promotion.actions"),
149
+ cell(e) {
150
+ return I("div", { class: "flex items-center gap-8 justify-end" }, [
151
+ I(N.FmButton, {
152
+ variant: "tertiary",
153
+ icon: "content_copy",
154
+ iconColor: "neutral-gray-400",
155
+ onClick: async (o) => {
156
+ o.stopPropagation(), await M(e.row.original);
157
+ }
158
+ }),
159
+ I(N.FmButton, {
160
+ variant: "tertiary",
161
+ icon: "delete",
162
+ iconColor: "neutral-gray-400",
163
+ onClick: (o) => {
164
+ o.stopPropagation(), D(e.row.original);
165
+ }
166
+ })
167
+ ]);
168
+ }
169
+ }
170
+ ], V = w(), A = w();
171
+ async function D(e) {
172
+ await $.remove(
173
+ n("connect.promotion.confirmRemove", { name: e.name })
174
+ ) && await b(
175
+ async () => {
176
+ await y.delete(e._id), await r.read("PROMOTION");
177
+ },
178
+ {
179
+ message: n("connect.promotion.removing", { name: e.name }),
180
+ successMessage: n("connect.promotion.removedSuccessfully", {
181
+ name: e.name
182
+ })
183
+ }
184
+ );
185
+ }
186
+ async function C(e) {
187
+ e ? await o() : P.open(async (m) => {
188
+ await o(m);
189
+ });
190
+ async function o(m) {
191
+ var l;
192
+ (l = V.value) == null || l.showSheet(
193
+ !0,
194
+ "PROMOTION",
195
+ e ? await y.readById(e._id) : void 0,
196
+ m
197
+ );
198
+ }
199
+ }
200
+ async function M(e) {
201
+ var l;
202
+ if (!await fe(e.name))
203
+ return;
204
+ const o = await y.readById(e._id), m = ye(o);
205
+ (l = V.value) == null || l.showSheet(
206
+ !0,
207
+ "PROMOTION",
208
+ m,
209
+ o.template
210
+ );
211
+ }
212
+ async function W(e) {
213
+ await b(
214
+ async () => {
215
+ e.campaign._id ? await y.update(e.campaign._id, e) : await y.create(e), await r.read("PROMOTION");
216
+ },
217
+ {
218
+ message: n(
219
+ e.campaign._id ? "connect.promotion.updating" : "connect.promotion.creating"
220
+ ),
221
+ successMessage: n(
222
+ e.campaign._id ? "connect.promotion.updatedSuccessfully" : "connect.promotion.createdSuccessfully"
223
+ )
224
+ }
225
+ );
226
+ }
227
+ async function X(e) {
228
+ var o;
229
+ switch (e) {
230
+ case "create":
231
+ C();
232
+ break;
233
+ case "sync":
234
+ await $.confirm(
235
+ "Are you sure you want to synchronize all promotions to POS?",
236
+ "Force sync"
237
+ ) && b(
238
+ async () => {
239
+ await y.syncAllPromotion();
240
+ },
241
+ {
242
+ message: "Syncing promotions...",
243
+ successMessage: "All promotions synced"
244
+ }
245
+ );
246
+ break;
247
+ case "queue":
248
+ (o = A.value) == null || o.showSheet();
249
+ break;
250
+ }
251
+ }
252
+ return ae(async () => {
253
+ await u(async () => {
254
+ await v.readLocations(), await r.read("PROMOTION");
255
+ });
256
+ }), (e, o) => {
257
+ const m = d("FmPageHead"), l = d("FmSearch"), x = d("FmTable"), Y = d("FmChip"), O = d("FmButton"), Z = d("FmListItem"), ee = d("FmList"), oe = d("FmCard");
258
+ return f(), L(B, null, [
259
+ c(m, {
260
+ title: a(n)("connect.promotion.title"),
261
+ actions: a(g).length > 0 ? [R, p, _] : [],
262
+ "onClick:action": X
263
+ }, null, 8, ["title", "actions"]),
264
+ i("div", we, [
265
+ c(l, {
266
+ modelValue: s.value.searchKey,
267
+ "onUpdate:modelValue": o[0] || (o[0] = (t) => s.value.searchKey = t),
268
+ class: "hidden xs:!block sm:!block border-b-2 border-fm-color-neutral-gray-100",
269
+ placeholder: a(n)("connect.promotion.search"),
270
+ collapsible: ""
271
+ }, null, 8, ["modelValue", "placeholder"]),
272
+ a(g) && a(g).length > 0 ? (f(), L(B, { key: 0 }, [
273
+ i("div", ve, [
274
+ i("div", Ce, [
275
+ c(E, {
276
+ label: `${a(n)("connect.common.location")}: `,
277
+ "right-icon": "keyboard_arrow_down",
278
+ modelValue: s.value.location,
279
+ "onUpdate:modelValue": o[1] || (o[1] = (t) => s.value.location = t),
280
+ icon: "storefront",
281
+ "show-item-label": !0,
282
+ items: a(v).locationOptions
283
+ }, null, 8, ["label", "modelValue", "items"]),
284
+ c(E, {
285
+ label: "Type:",
286
+ "right-icon": "keyboard_arrow_down",
287
+ modelValue: s.value.effectType,
288
+ "onUpdate:modelValue": o[2] || (o[2] = (t) => s.value.effectType = t),
289
+ icon: "filter_list",
290
+ "show-item-label": !0,
291
+ items: T
292
+ }, null, 8, ["modelValue"])
293
+ ]),
294
+ c(l, {
295
+ modelValue: s.value.searchKey,
296
+ "onUpdate:modelValue": o[3] || (o[3] = (t) => s.value.searchKey = t),
297
+ class: "xs:hidden sm:hidden",
298
+ placeholder: "search",
299
+ collapsible: ""
300
+ }, null, 8, ["modelValue"])
301
+ ]),
302
+ c(x, {
303
+ class: "xs:hidden sm:hidden",
304
+ "row-data": a(g),
305
+ "column-defs": J,
306
+ "search-value": s.value.searchKey,
307
+ "column-filter": [],
308
+ onRowClick: o[4] || (o[4] = (t) => C(t.original)),
309
+ "hide-footer": a(g).length < 10
310
+ }, null, 8, ["row-data", "search-value", "hide-footer"]),
311
+ c(ee, { class: "hidden xs:!flex sm:!flex flex-col mx-[-24px]" }, {
312
+ default: k(() => [
313
+ (f(!0), L(B, null, se(a(g).filter(
314
+ (t) => t.name.toLowerCase().includes(s.value.searchKey.toLowerCase())
315
+ ), (t) => (f(), S(Z, {
316
+ key: t._id.toString(),
317
+ onClick: (F) => C(t),
318
+ class: "py-12 px-16 flex items-center justify-between border-b border-fm-color-neutral-gray-100"
319
+ }, {
320
+ default: k(() => [
321
+ i("div", xe, [
322
+ i("div", Fe, [
323
+ (f(), S(ie(a(q)(t)))),
324
+ c(Y, {
325
+ class: "!text-fm-color-typo-info !bg-fm-color-system-info-100",
326
+ compact: !0,
327
+ label: `${a(U).title(t.effect.options.target)} promotion`
328
+ }, null, 8, ["label"])
329
+ ]),
330
+ i("div", Se, [
331
+ i("div", ke, h(t.name), 1),
332
+ i("div", Pe, h(a(K)(t.effect)), 1),
333
+ i("div", Te, h(a(n)("connect.promotion.campaignDate")) + ": " + h(a(j)(t)), 1)
334
+ ])
335
+ ]),
336
+ i("div", Ve, [
337
+ c(O, {
338
+ icon: "content_copy",
339
+ "icon-color": "neutral-gray-400",
340
+ variant: "tertiary",
341
+ onClick: async (F) => {
342
+ F.stopPropagation(), await M(t);
343
+ }
344
+ }, null, 8, ["onClick"]),
345
+ c(O, {
346
+ icon: "delete",
347
+ "icon-color": "neutral-gray-400",
348
+ variant: "tertiary",
349
+ onClick: (F) => (F.stopPropagation(), D(t))
350
+ }, null, 8, ["onClick"])
351
+ ])
352
+ ]),
353
+ _: 2
354
+ }, 1032, ["onClick"]))), 128))
355
+ ]),
356
+ _: 1
357
+ })
358
+ ], 64)) : (f(), S(oe, {
359
+ key: 1,
360
+ variant: "outlined",
361
+ class: "w-full flex flex-col items-center justify-center gap-y-24 p-24"
362
+ }, {
363
+ default: k(() => [
364
+ o[6] || (o[6] = i("img", {
365
+ src: re,
366
+ class: "aspect-square w-[150px]"
367
+ }, null, -1)),
368
+ i("div", Oe, [
369
+ i("div", Ie, h(a(n)("connect.promotion.createPromotionCampaign")), 1),
370
+ i("div", Le, h(a(n)("connect.promotion.description")), 1)
371
+ ]),
372
+ c(O, {
373
+ variant: "primary",
374
+ label: a(n)("connect.promotion.createPromotionCampaign"),
375
+ icon: "add",
376
+ onClick: o[5] || (o[5] = (t) => C())
377
+ }, null, 8, ["label"])
378
+ ]),
379
+ _: 1
380
+ }))
381
+ ]),
382
+ c(ge, {
383
+ ref_key: "sheetRef",
384
+ ref: V,
385
+ "onSubmit:modelValue": W
386
+ }, null, 512),
387
+ c(be, {
388
+ ref_key: "queueSheetRef",
389
+ ref: A
390
+ }, null, 512)
391
+ ], 64);
392
+ };
393
+ }
394
+ });
395
+ export {
396
+ Ge as default
397
+ };