@nerdjs/sales-kit 2.2.12 → 2.3.0

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 (141) hide show
  1. package/dist/hooks/lep/checkList.js +14 -8
  2. package/dist/hooks/lep/checkList.js.map +1 -1
  3. package/dist/hooks/lep/helpers.js +2 -0
  4. package/dist/hooks/lep/helpers.js.map +1 -1
  5. package/dist/hooks/lep/index.d.ts +1 -0
  6. package/dist/hooks/lep/index.js +1 -0
  7. package/dist/hooks/lep/index.js.map +1 -1
  8. package/dist/hooks/lep/lepAccessorials.js +85 -63
  9. package/dist/hooks/lep/lepAccessorials.js.map +1 -1
  10. package/dist/hooks/lep/lepActionBar.js +602 -73
  11. package/dist/hooks/lep/lepActionBar.js.map +1 -1
  12. package/dist/hooks/lep/lepAdjustments.js +16 -23
  13. package/dist/hooks/lep/lepAdjustments.js.map +1 -1
  14. package/dist/hooks/lep/lepAppointmentArrivals.js +5 -5
  15. package/dist/hooks/lep/lepAppointmentArrivals.js.map +1 -1
  16. package/dist/hooks/lep/lepClaims.js +10 -10
  17. package/dist/hooks/lep/lepClaims.js.map +1 -1
  18. package/dist/hooks/lep/lepCommodities.js +65 -64
  19. package/dist/hooks/lep/lepCommodities.js.map +1 -1
  20. package/dist/hooks/lep/lepConsolidations.js +5 -5
  21. package/dist/hooks/lep/lepConsolidations.js.map +1 -1
  22. package/dist/hooks/lep/lepCustomerContacts.js +11 -13
  23. package/dist/hooks/lep/lepCustomerContacts.js.map +1 -1
  24. package/dist/hooks/lep/lepCustomerInfo.js +15 -12
  25. package/dist/hooks/lep/lepCustomerInfo.js.map +1 -1
  26. package/dist/hooks/lep/lepCustomerPeople.js +15 -20
  27. package/dist/hooks/lep/lepCustomerPeople.js.map +1 -1
  28. package/dist/hooks/lep/lepCustomerSalesNotes.js +7 -5
  29. package/dist/hooks/lep/lepCustomerSalesNotes.js.map +1 -1
  30. package/dist/hooks/lep/lepCustomersAccessorials.js +12 -5
  31. package/dist/hooks/lep/lepCustomersAccessorials.js.map +1 -1
  32. package/dist/hooks/lep/lepDateInputCell.js +11 -1
  33. package/dist/hooks/lep/lepDateInputCell.js.map +1 -1
  34. package/dist/hooks/lep/lepDispatches.js +6 -6
  35. package/dist/hooks/lep/lepDispatches.js.map +1 -1
  36. package/dist/hooks/lep/lepDocuments.js +41 -42
  37. package/dist/hooks/lep/lepDocuments.js.map +1 -1
  38. package/dist/hooks/lep/lepEDI.js +8 -8
  39. package/dist/hooks/lep/lepEDI.js.map +1 -1
  40. package/dist/hooks/lep/lepHosLogs.js +9 -9
  41. package/dist/hooks/lep/lepHosLogs.js.map +1 -1
  42. package/dist/hooks/lep/lepInvoiceAdjustment.d.ts +3 -0
  43. package/dist/hooks/lep/lepInvoiceAdjustment.js +9 -6
  44. package/dist/hooks/lep/lepInvoiceAdjustment.js.map +1 -1
  45. package/dist/hooks/lep/lepInvoiceDetails.d.ts +3 -0
  46. package/dist/hooks/lep/lepInvoiceDetails.js +37 -26
  47. package/dist/hooks/lep/lepInvoiceDetails.js.map +1 -1
  48. package/dist/hooks/lep/lepInvoiceLineItems.js +15 -22
  49. package/dist/hooks/lep/lepInvoiceLineItems.js.map +1 -1
  50. package/dist/hooks/lep/lepKickbacks.js +13 -13
  51. package/dist/hooks/lep/lepKickbacks.js.map +1 -1
  52. package/dist/hooks/lep/lepLoadChanges.js +10 -10
  53. package/dist/hooks/lep/lepLoadChanges.js.map +1 -1
  54. package/dist/hooks/lep/lepLoadInfo.js +213 -172
  55. package/dist/hooks/lep/lepLoadInfo.js.map +1 -1
  56. package/dist/hooks/lep/lepLoadLocation.d.ts +5 -0
  57. package/dist/hooks/lep/lepLoadLocation.js +13 -8
  58. package/dist/hooks/lep/lepLoadLocation.js.map +1 -1
  59. package/dist/hooks/lep/lepLoadNotes.js +14 -10
  60. package/dist/hooks/lep/lepLoadNotes.js.map +1 -1
  61. package/dist/hooks/lep/lepLoadSummary.d.ts +5 -0
  62. package/dist/hooks/lep/lepLoadSummary.js +37 -0
  63. package/dist/hooks/lep/lepLoadSummary.js.map +1 -0
  64. package/dist/hooks/lep/lepNotifications.js +5 -5
  65. package/dist/hooks/lep/lepNotifications.js.map +1 -1
  66. package/dist/hooks/lep/lepPossibleIssues.js +8 -6
  67. package/dist/hooks/lep/lepPossibleIssues.js.map +1 -1
  68. package/dist/hooks/lep/lepQuoteResult.d.ts +3 -0
  69. package/dist/hooks/lep/lepQuoteResult.js +20 -9
  70. package/dist/hooks/lep/lepQuoteResult.js.map +1 -1
  71. package/dist/hooks/lep/lepRateLogs.js +5 -5
  72. package/dist/hooks/lep/lepRateLogs.js.map +1 -1
  73. package/dist/hooks/lep/lepRateReviews.js +15 -23
  74. package/dist/hooks/lep/lepRateReviews.js.map +1 -1
  75. package/dist/hooks/lep/lepShipcons.d.ts +2 -0
  76. package/dist/hooks/lep/lepShipcons.js +215 -166
  77. package/dist/hooks/lep/lepShipcons.js.map +1 -1
  78. package/dist/hooks/lep/lepTendersWidget.js +7 -7
  79. package/dist/hooks/lep/lepTendersWidget.js.map +1 -1
  80. package/dist/hooks/lep/lepTimeInputCell.js +7 -1
  81. package/dist/hooks/lep/lepTimeInputCell.js.map +1 -1
  82. package/dist/hooks/lep/lepUserNotes.js +20 -22
  83. package/dist/hooks/lep/lepUserNotes.js.map +1 -1
  84. package/dist/hooks/lep/lepWidget.d.ts +1 -0
  85. package/dist/hooks/lep/lepWidget.js +22 -16
  86. package/dist/hooks/lep/lepWidget.js.map +1 -1
  87. package/dist/hooks/lep/lepWorkflowEvents.js +5 -5
  88. package/dist/hooks/lep/lepWorkflowEvents.js.map +1 -1
  89. package/dist/hooks/lep/loadEditPanel.d.ts +22 -0
  90. package/dist/hooks/lep/loadEditPanel.js +157 -139
  91. package/dist/hooks/lep/loadEditPanel.js.map +1 -1
  92. package/dist/hooks/lep/nerdMap/nerdMap.js +1 -0
  93. package/dist/hooks/lep/nerdMap/nerdMap.js.map +1 -1
  94. package/dist/hooks/load/loadsSearchInput.d.ts +1 -0
  95. package/dist/hooks/load/loadsSearchInput.js +16 -3
  96. package/dist/hooks/load/loadsSearchInput.js.map +1 -1
  97. package/dist/hooks/quote/constants.d.ts +1 -1
  98. package/dist/hooks/quote/constants.js +325 -42
  99. package/dist/hooks/quote/constants.js.map +1 -1
  100. package/dist/hooks/quote/helpers.js +3 -2
  101. package/dist/hooks/quote/helpers.js.map +1 -1
  102. package/dist/hooks/quote/result.js +8 -12
  103. package/dist/hooks/quote/result.js.map +1 -1
  104. package/dist/locales/en/common.json +2 -1
  105. package/dist/locales/en/components.json +1 -0
  106. package/dist/locales/en/entities.json +2 -2
  107. package/dist/locales/index.d.ts +2 -0
  108. package/dist/redux/commoditiesTasksSlice/commoditiesTasksSelectors.d.ts +2 -3
  109. package/dist/redux/commoditiesTasksSlice/commoditiesTasksSelectors.js +3 -4
  110. package/dist/redux/commoditiesTasksSlice/commoditiesTasksSelectors.js.map +1 -1
  111. package/dist/redux/commoditiesTasksSlice/commoditiesTasksSlice.d.ts +18 -4
  112. package/dist/redux/commoditiesTasksSlice/commoditiesTasksSlice.js +5 -3
  113. package/dist/redux/commoditiesTasksSlice/commoditiesTasksSlice.js.map +1 -1
  114. package/dist/redux/lep/lepSelectors.d.ts +6 -7
  115. package/dist/redux/lep/lepSelectors.js +11 -14
  116. package/dist/redux/lep/lepSelectors.js.map +1 -1
  117. package/dist/redux/lep/lepSlice.d.ts +33 -9
  118. package/dist/redux/lep/lepSlice.js +21 -14
  119. package/dist/redux/lep/lepSlice.js.map +1 -1
  120. package/dist/redux/loadInfoTasksSlice/loadInfoTasksSelectors.d.ts +2 -3
  121. package/dist/redux/loadInfoTasksSlice/loadInfoTasksSelectors.js +2 -2
  122. package/dist/redux/loadInfoTasksSlice/loadInfoTasksSelectors.js.map +1 -1
  123. package/dist/redux/loadInfoTasksSlice/loadInfoTasksSlice.d.ts +18 -4
  124. package/dist/redux/loadInfoTasksSlice/loadInfoTasksSlice.js +6 -3
  125. package/dist/redux/loadInfoTasksSlice/loadInfoTasksSlice.js.map +1 -1
  126. package/dist/redux/quote/quoteAction.d.ts +5 -1
  127. package/dist/redux/quote/quoteAction.js +3 -2
  128. package/dist/redux/quote/quoteAction.js.map +1 -1
  129. package/dist/redux/quote/quoteReducer.d.ts +1 -1
  130. package/dist/redux/quote/quoteReducer.js +2 -1
  131. package/dist/redux/quote/quoteReducer.js.map +1 -1
  132. package/dist/redux/quote/quoteSelectors.d.ts +1 -1
  133. package/dist/redux/quote/quoteSelectors.js +1 -1
  134. package/dist/redux/quote/quoteSelectors.js.map +1 -1
  135. package/dist/redux/shipconsTasksSlice/shipconsTasksSelectors.d.ts +2 -3
  136. package/dist/redux/shipconsTasksSlice/shipconsTasksSelectors.js +2 -2
  137. package/dist/redux/shipconsTasksSlice/shipconsTasksSelectors.js.map +1 -1
  138. package/dist/redux/shipconsTasksSlice/shipconsTasksSlice.d.ts +11 -3
  139. package/dist/redux/shipconsTasksSlice/shipconsTasksSlice.js +4 -2
  140. package/dist/redux/shipconsTasksSlice/shipconsTasksSlice.js.map +1 -1
  141. package/package.json +2 -2
