@feedmepos/mf-connect 0.1.76-prod → 0.1.78-prod

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 (93) hide show
  1. package/dist/{Analytic-Bu23TSdC.js → Analytic-CL8baBRg.js} +11 -11
  2. package/dist/{App-CFovt5At.js → App-DWrlRXyT.js} +7 -7
  3. package/dist/{Bin-BTZ0CGHi.js → Bin-B20xJPE8.js} +8 -8
  4. package/dist/{Broadcast-PLGxwGqd.js → Broadcast-CsWx4Tjg.js} +8 -8
  5. package/dist/{CampaignTypeDialog.vue_vue_type_script_setup_true_lang-BP6EusQ_.js → CampaignTypeDialog.vue_vue_type_script_setup_true_lang-DOVdZArj.js} +6 -6
  6. package/dist/{Card-cHrKRkwH.js → Card-CmzFUSjw.js} +18 -18
  7. package/dist/{Collections-BdJKSLLq.js → Collections-CpSPvULL.js} +45 -44
  8. package/dist/{Credit-D1r1Sdes.js → Credit-De2OB_mb.js} +8 -8
  9. package/dist/{EditCampaignSheet.vue_vue_type_script_setup_true_lang-BB_rrikT.js → EditCampaignSheet.vue_vue_type_script_setup_true_lang-DfTSheaL.js} +32 -32
  10. package/dist/{EffectSheet.vue_vue_type_style_index_0_lang-BXYIPABz.js → EffectSheet.vue_vue_type_style_index_0_lang-DB_5jfpv.js} +7 -7
  11. package/dist/{Experience-B8VHgHBW.js → Experience-CM8zEcnf.js} +8 -8
  12. package/dist/{Game-DUuF8FZi.js → Game-BFnuEizX.js} +9 -9
  13. package/dist/{ImageInput.vue_vue_type_script_setup_true_lang-BC0iTIpa.js → ImageInput.vue_vue_type_script_setup_true_lang-dsv7e6yU.js} +1 -1
  14. package/dist/{Index-D-kF-r95.js → Index-Bwq85y08.js} +10 -10
  15. package/dist/{Marketing-MM2XT5Ks.js → Marketing-D5TlEj1P.js} +6 -6
  16. package/dist/{Member-JePEKywx.js → Member-cbimfDJJ.js} +10 -10
  17. package/dist/{MemberList-Doz8RzJr.js → MemberList-Avzr02qO.js} +25 -25
  18. package/dist/{MemberTransactions-D3r1Shfr.js → MemberTransactions-DqHNVh2M.js} +1 -1
  19. package/dist/{MessageInput.vue_vue_type_script_setup_true_lang-Blvhn8Ve.js → MessageInput.vue_vue_type_script_setup_true_lang-DqfdpUU1.js} +8 -8
  20. package/dist/{Mission-Adf3hE_Q.js → Mission-BxDEA9_O.js} +9 -9
  21. package/dist/{Overview-D9C_ngcE.js → Overview-CDwxgoq4.js} +19 -19
  22. package/dist/{Point-C7YytfWh.js → Point-BGp2yObl.js} +8 -8
  23. package/dist/{Promotion-DLKzm-Zt.js → Promotion-BtLwPnQY.js} +9 -9
  24. package/dist/{Queue-BzJkaeos.js → Queue-B5yc52Fi.js} +10 -10
  25. package/dist/{Record-E366_Z-I.js → Record-BTJZQMcE.js} +8 -8
  26. package/dist/{Reward-DRqDZR_W.js → Reward-DE1IdQQP.js} +16 -16
  27. package/dist/{RewardGroup.vue_vue_type_script_setup_true_lang-mk13fdhG.js → RewardGroup.vue_vue_type_script_setup_true_lang-B5nesYsF.js} +12 -12
  28. package/dist/{RuleGroup.vue_vue_type_script_setup_true_lang-CT4L602f.js → RuleGroup.vue_vue_type_script_setup_true_lang-8YjhVXHc.js} +15 -15
  29. package/dist/{Segment-CMBQY0Ew.js → Segment-DTL-cydj.js} +23 -23
  30. package/dist/{SelectItems.vue_vue_type_script_setup_true_lang-BJwqnJ5q.js → SelectItems.vue_vue_type_script_setup_true_lang-BhdZvJ23.js} +2 -2
  31. package/dist/{SendCollectionSheet.vue_vue_type_script_setup_true_lang-ysfMGi60.js → SendCollectionSheet.vue_vue_type_script_setup_true_lang-BVD0BK7h.js} +12 -12
  32. package/dist/{SendVoucherSheet.vue_vue_type_script_setup_true_lang-DJmqtpet.js → SendVoucherSheet.vue_vue_type_script_setup_true_lang-CFtgb1Xx.js} +3 -3
  33. package/dist/{Setting-Difs2QM2.js → Setting-DCSefbch.js} +14 -14
  34. package/dist/{SettingAdvertisements-nCOD94KT.js → SettingAdvertisements-B68GHFPu.js} +12 -12
  35. package/dist/{Store-Corm7ovM.js → Store-C5HUNrCL.js} +650 -638
  36. package/dist/StoreRewards-DQ3MPr5_.js +535 -0
  37. package/dist/{StoreTransactions.vue_vue_type_script_setup_true_lang-DvZnfko7.js → StoreTransactions.vue_vue_type_script_setup_true_lang-fziZvSAu.js} +19 -19
  38. package/dist/{TargetLocationInput.vue_vue_type_script_setup_true_lang-Ciy_Y3pw.js → TargetLocationInput.vue_vue_type_script_setup_true_lang-IGFIBJK-.js} +1 -1
  39. package/dist/{Tier-CdG8b5i7.js → Tier-B2wfH7ov.js} +21 -21
  40. package/dist/{Title-HDBW1XJy.js → Title-DA02V_tW.js} +20 -20
  41. package/dist/{Transaction-BTdCgUTW.js → Transaction-Bcjy-XpL.js} +2 -2
  42. package/dist/{UserRuleGroup.vue_vue_type_script_setup_true_lang-BKAixX5Q.js → UserRuleGroup.vue_vue_type_script_setup_true_lang-B01EVKWa.js} +6 -6
  43. package/dist/{Voucher-DXxlsMqy.js → Voucher-CMvRFukk.js} +12 -12
  44. package/dist/{VoucherEditor.vue_vue_type_script_setup_true_lang-IggVStfo.js → VoucherEditor.vue_vue_type_script_setup_true_lang-hDw2GonS.js} +12 -12
  45. package/dist/{ZodTextField.vue_vue_type_script_setup_true_lang-DvZJ4o-A.js → ZodTextField.vue_vue_type_script_setup_true_lang-C0SNLaTT.js} +2 -2
  46. package/dist/{app-BV-w2LiQ.js → app-BnwvaUjf.js} +34 -32
  47. package/dist/{app-XylQ73N9.js → app-Clc_fxr7.js} +1 -1
  48. package/dist/app.js +1 -1
  49. package/dist/{business-CmK1Bgrl.js → business-DTs1RVwW.js} +1 -1
  50. package/dist/{campaign-BbeHkY_g.js → campaign-C-YI6eUZ.js} +1 -1
  51. package/dist/{campaign-B0Iu64XS.js → campaign-hjsuW70h.js} +8 -8
  52. package/dist/{campaign.enum-BTyjcgl5.js → campaign.enum-Y8uH9B1N.js} +1 -1
  53. package/dist/{campaign.fn-BRylLZN8.js → campaign.fn-CjOxPWB4.js} +32 -32
  54. package/dist/{collectible.enum-BaMwAovj.js → collectible.enum-FI842Eg_.js} +1 -1
  55. package/dist/{collection.fn-DMKcRR3s.js → collection.fn-tkZ2Jz5q.js} +2 -2
  56. package/dist/{dto-DWD2z5aU.js → dto-jHPSXkpQ.js} +4 -4
  57. package/dist/{effect-BXFkVwFt.js → effect--khp0-Dk.js} +1 -1
  58. package/dist/{email-addresses-CM4YhQKU.js → email-addresses-kh0JimeA.js} +1 -1
  59. package/dist/{export-CIH5GPPA.js → export-BpAjk801.js} +3 -3
  60. package/dist/{helper-Dfi5KBsu.js → helper-DrhEQHwq.js} +22 -7
  61. package/dist/{index-CmCHMjjj.js → index-BL3Mdvlf.js} +1 -1
  62. package/dist/{index-B-EJxIcf.js → index-BZrppr8k.js} +1561 -1561
  63. package/dist/{index-Bv3V6gFA.js → index-BmYRSyFJ.js} +6 -6
  64. package/dist/{index-BijInYgP.js → index-BzMFc1TL.js} +1 -1
  65. package/dist/{index-Cb-dmYUO.js → index-CEkk23PR.js} +1 -1
  66. package/dist/{index-CuYPD6KT.js → index-CjfLezA2.js} +1 -1
  67. package/dist/{index-CGurwPv7.js → index-D8UahMhD.js} +1 -1
  68. package/dist/{index-tBQVmdqJ.js → index-DUYZ2HiI.js} +1384 -1381
  69. package/dist/{index-DllrUMlF.js → index-Dd3r1_0V.js} +3 -3
  70. package/dist/{index-BMuFXYr-.js → index-DlasG3H0.js} +1 -1
  71. package/dist/{index-DgpNkwMC.js → index-DnyXvYsb.js} +1160 -1138
  72. package/dist/{index-DK5SOeWG.js → index-DuHxOBvZ.js} +3 -3
  73. package/dist/{index-D3EuM03E.js → index-FsB799qA.js} +1 -1
  74. package/dist/{index.esm2017-DaQYdqzn.js → index.esm2017-DmPf2cMZ.js} +1 -1
  75. package/dist/{loading-CqksxFrY.js → loading-Cce2O21E.js} +1 -1
  76. package/dist/{membership-DldR-rE4.js → membership-DWmspoXh.js} +3 -3
  77. package/dist/{money-DF9CHClT.js → money-Car_1Uu5.js} +1 -1
  78. package/dist/{number-BAUERN5R.js → number-BKqKRPst.js} +1 -1
  79. package/dist/objectid-BJMlT5vf.js +145 -0
  80. package/dist/{plugins-D_xP2_oh.js → plugins-DgQI-VM9.js} +3 -3
  81. package/dist/{reward-C_GBKqJ2.js → reward-CyDdQ3f1.js} +1 -1
  82. package/dist/{rule-DSqtOvSH.js → rule-AVx2VM_m.js} +3 -3
  83. package/dist/{rule-builder-BkLQ-LDJ.js → rule-builder-7H09UHwS.js} +1 -1
  84. package/dist/{template-CSnoZfH8.js → template-F0LbthP3.js} +5 -5
  85. package/dist/{timezone-BEtLA-7y.js → timezone-COLE0Gi_.js} +1 -1
  86. package/dist/{trigger-CHDwsOgx.js → trigger-CTSMJ35x.js} +5 -5
  87. package/dist/{user-BqlOvZQu.js → user-BQBOVBfW.js} +1 -1
  88. package/dist/{vue-i18n-1NETuk_J.js → vue-i18n-CN5hOv3f.js} +217 -217
  89. package/dist/{xlsx-CMa9ngC1.js → xlsx-RGAf1V3W.js} +1 -1
  90. package/dist/{zod-DuLxE9Yg.js → zod-DsTnqHJG.js} +1 -1
  91. package/package.json +1 -1
  92. package/dist/StoreRewards-Dd9giWnX.js +0 -423
  93. package/dist/objectid-D8KxKrZP.js +0 -145
