@licklist/design 0.44.486-dev.77 → 0.44.486-dev.79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/events/event-statistic-modal/EventStatisticModal.d.ts +3 -1
- package/dist/events/event-statistic-modal/EventStatisticModal.d.ts.map +1 -1
- package/dist/events/event-statistic-modal/EventStatisticModal.js +1 -1
- package/dist/events/event-statistic-modal/hooks/useTableData.d.ts +2 -1
- package/dist/events/event-statistic-modal/hooks/useTableData.d.ts.map +1 -1
- package/dist/events/event-statistic-modal/hooks/useTableData.js +1 -1
- package/dist/events/event-statistic-modal/utils/index.d.ts +1 -1
- package/dist/events/event-statistic-modal/utils/index.d.ts.map +1 -1
- package/dist/events/event-statistic-modal/utils/index.js +1 -1
- package/dist/product-set/control/DateAndRecurrenceInput.d.ts.map +1 -1
- package/dist/product-set/control/DateAndRecurrenceInput.js +1 -1
- package/package.json +1 -1
- package/src/events/event-statistic-modal/EventStatisticModal.tsx +5 -1
- package/src/events/event-statistic-modal/hooks/useTableData.tsx +12 -5
- package/src/events/event-statistic-modal/utils/index.ts +39 -34
- package/src/product-set/control/DateAndRecurrenceInput.tsx +3 -1
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { EventStatistic } from "@licklist/core/dist/DataMapper/Provider/EventStatisticDataMapper";
|
|
3
|
+
import { Event } from "@licklist/core/dist/DataMapper/Provider/EventDataMapper";
|
|
3
4
|
export type EventStatisticModalProps = {
|
|
4
5
|
isOpen: boolean;
|
|
5
6
|
setIsOpen: (value: boolean) => void;
|
|
7
|
+
date?: Event["startAt"] | null;
|
|
6
8
|
eventStatistic?: EventStatistic | null;
|
|
7
9
|
title?: string;
|
|
8
10
|
};
|
|
9
|
-
export declare const EventStatisticModal: ({ isOpen, setIsOpen, eventStatistic, title, }: EventStatisticModalProps) => JSX.Element;
|
|
11
|
+
export declare const EventStatisticModal: ({ isOpen, setIsOpen, date, eventStatistic, title, }: EventStatisticModalProps) => JSX.Element;
|
|
10
12
|
//# sourceMappingURL=EventStatisticModal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventStatisticModal.d.ts","sourceRoot":"","sources":["../../../src/events/event-statistic-modal/EventStatisticModal.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,kEAAkE,CAAC;
|
|
1
|
+
{"version":3,"file":"EventStatisticModal.d.ts","sourceRoot":"","sources":["../../../src/events/event-statistic-modal/EventStatisticModal.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,kEAAkE,CAAC;AAClG,OAAO,EAAE,KAAK,EAAE,MAAM,yDAAyD,CAAC;AAKhF,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,mBAAmB,wDAM7B,wBAAwB,gBAiD1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("react"),a=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,l=require("react-i18next"),n=require("react-bootstrap"),r=require("../../static/Icon.js");require("../../table/MenuButton.js"),require("../../table/FilterHelperComponent.js"),require("../../table/PaginationHelperComponent.js"),require("../../table/PerPageHelperComponent.js");var s=require("../../table/StaticTable.js");require("../../table/TableHelperComponent.js"),require("../../table/ReactTableHelperComponent.js");var i=require("./hooks/useTableData.js");exports.EventStatisticModal=function(e){var t=e.isOpen,o=e.setIsOpen,c=e.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("react"),a=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,l=require("react-i18next"),n=require("react-bootstrap"),r=require("../../static/Icon.js");require("../../table/MenuButton.js"),require("../../table/FilterHelperComponent.js"),require("../../table/PaginationHelperComponent.js"),require("../../table/PerPageHelperComponent.js");var s=require("../../table/StaticTable.js");require("../../table/TableHelperComponent.js"),require("../../table/ReactTableHelperComponent.js");var i=require("./hooks/useTableData.js");exports.EventStatisticModal=function(e){var t=e.isOpen,o=e.setIsOpen,c=e.date,u=e.eventStatistic,m=e.title,d=l.useTranslation("Design").t,b=i.useTableData(c,u),p=function(){o(!1)};return a.createElement(n.Modal,{show:t,onHide:p,animation:!1,centered:!0,contentClassName:"rounded",className:"event-statistic-modal"},a.createElement(n.Modal.Header,null,a.createElement(n.Modal.Title,{as:"h6"},null!=m?m:d("eventStatistic")),a.createElement(n.Button,{variant:"danger",className:"btn-sm rounded",onClick:p},a.createElement(r.default,{type:"times",height:"1rem"}))),a.createElement(n.Modal.Body,null,b.length?a.createElement(a.Fragment,null,a.createElement("h5",{className:"mb-5"},d("statistics")),a.createElement(s.StaticTable,{columns:[{key:"name",label:""},{key:"quantity",label:""},{key:"total",label:""}],data:b,className:"striped-static-table"})):a.createElement("div",{className:"no-statistic"},a.createElement("h5",null,d("noStatisticsForSelectedEvent")))))};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EventStatistic } from "@licklist/core/dist/DataMapper/Provider/EventStatisticDataMapper";
|
|
2
|
+
import { Event } from "@licklist/core/dist/DataMapper/Provider/EventDataMapper";
|
|
2
3
|
import { StaticTableData } from "../../../table";
|
|
3
|
-
export declare const useTableData: (eventStatistic: EventStatistic | null) => StaticTableData[];
|
|
4
|
+
export declare const useTableData: (date: Event["startAt"] | null, eventStatistic: EventStatistic | null) => StaticTableData[];
|
|
4
5
|
//# sourceMappingURL=useTableData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableData.d.ts","sourceRoot":"","sources":["../../../../src/events/event-statistic-modal/hooks/useTableData.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,kEAAkE,CAAC;
|
|
1
|
+
{"version":3,"file":"useTableData.d.ts","sourceRoot":"","sources":["../../../../src/events/event-statistic-modal/hooks/useTableData.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,kEAAkE,CAAC;AAClG,OAAO,EAAE,KAAK,EAAE,MAAM,yDAAyD,CAAC;AAEhF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,eAAO,MAAM,YAAY,SACjB,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,kBACb,cAAc,GAAG,IAAI,sBA+EtC,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),u=require("@licklist/core/dist/Config"),i=require("react-i18next"),a=e(require("clsx")),c=require("react-intl"),o=require("../utils/index.js");exports.useTableData=function(e){var
|
|
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),u=require("@licklist/core/dist/Config"),i=require("react-i18next"),a=e(require("clsx")),c=require("react-intl"),o=require("../utils/index.js");exports.useTableData=function(e,s){var l=i.useTranslation("Design").t,f=c.useIntl().formatNumber,d=t.__read(r.useState([]),2),y=d[0],T=d[1],b=function(e,t){return void 0===t&&(t=!1),n.createElement("div",{className:a("bold",t&&"header-row")},e)},q=function(e){var t=String(e);return Object.keys(o.TRANSLATION_KEYS).includes(t)?l(t):t};return r.useEffect((function(){T(function(e,t){if(!t)return[];var r=[];return o.convertEventStatisticToTableData(e,t).forEach((function(e){var t=e.name,n=e.quantity,i=e.total,a=e.isBold,c=e.isHeader,s=e.key,l=Object.keys(o.TRANSLATION_KEYS).includes(String(i))?i:f(Number(i),{style:"currency",currency:u.Currency.GBP}),d=q(t),y=q(n);a?r.push({name:b(d,c),quantity:b(y,c),total:b(t===o.TRANSLATION_KEYS.total?"Total: ".concat(l):l,c),key:s}):r.push({name:d,quantity:y,total:l,key:s})})),r}(e,s))}),[e,s]),y};
|
|
@@ -4,7 +4,7 @@ export declare const TRANSLATION_KEYS: {
|
|
|
4
4
|
total: string;
|
|
5
5
|
totalPerCategory: string;
|
|
6
6
|
};
|
|
7
|
-
export declare const convertEventStatisticToTableData: (eventStatistic: EventStatistic) => {
|
|
7
|
+
export declare const convertEventStatisticToTableData: (date: string, eventStatistic: EventStatistic) => {
|
|
8
8
|
name: string;
|
|
9
9
|
key: string;
|
|
10
10
|
isHeader?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/events/event-statistic-modal/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kEAAkE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/events/event-statistic-modal/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kEAAkE,CAAC;AAIlG,eAAO,MAAM,gBAAgB;;;;CAI5B,CAAC;AAEF,eAAO,MAAM,gCAAgC,SACrC,MAAM,kBACI,cAAc;UAUtB,MAAM;SACP,MAAM;eACA,OAAO;aACT,OAAO;cACN,MAAM,GAAG,MAAM;WAClB,MAAM,GAAG,MAAM;GA4DzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t={shortQuantity:"shortQuantity",total:"total",totalPerCategory:"totalPerCategory"};exports.TRANSLATION_KEYS=
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@licklist/core/dist/Config"),o=require("luxon"),a={shortQuantity:"shortQuantity",total:"total",totalPerCategory:"totalPerCategory"};exports.TRANSLATION_KEYS=a,exports.convertEventStatisticToTableData=function(e,r){var n,c,l=0,i=0;if(!r)return[];var u=[],s=o.DateTime.fromISO(e).toUTC().toFormat(t.DATE_TIME_FULL_FORMAT);return null===(c=Object.values(null!==(n=null==r?void 0:r.productCategorySummary[s])&&void 0!==n?n:{}))||void 0===c||c.forEach((function(t){var o=t.totalPerCategory,e=t.productsSummary,r=void 0===e?[]:e,n=t.categoryName,c=t.eventId,s=0;l+=o||0,u.push({name:n,key:"".concat(c,".").concat(n),isBold:!0,isHeader:!0,quantity:a.shortQuantity,total:a.total}),null==r||r.forEach((function(t){var o=t.productsSold,a=t.name,e=t.totalQuantity,r=t.total;s+=o,u.push({name:a,key:"".concat(c,".").concat(n,".").concat(a),quantity:e?"".concat(o," / ").concat(e):String(o),total:String(r)})})),u.push({name:a.totalPerCategory,key:"".concat(c,".").concat(n,".").concat(a.totalPerCategory),quantity:s,total:o,isBold:!0}),i+=s})),u.push({name:a.total,key:"".concat(a.total,".").concat(l),quantity:i,total:l,isBold:!0}),u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateAndRecurrenceInput.d.ts","sourceRoot":"","sources":["../../../src/product-set/control/DateAndRecurrenceInput.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAO1C,OAAO,EAAE,QAAQ,EAAE,MAAM,4DAA4D,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uEAAuE,CAAC;AAuB7G,MAAM,WAAW,4BAA4B;IAC3C,eAAe,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;CACnD;AAED,UAAU,2BAA2B;IACnC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,4BAA4B,EAAE,OAAO,CAAC;IACtC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,sBAAsB,mFAKhC,2BAA2B,
|
|
1
|
+
{"version":3,"file":"DateAndRecurrenceInput.d.ts","sourceRoot":"","sources":["../../../src/product-set/control/DateAndRecurrenceInput.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAO1C,OAAO,EAAE,QAAQ,EAAE,MAAM,4DAA4D,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uEAAuE,CAAC;AAuB7G,MAAM,WAAW,4BAA4B;IAC3C,eAAe,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;CACnD;AAED,UAAU,2BAA2B;IACnC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,4BAA4B,EAAE,OAAO,CAAC;IACtC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,sBAAsB,mFAKhC,2BAA2B,gBA8Q7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAC5C,WAAW,EACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsBxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,r=require("tslib"),t=require("react"),n=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,i=require("react-i18next"),a=require("react-bootstrap"),o=require("../../static/Icon.js"),u=require("react-hook-form"),l=require("@react-aria/utils"),s=require("react-use"),d=require("luxon");require("../../static/index.js");var c=require("@dnd-kit/core"),m=require("@dnd-kit/modifiers"),v=require("@dnd-kit/sortable"),f=require("../../modals/confirmation/ConfirmModal.js"),g=require("@licklist/core/dist/Config/Date"),p=require("../../recurring-date-picker-input/RecurringDatePickerInput.js"),T=require("./ProductSetRecurrenceControl.js"),b=require("../../zone/form/components/AvailableTimesControl.js"),x={name:"sameWidth",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var r=e.state,t={width:"".concat(r.rects.reference.width+4,"px"),marginLeft:"-2px",maxWidth:"unset"};Object.assign(r.styles.popper,t)},effect:function(e){var r=e.state,t=r.elements.reference.getBoundingClientRect().width,n={width:"".concat(t,"px"),maxWidth:"unset"};Object.assign(r.elements.popper.style,n)}};exports.DateAndRecurrenceInput=function(e){var E,_,R,h,q,D=e.isEventEditProductSet,S=e.providerHasBookingManagement,C=e.workHours,y=e.isLoading,k=u.useFormContext(),I=k.control,M=k.register,w=k.formState.errors,A=k.getValues,O=k.setValue,F=k.clearErrors,N=r.__read(t.useState([]),2),j=N[0],P=N[1],V=t.useRef(),L=u.useFieldArray({name:"menuRecurrences",control:I,keyName:"_id"}),W=L.fields,B=L.append,H=L.update,z=L.move,G=r.__read(t.useState(!1),2),K=G[0],J=G[1],Q=r.__read(t.useState({index:null,values:null}),2),U=Q[0],X=Q[1],Y=function(){return X({index:null,values:null})},Z=t.useRef();s.useClickAway(Z,(function(e){var r,t,n;f.CONFIRM_MODAL_ACTIONS.includes(null===(n=null===(t=null===(r=e.target)||void 0===r?void 0:r.attributes)||void 0===t?void 0:t.getNamedItem("data-id"))||void 0===n?void 0:n.value)||(J(!1),Y())}));var $=l.useId(),ee=i.useTranslation("Design").t,re=function(){Y(),J((function(e){return!e}))};return t.useEffect((function(){W.length&&F("menuRecurrences")}),[W,F]),n.createElement(a.Form.Group,null,n.createElement(a.Form.Label,null,ee(D?"whenOverridesAvailable":"productSetAvailable")),n.createElement(a.OverlayTrigger,{show:K,overlay:n.createElement(a.Popover,{id:$,className:"rounded"},n.createElement(a.Popover.Content,{className:"shadow-lg rounded",ref:Z},n.createElement(p.RecurringDatePickerInput,{defaultValues:U.values,onChange:function(e){return r.__awaiter(void 0,void 0,void 0,(function(){var t,n,i,a,o,u,l,s,c;return r.__generator(this,(function(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,r=require("tslib"),t=require("react"),n=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,i=require("react-i18next"),a=require("react-bootstrap"),o=require("../../static/Icon.js"),u=require("react-hook-form"),l=require("@react-aria/utils"),s=require("react-use"),d=require("luxon");require("../../static/index.js");var c=require("@dnd-kit/core"),m=require("@dnd-kit/modifiers"),v=require("@dnd-kit/sortable"),f=require("../../modals/confirmation/ConfirmModal.js"),g=require("@licklist/core/dist/Config/Date"),p=require("../../recurring-date-picker-input/RecurringDatePickerInput.js"),T=require("./ProductSetRecurrenceControl.js"),b=require("../../zone/form/components/AvailableTimesControl.js"),x={name:"sameWidth",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var r=e.state,t={width:"".concat(r.rects.reference.width+4,"px"),marginLeft:"-2px",maxWidth:"unset"};Object.assign(r.styles.popper,t)},effect:function(e){var r=e.state,t=r.elements.reference.getBoundingClientRect().width,n={width:"".concat(t,"px"),maxWidth:"unset"};Object.assign(r.elements.popper.style,n)}};exports.DateAndRecurrenceInput=function(e){var E,_,R,h,q,D=e.isEventEditProductSet,S=e.providerHasBookingManagement,C=e.workHours,y=e.isLoading,k=u.useFormContext(),I=k.control,M=k.register,w=k.formState.errors,A=k.getValues,O=k.setValue,F=k.clearErrors,N=r.__read(t.useState([]),2),j=N[0],P=N[1],V=t.useRef(),L=u.useFieldArray({name:"menuRecurrences",control:I,keyName:"_id"}),W=L.fields,B=L.append,H=L.update,z=L.move,G=r.__read(t.useState(!1),2),K=G[0],J=G[1],Q=r.__read(t.useState({index:null,values:null}),2),U=Q[0],X=Q[1],Y=function(){return X({index:null,values:null})},Z=t.useRef();s.useClickAway(Z,(function(e){var r,t,n;f.CONFIRM_MODAL_ACTIONS.includes(null===(n=null===(t=null===(r=e.target)||void 0===r?void 0:r.attributes)||void 0===t?void 0:t.getNamedItem("data-id"))||void 0===n?void 0:n.value)||(J(!1),Y())}));var $=l.useId(),ee=i.useTranslation("Design").t,re=function(){Y(),J((function(e){return!e}))};return t.useEffect((function(){W.length&&F("menuRecurrences")}),[W,F]),n.createElement(a.Form.Group,null,n.createElement(a.Form.Label,null,ee(D?"whenOverridesAvailable":"productSetAvailable")),n.createElement(a.OverlayTrigger,{show:K,overlay:n.createElement(a.Popover,{id:$,className:"rounded"},n.createElement(a.Popover.Content,{className:"shadow-lg rounded",ref:Z},n.createElement(p.RecurringDatePickerInput,{defaultValues:U.values,onChange:function(e){return r.__awaiter(void 0,void 0,void 0,(function(){var t,n,i,a,o,u,l,s,c,m,v;return r.__generator(this,(function(r){switch(r.label){case 0:return[4,null===(l=V.current)||void 0===l?void 0:l.trigger()];case 1:return t=r.sent(),(null==e?void 0:e.startTime)&&(null==e?void 0:e.endTime)&&t&&(n=d.DateTime.fromISO(e.startTime),i=d.DateTime.fromISO(e.endTime),a=V.current.getValues().availableTimes,!a.every((function(e){var r=d.DateTime.fromFormat(e,g.TIME_FORMAT);return r.diff(n,"minutes").minutes>=0&&r.diff(i,"minutes").minutes<=0})))?(V.current.setError("availableTimes",{message:ee("Validation:fieldTimeBetween",{attribute:ee("Design:startTimesSmall"),min:n.toFormat(g.TIME_FORMAT),max:i.toFormat(g.TIME_FORMAT)})}),[2]):(o=(null===(c=null===(s=null==V?void 0:V.current)||void 0===s?void 0:s.getValues())||void 0===c?void 0:c.availableTimes)||null,u={rrule:e.rrule,startDate:e.startDate,endDate:e.endDate,startTime:e.startTime,endTime:e.endTime,availableTimes:o},(null===(m=U.values)||void 0===m?void 0:m.id)&&(u.id=null===(v=U.values)||void 0===v?void 0:v.id),null!==U.index?H(U.index,u):B(u),J((function(){return!1})),Y(),[2])}}))}))},onDelete:function(){var e=U.index;J(!1),Y(),setTimeout((function(){var r=A().menuRecurrences;O("menuRecurrences",(void 0===r?[]:r).filter((function(r,t){return t!==e})))}),100)}},S&&n.createElement(b.AvailableTimesControl,{workHours:C,isLoading:y,defaultValues:j,ref:V,errorMessage:null===(R=null===(_=null===(E=null==w?void 0:w.menuRecurrences)||void 0===E?void 0:E["".concat(null==U?void 0:U.index)])||void 0===_?void 0:_.availableTimes)||void 0===R?void 0:R.message,clearErrorMessage:function(){return F("menuRecurrences.".concat(null==U?void 0:U.index,".availableTimes"))}})))),trigger:"click",placement:"bottom",popperConfig:{modifiers:[x]}},n.createElement("div",{className:"product-set-recurrences"},n.createElement(c.DndContext,{onDragEnd:function(e){var r=e.over,t=e.active;if(r.id!==t.id){var n=W.findIndex((function(e){return String(e._id)===t.id})),i=W.findIndex((function(e){return String(e._id)===r.id}));z(n,i)}},modifiers:[m.restrictToVerticalAxis]},n.createElement(v.SortableContext,{items:null!==(h=null==W?void 0:W.map((function(e){return String(e._id)})))&&void 0!==h?h:[],strategy:v.verticalListSortingStrategy},W.map((function(e,r){var t,i,a;return n.createElement(T.ProductSetRecurrenceControl,{key:e._id,menuRecurrence:e,onEdit:function(){return function(e,r){Y(),setTimeout((function(){X({index:r,values:e}),P(e.availableTimes||[]),J((function(){return!0}))}),100)}(e,r)},errorMessage:null===(a=null===(i=null===(t=null==w?void 0:w.menuRecurrences)||void 0===t?void 0:t["".concat(r)])||void 0===i?void 0:i.availableTimes)||void 0===a?void 0:a.message})})))),(!D||(null==W?void 0:W.length)<1)&&n.createElement("div",{className:"product-set-recurrence-icon-wrapper",role:"button",tabIndex:0,onClick:re,onKeyDown:re},n.createElement(o.default,{type:"plus-circle",height:"1rem",className:"product-set-recurrence-icon-add mr-2"}),ee("addDates")),n.createElement(a.Form.Control,r.__assign({type:"hidden"},M("menuRecurrences",{required:{value:!0,message:ee("Validation:fieldMinNumber",{attribute:ee("dates"),min:1})}}))),n.createElement("div",{className:"manual-form-error"},null===(q=w.menuRecurrences)||void 0===q?void 0:q.message))))},exports.sameWidthPopperModifier=x;
|
package/package.json
CHANGED
|
@@ -2,6 +2,7 @@ import React from "react";
|
|
|
2
2
|
import { Modal, Button } from "react-bootstrap";
|
|
3
3
|
import { useTranslation } from "react-i18next";
|
|
4
4
|
import { EventStatistic } from "@licklist/core/dist/DataMapper/Provider/EventStatisticDataMapper";
|
|
5
|
+
import { Event } from "@licklist/core/dist/DataMapper/Provider/EventDataMapper";
|
|
5
6
|
import Icon from "../../static/Icon";
|
|
6
7
|
import { StaticTable } from "../../table";
|
|
7
8
|
import { useTableData } from "./hooks/useTableData";
|
|
@@ -9,6 +10,7 @@ import { useTableData } from "./hooks/useTableData";
|
|
|
9
10
|
export type EventStatisticModalProps = {
|
|
10
11
|
isOpen: boolean;
|
|
11
12
|
setIsOpen: (value: boolean) => void;
|
|
13
|
+
date?: Event["startAt"] | null;
|
|
12
14
|
eventStatistic?: EventStatistic | null;
|
|
13
15
|
title?: string;
|
|
14
16
|
};
|
|
@@ -16,11 +18,13 @@ export type EventStatisticModalProps = {
|
|
|
16
18
|
export const EventStatisticModal = ({
|
|
17
19
|
isOpen,
|
|
18
20
|
setIsOpen,
|
|
21
|
+
date,
|
|
19
22
|
eventStatistic,
|
|
20
23
|
title,
|
|
21
24
|
}: EventStatisticModalProps) => {
|
|
22
25
|
const { t } = useTranslation("Design");
|
|
23
|
-
|
|
26
|
+
|
|
27
|
+
const data = useTableData(date, eventStatistic);
|
|
24
28
|
const handleClose = () => {
|
|
25
29
|
setIsOpen(false);
|
|
26
30
|
};
|
|
@@ -4,10 +4,14 @@ import { useIntl } from "react-intl";
|
|
|
4
4
|
import { useTranslation } from "react-i18next";
|
|
5
5
|
import * as Config from "@licklist/core/dist/Config";
|
|
6
6
|
import { EventStatistic } from "@licklist/core/dist/DataMapper/Provider/EventStatisticDataMapper";
|
|
7
|
+
import { Event } from "@licklist/core/dist/DataMapper/Provider/EventDataMapper";
|
|
7
8
|
import { convertEventStatisticToTableData, TRANSLATION_KEYS } from "../utils";
|
|
8
9
|
import { StaticTableData } from "../../../table";
|
|
9
10
|
|
|
10
|
-
export const useTableData = (
|
|
11
|
+
export const useTableData = (
|
|
12
|
+
date: Event["startAt"] | null,
|
|
13
|
+
eventStatistic: EventStatistic | null
|
|
14
|
+
) => {
|
|
11
15
|
const { t } = useTranslation("Design");
|
|
12
16
|
const { formatNumber } = useIntl();
|
|
13
17
|
const [tableRows, setTableRows] = useState<StaticTableData[]>([]);
|
|
@@ -28,14 +32,17 @@ export const useTableData = (eventStatistic: EventStatistic | null) => {
|
|
|
28
32
|
return t(key);
|
|
29
33
|
};
|
|
30
34
|
|
|
31
|
-
const transformStatisticToTableRows = (
|
|
35
|
+
const transformStatisticToTableRows = (
|
|
36
|
+
date: Event["startAt"],
|
|
37
|
+
statistic: EventStatistic | null
|
|
38
|
+
) => {
|
|
32
39
|
if (!statistic) {
|
|
33
40
|
return [];
|
|
34
41
|
}
|
|
35
42
|
|
|
36
43
|
const tableDataRows: StaticTableData[] = [];
|
|
37
44
|
|
|
38
|
-
convertEventStatisticToTableData(statistic).forEach(
|
|
45
|
+
convertEventStatisticToTableData(date, statistic).forEach(
|
|
39
46
|
({ name, quantity, total, isBold, isHeader, key }) => {
|
|
40
47
|
const formattedTotal = !Object.keys(TRANSLATION_KEYS).includes(
|
|
41
48
|
String(total)
|
|
@@ -77,9 +84,9 @@ export const useTableData = (eventStatistic: EventStatistic | null) => {
|
|
|
77
84
|
};
|
|
78
85
|
|
|
79
86
|
useEffect(() => {
|
|
80
|
-
setTableRows(transformStatisticToTableRows(eventStatistic));
|
|
87
|
+
setTableRows(transformStatisticToTableRows(date, eventStatistic));
|
|
81
88
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
82
|
-
}, [eventStatistic]);
|
|
89
|
+
}, [date, eventStatistic]);
|
|
83
90
|
|
|
84
91
|
return tableRows;
|
|
85
92
|
};
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { EventStatistic } from "@licklist/core/dist/DataMapper/Provider/EventStatisticDataMapper";
|
|
2
|
+
import { DateTime } from "luxon";
|
|
3
|
+
import { DATE_TIME_FULL_FORMAT } from "@licklist/core/dist/Config";
|
|
2
4
|
|
|
3
5
|
export const TRANSLATION_KEYS = {
|
|
4
6
|
shortQuantity: "shortQuantity",
|
|
@@ -7,6 +9,7 @@ export const TRANSLATION_KEYS = {
|
|
|
7
9
|
};
|
|
8
10
|
|
|
9
11
|
export const convertEventStatisticToTableData = (
|
|
12
|
+
date: string,
|
|
10
13
|
eventStatistic: EventStatistic
|
|
11
14
|
) => {
|
|
12
15
|
let totalAmount = 0;
|
|
@@ -25,49 +28,51 @@ export const convertEventStatisticToTableData = (
|
|
|
25
28
|
total: string | number;
|
|
26
29
|
}[] = [];
|
|
27
30
|
|
|
28
|
-
|
|
29
|
-
(
|
|
30
|
-
|
|
31
|
-
({ totalPerCategory, productsSummary = [], categoryName, eventId }) => {
|
|
32
|
-
let quantity = 0;
|
|
31
|
+
const summaryFormattedDate = DateTime.fromISO(date)
|
|
32
|
+
.toUTC()
|
|
33
|
+
.toFormat(DATE_TIME_FULL_FORMAT);
|
|
33
34
|
|
|
34
|
-
|
|
35
|
+
Object.values(
|
|
36
|
+
eventStatistic?.productCategorySummary[summaryFormattedDate] ?? {}
|
|
37
|
+
)?.forEach(
|
|
38
|
+
({ totalPerCategory, productsSummary = [], categoryName, eventId }) => {
|
|
39
|
+
let quantity = 0;
|
|
35
40
|
|
|
36
|
-
|
|
37
|
-
name: categoryName,
|
|
38
|
-
key: `${eventId}.${categoryName}`,
|
|
39
|
-
isBold: true,
|
|
40
|
-
isHeader: true,
|
|
41
|
-
quantity: TRANSLATION_KEYS.shortQuantity,
|
|
42
|
-
total: TRANSLATION_KEYS.total,
|
|
43
|
-
});
|
|
41
|
+
totalAmount += totalPerCategory || 0;
|
|
44
42
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
tableDataArray.push({
|
|
44
|
+
name: categoryName,
|
|
45
|
+
key: `${eventId}.${categoryName}`,
|
|
46
|
+
isBold: true,
|
|
47
|
+
isHeader: true,
|
|
48
|
+
quantity: TRANSLATION_KEYS.shortQuantity,
|
|
49
|
+
total: TRANSLATION_KEYS.total,
|
|
50
|
+
});
|
|
48
51
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
quantity: totalQuantity
|
|
53
|
-
? `${productsSold} / ${totalQuantity}`
|
|
54
|
-
: String(productsSold),
|
|
55
|
-
total: String(total),
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
);
|
|
52
|
+
productsSummary?.forEach(
|
|
53
|
+
({ productsSold, name, totalQuantity, total }) => {
|
|
54
|
+
quantity += productsSold;
|
|
59
55
|
|
|
60
56
|
tableDataArray.push({
|
|
61
|
-
name
|
|
62
|
-
key: `${eventId}.${categoryName}.${
|
|
63
|
-
quantity
|
|
64
|
-
|
|
65
|
-
|
|
57
|
+
name,
|
|
58
|
+
key: `${eventId}.${categoryName}.${name}`,
|
|
59
|
+
quantity: totalQuantity
|
|
60
|
+
? `${productsSold} / ${totalQuantity}`
|
|
61
|
+
: String(productsSold),
|
|
62
|
+
total: String(total),
|
|
66
63
|
});
|
|
67
|
-
|
|
68
|
-
totalQuantity += quantity;
|
|
69
64
|
}
|
|
70
65
|
);
|
|
66
|
+
|
|
67
|
+
tableDataArray.push({
|
|
68
|
+
name: TRANSLATION_KEYS.totalPerCategory,
|
|
69
|
+
key: `${eventId}.${categoryName}.${TRANSLATION_KEYS.totalPerCategory}`,
|
|
70
|
+
quantity,
|
|
71
|
+
total: totalPerCategory,
|
|
72
|
+
isBold: true,
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
totalQuantity += quantity;
|
|
71
76
|
}
|
|
72
77
|
);
|
|
73
78
|
|
|
@@ -126,13 +126,15 @@ export const DateAndRecurrenceInput = ({
|
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
+
const availableTime = availableTimesFormRef?.current?.getValues()?.availableTimes || null;
|
|
130
|
+
|
|
129
131
|
const values = {
|
|
130
132
|
rrule: next.rrule,
|
|
131
133
|
startDate: next.startDate,
|
|
132
134
|
endDate: next.endDate,
|
|
133
135
|
startTime: next.startTime,
|
|
134
136
|
endTime: next.endTime,
|
|
135
|
-
|
|
137
|
+
availableTimes: availableTime,
|
|
136
138
|
} as Partial<ProductSetRecurrence>;
|
|
137
139
|
|
|
138
140
|
if (editState.values?.id) {
|