@licklist/design 0.48.2 → 0.49.0-dev.1

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.
Files changed (44) hide show
  1. package/dist/calendar/Calendar.d.ts +1 -0
  2. package/dist/calendar/Calendar.d.ts.map +1 -1
  3. package/dist/calendar/components/CalendarDates/CalendarDates.d.ts +1 -1
  4. package/dist/calendar/components/CalendarDates/CalendarDates.d.ts.map +1 -1
  5. package/dist/calendar/components/CalendarDates/CalendarDates.js +1 -1
  6. package/dist/date-time-button/DateTimeButton.d.ts +3 -2
  7. package/dist/date-time-button/DateTimeButton.d.ts.map +1 -1
  8. package/dist/date-time-button/DateTimeButton.js +1 -1
  9. package/dist/iframe/order-process/components/BookingSummaryFooter/BookingSummaryFooter.d.ts +2 -1
  10. package/dist/iframe/order-process/components/BookingSummaryFooter/BookingSummaryFooter.d.ts.map +1 -1
  11. package/dist/iframe/order-process/components/BookingSummaryFooter/BookingSummaryFooter.js +1 -1
  12. package/dist/product-set/product/ProductControl.d.ts.map +1 -1
  13. package/dist/product-set/product/ProductControl.js +1 -1
  14. package/dist/product-set/product/duration/ProductDurationControl.d.ts +2 -2
  15. package/dist/product-set/product/duration/ProductDurationControl.d.ts.map +1 -1
  16. package/dist/product-set/product/duration/ProductDurationControl.js +1 -1
  17. package/dist/sales/manual-booking/summary/ManualBookingSummary.d.ts +2 -1
  18. package/dist/sales/manual-booking/summary/ManualBookingSummary.d.ts.map +1 -1
  19. package/dist/sales/manual-booking/summary/ManualBookingSummary.js +1 -1
  20. package/dist/static/switch/BooleanSwitch.d.ts +3 -1
  21. package/dist/static/switch/BooleanSwitch.d.ts.map +1 -1
  22. package/dist/static/switch/BooleanSwitch.js +1 -1
  23. package/dist/styles/product-set/EditProductSetElement.scss +11 -1
  24. package/dist/styles/sales/BookingFilter.scss +3 -1
  25. package/dist/styles/sales/BookingResults.scss +1 -1
  26. package/dist/styles/static/Switch.scss +1 -0
  27. package/dist/table/TableHelperComponent.d.ts +2 -1
  28. package/dist/table/TableHelperComponent.d.ts.map +1 -1
  29. package/dist/table/TableHelperComponent.js +1 -1
  30. package/package.json +3 -3
  31. package/src/calendar/Calendar.tsx +1 -0
  32. package/src/calendar/components/CalendarDates/CalendarDates.tsx +2 -0
  33. package/src/date-time-button/DateTimeButton.tsx +16 -3
  34. package/src/iframe/order-process/components/BookingSummaryFooter/BookingSummaryFooter.tsx +16 -3
  35. package/src/product-set/form/ProductSetForm.stories.tsx +53 -0
  36. package/src/product-set/product/ProductControl.tsx +78 -45
  37. package/src/product-set/product/duration/ProductDurationControl.tsx +16 -12
  38. package/src/sales/manual-booking/summary/ManualBookingSummary.tsx +4 -1
  39. package/src/static/switch/BooleanSwitch.tsx +6 -2
  40. package/src/styles/product-set/EditProductSetElement.scss +11 -1
  41. package/src/styles/sales/BookingFilter.scss +3 -1
  42. package/src/styles/sales/BookingResults.scss +1 -1
  43. package/src/styles/static/Switch.scss +1 -0
  44. package/src/table/TableHelperComponent.tsx +73 -18
@@ -14,6 +14,7 @@ export type CalendarProps = {
14
14
  initialDate?: DateTime;
15
15
  getAvailability?: (date: DateTime) => ZoneResourcesAvailability | null;
16
16
  includeAvailability?: boolean;
17
+ shouldCalculateResources?: boolean;
17
18
  };
18
19
  export declare const Calendar: ({ disabledDates, initialDate, ...props }: CalendarProps) => JSX.Element;
19
20
  //# sourceMappingURL=Calendar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/calendar/Calendar.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,0EAA0E,CAAC;AAIrH,eAAO,MAAM,eAAe,UAK1B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,QAAQ,CAAC;IACtB,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnD,aAAa,EAAE,QAAQ,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC3B,YAAY,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,yBAAyB,GAAG,IAAI,CAAC;IACvE,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,QAAQ,6CAIlB,aAAa,gBAaf,CAAC"}
