react-big-schedule 8.1.0 → 9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -1129
- package/dist/calendar/Calendar.d.ts +28 -0
- package/dist/calendar/Calendar.js +95 -0
- package/dist/calendar/Toolbar.d.ts +18 -0
- package/dist/calendar/Toolbar.js +6 -0
- package/dist/calendar/recurrence.check.d.ts +1 -0
- package/dist/calendar/recurrence.check.js +49 -0
- package/dist/calendar/recurrence.d.ts +8 -0
- package/dist/calendar/recurrence.js +90 -0
- package/dist/calendar/timezone.d.ts +6 -0
- package/dist/calendar/timezone.js +14 -0
- package/dist/calendar/types.d.ts +187 -0
- package/dist/calendar/types.js +1 -0
- package/dist/calendar/useEventSources.d.ts +11 -0
- package/dist/calendar/useEventSources.js +89 -0
- package/dist/calendar/useRecurrence.d.ts +4 -0
- package/dist/calendar/useRecurrence.js +15 -0
- package/dist/calendar/utils.d.ts +38 -0
- package/dist/calendar/utils.js +143 -0
- package/dist/calendar/views/DayGridView.d.ts +3 -0
- package/dist/calendar/views/DayGridView.js +375 -0
- package/dist/calendar/views/ListView.d.ts +4 -0
- package/dist/calendar/views/ListView.js +56 -0
- package/dist/calendar/views/MultiMonthView.d.ts +4 -0
- package/dist/calendar/views/MultiMonthView.js +36 -0
- package/dist/calendar/views/TimeGridView.d.ts +3 -0
- package/dist/calendar/views/TimeGridView.js +334 -0
- package/dist/calendar/views/daygrid/DayCell.d.ts +19 -0
- package/dist/calendar/views/daygrid/DayCell.js +17 -0
- package/dist/calendar/views/daygrid/EventChip.d.ts +19 -0
- package/dist/calendar/views/daygrid/EventChip.js +40 -0
- package/dist/calendar/views/daygrid/layout.d.ts +30 -0
- package/dist/calendar/views/daygrid/layout.js +63 -0
- package/dist/calendar/views/list/bucket.d.ts +8 -0
- package/dist/calendar/views/list/bucket.js +37 -0
- package/dist/calendar/views/multimonth/Cell.d.ts +12 -0
- package/dist/calendar/views/multimonth/Cell.js +44 -0
- package/dist/calendar/views/multimonth/Continuous.d.ts +8 -0
- package/dist/calendar/views/multimonth/Continuous.js +28 -0
- package/dist/calendar/views/multimonth/MonthGrid.d.ts +10 -0
- package/dist/calendar/views/multimonth/MonthGrid.js +36 -0
- package/dist/calendar/views/multimonth/shared.d.ts +27 -0
- package/dist/calendar/views/multimonth/shared.js +40 -0
- package/dist/calendar/views/timegrid/DayColumn.d.ts +49 -0
- package/dist/calendar/views/timegrid/DayColumn.js +86 -0
- package/dist/calendar/views/timegrid/model.d.ts +55 -0
- package/dist/calendar/views/timegrid/model.js +102 -0
- package/dist/components/AddMore.d.ts +13 -0
- package/dist/components/AddMore.js +9 -42
- package/dist/components/AddMorePopover.d.ts +13 -0
- package/dist/components/AddMorePopover.js +24 -95
- package/dist/components/AgendaEventItem.d.ts +10 -0
- package/dist/components/AgendaEventItem.js +33 -81
- package/dist/components/AgendaResourceEvents.d.ts +10 -0
- package/dist/components/AgendaResourceEvents.js +37 -91
- package/dist/components/AgendaView.d.ts +9 -0
- package/dist/components/AgendaView.js +10 -69
- package/dist/components/BodyView.d.ts +11 -0
- package/dist/components/BodyView.js +36 -67
- package/dist/components/DnDContext.d.ts +48 -0
- package/dist/components/DnDContext.js +200 -221
- package/dist/components/DnDSource.d.ts +49 -0
- package/dist/components/DnDSource.js +125 -120
- package/dist/components/EventItem.d.ts +41 -0
- package/dist/components/EventItem.js +585 -787
- package/dist/components/EventItemPopover.d.ts +12 -0
- package/dist/components/EventItemPopover.js +19 -143
- package/dist/components/HeaderView.d.ts +14 -0
- package/dist/components/HeaderView.js +123 -186
- package/dist/components/ResourceEvents.d.ts +54 -0
- package/dist/components/ResourceEvents.js +534 -703
- package/dist/components/ResourceView.d.ts +26 -0
- package/dist/components/ResourceView.js +64 -184
- package/dist/components/SchedulerData.d.ts +136 -0
- package/dist/components/SchedulerData.js +1296 -1226
- package/dist/components/SchedulerHeader.d.ts +25 -0
- package/dist/components/SchedulerHeader.js +50 -150
- package/dist/components/SelectedArea.d.ts +8 -0
- package/dist/components/SelectedArea.js +11 -26
- package/dist/components/Summary.d.ts +11 -0
- package/dist/components/Summary.js +21 -50
- package/dist/components/WrapperFun.d.ts +2 -0
- package/dist/components/WrapperFun.js +5 -10
- package/dist/components/index.d.ts +44 -0
- package/dist/components/index.js +428 -654
- package/dist/components/ui/Icons.d.ts +8 -0
- package/dist/components/ui/Icons.js +7 -0
- package/dist/components/ui/MiniCalendar.d.ts +9 -0
- package/dist/components/ui/MiniCalendar.js +17 -0
- package/dist/components/ui/Popover.d.ts +13 -0
- package/dist/components/ui/Popover.js +80 -0
- package/dist/config/default.d.ts +36 -0
- package/dist/config/default.js +17 -26
- package/dist/config/i18n.d.ts +27 -0
- package/dist/config/i18n.js +21 -37
- package/dist/config/scheduler.d.ts +12 -0
- package/dist/config/scheduler.js +126 -119
- package/dist/css/style.css +2 -316
- package/dist/helper/behaviors.d.ts +14 -0
- package/dist/helper/behaviors.js +75 -75
- package/dist/helper/utility.d.ts +26 -0
- package/dist/helper/utility.js +23 -30
- package/dist/index.d.ts +6 -477
- package/dist/index.js +4 -2
- package/dist/sample-data/sample1.d.ts +11 -0
- package/dist/sample-data/sample1.js +427 -372
- package/dist/types.d.ts +267 -0
- package/dist/types.js +1 -0
- package/package.json +30 -27
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React, { type ComponentType, type ReactNode } from 'react';
|
|
2
|
+
import type { Id, RenderItem, SlotClickedFunc, SlotItemTemplateResolver } from '../types';
|
|
3
|
+
import type SchedulerData from './SchedulerData';
|
|
4
|
+
export interface CustomResourceCellProps {
|
|
5
|
+
schedulerData: SchedulerData;
|
|
6
|
+
item: RenderItem;
|
|
7
|
+
indents: ReactNode[];
|
|
8
|
+
slotClickedFunc?: SlotClickedFunc;
|
|
9
|
+
handleToggleExpand: (item: RenderItem) => void;
|
|
10
|
+
}
|
|
11
|
+
export interface ResourceViewProps {
|
|
12
|
+
schedulerData: SchedulerData;
|
|
13
|
+
/** Changes whenever schedulerData mutates, so the memoised view re-renders. */
|
|
14
|
+
schedulerDataVersion?: number;
|
|
15
|
+
contentScrollbarHeight: number;
|
|
16
|
+
slotClickedFunc?: SlotClickedFunc;
|
|
17
|
+
slotItemTemplateResolver?: SlotItemTemplateResolver;
|
|
18
|
+
toggleExpandFunc?: (schedulerData: SchedulerData, slotId: Id) => void;
|
|
19
|
+
CustomResourceCell?: ComponentType<CustomResourceCellProps>;
|
|
20
|
+
isSelecting?: boolean;
|
|
21
|
+
selectedResourceIds?: Id[] | Set<Id>;
|
|
22
|
+
}
|
|
23
|
+
/** Render the resource column: hierarchical indentation, expand/collapse controls and clickable slot names. */
|
|
24
|
+
declare function ResourceView({ schedulerData, contentScrollbarHeight, slotClickedFunc, slotItemTemplateResolver, toggleExpandFunc, CustomResourceCell, isSelecting, selectedResourceIds, }: ResourceViewProps): React.JSX.Element;
|
|
25
|
+
declare const _default: React.MemoExoticComponent<typeof ResourceView>;
|
|
26
|
+
export default _default;
|
|
@@ -1,189 +1,69 @@
|
|
|
1
|
-
import { MinusSquareOutlined, PlusSquareOutlined } from '@ant-design/icons';
|
|
2
|
-
import PropTypes from 'prop-types';
|
|
3
|
-
import React from 'react';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Render the scheduler's resource table with hierarchical indentation, optional expand/collapse controls,
|
|
7
|
-
* clickable slot names, and support for custom slot templates or an injected resource-cell renderer.
|
|
8
|
-
*
|
|
9
|
-
* @param {object} schedulerData - Scheduler state and helpers; must include `renderData`,
|
|
10
|
-
* `getResourceTableWidth`, and `config`.
|
|
11
|
-
* @param {number} contentScrollbarHeight - Height used to set the container's bottom padding.
|
|
12
|
-
* @param {Function} [slotClickedFunc] - Called as `slotClickedFunc(schedulerData, item)` when a slot name is clicked.
|
|
13
|
-
* @param {Function} [slotItemTemplateResolver] - Called as `slotItemTemplateResolver
|
|
14
|
-
* (schedulerData, item, slotClickedFunc, width, className)` to provide a custom slot cell element;
|
|
15
|
-
* if a value is returned it replaces the default slot cell.
|
|
16
|
-
* @param {Function} [toggleExpandFunc] - Called as `toggleExpandFunc(schedulerData, slotId)`
|
|
17
|
-
* to toggle expansion for items with children.
|
|
18
|
-
* @param {Function} [CustomResourceCell] - Optional React component rendered inside the resource
|
|
19
|
-
* `<td>` when provided; receives props `{ schedulerData, item, indents, slotClickedFunc, handleToggleExpand }`.
|
|
20
|
-
* @returns {JSX.Element} The rendered resource table element.
|
|
21
|
-
*/
|
|
22
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
} = schedulerData;
|
|
36
|
-
const width = schedulerData.getResourceTableWidth();
|
|
37
|
-
const paddingBottom = contentScrollbarHeight;
|
|
38
|
-
const displayRenderData = renderData.filter(o => o.render);
|
|
39
|
-
const handleToggleExpand = item => {
|
|
40
|
-
if (toggleExpandFunc) {
|
|
41
|
-
toggleExpandFunc(schedulerData, item.slotId);
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
const renderSlotItem = (item, indents) => {
|
|
45
|
-
let indent = /*#__PURE__*/_jsx("span", {
|
|
46
|
-
className: "expander-space"
|
|
47
|
-
}, `es${item.indent}`);
|
|
48
|
-
const iconProps = {
|
|
49
|
-
onClick: () => handleToggleExpand(item)
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { MinusSquare, PlusSquare } from './ui/Icons';
|
|
4
|
+
/** Render the resource column: hierarchical indentation, expand/collapse controls and clickable slot names. */
|
|
5
|
+
function ResourceView({ schedulerData, contentScrollbarHeight, slotClickedFunc, slotItemTemplateResolver, toggleExpandFunc, CustomResourceCell, isSelecting, selectedResourceIds, }) {
|
|
6
|
+
const { renderData } = schedulerData;
|
|
7
|
+
const width = schedulerData.getResourceTableWidth();
|
|
8
|
+
const paddingBottom = contentScrollbarHeight;
|
|
9
|
+
const displayRenderData = renderData.filter(o => o.render);
|
|
10
|
+
const handleToggleExpand = (item) => {
|
|
11
|
+
if (toggleExpandFunc) {
|
|
12
|
+
toggleExpandFunc(schedulerData, item.slotId);
|
|
13
|
+
}
|
|
50
14
|
};
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
15
|
+
const renderSlotItem = (item, indents) => {
|
|
16
|
+
let indent = _jsx("span", { className: "expander-space" }, `es${item.indent}`);
|
|
17
|
+
const iconProps = { onClick: () => handleToggleExpand(item), style: { cursor: 'pointer' } };
|
|
18
|
+
if (item.hasChildren) {
|
|
19
|
+
indent = item.expanded ? (_jsx(MinusSquare, { ...iconProps }, `es${item.indent}`)) : (_jsx(PlusSquare, { ...iconProps }, `es${item.indent}`));
|
|
20
|
+
}
|
|
21
|
+
indents.push(indent);
|
|
22
|
+
const tdStyle = {
|
|
23
|
+
height: item.rowHeight,
|
|
24
|
+
backgroundColor: item.groupOnly ? schedulerData.config.groupOnlySlotColor : undefined,
|
|
25
|
+
borderLeft: '3px solid transparent',
|
|
26
|
+
};
|
|
27
|
+
const selectedBorderColor = schedulerData.config.selectedSlotBorderColor || 'var(--rbs-accent)';
|
|
28
|
+
const selectedShadowColor = schedulerData.config.selectedSlotShadowColor || 'color-mix(in srgb, var(--rbs-accent) 45%, transparent)';
|
|
29
|
+
const selectedSlotColor = schedulerData.config.selectedSlotColor || 'color-mix(in srgb, var(--rbs-accent) 10%, transparent)';
|
|
30
|
+
const hasSelectedResourceId = selectedResourceIds instanceof Set
|
|
31
|
+
? selectedResourceIds.has(item.slotId)
|
|
32
|
+
: Array.isArray(selectedResourceIds) && selectedResourceIds.includes(item.slotId);
|
|
33
|
+
const isRowSelected = isSelecting && hasSelectedResourceId;
|
|
34
|
+
if (isRowSelected) {
|
|
35
|
+
tdStyle.borderLeft = `3px solid ${selectedBorderColor}`;
|
|
36
|
+
tdStyle.boxShadow = `inset 0 0 0 1px ${selectedShadowColor}`;
|
|
37
|
+
if (!item.groupOnly) {
|
|
38
|
+
tdStyle.backgroundColor = selectedSlotColor;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (CustomResourceCell) {
|
|
42
|
+
return (_jsx("tr", { "aria-selected": isRowSelected, children: _jsx("td", { "data-resource-id": item.slotId, style: tdStyle, children: _jsx(CustomResourceCell, { schedulerData: schedulerData, item: item, indents: indents, slotClickedFunc: slotClickedFunc, handleToggleExpand: handleToggleExpand }) }) }, item.slotId));
|
|
43
|
+
}
|
|
44
|
+
const slotCell = slotClickedFunc ? (_jsxs("span", { className: "slot-cell", children: [indents, _jsx("button", { type: "button", style: { cursor: 'pointer' }, className: "slot-text rbs-txt-btn-dis", onClick: () => slotClickedFunc(schedulerData, item), children: item.slotName })] })) : (_jsxs("span", { className: "slot-cell", children: [indents, _jsx("button", { type: "button", className: "slot-text rbs-txt-btn-dis", style: {
|
|
45
|
+
cursor: slotClickedFunc === undefined ? undefined : 'pointer',
|
|
46
|
+
}, children: item.slotName })] }));
|
|
47
|
+
let slotItem = (_jsx("div", { title: item.slotTitle || item.slotName, className: "overflow-text header2-text", style: { textAlign: 'left' }, children: slotCell }));
|
|
48
|
+
if (slotItemTemplateResolver) {
|
|
49
|
+
const resolvedTemplate = slotItemTemplateResolver(schedulerData, item, slotClickedFunc, width, 'overflow-text header2-text');
|
|
50
|
+
if (resolvedTemplate) {
|
|
51
|
+
slotItem = resolvedTemplate;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return (_jsx("tr", { "aria-selected": isRowSelected, children: _jsx("td", { "data-resource-id": item.slotId, style: tdStyle, children: slotItem }) }, item.slotId));
|
|
63
55
|
};
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
if (CustomResourceCell) {
|
|
77
|
-
return /*#__PURE__*/_jsx("tr", {
|
|
78
|
-
"aria-selected": isRowSelected,
|
|
79
|
-
children: /*#__PURE__*/_jsx("td", {
|
|
80
|
-
"data-resource-id": item.slotId,
|
|
81
|
-
style: tdStyle,
|
|
82
|
-
children: /*#__PURE__*/_jsx(CustomResourceCell, {
|
|
83
|
-
schedulerData: schedulerData,
|
|
84
|
-
item: item,
|
|
85
|
-
indents: indents,
|
|
86
|
-
slotClickedFunc: slotClickedFunc,
|
|
87
|
-
handleToggleExpand: handleToggleExpand
|
|
88
|
-
})
|
|
89
|
-
})
|
|
90
|
-
}, item.slotId);
|
|
91
|
-
}
|
|
92
|
-
const slotCell = slotClickedFunc ? /*#__PURE__*/_jsxs("span", {
|
|
93
|
-
className: "slot-cell",
|
|
94
|
-
children: [indents, /*#__PURE__*/_jsx("button", {
|
|
95
|
-
type: "button",
|
|
96
|
-
style: {
|
|
97
|
-
cursor: 'pointer'
|
|
98
|
-
},
|
|
99
|
-
className: "slot-text rbs-txt-btn-dis",
|
|
100
|
-
onClick: () => slotClickedFunc(schedulerData, item),
|
|
101
|
-
children: item.slotName
|
|
102
|
-
})]
|
|
103
|
-
}) : /*#__PURE__*/_jsxs("span", {
|
|
104
|
-
className: "slot-cell",
|
|
105
|
-
children: [indents, /*#__PURE__*/_jsx("button", {
|
|
106
|
-
type: "button",
|
|
107
|
-
className: "slot-text rbs-txt-btn-dis",
|
|
108
|
-
style: {
|
|
109
|
-
cursor: slotClickedFunc === undefined ? undefined : 'pointer'
|
|
110
|
-
},
|
|
111
|
-
children: item.slotName
|
|
112
|
-
})]
|
|
56
|
+
const resourceList = displayRenderData.map(item => {
|
|
57
|
+
if (schedulerData.isVerticalResourceView()) {
|
|
58
|
+
const timeLabel = schedulerData.localeDayjs(new Date(item.slotName)).format('HH:mm');
|
|
59
|
+
return (_jsx("tr", { style: { height: item.rowHeight }, children: _jsx("td", { "data-resource-id": item.slotId, style: { height: item.rowHeight, minHeight: item.rowHeight, textAlign: 'center' }, className: "header2-text", children: _jsx("span", { children: timeLabel }) }) }, item.slotId));
|
|
60
|
+
}
|
|
61
|
+
const indents = [];
|
|
62
|
+
for (let i = 0; i < item.indent; i += 1) {
|
|
63
|
+
indents.push(_jsx("span", { className: "expander-space" }, `es${i}`));
|
|
64
|
+
}
|
|
65
|
+
return renderSlotItem(item, indents);
|
|
113
66
|
});
|
|
114
|
-
|
|
115
|
-
title: item.slotTitle || item.slotName,
|
|
116
|
-
className: "overflow-text header2-text",
|
|
117
|
-
style: {
|
|
118
|
-
textAlign: 'left'
|
|
119
|
-
},
|
|
120
|
-
children: slotCell
|
|
121
|
-
});
|
|
122
|
-
if (slotItemTemplateResolver) {
|
|
123
|
-
const resolvedTemplate = slotItemTemplateResolver(schedulerData, item, slotClickedFunc, width, 'overflow-text header2-text');
|
|
124
|
-
if (resolvedTemplate) {
|
|
125
|
-
slotItem = resolvedTemplate;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
return /*#__PURE__*/_jsx("tr", {
|
|
129
|
-
"aria-selected": isRowSelected,
|
|
130
|
-
children: /*#__PURE__*/_jsx("td", {
|
|
131
|
-
"data-resource-id": item.slotId,
|
|
132
|
-
style: tdStyle,
|
|
133
|
-
children: slotItem
|
|
134
|
-
})
|
|
135
|
-
}, item.slotId);
|
|
136
|
-
};
|
|
137
|
-
const resourceList = displayRenderData.map(item => {
|
|
138
|
-
if (schedulerData.isVerticalResourceView()) {
|
|
139
|
-
const timeLabel = schedulerData.localeDayjs(new Date(item.slotName)).format('HH:mm');
|
|
140
|
-
return /*#__PURE__*/_jsx("tr", {
|
|
141
|
-
style: {
|
|
142
|
-
height: item.rowHeight
|
|
143
|
-
},
|
|
144
|
-
children: /*#__PURE__*/_jsx("td", {
|
|
145
|
-
"data-resource-id": item.slotId,
|
|
146
|
-
style: {
|
|
147
|
-
height: item.rowHeight,
|
|
148
|
-
minHeight: item.rowHeight,
|
|
149
|
-
textAlign: 'center'
|
|
150
|
-
},
|
|
151
|
-
className: "header2-text",
|
|
152
|
-
children: /*#__PURE__*/_jsx("span", {
|
|
153
|
-
children: timeLabel
|
|
154
|
-
})
|
|
155
|
-
})
|
|
156
|
-
}, item.slotId);
|
|
157
|
-
}
|
|
158
|
-
const indents = [];
|
|
159
|
-
for (let i = 0; i < item.indent; i += 1) {
|
|
160
|
-
indents.push(/*#__PURE__*/_jsx("span", {
|
|
161
|
-
className: "expander-space"
|
|
162
|
-
}, `es${i}`));
|
|
163
|
-
}
|
|
164
|
-
return renderSlotItem(item, indents);
|
|
165
|
-
});
|
|
166
|
-
return /*#__PURE__*/_jsx("section", {
|
|
167
|
-
style: {
|
|
168
|
-
paddingBottom
|
|
169
|
-
},
|
|
170
|
-
children: /*#__PURE__*/_jsx("table", {
|
|
171
|
-
className: "resource-table",
|
|
172
|
-
children: /*#__PURE__*/_jsx("tbody", {
|
|
173
|
-
children: resourceList
|
|
174
|
-
})
|
|
175
|
-
})
|
|
176
|
-
});
|
|
67
|
+
return (_jsx("section", { style: { paddingBottom }, children: _jsx("table", { className: "resource-table", children: _jsx("tbody", { children: resourceList }) }) }));
|
|
177
68
|
}
|
|
178
|
-
|
|
179
|
-
schedulerData: PropTypes.object.isRequired,
|
|
180
|
-
schedulerDataVersion: PropTypes.number,
|
|
181
|
-
contentScrollbarHeight: PropTypes.number.isRequired,
|
|
182
|
-
slotClickedFunc: PropTypes.func,
|
|
183
|
-
slotItemTemplateResolver: PropTypes.func,
|
|
184
|
-
toggleExpandFunc: PropTypes.func,
|
|
185
|
-
CustomResourceCell: PropTypes.func,
|
|
186
|
-
isSelecting: PropTypes.bool,
|
|
187
|
-
selectedResourceIds: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])), PropTypes.instanceOf(Set)])
|
|
188
|
-
};
|
|
189
|
-
export default /*#__PURE__*/React.memo(ResourceView);
|
|
69
|
+
export default React.memo(ResourceView);
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { type Dayjs } from 'dayjs';
|
|
2
|
+
import { CellUnit, ViewType } from '../config/default';
|
|
3
|
+
import type { Behaviors, DateInput, EventGroup, Header, HeaderItem, Id, LocaleDayjs, RenderItem, Resource, SchedulerConfig, SchedulerEvent, Size, Slot } from '../types';
|
|
4
|
+
type StepUnit = 'minutes' | 'days' | 'weeks' | 'months' | 'years' | 'quarters';
|
|
5
|
+
export default class SchedulerData {
|
|
6
|
+
resources: Resource[];
|
|
7
|
+
events: SchedulerEvent[];
|
|
8
|
+
eventGroups: EventGroup[];
|
|
9
|
+
eventGroupsAutoGenerated: boolean;
|
|
10
|
+
viewType: ViewType;
|
|
11
|
+
cellUnit: CellUnit;
|
|
12
|
+
showAgenda: boolean;
|
|
13
|
+
isEventPerspective: boolean;
|
|
14
|
+
resizing: boolean;
|
|
15
|
+
scrollToSpecialDayjs: boolean;
|
|
16
|
+
documentWidth: number;
|
|
17
|
+
documentHeight: number;
|
|
18
|
+
schedulerHeaderHeight: number;
|
|
19
|
+
version: number;
|
|
20
|
+
localeDayjs: LocaleDayjs;
|
|
21
|
+
config: SchedulerConfig;
|
|
22
|
+
behaviors: Behaviors;
|
|
23
|
+
selectDate: Dayjs;
|
|
24
|
+
startDate: Dayjs;
|
|
25
|
+
endDate: Dayjs;
|
|
26
|
+
timeSlots: Header[];
|
|
27
|
+
headers: Header[];
|
|
28
|
+
renderData: RenderItem[];
|
|
29
|
+
_shouldReloadViewType: boolean;
|
|
30
|
+
_batchCount: number;
|
|
31
|
+
_versionChangeCallback: ((version: number) => void) | null;
|
|
32
|
+
_pendingVersion?: number;
|
|
33
|
+
constructor(date?: DateInput, viewType?: ViewType, showAgenda?: boolean, isEventPerspective?: boolean, newConfig?: Partial<SchedulerConfig> | undefined, newBehaviors?: Partial<Behaviors> | undefined);
|
|
34
|
+
_createLocaleDayjs(): LocaleDayjs;
|
|
35
|
+
/**
|
|
36
|
+
* Update user-facing labels from the i18n provider
|
|
37
|
+
* This allows apps to provide localized labels via setLabelsProvider()
|
|
38
|
+
* @private
|
|
39
|
+
*/
|
|
40
|
+
_updateLabelsFromI18n(locale?: string): void;
|
|
41
|
+
setVersionChangeNotifier(callback: ((version: number) => void) | null | undefined): void;
|
|
42
|
+
beginBatch(): void;
|
|
43
|
+
endBatch(): void;
|
|
44
|
+
bumpVersion(): void;
|
|
45
|
+
getVersion(): number;
|
|
46
|
+
isVerticalResourceView(): boolean;
|
|
47
|
+
setSchedulerLocale(preset: string): void;
|
|
48
|
+
setResources(resources: Resource[]): void;
|
|
49
|
+
setEventGroupsAutoGenerated(autoGenerated: boolean): void;
|
|
50
|
+
setEventGroups(eventGroups: EventGroup[]): void;
|
|
51
|
+
setMinuteStep(minuteStep: number): void;
|
|
52
|
+
setUnderneathHeight(underneathHeight: number): void;
|
|
53
|
+
getMinuteStepsInHour(): number;
|
|
54
|
+
addResource(resource: Resource): void;
|
|
55
|
+
addEventGroup(eventGroup: EventGroup): void;
|
|
56
|
+
removeEventGroupById(eventGroupId: Id): void;
|
|
57
|
+
containsEventGroupId(eventGroupId: Id): boolean;
|
|
58
|
+
setEvents(events: SchedulerEvent[]): void;
|
|
59
|
+
setScrollToSpecialDayjs(scrollToSpecialDayjs: boolean): void;
|
|
60
|
+
prev(): void;
|
|
61
|
+
next(): void;
|
|
62
|
+
setDate(date?: DateInput): void;
|
|
63
|
+
setViewType(viewType?: ViewType, showAgenda?: boolean, isEventPerspective?: boolean): void;
|
|
64
|
+
setSchedulerMaxHeight(newSchedulerMaxHeight: number): void;
|
|
65
|
+
isSchedulerResponsive(): boolean;
|
|
66
|
+
toggleExpandStatus(slotId: Id): void;
|
|
67
|
+
isResourceViewResponsive(): boolean;
|
|
68
|
+
isContentViewResponsive(): boolean;
|
|
69
|
+
getSchedulerWidth(): number;
|
|
70
|
+
getSchedulerHeight(): number;
|
|
71
|
+
_getConfiguredResourceTableWidth(): number;
|
|
72
|
+
getResourceTableWidth(): number;
|
|
73
|
+
getContentCellWidth(): number;
|
|
74
|
+
getContentTableWidth(): number;
|
|
75
|
+
getScrollToSpecialDayjs(): boolean;
|
|
76
|
+
getSlots(): Slot[];
|
|
77
|
+
getSlotById(slotId: Id): Slot | undefined;
|
|
78
|
+
getResourceById(resourceId: Id): Resource | undefined;
|
|
79
|
+
getHeaderGroupRowsHeight(): number;
|
|
80
|
+
getTableHeaderHeight(): number;
|
|
81
|
+
getSchedulerContentDesiredHeight(): number;
|
|
82
|
+
getCellMaxEvents(): number;
|
|
83
|
+
getSelectedDate(): string;
|
|
84
|
+
getViewStartDate(): Dayjs;
|
|
85
|
+
getViewEndDate(): Dayjs;
|
|
86
|
+
getViewDates(): {
|
|
87
|
+
startDate: Dayjs;
|
|
88
|
+
endDate: Dayjs;
|
|
89
|
+
};
|
|
90
|
+
getDateLabel(): string;
|
|
91
|
+
addEvent(newEvent: SchedulerEvent): void;
|
|
92
|
+
updateEventStart(event: SchedulerEvent, newStart: string): void;
|
|
93
|
+
updateEventEnd(event: SchedulerEvent, newEnd: string): void;
|
|
94
|
+
swapEvent(eventSource: SchedulerEvent, eventDest: SchedulerEvent): void;
|
|
95
|
+
swapEvent2(eventSource: SchedulerEvent, eventDest: SchedulerEvent): void;
|
|
96
|
+
moveEvent(event: SchedulerEvent, newSlotId: Id, newSlotName: string | undefined, newStart: string, newEnd: string): void;
|
|
97
|
+
isEventInTimeWindow(eventStart: Dayjs, eventEnd: Dayjs, windowStart: Dayjs, windowEnd: Dayjs): boolean;
|
|
98
|
+
removeEvent(event: SchedulerEvent): void;
|
|
99
|
+
removeEventById(eventId: Id): void;
|
|
100
|
+
getResourceTableConfigWidth(): Size;
|
|
101
|
+
getContentCellConfigWidth(): Size;
|
|
102
|
+
_setDocumentWidth(documentWidth: number): void;
|
|
103
|
+
_setDocumentHeight(documentHeight: number): void;
|
|
104
|
+
_setSchedulerHeaderHeight(schedulerHeaderHeight: number): void;
|
|
105
|
+
_detachEvent(event: SchedulerEvent): void;
|
|
106
|
+
_attachEvent(event: SchedulerEvent): void;
|
|
107
|
+
_handleRecurringEvents(): void;
|
|
108
|
+
_resolveDate(num: number, date?: DateInput | undefined): void;
|
|
109
|
+
_createHeaders(): void;
|
|
110
|
+
_createInitHeaderEvents(header: Header): HeaderItem;
|
|
111
|
+
_createHeaderEvent(render: boolean, span: number, eventItem: SchedulerEvent): {
|
|
112
|
+
render: boolean;
|
|
113
|
+
span: number;
|
|
114
|
+
eventItem: SchedulerEvent;
|
|
115
|
+
};
|
|
116
|
+
_getEventSlotId(event: SchedulerEvent): Id;
|
|
117
|
+
_getEventGroupId(event: SchedulerEvent): string;
|
|
118
|
+
_getEventGroupName(event: SchedulerEvent): string;
|
|
119
|
+
_generateEventGroups(): void;
|
|
120
|
+
_createInitRenderData(isEventPerspective: boolean, eventGroups: EventGroup[], resources: Resource[], headers: Header[]): RenderItem[];
|
|
121
|
+
_getCellStep(): {
|
|
122
|
+
amount: number;
|
|
123
|
+
unit: StepUnit;
|
|
124
|
+
};
|
|
125
|
+
_getSpan(startTime: string, endTime: string, headers: Header[]): number;
|
|
126
|
+
_validateResource(resources: Resource[]): void;
|
|
127
|
+
_validateEventGroups(eventGroups: EventGroup[]): void;
|
|
128
|
+
_validateEvents(events: SchedulerEvent[]): void;
|
|
129
|
+
_validateMinuteStep(minuteStep: number): void;
|
|
130
|
+
_compare(event1: SchedulerEvent, event2: SchedulerEvent): -1 | 1;
|
|
131
|
+
_createRenderData(): void;
|
|
132
|
+
_startResizing(): void;
|
|
133
|
+
_stopResizing(): void;
|
|
134
|
+
_isResizing(): boolean;
|
|
135
|
+
}
|
|
136
|
+
export {};
|