@pisell/materials 6.11.36 → 6.11.38

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.
Files changed (200) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/index.js +1 -1
  5. package/build/lowcode/meta.js +1 -1
  6. package/build/lowcode/preview.js +8 -8
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +26 -56
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +26 -56
  11. package/es/components/PisellLayouts/index.d.ts +1 -1
  12. package/es/components/colorPicker/index.d.ts +0 -1
  13. package/es/components/dataSourceComponents/dataSourceForm/utils.d.ts +1 -1
  14. package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +2 -2
  15. package/es/components/dataSourceComponents/fields/RecordListWrapper/index.d.ts +1 -1
  16. package/es/components/dataSourceComponents/fields/Select/index.d.ts +1 -1
  17. package/es/components/dataSourceComponents/fields/Tabs/index.d.ts +1 -1
  18. package/es/components/dataSourceComponents/fields/Upload/utils.d.ts +1 -1
  19. package/es/components/dataSourceComponents/fields/index.d.ts +6 -6
  20. package/es/components/filter/components/items/index.d.ts +0 -1
  21. package/es/components/filter/components/items/text/Editor/index.d.ts +0 -1
  22. package/es/components/filter/components/items/text/Preview/index.d.ts +0 -1
  23. package/es/components/filter/components/items/text/index.d.ts +0 -1
  24. package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.d.ts +2 -1
  25. package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.js +47 -3
  26. package/es/components/pisellFloorMapLayout/types.d.ts +7 -7
  27. package/es/components/pisellFloorMapLayout/types.js +2 -2
  28. package/es/components/pisellRecordBoard/index.d.ts +1 -1
  29. package/es/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendar.d.ts +5 -0
  30. package/es/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendar.js +1039 -0
  31. package/es/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendar.less +323 -0
  32. package/es/components/pisellRecordBoard/shellFrame/Calendar/PisellRecordBoardCalendarView.d.ts +5 -1
  33. package/es/components/pisellRecordBoard/shellFrame/Calendar/PisellRecordBoardCalendarView.js +10 -10
  34. package/es/components/pisellRecordBoard/shellFrame/Calendar/bookingCalendarViewShared.d.ts +23 -0
  35. package/es/components/pisellRecordBoard/shellFrame/Calendar/bookingCalendarViewShared.js +287 -0
  36. package/es/components/pisellRecordBoard/shellFrame/Calendar/calendarI18n.d.ts +4 -0
  37. package/es/components/pisellRecordBoard/shellFrame/Calendar/calendarI18n.js +28 -0
  38. package/es/components/pisellRecordBoard/shellFrame/Calendar/calendarPersistGuard.d.ts +1 -1
  39. package/es/components/pisellRecordBoard/shellFrame/Calendar/const/bookingCalendarConstants.d.ts +36 -0
  40. package/es/components/pisellRecordBoard/shellFrame/Calendar/const/bookingCalendarConstants.js +38 -0
  41. package/es/components/pisellRecordBoard/shellFrame/Calendar/index.d.ts +3 -0
  42. package/es/components/pisellRecordBoard/shellFrame/Calendar/index.js +3 -0
  43. package/es/components/pisellRecordBoard/shellFrame/Calendar/modal/MoveConfirmModal.d.ts +17 -0
  44. package/es/components/pisellRecordBoard/shellFrame/Calendar/modal/MoveConfirmModal.js +197 -0
  45. package/es/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowListModal.d.ts +17 -0
  46. package/es/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowListModal.js +65 -0
  47. package/es/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowPopover.d.ts +9 -0
  48. package/es/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowPopover.js +52 -0
  49. package/es/components/pisellRecordBoard/shellFrame/Calendar/utils/BookingCalendarStyle.d.ts +10 -0
  50. package/es/components/pisellRecordBoard/shellFrame/Calendar/utils/BookingCalendarStyle.js +58 -0
  51. package/es/components/pisellRecordBoard/shellFrame/Calendar/utils/bookingCalendarDateUtils.d.ts +232 -0
  52. package/es/components/pisellRecordBoard/shellFrame/Calendar/utils/bookingCalendarDateUtils.js +735 -0
  53. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDaySelectionBar.d.ts +13 -0
  54. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDaySelectionBar.js +37 -0
  55. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDayView.d.ts +56 -0
  56. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDayView.js +682 -0
  57. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarMonthView.d.ts +18 -0
  58. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarMonthView.js +155 -0
  59. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarWeekView.d.ts +27 -0
  60. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarWeekView.js +259 -0
  61. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/bookingCalendarDayViewContext.d.ts +12 -0
  62. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/bookingCalendarDayViewContext.js +19 -0
  63. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.d.ts +2 -1
  64. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.js +44 -14
  65. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.d.ts +4 -2
  66. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.js +117 -125
  67. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanel.d.ts +3 -5
  68. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanel.js +71 -352
  69. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelColorTab.d.ts +17 -0
  70. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelColorTab.js +143 -0
  71. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelLayoutTab.d.ts +28 -0
  72. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelLayoutTab.js +128 -0
  73. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewport.less +8 -0
  74. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewportToolbar.d.ts +18 -0
  75. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewportToolbar.js +115 -0
  76. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.d.ts +6 -4
  77. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.js +63 -120
  78. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/resourceWallConstants.d.ts +2 -0
  79. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/resourceWallConstants.js +2 -0
  80. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.d.ts +42 -0
  81. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.js +114 -0
  82. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.d.ts +26 -0
  83. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.js +54 -1
  84. package/es/components/pisellRecordBoard/shellFrame/ToolBar/index.js +67 -12
  85. package/es/components/pisellRecordBoard/shellFrame/index.js +34 -7
  86. package/es/components/pisellRecordBoard/types.d.ts +97 -4
  87. package/es/components/pisellRecordBoard/types.js +18 -2
  88. package/es/components/pisellReservationScheduleBand/PisellReservationScheduleBand.less +34 -2
  89. package/es/components/pisellShellFrame/PisellShellFrame.less +5 -2
  90. package/es/components/table/Table/SelectField/index.d.ts +0 -1
  91. package/es/components/table/Table/tableConfig/summary/index.d.ts +0 -1
  92. package/es/hooks/useResponsive.d.ts +1 -1
  93. package/es/index.d.ts +1 -1
  94. package/es/locales/en-US.d.ts +74 -0
  95. package/es/locales/en-US.js +76 -1
  96. package/es/locales/ja.d.ts +74 -0
  97. package/es/locales/ja.js +75 -0
  98. package/es/locales/pt.d.ts +74 -0
  99. package/es/locales/pt.js +75 -0
  100. package/es/locales/zh-CN.d.ts +74 -0
  101. package/es/locales/zh-CN.js +76 -1
  102. package/es/locales/zh-TW.d.ts +74 -0
  103. package/es/locales/zh-TW.js +76 -1
  104. package/es/pisell-materials.tw.css +1 -1
  105. package/lib/components/PisellLayouts/index.d.ts +1 -1
  106. package/lib/components/colorPicker/index.d.ts +0 -1
  107. package/lib/components/dataSourceComponents/dataSourceForm/utils.d.ts +1 -1
  108. package/lib/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +2 -2
  109. package/lib/components/dataSourceComponents/fields/RecordListWrapper/index.d.ts +1 -1
  110. package/lib/components/dataSourceComponents/fields/Select/index.d.ts +1 -1
  111. package/lib/components/dataSourceComponents/fields/Tabs/index.d.ts +1 -1
  112. package/lib/components/dataSourceComponents/fields/Upload/utils.d.ts +1 -1
  113. package/lib/components/dataSourceComponents/fields/index.d.ts +6 -6
  114. package/lib/components/filter/components/items/index.d.ts +0 -1
  115. package/lib/components/filter/components/items/text/Editor/index.d.ts +0 -1
  116. package/lib/components/filter/components/items/text/Preview/index.d.ts +0 -1
  117. package/lib/components/filter/components/items/text/index.d.ts +0 -1
  118. package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.d.ts +2 -1
  119. package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.js +1 -1
  120. package/lib/components/pisellFloorMapLayout/types.d.ts +7 -7
  121. package/lib/components/pisellRecordBoard/index.d.ts +1 -1
  122. package/lib/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendar.d.ts +5 -0
  123. package/lib/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendar.js +892 -0
  124. package/lib/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendar.less +323 -0
  125. package/lib/components/pisellRecordBoard/shellFrame/Calendar/PisellRecordBoardCalendarView.d.ts +5 -1
  126. package/lib/components/pisellRecordBoard/shellFrame/Calendar/PisellRecordBoardCalendarView.js +7 -6
  127. package/lib/components/pisellRecordBoard/shellFrame/Calendar/bookingCalendarViewShared.d.ts +23 -0
  128. package/lib/components/pisellRecordBoard/shellFrame/Calendar/bookingCalendarViewShared.js +268 -0
  129. package/lib/components/pisellRecordBoard/shellFrame/Calendar/calendarI18n.d.ts +4 -0
  130. package/lib/components/pisellRecordBoard/shellFrame/Calendar/calendarI18n.js +53 -0
  131. package/lib/components/pisellRecordBoard/shellFrame/Calendar/calendarPersistGuard.d.ts +1 -1
  132. package/lib/components/pisellRecordBoard/shellFrame/Calendar/const/bookingCalendarConstants.d.ts +36 -0
  133. package/lib/components/pisellRecordBoard/shellFrame/Calendar/const/bookingCalendarConstants.js +98 -0
  134. package/lib/components/pisellRecordBoard/shellFrame/Calendar/index.d.ts +3 -0
  135. package/lib/components/pisellRecordBoard/shellFrame/Calendar/modal/MoveConfirmModal.d.ts +17 -0
  136. package/lib/components/pisellRecordBoard/shellFrame/Calendar/modal/MoveConfirmModal.js +306 -0
  137. package/lib/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowListModal.d.ts +17 -0
  138. package/lib/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowListModal.js +111 -0
  139. package/lib/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowPopover.d.ts +9 -0
  140. package/lib/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowPopover.js +96 -0
  141. package/lib/components/pisellRecordBoard/shellFrame/Calendar/utils/BookingCalendarStyle.d.ts +10 -0
  142. package/lib/components/pisellRecordBoard/shellFrame/Calendar/utils/BookingCalendarStyle.js +92 -0
  143. package/lib/components/pisellRecordBoard/shellFrame/Calendar/utils/bookingCalendarDateUtils.d.ts +232 -0
  144. package/lib/components/pisellRecordBoard/shellFrame/Calendar/utils/bookingCalendarDateUtils.js +666 -0
  145. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDaySelectionBar.d.ts +13 -0
  146. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDaySelectionBar.js +90 -0
  147. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDayView.d.ts +56 -0
  148. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDayView.js +812 -0
  149. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarMonthView.d.ts +18 -0
  150. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarMonthView.js +219 -0
  151. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarWeekView.d.ts +27 -0
  152. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarWeekView.js +352 -0
  153. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/bookingCalendarDayViewContext.d.ts +12 -0
  154. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/bookingCalendarDayViewContext.js +57 -0
  155. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.d.ts +2 -1
  156. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.js +44 -9
  157. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.d.ts +4 -2
  158. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.js +60 -142
  159. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanel.d.ts +3 -5
  160. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanel.js +40 -269
  161. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelColorTab.d.ts +17 -0
  162. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelColorTab.js +163 -0
  163. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelLayoutTab.d.ts +28 -0
  164. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelLayoutTab.js +136 -0
  165. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewport.less +8 -0
  166. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewportToolbar.d.ts +18 -0
  167. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewportToolbar.js +175 -0
  168. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.d.ts +6 -4
  169. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.js +61 -88
  170. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/resourceWallConstants.d.ts +2 -0
  171. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/resourceWallConstants.js +29 -0
  172. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.d.ts +42 -0
  173. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.js +139 -0
  174. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.d.ts +26 -0
  175. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.js +31 -3
  176. package/lib/components/pisellRecordBoard/shellFrame/ToolBar/index.js +50 -5
  177. package/lib/components/pisellRecordBoard/shellFrame/index.js +29 -13
  178. package/lib/components/pisellRecordBoard/types.d.ts +97 -4
  179. package/lib/components/pisellReservationScheduleBand/PisellReservationScheduleBand.less +34 -2
  180. package/lib/components/pisellShellFrame/PisellShellFrame.less +5 -2
  181. package/lib/components/table/Table/SelectField/index.d.ts +0 -1
  182. package/lib/components/table/Table/tableConfig/summary/index.d.ts +0 -1
  183. package/lib/hooks/useResponsive.d.ts +1 -1
  184. package/lib/index.d.ts +1 -1
  185. package/lib/locales/en-US.d.ts +74 -0
  186. package/lib/locales/en-US.js +76 -1
  187. package/lib/locales/ja.d.ts +74 -0
  188. package/lib/locales/ja.js +75 -0
  189. package/lib/locales/pt.d.ts +74 -0
  190. package/lib/locales/pt.js +75 -0
  191. package/lib/locales/zh-CN.d.ts +74 -0
  192. package/lib/locales/zh-CN.js +76 -1
  193. package/lib/locales/zh-TW.d.ts +74 -0
  194. package/lib/locales/zh-TW.js +76 -1
  195. package/lib/pisell-materials.tw.css +1 -1
  196. package/package.json +3 -4
  197. package/es/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendarDemo.d.ts +0 -3
  198. package/es/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendarDemo.js +0 -6233
  199. package/lib/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendarDemo.d.ts +0 -3
  200. package/lib/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendarDemo.js +0 -7079
