@feedmepos/mf-inventory-portal 0.0.19 → 0.0.20-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/dist/ApprovalView-CF-RhtHH.js +121 -0
  2. package/dist/{BindingsDialog-CFGZBbFQ.js → BindingsDialog-0_fCmf7t.js} +5 -6
  3. package/dist/{BindingsPicker-BQnwsNNJ.js → BindingsPicker-CT-56t-W.js} +4 -5
  4. package/dist/{BindingsTable-CgTP4Qzq.js → BindingsTable-DEftAnTN.js} +26 -28
  5. package/dist/FmInventoryTableToolbar.vue_vue_type_script_setup_true_lang-6yg6_JPe.js +308 -0
  6. package/dist/IngredientsView-Au6oRwF2.js +1663 -0
  7. package/dist/IntegrationView-D7hqf0P5.js +1172 -0
  8. package/dist/{NumberPrecisionInput.vue_vue_type_script_setup_true_lang-BpryhFlY.js → NumberPrecisionInput.vue_vue_type_script_setup_true_lang-HcOKpAlW.js} +1 -1
  9. package/dist/PremiumBadge.vue_vue_type_script_setup_true_lang-BTOE1vFl.js +88 -0
  10. package/dist/PreviewBadge.vue_vue_type_script_setup_true_lang-CRZiQHjx.js +29 -0
  11. package/dist/{PurchaseOrderPrintPreview-BZAl56sp.js → PurchaseOrderPrintPreview-C92PdleC.js} +4 -4
  12. package/dist/ReceiveRequestView-BaxEQWOD.js +208 -0
  13. package/dist/RecipeView-CDgZpLPk.js +573 -0
  14. package/dist/StockForecast.vue_vue_type_style_index_0_lang-KLXSWvo5.js +59 -0
  15. package/dist/StockView-B77CrARl.js +1873 -0
  16. package/dist/SupplierView-DQ3hB7q2.js +819 -0
  17. package/dist/TransferDetails.vue_vue_type_script_setup_true_lang-lsyakQIl.js +738 -0
  18. package/dist/TransferDialog.vue_vue_type_script_setup_true_lang-DN7NCT72.js +1435 -0
  19. package/dist/TransferTemplateView-Dt04xMCK.js +1290 -0
  20. package/dist/UnitView-DlmlVNOx.js +638 -0
  21. package/dist/WarehouseView-DXWls5vv.js +1048 -0
  22. package/dist/api/bill.d.ts +2 -2
  23. package/dist/api/purchase-order-template.d.ts +11 -0
  24. package/dist/api/supplier.d.ts +2 -0
  25. package/dist/app-P7rGzGsF.js +68600 -0
  26. package/dist/app.d.ts +1265 -0
  27. package/dist/app.js +7 -3
  28. package/dist/components/ChangeLocationComponent.vue.d.ts +14 -1
  29. package/dist/components/FmDroppableField.vue.d.ts +1 -1
  30. package/dist/components/FmInventoryTableToolbar.vue.d.ts +16 -7
  31. package/dist/components/FmMinMaxInput.vue.d.ts +20 -0
  32. package/dist/components/FmMinMaxInputProps.d.ts +16 -0
  33. package/dist/components/FmMinMaxInputRules.d.ts +4 -0
  34. package/dist/components/FmMultiselectDialogProps.d.ts +14 -1
  35. package/dist/components/FmUnitInputProps.d.ts +2 -0
  36. package/dist/components/FmUnitInputRules.d.ts +2 -0
  37. package/dist/components/row-action.enum.d.ts +5 -1
  38. package/dist/composable/defineDeepModel.d.ts +2 -0
  39. package/dist/{decimal-DO2EIT3e.js → decimal-4ONRlhOO.js} +1 -1
  40. package/dist/format-unit-display-DJpElzu_.js +707 -0
  41. package/dist/helper/country.d.ts +2 -0
  42. package/dist/helper/number.d.ts +2 -0
  43. package/dist/id-to-date-D8Ey2CVj.js +30 -0
  44. package/dist/layout/SingleColumnLayout.vue.d.ts +1 -0
  45. package/dist/layout-D-zXtsSp.js +151 -0
  46. package/dist/router/name.d.ts +2 -1
  47. package/dist/row-action.enum-PMKMRrZR.js +50 -0
  48. package/dist/stores/feature.d.ts +4 -0
  49. package/dist/stores/location.d.ts +73 -4
  50. package/dist/stores/supplier.d.ts +744 -7
  51. package/dist/stores/warehouse.d.ts +8 -0
  52. package/dist/style.css +1 -1
  53. package/dist/supplier-DsUIjl-L.js +69 -0
  54. package/dist/tsconfig.app.tsbuildinfo +1 -1
  55. package/dist/views/dev/components/FmMultiselectDialogGrouped.vue.d.ts +2 -0
  56. package/dist/views/ingredients/components/inventory-binding/InventoryBindingForm.vue.d.ts +2 -0
  57. package/dist/views/ingredients/components/inventory-binding/InventoryBindingSummary.vue.d.ts +26 -0
  58. package/dist/views/ingredients/composables/use-ingredient-form.d.ts +14 -2
  59. package/dist/views/ingredients/composables/use-ingredient-table.d.ts +1 -2
  60. package/dist/views/ingredients/helper/calculate-default-cost.d.ts +9 -0
  61. package/dist/views/receive-request/components/select-template-dialog/SelectTemplateDialog.vue.d.ts +8 -0
  62. package/dist/views/receive-request/components/transfer-dialog/TransferDialogProps.d.ts +1 -0
  63. package/dist/views/receive-request/components/transfer-form/SparkIcon.vue.d.ts +1 -1
  64. package/dist/views/receive-request/components/transfer-form/TransferForm.vue.d.ts +4 -0
  65. package/dist/views/receive-request/components/transfer-form/TransferForm2.vue.d.ts +22 -0
  66. package/dist/views/receive-request/components/transfer-form/TransferFormProps.d.ts +2 -1
  67. package/dist/views/receive-request/components/transfer-form/components/ForecastStock.vue.d.ts +187 -0
  68. package/dist/views/receive-request/components/transfer-form/components/TransferItem.vue.d.ts +23 -0
  69. package/dist/views/receive-request/components/transfer-form/components/TransferItemTable.vue.d.ts +21 -0
  70. package/dist/views/receive-request/components/transfer-form/composables/use-backdate-po.d.ts +9 -0
  71. package/dist/views/receive-request/components/transfer-form/composables/use-compare-price.d.ts +6 -0
  72. package/dist/views/receive-request/components/transfer-form/composables/use-transfer-items.d.ts +104 -0
  73. package/dist/views/receive-request/composables/use-receive-request-form.d.ts +7 -1
  74. package/dist/views/receive-request/composables/use-receive-request-table.d.ts +18 -12
  75. package/dist/views/receive-request/helper/get-transfer-type.d.ts +2 -0
  76. package/dist/views/recipe/composables/use-recipe-form.d.ts +14 -2
  77. package/dist/views/recipe/composables/use-recipe-table.d.ts +1 -2
  78. package/dist/views/stock/components/StockRecordCard.vue.d.ts +1 -1
  79. package/dist/views/stock/components/dialog/AdjustedItemForm.vue.d.ts +2 -2
  80. package/dist/views/stock/composables/use-stock-action.d.ts +26 -0
  81. package/dist/views/stock/composables/use-stock-table.d.ts +1 -8
  82. package/dist/views/stock/helper/compute-summary-total.d.ts +2 -2
  83. package/dist/views/stock/helper/stock-row-action.d.ts +4 -2
  84. package/dist/views/transfer-template/TransferTemplateView.vue.d.ts +2 -0
  85. package/dist/views/transfer-template/components/transfer-template-details/TransferTemplateDetails.vue.d.ts +20 -0
  86. package/dist/views/transfer-template/components/transfer-template-details/TransferTemplateDetailsProps.d.ts +9 -0
  87. package/dist/views/transfer-template/components/transfer-template-dialog/TransferTemplateDialog.vue.d.ts +22 -0
  88. package/dist/views/transfer-template/components/transfer-template-dialog/TransferTemplateDialogProps.d.ts +10 -0
  89. package/dist/views/transfer-template/components/transfer-template-form/TransferTemplateForm.vue.d.ts +16 -0
  90. package/dist/views/transfer-template/components/transfer-template-form/TransferTemplateFormProps.d.ts +7 -0
  91. package/dist/views/transfer-template/components/transfer-template-form/components/TransferTemplateItem.vue.d.ts +18 -0
  92. package/dist/views/transfer-template/components/transfer-template-form/composables/use-transfer-locations.d.ts +116 -0
  93. package/dist/views/transfer-template/components/transfer-template-form/composables/use-transfer-template-items.d.ts +118 -0
  94. package/dist/views/transfer-template/composables/use-transfer-template-actions.d.ts +1855 -0
  95. package/dist/views/transfer-template/composables/use-transfer-template-table.d.ts +1170 -0
  96. package/dist/views/unit/composables/use-unit-form.d.ts +14 -2
  97. package/dist/views/unit/composables/use-unit-table.d.ts +1 -2
  98. package/dist/views/warehouse/components/WarehouseForm.vue.d.ts +16 -0
  99. package/dist/{xlsx-D5cXKkCp.js → xlsx-zfERRe6K.js} +1 -1
  100. package/dist/xlsx.util-DnbiJzsk.js +109 -0
  101. package/package.json +6 -5
  102. package/dist/ApprovalView-BYCFc1rD.js +0 -118
  103. package/dist/FmInventoryTableToolbar.vue_vue_type_script_setup_true_lang-C-t2Ewu7.js +0 -268
  104. package/dist/FmMultiselectDialog.vue_vue_type_script_setup_true_lang-C65yZWQv.js +0 -143
  105. package/dist/FmUnitInput.vue_vue_type_script_setup_true_lang-BgI_yys8.js +0 -236
  106. package/dist/IngredientsView-BpcwOWVw.js +0 -1672
  107. package/dist/IntegrationView-Dgd5ZET2.js +0 -1166
  108. package/dist/InventoryBindingForm.vue_vue_type_script_setup_true_lang-D1fdMNkv.js +0 -276
  109. package/dist/PreviewBadge.vue_vue_type_script_setup_true_lang-BvadeWUz.js +0 -35
  110. package/dist/ReceiveRequestView-CkMiR1x6.js +0 -1394
  111. package/dist/RecipeView-1yhjLuc7.js +0 -573
  112. package/dist/StockForecast.vue_vue_type_style_index_0_lang-C5DiRLSi.js +0 -58
  113. package/dist/StockView-D7cAEre3.js +0 -1850
  114. package/dist/SupplierView-B9ujHmNi.js +0 -796
  115. package/dist/TransferDetails.vue_vue_type_script_setup_true_lang-CVzwad1C.js +0 -1028
  116. package/dist/UnitView-DhibVZYz.js +0 -635
  117. package/dist/WarehouseView-CjYUMHgm.js +0 -1041
  118. package/dist/app---xe3UFh.js +0 -44158
  119. package/dist/date2-BwBD2dPC.js +0 -95
  120. package/dist/dayjs.min-BIvfV9G2.js +0 -282
  121. package/dist/fuzzy-DTciL0gQ.js +0 -41
  122. package/dist/index-DXRQ-5FZ.js +0 -21515
  123. package/dist/layout-DyCIklP3.js +0 -151
  124. package/dist/number-DnmKt8In.js +0 -97
  125. package/dist/row-action.enum-BwQbURNh.js +0 -28
  126. package/dist/rules-B06X_jy0.js +0 -85
  127. package/dist/stock-estimate-B1IURgC4.js +0 -122
  128. package/dist/supplier-Bsh2DwUw.js +0 -65
  129. package/dist/use-inventory-binding-dialog-CZOU4sQ3.js +0 -93
  130. package/dist/xlsx.util-Chgrxsn1.js +0 -107
