@burdenoff/microfe-movethewheels 2026.929.4 → 2026.930.2

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 (49) hide show
  1. package/dist/components/CustomerPicker.js +52 -48
  2. package/dist/components/EntityCombobox.js +25 -23
  3. package/dist/components/OrderItemRow.js +123 -78
  4. package/dist/hooks/useCustomers.js +52 -17
  5. package/dist/hooks/useFleet.js +126 -44
  6. package/dist/hooks/useInventory.js +43 -7
  7. package/dist/hooks/useMultiModalShipments.js +30 -26
  8. package/dist/hooks/useRefetchOnLeaveEdit.js +10 -0
  9. package/dist/hooks/useRoutes.js +55 -15
  10. package/dist/movethewheels/components/CustomerPicker.d.ts +5 -1
  11. package/dist/movethewheels/components/EntityCombobox.d.ts +6 -3
  12. package/dist/movethewheels/components/OrderItemRow.d.ts +7 -1
  13. package/dist/movethewheels/hooks/useCustomers.d.ts +3 -0
  14. package/dist/movethewheels/hooks/useFleet.d.ts +6 -0
  15. package/dist/movethewheels/hooks/useInventory.d.ts +2 -0
  16. package/dist/movethewheels/hooks/useMultiModalShipments.d.ts +1 -0
  17. package/dist/movethewheels/hooks/useRefetchOnLeaveEdit.d.ts +7 -0
  18. package/dist/movethewheels/hooks/useRoutes.d.ts +3 -0
  19. package/dist/movethewheels/utils/orderValidation.d.ts +11 -0
  20. package/dist/pages/CreateOrderPage.js +349 -297
  21. package/dist/pages/DriverDetailsPage.js +258 -251
  22. package/dist/pages/DriversPage.js +3 -1
  23. package/dist/pages/MultiModalShipmentPage.js +139 -125
  24. package/dist/pages/OrderDetailsPage.js +132 -140
  25. package/dist/pages/ProductDetailsPage.js +22 -19
  26. package/dist/pages/RouteDetailsPage.js +284 -281
  27. package/dist/pages/TrackingPage.js +2 -1
  28. package/dist/pages/VehicleDetailsPage.js +28 -25
  29. package/dist/utils/orderValidation.js +18 -0
  30. package/package.json +1 -1
  31. package/src/movethewheels/components/CustomerPicker.tsx +12 -0
  32. package/src/movethewheels/components/EntityCombobox.tsx +30 -11
  33. package/src/movethewheels/components/OrderItemRow.tsx +44 -0
  34. package/src/movethewheels/hooks/useCustomers.ts +38 -0
  35. package/src/movethewheels/hooks/useFleet.ts +125 -5
  36. package/src/movethewheels/hooks/useInventory.ts +42 -0
  37. package/src/movethewheels/hooks/useMultiModalShipments.ts +9 -7
  38. package/src/movethewheels/hooks/useRefetchOnLeaveEdit.ts +18 -0
  39. package/src/movethewheels/hooks/useRoutes.ts +51 -0
  40. package/src/movethewheels/pages/CreateOrderPage.tsx +66 -2
  41. package/src/movethewheels/pages/DriverDetailsPage.tsx +14 -1
  42. package/src/movethewheels/pages/DriversPage.tsx +7 -1
  43. package/src/movethewheels/pages/MultiModalShipmentPage.tsx +15 -1
  44. package/src/movethewheels/pages/OrderDetailsPage.tsx +25 -25
  45. package/src/movethewheels/pages/ProductDetailsPage.tsx +2 -0
  46. package/src/movethewheels/pages/RouteDetailsPage.tsx +10 -4
  47. package/src/movethewheels/pages/TrackingPage.tsx +7 -2
  48. package/src/movethewheels/pages/VehicleDetailsPage.tsx +2 -0
  49. package/src/movethewheels/utils/orderValidation.ts +53 -0
@@ -1,12 +1,18 @@
1
1
  import { OrderItem, Product } from '../types';
2
+ import { OrderItemFieldErrors } from '../utils/orderValidation';
2
3
 
3
4
  interface OrderItemRowProps {
4
5
  item: OrderItem;
5
6
  index: number;
6
7
  products: Product[];
7
8
  productsLoading: boolean;
9
+ productsLoadingMore?: boolean;
10
+ productsHasMore?: boolean;
11
+ productsTotalCount?: number;
12
+ onLoadMoreProducts?: () => void | Promise<void>;
13
+ errors?: OrderItemFieldErrors;
8
14
  onUpdate: (index: number, field: string, value: unknown) => void;
9
15
  onRemove: (index: number) => void;
10
16
  }
