@pisell/private-materials 6.11.651 → 6.11.653
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/build/lowcode/assets-daily.json +11 -11
- package/build/lowcode/assets-dev.json +2 -2
- package/build/lowcode/assets-prod.json +11 -11
- package/build/lowcode/meta.js +1 -1
- package/build/lowcode/render/default/view.js +18 -18
- package/build/lowcode/view.js +18 -18
- package/es/pro/skuDetailModal/flow/modules/time/index.js +16 -9
- package/es/pro/skuDetailModal/flow/modules/time/posCustomTime.js +7 -1
- package/lib/pro/skuDetailModal/flow/modules/time/index.js +15 -8
- package/lib/pro/skuDetailModal/flow/modules/time/posCustomTime.js +8 -0
- package/package.json +4 -4
|
@@ -10,7 +10,7 @@ import { buildDraftCacheItem, getModuleOptions, getUnsupportedBookingFlowReason,
|
|
|
10
10
|
import TimeResourceSelector from "../../../../../components/eventBooking/components/timeResourceSelector/index.js";
|
|
11
11
|
import { resolveAvailabilityStatus } from "../../../../../components/eventBooking/components/bookingAvailabilityCalendar/utils.js";
|
|
12
12
|
import { validateAvailabilityTimeAutoResolution } from "../autoResolution.js";
|
|
13
|
-
import { getAvailabilityCandidateDurationMinutes, getSessionPresetCandidates, isFlexibleDurationValue, isSameAvailabilityCandidateRange, resolvePosCustomTimeBaseMinutes, resolvePosCustomTimeCandidate, resolvePosCustomTimeDefaultDurationMinutes, resolvePosCustomTimeDefaultStartTime } from "./posCustomTime.js";
|
|
13
|
+
import { getAvailabilityCandidateDurationMinutes, getPosFlexibleDurationPresetCandidates, getSessionPresetCandidates, isFlexibleDurationValue, isSameAvailabilityCandidateRange, resolvePosCustomTimeBaseMinutes, resolvePosCustomTimeCandidate, resolvePosCustomTimeDefaultDurationMinutes, resolvePosCustomTimeDefaultStartTime, shouldShowPosCustomTimeCandidateCards } from "./posCustomTime.js";
|
|
14
14
|
import dayjs from "dayjs";
|
|
15
15
|
import React, { useEffect, useMemo } from "react";
|
|
16
16
|
import { Alert, Space } from "antd";
|
|
@@ -264,14 +264,15 @@ const refreshAvailabilityTimes = function() {
|
|
|
264
264
|
durationMinutes: requestedPosDuration
|
|
265
265
|
}) : isSameCandidateStart(candidate, selectedDate, requestedPosStartTime)) : void 0;
|
|
266
266
|
const customSelectionIntent = posCustomTimeAvailability && selectionIntent === "custom";
|
|
267
|
+
const requestedCustomRange = requestedPosStartTime && requestedPosDuration ? {
|
|
268
|
+
date: selectedDate,
|
|
269
|
+
startTime: requestedPosStartTime,
|
|
270
|
+
durationMinutes: requestedPosDuration
|
|
271
|
+
} : void 0;
|
|
267
272
|
const restoredCandidate = resolvePosCustomTimeCandidate({
|
|
268
273
|
candidates: times.filter((candidate) => isAvailabilityCandidateSelectable(candidate, allowUnavailable)),
|
|
269
274
|
customSelectionIntent,
|
|
270
|
-
requestedCustomRange: customSelectionIntent
|
|
271
|
-
date: selectedDate,
|
|
272
|
-
startTime: requestedPosStartTime,
|
|
273
|
-
durationMinutes: requestedPosDuration
|
|
274
|
-
} : void 0,
|
|
275
|
+
requestedCustomRange: customSelectionIntent ? requestedCustomRange : void 0,
|
|
275
276
|
restoredDraftCandidate,
|
|
276
277
|
restoredExistingCandidate,
|
|
277
278
|
fallbackCandidate: fallbackOsCandidate
|
|
@@ -279,10 +280,11 @@ const refreshAvailabilityTimes = function() {
|
|
|
279
280
|
const normallySelectableCandidates = times.filter((candidate) => isAvailabilityCandidateSelectable(candidate));
|
|
280
281
|
const selectableCandidates = normallySelectableCandidates.length > 0 || !allowUnavailable ? normallySelectableCandidates : times;
|
|
281
282
|
const initialCandidate = restoredCandidate || (posCustomTimeAvailability && Boolean(requestedPosStartTime && requestedPosDuration) ? void 0 : selectableCandidates[0]);
|
|
283
|
+
const displayCandidates = posSessionAvailability ? getSessionPresetCandidates(times) : posDurationAvailability && isFlexibleDurationValue(product === null || product === void 0 ? void 0 : product.duration) ? getPosFlexibleDurationPresetCandidates(times, requestedCustomRange, customSelectionIntent) : times;
|
|
282
284
|
context.setModuleData(module.key, {
|
|
283
285
|
requestId,
|
|
284
286
|
slotStepMinutes: group === null || group === void 0 ? void 0 : group.slotStepMinutes,
|
|
285
|
-
timeSlots:
|
|
287
|
+
timeSlots: displayCandidates.map((candidate) => ({
|
|
286
288
|
id: candidate.key,
|
|
287
289
|
start_time: candidate.startTime,
|
|
288
290
|
end_time: candidate.endTime,
|
|
@@ -642,7 +644,7 @@ const TimeFlowModuleComponent = ({ context, module, registerHandle }) => {
|
|
|
642
644
|
if (isDateModuleLoading) return null;
|
|
643
645
|
if (!hasNoSelectableAvailabilityDate && (moduleStatus === "loading" || !(availabilityData === null || availabilityData === void 0 ? void 0 : availabilityData.timeSlots))) return /* @__PURE__ */ React.createElement(SkuDetailLoadingPanel, null);
|
|
644
646
|
if (usePosCustomTimeAvailability) {
|
|
645
|
-
var _availabilityData$slo, _durationProps$select, _options$durationSele;
|
|
647
|
+
var _availabilityData$slo, _availabilityData$tim, _durationProps$select, _options$durationSele;
|
|
646
648
|
if (usePosSessionAvailability && !posCustomTimeBaseMinutes) return /* @__PURE__ */ React.createElement(Alert, {
|
|
647
649
|
type: "error",
|
|
648
650
|
showIcon: true,
|
|
@@ -651,10 +653,15 @@ const TimeFlowModuleComponent = ({ context, module, registerHandle }) => {
|
|
|
651
653
|
const selectedCandidate = availabilityData === null || availabilityData === void 0 ? void 0 : availabilityData.selectedCandidate;
|
|
652
654
|
const posStartTimeSlice = usePosSessionAvailability ? availabilityData === null || availabilityData === void 0 ? void 0 : availabilityData.slotStepMinutes : (_availabilityData$slo = availabilityData === null || availabilityData === void 0 ? void 0 : availabilityData.slotStepMinutes) !== null && _availabilityData$slo !== void 0 ? _availabilityData$slo : slice;
|
|
653
655
|
selectedCandidate && context.services.allowUnavailableBookingSelection === true && isAvailabilityCandidateSelectable(selectedCandidate);
|
|
656
|
+
const showCandidateCards = shouldShowPosCustomTimeCandidateCards({
|
|
657
|
+
isSessionAvailability: usePosSessionAvailability,
|
|
658
|
+
isDurationAvailability: usePosDurationAvailability,
|
|
659
|
+
candidateCount: (availabilityData === null || availabilityData === void 0 || (_availabilityData$tim = availabilityData.timeSlots) === null || _availabilityData$tim === void 0 ? void 0 : _availabilityData$tim.length) || 0
|
|
660
|
+
});
|
|
654
661
|
return /* @__PURE__ */ React.createElement(Space, {
|
|
655
662
|
direction: "vertical",
|
|
656
663
|
style: { width: "100%" }
|
|
657
|
-
},
|
|
664
|
+
}, showCandidateCards ? renderAvailabilityTimeSelector() : null, /* @__PURE__ */ React.createElement("div", { style: { fontWeight: 500 } }, selectionFlowText("pisell2.text.start_time")), /* @__PURE__ */ React.createElement(SelectTime, {
|
|
658
665
|
value: startTime || "",
|
|
659
666
|
slice: posStartTimeSlice,
|
|
660
667
|
theme: options.theme,
|
|
@@ -37,6 +37,7 @@ const resolvePosCustomTimeDefaultDurationMinutes = (currentValue, baseDurationMi
|
|
|
37
37
|
if (Number.isFinite(currentMinutes) && currentMinutes > 0) return Math.max(1, Math.floor(currentMinutes));
|
|
38
38
|
return resolvePosCustomTimeBaseMinutes(baseDurationMinutes);
|
|
39
39
|
};
|
|
40
|
+
const shouldShowPosCustomTimeCandidateCards = (params) => params.isSessionAvailability || params.isDurationAvailability && params.candidateCount > 0;
|
|
40
41
|
const getAvailabilityCandidateDurationMinutes = (candidate) => {
|
|
41
42
|
const startAt = dayjs(candidate.startAt);
|
|
42
43
|
const endAt = dayjs(candidate.endAt);
|
|
@@ -54,5 +55,10 @@ const resolvePosCustomTimeCandidate = (params) => {
|
|
|
54
55
|
return params.restoredDraftCandidate || params.restoredExistingCandidate || params.fallbackCandidate;
|
|
55
56
|
};
|
|
56
57
|
const getSessionPresetCandidates = (candidates) => candidates.filter((candidate) => candidate.source === "session_schedule");
|
|
58
|
+
const getPosFlexibleDurationPresetCandidates = (candidates, requestedCustomRange, customSelectionIntent = false) => {
|
|
59
|
+
if (!requestedCustomRange) return [...candidates];
|
|
60
|
+
const presets = candidates.filter((candidate) => !isSameAvailabilityCandidateRange(candidate, requestedCustomRange));
|
|
61
|
+
return presets.length > 0 || customSelectionIntent ? presets : [...candidates];
|
|
62
|
+
};
|
|
57
63
|
//#endregion
|
|
58
|
-
export { getAvailabilityCandidateDurationMinutes, getSessionPresetCandidates, isFlexibleDurationValue, isSameAvailabilityCandidateRange, resolvePosCustomTimeBaseMinutes, resolvePosCustomTimeCandidate, resolvePosCustomTimeDefaultDurationMinutes, resolvePosCustomTimeDefaultStartTime };
|
|
64
|
+
export { getAvailabilityCandidateDurationMinutes, getPosFlexibleDurationPresetCandidates, getSessionPresetCandidates, isFlexibleDurationValue, isSameAvailabilityCandidateRange, resolvePosCustomTimeBaseMinutes, resolvePosCustomTimeCandidate, resolvePosCustomTimeDefaultDurationMinutes, resolvePosCustomTimeDefaultStartTime, shouldShowPosCustomTimeCandidateCards };
|
|
@@ -268,14 +268,15 @@ const refreshAvailabilityTimes = function() {
|
|
|
268
268
|
durationMinutes: requestedPosDuration
|
|
269
269
|
}) : isSameCandidateStart(candidate, selectedDate, requestedPosStartTime)) : void 0;
|
|
270
270
|
const customSelectionIntent = posCustomTimeAvailability && selectionIntent === "custom";
|
|
271
|
+
const requestedCustomRange = requestedPosStartTime && requestedPosDuration ? {
|
|
272
|
+
date: selectedDate,
|
|
273
|
+
startTime: requestedPosStartTime,
|
|
274
|
+
durationMinutes: requestedPosDuration
|
|
275
|
+
} : void 0;
|
|
271
276
|
const restoredCandidate = require_posCustomTime.resolvePosCustomTimeCandidate({
|
|
272
277
|
candidates: times.filter((candidate) => isAvailabilityCandidateSelectable(candidate, allowUnavailable)),
|
|
273
278
|
customSelectionIntent,
|
|
274
|
-
requestedCustomRange: customSelectionIntent
|
|
275
|
-
date: selectedDate,
|
|
276
|
-
startTime: requestedPosStartTime,
|
|
277
|
-
durationMinutes: requestedPosDuration
|
|
278
|
-
} : void 0,
|
|
279
|
+
requestedCustomRange: customSelectionIntent ? requestedCustomRange : void 0,
|
|
279
280
|
restoredDraftCandidate,
|
|
280
281
|
restoredExistingCandidate,
|
|
281
282
|
fallbackCandidate: fallbackOsCandidate
|
|
@@ -283,10 +284,11 @@ const refreshAvailabilityTimes = function() {
|
|
|
283
284
|
const normallySelectableCandidates = times.filter((candidate) => isAvailabilityCandidateSelectable(candidate));
|
|
284
285
|
const selectableCandidates = normallySelectableCandidates.length > 0 || !allowUnavailable ? normallySelectableCandidates : times;
|
|
285
286
|
const initialCandidate = restoredCandidate || (posCustomTimeAvailability && Boolean(requestedPosStartTime && requestedPosDuration) ? void 0 : selectableCandidates[0]);
|
|
287
|
+
const displayCandidates = posSessionAvailability ? require_posCustomTime.getSessionPresetCandidates(times) : posDurationAvailability && require_posCustomTime.isFlexibleDurationValue(product === null || product === void 0 ? void 0 : product.duration) ? require_posCustomTime.getPosFlexibleDurationPresetCandidates(times, requestedCustomRange, customSelectionIntent) : times;
|
|
286
288
|
context.setModuleData(module.key, {
|
|
287
289
|
requestId,
|
|
288
290
|
slotStepMinutes: group === null || group === void 0 ? void 0 : group.slotStepMinutes,
|
|
289
|
-
timeSlots:
|
|
291
|
+
timeSlots: displayCandidates.map((candidate) => ({
|
|
290
292
|
id: candidate.key,
|
|
291
293
|
start_time: candidate.startTime,
|
|
292
294
|
end_time: candidate.endTime,
|
|
@@ -646,7 +648,7 @@ const TimeFlowModuleComponent = ({ context, module, registerHandle }) => {
|
|
|
646
648
|
if (isDateModuleLoading) return null;
|
|
647
649
|
if (!hasNoSelectableAvailabilityDate && (moduleStatus === "loading" || !(availabilityData === null || availabilityData === void 0 ? void 0 : availabilityData.timeSlots))) return /* @__PURE__ */ react.default.createElement(require_LoadingPanel.default, null);
|
|
648
650
|
if (usePosCustomTimeAvailability) {
|
|
649
|
-
var _availabilityData$slo, _durationProps$select, _options$durationSele;
|
|
651
|
+
var _availabilityData$slo, _availabilityData$tim, _durationProps$select, _options$durationSele;
|
|
650
652
|
if (usePosSessionAvailability && !posCustomTimeBaseMinutes) return /* @__PURE__ */ react.default.createElement(antd.Alert, {
|
|
651
653
|
type: "error",
|
|
652
654
|
showIcon: true,
|
|
@@ -655,10 +657,15 @@ const TimeFlowModuleComponent = ({ context, module, registerHandle }) => {
|
|
|
655
657
|
const selectedCandidate = availabilityData === null || availabilityData === void 0 ? void 0 : availabilityData.selectedCandidate;
|
|
656
658
|
const posStartTimeSlice = usePosSessionAvailability ? availabilityData === null || availabilityData === void 0 ? void 0 : availabilityData.slotStepMinutes : (_availabilityData$slo = availabilityData === null || availabilityData === void 0 ? void 0 : availabilityData.slotStepMinutes) !== null && _availabilityData$slo !== void 0 ? _availabilityData$slo : slice;
|
|
657
659
|
selectedCandidate && context.services.allowUnavailableBookingSelection === true && isAvailabilityCandidateSelectable(selectedCandidate);
|
|
660
|
+
const showCandidateCards = require_posCustomTime.shouldShowPosCustomTimeCandidateCards({
|
|
661
|
+
isSessionAvailability: usePosSessionAvailability,
|
|
662
|
+
isDurationAvailability: usePosDurationAvailability,
|
|
663
|
+
candidateCount: (availabilityData === null || availabilityData === void 0 || (_availabilityData$tim = availabilityData.timeSlots) === null || _availabilityData$tim === void 0 ? void 0 : _availabilityData$tim.length) || 0
|
|
664
|
+
});
|
|
658
665
|
return /* @__PURE__ */ react.default.createElement(antd.Space, {
|
|
659
666
|
direction: "vertical",
|
|
660
667
|
style: { width: "100%" }
|
|
661
|
-
},
|
|
668
|
+
}, showCandidateCards ? renderAvailabilityTimeSelector() : null, /* @__PURE__ */ react.default.createElement("div", { style: { fontWeight: 500 } }, require_i18n.selectionFlowText("pisell2.text.start_time")), /* @__PURE__ */ react.default.createElement(_pisell_materials.SelectTime, {
|
|
662
669
|
value: startTime || "",
|
|
663
670
|
slice: posStartTimeSlice,
|
|
664
671
|
theme: options.theme,
|
|
@@ -39,6 +39,7 @@ const resolvePosCustomTimeDefaultDurationMinutes = (currentValue, baseDurationMi
|
|
|
39
39
|
if (Number.isFinite(currentMinutes) && currentMinutes > 0) return Math.max(1, Math.floor(currentMinutes));
|
|
40
40
|
return resolvePosCustomTimeBaseMinutes(baseDurationMinutes);
|
|
41
41
|
};
|
|
42
|
+
const shouldShowPosCustomTimeCandidateCards = (params) => params.isSessionAvailability || params.isDurationAvailability && params.candidateCount > 0;
|
|
42
43
|
const getAvailabilityCandidateDurationMinutes = (candidate) => {
|
|
43
44
|
const startAt = (0, dayjs.default)(candidate.startAt);
|
|
44
45
|
const endAt = (0, dayjs.default)(candidate.endAt);
|
|
@@ -56,8 +57,14 @@ const resolvePosCustomTimeCandidate = (params) => {
|
|
|
56
57
|
return params.restoredDraftCandidate || params.restoredExistingCandidate || params.fallbackCandidate;
|
|
57
58
|
};
|
|
58
59
|
const getSessionPresetCandidates = (candidates) => candidates.filter((candidate) => candidate.source === "session_schedule");
|
|
60
|
+
const getPosFlexibleDurationPresetCandidates = (candidates, requestedCustomRange, customSelectionIntent = false) => {
|
|
61
|
+
if (!requestedCustomRange) return [...candidates];
|
|
62
|
+
const presets = candidates.filter((candidate) => !isSameAvailabilityCandidateRange(candidate, requestedCustomRange));
|
|
63
|
+
return presets.length > 0 || customSelectionIntent ? presets : [...candidates];
|
|
64
|
+
};
|
|
59
65
|
//#endregion
|
|
60
66
|
exports.getAvailabilityCandidateDurationMinutes = getAvailabilityCandidateDurationMinutes;
|
|
67
|
+
exports.getPosFlexibleDurationPresetCandidates = getPosFlexibleDurationPresetCandidates;
|
|
61
68
|
exports.getSessionPresetCandidates = getSessionPresetCandidates;
|
|
62
69
|
exports.isFlexibleDurationValue = isFlexibleDurationValue;
|
|
63
70
|
exports.isSameAvailabilityCandidateRange = isSameAvailabilityCandidateRange;
|
|
@@ -65,3 +72,4 @@ exports.resolvePosCustomTimeBaseMinutes = resolvePosCustomTimeBaseMinutes;
|
|
|
65
72
|
exports.resolvePosCustomTimeCandidate = resolvePosCustomTimeCandidate;
|
|
66
73
|
exports.resolvePosCustomTimeDefaultDurationMinutes = resolvePosCustomTimeDefaultDurationMinutes;
|
|
67
74
|
exports.resolvePosCustomTimeDefaultStartTime = resolvePosCustomTimeDefaultStartTime;
|
|
75
|
+
exports.shouldShowPosCustomTimeCandidateCards = shouldShowPosCustomTimeCandidateCards;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pisell/private-materials",
|
|
3
|
-
"version": "6.11.
|
|
3
|
+
"version": "6.11.653",
|
|
4
4
|
"main": "./lib/index.js",
|
|
5
5
|
"module": "./es/index.js",
|
|
6
6
|
"types": "./lib/index.d.ts",
|
|
@@ -69,11 +69,11 @@
|
|
|
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/
|
|
73
|
-
"@pisell/utils": "3.0.4",
|
|
72
|
+
"@pisell/materials": "6.11.256",
|
|
74
73
|
"@pisell/icon": "0.0.11",
|
|
74
|
+
"@pisell/utils": "3.0.4",
|
|
75
75
|
"@pisell/date-picker": "3.0.10",
|
|
76
|
-
"@pisell/
|
|
76
|
+
"@pisell/pi-payment-sdk": "0.0.3"
|
|
77
77
|
},
|
|
78
78
|
"peerDependencies": {
|
|
79
79
|
"react": "^18.0.0",
|