@pisell/materials 6.11.28 → 6.11.30

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 (297) 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 +16 -16
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +16 -16
  11. package/es/components/PisellCards/components/GraphicTextCard/GraphicTextCard.d.ts +0 -1
  12. package/es/components/PisellCards/index.d.ts +0 -1
  13. package/es/components/PisellFields/index.d.ts +0 -1
  14. package/es/components/PisellMetrics/index.d.ts +0 -1
  15. package/es/components/appVersionControl/index.d.ts +0 -1
  16. package/es/components/auto-complete-number/index.d.ts +0 -1
  17. package/es/components/badge/index.d.ts +0 -1
  18. package/es/components/batch-editor/fields/index.d.ts +0 -1
  19. package/es/components/batch-editor/index.d.ts +0 -1
  20. package/es/components/calendar/index.d.ts +0 -1
  21. package/es/components/checkbox/index.d.ts +0 -1
  22. package/es/components/classicLayout/index.d.ts +0 -1
  23. package/es/components/colorPicker/index.d.ts +0 -1
  24. package/es/components/dataSourceComponents/dataSourceTable/hooks/useDrawerState.d.ts +0 -1
  25. package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +1 -1
  26. package/es/components/dataSourceComponents/fields/ColorPicker/ReadPretty.d.ts +0 -1
  27. package/es/components/dataSourceComponents/fields/DateRangePicker/ReadPretty.d.ts +0 -1
  28. package/es/components/dataSourceComponents/fields/IconSelect/ReadPretty.d.ts +0 -1
  29. package/es/components/dataSourceComponents/fields/Input/ReadPretty.d.ts +0 -1
  30. package/es/components/dataSourceComponents/fields/Input.Email/ReadPretty.d.ts +0 -1
  31. package/es/components/dataSourceComponents/fields/Input.Subdomain/ReadPretty.d.ts +0 -1
  32. package/es/components/dataSourceComponents/fields/Input.TextArea/ReadPretty.d.ts +0 -1
  33. package/es/components/dataSourceComponents/fields/Input.Url/ReadPretty.d.ts +0 -1
  34. package/es/components/dataSourceComponents/fields/RecordListWrapper/index.d.ts +0 -1
  35. package/es/components/dataSourceComponents/fields/Tabs/index.d.ts +0 -1
  36. package/es/components/dataSourceComponents/fields/TimePicker/ReadPretty.d.ts +0 -1
  37. package/es/components/dataSourceComponents/fields/Translation/ReadPretty.d.ts +0 -1
  38. package/es/components/dataSourceComponents/fields/Upload/CameraPopover.d.ts +0 -1
  39. package/es/components/dataSourceComponents/fields/Upload/utils.d.ts +1 -1
  40. package/es/components/dataSourceComponents/fields/index.d.ts +6 -6
  41. package/es/components/drag-sort-tree/TreeItem/index.d.ts +0 -1
  42. package/es/components/drag-sort-tree/index.d.ts +0 -1
  43. package/es/components/dropdown/index.d.ts +0 -1
  44. package/es/components/filter/components/items/index.d.ts +0 -1
  45. package/es/components/filter/components/items/text/Editor/index.d.ts +0 -1
  46. package/es/components/filter/components/items/text/Preview/index.d.ts +0 -1
  47. package/es/components/filter/components/items/text/index.d.ts +0 -1
  48. package/es/components/page/index.d.ts +0 -1
  49. package/es/components/pisellAdjustPrice/PisellAdjustPriceInputNumber.d.ts +0 -1
  50. package/es/components/pisellCard/index.d.ts +0 -1
  51. package/es/components/pisellDatePicker/index.d.ts +0 -1
  52. package/es/components/pisellFilter/index.d.ts +0 -1
  53. package/es/components/pisellInformationEntry/Scan/index.d.ts +0 -1
  54. package/es/components/pisellInput/index.d.ts +0 -1
  55. package/es/components/pisellRecordBoard/PisellRecordBoard.js +8 -5
  56. package/es/components/pisellRecordBoard/index.d.ts +7 -2
  57. package/es/components/pisellRecordBoard/index.js +4 -2
  58. package/es/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendarDemo.js +324 -312
  59. package/es/components/pisellRecordBoard/shellFrame/Calendar/calendarPersistGuard.d.ts +18 -0
  60. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.d.ts +13 -0
  61. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.js +37 -0
  62. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.d.ts +9 -0
  63. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.js +157 -0
  64. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/RecordBoardResourceWall.d.ts +8 -0
  65. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/RecordBoardResourceWall.js +9 -0
  66. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.d.ts +14 -0
  67. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.js +513 -0
  68. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallMarquee.less +52 -0
  69. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.d.ts +14 -0
  70. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.js +82 -0
  71. package/es/components/pisellRecordBoard/shellFrame/ShellBodyMetaContext.d.ts +5 -2
  72. package/es/components/pisellRecordBoard/shellFrame/ToolBar/index.js +58 -19
  73. package/es/components/pisellRecordBoard/shellFrame/ToolBar/recordBoardToolbar.less +5 -3
  74. package/es/components/pisellRecordBoard/shellFrame/index.d.ts +4 -3
  75. package/es/components/pisellRecordBoard/shellFrame/index.js +49 -11
  76. package/es/components/pisellRecordBoard/types.d.ts +78 -2
  77. package/es/components/pisellRecordBoard/utils/partitionShellFrameChildren.d.ts +5 -2
  78. package/es/components/pisellRecordBoard/utils/partitionShellFrameChildren.js +18 -0
  79. package/es/components/pisellReservationSchedule/locales.d.ts +43 -0
  80. package/es/components/pisellReservationSchedule/types.d.ts +52 -0
  81. package/es/components/pisellReservationScheduleBand/types.d.ts +61 -0
  82. package/es/components/pisellTimeNavigator/utils/index.d.ts +41 -0
  83. package/es/components/pisellUpload/index.d.ts +0 -1
  84. package/es/components/productCard/cartSkuCard/components/MultiDay/index.d.ts +0 -1
  85. package/es/components/productCard/cartSkuCard/components/resources/index.d.ts +0 -1
  86. package/es/components/productCard/cartSkuCard/components/timeRange/index.d.ts +0 -1
  87. package/es/components/productCard/components/Divider/index.d.ts +0 -1
  88. package/es/components/productCard/components/Header/DeleteButton/index.d.ts +0 -1
  89. package/es/components/productCard/components/Time/components/Like/index.d.ts +0 -1
  90. package/es/components/radio/index.d.ts +0 -1
  91. package/es/components/segmented/index.d.ts +0 -1
  92. package/es/components/select-time/RightPanel/index.d.ts +0 -1
  93. package/es/components/select-time/index.d.ts +0 -1
  94. package/es/components/skeleton/index.d.ts +0 -1
  95. package/es/components/slider/index.d.ts +0 -1
  96. package/es/components/sort/components/InlineMenu/index.d.ts +0 -1
  97. package/es/components/table/Actions/component/ExportImport/components/ExportFile/index.d.ts +0 -1
  98. package/es/components/table/Actions/component/ExportImport/components/ExportTable/index.d.ts +0 -1
  99. package/es/components/table/Actions/component/ExportImport/components/ImportLog/index.d.ts +0 -1
  100. package/es/components/table/Actions/component/ExportImport/components/ImportTable/index.d.ts +0 -1
  101. package/es/components/table/Actions/component/Group/PopoverContent.d.ts +0 -1
  102. package/es/components/table/Actions/component/ViewMode/index.d.ts +0 -1
  103. package/es/components/table/Summary/index.d.ts +0 -1
  104. package/es/components/table/Table/fields/date/Config/index.d.ts +0 -1
  105. package/es/components/table/Table/fields/date/Sort/index.d.ts +0 -1
  106. package/es/components/table/Table/fields/image/Config/index.d.ts +0 -1
  107. package/es/components/table/Table/fields/image/Sort/index.d.ts +0 -1
  108. package/es/components/table/Table/fields/image/index.d.ts +0 -1
  109. package/es/components/table/Table/fields/index.d.ts +2 -2
  110. package/es/components/table/Table/fields/link/Config/index.d.ts +0 -1
  111. package/es/components/table/Table/fields/link/Sort/index.d.ts +0 -1
  112. package/es/components/table/Table/fields/link/index.d.ts +0 -1
  113. package/es/components/table/Table/fields/number/Config/index.d.ts +0 -1
  114. package/es/components/table/Table/fields/number/Sort/index.d.ts +0 -1
  115. package/es/components/table/Table/fields/numberRange/Config/index.d.ts +0 -1
  116. package/es/components/table/Table/fields/numberRange/Sort/index.d.ts +0 -1
  117. package/es/components/table/Table/fields/oldRangePicker/Config/index.d.ts +0 -1
  118. package/es/components/table/Table/fields/oldRangePicker/Sort/index.d.ts +0 -1
  119. package/es/components/table/Table/fields/pSwitch/Config/index.d.ts +0 -1
  120. package/es/components/table/Table/fields/pSwitch/Sort/index.d.ts +0 -1
  121. package/es/components/table/Table/fields/pSwitch/index.d.ts +0 -1
  122. package/es/components/table/Table/fields/rangePicker/Config/index.d.ts +0 -1
  123. package/es/components/table/Table/fields/rangePicker/Sort/index.d.ts +0 -1
  124. package/es/components/table/Table/fields/search/Config/index.d.ts +0 -1
  125. package/es/components/table/Table/fields/search/Sort/index.d.ts +0 -1
  126. package/es/components/table/Table/fields/select/Config/index.d.ts +0 -1
  127. package/es/components/table/Table/fields/select/Sort/index.d.ts +0 -1
  128. package/es/components/table/Table/fields/text/Config/index.d.ts +0 -1
  129. package/es/components/table/Table/fields/text/Sort/index.d.ts +0 -1
  130. package/es/components/table/Table/fields/treeSelect/Config/index.d.ts +0 -1
  131. package/es/components/table/Table/fields/treeSelect/Sort/index.d.ts +0 -1
  132. package/es/components/table/Table/tableConfig/summary/index.d.ts +0 -1
  133. package/es/components/table/Table/utils.d.ts +1 -1
  134. package/es/components/table/TableFilter/SortIcon.d.ts +0 -1
  135. package/es/components/time-picker/index.d.ts +0 -1
  136. package/es/components/upload/index.d.ts +0 -1
  137. package/es/components/versionSelect/index.d.ts +0 -1
  138. package/es/components/virtual-keyboard/Time/utils.d.ts +0 -1
  139. package/es/components/walletCard/Guest/index.d.ts +0 -1
  140. package/es/components/walletCard/Guide/index.d.ts +0 -1
  141. package/es/index.d.ts +2 -1
  142. package/es/index.js +1 -0
  143. package/es/locales/en-US.d.ts +389 -0
  144. package/es/locales/en-US.js +1 -0
  145. package/es/locales/ja.d.ts +358 -0
  146. package/es/locales/ja.js +1 -0
  147. package/es/locales/pt.d.ts +358 -0
  148. package/es/locales/pt.js +1 -0
  149. package/es/locales/zh-CN.d.ts +384 -0
  150. package/es/locales/zh-CN.js +1 -0
  151. package/es/locales/zh-TW.d.ts +384 -0
  152. package/es/locales/zh-TW.js +1 -0
  153. package/es/pisell-materials.tw.css +1 -1
  154. package/lib/components/PisellCards/components/GraphicTextCard/GraphicTextCard.d.ts +0 -1
  155. package/lib/components/PisellCards/index.d.ts +0 -1
  156. package/lib/components/PisellFields/index.d.ts +0 -1
  157. package/lib/components/PisellMetrics/index.d.ts +0 -1
  158. package/lib/components/appVersionControl/index.d.ts +0 -1
  159. package/lib/components/auto-complete-number/index.d.ts +0 -1
  160. package/lib/components/badge/index.d.ts +0 -1
  161. package/lib/components/batch-editor/fields/index.d.ts +0 -1
  162. package/lib/components/batch-editor/index.d.ts +0 -1
  163. package/lib/components/calendar/index.d.ts +0 -1
  164. package/lib/components/checkbox/index.d.ts +0 -1
  165. package/lib/components/classicLayout/index.d.ts +0 -1
  166. package/lib/components/colorPicker/index.d.ts +0 -1
  167. package/lib/components/dataSourceComponents/dataSourceTable/hooks/useDrawerState.d.ts +0 -1
  168. package/lib/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +1 -1
  169. package/lib/components/dataSourceComponents/fields/ColorPicker/ReadPretty.d.ts +0 -1
  170. package/lib/components/dataSourceComponents/fields/DateRangePicker/ReadPretty.d.ts +0 -1
  171. package/lib/components/dataSourceComponents/fields/IconSelect/ReadPretty.d.ts +0 -1
  172. package/lib/components/dataSourceComponents/fields/Input/ReadPretty.d.ts +0 -1
  173. package/lib/components/dataSourceComponents/fields/Input.Email/ReadPretty.d.ts +0 -1
  174. package/lib/components/dataSourceComponents/fields/Input.Subdomain/ReadPretty.d.ts +0 -1
  175. package/lib/components/dataSourceComponents/fields/Input.TextArea/ReadPretty.d.ts +0 -1
  176. package/lib/components/dataSourceComponents/fields/Input.Url/ReadPretty.d.ts +0 -1
  177. package/lib/components/dataSourceComponents/fields/RecordListWrapper/index.d.ts +0 -1
  178. package/lib/components/dataSourceComponents/fields/Tabs/index.d.ts +0 -1
  179. package/lib/components/dataSourceComponents/fields/TimePicker/ReadPretty.d.ts +0 -1
  180. package/lib/components/dataSourceComponents/fields/Translation/ReadPretty.d.ts +0 -1
  181. package/lib/components/dataSourceComponents/fields/Upload/CameraPopover.d.ts +0 -1
  182. package/lib/components/dataSourceComponents/fields/Upload/utils.d.ts +1 -1
  183. package/lib/components/dataSourceComponents/fields/index.d.ts +6 -6
  184. package/lib/components/drag-sort-tree/TreeItem/index.d.ts +0 -1
  185. package/lib/components/drag-sort-tree/index.d.ts +0 -1
  186. package/lib/components/dropdown/index.d.ts +0 -1
  187. package/lib/components/filter/components/items/index.d.ts +0 -1
  188. package/lib/components/filter/components/items/text/Editor/index.d.ts +0 -1
  189. package/lib/components/filter/components/items/text/Preview/index.d.ts +0 -1
  190. package/lib/components/filter/components/items/text/index.d.ts +0 -1
  191. package/lib/components/page/index.d.ts +0 -1
  192. package/lib/components/pisellAdjustPrice/PisellAdjustPriceInputNumber.d.ts +0 -1
  193. package/lib/components/pisellCard/index.d.ts +0 -1
  194. package/lib/components/pisellDatePicker/index.d.ts +0 -1
  195. package/lib/components/pisellFilter/index.d.ts +0 -1
  196. package/lib/components/pisellInformationEntry/Scan/index.d.ts +0 -1
  197. package/lib/components/pisellInput/index.d.ts +0 -1
  198. package/lib/components/pisellRecordBoard/PisellRecordBoard.js +8 -3
  199. package/lib/components/pisellRecordBoard/index.d.ts +7 -2
  200. package/lib/components/pisellRecordBoard/index.js +4 -0
  201. package/lib/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendarDemo.js +143 -215
  202. package/lib/components/pisellRecordBoard/shellFrame/Calendar/calendarPersistGuard.d.ts +18 -0
  203. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.d.ts +13 -0
  204. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.js +60 -0
  205. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.d.ts +9 -0
  206. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.js +163 -0
  207. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/RecordBoardResourceWall.d.ts +8 -0
  208. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/RecordBoardResourceWall.js +27 -0
  209. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.d.ts +14 -0
  210. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.js +636 -0
  211. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallMarquee.less +52 -0
  212. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.d.ts +14 -0
  213. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.js +110 -0
  214. package/lib/components/pisellRecordBoard/shellFrame/ShellBodyMetaContext.d.ts +5 -2
  215. package/lib/components/pisellRecordBoard/shellFrame/ToolBar/index.js +45 -14
  216. package/lib/components/pisellRecordBoard/shellFrame/ToolBar/recordBoardToolbar.less +5 -3
  217. package/lib/components/pisellRecordBoard/shellFrame/index.d.ts +4 -3
  218. package/lib/components/pisellRecordBoard/shellFrame/index.js +57 -7
  219. package/lib/components/pisellRecordBoard/types.d.ts +78 -2
  220. package/lib/components/pisellRecordBoard/utils/partitionShellFrameChildren.d.ts +5 -2
  221. package/lib/components/pisellRecordBoard/utils/partitionShellFrameChildren.js +18 -0
  222. package/lib/components/pisellReservationSchedule/locales.d.ts +43 -0
  223. package/lib/components/pisellReservationSchedule/types.d.ts +52 -0
  224. package/lib/components/pisellReservationScheduleBand/types.d.ts +61 -0
  225. package/lib/components/pisellTimeNavigator/utils/index.d.ts +41 -0
  226. package/lib/components/pisellUpload/index.d.ts +0 -1
  227. package/lib/components/productCard/cartSkuCard/components/MultiDay/index.d.ts +0 -1
  228. package/lib/components/productCard/cartSkuCard/components/resources/index.d.ts +0 -1
  229. package/lib/components/productCard/cartSkuCard/components/timeRange/index.d.ts +0 -1
  230. package/lib/components/productCard/components/Divider/index.d.ts +0 -1
  231. package/lib/components/productCard/components/Header/DeleteButton/index.d.ts +0 -1
  232. package/lib/components/productCard/components/Time/components/Like/index.d.ts +0 -1
  233. package/lib/components/radio/index.d.ts +0 -1
  234. package/lib/components/segmented/index.d.ts +0 -1
  235. package/lib/components/select-time/RightPanel/index.d.ts +0 -1
  236. package/lib/components/select-time/index.d.ts +0 -1
  237. package/lib/components/skeleton/index.d.ts +0 -1
  238. package/lib/components/slider/index.d.ts +0 -1
  239. package/lib/components/sort/components/InlineMenu/index.d.ts +0 -1
  240. package/lib/components/table/Actions/component/ExportImport/components/ExportFile/index.d.ts +0 -1
  241. package/lib/components/table/Actions/component/ExportImport/components/ExportTable/index.d.ts +0 -1
  242. package/lib/components/table/Actions/component/ExportImport/components/ImportLog/index.d.ts +0 -1
  243. package/lib/components/table/Actions/component/ExportImport/components/ImportTable/index.d.ts +0 -1
  244. package/lib/components/table/Actions/component/Group/PopoverContent.d.ts +0 -1
  245. package/lib/components/table/Actions/component/ViewMode/index.d.ts +0 -1
  246. package/lib/components/table/Summary/index.d.ts +0 -1
  247. package/lib/components/table/Table/fields/date/Config/index.d.ts +0 -1
  248. package/lib/components/table/Table/fields/date/Sort/index.d.ts +0 -1
  249. package/lib/components/table/Table/fields/image/Config/index.d.ts +0 -1
  250. package/lib/components/table/Table/fields/image/Sort/index.d.ts +0 -1
  251. package/lib/components/table/Table/fields/image/index.d.ts +0 -1
  252. package/lib/components/table/Table/fields/index.d.ts +2 -2
  253. package/lib/components/table/Table/fields/link/Config/index.d.ts +0 -1
  254. package/lib/components/table/Table/fields/link/Sort/index.d.ts +0 -1
  255. package/lib/components/table/Table/fields/link/index.d.ts +0 -1
  256. package/lib/components/table/Table/fields/number/Config/index.d.ts +0 -1
  257. package/lib/components/table/Table/fields/number/Sort/index.d.ts +0 -1
  258. package/lib/components/table/Table/fields/numberRange/Config/index.d.ts +0 -1
  259. package/lib/components/table/Table/fields/numberRange/Sort/index.d.ts +0 -1
  260. package/lib/components/table/Table/fields/oldRangePicker/Config/index.d.ts +0 -1
  261. package/lib/components/table/Table/fields/oldRangePicker/Sort/index.d.ts +0 -1
  262. package/lib/components/table/Table/fields/pSwitch/Config/index.d.ts +0 -1
  263. package/lib/components/table/Table/fields/pSwitch/Sort/index.d.ts +0 -1
  264. package/lib/components/table/Table/fields/pSwitch/index.d.ts +0 -1
  265. package/lib/components/table/Table/fields/rangePicker/Config/index.d.ts +0 -1
  266. package/lib/components/table/Table/fields/rangePicker/Sort/index.d.ts +0 -1
  267. package/lib/components/table/Table/fields/search/Config/index.d.ts +0 -1
  268. package/lib/components/table/Table/fields/search/Sort/index.d.ts +0 -1
  269. package/lib/components/table/Table/fields/select/Config/index.d.ts +0 -1
  270. package/lib/components/table/Table/fields/select/Sort/index.d.ts +0 -1
  271. package/lib/components/table/Table/fields/text/Config/index.d.ts +0 -1
  272. package/lib/components/table/Table/fields/text/Sort/index.d.ts +0 -1
  273. package/lib/components/table/Table/fields/treeSelect/Config/index.d.ts +0 -1
  274. package/lib/components/table/Table/fields/treeSelect/Sort/index.d.ts +0 -1
  275. package/lib/components/table/Table/tableConfig/summary/index.d.ts +0 -1
  276. package/lib/components/table/Table/utils.d.ts +1 -1
  277. package/lib/components/table/TableFilter/SortIcon.d.ts +0 -1
  278. package/lib/components/time-picker/index.d.ts +0 -1
  279. package/lib/components/upload/index.d.ts +0 -1
  280. package/lib/components/versionSelect/index.d.ts +0 -1
  281. package/lib/components/virtual-keyboard/Time/utils.d.ts +0 -1
  282. package/lib/components/walletCard/Guest/index.d.ts +0 -1
  283. package/lib/components/walletCard/Guide/index.d.ts +0 -1
  284. package/lib/index.d.ts +2 -1
  285. package/lib/index.js +5 -0
  286. package/lib/locales/en-US.d.ts +389 -0
  287. package/lib/locales/en-US.js +1 -0
  288. package/lib/locales/ja.d.ts +358 -0
  289. package/lib/locales/ja.js +1 -0
  290. package/lib/locales/pt.d.ts +358 -0
  291. package/lib/locales/pt.js +1 -0
  292. package/lib/locales/zh-CN.d.ts +384 -0
  293. package/lib/locales/zh-CN.js +1 -0
  294. package/lib/locales/zh-TW.d.ts +384 -0
  295. package/lib/locales/zh-TW.js +1 -0
  296. package/lib/pisell-materials.tw.css +1 -1
  297. package/package.json +3 -3
