@pisell/private-materials 6.12.376 → 6.12.378

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/meta.js +1 -1
  5. package/build/lowcode/render/default/view.css +1 -1
  6. package/build/lowcode/render/default/view.js +3 -3
  7. package/build/lowcode/view.css +1 -1
  8. package/build/lowcode/view.js +3 -3
  9. package/es/components/HDLKiosk/locales.js +10 -0
  10. package/es/components/HDLKiosk/slices/customization/PrimaryProductSelection/assets/order-background.svg +24 -0
  11. package/es/components/HDLKiosk/slices/customization/PrimaryProductSelection/index.js +55 -34
  12. package/es/components/HDLKiosk/slices/customization/PrimaryProductSelection/index.less +175 -125
  13. package/es/components/HDLKiosk/slices/customization/Screen/index.js +2 -2
  14. package/es/components/bigSale/components/BookingFloatingPanel/useBookingPanelController.js +0 -1
  15. package/es/components/bigSale/components/ProductList/index.js +0 -1
  16. package/es/components/bigSale/components/TimeBar/index.js +0 -1
  17. package/es/components/bigSale/dialog.js +0 -1
  18. package/es/components/bigSale/hooks/useBigSaleContext.js +0 -1
  19. package/es/components/bigSale/hooks/useBigSaleProductListConfig.js +1 -0
  20. package/es/components/bigSale/hooks/useSelectFloorMapResourceForBigSale.js +0 -1
  21. package/es/components/bigSale/index.js +0 -1
  22. package/es/components/bigSale/templates/Kiosk/index.js +0 -1
  23. package/es/components/sharedSecondaryBigSale/SharedSecondaryBigSaleReceiver.js +0 -1
  24. package/es/components/ticketBooking/components/ProductDisplayAdapter/index.js +3 -0
  25. package/es/components/ticketBooking/components/addServiceVariant/addService.js +1 -0
  26. package/es/index.js +0 -2
  27. package/es/plus/multiCurrencySettlement/index.js +1 -1
  28. package/es/plus/pisellReservation/data/bookingToReservationTables.js +1 -1
  29. package/es/plus/pisellReservation/floorMap/floorPlanApi.js +1 -1
  30. package/es/plus/pisellReservation/floorMap/reservationMock.js +1 -1
  31. package/es/plus/saleDetail/Base.js +0 -1
  32. package/es/plus/saleDetail/components/Client/hooks/useClientSelectorProps.js +0 -1
  33. package/es/plus/saleDetail/components/DetailActions/PrintAction.js +0 -1
  34. package/es/plus/saleDetail/components/DetailActions/index.js +0 -1
  35. package/es/plus/saleDetail/components/SummaryFinancialSections/index.js +0 -1
  36. package/es/plus/saleDetail/index.js +0 -1
  37. package/es/plus/saleDetail/tmpl/B/components/Dish/index.js +0 -1
  38. package/es/plus/saleDetail/tmpl/B/index.js +0 -1
  39. package/es/plus/salesSdk/context/SalesSdkProvider.js +3 -0
  40. package/es/plus/salesSdk/giftSelect/buildGiftOrderProducts.js +2 -2
  41. package/es/plus/salesSdk/giftSelect/createOpenGiftSelectHost.js +2 -2
  42. package/es/plus/salesSdk/utils/addProductWithFlowDebounced.js +1 -1
  43. package/es/plus/salesSdk/utils/bookingDate.js +1 -1
  44. package/es/plus/salesSdk/utils/enrichCartLineHolderDisplay.js +1 -1
  45. package/es/private-materials/lowcode/authmodal/meta.d.ts +1 -0
  46. package/es/pro/Login2.0/AuthModal.d.ts +1 -1
  47. package/es/pro/Login2.0/index.d.ts +2 -2
  48. package/es/pro/Login2.0/shared/types.d.ts +1 -1
  49. package/lib/components/HDLKiosk/locales.js +10 -0
  50. package/lib/components/HDLKiosk/slices/customization/PrimaryProductSelection/assets/order-background.svg +24 -0
  51. package/lib/components/HDLKiosk/slices/customization/PrimaryProductSelection/index.js +54 -33
  52. package/lib/components/HDLKiosk/slices/customization/PrimaryProductSelection/index.less +175 -125
  53. package/lib/components/HDLKiosk/slices/customization/Screen/index.js +1 -1
  54. package/lib/plus/salesSdk/context/SalesSdkProvider.js +3 -0
  55. package/lib/plus/salesSdk/giftSelect/buildGiftOrderProducts.js +2 -2
  56. package/lib/plus/salesSdk/giftSelect/createOpenGiftSelectHost.js +2 -2
  57. package/package.json +4 -4
  58. package/es/plus/pisellReservation/index.js +0 -17
  59. package/es/plus/salesSdk/index.js +0 -54
@@ -2,6 +2,7 @@ import { _objectSpread2 } from "../../../_virtual/_@oxc-project_runtime@0.122.0/
2
2
  import { _objectWithoutProperties } from "../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectWithoutProperties.js";
3
3
  import { generateProductTabs, sortProductsByTabOrder } from "../../ticketBooking/components/ProductDisplayAdapter/utils.js";
4
4
  import { ProductDisplayPresets } from "../../ticketBooking/components/ProductDisplayAdapter/types.js";
5
+ import "../../ticketBooking/components/ProductDisplayAdapter/index.js";
5
6
  import { mergeBigSaleProductListPreferences } from "../utils/productListPreferences.js";
6
7
  import { useMemo, useRef } from "react";
7
8
  import isEqual from "lodash/isEqual";
@@ -3,7 +3,6 @@ import { _asyncToGenerator } from "../../../_virtual/_@oxc-project_runtime@0.122
3
3
  import { buildInitBookingContextParams, collectBookingIdsFromTempOrder } from "../../../plus/salesSdk/utils/buildDefaultLoadProductsParams.js";