@@ -0,0 +1,18 @@
1
+ /// <reference types="react" />
2
+ /** 月视图:由 BookingCalendar 传入数据与交互,本文件仅负责渲染结构 */
3
+ export declare function BookingCalendarMonthView({ isLight, anchorDate, monthDays, bookings, goToDayFromCell, handleGridDropMove, setDraggingItem, openBookingDetail, overflowPopover, setOverflowPopover, overflowListModal, setOverflowListModal, overflowPanelRef, renderMonthWeekBooking, }: {
4
+ isLight: any;
5
+ anchorDate: any;
6
+ monthDays: any;
7
+ bookings: any;
8
+ goToDayFromCell: any;
9
+ handleGridDropMove: any;
10
+ setDraggingItem: any;
11
+ openBookingDetail: any;
12
+ overflowPopover: any;
13
+ setOverflowPopover: any;
14
+ overflowListModal: any;
15
+ setOverflowListModal: any;
16
+ overflowPanelRef: any;
17
+ renderMonthWeekBooking: any;
18
+ }): JSX.Element;
@@ -0,0 +1,155 @@
1
+ // @ts-nocheck
2
+ import React from 'react';
3
+ import { MonthGridOverflowVirtualList } from "../modal/OverflowPopover";
4
+ import { CALENDAR_WEEKDAY_IDS, tCal } from "../calendarI18n";
5
+ import { getGridBookingRowStateClasses } from "../utils/BookingCalendarStyle";
6
+ import { formatHourLabel } from "../utils/bookingCalendarDateUtils";
7
+
8
+ /** 月视图:由 BookingCalendar 传入数据与交互,本文件仅负责渲染结构 */
9
+ export function BookingCalendarMonthView(_ref) {
10
+ var isLight = _ref.isLight,
11
+ anchorDate = _ref.anchorDate,
12
+ monthDays = _ref.monthDays,
13
+ bookings = _ref.bookings,
14
+ goToDayFromCell = _ref.goToDayFromCell,
15
+ handleGridDropMove = _ref.handleGridDropMove,
16
+ setDraggingItem = _ref.setDraggingItem,
17
+ openBookingDetail = _ref.openBookingDetail,
18
+ overflowPopover = _ref.overflowPopover,
19
+ setOverflowPopover = _ref.setOverflowPopover,
20
+ overflowListModal = _ref.overflowListModal,
21
+ setOverflowListModal = _ref.setOverflowListModal,
22
+ overflowPanelRef = _ref.overflowPanelRef,
23
+ renderMonthWeekBooking = _ref.renderMonthWeekBooking;
24
+ return /*#__PURE__*/React.createElement("div", {
25
+ key: "month-".concat(anchorDate.getFullYear(), "-").concat(anchorDate.getMonth()),
26
+ className: "flex min-h-0 flex-1 flex-col"
27
+ }, /*#__PURE__*/React.createElement("div", {
28
+ className: "p-2 md:p-4 relative flex min-h-0 flex-1 flex-col"
29
+ }, /*#__PURE__*/React.createElement("div", {
30
+ className: "theme-panel rounded-3xl border min-w-[980px] min-h-0 max-h-none flex-1 overflow-auto"
31
+ }, /*#__PURE__*/React.createElement("div", {
32
+ className: "theme-panel-alt sticky top-0 z-20 grid grid-cols-7 border-b theme-border shadow-[0_6px_12px_rgba(0,0,0,0.08)]"
33
+ }, CALENDAR_WEEKDAY_IDS.map(function (id, i) {
34
+ return /*#__PURE__*/React.createElement("div", {
35
+ key: id,
36
+ className: "px-4 py-3 text-center font-medium ".concat(i >= 5 ? isLight ? 'bg-violet-200' : 'bg-violet-900' : '')
37
+ }, tCal(id));
38
+ })), /*#__PURE__*/React.createElement("div", {
39
+ className: "grid grid-cols-7 auto-rows-[255px]"
40
+ }, monthDays.map(function (day) {
41
+ var allItems = bookings.filter(function (b) {
42
+ return b.date === day.key;
43
+ });
44
+ var dayItems = allItems.slice(0, 3);
45
+ var moreItems = allItems.slice(3);
46
+ var moreCount = moreItems.length;
47
+ var showMoreTile = moreCount > 0 && dayItems.length > 0;
48
+ return /*#__PURE__*/React.createElement("button", {
49
+ key: day.key,
50
+ onClick: function onClick() {
51
+ return goToDayFromCell(day.date, null, "month-".concat(day.key));
52
+ },
53
+ onDragOver: function onDragOver(e) {
54
+ return e.preventDefault();
55
+ },
56
+ onDrop: function onDrop(e) {
57
+ e.preventDefault();
58
+ handleGridDropMove(day.key);
59
+ },
60
+ className: "relative flex flex-col justify-start border-r border-b theme-border p-3 text-left align-top ".concat(day.inMonth ? isLight ? 'theme-grid-cell theme-text' : 'bg-[#1a1b21]' : isLight ? 'theme-grid-muted theme-text-faint' : 'bg-[#111217] text-zinc-600', " ").concat(isLight ? 'hover:bg-violet-50/70' : 'hover:bg-zinc-900')
61
+ }, /*#__PURE__*/React.createElement("div", {
62
+ className: "absolute left-3 top-3 text-4xl font-semibold leading-none ".concat(isLight ? 'theme-text-soft' : '')
63
+ }, day.date.getDate()), /*#__PURE__*/React.createElement("div", {
64
+ className: "absolute right-3 top-3 flex gap-1 pt-1"
65
+ }, day.bookingCount > 0 && /*#__PURE__*/React.createElement("span", {
66
+ className: "h-3 w-3 rounded-full bg-violet-500"
67
+ }), (day.blockCount > 0 || day.fullyBooked) && /*#__PURE__*/React.createElement("span", {
68
+ className: "h-3 w-3 rounded-full bg-red-500"
69
+ })), /*#__PURE__*/React.createElement("div", {
70
+ className: "mt-10 flex flex-col items-start gap-1.5 w-full"
71
+ }, dayItems.map(function (item, i) {
72
+ var isLastVisible = i === dayItems.length - 1;
73
+ var shrinkForMore = showMoreTile && isLastVisible;
74
+ var layoutClassName = "block rounded-md px-2 py-2 text-xs text-left ".concat(getGridBookingRowStateClasses(item), " ").concat(shrinkForMore ? 'flex-1 min-w-0' : 'w-full');
75
+ return /*#__PURE__*/React.createElement("div", {
76
+ key: i,
77
+ className: "flex w-full items-stretch gap-2"
78
+ }, renderMonthWeekBooking ? /*#__PURE__*/React.createElement("div", {
79
+ className: shrinkForMore ? 'flex-1 min-w-0' : 'w-full'
80
+ }, renderMonthWeekBooking({
81
+ item: item,
82
+ dateKey: day.key,
83
+ view: 'month',
84
+ isLight: isLight,
85
+ layoutClassName: layoutClassName,
86
+ onOpenDetail: openBookingDetail,
87
+ onDragStart: function onDragStart(it) {
88
+ return setDraggingItem(it);
89
+ },
90
+ draggable: item.kind !== 'block'
91
+ })) : /*#__PURE__*/React.createElement("button", {
92
+ type: "button",
93
+ draggable: item.kind !== 'block',
94
+ onDragStart: function onDragStart(e) {
95
+ if (item.kind !== 'block') {
96
+ e.stopPropagation();
97
+ setDraggingItem(item);
98
+ }
99
+ },
100
+ onClick: function onClick(e) {
101
+ e.stopPropagation();
102
+ openBookingDetail(item);
103
+ },
104
+ className: layoutClassName
105
+ }, /*#__PURE__*/React.createElement("div", {
106
+ className: "truncate"
107
+ }, item.name), /*#__PURE__*/React.createElement("div", {
108
+ className: "mt-1 opacity-80"
109
+ }, formatHourLabel(item.startHour), " -", ' ', formatHourLabel(item.endHour))), shrinkForMore && /*#__PURE__*/React.createElement("div", {
110
+ className: "relative h-[52px] w-[52px] shrink-0",
111
+ ref: (overflowPopover === null || overflowPopover === void 0 ? void 0 : overflowPopover.courtId) === 'month' && (overflowPopover === null || overflowPopover === void 0 ? void 0 : overflowPopover.date) === day.key ? overflowPanelRef : null
112
+ }, /*#__PURE__*/React.createElement("button", {
113
+ onMouseEnter: function onMouseEnter(e) {
114
+ e.stopPropagation();
115
+ setOverflowPopover({
116
+ courtId: 'month',
117
+ date: day.key,
118
+ items: moreItems,
119
+ pinned: false
120
+ });
121
+ },
122
+ onClick: function onClick(e) {
123
+ e.stopPropagation();
124
+ setOverflowPopover(null);
125
+ setOverflowListModal(function (prev) {
126
+ return prev && prev.scope === 'month' && prev.date === day.key ? null : {
127
+ scope: 'month',
128
+ date: day.key,
129
+ title: tCal('pisell2.recordBoard.calendar.overflow.listTitleBookings', {
130
+ date: day.key
131
+ }),
132
+ items: allItems.filter(function (x) {
133
+ return x.kind === 'booking';
134
+ })
135
+ };
136
+ });
137
+ },
138
+ className: "flex h-[52px] w-[52px] items-center justify-center rounded-xl bg-violet-700/90 text-sm font-semibold text-white"
139
+ }, "+", moreCount), (overflowPopover === null || overflowPopover === void 0 ? void 0 : overflowPopover.courtId) === 'month' && (overflowPopover === null || overflowPopover === void 0 ? void 0 : overflowPopover.date) === day.key && !overflowListModal && /*#__PURE__*/React.createElement("div", {
140
+ onMouseLeave: function onMouseLeave() {
141
+ if (!(overflowPopover !== null && overflowPopover !== void 0 && overflowPopover.pinned)) setOverflowPopover(null);
142
+ },
143
+ className: "absolute right-0 top-[60px] z-20 flex min-w-[240px] max-h-[360px] flex-col rounded-xl border p-3 shadow-2xl ".concat(isLight ? 'theme-panel theme-border' : 'border-zinc-700 bg-[#111218]')
144
+ }, /*#__PURE__*/React.createElement("div", {
145
+ className: "mb-3 shrink-0 text-xs font-semibold ".concat(isLight ? 'theme-text-soft' : 'text-zinc-300')
146
+ }, tCal('pisell2.recordBoard.calendar.overflow.bookingsForDay')), /*#__PURE__*/React.createElement("div", {
147
+ className: "min-h-0 flex-1 overflow-hidden"
148
+ }, /*#__PURE__*/React.createElement(MonthGridOverflowVirtualList, {
149
+ items: overflowPopover.items,
150
+ listWidth: 214,
151
+ onPickItem: openBookingDetail
152
+ })))));
153
+ })));
154
+ })))));
155
+ }
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import type { RecordBoardCalendarProps } from '../../../types';
3
+ /**
4
+ * 周视图:7 日网格 + 左侧分组(可折叠),单元格调起日视图;格内 drop 触发改期草稿。
5
+ */
6
+ export declare function BookingCalendarWeekView({ calendarProps, isLight, weekDays, bookings, courts, hourSlots, slotStepHours, visibleCourts, visibleCourtRows, isBusinessHour, goToDayFromCell, handleGridDropMove, openBookingDetail, setDraggingItem, setCollapsedGroups, overflowPopover, setOverflowPopover, overflowListModal, setOverflowListModal, overflowPanelRef, }: {
7
+ calendarProps: RecordBoardCalendarProps;
8
+ isLight: boolean;
9
+ weekDays: Date[];
10
+ bookings: any[];
11
+ courts: any[];
12
+ hourSlots: number[];
13
+ slotStepHours: number;
14
+ visibleCourts: any[];
15
+ visibleCourtRows: any[];
16
+ isBusinessHour: (h: number) => boolean;
17
+ goToDayFromCell: (d: Date, courtId: string | null, src: string) => void;
18
+ handleGridDropMove: (dateKey: string, courtId?: string | null) => void;
19
+ openBookingDetail: (item: any) => void;
20
+ setDraggingItem: (item: any) => void;
21
+ setCollapsedGroups: React.Dispatch<React.SetStateAction<any>>;
22
+ overflowPopover: any;
23
+ setOverflowPopover: React.Dispatch<React.SetStateAction<any>>;
24
+ overflowListModal: any;
25
+ setOverflowListModal: React.Dispatch<React.SetStateAction<any>>;
26
+ overflowPanelRef: React.RefObject<HTMLDivElement | null>;
27
+ }): JSX.Element;
@@ -0,0 +1,259 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ // @ts-nocheck
8
+ import React from 'react';
9
+ import { DownOutlined } from '@ant-design/icons';
10
+ import { courtDaySummary, dayOccupancy, fmtDate, formatHourLabel } from "../utils/bookingCalendarDateUtils";
11
+ import { frozenColWidth } from "../const/bookingCalendarConstants";
12
+ import { CALENDAR_WEEKDAY_IDS, tCal } from "../calendarI18n";
13
+ import { getGridBookingRowStateClasses } from "../utils/BookingCalendarStyle";
14
+ import { getRemainingToneClass } from "../bookingCalendarViewShared";
15
+ /**
16
+ * 周视图:7 日网格 + 左侧分组(可折叠),单元格调起日视图;格内 drop 触发改期草稿。
17
+ */
18
+ export function BookingCalendarWeekView(_ref) {
19
+ var calendarProps = _ref.calendarProps,
20
+ isLight = _ref.isLight,
21
+ weekDays = _ref.weekDays,
22
+ bookings = _ref.bookings,
23
+ courts = _ref.courts,
24
+ hourSlots = _ref.hourSlots,
25
+ slotStepHours = _ref.slotStepHours,
26
+ visibleCourts = _ref.visibleCourts,
27
+ visibleCourtRows = _ref.visibleCourtRows,
28
+ isBusinessHour = _ref.isBusinessHour,
29
+ goToDayFromCell = _ref.goToDayFromCell,
30
+ handleGridDropMove = _ref.handleGridDropMove,
31
+ openBookingDetail = _ref.openBookingDetail,
32
+ setDraggingItem = _ref.setDraggingItem,
33
+ setCollapsedGroups = _ref.setCollapsedGroups,
34
+ overflowPopover = _ref.overflowPopover,
35
+ setOverflowPopover = _ref.setOverflowPopover,
36
+ overflowListModal = _ref.overflowListModal,
37
+ setOverflowListModal = _ref.setOverflowListModal,
38
+ overflowPanelRef = _ref.overflowPanelRef;
39
+ var props = calendarProps;
40
+ return /*#__PURE__*/React.createElement("div", {
41
+ key: "week-".concat(fmtDate(weekDays[0])),
42
+ className: "flex min-h-0 flex-1 flex-col"
43
+ }, /*#__PURE__*/React.createElement("div", {
44
+ className: "p-2 md:p-4 relative flex min-h-0 flex-1 flex-col"
45
+ }, /*#__PURE__*/React.createElement("div", {
46
+ className: "theme-panel rounded-3xl border min-w-[980px] min-h-0 max-h-none flex-1 overflow-auto"
47
+ }, /*#__PURE__*/React.createElement("div", {
48
+ className: "grid",
49
+ style: {
50
+ gridTemplateColumns: "".concat(frozenColWidth, "px repeat(").concat(weekDays.length, ", minmax(150px, 1fr))")
51
+ }
52
+ }, /*#__PURE__*/React.createElement("div", {
53
+ className: "grid sticky top-0 z-50",
54
+ style: {
55
+ gridColumn: '1 / -1',
56
+ gridTemplateColumns: "".concat(frozenColWidth, "px repeat(").concat(weekDays.length, ", minmax(150px, 1fr))"),
57
+ isolation: 'isolate'
58
+ }
59
+ }, /*#__PURE__*/React.createElement("div", {
60
+ className: "sticky left-0 z-30 w-[132px] min-w-[132px] max-w-[132px] px-3 py-4 font-semibold border-b shadow-[8px_0_16px_rgba(0,0,0,0.08)] ".concat(isLight ? 'theme-sticky theme-border theme-text' : 'bg-[#241d40] border-zinc-800')
61
+ }, tCal('pisell2.recordBoard.calendar.week.headerCourtDate')), weekDays.map(function (day, i) {
62
+ var key = fmtDate(day);
63
+ var dayItems = bookings.filter(function (b) {
64
+ return b.date === key;
65
+ });
66
+ var fullyBooked = courts.every(function (court) {
67
+ return hourSlots.filter(isBusinessHour).every(function (h) {
68
+ return dayOccupancy(court.id, key, bookings, hourSlots, slotStepHours)[h];
69
+ });
70
+ });
71
+ return /*#__PURE__*/React.createElement("div", {
72
+ key: key,
73
+ className: "relative z-20 border-b border-l p-3 text-center shadow-[0_8px_16px_rgba(0,0,0,0.06)] ".concat(isLight ? 'theme-border theme-text' : 'border-zinc-800', " ").concat(i >= 5 ? isLight ? 'bg-violet-200' : 'bg-violet-900' : isLight ? 'theme-panel-soft' : 'bg-[#1a1a22]')
74
+ }, /*#__PURE__*/React.createElement("div", {
75
+ className: "text-sm ".concat(isLight ? 'theme-text-faint' : 'text-zinc-400')
76
+ }, tCal(CALENDAR_WEEKDAY_IDS[i])), /*#__PURE__*/React.createElement("div", {
77
+ className: "mt-1 text-3xl font-semibold"
78
+ }, day.getDate()), /*#__PURE__*/React.createElement("div", {
79
+ className: "mt-2 flex items-center justify-center gap-1"
80
+ }, dayItems.some(function (b) {
81
+ return b.kind === 'booking';
82
+ }) && /*#__PURE__*/React.createElement("span", {
83
+ className: "h-2.5 w-2.5 rounded-full bg-violet-500"
84
+ }), (dayItems.some(function (b) {
85
+ return b.kind === 'block';
86
+ }) || fullyBooked) && /*#__PURE__*/React.createElement("span", {
87
+ className: "h-2.5 w-2.5 rounded-full bg-red-500"
88
+ })));
89
+ })), visibleCourtRows.map(function (row) {
90
+ return /*#__PURE__*/React.createElement(React.Fragment, {
91
+ key: row.id
92
+ }, row.kind === 'group' ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
93
+ className: "sticky left-0 z-20 w-[132px] min-w-[132px] max-w-[132px] border-b px-2.5 py-2 shadow-[8px_0_16px_rgba(0,0,0,0.08)] ".concat(isLight ? 'border-slate-200 bg-gradient-to-b from-slate-100 to-slate-50' : 'border-zinc-800/80 bg-gradient-to-b from-[#252038] to-[#1a1628]')
94
+ }, props.renderResourceCell ? props.renderResourceCell({
95
+ view: 'week',
96
+ row: {
97
+ kind: 'group',
98
+ id: row.id,
99
+ label: row.label,
100
+ count: row.count,
101
+ collapsed: row.collapsed
102
+ },
103
+ isLight: isLight,
104
+ onToggleGroup: function onToggleGroup(label) {
105
+ return setCollapsedGroups(function (prev) {
106
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, label, !prev[label]));
107
+ });
108
+ }
109
+ }) : /*#__PURE__*/React.createElement("button", {
110
+ type: "button",
111
+ "aria-expanded": !row.collapsed,
112
+ onClick: function onClick() {
113
+ return setCollapsedGroups(function (prev) {
114
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, row.label, !prev[row.label]));
115
+ });
116
+ },
117
+ className: "flex w-full items-center gap-2 rounded-lg px-1 py-1 text-left transition-colors ".concat(isLight ? 'hover:bg-white/60' : 'hover:bg-white/[0.04] active:bg-white/[0.07]')
118
+ }, /*#__PURE__*/React.createElement(DownOutlined, {
119
+ style: {
120
+ fontSize: 15
121
+ },
122
+ className: "shrink-0 transition-transform duration-200 ".concat(isLight ? 'text-slate-500' : 'text-zinc-500', " ").concat(row.collapsed ? '-rotate-90' : 'rotate-0'),
123
+ "aria-hidden": true
124
+ }), /*#__PURE__*/React.createElement("div", {
125
+ className: "flex min-w-0 flex-1 items-center gap-1.5"
126
+ }, /*#__PURE__*/React.createElement("span", {
127
+ className: "truncate text-[13px] font-semibold leading-snug ".concat(isLight ? 'text-slate-800' : 'text-zinc-100')
128
+ }, row.label), /*#__PURE__*/React.createElement("span", {
129
+ className: "shrink-0 rounded-md px-1.5 py-0.5 text-[10px] font-semibold tabular-nums ".concat(isLight ? 'bg-violet-100 text-violet-800' : 'bg-zinc-800/90 text-zinc-300 ring-1 ring-zinc-600/40')
130
+ }, row.count)))), weekDays.map(function (day) {
131
+ var key = fmtDate(day);
132
+ var groupCourts = visibleCourts.filter(function (court) {
133
+ return court.type === row.label;
134
+ });
135
+ /** 分子:当日时间轴上无任何占用(无预约、无锁台)的资源数;分母:该类型下资源总数 */
136
+ var idleCount = groupCourts.filter(function (court) {
137
+ var s = courtDaySummary(court.id, key, bookings, hourSlots, slotStepHours);
138
+ return s.occupiedHours.length === 0;
139
+ }).length;
140
+ var ratio = groupCourts.length > 0 ? idleCount / groupCourts.length : 0;
141
+ return /*#__PURE__*/React.createElement("div", {
142
+ key: "".concat(row.id, "-").concat(key),
143
+ className: "border-b border-l p-3 text-center ".concat(isLight ? 'theme-border theme-panel-soft' : 'border-zinc-800 bg-[#151a2f]')
144
+ }, /*#__PURE__*/React.createElement("div", {
145
+ className: "text-xs font-semibold ".concat(getRemainingToneClass(ratio, isLight))
146
+ }, idleCount, "/", groupCourts.length));
147
+ })) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
148
+ className: "sticky left-0 z-20 w-[132px] min-w-[132px] max-w-[132px] border-b px-3 py-3 align-top shadow-[8px_0_16px_rgba(0,0,0,0.06)] ".concat(isLight ? 'theme-sticky theme-border' : 'border-zinc-800 bg-[#1a1a22]')
149
+ }, props.renderResourceCell ? props.renderResourceCell({
150
+ view: 'week',
151
+ row: {
152
+ kind: 'court',
153
+ id: row.id,
154
+ name: row.name,
155
+ type: row.type
156
+ },
157
+ isLight: isLight
158
+ }) : /*#__PURE__*/React.createElement("div", {
159
+ className: "font-semibold text-[16px] leading-tight break-all"
160
+ }, row.name)), weekDays.map(function (day) {
161
+ var key = fmtDate(day);
162
+ var summary = courtDaySummary(row.id, key, bookings, hourSlots, slotStepHours);
163
+ var previewItems = summary.items.slice(0, 3);
164
+ var moreItems = summary.items.slice(3);
165
+ var moreCount = moreItems.length;
166
+ var showMoreTile = moreCount > 0 && previewItems.length > 0;
167
+ return /*#__PURE__*/React.createElement("button", {
168
+ key: "".concat(row.id, "-").concat(key),
169
+ onClick: function onClick() {
170
+ return goToDayFromCell(day, row.id, "week-".concat(row.id, "-").concat(key));
171
+ },
172
+ onDragOver: function onDragOver(e) {
173
+ return e.preventDefault();
174
+ },
175
+ onDrop: function onDrop(e) {
176
+ e.preventDefault();
177
+ handleGridDropMove(key, row.id);
178
+ },
179
+ className: "relative flex flex-col justify-start min-h-[148px] border-b border-l p-3 text-left align-top transition ".concat(isLight ? 'theme-border' : '', " ").concat(summary.fullyBooked ? isLight ? 'bg-slate-100 theme-text-faint' : 'bg-zinc-800 text-zinc-500' : summary.hasBlock ? isLight ? 'bg-red-50 border-red-200' : 'bg-red-950/30 border-red-800/40' : summary.occupiedHours.length > 0 ? isLight ? 'bg-violet-50 hover:bg-violet-100/80' : 'bg-[#1c1630] hover:bg-[#241c3f]' : isLight ? 'theme-grid-cell hover:bg-violet-50/60' : 'bg-zinc-900 hover:bg-zinc-800')
180
+ }, /*#__PURE__*/React.createElement("div", {
181
+ className: "absolute left-3 top-3 text-[13px] text-zinc-400"
182
+ }, key), /*#__PURE__*/React.createElement("div", {
183
+ className: "absolute right-3 top-3 flex gap-1"
184
+ }, summary.occupiedHours.length > 0 && /*#__PURE__*/React.createElement("span", {
185
+ className: "h-2.5 w-2.5 rounded-full bg-violet-500"
186
+ }), (summary.hasBlock || summary.fullyBooked) && /*#__PURE__*/React.createElement("span", {
187
+ className: "h-2.5 w-2.5 rounded-full bg-red-500"
188
+ })), summary.fullyBooked ? /*#__PURE__*/React.createElement("div", {
189
+ className: "mt-8 rounded-lg bg-zinc-700/70 px-2 py-1 text-xs"
190
+ }, tCal('pisell2.recordBoard.calendar.week.fullyBooked')) : summary.items.length > 0 ? /*#__PURE__*/React.createElement("div", {
191
+ className: "mt-8 flex flex-col items-start gap-1.5 w-full"
192
+ }, previewItems.map(function (item, idx) {
193
+ var isLastVisible = idx === previewItems.length - 1;
194
+ var shrinkForMore = showMoreTile && isLastVisible;
195
+ var layoutClassName = "rounded-lg px-3 py-2 text-xs text-left ".concat(getGridBookingRowStateClasses(item), " ").concat(shrinkForMore ? 'flex-1 min-w-0' : 'w-full');
196
+ return /*#__PURE__*/React.createElement("div", {
197
+ key: idx,
198
+ className: "flex w-full items-stretch gap-2"
199
+ }, props.renderMonthWeekBooking ? /*#__PURE__*/React.createElement("div", {
200
+ className: shrinkForMore ? 'flex-1 min-w-0' : 'w-full'
201
+ }, props.renderMonthWeekBooking({
202
+ item: item,
203
+ dateKey: key,
204
+ view: 'week',
205
+ isLight: isLight,
206
+ layoutClassName: layoutClassName,
207
+ onOpenDetail: openBookingDetail,
208
+ onDragStart: function onDragStart(it) {
209
+ return setDraggingItem(it);
210
+ },
211
+ draggable: false
212
+ })) : /*#__PURE__*/React.createElement("button", {
213
+ type: "button",
214
+ onClick: function onClick(e) {
215
+ e.stopPropagation();
216
+ openBookingDetail(item);
217
+ },
218
+ className: layoutClassName
219
+ }, /*#__PURE__*/React.createElement("div", {
220
+ className: "truncate"
221
+ }, item.name), /*#__PURE__*/React.createElement("div", {
222
+ className: "mt-1 opacity-80"
223
+ }, formatHourLabel(item.startHour), " -", ' ', formatHourLabel(item.endHour))), shrinkForMore && /*#__PURE__*/React.createElement("div", {
224
+ className: "relative h-[52px] w-[52px] shrink-0",
225
+ ref: (overflowPopover === null || overflowPopover === void 0 ? void 0 : overflowPopover.courtId) === row.id && (overflowPopover === null || overflowPopover === void 0 ? void 0 : overflowPopover.date) === key ? overflowPanelRef : null
226
+ }, /*#__PURE__*/React.createElement("button", {
227
+ onMouseEnter: function onMouseEnter(e) {
228
+ e.stopPropagation();
229
+ setOverflowPopover({
230
+ courtId: row.id,
231
+ date: key,
232
+ items: moreItems,
233
+ pinned: false
234
+ });
235
+ },
236
+ onClick: function onClick(e) {
237
+ e.stopPropagation();
238
+ setOverflowPopover(null);
239
+ setOverflowListModal(function (prev) {
240
+ return prev && prev.scope === row.id && prev.date === key ? null : {
241
+ scope: row.id,
242
+ date: key,
243
+ title: tCal('pisell2.recordBoard.calendar.overflow.listTitleAllBookings', {
244
+ date: key
245
+ }),
246
+ items: summary.items.filter(function (x) {
247
+ return x.kind === 'booking';
248
+ })
249
+ };
250
+ });
251
+ },
252
+ className: "flex h-[52px] w-[52px] items-center justify-center rounded-xl bg-violet-700/90 text-sm font-semibold text-white"
253
+ }, "+", moreCount)));
254
+ })) : /*#__PURE__*/React.createElement("div", {
255
+ className: "mt-8 rounded-lg border border-dashed border-zinc-700 px-2 py-2 text-xs text-zinc-500"
256
+ }, tCal('pisell2.recordBoard.calendar.week.available')));
257
+ })));
258
+ })))));
259
+ }
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import type { RecordBoardCalendarProps } from '../../../types';
3
+ /** 供日视图拆分出的子组件读取 `calendarProps` / 明暗,避免每层透传(可选使用) */
4
+ export declare type BookingCalendarDayChromeContextValue = {
5
+ calendarProps: RecordBoardCalendarProps;
6
+ isLight: boolean;
7
+ };
8
+ export declare function BookingCalendarDayChromeProvider({ children, value, }: {
9
+ children: React.ReactNode;
10
+ value: BookingCalendarDayChromeContextValue;
11
+ }): JSX.Element;
12
+ export declare function useBookingCalendarDayChrome(): BookingCalendarDayChromeContextValue;
@@ -0,0 +1,19 @@
1
+ import React, { createContext, useContext } from 'react';
2
+
3
+ /** 供日视图拆分出的子组件读取 `calendarProps` / 明暗,避免每层透传(可选使用) */
4
+
5
+ var BookingCalendarDayChromeContext = /*#__PURE__*/createContext(null);
6
+ export function BookingCalendarDayChromeProvider(_ref) {
7
+ var children = _ref.children,
8
+ value = _ref.value;
9
+ return /*#__PURE__*/React.createElement(BookingCalendarDayChromeContext.Provider, {
10
+ value: value
11
+ }, children);
12
+ }
13
+ export function useBookingCalendarDayChrome() {
14
+ var v = useContext(BookingCalendarDayChromeContext);
15
+ if (!v) {
16
+ throw new Error('useBookingCalendarDayChrome must be used within BookingCalendarDayChromeProvider');
17
+ }
18
+ return v;
19
+ }
@@ -8,6 +8,7 @@ export interface NoteTickerProps {
8
8
  shouldMarquee: boolean;
9
9
  }