@@ -0,0 +1,121 @@
1
+ import { defineComponent as B, ref as h, watch as I, computed as ee, resolveComponent as te, openBlock as D, createBlock as H, unref as e, withCtx as g, createElementVNode as s, createVNode as n, normalizeStyle as ae, toDisplayString as oe, createElementBlock as re, createCommentVNode as ne, Teleport as se, mergeProps as le } from "vue";
2
+ import { Y as f, O as U, j as ie } from "./app-P7rGzGsF.js";
3
+ import { b as ce, _ as pe, a as ue } from "./FmInventoryTableToolbar.vue_vue_type_script_setup_true_lang-6yg6_JPe.js";
4
+ import { u as me } from "./format-unit-display-DJpElzu_.js";
5
+ import { u as de, _ as fe } from "./TransferDetails.vue_vue_type_script_setup_true_lang-lsyakQIl.js";
6
+ import { _ as _e, F as _, u as ve } from "./layout-D-zXtsSp.js";
7
+ import { useBreakpoints as he } from "@feedmepos/ui-library";
8
+ import { useI18n as De } from "@feedmepos/mf-common";
9
+ const ge = { class: "px-24 xs:p-0 sm:p-0 flex flex-col gap-8 max-h-full" }, xe = { class: "flex flex-col py-8" }, be = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, ye = { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary line-clamp-1" }, we = { class: "fm-typo-en-body-md-400 text-fm-color-typo-primary line-clamp-1" }, Oe = {
10
+ key: 0,
11
+ class: "fm-typo-en-body-md-400 text-fm-color-typo-primary line-clamp-1"
12
+ }, Re = { class: "pt-8" }, Ve = /* @__PURE__ */ B({
13
+ __name: "ApprovalView",
14
+ setup(ke) {
15
+ const o = me("approval"), { columnDefs: G } = de("approval", o), J = ie();
16
+ f.object({
17
+ name: f.string().optional().nullable(),
18
+ start: f.date().optional().nullable(),
19
+ end: f.date().optional().nullable()
20
+ });
21
+ const x = h({
22
+ name: "",
23
+ ...ce()
24
+ }), a = h({
25
+ startDate: U(x.value.start ?? /* @__PURE__ */ new Date()),
26
+ endDate: U(x.value.end ?? /* @__PURE__ */ new Date())
27
+ });
28
+ I([() => a.value.startDate], () => {
29
+ if (!a.value.startDate)
30
+ return;
31
+ if (!a.value.endDate) {
32
+ a.value.endDate = a.value.startDate;
33
+ return;
34
+ }
35
+ const y = new Date(a.value.startDate);
36
+ if (new Date(a.value.endDate).getTime() < y.getTime()) {
37
+ a.value.endDate = a.value.startDate;
38
+ return;
39
+ }
40
+ });
41
+ const v = h(""), { breakpoints: b } = he(), K = ee(() => b.value.xs || b.value.sm ? 10 : 20), Q = ve(), { t: W } = De();
42
+ return (y, l) => {
43
+ const X = te("FmTable");
44
+ return D(), H(pe, {
45
+ title: e(W)("inventory.transfer.approval.title")
46
+ }, {
47
+ default: g(() => [
48
+ s("div", ge, [
49
+ n(ue, {
50
+ searchable: "",
51
+ "change-location": "",
52
+ search: v.value,
53
+ "onUpdate:search": l[0] || (l[0] = (r) => v.value = r),
54
+ actions: [{ icon: "refresh", onClick: e(o).fetchData }]
55
+ }, null, 8, ["search", "actions"]),
56
+ n(X, {
57
+ style: ae(e(Q).tableHeight),
58
+ "column-defs": e(G),
59
+ "row-data": e(o).purchaseRequests.value,
60
+ "search-value": v.value,
61
+ loading: !e(J)._currentLocation || e(o).loading.value,
62
+ onRowClick: l[1] || (l[1] = (r) => e(o).promptShowTransferDetails(r.original.purchaseOrder, r.original)),
63
+ "page-size": K.value
64
+ }, {
65
+ "list-row": g((r) => [
66
+ n(_e, {
67
+ row: r,
68
+ onRowClick: (t) => e(o).promptShowTransferDetails(t.purchaseOrder, t)
69
+ }, {
70
+ default: g((t) => {
71
+ var w, O, R, i, k, S, T, C, c, F, Y, p, $, u, z, M, V, j, q, m, L, N, E, P, d, A;
72
+ return [
73
+ s("div", xe, [
74
+ s("div", be, [
75
+ n(e(_), {
76
+ render: (R = (O = (w = t.purchaseOrder__id) == null ? void 0 : w.column) == null ? void 0 : O.columnDef) == null ? void 0 : R.cell,
77
+ props: (k = (i = t.purchaseOrder__id) == null ? void 0 : i.getContext) == null ? void 0 : k.call(i)
78
+ }, null, 8, ["render", "props"])
79
+ ]),
80
+ s("div", ye, [
81
+ n(e(_), {
82
+ render: (C = (T = (S = t.to_name) == null ? void 0 : S.column) == null ? void 0 : T.columnDef) == null ? void 0 : C.cell,
83
+ props: (F = (c = t.to_name) == null ? void 0 : c.getContext) == null ? void 0 : F.call(c)
84
+ }, null, 8, ["render", "props"])
85
+ ]),
86
+ s("div", we, oe((z = (u = ($ = (p = (Y = r.original.purchaseOrder) == null ? void 0 : Y.items) == null ? void 0 : p.map) == null ? void 0 : $.call(p, (Z) => `${Z.name}`)) == null ? void 0 : u.join) == null ? void 0 : z.call(u, ", ")), 1),
87
+ (M = r.original.purchaseOrder) != null && M.ref ? (D(), re("div", Oe, [
88
+ n(e(_), {
89
+ render: (q = (j = (V = t.purchaseOrder_ref) == null ? void 0 : V.column) == null ? void 0 : j.columnDef) == null ? void 0 : q.cell,
90
+ props: (L = (m = t.purchaseOrder_ref) == null ? void 0 : m.getContext) == null ? void 0 : L.call(m)
91
+ }, null, 8, ["render", "props"])
92
+ ])) : ne("", !0),
93
+ s("div", Re, [
94
+ n(e(_), {
95
+ render: (P = (E = (N = t.purchaseOrder_status) == null ? void 0 : N.column) == null ? void 0 : E.columnDef) == null ? void 0 : P.cell,
96
+ props: (A = (d = t.purchaseOrder_status) == null ? void 0 : d.getContext) == null ? void 0 : A.call(d)
97
+ }, null, 8, ["render", "props"])
98
+ ])
99
+ ])
100
+ ];
101
+ }),
102
+ _: 2
103
+ }, 1032, ["row", "onRowClick"])
104
+ ]),
105
+ _: 1
106
+ }, 8, ["style", "column-defs", "row-data", "search-value", "loading", "page-size"])
107
+ ]),
108
+ (D(), H(se, { to: "body" }, [
109
+ n(fe, le(e(o).transferDetailsProps.value, {
110
+ onSubmitted: e(o).fetchData
111
+ }), null, 16, ["onSubmitted"])
112
+ ]))
113
+ ]),
114
+ _: 1
115
+ }, 8, ["title"]);
116
+ };
117
+ }
118
+ });
119
+ export {
120
+ Ve as default
121
+ };
@@ -1,16 +1,15 @@
1
1
  import { defineComponent as C, ref as o, onMounted as M, onUnmounted as F, watch as x, resolveComponent as l, openBlock as i, createElementBlock as d, createBlock as I, withCtx as R, createVNode as a, createCommentVNode as z, createElementVNode as P } from "vue";
