bananas-commerce-admin 0.2.2 → 0.2.5

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 (361) hide show
  1. package/README.md +4 -8
  2. package/dist/cjs/Admin.js +54 -27
  3. package/dist/cjs/Admin.js.map +1 -0
  4. package/dist/cjs/App.js +23 -11
  5. package/dist/cjs/App.js.map +1 -0
  6. package/dist/cjs/api.js +125 -65
  7. package/dist/cjs/api.js.map +1 -0
  8. package/dist/cjs/components/Branding.js +10 -8
  9. package/dist/cjs/components/Branding.js.map +1 -0
  10. package/dist/cjs/components/Hamburger.js +23 -11
  11. package/dist/cjs/components/Hamburger.js.map +1 -0
  12. package/dist/cjs/components/Link.js +9 -7
  13. package/dist/cjs/components/Link.js.map +1 -0
  14. package/dist/cjs/components/Logo.js +5 -3
  15. package/dist/cjs/components/Logo.js.map +1 -0
  16. package/dist/cjs/components/NavBar.js +48 -31
  17. package/dist/cjs/components/NavBar.js.map +1 -0
  18. package/dist/cjs/components/NavBarItem.js +16 -14
  19. package/dist/cjs/components/NavBarItem.js.map +1 -0
  20. package/dist/cjs/components/NavBarRoutes.js +23 -18
  21. package/dist/cjs/components/NavBarRoutes.js.map +1 -0
  22. package/dist/cjs/components/ProgressBar.js +5 -3
  23. package/dist/cjs/components/ProgressBar.js.map +1 -0
  24. package/dist/cjs/components/TitleBar.js +18 -17
  25. package/dist/cjs/components/TitleBar.js.map +1 -0
  26. package/dist/cjs/components/User.js +34 -21
  27. package/dist/cjs/components/User.js.map +1 -0
  28. package/dist/cjs/containers/Content.js +8 -6
  29. package/dist/cjs/containers/Content.js.map +1 -0
  30. package/dist/cjs/containers/ErrorScreen.js +21 -19
  31. package/dist/cjs/containers/ErrorScreen.js.map +1 -0
  32. package/dist/cjs/containers/LoadingScreen.js +64 -49
  33. package/dist/cjs/containers/LoadingScreen.js.map +1 -0
  34. package/dist/cjs/containers/PageErrorBoundary.js +33 -14
  35. package/dist/cjs/containers/PageErrorBoundary.js.map +1 -0
  36. package/dist/cjs/containers/PageLoader.js +129 -40
  37. package/dist/cjs/containers/PageLoader.js.map +1 -0
  38. package/dist/cjs/contexts/ApiContext.js +53 -16
  39. package/dist/cjs/contexts/ApiContext.js.map +1 -0
  40. package/dist/cjs/contexts/DialogContext.js +82 -0
  41. package/dist/cjs/contexts/DialogContext.js.map +1 -0
  42. package/dist/cjs/contexts/I18nContext.js +58 -18
  43. package/dist/cjs/contexts/I18nContext.js.map +1 -0
  44. package/dist/cjs/contexts/RouterContext.js +52 -44
  45. package/dist/cjs/contexts/RouterContext.js.map +1 -0
  46. package/dist/cjs/contexts/UserContext.js +96 -43
  47. package/dist/cjs/contexts/UserContext.js.map +1 -0
  48. package/dist/cjs/extensions/bananas/components/PasswordChangeForm.js +45 -32
  49. package/dist/cjs/extensions/bananas/components/PasswordChangeForm.js.map +1 -0
  50. package/dist/cjs/extensions/bananas/index.js +3 -2
  51. package/dist/cjs/extensions/bananas/index.js.map +1 -0
  52. package/dist/cjs/extensions/bananas/pages/me/list.js +10 -9
  53. package/dist/cjs/extensions/bananas/pages/me/list.js.map +1 -0
  54. package/dist/cjs/extensions/fulfillment/components/AddressInfo.js +8 -6
  55. package/dist/cjs/extensions/fulfillment/components/AddressInfo.js.map +1 -0
  56. package/dist/cjs/extensions/fulfillment/components/ContactInfo.js +9 -7
  57. package/dist/cjs/extensions/fulfillment/components/ContactInfo.js.map +1 -0
  58. package/dist/cjs/extensions/fulfillment/components/RecipientCard.js +14 -12
  59. package/dist/cjs/extensions/fulfillment/components/RecipientCard.js.map +1 -0
  60. package/dist/cjs/extensions/fulfillment/components/ShipmentAccordion.js +124 -65
  61. package/dist/cjs/extensions/fulfillment/components/ShipmentAccordion.js.map +1 -0
  62. package/dist/cjs/extensions/fulfillment/components/ShipmentCard.js +19 -17
  63. package/dist/cjs/extensions/fulfillment/components/ShipmentCard.js.map +1 -0
  64. package/dist/cjs/extensions/fulfillment/components/ShipmentDestinationButtons.js +32 -19
  65. package/dist/cjs/extensions/fulfillment/components/ShipmentDestinationButtons.js.map +1 -0
  66. package/dist/cjs/extensions/fulfillment/components/ShipmentDestinationIcon.js +23 -11
  67. package/dist/cjs/extensions/fulfillment/components/ShipmentDestinationIcon.js.map +1 -0
  68. package/dist/cjs/extensions/fulfillment/components/ShipmentItemsCard.js +73 -46
  69. package/dist/cjs/extensions/fulfillment/components/ShipmentItemsCard.js.map +1 -0
  70. package/dist/cjs/extensions/fulfillment/components/ShipmentItemsTable.js +49 -27
  71. package/dist/cjs/extensions/fulfillment/components/ShipmentItemsTable.js.map +1 -0
  72. package/dist/cjs/extensions/fulfillment/components/ShipmentRow.js +12 -10
  73. package/dist/cjs/extensions/fulfillment/components/ShipmentRow.js.map +1 -0
  74. package/dist/cjs/extensions/fulfillment/components/order/OrderAccordion.js +244 -0
  75. package/dist/cjs/extensions/fulfillment/components/order/OrderAccordion.js.map +1 -0
  76. package/dist/cjs/extensions/fulfillment/components/order/OrderItemsTable.js +96 -0
  77. package/dist/cjs/extensions/fulfillment/components/order/OrderItemsTable.js.map +1 -0
  78. package/dist/cjs/extensions/fulfillment/components/order/OrderStateChip.js +98 -0
  79. package/dist/cjs/extensions/fulfillment/components/order/OrderStateChip.js.map +1 -0
  80. package/dist/cjs/extensions/fulfillment/index.js +59 -12
  81. package/dist/cjs/extensions/fulfillment/index.js.map +1 -0
  82. package/dist/cjs/extensions/fulfillment/pages/order/list.js +50 -36
  83. package/dist/cjs/extensions/fulfillment/pages/order/list.js.map +1 -0
  84. package/dist/cjs/extensions/fulfillment/pages/recipient/detail.js +7 -5
  85. package/dist/cjs/extensions/fulfillment/pages/recipient/detail.js.map +1 -0
  86. package/dist/cjs/extensions/fulfillment/pages/shipment/detail.js +57 -42
  87. package/dist/cjs/extensions/fulfillment/pages/shipment/detail.js.map +1 -0
  88. package/dist/cjs/extensions/fulfillment/pages/shipment/list.js +35 -31
  89. package/dist/cjs/extensions/fulfillment/pages/shipment/list.js.map +1 -0
  90. package/dist/cjs/extensions/fulfillment/types/order.js +3 -0
  91. package/dist/cjs/extensions/fulfillment/types/order.js.map +1 -0
  92. package/dist/cjs/extensions/fulfillment/types/recipient.js +1 -0
  93. package/dist/cjs/extensions/fulfillment/types/recipient.js.map +1 -0
  94. package/dist/cjs/extensions/fulfillment/types/shipment.js +1 -0
  95. package/dist/cjs/extensions/fulfillment/types/shipment.js.map +1 -0
  96. package/dist/cjs/extensions/fulfillment/types/util.js +1 -0
  97. package/dist/cjs/extensions/fulfillment/types/util.js.map +1 -0
  98. package/dist/cjs/extensions/pos/components/PurchaseRow.js +13 -11
  99. package/dist/cjs/extensions/pos/components/PurchaseRow.js.map +1 -0
  100. package/dist/cjs/extensions/pos/components/ReceiptCard.js +99 -44
  101. package/dist/cjs/extensions/pos/components/ReceiptCard.js.map +1 -0
  102. package/dist/cjs/extensions/pos/components/ReceiptLine.js +17 -12
  103. package/dist/cjs/extensions/pos/components/ReceiptLine.js.map +1 -0
  104. package/dist/cjs/extensions/pos/components/ReceiptTable.js +168 -43
  105. package/dist/cjs/extensions/pos/components/ReceiptTable.js.map +1 -0
  106. package/dist/cjs/extensions/pos/components/SearchBar.js +40 -25
  107. package/dist/cjs/extensions/pos/components/SearchBar.js.map +1 -0
  108. package/dist/cjs/extensions/pos/index.js +57 -12
  109. package/dist/cjs/extensions/pos/index.js.map +1 -0
  110. package/dist/cjs/extensions/pos/pages/purchase/detail.js +31 -20
  111. package/dist/cjs/extensions/pos/pages/purchase/detail.js.map +1 -0
  112. package/dist/cjs/extensions/pos/pages/purchase/list.js +39 -32
  113. package/dist/cjs/extensions/pos/pages/purchase/list.js.map +1 -0
  114. package/dist/cjs/extensions/pos/types/purchase.js +1 -0
  115. package/dist/cjs/extensions/pos/types/purchase.js.map +1 -0
  116. package/dist/cjs/extensions/pos/types/receipt.js +8 -0
  117. package/dist/cjs/extensions/pos/types/receipt.js.map +1 -0
  118. package/dist/cjs/forms/LoginForm.js +31 -30
  119. package/dist/cjs/forms/LoginForm.js.map +1 -0
  120. package/dist/cjs/hooks/useAsyncError.js +5 -4
  121. package/dist/cjs/hooks/useAsyncError.js.map +1 -0
  122. package/dist/cjs/hooks/useLocalStorage.js +8 -7
  123. package/dist/cjs/hooks/useLocalStorage.js.map +1 -0
  124. package/dist/cjs/index.js +1 -0
  125. package/dist/cjs/index.js.map +1 -0
  126. package/dist/cjs/pages/DashboardPage.js +4 -3
  127. package/dist/cjs/pages/DashboardPage.js.map +1 -0
  128. package/dist/cjs/pages/LoginPage.js +12 -10
  129. package/dist/cjs/pages/LoginPage.js.map +1 -0
  130. package/dist/cjs/router/Router.js +25 -19
  131. package/dist/cjs/router/Router.js.map +1 -0
  132. package/dist/cjs/router/routes.js +8 -7
  133. package/dist/cjs/router/routes.js.map +1 -0
  134. package/dist/cjs/types/index.js +1 -0
  135. package/dist/cjs/types/index.js.map +1 -0
  136. package/dist/cjs/util/format_purchase_number.js +2 -1
  137. package/dist/cjs/util/format_purchase_number.js.map +1 -0
  138. package/dist/cjs/util/get_cookie.js +4 -3
  139. package/dist/cjs/util/get_cookie.js.map +1 -0
  140. package/dist/cjs/util/index.js +10 -7
  141. package/dist/cjs/util/index.js.map +1 -0
  142. package/dist/cjs/util/is_email.js +1 -0
  143. package/dist/cjs/util/is_email.js.map +1 -0
  144. package/dist/cjs/util/is_positive_integer.js +2 -1
  145. package/dist/cjs/util/is_positive_integer.js.map +1 -0
  146. package/dist/cjs/util/select_styles.js +24 -7
  147. package/dist/cjs/util/select_styles.js.map +1 -0
  148. package/dist/esm/Admin.js +20 -16
  149. package/dist/esm/Admin.js.map +1 -0
  150. package/dist/esm/App.js +15 -3
  151. package/dist/esm/App.js.map +1 -0
  152. package/dist/esm/api.js +125 -63
  153. package/dist/esm/api.js.map +1 -0
  154. package/dist/esm/components/Branding.js +4 -2
  155. package/dist/esm/components/Branding.js.map +1 -0
  156. package/dist/esm/components/Hamburger.js +17 -5
  157. package/dist/esm/components/Hamburger.js.map +1 -0
  158. package/dist/esm/components/Link.js +6 -4
  159. package/dist/esm/components/Link.js.map +1 -0
  160. package/dist/esm/components/Logo.js +4 -2
  161. package/dist/esm/components/Logo.js.map +1 -0
  162. package/dist/esm/components/NavBar.js +38 -21
  163. package/dist/esm/components/NavBar.js.map +1 -0
  164. package/dist/esm/components/NavBarItem.js +8 -6
  165. package/dist/esm/components/NavBarItem.js.map +1 -0
  166. package/dist/esm/components/NavBarRoutes.js +19 -14
  167. package/dist/esm/components/NavBarRoutes.js.map +1 -0
  168. package/dist/esm/components/ProgressBar.js +3 -1
  169. package/dist/esm/components/ProgressBar.js.map +1 -0
  170. package/dist/esm/components/TitleBar.js +9 -8
  171. package/dist/esm/components/TitleBar.js.map +1 -0
  172. package/dist/esm/components/User.js +24 -11
  173. package/dist/esm/components/User.js.map +1 -0
  174. package/dist/esm/containers/Content.js +5 -3
  175. package/dist/esm/containers/Content.js.map +1 -0
  176. package/dist/esm/containers/ErrorScreen.js +10 -8
  177. package/dist/esm/containers/ErrorScreen.js.map +1 -0
  178. package/dist/esm/containers/LoadingScreen.js +56 -41
  179. package/dist/esm/containers/LoadingScreen.js.map +1 -0
  180. package/dist/esm/containers/PageErrorBoundary.js +33 -13
  181. package/dist/esm/containers/PageErrorBoundary.js.map +1 -0
  182. package/dist/esm/containers/PageLoader.js +124 -34
  183. package/dist/esm/containers/PageLoader.js.map +1 -0
  184. package/dist/esm/contexts/ApiContext.js +49 -12
  185. package/dist/esm/contexts/ApiContext.js.map +1 -0
  186. package/dist/esm/contexts/DialogContext.js +51 -0
  187. package/dist/esm/contexts/DialogContext.js.map +1 -0
  188. package/dist/esm/contexts/I18nContext.js +55 -15
  189. package/dist/esm/contexts/I18nContext.js.map +1 -0
  190. package/dist/esm/contexts/RouterContext.js +47 -39
  191. package/dist/esm/contexts/RouterContext.js.map +1 -0
  192. package/dist/esm/contexts/UserContext.js +93 -40
  193. package/dist/esm/contexts/UserContext.js.map +1 -0
  194. package/dist/esm/extensions/bananas/components/PasswordChangeForm.js +32 -19
  195. package/dist/esm/extensions/bananas/components/PasswordChangeForm.js.map +1 -0
  196. package/dist/esm/extensions/bananas/index.js +3 -2
  197. package/dist/esm/extensions/bananas/index.js.map +1 -0
  198. package/dist/esm/extensions/bananas/pages/me/list.js +3 -2
  199. package/dist/esm/extensions/bananas/pages/me/list.js.map +1 -0
  200. package/dist/esm/extensions/fulfillment/components/AddressInfo.js +5 -3
  201. package/dist/esm/extensions/fulfillment/components/AddressInfo.js.map +1 -0
  202. package/dist/esm/extensions/fulfillment/components/ContactInfo.js +5 -3
  203. package/dist/esm/extensions/fulfillment/components/ContactInfo.js.map +1 -0
  204. package/dist/esm/extensions/fulfillment/components/RecipientCard.js +6 -4
  205. package/dist/esm/extensions/fulfillment/components/RecipientCard.js.map +1 -0
  206. package/dist/esm/extensions/fulfillment/components/ShipmentAccordion.js +109 -50
  207. package/dist/esm/extensions/fulfillment/components/ShipmentAccordion.js.map +1 -0
  208. package/dist/esm/extensions/fulfillment/components/ShipmentCard.js +8 -6
  209. package/dist/esm/extensions/fulfillment/components/ShipmentCard.js.map +1 -0
  210. package/dist/esm/extensions/fulfillment/components/ShipmentDestinationButtons.js +27 -14
  211. package/dist/esm/extensions/fulfillment/components/ShipmentDestinationButtons.js.map +1 -0
  212. package/dist/esm/extensions/fulfillment/components/ShipmentDestinationIcon.js +18 -6
  213. package/dist/esm/extensions/fulfillment/components/ShipmentDestinationIcon.js.map +1 -0
  214. package/dist/esm/extensions/fulfillment/components/ShipmentItemsCard.js +54 -27
  215. package/dist/esm/extensions/fulfillment/components/ShipmentItemsCard.js.map +1 -0
  216. package/dist/esm/extensions/fulfillment/components/ShipmentItemsTable.js +40 -18
  217. package/dist/esm/extensions/fulfillment/components/ShipmentItemsTable.js.map +1 -0
  218. package/dist/esm/extensions/fulfillment/components/ShipmentRow.js +8 -6
  219. package/dist/esm/extensions/fulfillment/components/ShipmentRow.js.map +1 -0
  220. package/dist/esm/extensions/fulfillment/components/order/OrderAccordion.js +239 -0
  221. package/dist/esm/extensions/fulfillment/components/order/OrderAccordion.js.map +1 -0
  222. package/dist/esm/extensions/fulfillment/components/order/OrderItemsTable.js +91 -0
  223. package/dist/esm/extensions/fulfillment/components/order/OrderItemsTable.js.map +1 -0
  224. package/dist/esm/extensions/fulfillment/components/order/OrderStateChip.js +70 -0
  225. package/dist/esm/extensions/fulfillment/components/order/OrderStateChip.js.map +1 -0
  226. package/dist/esm/extensions/fulfillment/index.js +61 -14
  227. package/dist/esm/extensions/fulfillment/index.js.map +1 -0
  228. package/dist/esm/extensions/fulfillment/pages/order/list.js +40 -26
  229. package/dist/esm/extensions/fulfillment/pages/order/list.js.map +1 -0
  230. package/dist/esm/extensions/fulfillment/pages/recipient/detail.js +4 -2
  231. package/dist/esm/extensions/fulfillment/pages/recipient/detail.js.map +1 -0
  232. package/dist/esm/extensions/fulfillment/pages/shipment/detail.js +38 -23
  233. package/dist/esm/extensions/fulfillment/pages/shipment/detail.js.map +1 -0
  234. package/dist/esm/extensions/fulfillment/pages/shipment/list.js +24 -20
  235. package/dist/esm/extensions/fulfillment/pages/shipment/list.js.map +1 -0
  236. package/dist/esm/extensions/fulfillment/types/order.js +2 -0
  237. package/dist/esm/extensions/fulfillment/types/order.js.map +1 -0
  238. package/dist/esm/extensions/fulfillment/types/recipient.js +1 -0
  239. package/dist/esm/extensions/fulfillment/types/recipient.js.map +1 -0
  240. package/dist/esm/extensions/fulfillment/types/shipment.js +1 -0
  241. package/dist/esm/extensions/fulfillment/types/shipment.js.map +1 -0
  242. package/dist/esm/extensions/fulfillment/types/util.js +1 -0
  243. package/dist/esm/extensions/fulfillment/types/util.js.map +1 -0
  244. package/dist/esm/extensions/pos/components/PurchaseRow.js +8 -6
  245. package/dist/esm/extensions/pos/components/PurchaseRow.js.map +1 -0
  246. package/dist/esm/extensions/pos/components/ReceiptCard.js +83 -28
  247. package/dist/esm/extensions/pos/components/ReceiptCard.js.map +1 -0
  248. package/dist/esm/extensions/pos/components/ReceiptLine.js +11 -6
  249. package/dist/esm/extensions/pos/components/ReceiptLine.js.map +1 -0
  250. package/dist/esm/extensions/pos/components/ReceiptTable.js +159 -34
  251. package/dist/esm/extensions/pos/components/ReceiptTable.js.map +1 -0
  252. package/dist/esm/extensions/pos/components/SearchBar.js +28 -13
  253. package/dist/esm/extensions/pos/components/SearchBar.js.map +1 -0
  254. package/dist/esm/extensions/pos/index.js +58 -13
  255. package/dist/esm/extensions/pos/index.js.map +1 -0
  256. package/dist/esm/extensions/pos/pages/purchase/detail.js +23 -12
  257. package/dist/esm/extensions/pos/pages/purchase/detail.js.map +1 -0
  258. package/dist/esm/extensions/pos/pages/purchase/list.js +23 -16
  259. package/dist/esm/extensions/pos/pages/purchase/list.js.map +1 -0
  260. package/dist/esm/extensions/pos/types/purchase.js +1 -0
  261. package/dist/esm/extensions/pos/types/purchase.js.map +1 -0
  262. package/dist/esm/extensions/pos/types/receipt.js +7 -1
  263. package/dist/esm/extensions/pos/types/receipt.js.map +1 -0
  264. package/dist/esm/forms/LoginForm.js +19 -18
  265. package/dist/esm/forms/LoginForm.js.map +1 -0
  266. package/dist/esm/hooks/useAsyncError.js +4 -3
  267. package/dist/esm/hooks/useAsyncError.js.map +1 -0
  268. package/dist/esm/hooks/useLocalStorage.js +7 -6
  269. package/dist/esm/hooks/useLocalStorage.js.map +1 -0
  270. package/dist/esm/index.js +1 -0
  271. package/dist/esm/index.js.map +1 -0
  272. package/dist/esm/pages/DashboardPage.js +3 -2
  273. package/dist/esm/pages/DashboardPage.js.map +1 -0
  274. package/dist/esm/pages/LoginPage.js +5 -3
  275. package/dist/esm/pages/LoginPage.js.map +1 -0
  276. package/dist/esm/router/Router.js +17 -11
  277. package/dist/esm/router/Router.js.map +1 -0
  278. package/dist/esm/router/routes.js +7 -6
  279. package/dist/esm/router/routes.js.map +1 -0
  280. package/dist/esm/types/index.js +1 -0
  281. package/dist/esm/types/index.js.map +1 -0
  282. package/dist/esm/util/format_purchase_number.js +2 -1
  283. package/dist/esm/util/format_purchase_number.js.map +1 -0
  284. package/dist/esm/util/get_cookie.js +4 -3
  285. package/dist/esm/util/get_cookie.js.map +1 -0
  286. package/dist/esm/util/index.js +10 -7
  287. package/dist/esm/util/index.js.map +1 -0
  288. package/dist/esm/util/is_email.js +1 -0
  289. package/dist/esm/util/is_email.js.map +1 -0
  290. package/dist/esm/util/is_positive_integer.js +2 -1
  291. package/dist/esm/util/is_positive_integer.js.map +1 -0
  292. package/dist/esm/util/select_styles.js +25 -8
  293. package/dist/esm/util/select_styles.js.map +1 -0
  294. package/dist/types/Admin.d.ts +1 -1
  295. package/dist/types/App.d.ts +1 -1
  296. package/dist/types/components/Hamburger.d.ts +1 -1
  297. package/dist/types/components/Link.d.ts +1 -1
  298. package/dist/types/components/User.d.ts +4 -7
  299. package/dist/types/containers/PageErrorBoundary.d.ts +1 -1
  300. package/dist/types/containers/PageLoader.d.ts +1 -0
  301. package/dist/types/contexts/DialogContext.d.ts +7 -0
  302. package/dist/types/contexts/RouterContext.d.ts +2 -2
  303. package/dist/types/extensions/fulfillment/components/ShipmentDestinationIcon.d.ts +1 -1
  304. package/dist/types/extensions/fulfillment/components/order/OrderAccordion.d.ts +7 -0
  305. package/dist/types/extensions/fulfillment/components/order/OrderItemsTable.d.ts +9 -0
  306. package/dist/types/extensions/fulfillment/components/order/OrderStateChip.d.ts +10 -0
  307. package/dist/types/extensions/fulfillment/pages/order/list.d.ts +2 -2
  308. package/dist/types/extensions/fulfillment/types/order.d.ts +38 -0
  309. package/dist/types/extensions/fulfillment/types/shipment.d.ts +1 -1
  310. package/dist/types/extensions/pos/components/PurchaseRow.d.ts +2 -2
  311. package/dist/types/extensions/pos/components/ReceiptCard.d.ts +3 -3
  312. package/dist/types/extensions/pos/components/ReceiptLine.d.ts +1 -0
  313. package/dist/types/extensions/pos/components/ReceiptTable.d.ts +4 -3
  314. package/dist/types/extensions/pos/components/SearchBar.d.ts +1 -1
  315. package/dist/types/extensions/pos/pages/purchase/list.d.ts +2 -2
  316. package/dist/types/extensions/pos/types/purchase.d.ts +32 -6
  317. package/dist/types/extensions/pos/types/receipt.d.ts +7 -9
  318. package/dist/types/router/Router.d.ts +2 -1
  319. package/dist/types/types/index.d.ts +7 -4
  320. package/example/index.tsx +28 -9
  321. package/example/package-lock.json +7906 -1003
  322. package/example/package.json +18 -8
  323. package/example/scripts/build.js +4 -0
  324. package/example/scripts/options.js +81 -0
  325. package/{example/pages/.gitkeep → nodemon.json} +0 -0
  326. package/package.json +8 -4
  327. package/src/Admin.tsx +31 -27
  328. package/src/App.tsx +8 -4
  329. package/src/components/TitleBar.tsx +23 -18
  330. package/src/containers/Content.tsx +1 -1
  331. package/src/containers/PageLoader.tsx +32 -14
  332. package/src/contexts/DialogContext.tsx +76 -0
  333. package/src/contexts/UserContext.tsx +15 -14
  334. package/src/extensions/fulfillment/components/ShipmentAccordion.tsx +126 -116
  335. package/src/extensions/fulfillment/components/ShipmentCard.tsx +3 -9
  336. package/src/extensions/fulfillment/components/ShipmentItemsCard.tsx +42 -45
  337. package/src/extensions/fulfillment/components/order/OrderAccordion.tsx +231 -0
  338. package/src/extensions/fulfillment/components/order/OrderItemsTable.tsx +128 -0
  339. package/src/extensions/fulfillment/components/order/OrderStateChip.tsx +79 -0
  340. package/src/extensions/fulfillment/index.tsx +27 -9
  341. package/src/extensions/fulfillment/pages/order/list.tsx +43 -54
  342. package/src/extensions/fulfillment/pages/shipment/detail.tsx +47 -55
  343. package/src/extensions/fulfillment/types/order.ts +53 -0
  344. package/src/extensions/pos/components/PurchaseRow.tsx +3 -5
  345. package/src/extensions/pos/components/ReceiptCard.tsx +92 -46
  346. package/src/extensions/pos/components/ReceiptLine.tsx +6 -5
  347. package/src/extensions/pos/components/ReceiptTable.tsx +214 -73
  348. package/src/extensions/pos/index.tsx +3 -3
  349. package/src/extensions/pos/pages/purchase/detail.tsx +28 -33
  350. package/src/extensions/pos/pages/purchase/list.tsx +14 -20
  351. package/src/extensions/pos/types/purchase.ts +33 -6
  352. package/src/extensions/pos/types/receipt.ts +8 -9
  353. package/src/pages/DashboardPage.tsx +1 -1
  354. package/src/router/Router.tsx +14 -15
  355. package/src/types/index.ts +4 -1
  356. package/tsconfig.json +5 -13
  357. package/example/Dockerfile +0 -27
  358. package/example/README.md +0 -6
  359. package/example/build.js +0 -19
  360. package/example/docker-compose.yml +0 -7
  361. package/example/public/index.html +0 -14
