@pisell/materials 1.0.1063 → 1.0.1064

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 (303) 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 +7 -7
  6. package/build/lowcode/preview.js +9 -9
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +22 -22
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +26 -26
  11. package/es/components/Pagination/index.d.ts +0 -1
  12. package/es/components/PisellBasicGrid/PisellBasicGrid.d.ts +0 -1
  13. package/es/components/PisellCards/components/GraphicTextCard/GraphicTextCard.d.ts +0 -1
  14. package/es/components/PisellCards/components/MultilevelCard/hooks/useMultilevelCardExpand.d.ts +0 -1
  15. package/es/components/PisellCards/components/PisellImageCard/PisellImageCard.d.ts +0 -1
  16. package/es/components/PisellCards/components/PisellImageCard/hooks/useImageLoad.d.ts +0 -1
  17. package/es/components/PisellCards/components/TabCard/TabCard.d.ts +0 -1
  18. package/es/components/PisellCards/components/TextCard/TextCard.d.ts +0 -1
  19. package/es/components/PisellCards/index.d.ts +0 -1
  20. package/es/components/PisellFields/index.d.ts +0 -1
  21. package/es/components/PisellLayouts/index.d.ts +0 -1
  22. package/es/components/PisellMetrics/index.d.ts +0 -1
  23. package/es/components/appVersionControl/index.d.ts +0 -1
  24. package/es/components/auto-complete-number/index.d.ts +0 -1
  25. package/es/components/badge/index.d.ts +0 -1
  26. package/es/components/batch-editor/fields/index.d.ts +0 -1
  27. package/es/components/batch-editor/index.d.ts +0 -1
  28. package/es/components/calendar/index.d.ts +0 -1
  29. package/es/components/cardPro/index.d.ts +0 -1
  30. package/es/components/checkbox/index.d.ts +0 -1
  31. package/es/components/classicLayout/index.d.ts +0 -1
  32. package/es/components/colorPicker/index.d.ts +0 -1
  33. package/es/components/config-provider/index.d.ts +0 -1
  34. package/es/components/dataSourceComponents/dataSourceForm/formItem.d.ts +0 -1
  35. package/es/components/dataSourceComponents/dataSourceShow/dataSourceQRCode/index.d.ts +0 -1
  36. package/es/components/dataSourceComponents/dataSourceTable/filter/index.d.ts +0 -1
  37. package/es/components/dataSourceComponents/dataSourceTable/filter/utils.d.ts +0 -1
  38. package/es/components/dataSourceComponents/dataSourceTable/hooks/useDataSourceKey.d.ts +0 -1
  39. package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableQuery.d.ts +0 -1
  40. package/es/components/dataSourceComponents/dataSourceWrapper/index.d.ts +0 -1
  41. package/es/components/dataSourceComponents/fields/ColorPicker/ReadPretty.d.ts +0 -1
  42. package/es/components/dataSourceComponents/fields/DateRangePicker/ReadPretty.d.ts +0 -1
  43. package/es/components/dataSourceComponents/fields/IconSelect/ReadPretty.d.ts +0 -1
  44. package/es/components/dataSourceComponents/fields/Input/ReadPretty.d.ts +0 -1
  45. package/es/components/dataSourceComponents/fields/Input.Email/ReadPretty.d.ts +0 -1
  46. package/es/components/dataSourceComponents/fields/Input.Json/ReadPretty.d.ts +0 -1
  47. package/es/components/dataSourceComponents/fields/Input.Password/ReadPretty.d.ts +0 -1
  48. package/es/components/dataSourceComponents/fields/Input.Subdomain/ReadPretty.d.ts +0 -1
  49. package/es/components/dataSourceComponents/fields/Input.TextArea/ReadPretty.d.ts +0 -1
  50. package/es/components/dataSourceComponents/fields/Input.Url/ReadPretty.d.ts +0 -1
  51. package/es/components/dataSourceComponents/fields/RecordListWrapper/index.d.ts +0 -1
  52. package/es/components/dataSourceComponents/fields/Select/index.d.ts +0 -1
  53. package/es/components/dataSourceComponents/fields/Tabs/index.d.ts +0 -1
  54. package/es/components/dataSourceComponents/fields/TimePicker/ReadPretty.d.ts +0 -1
  55. package/es/components/dataSourceComponents/fields/Translation/ReadPretty.d.ts +0 -1
  56. package/es/components/dataSourceComponents/fields/Upload/CameraPopover.d.ts +0 -1
  57. package/es/components/dataSourceComponents/fields/Upload/ReadPretty.d.ts +0 -1
  58. package/es/components/dataSourceComponents/fields/index.d.ts +0 -1
  59. package/es/components/date-picker/datePickerCpt.d.ts +0 -1
  60. package/es/components/date-picker/index.d.ts +0 -1
  61. package/es/components/drag-sort-tree/TreeItem/index.d.ts +0 -1
  62. package/es/components/drag-sort-tree/index.d.ts +0 -1
  63. package/es/components/dropdown/index.d.ts +0 -1
  64. package/es/components/filter/components/items/index.d.ts +0 -1
  65. package/es/components/filter/components/items/text/Editor/index.d.ts +0 -1
  66. package/es/components/filter/components/items/text/Preview/index.d.ts +0 -1
  67. package/es/components/filter/components/items/text/index.d.ts +0 -1
  68. package/es/components/filter/index.d.ts +0 -1
  69. package/es/components/hardwareErrorTip/errorCard/index.d.ts +0 -1
  70. package/es/components/hardwareErrorTip/errorTipStatistics/index.d.ts +0 -1
  71. package/es/components/hardwareErrorTip/logCard/index.d.ts +0 -1
  72. package/es/components/list/index.d.ts +0 -1
  73. package/es/components/lowCodePage/index.d.ts +0 -1
  74. package/es/components/page/index.d.ts +0 -1
  75. package/es/components/pisellAdjustPrice/PisellAdjustPriceInputNumber.d.ts +0 -1
  76. package/es/components/pisellAdjustPrice/index.d.ts +0 -1
  77. package/es/components/pisellCard/index.d.ts +0 -1
  78. package/es/components/pisellDataSourceContainer/PisellDataSourceContainer.d.ts +0 -1
  79. package/es/components/pisellDataSourceContainer/hooks/useDataSourceKey.d.ts +0 -1
  80. package/es/components/pisellDatePicker/datePickerCpt.d.ts +0 -1
  81. package/es/components/pisellDatePicker/index.d.ts +0 -1
  82. package/es/components/pisellFilter/index.d.ts +0 -1
  83. package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.js +43 -31
  84. package/es/components/pisellFloorMapLayout/components/FloorMapEditPanel.js +60 -16
  85. package/es/components/pisellFloorMapLayout/components/FloorMapEditPanel.less +8 -0
  86. package/es/components/pisellFloorMapLayout/components/FloorMapToolbar.js +22 -12
  87. package/es/components/pisellFloorMapLayout/components/FloorMapToolbar.less +7 -5
  88. package/es/components/pisellFloorMapLayout/components/MapLayer.js +5 -2
  89. package/es/components/pisellFloorMapLayout/components/ViewControls.d.ts +4 -0
  90. package/es/components/pisellFloorMapLayout/components/ViewControls.js +29 -10
  91. package/es/components/pisellFloorMapLayout/components/ViewControls.less +36 -12
  92. package/es/components/pisellFloorMapLayout/components/ViewControlsWithZoom.d.ts +2 -0
  93. package/es/components/pisellFloorMapLayout/components/ViewControlsWithZoom.js +3 -1
  94. package/es/components/pisellFloorMapLayout/context/mergeFloorMapLayoutContext.js +2 -2
  95. package/es/components/pisellFloorMapLayout/hooks/useFloorMapEditState.d.ts +1 -0
  96. package/es/components/pisellFloorMapLayout/hooks/useFloorMapEditState.js +166 -43
  97. package/es/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.d.ts +1 -1
  98. package/es/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.js +90 -13
  99. package/es/components/pisellFloorMapLayout/index.d.ts +2 -0
  100. package/es/components/pisellFloorMapLayout/index.js +2 -0
  101. package/es/components/pisellFloorMapLayout/locales.d.ts +6 -0
  102. package/es/components/pisellFloorMapLayout/locales.js +9 -3
  103. package/es/components/pisellFloorMapLayout/types.d.ts +9 -2
  104. package/es/components/pisellFloorMapLayout/utils/floorMapDropUtils.d.ts +1 -0
  105. package/es/components/pisellFloorMapLayout/utils/floorMapDropUtils.js +10 -1
  106. package/es/components/pisellFloorMapLayout/utils/floorMapElementKindUtils.d.ts +11 -0
  107. package/es/components/pisellFloorMapLayout/utils/floorMapElementKindUtils.js +86 -0
  108. package/es/components/pisellFloorMapLayout/utils/floorMapFallbackRender.js +3 -2
  109. package/es/components/pisellGridPro/GridView/index.d.ts +0 -1
  110. package/es/components/pisellGridPro/components/DataCard/index.d.ts +0 -1
  111. package/es/components/pisellInformationEntry/Scan/index.d.ts +0 -1
  112. package/es/components/pisellInput/components/BankCard/index.d.ts +0 -1
  113. package/es/components/pisellInput/components/Copy/index.d.ts +0 -1
  114. package/es/components/pisellInput/components/SecurityCode/index.d.ts +0 -1
  115. package/es/components/pisellInput/index.d.ts +0 -1
  116. package/es/components/pisellLoading/index.d.ts +0 -1
  117. package/es/components/pisellModal/components/IpadModal/index.d.ts +0 -1
  118. package/es/components/pisellModal/components/MobileModal/index.d.ts +0 -1
  119. package/es/components/pisellModal/components/index.d.ts +0 -1
  120. package/es/components/pisellRecordBoard/PisellRecordBoard.js +6 -3
  121. package/es/components/pisellRecordBoard/shellFrame/ToolBar/index.d.ts +1 -0
  122. package/es/components/pisellRecordBoard/shellFrame/ToolBar/index.js +21 -10
  123. package/es/components/pisellRecordBoard/shellFrame/ToolBar/recordBoardToolbar.less +23 -0
  124. package/es/components/pisellRecordBoard/shellFrame/index.d.ts +2 -0
  125. package/es/components/pisellRecordBoard/shellFrame/index.js +9 -3
  126. package/es/components/pisellRecordBoard/shellFrame/shellFrameFloorMap.less +25 -0
  127. package/es/components/pisellRecordBoard/types.d.ts +6 -0
  128. package/es/components/pisellReservationScheduleBand/PisellReservationScheduleBand.js +4 -1
  129. package/es/components/pisellReservationScheduleBand/PisellReservationScheduleBand.less +18 -1
  130. package/es/components/pisellReservationScheduleBand/types.d.ts +4 -0
  131. package/es/components/pisellSort/index.d.ts +0 -1
  132. package/es/components/pisellTimeNavigator/PisellTimeNavigator.js +180 -22
  133. package/es/components/pisellTimeNavigator/PisellTimeNavigator.less +11 -0
  134. package/es/components/pisellTimeNavigator/components/CursorLayer.js +4 -4
  135. package/es/components/pisellTimeNavigator/components/ScaleLayer.js +3 -3
  136. package/es/components/pisellTimeNavigator/types.d.ts +11 -0
  137. package/es/components/pisellTooltip/index.d.ts +0 -1
  138. package/es/components/pisellUpload/index.d.ts +0 -1
  139. package/es/components/productCard/cartSkuCard/components/AmountFooter/index.d.ts +0 -1
  140. package/es/components/productCard/cartSkuCard/components/MultiDay/index.d.ts +0 -1
  141. package/es/components/productCard/cartSkuCard/components/Note/index.d.ts +0 -1
  142. package/es/components/productCard/cartSkuCard/components/discountReason/index.d.ts +0 -1
  143. package/es/components/productCard/cartSkuCard/components/holders/index.d.ts +0 -1
  144. package/es/components/productCard/cartSkuCard/components/packages/index.d.ts +0 -1
  145. package/es/components/productCard/cartSkuCard/components/resources/index.d.ts +0 -1
  146. package/es/components/productCard/cartSkuCard/components/sales/index.d.ts +0 -1
  147. package/es/components/productCard/cartSkuCard/components/specs/index.d.ts +0 -1
  148. package/es/components/productCard/cartSkuCard/components/timeRange/index.d.ts +0 -1
  149. package/es/components/productCard/cartSkuCard/index.d.ts +0 -1
  150. package/es/components/productCard/components/Action/index.d.ts +0 -1
  151. package/es/components/productCard/components/AmountFooter/index.d.ts +0 -1
  152. package/es/components/productCard/components/Divider/index.d.ts +0 -1
  153. package/es/components/productCard/components/Header/Actions/index.d.ts +0 -1
  154. package/es/components/productCard/components/Header/DeleteButton/index.d.ts +0 -1
  155. package/es/components/productCard/components/Header/EditButton/index.d.ts +0 -1
  156. package/es/components/productCard/components/Header/index.d.ts +0 -1
  157. package/es/components/productCard/components/MultiDay/index.d.ts +0 -1
  158. package/es/components/productCard/components/Note/index.d.ts +0 -1
  159. package/es/components/productCard/components/Packages/components/collapsibleList/utils.d.ts +0 -1
  160. package/es/components/productCard/components/Packages/components/options/index.d.ts +0 -1
  161. package/es/components/productCard/components/Packages/index.d.ts +0 -1
  162. package/es/components/productCard/components/Sales/index.d.ts +0 -1
  163. package/es/components/productCard/components/Time/components/Like/index.d.ts +0 -1
  164. package/es/components/productCard/components/Time/components/SelectHolder/index.d.ts +0 -1
  165. package/es/components/productCard/components/Time/components/SelectHolderModal/index.d.ts +0 -1
  166. package/es/components/productCard/components/Time/components/SelectHolderMultiple/index.d.ts +0 -1
  167. package/es/components/productCard/components/Time/components/SelectResource/index.d.ts +0 -1
  168. package/es/components/productCard/components/Time/index.d.ts +0 -1
  169. package/es/components/qrcode/index.d.ts +0 -1
  170. package/es/components/radio/index.d.ts +0 -1
  171. package/es/components/segmented/index.d.ts +0 -1
  172. package/es/components/select-time/RightPanel/index.d.ts +0 -1
  173. package/es/components/select-time/index.d.ts +0 -1
  174. package/es/components/skeleton/index.d.ts +0 -1
  175. package/es/components/slider/index.d.ts +0 -1
  176. package/es/components/sort/components/InlineMenu/index.d.ts +0 -1
  177. package/es/components/table/Actions/component/ColumnsSetting/index.d.ts +0 -1
  178. package/es/components/table/Actions/component/ExportImport/components/ExportFile/index.d.ts +0 -1
  179. package/es/components/table/Actions/component/ExportImport/components/ExportTable/index.d.ts +0 -1
  180. package/es/components/table/Actions/component/ExportImport/components/ImportLog/index.d.ts +0 -1
  181. package/es/components/table/Actions/component/ExportImport/components/ImportTable/index.d.ts +0 -1
  182. package/es/components/table/Actions/component/ExportImport/index.d.ts +0 -1
  183. package/es/components/table/Actions/component/GallerySetting/index.d.ts +0 -1
  184. package/es/components/table/Actions/component/Group/PopoverContent.d.ts +0 -1
  185. package/es/components/table/Actions/component/Group/index.d.ts +0 -1
  186. package/es/components/table/Actions/component/ViewMode/index.d.ts +0 -1
  187. package/es/components/table/Actions/index.d.ts +0 -1
  188. package/es/components/table/BasicTable/index.d.ts +0 -1
  189. package/es/components/table/Gallery/components/GalleryItem/components/Cover/index.d.ts +0 -1
  190. package/es/components/table/Gallery/components/GalleryItem/components/RenderFields/index.d.ts +0 -1
  191. package/es/components/table/Gallery/components/GalleryItem/components/Title/index.d.ts +0 -1
  192. package/es/components/table/Summary/index.d.ts +0 -1
  193. package/es/components/table/Table/SelectField/index.d.ts +0 -1
  194. package/es/components/table/Table/fields/date/Config/index.d.ts +0 -1
  195. package/es/components/table/Table/fields/date/Show/index.d.ts +0 -1
  196. package/es/components/table/Table/fields/date/Sort/index.d.ts +0 -1
  197. package/es/components/table/Table/fields/date/index.d.ts +0 -1
  198. package/es/components/table/Table/fields/image/Config/index.d.ts +0 -1
  199. package/es/components/table/Table/fields/image/Show/index.d.ts +0 -1
  200. package/es/components/table/Table/fields/image/Sort/index.d.ts +0 -1
  201. package/es/components/table/Table/fields/image/index.d.ts +0 -1
  202. package/es/components/table/Table/fields/index.d.ts +0 -1
  203. package/es/components/table/Table/fields/link/Config/index.d.ts +0 -1
  204. package/es/components/table/Table/fields/link/Show/index.d.ts +0 -1
  205. package/es/components/table/Table/fields/link/Sort/index.d.ts +0 -1
  206. package/es/components/table/Table/fields/link/index.d.ts +0 -1
  207. package/es/components/table/Table/fields/number/Config/index.d.ts +0 -1
  208. package/es/components/table/Table/fields/number/Show/index.d.ts +0 -1
  209. package/es/components/table/Table/fields/number/Sort/index.d.ts +0 -1
  210. package/es/components/table/Table/fields/number/index.d.ts +0 -1
  211. package/es/components/table/Table/fields/numberRange/Config/index.d.ts +0 -1
  212. package/es/components/table/Table/fields/numberRange/Show/index.d.ts +0 -1
  213. package/es/components/table/Table/fields/numberRange/Sort/index.d.ts +0 -1
  214. package/es/components/table/Table/fields/numberRange/index.d.ts +0 -1
  215. package/es/components/table/Table/fields/oldRangePicker/Config/index.d.ts +0 -1
  216. package/es/components/table/Table/fields/oldRangePicker/Show/index.d.ts +0 -1
  217. package/es/components/table/Table/fields/oldRangePicker/Sort/index.d.ts +0 -1
  218. package/es/components/table/Table/fields/oldRangePicker/index.d.ts +0 -1
  219. package/es/components/table/Table/fields/pSwitch/Config/index.d.ts +0 -1
  220. package/es/components/table/Table/fields/pSwitch/Show/index.d.ts +0 -1
  221. package/es/components/table/Table/fields/pSwitch/Sort/index.d.ts +0 -1
  222. package/es/components/table/Table/fields/pSwitch/index.d.ts +0 -1
  223. package/es/components/table/Table/fields/rangePicker/Config/index.d.ts +0 -1
  224. package/es/components/table/Table/fields/rangePicker/Show/index.d.ts +0 -1
  225. package/es/components/table/Table/fields/rangePicker/Sort/index.d.ts +0 -1
  226. package/es/components/table/Table/fields/rangePicker/index.d.ts +0 -1
  227. package/es/components/table/Table/fields/search/Config/index.d.ts +0 -1
  228. package/es/components/table/Table/fields/search/Show/index.d.ts +0 -1
  229. package/es/components/table/Table/fields/search/Sort/index.d.ts +0 -1
  230. package/es/components/table/Table/fields/search/index.d.ts +0 -1
  231. package/es/components/table/Table/fields/select/Config/index.d.ts +0 -1
  232. package/es/components/table/Table/fields/select/Show/index.d.ts +0 -1
  233. package/es/components/table/Table/fields/select/Sort/index.d.ts +0 -1
  234. package/es/components/table/Table/fields/select/index.d.ts +0 -1
  235. package/es/components/table/Table/fields/text/Config/index.d.ts +0 -1
  236. package/es/components/table/Table/fields/text/Show/index.d.ts +0 -1
  237. package/es/components/table/Table/fields/text/Sort/index.d.ts +0 -1
  238. package/es/components/table/Table/fields/text/index.d.ts +0 -1
  239. package/es/components/table/Table/fields/treeSelect/Config/index.d.ts +0 -1
  240. package/es/components/table/Table/fields/treeSelect/Show/index.d.ts +0 -1
  241. package/es/components/table/Table/fields/treeSelect/Sort/index.d.ts +0 -1
  242. package/es/components/table/Table/fields/treeSelect/index.d.ts +0 -1
  243. package/es/components/table/Table/tableConfig/SortRow/index.d.ts +0 -1
  244. package/es/components/table/Table/tableConfig/summary/index.d.ts +0 -1
  245. package/es/components/table/TableFilter/SortIcon.d.ts +0 -1
  246. package/es/components/table/View/index.d.ts +0 -1
  247. package/es/components/time-picker/index.d.ts +0 -1
  248. package/es/components/upload/index.d.ts +0 -1
  249. package/es/components/versionSelect/index.d.ts +0 -1
  250. package/es/components/virtual-keyboard/Amount/index.d.ts +0 -1
  251. package/es/components/virtual-keyboard/Number/index.d.ts +0 -1
  252. package/es/components/virtual-keyboard/Time/utils.d.ts +0 -1
  253. package/es/components/walletCard/Guest/index.d.ts +0 -1
  254. package/es/components/walletCard/Guide/index.d.ts +0 -1
  255. package/es/index.d.ts +1 -1
  256. package/es/index.js +1 -1
  257. package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.js +39 -36
  258. package/lib/components/pisellFloorMapLayout/components/FloorMapEditPanel.js +56 -12
  259. package/lib/components/pisellFloorMapLayout/components/FloorMapEditPanel.less +8 -0
  260. package/lib/components/pisellFloorMapLayout/components/FloorMapToolbar.js +19 -10
  261. package/lib/components/pisellFloorMapLayout/components/FloorMapToolbar.less +7 -5
  262. package/lib/components/pisellFloorMapLayout/components/MapLayer.js +3 -1
  263. package/lib/components/pisellFloorMapLayout/components/ViewControls.d.ts +4 -0
  264. package/lib/components/pisellFloorMapLayout/components/ViewControls.js +28 -6
  265. package/lib/components/pisellFloorMapLayout/components/ViewControls.less +36 -12
  266. package/lib/components/pisellFloorMapLayout/components/ViewControlsWithZoom.d.ts +2 -0
  267. package/lib/components/pisellFloorMapLayout/components/ViewControlsWithZoom.js +3 -1
  268. package/lib/components/pisellFloorMapLayout/hooks/useFloorMapEditState.d.ts +1 -0
  269. package/lib/components/pisellFloorMapLayout/hooks/useFloorMapEditState.js +143 -29
  270. package/lib/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.d.ts +1 -1
  271. package/lib/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.js +86 -13
  272. package/lib/components/pisellFloorMapLayout/index.d.ts +2 -0
  273. package/lib/components/pisellFloorMapLayout/index.js +6 -0
  274. package/lib/components/pisellFloorMapLayout/locales.d.ts +6 -0
  275. package/lib/components/pisellFloorMapLayout/locales.js +9 -3
  276. package/lib/components/pisellFloorMapLayout/types.d.ts +9 -2
  277. package/lib/components/pisellFloorMapLayout/utils/floorMapDropUtils.d.ts +1 -0
  278. package/lib/components/pisellFloorMapLayout/utils/floorMapDropUtils.js +7 -1
  279. package/lib/components/pisellFloorMapLayout/utils/floorMapElementKindUtils.d.ts +11 -0
  280. package/lib/components/pisellFloorMapLayout/utils/floorMapElementKindUtils.js +69 -0
  281. package/lib/components/pisellFloorMapLayout/utils/floorMapFallbackRender.js +2 -1
  282. package/lib/components/pisellRecordBoard/PisellRecordBoard.js +5 -1
  283. package/lib/components/pisellRecordBoard/shellFrame/ToolBar/index.d.ts +1 -0
  284. package/lib/components/pisellRecordBoard/shellFrame/ToolBar/index.js +13 -5
  285. package/lib/components/pisellRecordBoard/shellFrame/ToolBar/recordBoardToolbar.less +23 -0
  286. package/lib/components/pisellRecordBoard/shellFrame/index.d.ts +2 -0
  287. package/lib/components/pisellRecordBoard/shellFrame/index.js +11 -4
  288. package/lib/components/pisellRecordBoard/shellFrame/shellFrameFloorMap.less +25 -0
  289. package/lib/components/pisellRecordBoard/types.d.ts +6 -0
  290. package/lib/components/pisellReservationScheduleBand/PisellReservationScheduleBand.js +2 -1
  291. package/lib/components/pisellReservationScheduleBand/PisellReservationScheduleBand.less +18 -1
  292. package/lib/components/pisellReservationScheduleBand/types.d.ts +4 -0
  293. package/lib/components/pisellTimeNavigator/PisellTimeNavigator.js +177 -12
  294. package/lib/components/pisellTimeNavigator/PisellTimeNavigator.less +11 -0
  295. package/lib/components/pisellTimeNavigator/types.d.ts +11 -0
  296. package/lib/index.d.ts +1 -1
  297. package/lib/index.js +8 -0
  298. package/lowcode/floor-map-image-element/meta.ts +113 -0
  299. package/lowcode/floor-map-layout-provider/meta.ts +1 -1
  300. package/lowcode/pisell-floor-map-layout/meta.ts +37 -1
  301. package/lowcode/render-figma-style-round-table-card/meta.ts +1 -1
  302. package/lowcode/render-figma-style-table-card/meta.ts +1 -1
  303. package/package.json +3 -3
