@ticatec/uniface-element 5.0.4 → 5.1.0

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 (411) hide show
  1. package/README.md +14 -13
  2. package/README_CN.md +17 -15
  3. package/dist/app_layout/ColumnsLayout.svelte +14 -10
  4. package/dist/app_layout/ColumnsLayout.svelte.d.ts +8 -4
  5. package/dist/app_layout/README.md +14 -12
  6. package/dist/app_layout/README_CN.md +14 -12
  7. package/dist/app_layout/RowsLayout.svelte +14 -10
  8. package/dist/app_layout/RowsLayout.svelte.d.ts +8 -4
  9. package/dist/base-calendar/CalendarBase.svelte +4 -10
  10. package/dist/base-calendar/CalendarBase.svelte.d.ts +0 -4
  11. package/dist/base-calendar/DateContext.d.ts +1 -0
  12. package/dist/base-calendar/DateContext.js +5 -8
  13. package/dist/base-calendar/MonthlyCalendar.svelte +11 -3
  14. package/dist/base-calendar/MonthlyCalendar.svelte.d.ts +1 -2
  15. package/dist/base-calendar/YearPickupPanel.svelte +5 -5
  16. package/dist/base-calendar/YearPickupPanel.svelte.d.ts +2 -2
  17. package/dist/base-calendar/dateUtils.js +9 -5
  18. package/dist/composite/pagination_panel/PaginationPanel.svelte +19 -13
  19. package/dist/composite/pagination_panel/PaginationPanel.svelte.d.ts +8 -5
  20. package/dist/composite/pagination_panel/README.md +3 -1
  21. package/dist/composite/pagination_panel/README_CN.md +3 -1
  22. package/dist/composite/transfer/Transfer.svelte +30 -16
  23. package/dist/composite/transfer/Transfer.svelte.d.ts +11 -4
  24. package/dist/composite/transfer/index.d.ts +2 -2
  25. package/dist/data_display/accordion/Accordion.svelte +10 -9
  26. package/dist/data_display/accordion/Accordion.svelte.d.ts +2 -1
  27. package/dist/data_display/accordion/AccordionItemView.svelte +6 -6
  28. package/dist/data_display/accordion/AccordionItemView.svelte.d.ts +1 -1
  29. package/dist/data_display/accordion/README.md +6 -4
  30. package/dist/data_display/accordion/README_CN.md +6 -4
  31. package/dist/data_display/card/Card.svelte +13 -11
  32. package/dist/data_display/card/Card.svelte.d.ts +5 -3
  33. package/dist/data_display/card/CardAction.d.ts +7 -2
  34. package/dist/data_display/card/CommonCardActionBar.svelte +2 -2
  35. package/dist/data_display/card/README.md +11 -9
  36. package/dist/data_display/card/README_CN.md +11 -9
  37. package/dist/data_display/card/index.d.ts +2 -1
  38. package/dist/data_display/concise_data_table/Column.d.ts +0 -6
  39. package/dist/data_display/concise_data_table/ConciseListTable.svelte +6 -5
  40. package/dist/data_display/concise_data_table/ConciseListTable.svelte.d.ts +4 -3
  41. package/dist/data_display/concise_data_table/DataCell.svelte +1 -1
  42. package/dist/data_display/concise_data_table/README.md +7 -5
  43. package/dist/data_display/concise_data_table/README_CN.md +7 -5
  44. package/dist/data_display/concise_data_table/TableOptions.d.ts +1 -1
  45. package/dist/data_display/list_box/ListBox.svelte +11 -15
  46. package/dist/data_display/list_box/ListBox.svelte.d.ts +6 -9
  47. package/dist/data_display/list_box/README.md +10 -8
  48. package/dist/data_display/list_box/README_CN.md +10 -8
  49. package/dist/data_display/list_box/index.d.ts +2 -3
  50. package/dist/data_display/tree_view/README.md +4 -2
  51. package/dist/data_display/tree_view/README_CN.md +4 -2
  52. package/dist/data_display/tree_view/TreeNodeView.svelte +15 -16
  53. package/dist/data_display/tree_view/TreeNodeView.svelte.d.ts +4 -5
  54. package/dist/data_display/tree_view/TreeView.svelte +27 -19
  55. package/dist/data_display/tree_view/TreeView.svelte.d.ts +12 -4
  56. package/dist/data_display/tree_view/index.d.ts +2 -3
  57. package/dist/data_table/DataTable.svelte +46 -15
  58. package/dist/data_table/DataTable.svelte.d.ts +9 -1
  59. package/dist/data_table/README.md +10 -8
  60. package/dist/data_table/README_CN.md +10 -8
  61. package/dist/data_table/UniDataTable.d.ts +4 -4
  62. package/dist/data_table/UniDataTable.js +2 -2
  63. package/dist/data_table/index.d.ts +5 -5
  64. package/dist/data_table/lib/CellAction.d.ts +9 -0
  65. package/dist/data_table/lib/CommonHeaderCell.d.ts +2 -2
  66. package/dist/data_table/lib/CompareFn.d.ts +3 -0
  67. package/dist/data_table/lib/DataColumn.d.ts +7 -12
  68. package/dist/data_table/lib/FormatCellFn.d.ts +2 -0
  69. package/dist/data_table/lib/HrefLink.d.ts +3 -3
  70. package/dist/data_table/lib/IndicatorColumn.d.ts +2 -1
  71. package/dist/data_table/lib/RowAction.d.ts +14 -20
  72. package/dist/data_table/lib/virtualWindow.d.ts +37 -0
  73. package/dist/data_table/lib/virtualWindow.js +41 -0
  74. package/dist/data_table/parts/ActionCell.svelte +3 -3
  75. package/dist/data_table/parts/ActionCell.svelte.d.ts +1 -1
  76. package/dist/data_table/parts/ActionsPanel.svelte +17 -2
  77. package/dist/data_table/parts/ActionsPanel.svelte.d.ts +3 -0
  78. package/dist/data_table/parts/ActionsRow.svelte +7 -5
  79. package/dist/data_table/parts/ContentPanel.svelte +40 -15
  80. package/dist/data_table/parts/ContentPanel.svelte.d.ts +11 -6
  81. package/dist/data_table/parts/FixedColumnsPanel.svelte +32 -16
  82. package/dist/data_table/parts/FixedColumnsPanel.svelte.d.ts +8 -5
  83. package/dist/data_table/parts/FixedHeaderPanel.svelte +14 -15
  84. package/dist/data_table/parts/FixedHeaderPanel.svelte.d.ts +4 -4
  85. package/dist/data_table/parts/FixedRow.svelte +9 -9
  86. package/dist/data_table/parts/FixedRow.svelte.d.ts +3 -3
  87. package/dist/data_table/parts/HrefCell.svelte +1 -1
  88. package/dist/data_table/parts/PopupMenu.svelte +3 -3
  89. package/dist/data_table/parts/PopupMenu.svelte.d.ts +1 -1
  90. package/dist/data_table/parts/TableHeaderPanel.svelte +14 -14
  91. package/dist/data_table/parts/TableHeaderPanel.svelte.d.ts +4 -4
  92. package/dist/data_table/parts/TextCell.svelte +1 -1
  93. package/dist/feedback/progress-bar/ProgressBar.svelte +13 -10
  94. package/dist/feedback/progress-bar/ProgressBar.svelte.d.ts +6 -3
  95. package/dist/form/FormEditor.svelte +2 -2
  96. package/dist/form/FormEditor.svelte.d.ts +1 -1
  97. package/dist/form/attachment_files/AttachmentEditor.svelte +407 -92
  98. package/dist/form/attachment_files/AttachmentEditor.svelte.d.ts +71 -15
  99. package/dist/form/attachment_files/AttachmentFile.d.ts +35 -8
  100. package/dist/form/attachment_files/AttachmentFile.js +54 -29
  101. package/dist/form/attachment_files/AttachmentListItem.svelte +208 -0
  102. package/dist/form/attachment_files/AttachmentListItem.svelte.d.ts +25 -0
  103. package/dist/form/attachment_files/AttachmentTile.svelte +296 -0
  104. package/dist/form/attachment_files/AttachmentTile.svelte.d.ts +25 -0
  105. package/dist/form/attachment_files/FileUpload.d.ts +2 -2
  106. package/dist/form/attachment_files/README.md +71 -452
  107. package/dist/form/attachment_files/README_CN.md +68 -449
  108. package/dist/form/attachment_files/UploadTask.d.ts +27 -0
  109. package/dist/form/attachment_files/index.d.ts +8 -5
  110. package/dist/form/attachment_files/index.js +4 -2
  111. package/dist/form/cascade_options_select/CascadeOptionSelect.svelte +16 -15
  112. package/dist/form/cascade_options_select/CascadeOptionSelect.svelte.d.ts +6 -5
  113. package/dist/form/cascade_options_select/IsLeaf.d.ts +4 -0
  114. package/dist/form/cascade_options_select/IsLeaf.js +1 -0
  115. package/dist/form/cascade_options_select/OptionsBox.svelte +4 -4
  116. package/dist/form/cascade_options_select/OptionsBox.svelte.d.ts +2 -2
  117. package/dist/form/color_picker/ColorPicker.svelte +3 -3
  118. package/dist/form/color_picker/ColorPickerPanel.svelte +1 -1
  119. package/dist/form/common_editor/BasePicker.svelte +7 -7
  120. package/dist/form/common_editor/BasePicker.svelte.d.ts +3 -3
  121. package/dist/form/common_editor/CommonEditor.svelte +8 -8
  122. package/dist/form/common_editor/CommonEditor.svelte.d.ts +2 -2
  123. package/dist/form/common_editor/CommonPicker.svelte +43 -31
  124. package/dist/form/common_editor/CommonPicker.svelte.d.ts +6 -6
  125. package/dist/form/common_editor/CommonPickerProps.d.ts +2 -2
  126. package/dist/form/common_editor/CommonPopupEditor.svelte +13 -13
  127. package/dist/form/common_editor/CommonPopupEditor.svelte.d.ts +3 -4
  128. package/dist/form/common_editor/NumberInput.svelte +10 -2
  129. package/dist/form/common_editor/NumberInput.svelte.d.ts +1 -1
  130. package/dist/form/common_range_editor/CommonRangeEditor.svelte +17 -17
  131. package/dist/form/common_range_editor/CommonRangeEditor.svelte.d.ts +5 -5
  132. package/dist/form/date_picker/DatePicker.svelte +5 -5
  133. package/dist/form/date_picker/DatePicker.svelte.d.ts +1 -1
  134. package/dist/form/date_picker/DateTimePicker.svelte +16 -6
  135. package/dist/form/date_picker/README.md +7 -5
  136. package/dist/form/date_picker/README_CN.md +7 -5
  137. package/dist/form/date_picker/ScrollBar.svelte +21 -20
  138. package/dist/form/date_picker/ScrollBar.svelte.d.ts +3 -3
  139. package/dist/form/date_range/DateRangeEditor.svelte +6 -6
  140. package/dist/form/events.d.ts +70 -0
  141. package/dist/form/events.js +6 -0
  142. package/dist/form/group_box/group-check-box/GroupCheckBox.svelte +9 -7
  143. package/dist/form/group_box/group-check-box/GroupCheckBox.svelte.d.ts +4 -3
  144. package/dist/form/group_box/group-check-box/README.md +5 -3
  145. package/dist/form/group_box/group-check-box/README_CN.md +5 -3
  146. package/dist/form/group_box/group-radio-box/GroupRadioBox.svelte +9 -7
  147. package/dist/form/group_box/group-radio-box/GroupRadioBox.svelte.d.ts +4 -3
  148. package/dist/form/group_box/group-radio-box/README.md +3 -1
  149. package/dist/form/group_box/group-radio-box/README_CN.md +3 -1
  150. package/dist/form/image_editor/ImageEditor.svelte +118 -0
  151. package/dist/form/image_editor/ImageEditor.svelte.d.ts +52 -0
  152. package/dist/form/image_editor/ImageFile.d.ts +11 -0
  153. package/dist/form/image_editor/ImageFile.js +1 -0
  154. package/dist/form/{image-files → image_editor}/ImagePreview.svelte +10 -2
  155. package/dist/form/image_editor/README.md +89 -0
  156. package/dist/form/image_editor/README_CN.md +89 -0
  157. package/dist/form/image_editor/index.d.ts +11 -0
  158. package/dist/form/image_editor/index.js +4 -0
  159. package/dist/form/input_options_select/InputOptionsSelect.svelte +11 -8
  160. package/dist/form/input_options_select/InputOptionsSelect.svelte.d.ts +2 -1
  161. package/dist/form/input_options_select/README.md +44 -218
  162. package/dist/form/input_options_select/README_CN.md +38 -211
  163. package/dist/form/lookup_editor/LookupEditor.svelte +7 -10
  164. package/dist/form/lookup_editor/LookupEditor.svelte.d.ts +2 -1
  165. package/dist/form/memo_editor/MemoEditor.svelte +2 -2
  166. package/dist/form/memo_editor/MemoEditor.svelte.d.ts +1 -1
  167. package/dist/form/number_editor/NumberEditor.svelte +13 -1
  168. package/dist/form/number_editor/NumberEditor.svelte.d.ts +1 -1
  169. package/dist/form/number_range/NumberRange.svelte +5 -5
  170. package/dist/form/options_multi_select/OptionsMultiSelect.svelte +13 -13
  171. package/dist/form/options_multi_select/OptionsMultiSelect.svelte.d.ts +3 -2
  172. package/dist/form/options_multi_select/README.md +5 -3
  173. package/dist/form/options_multi_select/README_CN.md +5 -3
  174. package/dist/form/options_select/OptionsSelect.svelte +19 -15
  175. package/dist/form/options_select/OptionsSelect.svelte.d.ts +2 -1
  176. package/dist/form/options_select/README.md +9 -7
  177. package/dist/form/options_select/README_CN.md +8 -6
  178. package/dist/form/prompts_text_editor/PromptsTextEditor.svelte +6 -5
  179. package/dist/form/prompts_text_editor/PromptsTextEditor.svelte.d.ts +2 -1
  180. package/dist/form/prompts_text_editor/README.md +16 -14
  181. package/dist/form/prompts_text_editor/README_CN.md +16 -14
  182. package/dist/form/search_box/SearchBox.svelte +3 -2
  183. package/dist/form/search_box/SearchBox.svelte.d.ts +1 -1
  184. package/dist/form/switch/README.md +7 -5
  185. package/dist/form/switch/README_CN.md +7 -5
  186. package/dist/form/switch/Switch.svelte +7 -5
  187. package/dist/form/switch/Switch.svelte.d.ts +4 -2
  188. package/dist/form/text_editor/PasswordEditor.svelte +2 -2
  189. package/dist/form/text_editor/PasswordEditor.svelte.d.ts +1 -1
  190. package/dist/form/text_editor/TextEditor.svelte +6 -4
  191. package/dist/form/text_editor/TextEditor.svelte.d.ts +1 -1
  192. package/dist/form/time_editor/README.md +4 -2
  193. package/dist/form/time_editor/README_CN.md +4 -2
  194. package/dist/form/time_editor/TimeEditor.svelte +10 -7
  195. package/dist/form/time_editor/TimeEditor.svelte.d.ts +2 -1
  196. package/dist/form/types.d.ts +5 -42
  197. package/dist/form/unit-number-editor/README.md +21 -19
  198. package/dist/form/unit-number-editor/README_CN.md +21 -19
  199. package/dist/form/unit-number-editor/UnitNumberEditor.svelte +12 -11
  200. package/dist/form/unit-number-editor/UnitNumberEditor.svelte.d.ts +4 -3
  201. package/dist/general/button/Button.svelte +4 -1
  202. package/dist/general/button/Button.svelte.d.ts +3 -1
  203. package/dist/general/button/IconButton.svelte +11 -5
  204. package/dist/general/button/IconButton.svelte.d.ts +5 -2
  205. package/dist/general/button/IconButton_README.md +9 -6
  206. package/dist/general/button/IconButton_README_CN.md +9 -6
  207. package/dist/general/button/TextButton.svelte +15 -5
  208. package/dist/general/button/TextButton.svelte.d.ts +6 -2
  209. package/dist/general/button/TextButton_README.md +10 -6
  210. package/dist/general/button/TextButton_README_CN.md +10 -6
  211. package/dist/general/icon/Icon.svelte +6 -4
  212. package/dist/general/icon/Icon.svelte.d.ts +3 -2
  213. package/dist/general/tag/Tag.svelte +8 -4
  214. package/dist/general/tag/Tag.svelte.d.ts +3 -1
  215. package/dist/i18nRes/i18nRes.d.ts +45 -2
  216. package/dist/i18nRes/i18nRes.js +7 -2
  217. package/dist/layouts/action_bar/ActionBar.svelte +5 -4
  218. package/dist/layouts/action_bar/ActionBar.svelte.d.ts +2 -1
  219. package/dist/layouts/action_bar/ButtonAction.d.ts +1 -23
  220. package/dist/layouts/action_bar/README.md +20 -18
  221. package/dist/layouts/action_bar/README_CN.md +19 -17
  222. package/dist/layouts/box/Box.svelte +4 -3
  223. package/dist/layouts/box/Box.svelte.d.ts +2 -1
  224. package/dist/layouts/box/README.md +13 -11
  225. package/dist/layouts/box/README_CN.md +13 -11
  226. package/dist/layouts/form_field/FormField.svelte +5 -4
  227. package/dist/layouts/form_field/FormField.svelte.d.ts +3 -2
  228. package/dist/layouts/form_field/README.md +11 -9
  229. package/dist/layouts/form_field/README_CN.md +9 -7
  230. package/dist/layouts/form_panel/flex_row_form/Cell.svelte +3 -1
  231. package/dist/layouts/form_panel/flex_row_form/Cell.svelte.d.ts +3 -1
  232. package/dist/layouts/form_panel/flex_row_form/Row.svelte +3 -1
  233. package/dist/layouts/form_panel/flex_row_form/Row.svelte.d.ts +3 -1
  234. package/dist/layouts/form_panel/grid_form/GridField.svelte +8 -4
  235. package/dist/layouts/form_panel/grid_form/GridField.svelte.d.ts +6 -2
  236. package/dist/layouts/form_panel/grid_form/GridForm.svelte +3 -1
  237. package/dist/layouts/form_panel/grid_form/GridForm.svelte.d.ts +3 -1
  238. package/dist/layouts/form_panel/grid_form/README.md +6 -4
  239. package/dist/layouts/form_panel/grid_form/README_CN.md +6 -4
  240. package/dist/layouts/page/Page.svelte +7 -7
  241. package/dist/layouts/page/Page.svelte.d.ts +2 -2
  242. package/dist/layouts/page/PageHeader.svelte +4 -4
  243. package/dist/layouts/page/PageHeader.svelte.d.ts +1 -1
  244. package/dist/layouts/page/README.md +18 -18
  245. package/dist/layouts/page/README_CN.md +18 -18
  246. package/dist/navigation/nav_menu/MenuItem.d.ts +1 -1
  247. package/dist/navigation/nav_menu/NavigatorMenu.svelte +16 -14
  248. package/dist/navigation/nav_menu/NavigatorMenu.svelte.d.ts +7 -5
  249. package/dist/navigation/nav_menu/NavigatorMenuItem.svelte +2 -2
  250. package/dist/navigation/nav_menu/NavigatorMenuItem.svelte.d.ts +2 -2
  251. package/dist/navigation/nav_menu/README.md +8 -6
  252. package/dist/navigation/nav_menu/README_CN.md +8 -6
  253. package/dist/navigation/nav_menu/index.d.ts +2 -2
  254. package/dist/navigation/navigator/Navigator.svelte +5 -4
  255. package/dist/navigation/navigator/Navigator.svelte.d.ts +3 -2
  256. package/dist/navigation/navigator/README.md +12 -10
  257. package/dist/navigation/navigator/README_CN.md +12 -10
  258. package/dist/navigation/pagination/Pagination.svelte +23 -15
  259. package/dist/navigation/pagination/Pagination.svelte.d.ts +6 -4
  260. package/dist/navigation/progress_step_bar/ProgressStep.d.ts +2 -1
  261. package/dist/navigation/progress_step_bar/ProgressStepBar.svelte +5 -4
  262. package/dist/navigation/progress_step_bar/ProgressStepBar.svelte.d.ts +2 -1
  263. package/dist/navigation/progress_step_bar/ProgressStepBlock.svelte +3 -3
  264. package/dist/navigation/progress_step_bar/ProgressStepBlock.svelte.d.ts +1 -1
  265. package/dist/navigation/progress_step_bar/README.md +37 -35
  266. package/dist/navigation/progress_step_bar/README_CN.md +36 -34
  267. package/dist/navigation/tabs/Tabs.svelte +14 -5
  268. package/dist/navigation/tabs/Tabs.svelte.d.ts +11 -4
  269. package/dist/navigation/tabs/index.d.ts +2 -2
  270. package/dist/overlay/common/ModalPopover.svelte +5 -4
  271. package/dist/overlay/common/ModalPopover.svelte.d.ts +2 -1
  272. package/dist/overlay/common/Popover.svelte +4 -3
  273. package/dist/overlay/common/Popover.svelte.d.ts +2 -1
  274. package/dist/overlay/context-menu/ContextMenuItem.d.ts +3 -3
  275. package/dist/overlay/context-menu/ContextMenuPanel.svelte +4 -4
  276. package/dist/overlay/context-menu/index.d.ts +2 -2
  277. package/dist/overlay/dialog/CommonDialog.svelte +17 -13
  278. package/dist/overlay/dialog/CommonDialog.svelte.d.ts +9 -5
  279. package/dist/overlay/dialog/Dialog.svelte +25 -19
  280. package/dist/overlay/dialog/Dialog.svelte.d.ts +11 -5
  281. package/dist/overlay/dialog/DialogActions.d.ts +1 -1
  282. package/dist/overlay/dialog/DialogCloseConfirm.d.ts +4 -1
  283. package/dist/overlay/dialog/DialogCloseConfirm.js +1 -1
  284. package/dist/overlay/dialog/DialogManager.svelte.js +2 -1
  285. package/dist/overlay/dialog/README.md +19 -17
  286. package/dist/overlay/dialog/README_CN.md +19 -17
  287. package/dist/overlay/dialog/index.d.ts +2 -2
  288. package/dist/overlay/message-box/IMessageBox.d.ts +4 -4
  289. package/dist/overlay/message-box/MessageBox.svelte.js +3 -3
  290. package/dist/ticatec-uniface-web.css +38 -12
  291. package/dist/types.d.ts +38 -46
  292. package/dist/unifaceContext.d.ts +2 -2
  293. package/dist/utils/prefixFilter.js +0 -1
  294. package/docs/NAMING.md +362 -0
  295. package/docs/NAMING_CN.md +362 -0
  296. package/docs/components/README.md +16 -14
  297. package/docs/components/accordion/README.md +13 -2
  298. package/docs/components/accordion/example.svelte +1 -0
  299. package/docs/components/action-bar/README.md +4 -4
  300. package/docs/components/attachment-editor/README.md +224 -0
  301. package/docs/components/attachment-editor/example.svelte +22 -0
  302. package/docs/components/box/README.md +1 -1
  303. package/docs/components/button/README.md +8 -1
  304. package/docs/components/button/example.svelte +1 -0
  305. package/docs/components/card/README.md +19 -5
  306. package/docs/components/cascade-options-select/README.md +11 -5
  307. package/docs/components/columns-layout/README.md +8 -4
  308. package/docs/components/columns-layout/example.svelte +4 -0
  309. package/docs/components/common-dialog/README.md +19 -10
  310. package/docs/components/common-dialog/example.svelte +2 -1
  311. package/docs/components/concise-data-table/README.md +18 -29
  312. package/docs/components/concise-data-table/example.svelte +1 -1
  313. package/docs/components/context-menu/README.md +5 -5
  314. package/docs/components/context-menu/example.svelte +1 -1
  315. package/docs/components/criteria-field/README.md +1 -0
  316. package/docs/components/criteria-field/example.svelte +1 -0
  317. package/docs/components/data-table/README.md +63 -40
  318. package/docs/components/data-table/example.svelte +2 -2
  319. package/docs/components/date-picker/README.md +1 -1
  320. package/docs/components/date-time-picker/README.md +1 -1
  321. package/docs/components/dialog/README.md +21 -14
  322. package/docs/components/dialog/example.svelte +1 -1
  323. package/docs/components/form-field/README.md +3 -3
  324. package/docs/components/grid-form/README.md +15 -5
  325. package/docs/components/grid-form/example.svelte +1 -1
  326. package/docs/components/group-check-box/README.md +3 -3
  327. package/docs/components/group-radio-box/README.md +3 -3
  328. package/docs/components/icon/README.md +6 -5
  329. package/docs/components/icon-button/README.md +10 -1
  330. package/docs/components/icon-button/example.svelte +1 -0
  331. package/docs/components/image-editor/README.md +262 -0
  332. package/docs/components/{image-files → image-editor}/example.svelte +5 -3
  333. package/docs/components/input-options-select/README.md +2 -2
  334. package/docs/components/list-box/README.md +12 -13
  335. package/docs/components/list-box/example.svelte +3 -3
  336. package/docs/components/lookup-editor/README.md +1 -1
  337. package/docs/components/navigator/README.md +2 -1
  338. package/docs/components/navigator/example.svelte +1 -0
  339. package/docs/components/navigator-menu/README.md +24 -21
  340. package/docs/components/navigator-menu/example.svelte +4 -2
  341. package/docs/components/options-multi-select/README.md +2 -2
  342. package/docs/components/options-select/README.md +4 -4
  343. package/docs/components/page/README.md +2 -2
  344. package/docs/components/page-stack/README.md +67 -0
  345. package/docs/components/page-stack/example.svelte +7 -0
  346. package/docs/components/pagination/README.md +24 -7
  347. package/docs/components/pagination/example.svelte +5 -2
  348. package/docs/components/pagination-panel/README.md +25 -10
  349. package/docs/components/pagination-panel/example.svelte +5 -4
  350. package/docs/components/password-editor/README.md +128 -0
  351. package/docs/components/{attachment-files → password-editor}/example.svelte +5 -5
  352. package/docs/components/progress-bar/README.md +14 -4
  353. package/docs/components/progress-bar/example.svelte +1 -1
  354. package/docs/components/progress-step-bar/README.md +16 -7
  355. package/docs/components/progress-step-bar/example.svelte +5 -1
  356. package/docs/components/prompts-text-editor/README.md +8 -6
  357. package/docs/components/prompts-text-editor/example.svelte +0 -1
  358. package/docs/components/rows-layout/README.md +8 -4
  359. package/docs/components/rows-layout/example.svelte +4 -0
  360. package/docs/components/switch/README.md +2 -2
  361. package/docs/components/tabs/README.md +24 -9
  362. package/docs/components/tag/README.md +13 -2
  363. package/docs/components/tag/example.svelte +1 -0
  364. package/docs/components/text-button/README.md +20 -1
  365. package/docs/components/text-button/example.svelte +2 -0
  366. package/docs/components/time-editor/README.md +1 -1
  367. package/docs/components/transfer/README.md +16 -9
  368. package/docs/components/tree-view/README.md +29 -13
  369. package/docs/components/tree-view/example.svelte +2 -1
  370. package/docs/components/unit-number-editor/README.md +11 -8
  371. package/docs/components/unit-number-editor/example.svelte +0 -1
  372. package/package.json +13 -7
  373. package/dist/data_table/lib/CompareFunction.d.ts +0 -3
  374. package/dist/data_table/lib/FormatCell.d.ts +0 -2
  375. package/dist/form/attachment_files/FileRender.svelte +0 -125
  376. package/dist/form/attachment_files/FileRender.svelte.d.ts +0 -9
  377. package/dist/form/attachment_files/FileUploadBar.svelte +0 -66
  378. package/dist/form/attachment_files/FileUploadBar.svelte.d.ts +0 -8
  379. package/dist/form/attachment_files/FileUploadPanel.svelte +0 -161
  380. package/dist/form/attachment_files/FileUploadPanel.svelte.d.ts +0 -14
  381. package/dist/form/attachment_files/UploadFile.d.ts +0 -43
  382. package/dist/form/attachment_files/UploadFile.js +0 -80
  383. package/dist/form/cascade_options_select/CascadePanel.svelte +0 -52
  384. package/dist/form/cascade_options_select/CascadePanel.svelte.d.ts +0 -26
  385. package/dist/form/cascade_options_select/isLeafDetermine.d.ts +0 -4
  386. package/dist/form/common_editor/EditorEvents.d.ts +0 -14
  387. package/dist/form/common_editor/EditorEvents.js +0 -2
  388. package/dist/form/image-files/ImageFile.d.ts +0 -12
  389. package/dist/form/image-files/ImageFilesField.svelte +0 -128
  390. package/dist/form/image-files/ImageFilesField.svelte.d.ts +0 -18
  391. package/dist/form/image-files/ImageRender.svelte +0 -95
  392. package/dist/form/image-files/ImageRender.svelte.d.ts +0 -10
  393. package/dist/form/image-files/README.md +0 -468
  394. package/dist/form/image-files/README_CN.md +0 -468
  395. package/dist/form/image-files/index.d.ts +0 -10
  396. package/dist/form/image-files/index.js +0 -2
  397. package/dist/layout/flex/FlexBlock.svelte +0 -17
  398. package/dist/layout/flex/FlexBlock.svelte.d.ts +0 -38
  399. package/dist/layout/flex/README.md +0 -148
  400. package/dist/layout/flex/README_CN.md +0 -148
  401. package/dist/layout/flex/index.d.ts +0 -2
  402. package/dist/layout/flex/index.js +0 -2
  403. package/dist/layout/index.d.ts +0 -0
  404. package/dist/layout/index.js +0 -1
  405. package/docs/components/attachment-files/README.md +0 -332
  406. package/docs/components/image-files/README.md +0 -174
  407. /package/dist/data_table/lib/{FormatCell.js → CellAction.js} +0 -0
  408. /package/dist/data_table/lib/{CompareFunction.js → CompareFn.js} +0 -0
  409. /package/dist/{form/cascade_options_select/isLeafDetermine.js → data_table/lib/FormatCellFn.js} +0 -0
  410. /package/dist/form/{image-files/ImageFile.js → attachment_files/UploadTask.js} +0 -0
  411. /package/dist/form/{image-files → image_editor}/ImagePreview.svelte.d.ts +0 -0