@@ -1,37 +1,42 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Box, Sheet, Tooltip, Typography, useColorScheme } from "@mui/joy";
3
- import { useEffect, useRef, useState } from "react";
3
+ import { useContext, useEffect, useMemo, useRef, useState, } from "react";
4
4
  import { useHotkeys } from "react-hotkeys-hook";
5
5
  import { lepWidgetIndexSelector } from "../../redux/lep/lepSelectors";
6
6
  import { setWidgetIndex } from "../../redux/lep/lepSlice";
7
7
  import { useSelector, useDispatch } from "react-redux";
8
+ import { LoadIDContext } from "./loadEditPanel";
8
9
  /**
9
10
  *
10
11
  * @param {LoadWidgetProps} props LoadWidgetProps
11
12
  * @returns {React.ReactElement | null} LepWidget component
12
13
  */
13
14
  export function LepWidget(props) {
14
- const { index } = props;
15
+ const id = useContext(LoadIDContext);
16
+ const { index, title, compareRoute } = props;
15
17
  const [focused, setFocused] = useState(false);
16
18
  const ref = useRef(null);
17
- const widgetIndex = useSelector(lepWidgetIndexSelector);
19
+ const select = useMemo(() => (s) => lepWidgetIndexSelector(s, Number(id)), []);
20
+ const widgetIndex = useSelector(select);
18
21
  const dispatch = useDispatch();
19
22
  const { mode, systemMode } = useColorScheme();
20
23
  useHotkeys(`option+${index + 1}, alt+${index + 1}`, (e) => {
21
- e.preventDefault();
22
- if (ref && ref.current) {
23
- ref.current.focus();
24
+ if (!compareRoute) {
25
+ e.preventDefault();
26
+ if (ref && ref.current) {
27
+ ref.current.focus();
28
+ }
24
29
  }
25
30
  }, { enableOnFormTags: ["INPUT", "SELECT", "TEXTAREA"] });
26
31
  useEffect(() => {
27
- if (widgetIndex === index + 1) {
32
+ if (widgetIndex === index + 1 && !compareRoute) {
28
33
  if (ref && ref.current && !focused) {
29
34
  ref.current.focus();
30
35
  }
31
36
  }
32
37
  }, [widgetIndex]);
33
38
  return (_jsxs(Sheet, { ref: ref, onFocus: () => {
34
- dispatch(setWidgetIndex(index + 1));
39
+ dispatch(setWidgetIndex({ loadID: Number(id), index: index + 1 }));
35
40
  setFocused(true);
36
41
  }, onBlur: () => {
37
42
  setFocused(false);
@@ -39,7 +44,7 @@ export function LepWidget(props) {
39
44
  scrollMarginTop: "192px",
40
45
  position: "relative",
41
46
  outline: "none",
42
- p: 1,
47
+ p: 0.5,
43
48
  height: "100%",
44
49
  border: focused
45
50
  ? `2px solid ${mode === "dark" || (mode === "system" && systemMode === "dark")
@@ -56,12 +61,13 @@ export function LepWidget(props) {
56
61
  },
57
62
  }), children: [_jsx(Box, { sx: {
58
63
  height: "100%",
59
- }, children: props.children }), _jsx(Tooltip, { arrow: true, size: "sm", color: "neutral", variant: "outlined", title: "Keyboard Shortcut to focus", children: _jsx(Typography, { sx: {
60
- position: "absolute",
61
- bottom: "2px",
62
- right: "2px",
63
- fontSize: 9,
64
- backdropFilter: "blur(10px)",
65
- }, level: "body-xs", startDecorator: _jsx("i", { className: "fa-solid fa-option" }), children: index + 1 }) })] }));
64
+ }, children: props.children }), _jsxs(Box, { sx: {
65
+ position: "absolute",
66
+ display: "flex",
67
+ bottom: "2px",
68
+ right: "2px",
69
+ fontSize: 9,
70
+ backdropFilter: "blur(10px)",
71
+ }, children: [title, _jsx(Tooltip, { arrow: true, size: "sm", color: "neutral", variant: "outlined", title: "Keyboard Shortcut to focus", children: _jsx(Typography, { level: "body-xs", fontSize: "inherit", ml: 0.5, startDecorator: _jsx("i", { className: "fa-solid fa-option" }), children: index + 1 }) })] })] }));
66
72
  }
67
73
  //# sourceMappingURL=lepWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lepWidget.js","sourceRoot":"","sources":["../../../src/hooks/lep/lepWidget.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lepWidget.js","sourceRoot":"","sources":["../../../src/hooks/lep/lepWidget.tsx"],"names":[],"mappings":"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"}
@@ -2,16 +2,16 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Box, Skeleton } from "@mui/joy";
3
3
  import { useGridApiRef, useKeepGroupedColumnsHidden, } from "@mui/x-data-grid-premium";
4
4
  import { DateTime } from "luxon";
5
- import { useCallback, useMemo } from "react";
6
- import { useParams } from "react-router-dom";
7
- import { LepStyledDataGrid } from "./lepStyledDataGrid";
5
+ import { useCallback, useContext, useMemo } from "react";
8
6
  import { useGetLoadWorkflowEventsV1Query } from "../../redux";
7
+ import { LepStyledDataGrid } from "./lepStyledDataGrid";
8
+ import { LoadIDContext } from "./loadEditPanel";
9
9
  /**
10
10
  *
11
11
  * @returns {ReactElement} LepWorkflowEvents
12
12
  */
13
13
  export function LepWorkflowEvents() {
14
- const { id } = useParams();
14
+ const id = useContext(LoadIDContext);
15
15
  const { isLoading } = useGetLoadWorkflowEventsV1Query({
16
16
  loadID: Number(id),
17
17
  }, { skip: Number.isNaN(Number(id)) });
@@ -24,7 +24,7 @@ export function LepWorkflowEvents() {
24
24
  * @returns {ReactElement} Content
25
25
  */
26
26
  function Content() {
27
- const { id } = useParams();
27
+ const id = useContext(LoadIDContext);
28
28
  const apiRef = useGridApiRef();
29
29
  const { data: rows } = useGetLoadWorkflowEventsV1Query({
30
30
  loadID: Number(id),
@@ -1 +1 @@
1
- {"version":3,"file":"lepWorkflowEvents.js","sourceRoot":"","sources":["../../../src/hooks/lep/lepWorkflowEvents.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lepWorkflowEvents.js","sourceRoot":"","sources":["../../../src/hooks/lep/lepWorkflowEvents.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,24 @@
1
1
  import { ReactElement } from "react";
2
+ export declare const LoadIDContext: import("react").Context<string>;
3
+ export interface Widget {
4
+ id: number;
5
+ title: string;
6
+ organism?: any;
7
+ size?: {
8
+ xs?: number;
9
+ sm?: number;
10
+ md?: number;
11
+ lg?: number;
12
+ xl?: number;
13
+ };
14
+ }
2
15
  /**
3
16
  *
17
+ * @param root0
18
+ * @param root0.quoteRoute
19
+ * @param root0.loadsRoute
20
+ * @param root0.backTo
21
+ * @param root0.mapID
4
22
  * @returns {ReactElement} LoadEditPanel
5
23
  */
6
24
  export declare function LoadEditPanel({ quoteRoute, loadsRoute, mapID, backTo, }: {
@@ -9,3 +27,7 @@ export declare function LoadEditPanel({ quoteRoute, loadsRoute, mapID, backTo, }
9
27
  backTo?: string;
10
28
  mapID?: string;
11
29
  }): ReactElement;
30
+ export declare const tabs: {
31
+ label: string;
32
+ widgets: Widget[];
33
+ }[];
@@ -1,31 +1,38 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useCallback, useEffect, useState } from "react";
2
+ import { Box, Button, CircularProgress, DialogActions, DialogContent, Grid, IconButton, Modal, ModalDialog, Sheet, Tab, TabList, TabPanel, Tabs, Tooltip, Typography, tabClasses, useTheme, } from "@mui/joy";
3
+ import { useMediaQuery } from "@mui/system";
4
+ import { NerdDraggableDialog } from "@nerdjs/nerd-ui";
5
+ import { nanoid } from "@reduxjs/toolkit";
6
+ import { createContext, useCallback, useContext, useEffect, useState, } from "react";
3
7
  import { useHotkeys } from "react-hotkeys-hook";
4
- import { useNavigate, useParams } from "react-router-dom";
5
- import { Box, Grid, Sheet, Tab, TabList, TabPanel, Tabs, tabClasses, CircularProgress, IconButton, Tooltip, useTheme, Modal, ModalDialog, DialogContent, DialogActions, Button, Typography, } from "@mui/joy";
6
- import { decreaseWidgetIndex, increaseWidgetIndex, setLepStagedDocuments, setLepTabIndex, setWidgetIndex, } from "../../redux/lep/lepSlice";
7
- import { lepStagedDocumentsSelector, lepTabIndexSelector, lepWidgetIndexSelector, } from "../../redux/lep/lepSelectors";
8
- import { checkFields, LepAccessorials, LepActionBar, LepAdjustments, LepAppointmentArrival, LepClaims, LepCommodities, LepConsolidations, LepCustomerContacts, LepCustomerInfo, LepCustomerPeople, LepCustomersAccessorials, LepCustomerSalesNotes, LepDispatches, LepDocuments, LepEDI, LepHosLogs, LepInvoiceAdjustments, LepInvoiceDetails, LepInvoiceLineItems, LepKickbacks, LepLoadChanges, LepLoadInfo, LepLoadLocation, LepLoadNotes, LepNotifications, LepPossibleIssues, LepQuoteResult, LepRateLogs, LepRateReviews, LepShipcons, LepTendersWidget, LepUserNotes, LepWorkflowEvents, LepWidget, } from "./index";
8
+ import { useTranslation } from "react-i18next";
9
+ import { useDispatch, useSelector } from "react-redux";
10
+ import { Link, useNavigate } from "react-router-dom";
11
+ import salesKitI18n from "../../i18n";
9
12
  import { setSelectedDate, setSelectedServiceLevel, useGetLoadQuery, useGetLoadRateReviewsV1Query, } from "../../redux";
13
+ import { lepStagedDocumentsSelector, lepTabIndexSelector, lepWidgetIndexSelector, } from "../../redux/lep/lepSelectors";
14
+ import { decreaseWidgetIndex, increaseWidgetIndex, setLepStagedDocuments, setLepTabIndex, setWidgetIndex, } from "../../redux/lep/lepSlice";
10
15
  import { addLoadInfoTask, removeLoadInfoTask, } from "../../redux/loadInfoTasksSlice/loadInfoTasksSlice";
11
- import { nanoid } from "@reduxjs/toolkit";
12
- import salesKitI18n from "../../i18n";
13
- import { useTranslation } from "react-i18next";
14
- import { useMediaQuery } from "@mui/system";
15
- import { setRecalculateBody } from "../../redux/quote";
16
- import { NerdDraggableDialog } from "@nerdjs/nerd-ui";
17
- import { Link } from "react-router-dom";
18
- import { useSelector, useDispatch } from "react-redux";
16
+ import { quoteRecalculateBodySelector, setRecalculateBody, } from "../../redux/quote";
17
+ import { LepAccessorials, LepActionBar, LepAdjustments, LepAppointmentArrival, LepClaims, LepCommodities, LepConsolidations, LepCustomerContacts, LepCustomerInfo, LepCustomerPeople, LepCustomerSalesNotes, LepCustomersAccessorials, LepDispatches, LepDocuments, LepEDI, LepHosLogs, LepInvoiceAdjustments, LepInvoiceDetails, LepInvoiceLineItems, LepKickbacks, LepLoadChanges, LepLoadInfo, LepLoadLocation, LepLoadNotes, LepNotifications, LepPossibleIssues, LepQuoteResult, LepRateLogs, LepRateReviews, LepShipcons, LepTendersWidget, LepUserNotes, LepWidget, LepWorkflowEvents, checkFields, } from "./index";
18
+ import { LepLoadSummary } from "./lepLoadSummary";
19
+ export const LoadIDContext = createContext("");
19
20
  /**
20
21
  *
22
+ * @param root0
23
+ * @param root0.quoteRoute
24
+ * @param root0.loadsRoute
25
+ * @param root0.backTo
26
+ * @param root0.mapID
21
27
  * @returns {ReactElement} LoadEditPanel
22
28
  */
23
29
  export function LoadEditPanel({ quoteRoute, loadsRoute, mapID, backTo, }) {
24
30
  const { t } = useTranslation("common", { i18n: salesKitI18n });
25
- const tabIndex = useSelector(lepTabIndexSelector);
26
31
  const navigate = useNavigate();
27
- const { id } = useParams();
28
- const widgetIndex = useSelector(lepWidgetIndexSelector);
32
+ const id = useContext(LoadIDContext);
33
+ const tabIndex = useSelector((s) => lepTabIndexSelector(s, Number(id)));
34
+ const recalculateBody = useSelector(quoteRecalculateBodySelector(Number(id)));
35
+ const widgetIndex = useSelector((s) => lepWidgetIndexSelector(s, Number(id)));
29
36
  const dispatch = useDispatch();
30
37
  const { data: rateReviews } = useGetLoadRateReviewsV1Query(Number(id), {
31
38
  skip: Number.isNaN(Number(id)),
@@ -34,11 +41,11 @@ export function LoadEditPanel({ quoteRoute, loadsRoute, mapID, backTo, }) {
34
41
  skip: Number.isNaN(Number(id)),
35
42
  });
36
43
  const [iframeLoading, setIframeLoading] = useState(true);
37
- const stagedDocuments = useSelector(lepStagedDocumentsSelector);
44
+ const stagedDocuments = useSelector((s) => lepStagedDocumentsSelector(s, Number(id)));
38
45
  const theme = useTheme();
39
46
  const upSM = useMediaQuery(theme.breakpoints.up("sm"));
40
47
  const handleClose = useCallback(() => {
41
- dispatch(setLepStagedDocuments(undefined));
48
+ dispatch(setLepStagedDocuments({ loadID: Number(id), docs: undefined }));
42
49
  setIframeLoading(true);
43
50
  }, [stagedDocuments]);
44
51
  useEffect(() => {
@@ -50,93 +57,100 @@ export function LoadEditPanel({ quoteRoute, loadsRoute, mapID, backTo, }) {
50
57
  replace: true,
51
58
  });
52
59
  dispatch(setRecalculateBody({
53
- quote_id: load.quoteID,
54
- load_id: load.id,
55
- reefer_temp: load.reeferTemp,
56
- reefer_cont: load.reeferCont,
57
- date_received: load.receivedDate,
58
- reference_number: load.referenceNumber,
59
- load_type: load.loadType,
60
- cargo_value: load.cargoValue,
61
- notes: load.notes,
62
- customer_miles: load.customerMiles,
63
- customer_id: load.customerID,
64
- do_not_break_seal: load.doNotBreakSeal,
65
- disable_rounding: load.disableRounding,
66
- force_spot: load.forceSpot,
67
- local_move: load.localMove,
68
- no_split: load.noSplit,
69
- otr_pickup: load.otrPickup,
70
- service_level: load.serviceLevel,
71
- booked_by_id: load.bookedByID,
72
- person_ids: load.person_ids,
73
- dryvan_only: load.dryvanOnly,
74
- load_preferred_carrier_type: load.loadPreferredCarrierType,
75
- nmfc_class_id: load.nmfcClassID,
76
- seal: load.seal,
60
+ id: load.id,
61
+ body: {
62
+ quote_id: load.quoteID,
63
+ load_id: load.id,
64
+ reefer_temp: load.reeferTemp,
65
+ reefer_cont: load.reeferCont,
66
+ date_received: load.receivedDate,
67
+ reference_number: load.referenceNumber,
68
+ load_type: load.loadType,
69
+ cargo_value: load.cargoValue,
70
+ notes: load.notes,
71
+ customer_miles: load.customerMiles,
72
+ customer_id: load.customerID,
73
+ do_not_break_seal: load.doNotBreakSeal,
74
+ disable_rounding: load.disableRounding,
75
+ force_spot: load.forceSpot,
76
+ local_move: load.localMove,
77
+ no_split: load.noSplit,
78
+ otr_pickup: load.otrPickup,
79
+ service_level: load.serviceLevel,
80
+ booked_by_id: load.bookedByID,
81
+ person_ids: load.person_ids,
82
+ dryvan_only: load.dryvanOnly,
83
+ load_preferred_carrier_type: load.loadPreferredCarrierType,
84
+ nmfc_class_id: load.nmfcClassID,
85
+ seal: load.seal,
86
+ },
77
87
  }));
78
88
  checkFields(load, dispatch);
79
89
  }
80
90
  }, [load?.id]);
81
91
  useEffect(() => {
82
- if (load?.rateType === "Spot") {
83
- dispatch(removeLoadInfoTask("forceSpot"));
84
- if (rateReviews && rateReviews.length === 0) {
85
- const label = "No Rate Review record for load. Please upload a Rate Confirmation and create a Rate Review.";
86
- dispatch(addLoadInfoTask({
87
- field: "rateReview",
88
- task: {
89
- label: label,
90
- status: "danger",
91
- uuid: nanoid(),
92
- step: {
93
- content: label,
94
- selector: ".LepPanelRoot",
95
- mutationObservables: [".LoadInfoTaskItem-rateReview"],
96
- highlightedSelectors: [".LoadInfoTaskItem-rateReview"],
92
+ if (load?.id)
93
+ if (load?.rateType === "Spot") {
94
+ dispatch(removeLoadInfoTask({ loadID: load.id, field: "forceSpot" }));
95
+ if (rateReviews && rateReviews.length === 0) {
96
+ const label = "No Rate Review record for load. Please upload a Rate Confirmation and create a Rate Review.";
97
+ dispatch(addLoadInfoTask({
98
+ loadID: load.id,
99
+ field: "rateReview",
100
+ task: {
101
+ label: label,
102
+ status: "danger",
103
+ uuid: nanoid(),
104
+ step: {
105
+ content: label,
106
+ selector: ".LepPanelRoot",
107
+ mutationObservables: [".LoadInfoTaskItem-rateReview"],
108
+ highlightedSelectors: [".LoadInfoTaskItem-rateReview"],
109
+ },
110
+ order: 8,
111
+ tabIndex: 2,
97
112
  },
98
- order: 8,
99
- tabIndex: 2,
100
- },
101
- }));
102
- }
103
- else {
104
- dispatch(addLoadInfoTask({
105
- field: "rateReview",
106
- task: {
107
- label: "Rate review created.",
108
- status: "success",
109
- uuid: nanoid(),
110
- order: 8,
111
- },
112
- }));
113
- }
114
- }
115
- else if (load?.contractCustomer) {
116
- dispatch(removeLoadInfoTask("rateReview"));
117
- if (!load.forceSpot && !load?.contractRateRecordID) {
118
- const label = "No contract rate found for lane, please 'Force Spot' and recaculate.";
119
- dispatch(addLoadInfoTask({
120
- field: "forceSpot",
121
- task: {
122
- label: label,
123
- status: "danger",
124
- uuid: nanoid(),
125
- step: {
126
- content: label,
127
- selector: ".LepPanelRoot",
128
- mutationObservables: [".LoadInfoTaskItem-forceSpot"],
129
- highlightedSelectors: [".LoadInfoTaskItem-forceSpot"],
113
+ }));
114
+ }
115
+ else {
116
+ dispatch(addLoadInfoTask({
117
+ loadID: load.id,
118
+ field: "rateReview",
119
+ task: {
120
+ label: "Rate review created.",
121
+ status: "success",
122
+ uuid: nanoid(),
123
+ order: 8,
130
124
  },
131
- order: 6,
132
- tabIndex: 0,
133
- },
134
- }));
125
+ }));
126
+ }
135
127
  }
136
- else {
137
- dispatch(removeLoadInfoTask("forceSpot"));
128
+ else if (load?.contractCustomer) {
129
+ dispatch(removeLoadInfoTask({ loadID: load.id, field: "rateReview" }));
130
+ if (!load.forceSpot && !load?.contractRateRecordID) {
131
+ const label = "No contract rate found for lane, please 'Force Spot' and recaculate.";
132
+ dispatch(addLoadInfoTask({
133
+ loadID: load.id,
134
+ field: "forceSpot",
135
+ task: {
136
+ label: label,
137
+ status: "danger",
138
+ uuid: nanoid(),
139
+ step: {
140
+ content: label,
141
+ selector: ".LepPanelRoot",
142
+ mutationObservables: [".LoadInfoTaskItem-forceSpot"],
143
+ highlightedSelectors: [".LoadInfoTaskItem-forceSpot"],
144
+ },
145
+ order: 6,
146
+ tabIndex: 0,
147
+ },
148
+ }));
149
+ }
150
+ else {
151
+ dispatch(removeLoadInfoTask({ loadID: load.id, field: "forceSpot" }));
152
+ }
138
153
  }
139
- }
140
154
  }, [rateReviews, load]);
141
155
  useEffect(() => {
142
156
  if (!id)
@@ -145,67 +159,67 @@ export function LoadEditPanel({ quoteRoute, loadsRoute, mapID, backTo, }) {
145
159
  useHotkeys(`option+left, alt+left`, (e) => {
146
160
  e.preventDefault();
147
161
  if (tabIndex > 0) {
148
- dispatch(setWidgetIndex(0));
149
- dispatch(setLepTabIndex(tabIndex - 1));
162
+ dispatch(setWidgetIndex({ loadID: Number(id), index: 0 }));
163
+ dispatch(setLepTabIndex({ loadID: Number(id), index: tabIndex - 1 }));
150
164
  }
151
165
  }, { enableOnFormTags: ["INPUT", "SELECT", "TEXTAREA"] });
152
166
  useHotkeys(`option+right, alt+right`, (e) => {
153
167
  e.preventDefault();
154
168
  if (tabIndex < tabs.length - 1) {
155
- dispatch(setWidgetIndex(0));
156
- dispatch(setLepTabIndex(tabIndex + 1));
169
+ dispatch(setWidgetIndex({ loadID: Number(id), index: 0 }));
170
+ dispatch(setLepTabIndex({ loadID: Number(id), index: tabIndex + 1 }));
157
171
  }
158
172
  }, { enableOnFormTags: ["INPUT", "SELECT", "TEXTAREA"] });
159
173
  useHotkeys(`option+down, alt+down`, (e) => {
160
174
  e.preventDefault();
161
175
  if (widgetIndex < tabs[tabIndex].widgets.length)
162
- dispatch(increaseWidgetIndex());
176
+ dispatch(increaseWidgetIndex(Number(id)));
163
177
  }, { enableOnFormTags: ["INPUT", "SELECT", "TEXTAREA"] });
164
178
  useHotkeys(`option+up, alt+up`, (e) => {
165
179
  e.preventDefault();
166
180
  if (widgetIndex > 1)
167
- dispatch(decreaseWidgetIndex());
181
+ dispatch(decreaseWidgetIndex(Number(id)));
168
182
  }, { enableOnFormTags: ["INPUT", "SELECT", "TEXTAREA"] });
169
183
  useEffect(() => {
170
- dispatch(setLepStagedDocuments(undefined));
184
+ dispatch(setLepStagedDocuments({ loadID: Number(id), docs: undefined }));
171
185
  dispatch(setSelectedDate(null));
172
186
  dispatch(setSelectedServiceLevel(undefined));
173
187
  }, [id]);
174
- if (!id) {
188
+ if (!id || !recalculateBody) {
175
189
  return _jsx(_Fragment, {});
176
190
  }
177
191
  return (_jsxs(Box, { children: [_jsxs(Tabs, { value: tabIndex, onChange: (_e, v) => {
178
- dispatch(setWidgetIndex(0));
179
- setTimeout(() => dispatch(setLepTabIndex(v)), 50);
192
+ dispatch(setWidgetIndex({ loadID: Number(id), index: 0 }));
193
+ setTimeout(() => dispatch(setLepTabIndex({ loadID: Number(id), index: v })), 50);
180
194
  }, sx: {
181
195
  width: "100%",
182
196
  bgcolor: "transparent",
183
- }, children: [_jsx(Box, { position: "sticky", top: 98, zIndex: 1201, sx: {
197
+ }, children: [_jsxs(Box, { position: "sticky", top: 98, zIndex: 1201, sx: {
184
198
  borderBottom: "1px solid lightgrey",
185
- }, children: _jsx(Sheet, { children: _jsx(Box, { sx: { pl: 1, pr: 1, pt: 0.25, pb: 0.25 }, children: _jsx(LepActionBar, { onDuplicateLoad: (id) => navigate(`${loadsRoute}/${id}`), backTo: backTo, children: _jsx(TabList, { size: "sm", disableUnderline: true, sx: {
186
- zIndex: (t) => t.zIndex.popup,
187
- overflow: "auto",
188
- scrollSnapType: "x mandatory",
189
- "&::-webkit-scrollbar": { display: "none" },
190
- p: 0.5,
191
- gap: 0.5,
192
- borderRadius: "xl",
193
- bgcolor: "background.level1",
194
- [`& .${tabClasses.root}[aria-selected="true"]`]: {
195
- boxShadow: "sm",
196
- bgcolor: "background.surface",
197
- },
198
- [`& .${tabClasses.root}`]: {
199
- pt: 0.3,
200
- pb: 0.3,
201
- pl: 1,
202
- pr: 1,
203
- },
204
- }, children: tabs.map((t, i) => (_jsx(Tab, { disableIndicator: true, variant: "plain", color: tabIndex === i ? "primary" : "neutral", sx: { flex: "none", scrollSnapAlign: "start" }, children: t.label }, i))) }) }) }) }) }), tabs.map((_tab, i) => (_jsx(TabPanel, { value: i, sx: {
199
+ }, children: [_jsx(Sheet, { children: _jsx(Box, { sx: { pl: 1, pr: 1, pt: 0.25, pb: 0.25 }, children: _jsx(LepActionBar, { onDuplicateLoad: (id) => navigate(`${loadsRoute}/${id}`), backTo: backTo, children: _jsx(TabList, { size: "sm", disableUnderline: true, sx: {
200
+ zIndex: (t) => t.zIndex.popup,
201
+ overflow: "auto",
202
+ scrollSnapType: "x mandatory",
203
+ "&::-webkit-scrollbar": { display: "none" },
204
+ p: 0.5,
205
+ gap: 0.5,
206
+ borderRadius: "xl",
207
+ bgcolor: "background.level1",
208
+ [`& .${tabClasses.root}[aria-selected="true"]`]: {
209
+ boxShadow: "sm",
210
+ bgcolor: "background.surface",
211
+ },
212
+ [`& .${tabClasses.root}`]: {
213
+ pt: 0.3,
214
+ pb: 0.3,
215
+ pl: 1,
216
+ pr: 1,
217
+ },
218
+ }, children: tabs.map((t, i) => (_jsx(Tab, { disableIndicator: true, variant: "plain", color: tabIndex === i ? "primary" : "neutral", sx: { flex: "none", scrollSnapAlign: "start" }, children: t.label }, i))) }) }) }) }), _jsx(LepLoadSummary, {})] }), tabs.map((_tab, i) => (_jsx(TabPanel, { value: i, sx: {
205
219
  p: 0,
206
220
  display: tabIndex === i ? "flex" : "none",
207
221
  justifyContent: "center",
208
- }, children: _jsx(Grid, { p: 1, container: true, spacing: 1, maxWidth: 1920, width: "100%", children: tabs[tabIndex].widgets.map((w, i) => (_jsx(Grid, { ...w.size, children: _jsx(LepWidget, { title: w.title, index: Number(i), children: w.organism ? (_jsx(w.organism, { quoteRoute: quoteRoute, mapID: mapID })) : (_jsx("div", {})) }) }, w.id))) }) }, i)))] }), stagedDocuments && upSM
222
+ }, children: _jsx(Grid, { p: 1, container: true, spacing: 1, maxWidth: 1920, width: "100%", children: tabs[tabIndex].widgets.map((w, i) => (_jsx(Grid, { ...w.size, children: _jsx(LepWidget, { title: w.title, index: Number(i), compareRoute: false, children: w.organism ? (_jsx(w.organism, { quoteRoute: quoteRoute, mapID: mapID })) : (_jsx("div", {})) }) }, w.id))) }) }, i)))] }), stagedDocuments && upSM
209
223
  ? stagedDocuments.map((d) => _jsx(Document, { d: d }, d.uuid))
210
224
  : null, stagedDocuments && !upSM ? (_jsx(Modal, { open: Boolean(stagedDocuments[0]), onClose: () => handleClose(), children: _jsxs(ModalDialog, { layout: "fullscreen", children: [_jsxs(DialogContent, { sx: {
211
225
  height: "100%",
@@ -216,7 +230,7 @@ export function LoadEditPanel({ quoteRoute, loadsRoute, mapID, backTo, }) {
216
230
  width: "100%",
217
231
  }, src: `${window._APP_CONFIG?.api?.endpoint}/v3/file-service/files/${stagedDocuments[0]?.documentID}?inline=1`, onLoad: () => setIframeLoading(false) })] }), _jsxs(DialogActions, { children: [_jsx(Button, { variant: "soft", color: "neutral", onClick: () => handleClose(), children: t("Close") }), _jsx(Button, { variant: "soft", color: "neutral", component: Link, to: `${window._APP_CONFIG?.api?.endpoint}/v3/file-service/files/${stagedDocuments[0]?.documentID}?inline=0`, target: "_blank", startDecorator: _jsx("i", { className: "fa-solid fa-arrow-up-right-from-square" }), children: "Open" })] })] }) })) : null] }));
218
232
  }
219
- const tabs = [
233
+ export const tabs = [
220
234
  {
221
235
  label: "Load",
222
236
  widgets: [
@@ -234,7 +248,6 @@ const tabs = [
234
248
  organism: LepLoadInfo,
235
249
  size: {
236
250
  xs: 12,
237
- md: 6,
238
251
  },
239
252
  },
240
253
  {
@@ -243,7 +256,7 @@ const tabs = [
243
256
  organism: LepAdjustments,
244
257
  size: {
245
258
  xs: 12,
246
- md: 6,
259
+ lg: 4.5,
247
260
  },
248
261
  },
249
262
  {
@@ -252,6 +265,7 @@ const tabs = [
252
265
  organism: LepAccessorials,
253
266
  size: {
254
267
  xs: 12,
268
+ lg: 7.5,
255
269
  },
256
270
  },
257
271
  {
@@ -520,13 +534,13 @@ const tabs = [
520
534
  xs: 12,
521
535
  },
522
536
  },
537
+ { id: 2, title: "Kickbacks", organism: LepKickbacks, size: { xs: 12 } },
523
538
  {
524
- id: 2,
539
+ id: 3,
525
540
  title: "Invoice Line Items",
526
541
  organism: LepInvoiceLineItems,
527
- size: { xs: 12 },
542
+ size: { xs: 6 },
528
543
  },
529
- { id: 3, title: "Kickbacks", organism: LepKickbacks, size: { xs: 6 } },
530
544
  {
531
545
  id: 4,
532
546
  title: "Invoice Adjustments",
@@ -538,13 +552,17 @@ const tabs = [
538
552
  ];
539
553
  const Document = ({ d }) => {
540
554
  const { t } = useTranslation("common", { i18n: salesKitI18n });
555
+ const id = useContext(LoadIDContext);
541
556
  const [iframeLoading, setIframeLoading] = useState(true);
542
557
  const dispatch = useDispatch();
543
- const stagedDocuments = useSelector(lepStagedDocumentsSelector);
558
+ const stagedDocuments = useSelector((s) => lepStagedDocumentsSelector(s, Number(id)));
544
559
  const handleClose = useCallback((uuid) => {
545
- dispatch(setLepStagedDocuments(stagedDocuments
546
- ? [...stagedDocuments.filter((i) => i.uuid !== uuid)]
547
- : []));
560
+ dispatch(setLepStagedDocuments({
561
+ loadID: Number(id),
562
+ docs: stagedDocuments
563
+ ? [...stagedDocuments.filter((i) => i.uuid !== uuid)]
564
+ : [],
565
+ }));
548
566
  }, [stagedDocuments]);
549
567
  return (_jsx(NerdDraggableDialog, { draggableProps: {
550
568
  handle: "#draggable-area",