@@ -0,0 +1,231 @@
1
+ import React from "react";
2
+
3
+ import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
4
+ import Accordion from "@mui/material/Accordion";
5
+ import AccordionActions from "@mui/material/AccordionActions";
6
+ import AccordionDetails from "@mui/material/AccordionDetails";
7
+ import AccordionSummary from "@mui/material/AccordionSummary";
8
+ import Button from "@mui/material/Button";
9
+ import CircularProgress from "@mui/material/CircularProgress";
10
+ import Typography from "@mui/material/Typography";
11
+
12
+ import { useApi } from "../../../../contexts/ApiContext";
13
+ import { formatPurchaseNumber } from "../../../../util/format_purchase_number";
14
+ import OrderItemsTable from "./OrderItemsTable";
15
+ import { useSnackbar } from "notistack";
16
+ import { LoadingButton, LoadingButtonProps } from "@mui/lab";
17
+ import { OrderDetail, OrderItem, OrderListItem } from "../../types/order";
18
+ import OrderStateChip from "./OrderStateChip";
19
+ import { useDialog } from "../../../../contexts/DialogContext";
20
+
21
+ interface OrderAccordionProps {
22
+ order: OrderListItem;
23
+ }
24
+
25
+ const OrderAccordion: React.FC<OrderAccordionProps> = ({ order }) => {
26
+ const api = useApi();
27
+ const { enqueueSnackbar } = useSnackbar();
28
+ const [details, setDetails] = React.useState<OrderDetail | null>(null);
29
+ const [buttonsLoading, setButtonsLoading] = React.useState(false);
30
+ const [selected, setSelected] = React.useState<OrderItem[]>([]);
31
+ const title = [
32
+ formatPurchaseNumber(order.purchase_number),
33
+ order.name,
34
+ order.email,
35
+ order.phone,
36
+ ]
37
+ .filter((entry) => entry != null)
38
+ .join(" • ");
39
+
40
+ const loadDetails = () => {
41
+ setDetails(null);
42
+ api.operations["fulfillment.order:detail"]
43
+ .call({
44
+ params: {
45
+ shipment_reference: order.shipment_reference,
46
+ },
47
+ })
48
+ .then(async (response) => setDetails(await response.json()));
49
+ };
50
+
51
+ const openDialog = useDialog();
52
+
53
+ const markAsArrived = async () => {
54
+ if (
55
+ !(await openDialog(
56
+ "Are you sure?",
57
+ "This will notify the customer that the order is ready for pick up"
58
+ ))
59
+ ) {
60
+ return;
61
+ }
62
+ setButtonsLoading(true);
63
+ api.operations["fulfillment.shipment:arrived"]
64
+ .call({
65
+ params: { shipment_reference: order.shipment_reference },
66
+ body: selected,
67
+ })
68
+ .then((response) => {
69
+ if (response.ok) {
70
+ enqueueSnackbar("Order is now ready for pickup", {
71
+ variant: "success",
72
+ });
73
+ } else {
74
+ enqueueSnackbar("Failed to mark order as ready for pickup", {
75
+ variant: "error",
76
+ });
77
+ throw response;
78
+ }
79
+ })
80
+ .finally(() => {
81
+ setButtonsLoading(false);
82
+ loadDetails();
83
+ });
84
+ };
85
+
86
+ const markAsDelivered = async () => {
87
+ if (
88
+ !(await openDialog(
89
+ "Are you sure?",
90
+ "This will mark the order as delivered"
91
+ ))
92
+ ) {
93
+ return;
94
+ }
95
+ setButtonsLoading(true);
96
+ api.operations["fulfillment.shipment:delivered"]
97
+ .call({
98
+ params: { shipment_reference: order.shipment_reference },
99
+ })
100
+ .then((response) => {
101
+ if (response.ok) {
102
+ enqueueSnackbar("Successfully marked order as delivered", {
103
+ variant: "success",
104
+ });
105
+ } else {
106
+ enqueueSnackbar("Failed to mark order as delivered", {
107
+ variant: "error",
108
+ });
109
+ throw response;
110
+ }
111
+ })
112
+ .finally(() => {
113
+ setButtonsLoading(false);
114
+ loadDetails();
115
+ });
116
+ };
117
+
118
+ const doCancel = async () => {
119
+ if (
120
+ !(await openDialog(
121
+ "Are you sure?",
122
+ "This will fully cancel the order and release the authorized payment back to the customer"
123
+ ))
124
+ ) {
125
+ return;
126
+ }
127
+ api.operations["fulfillment.shipment:cancel"]
128
+ .call({
129
+ params: { shipment_reference: order.shipment_reference },
130
+ })
131
+ .then((response) => {
132
+ if (response.ok) {
133
+ enqueueSnackbar("Order cancelled", {
134
+ variant: "success",
135
+ });
136
+ } else {
137
+ enqueueSnackbar("Failed to cancel order", {
138
+ variant: "error",
139
+ });
140
+ throw response;
141
+ }
142
+ })
143
+ .finally(() => {
144
+ setButtonsLoading(false);
145
+ loadDetails();
146
+ });
147
+ };
148
+
149
+ const StatusButton = () => {
150
+ if (!details) {
151
+ return null;
152
+ }
153
+
154
+ const props: LoadingButtonProps = {
155
+ variant: "contained",
156
+ color: "secondary",
157
+ loading: buttonsLoading,
158
+ disabled: buttonsLoading,
159
+ };
160
+
161
+ if (["DELIVERED", "CANCELLED"].includes(details.state)) {
162
+ return null;
163
+ }
164
+
165
+ if (details.state === "PENDING") {
166
+ props.disabled ||= selected.length === 0;
167
+ return (
168
+ <LoadingButton {...props} onClick={markAsArrived}>
169
+ Ready for pickup
170
+ </LoadingButton>
171
+ );
172
+ }
173
+
174
+ if (["IN_TRANSIT", "READY_FOR_PICKUP", "SENT"].includes(details.state)) {
175
+ return (
176
+ <LoadingButton {...props} onClick={markAsDelivered}>
177
+ Delivered
178
+ </LoadingButton>
179
+ );
180
+ }
181
+
182
+ return null;
183
+ };
184
+
185
+ return (
186
+ <Accordion onChange={() => (details == null ? loadDetails() : void 0)}>
187
+ <AccordionSummary sx={{ margin: 1 }} expandIcon={<ExpandMoreIcon />}>
188
+ {/* TODO: Re-enable when we implement some kind of bulk update thing
189
+ <Checkbox
190
+ color="secondary"
191
+ onClick={(event) => event.stopPropagation()}
192
+ />
193
+ */}
194
+ <Typography sx={{ marginY: "auto", flexGrow: 1 }}>{title}</Typography>
195
+ <OrderStateChip sx={{ marginRight: 2 }} element={details ?? order} />
196
+ </AccordionSummary>
197
+ {details != null ? (
198
+ <>
199
+ <AccordionDetails>
200
+ <OrderItemsTable
201
+ items={details.items}
202
+ editable={details.state === "PENDING"}
203
+ onSelect={setSelected}
204
+ />
205
+ </AccordionDetails>
206
+ <AccordionActions>
207
+ {details.state === "PENDING" ? (
208
+ <Button variant="outlined" color="error" onClick={doCancel}>
209
+ Cancel order
210
+ </Button>
211
+ ) : null}
212
+ <StatusButton />
213
+ </AccordionActions>
214
+ </>
215
+ ) : (
216
+ <AccordionDetails
217
+ sx={{
218
+ display: "flex",
219
+ justifyContent: "center",
220
+ alignItems: "center",
221
+ minHeight: 100,
222
+ }}
223
+ >
224
+ <CircularProgress color="secondary" />
225
+ </AccordionDetails>
226
+ )}
227
+ </Accordion>
228
+ );
229
+ };
230
+
231
+ export default OrderAccordion;
@@ -0,0 +1,128 @@
1
+ import React from "react";
2
+
3
+ import Checkbox from "@mui/material/Checkbox";
4
+ import Input from "@mui/material/Input";
5
+ import Table from "@mui/material/Table";
6
+ import TableBody from "@mui/material/TableBody";
7
+ import TableCell from "@mui/material/TableCell";
8
+ import TableContainer from "@mui/material/TableContainer";
9
+ import TableHead from "@mui/material/TableHead";
10
+ import TableRow from "@mui/material/TableRow";
11
+ import { OrderItem } from "../../types/order";
12
+
13
+ export interface ShipmentItemsTableProps {
14
+ items: OrderItem[];
15
+ editable?: boolean;
16
+ onSelect?: (selected: OrderItem[]) => void;
17
+ }
18
+
19
+ const ShipmentItemsTable: React.FC<ShipmentItemsTableProps> = ({
20
+ items,
21
+ editable,
22
+ onSelect,
23
+ }) => {
24
+ const [selected, setSelected] = React.useState<OrderItem[]>([]);
25
+
26
+ const toggleSelectAll = (
27
+ _: React.ChangeEvent<HTMLInputElement>,
28
+ checked: boolean
29
+ ) => {
30
+ setSelected(checked ? items : []);
31
+ };
32
+
33
+ const toggleItem = (item: OrderItem, checked: boolean) => {
34
+ const index = selected.map(({ code }) => code).indexOf(item.code);
35
+
36
+ if (checked && index === -1) {
37
+ setSelected([...selected, item]);
38
+ } else {
39
+ const unselected = [...selected];
40
+ unselected.splice(index, 1);
41
+ setSelected(unselected);
42
+ }
43
+ };
44
+
45
+ const itemQuantityChange = (item: OrderItem) => {
46
+ const index = selected.map(({ code }) => code).indexOf(item.code);
47
+ const changed = [...selected];
48
+ changed[index] = item;
49
+ setSelected(changed);
50
+ };
51
+
52
+ React.useEffect(() => {
53
+ if (onSelect !== undefined) {
54
+ onSelect(selected);
55
+ }
56
+ }, [onSelect, selected]);
57
+
58
+ return (
59
+ <TableContainer>
60
+ <Table>
61
+ <TableHead>
62
+ <TableRow>
63
+ {editable ? (
64
+ <TableCell align="left" padding="checkbox">
65
+ <Checkbox
66
+ color="secondary"
67
+ indeterminate={
68
+ selected.length > 0 && selected.length < items.length
69
+ }
70
+ checked={
71
+ items.length !== 0 && selected.length === items.length
72
+ }
73
+ onChange={toggleSelectAll}
74
+ disabled={items.length === 0}
75
+ />
76
+ </TableCell>
77
+ ) : null}
78
+ <TableCell align="left">Name</TableCell>
79
+ <TableCell align="left">Reference</TableCell>
80
+ <TableCell align="right">Quantity</TableCell>
81
+ </TableRow>
82
+ </TableHead>
83
+ <TableBody>
84
+ {items.map((item) => {
85
+ const isSelected = selected
86
+ .map(({ code }) => code)
87
+ .includes(item.code);
88
+ return (
89
+ <TableRow key={item.code}>
90
+ {editable ? (
91
+ <TableCell align="left" padding="checkbox">
92
+ <Checkbox
93
+ color="secondary"
94
+ checked={isSelected}
95
+ onChange={(_, checked) => toggleItem(item, checked)}
96
+ />
97
+ </TableCell>
98
+ ) : null}
99
+ <TableCell align="left">{item.name}</TableCell>
100
+ <TableCell align="left">{item.code}</TableCell>
101
+ <TableCell align="right">
102
+ {editable ? (
103
+ <Input
104
+ type="number"
105
+ defaultValue={item.quantity}
106
+ inputProps={{ min: 0, max: item.quantity }}
107
+ disabled={!isSelected}
108
+ onChange={(event) =>
109
+ itemQuantityChange({
110
+ ...item,
111
+ quantity: parseInt(event.target.value),
112
+ })
113
+ }
114
+ />
115
+ ) : (
116
+ item.quantity
117
+ )}
118
+ </TableCell>
119
+ </TableRow>
120
+ );
121
+ })}
122
+ </TableBody>
123
+ </Table>
124
+ </TableContainer>
125
+ );
126
+ };
127
+
128
+ export default ShipmentItemsTable;
@@ -0,0 +1,79 @@
1
+ import {
2
+ Cancel,
3
+ CheckCircle,
4
+ LocalShipping,
5
+ NewReleases,
6
+ VolunteerActivism,
7
+ } from "@mui/icons-material";
8
+ import Chip, { ChipProps } from "@mui/material/Chip";
9
+ import useTheme from "@mui/material/styles/useTheme";
10
+ import React, { useMemo } from "react";
11
+ import { OrderStateType } from "../../types/order";
12
+
13
+ type OrderStateChipProps<T> = {
14
+ element: T;
15
+ } & ChipProps;
16
+
17
+ const OrderStateChip = <T extends { state: OrderStateType }>(
18
+ props: OrderStateChipProps<T>
19
+ ) => {
20
+ const theme = useTheme();
21
+ const {
22
+ element: { state },
23
+ ...rest
24
+ } = props;
25
+
26
+ const color = useMemo(() => {
27
+ const colorMap: Record<OrderStateType, ChipProps["color"]> = {
28
+ PENDING: "default",
29
+ CANCELLED: "error",
30
+ CONFIRMED: "info",
31
+ SENT: "info",
32
+ IN_TRANSIT: "info",
33
+ READY_FOR_PICKUP: "primary",
34
+ DELIVERED: "success",
35
+ };
36
+
37
+ return colorMap[state];
38
+ }, [state, theme]);
39
+
40
+ const label = useMemo(() => {
41
+ const labelMap: Record<OrderStateType, string> = {
42
+ PENDING: "NEW",
43
+ CANCELLED: "CANCELLED",
44
+ CONFIRMED: "CONFIRMED",
45
+ SENT: "SENT",
46
+ IN_TRANSIT: "IN TRANSIT",
47
+ READY_FOR_PICKUP: "READY FOR PICKUP",
48
+ DELIVERED: "DELIVERED",
49
+ };
50
+
51
+ return labelMap[state];
52
+ }, [state, theme]);
53
+
54
+ const icon = useMemo(() => {
55
+ const iconMap: Record<OrderStateType, JSX.Element> = {
56
+ PENDING: <NewReleases fontSize="small" />,
57
+ CANCELLED: <Cancel fontSize="small" />,
58
+ CONFIRMED: <CheckCircle fontSize="small" />,
59
+ SENT: <LocalShipping fontSize="small" />,
60
+ IN_TRANSIT: <LocalShipping fontSize="small" />,
61
+ READY_FOR_PICKUP: <VolunteerActivism fontSize="small" />,
62
+ DELIVERED: <CheckCircle fontSize="small" />,
63
+ };
64
+
65
+ return iconMap[state];
66
+ }, [state, theme]);
67
+
68
+ return (
69
+ <Chip
70
+ {...rest}
71
+ sx={{ ...(rest.sx ?? {}), paddingLeft: 0.75 }}
72
+ label={label}
73
+ color={color}
74
+ icon={icon}
75
+ />
76
+ );
77
+ };
78
+
79
+ export default OrderStateChip;
@@ -1,6 +1,6 @@
1
1
  import { OpenAPI } from "openapi-types";
