@pisell/private-materials 6.11.652 → 6.11.654

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.
@@ -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, shouldShowPosCustomTimeCandidateCards } from "./posCustomTime.js";
13
+ import { getAvailabilityCandidateDurationMinutes, getPosFlexibleDurationPresetCandidates, getSessionPresetCandidates, isFlexibleDurationValue, isSameAvailabilityCandidateRange, resolvePosCustomTimeBaseMinutes, resolvePosCustomTimeCandidate, resolvePosCustomTimeDefaultDurationMinutes, resolvePosCustomTimeDefaultStartTime, resolvePosFlexibleDurationInitialCandidate, 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";
@@ -217,7 +217,7 @@ const refreshAvailabilityTimes = function() {
217
217
  yield refreshAvailabilityTimes(context, module, {
218
218
  durationOverride: nextDuration,
219
219
  startTimeOverride: nextStartTime,
220
- selectionIntent: "custom"
220
+ selectionIntent: "fallback"
221
221
  });
222
222
  return;
223
223
  }
@@ -264,25 +264,35 @@ 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 && requestedPosStartTime && requestedPosDuration ? {
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
278
279
  });
279
280
  const normallySelectableCandidates = times.filter((candidate) => isAvailabilityCandidateSelectable(candidate));
280
281
  const selectableCandidates = normallySelectableCandidates.length > 0 || !allowUnavailable ? normallySelectableCandidates : times;
