@happychef/reservation-sidebar 2.1.0 → 2.1.2
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.js +48 -101
- package/dist/index.mjs +48 -101
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -5181,10 +5181,14 @@ var ReservationStepOne = ({
|
|
|
5181
5181
|
const [guests2, setGuests] = React9.useState(formData.guests || 2);
|
|
5182
5182
|
const [startDate, setStartDate] = React9.useState(null);
|
|
5183
5183
|
const [reservations, setReservations] = React9.useState([]);
|
|
5184
|
-
const api = useApi_default();
|
|
5185
5184
|
const [availableTables, setAvailableTables] = React9.useState([]);
|
|
5186
5185
|
const [isFetchingTables, setIsFetchingTables] = React9.useState(false);
|
|
5186
|
+
const api = useApi_default();
|
|
5187
5187
|
const initializationDone = React9.useRef(false);
|
|
5188
|
+
const prevSelectedTables = React9.useRef({
|
|
5189
|
+
numbers: formData.selectedTableNumbers || [],
|
|
5190
|
+
ids: formData.selectedTableIds || []
|
|
5191
|
+
});
|
|
5188
5192
|
const resetFormDataFields = React9.useCallback(
|
|
5189
5193
|
(fieldsToReset) => {
|
|
5190
5194
|
setFormData((prevFormData) => {
|
|
@@ -5196,6 +5200,7 @@ var ReservationStepOne = ({
|
|
|
5196
5200
|
newFormData.selectedTableNumbers = [];
|
|
5197
5201
|
newFormData.selectedTableIds = [];
|
|
5198
5202
|
setAvailableTables([]);
|
|
5203
|
+
prevSelectedTables.current = { numbers: [], ids: [] };
|
|
5199
5204
|
}
|
|
5200
5205
|
return newFormData;
|
|
5201
5206
|
});
|
|
@@ -5212,9 +5217,9 @@ var ReservationStepOne = ({
|
|
|
5212
5217
|
}, []);
|
|
5213
5218
|
React9.useEffect(() => {
|
|
5214
5219
|
const fetchReservations = async () => {
|
|
5215
|
-
if (startDate &&
|
|
5220
|
+
if (startDate && ["met_limieten", "zonder_regels"].includes(formData.reservationMode)) {
|
|
5216
5221
|
const tableSettings2 = restaurantData?.["table-settings"] || {};
|
|
5217
|
-
const isAutomaticAssignment = tableSettings2.isInstalled
|
|
5222
|
+
const isAutomaticAssignment = tableSettings2.isInstalled && tableSettings2.assignmentMode === "automatic";
|
|
5218
5223
|
if (formData.reservationMode === "met_limieten" || formData.reservationMode === "zonder_regels" && isAutomaticAssignment) {
|
|
5219
5224
|
const beginDate = startDate.format("YYYY-MM-DD");
|
|
5220
5225
|
const endDate = startDate.clone().add(13, "days").format("YYYY-MM-DD");
|
|
@@ -5238,17 +5243,12 @@ var ReservationStepOne = ({
|
|
|
5238
5243
|
}, [startDate, api, formData.reservationMode, restaurantData]);
|
|
5239
5244
|
const handleWeekChange = (newStartDate) => {
|
|
5240
5245
|
setStartDate(newStartDate);
|
|
5241
|
-
resetFormDataFields([
|
|
5242
|
-
"date",
|
|
5243
|
-
"time",
|
|
5244
|
-
"selectedTableNumbers",
|
|
5245
|
-
"selectedTableIds"
|
|
5246
|
-
]);
|
|
5246
|
+
resetFormDataFields(["date", "time", "selectedTableNumbers", "selectedTableIds"]);
|
|
5247
5247
|
};
|
|
5248
5248
|
React9.useEffect(() => {
|
|
5249
5249
|
if (!initializationDone.current) {
|
|
5250
|
-
let needsUpdate = false;
|
|
5251
5250
|
const updates = {};
|
|
5251
|
+
let needsUpdate = false;
|
|
5252
5252
|
if (!formData.reservationMode) {
|
|
5253
5253
|
updates.reservationMode = "met_limieten";
|
|
5254
5254
|
needsUpdate = true;
|
|
@@ -5269,22 +5269,13 @@ var ReservationStepOne = ({
|
|
|
5269
5269
|
setTimeout(() => {
|
|
5270
5270
|
handleChange({ target: { multiple: true, updates } });
|
|
5271
5271
|
}, 0);
|
|
5272
|
-
initializationDone.current = true;
|
|
5273
|
-
} else {
|
|
5274
|
-
initializationDone.current = true;
|
|
5275
5272
|
}
|
|
5273
|
+
initializationDone.current = true;
|
|
5276
5274
|
}
|
|
5277
|
-
}, [
|
|
5278
|
-
formData.reservationMode,
|
|
5279
|
-
formData.guests,
|
|
5280
|
-
formData.selectedTableNumbers,
|
|
5281
|
-
formData.selectedTableIds,
|
|
5282
|
-
guests2,
|
|
5283
|
-
handleChange
|
|
5284
|
-
]);
|
|
5275
|
+
}, [formData, guests2, handleChange]);
|
|
5285
5276
|
React9.useEffect(() => {
|
|
5286
5277
|
const tableSettings2 = restaurantData?.["table-settings"] || {};
|
|
5287
|
-
const isAutomaticAssignment = tableSettings2.isInstalled
|
|
5278
|
+
const isAutomaticAssignment = tableSettings2.isInstalled && tableSettings2.assignmentMode === "automatic";
|
|
5288
5279
|
if (isAutomaticAssignment && formData.date && formData.time && formData.guests > 0 && restaurantData && reservations) {
|
|
5289
5280
|
setIsFetchingTables(true);
|
|
5290
5281
|
const available = algorithm.getAvailableTablesForTime(
|
|
@@ -5295,48 +5286,38 @@ var ReservationStepOne = ({
|
|
|
5295
5286
|
reservations
|
|
5296
5287
|
);
|
|
5297
5288
|
setAvailableTables(available);
|
|
5298
|
-
const
|
|
5299
|
-
const
|
|
5300
|
-
const
|
|
5301
|
-
const
|
|
5302
|
-
|
|
5303
|
-
const
|
|
5304
|
-
|
|
5305
|
-
|
|
5306
|
-
|
|
5307
|
-
stillAvailableSelectedNumbers.push(num);
|
|
5308
|
-
stillAvailableSelectedIds.push(correspondingTable.tableId);
|
|
5289
|
+
const selectedNumbers = formData.selectedTableNumbers || [];
|
|
5290
|
+
const selectedIds = formData.selectedTableIds || [];
|
|
5291
|
+
const stillAvailableNumbers = [];
|
|
5292
|
+
const stillAvailableIds = [];
|
|
5293
|
+
selectedNumbers.forEach((num) => {
|
|
5294
|
+
const table = available.find((t2) => t2.tableNumber === num);
|
|
5295
|
+
if (table && selectedIds.includes(table.tableId)) {
|
|
5296
|
+
stillAvailableNumbers.push(num);
|
|
5297
|
+
stillAvailableIds.push(table.tableId);
|
|
5309
5298
|
}
|
|
5310
5299
|
});
|
|
5311
|
-
|
|
5312
|
-
|
|
5313
|
-
|
|
5314
|
-
|
|
5315
|
-
|
|
5316
|
-
|
|
5317
|
-
|
|
5318
|
-
|
|
5319
|
-
|
|
5300
|
+
const numbersChanged = stillAvailableNumbers.toString() !== prevSelectedTables.current.numbers.toString();
|
|
5301
|
+
const idsChanged = stillAvailableIds.toString() !== prevSelectedTables.current.ids.toString();
|
|
5302
|
+
if (numbersChanged || idsChanged) {
|
|
5303
|
+
prevSelectedTables.current = {
|
|
5304
|
+
numbers: stillAvailableNumbers,
|
|
5305
|
+
ids: stillAvailableIds
|
|
5306
|
+
};
|
|
5307
|
+
handleChange({
|
|
5308
|
+
target: {
|
|
5309
|
+
multiple: true,
|
|
5310
|
+
updates: {
|
|
5311
|
+
selectedTableNumbers: stillAvailableNumbers,
|
|
5312
|
+
selectedTableIds: stillAvailableIds
|
|
5320
5313
|
}
|
|
5321
|
-
}
|
|
5322
|
-
}
|
|
5314
|
+
}
|
|
5315
|
+
});
|
|
5323
5316
|
}
|
|
5324
5317
|
setIsFetchingTables(false);
|
|
5325
5318
|
} else {
|
|
5326
5319
|
setAvailableTables([]);
|
|
5327
|
-
|
|
5328
|
-
setTimeout(() => {
|
|
5329
|
-
handleChange({
|
|
5330
|
-
target: {
|
|
5331
|
-
multiple: true,
|
|
5332
|
-
updates: {
|
|
5333
|
-
selectedTableNumbers: [],
|
|
5334
|
-
selectedTableIds: []
|
|
5335
|
-
}
|
|
5336
|
-
}
|
|
5337
|
-
});
|
|
5338
|
-
}, 0);
|
|
5339
|
-
}
|
|
5320
|
+
prevSelectedTables.current = { numbers: [], ids: [] };
|
|
5340
5321
|
}
|
|
5341
5322
|
}, [
|
|
5342
5323
|
formData.date,
|
|
@@ -5344,9 +5325,6 @@ var ReservationStepOne = ({
|
|
|
5344
5325
|
formData.guests,
|
|
5345
5326
|
restaurantData,
|
|
5346
5327
|
reservations,
|
|
5347
|
-
formData.reservationMode,
|
|
5348
|
-
formData.selectedTableNumbers,
|
|
5349
|
-
formData.selectedTableIds,
|
|
5350
5328
|
handleChange
|
|
5351
5329
|
]);
|
|
5352
5330
|
const handleGuestChange = (event) => {
|
|
@@ -5356,23 +5334,14 @@ var ReservationStepOne = ({
|
|
|
5356
5334
|
resetFormDataFields(["time", "selectedTableNumbers", "selectedTableIds"]);
|
|
5357
5335
|
};
|
|
5358
5336
|
React9.useEffect(() => {
|
|
5359
|
-
resetFormDataFields([
|
|
5360
|
-
"date",
|
|
5361
|
-
"time",
|
|
5362
|
-
"selectedTableNumbers",
|
|
5363
|
-
"selectedTableIds"
|
|
5364
|
-
]);
|
|
5337
|
+
resetFormDataFields(["date", "time", "selectedTableNumbers", "selectedTableIds"]);
|
|
5365
5338
|
}, [formData.reservationMode, resetFormDataFields]);
|
|
5366
5339
|
const handleTopLevelSelection = (mode) => {
|
|
5367
5340
|
if (mode === "met_limieten") {
|
|
5368
|
-
handleChange({
|
|
5369
|
-
target: { name: "reservationMode", value: "met_limieten" }
|
|
5370
|
-
});
|
|
5341
|
+
handleChange({ target: { name: "reservationMode", value: "met_limieten" } });
|
|
5371
5342
|
} else if (mode === "onbeperkt_parent") {
|
|
5372
5343
|
if (!["zonder_regels", "vrije_keuze"].includes(formData.reservationMode)) {
|
|
5373
|
-
handleChange({
|
|
5374
|
-
target: { name: "reservationMode", value: "zonder_regels" }
|
|
5375
|
-
});
|
|
5344
|
+
handleChange({ target: { name: "reservationMode", value: "zonder_regels" } });
|
|
5376
5345
|
}
|
|
5377
5346
|
}
|
|
5378
5347
|
};
|
|
@@ -5380,16 +5349,12 @@ var ReservationStepOne = ({
|
|
|
5380
5349
|
handleChange({ target: { name: "reservationMode", value: mode } });
|
|
5381
5350
|
};
|
|
5382
5351
|
const currentMode = formData.reservationMode;
|
|
5383
|
-
const isFinalMode = ["met_limieten", "zonder_regels", "vrije_keuze"].includes(
|
|
5384
|
-
currentMode
|
|
5385
|
-
);
|
|
5352
|
+
const isFinalMode = ["met_limieten", "zonder_regels", "vrije_keuze"].includes(currentMode);
|
|
5386
5353
|
const tableSettings = restaurantData?.["table-settings"] || {};
|
|
5387
|
-
const showTableSelector = isFinalMode && formData.date && formData.time && formData.guests > 0 && tableSettings.isInstalled
|
|
5354
|
+
const showTableSelector = isFinalMode && formData.date && formData.time && formData.guests > 0 && tableSettings.isInstalled && tableSettings.assignmentMode === "automatic" && availableTables.length > 0;
|
|
5388
5355
|
const seatSelectionEnabled = !!restaurantData?.["general-settings"]?.seatSelectionEnabled;
|
|
5389
5356
|
const seatOptions = ["Terras", "Restaurant"];
|
|
5390
|
-
const handleSeatPick = (seat) => {
|
|
5391
|
-
setFormData((prev) => ({ ...prev, zitplaats: seat }));
|
|
5392
|
-
};
|
|
5357
|
+
const handleSeatPick = (seat) => setFormData((prev) => ({ ...prev, zitplaats: seat }));
|
|
5393
5358
|
if (timeblocksError) {
|
|
5394
5359
|
return /* @__PURE__ */ React9__default.default.createElement("div", null, t.errors.openingHoursNotSet, " ", /* @__PURE__ */ React9__default.default.createElement(
|
|
5395
5360
|
"a",
|
|
@@ -5415,20 +5380,12 @@ var ReservationStepOne = ({
|
|
|
5415
5380
|
"button",
|
|
5416
5381
|
{
|
|
5417
5382
|
type: "button",
|
|
5418
|
-
className: `reservation-mode-button ${["onbeperkt_parent", "zonder_regels", "vrije_keuze"].includes(
|
|
5419
|
-
currentMode
|
|
5420
|
-
) ? "active" : ""}`,
|
|
5383
|
+
className: `reservation-mode-button ${["onbeperkt_parent", "zonder_regels", "vrije_keuze"].includes(currentMode) ? "active" : ""}`,
|
|
5421
5384
|
onClick: () => handleTopLevelSelection("onbeperkt_parent"),
|
|
5422
|
-
"aria-pressed": [
|
|
5423
|
-
"onbeperkt_parent",
|
|
5424
|
-
"zonder_regels",
|
|
5425
|
-
"vrije_keuze"
|
|
5426
|
-
].includes(currentMode)
|
|
5385
|
+
"aria-pressed": ["onbeperkt_parent", "zonder_regels", "vrije_keuze"].includes(currentMode)
|
|
5427
5386
|
},
|
|
5428
5387
|
t.modes.unlimited
|
|
5429
|
-
)), ["onbeperkt_parent", "zonder_regels", "vrije_keuze"].includes(
|
|
5430
|
-
currentMode
|
|
5431
|
-
) && /* @__PURE__ */ React9__default.default.createElement("div", { className: "reservation-modes-container sub-modes" }, /* @__PURE__ */ React9__default.default.createElement(
|
|
5388
|
+
)), ["onbeperkt_parent", "zonder_regels", "vrije_keuze"].includes(currentMode) && /* @__PURE__ */ React9__default.default.createElement("div", { className: "reservation-modes-container sub-modes" }, /* @__PURE__ */ React9__default.default.createElement(
|
|
5432
5389
|
"button",
|
|
5433
5390
|
{
|
|
5434
5391
|
type: "button",
|
|
@@ -5446,17 +5403,7 @@ var ReservationStepOne = ({
|
|
|
5446
5403
|
"aria-pressed": currentMode === "vrije_keuze"
|
|
5447
5404
|
},
|
|
5448
5405
|
t.modes.free
|
|
5449
|
-
))), ["onbeperkt_parent", "zonder_regels", "vrije_keuze"].includes(
|
|
5450
|
-
currentMode
|
|
5451
|
-
) && /* @__PURE__ */ React9__default.default.createElement("div", { className: "unlimited-mode-warning" }, /* @__PURE__ */ React9__default.default.createElement("div", { className: "warning-text" }, t.warnings?.unlimitedMode || (lang === "nl" ? "Let op: Bij onbeperkte boekingen wordt geen rekening gehouden met de maximale capaciteit van het restaurant. De maximale zitplaatslimiet kan worden overschreden." : "Warning: Unlimited bookings do not take into account the restaurant's maximum capacity. The maximum seating limit may be exceeded."))), /* @__PURE__ */ React9__default.default.createElement(
|
|
5452
|
-
ValueSelector_default,
|
|
5453
|
-
{
|
|
5454
|
-
setGuests,
|
|
5455
|
-
value: formData.guests || guests2,
|
|
5456
|
-
onChange: handleGuestChange,
|
|
5457
|
-
error: errors.guests
|
|
5458
|
-
}
|
|
5459
|
-
), isFinalMode && formData.guests > 0 && /* @__PURE__ */ React9__default.default.createElement(
|
|
5406
|
+
))), ["onbeperkt_parent", "zonder_regels", "vrije_keuze"].includes(currentMode) && /* @__PURE__ */ React9__default.default.createElement("div", { className: "unlimited-mode-warning" }, /* @__PURE__ */ React9__default.default.createElement("div", { className: "warning-text" }, t.warnings?.unlimitedMode || (lang === "nl" ? "Let op: Bij onbeperkte boekingen wordt geen rekening gehouden met de maximale capaciteit van het restaurant. De maximale zitplaatslimiet kan worden overschreden." : "Warning: Unlimited bookings do not take into account the restaurant's maximum capacity. The maximum seating limit may be exceeded."))), /* @__PURE__ */ React9__default.default.createElement(ValueSelector_default, { value: formData.guests || guests2, onChange: handleGuestChange, error: errors.guests, setGuests }), isFinalMode && formData.guests > 0 && /* @__PURE__ */ React9__default.default.createElement(
|
|
5460
5407
|
DateSelector_default,
|
|
5461
5408
|
{
|
|
5462
5409
|
guests: formData.guests,
|
package/dist/index.mjs
CHANGED
|
@@ -5172,10 +5172,14 @@ var ReservationStepOne = ({
|
|
|
5172
5172
|
const [guests2, setGuests] = useState(formData.guests || 2);
|
|
5173
5173
|
const [startDate, setStartDate] = useState(null);
|
|
5174
5174
|
const [reservations, setReservations] = useState([]);
|
|
5175
|
-
const api = useApi_default();
|
|
5176
5175
|
const [availableTables, setAvailableTables] = useState([]);
|
|
5177
5176
|
const [isFetchingTables, setIsFetchingTables] = useState(false);
|
|
5177
|
+
const api = useApi_default();
|
|
5178
5178
|
const initializationDone = useRef(false);
|
|
5179
|
+
const prevSelectedTables = useRef({
|
|
5180
|
+
numbers: formData.selectedTableNumbers || [],
|
|
5181
|
+
ids: formData.selectedTableIds || []
|
|
5182
|
+
});
|
|
5179
5183
|
const resetFormDataFields = useCallback(
|
|
5180
5184
|
(fieldsToReset) => {
|
|
5181
5185
|
setFormData((prevFormData) => {
|
|
@@ -5187,6 +5191,7 @@ var ReservationStepOne = ({
|
|
|
5187
5191
|
newFormData.selectedTableNumbers = [];
|
|
5188
5192
|
newFormData.selectedTableIds = [];
|
|
5189
5193
|
setAvailableTables([]);
|
|
5194
|
+
prevSelectedTables.current = { numbers: [], ids: [] };
|
|
5190
5195
|
}
|
|
5191
5196
|
return newFormData;
|
|
5192
5197
|
});
|
|
@@ -5203,9 +5208,9 @@ var ReservationStepOne = ({
|
|
|
5203
5208
|
}, []);
|
|
5204
5209
|
useEffect(() => {
|
|
5205
5210
|
const fetchReservations = async () => {
|
|
5206
|
-
if (startDate &&
|
|
5211
|
+
if (startDate && ["met_limieten", "zonder_regels"].includes(formData.reservationMode)) {
|
|
5207
5212
|
const tableSettings2 = restaurantData?.["table-settings"] || {};
|
|
5208
|
-
const isAutomaticAssignment = tableSettings2.isInstalled
|
|
5213
|
+
const isAutomaticAssignment = tableSettings2.isInstalled && tableSettings2.assignmentMode === "automatic";
|
|
5209
5214
|
if (formData.reservationMode === "met_limieten" || formData.reservationMode === "zonder_regels" && isAutomaticAssignment) {
|
|
5210
5215
|
const beginDate = startDate.format("YYYY-MM-DD");
|
|
5211
5216
|
const endDate = startDate.clone().add(13, "days").format("YYYY-MM-DD");
|
|
@@ -5229,17 +5234,12 @@ var ReservationStepOne = ({
|
|
|
5229
5234
|
}, [startDate, api, formData.reservationMode, restaurantData]);
|
|
5230
5235
|
const handleWeekChange = (newStartDate) => {
|
|
5231
5236
|
setStartDate(newStartDate);
|
|
5232
|
-
resetFormDataFields([
|
|
5233
|
-
"date",
|
|
5234
|
-
"time",
|
|
5235
|
-
"selectedTableNumbers",
|
|
5236
|
-
"selectedTableIds"
|
|
5237
|
-
]);
|
|
5237
|
+
resetFormDataFields(["date", "time", "selectedTableNumbers", "selectedTableIds"]);
|
|
5238
5238
|
};
|
|
5239
5239
|
useEffect(() => {
|
|
5240
5240
|
if (!initializationDone.current) {
|
|
5241
|
-
let needsUpdate = false;
|
|
5242
5241
|
const updates = {};
|
|
5242
|
+
let needsUpdate = false;
|
|
5243
5243
|
if (!formData.reservationMode) {
|
|
5244
5244
|
updates.reservationMode = "met_limieten";
|
|
5245
5245
|
needsUpdate = true;
|
|
@@ -5260,22 +5260,13 @@ var ReservationStepOne = ({
|
|
|
5260
5260
|
setTimeout(() => {
|
|
5261
5261
|
handleChange({ target: { multiple: true, updates } });
|
|
5262
5262
|
}, 0);
|
|
5263
|
-
initializationDone.current = true;
|
|
5264
|
-
} else {
|
|
5265
|
-
initializationDone.current = true;
|
|
5266
5263
|
}
|
|
5264
|
+
initializationDone.current = true;
|
|
5267
5265
|
}
|
|
5268
|
-
}, [
|
|
5269
|
-
formData.reservationMode,
|
|
5270
|
-
formData.guests,
|
|
5271
|
-
formData.selectedTableNumbers,
|
|
5272
|
-
formData.selectedTableIds,
|
|
5273
|
-
guests2,
|
|
5274
|
-
handleChange
|
|
5275
|
-
]);
|
|
5266
|
+
}, [formData, guests2, handleChange]);
|
|
5276
5267
|
useEffect(() => {
|
|
5277
5268
|
const tableSettings2 = restaurantData?.["table-settings"] || {};
|
|
5278
|
-
const isAutomaticAssignment = tableSettings2.isInstalled
|
|
5269
|
+
const isAutomaticAssignment = tableSettings2.isInstalled && tableSettings2.assignmentMode === "automatic";
|
|
5279
5270
|
if (isAutomaticAssignment && formData.date && formData.time && formData.guests > 0 && restaurantData && reservations) {
|
|
5280
5271
|
setIsFetchingTables(true);
|
|
5281
5272
|
const available = getAvailableTablesForTime(
|
|
@@ -5286,48 +5277,38 @@ var ReservationStepOne = ({
|
|
|
5286
5277
|
reservations
|
|
5287
5278
|
);
|
|
5288
5279
|
setAvailableTables(available);
|
|
5289
|
-
const
|
|
5290
|
-
const
|
|
5291
|
-
const
|
|
5292
|
-
const
|
|
5293
|
-
|
|
5294
|
-
const
|
|
5295
|
-
|
|
5296
|
-
|
|
5297
|
-
|
|
5298
|
-
stillAvailableSelectedNumbers.push(num);
|
|
5299
|
-
stillAvailableSelectedIds.push(correspondingTable.tableId);
|
|
5280
|
+
const selectedNumbers = formData.selectedTableNumbers || [];
|
|
5281
|
+
const selectedIds = formData.selectedTableIds || [];
|
|
5282
|
+
const stillAvailableNumbers = [];
|
|
5283
|
+
const stillAvailableIds = [];
|
|
5284
|
+
selectedNumbers.forEach((num) => {
|
|
5285
|
+
const table = available.find((t2) => t2.tableNumber === num);
|
|
5286
|
+
if (table && selectedIds.includes(table.tableId)) {
|
|
5287
|
+
stillAvailableNumbers.push(num);
|
|
5288
|
+
stillAvailableIds.push(table.tableId);
|
|
5300
5289
|
}
|
|
5301
5290
|
});
|
|
5302
|
-
|
|
5303
|
-
|
|
5304
|
-
|
|
5305
|
-
|
|
5306
|
-
|
|
5307
|
-
|
|
5308
|
-
|
|
5309
|
-
|
|
5310
|
-
|
|
5291
|
+
const numbersChanged = stillAvailableNumbers.toString() !== prevSelectedTables.current.numbers.toString();
|
|
5292
|
+
const idsChanged = stillAvailableIds.toString() !== prevSelectedTables.current.ids.toString();
|
|
5293
|
+
if (numbersChanged || idsChanged) {
|
|
5294
|
+
prevSelectedTables.current = {
|
|
5295
|
+
numbers: stillAvailableNumbers,
|
|
5296
|
+
ids: stillAvailableIds
|
|
5297
|
+
};
|
|
5298
|
+
handleChange({
|
|
5299
|
+
target: {
|
|
5300
|
+
multiple: true,
|
|
5301
|
+
updates: {
|
|
5302
|
+
selectedTableNumbers: stillAvailableNumbers,
|
|
5303
|
+
selectedTableIds: stillAvailableIds
|
|
5311
5304
|
}
|
|
5312
|
-
}
|
|
5313
|
-
}
|
|
5305
|
+
}
|
|
5306
|
+
});
|
|
5314
5307
|
}
|
|
5315
5308
|
setIsFetchingTables(false);
|
|
5316
5309
|
} else {
|
|
5317
5310
|
setAvailableTables([]);
|
|
5318
|
-
|
|
5319
|
-
setTimeout(() => {
|
|
5320
|
-
handleChange({
|
|
5321
|
-
target: {
|
|
5322
|
-
multiple: true,
|
|
5323
|
-
updates: {
|
|
5324
|
-
selectedTableNumbers: [],
|
|
5325
|
-
selectedTableIds: []
|
|
5326
|
-
}
|
|
5327
|
-
}
|
|
5328
|
-
});
|
|
5329
|
-
}, 0);
|
|
5330
|
-
}
|
|
5311
|
+
prevSelectedTables.current = { numbers: [], ids: [] };
|
|
5331
5312
|
}
|
|
5332
5313
|
}, [
|
|
5333
5314
|
formData.date,
|
|
@@ -5335,9 +5316,6 @@ var ReservationStepOne = ({
|
|
|
5335
5316
|
formData.guests,
|
|
5336
5317
|
restaurantData,
|
|
5337
5318
|
reservations,
|
|
5338
|
-
formData.reservationMode,
|
|
5339
|
-
formData.selectedTableNumbers,
|
|
5340
|
-
formData.selectedTableIds,
|
|
5341
5319
|
handleChange
|
|
5342
5320
|
]);
|
|
5343
5321
|
const handleGuestChange = (event) => {
|
|
@@ -5347,23 +5325,14 @@ var ReservationStepOne = ({
|
|
|
5347
5325
|
resetFormDataFields(["time", "selectedTableNumbers", "selectedTableIds"]);
|
|
5348
5326
|
};
|
|
5349
5327
|
useEffect(() => {
|
|
5350
|
-
resetFormDataFields([
|
|
5351
|
-
"date",
|
|
5352
|
-
"time",
|
|
5353
|
-
"selectedTableNumbers",
|
|
5354
|
-
"selectedTableIds"
|
|
5355
|
-
]);
|
|
5328
|
+
resetFormDataFields(["date", "time", "selectedTableNumbers", "selectedTableIds"]);
|
|
5356
5329
|
}, [formData.reservationMode, resetFormDataFields]);
|
|
5357
5330
|
const handleTopLevelSelection = (mode) => {
|
|
5358
5331
|
if (mode === "met_limieten") {
|
|
5359
|
-
handleChange({
|
|
5360
|
-
target: { name: "reservationMode", value: "met_limieten" }
|
|
5361
|
-
});
|
|
5332
|
+
handleChange({ target: { name: "reservationMode", value: "met_limieten" } });
|
|
5362
5333
|
} else if (mode === "onbeperkt_parent") {
|
|
5363
5334
|
if (!["zonder_regels", "vrije_keuze"].includes(formData.reservationMode)) {
|
|
5364
|
-
handleChange({
|
|
5365
|
-
target: { name: "reservationMode", value: "zonder_regels" }
|
|
5366
|
-
});
|
|
5335
|
+
handleChange({ target: { name: "reservationMode", value: "zonder_regels" } });
|
|
5367
5336
|
}
|
|
5368
5337
|
}
|
|
5369
5338
|
};
|
|
@@ -5371,16 +5340,12 @@ var ReservationStepOne = ({
|
|
|
5371
5340
|
handleChange({ target: { name: "reservationMode", value: mode } });
|
|
5372
5341
|
};
|
|
5373
5342
|
const currentMode = formData.reservationMode;
|
|
5374
|
-
const isFinalMode = ["met_limieten", "zonder_regels", "vrije_keuze"].includes(
|
|
5375
|
-
currentMode
|
|
5376
|
-
);
|
|
5343
|
+
const isFinalMode = ["met_limieten", "zonder_regels", "vrije_keuze"].includes(currentMode);
|
|
5377
5344
|
const tableSettings = restaurantData?.["table-settings"] || {};
|
|
5378
|
-
const showTableSelector = isFinalMode && formData.date && formData.time && formData.guests > 0 && tableSettings.isInstalled
|
|
5345
|
+
const showTableSelector = isFinalMode && formData.date && formData.time && formData.guests > 0 && tableSettings.isInstalled && tableSettings.assignmentMode === "automatic" && availableTables.length > 0;
|
|
5379
5346
|
const seatSelectionEnabled = !!restaurantData?.["general-settings"]?.seatSelectionEnabled;
|
|
5380
5347
|
const seatOptions = ["Terras", "Restaurant"];
|
|
5381
|
-
const handleSeatPick = (seat) => {
|
|
5382
|
-
setFormData((prev) => ({ ...prev, zitplaats: seat }));
|
|
5383
|
-
};
|
|
5348
|
+
const handleSeatPick = (seat) => setFormData((prev) => ({ ...prev, zitplaats: seat }));
|
|
5384
5349
|
if (timeblocksError) {
|
|
5385
5350
|
return /* @__PURE__ */ React9.createElement("div", null, t.errors.openingHoursNotSet, " ", /* @__PURE__ */ React9.createElement(
|
|
5386
5351
|
"a",
|
|
@@ -5406,20 +5371,12 @@ var ReservationStepOne = ({
|
|
|
5406
5371
|
"button",
|
|
5407
5372
|
{
|
|
5408
5373
|
type: "button",
|
|
5409
|
-
className: `reservation-mode-button ${["onbeperkt_parent", "zonder_regels", "vrije_keuze"].includes(
|
|
5410
|
-
currentMode
|
|
5411
|
-
) ? "active" : ""}`,
|
|
5374
|
+
className: `reservation-mode-button ${["onbeperkt_parent", "zonder_regels", "vrije_keuze"].includes(currentMode) ? "active" : ""}`,
|
|
5412
5375
|
onClick: () => handleTopLevelSelection("onbeperkt_parent"),
|
|
5413
|
-
"aria-pressed": [
|
|
5414
|
-
"onbeperkt_parent",
|
|
5415
|
-
"zonder_regels",
|
|
5416
|
-
"vrije_keuze"
|
|
5417
|
-
].includes(currentMode)
|
|
5376
|
+
"aria-pressed": ["onbeperkt_parent", "zonder_regels", "vrije_keuze"].includes(currentMode)
|
|
5418
5377
|
},
|
|
5419
5378
|
t.modes.unlimited
|
|
5420
|
-
)), ["onbeperkt_parent", "zonder_regels", "vrije_keuze"].includes(
|
|
5421
|
-
currentMode
|
|
5422
|
-
) && /* @__PURE__ */ React9.createElement("div", { className: "reservation-modes-container sub-modes" }, /* @__PURE__ */ React9.createElement(
|
|
5379
|
+
)), ["onbeperkt_parent", "zonder_regels", "vrije_keuze"].includes(currentMode) && /* @__PURE__ */ React9.createElement("div", { className: "reservation-modes-container sub-modes" }, /* @__PURE__ */ React9.createElement(
|
|
5423
5380
|
"button",
|
|
5424
5381
|
{
|
|
5425
5382
|
type: "button",
|
|
@@ -5437,17 +5394,7 @@ var ReservationStepOne = ({
|
|
|
5437
5394
|
"aria-pressed": currentMode === "vrije_keuze"
|
|
5438
5395
|
},
|
|
5439
5396
|
t.modes.free
|
|
5440
|
-
))), ["onbeperkt_parent", "zonder_regels", "vrije_keuze"].includes(
|
|
5441
|
-
currentMode
|
|
5442
|
-
) && /* @__PURE__ */ React9.createElement("div", { className: "unlimited-mode-warning" }, /* @__PURE__ */ React9.createElement("div", { className: "warning-text" }, t.warnings?.unlimitedMode || (lang === "nl" ? "Let op: Bij onbeperkte boekingen wordt geen rekening gehouden met de maximale capaciteit van het restaurant. De maximale zitplaatslimiet kan worden overschreden." : "Warning: Unlimited bookings do not take into account the restaurant's maximum capacity. The maximum seating limit may be exceeded."))), /* @__PURE__ */ React9.createElement(
|
|
5443
|
-
ValueSelector_default,
|
|
5444
|
-
{
|
|
5445
|
-
setGuests,
|
|
5446
|
-
value: formData.guests || guests2,
|
|
5447
|
-
onChange: handleGuestChange,
|
|
5448
|
-
error: errors.guests
|
|
5449
|
-
}
|
|
5450
|
-
), isFinalMode && formData.guests > 0 && /* @__PURE__ */ React9.createElement(
|
|
5397
|
+
))), ["onbeperkt_parent", "zonder_regels", "vrije_keuze"].includes(currentMode) && /* @__PURE__ */ React9.createElement("div", { className: "unlimited-mode-warning" }, /* @__PURE__ */ React9.createElement("div", { className: "warning-text" }, t.warnings?.unlimitedMode || (lang === "nl" ? "Let op: Bij onbeperkte boekingen wordt geen rekening gehouden met de maximale capaciteit van het restaurant. De maximale zitplaatslimiet kan worden overschreden." : "Warning: Unlimited bookings do not take into account the restaurant's maximum capacity. The maximum seating limit may be exceeded."))), /* @__PURE__ */ React9.createElement(ValueSelector_default, { value: formData.guests || guests2, onChange: handleGuestChange, error: errors.guests, setGuests }), isFinalMode && formData.guests > 0 && /* @__PURE__ */ React9.createElement(
|
|
5451
5398
|
DateSelector_default,
|
|
5452
5399
|
{
|
|
5453
5400
|
guests: formData.guests,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happychef/reservation-sidebar",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.2",
|
|
4
4
|
"description": "A compound component for managing restaurant reservations - JavaScript version with independent styles",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"framer-motion": "^12.23.24",
|
|
39
39
|
"lottie-react": "^2.4.1",
|
|
40
40
|
"luxon": "^3.7.2",
|
|
41
|
-
"moment-timezone": "^0.5.
|
|
41
|
+
"moment-timezone": "^0.5.48",
|
|
42
42
|
"react-icons": "^5.3.0"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|