guestbell-forms 3.0.40 → 3.0.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/build/components/bookingCalendar/BookingCalendar.d.ts +4 -2
  2. package/build/components/bookingCalendar/BookingCalendar.js +38 -13
  3. package/build/components/bookingCalendar/BookingCalendar.js.map +1 -1
  4. package/build/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.js +2 -1
  5. package/build/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.js.map +1 -1
  6. package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.d.ts +1 -1
  7. package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js +11 -9
  8. package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js.map +1 -1
  9. package/build/components/bookingCalendar/bookingCalendarSelection/classes.d.ts +5 -0
  10. package/build/components/bookingCalendar/bookingCalendarSelection/classes.js +12 -0
  11. package/build/components/bookingCalendar/bookingCalendarSelection/classes.js.map +1 -0
  12. package/build/components/bookingCalendar/common.d.ts +1 -0
  13. package/build/components/bookingCalendar/common.js.map +1 -1
  14. package/build/components/bookingCalendar/utils.d.ts +4 -1
  15. package/build/components/bookingCalendar/utils.js +2 -1
  16. package/build/components/bookingCalendar/utils.js.map +1 -1
  17. package/build/dist/guestbell-forms.css +3 -1
  18. package/build/dist/guestbell-forms.css.map +1 -1
  19. package/build/dist/guestbell-forms.min.css +1 -1
  20. package/build/dist/report.html +2 -2
  21. package/build/scss/components/bookingCalendar/bookingCalendar.scss +2 -0
  22. package/package.json +1 -1
  23. package/src/lib/components/bookingCalendar/BookingCalendar.tsx +72 -14
  24. package/src/lib/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.tsx +5 -4
  25. package/src/lib/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.tsx +30 -16
  26. package/src/lib/components/bookingCalendar/bookingCalendarSelection/classes.ts +10 -0
  27. package/src/lib/components/bookingCalendar/common.ts +1 -0
  28. package/src/lib/components/bookingCalendar/utils.ts +3 -1
  29. package/src/lib/scss/components/bookingCalendar/bookingCalendar.scss +2 -0
  30. package/src/stories/Schedule.tsx +15 -3
  31. package/tsconfig.json +1 -1
@@ -21,8 +21,6 @@ export interface BookingCalendarProps<T extends BookingCalendarItemT, TLaneData>
21
21
  step?: Duration;
22
22
  showZoomAllButton?: boolean;
23
23
  showGrid?: boolean;
24
- showSelection?: boolean;
25
- minSelectionSize?: number;
26
24
  gridAvailableSteps?: Duration[];
27
25
  goalGridWidthPx?: number;
28
26
  minLanesCount?: number;
@@ -33,6 +31,10 @@ export interface BookingCalendarProps<T extends BookingCalendarItemT, TLaneData>
33
31
  filteringButton?: React.ReactNode;
34
32
  zoomLevels?: ZoomLevel[];
35
33
  filterBookingsToZoom?: (booking: T) => boolean;
34
+ showSelection?: boolean;
35
+ minSelectionSize?: number;
36
+ onSelection?: (items: T[], from: Moment, till: Moment, e: React.MouseEvent<HTMLElement>) => void;
37
+ selectionContent?: React.ReactNode;
36
38
  BookingCalendarItem?: React.ComponentType<BookingCalendarItemProps<T>>;
37
39
  BookingCalendarRenderItem?: React.ComponentType<BookingCalendarRenderItemProps<T>>;
38
40
  BookingCalendarLane?: React.ComponentType<BookingCalendarLaneProps<T>>;
@@ -12,6 +12,7 @@ var _BookingCalendarControls = require("./bookingCalendarControls/BookingCalenda
12
12
  var _utils = require("./utils");
13
13
  var _BookingCalendarLane = require("./bookingCalendarLane/BookingCalendarLane");
14
14
  var _moment = _interopRequireDefault(require("moment"));
15
+ var _bookingCalendarItem = require("./bookingCalendarItem");
15
16
  var _BookingCalendarGrid = require("./bookingCalendarGrid/BookingCalendarGrid");
16
17
  var _bookingCalendarLaneHeader = require("./bookingCalendarLaneHeader");
17
18
  var _bookingCalendarLanesHeader = require("./bookingCalendarLanesHeader");
@@ -19,6 +20,8 @@ var _bookingCalendarDatePicker = require("./bookingCalendarDatePicker");
19
20
  var _BookingCalendarTimeAxis = require("./bookingCalendarTimeAxis/BookingCalendarTimeAxis");
20
21
  var _reactCoolDimensions = _interopRequireDefault(require("react-cool-dimensions"));
21
22
  var _BookingCalendarSelection = _interopRequireDefault(require("./bookingCalendarSelection/BookingCalendarSelection"));
23
+ var _bookingCalendarLane = require("./bookingCalendarLane");
24
+ var _classes2 = require("./bookingCalendarSelection/classes");
22
25
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
26
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
27
  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; }
@@ -41,12 +44,14 @@ function BookingCalendar(props) {
41
44
  step = defaultStep,
42
45
  showGrid = true,
43
46
  showSelection = true,
47
+ onSelection,
48
+ minSelectionSize = 10,
49
+ selectionContent,
44
50
  showZoomAllButton = true,
45
51
  gridAvailableSteps = _common.defaultGridAvailableSteps,
46
52
  getMomentFormatFunction = _common.defaultGetMomentFormatFunction,
47
53
  getNewMomentFunction = _common.defaultGetNewMomentFunction,
48
54
  goalGridWidthPx = 60,
49
- minSelectionSize = 10,
50
55
  minLanesCount,
51
56
  lanesSource,
52
57
  unmatchedLanesToFront = true,
@@ -77,23 +82,43 @@ function BookingCalendar(props) {
77
82
  var _from$clone;
78
83
  return (0, _utils.generateGridItems)(from, till, step, width, gridAvailableSteps, goalGridWidthPx, from === null || from === void 0 ? void 0 : (_from$clone = from.clone()) === null || _from$clone === void 0 ? void 0 : _from$clone.startOf('day'));
79
84
  }, [from, till, step, width, gridAvailableSteps, goalGridWidthPx]);