@@ -0,0 +1,535 @@
1
+ import { defineComponent as W, ref as V, computed as G, onMounted as Y, resolveComponent as b, openBlock as w, createBlock as C, unref as e, isRef as Q, withCtx as F, createElementVNode as s, createVNode as u, createElementBlock as P, createTextVNode as X, resolveDynamicComponent as M, toDisplayString as B, Fragment as q, createCommentVNode as $, h as v } from "vue";
2
+ import { _ as ee } from "./campaign-CpzFl8Vr.js";
3
+ import { useDialog as z, components as O } from "@feedmepos/ui-library";
4
+ import "./index-D8UahMhD.js";
5
+ import { u as te } from "./loading-Cce2O21E.js";
6
+ import { C as J, u as oe } from "./membership-DWmspoXh.js";
7
+ import { p as I, f as N } from "./plugins-DgQI-VM9.js";
8
+ import { u as ae } from "./vue-i18n-CN5hOv3f.js";
9
+ import { F as ne } from "./index-DUYZ2HiI.js";
10
+ import { c as se } from "./object-qECH92oz.js";
11
+ import { u as Z } from "./app-wDQR6dpb.js";
12
+ import { u as re } from "./business-DTs1RVwW.js";
13
+ import { useCoreStore as ie } from "@feedmepos/mf-common";
14
+ import { Z as x } from "./zod-DsTnqHJG.js";
15
+ import { _ as le } from "./ZodTextField.vue_vue_type_script_setup_true_lang-C0SNLaTT.js";
16
+ import { _ as de } from "./ImageInput.vue_vue_type_script_setup_true_lang-dsv7e6yU.js";
17
+ import { _ as ce } from "./TargetLocationInput.vue_vue_type_script_setup_true_lang-IGFIBJK-.js";
18
+ import { _ as me, a as pe } from "./EffectSheet.vue_vue_type_style_index_0_lang-DB_5jfpv.js";
19
+ import { i as ue, F as fe, h as K, t as ye } from "./helper-DrhEQHwq.js";
20
+ import { useRouter as we } from "vue-router";
21
+ import { m as j } from "./index-CEkk23PR.js";
22
+ import { R as A } from "./app-BnwvaUjf.js";
23
+ const ge = {
24
+ key: 0,
25
+ class: "flex flex-col space-y-16 pr-12"
26
+ }, ve = { class: "fm-typo-en-title-sm-800 !mb-[-8px]" }, be = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary flex items-center justify-between" }, Re = { class: "flex items-center gap-8" }, _e = /* @__PURE__ */ W({
27
+ __name: "EditRewardSheet",
28
+ emits: ["update"],
29
+ setup(L, { expose: r, emit: E }) {
30
+ const S = E, y = re(), m = ie(), g = V(!1), a = V(), R = V(), T = V(!1), f = ne, p = G(
31
+ () => {
32
+ var l;
33
+ return J[((l = a.value) == null ? void 0 : l.type) || "VOUCHER"];
34
+ }
35
+ ), D = G(() => {
36
+ const l = f.safeParse(a.value);
37
+ return l.success ? [] : l.error.errors;
38
+ });
39
+ function H() {
40
+ const l = f.safeParse(a.value);
41
+ if (l.success) {
42
+ const n = { ...l.data };
43
+ T.value && (n.capabilities = fe), S("update", n);
44
+ }
45
+ }
46
+ function k(l, n, t = {
47
+ isStoreReward: !1,
48
+ type: "VOUCHER"
49
+ }) {
50
+ g.value = l, l && (R.value = void 0, T.value = t.isFeedvibe ?? !1, a.value = n || ue(t.type, {
51
+ business: m.currentBusiness.value._id,
52
+ noCampaign: t.isStoreReward == !0
53
+ }));
54
+ }
55
+ return Y(async () => {
56
+ await y.readLocations();
57
+ }), r({
58
+ showSheet: k,
59
+ data: a,
60
+ rewardImage: R
61
+ }), (l, n) => {
62
+ const t = b("FmTextarea"), o = b("FmHelperText"), c = b("FmButton"), _ = b("FmSideSheet");
63
+ return w(), C(_, {
64
+ "max-width": 560,
65
+ modelValue: e(g),
66
+ "onUpdate:modelValue": n[7] || (n[7] = (d) => Q(g) ? g.value = d : null),
67
+ header: "Store setting"
68
+ }, {
69
+ "side-sheet-footer": F(() => [
70
+ s("div", Re, [
71
+ u(c, {
72
+ label: "Submit",
73
+ onClick: H,
74
+ disabled: e(D).length > 0 || e(Z)().isLoading,
75
+ loading: e(Z)().isLoading
76
+ }, null, 8, ["disabled", "loading"]),
77
+ u(c, {
78
+ label: "Cancel",
79
+ onClick: n[6] || (n[6] = (d) => k(!1)),
80
+ variant: "tertiary"
81
+ })
82
+ ])
83
+ ]),
84
+ default: F(() => {
85
+ var d, h, U;
86
+ return [
87
+ e(a) ? (w(), P("div", ge, [
88
+ s("div", ve, [
89
+ n[8] || (n[8] = X(" Reward information ", -1)),
90
+ (w(), C(M(e(p).chip())))
91
+ ]),
92
+ u(le, {
93
+ modelValue: e(a).name,
94
+ "onUpdate:modelValue": n[0] || (n[0] = (i) => e(a).name = i),
95
+ label: `${e(p).name} name`,
96
+ schema: e(x).typeAtPath(e(f), "name", [e(a).type])
97
+ }, null, 8, ["modelValue", "label", "schema"]),
98
+ u(t, {
99
+ class: "!mb-[-16px]",
100
+ modelValue: e(a).description,
101
+ "onUpdate:modelValue": n[1] || (n[1] = (i) => e(a).description = i),
102
+ rules: [e(x).ruleAtPath(e(f), "description", [e(a).type])]
103
+ }, {
104
+ label: F(() => [
105
+ (w(), C(M(
106
+ e(x).toInputLabel(
107
+ e(x).typeAtPath(e(f), "description", [e(a).type]),
108
+ `${e(p).name} description`
109
+ )
110
+ )))
111
+ ]),
112
+ _: 1
113
+ }, 8, ["modelValue", "rules"]),
114
+ s("div", be, [
115
+ s("div", null, B(e(p).name) + " description should not exceed 200 characters. ", 1),
116
+ s("div", null, B(((d = e(a).description) == null ? void 0 : d.length) ?? 0) + "/200", 1)
117
+ ]),
118
+ u(de, {
119
+ class: "w-1/2 xs:w-2/3",
120
+ "aspect-ratio": "16/9",
121
+ file: e(R) ?? void 0,
122
+ thumbnail: e(a).image ?? void 0,
123
+ "onUpdate:file": n[2] || (n[2] = async (i) => {
124
+ R.value = i, i || (e(a).image = null);
125
+ })
126
+ }, {
127
+ label: F(() => [
128
+ (w(), C(M(
129
+ e(x).toInputLabel(
130
+ e(x).typeAtPath(e(f), "image", [e(a).type]),
131
+ `${e(p).name} image`
132
+ )
133
+ )))
134
+ ]),
135
+ _: 1
136
+ }, 8, ["file", "thumbnail"]),
137
+ e(a).type === "VOUCHER" ? (w(), P(q, { key: 0 }, [
138
+ n[9] || (n[9] = s("div", { class: "fm-typo-en-title-sm-800" }, "Discount", -1)),
139
+ u(me, {
140
+ "model-value": e(a).extras.effect,
141
+ "onUpdate:modelValue": n[3] || (n[3] = (i) => {
142
+ e(a).extras.effect = i;
143
+ })
144
+ }, null, 8, ["model-value"]),
145
+ e(a).extras.effect == null ? (w(), C(o, {
146
+ key: 0,
147
+ class: "!mt-8",
148
+ text: "Effect is required",
149
+ state: "error"
150
+ })) : $("", !0),
151
+ n[10] || (n[10] = s("div", { class: "fm-typo-en-title-sm-800 !mb-[-8px]" }, " Usage configuration ", -1)),
152
+ u(pe, {
153
+ "model-value": e(a).options,
154
+ "no-campaign": e(a).noCampaign,
155
+ "onUpdate:modelValue": n[4] || (n[4] = (i) => e(a).options = i),
156
+ schema: e(x).typeAtPath(e(f), "options", ["VOUCHER"])
157
+ }, null, 8, ["model-value", "no-campaign", "schema"])
158
+ ], 64)) : $("", !0),
159
+ n[11] || (n[11] = s("div", { class: "fm-typo-en-title-sm-800 !mb-[-8px]" }, "Availability", -1)),
160
+ e(a).type === "VOUCHER" ? (w(), C(ce, {
161
+ key: 1,
162
+ "model-value": ((U = (h = e(a).extras) == null ? void 0 : h.targetLocation) == null ? void 0 : U.map(String)) ?? null,
163
+ type: "select",
164
+ "onUpdate:modelValue": n[5] || (n[5] = (i) => {
165
+ e(a).extras.targetLocation = i;
166
+ }),
167
+ rules: [
168
+ e(x).ruleAtPath(e(f), "extras.targetLocation", ["VOUCHER"])
169
+ ]
170
+ }, null, 8, ["model-value", "rules"])) : $("", !0)
171
+ ])) : $("", !0)
172
+ ];
173
+ }),
174
+ _: 1
175
+ }, 8, ["modelValue"]);
176
+ };
177
+ }
178
+ }), xe = { class: "flex flex-nowrap gap-x-2 grow h-full" }, Ce = { class: "flex flex-col grow p-24" }, Fe = { class: "grow pb-16 pr-16 pt-6 w-full" }, he = { class: "gap-24 grid grid-cols-1 lg:grid-cols-2" }, Ee = /* @__PURE__ */ W({
179
+ __name: "RewardTypeDialog",
180
+ props: {
181
+ onOk: {
182
+ type: Function,
183
+ required: !0
184
+ }
185
+ },
186
+ setup(L) {
187
+ const r = z(), E = L;
188
+ function S(y) {
189
+ E.onOk(y), r.close();
190
+ }
191
+ return (y, m) => {
192
+ const g = b("FmCard");
193
+ return w(), C(g, { class: "max-w-6xl" }, {
194
+ default: F(() => [
195
+ s("div", xe, [
196
+ s("div", Ce, [
197
+ m[4] || (m[4] = s("div", { class: "space-y-4" }, [
198
+ s("div", { class: "fm-typo-en-title-sm-800" }, "Store rewards"),
199
+ s("div", { class: "text-fm-color-typo-secondary fm-typo-en-body-md-400" }, " Select a reward type to get started. ")
200
+ ], -1)),
201
+ s("div", Fe, [
202
+ s("div", he, [
203
+ u(g, {
204
+ variant: "outlined",
205
+ class: "box-border cursor-pointer h-full p-16 scroll-p-4 space-y-8",
206
+ onClick: m[0] || (m[0] = (a) => S("general"))
207
+ }, {
208
+ default: F(() => [...m[2] || (m[2] = [
209
+ s("div", { class: "fm-typo-en-title-sm-800" }, "General Reward", -1),
210
+ s("div", { class: "fm-typo-en-body-lg-400 text-fm-color-typo-secondary" }, " A standard voucher reward that can be freely edited and managed. ", -1)
211
+ ])]),
212
+ _: 1
213
+ }),
214
+ u(g, {
215
+ variant: "outlined",
216
+ class: "box-border cursor-pointer h-full p-16 scroll-p-4 space-y-8",
217
+ onClick: m[1] || (m[1] = (a) => S("feedvibe"))
218
+ }, {
219
+ default: F(() => [...m[3] || (m[3] = [
220
+ s("div", { class: "fm-typo-en-title-sm-800" }, "FeedVibe Reward", -1),
221
+ s("div", { class: "fm-typo-en-body-lg-400 text-fm-color-typo-secondary" }, " A locked reward for FeedVibe bundles. Cannot be edited or deleted after creation. ", -1)
222
+ ])]),
223
+ _: 1
224
+ })
225
+ ])
226
+ ])
227
+ ])
228
+ ])
229
+ ]),
230
+ _: 1
231
+ });
232
+ };
233
+ }
234
+ }), Se = { class: "px-24 flex flex-col gap-y-16" }, Ve = { class: "flex items-center justify-between w-full" }, Oe = { class: "flex flex-col gap-16 text-center" }, Te = { class: "fm-typo-en-title-sm-800" }, ke = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, et = /* @__PURE__ */ W({
235
+ __name: "StoreRewards",
236
+ setup(L) {
237
+ const { t: r } = ae(), E = z(), S = {
238
+ label: r("connect.storeRewards.create"),
239
+ value: "create",
240
+ isPrimary: !0,
241
+ prependIcon: "add"
242
+ }, y = oe(), { global: m, minor: g } = te, a = we(), R = V({
243
+ searchKey: "",
244
+ columnFilters: []
245
+ }), T = [
246
+ {
247
+ header: r("connect.storeRewards.table.name"),
248
+ accessorFn: (t) => t.name,
249
+ cell(t) {
250
+ const o = t.row.original, c = K(
251
+ o.capabilities,
252
+ "STORE_BUNDLE:FEEDVIBE",
253
+ "selectable",
254
+ !1
255
+ );
256
+ return v("div", { class: "flex items-center gap-8" }, [
257
+ v("span", {}, o.name),
258
+ ...c ? [
259
+ v(O.FmChip, {
260
+ label: "Feedvibe",
261
+ class: "text-fm-color-primary bg-fm-color-system-warning-100",
262
+ compact: !0
263
+ })
264
+ ] : []
265
+ ]);
266
+ }
267
+ },
268
+ {
269
+ id: "type",
270
+ header: r("connect.storeRewards.table.type"),
271
+ accessorFn: (t) => t.type,
272
+ cell(t) {
273
+ return J[t.row.original.type].chip();
274
+ }
275
+ },
276
+ {
277
+ header: r("connect.storeRewards.table.validity"),
278
+ accessorFn: (t) => ye(
279
+ "validityOption" in t.options ? t.options.validityOption || {} : {}
280
+ )
281
+ },
282
+ {
283
+ header: r("connect.storeRewards.table.used"),
284
+ meta: {
285
+ textAlign: "left"
286
+ },
287
+ accessorFn: (t) => t.currentReceive ?? 0
288
+ },
289
+ {
290
+ header: r("connect.storeRewards.table.actions"),
291
+ cell(t) {
292
+ return v("div", { class: "flex items-center justify-end gap-4" }, [
293
+ v(
294
+ O.FmMenu,
295
+ {
296
+ placement: "bottom-end",
297
+ onClick: (o) => {
298
+ o.stopPropagation();
299
+ }
300
+ },
301
+ {
302
+ "menu-button": () => v(O.FmButton, {
303
+ icon: "more_vert",
304
+ iconColor: "neutral-gray-400",
305
+ variant: "tertiary"
306
+ }),
307
+ default: () => [
308
+ v(O.FmMenuItem, {
309
+ label: "View collections",
310
+ onClick: async (o) => {
311
+ o.stopPropagation(), D(t.row.original._id);
312
+ }
313
+ }),
314
+ ...K(
315
+ t.row.original.capabilities,
316
+ "STORE_BUNDLE:FEEDVIBE",
317
+ "deletable"
318
+ ) ? [
319
+ v(
320
+ O.FmMenuItem,
321
+ {
322
+ onClick: async (o) => {
323
+ o.stopPropagation(), H(t.row.original);
324
+ }
325
+ },
326
+ {
327
+ label: v(
328
+ "div",
329
+ {
330
+ class: "text-fm-color-typo-error fm-typo-en-body-md-400"
331
+ },
332
+ "Remove"
333
+ )
334
+ }
335
+ )
336
+ ] : []
337
+ ]
338
+ }
339
+ )
340
+ ]);
341
+ }
342
+ }
343
+ ], f = G(
344
+ () => y.bundleRewards.filter((t) => t.type == "VOUCHER")
345
+ ), p = V();
346
+ function D(t) {
347
+ a.push({
348
+ name: A["$connect-STORE_REWARD_COLLECTIONS"],
349
+ params: { id: t }
350
+ });
351
+ }
352
+ async function H(t) {
353
+ if (t.type === "TITLE") {
354
+ await I.confirm(
355
+ r("connect.storeRewards.remove.message"),
356
+ r("connect.storeRewards.remove.title"),
357
+ r("connect.storeRewards.remove.action")
358
+ ) && await a.push({ name: A["$connect-PROGRAM_TITLE"] });
359
+ return;
360
+ }
361
+ await I.remove(
362
+ r("connect.storeRewards.delete.confirm"),
363
+ r("connect.storeRewards.delete.title")
364
+ ) && await g(
365
+ async () => {
366
+ await j.deleteReward(t._id), await y.readMembership(), await y.readRewards();
367
+ },
368
+ {
369
+ message: r("connect.storeRewards.delete.message"),
370
+ successMessage: r("connect.storeRewards.delete.success")
371
+ }
372
+ );
373
+ }
374
+ function k() {
375
+ return new Promise((t) => {
376
+ E.open({
377
+ title: "Create reward",
378
+ dialogComponent: v(Ee, {
379
+ onOk: (o) => {
380
+ t(o);
381
+ }
382
+ })
383
+ }).onClose(() => {
384
+ t(null);
385
+ });
386
+ });
387
+ }
388
+ async function l(t) {
389
+ var c, _;
390
+ const o = t ? se(y.bundleRewards.find((d) => d._id === t)) : void 0;
391
+ if (o && !K(
392
+ o.capabilities,
393
+ "STORE_BUNDLE:FEEDVIBE",
394
+ "editable"
395
+ )) {
396
+ await I.confirm(
397
+ "This reward is managed by FeedVibe and cannot be edited.",
398
+ "Cannot edit reward",
399
+ "OK"
400
+ );
401
+ return;
402
+ }
403
+ if ((o == null ? void 0 : o.type) === "TITLE") {
404
+ await I.confirm(
405
+ "You cannot edit a title here, please edit it at the Program > Title section.",
406
+ "Update reward",
407
+ "Go to title section"
408
+ ) && await a.push({ name: A["$connect-PROGRAM_TITLE"] });
409
+ return;
410
+ }
411
+ if (!o) {
412
+ const d = await k();
413
+ if (!d) return;
414
+ (c = p.value) == null || c.showSheet(!0, void 0, {
415
+ isStoreReward: !0,
416
+ type: "VOUCHER",
417
+ isFeedvibe: d === "feedvibe"
418
+ });
419
+ return;
420
+ }
421
+ (_ = p.value) == null || _.showSheet(!0, o, {
422
+ isStoreReward: !0,
423
+ type: "VOUCHER"
424
+ });
425
+ }
426
+ async function n(t) {
427
+ let o = !1;
428
+ t._id && t.type === "VOUCHER" && await new Promise((c) => {
429
+ E.open({
430
+ title: "Confirmation",
431
+ message: r("connect.campaign.voucher.updateConfirm.message"),
432
+ primaryActions: {
433
+ text: r("connect.campaign.voucher.updateConfirm.updateAll"),
434
+ close: !0
435
+ },
436
+ secondaryActions: {
437
+ text: r("connect.campaign.voucher.updateConfirm.updateFuture"),
438
+ close: !0
439
+ }
440
+ }).onPrimary(async () => {
441
+ o = !0, c();
442
+ }).onSecondary(async () => {
443
+ c();
444
+ });
445
+ }), await g(
446
+ async () => {
447
+ var c, _, d, h;
448
+ (c = p.value) != null && c.rewardImage && t.image ? await N.delete(t.image) : (_ = p.value) != null && _.rewardImage && (t.image = await N.update(
449
+ t.image || N.collectibleImagePath(
450
+ void 0,
451
+ p.value.rewardImage
452
+ ),
453
+ (d = p.value) == null ? void 0 : d.rewardImage
454
+ )), t._id ? await j.updateReward(t._id, {
455
+ ...t,
456
+ updateCollection: o
457
+ }) : await j.createReward(t), await y.readRewards(), (h = p.value) == null || h.showSheet(!1);
458
+ },
459
+ {
460
+ message: "Updating reward",
461
+ successMessage: "Reward updated successfully"
462
+ }
463
+ );
464
+ }
465
+ return Y(async () => {
466
+ await m(async () => {
467
+ await y.readMembership(), await y.readRewards();
468
+ });
469
+ }), (t, o) => {
470
+ const c = b("FmPageHead"), _ = b("FmSearch"), d = b("FmTable"), h = b("FmButton"), U = b("FmCard");
471
+ return w(), P(q, null, [
472
+ u(c, {
473
+ title: e(r)("connect.storeRewards.title"),
474
+ description: e(r)("connect.storeRewards.description"),
475
+ actions: [S],
476
+ "back-button": !0,
477
+ "onClick:action": o[0] || (o[0] = () => l()),
478
+ "onClick:back": o[1] || (o[1] = () => e(a).push({ name: e(A)["$connect-STORE"] }))
479
+ }, null, 8, ["title", "description", "actions"]),
480
+ s("div", Se, [
481
+ e(f) && e(f).length > 0 ? (w(), P(q, { key: 0 }, [
482
+ s("div", Ve, [
483
+ o[6] || (o[6] = s("div", { class: "flex gap-8" }, null, -1)),
484
+ u(_, {
485
+ modelValue: e(R).searchKey,
486
+ "onUpdate:modelValue": o[2] || (o[2] = (i) => e(R).searchKey = i),
487
+ class: "",
488
+ placeholder: "search",
489
+ collapsible: ""
490
+ }, null, 8, ["modelValue"])
491
+ ]),
492
+ u(d, {
493
+ "row-data": e(f),
494
+ "column-defs": T,
495
+ "search-value": e(R).searchKey,
496
+ "column-filter": e(R).columnFilters,
497
+ onRowClick: o[3] || (o[3] = (i) => l(i.original._id)),
498
+ "hide-footer": e(f).length < 10
499
+ }, null, 8, ["row-data", "search-value", "column-filter", "hide-footer"])
500
+ ], 64)) : (w(), C(U, {
501
+ key: 1,
502
+ variant: "outlined",
503
+ class: "w-full flex flex-col items-center justify-center gap-y-24 p-24"
504
+ }, {
505
+ default: F(() => [
506
+ o[7] || (o[7] = s("img", {
507
+ src: ee,
508
+ class: "aspect-square w-[150px]"
509
+ }, null, -1)),
510
+ s("div", Oe, [
511
+ s("div", Te, B(e(r)("connect.storeRewards.empty.title")), 1),
512
+ s("div", ke, B(e(r)("connect.storeRewards.empty.description")), 1)
513
+ ]),
514
+ u(h, {
515
+ variant: "primary",
516
+ label: e(r)("connect.storeRewards.empty.action"),
517
+ onClick: o[4] || (o[4] = (i) => l()),
518
+ icon: "add"
519
+ }, null, 8, ["label"])
520
+ ]),
521
+ _: 1
522
+ })),
523
+ u(_e, {
524
+ ref_key: "rewardSheetRef",
525
+ ref: p,
526
+ onUpdate: o[5] || (o[5] = (i) => n(i))
527
+ }, null, 512)
528
+ ])
529
+ ], 64);
530
+ };
531
+ }
532
+ });
533
+ export {
534
+ et as default
535
+ };
@@ -1,31 +1,31 @@
1
1
  import { defineComponent as H, mergeModels as ee, useModel as ye, computed as P, onMounted as ae, watch as Q, resolveComponent as O, openBlock as E, createBlock as q, withCtx as W, createVNode as R, unref as n, ref as M, h as r, isRef as he, createElementVNode as x, createElementBlock as V, Fragment as X, renderList as te, toDisplayString as L, createTextVNode as ve, resolveDynamicComponent as be, onBeforeMount as _e } from "vue";