@@ -21,9 +21,17 @@ var floorMapElementKindUtils_exports = {};
21
21
  __export(floorMapElementKindUtils_exports, {
22
22
  getElementKindConfig: () => getElementKindConfig,
23
23
  getSceneElementRenderIssue: () => getSceneElementRenderIssue,
24
+ getSwappableElementKindsInSameCategory: () => getSwappableElementKindsInSameCategory,
25
+ isFloorMapImageElementKind: () => isFloorMapImageElementKind,
26
+ patchSceneElementForKindSwitch: () => patchSceneElementForKindSwitch,
24
27
  resolveDataBindingPolicy: () => resolveDataBindingPolicy
25
28
  });
26
29
  module.exports = __toCommonJS(floorMapElementKindUtils_exports);
30
+ var import_types = require("../types");
31
+ var import_floorMapStageDefaults = require("./floorMapStageDefaults");
32
+ function isFloorMapImageElementKind(kind) {
33
+ return kind === import_types.FLOOR_MAP_IMAGE_ELEMENT_KIND;
34
+ }
27
35
  function resolveDataBindingPolicy(kind) {
28
36
  return (kind == null ? void 0 : kind.dataBindingPolicy) ?? "none";
29
37
  }
@@ -32,6 +40,64 @@ function getElementKindConfig(config, elementKind) {
32
40
  if (!elementKind || !((_a = config == null ? void 0 : config.elementKinds) == null ? void 0 : _a.length)) return void 0;
33
41
  return config.elementKinds.find((k) => k.value === elementKind);
34
42
  }