4
4
  import { useSalesSdkUIHosts } from "../../../plus/salesSdk/context/SalesSdkUIHostsContext.js";
5
5
  import { SalesSdkRootRefreshContext } from "../../../plus/salesSdk/context/SalesSdkProvider.js";
6
- import "../../../plus/salesSdk/index.js";
7
6
  import { isPersistedBigSaleOrderId } from "../utils/orderIdentity.js";
8
7
  import { resolveOrderIdForHostActions } from "../../../plus/pisellReservation/components/bookingDetailModal/bookingDetailHostActions.js";
9
8
  import { usePicoCodingOpenData } from "../../../plus/pisellReservation/hooks/usePicoCodingOpenData.js";
@@ -8,7 +8,6 @@ import { useSalesSdk } from "../../plus/salesSdk/hooks/useSalesSdk.js";
8
8
  import { useSalesSdkCustomer } from "../../plus/salesSdk/hooks/useSalesSdkCustomer.js";
9
9
  import { SalesSdkProvider } from "../../plus/salesSdk/context/SalesSdkProvider.js";
10
10
  import { SalesSdkBookingContextProvider } from "../../plus/salesSdk/context/SalesSdkBookingContext.js";
11
- import "../../plus/salesSdk/index.js";
12
11
  import { resolveKioskPlatformSource, resolveKioskPresentation } from "../kioskSale/resolveKioskPresentation.js";
13
12
  import { resolveCustomerDetailAppearance } from "../../pro/skuDetailModal/customerDetailPolicy.js";
14
13
  import { ResponsiveBigSaleBase } from "./Base.js";
@@ -13,7 +13,6 @@ import { useSalesSdkBusinessAvailability } from "../../../../plus/salesSdk/conte
13
13
  import { collectUnassignedHolderLines } from "../../../../plus/salesSdk/utils/holderSubmitValidation.js";
14
14
  import { isFulfillmentTimingBooking } from "../../../../plus/salesSdk/utils/fulfillmentTimingBooking.js";
15
15
  import { useSalesSdkGlobalScanActivity } from "../../../../plus/salesSdk/context/SalesSdkGlobalScanActivityContext.js";
16
- import "../../../../plus/salesSdk/index.js";
17
16
  import { usePickSaleDetailContext } from "../../hooks/usePickSaleDetailContext.js";
18
17
  import { resolveBigSaleAutoProductListPreferences } from "../../utils/productListPreferences.js";
19
18
  import { resolveBigSaleProductDisplayConfig } from "../../hooks/useBigSaleProductListConfig.js";
@@ -2,7 +2,6 @@ import useEngineContext from "../../hooks/useEngineContext.js";
2
2
  import { _asyncToGenerator } from "../../_virtual/_@oxc-project_runtime@0.122.0/helpers/asyncToGenerator.js";
3
3
  import { useSalesSdk } from "../../plus/salesSdk/hooks/useSalesSdk.js";
4
4
  import { TEMP_ORDER_SYNC_REQUEST_MESSAGE_TYPE, getTempOrderSyncPayload, shouldApplySharedTempOrderPayload } from "../../plus/salesSdk/tempOrderSync.js";
5
- import "../../plus/salesSdk/index.js";
6
5
  import { useEffect, useRef, useState } from "react";
7
6
  //#region src/components/sharedSecondaryBigSale/SharedSecondaryBigSaleReceiver.tsx
8
7
  function createRequestId() {
@@ -0,0 +1,3 @@
1
+ import "./ProductDisplayAdapter.js";
2
+ import "./types.js";
3
+ export {};
@@ -19,6 +19,7 @@ import { useProducts } from "../../hooks/pisellos/useProducts.js";
19
19
  import { useService } from "../../../booking/info/service/serviceManager/index.js";
20
20
  import ProductDisplayAdapter_default from "../ProductDisplayAdapter/ProductDisplayAdapter.js";
21
21
  import { resolveProductDisplayConfig } from "../ProductDisplayAdapter/types.js";
22
+ import "../ProductDisplayAdapter/index.js";
22
23
  import notAvailable_default from "../notAvailable/index.js";
23
24
  import MultiDayTimeSelectModal from "./MultiDayTimeSelectModal.js";
24
25
  import dayjs from "dayjs";
package/es/index.js CHANGED
@@ -90,7 +90,6 @@ import { useSalesSdkProducts } from "./plus/salesSdk/hooks/useSalesSdkProducts.j
90
90
  import SalesSdkDemo from "./plus/salesSdk/demo/index.js";
91
91
  import { useSalesSdkDish } from "./plus/salesSdk/hooks/useSalesSdkDish.js";
92
92
  import { useSyncOsModule } from "./plus/salesSdk/hooks/useSyncOsModule.js";
93
- import "./plus/salesSdk/index.js";
94
93
  import BigSaleRightActionPanel from "./components/BigSaleRightActionPanel/index.js";
95
94
  import ResponsiveWrapper from "./components/list/ResponsiveWrapper.js";
96
95
  import { resolveBigSaleSelectionFlowConfig } from "./components/bigSale/selectionFlowConfig.js";
@@ -152,7 +151,6 @@ import PisellVenueControlPage from "./plus/pisellReservation/PisellVenueControlP
152
151
  import PisellVenueWallPage from "./plus/pisellReservation/PisellVenueWallPage.js";
153
152
  import PisellReservationTablePage from "./plus/pisellReservation/PisellReservationTablePage.js";
154
153
  import SelectFloorMapResourceDialog from "./plus/pisellReservation/components/SelectFloorMapResourceDialog.js";
155
- import "./plus/pisellReservation/index.js";
156
154
  import { PisellTopology, PisellTopologyCore } from "./plus/pisellTopology/PisellTopology.js";
157
155
  import cupProject_default from "./components/ecocup/cupProject/index.js";
158
156
  import CupList from "./components/ecocup/cupList/index.js";
@@ -280,4 +280,4 @@ function attachSelectedSettlement(item, selectedSettlement) {
280
280
  });