2
2
  import { components as b, useDialog as Se } from "@feedmepos/ui-library";
3
- import { r as oe } from "./index-DgpNkwMC.js";
4
- import "./index-B-EJxIcf.js";
5
- import { s as xe } from "./index-D3EuM03E.js";
3
+ import { r as oe } from "./index-DnyXvYsb.js";
4
+ import "./index-BZrppr8k.js";
5
+ import { s as xe } from "./index-FsB799qA.js";
6
6
  import { h as y } from "./moment-D7p2TMB-.js";
7
7
  import { _ as j } from "./FilterChip.vue_vue_type_script_setup_true_lang-DaU-9GzO.js";
8
8
  import { s as K } from "./index-CuvNtC_M.js";
9
- import { f as J } from "./number-BAUERN5R.js";
10
- import { u as ne } from "./business-CmK1Bgrl.js";
9
+ import { f as J } from "./number-BKqKRPst.js";
10
+ import { u as ne } from "./business-DTs1RVwW.js";
11
11
  import { u as re, _ as se } from "./usePagination-Ds-cuHop.js";
12
- import { a as Z, c as we, p as De } from "./plugins-D_xP2_oh.js";
13
- import { g as le } from "./user-BqlOvZQu.js";
14
- import { B as ie, e as ce } from "./export-CIH5GPPA.js";
15
- import { u as ue } from "./campaign-BbeHkY_g.js";
16
- import "./index-CGurwPv7.js";
17
- import "./index-tBQVmdqJ.js";
18
- import "./index-Bv3V6gFA.js";
19
- import "./index-BijInYgP.js";
20
- import "./index-DllrUMlF.js";
21
- import { u as me } from "./vue-i18n-1NETuk_J.js";
12
+ import { a as Z, c as we, p as De } from "./plugins-DgQI-VM9.js";
13
+ import { g as le } from "./user-BQBOVBfW.js";
14
+ import { B as ie, e as ce } from "./export-BpAjk801.js";
15
+ import { u as ue } from "./campaign-C-YI6eUZ.js";
16
+ import "./index-D8UahMhD.js";
17
+ import "./index-DUYZ2HiI.js";
18
+ import "./index-BmYRSyFJ.js";
19
+ import "./index-BzMFc1TL.js";
20
+ import "./index-Dd3r1_0V.js";
21
+ import { u as me } from "./vue-i18n-CN5hOv3f.js";
22
22
  import { o as Y } from "./objectId-dwaoBfJX.js";
