@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 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-beta.8/dist/fullcalendar.umd.js",
16
- "https://unpkg.com/@steedos-widgets/fullcalendar-scheduler@6.10.53-beta.8/dist/fullcalendar.umd.css"
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-beta.8/dist/meta.js",
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-beta.8/dist/meta.js",
30
- "design": "https://unpkg.com/@steedos-widgets/fullcalendar-scheduler@6.10.53-beta.8/dist/meta.js"
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
+ }
@@ -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, eventDidMount: handleEventDidMount, eventWillUnmount: handleEventWillUnmount, noEventsDidMount: handleNoEventsDidMount, noEventsWillUnmount: handleNoEventsWillUnmount, forceEventDuration: true, schedulerLicenseKey: 'CC-Attribution-NonCommercial-NoDerivatives' }, props));
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-beta.8",
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": "74bcc3eede21554ec7836e20931d8ea3570bd393"
49
+ "gitHead": "699c0b411723ab7d1686590be545c2b6fcf246c7"
50
50
  }