@bigbinary/neeto-molecules 3.9.10 → 3.9.12
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/Schedule.js +199 -182
- package/dist/Schedule.js.map +1 -1
- package/dist/cjs/Schedule.js +196 -179
- package/dist/cjs/Schedule.js.map +1 -1
- package/package.json +3 -1
- package/types/AuditLogs.d.ts +5 -3
- package/types/Breadcrumbs.d.ts +5 -3
- package/types/BrowserSupport.d.ts +5 -3
- package/types/Builder.d.ts +5 -7
- package/types/CalendarView.d.ts +8 -6
- package/types/Codeblock.d.ts +7 -5
- package/types/Columns.d.ts +8 -6
- package/types/ConfigurePageSidebar.d.ts +5 -3
- package/types/ConfirmationModal.d.ts +5 -3
- package/types/Container.d.ts +5 -3
- package/types/CopyToClipboardButton.d.ts +6 -4
- package/types/Currency.d.ts +7 -5
- package/types/CustomDomain.d.ts +6 -4
- package/types/CustomDomainDashboard.d.ts +6 -4
- package/types/DateFormat.d.ts +5 -9
- package/types/DateRangeFilter.d.ts +7 -5
- package/types/DeleteArchiveModal.d.ts +5 -3
- package/types/DeviceIncompatibilityMessage.d.ts +5 -3
- package/types/DocumentEditor.d.ts +6 -4
- package/types/DownloadMobileAppCallout.d.ts +5 -3
- package/types/DynamicVariables.d.ts +6 -4
- package/types/EmailForm.d.ts +7 -5
- package/types/EmailFormProvider.d.ts +3 -2
- package/types/EmailPreview.d.ts +5 -3
- package/types/EmojiPicker.d.ts +6 -4
- package/types/EmojiReactions.d.ts +5 -3
- package/types/ErrorPage.d.ts +6 -4
- package/types/FileUpload.d.ts +8 -6
- package/types/FloatingActionMenu.d.ts +6 -4
- package/types/GoogleFontPicker.d.ts +27 -20
- package/types/Header.d.ts +9 -6
- package/types/HelpPopover.d.ts +7 -5
- package/types/IconPicker.d.ts +5 -3
- package/types/ImageWithFallback.d.ts +5 -3
- package/types/InlineInput.d.ts +9 -7
- package/types/Insights.d.ts +5 -4
- package/types/IntegrationCard.d.ts +7 -5
- package/types/IpRestriction.d.ts +5 -3
- package/types/KeyboardShortcuts.d.ts +6 -4
- package/types/LoginPage.d.ts +5 -3
- package/types/MadeWith.d.ts +5 -3
- package/types/MenuBar.d.ts +7 -5
- package/types/Metadata.d.ts +5 -3
- package/types/MobilePreviewHeader.d.ts +5 -3
- package/types/MoreDropdown.d.ts +6 -4
- package/types/NavigationHeader.d.ts +7 -6
- package/types/NeetoWidget.d.ts +5 -3
- package/types/Onboarding.d.ts +5 -3
- package/types/OptionFields.d.ts +4 -2
- package/types/PageLoader.d.ts +5 -3
- package/types/PhoneNumber.d.ts +15 -13
- package/types/ProductEmbed.d.ts +5 -3
- package/types/PublishBlock.d.ts +6 -4
- package/types/Rename.d.ts +6 -4
- package/types/ResponsiveDevicePicker.d.ts +5 -3
- package/types/Schedule.d.ts +5 -3
- package/types/Scrollable.d.ts +6 -4
- package/types/Search.d.ts +6 -4
- package/types/SendToFields.d.ts +6 -4
- package/types/SessionEnvironment.d.ts +8 -5
- package/types/Settings.d.ts +5 -4
- package/types/ShareRecordingPane.d.ts +4 -2
- package/types/ShareViaEmail.d.ts +5 -3
- package/types/ShareViaLink.d.ts +5 -4
- package/types/Sidebar.d.ts +7 -5
- package/types/StatusDropdown.d.ts +5 -3
- package/types/StickyRibbonsContainer.d.ts +5 -3
- package/types/SubHeader.d.ts +7 -5
- package/types/SuffixedInput.d.ts +5 -3
- package/types/TableWrapper.d.ts +5 -3
- package/types/Taxonomy.d.ts +6 -4
- package/types/TimeFormat.d.ts +5 -9
- package/types/TimezoneMismatchModal.d.ts +5 -3
- package/types/ToggleFeatureCard.d.ts +7 -5
package/dist/cjs/Schedule.js
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var formik = require('formik');
|
|
5
5
|
var neetoCist = require('@bigbinary/neeto-cist');
|
|
6
|
-
var ramda = require('ramda');
|
|
7
6
|
var general = require('@bigbinary/neeto-commons-frontend/utils/general');
|
|
8
7
|
var Typography = require('@bigbinary/neetoui/Typography');
|
|
9
8
|
var reactI18next = require('react-i18next');
|
|
@@ -13,6 +12,7 @@ var neetoTimeZones = require('@bigbinary/neeto-time-zones');
|
|
|
13
12
|
var i18next = require('i18next');
|
|
14
13
|
var utils = require('@bigbinary/neeto-commons-frontend/utils');
|
|
15
14
|
var datetime = require('@bigbinary/neeto-commons-frontend/utils/datetime');
|
|
15
|
+
var ramda = require('ramda');
|
|
16
16
|
var yup = require('yup');
|
|
17
17
|
var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
|
|
18
18
|
var _createClass = require('@babel/runtime/helpers/createClass');
|
|
@@ -197,22 +197,25 @@ var sortDays = function sortDays(chosenIndex) {
|
|
|
197
197
|
if (chosenIndex < 0 || chosenIndex >= 7) return DAYS;
|
|
198
198
|
return [].concat(_toConsumableArray(DAYS.slice(chosenIndex)), _toConsumableArray(DAYS.slice(0, chosenIndex)));
|
|
199
199
|
};
|
|
200
|
+
var wdayValidation = yup__namespace.object().shape({
|
|
201
|
+
periods: yup__namespace.array().of(yup__namespace.object().shape({
|
|
202
|
+
startTime: yup__namespace.string().required(i18next.t("neetoMolecules.schedule.errors.period.startTime")),
|
|
203
|
+
endTime: yup__namespace.string().required(i18next.t("neetoMolecules.schedule.errors.period.endTime")).test("ensureToTimeNotBehindFromTime", i18next.t("neetoMolecules.schedule.errors.period.isBehind"), function (value) {
|
|
204
|
+
var startTime = this.parent.startTime;
|
|
205
|
+
if (isFromAndToSame(value, startTime)) return true;
|
|
206
|
+
return isTimeBehind(startTime, value);
|
|
207
|
+
})
|
|
208
|
+
}).test("ensureTimeNotSame", i18next.t("neetoMolecules.schedule.errors.period.sameTime"), function (value) {
|
|
209
|
+
var startTime = value.startTime,
|
|
210
|
+
endTime = value.endTime;
|
|
211
|
+
return !isFromAndToSame(startTime, endTime);
|
|
212
|
+
})).ensureSlotsCantOverlap()
|
|
213
|
+
});
|
|
200
214
|
var getScheduleValidationSchema = function getScheduleValidationSchema() {
|
|
201
215
|
return yup__namespace.object().shape({
|
|
202
|
-
wdays: yup__namespace.
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
endTime: yup__namespace.string().required(i18next.t("neetoMolecules.schedule.errors.period.endTime")).test("ensureToTimeNotBehindFromTime", i18next.t("neetoMolecules.schedule.errors.period.isBehind"), function (value) {
|
|
206
|
-
var startTime = this.parent.startTime;
|
|
207
|
-
if (isFromAndToSame(value, startTime)) return true;
|
|
208
|
-
return isTimeBehind(startTime, value);
|
|
209
|
-
})
|
|
210
|
-
}).test("ensureTimeNotSame", i18next.t("neetoMolecules.schedule.errors.period.sameTime"), function (value) {
|
|
211
|
-
var startTime = value.startTime,
|
|
212
|
-
endTime = value.endTime;
|
|
213
|
-
return !isFromAndToSame(startTime, endTime);
|
|
214
|
-
})).ensureSlotsCantOverlap()
|
|
215
|
-
}))
|
|
216
|
+
wdays: yup__namespace.object().shape(ramda.fromPairs(ramda.map(function (day) {
|
|
217
|
+
return [day, wdayValidation];
|
|
218
|
+
}, DAYS)))
|
|
216
219
|
});
|
|
217
220
|
};
|
|
218
221
|
var getUserTimeZone = function getUserTimeZone() {
|
|
@@ -302,6 +305,62 @@ var findIndicesOfOverlappingRangesInPeriods = function findIndicesOfOverlappingR
|
|
|
302
305
|
secondIndex: secondIndex
|
|
303
306
|
};
|
|
304
307
|
};
|
|
308
|
+
var handleCopy = function handleCopy(_ref3) {
|
|
309
|
+
var _values$wdays$day$per;
|
|
310
|
+
var values = _ref3.values,
|
|
311
|
+
day = _ref3.day,
|
|
312
|
+
setFieldValue = _ref3.setFieldValue,
|
|
313
|
+
wdaysToCopy = _ref3.wdaysToCopy;
|
|
314
|
+
var newPeriods = (_values$wdays$day$per = values.wdays[day].periods) === null || _values$wdays$day$per === void 0 ? void 0 : _values$wdays$day$per.map(ramda.pick(["startTime", "endTime"]));
|
|
315
|
+
if (neetoCist.isNotPresent(newPeriods)) return;
|
|
316
|
+
wdaysToCopy.forEach(function (wday) {
|
|
317
|
+
return setFieldValue("wdays.".concat(wday), {
|
|
318
|
+
available: true,
|
|
319
|
+
periods: newPeriods.map(ramda.assoc("wday", wday))
|
|
320
|
+
});
|
|
321
|
+
});
|
|
322
|
+
};
|
|
323
|
+
var buildFormValuesArray = function buildFormValuesArray(_ref4) {
|
|
324
|
+
var firstDay = _ref4.firstDay,
|
|
325
|
+
periods = _ref4.periods;
|
|
326
|
+
return sortDays(firstDay).map(function (wday) {
|
|
327
|
+
var _periods$wday;
|
|
328
|
+
return {
|
|
329
|
+
periods: sortPeriodsByKey({
|
|
330
|
+
periods: periods[wday],
|
|
331
|
+
key: "startTime",
|
|
332
|
+
order: "asc"
|
|
333
|
+
}),
|
|
334
|
+
available: !!((_periods$wday = periods[wday]) !== null && _periods$wday !== void 0 && _periods$wday.length),
|
|
335
|
+
wday: wday
|
|
336
|
+
};
|
|
337
|
+
});
|
|
338
|
+
};
|
|
339
|
+
var buildFormValuesObject = function buildFormValuesObject(_ref5) {
|
|
340
|
+
var periods = _ref5.periods;
|
|
341
|
+
var formValues = {};
|
|
342
|
+
DAYS.forEach(function (wday) {
|
|
343
|
+
var _periods$wday2;
|
|
344
|
+
formValues[wday] = {
|
|
345
|
+
periods: sortPeriodsByKey({
|
|
346
|
+
periods: periods[wday],
|
|
347
|
+
key: "startTime",
|
|
348
|
+
order: "asc"
|
|
349
|
+
}),
|
|
350
|
+
available: !!((_periods$wday2 = periods[wday]) !== null && _periods$wday2 !== void 0 && _periods$wday2.length),
|
|
351
|
+
wday: wday
|
|
352
|
+
};
|
|
353
|
+
});
|
|
354
|
+
return formValues;
|
|
355
|
+
};
|
|
356
|
+
var processFormValues = function processFormValues(values, firstDay) {
|
|
357
|
+
return {
|
|
358
|
+
wdays: buildFormValuesArray({
|
|
359
|
+
firstDay: firstDay,
|
|
360
|
+
periods: ramda.map(ramda.prop("periods"), values.wdays)
|
|
361
|
+
})
|
|
362
|
+
};
|
|
363
|
+
};
|
|
305
364
|
|
|
306
365
|
var DisplayAvailability = function DisplayAvailability(_ref) {
|
|
307
366
|
var periods = _ref.periods;
|
|
@@ -365,20 +424,17 @@ var DisplayAvailability = function DisplayAvailability(_ref) {
|
|
|
365
424
|
|
|
366
425
|
var buildSlotIntervals = function buildSlotIntervals(_ref) {
|
|
367
426
|
var interval = _ref.interval,
|
|
368
|
-
bookedSlots = _ref.bookedSlots
|
|
369
|
-
slotType = _ref.slotType,
|
|
370
|
-
_ref$selectedValue = _ref.selectedValue,
|
|
371
|
-
selectedValue = _ref$selectedValue === void 0 ? null : _ref$selectedValue;
|
|
372
|
-
var selectedOption = {
|
|
373
|
-
label: selectedValue,
|
|
374
|
-
value: selectedValue
|
|
375
|
-
};
|
|
427
|
+
bookedSlots = _ref.bookedSlots;
|
|
376
428
|
var allIntervalsForADay = dayjsExtended.timeIntervalsForDay(interval);
|
|
377
429
|
allIntervalsForADay.push(END_OF_DAY);
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
430
|
+
return function (slotType) {
|
|
431
|
+
var selectedValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
432
|
+
var uniqBookedSlots = ramda.uniq(ramda.pluck(slotType, bookedSlots));
|
|
433
|
+
var slotsAvailableForBooking = ramda.difference(allIntervalsForADay, uniqBookedSlots);
|
|
434
|
+
var slots = slotsAvailableForBooking.map(neetoCist.toLabelAndValue);
|
|
435
|
+
if (!selectedValue) return slots;
|
|
436
|
+
return sortSlots([neetoCist.toLabelAndValue(selectedValue)].concat(_toConsumableArray(slots)));
|
|
437
|
+
};
|
|
382
438
|
};
|
|
383
439
|
var sortSlots = function sortSlots(slots) {
|
|
384
440
|
return slots.sort(function (a, b) {
|
|
@@ -421,36 +477,43 @@ var addDefaultPeriod = function addDefaultPeriod(wday) {
|
|
|
421
477
|
};
|
|
422
478
|
|
|
423
479
|
var ScheduleRow = function ScheduleRow(_ref) {
|
|
424
|
-
var
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
480
|
+
var day = _ref.day;
|
|
481
|
+
var _useFormikContext = formik.useFormikContext(),
|
|
482
|
+
values = _useFormikContext.values,
|
|
483
|
+
setFieldValue = _useFormikContext.setFieldValue;
|
|
484
|
+
var bookedSlots = values.wdays[day].periods;
|
|
485
|
+
var _useContext = React.useContext(ScheduleContext),
|
|
486
|
+
allowAddPeriod = _useContext.allowAddPeriod,
|
|
487
|
+
slotInterval = _useContext.slotInterval;
|
|
428
488
|
var _useTranslation = reactI18next.useTranslation(),
|
|
429
489
|
t = _useTranslation.t;
|
|
490
|
+
var sortSlotsInterval = React.useMemo(function () {
|
|
491
|
+
return buildSlotIntervals({
|
|
492
|
+
interval: slotInterval,
|
|
493
|
+
bookedSlots: bookedSlots
|
|
494
|
+
});
|
|
495
|
+
}, [slotInterval, bookedSlots]);
|
|
430
496
|
var handleAddRow = function handleAddRow(arrayHelpers) {
|
|
431
|
-
if (neetoCist.isNotPresent(values.wdays[
|
|
497
|
+
if (neetoCist.isNotPresent(values.wdays[day].periods)) {
|
|
432
498
|
arrayHelpers.push(addDefaultPeriod(day));
|
|
433
499
|
} else {
|
|
434
|
-
arrayHelpers.push(generateNewPeriod(values.wdays[
|
|
500
|
+
arrayHelpers.push(generateNewPeriod(values.wdays[day].periods, day));
|
|
435
501
|
}
|
|
436
|
-
setFieldValue("wdays
|
|
502
|
+
setFieldValue("wdays.".concat(day, ".available"), true);
|
|
437
503
|
};
|
|
438
504
|
var handleDeleteRow = function handleDeleteRow(arrayHelpers, index) {
|
|
439
|
-
var isLastRowDeleted = values.wdays[
|
|
505
|
+
var isLastRowDeleted = values.wdays[day].periods.length === 1;
|
|
440
506
|
arrayHelpers.remove(index);
|
|
441
|
-
setFieldValue("wdays
|
|
507
|
+
setFieldValue("wdays.".concat(day, ".available"), !isLastRowDeleted);
|
|
442
508
|
};
|
|
443
|
-
var _useContext = React.useContext(ScheduleContext),
|
|
444
|
-
allowAddPeriod = _useContext.allowAddPeriod,
|
|
445
|
-
slotInterval = _useContext.slotInterval;
|
|
446
509
|
return /*#__PURE__*/jsxRuntime.jsx(formik.FieldArray, {
|
|
447
|
-
name: "wdays
|
|
510
|
+
name: "wdays.".concat(day, ".periods"),
|
|
448
511
|
render: function render(arrayHelpers) {
|
|
449
|
-
var _values$wdays$
|
|
512
|
+
var _values$wdays$day, _values$wdays$day$per;
|
|
450
513
|
return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
451
|
-
children: [neetoCist.isPresent((_values$wdays$
|
|
514
|
+
children: [neetoCist.isPresent((_values$wdays$day = values.wdays[day]) === null || _values$wdays$day === void 0 ? void 0 : _values$wdays$day.periods) && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
452
515
|
className: "w-full space-y-2",
|
|
453
|
-
children: (_values$wdays$
|
|
516
|
+
children: (_values$wdays$day$per = values.wdays[day].periods) === null || _values$wdays$day$per === void 0 ? void 0 : _values$wdays$day$per.map(function (period, index) {
|
|
454
517
|
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
455
518
|
className: "flex w-full flex-col sm:mx-auto sm:w-80",
|
|
456
519
|
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
@@ -462,18 +525,13 @@ var ScheduleRow = function ScheduleRow(_ref) {
|
|
|
462
525
|
className: "w-full",
|
|
463
526
|
components: REMOVE_SELECT_DOWN_ARROW,
|
|
464
527
|
filterOption: customFilter,
|
|
465
|
-
name: "wdays
|
|
528
|
+
name: "wdays.".concat(day, ".periods[").concat(index, "].startTime"),
|
|
466
529
|
placeholder: t("neetoMolecules.schedule.startTime"),
|
|
467
530
|
styles: BLUR_TEXT_WHEN_SELECT_MENU_IS_OPEN,
|
|
468
|
-
options:
|
|
469
|
-
interval: slotInterval,
|
|
470
|
-
bookedSlots: values.wdays[wdayIndex].periods,
|
|
471
|
-
slotType: "startTime",
|
|
472
|
-
selectedValue: period === null || period === void 0 ? void 0 : period.startTime
|
|
473
|
-
}),
|
|
531
|
+
options: sortSlotsInterval("startTime", period === null || period === void 0 ? void 0 : period.startTime),
|
|
474
532
|
value: slotsSelectComponentDefaultValue(period === null || period === void 0 ? void 0 : period.startTime),
|
|
475
533
|
onChange: function onChange(e) {
|
|
476
|
-
return setFieldValue("wdays
|
|
534
|
+
return setFieldValue("wdays.".concat(day, ".periods[").concat(index, "].startTime"), (e === null || e === void 0 ? void 0 : e.value) || "");
|
|
477
535
|
}
|
|
478
536
|
}), /*#__PURE__*/jsxRuntime.jsx(Select, {
|
|
479
537
|
isClearable: true,
|
|
@@ -481,18 +539,13 @@ var ScheduleRow = function ScheduleRow(_ref) {
|
|
|
481
539
|
className: "w-full",
|
|
482
540
|
components: REMOVE_SELECT_DOWN_ARROW,
|
|
483
541
|
filterOption: customFilter,
|
|
484
|
-
name: "wdays
|
|
542
|
+
name: "wdays.".concat(day, ".periods[").concat(index, "].endTime"),
|
|
543
|
+
options: sortSlotsInterval("endTime", period === null || period === void 0 ? void 0 : period.endTime),
|
|
485
544
|
placeholder: t("neetoMolecules.schedule.endTime"),
|
|
486
545
|
styles: BLUR_TEXT_WHEN_SELECT_MENU_IS_OPEN,
|
|
487
546
|
value: slotsSelectComponentDefaultValue(period === null || period === void 0 ? void 0 : period.endTime),
|
|
488
|
-
options: buildSlotIntervals({
|
|
489
|
-
interval: slotInterval,
|
|
490
|
-
bookedSlots: values.wdays[wdayIndex].periods,
|
|
491
|
-
slotType: "endTime",
|
|
492
|
-
selectedValue: period === null || period === void 0 ? void 0 : period.endTime
|
|
493
|
-
}),
|
|
494
547
|
onChange: function onChange(e) {
|
|
495
|
-
return setFieldValue("wdays
|
|
548
|
+
return setFieldValue("wdays.".concat(day, ".periods[").concat(index, "].endTime"), (e === null || e === void 0 ? void 0 : e.value) || "");
|
|
496
549
|
}
|
|
497
550
|
}), /*#__PURE__*/jsxRuntime.jsx(Button, {
|
|
498
551
|
className: "flex-shrink-0 self-start",
|
|
@@ -505,7 +558,7 @@ var ScheduleRow = function ScheduleRow(_ref) {
|
|
|
505
558
|
}
|
|
506
559
|
})]
|
|
507
560
|
}), /*#__PURE__*/jsxRuntime.jsx(formik.ErrorMessage, {
|
|
508
|
-
name: "wdays
|
|
561
|
+
name: "wdays.".concat(day, ".periods[").concat(index, "]"),
|
|
509
562
|
children: function children(message) {
|
|
510
563
|
return _typeof(message) !== "object" && /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
511
564
|
className: "neeto-ui-text-error-500 mt-1 w-11/12 px-2 text-xs",
|
|
@@ -513,9 +566,9 @@ var ScheduleRow = function ScheduleRow(_ref) {
|
|
|
513
566
|
});
|
|
514
567
|
}
|
|
515
568
|
})]
|
|
516
|
-
}, "wdays
|
|
569
|
+
}, "wdays.".concat(day, ".periods[").concat(index, "]"));
|
|
517
570
|
})
|
|
518
|
-
}), values.wdays[
|
|
571
|
+
}), values.wdays[day].available && allowAddPeriod && /*#__PURE__*/jsxRuntime.jsx(Button, {
|
|
519
572
|
className: "absolute right-14 top-3 ml-auto flex-shrink-0 sm:static",
|
|
520
573
|
"data-cy": "add-new-period-button",
|
|
521
574
|
"data-testid": "add-new-period-button",
|
|
@@ -535,14 +588,11 @@ var ScheduleRow = function ScheduleRow(_ref) {
|
|
|
535
588
|
}
|
|
536
589
|
});
|
|
537
590
|
};
|
|
591
|
+
var ScheduleRow$1 = /*#__PURE__*/React.memo(ScheduleRow);
|
|
538
592
|
|
|
539
593
|
var Form = function Form(_ref) {
|
|
540
|
-
var _values$wdays$
|
|
541
|
-
var day = _ref.day
|
|
542
|
-
handleCopy = _ref.handleCopy,
|
|
543
|
-
values = _ref.values,
|
|
544
|
-
setFieldValue = _ref.setFieldValue,
|
|
545
|
-
index = _ref.index;
|
|
594
|
+
var _values$wdays$day;
|
|
595
|
+
var day = _ref.day;
|
|
546
596
|
var _useState = React.useState([]),
|
|
547
597
|
_useState2 = _slicedToArray(_useState, 2),
|
|
548
598
|
deletedPeriods = _useState2[0],
|
|
@@ -551,39 +601,42 @@ var Form = function Form(_ref) {
|
|
|
551
601
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
552
602
|
wdaysToCopy = _useState4[0],
|
|
553
603
|
setWdaysToCopy = _useState4[1];
|
|
604
|
+
var _useFormikContext = formik.useFormikContext(),
|
|
605
|
+
values = _useFormikContext.values,
|
|
606
|
+
setFieldValue = _useFormikContext.setFieldValue;
|
|
554
607
|
var _useTranslation = reactI18next.useTranslation(),
|
|
555
608
|
t = _useTranslation.t;
|
|
556
609
|
var _useContext = React.useContext(ScheduleContext),
|
|
557
610
|
firstDay = _useContext.firstDay;
|
|
558
|
-
var restoreDeletedPeriods = function restoreDeletedPeriods(
|
|
559
|
-
setFieldValue("wdays
|
|
611
|
+
var restoreDeletedPeriods = function restoreDeletedPeriods() {
|
|
612
|
+
setFieldValue("wdays.".concat(day, ".periods"), deletedPeriods);
|
|
560
613
|
};
|
|
561
|
-
var uncheckCheckbox = function uncheckCheckbox(
|
|
562
|
-
var _values$wdays$
|
|
563
|
-
setFieldValue("wdays
|
|
564
|
-
setFieldValue("wdays
|
|
565
|
-
if ((_values$wdays$
|
|
566
|
-
setDeletedPeriods(values.wdays[
|
|
614
|
+
var uncheckCheckbox = function uncheckCheckbox() {
|
|
615
|
+
var _values$wdays$day$per;
|
|
616
|
+
setFieldValue("wdays.".concat(day, ".available"), false);
|
|
617
|
+
setFieldValue("wdays.".concat(day, ".periods"), []);
|
|
618
|
+
if ((_values$wdays$day$per = values.wdays[day].periods[0]) !== null && _values$wdays$day$per !== void 0 && _values$wdays$day$per.id) {
|
|
619
|
+
setDeletedPeriods(values.wdays[day].periods.filter(function (item) {
|
|
567
620
|
return item.startTime && item.endTime;
|
|
568
621
|
}).map(ramda.identity));
|
|
569
622
|
}
|
|
570
623
|
};
|
|
571
|
-
var checkCheckbox = function checkCheckbox(
|
|
624
|
+
var checkCheckbox = function checkCheckbox() {
|
|
572
625
|
var _deletedPeriods$;
|
|
573
|
-
setFieldValue("wdays
|
|
626
|
+
setFieldValue("wdays.".concat(day, ".available"), true);
|
|
574
627
|
if ((_deletedPeriods$ = deletedPeriods[0]) !== null && _deletedPeriods$ !== void 0 && _deletedPeriods$.startTime) {
|
|
575
|
-
restoreDeletedPeriods(
|
|
576
|
-
} else if (neetoCist.isNotPresent(values.wdays[
|
|
577
|
-
setFieldValue("wdays
|
|
628
|
+
restoreDeletedPeriods();
|
|
629
|
+
} else if (neetoCist.isNotPresent(values.wdays[day].periods)) {
|
|
630
|
+
setFieldValue("wdays.".concat(day, ".periods"), [addDefaultPeriod(day)]);
|
|
578
631
|
} else {
|
|
579
|
-
setFieldValue("wdays
|
|
632
|
+
setFieldValue("wdays.".concat(day, ".periods"), [""]);
|
|
580
633
|
}
|
|
581
634
|
};
|
|
582
|
-
var handleCheckbox = function handleCheckbox(
|
|
583
|
-
if (values.wdays[
|
|
584
|
-
uncheckCheckbox(
|
|
635
|
+
var handleCheckbox = function handleCheckbox() {
|
|
636
|
+
if (values.wdays[day].available) {
|
|
637
|
+
uncheckCheckbox();
|
|
585
638
|
} else {
|
|
586
|
-
checkCheckbox(
|
|
639
|
+
checkCheckbox();
|
|
587
640
|
}
|
|
588
641
|
};
|
|
589
642
|
var handleCopyChange = function handleCopyChange(e, day) {
|
|
@@ -597,34 +650,29 @@ var Form = function Form(_ref) {
|
|
|
597
650
|
"data-cy": "working-day-container",
|
|
598
651
|
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
599
652
|
className: classnames("flex w-36 flex-shrink-0 items-center justify-start sm:mt-1", {
|
|
600
|
-
"mb-3 sm:mb-0": neetoCist.isPresent((_values$wdays$
|
|
653
|
+
"mb-3 sm:mb-0": neetoCist.isPresent((_values$wdays$day = values.wdays[day]) === null || _values$wdays$day === void 0 ? void 0 : _values$wdays$day.periods)
|
|
601
654
|
}),
|
|
602
655
|
children: [/*#__PURE__*/jsxRuntime.jsx(Switch, {
|
|
603
|
-
"aria-label": "wdays
|
|
604
|
-
checked: values.wdays[
|
|
656
|
+
"aria-label": "wdays.".concat(day, ".available"),
|
|
657
|
+
checked: values.wdays[day].available,
|
|
605
658
|
className: "flex-grow-0",
|
|
606
659
|
"data-cy": general.joinHyphenCase(day, "weekly-hours-checkbox"),
|
|
607
660
|
id: "day",
|
|
608
|
-
name: "wdays
|
|
609
|
-
onChange:
|
|
610
|
-
return handleCheckbox(setFieldValue, values);
|
|
611
|
-
}
|
|
661
|
+
name: "wdays.".concat(day, ".available"),
|
|
662
|
+
onChange: handleCheckbox
|
|
612
663
|
}), /*#__PURE__*/jsxRuntime.jsx(Typography, {
|
|
613
664
|
component: "span",
|
|
614
665
|
"data-cy": general.joinHyphenCase(day, "day-text"),
|
|
615
666
|
style: "body2",
|
|
616
|
-
weight: values.wdays[
|
|
667
|
+
weight: values.wdays[day].available ? "semibold" : "normal",
|
|
617
668
|
className: classnames("ml-2 capitalize", {
|
|
618
|
-
"neeto-ui-text-gray-600": !values.wdays[
|
|
669
|
+
"neeto-ui-text-gray-600": !values.wdays[day].available
|
|
619
670
|
}),
|
|
620
671
|
children: t("neetoMolecules.schedule.days.".concat(day))
|
|
621
672
|
})]
|
|
622
|
-
}), /*#__PURE__*/jsxRuntime.jsx(ScheduleRow, {
|
|
623
|
-
day: day
|
|
624
|
-
|
|
625
|
-
values: values,
|
|
626
|
-
wdayIndex: index
|
|
627
|
-
}), values.wdays[index].available && /*#__PURE__*/jsxRuntime.jsxs(Dropdown, {
|
|
673
|
+
}), /*#__PURE__*/jsxRuntime.jsx(ScheduleRow$1, {
|
|
674
|
+
day: day
|
|
675
|
+
}), values.wdays[day].available && /*#__PURE__*/jsxRuntime.jsxs(Dropdown, {
|
|
628
676
|
closeOnSelect: true,
|
|
629
677
|
buttonStyle: "secondary",
|
|
630
678
|
icon: Copy,
|
|
@@ -679,7 +727,7 @@ var Form = function Form(_ref) {
|
|
|
679
727
|
onClick: function onClick() {
|
|
680
728
|
handleCopy({
|
|
681
729
|
values: values,
|
|
682
|
-
|
|
730
|
+
day: day,
|
|
683
731
|
setFieldValue: setFieldValue,
|
|
684
732
|
wdaysToCopy: wdaysToCopy
|
|
685
733
|
});
|
|
@@ -691,19 +739,20 @@ var Form = function Form(_ref) {
|
|
|
691
739
|
})
|
|
692
740
|
});
|
|
693
741
|
};
|
|
742
|
+
var Form$1 = /*#__PURE__*/React.memo(Form);
|
|
694
743
|
|
|
695
744
|
var Fields = function Fields(_ref) {
|
|
696
|
-
var
|
|
697
|
-
handleValuesChanged = _ref.handleValuesChanged,
|
|
745
|
+
var handleValuesChanged = _ref.handleValuesChanged,
|
|
698
746
|
scheduleRef = _ref.scheduleRef;
|
|
747
|
+
var _useContext = React.useContext(ScheduleContext),
|
|
748
|
+
firstDay = _useContext.firstDay;
|
|
699
749
|
var _useFormikContext = formik.useFormikContext(),
|
|
700
750
|
values = _useFormikContext.values,
|
|
701
|
-
setFieldValue = _useFormikContext.setFieldValue,
|
|
702
751
|
resetForm = _useFormikContext.resetForm,
|
|
703
752
|
errors = _useFormikContext.errors,
|
|
704
753
|
dirty = _useFormikContext.dirty;
|
|
705
754
|
React.useEffect(function () {
|
|
706
|
-
handleValuesChanged(values, dirty);
|
|
755
|
+
handleValuesChanged(processFormValues(values, firstDay), dirty);
|
|
707
756
|
}, [values]);
|
|
708
757
|
React.useImperativeHandle(scheduleRef, function () {
|
|
709
758
|
return {
|
|
@@ -711,25 +760,10 @@ var Fields = function Fields(_ref) {
|
|
|
711
760
|
errors: errors
|
|
712
761
|
};
|
|
713
762
|
});
|
|
714
|
-
return
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
className: "space-y-4",
|
|
719
|
-
children: values.wdays.map(function (item, index) {
|
|
720
|
-
return /*#__PURE__*/React.createElement(Form, {
|
|
721
|
-
handleCopy: handleCopy,
|
|
722
|
-
index: index,
|
|
723
|
-
setFieldValue: setFieldValue,
|
|
724
|
-
values: values,
|
|
725
|
-
day: DAYS.find(function (day) {
|
|
726
|
-
return day === item.wday;
|
|
727
|
-
}),
|
|
728
|
-
key: item.wday
|
|
729
|
-
});
|
|
730
|
-
})
|
|
731
|
-
});
|
|
732
|
-
}
|
|
763
|
+
return sortDays(firstDay).map(function (wday) {
|
|
764
|
+
return /*#__PURE__*/jsxRuntime.jsx(Form$1, {
|
|
765
|
+
day: wday
|
|
766
|
+
}, wday);
|
|
733
767
|
});
|
|
734
768
|
};
|
|
735
769
|
|
|
@@ -850,69 +884,52 @@ var Schedule = /*#__PURE__*/React.forwardRef(function (_ref, scheduleRef) {
|
|
|
850
884
|
showTimeZone = _ref$showTimeZone === void 0 ? true : _ref$showTimeZone,
|
|
851
885
|
_ref$slotInterval = _ref.slotInterval,
|
|
852
886
|
slotInterval = _ref$slotInterval === void 0 ? DEFAULT_SLOT_INTERVAL : _ref$slotInterval;
|
|
853
|
-
var
|
|
854
|
-
var _values$wdays$index$p;
|
|
855
|
-
var values = _ref2.values,
|
|
856
|
-
index = _ref2.index,
|
|
857
|
-
setFieldValue = _ref2.setFieldValue,
|
|
858
|
-
wdaysToCopy = _ref2.wdaysToCopy;
|
|
859
|
-
var newPeriods = (_values$wdays$index$p = values.wdays[index].periods) === null || _values$wdays$index$p === void 0 ? void 0 : _values$wdays$index$p.map(ramda.pick(["startTime", "endTime"]));
|
|
860
|
-
wdaysToCopy.forEach(function (wday) {
|
|
861
|
-
var dayIndex = sortDays(firstDay).indexOf(wday);
|
|
862
|
-
setFieldValue("wdays[".concat(dayIndex, "].available"), neetoCist.isPresent(values.wdays[index].periods));
|
|
863
|
-
setFieldValue("wdays[".concat(dayIndex, "].periods"), newPeriods.map(function (period) {
|
|
864
|
-
return ramda.assoc("wday", wday, period);
|
|
865
|
-
}));
|
|
866
|
-
});
|
|
867
|
-
};
|
|
887
|
+
var validationSchema = React.useMemo(getScheduleValidationSchema, []);
|
|
868
888
|
var getInitialFormValues = function getInitialFormValues() {
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
return {
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
wday: wday
|
|
879
|
-
};
|
|
889
|
+
var isSubmitHandler = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
890
|
+
if (isSubmitHandler) {
|
|
891
|
+
return buildFormValuesArray({
|
|
892
|
+
firstDay: firstDay,
|
|
893
|
+
periods: periods
|
|
894
|
+
});
|
|
895
|
+
}
|
|
896
|
+
return buildFormValuesObject({
|
|
897
|
+
periods: periods
|
|
880
898
|
});
|
|
881
899
|
};
|
|
882
|
-
return /*#__PURE__*/jsxRuntime.jsx(
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
900
|
+
return /*#__PURE__*/jsxRuntime.jsx(ScheduleContext.Provider, {
|
|
901
|
+
value: {
|
|
902
|
+
allowAddPeriod: allowAddPeriod,
|
|
903
|
+
firstDay: firstDay,
|
|
904
|
+
slotInterval: slotInterval
|
|
905
|
+
},
|
|
906
|
+
children: /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
907
|
+
className: "neeto-molecules-schedule neeto-ui-border-gray-200 flex-shrink-0",
|
|
908
|
+
children: /*#__PURE__*/jsxRuntime.jsx(formik.Formik, {
|
|
909
|
+
validationSchema: validationSchema,
|
|
910
|
+
enableReinitialize: true,
|
|
911
|
+
initialValues: {
|
|
912
|
+
wdays: getInitialFormValues()
|
|
913
|
+
},
|
|
914
|
+
onSubmit: function onSubmit(values) {
|
|
915
|
+
handleSubmit(processFormValues(values, firstDay), getInitialFormValues(true));
|
|
916
|
+
},
|
|
917
|
+
children: /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
918
|
+
children: [showHeader && /*#__PURE__*/jsxRuntime.jsx(Header, {
|
|
919
|
+
isCreating: isCreating,
|
|
920
|
+
isEditable: isEditable,
|
|
921
|
+
isEditing: isEditing,
|
|
922
|
+
setIsEditing: setIsEditing,
|
|
923
|
+
showTimeZone: showTimeZone
|
|
924
|
+
}), isEditing || !showHeader ? /*#__PURE__*/jsxRuntime.jsx(formik.Form, {
|
|
907
925
|
children: /*#__PURE__*/jsxRuntime.jsx(Fields, {
|
|
908
|
-
handleCopy: handleCopy,
|
|
909
926
|
handleValuesChanged: handleValuesChanged,
|
|
910
927
|
scheduleRef: scheduleRef
|
|
911
928
|
})
|
|
912
929
|
}) : /*#__PURE__*/jsxRuntime.jsx(DisplayAvailability, {
|
|
913
930
|
periods: periods
|
|
914
|
-
})
|
|
915
|
-
})
|
|
931
|
+
})]
|
|
932
|
+
})
|
|
916
933
|
})
|
|
917
934
|
})
|
|
918
935
|
});
|