281
281
  }
282
282
  //#endregion
283
- export { attachSelectedSettlement, buildSettlementPriceRows, createVirtualOnlySkuDisplayProduct, findFirstVirtualCurrencyAsset, formatSettlementAmount, formatSettlementSelectionTotal, formatTempOrderSettlementAmount, getReservedVirtualSettlementAmount, getSettlementKey, getSettlementOptions, hasSettlementOptions, hasSufficientVirtualCurrencyBalance, isVirtualOnlySettlementProduct, isVirtualSettlementTempOrder, resolveConfiguredUnavailableReason, resolveLegalSettlementAddOnUnitPrice, resolveSettlementOptionEntries, resolveVirtualSettlementErrorMessage, showVirtualSettlementErrorToast };
283
+ export { attachSelectedSettlement, buildSettlementPriceRows, createVirtualOnlySkuDisplayProduct, formatSettlementAmount, formatSettlementSelectionTotal, formatTempOrderSettlementAmount, getSettlementKey, getSettlementOptions, hasSettlementOptions, hasSufficientVirtualCurrencyBalance, isVirtualOnlySettlementProduct, isVirtualSettlementTempOrder, resolveConfiguredUnavailableReason, resolveLegalSettlementAddOnUnitPrice, resolveSettlementOptionEntries, resolveVirtualSettlementErrorMessage, showVirtualSettlementErrorToast };
@@ -259,4 +259,4 @@ function bookingListToReservationTableRows(bookings) {
259
259
  return rows;
260
260
  }
261
261
  //#endregion
262
- export { applyHostResourceShellToBaseRow, bookingListToReservationTableRows, customerBrief, extractResourceRecordIds, filterBookingsByResourceIds, hostBookingStatusToCardStatus, hostBookingUiPatchFromRecord, mergeBookingsForResourceRecord };
262
+ export { applyHostResourceShellToBaseRow, bookingListToReservationTableRows, customerBrief, extractResourceRecordIds, filterBookingsByResourceIds, hostBookingUiPatchFromRecord, mergeBookingsForResourceRecord };
@@ -78,4 +78,4 @@ function toastFloorPlanLoadError(err) {
78
78
  PisellToast({ content: err instanceof Error ? err.message : String(err) });
79
79
  }
80
80
  //#endregion
81
- export { PISELL_RESERVATION_FLOOR_PLAN_CODE, buildDefaultReservationFloorPlanPostBody, ensureShopFloorPlanByCode, putShopFloorPlan, saveViewConfigToShopFloorPlan, shopLayoutToSceneElements$1 as shopLayoutToSceneElements, toastFloorPlanLoadError, toastFloorPlanSaveError, unsubscribeShopFloorPlanCodeQuery };
81
+ export { PISELL_RESERVATION_FLOOR_PLAN_CODE, ensureShopFloorPlanByCode, saveViewConfigToShopFloorPlan, shopLayoutToSceneElements$1 as shopLayoutToSceneElements, toastFloorPlanLoadError, toastFloorPlanSaveError, unsubscribeShopFloorPlanCodeQuery };
@@ -927,4 +927,4 @@ function getReservationDataSourceFormColumns() {
927
927
  ];
928
928
  }
929
929
  //#endregion
930
- export { RESERVATION_BOUND_ROUND_TABLE_ELEMENT_KIND, RESERVATION_BOUND_TABLE_ELEMENT_KIND, applyReservationFloorMapLiveLabels, defaultReservationSceneElements, defaultReservationTableRows, getDefaultReservationFloorMapConfig, getReservationDataSourceFormColumns, getReservationFloorMapShellConfig, mergeFloorMapElementKindCategoriesWithDefaults, mergeFloorMapElementKindsWithDefaults };
930
+ export { RESERVATION_BOUND_ROUND_TABLE_ELEMENT_KIND, RESERVATION_BOUND_TABLE_ELEMENT_KIND, applyReservationFloorMapLiveLabels, defaultReservationTableRows, getDefaultReservationFloorMapConfig, getReservationDataSourceFormColumns, getReservationFloorMapShellConfig, mergeFloorMapElementKindCategoriesWithDefaults, mergeFloorMapElementKindsWithDefaults };
@@ -13,7 +13,6 @@ import { useSalesSdkCustomer } from "../salesSdk/hooks/useSalesSdkCustomer.js";
13
13
  import locales_default from "./locales.js";
14
14
  import { useSalesSdkBookingContext } from "../salesSdk/context/SalesSdkBookingContext.js";
15
15
  import { useSalesSdkSummary } from "../salesSdk/hooks/useSalesSdkSummary.js";
16
- import "../salesSdk/index.js";
17
16
  import locales_default$1 from "./components/LineItem/locales.js";
18
17
  import { SaleOrderActionBoundary } from "./actions/index.js";
19
18
  import { SaleDetailTemplateRenderer } from "./tmpl/index.js";
@@ -1,7 +1,6 @@
1
1
  import useEngineContext from "../../../../../hooks/useEngineContext.js";
2
2
  import { _objectSpread2 } from "../../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectSpread2.js";
3
3
  import { useSalesSdkBookingContext } from "../../../../salesSdk/context/SalesSdkBookingContext.js";
4
- import "../../../../salesSdk/index.js";
5
4
  import { useMemo } from "react";
6
5
  import { useMemoizedFn } from "ahooks";