2
- import { _ as V } from "./InventoryBindingForm.vue_vue_type_script_setup_true_lang-D1fdMNkv.js";
3
- import { u as L, A as S } from "./app---xe3UFh.js";
2
+ import { u as V, am as L, _ as S } from "./app-P7rGzGsF.js";
4
3
  const U = {
5
4
  key: 0,
6
5
  class: "flex justify-end gap-8 items-center"
7
6
  }, E = {
8
7
  key: 1,
9
8
  class: "p-24 flex items-center justify-center gap-16"
10
- }, D = /* @__PURE__ */ C({
9
+ }, A = /* @__PURE__ */ C({
11
10
  __name: "BindingsDialog",
12
11
  setup(N) {
13
- const p = L(), u = o(!0), s = o(new Array()), c = o(), t = S(y);
12
+ const p = V(), u = o(!0), s = o(new Array()), c = o(), t = L(y);
14
13
  async function y() {
15
14
  await p.readInventory(), c.value = t.onMessage("props:inventory-bindings", (e) => {
16
15
  u.value = !1, s.value = e;
@@ -64,7 +63,7 @@ const U = {
64
63
  class: "flex flex-col gap-16"
65
64
  }, {
66
65
  default: R(() => [
67
- a(V, {
66
+ a(S, {
68
67
  "model-value": s.value,
69
68
  "onUpdate:modelValue": n[0] || (n[0] = (w) => s.value = w),
70
69
  "iframe-mode": "",
@@ -90,5 +89,5 @@ const U = {
90
89
  }
91
90
  });
92
91
  export {
93
- D as default
92
+ A as default
94
93
  };
@@ -1,6 +1,5 @@
1
1
  import { defineComponent as S, computed as r, ref as l, onMounted as U, onUnmounted as V, resolveComponent as E, openBlock as p, createElementBlock as f, createVNode as u, createElementVNode as k } from "vue";
2
- import { _ as x } from "./FmMultiselectDialog.vue_vue_type_script_setup_true_lang-C65yZWQv.js";
3
- import { u as M, A as z } from "./app---xe3UFh.js";
2
+ import { u as x, am as M, y as z } from "./app-P7rGzGsF.js";
4
3
  const K = {
5
4
  key: 0,
6
5
  class: "flex flex-col gap-16"
@@ -10,7 +9,7 @@ const K = {
10
9
  }, N = /* @__PURE__ */ S({
11
10
  __name: "BindingsPicker",
12
11
  setup(L) {
13
- const d = M(), C = r(() => d.recipes), I = r(() => d.skus), g = l(!0), i = l(new Array()), a = l("RECIPE"), c = r(() => a.value === "SKU" ? I.value.map((s) => ({
12
+ const d = x(), C = r(() => d.recipes), I = r(() => d.skus), g = l(!0), i = l(new Array()), a = l("RECIPE"), c = r(() => a.value === "SKU" ? I.value.map((s) => ({
14
13
  label: s.name,
15
14
  sublabel: s.code,
16
15
  value: s
@@ -63,7 +62,7 @@ const K = {
63
62
  ];
64
63
  }
65
64
  }
66
- }), _ = l(), o = z(B);
65
+ }), _ = l(), o = M(B);
67
66
  async function B() {
68
67
  await d.readInventory(), _.value = o.onMessage(
69
68
  "props:binding-items",
@@ -98,7 +97,7 @@ const K = {
98
97
  u(t, { size: "md" }),
99
98
  s[1] || (s[1] = k("div", null, "Loading bindings dialog...", -1))
100
99
  ])) : (p(), f("div", K, [
101
- u(x, {
100
+ u(z, {
102
101
  "model-value": b.value,
103
102
  "onUpdate:modelValue": s[0] || (s[0] = (m) => b.value = m),
104
103
  items: c.value
@@ -1,10 +1,8 @@
1
1
  import { defineComponent as x, ref as r, provide as C, computed as g, resolveComponent as h, openBlock as l, createElementBlock as u, createStaticVNode as L, Fragment as F, renderList as I, createElementVNode as p, toDisplayString as v, createVNode as w, withModifiers as N, onMounted as E, onUnmounted as z, createBlock as M } from "vue";
2
- import { i as b, u as P, A as R } from "./app---xe3UFh.js";
3
- import "./index-DXRQ-5FZ.js";
2
+ import { q as b, u as P, am as R } from "./app-P7rGzGsF.js";
4
3
  import "@feedmepos/ui-library";
5
- import "./fuzzy-DTciL0gQ.js";
6
- import "./dayjs.min-BIvfV9G2.js";
7
- const U = { class: "" }, D = ["onClick"], O = { class: "flex-grow-0 flex-shrink-0 basis-5/12 py-8 pl-8" }, V = { class: "flex-grow-0 flex-shrink-0 basis-3/12 py-8" }, S = { class: "flex-grow-0 flex-shrink-0 basis-3/12 py-8" }, $ = { class: "flex-grow-0 flex-shrink-0 basis-1/12 py-4" }, A = /* @__PURE__ */ x({
4
+ import "@feedmepos/mf-common";
5
+ const U = { class: "" }, D = ["onClick"], O = { class: "flex-grow-0 flex-shrink-0 basis-5/12 py-8 pl-8" }, V = { class: "flex-grow-0 flex-shrink-0 basis-3/12 py-8" }, S = { class: "flex-grow-0 flex-shrink-0 basis-3/12 py-8" }, $ = { class: "flex-grow-0 flex-shrink-0 basis-1/12 py-4" }, T = /* @__PURE__ */ x({
8
6
  __name: "binding-ui",
9
7
  props: {
10
8
  items: { default: () => [] },
@@ -24,17 +22,17 @@ const U = { class: "" }, D = ["onClick"], O = { class: "flex-grow-0 flex-shrink-
24
22
  C("closeDialog", () => {
25
23
  d.value.isOpen = !d.value.isOpen;
26
24
  });
27
- const n = _, f = a, m = g(() => n.items.map((s) => ({
25
+ const i = _, f = a, m = g(() => i.items.map((s) => ({
28
26
  key: s.key,
29
27
  name: s.name,
30
28
  _skuLinked: s.bindings.filter(
31
- ({ type: t, id: e }) => t === b.enum.SKU && n.skus.some((c) => c._id === e)
29
+ ({ type: t, id: e }) => t === b.enum.SKU && i.skus.some((c) => c._id === e)
32
30
  ).length,
33
31
  _recipeLinked: s.bindings.filter(
34
- ({ type: t, id: e }) => t === b.enum.RECIPE && n.recipes.some((c) => c._id === e)
32
+ ({ type: t, id: e }) => t === b.enum.RECIPE && i.recipes.some((c) => c._id === e)
35
33
  ).length,
36
34
  onUpdate: async () => {
37
- n.editable && f("click:open-binding-dialog", n.type, s);
35
+ i.editable && f("click:open-binding-dialog", i.type, s);
38
36
  }
39
37
  })));
40
38
  return (k, s) => {
@@ -55,7 +53,7 @@ const U = { class: "" }, D = ["onClick"], O = { class: "flex-grow-0 flex-shrink-
55
53
  icon: "edit",
56
54
  "icon-color": "#000",
57
55
  size: "md",
58
- disabled: !n.editable,
56
+ disabled: !i.editable,
59
57
  type: "button",
60
58
  onClick: N(e.onUpdate, ["stop"])
61
59
  }, null, 8, ["disabled", "onClick"])
@@ -64,49 +62,49 @@ const U = { class: "" }, D = ["onClick"], O = { class: "flex-grow-0 flex-shrink-
64
62
  ]);
65
63
  };
66
64
  }
67
- }), T = {
65
+ }), A = {
68
66
  key: 1,
69
67
  class: "p-24 flex items-center justify-center gap-16"
70
- }, J = /* @__PURE__ */ x({
68
+ }, H = /* @__PURE__ */ x({
71
69
  __name: "BindingsTable",
72
70
  setup(_) {
73
- const a = P(), d = r(!0), n = r(new Array()), f = g(() => a.recipes), m = g(() => a.skus), k = r(""), s = R(e), t = r();
71
+ const a = P(), d = r(!0), i = r(new Array()), f = g(() => a.recipes), m = g(() => a.skus), k = r(""), s = R(e), t = r();
74
72
  async function e() {
75
73
  await a.readInventory(), t.value = s.onMessage(
76
74
  "props:grouped-bindings",
77
- (i) => {
78
- d.value = !1, n.value = i;
75
+ (n) => {
76
+ d.value = !1, i.value = n;
79
77
  }
80
78
  ), s.sendMessage("props:grouped-bindings");
81
79
  }
82
- async function c(i, o) {
80
+ async function c(n, o) {
83
81
  s.sendMessage("@click:open-binding-dialog", {
84
- key: i,
82
+ key: n,
85
83
  binding: o
86
84
  });
87
85
  }
88
86
  const y = r();
89
87
  return E(() => {
90
- const i = y.value;
91
- i && new ResizeObserver(() => {
92
- s.sendMessage("resize", i.scrollHeight);
93
- }).observe(i);
88
+ const n = y.value;
89
+ n && new ResizeObserver(() => {
90
+ s.sendMessage("resize", n.scrollHeight);
91
+ }).observe(n);
94
92
  }), z(() => {
95
- var i, o;
96
- (o = (i = t.value) == null ? void 0 : i.removeEventListener) == null || o.call(i);
97
- }), (i, o) => {
93
+ var n, o;
94
+ (o = (n = t.value) == null ? void 0 : n.removeEventListener) == null || o.call(n);
95
+ }), (n, o) => {
98
96
  const B = h("FmCircularProgress");
99
97
  return l(), u("div", {
100
98
  class: "bg-white",
101
99
  ref_key: "resizeableRef",
102
100
  ref: y
103
101
  }, [
104
- d.value ? (l(), u("div", T, [
102
+ d.value ? (l(), u("div", A, [
105
103
  w(B, { size: "md" }),
106
104
  o[0] || (o[0] = p("div", null, "Loading bindings table...", -1))
107
- ])) : (l(), M(A, {
105
+ ])) : (l(), M(T, {
108
106
  key: 0,
109
- items: n.value,
107
+ items: i.value,
110
108
  recipes: f.value,
111
109
  skus: m.value,
112
110
  type: k.value,
@@ -118,5 +116,5 @@ const U = { class: "" }, D = ["onClick"], O = { class: "flex-grow-0 flex-shrink-
118
116
  }
119
117
  });
120
118
  export {
121
- J as default
119
+ H as default
122
120
  };
@@ -0,0 +1,308 @@
1
+ import { defineComponent as L, computed as g, resolveComponent as b, openBlock as t, createElementBlock as y, Fragment as k, createElementVNode as r, toDisplayString as C, createCommentVNode as h, renderList as D, createBlock as _, unref as d, createVNode as c, renderSlot as j, Teleport as z, ref as H, withCtx as V, watch as Q, mergeModels as E, useModel as I } from "vue";
2
+ import { FmButtonVariant as O, useBreakpoints as q } from "@feedmepos/ui-library";
3
+ import { j as N, O as T } from "./app-P7rGzGsF.js";
4
+ import { useCoreStore as G, useI18n as P } from "@feedmepos/mf-common";
5
+ const J = { class: "flex flex-col w-full bg-white h-full" }, K = { class: "flex items-center px-24 py-16 xs:p-12 sm:p-12 gap-4 h-[68px]" }, W = { class: "flex-1 flex-col gap-4 fm-typo-en-title-md-600 flex h-[36px] bg-white" }, X = {
6
+ key: 0,
7
+ class: "text-fm-color-typo-secondary fm-typo-en-body-sm-400 xs:px-8 sm:px-8"
8
+ }, Z = { key: 0 }, ee = { key: 1 }, ne = { class: "bg-white flex-1" }, te = { class: "fixed bottom-96 right-16" }, xe = /* @__PURE__ */ L({
9
+ __name: "SingleColumnLayout",
10
+ props: {
11
+ actions: { default: () => [] },
12
+ title: { default: "Title" },
13
+ description: {},
14
+ showBackButton: { type: Boolean },
15
+ defaultPadding: { type: Boolean },
16
+ breadcrumbs: { default: () => [] },
17
+ usingBusinessHelperText: {}
18
+ },
19
+ emits: ["click:action"],
20
+ setup(m, { emit: l }) {
21
+ const f = m, u = l, e = g(() => f.actions.find((a) => a.isPrimary)), o = g(
22
+ () => f.actions.filter((a) => !a.isPrimary).map((a) => ({ ...a, variant: a.variant ?? O.Tertiary }))
23
+ ), { breakpoints: s } = q(), x = N(), v = g(() => x.businessLevel);
24
+ return (a, w) => {
25
+ const n = b("FmButton");
26
+ return t(), y(k, null, [
27
+ r("div", J, [
28
+ r("div", K, [
29
+ r("div", W, [
30
+ r("div", null, C(a.title), 1),
31
+ a.usingBusinessHelperText && v.value ? (t(), y("div", X, C(a.usingBusinessHelperText), 1)) : h("", !0)
32
+ ]),
33
+ o.value.length ? (t(), y("div", Z, [
34
+ (t(!0), y(k, null, D(o.value, (p) => (t(), _(n, {
35
+ key: p.value,
36
+ label: p.label,
37
+ "prepend-icon": p.prependIcon,
38
+ variant: p.variant,
39
+ onClick: (M) => u("click:action", p.value)
40
+ }, null, 8, ["label", "prepend-icon", "variant", "onClick"]))), 128))
41
+ ])) : h("", !0),
42
+ e.value && (d(s).lg || d(s).md) ? (t(), y("div", ee, [
43
+ c(n, {
44
+ label: e.value.label,
45
+ "prepend-icon": e.value.prependIcon,
46
+ onClick: w[0] || (w[0] = (p) => u("click:action", e.value.value))
47
+ }, null, 8, ["label", "prepend-icon"])
48
+ ])) : h("", !0)
49
+ ]),
50
+ r("div", ne, [
51
+ j(a.$slots, "default")
52
+ ])
53
+ ]),
54
+ e.value && (d(s).sm || d(s).xs) ? (t(), _(z, {
55
+ key: 0,
56
+ to: "body"
57
+ }, [
58
+ r("div", te, [
59
+ c(n, {
60
+ label: e.value.label,
61
+ "prepend-icon": e.value.prependIcon,
62
+ onClick: w[1] || (w[1] = (p) => u("click:action", e.value.value)),
63
+ variant: "fab"
64
+ }, null, 8, ["label", "prepend-icon"])
65
+ ])
66
+ ])) : h("", !0)
67
+ ], 64);
68
+ };
69
+ }
70
+ }), le = { class: "inline-flex" }, oe = { class: "inline-flex rounded-md items-center gap-4 justify-center h-[30px] px-8 py-4 bg-fm-color-neutral-gray-100 cursor-pointer text-fm-color-neutral-gray-400" }, se = { class: "fm-typo-en-body-md-600 select-none text-ellipsis overflow-hidden whitespace-nowrap" }, ae = {
71
+ class: "overflow-hidden overflow-y-scroll",
72
+ style: { maxHeight: "105px" }
73
+ }, re = {
74
+ class: "overflow-hidden overflow-y-scroll",
75
+ style: { maxHeight: "105px" }
76
+ }, ue = /* @__PURE__ */ L({
77
+ __name: "ChangeLocationComponent",
78
+ props: {
79
+ showBusiness: { type: Boolean }
80
+ },
81
+ setup(m) {
82
+ const l = N(), f = G(), u = g(() => {
83
+ var n;
84
+ return (n = f.currentBusiness.value) == null ? void 0 : n.name;
85
+ }), { t: e } = P(), o = H(""), s = g({
86
+ get() {
87
+ return l.businessLevel;
88
+ },
89
+ set(n) {
90
+ l.businessLevel = n;
91
+ }
92
+ }), x = g(
93
+ () => l.locations.map((n) => ({ label: n.name, value: n.dbName, type: n.type })).filter(
94
+ (n) => o.value ? n.label.toLocaleLowerCase().includes(o.value.toLocaleLowerCase()) : !0
95
+ )
96
+ ), v = g(
97
+ () => x.value.filter((n) => n.type === "restaurant")
98
+ ), a = g(
99
+ () => x.value.filter((n) => n.type === "warehouse")
100
+ );
101
+ function w({ value: n }) {
102
+ s.value = !1, l.selectLocation(l.locations.find((p) => p.dbName === n));
103
+ }
104
+ return (n, p) => {
105
+ const M = b("FmIcon"), A = b("FmSearch"), $ = b("FmMenuDivider"), R = b("FmMenuHeader"), B = b("FmMenuItem"), U = b("FmMenu");
106
+ return t(), y("div", le, [
107
+ c(U, { "close-on-click": !0 }, {
108
+ "menu-button": V(() => {
109
+ var i;
110
+ return [
111
+ r("div", oe, [
112
+ c(M, {
113
+ name: n.showBusiness && s.value ? "store" : "storefront",
114
+ size: "sm"
115
+ }, null, 8, ["name"]),
116
+ r("div", se, C(n.showBusiness && s.value ? u.value : ((i = d(l)._currentLocation) == null ? void 0 : i.name) ?? d(e)("inventory.common.noLocationSelected")), 1),
117
+ c(M, {
118
+ name: "expand_more",
119
+ size: "sm"
120
+ })
121
+ ])
122
+ ];
123
+ }),
124
+ default: V(() => [
125
+ c(A, {
126
+ "model-value": o.value,
127
+ "onUpdate:modelValue": p[0] || (p[0] = (i) => o.value = i),
128
+ class: "w-[200px]",
129
+ placeholder: d(e)("inventory.common.table.toolbar.filterItems")
130
+ }, null, 8, ["model-value", "placeholder"]),
131
+ c($),
132
+ n.showBusiness ? (t(), y(k, { key: 0 }, [
133
+ c(R, {
134
+ label: d(e)("inventory.common.business")
135
+ }, null, 8, ["label"]),
136
+ c($),
137
+ c(B, {
138
+ "model-value": s.value,
139
+ label: u.value,
140
+ onClick: p[1] || (p[1] = (i) => s.value = !0)
141
+ }, null, 8, ["model-value", "label"])
142
+ ], 64)) : h("", !0),
143
+ c(R, {
144
+ label: d(e)("inventory.common.restaurant")
145
+ }, null, 8, ["label"]),
146
+ c($),
147
+ r("div", ae, [
148
+ (t(!0), y(k, null, D(v.value, (i) => {
149
+ var F;
150
+ return t(), _(B, {
151
+ key: i.value,
152
+ "model-value": !s.value && ((F = d(l)._currentLocation) == null ? void 0 : F.dbName) === i.value,
153
+ label: i.label,
154
+ onClick: (Y) => w(i)
155
+ }, null, 8, ["model-value", "label", "onClick"]);
156
+ }), 128))
157
+ ]),
158
+ v.value.length ? h("", !0) : (t(), _(B, {
159
+ key: 1,
160
+ disabled: "",
161
+ label: d(e)("inventory.common.noResultFound")
162
+ }, null, 8, ["label"])),
163
+ c(R, {
164
+ label: d(e)("inventory.common.warehouse")
165
+ }, null, 8, ["label"]),
166
+ c($),
167
+ r("div", re, [
168
+ (t(!0), y(k, null, D(a.value, (i) => {
169
+ var F;
170
+ return t(), _(B, {
171
+ key: i.value,
172
+ "model-value": !s.value && ((F = d(l)._currentLocation) == null ? void 0 : F.dbName) === i.value,
173
+ label: i.label,
174
+ onClick: (Y) => w(i)
175
+ }, null, 8, ["model-value", "label", "onClick"]);
176
+ }), 128))
177
+ ]),
178
+ a.value.length ? h("", !0) : (t(), _(B, {
179
+ key: 2,
180
+ disabled: "",
181
+ label: d(e)("inventory.common.noResultFound")
182
+ }, null, 8, ["label"]))
183
+ ]),
184
+ _: 1
185
+ })
186
+ ]);
187
+ };
188
+ }
189
+ });
190
+ function we() {
191
+ const m = /* @__PURE__ */ new Date();
192
+ return m.setDate(m.getDate() - 15), {
193
+ start: m,
194
+ end: /* @__PURE__ */ new Date()
195
+ };
196
+ }
197
+ function S(m = 15) {
198
+ const l = /* @__PURE__ */ new Date();
199
+ l.setDate(l.getDate() - m);
200
+ const f = l, u = /* @__PURE__ */ new Date();
201
+ return {
202
+ startDate: `${T(f)}`,
203
+ endDate: `${T(u)}`
204
+ };
205
+ }
206
+ const ie = { class: "inline-flex rounded-md items-center gap-4 justify-center h-[30px] px-8 py-4 bg-fm-color-neutral-gray-100 cursor-pointer text-fm-color-neutral-gray-400" }, ce = { class: "fm-typo-en-body-md-600 select-none text-ellipsis overflow-hidden whitespace-nowrap" }, de = /* @__PURE__ */ L({
207
+ __name: "FmDateRangePickerChip",
208
+ props: {
209
+ modelValue: { default: (m) => m.modelValue ?? S() }
210
+ },
211
+ emits: ["update:modelValue"],
212
+ setup(m, { emit: l }) {
213
+ const f = l, u = H(S());
214
+ Q(u, (o) => {
215
+ f("update:modelValue", o);
216
+ });
217
+ const e = g(() => {
218
+ const { startDate: o, endDate: s } = u.value;
219
+ return !o && !s ? "" : `${o} - ${s}`;
220
+ });
221
+ return (o, s) => {
222
+ const x = b("FmIcon"), v = b("FmDateRangePicker");
223
+ return t(), _(v, {
224
+ "show-predefined-range": "",
225
+ modelValue: u.value,
226
+ "onUpdate:modelValue": s[0] || (s[0] = (a) => u.value = a),
227
+ "start-label": "",
228
+ "end-label": ""
229
+ }, {
230
+ "trigger-button": V(() => [
231
+ r("div", ie, [
232
+ c(x, {
233
+ name: "calendar_month",
234
+ size: "sm"
235
+ }),
236
+ r("div", ce, C(e.value), 1)
237
+ ])
238
+ ]),
239
+ _: 1
240
+ }, 8, ["modelValue"]);
241
+ };
242
+ }
243
+ }), me = { class: "flex flex-col gap-8" }, pe = { class: "xs:px-8 sm:px-8 flex gap-8 items-center xs:gap-8 xs:flex-col-reverse sm:gap-8 sm:flex-col-reverse h-48 sm:h-[unset] xs:h-[unset]" }, ve = {
244
+ key: 0,
245
+ class: "xs:w-full sm:w-full flex gap-8 items-center"
246
+ }, fe = { class: "flex-1 w-full flex items-center gap-4" }, ye = { class: "w-full max-w-[343px] xs:max-w-[unset] sm:max-w-[unset]" }, ke = /* @__PURE__ */ L({
247
+ __name: "FmInventoryTableToolbar",
248
+ props: /* @__PURE__ */ E({
249
+ dateRangeQuery: { type: Boolean },
250
+ changeLocation: { type: Boolean },
251
+ searchable: { type: Boolean },
252
+ actions: {},
253
+ usingBusinessHelperText: {},
254
+ showBusiness: { type: Boolean }
255
+ }, {
256
+ search: {},
257
+ searchModifiers: {},
258
+ dateRange: {},
259
+ dateRangeModifiers: {}
260
+ }),
261
+ emits: ["update:search", "update:dateRange"],
262
+ setup(m) {
263
+ const l = I(m, "search"), f = I(m, "dateRange"), { t: u } = P();
264
+ return (e, o) => {
265
+ const s = b("FmTextField"), x = b("FmButton");
266
+ return t(), y("div", me, [
267
+ r("div", pe, [
268
+ e.changeLocation || e.dateRangeQuery ? (t(), y("div", ve, [
269
+ e.changeLocation ? (t(), _(ue, {
270
+ key: 0,
271
+ "show-business": e.showBusiness
272
+ }, null, 8, ["show-business"])) : h("", !0),
273
+ e.dateRangeQuery ? (t(), _(de, {
274
+ key: 1,
275
+ "model-value": f.value,
276
+ "onUpdate:modelValue": o[0] || (o[0] = (v) => f.value = v)
277
+ }, null, 8, ["model-value"])) : h("", !0)
278
+ ])) : h("", !0),
279
+ r("div", fe, [
280
+ o[2] || (o[2] = r("div", { class: "flex-1 xs:hidden sm:hidden" }, null, -1)),
281
+ r("div", ye, [
282
+ e.searchable ? (t(), _(s, {
283
+ key: 0,
284
+ "model-value": l.value,
285
+ "onUpdate:modelValue": o[1] || (o[1] = (v) => l.value = v),
286
+ "prepend-icon": "search",
287
+ placeholder: d(u)("inventory.common.table.toolbar.filterItems"),
288
+ class: "w-full"
289
+ }, null, 8, ["model-value", "placeholder"])) : h("", !0)
290
+ ]),
291
+ (t(!0), y(k, null, D(e.actions, (v, a) => (t(), _(x, {
292
+ key: a,
293
+ variant: "tertiary",
294
+ "prepend-icon": v.icon,
295
+ onClick: v.onClick
296
+ }, null, 8, ["prepend-icon", "onClick"]))), 128))
297
+ ])
298
+ ])
299
+ ]);
300
+ };
301
+ }
302
+ });
303
+ export {
304
+ xe as _,
305
+ ke as a,
306
+ we as b,
307
+ S as i
308
+ };