@flowselections/pick-schermen-kwekers 1.0.47 → 1.0.50
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.
- package/dist-lib/components/PickPublicPage.js +2 -2
- package/dist-lib/components/PickstationsPage.js +4 -4
- package/dist-lib/components/pick/CartItemRows.d.ts +1 -1
- package/dist-lib/components/pick/CartItemRows.js +1 -1
- package/dist-lib/components/pick/LanguageTiles.js +1 -1
- package/dist-lib/components/pick/PickScherm.d.ts +1 -1
- package/dist-lib/components/pick/PickScherm.js +27 -27
- package/dist-lib/components/pick/PreviewDialog.d.ts +1 -1
- package/dist-lib/components/pick/PreviewDialog.js +3 -3
- package/dist-lib/components/pick/PublicPickRoute.js +1 -1
- package/dist-lib/components/pick/QueueTable.d.ts +2 -2
- package/dist-lib/components/pick/QueueTable.d.ts.map +1 -1
- package/dist-lib/components/pick/QueueTable.js +38 -11
- package/dist-lib/components/pick/ReferentiedataBanner.js +2 -2
- package/dist-lib/components/pick/ShippingNoteScan.js +1 -1
- package/dist-lib/components/pick/StickerState.js +1 -1
- package/dist-lib/components/settings/ReferentiedataPickdocumentenCard.js +2 -2
- package/dist-lib/hooks/usePickConfig.d.ts +11 -11
- package/dist-lib/hooks/usePickConfig.js +1 -1
- package/dist-lib/hooks/usePickQueue.d.ts +3 -1
- package/dist-lib/hooks/usePickQueue.d.ts.map +1 -1
- package/dist-lib/hooks/usePickQueue.js +11 -5
- package/dist-lib/hooks/usePickReferenceData.d.ts +1 -1
- package/dist-lib/hooks/usePickReferenceData.js +1 -1
- package/dist-lib/hooks/usePrintJob.d.ts +2 -2
- package/dist-lib/hooks/usePrintJob.js +1 -1
- package/dist-lib/hooks/useShippingNoteStatus.d.ts +1 -1
- package/dist-lib/hooks/useShippingNoteStatus.js +1 -1
- package/dist-lib/index.d.ts +28 -28
- package/dist-lib/index.js +28 -28
- package/dist-lib/integrations/supabase/auth-attacher.js +1 -1
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +105 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/__tests__/pick142.test.js +13 -6
- package/dist-lib/lib/__tests__/pick143.test.js +3 -3
- package/dist-lib/lib/__tests__/pick144.test.js +1 -1
- package/dist-lib/lib/__tests__/pick145.test.js +2 -2
- package/dist-lib/lib/__tests__/pickAlreadyPrinted.test.js +1 -1
- package/dist-lib/lib/__tests__/pickCartResults.test.js +1 -1
- package/dist-lib/lib/__tests__/pickPreview140.test.js +1 -1
- package/dist-lib/lib/__tests__/pickRobustness.test.js +4 -4
- package/dist-lib/lib/__tests__/pickRowState.test.js +1 -1
- package/dist-lib/lib/__tests__/pickSentElsewhere.test.js +2 -2
- package/dist-lib/lib/__tests__/pickSetComponents.test.js +1 -1
- package/dist-lib/lib/__tests__/pickStatusRef.test.js +4 -4
- package/dist-lib/lib/__tests__/pickStickers.test.js +2 -2
- package/dist-lib/lib/__tests__/pickStickers138.test.js +1 -1
- package/dist-lib/lib/logisticsApi.d.ts +2 -2
- package/dist-lib/lib/logisticsApi.js +2 -2
- package/dist-lib/lib/pick142.d.ts +16 -11
- package/dist-lib/lib/pick142.d.ts.map +1 -1
- package/dist-lib/lib/pick142.js +17 -7
- package/dist-lib/lib/pick143.d.ts +1 -1
- package/dist-lib/lib/pick143.js +1 -1
- package/dist-lib/lib/pick144.d.ts +1 -1
- package/dist-lib/lib/pick144.js +2 -2
- package/dist-lib/lib/pick145.d.ts +1 -1
- package/dist-lib/lib/pick145.js +3 -3
- package/dist-lib/lib/pickApi.d.ts +2 -2
- package/dist-lib/lib/pickApi.js +4 -4
- package/dist-lib/lib/pickCartResults.d.ts +3 -3
- package/dist-lib/lib/pickCartResults.js +1 -1
- package/dist-lib/lib/pickPreview.js +1 -1
- package/dist-lib/lib/pickPrint.d.ts +1 -1
- package/dist-lib/lib/pickPrint.js +1 -1
- package/dist-lib/lib/pickReferenceApi.d.ts +1 -1
- package/dist-lib/lib/pickReferenceApi.js +2 -2
- package/dist-lib/lib/pickRowState.d.ts +1 -1
- package/dist-lib/lib/pickTypes.d.ts +2 -0
- package/dist-lib/lib/pickTypes.d.ts.map +1 -1
- package/dist-lib/lib/pickUiText.js +3 -3
- package/dist-lib/lib/pickVerify.d.ts +1 -1
- package/dist-lib/lib/shippingNote.js +2 -2
- package/dist-lib/lib/shippingNoteStatus.js +1 -1
- package/package.json +2 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useQuery } from "@tanstack/react-query";
|
|
3
3
|
import { Loader2 } from "lucide-react";
|
|
4
|
-
import { pickApi } from "../lib/pickApi";
|
|
5
|
-
import { PickScherm } from "./pick/PickScherm";
|
|
4
|
+
import { pickApi } from "../lib/pickApi.js";
|
|
5
|
+
import { PickScherm } from "./pick/PickScherm.js";
|
|
6
6
|
/** Openbaar pickscherm, bereikbaar via /pickstation/<slug>. */
|
|
7
7
|
export function PickPublicPage({ slug }) {
|
|
8
8
|
const { data: station, isLoading } = useQuery({
|
|
@@ -3,10 +3,10 @@ import { useState } from "react";
|
|
|
3
3
|
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
4
4
|
import { Button, Card, CardContent, Dialog, DialogContent, DialogHeader, DialogTitle, Input, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Switch, Textarea, toast, } from "@flowselections/core";
|
|
5
5
|
import { AlertTriangle, Copy, ExternalLink, Loader2, Pencil, Plus, Printer, Trash2, Unlink, } from "lucide-react";
|
|
6
|
-
import { pickApi } from "../lib/pickApi";
|
|
7
|
-
import { usePickStations } from "../hooks/usePickConfig";
|
|
8
|
-
import { useKoppelingVoorBron } from "../hooks/useKoppelingVoorBron";
|
|
9
|
-
import { ReferentiedataBanner } from "./pick/ReferentiedataBanner";
|
|
6
|
+
import { pickApi } from "../lib/pickApi.js";
|
|
7
|
+
import { usePickStations } from "../hooks/usePickConfig.js";
|
|
8
|
+
import { useKoppelingVoorBron } from "../hooks/useKoppelingVoorBron.js";
|
|
9
|
+
import { ReferentiedataBanner } from "./pick/ReferentiedataBanner.js";
|
|
10
10
|
const emptyDraft = { name: "", description: "", active: true };
|
|
11
11
|
function publicUrl(slug) {
|
|
12
12
|
const origin = typeof window !== "undefined" ? window.location.origin : "";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { componentsUnknown } from "../../lib/pickTypes";
|
|
2
|
+
import { componentsUnknown } from "../../lib/pickTypes.js";
|
|
3
3
|
/**
|
|
4
4
|
* Karregels precies zoals de Engine ze levert. Een set is één pakket met
|
|
5
5
|
* daaronder de onderdelen ter informatie (geen eigen knop of vinkje).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Card } from "@flowselections/core";
|
|
3
|
-
import { PICK_LANGUAGES } from "../../lib/pickI18n";
|
|
3
|
+
import { PICK_LANGUAGES } from "../../lib/pickI18n.js";
|
|
4
4
|
/** Taalkeuze — zelfde tegel-uitstraling en bediening als de oude landselectie. */
|
|
5
5
|
export function LanguageTiles({ onSelect, selected }) {
|
|
6
6
|
return (_jsx("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-3 sm:gap-4 lg:grid-cols-4 xl:grid-cols-5", children: PICK_LANGUAGES.map((l) => (_jsxs(Card, { role: "button", tabIndex: 0, onClick: () => onSelect(l.code), onKeyDown: (e) => {
|
|
@@ -3,31 +3,31 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
|
3
3
|
import { useQuery } from "@tanstack/react-query";
|
|
4
4
|
import { Badge, Button, Card, CardContent, Input, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, toast, } from "@flowselections/core";
|
|
5
5
|
import { AlertTriangle, ArrowLeft, CheckCircle2, ChevronLeft, ChevronRight, FileDown, Globe, Loader2, Printer, RefreshCw, Search, WifiOff, Zap, } from "lucide-react";
|
|
6
|
-
import { LanguageTiles } from "./LanguageTiles";
|
|
7
|
-
import { QueueTable } from "./QueueTable";
|
|
8
|
-
import { isRowPrintable, pickDayOf, pickDayShortLabel, printBlockMessage, rowWaitOf, setKnownSiteZone } from "../../lib/pick143";
|
|
9
|
-
import { isPickWindowNotStarted } from "../../lib/pick144";
|
|
10
|
-
import { isForcedFor, lateSignupOf, releaseInfoOf, releaseMessage } from "../../lib/pick145";
|
|
11
|
-
import { PreviewDialog } from "./PreviewDialog";
|
|
12
|
-
import { ShippingNoteScan } from "./ShippingNoteScan";
|
|
13
|
-
import { getSessionId, pickApi } from "../../lib/pickApi";
|
|
14
|
-
import { sendLogisticsEvent } from "../../lib/logisticsApi";
|
|
15
|
-
import { CART_PLAN_MISMATCH_MESSAGE, formatSiteTime, WORKDAYS_UNKNOWN, autoSendMessage, fetchAutoSend, isPickWorkday, mismatchReason, nextWorkday, printErrorText, PRINT_FAILED_HINT, printStageLabel, siteTimeZone, siteToday, } from "../../lib/pick142";
|
|
16
|
-
import { completeLogisticsTaskForItem } from "../../lib/pickPrint";
|
|
17
|
-
import { cartRowOf, isPdfOnlyFailure, pickReadiness, printedCartIdsOf, pdfSaveWarning, unitRefOf, statusRefOf, unitTitleOf, } from "../../lib/pickTypes";
|
|
18
|
-
import { rowFingerprint, rowsToVerify } from "../../lib/pickVerify";
|
|
19
|
-
import { alreadyPrintedResults, CART_MISSING_MESSAGE, cartResultLine, cartsForRow, isCartMissingError, reprintCartsIndividually, resettableJobs, runExclusive, resultsFromBatch, resultsFromBatchError, summarizeCartResults, trackableJobs, } from "../../lib/pickCartResults";
|
|
20
|
-
import { getPickTranslator } from "../../lib/pickI18n";
|
|
21
|
-
import { friendlyPickError, getPickUiTexts } from "../../lib/pickUiText";
|
|
22
|
-
import { getPrintJobTexts } from "../../lib/pickPrintJobText";
|
|
23
|
-
import { defaultFilters, usePickDays, usePickHeartbeat, usePickQueue, } from "../../hooks/usePickQueue";
|
|
24
|
-
import { usePickDocumentTypes, usePickStatuses, useStationPrintPlek, } from "../../hooks/usePickConfig";
|
|
25
|
-
import { usePrintBatch, usePrintJob } from "../../hooks/usePrintJob";
|
|
26
|
-
import { useShippingNoteStatus } from "../../hooks/useShippingNoteStatus";
|
|
27
|
-
import { firstVisibleTarget, isJobFinished, isRowGoneError, NO_ROW_IN_FILTER_MESSAGE, RELEASE_PENDING_MESSAGE, ROW_GONE_MESSAGE, stuckMessage, stuckMinutesOf, } from "../../lib/pickRowState";
|
|
28
|
-
import { CartItemRows, PlanWarnings } from "./CartItemRows";
|
|
29
|
-
import { CartStickerState, OrderStickerMeldingen } from "./StickerState";
|
|
30
|
-
import { isWaitingShippingNote, shippingNoteMessage, shippingNoteSourceLabel, } from "../../lib/shippingNoteStatus";
|
|
6
|
+
import { LanguageTiles } from "./LanguageTiles.js";
|
|
7
|
+
import { QueueTable } from "./QueueTable.js";
|
|
8
|
+
import { isRowPrintable, pickDayOf, pickDayShortLabel, printBlockMessage, rowWaitOf, setKnownSiteZone } from "../../lib/pick143.js";
|
|
9
|
+
import { isPickWindowNotStarted } from "../../lib/pick144.js";
|
|
10
|
+
import { isForcedFor, lateSignupOf, releaseInfoOf, releaseMessage } from "../../lib/pick145.js";
|
|
11
|
+
import { PreviewDialog } from "./PreviewDialog.js";
|
|
12
|
+
import { ShippingNoteScan } from "./ShippingNoteScan.js";
|
|
13
|
+
import { getSessionId, pickApi } from "../../lib/pickApi.js";
|
|
14
|
+
import { sendLogisticsEvent } from "../../lib/logisticsApi.js";
|
|
15
|
+
import { CART_PLAN_MISMATCH_MESSAGE, formatSiteTime, WORKDAYS_UNKNOWN, autoSendMessage, fetchAutoSend, isPickWorkday, mismatchReason, nextWorkday, printErrorText, PRINT_FAILED_HINT, printStageLabel, siteTimeZone, siteToday, } from "../../lib/pick142.js";
|
|
16
|
+
import { completeLogisticsTaskForItem } from "../../lib/pickPrint.js";
|
|
17
|
+
import { cartRowOf, isPdfOnlyFailure, pickReadiness, printedCartIdsOf, pdfSaveWarning, unitRefOf, statusRefOf, unitTitleOf, } from "../../lib/pickTypes.js";
|
|
18
|
+
import { rowFingerprint, rowsToVerify } from "../../lib/pickVerify.js";
|
|
19
|
+
import { alreadyPrintedResults, CART_MISSING_MESSAGE, cartResultLine, cartsForRow, isCartMissingError, reprintCartsIndividually, resettableJobs, runExclusive, resultsFromBatch, resultsFromBatchError, summarizeCartResults, trackableJobs, } from "../../lib/pickCartResults.js";
|
|
20
|
+
import { getPickTranslator } from "../../lib/pickI18n.js";
|
|
21
|
+
import { friendlyPickError, getPickUiTexts } from "../../lib/pickUiText.js";
|
|
22
|
+
import { getPrintJobTexts } from "../../lib/pickPrintJobText.js";
|
|
23
|
+
import { defaultFilters, usePickDays, usePickHeartbeat, usePickQueue, } from "../../hooks/usePickQueue.js";
|
|
24
|
+
import { usePickDocumentTypes, usePickStatuses, useStationPrintPlek, } from "../../hooks/usePickConfig.js";
|
|
25
|
+
import { usePrintBatch, usePrintJob } from "../../hooks/usePrintJob.js";
|
|
26
|
+
import { useShippingNoteStatus } from "../../hooks/useShippingNoteStatus.js";
|
|
27
|
+
import { firstVisibleTarget, isJobFinished, isRowGoneError, NO_ROW_IN_FILTER_MESSAGE, RELEASE_PENDING_MESSAGE, ROW_GONE_MESSAGE, stuckMessage, stuckMinutesOf, } from "../../lib/pickRowState.js";
|
|
28
|
+
import { CartItemRows, PlanWarnings } from "./CartItemRows.js";
|
|
29
|
+
import { CartStickerState, OrderStickerMeldingen } from "./StickerState.js";
|
|
30
|
+
import { isWaitingShippingNote, shippingNoteMessage, shippingNoteSourceLabel, } from "../../lib/shippingNoteStatus.js";
|
|
31
31
|
const LANG_STORAGE_KEY = "pick.language";
|
|
32
32
|
/** Melding als de planning voor deze order geen karren heeft vastgelegd. */
|
|
33
33
|
/** Papier is geprint, maar de PDF-kopie op de werkplek is niet opgeslagen. */
|
|
@@ -1346,7 +1346,7 @@ export function PickScherm({ station, onBack }) {
|
|
|
1346
1346
|
? 100
|
|
1347
1347
|
: Math.round((checkDone / checkTotal) * 100);
|
|
1348
1348
|
return (_jsxs("div", { className: "space-y-4 pb-24 md:pb-0", children: [busyLoading && (_jsxs("div", { className: "space-y-1", role: "status", "aria-live": "polite", "aria-label": "Gegevens worden geladen", children: [_jsxs("div", { className: "flex items-center justify-between text-xs text-muted-foreground", children: [_jsx("span", { children: loading || loadingDay
|
|
1349
|
-
? "
|
|
1349
|
+
? "Pickwachtrij laden…"
|
|
1350
1350
|
: checkDone > 0
|
|
1351
1351
|
? `Pakbonnen controleren (${checkDone} van ${checkTotal})…`
|
|
1352
1352
|
: `Pakbonnen controleren (${checkTotal})…` }), _jsxs("span", { className: "tabular-nums", children: [loadPercent, "%"] })] }), _jsx("div", { className: "h-1.5 w-full overflow-hidden rounded-full bg-muted", children: _jsx("div", { className: "h-full rounded-full bg-primary transition-all duration-300", style: { width: `${Math.max(5, loadPercent)}%` } }) })] })), _jsxs("div", { className: "flex flex-col gap-3 md:flex-row md:flex-wrap md:items-center md:justify-between", children: [_jsxs("div", { className: "grid grid-cols-[auto_minmax(0,1fr)] items-center gap-3", children: [_jsxs(Button, { variant: "outline", size: "lg", className: "h-12 shrink-0 px-3 sm:px-4", onClick: () => setLang(null), "aria-label": t("changeLanguage"), children: [_jsx(Globe, { className: "h-5 w-5 sm:mr-2" }), _jsx("span", { className: "hidden sm:inline", children: t("changeLanguage") })] }), _jsxs("div", { className: "min-w-0", children: [_jsx("h2", { className: "truncate text-lg font-bold text-foreground sm:text-xl", children: station.name }), _jsxs("p", { className: "truncate text-sm text-muted-foreground", children: [pendingCount, " ", t("statusToPrint"), " \u00B7 ", printedCount, " ", t("statusPrinted"), openJobIds.length > 0 ? ` · ${openJobIds.length} wacht op printer` : ""] })] })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs(Button, { variant: "outline", size: "lg", className: "h-12 px-3", onClick: () => void shiftDay(-1), disabled: loadingDay || !(chosenDay ?? pickDay), "aria-label": ui.pickDayPrev, children: [_jsx(ChevronLeft, { className: "h-5 w-5 sm:mr-1" }), _jsx("span", { className: "hidden sm:inline", children: ui.pickDayPrev })] }), _jsx("div", { className: "flex h-12 items-center rounded-md border bg-muted px-4 text-sm font-semibold text-foreground", children: chosenDay ? dayLabel(chosenDay) : ui.pickDayToday }), _jsxs(Button, { variant: "outline", size: "lg", className: "h-12 px-3", onClick: () => void shiftDay(1), disabled: loadingDay || !(chosenDay ?? pickDay), "aria-label": ui.pickDayNext, children: [_jsx("span", { className: "hidden sm:inline", children: ui.pickDayNext }), _jsx(ChevronRight, { className: "h-5 w-5 sm:ml-1" })] }), chosenDay && (_jsx(Button, { variant: "secondary", size: "lg", className: "h-12 px-4", onClick: () => void chooseDay("current"), disabled: loadingDay, children: ui.pickDayBackToToday }))] }), _jsxs("div", { className: "flex items-center gap-2", children: [!online && (_jsxs(Badge, { className: "bg-destructive text-destructive-foreground", children: [_jsx(WifiOff, { className: "mr-1 h-3.5 w-3.5" }), " ", t("offline")] })), _jsx(Button, { variant: "outline", size: "icon", className: "h-12 w-12 shrink-0", onClick: refresh, "aria-label": t("refresh"), children: _jsx(RefreshCw, { className: "h-4 w-4" }) }), _jsxs(Button, { variant: "outline", size: "lg", className: "hidden h-14 px-5 md:inline-flex", disabled: fetchingNotes, onClick: () => void fetchShippingNotes(), children: [fetchingNotes ? (_jsx(Loader2, { className: "mr-2 h-5 w-5 animate-spin" })) : (_jsx(FileDown, { className: "mr-2 h-5 w-5" })), fetchingNotes ? "Ophalen…" : "Verzendbrieven ophalen"] }), cartsPerPrint != null && (_jsxs(Button, { size: "lg", className: "hidden h-14 px-6 text-lg md:inline-flex", disabled: loading || batchPrinting || (busyId != null || actionBusy), onClick: () => void printNextCarts(), children: [batchPrinting ? (_jsx(Loader2, { className: "mr-2 h-5 w-5 animate-spin" })) : (_jsx(Printer, { className: "mr-2 h-5 w-5" })), "Volgende printen (", cartsPerPrint, " karren)"] })), _jsxs(Button, { size: "lg", className: "hidden h-14 px-8 text-lg md:inline-flex", onClick: () => (pending ? confirmPending() : fetchNextLocked()), disabled: (busyId !== null || actionBusy) || fetchingData, children: [(busyId !== null || actionBusy) || fetchingData ? (_jsx(Loader2, { className: "mr-2 h-5 w-5 animate-spin" })) : pending && !readiness.ready ? (_jsx(RefreshCw, { className: "mr-2 h-5 w-5" })) : (_jsx(Printer, { className: "mr-2 h-5 w-5" })), pending && !readiness.ready ? "Pakbon ophalen" : t("printNext")] })] })] }), syncError && (_jsxs("div", { role: "alert", className: "flex items-start gap-2 rounded-md border-2 border-destructive/50 bg-destructive/5 p-3 text-sm text-destructive", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-4 w-4 shrink-0" }), _jsxs("span", { children: [SYNC_ERROR_MESSAGE, _jsxs("details", { className: "mt-1 text-xs text-muted-foreground", children: [_jsx("summary", { children: "Details voor beheer" }), syncError] })] })] })), !plekLoading && !printPlek && (_jsxs("div", { className: "flex items-start gap-2 rounded-md border-2 border-destructive/50 bg-destructive/5 p-3 text-sm text-destructive", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-4 w-4 shrink-0" }), _jsx("span", { children: "Nog geen printplek gekoppeld \u2014 de opdracht blijft in de wachtrij staan." })] })), (cartMissing || rowGone) && (_jsxs("div", { role: "alert", className: "flex flex-col gap-2 rounded-md border-2 border-destructive/50 bg-destructive/5 p-3 text-sm text-destructive sm:flex-row sm:items-center sm:justify-between", children: [_jsxs("span", { className: "flex items-start gap-2", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-4 w-4 shrink-0" }), rowGone ? ROW_GONE_MESSAGE : CART_MISSING_MESSAGE] }), _jsx(Button, { variant: "outline", size: "sm", onClick: () => {
|
|
@@ -1420,5 +1420,5 @@ export function PickScherm({ station, onBack }) {
|
|
|
1420
1420
|
})] }) })), _jsxs(Button, { variant: "outline", size: "lg", className: "h-12 w-full sm:hidden", "aria-expanded": filtersOpen, onClick: () => setFiltersOpen((v) => !v), children: [_jsx(Search, { className: "mr-2 h-4 w-4" }), " ", ui.filters] }), _jsx(Card, { className: filtersOpen ? "" : "hidden sm:block", children: _jsxs(CardContent, { className: "flex flex-wrap items-center gap-3 p-3 sm:p-4", children: [_jsxs("div", { className: "relative w-full min-w-0 flex-1 sm:min-w-64", children: [_jsx(Search, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { className: "h-12 pl-9 text-base", placeholder: t("search"), value: searchInput, onChange: (e) => setSearchInput(e.target.value) })] }), _jsxs(Select, { value: chosenDay ?? "current", onValueChange: (v) => void chooseDay(v), children: [_jsx(SelectTrigger, { className: "h-12 w-full sm:w-56", disabled: loadingDay, children: _jsx(SelectValue, { placeholder: ui.pickDay }) }), _jsxs(SelectContent, { className: "z-[100] bg-popover opacity-100", children: [_jsx(SelectItem, { value: "current", children: ui.pickDayToday }), safePickDays.map((d) => (_jsxs(SelectItem, { value: d.day, children: [dayLabel(d.day), d.orders > 0 ? ` (${d.orders})` : ""] }, d.day)))] })] }), _jsxs(Select, { value: filters.documentTypeId ?? "all", onValueChange: (v) => setFilters((f) => ({ ...f, documentTypeId: v === "all" ? null : v, page: 0 })), children: [_jsx(SelectTrigger, { className: "h-12 w-full sm:w-52", children: _jsx(SelectValue, { placeholder: ui.allDocumentTypes }) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "all", children: ui.allDocumentTypes }), (Array.isArray(documentTypes) ? documentTypes : []).map((dt) => (_jsx(SelectItem, { value: dt.id, children: dt.name }, dt.id)))] })] }), _jsx(Button, { variant: filters.onlyPending ? "default" : "outline", className: "h-12", onClick: () => setFilters((f) => ({ ...f, onlyPending: !f.onlyPending, page: 0 })), children: ui.onlyPending }), _jsxs(Button, { variant: filters.urgentOnly ? "default" : "outline", className: "h-12", onClick: () => setFilters((f) => ({ ...f, urgentOnly: !f.urgentOnly, page: 0 })), children: [_jsx(Zap, { className: "mr-2 h-4 w-4" }), ui.onlyUrgent, urgentCount > 0 ? ` (${urgentCount})` : ""] })] }) }), !realtimeOk && (_jsx("p", { className: "text-sm text-muted-foreground", children: ui.connectionLost })), cartsPerPrint != null && (_jsx("div", { className: "flex justify-end md:hidden", children: _jsxs(Button, { className: "h-12", disabled: loading || batchPrinting || (busyId != null || actionBusy), onClick: () => void printNextCarts(), children: [batchPrinting ? (_jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" })) : (_jsx(Printer, { className: "mr-2 h-4 w-4" })), "Volgende printen (", cartsPerPrint, " karren)"] }) })), _jsx("div", { className: "md:hidden", children: _jsxs(Button, { variant: "outline", className: "h-12 w-full", disabled: fetchingNotes, onClick: () => void fetchShippingNotes(), children: [fetchingNotes ? (_jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" })) : (_jsx(FileDown, { className: "mr-2 h-4 w-4" })), fetchingNotes ? "Ophalen…" : "Verzendbrieven ophalen"] }) }), loading ? (_jsxs("div", { className: "flex items-center justify-center py-16 text-muted-foreground", children: [_jsx(Loader2, { className: "mr-2 h-5 w-5 animate-spin" }), " ", t("loadingQueue")] })) : (_jsxs(_Fragment, { children: [earlierRows.length > 0 && (_jsxs("section", { className: "mb-4 rounded-lg border border-primary/40 bg-muted/40 p-3", "aria-label": "Nog niet gescand van eerdere dagen", children: [_jsxs("h3", { className: "mb-2 text-sm font-semibold text-foreground", children: ["Nog niet gescand van eerdere dagen (", earlierRows.length, ")"] }), _jsx("ul", { className: "divide-y divide-border", children: earlierRows.map((row) => (_jsxs("li", { className: "flex flex-wrap items-center justify-between gap-2 py-2", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "truncate font-medium", children: row.document_number ?? row.order_number ?? "Pakbon" }), _jsxs("div", { className: "text-xs text-muted-foreground", children: [pickDayShortLabel(pickDayOf(row)), row.customer_name ? ` · ${row.customer_name}` : ""] })] }), _jsx(Button, { size: "sm", variant: "outline", disabled: busyId !== null || actionBusy, onClick: async () => {
|
|
1421
1421
|
await printAllForItem(row);
|
|
1422
1422
|
void refetchEarlier();
|
|
1423
|
-
}, children: "Opnieuw printen" })] }, row.id))) })] })), _jsx(QueueTable, { items: items, lockedIds: lockedIds, statuses: Array.isArray(statuses) ? statuses : [], documentTypes: Array.isArray(documentTypes) ? documentTypes : [], busyId: busyId, readinessById: readinessById, siteTimeZone: siteTz, pickDay: chosenDay ?? pickDay ?? null, waitingIds: waitingQueueIds, onPick: handlePick, onReprint: handleReprintLocked, onPrintAll: printAllForItem, onSelectPrinted: selectPrintedForReprint, onMarkPrinted: markPrinted, onPreview: setPreviewItem, t: t })] })), _jsxs("div", { className: "flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between", children: [_jsxs("span", { className: "text-center text-sm text-muted-foreground sm:text-left", children: [t("page"), " ", filters.page + 1, " ", t("of"), " ", totalPages] }), _jsxs("div", { className: "grid grid-cols-2 gap-2 sm:flex", children: [_jsx(Button, { variant: "outline", className: "h-12 w-full sm:w-auto", disabled: filters.page === 0, onClick: () => setFilters((f) => ({ ...f, page: Math.max(0, f.page - 1) })), children: t("previous") }), _jsx(Button, { variant: "outline", className: "h-12 w-full sm:w-auto", disabled: filters.page + 1 >= totalPages, onClick: () => setFilters((f) => ({ ...f, page: f.page + 1 })), children: t("next") })] })] }), _jsx("div", { className: "fixed inset-x-0 bottom-0 z-40 border-t bg-background/95 p-3 pb-[max(0.75rem,env(safe-area-inset-bottom))] backdrop-blur md:hidden", children: _jsxs(Button, { size: "lg", className: "h-14 w-full text-lg", onClick: () => (pending ? confirmPending() : fetchNextLocked()), disabled: (busyId !== null || actionBusy) || fetchingData, children: [(busyId !== null || actionBusy) || fetchingData ? (_jsx(Loader2, { className: "mr-2 h-5 w-5 animate-spin" })) : pending && !readiness.ready ? (_jsx(RefreshCw, { className: "mr-2 h-5 w-5" })) : (_jsx(Printer, { className: "mr-2 h-5 w-5" })), _jsxs("span", { className: "truncate", children: [pending && !readiness.ready ? "Pakbon ophalen" : t("printNext"), pending?.document_number ? ` · ${pending.document_number}` : ""] })] }) }), _jsx(PreviewDialog, { item: previewItem, stationSlug: station.slug, onClose: () => setPreviewItem(null) })] }));
|
|
1423
|
+
}, children: "Opnieuw printen" })] }, row.id))) })] })), _jsx(QueueTable, { items: items.filter((item) => readinessById[item.id]?.replaced !== true), lockedIds: lockedIds, statuses: Array.isArray(statuses) ? statuses : [], documentTypes: Array.isArray(documentTypes) ? documentTypes : [], busyId: busyId, readinessById: readinessById, siteTimeZone: siteTz, pickDay: chosenDay ?? pickDay ?? null, waitingIds: waitingQueueIds, onPick: handlePick, onReprint: handleReprintLocked, onPrintAll: printAllForItem, onSelectPrinted: selectPrintedForReprint, onMarkPrinted: markPrinted, onPreview: setPreviewItem, t: t })] })), _jsxs("div", { className: "flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between", children: [_jsxs("span", { className: "text-center text-sm text-muted-foreground sm:text-left", children: [t("page"), " ", filters.page + 1, " ", t("of"), " ", totalPages] }), _jsxs("div", { className: "grid grid-cols-2 gap-2 sm:flex", children: [_jsx(Button, { variant: "outline", className: "h-12 w-full sm:w-auto", disabled: filters.page === 0, onClick: () => setFilters((f) => ({ ...f, page: Math.max(0, f.page - 1) })), children: t("previous") }), _jsx(Button, { variant: "outline", className: "h-12 w-full sm:w-auto", disabled: filters.page + 1 >= totalPages, onClick: () => setFilters((f) => ({ ...f, page: f.page + 1 })), children: t("next") })] })] }), _jsx("div", { className: "fixed inset-x-0 bottom-0 z-40 border-t bg-background/95 p-3 pb-[max(0.75rem,env(safe-area-inset-bottom))] backdrop-blur md:hidden", children: _jsxs(Button, { size: "lg", className: "h-14 w-full text-lg", onClick: () => (pending ? confirmPending() : fetchNextLocked()), disabled: (busyId !== null || actionBusy) || fetchingData, children: [(busyId !== null || actionBusy) || fetchingData ? (_jsx(Loader2, { className: "mr-2 h-5 w-5 animate-spin" })) : pending && !readiness.ready ? (_jsx(RefreshCw, { className: "mr-2 h-5 w-5" })) : (_jsx(Printer, { className: "mr-2 h-5 w-5" })), _jsxs("span", { className: "truncate", children: [pending && !readiness.ready ? "Pakbon ophalen" : t("printNext"), pending?.document_number ? ` · ${pending.document_number}` : ""] })] }) }), _jsx(PreviewDialog, { item: previewItem, stationSlug: station.slug, onClose: () => setPreviewItem(null) })] }));
|
|
1424
1424
|
}
|
|
@@ -2,9 +2,9 @@ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
3
|
import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from "@flowselections/core";
|
|
4
4
|
import { AlertTriangle, Loader2 } from "lucide-react";
|
|
5
|
-
import { fetchPickPreview, PickPreviewError } from "../../lib/pickPreview";
|
|
6
|
-
import { pickApi } from "../../lib/pickApi";
|
|
7
|
-
import { isRowGoneError, RELEASE_PENDING_MESSAGE, ROW_GONE_MESSAGE } from "../../lib/pickRowState";
|
|
5
|
+
import { fetchPickPreview, PickPreviewError } from "../../lib/pickPreview.js";
|
|
6
|
+
import { pickApi } from "../../lib/pickApi.js";
|
|
7
|
+
import { isRowGoneError, RELEASE_PENDING_MESSAGE, ROW_GONE_MESSAGE } from "../../lib/pickRowState.js";
|
|
8
8
|
/**
|
|
9
9
|
* Toont het PDF-voorbeeld zoals de printketen het opbouwt. Bewust zonder
|
|
10
10
|
* printknop: printen loopt uitsluitend via de wachtrijknoppen.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useParams } from "@tanstack/react-router";
|
|
3
|
-
import { PickPublicPage } from "../PickPublicPage";
|
|
3
|
+
import { PickPublicPage } from "../PickPublicPage.js";
|
|
4
4
|
/**
|
|
5
5
|
* Publieke pickstation-pagina voor route /pickstation/$slug.
|
|
6
6
|
* Leest de slug zelf uit de router, zodat de shell deze pagina direct kan renderen.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { PickDocumentType, PickQueueItem, PickStatus } from "../../lib/pickTypes";
|
|
2
|
-
import { type PickTranslator } from "../../lib/pickI18n";
|
|
1
|
+
import type { PickDocumentType, PickQueueItem, PickStatus } from "../../lib/pickTypes.js";
|
|
2
|
+
import { type PickTranslator } from "../../lib/pickI18n.js";
|
|
3
3
|
interface Props {
|
|
4
4
|
items: PickQueueItem[];
|
|
5
5
|
lockedIds: Set<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueueTable.d.ts","sourceRoot":"","sources":["../../../src/components/pick/QueueTable.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"QueueTable.d.ts","sourceRoot":"","sources":["../../../src/components/pick/QueueTable.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAUvF,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAe5E,UAAU,KAAK;IACb,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACzO,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,4DAA4D;IAC5D,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3C,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAChD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,CAAC,EAAE,cAAc,CAAC;CACpB;AA8DD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,SAAS,EACT,QAAQ,EACR,aAAa,EACb,MAAM,EACN,aAAa,EACb,UAAU,EACV,MAAM,EACN,SAAS,EACT,UAAU,EACV,eAAe,EACf,aAAa,EACb,SAAS,EAGT,QAAQ,EACR,CAAC,EAAE,UAAU,EACb,YAAmB,EACnB,OAAc,GACf,EAAE,KAAK,+BAggBP"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { MARK_PRINTED_CONFIRM, departureOf } from "../../lib/pick144";
|
|
3
|
-
import { crateLabelOf, departureLabel } from "../../lib/pick145";
|
|
2
|
+
import { MARK_PRINTED_CONFIRM, departureOf } from "../../lib/pick144.js";
|
|
3
|
+
import { crateLabelOf, departureLabel } from "../../lib/pick145.js";
|
|
4
4
|
import { Badge, Button, Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@flowselections/core";
|
|
5
5
|
import { AlertTriangle, Check, Eye, Loader2, Lock, Printer, RefreshCw, RotateCcw } from "lucide-react";
|
|
6
|
-
import { cartColumnInfo, comparePickQueue, dedupeByUnit, displayCartCount, displayPageCount, sinceLabel, unitTitleOf } from "../../lib/pickTypes";
|
|
7
|
-
import { duplicateNameTag } from "../../lib/pickRowState";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
6
|
+
import { cartColumnInfo, comparePickQueue, dedupeByUnit, displayCartCount, displayPageCount, sinceLabel, unitTitleOf } from "../../lib/pickTypes.js";
|
|
7
|
+
import { duplicateNameTag } from "../../lib/pickRowState.js";
|
|
8
|
+
import { useQuery } from "@tanstack/react-query";
|
|
9
|
+
import { pickApi } from "../../lib/pickApi.js";
|
|
10
|
+
import { PRINT_MANUAL, printStage, printStageLabel } from "../../lib/pick142.js";
|
|
11
|
+
import { CART_PLAN_MISMATCH_MESSAGE, orderNumbersLabel } from "../../lib/pick142.js";
|
|
12
|
+
import { isRowPrintable, rowWaitMessage, rowWaitOf } from "../../lib/pick143.js";
|
|
13
|
+
import { getPickTranslator } from "../../lib/pickI18n.js";
|
|
14
|
+
import { parseSentElsewhere } from "../../lib/pickApi.js";
|
|
15
|
+
import { sentElsewhereMessage } from "../../lib/pickCartResults.js";
|
|
13
16
|
/** Meldingen voor karren waarvan de pakbon al elders is verstuurd (match op kar-id). */
|
|
14
17
|
function sentElsewhereLines(item) {
|
|
15
18
|
const p = item.payload && typeof item.payload === "object" ? item.payload : {};
|
|
@@ -69,6 +72,19 @@ function priorityTone(priority, urgent) {
|
|
|
69
72
|
}
|
|
70
73
|
export function QueueTable({ items, lockedIds, statuses, documentTypes, busyId, readinessById, waitingIds, onPick, onReprint, onPrintAll, onSelectPrinted, onMarkPrinted, onPreview, readOnly, t: translator, siteTimeZone = null, pickDay = null, }) {
|
|
71
74
|
const t = translator ?? getPickTranslator("nl");
|
|
75
|
+
// Echte printstatus per regel uit de printopdrachten (één aanvraag, ververst mee).
|
|
76
|
+
const jobIds = Array.from(new Set((Array.isArray(items) ? items : []).filter((i) => i.printed_at && i.print_job_id).map((i) => i.print_job_id))).sort();
|
|
77
|
+
const jobsQuery = useQuery({
|
|
78
|
+
queryKey: ["pick", "rowPrintJobs", jobIds.join(",")],
|
|
79
|
+
enabled: jobIds.length > 0,
|
|
80
|
+
queryFn: () => pickApi.printJobsStatus(jobIds),
|
|
81
|
+
refetchInterval: (q) => {
|
|
82
|
+
const data = Array.isArray(q.state.data) ? q.state.data : [];
|
|
83
|
+
return data.some((j) => printStage(j) === "rendering") ? 5000 : 30000;
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
const jobsLoaded = jobsQuery.isSuccess;
|
|
87
|
+
const jobsById = new Map((Array.isArray(jobsQuery.data) ? jobsQuery.data : []).map((j) => [j.id, j]));
|
|
72
88
|
// Volgorde identiek aan de keuze van "volgende uitprinten" (zie
|
|
73
89
|
// comparePickQueue): niet-geprinte regels bovenaan, en bij gelijke stand op
|
|
74
90
|
// kar-nummer, zodat K1 boven K2 boven K3 staat en het printen van boven naar
|
|
@@ -101,7 +117,7 @@ export function QueueTable({ items, lockedIds, statuses, documentTypes, busyId,
|
|
|
101
117
|
}, children: [_jsxs(TableCell, { className: "font-medium", children: [_jsxs("div", { className: "flex items-center gap-2", children: [unitTitleOf(item), dupTag && _jsxs("span", { className: "text-xs font-normal text-muted-foreground", children: ["(", dupTag, ")"] }), replaced && (_jsx("span", { className: "rounded bg-destructive/10 px-1.5 py-0.5 text-xs font-semibold text-destructive", title: readiness?.reason ?? undefined, children: "Vervangen" })), replaced && readiness?.reason && (_jsx("span", { className: "text-xs font-normal text-destructive", children: readiness.reason })), waiting && (_jsx("span", { className: "rounded bg-muted px-1.5 py-0.5 text-xs font-semibold text-muted-foreground", children: "Wacht op printer" })), sentElsewhereLines(item).map((line) => (_jsx("span", { className: "text-xs font-normal text-muted-foreground", children: line }, line))), warnings.length > 0 && (_jsx(AlertTriangle, { className: "h-4 w-4 text-destructive", "aria-label": t("warning") }))] }), _jsx("div", { className: "text-xs text-muted-foreground", children: doc?.name ?? "-" })] }), _jsx(TableCell, { children: orderNumbersLabel(item) }), _jsx(TableCell, { children: item.customer_name }), _jsx(TableCell, { className: "text-right", children: item.line_count }), _jsx(TableCell, { className: "text-right", children: (() => {
|
|
102
118
|
const info = cartColumnInfo(item);
|
|
103
119
|
return (_jsxs("div", { className: "flex flex-col items-end", children: [_jsx("span", { children: info.carts }), info.cartLabel && (_jsx("span", { className: "text-xs text-muted-foreground", children: info.cartLabel })), info.reason && (_jsx("span", { className: "text-xs text-muted-foreground", children: info.reason }))] }));
|
|
104
|
-
})() }), _jsx(TableCell, { className: "text-right", children: printedSlipCount(item) ?? "—" }), _jsx(TableCell, { className: "text-right", children: displayPageCount(item.line_count) }), _jsxs(TableCell, { children: [_jsx(
|
|
120
|
+
})() }), _jsx(TableCell, { className: "text-right", children: printedSlipCount(item) ?? "—" }), _jsx(TableCell, { className: "text-right", children: displayPageCount(item.line_count) }), _jsxs(TableCell, { children: [_jsx(RowPrintBadge, { printed: printed, hasJob: !!item.print_job_id, job: item.print_job_id ? jobsById.get(item.print_job_id) : undefined, jobsLoaded: jobsLoaded, toPrintLabel: t("statusToPrint") }), printed && (_jsx("div", { className: "mt-1 text-xs text-muted-foreground", children: new Date(item.printed_at).toLocaleTimeString([], {
|
|
105
121
|
hour: "2-digit",
|
|
106
122
|
minute: "2-digit",
|
|
107
123
|
}) }))] }), _jsx(TableCell, { children: _jsx("span", { className: "rounded px-2 py-1 text-xs font-semibold " +
|
|
@@ -145,7 +161,7 @@ export function QueueTable({ items, lockedIds, statuses, documentTypes, busyId,
|
|
|
145
161
|
}, children: [_jsxs("div", { className: "grid grid-cols-[minmax(0,1fr)_auto] items-start gap-3", children: [_jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsxs("span", { className: "truncate text-lg font-bold text-foreground", children: [unitTitleOf(item), dupTag && _jsxs("span", { className: "text-xs font-normal text-muted-foreground", children: ["(", dupTag, ")"] }), replaced && (_jsx("span", { className: "rounded bg-destructive/10 px-1.5 py-0.5 text-xs font-semibold text-destructive", title: readiness?.reason ?? undefined, children: "Vervangen" })), replaced && readiness?.reason && (_jsx("span", { className: "text-xs font-normal text-destructive", children: readiness.reason })), waiting && (_jsx("span", { className: "rounded bg-muted px-1.5 py-0.5 text-xs font-semibold text-muted-foreground", children: "Wacht op printer" }))] }), warnings.length > 0 && (_jsx(AlertTriangle, { className: "h-4 w-4 shrink-0 text-destructive", "aria-label": t("warning") }))] }), _jsx("p", { className: "truncate text-xs text-muted-foreground", children: doc?.name ?? "-" })] }), _jsxs("div", { className: "flex shrink-0 items-start gap-1", children: [onPreview && (_jsx("button", { type: "button", "aria-label": "Voorbeeld " + item.document_number, title: "Voorbeeld " + item.document_number, className: "inline-flex h-11 w-11 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground", onClick: (e) => {
|
|
146
162
|
e.stopPropagation();
|
|
147
163
|
onPreview(item);
|
|
148
|
-
}, children: _jsx(Eye, { className: "h-5 w-5" }) })), _jsxs("div", { className: "flex shrink-0 flex-col items-end gap-1", children: [_jsx(
|
|
164
|
+
}, children: _jsx(Eye, { className: "h-5 w-5" }) })), _jsxs("div", { className: "flex shrink-0 flex-col items-end gap-1", children: [_jsx(RowPrintBadge, { printed: printed, hasJob: !!item.print_job_id, job: item.print_job_id ? jobsById.get(item.print_job_id) : undefined, jobsLoaded: jobsLoaded, toPrintLabel: t("statusToPrint") }), printed && (_jsx("span", { className: "text-xs text-muted-foreground", children: new Date(item.printed_at).toLocaleTimeString([], {
|
|
149
165
|
hour: "2-digit",
|
|
150
166
|
minute: "2-digit",
|
|
151
167
|
}) })), _jsx("span", { className: "rounded px-2 py-0.5 text-xs font-semibold " +
|
|
@@ -179,3 +195,14 @@ export function QueueTable({ items, lockedIds, statuses, documentTypes, busyId,
|
|
|
179
195
|
}, children: [_jsx(Check, { className: "mr-2 h-4 w-4" }), "Markeer als geprint"] })] }))] })] }, item.id));
|
|
180
196
|
}), safeItems.length === 0 && (_jsx("div", { className: "rounded-lg border py-10 text-center text-muted-foreground", children: t("emptyQueue") }))] })] }));
|
|
181
197
|
}
|
|
198
|
+
/** Statuslabel van een regel: alleen de echte stand uit de printopdracht, nooit een aanname. */
|
|
199
|
+
function RowPrintBadge({ printed, hasJob, job, jobsLoaded, toPrintLabel }) {
|
|
200
|
+
if (!printed)
|
|
201
|
+
return _jsx(Badge, { variant: "default", children: toPrintLabel });
|
|
202
|
+
if (!hasJob)
|
|
203
|
+
return _jsx(Badge, { variant: "secondary", children: PRINT_MANUAL });
|
|
204
|
+
if (!job && !jobsLoaded)
|
|
205
|
+
return _jsx(Badge, { variant: "secondary", children: "Status laden\u2026" });
|
|
206
|
+
const stage = printStage(job);
|
|
207
|
+
return (_jsx(Badge, { variant: stage === "failed" ? "destructive" : "secondary", children: printStageLabel(job) }));
|
|
208
|
+
}
|
|
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Button } from "@flowselections/core";
|
|
3
3
|
import { Link } from "@tanstack/react-router";
|
|
4
4
|
import { AlertTriangle } from "lucide-react";
|
|
5
|
-
import { usePickReferenceData } from "../../hooks/usePickReferenceData";
|
|
6
|
-
import { referentieProblemen } from "../../lib/pickReferenceApi";
|
|
5
|
+
import { usePickReferenceData } from "../../hooks/usePickReferenceData.js";
|
|
6
|
+
import { referentieProblemen } from "../../lib/pickReferenceApi.js";
|
|
7
7
|
/**
|
|
8
8
|
* Waarschuwing als verplichte referentiedata ontbreekt of uitgezet is.
|
|
9
9
|
* Rendert niets zodra alles aanwezig en actief is — geen groene bevestiging.
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useCallback, useState } from "react";
|
|
3
3
|
import { Badge, Button, Card, CardContent, Input, toast } from "@flowselections/core";
|
|
4
4
|
import { AlertTriangle, CheckCircle2, Loader2, ScanLine } from "lucide-react";
|
|
5
|
-
import { createShippingNote, lookupBarcode, } from "../../lib/shippingNote";
|
|
5
|
+
import { createShippingNote, lookupBarcode, } from "../../lib/shippingNote.js";
|
|
6
6
|
/**
|
|
7
7
|
* Pakbon scannen -> verzendbrief. De module zoekt eerst op (leest alleen) en
|
|
8
8
|
* maakt pas na een expliciete bevestiging een verzendbrief aan via de Engine.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useQuery } from "@tanstack/react-query";
|
|
3
|
-
import { fetchCartStickerState, fetchOrderStickerMeldingen, STICKER_UNKNOWN, stickerStatusLabel, stickerSummary, } from "../../lib/pickStickers";
|
|
3
|
+
import { fetchCartStickerState, fetchOrderStickerMeldingen, STICKER_UNKNOWN, stickerStatusLabel, stickerSummary, } from "../../lib/pickStickers.js";
|
|
4
4
|
const POLL = 15000;
|
|
5
5
|
/** Actuele stickermeldingen van de Engine, letterlijk, bovenaan de order. */
|
|
6
6
|
export function OrderStickerMeldingen({ orderId, slug }) {
|
|
@@ -3,8 +3,8 @@ import { useState } from "react";
|
|
|
3
3
|
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
4
4
|
import { Button, Card, CardContent, CardDescription, CardHeader, CardTitle, Input, Label, Switch, Table, TableBody, TableCell, TableHead, TableHeader, TableRow, toast, } from "@flowselections/core";
|
|
5
5
|
import { FileText, Loader2, Plus, RotateCcw } from "lucide-react";
|
|
6
|
-
import { pickReferenceApi } from "../../lib/pickReferenceApi";
|
|
7
|
-
import { usePickReferenceData, PICK_REFERENCE_QUERY_KEY } from "../../hooks/usePickReferenceData";
|
|
6
|
+
import { pickReferenceApi } from "../../lib/pickReferenceApi.js";
|
|
7
|
+
import { usePickReferenceData, PICK_REFERENCE_QUERY_KEY } from "../../hooks/usePickReferenceData.js";
|
|
8
8
|
function NumberCell({ value, onSave, }) {
|
|
9
9
|
const [local, setLocal] = useState(String(value ?? 0));
|
|
10
10
|
return (_jsx(Input, { className: "h-8 w-20", inputMode: "numeric", value: local, onChange: (e) => setLocal(e.target.value), onBlur: () => {
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
export declare function usePickCountries(): import("@tanstack/react-query").UseQueryResult<import("
|
|
2
|
-
export declare function usePickStatuses(): import("@tanstack/react-query").UseQueryResult<import("
|
|
3
|
-
export declare function usePickPrinters(): import("@tanstack/react-query").UseQueryResult<import("
|
|
4
|
-
export declare function usePickDocumentTypes(): import("@tanstack/react-query").UseQueryResult<import("
|
|
5
|
-
export declare function usePickStationTypes(): import("@tanstack/react-query").UseQueryResult<import("
|
|
6
|
-
export declare function usePickTasks(): import("@tanstack/react-query").UseQueryResult<import("
|
|
7
|
-
export declare function usePickStations(): import("@tanstack/react-query").UseQueryResult<import("
|
|
1
|
+
export declare function usePickCountries(): import("@tanstack/react-query").UseQueryResult<import("../index.js").PickCountry[], Error>;
|
|
2
|
+
export declare function usePickStatuses(): import("@tanstack/react-query").UseQueryResult<import("../index.js").PickStatus[], Error>;
|
|
3
|
+
export declare function usePickPrinters(): import("@tanstack/react-query").UseQueryResult<import("../index.js").PickPrinter[], Error>;
|
|
4
|
+
export declare function usePickDocumentTypes(): import("@tanstack/react-query").UseQueryResult<import("../index.js").PickDocumentType[], Error>;
|
|
5
|
+
export declare function usePickStationTypes(): import("@tanstack/react-query").UseQueryResult<import("../index.js").PickStationType[], Error>;
|
|
6
|
+
export declare function usePickTasks(): import("@tanstack/react-query").UseQueryResult<import("../index.js").PickTask[], Error>;
|
|
7
|
+
export declare function usePickStations(): import("@tanstack/react-query").UseQueryResult<import("../index.js").PickStation[], Error>;
|
|
8
8
|
/** Actieve printplekken uit de Layout maker. */
|
|
9
|
-
export declare function usePickPrintPlekken(): import("@tanstack/react-query").UseQueryResult<import("
|
|
9
|
+
export declare function usePickPrintPlekken(): import("@tanstack/react-query").UseQueryResult<import("../index.js").PickPrintPlek[], Error>;
|
|
10
10
|
/** Koppelingen pickstation → printplek (beheerpagina). */
|
|
11
|
-
export declare function useStationPrintPlekken(): import("@tanstack/react-query").UseQueryResult<import("
|
|
11
|
+
export declare function useStationPrintPlekken(): import("@tanstack/react-query").UseQueryResult<import("../index.js").PickStationPrintPlekRow[], Error>;
|
|
12
12
|
/** De printplek van één pickstation (ook in openbare pickschermen). */
|
|
13
|
-
export declare function useStationPrintPlek(stationId?: string): import("@tanstack/react-query").UseQueryResult<import("
|
|
14
|
-
export declare function usePickScreens(stationId?: string): import("@tanstack/react-query").UseQueryResult<import("
|
|
13
|
+
export declare function useStationPrintPlek(stationId?: string): import("@tanstack/react-query").UseQueryResult<import("../index.js").PickStationPrintPlek | null, Error>;
|
|
14
|
+
export declare function usePickScreens(stationId?: string): import("@tanstack/react-query").UseQueryResult<import("../index.js").PickScreen[], Error>;
|
|
15
15
|
//# sourceMappingURL=usePickConfig.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PickQueueItem, PickSortRule } from "../lib/pickTypes";
|
|
1
|
+
import type { PickQueueItem, PickSortRule } from "../lib/pickTypes.js";
|
|
2
2
|
export interface QueueFilters {
|
|
3
3
|
country: string | null;
|
|
4
4
|
search: string;
|
|
@@ -52,4 +52,6 @@ export declare function usePickDays(enabled?: boolean): import("@tanstack/react-
|
|
|
52
52
|
day: string;
|
|
53
53
|
orders: number;
|
|
54
54
|
}[], Error>;
|
|
55
|
+
/** Zelfde station, scherm en pickdag (positie 2-4 van de wachtrij-sleutel). */
|
|
56
|
+
export declare function sameQueueScope(a: readonly unknown[], b: readonly unknown[]): boolean;
|
|
55
57
|
//# sourceMappingURL=usePickQueue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePickQueue.d.ts","sourceRoot":"","sources":["../../src/hooks/usePickQueue.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAY,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAG9E,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc,EAAE,YAS5B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"usePickQueue.d.ts","sourceRoot":"","sources":["../../src/hooks/usePickQueue.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAY,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAG9E,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc,EAAE,YAS5B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;;;;;;;;;;;IA4LG,gEAAgE;;IAEhE,6EAA6E;;;EAIhF;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM;;EAuBhG;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,iFAOnF;AACD,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,OAAO,UAAO;;;YAQzC;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,OAAO,EAAE,EAAE,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAEpF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
2
2
|
import { keepPreviousData, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
3
|
-
import { pickApi, pickDb } from "../lib/pickApi";
|
|
4
|
-
import { safeArray } from "../lib/pickTypes";
|
|
3
|
+
import { pickApi, pickDb } from "../lib/pickApi.js";
|
|
4
|
+
import { safeArray } from "../lib/pickTypes.js";
|
|
5
5
|
export const defaultFilters = {
|
|
6
6
|
country: null,
|
|
7
7
|
search: "",
|
|
@@ -94,7 +94,8 @@ export function usePickQueue(args) {
|
|
|
94
94
|
const key = useMemo(() => ["pick", "queue", stationId ?? "-", screenId ?? "-", pickDay ?? "-", filters], [stationId, screenId, pickDay, filters]);
|
|
95
95
|
const queueQuery = useQuery({
|
|
96
96
|
queryKey: key,
|
|
97
|
-
|
|
97
|
+
// Pas laden als de pickdag bekend is, anders flitst een oude lijst.
|
|
98
|
+
enabled: enabled && (pickDayOverride != null || pickDayQuery.isFetched),
|
|
98
99
|
queryFn: () => pickApi.queue({
|
|
99
100
|
stationId,
|
|
100
101
|
screenId,
|
|
@@ -108,7 +109,8 @@ export function usePickQueue(args) {
|
|
|
108
109
|
page: filters.page,
|
|
109
110
|
pageSize: filters.pageSize,
|
|
110
111
|
}),
|
|
111
|
-
|
|
112
|
+
// Vorige lijst alleen vasthouden bij filteren/bladeren binnen hetzelfde station en dezelfde pickdag.
|
|
113
|
+
placeholderData: (prev, prevQuery) => (prevQuery && sameQueueScope(prevQuery.queryKey, key) ? prev : undefined),
|
|
112
114
|
});
|
|
113
115
|
const countsQuery = useQuery({
|
|
114
116
|
queryKey: ["pick", "dayCounts", stationId ?? "-", screenId ?? "-", pickDay ?? "-"],
|
|
@@ -177,7 +179,7 @@ export function usePickQueue(args) {
|
|
|
177
179
|
pendingCount: countsQuery.data?.pending ?? 0,
|
|
178
180
|
printedCount: countsQuery.data?.printed ?? 0,
|
|
179
181
|
urgentCount: countsQuery.data?.urgent ?? 0,
|
|
180
|
-
loading: queueQuery.
|
|
182
|
+
loading: queueQuery.isPending,
|
|
181
183
|
error: queueQuery.error instanceof Error ? queueQuery.error.message : null,
|
|
182
184
|
lockedIds,
|
|
183
185
|
realtimeOk,
|
|
@@ -232,3 +234,7 @@ export function usePickDays(enabled = true) {
|
|
|
232
234
|
refetchInterval: 120000,
|
|
233
235
|
});
|
|
234
236
|
}
|
|
237
|
+
/** Zelfde station, scherm en pickdag (positie 2-4 van de wachtrij-sleutel). */
|
|
238
|
+
export function sameQueueScope(a, b) {
|
|
239
|
+
return a[2] === b[2] && a[3] === b[3] && a[4] === b[4];
|
|
240
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare const PICK_REFERENCE_QUERY_KEY: readonly ["pick", "referenceData"];
|
|
2
2
|
/** Eén bron voor de instellingenkaart en de waarschuwingsbanner. */
|
|
3
|
-
export declare function usePickReferenceData(): import("@tanstack/react-query").UseQueryResult<import("
|
|
3
|
+
export declare function usePickReferenceData(): import("@tanstack/react-query").UseQueryResult<import("../index.js").PickReferenceStatus, Error>;
|
|
4
4
|
//# sourceMappingURL=usePickReferenceData.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useQuery } from "@tanstack/react-query";
|
|
2
|
-
import { pickReferenceApi } from "../lib/pickReferenceApi";
|
|
2
|
+
import { pickReferenceApi } from "../lib/pickReferenceApi.js";
|
|
3
3
|
export const PICK_REFERENCE_QUERY_KEY = ["pick", "referenceData"];
|
|
4
4
|
/** Eén bron voor de instellingenkaart en de waarschuwingsbanner. */
|
|
5
5
|
export function usePickReferenceData() {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { PickPrintJob } from "../lib/pickTypes";
|
|
2
|
-
import type { PickBatchPrintJob } from "../lib/pickApi";
|
|
1
|
+
import type { PickPrintJob } from "../lib/pickTypes.js";
|
|
2
|
+
import type { PickBatchPrintJob } from "../lib/pickApi.js";
|
|
3
3
|
export interface TrackedPrintJob {
|
|
4
4
|
jobId: string;
|
|
5
5
|
queueItemId: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
-
import { pickApi, pickDb } from "../lib/pickApi";
|
|
2
|
+
import { pickApi, pickDb } from "../lib/pickApi.js";
|
|
3
3
|
/**
|
|
4
4
|
* Volgt de printopdracht die pick_complete_print heeft weggeschreven. De module
|
|
5
5
|
* print zelf niets: de Layout maker werkt print_jobs bij, hier wordt alleen de
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ShippingNoteStatus } from "../lib/shippingNoteStatus";
|
|
1
|
+
import { type ShippingNoteStatus } from "../lib/shippingNoteStatus.js";
|
|
2
2
|
export interface WatchedShippingNote {
|
|
3
3
|
/** Het print_job-id van de pakbon; leidend bij het opvragen van de status. */
|
|
4
4
|
jobId: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
-
import { isWaitingShippingNote, readShippingNoteStatus, requestShippingNoteNow, } from "../lib/shippingNoteStatus";
|
|
2
|
+
import { isWaitingShippingNote, readShippingNoteStatus, requestShippingNoteNow, } from "../lib/shippingNoteStatus.js";
|
|
3
3
|
/** Ververs elke 3 seconden, maximaal 15 minuten. */
|
|
4
4
|
const INTERVAL_MS = 3000;
|
|
5
5
|
const MAX_MS = 15 * 60 * 1000;
|
package/dist-lib/index.d.ts
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
import type { FlowModule } from "@flowselections/core";
|
|
2
|
-
export * from './_core-safelist';
|
|
3
|
-
export * from './components/TemplatePage';
|
|
4
|
-
export { TemplateModuleLogo } from './components/TemplateModuleLogo';
|
|
5
|
-
export * from './lib/pickTypes';
|
|
6
|
-
export * from './lib/pickApi';
|
|
7
|
-
export * from './lib/logisticsTypes';
|
|
8
|
-
export * from './lib/logisticsApi';
|
|
9
|
-
export * from './hooks/usePickConfig';
|
|
10
|
-
export * from './hooks/useKoppelingVoorBron';
|
|
11
|
-
export * from './hooks/usePickQueue';
|
|
12
|
-
export { LanguageTiles } from './components/pick/LanguageTiles';
|
|
13
|
-
export * from './lib/pickI18n';
|
|
14
|
-
export { QueueTable } from './components/pick/QueueTable';
|
|
15
|
-
export { ShippingNoteScan } from './components/pick/ShippingNoteScan';
|
|
16
|
-
export * from './lib/shippingNote';
|
|
17
|
-
export * from './lib/shippingNoteStatus';
|
|
18
|
-
export { PickScherm } from './components/pick/PickScherm';
|
|
19
|
-
export { PickstationsPage } from './components/PickstationsPage';
|
|
20
|
-
export { PickPublicPage } from './components/PickPublicPage';
|
|
21
|
-
export { PublicPickRoute } from './components/pick/PublicPickRoute';
|
|
22
|
-
export { pickReferenceApi, referentieProblemen, VERPLICHTE_TYPE_CODES, VERPLICHTE_STATUS_CODES, } from './lib/pickReferenceApi';
|
|
23
|
-
export type { PickReferenceStatus } from './lib/pickReferenceApi';
|
|
24
|
-
export { usePickReferenceData, PICK_REFERENCE_QUERY_KEY } from './hooks/usePickReferenceData';
|
|
25
|
-
export { ReferentiedataPickdocumentenCard } from './components/settings/ReferentiedataPickdocumentenCard';
|
|
26
|
-
export { ReferentiedataBanner } from './components/pick/ReferentiedataBanner';
|
|
2
|
+
export * from './_core-safelist.js';
|
|
3
|
+
export * from './components/TemplatePage.js';
|
|
4
|
+
export { TemplateModuleLogo } from './components/TemplateModuleLogo.js';
|
|
5
|
+
export * from './lib/pickTypes.js';
|
|
6
|
+
export * from './lib/pickApi.js';
|
|
7
|
+
export * from './lib/logisticsTypes.js';
|
|
8
|
+
export * from './lib/logisticsApi.js';
|
|
9
|
+
export * from './hooks/usePickConfig.js';
|
|
10
|
+
export * from './hooks/useKoppelingVoorBron.js';
|
|
11
|
+
export * from './hooks/usePickQueue.js';
|
|
12
|
+
export { LanguageTiles } from './components/pick/LanguageTiles.js';
|
|
13
|
+
export * from './lib/pickI18n.js';
|
|
14
|
+
export { QueueTable } from './components/pick/QueueTable.js';
|
|
15
|
+
export { ShippingNoteScan } from './components/pick/ShippingNoteScan.js';
|
|
16
|
+
export * from './lib/shippingNote.js';
|
|
17
|
+
export * from './lib/shippingNoteStatus.js';
|
|
18
|
+
export { PickScherm } from './components/pick/PickScherm.js';
|
|
19
|
+
export { PickstationsPage } from './components/PickstationsPage.js';
|
|
20
|
+
export { PickPublicPage } from './components/PickPublicPage.js';
|
|
21
|
+
export { PublicPickRoute } from './components/pick/PublicPickRoute.js';
|
|
22
|
+
export { pickReferenceApi, referentieProblemen, VERPLICHTE_TYPE_CODES, VERPLICHTE_STATUS_CODES, } from './lib/pickReferenceApi.js';
|
|
23
|
+
export type { PickReferenceStatus } from './lib/pickReferenceApi.js';
|
|
24
|
+
export { usePickReferenceData, PICK_REFERENCE_QUERY_KEY } from './hooks/usePickReferenceData.js';
|
|
25
|
+
export { ReferentiedataPickdocumentenCard } from './components/settings/ReferentiedataPickdocumentenCard.js';
|
|
26
|
+
export { ReferentiedataBanner } from './components/pick/ReferentiedataBanner.js';
|
|
27
27
|
export declare const pickSchermenModule: FlowModule;
|
|
28
|
-
export * from './lib/pickStickers';
|
|
29
|
-
export { CartStickerState, OrderStickerMeldingen } from './components/pick/StickerState';
|
|
30
|
-
export * from "./lib/pick145";
|
|
28
|
+
export * from './lib/pickStickers.js';
|
|
29
|
+
export { CartStickerState, OrderStickerMeldingen } from './components/pick/StickerState.js';
|
|
30
|
+
export * from "./lib/pick145.js";
|
|
31
31
|
//# sourceMappingURL=index.d.ts.map
|