sme-pos-package 1.0.14 → 1.0.15

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 (314) hide show
  1. package/dist/index.d.mts +1 -1
  2. package/dist/index.mjs +1 -0
  3. package/package.json +4 -1
  4. package/dist/index.css.map +0 -1
  5. package/dist/index.mjs.map +0 -1
  6. package/dist/tailwind.preset.mjs.map +0 -1
  7. package/public/assets/images/bank-logos.png +0 -0
  8. package/public/assets/images/banner1.png +0 -0
  9. package/public/assets/images/banner2.png +0 -0
  10. package/public/assets/images/banner3.png +0 -0
  11. package/public/assets/images/banner4.png +0 -0
  12. package/public/assets/images/cashier.svg +0 -9
  13. package/public/assets/images/empty-cart.png +0 -0
  14. package/public/assets/images/empty-table-state.png +0 -0
  15. package/public/assets/images/layout-display/left-layout.png +0 -0
  16. package/public/assets/images/layout-display/right-layout.png +0 -0
  17. package/public/assets/images/modal-illustration.png +0 -0
  18. package/public/assets/images/order-empty-state.png +0 -0
  19. package/public/assets/images/order.png +0 -0
  20. package/public/assets/images/payment-success-label.png +0 -0
  21. package/public/assets/images/table-empty.png +0 -0
  22. package/public/assets/images/take-away.png +0 -0
  23. package/public/assets/lottie/loading.json +0 -1
  24. package/public/assets/lottie/soft_pos.json +0 -1
  25. package/public/assets/lottie/success.json +0 -1
  26. package/public/config.json +0 -27
  27. package/public/env.json +0 -17
  28. package/src/animations/success.json +0 -9730
  29. package/src/assets/icons/breadcrumbs-icon.tsx +0 -85
  30. package/src/assets/icons/cart-icon.tsx +0 -14
  31. package/src/assets/icons/common.tsx +0 -270
  32. package/src/assets/icons/customer-view-icon.tsx +0 -20
  33. package/src/assets/icons/dining-table.tsx +0 -34
  34. package/src/assets/icons/edit-line-icon.tsx +0 -18
  35. package/src/assets/icons/emenu-icon.tsx +0 -39
  36. package/src/assets/icons/file-close-line-icon.tsx +0 -18
  37. package/src/assets/icons/helper-icon.tsx +0 -84
  38. package/src/assets/icons/home-gear-line-icon.tsx +0 -18
  39. package/src/assets/icons/kanban-icon.tsx +0 -16
  40. package/src/assets/icons/loading-icon.tsx +0 -45
  41. package/src/assets/icons/logout-box-line-icon.tsx +0 -18
  42. package/src/assets/icons/order-icon.tsx +0 -92
  43. package/src/assets/icons/payment-icon.tsx +0 -429
  44. package/src/assets/icons/pincode.tsx +0 -196
  45. package/src/assets/icons/pos-connect-icon.tsx +0 -67
  46. package/src/assets/icons/pos-device-icon.tsx +0 -52
  47. package/src/assets/icons/pos-icon.tsx +0 -75
  48. package/src/assets/icons/printer-line-icon.tsx +0 -18
  49. package/src/assets/icons/star-icon.tsx +0 -174
  50. package/src/assets/icons/table-icon.tsx +0 -77
  51. package/src/assets/icons/user-add-line-icon.tsx +0 -33
  52. package/src/assets/icons/user-icon.tsx +0 -65
  53. package/src/components/common/button-action.tsx +0 -46
  54. package/src/components/common/button-icon.tsx +0 -23
  55. package/src/components/common/dropdown/index.tsx +0 -79
  56. package/src/components/common/empty-state.tsx +0 -60
  57. package/src/components/common/header/index.tsx +0 -89
  58. package/src/components/common/header/tabs.tsx +0 -119
  59. package/src/components/common/image.tsx +0 -20
  60. package/src/components/common/input/index.tsx +0 -55
  61. package/src/components/common/input/radio-group.tsx +0 -75
  62. package/src/components/common/input/text-area.tsx +0 -28
  63. package/src/components/common/modal/delete-confirm-modal-container.tsx +0 -65
  64. package/src/components/common/modal/index.ts +0 -2
  65. package/src/components/common/modal/modal-direction.tsx +0 -125
  66. package/src/components/common/modal/modal-header.tsx +0 -37
  67. package/src/components/common/modal/modal-wrapper.tsx +0 -56
  68. package/src/components/common/modal/modal-zoom.tsx +0 -61
  69. package/src/components/common/pagination.tsx +0 -95
  70. package/src/components/common/refresh-button.tsx +0 -28
  71. package/src/components/common/search-bar.tsx +0 -27
  72. package/src/components/common/search.tsx +0 -59
  73. package/src/components/common/skeleton.tsx +0 -7
  74. package/src/components/common/tabs-layout.tsx +0 -98
  75. package/src/components/common/use-check-session.tsx +0 -19
  76. package/src/components/customer-management/add-customer/add-customer-drawer.tsx +0 -286
  77. package/src/components/customer-management/add-customer/address-select.tsx +0 -51
  78. package/src/components/customer-management/choose-customer-drawer.tsx +0 -177
  79. package/src/components/customer-management/customer-info-drawer.tsx +0 -166
  80. package/src/components/customer-management/customer-no-data.tsx +0 -18
  81. package/src/components/emenu/emenu-qr-code.tsx +0 -59
  82. package/src/components/emenu/menu-link.tsx +0 -67
  83. package/src/components/index.ts +0 -8
  84. package/src/components/kanban-template/kitchen-template.tsx +0 -60
  85. package/src/components/kanban-template/pos-order-template.tsx +0 -77
  86. package/src/components/kanban-template/pos-template.tsx +0 -170
  87. package/src/components/kitchen-management/change-status-confirm-modal.tsx +0 -61
  88. package/src/components/kitchen-management/index.ts +0 -1
  89. package/src/components/kitchen-management/kitchen-order/index.tsx +0 -153
  90. package/src/components/kitchen-management/kitchen-order/line.tsx +0 -78
  91. package/src/components/kitchen-management/kitchen-order/state.tsx +0 -52
  92. package/src/components/kitchen-management/kitchen-status.tsx +0 -69
  93. package/src/components/kitchen-management/orders-kitchen-management.tsx +0 -113
  94. package/src/components/order-management/index.tsx +0 -128
  95. package/src/components/order-management/order-actions.tsx +0 -46
  96. package/src/components/order-management/order-detail/header.tsx +0 -37
  97. package/src/components/order-management/order-detail/index.ts +0 -3
  98. package/src/components/order-management/order-detail/information.tsx +0 -96
  99. package/src/components/order-management/order-detail/order-detail.tsx +0 -84
  100. package/src/components/order-management/order-detail/order-line.tsx +0 -56
  101. package/src/components/order-management/order-detail/summary.tsx +0 -221
  102. package/src/components/order-management/order-header.tsx +0 -113
  103. package/src/components/order-management/order-pagination.tsx +0 -49
  104. package/src/components/order-management/order-status.tsx +0 -58
  105. package/src/components/order-management/order-table.tsx +0 -179
  106. package/src/components/order-management/order-tabs.tsx +0 -48
  107. package/src/components/pos-management/add-product-from-barcode/index.tsx +0 -97
  108. package/src/components/pos-management/cart-content/action-line.tsx +0 -81
  109. package/src/components/pos-management/cart-content/cancel-order-line-modal.tsx +0 -41
  110. package/src/components/pos-management/cart-content/cart-item.tsx +0 -173
  111. package/src/components/pos-management/cart-content/cart-items.tsx +0 -130
  112. package/src/components/pos-management/cart-content/draft-orders/draft-order-line.tsx +0 -67
  113. package/src/components/pos-management/cart-content/draft-orders/index.tsx +0 -40
  114. package/src/components/pos-management/cart-content/edit-cart-modal.tsx +0 -11
  115. package/src/components/pos-management/cart-content/index.tsx +0 -260
  116. package/src/components/pos-management/cart-content/no-select-order.tsx +0 -26
  117. package/src/components/pos-management/cart-content/order-info/customer-info.tsx +0 -53
  118. package/src/components/pos-management/cart-content/order-info/index.tsx +0 -109
  119. package/src/components/pos-management/cart-content/order-total.tsx +0 -36
  120. package/src/components/pos-management/cart-content/orders-line.tsx +0 -72
  121. package/src/components/pos-management/menu-content/category-tab.tsx +0 -38
  122. package/src/components/pos-management/menu-content/create-order-modal.tsx +0 -65
  123. package/src/components/pos-management/menu-content/product-content.tsx +0 -93
  124. package/src/components/pos-management/menu-content/product-detail/info.tsx +0 -28
  125. package/src/components/pos-management/menu-content/product-detail/modal.tsx +0 -148
  126. package/src/components/pos-management/menu-content/product-detail/option.tsx +0 -87
  127. package/src/components/pos-management/menu-content/product-detail/quantity-control.tsx +0 -155
  128. package/src/components/pos-management/menu-content/product-detail/sale-keypad.tsx +0 -100
  129. package/src/components/pos-management/menu-content/product-item.tsx +0 -65
  130. package/src/components/pos-management/order-helper/cancel-order-confirm.tsx +0 -43
  131. package/src/components/pos-management/order-helper/history-call.tsx +0 -105
  132. package/src/components/pos-management/order-helper/order-helper-modal.tsx +0 -116
  133. package/src/components/pos-management/payment-content/bill/actions.tsx +0 -46
  134. package/src/components/pos-management/payment-content/bill/content.tsx +0 -207
  135. package/src/components/pos-management/payment-content/bill/index.tsx +0 -18
  136. package/src/components/pos-management/payment-content/card-payment/index.tsx +0 -124
  137. package/src/components/pos-management/payment-content/card-payment/pos-payment/pos-connect.tsx +0 -183
  138. package/src/components/pos-management/payment-content/card-payment/pos-payment/qr-connect.tsx +0 -185
  139. package/src/components/pos-management/payment-content/card-payment/waiting-for-payment-pos-modal.tsx +0 -37
  140. package/src/components/pos-management/payment-content/cash-payment/index.tsx +0 -216
  141. package/src/components/pos-management/payment-content/index.tsx +0 -70
  142. package/src/components/pos-management/payment-content/payment-info.tsx +0 -67
  143. package/src/components/pos-management/payment-content/payment-layout.tsx +0 -16
  144. package/src/components/pos-management/payment-content/payment-method-cards.tsx +0 -99
  145. package/src/components/pos-management/payment-content/qr-payment/index.tsx +0 -118
  146. package/src/components/pos-management/payment-content/qr-payment/qr_code.js +0 -29
  147. package/src/components/pos-management/payment-content/qr-payment/vietqr.js +0 -436
  148. package/src/components/pos-management/payment-content/session-close-modal.tsx +0 -35
  149. package/src/components/pos-management/payment-content/soft-pos-payment/index.tsx +0 -48
  150. package/src/components/pos-management/pos-helpers/back-confirm.tsx +0 -45
  151. package/src/components/pos-management/pos-helpers/index.tsx +0 -135
  152. package/src/components/pos-management/pos-helpers/layout-display-modal.tsx +0 -99
  153. package/src/components/pos-management/search.tsx +0 -48
  154. package/src/components/pos-management/table-content/filtered-tables.tsx +0 -59
  155. package/src/components/pos-management/table-content/floor-tabs.tsx +0 -65
  156. package/src/components/pos-management/table-content/index.tsx +0 -76
  157. package/src/components/pos-management/table-content/table-item.tsx +0 -127
  158. package/src/components/pos-management/table-content/tables.tsx +0 -96
  159. package/src/components/restaurant-management/add-floor-modal.tsx +0 -133
  160. package/src/components/restaurant-management/add-table-modal.tsx +0 -198
  161. package/src/components/restaurant-management/delete-floor-confirm-modal.tsx +0 -42
  162. package/src/components/restaurant-management/delete-table-confirm-modal.tsx +0 -51
  163. package/src/components/restaurant-management/header.tsx +0 -22
  164. package/src/components/restaurant-management/index.tsx +0 -54
  165. package/src/components/restaurant-management/left-side.tsx +0 -51
  166. package/src/components/restaurant-management/right-side.tsx +0 -179
  167. package/src/components/restaurant-management/table-empty.tsx +0 -43
  168. package/src/components/session-management/close-session-modal/actions.tsx +0 -45
  169. package/src/components/session-management/close-session-modal/close-session-confirm.tsx +0 -157
  170. package/src/components/session-management/close-session-modal/close-session-ticket.tsx +0 -218
  171. package/src/components/session-management/close-session-modal/container.tsx +0 -25
  172. package/src/components/session-management/close-session-modal/draft-orders-confirm.tsx +0 -53
  173. package/src/components/session-management/close-session-modal/draft-orders-summary.tsx +0 -82
  174. package/src/components/session-management/close-session-modal/draft-orders.tsx +0 -34
  175. package/src/components/session-management/close-session-modal/index.tsx +0 -35
  176. package/src/components/session-management/close-session-modal/order/index.ts +0 -1
  177. package/src/components/session-management/close-session-modal/order/order-line.tsx +0 -64
  178. package/src/components/session-management/close-session-modal/order/orders-in-draft.tsx +0 -31
  179. package/src/components/session-management/close-session-modal/session-summary.tsx +0 -165
  180. package/src/components/session-management/index.ts +0 -1
  181. package/src/components/session-management/open-shift/index.tsx +0 -172
  182. package/src/components/table-management/index.tsx +0 -0
  183. package/src/constants/api/index.ts +0 -1
  184. package/src/constants/headers.constant.tsx +0 -24
  185. package/src/constants/index.ts +0 -1
  186. package/src/constants/language.store.ts +0 -21
  187. package/src/constants/methods.constant.ts +0 -10
  188. package/src/constants/order-state.ts +0 -8
  189. package/src/constants/payment-color.constant.ts +0 -26
  190. package/src/constants/query.constant.ts +0 -14
  191. package/src/constants/routes.constants.ts +0 -23
  192. package/src/constants/template-name.constant.ts +0 -9
  193. package/src/hooks/bill/use-get-bill-information.ts +0 -49
  194. package/src/hooks/bill/use-print-bill.tsx +0 -0
  195. package/src/hooks/common/load-env-config.ts +0 -98
  196. package/src/hooks/common/use-back.ts +0 -13
  197. package/src/hooks/common/use-broadcast.ts +0 -22
  198. package/src/hooks/common/use-click-outside.ts +0 -58
  199. package/src/hooks/common/use-get-base64-photo.ts +0 -71
  200. package/src/hooks/common/use-get-query.ts +0 -25
  201. package/src/hooks/common/use-pos.ts +0 -21
  202. package/src/hooks/common/use-query-params.ts +0 -89
  203. package/src/hooks/common/use-speech.ts +0 -36
  204. package/src/hooks/customer/use-customer-provider.ts +0 -247
  205. package/src/hooks/floor/use-floor-provider.ts +0 -172
  206. package/src/hooks/kitchen/use-kitchen-provider.ts +0 -80
  207. package/src/hooks/order/use-get-point-reward.ts +0 -50
  208. package/src/hooks/order/use-loop-fetch-order.ts +0 -30
  209. package/src/hooks/order/use-order-items.ts +0 -61
  210. package/src/hooks/order/use-orders.ts +0 -76
  211. package/src/hooks/payment/use-payment-provider.ts +0 -221
  212. package/src/hooks/product/use-product-provider.ts +0 -87
  213. package/src/hooks/session/use-check-session.tsx +0 -19
  214. package/src/hooks/session/use-session-provider.ts +0 -79
  215. package/src/hooks/table/use-pos-table-provider.ts +0 -193
  216. package/src/index.css +0 -5
  217. package/src/index.ts +0 -13
  218. package/src/layouts/common.tsx +0 -15
  219. package/src/layouts/index.ts +0 -4
  220. package/src/layouts/pos-layout.tsx +0 -33
  221. package/src/layouts/pos-order-layout.tsx +0 -43
  222. package/src/layouts/sale-layout.tsx +0 -25
  223. package/src/locales/en.json +0 -394
  224. package/src/locales/vi.json +0 -400
  225. package/src/pages/index.ts +0 -4
  226. package/src/pages/login/index.tsx +0 -128
  227. package/src/pages/pincode/index.tsx +0 -198
  228. package/src/pages/pos/kitchen-management/layout.tsx +0 -18
  229. package/src/pages/pos/management-floor/index.tsx +0 -7
  230. package/src/pages/pos/management-order/index.tsx +0 -7
  231. package/src/pages/pos/management-order/order-detail/index.tsx +0 -7
  232. package/src/pages/pos/management-table/index.tsx +0 -0
  233. package/src/pages/pos/payment-success/index.tsx +0 -75
  234. package/src/provider/app-provider.tsx +0 -56
  235. package/src/provider/fallback/custom-error.tsx +0 -26
  236. package/src/provider/main-provider.tsx +0 -41
  237. package/src/provider/meta-provider.tsx +0 -72
  238. package/src/provider/modal-provider.tsx +0 -48
  239. package/src/provider/notification-provider.tsx +0 -64
  240. package/src/provider/pos-provider/close-session-provider/index.tsx +0 -207
  241. package/src/provider/pos-provider/customer-provider/index.tsx +0 -30
  242. package/src/provider/pos-provider/floor-provider/index.tsx +0 -39
  243. package/src/provider/pos-provider/index.ts +0 -6
  244. package/src/provider/pos-provider/kitchen-provider/index.tsx +0 -30
  245. package/src/provider/pos-provider/order-detail-provider/index.tsx +0 -233
  246. package/src/provider/pos-provider/order-provider/index.tsx +0 -803
  247. package/src/provider/pos-provider/payment-provider/index.tsx +0 -30
  248. package/src/provider/pos-provider/product-provider/index.tsx +0 -30
  249. package/src/provider/pos-provider/sale-provider/index.tsx +0 -168
  250. package/src/provider/pos-provider/session-provider/index.tsx +0 -30
  251. package/src/provider/pos-provider/socket-provider/index.tsx +0 -118
  252. package/src/provider/pos-provider/table-provider/index.tsx +0 -30
  253. package/src/provider/public-provider.tsx +0 -104
  254. package/src/provider/use-session-provider.ts +0 -79
  255. package/src/router/app-router.tsx +0 -38
  256. package/src/router/index.tsx +0 -26
  257. package/src/router/pos-route.tsx +0 -75
  258. package/src/router/protected-route.tsx +0 -16
  259. package/src/router/public-route.tsx +0 -11
  260. package/src/store/header/index.ts +0 -21
  261. package/src/store/session/index.ts +0 -25
  262. package/src/store/states/cart.state.ts +0 -135
  263. package/src/store/states/close-session.state.ts +0 -20
  264. package/src/store/states/customer.state.ts +0 -19
  265. package/src/store/states/payment.state.ts +0 -14
  266. package/src/styles/base.css +0 -212
  267. package/src/styles/common.css +0 -65
  268. package/src/styles/lib/tailwind.css +0 -0
  269. package/src/styles/lib/tailwind.theme.css +0 -34
  270. package/src/styles/loading.css +0 -72
  271. package/src/styles/main.css +0 -5
  272. package/src/styles/refreshing-content.css +0 -55
  273. package/src/styles/text.css +0 -44
  274. package/src/types/account.ts +0 -61
  275. package/src/types/branch.ts +0 -6
  276. package/src/types/category.ts +0 -13
  277. package/src/types/common.ts +0 -4
  278. package/src/types/customer.ts +0 -52
  279. package/src/types/dashboard.ts +0 -18
  280. package/src/types/edc.ts +0 -37
  281. package/src/types/export-e-invoice.ts +0 -17
  282. package/src/types/filter.d.ts +0 -12
  283. package/src/types/floor/floor.ts +0 -16
  284. package/src/types/floor.d.ts +0 -36
  285. package/src/types/index.ts +0 -127
  286. package/src/types/invoice.ts +0 -32
  287. package/src/types/modal.ts +0 -15
  288. package/src/types/notification.ts +0 -12
  289. package/src/types/order.ts +0 -182
  290. package/src/types/payment.ts +0 -44
  291. package/src/types/product/product.ts +0 -47
  292. package/src/types/product.ts +0 -137
  293. package/src/types/provider-info.d.ts +0 -14
  294. package/src/types/qr.d.ts +0 -25
  295. package/src/types/report.d.ts +0 -43
  296. package/src/types/sale.d.ts +0 -68
  297. package/src/types/search.d.ts +0 -7
  298. package/src/types/session.d.ts +0 -30
  299. package/src/types/shop-qr.d.ts +0 -89
  300. package/src/types/staff.d.ts +0 -35
  301. package/src/types/store.d.ts +0 -25
  302. package/src/types/table.d.ts +0 -57
  303. package/src/utils/close-session-ticket.tsx +0 -129
  304. package/src/utils/functions.ts +0 -299
  305. package/src/utils/i18n.ts +0 -25
  306. package/src/utils/pos/bill.ts +0 -156
  307. package/src/utils/pos/convert-order.ts +0 -58
  308. package/src/utils/pos/helpers.ts +0 -48
  309. package/src/utils/pos/session.ts +0 -44
  310. package/src/utils/storages/index.ts +0 -1
  311. package/src/utils/storages/local-storage.ts +0 -72
  312. package/tailwind.preset.ts +0 -25
  313. package/tsconfig.json +0 -30
  314. package/tsup.config.ts +0 -30