281
- const initialCandidate = restoredCandidate || (posCustomTimeAvailability && Boolean(requestedPosStartTime && requestedPosDuration) ? void 0 : selectableCandidates[0]);
282
+ const shouldPreserveRequestedPosStart = posCustomTimeAvailability && Boolean(requestedPosStartTime && requestedPosDuration);
283
+ const displayCandidates = posSessionAvailability ? getSessionPresetCandidates(times) : posDurationAvailability && isFlexibleDurationValue(product === null || product === void 0 ? void 0 : product.duration) ? getPosFlexibleDurationPresetCandidates(times, requestedCustomRange, customSelectionIntent) : times;
284
+ const fallbackCandidate = shouldPreserveRequestedPosStart ? void 0 : selectableCandidates[0];
285
+ const preferPosFlexiblePreset = posDurationAvailability && isFlexibleDurationValue(product === null || product === void 0 ? void 0 : product.duration) && !customSelectionIntent && context.services.selectionFlowMode !== "edit" && (selectionIntent === "fallback" || !existingCandidate || existingCandidate.date !== selectedDate);
286
+ const initialCandidate = posDurationAvailability && isFlexibleDurationValue(product === null || product === void 0 ? void 0 : product.duration) ? resolvePosFlexibleDurationInitialCandidate({
287
+ presetCandidates: displayCandidates,
288
+ restoredCandidate,
289
+ fallbackCandidate,
290
+ preferPreset: preferPosFlexiblePreset
291
+ }) : restoredCandidate || fallbackCandidate;
282
292
  context.setModuleData(module.key, {
283
293
  requestId,
284
294
  slotStepMinutes: group === null || group === void 0 ? void 0 : group.slotStepMinutes,
285
- timeSlots: (posSessionAvailability ? getSessionPresetCandidates(times) : times).map((candidate) => ({
295
+ timeSlots: displayCandidates.map((candidate) => ({
286
296
  id: candidate.key,
287
297
  start_time: candidate.startTime,
288
298
  end_time: candidate.endTime,
@@ -55,5 +55,15 @@ const resolvePosCustomTimeCandidate = (params) => {
55
55
  return params.restoredDraftCandidate || params.restoredExistingCandidate || params.fallbackCandidate;
56
56
  };
57
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
+ };
63
+ const resolvePosFlexibleDurationInitialCandidate = (params) => {
64
+ const firstAvailablePreset = params.presetCandidates.find((candidate) => (!candidate.status || candidate.status === "available" || candidate.status === "limited") && !(typeof candidate.maxPartySize === "number" && candidate.maxPartySize <= 0));
65
+ if (params.preferPreset && firstAvailablePreset) return firstAvailablePreset;
66
+ return params.restoredCandidate || params.fallbackCandidate;
67
+ };
58
68
  //#endregion
59
- export { getAvailabilityCandidateDurationMinutes, getSessionPresetCandidates, isFlexibleDurationValue, isSameAvailabilityCandidateRange, resolvePosCustomTimeBaseMinutes, resolvePosCustomTimeCandidate, resolvePosCustomTimeDefaultDurationMinutes, resolvePosCustomTimeDefaultStartTime, shouldShowPosCustomTimeCandidateCards };
69
+ export { getAvailabilityCandidateDurationMinutes, getPosFlexibleDurationPresetCandidates, getSessionPresetCandidates, isFlexibleDurationValue, isSameAvailabilityCandidateRange, resolvePosCustomTimeBaseMinutes, resolvePosCustomTimeCandidate, resolvePosCustomTimeDefaultDurationMinutes, resolvePosCustomTimeDefaultStartTime, resolvePosFlexibleDurationInitialCandidate, shouldShowPosCustomTimeCandidateCards };
@@ -221,7 +221,7 @@ const refreshAvailabilityTimes = function() {
221
221
  yield refreshAvailabilityTimes(context, module, {
222
222
  durationOverride: nextDuration,
223
223
  startTimeOverride: nextStartTime,
224
- selectionIntent: "custom"
224
+ selectionIntent: "fallback"
225
225
  });
226
226
  return;
227
227
  }
@@ -268,25 +268,35 @@ 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 && requestedPosStartTime && requestedPosDuration ? {
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
282
283
  });
283
284
  const normallySelectableCandidates = times.filter((candidate) => isAvailabilityCandidateSelectable(candidate));
284
285
  const selectableCandidates = normallySelectableCandidates.length > 0 || !allowUnavailable ? normallySelectableCandidates : times;
285
- const initialCandidate = restoredCandidate || (posCustomTimeAvailability && Boolean(requestedPosStartTime && requestedPosDuration) ? void 0 : selectableCandidates[0]);
286
+ const shouldPreserveRequestedPosStart = posCustomTimeAvailability && Boolean(requestedPosStartTime && requestedPosDuration);
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;
288
+ const fallbackCandidate = shouldPreserveRequestedPosStart ? void 0 : selectableCandidates[0];
289
+ const preferPosFlexiblePreset = posDurationAvailability && require_posCustomTime.isFlexibleDurationValue(product === null || product === void 0 ? void 0 : product.duration) && !customSelectionIntent && context.services.selectionFlowMode !== "edit" && (selectionIntent === "fallback" || !existingCandidate || existingCandidate.date !== selectedDate);
290
+ const initialCandidate = posDurationAvailability && require_posCustomTime.isFlexibleDurationValue(product === null || product === void 0 ? void 0 : product.duration) ? require_posCustomTime.resolvePosFlexibleDurationInitialCandidate({
291
+ presetCandidates: displayCandidates,
292
+ restoredCandidate,
293
+ fallbackCandidate,
294
+ preferPreset: preferPosFlexiblePreset
295
+ }) : restoredCandidate || fallbackCandidate;
286
296
  context.setModuleData(module.key, {
287
297
  requestId,
288
298
  slotStepMinutes: group === null || group === void 0 ? void 0 : group.slotStepMinutes,
289
- timeSlots: (posSessionAvailability ? require_posCustomTime.getSessionPresetCandidates(times) : times).map((candidate) => ({
299
+ timeSlots: displayCandidates.map((candidate) => ({
290
300
  id: candidate.key,
291
301
  start_time: candidate.startTime,
292
302
  end_time: candidate.endTime,
@@ -57,8 +57,19 @@ const resolvePosCustomTimeCandidate = (params) => {
57
57
  return params.restoredDraftCandidate || params.restoredExistingCandidate || params.fallbackCandidate;
58
58
  };
59
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
+ };
65
+ const resolvePosFlexibleDurationInitialCandidate = (params) => {
66
+ const firstAvailablePreset = params.presetCandidates.find((candidate) => (!candidate.status || candidate.status === "available" || candidate.status === "limited") && !(typeof candidate.maxPartySize === "number" && candidate.maxPartySize <= 0));
67
+ if (params.preferPreset && firstAvailablePreset) return firstAvailablePreset;
68
+ return params.restoredCandidate || params.fallbackCandidate;
69
+ };
60
70
  //#endregion
61
71
  exports.getAvailabilityCandidateDurationMinutes = getAvailabilityCandidateDurationMinutes;
72
+ exports.getPosFlexibleDurationPresetCandidates = getPosFlexibleDurationPresetCandidates;
62
73
  exports.getSessionPresetCandidates = getSessionPresetCandidates;
63
74
  exports.isFlexibleDurationValue = isFlexibleDurationValue;
64
75
  exports.isSameAvailabilityCandidateRange = isSameAvailabilityCandidateRange;
@@ -66,4 +77,5 @@ exports.resolvePosCustomTimeBaseMinutes = resolvePosCustomTimeBaseMinutes;
66
77
  exports.resolvePosCustomTimeCandidate = resolvePosCustomTimeCandidate;
67
78
  exports.resolvePosCustomTimeDefaultDurationMinutes = resolvePosCustomTimeDefaultDurationMinutes;
68
79
  exports.resolvePosCustomTimeDefaultStartTime = resolvePosCustomTimeDefaultStartTime;
80
+ exports.resolvePosFlexibleDurationInitialCandidate = resolvePosFlexibleDurationInitialCandidate;
69
81
  exports.shouldShowPosCustomTimeCandidateCards = shouldShowPosCustomTimeCandidateCards;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pisell/private-materials",
3
- "version": "6.11.652",
3
+ "version": "6.11.654",
4
4
  "main": "./lib/index.js",
5
5
  "module": "./es/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -70,10 +70,10 @@
70
70
  "styled-components": "^6.0.0-rc.3",
71
71
  "use-sync-external-store": "^1.6.0",
72
72
  "@pisell/pi-payment-sdk": "0.0.3",
73
- "@pisell/utils": "3.0.4",
74
73
  "@pisell/materials": "6.11.256",
75
74
  "@pisell/icon": "0.0.11",
76
- "@pisell/date-picker": "3.0.10"
75
+ "@pisell/date-picker": "3.0.10",
76
+ "@pisell/utils": "3.0.4"
77
77
  },
78
78
  "peerDependencies": {
79
79
  "react": "^18.0.0",