@happychef/reservation-sidebar 2.0.9 → 2.1.0
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 +1377 -212
- package/dist/index.mjs +1348 -183
- package/package.json +3 -2
package/dist/index.js
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var React9 = require('react');
|
|
4
|
+
var framerMotion = require('framer-motion');
|
|
5
|
+
var moment2 = require('moment-timezone');
|
|
4
6
|
var algorithm = require('@happychef/algorithm');
|
|
7
|
+
var luxon = require('luxon');
|
|
8
|
+
var axios = require('axios');
|
|
5
9
|
var Lottie = require('lottie-react');
|
|
6
10
|
var fa = require('react-icons/fa');
|
|
7
|
-
var axios = require('axios');
|
|
8
|
-
var moment2 = require('moment-timezone');
|
|
9
11
|
|
|
10
12
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
13
|
|
|
12
|
-
var
|
|
13
|
-
var Lottie__default = /*#__PURE__*/_interopDefault(Lottie);
|
|
14
|
-
var axios__default = /*#__PURE__*/_interopDefault(axios);
|
|
14
|
+
var React9__default = /*#__PURE__*/_interopDefault(React9);
|
|
15
15
|
var moment2__default = /*#__PURE__*/_interopDefault(moment2);
|
|
16
|
+
var axios__default = /*#__PURE__*/_interopDefault(axios);
|
|
17
|
+
var Lottie__default = /*#__PURE__*/_interopDefault(Lottie);
|
|
16
18
|
|
|
17
19
|
var __create = Object.create;
|
|
18
20
|
var __defProp = Object.defineProperty;
|
|
@@ -4050,7 +4052,7 @@ var require_nl = __commonJS({
|
|
|
4050
4052
|
"node_modules/moment/locale/nl.js"(exports$1, module) {
|
|
4051
4053
|
(function(global, factory) {
|
|
4052
4054
|
typeof exports$1 === "object" && typeof module !== "undefined" && typeof __require === "function" ? factory(require_moment()) : typeof define === "function" && define.amd ? define(["../moment"], factory) : factory(global.moment);
|
|
4053
|
-
})(exports$1, (function(
|
|
4055
|
+
})(exports$1, (function(moment7) {
|
|
4054
4056
|
var monthsShortWithDots = "jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"), monthsShortWithoutDots = "jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"), monthsParse = [
|
|
4055
4057
|
/^jan/i,
|
|
4056
4058
|
/^feb/i,
|
|
@@ -4065,7 +4067,7 @@ var require_nl = __commonJS({
|
|
|
4065
4067
|
/^nov/i,
|
|
4066
4068
|
/^dec/i
|
|
4067
4069
|
], monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
|
|
4068
|
-
var nl =
|
|
4070
|
+
var nl = moment7.defineLocale("nl", {
|
|
4069
4071
|
months: "januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split(
|
|
4070
4072
|
"_"
|
|
4071
4073
|
),
|
|
@@ -4161,26 +4163,1129 @@ function styleInject(css, { insertAt } = {}) {
|
|
|
4161
4163
|
}
|
|
4162
4164
|
}
|
|
4163
4165
|
|
|
4166
|
+
// src/components/ReservationStepOne/css/valueSelector.css
|
|
4167
|
+
styleInject(".new-reservation-page .value-selector {\n display: flex;\n flex-direction: column;\n gap: 15px;\n margin-bottom: 20px;\n}\n.new-reservation-page .non-absolute {\n position: relative !important;\n}\n.new-reservation-page .non-absolute::before {\n background: none;\n}\n.new-reservation-page .predefined-values {\n display: flex;\n gap: 10px;\n}\n.new-reservation-page .predefined-value-button {\n flex: 1;\n padding: 10px;\n border: 1px solid #ccc;\n border-radius: var(--border-radius);\n background-color: var(--color-white);\n cursor: pointer;\n font-size: 1rem;\n transition: background-color 0.3s ease;\n}\n.new-reservation-page .predefined-value-button.active,\n.new-reservation-page .predefined-value-button:hover {\n background-color: var(--color-blue);\n color: var(--color-white);\n}\n.new-reservation-page .slider-container {\n display: flex;\n align-items: center;\n gap: 15px;\n}\n.new-reservation-page .slider {\n flex: 1;\n appearance: none;\n -webkit-appearance: none;\n height: 5px;\n background: #ddd;\n border-radius: 5px;\n outline: none;\n}\n.new-reservation-page .slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 20px;\n height: 20px;\n background: var(--color-blue);\n cursor: pointer;\n border-radius: 50%;\n}\n.new-reservation-page .value-input {\n width: 80px;\n padding: 10px;\n border: 1px solid #ccc;\n border-radius: var(--border-radius);\n font-size: 1rem;\n}\n");
|
|
4168
|
+
|
|
4169
|
+
// src/components/ReservationStepOne/ValueSelector.js
|
|
4170
|
+
var ValueSelectorGuests = ({ setGuests, value: value2, onChange }) => {
|
|
4171
|
+
const predefinedValues = [1, 2, 3, "4+"];
|
|
4172
|
+
const [selectedValue, setSelectedValue] = React9.useState(value2 || "");
|
|
4173
|
+
const [showSlider, setShowSlider] = React9.useState(false);
|
|
4174
|
+
const handlePredefinedValueClick = (val) => {
|
|
4175
|
+
if (val === "4+") {
|
|
4176
|
+
setShowSlider(true);
|
|
4177
|
+
setSelectedValue(4);
|
|
4178
|
+
setGuests(4);
|
|
4179
|
+
onChange({ target: { name: "guests", value: 4 } });
|
|
4180
|
+
} else {
|
|
4181
|
+
setShowSlider(false);
|
|
4182
|
+
setSelectedValue(val);
|
|
4183
|
+
setGuests(val);
|
|
4184
|
+
onChange({ target: { name: "guests", value: val } });
|
|
4185
|
+
}
|
|
4186
|
+
};
|
|
4187
|
+
const handleSliderChange = (e) => {
|
|
4188
|
+
const val = e.target.value;
|
|
4189
|
+
setSelectedValue(val);
|
|
4190
|
+
setGuests(val);
|
|
4191
|
+
onChange({ target: { name: "guests", value: val } });
|
|
4192
|
+
};
|
|
4193
|
+
const handleInputChange = (e) => {
|
|
4194
|
+
const val = e.target.value;
|
|
4195
|
+
setSelectedValue(val);
|
|
4196
|
+
setGuests(val);
|
|
4197
|
+
onChange({ target: { name: "guests", value: val } });
|
|
4198
|
+
};
|
|
4199
|
+
return /* @__PURE__ */ React9__default.default.createElement("div", { className: "value-selector", translate: "no" }, /* @__PURE__ */ React9__default.default.createElement("div", { className: "predefined-values" }, predefinedValues.map((val) => /* @__PURE__ */ React9__default.default.createElement(
|
|
4200
|
+
"button",
|
|
4201
|
+
{
|
|
4202
|
+
key: val,
|
|
4203
|
+
type: "button",
|
|
4204
|
+
className: `predefined-value-button ${selectedValue == val || val === "4+" && showSlider ? "active" : ""}`,
|
|
4205
|
+
onClick: () => handlePredefinedValueClick(val)
|
|
4206
|
+
},
|
|
4207
|
+
val === "4+" ? "4+" : `${val} ${val === 1 ? "p" : "p"}`
|
|
4208
|
+
))), /* @__PURE__ */ React9__default.default.createElement(framerMotion.AnimatePresence, null, showSlider && /* @__PURE__ */ React9__default.default.createElement(
|
|
4209
|
+
framerMotion.motion.div,
|
|
4210
|
+
{
|
|
4211
|
+
className: "slider-container",
|
|
4212
|
+
initial: { opacity: 0, height: 0 },
|
|
4213
|
+
animate: { opacity: 1, height: "auto" },
|
|
4214
|
+
exit: { opacity: 0, height: 0 }
|
|
4215
|
+
},
|
|
4216
|
+
/* @__PURE__ */ React9__default.default.createElement(
|
|
4217
|
+
"input",
|
|
4218
|
+
{
|
|
4219
|
+
type: "range",
|
|
4220
|
+
min: "4",
|
|
4221
|
+
max: "15",
|
|
4222
|
+
step: "1",
|
|
4223
|
+
value: selectedValue,
|
|
4224
|
+
onChange: handleSliderChange,
|
|
4225
|
+
className: "slider non-absolute"
|
|
4226
|
+
}
|
|
4227
|
+
),
|
|
4228
|
+
/* @__PURE__ */ React9__default.default.createElement(
|
|
4229
|
+
"input",
|
|
4230
|
+
{
|
|
4231
|
+
type: "number",
|
|
4232
|
+
name: "guests",
|
|
4233
|
+
value: selectedValue,
|
|
4234
|
+
onChange: handleInputChange,
|
|
4235
|
+
className: "value-input",
|
|
4236
|
+
min: "4",
|
|
4237
|
+
max: "100",
|
|
4238
|
+
step: "1"
|
|
4239
|
+
}
|
|
4240
|
+
)
|
|
4241
|
+
)));
|
|
4242
|
+
};
|
|
4243
|
+
var ValueSelector_default = ValueSelectorGuests;
|
|
4244
|
+
|
|
4245
|
+
// src/components/ReservationStepOne/Calendar.js
|
|
4246
|
+
__toESM(require_nl());
|
|
4247
|
+
var isWeekInPast = (weekStartDate) => {
|
|
4248
|
+
const today = moment2__default.default().tz("Europe/Brussels").startOf("day");
|
|
4249
|
+
const weekEndDate = weekStartDate.clone().add(6, "days").endOf("day");
|
|
4250
|
+
return weekEndDate.isBefore(today);
|
|
4251
|
+
};
|
|
4252
|
+
var isSameDay = (date1, date2) => date1.isSame(date2, "day");
|
|
4253
|
+
|
|
4254
|
+
// src/components/ReservationStepOne/css/calendar.css
|
|
4255
|
+
styleInject(".new-reservation-page .calendar-container {\n position: relative;\n width: 100%;\n}\n.new-reservation-page .calendar-container .calendar-display {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 10px;\n background-color: #fff;\n border: #ccc 1px solid;\n cursor: pointer;\n user-select: none;\n text-align: left;\n border-radius: 5px;\n}\n.new-reservation-page .calendar-container .calendar-display span:first-child {\n flex-grow: 1;\n}\n.new-reservation-page .calendar-container .calendar {\n position: absolute;\n z-index: 1000;\n width: 100%;\n background-color: rgba(255, 255, 255, 1);\n border: 1px solid #ccc;\n margin-top: 5px;\n padding: 10px;\n border-radius: 10px;\n animation: fadeInCalendar 0.3s ease-in-out;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\n}\n@keyframes fadeInCalendar {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n.new-reservation-page .calendar-container .availability-hold-btn {\n font-size: 10px;\n}\n.new-reservation-page .calendar-container .calendar-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 10px;\n gap: 8px;\n flex-wrap: wrap;\n}\n.new-reservation-page .calendar-container .calendar-header button {\n background-color: transparent;\n border: none;\n cursor: pointer;\n font-size: 18px;\n}\n.new-reservation-page .calendar-container .calendar-header span {\n font-size: 15px;\n color: gray;\n font-weight: 500;\n}\n.new-reservation-page .calendar-container .calendar-weeks-wrapper {\n overflow: hidden;\n position: relative;\n width: 100%;\n}\n.new-reservation-page .calendar-container .calendar-table {\n width: 100%;\n border-collapse: collapse;\n}\n.new-reservation-page .calendar-container .calendar-table th,\n.new-reservation-page .calendar-container .calendar-table td {\n width: 14.28%;\n text-align: center;\n padding: 5px;\n}\n.calendar-container .calendar-table th {\n color: #666;\n font-weight: normal;\n padding-bottom: 10px;\n}\n.new-reservation-page .calendar-container .calendar-table td {\n vertical-align: middle;\n cursor: pointer;\n border: none;\n opacity: 1;\n position: relative;\n}\n.new-reservation-page .calendar-container .calendar-table td.empty-day {\n cursor: default;\n}\n.new-reservation-page .calendar-container .calendar-table td:hover .day-square.available {\n transform: scale(1.05);\n}\n.new-reservation-page .calendar-container .day-square {\n position: relative;\n width: 38px;\n height: 38px;\n border-radius: 4px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n transition: all 0.2s ease;\n font-size: 16px;\n margin: 0 auto;\n}\n.new-reservation-page .calendar-container .day-number {\n line-height: 1;\n z-index: 2;\n}\n.new-reservation-page .calendar-container .available .day-square {\n background-color: #ccffcc;\n color: #006600;\n}\n.new-reservation-page .calendar-container .available:hover .day-square {\n background-color: #b3ffb3;\n}\n.new-reservation-page .calendar-container .available:active .day-square {\n background-color: #99ff99;\n}\n.new-reservation-page .calendar-container .unavailable .day-square {\n background-color: rgba(139, 0, 0, 0.13);\n color: darkred;\n}\n.new-reservation-page .calendar-container .gray-out .day-square {\n background-color: #e0e0e0;\n color: #999;\n cursor: not-allowed;\n}\n.new-reservation-page .calendar-container .selected .day-square {\n background-color: #006600;\n color: #ccffcc;\n}\n.new-reservation-page .calendar-container .calendar-table td.unavailable,\n.new-reservation-page .calendar-container .calendar-table td.gray-out {\n cursor: not-allowed;\n}\n.new-reservation-page .calendar-container .calendar-table td.unavailable:hover .day-square,\n.new-reservation-page .calendar-container .calendar-table td.gray-out:hover .day-square {\n transform: none;\n}\n.new-reservation-page .calendar-container .calendar-table td {\n border: none;\n}\n.new-reservation-page .calendar-container .arrow {\n margin-left: auto;\n color: gray;\n display: flex;\n align-items: center;\n}\n.new-reservation-page .calendar-container .available .availability-badge {\n background: #38a169;\n}\n.new-reservation-page .calendar-container .selected .availability-badge {\n background: #2d3748;\n}\n@media screen and (max-width: 900px) {\n .calendar-container .day-square {\n width: 35px !important;\n height: 35px !important;\n font-size: 15px !important;\n }\n .calendar-container .calendar-header span {\n font-size: 12px;\n }\n .new-reservation-page .calendar-container .availability-toggle-btn {\n padding: 5px 8px;\n font-size: 11px;\n }\n}\n");
|
|
4256
|
+
|
|
4257
|
+
// src/components/ReservationStepOne/translations.json
|
|
4258
|
+
var translations_default = {
|
|
4259
|
+
nl: {
|
|
4260
|
+
reservationStepOne: {
|
|
4261
|
+
errors: {
|
|
4262
|
+
openingHoursNotSet: "Openingstijden niet ingesteld.",
|
|
4263
|
+
clickHereToSet: "Klik hier om uw openingsuren in te stellen."
|
|
4264
|
+
},
|
|
4265
|
+
modes: {
|
|
4266
|
+
withLimits: "Met Limieten",
|
|
4267
|
+
unlimited: "Onbeperkt",
|
|
4268
|
+
openingHours: "Openingsuren",
|
|
4269
|
+
free: "Vrij"
|
|
4270
|
+
},
|
|
4271
|
+
fields: {
|
|
4272
|
+
time: "Tijd"
|
|
4273
|
+
},
|
|
4274
|
+
messages: {
|
|
4275
|
+
searchingTables: "Beschikbare tafels zoeken...",
|
|
4276
|
+
noTablesAvailable: "Geen specifieke tafels beschikbaar voor deze selectie."
|
|
4277
|
+
},
|
|
4278
|
+
warnings: {
|
|
4279
|
+
unlimitedMode: "Onbeperkt zal geen rekening houden met maximum limieten."
|
|
4280
|
+
}
|
|
4281
|
+
},
|
|
4282
|
+
calendar: {
|
|
4283
|
+
selectDatePlaceholder: "Selecteer een datum",
|
|
4284
|
+
today: "Vandaag",
|
|
4285
|
+
tomorrow: "Morgen",
|
|
4286
|
+
prevWeek: "Vorige week",
|
|
4287
|
+
nextWeek: "Volgende week",
|
|
4288
|
+
dayHeaders: ["Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"],
|
|
4289
|
+
seatsQuestion: "Zitplaatsen?"
|
|
4290
|
+
},
|
|
4291
|
+
timeSelector: {
|
|
4292
|
+
shifts: {
|
|
4293
|
+
breakfast: "Ontbijt",
|
|
4294
|
+
lunch: "Lunch",
|
|
4295
|
+
dinner: "Diner"
|
|
4296
|
+
},
|
|
4297
|
+
selectMeal: "Selecteer een maaltijd",
|
|
4298
|
+
selectTime: "Selecteer een tijd",
|
|
4299
|
+
noDateSelected: "Selecteer eerst een datum.",
|
|
4300
|
+
noTimes: "Geen beschikbare tijden.",
|
|
4301
|
+
back: "Terug"
|
|
4302
|
+
},
|
|
4303
|
+
tableSelector: {
|
|
4304
|
+
label: "Selecteer beschikbare tafel(s):",
|
|
4305
|
+
table: "Tafel",
|
|
4306
|
+
max: "Max",
|
|
4307
|
+
noTables: "Geen specifieke tafels beschikbaar voor deze tijd/gasten combinatie."
|
|
4308
|
+
}
|
|
4309
|
+
},
|
|
4310
|
+
en: {
|
|
4311
|
+
reservationStepOne: {
|
|
4312
|
+
errors: {
|
|
4313
|
+
openingHoursNotSet: "Opening hours not set.",
|
|
4314
|
+
clickHereToSet: "Click here to set your opening hours."
|
|
4315
|
+
},
|
|
4316
|
+
modes: {
|
|
4317
|
+
withLimits: "With Limits",
|
|
4318
|
+
unlimited: "Unlimited",
|
|
4319
|
+
openingHours: "Opening Hours",
|
|
4320
|
+
free: "Free"
|
|
4321
|
+
},
|
|
4322
|
+
fields: {
|
|
4323
|
+
time: "Time"
|
|
4324
|
+
},
|
|
4325
|
+
messages: {
|
|
4326
|
+
searchingTables: "Searching for available tables...",
|
|
4327
|
+
noTablesAvailable: "No specific tables available for this selection."
|
|
4328
|
+
},
|
|
4329
|
+
warnings: {
|
|
4330
|
+
unlimitedMode: "Unlimited will not take into account maximum limits."
|
|
4331
|
+
}
|
|
4332
|
+
},
|
|
4333
|
+
calendar: {
|
|
4334
|
+
selectDatePlaceholder: "Select a date",
|
|
4335
|
+
today: "Today",
|
|
4336
|
+
tomorrow: "Tomorrow",
|
|
4337
|
+
prevWeek: "Previous week",
|
|
4338
|
+
nextWeek: "Next week",
|
|
4339
|
+
dayHeaders: ["M", "T", "W", "T", "F", "S", "S"],
|
|
4340
|
+
seatsQuestion: "Seating?"
|
|
4341
|
+
},
|
|
4342
|
+
timeSelector: {
|
|
4343
|
+
shifts: {
|
|
4344
|
+
breakfast: "Breakfast",
|
|
4345
|
+
lunch: "Lunch",
|
|
4346
|
+
dinner: "Dinner"
|
|
4347
|
+
},
|
|
4348
|
+
selectMeal: "Select a meal",
|
|
4349
|
+
selectTime: "Select a time",
|
|
4350
|
+
noDateSelected: "Please select a date first.",
|
|
4351
|
+
noTimes: "No available times.",
|
|
4352
|
+
back: "Back"
|
|
4353
|
+
},
|
|
4354
|
+
tableSelector: {
|
|
4355
|
+
label: "Select available table(s):",
|
|
4356
|
+
table: "Table",
|
|
4357
|
+
max: "Max",
|
|
4358
|
+
noTables: "No specific tables available for this time/guest combination."
|
|
4359
|
+
}
|
|
4360
|
+
},
|
|
4361
|
+
fr: {
|
|
4362
|
+
reservationStepOne: {
|
|
4363
|
+
errors: {
|
|
4364
|
+
openingHoursNotSet: "Horaires non d\xE9finies.",
|
|
4365
|
+
clickHereToSet: "Cliquez ici pour d\xE9finir vos horaires."
|
|
4366
|
+
},
|
|
4367
|
+
modes: {
|
|
4368
|
+
withLimits: "Avec Limites",
|
|
4369
|
+
unlimited: "Illimit\xE9",
|
|
4370
|
+
openingHours: "Horaires",
|
|
4371
|
+
free: "Libre"
|
|
4372
|
+
},
|
|
4373
|
+
fields: {
|
|
4374
|
+
time: "Heure"
|
|
4375
|
+
},
|
|
4376
|
+
messages: {
|
|
4377
|
+
searchingTables: "Recherche de tables disponibles...",
|
|
4378
|
+
noTablesAvailable: "Aucune table sp\xE9cifique disponible pour cette s\xE9lection."
|
|
4379
|
+
},
|
|
4380
|
+
warnings: {
|
|
4381
|
+
unlimitedMode: "Illimit\xE9 ne tiendra pas compte des limites maximales."
|
|
4382
|
+
}
|
|
4383
|
+
},
|
|
4384
|
+
calendar: {
|
|
4385
|
+
selectDatePlaceholder: "S\xE9lectionnez une date",
|
|
4386
|
+
today: "Aujourd'hui",
|
|
4387
|
+
tomorrow: "Demain",
|
|
4388
|
+
prevWeek: "Semaine pr\xE9c\xE9dente",
|
|
4389
|
+
nextWeek: "Semaine suivante",
|
|
4390
|
+
dayHeaders: ["Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di"],
|
|
4391
|
+
seatsQuestion: "Places ?"
|
|
4392
|
+
},
|
|
4393
|
+
timeSelector: {
|
|
4394
|
+
shifts: {
|
|
4395
|
+
breakfast: "Petit-d\xE9jeuner",
|
|
4396
|
+
lunch: "D\xE9jeuner",
|
|
4397
|
+
dinner: "D\xEEner"
|
|
4398
|
+
},
|
|
4399
|
+
selectMeal: "S\xE9lectionnez un repas",
|
|
4400
|
+
selectTime: "S\xE9lectionnez une heure",
|
|
4401
|
+
noDateSelected: "Veuillez d'abord s\xE9lectionner une date.",
|
|
4402
|
+
noTimes: "Aucun horaire disponible.",
|
|
4403
|
+
back: "Retour"
|
|
4404
|
+
},
|
|
4405
|
+
tableSelector: {
|
|
4406
|
+
label: "S\xE9lectionnez les table(s) disponibles :",
|
|
4407
|
+
table: "Table",
|
|
4408
|
+
max: "Max",
|
|
4409
|
+
noTables: "Aucune table sp\xE9cifique disponible pour cette combinaison temps/convives."
|
|
4410
|
+
}
|
|
4411
|
+
}
|
|
4412
|
+
};
|
|
4413
|
+
|
|
4414
|
+
// src/components/ReservationStepOne/Calendar.js
|
|
4415
|
+
moment2__default.default.locale("nl");
|
|
4416
|
+
var Calendar = ({
|
|
4417
|
+
guests: guests2,
|
|
4418
|
+
selectedDate,
|
|
4419
|
+
onSelectDate,
|
|
4420
|
+
autoExpand,
|
|
4421
|
+
reservationMode,
|
|
4422
|
+
restaurantData,
|
|
4423
|
+
startDate,
|
|
4424
|
+
onWeekChange,
|
|
4425
|
+
reservations,
|
|
4426
|
+
giftcard,
|
|
4427
|
+
zitplaats
|
|
4428
|
+
}) => {
|
|
4429
|
+
const lang = localStorage.getItem("preferredLanguage") || "nl";
|
|
4430
|
+
const t = translations_default[lang].calendar;
|
|
4431
|
+
const [isExpanded, setIsExpanded] = React9.useState(autoExpand || false);
|
|
4432
|
+
const [showAvailabilities, setShowAvailabilities] = React9.useState(false);
|
|
4433
|
+
const calendarRef = React9.useRef(null);
|
|
4434
|
+
const hideAvailTimerRef = React9.useRef(null);
|
|
4435
|
+
const maxDate = moment2__default.default().tz("Europe/Amsterdam").add(1, "year").endOf("day");
|
|
4436
|
+
React9.useEffect(() => {
|
|
4437
|
+
if (autoExpand) {
|
|
4438
|
+
setIsExpanded(true);
|
|
4439
|
+
}
|
|
4440
|
+
}, [autoExpand]);
|
|
4441
|
+
React9.useEffect(() => {
|
|
4442
|
+
const handleClickOutside = (event) => {
|
|
4443
|
+
if (calendarRef.current && !calendarRef.current.contains(event.target)) {
|
|
4444
|
+
setIsExpanded(false);
|
|
4445
|
+
setShowAvailabilities(false);
|
|
4446
|
+
}
|
|
4447
|
+
};
|
|
4448
|
+
document.addEventListener("mousedown", handleClickOutside);
|
|
4449
|
+
return () => {
|
|
4450
|
+
document.removeEventListener("mousedown", handleClickOutside);
|
|
4451
|
+
};
|
|
4452
|
+
}, []);
|
|
4453
|
+
React9.useEffect(() => {
|
|
4454
|
+
return () => {
|
|
4455
|
+
if (hideAvailTimerRef.current) {
|
|
4456
|
+
clearTimeout(hideAvailTimerRef.current);
|
|
4457
|
+
hideAvailTimerRef.current = null;
|
|
4458
|
+
}
|
|
4459
|
+
};
|
|
4460
|
+
}, []);
|
|
4461
|
+
const showAvailabilityNow = () => {
|
|
4462
|
+
if (hideAvailTimerRef.current) {
|
|
4463
|
+
clearTimeout(hideAvailTimerRef.current);
|
|
4464
|
+
hideAvailTimerRef.current = null;
|
|
4465
|
+
}
|
|
4466
|
+
setShowAvailabilities(true);
|
|
4467
|
+
};
|
|
4468
|
+
const hideAvailabilityAfterDelay = (delay = 1e3) => {
|
|
4469
|
+
if (hideAvailTimerRef.current) {
|
|
4470
|
+
clearTimeout(hideAvailTimerRef.current);
|
|
4471
|
+
}
|
|
4472
|
+
hideAvailTimerRef.current = setTimeout(() => {
|
|
4473
|
+
setShowAvailabilities(false);
|
|
4474
|
+
hideAvailTimerRef.current = null;
|
|
4475
|
+
}, delay);
|
|
4476
|
+
};
|
|
4477
|
+
const computeMaxGuestsForDate = (date, today) => {
|
|
4478
|
+
if (date.isBefore(today, "day") || date.isAfter(maxDate, "day")) {
|
|
4479
|
+
return 0;
|
|
4480
|
+
}
|
|
4481
|
+
const formattedDate = date.format("YYYY-MM-DD");
|
|
4482
|
+
if (showAvailabilities) {
|
|
4483
|
+
const tableSettings2 = restaurantData?.["table-settings"] || {};
|
|
4484
|
+
const isTableAssignmentEnabled2 = tableSettings2.isInstalled === true && tableSettings2.assignmentMode === "automatic";
|
|
4485
|
+
let maxFittable2 = 0;
|
|
4486
|
+
for (let g = 1; g <= 21; g++) {
|
|
4487
|
+
let ok;
|
|
4488
|
+
if (isTableAssignmentEnabled2) {
|
|
4489
|
+
ok = algorithm.isDateAvailableWithTableCheck(
|
|
4490
|
+
restaurantData,
|
|
4491
|
+
formattedDate,
|
|
4492
|
+
reservations,
|
|
4493
|
+
g,
|
|
4494
|
+
giftcard || null
|
|
4495
|
+
);
|
|
4496
|
+
} else {
|
|
4497
|
+
ok = algorithm.isDateAvailable(
|
|
4498
|
+
restaurantData,
|
|
4499
|
+
formattedDate,
|
|
4500
|
+
reservations,
|
|
4501
|
+
g,
|
|
4502
|
+
giftcard || null
|
|
4503
|
+
);
|
|
4504
|
+
}
|
|
4505
|
+
if (ok) maxFittable2 = g;
|
|
4506
|
+
}
|
|
4507
|
+
return maxFittable2;
|
|
4508
|
+
}
|
|
4509
|
+
if (reservationMode === "vrije_keuze") {
|
|
4510
|
+
return 21;
|
|
4511
|
+
}
|
|
4512
|
+
if (reservationMode !== "met_limieten") {
|
|
4513
|
+
const open = algorithm.isDateAvailable(
|
|
4514
|
+
restaurantData,
|
|
4515
|
+
formattedDate,
|
|
4516
|
+
reservations,
|
|
4517
|
+
-1e4,
|
|
4518
|
+
null
|
|
4519
|
+
);
|
|
4520
|
+
return open ? 21 : 0;
|
|
4521
|
+
}
|
|
4522
|
+
const tableSettings = restaurantData?.["table-settings"] || {};
|
|
4523
|
+
const isTableAssignmentEnabled = tableSettings.isInstalled === true && tableSettings.assignmentMode === "automatic" && reservationMode === "met_limieten";
|
|
4524
|
+
let maxFittable = 0;
|
|
4525
|
+
for (let g = 1; g <= 21; g++) {
|
|
4526
|
+
let ok;
|
|
4527
|
+
if (isTableAssignmentEnabled) {
|
|
4528
|
+
ok = algorithm.isDateAvailableWithTableCheck(
|
|
4529
|
+
restaurantData,
|
|
4530
|
+
formattedDate,
|
|
4531
|
+
reservations,
|
|
4532
|
+
g,
|
|
4533
|
+
giftcard || null
|
|
4534
|
+
);
|
|
4535
|
+
} else {
|
|
4536
|
+
ok = algorithm.isDateAvailable(
|
|
4537
|
+
restaurantData,
|
|
4538
|
+
formattedDate,
|
|
4539
|
+
reservations,
|
|
4540
|
+
g,
|
|
4541
|
+
giftcard || null
|
|
4542
|
+
);
|
|
4543
|
+
}
|
|
4544
|
+
if (ok) maxFittable = g;
|
|
4545
|
+
}
|
|
4546
|
+
return maxFittable;
|
|
4547
|
+
};
|
|
4548
|
+
const generateCalendarDays = (currentDate) => {
|
|
4549
|
+
const days2 = [];
|
|
4550
|
+
const today = moment2__default.default().tz("Europe/Amsterdam").startOf("day");
|
|
4551
|
+
const firstDayOfMonth = currentDate.clone().startOf("month");
|
|
4552
|
+
const lastDayOfMonth = currentDate.clone().endOf("month");
|
|
4553
|
+
const tableSettings = restaurantData?.["table-settings"] || {};
|
|
4554
|
+
const isTableAssignmentEnabled = tableSettings.isInstalled === true && tableSettings.assignmentMode === "automatic" && reservationMode === "met_limieten";
|
|
4555
|
+
let date = firstDayOfMonth.clone();
|
|
4556
|
+
while (date.isSameOrBefore(lastDayOfMonth, "day")) {
|
|
4557
|
+
const formattedDate = date.format("YYYY-MM-DD");
|
|
4558
|
+
let isAvailable;
|
|
4559
|
+
if (reservationMode === "vrije_keuze") {
|
|
4560
|
+
isAvailable = date.isBetween(today, maxDate, null, "[]");
|
|
4561
|
+
} else {
|
|
4562
|
+
const adjustedGuests = reservationMode !== "met_limieten" ? -1e4 : guests2;
|
|
4563
|
+
if (isTableAssignmentEnabled) {
|
|
4564
|
+
isAvailable = algorithm.isDateAvailableWithTableCheck(
|
|
4565
|
+
restaurantData,
|
|
4566
|
+
formattedDate,
|
|
4567
|
+
reservations,
|
|
4568
|
+
adjustedGuests,
|
|
4569
|
+
reservationMode === "met_limieten" ? giftcard : null
|
|
4570
|
+
);
|
|
4571
|
+
} else {
|
|
4572
|
+
isAvailable = algorithm.isDateAvailable(
|
|
4573
|
+
restaurantData,
|
|
4574
|
+
formattedDate,
|
|
4575
|
+
reservations,
|
|
4576
|
+
adjustedGuests,
|
|
4577
|
+
reservationMode === "met_limieten" ? giftcard : null
|
|
4578
|
+
);
|
|
4579
|
+
}
|
|
4580
|
+
}
|
|
4581
|
+
const maxGuestsAvailable = computeMaxGuestsForDate(date, today);
|
|
4582
|
+
days2.push({
|
|
4583
|
+
date: date.clone(),
|
|
4584
|
+
isPast: date.isBefore(today, "day"),
|
|
4585
|
+
isFuture: date.isAfter(maxDate, "day"),
|
|
4586
|
+
isAvailable,
|
|
4587
|
+
maxGuestsAvailable
|
|
4588
|
+
});
|
|
4589
|
+
date.add(1, "day");
|
|
4590
|
+
}
|
|
4591
|
+
return days2;
|
|
4592
|
+
};
|
|
4593
|
+
const handleDateClick = (day) => {
|
|
4594
|
+
if (day.isAvailable && !day.isPast && !day.isFuture) {
|
|
4595
|
+
onSelectDate(day.date.format("YYYY-MM-DD"));
|
|
4596
|
+
setIsExpanded(false);
|
|
4597
|
+
setShowAvailabilities(false);
|
|
4598
|
+
}
|
|
4599
|
+
};
|
|
4600
|
+
const handlePrevMonth = () => {
|
|
4601
|
+
const newStartDate = startDate.clone().subtract(1, "month").startOf("month");
|
|
4602
|
+
const today = moment2__default.default().tz("Europe/Amsterdam").startOf("day");
|
|
4603
|
+
if (newStartDate.clone().endOf("month").isBefore(today, "day")) {
|
|
4604
|
+
console.log("Cannot go to previous month. It is in the past.");
|
|
4605
|
+
return;
|
|
4606
|
+
}
|
|
4607
|
+
onWeekChange(newStartDate);
|
|
4608
|
+
};
|
|
4609
|
+
const handleNextMonth = () => {
|
|
4610
|
+
const newStartDate = startDate.clone().add(1, "month").startOf("month");
|
|
4611
|
+
onWeekChange(newStartDate);
|
|
4612
|
+
};
|
|
4613
|
+
const formatDisplayDate = () => {
|
|
4614
|
+
if (!selectedDate) {
|
|
4615
|
+
return t.selectDatePlaceholder;
|
|
4616
|
+
}
|
|
4617
|
+
const selectedMoment = moment2__default.default(selectedDate, "YYYY-MM-DD").tz("Europe/Amsterdam").startOf("day");
|
|
4618
|
+
const today = moment2__default.default().tz("Europe/Amsterdam").startOf("day");
|
|
4619
|
+
const tomorrow = today.clone().add(1, "day");
|
|
4620
|
+
if (selectedMoment.isSame(today, "day")) {
|
|
4621
|
+
return t.today;
|
|
4622
|
+
} else if (selectedMoment.isSame(tomorrow, "day")) {
|
|
4623
|
+
return t.tomorrow;
|
|
4624
|
+
} else {
|
|
4625
|
+
return selectedMoment.format("dddd D MMMM YYYY");
|
|
4626
|
+
}
|
|
4627
|
+
};
|
|
4628
|
+
const renderCalendarGrid = (days2) => {
|
|
4629
|
+
const firstDayOfMonth = startDate.clone().startOf("month");
|
|
4630
|
+
const dayOfWeek = firstDayOfMonth.day();
|
|
4631
|
+
const mondayStartDayOfWeek = dayOfWeek === 0 ? 6 : dayOfWeek - 1;
|
|
4632
|
+
const calendarGrid = [];
|
|
4633
|
+
for (let i = 0; i < mondayStartDayOfWeek; i++) {
|
|
4634
|
+
calendarGrid.push(null);
|
|
4635
|
+
}
|
|
4636
|
+
calendarGrid.push(...days2);
|
|
4637
|
+
const totalCells = calendarGrid.length;
|
|
4638
|
+
const weeksNeeded = Math.ceil(totalCells / 7);
|
|
4639
|
+
while (calendarGrid.length < weeksNeeded * 7) {
|
|
4640
|
+
calendarGrid.push(null);
|
|
4641
|
+
}
|
|
4642
|
+
const weeks2 = [];
|
|
4643
|
+
for (let week = 0; week < weeksNeeded; week++) {
|
|
4644
|
+
const weekDays = calendarGrid.slice(week * 7, week * 7 + 7);
|
|
4645
|
+
weeks2.push(weekDays);
|
|
4646
|
+
}
|
|
4647
|
+
return weeks2;
|
|
4648
|
+
};
|
|
4649
|
+
const days = startDate ? generateCalendarDays(startDate) : [];
|
|
4650
|
+
const weeks = startDate ? renderCalendarGrid(days) : [];
|
|
4651
|
+
const dayHeaders = t.dayHeaders;
|
|
4652
|
+
const renderAvailabilityNumber = (value2) => {
|
|
4653
|
+
if (value2 >= 21) return "20+";
|
|
4654
|
+
return String(value2);
|
|
4655
|
+
};
|
|
4656
|
+
return /* @__PURE__ */ React9__default.default.createElement("div", { className: "calendar-container", ref: calendarRef }, /* @__PURE__ */ React9__default.default.createElement(
|
|
4657
|
+
"div",
|
|
4658
|
+
{
|
|
4659
|
+
className: "calendar-display",
|
|
4660
|
+
onClick: () => setIsExpanded(!isExpanded)
|
|
4661
|
+
},
|
|
4662
|
+
/* @__PURE__ */ React9__default.default.createElement("span", null, formatDisplayDate()),
|
|
4663
|
+
/* @__PURE__ */ React9__default.default.createElement("span", { className: "arrow" }, /* @__PURE__ */ React9__default.default.createElement(
|
|
4664
|
+
"svg",
|
|
4665
|
+
{
|
|
4666
|
+
width: "12",
|
|
4667
|
+
height: "12",
|
|
4668
|
+
viewBox: "0 0 24 24",
|
|
4669
|
+
style: {
|
|
4670
|
+
transform: isExpanded ? "rotate(180deg)" : "rotate(0deg)",
|
|
4671
|
+
transition: "transform 0.2s"
|
|
4672
|
+
}
|
|
4673
|
+
},
|
|
4674
|
+
/* @__PURE__ */ React9__default.default.createElement(
|
|
4675
|
+
"path",
|
|
4676
|
+
{
|
|
4677
|
+
d: "M7 10l5 5 5-5",
|
|
4678
|
+
fill: "none",
|
|
4679
|
+
stroke: "currentColor",
|
|
4680
|
+
strokeWidth: "2"
|
|
4681
|
+
}
|
|
4682
|
+
)
|
|
4683
|
+
))
|
|
4684
|
+
), isExpanded && startDate && /* @__PURE__ */ React9__default.default.createElement("div", { className: "calendar" }, /* @__PURE__ */ React9__default.default.createElement("div", { className: "calendar-header" }, /* @__PURE__ */ React9__default.default.createElement(
|
|
4685
|
+
"button",
|
|
4686
|
+
{
|
|
4687
|
+
type: "button",
|
|
4688
|
+
onClick: handlePrevMonth,
|
|
4689
|
+
"aria-label": t.prevWeek
|
|
4690
|
+
},
|
|
4691
|
+
"<"
|
|
4692
|
+
), /* @__PURE__ */ React9__default.default.createElement("span", null, startDate.format("MMMM YYYY")), /* @__PURE__ */ React9__default.default.createElement(
|
|
4693
|
+
"button",
|
|
4694
|
+
{
|
|
4695
|
+
type: "button",
|
|
4696
|
+
onClick: handleNextMonth,
|
|
4697
|
+
"aria-label": t.nextWeek
|
|
4698
|
+
},
|
|
4699
|
+
">"
|
|
4700
|
+
), /* @__PURE__ */ React9__default.default.createElement(
|
|
4701
|
+
"button",
|
|
4702
|
+
{
|
|
4703
|
+
type: "button",
|
|
4704
|
+
className: `availability-hold-btn ${showAvailabilities ? "active" : ""}`,
|
|
4705
|
+
"aria-pressed": showAvailabilities,
|
|
4706
|
+
"aria-label": "Houd ingedrukt om beschikbaarheden te tonen",
|
|
4707
|
+
onMouseDown: showAvailabilityNow,
|
|
4708
|
+
onMouseUp: () => hideAvailabilityAfterDelay(1e3),
|
|
4709
|
+
onMouseLeave: () => hideAvailabilityAfterDelay(1e3),
|
|
4710
|
+
onTouchStart: showAvailabilityNow,
|
|
4711
|
+
onTouchEnd: () => hideAvailabilityAfterDelay(1e3),
|
|
4712
|
+
onTouchCancel: () => hideAvailabilityAfterDelay(1e3),
|
|
4713
|
+
onKeyDown: (e) => {
|
|
4714
|
+
if (e.key === " " || e.key === "Enter") showAvailabilityNow();
|
|
4715
|
+
},
|
|
4716
|
+
onKeyUp: (e) => {
|
|
4717
|
+
if (e.key === " " || e.key === "Enter")
|
|
4718
|
+
hideAvailabilityAfterDelay(1e3);
|
|
4719
|
+
},
|
|
4720
|
+
style: {
|
|
4721
|
+
fontSize: "15px",
|
|
4722
|
+
color: "gray",
|
|
4723
|
+
fontWeight: "450",
|
|
4724
|
+
textDecoration: "underline"
|
|
4725
|
+
}
|
|
4726
|
+
},
|
|
4727
|
+
t.seatsQuestion
|
|
4728
|
+
)), /* @__PURE__ */ React9__default.default.createElement("div", { className: "calendar-weeks-wrapper" }, /* @__PURE__ */ React9__default.default.createElement("table", { className: "calendar-table" }, /* @__PURE__ */ React9__default.default.createElement("thead", null, /* @__PURE__ */ React9__default.default.createElement("tr", { translate: "no" }, dayHeaders.map((day, i) => /* @__PURE__ */ React9__default.default.createElement("th", { key: i }, day)))), /* @__PURE__ */ React9__default.default.createElement("tbody", null, weeks.map((week, weekIndex) => /* @__PURE__ */ React9__default.default.createElement("tr", { key: weekIndex, translate: "no" }, week.map((dayObj, dayIndex) => {
|
|
4729
|
+
if (!dayObj) {
|
|
4730
|
+
return /* @__PURE__ */ React9__default.default.createElement("td", { key: dayIndex, className: "empty-day" });
|
|
4731
|
+
}
|
|
4732
|
+
const isSelected = selectedDate && isSameDay(
|
|
4733
|
+
dayObj.date,
|
|
4734
|
+
moment2__default.default(selectedDate, "YYYY-MM-DD").tz(
|
|
4735
|
+
"Europe/Amsterdam"
|
|
4736
|
+
)
|
|
4737
|
+
);
|
|
4738
|
+
const classNames = [];
|
|
4739
|
+
if (dayObj.isPast) {
|
|
4740
|
+
classNames.push("gray-out");
|
|
4741
|
+
} else if (dayObj.isAvailable) {
|
|
4742
|
+
classNames.push("available");
|
|
4743
|
+
} else {
|
|
4744
|
+
classNames.push("unavailable");
|
|
4745
|
+
}
|
|
4746
|
+
if (isSelected) {
|
|
4747
|
+
classNames.push("selected");
|
|
4748
|
+
}
|
|
4749
|
+
return /* @__PURE__ */ React9__default.default.createElement(
|
|
4750
|
+
"td",
|
|
4751
|
+
{
|
|
4752
|
+
key: dayIndex,
|
|
4753
|
+
className: classNames.join(" "),
|
|
4754
|
+
onClick: () => handleDateClick(dayObj),
|
|
4755
|
+
style: {
|
|
4756
|
+
"--animation-order": dayIndex + weekIndex * 7
|
|
4757
|
+
}
|
|
4758
|
+
},
|
|
4759
|
+
/* @__PURE__ */ React9__default.default.createElement(
|
|
4760
|
+
"div",
|
|
4761
|
+
{
|
|
4762
|
+
className: `day-square ${showAvailabilities ? "showing-availabilities" : ""}`
|
|
4763
|
+
},
|
|
4764
|
+
/* @__PURE__ */ React9__default.default.createElement("span", { className: "day-number" }, showAvailabilities ? renderAvailabilityNumber(
|
|
4765
|
+
dayObj.maxGuestsAvailable
|
|
4766
|
+
) : dayObj.date.date())
|
|
4767
|
+
)
|
|
4768
|
+
);
|
|
4769
|
+
}))))))));
|
|
4770
|
+
};
|
|
4771
|
+
var Calendar_default = Calendar;
|
|
4772
|
+
|
|
4773
|
+
// src/components/ReservationStepOne/DateSelector.js
|
|
4774
|
+
var import_moment = __toESM(require_moment());
|
|
4775
|
+
var DateSelector = ({
|
|
4776
|
+
guests: guests2,
|
|
4777
|
+
formData,
|
|
4778
|
+
handleChange,
|
|
4779
|
+
resetFormDataFields,
|
|
4780
|
+
restaurantData,
|
|
4781
|
+
reservations,
|
|
4782
|
+
startDate,
|
|
4783
|
+
onWeekChange,
|
|
4784
|
+
reservationMode
|
|
4785
|
+
}) => {
|
|
4786
|
+
const handleDateSelect = (date) => {
|
|
4787
|
+
const formatted = (0, import_moment.default)(date).format("YYYY-MM-DD");
|
|
4788
|
+
console.log("Selected date:", formatted);
|
|
4789
|
+
handleChange({ target: { name: "date", value: formatted } });
|
|
4790
|
+
resetFormDataFields(["time"]);
|
|
4791
|
+
};
|
|
4792
|
+
const monthStartDate = startDate ? startDate.clone().startOf("month") : (0, import_moment.default)().startOf("month");
|
|
4793
|
+
return /* @__PURE__ */ React9__default.default.createElement("div", { className: "form-group date-selector-container" }, /* @__PURE__ */ React9__default.default.createElement(
|
|
4794
|
+
Calendar_default,
|
|
4795
|
+
{
|
|
4796
|
+
guests: guests2,
|
|
4797
|
+
selectedDate: formData.date || null,
|
|
4798
|
+
onSelectDate: handleDateSelect,
|
|
4799
|
+
autoExpand: false,
|
|
4800
|
+
reservationMode,
|
|
4801
|
+
restaurantData,
|
|
4802
|
+
startDate: monthStartDate,
|
|
4803
|
+
onWeekChange,
|
|
4804
|
+
reservations,
|
|
4805
|
+
giftcard: formData.giftcard,
|
|
4806
|
+
zitplaats: formData.zitplaats
|
|
4807
|
+
}
|
|
4808
|
+
));
|
|
4809
|
+
};
|
|
4810
|
+
var DateSelector_default = DateSelector;
|
|
4811
|
+
|
|
4812
|
+
// src/components/ReservationStepOne/css/timeSelector.css
|
|
4813
|
+
styleInject(".new-reservation-page .time-selector-container {\n position: relative;\n}\n.new-reservation-page .time-display {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 10px;\n background-color: #fff;\n border: #ccc 1px solid;\n cursor: pointer;\n user-select: none;\n text-align: left;\n border-radius: 5px;\n}\n.new-reservation-page .time-display span:first-child {\n flex-grow: 1;\n}\n.new-reservation-page .time-selector {\n position: absolute;\n z-index: 1000;\n width: 100%;\n max-height: 300px;\n overflow-y: auto;\n background-color: rgba(255, 255, 255, 1);\n border: 1px solid #ccc;\n margin-top: 5px;\n padding: 10px;\n border-radius: 10px;\n animation: fadeInTimeSelector 0.3s ease-in-out;\n top: 75px;\n}\n@keyframes fadeInTimeSelector {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n.new-reservation-page .time-period {\n margin-bottom: 15px;\n}\n.new-reservation-page .time-period-label {\n font-weight: bold;\n margin-bottom: 5px;\n}\n.new-reservation-page .time-options {\n display: flex;\n flex-wrap: wrap;\n gap: 5px;\n}\n.new-reservation-page .time-option {\n padding: 8px 12px;\n background-color: #ccffcc;\n color: #006600;\n border-radius: 5px;\n cursor: pointer;\n transition: background-color 0.2s ease;\n}\n.new-reservation-page .time-option:hover {\n background-color: #b3ffb3;\n}\n.new-reservation-page .time-option.selected {\n background-color: #006600;\n color: #ccffcc;\n}\n.new-reservation-page .info-text {\n color: #666;\n font-style: italic;\n}\n.new-reservation-page .arrow {\n margin-left: auto;\n color: gray;\n display: flex;\n align-items: center;\n}\n@media screen and (max-width: 480px) {\n .new-reservation-page .time-option {\n padding: 6px 10px;\n font-size: 14px;\n }\n}\n");
|
|
4814
|
+
var TimeSelector = ({
|
|
4815
|
+
guests: guests2,
|
|
4816
|
+
formData,
|
|
4817
|
+
handleChange,
|
|
4818
|
+
field,
|
|
4819
|
+
selectedDate,
|
|
4820
|
+
expanded,
|
|
4821
|
+
setCurrentExpandedField,
|
|
4822
|
+
restaurantData,
|
|
4823
|
+
reservations,
|
|
4824
|
+
reservationMode
|
|
4825
|
+
}) => {
|
|
4826
|
+
const lang = localStorage.getItem("preferredLanguage") || "nl";
|
|
4827
|
+
const t = translations_default[lang].timeSelector;
|
|
4828
|
+
const [isExpanded, setIsExpanded] = React9.useState(expanded || false);
|
|
4829
|
+
const [availableTimes, setAvailableTimes] = React9.useState([]);
|
|
4830
|
+
const [selectedMealPeriod, setSelectedMealPeriod] = React9.useState(null);
|
|
4831
|
+
const timeSelectorRef = React9.useRef(null);
|
|
4832
|
+
const shifts = {
|
|
4833
|
+
breakfast: { start: "07:00", end: "11:00", label: t.shifts.breakfast },
|
|
4834
|
+
lunch: { start: "11:00", end: "16:00", label: t.shifts.lunch },
|
|
4835
|
+
dinner: { start: "16:00", end: "23:00", label: t.shifts.dinner }
|
|
4836
|
+
};
|
|
4837
|
+
React9.useEffect(() => {
|
|
4838
|
+
if (!selectedDate || !guests2) {
|
|
4839
|
+
setAvailableTimes([]);
|
|
4840
|
+
return;
|
|
4841
|
+
}
|
|
4842
|
+
if (reservationMode === "vrije_keuze") {
|
|
4843
|
+
if (selectedMealPeriod) {
|
|
4844
|
+
const shift = shifts[selectedMealPeriod];
|
|
4845
|
+
const start = luxon.DateTime.fromISO(`${selectedDate}T${shift.start}`, {
|
|
4846
|
+
zone: "Europe/Brussels"
|
|
4847
|
+
});
|
|
4848
|
+
const end = luxon.DateTime.fromISO(`${selectedDate}T${shift.end}`, {
|
|
4849
|
+
zone: "Europe/Brussels"
|
|
4850
|
+
});
|
|
4851
|
+
const times = [];
|
|
4852
|
+
let current = start;
|
|
4853
|
+
while (current < end) {
|
|
4854
|
+
times.push({
|
|
4855
|
+
value: current.toFormat("HH:mm"),
|
|
4856
|
+
label: current.toFormat("HH:mm")
|
|
4857
|
+
});
|
|
4858
|
+
current = current.plus({ minutes: 15 });
|
|
4859
|
+
}
|
|
4860
|
+
setAvailableTimes(times);
|
|
4861
|
+
} else {
|
|
4862
|
+
setAvailableTimes([]);
|
|
4863
|
+
}
|
|
4864
|
+
} else {
|
|
4865
|
+
if (restaurantData && reservations) {
|
|
4866
|
+
const adjustedGuests = reservationMode !== "met_limieten" ? -1e4 : guests2;
|
|
4867
|
+
const tableSettings = restaurantData?.["table-settings"] || {};
|
|
4868
|
+
const shouldUseTableFiltering = reservationMode === "met_limieten" && tableSettings.isInstalled === true && tableSettings.assignmentMode === "automatic";
|
|
4869
|
+
const selectedGiftcard = reservationMode === "met_limieten" ? formData.giftcard : null;
|
|
4870
|
+
const timeblocks = algorithm.getAvailableTimeblocks(
|
|
4871
|
+
restaurantData,
|
|
4872
|
+
selectedDate,
|
|
4873
|
+
reservations,
|
|
4874
|
+
adjustedGuests,
|
|
4875
|
+
selectedGiftcard
|
|
4876
|
+
);
|
|
4877
|
+
const filtered = shouldUseTableFiltering ? algorithm.getAvailableTimeblocksWithTableCheck(
|
|
4878
|
+
restaurantData,
|
|
4879
|
+
selectedDate,
|
|
4880
|
+
timeblocks,
|
|
4881
|
+
adjustedGuests,
|
|
4882
|
+
reservations
|
|
4883
|
+
) : timeblocks;
|
|
4884
|
+
const times = Object.keys(filtered).map((time) => ({
|
|
4885
|
+
value: time,
|
|
4886
|
+
label: filtered[time].name || time
|
|
4887
|
+
}));
|
|
4888
|
+
times.sort((a, b) => {
|
|
4889
|
+
const [aH, aM] = a.value.split(":").map(Number);
|
|
4890
|
+
const [bH, bM] = b.value.split(":").map(Number);
|
|
4891
|
+
return aH * 60 + aM - (bH * 60 + bM);
|
|
4892
|
+
});
|
|
4893
|
+
setAvailableTimes(times);
|
|
4894
|
+
if (formData[field.id] && !times.some((ti) => ti.value === formData[field.id])) {
|
|
4895
|
+
handleChange({ target: { name: field.id, value: "" } });
|
|
4896
|
+
}
|
|
4897
|
+
} else {
|
|
4898
|
+
setAvailableTimes([]);
|
|
4899
|
+
}
|
|
4900
|
+
}
|
|
4901
|
+
}, [
|
|
4902
|
+
selectedDate,
|
|
4903
|
+
guests2,
|
|
4904
|
+
restaurantData,
|
|
4905
|
+
reservations,
|
|
4906
|
+
reservationMode,
|
|
4907
|
+
field.id,
|
|
4908
|
+
selectedMealPeriod,
|
|
4909
|
+
// only track the specific time value (not the whole formData) to avoid seat-triggered reruns
|
|
4910
|
+
formData[field.id],
|
|
4911
|
+
handleChange
|
|
4912
|
+
]);
|
|
4913
|
+
React9.useEffect(() => {
|
|
4914
|
+
if (reservationMode === "vrije_keuze") {
|
|
4915
|
+
setSelectedMealPeriod(null);
|
|
4916
|
+
if (formData[field.id]) {
|
|
4917
|
+
handleChange({ target: { name: field.id, value: "" } });
|
|
4918
|
+
}
|
|
4919
|
+
}
|
|
4920
|
+
}, [selectedDate, reservationMode]);
|
|
4921
|
+
const handleTimeSelect = (timeValue) => {
|
|
4922
|
+
handleChange({ target: { name: field.id, value: timeValue } });
|
|
4923
|
+
setIsExpanded(false);
|
|
4924
|
+
setCurrentExpandedField?.(null);
|
|
4925
|
+
};
|
|
4926
|
+
const handleMealPeriodSelect = (period) => {
|
|
4927
|
+
if (selectedMealPeriod !== period && formData[field.id]) {
|
|
4928
|
+
handleChange({ target: { name: field.id, value: "" } });
|
|
4929
|
+
}
|
|
4930
|
+
setSelectedMealPeriod(period);
|
|
4931
|
+
};
|
|
4932
|
+
const formatDisplayTime = () => {
|
|
4933
|
+
if (reservationMode === "vrije_keuze") {
|
|
4934
|
+
if (!selectedMealPeriod) {
|
|
4935
|
+
return t.selectMeal;
|
|
4936
|
+
}
|
|
4937
|
+
if (formData[field.id]) {
|
|
4938
|
+
return `${shifts[selectedMealPeriod].label} \u2013 ${formData[field.id]}`;
|
|
4939
|
+
}
|
|
4940
|
+
return `${shifts[selectedMealPeriod].label} \u2013 ${t.selectTime}`;
|
|
4941
|
+
} else {
|
|
4942
|
+
if (formData[field.id]) {
|
|
4943
|
+
const sel = availableTimes.find(
|
|
4944
|
+
(time) => time.value === formData[field.id]
|
|
4945
|
+
);
|
|
4946
|
+
return sel ? sel.label : t.selectTime;
|
|
4947
|
+
}
|
|
4948
|
+
return t.selectTime;
|
|
4949
|
+
}
|
|
4950
|
+
};
|
|
4951
|
+
if (!field) return null;
|
|
4952
|
+
return /* @__PURE__ */ React9__default.default.createElement("div", { className: "form-group time-selector-container", ref: timeSelectorRef }, !selectedDate ? /* @__PURE__ */ React9__default.default.createElement("p", { className: "info-text" }, t.noDateSelected) : /* @__PURE__ */ React9__default.default.createElement(React9__default.default.Fragment, null, /* @__PURE__ */ React9__default.default.createElement(
|
|
4953
|
+
"div",
|
|
4954
|
+
{
|
|
4955
|
+
className: "time-display",
|
|
4956
|
+
onClick: () => {
|
|
4957
|
+
setIsExpanded(!isExpanded);
|
|
4958
|
+
if (!isExpanded) setCurrentExpandedField?.(field.id);
|
|
4959
|
+
}
|
|
4960
|
+
},
|
|
4961
|
+
/* @__PURE__ */ React9__default.default.createElement("span", null, formatDisplayTime()),
|
|
4962
|
+
/* @__PURE__ */ React9__default.default.createElement("span", { className: "arrow" }, /* @__PURE__ */ React9__default.default.createElement(
|
|
4963
|
+
"svg",
|
|
4964
|
+
{
|
|
4965
|
+
width: "12",
|
|
4966
|
+
height: "12",
|
|
4967
|
+
viewBox: "0 0 24 24",
|
|
4968
|
+
style: {
|
|
4969
|
+
transform: isExpanded ? "rotate(180deg)" : "rotate(0deg)",
|
|
4970
|
+
transition: "transform 0.2s"
|
|
4971
|
+
}
|
|
4972
|
+
},
|
|
4973
|
+
/* @__PURE__ */ React9__default.default.createElement(
|
|
4974
|
+
"path",
|
|
4975
|
+
{
|
|
4976
|
+
d: "M7 10l5 5 5-5",
|
|
4977
|
+
fill: "none",
|
|
4978
|
+
stroke: "currentColor",
|
|
4979
|
+
strokeWidth: "2"
|
|
4980
|
+
}
|
|
4981
|
+
)
|
|
4982
|
+
))
|
|
4983
|
+
), isExpanded && /* @__PURE__ */ React9__default.default.createElement("div", { className: "time-selector" }, reservationMode === "vrije_keuze" ? selectedMealPeriod ? /* @__PURE__ */ React9__default.default.createElement("div", { className: "time-period" }, /* @__PURE__ */ React9__default.default.createElement("div", { className: "time-period-label" }, shifts[selectedMealPeriod].label, /* @__PURE__ */ React9__default.default.createElement(
|
|
4984
|
+
"button",
|
|
4985
|
+
{
|
|
4986
|
+
onClick: () => setSelectedMealPeriod(null),
|
|
4987
|
+
style: {
|
|
4988
|
+
marginLeft: "10px",
|
|
4989
|
+
background: "none",
|
|
4990
|
+
border: "none",
|
|
4991
|
+
cursor: "pointer",
|
|
4992
|
+
color: "#006600",
|
|
4993
|
+
fontSize: "0.9rem",
|
|
4994
|
+
padding: 0
|
|
4995
|
+
}
|
|
4996
|
+
},
|
|
4997
|
+
"\u2190 ",
|
|
4998
|
+
t.back
|
|
4999
|
+
)), /* @__PURE__ */ React9__default.default.createElement("div", { className: "time-options" }, availableTimes.length === 0 ? /* @__PURE__ */ React9__default.default.createElement("div", { className: "no-times" }, t.noTimes) : availableTimes.map((time) => /* @__PURE__ */ React9__default.default.createElement(
|
|
5000
|
+
"div",
|
|
5001
|
+
{
|
|
5002
|
+
key: time.value,
|
|
5003
|
+
className: `time-option ${formData[field.id] === time.value ? "selected" : ""}`,
|
|
5004
|
+
onClick: () => handleTimeSelect(time.value)
|
|
5005
|
+
},
|
|
5006
|
+
time.label
|
|
5007
|
+
)))) : /* @__PURE__ */ React9__default.default.createElement("div", { className: "time-options" }, Object.keys(shifts).map((period) => /* @__PURE__ */ React9__default.default.createElement(
|
|
5008
|
+
"div",
|
|
5009
|
+
{
|
|
5010
|
+
key: period,
|
|
5011
|
+
className: `time-option ${selectedMealPeriod === period ? "selected" : ""}`,
|
|
5012
|
+
onClick: () => handleMealPeriodSelect(period)
|
|
5013
|
+
},
|
|
5014
|
+
shifts[period].label
|
|
5015
|
+
))) : /* @__PURE__ */ React9__default.default.createElement("div", { className: "time-options" }, availableTimes.length === 0 ? /* @__PURE__ */ React9__default.default.createElement("div", { className: "no-times" }, t.noTimes) : availableTimes.map((time) => /* @__PURE__ */ React9__default.default.createElement(
|
|
5016
|
+
"div",
|
|
5017
|
+
{
|
|
5018
|
+
key: time.value,
|
|
5019
|
+
className: `time-option ${formData[field.id] === time.value ? "selected" : ""}`,
|
|
5020
|
+
onClick: () => handleTimeSelect(time.value)
|
|
5021
|
+
},
|
|
5022
|
+
time.label
|
|
5023
|
+
))))));
|
|
5024
|
+
};
|
|
5025
|
+
var TimeSelector_default = TimeSelector;
|
|
5026
|
+
|
|
5027
|
+
// src/components/ReservationStepOne/css/tableSelector.css
|
|
5028
|
+
styleInject(".new-reservation-page .table-selector-container {\n margin-top: 15px;\n padding: 10px;\n border: 1px solid #eee;\n border-radius: 4px;\n background-color: #f9f9f9;\n}\n.new-reservation-page .table-selector-label {\n display: block;\n margin-bottom: 10px;\n font-weight: bold;\n color: #333;\n font-size: 0.95rem;\n}\n.new-reservation-page .table-options {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n}\n.new-reservation-page .table-option {\n display: inline-block;\n margin-right: 15px;\n margin-bottom: 5px;\n padding: 5px 8px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background-color: #fff;\n transition: background-color 0.2s ease;\n}\n.new-reservation-page .table-option label {\n display: flex;\n align-items: center;\n cursor: pointer;\n font-size: 0.9rem;\n color: #555;\n}\n.new-reservation-page .table-option input[type=checkbox] {\n margin-right: 8px;\n cursor: pointer;\n accent-color: var(--primary-color, #006600);\n}\n.new-reservation-page .table-option:has(input[type=checkbox]:checked) {\n background-color: #e0f2e0;\n border-color: #006600;\n}\n.new-reservation-page .table-option:hover {\n background-color: #f0f0f0;\n}\n.new-reservation-page .info-text {\n margin-top: 10px;\n font-size: 0.85rem;\n color: #666;\n}\n.new-reservation-page .selected-tables-info {\n margin-top: 10px;\n font-style: italic;\n}\n.new-reservation-page .info-text.loading-tables {\n font-style: italic;\n color: #006600;\n}\n");
|
|
5029
|
+
|
|
5030
|
+
// src/components/ReservationStepOne/TableSelector.js
|
|
5031
|
+
var TableSelector = ({
|
|
5032
|
+
availableTables = [],
|
|
5033
|
+
isFetching = false,
|
|
5034
|
+
formData = {},
|
|
5035
|
+
handleChange,
|
|
5036
|
+
setFormData
|
|
5037
|
+
// optional fallback if handleChange not provided
|
|
5038
|
+
}) => {
|
|
5039
|
+
const lang = localStorage.getItem("preferredLanguage") || "nl";
|
|
5040
|
+
const troot = translations_default?.[lang]?.tableSelector || {};
|
|
5041
|
+
const t = {
|
|
5042
|
+
label: troot.label || "Tafels",
|
|
5043
|
+
noTables: troot.noTables || "Geen tafels beschikbaar voor deze selectie.",
|
|
5044
|
+
table: troot.table || "Tafel",
|
|
5045
|
+
max: troot.max || "Max"
|
|
5046
|
+
};
|
|
5047
|
+
const selectedNumbers = Array.isArray(formData.selectedTableNumbers) ? formData.selectedTableNumbers : [];
|
|
5048
|
+
const selectedIds = Array.isArray(formData.selectedTableIds) ? formData.selectedTableIds : [];
|
|
5049
|
+
const updateSelection = (nextNums, nextIds) => {
|
|
5050
|
+
if (typeof handleChange === "function") {
|
|
5051
|
+
handleChange({
|
|
5052
|
+
target: {
|
|
5053
|
+
multiple: true,
|
|
5054
|
+
updates: {
|
|
5055
|
+
selectedTableNumbers: nextNums,
|
|
5056
|
+
selectedTableIds: nextIds
|
|
5057
|
+
}
|
|
5058
|
+
}
|
|
5059
|
+
});
|
|
5060
|
+
return;
|
|
5061
|
+
}
|
|
5062
|
+
if (typeof setFormData === "function") {
|
|
5063
|
+
setFormData((prev) => ({
|
|
5064
|
+
...prev,
|
|
5065
|
+
selectedTableNumbers: nextNums,
|
|
5066
|
+
selectedTableIds: nextIds
|
|
5067
|
+
}));
|
|
5068
|
+
}
|
|
5069
|
+
};
|
|
5070
|
+
const onToggle = (tableNumber) => (e) => {
|
|
5071
|
+
const checked = e.target.checked;
|
|
5072
|
+
const table = availableTables.find((t2) => t2.tableNumber === tableNumber);
|
|
5073
|
+
if (!table) return;
|
|
5074
|
+
let nextNums = [...selectedNumbers];
|
|
5075
|
+
let nextIds = [...selectedIds];
|
|
5076
|
+
if (checked) {
|
|
5077
|
+
if (!nextNums.includes(tableNumber)) nextNums.push(tableNumber);
|
|
5078
|
+
if (!nextIds.includes(table.tableId)) nextIds.push(table.tableId);
|
|
5079
|
+
} else {
|
|
5080
|
+
nextNums = nextNums.filter((n) => n !== tableNumber);
|
|
5081
|
+
nextIds = nextIds.filter((id) => id !== table.tableId);
|
|
5082
|
+
}
|
|
5083
|
+
nextNums.sort((a, b) => a - b);
|
|
5084
|
+
updateSelection(nextNums, nextIds);
|
|
5085
|
+
};
|
|
5086
|
+
if (isFetching) {
|
|
5087
|
+
return /* @__PURE__ */ React9__default.default.createElement("div", { className: "form-group table-selector-container" }, /* @__PURE__ */ React9__default.default.createElement("label", { className: "table-selector-label" }, t.label), /* @__PURE__ */ React9__default.default.createElement("p", { className: "info-text" }, "Laden\u2026"));
|
|
5088
|
+
}
|
|
5089
|
+
if (!availableTables || availableTables.length === 0) {
|
|
5090
|
+
return /* @__PURE__ */ React9__default.default.createElement("div", { className: "form-group table-selector-container" }, /* @__PURE__ */ React9__default.default.createElement("label", { className: "table-selector-label" }, t.label), /* @__PURE__ */ React9__default.default.createElement("p", { className: "info-text" }, t.noTables));
|
|
5091
|
+
}
|
|
5092
|
+
return /* @__PURE__ */ React9__default.default.createElement("div", { className: "form-group table-selector-container" }, /* @__PURE__ */ React9__default.default.createElement("label", { className: "table-selector-label" }, t.label), /* @__PURE__ */ React9__default.default.createElement("div", { className: "table-options" }, availableTables.map((table) => {
|
|
5093
|
+
const number = table.tableNumber;
|
|
5094
|
+
const maxCapacity = table.maxCapacity ?? table.capacity ?? table.seats ?? "-";
|
|
5095
|
+
const checked = selectedNumbers.includes(number);
|
|
5096
|
+
return /* @__PURE__ */ React9__default.default.createElement("div", { key: `${table.tableId || number}`, className: "table-option" }, /* @__PURE__ */ React9__default.default.createElement("label", null, /* @__PURE__ */ React9__default.default.createElement(
|
|
5097
|
+
"input",
|
|
5098
|
+
{
|
|
5099
|
+
type: "checkbox",
|
|
5100
|
+
value: number,
|
|
5101
|
+
checked,
|
|
5102
|
+
onChange: onToggle(number)
|
|
5103
|
+
}
|
|
5104
|
+
), t.table, " ", number, " (", t.max, ": ", maxCapacity, ")"));
|
|
5105
|
+
})));
|
|
5106
|
+
};
|
|
5107
|
+
var TableSelector_default = TableSelector;
|
|
5108
|
+
|
|
4164
5109
|
// src/components/ReservationStepOne/css/reservationMode.css
|
|
4165
5110
|
styleInject(".new-reservation-page .form-row .field-label {\n display: block;\n margin-bottom: 6px;\n font-weight: 600;\n}\n.new-reservation-page .form-row .reservation-mode-buttons {\n margin-top: 0;\n}\n.new-reservation-page .reservation-mode-buttons {\n display: flex;\n gap: 10px;\n margin-top: 10px;\n}\n.new-reservation-page .reservation-mode-button {\n flex: 1;\n padding: 10px;\n border: 1px solid #ccc;\n border-radius: var(--border-radius);\n background-color: var(--color-white);\n cursor: pointer;\n font-size: 1rem;\n transition: background-color 0.3s ease, color 0.3s ease;\n}\n.new-reservation-page .reservation-mode-button.active,\n.new-reservation-page .reservation-mode-button:hover {\n background-color: var(--color-blue);\n color: var(--color-white);\n}\n.new-reservation-page .reservation-modes-container {\n display: flex;\n flex-wrap: wrap;\n margin: 0 -5px;\n width: 100%;\n}\n.new-reservation-page .reservation-mode-button {\n flex: 0 0 calc(50% - 10px);\n margin: 5px;\n padding: 10px;\n box-sizing: border-box;\n text-align: center;\n border: 1px solid #ccc;\n background: #f7f7f7;\n cursor: pointer;\n}\n.new-reservation-page .reservation-mode-button:nth-child(3) {\n flex: 0 0 100%;\n}\n.new-reservation-page .reservation-modes-container {\n display: flex;\n flex-wrap: wrap;\n margin: 0 -5px;\n width: 100%;\n}\n.new-reservation-page .reservation-mode-button {\n flex: 0 0 calc(50% - 10px);\n margin: 5px;\n padding: 10px;\n box-sizing: border-box;\n text-align: center;\n border: 1px solid #ccc;\n background: #f7f7f7;\n cursor: pointer;\n}\n.new-reservation-page .reservation-mode-button.active,\n.new-reservation-page .reservation-mode-button:hover {\n background-color: var(--color-blue);\n color: var(--color-white);\n}\n.new-reservation-page .unlimited-mode-warning {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n margin: 15px 0;\n padding: 12px 15px;\n background-color: #fff3cd;\n border: 1px solid #ffeaa7;\n border-radius: var(--border-radius, 4px);\n border-left: 4px solid #e67e22;\n font-size: 0.9rem;\n line-height: 1.4;\n}\n.new-reservation-page .unlimited-mode-warning .warning-icon {\n color: #e67e22;\n font-size: 1.1rem;\n margin-top: 2px;\n flex-shrink: 0;\n}\n.new-reservation-page .unlimited-mode-warning .warning-text {\n color: #856404;\n margin: 0;\n}\n@media screen and (max-width: 480px) {\n .new-reservation-page .unlimited-mode-warning {\n margin: 10px 0;\n padding: 10px 12px;\n font-size: 0.85rem;\n }\n .new-reservation-page .unlimited-mode-warning .warning-icon {\n font-size: 1rem;\n }\n}\n.new-reservation-page .reservation-sidebar-component {\n position: fixed;\n top: 0;\n right: -400px;\n width: 400px;\n height: 100%;\n background-color: #fff;\n box-shadow: -2px 0 5px rgba(0, 0, 0, 0.1);\n z-index: var(--z-index-sidebar-reservation);\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n transition: right 0.3s ease-in-out;\n}\n.new-reservation-page .admin-title {\n text-align: center;\n margin-bottom: 30px;\n}\n.new-reservation-page .reservation-sidebar-component.open {\n right: 0;\n}\n.new-reservation-page .reservation-sidebar-content {\n padding: 20px;\n padding-top: 60px;\n}\n.new-reservation-page .close-sidebar-button {\n position: absolute;\n top: 10px;\n left: 10px;\n background-color: transparent;\n border: none;\n cursor: pointer;\n}\n.new-reservation-page .close-sidebar-button svg {\n color: #000;\n}\n.new-reservation-page .sidebar-section-one,\n.new-reservation-page .sidebar-section-two {\n margin-bottom: 20px;\n}\n.new-reservation-page .reservation-footer {\n margin-top: auto;\n}\n.new-reservation-page .store-reservation-button {\n width: 100%;\n padding: 12px;\n background-color: var(--color-blue);\n color: #fff;\n border: none;\n border-radius: 5px;\n cursor: pointer;\n font-size: 1.1rem;\n}\n.new-reservation-page .open-sidebar-button {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background-color: var(--color-blue);\n color: #fff;\n border: none;\n border-radius: 50%;\n width: 50px;\n height: 50px;\n cursor: pointer;\n z-index: var(--z-index-modal) !important;\n transition: all 0.3s ease;\n}\n.new-reservation-page .open-sidebar-button:hover {\n background-color: var(--color-blue-hover-accent) !important;\n}\n.new-reservation-page .open-sidebar-button svg {\n position: relative;\n top: 2px;\n}\n@media screen and (max-width: 480px) {\n .new-reservation-page .reservation-sidebar-component {\n width: 100%;\n }\n}\n.new-reservation-page .sidebar-section-personeel {\n margin-bottom: 10px;\n}\n");
|
|
4166
5111
|
|
|
4167
|
-
// src/components/ReservationStepOne/
|
|
5112
|
+
// src/components/ReservationStepOne/index.js
|
|
5113
|
+
var import_moment2 = __toESM(require_moment());
|
|
5114
|
+
var useApi = () => {
|
|
5115
|
+
const getJwtToken = React9.useCallback(() => {
|
|
5116
|
+
return localStorage.getItem("accessToken");
|
|
5117
|
+
}, []);
|
|
5118
|
+
const get = React9.useCallback(
|
|
5119
|
+
(endpoint, config = {}) => {
|
|
5120
|
+
const { params, ...axiosConfig } = config;
|
|
5121
|
+
const token = getJwtToken();
|
|
5122
|
+
return axios__default.default.get(endpoint, {
|
|
5123
|
+
...axiosConfig,
|
|
5124
|
+
params,
|
|
5125
|
+
headers: {
|
|
5126
|
+
...axiosConfig.headers,
|
|
5127
|
+
...token ? { Authorization: `Bearer ${token}` } : {}
|
|
5128
|
+
}
|
|
5129
|
+
}).then((response) => response.data).catch((error) => {
|
|
5130
|
+
console.error("Error fetching data:", error);
|
|
5131
|
+
throw error;
|
|
5132
|
+
});
|
|
5133
|
+
},
|
|
5134
|
+
[getJwtToken]
|
|
5135
|
+
);
|
|
5136
|
+
const mutate = React9.useCallback(
|
|
5137
|
+
(method, endpoint, data = null, config = {}) => {
|
|
5138
|
+
const token = getJwtToken();
|
|
5139
|
+
return axios__default.default({
|
|
5140
|
+
method,
|
|
5141
|
+
url: endpoint,
|
|
5142
|
+
data,
|
|
5143
|
+
...config,
|
|
5144
|
+
headers: {
|
|
5145
|
+
...config.headers,
|
|
5146
|
+
...token ? { Authorization: `Bearer ${token}` } : {}
|
|
5147
|
+
}
|
|
5148
|
+
}).then((response) => response.data).catch((error) => {
|
|
5149
|
+
console.error(`Error with ${method} request:`, error);
|
|
5150
|
+
throw error;
|
|
5151
|
+
});
|
|
5152
|
+
},
|
|
5153
|
+
[getJwtToken]
|
|
5154
|
+
);
|
|
5155
|
+
const apiMethods = React9.useMemo(
|
|
5156
|
+
() => ({
|
|
5157
|
+
get,
|
|
5158
|
+
post: (endpoint, data, config) => mutate("POST", endpoint, data, config),
|
|
5159
|
+
put: (endpoint, data, config) => mutate("PUT", endpoint, data, config),
|
|
5160
|
+
patch: (endpoint, data, config) => mutate("PATCH", endpoint, data, config),
|
|
5161
|
+
delete: (endpoint, config) => mutate("DELETE", endpoint, null, config)
|
|
5162
|
+
}),
|
|
5163
|
+
[get, mutate]
|
|
5164
|
+
);
|
|
5165
|
+
return apiMethods;
|
|
5166
|
+
};
|
|
5167
|
+
var useApi_default = useApi;
|
|
4168
5168
|
var ReservationStepOne = ({
|
|
4169
5169
|
formData,
|
|
4170
5170
|
errors,
|
|
4171
5171
|
handleChange,
|
|
5172
|
+
handleStepOneSubmit,
|
|
4172
5173
|
setFormData,
|
|
4173
|
-
|
|
4174
|
-
|
|
5174
|
+
timeblocks,
|
|
5175
|
+
loadingTimeblocks,
|
|
5176
|
+
timeblocksError,
|
|
5177
|
+
restaurantData
|
|
4175
5178
|
}) => {
|
|
4176
|
-
const
|
|
4177
|
-
const
|
|
4178
|
-
const
|
|
4179
|
-
const
|
|
4180
|
-
const
|
|
4181
|
-
|
|
4182
|
-
|
|
4183
|
-
|
|
5179
|
+
const lang = localStorage.getItem("preferredLanguage") || "nl";
|
|
5180
|
+
const t = translations_default[lang].reservationStepOne;
|
|
5181
|
+
const [guests2, setGuests] = React9.useState(formData.guests || 2);
|
|
5182
|
+
const [startDate, setStartDate] = React9.useState(null);
|
|
5183
|
+
const [reservations, setReservations] = React9.useState([]);
|
|
5184
|
+
const api = useApi_default();
|
|
5185
|
+
const [availableTables, setAvailableTables] = React9.useState([]);
|
|
5186
|
+
const [isFetchingTables, setIsFetchingTables] = React9.useState(false);
|
|
5187
|
+
const initializationDone = React9.useRef(false);
|
|
5188
|
+
const resetFormDataFields = React9.useCallback(
|
|
5189
|
+
(fieldsToReset) => {
|
|
5190
|
+
setFormData((prevFormData) => {
|
|
5191
|
+
const newFormData = { ...prevFormData };
|
|
5192
|
+
fieldsToReset.forEach((field) => {
|
|
5193
|
+
newFormData[field] = "";
|
|
5194
|
+
});
|
|
5195
|
+
if (fieldsToReset.includes("date") || fieldsToReset.includes("time") || fieldsToReset.includes("guests")) {
|
|
5196
|
+
newFormData.selectedTableNumbers = [];
|
|
5197
|
+
newFormData.selectedTableIds = [];
|
|
5198
|
+
setAvailableTables([]);
|
|
5199
|
+
}
|
|
5200
|
+
return newFormData;
|
|
5201
|
+
});
|
|
5202
|
+
},
|
|
5203
|
+
[setFormData]
|
|
5204
|
+
);
|
|
5205
|
+
React9.useEffect(() => {
|
|
5206
|
+
const today = (0, import_moment2.default)().tz("Europe/Amsterdam").startOf("day");
|
|
5207
|
+
let firstWeekStart = today.clone().startOf("isoWeek");
|
|
5208
|
+
while (isWeekInPast(firstWeekStart)) {
|
|
5209
|
+
firstWeekStart.add(1, "week");
|
|
5210
|
+
}
|
|
5211
|
+
setStartDate(firstWeekStart);
|
|
5212
|
+
}, []);
|
|
5213
|
+
React9.useEffect(() => {
|
|
5214
|
+
const fetchReservations = async () => {
|
|
5215
|
+
if (startDate && (formData.reservationMode === "met_limieten" || formData.reservationMode === "zonder_regels")) {
|
|
5216
|
+
const tableSettings2 = restaurantData?.["table-settings"] || {};
|
|
5217
|
+
const isAutomaticAssignment = tableSettings2.isInstalled === true && tableSettings2.assignmentMode === "automatic";
|
|
5218
|
+
if (formData.reservationMode === "met_limieten" || formData.reservationMode === "zonder_regels" && isAutomaticAssignment) {
|
|
5219
|
+
const beginDate = startDate.format("YYYY-MM-DD");
|
|
5220
|
+
const endDate = startDate.clone().add(13, "days").format("YYYY-MM-DD");
|
|
5221
|
+
const restaurantId = localStorage.getItem("username");
|
|
5222
|
+
const endpoint = `${window.baseDomain}api/slots/${restaurantId}/${beginDate}/${endDate}`;
|
|
5223
|
+
try {
|
|
5224
|
+
const data = await api.get(endpoint, { noCache: true });
|
|
5225
|
+
setReservations(data || []);
|
|
5226
|
+
} catch (error) {
|
|
5227
|
+
console.error("Error fetching reservations:", error);
|
|
5228
|
+
setReservations([]);
|
|
5229
|
+
}
|
|
5230
|
+
} else {
|
|
5231
|
+
setReservations([]);
|
|
5232
|
+
}
|
|
5233
|
+
} else {
|
|
5234
|
+
setReservations([]);
|
|
5235
|
+
}
|
|
5236
|
+
};
|
|
5237
|
+
fetchReservations();
|
|
5238
|
+
}, [startDate, api, formData.reservationMode, restaurantData]);
|
|
5239
|
+
const handleWeekChange = (newStartDate) => {
|
|
5240
|
+
setStartDate(newStartDate);
|
|
5241
|
+
resetFormDataFields([
|
|
5242
|
+
"date",
|
|
5243
|
+
"time",
|
|
5244
|
+
"selectedTableNumbers",
|
|
5245
|
+
"selectedTableIds"
|
|
5246
|
+
]);
|
|
5247
|
+
};
|
|
5248
|
+
React9.useEffect(() => {
|
|
5249
|
+
if (!initializationDone.current) {
|
|
5250
|
+
let needsUpdate = false;
|
|
5251
|
+
const updates = {};
|
|
5252
|
+
if (!formData.reservationMode) {
|
|
5253
|
+
updates.reservationMode = "met_limieten";
|
|
5254
|
+
needsUpdate = true;
|
|
5255
|
+
}
|
|
5256
|
+
if (!formData.guests || formData.guests === "") {
|
|
5257
|
+
updates.guests = guests2;
|
|
5258
|
+
needsUpdate = true;
|
|
5259
|
+
}
|
|
5260
|
+
if (!Array.isArray(formData.selectedTableNumbers)) {
|
|
5261
|
+
updates.selectedTableNumbers = [];
|
|
5262
|
+
needsUpdate = true;
|
|
5263
|
+
}
|
|
5264
|
+
if (!Array.isArray(formData.selectedTableIds)) {
|
|
5265
|
+
updates.selectedTableIds = [];
|
|
5266
|
+
needsUpdate = true;
|
|
5267
|
+
}
|
|
5268
|
+
if (needsUpdate) {
|
|
5269
|
+
setTimeout(() => {
|
|
5270
|
+
handleChange({ target: { multiple: true, updates } });
|
|
5271
|
+
}, 0);
|
|
5272
|
+
initializationDone.current = true;
|
|
5273
|
+
} else {
|
|
5274
|
+
initializationDone.current = true;
|
|
5275
|
+
}
|
|
5276
|
+
}
|
|
5277
|
+
}, [
|
|
5278
|
+
formData.reservationMode,
|
|
5279
|
+
formData.guests,
|
|
5280
|
+
formData.selectedTableNumbers,
|
|
5281
|
+
formData.selectedTableIds,
|
|
5282
|
+
guests2,
|
|
5283
|
+
handleChange
|
|
5284
|
+
]);
|
|
5285
|
+
React9.useEffect(() => {
|
|
5286
|
+
const tableSettings2 = restaurantData?.["table-settings"] || {};
|
|
5287
|
+
const isAutomaticAssignment = tableSettings2.isInstalled === true && tableSettings2.assignmentMode === "automatic";
|
|
5288
|
+
if (isAutomaticAssignment && formData.date && formData.time && formData.guests > 0 && restaurantData && reservations) {
|
|
4184
5289
|
setIsFetchingTables(true);
|
|
4185
5290
|
const available = algorithm.getAvailableTablesForTime(
|
|
4186
5291
|
restaurantData,
|
|
@@ -4190,38 +5295,47 @@ var ReservationStepOne = ({
|
|
|
4190
5295
|
reservations
|
|
4191
5296
|
);
|
|
4192
5297
|
setAvailableTables(available);
|
|
4193
|
-
const
|
|
4194
|
-
const
|
|
4195
|
-
const
|
|
4196
|
-
const
|
|
4197
|
-
|
|
4198
|
-
const
|
|
4199
|
-
|
|
4200
|
-
|
|
4201
|
-
|
|
5298
|
+
const currentlySelectedNumbers = formData.selectedTableNumbers || [];
|
|
5299
|
+
const currentlySelectedIds = formData.selectedTableIds || [];
|
|
5300
|
+
const stillAvailableSelectedNumbers = [];
|
|
5301
|
+
const stillAvailableSelectedIds = [];
|
|
5302
|
+
currentlySelectedNumbers.forEach((num) => {
|
|
5303
|
+
const correspondingTable = available.find(
|
|
5304
|
+
(at) => at.tableNumber === num
|
|
5305
|
+
);
|
|
5306
|
+
if (correspondingTable && currentlySelectedIds.includes(correspondingTable.tableId)) {
|
|
5307
|
+
stillAvailableSelectedNumbers.push(num);
|
|
5308
|
+
stillAvailableSelectedIds.push(correspondingTable.tableId);
|
|
4202
5309
|
}
|
|
4203
5310
|
});
|
|
4204
|
-
if (
|
|
4205
|
-
|
|
4206
|
-
|
|
4207
|
-
|
|
4208
|
-
|
|
4209
|
-
|
|
4210
|
-
|
|
5311
|
+
if (stillAvailableSelectedNumbers.length !== currentlySelectedNumbers.length) {
|
|
5312
|
+
setTimeout(() => {
|
|
5313
|
+
handleChange({
|
|
5314
|
+
target: {
|
|
5315
|
+
multiple: true,
|
|
5316
|
+
updates: {
|
|
5317
|
+
selectedTableNumbers: stillAvailableSelectedNumbers,
|
|
5318
|
+
selectedTableIds: stillAvailableSelectedIds
|
|
5319
|
+
}
|
|
4211
5320
|
}
|
|
4212
|
-
}
|
|
4213
|
-
});
|
|
5321
|
+
});
|
|
5322
|
+
}, 0);
|
|
4214
5323
|
}
|
|
4215
5324
|
setIsFetchingTables(false);
|
|
4216
5325
|
} else {
|
|
4217
5326
|
setAvailableTables([]);
|
|
4218
|
-
if (
|
|
4219
|
-
|
|
4220
|
-
|
|
4221
|
-
|
|
4222
|
-
|
|
4223
|
-
|
|
4224
|
-
|
|
5327
|
+
if (formData.selectedTableNumbers?.length > 0 || formData.selectedTableIds?.length > 0) {
|
|
5328
|
+
setTimeout(() => {
|
|
5329
|
+
handleChange({
|
|
5330
|
+
target: {
|
|
5331
|
+
multiple: true,
|
|
5332
|
+
updates: {
|
|
5333
|
+
selectedTableNumbers: [],
|
|
5334
|
+
selectedTableIds: []
|
|
5335
|
+
}
|
|
5336
|
+
}
|
|
5337
|
+
});
|
|
5338
|
+
}, 0);
|
|
4225
5339
|
}
|
|
4226
5340
|
}
|
|
4227
5341
|
}, [
|
|
@@ -4230,60 +5344,165 @@ var ReservationStepOne = ({
|
|
|
4230
5344
|
formData.guests,
|
|
4231
5345
|
restaurantData,
|
|
4232
5346
|
reservations,
|
|
5347
|
+
formData.reservationMode,
|
|
4233
5348
|
formData.selectedTableNumbers,
|
|
4234
5349
|
formData.selectedTableIds,
|
|
4235
|
-
handleChange
|
|
4236
|
-
tableSettings.assignmentMode,
|
|
4237
|
-
tableSettings.isInstalled
|
|
5350
|
+
handleChange
|
|
4238
5351
|
]);
|
|
4239
|
-
const handleGuestChange = (
|
|
4240
|
-
parseInt(
|
|
4241
|
-
|
|
4242
|
-
|
|
4243
|
-
|
|
4244
|
-
selectedTableNumbers: [],
|
|
4245
|
-
selectedTableIds: []
|
|
4246
|
-
}));
|
|
5352
|
+
const handleGuestChange = (event) => {
|
|
5353
|
+
const newGuestCount = parseInt(event.target.value, 10) || 1;
|
|
5354
|
+
setGuests(newGuestCount);
|
|
5355
|
+
handleChange(event);
|
|
5356
|
+
resetFormDataFields(["time", "selectedTableNumbers", "selectedTableIds"]);
|
|
4247
5357
|
};
|
|
5358
|
+
React9.useEffect(() => {
|
|
5359
|
+
resetFormDataFields([
|
|
5360
|
+
"date",
|
|
5361
|
+
"time",
|
|
5362
|
+
"selectedTableNumbers",
|
|
5363
|
+
"selectedTableIds"
|
|
5364
|
+
]);
|
|
5365
|
+
}, [formData.reservationMode, resetFormDataFields]);
|
|
5366
|
+
const handleTopLevelSelection = (mode) => {
|
|
5367
|
+
if (mode === "met_limieten") {
|
|
5368
|
+
handleChange({
|
|
5369
|
+
target: { name: "reservationMode", value: "met_limieten" }
|
|
5370
|
+
});
|
|
5371
|
+
} else if (mode === "onbeperkt_parent") {
|
|
5372
|
+
if (!["zonder_regels", "vrije_keuze"].includes(formData.reservationMode)) {
|
|
5373
|
+
handleChange({
|
|
5374
|
+
target: { name: "reservationMode", value: "zonder_regels" }
|
|
5375
|
+
});
|
|
5376
|
+
}
|
|
5377
|
+
}
|
|
5378
|
+
};
|
|
5379
|
+
const handleSubSelection = (mode) => {
|
|
5380
|
+
handleChange({ target: { name: "reservationMode", value: mode } });
|
|
5381
|
+
};
|
|
5382
|
+
const currentMode = formData.reservationMode;
|
|
5383
|
+
const isFinalMode = ["met_limieten", "zonder_regels", "vrije_keuze"].includes(
|
|
5384
|
+
currentMode
|
|
5385
|
+
);
|
|
5386
|
+
const tableSettings = restaurantData?.["table-settings"] || {};
|
|
5387
|
+
const showTableSelector = isFinalMode && formData.date && formData.time && formData.guests > 0 && tableSettings.isInstalled === true && tableSettings.assignmentMode === "automatic" && availableTables.length > 0;
|
|
5388
|
+
const seatSelectionEnabled = !!restaurantData?.["general-settings"]?.seatSelectionEnabled;
|
|
5389
|
+
const seatOptions = ["Terras", "Restaurant"];
|
|
4248
5390
|
const handleSeatPick = (seat) => {
|
|
4249
5391
|
setFormData((prev) => ({ ...prev, zitplaats: seat }));
|
|
4250
5392
|
};
|
|
4251
|
-
|
|
4252
|
-
|
|
4253
|
-
|
|
5393
|
+
if (timeblocksError) {
|
|
5394
|
+
return /* @__PURE__ */ React9__default.default.createElement("div", null, t.errors.openingHoursNotSet, " ", /* @__PURE__ */ React9__default.default.createElement(
|
|
5395
|
+
"a",
|
|
5396
|
+
{
|
|
5397
|
+
href: "https://happychef.cloud/#/openinghours/dinner",
|
|
5398
|
+
target: "_blank",
|
|
5399
|
+
rel: "noopener noreferrer",
|
|
5400
|
+
style: { color: "var(--color-blue)", textDecoration: "underline" }
|
|
5401
|
+
},
|
|
5402
|
+
t.errors.clickHereToSet
|
|
5403
|
+
));
|
|
5404
|
+
}
|
|
5405
|
+
return /* @__PURE__ */ React9__default.default.createElement("form", { className: "account-manage-form", noValidate: true }, /* @__PURE__ */ React9__default.default.createElement("div", { className: "form-group reservation-mode" }, /* @__PURE__ */ React9__default.default.createElement("div", { className: "reservation-modes-container" }, /* @__PURE__ */ React9__default.default.createElement(
|
|
5406
|
+
"button",
|
|
4254
5407
|
{
|
|
4255
|
-
type: "
|
|
4256
|
-
|
|
4257
|
-
|
|
4258
|
-
|
|
4259
|
-
|
|
5408
|
+
type: "button",
|
|
5409
|
+
className: `reservation-mode-button ${currentMode === "met_limieten" ? "active" : ""}`,
|
|
5410
|
+
onClick: () => handleTopLevelSelection("met_limieten"),
|
|
5411
|
+
"aria-pressed": currentMode === "met_limieten"
|
|
5412
|
+
},
|
|
5413
|
+
t.modes.withLimits
|
|
5414
|
+
), /* @__PURE__ */ React9__default.default.createElement(
|
|
5415
|
+
"button",
|
|
5416
|
+
{
|
|
5417
|
+
type: "button",
|
|
5418
|
+
className: `reservation-mode-button ${["onbeperkt_parent", "zonder_regels", "vrije_keuze"].includes(
|
|
5419
|
+
currentMode
|
|
5420
|
+
) ? "active" : ""}`,
|
|
5421
|
+
onClick: () => handleTopLevelSelection("onbeperkt_parent"),
|
|
5422
|
+
"aria-pressed": [
|
|
5423
|
+
"onbeperkt_parent",
|
|
5424
|
+
"zonder_regels",
|
|
5425
|
+
"vrije_keuze"
|
|
5426
|
+
].includes(currentMode)
|
|
5427
|
+
},
|
|
5428
|
+
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(
|
|
5432
|
+
"button",
|
|
5433
|
+
{
|
|
5434
|
+
type: "button",
|
|
5435
|
+
className: `reservation-mode-button ${currentMode === "zonder_regels" ? "active" : ""}`,
|
|
5436
|
+
onClick: () => handleSubSelection("zonder_regels"),
|
|
5437
|
+
"aria-pressed": currentMode === "zonder_regels"
|
|
5438
|
+
},
|
|
5439
|
+
t.modes.openingHours
|
|
5440
|
+
), /* @__PURE__ */ React9__default.default.createElement(
|
|
5441
|
+
"button",
|
|
5442
|
+
{
|
|
5443
|
+
type: "button",
|
|
5444
|
+
className: `reservation-mode-button ${currentMode === "vrije_keuze" ? "active" : ""}`,
|
|
5445
|
+
onClick: () => handleSubSelection("vrije_keuze"),
|
|
5446
|
+
"aria-pressed": currentMode === "vrije_keuze"
|
|
5447
|
+
},
|
|
5448
|
+
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
|
|
4260
5458
|
}
|
|
4261
|
-
)
|
|
4262
|
-
|
|
5459
|
+
), isFinalMode && formData.guests > 0 && /* @__PURE__ */ React9__default.default.createElement(
|
|
5460
|
+
DateSelector_default,
|
|
4263
5461
|
{
|
|
4264
|
-
|
|
4265
|
-
|
|
4266
|
-
|
|
4267
|
-
|
|
5462
|
+
guests: formData.guests,
|
|
5463
|
+
formData,
|
|
5464
|
+
handleChange,
|
|
5465
|
+
resetFormDataFields,
|
|
5466
|
+
restaurantData,
|
|
5467
|
+
reservations,
|
|
5468
|
+
startDate,
|
|
5469
|
+
onWeekChange: handleWeekChange,
|
|
5470
|
+
reservationMode: currentMode
|
|
4268
5471
|
}
|
|
4269
|
-
)
|
|
4270
|
-
|
|
5472
|
+
), isFinalMode && formData.date && /* @__PURE__ */ React9__default.default.createElement(
|
|
5473
|
+
TimeSelector_default,
|
|
4271
5474
|
{
|
|
4272
|
-
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
|
|
5475
|
+
guests: formData.guests,
|
|
5476
|
+
formData,
|
|
5477
|
+
handleChange,
|
|
5478
|
+
field: { id: "time", label: t.fields.time },
|
|
5479
|
+
selectedDate: formData.date,
|
|
5480
|
+
setCurrentExpandedField: () => {
|
|
5481
|
+
},
|
|
5482
|
+
restaurantData,
|
|
5483
|
+
reservations,
|
|
5484
|
+
reservationMode: currentMode
|
|
4276
5485
|
}
|
|
4277
|
-
)
|
|
5486
|
+
), seatSelectionEnabled && /* @__PURE__ */ React9__default.default.createElement("div", { className: "form-row", style: { marginTop: 12 } }, /* @__PURE__ */ React9__default.default.createElement("div", { className: "reservation-mode-buttons" }, seatOptions.map((opt) => /* @__PURE__ */ React9__default.default.createElement(
|
|
4278
5487
|
"button",
|
|
4279
5488
|
{
|
|
4280
|
-
key:
|
|
5489
|
+
key: opt,
|
|
4281
5490
|
type: "button",
|
|
4282
|
-
className: formData.zitplaats ===
|
|
4283
|
-
onClick: () => handleSeatPick(
|
|
5491
|
+
className: `reservation-mode-button ${formData.zitplaats === opt ? "active" : ""}`,
|
|
5492
|
+
onClick: () => handleSeatPick(opt),
|
|
5493
|
+
"aria-pressed": formData.zitplaats === opt
|
|
4284
5494
|
},
|
|
4285
|
-
|
|
4286
|
-
))),
|
|
5495
|
+
opt
|
|
5496
|
+
))), errors.zitplaats && /* @__PURE__ */ React9__default.default.createElement("small", { className: "error" }, errors.zitplaats)), showTableSelector && /* @__PURE__ */ React9__default.default.createElement(
|
|
5497
|
+
TableSelector_default,
|
|
5498
|
+
{
|
|
5499
|
+
availableTables,
|
|
5500
|
+
isFetching: isFetchingTables,
|
|
5501
|
+
formData,
|
|
5502
|
+
setFormData,
|
|
5503
|
+
handleChange
|
|
5504
|
+
}
|
|
5505
|
+
));
|
|
4287
5506
|
};
|
|
4288
5507
|
var ReservationStepOne_default = ReservationStepOne;
|
|
4289
5508
|
|
|
@@ -4301,7 +5520,7 @@ var getSection = (translationsObj, sectionKey, fallbackLang = "nl") => {
|
|
|
4301
5520
|
var magicAnimation_default = { v: "5.12.1", fr: 30, ip: 0, op: 530, w: 1024, h: 900, nm: "gr1", ddd: 0, assets: [], layers: [{ ddd: 0, ind: 1, ty: 4, nm: "Layer 6", sr: 1, ks: { o: { a: 0, k: 100, ix: 11 }, r: { a: 1, k: [{ i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 25, s: [0] }, { i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 145, s: [-9] }, { i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 265, s: [0] }, { i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 385, s: [9] }, { t: 505, s: [0] }], ix: 10 }, p: { a: 0, k: [1206.514, -59.851, 0], ix: 2, l: 2 }, a: { a: 0, k: [0, 0, 0], ix: 1, l: 2 }, s: { a: 1, k: [{ i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 25, s: [100, 100, 100] }, { i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 145, s: [134.764, 134.764, 100] }, { i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 265, s: [100, 100, 100] }, { i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 385, s: [134.764, 134.764, 100] }, { t: 505, s: [100, 100, 100] }], ix: 6, l: 2 } }, ao: 0, ef: [{ ty: 29, nm: "Gaussian Blur", np: 5, mn: "ADBE Gaussian Blur 2", ix: 1, en: 1, ef: [{ ty: 0, nm: "Blurriness", mn: "ADBE Gaussian Blur 2-0001", ix: 1, v: { a: 0, k: 150, ix: 1 } }, { ty: 7, nm: "Blur Dimensions", mn: "ADBE Gaussian Blur 2-0002", ix: 2, v: { a: 0, k: 1, ix: 2 } }, { ty: 7, nm: "Repeat Edge Pixels", mn: "ADBE Gaussian Blur 2-0003", ix: 3, v: { a: 0, k: 0, ix: 3 } }] }], shapes: [{ ty: "gr", it: [{ ind: 0, ty: "sh", ix: 1, ks: { a: 0, k: { i: [[446.031, 78.565], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], o: [[-474.322, -83.548], [0, 0], [0, 0], [0.57, 0.727], [0, 0], [-8.99, -11.449]], v: [[-95.525, 259.75], [-429.671, -292.588], [-219.085, -449.194], [448.196, 448.091], [449.016, 449.194], [448.196, 448.091]], c: true }, ix: 2 }, nm: "Path 1", mn: "ADBE Vector Shape - Group", hd: false }, { ty: "fl", c: { a: 0, k: [0.129411771894, 0.149019613862, 0.313725501299, 1], ix: 4 }, o: { a: 0, k: 100, ix: 5 }, r: 1, bm: 0, nm: "Fill 1", mn: "ADBE Vector Graphic - Fill", hd: false }, { ty: "tr", p: { a: 0, k: [0, 0], ix: 2 }, a: { a: 0, k: [0, 0], ix: 1 }, s: { a: 0, k: [100, 100], ix: 3 }, r: { a: 0, k: 0, ix: 6 }, o: { a: 0, k: 100, ix: 7 }, sk: { a: 0, k: 0, ix: 4 }, sa: { a: 0, k: 0, ix: 5 }, nm: "Transform" }], nm: "Group 1", np: 2, cix: 2, bm: 0, ix: 1, mn: "ADBE Vector Group", hd: false }, { ty: "gr", it: [{ ty: "rc", d: 1, s: { a: 0, k: [1200, 900], ix: 2 }, p: { a: 0, k: [0, 0], ix: 3 }, r: { a: 0, k: 0, ix: 4 }, nm: "Rectangle Path 1", mn: "ADBE Vector Shape - Rect", hd: false }, { ty: "st", c: { a: 0, k: [0.494117647059, 0.298039215686, 0.619607843137, 1], ix: 3 }, o: { a: 0, k: 100, ix: 4 }, w: { a: 0, k: 0, ix: 5 }, lc: 1, lj: 1, ml: 4, bm: 0, nm: "Stroke 1", mn: "ADBE Vector Graphic - Stroke", hd: false }, { ty: "fl", c: { a: 0, k: [0, 0.792156862745, 0.843137254902, 1], ix: 4 }, o: { a: 0, k: 0, ix: 5 }, r: 1, bm: 0, nm: "Fill 1", mn: "ADBE Vector Graphic - Fill", hd: false }, { ty: "tr", p: { a: 0, k: [0, 0], ix: 2 }, a: { a: 0, k: [0, 0], ix: 1 }, s: { a: 0, k: [178.543, 174.429], ix: 3 }, r: { a: 0, k: 0, ix: 6 }, o: { a: 0, k: 100, ix: 7 }, sk: { a: 0, k: 0, ix: 4 }, sa: { a: 0, k: 0, ix: 5 }, nm: "Transform" }], nm: "Rectangle 1", np: 3, cix: 2, bm: 0, ix: 2, mn: "ADBE Vector Group", hd: false }], ip: 0, op: 1535, st: 25, ct: 1, bm: 0 }, { ddd: 0, ind: 2, ty: 4, nm: "Layer 5", sr: 1, ks: { o: { a: 0, k: 100, ix: 11 }, r: { a: 1, k: [{ i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 20, s: [0] }, { i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 140, s: [-9] }, { i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 260, s: [0] }, { i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 380, s: [9] }, { t: 500, s: [0] }], ix: 10 }, p: { a: 0, k: [1073.85, -30.391, 0], ix: 2, l: 2 }, a: { a: 0, k: [0, 0, 0], ix: 1, l: 2 }, s: { a: 1, k: [{ i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 20, s: [100, 100, 100] }, { i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 140, s: [134.764, 134.764, 100] }, { i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 260, s: [100, 100, 100] }, { i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 380, s: [134.764, 134.764, 100] }, { t: 500, s: [100, 100, 100] }], ix: 6, l: 2 } }, ao: 0, ef: [{ ty: 29, nm: "Gaussian Blur", np: 5, mn: "ADBE Gaussian Blur 2", ix: 1, en: 1, ef: [{ ty: 0, nm: "Blurriness", mn: "ADBE Gaussian Blur 2-0001", ix: 1, v: { a: 0, k: 150, ix: 1 } }, { ty: 7, nm: "Blur Dimensions", mn: "ADBE Gaussian Blur 2-0002", ix: 2, v: { a: 0, k: 1, ix: 2 } }, { ty: 7, nm: "Repeat Edge Pixels", mn: "ADBE Gaussian Blur 2-0003", ix: 3, v: { a: 0, k: 0, ix: 3 } }] }], shapes: [{ ty: "gr", it: [{ ind: 0, ty: "sh", ix: 1, ks: { a: 0, k: { i: [[424.081, 79.754], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], o: [[-450.977, -84.811], [0, 0], [0, 0], [0.55, 0.7], [0, 0], [-8.65, -11.031]], v: [[-50.221, 245.909], [-467.951, -214.723], [-174.945, -432.62], [467.71, 431.558], [468.5, 432.62], [467.71, 431.558]], c: true }, ix: 2 }, nm: "Path 1", mn: "ADBE Vector Shape - Group", hd: false }, { ty: "fl", c: { a: 0, k: [0, 0.792156875134, 0.843137264252, 1], ix: 4 }, o: { a: 0, k: 100, ix: 5 }, r: 1, bm: 0, nm: "Fill 1", mn: "ADBE Vector Graphic - Fill", hd: false }, { ty: "tr", p: { a: 0, k: [0, 0], ix: 2 }, a: { a: 0, k: [0, 0], ix: 1 }, s: { a: 0, k: [100, 100], ix: 3 }, r: { a: 0, k: 0, ix: 6 }, o: { a: 0, k: 100, ix: 7 }, sk: { a: 0, k: 0, ix: 4 }, sa: { a: 0, k: 0, ix: 5 }, nm: "Transform" }], nm: "Group 1", np: 2, cix: 2, bm: 0, ix: 1, mn: "ADBE Vector Group", hd: false }, { ty: "gr", it: [{ ty: "rc", d: 1, s: { a: 0, k: [1200, 900], ix: 2 }, p: { a: 0, k: [0, 0], ix: 3 }, r: { a: 0, k: 0, ix: 4 }, nm: "Rectangle Path 1", mn: "ADBE Vector Shape - Rect", hd: false }, { ty: "st", c: { a: 0, k: [0.494117647059, 0.298039215686, 0.619607843137, 1], ix: 3 }, o: { a: 0, k: 100, ix: 4 }, w: { a: 0, k: 0, ix: 5 }, lc: 1, lj: 1, ml: 4, bm: 0, nm: "Stroke 1", mn: "ADBE Vector Graphic - Stroke", hd: false }, { ty: "fl", c: { a: 0, k: [0, 0.792156862745, 0.843137254902, 1], ix: 4 }, o: { a: 0, k: 0, ix: 5 }, r: 1, bm: 0, nm: "Fill 1", mn: "ADBE Vector Graphic - Fill", hd: false }, { ty: "tr", p: { a: 0, k: [0, 0], ix: 2 }, a: { a: 0, k: [0, 0], ix: 1 }, s: { a: 0, k: [178.543, 174.429], ix: 3 }, r: { a: 0, k: 0, ix: 6 }, o: { a: 0, k: 100, ix: 7 }, sk: { a: 0, k: 0, ix: 4 }, sa: { a: 0, k: 0, ix: 5 }, nm: "Transform" }], nm: "Rectangle 1", np: 3, cix: 2, bm: 0, ix: 2, mn: "ADBE Vector Group", hd: false }], ip: 0, op: 1530, st: 20, ct: 1, bm: 0 }, { ddd: 0, ind: 3, ty: 4, nm: "Layer 4", sr: 1, ks: { o: { a: 0, k: 100, ix: 11 }, r: { a: 1, k: [{ i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 15, s: [0] }, { i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 135, s: [-9] }, { i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 255, s: [0] }, { i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 375, s: [9] }, { t: 495, s: [0] }], ix: 10 }, p: { a: 0, k: [988.859, 75.079, 0], ix: 2, l: 2 }, a: { a: 0, k: [0, 0, 0], ix: 1, l: 2 }, s: { a: 1, k: [{ i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 15, s: [100, 100, 100] }, { i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 135, s: [134.764, 134.764, 100] }, { i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 255, s: [100, 100, 100] }, { i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 375, s: [134.764, 134.764, 100] }, { t: 495, s: [100, 100, 100] }], ix: 6, l: 2 } }, ao: 0, ef: [{ ty: 29, nm: "Gaussian Blur", np: 5, mn: "ADBE Gaussian Blur 2", ix: 1, en: 1, ef: [{ ty: 0, nm: "Blurriness", mn: "ADBE Gaussian Blur 2-0001", ix: 1, v: { a: 0, k: 100, ix: 1 } }, { ty: 7, nm: "Blur Dimensions", mn: "ADBE Gaussian Blur 2-0002", ix: 2, v: { a: 0, k: 1, ix: 2 } }, { ty: 7, nm: "Repeat Edge Pixels", mn: "ADBE Gaussian Blur 2-0003", ix: 3, v: { a: 0, k: 0, ix: 3 } }] }], shapes: [{ ty: "gr", it: [{ ind: 0, ty: "sh", ix: 1, ks: { a: 1, k: [{ i: { x: 0.833, y: 1 }, o: { x: 0.333, y: 0 }, t: 75, s: [{ i: [[432.399, 124.912], [0, 0], [0, 0], [123.76, -96.677]], o: [[-432.397, -124.911], [0, 0], [0, 0], [-123.77, 96.676]], v: [[-78.678, 155.686], [-500.894, -232.49], [-167.127, -480.7], [487.581, 460.594]], c: true }] }, { i: { x: 0.833, y: 1 }, o: { x: 0.167, y: 0 }, t: 195, s: [{ i: [[432.399, 124.912], [0, 0], [0, 0], [123.76, -96.677]], o: [[-432.397, -124.911], [0, 0], [0, 0], [-123.77, 96.676]], v: [[-97.842, 203.742], [-500.894, -232.49], [-167.127, -480.7], [487.581, 460.594]], c: true }] }, { i: { x: 0.833, y: 1 }, o: { x: 0.167, y: 0 }, t: 315, s: [{ i: [[253.734, 244.526], [0, 0], [0, 0], [123.76, -96.677]], o: [[-324.079, -312.318], [0, 0], [0, 0], [-123.77, 96.676]], v: [[-129.581, 213.076], [-500.894, -232.49], [-167.127, -480.7], [487.581, 460.594]], c: true }] }, { i: { x: 0.667, y: 1 }, o: { x: 0.167, y: 0 }, t: 435, s: [{ i: [[226.573, 11.739], [0, 0], [0, 0], [123.76, -96.677]], o: [[-147.242, -7.629], [0, 0], [0, 0], [-123.77, 96.676]], v: [[-215.336, 122.406], [-500.894, -232.49], [-167.127, -480.7], [487.581, 460.594]], c: true }] }, { t: 529, s: [{ i: [[432.399, 124.912], [0, 0], [0, 0], [123.76, -96.677]], o: [[-432.397, -124.911], [0, 0], [0, 0], [-123.77, 96.676]], v: [[-78.678, 155.686], [-500.894, -232.49], [-167.127, -480.7], [487.581, 460.594]], c: true }] }], ix: 2 }, nm: "Path 1", mn: "ADBE Vector Shape - Group", hd: false }, { ty: "fl", c: { a: 0, k: [0.929411768913, 1, 0.482352942228, 1], ix: 4 }, o: { a: 0, k: 100, ix: 5 }, r: 1, bm: 0, nm: "Fill 1", mn: "ADBE Vector Graphic - Fill", hd: false }, { ty: "tr", p: { a: 0, k: [0, 0], ix: 2 }, a: { a: 0, k: [0, 0], ix: 1 }, s: { a: 0, k: [100, 100], ix: 3 }, r: { a: 0, k: 0, ix: 6 }, o: { a: 0, k: 100, ix: 7 }, sk: { a: 0, k: 0, ix: 4 }, sa: { a: 0, k: 0, ix: 5 }, nm: "Transform" }], nm: "Group 1", np: 2, cix: 2, bm: 0, ix: 1, mn: "ADBE Vector Group", hd: false }, { ty: "gr", it: [{ ty: "rc", d: 1, s: { a: 0, k: [1200, 900], ix: 2 }, p: { a: 0, k: [0, 0], ix: 3 }, r: { a: 0, k: 0, ix: 4 }, nm: "Rectangle Path 1", mn: "ADBE Vector Shape - Rect", hd: false }, { ty: "st", c: { a: 0, k: [0.494117647059, 0.298039215686, 0.619607843137, 1], ix: 3 }, o: { a: 0, k: 100, ix: 4 }, w: { a: 0, k: 0, ix: 5 }, lc: 1, lj: 1, ml: 4, bm: 0, nm: "Stroke 1", mn: "ADBE Vector Graphic - Stroke", hd: false }, { ty: "fl", c: { a: 0, k: [0, 0.792156862745, 0.843137254902, 1], ix: 4 }, o: { a: 0, k: 0, ix: 5 }, r: 1, bm: 0, nm: "Fill 1", mn: "ADBE Vector Graphic - Fill", hd: false }, { ty: "tr", p: { a: 0, k: [0, 0], ix: 2 }, a: { a: 0, k: [0, 0], ix: 1 }, s: { a: 0, k: [178.543, 174.429], ix: 3 }, r: { a: 0, k: 0, ix: 6 }, o: { a: 0, k: 100, ix: 7 }, sk: { a: 0, k: 0, ix: 4 }, sa: { a: 0, k: 0, ix: 5 }, nm: "Transform" }], nm: "Rectangle 1", np: 3, cix: 2, bm: 0, ix: 2, mn: "ADBE Vector Group", hd: false }], ip: 0, op: 1525, st: 15, ct: 1, bm: 0 }, { ddd: 0, ind: 4, ty: 4, nm: "Layer 3", sr: 1, ks: { o: { a: 0, k: 100, ix: 11 }, r: { a: 1, k: [{ i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 10, s: [0] }, { i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 130, s: [-9] }, { i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 250, s: [0] }, { i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 370, s: [9] }, { t: 490, s: [0] }], ix: 10 }, p: { a: 0, k: [894.117, 84.677, 0], ix: 2, l: 2 }, a: { a: 0, k: [0, 0, 0], ix: 1, l: 2 }, s: { a: 1, k: [{ i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 10, s: [100, 100, 100] }, { i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 130, s: [134.764, 134.764, 100] }, { i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 250, s: [100, 100, 100] }, { i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 370, s: [134.764, 134.764, 100] }, { t: 490, s: [100, 100, 100] }], ix: 6, l: 2 } }, ao: 0, ef: [{ ty: 29, nm: "Gaussian Blur", np: 5, mn: "ADBE Gaussian Blur 2", ix: 1, en: 1, ef: [{ ty: 0, nm: "Blurriness", mn: "ADBE Gaussian Blur 2-0001", ix: 1, v: { a: 0, k: 40, ix: 1 } }, { ty: 7, nm: "Blur Dimensions", mn: "ADBE Gaussian Blur 2-0002", ix: 2, v: { a: 0, k: 1, ix: 2 } }, { ty: 7, nm: "Repeat Edge Pixels", mn: "ADBE Gaussian Blur 2-0003", ix: 3, v: { a: 0, k: 0, ix: 3 } }] }], shapes: [{ ty: "gr", it: [{ ind: 0, ty: "sh", ix: 1, ks: { a: 1, k: [{ i: { x: 0.667, y: 1 }, o: { x: 0.167, y: 0 }, t: 67, s: [{ i: [[361.666, 65.659], [0, 0], [0, 0], [92.214, -68.58]], o: [[-361.667, -65.659], [0, 0], [0, 0], [-92.219, 68.579]], v: [[-99.227, 158.019], [-431.16, -238.63], [-176.178, -428.251], [423.289, 416.898]], c: true }] }, { i: { x: 0.833, y: 1 }, o: { x: 0.333, y: 0 }, t: 190, s: [{ i: [[303.862, 85.416], [0, 0], [0, 0], [92.214, -68.58]], o: [[-353.863, -99.472], [0, 0], [0, 0], [-92.219, 68.579]], v: [[-114.955, 184.127], [-431.16, -238.63], [-176.178, -428.251], [423.289, 416.898]], c: true }] }, { i: { x: 0.833, y: 1 }, o: { x: 0.167, y: 0 }, t: 310, s: [{ i: [[66.949, 140.982], [0, 0], [0, 0], [92.213, -68.58]], o: [[-157.679, -332.04], [0, 0], [0, 0], [-92.219, 68.579]], v: [[-182.308, 153.536], [-647.392, -141.284], [-176.178, -428.251], [423.29, 416.898]], c: true }] }, { i: { x: 0.833, y: 1 }, o: { x: 0.167, y: 0 }, t: 430, s: [{ i: [[160.75, 51.563], [0, 0], [0, 0], [92.213, -68.58]], o: [[-350.011, -112.272], [0, 0], [0, 0], [-92.219, 68.579]], v: [[-133.05, 149.658], [-420.434, -232.638], [-176.178, -428.251], [423.29, 416.898]], c: true }] }, { t: 524, s: [{ i: [[361.666, 65.659], [0, 0], [0, 0], [92.214, -68.58]], o: [[-361.667, -65.659], [0, 0], [0, 0], [-92.219, 68.579]], v: [[-99.227, 158.019], [-431.16, -238.63], [-176.178, -428.251], [423.289, 416.898]], c: true }] }], ix: 2 }, nm: "Path 1", mn: "ADBE Vector Shape - Group", hd: false }, { ty: "st", c: { a: 0, k: [0.129411771894, 0.149019613862, 0.313725501299, 1], ix: 3 }, o: { a: 0, k: 100, ix: 4 }, w: { a: 0, k: 8, ix: 5 }, lc: 1, lj: 1, ml: 4, bm: 0, nm: "Stroke 1", mn: "ADBE Vector Graphic - Stroke", hd: false }, { ty: "tr", p: { a: 0, k: [0, 0], ix: 2 }, a: { a: 0, k: [0, 0], ix: 1 }, s: { a: 0, k: [100, 100], ix: 3 }, r: { a: 0, k: 0, ix: 6 }, o: { a: 0, k: 100, ix: 7 }, sk: { a: 0, k: 0, ix: 4 }, sa: { a: 0, k: 0, ix: 5 }, nm: "Transform" }], nm: "Group 1", np: 2, cix: 2, bm: 0, ix: 1, mn: "ADBE Vector Group", hd: false }, { ty: "gr", it: [{ ty: "rc", d: 1, s: { a: 0, k: [1200, 900], ix: 2 }, p: { a: 0, k: [0, 0], ix: 3 }, r: { a: 0, k: 0, ix: 4 }, nm: "Rectangle Path 1", mn: "ADBE Vector Shape - Rect", hd: false }, { ty: "st", c: { a: 0, k: [0.494117647059, 0.298039215686, 0.619607843137, 1], ix: 3 }, o: { a: 0, k: 100, ix: 4 }, w: { a: 0, k: 0, ix: 5 }, lc: 1, lj: 1, ml: 4, bm: 0, nm: "Stroke 1", mn: "ADBE Vector Graphic - Stroke", hd: false }, { ty: "fl", c: { a: 0, k: [0, 0.792156862745, 0.843137254902, 1], ix: 4 }, o: { a: 0, k: 0, ix: 5 }, r: 1, bm: 0, nm: "Fill 1", mn: "ADBE Vector Graphic - Fill", hd: false }, { ty: "tr", p: { a: 0, k: [0, 0], ix: 2 }, a: { a: 0, k: [0, 0], ix: 1 }, s: { a: 0, k: [178.543, 174.429], ix: 3 }, r: { a: 0, k: 0, ix: 6 }, o: { a: 0, k: 100, ix: 7 }, sk: { a: 0, k: 0, ix: 4 }, sa: { a: 0, k: 0, ix: 5 }, nm: "Transform" }], nm: "Rectangle 1", np: 3, cix: 2, bm: 0, ix: 2, mn: "ADBE Vector Group", hd: false }], ip: 0, op: 1520, st: 10, ct: 1, bm: 0 }, { ddd: 0, ind: 5, ty: 4, nm: "Layer 2", sr: 1, ks: { o: { a: 0, k: 100, ix: 11 }, r: { a: 1, k: [{ i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 5, s: [0] }, { i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 125, s: [-9] }, { i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 245, s: [0] }, { i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 365, s: [9] }, { t: 485, s: [0] }], ix: 10 }, p: { a: 0, k: [894.117, 83.978, 0], ix: 2, l: 2 }, a: { a: 0, k: [0, 0, 0], ix: 1, l: 2 }, s: { a: 1, k: [{ i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 5, s: [100, 100, 100] }, { i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 125, s: [134.764, 134.764, 100] }, { i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 245, s: [100, 100, 100] }, { i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 365, s: [134.764, 134.764, 100] }, { t: 485, s: [100, 100, 100] }], ix: 6, l: 2 } }, ao: 0, shapes: [{ ty: "gr", it: [{ ind: 0, ty: "sh", ix: 1, ks: { a: 1, k: [{ i: { x: 0.667, y: 1 }, o: { x: 0.167, y: 0 }, t: 62, s: [{ i: [[361.666, 65.659], [0, 0], [0, 0], [92.214, -68.58]], o: [[-361.667, -65.659], [0, 0], [0, 0], [-92.219, 68.579]], v: [[-99.227, 158.019], [-431.16, -238.63], [-176.178, -428.251], [423.289, 416.898]], c: true }] }, { i: { x: 0.833, y: 1 }, o: { x: 0.333, y: 0 }, t: 185, s: [{ i: [[303.862, 85.416], [0, 0], [0, 0], [92.214, -68.58]], o: [[-353.863, -99.472], [0, 0], [0, 0], [-92.219, 68.579]], v: [[-114.955, 184.127], [-431.16, -238.63], [-176.178, -428.251], [423.289, 416.898]], c: true }] }, { i: { x: 0.833, y: 1 }, o: { x: 0.167, y: 0 }, t: 305, s: [{ i: [[66.949, 140.982], [0, 0], [0, 0], [92.213, -68.58]], o: [[-157.679, -332.04], [0, 0], [0, 0], [-92.219, 68.579]], v: [[-182.308, 153.536], [-647.392, -141.284], [-176.178, -428.251], [423.29, 416.898]], c: true }] }, { i: { x: 0.833, y: 1 }, o: { x: 0.167, y: 0 }, t: 425, s: [{ i: [[160.75, 51.563], [0, 0], [0, 0], [92.213, -68.58]], o: [[-350.011, -112.272], [0, 0], [0, 0], [-92.219, 68.579]], v: [[-133.05, 149.658], [-420.434, -232.638], [-176.178, -428.251], [423.29, 416.898]], c: true }] }, { t: 519, s: [{ i: [[361.666, 65.659], [0, 0], [0, 0], [92.214, -68.58]], o: [[-361.667, -65.659], [0, 0], [0, 0], [-92.219, 68.579]], v: [[-99.227, 158.019], [-431.16, -238.63], [-176.178, -428.251], [423.289, 416.898]], c: true }] }], ix: 2 }, nm: "Path 1", mn: "ADBE Vector Shape - Group", hd: false }, { ty: "fl", c: { a: 0, k: [0.956862747669, 0.980392158031, 0.976470589638, 1], ix: 4 }, o: { a: 0, k: 100, ix: 5 }, r: 1, bm: 0, nm: "Fill 1", mn: "ADBE Vector Graphic - Fill", hd: false }, { ty: "tr", p: { a: 0, k: [0, 0], ix: 2 }, a: { a: 0, k: [0, 0], ix: 1 }, s: { a: 0, k: [100, 100], ix: 3 }, r: { a: 0, k: 0, ix: 6 }, o: { a: 0, k: 100, ix: 7 }, sk: { a: 0, k: 0, ix: 4 }, sa: { a: 0, k: 0, ix: 5 }, nm: "Transform" }], nm: "Group 1", np: 2, cix: 2, bm: 0, ix: 1, mn: "ADBE Vector Group", hd: false }, { ty: "gr", it: [{ ty: "rc", d: 1, s: { a: 0, k: [1200, 900], ix: 2 }, p: { a: 0, k: [0, 0], ix: 3 }, r: { a: 0, k: 0, ix: 4 }, nm: "Rectangle Path 1", mn: "ADBE Vector Shape - Rect", hd: false }, { ty: "st", c: { a: 0, k: [0.494117647059, 0.298039215686, 0.619607843137, 1], ix: 3 }, o: { a: 0, k: 100, ix: 4 }, w: { a: 0, k: 0, ix: 5 }, lc: 1, lj: 1, ml: 4, bm: 0, nm: "Stroke 1", mn: "ADBE Vector Graphic - Stroke", hd: false }, { ty: "fl", c: { a: 0, k: [0, 0.792156862745, 0.843137254902, 1], ix: 4 }, o: { a: 0, k: 0, ix: 5 }, r: 1, bm: 0, nm: "Fill 1", mn: "ADBE Vector Graphic - Fill", hd: false }, { ty: "tr", p: { a: 0, k: [0, 0], ix: 2 }, a: { a: 0, k: [0, 0], ix: 1 }, s: { a: 0, k: [178.543, 174.429], ix: 3 }, r: { a: 0, k: 0, ix: 6 }, o: { a: 0, k: 100, ix: 7 }, sk: { a: 0, k: 0, ix: 4 }, sa: { a: 0, k: 0, ix: 5 }, nm: "Transform" }], nm: "Rectangle 1", np: 3, cix: 2, bm: 0, ix: 2, mn: "ADBE Vector Group", hd: false }], ip: 0, op: 1515, st: 5, ct: 1, bm: 0 }, { ddd: 0, ind: 6, ty: 4, nm: "Layer 1", sr: 1, ks: { o: { a: 0, k: 100, ix: 11 }, r: { a: 1, k: [{ i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 0, s: [0] }, { i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 120, s: [-9] }, { i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 240, s: [0] }, { i: { x: [0.667], y: [1] }, o: { x: [0.333], y: [0] }, t: 360, s: [9] }, { t: 480, s: [0] }], ix: 10 }, p: { a: 0, k: [895.851, 111.19, 0], ix: 2, l: 2 }, a: { a: 0, k: [0, 0, 0], ix: 1, l: 2 }, s: { a: 1, k: [{ i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 0, s: [100, 100, 100] }, { i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 120, s: [134.764, 134.764, 100] }, { i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 240, s: [100, 100, 100] }, { i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, t: 360, s: [134.764, 134.764, 100] }, { t: 480, s: [100, 100, 100] }], ix: 6, l: 2 } }, ao: 0, ef: [{ ty: 29, nm: "Gaussian Blur", np: 5, mn: "ADBE Gaussian Blur 2", ix: 1, en: 1, ef: [{ ty: 0, nm: "Blurriness", mn: "ADBE Gaussian Blur 2-0001", ix: 1, v: { a: 0, k: 200, ix: 1 } }, { ty: 7, nm: "Blur Dimensions", mn: "ADBE Gaussian Blur 2-0002", ix: 2, v: { a: 0, k: 1, ix: 2 } }, { ty: 7, nm: "Repeat Edge Pixels", mn: "ADBE Gaussian Blur 2-0003", ix: 3, v: { a: 0, k: 0, ix: 3 } }] }], shapes: [{ ty: "gr", it: [{ ind: 0, ty: "sh", ix: 1, ks: { a: 1, k: [{ i: { x: 0.667, y: 1 }, o: { x: 0.333, y: 0 }, t: 57, s: [{ i: [[261.24, 94.803], [0, 0], [0, 0], [280.19, -208.366]], o: [[-261.24, -94.803], [0, 0], [0, 0], [-280.189, 208.367]], v: [[-130.27, 227.181], [-489.015, -224.108], [-180.898, -453.243], [434.739, 374.6]], c: true }] }, { i: { x: 0.667, y: 1 }, o: { x: 0.333, y: 0 }, t: 180, s: [{ i: [[240.029, 117.135], [0, 0], [0, 0], [280.191, -208.366]], o: [[-249.757, -121.882], [0, 0], [0, 0], [-280.189, 208.367]], v: [[-256.037, 109.609], [-489.015, -224.108], [-180.898, -453.243], [434.739, 374.6]], c: true }] }, { i: { x: 0.667, y: 1 }, o: { x: 0.333, y: 0 }, t: 300, s: [{ i: [[153.185, 80.344], [0, 0], [0, 0], [280.191, -208.366]], o: [[-246.114, -129.083], [0, 0], [0, 0], [-280.189, 208.367]], v: [[-99.854, 269.938], [-489.015, -224.108], [-180.898, -453.243], [434.739, 374.6]], c: true }] }, { i: { x: 0.667, y: 1 }, o: { x: 0.333, y: 0 }, t: 420, s: [{ i: [[172.303, 15.256], [0, 0], [0, 0], [280.191, -208.366]], o: [[-418.35, -37.043], [0, 0], [0, 0], [-280.189, 208.367]], v: [[-1.548, 216.055], [-489.015, -224.108], [-180.898, -453.243], [434.739, 374.6]], c: true }] }, { t: 514, s: [{ i: [[261.24, 94.803], [0, 0], [0, 0], [280.19, -208.366]], o: [[-261.24, -94.803], [0, 0], [0, 0], [-280.189, 208.367]], v: [[-130.27, 227.181], [-489.015, -224.108], [-180.898, -453.243], [434.739, 374.6]], c: true }] }], ix: 2 }, nm: "Path 1", mn: "ADBE Vector Shape - Group", hd: false }, { ty: "fl", c: { a: 0, k: [0, 0.792156875134, 0.843137264252, 1], ix: 4 }, o: { a: 0, k: 100, ix: 5 }, r: 1, bm: 0, nm: "Fill 1", mn: "ADBE Vector Graphic - Fill", hd: false }, { ty: "tr", p: { a: 0, k: [0, 0], ix: 2 }, a: { a: 0, k: [0, 0], ix: 1 }, s: { a: 0, k: [100, 100], ix: 3 }, r: { a: 0, k: 0, ix: 6 }, o: { a: 0, k: 100, ix: 7 }, sk: { a: 0, k: 0, ix: 4 }, sa: { a: 0, k: 0, ix: 5 }, nm: "Transform" }], nm: "Group 1", np: 2, cix: 2, bm: 0, ix: 1, mn: "ADBE Vector Group", hd: false }, { ty: "gr", it: [{ ty: "rc", d: 1, s: { a: 0, k: [1200, 900], ix: 2 }, p: { a: 0, k: [0, 0], ix: 3 }, r: { a: 0, k: 0, ix: 4 }, nm: "Rectangle Path 1", mn: "ADBE Vector Shape - Rect", hd: false }, { ty: "st", c: { a: 0, k: [0.494117647059, 0.298039215686, 0.619607843137, 1], ix: 3 }, o: { a: 0, k: 100, ix: 4 }, w: { a: 0, k: 0, ix: 5 }, lc: 1, lj: 1, ml: 4, bm: 0, nm: "Stroke 1", mn: "ADBE Vector Graphic - Stroke", hd: false }, { ty: "fl", c: { a: 0, k: [0, 0.792156862745, 0.843137254902, 1], ix: 4 }, o: { a: 0, k: 0, ix: 5 }, r: 1, bm: 0, nm: "Fill 1", mn: "ADBE Vector Graphic - Fill", hd: false }, { ty: "tr", p: { a: 0, k: [0, 0], ix: 2 }, a: { a: 0, k: [0, 0], ix: 1 }, s: { a: 0, k: [178.543, 174.429], ix: 3 }, r: { a: 0, k: 0, ix: 6 }, o: { a: 0, k: 100, ix: 7 }, sk: { a: 0, k: 0, ix: 4 }, sa: { a: 0, k: 0, ix: 5 }, nm: "Transform" }], nm: "Rectangle 1", np: 3, cix: 2, bm: 0, ix: 2, mn: "ADBE Vector Group", hd: false }], ip: 0, op: 1510, st: 0, ct: 1, bm: 0 }], markers: [], props: {} };
|
|
4302
5521
|
|
|
4303
5522
|
// src/components/FormField/translations.json
|
|
4304
|
-
var
|
|
5523
|
+
var translations_default2 = {
|
|
4305
5524
|
nl: {
|
|
4306
5525
|
formField: {
|
|
4307
5526
|
selectPlaceholder: "Selecteer een optie",
|
|
@@ -4352,14 +5571,14 @@ var FormField = ({
|
|
|
4352
5571
|
onRightIconClick: onRightIconClick2,
|
|
4353
5572
|
tooltipContent
|
|
4354
5573
|
}) => {
|
|
4355
|
-
const t = getSection(
|
|
5574
|
+
const t = getSection(translations_default2, "formField");
|
|
4356
5575
|
const selectPlaceholderText = selectPlaceholder || t.selectPlaceholder;
|
|
4357
|
-
const [showTooltip, setShowTooltip] =
|
|
4358
|
-
const tooltipRef =
|
|
4359
|
-
const timerRef =
|
|
5576
|
+
const [showTooltip, setShowTooltip] = React9.useState(false);
|
|
5577
|
+
const tooltipRef = React9.useRef(null);
|
|
5578
|
+
const timerRef = React9.useRef(null);
|
|
4360
5579
|
const RightIconComponent = rightIcon2;
|
|
4361
5580
|
const Icon = icon;
|
|
4362
|
-
|
|
5581
|
+
React9.useEffect(() => {
|
|
4363
5582
|
const handleClickOutside = (e) => {
|
|
4364
5583
|
if (tooltipRef.current && !tooltipRef.current.contains(e.target)) {
|
|
4365
5584
|
if (timerRef.current) clearTimeout(timerRef.current);
|
|
@@ -4379,19 +5598,19 @@ var FormField = ({
|
|
|
4379
5598
|
};
|
|
4380
5599
|
const renderControl = () => {
|
|
4381
5600
|
if (type === "select") {
|
|
4382
|
-
return /* @__PURE__ */
|
|
5601
|
+
return /* @__PURE__ */ React9__default.default.createElement("select", { ...baseControlProps }, /* @__PURE__ */ React9__default.default.createElement("option", { value: "" }, selectPlaceholderText), options.map((opt) => /* @__PURE__ */ React9__default.default.createElement("option", { key: opt.value, value: opt.value }, opt.label)));
|
|
4383
5602
|
}
|
|
4384
5603
|
if (type === "textarea")
|
|
4385
|
-
return /* @__PURE__ */
|
|
4386
|
-
return /* @__PURE__ */
|
|
5604
|
+
return /* @__PURE__ */ React9__default.default.createElement("textarea", { ...baseControlProps, placeholder });
|
|
5605
|
+
return /* @__PURE__ */ React9__default.default.createElement("input", { type, ...baseControlProps, placeholder });
|
|
4387
5606
|
};
|
|
4388
|
-
return /* @__PURE__ */
|
|
5607
|
+
return /* @__PURE__ */ React9__default.default.createElement(
|
|
4389
5608
|
"div",
|
|
4390
5609
|
{
|
|
4391
5610
|
className: `form-group ${halfWidth ? "half-width" : ""}`,
|
|
4392
5611
|
style: { position: "relative" }
|
|
4393
5612
|
},
|
|
4394
|
-
/* @__PURE__ */
|
|
5613
|
+
/* @__PURE__ */ React9__default.default.createElement("div", { className: "input-container" }, Icon && /* @__PURE__ */ React9__default.default.createElement(Icon, { className: "input-icon" }), renderControl(), RightIconComponent && /* @__PURE__ */ React9__default.default.createElement(
|
|
4395
5614
|
"div",
|
|
4396
5615
|
{
|
|
4397
5616
|
className: "magic-wand-container",
|
|
@@ -4411,14 +5630,14 @@ var FormField = ({
|
|
|
4411
5630
|
cursor: "pointer"
|
|
4412
5631
|
}
|
|
4413
5632
|
},
|
|
4414
|
-
/* @__PURE__ */
|
|
5633
|
+
/* @__PURE__ */ React9__default.default.createElement(
|
|
4415
5634
|
RightIconComponent,
|
|
4416
5635
|
{
|
|
4417
5636
|
className: "magic-wand-icon",
|
|
4418
5637
|
style: { color: "#B567C2" }
|
|
4419
5638
|
}
|
|
4420
5639
|
),
|
|
4421
|
-
showTooltip && tooltipContent && /* @__PURE__ */
|
|
5640
|
+
showTooltip && tooltipContent && /* @__PURE__ */ React9__default.default.createElement(
|
|
4422
5641
|
"div",
|
|
4423
5642
|
{
|
|
4424
5643
|
ref: tooltipRef,
|
|
@@ -4438,7 +5657,7 @@ var FormField = ({
|
|
|
4438
5657
|
overflow: "hidden"
|
|
4439
5658
|
}
|
|
4440
5659
|
},
|
|
4441
|
-
/* @__PURE__ */
|
|
5660
|
+
/* @__PURE__ */ React9__default.default.createElement(
|
|
4442
5661
|
"div",
|
|
4443
5662
|
{
|
|
4444
5663
|
className: "lottie-container",
|
|
@@ -4453,7 +5672,7 @@ var FormField = ({
|
|
|
4453
5672
|
zIndex: 1
|
|
4454
5673
|
}
|
|
4455
5674
|
},
|
|
4456
|
-
/* @__PURE__ */
|
|
5675
|
+
/* @__PURE__ */ React9__default.default.createElement(
|
|
4457
5676
|
Lottie__default.default,
|
|
4458
5677
|
{
|
|
4459
5678
|
animationData: magicAnimation_default,
|
|
@@ -4462,7 +5681,7 @@ var FormField = ({
|
|
|
4462
5681
|
}
|
|
4463
5682
|
)
|
|
4464
5683
|
),
|
|
4465
|
-
/* @__PURE__ */
|
|
5684
|
+
/* @__PURE__ */ React9__default.default.createElement("div", { style: { position: "relative", zIndex: 2, padding: "12px 20px" } }, /* @__PURE__ */ React9__default.default.createElement(
|
|
4466
5685
|
"div",
|
|
4467
5686
|
{
|
|
4468
5687
|
style: {
|
|
@@ -4472,7 +5691,7 @@ var FormField = ({
|
|
|
4472
5691
|
}
|
|
4473
5692
|
},
|
|
4474
5693
|
tooltipContent
|
|
4475
|
-
), /* @__PURE__ */
|
|
5694
|
+
), /* @__PURE__ */ React9__default.default.createElement(
|
|
4476
5695
|
"div",
|
|
4477
5696
|
{
|
|
4478
5697
|
style: {
|
|
@@ -4483,7 +5702,7 @@ var FormField = ({
|
|
|
4483
5702
|
}
|
|
4484
5703
|
},
|
|
4485
5704
|
t.tooltip?.confirm
|
|
4486
|
-
), /* @__PURE__ */
|
|
5705
|
+
), /* @__PURE__ */ React9__default.default.createElement(
|
|
4487
5706
|
"div",
|
|
4488
5707
|
{
|
|
4489
5708
|
style: {
|
|
@@ -4497,71 +5716,17 @@ var FormField = ({
|
|
|
4497
5716
|
))
|
|
4498
5717
|
)
|
|
4499
5718
|
)),
|
|
4500
|
-
error && /* @__PURE__ */
|
|
5719
|
+
error && /* @__PURE__ */ React9__default.default.createElement("p", { className: "form-error" }, error)
|
|
4501
5720
|
);
|
|
4502
5721
|
};
|
|
4503
5722
|
var FormField_default = FormField;
|
|
4504
5723
|
|
|
4505
5724
|
// src/components/ReservationStepTwo/ReservationStepTwo.js
|
|
4506
|
-
var
|
|
5725
|
+
var import_moment3 = __toESM(require_moment());
|
|
4507
5726
|
__toESM(require_nl());
|
|
4508
|
-
var useApi = () => {
|
|
4509
|
-
const getJwtToken = React4.useCallback(() => {
|
|
4510
|
-
return localStorage.getItem("accessToken");
|
|
4511
|
-
}, []);
|
|
4512
|
-
const get = React4.useCallback(
|
|
4513
|
-
(endpoint, config = {}) => {
|
|
4514
|
-
const { params, ...axiosConfig } = config;
|
|
4515
|
-
const token = getJwtToken();
|
|
4516
|
-
return axios__default.default.get(endpoint, {
|
|
4517
|
-
...axiosConfig,
|
|
4518
|
-
params,
|
|
4519
|
-
headers: {
|
|
4520
|
-
...axiosConfig.headers,
|
|
4521
|
-
...token ? { Authorization: `Bearer ${token}` } : {}
|
|
4522
|
-
}
|
|
4523
|
-
}).then((response) => response.data).catch((error) => {
|
|
4524
|
-
console.error("Error fetching data:", error);
|
|
4525
|
-
throw error;
|
|
4526
|
-
});
|
|
4527
|
-
},
|
|
4528
|
-
[getJwtToken]
|
|
4529
|
-
);
|
|
4530
|
-
const mutate = React4.useCallback(
|
|
4531
|
-
(method, endpoint, data = null, config = {}) => {
|
|
4532
|
-
const token = getJwtToken();
|
|
4533
|
-
return axios__default.default({
|
|
4534
|
-
method,
|
|
4535
|
-
url: endpoint,
|
|
4536
|
-
data,
|
|
4537
|
-
...config,
|
|
4538
|
-
headers: {
|
|
4539
|
-
...config.headers,
|
|
4540
|
-
...token ? { Authorization: `Bearer ${token}` } : {}
|
|
4541
|
-
}
|
|
4542
|
-
}).then((response) => response.data).catch((error) => {
|
|
4543
|
-
console.error(`Error with ${method} request:`, error);
|
|
4544
|
-
throw error;
|
|
4545
|
-
});
|
|
4546
|
-
},
|
|
4547
|
-
[getJwtToken]
|
|
4548
|
-
);
|
|
4549
|
-
const apiMethods = React4.useMemo(
|
|
4550
|
-
() => ({
|
|
4551
|
-
get,
|
|
4552
|
-
post: (endpoint, data, config) => mutate("POST", endpoint, data, config),
|
|
4553
|
-
put: (endpoint, data, config) => mutate("PUT", endpoint, data, config),
|
|
4554
|
-
patch: (endpoint, data, config) => mutate("PATCH", endpoint, data, config),
|
|
4555
|
-
delete: (endpoint, config) => mutate("DELETE", endpoint, null, config)
|
|
4556
|
-
}),
|
|
4557
|
-
[get, mutate]
|
|
4558
|
-
);
|
|
4559
|
-
return apiMethods;
|
|
4560
|
-
};
|
|
4561
|
-
var useApi_default = useApi;
|
|
4562
5727
|
|
|
4563
5728
|
// src/components/ReservationStepTwo/translations.json
|
|
4564
|
-
var
|
|
5729
|
+
var translations_default3 = {
|
|
4565
5730
|
nl: {
|
|
4566
5731
|
reservationStepTwoFiltering: {
|
|
4567
5732
|
labels: {
|
|
@@ -4696,25 +5861,25 @@ var ReservationStepTwo = ({
|
|
|
4696
5861
|
menuData
|
|
4697
5862
|
}) => {
|
|
4698
5863
|
const lang = getPreferredLanguage();
|
|
4699
|
-
const t = getSection(
|
|
4700
|
-
const [availableMenus, setAvailableMenus] =
|
|
4701
|
-
const [hasAutofilled, setHasAutofilled] =
|
|
4702
|
-
const [pendingAutofill, setPendingAutofill] =
|
|
5864
|
+
const t = getSection(translations_default3, "reservationStepTwoFiltering");
|
|
5865
|
+
const [availableMenus, setAvailableMenus] = React9.useState([]);
|
|
5866
|
+
const [hasAutofilled, setHasAutofilled] = React9.useState(false);
|
|
5867
|
+
const [pendingAutofill, setPendingAutofill] = React9.useState(null);
|
|
4703
5868
|
const api = useApi_default();
|
|
4704
|
-
|
|
4705
|
-
|
|
5869
|
+
React9.useEffect(() => {
|
|
5870
|
+
import_moment3.default.locale(lang);
|
|
4706
5871
|
if (!formData.date || !formData.time || !menuData.length) return setAvailableMenus([]);
|
|
4707
|
-
const sel = (0,
|
|
5872
|
+
const sel = (0, import_moment3.default)(`${formData.date} ${formData.time}`, "YYYY-MM-DD HH:mm");
|
|
4708
5873
|
const filtered = menuData.filter((menu) => {
|
|
4709
5874
|
const inDate = sel.isBetween(
|
|
4710
|
-
(0,
|
|
4711
|
-
(0,
|
|
5875
|
+
(0, import_moment3.default)(menu.startDate, "YYYY-MM-DD"),
|
|
5876
|
+
(0, import_moment3.default)(menu.endDate, "YYYY-MM-DD"),
|
|
4712
5877
|
"day",
|
|
4713
5878
|
"[]"
|
|
4714
5879
|
);
|
|
4715
|
-
const inTime = (0,
|
|
4716
|
-
(0,
|
|
4717
|
-
(0,
|
|
5880
|
+
const inTime = (0, import_moment3.default)(formData.time, "HH:mm").isBetween(
|
|
5881
|
+
(0, import_moment3.default)(menu.startHour, "HH:mm"),
|
|
5882
|
+
(0, import_moment3.default)(menu.endHour, "HH:mm"),
|
|
4718
5883
|
"minute",
|
|
4719
5884
|
"[]"
|
|
4720
5885
|
);
|
|
@@ -4747,10 +5912,10 @@ var ReservationStepTwo = ({
|
|
|
4747
5912
|
console.error("Autofill error");
|
|
4748
5913
|
}
|
|
4749
5914
|
};
|
|
4750
|
-
|
|
5915
|
+
React9.useEffect(() => {
|
|
4751
5916
|
tryAutofill();
|
|
4752
5917
|
}, [formData.email, formData.phone]);
|
|
4753
|
-
const magicProps =
|
|
5918
|
+
const magicProps = React9.useMemo(() => {
|
|
4754
5919
|
if (!pendingAutofill)
|
|
4755
5920
|
return { email: {}, phone: {} };
|
|
4756
5921
|
const emailActive = pendingAutofill.sources.includes("email") && (formData.email || "").trim().toLowerCase() === pendingAutofill.email.trim().toLowerCase();
|
|
@@ -4762,15 +5927,15 @@ var ReservationStepTwo = ({
|
|
|
4762
5927
|
return {
|
|
4763
5928
|
email: emailActive ? {
|
|
4764
5929
|
...common,
|
|
4765
|
-
tooltipContent: /* @__PURE__ */
|
|
5930
|
+
tooltipContent: /* @__PURE__ */ React9__default.default.createElement("div", null, /* @__PURE__ */ React9__default.default.createElement("div", { style: { textAlign: "center", fontWeight: "bold" } }, t.magic?.title), /* @__PURE__ */ React9__default.default.createElement("div", null, pendingAutofill.firstName, " ", pendingAutofill.lastName), /* @__PURE__ */ React9__default.default.createElement("div", null, pendingAutofill.phone))
|
|
4766
5931
|
} : {},
|
|
4767
5932
|
phone: phoneActive ? {
|
|
4768
5933
|
...common,
|
|
4769
|
-
tooltipContent: /* @__PURE__ */
|
|
5934
|
+
tooltipContent: /* @__PURE__ */ React9__default.default.createElement("div", null, /* @__PURE__ */ React9__default.default.createElement("div", { style: { textAlign: "center", fontWeight: "bold" } }, t.magic?.title), /* @__PURE__ */ React9__default.default.createElement("div", null, pendingAutofill.firstName, " ", pendingAutofill.lastName), /* @__PURE__ */ React9__default.default.createElement("div", null, pendingAutofill.email))
|
|
4770
5935
|
} : {}
|
|
4771
5936
|
};
|
|
4772
5937
|
}, [pendingAutofill, formData.email, formData.phone, t.magic?.title]);
|
|
4773
|
-
return /* @__PURE__ */
|
|
5938
|
+
return /* @__PURE__ */ React9__default.default.createElement("div", { className: "reservation-step-two" }, /* @__PURE__ */ React9__default.default.createElement("div", { className: "account-manage-form" }, availableMenus.length > 0 && /* @__PURE__ */ React9__default.default.createElement(
|
|
4774
5939
|
FormField_default,
|
|
4775
5940
|
{
|
|
4776
5941
|
label: t.labels?.menu || "Menu",
|
|
@@ -4781,7 +5946,7 @@ var ReservationStepTwo = ({
|
|
|
4781
5946
|
onChange: handleChange,
|
|
4782
5947
|
error: errors.menu
|
|
4783
5948
|
}
|
|
4784
|
-
), /* @__PURE__ */
|
|
5949
|
+
), /* @__PURE__ */ React9__default.default.createElement("div", { className: "name-fields" }, /* @__PURE__ */ React9__default.default.createElement(
|
|
4785
5950
|
FormField_default,
|
|
4786
5951
|
{
|
|
4787
5952
|
label: t.labels?.firstName || "Voornaam",
|
|
@@ -4792,7 +5957,7 @@ var ReservationStepTwo = ({
|
|
|
4792
5957
|
error: errors.firstName,
|
|
4793
5958
|
icon: fa.FaUser
|
|
4794
5959
|
}
|
|
4795
|
-
), /* @__PURE__ */
|
|
5960
|
+
), /* @__PURE__ */ React9__default.default.createElement(
|
|
4796
5961
|
FormField_default,
|
|
4797
5962
|
{
|
|
4798
5963
|
label: t.labels?.lastName || "Achternaam",
|
|
@@ -4803,7 +5968,7 @@ var ReservationStepTwo = ({
|
|
|
4803
5968
|
error: errors.lastName,
|
|
4804
5969
|
icon: fa.FaUser
|
|
4805
5970
|
}
|
|
4806
|
-
)), /* @__PURE__ */
|
|
5971
|
+
)), /* @__PURE__ */ React9__default.default.createElement(
|
|
4807
5972
|
FormField_default,
|
|
4808
5973
|
{
|
|
4809
5974
|
label: t.labels?.email || "Email",
|
|
@@ -4817,7 +5982,7 @@ var ReservationStepTwo = ({
|
|
|
4817
5982
|
icon: fa.FaEnvelope,
|
|
4818
5983
|
...magicProps.email
|
|
4819
5984
|
}
|
|
4820
|
-
), /* @__PURE__ */
|
|
5985
|
+
), /* @__PURE__ */ React9__default.default.createElement(
|
|
4821
5986
|
FormField_default,
|
|
4822
5987
|
{
|
|
4823
5988
|
label: t.labels?.phone || "Telefoon",
|
|
@@ -4831,7 +5996,7 @@ var ReservationStepTwo = ({
|
|
|
4831
5996
|
icon: fa.FaPhone,
|
|
4832
5997
|
...magicProps.phone
|
|
4833
5998
|
}
|
|
4834
|
-
), /* @__PURE__ */
|
|
5999
|
+
), /* @__PURE__ */ React9__default.default.createElement(
|
|
4835
6000
|
FormField_default,
|
|
4836
6001
|
{
|
|
4837
6002
|
label: t.labels?.extraInfo || "Extra info",
|
|
@@ -4848,7 +6013,7 @@ var ReservationStepTwo = ({
|
|
|
4848
6013
|
var ReservationStepTwo_default = ReservationStepTwo;
|
|
4849
6014
|
|
|
4850
6015
|
// src/components/ReservationSummary/translations.json
|
|
4851
|
-
var
|
|
6016
|
+
var translations_default4 = {
|
|
4852
6017
|
nl: {
|
|
4853
6018
|
reservationStepTwoFiltering: {
|
|
4854
6019
|
labels: {
|
|
@@ -4979,13 +6144,13 @@ var ReservationSummary = ({
|
|
|
4979
6144
|
formData,
|
|
4980
6145
|
onNewReservation
|
|
4981
6146
|
}) => {
|
|
4982
|
-
const t = getSection(
|
|
4983
|
-
return /* @__PURE__ */
|
|
6147
|
+
const t = getSection(translations_default4, "reservationSummary");
|
|
6148
|
+
return /* @__PURE__ */ React9__default.default.createElement("div", { className: "reservation-summary" }, /* @__PURE__ */ React9__default.default.createElement("ul", { className: "reservation-details" }, /* @__PURE__ */ React9__default.default.createElement("li", null, /* @__PURE__ */ React9__default.default.createElement("strong", null, t.title)), /* @__PURE__ */ React9__default.default.createElement("li", null, /* @__PURE__ */ React9__default.default.createElement("strong", null, t.guests, ":"), " ", formData.guests), /* @__PURE__ */ React9__default.default.createElement("li", null, /* @__PURE__ */ React9__default.default.createElement("strong", null, t.date, ":"), " ", formData.date), /* @__PURE__ */ React9__default.default.createElement("li", null, /* @__PURE__ */ React9__default.default.createElement("strong", null, t.time, ":"), " ", formData.time), /* @__PURE__ */ React9__default.default.createElement("li", null, /* @__PURE__ */ React9__default.default.createElement("strong", null, t.firstName, ":"), " ", formData.firstName), /* @__PURE__ */ React9__default.default.createElement("li", null, /* @__PURE__ */ React9__default.default.createElement("strong", null, t.lastName, ":"), " ", formData.lastName), /* @__PURE__ */ React9__default.default.createElement("li", null, /* @__PURE__ */ React9__default.default.createElement("strong", null, t.email, ":"), " ", formData.email), /* @__PURE__ */ React9__default.default.createElement("li", null, /* @__PURE__ */ React9__default.default.createElement("strong", null, t.phone, ":"), " ", formData.phone), formData.menu && /* @__PURE__ */ React9__default.default.createElement("li", null, /* @__PURE__ */ React9__default.default.createElement("strong", null, t.menu, ":"), " ", formData.menu), formData.personeel && /* @__PURE__ */ React9__default.default.createElement("li", null, /* @__PURE__ */ React9__default.default.createElement("strong", null, t.staff, ":"), " ", formData.personeel), formData.giftcard && /* @__PURE__ */ React9__default.default.createElement("li", null, /* @__PURE__ */ React9__default.default.createElement("strong", null, t.giftcard, ":"), " ", formData.giftcard), formData.extraInfo && /* @__PURE__ */ React9__default.default.createElement("li", null, /* @__PURE__ */ React9__default.default.createElement("strong", null, t.extraInfo, ":"), " ", formData.extraInfo), formData.zitplaats && /* @__PURE__ */ React9__default.default.createElement("li", null, /* @__PURE__ */ React9__default.default.createElement("strong", null, t.seatPlace, ":"), " ", formData.zitplaats)), /* @__PURE__ */ React9__default.default.createElement("button", { className: "button-style-3", onClick: onNewReservation }, t.newReservationButton));
|
|
4984
6149
|
};
|
|
4985
6150
|
var ReservationSummary_default = ReservationSummary;
|
|
4986
6151
|
|
|
4987
6152
|
// src/components/GiftcardSelection/translations.json
|
|
4988
|
-
var
|
|
6153
|
+
var translations_default5 = {
|
|
4989
6154
|
nl: {
|
|
4990
6155
|
zitplaatsSelection: {
|
|
4991
6156
|
labels: { seating: "Zitplaats" },
|
|
@@ -5028,9 +6193,9 @@ var GiftcardSelection = ({
|
|
|
5028
6193
|
handleChange,
|
|
5029
6194
|
resetFormDataFields
|
|
5030
6195
|
}) => {
|
|
5031
|
-
const t = getSection(
|
|
5032
|
-
const [availableGiftcards, setAvailableGiftcards] =
|
|
5033
|
-
|
|
6196
|
+
const t = getSection(translations_default5, "giftcardSelection");
|
|
6197
|
+
const [availableGiftcards, setAvailableGiftcards] = React9.useState([]);
|
|
6198
|
+
React9.useEffect(() => {
|
|
5034
6199
|
if (!restaurantData) return;
|
|
5035
6200
|
const periods = ["breakfast", "lunch", "dinner"];
|
|
5036
6201
|
const cards = /* @__PURE__ */ new Set();
|
|
@@ -5050,7 +6215,7 @@ var GiftcardSelection = ({
|
|
|
5050
6215
|
handleChange({ target: { name: "giftcard", value: e.target.value } });
|
|
5051
6216
|
resetFormDataFields(["date", "time"]);
|
|
5052
6217
|
};
|
|
5053
|
-
return /* @__PURE__ */
|
|
6218
|
+
return /* @__PURE__ */ React9__default.default.createElement("div", { className: "giftcard-selection" }, /* @__PURE__ */ React9__default.default.createElement(
|
|
5054
6219
|
FormField_default,
|
|
5055
6220
|
{
|
|
5056
6221
|
label: t.labels?.giftcard || "Giftcard",
|
|
@@ -5066,7 +6231,7 @@ var GiftcardSelection = ({
|
|
|
5066
6231
|
var GiftcardSelection_default = GiftcardSelection;
|
|
5067
6232
|
|
|
5068
6233
|
// src/components/ZitplaatsSelection/translations.json
|
|
5069
|
-
var
|
|
6234
|
+
var translations_default6 = {
|
|
5070
6235
|
nl: {
|
|
5071
6236
|
zitplaatsSelection: {
|
|
5072
6237
|
labels: { seating: "Zitplaats" },
|
|
@@ -5109,9 +6274,9 @@ var ZitplaatsSelection = ({
|
|
|
5109
6274
|
handleChange,
|
|
5110
6275
|
resetFormDataFields
|
|
5111
6276
|
}) => {
|
|
5112
|
-
const [availableZitplaatsen, setAvailableZitplaatsen] =
|
|
5113
|
-
const t = getSection(
|
|
5114
|
-
|
|
6277
|
+
const [availableZitplaatsen, setAvailableZitplaatsen] = React9.useState([]);
|
|
6278
|
+
const t = getSection(translations_default6, "zitplaatsSelection");
|
|
6279
|
+
React9.useEffect(() => {
|
|
5115
6280
|
if (!restaurantData?.floors || !Array.isArray(restaurantData.floors)) return;
|
|
5116
6281
|
const set = /* @__PURE__ */ new Set();
|
|
5117
6282
|
restaurantData.floors.forEach(
|
|
@@ -5127,7 +6292,7 @@ var ZitplaatsSelection = ({
|
|
|
5127
6292
|
const tableSettings = restaurantData?.["table-settings"] || {};
|
|
5128
6293
|
const isTableAssignmentEnabled = tableSettings.isInstalled === true && tableSettings.assignmentMode === "automatic";
|
|
5129
6294
|
if (!isTableAssignmentEnabled || availableZitplaatsen.length === 0) return null;
|
|
5130
|
-
return /* @__PURE__ */
|
|
6295
|
+
return /* @__PURE__ */ React9__default.default.createElement("div", { className: "zitplaats-selection" }, /* @__PURE__ */ React9__default.default.createElement("label", { htmlFor: "zitplaats", className: "form-label" }, t.labels?.seating || "Zitplaats"), /* @__PURE__ */ React9__default.default.createElement("div", { className: "input-container select-field" }, /* @__PURE__ */ React9__default.default.createElement(
|
|
5131
6296
|
"select",
|
|
5132
6297
|
{
|
|
5133
6298
|
id: "zitplaats",
|
|
@@ -5135,8 +6300,8 @@ var ZitplaatsSelection = ({
|
|
|
5135
6300
|
value: formData.zitplaats || "",
|
|
5136
6301
|
onChange: handleZitplaatsChange
|
|
5137
6302
|
},
|
|
5138
|
-
/* @__PURE__ */
|
|
5139
|
-
availableZitplaatsen.map((zitplaats) => /* @__PURE__ */
|
|
6303
|
+
/* @__PURE__ */ React9__default.default.createElement("option", { value: "" }, t.options?.noPreference || "Geen voorkeur"),
|
|
6304
|
+
availableZitplaatsen.map((zitplaats) => /* @__PURE__ */ React9__default.default.createElement(
|
|
5140
6305
|
"option",
|
|
5141
6306
|
{
|
|
5142
6307
|
key: zitplaats,
|
|
@@ -5189,20 +6354,20 @@ var ReservationSidebar = ({
|
|
|
5189
6354
|
onNewReservation,
|
|
5190
6355
|
apiBaseDomain
|
|
5191
6356
|
}) => {
|
|
5192
|
-
|
|
6357
|
+
React9.useEffect(() => {
|
|
5193
6358
|
if (apiBaseDomain && !window.baseDomain) {
|
|
5194
6359
|
window.baseDomain = apiBaseDomain;
|
|
5195
6360
|
}
|
|
5196
6361
|
}, [apiBaseDomain]);
|
|
5197
6362
|
const api = useApi_default();
|
|
5198
|
-
const [timeblocks, setTimeblocks] =
|
|
5199
|
-
const [loadingTimeblocks, setLoadingTimeblocks] =
|
|
5200
|
-
const [timeblocksError, setTimeblocksError] =
|
|
5201
|
-
const [menuData, setMenuData] =
|
|
5202
|
-
const [restaurantData, setRestaurantData] =
|
|
5203
|
-
const [availablePersoneel, setAvailablePersoneel] =
|
|
6363
|
+
const [timeblocks, setTimeblocks] = React9.useState([]);
|
|
6364
|
+
const [loadingTimeblocks, setLoadingTimeblocks] = React9.useState(false);
|
|
6365
|
+
const [timeblocksError, setTimeblocksError] = React9.useState(null);
|
|
6366
|
+
const [menuData, setMenuData] = React9.useState([]);
|
|
6367
|
+
const [restaurantData, setRestaurantData] = React9.useState({});
|
|
6368
|
+
const [availablePersoneel, setAvailablePersoneel] = React9.useState([]);
|
|
5204
6369
|
const t = getSection(translationsReservationSidebar_default, "reservationSidebar");
|
|
5205
|
-
const resetFormDataFields =
|
|
6370
|
+
const resetFormDataFields = React9.useCallback(
|
|
5206
6371
|
(fieldsToReset) => {
|
|
5207
6372
|
setFormData((prev) => {
|
|
5208
6373
|
const next = { ...prev };
|
|
@@ -5214,7 +6379,7 @@ var ReservationSidebar = ({
|
|
|
5214
6379
|
},
|
|
5215
6380
|
[setFormData]
|
|
5216
6381
|
);
|
|
5217
|
-
|
|
6382
|
+
React9.useEffect(() => {
|
|
5218
6383
|
if (!isOpen) return;
|
|
5219
6384
|
setLoadingTimeblocks(true);
|
|
5220
6385
|
const fetchData = async () => {
|
|
@@ -5245,7 +6410,7 @@ var ReservationSidebar = ({
|
|
|
5245
6410
|
};
|
|
5246
6411
|
fetchData();
|
|
5247
6412
|
}, [isOpen, api]);
|
|
5248
|
-
const handleNewReservationClick =
|
|
6413
|
+
const handleNewReservationClick = React9.useCallback(() => {
|
|
5249
6414
|
setFormData({
|
|
5250
6415
|
guests,
|
|
5251
6416
|
date: "",
|
|
@@ -5266,21 +6431,21 @@ var ReservationSidebar = ({
|
|
|
5266
6431
|
onNewReservation();
|
|
5267
6432
|
}, [onNewReservation, setFormData]);
|
|
5268
6433
|
const seatSelectionEnabled = !!restaurantData?.["general-settings"]?.seatSelectionEnabled;
|
|
5269
|
-
return /* @__PURE__ */
|
|
6434
|
+
return /* @__PURE__ */ React9__default.default.createElement("div", { className: `reservation-sidebar-component ${isOpen ? "open" : ""}` }, /* @__PURE__ */ React9__default.default.createElement("div", { className: "reservation-sidebar-content" }, /* @__PURE__ */ React9__default.default.createElement("h2", { className: "admin-title" }, "Admin Reservatie"), /* @__PURE__ */ React9__default.default.createElement(
|
|
5270
6435
|
"button",
|
|
5271
6436
|
{
|
|
5272
6437
|
className: "close-sidebar-button",
|
|
5273
6438
|
onClick: onClose,
|
|
5274
6439
|
"aria-label": "Sluiten"
|
|
5275
6440
|
},
|
|
5276
|
-
/* @__PURE__ */
|
|
5277
|
-
), reservationSubmitted ? /* @__PURE__ */
|
|
6441
|
+
/* @__PURE__ */ React9__default.default.createElement(fa.FaTimes, { size: 20, color: "#000" })
|
|
6442
|
+
), reservationSubmitted ? /* @__PURE__ */ React9__default.default.createElement(
|
|
5278
6443
|
ReservationSummary_default,
|
|
5279
6444
|
{
|
|
5280
6445
|
formData,
|
|
5281
6446
|
onNewReservation: handleNewReservationClick
|
|
5282
6447
|
}
|
|
5283
|
-
) : /* @__PURE__ */
|
|
6448
|
+
) : /* @__PURE__ */ React9__default.default.createElement(React9__default.default.Fragment, null, restaurantData && Object.keys(restaurantData).length > 0 && /* @__PURE__ */ React9__default.default.createElement("div", { className: "sidebar-section-giftcard" }, /* @__PURE__ */ React9__default.default.createElement(
|
|
5284
6449
|
GiftcardSelection_default,
|
|
5285
6450
|
{
|
|
5286
6451
|
restaurantData,
|
|
@@ -5288,7 +6453,7 @@ var ReservationSidebar = ({
|
|
|
5288
6453
|
handleChange,
|
|
5289
6454
|
resetFormDataFields
|
|
5290
6455
|
}
|
|
5291
|
-
)), restaurantData && Object.keys(restaurantData).length > 0 && seatSelectionEnabled && /* @__PURE__ */
|
|
6456
|
+
)), restaurantData && Object.keys(restaurantData).length > 0 && seatSelectionEnabled && /* @__PURE__ */ React9__default.default.createElement("div", { className: "sidebar-section-zitplaats" }, /* @__PURE__ */ React9__default.default.createElement(
|
|
5292
6457
|
ZitplaatsSelection_default,
|
|
5293
6458
|
{
|
|
5294
6459
|
restaurantData,
|
|
@@ -5296,7 +6461,7 @@ var ReservationSidebar = ({
|
|
|
5296
6461
|
handleChange,
|
|
5297
6462
|
resetFormDataFields
|
|
5298
6463
|
}
|
|
5299
|
-
)), availablePersoneel.length > 0 && /* @__PURE__ */
|
|
6464
|
+
)), availablePersoneel.length > 0 && /* @__PURE__ */ React9__default.default.createElement("div", { className: "sidebar-section-personeel" }, /* @__PURE__ */ React9__default.default.createElement(
|
|
5300
6465
|
FormField_default,
|
|
5301
6466
|
{
|
|
5302
6467
|
label: "",
|
|
@@ -5311,7 +6476,7 @@ var ReservationSidebar = ({
|
|
|
5311
6476
|
error: errors.personeel,
|
|
5312
6477
|
selectPlaceholder: "Toewijzen aan persoon"
|
|
5313
6478
|
}
|
|
5314
|
-
)), /* @__PURE__ */
|
|
6479
|
+
)), /* @__PURE__ */ React9__default.default.createElement("div", { className: "sidebar-section-one" }, /* @__PURE__ */ React9__default.default.createElement(
|
|
5315
6480
|
ReservationStepOne_default,
|
|
5316
6481
|
{
|
|
5317
6482
|
formData,
|
|
@@ -5323,7 +6488,7 @@ var ReservationSidebar = ({
|
|
|
5323
6488
|
timeblocksError,
|
|
5324
6489
|
restaurantData
|
|
5325
6490
|
}
|
|
5326
|
-
)), /* @__PURE__ */
|
|
6491
|
+
)), /* @__PURE__ */ React9__default.default.createElement("div", { className: "sidebar-section-two" }, /* @__PURE__ */ React9__default.default.createElement(
|
|
5327
6492
|
ReservationStepTwo_default,
|
|
5328
6493
|
{
|
|
5329
6494
|
formData,
|
|
@@ -5333,7 +6498,7 @@ var ReservationSidebar = ({
|
|
|
5333
6498
|
isSubmitting,
|
|
5334
6499
|
menuData
|
|
5335
6500
|
}
|
|
5336
|
-
)), /* @__PURE__ */
|
|
6501
|
+
)), /* @__PURE__ */ React9__default.default.createElement("div", { className: "reservation-footer" }, /* @__PURE__ */ React9__default.default.createElement(
|
|
5337
6502
|
"button",
|
|
5338
6503
|
{
|
|
5339
6504
|
type: "button",
|