80
- const onSelected = React.useCallback(data => {
85
+ const containerRef = React.useRef();
86
+ const onSelected = React.useCallback((data, e) => {
81
87
  if (!from || !till || !width || !onRangeChange) {
82
88
  return;
83
89
  }
84
- const screenSpaceStartX = Math.min(data.origin[0], data.target[0]);
85
- const screenSpaceEndX = Math.max(data.origin[0], data.target[0]);
90
+ const selectionLeft = Math.min(data.origin[0], data.target[0]);
91
+ const selectionRight = Math.max(data.origin[0], data.target[0]);
92
+ const selectionTop = Math.min(data.origin[1], data.target[1]);
93
+ const selectionBottom = Math.max(data.origin[1], data.target[1]);
86
94
  const durationMs = till.valueOf() - from.valueOf();
87
95
  const toTimeSpace = num => num / (width || 1) * durationMs;
88
- const timeSpaceStart = from.clone().add(toTimeSpace(screenSpaceStartX), 'ms');
89
- const timeSpaceEnd = from.clone().add(toTimeSpace(screenSpaceEndX), 'ms');
90
- onRangeChange({
91
- from: timeSpaceStart,
92
- till: timeSpaceEnd
93
- });
94
- }, [from, till, width, onRangeChange]);
96
+ const timeSpaceStart = from.clone().add(toTimeSpace(selectionLeft), 'ms');
97
+ const timeSpaceEnd = from.clone().add(toTimeSpace(selectionRight), 'ms');
98
+ if (onSelection) {
99
+ var _containerRef$current, _containerRef$current2;
100
+ const itemSelector = `.${_bookingCalendarLane.bookingCalendarLaneDefaultClasses.className}:not(.${_bookingCalendarLanesHeader.bookingCalendarLanesHeaderDefaultClasses.laneClassName}) > .${_bookingCalendarItem.bookingCalendarItemDefaultClasses.className}`;
101
+ const allItems = Array.from(containerRef === null || containerRef === void 0 ? void 0 : (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.querySelectorAll(itemSelector));
102
+ const selectionAreaBB = containerRef === null || containerRef === void 0 ? void 0 : (_containerRef$current2 = containerRef.current) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.querySelector(`.${_classes2.bookingCalendarSelectionDefaultClasses.root}`).getBoundingClientRect();
103
+ const selectedItems = allItems.filter(item => {
104
+ const itemBB = item.getBoundingClientRect();
105
+ const itemLeft = itemBB.left - selectionAreaBB.left;
106
+ const itemTop = itemBB.top - selectionAreaBB.top;
107
+ const itemRight = itemBB.right - selectionAreaBB.left;
108
+ const itemBottom = itemBB.bottom - selectionAreaBB.top;
109
+ // check if the item rectangle is contained or intersects or overlaps with the selection rectangle
110
+ return itemLeft < selectionRight && itemRight > selectionLeft && itemTop < selectionBottom && itemBottom > selectionTop;
111
+ });
112
+ const selectedIds = selectedItems.map(item => item.getAttribute('data-id'));
113
+ onSelection(bookings === null || bookings === void 0 ? void 0 : bookings.filter(b => {
114
+ var _b$id;
115
+ return selectedIds.includes((_b$id = b.id) === null || _b$id === void 0 ? void 0 : _b$id.toString());
116
+ }), timeSpaceStart, timeSpaceEnd, e);
117
+ }
118
+ }, [from, till, width, onRangeChange, onSelection, onSelection ? bookings : null]);
95
119
  return /*#__PURE__*/React.createElement("div", {
96
- className: (0, _classnames.default)(_classes.bookingCalendarDefaultClasses.className, className)
120
+ className: (0, _classnames.default)(_classes.bookingCalendarDefaultClasses.className, className),
121
+ ref: containerRef
97
122
  }, /*#__PURE__*/React.createElement(BookingCalendarControls, _extends({}, controlsClasses, {
98
123
  items: bookings,
99
124
  from: from,
@@ -120,7 +145,7 @@ function BookingCalendar(props) {
120
145
  dataRowsCount: lanes.length,
121
146
  onSelected: onSelected,
122
147
  minSelectionSize: minSelectionSize
123
- }), /*#__PURE__*/React.createElement("div", {
148
+ }, selectionContent), /*#__PURE__*/React.createElement("div", {
124
149
  className: (0, _classnames.default)(_classes.bookingCalendarDefaultClasses.lanesHeaderHeaderContainerClassName, lanesHeaderHeaderContainerClassName)
125
150
  }, bookingCalendarTopLeftHeader), /*#__PURE__*/React.createElement("div", {
126
151
  className: (0, _classnames.default)(_classes.bookingCalendarDefaultClasses.lanesHeaderContainerClassName, lanesHeaderContainerClassName),
@@ -1 +1 @@
1
- {"version":3,"file":"BookingCalendar.js","names":["React","_interopRequireWildcard","require","_classes","_classnames","_interopRequireDefault","_common","_BookingCalendarControls","_utils","_BookingCalendarLane","_moment","_BookingCalendarGrid","_bookingCalendarLaneHeader","_bookingCalendarLanesHeader","_bookingCalendarDatePicker","_BookingCalendarTimeAxis","_reactCoolDimensions","_BookingCalendarSelection","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","defaultStep","moment","duration","BookingCalendar","props","_entry$target","bookings","className","laneContainerClassName","laneHeaderContainerClassName","lanesHeaderContainerClassName","lanesHeaderHeaderContainerClassName","controlsClasses","tableClassName","from","till","onRangeChange","step","showGrid","showSelection","showZoomAllButton","gridAvailableSteps","defaultGridAvailableSteps","getMomentFormatFunction","defaultGetMomentFormatFunction","getNewMomentFunction","defaultGetNewMomentFunction","goalGridWidthPx","minSelectionSize","minLanesCount","lanesSource","unmatchedLanesToFront","filterBookingsToZoom","zoomLevels","BookingCalendarControls","DefaultBookingCalendarControls","BookingCalendarItem","BookingCalendarLane","DefaultBookingCalendarLane","BookingCalendarRenderItem","BookingCalendarGrid","DefaultBookingCalendarGrid","BookingCalendarLaneHeader","DefaultBookingCalendarLaneHeader","BookingCalendarLanesHeader","DefaultBookingCalendarLanesHeader","BookingCalendarDatePicker","DefaultBookingCalendarDatePicker","bookingCalendarTopLeftHeader","filteringButton","children","lanes","useMemo","splitBookingsToLanes","observe","entry","useDimensions","width","scrollWidth","items","gridItems","bestStep","_from$clone","generateGridItems","clone","startOf","onSelected","useCallback","data","screenSpaceStartX","Math","min","origin","screenSpaceEndX","max","durationMs","valueOf","toTimeSpace","num","timeSpaceStart","add","timeSpaceEnd","createElement","classNames","bookingCalendarDefaultClasses","bookingCalendarDatePicker","Fragment","dataRowsCount","ref","map","lane","laneIndex","LaneBookingCalendarLaneHeader","LaneBookingCalendarLane","rowClassName","laneKey","BookingCalendarTimeAxis"],"sources":["../../../src/lib/components/bookingCalendar/BookingCalendar.tsx"],"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 defaultGetNewMomentFunction,\r\n defaultGridAvailableSteps,\r\n GetMomentFormatFunctionType,\r\n ZoomLevel,\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, { Moment, 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 { 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<T extends BookingCalendarItemT, 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 showZoomAllButton?: boolean;\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 unmatchedLanesToFront?: boolean;\r\n children?: React.ReactNode;\r\n bookingCalendarTopLeftHeader?: React.ReactNode;\r\n filteringButton?: React.ReactNode;\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 = moment.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 showZoomAllButton = 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 unmatchedLanesToFront = true,\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 bookingCalendarTopLeftHeader,\r\n filteringButton,\r\n children,\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 unmatchedLanesToFront\r\n ),\r\n [bookings, from, minLanesCount, lanesSource, unmatchedLanesToFront]\r\n );\r\n const { observe, entry } = useDimensions<HTMLDivElement>();\r\n const width = entry?.target?.scrollWidth ?? 0;\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 filteringButton={filteringButton}\r\n showZoomAllButton={showZoomAllButton}\r\n bookingCalendarDatePicker={\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 </>\r\n }\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 items={gridItems}\r\n dataRowsCount={lanes.length}\r\n width={width}\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 {bookingCalendarTopLeftHeader}\r\n </div>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.lanesHeaderContainerClassName,\r\n lanesHeaderContainerClassName\r\n )}\r\n ref={observe}\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 {children}\r\n </div>\r\n );\r\n}\r\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAIA,IAAAE,WAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AAUA,IAAAK,wBAAA,GAAAL,OAAA;AAIA,IAAAM,MAAA,GAAAN,OAAA;AAKA,IAAAO,oBAAA,GAAAP,OAAA;AAIA,IAAAQ,OAAA,GAAAL,sBAAA,CAAAH,OAAA;AAGA,IAAAS,oBAAA,GAAAT,OAAA;AAIA,IAAAU,0BAAA,GAAAV,OAAA;AAIA,IAAAW,2BAAA,GAAAX,OAAA;AAIA,IAAAY,0BAAA,GAAAZ,OAAA;AAIA,IAAAa,wBAAA,GAAAb,OAAA;AACA,IAAAc,oBAAA,GAAAX,sBAAA,CAAAH,OAAA;AACA,IAAAe,yBAAA,GAAAZ,sBAAA,CAAAH,OAAA;AAE6D,SAAAG,uBAAAa,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAArB,wBAAAiB,GAAA,EAAAI,WAAA,SAAAA,WAAA,IAAAJ,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAQ,KAAA,GAAAL,wBAAA,CAAAC,WAAA,OAAAI,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,CAAAT,OAAA,GAAAF,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AAAA,SAAAW,SAAA,IAAAA,QAAA,GAAAT,MAAA,CAAAU,MAAA,GAAAV,MAAA,CAAAU,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAV,GAAA,IAAAa,MAAA,QAAAhB,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAU,MAAA,EAAAb,GAAA,KAAAS,MAAA,CAAAT,GAAA,IAAAa,MAAA,CAAAb,GAAA,gBAAAS,MAAA,YAAAH,QAAA,CAAAQ,KAAA,OAAAH,SAAA;AA+C7D,MAAMI,WAAW,GAAGC,eAAM,CAACC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC;AAEtC,SAASC,eAAeA,CAC7BC,KAAyC,EACzC;EAAA,IAAAC,aAAA;EACA,MAAM;IACJC,QAAQ;IACRC,SAAS;IACTC,sBAAsB;IACtBC,4BAA4B;IAC5BC,6BAA6B;IAC7BC,mCAAmC;IACnCC,eAAe;IACfC,cAAc;IACdC,IAAI;IACJC,IAAI;IACJC,aAAa;IACbC,IAAI,GAAGjB,WAAW;IAClBkB,QAAQ,GAAG,IAAI;IACfC,aAAa,GAAG,IAAI;IACpBC,iBAAiB,GAAG,IAAI;IACxBC,kBAAkB,GAAGC,iCAAyB;IAC9CC,uBAAuB,GAAGC,sCAA8B;IACxDC,oBAAoB,GAAGC,mCAA2B;IAClDC,eAAe,GAAG,EAAE;IACpBC,gBAAgB,GAAG,EAAE;IACrBC,aAAa;IACbC,WAAW;IACXC,qBAAqB,GAAG,IAAI;IAC5BC,oBAAoB;IACpBC,UAAU;IACVC,uBAAuB,GAAGC,gDAA8B;IACxDC,mBAAmB;IACnBC,mBAAmB,GAAGC,wCAA0B;IAChDC,yBAAyB;IACzBC,mBAAmB,GAAGC,wCAA0B;IAChDC,yBAAyB,GAAGC,oDAAgC;IAC5DC,0BAA0B,GAAGC,sDAAiC;IAC9DC,yBAAyB,GAAGC,oDAAgC;IAC5DC,4BAA4B;IAC5BC,eAAe;IACfC;EACF,CAAC,GAAG9C,KAAK;EACT,MAAM+C,KAAK,GAAGpG,KAAK,CAACqG,OAAO,CACzB,MACE,IAAAC,2BAAoB,EAClB/C,QAAQ,EACRQ,IAAI,EACJe,aAAa,EACbC,WAAW,EACXC,qBACF,CAAC,EACH,CAACzB,QAAQ,EAAEQ,IAAI,EAAEe,aAAa,EAAEC,WAAW,EAAEC,qBAAqB,CACpE,CAAC;EACD,MAAM;IAAEuB,OAAO;IAAEC;EAAM,CAAC,GAAG,IAAAC,4BAAa,EAAiB,CAAC;EAC1D,MAAMC,KAAK,GAAG,CAAAF,KAAK,aAALA,KAAK,wBAAAlD,aAAA,GAALkD,KAAK,CAAE7D,MAAM,cAAAW,aAAA,uBAAbA,aAAA,CAAeqD,WAAW,KAAI,CAAC;EAC7C,MAAM;IAAEC,KAAK,EAAEC,SAAS;IAAEC;EAAS,CAAC,GAAG9G,KAAK,CAACqG,OAAO,CAClD;IAAA,IAAAU,WAAA;IAAA,OACE,IAAAC,wBAAiB,EACfjD,IAAI,EACJC,IAAI,EACJE,IAAI,EACJwC,KAAK,EACLpC,kBAAkB,EAClBM,eAAe,EACfb,IAAI,aAAJA,IAAI,wBAAAgD,WAAA,GAAJhD,IAAI,CAAEkD,KAAK,CAAC,CAAC,cAAAF,WAAA,uBAAbA,WAAA,CAAeG,OAAO,CAAC,KAAK,CAC9B,CAAC;EAAA,GACH,CAACnD,IAAI,EAAEC,IAAI,EAAEE,IAAI,EAAEwC,KAAK,EAAEpC,kBAAkB,EAAEM,eAAe,CAC/D,CAAC;EACD,MAAMuC,UAAU,GAAGnH,KAAK,CAACoH,WAAW,CACjCC,IAAkC,IAAK;IACtC,IAAI,CAACtD,IAAI,IAAI,CAACC,IAAI,IAAI,CAAC0C,KAAK,IAAI,CAACzC,aAAa,EAAE;MAC9C;IACF;IACA,MAAMqD,iBAAiB,GAAGC,IAAI,CAACC,GAAG,CAACH,IAAI,CAACI,MAAM,CAAC,CAAC,CAAC,EAAEJ,IAAI,CAAC1E,MAAM,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM+E,eAAe,GAAGH,IAAI,CAACI,GAAG,CAACN,IAAI,CAACI,MAAM,CAAC,CAAC,CAAC,EAAEJ,IAAI,CAAC1E,MAAM,CAAC,CAAC,CAAC,CAAC;IAChE,MAAMiF,UAAU,GAAG5D,IAAI,CAAC6D,OAAO,CAAC,CAAC,GAAG9D,IAAI,CAAC8D,OAAO,CAAC,CAAC;IAClD,MAAMC,WAAW,GAAIC,GAAW,IAAMA,GAAG,IAAIrB,KAAK,IAAI,CAAC,CAAC,GAAIkB,UAAU;IACtE,MAAMI,cAAc,GAAGjE,IAAI,CACxBkD,KAAK,CAAC,CAAC,CACPgB,GAAG,CAACH,WAAW,CAACR,iBAAiB,CAAC,EAAE,IAAI,CAAC;IAC5C,MAAMY,YAAY,GAAGnE,IAAI,CAACkD,KAAK,CAAC,CAAC,CAACgB,GAAG,CAACH,WAAW,CAACJ,eAAe,CAAC,EAAE,IAAI,CAAC;IACzEzD,aAAa,CAAC;MAAEF,IAAI,EAAEiE,cAAc;MAAEhE,IAAI,EAAEkE;IAAa,CAAC,CAAC;EAC7D,CAAC,EACD,CAACnE,IAAI,EAAEC,IAAI,EAAE0C,KAAK,EAAEzC,aAAa,CACnC,CAAC;EACD,oBACEjE,KAAA,CAAAmI,aAAA;IACE3E,SAAS,EAAE,IAAA4E,mBAAU,EAACC,sCAA6B,CAAC7E,SAAS,EAAEA,SAAS;EAAE,gBAE1ExD,KAAA,CAAAmI,aAAA,CAAChD,uBAAuB,EAAA3C,QAAA,KAClBqB,eAAe;IACnB+C,KAAK,EAAErD,QAAS;IAChBQ,IAAI,EAAEA,IAAK;IACXC,IAAI,EAAEA,IAAK;IACXC,aAAa,EAAEA,aAAc;IAC7BC,IAAI,EAAEA,IAAK;IACXe,oBAAoB,EAAEA,oBAAqB;IAC3CC,UAAU,EAAEA,UAAW;IACvBgB,eAAe,EAAEA,eAAgB;IACjC7B,iBAAiB,EAAEA,iBAAkB;IACrCiE,yBAAyB,eACvBtI,KAAA,CAAAmI,aAAA,CAAAnI,KAAA,CAAAuI,QAAA,QACG,OAAOxC,yBAAyB,KAAK,UAAU,gBAC9C/F,KAAA,CAAAmI,aAAA,CAACpC,yBAAyB;MACxBhC,IAAI,EAAEA,IAAK;MACXC,IAAI,EAAEA,IAAK;MACXC,aAAa,EAAEA,aAAc;MAC7BS,oBAAoB,EAAEA;IAAqB,CAC5C,CAAC,GAEFqB,yBAEF;EACH,EACF,CAAC,eACF/F,KAAA,CAAAmI,aAAA;IACE3E,SAAS,EAAE,IAAA4E,mBAAU,EACnBC,sCAA6B,CAACvE,cAAc,EAC5CA,cACF;EAAE,GAEDK,QAAQ,iBACPnE,KAAA,CAAAmI,aAAA,CAAC1C,mBAAmB;IAClBmB,KAAK,EAAEC,SAAU;IACjB2B,aAAa,EAAEpC,KAAK,CAACtD,MAAO;IAC5B4D,KAAK,EAAEA;EAAM,CACd,CACF,EACAtC,aAAa,iBACZpE,KAAA,CAAAmI,aAAA,CAAClH,yBAAA,CAAAG,OAAwB;IACvBoH,aAAa,EAAEpC,KAAK,CAACtD,MAAO;IAC5BqE,UAAU,EAAEA,UAAW;IACvBtC,gBAAgB,EAAEA;EAAiB,CACpC,CACF,eACD7E,KAAA,CAAAmI,aAAA;IACE3E,SAAS,EAAE,IAAA4E,mBAAU,EACnBC,sCAA6B,CAACzE,mCAAmC,EACjEA,mCACF;EAAE,GAEDqC,4BACE,CAAC,eACNjG,KAAA,CAAAmI,aAAA;IACE3E,SAAS,EAAE,IAAA4E,mBAAU,EACnBC,sCAA6B,CAAC1E,6BAA6B,EAC3DA,6BACF,CAAE;IACF8E,GAAG,EAAElC;EAAQ,gBAEbvG,KAAA,CAAAmI,aAAA,CAACtC,0BAA0B,EAAArD,QAAA,KACrBqB,eAAe;IACnBE,IAAI,EAAEA,IAAK;IACXC,IAAI,EAAEA,IAAK;IACXC,aAAa,EAAEA,aAAc;IAC7BC,IAAI,EAAEA;EAAK,EACZ,CACE,CAAC,EAELkC,KAAK,CAACsC,GAAG,CAAC,CAACC,IAAI,EAAEC,SAAS,KAAK;IAC9B,MAAMC,6BAA6B,GACjCF,IAAI,CAAChD,yBAAyB,IAAIA,yBAAyB;IAC7D,MAAMmD,uBAAuB,GAC3BH,IAAI,CAACrD,mBAAmB,IAAIA,mBAAmB;IACjD,oBACEtF,KAAA,CAAAmI,aAAA,CAACnI,KAAK,CAACuI,QAAQ;MAACrG,GAAG,EAAE0G;IAAU,gBAC7B5I,KAAA,CAAAmI,aAAA;MACE3E,SAAS,EAAE,IAAA4E,mBAAU,EACnBC,sCAA6B,CAAC3E,4BAA4B,EAC1DA,4BAA4B,EAC5BiF,IAAI,CAACI,YAAY,EACjB;QACE,CAAE,GAAEV,sCAA6B,CAAC3E,4BAA6B,QAAO,GACpEkF,SAAS,KAAKxC,KAAK,CAACtD,MAAM,GAAG,CAAC;QAChC,CAAE,GAAEuF,sCAA6B,CAAC3E,4BAA6B,SAAQ,GACrEkF,SAAS,KAAK;MAClB,CACF;IAAE,gBAEF5I,KAAA,CAAAmI,aAAA,CAACU,6BAA6B;MAC5BG,OAAO,EAAEL,IAAI,CAACK,OAAO,IAAIJ,SAAU;MACnCvB,IAAI,EAAEsB,IAAI,CAACtB;IAAK,CACjB,CACE,CAAC,eACNrH,KAAA,CAAAmI,aAAA;MACE3E,SAAS,EAAE,IAAA4E,mBAAU,EACnBC,sCAA6B,CAAC5E,sBAAsB,EACpDA,sBAAsB,EACtBkF,IAAI,CAACI,YAAY,EACjB;QACE,CAAE,GAAEV,sCAA6B,CAAC5E,sBAAuB,QAAO,GAC9DmF,SAAS,KAAKxC,KAAK,CAACtD,MAAM,GAAG,CAAC;QAChC,CAAE,GAAEuF,sCAA6B,CAAC5E,sBAAuB,SAAQ,GAC/DmF,SAAS,KAAK;MAClB,CACF;IAAE,gBAEF5I,KAAA,CAAAmI,aAAA,CAACW,uBAAuB;MACtBF,SAAS,EAAEA,SAAU;MACrBhC,KAAK,EAAE+B,IAAI,CAAC/B,KAAM;MAClB7C,IAAI,EAAEA,IAAK;MACXC,IAAI,EAAEA,IAAK;MACXqB,mBAAmB,EACjBsD,IAAI,CAACtD,mBAAmB,IAAIA,mBAC7B;MACDG,yBAAyB,EACvBmD,IAAI,CAACnD,yBAAyB,IAAIA,yBACnC;MACDtB,IAAI,EAAEA;IAAK,CACZ,CACE,CACS,CAAC;EAErB,CAAC,CAAC,eACFlE,KAAA,CAAAmI,aAAA,YAAM,CAAC,eACPnI,KAAA,CAAAmI,aAAA,2BACEnI,KAAA,CAAAmI,aAAA,CAACpH,wBAAA,CAAAkI,uBAAuB;IACtBrC,KAAK,EAAEC,SAAU;IACjBC,QAAQ,EAAEA,QAAS;IACnBtC,uBAAuB,EAAEA;EAAwB,CAClD,CACE,CACF,CAAC,EACL2B,QACE,CAAC;AAEV"}
1
+ {"version":3,"file":"BookingCalendar.js","names":["React","_interopRequireWildcard","require","_classes","_classnames","_interopRequireDefault","_common","_BookingCalendarControls","_utils","_BookingCalendarLane","_moment","_bookingCalendarItem","_BookingCalendarGrid","_bookingCalendarLaneHeader","_bookingCalendarLanesHeader","_bookingCalendarDatePicker","_BookingCalendarTimeAxis","_reactCoolDimensions","_BookingCalendarSelection","_bookingCalendarLane","_classes2","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","defaultStep","moment","duration","BookingCalendar","props","_entry$target","bookings","className","laneContainerClassName","laneHeaderContainerClassName","lanesHeaderContainerClassName","lanesHeaderHeaderContainerClassName","controlsClasses","tableClassName","from","till","onRangeChange","step","showGrid","showSelection","onSelection","minSelectionSize","selectionContent","showZoomAllButton","gridAvailableSteps","defaultGridAvailableSteps","getMomentFormatFunction","defaultGetMomentFormatFunction","getNewMomentFunction","defaultGetNewMomentFunction","goalGridWidthPx","minLanesCount","lanesSource","unmatchedLanesToFront","filterBookingsToZoom","zoomLevels","BookingCalendarControls","DefaultBookingCalendarControls","BookingCalendarItem","BookingCalendarLane","DefaultBookingCalendarLane","BookingCalendarRenderItem","BookingCalendarGrid","DefaultBookingCalendarGrid","BookingCalendarLaneHeader","DefaultBookingCalendarLaneHeader","BookingCalendarLanesHeader","DefaultBookingCalendarLanesHeader","BookingCalendarDatePicker","DefaultBookingCalendarDatePicker","bookingCalendarTopLeftHeader","filteringButton","children","lanes","useMemo","splitBookingsToLanes","observe","entry","useDimensions","width","scrollWidth","items","gridItems","bestStep","_from$clone","generateGridItems","clone","startOf","containerRef","useRef","onSelected","useCallback","data","e","selectionLeft","Math","min","origin","selectionRight","max","selectionTop","selectionBottom","durationMs","valueOf","toTimeSpace","num","timeSpaceStart","add","timeSpaceEnd","_containerRef$current","_containerRef$current2","itemSelector","bookingCalendarLaneDefaultClasses","bookingCalendarLanesHeaderDefaultClasses","laneClassName","bookingCalendarItemDefaultClasses","allItems","Array","current","querySelectorAll","selectionAreaBB","querySelector","bookingCalendarSelectionDefaultClasses","root","getBoundingClientRect","selectedItems","filter","item","itemBB","itemLeft","left","itemTop","top","itemRight","right","itemBottom","bottom","selectedIds","map","getAttribute","b","_b$id","includes","id","toString","createElement","classNames","bookingCalendarDefaultClasses","ref","bookingCalendarDatePicker","Fragment","dataRowsCount","lane","laneIndex","LaneBookingCalendarLaneHeader","LaneBookingCalendarLane","rowClassName","laneKey","BookingCalendarTimeAxis"],"sources":["../../../src/lib/components/bookingCalendar/BookingCalendar.tsx"],"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 defaultGetNewMomentFunction,\r\n defaultGridAvailableSteps,\r\n GetMomentFormatFunctionType,\r\n ZoomLevel,\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, { Moment, Duration } from 'moment';\r\nimport {\r\n BookingCalendarItemProps,\r\n bookingCalendarItemDefaultClasses,\r\n} 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 bookingCalendarLanesHeaderDefaultClasses,\r\n} from './bookingCalendarLanesHeader';\r\nimport {\r\n BookingCalendarDatePicker as DefaultBookingCalendarDatePicker,\r\n BookingCalendarDatePickerProps,\r\n} from './bookingCalendarDatePicker';\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\nimport { bookingCalendarLaneDefaultClasses } from './bookingCalendarLane';\r\nimport { bookingCalendarSelectionDefaultClasses } from './bookingCalendarSelection/classes';\r\n\r\nexport interface BookingCalendarProps<T extends BookingCalendarItemT, 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 showZoomAllButton?: boolean;\r\n showGrid?: boolean;\r\n gridAvailableSteps?: Duration[];\r\n goalGridWidthPx?: number;\r\n minLanesCount?: number;\r\n lanesSource?: LaneSourceData<T, TLaneData>[];\r\n unmatchedLanesToFront?: boolean;\r\n children?: React.ReactNode;\r\n bookingCalendarTopLeftHeader?: React.ReactNode;\r\n filteringButton?: React.ReactNode;\r\n\r\n zoomLevels?: ZoomLevel[];\r\n filterBookingsToZoom?: (booking: T) => boolean;\r\n\r\n showSelection?: boolean;\r\n minSelectionSize?: number;\r\n onSelection?: (\r\n items: T[],\r\n from: Moment,\r\n till: Moment,\r\n e: React.MouseEvent<HTMLElement>\r\n ) => void;\r\n selectionContent?: React.ReactNode;\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 = moment.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 onSelection,\r\n minSelectionSize = 10,\r\n selectionContent,\r\n showZoomAllButton = true,\r\n gridAvailableSteps = defaultGridAvailableSteps,\r\n getMomentFormatFunction = defaultGetMomentFormatFunction,\r\n getNewMomentFunction = defaultGetNewMomentFunction,\r\n goalGridWidthPx = 60,\r\n minLanesCount,\r\n lanesSource,\r\n unmatchedLanesToFront = true,\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 bookingCalendarTopLeftHeader,\r\n filteringButton,\r\n children,\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 unmatchedLanesToFront\r\n ),\r\n [bookings, from, minLanesCount, lanesSource, unmatchedLanesToFront]\r\n );\r\n const { observe, entry } = useDimensions<HTMLDivElement>();\r\n const width = entry?.target?.scrollWidth ?? 0;\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 containerRef = React.useRef<HTMLDivElement>();\r\n const onSelected = React.useCallback(\r\n (data: BookingCalendarSelectionData, e: React.MouseEvent<HTMLElement>) => {\r\n if (!from || !till || !width || !onRangeChange) {\r\n return;\r\n }\r\n const selectionLeft = Math.min(data.origin[0], data.target[0]);\r\n const selectionRight = Math.max(data.origin[0], data.target[0]);\r\n const selectionTop = Math.min(data.origin[1], data.target[1]);\r\n const selectionBottom = Math.max(data.origin[1], data.target[1]);\r\n const durationMs = till.valueOf() - from.valueOf();\r\n const toTimeSpace = (num: number) => (num / (width || 1)) * durationMs;\r\n const timeSpaceStart = from.clone().add(toTimeSpace(selectionLeft), 'ms');\r\n const timeSpaceEnd = from.clone().add(toTimeSpace(selectionRight), 'ms');\r\n if (onSelection) {\r\n const itemSelector = `.${bookingCalendarLaneDefaultClasses.className}:not(.${bookingCalendarLanesHeaderDefaultClasses.laneClassName}) > .${bookingCalendarItemDefaultClasses.className}`;\r\n const allItems = Array.from(\r\n containerRef?.current?.querySelectorAll(itemSelector)\r\n );\r\n const selectionAreaBB = containerRef?.current\r\n ?.querySelector(`.${bookingCalendarSelectionDefaultClasses.root}`)\r\n .getBoundingClientRect();\r\n const selectedItems = allItems.filter((item) => {\r\n const itemBB = item.getBoundingClientRect();\r\n const itemLeft = itemBB.left - selectionAreaBB.left;\r\n const itemTop = itemBB.top - selectionAreaBB.top;\r\n const itemRight = itemBB.right - selectionAreaBB.left;\r\n const itemBottom = itemBB.bottom - selectionAreaBB.top;\r\n // check if the item rectangle is contained or intersects or overlaps with the selection rectangle\r\n return (\r\n itemLeft < selectionRight &&\r\n itemRight > selectionLeft &&\r\n itemTop < selectionBottom &&\r\n itemBottom > selectionTop\r\n );\r\n });\r\n const selectedIds = selectedItems.map((item) =>\r\n item.getAttribute('data-id')\r\n );\r\n onSelection(\r\n bookings?.filter((b) => selectedIds.includes(b.id?.toString())),\r\n timeSpaceStart,\r\n timeSpaceEnd,\r\n e\r\n );\r\n }\r\n },\r\n [\r\n from,\r\n till,\r\n width,\r\n onRangeChange,\r\n onSelection,\r\n onSelection ? bookings : null,\r\n ]\r\n );\r\n return (\r\n <div\r\n className={classNames(bookingCalendarDefaultClasses.className, className)}\r\n ref={containerRef}\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 filteringButton={filteringButton}\r\n showZoomAllButton={showZoomAllButton}\r\n bookingCalendarDatePicker={\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 </>\r\n }\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 items={gridItems}\r\n dataRowsCount={lanes.length}\r\n width={width}\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 {selectionContent}\r\n </BookingCalendarSelection>\r\n )}\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.lanesHeaderHeaderContainerClassName,\r\n lanesHeaderHeaderContainerClassName\r\n )}\r\n >\r\n {bookingCalendarTopLeftHeader}\r\n </div>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.lanesHeaderContainerClassName,\r\n lanesHeaderContainerClassName\r\n )}\r\n ref={observe}\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 {children}\r\n </div>\r\n );\r\n}\r\n"],"mappings":"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"}
@@ -22,7 +22,8 @@ function BookingCalendarItem(props) {
22
22
  const style = React.useMemo(() => (0, _utils.getItemPositionStyle)(marginStart, width), [marginStart, width]);
23
23
  return /*#__PURE__*/React.createElement("div", {
24
24
  className: (0, _classnames.default)(_classes.bookingCalendarItemDefaultClasses.className, className),
25
- style: style
25
+ style: style,
26
+ "data-id": props.item.id
26
27
  }, /*#__PURE__*/React.createElement(BookingCalendarRenderItem, props));
27
28
  }
28
29
  //# sourceMappingURL=BookingCalendarItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BookingCalendarItem.js","names":["React","_interopRequireWildcard","require","_BookingCalendarRenderItem","_classnames","_interopRequireDefault","_utils","_classes","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","BookingCalendarItem","props","className","marginStart","width","BookingCalendarRenderItem","DefaultBookingCalendarRenderItem","style","useMemo","getItemPositionStyle","createElement","classNames","bookingCalendarItemDefaultClasses"],"sources":["../../../../src/lib/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport {\r\n BookingCalendarRenderItem as DefaultBookingCalendarRenderItem,\r\n BookingCalendarRenderItemProps,\r\n} from '../bookingCalendarRenderItem/BookingCalendarRenderItem';\r\nimport { BookingCalendarItemT } from '../common';\r\nimport classNames from 'classnames';\r\nimport { getItemPositionStyle } from './../utils';\r\nimport {\r\n BookingCalendarItemClasses,\r\n bookingCalendarItemDefaultClasses,\r\n} from './classes';\r\nimport { Duration, Moment } from 'moment';\r\n\r\nexport interface BookingCalendarItemBaseProps<T extends BookingCalendarItemT> {\r\n item: T;\r\n itemIndex: number;\r\n laneIndex: number;\r\n from: Moment;\r\n till: Moment;\r\n step: Duration;\r\n /**\r\n * Number between [0,1] that tells how far from previous item (or start) this item starts\r\n */\r\n marginStart: number;\r\n\r\n /**\r\n * Number between [0,1] that tells what part of the lane the item starts at\r\n */\r\n start: number;\r\n /**\r\n * Like start but can be negative (go offscreen)\r\n */\r\n realStart: number;\r\n /**\r\n * Actual start date shown on grid\r\n */\r\n realFrom: Moment;\r\n /**\r\n * Some part of the item was cut from the beginning\r\n */\r\n startIsCut: boolean;\r\n /**\r\n * Number between [0,1] that tells what part of the lane the item takes\r\n */\r\n width: number;\r\n /**\r\n * Number between [0,1] that tells what part of the lane the item ends at\r\n */\r\n end: number;\r\n /**\r\n * Like end but can be more than 1 (go offscreen)\r\n */\r\n realEnd: number;\r\n /**\r\n * Actual end date shown on grid\r\n */\r\n realTill: Moment;\r\n /**\r\n * Some part of the item was cut from the end\r\n */\r\n endIsCut: boolean;\r\n\r\n BookingCalendarRenderItem?: React.ComponentType<\r\n BookingCalendarRenderItemProps<T>\r\n >;\r\n}\r\n\r\nexport interface BookingCalendarItemProps<T extends BookingCalendarItemT>\r\n extends BookingCalendarItemClasses,\r\n BookingCalendarItemBaseProps<T> {}\r\n\r\nexport function BookingCalendarItem<T extends BookingCalendarItemT>(\r\n props: BookingCalendarItemProps<T>\r\n) {\r\n const {\r\n className,\r\n marginStart,\r\n width,\r\n BookingCalendarRenderItem = DefaultBookingCalendarRenderItem,\r\n } = props;\r\n const style = React.useMemo(() => getItemPositionStyle(marginStart, width), [\r\n marginStart,\r\n width,\r\n ]);\r\n return (\r\n <div\r\n className={classNames(\r\n bookingCalendarItemDefaultClasses.className,\r\n className\r\n )}\r\n style={style}\r\n >\r\n <BookingCalendarRenderItem {...props} />\r\n </div>\r\n );\r\n}\r\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,0BAAA,GAAAD,OAAA;AAKA,IAAAE,WAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AAGmB,SAAAG,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAX,wBAAAO,GAAA,EAAAI,WAAA,SAAAA,WAAA,IAAAJ,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAQ,KAAA,GAAAL,wBAAA,CAAAC,WAAA,OAAAI,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,CAAAT,OAAA,GAAAF,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AA6DZ,SAASW,mBAAmBA,CACjCC,KAAkC,EAClC;EACA,MAAM;IACJC,SAAS;IACTC,WAAW;IACXC,KAAK;IACLC,yBAAyB,GAAGC;EAC9B,CAAC,GAAGL,KAAK;EACT,MAAMM,KAAK,GAAGrC,KAAK,CAACsC,OAAO,CAAC,MAAM,IAAAC,2BAAoB,EAACN,WAAW,EAAEC,KAAK,CAAC,EAAE,CAC1ED,WAAW,EACXC,KAAK,CACN,CAAC;EACF,oBACElC,KAAA,CAAAwC,aAAA;IACER,SAAS,EAAE,IAAAS,mBAAU,EACnBC,0CAAiC,CAACV,SAAS,EAC3CA,SACF,CAAE;IACFK,KAAK,EAAEA;EAAM,gBAEbrC,KAAA,CAAAwC,aAAA,CAACL,yBAAyB,EAAKJ,KAAQ,CACpC,CAAC;AAEV"}
1
+ {"version":3,"file":"BookingCalendarItem.js","names":["React","_interopRequireWildcard","require","_BookingCalendarRenderItem","_classnames","_interopRequireDefault","_utils","_classes","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","BookingCalendarItem","props","className","marginStart","width","BookingCalendarRenderItem","DefaultBookingCalendarRenderItem","style","useMemo","getItemPositionStyle","createElement","classNames","bookingCalendarItemDefaultClasses","item","id"],"sources":["../../../../src/lib/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport {\r\n BookingCalendarRenderItem as DefaultBookingCalendarRenderItem,\r\n BookingCalendarRenderItemProps,\r\n} from '../bookingCalendarRenderItem/BookingCalendarRenderItem';\r\nimport { BookingCalendarItemT } from '../common';\r\nimport classNames from 'classnames';\r\nimport { getItemPositionStyle } from './../utils';\r\nimport {\r\n BookingCalendarItemClasses,\r\n bookingCalendarItemDefaultClasses,\r\n} from './classes';\r\nimport { Duration, Moment } from 'moment';\r\n\r\nexport interface BookingCalendarItemBaseProps<T extends BookingCalendarItemT> {\r\n item: T;\r\n itemIndex: number;\r\n laneIndex: number;\r\n from: Moment;\r\n till: Moment;\r\n step: Duration;\r\n /**\r\n * Number between [0,1] that tells how far from previous item (or start) this item starts\r\n */\r\n marginStart: number;\r\n\r\n /**\r\n * Number between [0,1] that tells what part of the lane the item starts at\r\n */\r\n start: number;\r\n /**\r\n * Like start but can be negative (go offscreen)\r\n */\r\n realStart: number;\r\n /**\r\n * Actual start date shown on grid\r\n */\r\n realFrom: Moment;\r\n /**\r\n * Some part of the item was cut from the beginning\r\n */\r\n startIsCut: boolean;\r\n /**\r\n * Number between [0,1] that tells what part of the lane the item takes\r\n */\r\n width: number;\r\n /**\r\n * Number between [0,1] that tells what part of the lane the item ends at\r\n */\r\n end: number;\r\n /**\r\n * Like end but can be more than 1 (go offscreen)\r\n */\r\n realEnd: number;\r\n /**\r\n * Actual end date shown on grid\r\n */\r\n realTill: Moment;\r\n /**\r\n * Some part of the item was cut from the end\r\n */\r\n endIsCut: boolean;\r\n\r\n BookingCalendarRenderItem?: React.ComponentType<\r\n BookingCalendarRenderItemProps<T>\r\n >;\r\n}\r\n\r\nexport interface BookingCalendarItemProps<T extends BookingCalendarItemT>\r\n extends BookingCalendarItemClasses,\r\n BookingCalendarItemBaseProps<T> {}\r\n\r\nexport function BookingCalendarItem<T extends BookingCalendarItemT>(\r\n props: BookingCalendarItemProps<T>\r\n) {\r\n const {\r\n className,\r\n marginStart,\r\n width,\r\n BookingCalendarRenderItem = DefaultBookingCalendarRenderItem,\r\n } = props;\r\n const style = React.useMemo(\r\n () => getItemPositionStyle(marginStart, width),\r\n [marginStart, width]\r\n );\r\n return (\r\n <div\r\n className={classNames(\r\n bookingCalendarItemDefaultClasses.className,\r\n className\r\n )}\r\n style={style}\r\n data-id={props.item.id}\r\n >\r\n <BookingCalendarRenderItem {...props} />\r\n </div>\r\n );\r\n}\r\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,0BAAA,GAAAD,OAAA;AAKA,IAAAE,WAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AAGmB,SAAAG,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAX,wBAAAO,GAAA,EAAAI,WAAA,SAAAA,WAAA,IAAAJ,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAQ,KAAA,GAAAL,wBAAA,CAAAC,WAAA,OAAAI,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,CAAAT,OAAA,GAAAF,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AA6DZ,SAASW,mBAAmBA,CACjCC,KAAkC,EAClC;EACA,MAAM;IACJC,SAAS;IACTC,WAAW;IACXC,KAAK;IACLC,yBAAyB,GAAGC;EAC9B,CAAC,GAAGL,KAAK;EACT,MAAMM,KAAK,GAAGrC,KAAK,CAACsC,OAAO,CACzB,MAAM,IAAAC,2BAAoB,EAACN,WAAW,EAAEC,KAAK,CAAC,EAC9C,CAACD,WAAW,EAAEC,KAAK,CACrB,CAAC;EACD,oBACElC,KAAA,CAAAwC,aAAA;IACER,SAAS,EAAE,IAAAS,mBAAU,EACnBC,0CAAiC,CAACV,SAAS,EAC3CA,SACF,CAAE;IACFK,KAAK,EAAEA,KAAM;IACb,WAASN,KAAK,CAACY,IAAI,CAACC;EAAG,gBAEvB5C,KAAA,CAAAwC,aAAA,CAACL,yBAAyB,EAAKJ,KAAQ,CACpC,CAAC;AAEV"}
@@ -13,7 +13,7 @@ export interface BookingCalendarSelectionProps {
13
13
  onSelected?: (data: {
14
14
  origin: BookingCalendarSelectionCoordinates;
15
15
  target: BookingCalendarSelectionCoordinates;
16
- }) => void;
16
+ }, e: React.MouseEvent<HTMLElement>) => void;
17
17
  dataRowsCount: number;
18
18
  minSelectionSize: number;
19
19
  children?: React.ReactNode;
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var React = _interopRequireWildcard(require("react"));
8
+ var _classes = require("./classes");
8
9
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
9
10
  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; }
10
11
  class BookingCalendarSelection extends React.Component {
@@ -82,7 +83,7 @@ class BookingCalendarSelection extends React.Component {
82
83
  (_this$props$onSelecte = (_this$props = this.props).onSelected) === null || _this$props$onSelecte === void 0 ? void 0 : _this$props$onSelecte.call(_this$props, {
83
84
  origin: this.state.selectionBoxOrigin,
84
85
  target: this.state.selectionBoxTarget
85
- });
86
+ }, evt);
86
87
  }
87
88
  }
88
89
  handleMouseDown(e) {
@@ -124,18 +125,19 @@ class BookingCalendarSelection extends React.Component {
124
125
  render() {
125
126
  const baseStyle = {
126
127
  zIndex: 10,
127
- left: this.state.selectionBoxOrigin[0],
128
- top: this.state.selectionBoxOrigin[1],
128
+ left: Math.min(this.state.selectionBoxOrigin[0], this.state.selectionBoxTarget[0]),
129
+ top: Math.min(this.state.selectionBoxOrigin[1], this.state.selectionBoxTarget[1]),
129
130
  height: Math.abs(this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1] - 1),
130
131
  width: Math.abs(this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0] - 1),
131
- userSelect: 'none',
132
- transformOrigin: 'top left',
133
- transform: this.handleTransformBox()
132
+ userSelect: 'none'
133
+ // transformOrigin: 'top left',
134
+ // transform: this.handleTransformBox(),
134
135
  };
136
+
135
137
  const boxVisible = Math.sqrt(Math.pow(this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1], 2) + Math.pow(this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0], 2)) > this.props.minSelectionSize;
136
138
  return /*#__PURE__*/React.createElement("div", {
137
139
  ref: this.containerRef,
138
- className: "bookingCalendar__selection__container",
140
+ className: _classes.bookingCalendarSelectionDefaultClasses.root,
139
141
  style: {
140
142
  zIndex: this.state.selectionBox ? 99999 : undefined,
141
143
  gridRowEnd: `span ${this.props.dataRowsCount}`
@@ -145,9 +147,9 @@ class BookingCalendarSelection extends React.Component {
145
147
  onMouseMove: this.handleMouseMove,
146
148
  onMouseLeave: this.handleMouseLeave
147
149
  }, boxVisible && this.state.selectionBox && /*#__PURE__*/React.createElement("div", {
148
- className: `bookingCalendar__selection ${this.state.animation}`,
150
+ className: `${_classes.bookingCalendarSelectionDefaultClasses.selection} ${this.state.animation}`,
149
151
  style: baseStyle
150
- }), this.props.children);
152
+ }, this.props.children));
151
153
  }
