@pisell/private-materials 6.12.131 → 6.12.132

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 (41) 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 +1 -1
  7. package/build/lowcode/view.css +1 -1
  8. package/build/lowcode/view.js +1 -1
  9. package/es/components/bigSale/components/BookingFloatingPanel/useBookingPanelController.js +0 -1
  10. package/es/components/bigSale/components/TimeBar/index.js +0 -1
  11. package/es/components/bigSale/dialog.js +0 -1
  12. package/es/components/bigSale/hooks/useBigSaleContext.js +0 -1
  13. package/es/components/bigSale/hooks/useSelectFloorMapResourceForBigSale.js +0 -1
  14. package/es/components/bigSale/index.js +0 -1
  15. package/es/components/bigSale/templates/Kiosk/index.js +0 -1
  16. package/es/components/sharedSecondaryBigSale/SharedSecondaryBigSaleReceiver.js +0 -1
  17. package/es/index.js +0 -2
  18. package/es/plus/pisellReservation/data/bookingToReservationTables.js +1 -1
  19. package/es/plus/pisellReservation/floorMap/floorPlanApi.js +1 -1
  20. package/es/plus/pisellReservation/floorMap/reservationMock.js +1 -1
  21. package/es/plus/saleDetail/Base.js +0 -1
  22. package/es/plus/saleDetail/components/Client/hooks/useClientSelectorProps.js +0 -1
  23. package/es/plus/saleDetail/components/DetailActions/index.js +0 -1
  24. package/es/plus/saleDetail/components/SummaryFinancialSections/index.js +0 -1
  25. package/es/plus/saleDetail/index.js +0 -1
  26. package/es/plus/saleDetail/tmpl/B/components/Dish/index.js +0 -1
  27. package/es/plus/saleDetail/tmpl/B/index.js +0 -1
  28. package/es/plus/salesSdk/utils/addProductWithFlowDebounced.js +1 -1
  29. package/es/plus/salesSdk/utils/bookingDate.js +1 -1
  30. package/es/plus/salesSdk/utils/enrichCartLineHolderDisplay.js +1 -1
  31. package/es/private-materials/lowcode/authmodal/meta.d.ts +1 -0
  32. package/es/pro/Login2.0/AuthModal.d.ts +1 -1
  33. package/es/pro/Login2.0/index.d.ts +1 -2
  34. package/es/pro/Login2.0/shared/types.d.ts +1 -1
  35. package/es/pro/compensatedPisellContainer/floatingLayer/index.js +9 -4
  36. package/es/pro/skuDetailModal/flow/index.less +22 -0
  37. package/lib/pro/compensatedPisellContainer/floatingLayer/index.js +9 -4
  38. package/lib/pro/skuDetailModal/flow/index.less +22 -0
  39. package/package.json +3 -3
  40. package/es/plus/pisellReservation/index.js +0 -17
  41. package/es/plus/salesSdk/index.js +0 -48
@@ -1,6 +1,5 @@
1
1
  import useEngineContext from "../../../../hooks/useEngineContext.js";
2
2
  import { subscribeBookingDateChange } from "../../../../plus/salesSdk/utils/bookingDate.js";
3
- import "../../../../plus/salesSdk/index.js";
4
3
  import dayjs from "dayjs";
5
4
  import { useCallback, useEffect, useState } from "react";
6
5
  //#region src/components/bigSale/components/BookingFloatingPanel/useBookingPanelController.ts
@@ -4,7 +4,6 @@ import withResponsive from "../../../../responsive/withResponsive.js";
4
4
  import useInitLocalesOnce from "../../../../hooks/useInitLocalesOnce.js";
5
5
  import { subscribeBookingDateChange } from "../../../../plus/salesSdk/utils/bookingDate.js";
6
6
  import { useSalesSdkBookingContext } from "../../../../plus/salesSdk/context/SalesSdkBookingContext.js";
7
- import "../../../../plus/salesSdk/index.js";
8
7
  import locales_default from "../../locales/index.js";