@@ -35,10 +35,12 @@ module.exports = __toCommonJS(BookingCalendarDemo_exports);
35
35
  var import_react = __toESM(require("react"));
36
36
  var import_antd = require("antd");
37
37
  var import_react_window = require("react-window");
38
+ var import_dayjs = __toESM(require("dayjs"));
38
39
  var import_utils = require("../../../pisellTimeNavigator/utils");
39
40
  var import_pisellDateTimeDisplay = require("../../../pisellDateTimeDisplay");
40
41
  var import_calendarPersistGuard = require("./calendarPersistGuard");
41
42
  var import_lucide_react = require("lucide-react");
43
+ var { RangePicker } = import_antd.DatePicker;
42
44
  function omitMotionOnlyProps(props) {
43
45
  const {
44
46
  initial: _i,
@@ -77,7 +79,6 @@ var DEFAULT_COURTS = [
77
79
  { id: "normal6", name: "Standard Court 6", type: "Standard" }
78
80
  ];
79
81
  var weekdayNames = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];
80
- var weekdaysMap = [1, 2, 3, 4, 5, 6, 0];
81
82
  var timeSliceMinutes = 60;
82
83
  var DEFAULT_CALENDAR_TIMELINE = { start: "02:00", end: "02:00" };
83
84
  var frozenColWidth = 132;
@@ -528,6 +529,15 @@ function courtDaySummary(courtId, dateKey, bookings, hourSlots, slotStepHours) {
528
529
  function sameSlot(a, b) {
529
530
  return a.courtId === b.courtId && a.date === b.date && a.hour === b.hour;
530
531
  }
532
+ function dayAndHourToDayjs(dateStr, hourFloat) {
533
+ const h = Math.floor(hourFloat);
534
+ const m = Math.round((hourFloat - h) * 60);
535
+ const mm = Math.min(59, Math.max(0, m));
536
+ return (0, import_dayjs.default)(
537
+ `${dateStr} ${String(h).padStart(2, "0")}:${String(mm).padStart(2, "0")}`,
538
+ "YYYY-MM-DD HH:mm"
539
+ );
540
+ }
531
541
  function statusTagMeta(tag) {
532
542
  switch (tag) {
533
543
  case "cancel":
@@ -1819,7 +1829,7 @@ function BookingCard({
1819
1829
  );
1820
1830
  }
1821
1831
  function BookingCalendarDemo(props = {}) {
1822
- var _a, _b, _c, _d, _e, _f, _g;
1832
+ var _a, _b, _c, _d, _e;
1823
1833
  const allowPersist = (0, import_calendarPersistGuard.useCalendarPersist)();
1824
1834
  const courts = (0, import_react.useMemo)(() => {
1825
1835
  const r = props.resources;
@@ -1895,12 +1905,11 @@ function BookingCalendarDemo(props = {}) {
1895
1905
  const [selectedBlockSlots, setSelectedBlockSlots] = (0, import_react.useState)([]);
1896
1906
  const [focusedCourtId, setFocusedCourtId] = (0, import_react.useState)(null);
1897
1907
  const [showBlockPanel, setShowBlockPanel] = (0, import_react.useState)(false);
1898
- const [blockNote, setBlockNote] = (0, import_react.useState)("");
1899
- const [blockBy, setBlockBy] = (0, import_react.useState)("Allen");
1900
- const [blockMode, setBlockMode] = (0, import_react.useState)("single");
1901
- const [blockRangeStart, setBlockRangeStart] = (0, import_react.useState)("2026-03-31");
1902
- const [blockRangeEnd, setBlockRangeEnd] = (0, import_react.useState)("2026-04-30");
1903
- const [blockWeekdays, setBlockWeekdays] = (0, import_react.useState)([3]);
1908
+ const [blockFormName, setBlockFormName] = (0, import_react.useState)("屏蔽时间");
1909
+ const [blockModalNote, setBlockModalNote] = (0, import_react.useState)("");
1910
+ const [blockResourceId, setBlockResourceId] = (0, import_react.useState)("");
1911
+ const [blockTimeRange, setBlockTimeRange] = (0, import_react.useState)(null);
1912
+ const [blockSaving, setBlockSaving] = (0, import_react.useState)(false);
1904
1913
  const [transitioningToDay, setTransitioningToDay] = (0, import_react.useState)(null);
1905
1914
  const [navDirection, setNavDirection] = (0, import_react.useState)(0);
1906
1915
  const [detailItem, setDetailItem] = (0, import_react.useState)(null);
@@ -2014,8 +2023,6 @@ function BookingCalendarDemo(props = {}) {
2014
2023
  const detailPrefRef = (0, import_react.useRef)(null);
2015
2024
  const summaryChangeMenuRef = (0, import_react.useRef)(null);
2016
2025
  const noteEditorRef = (0, import_react.useRef)(null);
2017
- const blockStartInputRef = (0, import_react.useRef)(null);
2018
- const blockEndInputRef = (0, import_react.useRef)(null);
2019
2026
  const visibleCourts = (0, import_react.useMemo)(() => courts, [courts]);
2020
2027
  const visibleCourtRows = (0, import_react.useMemo)(
2021
2028
  () => buildGroupedCourtRows(visibleCourts, collapsedGroups),
@@ -2447,11 +2454,6 @@ function BookingCalendarDemo(props = {}) {
2447
2454
  }, 180);
2448
2455
  return () => clearTimeout(timer);
2449
2456
  }, [view, focusedCourtId, anchorDate]);
2450
- (0, import_react.useEffect)(() => {
2451
- if (!showBlockPanel) return;
2452
- setBlockRangeStart(dayKey);
2453
- setBlockRangeEnd(dayKey);
2454
- }, [showBlockPanel, dayKey]);
2455
2457
  (0, import_react.useEffect)(() => {
2456
2458
  if (!showBlockPanel) return;
2457
2459
  if (!isFreeSelectionContiguousSameResource(
@@ -2461,6 +2463,19 @@ function BookingCalendarDemo(props = {}) {
2461
2463
  setShowBlockPanel(false);
2462
2464
  }
2463
2465
  }, [showBlockPanel, selectedFreeSlots, slotStepHours]);
2466
+ (0, import_react.useEffect)(() => {
2467
+ if (!showBlockPanel || selectedFreeSlots.length === 0) return;
2468
+ const groups = groupSelectedSlots(selectedFreeSlots, slotStepHours);
2469
+ const g = groups[0];
2470
+ if (!g) return;
2471
+ setBlockResourceId(String(g.courtId));
2472
+ setBlockTimeRange([
2473
+ dayAndHourToDayjs(g.date, g.startHour),
2474
+ dayAndHourToDayjs(g.date, g.endHour)
2475
+ ]);
2476
+ setBlockFormName("屏蔽时间");
2477
+ setBlockModalNote("");
2478
+ }, [showBlockPanel, selectedFreeSlots, slotStepHours]);
2464
2479
  (0, import_react.useEffect)(() => {
2465
2480
  if (!transitioningToDay) return;
2466
2481
  const timer = setTimeout(() => setTransitioningToDay(null), 280);
@@ -2577,77 +2592,76 @@ function BookingCalendarDemo(props = {}) {
2577
2592
  );
2578
2593
  setSelectedBlockSlots([]);
2579
2594
  }
2580
- function toggleBlockWeekday(day) {
2581
- setBlockWeekdays(
2582
- (prev) => prev.includes(day) ? prev.filter((d) => d !== day) : [...prev, day]
2583
- );
2584
- }
2585
- function createBlockFromSelection() {
2586
- if (selectedFreeSlots.length === 0) return;
2587
- const baseGroups = groupSelectedSlots(selectedFreeSlots, slotStepHours);
2588
- const nextBlocks = [];
2589
- if (blockMode === "single") {
2590
- baseGroups.forEach((slot, idx) => {
2591
- nextBlocks.push({
2592
- id: `block-single-${slot.courtId}-${slot.date}-${slot.startHour}-${idx}`,
2593
- courtId: slot.courtId,
2594
- date: slot.date,
2595
- startHour: slot.startHour,
2596
- endHour: slot.endHour,
2597
- name: blockNote || "Block",
2598
- note: blockNote || "",
2599
- blockBy,
2600
- blockedAt: dayKey,
2601
- kind: "block"
2602
- });
2603
- });
2604
- } else {
2605
- const start = parseDate(blockRangeStart);
2606
- const end = parseDate(blockRangeEnd);
2607
- const baseByKey = /* @__PURE__ */ new Map();
2608
- baseGroups.forEach(
2609
- (slot) => baseByKey.set(
2610
- `${slot.courtId}-${slot.startHour}-${slot.endHour}`,
2611
- slot
2612
- )
2613
- );
2614
- for (let d = new Date(start); d <= end; d = addDays(d, 1)) {
2615
- if (!blockWeekdays.includes(d.getDay())) continue;
2616
- const dateKey = fmtDate(d);
2617
- baseByKey.forEach((slot) => {
2618
- nextBlocks.push({
2619
- id: `block-repeat-${slot.courtId}-${dateKey}-${slot.startHour}-${slot.endHour}`,
2620
- courtId: slot.courtId,
2621
- date: dateKey,
2622
- startHour: slot.startHour,
2623
- endHour: slot.endHour,
2624
- name: blockNote || "Block",
2625
- note: blockNote || "",
2626
- blockBy,
2627
- blockedAt: dayKey,
2628
- kind: "block"
2629
- });
2630
- });
2595
+ async function saveBlockedTime() {
2596
+ if (!(blockTimeRange == null ? void 0 : blockTimeRange[0]) || !(blockTimeRange == null ? void 0 : blockTimeRange[1])) {
2597
+ import_antd.message.warning("请选择屏蔽时段");
2598
+ return;
2599
+ }
2600
+ const [start, end] = blockTimeRange;
2601
+ if (!end.isAfter(start)) {
2602
+ import_antd.message.warning("结束时间须晚于开始时间");
2603
+ return;
2604
+ }
2605
+ const rid = Number(blockResourceId);
2606
+ if (!Number.isFinite(rid) || rid <= 0) {
2607
+ import_antd.message.warning("请选择资源");
2608
+ return;
2609
+ }
2610
+ const channels = props.blockedTimeSalesChannels ?? ["online_store"];
2611
+ const payload = {
2612
+ name: (blockFormName || "").trim() || "屏蔽时间",
2613
+ note: (blockModalNote || "").trim(),
2614
+ resource_ids: [rid],
2615
+ blocked_sales_channels: channels,
2616
+ start_time: start.format("YYYY-MM-DD HH:mm"),
2617
+ end_time: end.format("YYYY-MM-DD HH:mm")
2618
+ };
2619
+ if (props.onBlockedTimeSave) {
2620
+ setBlockSaving(true);
2621
+ try {
2622
+ const ok = await props.onBlockedTimeSave(payload);
2623
+ if (ok === false) return;
2624
+ setShowBlockPanel(false);
2625
+ setSelectedFreeSlots([]);
2626
+ setBlockModalNote("");
2627
+ } finally {
2628
+ setBlockSaving(false);
2631
2629
  }
2630
+ return;
2632
2631
  }
2633
- const conflicts = nextBlocks.flatMap(
2634
- (blk) => overlappingBookings(
2635
- bookings,
2636
- blk.courtId,
2637
- blk.date,
2638
- blk.startHour,
2639
- blk.endHour
2640
- )
2632
+ const courtId = String(blockResourceId);
2633
+ const date = start.format("YYYY-MM-DD");
2634
+ const endDate = end.format("YYYY-MM-DD");
2635
+ const startHour = start.hour() + start.minute() / 60;
2636
+ const endHour = end.hour() + end.minute() / 60;
2637
+ const nextBlock = {
2638
+ id: `block-local-${courtId}-${date}-${startHour}-${Date.now()}`,
2639
+ courtId,
2640
+ date,
2641
+ endDate: endDate !== date ? endDate : void 0,
2642
+ startHour,
2643
+ endHour,
2644
+ name: payload.name,
2645
+ note: payload.note,
2646
+ blockedAt: date,
2647
+ kind: "block"
2648
+ };
2649
+ const conflicts = overlappingBookings(
2650
+ bookings,
2651
+ courtId,
2652
+ date,
2653
+ startHour,
2654
+ endDate === date ? endHour : 24
2641
2655
  );
2642
2656
  if (conflicts.length > 0) {
2643
- setBlockConflict({ nextBlocks, conflicts });
2657
+ setBlockConflict({ nextBlocks: [nextBlock], conflicts });
2644
2658
  return;
2645
2659
  }
2646
2660
  if (!allowPersist("createBlock")) return;
2647
- setBookings((prev) => [...nextBlocks, ...prev]);
2661
+ setBookings((prev) => [nextBlock, ...prev]);
2648
2662
  setSelectedFreeSlots([]);
2649
2663
  setShowBlockPanel(false);
2650
- setBlockNote("");
2664
+ setBlockModalNote("");
2651
2665
  }
2652
2666
  function confirmBlockWithUnsetCourts() {
2653
2667
  if (!blockConflict) return;
@@ -2789,6 +2803,7 @@ function BookingCalendarDemo(props = {}) {
2789
2803
  [key]: { ...prev[key] || {}, [filesSubtab]: true }
2790
2804
  }));
2791
2805
  }, [detailItem, detailMode, detailTab, filesSubtab]);
2806
+ console.log(visibleCourtRows, "visibleCourtRows1234", visibleCourts, collapsedGroups);
2792
2807
  return /* @__PURE__ */ import_react.default.createElement(
2793
2808
  import_antd.Spin,
2794
2809
  {
@@ -3935,192 +3950,105 @@ function BookingCalendarDemo(props = {}) {
3935
3950
  exit: { scale: 0.96, y: 10 },
3936
3951
  className: `w-full max-w-[720px] max-h-[92vh] overflow-y-auto rounded-t-3xl md:rounded-3xl border p-4 md:p-6 shadow-2xl ${isLight ? "theme-panel theme-border soft-shadow" : "border-zinc-700 bg-[#121217]"}`
3937
3952
  },
3938
- /* @__PURE__ */ import_react.default.createElement("div", { className: "mb-4 flex items-center justify-between" }, /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement("div", { className: "text-xl font-semibold" }, "Block settings"), /* @__PURE__ */ import_react.default.createElement(
3939
- "div",
3940
- {
3941
- className: `mt-1 text-sm ${isLight ? "theme-text-muted" : "text-zinc-400"}`
3942
- },
3943
- "Selected time range:",
3944
- " ",
3945
- selectedFreeSlots.length > 0 ? `${formatHourLabel((_d = groupSelectedSlots(selectedFreeSlots, slotStepHours)[0]) == null ? void 0 : _d.startHour)} - ${formatHourLabel((_e = groupSelectedSlots(selectedFreeSlots, slotStepHours)[0]) == null ? void 0 : _e.endHour)}` : "-"
3946
- )), /* @__PURE__ */ import_react.default.createElement(
3953
+ /* @__PURE__ */ import_react.default.createElement("div", { className: "mb-4 flex items-center justify-between gap-3" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "text-xl font-semibold" }, "新建屏蔽时间"), /* @__PURE__ */ import_react.default.createElement(
3947
3954
  "button",
3948
3955
  {
3956
+ type: "button",
3957
+ "aria-label": "关闭",
3949
3958
  onClick: () => setShowBlockPanel(false),
3950
- className: `rounded-xl px-3 py-2 ${isLight ? "btn-neutral" : "border border-zinc-700 text-zinc-300 hover:bg-zinc-800"}`
3959
+ className: `rounded-xl p-2 ${isLight ? "btn-neutral" : "border border-zinc-700 text-zinc-300 hover:bg-zinc-800"}`
3951
3960
  },
3952
- "Close"
3953
- )),
3954
- /* @__PURE__ */ import_react.default.createElement("div", { className: "mb-5 grid gap-3 md:gap-4 md:grid-cols-2" }, /* @__PURE__ */ import_react.default.createElement(
3955
- "button",
3956
- {
3957
- onClick: () => setBlockMode("single"),
3958
- className: `rounded-2xl border p-4 text-left ${blockMode === "single" ? isLight ? "theme-brand-surface border-[var(--brand-light)]" : "border-violet-500 bg-violet-500/10" : isLight ? "theme-panel-alt theme-border" : "border-zinc-700 bg-[#171820]"}`
3959
- },
3960
- /* @__PURE__ */ import_react.default.createElement("div", { className: "font-semibold" }, "Only selected date"),
3961
- /* @__PURE__ */ import_react.default.createElement(
3962
- "div",
3963
- {
3964
- className: `mt-1 text-sm ${isLight ? "theme-text-muted" : "text-zinc-400"}`
3965
- },
3966
- "Create a block only for the currently selected date and time range."
3967
- )
3968
- ), /* @__PURE__ */ import_react.default.createElement(
3969
- "button",
3970
- {
3971
- onClick: () => setBlockMode("repeat"),
3972
- className: `rounded-2xl border p-4 text-left ${blockMode === "repeat" ? isLight ? "theme-brand-surface border-[var(--brand-light)]" : "border-violet-500 bg-violet-500/10" : isLight ? "theme-panel-alt theme-border" : "border-zinc-700 bg-[#171820]"}`
3973
- },
3974
- /* @__PURE__ */ import_react.default.createElement("div", { className: "font-semibold" }, "Every matching date"),
3975
- /* @__PURE__ */ import_react.default.createElement(
3976
- "div",
3977
- {
3978
- className: `mt-1 text-sm ${isLight ? "theme-text-muted" : "text-zinc-400"}`
3979
- },
3980
- "Create repeating blocks by date range and weekday rules."
3981
- )
3961
+ /* @__PURE__ */ import_react.default.createElement(import_lucide_react.X, { size: 20 })
3982
3962
  )),
3983
3963
  /* @__PURE__ */ import_react.default.createElement(
3984
3964
  "div",
3985
3965
  {
3986
3966
  className: `space-y-4 rounded-2xl border p-4 ${isLight ? "theme-panel-alt theme-border" : "border-zinc-700 bg-[#171820]"}`
3987
3967
  },
3988
- /* @__PURE__ */ import_react.default.createElement("div", { className: "grid gap-3 md:grid-cols-2" }, /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(
3968
+ /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(
3989
3969
  "label",
3990
3970
  {
3991
3971
  className: `mb-2 block text-sm ${isLight ? "theme-text-muted" : "text-zinc-400"}`
3992
3972
  },
3993
- "Block note"
3973
+ "标题"
3994
3974
  ), /* @__PURE__ */ import_react.default.createElement(
3995
3975
  "input",
3996
3976
  {
3997
- value: blockNote,
3998
- onChange: (e) => setBlockNote(e.target.value),
3999
- placeholder: "For example: Team event",
3977
+ value: blockFormName,
3978
+ onChange: (e) => setBlockFormName(e.target.value),
3979
+ placeholder: "屏蔽时间",
4000
3980
  className: `w-full rounded-xl px-3 py-2 outline-none ${isLight ? "theme-input theme-text" : "border border-zinc-700 bg-[#111218] text-white"}`
4001
3981
  }
4002
- )), /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(
3982
+ )),
3983
+ /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(
4003
3984
  "label",
4004
3985
  {
4005
3986
  className: `mb-2 block text-sm ${isLight ? "theme-text-muted" : "text-zinc-400"}`
4006
3987
  },
4007
- "Blocked by"
3988
+ "备注"
4008
3989
  ), /* @__PURE__ */ import_react.default.createElement(
4009
3990
  "input",
4010
3991
  {
4011
- value: blockBy,
4012
- onChange: (e) => setBlockBy(e.target.value),
4013
- placeholder: "For example: Allen",
4014
- className: "w-full rounded-xl border border-zinc-700 bg-[#111218] px-3 py-2 text-white outline-none"
3992
+ value: blockModalNote,
3993
+ onChange: (e) => setBlockModalNote(e.target.value),
3994
+ placeholder: "选填",
3995
+ className: `w-full rounded-xl px-3 py-2 outline-none ${isLight ? "theme-input theme-text" : "border border-zinc-700 bg-[#111218] text-white"}`
4015
3996
  }
4016
- ))),
4017
- blockMode === "repeat" && /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement("div", { className: "grid gap-3 md:gap-4 md:grid-cols-2" }, /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(
3997
+ )),
3998
+ /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(
4018
3999
  "label",
4019
4000
  {
4020
4001
  className: `mb-2 block text-sm ${isLight ? "theme-text-muted" : "text-zinc-400"}`
4021
4002
  },
4022
- "Date range - start"
4003
+ "资源"
4023
4004
  ), /* @__PURE__ */ import_react.default.createElement(
4024
- "div",
4005
+ "select",
4025
4006
  {
4026
- className: `flex items-center gap-2 rounded-xl border px-3 py-2 ${isLight ? "theme-input" : "border-zinc-700 bg-[#111218]"}`
4007
+ value: blockResourceId,
4008
+ onChange: (e) => setBlockResourceId(e.target.value),
4009
+ className: `w-full rounded-xl px-3 py-2 outline-none ${isLight ? "theme-input theme-text" : "border border-zinc-700 bg-[#111218] text-white"}`
4027
4010
  },
4028
- /* @__PURE__ */ import_react.default.createElement(
4029
- "input",
4030
- {
4031
- ref: blockStartInputRef,
4032
- type: "date",
4033
- value: blockRangeStart,
4034
- onChange: (e) => setBlockRangeStart(e.target.value),
4035
- className: "w-full bg-transparent outline-none"
4036
- }
4037
- ),
4038
- /* @__PURE__ */ import_react.default.createElement(
4039
- "button",
4040
- {
4041
- type: "button",
4042
- onClick: () => {
4043
- var _a2;
4044
- return (_a2 = blockStartInputRef.current) == null ? void 0 : _a2.focus();
4045
- },
4046
- className: "rounded-lg p-1 hover:bg-zinc-800"
4047
- },
4048
- /* @__PURE__ */ import_react.default.createElement(
4049
- import_lucide_react.CalendarDays,
4050
- {
4051
- size: 18,
4052
- className: "text-zinc-400"
4053
- }
4054
- )
4055
- )
4056
- )), /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(
4011
+ /* @__PURE__ */ import_react.default.createElement("option", { value: "" }, "无资源"),
4012
+ visibleCourts.map((c) => /* @__PURE__ */ import_react.default.createElement("option", { key: c.id, value: String(c.id) }, c.name))
4013
+ )),
4014
+ /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(
4057
4015
  "label",
4058
4016
  {
4059
4017
  className: `mb-2 block text-sm ${isLight ? "theme-text-muted" : "text-zinc-400"}`
4060
4018
  },
4061
- "Date range - end"
4062
- ), /* @__PURE__ */ import_react.default.createElement("div", { className: "flex items-center gap-2 rounded-xl border border-zinc-700 bg-[#111218] px-3 py-2" }, /* @__PURE__ */ import_react.default.createElement(
4063
- "input",
4064
- {
4065
- ref: blockEndInputRef,
4066
- type: "date",
4067
- value: blockRangeEnd,
4068
- onChange: (e) => setBlockRangeEnd(e.target.value),
4069
- className: "w-full bg-transparent outline-none"
4070
- }
4019
+ "屏蔽时段"
4071
4020
  ), /* @__PURE__ */ import_react.default.createElement(
4072
- "button",
4021
+ RangePicker,
4073
4022
  {
4074
- type: "button",
4075
- onClick: () => {
4076
- var _a2;
4077
- return (_a2 = blockEndInputRef.current) == null ? void 0 : _a2.focus();
4023
+ style: { width: "100%" },
4024
+ showTime: {
4025
+ format: "HH:mm",
4026
+ minuteStep: resolvedSlotMinutes >= 60 ? 60 : Math.max(1, resolvedSlotMinutes)
4078
4027
  },
4079
- className: "rounded-lg p-1 hover:bg-zinc-800"
4080
- },
4081
- /* @__PURE__ */ import_react.default.createElement(
4082
- import_lucide_react.CalendarDays,
4083
- {
4084
- size: 18,
4085
- className: "text-zinc-400"
4086
- }
4087
- )
4088
- )))), /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(
4089
- "label",
4090
- {
4091
- className: `mb-2 block text-sm ${isLight ? "theme-text-muted" : "text-zinc-400"}`
4092
- },
4093
- "Weekdays in range"
4094
- ), /* @__PURE__ */ import_react.default.createElement("div", { className: "grid grid-cols-2 gap-2 sm:flex sm:flex-wrap" }, weekdayNames.map((name, idx) => /* @__PURE__ */ import_react.default.createElement(
4095
- "button",
4096
- {
4097
- key: name,
4098
- onClick: () => toggleBlockWeekday(weekdaysMap[idx]),
4099
- className: `rounded-xl px-4 py-2 text-sm ${blockWeekdays.includes(weekdaysMap[idx]) ? "btn-pill-active" : isLight ? "btn-pill-neutral" : "bg-zinc-800 text-zinc-300"}`
4100
- },
4101
- name
4102
- )))), /* @__PURE__ */ import_react.default.createElement(
4103
- "div",
4104
- {
4105
- className: `rounded-xl px-3 py-3 text-sm ${isLight ? "theme-panel theme-border theme-text-muted" : "bg-zinc-900/80 text-zinc-300"}`
4106
- },
4107
- "Example: choose 1 Sep to 1 Oct, then select every Wednesday. The chosen time range will be blocked on all matching Wednesdays."
4028
+ format: "YYYY-MM-DD HH:mm",
4029
+ value: blockTimeRange,
4030
+ onChange: (v) => setBlockTimeRange(v)
4031
+ }
4108
4032
  ))
4109
4033
  ),
4110
4034
  /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-6 flex flex-col-reverse sm:flex-row items-stretch sm:items-center justify-end gap-3" }, /* @__PURE__ */ import_react.default.createElement(
4111
4035
  "button",
4112
4036
  {
4037
+ type: "button",
4038
+ disabled: blockSaving,
4113
4039
  onClick: () => setShowBlockPanel(false),
4114
4040
  className: `rounded-xl px-4 py-2 ${isLight ? "btn-neutral" : "border border-zinc-700 text-zinc-300 hover:bg-zinc-800"}`
4115
4041
  },
4116
- "Cancel"
4042
+ "取消"
4117
4043
  ), /* @__PURE__ */ import_react.default.createElement(
4118
4044
  "button",
4119
4045
  {
4120
- onClick: createBlockFromSelection,
4121
- className: `rounded-xl px-5 py-3 text-sm font-semibold ${isLight ? "btn-brand" : "bg-zinc-500/90 text-white hover:bg-zinc-400"}`
4046
+ type: "button",
4047
+ disabled: blockSaving,
4048
+ onClick: () => void saveBlockedTime(),
4049
+ className: `rounded-xl px-5 py-3 text-sm font-semibold disabled:opacity-50 ${isLight ? "btn-brand" : "bg-violet-600 text-white hover:bg-violet-500"}`
4122
4050
  },
4123
- "Confirm block"
4051
+ blockSaving ? "保存中…" : "保存"
4124
4052
  ))
4125
4053
  )
4126
4054
  )),