152
154
  }
153
155
  exports.default = BookingCalendarSelection;
@@ -1 +1 @@
1
- {"version":3,"file":"BookingCalendarSelection.js","names":["React","_interopRequireWildcard","require","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","BookingCalendarSelection","Component","constructor","props","animationInProgress","containerRef","createRef","state","hold","selectionBox","selectionBoxOrigin","selectionBoxTarget","animation","handleMouseUp","bind","handleMouseDown","handleMouseMove","handleMouseLeave","handleTransformBox","evt","_this$props$onSelecte","_this$props","distance","Math","sqrt","pow","setState","setTimeout","minSelectionSize","onSelected","origin","target","e","_this$containerRef$cu","disabled","nativeEvent","button","clearTimeout","bb","current","getBoundingClientRect","pageX","x","pageY","y","_this$containerRef$cu2","_this$props$onSelecti","_this$props2","onSelecting","render","baseStyle","zIndex","left","top","height","abs","width","userSelect","transformOrigin","transform","boxVisible","createElement","ref","className","style","undefined","gridRowEnd","dataRowsCount","onMouseDown","onMouseUp","onMouseMove","onMouseLeave","children","exports"],"sources":["../../../../src/lib/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.tsx"],"sourcesContent":["import * as React from 'react';\r\n\r\nexport type BookingCalendarSelectionCoordinates = [number, number];\r\nexport interface BookingCalendarSelectionData {\r\n origin: BookingCalendarSelectionCoordinates;\r\n target: BookingCalendarSelectionCoordinates;\r\n}\r\nexport interface BookingCalendarSelectionProps {\r\n disabled?: boolean;\r\n onSelecting?: (data: {\r\n origin: BookingCalendarSelectionCoordinates;\r\n target: BookingCalendarSelectionCoordinates;\r\n }) => void;\r\n onSelected?: (data: {\r\n origin: BookingCalendarSelectionCoordinates;\r\n target: BookingCalendarSelectionCoordinates;\r\n }) => void;\r\n dataRowsCount: number;\r\n minSelectionSize: number;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport interface BookingCalendarSelectionState {\r\n selectionBoxOrigin: BookingCalendarSelectionCoordinates;\r\n selectionBoxTarget: BookingCalendarSelectionCoordinates;\r\n hold: boolean;\r\n animation: string;\r\n selectionBox: boolean;\r\n}\r\n\r\nexport default class BookingCalendarSelection extends React.Component<\r\n BookingCalendarSelectionProps,\r\n BookingCalendarSelectionState\r\n> {\r\n private animationInProgress: number;\r\n private containerRef: React.RefObject<HTMLDivElement>;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.animationInProgress = null;\r\n this.containerRef = React.createRef();\r\n this.state = {\r\n hold: false,\r\n selectionBox: false,\r\n selectionBoxOrigin: [0, 0],\r\n selectionBoxTarget: [0, 0],\r\n animation: '',\r\n };\r\n this.handleMouseUp = this.handleMouseUp.bind(this);\r\n this.handleMouseDown = this.handleMouseDown.bind(this);\r\n this.handleMouseMove = this.handleMouseMove.bind(this);\r\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\r\n }\r\n\r\n handleTransformBox() {\r\n const { selectionBoxOrigin, selectionBoxTarget } = this.state;\r\n if (\r\n selectionBoxOrigin[1] > selectionBoxTarget[1] &&\r\n selectionBoxOrigin[0] > selectionBoxTarget[0]\r\n ) {\r\n return 'scaleY(-1) scaleX(-1)';\r\n }\r\n\r\n if (selectionBoxOrigin[1] > selectionBoxTarget[1]) {\r\n return 'scaleY(-1)';\r\n }\r\n if (selectionBoxOrigin[0] > selectionBoxTarget[0]) {\r\n return 'scaleX(-1)';\r\n }\r\n return null;\r\n }\r\n\r\n handleMouseLeave(evt: React.MouseEvent<HTMLElement>) {\r\n /*if (this.state.hold) {\r\n this.setState({\r\n hold: false,\r\n animation: 'bookingCalendar__selection--fadeout',\r\n });\r\n this.animationInProgress = (setTimeout(() => {\r\n this.setState({\r\n selectionBox: false,\r\n animation: '',\r\n selectionBoxOrigin: [0, 0],\r\n selectionBoxTarget: [0, 0],\r\n });\r\n this.animationInProgress = null;\r\n }, 300) as unknown) as number;\r\n }*/\r\n }\r\n\r\n handleMouseUp(evt: React.MouseEvent<HTMLElement>) {\r\n if (this.state.hold) {\r\n const distance = Math.sqrt(\r\n Math.pow(\r\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1],\r\n 2\r\n ) +\r\n Math.pow(\r\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0],\r\n 2\r\n )\r\n );\r\n this.setState({\r\n hold: false,\r\n animation: 'bookingCalendar__selection--fadeout',\r\n });\r\n this.animationInProgress = setTimeout(() => {\r\n this.setState({\r\n selectionBox: false,\r\n animation: '',\r\n selectionBoxOrigin: [0, 0],\r\n selectionBoxTarget: [0, 0],\r\n });\r\n this.animationInProgress = null;\r\n }, 300) as unknown as number;\r\n if (distance < this.props.minSelectionSize) {\r\n return;\r\n }\r\n this.props.onSelected?.({\r\n origin: this.state.selectionBoxOrigin,\r\n target: this.state.selectionBoxTarget,\r\n });\r\n }\r\n }\r\n\r\n handleMouseDown(e: React.MouseEvent<HTMLDivElement>) {\r\n if (this.props.disabled || e.nativeEvent.button !== 0) {\r\n return;\r\n }\r\n clearTimeout(this.animationInProgress);\r\n this.animationInProgress = null;\r\n this.setState({ selectionBox: false, animation: '' });\r\n\r\n const bb = this.containerRef.current?.getBoundingClientRect();\r\n this.setState({\r\n hold: true,\r\n selectionBoxOrigin: [\r\n e.nativeEvent.pageX - bb.x,\r\n e.nativeEvent.pageY - bb.y,\r\n ],\r\n selectionBoxTarget: [\r\n e.nativeEvent.pageX - bb.x,\r\n e.nativeEvent.pageY - bb.y,\r\n ],\r\n });\r\n }\r\n\r\n private handleMouseMove(evt: React.MouseEvent<HTMLDivElement>) {\r\n if (this.state.hold && !this.state.selectionBox) {\r\n this.setState({ selectionBox: true });\r\n }\r\n if (this.state.selectionBox && !this.animationInProgress) {\r\n const bb = this.containerRef.current?.getBoundingClientRect();\r\n this.setState({\r\n selectionBoxTarget: [\r\n evt.nativeEvent.pageX - bb?.x,\r\n evt.nativeEvent.pageY - bb?.y,\r\n ],\r\n });\r\n\r\n this.props.onSelecting?.({\r\n origin: this.state.selectionBoxOrigin,\r\n target: this.state.selectionBoxTarget,\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const baseStyle: React.CSSProperties = {\r\n zIndex: 10,\r\n left: this.state.selectionBoxOrigin[0],\r\n top: this.state.selectionBoxOrigin[1],\r\n height: Math.abs(\r\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1] - 1\r\n ),\r\n width: Math.abs(\r\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0] - 1\r\n ),\r\n userSelect: 'none',\r\n transformOrigin: 'top left',\r\n transform: this.handleTransformBox(),\r\n };\r\n const boxVisible =\r\n Math.sqrt(\r\n Math.pow(\r\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1],\r\n 2\r\n ) +\r\n Math.pow(\r\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0],\r\n 2\r\n )\r\n ) > this.props.minSelectionSize;\r\n return (\r\n <div\r\n ref={this.containerRef}\r\n className=\"bookingCalendar__selection__container\"\r\n style={{\r\n zIndex: this.state.selectionBox ? 99999 : undefined,\r\n gridRowEnd: `span ${this.props.dataRowsCount}`,\r\n }}\r\n onMouseDown={this.handleMouseDown}\r\n onMouseUp={this.handleMouseUp}\r\n onMouseMove={this.handleMouseMove}\r\n onMouseLeave={this.handleMouseLeave}\r\n >\r\n {boxVisible && this.state.selectionBox && (\r\n <div\r\n className={`bookingCalendar__selection ${this.state.animation}`}\r\n style={baseStyle}\r\n />\r\n )}\r\n {this.props.children}\r\n </div>\r\n );\r\n }\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"BookingCalendarSelection.js","names":["React","_interopRequireWildcard","require","_classes","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","BookingCalendarSelection","Component","constructor","props","animationInProgress","containerRef","createRef","state","hold","selectionBox","selectionBoxOrigin","selectionBoxTarget","animation","handleMouseUp","bind","handleMouseDown","handleMouseMove","handleMouseLeave","handleTransformBox","evt","_this$props$onSelecte","_this$props","distance","Math","sqrt","pow","setState","setTimeout","minSelectionSize","onSelected","origin","target","e","_this$containerRef$cu","disabled","nativeEvent","button","clearTimeout","bb","current","getBoundingClientRect","pageX","x","pageY","y","_this$containerRef$cu2","_this$props$onSelecti","_this$props2","onSelecting","render","baseStyle","zIndex","left","min","top","height","abs","width","userSelect","boxVisible","createElement","ref","className","bookingCalendarSelectionDefaultClasses","root","style","undefined","gridRowEnd","dataRowsCount","onMouseDown","onMouseUp","onMouseMove","onMouseLeave","selection","children","exports"],"sources":["../../../../src/lib/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport { bookingCalendarSelectionDefaultClasses } from './classes';\r\n\r\nexport type BookingCalendarSelectionCoordinates = [number, number];\r\nexport interface BookingCalendarSelectionData {\r\n origin: BookingCalendarSelectionCoordinates;\r\n target: BookingCalendarSelectionCoordinates;\r\n}\r\nexport interface BookingCalendarSelectionProps {\r\n disabled?: boolean;\r\n onSelecting?: (data: {\r\n origin: BookingCalendarSelectionCoordinates;\r\n target: BookingCalendarSelectionCoordinates;\r\n }) => void;\r\n onSelected?: (\r\n data: {\r\n origin: BookingCalendarSelectionCoordinates;\r\n target: BookingCalendarSelectionCoordinates;\r\n },\r\n e: React.MouseEvent<HTMLElement>\r\n ) => void;\r\n dataRowsCount: number;\r\n minSelectionSize: number;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport interface BookingCalendarSelectionState {\r\n selectionBoxOrigin: BookingCalendarSelectionCoordinates;\r\n selectionBoxTarget: BookingCalendarSelectionCoordinates;\r\n hold: boolean;\r\n animation: string;\r\n selectionBox: boolean;\r\n}\r\n\r\nexport default class BookingCalendarSelection extends React.Component<\r\n BookingCalendarSelectionProps,\r\n BookingCalendarSelectionState\r\n> {\r\n private animationInProgress: number;\r\n private containerRef: React.RefObject<HTMLDivElement>;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.animationInProgress = null;\r\n this.containerRef = React.createRef();\r\n this.state = {\r\n hold: false,\r\n selectionBox: false,\r\n selectionBoxOrigin: [0, 0],\r\n selectionBoxTarget: [0, 0],\r\n animation: '',\r\n };\r\n this.handleMouseUp = this.handleMouseUp.bind(this);\r\n this.handleMouseDown = this.handleMouseDown.bind(this);\r\n this.handleMouseMove = this.handleMouseMove.bind(this);\r\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\r\n }\r\n\r\n handleTransformBox() {\r\n const { selectionBoxOrigin, selectionBoxTarget } = this.state;\r\n if (\r\n selectionBoxOrigin[1] > selectionBoxTarget[1] &&\r\n selectionBoxOrigin[0] > selectionBoxTarget[0]\r\n ) {\r\n return 'scaleY(-1) scaleX(-1)';\r\n }\r\n\r\n if (selectionBoxOrigin[1] > selectionBoxTarget[1]) {\r\n return 'scaleY(-1)';\r\n }\r\n if (selectionBoxOrigin[0] > selectionBoxTarget[0]) {\r\n return 'scaleX(-1)';\r\n }\r\n return null;\r\n }\r\n\r\n handleMouseLeave(evt: React.MouseEvent<HTMLElement>) {\r\n /*if (this.state.hold) {\r\n this.setState({\r\n hold: false,\r\n animation: 'bookingCalendar__selection--fadeout',\r\n });\r\n this.animationInProgress = (setTimeout(() => {\r\n this.setState({\r\n selectionBox: false,\r\n animation: '',\r\n selectionBoxOrigin: [0, 0],\r\n selectionBoxTarget: [0, 0],\r\n });\r\n this.animationInProgress = null;\r\n }, 300) as unknown) as number;\r\n }*/\r\n }\r\n\r\n handleMouseUp(evt: React.MouseEvent<HTMLElement>) {\r\n if (this.state.hold) {\r\n const distance = Math.sqrt(\r\n Math.pow(\r\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1],\r\n 2\r\n ) +\r\n Math.pow(\r\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0],\r\n 2\r\n )\r\n );\r\n this.setState({\r\n hold: false,\r\n animation: 'bookingCalendar__selection--fadeout',\r\n });\r\n this.animationInProgress = setTimeout(() => {\r\n this.setState({\r\n selectionBox: false,\r\n animation: '',\r\n selectionBoxOrigin: [0, 0],\r\n selectionBoxTarget: [0, 0],\r\n });\r\n this.animationInProgress = null;\r\n }, 300) as unknown as number;\r\n if (distance < this.props.minSelectionSize) {\r\n return;\r\n }\r\n this.props.onSelected?.(\r\n {\r\n origin: this.state.selectionBoxOrigin,\r\n target: this.state.selectionBoxTarget,\r\n },\r\n evt\r\n );\r\n }\r\n }\r\n\r\n handleMouseDown(e: React.MouseEvent<HTMLDivElement>) {\r\n if (this.props.disabled || e.nativeEvent.button !== 0) {\r\n return;\r\n }\r\n clearTimeout(this.animationInProgress);\r\n this.animationInProgress = null;\r\n this.setState({ selectionBox: false, animation: '' });\r\n\r\n const bb = this.containerRef.current?.getBoundingClientRect();\r\n this.setState({\r\n hold: true,\r\n selectionBoxOrigin: [\r\n e.nativeEvent.pageX - bb.x,\r\n e.nativeEvent.pageY - bb.y,\r\n ],\r\n selectionBoxTarget: [\r\n e.nativeEvent.pageX - bb.x,\r\n e.nativeEvent.pageY - bb.y,\r\n ],\r\n });\r\n }\r\n\r\n private handleMouseMove(evt: React.MouseEvent<HTMLDivElement>) {\r\n if (this.state.hold && !this.state.selectionBox) {\r\n this.setState({ selectionBox: true });\r\n }\r\n if (this.state.selectionBox && !this.animationInProgress) {\r\n const bb = this.containerRef.current?.getBoundingClientRect();\r\n this.setState({\r\n selectionBoxTarget: [\r\n evt.nativeEvent.pageX - bb?.x,\r\n evt.nativeEvent.pageY - bb?.y,\r\n ],\r\n });\r\n\r\n this.props.onSelecting?.({\r\n origin: this.state.selectionBoxOrigin,\r\n target: this.state.selectionBoxTarget,\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const baseStyle: React.CSSProperties = {\r\n zIndex: 10,\r\n left: Math.min(\r\n this.state.selectionBoxOrigin[0],\r\n this.state.selectionBoxTarget[0]\r\n ),\r\n top: Math.min(\r\n this.state.selectionBoxOrigin[1],\r\n this.state.selectionBoxTarget[1]\r\n ),\r\n height: Math.abs(\r\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1] - 1\r\n ),\r\n width: Math.abs(\r\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0] - 1\r\n ),\r\n userSelect: 'none',\r\n // transformOrigin: 'top left',\r\n // transform: this.handleTransformBox(),\r\n };\r\n const boxVisible =\r\n Math.sqrt(\r\n Math.pow(\r\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1],\r\n 2\r\n ) +\r\n Math.pow(\r\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0],\r\n 2\r\n )\r\n ) > this.props.minSelectionSize;\r\n return (\r\n <div\r\n ref={this.containerRef}\r\n className={bookingCalendarSelectionDefaultClasses.root}\r\n style={{\r\n zIndex: this.state.selectionBox ? 99999 : undefined,\r\n gridRowEnd: `span ${this.props.dataRowsCount}`,\r\n }}\r\n onMouseDown={this.handleMouseDown}\r\n onMouseUp={this.handleMouseUp}\r\n onMouseMove={this.handleMouseMove}\r\n onMouseLeave={this.handleMouseLeave}\r\n >\r\n {boxVisible && this.state.selectionBox && (\r\n <div\r\n className={`${bookingCalendarSelectionDefaultClasses.selection} ${this.state.animation}`}\r\n style={baseStyle}\r\n >\r\n {this.props.children}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export interface BookingCalendarSelectionClasses {
2
+ root?: string;
3
+ selection?: string;
4
+ }
5
+ export declare const bookingCalendarSelectionDefaultClasses: BookingCalendarSelectionClasses;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.bookingCalendarSelectionDefaultClasses = void 0;
7
+ const bookingCalendarSelectionDefaultClasses = {
8
+ root: 'bookingCalendar__selection__container',
9
+ selection: 'bookingCalendar__selection'
10
+ };
11
+ exports.bookingCalendarSelectionDefaultClasses = bookingCalendarSelectionDefaultClasses;
12
+ //# sourceMappingURL=classes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classes.js","names":["bookingCalendarSelectionDefaultClasses","root","selection","exports"],"sources":["../../../../src/lib/components/bookingCalendar/bookingCalendarSelection/classes.ts"],"sourcesContent":["export interface BookingCalendarSelectionClasses {\n root?: string;\n selection?: string;\n}\n\nexport const bookingCalendarSelectionDefaultClasses: BookingCalendarSelectionClasses =\n {\n root: 'bookingCalendar__selection__container',\n selection: 'bookingCalendar__selection',\n };\n"],"mappings":";;;;;;AAKO,MAAMA,sCAAuE,GAClF;EACEC,IAAI,EAAE,uCAAuC;EAC7CC,SAAS,EAAE;AACb,CAAC;AAACC,OAAA,CAAAH,sCAAA,GAAAA,sCAAA"}
@@ -3,6 +3,7 @@ import moment, { Moment, Duration } from 'moment';
3
3
  export interface BookingCalendarItemT {
4
4
  from: Moment;
5
5
  till: Moment;
6
+ id: string | number;
6
7
  laneKey?: string | number;
7
8
  }
8
9
  export interface BookingCalendarItemWithOriginalIndexT {
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","names":["_moment","_interopRequireDefault","require","obj","__esModule","default","defaultGetMomentFormatFunction","date","bestStep","undefined","valueOf","clone","startOf","exports","defaultGetNewMomentFunction","moment","defaultGridAvailableSteps","duration"],"sources":["../../../src/lib/components/bookingCalendar/common.ts"],"sourcesContent":["import moment, { Moment, 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 (date.valueOf() === date.clone().startOf('day').valueOf()) {\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 moment.duration(1, 'minute'),\r\n moment.duration(5, 'minute'),\r\n moment.duration(10, 'minute'),\r\n moment.duration(15, 'minute'),\r\n moment.duration(20, 'minute'),\r\n moment.duration(30, 'minute'),\r\n moment.duration(1, 'hour'),\r\n moment.duration(2, 'hour'),\r\n moment.duration(4, 'hour'),\r\n moment.duration(6, 'hour'),\r\n moment.duration(8, 'hour'),\r\n moment.duration(12, 'hour'),\r\n moment.duration(1, 'day'),\r\n];\r\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAkD,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAyB3C,MAAMG,8BAA8B,GAAGA,CAC5CC,IAAY,EACZC,QAAkB,KACf;EACH,IAAI,CAACD,IAAI,IAAI,CAACC,QAAQ,EAAE;IACtB,OAAOC,SAAS;EAClB;EACA,IAAIF,IAAI,CAACG,OAAO,CAAC,CAAC,KAAKH,IAAI,CAACI,KAAK,CAAC,CAAC,CAACC,OAAO,CAAC,KAAK,CAAC,CAACF,OAAO,CAAC,CAAC,EAAE;IAC5D,OAAO,QAAQ;EACjB;EACA,OAAO,QAAQ;AACjB,CAAC;AAACG,OAAA,CAAAP,8BAAA,GAAAA,8BAAA;AAIK,MAAMQ,2BAA2B,GAAIP,IAAU,IAAK;EACzD,OAAO,IAAAQ,eAAM,EAACR,IAAI,CAAC;AACrB,CAAC;AAACM,OAAA,CAAAC,2BAAA,GAAAA,2BAAA;AAIK,MAAME,yBAAqC,GAAG,CACnDD,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,EAC5BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,EAC5BF,eAAM,CAACE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAC7BF,eAAM,CAACE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAC7BF,eAAM,CAACE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAC7BF,eAAM,CAACE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAC7BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1BF,eAAM,CAACE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,EAC3BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAC1B;AAACJ,OAAA,CAAAG,yBAAA,GAAAA,yBAAA"}
1
+ {"version":3,"file":"common.js","names":["_moment","_interopRequireDefault","require","obj","__esModule","default","defaultGetMomentFormatFunction","date","bestStep","undefined","valueOf","clone","startOf","exports","defaultGetNewMomentFunction","moment","defaultGridAvailableSteps","duration"],"sources":["../../../src/lib/components/bookingCalendar/common.ts"],"sourcesContent":["import moment, { Moment, Duration } from 'moment';\r\n\r\nexport interface BookingCalendarItemT {\r\n from: Moment;\r\n till: Moment;\r\n id: string | number;\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 (date.valueOf() === date.clone().startOf('day').valueOf()) {\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 moment.duration(1, 'minute'),\r\n moment.duration(5, 'minute'),\r\n moment.duration(10, 'minute'),\r\n moment.duration(15, 'minute'),\r\n moment.duration(20, 'minute'),\r\n moment.duration(30, 'minute'),\r\n moment.duration(1, 'hour'),\r\n moment.duration(2, 'hour'),\r\n moment.duration(4, 'hour'),\r\n moment.duration(6, 'hour'),\r\n moment.duration(8, 'hour'),\r\n moment.duration(12, 'hour'),\r\n moment.duration(1, 'day'),\r\n];\r\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAkD,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AA0B3C,MAAMG,8BAA8B,GAAGA,CAC5CC,IAAY,EACZC,QAAkB,KACf;EACH,IAAI,CAACD,IAAI,IAAI,CAACC,QAAQ,EAAE;IACtB,OAAOC,SAAS;EAClB;EACA,IAAIF,IAAI,CAACG,OAAO,CAAC,CAAC,KAAKH,IAAI,CAACI,KAAK,CAAC,CAAC,CAACC,OAAO,CAAC,KAAK,CAAC,CAACF,OAAO,CAAC,CAAC,EAAE;IAC5D,OAAO,QAAQ;EACjB;EACA,OAAO,QAAQ;AACjB,CAAC;AAACG,OAAA,CAAAP,8BAAA,GAAAA,8BAAA;AAIK,MAAMQ,2BAA2B,GAAIP,IAAU,IAAK;EACzD,OAAO,IAAAQ,eAAM,EAACR,IAAI,CAAC;AACrB,CAAC;AAACM,OAAA,CAAAC,2BAAA,GAAAA,2BAAA;AAIK,MAAME,yBAAqC,GAAG,CACnDD,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,EAC5BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,EAC5BF,eAAM,CAACE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAC7BF,eAAM,CAACE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAC7BF,eAAM,CAACE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAC7BF,eAAM,CAACE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAC7BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1BF,eAAM,CAACE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,EAC3BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAC1B;AAACJ,OAAA,CAAAG,yBAAA,GAAAA,yBAAA"}
@@ -21,7 +21,8 @@ export interface LaneData<T extends BookingCalendarItemT, TLaneData> extends Lan
21
21
  items: T[];
22
22
  }
23
23
  export declare function splitBookingsToLanes<T extends BookingCalendarItemT, TLaneData>(bookings: T[], from: Moment, minLanesCount: number, lanesSource?: LaneSourceData<T, TLaneData>[], unmatchedToFront?: boolean): LaneData<T, TLaneData>[];
24
- export declare function itemsOverlap<T extends BookingCalendarItemT>(a: T, b: T): boolean;
24
+ type Picked = Pick<BookingCalendarItemT, 'from' | 'till'>;
25
+ export declare function itemsOverlap(a: Picked, b: Picked): boolean;
25
26
  export declare const getItemPositionStyle: (marginStart: number, width: number) => import("react").CSSProperties;
26
27
  export declare function calculateItemsDimensions<T extends BookingCalendarItemT>(items: T[], from: Moment, till: Moment): {
27
28
  item: T;
@@ -39,6 +40,7 @@ export declare function calculateItemsDimensions<T extends BookingCalendarItemT>
39
40
  export declare const generateControlItems: (from: Moment, till: Moment, step: Duration, startOfStep: Moment) => {
40
41
  from: moment.Moment;
41
42
  till: moment.Moment;
43
+ id: number;
42
44
  }[];
43
45
  export interface GridItem {
44
46
  left: number;
@@ -50,3 +52,4 @@ export declare const generateGridItems: (from: Moment, till: Moment, step: Durat
50
52
  items: GridItem[];
51
53
  bestStep: Duration;
52
54
  };
55
+ export {};
@@ -197,7 +197,8 @@ const generateControlItems = (from, till, step, startOfStep) => {
197
197
  }
198
198
  return new Array(steps).fill(0).map((_, index) => ({
199
199
  from: from.clone().add(subtract).add(step.asMilliseconds() * index),
200
- till: from.clone().add(subtract).add(step.asMilliseconds() * (index + 1))
200
+ till: from.clone().add(subtract).add(step.asMilliseconds() * (index + 1)),
201
+ id: index
201
202
  }));
202
203
  };
203
204
  exports.generateControlItems = generateControlItems;