9
8
  import dayjs from "dayjs";
10
9
  import React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
@@ -5,7 +5,6 @@ import { buildInitBookingContextParams, collectBookingIdsFromTempOrder } from ".
5
5
  import { useSalesSdk } from "../../plus/salesSdk/hooks/useSalesSdk.js";
6
6
  import { useSalesSdkCart } from "../../plus/salesSdk/hooks/useSalesSdkCart.js";
7
7
  import { SalesSdkPrepareOrderSwitchContext, SalesSdkRootRefreshContext } from "../../plus/salesSdk/context/SalesSdkProvider.js";
8
- import "../../plus/salesSdk/index.js";
9
8
  import { seedDineInReservationToCart } from "../../plus/pisellReservation/utils/seedDineInReservationToCart.js";
10
9
  import BigSale from "./index.js";
11
10
  import dayjs from "dayjs";
@@ -4,7 +4,6 @@ import { useSalesSdkCustomer } from "../../../plus/salesSdk/hooks/useSalesSdkCus
4
4
  import { useSalesSdkBookingContext } from "../../../plus/salesSdk/context/SalesSdkBookingContext.js";
5
5
  import { useSalesSdkSummary } from "../../../plus/salesSdk/hooks/useSalesSdkSummary.js";
6
6
  import { useSalesSdkProducts } from "../../../plus/salesSdk/hooks/useSalesSdkProducts.js";
7
- import "../../../plus/salesSdk/index.js";
8
7
  import { useMemo } from "react";
9
8
  //#region src/components/bigSale/hooks/useBigSaleContext.ts
