@licklist/design 0.72.6 → 0.72.7

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.
@@ -38,6 +38,7 @@ export interface EditEventFormProps extends HasPermissionProp {
38
38
  overrideNameError?: string;
39
39
  disabledRecurrent?: boolean;
40
40
  isCopyCreate?: boolean;
41
+ isBooked?: boolean;
41
42
  }
42
- export declare const EditEventForm: ({ disabled, categories, title, hasPermission, defaultEventValues, serverErrors, onSaveEvent, productSets, createProductSet, setEditProductSetId, isExternalPaymentLinkEnabled, timeZone, eventProductSet, overrideNameError, disabledRecurrent, isCopyCreate, }: EditEventFormProps) => import("react/jsx-runtime").JSX.Element;
43
+ export declare const EditEventForm: ({ disabled, categories, title, hasPermission, defaultEventValues, serverErrors, onSaveEvent, productSets, createProductSet, setEditProductSetId, isExternalPaymentLinkEnabled, timeZone, eventProductSet, overrideNameError, disabledRecurrent, isCopyCreate, isBooked, }: EditEventFormProps) => import("react/jsx-runtime").JSX.Element;
43
44
  //# sourceMappingURL=EditEventForm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditEventForm.d.ts","sourceRoot":"","sources":["../../../../../src/events/edit-event-modal/component/EditEventForm/EditEventForm.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,EACN,MAAM,sDAAsD,CAAA;AAO7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAA;AAGtF,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAA;AAG3E,OAAO,EAAE,UAAU,EAAE,MAAM,6DAA6D,CAAA;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAS5D,OAAO,EAAiB,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAGxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAA;AAGlF,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC9D,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAA;IACzB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,oBAAoB,CAAA;CACxC;AAED,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,aAAa,EAAE,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,kBAAkB,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACjD,YAAY,CAAC,EAAE,WAAW,CAAA;IAC1B,WAAW,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAA;IAClD,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;IACjC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,gBAAgB,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAA;IACtD,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,UAAU,CAAA;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAOD,eAAO,MAAM,aAAa,oQAiBvB,kBAAkB,4CAyWpB,CAAA"}
