pb-sxp-ui 1.20.66 → 1.20.68
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.
- package/dist/index.cjs +43 -18
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +43 -18
- package/dist/index.js.map +1 -1
- package/dist/index.min.cjs +9 -9
- package/dist/index.min.cjs.map +1 -1
- package/dist/index.min.js +9 -9
- package/dist/index.min.js.map +1 -1
- package/dist/pb-ui.js +43 -18
- package/dist/pb-ui.js.map +1 -1
- package/dist/pb-ui.min.js +9 -9
- package/dist/pb-ui.min.js.map +1 -1
- package/es/core/components/SxpPageRender/Popup/index.js +27 -13
- package/es/materials/sxp/popup/CommodityDetailDiroNew/index.js +7 -1
- package/lib/core/components/SxpPageRender/Popup/index.js +27 -13
- package/lib/materials/sxp/popup/CommodityDetailDiroNew/index.js +7 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -13107,7 +13107,14 @@ Made in Italy` })));
|
|
|
13107
13107
|
marginTop: '50px',
|
|
13108
13108
|
border: 'none'
|
|
13109
13109
|
} }))),
|
|
13110
|
-
showAddToCart && (React.createElement(Modal$1, { visible: showAddToCart, padding: 0, isFullScreen: false, onClose: () =>
|
|
13110
|
+
showAddToCart && (React.createElement(Modal$1, { visible: showAddToCart, padding: 0, isFullScreen: false, onClose: () => {
|
|
13111
|
+
setShowAddToCart(false);
|
|
13112
|
+
// SKU 场景:关闭加购弹窗时直接回到 feed,不再停留在商品弹窗
|
|
13113
|
+
if (addToCartVariantId && typeof window !== 'undefined' && window.sxpPopup) {
|
|
13114
|
+
window.sxpPopup('');
|
|
13115
|
+
setPopupDetailData === null || setPopupDetailData === void 0 ? void 0 : setPopupDetailData(null);
|
|
13116
|
+
}
|
|
13117
|
+
} },
|
|
13111
13118
|
React.createElement(AddToCartPopup$1, { isActive: true, defaultVariantId: addToCartVariantId })))));
|
|
13112
13119
|
};
|
|
13113
13120
|
var CommodityDetailDiroNewComponent = React.memo(CommodityDetailDiroNew$1);
|
|
@@ -25814,8 +25821,10 @@ const Popup = () => {
|
|
|
25814
25821
|
const { setPopupDetailData, popupDetailData, popupCurTimeRef, checkCommodityIndexRef } = useSxpDataSource();
|
|
25815
25822
|
const { productView } = useEventReport();
|
|
25816
25823
|
const [visible, setVisible] = React.useState();
|
|
25817
|
-
//
|
|
25824
|
+
// 记录上一个非加购弹窗的 popup,用于 SPU 场景:商品弹窗 → 加购弹窗关闭后恢复
|
|
25818
25825
|
const prevCommodityPopupRef = React.useRef(null);
|
|
25826
|
+
// 记录当前弹窗是否是加购弹窗(用于关闭时判断)
|
|
25827
|
+
const isAddToCartPopupRef = React.useRef(false);
|
|
25819
25828
|
React.useEffect(() => {
|
|
25820
25829
|
const initTime = () => {
|
|
25821
25830
|
popupCurTimeRef.current = new Date();
|
|
@@ -25827,17 +25836,24 @@ const Popup = () => {
|
|
|
25827
25836
|
};
|
|
25828
25837
|
}, []);
|
|
25829
25838
|
React.useEffect(() => {
|
|
25830
|
-
var _a, _b, _c, _d;
|
|
25839
|
+
var _a, _b, _c, _d, _e;
|
|
25831
25840
|
if (popup && (popup === null || popup === void 0 ? void 0 : popup.id) && (popup === null || popup === void 0 ? void 0 : popup.id) !== '') {
|
|
25832
25841
|
popupCurTimeRef.current = new Date();
|
|
25833
25842
|
setVisible(popup);
|
|
25834
|
-
// 非加购弹窗时,记录当前 popup,供后续加购弹窗关闭后恢复(SPU 场景)
|
|
25835
25843
|
const currentValue = (_c = (_b = (_a = schema === null || schema === void 0 ? void 0 : schema.sxpPageConf) === null || _a === void 0 ? void 0 : _a.globalConfig) === null || _b === void 0 ? void 0 : _b.popupList) === null || _c === void 0 ? void 0 : _c.find((item) => (item === null || item === void 0 ? void 0 : item.id) === (popup === null || popup === void 0 ? void 0 : popup.id));
|
|
25836
|
-
|
|
25844
|
+
const isAddToCart = ((_d = currentValue === null || currentValue === void 0 ? void 0 : currentValue.item) === null || _d === void 0 ? void 0 : _d.type) === 'AddToCart' || ((_e = currentValue === null || currentValue === void 0 ? void 0 : currentValue.item) === null || _e === void 0 ? void 0 : _e.type) === 'AddToCartPopup';
|
|
25845
|
+
isAddToCartPopupRef.current = isAddToCart;
|
|
25846
|
+
if (!isAddToCart) {
|
|
25847
|
+
// 记录非加购弹窗(商品弹窗等),供加购弹窗关闭后恢复
|
|
25837
25848
|
prevCommodityPopupRef.current = popup;
|
|
25838
25849
|
}
|
|
25839
25850
|
}
|
|
25840
|
-
|
|
25851
|
+
else if ((popup === null || popup === void 0 ? void 0 : popup.id) === '') {
|
|
25852
|
+
// popup 被清空时,同步 visible 状态以便 Modal 正确关闭,避免白屏且关不掉
|
|
25853
|
+
setVisible(Object.assign(Object.assign({}, popup), { id: '' }));
|
|
25854
|
+
isAddToCartPopupRef.current = false;
|
|
25855
|
+
}
|
|
25856
|
+
}, [popup, schema]);
|
|
25841
25857
|
const isFullScreen = React.useMemo(() => {
|
|
25842
25858
|
var _a, _b, _c, _d;
|
|
25843
25859
|
const valueItem = (_c = (_b = (_a = schema === null || schema === void 0 ? void 0 : schema.sxpPageConf) === null || _a === void 0 ? void 0 : _a.globalConfig) === null || _b === void 0 ? void 0 : _b.popupList) === null || _c === void 0 ? void 0 : _c.find((value, index) => {
|
|
@@ -25854,10 +25870,15 @@ const Popup = () => {
|
|
|
25854
25870
|
}, [popup, schema]);
|
|
25855
25871
|
const handleClose = () => {
|
|
25856
25872
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
|
|
25857
|
-
|
|
25858
|
-
|
|
25859
|
-
|
|
25860
|
-
|
|
25873
|
+
// popup 已被清空时(如 CommodityDetailDiroNew SKU 场景直接调用 sxpPopup('')),确保能关闭 Modal,避免白屏关不掉
|
|
25874
|
+
if ((popup === null || popup === void 0 ? void 0 : popup.id) === '') {
|
|
25875
|
+
setVisible({ id: '' });
|
|
25876
|
+
setPopupDetailData === null || setPopupDetailData === void 0 ? void 0 : setPopupDetailData(null);
|
|
25877
|
+
checkCommodityIndexRef.current = -1;
|
|
25878
|
+
prevCommodityPopupRef.current = null;
|
|
25879
|
+
return;
|
|
25880
|
+
}
|
|
25881
|
+
if (!popup || !visible || new Date() - popupCurTimeRef.current < ((_a = popup === null || popup === void 0 ? void 0 : popup.duration) !== null && _a !== void 0 ? _a : 0)) {
|
|
25861
25882
|
return;
|
|
25862
25883
|
}
|
|
25863
25884
|
setVisible(Object.assign(Object.assign({}, popup), { id: '' }));
|
|
@@ -25878,24 +25899,28 @@ const Popup = () => {
|
|
|
25878
25899
|
}
|
|
25879
25900
|
}
|
|
25880
25901
|
// 加购弹窗关闭时,判断是否需要恢复商品弹窗
|
|
25881
|
-
if (((_u = value === null || value === void 0 ? void 0 : value.item) === null || _u === void 0 ? void 0 : _u.type) === 'AddToCart') {
|
|
25882
|
-
const
|
|
25883
|
-
|
|
25884
|
-
|
|
25885
|
-
|
|
25886
|
-
|
|
25902
|
+
if (((_u = value === null || value === void 0 ? void 0 : value.item) === null || _u === void 0 ? void 0 : _u.type) === 'AddToCart' || ((_v = value === null || value === void 0 ? void 0 : value.item) === null || _v === void 0 ? void 0 : _v.type) === 'AddToCartPopup') {
|
|
25903
|
+
const prevPopup = prevCommodityPopupRef.current;
|
|
25904
|
+
prevCommodityPopupRef.current = null;
|
|
25905
|
+
isAddToCartPopupRef.current = false;
|
|
25906
|
+
// SKU 场景:加购弹窗带有 _defaultVariantId 表示从 SKU CTA 直接进入(CommodityDetail 注入),关闭后不应恢复商品弹窗
|
|
25907
|
+
const popupData = popupDetailData;
|
|
25908
|
+
const isSkuFlow = !!(popupData === null || popupData === void 0 ? void 0 : popupData._defaultVariantId);
|
|
25909
|
+
if ((prevPopup === null || prevPopup === void 0 ? void 0 : prevPopup.id) && !isSkuFlow) {
|
|
25910
|
+
// SPU 场景:加购弹窗之前有商品弹窗,关闭后恢复商品弹窗
|
|
25911
|
+
const { id: commodityId } = prevPopup, commodityAni = __rest(prevPopup, ["id"]);
|
|
25887
25912
|
setTimeout(() => {
|
|
25888
25913
|
window === null || window === void 0 ? void 0 : window.sxpPopup(commodityId, commodityAni);
|
|
25889
25914
|
}, popup === null || popup === void 0 ? void 0 : popup.duration);
|
|
25890
25915
|
return;
|
|
25891
25916
|
}
|
|
25892
|
-
// SKU
|
|
25893
|
-
prevCommodityPopupRef.current = null;
|
|
25917
|
+
// SKU 场景:直接回到 feed,不恢复商品弹窗
|
|
25894
25918
|
}
|
|
25895
25919
|
setTimeout(() => {
|
|
25896
25920
|
window === null || window === void 0 ? void 0 : window.sxpPopup('');
|
|
25897
25921
|
setPopupDetailData === null || setPopupDetailData === void 0 ? void 0 : setPopupDetailData(null);
|
|
25898
25922
|
checkCommodityIndexRef.current = -1;
|
|
25923
|
+
prevCommodityPopupRef.current = null;
|
|
25899
25924
|
}, popup === null || popup === void 0 ? void 0 : popup.duration);
|
|
25900
25925
|
};
|
|
25901
25926
|
const renderPopupDetail = React.useMemo(() => {
|