1
+ {"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/calendar/Calendar.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,0EAA0E,CAAC;AAIrH,eAAO,MAAM,eAAe,UAK1B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,QAAQ,CAAC;IACtB,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnD,aAAa,EAAE,QAAQ,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC3B,YAAY,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,yBAAyB,GAAG,IAAI,CAAC;IACvE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,QAAQ,6CAIlB,aAAa,gBAaf,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  import { CalendarProps } from "../../Calendar";
3
3
  export type CalendarDatesProps = Omit<CalendarProps, "currentDate" | "setCurrentDate" | "initialDate">;
4
- export declare const CalendarDates: ({ disabledDates, isLoading, calendarDates, selectedDate, setSelectedDate, fromPrice, getAvailability, includeAvailability, }: CalendarDatesProps) => JSX.Element;
4
+ export declare const CalendarDates: ({ disabledDates, isLoading, calendarDates, selectedDate, setSelectedDate, fromPrice, getAvailability, includeAvailability, shouldCalculateResources, }: CalendarDatesProps) => JSX.Element;
5
5
  //# sourceMappingURL=CalendarDates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CalendarDates.d.ts","sourceRoot":"","sources":["../../../../src/calendar/components/CalendarDates/CalendarDates.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,aAAa,EACb,aAAa,GAAG,gBAAgB,GAAG,aAAa,CACjD,CAAC;AAEF,eAAO,MAAM,aAAa,iIASvB,kBAAkB,gBA+CpB,CAAC"}
1
+ {"version":3,"file":"CalendarDates.d.ts","sourceRoot":"","sources":["../../../../src/calendar/components/CalendarDates/CalendarDates.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,aAAa,EACb,aAAa,GAAG,gBAAgB,GAAG,aAAa,CACjD,CAAC;AAEF,eAAO,MAAM,aAAa,2JAUvB,kBAAkB,gBAgDpB,CAAC"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,a=require("tslib"),r=require("react"),t=(e=r)&&"object"==typeof e&&"default"in e?e.default:e,i=require("../../utils/index.js"),l=require("../../../date-time-button/DateTimeButton.js"),d=require("../CalendarWeekdays/CalendarWeekdays.js");exports.CalendarDates=function(e){var n=e.disabledDates,s=void 0===n?[]:n,u=e.isLoading,o=void 0!==u&&u,c=e.calendarDates,v=e.selectedDate,m=e.setSelectedDate,f=e.fromPrice,y=e.getAvailability,p=e.includeAvailability,D=r.useMemo((function(){var e,r,t=null!==(r=null===(e=c[0])||void 0===e?void 0:e.weekday)&&void 0!==r?r:0;if(1===t)return c;for(var i=[];t>1;)i.push(null),t-=1;return a.__spreadArray(a.__spreadArray([],a.__read(i),!1),a.__read(c),!1)}),[c]);return t.createElement("div",{className:"calendar-dates-wrapper"},t.createElement(d.CalendarWeekdays,null),t.createElement("div",{className:"calendar-dates"},D.map((function(e){if(null===e)return t.createElement("div",null);var a=o||i.isSelectedDateDisabled(e,s);return t.createElement(l.DateTimeButton,{key:+e,isDisabled:a,isSelected:v?e.hasSame(v,"day"):void 0,date:e,onSelect:function(){return m(e)},price:f,resources:null==y?void 0:y(e),showResources:p,variant:l.Variant.month})}))))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,a=require("tslib"),r=require("react"),t=(e=r)&&"object"==typeof e&&"default"in e?e.default:e,l=require("../../utils/index.js"),i=require("../../../date-time-button/DateTimeButton.js"),d=require("../CalendarWeekdays/CalendarWeekdays.js");exports.CalendarDates=function(e){var s=e.disabledDates,n=void 0===s?[]:s,u=e.isLoading,o=void 0!==u&&u,c=e.calendarDates,v=e.selectedDate,m=e.setSelectedDate,f=e.fromPrice,y=e.getAvailability,p=e.includeAvailability,D=e.shouldCalculateResources,_=r.useMemo((function(){var e,r,t=null!==(r=null===(e=c[0])||void 0===e?void 0:e.weekday)&&void 0!==r?r:0;if(1===t)return c;for(var l=[];t>1;)l.push(null),t-=1;return a.__spreadArray(a.__spreadArray([],a.__read(l),!1),a.__read(c),!1)}),[c]);return t.createElement("div",{className:"calendar-dates-wrapper"},t.createElement(d.CalendarWeekdays,null),t.createElement("div",{className:"calendar-dates"},_.map((function(e){if(null===e)return t.createElement("div",null);var a=o||l.isSelectedDateDisabled(e,n);return t.createElement(i.DateTimeButton,{key:+e,isDisabled:a,isSelected:v?e.hasSame(v,"day"):void 0,date:e,onSelect:function(){return m(e)},price:f,resources:null==y?void 0:y(e),showResources:p,variant:i.Variant.month,shouldCalculateResources:D})}))))};
@@ -13,9 +13,10 @@ export type DateTimeButtonProps = {
13
13
  isSoldOut?: boolean;
14
14
  onSelect: (date: DateTime) => void;
15
15
  price?: string | number | ReactElement | null;
16
- resources?: ZoneResourcesAvailability | null;
16
+ resources: ZoneResourcesAvailability | null | undefined;
17
17
  showResources?: boolean;
18
+ shouldCalculateResources?: boolean;
18
19
  variant: Variant;
19
20
  };
20
- export declare const DateTimeButton: ({ date, isDisabled: _isDisabled, isSelected, isSoldOut: _isSoldOut, onSelect, price, resources, showResources, variant, }: DateTimeButtonProps) => JSX.Element;
21
+ export declare const DateTimeButton: ({ date, isDisabled: _isDisabled, isSelected, isSoldOut: _isSoldOut, onSelect, price, resources, showResources, shouldCalculateResources, variant, }: DateTimeButtonProps) => JSX.Element;
21
22
  //# sourceMappingURL=DateTimeButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimeButton.d.ts","sourceRoot":"","sources":["../../src/date-time-button/DateTimeButton.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,0EAA0E,CAAC;AAIrH,oBAAY,OAAO;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;IAC9C,SAAS,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,cAAc,8HAUxB,mBAAmB,gBA6CrB,CAAC"}
1
+ {"version":3,"file":"DateTimeButton.d.ts","sourceRoot":"","sources":["../../src/date-time-button/DateTimeButton.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,0EAA0E,CAAC;AAKrH,oBAAY,OAAO;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;IAC9C,SAAS,EAAE,yBAAyB,GAAG,IAAI,GAAG,SAAS,CAAC;IACxD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,cAAc,wJAWxB,mBAAmB,gBAuDrB,CAAC"}
@@ -1 +1 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t,i=e(require("react")),a=e(require("clsx")),r=require("luxon"),n=require("../availability-indicator/AvailabilityIndicator.js"),o=require("./DateContent.js");(t=exports.Variant||(exports.Variant={})).week="week",t.month="month",t.time="time";var s=function(e){return e.toUTC()<=r.DateTime.now().toUTC()};exports.DateTimeButton=function(e){var t=e.date,r=e.isDisabled,l=e.isSelected,c=e.isSoldOut,u=e.onSelect,d=e.price,m=e.resources,b=e.showResources,v=e.variant,p=void 0===v?exports.Variant.week:v,x=c||m&&m.bookedResources>=m.totalResources,f=p===exports.Variant.time,y=f&&s(t),w=r||x||y;return i.createElement("button",{type:"button",onClick:function(){return u(t)},disabled:w,className:a("date-time-button",w&&"disabled",l&&"selected",f&&"time-button",f&&"only-time-container",!f&&"today",p===exports.Variant.month&&"calendar-view")},i.createElement(o.DateContent,{date:t,isDisabled:w,isSelected:l,variant:p}),d&&!w&&i.createElement("div",{className:"price"},d),b&&m&&i.createElement(n.AvailabilityIndicator,{resources:m,isUnavailable:r||y,isSoldOut:x}))};
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t,a=e(require("react")),r=e(require("clsx")),i=require("luxon"),o=require("lodash"),s=require("../availability-indicator/AvailabilityIndicator.js"),n=require("./DateContent.js");(t=exports.Variant||(exports.Variant={})).week="week",t.month="month",t.time="time";var l=function(e){return e.toUTC()<=i.DateTime.now().toUTC()};exports.DateTimeButton=function(e){var t=e.date,i=e.isDisabled,u=e.isSelected,c=e.isSoldOut,d=e.onSelect,m=e.price,b=e.resources,v=e.showResources,p=e.shouldCalculateResources,x=void 0===p||p,f=e.variant,h=void 0===f?exports.Variant.week:f,y=c||x&&b&&b.bookedResources>=b.totalResources,k=h===exports.Variant.time,q=k&&l(t),w=x&&(!b||!o.has(b,"bookedResources")||!o.has(b,"totalResources")),C=i||y||q||w;return a.createElement("button",{type:"button",onClick:function(){return d(t)},disabled:C,className:r("date-time-button",C&&"disabled",u&&"selected",k&&"time-button",k&&"only-time-container",!k&&"today",h===exports.Variant.month&&"calendar-view")},a.createElement(n.DateContent,{date:t,isDisabled:C,isSelected:u,variant:h}),m&&!C&&a.createElement("div",{className:"price"},m),v&&b&&a.createElement(s.AvailabilityIndicator,{resources:b,isUnavailable:i||q,isSoldOut:y}))};
@@ -11,8 +11,9 @@ type FooterProps = Partial<{
11
11
  disabled?: boolean;
12
12
  buttonLabel?: ReactNode;
13
13
  showButton?: boolean;
14
+ isLoading: boolean;
14
15
  } & (ButtonPropsWithoutOnClick | ButtonPropsWithOnClick)>;
15
16
  export type BookingSummaryFooterProps = PropsWithChildren<FooterProps>;
16
- export declare const BookingSummaryFooter: ({ disabled, onClick, buttonLabel, form, children, showButton, }: BookingSummaryFooterProps) => JSX.Element;
17
+ export declare const BookingSummaryFooter: ({ disabled: _disabled, onClick, buttonLabel, form, children, showButton, isLoading, }: BookingSummaryFooterProps) => JSX.Element;
17
18
  export {};
18
19
  //# sourceMappingURL=BookingSummaryFooter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BookingSummaryFooter.d.ts","sourceRoot":"","sources":["../../../../../src/iframe/order-process/components/BookingSummaryFooter/BookingSummaryFooter.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAK5D,KAAK,yBAAyB,GAAG;IAC/B,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,KAAK,WAAW,GAAG,OAAO,CACxB;IACE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,CAAC,yBAAyB,GAAG,sBAAsB,CAAC,CACzD,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAEvE,eAAO,MAAM,oBAAoB,oEAO9B,yBAAyB,gBAe3B,CAAC"}
1
+ {"version":3,"file":"BookingSummaryFooter.d.ts","sourceRoot":"","sources":["../../../../../src/iframe/order-process/components/BookingSummaryFooter/BookingSummaryFooter.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAM5D,KAAK,yBAAyB,GAAG;IAC/B,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,KAAK,WAAW,GAAG,OAAO,CACxB;IACE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB,GAAG,CAAC,yBAAyB,GAAG,sBAAsB,CAAC,CACzD,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAEvE,eAAO,MAAM,oBAAoB,0FAQ9B,yBAAyB,gBAyB3B,CAAC"}
@@ -1 +1 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("tslib"),r=e(require("react")),o=require("react-i18next"),n=e(require("react-bootstrap/Button")),i=require("../../constants.js");exports.BookingSummaryFooter=function(e){var a=e.disabled,s=void 0!==a&&a,u=e.onClick,l=e.buttonLabel,c=e.form,d=void 0===c?i.STEP_FORM_ID:c,m=e.children,f=e.showButton,b=void 0===f||f,v=o.useTranslation("Design").t,p=u?{onClick:u}:{type:"submit",form:d};return r.createElement("div",{className:"d-flex flex-column"},m,b&&r.createElement(n,t.__assign({className:"m-0 mt-3",disabled:s},p),null!=l?l:v("continue")))};
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("tslib"),r=e(require("react")),n=require("react-i18next"),i=e(require("react-bootstrap/Button")),o=require("react-bootstrap"),a=require("../../constants.js");exports.BookingSummaryFooter=function(e){var s=e.disabled,u=void 0!==s&&s,l=e.onClick,c=e.buttonLabel,d=e.form,m=void 0===d?a.STEP_FORM_ID:d,f=e.children,b=e.showButton,p=void 0===b||b,v=e.isLoading,q=void 0!==v&&v,x=n.useTranslation("Design").t,_=l?{onClick:l}:{type:"submit",form:m},g=u||q;return r.createElement("div",{className:"d-flex flex-column"},f,p&&r.createElement(i,t.__assign({className:"m-0 d-flex align-items-center justify-content-center mt-3",disabled:g},_),q?r.createElement(o.Spinner,{animation:"border",size:"sm",role:"status"}):null!=c?c:x("continue")))};
@@ -1 +1 @@
1
- {"version":3,"file":"ProductControl.d.ts","sourceRoot":"","sources":["../../../src/product-set/product/ProductControl.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,YAAY,EAMb,MAAM,kEAAkE,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,0DAA0D,CAAC;AAEvF,OAAO,EACL,mBAAmB,EACnB,UAAU,EACX,MAAM,8DAA8D,CAAC;AAEtE,OAAc,EACZ,WAAW,EAKZ,MAAM,OAAO,CAAC;AAef,OAAO,EACL,KAAK,EAEN,MAAM,sDAAsD,CAAC;AAO9D,OAAO,EAEL,oCAAoC,EACpC,qCAAqC,EACtC,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAEL,2BAA2B,EAC5B,MAAM,iCAAiC,CAAC;AAOzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAQ5C,MAAM,WAAW,oBACf,SAAQ,UAAU,EAChB,2BAA2B,EAC3B,qCAAqC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,CACpC,SAAQ,gBAAgB,EACtB,mBAAmB,CAAC,CAAC,CAAC,EACtB,oCAAoC,CAAC,CAAC,CAAC;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,mBAAmB,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,UAAU,EAAE,EACnD,SAAiB,EACjB,eAAe,EACf,aAAqB,EACrB,oBAA4B,EAC5B,QAAa,EACb,MAAM,EACN,mBAAmB,EACnB,WAAW,EACX,SAAS,EACT,YAAY,EACZ,YAAY,GACb,EAAE,mBAAmB,CAAC,CAAC,CAAC,eA+hBxB"}
1
+ {"version":3,"file":"ProductControl.d.ts","sourceRoot":"","sources":["../../../src/product-set/product/ProductControl.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,YAAY,EAMb,MAAM,kEAAkE,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,0DAA0D,CAAC;AAEvF,OAAO,EACL,mBAAmB,EACnB,UAAU,EACX,MAAM,8DAA8D,CAAC;AAEtE,OAAc,EACZ,WAAW,EAKZ,MAAM,OAAO,CAAC;AAef,OAAO,EACL,KAAK,EAEN,MAAM,sDAAsD,CAAC;AAO9D,OAAO,EAEL,oCAAoC,EACpC,qCAAqC,EACtC,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAEL,2BAA2B,EAC5B,MAAM,iCAAiC,CAAC;AAOzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAQ5C,MAAM,WAAW,oBACf,SAAQ,UAAU,EAChB,2BAA2B,EAC3B,qCAAqC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,CACpC,SAAQ,gBAAgB,EACtB,mBAAmB,CAAC,CAAC,CAAC,EACtB,oCAAoC,CAAC,CAAC,CAAC;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,mBAAmB,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,UAAU,EAAE,EACnD,SAAiB,EACjB,eAAe,EACf,aAAqB,EACrB,oBAA4B,EAC5B,QAAa,EACb,MAAM,EACN,mBAAmB,EACnB,WAAW,EACX,SAAS,EACT,YAAY,EACZ,YAAY,GACb,EAAE,mBAAmB,CAAC,CAAC,CAAC,eAgkBxB"}
@@ -1 +1 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("tslib"),a=require("react"),n=e(a),r=require("react-i18next"),o=e(require("react-bootstrap/Row")),l=e(require("react-bootstrap/Col")),i=require("react-bootstrap"),c=require("../../static/Icon.js"),s=require("react-hook-form"),d=e(require("@licklist/plugins/dist/services/Form/HookFormService")),u=require("@react-aria/utils"),m=require("../../static/switch/BooleanSwitch.js"),E=require("../../static/form-number-input/FormNumberInput.js");require("../../static/index.js");var p=require("../form/context.js"),g=require("@licklist/core/dist/DataMapper/Product/ProductCategoryDataMapper"),C=require("./booking-management/ProductBookingManagementControl.js"),f=require("./deposit/ProductDepositControl.js"),v=require("./quantity/ProductQuantityControl.js"),b=require("./quantity/ProductQuantityConstantControl.js"),h=require("./quantity/ProductQuantityRechargingControl.js"),I=e(require("react-bootstrap/Collapse")),F=require("@licklist/plugins/dist/hooks/Media/useImages"),P=require("@licklist/core/dist/DataMapper/Media/ImageDataMapper"),N=require("../../file-upload/FileUpload.js"),q=require("../../tiptap-editor/TipTapEditor.js"),y=require("./fixed-duration-fields/FixedDurationOptions.js"),T=require("./duration/ProductDurationControl.js"),_=require("./price/ProductPriceControl.js"),k=require("./constants.js");exports.ProductControl=function(e){var x=e.isLoading,A=void 0!==x&&x,L=e.fieldNamePrefix,R=e.allowDeposits,S=void 0!==R&&R,j=e.hasBookingManagement,w=void 0!==j&&j,D=e.zoneList,G=void 0===D?[]:D,M=e.onCopy,O=e.onProductNameChange,B=e.productName,U=e.hasTicket,Y=e.categoryType,V=e.zoneDuration,Q=s.useFormContext(),H=Q.register,X=Q.control,z=Q.formState.errors,W=Q.setValue,Z=Q.getValues,J=Q.watch,K=a.useContext(p.ProductSetLoadingContext),$=K.setLoading,ee=K.providerHasBookingManagement,te=r.useTranslation(["Design","Validation"]).t,ae=t.__read(a.useState(!1),2),ne=ae[0],re=ae[1],oe=t.__read(a.useState(null),2),le=oe[0],ie=oe[1],ce=Boolean(J("".concat(L,".isUnlimited"))),se=u.useId(),de=u.useId(),ue=u.useId(),me=u.useId(),Ee=u.useId(),pe=u.useId(),ge=u.useId(),Ce=u.useId(),fe=u.useId(),ve=u.useId(),be=u.useId(),he=[{id:1,value:te("quantitySelector")},{id:2,value:te("stockControl")}],Ie=a.useCallback((function(){return re((function(e){return!e}))}),[]),Fe=s.useWatch({control:X,name:"".concat(L,".quantitySelector")}),Pe=F.useImages(le),Ne=Pe.images,qe=Pe.handleImageRemove,ye=Pe.handleImageUploading,Te=Pe.isLoading,_e=a.useCallback((function(e){ye(e,P.IMAGE_TYPE_IMAGE)}),[ye]),ke=a.useCallback((function(e,t){qe(String(e),t)}),[qe]),xe=function(e){return e.target.select()};a.useEffect((function(){$(Te)}),[$,Te]),a.useEffect((function(){var e=Z("".concat(L,".images"));ie(e)}),[Z,ie,L]),a.useEffect((function(){Array.isArray(Ne)&&W("".concat(L,".images"),Ne)}),[Ne,L,W]);var Ae=null!=Fe?Fe:"1",Le=g.QUANTITY_TYPE_LIST_DTO[Ae];return n.createElement(n.Fragment,null,n.createElement(o,null,n.createElement(l,{lg:8,md:8},n.createElement(i.Form.Group,{controlId:de},n.createElement(i.Form.Label,null,te("name")),n.createElement(i.Form.Control,t.__assign({},H("".concat(L,".name")),{value:B,onChange:O,isInvalid:d.isInvalid("".concat(L,".name"),z),disabled:A,placeholder:te("name")})),n.createElement(i.Form.Control.Feedback,{type:"invalid"},d.getErrors("".concat(L,".name"),z))),n.createElement(i.Form.Group,{controlId:ue},n.createElement(i.Form.Label,null,te("description")),n.createElement(s.Controller,{render:function(e){var t=e.field,a=t.value,r=t.onChange;return n.createElement(q.TipTapEditor,{withEmoji:!1,viewMode:!1,onUpdate:r,content:a,disabled:A})},rules:{maxLength:{value:k.MAX_PRODUCT_DESCRIPTION_CHARACTERS_LENGTH,message:te("Validation:descriptionTooManyCharactersMessage",{max:k.MAX_PRODUCT_DESCRIPTION_CHARACTERS_LENGTH})}},control:X,name:"".concat(L,".description")})),n.createElement("div",{className:"invalid-feedback field-values-error d-block"},d.getErrors("".concat(L,".description"),z)),S?n.createElement(o,null,n.createElement(f.ProductDepositControl,{isLoading:A,fieldNamePrefix:L}),n.createElement(_.ProductPriceControl,{isLoading:A,fieldNamePrefix:"".concat(L,".price"),title:te("totalPrice"),allowDeposits:S})):n.createElement(_.ProductPriceControl,{isLoading:A,fieldNamePrefix:"".concat(L,".price")}),n.createElement("div",null,n.createElement(v.ProductQuantityControl,{isLoading:A,fieldNamePrefix:L,onFocus:xe}),Le===g.QUANTITY_TYPE_CONSTANT&&n.createElement(b.ProductQuantityConstantControl,{isLoading:A,fieldNamePrefix:L,onFocus:xe,disabled:ce}),Le===g.QUANTITY_TYPE_RECHARGING&&n.createElement(h.ProductQuantityRechargingControl,{isLoading:A,fieldNamePrefix:L,onFocus:xe,disabled:ce}),n.createElement(i.Form.Group,{controlId:ve,className:"custom-checkbox"},n.createElement(i.Form.Check,t.__assign({custom:!0,type:"checkbox"},H("".concat(L,".isUnlimited")),{name:"".concat(L,".isUnlimited"),disabled:A})),n.createElement(i.Form.Check.Label,null,te("isUnlimited")))),n.createElement(i.Form.Group,{controlId:Ce},n.createElement(i.Form.Label,null,te("quantitySelectorType")),n.createElement(i.Form.Control,t.__assign({as:"select",defaultValue:U?he[0].id:void 0},H("".concat(L,".quantitySelector")),{isInvalid:d.isInvalid("".concat(L,".quantitySelector"),z),disabled:A||U}),he.map((function(e){return n.createElement("option",{value:e.id,key:e.id},e.value)}))),n.createElement(i.Form.Control.Feedback,{type:"invalid"},d.getErrors("".concat(L,".quantitySelector"),z))))),Y===g.CATEGORY_TYPE_FIXED_DURATION&&n.createElement(o,{className:"align-items-start"},n.createElement(T.ProductDurationControl,{fieldNamePrefix:L,providerHasBookingManagement:ee}),n.createElement(l,{lg:4,md:4},n.createElement(E.FormNumberInput,{fieldName:"".concat(L,".capacity"),label:te("capacity"),rules:{min:{value:1,message:te("Validation:fieldRequired",{attribute:te("capacity")})}}}))),Y===g.CATEGORY_TYPE_GAME&&n.createElement(o,{className:"align-items-start"},n.createElement(l,{lg:4,md:4},n.createElement(E.FormNumberInput,{fieldName:"".concat(L,".capacity"),label:te("capacity"),onChange:function(e){V&&W("".concat(L,".duration"),e*V)},rules:{required:te("Validation:fieldRequired",{attribute:te("capacity")}),min:{value:1,message:te("Validation:fieldRequired",{attribute:te("capacity")})}}})),n.createElement(l,{lg:4,md:4},n.createElement(E.FormNumberInput,{fieldName:"".concat(L,".duration"),label:te("durationMinutes"),rules:{required:te("Validation:fieldRequired",{attribute:te("capacity")}),min:{value:1,message:te("Validation:fieldRequired",{attribute:te("capacity")})}}}))),n.createElement(o,null,n.createElement(l,{lg:8,md:8},n.createElement(i.Form.Group,{controlId:me},n.createElement(i.Form.Label,null,te("productTermsConditions")),n.createElement(s.Controller,{render:function(e){var t=e.field,a=t.value,r=t.onChange,o=t.name,l=t.ref;return n.createElement(i.Form.Control,{ref:l,as:"textarea",rows:3,value:a,onChange:r,isInvalid:d.isInvalid("".concat(L,".termsAndConditions"),z),disabled:A,name:o})},control:X,name:"".concat(L,".termsAndConditions")}),n.createElement(i.Form.Control.Feedback,{type:"invalid"},d.getErrors("".concat(L,".termsAndConditions"),z)))),n.createElement(l,{lg:4,md:4,className:"licklist-file-upload-wrapper"},n.createElement(N.FileUpload,{onFilesChange:_e,allowedExtensions:["jpeg","jpg","png"],subTitle:".jpeg .jpg .png",enablePreview:!0,onFileRemove:ke,defaultFiles:Ne,isLoading:Te,withIcon:!0,title:te("addImage")}))),n.createElement(l,{lg:12,md:12,xl:!0,className:"p-0"},n.createElement(i.Form.Group,{controlId:Ee,className:"advanced-switch-container"},n.createElement(i.Form.Label,null,te("isAvailable")),n.createElement(s.Controller,{render:function(e){var t=e.field,a=t.value,r=t.onChange,o=t.name;return n.createElement(m.BooleanSwitch,{name:o,value:Boolean(a),onChange:r,disabled:A})},control:X,name:"".concat(L,".isAvailable")})),n.createElement(i.Form.Group,{controlId:pe,className:"advanced-switch-container"},n.createElement(i.Form.Label,null,te("isSoldOut")),n.createElement(s.Controller,{render:function(e){var t=e.field,a=t.value,r=t.onChange,o=t.name;return n.createElement(m.BooleanSwitch,{name:o,value:Boolean(a),onChange:r,disabled:A})},control:X,name:"".concat(L,".isSoldOut")})),n.createElement(i.Form.Group,{controlId:se,className:"custom-checkbox"},n.createElement(i.Form.Check,{custom:!0,type:"checkbox",name:se,disabled:A},n.createElement(i.Form.Check.Input,{checked:ne,onChange:Ie,type:"checkbox"}),n.createElement(i.Form.Check.Label,null,te("showAdvancedOptions"))))),n.createElement(l,{lg:12,md:12,xl:!0,className:"p-0"},n.createElement(I,{in:ne},n.createElement("div",null,n.createElement(i.Form.Group,{controlId:ge,className:"advanced-switch-container"},n.createElement(i.Form.Label,null,te("isRequired")),n.createElement(s.Controller,{render:function(e){var t=e.field,a=t.value,r=t.onChange,o=t.name;return n.createElement(m.BooleanSwitch,{name:o,value:Boolean(a),onChange:r,disabled:A})},control:X,name:"".concat(L,".isRequired")})),n.createElement(i.Form.Group,{controlId:fe,className:"advanced-switch-container"},n.createElement(i.Form.Label,null,te("hasSpecialNotes")),n.createElement(s.Controller,{render:function(e){var t=e.field,a=t.value,r=t.onChange,o=t.name;return n.createElement(m.BooleanSwitch,{name:o,value:Boolean(a),onChange:r,disabled:A})},control:X,name:"".concat(L,".hasSpecialNotes")})),[g.CATEGORY_TYPE_GAME,g.CATEGORY_TYPE_FIXED_DURATION].includes(Y)&&n.createElement(y.FixedDurationOptions,{fieldNamePrefix:L}),n.createElement(i.Form.Group,{controlId:be,className:"advanced-switch-container"},n.createElement(_.ProductPriceControl,{title:te("minSpend"),isRequired:!1,isMoreThanZero:!0,allowDeposits:!1,isLoading:A,fieldNamePrefix:"".concat(L,".minSpend")})))),n.createElement(o,null,n.createElement(l,{xs:12},w&&n.createElement(C.ProductBookingManagementControl,{isLoading:A,zoneList:G,fieldNamePrefix:L})))),n.createElement(o,null,n.createElement(l,{xs:!0},n.createElement("div",{className:"d-flex justify-content-end mt-4"},Boolean(M)&&n.createElement(i.Button,{onClick:M,variant:"link",className:"d-flex align-items-center"},n.createElement(c.default,{type:"clipboard",height:"1rem",className:"mr-2"})," ",te("copy"))))))};
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("tslib"),a=require("react"),n=e(a),r=require("react-i18next"),o=e(require("react-bootstrap/Row")),i=e(require("react-bootstrap/Col")),l=require("react-bootstrap"),c=require("../../static/Icon.js"),s=require("react-hook-form"),d=e(require("@licklist/plugins/dist/services/Form/HookFormService")),u=require("@react-aria/utils"),m=require("../../static/switch/BooleanSwitch.js"),E=require("../../static/form-number-input/FormNumberInput.js");require("../../static/index.js");var p=require("../form/context.js"),g=require("@licklist/core/dist/DataMapper/Product/ProductCategoryDataMapper"),f=require("./booking-management/ProductBookingManagementControl.js"),C=require("./deposit/ProductDepositControl.js"),v=require("./quantity/ProductQuantityControl.js"),b=require("./quantity/ProductQuantityConstantControl.js"),h=require("./quantity/ProductQuantityRechargingControl.js"),I=e(require("react-bootstrap/Collapse")),N=require("@licklist/plugins/dist/hooks/Media/useImages"),F=require("@licklist/core/dist/DataMapper/Media/ImageDataMapper"),P=require("../../file-upload/FileUpload.js"),y=require("../../tiptap-editor/TipTapEditor.js"),T=require("./fixed-duration-fields/FixedDurationOptions.js"),q=require("./duration/ProductDurationControl.js"),_=require("./price/ProductPriceControl.js"),x=require("./constants.js");exports.ProductControl=function(e){var k=e.isLoading,A=void 0!==k&&k,L=e.fieldNamePrefix,S=e.allowDeposits,D=void 0!==S&&S,R=e.hasBookingManagement,j=void 0!==R&&R,w=e.zoneList,M=void 0===w?[]:w,G=e.onCopy,O=e.onProductNameChange,B=e.productName,U=e.hasTicket,Y=e.categoryType,Q=e.zoneDuration,V=s.useFormContext(),H=V.register,X=V.control,z=V.formState.errors,W=V.setValue,Z=V.getValues,J=V.watch,K=V.trigger,$=V.clearErrors,ee=a.useContext(p.ProductSetLoadingContext).setLoading,te=r.useTranslation(["Design","Validation"]).t,ae=t.__read(a.useState(!1),2),ne=ae[0],re=ae[1],oe=t.__read(a.useState(null),2),ie=oe[0],le=oe[1],ce=Boolean(J("".concat(L,".isUnlimited"))),se=J("".concat(L,".capacity")),de="0"===se||!se,ue=u.useId(),me=u.useId(),Ee=u.useId(),pe=u.useId(),ge=u.useId(),fe=u.useId(),Ce=u.useId(),ve=u.useId(),be=u.useId(),he=u.useId(),Ie=u.useId(),Ne=[{id:1,value:te("quantitySelector")},{id:2,value:te("stockControl")}],Fe=a.useCallback((function(){return re((function(e){return!e}))}),[]),Pe=s.useWatch({control:X,name:"".concat(L,".quantitySelector")}),ye=N.useImages(ie),Te=ye.images,qe=ye.handleImageRemove,_e=ye.handleImageUploading,xe=ye.isLoading,ke=a.useCallback((function(e){_e(e,F.IMAGE_TYPE_IMAGE)}),[_e]),Ae=a.useCallback((function(e,t){qe(String(e),t)}),[qe]),Le=function(e){return e.target.select()};a.useEffect((function(){ee(xe)}),[ee,xe]),a.useEffect((function(){var e=Z("".concat(L,".images"));le(e)}),[Z,le,L]),a.useEffect((function(){Array.isArray(Te)&&W("".concat(L,".images"),Te)}),[Te,L,W]),a.useEffect((function(){de?(W("".concat(L,".duration"),0),$("".concat(L,".duration"))):K("".concat(L,".duration"))}),[de]);var Se=null!=Pe?Pe:"1",De=g.QUANTITY_TYPE_LIST_DTO[Se];return n.createElement(n.Fragment,null,n.createElement(o,null,n.createElement(i,{lg:8,md:8},n.createElement(l.Form.Group,{controlId:me},n.createElement(l.Form.Label,null,te("name")),n.createElement(l.Form.Control,t.__assign({},H("".concat(L,".name")),{value:B,onChange:O,isInvalid:d.isInvalid("".concat(L,".name"),z),disabled:A,placeholder:te("name")})),n.createElement(l.Form.Control.Feedback,{type:"invalid"},d.getErrors("".concat(L,".name"),z))),n.createElement(l.Form.Group,{controlId:Ee},n.createElement(l.Form.Label,null,te("description")),n.createElement(s.Controller,{render:function(e){var t=e.field,a=t.value,r=t.onChange;return n.createElement(y.TipTapEditor,{withEmoji:!1,viewMode:!1,onUpdate:r,content:a,disabled:A})},rules:{maxLength:{value:x.MAX_PRODUCT_DESCRIPTION_CHARACTERS_LENGTH,message:te("Validation:descriptionTooManyCharactersMessage",{max:x.MAX_PRODUCT_DESCRIPTION_CHARACTERS_LENGTH})}},control:X,name:"".concat(L,".description")})),n.createElement("div",{className:"invalid-feedback field-values-error d-block"},d.getErrors("".concat(L,".description"),z)),D?n.createElement(o,null,n.createElement(C.ProductDepositControl,{isLoading:A,fieldNamePrefix:L}),n.createElement(_.ProductPriceControl,{isLoading:A,fieldNamePrefix:"".concat(L,".price"),title:te("totalPrice"),allowDeposits:D})):n.createElement(_.ProductPriceControl,{isLoading:A,fieldNamePrefix:"".concat(L,".price")}),n.createElement("div",null,n.createElement(v.ProductQuantityControl,{isLoading:A,fieldNamePrefix:L,onFocus:Le}),De===g.QUANTITY_TYPE_CONSTANT&&n.createElement(b.ProductQuantityConstantControl,{isLoading:A,fieldNamePrefix:L,onFocus:Le,disabled:ce}),De===g.QUANTITY_TYPE_RECHARGING&&n.createElement(h.ProductQuantityRechargingControl,{isLoading:A,fieldNamePrefix:L,onFocus:Le,disabled:ce}),n.createElement(l.Form.Group,{controlId:he,className:"custom-checkbox"},n.createElement(l.Form.Check,t.__assign({custom:!0,type:"checkbox"},H("".concat(L,".isUnlimited")),{name:"".concat(L,".isUnlimited"),disabled:A})),n.createElement(l.Form.Check.Label,null,te("isUnlimited")))),n.createElement(l.Form.Group,{controlId:ve},n.createElement(l.Form.Label,null,te("quantitySelectorType")),n.createElement(l.Form.Control,t.__assign({as:"select",defaultValue:U?Ne[0].id:void 0},H("".concat(L,".quantitySelector")),{isInvalid:d.isInvalid("".concat(L,".quantitySelector"),z),disabled:A||U}),Ne.map((function(e){return n.createElement("option",{value:e.id,key:e.id},e.value)}))),n.createElement(l.Form.Control.Feedback,{type:"invalid"},d.getErrors("".concat(L,".quantitySelector"),z))))),Y===g.CATEGORY_TYPE_FIXED_DURATION&&n.createElement(o,{className:"align-items-start duration-capacity-container"},n.createElement(q.ProductDurationControl,{fieldNamePrefix:L,disabled:de}),n.createElement(i,{lg:4,md:4},n.createElement(E.FormNumberInput,{fieldName:"".concat(L,".capacity"),label:te("capacity"),rules:{min:{value:0,message:te("Validation:fieldMinNumber",{attribute:te("capacity"),min:0})}}})),de&&n.createElement("div",{className:"duration-hint duration-capacity-container"},te("Design:forDurationEditing"))),Y===g.CATEGORY_TYPE_GAME&&n.createElement(n.Fragment,null,n.createElement(o,{className:"align-items-start duration-capacity-container"},n.createElement(i,{lg:4,md:4},n.createElement(E.FormNumberInput,{fieldName:"".concat(L,".capacity"),label:te("capacity"),onChange:function(e){Q&&W("".concat(L,".duration"),e*Q)},rules:{min:{value:0,message:te("Validation:fieldMinNumber",{attribute:te("capacity"),min:1})}}})),n.createElement(i,{lg:4,md:4},n.createElement(E.FormNumberInput,{fieldName:"".concat(L,".duration"),label:te("durationMinutes"),disabled:de,rules:{min:{value:0,message:te("Validation:fieldMinNumber",{attribute:te("duration"),min:0})},validate:function(e){return!(!de&&(!e||e<1))||te("Validation:fieldRequired",{attribute:te("duration")})}}}))),de&&n.createElement("div",{className:"duration-hint pl-0"},te("Design:forDurationEditing"))),n.createElement(o,{className:"mt-4"},n.createElement(i,{lg:8,md:8},n.createElement(l.Form.Group,{controlId:pe},n.createElement(l.Form.Label,null,te("productTermsConditions")),n.createElement(s.Controller,{render:function(e){var t=e.field,a=t.value,r=t.onChange,o=t.name,i=t.ref;return n.createElement(l.Form.Control,{ref:i,as:"textarea",rows:3,value:a,onChange:r,isInvalid:d.isInvalid("".concat(L,".termsAndConditions"),z),disabled:A,name:o})},control:X,name:"".concat(L,".termsAndConditions")}),n.createElement(l.Form.Control.Feedback,{type:"invalid"},d.getErrors("".concat(L,".termsAndConditions"),z)))),n.createElement(i,{lg:4,md:4,className:"licklist-file-upload-wrapper"},n.createElement(P.FileUpload,{onFilesChange:ke,allowedExtensions:["jpeg","jpg","png"],subTitle:".jpeg .jpg .png",enablePreview:!0,onFileRemove:Ae,defaultFiles:Te,isLoading:xe,withIcon:!0,title:te("addImage")}))),n.createElement(i,{lg:12,md:12,xl:!0,className:"p-0"},n.createElement(l.Form.Group,{controlId:ge,className:"advanced-switch-container"},n.createElement(l.Form.Label,null,te("isAvailable")),n.createElement(s.Controller,{render:function(e){var t=e.field,a=t.value,r=t.onChange,o=t.name;return n.createElement(m.BooleanSwitch,{name:o,value:Boolean(a),onChange:r,disabled:A})},control:X,name:"".concat(L,".isAvailable")})),n.createElement(l.Form.Group,{controlId:fe,className:"advanced-switch-container"},n.createElement(l.Form.Label,null,te("isSoldOut")),n.createElement(s.Controller,{render:function(e){var t=e.field,a=t.value,r=t.onChange,o=t.name;return n.createElement(m.BooleanSwitch,{name:o,value:Boolean(a),onChange:r,disabled:A})},control:X,name:"".concat(L,".isSoldOut")})),n.createElement(l.Form.Group,{controlId:ue,className:"custom-checkbox"},n.createElement(l.Form.Check,{custom:!0,type:"checkbox",name:ue,disabled:A},n.createElement(l.Form.Check.Input,{checked:ne,onChange:Fe,type:"checkbox"}),n.createElement(l.Form.Check.Label,null,te("showAdvancedOptions"))))),n.createElement(i,{lg:12,md:12,xl:!0,className:"p-0"},n.createElement(I,{in:ne},n.createElement("div",null,n.createElement(l.Form.Group,{controlId:Ce,className:"advanced-switch-container"},n.createElement(l.Form.Label,null,te("isRequired")),n.createElement(s.Controller,{render:function(e){var t=e.field,a=t.value,r=t.onChange,o=t.name;return n.createElement(m.BooleanSwitch,{name:o,value:Boolean(a),onChange:r,disabled:A})},control:X,name:"".concat(L,".isRequired")})),n.createElement(l.Form.Group,{controlId:be,className:"advanced-switch-container"},n.createElement(l.Form.Label,null,te("hasSpecialNotes")),n.createElement(s.Controller,{render:function(e){var t=e.field,a=t.value,r=t.onChange,o=t.name;return n.createElement(m.BooleanSwitch,{name:o,value:Boolean(a),onChange:r,disabled:A})},control:X,name:"".concat(L,".hasSpecialNotes")})),[g.CATEGORY_TYPE_GAME,g.CATEGORY_TYPE_FIXED_DURATION].includes(Y)&&n.createElement(T.FixedDurationOptions,{fieldNamePrefix:L}),n.createElement(l.Form.Group,{controlId:Ie,className:"advanced-switch-container"},n.createElement(_.ProductPriceControl,{title:te("minSpend"),isRequired:!1,isMoreThanZero:!0,allowDeposits:!1,isLoading:A,fieldNamePrefix:"".concat(L,".minSpend")})))),n.createElement(o,null,n.createElement(i,{xs:12},j&&n.createElement(f.ProductBookingManagementControl,{isLoading:A,zoneList:M,fieldNamePrefix:L})))),n.createElement(o,null,n.createElement(i,{xs:!0},n.createElement("div",{className:"d-flex justify-content-end mt-4"},Boolean(G)&&n.createElement(l.Button,{onClick:G,variant:"link",className:"d-flex align-items-center"},n.createElement(c.default,{type:"clipboard",height:"1rem",className:"mr-2"})," ",te("copy"))))))};
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { FieldNamePrefixPath } from "@licklist/plugins/dist/types/services/Form/hook-form-service";
3
3
  export interface ProductDurationControlProps<T> extends FieldNamePrefixPath<T> {
4
- providerHasBookingManagement: boolean;
4
+ disabled: boolean;
5
5
  }
6
- export declare const ProductDurationControl: <T>({ fieldNamePrefix, providerHasBookingManagement, }: ProductDurationControlProps<T>) => JSX.Element;
6
+ export declare const ProductDurationControl: <T>({ fieldNamePrefix, disabled, }: ProductDurationControlProps<T>) => JSX.Element;
7
7
  //# sourceMappingURL=ProductDurationControl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProductDurationControl.d.ts","sourceRoot":"","sources":["../../../../src/product-set/product/duration/ProductDurationControl.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8DAA8D,CAAC;AAQnG,MAAM,WAAW,2BAA2B,CAAC,CAAC,CAAE,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IAC5E,4BAA4B,EAAE,OAAO,CAAC;CACvC;AAED,eAAO,MAAM,sBAAsB,wGAoIlC,CAAC"}
1
+ {"version":3,"file":"ProductDurationControl.d.ts","sourceRoot":"","sources":["../../../../src/product-set/product/duration/ProductDurationControl.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8DAA8D,CAAC;AAOnG,MAAM,WAAW,2BAA2B,CAAC,CAAC,CAAE,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IAC5E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,sBAAsB,oFAwIlC,CAAC"}
@@ -1 +1 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("react")),r=require("react-i18next"),n=require("react-bootstrap"),o=require("react-hook-form"),a=e(require("@licklist/plugins/dist/services/Form/HookFormService")),l=require("@react-aria/utils"),u=require("../../../assets/dashboard/increment.svg.js");exports.ProductDurationControl=function(e){var i=e.fieldNamePrefix,c=e.providerHasBookingManagement,s=r.useTranslation("Design").t,m=l.useId(),d=l.useId(),p=o.useFormContext(),f=p.control,E=p.formState.errors,v=p.setValue,b="".concat(i,".duration"),g=function(e){return v(b,e)},F=o.useWatch({control:f,name:b}),C=Math.floor(F/60),I=F%60,N=function(e){g(60*e+I)},q=function(e){g(60*C+(e>59?59:e))},x=a.isInvalid(b,E),h=function(e){return e.target.select()};return t.createElement(o.Controller,{control:f,name:b,rules:{required:{value:Boolean(c),message:s("Validation:fieldRequired",{attribute:s("duration")})},min:{value:1,message:s("Validation:fieldMinNumber",{attribute:s("duration")})}},render:function(e){var r=e.field;return t.createElement(t.Fragment,null,t.createElement(n.Col,{lg:4,md:4,sm:6},t.createElement(n.Form.Group,{controlId:m,className:"position-relative"},t.createElement(n.Form.Label,null,s("durationHours")),t.createElement(n.InputGroup,{hasValidation:!0},t.createElement(n.InputGroup.Prepend,{className:"arrow-up-btn",onClick:function(){return N(C+1)}},t.createElement(n.InputGroup.Text,{className:"py-0 px-3"},t.createElement(u.ReactComponent,null))),t.createElement(n.Form.Control,{type:"number",min:0,step:1,value:C,isInvalid:x,onChange:function(e){return N(Number(e.target.value))},ref:r.ref,onFocus:h}),t.createElement(n.Form.Control.Feedback,{type:"invalid"},a.getErrors(b,E))))),t.createElement(n.Col,{lg:4,md:4,sm:6},t.createElement(n.Form.Group,{controlId:d,className:"position-relative"},t.createElement(n.Form.Label,null,s("durationMinutes")),t.createElement(n.InputGroup,{hasValidation:!0},t.createElement(n.InputGroup.Prepend,{className:"arrow-up-btn",onClick:function(){return q(I+1)}},t.createElement(n.InputGroup.Text,{className:"py-0 px-3"},t.createElement(u.ReactComponent,null))),t.createElement(n.Form.Control,{type:"number",min:0,step:1,value:I,isInvalid:x,onChange:function(e){return q(Number(e.target.value))},onFocus:h}),t.createElement(n.Form.Control.Feedback,{type:"invalid"},a.getErrors(b,E))))))}})};
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("react")),r=require("react-i18next"),n=require("react-bootstrap"),a=require("react-hook-form"),o=e(require("@licklist/plugins/dist/services/Form/HookFormService")),l=require("@react-aria/utils"),u=require("../../../assets/dashboard/increment.svg.js");exports.ProductDurationControl=function(e){var i=e.fieldNamePrefix,c=e.disabled,s=r.useTranslation("Design").t,m=l.useId(),d=l.useId(),p=a.useFormContext(),f=p.control,E=p.formState.errors,b=p.setValue,v="".concat(i,".duration"),F=function(e){return b(v,e,{shouldValidate:!0})},C=a.useWatch({control:f,name:v}),g=Math.floor(C/60),I=C%60,N=function(e){F(60*e+I)},h=function(e){F(60*g+(e>59?59:e))},x=o.isInvalid(v,E),q=function(e){return e.target.select()};return t.createElement(a.Controller,{control:f,name:v,rules:{min:{value:0,message:s("Validation:fieldMinNumber",{attribute:s("duration"),min:0})},validate:function(e){return!(!c&&(!e||e<1))||s("Validation:fieldRequired",{attribute:s("duration")})}},render:function(e){var r=e.field;return t.createElement(t.Fragment,null,t.createElement(n.Col,{lg:4,md:4,sm:6},t.createElement(n.Form.Group,{controlId:m,className:"position-relative"},t.createElement(n.Form.Label,null,s("durationHours")),t.createElement(n.InputGroup,{hasValidation:!0},t.createElement(n.InputGroup.Prepend,{className:"arrow-up-btn",onClick:function(){return N(g+1)}},t.createElement(n.InputGroup.Text,{className:"py-0 px-3"},t.createElement(u.ReactComponent,null))),t.createElement(n.Form.Control,{type:"number",min:0,step:1,value:g,disabled:c,isInvalid:x,onChange:function(e){return N(Number(e.target.value))},ref:r.ref,onFocus:q}),t.createElement(n.Form.Control.Feedback,{type:"invalid"},o.getErrors(v,E))))),t.createElement(n.Col,{lg:4,md:4,sm:6},t.createElement(n.Form.Group,{controlId:d,className:"position-relative"},t.createElement(n.Form.Label,null,s("durationMinutes")),t.createElement(n.InputGroup,{hasValidation:!0},t.createElement(n.InputGroup.Prepend,{className:"arrow-up-btn",onClick:function(){return h(I+1)}},t.createElement(n.InputGroup.Text,{className:"py-0 px-3"},t.createElement(u.ReactComponent,null))),t.createElement(n.Form.Control,{type:"number",min:0,step:1,disabled:c,value:I,isInvalid:x,onChange:function(e){return h(Number(e.target.value))},onFocus:q}),t.createElement(n.Form.Control.Feedback,{type:"invalid"},o.getErrors(v,E))))))}})};
@@ -6,9 +6,10 @@ export interface ManualBookingSummaryProps {
6
6
  orders: ManualBookingOrder[];
7
7
  ordersSum: number;
8
8
  orderSumIncludingFee?: number | null;
9
+ hasBookingCategory: boolean;
9
10
  isFeeFetching: boolean;
10
11
  orderDate: string;
11
12
  relyOnPeopleType?: RelyOnPeopleType | null;
12
13
  }
13
- export declare const ManualBookingSummary: ({ eventName, orders, ordersSum, orderSumIncludingFee, isFeeFetching, orderDate, relyOnPeopleType, }: ManualBookingSummaryProps) => JSX.Element;
14
+ export declare const ManualBookingSummary: ({ eventName, orders, ordersSum, orderSumIncludingFee, isFeeFetching, orderDate, relyOnPeopleType, hasBookingCategory, }: ManualBookingSummaryProps) => JSX.Element;
14
15
  //# sourceMappingURL=ManualBookingSummary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ManualBookingSummary.d.ts","sourceRoot":"","sources":["../../../../src/sales/manual-booking/summary/ManualBookingSummary.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+DAA+D,CAAC;AAQnG,OAAO,EAEL,gBAAgB,EACjB,MAAM,6DAA6D,CAAC;AAIrE,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC5C;AAED,eAAO,MAAM,oBAAoB,wGAQ9B,yBAAyB,gBAiF3B,CAAC"}
1
+ {"version":3,"file":"ManualBookingSummary.d.ts","sourceRoot":"","sources":["../../../../src/sales/manual-booking/summary/ManualBookingSummary.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+DAA+D,CAAC;AAQnG,OAAO,EAEL,gBAAgB,EACjB,MAAM,6DAA6D,CAAC;AAIrE,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC5C;AAED,eAAO,MAAM,oBAAoB,4HAS9B,yBAAyB,gBAkF3B,CAAC"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("react"),r=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,a=require("@licklist/core/dist/Config");require("../../../static/loader/LoaderIndicator.js");var l=require("../../../static/loader/BlockLoader.js"),n=require("react-i18next");require("../../../static/loader/ButtonLoader.js"),require("../../../static/loader/SnippetLoader.js"),require("../../../static/loader/PaymentLoader.js");var c=require("luxon"),i=require("@licklist/core/dist/DataMapper/Product/ProductSetDataMapper"),m=require("react-intl"),o=require("@licklist/plugins/dist/utils/relyOnPeople");exports.ManualBookingSummary=function(e){var t=e.eventName,s=e.orders,u=e.ordersSum,d=e.orderSumIncludingFee,y=e.isFeeFetching,p=e.orderDate,v=e.relyOnPeopleType,E=n.useTranslation(["Design","Sale"]).t,N=m.useIntl().formatNumber,q=v&&v!==i.RELY_ON_PEOPLE_QUANTITY,O=c.DateTime.fromISO(p),P=O.toFormat(a.DATE_TIME_MANUAL_BOOKING_FORMAT),g=O.toFormat(a.TIME_FORMAT);return r.createElement("div",{className:"manual-booking-summary"},r.createElement("div",{className:"receipt-title"},E("Sale:receipt")),r.createElement("div",{className:"event-name border-summary-item"},t),r.createElement("div",{className:"border-summary-item"},P),r.createElement("div",{className:"border-summary-item"},g),s.length>0?r.createElement("div",{className:"summary-item-container"},s.map((function(e){var t=o.getRelyOnPeopleMultiplier({relyOnPeopleType:v,capacity:null==e?void 0:e.capacity});return r.createElement("div",{key:e.id,className:"d-flex justify-content-between border-summary-item"},r.createElement("div",null,e.name),q&&t&&r.createElement("div",null,"x ".concat(e.quantity*t," ").concat(E("people"))),r.createElement("div",null,N(e.quantity*e.price,{style:"currency",currency:a.Currency.GBP})))})),r.createElement("div",null,r.createElement("div",{className:"total-container"},r.createElement("div",null,E("Sale:total")),r.createElement("div",{className:"total-amount"},N(u,{style:"currency",currency:a.Currency.GBP}))),d&&r.createElement("div",{className:"total-container ".concat(y?"mt-6":"mt-4")},y||!d?r.createElement(l.BlockLoader,null):r.createElement(r.Fragment,null,r.createElement("div",null,E("Sale:includingOperationalCost")),r.createElement("div",{className:"total-amount"},N(d,{style:"currency",currency:a.Currency.GBP})))))):r.createElement("div",{className:"cart-items"},r.createElement("p",{className:"empty-cart"},E("Design:emptyBasket"))))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("react"),r=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,a=require("@licklist/core/dist/Config");require("../../../static/loader/LoaderIndicator.js");var l=require("../../../static/loader/BlockLoader.js"),n=require("react-i18next");require("../../../static/loader/ButtonLoader.js"),require("../../../static/loader/SnippetLoader.js"),require("../../../static/loader/PaymentLoader.js");var c=require("luxon"),i=require("@licklist/core/dist/DataMapper/Product/ProductSetDataMapper"),o=require("react-intl"),m=require("@licklist/plugins/dist/utils/relyOnPeople");exports.ManualBookingSummary=function(e){var t=e.eventName,s=e.orders,u=e.ordersSum,d=e.orderSumIncludingFee,y=e.isFeeFetching,p=e.orderDate,v=e.relyOnPeopleType,E=e.hasBookingCategory,N=n.useTranslation(["Design","Sale"]).t,g=o.useIntl().formatNumber,q=v&&v!==i.RELY_ON_PEOPLE_QUANTITY,O=c.DateTime.fromISO(p),P=O.toFormat(a.DATE_TIME_MANUAL_BOOKING_FORMAT),f=O.toFormat(a.TIME_FORMAT);return r.createElement("div",{className:"manual-booking-summary"},r.createElement("div",{className:"receipt-title"},N("Sale:receipt")),r.createElement("div",{className:"event-name border-summary-item"},t),r.createElement("div",{className:"border-summary-item"},P),r.createElement("div",{className:"border-summary-item"},f),s.length>0?r.createElement("div",{className:"summary-item-container"},s.map((function(e){var t=m.getRelyOnPeopleMultiplier({relyOnPeopleType:v,capacity:null==e?void 0:e.capacity,hasBookingCategory:E});return r.createElement("div",{key:e.id,className:"d-flex justify-content-between border-summary-item"},r.createElement("div",null,e.name),q&&!!t&&r.createElement("div",null,"x ".concat(e.quantity*t," ").concat(N("people"))),r.createElement("div",null,g(e.quantity*e.price,{style:"currency",currency:a.Currency.GBP})))})),r.createElement("div",null,r.createElement("div",{className:"total-container"},r.createElement("div",null,N("Sale:total")),r.createElement("div",{className:"total-amount"},g(u,{style:"currency",currency:a.Currency.GBP}))),d&&r.createElement("div",{className:"total-container ".concat(y?"mt-6":"mt-4")},y||!d?r.createElement(l.BlockLoader,null):r.createElement(r.Fragment,null,r.createElement("div",null,N("Sale:includingOperationalCost")),r.createElement("div",{className:"total-amount"},g(d,{style:"currency",currency:a.Currency.GBP})))))):r.createElement("div",{className:"cart-items"},r.createElement("p",{className:"empty-cart"},N("Design:emptyBasket"))))};
@@ -4,6 +4,8 @@ export interface BooleanSwitchProps {
4
4
  value?: boolean;
5
5
  disabled?: boolean;
6
6
  onChange: (value: boolean) => void;
7
+ firstValueTitle?: string;
8
+ secondValueTitle?: string;
7
9
  }
8
- export declare function BooleanSwitch({ name, value, disabled, onChange, }: BooleanSwitchProps): JSX.Element;
10
+ export declare function BooleanSwitch({ name, value, disabled, onChange, firstValueTitle, secondValueTitle, }: BooleanSwitchProps): JSX.Element;
9
11
  //# sourceMappingURL=BooleanSwitch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BooleanSwitch.d.ts","sourceRoot":"","sources":["../../../src/static/switch/BooleanSwitch.tsx"],"names":[],"mappings":";AAKA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,EAAE,kBAAkB,eAwBpB"}
1
+ {"version":3,"file":"BooleanSwitch.d.ts","sourceRoot":"","sources":["../../../src/static/switch/BooleanSwitch.tsx"],"names":[],"mappings":";AAKA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,gBAAgB,GACjB,EAAE,kBAAkB,eAwBpB"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,a=require("tslib"),t=require("react"),i=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,n=require("react-i18next"),r=require("./Switch.js");exports.BooleanSwitch=function(e){var o=e.name,u=e.value,l=e.disabled,s=e.onChange,c=n.useTranslation("Design").t,d=[{id:1,value:c("yes")},{id:0,value:c("no")}],v=t.useCallback((function(e){s(Boolean(e))}),[s]);return i.createElement(r.Switch,a.__assign({name:o},void 0!==u&&{value:Number(u)},{options:d,disabled:l,onChange:v}))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("tslib"),a=require("react"),i=(e=a)&&"object"==typeof e&&"default"in e?e.default:e,n=require("react-i18next"),l=require("./Switch.js");exports.BooleanSwitch=function(e){var r=e.name,u=e.value,o=e.disabled,s=e.onChange,c=e.firstValueTitle,d=e.secondValueTitle,v=n.useTranslation("Design").t,b=[{id:1,value:null!=c?c:v("yes")},{id:0,value:null!=d?d:v("no")}],f=a.useCallback((function(e){s(Boolean(e))}),[s]);return i.createElement(l.Switch,t.__assign({name:r},void 0!==u&&{value:Number(u)},{options:b,disabled:o,onChange:f}))};
@@ -12,7 +12,17 @@
12
12
  font-size: 1.375rem;
13
13
  }
14
14
  }
15
-
15
+ .duration-capacity-container {
16
+ .form-group {
17
+ margin-bottom: 0;
18
+ }
19
+ }
20
+ .duration-hint {
21
+ font-size: 0.875rem;
22
+ color: $gray-600;
23
+ padding-left: 1rem;
24
+ margin-top: 1rem;
25
+ }
16
26
  label {
17
27
  color: $black;
18
28
  font-size: 0.875rem;
@@ -164,10 +164,12 @@
164
164
 
165
165
  @include media-breakpoint-down(md) {
166
166
  flex-wrap: wrap;
167
+
167
168
  .date-container {
168
169
  width: 100%;
169
170
  flex: 1;
170
171
  }
172
+
171
173
  .btn-primary {
172
174
  margin-top: 1rem;
173
175
  }
@@ -230,4 +232,4 @@
230
232
  }
231
233
  }
232
234
  }
233
- }
235
+ }
@@ -5,7 +5,7 @@
5
5
  flex-wrap: wrap;
6
6
 
7
7
  .result-card {
8
- height: 14.25rem;
8
+ height: 14rem;
9
9
  border: 1px solid $gray-400;
10
10
  max-width: calc(50% - 0.75rem);
11
11
  flex: 0 0 calc(50% - 0.75rem);
@@ -27,6 +27,7 @@ $btn-switch-option-padding-y: calc(#{$btn-padding-y} - #{sp(1)}) !default;
27
27
  border-radius: $btn-switch-option-border-radius;
28
28
  margin: 0;
29
29
  padding: $btn-switch-option-padding-y $btn-switch-option-padding-x;
30
+ min-width: 4.25rem;
30
31
 
31
32
  &:hover,
32
33
  &:active,
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import { SetStateAction } from "react";
2
2
  import ILengthAwarePaginator from "@licklist/plugins/dist/types/services/Table/ILengthAwarePaginator";
3
3
  import ITableHeader from "@licklist/plugins/dist/types/services/Table/ITableHeader";
4
4
  import ITableProps from "@licklist/plugins/dist/types/services/Table/ITableProps";
@@ -18,6 +18,7 @@ export interface TableHelperComponentProps {
18
18
  [key: string]: any;
19
19
  };
20
20
  initialOptions?: Partial<ITableProps>;
21
+ filteredOrdersOptions?: (value: SetStateAction<ITableProps>) => void;
21
22
  }
22
23
  /**
23
24
  * TableHelperComponent
@@ -1 +1 @@
1
- {"version":3,"file":"TableHelperComponent.d.ts","sourceRoot":"","sources":["../../src/table/TableHelperComponent.tsx"],"names":[],"mappings":";AAQA,OAAO,qBAAqB,MAAM,mEAAmE,CAAC;AACtG,OAAO,YAAY,MAAM,0DAA0D,CAAC;AACpF,OAAO,WAAW,MAAM,yDAAyD,CAAC;AAQlF,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,YAAY,EAAE,QAAQ,CAAC;IACvB,SAAS,CAAC,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,eAAe,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACzC,cAAc,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CACvC;AAUD;;;;;;GAMG;AACH,iBAAS,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,eAsP7D;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"TableHelperComponent.d.ts","sourceRoot":"","sources":["../../src/table/TableHelperComponent.tsx"],"names":[],"mappings":"AACA,OAAc,EAAE,cAAc,EAAuB,MAAM,OAAO,CAAC;AAOnE,OAAO,qBAAqB,MAAM,mEAAmE,CAAC;AACtG,OAAO,YAAY,MAAM,0DAA0D,CAAC;AACpF,OAAO,WAAW,MAAM,yDAAyD,CAAC;AAQlF,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,YAAY,EAAE,QAAQ,CAAC;IACvB,SAAS,CAAC,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,eAAe,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACzC,cAAc,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;CACtE;AAUD;;;;;;GAMG;AACH,iBAAS,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,eA4S7D;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1 +1 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("tslib"),r=require("react"),n=e(r),i=require("react-router-dom"),a=e(require("@licklist/plugins/dist/services/Route/RouteService")),o=require("../static/loader/LoaderIndicator.js"),l=require("react-bootstrap"),s=e(require("@licklist/plugins/dist/hooks/Query/useQuery")),u=require("lodash"),c=require("./FilterHelperComponent.js"),p=require("./PaginationHelperComponent.js"),d=e(require("@licklist/plugins/dist/services/Table/TableService")),g=require("./PerPageHelperComponent.js"),f=require("./utils/index.js");exports.TableHelperComponent=function(e){var _,m,v=e.paginator,E=e.headers,y=e.renderItemFn,S=e.isLoading,h=e.onRefreshFn,C=e.refreshAt,P=e.striped,b=void 0===P||P,q=e.bordered,F=void 0===q||q,j=e.displaySearchBar,D=void 0===j||j,k=e.displayPerPageSelect,L=void 0===k||k,w=e.displayShowingSection,H=void 0===w||w,O=e.externalFilters,R=void 0===O?{}:O,T=e.initialOptions,N=void 0===T?{}:T,V=s(),K=i.useLocation().pathname,I=Number(f.getFilterOptionsValue(V,N,"page")),x=Number(f.getFilterOptionsValue(V,N,"perPage")),A=String(f.getFilterOptionsValue(V,N,"sortKey")),U=String(f.getFilterOptionsValue(V,N,"sortDirection")),Q=String(f.getFilterOptionsValue(V,N,"filter")),B=t.__read(r.useState(),2),G=B[0],M=B[1],z=t.__read(r.useState({page:I,perPage:x,sortKey:A,sortDirection:U,filter:Q}),2),J=z[0],W=z[1],X=t.__read(r.useState(0),2),Y=X[0],Z=X[1],$=t.__read(r.useState(R),2),ee=$[0],te=$[1];r.useEffect((function(){u.isEqual(G,J)&&u.isEqual(ee,R)||(M(J),te(R),h&&h(J),a.redirectTo([K,["page=".concat(J.page),"perPage=".concat(J.perPage),"sortKey=".concat(escape(J.sortKey)),"sortDirection=".concat(escape(J.sortDirection)),"filter=".concat(escape(J.filter)),new URLSearchParams(R).toString()].join("&")].join("?")))}),[K,J,h,R]),r.useEffect((function(){Y!==C&&(Z((function(e){return null!=C?C:e})),h&&h(J))}),[h,J,C,Y]);var re=function(e){var r,i;if("string"==typeof e)return n.createElement("th",{key:e.toLowerCase(),className:d.getHeaderClasses(e,A,U)},e);if("object"==typeof e){var a={width:null!==(r=e.width)&&void 0!==r?r:"auto"};return n.createElement("th",{key:null!==(i=e.key)&&void 0!==i?i:e.title.toLowerCase(),className:d.getHeaderClasses(e,A,U),style:a,onClick:function(){return e.isSortable&&(r=e.key,n=d.DEFAULT_SORT_DIRECTION,void W(A===r?function(e){return n=d.getSortDirection(e.sortDirection,n),t.__assign(t.__assign({},e),{sortKey:r,sortDirection:n})}:function(e){return t.__assign(t.__assign({},e),{sortKey:r,sortDirection:n})}));var r,n}},e.title)}return null};return n.createElement("div",{className:["table-helper",S?"py-5":"py-1"].join(" ")},n.createElement(o.LoaderIndicator,{isLoaded:!S},n.createElement(l.Row,null,n.createElement(l.Col,null,L&&n.createElement(g.PerPageHelperComponent,{onChangeFn:function(e){W((function(r){return t.__assign(t.__assign({},r),{perPage:e})}))},defaultValue:null!==(_=null==v?void 0:v.per_page)&&void 0!==_?_:d.DEFAULT_PER_PAGE})),n.createElement(l.Col,null,D&&n.createElement(c.FilterHelperComponent,{onClickFn:function(e){W((function(r){var n=r.page,i=t.__rest(r,["page"]),a=n;return(!e&&i.filter||e&&!i.filter)&&(a=1),t.__assign(t.__assign({},i),{page:a,filter:e})}))},defaultValue:null!==(m=J.filter)&&void 0!==m?m:""}))),n.createElement(l.Row,null,n.createElement(l.Col,null,n.createElement("div",{className:"table-responsive"},n.createElement(l.Table,{striped:b,bordered:F,hover:!0},n.createElement("thead",null,n.createElement("tr",null,E.map((function(e){return re(e)})))),n.createElement("tbody",null,v?v.data.map((function(e,t){return y(e,t)})):null))))),n.createElement(p.PaginationHelperComponent,{displayShowingSection:H,paginator:v,onPageChangeFn:function(e){W((function(r){return t.__assign(t.__assign({},r),{page:e})}))}})))};
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("tslib"),r=require("react"),n=e(r),i=require("react-router-dom"),a=e(require("@licklist/plugins/dist/services/Route/RouteService")),o=require("../static/loader/LoaderIndicator.js"),s=require("react-bootstrap"),l=e(require("@licklist/plugins/dist/hooks/Query/useQuery")),u=require("lodash"),c=require("./FilterHelperComponent.js"),g=require("./PaginationHelperComponent.js"),p=e(require("@licklist/plugins/dist/services/Table/TableService")),d=require("./PerPageHelperComponent.js"),_=require("./utils/index.js");exports.TableHelperComponent=function(e){var f,m,v=e.paginator,y=e.headers,E=e.renderItemFn,S=e.isLoading,h=e.onRefreshFn,C=e.refreshAt,P=e.striped,b=void 0===P||P,q=e.bordered,D=void 0===q||q,F=e.displaySearchBar,j=void 0===F||F,O=e.displayPerPageSelect,k=void 0===O||O,L=e.displayShowingSection,w=void 0===L||L,H=e.externalFilters,R=void 0===H?{}:H,T=e.initialOptions,K=void 0===T?{}:T,N=e.filteredOrdersOptions,V=l(),I=i.useLocation().pathname,x=Number(_.getFilterOptionsValue(V,K,"page")),A=Number(_.getFilterOptionsValue(V,K,"perPage")),U=String(_.getFilterOptionsValue(V,K,"sortKey")),Q=String(_.getFilterOptionsValue(V,K,"sortDirection")),B=String(_.getFilterOptionsValue(V,K,"filter")),G=t.__read(r.useState(),2),M=G[0],z=G[1],J=t.__read(r.useState({page:x,perPage:A,sortKey:U,sortDirection:Q,filter:B}),2),W=J[0],X=J[1],Y=t.__read(r.useState(0),2),Z=Y[0],$=Y[1],ee=t.__read(r.useState(R),2),te=ee[0],re=ee[1];r.useEffect((function(){u.isEqual(M,W)&&u.isEqual(te,R)||N||(z(W),re(R),h&&h(W),a.redirectTo([I,["page=".concat(W.page),"perPage=".concat(W.perPage),"sortKey=".concat(escape(W.sortKey)),"sortDirection=".concat(escape(W.sortDirection)),"filter=".concat(escape(W.filter)),new URLSearchParams(R).toString()].join("&")].join("?")))}),[I,W,h,N,R]),r.useEffect((function(){Z===C||N||($((function(e){return null!=C?C:e})),h&&h(W))}),[h,W,C,N,Z]);var ne=function(e){var r,i;if("string"==typeof e)return n.createElement("th",{key:e.toLowerCase(),className:p.getHeaderClasses(e,U,Q)},e);if("object"==typeof e){var a={width:null!==(r=e.width)&&void 0!==r?r:"auto"};return n.createElement("th",{key:null!==(i=e.key)&&void 0!==i?i:e.title.toLowerCase(),className:p.getHeaderClasses(e,U,Q),style:a,onClick:function(){return e.isSortable&&(r=e.key,n=p.DEFAULT_SORT_DIRECTION,void(U===r?N?N((function(e){return n=p.getSortDirection(e.sortDirection,n),t.__assign(t.__assign({},e),{sortKey:r,sortDirection:n})})):X((function(e){return n=p.getSortDirection(e.sortDirection,n),t.__assign(t.__assign({},e),{sortKey:r,sortDirection:n})})):N?N((function(e){return t.__assign(t.__assign({},e),{sortKey:r,sortDirection:n})})):X((function(e){return t.__assign(t.__assign({},e),{sortKey:r,sortDirection:n})}))));var r,n}},e.title)}return null};return n.createElement("div",{className:["table-helper",S?"py-5":"py-1"].join(" ")},n.createElement(o.LoaderIndicator,{isLoaded:!S},n.createElement(s.Row,null,n.createElement(s.Col,null,k&&n.createElement(d.PerPageHelperComponent,{onChangeFn:function(e){N?N((function(r){return t.__assign(t.__assign({},r),{page:e})})):X((function(r){return t.__assign(t.__assign({},r),{perPage:e})}))},defaultValue:null!==(f=null==v?void 0:v.per_page)&&void 0!==f?f:p.DEFAULT_PER_PAGE})),n.createElement(s.Col,null,j&&n.createElement(c.FilterHelperComponent,{onClickFn:function(e){N&&N((function(r){var n=r.page,i=t.__rest(r,["page"]),a=n;return(!e&&i.filter||e&&!i.filter)&&(a=1),t.__assign(t.__assign({},i),{page:a,filter:e})})),X((function(r){var n=r.page,i=t.__rest(r,["page"]),a=n;return(!e&&i.filter||e&&!i.filter)&&(a=1),t.__assign(t.__assign({},i),{page:a,filter:e})}))},defaultValue:null!==(m=W.filter)&&void 0!==m?m:""}))),n.createElement(s.Row,null,n.createElement(s.Col,null,n.createElement("div",{className:"table-responsive"},n.createElement(s.Table,{striped:b,bordered:D,hover:!0},n.createElement("thead",null,n.createElement("tr",null,y.map((function(e){return ne(e)})))),n.createElement("tbody",null,v?v.data.map((function(e,t){return E(e,t)})):null))))),n.createElement(g.PaginationHelperComponent,{displayShowingSection:w,paginator:v,onPageChangeFn:function(e){N?N((function(r){return t.__assign(t.__assign({},r),{page:e})})):X((function(r){return t.__assign(t.__assign({},r),{page:e})}))}})))};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@licklist/design",
3
- "version": "0.48.2",
3
+ "version": "0.49.0-dev.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+ssh://git@bitbucket.org/artelogicsoft/licklist_design.git"
@@ -53,9 +53,9 @@
53
53
  "@fortawesome/free-brands-svg-icons": "5.15.2",
54
54
  "@fortawesome/free-solid-svg-icons": "5.15.2",
55
55
  "@fortawesome/react-fontawesome": "0.1.9",
56
- "@licklist/core": "0.15.x",
56
+ "@licklist/core": ">=0.15.41-dev.0 < 0.15.41",
57
57
  "@licklist/eslint-config": "0.3.4",
58
- "@licklist/plugins": "0.21.x",
58
+ "@licklist/plugins": ">=0.20.133-dev.5 < 0.20.133",
59
59
  "@mdx-js/react": "1.6.22",
60
60
  "@popperjs/core": "2.11.8",
61
61
  "@react-aria/utils": "3.9.0",
@@ -23,6 +23,7 @@ export type CalendarProps = {
23
23
  initialDate?: DateTime;
24
24
  getAvailability?: (date: DateTime) => ZoneResourcesAvailability | null;
25
25
  includeAvailability?: boolean;
26
+ shouldCalculateResources?: boolean;
26
27
  };
27
28
 
28
29
  export const Calendar = ({
@@ -19,6 +19,7 @@ export const CalendarDates = ({
19
19
  fromPrice,
20
20
  getAvailability,
21
21
  includeAvailability,
22
+ shouldCalculateResources,
22
23
  }: CalendarDatesProps) => {
23
24
  const fillCalendarDates = useMemo(() => {
24
25
  let firstDayOfWeek = calendarDates[0]?.weekday ?? 0;
@@ -60,6 +61,7 @@ export const CalendarDates = ({
60
61
  resources={getAvailability?.(date)}
61
62
  showResources={includeAvailability}
62
63
  variant={Variant.month}
64
+ shouldCalculateResources={shouldCalculateResources}
63
65
  />
64
66
  );
65
67
  })}
@@ -2,6 +2,7 @@ import React, { ReactElement } from "react";
2
2
  import clsx from "clsx";
3
3
  import { DateTime } from "luxon";
4
4
  import { ZoneResourcesAvailability } from "@licklist/core/dist/DataMapper/Order/ZoneResourcesAvailabilityDataMapper";
5
+ import { has } from "lodash";
5
6
  import { AvailabilityIndicator } from "../availability-indicator";
6
7
  import { DateContent } from "./DateContent";
7
8
 
@@ -18,8 +19,9 @@ export type DateTimeButtonProps = {
18
19
  isSoldOut?: boolean;
19
20
  onSelect: (date: DateTime) => void;
20
21
  price?: string | number | ReactElement | null;
21
- resources?: ZoneResourcesAvailability | null;
22
+ resources: ZoneResourcesAvailability | null | undefined;
22
23
  showResources?: boolean;
24
+ shouldCalculateResources?: boolean;
23
25
  variant: Variant;
24
26
  };
25
27
 
@@ -32,17 +34,28 @@ export const DateTimeButton = ({
32
34
  price,
33
35
  resources,
34
36
  showResources,
37
+ shouldCalculateResources = true,
35
38
  variant = Variant.week,
36
39
  }: DateTimeButtonProps) => {
37
40
  const isSoldOut =
38
41
  _isSoldOut ||
39
- (resources && resources.bookedResources >= resources.totalResources);
42
+ // only consider resources if shouldCalculateResources is true
43
+ (shouldCalculateResources &&
44
+ resources &&
45
+ resources.bookedResources >= resources.totalResources);
40
46
 
41
47
  const isTimeVariant = variant === Variant.time;
42
48
 
43
49
  const isTimeInPast = isTimeVariant && isDateInPast(date);
44
50
 
45
- const isDisabled = _isDisabled || isSoldOut || isTimeInPast;
51
+ const noResources =
52
+ shouldCalculateResources &&
53
+ // only consider resources if shouldCalculateResources is true
54
+ (!resources ||
55
+ !has(resources, "bookedResources") ||
56
+ !has(resources, "totalResources"));
57
+
58
+ const isDisabled = _isDisabled || isSoldOut || isTimeInPast || noResources;
46
59
 
47
60
  return (
48
61
  <button
@@ -1,6 +1,7 @@
1
1
  import React, { ReactNode, PropsWithChildren } from "react";
2
2
  import { useTranslation } from "react-i18next";
3
3
  import Button from "react-bootstrap/Button";
4
+ import { Spinner } from "react-bootstrap";
4
5
  import { STEP_FORM_ID } from "../../constants";
5
6
 
6
7
  type ButtonPropsWithoutOnClick = {
@@ -18,29 +19,41 @@ type FooterProps = Partial<
18
19
  disabled?: boolean;
19
20
  buttonLabel?: ReactNode;
20
21
  showButton?: boolean;
22
+ isLoading: boolean;
21
23
  } & (ButtonPropsWithoutOnClick | ButtonPropsWithOnClick)
22
24
  >;
23
25
 
24
26
  export type BookingSummaryFooterProps = PropsWithChildren<FooterProps>;
25
27
 
26
28
  export const BookingSummaryFooter = ({
27
- disabled = false,
29
+ disabled: _disabled = false,
28
30
  onClick,
29
31
  buttonLabel,
30
32
  form = STEP_FORM_ID,
31
33
  children,
32
34
  showButton = true,
35
+ isLoading = false,
33
36
  }: BookingSummaryFooterProps) => {
34
37
  const { t } = useTranslation("Design");
35
38
 
36
39
  const buttonProps = onClick ? { onClick } : { type: "submit", form };
37
40
 
41
+ const disabled = _disabled || isLoading;
42
+
38
43
  return (
39
44
  <div className="d-flex flex-column">
40
45
  {children}
41
46
  {showButton && (
42
- <Button className="m-0 mt-3" disabled={disabled} {...buttonProps}>
43
- {buttonLabel ?? t("continue")}
47
+ <Button
48
+ className="m-0 d-flex align-items-center justify-content-center mt-3"
49
+ disabled={disabled}
50
+ {...buttonProps}
51
+ >
52
+ {isLoading ? (
53
+ <Spinner animation="border" size="sm" role="status" />
54
+ ) : (
55
+ buttonLabel ?? t("continue")
56
+ )}
44
57
  </Button>
45
58
  )}
46
59
  </div>
@@ -200,6 +200,59 @@ Default.args = {
200
200
  id: 3,
201
201
  name: "Step #3",
202
202
  productCategories: [
203
+ {
204
+ id: 22,
205
+ uniqueId: "product-category24",
206
+ name: "Game zone",
207
+ minSubItems: null,
208
+ maxSubItems: null,
209
+ quantityType: "standard",
210
+ type: "game",
211
+ isTimeRelated: false,
212
+ collectUserInfo: false,
213
+ hasTicket: false,
214
+ allowDeposits: false,
215
+ hasBookingManagement: false,
216
+ weight: 0,
217
+ isReusable: false,
218
+ hasSubEvents: false,
219
+ products: [
220
+ {
221
+ id: 5,
222
+ name: "Product 1",
223
+ termsAndConditions: "",
224
+ productGroupId: null,
225
+ description: "",
226
+ price: "5",
227
+ deposit: 0,
228
+ minQuantity: null,
229
+ maxQuantity: null,
230
+ totalQuantity: "5",
231
+ capacity: 2,
232
+ duration: 0,
233
+ isAvailable: true,
234
+ isSoldOut: false,
235
+ isRequired: false,
236
+ isUnlimited: true,
237
+ quantitySelector: 1,
238
+ hasSpecialNotes: false,
239
+ weight: 0,
240
+ type: "sale",
241
+ tierId: 25,
242
+ zoneId: null,
243
+ subProducts: [],
244
+ images: [],
245
+ uuid: "ccff82d8-1896-40fc-a140-c70e4edf4e90",
246
+ subSlots: null,
247
+ offset: null,
248
+ pause: null,
249
+ serviceTime: null,
250
+ sort: 0,
251
+ },
252
+ ],
253
+ zoneId: "1",
254
+ sort: 2,
255
+ },
203
256
  {
204
257
  id: 3,
205
258
  name: "Product category #3",
@@ -136,11 +136,11 @@ export function ProductControl<T extends FormValues>({
136
136
  setValue,
137
137
  getValues,
138
138
  watch,
139
+ trigger,
140
+ clearErrors,
139
141
  } = useFormContext<T>();
140
142
 
141
- const { setLoading, providerHasBookingManagement } = useContext(
142
- ProductSetLoadingContext
143
- );
143
+ const { setLoading } = useContext(ProductSetLoadingContext);
144
144
  const { t } = useTranslation(["Design", "Validation"]);
145
145
  const [expanded, setExpanded] = useState(false);
146
146
  const [initialImages, setInitialImages] = useState<Image[] | null>(null);
@@ -148,6 +148,8 @@ export function ProductControl<T extends FormValues>({
148
148
  const isUnlimited = Boolean(
149
149
  watch(`${fieldNamePrefix}.isUnlimited` as Path<T>)
150
150
  );
151
+ const capacity = watch(`${fieldNamePrefix}.capacity` as Path<T>);
152
+ const disabledDuration = capacity === "0" || !capacity;
151
153
 
152
154
  const advancedId = useId();
153
155
  const nameId = useId();
@@ -229,6 +231,19 @@ export function ProductControl<T extends FormValues>({
229
231
  }
230
232
  }, [images, fieldNamePrefix, setValue]);
231
233
 
234
+ useEffect(() => {
235
+ if (!disabledDuration) {
236
+ trigger(`${fieldNamePrefix}.duration` as Path<T>);
237
+ return;
238
+ }
239
+ setValue(
240
+ `${fieldNamePrefix}.duration` as Path<T>,
241
+ 0 as UnpackNestedValue<PathValue<T, Path<T>>>
242
+ );
243
+ clearErrors(`${fieldNamePrefix}.duration` as Path<T>);
244
+ // eslint-disable-next-line react-hooks/exhaustive-deps
245
+ }, [disabledDuration]);
246
+
232
247
  const quantitySelector = quantityValue ?? "1";
233
248
  const quantity = QUANTITY_TYPE_LIST_DTO[quantitySelector as string];
234
249
  return (
@@ -374,10 +389,10 @@ export function ProductControl<T extends FormValues>({
374
389
  </Row>
375
390
 
376
391
  {categoryType === CATEGORY_TYPE_FIXED_DURATION && (
377
- <Row className="align-items-start">
392
+ <Row className="align-items-start duration-capacity-container">
378
393
  <ProductDurationControl
379
394
  fieldNamePrefix={fieldNamePrefix}
380
- providerHasBookingManagement={providerHasBookingManagement}
395
+ disabled={disabledDuration}
381
396
  />
382
397
 
383
398
  <Col lg={4} md={4}>
@@ -386,58 +401,76 @@ export function ProductControl<T extends FormValues>({
386
401
  label={t("capacity")}
387
402
  rules={{
388
403
  min: {
389
- value: 1,
390
- message: t("Validation:fieldRequired", {
404
+ value: 0,
405
+ message: t("Validation:fieldMinNumber", {
391
406
  attribute: t("capacity"),
407
+ min: 0,
392
408
  }) as string,
393
409
  },
394
410
  }}
395
411
  />
396
412
  </Col>
413
+ {disabledDuration && (
414
+ <div className="duration-hint duration-capacity-container">
415
+ {t("Design:forDurationEditing")}
416
+ </div>
417
+ )}
397
418
  </Row>
398
419
  )}
399
420
 
400
421
  {categoryType === CATEGORY_TYPE_GAME && (
401
- <Row className="align-items-start">
402
- <Col lg={4} md={4}>
403
- <FormNumberInput
404
- fieldName={`${fieldNamePrefix}.capacity`}
405
- label={t("capacity")}
406
- onChange={onChangeGameCapacity}
407
- rules={{
408
- required: t("Validation:fieldRequired", {
409
- attribute: t("capacity"),
410
- }) as string,
411
- min: {
412
- value: 1,
413
- message: t("Validation:fieldRequired", {
414
- attribute: t("capacity"),
415
- }) as string,
416
- },
417
- }}
418
- />
419
- </Col>
420
- <Col lg={4} md={4}>
421
- <FormNumberInput
422
- fieldName={`${fieldNamePrefix}.duration`}
423
- label={t("durationMinutes")}
424
- rules={{
425
- required: t("Validation:fieldRequired", {
426
- attribute: t("capacity"),
427
- }) as string,
428
- min: {
429
- value: 1,
430
- message: t("Validation:fieldRequired", {
431
- attribute: t("capacity"),
432
- }) as string,
433
- },
434
- }}
435
- />
436
- </Col>
437
- </Row>
422
+ <>
423
+ <Row className="align-items-start duration-capacity-container">
424
+ <Col lg={4} md={4}>
425
+ <FormNumberInput
426
+ fieldName={`${fieldNamePrefix}.capacity`}
427
+ label={t("capacity")}
428
+ onChange={onChangeGameCapacity}
429
+ rules={{
430
+ min: {
431
+ value: 0,
432
+ message: t("Validation:fieldMinNumber", {
433
+ attribute: t("capacity"),
434
+ min: 1,
435
+ }) as string,
436
+ },
437
+ }}
438
+ />
439
+ </Col>
440
+ <Col lg={4} md={4}>
441
+ <FormNumberInput
442
+ fieldName={`${fieldNamePrefix}.duration`}
443
+ label={t("durationMinutes")}
444
+ disabled={disabledDuration}
445
+ rules={{
446
+ min: {
447
+ value: 0,
448
+ message: t("Validation:fieldMinNumber", {
449
+ attribute: t("duration"),
450
+ min: 0,
451
+ }) as string,
452
+ },
453
+ validate: (val) => {
454
+ if (!disabledDuration && (!val || val < 1)) {
455
+ return t("Validation:fieldRequired", {
456
+ attribute: t("duration"),
457
+ }) as string;
458
+ }
459
+ return true;
460
+ },
461
+ }}
462
+ />
463
+ </Col>
464
+ </Row>
465
+ {disabledDuration && (
466
+ <div className="duration-hint pl-0">
467
+ {t("Design:forDurationEditing")}
468
+ </div>
469
+ )}
470
+ </>
438
471
  )}
439
472
 
440
- <Row>
473
+ <Row className="mt-4">
441
474
  <Col lg={8} md={8}>
442
475
  <Form.Group controlId={termsAndConditionsId}>
443
476
  <Form.Label>{t("productTermsConditions")}</Form.Label>
@@ -1,22 +1,21 @@
1
+ import React from "react";
1
2
  import HookFormService from "@licklist/plugins/dist/services/Form/HookFormService";
2
3
  import { FieldNamePrefixPath } from "@licklist/plugins/dist/types/services/Form/hook-form-service";
3
4
  import { useId } from "@react-aria/utils";
4
- import React from "react";
5
5
  import { Col, Form, InputGroup } from "react-bootstrap";
6
6
  import { Controller, Path, useFormContext, useWatch } from "react-hook-form";
7
7
  import { useTranslation } from "react-i18next";
8
8
  import { ReactComponent as IncrementIcon } from "../../../assets/dashboard/increment.svg";
9
9
 
10
10
  export interface ProductDurationControlProps<T> extends FieldNamePrefixPath<T> {
11
- providerHasBookingManagement: boolean;
11
+ disabled: boolean;
12
12
  }
13
13
 
14
14
  export const ProductDurationControl = <T,>({
15
15
  fieldNamePrefix,
16
- providerHasBookingManagement,
16
+ disabled,
17
17
  }: ProductDurationControlProps<T>) => {
18
18
  const { t } = useTranslation("Design");
19
-
20
19
  const hoursId = useId();
21
20
  const minutesId = useId();
22
21
 
@@ -30,7 +29,7 @@ export const ProductDurationControl = <T,>({
30
29
 
31
30
  const setDurationValue = (value: number) =>
32
31
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
- setValue(fieldName, value as any);
32
+ setValue(fieldName, value as any, { shouldValidate: true });
34
33
 
35
34
  const duration = useWatch({
36
35
  control,
@@ -58,18 +57,21 @@ export const ProductDurationControl = <T,>({
58
57
  control={control}
59
58
  name={fieldName}
60
59
  rules={{
61
- required: {
62
- value: Boolean(providerHasBookingManagement),
63
- message: t("Validation:fieldRequired", {
64
- attribute: t("duration"),
65
- }),
66
- },
67
60
  min: {
68
- value: 1,
61
+ value: 0,
69
62
  message: t("Validation:fieldMinNumber", {
70
63
  attribute: t("duration"),
64
+ min: 0,
71
65
  }),
72
66
  },
67
+ validate: (val) => {
68
+ if (!disabled && (!val || val < 1)) {
69
+ return t("Validation:fieldRequired", {
70
+ attribute: t("duration"),
71
+ }) as string;
72
+ }
73
+ return true;
74
+ },
73
75
  }}
74
76
  render={({ field }) => (
75
77
  <>
@@ -92,6 +94,7 @@ export const ProductDurationControl = <T,>({
92
94
  min={0}
93
95
  step={1}
94
96
  value={durationHours}
97
+ disabled={disabled}
95
98
  isInvalid={isInvalid}
96
99
  onChange={(event) =>
97
100
  onHoursChange(Number(event.target.value))
@@ -125,6 +128,7 @@ export const ProductDurationControl = <T,>({
125
128
  type="number"
126
129
  min={0}
127
130
  step={1}
131
+ disabled={disabled}
128
132
  value={durationMinutes}
129
133
  isInvalid={isInvalid}
130
134
  onChange={(event) =>
@@ -20,6 +20,7 @@ export interface ManualBookingSummaryProps {
20
20
  orders: ManualBookingOrder[];
21
21
  ordersSum: number;
22
22
  orderSumIncludingFee?: number | null;
23
+ hasBookingCategory: boolean;
23
24
  isFeeFetching: boolean;
24
25
  orderDate: string;
25
26
  relyOnPeopleType?: RelyOnPeopleType | null;
@@ -33,6 +34,7 @@ export const ManualBookingSummary = ({
33
34
  isFeeFetching,
34
35
  orderDate,
35
36
  relyOnPeopleType,
37
+ hasBookingCategory,
36
38
  }: ManualBookingSummaryProps) => {
37
39
  const { t } = useTranslation(["Design", "Sale"]);
38
40
  const { formatNumber } = useIntl();
@@ -53,6 +55,7 @@ export const ManualBookingSummary = ({
53
55
  const relyOnPeopleMultiplier = getRelyOnPeopleMultiplier({
54
56
  relyOnPeopleType,
55
57
  capacity: order?.capacity,
58
+ hasBookingCategory,
56
59
  });
57
60
  return (
58
61
  <div
@@ -60,7 +63,7 @@ export const ManualBookingSummary = ({
60
63
  className="d-flex justify-content-between border-summary-item"
61
64
  >
62
65
  <div>{order.name}</div>
63
- {showRelyOnPeople && relyOnPeopleMultiplier && (
66
+ {showRelyOnPeople && !!relyOnPeopleMultiplier && (
64
67
  <div>
65
68
  {`x ${order.quantity * relyOnPeopleMultiplier} ${t(
66
69
  "people"
@@ -8,6 +8,8 @@ export interface BooleanSwitchProps {
8
8
  value?: boolean;
9
9
  disabled?: boolean;
10
10
  onChange: (value: boolean) => void;
11
+ firstValueTitle?: string;
12
+ secondValueTitle?: string;
11
13
  }
12
14
 
13
15
  export function BooleanSwitch({
@@ -15,12 +17,14 @@ export function BooleanSwitch({
15
17
  value,
16
18
  disabled,
17
19
  onChange,
20
+ firstValueTitle,
21
+ secondValueTitle,
18
22
  }: BooleanSwitchProps) {
19
23
  const { t } = useTranslation("Design");
20
24
 
21
25
  const options: SelectItem[] = [
22
- { id: 1, value: t("yes") },
23
- { id: 0, value: t("no") },
26
+ { id: 1, value: firstValueTitle ?? t("yes") },
27
+ { id: 0, value: secondValueTitle ?? t("no") },
24
28
  ];
25
29
 
26
30
  const handleChange = useCallback(
@@ -12,7 +12,17 @@
12
12
  font-size: 1.375rem;
13
13
  }
14
14
  }
15
-
15
+ .duration-capacity-container {
16
+ .form-group {
17
+ margin-bottom: 0;
18
+ }
19
+ }
20
+ .duration-hint {
21
+ font-size: 0.875rem;
22
+ color: $gray-600;
23
+ padding-left: 1rem;
24
+ margin-top: 1rem;
25
+ }
16
26
  label {
17
27
  color: $black;
18
28
  font-size: 0.875rem;
@@ -164,10 +164,12 @@
164
164
 
165
165
  @include media-breakpoint-down(md) {
166
166
  flex-wrap: wrap;
167
+
167
168
  .date-container {
168
169
  width: 100%;
169
170
  flex: 1;
170
171
  }
172
+
171
173
  .btn-primary {
172
174
  margin-top: 1rem;
173
175
  }
@@ -230,4 +232,4 @@
230
232
  }
231
233
  }
232
234
  }
233
- }
235
+ }
@@ -5,7 +5,7 @@
5
5
  flex-wrap: wrap;
6
6
 
7
7
  .result-card {
8
- height: 14.25rem;
8
+ height: 14rem;
9
9
  border: 1px solid $gray-400;
10
10
  max-width: calc(50% - 0.75rem);
11
11
  flex: 0 0 calc(50% - 0.75rem);
@@ -27,6 +27,7 @@ $btn-switch-option-padding-y: calc(#{$btn-padding-y} - #{sp(1)}) !default;
27
27
  border-radius: $btn-switch-option-border-radius;
28
28
  margin: 0;
29
29
  padding: $btn-switch-option-padding-y $btn-switch-option-padding-x;
30
+ min-width: 4.25rem;
30
31
 
31
32
  &:hover,
32
33
  &:active,
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/ban-types */
2
- import React, { useEffect, useState } from "react";
2
+ import React, { SetStateAction, useEffect, useState } from "react";
3
3
  import { Col, Row, Table } from "react-bootstrap";
4
4
  import { useLocation } from "react-router-dom";
5
5
  import { isEqual } from "lodash";
@@ -30,6 +30,7 @@ export interface TableHelperComponentProps {
30
30
  displayShowingSection?: boolean;
31
31
  externalFilters?: { [key: string]: any };
32
32
  initialOptions?: Partial<ITableProps>;
33
+ filteredOrdersOptions?: (value: SetStateAction<ITableProps>) => void;
33
34
  }
34
35
 
35
36
  // @TODO Refactor? component to get less complexity
@@ -62,6 +63,7 @@ function TableHelperComponent(props: TableHelperComponentProps) {
62
63
  displayShowingSection = true,
63
64
  externalFilters = {},
64
65
  initialOptions = {},
66
+ filteredOrdersOptions,
65
67
  } = props;
66
68
 
67
69
  const query = useQuery();
@@ -97,8 +99,9 @@ function TableHelperComponent(props: TableHelperComponentProps) {
97
99
  useEffect(
98
100
  () => {
99
101
  if (
100
- isEqual(optionsCache, options) &&
101
- isEqual(cachedExtFilters, externalFilters)
102
+ (isEqual(optionsCache, options) &&
103
+ isEqual(cachedExtFilters, externalFilters)) ||
104
+ !!filteredOrdersOptions
102
105
  )
103
106
  return;
104
107
 
@@ -124,12 +127,12 @@ function TableHelperComponent(props: TableHelperComponentProps) {
124
127
  );
125
128
  },
126
129
  // eslint-disable-next-line react-hooks/exhaustive-deps
127
- [pathname, options, onRefreshFn, externalFilters]
130
+ [pathname, options, onRefreshFn, filteredOrdersOptions, externalFilters]
128
131
  );
129
132
 
130
133
  // Refresh table's content on manual trigger
131
134
  useEffect(() => {
132
- if (refreshedAt === refreshAt) {
135
+ if (refreshedAt === refreshAt || !!filteredOrdersOptions) {
133
136
  return;
134
137
  }
135
138
 
@@ -138,24 +141,44 @@ function TableHelperComponent(props: TableHelperComponentProps) {
138
141
  if (onRefreshFn) {
139
142
  onRefreshFn(options);
140
143
  }
141
- }, [onRefreshFn, options, refreshAt, refreshedAt]);
144
+ }, [onRefreshFn, options, refreshAt, filteredOrdersOptions, refreshedAt]);
142
145
 
143
146
  const onSort = (key: string) => {
144
147
  let nextDirection = TableService.DEFAULT_SORT_DIRECTION;
145
-
146
148
  if (sortKey === key) {
147
- setOptions((prevOptions) => {
148
- nextDirection = TableService.getSortDirection(
149
- prevOptions.sortDirection,
150
- nextDirection
151
- );
149
+ if (filteredOrdersOptions) {
150
+ filteredOrdersOptions((prevOptions) => {
151
+ nextDirection = TableService.getSortDirection(
152
+ prevOptions.sortDirection,
153
+ nextDirection
154
+ );
152
155
 
153
- return {
154
- ...prevOptions,
155
- sortKey: key,
156
- sortDirection: nextDirection,
157
- };
158
- });
156
+ return {
157
+ ...prevOptions,
158
+ sortKey: key,
159
+ sortDirection: nextDirection,
160
+ };
161
+ });
162
+ } else {
163
+ setOptions((prevOptions) => {
164
+ nextDirection = TableService.getSortDirection(
165
+ prevOptions.sortDirection,
166
+ nextDirection
167
+ );
168
+
169
+ return {
170
+ ...prevOptions,
171
+ sortKey: key,
172
+ sortDirection: nextDirection,
173
+ };
174
+ });
175
+ }
176
+ } else if (filteredOrdersOptions) {
177
+ filteredOrdersOptions((prevOptions) => ({
178
+ ...prevOptions,
179
+ sortKey: key,
180
+ sortDirection: nextDirection,
181
+ }));
159
182
  } else {
160
183
  setOptions((prevOptions) => ({
161
184
  ...prevOptions,
@@ -166,6 +189,13 @@ function TableHelperComponent(props: TableHelperComponentProps) {
166
189
  };
167
190
 
168
191
  const onPerPageChange = (nextPerPage: number) => {
192
+ if (filteredOrdersOptions) {
193
+ filteredOrdersOptions((prevOptions) => ({
194
+ ...prevOptions,
195
+ page: nextPerPage,
196
+ }));
197
+ return;
198
+ }
169
199
  setOptions((prevOptions) => ({
170
200
  ...prevOptions,
171
201
  perPage: nextPerPage,
@@ -173,6 +203,13 @@ function TableHelperComponent(props: TableHelperComponentProps) {
173
203
  };
174
204
 
175
205
  const onPageChange = (nextPage: number) => {
206
+ if (filteredOrdersOptions) {
207
+ filteredOrdersOptions((prevOptions) => ({
208
+ ...prevOptions,
209
+ page: nextPage,
210
+ }));
211
+ return;
212
+ }
176
213
  setOptions((prevOptions) => ({
177
214
  ...prevOptions,
178
215
  page: nextPage,
@@ -180,6 +217,24 @@ function TableHelperComponent(props: TableHelperComponentProps) {
180
217
  };
181
218
 
182
219
  const onFilterChange = (nextFilter: string) => {
220
+ if (filteredOrdersOptions) {
221
+ filteredOrdersOptions(({ page: prevPage, ...prevOptions }) => {
222
+ let nextPage = prevPage;
223
+
224
+ if (
225
+ (!nextFilter && prevOptions.filter) ||
226
+ (nextFilter && !prevOptions.filter)
227
+ ) {
228
+ nextPage = 1;
229
+ }
230
+
231
+ return {
232
+ ...prevOptions,
233
+ page: nextPage,
234
+ filter: nextFilter,
235
+ };
236
+ });
237
+ }
183
238
  setOptions(({ page: prevPage, ...prevOptions }) => {
184
239
  let nextPage = prevPage;
185
240