@pisell/private-materials 6.11.693 → 6.11.696

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 (55) 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/bigSale/components/BookingFloatingPanel/useBookingPanelController.js +1 -0
  10. package/es/components/bigSale/components/ProductList/index.js +1 -0
  11. package/es/components/bigSale/components/TimeBar/index.js +1 -0
  12. package/es/components/bigSale/dialog.js +2 -1
  13. package/es/components/bigSale/hooks/useBigSaleContext.js +1 -0
  14. package/es/components/bigSale/hooks/useSelectFloorMapResourceForBigSale.js +1 -0
  15. package/es/components/bigSale/index.js +1 -0
  16. package/es/components/bigSale/templates/Kiosk/index.js +1 -0
  17. package/es/components/booking/addons/index.js +7 -7
  18. package/es/components/booking/components/footer/index.js +18 -13
  19. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.less +2 -2
  20. package/es/components/eventBooking/components/resourceUsability/index.less +5 -5
  21. package/es/components/sharedSecondaryBigSale/SharedSecondaryBigSaleReceiver.js +1 -0
  22. package/es/index.js +2 -0
  23. package/es/plus/multiCurrencySettlement/index.js +1 -1
  24. package/es/plus/pisellReservation/data/bookingToReservationTables.js +1 -1
  25. package/es/plus/pisellReservation/floorMap/floorPlanApi.js +1 -1
  26. package/es/plus/pisellReservation/floorMap/reservationMock.js +1 -1
  27. package/es/plus/pisellReservation/index.js +17 -0
  28. package/es/plus/saasDevice/devicePasscodes/model.js +4 -4
  29. package/es/plus/saleDetail/Base.js +1 -0
  30. package/es/plus/saleDetail/components/Client/hooks/useClientSelectorProps.js +1 -0
  31. package/es/plus/saleDetail/components/DetailActions/PrintAction.js +1 -0
  32. package/es/plus/saleDetail/components/DetailActions/index.js +1 -0
  33. package/es/plus/saleDetail/components/SummaryFinancialSections/index.js +1 -0
  34. package/es/plus/saleDetail/index.js +1 -0
  35. package/es/plus/saleDetail/tmpl/B/components/Dish/index.js +1 -0
  36. package/es/plus/saleDetail/tmpl/B/index.js +1 -0
  37. package/es/plus/salesSdk/index.js +54 -0
  38. package/es/plus/salesSdk/utils/addProductWithFlowDebounced.js +1 -1
  39. package/es/plus/salesSdk/utils/bookingDate.js +1 -1
  40. package/es/plus/salesSdk/utils/enrichCartLineHolderDisplay.js +1 -1
  41. package/es/plus/skuOptionsSelection/components/OptionsModal/index.js +12 -15
  42. package/es/plus/skuOptionsSelection/components/OptionsModal/index.less +7 -6
  43. package/es/plus/walletPassGallery/components/timelineSection/index.js +4 -4
  44. package/es/pro/Login2.0/AuthModal.d.ts +1 -1
  45. package/es/pro/Login2.0/index.d.ts +2 -2
  46. package/es/pro/Login2.0/shared/types.d.ts +1 -1
  47. package/lib/components/bigSale/dialog.js +1 -1
  48. package/lib/components/booking/addons/index.js +7 -7
  49. package/lib/components/booking/components/footer/index.js +18 -13
  50. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.less +2 -2
  51. package/lib/components/eventBooking/components/resourceUsability/index.less +5 -5
  52. package/lib/plus/skuOptionsSelection/components/OptionsModal/index.js +12 -15
  53. package/lib/plus/skuOptionsSelection/components/OptionsModal/index.less +7 -6
  54. package/package.json +5 -5
  55. package/es/private-materials/lowcode/authmodal/meta.d.ts +0 -1
