plain-design 1.0.0-beta.4 → 1.0.0-beta.41

Sign up to get free protection for your applications and to get access to all the features.
Files changed (318) hide show
  1. package/dist/plain-design.commonjs.min.js +3 -3
  2. package/dist/plain-design.min.css +37 -29
  3. package/dist/plain-design.min.js +3 -3
  4. package/dist/report.html +5 -5
  5. package/package.json +9 -8
  6. package/src/packages/build.ts +2 -10
  7. package/src/packages/components/$object/createObjectService.tsx +31 -20
  8. package/src/packages/components/$object/object.service.utils.ts +7 -3
  9. package/src/packages/components/$previewer/ImagePreviewerFixedContainer.tsx +108 -0
  10. package/src/packages/components/$previewer/image-previewer-fixed-container.scss +18 -0
  11. package/src/packages/components/$previewer/index.tsx +52 -0
  12. package/src/packages/components/Alert/alert.scss +3 -3
  13. package/src/packages/components/Application/service/useApplicationService.tsx +2 -0
  14. package/src/packages/components/Application/theme/theme.ts +3 -3
  15. package/src/packages/components/ArrowStepGroup/arrow-step.scss +4 -4
  16. package/src/packages/components/AutoTable/filter/useTableOption.filter.form.tsx +1 -0
  17. package/src/packages/components/AutoTable/use/useTableOption.methods.tsx +2 -0
  18. package/src/packages/components/AutoTable/use/useTableOption.state.tsx +1 -0
  19. package/src/packages/components/AutoTable/use/useTableOption.table.tsx +3 -3
  20. package/src/packages/components/AutoTable/utils/TableOption.space.tsx +4 -0
  21. package/src/packages/components/Badge/badge.scss +1 -1
  22. package/src/packages/components/Button/button.scss +2 -2
  23. package/src/packages/components/Card/card.scss +1 -1
  24. package/src/packages/components/Carousel/carousel.scss +391 -0
  25. package/src/packages/components/Carousel/index.tsx +569 -22
  26. package/src/packages/components/CarouselItem/index.tsx +77 -0
  27. package/src/packages/components/CascadePanel/list/CascadeListPanelItem.tsx +3 -3
  28. package/src/packages/components/CheckboxInner/checkbox-inner.scss +1 -1
  29. package/src/packages/components/ColorPicker/sub/ColorSlider.tsx +8 -5
  30. package/src/packages/components/ColorPicker/sub/ColorSvPanel.tsx +7 -4
  31. package/src/packages/components/DatePicker/date.scss +1 -1
  32. package/src/packages/components/Dialog/dialog.scss +1 -1
  33. package/src/packages/components/Dialog/index.tsx +4 -3
  34. package/src/packages/components/Dialog/useDialogMovable.tsx +7 -4
  35. package/src/packages/components/Dialog/utils/dialog.mouse.ts +4 -2
  36. package/src/packages/components/Dropdown/dropdown.public.scss +10 -0
  37. package/src/packages/components/Dropdown/dropdown.utils.tsx +3 -1
  38. package/src/packages/components/Dropdown/index.tsx +2 -2
  39. package/src/packages/components/DropdownOption/index.tsx +3 -3
  40. package/src/packages/components/DropdownSeparator/index.tsx +8 -0
  41. package/src/packages/components/FilterFormMultiple/index.tsx +31 -10
  42. package/src/packages/components/Image/image.scss +3 -3
  43. package/src/packages/components/ImagePreviewer/ImagePreviewer.tsx +574 -0
  44. package/src/packages/components/ImagePreviewer/ImagePreviewerButtonBar.tsx +140 -0
  45. package/src/packages/components/ImagePreviewer/ImagePreviewerCarouselImage.tsx +54 -0
  46. package/src/packages/components/ImagePreviewer/ImagePreviewerGallery.tsx +202 -0
  47. package/src/packages/components/ImagePreviewer/PreviewerLoading.tsx +26 -0
  48. package/src/packages/components/ImagePreviewer/image-previewer.scss +244 -0
  49. package/src/packages/components/ImagePreviewer/image-previewer.utils.tsx +135 -0
  50. package/src/packages/components/ImagePreviewer/index.tsx +5 -0
  51. package/src/packages/components/ImagePreviewer/previewer-loading.scss +52 -0
  52. package/src/packages/components/Input/index.scss +2 -2
  53. package/src/packages/components/Input/useMultipleInput.tsx +2 -76
  54. package/src/packages/components/Input/useTextareaInput.tsx +10 -5
  55. package/src/packages/components/Input/uses/useInputHooks.tsx +11 -11
  56. package/src/packages/components/InputNumber/NumberResize.tsx +20 -3
  57. package/src/packages/components/InputNumber/input-number.utils.tsx +7 -5
  58. package/src/packages/components/InputNumber/number.scss +10 -1
  59. package/src/packages/components/InputNumber/useInputNumber.public.tsx +25 -6
  60. package/src/packages/components/Layout/index.tsx +31 -0
  61. package/src/packages/components/Layout/layout.scss +227 -0
  62. package/src/packages/components/Layout/layout.utils.ts +3 -0
  63. package/src/packages/components/LayoutSection/index.tsx +67 -0
  64. package/src/packages/components/LayoutSection/useLayoutSectionResizer.tsx +184 -0
  65. package/src/packages/components/LoadingMask/index.tsx +1 -1
  66. package/src/packages/components/PageThemeUtils/index.tsx +54 -14
  67. package/src/packages/components/Pagination/pagination.scss +2 -2
  68. package/src/packages/components/PlcOv/index.tsx +14 -4
  69. package/src/packages/components/Popup/index.tsx +24 -10
  70. package/src/packages/components/ProgressBar/progress-bar.scss +1 -1
  71. package/src/packages/components/Rate/index.tsx +3 -1
  72. package/src/packages/components/Scroll/HorizontalScrollbar.tsx +7 -3
  73. package/src/packages/components/Scroll/VerticalScrollbar.tsx +7 -3
  74. package/src/packages/components/Scroll/index.tsx +6 -6
  75. package/src/packages/components/Select/createPublicSelectRender.tsx +1 -1
  76. package/src/packages/components/Slider/slider.scss +1 -1
  77. package/src/packages/components/Slider/useSliderDotDragier.tsx +7 -4
  78. package/src/packages/components/SortList/index.tsx +191 -0
  79. package/src/packages/components/SortList/sort-list.scss +11 -0
  80. package/src/packages/components/StackCard/index.tsx +416 -0
  81. package/src/packages/components/StackCard/stack-card.scss +40 -0
  82. package/src/packages/components/StackCardItem/index.tsx +24 -0
  83. package/src/packages/components/StepGroup/step-group.scss +9 -9
  84. package/src/packages/components/TabGroup/TabsInner.tsx +5 -3
  85. package/src/packages/components/TabGroup/header/horizontal/tabs-header-horizontal.scss +0 -1
  86. package/src/packages/components/TabGroup/index.tsx +5 -1
  87. package/src/packages/components/TabGroup/tabs.scss +3 -0
  88. package/src/packages/components/Table/standard/PlcExpand.tsx +12 -20
  89. package/src/packages/components/Table/standard/PlcOperation/PlcOperation.tsx +1 -1
  90. package/src/packages/components/Table/standard/PlcOperation/outer-operation.scss +2 -0
  91. package/src/packages/components/Table/standard/PlcTree/RenderPlcTreeNode.tsx +2 -1
  92. package/src/packages/components/Table/table/Table.tsx +10 -3
  93. package/src/packages/components/Table/table/body/row.tsx +1 -1
  94. package/src/packages/components/Table/table/body/useCellValue.tsx +10 -6
  95. package/src/packages/components/Table/table/head/useHeadCellResize.ts +8 -3
  96. package/src/packages/components/Table/table/table.scss +2 -1
  97. package/src/packages/components/Table/table/use/useTableDraggier.col.tsx +10 -5
  98. package/src/packages/components/Table/table/use/useTableDraggier.row.tsx +12 -7
  99. package/src/packages/components/Table/table/use/useTableFormEditor.tsx +1 -1
  100. package/src/packages/components/Table/table/use/useTableModifyEditor.tsx +1 -1
  101. package/src/packages/components/Table/table/utils/createTableHooks.ts +4 -2
  102. package/src/packages/components/Table/table/utils/table.utils.ts +6 -1
  103. package/src/packages/components/ThemeEditor/index.tsx +173 -0
  104. package/src/packages/components/ThemeEditor/theme-editor.scss +105 -0
  105. package/src/packages/components/ThemePrimaryColors/index.ts +5 -0
  106. package/src/packages/components/Tree/RenderTreeNode.tsx +8 -3
  107. package/src/packages/components/Tree/index.tsx +4 -3
  108. package/src/packages/components/Tree/tree.scss +42 -9
  109. package/src/packages/components/TreeCore/TreeCore.type.tsx +2 -0
  110. package/src/packages/components/TreeCore/createTreeCore.tsx +5 -1
  111. package/src/packages/components/TreeCore/createTreeDraggier.tsx +70 -56
  112. package/src/packages/components/TreeCore/createTreeMethods.tsx +1 -0
  113. package/src/packages/components/TreeCore/createTreeProps.ts +2 -1
  114. package/src/packages/components/TreeNodeWithMenu/index.tsx +91 -0
  115. package/src/packages/components/TreeNodeWithMenu/tree-node-with-menu.scss +39 -0
  116. package/src/packages/components/TreeNodeWithMenu/treeNodeWithMenu.utils.ts +12 -0
  117. package/src/packages/components/VirtualList/index.tsx +15 -6
  118. package/src/packages/components/VirtualList/useVirtualList.tsx +182 -107
  119. package/src/packages/components/VirtualList/virtual-list.scss +31 -17
  120. package/src/packages/components/VirtualTable/index.tsx +7 -7
  121. package/src/packages/components/VirtualTable/virtual-table.scss +1 -2
  122. package/src/packages/components/createProvider/index.ts +5 -0
  123. package/src/packages/components/nextPopupId/index.ts +5 -0
  124. package/src/packages/components/useDialog/DialogService.tsx +13 -1
  125. package/src/packages/components/useDialog/index.tsx +1 -1
  126. package/src/packages/components/useImage/ImageService.tsx +7 -4
  127. package/src/packages/components/useMessage/Message.tsx +5 -1
  128. package/src/packages/components/useMessage/message.scss +5 -1
  129. package/src/packages/components/useNotice/notice.scss +2 -2
  130. package/src/packages/components/usePopup/PopupItem.tsx +45 -26
  131. package/src/packages/components/usePopup/popup-item.scss +5 -1
  132. package/src/packages/components/usePopup/usePopup.tsx +23 -7
  133. package/src/packages/components/usePopup/usePopupManager.tsx +2 -1
  134. package/src/packages/components/usePopup/utils/popup.utils.ts +2 -1
  135. package/src/packages/components/usePopupManager/index.ts +5 -0
  136. package/src/packages/components/usePopupTrigger/index.tsx +5 -0
  137. package/src/packages/components/useReferenceTrigger/index.tsx +5 -0
  138. package/src/packages/components/useTooltip/index.tsx +10 -2
  139. package/src/packages/components/useWatchAutoClear/index.ts +5 -0
  140. package/src/packages/entry.tsx +48 -2
  141. package/src/packages/i18n/lang/en-us.ts +36 -0
  142. package/src/packages/i18n/lang/zh-cn.ts +36 -0
  143. package/src/packages/uses/useDragHorizontalScroll.ts +82 -0
  144. package/src/packages/uses/useEdit.ts +5 -1
  145. package/src/packages/uses/useStyle.tsx +10 -2
  146. package/src/packages/utils/ClientZoom.ts +24 -2
  147. package/src/packages/utils/ComponentUtils.ts +10 -0
  148. package/src/packages/utils/buildCycleIndexList.ts +31 -0
  149. package/src/packages/utils/getDeviceInfo.ts +44 -44
  150. package/src/packages/utils/getRectAutoFormat.ts +9 -0
  151. package/src/packages/utils/inheritSlots.ts +28 -0
  152. package/src/packages/utils/notNull.ts +9 -0
  153. package/src/packages/utils/useMove.tsx +10 -4
  154. package/src/packages/utils/watchEffectAutoClear.ts +19 -7
  155. package/src/packages/components/CarouselGroup/carousel.scss +0 -143
  156. package/src/packages/components/CarouselGroup/index.tsx +0 -274
  157. package/src/pages/data/address.json +0 -39317
  158. package/src/pages/data/data-1.json +0 -754
  159. package/src/pages/data/data-2.json +0 -3006
  160. package/src/pages/data/data-200.json +0 -5206
  161. package/src/pages/data/data-2000.json +0 -51954
  162. package/src/pages/data/data-50.json +0 -2075
  163. package/src/pages/data/data.json +0 -30002
  164. package/src/pages/data/demo.json +0 -1702
  165. package/src/pages/data/mock.database.js +0 -43
  166. package/src/pages/data/mock.js +0 -141
  167. package/src/pages/data/tree.data.json +0 -87
  168. package/src/pages/env/config/local.js +0 -3
  169. package/src/pages/env/config/prod.js +0 -3
  170. package/src/pages/env/config/undefined.js +0 -1
  171. package/src/pages/env/env.d.ts +0 -4
  172. package/src/pages/env/index.ts +0 -1
  173. package/src/pages/history/createHistory.ts +0 -94
  174. package/src/pages/history/history.utils.ts +0 -64
  175. package/src/pages/index/App.tsx +0 -17
  176. package/src/pages/index/Demo/DemoLine.tsx +0 -23
  177. package/src/pages/index/Demo/DemoRow.scss +0 -128
  178. package/src/pages/index/Demo/DemoRow.tsx +0 -71
  179. package/src/pages/index/Demo/DemoRow.utils.ts +0 -23
  180. package/src/pages/index/Demo/DemoRowController.tsx +0 -45
  181. package/src/pages/index/Demo/index.ts +0 -8
  182. package/src/pages/index/app.scss +0 -192
  183. package/src/pages/index/components/AutoTable/AutoHeightAutoRow.tsx +0 -51
  184. package/src/pages/index/components/AutoTable/AutoHeightFixedRow.tsx +0 -50
  185. package/src/pages/index/components/AutoTable/AutoTableBasicUsage.tsx +0 -75
  186. package/src/pages/index/components/AutoTable/AutoTableCascade.tsx +0 -99
  187. package/src/pages/index/components/AutoTable/AutoTableDefaultSearch.tsx +0 -73
  188. package/src/pages/index/components/AutoTable/AutoTableFiles.tsx +0 -26
  189. package/src/pages/index/components/AutoTable/AutoTableFill.tsx +0 -51
  190. package/src/pages/index/components/AutoTable/AutoTableGroupUsage.tsx +0 -71
  191. package/src/pages/index/components/AutoTable/AutoTableObjectPicker.tsx +0 -181
  192. package/src/pages/index/components/AutoTable/AutoTableOvList.tsx +0 -80
  193. package/src/pages/index/components/AutoTable/AutoTableProductList.tsx +0 -98
  194. package/src/pages/index/components/AutoTable/AutoTableRowFormatter.tsx +0 -58
  195. package/src/pages/index/components/AutoTable/FixedHeightAutoRow.tsx +0 -50
  196. package/src/pages/index/components/AutoTable/FixedHeightFixedRow.tsx +0 -49
  197. package/src/pages/index/components/bus/DemoAddress.tsx +0 -181
  198. package/src/pages/index/components/bus/DemoAddressCascade.tsx +0 -132
  199. package/src/pages/index/components/bus/DemoFilter.tsx +0 -184
  200. package/src/pages/index/components/columns/DemoPlcAddress.tsx +0 -161
  201. package/src/pages/index/components/columns/DemoPlcDate.tsx +0 -363
  202. package/src/pages/index/components/columns/DemoPlcSelect.tsx +0 -505
  203. package/src/pages/index/components/columns/DemoPlcTime.tsx +0 -293
  204. package/src/pages/index/components/columns/DemoTableColumns.tsx +0 -88
  205. package/src/pages/index/components/form/DemoFormBasic.tsx +0 -516
  206. package/src/pages/index/components/form/DemoFormBlur.tsx +0 -204
  207. package/src/pages/index/components/form/DemoFormDynamicFields.tsx +0 -54
  208. package/src/pages/index/components/form/DemoFormEditControl.tsx +0 -164
  209. package/src/pages/index/components/form/DemoFormElement.tsx +0 -207
  210. package/src/pages/index/components/form/DemoFormLayout.scss +0 -7
  211. package/src/pages/index/components/form/DemoFormLayout.tsx +0 -311
  212. package/src/pages/index/components/form/DemoFormSimplify.tsx +0 -587
  213. package/src/pages/index/components/form/DemoFormSize.tsx +0 -274
  214. package/src/pages/index/components/form/DemoFormVertical.tsx +0 -280
  215. package/src/pages/index/components/normal/DemoAlert.tsx +0 -66
  216. package/src/pages/index/components/normal/DemoBadge.tsx +0 -53
  217. package/src/pages/index/components/normal/DemoButton.tsx +0 -300
  218. package/src/pages/index/components/normal/DemoCard.tsx +0 -176
  219. package/src/pages/index/components/normal/DemoCarousel.tsx +0 -125
  220. package/src/pages/index/components/normal/DemoCascade.tsx +0 -880
  221. package/src/pages/index/components/normal/DemoCheckbox.scss +0 -24
  222. package/src/pages/index/components/normal/DemoCheckbox.tsx +0 -294
  223. package/src/pages/index/components/normal/DemoCollapse.tsx +0 -104
  224. package/src/pages/index/components/normal/DemoColor.scss +0 -20
  225. package/src/pages/index/components/normal/DemoColor.tsx +0 -82
  226. package/src/pages/index/components/normal/DemoColorPicker.tsx +0 -163
  227. package/src/pages/index/components/normal/DemoDate.tsx +0 -443
  228. package/src/pages/index/components/normal/DemoDialog.tsx +0 -507
  229. package/src/pages/index/components/normal/DemoDropdown.tsx +0 -463
  230. package/src/pages/index/components/normal/DemoGrid.scss +0 -26
  231. package/src/pages/index/components/normal/DemoGrid.tsx +0 -181
  232. package/src/pages/index/components/normal/DemoIcon.tsx +0 -39
  233. package/src/pages/index/components/normal/DemoImage.tsx +0 -122
  234. package/src/pages/index/components/normal/DemoInput.scss +0 -0
  235. package/src/pages/index/components/normal/DemoInput.tsx +0 -790
  236. package/src/pages/index/components/normal/DemoKeepAlive.tsx +0 -505
  237. package/src/pages/index/components/normal/DemoList.scss +0 -15
  238. package/src/pages/index/components/normal/DemoList.tsx +0 -82
  239. package/src/pages/index/components/normal/DemoLoading.tsx +0 -83
  240. package/src/pages/index/components/normal/DemoNumber.tsx +0 -266
  241. package/src/pages/index/components/normal/DemoPagination.tsx +0 -164
  242. package/src/pages/index/components/normal/DemoPopup.tsx +0 -695
  243. package/src/pages/index/components/normal/DemoProgress.tsx +0 -133
  244. package/src/pages/index/components/normal/DemoRadio.scss +0 -16
  245. package/src/pages/index/components/normal/DemoRadio.tsx +0 -188
  246. package/src/pages/index/components/normal/DemoRate.tsx +0 -77
  247. package/src/pages/index/components/normal/DemoScroll.scss +0 -22
  248. package/src/pages/index/components/normal/DemoScroll.tsx +0 -300
  249. package/src/pages/index/components/normal/DemoSegment.tsx +0 -71
  250. package/src/pages/index/components/normal/DemoSelect.tsx +0 -819
  251. package/src/pages/index/components/normal/DemoSlider.tsx +0 -128
  252. package/src/pages/index/components/normal/DemoStep.scss +0 -18
  253. package/src/pages/index/components/normal/DemoStep.tsx +0 -291
  254. package/src/pages/index/components/normal/DemoTab.tsx +0 -338
  255. package/src/pages/index/components/normal/DemoTag.tsx +0 -100
  256. package/src/pages/index/components/normal/DemoTime.tsx +0 -403
  257. package/src/pages/index/components/normal/DemoToggle.tsx +0 -56
  258. package/src/pages/index/components/normal/DemoTooltip.tsx +0 -120
  259. package/src/pages/index/components/normal/DemoTree.tsx +0 -1099
  260. package/src/pages/index/components/normal/DemoUpload.tsx +0 -484
  261. package/src/pages/index/components/normal/DemoVirtualList.tsx +0 -378
  262. package/src/pages/index/components/service/DemoDialogService.tsx +0 -248
  263. package/src/pages/index/components/service/DemoFileService.tsx +0 -110
  264. package/src/pages/index/components/service/DemoMessageService.tsx +0 -100
  265. package/src/pages/index/components/service/DemoNoticeService.tsx +0 -99
  266. package/src/pages/index/components/service/DemoPopupService.tsx +0 -322
  267. package/src/pages/index/components/table/DemoPlcOperation.tsx +0 -307
  268. package/src/pages/index/components/table/DemoTableBasic.tsx +0 -220
  269. package/src/pages/index/components/table/DemoTableCheck.tsx +0 -78
  270. package/src/pages/index/components/table/DemoTableClassAndStyle.scss +0 -18
  271. package/src/pages/index/components/table/DemoTableClassAndStyle.tsx +0 -112
  272. package/src/pages/index/components/table/DemoTableColDraggable.tsx +0 -80
  273. package/src/pages/index/components/table/DemoTableEdit.tsx +0 -136
  274. package/src/pages/index/components/table/DemoTableExpand.tsx +0 -181
  275. package/src/pages/index/components/table/DemoTableFixed.tsx +0 -131
  276. package/src/pages/index/components/table/DemoTableFormatter.tsx +0 -66
  277. package/src/pages/index/components/table/DemoTableOverflowTooltip.tsx +0 -67
  278. package/src/pages/index/components/table/DemoTableRowDraggable.tsx +0 -106
  279. package/src/pages/index/components/table/DemoTableSlots.tsx +0 -153
  280. package/src/pages/index/components/table/DemoTableSpan.tsx +0 -167
  281. package/src/pages/index/components/table/DemoTableTree.tsx +0 -976
  282. package/src/pages/index/components/table/DemoVirtualTable.tsx +0 -274
  283. package/src/pages/index/components/test/DemoI18n.tsx +0 -27
  284. package/src/pages/index/components/test/DemoI18n2.jsx +0 -11
  285. package/src/pages/index/home/AppContent.tsx +0 -69
  286. package/src/pages/index/home/AppHead.tsx +0 -104
  287. package/src/pages/index/home/AppHome.tsx +0 -16
  288. package/src/pages/index/home/AppMenu.tsx +0 -38
  289. package/src/pages/index/home/menus.tsx +0 -217
  290. package/src/pages/index/main.tsx +0 -23
  291. package/src/pages/index/nav/$nav.ts +0 -41
  292. package/src/pages/index/pages.d.ts +0 -6
  293. package/src/pages/libs/iconfont-fontcls/demo.css +0 -539
  294. package/src/pages/libs/iconfont-fontcls/demo_index.html +0 -303
  295. package/src/pages/libs/iconfont-fontcls/iconfont.css +0 -35
  296. package/src/pages/libs/iconfont-fontcls/iconfont.js +0 -1
  297. package/src/pages/libs/iconfont-fontcls/iconfont.json +0 -44
  298. package/src/pages/libs/iconfont-fontcls/iconfont.ttf +0 -0
  299. package/src/pages/libs/iconfont-fontcls/iconfont.woff +0 -0
  300. package/src/pages/libs/iconfont-fontcls/iconfont.woff2 +0 -0
  301. package/src/pages/libs/iconfont-symbol/demo.css +0 -539
  302. package/src/pages/libs/iconfont-symbol/demo_index.html +0 -303
  303. package/src/pages/libs/iconfont-symbol/iconfont.css +0 -35
  304. package/src/pages/libs/iconfont-symbol/iconfont.js +0 -1
  305. package/src/pages/libs/iconfont-symbol/iconfont.json +0 -44
  306. package/src/pages/libs/iconfont-symbol/iconfont.ttf +0 -0
  307. package/src/pages/libs/iconfont-symbol/iconfont.woff +0 -0
  308. package/src/pages/libs/iconfont-symbol/iconfont.woff2 +0 -0
  309. package/src/pages/libs/install.iconfont-fontcls.tsx +0 -11
  310. package/src/pages/libs/install.iconfont-symbol.scss +0 -7
  311. package/src/pages/libs/install.iconfont-symbol.tsx +0 -14
  312. package/src/pages/module/address.ts +0 -27
  313. package/src/pages/module/http.ts +0 -24
  314. package/src/pages/module/index.ts +0 -19
  315. package/src/pages/module/object.ts +0 -5
  316. package/src/pages/module/ov.tsx +0 -13
  317. package/src/pages/module/upload.ts +0 -9
  318. package/src/pages/module/useTableOption.ts +0 -28