@@ -0,0 +1,9 @@
1
+ import type RowAction from "./RowAction";
2
+ /**
3
+ * 单元格动作:与行动作同一形状(NAMING R10)
4
+ */
5
+ export type CellAction<T = any> = RowAction<T>;
6
+ /**
7
+ * 获取单元格动作;返回 undefined 表示该单元格没有动作
8
+ */
9
+ export type GetCellAction<T = any> = (data: T) => CellAction<T> | undefined;
@@ -1,4 +1,4 @@
1
- import type { CompareFunction } from "./CompareFunction";
1
+ import type { CompareFn } from "./CompareFn";
2
2
  export default interface CommonHeaderCell {
3
3
  /**
4
4
  * 栏目的标题
@@ -33,5 +33,5 @@ export interface DataHeaderCell extends CommonHeaderCell {
33
33
  /**
34
34
  * 排序的比较函数
35
35
  */
36
- compareFunction?: CompareFunction;
36
+ compareFunction?: CompareFn;
37
37
  }
@@ -0,0 +1,3 @@
1
+ export type CompareFn = (o1: any, o2: any) => number;
2
+ declare const compareObject: CompareFn;
3
+ export { compareObject };
@@ -1,12 +1,12 @@
1
- import type { CellHint, FormatCell } from "./FormatCell";
1
+ import type { CellHint, FormatCellFn } from "./FormatCellFn";
2
2
  import type { HrefBuilder } from "./HrefLink";
