@voyantjs/bookings-ui 0.82.0 → 0.82.1
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.
|
@@ -32,12 +32,19 @@ export interface BookingPaymentsSummaryProps {
|
|
|
32
32
|
* renders as plain text.
|
|
33
33
|
*/
|
|
34
34
|
onInvoiceOpen?: (invoiceId: string, row: BookingPaymentsSummaryRow) => void;
|
|
35
|
+
/**
|
|
36
|
+
* Optional invoice href for hosts that navigate with route links
|
|
37
|
+
* instead of an in-place invoice panel.
|
|
38
|
+
*/
|
|
39
|
+
getInvoiceHref?: (row: BookingPaymentsSummaryRow) => string;
|
|
35
40
|
/**
|
|
36
41
|
* Optional handler for the "View" action in the row menu. Consumers
|
|
37
42
|
* typically call their router's navigate(). Middle-click isn't useful
|
|
38
43
|
* on menu items, so this is a click handler rather than an href.
|
|
39
44
|
*/
|
|
40
45
|
onViewPayment?: (row: BookingPaymentsSummaryRow) => void;
|
|
46
|
+
/** Convert a proforma invoice attached to the payment into a final invoice. */
|
|
47
|
+
onConvertProforma?: (row: BookingPaymentsSummaryRow) => Promise<unknown> | unknown;
|
|
41
48
|
/** Edit handler — typically opens a dialog pre-filled with the row. */
|
|
42
49
|
onEditPayment?: (row: BookingPaymentsSummaryRow) => void;
|
|
43
50
|
/**
|
|
@@ -72,5 +79,5 @@ export interface BookingPaymentsSummaryProps {
|
|
|
72
79
|
* first as the primary identifier — that's the difference between
|
|
73
80
|
* "list of payments" and "list of invoice line-items".
|
|
74
81
|
*/
|
|
75
|
-
export declare function BookingPaymentsSummary({ bookingId, variant, onInvoiceOpen, onViewPayment, onEditPayment, onDeletePayment, headerAction, }: BookingPaymentsSummaryProps): import("react/jsx-runtime").JSX.Element;
|
|
82
|
+
export declare function BookingPaymentsSummary({ bookingId, variant, onInvoiceOpen, getInvoiceHref, onViewPayment, onConvertProforma, onEditPayment, onDeletePayment, headerAction, }: BookingPaymentsSummaryProps): import("react/jsx-runtime").JSX.Element;
|
|
76
83
|
//# sourceMappingURL=booking-payments-summary.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"booking-payments-summary.d.ts","sourceRoot":"","sources":["../../src/components/booking-payments-summary.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAGnB,MAAM,yBAAyB,CAAA;AAahC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,aAAa,CAAA;IACpD,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,MAAM,EAAE,aAAa,CAAA;IACrB,aAAa,EAAE,aAAa,CAAA;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC5B;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAAA;IAC3E;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAAA;IACxD,uEAAuE;IACvE,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAAA;IACxD;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1E;;;;OAIG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC/B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,OAAkB,EAClB,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,YAAY,GACb,EAAE,2BAA2B,
|
|
1
|
+
{"version":3,"file":"booking-payments-summary.d.ts","sourceRoot":"","sources":["../../src/components/booking-payments-summary.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAGnB,MAAM,yBAAyB,CAAA;AAahC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,aAAa,CAAA;IACpD,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,MAAM,EAAE,aAAa,CAAA;IACrB,aAAa,EAAE,aAAa,CAAA;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC5B;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAAA;IAC3E;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,MAAM,CAAA;IAC3D;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAAA;IACxD,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;IAClF,uEAAuE;IACvE,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAAA;IACxD;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1E;;;;OAIG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC/B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,OAAkB,EAClB,aAAa,EACb,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,YAAY,GACb,EAAE,2BAA2B,2CAwQ7B"}
|
|
@@ -27,7 +27,7 @@ import { StatusBadge } from "./status-badge.js";
|
|
|
27
27
|
* first as the primary identifier — that's the difference between
|
|
28
28
|
* "list of payments" and "list of invoice line-items".
|
|
29
29
|
*/
|
|
30
|
-
export function BookingPaymentsSummary({ bookingId, variant = "public", onInvoiceOpen, onViewPayment, onEditPayment, onDeletePayment, headerAction, }) {
|
|
30
|
+
export function BookingPaymentsSummary({ bookingId, variant = "public", onInvoiceOpen, getInvoiceHref, onViewPayment, onConvertProforma, onEditPayment, onDeletePayment, headerAction, }) {
|
|
31
31
|
const publicQuery = usePublicBookingPayments(bookingId, { enabled: variant === "public" });
|
|
32
32
|
const adminQuery = useAdminBookingPayments(bookingId, { enabled: variant === "admin" });
|
|
33
33
|
const data = variant === "admin" ? adminQuery.data : publicQuery.data;
|
|
@@ -35,7 +35,7 @@ export function BookingPaymentsSummary({ bookingId, variant = "public", onInvoic
|
|
|
35
35
|
const messages = useBookingsUiMessagesOrDefault();
|
|
36
36
|
const card = messages.bookingPaymentsSummary;
|
|
37
37
|
const payments = data?.data?.payments ?? [];
|
|
38
|
-
const showActionsColumn = Boolean(onViewPayment || onEditPayment || onDeletePayment);
|
|
38
|
+
const showActionsColumn = Boolean(onViewPayment || onConvertProforma || onEditPayment || onDeletePayment);
|
|
39
39
|
const [deleteTarget, setDeleteTarget] = React.useState(null);
|
|
40
40
|
const [deletePending, setDeletePending] = React.useState(false);
|
|
41
41
|
const handleDeleteConfirm = async () => {
|
|
@@ -108,10 +108,18 @@ export function BookingPaymentsSummary({ bookingId, variant = "public", onInvoic
|
|
|
108
108
|
{
|
|
109
109
|
accessorKey: "invoiceNumber",
|
|
110
110
|
header: card.columns.invoice,
|
|
111
|
-
cell: ({ row }) =>
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
111
|
+
cell: ({ row }) => {
|
|
112
|
+
if (onInvoiceOpen) {
|
|
113
|
+
return (_jsxs("button", { type: "button", onClick: (e) => {
|
|
114
|
+
e.stopPropagation();
|
|
115
|
+
onInvoiceOpen(row.original.invoiceId, row.original);
|
|
116
|
+
}, className: "inline-flex items-center gap-1 font-mono text-primary text-xs hover:underline", children: [row.original.invoiceNumber, _jsx(ArrowUpRight, { className: "h-3 w-3" })] }));
|
|
117
|
+
}
|
|
118
|
+
if (getInvoiceHref) {
|
|
119
|
+
return (_jsxs("a", { href: getInvoiceHref(row.original), onClick: (e) => e.stopPropagation(), className: "inline-flex items-center gap-1 font-mono text-primary text-xs hover:underline", children: [row.original.invoiceNumber, _jsx(ArrowUpRight, { className: "h-3 w-3" })] }));
|
|
120
|
+
}
|
|
121
|
+
return _jsx("span", { className: "font-mono text-xs", children: row.original.invoiceNumber });
|
|
122
|
+
},
|
|
115
123
|
},
|
|
116
124
|
];
|
|
117
125
|
if (showActionsColumn) {
|
|
@@ -121,6 +129,9 @@ export function BookingPaymentsSummary({ bookingId, variant = "public", onInvoic
|
|
|
121
129
|
cell: ({ row }) => (_jsxs("div", { className: "flex items-center justify-end gap-1", children: [onViewPayment ? (_jsx(IconActionButton, { label: card.actions.view, icon: _jsx(Eye, { className: "h-3.5 w-3.5" }), onClick: (e) => {
|
|
122
130
|
e.stopPropagation();
|
|
123
131
|
onViewPayment(row.original);
|
|
132
|
+
} })) : null, onConvertProforma && row.original.invoiceType === "proforma" ? (_jsx(IconActionButton, { label: card.actions.convertToInvoice, icon: _jsx(ArrowUpRight, { className: "h-3.5 w-3.5" }), onClick: (e) => {
|
|
133
|
+
e.stopPropagation();
|
|
134
|
+
void onConvertProforma(row.original);
|
|
124
135
|
} })) : null, onEditPayment ? (_jsx(IconActionButton, { label: card.actions.edit, icon: _jsx(Pencil, { className: "h-3.5 w-3.5" }), onClick: (e) => {
|
|
125
136
|
e.stopPropagation();
|
|
126
137
|
onEditPayment(row.original);
|
|
@@ -134,7 +145,9 @@ export function BookingPaymentsSummary({ bookingId, variant = "public", onInvoic
|
|
|
134
145
|
}, [
|
|
135
146
|
card,
|
|
136
147
|
formatDateTime,
|
|
148
|
+
getInvoiceHref,
|
|
137
149
|
onInvoiceOpen,
|
|
150
|
+
onConvertProforma,
|
|
138
151
|
onDeletePayment,
|
|
139
152
|
onEditPayment,
|
|
140
153
|
onViewPayment,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voyantjs/bookings-ui",
|
|
3
|
-
"version": "0.82.
|
|
3
|
+
"version": "0.82.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -52,25 +52,25 @@
|
|
|
52
52
|
"react-dom": "^19.0.0",
|
|
53
53
|
"react-hook-form": "^7.60.0",
|
|
54
54
|
"zod": "^4.3.6",
|
|
55
|
-
"@voyantjs/availability-react": "0.82.
|
|
56
|
-
"@voyantjs/bookings": "0.82.
|
|
57
|
-
"@voyantjs/bookings-react": "0.82.
|
|
58
|
-
"@voyantjs/catalog": "0.82.
|
|
59
|
-
"@voyantjs/catalog-react": "0.82.
|
|
60
|
-
"@voyantjs/crm-react": "0.82.
|
|
61
|
-
"@voyantjs/crm-ui": "0.82.
|
|
62
|
-
"@voyantjs/extras-react": "0.82.
|
|
63
|
-
"@voyantjs/finance-react": "0.82.
|
|
64
|
-
"@voyantjs/identity-react": "0.82.
|
|
65
|
-
"@voyantjs/legal-react": "0.82.
|
|
66
|
-
"@voyantjs/pricing-react": "0.82.
|
|
67
|
-
"@voyantjs/products-react": "0.82.
|
|
68
|
-
"@voyantjs/suppliers-react": "0.82.
|
|
69
|
-
"@voyantjs/ui": "0.82.
|
|
55
|
+
"@voyantjs/availability-react": "0.82.1",
|
|
56
|
+
"@voyantjs/bookings": "0.82.1",
|
|
57
|
+
"@voyantjs/bookings-react": "0.82.1",
|
|
58
|
+
"@voyantjs/catalog": "0.82.1",
|
|
59
|
+
"@voyantjs/catalog-react": "0.82.1",
|
|
60
|
+
"@voyantjs/crm-react": "0.82.1",
|
|
61
|
+
"@voyantjs/crm-ui": "0.82.1",
|
|
62
|
+
"@voyantjs/extras-react": "0.82.1",
|
|
63
|
+
"@voyantjs/finance-react": "0.82.1",
|
|
64
|
+
"@voyantjs/identity-react": "0.82.1",
|
|
65
|
+
"@voyantjs/legal-react": "0.82.1",
|
|
66
|
+
"@voyantjs/pricing-react": "0.82.1",
|
|
67
|
+
"@voyantjs/products-react": "0.82.1",
|
|
68
|
+
"@voyantjs/suppliers-react": "0.82.1",
|
|
69
|
+
"@voyantjs/ui": "0.82.1"
|
|
70
70
|
},
|
|
71
71
|
"dependencies": {
|
|
72
72
|
"sonner": "^2.0.7",
|
|
73
|
-
"@voyantjs/i18n": "0.82.
|
|
73
|
+
"@voyantjs/i18n": "0.82.1"
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
76
|
"@tanstack/react-query": "^5.100.11",
|
|
@@ -85,21 +85,21 @@
|
|
|
85
85
|
"typescript": "^6.0.2",
|
|
86
86
|
"vitest": "^4.1.2",
|
|
87
87
|
"zod": "^4.3.6",
|
|
88
|
-
"@voyantjs/availability-react": "0.82.
|
|
89
|
-
"@voyantjs/bookings": "0.82.
|
|
90
|
-
"@voyantjs/bookings-react": "0.82.
|
|
91
|
-
"@voyantjs/catalog": "0.82.
|
|
92
|
-
"@voyantjs/catalog-react": "0.82.
|
|
93
|
-
"@voyantjs/crm-react": "0.82.
|
|
94
|
-
"@voyantjs/crm-ui": "0.82.
|
|
95
|
-
"@voyantjs/extras-react": "0.82.
|
|
96
|
-
"@voyantjs/finance-react": "0.82.
|
|
97
|
-
"@voyantjs/identity-react": "0.82.
|
|
98
|
-
"@voyantjs/legal-react": "0.82.
|
|
99
|
-
"@voyantjs/pricing-react": "0.82.
|
|
100
|
-
"@voyantjs/products-react": "0.82.
|
|
101
|
-
"@voyantjs/suppliers-react": "0.82.
|
|
102
|
-
"@voyantjs/ui": "0.82.
|
|
88
|
+
"@voyantjs/availability-react": "0.82.1",
|
|
89
|
+
"@voyantjs/bookings": "0.82.1",
|
|
90
|
+
"@voyantjs/bookings-react": "0.82.1",
|
|
91
|
+
"@voyantjs/catalog": "0.82.1",
|
|
92
|
+
"@voyantjs/catalog-react": "0.82.1",
|
|
93
|
+
"@voyantjs/crm-react": "0.82.1",
|
|
94
|
+
"@voyantjs/crm-ui": "0.82.1",
|
|
95
|
+
"@voyantjs/extras-react": "0.82.1",
|
|
96
|
+
"@voyantjs/finance-react": "0.82.1",
|
|
97
|
+
"@voyantjs/identity-react": "0.82.1",
|
|
98
|
+
"@voyantjs/legal-react": "0.82.1",
|
|
99
|
+
"@voyantjs/pricing-react": "0.82.1",
|
|
100
|
+
"@voyantjs/products-react": "0.82.1",
|
|
101
|
+
"@voyantjs/suppliers-react": "0.82.1",
|
|
102
|
+
"@voyantjs/ui": "0.82.1",
|
|
103
103
|
"@voyantjs/voyant-typescript-config": "0.1.0"
|
|
104
104
|
},
|
|
105
105
|
"files": [
|