1
+ {"version":3,"file":"EditEventForm.d.ts","sourceRoot":"","sources":["../../../../../src/events/edit-event-modal/component/EditEventForm/EditEventForm.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,EACN,MAAM,sDAAsD,CAAA;AAO7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAA;AAGtF,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAA;AAG3E,OAAO,EAAE,UAAU,EAAE,MAAM,6DAA6D,CAAA;AAExF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAS5D,OAAO,EAAiB,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAGxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAA;AAKlF,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC9D,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAA;IACzB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,oBAAoB,CAAA;CACxC;AAED,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,aAAa,EAAE,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,kBAAkB,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACjD,YAAY,CAAC,EAAE,WAAW,CAAA;IAC1B,WAAW,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAA;IAClD,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;IACjC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,gBAAgB,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAA;IACtD,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,UAAU,CAAA;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAOD,eAAO,MAAM,aAAa,8QAkBvB,kBAAkB,4CAiYpB,CAAA"}
@@ -11,6 +11,9 @@ import { useMultipleImages } from '@licklist/plugins/dist/hooks/Media/useMultipl
11
11
  import FormErrorService from '@licklist/plugins/dist/services/Form/FormErrorService';
12
12
  import { scrollToError } from '@licklist/plugins/dist/utils/ScrollUtils';
13
13
  import { getFirstErrorKey } from '@licklist/plugins/dist/utils/FormValues';
14
+ import { ConfirmModal } from '../../../../modals/confirmation/ConfirmModal.js';
15
+ import { Dialog } from '../../../../modals/dialog/Dialog.js';
16
+ import { useDialogContext } from '../../../../modals/dialog/DialogContext.js';
14
17
  import { SaleDeadline } from '../SaleDeadline/SaleDeadline.js';
15
18
  import { CategoriesInput } from '../../../../provider/categories-input/CategoriesInput.js';
16
19
  import { CategoriesInputDescription } from '../../../../provider/categories-input/CategoriesInputDescription.js';
@@ -33,9 +36,8 @@ import { TipTapEditor } from '../../../../tiptap-editor/TipTapEditor.js';
33
36
  import { FileUpload } from '../../../../file-upload/FileUpload.js';
34
37
  import { IntervalInput } from '../../IntervalInput.js';
35
38
  import { SelectEventProductSet } from '../SelectEventProductSet/SelectEventProductSet.js';
36
- import { Dialog } from '../../../../modals/dialog/Dialog.js';
37
- import { useDialogContext } from '../../../../modals/dialog/DialogContext.js';
38
39
  import { isUrlValid } from '../../utils/isUrlValid.js';
40
+ import { toSimpleDateTime } from '../../utils/checkIfEventBooked.js';
39
41
 
40
42
  /* eslint-disable react-hooks/exhaustive-deps */ function _array_like_to_array(arr, len) {
41
43
  if (len == null || len > arr.length) len = arr.length;
@@ -140,7 +142,7 @@ var eventImageTypes = {
140
142
  uploadCover: IMAGE_TYPE_MAP[IMAGE_TYPE_COVER]
141
143
  };
142
144
  var EditEventForm = function(param) {
143
- var _param_disabled = param.disabled, disabled = _param_disabled === void 0 ? false : _param_disabled, categories = param.categories, title = param.title, _param_hasPermission = param.hasPermission, hasPermission = _param_hasPermission === void 0 ? true : _param_hasPermission, defaultEventValues = param.defaultEventValues, serverErrors = param.serverErrors, onSaveEvent = param.onSaveEvent, productSets = param.productSets, createProductSet = param.createProductSet, setEditProductSetId = param.setEditProductSetId, isExternalPaymentLinkEnabled = param.isExternalPaymentLinkEnabled, timeZone = param.timeZone, eventProductSet = param.eventProductSet, overrideNameError = param.overrideNameError, _param_disabledRecurrent = param.disabledRecurrent, disabledRecurrent = _param_disabledRecurrent === void 0 ? false : _param_disabledRecurrent, _param_isCopyCreate = param.isCopyCreate, isCopyCreate = _param_isCopyCreate === void 0 ? false : _param_isCopyCreate;
145
+ var _param_disabled = param.disabled, disabled = _param_disabled === void 0 ? false : _param_disabled, categories = param.categories, title = param.title, _param_hasPermission = param.hasPermission, hasPermission = _param_hasPermission === void 0 ? true : _param_hasPermission, defaultEventValues = param.defaultEventValues, serverErrors = param.serverErrors, onSaveEvent = param.onSaveEvent, productSets = param.productSets, createProductSet = param.createProductSet, setEditProductSetId = param.setEditProductSetId, isExternalPaymentLinkEnabled = param.isExternalPaymentLinkEnabled, timeZone = param.timeZone, eventProductSet = param.eventProductSet, overrideNameError = param.overrideNameError, _param_disabledRecurrent = param.disabledRecurrent, disabledRecurrent = _param_disabledRecurrent === void 0 ? false : _param_disabledRecurrent, _param_isCopyCreate = param.isCopyCreate, isCopyCreate = _param_isCopyCreate === void 0 ? false : _param_isCopyCreate, _param_isBooked = param.isBooked, isBooked = _param_isBooked === void 0 ? false : _param_isBooked;
144
146
  var _defaultEventValues_rrule, _defaultEventValues_rrule1, _errors_name, _errors_externalPaymentLink, _errors_integrationUrl;
145
147
  var t = useTranslation([
146
148
  'Design',
@@ -221,6 +223,8 @@ var EditEventForm = function(param) {
221
223
  rrule
222
224
  ]);
223
225
  var isChanged = !isEqual(watchedValues, sanitizeDefaultValues(defaultEventValues));
226
+ var isChangedTime = (watchedValues === null || watchedValues === void 0 ? void 0 : watchedValues.start) !== toSimpleDateTime((defaultEventValues === null || defaultEventValues === void 0 ? void 0 : defaultEventValues.startAt) || '') || (watchedValues === null || watchedValues === void 0 ? void 0 : watchedValues.end) !== toSimpleDateTime((defaultEventValues === null || defaultEventValues === void 0 ? void 0 : defaultEventValues.endAt) || '');
227
+ var isSinglEventWithBooked = !rrule && isBooked && isChangedTime;
224
228
  return /*#__PURE__*/ jsxs(Fragment, {
225
229
  children: [
226
230
  /*#__PURE__*/ jsx(Dialog, {
@@ -484,7 +488,21 @@ var EditEventForm = function(param) {
484
488
  eventProductSet: eventProductSet,
485
489
  overrideNameError: overrideNameError
486
490
  }),
487
- hasPermission && !showEditProductSet && /*#__PURE__*/ jsx(Button, {
491
+ isSinglEventWithBooked && /*#__PURE__*/ jsx(ConfirmModal, {
492
+ content: t('App:confirmChangeEventDate'),
493
+ children: function(confirm) {
494
+ return /*#__PURE__*/ jsx(Button, {
495
+ disabled: disabled || formState.isSubmitting || !isChanged || isImagesLoading || isCoverImagesLoading,
496
+ className: "save-event",
497
+ type: "button",
498
+ onClick: function() {
499
+ return confirm(handleSubmit(onSaveEvent, onErrorSubmit));
500
+ },
501
+ children: formState.isSubmitting ? "".concat(t('saveAndAdd'), "...") : t('saveAndAdd')
502
+ });
503
+ }
504
+ }),
505
+ hasPermission && !showEditProductSet && !isSinglEventWithBooked && /*#__PURE__*/ jsx(Button, {
488
506
  disabled: disabled || formState.isSubmitting || !isChanged || isImagesLoading || isCoverImagesLoading,
489
507
  className: "save-event",
490
508
  type: "submit",
@@ -0,0 +1,5 @@
1
+ import { EventWithMetadata } from '@licklist/plugins';
2
+ import { RecurrentEventMode } from 'src/events/edit-recurrent-event-modal';
3
+ export declare const checkIfEventIsBooked: (event?: EventWithMetadata, date?: string, activityMode?: RecurrentEventMode) => boolean;
4
+ export declare const toSimpleDateTime: (dateTime: string) => string;
5
+ //# sourceMappingURL=checkIfEventBooked.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkIfEventBooked.d.ts","sourceRoot":"","sources":["../../../../src/events/edit-event-modal/utils/checkIfEventBooked.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,EAGL,kBAAkB,EACnB,MAAM,uCAAuC,CAAA;AAE9C,eAAO,MAAM,oBAAoB,WACvB,iBAAiB,SAClB,MAAM,iBACE,kBAAkB,YAsBlC,CAAA;AAGD,eAAO,MAAM,gBAAgB,aAAc,MAAM,WAM7C,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { DATE_FORMAT, DATE_TIME_FULL_FORMAT } from '@licklist/core/dist/Config';
2
+ import { DateTime } from 'luxon';
3
+ import { MODE_ALL_EVENTS, MODE_THIS_AND_FOLLOWING_EVENTS } from '../../edit-recurrent-event-modal/EditRecurrentEventModal.js';
4
+
5
+ var checkIfEventIsBooked = function(event, date, activityMode) {
6
+ var _event_eventStatistic, _Object_keys;
7
+ if (!event || !date) return false;
8
+ var productCategorySummary = event === null || event === void 0 ? void 0 : (_event_eventStatistic = event.eventStatistic) === null || _event_eventStatistic === void 0 ? void 0 : _event_eventStatistic.productCategorySummary;
9
+ if (!productCategorySummary) return false;
10
+ var summaryFormattedDate = DateTime.fromISO(date).toUTC().toFormat(DATE_FORMAT);
11
+ var summaryDays = (_Object_keys = Object.keys(productCategorySummary)) === null || _Object_keys === void 0 ? void 0 : _Object_keys.map(function(date) {
12
+ return DateTime.fromFormat(date, DATE_TIME_FULL_FORMAT).toFormat(DATE_FORMAT);
13
+ });
14
+ if (activityMode && (activityMode === MODE_ALL_EVENTS || activityMode === MODE_THIS_AND_FOLLOWING_EVENTS)) {
15
+ return !!summaryDays.length;
16
+ }
17
+ return summaryDays.includes(summaryFormattedDate);
18
+ };
19
+ var toSimpleDateTime = function(dateTime) {
20
+ return dateTime && DateTime.fromISO(dateTime).toISO({
21
+ includeOffset: false,
22
+ suppressMilliseconds: true,
23
+ suppressSeconds: true
24
+ });
25
+ };
26
+
27
+ export { checkIfEventIsBooked, toSimpleDateTime };
@@ -1,3 +1,4 @@
1
+ import { EventWithMetadata } from '@licklist/plugins';
1
2
  export declare const MODE_THIS_EVENT = "thisEvent";
2
3
  export declare const MODE_THIS_AND_FOLLOWING_EVENTS = "thisAndFollowingEvents";
3
4
  export declare const MODE_ALL_EVENTS = "allEvents";
@@ -22,7 +23,11 @@ export type EditRecurrentEventModalProps = {
22
23
  title: string;
23
24
  onSubmit: (values: EditRecurrentEventModalValues) => void;
24
25
  isDateWasChanged?: boolean;
26
+ isChangeDateOrTime?: boolean;
27
+ event?: EventWithMetadata;
28
+ date?: string;
29
+ isRemoveModal?: boolean;
25
30
  };
26
- export declare const EditRecurrentEventModal: ({ disabled, isOpen, onHide, title, onSubmit, isDateWasChanged }: EditRecurrentEventModalProps) => import("react/jsx-runtime").JSX.Element;
31
+ export declare const EditRecurrentEventModal: ({ disabled, isOpen, onHide, title, onSubmit, isDateWasChanged, isChangeDateOrTime, event, date, isRemoveModal, }: EditRecurrentEventModalProps) => import("react/jsx-runtime").JSX.Element;
27
32
  export {};
28
33
  //# sourceMappingURL=EditRecurrentEventModal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditRecurrentEventModal.d.ts","sourceRoot":"","sources":["../../../src/events/edit-recurrent-event-modal/EditRecurrentEventModal.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe,cAAc,CAAA;AAC1C,eAAO,MAAM,8BAA8B,2BAA2B,CAAA;AACtE,eAAO,MAAM,eAAe,cAAc,CAAA;AAE1C,QAAA,MAAM,KAAK,+DAID,CAAA;AAEV,eAAO,MAAM,2BAA2B,cAAkB,CAAA;AAE1D,eAAO,MAAM,yBAAyB;;;;CAIrC,CAAA;AAED,eAAO,MAAM,gCAAgC;;CAE5C,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAA;AAEvD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,kBAAkB,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,MAAM,EAAE,6BAA6B,KAAK,IAAI,CAAA;IACzD,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,uBAAuB,oEAOjC,4BAA4B,4CAkF9B,CAAA"}
1
+ {"version":3,"file":"EditRecurrentEventModal.d.ts","sourceRoot":"","sources":["../../../src/events/edit-recurrent-event-modal/EditRecurrentEventModal.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAGrD,eAAO,MAAM,eAAe,cAAc,CAAA;AAC1C,eAAO,MAAM,8BAA8B,2BAA2B,CAAA;AACtE,eAAO,MAAM,eAAe,cAAc,CAAA;AAE1C,QAAA,MAAM,KAAK,+DAID,CAAA;AAEV,eAAO,MAAM,2BAA2B,cAAkB,CAAA;AAE1D,eAAO,MAAM,yBAAyB;;;;CAIrC,CAAA;AAED,eAAO,MAAM,gCAAgC;;CAE5C,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAA;AAEvD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,kBAAkB,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,MAAM,EAAE,6BAA6B,KAAK,IAAI,CAAA;IACzD,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,KAAK,CAAC,EAAE,iBAAiB,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,uBAAuB,qHAWjC,4BAA4B,4CAoG9B,CAAA"}
@@ -3,6 +3,7 @@ import { Modal, Form, Button } from 'react-bootstrap';
3
3
  import { useTranslation } from 'react-i18next';
4
4
  import { useForm, Controller } from 'react-hook-form';
5
5
  import { FaTimes } from 'react-icons/fa';
6
+ import { checkIfEventIsBooked } from '../edit-event-modal/utils/checkIfEventBooked.js';
6
7
 
7
8
  function _define_property(obj, key, value) {
8
9
  if (key in obj) {
@@ -25,14 +26,17 @@ var _obj;
25
26
  var RECURRENT_MODE_TYPES_LIST = (_obj = {}, _define_property(_obj, MODE_THIS_EVENT, 1), _define_property(_obj, MODE_THIS_AND_FOLLOWING_EVENTS, 2), _define_property(_obj, MODE_ALL_EVENTS, 3), _obj);
26
27
  var RECURRENT_MODE_TYPES_WITHOUT_ALL = _define_property({}, MODE_THIS_EVENT, 1);
27
28
  var EditRecurrentEventModal = function(param) {
28
- var disabled = param.disabled, isOpen = param.isOpen, onHide = param.onHide, title = param.title, onSubmit = param.onSubmit, _param_isDateWasChanged = param.isDateWasChanged, isDateWasChanged = _param_isDateWasChanged === void 0 ? false : _param_isDateWasChanged;
29
+ var disabled = param.disabled, isOpen = param.isOpen, onHide = param.onHide, title = param.title, onSubmit = param.onSubmit, _param_isDateWasChanged = param.isDateWasChanged, isDateWasChanged = _param_isDateWasChanged === void 0 ? false : _param_isDateWasChanged, _param_isChangeDateOrTime = param.isChangeDateOrTime, isChangeDateOrTime = _param_isChangeDateOrTime === void 0 ? false : _param_isChangeDateOrTime, event = param.event, date = param.date, _param_isRemoveModal = param.isRemoveModal, isRemoveModal = _param_isRemoveModal === void 0 ? false : _param_isRemoveModal;
29
30
  var t = useTranslation('Design').t;
30
31
  var _useForm = useForm({
31
32
  defaultValues: {
32
33
  mode: DEFAULT_RECURRENT_MODE_TYPE
33
34
  }
34
- }), control = _useForm.control, handleSubmit = _useForm.handleSubmit;
35
+ }), control = _useForm.control, watch = _useForm.watch, handleSubmit = _useForm.handleSubmit;
36
+ var activityMode = watch('mode');
37
+ var isBooked = checkIfEventIsBooked(event, date, activityMode);
35
38
  var recurrentListMode = isDateWasChanged ? RECURRENT_MODE_TYPES_WITHOUT_ALL : RECURRENT_MODE_TYPES_LIST;
39
+ var confirmDescription = isChangeDateOrTime && isBooked || isBooked && isRemoveModal;
36
40
  return /*#__PURE__*/ jsx(Modal, {
37
41
  show: isOpen,
38
42
  onHide: onHide,
@@ -61,6 +65,11 @@ var EditRecurrentEventModal = function(param) {
61
65
  })
62
66
  ]
63
67
  }),
68
+ confirmDescription && /*#__PURE__*/ jsx(Modal.Dialog, {
69
+ className: "pl-4",
70
+ contentClassName: "border-0",
71
+ children: t(isRemoveModal ? 'App:confirmRemoveEventWithBooking' : 'App:confirmChangeEventDate')
72
+ }),
64
73
  /*#__PURE__*/ jsx(Modal.Body, {
65
74
  className: "p-0 ml-4",
66
75
  children: /*#__PURE__*/ jsx(Form.Group, {
@@ -106,14 +115,14 @@ var EditRecurrentEventModal = function(param) {
106
115
  onClick: onHide,
107
116
  className: "text-decoration-none",
108
117
  disabled: disabled,
109
- children: t('cancel')
118
+ children: t(confirmDescription ? 'App:cancelChangeDate' : 'cancel')
110
119
  }),
111
120
  /*#__PURE__*/ jsx(Button, {
112
121
  variant: "success",
113
122
  type: "submit",
114
123
  className: "text-decoration-none",
115
124
  disabled: disabled,
116
- children: t('ok').toUpperCase()
125
+ children: t(confirmDescription ? 'App:saveChangeDate' : 'OK')
117
126
  })
118
127
  ]
119
128
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@licklist/design",
3
- "version": "0.72.6",
3
+ "version": "0.72.7",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+ssh://git@bitbucket.org/artelogicsoft/licklist_design.git"
@@ -19,6 +19,7 @@ import { ServerError } from '@licklist/plugins/dist/hooks/Api/useHttpQuery'
19
19
  import { scrollToError } from '@licklist/plugins/dist/utils/ScrollUtils'
20
20
  import { getFirstErrorKey } from '@licklist/plugins/dist/utils/FormValues'
21
21
  import { ProductSet } from '@licklist/core/dist/DataMapper/Product/ProductSetDataMapper'
22
+ import { ConfirmModal } from 'src/modals'
22
23
  import { CategoryGroup } from '../../../../types/categories'
23
24
  import { SaleDeadline } from '../SaleDeadline/SaleDeadline'
24
25
  import {
@@ -33,6 +34,8 @@ import { SelectEventProductSet } from '../SelectEventProductSet'
33
34
  import { Dialog, useDialogContext } from '../../../../modals/dialog'
34
35
  import { ProductSetFormValues } from '../../../../product-set/form/ProductSetForm'
35
36
  import { isUrlValid } from '../../utils/isUrlValid'
37
+ import { toSimpleDateTime } from '../../utils/checkIfEventBooked'
38
+
36
39
 
37
40
  export interface EditEventFormValues extends IntervalInputValues {
38
41
  name: string
@@ -68,6 +71,7 @@ export interface EditEventFormProps extends HasPermissionProp {
68
71
  overrideNameError?: string
69
72
  disabledRecurrent?: boolean
70
73
  isCopyCreate?: boolean
74
+ isBooked?: boolean
71
75
  }
72
76
 
73
77
  const eventImageTypes = {
@@ -92,6 +96,7 @@ export const EditEventForm = ({
92
96
  overrideNameError,
93
97
  disabledRecurrent = false,
94
98
  isCopyCreate = false,
99
+ isBooked = false,
95
100
  }: EditEventFormProps) => {
96
101
  const { t } = useTranslation(['Design', 'Validation'])
97
102
 
@@ -195,8 +200,11 @@ export const EditEventForm = ({
195
200
  rrule && setValue('rrule', rrule?.concat(`;EXDATE=${defaultExDate}`))
196
201
  }, [defaultExDate, rrule])
197
202
 
198
-
199
203
  const isChanged = !isEqual(watchedValues, sanitizeDefaultValues(defaultEventValues));
204
+ const isChangedTime =
205
+ watchedValues?.start !== toSimpleDateTime(defaultEventValues?.startAt || '') ||
206
+ watchedValues?.end !== toSimpleDateTime(defaultEventValues?.endAt || '')
207
+ const isSinglEventWithBooked = !rrule && isBooked && isChangedTime
200
208
 
201
209
  return (
202
210
  <>
@@ -432,7 +440,28 @@ export const EditEventForm = ({
432
440
  overrideNameError={overrideNameError}
433
441
  />
434
442
 
435
- {hasPermission && !showEditProductSet && (
443
+ {isSinglEventWithBooked && (
444
+ <ConfirmModal content={t('App:confirmChangeEventDate')}>
445
+ {(confirm) => (
446
+ <Button
447
+ disabled={
448
+ disabled ||
449
+ formState.isSubmitting ||
450
+ !isChanged ||
451
+ isImagesLoading ||
452
+ isCoverImagesLoading
453
+ }
454
+ className='save-event'
455
+ type='button'
456
+ onClick={() => confirm(handleSubmit(onSaveEvent, onErrorSubmit))}
457
+ >
458
+ {formState.isSubmitting ? `${t('saveAndAdd')}...` : t('saveAndAdd')}
459
+ </Button>
460
+ )}
461
+ </ConfirmModal>
462
+ )}
463
+
464
+ {hasPermission && !showEditProductSet && !isSinglEventWithBooked && (
436
465
  <Button
437
466
  disabled={
438
467
  disabled ||
@@ -490,3 +519,5 @@ const sanitizeDefaultValues = (
490
519
  recurrenceEndAt: values?.recurrenceEndAt ?? undefined,
491
520
  }
492
521
  }
522
+
523
+
@@ -0,0 +1,44 @@
1
+ import { DATE_FORMAT, DATE_TIME_FULL_FORMAT } from '@licklist/core/dist/Config'
2
+ import { EventWithMetadata } from '@licklist/plugins'
3
+ import { DateTime } from 'luxon'
4
+ import {
5
+ MODE_ALL_EVENTS,
6
+ MODE_THIS_AND_FOLLOWING_EVENTS,
7
+ RecurrentEventMode,
8
+ } from 'src/events/edit-recurrent-event-modal'
9
+
10
+ export const checkIfEventIsBooked = (
11
+ event?: EventWithMetadata,
12
+ date?: string,
13
+ activityMode?: RecurrentEventMode,
14
+ ) => {
15
+ if (!event || !date) return false
16
+ const productCategorySummary = event?.eventStatistic?.productCategorySummary
17
+
18
+ if (!productCategorySummary) return false
19
+ const summaryFormattedDate = DateTime.fromISO(date)
20
+ .toUTC()
21
+ .toFormat(DATE_FORMAT)
22
+
23
+ const summaryDays = Object.keys(productCategorySummary)?.map((date) =>
24
+ DateTime.fromFormat(date, DATE_TIME_FULL_FORMAT).toFormat(DATE_FORMAT),
25
+ )
26
+ if (
27
+ activityMode &&
28
+ (activityMode === MODE_ALL_EVENTS ||
29
+ activityMode === MODE_THIS_AND_FOLLOWING_EVENTS)
30
+ ) {
31
+ return !!summaryDays.length
32
+ }
33
+
34
+ return summaryDays.includes(summaryFormattedDate)
35
+ }
36
+
37
+
38
+ export const toSimpleDateTime = (dateTime: string) =>
39
+ dateTime &&
40
+ DateTime.fromISO(dateTime).toISO({
41
+ includeOffset: false,
42
+ suppressMilliseconds: true,
43
+ suppressSeconds: true,
44
+ })
@@ -2,6 +2,8 @@ import { Form, Modal, Button } from 'react-bootstrap'
2
2
  import { useTranslation } from 'react-i18next'
3
3
  import { Controller, useForm } from 'react-hook-form'
4
4
  import { FaTimes } from 'react-icons/fa'
5
+ import { EventWithMetadata } from '@licklist/plugins'
6
+ import { checkIfEventIsBooked } from '../edit-event-modal/utils/checkIfEventBooked'
5
7
 
6
8
  export const MODE_THIS_EVENT = 'thisEvent'
7
9
  export const MODE_THIS_AND_FOLLOWING_EVENTS = 'thisAndFollowingEvents'
@@ -38,6 +40,10 @@ export type EditRecurrentEventModalProps = {
38
40
  title: string
39
41
  onSubmit: (values: EditRecurrentEventModalValues) => void
40
42
  isDateWasChanged?: boolean
43
+ isChangeDateOrTime?: boolean
44
+ event?: EventWithMetadata
45
+ date?: string
46
+ isRemoveModal?: boolean
41
47
  }
42
48
 
43
49
  export const EditRecurrentEventModal = ({
@@ -46,17 +52,30 @@ export const EditRecurrentEventModal = ({
46
52
  onHide,
47
53
  title,
48
54
  onSubmit,
49
- isDateWasChanged = false
55
+ isDateWasChanged = false,
56
+ isChangeDateOrTime = false,
57
+ event,
58
+ date,
59
+ isRemoveModal = false,
50
60
  }: EditRecurrentEventModalProps) => {
51
61
  const { t } = useTranslation('Design')
52
62
 
53
- const { control, handleSubmit } = useForm<EditRecurrentEventModalValues>({
54
- defaultValues: {
55
- mode: DEFAULT_RECURRENT_MODE_TYPE,
56
- },
57
- })
63
+ const { control, watch, handleSubmit } =
64
+ useForm<EditRecurrentEventModalValues>({
65
+ defaultValues: {
66
+ mode: DEFAULT_RECURRENT_MODE_TYPE,
67
+ },
68
+ })
58
69
 
59
- const recurrentListMode = isDateWasChanged? RECURRENT_MODE_TYPES_WITHOUT_ALL : RECURRENT_MODE_TYPES_LIST
70
+ const activityMode = watch('mode')
71
+
72
+ const isBooked = checkIfEventIsBooked(event, date, activityMode)
73
+ const recurrentListMode = isDateWasChanged
74
+ ? RECURRENT_MODE_TYPES_WITHOUT_ALL
75
+ : RECURRENT_MODE_TYPES_LIST
76
+
77
+ const confirmDescription =
78
+ (isChangeDateOrTime && isBooked) || (isBooked && isRemoveModal)
60
79
 
61
80
  return (
62
81
  <Modal
@@ -78,6 +97,15 @@ export const EditRecurrentEventModal = ({
78
97
  <FaTimes size={16} />
79
98
  </Button>
80
99
  </Modal.Header>
100
+ {confirmDescription && (
101
+ <Modal.Dialog className='pl-4' contentClassName='border-0'>
102
+ {t(
103
+ isRemoveModal
104
+ ? 'App:confirmRemoveEventWithBooking'
105
+ : 'App:confirmChangeEventDate',
106
+ )}
107
+ </Modal.Dialog>
108
+ )}
81
109
  <Modal.Body className='p-0 ml-4'>
82
110
  <Form.Group className='m-0'>
83
111
  <Controller
@@ -115,7 +143,7 @@ export const EditRecurrentEventModal = ({
115
143
  className='text-decoration-none'
116
144
  disabled={disabled}
117
145
  >
118
- {t('cancel')}
146
+ {t(confirmDescription ? 'App:cancelChangeDate' : 'cancel')}
119
147
  </Button>
120
148
  <Button
121
149
  variant='success'
@@ -123,7 +151,7 @@ export const EditRecurrentEventModal = ({
123
151
  className='text-decoration-none'
124
152
  disabled={disabled}
125
153
  >
126
- {t('ok').toUpperCase()}
154
+ {t(confirmDescription ? 'App:saveChangeDate' : 'OK')}
127
155
  </Button>
128
156
  </Modal.Footer>
129
157
  </Form>
package/yarn.lock CHANGED
@@ -8072,9 +8072,9 @@ __metadata:
8072
8072
  linkType: hard
8073
8073
 
8074
8074
  "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001109, caniuse-lite@npm:^1.0.30001125, caniuse-lite@npm:^1.0.30001646, caniuse-lite@npm:^1.0.30001688":
8075
- version: 1.0.30001703
8076
- resolution: "caniuse-lite@npm:1.0.30001703"
8077
- checksum: 10c0/ed88e318da28e9e59c4ac3a2e3c42859558b7b713aebf03696a1f916e4ed4b70734dda82be04635e2b62ec355b8639bbed829b7b12ff528d7f9cc31a3a5bea91
8075
+ version: 1.0.30001704
8076
+ resolution: "caniuse-lite@npm:1.0.30001704"
8077
+ checksum: 10c0/4efa0ece51ef58e7ce7e7c8cd7b50372bcb910581a47397be5c086c046c3cd436d123b734351fb20f638c322b339198edf89b5b632ff59bdd171c74ff7f4efcf
8078
8078
  languageName: node
8079
8079
  linkType: hard
8080
8080
 
@@ -9861,9 +9861,9 @@ __metadata:
9861
9861
  linkType: hard
9862
9862
 
9863
9863
  "electron-to-chromium@npm:^1.3.564, electron-to-chromium@npm:^1.5.73":
9864
- version: 1.5.114
9865
- resolution: "electron-to-chromium@npm:1.5.114"
9866
- checksum: 10c0/cb86057d78f1aeb53ab6550dedacfd9496bcc6676bab7b48466c3958ba9ce0ed78c7213b1eab99ba38542cbaaa176eb7f8ea8b0274c0688b8ce3058291549430
9864
+ version: 1.5.116
9865
+ resolution: "electron-to-chromium@npm:1.5.116"
9866
+ checksum: 10c0/27f117cd18b17b6a7c4ddf82db5f5093c0eaa37bab27798f544648bf6408ef7d7c938251b50210eb1fa98d1bcf0a65b4302f926a147896f8a3dea3c0fc9a45f6
9867
9867
  languageName: node
9868
9868
  linkType: hard
9869
9869