10
9
  /**
@@ -3,7 +3,6 @@ import useEngineContext from "../../../hooks/useEngineContext.js";
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 { resolveOrderIdForHostActions } from "../../../plus/pisellReservation/components/bookingDetailModal/bookingDetailHostActions.js";
8
7
  import { usePicoCodingOpenData } from "../../../plus/pisellReservation/hooks/usePicoCodingOpenData.js";
9
8
  import { seedDineInReservationToCart } from "../../../plus/pisellReservation/utils/seedDineInReservationToCart.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 { ResponsiveBigSaleBase } from "./Base.js";
13
12
  import dayjs from "dayjs";
14
13
  import React, { useEffect, useMemo, useRef } from "react";
@@ -6,7 +6,6 @@ import { resolvePaymentResultToastV2ViewModel } from "../../../checkout/componen
6
6
  import PaymentResultToastV2_default from "../../../checkout/components/PaymentResultToastV2/index.js";
7
7
  import useSalesUserLogin, { isRequireLoginChannel } from "../../../../hooks/useSalesUserLogin.js";
8
8
  import { useSalesSdk } from "../../../../plus/salesSdk/hooks/useSalesSdk.js";
9
- import "../../../../plus/salesSdk/index.js";
10
9
  import { usePickSaleDetailContext } from "../../hooks/usePickSaleDetailContext.js";
11
10
  import { resolveBigSaleAutoProductListPreferences } from "../../utils/productListPreferences.js";
12
11
  import { resolveBigSaleProductDisplayConfig } from "../../hooks/useBigSaleProductListConfig.js";
@@ -2,7 +2,6 @@ import { _asyncToGenerator } from "../../_virtual/_@oxc-project_runtime@0.122.0/
2
2
  import useEngineContext from "../../hooks/useEngineContext.js";
3
3
  import { useSalesSdk } from "../../plus/salesSdk/hooks/useSalesSdk.js";
4
4
  import { getTempOrderSyncPayload, shouldApplySharedTempOrderPayload } from "../../plus/salesSdk/tempOrderSync.js";
5
- import "../../plus/salesSdk/index.js";
6
5
  import { useEffect, useRef } from "react";
7
6
  import { useMemoizedFn } from "ahooks";
8
7
  //#region src/components/sharedSecondaryBigSale/SharedSecondaryBigSaleReceiver.tsx
package/es/index.js CHANGED
@@ -82,7 +82,6 @@ import { useSalesSdkProducts } from "./plus/salesSdk/hooks/useSalesSdkProducts.j
82
82
  import SalesSdkDemo from "./plus/salesSdk/demo/index.js";
83
83
  import { useSalesSdkDish } from "./plus/salesSdk/hooks/useSalesSdkDish.js";
84
84
  import { useSyncOsModule } from "./plus/salesSdk/hooks/useSyncOsModule.js";
85
- import "./plus/salesSdk/index.js";
86
85
  import BigSaleRightActionPanel from "./components/BigSaleRightActionPanel/index.js";
87
86
  import BigSale from "./components/bigSale/index.js";
88
87
  import Deposit from "./components/appointmentBooking/deposit/index.js";
@@ -136,7 +135,6 @@ import PisellVenueControlPage from "./plus/pisellReservation/PisellVenueControlP
136
135
  import PisellVenueWallPage from "./plus/pisellReservation/PisellVenueWallPage.js";
137
136
  import PisellReservationTablePage from "./plus/pisellReservation/PisellReservationTablePage.js";
138
137
  import SelectFloorMapResourceDialog from "./plus/pisellReservation/components/SelectFloorMapResourceDialog.js";
139
- import "./plus/pisellReservation/index.js";
140
138
  import { PisellTopology, PisellTopologyCore } from "./plus/pisellTopology/PisellTopology.js";
141
139
  import cupProject_default from "./components/ecocup/cupProject/index.js";
142
140
  import CupList from "./components/ecocup/cupList/index.js";
@@ -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 };
@@ -11,7 +11,6 @@ import { useSalesSdkCart } from "../salesSdk/hooks/useSalesSdkCart.js";
11
11
  import { useSalesSdkCustomer } from "../salesSdk/hooks/useSalesSdkCustomer.js";
12
12
  import { useSalesSdkBookingContext } from "../salesSdk/context/SalesSdkBookingContext.js";
13
13
  import { useSalesSdkSummary } from "../salesSdk/hooks/useSalesSdkSummary.js";
14
- import "../salesSdk/index.js";
15
14
  import locales_default from "./locales.js";
16
15
  import locales_default$1 from "./components/LineItem/locales.js";
17
16
  import { SaleOrderActionBoundary } from "./actions/index.js";
@@ -1,7 +1,6 @@
1
1
  import { _objectSpread2 } from "../../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectSpread2.js";
2
2
  import useEngineContext from "../../../../../hooks/useEngineContext.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
@@ -9,7 +9,6 @@ import { useSalesSdk } from "../../../salesSdk/hooks/useSalesSdk.js";
9
9
  import { useSalesSdkCart } from "../../../salesSdk/hooks/useSalesSdkCart.js";
10
10
  import { useSalesSdkGlobalScanActivity } from "../../../salesSdk/context/SalesSdkGlobalScanActivityContext.js";
11
11
  import { useSalesSdkSummary } from "../../../salesSdk/hooks/useSalesSdkSummary.js";
12
- import "../../../salesSdk/index.js";
13
12
  import { getNumericAmount, getSalesHostModule, resolveSaleDetailOrderIdFromSales, resolveSaleDetailOrderIdFromSalesResult, shouldCloseDialogAfterCheckout, updateLocalOrder } from "./utils.js";
14
13
  import { getRemotePrintActions, getWristbandList } from "../../serve.js";
15
14
  import { deriveSaleOrderSubmitState } from "../../actions/state.js";
@@ -3,7 +3,6 @@ import { resolvePaymentMethodName, usePaymentMethodNameMap } from "../../../pise
3
3
  import { useSalesSdk } from "../../../salesSdk/hooks/useSalesSdk.js";
4
4
  import { useSalesSdkCart } from "../../../salesSdk/hooks/useSalesSdkCart.js";
5
5
  import { useSalesSdkSummary } from "../../../salesSdk/hooks/useSalesSdkSummary.js";
6
- import "../../../salesSdk/index.js";
7
6
  import React, { memo, useMemo } from "react";
8
7
  import { formatAmount, locales } from "@pisell/utils";
9
8
  import Decimal from "decimal.js";
@@ -4,7 +4,6 @@ import { useSalesSdk } from "../salesSdk/hooks/useSalesSdk.js";
4
4
  import { SalesSdkProvider } from "../salesSdk/context/SalesSdkProvider.js";
5
5
  import { SalesSdkDishProvider } from "../salesSdk/context/SalesSdkDishContext.js";
6
6
  import { SalesSdkBookingContextProvider } from "../salesSdk/context/SalesSdkBookingContext.js";
7
- import "../salesSdk/index.js";
8
7
  import Base_default from "./Base.js";
9
8
  import React, { forwardRef, useImperativeHandle } from "react";
10
9
  //#region src/plus/saleDetail/index.tsx
@@ -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 { _objectSpread2 } from "../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectSpread2.js";
2
2
  import useEngineContext from "../../../../hooks/useEngineContext.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";
@@ -348,4 +348,4 @@ function createAddProductWithFlowDebounced(deps) {
348
348
  };
349
349
  }
350
350
  //#endregion
351
- export { createAddProductWithFlowDebounced, shouldBypassAddProductDebounce };
351
+ 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 };
@@ -71,4 +71,4 @@ function buildHolderListRequestKey(params) {
71
71
  });
72
72
  }
73
73
  //#endregion
74
- export { buildHolderListRequestKey, buildHolderListRequestParams, enrichCartBookingHolderDisplay, pickHolderIdFromBooking, resolveHolderDisplayConfig };
74
+ export { buildHolderListRequestKey, buildHolderListRequestParams, enrichCartBookingHolderDisplay, resolveHolderDisplayConfig };
@@ -0,0 +1 @@
1
+ export { };
@@ -9,4 +9,4 @@ interface AuthModalProps {}
9
9
  */