3
- import type { CompareFunction } from "./CompareFunction";
3
+ import type { CompareFn } from "./CompareFn";
4
4
  import type { GetCellStyle } from "../../types";
5
5
  export default interface DataColumn {
6
6
  /**
7
- * 列头文字
7
+ * 列头文字(与 ConciseListTable 的 Column.title 统一)
8
8
  */
9
- text: string;
9
+ title: string;
10
10
  /**
11
11
  * 对应的字段/属性名
12
12
  */
@@ -27,21 +27,16 @@ export default interface DataColumn {
27
27
  /**
28
28
  * 是否可以换行,默认为false
29
29
  */
30
- warp?: boolean;
30
+ wrap?: boolean;
31
31
  /**
32
32
  * 单元格转换函数
33
33
  */
34
- formatter?: FormatCell;
34
+ formatter?: FormatCellFn;
35
35
  /**
36
36
  * 是否将单元格内容作为可信 HTML 渲染({@html}),而非纯文本转义。
37
37
  * 仅当 field/formatter 输出为可信标记时才应设为 true。
38
38
  */
39
39
  renderHTML?: boolean;
40
- /**
41
- * @deprecated 请使用 renderHTML;名称容易被误读为"转义 HTML",
42
- * 实际含义相反——设为 true 会把内容作为可信 HTML 渲染。仍受支持以兼容旧调用。
43
- */
44
- escapeHTML?: boolean;
45
40
  /**
46
41
  * 超链接设置
47
42
  */
@@ -65,7 +60,7 @@ export default interface DataColumn {
65
60
  /**
66
61
  *
67
62
  */
68
- compareFunction?: CompareFunction;
63
+ compareFunction?: CompareFn;
69
64
  /**
70
65
  * 获取表格的样式
71
66
  */
@@ -0,0 +1,2 @@
1
+ export type FormatCellFn = (value: any) => string;
2
+ export type CellHint = (value: any) => string;
@@ -1,12 +1,12 @@
1
1
  export type HrefBuilder = (item: any) => Array<HrefLink> | HrefLink | string;
2
- export type HrefAction = () => void;
2
+ export type OnHrefClick = () => void;
3
3
  export default interface HrefLink {
4
4
  /**
5
5
  * 显示超链接的文字
6
6
  */
7
- text: string;
7
+ label: string;
8
8
  /**
9
9
  * 点击的处理函数
10
10
  */
11
- action: HrefAction;
11
+ handler: OnHrefClick;
12
12
  }
@@ -14,5 +14,6 @@ export default interface IndicatorColumn {
14
14
  /**
15
15
  * 是否显示行号
16
16
  */
17
- displayNo?: boolean;
17
+ /** 是否显示行号 */
18
+ showRowNo?: boolean;
18
19
  }
@@ -1,29 +1,23 @@
1
+ import type { ButtonType, ActionHandler } from "../../types";
2
+ export type { ActionHandler };
1
3
  /**
2
- * @template T Row data type. Defaults to `any` so existing untyped usage keeps compiling.
3
- */
4
- export type ActionFunction<T = any> = (item: T) => void;
5
- /**
6
- *
4
+ * 行动作(DataTable actionsColumn / ActionCell 共用的动作对象,形状与 ButtonAction 一致)
7
5
  */
8
6
  export default interface RowAction<T = any> {
9
- /**
10
- *
11
- */
7
+ /** 显示文字 */
12
8
  label: string;
13
- /**
14
- *
15
- */
16
- type?: 'primary' | 'secondary' | 'third' | 'forth';
17
- /**
18
- *
19
- */
9
+ /** 语义类型 */
10
+ type?: ButtonType;
11
+ /** 前缀图标 */
20
12
  icon?: string;
21
- /**
22
- *
23
- */
24
- callback: ActionFunction<T>;
13
+ /** 提示 */
14
+ tooltip?: string;
15
+ /** 是否禁用 */
16
+ disabled?: boolean;
17
+ /** 点击处理 */
18
+ handler: ActionHandler<T>;
25
19
  }
26
20
  /**
27
- *
21
+ * 获取某一行的动作列表
28
22
  */
29
23
  export type GetRowActions<T = any> = (item: T) => Array<RowAction<T>>;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Row-windowing math for the DataTable's opt-in virtual scrolling.
3
+ *
4
+ * The table renders three vertically synced panels (frozen columns, data
5
+ * content, actions). Each panel renders only the rows inside the computed
6
+ * window, with a top and bottom spacer so the scroll container keeps its
7
+ * full natural scrollHeight (the native scrollbar and the existing
8
+ * wheel/scroll sync logic keep working unchanged).
9
+ *
10
+ * All rows share one fixed `rowHeight`; at most one row (`expandIndex`) has
11
+ * an inline expansion panel of `inlineRowHeight` rendered directly below it.
12
+ */
13
+ export interface VirtualWindow {
14
+ /** Index of the first rendered row (inclusive). */
15
+ start: number;
16
+ /** Index just past the last rendered row (exclusive). */
17
+ end: number;
18
+ /** Height (px) of the spacer above the rendered rows. */
19
+ topPad: number;
20
+ /** Height (px) of the spacer below the rendered rows. */
21
+ bottomPad: number;
22
+ }
23
+ export interface VirtualWindowInput {
24
+ scrollTop: number;
25
+ /** Height (px) of the scrollable viewport. 0 is tolerated (renders overscan only). */
26
+ viewportHeight: number;
27
+ rowHeight: number;
28
+ /** Total number of rows. */
29
+ count: number;
30
+ /** Extra rows rendered above and below the visible range. */
31
+ overscan?: number;
32
+ /** Index of the expanded row, or -1 when none. */
33
+ expandIndex?: number;
34
+ /** Height (px) of the inline expansion panel below the expanded row. */
35
+ inlineRowHeight?: number;
36
+ }
37
+ export declare function computeVirtualWindow(input: VirtualWindowInput): VirtualWindow;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Row-windowing math for the DataTable's opt-in virtual scrolling.
3
+ *
4
+ * The table renders three vertically synced panels (frozen columns, data
5
+ * content, actions). Each panel renders only the rows inside the computed
6
+ * window, with a top and bottom spacer so the scroll container keeps its
7
+ * full natural scrollHeight (the native scrollbar and the existing
8
+ * wheel/scroll sync logic keep working unchanged).
9
+ *
10
+ * All rows share one fixed `rowHeight`; at most one row (`expandIndex`) has
11
+ * an inline expansion panel of `inlineRowHeight` rendered directly below it.
12
+ */
13
+ /** Top offset (px) of row `i`, accounting for an expansion panel above it. */
14
+ const rowTop = (i, rowHeight, expandIndex, inlineRowHeight) => i * rowHeight + (expandIndex >= 0 && i > expandIndex ? inlineRowHeight : 0);
15
+ export function computeVirtualWindow(input) {
16
+ const { scrollTop, viewportHeight, rowHeight, count } = input;
17
+ const overscan = input.overscan ?? 8;
18
+ const expandIndex = input.expandIndex ?? -1;
19
+ const inlineRowHeight = expandIndex >= 0 ? (input.inlineRowHeight ?? 0) : 0;
20
+ if (count === 0 || rowHeight <= 0) {
21
+ return { start: 0, end: 0, topPad: 0, bottomPad: 0 };
22
+ }
23
+ const st = Math.max(0, scrollTop);
24
+ // First row whose bottom edge is below the viewport top.
25
+ let start = Math.floor(st / rowHeight);
26
+ if (expandIndex >= 0 && start > expandIndex) {
27
+ // The viewport top sits below the expanded row: shift the estimate by the
28
+ // expansion panel's height. Clamping to expandIndex keeps the expanded
29
+ // row (and with it the inline panel, which is rendered inside the #each
30
+ // body next to its row) in the window while any part of the panel is
31
+ // visible.
32
+ start = Math.max(expandIndex, Math.floor((st - inlineRowHeight) / rowHeight));
33
+ }
34
+ start = Math.max(0, Math.min(start, count - 1) - overscan);
35
+ const visibleCount = Math.ceil(viewportHeight / rowHeight) + 1;
36
+ let end = Math.min(count, start + visibleCount + overscan * 2);
37
+ const totalHeight = count * rowHeight + inlineRowHeight;
38
+ const topPad = rowTop(start, rowHeight, expandIndex, inlineRowHeight);
39
+ const bottomPad = totalHeight - rowTop(end, rowHeight, expandIndex, inlineRowHeight);
40
+ return { start, end, topPad, bottomPad };
41
+ }
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import type { CellAction, GetCellAction } from "../../types";
2
+ import type {CellAction, GetCellAction} from "../lib/CellAction";
3
3
  import { TextButton } from "../../general/button";
4
4
 
5
5
  interface Props {
@@ -12,12 +12,12 @@
12
12
  let action = $derived(getAction?.(data));
13
13
 
14
14
  const handleClick = async (event: MouseEvent) => {
15
- await action?.handle(data);
15
+ await action?.handler(data);
16
16
  };
17
17
  </script>
18
18
 
19
19
  {#if action}
20
20
  <div style="width: 100; overflow: hidden;">
21
- <TextButton type={action.type ?? 'primary'} label={action.text} onclick={handleClick} />
21
+ <TextButton type={action.type ?? 'primary'} outer={false} label={action.label} onclick={handleClick} />
22
22
  </div>
23
23
  {/if}
@@ -1,4 +1,4 @@
1
- import type { GetCellAction } from "../../types";
1
+ import type { GetCellAction } from "../lib/CellAction";
2
2
  interface Props {
3
3
  data: any;
4
4
  getAction: GetCellAction;
@@ -4,6 +4,7 @@
4
4
  import type TableRow from "./TableRow";
5
5
  import { onDestroy, onMount } from "svelte";
6
6
  import i18nRes from "../../i18nRes";
7
+ import type { VirtualWindow } from "../lib/virtualWindow";
7
8
 
8
9
  interface Props {
9
10
  actionsColumn: ActionsColumn;
@@ -13,6 +14,8 @@
13
14
  expandRow?: TableRow | null;
14
15
  rowHeight?: number;
15
16
  headerHeight?: number;
17
+ /** Row window when virtual scrolling is on; null renders every row. */
18
+ vwindow?: VirtualWindow | null;
16
19
  }
17
20
 
18
21
  let {
@@ -23,8 +26,13 @@
23
26
  expandRow = null,
24
27
  rowHeight,
25
28
  headerHeight,
29
+ vwindow = null,
26
30
  }: Props = $props();
27
31
 
32
+ // Virtual scrolling: same shared window as the other panels.
33
+ let visibleRows = $derived(vwindow ? rows.slice(vwindow.start, vwindow.end) : rows);
34
+ let startIndex = $derived(vwindow ? vwindow.start : 0);
35
+
28
36
  const handleActionPanelScroll = (e: Event) => {
29
37
  const target = e.target as HTMLDivElement;
30
38
  scrollTop = target.scrollTop;
@@ -54,7 +62,7 @@
54
62
  resizeObserver?.disconnect();
55
63
  });
56
64
 
57
- let actionText = i18nRes.dataTable.actions;
65
+ let actionText = i18nRes.dataTable.actions();
58
66
  </script>
59
67
 
60
68
  <div class="action-panel" bind:this={panel} style="user-select: none; width: {actionsColumn.width}px;">
@@ -65,7 +73,11 @@
65
73
  </div>
66
74
  <div bind:this={scrollPanel} class="rows-container" style="overflow-y: auto" onscroll={handleActionPanelScroll}>
67
75
  <div>
68
- {#each rows as row, idx (idx)}
76
+ {#if vwindow}
77
+ <div style="height: {vwindow.topPad}px"></div>
78
+ {/if}
79
+ {#each visibleRows as row, i (startIndex + i)}
80
+ {@const idx = startIndex + i}
69
81
  <ActionsRow
70
82
  {row}
71
83
  {rowHeight}
@@ -79,6 +91,9 @@
79
91
  <div class="inline-panel" style="height: {inlineRowHeight ?? 0}px"> </div>
80
92
  {/if}
81
93
  {/each}
94
+ {#if vwindow}
95
+ <div style="height: {vwindow.bottomPad}px"></div>
96
+ {/if}
82
97
  </div>
83
98
  </div>
84
99
  <div class="bottom-mask-overlay">
@@ -1,5 +1,6 @@
1
1
  import type ActionsColumn from "../lib/ActionsColumn";
2
2
  import type TableRow from "./TableRow";
3
+ import type { VirtualWindow } from "../lib/virtualWindow";
3
4
  interface Props {
4
5
  actionsColumn: ActionsColumn;
5
6
  scrollTop?: number;
@@ -8,6 +9,8 @@ interface Props {
8
9
  expandRow?: TableRow | null;
9
10
  rowHeight?: number;
10
11
  headerHeight?: number;
12
+ /** Row window when virtual scrolling is on; null renders every row. */
13
+ vwindow?: VirtualWindow | null;
11
14
  }
12
15
  declare const ActionsPanel: import("svelte").Component<Props, {}, "scrollTop">;
13
16
  type ActionsPanel = ReturnType<typeof ActionsPanel>;
@@ -93,17 +93,19 @@
93
93
  <IconButton
94
94
  style="flex-shrink: 0; top: 0"
95
95
  size="small"
96
+ outer={false}
96
97
  type={action.type ?? 'primary'}
97
98
  icon={action.icon}
98
- onclick={() => action.callback(row.data)}
99
+ onclick={() => action.handler(row.data)}
99
100
  />
100
101
  {:else}
101
102
  <TextButton
102
103
  style="flex-shrink: 0; top: 0"
103
104
  size="small"
105
+ outer={false}
104
106
  type={action.type ?? 'primary'}
105
107
  label={action.label}
106
- onclick={async () => action.callback(row.data)}
108
+ onclick={async () => action.handler(row.data)}
107
109
  />
108
110
  {/if}
109
111
  {/each}
@@ -113,7 +115,7 @@
113
115
  </div>
114
116
 
115
117
  {#if showPopup}
116
- <PopupMenu {parentRect} closeCallback={() => (showPopup = false)}>
118
+ <PopupMenu {parentRect} onclose={() => (showPopup = false)}>
117
119
  <div style="padding: 4px 6px; box-sizing: border-box; background-color: #ffffff;">
118
120
  {#each [...popupList].reverse() as action (action)}
119
121
  <div class="action-popover" style="padding: 4px 6px; text-align: center">
@@ -124,7 +126,7 @@
124
126
  type={action.type ?? 'primary'}
125
127
  icon={action.icon}
126
128
  onclick={async () => {
127
- action.callback(row.data);
129
+ action.handler(row.data);
128
130
  showPopup = false;
129
131
  }}
130
132
  />
@@ -135,7 +137,7 @@
135
137
  type={action.type ?? 'primary'}
136
138
  label={action.label}
137
139
  onclick={async () => {
138
- action.callback(row.data);
140
+ action.handler(row.data);
139
141
  showPopup = false;
140
142
  }}
141
143
  />
@@ -4,9 +4,10 @@
4
4
  import type TableRow from "./TableRow";
5
5
  import { onDestroy, onMount } from "svelte";
6
6
  import TableHeaderPanel from "./TableHeaderPanel.svelte";
7
- import UniDataTable, { type TableEventHandler } from "../UniDataTable";
7
+ import UniDataTable, { type OnWidthChange } from "../UniDataTable";
8
8
  import { OrderDirection } from "../lib/OrderDirection";
9
9
  import type { GetRowFontStyle } from "../../types";
10
+ import type { VirtualWindow } from "../lib/virtualWindow";
10
11
 
11
12
  interface Props {
12
13
  columns: Array<DataColumn>;
@@ -14,7 +15,7 @@
14
15
  orderColumn: DataColumn;
15
16
  orderDirection: OrderDirection;
16
17
  getRowFontStyle?: GetRowFontStyle;
17
- emptyIndicator?: string | null;
18
+ emptyText?: string | null;
18
19
  list: Array<any>;
19
20
  expandRow: TableRow | null;
20
21
  scrollTop?: number;
@@ -24,10 +25,14 @@
24
25
  inlineComponent?: any;
25
26
  table: UniDataTable;
26
27
  showVerticalScroll?: boolean;
27
- displayHorizontalScroll?: boolean;
28
- handleWidthChange?: TableEventHandler;
29
- handleCellClick?: (col: DataColumn) => any;
28
+ showHorizontalScroll?: boolean;
29
+ onWidthChange?: OnWidthChange;
30
+ onCellClick?: (col: DataColumn) => any;
30
31
  tabWidth: number;
32
+ /** Row window when virtual scrolling is on; null renders every row. */
33
+ vwindow?: VirtualWindow | null;
34
+ /** Measured height of the scrollable data area (drives the virtual window). */
35
+ viewportHeight?: number;
31
36
  }
32
37
 
33
38
  let {
@@ -36,7 +41,7 @@
36
41
  orderColumn,
37
42
  orderDirection,
38
43
  getRowFontStyle,
39
- emptyIndicator = null,
44
+ emptyText = null,
40
45
  list,
41
46
  expandRow,
42
47
  scrollTop = $bindable(0),
@@ -46,10 +51,12 @@
46
51
  inlineComponent = null,
47
52
  table,
48
53
  showVerticalScroll = false,
49
- displayHorizontalScroll = true,
50
- handleWidthChange,
51
- handleCellClick,
54
+ showHorizontalScroll = true,
55
+ onWidthChange,
56
+ onCellClick,
52
57
  tabWidth = $bindable(0),
58
+ vwindow = null,
59
+ viewportHeight = $bindable(0),
53
60
  }: Props = $props();
54
61
 
55
62
  let scrollLeft = $state(0);
@@ -62,8 +69,13 @@
62
69
  onMount(() => {
63
70
  resizeObserver = new ResizeObserver(() => {
64
71
  viewWidth = Math.round(viewPanel?.clientWidth) - 1;
72
+ viewportHeight = dataPanel?.clientHeight ?? 0;
65
73
  });
66
74
  resizeObserver.observe(viewPanel);
75
+ if (dataPanel) {
76
+ resizeObserver.observe(dataPanel);
77
+ viewportHeight = dataPanel.clientHeight ?? 0;
78
+ }
67
79
  });
68
80
 
69
81
  onDestroy(() => {
@@ -116,19 +128,25 @@
116
128
  });
117
129
 
118
130
  let rowWidth = $derived(Math.max(viewWidth, tabWidth));
119
- let hasWhitespace = $derived(viewWidth > tabWidth);
131
+ let whitespace = $derived(viewWidth > tabWidth);
132
+
133
+ // Virtual scrolling: render only the windowed slice, padded by spacers so the
134
+ // scroll container keeps its full natural scrollHeight. `startIndex` keeps the
135
+ // rendered rows' absolute indices (striping, keys) stable while scrolling.
136
+ let visibleRows = $derived(vwindow ? rows.slice(vwindow.start, vwindow.end) : rows);
137
+ let startIndex = $derived(vwindow ? vwindow.start : 0);
120
138
  </script>
121
139
 
122
140
  <div class="data-content-panel" bind:this={viewPanel}>
123
141
  <TableHeaderPanel
124
- {handleCellClick}
142
+ {onCellClick}
125
143
  {orderColumn}
126
144
  {orderDirection}
127
145
  dataCols={columns}
128
146
  {scrollLeft}
129
147
  width={tabWidth}
130
- {hasWhitespace}
131
- {handleWidthChange}
148
+ {whitespace}
149
+ {onWidthChange}
132
150
  {headerHeight}
133
151
  />
134
152
  <div
@@ -140,7 +158,11 @@
140
158
  >
141
159
  {#if rows && rows.length > 0}
142
160
  <div style="box-sizing: border-box; width: {rowWidth}px; top: 0px">
143
- {#each rows as row, idx (idx)}
161
+ {#if vwindow}
162
+ <div style="height: {vwindow.topPad}px"></div>
163
+ {/if}
164
+ {#each visibleRows as row, i (startIndex + i)}
165
+ {@const idx = startIndex + i}
144
166
  <DataRow
145
167
  fontStyle={getRowFontStyle?.(row.data)}
146
168
  {rowHeight}
@@ -161,10 +183,13 @@
161
183
  </div>
162
184
  {/if}
163
185
  {/each}
186
+ {#if vwindow}
187
+ <div style="height: {vwindow.bottomPad}px"></div>
188
+ {/if}
164
189
  </div>
165
190
  {:else}
166
191
  <div class="empty-content-board" style="width: 100%">
167
- <div>{emptyIndicator ?? 'Empty dataset.'}</div>
192
+ <div>{emptyText ?? 'Empty dataset.'}</div>
168
193
  </div>
169
194
  {/if}
170
195
  </div>
@@ -1,15 +1,16 @@
1
1
  import type DataColumn from "../lib/DataColumn";
2
2
  import type TableRow from "./TableRow";
3
- import UniDataTable, { type TableEventHandler } from "../UniDataTable";
3
+ import UniDataTable, { type OnWidthChange } from "../UniDataTable";
4
4
  import { OrderDirection } from "../lib/OrderDirection";
5
5
  import type { GetRowFontStyle } from "../../types";
6
+ import type { VirtualWindow } from "../lib/virtualWindow";
6
7
  interface Props {
7
8
  columns: Array<DataColumn>;
8
9
  rows: Array<TableRow>;
9
10
  orderColumn: DataColumn;
10
11
  orderDirection: OrderDirection;
11
12
  getRowFontStyle?: GetRowFontStyle;
12
- emptyIndicator?: string | null;
13
+ emptyText?: string | null;
13
14
  list: Array<any>;
14
15
  expandRow: TableRow | null;
15
16
  scrollTop?: number;
@@ -19,11 +20,15 @@ interface Props {
19
20
  inlineComponent?: any;
20
21
  table: UniDataTable;
21
22
  showVerticalScroll?: boolean;
22
- displayHorizontalScroll?: boolean;
23
- handleWidthChange?: TableEventHandler;
24
- handleCellClick?: (col: DataColumn) => any;
23
+ showHorizontalScroll?: boolean;
24
+ onWidthChange?: OnWidthChange;
25
+ onCellClick?: (col: DataColumn) => any;
25
26
  tabWidth: number;
27
+ /** Row window when virtual scrolling is on; null renders every row. */
28
+ vwindow?: VirtualWindow | null;
29
+ /** Measured height of the scrollable data area (drives the virtual window). */
30
+ viewportHeight?: number;
26
31
  }
27
- declare const ContentPanel: import("svelte").Component<Props, {}, "rows" | "scrollTop" | "inlineRowHeight" | "tabWidth">;
32
+ declare const ContentPanel: import("svelte").Component<Props, {}, "scrollTop" | "viewportHeight" | "rows" | "inlineRowHeight" | "tabWidth">;
28
33
  type ContentPanel = ReturnType<typeof ContentPanel>;
29
34
  export default ContentPanel;