43
+ function getSwappableElementKindsInSameCategory(config, elementKind) {
44
+ var _a, _b;
45
+ if (!elementKind || !((_a = config.elementKinds) == null ? void 0 : _a.length)) return [];
46
+ const rawCats = config.elementKindCategories ?? [];
47
+ const sorted = [...rawCats].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
48
+ const fallbackId = ((_b = sorted[0]) == null ? void 0 : _b.id) ?? "_uncat";
49
+ const self = config.elementKinds.find((k) => k.value === elementKind);
50
+ if (!self) return [];
51
+ const cid = self.categoryId ?? fallbackId;
52
+ return config.elementKinds.filter((k) => {
53
+ if (k.showInPalette === false) return false;
54
+ if (k.value === import_types.FLOOR_MAP_STAGE_ELEMENT_KIND) return false;
55
+ if (k.value === import_types.FLOOR_MAP_IMAGE_ELEMENT_KIND) return false;
56
+ return (k.categoryId ?? fallbackId) === cid;
57
+ });
58
+ }
59
+ var DEFAULT_PLACE_W = 180;
60
+ var DEFAULT_PLACE_H = 120;
61
+ var IMAGE_PLACE_W = 400;
62
+ var IMAGE_PLACE_H = 240;
63
+ var DECO_SIZE = 48;
64
+ function patchSceneElementForKindSwitch(config, element, nextKindValue) {
65
+ var _a, _b;
66
+ const nextCfg = getElementKindConfig(config, nextKindValue);
67
+ const nextPol = resolveDataBindingPolicy(nextCfg);
68
+ const binding = element.dataBinding;
69
+ const isNextImage = isFloorMapImageElementKind(nextKindValue);
70
+ const isNextStage = nextKindValue === import_types.FLOOR_MAP_STAGE_ELEMENT_KIND;
71
+ let clearBinding = false;
72
+ if (nextPol === "none") {
73
+ clearBinding = true;
74
+ } else if (binding && ((_a = nextCfg == null ? void 0 : nextCfg.allowedDataSourceKeys) == null ? void 0 : _a.length)) {
75
+ if (!nextCfg.allowedDataSourceKeys.includes(binding.dataSourceKey)) {
76
+ clearBinding = true;
77
+ }
78
+ }
79
+ const nextW = isNextImage ? IMAGE_PLACE_W : isNextStage ? import_floorMapStageDefaults.STAGE_DECO_DEFAULT.width : DEFAULT_PLACE_W;
80
+ const nextH = isNextImage ? IMAGE_PLACE_H : isNextStage ? import_floorMapStageDefaults.STAGE_DECO_DEFAULT.height : DEFAULT_PLACE_H;
81
+ const useDecoSize = nextPol === "none" && nextKindValue !== import_types.FLOOR_MAP_STAGE_ELEMENT_KIND && !isNextImage;
82
+ const width = useDecoSize ? Math.max(element.width ?? DECO_SIZE, DECO_SIZE) : Math.max(element.width ?? nextW, nextW);
83
+ const height = useDecoSize ? Math.max(element.height ?? DECO_SIZE, DECO_SIZE) : Math.max(element.height ?? nextH, nextH);
84
+ const patch = {
85
+ elementKind: nextKindValue,
86
+ shape: isNextStage || isNextImage ? "rect" : nextCfg == null ? void 0 : nextCfg.defaultShape,
87
+ width,
88
+ height,
89
+ name: ((_b = nextCfg == null ? void 0 : nextCfg.defaultPresentation) == null ? void 0 : _b.title) != null && String(nextCfg.defaultPresentation.title).trim() !== "" ? String(nextCfg.defaultPresentation.title) : element.name
90
+ };
91
+ if (clearBinding) {
92
+ patch.dataBinding = void 0;
93
+ }
94
+ if (isNextImage) {
95
+ patch.imageUrl = element.imageUrl ?? "";
96
+ } else {
97
+ patch.imageUrl = void 0;
98
+ }
99
+ return patch;
100
+ }
35
101
  function getSceneElementRenderIssue(element, kind, dataSources) {
36
102
  const policy = resolveDataBindingPolicy(kind);
37
103
  const binding = element.dataBinding;
@@ -66,5 +132,8 @@ function getSceneElementRenderIssue(element, kind, dataSources) {
66
132
  0 && (module.exports = {
67
133
  getElementKindConfig,
68
134
  getSceneElementRenderIssue,
135
+ getSwappableElementKindsInSameCategory,
136
+ isFloorMapImageElementKind,
137
+ patchSceneElementForKindSwitch,
69
138
  resolveDataBindingPolicy
70
139
  });
@@ -35,6 +35,7 @@ __export(floorMapFallbackRender_exports, {
35
35
  module.exports = __toCommonJS(floorMapFallbackRender_exports);
36
36
  var import_react = __toESM(require("react"));
37
37
  var import_types = require("../types");
38
+ var import_floorMapElementKindUtils = require("./floorMapElementKindUtils");
38
39
  var import_FloorMapImageElement = require("../components/FloorMapImageElement");
39
40
  var import_floorMapStageDefaults = require("./floorMapStageDefaults");
40
41
  function renderFloorMapRenderError(message) {
@@ -67,7 +68,7 @@ function renderFloorMapFallbackPlaceholder(item) {
67
68
  const isStage = kind === import_types.FLOOR_MAP_STAGE_ELEMENT_KIND;
68
69
  const nameText = (item == null ? void 0 : item.name) != null ? String(item.name).trim() : "";
69
70
  const fallbackLabel = nameText || kind;
70
- if (kind === import_types.FLOOR_MAP_IMAGE_ELEMENT_KIND) {
71
+ if ((0, import_floorMapElementKindUtils.isFloorMapImageElementKind)(kind)) {
71
72
  const url = (_a = item._sceneElement) == null ? void 0 : _a.imageUrl;
72
73
  return /* @__PURE__ */ import_react.default.createElement(
73
74
  import_FloorMapImageElement.FloorMapImageElement,
@@ -92,6 +92,7 @@ function getDefaultRecordBoardContext(layoutType, selection, rowKey) {
92
92
  floorMapLayoutContext: void 0,
93
93
  defaultBodyView: void 0,
94
94
  floorMapLayoutRef: void 0,
95
+ floorMapFooter: void 0,
95
96
  dataSources: void 0,
96
97
  gridDataSourceKey: void 0
97
98
  };
@@ -116,6 +117,7 @@ var PisellRecordBoard = (props) => {
116
117
  defaultBodyView,
117
118
  bodyViewStorageKey,
118
119
  floorMapLayoutRef,
120
+ floorMapFooter,
119
121
  className: classNameProp,
120
122
  style: styleProp,
121
123
  ...rest
@@ -285,7 +287,8 @@ var PisellRecordBoard = (props) => {
285
287
  floorMapProps: floorMapProp,
286
288
  floorMapLayoutContext: floorMapLayoutContextProp,
287
289
  defaultBodyView,
288
- floorMapLayoutRef
290
+ floorMapLayoutRef,
291
+ floorMapFooter
289
292
  };
290
293
  }, [
291
294
  layoutType,
@@ -315,6 +318,7 @@ var PisellRecordBoard = (props) => {
315
318
  floorMapLayoutContextProp,
316
319
  defaultBodyView,
317
320
  floorMapLayoutRef,
321
+ floorMapFooter,
318
322
  bodyView,
319
323
  setBodyView
320
324
  ]);
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { RecordBoardToolBarProps as ToolBarPropsType } from '../../types';
3
3
  import './ToolBarFilter.less';
4
+ import './recordBoardToolbar.less';
4
5
  /**
5
6
  * RecordBoard 下的工具栏:使用 PisellToolBar。
6
7
  * 左侧默认 PisellFind(inline);右侧默认 PisellFilter。通过 childComponentProps.toolBar.search / toolBar.filter 为对象时透传对应组件 props,为 false 时不渲染。
@@ -33,6 +33,7 @@ __export(ToolBar_exports, {
33
33
  });
34
34
  module.exports = __toCommonJS(ToolBar_exports);
35
35
  var import_react = __toESM(require("react"));
36
+ var import_classnames = __toESM(require("classnames"));
36
37
  var import_antd = require("antd");
37
38
  var import_SwitchVertical01 = __toESM(require("@pisell/icon/es/SwitchVertical01"));
38
39
  var import_ToolBar = __toESM(require("../../../pisellGridPro/ToolBar"));
@@ -47,6 +48,7 @@ var import_useRecordBoardContext = require("../../hooks/useRecordBoardContext");
47
48
  var import_utils = require("@pisell/utils");
48
49
  var import_locales = require("../../../../locales");
49
50
  var import_ToolBarFilter = require("./ToolBarFilter.less");
51
+ var import_recordBoardToolbar = require("./recordBoardToolbar.less");
50
52
  var import_recordBoardColumns = require("../../utils/recordBoardColumns");
51
53
  function getSortButtonText() {
52
54
  const key = "pisell2.recordBoard.toolbar.sort";
@@ -155,7 +157,9 @@ var RecordBoardToolBar = (props) => {
155
157
  style: { marginRight: 8 }
156
158
  }
157
159
  ) : null;
158
- const topLeft = /* @__PURE__ */ import_react.default.createElement("div", { className: "record-board-toolbar-top-left" }, bodyViewToggle, quickFilterNode, searchNode ? /* @__PURE__ */ import_react.default.createElement("div", { className: "record-board-toolbar-find-wrap" }, searchNode) : null, slots.topLeft);
160
+ const compactFloorMapToolbar = bodyView === "floorMap" && showTableFloorToggle;
161
+ const hideBodyViewToggleInToolbarRow = showTableFloorToggle && Boolean(slots.tabs) && bodyView === "floorMap";
162
+ const topLeft = compactFloorMapToolbar ? null : /* @__PURE__ */ import_react.default.createElement("div", { className: "record-board-toolbar-top-left" }, !hideBodyViewToggleInToolbarRow ? bodyViewToggle : null, quickFilterNode, searchNode ? /* @__PURE__ */ import_react.default.createElement("div", { className: "record-board-toolbar-find-wrap" }, searchNode) : null, slots.topLeft);
159
163
  const sortConfig = slots.sort;
160
164
  const hideSort = sortConfig === false;
161
165
  const sortValue = searchParams == null ? void 0 : searchParams[SORT_PARAMS_FIELD];
@@ -273,17 +277,21 @@ var RecordBoardToolBar = (props) => {
273
277
  }
274
278
  );
275
279
  const showColumnSetting = slots.columnSetting !== false && Array.isArray(gridColumns) && gridColumns.length > 0;
276
- const topRight = /* @__PURE__ */ import_react.default.createElement(import_antd.Space, null, showColumnSetting ? /* @__PURE__ */ import_react.default.createElement(import_ColumnSetting.default, null) : null, sortNode, filterNode, /* @__PURE__ */ import_react.default.createElement(import_ToolBarReset.default, { size: "large" }), slots.topRight);
280
+ const topRight = compactFloorMapToolbar ? null : /* @__PURE__ */ import_react.default.createElement(import_antd.Space, null, showColumnSetting ? /* @__PURE__ */ import_react.default.createElement(import_ColumnSetting.default, null) : null, sortNode, filterNode, /* @__PURE__ */ import_react.default.createElement(import_ToolBarReset.default, { size: "large" }), slots.topRight);
277
281
  return /* @__PURE__ */ import_react.default.createElement(
278
282
  import_ToolBar.default,
279
283
  {
280
- className: slots.className,
284
+ className: (0, import_classnames.default)(
285
+ bodyView === "floorMap" && "pisell-record-board-toolbar--floor-map",
286
+ bodyView === "grid" && "pisell-record-board-toolbar--grid",
287
+ slots.className
288
+ ),
281
289
  style: slots.style,
282
290
  tabs: slots.tabs,
283
291
  topLeft,
284
292
  topRight,
285
- bottomLeft: slots.bottomLeft,
286
- bottomRight: slots.bottomRight
293
+ bottomLeft: compactFloorMapToolbar ? null : slots.bottomLeft,
294
+ bottomRight: compactFloorMapToolbar ? null : slots.bottomRight
287
295
  }
288
296
  );
289
297
  };
@@ -0,0 +1,23 @@
1
+ /**
2
+ * 平面视图:工具栏常仅一行(ScheduleBand),去掉 GridPro 默认底内边距。
3
+ * 不用仅依赖 #body:Story/本地预览可能没有 id=body,低代码若再包一层 #body 会导致双前缀失效。
4
+ * !important:确保晚于 @pisellGridPro/ToolBar 中单类 .pisell-grid-pro-toolbar 的 padding-bottom。
5
+ */
6
+ .pisell-grid-pro-toolbar.pisell-record-board-toolbar--floor-map {
7
+ padding-bottom: 0 !important;
8
+ }
9
+
10
+ #body .pisell-grid-pro-toolbar.pisell-record-board-toolbar--floor-map {
11
+ padding-bottom: 0 !important;
12
+ }
13
+
14
+ /* 表格态工具栏与内容对齐:左右留白 16;平面图态不加此内边距 */
15
+ .pisell-grid-pro-toolbar.pisell-record-board-toolbar--grid {
16
+ padding-left: 16px;
17
+ padding-right: 16px;
18
+ }
19
+
20
+ #body .pisell-grid-pro-toolbar.pisell-record-board-toolbar--grid {
21
+ padding-left: 16px;
22
+ padding-right: 16px;
23
+ }
@@ -3,6 +3,7 @@ import RecordBoardToolBar from './ToolBar';
3
3
  import RecordBoardBatchActionBar from './BatchActionBar';
4
4
  import RecordBoardPagination from './Pagination';
5
5
  import RecordBoardSearch from './Search';
6
+ import './shellFrameFloorMap.less';
6
7
  import ToolBarReset from './ToolBarReset';
7
8
  import ToolBarQuickFilter from './ToolBarQuickFilter';
8
9
  import RecordBoardFloorMap from './FloorMap';
@@ -18,3 +19,4 @@ declare const RecordBoardShellFrame: React.FC<{
18
19
  }>;
19
20
  export default RecordBoardShellFrame;
20
21
  export { RecordBoardToolBar, RecordBoardBatchActionBar, RecordBoardPagination, RecordBoardSearch, ToolBarReset, ToolBarQuickFilter, RecordBoardFloorMap };
22
+ export { useRecordBoardShellBodyMeta } from './ShellBodyMetaContext';
@@ -36,7 +36,8 @@ __export(shellFrame_exports, {
36
36
  RecordBoardToolBar: () => import_ToolBar.default,
37
37
  ToolBarQuickFilter: () => import_ToolBarQuickFilter.default,
38
38
  ToolBarReset: () => import_ToolBarReset.default,
39
- default: () => shellFrame_default
39
+ default: () => shellFrame_default,
40
+ useRecordBoardShellBodyMeta: () => import_ShellBodyMetaContext2.useRecordBoardShellBodyMeta
40
41
  });
41
42
  module.exports = __toCommonJS(shellFrame_exports);
42
43
  var import_react = __toESM(require("react"));
@@ -48,10 +49,12 @@ var import_ToolBar = __toESM(require("./ToolBar"));
48
49
  var import_BatchActionBar = __toESM(require("./BatchActionBar"));
49
50
  var import_Pagination = __toESM(require("./Pagination"));
50
51
  var import_Search = __toESM(require("./Search"));
52
+ var import_shellFrameFloorMap = require("./shellFrameFloorMap.less");
51
53
  var import_ToolBarReset = __toESM(require("./ToolBarReset"));
52
54
  var import_ToolBarQuickFilter = __toESM(require("./ToolBarQuickFilter"));
53
55
  var import_FloorMap = __toESM(require("./FloorMap"));
54
56
  var import_ShellBodyMetaContext = require("./ShellBodyMetaContext");
57
+ var import_ShellBodyMetaContext2 = require("./ShellBodyMetaContext");
55
58
  var FILL_HEIGHT_SCROLL_STYLE = {
56
59
  flex: 1,
57
60
  minHeight: 0,
@@ -152,12 +155,14 @@ var RecordBoardShellFrame = ({ children, className, style }) => {
152
155
  const floorMapNode = effectiveFloorMapProps && !showGrid ? /* @__PURE__ */ import_react.default.createElement(
153
156
  "div",
154
157
  {
158
+ className: "pisell-record-board-floor-map-viewport",
155
159
  style: {
156
160
  flex: 1,
157
161
  minHeight: 0,
158
162
  display: "flex",
159
163
  flexDirection: "column",
160
- overflow: "hidden"
164
+ overflow: "hidden",
165
+ position: "relative"
161
166
  }
162
167
  },
163
168
  /* @__PURE__ */ import_react.default.createElement(import_pisellFloorMapLayout.FloorMapLayoutProvider, { value: floorMapLayoutProviderValue }, /* @__PURE__ */ import_react.default.createElement(
@@ -174,7 +179,8 @@ var RecordBoardShellFrame = ({ children, className, style }) => {
174
179
  ...effectiveFloorMapProps.style ?? {}
175
180
  }
176
181
  }
177
- ))
182
+ )),
183
+ ctx.floorMapFooter ? /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-record-board-floor-map-floating-slot" }, ctx.floorMapFooter) : null
178
184
  ) : null;
179
185
  const bodyContent = fillHeight ? /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, showGrid ? /* @__PURE__ */ import_react.default.createElement(
180
186
  ScrollAreaMeasurer,
@@ -215,5 +221,6 @@ var shellFrame_default = RecordBoardShellFrame;
215
221
  RecordBoardSearch,
216
222
  RecordBoardToolBar,
217
223
  ToolBarQuickFilter,
218
- ToolBarReset
224
+ ToolBarReset,
225
+ useRecordBoardShellBodyMeta
219
226
  });
@@ -0,0 +1,25 @@
1
+ /** 平面图区域:画布 + 悬浮层共用,便于底部按钮叠在画布上 */
2
+ .pisell-record-board-floor-map-viewport {
3
+ box-sizing: border-box;
4
+ }
5
+
6
+ /**
7
+ * 画布内底部居中悬浮插槽(如「编辑平面图」)。
8
+ * 容器不接收指针事件,避免挡画布拖拽/缩放;子节点恢复可点。
9
+ */
10
+ .pisell-record-board-floor-map-floating-slot {
11
+ position: absolute;
12
+ left: 0;
13
+ right: 0;
14
+ bottom: 20px;
15
+ display: flex;
16
+ justify-content: center;
17
+ align-items: center;
18
+ pointer-events: none;
19
+ /* 高于 PisellFloorMapLayout 内 ViewControls(20),避免与左下角控件叠次序模糊 */
20
+ z-index: 25;
21
+
22
+ > * {
23
+ pointer-events: auto;
24
+ }
25
+ }
@@ -204,6 +204,10 @@ export interface RecordBoardContextValue {
204
204
  defaultBodyView?: RecordBoardBodyView;
205
205
  /** 挂到 ShellFrame 内 PisellFloorMapLayout,供外部 imperative 调用(如 saveLayout / fitBounds) */
206
206
  floorMapLayoutRef?: Ref<PisellFloorMapLayoutRef | null>;
207
+ /**
208
+ * 平面图视图下叠在画布内的底部居中悬浮区(如「编辑平面图」),不单独占一行 footer。
209
+ */
210
+ floorMapFooter?: ReactNode;
207
211
  }
208
212
  /**
209
213
  * 各 layout 下子组件的可选透传配置(类似 ChildComponentProps)
@@ -370,6 +374,8 @@ export interface RecordBoardProps {
370
374
  bodyViewStorageKey?: string;
371
375
  /** 平面图 Layout 实例 ref,由 ShellFrame 注入 */
372
376
  floorMapLayoutRef?: Ref<PisellFloorMapLayoutRef | null>;
377
+ /** 平面图画布内底部悬浮插槽(如编辑入口),注入 Context 供 ShellFrame 渲染 */
378
+ floorMapFooter?: ReactNode;
373
379
  /** 其他 */
374
380
  [key: string]: any;
375
381
  }
@@ -53,6 +53,7 @@ function PisellReservationScheduleBand(props) {
53
53
  timeNavigatorProps,
54
54
  scheduleStartSlot,
55
55
  scheduleEndSlot,
56
+ scheduleAfterDateSlot,
56
57
  className,
57
58
  style
58
59
  } = props;
@@ -108,7 +109,7 @@ function PisellReservationScheduleBand(props) {
108
109
  onChange: handleDateChange,
109
110
  ...scheduleProps
110
111
  }
111
- )), /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-reservation-schedule-band-slot-end" }, scheduleEndSlot)),
112
+ ), scheduleAfterDateSlot ? /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-reservation-schedule-band-after-date" }, scheduleAfterDateSlot) : null), /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-reservation-schedule-band-slot-end" }, scheduleEndSlot)),
112
113
  /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-reservation-schedule-band-navigator" }, /* @__PURE__ */ import_react.default.createElement(
