@nerdjs/sales-kit 1.0.1 → 1.0.3

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 (323) hide show
  1. package/dist/entities/accessorial/accessorial.d.ts +12 -0
  2. package/dist/entities/accessorial/accessorial.js +41 -0
  3. package/dist/entities/accessorial/accessorial.js.map +1 -0
  4. package/dist/entities/accessorial/helper.d.ts +5 -0
  5. package/dist/entities/accessorial/helper.js +16 -0
  6. package/dist/entities/accessorial/helper.js.map +1 -0
  7. package/dist/entities/accessorial/index.d.ts +2 -0
  8. package/dist/entities/accessorial/index.js +3 -0
  9. package/dist/entities/accessorial/index.js.map +1 -0
  10. package/dist/entities/accessorials/accessorials.d.ts +7 -0
  11. package/dist/entities/accessorials/accessorials.js +29 -0
  12. package/dist/entities/accessorials/accessorials.js.map +1 -0
  13. package/dist/entities/accessorials/helper.d.ts +5 -0
  14. package/dist/entities/accessorials/helper.js +16 -0
  15. package/dist/entities/accessorials/helper.js.map +1 -0
  16. package/dist/entities/accessorials/index.d.ts +2 -0
  17. package/dist/entities/accessorials/index.js +3 -0
  18. package/dist/entities/accessorials/index.js.map +1 -0
  19. package/dist/{cjs/entities → entities}/customer/customer.d.ts +16 -16
  20. package/dist/entities/customer/customer.js +63 -0
  21. package/dist/entities/customer/customer.js.map +1 -0
  22. package/dist/{cjs/entities → entities}/customer/helper.d.ts +5 -5
  23. package/dist/entities/customer/helper.js +16 -0
  24. package/dist/entities/customer/helper.js.map +1 -0
  25. package/dist/{cjs/entities → entities}/customer/index.d.ts +1 -1
  26. package/dist/entities/customer/index.js +2 -0
  27. package/dist/entities/customer/index.js.map +1 -0
  28. package/dist/entities/holiday/helper.d.ts +5 -0
  29. package/dist/entities/holiday/helper.js +16 -0
  30. package/dist/entities/holiday/helper.js.map +1 -0
  31. package/dist/entities/holiday/holiday.d.ts +7 -0
  32. package/dist/entities/holiday/holiday.js +31 -0
  33. package/dist/entities/holiday/holiday.js.map +1 -0
  34. package/dist/entities/holiday/index.d.ts +2 -0
  35. package/dist/entities/holiday/index.js +3 -0
  36. package/dist/entities/holiday/index.js.map +1 -0
  37. package/dist/entities/index.d.ts +12 -0
  38. package/dist/entities/index.js +13 -0
  39. package/dist/entities/index.js.map +1 -0
  40. package/dist/entities/load/helper.d.ts +6 -0
  41. package/dist/entities/load/helper.js +28 -0
  42. package/dist/entities/load/helper.js.map +1 -0
  43. package/dist/entities/load/index.d.ts +2 -0
  44. package/dist/entities/load/index.js +3 -0
  45. package/dist/entities/load/index.js.map +1 -0
  46. package/dist/entities/load/load.d.ts +102 -0
  47. package/dist/entities/load/load.js +224 -0
  48. package/dist/entities/load/load.js.map +1 -0
  49. package/dist/entities/loadAdjustment/helper.d.ts +5 -0
  50. package/dist/entities/loadAdjustment/helper.js +16 -0
  51. package/dist/entities/loadAdjustment/helper.js.map +1 -0
  52. package/dist/entities/loadAdjustment/index.d.ts +2 -0
  53. package/dist/entities/loadAdjustment/index.js +3 -0
  54. package/dist/entities/loadAdjustment/index.js.map +1 -0
  55. package/dist/entities/loadAdjustment/loadAdjustment.d.ts +15 -0
  56. package/dist/entities/loadAdjustment/loadAdjustment.js +48 -0
  57. package/dist/entities/loadAdjustment/loadAdjustment.js.map +1 -0
  58. package/dist/{cjs/entities → entities}/location/helper.d.ts +5 -5
  59. package/dist/entities/location/helper.js +16 -0
  60. package/dist/entities/location/helper.js.map +1 -0
  61. package/dist/{cjs/entities → entities}/location/index.d.ts +2 -2
  62. package/dist/entities/location/index.js +3 -0
  63. package/dist/entities/location/index.js.map +1 -0
  64. package/dist/{cjs/entities → entities}/location/location.d.ts +33 -32
  65. package/dist/entities/location/location.js +47 -0
  66. package/dist/entities/location/location.js.map +1 -0
  67. package/dist/{cjs/entities → entities}/marketCosts/helper.d.ts +5 -5
  68. package/dist/entities/marketCosts/helper.js +16 -0
  69. package/dist/entities/marketCosts/helper.js.map +1 -0
  70. package/dist/{cjs/entities → entities}/marketCosts/index.d.ts +2 -2
  71. package/dist/entities/marketCosts/index.js +3 -0
  72. package/dist/entities/marketCosts/index.js.map +1 -0
  73. package/dist/{cjs/entities → entities}/marketCosts/marketCosts.d.ts +22 -22
  74. package/dist/entities/marketCosts/marketCosts.js +60 -0
  75. package/dist/entities/marketCosts/marketCosts.js.map +1 -0
  76. package/dist/{cjs/entities → entities}/quote/helper.d.ts +5 -5
  77. package/dist/entities/quote/helper.js +16 -0
  78. package/dist/entities/quote/helper.js.map +1 -0
  79. package/dist/{cjs/entities → entities}/quote/index.d.ts +2 -2
  80. package/dist/entities/quote/index.js +3 -0
  81. package/dist/entities/quote/index.js.map +1 -0
  82. package/dist/entities/quote/quote.d.ts +76 -0
  83. package/dist/entities/quote/quote.js +46 -0
  84. package/dist/entities/quote/quote.js.map +1 -0
  85. package/dist/entities/quoteAccessorial/helper.d.ts +5 -0
  86. package/dist/entities/quoteAccessorial/helper.js +16 -0
  87. package/dist/entities/quoteAccessorial/helper.js.map +1 -0
  88. package/dist/entities/quoteAccessorial/index.d.ts +2 -0
  89. package/dist/entities/quoteAccessorial/index.js +3 -0
  90. package/dist/entities/quoteAccessorial/index.js.map +1 -0
  91. package/dist/entities/quoteAccessorial/quoteAccessorial.d.ts +29 -0
  92. package/dist/entities/quoteAccessorial/quoteAccessorial.js +77 -0
  93. package/dist/entities/quoteAccessorial/quoteAccessorial.js.map +1 -0
  94. package/dist/entities/quoteResponse/helper.d.ts +5 -0
  95. package/dist/entities/quoteResponse/helper.js +16 -0
  96. package/dist/entities/quoteResponse/helper.js.map +1 -0
  97. package/dist/entities/quoteResponse/index.d.ts +2 -0
  98. package/dist/entities/quoteResponse/index.js +3 -0
  99. package/dist/entities/quoteResponse/index.js.map +1 -0
  100. package/dist/entities/quoteResponse/quoteResponse.d.ts +72 -0
  101. package/dist/entities/quoteResponse/quoteResponse.js +67 -0
  102. package/dist/entities/quoteResponse/quoteResponse.js.map +1 -0
  103. package/dist/entities/shipcon/helper.d.ts +6 -0
  104. package/dist/entities/shipcon/helper.js +20 -0
  105. package/dist/entities/shipcon/helper.js.map +1 -0
  106. package/dist/entities/shipcon/index.d.ts +2 -0
  107. package/dist/entities/shipcon/index.js +3 -0
  108. package/dist/entities/shipcon/index.js.map +1 -0
  109. package/dist/entities/shipcon/shipcon.d.ts +27 -0
  110. package/dist/entities/shipcon/shipcon.js +74 -0
  111. package/dist/entities/shipcon/shipcon.js.map +1 -0
  112. package/dist/helpers.d.ts +18 -0
  113. package/dist/helpers.js +29 -0
  114. package/dist/helpers.js.map +1 -0
  115. package/dist/hooks/index.d.ts +2 -0
  116. package/dist/hooks/index.js +3 -0
  117. package/dist/hooks/index.js.map +1 -0
  118. package/dist/hooks/locationsForm/index.d.ts +1 -0
  119. package/dist/hooks/locationsForm/index.js +2 -0
  120. package/dist/hooks/locationsForm/index.js.map +1 -0
  121. package/dist/hooks/locationsForm/locationsForm.d.ts +2 -0
  122. package/dist/hooks/locationsForm/locationsForm.js +35 -0
  123. package/dist/hooks/locationsForm/locationsForm.js.map +1 -0
  124. package/dist/hooks/quote/constants.d.ts +187 -0
  125. package/dist/hooks/quote/constants.js +137 -0
  126. package/dist/hooks/quote/constants.js.map +1 -0
  127. package/dist/hooks/quote/form.d.ts +7 -0
  128. package/dist/hooks/quote/form.js +203 -0
  129. package/dist/hooks/quote/form.js.map +1 -0
  130. package/dist/hooks/quote/helpers.d.ts +39 -0
  131. package/dist/hooks/quote/helpers.js +366 -0
  132. package/dist/hooks/quote/helpers.js.map +1 -0
  133. package/dist/hooks/quote/index.d.ts +5 -0
  134. package/dist/hooks/quote/index.js +6 -0
  135. package/dist/hooks/quote/index.js.map +1 -0
  136. package/dist/hooks/quote/result.d.ts +7 -0
  137. package/dist/hooks/quote/result.js +196 -0
  138. package/dist/hooks/quote/result.js.map +1 -0
  139. package/dist/hooks/quote/template.d.ts +7 -0
  140. package/dist/hooks/quote/template.js +113 -0
  141. package/dist/hooks/quote/template.js.map +1 -0
  142. package/dist/index.d.ts +3 -0
  143. package/dist/index.js +4 -0
  144. package/dist/index.js.map +1 -0
  145. package/dist/redux/appState.d.ts +4 -0
  146. package/dist/redux/appState.js +2 -0
  147. package/dist/redux/appState.js.map +1 -0
  148. package/dist/redux/customer/customerActions.d.ts +97 -0
  149. package/dist/redux/customer/customerActions.js +210 -0
  150. package/dist/redux/customer/customerActions.js.map +1 -0
  151. package/dist/redux/customer/customerReducer.d.ts +2 -0
  152. package/dist/redux/customer/customerReducer.js +42 -0
  153. package/dist/redux/customer/customerReducer.js.map +1 -0
  154. package/dist/redux/customer/customerSelector.d.ts +27 -0
  155. package/dist/redux/customer/customerSelector.js +38 -0
  156. package/dist/redux/customer/customerSelector.js.map +1 -0
  157. package/dist/redux/customer/customerState.d.ts +11 -0
  158. package/dist/redux/customer/customerState.js +2 -0
  159. package/dist/redux/customer/customerState.js.map +1 -0
  160. package/dist/redux/customer/index.d.ts +4 -0
  161. package/dist/redux/customer/index.js +5 -0
  162. package/dist/redux/customer/index.js.map +1 -0
  163. package/dist/redux/index.d.ts +8 -0
  164. package/dist/redux/index.js +9 -0
  165. package/dist/redux/index.js.map +1 -0
  166. package/dist/redux/load/index.d.ts +4 -0
  167. package/dist/redux/load/index.js +5 -0
  168. package/dist/redux/load/index.js.map +1 -0
  169. package/dist/redux/load/loadActions.d.ts +80 -0
  170. package/dist/redux/load/loadActions.js +172 -0
  171. package/dist/redux/load/loadActions.js.map +1 -0
  172. package/dist/redux/load/loadReducer.d.ts +2 -0
  173. package/dist/redux/load/loadReducer.js +35 -0
  174. package/dist/redux/load/loadReducer.js.map +1 -0
  175. package/dist/redux/load/loadSelector.d.ts +27 -0
  176. package/dist/redux/load/loadSelector.js +19 -0
  177. package/dist/redux/load/loadSelector.js.map +1 -0
  178. package/dist/redux/load/loadState.d.ts +8 -0
  179. package/dist/redux/load/loadState.js +2 -0
  180. package/dist/redux/load/loadState.js.map +1 -0
  181. package/dist/redux/loadAdjustment/index.d.ts +4 -0
  182. package/dist/redux/loadAdjustment/index.js +5 -0
  183. package/dist/redux/loadAdjustment/index.js.map +1 -0
  184. package/dist/redux/loadAdjustment/loadAdjustmentActions.d.ts +80 -0
  185. package/dist/redux/loadAdjustment/loadAdjustmentActions.js +172 -0
  186. package/dist/redux/loadAdjustment/loadAdjustmentActions.js.map +1 -0
  187. package/dist/redux/loadAdjustment/loadAdjustmentReducer.d.ts +2 -0
  188. package/dist/redux/loadAdjustment/loadAdjustmentReducer.js +35 -0
  189. package/dist/redux/loadAdjustment/loadAdjustmentReducer.js.map +1 -0
  190. package/dist/redux/loadAdjustment/loadAdjustmentSelector.d.ts +15 -0
  191. package/dist/redux/loadAdjustment/loadAdjustmentSelector.js +12 -0
  192. package/dist/redux/loadAdjustment/loadAdjustmentSelector.js.map +1 -0
  193. package/dist/redux/loadAdjustment/loadAdjustmentState.d.ts +8 -0
  194. package/dist/redux/loadAdjustment/loadAdjustmentState.js +2 -0
  195. package/dist/redux/loadAdjustment/loadAdjustmentState.js.map +1 -0
  196. package/dist/redux/location/index.d.ts +4 -0
  197. package/dist/redux/location/index.js +5 -0
  198. package/dist/redux/location/index.js.map +1 -0
  199. package/dist/redux/location/locationActions.d.ts +101 -0
  200. package/dist/redux/location/locationActions.js +218 -0
  201. package/dist/redux/location/locationActions.js.map +1 -0
  202. package/dist/redux/location/locationReducer.d.ts +2 -0
  203. package/dist/redux/location/locationReducer.js +54 -0
  204. package/dist/redux/location/locationReducer.js.map +1 -0
  205. package/dist/redux/location/locationSelector.d.ts +53 -0
  206. package/dist/redux/location/locationSelector.js +32 -0
  207. package/dist/redux/location/locationSelector.js.map +1 -0
  208. package/dist/redux/location/locationState.d.ts +15 -0
  209. package/dist/redux/location/locationState.js +2 -0
  210. package/dist/redux/location/locationState.js.map +1 -0
  211. package/dist/{cjs/redux → redux}/quote/index.d.ts +5 -4
  212. package/dist/redux/quote/index.js +6 -0
  213. package/dist/redux/quote/index.js.map +1 -0
  214. package/dist/redux/quote/quoteAction.d.ts +177 -0
  215. package/dist/redux/quote/quoteAction.js +351 -0
  216. package/dist/redux/quote/quoteAction.js.map +1 -0
  217. package/dist/redux/quote/quoteMiddleware.d.ts +2 -0
  218. package/dist/redux/quote/quoteMiddleware.js +31 -0
  219. package/dist/redux/quote/quoteMiddleware.js.map +1 -0
  220. package/dist/redux/quote/quoteReducer.d.ts +27 -0
  221. package/dist/redux/quote/quoteReducer.js +207 -0
  222. package/dist/redux/quote/quoteReducer.js.map +1 -0
  223. package/dist/redux/quote/quoteSelector.d.ts +199 -0
  224. package/dist/redux/quote/quoteSelector.js +141 -0
  225. package/dist/redux/quote/quoteSelector.js.map +1 -0
  226. package/dist/redux/quote/quoteState.d.ts +9 -0
  227. package/dist/redux/quote/quoteState.js +2 -0
  228. package/dist/redux/quote/quoteState.js.map +1 -0
  229. package/dist/redux/quoteAccessorial/index.d.ts +3 -0
  230. package/dist/redux/quoteAccessorial/index.js +4 -0
  231. package/dist/redux/quoteAccessorial/index.js.map +1 -0
  232. package/dist/redux/quoteAccessorial/quoteAccessorialActions.d.ts +70 -0
  233. package/dist/redux/quoteAccessorial/quoteAccessorialActions.js +149 -0
  234. package/dist/redux/quoteAccessorial/quoteAccessorialActions.js.map +1 -0
  235. package/dist/redux/quoteAccessorial/quoteAccessorialReducer.d.ts +2 -0
  236. package/dist/redux/quoteAccessorial/quoteAccessorialReducer.js +29 -0
  237. package/dist/redux/quoteAccessorial/quoteAccessorialReducer.js.map +1 -0
  238. package/dist/redux/quoteAccessorial/quoteAccessorialState.d.ts +8 -0
  239. package/dist/redux/quoteAccessorial/quoteAccessorialState.js +2 -0
  240. package/dist/redux/quoteAccessorial/quoteAccessorialState.js.map +1 -0
  241. package/dist/redux/salesKitReducer.d.ts +25 -0
  242. package/dist/redux/salesKitReducer.js +18 -0
  243. package/dist/redux/salesKitReducer.js.map +1 -0
  244. package/dist/redux/shipcon/index.d.ts +4 -0
  245. package/dist/redux/shipcon/index.js +5 -0
  246. package/dist/redux/shipcon/index.js.map +1 -0
  247. package/dist/redux/shipcon/shipconActions.d.ts +80 -0
  248. package/dist/redux/shipcon/shipconActions.js +172 -0
  249. package/dist/redux/shipcon/shipconActions.js.map +1 -0
  250. package/dist/redux/shipcon/shipconReducer.d.ts +2 -0
  251. package/dist/redux/shipcon/shipconReducer.js +35 -0
  252. package/dist/redux/shipcon/shipconReducer.js.map +1 -0
  253. package/dist/redux/shipcon/shipconSelector.d.ts +22 -0
  254. package/dist/redux/shipcon/shipconSelector.js +19 -0
  255. package/dist/redux/shipcon/shipconSelector.js.map +1 -0
  256. package/dist/redux/shipcon/shipconState.d.ts +8 -0
  257. package/dist/redux/shipcon/shipconState.js +2 -0
  258. package/dist/redux/shipcon/shipconState.js.map +1 -0
  259. package/package.json +40 -71
  260. package/dist/cjs/components/calendar/calendar.d.ts +0 -5
  261. package/dist/cjs/components/calendar/day/day.d.ts +0 -8
  262. package/dist/cjs/components/calendar/day/index.d.ts +0 -1
  263. package/dist/cjs/components/calendar/day/typings.d.ts +0 -16
  264. package/dist/cjs/components/calendar/index.d.ts +0 -2
  265. package/dist/cjs/components/calendar/typings.d.ts +0 -27
  266. package/dist/cjs/components/customerFinder/customerFinder.d.ts +0 -11
  267. package/dist/cjs/components/customerFinder/index.d.ts +0 -2
  268. package/dist/cjs/components/customerFinder/optionTemplate.d.ts +0 -6
  269. package/dist/cjs/components/index.d.ts +0 -4
  270. package/dist/cjs/components/locationFinder/editLocation.d.ts +0 -15
  271. package/dist/cjs/components/locationFinder/index.d.ts +0 -1
  272. package/dist/cjs/components/locationFinder/locationByAddress.d.ts +0 -18
  273. package/dist/cjs/components/locationFinder/locationFinder.d.ts +0 -7
  274. package/dist/cjs/components/locationFinder/locationsFound.d.ts +0 -12
  275. package/dist/cjs/components/locationFinder/newLocationForm.d.ts +0 -20
  276. package/dist/cjs/components/locationFinder/optionTemplate.d.ts +0 -8
  277. package/dist/cjs/components/locationFinder/typings.d.ts +0 -23
  278. package/dist/cjs/components/salesQuote/components/aboutQuote/aboutQuote.d.ts +0 -5
  279. package/dist/cjs/components/salesQuote/components/aboutQuote/commodityDescription.d.ts +0 -16
  280. package/dist/cjs/components/salesQuote/components/aboutQuote/index.d.ts +0 -2
  281. package/dist/cjs/components/salesQuote/components/aboutQuote/quoteCheck.d.ts +0 -6
  282. package/dist/cjs/components/salesQuote/components/pallet/editPallet.d.ts +0 -11
  283. package/dist/cjs/components/salesQuote/components/pallet/palletChecker.d.ts +0 -15
  284. package/dist/cjs/components/salesQuote/components/pallet/palletCount.d.ts +0 -13
  285. package/dist/cjs/components/salesQuote/components/quoteCalendar/quoteCalendar.d.ts +0 -24
  286. package/dist/cjs/components/salesQuote/components/quoteResultAccordion/costBreakdown.d.ts +0 -14
  287. package/dist/cjs/components/salesQuote/components/quoteResultAccordion/marketCosts.d.ts +0 -7
  288. package/dist/cjs/components/salesQuote/components/quoteResultAccordion/quoteResultAccessorials.d.ts +0 -13
  289. package/dist/cjs/components/salesQuote/components/quoteResultAccordion/quoteResultAccordion.d.ts +0 -17
  290. package/dist/cjs/components/salesQuote/components/quoteSelect.d.ts +0 -4
  291. package/dist/cjs/components/salesQuote/components/quoteSummary/quoteSummary.d.ts +0 -4
  292. package/dist/cjs/components/salesQuote/components/quoteSummary/quoteSummaryBody.d.ts +0 -12
  293. package/dist/cjs/components/salesQuote/components/quoteSummary/quoteSummaryHeader.d.ts +0 -10
  294. package/dist/cjs/components/salesQuote/components/quoteSummary/typings.d.ts +0 -47
  295. package/dist/cjs/components/salesQuote/index.d.ts +0 -4
  296. package/dist/cjs/components/salesQuote/salesQuote.d.ts +0 -17
  297. package/dist/cjs/components/salesQuote/typings.d.ts +0 -156
  298. package/dist/cjs/components/shared/bootstrapDialogTitle/bootstrapDialogTitle.d.ts +0 -11
  299. package/dist/cjs/components/shared/bootstrapDialogTitle/index.d.ts +0 -1
  300. package/dist/cjs/components/shared/index.d.ts +0 -2
  301. package/dist/cjs/components/shared/loading/index.d.ts +0 -1
  302. package/dist/cjs/components/shared/loading/loading.d.ts +0 -6
  303. package/dist/cjs/components/stop/index.d.ts +0 -2
  304. package/dist/cjs/components/stop/menuAccessorials.d.ts +0 -27
  305. package/dist/cjs/components/stop/stop.d.ts +0 -4
  306. package/dist/cjs/components/stop/stopDetail.d.ts +0 -5
  307. package/dist/cjs/components/stop/stopDetailHeader.d.ts +0 -6
  308. package/dist/cjs/entities/index.d.ts +0 -4
  309. package/dist/cjs/entities/quote/quote.d.ts +0 -80
  310. package/dist/cjs/index.d.ts +0 -4
  311. package/dist/cjs/index.js +0 -3170
  312. package/dist/cjs/index.js.map +0 -1
  313. package/dist/cjs/redux/calendar/calendarSlice.d.ts +0 -12
  314. package/dist/cjs/redux/calendar/index.d.ts +0 -1
  315. package/dist/cjs/redux/index.d.ts +0 -3
  316. package/dist/cjs/redux/nerdSalesKitReducer.d.ts +0 -10
  317. package/dist/cjs/redux/quote/quoteAction.d.ts +0 -125
  318. package/dist/cjs/redux/quote/quoteReducer.d.ts +0 -28
  319. package/dist/cjs/redux/quote/quoteSelector.d.ts +0 -22
  320. package/dist/cjs/redux/quote/quoteState.d.ts +0 -124
  321. package/dist/cjs/utils/constants.d.ts +0 -5
  322. package/dist/cjs/utils/helpers.d.ts +0 -17
  323. package/dist/cjs/utils/index.d.ts +0 -2