10
10
  /**
11
- * 底部说明条:短文案静态省略,长文案无缝跑马灯(样式见 VenueWallMarquee.less)。
11
+ * 底部说明条:短文案省略静态展示,长文案无缝跑马灯(多段 copy 与 `VenueWallMarquee.less` 中 -33.333% 动画配套)。
12
+ * 系统「减少动态效果」时强制静态展示;跑马灯区对读屏 `aria-hidden` 避免重复朗读。
12
13
  */
13
14
  export declare const NoteTicker: React.NamedExoticComponent<NoteTickerProps>;
@@ -1,7 +1,34 @@
1
- import React from 'react';
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import React, { useEffect, useState } from 'react';
2
8
  import "./VenueWallMarquee.less";
9
+ function usePrefersReducedMotion() {
10
+ var _useState = useState(false),
11
+ _useState2 = _slicedToArray(_useState, 2),
12
+ reduced = _useState2[0],
13
+ setReduced = _useState2[1];
14
+ useEffect(function () {
15
+ if (typeof window === 'undefined' || !window.matchMedia) return;
16
+ var mq = window.matchMedia('(prefers-reduced-motion: reduce)');
17
+ setReduced(mq.matches);
18
+ var onChange = function onChange() {
19
+ return setReduced(mq.matches);
20
+ };
21
+ mq.addEventListener('change', onChange);
22
+ return function () {
23
+ return mq.removeEventListener('change', onChange);
24
+ };
25
+ }, []);
26
+ return reduced;
27
+ }
28
+ var MARQUEE_COPY_COUNT = 3;
3
29
  /**
4
- * 底部说明条:短文案静态省略,长文案无缝跑马灯(样式见 VenueWallMarquee.less)。
30
+ * 底部说明条:短文案省略静态展示,长文案无缝跑马灯(多段 copy 与 `VenueWallMarquee.less` 中 -33.333% 动画配套)。
31
+ * 系统「减少动态效果」时强制静态展示;跑马灯区对读屏 `aria-hidden` 避免重复朗读。
5
32
  */
