@pisell/private-materials 6.12.312 → 6.12.313

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.
@@ -25,23 +25,52 @@ function ConfirmOrderIcon() {
25
25
  "aria-hidden": "true"
26
26
  }, /* @__PURE__ */ React.createElement("path", { d: "m5 12 4 4L19 6" }));
27
27
  }
28
- /** 与 PaymentModal 一致:EFTPOS/信用卡使用 credit,其余自定义方式使用 custom。 */
29
- function PaymentMethodIcon({ code, type }) {
30
- const isCard = code === "EFTPOS" || type === "credit-card" || type === "eftpos";
28
+ /** 名称含 cash 时优先展示纸币,否则按卡支付、现金配置和自定义支付区分。 */
29
+ function PaymentMethodIcon({ code, name, type, eftpos, cash }) {
30
+ const nameContainsCash = /cash/i.test(name);
31
+ const isCash = nameContainsCash || cash;
32
+ const isCard = !nameContainsCash && (eftpos || code === "EFTPOS" || type === "credit-card" || type === "eftpos");
31
33
  return /* @__PURE__ */ React.createElement("span", {
32
34
  className: "hdl-payment-method__icon",
33
- style: { background: isCard ? "#FE8279" : "#D277E4" },
35
+ style: { background: isCard ? "#FE8279" : isCash ? "#D69B28" : "#D277E4" },
34
36
  "aria-hidden": "true"
35
- }, /* @__PURE__ */ React.createElement(Iconfont, {
36
- type: isCard ? "pisell2-credit" : "pisell2-custom",
37
+ }, isCard ? /* @__PURE__ */ React.createElement(Iconfont, {
38
+ type: "pisell2-credit-card-02",
37
39
  style: {
38
40
  fontSize: "46px",
39
41
  color: "#fff"
40
42
  }
41
- }));
43
+ }) : /* @__PURE__ */ React.createElement("svg", {
44
+ viewBox: "0 0 32 32",
45
+ width: "48",
46
+ height: "48",
47
+ fill: "none",
48
+ stroke: "#fff",
49
+ strokeWidth: "1.8",
50
+ strokeLinecap: "round",
51
+ strokeLinejoin: "round",
52
+ focusable: "false"
53
+ }, isCash ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("rect", {
54
+ x: "3",
55
+ y: "6",
56
+ width: "26",
57
+ height: "17",
58
+ rx: "3"
59
+ }), /* @__PURE__ */ React.createElement("path", { d: "M7 26h18M3 11a5 5 0 0 0 5-5m16 0a5 5 0 0 0 5 5M3 18a5 5 0 0 1 5 5m16 0a5 5 0 0 1 5-5" }), /* @__PURE__ */ React.createElement("ellipse", {
60
+ cx: "16",
61
+ cy: "14.5",
62
+ rx: "3.5",
63
+ ry: "4.5"
64
+ })) : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("rect", {
65
+ x: "7",
66
+ y: "4",
67
+ width: "14",
68
+ height: "9",
69
+ rx: "2"
70
+ }), /* @__PURE__ */ React.createElement("path", { d: "M11 8.5h6M14 13v3M8 16h16l4 7v4a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-4l4-7ZM4 23h24M13 25.5h6M10 19.5h2m3 0h2m3 0h2" }))));
42
71
  }
