@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.
@@ -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 && 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
@@ -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: (posSessionAvailability ? getSessionPresetCandidates(times) : times).map((candidate) => ({
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
- }, usePosSessionAvailability ? renderAvailabilityTimeSelector() : null, /* @__PURE__ */ React.createElement("div", { style: { fontWeight: 500 } }, selectionFlowText("pisell2.text.start_time")), /* @__PURE__ */ React.createElement(SelectTime, {
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 && 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
@@ -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: (posSessionAvailability ? require_posCustomTime.getSessionPresetCandidates(times) : times).map((candidate) => ({
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
- }, usePosSessionAvailability ? renderAvailabilityTimeSelector() : null, /* @__PURE__ */ react.default.createElement("div", { style: { fontWeight: 500 } }, require_i18n.selectionFlowText("pisell2.text.start_time")), /* @__PURE__ */ react.default.createElement(_pisell_materials.SelectTime, {
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.651",
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/pi-payment-sdk": "0.0.3",
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/materials": "6.11.256"
76
+ "@pisell/pi-payment-sdk": "0.0.3"
77
77
  },
78
78
  "peerDependencies": {
79
79
  "react": "^18.0.0",