@@ -0,0 +1,203 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button as JoyButton, Chip } from "@mui/joy";
3
+ import { Alert, alpha, Autocomplete, Button, ButtonGroup, Grid, LinearProgress, MenuItem, Paper, TextField, Tooltip, Typography, useTheme, } from "@mui/material";
4
+ import { Box } from "@mui/system";
5
+ import { DataGridPro, useGridApiRef, } from "@mui/x-data-grid-pro";
6
+ import { useEffect, useLayoutEffect, useState } from "react";
7
+ import { useHotkeys } from "react-hotkeys-hook";
8
+ import { useTranslation } from "react-i18next";
9
+ import { useDispatch, useSelector } from "react-redux";
10
+ import { searchCustomer } from "../../redux/customer/customerActions";
11
+ import { customersByFilterSelector, customerSelector, } from "../../redux/customer/customerSelector";
12
+ import { addPallet, addStop, checkPallets, getQuoteCommodityDescription, reorderStop, restartQuote, runQuote, setCustomerID, setQuoteBody, setQuoteReefer, setQuoteTotalDimension, updatePallet, updateStop, } from "../../redux/quote";
13
+ import { checkPalletMessageSelector, checkPalletsSelector, palletDimensionsSelector, quoteBodySelector, quoteCommodityDescriptionSelector, quoteErrorsSelector, quoteRunningSelector, } from "../../redux/quote/quoteSelector";
14
+ import { CONSIGNEES, CONTINUOUS_RUNNING, DRY, DRY_VAN_ONLY, FREIGHT_CLASS, icons, keyboardShortcuts, loadTypeOptions, LTL, LTL_TEMPERATURE, PALLET, REEFER, SHIPPERS, STANDARD_IM, TL_TEMPERATURE, } from "./constants";
15
+ import { getPalletsColumnDef, getStopsColumnDef } from "./helpers";
16
+ /**
17
+ * Quote form
18
+ *
19
+ * @returns {ReactElement} Quote Form
20
+ */
21
+ export function QuoteForm() {
22
+ const { t } = useTranslation();
23
+ const errors = useSelector(quoteErrorsSelector);
24
+ return (_jsxs(Box, { sx: { flex: 1 }, children: [_jsx(Toolbar, {}), _jsxs(Box, { sx: {
25
+ display: "flex",
26
+ flexDirection: "column",
27
+ gap: 2,
28
+ p: 2,
29
+ }, children: [errors ? (_jsx(Alert, { severity: "error", children: _jsx("ul", { style: { margin: 0 }, children: errors.map((e) => (_jsx("li", { children: e }, e))) }) })) : ([]), _jsx(AboutTheLoad, {}), _jsx(Stops, { stopKind: SHIPPERS }), _jsx(Stops, { stopKind: CONSIGNEES }), _jsx(Box, { sx: { textAlign: "center", opacity: 0.5, lineHeight: 0.6 }, children: _jsxs(Typography, { variant: "caption", children: [_jsx("i", { className: "fa-duotone fa-circle-info pright" }), t("inacurateWarning"), _jsx("br", {}), t("selectLocationWarning")] }) })] })] }));
30
+ }
31
+ /**
32
+ * Quote toolbar. Contains actions like restart, run quote or find a quote.
33
+ *
34
+ * @returns {ReactElement} Quote toolbar
35
+ */
36
+ function Toolbar() {
37
+ const [offsetTop, setOffsetTop] = useState(0);
38
+ const dispatch = useDispatch();
39
+ const { t } = useTranslation();
40
+ const running = useSelector(quoteRunningSelector);
41
+ const theme = useTheme();
42
+ useHotkeys("ctrl + r", () => {
43
+ dispatch(restartQuote());
44
+ }, {
45
+ enableOnTags: ["INPUT", "SELECT", "TEXTAREA"],
46
+ });
47
+ useLayoutEffect(() => {
48
+ const updatePosition = () => {
49
+ setOffsetTop(window.pageYOffset);
50
+ };
51
+ window.addEventListener("scroll", updatePosition);
52
+ updatePosition();
53
+ return () => window.removeEventListener("scroll", updatePosition);
54
+ }, []);
55
+ const shrink = offsetTop > 0;
56
+ return (_jsxs(Box, { sx: {
57
+ display: "flex",
58
+ alignItems: "center",
59
+ justifyContent: "space-between",
60
+ position: "sticky",
61
+ backdropFilter: shrink ? "blur(10px)" : "none",
62
+ borderBottom: shrink ? "solid 1px rgba(155,155,155,0.3)" : "none",
63
+ background: shrink
64
+ ? alpha(theme.palette.background.paper, 0.6)
65
+ : "none",
66
+ zIndex: 1000,
67
+ top: 48,
68
+ p: 2,
69
+ pt: shrink ? 1 : 2,
70
+ pb: shrink ? 1 : 2,
71
+ }, children: [_jsx(LinearProgress, { sx: {
72
+ opacity: running ? 1 : 0,
73
+ height: 3,
74
+ position: "absolute",
75
+ top: 0,
76
+ zIndex: 999,
77
+ width: "100%",
78
+ marginLeft: -2,
79
+ transform: "opacity .5s",
80
+ } }), _jsx(Typography, { variant: "h4", sx: {
81
+ fontWeight: 600,
82
+ fontSize: shrink ? "22px !important" : "36px !important",
83
+ transition: "font-size .3s ease-in-out",
84
+ }, children: t("Form") }), _jsxs(Box, { sx: { display: "flex", gap: 1 }, children: [_jsxs(JoyButton, { variant: "outlined", size: shrink ? "sm" : "md", children: [_jsx("i", { className: "fa-solid fa-magnifying-glass pright" }), t("find")] }), _jsx(Tooltip, { title: "ctrl+r", children: _jsxs(JoyButton, { size: shrink ? "sm" : "md", onClick: () => dispatch(restartQuote()), variant: "outlined", children: [_jsx("i", { className: "fa-sharp fa-solid fa-arrows-rotate pright" }), t("restart")] }) }), _jsx(Tooltip, { title: "ctrl+x", children: _jsxs(JoyButton, { variant: running ? "solid" : "soft", size: shrink ? "sm" : "md", onClick: () => {
85
+ dispatch(runQuote());
86
+ }, children: [running ? (_jsx("i", { className: "fa-solid fa-spinner fa-spin-pulse" })) : (_jsx("i", { className: "fa-duotone fa-play" })), _jsx("span", { style: { paddingLeft: 4 }, children: running ? t("Running...") : t("runQuote") })] }) })] })] }));
87
+ }
88
+ /**
89
+ * About the load. Form that contains input to gather info about the load.
90
+ *
91
+ * @returns {ReactElement} About The Load
92
+ */
93
+ function AboutTheLoad() {
94
+ const body = useSelector(quoteBodySelector);
95
+ const commodities = useSelector(quoteCommodityDescriptionSelector);
96
+ const palletsCheck = useSelector(checkPalletsSelector);
97
+ const palletDimensions = useSelector(palletDimensionsSelector);
98
+ const checkPalletsMessage = useSelector(checkPalletMessageSelector);
99
+ const customersSuggestions = useSelector(customersByFilterSelector);
100
+ const customer = useSelector(customerSelector(body.customerId));
101
+ const errors = useSelector(quoteErrorsSelector);
102
+ const { t } = useTranslation();
103
+ const [open, setOpen] = useState(false);
104
+ const [customerInputValue, setCustomerInputValue] = useState("");
105
+ const apiRef = useGridApiRef();
106
+ const dispatch = useDispatch();
107
+ useEffect(() => {
108
+ if (palletDimensions?.length) {
109
+ dispatch(checkPallets(palletDimensions));
110
+ }
111
+ }, [palletDimensions]);
112
+ useEffect(() => {
113
+ dispatch(getQuoteCommodityDescription());
114
+ }, []);
115
+ useEffect(() => {
116
+ if (!body.customerId) {
117
+ setCustomerInputValue("");
118
+ }
119
+ }, [body]);
120
+ useHotkeys(keyboardShortcuts[PALLET], () => {
121
+ dispatch(addPallet());
122
+ }, {
123
+ enableOnTags: ["INPUT", "SELECT", "TEXTAREA"],
124
+ });
125
+ const s = (b) => dispatch(setQuoteBody(b));
126
+ const r = (b) => dispatch(setQuoteReefer(b));
127
+ const d = (b) => dispatch(setQuoteTotalDimension(b));
128
+ const palletUpdate = async (_pallet) => {
129
+ return new Promise((resolve) => {
130
+ dispatch(updatePallet(_pallet));
131
+ setTimeout(() => {
132
+ resolve({ ..._pallet });
133
+ }, 50);
134
+ });
135
+ };
136
+ const reeferTemp = body.reefer?.reeferTemp ?? "";
137
+ const temperatureError = body.service === LTL
138
+ ? !LTL_TEMPERATURE.test(reeferTemp)
139
+ : !TL_TEMPERATURE.test(reeferTemp);
140
+ return (_jsxs(Paper, { sx: { p: 2 }, children: [_jsxs(Typography, { variant: "h6", children: [_jsx("i", { className: "fa-duotone fa-truck-ramp-box pright" }), " ", t("aboutTheLoad")] }), _jsxs(Grid, { container: true, spacing: 2, sx: { pt: 1 }, children: [_jsx(Grid, { item: true, xs: 12, children: _jsx(Autocomplete, { open: open, onOpen: () => {
141
+ setOpen(true);
142
+ }, onClose: () => {
143
+ setOpen(false);
144
+ }, value: customer ?? null, onChange: (_e, v) => {
145
+ dispatch(setCustomerID(v?.id));
146
+ }, inputValue: customerInputValue, onInputChange: (_e, v) => setCustomerInputValue(v), isOptionEqualToValue: (option, value) => option.name === value.name, getOptionLabel: (option) => option.name, options: customersSuggestions, renderOption: (props, c) => (_jsx(Box, { component: "li", ...props, children: _jsxs(Box, { children: [_jsxs(Typography, { variant: "body2", children: [" ", c.name] }), _jsxs(Box, { sx: { display: "flex", gap: 1, alignItems: "center" }, children: [_jsx(Typography, { variant: "caption", children: `${c.city}, ${c.state} ${c.zip}` }), !c.is_active ? (_jsx(Chip, { size: "sm", variant: "soft", color: "danger", children: t("Inactive") })) : ([]), c.inactivity_hold ? (_jsx(Chip, { size: "sm", variant: "soft", color: "warning", children: t("Inactivity Hold") })) : ([]), c.credit_on_hold ? (_jsx(Chip, { size: "sm", variant: "soft", color: "warning", children: t("Credit on Hold") })) : ([])] })] }) })), renderInput: (params) => (_jsx(TextField, { ...params, error: errors && !customer, variant: "filled", label: "Select the Customer", onChange: (e) => dispatch(searchCustomer(e.target.value)), InputProps: {
147
+ ...params.InputProps,
148
+ } })) }) }), _jsx(Grid, { item: true, children: _jsx(ButtonGroup, { orientation: "vertical", children: loadTypeOptions.map((i) => (_jsxs(Button, { onClick: () => {
149
+ if (i === STANDARD_IM)
150
+ s({ mode: DRY });
151
+ s({ service: i });
152
+ }, sx: { display: "flex", justifyContent: "space-between" }, variant: body.service === i ? "contained" : "outlined", children: [icons[i], i] }, i))) }) }), _jsx(Grid, { item: true, children: _jsx(ButtonGroup, { orientation: "vertical", children: [DRY, REEFER].map((i) => (_jsxs(Button, { onClick: () => s({ mode: i }), disabled: i === REEFER && body.service === STANDARD_IM, sx: { display: "flex", justifyContent: "space-between" }, variant: body.mode === i ? "contained" : "outlined", children: [icons[i], i] }, i))) }) }), body.mode === REEFER ? (_jsx(Grid, { item: true, xs: 12, md: 3, children: _jsx(TextField, { fullWidth: true, label: t("temperature"), size: "small", autoFocus: true, value: body.reefer?.reeferTemp ?? "", onChange: (e) => r({ reeferTemp: e.target.value }), helperText: body.service === LTL
153
+ ? "Between 40℉ and 80℉"
154
+ : "Between -20℉ and 80℉", error: temperatureError }) })) : ([]), body.mode === REEFER ? (_jsx(Grid, { item: true, xs: 12, md: 4, children: _jsxs(Button, { variant: body.reefer?.reeferCont ? "contained" : "outlined", onClick: () => r({ reeferCont: !(body.reefer?.reeferCont ?? false) }), children: [icons[CONTINUOUS_RUNNING], CONTINUOUS_RUNNING] }) })) : (_jsx(Grid, { item: true, children: _jsxs(Button, { variant: body.dryVanOnly ? "contained" : "outlined", onClick: () => s({ dryVanOnly: !(body.dryVanOnly ?? false) }), children: [icons[DRY_VAN_ONLY], DRY_VAN_ONLY] }) })), _jsx(Grid, { item: true, xs: 12 }), _jsx(Grid, { item: true, xs: 12, md: 4, children: _jsx(TextField, { select: true, fullWidth: true, label: t("commodityDescription"), size: "small", helperText: _jsx("span", { children: "Note: No Haz Mat, Ice Cream." }), value: body.commodityDescriptionId ?? "", onChange: (e) => s({ commodityDescriptionId: parseInt(e.target.value) }), children: commodities.map((c) => (_jsxs(MenuItem, { value: c.id, children: [c.id && icons[c.id], c.name] }, c.id))) }) }), _jsx(Grid, { item: true, xs: 12, md: 4, children: _jsx(TextField, { fullWidth: true, label: t("totalWeight"), error: errors && !body.units?.totalDimensions?.totalWeight, size: "small", value: body.units?.totalDimensions?.totalWeight ?? "", onChange: (e) => d({ totalWeight: e.target.value }) }) }), _jsx(Grid, { item: true, xs: 12, md: 4, children: _jsx(TextField, { select: true, fullWidth: true, label: t("freightClass"), size: "small", value: body.freightClass ?? "", onChange: (e) => s({ freightClass: e.target.value }), children: FREIGHT_CLASS.map((f) => (_jsx(MenuItem, { value: f, children: f }, f))) }) }), _jsxs(Grid, { item: true, xs: 12, children: [_jsx(Tooltip, { title: "ctrl+p", children: _jsxs(JoyButton, { size: "sm", sx: { mb: 2 }, variant: "soft", color: errors && body.units?.palletDimensions?.length === 0
155
+ ? "danger"
156
+ : undefined, onClick: () => dispatch(addPallet()), children: [_jsx("i", { className: "fa-duotone fa-pallet-boxes pright" }), " ", t("newPallet")] }) }), body.units?.palletDimensions?.length ? (_jsx(DataGridPro, { density: "compact", apiRef: apiRef, onCellClick: (e) => {
157
+ apiRef.current?.startCellEditMode({ id: e.id, field: e.field });
158
+ }, autoHeight: true, hideFooter: true, componentsProps: {
159
+ cell: { tabIndex: 1 },
160
+ }, experimentalFeatures: { newEditingApi: true }, processRowUpdate: palletUpdate, getRowId: (p) => p.key, rows: body.units?.palletDimensions, columns: getPalletsColumnDef(dispatch) })) : ([])] }), palletsCheck ? (_jsx(Grid, { item: true, xs: 12, children: _jsxs(Alert, { severity: "success", children: [t("validSpecs"), _jsx("b", { children: t("totalSpecs", {
161
+ feet: palletsCheck.feet,
162
+ weight: palletsCheck.weight,
163
+ pallets: palletsCheck.pallets,
164
+ }) })] }) })) : ([]), checkPalletsMessage ? (_jsx(Grid, { item: true, xs: 12, children: _jsxs(Alert, { severity: "error", children: [t("equipmentIssue"), _jsx("br", {}), checkPalletsMessage] }) })) : ([])] })] }));
165
+ }
166
+ /**
167
+ * Stops. Datagrid allowing the user to input quote's stops.
168
+ *
169
+ * @param {string} stopKind variant. Could be shippers or consignees
170
+ * @returns {ReactElement} About The Load
171
+ */
172
+ function Stops({ stopKind }) {
173
+ const dispatch = useDispatch();
174
+ const body = useSelector(quoteBodySelector);
175
+ const shippers = body.shippers;
176
+ const consignees = body.consignees;
177
+ const errors = useSelector(quoteErrorsSelector);
178
+ const { t } = useTranslation();
179
+ const apiRef = useGridApiRef();
180
+ const stops = stopKind === SHIPPERS ? shippers : consignees;
181
+ useHotkeys(keyboardShortcuts[stopKind], () => {
182
+ dispatch(addStop(stopKind));
183
+ }, {
184
+ enableOnTags: ["INPUT", "SELECT", "TEXTAREA"],
185
+ });
186
+ const stopUpdate = async (_stop) => {
187
+ return new Promise((resolve) => {
188
+ dispatch(updateStop(_stop));
189
+ setTimeout(() => {
190
+ resolve({ ..._stop });
191
+ }, 50);
192
+ });
193
+ };
194
+ const stopPosition = (params) => {
195
+ dispatch(reorderStop(stopKind, params.oldIndex, params.targetIndex));
196
+ };
197
+ return (_jsxs(Paper, { sx: { p: 2 }, children: [_jsxs(Typography, { variant: "h6", sx: { textTransform: "capitalize" }, children: [icons[stopKind], stopKind] }), _jsx(Tooltip, { title: keyboardShortcuts[stopKind], children: _jsxs(JoyButton, { size: "sm", sx: { mb: 2 }, variant: "soft", onClick: () => dispatch(addStop(stopKind)), children: [_jsx("i", { className: "fa-solid fa-location-dot pright" }), t("newStop")] }) }), _jsx(DataGridPro, { density: "compact", autoHeight: true, rowReordering: true, hideFooter: true, componentsProps: {
198
+ cell: { tabIndex: 1 },
199
+ }, apiRef: apiRef, onCellClick: (e) => {
200
+ apiRef.current?.startCellEditMode({ id: e.id, field: e.field });
201
+ }, experimentalFeatures: { newEditingApi: true }, processRowUpdate: stopUpdate, onRowOrderChange: stopPosition, getRowId: (p) => p.key, rows: stops ?? [], columns: getStopsColumnDef(dispatch, stopKind, stops ?? [], errors) })] }));
202
+ }
203
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../../../src/hooks/quote/form.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /// <reference types="react" />
2
+ import { GridColumns, GridRenderCellParams, GridRowId } from "@mui/x-data-grid-pro";
3
+ import { Dispatch } from "@reduxjs/toolkit";
4
+ import { PalletDimensions_Entity, Stop_Entity } from "../../entities/quote";
5
+ export declare const getStopsColumnDef: (dispatch: Dispatch, stopKind: string, rows: Stop_Entity[], errors?: string[]) => GridColumns<Stop_Entity>;
6
+ export declare const getPalletsColumnDef: (dispatch: Dispatch) => GridColumns<PalletDimensions_Entity>;
7
+ /**
8
+ * RenderCell. A drawer that displays the quote body object.
9
+ *
10
+ * @param {GridRenderCellParams<number>} props grid params
11
+ * @returns {ReactElement} The location cell
12
+ */
13
+ export declare function LocationCell(props: GridRenderCellParams<number>): JSX.Element;
14
+ /**
15
+ * DateInputCell. A calendar with holidays
16
+ *
17
+ * @param {GridRenderCellParams<number>} props grid params
18
+ * @returns {ReactElement} The autocomplete
19
+ */
20
+ export declare function DateInputCell({ id, value, field, }: {
21
+ id: GridRowId;
22
+ value: number;
23
+ field: string;
24
+ stopKind: string;
25
+ }): JSX.Element;
26
+ /**
27
+ * AccessorialInputCell. A way to add accessorials
28
+ *
29
+ * @param {GridRenderCellParams<number>} props grid params
30
+ * @returns {ReactElement} The autocomplete
31
+ */
32
+ export declare function AccessorialInputCell(props: GridRenderCellParams<number[]>): JSX.Element;
33
+ /**
34
+ * LocationInputCell. A autocomplete to show locations
35
+ *
36
+ * @param {GridRenderCellParams<number>} props grid params
37
+ * @returns {ReactElement} The autocomplete
38
+ */
39
+ export declare function LocationInputCell(props: GridRenderCellParams<number>): JSX.Element;
@@ -0,0 +1,366 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Avatar, Badge, Sheet } from "@mui/joy";
3
+ import { alpha, Autocomplete, Box, Divider, List, ListItem, ListItemAvatar, ListItemText, Popover, TextField, Tooltip, Typography, } from "@mui/material";
4
+ import { GridActionsCellItem, useGridApiContext, } from "@mui/x-data-grid-pro";
5
+ import { LocalizationProvider, PickersDay, StaticDatePicker, } from "@mui/x-date-pickers";
6
+ import { AdapterMoment } from "@mui/x-date-pickers/AdapterMoment";
7
+ import moment from "moment";
8
+ import { useEffect, useRef, useState, } from "react";
9
+ import { useHotkeys } from "react-hotkeys-hook";
10
+ import { useTranslation } from "react-i18next";
11
+ import { useDispatch, useSelector } from "react-redux";
12
+ import Location_Entity from "../../entities/location/location";
13
+ import { searchExistingLocation, searchLocation, } from "../../redux/location/locationActions";
14
+ import { locationsByFilterSelector, locationSelector, } from "../../redux/location/locationSelector";
15
+ import { removePallet, removeStop } from "../../redux/quote";
16
+ import { accessorialsSelector, holidaysSelector, quoteBodySelector, } from "../../redux/quote/quoteSelector";
17
+ import { SHIPPERS } from "./constants";
18
+ export const getStopsColumnDef = (dispatch, stopKind, rows, errors) => {
19
+ const date = {
20
+ headerName: "Date",
21
+ field: "date",
22
+ type: "date",
23
+ editable: true,
24
+ minWidth: 140,
25
+ flex: 1,
26
+ renderEditCell: (p) => (_jsx(DateInputCell, { value: p.value, field: p.field, id: p.id, stopKind: stopKind })),
27
+ renderCell: (p) => (_jsx(Typography, { variant: "body2", sx: {
28
+ opacity: p.value || errors ? 1 : 0.5,
29
+ color: errors && !p.value ? "#f44336" : undefined,
30
+ }, children: p.value ? moment(p.value).format("ll") : "Set a date..." })),
31
+ };
32
+ const ret = [
33
+ {
34
+ headerName: "Order",
35
+ field: "order",
36
+ type: "string",
37
+ editable: false,
38
+ width: 40,
39
+ valueGetter: (p) => {
40
+ return rows.findIndex((r) => r.key === p.row.key) + 1;
41
+ },
42
+ renderCell: (p) => (_jsx(Avatar, { size: "sm", variant: "soft", children: p.value })),
43
+ },
44
+ {
45
+ headerName: "Zipcode or City State",
46
+ field: "zip",
47
+ type: "string",
48
+ editable: true,
49
+ minWidth: 180,
50
+ flex: 1,
51
+ renderCell: (p) => (_jsx(Typography, { variant: "body2", sx: {
52
+ opacity: p.value || errors ? 1 : 0.5,
53
+ color: errors && !p.value ? "#f44336" : undefined,
54
+ }, children: p.value ? p.value : "Enter zip or city, state..." })),
55
+ },
56
+ {
57
+ headerName: "Facility",
58
+ field: "locationId",
59
+ type: "string",
60
+ renderEditCell: (p) => _jsx(LocationInputCell, { ...p }),
61
+ editable: true,
62
+ minWidth: 180,
63
+ flex: 1,
64
+ renderCell: (p) => _jsx(LocationCell, { ...p }),
65
+ },
66
+ {
67
+ headerName: "Accessorials",
68
+ field: "accessorialIds",
69
+ type: "string",
70
+ editable: true,
71
+ minWidth: 180,
72
+ flex: 1,
73
+ renderEditCell: (p) => _jsx(AccessorialInputCell, { ...p }),
74
+ renderCell: (p) => (_jsx(Typography, { variant: "body2", sx: { opacity: p.value.length ? 1 : 0.5 }, children: p.value.length
75
+ ? `${p.value.length} selected`
76
+ : "Add Accessorials (Optionnal)" })),
77
+ },
78
+ {
79
+ field: "action",
80
+ type: "actions",
81
+ headerName: "Actions",
82
+ cellClassName: "actions",
83
+ width: 80,
84
+ getActions: (p) => [
85
+ _jsx(GridActionsCellItem, { icon: _jsx("i", { style: { fontSize: 14 }, className: "fa-sharp fa-solid fa-trash" }), label: `Delete`, onClick: () => {
86
+ dispatch(removeStop(p.row.key));
87
+ }, color: "inherit" }, "delete"),
88
+ ],
89
+ },
90
+ ];
91
+ if (stopKind === SHIPPERS) {
92
+ ret.splice(3, 0, date);
93
+ }
94
+ return ret;
95
+ };
96
+ export const getPalletsColumnDef = (dispatch) => {
97
+ return [
98
+ {
99
+ headerName: "Count",
100
+ field: "count",
101
+ type: "number",
102
+ editable: true,
103
+ },
104
+ {
105
+ headerName: "Stackable",
106
+ field: "stackable",
107
+ type: "boolean",
108
+ editable: true,
109
+ },
110
+ {
111
+ headerName: "Length",
112
+ field: "length",
113
+ type: "number",
114
+ editable: true,
115
+ },
116
+ {
117
+ headerName: "Width",
118
+ field: "width",
119
+ type: "number",
120
+ editable: true,
121
+ },
122
+ {
123
+ headerName: "Height",
124
+ field: "height",
125
+ type: "number",
126
+ editable: true,
127
+ },
128
+ {
129
+ headerName: "Weight",
130
+ field: "weight",
131
+ type: "number",
132
+ editable: true,
133
+ },
134
+ {
135
+ headerName: "Units",
136
+ field: "units",
137
+ type: "singleSelect",
138
+ editable: true,
139
+ valueOptions: [
140
+ { value: "inches", label: "Inches" },
141
+ { value: "feet", label: "Feet" },
142
+ ],
143
+ flex: 1,
144
+ },
145
+ {
146
+ field: "action",
147
+ type: "actions",
148
+ headerName: "Actions",
149
+ cellClassName: "actions",
150
+ getActions: (p) => [
151
+ _jsx(GridActionsCellItem, { icon: _jsx("i", { style: { fontSize: 14 }, className: "fa-sharp fa-solid fa-trash" }), label: `Delete`, onClick: () => {
152
+ dispatch(removePallet(p.row.key));
153
+ }, color: "inherit" }, "delete"),
154
+ ],
155
+ },
156
+ ];
157
+ };
158
+ /**
159
+ * RenderCell. A drawer that displays the quote body object.
160
+ *
161
+ * @param {GridRenderCellParams<number>} props grid params
162
+ * @returns {ReactElement} The location cell
163
+ */
164
+ export function LocationCell(props) {
165
+ const location = useSelector(locationSelector(props.value));
166
+ return (_jsx(Tooltip, { title: location?.name ?? "", children: _jsx(Typography, { sx: { opacity: location ? 1 : 0.5 }, variant: "body2", children: location ? location.name : "Pick a location..." }) }));
167
+ }
168
+ /**
169
+ * DateInputCell. A calendar with holidays
170
+ *
171
+ * @param {GridRenderCellParams<number>} props grid params
172
+ * @returns {ReactElement} The autocomplete
173
+ */
174
+ export function DateInputCell({ id, value, field, }) {
175
+ const ref = useRef();
176
+ const apiRef = useGridApiContext();
177
+ const [open, setOpen] = useState(false);
178
+ const [date, setDate] = useState(value ? moment(value) : null);
179
+ useEffect(() => {
180
+ if (ref.current)
181
+ setOpen(true);
182
+ }, [ref]);
183
+ const handleChange = (newDate) => {
184
+ setDate(newDate);
185
+ setOpen(false);
186
+ apiRef.current.setEditCellValue({
187
+ id,
188
+ field,
189
+ value: newDate,
190
+ });
191
+ apiRef.current.stopCellEditMode({ id, field });
192
+ };
193
+ useHotkeys("enter", () => {
194
+ handleChange(date);
195
+ }, {
196
+ enableOnTags: ["INPUT", "SELECT", "TEXTAREA"],
197
+ });
198
+ const handleClose = () => {
199
+ apiRef.current.setEditCellValue({
200
+ id,
201
+ field,
202
+ value: value,
203
+ });
204
+ apiRef.current.stopCellEditMode({ id, field });
205
+ };
206
+ return (_jsxs(_Fragment, { children: [_jsx(Box, { ref: ref }), ref.current && open ? (_jsx(Popover, { open: open, anchorEl: ref.current, onClose: handleClose, children: _jsx(Box, { sx: { p: 1 }, children: _jsx(LocalizationProvider, { dateAdapter: AdapterMoment, children: _jsx(StaticDatePicker, { displayStaticWrapperAs: "desktop", value: date, disableHighlightToday: true, onChange: handleChange, shouldDisableDate: (d) => {
207
+ return d.isBefore(moment(), "day");
208
+ }, renderDay: (date, _s, pickersDayProps) => (_jsx(RenderDay, { date: date, pickersDayProps: pickersDayProps })), renderInput: (params) => _jsx(TextField, { ...params }) }) }) }) })) : ([])] }));
209
+ }
210
+ const RenderDay = ({ date, pickersDayProps, }) => {
211
+ const holidays = useSelector(holidaysSelector);
212
+ const isHoliday = holidays?.find((h) => moment(h.date).isSame(date, "day"));
213
+ const body = useSelector(quoteBodySelector);
214
+ const shippers = body.shippers;
215
+ const consignees = body.consignees;
216
+ const isShipper = shippers?.find((h) => h.date && moment(h.date).isSame(date, "day"));
217
+ const isConsignee = consignees?.find((h) => h.date && moment(h.date).isSame(date, "day"));
218
+ const tooltips = [];
219
+ let badgeContent;
220
+ if (isHoliday)
221
+ tooltips.push(isHoliday.name);
222
+ if (isShipper) {
223
+ tooltips.push(`Pickup`);
224
+ badgeContent = _jsx("i", { className: "fa-solid fa-arrow-up" });
225
+ }
226
+ if (isConsignee) {
227
+ tooltips.push(`Dropoff`);
228
+ badgeContent = _jsx("i", { className: "fa-solid fa-arrow-down" });
229
+ }
230
+ return (_jsx(Box, { sx: { display: "flex", alignItems: "center", justifyContent: "center" }, children: isHoliday || isShipper || isConsignee ? (_jsx(Tooltip, { title: tooltips.join(" - "), children: _jsx(Box, { children: _jsx(Badge, { size: "sm", badgeContent: badgeContent ?? 0, children: _jsx(PickersDay, { sx: {
231
+ background: isHoliday ? alpha("#ffc107", 0.1) : undefined,
232
+ border: isHoliday
233
+ ? `dashed 2px ${alpha("#ffc107", 0.3)}`
234
+ : `solid 2px ${alpha("#2196f3", 0.3)}`,
235
+ }, ...pickersDayProps }) }) }) })) : (_jsx(PickersDay, { ...pickersDayProps })) }));
236
+ };
237
+ /**
238
+ * AccessorialInputCell. A way to add accessorials
239
+ *
240
+ * @param {GridRenderCellParams<number>} props grid params
241
+ * @returns {ReactElement} The autocomplete
242
+ */
243
+ export function AccessorialInputCell(props) {
244
+ const { id, value, field } = props;
245
+ const ref = useRef();
246
+ const apiRef = useGridApiContext();
247
+ const [open, setOpen] = useState(false);
248
+ const [accessorialIds, setAccessorialIds] = useState(value ?? []);
249
+ const accessorials = useSelector(accessorialsSelector);
250
+ const { t } = useTranslation();
251
+ useEffect(() => {
252
+ if (ref.current)
253
+ setOpen(true);
254
+ }, [ref]);
255
+ const handleClose = () => {
256
+ setOpen(false);
257
+ apiRef.current.setEditCellValue({
258
+ id,
259
+ field,
260
+ value: accessorialIds,
261
+ });
262
+ apiRef.current.stopCellEditMode({ id, field });
263
+ };
264
+ const handleSelect = (a) => () => {
265
+ const s = [...accessorialIds];
266
+ if (s.indexOf(a.accessorialId) >= 0) {
267
+ s.splice(s.indexOf(a.accessorialId), 1);
268
+ }
269
+ else {
270
+ s.push(a.accessorialId);
271
+ }
272
+ setAccessorialIds(s);
273
+ };
274
+ return (_jsxs(_Fragment, { children: [_jsx(Box, { ref: ref }), ref.current && open ? (_jsx(Popover, { open: open, anchorEl: ref.current, onClose: handleClose, children: _jsxs(Box, { sx: { width: 250, maxHeight: 600, overflow: "scroll" }, children: [_jsx(Sheet, { sx: {
275
+ position: "sticky",
276
+ top: 0,
277
+ zIndex: 100,
278
+ textAlign: "center",
279
+ }, variant: "soft", children: _jsx(Typography, { sx: { p: 1 }, variant: "body2", children: t("Select accessorials that apply") }) }), _jsx(Divider, {}), _jsx(List, { dense: true, children: accessorials.map((a) => (_jsxs(ListItem, { selected: accessorialIds.indexOf(a.accessorialId) >= 0, button: true, divider: true, onClick: handleSelect(a), children: [_jsx(ListItemAvatar, { children: accessorialIds.indexOf(a.accessorialId) >= 0 ? (_jsx("i", { className: "fa-sharp fa-solid fa-check" })) : (_jsx("i", { className: "fa-regular fa-plus", style: { opacity: 0.5 } })) }), _jsx(ListItemText, { primary: a.name, secondary: `$${a.costAmount}/${a.unitType}` })] }, a.accessorialId))) })] }) })) : ([])] }));
280
+ }
281
+ /**
282
+ * LocationInputCell. A autocomplete to show locations
283
+ *
284
+ * @param {GridRenderCellParams<number>} props grid params
285
+ * @returns {ReactElement} The autocomplete
286
+ */
287
+ export function LocationInputCell(props) {
288
+ const { id, value, field } = props;
289
+ const apiRef = useGridApiContext();
290
+ // const body = useSelector(quoteBodySelector);
291
+ const locationSuggestions = useSelector(locationsByFilterSelector);
292
+ const location = useSelector(locationSelector(value));
293
+ const [locationInputValue, setLocationInputValue] = useState("");
294
+ const [bounds, setBounds] = useState();
295
+ const [googleMapsPredictions, setGoogleMapsPredictions] = useState([]);
296
+ const dispatch = useDispatch();
297
+ const googleMapsAutocompleteService = new google.maps.places.AutocompleteService();
298
+ const googleMapsGeocoder = new google.maps.Geocoder();
299
+ useEffect(() => {
300
+ if (props.row.zip) {
301
+ findBounds();
302
+ }
303
+ }, [props.row.zip]);
304
+ const handleValueChange = (_, newValue) => {
305
+ const updateCell = (v) => apiRef.current.setEditCellValue({
306
+ id,
307
+ field,
308
+ value: v,
309
+ });
310
+ let value;
311
+ if (newValue && newValue instanceof Location_Entity) {
312
+ value = newValue.id;
313
+ updateCell(value);
314
+ }
315
+ else if (newValue) {
316
+ googleMapsGeocoder.geocode({ address: newValue.description }, (results) => {
317
+ if (results?.length) {
318
+ dispatch(searchExistingLocation(results[0].place_id, updateCell));
319
+ }
320
+ });
321
+ }
322
+ else {
323
+ updateCell(value);
324
+ }
325
+ };
326
+ const findBounds = () => {
327
+ googleMapsGeocoder.geocode({ address: props.row.zip }, (results, status) => {
328
+ if (status === google.maps.GeocoderStatus.OK && results != undefined) {
329
+ const lat = results[0].geometry.location.lat();
330
+ const lng = results[0].geometry.location.lng();
331
+ const bounds = new google.maps.LatLngBounds(new google.maps.LatLng(lat, lng), new google.maps.LatLng(lat, lng));
332
+ setBounds(bounds);
333
+ }
334
+ });
335
+ };
336
+ const getGoogleAddresses = (searchText) => {
337
+ googleMapsAutocompleteService.getPlacePredictions({
338
+ input: searchText,
339
+ componentRestrictions: { country: "us" },
340
+ types: ["address"],
341
+ bounds,
342
+ }, (googleSuggestions) => setGoogleMapsPredictions(googleSuggestions));
343
+ };
344
+ return (_jsx(_Fragment, { children: _jsx(Autocomplete, { fullWidth: true, options: [...locationSuggestions, ...(googleMapsPredictions ?? [])], value: location, onChange: handleValueChange, inputValue: locationInputValue, onInputChange: (_e, v) => setLocationInputValue(v), getOptionLabel: (option) => {
345
+ if (option instanceof Location_Entity) {
346
+ return option.name;
347
+ }
348
+ return option.structured_formatting.main_text;
349
+ }, renderInput: (params) => (_jsx(TextField, { ...params, label: "Pick a location...", autoFocus: true, onChange: (e) => {
350
+ dispatch(searchLocation(props.row.zip, e.target.value));
351
+ getGoogleAddresses(e.target.value);
352
+ }, InputProps: {
353
+ ...params.InputProps,
354
+ } })), renderOption: (props, c) => _jsx(LocationOption, { props: props, c: c }) }) }));
355
+ }
356
+ /**
357
+ *
358
+ * @param {HTMLAttributes<HTMLLIElement>} props html attributes for the menuItem
359
+ */
360
+ function LocationOption({ props, c, }) {
361
+ if (c instanceof Location_Entity) {
362
+ return (_jsx(Box, { component: "li", ...props, children: _jsxs(Box, { children: [_jsx(Typography, { variant: "body2", color: "primary", children: c.name }), _jsx(Box, { sx: { display: "flex", gap: 1, alignItems: "center" }, children: _jsx(Typography, { variant: "caption", children: `${c.address.city}, ${c.address.state} ${c.address.zip}` }) })] }) }));
363
+ }
364
+ return (_jsx(Box, { component: "li", ...props, children: _jsxs(Box, { children: [_jsx(Typography, { variant: "body2", children: c.structured_formatting.main_text }), _jsx(Box, { sx: { display: "flex", gap: 1, alignItems: "center" }, children: _jsx(Typography, { variant: "caption", children: c.structured_formatting.secondary_text }) })] }) }));
365
+ }
366
+ //# sourceMappingURL=helpers.js.map