7
6
  //#region src/plus/saleDetail/components/Client/hooks/useClientSelectorProps.ts
@@ -4,7 +4,6 @@ import { _asyncToGenerator } from "../../../../_virtual/_@oxc-project_runtime@0.
4
4
  import { _objectWithoutProperties } from "../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectWithoutProperties.js";
5
5
  import useLogger from "../../../../hooks/useLogger.js";
6
6
  import { useSalesSdk } from "../../../salesSdk/hooks/useSalesSdk.js";
7
- import "../../../salesSdk/index.js";
8
7
  import { invokeLocalReceiptPrint, resolveLocalReceiptPrintModule, resolveSaleDetailOrderIdFromSales } from "./utils.js";
9
8
  import { getRemotePrintActions, getWristbandList } from "../../serve.js";
10
9
  import { EBizPrintType } from "./types.js";
@@ -10,7 +10,6 @@ import { useSalesSdk } from "../../../salesSdk/hooks/useSalesSdk.js";
10
10
  import { useSalesSdkCart } from "../../../salesSdk/hooks/useSalesSdkCart.js";
11
11
  import { useSalesSdkGlobalScanActivity } from "../../../salesSdk/context/SalesSdkGlobalScanActivityContext.js";
12
12
  import { useSalesSdkSummary } from "../../../salesSdk/hooks/useSalesSdkSummary.js";
13
- import "../../../salesSdk/index.js";
14
13
  import { resolveSaleDetailTempOrder } from "../../utils.js";
15
14
  import { getNumericAmount, getSalesHostModule, resolveSaleDetailOrderIdFromSales, resolveSaleDetailOrderIdFromSalesResult, shouldCloseDialogAfterCheckout, updateLocalOrder } from "./utils.js";
16
15
  import { deriveSaleOrderSubmitState } from "../../actions/state.js";
@@ -5,7 +5,6 @@ import { isAppliedPaymentRecord } from "../../../salesSdk/utils/paymentStatus.js
5
5
  import { useSalesSdk } from "../../../salesSdk/hooks/useSalesSdk.js";
6
6
  import { useSalesSdkCart } from "../../../salesSdk/hooks/useSalesSdkCart.js";
7
7
  import { useSalesSdkSummary } from "../../../salesSdk/hooks/useSalesSdkSummary.js";
8
- import "../../../salesSdk/index.js";
9
8
  import { resolveSaleDetailTempOrder } from "../../utils.js";
10
9
  import React, { memo, useMemo } from "react";
11
10
  import { formatAmount, locales } from "@pisell/utils";
@@ -5,7 +5,6 @@ import { useSalesSdk } from "../salesSdk/hooks/useSalesSdk.js";
5
5
  import { SalesSdkProvider } from "../salesSdk/context/SalesSdkProvider.js";
6
6
  import { SalesSdkDishProvider } from "../salesSdk/context/SalesSdkDishContext.js";
7
7
  import { SalesSdkBookingContextProvider } from "../salesSdk/context/SalesSdkBookingContext.js";
8
- import "../salesSdk/index.js";
9
8
  import Base_default from "./Base.js";
10
9
  import { resolveSaleDetailOsProps } from "./osProps.js";
11
10
  import React, { forwardRef, useImperativeHandle } from "react";
@@ -1,7 +1,6 @@
1
1
  import useStableInstanceId from "../../../../../../hooks/useStableInstanceId.js";
2
2
  import { useSalesSdkDish } from "../../../../../salesSdk/hooks/useSalesSdkDish.js";
3
3
  import { useCurrentSalesSdkDish } from "../../../../../salesSdk/hooks/useCurrentSalesSdkDish.js";
4
- import "../../../../../salesSdk/index.js";
5
4
  import { SaleDetailStatusOverview } from "../shared/StatusOverview.js";
6
5
  import { DishGroupView } from "./DishGroupView.js";
7
6
  import dayjs from "dayjs";
@@ -1,7 +1,6 @@
1
1
  import useEngineContext from "../../../../hooks/useEngineContext.js";
2
2
  import { _objectSpread2 } from "../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectSpread2.js";
3
3
  import { useCurrentSalesSdkDish } from "../../../salesSdk/hooks/useCurrentSalesSdkDish.js";
4
- import "../../../salesSdk/index.js";
5
4
  import { getInternalNotesByScheduleEvent } from "../../serve.js";
6
5
  import { TEMPLATE_B_PAY_ACTIONS, TEMPLATE_B_SUMMARY_ACTIONS } from "../../components/DetailActions/configs/index.js";
7
6
  import { DetailActions } from "../../components/DetailActions/index.js";
