react-big-schedule 8.1.0 → 9.0.0
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 +20 -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 +35 -26
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React, { type CSSProperties, type ReactNode } from 'react';
|
|
2
|
+
import type { ViewType } from '../config/default';
|
|
3
|
+
import type SchedulerData from './SchedulerData';
|
|
4
|
+
export interface ViewChangeEvent {
|
|
5
|
+
viewType: ViewType;
|
|
6
|
+
showAgenda: boolean;
|
|
7
|
+
isEventPerspective: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface SchedulerHeaderProps {
|
|
10
|
+
/** Receives the encoded view key: viewType, showAgenda (0|1), isEventPerspective (0|1). */
|
|
11
|
+
onViewChange: (event: {
|
|
12
|
+
target: {
|
|
13
|
+
value: string;
|
|
14
|
+
};
|
|
15
|
+
}) => void;
|
|
16
|
+
goNext: () => void;
|
|
17
|
+
goBack: () => void;
|
|
18
|
+
onSelectDate: (date: string) => void;
|
|
19
|
+
schedulerData: SchedulerData;
|
|
20
|
+
leftCustomHeader?: ReactNode;
|
|
21
|
+
rightCustomHeader?: ReactNode;
|
|
22
|
+
style?: CSSProperties;
|
|
23
|
+
}
|
|
24
|
+
declare const SchedulerHeader: React.ForwardRefExoticComponent<SchedulerHeaderProps & React.RefAttributes<HTMLDivElement>>;
|
|
25
|
+
export default SchedulerHeader;
|
|
@@ -1,156 +1,56 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Calendar, Col, Popover, Radio, Row, Space, Spin } from 'antd';
|
|
3
|
-
import dayjs from 'dayjs';
|
|
4
|
-
import PropTypes from 'prop-types';
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
2
|
import React, { useEffect, useRef, useState } from 'react';
|
|
6
3
|
import { DATE_FORMAT } from '../config/default';
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
try {
|
|
47
|
-
funcArg !== undefined ? func(funcArg) : func();
|
|
48
|
-
} finally {
|
|
49
|
-
if (isSpinEnabled && isMountedRef.current) {
|
|
50
|
-
setSpin(false);
|
|
4
|
+
import { ChevronLeft, ChevronRight } from './ui/Icons';
|
|
5
|
+
import MiniCalendar from './ui/MiniCalendar';
|
|
6
|
+
import Popover from './ui/Popover';
|
|
7
|
+
const Spinner = () => _jsx("span", { className: "rbs-spinner", role: "status", "aria-label": "Loading" });
|
|
8
|
+
const SchedulerHeader = React.forwardRef(({ onViewChange, goNext, goBack, onSelectDate, schedulerData, leftCustomHeader, rightCustomHeader, style }, ref) => {
|
|
9
|
+
const [viewSpinning, setViewSpinning] = useState(false);
|
|
10
|
+
const [dateSpinning, setDateSpinning] = useState(false);
|
|
11
|
+
const [visible, setVisible] = useState(false);
|
|
12
|
+
const { viewType, showAgenda, isEventPerspective, config } = schedulerData;
|
|
13
|
+
const dateLabel = schedulerData.getDateLabel();
|
|
14
|
+
const selectDate = schedulerData.getSelectedDate();
|
|
15
|
+
const currentView = `${viewType}${showAgenda ? 1 : 0}${isEventPerspective ? 1 : 0}`;
|
|
16
|
+
const isMountedRef = useRef(true);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
return () => {
|
|
19
|
+
isMountedRef.current = false;
|
|
20
|
+
};
|
|
21
|
+
}, []);
|
|
22
|
+
const handleEvents = (func, isViewSpinning, funcArg) => {
|
|
23
|
+
const isSpinEnabled = isViewSpinning ? config.viewChangeSpinEnabled : config.dateChangeSpinEnabled;
|
|
24
|
+
const setSpin = isViewSpinning ? setViewSpinning : setDateSpinning;
|
|
25
|
+
if (isSpinEnabled) {
|
|
26
|
+
setSpin(true);
|
|
27
|
+
}
|
|
28
|
+
const coreFunc = () => {
|
|
29
|
+
try {
|
|
30
|
+
func(funcArg);
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
if (isSpinEnabled && isMountedRef.current) {
|
|
34
|
+
setSpin(false);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
if (isSpinEnabled) {
|
|
39
|
+
setTimeout(coreFunc, config.schedulerHeaderEventsFuncsTimeoutMs);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
coreFunc();
|
|
51
43
|
}
|
|
52
|
-
}
|
|
53
44
|
};
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
children:
|
|
63
|
-
locale: calendarLocale,
|
|
64
|
-
defaultValue: dayjs(selectDate),
|
|
65
|
-
fullscreen: false,
|
|
66
|
-
onSelect: date => {
|
|
67
|
-
setVisible(false);
|
|
68
|
-
handleEvents(onSelectDate, false, date.format(DATE_FORMAT));
|
|
69
|
-
}
|
|
70
|
-
})
|
|
71
|
-
});
|
|
72
|
-
const radioButtonList = config.views.map(item => /*#__PURE__*/_jsx(RadioButton, {
|
|
73
|
-
value: `${item.viewType}${item.showAgenda ? 1 : 0}${item.isEventPerspective ? 1 : 0}`,
|
|
74
|
-
children: /*#__PURE__*/_jsx("span", {
|
|
75
|
-
style: {
|
|
76
|
-
margin: '0px 8px'
|
|
77
|
-
},
|
|
78
|
-
children: item.viewName
|
|
79
|
-
})
|
|
80
|
-
}, `${item.viewType}${item.showAgenda ? 1 : 0}${item.isEventPerspective ? 1 : 0}`));
|
|
81
|
-
return /*#__PURE__*/_jsxs(Row, {
|
|
82
|
-
ref: ref,
|
|
83
|
-
gutter: [10, 10],
|
|
84
|
-
align: "middle",
|
|
85
|
-
justify: "space-between",
|
|
86
|
-
style: {
|
|
87
|
-
marginInline: 0,
|
|
88
|
-
...style
|
|
89
|
-
},
|
|
90
|
-
children: [leftCustomHeader, /*#__PURE__*/_jsx(Col, {
|
|
91
|
-
children: /*#__PURE__*/_jsx("div", {
|
|
92
|
-
className: "header2-text",
|
|
93
|
-
children: /*#__PURE__*/_jsxs(Space, {
|
|
94
|
-
children: [/*#__PURE__*/_jsxs("div", {
|
|
95
|
-
children: [/*#__PURE__*/_jsx(LeftOutlined, {
|
|
96
|
-
style: {
|
|
97
|
-
marginRight: '8px'
|
|
98
|
-
},
|
|
99
|
-
className: "icon-nav",
|
|
100
|
-
onClick: () => handleEvents(goBack, false)
|
|
101
|
-
}), config.calendarPopoverEnabled ? /*#__PURE__*/_jsx(Popover, {
|
|
102
|
-
content: popover,
|
|
103
|
-
placement: "bottomLeft",
|
|
104
|
-
trigger: "click",
|
|
105
|
-
open: visible,
|
|
106
|
-
onOpenChange: setVisible,
|
|
107
|
-
overlayClassName: "scheduler-header-popover",
|
|
108
|
-
children: /*#__PURE__*/_jsx("span", {
|
|
109
|
-
className: "header2-text-label",
|
|
110
|
-
style: {
|
|
111
|
-
cursor: 'pointer'
|
|
112
|
-
},
|
|
113
|
-
children: dateLabel
|
|
114
|
-
})
|
|
115
|
-
}) : /*#__PURE__*/_jsx("span", {
|
|
116
|
-
className: "header2-text-label",
|
|
117
|
-
children: dateLabel
|
|
118
|
-
}), /*#__PURE__*/_jsx(RightOutlined, {
|
|
119
|
-
style: {
|
|
120
|
-
marginLeft: '8px'
|
|
121
|
-
},
|
|
122
|
-
className: "icon-nav",
|
|
123
|
-
onClick: () => handleEvents(goNext, false)
|
|
124
|
-
})]
|
|
125
|
-
}), /*#__PURE__*/_jsx(Spin, {
|
|
126
|
-
spinning: dateSpinning
|
|
127
|
-
})]
|
|
128
|
-
})
|
|
129
|
-
})
|
|
130
|
-
}), /*#__PURE__*/_jsx(Col, {
|
|
131
|
-
children: /*#__PURE__*/_jsxs(Space, {
|
|
132
|
-
children: [/*#__PURE__*/_jsx(Spin, {
|
|
133
|
-
spinning: viewSpinning
|
|
134
|
-
}), /*#__PURE__*/_jsx(RadioGroup, {
|
|
135
|
-
buttonStyle: "solid",
|
|
136
|
-
defaultValue: defaultValue,
|
|
137
|
-
size: "default",
|
|
138
|
-
onChange: event => handleEvents(onViewChange, true, event),
|
|
139
|
-
children: radioButtonList
|
|
140
|
-
})]
|
|
141
|
-
})
|
|
142
|
-
}), rightCustomHeader]
|
|
143
|
-
});
|
|
45
|
+
const popover = (_jsx("div", { className: "rbs-popover-calendar", children: _jsx(MiniCalendar, { dayjs: schedulerData.localeDayjs, value: selectDate, onSelect: date => {
|
|
46
|
+
setVisible(false);
|
|
47
|
+
handleEvents(onSelectDate, false, date.format(DATE_FORMAT));
|
|
48
|
+
} }) }));
|
|
49
|
+
const viewButtons = config.views.map(item => {
|
|
50
|
+
const value = `${item.viewType}${item.showAgenda ? 1 : 0}${item.isEventPerspective ? 1 : 0}`;
|
|
51
|
+
return (_jsx("button", { type: "button", "aria-pressed": value === currentView, onClick: () => handleEvents(onViewChange, true, { target: { value } }), children: _jsx("span", { style: { margin: '0px 8px' }, children: item.viewName }) }, value));
|
|
52
|
+
});
|
|
53
|
+
return (_jsxs("div", { ref: ref, className: "rbs:flex rbs:flex-wrap rbs:items-center rbs:justify-between rbs:gap-2.5", style: style, children: [leftCustomHeader, _jsxs("div", { className: "header2-text rbs:flex rbs:items-center rbs:gap-2", children: [_jsxs("div", { className: "rbs:flex rbs:items-center", children: [_jsx(ChevronLeft, { style: { marginRight: '8px' }, className: "icon-nav", onClick: () => handleEvents(goBack, false, undefined) }), config.calendarPopoverEnabled ? (_jsx(Popover, { content: popover, placement: "bottomLeft", trigger: "click", open: visible, onOpenChange: setVisible, className: "scheduler-header-popover", children: _jsx("span", { className: "header2-text-label", style: { cursor: 'pointer' }, children: dateLabel }) })) : (_jsx("span", { className: "header2-text-label", children: dateLabel })), _jsx(ChevronRight, { style: { marginLeft: '8px' }, className: "icon-nav", onClick: () => handleEvents(goNext, false, undefined) })] }), dateSpinning && _jsx(Spinner, {})] }), _jsxs("div", { className: "rbs:flex rbs:items-center rbs:gap-2", children: [viewSpinning && _jsx(Spinner, {}), _jsx("div", { className: "rbs-segmented", role: "group", children: viewButtons })] }), rightCustomHeader] }));
|
|
144
54
|
});
|
|
145
|
-
SchedulerHeader.propTypes = {
|
|
146
|
-
onViewChange: PropTypes.func.isRequired,
|
|
147
|
-
goNext: PropTypes.func.isRequired,
|
|
148
|
-
goBack: PropTypes.func.isRequired,
|
|
149
|
-
onSelectDate: PropTypes.func.isRequired,
|
|
150
|
-
schedulerData: PropTypes.object.isRequired,
|
|
151
|
-
leftCustomHeader: PropTypes.object,
|
|
152
|
-
rightCustomHeader: PropTypes.object,
|
|
153
|
-
style: PropTypes.object
|
|
154
|
-
};
|
|
155
55
|
SchedulerHeader.displayName = 'SchedulerHeader';
|
|
156
|
-
export default SchedulerHeader;
|
|
56
|
+
export default SchedulerHeader;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type SchedulerData from './SchedulerData';
|
|
2
|
+
export interface SelectedAreaProps {
|
|
3
|
+
schedulerData: SchedulerData;
|
|
4
|
+
left: number;
|
|
5
|
+
width: number;
|
|
6
|
+
}
|
|
7
|
+
declare function SelectedArea({ left, width, schedulerData }: SelectedAreaProps): import("react").JSX.Element;
|
|
8
|
+
export default SelectedArea;
|
|
@@ -1,28 +1,13 @@
|
|
|
1
|
-
import PropTypes from 'prop-types';
|
|
2
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
function SelectedArea({
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
width,
|
|
14
|
-
top: 0,
|
|
15
|
-
bottom: 0,
|
|
16
|
-
backgroundColor: config.selectedAreaColor
|
|
17
|
-
};
|
|
18
|
-
return /*#__PURE__*/_jsx("div", {
|
|
19
|
-
className: "selected-area",
|
|
20
|
-
style: selectedAreaStyle
|
|
21
|
-
});
|
|
2
|
+
function SelectedArea({ left, width, schedulerData }) {
|
|
3
|
+
const { config } = schedulerData;
|
|
4
|
+
const selectedAreaStyle = {
|
|
5
|
+
left,
|
|
6
|
+
width,
|
|
7
|
+
top: 0,
|
|
8
|
+
bottom: 0,
|
|
9
|
+
backgroundColor: config.selectedAreaColor,
|
|
10
|
+
};
|
|
11
|
+
return _jsx("div", { className: "selected-area", style: selectedAreaStyle });
|
|
22
12
|
}
|
|
23
|
-
|
|
24
|
-
schedulerData: PropTypes.object.isRequired,
|
|
25
|
-
left: PropTypes.number.isRequired,
|
|
26
|
-
width: PropTypes.number.isRequired
|
|
27
|
-
};
|
|
28
|
-
export default SelectedArea;
|
|
13
|
+
export default SelectedArea;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SummaryResult } from '../types';
|
|
2
|
+
import type SchedulerData from './SchedulerData';
|
|
3
|
+
export interface SummaryProps {
|
|
4
|
+
schedulerData: SchedulerData;
|
|
5
|
+
summary: Partial<SummaryResult>;
|
|
6
|
+
left: number;
|
|
7
|
+
width: number;
|
|
8
|
+
top: number;
|
|
9
|
+
}
|
|
10
|
+
declare function Summary({ schedulerData, summary, left, width, top }: SummaryProps): import("react").JSX.Element;
|
|
11
|
+
export default Summary;
|
|
@@ -1,52 +1,23 @@
|
|
|
1
|
-
import PropTypes from 'prop-types';
|
|
2
|
-
import { SummaryPos } from '../config/default';
|
|
3
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
config
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
textAlign,
|
|
25
|
-
marginLeft: '6px',
|
|
26
|
-
marginRight: '6px',
|
|
27
|
-
...(summary.fontSize !== undefined ? {
|
|
28
|
-
fontSize: summary.fontSize
|
|
29
|
-
} : {})
|
|
30
|
-
};
|
|
31
|
-
return /*#__PURE__*/_jsx("div", {
|
|
32
|
-
className: "timeline-event header2-text",
|
|
33
|
-
style: {
|
|
34
|
-
left,
|
|
35
|
-
width,
|
|
36
|
-
top,
|
|
37
|
-
cursor: 'default'
|
|
38
|
-
},
|
|
39
|
-
children: /*#__PURE__*/_jsx("div", {
|
|
40
|
-
style: style,
|
|
41
|
-
children: summary.text
|
|
42
|
-
})
|
|
43
|
-
});
|
|
2
|
+
import { SummaryPos } from '../config/default';
|
|
3
|
+
function Summary({ schedulerData, summary, left, width, top }) {
|
|
4
|
+
const { config } = schedulerData;
|
|
5
|
+
const color = summary.color !== undefined ? summary.color : config.summaryColor;
|
|
6
|
+
let textAlign = 'center';
|
|
7
|
+
if (config.summaryPos === SummaryPos.TopRight || config.summaryPos === SummaryPos.BottomRight) {
|
|
8
|
+
textAlign = 'right';
|
|
9
|
+
}
|
|
10
|
+
else if (config.summaryPos === SummaryPos.TopLeft || config.summaryPos === SummaryPos.BottomLeft) {
|
|
11
|
+
textAlign = 'left';
|
|
12
|
+
}
|
|
13
|
+
const style = {
|
|
14
|
+
height: config.eventItemHeight,
|
|
15
|
+
color,
|
|
16
|
+
textAlign,
|
|
17
|
+
marginLeft: '6px',
|
|
18
|
+
marginRight: '6px',
|
|
19
|
+
...(summary.fontSize !== undefined ? { fontSize: summary.fontSize } : {}),
|
|
20
|
+
};
|
|
21
|
+
return (_jsx("div", { className: "timeline-event header2-text", style: { left, width, top, cursor: 'default' }, children: _jsx("div", { style: style, children: summary.text }) }));
|
|
44
22
|
}
|
|
45
|
-
|
|
46
|
-
schedulerData: PropTypes.object.isRequired,
|
|
47
|
-
summary: PropTypes.object.isRequired,
|
|
48
|
-
left: PropTypes.number.isRequired,
|
|
49
|
-
width: PropTypes.number.isRequired,
|
|
50
|
-
top: PropTypes.number.isRequired
|
|
51
|
-
};
|
|
52
|
-
export default Summary;
|
|
23
|
+
export default Summary;
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
2
|
import { DndProvider } from 'react-dnd';
|
|
2
3
|
import { HTML5Backend } from 'react-dnd-html5-backend';
|
|
3
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
4
|
export default function WrapperFun(Component) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
...props
|
|
10
|
-
})
|
|
11
|
-
});
|
|
12
|
-
};
|
|
13
|
-
}
|
|
5
|
+
return function WrappedComponent(props) {
|
|
6
|
+
return (_jsx(DndProvider, { backend: HTML5Backend, children: _jsx(Component, { ...props }) }));
|
|
7
|
+
};
|
|
8
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type ComponentType, type CSSProperties, type ReactNode, type RefObject } from 'react';
|
|
2
|
+
import { CellUnit, DATE_FORMAT, DATETIME_FORMAT, SummaryPos, ViewType } from '../config/default';
|
|
3
|
+
import DemoData from '../sample-data/sample1';
|
|
4
|
+
import type { Id, SlotClickedFunc, SlotItemTemplateResolver } from '../types';
|
|
5
|
+
import AddMorePopover from './AddMorePopover';
|
|
6
|
+
import DnDContext from './DnDContext';
|
|
7
|
+
import DnDSource from './DnDSource';
|
|
8
|
+
import { type NonAgendaCellHeaderTemplateResolver } from './HeaderView';
|
|
9
|
+
import { type ResourceEventsProps } from './ResourceEvents';
|
|
10
|
+
import { type CustomResourceCellProps } from './ResourceView';
|
|
11
|
+
import SchedulerData from './SchedulerData';
|
|
12
|
+
import type { ViewChangeEvent } from './SchedulerHeader';
|
|
13
|
+
import wrapperFun from './WrapperFun';
|
|
14
|
+
type ScrollHandler = (schedulerData: SchedulerData, element: HTMLElement, maxScroll: number) => void;
|
|
15
|
+
export interface SchedulerProps extends Pick<ResourceEventsProps, 'onSetAddMoreState' | 'updateEventStart' | 'updateEventEnd' | 'moveEvent' | 'movingEvent' | 'newEvent' | 'conflictOccurred' | 'subtitleGetter' | 'eventItemClick' | 'viewEventClick' | 'viewEventText' | 'viewEvent2Click' | 'viewEvent2Text' | 'eventItemTemplateResolver' | 'eventItemPopoverTemplateResolver'> {
|
|
16
|
+
/** View model that supplies configuration, layout and render data. */
|
|
17
|
+
schedulerData: SchedulerData;
|
|
18
|
+
/** Extra drag sources, merged into the DnD context on first mount. */
|
|
19
|
+
dndSources?: DnDSource[];
|
|
20
|
+
/** Parent whose height is tracked when `config.responsiveByParent` is on. */
|
|
21
|
+
parentRef?: RefObject<HTMLElement | null>;
|
|
22
|
+
className?: string;
|
|
23
|
+
style?: CSSProperties;
|
|
24
|
+
prevClick: (schedulerData: SchedulerData) => void;
|
|
25
|
+
nextClick: (schedulerData: SchedulerData) => void;
|
|
26
|
+
onViewChange: (schedulerData: SchedulerData, view: ViewChangeEvent) => void;
|
|
27
|
+
onSelectDate: (schedulerData: SchedulerData, date: string) => void;
|
|
28
|
+
leftCustomHeader?: ReactNode;
|
|
29
|
+
rightCustomHeader?: ReactNode;
|
|
30
|
+
slotClickedFunc?: SlotClickedFunc;
|
|
31
|
+
toggleExpandFunc?: (schedulerData: SchedulerData, slotId: Id) => void;
|
|
32
|
+
slotItemTemplateResolver?: SlotItemTemplateResolver;
|
|
33
|
+
nonAgendaCellHeaderTemplateResolver?: NonAgendaCellHeaderTemplateResolver;
|
|
34
|
+
onScrollLeft?: ScrollHandler;
|
|
35
|
+
onScrollRight?: ScrollHandler;
|
|
36
|
+
onScrollTop?: ScrollHandler;
|
|
37
|
+
onScrollBottom?: ScrollHandler;
|
|
38
|
+
CustomResourceHeader?: ComponentType;
|
|
39
|
+
CustomResourceCell?: ComponentType<CustomResourceCellProps>;
|
|
40
|
+
/** Extra style for the resource column header cell. */
|
|
41
|
+
configTableHeaderStyle?: CSSProperties;
|
|
42
|
+
}
|
|
43
|
+
declare function Scheduler(props: SchedulerProps): import("react").JSX.Element;
|
|
44
|
+
export { AddMorePopover, CellUnit, DATE_FORMAT, DATETIME_FORMAT, DemoData, DnDContext, DnDSource, Scheduler, SchedulerData, SummaryPos, ViewType, wrapperFun, };
|