10
10
  declare const AuthModal: React.FC<AuthModalProps>;
11
11
  //#endregion
12
- export { AuthModal };
12
+ export { AuthModal, AuthModalProps };
@@ -1,4 +1,3 @@
1
- import { AuthMethodType, EmailAuthConfig, EmailRegistrationVerification, LoginFormData, OAuthConfig, PhoneAuthConfig, RegisterFormData, UIConfig, VerificationMethod } from "./shared/types.js";
2
1
  import { Login2, Login2Config, Login2Events, Login2Props } from "./Login2.js";
3
2
  import { Register2, Register2Config, Register2Events, Register2Props } from "./Register2.js";
4
- import { AuthModal } from "./AuthModal.js";
3
+ 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 };
@@ -222,13 +222,17 @@ const TransformFloatingLayer = (props) => {
222
222
  }, []);
223
223
  const syncAutoHideScrollContentEnd = useCallback((target) => {
224
224
  const targetRect = target.getBoundingClientRect();
225
- let contentEndElement = target;
226
- let contentEnd = target.scrollHeight;
227
- let contentEndDepth = 0;
225
+ const lastVisibleChild = Array.from(target.children).reverse().find((candidate) => candidate instanceof HTMLElement && candidate.clientHeight > 0);
226
+ let contentEndElement = lastVisibleChild || target;
227
+ let contentEnd = lastVisibleChild ? lastVisibleChild.getBoundingClientRect().top - targetRect.top + target.scrollTop + lastVisibleChild.scrollHeight : target.scrollHeight;
228
+ let contentEndDepth = lastVisibleChild ? 1 : 0;
228
229
  /**
229
230
  * 滚动容器的直接子元素可能只是一个固定高度 flex 外壳,真实内容继续
230
231
  * 从更深层 overflow 出去。Footer spacer 若放在外壳后面,会与溢出的
231
232
  * 业务内容重叠。这里寻找真正把滚动高度撑到最底部的最深层节点。
233
+ * 没有内部 overflow 时也必须落在最后一个真实内容节点上;若直接落在
234
+ * flex 滚动容器自身,伪元素会参与剩余高度分配,可能看似有 spacer,
235
+ * 实际 scrollHeight 却没有增长,底部内容仍被浮动 Footer 遮住。
232
236
  */
233
237
  Array.from(target.querySelectorAll("*")).forEach((candidate) => {
234
238
  if (candidate.clientHeight <= 0 || candidate.scrollHeight <= candidate.clientHeight + 1) return;
@@ -515,7 +519,7 @@ const TransformFloatingLayer = (props) => {
515
519
  contentElement.style.setProperty(cssVariableName, "0px");
516
520
  return;
517
521
  }
518
- const rectHeight = regionContent.getBoundingClientRect().height;
522
+ const rectHeight = regionContent.getBoundingClientRect().height / bodyScale.y;
519
523
  const canCommitMeasuredHeight = !headerFooterHiddenRef.current && (allowShrink || lastVisibleHeightRef.current === 0 || rectHeight >= lastVisibleHeightRef.current);
520
524
  if (rectHeight > 0 && canCommitMeasuredHeight) lastVisibleHeightRef.current = rectHeight;
521
525
  contentElement.style.setProperty(cssVariableName, `${Math.max(0, lastVisibleHeightRef.current)}px`);
@@ -544,6 +548,7 @@ const TransformFloatingLayer = (props) => {
544
548
  resizeObserver.disconnect();
545
549
  };
546
550
  }, [
551
+ bodyScale.y,
547
552
  footerElement,
548
553
  headerNode,
549
554
  mergedOpen,
@@ -122,4 +122,26 @@
122
122
  display: flex;
123
123
  flex: 1;
124
124
  flex-direction: column;
125
+
126
+ // Footer spacer 会挂在 SelectionFlow 末尾。这里若继续使用 flex: 1,
127
+ // spacer 只会参与剩余高度分配,外层滚动容器的 scrollHeight 不会增长,
128
+ // 最后一段内容仍会被浮动 Footer 盖住且无法滚出。
129
+ > .selection-flow {
130
+ flex: 0 0 auto;
131
+
132
+ // Kiosk 会通过 body transform 适配设计稿尺寸。在该缩放布局中,flex
133
+ // 伪元素的 basis 可能不会进入祖先的 scrollHeight,仍然无法滚过 Footer。
134
+ // 改用真实 padding 承接动态 Footer 高度,确保占位参与盒模型计算。
135
+ &.pisell-lowcode-floating-layer-auto-hide-scroll-target-content-end {
136
+ box-sizing: border-box;
137
+ padding-bottom: var(
138
+ --pisell-lowcode-floating-layer-footer-scroll-spacer,
139
+ 0px
140
+ );
141
+
142
+ &::after {
143
+ display: none;
144
+ }
145
+ }
146
+ }
125
147
  }
@@ -225,13 +225,17 @@ const TransformFloatingLayer = (props) => {
225
225
  }, []);
226
226
  const syncAutoHideScrollContentEnd = (0, react.useCallback)((target) => {
227
227
  const targetRect = target.getBoundingClientRect();
228
- let contentEndElement = target;
229
- let contentEnd = target.scrollHeight;
230
- let contentEndDepth = 0;
228
+ const lastVisibleChild = Array.from(target.children).reverse().find((candidate) => candidate instanceof HTMLElement && candidate.clientHeight > 0);
229
+ let contentEndElement = lastVisibleChild || target;
230
+ let contentEnd = lastVisibleChild ? lastVisibleChild.getBoundingClientRect().top - targetRect.top + target.scrollTop + lastVisibleChild.scrollHeight : target.scrollHeight;
231
+ let contentEndDepth = lastVisibleChild ? 1 : 0;
231
232
  /**
232
233
  * 滚动容器的直接子元素可能只是一个固定高度 flex 外壳,真实内容继续
233
234
  * 从更深层 overflow 出去。Footer spacer 若放在外壳后面,会与溢出的
234
235
  * 业务内容重叠。这里寻找真正把滚动高度撑到最底部的最深层节点。
236
+ * 没有内部 overflow 时也必须落在最后一个真实内容节点上;若直接落在
237
+ * flex 滚动容器自身,伪元素会参与剩余高度分配,可能看似有 spacer,
238
+ * 实际 scrollHeight 却没有增长,底部内容仍被浮动 Footer 遮住。
235
239
  */
236
240
  Array.from(target.querySelectorAll("*")).forEach((candidate) => {
237
241
  if (candidate.clientHeight <= 0 || candidate.scrollHeight <= candidate.clientHeight + 1) return;
@@ -518,7 +522,7 @@ const TransformFloatingLayer = (props) => {
518
522
  contentElement.style.setProperty(cssVariableName, "0px");
519
523
  return;
520
524
  }
521
- const rectHeight = regionContent.getBoundingClientRect().height;
525
+ const rectHeight = regionContent.getBoundingClientRect().height / bodyScale.y;
522
526
  const canCommitMeasuredHeight = !headerFooterHiddenRef.current && (allowShrink || lastVisibleHeightRef.current === 0 || rectHeight >= lastVisibleHeightRef.current);
523
527
  if (rectHeight > 0 && canCommitMeasuredHeight) lastVisibleHeightRef.current = rectHeight;
524
528
  contentElement.style.setProperty(cssVariableName, `${Math.max(0, lastVisibleHeightRef.current)}px`);
@@ -547,6 +551,7 @@ const TransformFloatingLayer = (props) => {
547
551
  resizeObserver.disconnect();
548
552
  };
549
553
  }, [
554
+ bodyScale.y,
550
555
  footerElement,
551
556
  headerNode,
552
557
  mergedOpen,
@@ -122,4 +122,26 @@
122
122
  display: flex;
123
123
  flex: 1;
124
124
  flex-direction: column;
125
+
126
+ // Footer spacer 会挂在 SelectionFlow 末尾。这里若继续使用 flex: 1,
127
+ // spacer 只会参与剩余高度分配,外层滚动容器的 scrollHeight 不会增长,
128
+ // 最后一段内容仍会被浮动 Footer 盖住且无法滚出。
129
+ > .selection-flow {
130
+ flex: 0 0 auto;
131
+
132
+ // Kiosk 会通过 body transform 适配设计稿尺寸。在该缩放布局中,flex
133
+ // 伪元素的 basis 可能不会进入祖先的 scrollHeight,仍然无法滚过 Footer。
134
+ // 改用真实 padding 承接动态 Footer 高度,确保占位参与盒模型计算。
135
+ &.pisell-lowcode-floating-layer-auto-hide-scroll-target-content-end {
136
+ box-sizing: border-box;
137
+ padding-bottom: var(
138
+ --pisell-lowcode-floating-layer-footer-scroll-spacer,
139
+ 0px
140
+ );
141
+
142
+ &::after {
143
+ display: none;
144
+ }
145
+ }
146
+ }
125
147
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pisell/private-materials",
3
- "version": "6.12.131",
3
+ "version": "6.12.132",
4
4
  "main": "./lib/index.js",
5
5
  "module": "./es/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -69,10 +69,10 @@
69
69
  "react-zoom-pan-pinch": "^3.7.0",
70
70
  "styled-components": "^6.0.0-rc.3",
71
71
  "use-sync-external-store": "^1.6.0",
72
- "@pisell/utils": "3.0.4",
72
+ "@pisell/materials": "6.12.35",
73
73
  "@pisell/icon": "0.0.11",
74
74
  "@pisell/date-picker": "3.0.10",
75
- "@pisell/materials": "6.12.35"
75
+ "@pisell/utils": "3.0.4"
76
76
  },
77
77
  "peerDependencies": {
78
78
  "react": "^18.0.0",
@@ -1,17 +0,0 @@
1
- import "./serve/formResourcePage.js";
2
- import "./floorRoomCard/mapRowToFloorRoomCardData.js";
3
- import "./floorRoomCard/ReservationFloorRoomCard.js";
4
- import "./floorMap/reservationMock.js";
5
- import "./floorMap/floorPlanApi.js";
6
- import "./reservationConstants.js";
7
- import "./data/bookingToReservationTables.js";
8
- import "./data/formResourceToReservationTables.js";
9
- import "./data/salesEmbeddedResourceToTableRows.js";
10
- import "./floorMap/reservationCards.js";
11
- import "./PisellReservation.js";
12
- import "./PisellReservationBookingPage.js";
13
- import "./PisellVenueControlPage.js";
14
- import "./PisellVenueWallPage.js";
15
- import "./PisellReservationTablePage.js";
16
- import "./components/SelectFloorMapResourceDialog.js";
17
- export {};
@@ -1,48 +0,0 @@
1
- import "./hosts/createInstanceHostBridge.js";
2
- import "./holderConfirm/createHolderConfirmBridge.js";
3
- import "./giftSelect/createGiftSelectBridge.js";
4
- import "./context/SalesSdkHostBridgesContext.js";
5
- import "./utils/appendPromotionTags.js";
6
- import "./context/SalesSdkUIHostsContext.js";
7
- import "./utils/runAddProductFlow.js";
8
- import "./components/showAddToCartToast.js";
9
- import "./utils/resolveAddProductDebounceKey.js";
10
- import "./utils/productSkuOptions.js";
11
- import "./utils/identity.js";
12
- import "./utils/resolveInCartQuantityForAddToast.js";
13
- import "./utils/addProductWithFlowDebounced.js";
14
- import "./utils/bookingDate.js";
15
- import "./utils/removeOrderProducts.js";
16
- import "./selectors.js";
17
- import "./utils/enrich.js";
18
- import "./giftSelect/createOpenGiftSelectHost.js";
19
- import "./utils/formatHolderOptions.js";
20
- import "./utils/enrichCartLineHolderDisplay.js";
21
- import "./context/SalesSdkHolderContext.js";
22
- import "./utils/holderSubmitValidation.js";
23
- import "./utils/ensureHoldersBeforeSubmit.js";
24
- import "./hooks/useSalesSdk.js";
25
- import "./bookingEditService/BookingEditServiceDrawer.js";
26
- import "./hosts/BookingEditHostRenderer.js";
27
- import "./hooks/useSalesSdkCart.js";
28
- import "./hooks/useSalesSdkCustomer.js";
29
- import "./normalProductDetail/NormalProductDetailHostRenderer.js";
30
- import "./hosts/createOpenBookingEditHost.js";
31
- import "./hosts/createOpenMultiDaySelectHost.js";
32
- import "./hosts/createOpenHolderSelectHost.js";
33
- import "./demo/hosts/legacyOpenProductDetail.js";
34
- import "./hosts/createCompositeOpenProductDetailHost.js";
35
- import "./normalProductDetail/createOpenNormalProductDetailHost.js";
36
- import "./normalProductDetail/createOpenBookingSelectionFlowHost.js";
37
- import "./giftSelect/GiftSelectModal.js";
38
- import "./giftSelect/GiftSelectHostRenderer.js";
39
- import "./context/SalesSdkProvider.js";
40
- import "./context/SalesSdkDishContext.js";
41
- import "./context/SalesSdkBookingContext.js";
42
- import "./hooks/useSalesSdkSummary.js";
43
- import "./hooks/useSalesSdkProducts.js";
44
- import "./demo/index.js";
45
- import "./hooks/useSalesSdkDish.js";
46
- import "./hooks/useCurrentSalesSdkDish.js";
47
- import "./hooks/useSyncOsModule.js";
48
- export {};