guestbell-forms 2.0.272 → 2.0.276
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/build/components/bookingCalendar/BookingCalendar.d.ts +2 -1
- package/build/components/bookingCalendar/BookingCalendar.js +7 -4
- package/build/components/bookingCalendar/BookingCalendar.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.js +9 -7
- package/build/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.d.ts +2 -1
- package/build/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.js +10 -8
- package/build/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.js.map +1 -1
- package/build/components/bookingCalendar/common.d.ts +3 -1
- package/build/components/bookingCalendar/common.js +14 -2
- package/build/components/bookingCalendar/common.js.map +1 -1
- package/build/components/bookingCalendar/utils.js +3 -3
- package/build/components/bookingCalendar/utils.js.map +1 -1
- package/build/components/text/Text.js +1 -1
- package/build/components/text/Text.js.map +1 -1
- package/build/dist/guestbell-forms.css +7 -7
- package/build/dist/guestbell-forms.css.map +1 -1
- package/build/dist/guestbell-forms.min.css +1 -1
- package/build/dist/report.html +1 -1
- package/build/scss/components/button/buttons.scss +1 -1
- package/package.json +1 -1
@@ -1,6 +1,6 @@
|
|
1
1
|
import * as React from 'react';
|
2
2
|
import { BookingCalendarClasses } from './classes';
|
3
|
-
import { BookingCalendarDateRange, BookingCalendarItemT } from './common';
|
3
|
+
import { BookingCalendarDateRange, BookingCalendarItemT, GetNewMomentFunctionType } from './common';
|
4
4
|
import { BookingCalendarControlsProps } from './bookingCalendarControls/BookingCalendarControls';
|
5
5
|
import { LaneSourceData } from './utils';
|
6
6
|
import { BookingCalendarLaneProps } from './bookingCalendarLane/BookingCalendarLane';
|
@@ -17,6 +17,7 @@ export interface BookingCalendarProps<T extends BookingCalendarItemT, TLaneData>
|
|
17
17
|
from: Moment;
|
18
18
|
till: Moment;
|
19
19
|
getMomentFormatFunction?: GetMomentFormatFunctionType;
|
20
|
+
getNewMomentFunction?: GetNewMomentFunctionType;
|
20
21
|
onRangeChange?: (range: BookingCalendarDateRange) => void;
|
21
22
|
step?: Duration;
|
22
23
|
showGrid?: boolean;
|
@@ -21,7 +21,7 @@ var _utils = require("./utils");
|
|
21
21
|
|
22
22
|
var _BookingCalendarLane = require("./bookingCalendarLane/BookingCalendarLane");
|
23
23
|
|
24
|
-
var _moment =
|
24
|
+
var _moment = require("moment");
|
25
25
|
|
26
26
|
var _BookingCalendarGrid = require("./bookingCalendarGrid/BookingCalendarGrid");
|
27
27
|
|
@@ -73,6 +73,8 @@ function BookingCalendar(props) {
|
|
73
73
|
gridAvailableSteps = _props$gridAvailableS === void 0 ? _.defaultGridAvailableSteps : _props$gridAvailableS,
|
74
74
|
_props$getMomentForma = props.getMomentFormatFunction,
|
75
75
|
getMomentFormatFunction = _props$getMomentForma === void 0 ? _common.defaultGetMomentFormatFunction : _props$getMomentForma,
|
76
|
+
_props$getNewMomentFu = props.getNewMomentFunction,
|
77
|
+
getNewMomentFunction = _props$getNewMomentFu === void 0 ? _.defaultGetNewMomentFunction : _props$getNewMomentFu,
|
76
78
|
_props$goalGridWidthP = props.goalGridWidthPx,
|
77
79
|
goalGridWidthPx = _props$goalGridWidthP === void 0 ? 60 : _props$goalGridWidthP,
|
78
80
|
_props$minSelectionSi = props.minSelectionSize,
|
@@ -124,8 +126,8 @@ function BookingCalendar(props) {
|
|
124
126
|
return num / (width || 1) * durationMs;
|
125
127
|
};
|
126
128
|
|
127
|
-
var timeSpaceStart = (
|
128
|
-
var timeSpaceEnd = (
|
129
|
+
var timeSpaceStart = from.clone().add(toTimeSpace(screenSpaceStartX), 'ms');
|
130
|
+
var timeSpaceEnd = from.clone().add(toTimeSpace(screenSpaceEndX), 'ms');
|
129
131
|
onRangeChange({
|
130
132
|
from: timeSpaceStart,
|
131
133
|
till: timeSpaceEnd
|
@@ -156,7 +158,8 @@ function BookingCalendar(props) {
|
|
156
158
|
}, typeof BookingCalendarDatePicker === 'function' ? /*#__PURE__*/React.createElement(BookingCalendarDatePicker, {
|
157
159
|
from: from,
|
158
160
|
till: till,
|
159
|
-
onRangeChange: onRangeChange
|
161
|
+
onRangeChange: onRangeChange,
|
162
|
+
getNewMomentFunction: getNewMomentFunction
|
160
163
|
}) : BookingCalendarDatePicker), /*#__PURE__*/React.createElement("div", {
|
161
164
|
className: (0, _classnames.default)(_classes.bookingCalendarDefaultClasses.lanesHeaderContainerClassName, lanesHeaderContainerClassName)
|
162
165
|
}, /*#__PURE__*/React.createElement(BookingCalendarLanesHeader, _extends({}, controlsClasses, {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/components/bookingCalendar/BookingCalendar.tsx"],"names":["defaultStep","BookingCalendar","props","bookings","className","laneContainerClassName","laneHeaderContainerClassName","lanesHeaderContainerClassName","lanesHeaderHeaderContainerClassName","controlsClasses","tableClassName","from","till","onRangeChange","step","showGrid","showSelection","gridAvailableSteps","defaultGridAvailableSteps","getMomentFormatFunction","defaultGetMomentFormatFunction","goalGridWidthPx","minSelectionSize","minLanesCount","lanesSource","filterBookingsToZoom","zoomLevels","BookingCalendarControls","DefaultBookingCalendarControls","BookingCalendarItem","BookingCalendarLane","DefaultBookingCalendarLane","BookingCalendarRenderItem","BookingCalendarGrid","DefaultBookingCalendarGrid","BookingCalendarLaneHeader","DefaultBookingCalendarLaneHeader","BookingCalendarLanesHeader","DefaultBookingCalendarLanesHeader","BookingCalendarDatePicker","DefaultBookingCalendarDatePicker","lanes","React","useMemo","observe","width","clone","startOf","gridItems","items","bestStep","onSelected","useCallback","data","screenSpaceStartX","Math","min","origin","target","screenSpaceEndX","max","durationMs","valueOf","toTimeSpace","num","timeSpaceStart","timeSpaceEnd","bookingCalendarDefaultClasses","length","map","lane","laneIndex","LaneBookingCalendarLaneHeader","LaneBookingCalendarLane","rowClassName","laneKey"],"mappings":";;;;;;;;;AAAA;;AACA;;AAIA;;AACA;;AAKA;;AAIA;;AAKA;;AAIA;;AAGA;;AAIA;;AAIA;;AAIA;;AAKA;;AAKA;;AACA;;AACA;;;;;;;;;;;;AA6CA,IAAMA,WAAW,GAAG,sBAAS,CAAT,EAAY,KAAZ,CAApB;;AAEO,SAASC,eAAT,CACLC,KADK,EAEL;AACA,MACEC,QADF,GA+BID,KA/BJ,CACEC,QADF;AAAA,MAEEC,SAFF,GA+BIF,KA/BJ,CAEEE,SAFF;AAAA,MAGEC,sBAHF,GA+BIH,KA/BJ,CAGEG,sBAHF;AAAA,MAIEC,4BAJF,GA+BIJ,KA/BJ,CAIEI,4BAJF;AAAA,MAKEC,6BALF,GA+BIL,KA/BJ,CAKEK,6BALF;AAAA,MAMEC,mCANF,GA+BIN,KA/BJ,CAMEM,mCANF;AAAA,MAOEC,eAPF,GA+BIP,KA/BJ,CAOEO,eAPF;AAAA,MAQEC,cARF,GA+BIR,KA/BJ,CAQEQ,cARF;AAAA,MASEC,IATF,GA+BIT,KA/BJ,CASES,IATF;AAAA,MAUEC,IAVF,GA+BIV,KA/BJ,CAUEU,IAVF;AAAA,MAWEC,aAXF,GA+BIX,KA/BJ,CAWEW,aAXF;AAAA,oBA+BIX,KA/BJ,CAYEY,IAZF;AAAA,MAYEA,IAZF,4BAYSd,WAZT;AAAA,wBA+BIE,KA/BJ,CAaEa,QAbF;AAAA,MAaEA,QAbF,gCAaa,IAbb;AAAA,6BA+BIb,KA/BJ,CAcEc,aAdF;AAAA,MAcEA,aAdF,qCAckB,IAdlB;AAAA,8BA+BId,KA/BJ,CAeEe,kBAfF;AAAA,MAeEA,kBAfF,sCAeuBC,2BAfvB;AAAA,8BA+BIhB,KA/BJ,CAgBEiB,uBAhBF;AAAA,MAgBEA,uBAhBF,sCAgB4BC,sCAhB5B;AAAA,8BA+BIlB,KA/BJ,CAiBEmB,eAjBF;AAAA,MAiBEA,eAjBF,sCAiBoB,EAjBpB;AAAA,8BA+BInB,KA/BJ,CAkBEoB,gBAlBF;AAAA,MAkBEA,gBAlBF,sCAkBqB,EAlBrB;AAAA,MAmBEC,aAnBF,GA+BIrB,KA/BJ,CAmBEqB,aAnBF;AAAA,MAoBEC,WApBF,GA+BItB,KA/BJ,CAoBEsB,WApBF;AAAA,MAqBEC,oBArBF,GA+BIvB,KA/BJ,CAqBEuB,oBArBF;AAAA,MAsBEC,UAtBF,GA+BIxB,KA/BJ,CAsBEwB,UAtBF;AAAA,8BA+BIxB,KA/BJ,CAuBEyB,uBAvBF;AAAA,MAuBEA,uBAvBF,sCAuB4BC,gDAvB5B;AAAA,MAwBEC,mBAxBF,GA+BI3B,KA/BJ,CAwBE2B,mBAxBF;AAAA,+BA+BI3B,KA/BJ,CAyBE4B,mBAzBF;AAAA,MAyBEA,mBAzBF,uCAyBwBC,wCAzBxB;AAAA,MA0BEC,yBA1BF,GA+BI9B,KA/BJ,CA0BE8B,yBA1BF;AAAA,+BA+BI9B,KA/BJ,CA2BE+B,mBA3BF;AAAA,MA2BEA,mBA3BF,uCA2BwBC,wCA3BxB;AAAA,+BA+BIhC,KA/BJ,CA4BEiC,yBA5BF;AAAA,MA4BEA,yBA5BF,uCA4B8BC,oDA5B9B;AAAA,+BA+BIlC,KA/BJ,CA6BEmC,0BA7BF;AAAA,MA6BEA,0BA7BF,uCA6B+BC,sDA7B/B;AAAA,+BA+BIpC,KA/BJ,CA8BEqC,yBA9BF;AAAA,MA8BEA,yBA9BF,uCA8B8BC,oDA9B9B;AAgCA,MAAMC,KAAK,GAAGC,KAAK,CAACC,OAAN,CACZ;AAAA,WACE,iCACExC,QADF,EAEEQ,IAFF,EAGEY,aAHF,EAIEC,WAJF,CADF;AAAA,GADY,EAQZ,CAACrB,QAAD,EAAWQ,IAAX,EAAiBY,aAAjB,EAAgCC,WAAhC,CARY,CAAd;;AAUA,uBAA2B,mCAA3B;AAAA,MAAQoB,OAAR,kBAAQA,OAAR;AAAA,MAAiBC,KAAjB,kBAAiBA,KAAjB;;AACA,uBAAuCH,KAAK,CAACC,OAAN,CACrC;AAAA;;AAAA,WACE,8BACEhC,IADF,EAEEC,IAFF,EAGEE,IAHF,EAIE+B,KAJF,EAKE5B,kBALF,EAMEI,eANF,EAOEV,IAPF,aAOEA,IAPF,sCAOEA,IAAI,CAAEmC,KAAN,EAPF,gDAOE,YAAeC,OAAf,CAAuB,KAAvB,CAPF,CADF;AAAA,GADqC,EAWrC,CAACpC,IAAD,EAAOC,IAAP,EAAaE,IAAb,EAAmB+B,KAAnB,EAA0B5B,kBAA1B,EAA8CI,eAA9C,CAXqC,CAAvC;AAAA,MAAe2B,SAAf,kBAAQC,KAAR;AAAA,MAA0BC,QAA1B,kBAA0BA,QAA1B;;AAaA,MAAMC,UAAU,GAAGT,KAAK,CAACU,WAAN,CACjB,UAACC,IAAD,EAAwC;AACtC,QAAI,CAAC1C,IAAD,IAAS,CAACC,IAAV,IAAkB,CAACiC,KAAnB,IAA4B,CAAChC,aAAjC,EAAgD;AAC9C;AACD;;AACD,QAAMyC,iBAAiB,GAAGC,IAAI,CAACC,GAAL,CAASH,IAAI,CAACI,MAAL,CAAY,CAAZ,CAAT,EAAyBJ,IAAI,CAACK,MAAL,CAAY,CAAZ,CAAzB,CAA1B;AACA,QAAMC,eAAe,GAAGJ,IAAI,CAACK,GAAL,CAASP,IAAI,CAACI,MAAL,CAAY,CAAZ,CAAT,EAAyBJ,IAAI,CAACK,MAAL,CAAY,CAAZ,CAAzB,CAAxB;AACA,QAAMG,UAAU,GAAGjD,IAAI,CAACkD,OAAL,KAAiBnD,IAAI,CAACmD,OAAL,EAApC;;AACA,QAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,GAAD;AAAA,aAAkBA,GAAG,IAAInB,KAAK,IAAI,CAAb,CAAJ,GAAuBgB,UAAxC;AAAA,KAApB;;AACA,QAAMI,cAAc,GAAG,qBACrBtD,IAAI,CAACmD,OAAL,KAAiBC,WAAW,CAACT,iBAAD,CADP,CAAvB;AAGA,QAAMY,YAAY,GAAG,qBACnBvD,IAAI,CAACmD,OAAL,KAAiBC,WAAW,CAACJ,eAAD,CADT,CAArB;AAGA9C,IAAAA,aAAa,CAAC;AAAEF,MAAAA,IAAI,EAAEsD,cAAR;AAAwBrD,MAAAA,IAAI,EAAEsD;AAA9B,KAAD,CAAb;AACD,GAhBgB,EAiBjB,CAACvD,IAAD,EAAOC,IAAP,EAAaiC,KAAb,EAAoBhC,aAApB,CAjBiB,CAAnB;AAmBA,sBACE;AACE,IAAA,SAAS,EAAE,yBAAWsD,uCAA8B/D,SAAzC,EAAoDA,SAApD;AADb,kBAGE,oBAAC,uBAAD,eACMK,eADN;AAEE,IAAA,KAAK,EAAEN,QAFT;AAGE,IAAA,IAAI,EAAEQ,IAHR;AAIE,IAAA,IAAI,EAAEC,IAJR;AAKE,IAAA,aAAa,EAAEC,aALjB;AAME,IAAA,IAAI,EAAEC,IANR;AAOE,IAAA,oBAAoB,EAAEW,oBAPxB;AAQE,IAAA,UAAU,EAAEC;AARd,KAHF,eAaE;AACE,IAAA,SAAS,EAAE,yBACTyC,uCAA8BzD,cADrB,EAETA,cAFS;AADb,KAMGK,QAAQ,iBACP,oBAAC,mBAAD;AACE,IAAA,YAAY,EAAE6B,OADhB;AAEE,IAAA,KAAK,EAAEI,SAFT;AAGE,IAAA,aAAa,EAAEP,KAAK,CAAC2B;AAHvB,IAPJ,EAaGpD,aAAa,iBACZ,oBAAC,iCAAD;AACE,IAAA,aAAa,EAAEyB,KAAK,CAAC2B,MADvB;AAEE,IAAA,UAAU,EAAEjB,UAFd;AAGE,IAAA,gBAAgB,EAAE7B;AAHpB,IAdJ,eAoBE;AACE,IAAA,SAAS,EAAE,yBACT6C,uCAA8B3D,mCADrB,EAETA,mCAFS;AADb,KAMG,OAAO+B,yBAAP,KAAqC,UAArC,gBACC,oBAAC,yBAAD;AACE,IAAA,IAAI,EAAE5B,IADR;AAEE,IAAA,IAAI,EAAEC,IAFR;AAGE,IAAA,aAAa,EAAEC;AAHjB,IADD,GAOC0B,yBAbJ,CApBF,eAoCE;AACE,IAAA,SAAS,EAAE,yBACT4B,uCAA8B5D,6BADrB,EAETA,6BAFS;AADb,kBAME,oBAAC,0BAAD,eACME,eADN;AAEE,IAAA,IAAI,EAAEE,IAFR;AAGE,IAAA,IAAI,EAAEC,IAHR;AAIE,IAAA,aAAa,EAAEC,aAJjB;AAKE,IAAA,IAAI,EAAEC;AALR,KANF,CApCF,EAmDG2B,KAAK,CAAC4B,GAAN,CAAU,UAACC,IAAD,EAAOC,SAAP,EAAqB;AAAA;;AAC9B,QAAMC,6BAA6B,4BACjCF,IAAI,CAACnC,yBAD4B,yEACCA,yBADpC;AAEA,QAAMsC,uBAAuB,6BAC3BH,IAAI,CAACxC,mBADsB,2EACCA,mBAD9B;AAEA,wBACE,oBAAC,KAAD,CAAO,QAAP;AAAgB,MAAA,GAAG,EAAEyC;AAArB,oBACE;AACE,MAAA,SAAS,EAAE,yBACTJ,uCAA8B7D,4BADrB,EAETA,4BAFS,EAGTgE,IAAI,CAACI,YAHI,4DAKHP,uCAA8B7D,4BAL3B,aAMLiE,SAAS,KAAK9B,KAAK,CAAC2B,MAAN,GAAe,CANxB,0CAOHD,uCAA8B7D,4BAP3B,cAQLiE,SAAS,KAAK,CART;AADb,oBAaE,oBAAC,6BAAD;AACE,MAAA,OAAO,mBAAED,IAAI,CAACK,OAAP,yDAAkBJ,SAD3B;AAEE,MAAA,IAAI,EAAED,IAAI,CAACjB;AAFb,MAbF,CADF,eAmBE;AACE,MAAA,SAAS,EAAE,yBACTc,uCAA8B9D,sBADrB,EAETA,sBAFS,EAGTiE,IAAI,CAACI,YAHI,8DAKHP,uCAA8B9D,sBAL3B,aAMLkE,SAAS,KAAK9B,KAAK,CAAC2B,MAAN,GAAe,CANxB,2CAOHD,uCAA8B9D,sBAP3B,cAQLkE,SAAS,KAAK,CART;AADb,oBAaE,oBAAC,uBAAD;AACE,MAAA,SAAS,EAAEA,SADb;AAEE,MAAA,KAAK,EAAED,IAAI,CAACrB,KAFd;AAGE,MAAA,IAAI,EAAEtC,IAHR;AAIE,MAAA,IAAI,EAAEC,IAJR;AAKE,MAAA,mBAAmB,4BACjB0D,IAAI,CAACzC,mBADY,2EACWA,mBANhC;AAQE,MAAA,yBAAyB,4BACvByC,IAAI,CAACtC,yBADkB,2EACWA,yBATtC;AAWE,MAAA,IAAI,EAAElB;AAXR,MAbF,CAnBF,CADF;AAiDD,GAtDA,CAnDH,eA0GE,gCA1GF,eA2GE,8CACE,oBAAC,gDAAD;AACE,IAAA,KAAK,EAAEkC,SADT;AAEE,IAAA,QAAQ,EAAEE,QAFZ;AAGE,IAAA,uBAAuB,EAAE/B;AAH3B,IADF,CA3GF,CAbF,CADF;AAmID","sourcesContent":["import * as React from 'react';\r\nimport {\r\n BookingCalendarClasses,\r\n bookingCalendarDefaultClasses,\r\n} from './classes';\r\nimport classNames from 'classnames';\r\nimport {\r\n BookingCalendarDateRange,\r\n BookingCalendarItemT,\r\n defaultGetMomentFormatFunction,\r\n} from './common';\r\nimport {\r\n BookingCalendarControls as DefaultBookingCalendarControls,\r\n BookingCalendarControlsProps,\r\n} from './bookingCalendarControls/BookingCalendarControls';\r\nimport {\r\n generateGridItems,\r\n LaneSourceData,\r\n splitBookingsToLanes,\r\n} from './utils';\r\nimport {\r\n BookingCalendarLane as DefaultBookingCalendarLane,\r\n BookingCalendarLaneProps,\r\n} from './bookingCalendarLane/BookingCalendarLane';\r\nimport { Moment, Duration, duration } from 'moment';\r\nimport { BookingCalendarItemProps } from './bookingCalendarItem';\r\nimport { BookingCalendarRenderItemProps } from './bookingCalendarRenderItem';\r\nimport {\r\n BookingCalendarGrid as DefaultBookingCalendarGrid,\r\n BookingCalendarGridProps,\r\n} from './bookingCalendarGrid/BookingCalendarGrid';\r\nimport {\r\n BookingCalendarLaneHeader as DefaultBookingCalendarLaneHeader,\r\n BookingCalendarLaneHeaderProps,\r\n} from './bookingCalendarLaneHeader';\r\nimport {\r\n BookingCalendarLanesHeader as DefaultBookingCalendarLanesHeader,\r\n BookingCalendarLanesHeaderProps,\r\n} from './bookingCalendarLanesHeader';\r\nimport {\r\n BookingCalendarDatePicker as DefaultBookingCalendarDatePicker,\r\n BookingCalendarDatePickerProps,\r\n} from './bookingCalendarDatePicker';\r\nimport moment from 'moment';\r\nimport {\r\n defaultGridAvailableSteps,\r\n GetMomentFormatFunctionType,\r\n ZoomLevel,\r\n} from '.';\r\nimport { BookingCalendarTimeAxis } from './bookingCalendarTimeAxis/BookingCalendarTimeAxis';\r\nimport useDimensions from 'react-cool-dimensions';\r\nimport BookingCalendarSelection, {\r\n BookingCalendarSelectionData,\r\n} from './bookingCalendarSelection/BookingCalendarSelection';\r\n\r\nexport interface BookingCalendarProps<\r\n T extends BookingCalendarItemT,\r\n TLaneData\r\n> extends BookingCalendarClasses {\r\n bookings: T[];\r\n from: Moment;\r\n till: Moment;\r\n getMomentFormatFunction?: GetMomentFormatFunctionType;\r\n onRangeChange?: (range: BookingCalendarDateRange) => void;\r\n step?: Duration;\r\n showGrid?: boolean;\r\n showSelection?: boolean;\r\n minSelectionSize?: number;\r\n gridAvailableSteps?: Duration[];\r\n goalGridWidthPx?: number;\r\n minLanesCount?: number;\r\n lanesSource?: LaneSourceData<T, TLaneData>[];\r\n\r\n zoomLevels?: ZoomLevel[];\r\n filterBookingsToZoom?: (booking: T) => boolean;\r\n\r\n BookingCalendarItem?: React.ComponentType<BookingCalendarItemProps<T>>;\r\n BookingCalendarRenderItem?: React.ComponentType<\r\n BookingCalendarRenderItemProps<T>\r\n >;\r\n BookingCalendarLane?: React.ComponentType<BookingCalendarLaneProps<T>>;\r\n BookingCalendarControls?: React.ComponentType<\r\n BookingCalendarControlsProps<T>\r\n >;\r\n BookingCalendarGrid?: React.ComponentType<BookingCalendarGridProps>;\r\n BookingCalendarLaneHeader?: React.ComponentType<\r\n BookingCalendarLaneHeaderProps<TLaneData>\r\n >;\r\n BookingCalendarLanesHeader?: React.ComponentType<\r\n BookingCalendarLanesHeaderProps<T>\r\n >;\r\n BookingCalendarDatePicker?:\r\n | React.ComponentType<BookingCalendarDatePickerProps<T>>\r\n | React.ReactNode;\r\n}\r\n\r\nconst defaultStep = duration(1, 'day');\r\n\r\nexport function BookingCalendar<T extends BookingCalendarItemT, TLaneData>(\r\n props: BookingCalendarProps<T, TLaneData>\r\n) {\r\n const {\r\n bookings,\r\n className,\r\n laneContainerClassName,\r\n laneHeaderContainerClassName,\r\n lanesHeaderContainerClassName,\r\n lanesHeaderHeaderContainerClassName,\r\n controlsClasses,\r\n tableClassName,\r\n from,\r\n till,\r\n onRangeChange,\r\n step = defaultStep,\r\n showGrid = true,\r\n showSelection = true,\r\n gridAvailableSteps = defaultGridAvailableSteps,\r\n getMomentFormatFunction = defaultGetMomentFormatFunction,\r\n goalGridWidthPx = 60,\r\n minSelectionSize = 10,\r\n minLanesCount,\r\n lanesSource,\r\n filterBookingsToZoom,\r\n zoomLevels,\r\n BookingCalendarControls = DefaultBookingCalendarControls,\r\n BookingCalendarItem,\r\n BookingCalendarLane = DefaultBookingCalendarLane,\r\n BookingCalendarRenderItem,\r\n BookingCalendarGrid = DefaultBookingCalendarGrid,\r\n BookingCalendarLaneHeader = DefaultBookingCalendarLaneHeader,\r\n BookingCalendarLanesHeader = DefaultBookingCalendarLanesHeader,\r\n BookingCalendarDatePicker = DefaultBookingCalendarDatePicker,\r\n } = props;\r\n const lanes = React.useMemo(\r\n () =>\r\n splitBookingsToLanes<T, TLaneData>(\r\n bookings,\r\n from,\r\n minLanesCount,\r\n lanesSource\r\n ),\r\n [bookings, from, minLanesCount, lanesSource]\r\n );\r\n const { observe, width } = useDimensions();\r\n const { items: gridItems, bestStep } = React.useMemo(\r\n () =>\r\n generateGridItems(\r\n from,\r\n till,\r\n step,\r\n width,\r\n gridAvailableSteps,\r\n goalGridWidthPx,\r\n from?.clone()?.startOf('day')\r\n ),\r\n [from, till, step, width, gridAvailableSteps, goalGridWidthPx]\r\n );\r\n const onSelected = React.useCallback(\r\n (data: BookingCalendarSelectionData) => {\r\n if (!from || !till || !width || !onRangeChange) {\r\n return;\r\n }\r\n const screenSpaceStartX = Math.min(data.origin[0], data.target[0]);\r\n const screenSpaceEndX = Math.max(data.origin[0], data.target[0]);\r\n const durationMs = till.valueOf() - from.valueOf();\r\n const toTimeSpace = (num: number) => (num / (width || 1)) * durationMs;\r\n const timeSpaceStart = moment(\r\n from.valueOf() + toTimeSpace(screenSpaceStartX)\r\n );\r\n const timeSpaceEnd = moment(\r\n from.valueOf() + toTimeSpace(screenSpaceEndX)\r\n );\r\n onRangeChange({ from: timeSpaceStart, till: timeSpaceEnd });\r\n },\r\n [from, till, width, onRangeChange]\r\n );\r\n return (\r\n <div\r\n className={classNames(bookingCalendarDefaultClasses.className, className)}\r\n >\r\n <BookingCalendarControls<T>\r\n {...controlsClasses}\r\n items={bookings}\r\n from={from}\r\n till={till}\r\n onRangeChange={onRangeChange}\r\n step={step}\r\n filterBookingsToZoom={filterBookingsToZoom}\r\n zoomLevels={zoomLevels}\r\n />\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.tableClassName,\r\n tableClassName\r\n )}\r\n >\r\n {showGrid && (\r\n <BookingCalendarGrid\r\n containerRef={observe}\r\n items={gridItems}\r\n dataRowsCount={lanes.length}\r\n />\r\n )}\r\n {showSelection && (\r\n <BookingCalendarSelection\r\n dataRowsCount={lanes.length}\r\n onSelected={onSelected}\r\n minSelectionSize={minSelectionSize}\r\n />\r\n )}\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.lanesHeaderHeaderContainerClassName,\r\n lanesHeaderHeaderContainerClassName\r\n )}\r\n >\r\n {typeof BookingCalendarDatePicker === 'function' ? (\r\n <BookingCalendarDatePicker\r\n from={from}\r\n till={till}\r\n onRangeChange={onRangeChange}\r\n />\r\n ) : (\r\n BookingCalendarDatePicker\r\n )}\r\n </div>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.lanesHeaderContainerClassName,\r\n lanesHeaderContainerClassName\r\n )}\r\n >\r\n <BookingCalendarLanesHeader<T>\r\n {...controlsClasses}\r\n from={from}\r\n till={till}\r\n onRangeChange={onRangeChange}\r\n step={step}\r\n />\r\n </div>\r\n\r\n {lanes.map((lane, laneIndex) => {\r\n const LaneBookingCalendarLaneHeader =\r\n lane.BookingCalendarLaneHeader ?? BookingCalendarLaneHeader;\r\n const LaneBookingCalendarLane =\r\n lane.BookingCalendarLane ?? BookingCalendarLane;\r\n return (\r\n <React.Fragment key={laneIndex}>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.laneHeaderContainerClassName,\r\n laneHeaderContainerClassName,\r\n lane.rowClassName,\r\n {\r\n [`${bookingCalendarDefaultClasses.laneHeaderContainerClassName}--last`]:\r\n laneIndex === lanes.length - 1,\r\n [`${bookingCalendarDefaultClasses.laneHeaderContainerClassName}--first`]:\r\n laneIndex === 0,\r\n }\r\n )}\r\n >\r\n <LaneBookingCalendarLaneHeader<TLaneData>\r\n laneKey={lane.laneKey ?? laneIndex}\r\n data={lane.data}\r\n />\r\n </div>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.laneContainerClassName,\r\n laneContainerClassName,\r\n lane.rowClassName,\r\n {\r\n [`${bookingCalendarDefaultClasses.laneContainerClassName}--last`]:\r\n laneIndex === lanes.length - 1,\r\n [`${bookingCalendarDefaultClasses.laneContainerClassName}--first`]:\r\n laneIndex === 0,\r\n }\r\n )}\r\n >\r\n <LaneBookingCalendarLane\r\n laneIndex={laneIndex}\r\n items={lane.items}\r\n from={from}\r\n till={till}\r\n BookingCalendarItem={\r\n lane.BookingCalendarItem ?? BookingCalendarItem\r\n }\r\n BookingCalendarRenderItem={\r\n lane.BookingCalendarRenderItem ?? BookingCalendarRenderItem\r\n }\r\n step={step}\r\n />\r\n </div>\r\n </React.Fragment>\r\n );\r\n })}\r\n <div />\r\n <div>\r\n <BookingCalendarTimeAxis\r\n items={gridItems}\r\n bestStep={bestStep}\r\n getMomentFormatFunction={getMomentFormatFunction}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"file":"BookingCalendar.js"}
|
1
|
+
{"version":3,"sources":["../../../src/lib/components/bookingCalendar/BookingCalendar.tsx"],"names":["defaultStep","BookingCalendar","props","bookings","className","laneContainerClassName","laneHeaderContainerClassName","lanesHeaderContainerClassName","lanesHeaderHeaderContainerClassName","controlsClasses","tableClassName","from","till","onRangeChange","step","showGrid","showSelection","gridAvailableSteps","defaultGridAvailableSteps","getMomentFormatFunction","defaultGetMomentFormatFunction","getNewMomentFunction","defaultGetNewMomentFunction","goalGridWidthPx","minSelectionSize","minLanesCount","lanesSource","filterBookingsToZoom","zoomLevels","BookingCalendarControls","DefaultBookingCalendarControls","BookingCalendarItem","BookingCalendarLane","DefaultBookingCalendarLane","BookingCalendarRenderItem","BookingCalendarGrid","DefaultBookingCalendarGrid","BookingCalendarLaneHeader","DefaultBookingCalendarLaneHeader","BookingCalendarLanesHeader","DefaultBookingCalendarLanesHeader","BookingCalendarDatePicker","DefaultBookingCalendarDatePicker","lanes","React","useMemo","observe","width","clone","startOf","gridItems","items","bestStep","onSelected","useCallback","data","screenSpaceStartX","Math","min","origin","target","screenSpaceEndX","max","durationMs","valueOf","toTimeSpace","num","timeSpaceStart","add","timeSpaceEnd","bookingCalendarDefaultClasses","length","map","lane","laneIndex","LaneBookingCalendarLaneHeader","LaneBookingCalendarLane","rowClassName","laneKey"],"mappings":"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","sourcesContent":["import * as React from 'react';\r\nimport {\r\n BookingCalendarClasses,\r\n bookingCalendarDefaultClasses,\r\n} from './classes';\r\nimport classNames from 'classnames';\r\nimport {\r\n BookingCalendarDateRange,\r\n BookingCalendarItemT,\r\n defaultGetMomentFormatFunction,\r\n GetNewMomentFunctionType,\r\n} from './common';\r\nimport {\r\n BookingCalendarControls as DefaultBookingCalendarControls,\r\n BookingCalendarControlsProps,\r\n} from './bookingCalendarControls/BookingCalendarControls';\r\nimport {\r\n generateGridItems,\r\n LaneSourceData,\r\n splitBookingsToLanes,\r\n} from './utils';\r\nimport {\r\n BookingCalendarLane as DefaultBookingCalendarLane,\r\n BookingCalendarLaneProps,\r\n} from './bookingCalendarLane/BookingCalendarLane';\r\nimport { Moment, Duration, duration } from 'moment';\r\nimport { BookingCalendarItemProps } from './bookingCalendarItem';\r\nimport { BookingCalendarRenderItemProps } from './bookingCalendarRenderItem';\r\nimport {\r\n BookingCalendarGrid as DefaultBookingCalendarGrid,\r\n BookingCalendarGridProps,\r\n} from './bookingCalendarGrid/BookingCalendarGrid';\r\nimport {\r\n BookingCalendarLaneHeader as DefaultBookingCalendarLaneHeader,\r\n BookingCalendarLaneHeaderProps,\r\n} from './bookingCalendarLaneHeader';\r\nimport {\r\n BookingCalendarLanesHeader as DefaultBookingCalendarLanesHeader,\r\n BookingCalendarLanesHeaderProps,\r\n} from './bookingCalendarLanesHeader';\r\nimport {\r\n BookingCalendarDatePicker as DefaultBookingCalendarDatePicker,\r\n BookingCalendarDatePickerProps,\r\n} from './bookingCalendarDatePicker';\r\nimport {\r\n defaultGetNewMomentFunction,\r\n defaultGridAvailableSteps,\r\n GetMomentFormatFunctionType,\r\n ZoomLevel,\r\n} from '.';\r\nimport { BookingCalendarTimeAxis } from './bookingCalendarTimeAxis/BookingCalendarTimeAxis';\r\nimport useDimensions from 'react-cool-dimensions';\r\nimport BookingCalendarSelection, {\r\n BookingCalendarSelectionData,\r\n} from './bookingCalendarSelection/BookingCalendarSelection';\r\n\r\nexport interface BookingCalendarProps<\r\n T extends BookingCalendarItemT,\r\n TLaneData\r\n> extends BookingCalendarClasses {\r\n bookings: T[];\r\n from: Moment;\r\n till: Moment;\r\n getMomentFormatFunction?: GetMomentFormatFunctionType;\r\n getNewMomentFunction?: GetNewMomentFunctionType;\r\n onRangeChange?: (range: BookingCalendarDateRange) => void;\r\n step?: Duration;\r\n showGrid?: boolean;\r\n showSelection?: boolean;\r\n minSelectionSize?: number;\r\n gridAvailableSteps?: Duration[];\r\n goalGridWidthPx?: number;\r\n minLanesCount?: number;\r\n lanesSource?: LaneSourceData<T, TLaneData>[];\r\n\r\n zoomLevels?: ZoomLevel[];\r\n filterBookingsToZoom?: (booking: T) => boolean;\r\n\r\n BookingCalendarItem?: React.ComponentType<BookingCalendarItemProps<T>>;\r\n BookingCalendarRenderItem?: React.ComponentType<\r\n BookingCalendarRenderItemProps<T>\r\n >;\r\n BookingCalendarLane?: React.ComponentType<BookingCalendarLaneProps<T>>;\r\n BookingCalendarControls?: React.ComponentType<\r\n BookingCalendarControlsProps<T>\r\n >;\r\n BookingCalendarGrid?: React.ComponentType<BookingCalendarGridProps>;\r\n BookingCalendarLaneHeader?: React.ComponentType<\r\n BookingCalendarLaneHeaderProps<TLaneData>\r\n >;\r\n BookingCalendarLanesHeader?: React.ComponentType<\r\n BookingCalendarLanesHeaderProps<T>\r\n >;\r\n BookingCalendarDatePicker?:\r\n | React.ComponentType<BookingCalendarDatePickerProps<T>>\r\n | React.ReactNode;\r\n}\r\n\r\nconst defaultStep = duration(1, 'day');\r\n\r\nexport function BookingCalendar<T extends BookingCalendarItemT, TLaneData>(\r\n props: BookingCalendarProps<T, TLaneData>\r\n) {\r\n const {\r\n bookings,\r\n className,\r\n laneContainerClassName,\r\n laneHeaderContainerClassName,\r\n lanesHeaderContainerClassName,\r\n lanesHeaderHeaderContainerClassName,\r\n controlsClasses,\r\n tableClassName,\r\n from,\r\n till,\r\n onRangeChange,\r\n step = defaultStep,\r\n showGrid = true,\r\n showSelection = true,\r\n gridAvailableSteps = defaultGridAvailableSteps,\r\n getMomentFormatFunction = defaultGetMomentFormatFunction,\r\n getNewMomentFunction = defaultGetNewMomentFunction,\r\n goalGridWidthPx = 60,\r\n minSelectionSize = 10,\r\n minLanesCount,\r\n lanesSource,\r\n filterBookingsToZoom,\r\n zoomLevels,\r\n BookingCalendarControls = DefaultBookingCalendarControls,\r\n BookingCalendarItem,\r\n BookingCalendarLane = DefaultBookingCalendarLane,\r\n BookingCalendarRenderItem,\r\n BookingCalendarGrid = DefaultBookingCalendarGrid,\r\n BookingCalendarLaneHeader = DefaultBookingCalendarLaneHeader,\r\n BookingCalendarLanesHeader = DefaultBookingCalendarLanesHeader,\r\n BookingCalendarDatePicker = DefaultBookingCalendarDatePicker,\r\n } = props;\r\n const lanes = React.useMemo(\r\n () =>\r\n splitBookingsToLanes<T, TLaneData>(\r\n bookings,\r\n from,\r\n minLanesCount,\r\n lanesSource\r\n ),\r\n [bookings, from, minLanesCount, lanesSource]\r\n );\r\n const { observe, width } = useDimensions();\r\n const { items: gridItems, bestStep } = React.useMemo(\r\n () =>\r\n generateGridItems(\r\n from,\r\n till,\r\n step,\r\n width,\r\n gridAvailableSteps,\r\n goalGridWidthPx,\r\n from?.clone()?.startOf('day')\r\n ),\r\n [from, till, step, width, gridAvailableSteps, goalGridWidthPx]\r\n );\r\n const onSelected = React.useCallback(\r\n (data: BookingCalendarSelectionData) => {\r\n if (!from || !till || !width || !onRangeChange) {\r\n return;\r\n }\r\n const screenSpaceStartX = Math.min(data.origin[0], data.target[0]);\r\n const screenSpaceEndX = Math.max(data.origin[0], data.target[0]);\r\n const durationMs = till.valueOf() - from.valueOf();\r\n const toTimeSpace = (num: number) => (num / (width || 1)) * durationMs;\r\n const timeSpaceStart = from\r\n .clone()\r\n .add(toTimeSpace(screenSpaceStartX), 'ms');\r\n const timeSpaceEnd = from.clone().add(toTimeSpace(screenSpaceEndX), 'ms');\r\n onRangeChange({ from: timeSpaceStart, till: timeSpaceEnd });\r\n },\r\n [from, till, width, onRangeChange]\r\n );\r\n return (\r\n <div\r\n className={classNames(bookingCalendarDefaultClasses.className, className)}\r\n >\r\n <BookingCalendarControls<T>\r\n {...controlsClasses}\r\n items={bookings}\r\n from={from}\r\n till={till}\r\n onRangeChange={onRangeChange}\r\n step={step}\r\n filterBookingsToZoom={filterBookingsToZoom}\r\n zoomLevels={zoomLevels}\r\n />\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.tableClassName,\r\n tableClassName\r\n )}\r\n >\r\n {showGrid && (\r\n <BookingCalendarGrid\r\n containerRef={observe}\r\n items={gridItems}\r\n dataRowsCount={lanes.length}\r\n />\r\n )}\r\n {showSelection && (\r\n <BookingCalendarSelection\r\n dataRowsCount={lanes.length}\r\n onSelected={onSelected}\r\n minSelectionSize={minSelectionSize}\r\n />\r\n )}\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.lanesHeaderHeaderContainerClassName,\r\n lanesHeaderHeaderContainerClassName\r\n )}\r\n >\r\n {typeof BookingCalendarDatePicker === 'function' ? (\r\n <BookingCalendarDatePicker\r\n from={from}\r\n till={till}\r\n onRangeChange={onRangeChange}\r\n getNewMomentFunction={getNewMomentFunction}\r\n />\r\n ) : (\r\n BookingCalendarDatePicker\r\n )}\r\n </div>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.lanesHeaderContainerClassName,\r\n lanesHeaderContainerClassName\r\n )}\r\n >\r\n <BookingCalendarLanesHeader<T>\r\n {...controlsClasses}\r\n from={from}\r\n till={till}\r\n onRangeChange={onRangeChange}\r\n step={step}\r\n />\r\n </div>\r\n\r\n {lanes.map((lane, laneIndex) => {\r\n const LaneBookingCalendarLaneHeader =\r\n lane.BookingCalendarLaneHeader ?? BookingCalendarLaneHeader;\r\n const LaneBookingCalendarLane =\r\n lane.BookingCalendarLane ?? BookingCalendarLane;\r\n return (\r\n <React.Fragment key={laneIndex}>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.laneHeaderContainerClassName,\r\n laneHeaderContainerClassName,\r\n lane.rowClassName,\r\n {\r\n [`${bookingCalendarDefaultClasses.laneHeaderContainerClassName}--last`]:\r\n laneIndex === lanes.length - 1,\r\n [`${bookingCalendarDefaultClasses.laneHeaderContainerClassName}--first`]:\r\n laneIndex === 0,\r\n }\r\n )}\r\n >\r\n <LaneBookingCalendarLaneHeader<TLaneData>\r\n laneKey={lane.laneKey ?? laneIndex}\r\n data={lane.data}\r\n />\r\n </div>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.laneContainerClassName,\r\n laneContainerClassName,\r\n lane.rowClassName,\r\n {\r\n [`${bookingCalendarDefaultClasses.laneContainerClassName}--last`]:\r\n laneIndex === lanes.length - 1,\r\n [`${bookingCalendarDefaultClasses.laneContainerClassName}--first`]:\r\n laneIndex === 0,\r\n }\r\n )}\r\n >\r\n <LaneBookingCalendarLane\r\n laneIndex={laneIndex}\r\n items={lane.items}\r\n from={from}\r\n till={till}\r\n BookingCalendarItem={\r\n lane.BookingCalendarItem ?? BookingCalendarItem\r\n }\r\n BookingCalendarRenderItem={\r\n lane.BookingCalendarRenderItem ?? BookingCalendarRenderItem\r\n }\r\n step={step}\r\n />\r\n </div>\r\n </React.Fragment>\r\n );\r\n })}\r\n <div />\r\n <div>\r\n <BookingCalendarTimeAxis\r\n items={gridItems}\r\n bestStep={bestStep}\r\n getMomentFormatFunction={getMomentFormatFunction}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"file":"BookingCalendar.js"}
|
@@ -11,7 +11,7 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
11
11
|
|
12
12
|
var React = _interopRequireWildcard(require("react"));
|
13
13
|
|
14
|
-
var _moment =
|
14
|
+
var _moment = require("moment");
|
15
15
|
|
16
16
|
var _ = require(".");
|
17
17
|
|
@@ -139,12 +139,14 @@ function BookingCalendarControls(props) {
|
|
139
139
|
var onZoomBookingsClick = React.useCallback(function () {
|
140
140
|
var _Math$min, _Math$max;
|
141
141
|
|
142
|
-
var
|
142
|
+
var minFromMs = (_Math$min = Math.min.apply(Math, _toConsumableArray(filteredItems === null || filteredItems === void 0 ? void 0 : filteredItems.filter(filterBookingsToZoom).map(function (a) {
|
143
143
|
return a.from.valueOf();
|
144
|
-
})))) !== null && _Math$min !== void 0 ? _Math$min : from === null || from === void 0 ? void 0 : from.valueOf()
|
145
|
-
var
|
144
|
+
})))) !== null && _Math$min !== void 0 ? _Math$min : from === null || from === void 0 ? void 0 : from.valueOf();
|
145
|
+
var minFrom = from.clone().add(from.valueOf() - minFromMs, 'ms');
|
146
|
+
var maxTillMs = (_Math$max = Math.max.apply(Math, _toConsumableArray(filteredItems === null || filteredItems === void 0 ? void 0 : filteredItems.filter(filterBookingsToZoom).map(function (a) {
|
146
147
|
return a.till.valueOf();
|
147
|
-
})))) !== null && _Math$max !== void 0 ? _Math$max : till === null || till === void 0 ? void 0 : till.valueOf()
|
148
|
+
})))) !== null && _Math$max !== void 0 ? _Math$max : till === null || till === void 0 ? void 0 : till.valueOf();
|
149
|
+
var maxTill = till.clone().add(till.valueOf() - maxTillMs, 'ms');
|
148
150
|
onRangeChange({
|
149
151
|
from: minFrom,
|
150
152
|
till: maxTill
|
@@ -164,8 +166,8 @@ function BookingCalendarControls(props) {
|
|
164
166
|
key: index,
|
165
167
|
onClick: function onClick() {
|
166
168
|
return onRangeChange({
|
167
|
-
from:
|
168
|
-
till:
|
169
|
+
from: from.clone().startOf('day'),
|
170
|
+
till: from.clone().startOf('day').add(level.step)
|
169
171
|
});
|
170
172
|
}
|
171
173
|
}, level.label);
|
package/build/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.tsx"],"names":["LeftArrowLongIcon","LeftArrowIcon","RightArrowLongIcon","RightArrowIcon","UnfoldLessIcon","BookingCalendarControls","props","className","monthLabelClassName","buttonsContainerClassName","zoomBookingsButtonClassName","zoomLevelsContainerClassName","zoomLevels","step","from","till","onRangeChange","items","filterBookingsToZoom","onStepFactory","React","useCallback","_step","clone","add","onBigStepLeftClick","onSmallStepLeftClick","onBigStepRightClick","onSmallStepRightClick","filteredItems","useMemo","filter","onZoomBookingsClick","minFrom","Math","min","map","a","valueOf","maxTill","max","bookingCalendarControlsDefaultClasses","format","length","level","index","asMilliseconds","undefined","startOf","label"],"mappings":"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","sourcesContent":["import classNames from 'classnames';\r\nimport * as React from 'react';\r\nimport {\r\n BookingCalendarDateRange,\r\n BookingCalendarItemT,\r\n ZoomLevel,\r\n} from '../common';\r\nimport { duration, Duration, Moment } from 'moment';\r\nimport { BookingCalendarControlsClasses } from './classes';\r\nimport { bookingCalendarControlsDefaultClasses } from '.';\r\nimport { Button } from '../../button/Button';\r\nimport * as LeftArrowLongIcon from 'material-design-icons/navigation/svg/production/ic_arrow_back_24px.svg';\r\nimport * as LeftArrowIcon from 'material-design-icons/hardware/svg/production/ic_keyboard_arrow_left_24px.svg';\r\nimport * as RightArrowLongIcon from 'material-design-icons/navigation/svg/production/ic_arrow_forward_24px.svg';\r\nimport * as RightArrowIcon from 'material-design-icons/hardware/svg/production/ic_keyboard_arrow_right_24px.svg';\r\nimport * as UnfoldLessIcon from 'material-design-icons/navigation/svg/production/ic_unfold_less_24px.svg';\r\nimport moment from 'moment';\r\n\r\nexport interface BookingCalendarControlsProps<T extends BookingCalendarItemT>\r\n extends BookingCalendarControlsClasses {\r\n items: T[];\r\n step: Duration;\r\n from: Moment;\r\n till: Moment;\r\n zoomLevels?: ZoomLevel[];\r\n onRangeChange?: (range: BookingCalendarDateRange) => void;\r\n filterBookingsToZoom?: (booking: T) => boolean;\r\n}\r\n\r\nexport function BookingCalendarControls<T extends BookingCalendarItemT>(\r\n props: BookingCalendarControlsProps<T>\r\n) {\r\n const {\r\n className,\r\n monthLabelClassName,\r\n buttonsContainerClassName,\r\n zoomBookingsButtonClassName,\r\n zoomLevelsContainerClassName,\r\n zoomLevels,\r\n step,\r\n from,\r\n till,\r\n onRangeChange,\r\n items,\r\n filterBookingsToZoom = () => true,\r\n } = props;\r\n if (!step || !from || !till) {\r\n return null;\r\n }\r\n const onStepFactory = React.useCallback(\r\n (_step: Duration) => () =>\r\n onRangeChange({\r\n from: from.clone().add(_step),\r\n till: till.clone().add(_step),\r\n }),\r\n [from, till, onRangeChange]\r\n );\r\n const onBigStepLeftClick = React.useCallback(\r\n onStepFactory(duration(-7, 'days')),\r\n [onStepFactory, till, from]\r\n );\r\n const onSmallStepLeftClick = React.useCallback(\r\n onStepFactory(duration(-1, 'day')),\r\n [onStepFactory, step]\r\n );\r\n const onBigStepRightClick = React.useCallback(\r\n onStepFactory(duration(7, 'days')),\r\n [onStepFactory, till, from]\r\n );\r\n const onSmallStepRightClick = React.useCallback(\r\n onStepFactory(duration(1, 'day')),\r\n [onStepFactory, step]\r\n );\r\n const filteredItems = React.useMemo(\r\n () => items?.filter(filterBookingsToZoom),\r\n [filterBookingsToZoom, items]\r\n );\r\n const onZoomBookingsClick = React.useCallback(() => {\r\n const minFrom = moment(\r\n Math.min(\r\n ...filteredItems\r\n ?.filter(filterBookingsToZoom)\r\n .map(a => a.from.valueOf())\r\n ) ?? from?.valueOf()\r\n );\r\n const maxTill = moment(\r\n Math.max(\r\n ...filteredItems\r\n ?.filter(filterBookingsToZoom)\r\n .map(a => a.till.valueOf())\r\n ) ?? till?.valueOf()\r\n );\r\n onRangeChange({\r\n from: minFrom,\r\n till: maxTill,\r\n });\r\n }, [from, till, filteredItems]);\r\n return (\r\n <div\r\n className={classNames(\r\n bookingCalendarControlsDefaultClasses.className,\r\n className\r\n )}\r\n >\r\n <div\r\n className={classNames(\r\n bookingCalendarControlsDefaultClasses.monthLabelClassName,\r\n monthLabelClassName\r\n )}\r\n >\r\n {from.format('MMMM')}, {from.format('YYYY')}\r\n </div>\r\n {zoomLevels?.length > 0 && (\r\n <div\r\n className={classNames(\r\n bookingCalendarControlsDefaultClasses.zoomLevelsContainerClassName,\r\n zoomLevelsContainerClassName\r\n )}\r\n >\r\n {zoomLevels.map((level, index) => (\r\n <Button\r\n type={\r\n till.valueOf() - from.valueOf() === level.step.asMilliseconds()\r\n ? 'primary'\r\n : undefined\r\n }\r\n // blank={true}\r\n noShadow={true}\r\n key={index}\r\n onClick={() =>\r\n onRangeChange({\r\n from: moment(from).startOf('day'),\r\n till: moment(from)\r\n .startOf('day')\r\n .add(level.step),\r\n })\r\n }\r\n >\r\n {level.label}\r\n </Button>\r\n ))}\r\n </div>\r\n )}\r\n <div\r\n className={classNames(\r\n bookingCalendarControlsDefaultClasses.buttonsContainerClassName,\r\n buttonsContainerClassName\r\n )}\r\n >\r\n <Button noShadow={true} onClick={onBigStepLeftClick}>\r\n <LeftArrowLongIcon />\r\n </Button>\r\n <Button noShadow={true} onClick={onSmallStepLeftClick}>\r\n <LeftArrowIcon />\r\n </Button>\r\n <Button noShadow={true} onClick={onSmallStepRightClick}>\r\n <RightArrowIcon />\r\n </Button>\r\n <Button noShadow={true} onClick={onBigStepRightClick}>\r\n <RightArrowLongIcon />\r\n </Button>\r\n <Button\r\n className={classNames(\r\n bookingCalendarControlsDefaultClasses.zoomBookingsButtonClassName,\r\n zoomBookingsButtonClassName\r\n )}\r\n noShadow={true}\r\n disabled={!filteredItems?.length}\r\n onClick={onZoomBookingsClick}\r\n >\r\n <UnfoldLessIcon />\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"file":"BookingCalendarControls.js"}
|
1
|
+
{"version":3,"sources":["../../../../src/lib/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.tsx"],"names":["LeftArrowLongIcon","LeftArrowIcon","RightArrowLongIcon","RightArrowIcon","UnfoldLessIcon","BookingCalendarControls","props","className","monthLabelClassName","buttonsContainerClassName","zoomBookingsButtonClassName","zoomLevelsContainerClassName","zoomLevels","step","from","till","onRangeChange","items","filterBookingsToZoom","onStepFactory","React","useCallback","_step","clone","add","onBigStepLeftClick","onSmallStepLeftClick","onBigStepRightClick","onSmallStepRightClick","filteredItems","useMemo","filter","onZoomBookingsClick","minFromMs","Math","min","map","a","valueOf","minFrom","maxTillMs","max","maxTill","bookingCalendarControlsDefaultClasses","format","length","level","index","asMilliseconds","undefined","startOf","label"],"mappings":"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","sourcesContent":["import classNames from 'classnames';\r\nimport * as React from 'react';\r\nimport {\r\n BookingCalendarDateRange,\r\n BookingCalendarItemT,\r\n ZoomLevel,\r\n} from '../common';\r\nimport { duration, Duration, Moment } from 'moment';\r\nimport { BookingCalendarControlsClasses } from './classes';\r\nimport { bookingCalendarControlsDefaultClasses } from '.';\r\nimport { Button } from '../../button/Button';\r\nimport * as LeftArrowLongIcon from 'material-design-icons/navigation/svg/production/ic_arrow_back_24px.svg';\r\nimport * as LeftArrowIcon from 'material-design-icons/hardware/svg/production/ic_keyboard_arrow_left_24px.svg';\r\nimport * as RightArrowLongIcon from 'material-design-icons/navigation/svg/production/ic_arrow_forward_24px.svg';\r\nimport * as RightArrowIcon from 'material-design-icons/hardware/svg/production/ic_keyboard_arrow_right_24px.svg';\r\nimport * as UnfoldLessIcon from 'material-design-icons/navigation/svg/production/ic_unfold_less_24px.svg';\r\n\r\nexport interface BookingCalendarControlsProps<T extends BookingCalendarItemT>\r\n extends BookingCalendarControlsClasses {\r\n items: T[];\r\n step: Duration;\r\n from: Moment;\r\n till: Moment;\r\n zoomLevels?: ZoomLevel[];\r\n onRangeChange?: (range: BookingCalendarDateRange) => void;\r\n filterBookingsToZoom?: (booking: T) => boolean;\r\n}\r\n\r\nexport function BookingCalendarControls<T extends BookingCalendarItemT>(\r\n props: BookingCalendarControlsProps<T>\r\n) {\r\n const {\r\n className,\r\n monthLabelClassName,\r\n buttonsContainerClassName,\r\n zoomBookingsButtonClassName,\r\n zoomLevelsContainerClassName,\r\n zoomLevels,\r\n step,\r\n from,\r\n till,\r\n onRangeChange,\r\n items,\r\n filterBookingsToZoom = () => true,\r\n } = props;\r\n if (!step || !from || !till) {\r\n return null;\r\n }\r\n const onStepFactory = React.useCallback(\r\n (_step: Duration) => () =>\r\n onRangeChange({\r\n from: from.clone().add(_step),\r\n till: till.clone().add(_step),\r\n }),\r\n [from, till, onRangeChange]\r\n );\r\n const onBigStepLeftClick = React.useCallback(\r\n onStepFactory(duration(-7, 'days')),\r\n [onStepFactory, till, from]\r\n );\r\n const onSmallStepLeftClick = React.useCallback(\r\n onStepFactory(duration(-1, 'day')),\r\n [onStepFactory, step]\r\n );\r\n const onBigStepRightClick = React.useCallback(\r\n onStepFactory(duration(7, 'days')),\r\n [onStepFactory, till, from]\r\n );\r\n const onSmallStepRightClick = React.useCallback(\r\n onStepFactory(duration(1, 'day')),\r\n [onStepFactory, step]\r\n );\r\n const filteredItems = React.useMemo(\r\n () => items?.filter(filterBookingsToZoom),\r\n [filterBookingsToZoom, items]\r\n );\r\n const onZoomBookingsClick = React.useCallback(() => {\r\n const minFromMs =\r\n Math.min(\r\n ...filteredItems\r\n ?.filter(filterBookingsToZoom)\r\n .map(a => a.from.valueOf())\r\n ) ?? from?.valueOf();\r\n const minFrom = from.clone().add(from.valueOf() - minFromMs, 'ms');\r\n const maxTillMs =\r\n Math.max(\r\n ...filteredItems\r\n ?.filter(filterBookingsToZoom)\r\n .map(a => a.till.valueOf())\r\n ) ?? till?.valueOf();\r\n const maxTill = till.clone().add(till.valueOf() - maxTillMs, 'ms');\r\n onRangeChange({\r\n from: minFrom,\r\n till: maxTill,\r\n });\r\n }, [from, till, filteredItems]);\r\n return (\r\n <div\r\n className={classNames(\r\n bookingCalendarControlsDefaultClasses.className,\r\n className\r\n )}\r\n >\r\n <div\r\n className={classNames(\r\n bookingCalendarControlsDefaultClasses.monthLabelClassName,\r\n monthLabelClassName\r\n )}\r\n >\r\n {from.format('MMMM')}, {from.format('YYYY')}\r\n </div>\r\n {zoomLevels?.length > 0 && (\r\n <div\r\n className={classNames(\r\n bookingCalendarControlsDefaultClasses.zoomLevelsContainerClassName,\r\n zoomLevelsContainerClassName\r\n )}\r\n >\r\n {zoomLevels.map((level, index) => (\r\n <Button\r\n type={\r\n till.valueOf() - from.valueOf() === level.step.asMilliseconds()\r\n ? 'primary'\r\n : undefined\r\n }\r\n // blank={true}\r\n noShadow={true}\r\n key={index}\r\n onClick={() =>\r\n onRangeChange({\r\n from: from.clone().startOf('day'),\r\n till: from.clone()\r\n .startOf('day')\r\n .add(level.step),\r\n })\r\n }\r\n >\r\n {level.label}\r\n </Button>\r\n ))}\r\n </div>\r\n )}\r\n <div\r\n className={classNames(\r\n bookingCalendarControlsDefaultClasses.buttonsContainerClassName,\r\n buttonsContainerClassName\r\n )}\r\n >\r\n <Button noShadow={true} onClick={onBigStepLeftClick}>\r\n <LeftArrowLongIcon />\r\n </Button>\r\n <Button noShadow={true} onClick={onSmallStepLeftClick}>\r\n <LeftArrowIcon />\r\n </Button>\r\n <Button noShadow={true} onClick={onSmallStepRightClick}>\r\n <RightArrowIcon />\r\n </Button>\r\n <Button noShadow={true} onClick={onBigStepRightClick}>\r\n <RightArrowLongIcon />\r\n </Button>\r\n <Button\r\n className={classNames(\r\n bookingCalendarControlsDefaultClasses.zoomBookingsButtonClassName,\r\n zoomBookingsButtonClassName\r\n )}\r\n noShadow={true}\r\n disabled={!filteredItems?.length}\r\n onClick={onZoomBookingsClick}\r\n >\r\n <UnfoldLessIcon />\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"file":"BookingCalendarControls.js"}
|
package/build/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.d.ts
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
import { BookingCalendarDatePickerClasses } from './classes';
|
2
2
|
import { Moment } from 'moment';
|
3
|
-
import { BookingCalendarDateRange, BookingCalendarItemT } from '../common';
|
3
|
+
import { BookingCalendarDateRange, BookingCalendarItemT, GetNewMomentFunctionType } from '../common';
|
4
4
|
export interface BookingCalendarDatePickerBaseProps<T extends BookingCalendarItemT> {
|
5
5
|
from: Moment;
|
6
6
|
till: Moment;
|
7
7
|
onRangeChange?: (range: BookingCalendarDateRange) => void;
|
8
|
+
getNewMomentFunction?: GetNewMomentFunctionType;
|
8
9
|
}
|
9
10
|
export interface BookingCalendarDatePickerProps<T extends BookingCalendarItemT> extends BookingCalendarDatePickerClasses, BookingCalendarDatePickerBaseProps<T> {
|
10
11
|
}
|
package/build/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.js
CHANGED
@@ -15,7 +15,7 @@ var _classes = require("./classes");
|
|
15
15
|
|
16
16
|
var _Button = require("../../button/Button");
|
17
17
|
|
18
|
-
var
|
18
|
+
var _ = require("..");
|
19
19
|
|
20
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
21
21
|
|
@@ -60,7 +60,9 @@ function BookingCalendarDatePicker(props) {
|
|
60
60
|
buttonClassName = props.buttonClassName,
|
61
61
|
from = props.from,
|
62
62
|
till = props.till,
|
63
|
-
onRangeChange = props.onRangeChange
|
63
|
+
onRangeChange = props.onRangeChange,
|
64
|
+
_props$getNewMomentFu = props.getNewMomentFunction,
|
65
|
+
getNewMomentFunction = _props$getNewMomentFu === void 0 ? _.defaultGetNewMomentFunction : _props$getNewMomentFu;
|
64
66
|
|
65
67
|
var _React$useState = React.useState(),
|
66
68
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
@@ -91,11 +93,11 @@ function BookingCalendarDatePicker(props) {
|
|
91
93
|
,
|
92
94
|
onChange: function onChange(dt) {
|
93
95
|
if (shownModal !== 'end') {
|
94
|
-
var dtm = (
|
95
|
-
var validTill =
|
96
|
+
var dtm = getNewMomentFunction(dt);
|
97
|
+
var validTill = till.clone();
|
96
98
|
|
97
99
|
if (dtm.isAfter(till)) {
|
98
|
-
validTill =
|
100
|
+
validTill = dtm.clone().add(1, 'day');
|
99
101
|
}
|
100
102
|
|
101
103
|
onRangeChange({
|
@@ -104,12 +106,12 @@ function BookingCalendarDatePicker(props) {
|
|
104
106
|
});
|
105
107
|
setShownModal('end');
|
106
108
|
} else {
|
107
|
-
var _dtm = (
|
109
|
+
var _dtm = getNewMomentFunction(dt).startOf('day').add(1, 'day');
|
108
110
|
|
109
|
-
var validFrom =
|
111
|
+
var validFrom = from.clone();
|
110
112
|
|
111
113
|
if (_dtm.isBefore(from)) {
|
112
|
-
validFrom =
|
114
|
+
validFrom = _dtm.clone().add(-1, 'day');
|
113
115
|
}
|
114
116
|
|
115
117
|
onRangeChange({
|
package/build/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.tsx"],"names":["EventIcon","DatePicker","require","default","undefined","BookingCalendarDatePicker","props","className","buttonClassName","from","till","onRangeChange","React","useState","shownModal","setShownModal","calendarRef","useRef","onButtonClick","useCallback","current","setOpen","bookingCalendarDatePickerDefaultClasses","toDate","dt","dtm","validTill","isAfter","add","startOf","validFrom","isBefore"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;
|
1
|
+
{"version":3,"sources":["../../../../src/lib/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.tsx"],"names":["EventIcon","DatePicker","require","default","undefined","BookingCalendarDatePicker","props","className","buttonClassName","from","till","onRangeChange","getNewMomentFunction","defaultGetNewMomentFunction","React","useState","shownModal","setShownModal","calendarRef","useRef","onButtonClick","useCallback","current","setOpen","bookingCalendarDatePickerDefaultClasses","toDate","dt","dtm","validTill","clone","isAfter","add","startOf","validFrom","isBefore"],"mappings":"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","sourcesContent":["import * as React from 'react';\r\nimport classNames from 'classnames';\r\nimport {\r\n BookingCalendarDatePickerClasses,\r\n bookingCalendarDatePickerDefaultClasses,\r\n} from './classes';\r\nimport { Moment } from 'moment';\r\nimport {\r\n BookingCalendarDateRange,\r\n BookingCalendarItemT,\r\n GetNewMomentFunctionType,\r\n} from '../common';\r\nimport { Button } from '../../button/Button';\r\nimport * as EventIcon from 'material-design-icons/action/svg/production/ic_event_24px.svg';\r\ntry {\r\n var DatePicker = require('react-datepicker').default;\r\n} catch {\r\n DatePicker = undefined;\r\n}\r\n// import DatePicker from 'react-datepicker';\r\nimport { defaultGetNewMomentFunction } from '..';\r\n\r\nexport interface BookingCalendarDatePickerBaseProps<\r\n T extends BookingCalendarItemT\r\n> {\r\n from: Moment;\r\n till: Moment;\r\n onRangeChange?: (range: BookingCalendarDateRange) => void;\r\n getNewMomentFunction?: GetNewMomentFunctionType;\r\n}\r\n\r\nexport interface BookingCalendarDatePickerProps<T extends BookingCalendarItemT>\r\n extends BookingCalendarDatePickerClasses,\r\n BookingCalendarDatePickerBaseProps<T> {}\r\n\r\nexport function BookingCalendarDatePicker<T extends BookingCalendarItemT>(\r\n props: BookingCalendarDatePickerProps<T>\r\n) {\r\n const {\r\n className,\r\n buttonClassName,\r\n from,\r\n till,\r\n onRangeChange,\r\n getNewMomentFunction = defaultGetNewMomentFunction,\r\n } = props;\r\n const [shownModal, setShownModal] = React.useState<null | 'start' | 'end'>();\r\n const calendarRef = React.useRef<typeof DatePicker>();\r\n const onButtonClick = React.useCallback(() => {\r\n setShownModal('start');\r\n calendarRef.current.setOpen(true);\r\n }, []);\r\n return (\r\n <div\r\n className={classNames(\r\n bookingCalendarDatePickerDefaultClasses.className,\r\n className\r\n )}\r\n >\r\n <Button\r\n className={classNames(\r\n bookingCalendarDatePickerDefaultClasses.buttonClassName,\r\n buttonClassName\r\n )}\r\n noShadow={true}\r\n onClick={onButtonClick}\r\n >\r\n <EventIcon />\r\n </Button>\r\n <DatePicker\r\n ref={calendarRef}\r\n customInput={<span />}\r\n selected={from?.toDate()}\r\n // selectsRange={true}\r\n selectsStart={shownModal !== 'end'}\r\n selectsEnd={shownModal === 'end'}\r\n startDate={from?.toDate()}\r\n endDate={till?.toDate()}\r\n shouldCloseOnSelect={shownModal === 'end'}\r\n //dateFormat={DAY_FORMAT}\r\n onChange={(dt: Date) => {\r\n if (shownModal !== 'end') {\r\n const dtm = getNewMomentFunction(dt);\r\n let validTill = till.clone();\r\n if (dtm.isAfter(till)) {\r\n validTill = dtm.clone().add(1, 'day');\r\n }\r\n onRangeChange({ from: dtm, till: validTill });\r\n setShownModal('end');\r\n } else {\r\n let dtm = getNewMomentFunction(dt)\r\n .startOf('day')\r\n .add(1, 'day');\r\n let validFrom = from.clone();\r\n if (dtm.isBefore(from)) {\r\n validFrom = dtm.clone().add(-1, 'day');\r\n }\r\n onRangeChange({ from: validFrom, till: dtm });\r\n setShownModal(null);\r\n }\r\n }}\r\n withPortal={true}\r\n />\r\n </div>\r\n );\r\n}\r\n"],"file":"BookingCalendarDatePicker.js"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { Moment, Duration } from 'moment';
|
1
|
+
import moment, { Moment, Duration } from 'moment';
|
2
2
|
export interface BookingCalendarItemT {
|
3
3
|
from: Moment;
|
4
4
|
till: Moment;
|
@@ -17,4 +17,6 @@ export interface ZoomLevel {
|
|
17
17
|
}
|
18
18
|
export declare const defaultGetMomentFormatFunction: (date: Moment, bestStep: Duration) => "MMM Do" | "h:mm a";
|
19
19
|
export declare type GetMomentFormatFunctionType = typeof defaultGetMomentFormatFunction;
|
20
|
+
export declare const defaultGetNewMomentFunction: (date: Date) => moment.Moment;
|
21
|
+
export declare type GetNewMomentFunctionType = typeof defaultGetNewMomentFunction;
|
20
22
|
export declare const defaultGridAvailableSteps: Duration[];
|
@@ -1,11 +1,17 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
4
|
+
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
4
6
|
value: true
|
5
7
|
});
|
6
|
-
exports.defaultGridAvailableSteps = exports.defaultGetMomentFormatFunction = void 0;
|
8
|
+
exports.defaultGridAvailableSteps = exports.defaultGetNewMomentFunction = exports.defaultGetMomentFormatFunction = void 0;
|
9
|
+
|
10
|
+
var _moment = _interopRequireWildcard(require("moment"));
|
11
|
+
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
7
13
|
|
8
|
-
var
|
14
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
9
15
|
|
10
16
|
var defaultGetMomentFormatFunction = function defaultGetMomentFormatFunction(date, bestStep) {
|
11
17
|
if (!date || !bestStep) {
|
@@ -20,6 +26,12 @@ var defaultGetMomentFormatFunction = function defaultGetMomentFormatFunction(dat
|
|
20
26
|
};
|
21
27
|
|
22
28
|
exports.defaultGetMomentFormatFunction = defaultGetMomentFormatFunction;
|
29
|
+
|
30
|
+
var defaultGetNewMomentFunction = function defaultGetNewMomentFunction(date) {
|
31
|
+
return (0, _moment.default)(date);
|
32
|
+
};
|
33
|
+
|
34
|
+
exports.defaultGetNewMomentFunction = defaultGetNewMomentFunction;
|
23
35
|
var defaultGridAvailableSteps = [(0, _moment.duration)(1, 'minute'), (0, _moment.duration)(5, 'minute'), (0, _moment.duration)(10, 'minute'), (0, _moment.duration)(15, 'minute'), (0, _moment.duration)(20, 'minute'), (0, _moment.duration)(30, 'minute'), (0, _moment.duration)(1, 'hour'), (0, _moment.duration)(2, 'hour'), (0, _moment.duration)(4, 'hour'), (0, _moment.duration)(6, 'hour'), (0, _moment.duration)(8, 'hour'), (0, _moment.duration)(12, 'hour'), (0, _moment.duration)(1, 'day')];
|
24
36
|
exports.defaultGridAvailableSteps = defaultGridAvailableSteps;
|
25
37
|
//# sourceMappingURL=common.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/components/bookingCalendar/common.ts"],"names":["defaultGetMomentFormatFunction","date","bestStep","undefined","valueOf","clone","startOf","defaultGridAvailableSteps"],"mappings":"
|
1
|
+
{"version":3,"sources":["../../../src/lib/components/bookingCalendar/common.ts"],"names":["defaultGetMomentFormatFunction","date","bestStep","undefined","valueOf","clone","startOf","defaultGetNewMomentFunction","defaultGridAvailableSteps"],"mappings":";;;;;;;;;AAAA;;;;;;AAyBO,IAAMA,8BAA8B,GAAG,SAAjCA,8BAAiC,CAC5CC,IAD4C,EAE5CC,QAF4C,EAGzC;AACH,MAAI,CAACD,IAAD,IAAS,CAACC,QAAd,EAAwB;AACtB,WAAOC,SAAP;AACD;;AACD,MACEF,IAAI,CAACG,OAAL,OACAH,IAAI,CACDI,KADH,GAEGC,OAFH,CAEW,KAFX,EAGGF,OAHH,EAFF,EAME;AACA,WAAO,QAAP;AACD;;AACD,SAAO,QAAP;AACD,CAjBM;;;;AAqBA,IAAMG,2BAA2B,GAAG,SAA9BA,2BAA8B,CAACN,IAAD,EAAgB;AACzD,SAAO,qBAAOA,IAAP,CAAP;AACD,CAFM;;;AAMA,IAAMO,yBAAqC,GAAG,CACnD,sBAAS,CAAT,EAAY,QAAZ,CADmD,EAEnD,sBAAS,CAAT,EAAY,QAAZ,CAFmD,EAGnD,sBAAS,EAAT,EAAa,QAAb,CAHmD,EAInD,sBAAS,EAAT,EAAa,QAAb,CAJmD,EAKnD,sBAAS,EAAT,EAAa,QAAb,CALmD,EAMnD,sBAAS,EAAT,EAAa,QAAb,CANmD,EAOnD,sBAAS,CAAT,EAAY,MAAZ,CAPmD,EAQnD,sBAAS,CAAT,EAAY,MAAZ,CARmD,EASnD,sBAAS,CAAT,EAAY,MAAZ,CATmD,EAUnD,sBAAS,CAAT,EAAY,MAAZ,CAVmD,EAWnD,sBAAS,CAAT,EAAY,MAAZ,CAXmD,EAYnD,sBAAS,EAAT,EAAa,MAAb,CAZmD,EAanD,sBAAS,CAAT,EAAY,KAAZ,CAbmD,CAA9C","sourcesContent":["import moment, { Moment, Duration, duration } from 'moment';\r\n\r\nexport interface BookingCalendarItemT {\r\n from: Moment;\r\n till: Moment;\r\n /*\r\n Optional index that identifies the lane\r\n */\r\n laneKey?: string | number;\r\n}\r\n\r\nexport interface BookingCalendarItemWithOriginalIndexT {\r\n originalIndex: number;\r\n}\r\n\r\nexport interface BookingCalendarDateRange {\r\n from: Moment;\r\n till: Moment;\r\n}\r\n\r\nexport interface ZoomLevel {\r\n step: Duration;\r\n label: React.ReactNode;\r\n}\r\n\r\nexport const defaultGetMomentFormatFunction = (\r\n date: Moment,\r\n bestStep: Duration\r\n) => {\r\n if (!date || !bestStep) {\r\n return undefined;\r\n }\r\n if (\r\n date.valueOf() ===\r\n date\r\n .clone()\r\n .startOf('day')\r\n .valueOf()\r\n ) {\r\n return 'MMM Do';\r\n }\r\n return 'h:mm a';\r\n};\r\n\r\nexport type GetMomentFormatFunctionType = typeof defaultGetMomentFormatFunction;\r\n\r\nexport const defaultGetNewMomentFunction = (date: Date) => {\r\n return moment(date);\r\n};\r\n\r\nexport type GetNewMomentFunctionType = typeof defaultGetNewMomentFunction;\r\n\r\nexport const defaultGridAvailableSteps: Duration[] = [\r\n duration(1, 'minute'),\r\n duration(5, 'minute'),\r\n duration(10, 'minute'),\r\n duration(15, 'minute'),\r\n duration(20, 'minute'),\r\n duration(30, 'minute'),\r\n duration(1, 'hour'),\r\n duration(2, 'hour'),\r\n duration(4, 'hour'),\r\n duration(6, 'hour'),\r\n duration(8, 'hour'),\r\n duration(12, 'hour'),\r\n duration(1, 'day'),\r\n];\r\n"],"file":"common.js"}
|
@@ -271,8 +271,8 @@ var generateControlItems = function generateControlItems(from, till, step, start
|
|
271
271
|
|
272
272
|
return new Array(steps).fill(0).map(function (_, index) {
|
273
273
|
return {
|
274
|
-
from:
|
275
|
-
till:
|
274
|
+
from: from.clone().add(subtract).add(step.asMilliseconds() * index),
|
275
|
+
till: from.clone().add(subtract).add(step.asMilliseconds() * (index + 1))
|
276
276
|
};
|
277
277
|
});
|
278
278
|
};
|
@@ -306,7 +306,7 @@ var generateGridItems = function generateGridItems(from, till, step, containerWi
|
|
306
306
|
var steps = [];
|
307
307
|
|
308
308
|
while (startMs <= tillMs) {
|
309
|
-
steps = steps.concat((
|
309
|
+
steps = steps.concat(from.clone().add(startMs - fromMs, 'ms'));
|
310
310
|
startMs += bestStep.asMilliseconds();
|
311
311
|
}
|
312
312
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/components/bookingCalendar/utils.ts"],"names":["groupBy","items","iterator","reduce","obj","item","key","hasOwnProperty","push","splitBookingsToLanes","bookings","from","minLanesCount","lanesSource","lanes","length","map","source","bookingsWithoutLaneKey","filter","a","laneKey","undefined","bookingsWithLaneKey","grouped","booking","originalIndex","Object","keys","Number","find","missingLanes","some","l","concat","remainingBookings","sort","b","valueOf","min","bookingIndex","laneIndex","forEach","lane","index","lastTill","till","distances","dist","diff","Math","abs","_min","indexOf","splice","data","shift","Array","fill","_","itemsOverlap","isBefore","isAfter","getItemPositionStyle","marginStart","width","marginLeft","calculateItemsDimensions","lastEnd","widthMs","startMs","endMs","startIsCut","realStart","realFrom","start","endIsCut","realEnd","end","realTill","generateControlItems","step","startOfStep","steps","max","ceil","asMilliseconds","subtract","add","generateGridItems","containerWidthPx","availableSteps","goalGridWidthPx","bestStep","stepMs","fromMs","tillMs","timeLengthMs","approximateStepsCount","approximateStepMs","availableStepsDistancesMs","smallestDistance","bestStepIndex","findIndex","utcOffset","date","stepProportion","numberOfRoots","current","currentTop","tolerance","pow","left","opacity"],"mappings":"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","sourcesContent":["import moment, { Moment, Duration } from 'moment';\r\nimport { BookingCalendarItemProps } from './bookingCalendarItem';\r\nimport { BookingCalendarLaneProps } from './bookingCalendarLane';\r\nimport { BookingCalendarLaneHeaderProps } from './bookingCalendarLaneHeader';\r\nimport { BookingCalendarRenderItemProps } from './bookingCalendarRenderItem';\r\nimport {\r\n BookingCalendarItemT,\r\n BookingCalendarItemWithOriginalIndexT,\r\n} from './common';\r\n\r\nexport function groupBy<T>(items: T[], iterator: (item: T) => number | string) {\r\n return items.reduce((obj, item) => {\r\n const key = iterator(item);\r\n if (!obj.hasOwnProperty(key)) {\r\n obj[key] = [];\r\n }\r\n obj[key].push(item);\r\n return obj;\r\n }, {});\r\n}\r\n\r\nexport interface LaneSourceData<T extends BookingCalendarItemT, TLaneData> {\r\n laneKey: number;\r\n data?: TLaneData;\r\n rowClassName?: string;\r\n BookingCalendarItem?: React.ComponentType<BookingCalendarItemProps<T>>;\r\n BookingCalendarRenderItem?: React.ComponentType<\r\n BookingCalendarRenderItemProps<T>\r\n >;\r\n BookingCalendarLaneHeader?: React.ComponentType<\r\n BookingCalendarLaneHeaderProps<TLaneData>\r\n >;\r\n BookingCalendarLane?: React.ComponentType<BookingCalendarLaneProps<T>>;\r\n}\r\n\r\nexport interface LaneData<T extends BookingCalendarItemT, TLaneData>\r\n extends LaneSourceData<T, TLaneData> {\r\n items: T[];\r\n}\r\n\r\nexport function splitBookingsToLanes<T extends BookingCalendarItemT, TLaneData>(\r\n bookings: T[],\r\n from: Moment,\r\n minLanesCount: number,\r\n lanesSource: LaneSourceData<T, TLaneData>[] = []\r\n) {\r\n if (!bookings) {\r\n return [];\r\n }\r\n let lanes: LaneData<T, TLaneData>[] = [];\r\n if (lanesSource?.length) {\r\n lanes = lanesSource.map(source => ({\r\n ...source,\r\n items: [],\r\n }));\r\n }\r\n const bookingsWithoutLaneKey = bookings.filter(a => a.laneKey === undefined);\r\n const bookingsWithLaneKey = bookings.filter(a => a.laneKey !== undefined);\r\n if (bookingsWithLaneKey.length) {\r\n const grouped = groupBy(\r\n bookingsWithLaneKey.map((booking, originalIndex) => ({\r\n ...booking,\r\n originalIndex,\r\n })),\r\n a => a.laneKey\r\n );\r\n lanes = Object.keys(grouped).map(key => ({\r\n laneKey: Number(key),\r\n items: grouped[key],\r\n ...lanesSource?.find(a => a.laneKey === Number(key)),\r\n }));\r\n const missingLanes = lanesSource?.filter(\r\n a => !lanes.some(l => l.laneKey === a.laneKey)\r\n );\r\n lanes = lanes.concat(missingLanes.map(a => ({ ...a, items: [] })));\r\n }\r\n if (bookingsWithoutLaneKey.length) {\r\n let remainingBookings: (T &\r\n BookingCalendarItemWithOriginalIndexT)[] = bookingsWithoutLaneKey\r\n .map((booking, originalIndex) => ({ ...booking, originalIndex }))\r\n .sort((a, b) => a.from.valueOf() - b.from.valueOf());\r\n while (remainingBookings.length > 0) {\r\n let min = 99999999999999;\r\n let bookingIndex = -1;\r\n let laneIndex = -1;\r\n lanes.forEach((lane, index) => {\r\n if (lanesSource?.some(l => l.laneKey === lane.laneKey)) {\r\n return;\r\n }\r\n const lastTill = lane.items[lane.items.length - 1]?.till ?? from;\r\n const distances = remainingBookings.map(booking => {\r\n const dist = booking.from.diff(lastTill);\r\n if (lane.items.length === 0) {\r\n return Math.abs(dist);\r\n }\r\n return dist;\r\n });\r\n const _min = Math.min(...distances.filter(a => a >= 0));\r\n if (_min < min) {\r\n bookingIndex = distances.indexOf(_min);\r\n laneIndex = index;\r\n }\r\n });\r\n if (bookingIndex >= 0 && laneIndex >= 0) {\r\n lanes[laneIndex].items = lanes[laneIndex].items.concat({\r\n ...remainingBookings[bookingIndex],\r\n });\r\n remainingBookings.splice(bookingIndex, 1);\r\n } else {\r\n lanes = lanes.concat({\r\n items: [{ ...remainingBookings[0] }],\r\n laneKey: lanes.length,\r\n data: undefined,\r\n });\r\n remainingBookings.shift();\r\n }\r\n }\r\n // Naive solution that is much less computationally intensive but yields more lanes than necessary\r\n /*bookings.forEach((booking, originalIndex) => {\r\n let found = false;\r\n lanes.forEach((lane, index) => {\r\n if (!lane.some(i => itemsOverlap(booking, i))) {\r\n lanes[index] = lanes[index].concat({ ...booking, originalIndex });\r\n found = true;\r\n }\r\n });\r\n if (!found) {\r\n lanes = lanes.concat([[{ ...booking, originalIndex }]]);\r\n }\r\n });*/\r\n }\r\n for (let index = 0; index < lanes.length; index++) {\r\n const lane = lanes[index];\r\n lanes[index].items = lane.items.sort(\r\n (a, b) => a.from.valueOf() - b.from.valueOf()\r\n );\r\n }\r\n if (lanes.length < minLanesCount) {\r\n lanes = lanes.concat(\r\n new Array<LaneData<T, TLaneData>>(minLanesCount - lanes.length)\r\n .fill(null)\r\n .map((_, index) => ({\r\n items: [],\r\n laneKey: index + lanes.length,\r\n data: null,\r\n }))\r\n );\r\n }\r\n lanes = lanes.sort((a, b) => a.laneKey - b.laneKey);\r\n return lanes;\r\n}\r\n\r\nexport function itemsOverlap<T extends BookingCalendarItemT>(a: T, b: T) {\r\n if (!a?.from || !a?.till || !b?.from || !b?.till) {\r\n return false;\r\n }\r\n if (b.till.isBefore(a.from)) {\r\n return false;\r\n }\r\n if (b.from.isAfter(a.till)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport const getItemPositionStyle = (marginStart: number, width: number) =>\r\n ({\r\n marginLeft: `${marginStart * 100}%`,\r\n width: `${width * 100}%`,\r\n } as React.CSSProperties);\r\n\r\nexport function calculateItemsDimensions<T extends BookingCalendarItemT>(\r\n items: T[],\r\n from: Moment,\r\n till: Moment\r\n) {\r\n let lastEnd = 0;\r\n const widthMs = till.valueOf() - from.valueOf();\r\n const startMs = from.valueOf();\r\n const endMs = till.valueOf();\r\n return widthMs > 0\r\n ? items?.map(item => {\r\n const startIsCut = item.from.valueOf() < startMs;\r\n const realStart = (item.from.valueOf() - startMs) / widthMs;\r\n const realFrom = startIsCut ? moment(startMs) : moment(item.from);\r\n const start = startIsCut ? 0 : realStart;\r\n const endIsCut = item.till.valueOf() > endMs;\r\n const realEnd = (item.till.valueOf() - startMs) / widthMs;\r\n const end = endIsCut ? (endMs - startMs) / widthMs : realEnd;\r\n const realTill = endIsCut ? moment(endMs) : moment(item.till);\r\n const marginStart = start - lastEnd;\r\n lastEnd = (item.till.valueOf() - startMs) / widthMs;\r\n return {\r\n item,\r\n start,\r\n realStart,\r\n realFrom,\r\n startIsCut,\r\n width: end - start,\r\n end,\r\n realEnd,\r\n realTill,\r\n endIsCut,\r\n marginStart,\r\n };\r\n })\r\n : [];\r\n}\r\n\r\nexport const generateControlItems = (\r\n from: Moment,\r\n till: Moment,\r\n step: Duration,\r\n startOfStep: Moment\r\n) => {\r\n if (!from || !till || !step) {\r\n return [];\r\n }\r\n let steps = Math.max(\r\n Math.ceil((till.valueOf() - from.valueOf()) / step.asMilliseconds()),\r\n 2\r\n );\r\n let subtract =\r\n (startOfStep.valueOf() - from.valueOf()) % step.asMilliseconds();\r\n if (subtract > 0) {\r\n subtract -= step.asMilliseconds();\r\n }\r\n if (till.valueOf() - from.valueOf() > step.asMilliseconds()) {\r\n steps += 1;\r\n }\r\n return new Array(steps).fill(0).map((_, index) => ({\r\n from: moment(from)\r\n .add(subtract)\r\n .add(step.asMilliseconds() * index),\r\n till: moment(from)\r\n .add(subtract)\r\n .add(step.asMilliseconds() * (index + 1)),\r\n }));\r\n};\r\n\r\nexport interface GridItem {\r\n left: number;\r\n date: Moment;\r\n stepProportion: number;\r\n opacity: number;\r\n}\r\n\r\nexport const generateGridItems = (\r\n from: Moment,\r\n till: Moment,\r\n step: Duration,\r\n containerWidthPx: number,\r\n availableSteps: Duration[],\r\n goalGridWidthPx: number,\r\n startOfStep: Moment\r\n): { items: GridItem[]; bestStep: Duration } => {\r\n if (\r\n !from ||\r\n !till ||\r\n !containerWidthPx ||\r\n !availableSteps?.length ||\r\n !goalGridWidthPx ||\r\n !step ||\r\n !startOfStep\r\n ) {\r\n return { bestStep: availableSteps?.[0], items: [] };\r\n }\r\n const stepMs = step.asMilliseconds();\r\n const fromMs = from.valueOf();\r\n const tillMs = till.valueOf();\r\n const timeLengthMs = tillMs - fromMs;\r\n const approximateStepsCount = containerWidthPx / goalGridWidthPx;\r\n const approximateStepMs = timeLengthMs / approximateStepsCount;\r\n const availableStepsDistancesMs = availableSteps.map(a =>\r\n Math.abs(a.asMilliseconds() - approximateStepMs)\r\n );\r\n const smallestDistance = Math.min(...availableStepsDistancesMs);\r\n const bestStepIndex = availableStepsDistancesMs.findIndex(\r\n a => a === smallestDistance\r\n );\r\n const bestStep = availableSteps[bestStepIndex];\r\n const subtract =\r\n (fromMs + from.utcOffset() * 60 * 1000) % bestStep.asMilliseconds();\r\n let startMs = fromMs - subtract;\r\n let steps: Moment[] = [];\r\n while (startMs <= tillMs) {\r\n steps = steps.concat(moment(startMs));\r\n startMs += bestStep.asMilliseconds();\r\n }\r\n return {\r\n items: steps\r\n .filter(a => a.valueOf() > fromMs && a.valueOf() < tillMs)\r\n .map(date => {\r\n const stepProportion =\r\n ((date.valueOf() + from.utcOffset() * 60 * 1000) % stepMs) / stepMs;\r\n let numberOfRoots = 0;\r\n let current = stepProportion;\r\n let currentTop = 1;\r\n let tolerance = 0.001;\r\n while (current > tolerance && current < currentTop - tolerance) {\r\n numberOfRoots += 1;\r\n currentTop = 1 / Math.pow(2, numberOfRoots);\r\n if (current > currentTop) {\r\n current -= currentTop;\r\n }\r\n }\r\n return {\r\n left: (date.valueOf() - fromMs) / timeLengthMs,\r\n date,\r\n stepProportion,\r\n opacity: 1 / (numberOfRoots || 1),\r\n };\r\n }),\r\n bestStep,\r\n };\r\n};\r\n"],"file":"utils.js"}
|
1
|
+
{"version":3,"sources":["../../../src/lib/components/bookingCalendar/utils.ts"],"names":["groupBy","items","iterator","reduce","obj","item","key","hasOwnProperty","push","splitBookingsToLanes","bookings","from","minLanesCount","lanesSource","lanes","length","map","source","bookingsWithoutLaneKey","filter","a","laneKey","undefined","bookingsWithLaneKey","grouped","booking","originalIndex","Object","keys","Number","find","missingLanes","some","l","concat","remainingBookings","sort","b","valueOf","min","bookingIndex","laneIndex","forEach","lane","index","lastTill","till","distances","dist","diff","Math","abs","_min","indexOf","splice","data","shift","Array","fill","_","itemsOverlap","isBefore","isAfter","getItemPositionStyle","marginStart","width","marginLeft","calculateItemsDimensions","lastEnd","widthMs","startMs","endMs","startIsCut","realStart","realFrom","start","endIsCut","realEnd","end","realTill","generateControlItems","step","startOfStep","steps","max","ceil","asMilliseconds","subtract","clone","add","generateGridItems","containerWidthPx","availableSteps","goalGridWidthPx","bestStep","stepMs","fromMs","tillMs","timeLengthMs","approximateStepsCount","approximateStepMs","availableStepsDistancesMs","smallestDistance","bestStepIndex","findIndex","utcOffset","date","stepProportion","numberOfRoots","current","currentTop","tolerance","pow","left","opacity"],"mappings":"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","sourcesContent":["import moment, { Moment, Duration } from 'moment';\r\nimport { BookingCalendarItemProps } from './bookingCalendarItem';\r\nimport { BookingCalendarLaneProps } from './bookingCalendarLane';\r\nimport { BookingCalendarLaneHeaderProps } from './bookingCalendarLaneHeader';\r\nimport { BookingCalendarRenderItemProps } from './bookingCalendarRenderItem';\r\nimport {\r\n BookingCalendarItemT,\r\n BookingCalendarItemWithOriginalIndexT,\r\n} from './common';\r\n\r\nexport function groupBy<T>(items: T[], iterator: (item: T) => number | string) {\r\n return items.reduce((obj, item) => {\r\n const key = iterator(item);\r\n if (!obj.hasOwnProperty(key)) {\r\n obj[key] = [];\r\n }\r\n obj[key].push(item);\r\n return obj;\r\n }, {});\r\n}\r\n\r\nexport interface LaneSourceData<T extends BookingCalendarItemT, TLaneData> {\r\n laneKey: number;\r\n data?: TLaneData;\r\n rowClassName?: string;\r\n BookingCalendarItem?: React.ComponentType<BookingCalendarItemProps<T>>;\r\n BookingCalendarRenderItem?: React.ComponentType<\r\n BookingCalendarRenderItemProps<T>\r\n >;\r\n BookingCalendarLaneHeader?: React.ComponentType<\r\n BookingCalendarLaneHeaderProps<TLaneData>\r\n >;\r\n BookingCalendarLane?: React.ComponentType<BookingCalendarLaneProps<T>>;\r\n}\r\n\r\nexport interface LaneData<T extends BookingCalendarItemT, TLaneData>\r\n extends LaneSourceData<T, TLaneData> {\r\n items: T[];\r\n}\r\n\r\nexport function splitBookingsToLanes<T extends BookingCalendarItemT, TLaneData>(\r\n bookings: T[],\r\n from: Moment,\r\n minLanesCount: number,\r\n lanesSource: LaneSourceData<T, TLaneData>[] = []\r\n) {\r\n if (!bookings) {\r\n return [];\r\n }\r\n let lanes: LaneData<T, TLaneData>[] = [];\r\n if (lanesSource?.length) {\r\n lanes = lanesSource.map(source => ({\r\n ...source,\r\n items: [],\r\n }));\r\n }\r\n const bookingsWithoutLaneKey = bookings.filter(a => a.laneKey === undefined);\r\n const bookingsWithLaneKey = bookings.filter(a => a.laneKey !== undefined);\r\n if (bookingsWithLaneKey.length) {\r\n const grouped = groupBy(\r\n bookingsWithLaneKey.map((booking, originalIndex) => ({\r\n ...booking,\r\n originalIndex,\r\n })),\r\n a => a.laneKey\r\n );\r\n lanes = Object.keys(grouped).map(key => ({\r\n laneKey: Number(key),\r\n items: grouped[key],\r\n ...lanesSource?.find(a => a.laneKey === Number(key)),\r\n }));\r\n const missingLanes = lanesSource?.filter(\r\n a => !lanes.some(l => l.laneKey === a.laneKey)\r\n );\r\n lanes = lanes.concat(missingLanes.map(a => ({ ...a, items: [] })));\r\n }\r\n if (bookingsWithoutLaneKey.length) {\r\n let remainingBookings: (T &\r\n BookingCalendarItemWithOriginalIndexT)[] = bookingsWithoutLaneKey\r\n .map((booking, originalIndex) => ({ ...booking, originalIndex }))\r\n .sort((a, b) => a.from.valueOf() - b.from.valueOf());\r\n while (remainingBookings.length > 0) {\r\n let min = 99999999999999;\r\n let bookingIndex = -1;\r\n let laneIndex = -1;\r\n lanes.forEach((lane, index) => {\r\n if (lanesSource?.some(l => l.laneKey === lane.laneKey)) {\r\n return;\r\n }\r\n const lastTill = lane.items[lane.items.length - 1]?.till ?? from;\r\n const distances = remainingBookings.map(booking => {\r\n const dist = booking.from.diff(lastTill);\r\n if (lane.items.length === 0) {\r\n return Math.abs(dist);\r\n }\r\n return dist;\r\n });\r\n const _min = Math.min(...distances.filter(a => a >= 0));\r\n if (_min < min) {\r\n bookingIndex = distances.indexOf(_min);\r\n laneIndex = index;\r\n }\r\n });\r\n if (bookingIndex >= 0 && laneIndex >= 0) {\r\n lanes[laneIndex].items = lanes[laneIndex].items.concat({\r\n ...remainingBookings[bookingIndex],\r\n });\r\n remainingBookings.splice(bookingIndex, 1);\r\n } else {\r\n lanes = lanes.concat({\r\n items: [{ ...remainingBookings[0] }],\r\n laneKey: lanes.length,\r\n data: undefined,\r\n });\r\n remainingBookings.shift();\r\n }\r\n }\r\n // Naive solution that is much less computationally intensive but yields more lanes than necessary\r\n /*bookings.forEach((booking, originalIndex) => {\r\n let found = false;\r\n lanes.forEach((lane, index) => {\r\n if (!lane.some(i => itemsOverlap(booking, i))) {\r\n lanes[index] = lanes[index].concat({ ...booking, originalIndex });\r\n found = true;\r\n }\r\n });\r\n if (!found) {\r\n lanes = lanes.concat([[{ ...booking, originalIndex }]]);\r\n }\r\n });*/\r\n }\r\n for (let index = 0; index < lanes.length; index++) {\r\n const lane = lanes[index];\r\n lanes[index].items = lane.items.sort(\r\n (a, b) => a.from.valueOf() - b.from.valueOf()\r\n );\r\n }\r\n if (lanes.length < minLanesCount) {\r\n lanes = lanes.concat(\r\n new Array<LaneData<T, TLaneData>>(minLanesCount - lanes.length)\r\n .fill(null)\r\n .map((_, index) => ({\r\n items: [],\r\n laneKey: index + lanes.length,\r\n data: null,\r\n }))\r\n );\r\n }\r\n lanes = lanes.sort((a, b) => a.laneKey - b.laneKey);\r\n return lanes;\r\n}\r\n\r\nexport function itemsOverlap<T extends BookingCalendarItemT>(a: T, b: T) {\r\n if (!a?.from || !a?.till || !b?.from || !b?.till) {\r\n return false;\r\n }\r\n if (b.till.isBefore(a.from)) {\r\n return false;\r\n }\r\n if (b.from.isAfter(a.till)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport const getItemPositionStyle = (marginStart: number, width: number) =>\r\n ({\r\n marginLeft: `${marginStart * 100}%`,\r\n width: `${width * 100}%`,\r\n } as React.CSSProperties);\r\n\r\nexport function calculateItemsDimensions<T extends BookingCalendarItemT>(\r\n items: T[],\r\n from: Moment,\r\n till: Moment\r\n) {\r\n let lastEnd = 0;\r\n const widthMs = till.valueOf() - from.valueOf();\r\n const startMs = from.valueOf();\r\n const endMs = till.valueOf();\r\n return widthMs > 0\r\n ? items?.map(item => {\r\n const startIsCut = item.from.valueOf() < startMs;\r\n const realStart = (item.from.valueOf() - startMs) / widthMs;\r\n const realFrom = startIsCut ? moment(startMs) : moment(item.from);\r\n const start = startIsCut ? 0 : realStart;\r\n const endIsCut = item.till.valueOf() > endMs;\r\n const realEnd = (item.till.valueOf() - startMs) / widthMs;\r\n const end = endIsCut ? (endMs - startMs) / widthMs : realEnd;\r\n const realTill = endIsCut ? moment(endMs) : moment(item.till);\r\n const marginStart = start - lastEnd;\r\n lastEnd = (item.till.valueOf() - startMs) / widthMs;\r\n return {\r\n item,\r\n start,\r\n realStart,\r\n realFrom,\r\n startIsCut,\r\n width: end - start,\r\n end,\r\n realEnd,\r\n realTill,\r\n endIsCut,\r\n marginStart,\r\n };\r\n })\r\n : [];\r\n}\r\n\r\nexport const generateControlItems = (\r\n from: Moment,\r\n till: Moment,\r\n step: Duration,\r\n startOfStep: Moment\r\n) => {\r\n if (!from || !till || !step) {\r\n return [];\r\n }\r\n let steps = Math.max(\r\n Math.ceil((till.valueOf() - from.valueOf()) / step.asMilliseconds()),\r\n 2\r\n );\r\n let subtract =\r\n (startOfStep.valueOf() - from.valueOf()) % step.asMilliseconds();\r\n if (subtract > 0) {\r\n subtract -= step.asMilliseconds();\r\n }\r\n if (till.valueOf() - from.valueOf() > step.asMilliseconds()) {\r\n steps += 1;\r\n }\r\n return new Array(steps).fill(0).map((_, index) => ({\r\n from: from.clone()\r\n .add(subtract)\r\n .add(step.asMilliseconds() * index),\r\n till: from.clone()\r\n .add(subtract)\r\n .add(step.asMilliseconds() * (index + 1)),\r\n }));\r\n};\r\n\r\nexport interface GridItem {\r\n left: number;\r\n date: Moment;\r\n stepProportion: number;\r\n opacity: number;\r\n}\r\n\r\nexport const generateGridItems = (\r\n from: Moment,\r\n till: Moment,\r\n step: Duration,\r\n containerWidthPx: number,\r\n availableSteps: Duration[],\r\n goalGridWidthPx: number,\r\n startOfStep: Moment\r\n): { items: GridItem[]; bestStep: Duration } => {\r\n if (\r\n !from ||\r\n !till ||\r\n !containerWidthPx ||\r\n !availableSteps?.length ||\r\n !goalGridWidthPx ||\r\n !step ||\r\n !startOfStep\r\n ) {\r\n return { bestStep: availableSteps?.[0], items: [] };\r\n }\r\n const stepMs = step.asMilliseconds();\r\n const fromMs = from.valueOf();\r\n const tillMs = till.valueOf();\r\n const timeLengthMs = tillMs - fromMs;\r\n const approximateStepsCount = containerWidthPx / goalGridWidthPx;\r\n const approximateStepMs = timeLengthMs / approximateStepsCount;\r\n const availableStepsDistancesMs = availableSteps.map(a =>\r\n Math.abs(a.asMilliseconds() - approximateStepMs)\r\n );\r\n const smallestDistance = Math.min(...availableStepsDistancesMs);\r\n const bestStepIndex = availableStepsDistancesMs.findIndex(\r\n a => a === smallestDistance\r\n );\r\n const bestStep = availableSteps[bestStepIndex];\r\n const subtract =\r\n (fromMs + from.utcOffset() * 60 * 1000) % bestStep.asMilliseconds();\r\n let startMs = fromMs - subtract;\r\n let steps: Moment[] = [];\r\n while (startMs <= tillMs) {\r\n steps = steps.concat(from.clone().add(startMs - fromMs, 'ms'));\r\n startMs += bestStep.asMilliseconds();\r\n }\r\n return {\r\n items: steps\r\n .filter(a => a.valueOf() > fromMs && a.valueOf() < tillMs)\r\n .map(date => {\r\n const stepProportion =\r\n ((date.valueOf() + from.utcOffset() * 60 * 1000) % stepMs) / stepMs;\r\n let numberOfRoots = 0;\r\n let current = stepProportion;\r\n let currentTop = 1;\r\n let tolerance = 0.001;\r\n while (current > tolerance && current < currentTop - tolerance) {\r\n numberOfRoots += 1;\r\n currentTop = 1 / Math.pow(2, numberOfRoots);\r\n if (current > currentTop) {\r\n current -= currentTop;\r\n }\r\n }\r\n return {\r\n left: (date.valueOf() - fromMs) / timeLengthMs,\r\n date,\r\n stepProportion,\r\n opacity: 1 / (numberOfRoots || 1),\r\n };\r\n }),\r\n bestStep,\r\n };\r\n};\r\n"],"file":"utils.js"}
|
@@ -136,7 +136,7 @@ var TextRaw = /*#__PURE__*/function (_BaseInput) {
|
|
136
136
|
_createClass(TextRaw, [{
|
137
137
|
key: "componentDidUpdate",
|
138
138
|
value: function componentDidUpdate(prevProps, prevState) {
|
139
|
-
if (this.props.onNumberChange && (this.state.isValid !== prevState.isValid || this.state.value !== prevState.value)) {
|
139
|
+
if (this.props.onNumberChange && (this.state.isValid !== prevState.isValid || this.state.value !== prevState.value) && this.props.number !== Number(this.state.value)) {
|
140
140
|
var num = Number(this.state.value);
|
141
141
|
|
142
142
|
if (!isNaN(num)) {
|