@@ -4589,7 +4517,7 @@ function BookingCalendarDemo(props = {}) {
4589
4517
  ref: detailPanelRef
4590
4518
  },
4591
4519
  (() => {
4592
- var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
4520
+ var _a2, _b2, _c2, _d2, _e2, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
4593
4521
  const detail = getBookingDetailData(detailItem, courts);
4594
4522
  const detailWithNoteOverrides = {
4595
4523
  ...detail,
@@ -4614,9 +4542,9 @@ function BookingCalendarDemo(props = {}) {
4614
4542
  const customerCard = selectedCustomer || {
4615
4543
  name: ((_d2 = detail.customer) == null ? void 0 : _d2.name) || detail.headerSummary.customerName,
4616
4544
  phone: (((_e2 = detail.customer) == null ? void 0 : _e2.phone) || "").split(" ").slice(-1)[0] || "0412888999",
4617
- email: ((_f2 = detail.customer) == null ? void 0 : _f2.email) || "tina.wu@pisell.com",
4545
+ email: ((_f = detail.customer) == null ? void 0 : _f.email) || "tina.wu@pisell.com",
4618
4546
  membership: "Gold",
4619
- registeredAt: (((_h = (_g2 = detail.history) == null ? void 0 : _g2[0]) == null ? void 0 : _h.time) || "2026-03-18").slice(0, 10).split("-").join("/")
4547
+ registeredAt: (((_h = (_g = detail.history) == null ? void 0 : _g[0]) == null ? void 0 : _h.time) || "2026-03-18").slice(0, 10).split("-").join("/")
4620
4548
  };
4621
4549
  const tabs = [
4622
4550
  "summary",
@@ -6621,7 +6549,7 @@ function BookingCalendarDemo(props = {}) {
6621
6549
  checkinModal.name,
6622
6550
  " ·",
6623
6551
  " ",
6624
- ((_f = courts.find((c) => c.id === checkinModal.courtId)) == null ? void 0 : _f.name) || "Unassigned"
6552
+ ((_d = courts.find((c) => c.id === checkinModal.courtId)) == null ? void 0 : _d.name) || "Unassigned"
6625
6553
  )), /* @__PURE__ */ import_react.default.createElement(
6626
6554
  "button",
6627
6555
  {
@@ -6823,7 +6751,7 @@ function BookingCalendarDemo(props = {}) {
6823
6751
  mergeOrderModal.item.name,
6824
6752
  " ·",
6825
6753
  " ",
6826
- ((_g = courts.find((c) => c.id === mergeOrderModal.item.courtId)) == null ? void 0 : _g.name) || "Unassigned"
6754
+ ((_e = courts.find((c) => c.id === mergeOrderModal.item.courtId)) == null ? void 0 : _e.name) || "Unassigned"
6827
6755
  )
6828
6756
  ),
6829
6757
  /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-4" }, /* @__PURE__ */ import_react.default.createElement(
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ /** 日历内会改本地预约数据的动作类型,供业务层拦截(如平面图未支持写接口时 toast) */
3
+ export declare type CalendarPersistKind = 'moveBooking' | 'applyConflictMove' | 'createBooking' | 'removeBlocks' | 'createBlock' | 'confirmBlockWithConflicts' | 'checkin' | 'checkinReschedule' | 'mergeOrder' | 'other';
4
+ export interface CalendarPersistContextValue {
5
+ /**
6
+ * 返回 false 时日历组件应取消本次本地数据变更(由调用方决定是否已 toast)。
7
+ * 未提供时默认允许所有本地变更(Story / 独立演示)。
8
+ */
9
+ beforePersist?: (kind: CalendarPersistKind) => boolean;
10
+ }
11
+ export declare const CalendarPersistProvider: React.FC<{
12
+ children: React.ReactNode;
13
+ value?: CalendarPersistContextValue;
14
+ }>;
15
+ /**
16
+ * 在日历 Demo 内判断某类写操作是否允许执行本地 state 更新。
17
+ */
18
+ export declare function useCalendarPersist(): (kind: CalendarPersistKind) => boolean;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import './VenueWallMarquee.less';
3
+ export interface NoteTickerProps {
4
+ text: string;
5
+ color: string;
6
+ /** 跑完一整段所需秒数 */
7
+ duration?: number;
8
+ shouldMarquee: boolean;
9
+ }
10
+ /**
11
+ * 底部说明条:短文案静态省略,长文案无缝跑马灯(样式见 VenueWallMarquee.less)。
12
+ */
13
+ export declare const NoteTicker: React.NamedExoticComponent<NoteTickerProps>;
@@ -0,0 +1,60 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.tsx
30
+ var NoteTicker_exports = {};
31
+ __export(NoteTicker_exports, {
32
+ NoteTicker: () => NoteTicker
33
+ });
34
+ module.exports = __toCommonJS(NoteTicker_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var import_VenueWallMarquee = require("./VenueWallMarquee.less");
37
+ var NoteTicker = import_react.default.memo(function NoteTicker2({
38
+ text,
39
+ color,
40
+ duration = 24,
41
+ shouldMarquee
42
+ }) {
43
+ if (!shouldMarquee) {
44
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-resource-wall-note-marquee-static", style: { color } }, text);
45
+ }
46
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-resource-wall-note-marquee-wrap" }, /* @__PURE__ */ import_react.default.createElement(
47
+ "div",
48
+ {
49
+ className: "pisell-resource-wall-note-marquee-track",
50
+ style: { animationDuration: `${duration}s`, color }
51
+ },
52
+ /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-resource-wall-note-marquee-copy" }, text),
53
+ /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-resource-wall-note-marquee-copy", "aria-hidden": "true" }, text),
54
+ /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-resource-wall-note-marquee-copy", "aria-hidden": "true" }, text)
55
+ ));
56
+ });
57
+ // Annotate the CommonJS export names for ESM import in node:
58
+ 0 && (module.exports = {
59
+ NoteTicker
60
+ });
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { RecordBoardResourceWallProps } from '../../types';
3
+ /** 与 {@link RecordBoardResourceWallProps.filterFieldKey} 默认一致 */
4
+ export declare const DEFAULT_RESOURCE_WALL_FILTER_FIELD_KEY = "resource_wall_resource_ids";
5
+ /**
6
+ * 大屏资源墙主视口:卡片数据来自 props;可见资源 id 来自
7
+ * `searchParams.filter.values[filterFieldKey]` 与 `cards[].resourceId` 交集。
8
+ */
9
+ export declare const PisellRecordBoardResourceWallView: React.FC<RecordBoardResourceWallProps>;