@@ -281,7 +281,7 @@ export const PlcOperation = designComponent({
281
281
  * @author 韦胜健
282
282
  * @date 2022.11.25 19:20
283
283
  */
284
- effects.push(table.hooks.onVirtualPageIndexChange.use(({ start }) => {state.virtualRowStart = start;}));
284
+ effects.push(table.hooks.onVirtualPageIndexChange.use(({ startIndex }) => {state.virtualRowStart = startIndex;}));
285
285
 
286
286
  onBeforeUnmount(() => effects.clear());
287
287
 
@@ -19,6 +19,8 @@
19
19
  margin-bottom: $margin;
20
20
 
21
21
  .table-operation-bar-right {
22
+ margin-left: 12px;
23
+
22
24
  & > * + * {
23
25
  margin-left: calc(#{$margin} - 8px);
24
26
  }
@@ -80,6 +80,7 @@ export const RenderPlcTreeNode = designComponent({
80
80
  {props.treeCore.props.multiple && (
81
81
  <div className={`tree-node-checker plc-tree-button`}>
82
82
  <Checkbox
83
+ key={props.treeNode.id}
83
84
  checkStatus={checkStatus.value}
84
85
  disabled={!props.treeNode.isCheckAble()}
85
86
  onClick={handler.onClickCheckbox}
@@ -89,7 +90,7 @@ export const RenderPlcTreeNode = designComponent({
89
90
  {props.treeCore.props.draggable && (
90
91
  <div
91
92
  className={classnames(['tree-node-draggier', 'plc-tree-button', { 'tree-node-draggier-disable': !props.treeCore.utils.isAllowDraggable(props.treeNode) }])}
92
- onMouseDown={handler.onMousedownDraggier.value}
93
+ onMouseDown={props.treeNode.empty ? undefined : handler.onMousedownDraggier.value}
93
94
  >
94
95
  <Icon icon="pi-menu"/>
95
96
  </div>
@@ -108,6 +108,8 @@ export const Table = designComponent({
108
108
  */
109
109
  const { bodyNodes, summaryNodes } = useTableNode({ props, formValidator, dataRef });
110
110
 
111
+ const tableBodyNodes = computed(() => hooks.onTableMessyData.exec({ data: [...bodyNodes.value] }).data);
112
+
111
113
  const showRows = computed((): number => {
112
114
  const bodyRows = bodyNodes.value.length;
113
115
  if (props.showRows === 'auto') {
@@ -323,9 +325,10 @@ export const Table = designComponent({
323
325
  <VirtualTable
324
326
  ref={onRefVirtual}
325
327
  height={tableHeight.value || undefined}
326
- data={bodyNodes.value}
328
+ data={tableBodyNodes.value}
327
329
  headData={plcData.value?.headPlcListArray}
328
330
  size={numberState.bodyRowHeight}
331
+ dynamicSize={props.dynamicSize}
329
332
  headSize={numberState.headRowHeight}
330
333
  width={plcData.value!.targetTableWidth!}
331
334
  summaryData={summaryNodes.value}
@@ -351,8 +354,12 @@ export const Table = designComponent({
351
354
  </tr>
352
355
  ))
353
356
  ),
354
- default: ({ item, index, virtualIndex }) => (
355
- <PltRow table={refer} node={item} vid={index} key={virtualIndex}/>
357
+ default: ({ item, vid, vIndex, index }) => (
358
+ typeof item !== "function" ? (
359
+ <PltRow table={refer} node={item} vid={vid} key={props.virtualRowType === 'virtualIndex' ? vIndex : index}/>
360
+ ) : (
361
+ item({ vid, vIndex, index })
362
+ )
356
363
  ),
357
364
  }}
358
365
  />
@@ -34,7 +34,7 @@ export const PltRow = designComponent({
34
34
  render: () => {
35
35
  return props.table.hooks.onRenderRow.exec({
36
36
  content: (
37
- <tr className={classes.value} style={{ height: `${props.table.numberState.bodyRowHeight}px` }} data-vid={props.vid} {...handler}>
37
+ <tr className={classes.value} style={{ height: `${props.table.numberState.bodyRowHeight}px` }} data-vid={props.vid} data-idx={String(props.node.state.index == null ? "" : props.node.state.index)} {...handler}>
38
38
  {(props.table.bodyPlcList.value?.map((plc) => <PltCell key={plc.plcKey} table={props.table} node={props.node} plc={plc}/>))}
39
39
  </tr>
40
40
  ),
@@ -84,13 +84,17 @@ export function useCellValue(
84
84
  };
85
85
  (async () => {
86
86
  try {
87
+ const sv = sourceValue.value;
88
+ const sr = row.value;
87
89
  const value = await asyncFormatterFunction(sourceValue.value, { ...cellRenderScope, ...formatterOptions });
88
- asyncState.asyncValue = {
89
- sourceValue: sourceValue.value,
90
- row: row.value,
91
- targetValue: value,
92
- loading: false,
93
- };
90
+ if (sv === sourceValue.value && sr === row.value) {
91
+ asyncState.asyncValue = {
92
+ sourceValue: sourceValue.value,
93
+ row: row.value,
94
+ targetValue: value,
95
+ loading: false,
96
+ };
97
+ }
94
98
  } catch (e) {
95
99
  /*异步格式化失败*/
96
100
  console.error(e);
@@ -4,6 +4,7 @@ import {Table} from "../../index";
4
4
  import {tPlcType} from "../../plc/utils/plc.utils";
5
5
  import {addClass} from "plain-utils/dom/addClass";
6
6
  import {getComponentCls, iMouseEvent} from "plain-design-composition";
7
+ import {ClientZoom} from "../../../ClientZoom";
7
8
 
8
9
  /**
9
10
  * 处理表头拖拽调整宽度的功能
@@ -21,6 +22,8 @@ export function useHeadCellResize(table: typeof Table.use.class, getPlc: () => t
21
22
  const handler = {
22
23
  mousedown: (e: iMouseEvent) => {
23
24
 
25
+ const { clientX } = ClientZoom.getClientPosition(e);
26
+
24
27
  const tableEl = table.refs.el!;
25
28
 
26
29
  e.preventDefault();
@@ -29,7 +32,7 @@ export function useHeadCellResize(table: typeof Table.use.class, getPlc: () => t
29
32
  window.addEventListener('mousemove', handler.mousemove);
30
33
  window.addEventListener('mouseup', handler.mouseup);
31
34
  disabledUserSelect();
32
- state.startX = e.clientX;
35
+ state.startX = clientX;
33
36
 
34
37
  state.indicatorEl = document.createElement('div');
35
38
 
@@ -55,14 +58,16 @@ export function useHeadCellResize(table: typeof Table.use.class, getPlc: () => t
55
58
  document.body.appendChild(state.indicatorEl);
56
59
  },
57
60
  mousemove: (e: MouseEvent) => {
58
- state.indicatorEl!.style.transform = `translate3d(${e.clientX}px,0,0)`;
61
+ const { clientX } = ClientZoom.getClientPosition(e);
62
+ state.indicatorEl!.style.transform = `translate3d(${clientX}px,0,0)`;
59
63
  },
60
64
  mouseup: (e: MouseEvent) => {
65
+ const { clientX } = ClientZoom.getClientPosition(e);
61
66
  window.removeEventListener('mousemove', handler.mousemove);
62
67
  window.removeEventListener('mouseup', handler.mouseup);
63
68
  enableUserSelect();
64
69
  document.body.removeChild(state.indicatorEl!);
65
- state.endX = e.clientX;
70
+ state.endX = clientX;
66
71
  let durWidth = state.endX - state.startX!;
67
72
  getPlc().setDurWidth(durWidth);
68
73
  }
@@ -100,6 +100,7 @@
100
100
  &.plt-cell-link {
101
101
  color: plv(primary-6);
102
102
  cursor: pointer;
103
+ text-decoration: underline;
103
104
 
104
105
  &:hover {
105
106
  text-decoration: underline;
@@ -109,7 +110,7 @@
109
110
  @include comp(input) {
110
111
  &:not(.input-multiple) {
111
112
  .input-box {
112
- padding-bottom: 4px;
113
+ padding-bottom: 3px;
113
114
  }
114
115
  }
115
116
  }
@@ -12,6 +12,7 @@ import {getComponentCls, iMouseEvent, nextIndex, StyleProperties} from "plain-de
12
12
  import {iTableHooks} from "../utils/createTableHooks";
13
13
  import {iElementRect} from "../../../../utils/getRowEl";
14
14
  import {createEnum} from "plain-utils/utils/createEnum";
15
+ import {ClientZoom} from "../../../ClientZoom";
15
16
 
16
17
  export function useTableDraggierCol(
17
18
  {
@@ -223,11 +224,12 @@ export function useTableDraggierCol(
223
224
  };
224
225
 
225
226
  const start = (e: iMouseEvent, plc: tPlcType) => {
227
+ const { clientX, clientY } = ClientZoom.getClientPosition(e);
226
228
  staticState = {
227
229
  plc,
228
230
  start: {
229
- x: e.clientX,
230
- y: e.clientY,
231
+ x: clientX,
232
+ y: clientY,
231
233
  },
232
234
  data: null
233
235
  };
@@ -237,11 +239,13 @@ export function useTableDraggierCol(
237
239
  const update = (e?: MouseEvent) => {
238
240
  if (!staticState) {return;}
239
241
 
242
+ const { clientX, clientY } = !e ? { clientX: 0, clientY: 0 } : ClientZoom.getClientPosition(e);
243
+
240
244
  let isDragging = !!staticState.data;
241
245
 
242
246
  if (!isDragging) {
243
247
  /*拖拽超过一定距离的时候才开始拖拽,避免与点击事件冲突*/
244
- if (!!e && Math.abs(e.clientX - staticState.start.x) > 5) {
248
+ if (!!e && Math.abs(clientX - staticState.start.x) > 5) {
245
249
  isDragging = true;
246
250
  initDraggierState();
247
251
  }
@@ -253,7 +257,7 @@ export function useTableDraggierCol(
253
257
  }
254
258
 
255
259
  if (!!e) {
256
- staticState.data.move = { x: e.clientX, y: e.clientY };
260
+ staticState.data.move = { x: clientX, y: clientY };
257
261
  }
258
262
  const { data: { cloneTable, move, table, left }, start } = staticState;
259
263
  cloneTable.style.top = table.getBoundingClientRect().top + 'px';
@@ -470,7 +474,8 @@ export function useTableDraggierCol(
470
474
  };
471
475
  const update = (e?: MouseEvent) => {
472
476
  if (!!e) {
473
- staticState!.moveClientX = e.clientX;
477
+ const { clientX } = ClientZoom.getClientPosition(e);
478
+ staticState!.moveClientX = clientX;
474
479
  } else {
475
480
  staticState!.moveScrollLeft = staticState!.scrollParent!.scrollLeft;
476
481
  }
@@ -9,6 +9,7 @@ import {hasClass} from "plain-utils/dom/hasClass";
9
9
  import {addClass} from "plain-utils/dom/addClass";
10
10
  import {disabledUserSelect} from "plain-utils/dom/disabledUserSelect";
11
11
  import {enableUserSelect} from "plain-utils/dom/enableUserSelect";
12
+ import {ClientZoom} from "../../../ClientZoom";
12
13
 
13
14
  export function useTableDraggierRow(
14
15
  {
@@ -85,9 +86,10 @@ export function useTableDraggierRow(
85
86
  };
86
87
  let prevClientY = 0;
87
88
  const update = (e?: MouseEvent) => {
89
+ const { clientY } = !e ? { clientY: prevClientY } : ClientZoom.getClientPosition(e);
88
90
  const moveIndex = (() => {
89
91
  const hostRect = staticState!.bodyHostEl.getBoundingClientRect();
90
- let index = Math.floor((((e?.clientY || prevClientY) - hostRect.top + refs.virtual!.refs.scroll!.freezeState.wrapperScrollTop - (staticState!.headTableEl?.clientHeight || 0)) / numberState.bodyRowHeight));
92
+ let index = Math.floor(((clientY - hostRect.top + refs.virtual!.refs.scroll!.freezeState.wrapperScrollTop - (staticState!.headTableEl?.clientHeight || 0)) / numberState.bodyRowHeight));
91
93
  if (index < 0) {index = 0;}
92
94
  if (index > bodyNodes.value.length - 1) {
93
95
  index = bodyNodes.value.length - 1;
@@ -95,7 +97,7 @@ export function useTableDraggierRow(
95
97
  return index;
96
98
  })();
97
99
  if (moveIndex !== move.state.index) {move.state.index = moveIndex;}
98
- if (!!e) {prevClientY = e.clientY;}
100
+ if (!!e) {prevClientY = clientY;}
99
101
  };
100
102
  return { state, update, start, get staticState() {return staticState;} };
101
103
  })();
@@ -188,9 +190,10 @@ export function useTableDraggierRow(
188
190
  };
189
191
 
190
192
  const start = (e: iMouseEvent, node: iTableNode) => {
191
- const rowEl = (Array.from(refs.el!.querySelectorAll(`.plt-row`)) as HTMLTableRowElement[]).find(i => i.dataset.vid == node.state.index.toString())!;
193
+ const { clientY } = !e ? { clientY: prevClientY } : ClientZoom.getClientPosition(e);
194
+ const rowEl = (Array.from(refs.el!.querySelectorAll(`.plt-row`)) as HTMLTableRowElement[]).find(i => i.dataset.idx == node.state.index.toString())!;
192
195
  const rowRect = rowEl.getBoundingClientRect();
193
- staticState = { startY: e.clientY, startTop: rowRect.top, node, rowEl, data: null, };
196
+ staticState = { startY: clientY, startTop: rowRect.top, node, rowEl, data: null, };
194
197
  /*清理状态*/
195
198
  draggierEffects.push(() => {staticState = null;});
196
199
  };
@@ -199,11 +202,13 @@ export function useTableDraggierRow(
199
202
  const update = (e?: MouseEvent) => {
200
203
  if (!staticState) {return;}
201
204
 
205
+ const { clientY } = !e ? { clientY: prevClientY } : ClientZoom.getClientPosition(e);
206
+
202
207
  let isDragging = !!staticState.data;
203
208
 
204
209
  if (!isDragging) {
205
210
  /*拖拽超过一定距离的时候才开始拖拽,避免与点击事件冲突*/
206
- if (!!e && Math.abs(e.clientY - staticState.startY) > 5) {
211
+ if (!!e && Math.abs(clientY - staticState.startY) > 5) {
207
212
  isDragging = true;
208
213
  initDraggierState();
209
214
  }
@@ -214,7 +219,7 @@ export function useTableDraggierRow(
214
219
  return;
215
220
  }
216
221
 
217
- const durY = (e?.clientY || prevClientY) - staticState.startY;
222
+ const durY = clientY - staticState.startY;
218
223
  let top = staticState.startTop + durY;
219
224
  const minTop = move.staticState!.bodyHostEl.getBoundingClientRect().top + (move.staticState!.headTableEl?.clientHeight || 0);
220
225
  if (top < minTop) {
@@ -229,7 +234,7 @@ export function useTableDraggierRow(
229
234
 
230
235
  staticState.data!.cloneRowEl.style.top = `${top}px`;
231
236
  if (!!e) {
232
- prevClientY = e.clientY;
237
+ prevClientY = clientY;
233
238
  }
234
239
 
235
240
  /*更细move index信息*/
@@ -128,12 +128,12 @@ export function useTableFormEditor(
128
128
  const validateAttrs = pick(plc.props, Object.keys(PlcValidatePropsOption) as (keyof typeof PlcValidatePropsOption)[]);
129
129
  return (
130
130
  <FormItem
131
+ key={index}
131
132
  label={plc.props.formLabel || plc.props.title}
132
133
  field={plc.props.field}
133
134
  required={plc.props.required}
134
135
  rules={plc.props.rules}
135
136
  validator={plc.props.validator}
136
- key={index}
137
137
  disabled={!editable}
138
138
  {...validateAttrs}
139
139
  >
@@ -118,12 +118,12 @@ export function useTableModifyEditor(
118
118
  const validateAttrs = pick(plc.props, Object.keys(PlcValidatePropsOption) as (keyof typeof PlcValidatePropsOption)[]);
119
119
  return (
120
120
  <FormItem
121
+ key={index}
121
122
  label={plc.props.formLabel || plc.props.title}
122
123
  field={plc.props.field}
123
124
  required={plc.props.required}
124
125
  rules={plc.props.rules}
125
126
  validator={plc.props.validator}
126
- key={index}
127
127
  disabled={!editable}
128
128
  {...validateAttrs}
129
129
  >
@@ -1,6 +1,6 @@
1
1
  import {createHooks, createRenderHook, createSyncHooks, iMouseEvent, RenderNode, StyleProperties} from "plain-design-composition";
2
2
  import {tPlcType} from "../../plc/utils/plc.utils";
3
- import {iTableNode} from "./table.utils";
3
+ import {iTableMessyData, iTableNode} from "./table.utils";
4
4
  import {PlainObject} from "plain-utils/utils/event";
5
5
  import {VirtualTable} from "../../../VirtualTable";
6
6
 
@@ -19,7 +19,7 @@ export const createTableHooks = () => {
19
19
  /*是否可以开启虚拟滚动*/
20
20
  onEnableVirtual: createSyncHooks<(data: boolean) => void>(),
21
21
  /*当虚拟滚动的pageIndex变化的时候触发动作*/
22
- onVirtualPageIndexChange: createHooks<(data: { pageIndex: number, start: number }) => void>(),
22
+ onVirtualPageIndexChange: createHooks<(data: { pageIndex: number, startIndex: number }) => void>(),
23
23
  /*点击行动作*/
24
24
  onClickRow: createHooks<(data: { e: iMouseEvent, node: iTableNode }) => void>(),
25
25
  /*双击行动作*/
@@ -52,6 +52,8 @@ export const createTableHooks = () => {
52
52
  onRenderRow: createSyncHooks<(scope: { node: iTableNode, row: any, content: RenderNode }) => void>(),
53
53
  /*表格数据*/
54
54
  onData: createSyncHooks<(scope: { data: PlainObject[] | undefined }) => void>(true),
55
+ /*表格渲染行数据(其中的行数据不一定是tableNode)*/
56
+ onTableMessyData: createSyncHooks<(scope: { data: iTableMessyData[] }) => void>(true),
55
57
  /*处理行样式*/
56
58
  onRowClass: createSyncHooks<(data: { node: iTableNode, classList: any[] }) => void>(true),
57
59
  /*鼠标移动经过row时*/
@@ -1,5 +1,5 @@
1
1
  import {StyleProps, ThemeSize} from "../../../../uses/useStyle";
2
- import {ComponentEvent, ExtractPropTypes, iMouseEvent, MultipleClass, PropType, reactive, StyleProperties, tSlotsType} from "plain-design-composition";
2
+ import {ComponentEvent, ExtractPropTypes, iMouseEvent, MultipleClass, PropType, reactive, RenderNode, StyleProperties, tSlotsType} from "plain-design-composition";
3
3
  import {PlainObject} from "plain-utils/utils/event";
4
4
  import {eFormValidateTrigger, iFormValidatePropsType, iValidateResult} from "../../../Form/validate/validate.utils";
5
5
  import {tPlc, tPlcType} from "../../plc/utils/plc.utils";
@@ -28,7 +28,9 @@ export const TablePropsOptions = {
28
28
  headRowHeight: { type: [String, Number] }, // 表头行高
29
29
  bodyRowHeight: { type: [String, Number] }, // 表体行高
30
30
  virtual: { type: Boolean }, // 开启虚拟行滚动
31
+ virtualRowType: { type: String as PropType<'virtualIndex' | 'realIndex'>, }, // 虚拟滚动的行渲染类型,virtualIndex意思为使用虚拟的行索引作为key渲染行,好处是虚拟滚动时完全复用行组件实例;realIndex意味着虚拟滚动时新的行会重新初始化
31
32
  virtualColumn: { type: Boolean }, // 开启虚拟列滚动
33
+ dynamicSize: { type: Boolean }, // 行虚拟滚动时启用动态高度
32
34
  colDraggable: { type: Boolean }, // 列是否可拖拽移动
33
35
  rowDraggable: { type: Boolean }, // 行是否可以拖拽移动
34
36
  sort: { type: [Object, Array] as PropType<TablePropsSort> }, // 当前排序字段
@@ -130,6 +132,9 @@ export interface iTableNode {
130
132
  saveEdit: (newRow?: PlainObject) => Promise<void>, // 保存编辑,将editRow以及newRow(请求得到的新对象)覆盖data
131
133
  }
132
134
 
135
+ export type iTableMessyRender = (data: { vIndex: number, vid: string }) => RenderNode
136
+ export type iTableMessyData = iTableNode | iTableMessyRender
137
+
133
138
  /**
134
139
  * 创建table node节点数据
135
140
  * @author 韦胜健
@@ -0,0 +1,173 @@
1
+ import './theme-editor.scss';
2
+ import {designComponent, getComponentCls, iHTMLDivElement, onBeforeUnmount, reactive, useClasses, useRefs, useStyles} from "plain-design-composition";
3
+ import Icon from "../Icon";
4
+ import ApplicationConfigurationProvider from "../ApplicationConfigurationProvider";
5
+ import {unit} from "plain-utils/string/unit";
6
+ import {Select} from '../Select';
7
+ import {SelectOption} from "../SelectOption";
8
+ import PageThemeUtils, {ThemePrimaryColors} from "../PageThemeUtils";
9
+ import ClientZoom from "../ClientZoom";
10
+ import {addWindowListener} from 'plain-utils/dom/addWindowListener';
11
+ import i18n from "../i18n";
12
+
13
+ export const ThemeEditor = designComponent({
14
+ name: 'theme-editor',
15
+ props: {
16
+ bottom: { type: Number, default: 55 }
17
+ },
18
+ setup({ props }) {
19
+
20
+ const { refs, onRef } = useRefs({ el: iHTMLDivElement });
21
+
22
+ const state = reactive({
23
+ isExpand: false,
24
+
25
+ size: PageThemeUtils.state.size || 'normal',
26
+ dark: PageThemeUtils.state.dark ? 'dark' : 'light',
27
+ shape: PageThemeUtils.state.shape || 'square',
28
+ zoom: PageThemeUtils.state.zoom || null,
29
+ primaryKey: PageThemeUtils.state.primaryKey as string || 'default',
30
+ inputMode: PageThemeUtils.state.inputMode || 'flat',
31
+ });
32
+
33
+ const applicationConfiguration = ApplicationConfigurationProvider.inject();
34
+
35
+ const classes = useClasses(() => [
36
+ getComponentCls('theme-editor'),
37
+ {
38
+ 'is-expand': state.isExpand
39
+ }
40
+ ]);
41
+
42
+ const styles = useStyles((style) => {
43
+ style.bottom = unit(props.bottom);
44
+ });
45
+
46
+ const handler = {
47
+ handleClickInner: () => {state.isExpand = !state.isExpand;},
48
+ onSizeChange: () => {PageThemeUtils.size(state.size);},
49
+ onShapeChange: () => {PageThemeUtils.shape(state.shape);},
50
+ onZoomChange: () => {
51
+ PageThemeUtils.zoom(state.zoom);
52
+ ClientZoom.set(state.zoom);
53
+ },
54
+ onDarkChange: () => {
55
+ const val = !state.dark ? false : state.dark === 'dark';
56
+ PageThemeUtils.toggle(val);
57
+ if (val && state.primaryKey === 'dark') {
58
+ state.primaryKey = 'light';
59
+ handler.onPrimaryChange();
60
+ } else if (!val && state.primaryKey === 'light') {
61
+ state.primaryKey = 'dark';
62
+ handler.onPrimaryChange();
63
+ }
64
+ },
65
+ onPrimaryChange: () => {PageThemeUtils.primary(state.primaryKey);},
66
+ onInputModeChange: () => {PageThemeUtils.inputMode(state.inputMode);},
67
+ };
68
+
69
+ const publicPopperAttrs = {};
70
+
71
+ onBeforeUnmount(
72
+ addWindowListener('click', (e) => {
73
+ if (!refs.el?.contains(e.target as HTMLElement) && !!state.isExpand) {
74
+ state.isExpand = false;
75
+ }
76
+ })
77
+ );
78
+
79
+ const publicBlockStyles = { height: '1em', width: '1em', display: 'inline-block', marginRight: '4px', border: `solid 1px var(--${getComponentCls('secondary-3')})` };
80
+
81
+ return () => (
82
+ <div className={classes.value} style={styles.value} ref={onRef.el}>
83
+ <div className="theme-editor-inner" onClick={handler.handleClickInner}>
84
+ <div className="theme-editor-inner-cover"/>
85
+ <Icon icon={state.isExpand ? 'pi-close' : applicationConfiguration.value.theme.dark ? 'pi-moon-fill' : 'pi-sun-fill'}/>
86
+ </div>
87
+ {state.isExpand && (
88
+ <div className="theme-editor-form">
89
+ <div>
90
+ <div>{i18n('theme.inputMode').d('输入框类型')}</div>
91
+ <div>
92
+ <Select v-model={state.inputMode} onChange={handler.onInputModeChange} size="mini" popperAttrs={publicPopperAttrs}>
93
+ <SelectOption label={i18n('theme.inputModeFlat').d('输入框:填充')} val="flat"/>
94
+ <SelectOption label={i18n('theme.inputModelStroke').d('输入框:描边')} val="stroke"/>
95
+ </Select>
96
+ </div>
97
+ </div>
98
+
99
+ <div>
100
+ <div>{i18n('theme.primaryColor').d('主题颜色')}</div>
101
+ <div>
102
+ <Select v-model={state.primaryKey} onChange={handler.onPrimaryChange} size="mini" popperAttrs={publicPopperAttrs}>
103
+ {Object.entries(ThemePrimaryColors).map(([key, value]) => (
104
+ <SelectOption label={i18n('colorName.' + value!.label as any).d(value!.label)} val={key} key={key}>
105
+ <div className={getComponentCls('theme-editor-block-item')}>
106
+ {!!value!.primary && <span style={{ ...publicBlockStyles, background: value!.primary }}/>}
107
+ <span>{i18n('colorName.' + value!.label as any).d(value!.label)}</span>
108
+ </div>
109
+ </SelectOption>
110
+ ))}
111
+ </Select>
112
+ </div>
113
+ </div>
114
+
115
+ <div>
116
+ <div>{i18n('theme.size').d('大小尺寸')}</div>
117
+ <div>
118
+ <Select v-model={state.size} onChange={handler.onSizeChange} size="mini" popperAttrs={publicPopperAttrs}>
119
+ <SelectOption label={i18n('theme.sizeLarge').d('大尺寸')} val="large"/>
120
+ <SelectOption label={i18n('theme.sizeNormal').d('中等尺寸')} val="normal"/>
121
+ <SelectOption label={i18n('theme.sizeSmall').d('小尺寸')} val="small"/>
122
+ <SelectOption label={i18n('theme.sizeMini').d('极小尺寸')} val="mini"/>
123
+ </Select>
124
+ </div>
125
+ </div>
126
+
127
+ <div>
128
+ <div>{i18n('theme.darkMode').d('黑白主题')}</div>
129
+ <div>
130
+ <Select v-model={state.dark} onChange={handler.onDarkChange} size="mini" popperAttrs={publicPopperAttrs}>
131
+ <SelectOption label={i18n('theme.darkModeOn').d('黑色主题')} val="dark"/>
132
+ <SelectOption label={i18n('theme.darkModeOff').d('白色主题')} val="light"/>
133
+ </Select>
134
+ </div>
135
+ </div>
136
+
137
+ <div>
138
+ <div>{i18n('theme.radiusMode').d('圆角类型')}</div>
139
+ <div>
140
+ <Select v-model={state.shape} onChange={handler.onShapeChange} size="mini" popperAttrs={publicPopperAttrs}>
141
+ <SelectOption label={i18n('theme.radiusModeRound').d('圆角')} val="round"/>
142
+ <SelectOption label={i18n('theme.radiusModeNormal').d('小圆角')} val="square"/>
143
+ <SelectOption label={i18n('theme.radiusModeNone').d('无圆角')} val="none"/>
144
+ </Select>
145
+ </div>
146
+ </div>
147
+
148
+ <div>
149
+ <div>{i18n('theme.scale').d('大小缩放')}</div>
150
+ <Select v-model={state.zoom} onChange={handler.onZoomChange} size="mini" placeholder="页面缩放" popperAttrs={publicPopperAttrs}>
151
+ <SelectOption label="0.6" val={0.6}/>
152
+ <SelectOption label="0.7" val={0.7}/>
153
+ <SelectOption label="0.8" val={0.8}/>
154
+ <SelectOption label="0.9" val={0.9}/>
155
+ <SelectOption label="1.0" val={null}/>
156
+ <SelectOption label="1.1" val={1.1}/>
157
+ <SelectOption label="1.2" val={1.2}/>
158
+ <SelectOption label="1.3" val={1.3}/>
159
+ <SelectOption label="1.4" val={1.4}/>
160
+ <SelectOption label="1.5" val={1.5}/>
161
+ <SelectOption label="1.6" val={1.6}/>
162
+ <SelectOption label="1.7" val={1.7}/>
163
+ <SelectOption label="1.8" val={1.8}/>
164
+ <SelectOption label="1.9" val={1.9}/>
165
+ <SelectOption label="2.0" val={2.0}/>
166
+ </Select>
167
+ </div>
168
+ </div>
169
+ )}
170
+ </div>
171
+ );
172
+ },
173
+ });
@@ -0,0 +1,105 @@
1
+ @include comp(theme-editor) {
2
+ position: fixed;
3
+ right: 0;
4
+ border-right: none;
5
+ padding: 5px 10px 5px 5px;
6
+ border-top-left-radius: 999px;
7
+ border-bottom-left-radius: 999px;
8
+ box-sizing: border-box;
9
+ transition: all ease 300ms;
10
+ overflow-y: hidden;
11
+ z-index: 99999;
12
+
13
+ &:before {
14
+ content: '';
15
+ background-color: plv(primary-light-2);
16
+ border-radius: inherit;
17
+ position: absolute;
18
+ inset: 0;
19
+ pointer-events: none;
20
+ }
21
+
22
+ .theme-editor-inner {
23
+ position: absolute;
24
+ z-index: 1;
25
+ bottom: 5px;
26
+ right: 10px;
27
+ cursor: pointer;
28
+ height: calc(#{plv(box-size-normal-height)} * 1.5);
29
+ width: calc(#{plv(box-size-normal-height)} * 1.5);
30
+ border-radius: calc(#{plv(box-size-normal-height)} * 1.5);
31
+ background-color: plv(primary-6);
32
+ color: plv(pbfc);
33
+ display: flex;
34
+ align-items: center;
35
+ justify-content: center;
36
+ font-size: 24px;
37
+ transition: all ease 300ms;
38
+
39
+ .theme-editor-inner-cover {
40
+ position: absolute;
41
+ inset: 0;
42
+ user-select: none;
43
+ }
44
+ }
45
+
46
+ &.is-expand {
47
+ width: 300px;
48
+ height: 260px;
49
+ border-top-left-radius: plv(box-size-normal-border-radius);
50
+ border-bottom-left-radius: plv(box-size-normal-border-radius);
51
+
52
+ &:before {
53
+ background-color: plv(background-color);
54
+ border: solid 1px plv(border-color);
55
+ }
56
+
57
+ .theme-editor-inner {
58
+ border-radius: plv(box-size-normal-border-radius);
59
+ background-color: transparent;
60
+ color: plv(text-2);
61
+
62
+ &:hover {
63
+ background-color: plv(secondary-2);
64
+ }
65
+ }
66
+ }
67
+
68
+ &:not(.is-expand) {
69
+ width: calc(#{plv(box-size-normal-height)} * 1.5 + 15px);
70
+ height: calc(#{plv(box-size-normal-height)} * 1.5 + 10px);
71
+ }
72
+
73
+ .theme-editor-form {
74
+ padding: 8px;
75
+ box-sizing: border-box;
76
+ position: relative;
77
+ z-index: 2;
78
+ display: flex;
79
+ flex-wrap: wrap;
80
+ flex-direction: row;
81
+
82
+ & > div {
83
+ width: calc(50% - 4px);
84
+ font-size: 12px;
85
+ color: plv(text-2);
86
+ margin-bottom: 20px;
87
+
88
+ &:nth-child(2n) {
89
+ margin-left: 8px;
90
+ }
91
+
92
+ & > div {
93
+ &:first-child {
94
+ margin-left: 10px;
95
+ margin-bottom: 4px;
96
+ }
97
+ }
98
+ }
99
+ }
100
+ }
101
+
102
+ @include comp(theme-editor-block-item){
103
+ display: flex;
104
+ align-items: center;
105
+ }