@steedos-widgets/fullcalendar-scheduler 6.10.53-beta.8 → 6.10.53
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/dist/assets.json +5 -5
- package/dist/fullcalendar.umd.css +40 -1
- package/dist/fullcalendar.umd.js +97 -3
- package/package.json +2 -2
package/dist/assets.json
CHANGED
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
{
|
|
13
13
|
"package": "@steedos-widgets/fullcalendar-scheduler",
|
|
14
14
|
"urls": [
|
|
15
|
-
"https://unpkg.com/@steedos-widgets/fullcalendar-scheduler@6.10.53
|
|
16
|
-
"https://unpkg.com/@steedos-widgets/fullcalendar-scheduler@6.10.53
|
|
15
|
+
"https://unpkg.com/@steedos-widgets/fullcalendar-scheduler@6.10.53/dist/fullcalendar.umd.js",
|
|
16
|
+
"https://unpkg.com/@steedos-widgets/fullcalendar-scheduler@6.10.53/dist/fullcalendar.umd.css"
|
|
17
17
|
],
|
|
18
18
|
"library": "BuilderFullCalendarScheduler"
|
|
19
19
|
}
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
"npm": {
|
|
25
25
|
"package": "@steedos-widgets/fullcalendar-scheduler"
|
|
26
26
|
},
|
|
27
|
-
"url": "https://unpkg.com/@steedos-widgets/fullcalendar-scheduler@6.10.53
|
|
27
|
+
"url": "https://unpkg.com/@steedos-widgets/fullcalendar-scheduler@6.10.53/dist/meta.js",
|
|
28
28
|
"urls": {
|
|
29
|
-
"default": "https://unpkg.com/@steedos-widgets/fullcalendar-scheduler@6.10.53
|
|
30
|
-
"design": "https://unpkg.com/@steedos-widgets/fullcalendar-scheduler@6.10.53
|
|
29
|
+
"default": "https://unpkg.com/@steedos-widgets/fullcalendar-scheduler@6.10.53/dist/meta.js",
|
|
30
|
+
"design": "https://unpkg.com/@steedos-widgets/fullcalendar-scheduler@6.10.53/dist/meta.js"
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
]
|
|
@@ -41,6 +41,45 @@
|
|
|
41
41
|
background-color: var(--fc-event-bg-color, #3788d8) !important;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
+
.steedos-object-listview .fc .fc-h-event .fc-event-title,
|
|
45
|
+
.steedos-object-listview .fc .fc-timeline-event .fc-event-title {
|
|
46
|
+
overflow: hidden;
|
|
47
|
+
text-overflow: ellipsis;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.steedos-fullcalendar-tooltip {
|
|
51
|
+
position: fixed;
|
|
52
|
+
z-index: 9999;
|
|
53
|
+
display: none;
|
|
54
|
+
width: max-content;
|
|
55
|
+
max-width: 320px;
|
|
56
|
+
padding: 6px 8px;
|
|
57
|
+
color: #fff;
|
|
58
|
+
font-size: 12px;
|
|
59
|
+
line-height: 1.4;
|
|
60
|
+
white-space: normal;
|
|
61
|
+
overflow-wrap: break-word;
|
|
62
|
+
pointer-events: none;
|
|
63
|
+
background: rgba(24, 24, 24, 0.92);
|
|
64
|
+
border-radius: 4px;
|
|
65
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.steedos-fullcalendar-event-full-height .fc-resource-timeline .fc-timeline-event-harness {
|
|
69
|
+
bottom: 0;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.steedos-fullcalendar-event-full-height .fc-resource-timeline .fc-timeline-events {
|
|
73
|
+
height: 100% !important;
|
|
74
|
+
padding-bottom: 0 !important;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.steedos-fullcalendar-event-full-height .fc-resource-timeline .fc-timeline-event {
|
|
78
|
+
height: 100%;
|
|
79
|
+
margin-bottom: 0;
|
|
80
|
+
box-sizing: border-box;
|
|
81
|
+
}
|
|
82
|
+
|
|
44
83
|
@media (max-width: 768px){
|
|
45
84
|
.steedos-object-listview .fc-header-toolbar{
|
|
46
85
|
display: flex;
|
|
@@ -65,4 +104,4 @@
|
|
|
65
104
|
.steedos-object-listview .fc-media-screen .fc-view-harness{
|
|
66
105
|
min-height: calc(100vh - 262px);
|
|
67
106
|
}
|
|
68
|
-
}
|
|
107
|
+
}
|
package/dist/fullcalendar.umd.js
CHANGED
|
@@ -107,6 +107,91 @@
|
|
|
107
107
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
108
108
|
};
|
|
109
109
|
|
|
110
|
+
var EVENT_TOOLTIP_CLASS_NAME = 'steedos-fullcalendar-tooltip';
|
|
111
|
+
var eventTooltipCleanups = new WeakMap();
|
|
112
|
+
var eventTooltipEl = null;
|
|
113
|
+
function getEventTooltipElement() {
|
|
114
|
+
if (!eventTooltipEl) {
|
|
115
|
+
eventTooltipEl = document.createElement('div');
|
|
116
|
+
eventTooltipEl.className = EVENT_TOOLTIP_CLASS_NAME;
|
|
117
|
+
eventTooltipEl.setAttribute('role', 'tooltip');
|
|
118
|
+
eventTooltipEl.setAttribute('aria-hidden', 'true');
|
|
119
|
+
document.body.appendChild(eventTooltipEl);
|
|
120
|
+
}
|
|
121
|
+
return eventTooltipEl;
|
|
122
|
+
}
|
|
123
|
+
function positionEventTooltip(clientX, clientY) {
|
|
124
|
+
if (!eventTooltipEl) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
var gap = 12;
|
|
128
|
+
var edgeGap = 8;
|
|
129
|
+
var tooltipRect = eventTooltipEl.getBoundingClientRect();
|
|
130
|
+
var left = clientX + gap;
|
|
131
|
+
var top = clientY + gap;
|
|
132
|
+
if (left + tooltipRect.width > window.innerWidth - edgeGap) {
|
|
133
|
+
left = clientX - tooltipRect.width - gap;
|
|
134
|
+
}
|
|
135
|
+
if (top + tooltipRect.height > window.innerHeight - edgeGap) {
|
|
136
|
+
top = clientY - tooltipRect.height - gap;
|
|
137
|
+
}
|
|
138
|
+
var maxLeft = window.innerWidth - tooltipRect.width - edgeGap;
|
|
139
|
+
var maxTop = window.innerHeight - tooltipRect.height - edgeGap;
|
|
140
|
+
eventTooltipEl.style.left = "".concat(Math.min(Math.max(edgeGap, left), Math.max(edgeGap, maxLeft)), "px");
|
|
141
|
+
eventTooltipEl.style.top = "".concat(Math.min(Math.max(edgeGap, top), Math.max(edgeGap, maxTop)), "px");
|
|
142
|
+
}
|
|
143
|
+
function showEventTooltip(title, target, mouseEvent) {
|
|
144
|
+
var tooltip = getEventTooltipElement();
|
|
145
|
+
tooltip.textContent = title;
|
|
146
|
+
tooltip.setAttribute('aria-hidden', 'false');
|
|
147
|
+
tooltip.style.display = 'block';
|
|
148
|
+
if (mouseEvent) {
|
|
149
|
+
positionEventTooltip(mouseEvent.clientX, mouseEvent.clientY);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
var targetRect = target.getBoundingClientRect();
|
|
153
|
+
positionEventTooltip(targetRect.left + targetRect.width / 2, targetRect.top + targetRect.height);
|
|
154
|
+
}
|
|
155
|
+
function hideEventTooltip() {
|
|
156
|
+
if (!eventTooltipEl) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
eventTooltipEl.setAttribute('aria-hidden', 'true');
|
|
160
|
+
eventTooltipEl.style.display = 'none';
|
|
161
|
+
}
|
|
162
|
+
function cleanupEventTooltip(target) {
|
|
163
|
+
if (!target) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
var cleanup = eventTooltipCleanups.get(target);
|
|
167
|
+
if (cleanup) {
|
|
168
|
+
cleanup();
|
|
169
|
+
eventTooltipCleanups.delete(target);
|
|
170
|
+
hideEventTooltip();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
function bindEventTooltip(target, title) {
|
|
174
|
+
cleanupEventTooltip(target);
|
|
175
|
+
target.removeAttribute('title');
|
|
176
|
+
target.setAttribute('aria-label', title);
|
|
177
|
+
var handleMouseEnter = function (event) { return showEventTooltip(title, target, event); };
|
|
178
|
+
var handleMouseMove = function (event) { return positionEventTooltip(event.clientX, event.clientY); };
|
|
179
|
+
var handleMouseLeave = function () { return hideEventTooltip(); };
|
|
180
|
+
var handleFocus = function () { return showEventTooltip(title, target); };
|
|
181
|
+
var handleBlur = function () { return hideEventTooltip(); };
|
|
182
|
+
target.addEventListener('mouseenter', handleMouseEnter);
|
|
183
|
+
target.addEventListener('mousemove', handleMouseMove);
|
|
184
|
+
target.addEventListener('mouseleave', handleMouseLeave);
|
|
185
|
+
target.addEventListener('focus', handleFocus);
|
|
186
|
+
target.addEventListener('blur', handleBlur);
|
|
187
|
+
eventTooltipCleanups.set(target, function () {
|
|
188
|
+
target.removeEventListener('mouseenter', handleMouseEnter);
|
|
189
|
+
target.removeEventListener('mousemove', handleMouseMove);
|
|
190
|
+
target.removeEventListener('mouseleave', handleMouseLeave);
|
|
191
|
+
target.removeEventListener('focus', handleFocus);
|
|
192
|
+
target.removeEventListener('blur', handleBlur);
|
|
193
|
+
});
|
|
194
|
+
}
|
|
110
195
|
var DivWrapper = /** @class */ (function (_super) {
|
|
111
196
|
__extends(DivWrapper, _super);
|
|
112
197
|
function DivWrapper() {
|
|
@@ -129,6 +214,7 @@
|
|
|
129
214
|
// 2. 创建一个 ref 来存储 FullCalendar 实例
|
|
130
215
|
var calendarInstance = React.useRef(null);
|
|
131
216
|
var initialLocaleCode = 'zh-cn';
|
|
217
|
+
var externalEventDidMount = props.eventDidMount;
|
|
132
218
|
var dispatchEvent = function (action, value) { return __awaiter(void 0, void 0, void 0, function () {
|
|
133
219
|
var rendererEvent;
|
|
134
220
|
var _a;
|
|
@@ -171,9 +257,16 @@
|
|
|
171
257
|
dispatchEvent('eventRemove', event);
|
|
172
258
|
};
|
|
173
259
|
var handleEventDidMount = function (event) {
|
|
260
|
+
var _a, _b, _c;
|
|
261
|
+
var title = ((_a = event === null || event === void 0 ? void 0 : event.event) === null || _a === void 0 ? void 0 : _a.title) || ((_c = (_b = event === null || event === void 0 ? void 0 : event.event) === null || _b === void 0 ? void 0 : _b.extendedProps) === null || _c === void 0 ? void 0 : _c.name);
|
|
262
|
+
if (title && (event === null || event === void 0 ? void 0 : event.el)) {
|
|
263
|
+
bindEventTooltip(event.el, title);
|
|
264
|
+
}
|
|
265
|
+
externalEventDidMount && externalEventDidMount(event);
|
|
174
266
|
dispatchEvent('eventDidMount', event);
|
|
175
267
|
};
|
|
176
268
|
var handleEventWillUnmount = function (event) {
|
|
269
|
+
cleanupEventTooltip(event === null || event === void 0 ? void 0 : event.el);
|
|
177
270
|
dispatchEvent('eventWillUnmount', event);
|
|
178
271
|
};
|
|
179
272
|
var handleNoEventsDidMount = function (event) {
|
|
@@ -195,11 +288,11 @@
|
|
|
195
288
|
// 确保 FullCalendar 实例不存在,避免重复初始化
|
|
196
289
|
if (!calendarInstance.current) {
|
|
197
290
|
// 3. 初始化 FullCalendar 实例,使用 resourceTimelineWeek 视图
|
|
198
|
-
var calendar = new window.FullCalendar.Calendar(calendarRef.current, __assign({ headerToolbar: {
|
|
291
|
+
var calendar = new window.FullCalendar.Calendar(calendarRef.current, __assign(__assign({ headerToolbar: {
|
|
199
292
|
left: 'title',
|
|
200
293
|
center: '',
|
|
201
294
|
right: 'prev,next today dayGridMonth,timeGridWeek,timeGridDay,listWeek'
|
|
202
|
-
}, resources: handleGetRresources, resourceAreaWidth: "20%", locale: initialLocaleCode, editable: true, selectable: true, selectMirror: true, dayMaxEvents: true, initialView: 'dayGridMonth', events: handleGetEvents, select: handleSelect, eventClick: handleEventClick, eventsSet: handleEventsSet, eventAdd: handleEventAdd, eventChange: handleEventChange, eventRemove: handleEventRemove,
|
|
295
|
+
}, resources: handleGetRresources, resourceAreaWidth: "20%", locale: initialLocaleCode, editable: true, selectable: true, selectMirror: true, dayMaxEvents: true, initialView: 'dayGridMonth', events: handleGetEvents, select: handleSelect, eventClick: handleEventClick, eventsSet: handleEventsSet, eventAdd: handleEventAdd, eventChange: handleEventChange, eventRemove: handleEventRemove, eventWillUnmount: handleEventWillUnmount, noEventsDidMount: handleNoEventsDidMount, noEventsWillUnmount: handleNoEventsWillUnmount, forceEventDuration: true, schedulerLicenseKey: 'CC-Attribution-NonCommercial-NoDerivatives' }, props), { eventDidMount: handleEventDidMount }));
|
|
203
296
|
// 4. 渲染日历
|
|
204
297
|
calendar.render();
|
|
205
298
|
// 5. 将实例存储到 ref 中,以便在卸载时销毁
|
|
@@ -213,6 +306,7 @@
|
|
|
213
306
|
calendarInstance.current.destroy();
|
|
214
307
|
calendarInstance.current = null;
|
|
215
308
|
}
|
|
309
|
+
hideEventTooltip();
|
|
216
310
|
};
|
|
217
311
|
}, []); // 空数组依赖项表示只在挂载和卸载时运行
|
|
218
312
|
// forceEventDuration属性设置为true修正了把全天事件拖动变更到非全天事件时end为空造成的事件在画布上看不到的问题。
|
|
@@ -247,7 +341,7 @@
|
|
|
247
341
|
// {...props}
|
|
248
342
|
// />
|
|
249
343
|
React__default["default"].createElement(DivWrapper, __assign({ id: 'calendar', ref: calendarWrapperRef }, props),
|
|
250
|
-
React__default["default"].createElement("div", { id: 'calendar', ref: calendarRef })));
|
|
344
|
+
React__default["default"].createElement("div", { id: 'calendar', className: props.className, ref: calendarRef })));
|
|
251
345
|
};
|
|
252
346
|
|
|
253
347
|
exports.AmisFullCalendar = AmisFullCalendar;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos-widgets/fullcalendar-scheduler",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "6.10.53
|
|
4
|
+
"version": "6.10.53",
|
|
5
5
|
"main": "dist/fullcalendar.cjs.js",
|
|
6
6
|
"module": "dist/fullcalendar.esm.js",
|
|
7
7
|
"unpkg": "dist/fullcalendar.umd.js",
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"rollup-plugin-tslib-resolve-id": "^0.0.0",
|
|
47
47
|
"rollup-plugin-visualizer": "^5.8.0"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "699c0b411723ab7d1686590be545c2b6fcf246c7"
|
|
50
50
|
}
|