23
23
  import { useRouter as Re } from "vue-router";
24
- import { t as G } from "./index-CuYPD6KT.js";
25
- import { R as z } from "./app-BV-w2LiQ.js";
26
- import { u as Ce } from "./loading-CqksxFrY.js";
24
+ import { t as G } from "./index-CjfLezA2.js";
25
+ import { R as z } from "./app-BnwvaUjf.js";
26
+ import { u as Ce } from "./loading-Cce2O21E.js";
27
27
  import { useCoreStore as Te } from "@feedmepos/mf-common";
28
- import { m as Fe } from "./index-Cb-dmYUO.js";
28
+ import { m as Fe } from "./index-CEkk23PR.js";
29
29
  function Ie(m) {
30
30
  let f = "";
31
31
  switch (m) {
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as N, ref as C, computed as L, watch as E, resolveComponent as g, openBlock as o, createElementBlock as i, Fragment as y, toDisplayString as I, createCommentVNode as A, createElementVNode as M, createVNode as v, unref as u, renderList as S, createBlock as b, isRef as U, withCtx as F } from "vue";
2
- import { u as T } from "./business-CmK1Bgrl.js";
2
+ import { u as T } from "./business-DTs1RVwW.js";
3
3
  function j(l, s, n) {
4
4
  return l.some(
5
5
  n instanceof Function ? n : (a) => a === s