2
2
 
3
- import LocalShippingOutlinedIcon from "@mui/icons-material/LocalShippingOutlined";
3
+ import StoreIcon from "@mui/icons-material/Store";
4
4
 
5
5
  import { RouterExtension } from "../../router/Router";
6
6
  import { NavOverrides, PageComponent } from "../../types";
@@ -9,13 +9,27 @@ const routes: Record<
9
9
  string,
10
10
  Record<
11
11
  string,
12
- { page: () => Promise<PageComponent<any>>; request?: OpenAPI.Request }
12
+ {
13
+ page: () => Promise<PageComponent<any>>;
14
+ request?: OpenAPI.Request;
15
+ defaultRequest?: OpenAPI.Request;
16
+ }
13
17
  >
14
18
  > = {
15
- "shipment": {
16
- "list": {
19
+ order: {
20
+ list: {
17
21
  page: async () => (await import("./pages/order/list")).default,
18
- request: { query: { destination_type: "STORE" } },
22
+ request: {
23
+ query: {
24
+ has_shipment: "false",
25
+ destination_type: "STORE",
26
+ },
27
+ },
28
+ defaultRequest: {
29
+ query: {
30
+ state: "PENDING",
31
+ },
32
+ },
19
33
  },
20
34
  },
21
35
  // "recipient": {
@@ -29,7 +43,11 @@ export const router: RouterExtension = {
29
43
  const hit = routes[route.view]?.[route.action];
30
44
 
31
45
  if (hit?.page != null) {
32
- return { page: hit.page(), request: hit.request };
46
+ return {
47
+ page: hit.page(),
48
+ request: hit.request,
49
+ defaultRequest: hit.defaultRequest,
50
+ };
33
51
  }
34
52
 
35
53
  return undefined;
@@ -37,8 +55,8 @@ export const router: RouterExtension = {
37
55
  };
38
56
 
39
57
  export const navigation: NavOverrides = {
40
- "fulfillment.shipment:list": {
41
- icon: LocalShippingOutlinedIcon,
42
- title: "Orders",
58
+ "fulfillment.order:list": {
59
+ icon: StoreIcon,
60
+ title: "Store Orders",
43
61
  },
44
62
  } as const;
@@ -1,59 +1,43 @@
1
1
  import React from "react";
2
2
 
3
- import HomeOutlinedIcon from "@mui/icons-material/HomeOutlined";
4
- import StoreOutlinedIcon from "@mui/icons-material/StoreOutlined";
5
- import ButtonGroup from "@mui/material/ButtonGroup";
6
3
  import Grid from "@mui/material/Grid";
7
4
  import Stack from "@mui/material/Stack";
8
5
  import { useTheme } from "@mui/material/styles";
9
6
  import Tab from "@mui/material/Tab";
10
7
  import Tabs from "@mui/material/Tabs";
11
- import ToggleButton from "@mui/material/ToggleButton";
12
- import ToggleButtonGroup from "@mui/material/ToggleButtonGroup";
13
- import Box from "@mui/system/Box";
14
8
 
15
9
  import { TitleBar } from "../../../../components/TitleBar";
16
10
  import Content from "../../../../containers/Content";
17
11
  import { useRouter } from "../../../../contexts/RouterContext";
18
12
  import { PageComponent } from "../../../../types";
19
13
  import { SearchBar, SearchInput } from "../../../pos/components/SearchBar";
20
- import { ShipmentAccordion } from "../../components/ShipmentAccordion";
21
- import { ShipmentListItem } from "../../types/shipment";
22
14
  import { LimitOffset } from "../../types/util";
15
+ import { useSearchParams } from "react-router-dom";
16
+ import { Typography } from "@mui/material";
17
+ import OrderAccordion from "../../components/order/OrderAccordion";
18
+ import { OrderListItem } from "../../types/order";
23
19
 
24
- const ShipmentListPage: PageComponent<LimitOffset<ShipmentListItem>> = (
25
- {
26
- data: {
27
- next: _next,
28
- previous: _previous,
29
- results,
30
- },
31
- },
32
- ) => {
20
+ const ShipmentListPage: PageComponent<LimitOffset<OrderListItem>> = ({
21
+ data: { next: _next, previous: _previous, results },
22
+ }) => {
33
23
  const theme = useTheme();
34
- const { navigate, getCurrent } = useRouter();
24
+ const { navigate } = useRouter();
35
25
  const searchParams = new URLSearchParams(location.search);
36
- const [filterOnReady, setFilterOnReady] = React.useState<
37
- "NOT_PACKED" | "READY_FOR_PICKUP"
38
- >("NOT_PACKED");
39
- const [searchInputs, setSearchInputs] = React.useState<SearchInput[]>(
40
- [
41
- ...searchParams.getAll("email").map((v) => ({ "email": v })),
42
- ...searchParams.getAll("phone").map((v) => ({ "phone": v })),
43
- ...searchParams.getAll("purchase_number").map((v) => ({
44
- "purchase_number": parseInt(v),
45
- })),
46
- ],
47
- );
26
+ const [searchInputs, setSearchInputs] = React.useState<SearchInput[]>([
27
+ ...searchParams.getAll("email").map((v) => ({ email: v })),
28
+ ...searchParams.getAll("phone").map((v) => ({ phone: v })),
29
+ ...searchParams.getAll("purchase_number").map((v) => ({
30
+ purchase_number: parseInt(v),
31
+ })),
32
+ ]);
33
+
34
+ const filterOnReady = useSearchParams()[0].get("state") ?? "PENDING";
48
35
  const [initial, setInitial] = React.useState(true);
49
36
 
50
37
  const doSearch = (event?: React.FormEvent<HTMLFormElement>) => {
51
38
  event?.preventDefault();
52
39
  navigate(undefined, {
53
- query: [
54
- ...searchInputs.map((v) => Object.entries(v)[0]),
55
- ["destination_type", "STORE"],
56
- ],
40
+ query: searchInputs.map((v) => Object.entries(v)[0]),
57
41
  });
58
42
  };
59
43
 
@@ -67,7 +51,7 @@ const ShipmentListPage: PageComponent<LimitOffset<ShipmentListItem>> = (
67
51
 
68
52
  return (
69
53
  <>
70
- <TitleBar title={getCurrent()?.route.title ?? "Orders"} />
54
+ <TitleBar title="Store Orders" />
71
55
  <Stack
72
56
  sx={{
73
57
  width: "100%",
@@ -82,26 +66,24 @@ const ShipmentListPage: PageComponent<LimitOffset<ShipmentListItem>> = (
82
66
  component="form"
83
67
  onSubmit={doSearch}
84
68
  >
85
- <SearchBar
86
- defaultValue={searchInputs}
87
- onChange={setSearchInputs}
88
- />
69
+ <SearchBar defaultValue={searchInputs} onChange={setSearchInputs} />
89
70
  <Stack
90
71
  direction="row"
91
72
  sx={{ paddingTop: 1, justifyContent: "space-between" }}
92
73
  >
93
74
  <Tabs
94
75
  sx={{ paddingBottom: -2 }}
95
- indicatorColor="secondary"
96
- textColor="secondary"
97
- value={filterOnReady}
98
- onChange={(_, value) => setFilterOnReady(value)}
76
+ value={searchInputs.length == 0 ? filterOnReady : null}
77
+ onChange={(_, value) =>
78
+ navigate(undefined, {
79
+ query: { state: value },
80
+ })
81
+ }
99
82
  >
100
- <Tab value={"NOT_PACKED"} label="Not packed" />
101
- <Tab value={"READY_FOR_PICKUP"} label="Ready for pickup" />
83
+ <Tab value={"PENDING"} label="New orders" />
84
+ {/* <Tab value={"READY_FOR_PICKUP"} label="Ready for pickup" /> */}
102
85
  </Tabs>
103
- {
104
- /* TODO: Filter on destination type if that is ever needed for the CAS view
86
+ {/* TODO: Filter on destination type if that is ever needed for the CAS view
105
87
  <ToggleButtonGroup
106
88
  exclusive={true}
107
89
  size="small"
@@ -121,18 +103,25 @@ const ShipmentListPage: PageComponent<LimitOffset<ShipmentListItem>> = (
121
103
  All
122
104
  </ToggleButton>
123
105
  </ToggleButtonGroup>
124
- */
125
- }
106
+ */}
126
107
  </Stack>
127
108
  </Stack>
128
109
  <Content>
129
110
  <Grid item xs={12}>
130
111
  <Stack gap={1}>
131
- {results.map((shipment) => (
132
- <ShipmentAccordion
133
- key={shipment.shipment_reference}
134
- shipment={shipment}
135
- />
112
+ {results.length === 0 ? (
113
+ <Typography
114
+ sx={{
115
+ color: theme.palette.grey[600],
116
+ margin: "0 auto",
117
+ }}
118
+ align="center"
119
+ >
120
+ Empty result
121
+ </Typography>
122
+ ) : null}
123
+ {results.map((order) => (
124
+ <OrderAccordion key={order.shipment_reference} order={order} />
136
125
  ))}
137
126
  </Stack>
138
127
  </Grid>