@@ -343,7 +343,7 @@ function BigSaleDialogBootstrap({ open, contentActive, openNonce, orderId, prelo
343
343
  */
344
344
  function BigSaleDialog(props) {
345
345
  var _createSeed$row2, _createSeed$row$id2, _createSeed$row3;
346
- const { open, contentActive = open, onVisualStateSettled, orderId, preloadedSalesDetail, createSeed, onClose, callback, rulesHooks, enableGlobalScanListener, title, preloaded, destroyOnUnmount, osKey = "cached-dine-in-dialog", mode = "retail", businessCode, bookingConfigParams, productDisplayConfig, productLoadParams, productCatalogReady = true, orderType = "table-order", variant, openNonce = 0 } = props;
346
+ const { open, contentActive = open, onVisualStateSettled, orderId, preloadedSalesDetail, createSeed, onClose, callback, rulesHooks, enableGlobalScanListener, title, preloaded, destroyOnUnmount, osKey = "cached-dine-in-dialog", mode = "retail", businessCode, bookingConfigParams, productDisplayConfig, productLoadParams, productCatalogReady = true, orderType = orderId ? void 0 : "table-order", variant, openNonce = 0 } = props;
347
347
  const isPhoneVariant = variant === "phone";
348
348
  require_index.useCancelPosPermissionOnHide(open);
349
349
  const isEditMode = Boolean(orderId);
@@ -1,5 +1,6 @@
1
1
  const require_runtime = require("../../../_virtual/_rolldown/runtime.js");
2
2
  const require_useEngineContext = require("../../../hooks/useEngineContext.js");
3
+ const require_isWebPos = require("../../../utils/isWebPos.js");
3
4
  const require_objectSpread2 = require("../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectSpread2.js");
4
5
  const require_asyncToGenerator = require("../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/asyncToGenerator.js");
5
6
  const require_index = require("../../../pro/posPermission/index.js");
@@ -330,15 +331,14 @@ const Addons = require_model.Provider((props) => {
330
331
  * @Date: 2024-01-30 16:40
331
332
  */
332
333
  const handleOpenAdd = () => {
333
- if (isWebPos) return runWithPermission("order_edit", () => state.action({
334
+ if (require_isWebPos.resolveAppHelperIsWebPos(isWebPos)) return runWithPermission("order_edit", () => state.action({
334
335
  type: "pisell1.handleOpenCachedBigSale",
335
- data: {
336
- order_id: state.bookingId,
337
- business_code: "retail"
338
- },
336
+ data: { order_id: state.bookingId },
339
337
  callback: (res) => {
340
- var _window;
341
- (_window = window) === null || _window === void 0 || (_window = _window.shopApi) === null || _window === void 0 || (_window = _window.booking) === null || _window === void 0 || _window.refreshBookingDetail();
338
+ var _window, _state$callback;
339
+ const refresh = (_window = window) === null || _window === void 0 || (_window = _window.shopApi) === null || _window === void 0 || (_window = _window.booking) === null || _window === void 0 ? void 0 : _window.refreshBookingDetail;
340
+ if (typeof refresh === "function") refresh();
341
+ else (_state$callback = state.callback) === null || _state$callback === void 0 || _state$callback.call(state, { order_id: state.bookingId });
342
342
  }
343
343
  }));
344
344
  if ((isTerminal === null || isTerminal === void 0 ? void 0 : isTerminal()) && platform !== "webpos") {
@@ -1,5 +1,6 @@
1
1
  const require_runtime = require("../../../../_virtual/_rolldown/runtime.js");
2
2
  const require_useEngineContext = require("../../../../hooks/useEngineContext.js");
3
+ const require_isWebPos = require("../../../../utils/isWebPos.js");
3
4
  const require_IsActiveContext = require("../../../ticketBooking/context/IsActiveContext.js");
4
5
  const require_objectSpread2 = require("../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectSpread2.js");
5
6
  const require_asyncToGenerator = require("../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/asyncToGenerator.js");
@@ -849,15 +850,14 @@ const Footer = (props) => {
849
850
  (_state$onRebook = state.onRebook) === null || _state$onRebook === void 0 || _state$onRebook.call(state);
850
851
  };
851
852
  const handleSale = () => {
852
- if (isWebPos) return runWithPermission("order_edit", () => state.action({
853
+ if (require_isWebPos.resolveAppHelperIsWebPos(isWebPos)) return runWithPermission("order_edit", () => state.action({
853
854
  type: "pisell1.handleOpenCachedBigSale",
854
- data: {
855
- order_id: state.bookingId,
856
- business_code: "ticket"
857
- },
855
+ data: { order_id: state.bookingId },
858
856
  callback: (res) => {
859
- var _window5;
860
- (_window5 = window) === null || _window5 === void 0 || (_window5 = _window5.shopApi) === null || _window5 === void 0 || (_window5 = _window5.booking) === null || _window5 === void 0 || _window5.refreshBookingDetail();
857
+ var _window5, _state$callback;
858
+ const refresh = (_window5 = window) === null || _window5 === void 0 || (_window5 = _window5.shopApi) === null || _window5 === void 0 || (_window5 = _window5.booking) === null || _window5 === void 0 ? void 0 : _window5.refreshBookingDetail;
859
+ if (typeof refresh === "function") refresh();
860
+ else (_state$callback = state.callback) === null || _state$callback === void 0 || _state$callback.call(state, { order_id: state.bookingId });
861
861
  }
862
862
  }));
863
863
  if (isTerminal === null || isTerminal === void 0 ? void 0 : isTerminal()) {
@@ -876,15 +876,20 @@ const Footer = (props) => {
876
876
  };
877
877
  const handlePrint = () => {};
878
878
  const handleOrderDetail = () => {
879
- if (isWebPos) return state.action({
880
- type: "pisell1.handleOpenCachedBigSale",
879
+ if (require_isWebPos.resolveAppHelperIsWebPos(isWebPos)) return state.action({
880
+ type: "pisell1.handleOpenSaleDetail",
881
881
  data: {
882
- order_id: state.bookingId,
883
- business_code: "ticket"
882
+ osKey: "booking-order-detail",
883
+ osProps: {
884
+ orderId: state.bookingId,
885
+ syncDetailOnOrderChange: true
886
+ }
884
887
  },
885
888
  callback: (res) => {
886
- var _window6;
887
- (_window6 = window) === null || _window6 === void 0 || (_window6 = _window6.shopApi) === null || _window6 === void 0 || (_window6 = _window6.booking) === null || _window6 === void 0 || _window6.refreshBookingDetail();
889
+ var _window6, _state$callback2;
890
+ const refresh = (_window6 = window) === null || _window6 === void 0 || (_window6 = _window6.shopApi) === null || _window6 === void 0 || (_window6 = _window6.booking) === null || _window6 === void 0 ? void 0 : _window6.refreshBookingDetail;
891
+ if (typeof refresh === "function") refresh();
892
+ else (_state$callback2 = state.callback) === null || _state$callback2 === void 0 || _state$callback2.call(state, { order_id: state.bookingId });
888
893
  }
889
894
  });
890
895
  if (isTerminal === null || isTerminal === void 0 ? void 0 : isTerminal()) return interaction.utils.postMessageToApp({
@@ -121,8 +121,8 @@
121
121
  &.selectDate {
122
122
  .calendar-content,
123
123
  .day-item-calendar-content {
124
- border-color: var(--Primary-600, #7f56d9);
125
- box-shadow: inset 0 0 0 1px var(--Primary-600, #7f56d9);
124
+ border-color: var(--theme-color, #7f56d9);
125
+ box-shadow: inset 0 0 0 1px var(--theme-color, #7f56d9);
126
126
  box-sizing: border-box;
127
127
  }
128
128
  }
@@ -81,12 +81,12 @@
81
81
  }
82
82
 
83
83
  .pisell-event-usability-selected {
84
- border: 1px solid var(--Primary-600, #7f56d9);
84
+ border: 1px solid var(--theme-color, #7f56d9);
85
85
  // PisellCard 的 hover/background 样式可能晚于业务样式加载;明确覆盖,
86
86
  // 避免只剩选中白字而卡片仍是白底。
87
- background: var(--Primary-600, #7f56d9) !important;
87
+ background: var(--theme-color, #7f56d9) !important;
88
88
  &:hover {
89
- background: var(--Primary-600, #7f56d9) !important;
89
+ background: var(--theme-color, #7f56d9) !important;
90
90
  }
91
91
 
92
92
  .pisell-event-usability-slot,
@@ -100,6 +100,6 @@
100
100
  // box-shadow 补出原来的双像素选中效果。
101
101
  .pisell-event-usability.pisell-card-wrap-selected {
102
102
  border-width: 1px;
103
- border-color: var(--Primary-600, #7f56d9);
104
- box-shadow: 0 0 0 1px var(--Primary-600, #7f56d9);
103
+ border-color: var(--theme-color, #7f56d9);
104
+ box-shadow: 0 0 0 1px var(--theme-color, #7f56d9);
105
105
  }
@@ -27,9 +27,8 @@ const OptionsModal = (props) => {
27
27
  const renderType = (customConfig === null || customConfig === void 0 ? void 0 : customConfig.modalRenderType) || (variant === "phone" ? "drawer" : "modal");
28
28
  const isDrawer = renderType === "drawer";
29
29
  const isTabletVariant = !isDrawer && (variant === "tablet" || variant === "smallTablet");
30
- const viewportAspectRatio = typeof window !== "undefined" && window.innerHeight > 0 ? window.innerWidth / window.innerHeight : 0;
31
- const isPosTabletViewport = !isDrawer && variant === "pos" && typeof window !== "undefined" && window.innerWidth <= 1400 && viewportAspectRatio >= 1.25 && viewportAspectRatio <= 1.65;
32
- const shouldUseLargeModal = isTabletVariant || isPosTabletViewport;
30
+ const shouldUsePrimaryModalLayout = !isDrawer;
31
+ const modalWidth = isDrawer ? "100%" : isTabletVariant ? "95%" : "80%";
33
32
  const platform = isDrawer ? "h5" : variant === "tablet" || variant === "smallTablet" ? "ipad" : "pc";
34
33
  (0, react.useEffect)(() => {
35
34
  if (!open || typeof window === "undefined" || typeof document === "undefined") return;
@@ -41,21 +40,20 @@ const OptionsModal = (props) => {
41
40
  const rect = wrapper === null || wrapper === void 0 ? void 0 : wrapper.getBoundingClientRect();
42
41
  const computedStyle = wrapper ? window.getComputedStyle(wrapper) : null;
43
42
  const viewport = window.visualViewport;
44
- const expectedWidth = shouldUseLargeModal ? window.innerWidth * .95 : null;
43
+ const expectedWidth = shouldUsePrimaryModalLayout ? window.innerWidth * (isTabletVariant ? .95 : .8) : window.innerWidth;
45
44
  const actualWidth = (_rect$width = rect === null || rect === void 0 ? void 0 : rect.width) !== null && _rect$width !== void 0 ? _rect$width : null;
46
45
  logger === null || logger === void 0 || (_logger$addLog = logger.addLog) === null || _logger$addLog === void 0 || _logger$addLog.call(logger, {
47
- type: shouldUseLargeModal && actualWidth != null && actualWidth < window.innerWidth * .9 ? "warning" : "info",
46
+ type: shouldUsePrimaryModalLayout && actualWidth != null && actualWidth < expectedWidth * .9 ? "warning" : "info",
48
47
  title: "SKU选项弹窗-布局",
49
48
  metadata: {
50
49
  reason,
51
50
  variant,
52
51
  renderType,
53
52
  isTabletVariant,
54
- isPosTabletViewport,
55
- shouldUseLargeModal,
53
+ primaryModalLayoutApplied: shouldUsePrimaryModalLayout,
56
54
  configuredWidth: (customConfig === null || customConfig === void 0 ? void 0 : customConfig.modalWidth) || "480px",
57
55
  expectedWidth,
58
- expectedHeight: shouldUseLargeModal ? "95%" : null,
56
+ expectedHeight: "95%",
59
57
  actual: rect ? {
60
58
  width: Number(rect.width.toFixed(2)),
61
59
  height: Number(rect.height.toFixed(2)),
@@ -69,7 +67,7 @@ const OptionsModal = (props) => {
69
67
  maxHeight: computedStyle.maxHeight,
70
68
  transform: computedStyle.transform
71
69
  } : null,
72
- largeModalSizeApplied: !shouldUseLargeModal || actualWidth != null && actualWidth >= window.innerWidth * .9,
70
+ primaryModalSizeApplied: !shouldUsePrimaryModalLayout || actualWidth != null && actualWidth >= expectedWidth * .9,
73
71
  window: {
74
72
  innerWidth: window.innerWidth,
75
73
  innerHeight: window.innerHeight,
@@ -98,8 +96,8 @@ const OptionsModal = (props) => {
98
96
  return () => window.clearTimeout(settledTimer);
99
97
  }, [
100
98
  customConfig === null || customConfig === void 0 ? void 0 : customConfig.modalWidth,
101
- isPosTabletViewport,
102
- shouldUseLargeModal,
99
+ isTabletVariant,
100
+ shouldUsePrimaryModalLayout,
103
101
  logger,
104
102
  open,
105
103
  renderType,
@@ -152,11 +150,10 @@ const OptionsModal = (props) => {
152
150
  className: (0, classnames.default)("pisell-sku-options-modal", props.appearanceClassName, {
153
151
  "pisell-sku-options-modal--drawer": isDrawer,
154
152
  "pisell-sku-options-modal--smallTablet": isTabletVariant && variant === "smallTablet",
155
- "pisell-sku-options-modal--tablet": isTabletVariant && variant === "tablet",
156
- "pisell-sku-options-modal--pos-tablet": isPosTabletViewport
153
+ "pisell-sku-options-modal--tablet": isTabletVariant && variant === "tablet"
157
154
  }),
158
155
  style: require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, props.appearanceStyle), {}, { maxHeight: isDrawer ? "95dvh" : void 0 }),
159
- height: isDrawer || shouldUseLargeModal ? "95%" : void 0,
156
+ height: "95%",
160
157
  footer: /* @__PURE__ */ react.default.createElement("div", { className: "pisell-plus-sku-options-card-footer" }, /* @__PURE__ */ react.default.createElement("div", null, /* @__PURE__ */ react.default.createElement(require_index$1.default, {
161
158
  min: canSelectedMin,
162
159
  max: canSelectedMax,
@@ -179,7 +176,7 @@ const OptionsModal = (props) => {
179
176
  display: "flex",
180
177
  flexDirection: "column"
181
178
  },
182
- width: isDrawer ? "100%" : shouldUseLargeModal ? "95%" : (customConfig === null || customConfig === void 0 ? void 0 : customConfig.modalWidth) || "480px",
179
+ width: modalWidth,
183
180
  placement: isDrawer ? "bottom" : void 0
184
181
  }
185
182
  }, /* @__PURE__ */ react.default.createElement(SelectorGroup, {
@@ -1,10 +1,13 @@
1
1
  /**
2
2
  * SKU 二级规格选择弹窗(OptionsModal)
3
3
  * - Drawer 限制在可视区 95dvh 内,超长规格由内容区自行滚动
4
- * - 与 .pisell-sku-detail-modal 对齐:smallTablet / tablet 下放宽到 95% 宽 + 95vh 高
5
- * - 其他设备保持组件原生默认(受 `width={customConfig?.modalWidth || '480px'}` 控制)
4
+ * - 与 .pisell-sku-detail-modal 对齐:非 Drawer 为 80% 宽 + 95% 高;
5
+ * smallTablet / tablet 下放宽到 95% 宽 + 95% 高
6
6
  */
7
7
  .pisell-sku-options-modal {
8
+ height: 95% !important;
9
+ max-height: 884px !important;
10
+
8
11
  &--drawer {
9
12
  .pisell-lowcode-floating-layer-content,
10
13
  .pisell-lowcode-modal-content {
@@ -18,11 +21,9 @@
18
21
  }
19
22
 
20
23
  &--smallTablet,
21
- &--tablet,
22
- // iPad WebPOS 当前会注入 variant=pos;仅由组件在横屏平板视口条件下添加。
23
- &--pos-tablet {
24
+ &--tablet {
24
25
  width: 95% !important;
25
- height: 95% !important;
26
+ max-height: 95% !important;
26
27
 
27
28
  .pisell-lowcode-modal-content {
28
29
  height: 100% !important;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pisell/private-materials",
3
- "version": "6.11.693",
3
+ "version": "6.11.696",
4
4
  "main": "./lib/index.js",
5
5
  "module": "./es/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -71,11 +71,11 @@
71
71
  "react-zoom-pan-pinch": "^3.7.0",
72
72
  "styled-components": "^6.0.0-rc.3",
73
73
  "use-sync-external-store": "^1.6.0",
74
- "@pisell/icon": "0.0.11",
75
- "@pisell/date-picker": "3.0.12",
76
- "@pisell/pi-payment-sdk": "0.0.3",
77
74
  "@pisell/utils": "3.0.7",
78
- "@pisell/materials": "6.11.269"
75
+ "@pisell/pi-payment-sdk": "0.0.3",
76
+ "@pisell/materials": "6.11.269",
77
+ "@pisell/icon": "0.0.11",
78
+ "@pisell/date-picker": "3.0.12"
79
79
  },
80
80
  "peerDependencies": {
81
81
  "react": "^18.0.0",
@@ -1 +0,0 @@
1
- export { };