43
72
  function CheckoutScreen({ model, orderBar, send }) {
44
- var _model$paymentFeedbac;
73
+ var _model$paymentFeedbac2, _model$paymentFeedbac4, _model$paymentFeedbac5;
45
74
  const sendRef = useRef(send);
46
75
  sendRef.current = send;
47
76
  const goBack = useCallback(() => {
@@ -53,6 +82,47 @@ function CheckoutScreen({ model, orderBar, send }) {
53
82
  const canReturnToCart = Boolean(orderBar && orderBar.cartLineCount > 0) && model.canLeavePayment;
54
83
  const [restartOrderOpen, setRestartOrderOpen] = useState(false);
55
84
  const [dismissedFeedbackKey, setDismissedFeedbackKey] = useState();
85
+ const automaticPaymentHandled = useRef(false);
86
+ const confirmNoPayment = useCallback(() => {
87
+ var _model$paymentFeedbac;
88
+ automaticPaymentHandled.current = true;
89
+ setDismissedFeedbackKey((_model$paymentFeedbac = model.paymentFeedback) === null || _model$paymentFeedbac === void 0 ? void 0 : _model$paymentFeedbac.key);
90
+ sendRef.current({
91
+ kind: "command",
92
+ command: "checkout.completeNoPayment"
93
+ });
94
+ }, [(_model$paymentFeedbac2 = model.paymentFeedback) === null || _model$paymentFeedbac2 === void 0 ? void 0 : _model$paymentFeedbac2.key]);
95
+ const selectPayment = useCallback((method) => {
96
+ var _model$paymentFeedbac3;
97
+ automaticPaymentHandled.current = true;
98
+ setDismissedFeedbackKey((_model$paymentFeedbac3 = model.paymentFeedback) === null || _model$paymentFeedbac3 === void 0 ? void 0 : _model$paymentFeedbac3.key);
99
+ sendRef.current({
100
+ kind: "command",
101
+ command: method.eftpos ? "checkout.payEftpos" : "checkout.requestStaffPaymentApproval",
102
+ input: { paymentMethodId: method.id }
103
+ });
104
+ }, [(_model$paymentFeedbac4 = model.paymentFeedback) === null || _model$paymentFeedbac4 === void 0 ? void 0 : _model$paymentFeedbac4.key]);
105
+ useEffect(() => {
106
+ if (model.paymentFeedback) automaticPaymentHandled.current = true;
107
+ if (automaticPaymentHandled.current || model.busy || model.resetting || model.paymentResult || model.paymentResultPending || restartOrderOpen || !model.totalText) return;
108
+ let startPayment;
109
+ if (model.noPaymentRequired) {
110
+ if (model.canCompleteNoPayment) startPayment = confirmNoPayment;
111
+ } else if (model.canSelectPayment && !model.paymentMethodsLoading && !model.paymentMethodsErrorReference && model.paymentMethods.length === 1) startPayment = () => selectPayment(model.paymentMethods[0]);
112
+ if (!startPayment) return;
113
+ let cancelled = false;
114
+ Promise.resolve().then(() => {
115
+ if (!cancelled && !automaticPaymentHandled.current) startPayment();
116
+ });
117
+ return () => {
118
+ cancelled = true;
119
+ };
120
+ }, [
121
+ model,
122
+ restartOrderOpen,
123
+ confirmNoPayment,
124
+ selectPayment
125
+ ]);
56
126
  const [returnCountdown, setReturnCountdown] = useState(10);
57
127
  const resetOrder = useCallback((source) => sendRef.current({
58
128
  kind: "session",
@@ -148,11 +218,7 @@ function CheckoutScreen({ model, orderBar, send }) {
148
218
  role: "status"
149
219
  }, /* @__PURE__ */ React.createElement("span", { className: "hdl-operation-overlay__spinner" }), /* @__PURE__ */ React.createElement("strong", null, locales.getText("pisell2.hdl-kiosk.payment-processing"))));
150
220
  const paymentDisabled = !model.canSelectPayment || !model.totalText;
151
- const visibleFeedback = ((_model$paymentFeedbac = model.paymentFeedback) === null || _model$paymentFeedbac === void 0 ? void 0 : _model$paymentFeedbac.key) === dismissedFeedbackKey ? void 0 : model.paymentFeedback;
152
- const dismissCurrentFeedback = () => {
153
- var _model$paymentFeedbac2;
154
- return setDismissedFeedbackKey((_model$paymentFeedbac2 = model.paymentFeedback) === null || _model$paymentFeedbac2 === void 0 ? void 0 : _model$paymentFeedbac2.key);
155
- };
221
+ const visibleFeedback = ((_model$paymentFeedbac5 = model.paymentFeedback) === null || _model$paymentFeedbac5 === void 0 ? void 0 : _model$paymentFeedbac5.key) === dismissedFeedbackKey ? void 0 : model.paymentFeedback;
156
222
  return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("section", {
157
223
  className: "hdl-checkout-screen",
158
224
  "aria-labelledby": "hdl-payment-method-title"
@@ -167,13 +233,7 @@ function CheckoutScreen({ model, orderBar, send }) {
167
233
  className: "hdl-payment-method hdl-no-payment-confirm",
168
234
  "aria-busy": model.busy,
169
235
  disabled: !model.canCompleteNoPayment,
170
- onClick: () => {
171
- dismissCurrentFeedback();
172
- send({
173
- kind: "command",
174
- command: "checkout.completeNoPayment"
175
- });
176
- }
236
+ onClick: confirmNoPayment
177
237
  }, /* @__PURE__ */ React.createElement("span", { className: "hdl-no-payment-confirm__icon" }, /* @__PURE__ */ React.createElement(ConfirmOrderIcon, null)), /* @__PURE__ */ React.createElement("strong", null, locales.getText(model.busy ? "pisell2.hdl-kiosk.no-payment-confirming" : "pisell2.hdl-kiosk.no-payment-confirm")), /* @__PURE__ */ React.createElement(NextIcon, null)) : /* @__PURE__ */ React.createElement(React.Fragment, null, model.paymentMethodsLoading ? /* @__PURE__ */ React.createElement("p", {
178
238
  className: "hdl-payment-methods__notice",
179
239
  role: "status"
@@ -182,32 +242,21 @@ function CheckoutScreen({ model, orderBar, send }) {
182
242
  role: model.paymentMethodsErrorReference ? "alert" : "status"
183
243
  }, locales.getText("pisell2.hdl-kiosk.payment-methods-unavailable")) : null, model.paymentMethods.map((method) => {
184
244
  const eftpos = method.eftpos;
245
+ const displayName = method.name.replace(/-Linkly/g, "");
185
246
  return /* @__PURE__ */ React.createElement("button", {
186
247
  key: method.id,
187
248
  type: "button",
188
249
  className: `hdl-payment-method hdl-payment-method--${eftpos ? "card" : "cash"}`,
189
- "aria-label": method.name,
250
+ "aria-label": displayName,
190
251
  disabled: paymentDisabled,
191
- onClick: () => {
192
- dismissCurrentFeedback();
193
- if (eftpos) {
194
- send({
195
- kind: "command",
196
- command: "checkout.payEftpos",
197
- input: { paymentMethodId: method.id }
198
- });
199
- return;
200
- }
201
- send({
202
- kind: "command",
203
- command: "checkout.requestStaffPaymentApproval",
204
- input: { paymentMethodId: method.id }
205
- });
206
- }
252
+ onClick: () => selectPayment(method)
207
253
  }, /* @__PURE__ */ React.createElement(PaymentMethodIcon, {
208
254
  code: method.code,
209
- type: method.type
210
- }), /* @__PURE__ */ React.createElement("span", null, /* @__PURE__ */ React.createElement("strong", null, method.name)), /* @__PURE__ */ React.createElement(NextIcon, null));
255
+ name: method.name,
256
+ type: method.type,
257
+ eftpos: method.eftpos,
258
+ cash: method.cash
259
+ }), /* @__PURE__ */ React.createElement("span", null, /* @__PURE__ */ React.createElement("strong", null, displayName)), /* @__PURE__ */ React.createElement(NextIcon, null));
211
260
  }))), /* @__PURE__ */ React.createElement("div", { className: "hdl-payment-restart-section" }, /* @__PURE__ */ React.createElement(RestartOrderButton, {
212
261
  disabled: !model.canRestartOrder,
213
262
  title: model.restartOrderBlockedReason,
@@ -71,10 +71,13 @@ function createCheckoutScreenModel(snapshot, sales, payment, completed = false,
71
71
  busy: snapshot.status === "running",
72
72
  noPaymentRequired,
73
73
  canCompleteNoPayment: noPaymentRequired && interactionAvailable,
74
- paymentMethods: payment.methods,
74
+ paymentMethods: payment.methods.map((method) => {
75
+ var _method$metadata, _method$metadata2;
76
+ return _objectSpread2(_objectSpread2({}, method), {}, { cash: method.type === "custom" && (((_method$metadata = method.metadata) === null || _method$metadata === void 0 ? void 0 : _method$metadata.order_open_cash_drawer) === 1 || ((_method$metadata2 = method.metadata) === null || _method$metadata2 === void 0 ? void 0 : _method$metadata2.order_open_cash_drawer) === "1") });
77
+ }),
75
78
  paymentMethodsLoading: payment.loading,
76
79
  paymentMethodsErrorReference: payment.errorReference,
77
- canSelectPayment: interactionAvailable,
80
+ canSelectPayment: interactionAvailable && sales.summary.status === "ready",
78
81
  canLeavePayment: interactionAvailable,
79
82
  canRestartOrder: interactionAvailable,
80
83
  restartOrderBlockedReason: paymentSafeToChange ? void 0 : locales.getText("pisell2.hdl-kiosk.restart-order-payment-blocked"),
@@ -1,10 +1,10 @@
1
1
  import { _objectSpread2 } from "../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectSpread2.js";
2
2
  import dayjs from "dayjs";
3
- import timezone from "dayjs/plugin/timezone";
4
- import utc from "dayjs/plugin/utc";
3
+ import timezonePlugin from "dayjs/plugin/timezone";
4
+ import utcPlugin from "dayjs/plugin/utc";
5
5
  //#region src/plus/saasDevice/devicePasscodes/model.ts
6
- dayjs.extend(utc);
7
- dayjs.extend(timezone);
6
+ dayjs.extend(utcPlugin);
7
+ dayjs.extend(timezonePlugin);
8
8
  const INITIAL_DEVICE_PASSCODE_STATE = {
9
9
  deviceIds: [],
10
10
  devicesById: {}
@@ -6,12 +6,12 @@ import React, { useCallback, useEffect, useMemo, useRef } from "react";
6
6
  import { locales } from "@pisell/utils";
7
7
  import { Button, PisellEmpty, PisellModal, PisellStatisticList, Skeleton, Timeline, usePisellConfig } from "@pisell/materials";
8
8
  import { useRequest } from "ahooks";
9
- import timezone from "dayjs/plugin/timezone";
10
- import utc from "dayjs/plugin/utc";
9
+ import timezonePlugin from "dayjs/plugin/timezone";
10
+ import utcPlugin from "dayjs/plugin/utc";
11
11
  import "./index.less";
12
12
  //#region src/plus/walletPassGallery/components/timelineSection/index.tsx
13
- dayjs.extend(timezone);
14
- dayjs.extend(utc);
13
+ dayjs.extend(timezonePlugin);
14
+ dayjs.extend(utcPlugin);
15
15
  const stateTimeUnix = 1723255863;
16
16
  const POLL_INTERVAL = 2e3;
17
17
  const POLL_MAX_TIMES = 5;
@@ -27,23 +27,52 @@ function ConfirmOrderIcon() {
27
27
  "aria-hidden": "true"
28
28
  }, /* @__PURE__ */ react.default.createElement("path", { d: "m5 12 4 4L19 6" }));
29
29
  }
30
- /** 与 PaymentModal 一致:EFTPOS/信用卡使用 credit,其余自定义方式使用 custom。 */
31
- function PaymentMethodIcon({ code, type }) {
32
- const isCard = code === "EFTPOS" || type === "credit-card" || type === "eftpos";
30
+ /** 名称含 cash 时优先展示纸币,否则按卡支付、现金配置和自定义支付区分。 */
31
+ function PaymentMethodIcon({ code, name, type, eftpos, cash }) {
32
+ const nameContainsCash = /cash/i.test(name);
33
+ const isCash = nameContainsCash || cash;
34
+ const isCard = !nameContainsCash && (eftpos || code === "EFTPOS" || type === "credit-card" || type === "eftpos");
33
35
  return /* @__PURE__ */ react.default.createElement("span", {
34
36
  className: "hdl-payment-method__icon",
35
- style: { background: isCard ? "#FE8279" : "#D277E4" },
37
+ style: { background: isCard ? "#FE8279" : isCash ? "#D69B28" : "#D277E4" },
36
38
  "aria-hidden": "true"
37
- }, /* @__PURE__ */ react.default.createElement(_pisell_materials.Iconfont, {
38
- type: isCard ? "pisell2-credit" : "pisell2-custom",
39
+ }, isCard ? /* @__PURE__ */ react.default.createElement(_pisell_materials.Iconfont, {
40
+ type: "pisell2-credit-card-02",
39
41
  style: {
40
42
  fontSize: "46px",
41
43
  color: "#fff"
42
44
  }
43
- }));
45
+ }) : /* @__PURE__ */ react.default.createElement("svg", {
46
+ viewBox: "0 0 32 32",
47
+ width: "48",
48
+ height: "48",
49
+ fill: "none",
50
+ stroke: "#fff",
51
+ strokeWidth: "1.8",
52
+ strokeLinecap: "round",
53
+ strokeLinejoin: "round",
54
+ focusable: "false"
55
+ }, isCash ? /* @__PURE__ */ react.default.createElement(react.default.Fragment, null, /* @__PURE__ */ react.default.createElement("rect", {
56
+ x: "3",
57
+ y: "6",
58
+ width: "26",
59
+ height: "17",
60
+ rx: "3"
61
+ }), /* @__PURE__ */ react.default.createElement("path", { d: "M7 26h18M3 11a5 5 0 0 0 5-5m16 0a5 5 0 0 0 5 5M3 18a5 5 0 0 1 5 5m16 0a5 5 0 0 1 5-5" }), /* @__PURE__ */ react.default.createElement("ellipse", {
62
+ cx: "16",
63
+ cy: "14.5",
64
+ rx: "3.5",
65
+ ry: "4.5"
66
+ })) : /* @__PURE__ */ react.default.createElement(react.default.Fragment, null, /* @__PURE__ */ react.default.createElement("rect", {
67
+ x: "7",
68
+ y: "4",
69
+ width: "14",
70
+ height: "9",
71
+ rx: "2"
72
+ }), /* @__PURE__ */ react.default.createElement("path", { d: "M11 8.5h6M14 13v3M8 16h16l4 7v4a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-4l4-7ZM4 23h24M13 25.5h6M10 19.5h2m3 0h2m3 0h2" }))));
44
73
  }
45
74
  function CheckoutScreen({ model, orderBar, send }) {
46
- var _model$paymentFeedbac;
75
+ var _model$paymentFeedbac2, _model$paymentFeedbac4, _model$paymentFeedbac5;
47
76
  const sendRef = (0, react.useRef)(send);
48
77
  sendRef.current = send;
49
78
  const goBack = (0, react.useCallback)(() => {
@@ -55,6 +84,47 @@ function CheckoutScreen({ model, orderBar, send }) {
55
84
  const canReturnToCart = Boolean(orderBar && orderBar.cartLineCount > 0) && model.canLeavePayment;
56
85
  const [restartOrderOpen, setRestartOrderOpen] = (0, react.useState)(false);
57
86
  const [dismissedFeedbackKey, setDismissedFeedbackKey] = (0, react.useState)();
87
+ const automaticPaymentHandled = (0, react.useRef)(false);
88
+ const confirmNoPayment = (0, react.useCallback)(() => {
89
+ var _model$paymentFeedbac;
90
+ automaticPaymentHandled.current = true;
91
+ setDismissedFeedbackKey((_model$paymentFeedbac = model.paymentFeedback) === null || _model$paymentFeedbac === void 0 ? void 0 : _model$paymentFeedbac.key);
92
+ sendRef.current({
93
+ kind: "command",
94
+ command: "checkout.completeNoPayment"
95
+ });
96
+ }, [(_model$paymentFeedbac2 = model.paymentFeedback) === null || _model$paymentFeedbac2 === void 0 ? void 0 : _model$paymentFeedbac2.key]);
97
+ const selectPayment = (0, react.useCallback)((method) => {
98
+ var _model$paymentFeedbac3;
99
+ automaticPaymentHandled.current = true;
100
+ setDismissedFeedbackKey((_model$paymentFeedbac3 = model.paymentFeedback) === null || _model$paymentFeedbac3 === void 0 ? void 0 : _model$paymentFeedbac3.key);
101
+ sendRef.current({
102
+ kind: "command",
103
+ command: method.eftpos ? "checkout.payEftpos" : "checkout.requestStaffPaymentApproval",
104
+ input: { paymentMethodId: method.id }
105
+ });
106
+ }, [(_model$paymentFeedbac4 = model.paymentFeedback) === null || _model$paymentFeedbac4 === void 0 ? void 0 : _model$paymentFeedbac4.key]);
107
+ (0, react.useEffect)(() => {
108
+ if (model.paymentFeedback) automaticPaymentHandled.current = true;
109
+ if (automaticPaymentHandled.current || model.busy || model.resetting || model.paymentResult || model.paymentResultPending || restartOrderOpen || !model.totalText) return;
110
+ let startPayment;
111
+ if (model.noPaymentRequired) {
112
+ if (model.canCompleteNoPayment) startPayment = confirmNoPayment;
113
+ } else if (model.canSelectPayment && !model.paymentMethodsLoading && !model.paymentMethodsErrorReference && model.paymentMethods.length === 1) startPayment = () => selectPayment(model.paymentMethods[0]);
114
+ if (!startPayment) return;
115
+ let cancelled = false;
116
+ Promise.resolve().then(() => {
117
+ if (!cancelled && !automaticPaymentHandled.current) startPayment();
118
+ });
119
+ return () => {
120
+ cancelled = true;
121
+ };
122
+ }, [
123
+ model,
124
+ restartOrderOpen,
125
+ confirmNoPayment,
126
+ selectPayment
127
+ ]);
58
128
  const [returnCountdown, setReturnCountdown] = (0, react.useState)(10);
59
129
  const resetOrder = (0, react.useCallback)((source) => sendRef.current({
60
130
  kind: "session",
@@ -150,11 +220,7 @@ function CheckoutScreen({ model, orderBar, send }) {
150
220
  role: "status"
151
221
  }, /* @__PURE__ */ react.default.createElement("span", { className: "hdl-operation-overlay__spinner" }), /* @__PURE__ */ react.default.createElement("strong", null, _pisell_utils.locales.getText("pisell2.hdl-kiosk.payment-processing"))));
152
222
  const paymentDisabled = !model.canSelectPayment || !model.totalText;
153
- const visibleFeedback = ((_model$paymentFeedbac = model.paymentFeedback) === null || _model$paymentFeedbac === void 0 ? void 0 : _model$paymentFeedbac.key) === dismissedFeedbackKey ? void 0 : model.paymentFeedback;
154
- const dismissCurrentFeedback = () => {
155
- var _model$paymentFeedbac2;
156
- return setDismissedFeedbackKey((_model$paymentFeedbac2 = model.paymentFeedback) === null || _model$paymentFeedbac2 === void 0 ? void 0 : _model$paymentFeedbac2.key);
157
- };
223
+ const visibleFeedback = ((_model$paymentFeedbac5 = model.paymentFeedback) === null || _model$paymentFeedbac5 === void 0 ? void 0 : _model$paymentFeedbac5.key) === dismissedFeedbackKey ? void 0 : model.paymentFeedback;
158
224
  return /* @__PURE__ */ react.default.createElement(react.default.Fragment, null, /* @__PURE__ */ react.default.createElement("section", {
159
225
  className: "hdl-checkout-screen",
160
226
  "aria-labelledby": "hdl-payment-method-title"
@@ -169,13 +235,7 @@ function CheckoutScreen({ model, orderBar, send }) {
169
235
  className: "hdl-payment-method hdl-no-payment-confirm",
170
236
  "aria-busy": model.busy,
171
237
  disabled: !model.canCompleteNoPayment,
172
- onClick: () => {
173
- dismissCurrentFeedback();
174
- send({
175
- kind: "command",
176
- command: "checkout.completeNoPayment"
177
- });
178
- }
238
+ onClick: confirmNoPayment
179
239
  }, /* @__PURE__ */ react.default.createElement("span", { className: "hdl-no-payment-confirm__icon" }, /* @__PURE__ */ react.default.createElement(ConfirmOrderIcon, null)), /* @__PURE__ */ react.default.createElement("strong", null, _pisell_utils.locales.getText(model.busy ? "pisell2.hdl-kiosk.no-payment-confirming" : "pisell2.hdl-kiosk.no-payment-confirm")), /* @__PURE__ */ react.default.createElement(NextIcon, null)) : /* @__PURE__ */ react.default.createElement(react.default.Fragment, null, model.paymentMethodsLoading ? /* @__PURE__ */ react.default.createElement("p", {
180
240
  className: "hdl-payment-methods__notice",
181
241
  role: "status"
@@ -184,32 +244,21 @@ function CheckoutScreen({ model, orderBar, send }) {
184
244
  role: model.paymentMethodsErrorReference ? "alert" : "status"
185
245
  }, _pisell_utils.locales.getText("pisell2.hdl-kiosk.payment-methods-unavailable")) : null, model.paymentMethods.map((method) => {
186
246
  const eftpos = method.eftpos;
247
+ const displayName = method.name.replace(/-Linkly/g, "");
187
248
  return /* @__PURE__ */ react.default.createElement("button", {
188
249
  key: method.id,
189
250
  type: "button",
190
251
  className: `hdl-payment-method hdl-payment-method--${eftpos ? "card" : "cash"}`,
191
- "aria-label": method.name,
252
+ "aria-label": displayName,
192
253
  disabled: paymentDisabled,
193
- onClick: () => {
194
- dismissCurrentFeedback();
195
- if (eftpos) {
196
- send({
197
- kind: "command",
198
- command: "checkout.payEftpos",
199
- input: { paymentMethodId: method.id }
200
- });
201
- return;
202
- }
203
- send({
204
- kind: "command",
205
- command: "checkout.requestStaffPaymentApproval",
206
- input: { paymentMethodId: method.id }
207
- });
208
- }
254
+ onClick: () => selectPayment(method)
209
255
  }, /* @__PURE__ */ react.default.createElement(PaymentMethodIcon, {
210
256
  code: method.code,
211
- type: method.type
212
- }), /* @__PURE__ */ react.default.createElement("span", null, /* @__PURE__ */ react.default.createElement("strong", null, method.name)), /* @__PURE__ */ react.default.createElement(NextIcon, null));
257
+ name: method.name,
258
+ type: method.type,
259
+ eftpos: method.eftpos,
260
+ cash: method.cash
261
+ }), /* @__PURE__ */ react.default.createElement("span", null, /* @__PURE__ */ react.default.createElement("strong", null, displayName)), /* @__PURE__ */ react.default.createElement(NextIcon, null));
213
262
  }))), /* @__PURE__ */ react.default.createElement("div", { className: "hdl-payment-restart-section" }, /* @__PURE__ */ react.default.createElement(require_index$3.RestartOrderButton, {
214
263
  disabled: !model.canRestartOrder,
215
264
  title: model.restartOrderBlockedReason,
@@ -73,10 +73,13 @@ function createCheckoutScreenModel(snapshot, sales, payment, completed = false,
73
73
  busy: snapshot.status === "running",
74
74
  noPaymentRequired,
75
75
  canCompleteNoPayment: noPaymentRequired && interactionAvailable,
76
- paymentMethods: payment.methods,
76
+ paymentMethods: payment.methods.map((method) => {
77
+ var _method$metadata, _method$metadata2;
78
+ return require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, method), {}, { cash: method.type === "custom" && (((_method$metadata = method.metadata) === null || _method$metadata === void 0 ? void 0 : _method$metadata.order_open_cash_drawer) === 1 || ((_method$metadata2 = method.metadata) === null || _method$metadata2 === void 0 ? void 0 : _method$metadata2.order_open_cash_drawer) === "1") });
79
+ }),
77
80
  paymentMethodsLoading: payment.loading,
78
81
  paymentMethodsErrorReference: payment.errorReference,
79
- canSelectPayment: interactionAvailable,
82
+ canSelectPayment: interactionAvailable && sales.summary.status === "ready",
80
83
  canLeavePayment: interactionAvailable,
81
84
  canRestartOrder: interactionAvailable,
82
85
  restartOrderBlockedReason: paymentSafeToChange ? void 0 : _pisell_utils.locales.getText("pisell2.hdl-kiosk.restart-order-payment-blocked"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pisell/private-materials",
3
- "version": "6.12.312",
3
+ "version": "6.12.313",
4
4
  "main": "./lib/index.js",
5
5
  "module": "./es/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -73,8 +73,8 @@
73
73
  "use-sync-external-store": "^1.6.0",
74
74
  "@pisell/pi-payment-sdk": "0.0.3",
75
75
  "@pisell/utils": "3.0.7",
76
- "@pisell/icon": "0.0.11",
77
76
  "@pisell/date-picker": "3.0.12",
77
+ "@pisell/icon": "0.0.11",
78
78
  "@pisell/materials": "6.12.79"
79
79
  },
80
80
  "peerDependencies": {