sa2kit 1.6.7 → 1.6.8
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/calendar/index.js +332 -399
- package/dist/calendar/index.js.map +1 -1
- package/dist/calendar/index.mjs +239 -306
- package/dist/calendar/index.mjs.map +1 -1
- package/dist/chunk-CDK3DHKM.mjs +634 -0
- package/dist/chunk-CDK3DHKM.mjs.map +1 -0
- package/dist/chunk-L5PW2YTI.js +647 -0
- package/dist/chunk-L5PW2YTI.js.map +1 -0
- package/dist/chunk-VHU2YGRQ.mjs +165 -0
- package/dist/chunk-VHU2YGRQ.mjs.map +1 -0
- package/dist/chunk-ZDRBMSTS.js +173 -0
- package/dist/chunk-ZDRBMSTS.js.map +1 -0
- package/dist/index.d.mts +23 -1
- package/dist/index.d.ts +23 -1
- package/dist/index.js +14 -6
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -5
- package/dist/index.mjs.map +1 -1
- package/dist/mmd/index.js +2 -2
- package/dist/mmd/index.mjs +1 -1
- package/dist/music/index.d.mts +4 -9
- package/dist/music/index.d.ts +4 -9
- package/dist/music/index.js +14 -6
- package/dist/music/index.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunk-GAC4J5GX.js +0 -228
- package/dist/chunk-GAC4J5GX.js.map +0 -1
- package/dist/chunk-IEA55H3G.js +0 -106
- package/dist/chunk-IEA55H3G.js.map +0 -1
- package/dist/chunk-R2F4BXUU.mjs +0 -100
- package/dist/chunk-R2F4BXUU.mjs.map +0 -1
- package/dist/chunk-T6TE7GTY.mjs +0 -218
- package/dist/chunk-T6TE7GTY.mjs.map +0 -1
package/dist/calendar/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkZDRBMSTS_js = require('../chunk-ZDRBMSTS.js');
|
|
4
4
|
require('../chunk-DGUM43GV.js');
|
|
5
|
-
var
|
|
5
|
+
var React2 = require('react');
|
|
6
6
|
var core = require('@dnd-kit/core');
|
|
7
7
|
|
|
8
8
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var React2__default = /*#__PURE__*/_interopDefault(React2);
|
|
11
11
|
|
|
12
12
|
// src/calendar/types/index.ts
|
|
13
13
|
var RecurrenceType = /* @__PURE__ */ ((RecurrenceType3) => {
|
|
@@ -266,73 +266,6 @@ function isValidDate(date) {
|
|
|
266
266
|
function cloneDate(date) {
|
|
267
267
|
return new Date(date.getTime());
|
|
268
268
|
}
|
|
269
|
-
var Modal = ({
|
|
270
|
-
isOpen,
|
|
271
|
-
onClose,
|
|
272
|
-
title,
|
|
273
|
-
children,
|
|
274
|
-
width = 600,
|
|
275
|
-
maskClosable = true
|
|
276
|
-
}) => {
|
|
277
|
-
React3.useEffect(() => {
|
|
278
|
-
if (isOpen) {
|
|
279
|
-
document.body.style.overflow = "hidden";
|
|
280
|
-
} else {
|
|
281
|
-
document.body.style.overflow = "unset";
|
|
282
|
-
}
|
|
283
|
-
return () => {
|
|
284
|
-
document.body.style.overflow = "unset";
|
|
285
|
-
};
|
|
286
|
-
}, [isOpen]);
|
|
287
|
-
if (!isOpen) return null;
|
|
288
|
-
return /* @__PURE__ */ React3__default.default.createElement("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4" }, /* @__PURE__ */ React3__default.default.createElement(
|
|
289
|
-
"div",
|
|
290
|
-
{
|
|
291
|
-
className: "fixed inset-0 bg-black/50 transition-opacity",
|
|
292
|
-
onClick: () => maskClosable && onClose()
|
|
293
|
-
}
|
|
294
|
-
), /* @__PURE__ */ React3__default.default.createElement(
|
|
295
|
-
"div",
|
|
296
|
-
{
|
|
297
|
-
className: "bg-white rounded-xl shadow-2xl z-10 overflow-hidden flex flex-col transition-all transform scale-100",
|
|
298
|
-
style: { width: typeof width === "number" ? `${width}px` : width, maxWidth: "100%" }
|
|
299
|
-
},
|
|
300
|
-
title && /* @__PURE__ */ React3__default.default.createElement("div", { className: "px-6 py-4 border-b border-gray-200 flex justify-between items-center" }, /* @__PURE__ */ React3__default.default.createElement("h3", { className: "text-xl font-semibold text-gray-900" }, title), /* @__PURE__ */ React3__default.default.createElement("button", { onClick: onClose, className: "text-gray-400 hover:text-gray-600 transition-colors" }, /* @__PURE__ */ React3__default.default.createElement("span", { className: "text-2xl" }, "\xD7"))),
|
|
301
|
-
/* @__PURE__ */ React3__default.default.createElement("div", { className: "flex-1 overflow-y-auto" }, children)
|
|
302
|
-
));
|
|
303
|
-
};
|
|
304
|
-
var ConfirmModal = ({
|
|
305
|
-
isOpen,
|
|
306
|
-
onClose,
|
|
307
|
-
onConfirm,
|
|
308
|
-
title,
|
|
309
|
-
message,
|
|
310
|
-
confirmText = "\u786E\u5B9A",
|
|
311
|
-
cancelText = "\u53D6\u6D88",
|
|
312
|
-
isLoading = false
|
|
313
|
-
}) => {
|
|
314
|
-
if (!isOpen) return null;
|
|
315
|
-
return /* @__PURE__ */ React3__default.default.createElement(Modal, { isOpen, onClose, title, width: 400 }, /* @__PURE__ */ React3__default.default.createElement("div", { className: "p-6" }, /* @__PURE__ */ React3__default.default.createElement("p", { className: "text-gray-600 mb-6" }, message), /* @__PURE__ */ React3__default.default.createElement("div", { className: "flex justify-end space-x-3" }, /* @__PURE__ */ React3__default.default.createElement(
|
|
316
|
-
"button",
|
|
317
|
-
{
|
|
318
|
-
onClick: onClose,
|
|
319
|
-
className: "px-4 py-2 text-gray-700 border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors",
|
|
320
|
-
disabled: isLoading
|
|
321
|
-
},
|
|
322
|
-
cancelText
|
|
323
|
-
), /* @__PURE__ */ React3__default.default.createElement(
|
|
324
|
-
"button",
|
|
325
|
-
{
|
|
326
|
-
onClick: onConfirm,
|
|
327
|
-
className: "px-4 py-2 bg-red-600 text-white rounded-lg hover:bg-red-700 transition-colors flex items-center",
|
|
328
|
-
disabled: isLoading
|
|
329
|
-
},
|
|
330
|
-
isLoading && /* @__PURE__ */ React3__default.default.createElement("div", { className: "mr-2 w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin" }),
|
|
331
|
-
confirmText
|
|
332
|
-
))));
|
|
333
|
-
};
|
|
334
|
-
|
|
335
|
-
// src/calendar/components/EventList.tsx
|
|
336
269
|
function EventList({
|
|
337
270
|
events,
|
|
338
271
|
config,
|
|
@@ -345,11 +278,11 @@ function EventList({
|
|
|
345
278
|
loading = false,
|
|
346
279
|
className = ""
|
|
347
280
|
}) {
|
|
348
|
-
const [selectedEventIds, setSelectedEventIds] =
|
|
349
|
-
const [isSelectionMode, setIsSelectionMode] =
|
|
350
|
-
const [showBatchDeleteConfirm, setShowBatchDeleteConfirm] =
|
|
351
|
-
const [batchDeleteLoading, setBatchDeleteLoading] =
|
|
352
|
-
const sortedAndFilteredEvents =
|
|
281
|
+
const [selectedEventIds, setSelectedEventIds] = React2.useState(/* @__PURE__ */ new Set());
|
|
282
|
+
const [isSelectionMode, setIsSelectionMode] = React2.useState(false);
|
|
283
|
+
const [showBatchDeleteConfirm, setShowBatchDeleteConfirm] = React2.useState(false);
|
|
284
|
+
const [batchDeleteLoading, setBatchDeleteLoading] = React2.useState(false);
|
|
285
|
+
const sortedAndFilteredEvents = React2.useMemo(() => {
|
|
353
286
|
let filteredEvents = [...events];
|
|
354
287
|
if (config.filter.priority) {
|
|
355
288
|
filteredEvents = filteredEvents.filter((event) => event.priority === config.filter.priority);
|
|
@@ -408,13 +341,13 @@ function EventList({
|
|
|
408
341
|
});
|
|
409
342
|
return filteredEvents;
|
|
410
343
|
}, [events, config]);
|
|
411
|
-
const paginatedEvents =
|
|
344
|
+
const paginatedEvents = React2.useMemo(() => {
|
|
412
345
|
const startIndex = (config.currentPage - 1) * config.pageSize;
|
|
413
346
|
const endIndex = startIndex + config.pageSize;
|
|
414
347
|
return sortedAndFilteredEvents.slice(startIndex, endIndex);
|
|
415
348
|
}, [sortedAndFilteredEvents, config.currentPage, config.pageSize]);
|
|
416
349
|
const totalPages = Math.ceil(sortedAndFilteredEvents.length / config.pageSize);
|
|
417
|
-
const handleSelectEvent =
|
|
350
|
+
const handleSelectEvent = React2.useCallback((eventId, selected) => {
|
|
418
351
|
setSelectedEventIds((prev) => {
|
|
419
352
|
const newSet = new Set(prev);
|
|
420
353
|
if (selected) {
|
|
@@ -425,22 +358,22 @@ function EventList({
|
|
|
425
358
|
return newSet;
|
|
426
359
|
});
|
|
427
360
|
}, []);
|
|
428
|
-
const handleSelectAll =
|
|
361
|
+
const handleSelectAll = React2.useCallback((selected) => {
|
|
429
362
|
if (selected) {
|
|
430
363
|
setSelectedEventIds(new Set(paginatedEvents.map((event) => event.id)));
|
|
431
364
|
} else {
|
|
432
365
|
setSelectedEventIds(/* @__PURE__ */ new Set());
|
|
433
366
|
}
|
|
434
367
|
}, [paginatedEvents]);
|
|
435
|
-
const toggleSelectionMode =
|
|
368
|
+
const toggleSelectionMode = React2.useCallback(() => {
|
|
436
369
|
setIsSelectionMode(!isSelectionMode);
|
|
437
370
|
setSelectedEventIds(/* @__PURE__ */ new Set());
|
|
438
371
|
}, [isSelectionMode]);
|
|
439
|
-
const exitSelectionMode =
|
|
372
|
+
const exitSelectionMode = React2.useCallback(() => {
|
|
440
373
|
setIsSelectionMode(false);
|
|
441
374
|
setSelectedEventIds(/* @__PURE__ */ new Set());
|
|
442
375
|
}, []);
|
|
443
|
-
const handleBatchDelete =
|
|
376
|
+
const handleBatchDelete = React2.useCallback(async () => {
|
|
444
377
|
if (!onBatchDelete || selectedEventIds.size === 0) return;
|
|
445
378
|
setBatchDeleteLoading(true);
|
|
446
379
|
try {
|
|
@@ -454,10 +387,10 @@ function EventList({
|
|
|
454
387
|
setBatchDeleteLoading(false);
|
|
455
388
|
}
|
|
456
389
|
}, [onBatchDelete, selectedEventIds]);
|
|
457
|
-
const isAllSelected =
|
|
390
|
+
const isAllSelected = React2.useMemo(() => {
|
|
458
391
|
return paginatedEvents.length > 0 && paginatedEvents.every((event) => selectedEventIds.has(event.id));
|
|
459
392
|
}, [paginatedEvents, selectedEventIds]);
|
|
460
|
-
const isPartiallySelected =
|
|
393
|
+
const isPartiallySelected = React2.useMemo(() => {
|
|
461
394
|
return selectedEventIds.size > 0 && !isAllSelected;
|
|
462
395
|
}, [selectedEventIds.size, isAllSelected]);
|
|
463
396
|
const getPriorityDisplay = (priority) => {
|
|
@@ -520,14 +453,14 @@ function EventList({
|
|
|
520
453
|
const renderSortButton = (field, label) => {
|
|
521
454
|
const isActive = config.sort.field === field;
|
|
522
455
|
const isAsc = isActive && config.sort.direction === "asc" /* ASC */;
|
|
523
|
-
return /* @__PURE__ */
|
|
456
|
+
return /* @__PURE__ */ React2__default.default.createElement(
|
|
524
457
|
"button",
|
|
525
458
|
{
|
|
526
459
|
onClick: () => handleSortChange(field),
|
|
527
460
|
className: `flex items-center px-3 py-1.5 text-sm font-medium rounded-lg transition-colors ${isActive ? "bg-blue-100 text-blue-700" : "text-gray-600 hover:bg-gray-100"}`
|
|
528
461
|
},
|
|
529
462
|
label,
|
|
530
|
-
/* @__PURE__ */
|
|
463
|
+
/* @__PURE__ */ React2__default.default.createElement(
|
|
531
464
|
"svg",
|
|
532
465
|
{
|
|
533
466
|
className: `ml-1 w-4 h-4 transition-transform ${isActive ? isAsc ? "rotate-180" : "" : "opacity-50"}`,
|
|
@@ -535,13 +468,13 @@ function EventList({
|
|
|
535
468
|
stroke: "currentColor",
|
|
536
469
|
viewBox: "0 0 24 24"
|
|
537
470
|
},
|
|
538
|
-
/* @__PURE__ */
|
|
471
|
+
/* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
|
|
539
472
|
)
|
|
540
473
|
);
|
|
541
474
|
};
|
|
542
475
|
const renderCheckbox = (eventId) => {
|
|
543
476
|
const isChecked = selectedEventIds.has(eventId);
|
|
544
|
-
return /* @__PURE__ */
|
|
477
|
+
return /* @__PURE__ */ React2__default.default.createElement(
|
|
545
478
|
"input",
|
|
546
479
|
{
|
|
547
480
|
type: "checkbox",
|
|
@@ -555,7 +488,7 @@ function EventList({
|
|
|
555
488
|
);
|
|
556
489
|
};
|
|
557
490
|
const renderSelectAllCheckbox = () => {
|
|
558
|
-
return /* @__PURE__ */
|
|
491
|
+
return /* @__PURE__ */ React2__default.default.createElement(
|
|
559
492
|
"input",
|
|
560
493
|
{
|
|
561
494
|
type: "checkbox",
|
|
@@ -568,17 +501,17 @@ function EventList({
|
|
|
568
501
|
}
|
|
569
502
|
);
|
|
570
503
|
};
|
|
571
|
-
const renderListMode = () => /* @__PURE__ */
|
|
504
|
+
const renderListMode = () => /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-4" }, paginatedEvents.map((event) => {
|
|
572
505
|
const priorityDisplay = getPriorityDisplay(event.priority);
|
|
573
506
|
const isSelected = selectedEventIds.has(event.id);
|
|
574
|
-
return /* @__PURE__ */
|
|
507
|
+
return /* @__PURE__ */ React2__default.default.createElement(
|
|
575
508
|
"div",
|
|
576
509
|
{
|
|
577
510
|
key: event.id,
|
|
578
511
|
className: `p-4 rounded-lg border-l-4 cursor-pointer hover:shadow-md transition-all ${getEventColorClass(event.color)} ${isSelected ? "ring-2 ring-blue-500 ring-opacity-50" : ""}`,
|
|
579
512
|
onClick: () => !isSelectionMode && onEventClick(event)
|
|
580
513
|
},
|
|
581
|
-
/* @__PURE__ */
|
|
514
|
+
/* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-start justify-between" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-start gap-3 flex-1" }, isSelectionMode && /* @__PURE__ */ React2__default.default.createElement("div", { className: "pt-1" }, renderCheckbox(event.id)), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-3 mb-2" }, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-semibold text-gray-900" }, event.title), /* @__PURE__ */ React2__default.default.createElement("span", { className: `px-2 py-1 text-xs font-medium rounded border ${priorityDisplay.color}` }, priorityDisplay.text)), event.description && /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-gray-600 mb-2 line-clamp-2" }, event.description), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-4 text-sm text-gray-500" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" })), /* @__PURE__ */ React2__default.default.createElement("span", null, event.startTime.toLocaleDateString("zh-CN"), " ", !event.allDay && event.startTime.toLocaleTimeString("zh-CN", { hour: "2-digit", minute: "2-digit" }))), event.location && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z" }), /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 11a3 3 0 11-6 0 3 3 0 016 0z" })), /* @__PURE__ */ React2__default.default.createElement("span", null, event.location))))), !isSelectionMode && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-2 ml-4" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
582
515
|
"button",
|
|
583
516
|
{
|
|
584
517
|
onClick: (e) => {
|
|
@@ -588,8 +521,8 @@ function EventList({
|
|
|
588
521
|
className: "p-2 text-gray-400 hover:text-blue-600 hover:bg-blue-50 rounded-lg transition-colors",
|
|
589
522
|
title: "\u7F16\u8F91\u4E8B\u4EF6"
|
|
590
523
|
},
|
|
591
|
-
/* @__PURE__ */
|
|
592
|
-
), /* @__PURE__ */
|
|
524
|
+
/* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z" }))
|
|
525
|
+
), /* @__PURE__ */ React2__default.default.createElement(
|
|
593
526
|
"button",
|
|
594
527
|
{
|
|
595
528
|
onClick: (e) => {
|
|
@@ -599,24 +532,24 @@ function EventList({
|
|
|
599
532
|
className: "p-2 text-gray-400 hover:text-red-600 hover:bg-red-50 rounded-lg transition-colors",
|
|
600
533
|
title: "\u5220\u9664\u4E8B\u4EF6"
|
|
601
534
|
},
|
|
602
|
-
/* @__PURE__ */
|
|
535
|
+
/* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" }))
|
|
603
536
|
)))
|
|
604
537
|
);
|
|
605
538
|
}));
|
|
606
|
-
const renderGridMode = () => /* @__PURE__ */
|
|
539
|
+
const renderGridMode = () => /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4" }, paginatedEvents.map((event) => {
|
|
607
540
|
const priorityDisplay = getPriorityDisplay(event.priority);
|
|
608
541
|
const isSelected = selectedEventIds.has(event.id);
|
|
609
|
-
return /* @__PURE__ */
|
|
542
|
+
return /* @__PURE__ */ React2__default.default.createElement(
|
|
610
543
|
"div",
|
|
611
544
|
{
|
|
612
545
|
key: event.id,
|
|
613
546
|
className: `p-4 rounded-lg border cursor-pointer hover:shadow-lg transition-all ${getEventColorClass(event.color)} border-l-4 ${isSelected ? "ring-2 ring-blue-500 ring-opacity-50" : ""}`,
|
|
614
547
|
onClick: () => !isSelectionMode && onEventClick(event)
|
|
615
548
|
},
|
|
616
|
-
/* @__PURE__ */
|
|
617
|
-
event.description && /* @__PURE__ */
|
|
618
|
-
/* @__PURE__ */
|
|
619
|
-
!isSelectionMode && /* @__PURE__ */
|
|
549
|
+
/* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-start justify-between mb-3" }, isSelectionMode && /* @__PURE__ */ React2__default.default.createElement("div", { className: "pt-1 mr-2" }, renderCheckbox(event.id)), /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-semibold text-gray-900 flex-1 pr-2" }, event.title), /* @__PURE__ */ React2__default.default.createElement("span", { className: `px-2 py-1 text-xs font-medium rounded border flex-shrink-0 ${priorityDisplay.color}` }, priorityDisplay.text)),
|
|
550
|
+
event.description && /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-gray-600 text-sm mb-3 line-clamp-3" }, event.description),
|
|
551
|
+
/* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-2 text-sm text-gray-500" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4 flex-shrink-0", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" })), /* @__PURE__ */ React2__default.default.createElement("span", { className: "truncate" }, event.startTime.toLocaleDateString("zh-CN"), " ", !event.allDay && event.startTime.toLocaleTimeString("zh-CN", { hour: "2-digit", minute: "2-digit" }))), event.location && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4 flex-shrink-0", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z" }), /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 11a3 3 0 11-6 0 3 3 0 016 0z" })), /* @__PURE__ */ React2__default.default.createElement("span", { className: "truncate" }, event.location))),
|
|
552
|
+
!isSelectionMode && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-end gap-2 mt-4 pt-3 border-t border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
620
553
|
"button",
|
|
621
554
|
{
|
|
622
555
|
onClick: (e) => {
|
|
@@ -626,8 +559,8 @@ function EventList({
|
|
|
626
559
|
className: "p-1.5 text-gray-400 hover:text-blue-600 hover:bg-blue-50 rounded transition-colors",
|
|
627
560
|
title: "\u7F16\u8F91\u4E8B\u4EF6"
|
|
628
561
|
},
|
|
629
|
-
/* @__PURE__ */
|
|
630
|
-
), /* @__PURE__ */
|
|
562
|
+
/* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z" }))
|
|
563
|
+
), /* @__PURE__ */ React2__default.default.createElement(
|
|
631
564
|
"button",
|
|
632
565
|
{
|
|
633
566
|
onClick: (e) => {
|
|
@@ -637,59 +570,59 @@ function EventList({
|
|
|
637
570
|
className: "p-1.5 text-gray-400 hover:text-red-600 hover:bg-red-50 rounded transition-colors",
|
|
638
571
|
title: "\u5220\u9664\u4E8B\u4EF6"
|
|
639
572
|
},
|
|
640
|
-
/* @__PURE__ */
|
|
573
|
+
/* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" }))
|
|
641
574
|
))
|
|
642
575
|
);
|
|
643
576
|
}));
|
|
644
|
-
return /* @__PURE__ */
|
|
645
|
-
|
|
577
|
+
return /* @__PURE__ */ React2__default.default.createElement("div", { className: `space-y-6 ${className}` }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex flex-col lg:flex-row lg:items-center lg:justify-between gap-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-1 max-w-md" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
578
|
+
chunkZDRBMSTS_js.SearchBox,
|
|
646
579
|
{
|
|
647
580
|
searchQuery: config.filter.searchText || "",
|
|
648
581
|
onSearchChange: handleSearchChange,
|
|
649
582
|
placeholder: "\u641C\u7D22\u4E8B\u4EF6\u6807\u9898\u3001\u63CF\u8FF0\u6216\u4F4D\u7F6E...",
|
|
650
583
|
size: "medium"
|
|
651
584
|
}
|
|
652
|
-
)), /* @__PURE__ */
|
|
585
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-3" }, enableBatchActions && onBatchDelete && /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, !isSelectionMode ? /* @__PURE__ */ React2__default.default.createElement(
|
|
653
586
|
"button",
|
|
654
587
|
{
|
|
655
588
|
onClick: toggleSelectionMode,
|
|
656
589
|
className: "flex items-center gap-2 px-3 py-2 text-sm font-medium text-gray-700 bg-gray-100 border border-gray-300 rounded-lg hover:bg-gray-200 transition-colors"
|
|
657
590
|
},
|
|
658
|
-
/* @__PURE__ */
|
|
591
|
+
/* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" })),
|
|
659
592
|
"\u6279\u91CF\u64CD\u4F5C"
|
|
660
|
-
) : /* @__PURE__ */
|
|
593
|
+
) : /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
661
594
|
"button",
|
|
662
595
|
{
|
|
663
596
|
onClick: exitSelectionMode,
|
|
664
597
|
className: "px-3 py-2 text-sm font-medium text-gray-700 bg-gray-100 border border-gray-300 rounded-lg hover:bg-gray-200 transition-colors"
|
|
665
598
|
},
|
|
666
599
|
"\u53D6\u6D88"
|
|
667
|
-
), selectedEventIds.size > 0 && /* @__PURE__ */
|
|
600
|
+
), selectedEventIds.size > 0 && /* @__PURE__ */ React2__default.default.createElement(
|
|
668
601
|
"button",
|
|
669
602
|
{
|
|
670
603
|
onClick: () => setShowBatchDeleteConfirm(true),
|
|
671
604
|
disabled: batchDeleteLoading,
|
|
672
605
|
className: "flex items-center gap-2 px-3 py-2 text-sm font-medium text-white bg-red-600 border border-red-600 rounded-lg hover:bg-red-700 disabled:opacity-50 disabled:cursor-not-allowed transition-colors"
|
|
673
606
|
},
|
|
674
|
-
batchDeleteLoading ? /* @__PURE__ */
|
|
607
|
+
batchDeleteLoading ? /* @__PURE__ */ React2__default.default.createElement("div", { className: "animate-spin rounded-full h-4 w-4 border-b-2 border-white" }) : /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" })),
|
|
675
608
|
"\u5220\u9664\u9009\u4E2D(",
|
|
676
609
|
selectedEventIds.size,
|
|
677
610
|
")"
|
|
678
|
-
))), /* @__PURE__ */
|
|
611
|
+
))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-sm text-gray-700 mr-2" }, "\u663E\u793A\u6A21\u5F0F:"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center bg-gray-100 rounded-lg p-1" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
679
612
|
"button",
|
|
680
613
|
{
|
|
681
614
|
onClick: () => handleDisplayModeChange("list" /* LIST */),
|
|
682
615
|
className: `px-3 py-1.5 text-sm font-medium rounded-md transition-colors ${config.displayMode === "list" /* LIST */ ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900"}`
|
|
683
616
|
},
|
|
684
617
|
"\u5217\u8868"
|
|
685
|
-
), /* @__PURE__ */
|
|
618
|
+
), /* @__PURE__ */ React2__default.default.createElement(
|
|
686
619
|
"button",
|
|
687
620
|
{
|
|
688
621
|
onClick: () => handleDisplayModeChange("grid" /* GRID */),
|
|
689
622
|
className: `px-3 py-1.5 text-sm font-medium rounded-md transition-colors ${config.displayMode === "grid" /* GRID */ ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900"}`
|
|
690
623
|
},
|
|
691
624
|
"\u7F51\u683C"
|
|
692
|
-
))))), isSelectionMode && /* @__PURE__ */
|
|
625
|
+
))))), isSelectionMode && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between mt-4 pt-4 border-t border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center gap-2 text-sm font-medium text-gray-700" }, renderSelectAllCheckbox(), "\u5168\u9009\u5F53\u524D\u9875"), /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-sm text-gray-600" }, "\u5DF2\u9009\u62E9 ", selectedEventIds.size, " \u4E2A\u4E8B\u4EF6"))), !isSelectionMode && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex flex-wrap items-center gap-2 mt-4 pt-4 border-t border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-sm text-gray-700 mr-2" }, "\u6392\u5E8F:"), renderSortButton("startTime" /* START_TIME */, "\u65E5\u671F"), renderSortButton("title" /* TITLE */, "\u6807\u9898"), renderSortButton("priority" /* PRIORITY */, "\u4F18\u5148\u7EA7"), renderSortButton("createdAt" /* CREATED_AT */, "\u521B\u5EFA\u65F6\u95F4"), renderSortButton("updatedAt" /* UPDATED_AT */, "\u66F4\u65B0\u65F6\u95F4"))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-sm text-gray-600" }, "\u5171 ", sortedAndFilteredEvents.length, " \u4E2A\u4E8B\u4EF6", config.filter.searchText && ` (\u641C\u7D22: "${config.filter.searchText}")`)), loading && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex justify-center py-8" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600" })), !loading && paginatedEvents.length > 0 && /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, config.displayMode === "list" /* LIST */ ? renderListMode() : renderGridMode(), totalPages > 1 && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between pt-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-sm text-gray-600" }, "\u7B2C ", config.currentPage, " \u9875\uFF0C\u5171 ", totalPages, " \u9875"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
693
626
|
"button",
|
|
694
627
|
{
|
|
695
628
|
onClick: () => handlePageChange(config.currentPage - 1),
|
|
@@ -697,7 +630,7 @@ function EventList({
|
|
|
697
630
|
className: "px-3 py-1.5 text-sm border border-gray-300 rounded-lg hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed"
|
|
698
631
|
},
|
|
699
632
|
"\u4E0A\u4E00\u9875"
|
|
700
|
-
), /* @__PURE__ */
|
|
633
|
+
), /* @__PURE__ */ React2__default.default.createElement(
|
|
701
634
|
"button",
|
|
702
635
|
{
|
|
703
636
|
onClick: () => handlePageChange(config.currentPage + 1),
|
|
@@ -705,8 +638,8 @@ function EventList({
|
|
|
705
638
|
className: "px-3 py-1.5 text-sm border border-gray-300 rounded-lg hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed"
|
|
706
639
|
},
|
|
707
640
|
"\u4E0B\u4E00\u9875"
|
|
708
|
-
)))), !loading && paginatedEvents.length === 0 && /* @__PURE__ */
|
|
709
|
-
ConfirmModal,
|
|
641
|
+
)))), !loading && paginatedEvents.length === 0 && /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-16 h-16 mx-auto mb-4 text-gray-300", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" })), /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-medium text-gray-900 mb-2" }, "\u6682\u65E0\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-gray-600" }, config.filter.searchText || config.filter.priority || config.filter.color || config.filter.dateRange ? "\u6CA1\u6709\u627E\u5230\u7B26\u5408\u6761\u4EF6\u7684\u4E8B\u4EF6" : "\u8FD8\u6CA1\u6709\u521B\u5EFA\u4EFB\u4F55\u4E8B\u4EF6")), /* @__PURE__ */ React2__default.default.createElement(
|
|
642
|
+
chunkZDRBMSTS_js.ConfirmModal,
|
|
710
643
|
{
|
|
711
644
|
isOpen: showBatchDeleteConfirm,
|
|
712
645
|
onClose: () => setShowBatchDeleteConfirm(false),
|
|
@@ -1010,13 +943,13 @@ var EventTypeService = class {
|
|
|
1010
943
|
|
|
1011
944
|
// src/calendar/hooks/useEnhancedEvents.ts
|
|
1012
945
|
function useEnhancedEvents() {
|
|
1013
|
-
const [events, setEvents] =
|
|
1014
|
-
const [loading, setLoading] =
|
|
1015
|
-
const [error, setError] =
|
|
1016
|
-
const clearError =
|
|
946
|
+
const [events, setEvents] = React2.useState([]);
|
|
947
|
+
const [loading, setLoading] = React2.useState(false);
|
|
948
|
+
const [error, setError] = React2.useState();
|
|
949
|
+
const clearError = React2.useCallback(() => {
|
|
1017
950
|
setError(void 0);
|
|
1018
951
|
}, []);
|
|
1019
|
-
const fetchEvents =
|
|
952
|
+
const fetchEvents = React2.useCallback(async (startDate, endDate) => {
|
|
1020
953
|
setLoading(true);
|
|
1021
954
|
setError(void 0);
|
|
1022
955
|
try {
|
|
@@ -1064,7 +997,7 @@ function useEnhancedEvents() {
|
|
|
1064
997
|
setLoading(false);
|
|
1065
998
|
}
|
|
1066
999
|
}, []);
|
|
1067
|
-
const createEvent =
|
|
1000
|
+
const createEvent = React2.useCallback(async (eventData) => {
|
|
1068
1001
|
setLoading(true);
|
|
1069
1002
|
setError(void 0);
|
|
1070
1003
|
try {
|
|
@@ -1143,7 +1076,7 @@ function useEnhancedEvents() {
|
|
|
1143
1076
|
return "daily" /* DAILY */;
|
|
1144
1077
|
}
|
|
1145
1078
|
};
|
|
1146
|
-
const createEnhancedEvent =
|
|
1079
|
+
const createEnhancedEvent = React2.useCallback(async (eventData) => {
|
|
1147
1080
|
setLoading(true);
|
|
1148
1081
|
setError(void 0);
|
|
1149
1082
|
try {
|
|
@@ -1259,7 +1192,7 @@ function useEnhancedEvents() {
|
|
|
1259
1192
|
setLoading(false);
|
|
1260
1193
|
}
|
|
1261
1194
|
}, []);
|
|
1262
|
-
const updateEvent =
|
|
1195
|
+
const updateEvent = React2.useCallback(async (eventId, eventData) => {
|
|
1263
1196
|
setLoading(true);
|
|
1264
1197
|
setError(void 0);
|
|
1265
1198
|
try {
|
|
@@ -1305,7 +1238,7 @@ function useEnhancedEvents() {
|
|
|
1305
1238
|
setLoading(false);
|
|
1306
1239
|
}
|
|
1307
1240
|
}, []);
|
|
1308
|
-
const deleteEvent =
|
|
1241
|
+
const deleteEvent = React2.useCallback(async (eventId, deleteAll = false) => {
|
|
1309
1242
|
setLoading(true);
|
|
1310
1243
|
setError(void 0);
|
|
1311
1244
|
try {
|
|
@@ -1330,7 +1263,7 @@ function useEnhancedEvents() {
|
|
|
1330
1263
|
setLoading(false);
|
|
1331
1264
|
}
|
|
1332
1265
|
}, []);
|
|
1333
|
-
const batchDeleteEvents =
|
|
1266
|
+
const batchDeleteEvents = React2.useCallback(async (eventIds) => {
|
|
1334
1267
|
setLoading(true);
|
|
1335
1268
|
setError(void 0);
|
|
1336
1269
|
try {
|
|
@@ -1358,7 +1291,7 @@ function useEnhancedEvents() {
|
|
|
1358
1291
|
setLoading(false);
|
|
1359
1292
|
}
|
|
1360
1293
|
}, []);
|
|
1361
|
-
const updateEventTime =
|
|
1294
|
+
const updateEventTime = React2.useCallback(async (eventId, newStartTime, newEndTime) => {
|
|
1362
1295
|
setLoading(true);
|
|
1363
1296
|
setError(void 0);
|
|
1364
1297
|
console.log("\u{1F504} updateEventTime \u8C03\u7528:", {
|
|
@@ -1456,8 +1389,8 @@ var ImprovedEventModal = ({
|
|
|
1456
1389
|
event,
|
|
1457
1390
|
initialDate
|
|
1458
1391
|
}) => {
|
|
1459
|
-
const [eventType, setEventType] =
|
|
1460
|
-
const [formData, setFormData] =
|
|
1392
|
+
const [eventType, setEventType] = React2.useState("single" /* SINGLE */);
|
|
1393
|
+
const [formData, setFormData] = React2.useState({
|
|
1461
1394
|
// 基础信息
|
|
1462
1395
|
title: "",
|
|
1463
1396
|
description: "",
|
|
@@ -1484,11 +1417,11 @@ var ImprovedEventModal = ({
|
|
|
1484
1417
|
useEndDate: true
|
|
1485
1418
|
// true: 使用结束日期, false: 使用重复次数
|
|
1486
1419
|
});
|
|
1487
|
-
const [isLoading, setIsLoading] =
|
|
1488
|
-
const [errors, setErrors] =
|
|
1489
|
-
const [showDeleteConfirm, setShowDeleteConfirm] =
|
|
1420
|
+
const [isLoading, setIsLoading] = React2.useState(false);
|
|
1421
|
+
const [errors, setErrors] = React2.useState({});
|
|
1422
|
+
const [showDeleteConfirm, setShowDeleteConfirm] = React2.useState(false);
|
|
1490
1423
|
const isEditMode = !!event;
|
|
1491
|
-
|
|
1424
|
+
React2.useEffect(() => {
|
|
1492
1425
|
if (event) {
|
|
1493
1426
|
const startDate = new Date(event.startTime);
|
|
1494
1427
|
const endDate = new Date(event.endTime);
|
|
@@ -1653,35 +1586,35 @@ var ImprovedEventModal = ({
|
|
|
1653
1586
|
setErrors({});
|
|
1654
1587
|
onClose();
|
|
1655
1588
|
};
|
|
1656
|
-
const renderEventTypeSelector = () => /* @__PURE__ */
|
|
1589
|
+
const renderEventTypeSelector = () => /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u{1F3AF}"), /* @__PURE__ */ React2__default.default.createElement("label", { className: "text-base font-medium text-gray-900" }, "\u9009\u62E9\u4E8B\u4EF6\u7C7B\u578B")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-4" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
1657
1590
|
"button",
|
|
1658
1591
|
{
|
|
1659
1592
|
type: "button",
|
|
1660
1593
|
onClick: () => setEventType("single" /* SINGLE */),
|
|
1661
1594
|
className: `group relative p-4 rounded-xl border-2 transition-all duration-300 transform hover:scale-105 ${eventType === "single" /* SINGLE */ ? "bg-gradient-to-br from-blue-50 to-blue-100 border-blue-300 shadow-lg ring-2 ring-blue-200" : "bg-white border-gray-200 hover:bg-gray-50 hover:border-gray-300 shadow-sm hover:shadow-md"}`
|
|
1662
1595
|
},
|
|
1663
|
-
/* @__PURE__ */
|
|
1664
|
-
eventType === "single" /* SINGLE */ && /* @__PURE__ */
|
|
1665
|
-
), /* @__PURE__ */
|
|
1596
|
+
/* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: `text-3xl mb-2 transition-transform duration-300 ${eventType === "single" /* SINGLE */ ? "scale-110" : "group-hover:scale-110"}` }, "\u{1F4C5}"), /* @__PURE__ */ React2__default.default.createElement("div", { className: `font-semibold mb-1 ${eventType === "single" /* SINGLE */ ? "text-blue-700" : "text-gray-900"}` }, "\u5355\u6B21\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500" }, "\u4E00\u6B21\u6027\u4E8B\u4EF6")),
|
|
1597
|
+
eventType === "single" /* SINGLE */ && /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute top-2 right-2" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "w-6 h-6 bg-blue-500 rounded-full flex items-center justify-center" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-white text-sm" }, "\u2713")))
|
|
1598
|
+
), /* @__PURE__ */ React2__default.default.createElement(
|
|
1666
1599
|
"button",
|
|
1667
1600
|
{
|
|
1668
1601
|
type: "button",
|
|
1669
1602
|
onClick: () => setEventType("multi_day" /* MULTI_DAY */),
|
|
1670
1603
|
className: `group relative p-4 rounded-xl border-2 transition-all duration-300 transform hover:scale-105 ${eventType === "multi_day" /* MULTI_DAY */ ? "bg-gradient-to-br from-green-50 to-green-100 border-green-300 shadow-lg ring-2 ring-green-200" : "bg-white border-gray-200 hover:bg-gray-50 hover:border-gray-300 shadow-sm hover:shadow-md"}`
|
|
1671
1604
|
},
|
|
1672
|
-
/* @__PURE__ */
|
|
1673
|
-
eventType === "multi_day" /* MULTI_DAY */ && /* @__PURE__ */
|
|
1674
|
-
), /* @__PURE__ */
|
|
1605
|
+
/* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: `text-3xl mb-2 transition-transform duration-300 ${eventType === "multi_day" /* MULTI_DAY */ ? "scale-110" : "group-hover:scale-110"}` }, "\u{1F5D3}\uFE0F"), /* @__PURE__ */ React2__default.default.createElement("div", { className: `font-semibold mb-1 ${eventType === "multi_day" /* MULTI_DAY */ ? "text-green-700" : "text-gray-900"}` }, "\u591A\u5929\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500" }, "\u8FDE\u7EED\u591A\u5929")),
|
|
1606
|
+
eventType === "multi_day" /* MULTI_DAY */ && /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute top-2 right-2" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "w-6 h-6 bg-green-500 rounded-full flex items-center justify-center" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-white text-sm" }, "\u2713")))
|
|
1607
|
+
), /* @__PURE__ */ React2__default.default.createElement(
|
|
1675
1608
|
"button",
|
|
1676
1609
|
{
|
|
1677
1610
|
type: "button",
|
|
1678
1611
|
onClick: () => setEventType("recurring" /* RECURRING */),
|
|
1679
1612
|
className: `group relative p-4 rounded-xl border-2 transition-all duration-300 transform hover:scale-105 ${eventType === "recurring" /* RECURRING */ ? "bg-gradient-to-br from-purple-50 to-purple-100 border-purple-300 shadow-lg ring-2 ring-purple-200" : "bg-white border-gray-200 hover:bg-gray-50 hover:border-gray-300 shadow-sm hover:shadow-md"}`
|
|
1680
1613
|
},
|
|
1681
|
-
/* @__PURE__ */
|
|
1682
|
-
eventType === "recurring" /* RECURRING */ && /* @__PURE__ */
|
|
1683
|
-
)), /* @__PURE__ */
|
|
1684
|
-
const renderBasicForm = () => /* @__PURE__ */
|
|
1614
|
+
/* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: `text-3xl mb-2 transition-transform duration-300 ${eventType === "recurring" /* RECURRING */ ? "scale-110" : "group-hover:scale-110"}` }, "\u{1F504}"), /* @__PURE__ */ React2__default.default.createElement("div", { className: `font-semibold mb-1 ${eventType === "recurring" /* RECURRING */ ? "text-purple-700" : "text-gray-900"}` }, "\u91CD\u590D\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500" }, "\u5468\u671F\u6027\u91CD\u590D")),
|
|
1615
|
+
eventType === "recurring" /* RECURRING */ && /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute top-2 right-2" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "w-6 h-6 bg-purple-500 rounded-full flex items-center justify-center" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-white text-sm" }, "\u2713")))
|
|
1616
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", { className: `p-4 rounded-lg transition-all duration-300 ${eventType === "single" /* SINGLE */ ? "bg-blue-50 border border-blue-200" : eventType === "multi_day" /* MULTI_DAY */ ? "bg-green-50 border border-green-200" : "bg-purple-50 border border-purple-200"}` }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-start space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-shrink-0 mt-0.5" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, eventType === "single" /* SINGLE */ ? "\u{1F4A1}" : eventType === "multi_day" /* MULTI_DAY */ ? "\u{1F4CB}" : "\u{1F514}")), /* @__PURE__ */ React2__default.default.createElement("div", null, eventType === "single" /* SINGLE */ && /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, /* @__PURE__ */ React2__default.default.createElement("h4", { className: "font-medium text-blue-800 mb-1" }, "\u5355\u6B21\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-blue-700" }, "\u5728\u6307\u5B9A\u7684\u65F6\u95F4\u53D1\u751F\u4E00\u6B21\u7684\u4E8B\u4EF6\uFF0C\u5982\u4F1A\u8BAE\u3001\u7EA6\u4F1A\u3001\u9762\u8BD5\u7B49\u3002\u9002\u5408\u4E00\u6B21\u6027\u7684\u6D3B\u52A8\u5B89\u6392\u3002")), eventType === "multi_day" /* MULTI_DAY */ && /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, /* @__PURE__ */ React2__default.default.createElement("h4", { className: "font-medium text-green-800 mb-1" }, "\u591A\u5929\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-green-700" }, "\u6301\u7EED\u591A\u5929\u7684\u5355\u4E2A\u4E8B\u4EF6\uFF0C\u5982\u57F9\u8BAD\u8BFE\u7A0B\u3001\u4F1A\u8BAE\u3001\u5047\u671F\u7B49\u3002\u4F8B\u5982\uFF1A3\u5929\u7684\u57F9\u8BAD\u8BFE\u7A0B\u62161\u5468\u7684\u5047\u671F\u3002")), eventType === "recurring" /* RECURRING */ && /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, /* @__PURE__ */ React2__default.default.createElement("h4", { className: "font-medium text-purple-800 mb-1" }, "\u91CD\u590D\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-purple-700" }, "\u6309\u7167\u89C4\u5F8B\u91CD\u590D\u53D1\u751F\u7684\u4E8B\u4EF6\uFF0C\u5982\u6BCF\u5929\u7684\u6668\u4F1A\u3001\u6BCF\u5468\u7684\u4F8B\u4F1A\u3001\u6BCF\u6708\u7684\u603B\u7ED3\u7B49\u3002\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u521B\u5EFA\u591A\u4E2A\u4E8B\u4EF6\u5B9E\u4F8B\u3002"))))));
|
|
1617
|
+
const renderBasicForm = () => /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "group" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u{1F4DD}"), /* @__PURE__ */ React2__default.default.createElement("span", null, "\u4E8B\u4EF6\u6807\u9898"), /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
1685
1618
|
"input",
|
|
1686
1619
|
{
|
|
1687
1620
|
type: "text",
|
|
@@ -1690,7 +1623,7 @@ var ImprovedEventModal = ({
|
|
|
1690
1623
|
className: "w-full px-4 py-3 border-2 border-gray-200 rounded-xl focus:ring-2 focus:ring-blue-500 focus:border-blue-500 transition-all duration-200 placeholder-gray-400 text-gray-900 bg-white hover:border-gray-300",
|
|
1691
1624
|
placeholder: "\u4E3A\u4F60\u7684\u4E8B\u4EF6\u8D77\u4E2A\u540D\u5B57..."
|
|
1692
1625
|
}
|
|
1693
|
-
), /* @__PURE__ */
|
|
1626
|
+
), /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute inset-y-0 right-0 flex items-center pr-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: `w-2 h-2 rounded-full transition-colors duration-200 ${formData.title.trim() ? "bg-green-400" : "bg-gray-300"}` }))), errors.title && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-2 mt-2" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-red-500 text-sm" }, "\u26A0\uFE0F"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-red-600" }, errors.title))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "group" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u{1F4C4}"), /* @__PURE__ */ React2__default.default.createElement("span", null, "\u4E8B\u4EF6\u63CF\u8FF0")), /* @__PURE__ */ React2__default.default.createElement(
|
|
1694
1627
|
"textarea",
|
|
1695
1628
|
{
|
|
1696
1629
|
value: formData.description,
|
|
@@ -1699,7 +1632,7 @@ var ImprovedEventModal = ({
|
|
|
1699
1632
|
className: "w-full px-4 py-3 border-2 border-gray-200 rounded-xl focus:ring-2 focus:ring-blue-500 focus:border-blue-500 transition-all duration-200 placeholder-gray-400 text-gray-900 bg-white hover:border-gray-300 resize-none",
|
|
1700
1633
|
placeholder: "\u63CF\u8FF0\u4E00\u4E0B\u8FD9\u4E2A\u4E8B\u4EF6\u7684\u8BE6\u7EC6\u4FE1\u606F..."
|
|
1701
1634
|
}
|
|
1702
|
-
), /* @__PURE__ */
|
|
1635
|
+
), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex justify-between items-center mt-2" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500" }, formData.description.length > 0 && `\u5DF2\u8F93\u5165 ${formData.description.length} \u4E2A\u5B57\u7B26`))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "group" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u{1F4CD}"), /* @__PURE__ */ React2__default.default.createElement("span", null, "\u5730\u70B9")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
1703
1636
|
"input",
|
|
1704
1637
|
{
|
|
1705
1638
|
type: "text",
|
|
@@ -1708,7 +1641,7 @@ var ImprovedEventModal = ({
|
|
|
1708
1641
|
className: "w-full px-4 py-3 border-2 border-gray-200 rounded-xl focus:ring-2 focus:ring-blue-500 focus:border-blue-500 transition-all duration-200 placeholder-gray-400 text-gray-900 bg-white hover:border-gray-300",
|
|
1709
1642
|
placeholder: "\u4E8B\u4EF6\u4E3E\u529E\u5730\u70B9..."
|
|
1710
1643
|
}
|
|
1711
|
-
), /* @__PURE__ */
|
|
1644
|
+
), /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute inset-y-0 right-0 flex items-center pr-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: `w-2 h-2 rounded-full transition-colors duration-200 ${formData.location.trim() ? "bg-green-400" : "bg-gray-300"}` })))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-gray-50 rounded-xl p-4" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center justify-between cursor-pointer group" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u{1F305}"), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-sm font-medium text-gray-900" }, "\u5168\u5929\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500" }, "\u4E0D\u8BBE\u7F6E\u5177\u4F53\u65F6\u95F4\uFF0C\u6574\u5929\u6709\u6548"))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
1712
1645
|
"input",
|
|
1713
1646
|
{
|
|
1714
1647
|
type: "checkbox",
|
|
@@ -1717,13 +1650,13 @@ var ImprovedEventModal = ({
|
|
|
1717
1650
|
onChange: (e) => handleInputChange("allDay", e.target.checked),
|
|
1718
1651
|
className: "sr-only"
|
|
1719
1652
|
}
|
|
1720
|
-
), /* @__PURE__ */
|
|
1653
|
+
), /* @__PURE__ */ React2__default.default.createElement("div", { className: `w-12 h-6 rounded-full transition-colors duration-200 ${formData.allDay ? "bg-blue-500" : "bg-gray-300"}` }, /* @__PURE__ */ React2__default.default.createElement("div", { className: `w-5 h-5 bg-white rounded-full shadow-md transform transition-transform duration-200 ${formData.allDay ? "translate-x-6" : "translate-x-0.5"} translate-y-0.5` }))))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "group" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u{1F3A8}"), /* @__PURE__ */ React2__default.default.createElement("span", null, "\u4E8B\u4EF6\u989C\u8272")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
1721
1654
|
"div",
|
|
1722
1655
|
{
|
|
1723
1656
|
className: "w-12 h-12 rounded-xl border-2 border-gray-200 flex items-center justify-center cursor-pointer hover:scale-105 transition-transform duration-200 shadow-sm",
|
|
1724
1657
|
style: { backgroundColor: formData.color }
|
|
1725
1658
|
},
|
|
1726
|
-
/* @__PURE__ */
|
|
1659
|
+
/* @__PURE__ */ React2__default.default.createElement(
|
|
1727
1660
|
"input",
|
|
1728
1661
|
{
|
|
1729
1662
|
type: "color",
|
|
@@ -1732,7 +1665,7 @@ var ImprovedEventModal = ({
|
|
|
1732
1665
|
className: "w-8 h-8 border-none rounded-lg cursor-pointer opacity-0 absolute"
|
|
1733
1666
|
}
|
|
1734
1667
|
)
|
|
1735
|
-
), /* @__PURE__ */
|
|
1668
|
+
), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-sm font-medium text-gray-900", style: { color: formData.color } }, formData.color.toUpperCase()), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500" }, "\u70B9\u51FB\u8272\u5757\u9009\u62E9\u989C\u8272"))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex space-x-2" }, ["#3b82f6", "#ef4444", "#10b981", "#f59e0b", "#8b5cf6", "#ec4899"].map((color) => /* @__PURE__ */ React2__default.default.createElement(
|
|
1736
1669
|
"button",
|
|
1737
1670
|
{
|
|
1738
1671
|
key: color,
|
|
@@ -1741,12 +1674,12 @@ var ImprovedEventModal = ({
|
|
|
1741
1674
|
className: `w-8 h-8 rounded-lg border-2 hover:scale-105 transition-all duration-200 ${formData.color === color ? "border-gray-400 ring-2 ring-gray-200" : "border-gray-200"}`,
|
|
1742
1675
|
style: { backgroundColor: color }
|
|
1743
1676
|
}
|
|
1744
|
-
))))), /* @__PURE__ */
|
|
1677
|
+
))))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "group" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u2B50"), /* @__PURE__ */ React2__default.default.createElement("span", null, "\u4F18\u5148\u7EA7")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-2" }, [
|
|
1745
1678
|
{ value: "low" /* LOW */, label: "\u4F4E", icon: "\u{1F4D8}", color: "text-blue-600 bg-blue-50 border-blue-200" },
|
|
1746
1679
|
{ value: "normal" /* NORMAL */, label: "\u666E\u901A", icon: "\u{1F4D7}", color: "text-green-600 bg-green-50 border-green-200" },
|
|
1747
1680
|
{ value: "high" /* HIGH */, label: "\u9AD8", icon: "\u{1F4D9}", color: "text-yellow-600 bg-yellow-50 border-yellow-200" },
|
|
1748
1681
|
{ value: "urgent" /* URGENT */, label: "\u7D27\u6025", icon: "\u{1F4D5}", color: "text-red-600 bg-red-50 border-red-200" }
|
|
1749
|
-
].map((priority) => /* @__PURE__ */
|
|
1682
|
+
].map((priority) => /* @__PURE__ */ React2__default.default.createElement("label", { key: priority.value, className: "flex items-center cursor-pointer group" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
1750
1683
|
"input",
|
|
1751
1684
|
{
|
|
1752
1685
|
type: "radio",
|
|
@@ -1756,8 +1689,8 @@ var ImprovedEventModal = ({
|
|
|
1756
1689
|
onChange: (e) => handleInputChange("priority", e.target.value),
|
|
1757
1690
|
className: "sr-only"
|
|
1758
1691
|
}
|
|
1759
|
-
), /* @__PURE__ */
|
|
1760
|
-
const renderSingleEventForm = () => /* @__PURE__ */
|
|
1692
|
+
), /* @__PURE__ */ React2__default.default.createElement("div", { className: `flex items-center space-x-3 px-3 py-2 rounded-lg border-2 transition-all duration-200 flex-1 ${formData.priority === priority.value ? priority.color + " ring-2 ring-opacity-20" : "text-gray-600 bg-white border-gray-200 hover:bg-gray-50"}` }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, priority.icon), /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-sm font-medium" }, priority.label), formData.priority === priority.value && /* @__PURE__ */ React2__default.default.createElement("span", { className: "ml-auto text-sm" }, "\u2713"))))))));
|
|
1693
|
+
const renderSingleEventForm = () => /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-6" }, !formData.allDay && /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-blue-50 rounded-xl p-4 border border-blue-200" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "group" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-blue-900 mb-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u{1F550}"), /* @__PURE__ */ React2__default.default.createElement("span", null, "\u5F00\u59CB\u65F6\u95F4"), /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
1761
1694
|
"input",
|
|
1762
1695
|
{
|
|
1763
1696
|
type: "datetime-local",
|
|
@@ -1765,7 +1698,7 @@ var ImprovedEventModal = ({
|
|
|
1765
1698
|
onChange: (e) => handleInputChange("startTime", e.target.value),
|
|
1766
1699
|
className: "w-full px-4 py-3 border-2 border-blue-200 rounded-xl focus:ring-2 focus:ring-blue-500 focus:border-blue-500 transition-all duration-200 text-gray-900 bg-white hover:border-blue-300"
|
|
1767
1700
|
}
|
|
1768
|
-
), /* @__PURE__ */
|
|
1701
|
+
), /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute inset-y-0 right-0 flex items-center pr-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-blue-500 text-sm" }, "\u{1F4C5}")))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "group" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-blue-900 mb-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u{1F555}"), /* @__PURE__ */ React2__default.default.createElement("span", null, "\u7ED3\u675F\u65F6\u95F4"), /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
1769
1702
|
"input",
|
|
1770
1703
|
{
|
|
1771
1704
|
type: "datetime-local",
|
|
@@ -1773,8 +1706,8 @@ var ImprovedEventModal = ({
|
|
|
1773
1706
|
onChange: (e) => handleInputChange("endTime", e.target.value),
|
|
1774
1707
|
className: "w-full px-4 py-3 border-2 border-blue-200 rounded-xl focus:ring-2 focus:ring-blue-500 focus:border-blue-500 transition-all duration-200 text-gray-900 bg-white hover:border-blue-300"
|
|
1775
1708
|
}
|
|
1776
|
-
), /* @__PURE__ */
|
|
1777
|
-
const renderMultiDayEventForm = () => /* @__PURE__ */
|
|
1709
|
+
), /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute inset-y-0 right-0 flex items-center pr-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-blue-500 text-sm" }, "\u{1F4C5}"))))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "mt-4 p-3 bg-blue-100 rounded-lg" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-start space-x-2" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-blue-600 text-sm" }, "\u{1F4A1}"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-blue-700" }, /* @__PURE__ */ React2__default.default.createElement("strong", null, "\u63D0\u793A\uFF1A"), "\u5355\u6B21\u4E8B\u4EF6\u5728\u6307\u5B9A\u7684\u65F6\u95F4\u6BB5\u5185\u53D1\u751F\u4E00\u6B21\u3002\u8BF7\u786E\u4FDD\u7ED3\u675F\u65F6\u95F4\u665A\u4E8E\u5F00\u59CB\u65F6\u95F4\u3002")))), formData.allDay && /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-amber-50 rounded-xl p-4 border border-amber-200" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-2xl" }, "\u{1F305}"), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("h4", { className: "font-medium text-amber-800" }, "\u5168\u5929\u4E8B\u4EF6\u6A21\u5F0F"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-amber-700 mt-1" }, "\u6B64\u4E8B\u4EF6\u5C06\u6301\u7EED\u6574\u5929\uFF0C\u65E0\u9700\u8BBE\u7F6E\u5177\u4F53\u65F6\u95F4\u3002\u4E8B\u4EF6\u5C06\u5728\u9009\u5B9A\u65E5\u671F\u7684\u5168\u5929\u663E\u793A\u3002")))));
|
|
1710
|
+
const renderMultiDayEventForm = () => /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-2 gap-4" }, /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u5F00\u59CB\u65E5\u671F *"), /* @__PURE__ */ React2__default.default.createElement(
|
|
1778
1711
|
"input",
|
|
1779
1712
|
{
|
|
1780
1713
|
type: "date",
|
|
@@ -1782,7 +1715,7 @@ var ImprovedEventModal = ({
|
|
|
1782
1715
|
onChange: (e) => handleInputChange("startDate", e.target.value),
|
|
1783
1716
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
|
1784
1717
|
}
|
|
1785
|
-
)), /* @__PURE__ */
|
|
1718
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u7ED3\u675F\u65E5\u671F *"), /* @__PURE__ */ React2__default.default.createElement(
|
|
1786
1719
|
"input",
|
|
1787
1720
|
{
|
|
1788
1721
|
type: "date",
|
|
@@ -1790,7 +1723,7 @@ var ImprovedEventModal = ({
|
|
|
1790
1723
|
onChange: (e) => handleInputChange("endDate", e.target.value),
|
|
1791
1724
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
|
1792
1725
|
}
|
|
1793
|
-
))), !formData.allDay && /* @__PURE__ */
|
|
1726
|
+
))), !formData.allDay && /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-2 gap-4" }, /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u6BCF\u65E5\u5F00\u59CB\u65F6\u95F4"), /* @__PURE__ */ React2__default.default.createElement(
|
|
1794
1727
|
"input",
|
|
1795
1728
|
{
|
|
1796
1729
|
type: "time",
|
|
@@ -1798,7 +1731,7 @@ var ImprovedEventModal = ({
|
|
|
1798
1731
|
onChange: (e) => handleInputChange("dailyStartTime", e.target.value),
|
|
1799
1732
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
|
1800
1733
|
}
|
|
1801
|
-
)), /* @__PURE__ */
|
|
1734
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u6BCF\u65E5\u7ED3\u675F\u65F6\u95F4"), /* @__PURE__ */ React2__default.default.createElement(
|
|
1802
1735
|
"input",
|
|
1803
1736
|
{
|
|
1804
1737
|
type: "time",
|
|
@@ -1806,8 +1739,8 @@ var ImprovedEventModal = ({
|
|
|
1806
1739
|
onChange: (e) => handleInputChange("dailyEndTime", e.target.value),
|
|
1807
1740
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
|
1808
1741
|
}
|
|
1809
|
-
))), /* @__PURE__ */
|
|
1810
|
-
const renderRecurringEventForm = () => /* @__PURE__ */
|
|
1742
|
+
))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "p-3 bg-blue-50 rounded-lg text-sm text-blue-700" }, /* @__PURE__ */ React2__default.default.createElement("strong", null, "\u793A\u4F8B"), "\uFF1A\u5982\u679C\u60A8\u8981\u521B\u5EFA\u4E00\u4E2A\u4ECE21\u53F7\u523023\u53F7\u7684\u57F9\u8BAD\u8BFE\u7A0B\uFF0C\u7CFB\u7EDF\u5C06\u5728\u8FD9\u4E09\u5929\u5185\u6BCF\u5929\u90FD\u521B\u5EFA\u4E00\u4E2A\u4E8B\u4EF6\u5B9E\u4F8B\u3002"));
|
|
1743
|
+
const renderRecurringEventForm = () => /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u5F00\u59CB\u65E5\u671F *"), /* @__PURE__ */ React2__default.default.createElement(
|
|
1811
1744
|
"input",
|
|
1812
1745
|
{
|
|
1813
1746
|
type: "date",
|
|
@@ -1815,7 +1748,7 @@ var ImprovedEventModal = ({
|
|
|
1815
1748
|
onChange: (e) => handleInputChange("recurrenceStartDate", e.target.value),
|
|
1816
1749
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
|
1817
1750
|
}
|
|
1818
|
-
)), !formData.allDay && /* @__PURE__ */
|
|
1751
|
+
)), !formData.allDay && /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-2 gap-4" }, /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u5F00\u59CB\u65F6\u95F4 *"), /* @__PURE__ */ React2__default.default.createElement(
|
|
1819
1752
|
"input",
|
|
1820
1753
|
{
|
|
1821
1754
|
type: "datetime-local",
|
|
@@ -1823,7 +1756,7 @@ var ImprovedEventModal = ({
|
|
|
1823
1756
|
onChange: (e) => handleInputChange("recurrenceStartTime", e.target.value),
|
|
1824
1757
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
|
1825
1758
|
}
|
|
1826
|
-
)), /* @__PURE__ */
|
|
1759
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u7ED3\u675F\u65F6\u95F4 *"), /* @__PURE__ */ React2__default.default.createElement(
|
|
1827
1760
|
"input",
|
|
1828
1761
|
{
|
|
1829
1762
|
type: "datetime-local",
|
|
@@ -1831,18 +1764,18 @@ var ImprovedEventModal = ({
|
|
|
1831
1764
|
onChange: (e) => handleInputChange("recurrenceEndTime", e.target.value),
|
|
1832
1765
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
|
1833
1766
|
}
|
|
1834
|
-
))), /* @__PURE__ */
|
|
1767
|
+
))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-2 gap-4" }, /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u91CD\u590D\u6A21\u5F0F *"), /* @__PURE__ */ React2__default.default.createElement(
|
|
1835
1768
|
"select",
|
|
1836
1769
|
{
|
|
1837
1770
|
value: formData.recurrencePattern,
|
|
1838
1771
|
onChange: (e) => handleInputChange("recurrencePattern", e.target.value),
|
|
1839
1772
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
|
1840
1773
|
},
|
|
1841
|
-
/* @__PURE__ */
|
|
1842
|
-
/* @__PURE__ */
|
|
1843
|
-
/* @__PURE__ */
|
|
1844
|
-
/* @__PURE__ */
|
|
1845
|
-
)), /* @__PURE__ */
|
|
1774
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "daily" /* DAILY */ }, "\u6BCF\u5929"),
|
|
1775
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "weekly" /* WEEKLY */ }, "\u6BCF\u5468"),
|
|
1776
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "monthly" /* MONTHLY */ }, "\u6BCF\u6708"),
|
|
1777
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "yearly" /* YEARLY */ }, "\u6BCF\u5E74")
|
|
1778
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u91CD\u590D\u95F4\u9694"), /* @__PURE__ */ React2__default.default.createElement(
|
|
1846
1779
|
"input",
|
|
1847
1780
|
{
|
|
1848
1781
|
type: "number",
|
|
@@ -1852,7 +1785,7 @@ var ImprovedEventModal = ({
|
|
|
1852
1785
|
onChange: (e) => handleInputChange("recurrenceInterval", parseInt(e.target.value) || 1),
|
|
1853
1786
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
|
1854
1787
|
}
|
|
1855
|
-
))), /* @__PURE__ */
|
|
1788
|
+
))), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u7ED3\u675F\u6761\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
1856
1789
|
"input",
|
|
1857
1790
|
{
|
|
1858
1791
|
type: "radio",
|
|
@@ -1860,7 +1793,7 @@ var ImprovedEventModal = ({
|
|
|
1860
1793
|
onChange: () => handleInputChange("useEndDate", true),
|
|
1861
1794
|
className: "h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300"
|
|
1862
1795
|
}
|
|
1863
|
-
), /* @__PURE__ */
|
|
1796
|
+
), /* @__PURE__ */ React2__default.default.createElement("span", { className: "ml-2 text-sm text-gray-700" }, "\u7ED3\u675F\u65E5\u671F")), formData.useEndDate && /* @__PURE__ */ React2__default.default.createElement(
|
|
1864
1797
|
"input",
|
|
1865
1798
|
{
|
|
1866
1799
|
type: "date",
|
|
@@ -1868,7 +1801,7 @@ var ImprovedEventModal = ({
|
|
|
1868
1801
|
onChange: (e) => handleInputChange("recurrenceEndDate", e.target.value),
|
|
1869
1802
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
|
1870
1803
|
}
|
|
1871
|
-
), /* @__PURE__ */
|
|
1804
|
+
), /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
1872
1805
|
"input",
|
|
1873
1806
|
{
|
|
1874
1807
|
type: "radio",
|
|
@@ -1876,7 +1809,7 @@ var ImprovedEventModal = ({
|
|
|
1876
1809
|
onChange: () => handleInputChange("useEndDate", false),
|
|
1877
1810
|
className: "h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300"
|
|
1878
1811
|
}
|
|
1879
|
-
), /* @__PURE__ */
|
|
1812
|
+
), /* @__PURE__ */ React2__default.default.createElement("span", { className: "ml-2 text-sm text-gray-700" }, "\u91CD\u590D\u6B21\u6570")), !formData.useEndDate && /* @__PURE__ */ React2__default.default.createElement(
|
|
1880
1813
|
"input",
|
|
1881
1814
|
{
|
|
1882
1815
|
type: "number",
|
|
@@ -1887,25 +1820,25 @@ var ImprovedEventModal = ({
|
|
|
1887
1820
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500",
|
|
1888
1821
|
placeholder: "\u8F93\u5165\u91CD\u590D\u6B21\u6570"
|
|
1889
1822
|
}
|
|
1890
|
-
))), /* @__PURE__ */
|
|
1891
|
-
return /* @__PURE__ */
|
|
1823
|
+
))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "p-3 bg-purple-50 rounded-lg text-sm text-purple-700" }, /* @__PURE__ */ React2__default.default.createElement("strong", null, "\u793A\u4F8B"), '\uFF1A\u9009\u62E9"\u6BCF\u5929\u91CD\u590D3\u6B21"\u5C06\u521B\u5EFA3\u4E2A\u72EC\u7ACB\u7684\u4E8B\u4EF6\u5B9E\u4F8B\uFF0C\u5206\u522B\u5728\u8FDE\u7EED\u76843\u5929\u53D1\u751F\u3002'));
|
|
1824
|
+
return /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, /* @__PURE__ */ React2__default.default.createElement(chunkZDRBMSTS_js.Modal, { isOpen, onClose: handleClose, width: "800px", height: "auto" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "px-6 py-4 border-b border-gray-200 bg-gradient-to-r from-blue-50 to-indigo-50" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "w-10 h-10 bg-blue-100 rounded-full flex items-center justify-center" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-blue-600 text-lg" }, isEditMode ? "\u270F\uFE0F" : "\u2795")), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("h2", { className: "text-xl font-semibold text-gray-900" }, isEditMode ? "\u7F16\u8F91\u4E8B\u4EF6" : "\u521B\u5EFA\u65B0\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-gray-600" }, isEditMode ? "\u4FEE\u6539\u4E8B\u4EF6\u4FE1\u606F" : "\u586B\u5199\u4E8B\u4EF6\u8BE6\u7EC6\u4FE1\u606F"))), /* @__PURE__ */ React2__default.default.createElement(
|
|
1892
1825
|
"button",
|
|
1893
1826
|
{
|
|
1894
1827
|
type: "button",
|
|
1895
1828
|
onClick: handleClose,
|
|
1896
1829
|
className: "w-8 h-8 flex items-center justify-center rounded-full hover:bg-gray-100 transition-colors"
|
|
1897
1830
|
},
|
|
1898
|
-
/* @__PURE__ */
|
|
1899
|
-
))), /* @__PURE__ */
|
|
1831
|
+
/* @__PURE__ */ React2__default.default.createElement("span", { className: "text-gray-400 text-xl" }, "\xD7")
|
|
1832
|
+
))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "px-6 py-6 max-h-[70vh] overflow-y-auto" }, /* @__PURE__ */ React2__default.default.createElement("form", { onSubmit: handleSubmit, className: "space-y-8" }, !isEditMode && /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-gray-50 rounded-lg p-4" }, renderEventTypeSelector()), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-2 mb-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "w-1 h-6 bg-blue-500 rounded-full" }), /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-medium text-gray-900" }, "\u57FA\u672C\u4FE1\u606F")), renderBasicForm()), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-2 mb-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "w-1 h-6 bg-green-500 rounded-full" }), /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-medium text-gray-900" }, "\u65F6\u95F4\u8BBE\u7F6E")), eventType === "single" /* SINGLE */ && renderSingleEventForm(), eventType === "multi_day" /* MULTI_DAY */ && renderMultiDayEventForm(), eventType === "recurring" /* RECURRING */ && renderRecurringEventForm()), (errors.general || errors.submit) && /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-3" }, errors.general && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-start space-x-3 p-4 bg-red-50 border border-red-200 rounded-lg" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-shrink-0" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-red-500 text-lg" }, "\u26A0\uFE0F")), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("h4", { className: "text-sm font-medium text-red-800" }, "\u8868\u5355\u9A8C\u8BC1\u9519\u8BEF"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-red-600 mt-1" }, errors.general))), errors.submit && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-start space-x-3 p-4 bg-red-50 border border-red-200 rounded-lg" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-shrink-0" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-red-500 text-lg" }, "\u274C")), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("h4", { className: "text-sm font-medium text-red-800" }, "\u4FDD\u5B58\u5931\u8D25"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-red-600 mt-1" }, errors.submit)))))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "px-6 py-4 border-t border-gray-200 bg-gray-50" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React2__default.default.createElement("div", null, isEditMode && onDelete && /* @__PURE__ */ React2__default.default.createElement(
|
|
1900
1833
|
"button",
|
|
1901
1834
|
{
|
|
1902
1835
|
type: "button",
|
|
1903
1836
|
onClick: () => setShowDeleteConfirm(true),
|
|
1904
1837
|
className: "inline-flex items-center px-4 py-2 text-sm font-medium text-red-600 bg-white border border-red-300 rounded-lg hover:bg-red-50 hover:border-red-400 transition-all duration-200 shadow-sm hover:shadow-md"
|
|
1905
1838
|
},
|
|
1906
|
-
/* @__PURE__ */
|
|
1839
|
+
/* @__PURE__ */ React2__default.default.createElement("span", { className: "mr-2" }, "\u{1F5D1}\uFE0F"),
|
|
1907
1840
|
"\u5220\u9664\u4E8B\u4EF6"
|
|
1908
|
-
)), /* @__PURE__ */
|
|
1841
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
1909
1842
|
"button",
|
|
1910
1843
|
{
|
|
1911
1844
|
type: "button",
|
|
@@ -1913,7 +1846,7 @@ var ImprovedEventModal = ({
|
|
|
1913
1846
|
className: "inline-flex items-center px-6 py-2.5 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-lg hover:bg-gray-50 hover:border-gray-400 transition-all duration-200 shadow-sm hover:shadow-md"
|
|
1914
1847
|
},
|
|
1915
1848
|
"\u53D6\u6D88"
|
|
1916
|
-
), /* @__PURE__ */
|
|
1849
|
+
), /* @__PURE__ */ React2__default.default.createElement(
|
|
1917
1850
|
"button",
|
|
1918
1851
|
{
|
|
1919
1852
|
type: "submit",
|
|
@@ -1921,11 +1854,11 @@ var ImprovedEventModal = ({
|
|
|
1921
1854
|
onClick: handleSubmit,
|
|
1922
1855
|
className: "inline-flex items-center px-6 py-2.5 text-sm font-medium text-white bg-gradient-to-r from-blue-600 to-blue-700 border border-blue-600 rounded-lg hover:from-blue-700 hover:to-blue-800 disabled:opacity-50 disabled:cursor-not-allowed transition-all duration-200 shadow-md hover:shadow-lg transform hover:-translate-y-0.5"
|
|
1923
1856
|
},
|
|
1924
|
-
isLoading && /* @__PURE__ */
|
|
1925
|
-
/* @__PURE__ */
|
|
1857
|
+
isLoading && /* @__PURE__ */ React2__default.default.createElement("div", { className: "mr-2 w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin" }),
|
|
1858
|
+
/* @__PURE__ */ React2__default.default.createElement("span", { className: "mr-2" }, isEditMode ? "\u{1F4BE}" : "\u2728"),
|
|
1926
1859
|
isLoading ? "\u4FDD\u5B58\u4E2D..." : isEditMode ? "\u66F4\u65B0\u4E8B\u4EF6" : "\u521B\u5EFA\u4E8B\u4EF6"
|
|
1927
|
-
)))))), /* @__PURE__ */
|
|
1928
|
-
ConfirmModal,
|
|
1860
|
+
)))))), /* @__PURE__ */ React2__default.default.createElement(
|
|
1861
|
+
chunkZDRBMSTS_js.ConfirmModal,
|
|
1929
1862
|
{
|
|
1930
1863
|
isOpen: showDeleteConfirm,
|
|
1931
1864
|
onClose: () => setShowDeleteConfirm(false),
|
|
@@ -1940,13 +1873,13 @@ var ImprovedEventModal = ({
|
|
|
1940
1873
|
};
|
|
1941
1874
|
var ImprovedEventModal_default = ImprovedEventModal;
|
|
1942
1875
|
function useEventDrag(events, onEventUpdate) {
|
|
1943
|
-
const [dragState, setDragState] =
|
|
1876
|
+
const [dragState, setDragState] = React2.useState({
|
|
1944
1877
|
isDragging: false,
|
|
1945
1878
|
draggedEvent: null,
|
|
1946
1879
|
dragOverDate: null,
|
|
1947
1880
|
previewTime: null
|
|
1948
1881
|
});
|
|
1949
|
-
const handleDragStart =
|
|
1882
|
+
const handleDragStart = React2.useCallback((event) => {
|
|
1950
1883
|
const eventId = parseInt(event.active.id);
|
|
1951
1884
|
const draggedEvent = events.find((e) => e.id === eventId);
|
|
1952
1885
|
console.log("\u{1F3AF} \u62D6\u62FD\u5F00\u59CB:", {
|
|
@@ -1968,7 +1901,7 @@ function useEventDrag(events, onEventUpdate) {
|
|
|
1968
1901
|
});
|
|
1969
1902
|
}
|
|
1970
1903
|
}, [events]);
|
|
1971
|
-
const handleDragOver =
|
|
1904
|
+
const handleDragOver = React2.useCallback((event) => {
|
|
1972
1905
|
const { over } = event;
|
|
1973
1906
|
console.log("\u{1F50D} \u62D6\u62FD\u60AC\u505C:", {
|
|
1974
1907
|
overId: over?.id,
|
|
@@ -2023,7 +1956,7 @@ function useEventDrag(events, onEventUpdate) {
|
|
|
2023
1956
|
}
|
|
2024
1957
|
}
|
|
2025
1958
|
}, [dragState.draggedEvent]);
|
|
2026
|
-
const handleDragEnd =
|
|
1959
|
+
const handleDragEnd = React2.useCallback(async (event) => {
|
|
2027
1960
|
const { over } = event;
|
|
2028
1961
|
console.log("\u{1F3AF} \u62D6\u62FD\u7ED3\u675F:", {
|
|
2029
1962
|
overId: over?.id,
|
|
@@ -2076,7 +2009,7 @@ function useEventDrag(events, onEventUpdate) {
|
|
|
2076
2009
|
console.log("\u{1F504} \u91CD\u7F6E\u62D6\u62FD\u72B6\u6001");
|
|
2077
2010
|
resetDragState();
|
|
2078
2011
|
}, [dragState.draggedEvent, dragState.dragOverDate, onEventUpdate]);
|
|
2079
|
-
const resetDragState =
|
|
2012
|
+
const resetDragState = React2.useCallback(() => {
|
|
2080
2013
|
setDragState({
|
|
2081
2014
|
isDragging: false,
|
|
2082
2015
|
draggedEvent: null,
|
|
@@ -2114,9 +2047,9 @@ var isDragSupported = () => {
|
|
|
2114
2047
|
return "draggable" in document.createElement("div");
|
|
2115
2048
|
};
|
|
2116
2049
|
var useDeviceType = () => {
|
|
2117
|
-
const [isMobile, setIsMobile] =
|
|
2118
|
-
const [dragSupported, setDragSupported] =
|
|
2119
|
-
|
|
2050
|
+
const [isMobile, setIsMobile] = React2.useState(false);
|
|
2051
|
+
const [dragSupported, setDragSupported] = React2.useState(true);
|
|
2052
|
+
React2.useEffect(() => {
|
|
2120
2053
|
const checkDevice = () => {
|
|
2121
2054
|
const mobile = isMobileDevice();
|
|
2122
2055
|
setIsMobile(mobile);
|
|
@@ -2179,16 +2112,16 @@ var DraggableEvent = ({
|
|
|
2179
2112
|
const getPriorityIndicator = (priority) => {
|
|
2180
2113
|
switch (priority) {
|
|
2181
2114
|
case "high":
|
|
2182
|
-
return /* @__PURE__ */
|
|
2115
|
+
return /* @__PURE__ */ React2__default.default.createElement("div", { className: "w-2 h-2 bg-red-500 rounded-full flex-shrink-0", title: "\u9AD8\u4F18\u5148\u7EA7" });
|
|
2183
2116
|
case "medium":
|
|
2184
|
-
return /* @__PURE__ */
|
|
2117
|
+
return /* @__PURE__ */ React2__default.default.createElement("div", { className: "w-2 h-2 bg-yellow-500 rounded-full flex-shrink-0", title: "\u4E2D\u4F18\u5148\u7EA7" });
|
|
2185
2118
|
case "low":
|
|
2186
|
-
return /* @__PURE__ */
|
|
2119
|
+
return /* @__PURE__ */ React2__default.default.createElement("div", { className: "w-2 h-2 bg-green-500 rounded-full flex-shrink-0", title: "\u4F4E\u4F18\u5148\u7EA7" });
|
|
2187
2120
|
default:
|
|
2188
2121
|
return null;
|
|
2189
2122
|
}
|
|
2190
2123
|
};
|
|
2191
|
-
return /* @__PURE__ */
|
|
2124
|
+
return /* @__PURE__ */ React2__default.default.createElement(
|
|
2192
2125
|
"div",
|
|
2193
2126
|
{
|
|
2194
2127
|
ref: setNodeRef,
|
|
@@ -2205,16 +2138,16 @@ var DraggableEvent = ({
|
|
|
2205
2138
|
...dragSupported ? attributes : {},
|
|
2206
2139
|
onClick
|
|
2207
2140
|
},
|
|
2208
|
-
dragSupported && /* @__PURE__ */
|
|
2141
|
+
dragSupported && /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute top-1 right-1 opacity-0 group-hover:opacity-100 transition-opacity" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
2209
2142
|
"svg",
|
|
2210
2143
|
{
|
|
2211
2144
|
className: "w-3 h-3 text-gray-400",
|
|
2212
2145
|
fill: "currentColor",
|
|
2213
2146
|
viewBox: "0 0 20 20"
|
|
2214
2147
|
},
|
|
2215
|
-
/* @__PURE__ */
|
|
2148
|
+
/* @__PURE__ */ React2__default.default.createElement("path", { d: "M7 2a2 2 0 1 0 0 4 2 2 0 0 0 0-4zM7 8a2 2 0 1 0 0 4 2 2 0 0 0 0-4zM7 14a2 2 0 1 0 0 4 2 2 0 0 0 0-4zM13 2a2 2 0 1 0 0 4 2 2 0 0 0 0-4zM13 8a2 2 0 1 0 0 4 2 2 0 0 0 0-4zM13 14a2 2 0 1 0 0 4 2 2 0 0 0 0-4z" })
|
|
2216
2149
|
)),
|
|
2217
|
-
isMobile && /* @__PURE__ */
|
|
2150
|
+
isMobile && /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute top-1 right-1 opacity-70" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
2218
2151
|
"svg",
|
|
2219
2152
|
{
|
|
2220
2153
|
className: "w-3 h-3 text-gray-500",
|
|
@@ -2222,7 +2155,7 @@ var DraggableEvent = ({
|
|
|
2222
2155
|
stroke: "currentColor",
|
|
2223
2156
|
viewBox: "0 0 24 24"
|
|
2224
2157
|
},
|
|
2225
|
-
/* @__PURE__ */
|
|
2158
|
+
/* @__PURE__ */ React2__default.default.createElement(
|
|
2226
2159
|
"path",
|
|
2227
2160
|
{
|
|
2228
2161
|
strokeLinecap: "round",
|
|
@@ -2232,9 +2165,9 @@ var DraggableEvent = ({
|
|
|
2232
2165
|
}
|
|
2233
2166
|
)
|
|
2234
2167
|
)),
|
|
2235
|
-
/* @__PURE__ */
|
|
2168
|
+
/* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-1" }, getPriorityIndicator(event.priority), /* @__PURE__ */ React2__default.default.createElement("span", { className: "font-medium truncate flex-1" }, event.title), !event.allDay && /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-xs opacity-60 whitespace-nowrap" }, formatTime(new Date(event.startTime)))),
|
|
2236
2169
|
children,
|
|
2237
|
-
isDragActive && /* @__PURE__ */
|
|
2170
|
+
isDragActive && /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute inset-0 bg-white bg-opacity-20 rounded-lg pointer-events-none" })
|
|
2238
2171
|
);
|
|
2239
2172
|
};
|
|
2240
2173
|
var DraggableEvent_default = DraggableEvent;
|
|
@@ -2296,19 +2229,19 @@ var DroppableCalendarCell = ({
|
|
|
2296
2229
|
}
|
|
2297
2230
|
return baseClasses.join(" ");
|
|
2298
2231
|
};
|
|
2299
|
-
return /* @__PURE__ */
|
|
2232
|
+
return /* @__PURE__ */ React2__default.default.createElement(
|
|
2300
2233
|
"div",
|
|
2301
2234
|
{
|
|
2302
2235
|
ref: disableDrop ? void 0 : setNodeRef,
|
|
2303
2236
|
className: getCellClasses(),
|
|
2304
2237
|
onClick: () => onDateClick?.(date)
|
|
2305
2238
|
},
|
|
2306
|
-
/* @__PURE__ */
|
|
2239
|
+
/* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: `
|
|
2307
2240
|
inline-flex items-center justify-center text-sm font-semibold w-6 h-6
|
|
2308
2241
|
${!isCurrentMonth ? "text-gray-400" : date.getDay() === 0 || date.getDay() === 6 ? "text-red-600" : "text-gray-900"}
|
|
2309
2242
|
${isToday(date) ? "bg-blue-600 text-white rounded-full shadow-md" : ""}
|
|
2310
|
-
` }, date.getDate()), dayEvents.length > 0 && /* @__PURE__ */
|
|
2311
|
-
/* @__PURE__ */
|
|
2243
|
+
` }, date.getDate()), dayEvents.length > 0 && /* @__PURE__ */ React2__default.default.createElement("span", { className: "bg-yellow-500 inline-flex items-center justify-center text-sm font-semibold w-6 h-6 border border-white 'bg-blue-600 text-white rounded-full shadow-md" }, dayEvents.length)),
|
|
2244
|
+
/* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-1" }, dayEvents.slice(0, 3).map((event) => /* @__PURE__ */ React2__default.default.createElement(
|
|
2312
2245
|
DraggableEvent_default,
|
|
2313
2246
|
{
|
|
2314
2247
|
key: event.id,
|
|
@@ -2318,9 +2251,9 @@ var DroppableCalendarCell = ({
|
|
|
2318
2251
|
onEventClick?.(event);
|
|
2319
2252
|
}
|
|
2320
2253
|
}
|
|
2321
|
-
)), dayEvents.length > 3 && /* @__PURE__ */
|
|
2322
|
-
isOver && dragOverPreview && /* @__PURE__ */
|
|
2323
|
-
isOver && !dragOverPreview && /* @__PURE__ */
|
|
2254
|
+
)), dayEvents.length > 3 && /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500 px-2 py-1 bg-gray-100 rounded" }, "+", dayEvents.length - 3, " \u66F4\u591A")),
|
|
2255
|
+
isOver && dragOverPreview && /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center bg-blue-50 bg-opacity-90 rounded-lg border-2 border-dashed border-blue-300" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-sm font-medium text-blue-600 mb-1" }, "\u79FB\u52A8\u5230 ", date.getMonth() + 1, "/", date.getDate()), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-blue-500" }, dragOverPreview))),
|
|
2256
|
+
isOver && !dragOverPreview && /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center bg-green-50 bg-opacity-90 rounded-lg border-2 border-dashed border-green-300" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-sm font-medium text-green-600" }, "\u70B9\u51FB\u521B\u5EFA\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-green-500" }, date.getMonth() + 1, "/", date.getDate())))
|
|
2324
2257
|
);
|
|
2325
2258
|
};
|
|
2326
2259
|
var DroppableCalendarCell_default = DroppableCalendarCell;
|
|
@@ -2335,7 +2268,7 @@ var DraggableMonthView = ({
|
|
|
2335
2268
|
onEventUpdate,
|
|
2336
2269
|
className = ""
|
|
2337
2270
|
}) => {
|
|
2338
|
-
const [selectedDate, setSelectedDate] =
|
|
2271
|
+
const [selectedDate, setSelectedDate] = React2.useState(null);
|
|
2339
2272
|
const { isMobile, dragSupported } = useDeviceType();
|
|
2340
2273
|
const {
|
|
2341
2274
|
dragState,
|
|
@@ -2344,14 +2277,14 @@ var DraggableMonthView = ({
|
|
|
2344
2277
|
handleDragEnd
|
|
2345
2278
|
} = useEventDrag(events, dragSupported ? onEventUpdate : async () => {
|
|
2346
2279
|
});
|
|
2347
|
-
const monthDays =
|
|
2280
|
+
const monthDays = React2.useMemo(() => {
|
|
2348
2281
|
const dates = getMonthViewDates(currentDate);
|
|
2349
2282
|
return dates.map((date) => ({
|
|
2350
2283
|
date,
|
|
2351
2284
|
isCurrentMonth: date.getMonth() === currentDate.getMonth()
|
|
2352
2285
|
}));
|
|
2353
2286
|
}, [currentDate]);
|
|
2354
|
-
const weekDays =
|
|
2287
|
+
const weekDays = React2.useMemo(() => {
|
|
2355
2288
|
return monthDays.slice(0, 7).map(
|
|
2356
2289
|
(dayData) => getWeekdayName(dayData.date, "zh-CN", "short")
|
|
2357
2290
|
);
|
|
@@ -2369,27 +2302,27 @@ var DraggableMonthView = ({
|
|
|
2369
2302
|
setSelectedDate(date);
|
|
2370
2303
|
onDateClick?.(date);
|
|
2371
2304
|
};
|
|
2372
|
-
const renderCalendarContent = () => /* @__PURE__ */
|
|
2305
|
+
const renderCalendarContent = () => /* @__PURE__ */ React2__default.default.createElement("div", { className: "overflow-hidden border border-gray-300 rounded-lg" }, /* @__PURE__ */ React2__default.default.createElement("table", { className: "w-full table-fixed border-collapse" }, /* @__PURE__ */ React2__default.default.createElement("thead", null, /* @__PURE__ */ React2__default.default.createElement("tr", { className: "bg-gradient-to-r from-gray-50 to-gray-100 border-b-2 border-gray-300" }, weekDays.map((day, index) => /* @__PURE__ */ React2__default.default.createElement(
|
|
2373
2306
|
"th",
|
|
2374
2307
|
{
|
|
2375
2308
|
key: day,
|
|
2376
2309
|
className: `p-2 sm:p-3 text-center text-sm font-bold border-r border-gray-300 last:border-r-0 ${index === 5 || index === 6 ? "text-red-600 bg-red-50" : "text-gray-800"}`
|
|
2377
2310
|
},
|
|
2378
2311
|
day
|
|
2379
|
-
)))), /* @__PURE__ */
|
|
2312
|
+
)))), /* @__PURE__ */ React2__default.default.createElement("tbody", null, Array.from({ length: 6 }, (_, weekIndex) => /* @__PURE__ */ React2__default.default.createElement("tr", { key: weekIndex }, Array.from({ length: 7 }, (_2, dayIndex) => {
|
|
2380
2313
|
const dateIndex = weekIndex * 7 + dayIndex;
|
|
2381
2314
|
const dayData = monthDays[dateIndex];
|
|
2382
2315
|
if (!dayData) {
|
|
2383
|
-
return /* @__PURE__ */
|
|
2316
|
+
return /* @__PURE__ */ React2__default.default.createElement("td", { key: dayIndex, className: "h-24 sm:h-32 border-b border-gray-300 border-r border-gray-300 last:border-r-0 bg-gray-100" });
|
|
2384
2317
|
}
|
|
2385
2318
|
const isWeekend2 = dayData.date.getDay() === 0 || dayData.date.getDay() === 6;
|
|
2386
|
-
return /* @__PURE__ */
|
|
2319
|
+
return /* @__PURE__ */ React2__default.default.createElement(
|
|
2387
2320
|
"td",
|
|
2388
2321
|
{
|
|
2389
2322
|
key: dayIndex,
|
|
2390
2323
|
className: `h-24 sm:h-32 border-b border-gray-300 border-r border-gray-300 last:border-r-0 relative ${isWeekend2 ? "bg-red-50" : "bg-white"} hover:bg-blue-50 transition-colors`
|
|
2391
2324
|
},
|
|
2392
|
-
/* @__PURE__ */
|
|
2325
|
+
/* @__PURE__ */ React2__default.default.createElement(
|
|
2393
2326
|
DroppableCalendarCell_default,
|
|
2394
2327
|
{
|
|
2395
2328
|
date: dayData.date,
|
|
@@ -2405,30 +2338,30 @@ var DraggableMonthView = ({
|
|
|
2405
2338
|
)
|
|
2406
2339
|
);
|
|
2407
2340
|
}))))));
|
|
2408
|
-
return /* @__PURE__ */
|
|
2341
|
+
return /* @__PURE__ */ React2__default.default.createElement("div", { className: `bg-white rounded-lg shadow-sm ${className}` }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between p-4 border-b" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-4" }, /* @__PURE__ */ React2__default.default.createElement("h2", { className: "text-lg sm:text-xl font-semibold text-gray-900" }, currentDate.getFullYear(), "\u5E74", getMonthName(currentDate)), /* @__PURE__ */ React2__default.default.createElement(
|
|
2409
2342
|
"button",
|
|
2410
2343
|
{
|
|
2411
2344
|
onClick: goToToday,
|
|
2412
2345
|
className: "px-3 py-1 text-sm bg-blue-100 text-blue-600 rounded hover:bg-blue-200 transition-colors"
|
|
2413
2346
|
},
|
|
2414
2347
|
"\u4ECA\u5929"
|
|
2415
|
-
), isMobile && /* @__PURE__ */
|
|
2348
|
+
), isMobile && /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-xs text-gray-500 bg-gray-100 px-2 py-1 rounded" }, "\u70B9\u51FB\u4E8B\u4EF6\u7F16\u8F91")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
2416
2349
|
"button",
|
|
2417
2350
|
{
|
|
2418
2351
|
onClick: goToPreviousMonth,
|
|
2419
2352
|
className: "p-2 hover:bg-gray-100 rounded-lg transition-colors",
|
|
2420
2353
|
title: "\u4E0A\u4E2A\u6708"
|
|
2421
2354
|
},
|
|
2422
|
-
/* @__PURE__ */
|
|
2423
|
-
), /* @__PURE__ */
|
|
2355
|
+
/* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-5 h-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }))
|
|
2356
|
+
), /* @__PURE__ */ React2__default.default.createElement(
|
|
2424
2357
|
"button",
|
|
2425
2358
|
{
|
|
2426
2359
|
onClick: goToNextMonth,
|
|
2427
2360
|
className: "p-2 hover:bg-gray-100 rounded-lg transition-colors",
|
|
2428
2361
|
title: "\u4E0B\u4E2A\u6708"
|
|
2429
2362
|
},
|
|
2430
|
-
/* @__PURE__ */
|
|
2431
|
-
))), dragSupported ? /* @__PURE__ */
|
|
2363
|
+
/* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-5 h-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }))
|
|
2364
|
+
))), dragSupported ? /* @__PURE__ */ React2__default.default.createElement(
|
|
2432
2365
|
core.DndContext,
|
|
2433
2366
|
{
|
|
2434
2367
|
onDragStart: handleDragStart,
|
|
@@ -2436,7 +2369,7 @@ var DraggableMonthView = ({
|
|
|
2436
2369
|
onDragEnd: handleDragEnd
|
|
2437
2370
|
},
|
|
2438
2371
|
renderCalendarContent(),
|
|
2439
|
-
/* @__PURE__ */
|
|
2372
|
+
/* @__PURE__ */ React2__default.default.createElement(core.DragOverlay, null, dragState.isDragging && dragState.draggedEvent && /* @__PURE__ */ React2__default.default.createElement("div", { className: "transform rotate-1 scale-105 pointer-events-none" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
2440
2373
|
DraggableEvent_default,
|
|
2441
2374
|
{
|
|
2442
2375
|
event: dragState.draggedEvent,
|
|
@@ -2444,7 +2377,7 @@ var DraggableMonthView = ({
|
|
|
2444
2377
|
className: "shadow-lg border border-blue-400 bg-opacity-90"
|
|
2445
2378
|
}
|
|
2446
2379
|
)))
|
|
2447
|
-
) : renderCalendarContent(), dragSupported && dragState.isDragging && /* @__PURE__ */
|
|
2380
|
+
) : renderCalendarContent(), dragSupported && dragState.isDragging && /* @__PURE__ */ React2__default.default.createElement("div", { className: "fixed bottom-4 right-4 bg-blue-600 text-white px-4 py-2 rounded-lg shadow-lg z-50" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4 animate-pulse", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React2__default.default.createElement("path", { d: "M10 12a2 2 0 100-4 2 2 0 000 4z" }), /* @__PURE__ */ React2__default.default.createElement("path", { fillRule: "evenodd", d: "M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z", clipRule: "evenodd" })), /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-sm" }, '\u62D6\u62FD "', dragState.draggedEvent?.title, '" \u5230\u76EE\u6807\u65E5\u671F'))));
|
|
2448
2381
|
};
|
|
2449
2382
|
var DraggableMonthView_default = DraggableMonthView;
|
|
2450
2383
|
var COLOR_THEMES = {
|
|
@@ -2579,9 +2512,9 @@ var DEFAULT_SETTINGS = {
|
|
|
2579
2512
|
}
|
|
2580
2513
|
};
|
|
2581
2514
|
function CalendarSettings({ onSettingsChange }) {
|
|
2582
|
-
const [settings, setSettings] =
|
|
2583
|
-
const [activeTab, setActiveTab] =
|
|
2584
|
-
|
|
2515
|
+
const [settings, setSettings] = React2.useState(DEFAULT_SETTINGS);
|
|
2516
|
+
const [activeTab, setActiveTab] = React2.useState("theme");
|
|
2517
|
+
React2.useEffect(() => {
|
|
2585
2518
|
const savedSettings = localStorage.getItem("calendar-settings");
|
|
2586
2519
|
if (savedSettings) {
|
|
2587
2520
|
try {
|
|
@@ -2605,28 +2538,28 @@ function CalendarSettings({ onSettingsChange }) {
|
|
|
2605
2538
|
saveSettings(DEFAULT_SETTINGS);
|
|
2606
2539
|
};
|
|
2607
2540
|
const currentTheme = COLOR_THEMES[settings.theme];
|
|
2608
|
-
return /* @__PURE__ */
|
|
2541
|
+
return /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "px-6 py-4 border-b border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("h2", { className: "text-lg font-semibold text-gray-900" }, "\u65E5\u5386\u8BBE\u7F6E"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-gray-600 mt-1" }, "\u81EA\u5B9A\u4E49\u60A8\u7684\u65E5\u5386\u5916\u89C2\u548C\u884C\u4E3A")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "border-b border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("nav", { className: "flex space-x-8 px-6" }, [
|
|
2609
2542
|
{ key: "theme", label: "\u4E3B\u9898\u6837\u5F0F", icon: "\u{1F3A8}" },
|
|
2610
2543
|
{ key: "general", label: "\u5E38\u89C4\u8BBE\u7F6E", icon: "\u2699\uFE0F" },
|
|
2611
2544
|
{ key: "time", label: "\u65F6\u95F4\u8BBE\u7F6E", icon: "\u23F0" }
|
|
2612
|
-
].map(({ key, label, icon }) => /* @__PURE__ */
|
|
2545
|
+
].map(({ key, label, icon }) => /* @__PURE__ */ React2__default.default.createElement(
|
|
2613
2546
|
"button",
|
|
2614
2547
|
{
|
|
2615
2548
|
key,
|
|
2616
2549
|
onClick: () => setActiveTab(key),
|
|
2617
2550
|
className: `py-4 text-sm font-medium border-b-2 transition-colors ${activeTab === key ? "border-blue-500 text-blue-600" : "border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300"}`
|
|
2618
2551
|
},
|
|
2619
|
-
/* @__PURE__ */
|
|
2552
|
+
/* @__PURE__ */ React2__default.default.createElement("span", { className: "mr-2" }, icon),
|
|
2620
2553
|
label
|
|
2621
|
-
)))), /* @__PURE__ */
|
|
2554
|
+
)))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "p-6" }, activeTab === "theme" && /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-md font-medium text-gray-900 mb-4" }, "\u9884\u8BBE\u4E3B\u9898"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-4" }, Object.entries(COLOR_THEMES).map(([key, theme]) => /* @__PURE__ */ React2__default.default.createElement(
|
|
2622
2555
|
"div",
|
|
2623
2556
|
{
|
|
2624
2557
|
key,
|
|
2625
2558
|
onClick: () => updateSettings({ theme: key }),
|
|
2626
2559
|
className: `p-4 border-2 rounded-lg cursor-pointer transition-all ${settings.theme === key ? "border-blue-500 bg-blue-50" : "border-gray-200 hover:border-gray-300"}`
|
|
2627
2560
|
},
|
|
2628
|
-
/* @__PURE__ */
|
|
2629
|
-
/* @__PURE__ */
|
|
2561
|
+
/* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between mb-3" }, /* @__PURE__ */ React2__default.default.createElement("h4", { className: "font-medium text-gray-900" }, theme.name), settings.theme === key && /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-5 h-5 text-blue-500", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React2__default.default.createElement("path", { fillRule: "evenodd", d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z", clipRule: "evenodd" }))),
|
|
2562
|
+
/* @__PURE__ */ React2__default.default.createElement("div", { className: "flex space-x-1 mb-3" }, Object.values(theme.colors).slice(0, 6).map((color, index) => /* @__PURE__ */ React2__default.default.createElement(
|
|
2630
2563
|
"div",
|
|
2631
2564
|
{
|
|
2632
2565
|
key: index,
|
|
@@ -2634,7 +2567,7 @@ function CalendarSettings({ onSettingsChange }) {
|
|
|
2634
2567
|
style: { backgroundColor: color }
|
|
2635
2568
|
}
|
|
2636
2569
|
))),
|
|
2637
|
-
/* @__PURE__ */
|
|
2570
|
+
/* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
2638
2571
|
"div",
|
|
2639
2572
|
{
|
|
2640
2573
|
className: "grid grid-cols-7 gap-1 p-2 rounded border",
|
|
@@ -2643,7 +2576,7 @@ function CalendarSettings({ onSettingsChange }) {
|
|
|
2643
2576
|
borderColor: theme.border.calendar
|
|
2644
2577
|
}
|
|
2645
2578
|
},
|
|
2646
|
-
["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"].map((day, index) => /* @__PURE__ */
|
|
2579
|
+
["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"].map((day, index) => /* @__PURE__ */ React2__default.default.createElement(
|
|
2647
2580
|
"div",
|
|
2648
2581
|
{
|
|
2649
2582
|
key: day,
|
|
@@ -2652,7 +2585,7 @@ function CalendarSettings({ onSettingsChange }) {
|
|
|
2652
2585
|
},
|
|
2653
2586
|
day
|
|
2654
2587
|
)),
|
|
2655
|
-
Array.from({ length: 7 }, (_, index) => /* @__PURE__ */
|
|
2588
|
+
Array.from({ length: 7 }, (_, index) => /* @__PURE__ */ React2__default.default.createElement(
|
|
2656
2589
|
"div",
|
|
2657
2590
|
{
|
|
2658
2591
|
key: index,
|
|
@@ -2666,7 +2599,7 @@ function CalendarSettings({ onSettingsChange }) {
|
|
|
2666
2599
|
index + 1
|
|
2667
2600
|
))
|
|
2668
2601
|
))
|
|
2669
|
-
)))), /* @__PURE__ */
|
|
2602
|
+
)))), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-md font-medium text-gray-900 mb-4" }, "\u81EA\u5B9A\u4E49\u989C\u8272"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-4" }, Object.entries(currentTheme.colors).map(([key, defaultColor]) => /* @__PURE__ */ React2__default.default.createElement("div", { key, className: "space-y-2" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 capitalize" }, key === "primary" ? "\u4E3B\u8272" : key === "secondary" ? "\u6B21\u8981\u8272" : key === "accent" ? "\u5F3A\u8C03\u8272" : key === "danger" ? "\u5371\u9669\u8272" : key), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
2670
2603
|
"input",
|
|
2671
2604
|
{
|
|
2672
2605
|
type: "color",
|
|
@@ -2679,7 +2612,7 @@ function CalendarSettings({ onSettingsChange }) {
|
|
|
2679
2612
|
}),
|
|
2680
2613
|
className: "w-12 h-8 border border-gray-300 rounded cursor-pointer"
|
|
2681
2614
|
}
|
|
2682
|
-
), /* @__PURE__ */
|
|
2615
|
+
), /* @__PURE__ */ React2__default.default.createElement(
|
|
2683
2616
|
"input",
|
|
2684
2617
|
{
|
|
2685
2618
|
type: "text",
|
|
@@ -2693,23 +2626,23 @@ function CalendarSettings({ onSettingsChange }) {
|
|
|
2693
2626
|
className: "flex-1 px-3 py-1 text-sm border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500",
|
|
2694
2627
|
placeholder: defaultColor
|
|
2695
2628
|
}
|
|
2696
|
-
))))))), activeTab === "general" && /* @__PURE__ */
|
|
2629
|
+
))))))), activeTab === "general" && /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u4E00\u5468\u5F00\u59CB\u4E8E"), /* @__PURE__ */ React2__default.default.createElement(
|
|
2697
2630
|
"select",
|
|
2698
2631
|
{
|
|
2699
2632
|
value: settings.weekStartsOn,
|
|
2700
2633
|
onChange: (e) => updateSettings({ weekStartsOn: Number(e.target.value) }),
|
|
2701
2634
|
className: "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
|
|
2702
2635
|
},
|
|
2703
|
-
WEEK_START_OPTIONS.map((option) => /* @__PURE__ */
|
|
2704
|
-
)), /* @__PURE__ */
|
|
2636
|
+
WEEK_START_OPTIONS.map((option) => /* @__PURE__ */ React2__default.default.createElement("option", { key: option.value, value: option.value }, option.label))
|
|
2637
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u8BED\u8A00"), /* @__PURE__ */ React2__default.default.createElement(
|
|
2705
2638
|
"select",
|
|
2706
2639
|
{
|
|
2707
2640
|
value: settings.language,
|
|
2708
2641
|
onChange: (e) => updateSettings({ language: e.target.value }),
|
|
2709
2642
|
className: "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
|
|
2710
2643
|
},
|
|
2711
|
-
LANGUAGE_OPTIONS.map((option) => /* @__PURE__ */
|
|
2712
|
-
)), /* @__PURE__ */
|
|
2644
|
+
LANGUAGE_OPTIONS.map((option) => /* @__PURE__ */ React2__default.default.createElement("option", { key: option.value, value: option.value }, option.label))
|
|
2645
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-md font-medium text-gray-900" }, "\u663E\u793A\u9009\u9879"), /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
2713
2646
|
"input",
|
|
2714
2647
|
{
|
|
2715
2648
|
type: "checkbox",
|
|
@@ -2717,7 +2650,7 @@ function CalendarSettings({ onSettingsChange }) {
|
|
|
2717
2650
|
onChange: (e) => updateSettings({ showWeekNumbers: e.target.checked }),
|
|
2718
2651
|
className: "rounded border-gray-300 text-blue-600 focus:ring-blue-500"
|
|
2719
2652
|
}
|
|
2720
|
-
), /* @__PURE__ */
|
|
2653
|
+
), /* @__PURE__ */ React2__default.default.createElement("span", { className: "ml-2 text-sm text-gray-700" }, "\u663E\u793A\u5468\u6570")), /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
2721
2654
|
"input",
|
|
2722
2655
|
{
|
|
2723
2656
|
type: "checkbox",
|
|
@@ -2725,7 +2658,7 @@ function CalendarSettings({ onSettingsChange }) {
|
|
|
2725
2658
|
onChange: (e) => updateSettings({ showLunarCalendar: e.target.checked }),
|
|
2726
2659
|
className: "rounded border-gray-300 text-blue-600 focus:ring-blue-500"
|
|
2727
2660
|
}
|
|
2728
|
-
), /* @__PURE__ */
|
|
2661
|
+
), /* @__PURE__ */ React2__default.default.createElement("span", { className: "ml-2 text-sm text-gray-700" }, "\u663E\u793A\u519C\u5386"))), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u9ED8\u8BA4\u4E8B\u4EF6\u65F6\u957F\uFF08\u5206\u949F\uFF09"), /* @__PURE__ */ React2__default.default.createElement(
|
|
2729
2662
|
"input",
|
|
2730
2663
|
{
|
|
2731
2664
|
type: "number",
|
|
@@ -2736,15 +2669,15 @@ function CalendarSettings({ onSettingsChange }) {
|
|
|
2736
2669
|
onChange: (e) => updateSettings({ defaultEventDuration: Number(e.target.value) }),
|
|
2737
2670
|
className: "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
|
|
2738
2671
|
}
|
|
2739
|
-
))), activeTab === "time" && /* @__PURE__ */
|
|
2672
|
+
))), activeTab === "time" && /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u65F6\u95F4\u683C\u5F0F"), /* @__PURE__ */ React2__default.default.createElement(
|
|
2740
2673
|
"select",
|
|
2741
2674
|
{
|
|
2742
2675
|
value: settings.timeFormat,
|
|
2743
2676
|
onChange: (e) => updateSettings({ timeFormat: e.target.value }),
|
|
2744
2677
|
className: "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
|
|
2745
2678
|
},
|
|
2746
|
-
TIME_FORMAT_OPTIONS.map((option) => /* @__PURE__ */
|
|
2747
|
-
)), /* @__PURE__ */
|
|
2679
|
+
TIME_FORMAT_OPTIONS.map((option) => /* @__PURE__ */ React2__default.default.createElement("option", { key: option.value, value: option.value }, option.label))
|
|
2680
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-md font-medium text-gray-900 mb-4" }, "\u5DE5\u4F5C\u65F6\u95F4"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-2 gap-4" }, /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u5F00\u59CB\u65F6\u95F4"), /* @__PURE__ */ React2__default.default.createElement(
|
|
2748
2681
|
"input",
|
|
2749
2682
|
{
|
|
2750
2683
|
type: "time",
|
|
@@ -2757,7 +2690,7 @@ function CalendarSettings({ onSettingsChange }) {
|
|
|
2757
2690
|
}),
|
|
2758
2691
|
className: "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
|
|
2759
2692
|
}
|
|
2760
|
-
)), /* @__PURE__ */
|
|
2693
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u7ED3\u675F\u65F6\u95F4"), /* @__PURE__ */ React2__default.default.createElement(
|
|
2761
2694
|
"input",
|
|
2762
2695
|
{
|
|
2763
2696
|
type: "time",
|
|
@@ -2770,14 +2703,14 @@ function CalendarSettings({ onSettingsChange }) {
|
|
|
2770
2703
|
}),
|
|
2771
2704
|
className: "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
|
|
2772
2705
|
}
|
|
2773
|
-
))))), /* @__PURE__ */
|
|
2706
|
+
))))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex justify-between pt-6 border-t border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
2774
2707
|
"button",
|
|
2775
2708
|
{
|
|
2776
2709
|
onClick: resetSettings,
|
|
2777
2710
|
className: "px-4 py-2 text-sm font-medium text-gray-700 bg-gray-100 hover:bg-gray-200 rounded-md transition-colors"
|
|
2778
2711
|
},
|
|
2779
2712
|
"\u91CD\u7F6E\u4E3A\u9ED8\u8BA4"
|
|
2780
|
-
), /* @__PURE__ */
|
|
2713
|
+
), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex space-x-3" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
2781
2714
|
"button",
|
|
2782
2715
|
{
|
|
2783
2716
|
onClick: () => {
|
|
@@ -2793,7 +2726,7 @@ function CalendarSettings({ onSettingsChange }) {
|
|
|
2793
2726
|
className: "px-4 py-2 text-sm font-medium text-blue-600 bg-blue-50 hover:bg-blue-100 rounded-md transition-colors"
|
|
2794
2727
|
},
|
|
2795
2728
|
"\u5BFC\u51FA\u8BBE\u7F6E"
|
|
2796
|
-
), /* @__PURE__ */
|
|
2729
|
+
), /* @__PURE__ */ React2__default.default.createElement("label", { className: "px-4 py-2 text-sm font-medium text-green-600 bg-green-50 hover:bg-green-100 rounded-md transition-colors cursor-pointer" }, "\u5BFC\u5165\u8BBE\u7F6E", /* @__PURE__ */ React2__default.default.createElement(
|
|
2797
2730
|
"input",
|
|
2798
2731
|
{
|
|
2799
2732
|
type: "file",
|
|
@@ -2825,14 +2758,14 @@ function CalendarPage({
|
|
|
2825
2758
|
onShowLogin,
|
|
2826
2759
|
headerActions
|
|
2827
2760
|
}) {
|
|
2828
|
-
const [currentDate, setCurrentDate] =
|
|
2829
|
-
const [viewType, setViewType] =
|
|
2830
|
-
const [isEventModalOpen, setIsEventModalOpen] =
|
|
2831
|
-
const [selectedDate, setSelectedDate] =
|
|
2832
|
-
const [editingEvent, setEditingEvent] =
|
|
2833
|
-
const [activeTab, setActiveTab] =
|
|
2834
|
-
const [calendarSettings, setCalendarSettings] =
|
|
2835
|
-
const [eventListConfig, setEventListConfig] =
|
|
2761
|
+
const [currentDate, setCurrentDate] = React2.useState(/* @__PURE__ */ new Date());
|
|
2762
|
+
const [viewType, setViewType] = React2.useState("month" /* MONTH */);
|
|
2763
|
+
const [isEventModalOpen, setIsEventModalOpen] = React2.useState(false);
|
|
2764
|
+
const [selectedDate, setSelectedDate] = React2.useState(null);
|
|
2765
|
+
const [editingEvent, setEditingEvent] = React2.useState(null);
|
|
2766
|
+
const [activeTab, setActiveTab] = React2.useState("calendar");
|
|
2767
|
+
const [calendarSettings, setCalendarSettings] = React2.useState(null);
|
|
2768
|
+
const [eventListConfig, setEventListConfig] = React2.useState({
|
|
2836
2769
|
displayMode: "list" /* LIST */,
|
|
2837
2770
|
sort: {
|
|
2838
2771
|
field: "startTime" /* START_TIME */,
|
|
@@ -2855,8 +2788,8 @@ function CalendarPage({
|
|
|
2855
2788
|
fetchEvents,
|
|
2856
2789
|
clearError
|
|
2857
2790
|
} = useEnhancedEvents();
|
|
2858
|
-
|
|
2859
|
-
|
|
2791
|
+
React2.useMemo(() => getMonthViewDates(currentDate), [currentDate]);
|
|
2792
|
+
React2.useEffect(() => {
|
|
2860
2793
|
const viewDates = getMonthViewDates(currentDate);
|
|
2861
2794
|
const viewStart = viewDates[0];
|
|
2862
2795
|
const viewEnd = viewDates[viewDates.length - 1];
|
|
@@ -2872,7 +2805,7 @@ function CalendarPage({
|
|
|
2872
2805
|
});
|
|
2873
2806
|
}
|
|
2874
2807
|
}, [currentDate, fetchEvents]);
|
|
2875
|
-
const sampleEvents =
|
|
2808
|
+
const sampleEvents = React2.useMemo(() => [
|
|
2876
2809
|
{ date: "2024-12-15", title: "\u56E2\u961F\u4F1A\u8BAE", color: "blue" },
|
|
2877
2810
|
{ date: "2024-12-20", title: "\u9879\u76EE\u8BC4\u5BA1", color: "green" },
|
|
2878
2811
|
{ date: "2024-12-25", title: "\u5723\u8BDE\u8282", color: "red" },
|
|
@@ -3045,7 +2978,7 @@ function CalendarPage({
|
|
|
3045
2978
|
const renderCalendarView = () => {
|
|
3046
2979
|
switch (viewType) {
|
|
3047
2980
|
case "month" /* MONTH */:
|
|
3048
|
-
return /* @__PURE__ */
|
|
2981
|
+
return /* @__PURE__ */ React2__default.default.createElement(
|
|
3049
2982
|
DraggableMonthView_default,
|
|
3050
2983
|
{
|
|
3051
2984
|
events,
|
|
@@ -3064,7 +2997,7 @@ function CalendarPage({
|
|
|
3064
2997
|
case "day" /* DAY */:
|
|
3065
2998
|
return renderDayView();
|
|
3066
2999
|
default:
|
|
3067
|
-
return /* @__PURE__ */
|
|
3000
|
+
return /* @__PURE__ */ React2__default.default.createElement(
|
|
3068
3001
|
DraggableMonthView_default,
|
|
3069
3002
|
{
|
|
3070
3003
|
events,
|
|
@@ -3082,21 +3015,21 @@ function CalendarPage({
|
|
|
3082
3015
|
};
|
|
3083
3016
|
const renderWeekView = () => {
|
|
3084
3017
|
const weekDates = getWeekViewDates(currentDate);
|
|
3085
|
-
return /* @__PURE__ */
|
|
3018
|
+
return /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden mb-6" }, /* @__PURE__ */ React2__default.default.createElement("table", { className: "w-full table-fixed" }, /* @__PURE__ */ React2__default.default.createElement("thead", null, /* @__PURE__ */ React2__default.default.createElement("tr", { className: "bg-gray-50" }, weekDates.map((date, index) => {
|
|
3086
3019
|
const isWeekend2 = date.getDay() === 0 || date.getDay() === 6;
|
|
3087
|
-
return /* @__PURE__ */
|
|
3020
|
+
return /* @__PURE__ */ React2__default.default.createElement(
|
|
3088
3021
|
"th",
|
|
3089
3022
|
{
|
|
3090
3023
|
key: index,
|
|
3091
3024
|
className: `p-3 text-center border-b border-gray-200 ${index < 6 ? "border-r border-gray-200" : ""}`
|
|
3092
3025
|
},
|
|
3093
|
-
/* @__PURE__ */
|
|
3026
|
+
/* @__PURE__ */ React2__default.default.createElement("div", { className: `text-sm font-medium ${isWeekend2 ? "text-red-600" : "text-gray-700"}` }, getWeekdayName(date, "zh-CN", "short"))
|
|
3094
3027
|
);
|
|
3095
|
-
}))), /* @__PURE__ */
|
|
3028
|
+
}))), /* @__PURE__ */ React2__default.default.createElement("tbody", null, /* @__PURE__ */ React2__default.default.createElement("tr", null, weekDates.map((date, index) => {
|
|
3096
3029
|
const dayEvents = getEventsForDate(date);
|
|
3097
3030
|
const isTodayDate = isToday(date);
|
|
3098
3031
|
const isWeekend2 = date.getDay() === 0 || date.getDay() === 6;
|
|
3099
|
-
return /* @__PURE__ */
|
|
3032
|
+
return /* @__PURE__ */ React2__default.default.createElement(
|
|
3100
3033
|
"td",
|
|
3101
3034
|
{
|
|
3102
3035
|
key: index,
|
|
@@ -3108,7 +3041,7 @@ function CalendarPage({
|
|
|
3108
3041
|
${isTodayDate ? "bg-blue-50" : "bg-white"}
|
|
3109
3042
|
`
|
|
3110
3043
|
},
|
|
3111
|
-
/* @__PURE__ */
|
|
3044
|
+
/* @__PURE__ */ React2__default.default.createElement("div", { className: "flex flex-col h-full p-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex flex-col items-center mb-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: `flex items-center justify-center text-lg font-bold w-10 h-10 rounded-full ${isTodayDate ? "bg-blue-600 text-white shadow-md" : isWeekend2 ? "text-red-600 bg-red-50" : "text-gray-900 hover:bg-gray-100"} transition-colors` }, date.getDate()), (index === 0 || date.getDate() === 1) && /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500 mt-1 font-medium" }, date.getMonth() + 1, "\u6708")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-1 flex flex-col" }, dayEvents.length > 0 ? /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center mb-2" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: `inline-flex items-center justify-center w-6 h-6 text-xs font-bold rounded-full ${dayEvents.length > 5 ? "bg-red-100 text-red-700" : dayEvents.length > 2 ? "bg-yellow-100 text-yellow-700" : "bg-green-100 text-green-700"}` }, dayEvents.length)), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-1 overflow-hidden" }, dayEvents.slice(0, 4).map((event, eventIndex) => /* @__PURE__ */ React2__default.default.createElement(
|
|
3112
3045
|
"div",
|
|
3113
3046
|
{
|
|
3114
3047
|
key: eventIndex,
|
|
@@ -3122,21 +3055,21 @@ function CalendarPage({
|
|
|
3122
3055
|
title: event.title
|
|
3123
3056
|
},
|
|
3124
3057
|
event.title
|
|
3125
|
-
)), dayEvents.length > 4 && /* @__PURE__ */
|
|
3058
|
+
)), dayEvents.length > 4 && /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500 text-center py-1 bg-gray-100 rounded" }, "+", dayEvents.length - 4, " \u66F4\u591A"))) : /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-1 flex items-center justify-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "w-4 h-4 mx-auto mb-1 opacity-30" }, /* @__PURE__ */ React2__default.default.createElement("svg", { fill: "currentColor", viewBox: "0 0 20 20", className: "text-gray-400" }, /* @__PURE__ */ React2__default.default.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z", clipRule: "evenodd" }))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-400" }, "\u65E0\u4E8B\u4EF6")))))
|
|
3126
3059
|
);
|
|
3127
3060
|
})))));
|
|
3128
3061
|
};
|
|
3129
3062
|
const renderDayView = () => {
|
|
3130
3063
|
const dayEvents = getEventsForDate(currentDate);
|
|
3131
3064
|
const isTodayDate = isToday(currentDate);
|
|
3132
|
-
return /* @__PURE__ */
|
|
3065
|
+
return /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden mb-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-gray-50 p-4 border-b border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-sm text-gray-600 mb-1" }, currentDate.toLocaleDateString("zh-CN", { weekday: "long" })), /* @__PURE__ */ React2__default.default.createElement("div", { className: `text-2xl font-bold ${isTodayDate ? "text-blue-600" : "text-gray-900"}` }, currentDate.getDate(), "\u65E5"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-sm text-gray-600" }, currentDate.toLocaleDateString("zh-CN", { year: "numeric", month: "long" })))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "p-4" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
3133
3066
|
"button",
|
|
3134
3067
|
{
|
|
3135
3068
|
onClick: () => handleDateClick(currentDate),
|
|
3136
3069
|
className: "w-full mb-4 p-3 border-2 border-dashed border-gray-300 rounded-lg text-gray-600 hover:border-blue-300 hover:text-blue-600 transition-colors"
|
|
3137
3070
|
},
|
|
3138
3071
|
"+ \u5728\u6B64\u65E5\u671F\u521B\u5EFA\u4E8B\u4EF6"
|
|
3139
|
-
), dayEvents.length > 0 ? /* @__PURE__ */
|
|
3072
|
+
), dayEvents.length > 0 ? /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-sm font-semibold text-gray-700 mb-3" }, "\u4ECA\u65E5\u4E8B\u4EF6 (", dayEvents.length, ")"), dayEvents.map((event, eventIndex) => /* @__PURE__ */ React2__default.default.createElement(
|
|
3140
3073
|
"div",
|
|
3141
3074
|
{
|
|
3142
3075
|
key: eventIndex,
|
|
@@ -3148,11 +3081,11 @@ function CalendarPage({
|
|
|
3148
3081
|
${getEventColorClass(event.color)}
|
|
3149
3082
|
`
|
|
3150
3083
|
},
|
|
3151
|
-
/* @__PURE__ */
|
|
3152
|
-
event.isRealEvent && event.id && /* @__PURE__ */
|
|
3153
|
-
))) : /* @__PURE__ */
|
|
3084
|
+
/* @__PURE__ */ React2__default.default.createElement("div", { className: "font-medium text-sm mb-1" }, event.title),
|
|
3085
|
+
event.isRealEvent && event.id && /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-600" }, "\u70B9\u51FB\u7F16\u8F91\u4E8B\u4EF6")
|
|
3086
|
+
))) : /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center py-8 text-gray-500" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-12 h-12 mx-auto mb-3 text-gray-300", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" })), /* @__PURE__ */ React2__default.default.createElement("p", null, "\u4ECA\u65E5\u6682\u65E0\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-xs mt-1" }, "\u70B9\u51FB\u4E0A\u65B9\u6309\u94AE\u521B\u5EFA\u4E8B\u4EF6"))));
|
|
3154
3087
|
};
|
|
3155
|
-
const handleCreateEnhancedEvent =
|
|
3088
|
+
const handleCreateEnhancedEvent = React2.useCallback(async (eventData) => {
|
|
3156
3089
|
try {
|
|
3157
3090
|
const createdEvents = await createEnhancedEvent(eventData);
|
|
3158
3091
|
setIsEventModalOpen(false);
|
|
@@ -3168,42 +3101,42 @@ function CalendarPage({
|
|
|
3168
3101
|
alert("\u521B\u5EFA\u4E8B\u4EF6\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5");
|
|
3169
3102
|
}
|
|
3170
3103
|
}, [createEnhancedEvent]);
|
|
3171
|
-
return /* @__PURE__ */
|
|
3104
|
+
return /* @__PURE__ */ React2__default.default.createElement("div", { className: "min-h-screen bg-gray-50" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "max-w-7xl mx-auto p-4 lg:p-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex justify-between items-start mb-4" }, /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("h1", { className: "text-3xl font-bold text-gray-900 mb-2" }, "\u65E5\u5386\u7BA1\u7406"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-gray-600" }, "\u529F\u80FD\u5B8C\u6574\u7684\u65E5\u5386\u5E94\u7528\uFF0C\u652F\u6301\u4E8B\u4EF6\u7BA1\u7406\u3001\u63D0\u9192\u3001\u91CD\u590D\u4E8B\u4EF6\u7B49\u529F\u80FD")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-3" }, headerActions, !headerActions && !isAuthenticated && /* @__PURE__ */ React2__default.default.createElement(
|
|
3172
3105
|
"button",
|
|
3173
3106
|
{
|
|
3174
3107
|
onClick: onShowLogin,
|
|
3175
3108
|
className: "px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors"
|
|
3176
3109
|
},
|
|
3177
3110
|
"\u767B\u5F55"
|
|
3178
|
-
))), /* @__PURE__ */
|
|
3111
|
+
))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex space-x-1 bg-gray-100 p-1 rounded-lg w-fit" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
3179
3112
|
"button",
|
|
3180
3113
|
{
|
|
3181
3114
|
onClick: () => setActiveTab("calendar"),
|
|
3182
3115
|
className: `px-4 py-2 text-sm font-medium rounded-md transition-colors ${activeTab === "calendar" ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900"}`
|
|
3183
3116
|
},
|
|
3184
3117
|
"\u{1F4C5} \u65E5\u5386\u89C6\u56FE"
|
|
3185
|
-
), /* @__PURE__ */
|
|
3118
|
+
), /* @__PURE__ */ React2__default.default.createElement(
|
|
3186
3119
|
"button",
|
|
3187
3120
|
{
|
|
3188
3121
|
onClick: () => setActiveTab("events"),
|
|
3189
3122
|
className: `px-4 py-2 text-sm font-medium rounded-md transition-colors ${activeTab === "events" ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900"}`
|
|
3190
3123
|
},
|
|
3191
3124
|
"\u{1F4CB} \u4E8B\u4EF6\u5217\u8868"
|
|
3192
|
-
), /* @__PURE__ */
|
|
3125
|
+
), /* @__PURE__ */ React2__default.default.createElement(
|
|
3193
3126
|
"button",
|
|
3194
3127
|
{
|
|
3195
3128
|
onClick: () => setActiveTab("settings"),
|
|
3196
3129
|
className: `px-4 py-2 text-sm font-medium rounded-md transition-colors ${activeTab === "settings" ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900"}`
|
|
3197
3130
|
},
|
|
3198
3131
|
"\u2699\uFE0F \u8BBE\u7F6E"
|
|
3199
|
-
))), error && /* @__PURE__ */
|
|
3132
|
+
))), error && /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-red-50 border border-red-200 rounded-lg p-4 mb-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-start" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-shrink-0" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "h-5 w-5 text-red-400 mt-0.5", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React2__default.default.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z", clipRule: "evenodd" }))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "ml-3" }, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-sm font-medium text-red-800" }, "\u64CD\u4F5C\u5931\u8D25"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "mt-1 text-sm text-red-700" }, error), /* @__PURE__ */ React2__default.default.createElement(
|
|
3200
3133
|
"button",
|
|
3201
3134
|
{
|
|
3202
3135
|
onClick: clearError,
|
|
3203
3136
|
className: "mt-2 text-sm text-red-600 hover:text-red-800 font-medium"
|
|
3204
3137
|
},
|
|
3205
3138
|
"\u5173\u95ED"
|
|
3206
|
-
)))), activeTab === "calendar" && /* @__PURE__ */
|
|
3139
|
+
)))), activeTab === "calendar" && /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-blue-50 border border-blue-200 rounded-lg p-4 mb-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-start" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-shrink-0" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "h-5 w-5 text-blue-400 mt-0.5", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React2__default.default.createElement("path", { fillRule: "evenodd", d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z", clipRule: "evenodd" }))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "ml-3" }, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-sm font-medium text-blue-800" }, "\u529F\u80FD\u8BF4\u660E"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "mt-1 text-sm text-blue-700" }, "\u70B9\u51FB\u65E5\u5386\u4E0A\u7684\u4EFB\u610F\u65E5\u671F\u53EF\u4EE5\u521B\u5EFA\u65B0\u4E8B\u4EF6\u3002\u5F53\u524D\u5DF2\u652F\u6301\u5B8C\u6574\u7684\u4E8B\u4EF6\u7BA1\u7406\u529F\u80FD\uFF0C\u5305\u62EC\u521B\u5EFA\u3001\u7F16\u8F91\u3001\u5220\u9664\u7B49\u64CD\u4F5C\u3002", !isAuthenticated && /* @__PURE__ */ React2__default.default.createElement("span", { className: "block mt-2 text-orange-700 font-medium" }, "\u{1F4A1} \u63D0\u793A\uFF1A\u8BF7\u5148\u767B\u5F55\u4EE5\u4F7F\u7528\u5B8C\u6574\u7684\u4E8B\u4EF6\u7BA1\u7406\u529F\u80FD"))))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-4 mb-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React2__default.default.createElement("button", { onClick: goToPrevious, className: "p-2 hover:bg-gray-100 rounded-lg transition-colors" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-5 h-5 text-gray-600", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }))), /* @__PURE__ */ React2__default.default.createElement("h2", { className: "text-xl font-semibold text-gray-900 min-w-[160px] text-center" }, getViewTitle()), /* @__PURE__ */ React2__default.default.createElement("button", { onClick: goToNext, className: "p-2 hover:bg-gray-100 rounded-lg transition-colors" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-5 h-5 text-gray-600", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" })))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React2__default.default.createElement("button", { onClick: goToToday, className: "px-4 py-2 text-sm font-medium text-blue-600 bg-blue-50 hover:bg-blue-100 rounded-lg transition-colors" }, "\u4ECA\u5929"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center bg-gray-100 rounded-lg p-1" }, ["month", "week", "day"].map((view) => /* @__PURE__ */ React2__default.default.createElement(
|
|
3207
3140
|
"button",
|
|
3208
3141
|
{
|
|
3209
3142
|
key: view,
|
|
@@ -3211,7 +3144,7 @@ function CalendarPage({
|
|
|
3211
3144
|
className: `px-3 py-1.5 text-sm font-medium rounded-md transition-colors ${viewType === CalendarViewType[view.toUpperCase()] ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900"}`
|
|
3212
3145
|
},
|
|
3213
3146
|
view === "month" ? "\u6708" : view === "week" ? "\u5468" : "\u65E5"
|
|
3214
|
-
)))))), renderCalendarView(), /* @__PURE__ */
|
|
3147
|
+
)))))), renderCalendarView(), /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 mb-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center mb-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-blue-100 p-3 rounded-lg" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-6 h-6 text-blue-600", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" }))), /* @__PURE__ */ React2__default.default.createElement("h3", { className: "ml-3 text-lg font-semibold text-gray-900" }, "\u4E8B\u4EF6\u7BA1\u7406")), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-gray-600 text-sm mb-4" }, "\u521B\u5EFA\u3001\u7F16\u8F91\u3001\u5220\u9664\u65E5\u5386\u4E8B\u4EF6\uFF0C\u652F\u6301\u62D6\u62FD\u8C03\u6574\u65F6\u95F4\uFF0C\u591A\u79CD\u989C\u8272\u6807\u8BC6\u3002")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center mb-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-green-100 p-3 rounded-lg" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-6 h-6 text-green-600", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" }))), /* @__PURE__ */ React2__default.default.createElement("h3", { className: "ml-3 text-lg font-semibold text-gray-900" }, "\u91CD\u590D\u4E8B\u4EF6")), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-gray-600 text-sm mb-4" }, "\u652F\u6301\u65E5\u3001\u5468\u3001\u6708\u3001\u5E74\u91CD\u590D\u6A21\u5F0F\uFF0C\u7075\u6D3B\u7684\u91CD\u590D\u89C4\u5219\u914D\u7F6E\u3002")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center mb-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-purple-100 p-3 rounded-lg" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-6 h-6 text-purple-600", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 17h5l-5 5v-5zM4 7a2 2 0 012-2h6l2 2h6a2 2 0 012 2v6a2 2 0 01-2 2H6a2 2 0 01-2-2V7z" }))), /* @__PURE__ */ React2__default.default.createElement("h3", { className: "ml-3 text-lg font-semibold text-gray-900" }, "\u667A\u80FD\u63D0\u9192")), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-gray-600 text-sm mb-4" }, "\u90AE\u4EF6\u3001\u901A\u77E5\u3001\u77ED\u4FE1\u591A\u79CD\u63D0\u9192\u65B9\u5F0F\uFF0C\u81EA\u5B9A\u4E49\u63D0\u9192\u65F6\u95F4\u3002"))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-6" }, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-semibold text-gray-900 mb-4" }, "\u6280\u672F\u7279\u6027"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center text-sm text-gray-600" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4 text-green-500 mr-3 flex-shrink-0", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React2__default.default.createElement("path", { fillRule: "evenodd", d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z", clipRule: "evenodd" })), "\u5B8C\u6574\u7684TypeScript\u7C7B\u578B\u5B9A\u4E49"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center text-sm text-gray-600" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4 text-green-500 mr-3 flex-shrink-0", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React2__default.default.createElement("path", { fillRule: "evenodd", d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z", clipRule: "evenodd" })), "\u54CD\u5E94\u5F0F\u8BBE\u8BA1 (TailwindCSS)")))), activeTab === "events" && /* @__PURE__ */ React2__default.default.createElement(
|
|
3215
3148
|
EventList,
|
|
3216
3149
|
{
|
|
3217
3150
|
events,
|
|
@@ -3224,12 +3157,12 @@ function CalendarPage({
|
|
|
3224
3157
|
enableBatchActions: true,
|
|
3225
3158
|
loading
|
|
3226
3159
|
}
|
|
3227
|
-
), activeTab === "settings" && /* @__PURE__ */
|
|
3160
|
+
), activeTab === "settings" && /* @__PURE__ */ React2__default.default.createElement(
|
|
3228
3161
|
CalendarSettings,
|
|
3229
3162
|
{
|
|
3230
3163
|
onSettingsChange: handleSettingsChange
|
|
3231
3164
|
}
|
|
3232
|
-
)), /* @__PURE__ */
|
|
3165
|
+
)), /* @__PURE__ */ React2__default.default.createElement(
|
|
3233
3166
|
ImprovedEventModal_default,
|
|
3234
3167
|
{
|
|
3235
3168
|
isOpen: isEventModalOpen,
|
|
@@ -3249,7 +3182,7 @@ var EventModal = ({
|
|
|
3249
3182
|
event,
|
|
3250
3183
|
initialDate
|
|
3251
3184
|
}) => {
|
|
3252
|
-
const [formData, setFormData] =
|
|
3185
|
+
const [formData, setFormData] = React2.useState({
|
|
3253
3186
|
title: "",
|
|
3254
3187
|
description: "",
|
|
3255
3188
|
startTime: "",
|
|
@@ -3272,11 +3205,11 @@ var EventModal = ({
|
|
|
3272
3205
|
reminderType: "notification",
|
|
3273
3206
|
reminderMinutes: void 0
|
|
3274
3207
|
});
|
|
3275
|
-
const [isLoading, setIsLoading] =
|
|
3276
|
-
const [errors, setErrors] =
|
|
3277
|
-
const [showDeleteConfirm, setShowDeleteConfirm] =
|
|
3208
|
+
const [isLoading, setIsLoading] = React2.useState(false);
|
|
3209
|
+
const [errors, setErrors] = React2.useState({});
|
|
3210
|
+
const [showDeleteConfirm, setShowDeleteConfirm] = React2.useState(false);
|
|
3278
3211
|
const isEditMode = !!event;
|
|
3279
|
-
|
|
3212
|
+
React2.useEffect(() => {
|
|
3280
3213
|
if (event) {
|
|
3281
3214
|
const startDate = new Date(event.startTime);
|
|
3282
3215
|
const endDate = new Date(event.endTime);
|
|
@@ -3420,8 +3353,8 @@ var EventModal = ({
|
|
|
3420
3353
|
resetForm();
|
|
3421
3354
|
onClose();
|
|
3422
3355
|
};
|
|
3423
|
-
return /* @__PURE__ */
|
|
3424
|
-
Modal,
|
|
3356
|
+
return /* @__PURE__ */ React2__default.default.createElement(
|
|
3357
|
+
chunkZDRBMSTS_js.Modal,
|
|
3425
3358
|
{
|
|
3426
3359
|
isOpen,
|
|
3427
3360
|
onClose: handleClose,
|
|
@@ -3429,7 +3362,7 @@ var EventModal = ({
|
|
|
3429
3362
|
width: 600,
|
|
3430
3363
|
maskClosable: false
|
|
3431
3364
|
},
|
|
3432
|
-
/* @__PURE__ */
|
|
3365
|
+
/* @__PURE__ */ React2__default.default.createElement("form", { onSubmit: handleSubmit, className: "space-y-4" }, /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "title", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u4E8B\u4EF6\u6807\u9898 *"), /* @__PURE__ */ React2__default.default.createElement(
|
|
3433
3366
|
"input",
|
|
3434
3367
|
{
|
|
3435
3368
|
type: "text",
|
|
@@ -3439,7 +3372,7 @@ var EventModal = ({
|
|
|
3439
3372
|
className: `w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none ${errors.title ? "border-red-500" : "border-gray-300"}`,
|
|
3440
3373
|
placeholder: "\u8F93\u5165\u4E8B\u4EF6\u6807\u9898"
|
|
3441
3374
|
}
|
|
3442
|
-
), errors.title && /* @__PURE__ */
|
|
3375
|
+
), errors.title && /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-red-500 text-sm mt-1" }, errors.title)), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
3443
3376
|
"input",
|
|
3444
3377
|
{
|
|
3445
3378
|
type: "checkbox",
|
|
@@ -3448,7 +3381,7 @@ var EventModal = ({
|
|
|
3448
3381
|
onChange: (e) => handleInputChange("isAllDay", e.target.checked),
|
|
3449
3382
|
className: "h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded"
|
|
3450
3383
|
}
|
|
3451
|
-
), /* @__PURE__ */
|
|
3384
|
+
), /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "isAllDay", className: "ml-2 text-sm text-gray-700" }, "\u5168\u5929\u4E8B\u4EF6")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "startTime", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u5F00\u59CB\u65F6\u95F4 *"), /* @__PURE__ */ React2__default.default.createElement(
|
|
3452
3385
|
"input",
|
|
3453
3386
|
{
|
|
3454
3387
|
type: formData.isAllDay ? "date" : "datetime-local",
|
|
@@ -3460,7 +3393,7 @@ var EventModal = ({
|
|
|
3460
3393
|
},
|
|
3461
3394
|
className: `w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none ${errors.startTime ? "border-red-500" : "border-gray-300"}`
|
|
3462
3395
|
}
|
|
3463
|
-
), errors.startTime && /* @__PURE__ */
|
|
3396
|
+
), errors.startTime && /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-red-500 text-sm mt-1" }, errors.startTime)), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "endTime", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u7ED3\u675F\u65F6\u95F4 *"), /* @__PURE__ */ React2__default.default.createElement(
|
|
3464
3397
|
"input",
|
|
3465
3398
|
{
|
|
3466
3399
|
type: formData.isAllDay ? "date" : "datetime-local",
|
|
@@ -3472,7 +3405,7 @@ var EventModal = ({
|
|
|
3472
3405
|
},
|
|
3473
3406
|
className: `w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none ${errors.endTime ? "border-red-500" : "border-gray-300"}`
|
|
3474
3407
|
}
|
|
3475
|
-
), errors.endTime && /* @__PURE__ */
|
|
3408
|
+
), errors.endTime && /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-red-500 text-sm mt-1" }, errors.endTime))), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "location", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u4F4D\u7F6E"), /* @__PURE__ */ React2__default.default.createElement(
|
|
3476
3409
|
"input",
|
|
3477
3410
|
{
|
|
3478
3411
|
type: "text",
|
|
@@ -3482,7 +3415,7 @@ var EventModal = ({
|
|
|
3482
3415
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none",
|
|
3483
3416
|
placeholder: "\u8F93\u5165\u4E8B\u4EF6\u4F4D\u7F6E"
|
|
3484
3417
|
}
|
|
3485
|
-
)), /* @__PURE__ */
|
|
3418
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "description", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u63CF\u8FF0"), /* @__PURE__ */ React2__default.default.createElement(
|
|
3486
3419
|
"textarea",
|
|
3487
3420
|
{
|
|
3488
3421
|
id: "description",
|
|
@@ -3492,7 +3425,7 @@ var EventModal = ({
|
|
|
3492
3425
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none resize-none",
|
|
3493
3426
|
placeholder: "\u8F93\u5165\u4E8B\u4EF6\u63CF\u8FF0"
|
|
3494
3427
|
}
|
|
3495
|
-
)), /* @__PURE__ */
|
|
3428
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "priority", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u4F18\u5148\u7EA7"), /* @__PURE__ */ React2__default.default.createElement(
|
|
3496
3429
|
"select",
|
|
3497
3430
|
{
|
|
3498
3431
|
id: "priority",
|
|
@@ -3500,11 +3433,11 @@ var EventModal = ({
|
|
|
3500
3433
|
onChange: (e) => handleInputChange("priority", e.target.value),
|
|
3501
3434
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none"
|
|
3502
3435
|
},
|
|
3503
|
-
/* @__PURE__ */
|
|
3504
|
-
/* @__PURE__ */
|
|
3505
|
-
/* @__PURE__ */
|
|
3506
|
-
/* @__PURE__ */
|
|
3507
|
-
)), /* @__PURE__ */
|
|
3436
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "low" /* LOW */ }, "\u4F4E"),
|
|
3437
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "normal" /* NORMAL */ }, "\u666E\u901A"),
|
|
3438
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "high" /* HIGH */ }, "\u9AD8"),
|
|
3439
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "urgent" /* URGENT */ }, "\u7D27\u6025")
|
|
3440
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "color", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u989C\u8272\u6807\u7B7E"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
3508
3441
|
"input",
|
|
3509
3442
|
{
|
|
3510
3443
|
type: "color",
|
|
@@ -3513,7 +3446,7 @@ var EventModal = ({
|
|
|
3513
3446
|
onChange: (e) => handleInputChange("color", e.target.value),
|
|
3514
3447
|
className: "w-12 h-10 border border-gray-300 rounded cursor-pointer"
|
|
3515
3448
|
}
|
|
3516
|
-
), /* @__PURE__ */
|
|
3449
|
+
), /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-sm text-gray-600" }, formData.color))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "border-t border-gray-200 pt-4" }, /* @__PURE__ */ React2__default.default.createElement("h4", { className: "text-sm font-medium text-gray-700 mb-3" }, "\u{1F504} \u91CD\u590D\u8BBE\u7F6E"), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "recurrenceType", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u91CD\u590D\u9891\u7387"), /* @__PURE__ */ React2__default.default.createElement(
|
|
3517
3450
|
"select",
|
|
3518
3451
|
{
|
|
3519
3452
|
id: "recurrenceType",
|
|
@@ -3524,12 +3457,12 @@ var EventModal = ({
|
|
|
3524
3457
|
},
|
|
3525
3458
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none"
|
|
3526
3459
|
},
|
|
3527
|
-
/* @__PURE__ */
|
|
3528
|
-
/* @__PURE__ */
|
|
3529
|
-
/* @__PURE__ */
|
|
3530
|
-
/* @__PURE__ */
|
|
3531
|
-
/* @__PURE__ */
|
|
3532
|
-
)), formData.recurrenceType && /* @__PURE__ */
|
|
3460
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "none" }, "\u4E0D\u91CD\u590D"),
|
|
3461
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "daily" }, "\u6BCF\u5929"),
|
|
3462
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "weekly" }, "\u6BCF\u5468"),
|
|
3463
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "monthly" }, "\u6BCF\u6708"),
|
|
3464
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "yearly" }, "\u6BCF\u5E74")
|
|
3465
|
+
)), formData.recurrenceType && /* @__PURE__ */ React2__default.default.createElement("div", { className: "mt-3" }, /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "recurrenceInterval", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u91CD\u590D\u95F4\u9694"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-sm text-gray-600" }, "\u6BCF"), /* @__PURE__ */ React2__default.default.createElement(
|
|
3533
3466
|
"input",
|
|
3534
3467
|
{
|
|
3535
3468
|
type: "number",
|
|
@@ -3540,7 +3473,7 @@ var EventModal = ({
|
|
|
3540
3473
|
onChange: (e) => handleInputChange("recurrenceInterval", parseInt(e.target.value) || 1),
|
|
3541
3474
|
className: "w-20 px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none text-center"
|
|
3542
3475
|
}
|
|
3543
|
-
), /* @__PURE__ */
|
|
3476
|
+
), /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-sm text-gray-600" }, formData.recurrenceType === "daily" && "\u5929", formData.recurrenceType === "weekly" && "\u5468", formData.recurrenceType === "monthly" && "\u6708", formData.recurrenceType === "yearly" && "\u5E74"))), formData.recurrenceType && /* @__PURE__ */ React2__default.default.createElement("div", { className: "mt-3" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u91CD\u590D\u7ED3\u675F"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
3544
3477
|
"input",
|
|
3545
3478
|
{
|
|
3546
3479
|
type: "radio",
|
|
@@ -3552,7 +3485,7 @@ var EventModal = ({
|
|
|
3552
3485
|
},
|
|
3553
3486
|
className: "h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300"
|
|
3554
3487
|
}
|
|
3555
|
-
), /* @__PURE__ */
|
|
3488
|
+
), /* @__PURE__ */ React2__default.default.createElement("span", { className: "ml-2 text-sm text-gray-700" }, "\u6C38\u4E0D\u7ED3\u675F")), /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
3556
3489
|
"input",
|
|
3557
3490
|
{
|
|
3558
3491
|
type: "radio",
|
|
@@ -3566,7 +3499,7 @@ var EventModal = ({
|
|
|
3566
3499
|
},
|
|
3567
3500
|
className: "h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300"
|
|
3568
3501
|
}
|
|
3569
|
-
), /* @__PURE__ */
|
|
3502
|
+
), /* @__PURE__ */ React2__default.default.createElement("span", { className: "ml-2 text-sm text-gray-700" }, "\u7ED3\u675F\u4E8E:"), /* @__PURE__ */ React2__default.default.createElement(
|
|
3570
3503
|
"input",
|
|
3571
3504
|
{
|
|
3572
3505
|
type: "date",
|
|
@@ -3578,7 +3511,7 @@ var EventModal = ({
|
|
|
3578
3511
|
className: "ml-2 px-2 py-1 border border-gray-300 rounded text-sm focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none",
|
|
3579
3512
|
disabled: !formData.recurrenceEndDate
|
|
3580
3513
|
}
|
|
3581
|
-
)), /* @__PURE__ */
|
|
3514
|
+
)), /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
3582
3515
|
"input",
|
|
3583
3516
|
{
|
|
3584
3517
|
type: "radio",
|
|
@@ -3590,7 +3523,7 @@ var EventModal = ({
|
|
|
3590
3523
|
},
|
|
3591
3524
|
className: "h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300"
|
|
3592
3525
|
}
|
|
3593
|
-
), /* @__PURE__ */
|
|
3526
|
+
), /* @__PURE__ */ React2__default.default.createElement("span", { className: "ml-2 text-sm text-gray-700" }, "\u91CD\u590D"), /* @__PURE__ */ React2__default.default.createElement(
|
|
3594
3527
|
"input",
|
|
3595
3528
|
{
|
|
3596
3529
|
type: "number",
|
|
@@ -3607,7 +3540,7 @@ var EventModal = ({
|
|
|
3607
3540
|
className: "ml-2 w-16 px-2 py-1 border border-gray-300 rounded text-sm text-center focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none",
|
|
3608
3541
|
disabled: !formData.recurrenceCount || formData.recurrenceCount === 0
|
|
3609
3542
|
}
|
|
3610
|
-
), /* @__PURE__ */
|
|
3543
|
+
), /* @__PURE__ */ React2__default.default.createElement("span", { className: "ml-2 text-sm text-gray-700" }, "\u6B21"))))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "border-t border-gray-200 pt-4" }, /* @__PURE__ */ React2__default.default.createElement("h4", { className: "text-sm font-medium text-gray-700 mb-3" }, "\u{1F514} \u63D0\u9192\u8BBE\u7F6E"), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u63D0\u9192\u65F6\u95F4"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
3611
3544
|
"input",
|
|
3612
3545
|
{
|
|
3613
3546
|
type: "checkbox",
|
|
@@ -3621,7 +3554,7 @@ var EventModal = ({
|
|
|
3621
3554
|
},
|
|
3622
3555
|
className: "h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded"
|
|
3623
3556
|
}
|
|
3624
|
-
), /* @__PURE__ */
|
|
3557
|
+
), /* @__PURE__ */ React2__default.default.createElement("span", { className: "ml-2 text-sm text-gray-700" }, "\u4E8B\u4EF6\u5F00\u59CB\u65F6")), /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
3625
3558
|
"input",
|
|
3626
3559
|
{
|
|
3627
3560
|
type: "checkbox",
|
|
@@ -3635,7 +3568,7 @@ var EventModal = ({
|
|
|
3635
3568
|
},
|
|
3636
3569
|
className: "h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded"
|
|
3637
3570
|
}
|
|
3638
|
-
), /* @__PURE__ */
|
|
3571
|
+
), /* @__PURE__ */ React2__default.default.createElement("span", { className: "ml-2 text-sm text-gray-700" }, "\u63D0\u524D15\u5206\u949F")), /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
3639
3572
|
"input",
|
|
3640
3573
|
{
|
|
3641
3574
|
type: "checkbox",
|
|
@@ -3649,7 +3582,7 @@ var EventModal = ({
|
|
|
3649
3582
|
},
|
|
3650
3583
|
className: "h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded"
|
|
3651
3584
|
}
|
|
3652
|
-
), /* @__PURE__ */
|
|
3585
|
+
), /* @__PURE__ */ React2__default.default.createElement("span", { className: "ml-2 text-sm text-gray-700" }, "\u63D0\u524D30\u5206\u949F")), /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
3653
3586
|
"input",
|
|
3654
3587
|
{
|
|
3655
3588
|
type: "checkbox",
|
|
@@ -3663,7 +3596,7 @@ var EventModal = ({
|
|
|
3663
3596
|
},
|
|
3664
3597
|
className: "h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded"
|
|
3665
3598
|
}
|
|
3666
|
-
), /* @__PURE__ */
|
|
3599
|
+
), /* @__PURE__ */ React2__default.default.createElement("span", { className: "ml-2 text-sm text-gray-700" }, "\u63D0\u524D1\u5C0F\u65F6")), /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
3667
3600
|
"input",
|
|
3668
3601
|
{
|
|
3669
3602
|
type: "checkbox",
|
|
@@ -3677,7 +3610,7 @@ var EventModal = ({
|
|
|
3677
3610
|
},
|
|
3678
3611
|
className: "h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded"
|
|
3679
3612
|
}
|
|
3680
|
-
), /* @__PURE__ */
|
|
3613
|
+
), /* @__PURE__ */ React2__default.default.createElement("span", { className: "ml-2 text-sm text-gray-700" }, "\u63D0\u524D1\u5929"))))), errors.submit && /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-red-50 border border-red-200 rounded-lg p-3" }, /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-red-600 text-sm" }, errors.submit)), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex justify-between pt-4 border-t border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("div", null, isEditMode && onDelete && /* @__PURE__ */ React2__default.default.createElement(
|
|
3681
3614
|
"button",
|
|
3682
3615
|
{
|
|
3683
3616
|
type: "button",
|
|
@@ -3686,7 +3619,7 @@ var EventModal = ({
|
|
|
3686
3619
|
disabled: isLoading
|
|
3687
3620
|
},
|
|
3688
3621
|
"\u5220\u9664\u4E8B\u4EF6"
|
|
3689
|
-
)), /* @__PURE__ */
|
|
3622
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex space-x-3" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
3690
3623
|
"button",
|
|
3691
3624
|
{
|
|
3692
3625
|
type: "button",
|
|
@@ -3695,7 +3628,7 @@ var EventModal = ({
|
|
|
3695
3628
|
disabled: isLoading
|
|
3696
3629
|
},
|
|
3697
3630
|
"\u53D6\u6D88"
|
|
3698
|
-
), /* @__PURE__ */
|
|
3631
|
+
), /* @__PURE__ */ React2__default.default.createElement(
|
|
3699
3632
|
"button",
|
|
3700
3633
|
{
|
|
3701
3634
|
type: "submit",
|
|
@@ -3704,8 +3637,8 @@ var EventModal = ({
|
|
|
3704
3637
|
},
|
|
3705
3638
|
isLoading ? "\u4FDD\u5B58\u4E2D..." : isEditMode ? "\u66F4\u65B0\u4E8B\u4EF6" : "\u521B\u5EFA\u4E8B\u4EF6"
|
|
3706
3639
|
)))),
|
|
3707
|
-
/* @__PURE__ */
|
|
3708
|
-
ConfirmModal,
|
|
3640
|
+
/* @__PURE__ */ React2__default.default.createElement(
|
|
3641
|
+
chunkZDRBMSTS_js.ConfirmModal,
|
|
3709
3642
|
{
|
|
3710
3643
|
isOpen: showDeleteConfirm,
|
|
3711
3644
|
onClose: () => setShowDeleteConfirm(false),
|
|
@@ -3728,13 +3661,13 @@ var EventDetailPage = ({
|
|
|
3728
3661
|
onEdit,
|
|
3729
3662
|
onDelete
|
|
3730
3663
|
}) => {
|
|
3731
|
-
const [event, setEvent] =
|
|
3732
|
-
const [isLoading, setIsLoading] =
|
|
3733
|
-
const [isEditModalOpen, setIsEditModalOpen] =
|
|
3734
|
-
const [showDeleteConfirm, setShowDeleteConfirm] =
|
|
3735
|
-
const [isDeleting, setIsDeleting] =
|
|
3664
|
+
const [event, setEvent] = React2.useState(null);
|
|
3665
|
+
const [isLoading, setIsLoading] = React2.useState(true);
|
|
3666
|
+
const [isEditModalOpen, setIsEditModalOpen] = React2.useState(false);
|
|
3667
|
+
const [showDeleteConfirm, setShowDeleteConfirm] = React2.useState(false);
|
|
3668
|
+
const [isDeleting, setIsDeleting] = React2.useState(false);
|
|
3736
3669
|
const { events, updateEvent, deleteEvent } = useEvents2();
|
|
3737
|
-
|
|
3670
|
+
React2.useEffect(() => {
|
|
3738
3671
|
const foundEvent = events.find((e) => e.id === eventId);
|
|
3739
3672
|
if (foundEvent) {
|
|
3740
3673
|
setEvent(foundEvent);
|
|
@@ -3797,10 +3730,10 @@ var EventDetailPage = ({
|
|
|
3797
3730
|
}
|
|
3798
3731
|
};
|
|
3799
3732
|
if (isLoading) {
|
|
3800
|
-
return /* @__PURE__ */
|
|
3733
|
+
return /* @__PURE__ */ React2__default.default.createElement("div", { className: "min-h-screen bg-gray-50 flex items-center justify-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto" }), /* @__PURE__ */ React2__default.default.createElement("p", { className: "mt-4 text-gray-600" }, "\u52A0\u8F7D\u4E8B\u4EF6\u8BE6\u60C5...")));
|
|
3801
3734
|
}
|
|
3802
3735
|
if (!event) {
|
|
3803
|
-
return /* @__PURE__ */
|
|
3736
|
+
return /* @__PURE__ */ React2__default.default.createElement("div", { className: "min-h-screen bg-gray-50 flex items-center justify-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-gray-600" }, "\u4E8B\u4EF6\u4E0D\u5B58\u5728"), onBack && /* @__PURE__ */ React2__default.default.createElement(
|
|
3804
3737
|
"button",
|
|
3805
3738
|
{
|
|
3806
3739
|
onClick: onBack,
|
|
@@ -3809,40 +3742,40 @@ var EventDetailPage = ({
|
|
|
3809
3742
|
"\u8FD4\u56DE"
|
|
3810
3743
|
)));
|
|
3811
3744
|
}
|
|
3812
|
-
return /* @__PURE__ */
|
|
3745
|
+
return /* @__PURE__ */ React2__default.default.createElement("div", { className: "min-h-screen bg-gray-50" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "max-w-4xl mx-auto px-4 py-8" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "mb-8" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-4" }, onBack && /* @__PURE__ */ React2__default.default.createElement(
|
|
3813
3746
|
"button",
|
|
3814
3747
|
{
|
|
3815
3748
|
onClick: onBack,
|
|
3816
3749
|
className: "p-2 hover:bg-gray-100 rounded-md"
|
|
3817
3750
|
},
|
|
3818
|
-
/* @__PURE__ */
|
|
3819
|
-
), /* @__PURE__ */
|
|
3751
|
+
/* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }))
|
|
3752
|
+
), /* @__PURE__ */ React2__default.default.createElement("h1", { className: "text-3xl font-bold text-gray-900" }, "\u4E8B\u4EF6\u8BE6\u60C5")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex space-x-3" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
3820
3753
|
"button",
|
|
3821
3754
|
{
|
|
3822
3755
|
onClick: () => setIsEditModalOpen(true),
|
|
3823
3756
|
className: "px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700"
|
|
3824
3757
|
},
|
|
3825
3758
|
"\u7F16\u8F91"
|
|
3826
|
-
), /* @__PURE__ */
|
|
3759
|
+
), /* @__PURE__ */ React2__default.default.createElement(
|
|
3827
3760
|
"button",
|
|
3828
3761
|
{
|
|
3829
3762
|
onClick: () => setShowDeleteConfirm(true),
|
|
3830
3763
|
className: "px-4 py-2 bg-red-600 text-white rounded-md hover:bg-red-700"
|
|
3831
3764
|
},
|
|
3832
3765
|
"\u5220\u9664"
|
|
3833
|
-
)))), /* @__PURE__ */
|
|
3766
|
+
)))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-md overflow-hidden" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "px-6 py-4 border-b border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React2__default.default.createElement("h2", { className: "text-2xl font-semibold text-gray-900" }, event.title), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
3834
3767
|
"span",
|
|
3835
3768
|
{
|
|
3836
3769
|
className: `px-2 py-1 text-xs font-medium rounded-full ${getPriorityColor(event.priority || "normal")}`
|
|
3837
3770
|
},
|
|
3838
3771
|
getPriorityText(event.priority || "normal")
|
|
3839
|
-
), /* @__PURE__ */
|
|
3772
|
+
), /* @__PURE__ */ React2__default.default.createElement(
|
|
3840
3773
|
"div",
|
|
3841
3774
|
{
|
|
3842
3775
|
className: "w-4 h-4 rounded-full",
|
|
3843
3776
|
style: { backgroundColor: event.color }
|
|
3844
3777
|
}
|
|
3845
|
-
)))), /* @__PURE__ */
|
|
3778
|
+
)))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "px-6 py-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-medium text-gray-900" }, "\u65F6\u95F4\u4FE1\u606F"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-5 h-5 text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" })), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-gray-600" }, "\u5F00\u59CB\u65F6\u95F4"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "font-medium" }, formatDate(new Date(event.startTime)), " ", formatTime(new Date(event.startTime))))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-5 h-5 text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" })), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-gray-600" }, "\u7ED3\u675F\u65F6\u95F4"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "font-medium" }, formatDate(new Date(event.endTime)), " ", formatTime(new Date(event.endTime))))), event.allDay && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-5 h-5 text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z" })), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-gray-600" }, "\u5168\u5929\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "font-medium text-blue-600" }, "\u662F"))))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-medium text-gray-900" }, "\u57FA\u672C\u4FE1\u606F"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-3" }, event.location && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-5 h-5 text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z" }), /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 11a3 3 0 11-6 0 3 3 0 016 0z" })), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-gray-600" }, "\u5730\u70B9"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "font-medium" }, event.location))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-5 h-5 text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M7 4V2a1 1 0 011-1h8a1 1 0 011 1v2M7 4a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V6a2 2 0 00-2-2M7 4h10M7 8h10M7 12h10" })), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-gray-600" }, "\u521B\u5EFA\u65F6\u95F4"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "font-medium" }, formatDate(new Date(event.createdAt)), " ", formatTime(new Date(event.createdAt))))), event.updatedAt && event.updatedAt !== event.createdAt && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-5 h-5 text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z" })), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-gray-600" }, "\u6700\u540E\u4FEE\u6539"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "font-medium" }, formatDate(new Date(event.updatedAt)), " ", formatTime(new Date(event.updatedAt)))))))), event.description && /* @__PURE__ */ React2__default.default.createElement("div", { className: "mt-6 pt-6 border-t border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-medium text-gray-900 mb-3" }, "\u63CF\u8FF0"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "prose max-w-none" }, /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-gray-700 whitespace-pre-wrap" }, event.description)))))), /* @__PURE__ */ React2__default.default.createElement(
|
|
3846
3779
|
EventModal_default,
|
|
3847
3780
|
{
|
|
3848
3781
|
isOpen: isEditModalOpen,
|
|
@@ -3850,8 +3783,8 @@ var EventDetailPage = ({
|
|
|
3850
3783
|
onSave: handleEditSave,
|
|
3851
3784
|
event
|
|
3852
3785
|
}
|
|
3853
|
-
), /* @__PURE__ */
|
|
3854
|
-
ConfirmModal,
|
|
3786
|
+
), /* @__PURE__ */ React2__default.default.createElement(
|
|
3787
|
+
chunkZDRBMSTS_js.ConfirmModal,
|
|
3855
3788
|
{
|
|
3856
3789
|
isOpen: showDeleteConfirm,
|
|
3857
3790
|
onClose: () => setShowDeleteConfirm(false),
|
|
@@ -3872,7 +3805,7 @@ function EventForm({
|
|
|
3872
3805
|
onCancel,
|
|
3873
3806
|
loading = false
|
|
3874
3807
|
}) {
|
|
3875
|
-
const [formData, setFormData] =
|
|
3808
|
+
const [formData, setFormData] = React2.useState({
|
|
3876
3809
|
title: "",
|
|
3877
3810
|
description: "",
|
|
3878
3811
|
startTime: /* @__PURE__ */ new Date(),
|
|
@@ -3885,8 +3818,8 @@ function EventForm({
|
|
|
3885
3818
|
recurrence: void 0,
|
|
3886
3819
|
reminders: []
|
|
3887
3820
|
});
|
|
3888
|
-
const [errors, setErrors] =
|
|
3889
|
-
|
|
3821
|
+
const [errors, setErrors] = React2.useState({});
|
|
3822
|
+
React2.useEffect(() => {
|
|
3890
3823
|
if (initialData) {
|
|
3891
3824
|
setFormData((prev) => ({
|
|
3892
3825
|
...prev,
|
|
@@ -3947,14 +3880,14 @@ function EventForm({
|
|
|
3947
3880
|
{ value: "#6366F1" /* INDIGO */, label: "\u975B\u84DD", class: "bg-indigo-500" },
|
|
3948
3881
|
{ value: "#6B7280" /* GRAY */, label: "\u7070\u8272", class: "bg-gray-500" }
|
|
3949
3882
|
];
|
|
3950
|
-
return /* @__PURE__ */
|
|
3883
|
+
return /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-lg p-6 max-w-2xl mx-auto" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between mb-6" }, /* @__PURE__ */ React2__default.default.createElement("h2", { className: "text-xl font-semibold text-gray-900" }, isEdit ? "\u7F16\u8F91\u4E8B\u4EF6" : "\u521B\u5EFA\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement(
|
|
3951
3884
|
"button",
|
|
3952
3885
|
{
|
|
3953
3886
|
onClick: onCancel,
|
|
3954
3887
|
className: "text-gray-400 hover:text-gray-600 transition-colors"
|
|
3955
3888
|
},
|
|
3956
|
-
/* @__PURE__ */
|
|
3957
|
-
)), /* @__PURE__ */
|
|
3889
|
+
/* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }))
|
|
3890
|
+
)), /* @__PURE__ */ React2__default.default.createElement("form", { onSubmit: handleSubmit, className: "space-y-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-medium text-gray-900" }, "\u57FA\u672C\u4FE1\u606F"), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "title", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u4E8B\u4EF6\u6807\u9898 *"), /* @__PURE__ */ React2__default.default.createElement(
|
|
3958
3891
|
"input",
|
|
3959
3892
|
{
|
|
3960
3893
|
type: "text",
|
|
@@ -3964,7 +3897,7 @@ function EventForm({
|
|
|
3964
3897
|
className: `w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 ${errors.title ? "border-red-300" : "border-gray-300"}`,
|
|
3965
3898
|
placeholder: "\u8BF7\u8F93\u5165\u4E8B\u4EF6\u6807\u9898"
|
|
3966
3899
|
}
|
|
3967
|
-
), errors.title && /* @__PURE__ */
|
|
3900
|
+
), errors.title && /* @__PURE__ */ React2__default.default.createElement("p", { className: "mt-1 text-sm text-red-600" }, errors.title)), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "description", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u4E8B\u4EF6\u63CF\u8FF0"), /* @__PURE__ */ React2__default.default.createElement(
|
|
3968
3901
|
"textarea",
|
|
3969
3902
|
{
|
|
3970
3903
|
id: "description",
|
|
@@ -3974,7 +3907,7 @@ function EventForm({
|
|
|
3974
3907
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500",
|
|
3975
3908
|
placeholder: "\u8BF7\u8F93\u5165\u4E8B\u4EF6\u63CF\u8FF0\uFF08\u53EF\u9009\uFF09"
|
|
3976
3909
|
}
|
|
3977
|
-
)), /* @__PURE__ */
|
|
3910
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "location", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u5730\u70B9"), /* @__PURE__ */ React2__default.default.createElement(
|
|
3978
3911
|
"input",
|
|
3979
3912
|
{
|
|
3980
3913
|
type: "text",
|
|
@@ -3984,7 +3917,7 @@ function EventForm({
|
|
|
3984
3917
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500",
|
|
3985
3918
|
placeholder: "\u8BF7\u8F93\u5165\u4E8B\u4EF6\u5730\u70B9\uFF08\u53EF\u9009\uFF09"
|
|
3986
3919
|
}
|
|
3987
|
-
))), /* @__PURE__ */
|
|
3920
|
+
))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-medium text-gray-900" }, "\u65F6\u95F4\u8BBE\u7F6E"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
3988
3921
|
"input",
|
|
3989
3922
|
{
|
|
3990
3923
|
type: "checkbox",
|
|
@@ -3993,7 +3926,7 @@ function EventForm({
|
|
|
3993
3926
|
onChange: (e) => handleInputChange("allDay", e.target.checked),
|
|
3994
3927
|
className: "h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded"
|
|
3995
3928
|
}
|
|
3996
|
-
), /* @__PURE__ */
|
|
3929
|
+
), /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "allDay", className: "ml-2 text-sm text-gray-700" }, "\u5168\u5929\u4E8B\u4EF6")), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "startTime", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u5F00\u59CB\u65F6\u95F4 *"), /* @__PURE__ */ React2__default.default.createElement(
|
|
3997
3930
|
"input",
|
|
3998
3931
|
{
|
|
3999
3932
|
type: formData.allDay ? "date" : "datetime-local",
|
|
@@ -4005,7 +3938,7 @@ function EventForm({
|
|
|
4005
3938
|
},
|
|
4006
3939
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
|
4007
3940
|
}
|
|
4008
|
-
)), /* @__PURE__ */
|
|
3941
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "endTime", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u7ED3\u675F\u65F6\u95F4 *"), /* @__PURE__ */ React2__default.default.createElement(
|
|
4009
3942
|
"input",
|
|
4010
3943
|
{
|
|
4011
3944
|
type: formData.allDay ? "date" : "datetime-local",
|
|
@@ -4017,7 +3950,7 @@ function EventForm({
|
|
|
4017
3950
|
},
|
|
4018
3951
|
className: `w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 ${errors.endTime ? "border-red-300" : "border-gray-300"}`
|
|
4019
3952
|
}
|
|
4020
|
-
), errors.endTime && /* @__PURE__ */
|
|
3953
|
+
), errors.endTime && /* @__PURE__ */ React2__default.default.createElement("p", { className: "mt-1 text-sm text-red-600" }, errors.endTime))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-medium text-gray-900" }, "\u5916\u89C2"), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u4E8B\u4EF6\u989C\u8272"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex flex-wrap gap-3" }, colorOptions.map((option) => /* @__PURE__ */ React2__default.default.createElement(
|
|
4021
3954
|
"button",
|
|
4022
3955
|
{
|
|
4023
3956
|
key: option.value,
|
|
@@ -4028,9 +3961,9 @@ function EventForm({
|
|
|
4028
3961
|
${formData.color === option.value ? "border-blue-500 ring-2 ring-blue-200" : "border-gray-200 hover:border-gray-300"}
|
|
4029
3962
|
`
|
|
4030
3963
|
},
|
|
4031
|
-
/* @__PURE__ */
|
|
4032
|
-
/* @__PURE__ */
|
|
4033
|
-
))))), /* @__PURE__ */
|
|
3964
|
+
/* @__PURE__ */ React2__default.default.createElement("div", { className: `w-4 h-4 rounded-full ${option.class} mr-2` }),
|
|
3965
|
+
/* @__PURE__ */ React2__default.default.createElement("span", { className: "text-sm text-gray-700" }, option.label)
|
|
3966
|
+
))))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-end gap-3 pt-6 border-t border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
4034
3967
|
"button",
|
|
4035
3968
|
{
|
|
4036
3969
|
type: "button",
|
|
@@ -4038,7 +3971,7 @@ function EventForm({
|
|
|
4038
3971
|
className: "px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors"
|
|
4039
3972
|
},
|
|
4040
3973
|
"\u53D6\u6D88"
|
|
4041
|
-
), /* @__PURE__ */
|
|
3974
|
+
), /* @__PURE__ */ React2__default.default.createElement(
|
|
4042
3975
|
"button",
|
|
4043
3976
|
{
|
|
4044
3977
|
type: "submit",
|
|
@@ -4053,8 +3986,8 @@ var EventSearch = ({
|
|
|
4053
3986
|
onFiltered,
|
|
4054
3987
|
className = ""
|
|
4055
3988
|
}) => {
|
|
4056
|
-
const [isExpanded, setIsExpanded] =
|
|
4057
|
-
const [filters, setFilters] =
|
|
3989
|
+
const [isExpanded, setIsExpanded] = React2.useState(false);
|
|
3990
|
+
const [filters, setFilters] = React2.useState({
|
|
4058
3991
|
keyword: "",
|
|
4059
3992
|
priority: "all",
|
|
4060
3993
|
dateRange: {
|
|
@@ -4064,14 +3997,14 @@ var EventSearch = ({
|
|
|
4064
3997
|
colorFilter: [],
|
|
4065
3998
|
isAllDay: "all"
|
|
4066
3999
|
});
|
|
4067
|
-
const availableColors =
|
|
4000
|
+
const availableColors = React2.useMemo(() => {
|
|
4068
4001
|
const colors = /* @__PURE__ */ new Set();
|
|
4069
4002
|
events.forEach((event) => {
|
|
4070
4003
|
if (event.color) colors.add(event.color);
|
|
4071
4004
|
});
|
|
4072
4005
|
return Array.from(colors);
|
|
4073
4006
|
}, [events]);
|
|
4074
|
-
const filteredEvents =
|
|
4007
|
+
const filteredEvents = React2.useMemo(() => {
|
|
4075
4008
|
return events.filter((event) => {
|
|
4076
4009
|
if (filters.keyword) {
|
|
4077
4010
|
const keyword = filters.keyword.toLowerCase();
|
|
@@ -4108,16 +4041,16 @@ var EventSearch = ({
|
|
|
4108
4041
|
return true;
|
|
4109
4042
|
});
|
|
4110
4043
|
}, [events, filters]);
|
|
4111
|
-
|
|
4044
|
+
React2__default.default.useEffect(() => {
|
|
4112
4045
|
onFiltered(filteredEvents);
|
|
4113
4046
|
}, [filteredEvents, onFiltered]);
|
|
4114
|
-
const handleFilterChange =
|
|
4047
|
+
const handleFilterChange = React2.useCallback((key, value) => {
|
|
4115
4048
|
setFilters((prev) => ({
|
|
4116
4049
|
...prev,
|
|
4117
4050
|
[key]: value
|
|
4118
4051
|
}));
|
|
4119
4052
|
}, []);
|
|
4120
|
-
const resetFilters =
|
|
4053
|
+
const resetFilters = React2.useCallback(() => {
|
|
4121
4054
|
setFilters({
|
|
4122
4055
|
keyword: "",
|
|
4123
4056
|
priority: "all",
|
|
@@ -4126,7 +4059,7 @@ var EventSearch = ({
|
|
|
4126
4059
|
isAllDay: "all"
|
|
4127
4060
|
});
|
|
4128
4061
|
}, []);
|
|
4129
|
-
const hasActiveFilters =
|
|
4062
|
+
const hasActiveFilters = React2.useMemo(() => {
|
|
4130
4063
|
return filters.keyword !== "" || filters.priority !== "all" || filters.dateRange.start !== "" || filters.dateRange.end !== "" || filters.colorFilter.length > 0 || filters.isAllDay !== "all";
|
|
4131
4064
|
}, [filters]);
|
|
4132
4065
|
const getPriorityText = (priority) => {
|
|
@@ -4138,7 +4071,7 @@ var EventSearch = ({
|
|
|
4138
4071
|
};
|
|
4139
4072
|
return priorityMap[priority];
|
|
4140
4073
|
};
|
|
4141
|
-
return /* @__PURE__ */
|
|
4074
|
+
return /* @__PURE__ */ React2__default.default.createElement("div", { className: `bg-white rounded-lg border border-gray-200 ${className}` }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "p-4 border-b border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
4142
4075
|
"input",
|
|
4143
4076
|
{
|
|
4144
4077
|
type: "text",
|
|
@@ -4147,14 +4080,14 @@ var EventSearch = ({
|
|
|
4147
4080
|
onChange: (e) => handleFilterChange("keyword", e.target.value),
|
|
4148
4081
|
className: "w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none"
|
|
4149
4082
|
}
|
|
4150
|
-
), /* @__PURE__ */
|
|
4083
|
+
), /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "h-5 w-5 text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" }))))), /* @__PURE__ */ React2__default.default.createElement(
|
|
4151
4084
|
"button",
|
|
4152
4085
|
{
|
|
4153
4086
|
type: "button",
|
|
4154
4087
|
onClick: () => setIsExpanded(!isExpanded),
|
|
4155
4088
|
className: `px-3 py-2 text-sm font-medium rounded-lg transition-colors ${hasActiveFilters ? "bg-blue-100 text-blue-700 border border-blue-300" : "bg-gray-100 text-gray-700 border border-gray-300 hover:bg-gray-200"}`
|
|
4156
4089
|
},
|
|
4157
|
-
/* @__PURE__ */
|
|
4090
|
+
/* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
4158
4091
|
"svg",
|
|
4159
4092
|
{
|
|
4160
4093
|
className: `h-4 w-4 transition-transform ${isExpanded ? "rotate-180" : ""}`,
|
|
@@ -4162,11 +4095,11 @@ var EventSearch = ({
|
|
|
4162
4095
|
stroke: "currentColor",
|
|
4163
4096
|
viewBox: "0 0 24 24"
|
|
4164
4097
|
},
|
|
4165
|
-
/* @__PURE__ */
|
|
4166
|
-
), /* @__PURE__ */
|
|
4098
|
+
/* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
|
|
4099
|
+
), /* @__PURE__ */ React2__default.default.createElement("span", null, "\u8FC7\u6EE4\u5668"), hasActiveFilters && /* @__PURE__ */ React2__default.default.createElement("span", { className: "inline-flex items-center justify-center w-5 h-5 text-xs font-bold text-white bg-blue-600 rounded-full" }, Object.values(filters).filter(
|
|
4167
4100
|
(v) => v !== "" && v !== "all" && (Array.isArray(v) ? v.length > 0 : true) && (typeof v === "object" && !Array.isArray(v) ? v.start !== "" || v.end !== "" : true)
|
|
4168
4101
|
).length))
|
|
4169
|
-
), hasActiveFilters && /* @__PURE__ */
|
|
4102
|
+
), hasActiveFilters && /* @__PURE__ */ React2__default.default.createElement(
|
|
4170
4103
|
"button",
|
|
4171
4104
|
{
|
|
4172
4105
|
type: "button",
|
|
@@ -4174,29 +4107,29 @@ var EventSearch = ({
|
|
|
4174
4107
|
className: "px-3 py-2 text-sm font-medium text-red-600 bg-red-50 border border-red-300 rounded-lg hover:bg-red-100 transition-colors"
|
|
4175
4108
|
},
|
|
4176
4109
|
"\u91CD\u7F6E"
|
|
4177
|
-
)), /* @__PURE__ */
|
|
4110
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", { className: "mt-3 text-sm text-gray-600" }, "\u5171\u627E\u5230 ", /* @__PURE__ */ React2__default.default.createElement("span", { className: "font-medium text-gray-900" }, filteredEvents.length), " \u4E2A\u4E8B\u4EF6", filteredEvents.length !== events.length && /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-gray-500" }, "\uFF08\u5171 ", events.length, " \u4E2A\uFF09"))), isExpanded && /* @__PURE__ */ React2__default.default.createElement("div", { className: "p-4 bg-gray-50 border-t border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4" }, /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u4F18\u5148\u7EA7"), /* @__PURE__ */ React2__default.default.createElement(
|
|
4178
4111
|
"select",
|
|
4179
4112
|
{
|
|
4180
4113
|
value: filters.priority,
|
|
4181
4114
|
onChange: (e) => handleFilterChange("priority", e.target.value),
|
|
4182
4115
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none"
|
|
4183
4116
|
},
|
|
4184
|
-
/* @__PURE__ */
|
|
4185
|
-
/* @__PURE__ */
|
|
4186
|
-
/* @__PURE__ */
|
|
4187
|
-
/* @__PURE__ */
|
|
4188
|
-
/* @__PURE__ */
|
|
4189
|
-
)), /* @__PURE__ */
|
|
4117
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "all" }, "\u5168\u90E8\u4F18\u5148\u7EA7"),
|
|
4118
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "low" /* LOW */ }, getPriorityText("low" /* LOW */)),
|
|
4119
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "normal" /* NORMAL */ }, getPriorityText("normal" /* NORMAL */)),
|
|
4120
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "high" /* HIGH */ }, getPriorityText("high" /* HIGH */)),
|
|
4121
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "urgent" /* URGENT */ }, getPriorityText("urgent" /* URGENT */))
|
|
4122
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u4E8B\u4EF6\u7C7B\u578B"), /* @__PURE__ */ React2__default.default.createElement(
|
|
4190
4123
|
"select",
|
|
4191
4124
|
{
|
|
4192
4125
|
value: filters.isAllDay,
|
|
4193
4126
|
onChange: (e) => handleFilterChange("isAllDay", e.target.value),
|
|
4194
4127
|
className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none"
|
|
4195
4128
|
},
|
|
4196
|
-
/* @__PURE__ */
|
|
4197
|
-
/* @__PURE__ */
|
|
4198
|
-
/* @__PURE__ */
|
|
4199
|
-
)), /* @__PURE__ */
|
|
4129
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "all" }, "\u5168\u90E8\u7C7B\u578B"),
|
|
4130
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "yes" }, "\u5168\u5929\u4E8B\u4EF6"),
|
|
4131
|
+
/* @__PURE__ */ React2__default.default.createElement("option", { value: "no" }, "\u5B9A\u65F6\u4E8B\u4EF6")
|
|
4132
|
+
)), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u989C\u8272\u6807\u7B7E"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex flex-wrap gap-2" }, availableColors.map((color) => /* @__PURE__ */ React2__default.default.createElement(
|
|
4200
4133
|
"button",
|
|
4201
4134
|
{
|
|
4202
4135
|
key: color,
|
|
@@ -4209,7 +4142,7 @@ var EventSearch = ({
|
|
|
4209
4142
|
style: { backgroundColor: color },
|
|
4210
4143
|
title: `\u989C\u8272: ${color}`
|
|
4211
4144
|
}
|
|
4212
|
-
)))), /* @__PURE__ */
|
|
4145
|
+
)))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "md:col-span-2 lg:col-span-3" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u65E5\u671F\u8303\u56F4"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
4213
4146
|
"input",
|
|
4214
4147
|
{
|
|
4215
4148
|
type: "date",
|
|
@@ -4220,7 +4153,7 @@ var EventSearch = ({
|
|
|
4220
4153
|
}),
|
|
4221
4154
|
className: "px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none"
|
|
4222
4155
|
}
|
|
4223
|
-
), /* @__PURE__ */
|
|
4156
|
+
), /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-gray-500" }, "\u81F3"), /* @__PURE__ */ React2__default.default.createElement(
|
|
4224
4157
|
"input",
|
|
4225
4158
|
{
|
|
4226
4159
|
type: "date",
|
|
@@ -4235,13 +4168,13 @@ var EventSearch = ({
|
|
|
4235
4168
|
};
|
|
4236
4169
|
var EventSearch_default = EventSearch;
|
|
4237
4170
|
function useEvents2() {
|
|
4238
|
-
const [events, setEvents] =
|
|
4239
|
-
const [loading, setLoading] =
|
|
4240
|
-
const [error, setError] =
|
|
4241
|
-
const clearError =
|
|
4171
|
+
const [events, setEvents] = React2.useState([]);
|
|
4172
|
+
const [loading, setLoading] = React2.useState(false);
|
|
4173
|
+
const [error, setError] = React2.useState();
|
|
4174
|
+
const clearError = React2.useCallback(() => {
|
|
4242
4175
|
setError(void 0);
|
|
4243
4176
|
}, []);
|
|
4244
|
-
const fetchEvents =
|
|
4177
|
+
const fetchEvents = React2.useCallback(async (startDate, endDate) => {
|
|
4245
4178
|
setLoading(true);
|
|
4246
4179
|
setError(void 0);
|
|
4247
4180
|
try {
|
|
@@ -4272,7 +4205,7 @@ function useEvents2() {
|
|
|
4272
4205
|
setLoading(false);
|
|
4273
4206
|
}
|
|
4274
4207
|
}, []);
|
|
4275
|
-
const createEvent =
|
|
4208
|
+
const createEvent = React2.useCallback(async (eventData) => {
|
|
4276
4209
|
setLoading(true);
|
|
4277
4210
|
setError(void 0);
|
|
4278
4211
|
try {
|
|
@@ -4324,7 +4257,7 @@ function useEvents2() {
|
|
|
4324
4257
|
setLoading(false);
|
|
4325
4258
|
}
|
|
4326
4259
|
}, []);
|
|
4327
|
-
const updateEvent =
|
|
4260
|
+
const updateEvent = React2.useCallback(async (eventId, eventData) => {
|
|
4328
4261
|
setLoading(true);
|
|
4329
4262
|
setError(void 0);
|
|
4330
4263
|
try {
|
|
@@ -4370,7 +4303,7 @@ function useEvents2() {
|
|
|
4370
4303
|
setLoading(false);
|
|
4371
4304
|
}
|
|
4372
4305
|
}, []);
|
|
4373
|
-
const deleteEvent =
|
|
4306
|
+
const deleteEvent = React2.useCallback(async (eventId, deleteAll = false) => {
|
|
4374
4307
|
setLoading(true);
|
|
4375
4308
|
setError(void 0);
|
|
4376
4309
|
try {
|
|
@@ -4395,7 +4328,7 @@ function useEvents2() {
|
|
|
4395
4328
|
setLoading(false);
|
|
4396
4329
|
}
|
|
4397
4330
|
}, []);
|
|
4398
|
-
const batchDeleteEvents =
|
|
4331
|
+
const batchDeleteEvents = React2.useCallback(async (eventIds) => {
|
|
4399
4332
|
setLoading(true);
|
|
4400
4333
|
setError(void 0);
|
|
4401
4334
|
try {
|