11
- export declare function OrderItemRow({ item, index, products, productsLoading, onUpdate, onRemove, }: OrderItemRowProps): import("react").JSX.Element;
17
+ export declare function OrderItemRow({ item, index, products, productsLoading, productsLoadingMore, productsHasMore, productsTotalCount, onLoadMoreProducts, errors, onUpdate, onRemove, }: OrderItemRowProps): import("react").JSX.Element;
12
18
  export {};
@@ -10,8 +10,11 @@ interface UseCustomersResult {
10
10
  totalCustomers: number;
11
11
  hasMore: boolean;
12
12
  isLoading: boolean;
13
+ /** True while an additional server page is appended. */
14
+ isLoadingMore: boolean;
13
15
  error: Error | null;
14
16
  refetch: () => void;
17
+ loadMore: () => Promise<void>;
15
18
  createCustomer: (customer: Partial<Customer>) => Promise<Customer>;
16
19
  updateCustomer: (id: string, updates: Partial<Customer>) => Promise<Customer>;
17
20
  deleteCustomer: (id: string) => Promise<void>;
@@ -149,8 +149,11 @@ interface UseVehiclesResult {
149
149
  /** True when the last fetch returned a full page (rawCount === limit). */
150
150
  hasMore: boolean;
151
151
  isLoading: boolean;
152
+ /** True while an additional server page is appended. */
153
+ isLoadingMore: boolean;
152
154
  error: Error | null;
153
155
  refetch: () => void;
156
+ loadMore: () => Promise<void>;
154
157
  updateVehicleStatus: (id: string, status: VehicleStatus) => Promise<Vehicle>;
155
158
  assignDriver: (vehicleId: string, driverId: string) => Promise<Vehicle>;
156
159
  deleteVehicle: (id: string) => Promise<void>;
@@ -168,8 +171,11 @@ interface UseDriversResult {
168
171
  /** True when the last fetch returned a full page (rawCount === limit). */
169
172
  hasMore: boolean;
170
173
  isLoading: boolean;
174
+ /** True while an additional server page is appended. */
175
+ isLoadingMore: boolean;
171
176
  error: Error | null;
172
177
  refetch: () => void;
178
+ loadMore: () => Promise<void>;
173
179
  updateDriverStatus: (id: string, status: DriverStatus) => Promise<Driver>;
174
180
  assignVehicle: (driverId: string, vehicleId: string | null) => Promise<Driver>;
175
181
  }
@@ -72,8 +72,10 @@ export declare function useProducts(options?: UseProductsOptions): {
72
72
  totalProducts: number;
73
73
  hasMore: boolean;
74
74
  isLoading: boolean;
75
+ isLoadingMore: boolean;
75
76
  error: Error | null;
76
77
  refetch: () => undefined;
78
+ loadMore: () => Promise<void>;
77
79
  };
78
80
  export declare function useProductStats(): {
79
81
  stats: {
@@ -59,6 +59,7 @@ export interface MultiModalShipment {
59
59
  export declare function useMultiModalShipments(options?: {
60
60
  limit?: number;
61
61
  offset?: number;
62
+ search?: string;
62
63
  }): {
63
64
  shipments: MultiModalShipment[];
64
65
  totalShipments: number;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Detail pages render their `/edit` form from the same route component, so the
3
+ * component (and its record hook) stays mounted across edit → detail. Without a
4
+ * refetch the detail view keeps showing the pre-edit record. Call `refetch`
5
+ * exactly when the edit route is left, never on the initial mount.
6
+ */
7
+ export declare function useRefetchOnLeaveEdit(isEditRoute: boolean, refetch: () => void): void;
@@ -14,8 +14,11 @@ interface UseRoutesResult {
14
14
  /** True when the last fetch has another server page. */
15
15
  hasMore: boolean;
16
16
  isLoading: boolean;
17
+ /** True while an additional server page is appended. */
18
+ isLoadingMore: boolean;
17
19
  error: Error | null;
18
20
  refetch: () => void;
21
+ loadMore: () => Promise<void>;
19
22
  createRoute: (route: Partial<Route>) => Promise<Route>;
20
23
  updateRoute: (id: string, updates: Omit<Partial<Route>, 'vehicleId' | 'driverId'> & {
21
24
  vehicleId?: string | null;
@@ -0,0 +1,11 @@
1
+ import { OrderItem } from '../types';
2
+
3
+ export type OrderItemField = 'name' | 'sku' | 'quantity' | 'weight' | 'value' | 'length' | 'width' | 'height';
4
+ export type OrderItemFieldErrors = Partial<Record<OrderItemField, string>>;
5
+ /**
6
+ * Validates one delivery-job cargo line without imposing pricing or order
7
+ * semantics that belong to the service. A catalog product may supply the name;
8
+ * every line still carries its SKU because cargo-item records require one.
9
+ */
10
+ export declare function validateOrderItem(item: OrderItem): OrderItemFieldErrors;
11
+ export declare function validateOrderItems(items: OrderItem[]): Record<string, OrderItemFieldErrors>;