@@ -1,198 +0,0 @@
1
- import LoadingIcon from "@assets/icons/loading-icon";
2
- import { PinCodeIcon } from "@assets/icons/pincode";
3
- import ButtonAction from "@components/common/button-action";
4
- import OpenSessionModal from "@components/session-management/open-shift";
5
- import { useService } from "@fctc/widget-logic/provider";
6
- import { usePosAppProvider } from "@provider/app-provider";
7
- import { t } from "i18next";
8
- import { OTPInput } from "input-otp";
9
- import { useState } from "react";
10
- import { useForm } from "react-hook-form";
11
- import { useNavigate } from "react-router-dom";
12
- import { toast } from "react-toastify";
13
-
14
- const EnterPinCode = () => {
15
- const model = "pos.pin.wizard";
16
- const service = "wesap";
17
- const specification = {
18
- display_name: {},
19
- pin: {},
20
- };
21
- const context = {
22
- lang: "vi_VN",
23
- tz: "Asia/Saigon",
24
- uid: 37,
25
- };
26
-
27
- const navigate = useNavigate();
28
- const methods = useForm({
29
- mode: "onBlur",
30
- });
31
-
32
- const { useSave, useButton } = useService();
33
- const [openModal, setOpenModal] = useState(false);
34
- const [posConfigId, setPosConfigId] = useState<any>(null);
35
- const [otpValue, setOtpValue] = useState<string>("");
36
- const [isError, setIsError] = useState(false);
37
- const [isLoading, setIsLoading] = useState(false);
38
-
39
- const { user } = usePosAppProvider();
40
- const { mutateAsync: callButtonMutate } = useButton();
41
- const { mutateAsync: fetchSave } = useSave();
42
-
43
- const onValidateOtp = async () => {
44
- if (otpValue.length !== 6) {
45
- setIsError(true);
46
- return;
47
- }
48
- setIsLoading(true);
49
- const clearOtpValue = () => {
50
- setOtpValue("");
51
- };
52
- try {
53
- const data = await fetchSave({
54
- ids: [],
55
- data: {
56
- pin: otpValue,
57
- },
58
- model,
59
- context,
60
- specification: specification,
61
- service,
62
- xNode: user?.userProfile?.data?.x_node,
63
- });
64
-
65
- const dataCallButton = await callButtonMutate({
66
- model,
67
- method: "action_resolve_pin",
68
- ids: data?.[0]?.id ? [data?.[0]?.id] : data?.id ? [data?.id] : [],
69
- context,
70
- service,
71
- xNode: user?.userProfile?.data?.x_node,
72
- });
73
-
74
- if (dataCallButton?.type === "ir.actions.client") {
75
- if (dataCallButton?.params?.error_code === "no_open_session") {
76
- setOpenModal(!openModal);
77
- setPosConfigId(dataCallButton?.params?.pos_config_id);
78
- return;
79
- }
80
- if (dataCallButton?.params?.type === "warning") {
81
- clearOtpValue();
82
- toast.error(dataCallButton?.params?.message);
83
- }
84
- } else if (dataCallButton?.type === "ir.actions.act_url") {
85
- if (dataCallButton?.url) {
86
- sessionStorage.setItem(
87
- "enter_pincode",
88
- window.location.href.split("console")[1]
89
- );
90
- localStorage.setItem(
91
- "backUrl",
92
- window.location.href.split("console")[1]
93
- );
94
- navigate(dataCallButton?.url);
95
- }
96
- }
97
- } catch (error: any) {
98
- if (error?.message) {
99
- clearOtpValue();
100
- toast.error(error?.message);
101
- } else {
102
- toast.error(`${t("confirm_button")} ${t("failure")}`);
103
- }
104
- } finally {
105
- setIsLoading(false);
106
- }
107
- };
108
-
109
- const onKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
110
- if (e.key === "Enter") {
111
- e.preventDefault();
112
- onValidateOtp();
113
- }
114
- };
115
-
116
- // useEffect(() => {
117
- // if (otpValue.length === 6 && isAndroid) hideKeyboard()
118
- // }, [otpValue])
119
-
120
- return (
121
- <div className="flex justify-center items-center h-screen bg-neutral-100-96 enter-pin-code-form">
122
- <div className="w-[760px] rounded-xl border border-stroke-default m-auto px-6 py-10 bg-white flex flex-col gap-8">
123
- <div className="flex flex-col gap-1 w-full items-center">
124
- <PinCodeIcon />
125
- <div className="flex flex-col gap-1 text-center">
126
- <span className="text-2xl font-semibold">
127
- {t("enter_pin_title")}
128
- </span>
129
- <span className="text-sm font-normal">
130
- {t("enter_pin_subtitle")}
131
- </span>
132
- </div>
133
- </div>
134
- <div className="max-w-[464px] mx-auto">
135
- <OTPInput
136
- maxLength={6}
137
- value={otpValue}
138
- onKeyDown={onKeyDown}
139
- onChange={(val) => {
140
- const cleanVal = val.replace(/\D/g, "").slice(0, 6);
141
- setOtpValue(cleanVal);
142
- setIsError(false);
143
- }}
144
- onPaste={(e) => {
145
- e.preventDefault();
146
- const pasted = e.clipboardData.getData("text");
147
- const cleanVal = pasted.replace(/\D/g, "").slice(0, 6);
148
- setOtpValue(cleanVal);
149
- setIsError(false);
150
- }}
151
- render={({ slots }) => (
152
- <div className="grid grid-cols-6 gap-4 px-2 ">
153
- {slots.map((slot, index) => (
154
- <div
155
- key={index}
156
- className={`w-full aspect-square rounded-xl border ${
157
- isError
158
- ? "border-colored-error text-colored-error"
159
- : slot?.isActive
160
- ? "border-secondary"
161
- : "border-stroke-default text-primary"
162
- } flex items-center font-semibold leading-7 min-w-16 aspect-square justify-center text-xl`}
163
- >
164
- {slot?.char}
165
- </div>
166
- ))}
167
- </div>
168
- )}
169
- />
170
- </div>
171
- <div className="flex justify-center">
172
- <ButtonAction
173
- onClick={onValidateOtp}
174
- iconSrc={isLoading && <LoadingIcon />}
175
- className={`button-primary ${
176
- isLoading ? "cursor-not-allowed" : ""
177
- } w-full`}
178
- text={t("continue_enter_pincode")}
179
- />
180
- </div>
181
- </div>
182
-
183
- {openModal && (
184
- <OpenSessionModal
185
- openModal={openModal}
186
- setOpenModal={setOpenModal}
187
- methods={methods}
188
- row={{}}
189
- record={{
190
- id: posConfigId,
191
- }}
192
- />
193
- )}
194
- </div>
195
- );
196
- };
197
-
198
- export default EnterPinCode;
@@ -1,18 +0,0 @@
1
- // import { Outlet } from "react-router-dom";
2
- // import { KitchenProvider } from "@provider/pos-provider/kitchen-provider";
3
- // import { ProductProvider } from "@provider/pos-provider/product-provider";
4
- // import { SaleProvider } from "@provider/pos-provider/sale-provider";
5
-
6
- // const KitchenManagementLayout = () => {
7
- // return (
8
- // <SaleProvider>
9
- // <ProductProvider>
10
- // <KitchenProvider>
11
- // <Outlet />
12
- // </KitchenProvider>
13
- // </ProductProvider>
14
- // </SaleProvider>
15
- // );
16
- // };
17
-
18
- // export default KitchenManagementLayout;
@@ -1,7 +0,0 @@
1
- import ManagementFloor from "@components/restaurant-management";
2
-
3
- const ManagementFloorsPage = () => {
4
- return <ManagementFloor />;
5
- };
6
-
7
- export default ManagementFloorsPage;
@@ -1,7 +0,0 @@
1
- import { ManagementOrder } from "@components/order-management"
2
-
3
- const ManagementOrderPage = () => {
4
- return <ManagementOrder />
5
- }
6
-
7
- export default ManagementOrderPage
@@ -1,7 +0,0 @@
1
- import OrderDetail from "@components/order-management/order-detail/order-detail";
2
-
3
- const OrderDetailPage = () => {
4
- return <OrderDetail />;
5
- };
6
-
7
- export default OrderDetailPage;
File without changes
@@ -1,75 +0,0 @@
1
- import ButtonAction from "@components/common/button-action";
2
- import { ORDER_STATE } from "@constants/order-state";
3
- import { QUERY_KEYS } from "@constants/query.constant";
4
- import { useQueryParams } from "@hooks/common/use-query-params";
5
- import { useOrderDetail } from "@provider/pos-provider/order-detail-provider";
6
- import { useOrder } from "@provider/pos-provider/order-provider";
7
- import Lottie from "lottie-react";
8
- import { useEffect } from "react";
9
- import { useNavigate } from "react-router-dom";
10
- import animationData from "../../../../public/assets/lottie/success.json";
11
- import POSPath from "@constants/routes.constants";
12
-
13
- const PaymentSuccess = () => {
14
- const { getQuery, formatQuery } = useQueryParams();
15
- const orderId = getQuery(QUERY_KEYS.ORDER_ID);
16
- const navigate = useNavigate();
17
- const { orders, setOrders } = useOrder();
18
- const { taxAmount, totalAmount } = useOrderDetail();
19
-
20
- const onComplete = () => {
21
- navigate({
22
- pathname: POSPath.MENUS,
23
- search: `?${formatQuery([QUERY_KEYS.POS_ID, QUERY_KEYS.SESSION_ID])}`,
24
- });
25
- };
26
-
27
- const onPrint = () => {};
28
- useEffect(() => {
29
- setOrders(
30
- orders.map((order) =>
31
- order.id == Number(orderId)
32
- ? {
33
- ...order,
34
- state: ORDER_STATE.PAID,
35
- }
36
- : order
37
- )
38
- );
39
- }, []);
40
-
41
- return (
42
- <div className="flex flex-col items-center gap-5 h-screen w-full justify-center bg-white">
43
- <div style={{ width: 200 }}>
44
- <Lottie animationData={animationData} />
45
- </div>
46
- <div className="flex flex-col items-center gap-[10px]">
47
- <p className="text-xl font-semibold text-colored-success">
48
- Thanh toán thành công
49
- </p>
50
- <p className="w-[400px] text-sm text-text-disable font-medium text-center">
51
- Thanh toán đơn hàng {orderId} thành công. Bạn có thể xem chi tiết đơn
52
- hàng{" "}
53
- <span className="text-colored-primary underline cursor-pointer">
54
- tại đây
55
- </span>
56
- . hệ thống sẽ tự động chuyển về trang bán hàng sau 10s.
57
- </p>
58
- </div>
59
- <div className="flex gap-2 w-full max-w-[444px]">
60
- <ButtonAction
61
- text="Hoàn tất"
62
- className="button-primary w-full"
63
- onClick={() => onComplete()}
64
- />
65
- <ButtonAction
66
- text="In hóa đơn"
67
- className="button-primary w-full"
68
- onClick={() => onPrint()}
69
- />
70
- </div>
71
- </div>
72
- );
73
- };
74
-
75
- export default PaymentSuccess;
@@ -1,56 +0,0 @@
1
- import {
2
- useCompany,
3
- useUser,
4
- type useCompanyType,
5
- type useUserType,
6
- } from "@fctc/widget-logic/hooks";
7
- import { useEnv } from "@fctc/widget-logic/provider";
8
-
9
- import { createContext, useContext, useMemo } from "react";
10
-
11
- type PosAppProviderType = {
12
- user: useUserType;
13
- company: useCompanyType;
14
- userProfile: any;
15
- };
16
-
17
- const PosAppProviderInitialValue: PosAppProviderType = {
18
- user: {} as useUserType,
19
- company: {} as useCompanyType,
20
- userProfile: {},
21
- };
22
- const ReactContext = createContext<PosAppProviderType>(
23
- PosAppProviderInitialValue
24
- );
25
-
26
- const PosAppProvider = ({ children }: { children: React.ReactNode }) => {
27
- const { env } = useEnv();
28
- const user = useUser({ service: env.default_service });
29
- const company = useCompany({ service: env.default_service });
30
-
31
- const userProfile = useMemo(() => {
32
- return user?.userProfile?.data;
33
- }, [user]);
34
-
35
- return (
36
- <ReactContext.Provider
37
- value={{
38
- user,
39
- company,
40
- userProfile,
41
- }}
42
- >
43
- {children}
44
- </ReactContext.Provider>
45
- );
46
- };
47
- export default PosAppProvider;
48
- export const usePosAppProvider = () => {
49
- const context = useContext(ReactContext);
50
-
51
- if (!context) {
52
- return PosAppProviderInitialValue;
53
- }
54
-
55
- return context;
56
- };
@@ -1,26 +0,0 @@
1
- const CustomError = () => {
2
- return (
3
- <div className="flex w-full h-screen items-center justify-center overflow-auto bg-weak-50 p-4">
4
- <div className="flex h-fit flex-col items-center justify-center rounded-[16px] bg-white px-4 py-[48px]">
5
- {/* <div className='aspect-[154/140] w-[44%]'>
6
- <Image src={crash_app} className='!object-contain' />
7
- </div> */}
8
- <p className="mt-4 w-full text-center text-xl font-semibold text-strong-950">
9
- An error occurred!
10
- </p>
11
- <p className="mt-4 w-full text-center text-soft-400">
12
- Sorry, we are unable to process your request at this time. Please try
13
- again later.
14
- </p>
15
- <a
16
- className="mt-6 flex w-full items-center justify-center rounded-[10px] border border-primary-custom py-3 text-base font-medium text-text-primary"
17
- href={"/"}
18
- >
19
- Back to home
20
- </a>
21
- </div>
22
- </div>
23
- )
24
- }
25
-
26
- export default CustomError
@@ -1,41 +0,0 @@
1
- import {
2
- EnvProvider,
3
- MainProvider,
4
- MetaProvider,
5
- ServiceProvider,
6
- } from "@fctc/widget-logic/provider";
7
- import CustomError from "@provider/fallback/custom-error";
8
- import { ModalProvider } from "@provider/modal-provider";
9
- import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
10
- import { AnimatePresence } from "framer-motion";
11
- import { ErrorBoundary } from "react-error-boundary";
12
-
13
- const queryClient = new QueryClient({});
14
- const AppProvider = ({
15
- user,
16
- children,
17
- }: {
18
- user: any;
19
- children: React.ReactNode;
20
- }) => {
21
- return (
22
- <AnimatePresence mode="wait">
23
- {/* <Suspense fallback={<CustomSuspense />}> */}
24
- <ErrorBoundary fallback={<CustomError />}>
25
- <EnvProvider>
26
- <QueryClientProvider client={queryClient}>
27
- <MainProvider>
28
- <ServiceProvider>
29
- <MetaProvider>
30
- <ModalProvider>{children}</ModalProvider>
31
- </MetaProvider>
32
- </ServiceProvider>
33
- </MainProvider>
34
- </QueryClientProvider>
35
- </EnvProvider>
36
- </ErrorBoundary>
37
- {/* </Suspense> */}
38
- </AnimatePresence>
39
- );
40
- };
41
- export default AppProvider;
@@ -1,72 +0,0 @@
1
- import { useEnv } from "@fctc/widget-logic/provider";
2
- import { ContextApi } from "@fctc/widget-logic/types";
3
- import { ReactNode, useEffect } from "react";
4
-
5
- type MetaProviderProps = {
6
- children: ReactNode;
7
- };
8
-
9
- export const MetaProvider = ({ children }: MetaProviderProps) => {
10
- const { env }: ContextApi = useEnv();
11
-
12
- function updateMetadata() {
13
- const metadata = env?.defaultCompany;
14
-
15
- if (!metadata) return;
16
-
17
- if (metadata.display_name) {
18
- document.title = metadata.display_name;
19
- }
20
-
21
- // document.documentElement.style.setProperty(
22
- // "--primary",
23
- // metadata?.primary_color
24
- // );
25
- // document.documentElement.style.setProperty(
26
- // "--secondary",
27
- // metadata?.secondary_color
28
- // );
29
-
30
- // Update description meta tag
31
- const metaDescription = document.querySelector('meta[name="description"]');
32
- if (metaDescription) {
33
- metaDescription.setAttribute("content", metadata.display_name);
34
- } else {
35
- const newMetaDescription = document.createElement("meta");
36
- newMetaDescription.name = "description";
37
- newMetaDescription.content = metadata.display_name;
38
- document.head.appendChild(newMetaDescription);
39
- }
40
-
41
- // Function to update or create link elements
42
- const updateIcon = (rel: string, href: string) => {
43
- let linkIcon = document.querySelector(
44
- `link[rel="${rel}"]`
45
- ) as HTMLLinkElement | null;
46
- if (linkIcon) {
47
- linkIcon.href = href;
48
- } else {
49
- linkIcon = document.createElement("link");
50
- linkIcon.rel = rel;
51
- linkIcon.href = href;
52
- document.head.appendChild(linkIcon);
53
- }
54
- };
55
-
56
- if (metadata.logo) {
57
- updateIcon("icon", "/document-icon.svg");
58
- updateIcon("apple-touch-icon", "/document-icon.svg");
59
-
60
- const faviconLink = document.querySelector('link[href="favicon.ico"]');
61
- if (faviconLink) {
62
- faviconLink.remove();
63
- }
64
- }
65
- }
66
-
67
- useEffect(() => {
68
- updateMetadata();
69
- }, [env?.defaultCompany]);
70
-
71
- return <>{children}</>;
72
- };
@@ -1,48 +0,0 @@
1
- import { createContext, useContext, useState } from 'react'
2
-
3
- type ModalContext = {
4
- isAppScale: boolean
5
- handleCheckScaleApp: () => void
6
- handleToggleInModal: (isOpen: boolean) => void
7
- }
8
-
9
- const Context = createContext<ModalContext | undefined>(undefined)
10
-
11
- const Provider = ({ children }: { children: React.ReactNode }) => {
12
- const [isAppScale, setIsAppScale] = useState(false)
13
- const handleCheckScaleApp = () => {
14
- const bottomModals = document.querySelectorAll('.bottom-modal')
15
- const isOpen = bottomModals.length > 1
16
-
17
- if ((isOpen && !isAppScale) || (!isOpen && isAppScale)) {
18
- setIsAppScale(isOpen)
19
- }
20
- }
21
-
22
- const handleToggleInModal = (isOpen: boolean) => {
23
- if (isOpen) {
24
- if (!isAppScale) {
25
- setIsAppScale(isOpen)
26
- }
27
- } else {
28
- const bottomModals = document.querySelectorAll('.bottom-modal')
29
- if (bottomModals.length == 1 && isAppScale) {
30
- setIsAppScale(isOpen)
31
- }
32
- }
33
- }
34
- return (
35
- <Context.Provider value={{ isAppScale, handleCheckScaleApp: handleCheckScaleApp, handleToggleInModal }}>
36
- {children}
37
- </Context.Provider>
38
- )
39
- }
40
- export const ModalProvider = Provider
41
-
42
- export const useModal = () => {
43
- const context = useContext(Context)
44
- if (!context) {
45
- throw new Error('useModal must be used within a ModalProvider')
46
- }
47
- return context
48
- }
@@ -1,64 +0,0 @@
1
- // import { sessionStorageUtils } from "@fctc/widget-logic/utils";
2
- // import { useEnv } from "@fctc/widget-logic/provider";
3
- // import { useService } from "@fctc/widget-logic/provider";
4
-
5
- // import { createContext, useContext } from "react";
6
- // import { usePosAppProvider } from "./app-provider";
7
-
8
- // const ReactContext = createContext<useNotificationProviderType>(
9
- // {} as useNotificationProviderType
10
- // );
11
-
12
- // export const NotificationsProvider = ({
13
- // children,
14
- // }: {
15
- // children: React.ReactNode;
16
- // }) => {
17
- // return (
18
- // <ReactContext.Provider value={useNotificationProvider()}>
19
- // {children}
20
- // </ReactContext.Provider>
21
- // );
22
- // };
23
-
24
- // export const useNotificationView = () => {
25
- // const context = useContext(ReactContext);
26
-
27
- // if (!context) {
28
- // throw new Error(
29
- // "useNotificationView must be used within a NotificationsProvider"
30
- // );
31
- // }
32
-
33
- // return context;
34
- // };
35
-
36
- // const useNotificationProvider = () => {
37
- // const { useGetNotifications } = useService();
38
- // const { env } = useEnv();
39
- // const { user } = usePosAppProvider();
40
- // const service =
41
- // sessionStorageUtils?.getMenuFocus()?.service || env?.default_service;
42
- // const dataUser = user?.userProfile?.data;
43
- // const queryResult = useGetNotifications({
44
- // body: {
45
- // failures: true,
46
- // systray_get_activities: true,
47
- // context: env?.context,
48
- // },
49
- // service: service,
50
- // xNode: service == "wesap" && dataUser?.x_node,
51
- // enabled: false,
52
- // queryKey: [],
53
- // });
54
-
55
- // return {
56
- // queryResult,
57
- // };
58
- // };
59
-
60
- // export default useNotificationProvider;
61
-
62
- // export type useNotificationProviderType = ReturnType<
63
- // typeof useNotificationProvider
64
- // >;