113
114
  import_pisellTimeNavigator.PisellTimeNavigator,
114
115
  {
@@ -3,7 +3,7 @@
3
3
  flex-direction: column;
4
4
  align-items: stretch;
5
5
  width: 100%;
6
- gap: 12px;
6
+ gap: 0;
7
7
  box-sizing: border-box;
8
8
  }
9
9
 
@@ -40,7 +40,24 @@
40
40
  justify-self: center;
41
41
  min-width: 0;
42
42
  display: flex;
43
+ flex-direction: row;
44
+ flex-wrap: nowrap;
45
+ align-items: center;
43
46
  justify-content: center;
47
+ gap: 8px;
48
+ }
49
+
50
+ /** 日程组件根节点默认 width:100%,在中间栏会与「日期右侧」插槽分两行;此处收窄为内容宽,保证与 after-date 同一行 */
51
+ .pisell-reservation-schedule-band-schedule > .pisell-reservation-schedule {
52
+ width: auto;
53
+ flex: 0 0 auto;
54
+ min-width: 0;
55
+ }
56
+
57
+ .pisell-reservation-schedule-band-after-date {
58
+ display: flex;
59
+ align-items: center;
60
+ flex-shrink: 0;
44
61
  }
45
62
 
46
63
  .pisell-reservation-schedule-band-navigator {
@@ -40,6 +40,10 @@ export interface PisellReservationScheduleBandProps {
40
40
  * 顶栏日程行:PisellReservationSchedule 右侧自定义内容(如状态、主按钮)
41
41
  */
42
42
  scheduleEndSlot?: ReactNode;
43
+ /**
44
+ * 顶栏日程行:紧挨在选日组件之后(如「跟随当前」),与中间列同一 flex 区
45
+ */
46
+ scheduleAfterDateSlot?: ReactNode;
43
47
  className?: string;
44
48
  style?: CSSProperties;
45
49
  }
@@ -48,6 +48,7 @@ var CELL_SIZE_V = 20;
48
48
  var CURSOR_MOVES_NOW_RESERVE_PX = 56;
49
49
  var CURSOR_MOVES_H_PADDING_PX = 8;
50
50
  var CURSOR_MOVES_MIN_CELL_PX = 8;
51
+ var DENSITY_LAYER_HEIGHT = 46;
51
52
  function PisellTimeNavigator(props) {
52
53
  var _a, _b;
53
54
  const {
@@ -77,7 +78,9 @@ function PisellTimeNavigator(props) {
77
78
  locale,
78
79
  timeFormat = "HH:mm",
79
80
  renderNowButton,
80
- onUserInteraction
81
+ onUserInteraction,
82
+ densitySeries: densitySeriesProp,
83
+ loadDensity: loadDensityProp
81
84
  } = props;
82
85
  const context = (0, import_useEngineContext.default)();
83
86
  import_utils2.locales.init(
@@ -91,6 +94,38 @@ function PisellTimeNavigator(props) {
91
94
  }, [referenceDateProp]);
92
95
  const referenceDate = referenceDateFromProp ?? (0, import_dayjs.default)().startOf("day");
93
96
  const isHorizontal = orientation === "horizontal";
97
+ const referenceDayKey = referenceDateFromProp != null ? referenceDateFromProp.format("YYYY-MM-DD") : (0, import_dayjs.default)().format("YYYY-MM-DD");
98
+ const [densityLoaded, setDensityLoaded] = (0, import_react.useState)();
99
+ const densityReqId = (0, import_react.useRef)(0);
100
+ const densityGradientId = (0, import_react.useMemo)(
101
+ () => `pisell-time-density-fill-${Math.random().toString(36).slice(2, 8)}`,
102
+ []
103
+ );
104
+ (0, import_react.useEffect)(() => {
105
+ if (densitySeriesProp !== void 0) {
106
+ setDensityLoaded(void 0);
107
+ return;
108
+ }
109
+ if (!loadDensityProp) {
110
+ setDensityLoaded(void 0);
111
+ return;
112
+ }
113
+ const req = ++densityReqId.current;
114
+ let cancelled = false;
115
+ setDensityLoaded(void 0);
116
+ const refDay = (0, import_dayjs.default)(referenceDayKey).startOf("day");
117
+ void loadDensityProp({ referenceDate: refDay, stepMinutes }).then((arr) => {
118
+ if (cancelled || req !== densityReqId.current) return;
119
+ setDensityLoaded(Array.isArray(arr) ? arr : []);
120
+ }).catch(() => {
121
+ if (cancelled || req !== densityReqId.current) return;
122
+ setDensityLoaded(void 0);
123
+ });
124
+ return () => {
125
+ cancelled = true;
126
+ };
127
+ }, [referenceDayKey, stepMinutes, loadDensityProp, densitySeriesProp]);
128
+ const resolvedDensity = densitySeriesProp !== void 0 ? densitySeriesProp : densityLoaded;
94
129
  const isAxisMoves = cursorMode === "axis-moves";
95
130
  const [viewportSize, setViewportSize] = (0, import_react.useState)({ w: 0, h: 0 });
96
131
  const viewportWrapRef = (0, import_react.useRef)(null);
@@ -122,10 +157,7 @@ function PisellTimeNavigator(props) {
122
157
  const reserve = showNowButton ? CURSOR_MOVES_NOW_RESERVE_PX : 0;
123
158
  const usable = Math.max(40, vpW - reserve - CURSOR_MOVES_H_PADDING_PX * 2);
124
159
  const raw = Math.floor(usable / n);
125
- return Math.max(
126
- CURSOR_MOVES_MIN_CELL_PX,
127
- Math.min(CELL_SIZE_H, raw)
128
- );
160
+ return Math.max(CURSOR_MOVES_MIN_CELL_PX, Math.min(CELL_SIZE_H, raw));
129
161
  }, [
130
162
  isHorizontal,
131
163
  isAxisMoves,
@@ -140,6 +172,48 @@ function PisellTimeNavigator(props) {
140
172
  orientation,
141
173
  cellSizePx
142
174
  });
175
+ const horizontalDensityCurve = (0, import_react.useMemo)(() => {
176
+ if (!isHorizontal || !(resolvedDensity == null ? void 0 : resolvedDensity.length)) return null;
177
+ const ticksN = axis.ticks.length;
178
+ const n = Math.min(resolvedDensity.length, ticksN);
179
+ if (n < 2) return null;
180
+ const slice = resolvedDensity.slice(0, n);
181
+ const maxV = Math.max(...slice, 0);
182
+ const minV = Math.min(...slice, 0);
183
+ const span = Math.max(1, maxV - minV);
184
+ const h = DENSITY_LAYER_HEIGHT;
185
+ const points = slice.map((v, i) => {
186
+ const x = i * cellSizePx + cellSizePx / 2;
187
+ const t = (v - minV) / span;
188
+ const y = h - 1 - t * (h - 3);
189
+ return { x, y };
190
+ });
191
+ const first = points[0];
192
+ const last = points[points.length - 1];
193
+ let linePath = `M ${first.x} ${first.y}`;
194
+ for (let i = 0; i < points.length - 1; i += 1) {
195
+ const p0 = points[i];
196
+ const p1 = points[i + 1];
197
+ const cx = (p0.x + p1.x) / 2;
198
+ const cy = (p0.y + p1.y) / 2;
199
+ linePath += ` Q ${p0.x} ${p0.y} ${cx} ${cy}`;
200
+ }
201
+ linePath += ` T ${last.x} ${last.y}`;
202
+ const areaPath = `${linePath} L ${last.x} ${h} L ${first.x} ${h} Z`;
203
+ return {
204
+ points,
205
+ linePath,
206
+ areaPath,
207
+ h,
208
+ w: axis.totalLengthPx
209
+ };
210
+ }, [
211
+ isHorizontal,
212
+ resolvedDensity,
213
+ axis.ticks,
214
+ axis.totalLengthPx,
215
+ cellSizePx
216
+ ]);
143
217
  const isControlled = valueProp !== void 0;
144
218
  const [internalValue, setInternalValue] = (0, import_react.useState)(() => {
145
219
  const v = valueProp ?? defaultValue;
@@ -181,6 +255,39 @@ function PisellTimeNavigator(props) {
181
255
  const dotOffsetPx = isHorizontal ? cellSizePx / 2 : 0;
182
256
  const axisStartMarginW = isHorizontal && !isAxisMoves ? CURSOR_MOVES_H_PADDING_PX : Math.max(0, halfViewportW - dotOffsetPx);
183
257
  const axisStartMarginH = Math.max(0, halfViewportH - dotOffsetPx);
258
+ const horizontalAxisWrapStyle = (0, import_react.useMemo)(() => {
259
+ if (!isHorizontal) return null;
260
+ const minHeight = 48;
261
+ if (isAxisMoves) {
262
+ const natural2 = axis.totalLengthPx + (effectiveViewportW - cellSizePx);
263
+ if (!showNowButton) {
264
+ return {
265
+ width: "100%",
266
+ minWidth: natural2,
267
+ minHeight,
268
+ boxSizing: "border-box"
269
+ };
270
+ }
271
+ return { width: natural2, minHeight };
272
+ }
273
+ const natural = CURSOR_MOVES_H_PADDING_PX + axis.totalLengthPx + CURSOR_MOVES_H_PADDING_PX;
274
+ if (!showNowButton) {
275
+ return {
276
+ width: "100%",
277
+ minWidth: natural,
278
+ minHeight,
279
+ boxSizing: "border-box"
280
+ };
281
+ }
282
+ return { width: natural, minHeight };
283
+ }, [
284
+ isHorizontal,
285
+ isAxisMoves,
286
+ axis.totalLengthPx,
287
+ effectiveViewportW,
288
+ cellSizePx,
289
+ showNowButton
290
+ ]);
184
291
  const handleScroll = (0, import_react.useCallback)(
185
292
  (data) => {
186
293
  if (scrollToCenterInProgressRef.current) return;
@@ -577,13 +684,7 @@ function PisellTimeNavigator(props) {
577
684
  "div",
578
685
  {
579
686
  className: "pisell-time-navigator-axis-wrap",
580
- style: isHorizontal ? isAxisMoves ? {
581
- width: axis.totalLengthPx + (effectiveViewportW - cellSizePx),
582
- minHeight: 48
583
- } : {
584
- width: CURSOR_MOVES_H_PADDING_PX + axis.totalLengthPx + CURSOR_MOVES_H_PADDING_PX,
585
- minHeight: 48
586
- } : {
687
+ style: isHorizontal ? horizontalAxisWrapStyle ?? { minHeight: 48 } : {
587
688
  width: "100%"
588
689
  /* 不设 height,由轴(marginTop + 内容 + marginBottom)自然撑开,避免固定高度与 margin 的 CSS 盒模型歧义 */
589
690
  }
@@ -628,6 +729,70 @@ function PisellTimeNavigator(props) {
628
729
  businessHoursPx
629
730
  }
630
731
  ),
732
+ horizontalDensityCurve ? /* @__PURE__ */ import_react.default.createElement(
733
+ "svg",
734
+ {
735
+ className: "pisell-time-navigator-density-layer",
736
+ width: horizontalDensityCurve.w,
737
+ height: horizontalDensityCurve.h,
738
+ viewBox: `0 0 ${horizontalDensityCurve.w} ${horizontalDensityCurve.h}`,
739
+ preserveAspectRatio: "none",
740
+ "aria-hidden": true
741
+ },
742
+ /* @__PURE__ */ import_react.default.createElement("defs", null, /* @__PURE__ */ import_react.default.createElement(
743
+ "linearGradient",
744
+ {
745
+ id: densityGradientId,
746
+ x1: "0",
747
+ y1: "0",
748
+ x2: "0",
749
+ y2: "1"
750
+ },
751
+ /* @__PURE__ */ import_react.default.createElement(
752
+ "stop",
753
+ {
754
+ offset: "0%",
755
+ stopColor: "#ff9c66",
756
+ stopOpacity: "0.32"
757
+ }
758
+ ),
759
+ /* @__PURE__ */ import_react.default.createElement(
760
+ "stop",
761
+ {
762
+ offset: "100%",
763
+ stopColor: "#ff9c66",
764
+ stopOpacity: "0.02"
765
+ }
766
+ )
767
+ )),
768
+ /* @__PURE__ */ import_react.default.createElement(
769
+ "path",
770
+ {
771
+ d: horizontalDensityCurve.areaPath,
772
+ fill: `url(#${densityGradientId})`
773
+ }
774
+ ),
775
+ /* @__PURE__ */ import_react.default.createElement(
776
+ "path",
777
+ {
778
+ d: horizontalDensityCurve.linePath,
779
+ fill: "none",
780
+ stroke: "#ff8a4a",
781
+ strokeWidth: 1.8,
782
+ vectorEffect: "non-scaling-stroke"
783
+ }
784
+ ),
785
+ horizontalDensityCurve.points.map((p, i) => /* @__PURE__ */ import_react.default.createElement(
786
+ "circle",
787
+ {
788
+ key: i,
789
+ cx: p.x,
790
+ cy: p.y,
791
+ r: 1.4,
792
+ fill: "#ff8a4a"
793
+ }
794
+ ))
795
+ ) : null,
631
796
  /* @__PURE__ */ import_react.default.createElement(
632
797
  import_components.ScaleLayer,
633
798
  {