6
33
  export var NoteTicker = /*#__PURE__*/React.memo(function NoteTicker(_ref) {
7
34
  var text = _ref.text,
@@ -9,29 +36,32 @@ export var NoteTicker = /*#__PURE__*/React.memo(function NoteTicker(_ref) {
9
36
  _ref$duration = _ref.duration,
10
37
  duration = _ref$duration === void 0 ? 24 : _ref$duration,
11
38
  shouldMarquee = _ref.shouldMarquee;
12
- if (!shouldMarquee) {
39
+ var reducedMotion = usePrefersReducedMotion();
40
+ var useMarquee = shouldMarquee && !reducedMotion;
41
+ if (!useMarquee) {
13
42
  return /*#__PURE__*/React.createElement("div", {
14
43
  className: "pisell-resource-wall-note-marquee-static",
15
44
  style: {
16
45
  color: color
17
- }
46
+ },
47
+ title: text
18
48
  }, text);
19
49
  }
20
50
  return /*#__PURE__*/React.createElement("div", {
21
- className: "pisell-resource-wall-note-marquee-wrap"
51
+ className: "pisell-resource-wall-note-marquee-wrap",
52
+ "aria-hidden": true
22
53
  }, /*#__PURE__*/React.createElement("div", {
23
54
  className: "pisell-resource-wall-note-marquee-track",
24
55
  style: {
25
56
  animationDuration: "".concat(duration, "s"),
26
57
  color: color
27
58
  }
28
- }, /*#__PURE__*/React.createElement("div", {
29
- className: "pisell-resource-wall-note-marquee-copy"
30
- }, text), /*#__PURE__*/React.createElement("div", {
31
- className: "pisell-resource-wall-note-marquee-copy",
32
- "aria-hidden": "true"
33
- }, text), /*#__PURE__*/React.createElement("div", {
34
- className: "pisell-resource-wall-note-marquee-copy",
35
- "aria-hidden": "true"
36
- }, text)));
59
+ }, Array.from({
60
+ length: MARQUEE_COPY_COUNT
61
+ }, function (_, i) {
62
+ return /*#__PURE__*/React.createElement("div", {
63
+ key: i,
64
+ className: "pisell-resource-wall-note-marquee-copy"
65
+ }, text);
66
+ })));
37
67
  });
@@ -4,7 +4,9 @@ import './ResourceWallViewport.less';
4
4
  /** 与 {@link RecordBoardResourceWallProps.filterFieldKey} 默认一致 */
5
5
  export declare const DEFAULT_RESOURCE_WALL_FILTER_FIELD_KEY = "resource_wall_resource_ids";
6
6
  /**
7
- * 大屏资源墙主视口:卡片数据来自 props;可见资源 id 来自
8
- * `searchParams.filter.values[filterFieldKey]` 与 `cards[].resourceId` 交集。
7
+ * RecordBoard 大屏资源墙主视口:`cards` 提供全量卡数据;可见列表由
8
+ * `searchParams.filter.values[filterFieldKey]` 中的资源 id 与 `cards` 交集决定。
9
+ * 若 ToolBar `searchParams.sort` 指向状态列(默认字段名 `status`),则按占用态重排展示顺序。
10
+ * 支持网格分页轮播、浅深外观、伪全屏与控制台(布局 / 配色 / 选中资源)。
9
11
  */
10
12
  export declare const PisellRecordBoardResourceWallView: React.FC<RecordBoardResourceWallProps>;