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.
- package/build/components/bookingCalendar/BookingCalendar.d.ts +4 -2
- package/build/components/bookingCalendar/BookingCalendar.js +38 -13
- package/build/components/bookingCalendar/BookingCalendar.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.js +2 -1
- package/build/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.d.ts +1 -1
- package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js +11 -9
- package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarSelection/classes.d.ts +5 -0
- package/build/components/bookingCalendar/bookingCalendarSelection/classes.js +12 -0
- package/build/components/bookingCalendar/bookingCalendarSelection/classes.js.map +1 -0
- package/build/components/bookingCalendar/common.d.ts +1 -0
- package/build/components/bookingCalendar/common.js.map +1 -1
- package/build/components/bookingCalendar/utils.d.ts +4 -1
- package/build/components/bookingCalendar/utils.js +2 -1
- package/build/components/bookingCalendar/utils.js.map +1 -1
- package/build/dist/guestbell-forms.css +3 -1
- package/build/dist/guestbell-forms.css.map +1 -1
- package/build/dist/guestbell-forms.min.css +1 -1
- package/build/dist/report.html +2 -2
- package/build/scss/components/bookingCalendar/bookingCalendar.scss +2 -0
- package/package.json +1 -1
- package/src/lib/components/bookingCalendar/BookingCalendar.tsx +72 -14
- package/src/lib/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.tsx +5 -4
- package/src/lib/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.tsx +30 -16
- package/src/lib/components/bookingCalendar/bookingCalendarSelection/classes.ts +10 -0
- package/src/lib/components/bookingCalendar/common.ts +1 -0
- package/src/lib/components/bookingCalendar/utils.ts +3 -1
- package/src/lib/scss/components/bookingCalendar/bookingCalendar.scss +2 -0
- package/src/stories/Schedule.tsx +15 -3
- 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
|
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
|
85
|
-
const
|
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(
|
89
|
-
const timeSpaceEnd = from.clone().add(toTimeSpace(
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
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":"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"}
|
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)
|
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"}
|
package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.d.ts
CHANGED
@@ -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;
|
package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js
CHANGED
@@ -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:
|
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:
|
150
|
+
className: `${_classes.bookingCalendarSelectionDefaultClasses.selection} ${this.state.animation}`,
|
149
151
|
style: baseStyle
|
150
|
-
}
|
152
|
+
}, this.props.children));
|
151
153
|
}
|
152
154
|
}
|
153
155
|
exports.default = BookingCalendarSelection;
|
package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js.map
CHANGED
@@ -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,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"}
|
@@ -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;
|
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
|
-
|
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;
|