@@ -1622,6 +1622,7 @@ const SalesSdkProvider = ({ osKey, enableMultiCurrencySettlement = false, soluti
1622
1622
  const resolver = createOpenGiftSelectHost(hostBridges.giftSelect, () => bookingTicketRef.current, {
1623
1623
  getUiHosts: () => uiHostsValue,
1624
1624
  apiPrefix: context === null || context === void 0 || (_context$appHelper2 = context.appHelper) === null || _context$appHelper2 === void 0 || (_context$appHelper2 = _context$appHelper2.constants) === null || _context$appHelper2 === void 0 ? void 0 : _context$appHelper2.apiPrefix,
1625
+ autoSelectSingleGift: !(moduleOtherParams.businessCode === "venue_ticket" && productLoadChannel === "online_ordering"),
1625
1626
  salesSettingsSource,
1626
1627
  ensureSalesSettings
1627
1628
  });
@@ -1636,6 +1637,8 @@ const SalesSdkProvider = ({ osKey, enableMultiCurrencySettlement = false, soluti
1636
1637
  utils === null || utils === void 0 ? void 0 : utils.promotionEvaluator,
1637
1638
  context === null || context === void 0 || (_context$appHelper3 = context.appHelper) === null || _context$appHelper3 === void 0 || (_context$appHelper3 = _context$appHelper3.constants) === null || _context$appHelper3 === void 0 ? void 0 : _context$appHelper3.apiPrefix,
1638
1639
  hostBridges.giftSelect,
1640
+ moduleOtherParams.businessCode,
1641
+ productLoadChannel,
1639
1642
  uiHostsValue,
1640
1643
  salesSettingsSource,
1641
1644
  ensureSalesSettings
@@ -80,7 +80,7 @@ function buildGiftOrderProduct(choice, productData, ctx) {
80
80
  product_bundle: [],
81
81
  metadata: {
82
82
  unique_identification_number: uid,
83
- source_product_price: "0.00",
83
+ source_product_price: finalOriginal,
84
84
  main_product_original_price: finalOriginal,
85
85
  main_product_selling_price: "0.00",
86
86
  price_schema_version: 2,
@@ -139,7 +139,7 @@ function applyGiftMetadataToOrderProduct(orderLine, choice, productData, ctx) {
139
139
  }],
140
140
  metadata: _objectSpread2(_objectSpread2({}, metadata), {}, {
141
141
  unique_identification_number: metadata.unique_identification_number || orderLine.unique_identification_number || createUuidV4(),
142
- source_product_price: "0.00",
142
+ source_product_price: finalOriginal,
143
143
  main_product_original_price: finalOriginal,
144
144
  main_product_selling_price: "0.00",
145
145
  price_schema_version: 2,
@@ -130,7 +130,7 @@ function _resolveSingleBookingGiftChoice() {
130
130
  * 行为:
131
131
  * - 唯一且无规格/套餐的普通赠品:自动构造赠品行
132
132
  * - 唯一且无规格/套餐的预约赠品:复用 sale 加车决策链补齐预约信息
133
- * - 有规格/套餐、多候选或购物车重选:通过 bridge 打开赠品弹窗
133
+ * - 关闭自动选择、有规格/套餐、多候选或购物车重选:通过 bridge 打开赠品弹窗
134
134
  * - 用户取消:返回 null
135
135
  *
136
136
  * @example
@@ -148,7 +148,7 @@ function createOpenGiftSelectHost(bridge, getBookingTicket, options) {
148
148
  if (!shouldOpenGiftSelectModal(ctx)) return null;
149
149
  yield ensureGiftSalesSettings(options || {}, bookingTicket);
150
150
  let choices = null;
151
- if (ctx.giftOptions.length === 1 && ctx.mode !== "edit") {
151
+ if ((options === null || options === void 0 ? void 0 : options.autoSelectSingleGift) !== false && ctx.giftOptions.length === 1 && ctx.mode !== "edit") {
152
152
  var _bookingTicket$getPro;
153
153
  const option = ctx.giftOptions[0];
154
154
  const products = yield (_bookingTicket$getPro = bookingTicket.getProductByIds) === null || _bookingTicket$getPro === void 0 ? void 0 : _bookingTicket$getPro.call(bookingTicket, [Number(option.product_id)]);
@@ -407,4 +407,4 @@ function createAddProductWithFlowDebounced(deps) {
407
407
  };
408
408
  }
409
409
  //#endregion
410
- export { createAddProductWithFlowDebounced, shouldBypassAddProductDebounce };
410
+ export { createAddProductWithFlowDebounced };
@@ -31,4 +31,4 @@ function subscribeBookingDateChange(bookingTicket, callback) {
31
31
  return typeof off === "function" ? off : () => {};
32
32
  }
33
33
  //#endregion
34
- export { BOOKING_CONTEXT_DATE_EVENT, formatBookingDateTime, subscribeBookingDateChange };
34
+ export { formatBookingDateTime, subscribeBookingDateChange };
@@ -102,4 +102,4 @@ function buildHolderListRequestKey(params) {
102
102
  });
103
103
  }
104
104
  //#endregion
105
- export { buildHolderListRequestKey, buildHolderListRequestParams, enrichCartBookingHolderDisplay, enrichCartProductHolderDisplay, pickHolderIdFromBooking, resolveHolderDisplayConfig };
105
+ export { buildHolderListRequestKey, buildHolderListRequestParams, enrichCartBookingHolderDisplay, enrichCartProductHolderDisplay, resolveHolderDisplayConfig };
@@ -0,0 +1 @@
1
+ export { };
@@ -14,4 +14,4 @@ interface AuthModalProps {
14
14
  */
15
15
  declare const AuthModal: React.FC<AuthModalProps>;
16
16
  //#endregion
17
- export { AuthModal };
17
+ export { AuthModal, AuthModalProps };
@@ -1,4 +1,4 @@
1
- import { AuthMethodType, EmailAuthConfig, EmailRegistrationVerification, LoginFormData, OAuthConfig, PhoneAuthConfig, RegisterFormData, UIConfig, VerificationMethod } from "./shared/types.js";
1
+ import { AuthMethodType, VerificationMethod } from "./shared/types.js";
2
2
  import { Login2, Login2Config, Login2Events, Login2Props } from "./Login2.js";
3
3
  import { Register2, Register2Config, Register2Events, Register2Props } from "./Register2.js";
4
- import { AuthModal } from "./AuthModal.js";
4
+ import { AuthModal, AuthModalProps } from "./AuthModal.js";
@@ -226,4 +226,4 @@ interface RegisterFormData {
226
226
  verification_token?: string;
227
227
  }
228
228
  //#endregion
229
- export { AuthMethodType, EmailAuthConfig, EmailRegistrationVerification, LegalTermsConfig, LoginFormData, LoginMethodItem, OAuthConfig, PhoneAuthConfig, RegisterFormData, RegistrationMethodItem, UIConfig, VerificationMethod };
229
+ export { AuthMethodType, EmailAuthConfig, LegalTermsConfig, LoginFormData, LoginMethodItem, OAuthConfig, PhoneAuthConfig, RegisterFormData, RegistrationMethodItem, UIConfig, VerificationMethod };
@@ -3,6 +3,8 @@
3
3
  const localeTexts = {
4
4
  en: {
5
5
  "pisell2.hdl-kiosk.primary-select": "Choose your item",
6
+ "pisell2.hdl-kiosk.primary-weighted-zone": "Build your bowl",
7
+ "pisell2.hdl-kiosk.primary-standard-zone": "Set meals",
6
8
  "pisell2.hdl-kiosk.primary-select-description": "Tap an item to continue ordering",
7
9
  "pisell2.hdl-kiosk.primary-select-close": "Close item selection",
8
10
  "pisell2.hdl-kiosk.primary-image-unavailable": "No product image",
@@ -254,6 +256,8 @@ const localeTexts = {
254
256
  },
255
257
  "zh-CN": {
256
258
  "pisell2.hdl-kiosk.primary-select": "请选择商品",
259
+ "pisell2.hdl-kiosk.primary-weighted-zone": "自选称重",
260
+ "pisell2.hdl-kiosk.primary-standard-zone": "套餐",
257
261
  "pisell2.hdl-kiosk.primary-select-description": "点击商品,继续点单",
258
262
  "pisell2.hdl-kiosk.primary-select-close": "关闭商品选择",
259
263
  "pisell2.hdl-kiosk.primary-image-unavailable": "暂无商品图片",
@@ -505,6 +509,8 @@ const localeTexts = {
505
509
  },
506
510
  "zh-HK": {
507
511
  "pisell2.hdl-kiosk.primary-select": "請選擇商品",
512
+ "pisell2.hdl-kiosk.primary-weighted-zone": "自選稱重",
513
+ "pisell2.hdl-kiosk.primary-standard-zone": "套餐",
508
514
  "pisell2.hdl-kiosk.primary-select-description": "點擊商品,繼續點單",
509
515
  "pisell2.hdl-kiosk.primary-select-close": "關閉商品選擇",
510
516
  "pisell2.hdl-kiosk.primary-image-unavailable": "暫無商品圖片",
@@ -756,6 +762,8 @@ const localeTexts = {
756
762
  },
757
763
  ja: {
758
764
  "pisell2.hdl-kiosk.primary-select": "商品を選んでください",
765
+ "pisell2.hdl-kiosk.primary-weighted-zone": "量り売り",
766
+ "pisell2.hdl-kiosk.primary-standard-zone": "セットメニュー",
759
767
  "pisell2.hdl-kiosk.primary-select-description": "商品をタップして注文を続ける",
760
768
  "pisell2.hdl-kiosk.primary-select-close": "商品選択を閉じる",
761
769
  "pisell2.hdl-kiosk.primary-image-unavailable": "商品画像がありません",
@@ -1007,6 +1015,8 @@ const localeTexts = {
1007
1015
  },
1008
1016
  pt: {
1009
1017
  "pisell2.hdl-kiosk.primary-select": "Escolha o produto",
1018
+ "pisell2.hdl-kiosk.primary-weighted-zone": "Escolha por peso",
1019
+ "pisell2.hdl-kiosk.primary-standard-zone": "Menus de conjunto",
1010
1020
  "pisell2.hdl-kiosk.primary-select-description": "Toque num produto para continuar o pedido",
1011
1021
  "pisell2.hdl-kiosk.primary-select-close": "Fechar seleção de produto",
1012
1022
  "pisell2.hdl-kiosk.primary-image-unavailable": "Sem imagem do produto",
@@ -0,0 +1,24 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1080" height="1920" viewBox="0 0 1080 1920" fill="none">
2
+ <defs>
3
+ <pattern id="linen" width="12" height="12" patternUnits="userSpaceOnUse">
4
+ <path d="M0 3h12M0 9h12M3 0v12M9 0v12" stroke="#bba68c" stroke-width=".6" opacity=".07"/>
5
+ <path d="M0 4h12M0 10h12M4 0v12M10 0v12" stroke="#fffdf6" stroke-width=".6" opacity=".25"/>
6
+ </pattern>
7
+ <pattern id="cloth-edge" width="28" height="28" patternUnits="userSpaceOnUse">
8
+ <path d="m-7 7 28-28M0 28 28 0m-7 49 28-28" stroke="#9b4050" stroke-width="2" opacity=".06"/>
9
+ </pattern>
10
+ </defs>
11
+ <path fill="#eee8dc" d="M0 0h1080v1920H0z"/>
12
+ <path fill="url(#linen)" d="M0 0h1080v1920H0z"/>
13
+ <path fill="url(#cloth-edge)" d="M0 0h32v1920H0zm1048 0h32v1920h-32z"/>
14
+ <g stroke="#a88570" stroke-width="2" opacity=".2">
15
+ <ellipse cx="1080" cy="320" rx="184" ry="66"/>
16
+ <ellipse cx="1080" cy="320" rx="159" ry="47"/>
17
+ <path d="M900 332c29 117 84 164 180 164s151-47 180-164m-290 150h220"/>
18
+ <path d="m-32 730 143-320m-124 327L133 421" stroke-width="5" stroke-linecap="round"/>
19
+ <ellipse cx="-30" cy="1235" rx="170" ry="61"/>
20
+ <ellipse cx="-30" cy="1235" rx="146" ry="43"/>
21
+ <path d="M-196 1246c26 107 76 150 166 150s140-43 166-150"/>
22
+ <path d="m992 1530 128-296m-109 304 130-293" stroke-width="5" stroke-linecap="round"/>
23
+ </g>
24
+ </svg>
@@ -1,4 +1,5 @@
1
1
  const require_runtime = require("../../../../../_virtual/_rolldown/runtime.js");
2
+ const require_useStableInstanceId = require("../../../../../hooks/useStableInstanceId.js");
2
3
  const require_index = require("../../../components/shell/HDLKioskBottomBarHost/index.js");
3
4
  const require_index$1 = require("../../../components/shell/HDLKioskOrderSummary/index.js");
4
5
  const require_product = require("../../../product.js");
@@ -11,14 +12,15 @@ let _pisell_utils = require("@pisell/utils");
11
12
  let decimal_js = require("decimal.js");
12
13
  decimal_js = require_runtime.__toESM(decimal_js);
13
14
  //#region src/components/HDLKiosk/slices/customization/PrimaryProductSelection/index.tsx
14
- function ProductImage({ src }) {
15
+ function ProductImage({ src, name }) {
15
16
  const [failed, setFailed] = (0, react.useState)(false);
16
17
  return /* @__PURE__ */ react.default.createElement("span", {
17
18
  className: "hdl-ps-product-image",
18
19
  "aria-hidden": "true"
19
- }, failed || !src ? /* @__PURE__ */ react.default.createElement("span", { className: "hdl-ps-image-fallback" }, _pisell_utils.locales.getText("pisell2.hdl-kiosk.primary-image-unavailable")) : /* @__PURE__ */ react.default.createElement("img", {
20
- src,
20
+ }, failed || !src ? /* @__PURE__ */ react.default.createElement("span", { className: "hdl-ps-image-fallback" }, /* @__PURE__ */ react.default.createElement("strong", null, name), /* @__PURE__ */ react.default.createElement("span", null, _pisell_utils.locales.getText("pisell2.hdl-kiosk.primary-image-unavailable"))) : /* @__PURE__ */ react.default.createElement("img", {
21
+ src: _pisell_utils.image.ali(src, 750),
21
22
  alt: "",
23
+ draggable: false,
22
24
  onError: () => setFailed(true)
23
25
  }));
24
26
  }
@@ -26,6 +28,8 @@ function PrimaryProductSelection({ products, configuredCount, orderBar, capabili
26
28
  const scale = require_scale.useHDLScaleSnapshot();
27
29
  const delivered = (0, react.useRef)(false);
28
30
  const heading = (0, react.useRef)(null);
31
+ const selectionId = require_useStableInstanceId.default("hdl-primary-selection");
32
+ const headingId = `${selectionId}-title`;
29
33
  const { currencySymbol } = orderBar;
30
34
  const items = [...products].sort((left, right) => {
31
35
  const leftSort = Number(left.sort);
@@ -38,11 +42,22 @@ function PrimaryProductSelection({ products, configuredCount, orderBar, capabili
38
42
  return {
39
43
  product,
40
44
  facts,
45
+ name: (facts === null || facts === void 0 ? void 0 : facts.name) || require_product.resolveHDLProductText(product.title) || String(product.id),
46
+ imageUrl: typeof product.cover === "string" ? product.cover : void 0,
41
47
  subtitle: require_product.resolveHDLProductText(product.subtitle),
42
48
  disabled: unavailable || scaleUnavailable,
43
49
  reason: _pisell_utils.locales.getText(scaleUnavailable ? "pisell2.hdl-kiosk.entry-scale-unavailable" : "pisell2.hdl-kiosk.primary-unavailable")
44
50
  };
45
51
  });
52
+ const groups = ["weighted", "standard"].map((kind) => ({
53
+ kind,
54
+ title: _pisell_utils.locales.getText(kind === "weighted" ? "pisell2.hdl-kiosk.primary-weighted-zone" : "pisell2.hdl-kiosk.primary-standard-zone"),
55
+ items: items.filter((item) => {
56
+ var _item$product$variant, _item$facts;
57
+ const variants = (_item$product$variant = item.product.variant) !== null && _item$product$variant !== void 0 ? _item$product$variant : item.product.variants;
58
+ return (((_item$facts = item.facts) === null || _item$facts === void 0 ? void 0 : _item$facts.kind) === "weighted" || Number(item.product.open_sold_weight) === 1 || Array.isArray(variants) && variants.some((variant) => Number(variant === null || variant === void 0 ? void 0 : variant.open_sold_weight) === 1)) === (kind === "weighted");
59
+ })
60
+ })).filter((group) => group.items.length > 0);
46
61
  const select = (item) => {
47
62
  if (busy || item.disabled || !item.facts || delivered.current) return;
48
63
  delivered.current = true;
@@ -93,45 +108,51 @@ function PrimaryProductSelection({ products, configuredCount, orderBar, capabili
93
108
  ]));
94
109
  return /* @__PURE__ */ react.default.createElement("section", {
95
110
  className: "hdl-primary-selection",
96
- "aria-labelledby": "hdl-primary-selection-title"
97
- }, /* @__PURE__ */ react.default.createElement("div", { className: "hdl-ps-dialog" }, /* @__PURE__ */ react.default.createElement("div", { className: "hdl-ps-content" }, /* @__PURE__ */ react.default.createElement("div", { className: "hdl-ps-selection" }, /* @__PURE__ */ react.default.createElement("header", { className: "hdl-ps-heading" }, /* @__PURE__ */ react.default.createElement("h2", {
98
- id: "hdl-primary-selection-title",
111
+ "aria-labelledby": headingId
112
+ }, /* @__PURE__ */ react.default.createElement("div", { className: "hdl-ps-dialog" }, /* @__PURE__ */ react.default.createElement("div", { className: "hdl-ps-content" }, /* @__PURE__ */ react.default.createElement("h2", {
113
+ className: "hdl-ps-sr-only",
114
+ id: headingId,
99
115
  ref: heading,
100
116
  tabIndex: -1
101
- }, title), /* @__PURE__ */ react.default.createElement("p", { className: "hdl-ps-description" }, _pisell_utils.locales.getText("pisell2.hdl-kiosk.primary-select-description"))), /* @__PURE__ */ react.default.createElement("div", { className: "hdl-ps-products" }, items.map((item) => {
102
- var _item$facts, _item$facts2, _item$facts3;
103
- return /* @__PURE__ */ react.default.createElement("button", {
104
- className: "hdl-ps-product",
105
- key: String(item.product.id),
106
- type: "button",
107
- disabled: busy || item.disabled,
108
- onClick: () => select(item)
109
- }, /* @__PURE__ */ react.default.createElement(ProductImage, {
110
- key: (_item$facts = item.facts) === null || _item$facts === void 0 ? void 0 : _item$facts.imageUrl,
111
- src: (_item$facts2 = item.facts) === null || _item$facts2 === void 0 ? void 0 : _item$facts2.imageUrl
112
- }), /* @__PURE__ */ react.default.createElement("span", { className: "hdl-ps-product-details" }, /* @__PURE__ */ react.default.createElement("strong", { className: "hdl-ps-product-name" }, ((_item$facts3 = item.facts) === null || _item$facts3 === void 0 ? void 0 : _item$facts3.name) || require_product.resolveHDLProductText(item.product.title) || String(item.product.id)), item.subtitle ? /* @__PURE__ */ react.default.createElement("span", { className: "hdl-ps-product-subtitle" }, item.subtitle) : null, item.disabled ? /* @__PURE__ */ react.default.createElement("small", { className: "hdl-ps-unavailable" }, item.reason) : null), /* @__PURE__ */ react.default.createElement("span", {
113
- className: "hdl-ps-select-arrow",
114
- "aria-hidden": "true"
115
- }, /* @__PURE__ */ react.default.createElement("svg", {
116
- viewBox: "0 0 24 24",
117
- fill: "none"
118
- }, /* @__PURE__ */ react.default.createElement("path", {
119
- d: "M5 12h14m-6-6 6 6-6 6",
120
- stroke: "currentColor",
121
- strokeWidth: "1.8",
122
- strokeLinecap: "round",
123
- strokeLinejoin: "round"
124
- }))));
125
- })), /* @__PURE__ */ react.default.createElement("button", {
117
+ }, title), /* @__PURE__ */ react.default.createElement("div", { className: "hdl-ps-choices" }, groups.map((group) => /* @__PURE__ */ react.default.createElement("div", {
118
+ className: "hdl-ps-group",
119
+ key: group.kind,
120
+ "data-zone": group.kind,
121
+ role: "group",
122
+ "aria-labelledby": `${selectionId}-${group.kind}`
123
+ }, /* @__PURE__ */ react.default.createElement("div", { className: "hdl-ps-marker" }, /* @__PURE__ */ react.default.createElement("h3", { id: `${selectionId}-${group.kind}` }, group.title), /* @__PURE__ */ react.default.createElement("span", {
124
+ className: "hdl-ps-marker-line",
125
+ "aria-hidden": "true"
126
+ })), /* @__PURE__ */ react.default.createElement("div", { className: "hdl-ps-products" }, group.items.map((item) => /* @__PURE__ */ react.default.createElement("div", {
127
+ className: "hdl-ps-image-area",
128
+ key: String(item.product.id)
129
+ }, /* @__PURE__ */ react.default.createElement("div", { className: "hdl-ps-poster-area" }, /* @__PURE__ */ react.default.createElement("button", {
130
+ className: "hdl-ps-product",
131
+ type: "button",
132
+ "aria-label": item.name,
133
+ "aria-describedby": item.disabled ? `${selectionId}-${item.product.id}-unavailable` : void 0,
134
+ disabled: busy || item.disabled,
135
+ onClick: () => select(item)
136
+ }, /* @__PURE__ */ react.default.createElement(ProductImage, {
137
+ key: item.imageUrl,
138
+ src: item.imageUrl,
139
+ name: item.name
140
+ }), item.subtitle ? /* @__PURE__ */ react.default.createElement("span", { className: "hdl-ps-sr-only" }, item.subtitle) : null)), item.disabled ? /* @__PURE__ */ react.default.createElement("small", {
141
+ className: "hdl-ps-unavailable",
142
+ id: `${selectionId}-${item.product.id}-unavailable`
143
+ }, item.reason) : null))))), !items.length ? /* @__PURE__ */ react.default.createElement("p", {
144
+ className: "hdl-ps-empty",
145
+ role: "status"
146
+ }, _pisell_utils.locales.getText("pisell2.hdl-kiosk.primary-unavailable")) : null), /* @__PURE__ */ react.default.createElement("button", {
126
147
  type: "button",
127
- className: "hdl-bowl-dialog-button hdl-ps-skip",
148
+ className: "hdl-ps-skip",
128
149
  disabled: busy,
129
150
  onClick: () => {
130
151
  if (busy || delivered.current) return;
131
152
  delivered.current = true;
132
153
  if (onCancel() === false) delivered.current = false;
133
154
  }
134
- }, _pisell_utils.locales.getText("pisell2.hdl-kiosk.customization-skip")), !items.length ? /* @__PURE__ */ react.default.createElement("p", { role: "status" }, _pisell_utils.locales.getText("pisell2.hdl-kiosk.primary-unavailable")) : null))));
155
+ }, _pisell_utils.locales.getText("pisell2.hdl-kiosk.customization-skip")))));
135
156
  }
136
157
  //#endregion
137
158
  exports.PrimaryProductSelection = PrimaryProductSelection;