hys-ui 0.2.0 → 0.4.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 (261) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +68 -59
  3. package/dist/components/HysAlert/HysAlert.vue.js +5 -54
  4. package/dist/components/HysAlert/HysAlert2.vue.js +159 -2
  5. package/dist/components/HysAnimatedNumber/HysAnimatedNumber.vue.js +5 -41
  6. package/dist/components/HysAnimatedNumber/HysAnimatedNumber2.vue.js +146 -2
  7. package/dist/components/HysAutocomplete/HysAutocomplete.vue.js +2 -2
  8. package/dist/components/HysAutocomplete/HysAutocomplete2.vue.js +285 -273
  9. package/dist/components/HysAvatarGroup/HysAvatarGroup.vue.js +1 -1
  10. package/dist/components/HysAvatarGroup/HysAvatarGroup2.vue.js +102 -98
  11. package/dist/components/HysBreadcrumb/HysBreadcrumb.vue.js +1 -1
  12. package/dist/components/HysBreadcrumb/HysBreadcrumb2.vue.js +273 -59
  13. package/dist/components/HysButton/HysButton.vue.js +2 -2
  14. package/dist/components/HysButton/HysButton2.vue.js +227 -60
  15. package/dist/components/HysButtonGroup/HysButtonGroup.vue.js +7 -0
  16. package/dist/components/HysButtonGroup/HysButtonGroup2.vue.js +51 -0
  17. package/dist/components/HysCalendar/HysCalendar.vue.js +3 -3
  18. package/dist/components/HysCalendar/HysCalendar2.vue.js +237 -225
  19. package/dist/components/HysCascader/HysCascader.vue.js +2 -2
  20. package/dist/components/HysCascader/HysCascader2.vue.js +337 -324
  21. package/dist/components/HysColorPicker/HysColorPanel.vue.js +7 -0
  22. package/dist/components/HysColorPicker/HysColorPanel2.vue.js +238 -0
  23. package/dist/components/HysColorPicker/HysColorPicker.vue.js +2 -2
  24. package/dist/components/HysColorPicker/HysColorPicker2.vue.js +239 -217
  25. package/dist/components/HysCommandPalette/HysCommandPalette.vue.js +90 -76
  26. package/dist/components/HysContextMenu/HysContextMenu.vue.js +5 -89
  27. package/dist/components/HysContextMenu/HysContextMenu2.vue.js +247 -2
  28. package/dist/components/HysContextMenu/HysMenuPanel.vue.js +7 -0
  29. package/dist/components/HysContextMenu/HysMenuPanel2.vue.js +208 -0
  30. package/dist/components/HysContextMenu/HysMenuSlot.js +10 -0
  31. package/dist/components/HysDataGrid/HysDataGrid.vue.js +1 -1
  32. package/dist/components/HysDataGrid/HysDataGrid2.vue.js +1008 -559
  33. package/dist/components/HysDatePicker/HysDatePicker.vue.js +2 -0
  34. package/dist/components/HysDatePicker/HysDatePickerControl.vue.js +2 -2
  35. package/dist/components/HysDatePicker/HysDatePickerControl2.vue.js +539 -526
  36. package/dist/components/HysDateRangePicker/HysDateRangePicker.vue.js +5 -3
  37. package/dist/components/HysDrawer/HysDrawer.vue.js +1 -1
  38. package/dist/components/HysDrawer/HysDrawer2.vue.js +434 -84
  39. package/dist/components/HysEmpty/HysEmpty.vue.js +5 -41
  40. package/dist/components/HysEmpty/HysEmpty2.vue.js +181 -2
  41. package/dist/components/HysFormItem/HysFormItem.vue.js +2 -2
  42. package/dist/components/HysFormItem/HysFormItem2.vue.js +171 -164
  43. package/dist/components/HysGantt/HysGantt.vue.js +1 -1
  44. package/dist/components/HysGantt/HysGantt2.vue.js +810 -795
  45. package/dist/components/HysMention/HysMention.vue.js +1 -1
  46. package/dist/components/HysMention/HysMention2.vue.js +1092 -142
  47. package/dist/components/HysModal/HysModal.vue.js +2 -2
  48. package/dist/components/HysModal/HysModal2.vue.js +491 -85
  49. package/dist/components/HysPagination/HysPagination.vue.js +2 -2
  50. package/dist/components/HysPagination/HysPagination2.vue.js +243 -180
  51. package/dist/components/HysPopover/HysPopover.vue.js +5 -91
  52. package/dist/components/HysPopover/HysPopover2.vue.js +120 -2
  53. package/dist/components/HysProgress/HysProgress.vue.js +2 -2
  54. package/dist/components/HysProgress/HysProgress2.vue.js +319 -52
  55. package/dist/components/HysSearch/HysSearch.vue.js +5 -82
  56. package/dist/components/HysSearch/HysSearch2.vue.js +176 -2
  57. package/dist/components/HysSelect/HysSelect.vue.js +2 -2
  58. package/dist/components/HysSelect/HysSelect2.vue.js +755 -590
  59. package/dist/components/HysSlider/HysSlider.vue.js +2 -2
  60. package/dist/components/HysSlider/HysSlider2.vue.js +192 -188
  61. package/dist/components/HysSlider/SliderTooltip.vue.js +2 -2
  62. package/dist/components/HysSlider/SliderTooltip2.vue.js +103 -89
  63. package/dist/components/HysSplitPane/HysSplitPane.vue.js +315 -58
  64. package/dist/components/HysSplitPane/HysSplitPane3.vue.js +5 -0
  65. package/dist/components/HysTable/HysTable.vue.js +2 -2
  66. package/dist/components/HysTable/HysTable2.vue.js +1416 -1127
  67. package/dist/components/HysTagInput/HysTagInput.vue.js +5 -82
  68. package/dist/components/HysTagInput/HysTagInput2.vue.js +396 -2
  69. package/dist/components/HysTimeline/HysTimeline.vue.js +2 -2
  70. package/dist/components/HysTimeline/HysTimeline2.vue.js +243 -24
  71. package/dist/components/HysTooltip/HysTooltip.vue.js +5 -64
  72. package/dist/components/HysTooltip/HysTooltip2.vue.js +110 -2
  73. package/dist/components/HysTour/HysTour.vue.js +291 -63
  74. package/dist/components/HysTour/HysTour3.vue.js +5 -0
  75. package/dist/components/HysTransfer/HysTransfer.vue.js +2 -2
  76. package/dist/components/HysTransfer/HysTransfer2.vue.js +237 -207
  77. package/dist/components/HysTransfer/HysTransferPanel.vue.js +1 -1
  78. package/dist/components/HysTransfer/HysTransferPanel2.vue.js +320 -271
  79. package/dist/components/HysTree/HysTree.vue.js +2 -2
  80. package/dist/components/HysTree/HysTree2.vue.js +195 -184
  81. package/dist/components/HysTreeSelect/HysTreeSelect.vue.js +4 -4
  82. package/dist/components/HysTreeSelect/HysTreeSelect2.vue.js +389 -377
  83. package/dist/components/HysUpload/HysUpload.vue.js +2 -2
  84. package/dist/components/HysUpload/HysUpload2.vue.js +459 -125
  85. package/dist/components/HysVirtualTable/HysVirtualTable.vue.js +5 -94
  86. package/dist/components/HysVirtualTable/HysVirtualTable2.vue.js +656 -2
  87. package/dist/composables/buttonGroup.js +12 -0
  88. package/dist/composables/color.js +97 -0
  89. package/dist/composables/dataGrid.js +68 -0
  90. package/dist/composables/drawer.js +17 -0
  91. package/dist/composables/feedback.js +14 -0
  92. package/dist/composables/floatingPosition.js +18 -0
  93. package/dist/composables/mentionDocument.js +79 -0
  94. package/dist/composables/mentionEditor.js +58 -0
  95. package/dist/composables/menu.js +96 -0
  96. package/dist/composables/modal.js +14 -0
  97. package/dist/composables/overlayManager.js +48 -18
  98. package/dist/composables/progress.js +94 -0
  99. package/dist/composables/selectOptions.js +44 -38
  100. package/dist/composables/splitPaneSizes.js +58 -0
  101. package/dist/composables/table.js +128 -105
  102. package/dist/composables/tagInput.js +16 -0
  103. package/dist/composables/timeline.js +19 -0
  104. package/dist/composables/transfer.js +19 -17
  105. package/dist/composables/upload.js +55 -0
  106. package/dist/composables/uploadRequest.js +58 -0
  107. package/dist/composables/useAlert.js +124 -0
  108. package/dist/composables/useColorPicker.js +402 -0
  109. package/dist/composables/useContextMenu.js +514 -0
  110. package/dist/composables/useDataGridRemote.js +67 -0
  111. package/dist/composables/useDialog.js +86 -43
  112. package/dist/composables/useDrawerPush.js +33 -0
  113. package/dist/composables/useDrawerResize.js +221 -0
  114. package/dist/composables/useFloating.js +118 -80
  115. package/dist/composables/useHysModal.js +185 -0
  116. package/dist/composables/useMentionCaret.js +81 -0
  117. package/dist/composables/useMentionList.js +81 -0
  118. package/dist/composables/useMentionModel.js +90 -0
  119. package/dist/composables/useMentionOptions.js +421 -0
  120. package/dist/composables/useModal.js +295 -0
  121. package/dist/composables/useModalInteraction.js +394 -0
  122. package/dist/composables/usePopupSurface.js +458 -0
  123. package/dist/composables/useSplitPaneDrag.js +52 -0
  124. package/dist/composables/useSplitPaneStorage.js +38 -0
  125. package/dist/composables/useTable.js +344 -312
  126. package/dist/composables/useTableSticky.js +79 -0
  127. package/dist/composables/useTagInput.js +313 -0
  128. package/dist/composables/useTourLayout.js +129 -0
  129. package/dist/composables/useTransferMotion.js +185 -0
  130. package/dist/composables/useUpload.js +472 -0
  131. package/dist/composables/useUploadModel.js +65 -0
  132. package/dist/composables/useUploadRequests.js +266 -0
  133. package/dist/composables/useVirtualTableLayout.js +277 -0
  134. package/dist/composables/virtualTable.js +43 -0
  135. package/dist/config.js +11 -11
  136. package/dist/index.js +175 -153
  137. package/dist/internal/MultiSplitPane.vue.js +305 -0
  138. package/dist/internal/MultiSplitPane2.vue.js +4 -0
  139. package/dist/internal/PopupReference.js +39 -0
  140. package/dist/internal/PopupSurfacePanel.vue.js +7 -0
  141. package/dist/internal/PopupSurfacePanel2.vue.js +92 -0
  142. package/dist/motion/PopupMotion.js +105 -0
  143. package/dist/motion/popup.js +10 -0
  144. package/dist/style.css +1 -1
  145. package/dist/types/components/HysAlert/HysAlert.vue.d.ts +32 -22
  146. package/dist/types/components/HysAnimatedNumber/HysAnimatedNumber.vue.d.ts +61 -7
  147. package/dist/types/components/HysAutocomplete/HysAutocomplete.vue.d.ts +7 -7
  148. package/dist/types/components/HysAvatarGroup/HysAvatarGroup.vue.d.ts +6 -1
  149. package/dist/types/components/HysBadge/HysBadge.vue.d.ts +3 -3
  150. package/dist/types/components/HysBreadcrumb/HysBreadcrumb.vue.d.ts +54 -31
  151. package/dist/types/components/HysButton/HysButton.vue.d.ts +82 -22
  152. package/dist/types/components/HysButtonGroup/HysButtonGroup.vue.d.ts +30 -0
  153. package/dist/types/components/HysCalendar/HysCalendar.vue.d.ts +3 -2
  154. package/dist/types/components/HysCascader/HysCascader.vue.d.ts +7 -7
  155. package/dist/types/components/HysCascader/HysCascaderColumn.vue.d.ts +2 -2
  156. package/dist/types/components/HysColorPicker/HysColorPanel.vue.d.ts +58 -0
  157. package/dist/types/components/HysColorPicker/HysColorPicker.vue.d.ts +63 -10
  158. package/dist/types/components/HysCommandPalette/HysCommandPalette.vue.d.ts +2 -1
  159. package/dist/types/components/HysContextMenu/HysContextMenu.vue.d.ts +50 -34
  160. package/dist/types/components/HysContextMenu/HysMenuPanel.vue.d.ts +79 -0
  161. package/dist/types/components/HysContextMenu/HysMenuSlot.d.ts +8 -0
  162. package/dist/types/components/HysDataGrid/HysDataGrid.vue.d.ts +65 -118
  163. package/dist/types/components/HysDatePicker/HysDatePickerControl.vue.d.ts +3 -3
  164. package/dist/types/components/HysDrawer/HysDrawer.vue.d.ts +92 -35
  165. package/dist/types/components/HysEmpty/HysEmpty.vue.d.ts +24 -20
  166. package/dist/types/components/HysFileManager/HysFileManager.vue.d.ts +2 -2
  167. package/dist/types/components/HysGantt/HysGantt.vue.d.ts +2 -1
  168. package/dist/types/components/HysMention/HysMention.vue.d.ts +91 -39
  169. package/dist/types/components/HysModal/HysModal.vue.d.ts +111 -34
  170. package/dist/types/components/HysNumberInput/HysNumberInput.vue.d.ts +2 -2
  171. package/dist/types/components/HysPagination/HysPagination.vue.d.ts +55 -4
  172. package/dist/types/components/HysPopover/HysPopover.vue.d.ts +41 -29
  173. package/dist/types/components/HysProgress/HysProgress.vue.d.ts +18 -24
  174. package/dist/types/components/HysRating/HysRating.vue.d.ts +1 -1
  175. package/dist/types/components/HysResizablePanel/HysResizablePanel.vue.d.ts +2 -2
  176. package/dist/types/components/HysSearch/HysSearch.vue.d.ts +45 -7
  177. package/dist/types/components/HysSelect/HysSelect.vue.d.ts +19 -5
  178. package/dist/types/components/HysSlider/HysSlider.vue.d.ts +5 -4
  179. package/dist/types/components/HysSlider/SliderTooltip.vue.d.ts +3 -1
  180. package/dist/types/components/HysSplitPane/HysSplitPane.vue.d.ts +125 -14
  181. package/dist/types/components/HysSteps/HysSteps.vue.d.ts +1 -1
  182. package/dist/types/components/HysTable/HysTable.vue.d.ts +1742 -5
  183. package/dist/types/components/HysTabs/HysTabs.vue.d.ts +2 -2
  184. package/dist/types/components/HysTagInput/HysTagInput.vue.d.ts +47 -25
  185. package/dist/types/components/HysTimeline/HysTimeline.vue.d.ts +19 -32
  186. package/dist/types/components/HysTooltip/HysTooltip.vue.d.ts +39 -19
  187. package/dist/types/components/HysTour/HysTour.vue.d.ts +46 -8
  188. package/dist/types/components/HysTransfer/HysTransfer.vue.d.ts +2 -2
  189. package/dist/types/components/HysTransfer/HysTransferPanel.vue.d.ts +5 -3
  190. package/dist/types/components/HysTree/HysTree.vue.d.ts +2 -2
  191. package/dist/types/components/HysUpload/HysUpload.vue.d.ts +55 -67
  192. package/dist/types/components/HysVirtualTable/HysVirtualTable.vue.d.ts +71 -40
  193. package/dist/types/composables/autocomplete.d.ts +3 -0
  194. package/dist/types/composables/avatar.d.ts +3 -0
  195. package/dist/types/composables/buttonGroup.d.ts +9 -0
  196. package/dist/types/composables/cascader.d.ts +3 -0
  197. package/dist/types/composables/color.d.ts +97 -0
  198. package/dist/types/composables/dataGrid.d.ts +100 -0
  199. package/dist/types/composables/datePicker.d.ts +3 -0
  200. package/dist/types/composables/drawer.d.ts +102 -0
  201. package/dist/types/composables/feedback.d.ts +98 -0
  202. package/dist/types/composables/floatingPosition.d.ts +14 -0
  203. package/dist/types/composables/formContext.d.ts +2 -0
  204. package/dist/types/composables/mention.d.ts +284 -0
  205. package/dist/types/composables/mentionDocument.d.ts +15 -0
  206. package/dist/types/composables/mentionEditor.d.ts +7 -0
  207. package/dist/types/composables/menu.d.ts +183 -0
  208. package/dist/types/composables/modal.d.ts +185 -0
  209. package/dist/types/composables/overlayManager.d.ts +7 -3
  210. package/dist/types/composables/popupSurface.d.ts +83 -0
  211. package/dist/types/composables/progress.d.ts +92 -0
  212. package/dist/types/composables/selectOptions.d.ts +7 -0
  213. package/dist/types/composables/splitPaneSizes.d.ts +11 -0
  214. package/dist/types/composables/table.d.ts +119 -6
  215. package/dist/types/composables/tagInput.d.ts +96 -0
  216. package/dist/types/composables/timeline.d.ts +82 -0
  217. package/dist/types/composables/tour.d.ts +68 -0
  218. package/dist/types/composables/transfer.d.ts +7 -0
  219. package/dist/types/composables/tree.d.ts +3 -0
  220. package/dist/types/composables/treeSelect.d.ts +3 -0
  221. package/dist/types/composables/upload.d.ts +202 -0
  222. package/dist/types/composables/uploadRequest.d.ts +3 -0
  223. package/dist/types/composables/useAlert.d.ts +21 -0
  224. package/dist/types/composables/useCascader.d.ts +1 -1
  225. package/dist/types/composables/useColorPicker.d.ts +101 -0
  226. package/dist/types/composables/useContextMenu.d.ts +81 -0
  227. package/dist/types/composables/useDataGridRemote.d.ts +15 -0
  228. package/dist/types/composables/useDialog.d.ts +16 -3
  229. package/dist/types/composables/useDrawerPush.d.ts +6 -0
  230. package/dist/types/composables/useDrawerResize.d.ts +27 -0
  231. package/dist/types/composables/useFloating.d.ts +22 -3
  232. package/dist/types/composables/useHysModal.d.ts +44 -0
  233. package/dist/types/composables/useMentionCaret.d.ts +6 -0
  234. package/dist/types/composables/useMentionList.d.ts +23 -0
  235. package/dist/types/composables/useMentionModel.d.ts +14 -0
  236. package/dist/types/composables/useMentionOptions.d.ts +26 -0
  237. package/dist/types/composables/useModal.d.ts +62 -0
  238. package/dist/types/composables/useModalInteraction.d.ts +27 -0
  239. package/dist/types/composables/usePopupSurface.d.ts +3341 -0
  240. package/dist/types/composables/useSplitPaneDrag.d.ts +14 -0
  241. package/dist/types/composables/useSplitPaneStorage.d.ts +4 -0
  242. package/dist/types/composables/useTable.d.ts +7 -3
  243. package/dist/types/composables/useTableSticky.d.ts +22 -0
  244. package/dist/types/composables/useTagInput.d.ts +66 -0
  245. package/dist/types/composables/useTourLayout.d.ts +33 -0
  246. package/dist/types/composables/useTransferMotion.d.ts +36 -0
  247. package/dist/types/composables/useUpload.d.ts +94 -0
  248. package/dist/types/composables/useUploadModel.d.ts +14 -0
  249. package/dist/types/composables/useUploadRequests.d.ts +38 -0
  250. package/dist/types/composables/useVirtualTableLayout.d.ts +51 -0
  251. package/dist/types/composables/virtualTable.d.ts +126 -0
  252. package/dist/types/config.d.ts +1 -0
  253. package/dist/types/index.d.ts +53 -3
  254. package/dist/types/internal/MultiSplitPane.vue.d.ts +54 -0
  255. package/dist/types/internal/PopupReference.d.ts +18 -0
  256. package/dist/types/internal/PopupSurfacePanel.vue.d.ts +37 -0
  257. package/dist/types/motion/PopupMotion.d.ts +59 -0
  258. package/dist/types/motion/popup.d.ts +12 -0
  259. package/package.json +3 -2
  260. package/dist/components/HysSplitPane/HysSplitPane2.vue.js +0 -4
  261. package/dist/components/HysTour/HysTour2.vue.js +0 -4
@@ -1,807 +1,1256 @@
1
- import { defineComponent as Kt, ref as v, watch as D, computed as b, useId as At, nextTick as Me, onDeactivated as Rt, onBeforeUnmount as Et, openBlock as r, createElementBlock as d, mergeProps as Lt, unref as K, createElementVNode as m, createVNode as p, createTextVNode as X, createCommentVNode as k, withCtx as z, toDisplayString as B, createBlock as le, normalizeStyle as G, normalizeClass as fe, Fragment as $, renderList as ye, withModifiers as A, withKeys as pe, resolveDynamicComponent as Xe, renderSlot as Bt } from "vue";
2
- import { useHysRootAttrs as Ft } from "../../config.js";
3
- import { Settings2 as Tt, ChevronUp as Ut, ChevronDown as Re, Search as $t, ChevronRight as Ge } from "lucide-vue-next";
4
- import { useMotion as Ht } from "../../motion/useMotion.js";
5
- import Nt from "../HysSortableList/HysSortableList.vue.js";
6
- import Je from "../HysSelect/HysSelect.vue.js";
7
- import Ve from "../HysInput/HysInput.vue.js";
8
- import Ee from "../HysCheckbox/HysCheckbox.vue.js";
9
- import R from "../HysButton/HysButton.vue.js";
10
- import Ot from "../HysPagination/HysPagination.vue.js";
11
- const Pt = { class: "hys-ui-pf-grid-toolbar" }, jt = { class: "hys-ui-pf-grid-search" }, qt = {
1
+ import { defineComponent as xa, ref as w, useId as Vt, computed as c, shallowRef as Me, watch as L, onMounted as za, onDeactivated as Ra, onBeforeUnmount as Ma, openBlock as s, createElementBlock as u, mergeProps as Ta, unref as m, createElementVNode as y, createVNode as g, createTextVNode as V, createCommentVNode as h, withCtx as z, toDisplayString as O, createBlock as D, normalizeStyle as $, normalizeClass as ve, Fragment as N, renderList as ye, withModifiers as q, withKeys as nt, renderSlot as $e, resolveDynamicComponent as Dt, nextTick as pe } from "vue";
2
+ import { Settings2 as Ea, ChevronUp as Ka, ChevronDown as it, Search as Aa, ChevronRight as Ft } from "lucide-vue-next";
3
+ import { useHysRootAttrs as Va } from "../../config.js";
4
+ import Da from "../../motion/PopupMotion.js";
5
+ import { useMotion as Fa } from "../../motion/useMotion.js";
6
+ import { gridRows as La, gridValue as me, gridTree as Oa, gridToken as st, positiveInteger as Te, gridKey as Na } from "../../composables/dataGrid.js";
7
+ import { useDataGridRemote as qa } from "../../composables/useDataGridRemote.js";
8
+ import Ba from "../HysSortableList/HysSortableList.vue.js";
9
+ import Lt from "../HysSelect/HysSelect.vue.js";
10
+ import Ie from "../HysInput/HysInput.vue.js";
11
+ import rt from "../HysCheckbox/HysCheckbox.vue.js";
12
+ import Ha from "../HysRadio/HysRadio.vue.js";
13
+ import T from "../HysButton/HysButton.vue.js";
14
+ import Ua from "../HysPagination/HysPagination.vue.js";
15
+ const $a = ["aria-busy"], Ia = { class: "hys-ui-pf-grid-toolbar" }, ja = { class: "hys-ui-pf-grid-search" }, Pa = {
12
16
  key: 0,
13
17
  class: "hys-ui-pf-grid-group-label"
14
- }, It = {
18
+ }, Qa = {
15
19
  key: 1,
16
20
  class: "hys-ui-pf-grid-batch"
17
- }, Wt = { class: "hys-ui-pf-grid-count" }, Xt = {
21
+ }, Wa = { class: "hys-ui-pf-grid-count" }, Ja = {
18
22
  key: 0,
19
23
  class: "hys-ui-pf-grid-panel"
20
- }, Gt = {
24
+ }, Xa = {
21
25
  key: 0,
22
26
  style: { width: "44px" }
23
- }, Jt = {
27
+ }, Ga = {
24
28
  key: 0,
25
29
  scope: "col",
26
30
  class: "hys-ui-pf-grid-select-col"
27
- }, Qt = ["data-column-key", "data-drop-position", "draggable", "onDragstart", "onDragover", "onDrop", "aria-sort"], Yt = { class: "hys-ui-pf-grid-head" }, Zt = { class: "hys-ui-pf-grid-sort-group" }, _t = { class: "hys-ui-pf-grid-sort-label" }, el = ["aria-label"], tl = ["aria-label", "onPointerdown", "onKeydown"], ll = ["id"], al = {
31
+ }, Ya = { key: 1 }, Za = ["data-column-key", "data-drop-position", "draggable", "onDragstart", "onDragover", "onDrop", "aria-sort"], _a = { class: "hys-ui-pf-grid-head" }, el = { class: "hys-ui-pf-grid-sort-group" }, tl = { class: "hys-ui-pf-grid-sort-label" }, al = ["aria-label"], ll = ["aria-label", "onPointerdown", "aria-valuemin", "aria-valuemax", "aria-valuenow", "onKeydown"], ol = ["id"], nl = {
28
32
  key: 0,
29
33
  class: "hys-ui-pf-grid-select-col"
30
- }, nl = ["data-filter-key", "data-column-key"], ol = { key: 0 }, rl = ["colspan"], sl = {
34
+ }, il = ["data-filter-key", "data-column-key"], sl = { key: 0 }, rl = ["colspan"], ul = { role: "status" }, dl = { key: 1 }, cl = ["colspan"], fl = {
31
35
  key: 0,
32
36
  class: "hys-ui-pf-grid-group-row"
33
- }, il = ["colspan"], ul = ["onClick"], dl = {
37
+ }, vl = ["colspan"], yl = ["data-grid-row", "onClick"], pl = {
34
38
  key: 0,
35
39
  class: "hys-ui-pf-grid-select-col"
36
- }, cl = ["data-column-key", "title"], fl = ["onDblclick"], yl = { key: 0 }, vl = ["colspan"], ml = { key: 0 }, pl = { class: "hys-ui-pf-grid-summary-row" }, gl = {
40
+ }, ml = ["data-column-key", "title"], gl = ["onDblclick"], hl = { key: 0 }, kl = ["colspan"], bl = { key: 0 }, wl = { class: "hys-ui-pf-grid-summary-row" }, Sl = {
37
41
  key: 0,
38
42
  class: "hys-ui-pf-grid-select-col"
39
- }, hl = ["data-column-key"], kl = { class: "hys-ui-pf-grid-footer" }, Qe = 160, Rl = /* @__PURE__ */ Kt({
43
+ }, Cl = ["data-column-key"], xl = { class: "hys-ui-pf-grid-footer" }, Bl = /* @__PURE__ */ xa({
40
44
  __name: "HysDataGrid",
41
45
  props: {
42
46
  columns: {},
43
47
  rows: {},
44
- rowKey: { default: "id" },
45
- pageSize: { default: 10 },
48
+ rowKey: { type: [String, Function], default: "id" },
49
+ page: {},
50
+ pageSize: {},
51
+ query: {},
52
+ defaultQuery: {},
53
+ immediateQuery: { type: Boolean },
54
+ serverMode: { type: Boolean },
55
+ loadRows: {},
56
+ totalRows: {},
46
57
  storageKey: {},
47
58
  selectable: { type: Boolean, default: !0 },
48
- loading: { type: Boolean, default: !1 },
59
+ rowSelectable: {},
60
+ selectedRowKeys: {},
61
+ defaultSelectedRowKeys: {},
62
+ reserveSelection: { type: Boolean, default: void 0 },
63
+ selectionType: { default: "checkbox" },
64
+ loading: { type: Boolean },
49
65
  emptyText: { default: "暂无数据" },
50
66
  density: { default: "normal" },
51
- serverMode: { type: Boolean },
52
- totalRows: {},
53
- page: {},
54
67
  multiSort: { type: Boolean },
55
68
  stickyHeader: { type: Boolean },
69
+ maxHeight: {},
70
+ scrollToTopOnQuery: { type: Boolean },
56
71
  groupable: { type: Boolean },
57
72
  showSummary: { type: Boolean },
73
+ summaryMethod: {},
58
74
  treeMode: { type: Boolean },
59
75
  parentKey: { default: "parentId" },
60
- editable: { type: Boolean }
76
+ editable: { type: Boolean },
77
+ popupTransition: {},
78
+ popupTransitionDuration: {}
61
79
  },
62
- emits: ["rowClick", "selectionChange", "columnsChange", "sortChange", "pageChange", "queryChange", "pageSizeChange", "cellEdit", "batchEdit"],
63
- setup(u, { expose: Ye, emit: Ze }) {
64
- const _e = Ft(), o = u, M = Ze, H = (() => {
65
- if (!o.storageKey || typeof localStorage > "u") return {};
66
- try {
67
- const t = JSON.parse(localStorage.getItem("hys-ui-grid:" + o.storageKey) || "{}");
68
- return t && typeof t == "object" && !Array.isArray(t) ? t : {};
69
- } catch {
70
- return {};
80
+ emits: ["rowClick", "selectionChange", "update:selectedRowKeys", "columnsChange", "sortChange", "pageChange", "pageSizeChange", "update:query", "queryChange", "loadError", "cellEdit", "batchEdit"],
81
+ setup(v, { expose: Ot, emit: Nt }) {
82
+ const i = v, x = Nt, qt = Va(), te = w(null), ge = w(null), je = w(null), I = w(!1), j = w(!1), ae = w(), ut = Vt(), Bt = Vt(), F = c(
83
+ () => new Map(i.columns.map((e) => [e.key, e]))
84
+ );
85
+ function le(e) {
86
+ const a = [], t = /* @__PURE__ */ new Set();
87
+ for (const o of e.sort ?? []) {
88
+ const n = F.value.get(o.key);
89
+ if (!(!n || n.sortable === !1 || t.has(o.key)) && !(o.direction !== "asc" && o.direction !== "desc") && (t.add(o.key), a.push({ key: o.key, direction: o.direction }), !i.multiSort))
90
+ break;
71
91
  }
72
- })(), et = Array.isArray(H.order) ? H.order.filter((t) => typeof t == "string") : [], tt = Array.isArray(H.hidden) ? H.hidden.filter((t) => typeof t == "string") : [], lt = H.widths && typeof H.widths == "object" && !Array.isArray(H.widths) ? Object.fromEntries(Object.entries(H.widths).filter((t) => typeof t[1] == "number" && Number.isFinite(t[1]))) : {}, V = v(et), w = v(tt), g = v(lt), ae = v(null), N = v([]), ge = v(Math.max(1, o.pageSize)), O = v({}), ne = v(""), J = v(""), Q = v([]), Y = v(null), he = v(""), ve = v(""), ke = v(""), P = v([]), C = v(1), h = v([]), Z = v(!1), De = v(null), oe = v(null);
73
- D(() => o.columns, () => {
74
- if (!o.columns.length) return;
75
- const t = o.columns.map((l) => l.key);
76
- V.value = [.../* @__PURE__ */ new Set([...V.value.filter((l) => t.includes(l)), ...t])], w.value = [...new Set(w.value.filter((l) => o.columns.some((e) => e.key === l && e.hideable !== !1)))], t.every((l) => w.value.includes(l)) && (w.value = []), g.value = Object.fromEntries(o.columns.filter((l) => g.value[l.key] != null).map((l) => [
77
- l.key,
78
- Math.max(l.minWidth || 80, Math.min(l.maxWidth || 800, g.value[l.key]))
79
- ]));
80
- }, { immediate: !0, deep: !0 });
81
- function Le() {
82
- if (!(!o.storageKey || typeof localStorage > "u"))
83
- try {
84
- localStorage.setItem("hys-ui-grid:" + o.storageKey, JSON.stringify({ order: V.value, hidden: w.value, widths: g.value }));
85
- } catch {
86
- }
92
+ const l = Object.fromEntries(
93
+ Object.entries(e.filters ?? {}).filter(([o, n]) => {
94
+ const r = F.value.get(o);
95
+ return r && r.filterable !== !1 && typeof n == "string" && n !== "";
96
+ })
97
+ );
98
+ return {
99
+ page: Te(e.page, 1),
100
+ pageSize: Te(e.pageSize, 10),
101
+ sort: a,
102
+ search: e.search ?? "",
103
+ filters: l
104
+ };
87
105
  }
88
- Le(), D([V, w, g], () => {
89
- Le(), M("columnsChange", E.value.map((t) => t.key));
90
- }, { deep: !0 });
91
- const E = b(() => {
92
- const l = [.../* @__PURE__ */ new Set([...V.value, ...o.columns.map((e) => e.key)])].filter((e) => !w.value.includes(e)).map((e) => o.columns.find((a) => a.key === e)).filter((e) => !!e);
93
- return l.length ? l : o.columns;
94
- });
95
- Ye({ resetColumns: We });
96
- const L = b(() => [...E.value.filter((t) => t.pinned === "left"), ...E.value.filter((t) => !t.pinned), ...E.value.filter((t) => t.pinned === "right")]), j = v(!1), re = v(), Be = At();
97
- async function Fe(t = !0) {
98
- var a, n, s;
99
- if (j.value = !1, !t) return;
100
- await Me();
101
- const e = Array.from(((a = oe.value) == null ? void 0 : a.querySelectorAll("thead th[data-column-key]")) || []).find((i) => i.dataset.columnKey === re.value);
102
- (s = (e == null ? void 0 : e.querySelector(".hys-ui-pf-grid-filter")) || ((n = oe.value) == null ? void 0 : n.querySelector(".hys-ui-pf-grid-filter"))) == null || s.focus({ preventScroll: !0 });
103
- }
104
- async function at(t) {
106
+ const dt = () => {
105
107
  var e, a;
106
- if (j.value && re.value === t.key) {
107
- await Fe(!1);
108
- return;
109
- }
110
- re.value = t.key, j.value = !0, await Me();
111
- const l = Array.from(((e = oe.value) == null ? void 0 : e.querySelectorAll("[data-filter-key]")) || []).find((n) => n.dataset.filterKey === t.key);
112
- (a = l == null ? void 0 : l.querySelector("input")) == null || a.focus({ preventScroll: !0 });
113
- }
114
- const nt = b(() => [.../* @__PURE__ */ new Set([...V.value, ...o.columns.map((t) => t.key)])].flatMap((t) => {
115
- const l = o.columns.find((e) => e.key === t);
116
- return l ? [{ id: t, label: l.label }] : [];
117
- })), ot = b(() => L.value.reduce((t, l) => t + (g.value[l.key] || l.width || 160), o.selectable ? 44 : 0)), rt = b(() => {
118
- const t = {};
119
- let l = o.selectable ? 44 : 0;
120
- for (const a of L.value.filter((n) => n.pinned === "left"))
121
- t[a.key] = { left: l + "px" }, l += g.value[a.key] || a.width || 160;
122
- let e = 0;
123
- for (const a of [...L.value].reverse().filter((n) => n.pinned === "right"))
124
- t[a.key] = { right: e + "px" }, e += g.value[a.key] || a.width || 160;
125
- return t;
126
- }), be = (t, l = !1) => t.pinned ? { position: "sticky", ...rt.value[t.key], zIndex: l ? 5 : 2 } : {}, se = b(() => Math.max(1, ge.value));
127
- D(() => o.pageSize, (t) => ge.value = Math.max(1, t)), D(() => o.page, (t) => {
128
- t != null && (C.value = Math.max(1, t));
129
- });
130
- const x = b(() => o.multiSort ? N.value : ae.value ? [ae.value] : []), ie = (t, l) => t[l] == null ? "" : String(t[l]), q = b(() => {
131
- if (o.serverMode) return o.rows;
132
- const t = ne.value.trim().toLocaleLowerCase();
133
- let l = o.rows.filter((e) => (!t || o.columns.some((a) => ie(e, a.key).toLocaleLowerCase().includes(t))) && Object.entries(O.value).every(([a, n]) => !n || ie(e, a).toLocaleLowerCase().includes(n.toLocaleLowerCase())));
134
- return x.value.length && (l = [...l].sort((e, a) => {
135
- for (const { key: n, direction: s } of x.value) {
136
- const i = e[n], y = a[n], f = typeof i == "number" && typeof y == "number" ? i - y : String(i ?? "").localeCompare(String(y ?? ""), "zh-CN", { numeric: !0 });
137
- if (f) return s === "asc" ? f : -f;
108
+ return le({
109
+ ...i.defaultQuery,
110
+ page: i.page ?? ((e = i.defaultQuery) == null ? void 0 : e.page),
111
+ pageSize: i.pageSize ?? ((a = i.defaultQuery) == null ? void 0 : a.pageSize)
112
+ });
113
+ }, P = Me(dt()), oe = c(
114
+ () => le(i.query ?? P.value)
115
+ ), S = c(() => oe.value.sort), Pe = c({
116
+ get: () => oe.value.search,
117
+ set: (e) => J({ search: e, page: 1 })
118
+ }), Ee = c(() => oe.value.filters), ct = (e) => Object.hasOwn(Ee.value, e) ? Ee.value[e] : "", Q = c(() => oe.value.pageSize), ne = c(() => i.serverMode || !!i.loadRows), he = w(""), ie = Me(/* @__PURE__ */ new Set()), se = Me(/* @__PURE__ */ new Set()), W = w(null), Ke = w(""), ke = w(""), Ae = w(""), Ht = new Intl.Collator("zh-CN", { numeric: !0 }), ee = c(() => ({
119
+ ...oe.value,
120
+ page: Math.min(oe.value.page, Je.value)
121
+ })), {
122
+ pending: Ut,
123
+ failure: Ve,
124
+ reload: $t,
125
+ sourceRows: ft,
126
+ remoteTotal: De
127
+ } = qa(i, ee, (e) => x("loadError", e)), Fe = c(() => i.loading || Ut.value), vt = c(
128
+ () => La(
129
+ ft.value,
130
+ i.rowKey,
131
+ ne.value ? (ee.value.page - 1) * Q.value : 0
132
+ )
133
+ ), re = (e, a) => String(me(e, a) ?? ""), be = c(() => {
134
+ const e = vt.value;
135
+ if (ne.value) return e;
136
+ const a = Pe.value.trim().toLocaleLowerCase(), t = Object.entries(Ee.value).flatMap(
137
+ ([o, n]) => {
138
+ const r = F.value.get(o);
139
+ return r ? [{ column: r, value: n, term: n.toLocaleLowerCase() }] : [];
140
+ }
141
+ ), l = e.filter(
142
+ ({ row: o }) => (!a || i.columns.some(
143
+ (n) => re(o, n).toLocaleLowerCase().includes(a)
144
+ )) && t.every(
145
+ (n) => n.column.filterMethod ? n.column.filterMethod(n.value, o) : re(o, n.column).toLocaleLowerCase().includes(n.term)
146
+ )
147
+ );
148
+ return S.value.length ? l.sort((o, n) => {
149
+ for (const { key: r, direction: f } of S.value) {
150
+ const k = F.value.get(r), _ = me(o.row, k), d = me(n.row, k), M = k.sortMethod ? k.sortMethod(o.row, n.row) : typeof _ == "number" && typeof d == "number" ? _ - d : Ht.compare(String(_ ?? ""), String(d ?? ""));
151
+ if (M) return f === "asc" ? M : -M;
138
152
  }
139
153
  return 0;
140
- })), l;
141
- }), Te = b(() => Math.max(1, Math.ceil((o.serverMode ? o.totalRows ?? o.rows.length : q.value.length) / se.value)));
142
- D([ne, O, ae, N, () => o.pageSize], () => {
143
- C.value = 1;
144
- }, { deep: !0 }), D(Te, (t) => {
145
- C.value = Math.min(C.value, t);
146
- });
147
- const Ue = b(() => {
148
- if (!o.treeMode) return q.value;
149
- const t = q.value, l = new Set(t.map((i) => i[o.rowKey])), e = /* @__PURE__ */ new Map();
150
- for (const i of t) {
151
- const y = i[o.parentKey], f = y != null && l.has(y) ? y : null, te = e.get(f) || [];
152
- te.push(i), e.set(f, te);
153
- }
154
- const a = [], n = /* @__PURE__ */ new Set(), s = (i, y) => {
155
- if (!n.has(i) && (n.add(i), a.push({ ...i, __pfDepth: y, __pfHasChildren: (e.get(i[o.rowKey]) || []).length > 0 }), Q.value.includes(i[o.rowKey])))
156
- for (const f of e.get(i[o.rowKey]) || []) s(f, y + 1);
157
- };
158
- for (const i of e.get(null) || []) s(i, 0);
159
- for (const i of t) n.has(i) || s(i, 0);
160
- return a;
161
- }), we = b(() => o.serverMode ? Ue.value : Ue.value.slice((C.value - 1) * se.value, C.value * se.value)), _ = (t, l) => {
162
- const e = t[o.rowKey];
163
- return typeof e == "string" || typeof e == "number" ? e : l + (C.value - 1) * se.value;
164
- };
165
- D(() => o.rows, (t) => {
166
- if (!o.serverMode) {
167
- const l = new Set(t.map((a, n) => {
168
- const s = a[o.rowKey];
169
- return typeof s == "string" || typeof s == "number" ? s : n;
170
- })), e = h.value.filter((a) => l.has(a));
171
- e.length !== h.value.length && (h.value = e, M("selectionChange", e));
154
+ }) : l;
155
+ }), Qe = c(
156
+ () => i.treeMode ? Oa(be.value, i.parentKey, ie.value) : be.value.map((e) => ({ ...e, depth: 0, hasChildren: !1 }))
157
+ ), We = c(
158
+ () => ne.value ? Math.max(
159
+ 0,
160
+ Math.floor(
161
+ Number.isFinite(De.value) ? De.value : ft.value.length
162
+ )
163
+ ) : Qe.value.length
164
+ ), Je = c(
165
+ () => i.loadRows && De.value === void 0 ? Number.MAX_SAFE_INTEGER : Math.max(1, Math.ceil(We.value / Q.value))
166
+ ), ue = c(() => ee.value.page), Xe = c(
167
+ () => ne.value ? Qe.value : Qe.value.slice(
168
+ (ue.value - 1) * Q.value,
169
+ ue.value * Q.value
170
+ )
171
+ ), It = c(() => be.value.map((e) => e.row)), we = () => le(ee.value);
172
+ function J(e) {
173
+ const a = le({ ...ee.value, ...e });
174
+ JSON.stringify(a) !== JSON.stringify(ee.value) && (i.query === void 0 && (P.value = a), x("update:query", le(a)));
175
+ }
176
+ function jt() {
177
+ J(dt());
178
+ }
179
+ function Ge() {
180
+ i.loadRows ? $t() : x("queryChange", we());
181
+ }
182
+ function Pt(e, a) {
183
+ J({ filters: { ...Ee.value, [e]: a }, page: 1 });
184
+ }
185
+ L(
186
+ [() => i.page, () => i.pageSize],
187
+ ([e, a], [t, l]) => {
188
+ const o = P.value;
189
+ P.value = le({
190
+ ...o,
191
+ page: e !== t ? e : a !== l ? 1 : o.page,
192
+ pageSize: a !== l ? a : o.pageSize
193
+ });
172
194
  }
195
+ ), L([Je, () => P.value.page], ([e]) => {
196
+ i.query === void 0 && P.value.page > e && (P.value = { ...P.value, page: e });
197
+ }), L(
198
+ () => JSON.stringify(ee.value),
199
+ () => {
200
+ W.value = null, i.scrollToTopOnQuery && ge.value && (ge.value.scrollTop = 0), x("queryChange", we());
201
+ },
202
+ { flush: "post" }
203
+ ), za(() => {
204
+ i.immediateQuery && x("queryChange", we());
173
205
  });
174
- const $e = b(() => o.columns.filter((t) => t.key !== o.rowKey)), st = (t) => t == null || t === "" ? "(空)" : String(t), it = (t) => JSON.stringify(t ?? null), ut = b(() => {
175
- if (!J.value) return we.value.map((e, a) => ({ kind: "row", row: e, index: a, key: String(_(e, a)) }));
206
+ let Ye = !1;
207
+ async function Qt(e) {
208
+ if (Ye) return;
209
+ const a = ue.value;
210
+ J({ page: Math.min(e, Je.value) }), await pe(), ue.value !== a && x("pageChange", ue.value);
211
+ }
212
+ async function Wt(e) {
213
+ const a = Q.value;
214
+ Ye = !0, J({ pageSize: e, page: 1 }), await pe(), Ye = !1, Q.value !== a && x("pageSizeChange", Q.value);
215
+ }
216
+ async function yt(e, a) {
217
+ if (e.sortable === !1) return;
218
+ const t = JSON.stringify(S.value), l = i.multiSort ? S.value.filter((o) => o.key !== e.key) : [];
219
+ a && l.push({ key: e.key, direction: a }), J({ sort: l, page: 1 }), await pe(), JSON.stringify(S.value) !== t && x("sortChange", S.value[0] ?? null);
220
+ }
221
+ function Jt(e) {
222
+ var t;
223
+ const a = (t = S.value.find(
224
+ (l) => l.key === e.key
225
+ )) == null ? void 0 : t.direction;
226
+ yt(
227
+ e,
228
+ a === "asc" ? "desc" : a === "desc" ? null : "asc"
229
+ );
230
+ }
231
+ function pt(e, a) {
232
+ var l;
233
+ const t = (l = S.value.find(
234
+ (o) => o.key === e.key
235
+ )) == null ? void 0 : l.direction;
236
+ yt(e, t === a ? null : a);
237
+ }
238
+ const Xt = c(
239
+ () => i.columns.filter((e) => e.key !== i.rowKey)
240
+ );
241
+ function Gt(e, a) {
242
+ try {
243
+ return "group:" + JSON.stringify(e ?? null);
244
+ } catch {
245
+ return "group:" + typeof e + ":" + a;
246
+ }
247
+ }
248
+ const Yt = c(() => {
249
+ const e = Xe.value.map((o, n) => ({
250
+ kind: "row",
251
+ key: "row:" + st(o.id),
252
+ item: o,
253
+ pageIndex: n
254
+ })), a = F.value.get(he.value);
255
+ if (!a) return e;
176
256
  const t = /* @__PURE__ */ new Map();
177
- we.value.forEach((e, a) => {
178
- const n = it(e[J.value]);
179
- t.has(n) || t.set(n, { label: st(e[J.value]), rows: [] }), t.get(n).rows.push({ row: e, index: a });
180
- });
257
+ for (const o of e) {
258
+ const n = me(o.item.row, a), r = n == null || n === "" ? "(空)" : String(n), f = Gt(n, r), k = t.get(f);
259
+ k ? k.rows.push(o) : t.set(f, { label: r, rows: [o] });
260
+ }
181
261
  const l = [];
182
- for (const [e, a] of t)
183
- if (l.push({ kind: "group", key: e, label: a.label, count: a.rows.length }), !P.value.includes(e)) for (const n of a.rows) l.push({ kind: "row", key: e + ":" + String(_(n.row, n.index)), row: n.row, index: n.index });
262
+ for (const [o, n] of t)
263
+ l.push({
264
+ kind: "group",
265
+ key: o,
266
+ label: n.label,
267
+ count: n.rows.length
268
+ }), se.value.has(o) || l.push(...n.rows);
184
269
  return l;
185
270
  });
186
- function dt(t) {
187
- Q.value = Q.value.includes(t) ? Q.value.filter((l) => l !== t) : [...Q.value, t];
188
- }
189
- function ct(t, l) {
190
- !o.editable || !l.editable || (Y.value = { id: _(t, 0), key: l.key }, he.value = ie(t, l.key));
191
- }
192
- function He(t, l) {
193
- Y.value && (M("cellEdit", { row: t, rowKey: Y.value.id, column: l.key, value: he.value }), Y.value = null);
194
- }
195
- function ft() {
196
- !ve.value || !h.value.length || (M("batchEdit", { keys: [...h.value], column: ve.value, value: ke.value }), ke.value = "");
197
- }
198
- function yt(t) {
199
- P.value = P.value.includes(t) ? P.value.filter((l) => l !== t) : [...P.value, t];
200
- }
201
- D(J, () => P.value = []);
202
- const vt = (t) => {
203
- if (!t.summary) return "";
204
- const l = q.value.map((n) => n[t.key]).filter((n) => n != null && n !== "");
205
- if (t.summary === "count") return String(l.length);
206
- const e = l.map(Number).filter(Number.isFinite);
207
- if (!e.length) return "—";
208
- const a = t.summary === "sum" ? e.reduce((n, s) => n + s, 0) : t.summary === "avg" ? e.reduce((n, s) => n + s, 0) / e.length : t.summary === "min" ? Math.min(...e) : Math.max(...e);
209
- return new Intl.NumberFormat("zh-CN", { maximumFractionDigits: 2 }).format(a);
210
- }, Ce = b(() => we.value.map((t, l) => _(t, l))), Ne = b(() => Ce.value.length > 0 && Ce.value.every((t) => h.value.includes(t))), mt = b(() => Ce.value.some((t) => h.value.includes(t)));
211
- function pt(t, l) {
212
- h.value = l ? [.../* @__PURE__ */ new Set([...h.value, t])] : h.value.filter((e) => e !== t), M("selectionChange", h.value);
213
- }
214
- function gt(t) {
215
- const l = new Set(Ce.value);
216
- h.value = t ? [.../* @__PURE__ */ new Set([...h.value, ...l])] : h.value.filter((e) => !l.has(e)), M("selectionChange", h.value);
217
- }
218
- function Oe(t, l) {
219
- if (t.sortable === !1) return;
220
- const e = l ? { key: t.key, direction: l } : null;
221
- o.multiSort ? (N.value = N.value.filter((a) => a.key !== t.key), e && (N.value = [...N.value, e]), ae.value = N.value[0] ?? null) : (ae.value = e, N.value = e ? [e] : []), M("sortChange", ae.value);
222
- }
223
- function ht(t) {
224
- var e;
225
- const l = (e = x.value.find((a) => a.key === t.key)) == null ? void 0 : e.direction;
226
- Oe(t, l === "asc" ? "desc" : l === "desc" ? null : "asc");
271
+ function mt(e, a) {
272
+ const t = new Set(e);
273
+ return t.has(a) ? t.delete(a) : t.add(a), t;
274
+ }
275
+ function Zt(e) {
276
+ ie.value = mt(ie.value, e);
277
+ }
278
+ function _t(e) {
279
+ se.value = mt(se.value, e);
280
+ }
281
+ L(he, () => {
282
+ se.value = /* @__PURE__ */ new Set();
283
+ });
284
+ function ea(e, a) {
285
+ !i.editable || !a.editable || (W.value = { id: e.id, key: a.key }, Ke.value = re(e.row, a));
286
+ }
287
+ function gt(e, a) {
288
+ var t, l;
289
+ ((t = W.value) == null ? void 0 : t.id) !== e.id || ((l = W.value) == null ? void 0 : l.key) !== a.key || (W.value = null, x("cellEdit", {
290
+ row: e.row,
291
+ rowKey: e.id,
292
+ column: a.key,
293
+ value: Ke.value
294
+ }));
295
+ }
296
+ function ta() {
297
+ !ke.value || !b.value.length || (x("batchEdit", {
298
+ keys: [...b.value],
299
+ column: ke.value,
300
+ value: Ae.value
301
+ }), Ae.value = "");
302
+ }
303
+ const aa = new Intl.NumberFormat("zh-CN", {
304
+ maximumFractionDigits: 2
305
+ });
306
+ function la(e) {
307
+ const a = It.value;
308
+ if (i.summaryMethod) return i.summaryMethod(e, a);
309
+ if (!e.summary) return "";
310
+ const t = a.map((r) => me(r, e)).filter((r) => r != null && r !== "");
311
+ if (e.summary === "count") return String(t.length);
312
+ const l = t.map(Number).filter(Number.isFinite);
313
+ if (!l.length) return "—";
314
+ const o = l.reduce((r, f) => r + f, 0), n = e.summary === "sum" ? o : e.summary === "avg" ? o / l.length : l.reduce(
315
+ (r, f) => e.summary === "min" ? Math.min(r, f) : Math.max(r, f)
316
+ );
317
+ return aa.format(n);
318
+ }
319
+ function Ze(e) {
320
+ const a = [...new Set(e.filter(Na))];
321
+ return i.selectionType === "radio" ? a.slice(0, 1) : a;
322
+ }
323
+ const ht = Me(
324
+ Ze(i.defaultSelectedRowKeys ?? [])
325
+ ), b = c(
326
+ () => Ze(i.selectedRowKeys ?? ht.value)
327
+ ), Le = c(() => new Set(b.value)), _e = c(
328
+ () => new Map(vt.value.map((e) => [e.id, e]))
329
+ ), Oe = (e) => {
330
+ var a;
331
+ return ((a = i.rowSelectable) == null ? void 0 : a.call(i, e.row, e.index)) !== !1;
332
+ }, Se = c(
333
+ () => Xe.value.filter(Oe).map((e) => e.id)
334
+ ), kt = c(
335
+ () => Se.value.length > 0 && Se.value.every((e) => Le.value.has(e))
336
+ ), oa = c(
337
+ () => Se.value.some((e) => Le.value.has(e))
338
+ ), bt = () => [...b.value];
339
+ function Ce(e) {
340
+ const a = Ze(e);
341
+ a.length === b.value.length && a.every((t, l) => t === b.value[l]) || (i.selectedRowKeys === void 0 && (ht.value = a), x("update:selectedRowKeys", [...a]));
342
+ }
343
+ L(
344
+ () => JSON.stringify(b.value),
345
+ () => x("selectionChange", bt())
346
+ ), L([_e, () => i.reserveSelection, ne], () => {
347
+ i.selectedRowKeys === void 0 && !(i.reserveSelection ?? ne.value) && Ce(b.value.filter((e) => _e.value.has(e)));
348
+ });
349
+ function et(e, a = !Le.value.has(e)) {
350
+ const t = _e.value.get(e);
351
+ !i.selectable || !t || !Oe(t) || Ce(
352
+ a ? i.selectionType === "radio" ? [e] : [...b.value, e] : b.value.filter((l) => l !== e)
353
+ );
354
+ }
355
+ function na() {
356
+ Ce([]);
357
+ }
358
+ function ia(e) {
359
+ if (i.selectionType === "radio") return;
360
+ const a = new Set(Se.value);
361
+ Ce(
362
+ e ? [...b.value, ...a] : b.value.filter((t) => !a.has(t))
363
+ );
364
+ }
365
+ function sa() {
366
+ if (!i.storageKey || typeof localStorage > "u") return {};
367
+ try {
368
+ const e = JSON.parse(
369
+ localStorage.getItem("hys-ui-grid:" + i.storageKey) || "{}"
370
+ );
371
+ return e && typeof e == "object" && !Array.isArray(e) ? e : {};
372
+ } catch {
373
+ return {};
374
+ }
227
375
  }
228
- function Pe(t, l) {
376
+ const X = sa(), E = w(
377
+ Array.isArray(X.order) ? X.order.filter((e) => typeof e == "string") : []
378
+ ), C = w(
379
+ Array.isArray(X.hidden) ? X.hidden.filter((e) => typeof e == "string") : []
380
+ ), K = w(
381
+ X.widths && typeof X.widths == "object" && !Array.isArray(X.widths) ? Object.fromEntries(
382
+ Object.entries(X.widths).filter(
383
+ ([, e]) => typeof e == "number" && Number.isFinite(e)
384
+ )
385
+ ) : {}
386
+ ), Ne = (e) => Te(e.minWidth, 80), tt = (e) => Math.max(Ne(e), Te(e.maxWidth, 800)), qe = (e, a) => Math.max(Ne(e), Math.min(tt(e), a)), Be = Me(), B = (e) => {
229
387
  var a;
230
- const e = (a = x.value.find((n) => n.key === t.key)) == null ? void 0 : a.direction;
231
- Oe(t, e === l ? null : l);
388
+ return ((a = Be.value) == null ? void 0 : a.key) === e.key ? Be.value.width : Object.hasOwn(K.value, e.key) ? K.value[e.key] : Te(e.width, 160);
389
+ };
390
+ L(
391
+ () => i.columns.map((e) => [
392
+ e.key,
393
+ e.hideable,
394
+ e.minWidth,
395
+ e.maxWidth
396
+ ]),
397
+ (e, a) => {
398
+ a && Y();
399
+ const t = F.value, l = [...t.keys()];
400
+ E.value = [
401
+ .../* @__PURE__ */ new Set([...E.value.filter((o) => t.has(o)), ...l])
402
+ ], C.value = [
403
+ ...new Set(
404
+ C.value.filter(
405
+ (o) => {
406
+ var n;
407
+ return t.has(o) && ((n = t.get(o)) == null ? void 0 : n.hideable) !== !1;
408
+ }
409
+ )
410
+ )
411
+ ], l.every((o) => C.value.includes(o)) && (C.value = []), K.value = Object.fromEntries(
412
+ Object.entries(K.value).flatMap(([o, n]) => {
413
+ const r = t.get(o);
414
+ return r ? [[o, qe(r, n)]] : [];
415
+ })
416
+ );
417
+ },
418
+ { immediate: !0 }
419
+ );
420
+ const A = c(
421
+ () => E.value.flatMap((e) => {
422
+ const a = F.value.get(e);
423
+ return a && !C.value.includes(e) ? [a] : [];
424
+ })
425
+ ), G = c(() => [
426
+ ...A.value.filter((e) => e.pinned === "left"),
427
+ ...A.value.filter((e) => !e.pinned),
428
+ ...A.value.filter((e) => e.pinned === "right")
429
+ ]), ra = c(
430
+ () => E.value.flatMap((e) => {
431
+ const a = F.value.get(e);
432
+ return a ? [{ id: e, label: a.label }] : [];
433
+ })
434
+ );
435
+ L([E, C, K], () => {
436
+ if (i.storageKey && typeof localStorage < "u")
437
+ try {
438
+ localStorage.setItem(
439
+ "hys-ui-grid:" + i.storageKey,
440
+ JSON.stringify({
441
+ order: E.value,
442
+ hidden: C.value,
443
+ widths: K.value
444
+ })
445
+ );
446
+ } catch {
447
+ }
448
+ x(
449
+ "columnsChange",
450
+ A.value.map((e) => e.key)
451
+ );
452
+ });
453
+ function ua(e) {
454
+ e.hideable !== !1 && (C.value.includes(e.key) ? C.value = C.value.filter((a) => a !== e.key) : A.value.length > 1 && (C.value = [...C.value, e.key]));
455
+ }
456
+ const da = c(
457
+ () => G.value.reduce(
458
+ (e, a) => e + B(a),
459
+ i.selectable ? 44 : 0
460
+ )
461
+ ), ca = c(() => {
462
+ const e = /* @__PURE__ */ new Map();
463
+ let a = i.selectable ? 44 : 0;
464
+ for (const l of G.value)
465
+ l.pinned === "left" && (e.set(l.key, { left: a + "px" }), a += B(l));
466
+ let t = 0;
467
+ for (const l of [...G.value].reverse())
468
+ l.pinned === "right" && (e.set(l.key, { right: t + "px" }), t += B(l));
469
+ return e;
470
+ }), He = (e, a = !1) => e.pinned ? {
471
+ position: "sticky",
472
+ ...ca.value.get(e.key),
473
+ zIndex: a ? 5 : 2
474
+ } : {};
475
+ async function wt(e = !0) {
476
+ var o, n;
477
+ if (j.value = !1, !e) return;
478
+ await pe();
479
+ const t = [
480
+ ...((o = te.value) == null ? void 0 : o.querySelectorAll(
481
+ "thead th[data-column-key]"
482
+ )) ?? []
483
+ ].find(
484
+ (r) => r.dataset.columnKey === ae.value
485
+ ), l = (t == null ? void 0 : t.querySelector(".hys-ui-pf-grid-filter")) ?? ((n = te.value) == null ? void 0 : n.querySelector(".hys-ui-pf-grid-filter"));
486
+ l == null || l.focus({ preventScroll: !0 });
487
+ }
488
+ async function fa(e) {
489
+ var t, l, o;
490
+ if (j.value && ae.value === e.key) {
491
+ await wt(!1);
492
+ return;
493
+ }
494
+ ae.value = e.key, j.value = !0, await pe(), (o = (l = [
495
+ ...((t = te.value) == null ? void 0 : t.querySelectorAll("[data-filter-key]")) ?? []
496
+ ].find((n) => n.dataset.filterKey === e.key)) == null ? void 0 : l.querySelector("input")) == null || o.focus({ preventScroll: !0 });
232
497
  }
233
- function kt(t) {
234
- C.value = Math.max(1, Math.min(t, Te.value)), M("pageChange", C.value);
498
+ let p, xe = 0, St = 0;
499
+ function Ct(e) {
500
+ !p || e.pointerId !== p.pointer || (St = qe(
501
+ p.column,
502
+ p.width + e.clientX - p.start
503
+ ), !xe && (xe = requestAnimationFrame(() => {
504
+ xe = 0, p && (Be.value = { key: p.column.key, width: St });
505
+ })));
235
506
  }
236
- function bt(t) {
237
- ge.value = t, C.value = 1, M("pageSizeChange", t);
507
+ function Y() {
508
+ p && (cancelAnimationFrame(xe), xe = 0, Be.value = void 0, document.body.style.cursor === "col-resize" && (document.body.style.cursor = p.cursor), p = void 0, window.removeEventListener("pointermove", Ct), window.removeEventListener("pointerup", Rt), window.removeEventListener("pointercancel", xt), window.removeEventListener("blur", Y), window.removeEventListener("keydown", zt, !0));
238
509
  }
239
- D([C, ge, x, ne, O], () => M("queryChange", { page: C.value, pageSize: se.value, sort: [...x.value], search: ne.value, filters: { ...O.value } }), { deep: !0 });
240
- function wt(t) {
241
- t.hideable !== !1 && (w.value.includes(t.key) ? w.value = w.value.filter((l) => l !== t.key) : E.value.length > 1 && (w.value = [...w.value, t.key]));
510
+ function xt(e) {
511
+ e.pointerId === (p == null ? void 0 : p.pointer) && Y();
242
512
  }
243
- let F = null;
244
- function je(t) {
245
- F && (g.value = { ...g.value, [F.key]: Math.max(F.min, Math.min(F.max, F.width + t.clientX - F.start)) });
513
+ function zt(e) {
514
+ e.key === "Escape" && p && (e.preventDefault(), e.stopPropagation(), Y());
246
515
  }
247
- function xe() {
248
- F = null, window.removeEventListener("pointermove", je), window.removeEventListener("pointerup", xe), document.body.style.cursor = "";
516
+ function Rt(e) {
517
+ if (!p || e.pointerId !== p.pointer) return;
518
+ const { column: a, start: t, width: l } = p, o = e.clientX - t, n = o === 0 ? l : qe(a, l + o);
519
+ Y(), n !== l && (K.value = { ...K.value, [a.key]: n });
249
520
  }
250
- function Ct(t, l) {
251
- l.resizable !== !1 && (t.preventDefault(), t.stopPropagation(), F = { key: l.key, start: t.clientX, width: g.value[l.key] || l.width || 160, min: l.minWidth || 80, max: l.maxWidth || 800 }, document.body.style.cursor = "col-resize", window.addEventListener("pointermove", je), window.addEventListener("pointerup", xe));
521
+ function va(e, a) {
522
+ a.resizable === !1 || e.button !== 0 || p || (e.preventDefault(), e.stopPropagation(), p = {
523
+ column: a,
524
+ pointer: e.pointerId,
525
+ start: e.clientX,
526
+ width: B(a),
527
+ cursor: document.body.style.cursor
528
+ }, document.body.style.cursor = "col-resize", window.addEventListener("pointermove", Ct), window.addEventListener("pointerup", Rt), window.addEventListener("pointercancel", xt), window.addEventListener("blur", Y), window.addEventListener("keydown", zt, !0));
252
529
  }
253
- const { effectiveMotion: Se } = Ht(), ue = v(null), I = v(null);
254
- let T = 0, de = null, Ke = 0;
255
- const me = /* @__PURE__ */ new Set();
256
- function ce() {
257
- Ke++;
258
- for (const t of me) t.cancel();
259
- me.clear();
530
+ function ya(e, a) {
531
+ const t = e.shiftKey ? 40 : 10, l = B(a), o = e.key === "ArrowLeft" ? l - t : e.key === "ArrowRight" ? l + t : e.key === "Home" ? Ne(a) : e.key === "End" ? tt(a) : void 0;
532
+ if (o === void 0) return;
533
+ e.preventDefault();
534
+ const n = qe(a, o);
535
+ n !== l && (K.value = { ...K.value, [a.key]: n });
260
536
  }
261
- D(Se, (t) => {
262
- t === "off" && ce();
537
+ const { effectiveMotion: Ue } = Fa(), de = w(null), Z = w(null);
538
+ let H = 0, ce = null, at = 0;
539
+ const ze = /* @__PURE__ */ new Set(), Mt = 160;
540
+ function Re() {
541
+ at++;
542
+ for (const e of ze) e.cancel();
543
+ ze.clear();
544
+ }
545
+ L(Ue, (e) => {
546
+ e === "off" && Re();
263
547
  });
264
- function ee() {
265
- cancelAnimationFrame(T), T = 0, de = null, ue.value = null, I.value = null;
548
+ function fe() {
549
+ cancelAnimationFrame(H), H = 0, ce = null, de.value = null, Z.value = null;
266
550
  }
267
- function xt(t, l) {
268
- if (F || l.reorderable === !1 || !t.dataTransfer) {
269
- t.preventDefault();
551
+ function pa(e, a) {
552
+ if (p || a.reorderable === !1 || !e.dataTransfer) {
553
+ e.preventDefault();
270
554
  return;
271
555
  }
272
- ce(), ue.value = l.key, t.dataTransfer.effectAllowed = "move", t.dataTransfer.setData("text/plain", l.key);
556
+ Re(), de.value = a.key, e.dataTransfer.effectAllowed = "move", e.dataTransfer.setData("text/plain", a.key);
273
557
  }
274
- function Ae(t) {
275
- const l = o.columns.find((e) => e.key === ue.value);
276
- return !!l && l.key !== t.key && l.reorderable !== !1 && t.reorderable !== !1 && l.pinned === t.pinned;
558
+ function lt(e) {
559
+ const a = i.columns.find((t) => t.key === de.value);
560
+ return !!a && a.key !== e.key && a.reorderable !== !1 && e.reorderable !== !1 && a.pinned === e.pinned;
277
561
  }
278
- function qe(t, l, e) {
279
- const a = e.getBoundingClientRect();
280
- return { key: t.key, position: l < a.left + a.width / 2 ? "before" : "after" };
562
+ function Tt(e, a, t) {
563
+ const l = t.getBoundingClientRect();
564
+ return {
565
+ key: e.key,
566
+ position: a < l.left + l.width / 2 ? "before" : "after"
567
+ };
281
568
  }
282
- function St(t, l) {
283
- if (!Ae(l)) {
284
- cancelAnimationFrame(T), T = 0, de = null, I.value = null;
569
+ function ma(e, a) {
570
+ if (!lt(a)) {
571
+ cancelAnimationFrame(H), H = 0, ce = null, Z.value = null;
285
572
  return;
286
573
  }
287
- t.preventDefault(), t.dataTransfer && (t.dataTransfer.dropEffect = "move"), de = { element: t.currentTarget, column: l, x: t.clientX }, !T && (T = requestAnimationFrame(() => {
288
- var n;
289
- T = 0;
290
- const e = de;
291
- if (de = null, !e || !Ae(e.column)) return;
292
- const a = qe(e.column, e.x, e.element);
293
- (((n = I.value) == null ? void 0 : n.key) !== a.key || I.value.position !== a.position) && (I.value = a);
574
+ e.preventDefault(), e.dataTransfer && (e.dataTransfer.dropEffect = "move"), ce = {
575
+ element: e.currentTarget,
576
+ column: a,
577
+ x: e.clientX
578
+ }, !H && (H = requestAnimationFrame(() => {
579
+ var o;
580
+ H = 0;
581
+ const t = ce;
582
+ if (ce = null, !t || !lt(t.column)) return;
583
+ const l = Tt(t.column, t.x, t.element);
584
+ (((o = Z.value) == null ? void 0 : o.key) !== l.key || Z.value.position !== l.position) && (Z.value = l);
294
585
  }));
295
586
  }
296
- function zt(t) {
297
- t.relatedTarget instanceof Element && t.relatedTarget.closest("th[data-column-key]") && t.currentTarget.contains(t.relatedTarget) || (cancelAnimationFrame(T), T = 0, de = null, I.value = null);
587
+ function ga(e) {
588
+ e.relatedTarget instanceof Element && e.relatedTarget.closest("th[data-column-key]") && e.currentTarget.contains(e.relatedTarget) || (cancelAnimationFrame(H), H = 0, ce = null, Z.value = null);
298
589
  }
299
- function Ie() {
300
- var t;
301
- return new Map(Array.from(((t = oe.value) == null ? void 0 : t.querySelectorAll("th[data-column-key]")) || []).map((l) => [
302
- l.dataset.columnKey,
303
- l.getBoundingClientRect()
304
- ]));
305
- }
306
- function Mt(t) {
307
- var c;
308
- if (Se.value === "off") return;
309
- const l = (c = oe.value) == null ? void 0 : c.querySelector(".hys-ui-pf-grid-scroll");
310
- if (!l) return;
311
- const e = l.getBoundingClientRect(), a = Math.max(0, e.top), n = Math.min(window.innerHeight, e.bottom), s = Math.max(0, e.left), i = Math.min(window.innerWidth, e.right);
312
- if (a >= n || s >= i) return;
313
- const y = /* @__PURE__ */ new Map();
314
- for (const [W, U] of Ie()) {
315
- const S = t.get(W);
316
- S && U.right > s && U.left < i && Math.abs(S.left - U.left) > 0.5 && y.set(W, S.left - U.left);
590
+ function Et() {
591
+ var e;
592
+ return new Map(
593
+ Array.from(
594
+ ((e = te.value) == null ? void 0 : e.querySelectorAll("th[data-column-key]")) || []
595
+ ).map((a) => [
596
+ a.dataset.columnKey,
597
+ a.getBoundingClientRect()
598
+ ])
599
+ );
600
+ }
601
+ function ha(e) {
602
+ var d;
603
+ if (Ue.value === "off") return;
604
+ const a = (d = te.value) == null ? void 0 : d.querySelector(
605
+ ".hys-ui-pf-grid-scroll"
606
+ );
607
+ if (!a) return;
608
+ const t = a.getBoundingClientRect(), l = Math.max(0, t.top), o = Math.min(window.innerHeight, t.bottom), n = Math.max(0, t.left), r = Math.min(window.innerWidth, t.right);
609
+ if (l >= o || n >= r) return;
610
+ const f = /* @__PURE__ */ new Map();
611
+ for (const [M, U] of Et()) {
612
+ const R = e.get(M);
613
+ R && U.right > n && U.left < r && Math.abs(R.left - U.left) > 0.5 && f.set(M, R.left - U.left);
317
614
  }
318
- const f = [];
319
- for (const W of Array.from(l.querySelectorAll("thead tr,tbody tr,tfoot tr"))) {
320
- const U = W.getBoundingClientRect();
321
- if (U.top >= n) break;
322
- if (!(U.bottom <= a)) {
323
- for (const S of Array.from(W.children))
324
- if (S instanceof HTMLElement && y.has(S.dataset.columnKey || "") && f.push(S), f.length >= Qe) break;
325
- if (f.length >= Qe) break;
615
+ const k = [];
616
+ for (const M of Array.from(
617
+ a.querySelectorAll("thead tr,tbody tr,tfoot tr")
618
+ )) {
619
+ const U = M.getBoundingClientRect();
620
+ if (U.top >= o) break;
621
+ if (!(U.bottom <= l)) {
622
+ for (const R of Array.from(M.children))
623
+ if (R instanceof HTMLElement && f.has(R.dataset.columnKey || "") && k.push(R), k.length >= Mt) break;
624
+ if (k.length >= Mt) break;
326
625
  }
327
626
  }
328
- const te = Se.value === "full" ? 280 : 180;
329
- for (const W of f) {
330
- const U = y.get(W.dataset.columnKey), S = W.animate([{ transform: "translateX(" + U + "px)" }, { transform: "translateX(0)" }], { duration: te, easing: "cubic-bezier(.2,.8,.2,1)" });
331
- me.add(S), S.onfinish = () => me.delete(S), S.oncancel = () => me.delete(S);
627
+ const _ = Ue.value === "full" ? 280 : 180;
628
+ for (const M of k) {
629
+ const U = f.get(M.dataset.columnKey), R = M.animate(
630
+ [
631
+ { transform: "translateX(" + U + "px)" },
632
+ { transform: "translateX(0)" }
633
+ ],
634
+ { duration: _, easing: "cubic-bezier(.2,.8,.2,1)" }
635
+ );
636
+ ze.add(R), R.onfinish = () => ze.delete(R), R.oncancel = () => ze.delete(R);
332
637
  }
333
638
  }
334
- async function Vt(t, l) {
335
- if (!Ae(l)) {
336
- ee();
639
+ async function ka(e, a) {
640
+ if (!lt(a)) {
641
+ fe();
337
642
  return;
338
643
  }
339
- t.preventDefault();
340
- const e = qe(l, t.clientX, t.currentTarget), a = V.value.filter((y) => y !== ue.value), n = a.indexOf(e.key);
341
- if (n < 0) {
342
- ee();
644
+ e.preventDefault();
645
+ const t = Tt(
646
+ a,
647
+ e.clientX,
648
+ e.currentTarget
649
+ ), l = E.value.filter((f) => f !== de.value), o = l.indexOf(t.key);
650
+ if (o < 0) {
651
+ fe();
343
652
  return;
344
653
  }
345
- if (a.splice(n + (e.position === "after" ? 1 : 0), 0, ue.value), ee(), a.every((y, f) => y === V.value[f])) return;
346
- ce();
347
- const s = Ke, i = Se.value === "off" ? /* @__PURE__ */ new Map() : Ie();
348
- V.value = a, await Me(), s === Ke && Mt(i);
349
- }
350
- function We() {
351
- ee(), ce(), V.value = o.columns.map((t) => t.key), w.value = [], g.value = {};
352
- }
353
- function Dt() {
354
- const t = E.value, l = (s) => '"' + s.replace(/"/g, '""') + '"', e = "\uFEFF" + [t.map((s) => l(s.label)).join(","), ...q.value.map((s) => t.map((i) => l(ie(s, i.key))).join(","))].join(`\r
355
- `), a = URL.createObjectURL(new Blob([e], { type: "text/csv;charset=utf-8" })), n = document.createElement("a");
356
- n.href = a, n.download = "projectflow-table.csv", n.click(), setTimeout(() => URL.revokeObjectURL(a), 1e3);
357
- }
358
- function ze(t) {
359
- De.value && !De.value.contains(t.target) && (Z.value = !1);
360
- }
361
- return D(Z, async (t) => {
362
- t ? (await Me(), document.addEventListener("pointerdown", ze)) : document.removeEventListener("pointerdown", ze);
363
- }), Rt(() => {
364
- ee(), ce(), xe(), Z.value = !1, document.removeEventListener("pointerdown", ze);
365
- }), Et(() => {
366
- ee(), ce(), xe(), document.removeEventListener("pointerdown", ze);
367
- }), (t, l) => (r(), d("section", Lt(K(_e), {
368
- class: ["hys-ui-pf-grid", "hys-ui-pf-grid--" + u.density],
654
+ if (l.splice(
655
+ o + (t.position === "after" ? 1 : 0),
656
+ 0,
657
+ de.value
658
+ ), fe(), l.every((f, k) => f === E.value[k])) return;
659
+ Re();
660
+ const n = at, r = Ue.value === "off" ? /* @__PURE__ */ new Map() : Et();
661
+ E.value = l, await pe(), n === at && ha(r);
662
+ }
663
+ function Kt() {
664
+ Y(), fe(), Re(), E.value = [...F.value.keys()], C.value = [], K.value = {};
665
+ }
666
+ function ba() {
667
+ const e = A.value, a = (n) => '"' + n.replace(/"/g, '""') + '"', t = [
668
+ e.map((n) => a(n.label)).join(","),
669
+ ...be.value.map(
670
+ ({ row: n }) => e.map((r) => a(re(n, r))).join(",")
671
+ )
672
+ ], l = URL.createObjectURL(
673
+ new Blob(["\uFEFF" + t.join(`\r
674
+ `)], {
675
+ type: "text/csv;charset=utf-8"
676
+ })
677
+ ), o = document.createElement("a");
678
+ o.href = l, o.download = "projectflow-table.csv", o.click(), setTimeout(() => URL.revokeObjectURL(l), 1e3);
679
+ }
680
+ const wa = c(
681
+ () => typeof i.maxHeight == "number" ? i.maxHeight > 0 && Number.isFinite(i.maxHeight) ? i.maxHeight + "px" : void 0 : i.maxHeight
682
+ );
683
+ function Sa(e) {
684
+ var a;
685
+ (a = ge.value) == null || a.scrollTo(e);
686
+ }
687
+ function Ca(e) {
688
+ var t;
689
+ const a = [
690
+ ...((t = ge.value) == null ? void 0 : t.querySelectorAll("[data-grid-row]")) ?? []
691
+ ].find((l) => l.dataset.gridRow === st(e));
692
+ return a == null || a.scrollIntoView({ block: "nearest", inline: "nearest" }), !!a;
693
+ }
694
+ Ot({
695
+ resetColumns: Kt,
696
+ getQuery: we,
697
+ setQuery: J,
698
+ resetQuery: jt,
699
+ reload: Ge,
700
+ getSelection: bt,
701
+ clearSelection: na,
702
+ toggleRowSelection: et,
703
+ scrollTo: Sa,
704
+ scrollToRow: Ca
705
+ });
706
+ function ot(e) {
707
+ je.value && !je.value.contains(e.target) && (I.value = !1);
708
+ }
709
+ L(I, (e) => {
710
+ e ? document.addEventListener("pointerdown", ot) : document.removeEventListener("pointerdown", ot);
711
+ });
712
+ function At() {
713
+ fe(), Re(), Y(), I.value = !1, document.removeEventListener("pointerdown", ot);
714
+ }
715
+ return Ra(At), Ma(At), (e, a) => (s(), u("section", Ta(m(qt), {
716
+ class: ["hys-ui-pf-grid", "hys-ui-pf-grid--" + v.density],
369
717
  "aria-label": "数据表格",
370
718
  ref_key: "tableRef",
371
- ref: oe
719
+ ref: te,
720
+ "aria-busy": Fe.value || void 0
372
721
  }), [
373
- m("div", Pt, [
374
- m("label", jt, [
375
- l[12] || (l[12] = m("span", null, "搜索", -1)),
376
- p(Ve, {
722
+ y("div", Ia, [
723
+ y("label", ja, [
724
+ a[14] || (a[14] = y("span", null, "搜索", -1)),
725
+ g(Ie, {
377
726
  size: "sm",
378
- modelValue: ne.value,
379
- "onUpdate:modelValue": l[0] || (l[0] = (e) => ne.value = e),
727
+ modelValue: Pe.value,
728
+ "onUpdate:modelValue": a[0] || (a[0] = (t) => Pe.value = t),
380
729
  type: "search",
381
730
  placeholder: "搜索全部列…",
382
731
  "aria-label": "搜索表格",
383
732
  clearable: ""
384
733
  }, null, 8, ["modelValue"])
385
734
  ]),
386
- u.groupable ? (r(), d("label", qt, [
387
- l[13] || (l[13] = X("分组 ", -1)),
388
- p(Je, {
735
+ v.groupable ? (s(), u("label", Pa, [
736
+ a[15] || (a[15] = V("分组 ", -1)),
737
+ g(Lt, {
389
738
  size: "sm",
390
- modelValue: J.value,
391
- "onUpdate:modelValue": l[1] || (l[1] = (e) => J.value = e),
739
+ modelValue: he.value,
740
+ "onUpdate:modelValue": a[1] || (a[1] = (t) => he.value = t),
392
741
  "aria-label": "按列分组",
393
- options: [{ label: "不分组", value: "" }, ...$e.value.map((e) => ({ label: e.label, value: e.key }))]
742
+ options: [
743
+ { label: "不分组", value: "" },
744
+ ...Xt.value.map((t) => ({ label: t.label, value: t.key }))
745
+ ]
394
746
  }, null, 8, ["modelValue", "options"])
395
- ])) : k("", !0),
396
- u.editable && h.value.length ? (r(), d("div", It, [
397
- p(Je, {
747
+ ])) : h("", !0),
748
+ v.editable && b.value.length ? (s(), u("div", Qa, [
749
+ g(Lt, {
398
750
  size: "sm",
399
- modelValue: ve.value,
400
- "onUpdate:modelValue": l[2] || (l[2] = (e) => ve.value = e),
751
+ modelValue: ke.value,
752
+ "onUpdate:modelValue": a[2] || (a[2] = (t) => ke.value = t),
401
753
  "aria-label": "批量编辑字段",
402
- options: [{ label: "选择编辑列", value: "" }, ...u.columns.filter((e) => e.editable).map((e) => ({ label: e.label, value: e.key }))]
754
+ options: [
755
+ { label: "选择编辑列", value: "" },
756
+ ...v.columns.filter((t) => t.editable).map((t) => ({ label: t.label, value: t.key }))
757
+ ]
403
758
  }, null, 8, ["modelValue", "options"]),
404
- p(Ve, {
759
+ g(Ie, {
405
760
  size: "sm",
406
- modelValue: ke.value,
407
- "onUpdate:modelValue": l[3] || (l[3] = (e) => ke.value = e),
761
+ modelValue: Ae.value,
762
+ "onUpdate:modelValue": a[3] || (a[3] = (t) => Ae.value = t),
408
763
  "aria-label": "批量编辑值",
409
764
  placeholder: "新值"
410
765
  }, null, 8, ["modelValue"]),
411
- p(R, {
766
+ g(T, {
412
767
  variant: "ghost",
413
768
  size: "sm",
414
769
  type: "button",
415
- disabled: !ve.value,
416
- onClick: ft
770
+ disabled: !ke.value,
771
+ onClick: ta
417
772
  }, {
418
773
  default: z(() => [
419
- X("应用到 " + B(h.value.length) + " 行", 1)
774
+ V("应用到 " + O(b.value.length) + " 行", 1)
420
775
  ]),
421
776
  _: 1
422
777
  }, 8, ["disabled"])
423
- ])) : k("", !0),
424
- j.value ? (r(), le(R, {
778
+ ])) : h("", !0),
779
+ j.value ? (s(), D(T, {
425
780
  key: 2,
426
781
  variant: "ghost",
427
782
  size: "sm",
428
783
  type: "button",
429
- onClick: l[4] || (l[4] = (e) => O.value = {})
784
+ onClick: a[4] || (a[4] = (t) => J({ filters: {}, page: 1 }))
430
785
  }, {
431
- default: z(() => [...l[14] || (l[14] = [
432
- X("清空筛选", -1)
786
+ default: z(() => [...a[16] || (a[16] = [
787
+ V("清空筛选", -1)
433
788
  ])]),
434
789
  _: 1
435
- })) : k("", !0),
436
- m("span", Wt, B(u.serverMode ? u.totalRows ?? u.rows.length : q.value.length) + " 条记录 · 已选 " + B(h.value.length), 1),
437
- m("div", {
790
+ })) : h("", !0),
791
+ y("span", Wa, O(We.value) + " 条记录 · 已选 " + O(b.value.length), 1),
792
+ y("div", {
438
793
  class: "hys-ui-pf-grid-menu",
439
794
  ref_key: "menuRef",
440
- ref: De
795
+ ref: je
441
796
  }, [
442
- p(R, {
797
+ g(T, {
443
798
  variant: "ghost",
444
799
  size: "sm",
445
800
  type: "button",
446
- onClick: l[5] || (l[5] = (e) => Z.value = !Z.value),
447
- "aria-expanded": Z.value,
801
+ onClick: a[5] || (a[5] = (t) => I.value = !I.value),
802
+ "aria-expanded": I.value,
448
803
  "aria-label": "配置显示列"
449
804
  }, {
450
805
  default: z(() => [
451
- p(K(Tt), {
806
+ g(m(Ea), {
452
807
  size: 16,
453
808
  "aria-hidden": "true"
454
809
  }),
455
- l[15] || (l[15] = X(" 列设置", -1))
810
+ a[17] || (a[17] = V(" 列设置", -1))
456
811
  ]),
457
812
  _: 1
458
813
  }, 8, ["aria-expanded"]),
459
- Z.value ? (r(), d("div", Xt, [
460
- l[17] || (l[17] = m("strong", null, "显示列与排序", -1)),
461
- p(Nt, {
462
- class: "hys-ui-pf-grid-settings-list",
463
- "model-value": nt.value,
464
- "onUpdate:modelValue": l[6] || (l[6] = (e) => V.value = e.map((a) => a.id))
465
- }, {
466
- item: z(({ item: e }) => {
467
- var a;
468
- return [
469
- p(Ee, {
470
- "model-value": !w.value.includes(e.id),
471
- label: e.label,
472
- disabled: ((a = u.columns.find((n) => n.key === e.id)) == null ? void 0 : a.hideable) === !1 || !w.value.includes(e.id) && E.value.length === 1,
473
- "onUpdate:modelValue": (n) => wt(u.columns.find((s) => s.key === e.id))
474
- }, null, 8, ["model-value", "label", "disabled", "onUpdate:modelValue"])
475
- ];
476
- }),
477
- _: 1
478
- }, 8, ["model-value"]),
479
- p(R, {
480
- variant: "ghost",
481
- size: "sm",
482
- type: "button",
483
- onClick: We
484
- }, {
485
- default: z(() => [...l[16] || (l[16] = [
486
- X("恢复默认列", -1)
487
- ])]),
488
- _: 1
489
- })
490
- ])) : k("", !0)
814
+ g(m(Da), {
815
+ "popup-transition": i.popupTransition,
816
+ "popup-transition-duration": i.popupTransitionDuration,
817
+ onInactive: a[7] || (a[7] = (t) => I.value = !1)
818
+ }, {
819
+ default: z(() => [
820
+ I.value ? (s(), u("div", Ja, [
821
+ a[19] || (a[19] = y("strong", null, "显示列与排序", -1)),
822
+ g(Ba, {
823
+ class: "hys-ui-pf-grid-settings-list",
824
+ "model-value": ra.value,
825
+ "onUpdate:modelValue": a[6] || (a[6] = (t) => E.value = t.map((l) => l.id))
826
+ }, {
827
+ item: z(({ item: t }) => {
828
+ var l;
829
+ return [
830
+ g(rt, {
831
+ "model-value": !C.value.includes(t.id),
832
+ label: t.label,
833
+ disabled: ((l = v.columns.find((o) => o.key === t.id)) == null ? void 0 : l.hideable) === !1 || !C.value.includes(t.id) && A.value.length === 1,
834
+ "onUpdate:modelValue": (o) => ua(
835
+ v.columns.find((n) => n.key === t.id)
836
+ )
837
+ }, null, 8, ["model-value", "label", "disabled", "onUpdate:modelValue"])
838
+ ];
839
+ }),
840
+ _: 1
841
+ }, 8, ["model-value"]),
842
+ g(T, {
843
+ variant: "ghost",
844
+ size: "sm",
845
+ type: "button",
846
+ onClick: Kt
847
+ }, {
848
+ default: z(() => [...a[18] || (a[18] = [
849
+ V("恢复默认列", -1)
850
+ ])]),
851
+ _: 1
852
+ })
853
+ ])) : h("", !0)
854
+ ]),
855
+ _: 1
856
+ }, 8, ["popup-transition", "popup-transition-duration"])
491
857
  ], 512),
492
- p(R, {
858
+ g(T, {
493
859
  variant: "ghost",
494
860
  size: "sm",
495
861
  type: "button",
496
- onClick: Dt
862
+ onClick: ba
497
863
  }, {
498
- default: z(() => [...l[18] || (l[18] = [
499
- X("导出 CSV", -1)
864
+ default: z(() => [...a[20] || (a[20] = [
865
+ V("导出 CSV", -1)
500
866
  ])]),
501
867
  _: 1
502
868
  })
503
869
  ]),
504
- m("div", {
870
+ y("div", {
871
+ ref_key: "scrollRef",
872
+ ref: ge,
505
873
  class: "hys-ui-pf-grid-scroll",
506
- onDragleave: zt
874
+ style: $({ maxHeight: wa.value }),
875
+ tabindex: "0",
876
+ role: "region",
877
+ "aria-label": "表格滚动区域",
878
+ onDragleave: ga
507
879
  }, [
508
- m("table", {
509
- class: fe({ "hys-ui-pf-grid-sticky-head": u.stickyHeader }),
510
- style: G({ minWidth: ot.value + "px" })
880
+ y("table", {
881
+ class: ve({ "hys-ui-pf-grid-sticky-head": v.stickyHeader }),
882
+ style: $({ minWidth: da.value + "px" })
511
883
  }, [
512
- m("colgroup", null, [
513
- u.selectable ? (r(), d("col", Gt)) : k("", !0),
514
- (r(!0), d($, null, ye(L.value, (e) => (r(), d("col", {
515
- key: e.key,
516
- style: G({ width: (g.value[e.key] || e.width || 160) + "px" })
884
+ y("colgroup", null, [
885
+ v.selectable ? (s(), u("col", Xa)) : h("", !0),
886
+ (s(!0), u(N, null, ye(G.value, (t) => (s(), u("col", {
887
+ key: t.key,
888
+ style: $({ width: B(t) + "px" })
517
889
  }, null, 4))), 128))
518
890
  ]),
519
- m("thead", null, [
520
- m("tr", null, [
521
- u.selectable ? (r(), d("th", Jt, [
522
- p(Ee, {
891
+ y("thead", null, [
892
+ y("tr", null, [
893
+ v.selectable ? (s(), u("th", Ga, [
894
+ v.selectionType !== "radio" ? (s(), D(rt, {
895
+ key: 0,
523
896
  "aria-label": "选择当前页全部行",
524
- "model-value": Ne.value,
525
- indeterminate: mt.value && !Ne.value,
526
- "onUpdate:modelValue": gt
527
- }, null, 8, ["model-value", "indeterminate"])
528
- ])) : k("", !0),
529
- (r(!0), d($, null, ye(L.value, (e) => {
530
- var a, n, s, i, y, f, te;
531
- return r(), d("th", {
532
- key: e.key,
897
+ "model-value": kt.value,
898
+ indeterminate: oa.value && !kt.value,
899
+ disabled: !Se.value.length || Fe.value || !!m(Ve),
900
+ "onUpdate:modelValue": ia
901
+ }, null, 8, ["model-value", "indeterminate", "disabled"])) : (s(), u("span", Ya, "选择"))
902
+ ])) : h("", !0),
903
+ (s(!0), u(N, null, ye(G.value, (t) => {
904
+ var l, o, n, r, f, k, _;
905
+ return s(), u("th", {
906
+ key: t.key,
533
907
  scope: "col",
534
- "data-column-key": e.key,
535
- class: fe({ "hys-ui-is-column-dragging": ue.value === e.key }),
536
- "data-drop-position": ((a = I.value) == null ? void 0 : a.key) === e.key ? I.value.position : void 0,
537
- draggable: e.reorderable !== !1,
538
- onDragstart: (c) => xt(c, e),
539
- onDragend: ee,
540
- onDragover: (c) => St(c, e),
541
- onDrop: (c) => Vt(c, e),
542
- "aria-sort": ((n = x.value.find((c) => c.key === e.key)) == null ? void 0 : n.direction) === "asc" ? "ascending" : ((s = x.value.find((c) => c.key === e.key)) == null ? void 0 : s.direction) === "desc" ? "descending" : "none",
543
- style: G({ ...be(e, !0), textAlign: e.align || "left" })
908
+ "data-column-key": t.key,
909
+ class: ve({ "hys-ui-is-column-dragging": de.value === t.key }),
910
+ "data-drop-position": ((l = Z.value) == null ? void 0 : l.key) === t.key ? Z.value.position : void 0,
911
+ draggable: t.reorderable !== !1,
912
+ onDragstart: (d) => pa(d, t),
913
+ onDragend: fe,
914
+ onDragover: (d) => ma(d, t),
915
+ onDrop: (d) => ka(d, t),
916
+ "aria-sort": ((o = S.value.find((d) => d.key === t.key)) == null ? void 0 : o.direction) === "asc" ? "ascending" : ((n = S.value.find((d) => d.key === t.key)) == null ? void 0 : n.direction) === "desc" ? "descending" : "none",
917
+ style: $({ ...He(t, !0), textAlign: t.align || "left" })
544
918
  }, [
545
- m("div", Yt, [
546
- m("div", Zt, [
547
- p(R, {
919
+ y("div", _a, [
920
+ y("div", el, [
921
+ g(T, {
548
922
  variant: "ghost",
549
923
  size: "sm",
550
924
  type: "button",
551
- class: fe(["hys-ui-pf-grid-sort", { "hys-ui-is-sorted": x.value.some((c) => c.key === e.key) }]),
552
- onClick: (c) => ht(e)
925
+ class: ve(["hys-ui-pf-grid-sort", {
926
+ "hys-ui-is-sorted": S.value.some(
927
+ (d) => d.key === t.key
928
+ )
929
+ }]),
930
+ onClick: (d) => Jt(t)
553
931
  }, {
554
932
  default: z(() => [
555
- m("span", _t, B(e.label), 1)
933
+ y("span", tl, O(t.label), 1)
556
934
  ]),
557
935
  _: 2
558
936
  }, 1032, ["class", "onClick"]),
559
- e.sortable !== !1 ? (r(), d("span", {
937
+ t.sortable !== !1 ? (s(), u("span", {
560
938
  key: 0,
561
939
  class: "hys-ui-pf-grid-sort-controls",
562
940
  role: "group",
563
- "aria-label": e.label + "排序"
941
+ "aria-label": t.label + "排序"
564
942
  }, [
565
- p(R, {
943
+ g(T, {
566
944
  type: "button",
567
945
  variant: "ghost",
568
946
  size: "sm",
569
- class: fe(["hys-ui-pf-grid-sort-direction", { "hys-ui-is-active": ((i = x.value.find((c) => c.key === e.key)) == null ? void 0 : i.direction) === "asc" }]),
570
- "aria-label": e.label + "升序",
571
- "aria-pressed": ((y = x.value.find((c) => c.key === e.key)) == null ? void 0 : y.direction) === "asc",
572
- onClick: A((c) => Pe(e, "asc"), ["stop"])
947
+ class: ve(["hys-ui-pf-grid-sort-direction", {
948
+ "hys-ui-is-active": ((r = S.value.find((d) => d.key === t.key)) == null ? void 0 : r.direction) === "asc"
949
+ }]),
950
+ "aria-label": t.label + "升序",
951
+ "aria-pressed": ((f = S.value.find((d) => d.key === t.key)) == null ? void 0 : f.direction) === "asc",
952
+ onClick: q((d) => pt(t, "asc"), ["stop"])
573
953
  }, {
574
954
  default: z(() => [
575
- p(K(Ut), {
955
+ g(m(Ka), {
576
956
  size: 11,
577
957
  "aria-hidden": "true"
578
958
  })
579
959
  ]),
580
960
  _: 1
581
961
  }, 8, ["class", "aria-label", "aria-pressed", "onClick"]),
582
- p(R, {
962
+ g(T, {
583
963
  type: "button",
584
964
  variant: "ghost",
585
965
  size: "sm",
586
- class: fe(["hys-ui-pf-grid-sort-direction", { "hys-ui-is-active": ((f = x.value.find((c) => c.key === e.key)) == null ? void 0 : f.direction) === "desc" }]),
587
- "aria-label": e.label + "降序",
588
- "aria-pressed": ((te = x.value.find((c) => c.key === e.key)) == null ? void 0 : te.direction) === "desc",
589
- onClick: A((c) => Pe(e, "desc"), ["stop"])
966
+ class: ve(["hys-ui-pf-grid-sort-direction", {
967
+ "hys-ui-is-active": ((k = S.value.find((d) => d.key === t.key)) == null ? void 0 : k.direction) === "desc"
968
+ }]),
969
+ "aria-label": t.label + "降序",
970
+ "aria-pressed": ((_ = S.value.find((d) => d.key === t.key)) == null ? void 0 : _.direction) === "desc",
971
+ onClick: q((d) => pt(t, "desc"), ["stop"])
590
972
  }, {
591
973
  default: z(() => [
592
- p(K(Re), {
974
+ g(m(it), {
593
975
  size: 11,
594
976
  "aria-hidden": "true"
595
977
  })
596
978
  ]),
597
979
  _: 1
598
980
  }, 8, ["class", "aria-label", "aria-pressed", "onClick"])
599
- ], 8, el)) : k("", !0)
981
+ ], 8, al)) : h("", !0)
600
982
  ]),
601
- e.filterable !== !1 ? (r(), le(R, {
983
+ t.filterable !== !1 ? (s(), D(T, {
602
984
  key: 0,
603
985
  variant: "ghost",
604
986
  size: "sm",
605
987
  type: "button",
606
- class: fe(["hys-ui-pf-grid-filter", { "hys-ui-is-filtered": !!O.value[e.key], "hys-ui-is-filtering": j.value && re.value === e.key }]),
607
- "aria-label": "筛选" + e.label,
988
+ class: ve(["hys-ui-pf-grid-filter", {
989
+ "hys-ui-is-filtered": !!ct(t.key),
990
+ "hys-ui-is-filtering": j.value && ae.value === t.key
991
+ }]),
992
+ "aria-label": "筛选" + t.label,
608
993
  "aria-expanded": j.value,
609
- "aria-controls": K(Be),
610
- title: j.value && re.value === e.key ? "再次点击收起筛选(Esc)" : "筛选" + e.label,
611
- onClick: (c) => at(e)
994
+ "aria-controls": m(ut),
995
+ title: j.value && ae.value === t.key ? "再次点击收起筛选(Esc)" : "筛选" + t.label,
996
+ onClick: (d) => fa(t)
612
997
  }, {
613
998
  default: z(() => [
614
- p(K($t), {
999
+ g(m(Aa), {
615
1000
  size: 13,
616
1001
  "aria-hidden": "true"
617
1002
  })
618
1003
  ]),
619
1004
  _: 1
620
- }, 8, ["aria-label", "aria-expanded", "aria-controls", "title", "class", "onClick"])) : k("", !0),
621
- e.resizable !== !1 ? (r(), d("span", {
1005
+ }, 8, ["aria-label", "aria-expanded", "aria-controls", "title", "class", "onClick"])) : h("", !0),
1006
+ t.resizable !== !1 ? (s(), u("span", {
622
1007
  key: 1,
623
1008
  class: "hys-ui-pf-grid-resize",
624
1009
  role: "separator",
625
1010
  tabindex: "0",
626
- "aria-label": "调整" + e.label + "列宽",
627
- onPointerdown: (c) => Ct(c, e),
628
- onKeydown: [
629
- pe(A((c) => g.value = { ...g.value, [e.key]: Math.max(e.minWidth || 80, (g.value[e.key] || e.width || 160) - 10) }, ["prevent"]), ["left"]),
630
- pe(A((c) => g.value = { ...g.value, [e.key]: Math.min(e.maxWidth || 800, (g.value[e.key] || e.width || 160) + 10) }, ["prevent"]), ["right"])
631
- ]
632
- }, null, 40, tl)) : k("", !0)
1011
+ "aria-label": "调整" + t.label + "列宽",
1012
+ onPointerdown: (d) => va(d, t),
1013
+ "aria-orientation": "vertical",
1014
+ "aria-valuemin": Math.min(Ne(t), B(t)),
1015
+ "aria-valuemax": Math.max(tt(t), B(t)),
1016
+ "aria-valuenow": B(t),
1017
+ onKeydown: (d) => ya(d, t)
1018
+ }, null, 40, ll)) : h("", !0)
633
1019
  ])
634
- ], 46, Qt);
1020
+ ], 46, Za);
635
1021
  }), 128))
636
1022
  ]),
637
- j.value ? (r(), d("tr", {
1023
+ j.value ? (s(), u("tr", {
638
1024
  key: 0,
639
1025
  class: "hys-ui-pf-grid-filter-row",
640
- id: K(Be),
641
- onKeydown: l[7] || (l[7] = pe(A((e) => Fe(), ["stop", "prevent"]), ["esc"])),
1026
+ id: m(ut),
1027
+ onKeydown: a[8] || (a[8] = nt(q((t) => wt(), ["stop", "prevent"]), ["esc"])),
642
1028
  "aria-label": "列筛选"
643
1029
  }, [
644
- u.selectable ? (r(), d("td", al)) : k("", !0),
645
- (r(!0), d($, null, ye(L.value, (e) => (r(), d("td", {
646
- key: e.key,
647
- "data-filter-key": e.key,
648
- "data-column-key": e.key,
649
- style: G(be(e))
1030
+ v.selectable ? (s(), u("td", nl)) : h("", !0),
1031
+ (s(!0), u(N, null, ye(G.value, (t) => (s(), u("td", {
1032
+ key: t.key,
1033
+ "data-filter-key": t.key,
1034
+ "data-column-key": t.key,
1035
+ style: $(He(t))
650
1036
  }, [
651
- e.filterable !== !1 ? (r(), le(Ve, {
1037
+ t.filterable !== !1 ? (s(), D(Ie, {
652
1038
  key: 0,
653
- modelValue: O.value[e.key],
654
- "onUpdate:modelValue": (a) => O.value[e.key] = a,
655
- onFocus: (a) => re.value = e.key,
656
- "aria-label": "过滤" + e.label,
1039
+ "model-value": ct(t.key),
1040
+ "onUpdate:modelValue": (l) => Pt(t.key, l),
1041
+ onFocus: (l) => ae.value = t.key,
1042
+ "aria-label": "过滤" + t.label,
657
1043
  placeholder: "筛选…",
658
1044
  clearable: ""
659
- }, null, 8, ["modelValue", "onUpdate:modelValue", "onFocus", "aria-label"])) : k("", !0)
660
- ], 12, nl))), 128))
661
- ], 40, ll)) : k("", !0)
1045
+ }, null, 8, ["model-value", "onUpdate:modelValue", "onFocus", "aria-label"])) : h("", !0)
1046
+ ], 12, il))), 128))
1047
+ ], 40, ol)) : h("", !0)
662
1048
  ]),
663
- m("tbody", null, [
664
- u.loading ? (r(), d("tr", ol, [
665
- m("td", {
666
- colspan: E.value.length + (u.selectable ? 1 : 0),
1049
+ y("tbody", null, [
1050
+ Fe.value ? (s(), u("tr", sl, [
1051
+ y("td", {
1052
+ colspan: Math.max(1, A.value.length + Number(v.selectable)),
667
1053
  class: "hys-ui-pf-grid-empty"
668
- }, "正在加载…", 8, rl)
669
- ])) : (r(), d($, { key: 1 }, [
670
- (r(!0), d($, null, ye(ut.value, (e) => (r(), d($, {
671
- key: e.key
672
1054
  }, [
673
- e.kind === "group" ? (r(), d("tr", sl, [
674
- m("td", {
675
- colspan: E.value.length + (u.selectable ? 1 : 0)
1055
+ y("div", ul, [
1056
+ $e(e.$slots, "loading", {}, () => [
1057
+ a[21] || (a[21] = V("正在加载…", -1))
1058
+ ], !0)
1059
+ ])
1060
+ ], 8, rl)
1061
+ ])) : m(Ve) ? (s(), u("tr", dl, [
1062
+ y("td", {
1063
+ colspan: Math.max(1, A.value.length + Number(v.selectable)),
1064
+ class: "hys-ui-pf-grid-empty"
1065
+ }, [
1066
+ $e(e.$slots, "error", {
1067
+ error: m(Ve).error,
1068
+ retry: Ge
1069
+ }, () => [
1070
+ a[23] || (a[23] = y("span", { role: "status" }, "加载失败", -1)),
1071
+ g(T, {
1072
+ size: "sm",
1073
+ variant: "ghost",
1074
+ onClick: Ge
1075
+ }, {
1076
+ default: z(() => [...a[22] || (a[22] = [
1077
+ V("重试", -1)
1078
+ ])]),
1079
+ _: 1
1080
+ })
1081
+ ], !0)
1082
+ ], 8, cl)
1083
+ ])) : (s(), u(N, { key: 2 }, [
1084
+ (s(!0), u(N, null, ye(Yt.value, (t) => (s(), u(N, {
1085
+ key: t.key
1086
+ }, [
1087
+ t.kind === "group" ? (s(), u("tr", fl, [
1088
+ y("td", {
1089
+ colspan: A.value.length + Number(v.selectable)
676
1090
  }, [
677
- p(R, {
1091
+ g(T, {
678
1092
  variant: "ghost",
679
1093
  size: "sm",
680
- type: "button",
681
- "aria-expanded": !P.value.includes(e.key),
682
- onClick: (a) => yt(e.key)
1094
+ "aria-expanded": !se.value.has(t.key),
1095
+ onClick: (l) => _t(t.key)
683
1096
  }, {
684
1097
  default: z(() => {
685
- var a;
1098
+ var l;
686
1099
  return [
687
- (r(), le(Xe(P.value.includes(e.key) ? K(Ge) : K(Re)), {
1100
+ (s(), D(Dt(
1101
+ se.value.has(t.key) ? m(Ft) : m(it)
1102
+ ), {
688
1103
  size: 15,
689
1104
  "aria-hidden": "true"
690
1105
  })),
691
- X(" " + B((a = $e.value.find((n) => n.key === J.value)) == null ? void 0 : a.label) + ":" + B(e.label) + " ", 1),
692
- m("span", null, "(" + B(e.count) + ")", 1)
1106
+ V(" " + O((l = F.value.get(he.value)) == null ? void 0 : l.label) + ":" + O(t.label) + " ", 1),
1107
+ y("span", null, "(" + O(t.count) + ")", 1)
693
1108
  ];
694
1109
  }),
695
1110
  _: 2
696
1111
  }, 1032, ["aria-expanded", "onClick"])
697
- ], 8, il)
698
- ])) : e.row ? (r(), d("tr", {
1112
+ ], 8, vl)
1113
+ ])) : (s(), u("tr", {
699
1114
  key: 1,
700
- onClick: (a) => M("rowClick", e.row)
1115
+ "data-grid-row": m(st)(t.item.id),
1116
+ onClick: (l) => x("rowClick", t.item.row)
701
1117
  }, [
702
- u.selectable ? (r(), d("td", dl, [
703
- p(Ee, {
704
- "aria-label": "选择第" + ((e.index ?? 0) + 1) + "行",
705
- "model-value": h.value.includes(_(e.row, e.index ?? 0)),
706
- onClick: l[8] || (l[8] = A(() => {
1118
+ v.selectable ? (s(), u("td", pl, [
1119
+ v.selectionType === "radio" ? (s(), D(Ha, {
1120
+ key: 0,
1121
+ name: m(Bt),
1122
+ "aria-label": "选择第" + (t.pageIndex + 1) + "行",
1123
+ "model-value": b.value[0] ?? null,
1124
+ value: t.item.id,
1125
+ disabled: !Oe(t.item),
1126
+ onClick: a[9] || (a[9] = q(() => {
1127
+ }, ["stop"])),
1128
+ "onUpdate:modelValue": (l) => et(t.item.id, !0)
1129
+ }, null, 8, ["name", "aria-label", "model-value", "value", "disabled", "onUpdate:modelValue"])) : (s(), D(rt, {
1130
+ key: 1,
1131
+ "aria-label": "选择第" + (t.pageIndex + 1) + "行",
1132
+ "model-value": Le.value.has(t.item.id),
1133
+ disabled: !Oe(t.item),
1134
+ onClick: a[10] || (a[10] = q(() => {
707
1135
  }, ["stop"])),
708
- "onUpdate:modelValue": (a) => pt(_(e.row, e.index ?? 0), a)
709
- }, null, 8, ["aria-label", "model-value", "onUpdate:modelValue"])
710
- ])) : k("", !0),
711
- (r(!0), d($, null, ye(L.value, (a) => {
712
- var n, s, i, y;
713
- return r(), d("td", {
714
- key: a.key,
715
- "data-column-key": a.key,
716
- style: G({ ...be(a), textAlign: a.align || "left" }),
717
- title: ie(e.row, a.key)
1136
+ "onUpdate:modelValue": (l) => et(t.item.id, l)
1137
+ }, null, 8, ["aria-label", "model-value", "disabled", "onUpdate:modelValue"]))
1138
+ ])) : h("", !0),
1139
+ (s(!0), u(N, null, ye(G.value, (l, o) => {
1140
+ var n, r;
1141
+ return s(), u("td", {
1142
+ key: l.key,
1143
+ "data-column-key": l.key,
1144
+ style: $({
1145
+ ...He(l),
1146
+ textAlign: l.align || "left"
1147
+ }),
1148
+ title: re(t.item.row, l)
718
1149
  }, [
719
- ((n = Y.value) == null ? void 0 : n.id) === _(e.row, e.index ?? 0) && ((s = Y.value) == null ? void 0 : s.key) === a.key ? (r(), le(Ve, {
1150
+ ((n = W.value) == null ? void 0 : n.id) === t.item.id && ((r = W.value) == null ? void 0 : r.key) === l.key ? (s(), D(Ie, {
720
1151
  key: 0,
721
- modelValue: he.value,
722
- "onUpdate:modelValue": l[9] || (l[9] = (f) => he.value = f),
1152
+ modelValue: Ke.value,
1153
+ "onUpdate:modelValue": a[11] || (a[11] = (f) => Ke.value = f),
723
1154
  class: "hys-ui-pf-grid-edit",
724
- "aria-label": "编辑" + a.label,
725
- onClick: l[10] || (l[10] = A(() => {
1155
+ "aria-label": "编辑" + l.label,
1156
+ onClick: a[12] || (a[12] = q(() => {
726
1157
  }, ["stop"])),
727
1158
  onKeydown: [
728
- pe(A((f) => He(e.row, a), ["stop"]), ["enter"]),
729
- l[11] || (l[11] = pe(A((f) => Y.value = null, ["stop"]), ["esc"]))
1159
+ nt(q((f) => gt(t.item, l), ["stop"]), ["enter"]),
1160
+ a[13] || (a[13] = nt(q((f) => W.value = null, ["stop"]), ["esc"]))
730
1161
  ],
731
- onFocusout: (f) => He(e.row, a)
732
- }, null, 8, ["modelValue", "aria-label", "onKeydown", "onFocusout"])) : (r(), d($, { key: 1 }, [
733
- u.treeMode && a.key === ((i = L.value[0]) == null ? void 0 : i.key) && e.row.__pfHasChildren ? (r(), le(R, {
734
- key: 0,
735
- variant: "ghost",
736
- size: "sm",
737
- type: "button",
738
- class: "hys-ui-pf-grid-tree-toggle",
739
- style: G({ marginLeft: Number(e.row.__pfDepth || 0) * 16 + "px" }),
740
- "aria-expanded": Q.value.includes(e.row[u.rowKey]),
741
- onClick: A((f) => dt(e.row[u.rowKey]), ["stop"])
742
- }, {
743
- default: z(() => [
744
- (r(), le(Xe(Q.value.includes(e.row[u.rowKey]) ? K(Re) : K(Ge)), {
745
- size: 15,
746
- "aria-hidden": "true"
747
- }))
748
- ]),
749
- _: 2
750
- }, 1032, ["style", "aria-expanded", "onClick"])) : u.treeMode && a.key === ((y = L.value[0]) == null ? void 0 : y.key) ? (r(), d("span", {
751
- key: 1,
752
- style: G({ display: "inline-block", width: Number(e.row.__pfDepth || 0) * 16 + 20 + "px" })
753
- }, null, 4)) : k("", !0),
754
- m("span", {
755
- onDblclick: A((f) => ct(e.row, a), ["stop"])
1162
+ onFocusout: (f) => gt(t.item, l)
1163
+ }, null, 8, ["modelValue", "aria-label", "onKeydown", "onFocusout"])) : (s(), u(N, { key: 1 }, [
1164
+ v.treeMode && o === 0 ? (s(), u(N, { key: 0 }, [
1165
+ t.item.hasChildren ? (s(), D(T, {
1166
+ key: 0,
1167
+ variant: "ghost",
1168
+ size: "sm",
1169
+ class: "hys-ui-pf-grid-tree-toggle",
1170
+ style: $({ marginLeft: t.item.depth * 16 + "px" }),
1171
+ "aria-expanded": ie.value.has(t.item.id),
1172
+ "aria-label": ie.value.has(t.item.id) ? "折叠子行" : "展开子行",
1173
+ onClick: q((f) => Zt(t.item.id), ["stop"])
1174
+ }, {
1175
+ default: z(() => [
1176
+ (s(), D(Dt(
1177
+ ie.value.has(t.item.id) ? m(it) : m(Ft)
1178
+ ), {
1179
+ size: 15,
1180
+ "aria-hidden": "true"
1181
+ }))
1182
+ ]),
1183
+ _: 2
1184
+ }, 1032, ["style", "aria-expanded", "aria-label", "onClick"])) : (s(), u("span", {
1185
+ key: 1,
1186
+ style: $({
1187
+ display: "inline-block",
1188
+ width: t.item.depth * 16 + 20 + "px"
1189
+ })
1190
+ }, null, 4))
1191
+ ], 64)) : h("", !0),
1192
+ y("span", {
1193
+ onDblclick: q((f) => ea(t.item, l), ["stop"])
756
1194
  }, [
757
- Bt(t.$slots, a.key, {
758
- row: e.row,
759
- value: e.row[a.key]
1195
+ $e(e.$slots, l.key, {
1196
+ row: t.item.row,
1197
+ value: m(me)(t.item.row, l),
1198
+ index: t.item.index
760
1199
  }, () => [
761
- X(B(ie(e.row, a.key)), 1)
1200
+ V(O(re(t.item.row, l)), 1)
762
1201
  ], !0)
763
- ], 40, fl)
1202
+ ], 40, gl)
764
1203
  ], 64))
765
- ], 12, cl);
1204
+ ], 12, ml);
766
1205
  }), 128))
767
- ], 8, ul)) : k("", !0)
1206
+ ], 8, yl))
768
1207
  ], 64))), 128)),
769
- we.value.length ? k("", !0) : (r(), d("tr", yl, [
770
- m("td", {
771
- colspan: E.value.length + (u.selectable ? 1 : 0),
1208
+ Xe.value.length ? h("", !0) : (s(), u("tr", hl, [
1209
+ y("td", {
1210
+ colspan: Math.max(1, A.value.length + Number(v.selectable)),
772
1211
  class: "hys-ui-pf-grid-empty"
773
- }, B(u.emptyText), 9, vl)
1212
+ }, [
1213
+ $e(e.$slots, "empty", {
1214
+ query: we()
1215
+ }, () => [
1216
+ V(O(v.emptyText), 1)
1217
+ ], !0)
1218
+ ], 8, kl)
774
1219
  ]))
775
1220
  ], 64))
776
1221
  ]),
777
- u.showSummary && !u.loading && q.value.length ? (r(), d("tfoot", ml, [
778
- m("tr", pl, [
779
- u.selectable ? (r(), d("td", gl, "合计")) : k("", !0),
780
- (r(!0), d($, null, ye(L.value, (e, a) => (r(), d("td", {
781
- key: e.key,
782
- "data-column-key": e.key,
783
- style: G({ ...be(e), textAlign: e.align || "left" })
784
- }, B(e.summary ? vt(e) : !u.selectable && a === 0 ? "合计" : ""), 13, hl))), 128))
1222
+ v.showSummary && !Fe.value && !m(Ve) && be.value.length ? (s(), u("tfoot", bl, [
1223
+ y("tr", wl, [
1224
+ v.selectable ? (s(), u("td", Sl, "合计")) : h("", !0),
1225
+ (s(!0), u(N, null, ye(G.value, (t, l) => (s(), u("td", {
1226
+ key: t.key,
1227
+ "data-column-key": t.key,
1228
+ style: $({
1229
+ ...He(t),
1230
+ textAlign: t.align || "left"
1231
+ })
1232
+ }, O(t.summary || v.summaryMethod ? la(t) : !v.selectable && l === 0 ? "合计" : ""), 13, Cl))), 128))
785
1233
  ])
786
- ])) : k("", !0)
1234
+ ])) : h("", !0)
787
1235
  ], 6)
788
- ], 32),
789
- m("footer", kl, [
790
- p(Ot, {
791
- page: C.value,
792
- total: u.serverMode ? u.totalRows ?? u.rows.length : q.value.length,
793
- "page-size": se.value,
794
- "show-size-changer": !0,
795
- "show-quick-jumper": !0,
796
- disabled: u.loading,
1236
+ ], 36),
1237
+ y("footer", xl, [
1238
+ !v.loadRows || m(De) !== void 0 ? (s(), D(Ua, {
1239
+ key: 0,
1240
+ page: ue.value,
1241
+ total: We.value,
1242
+ "page-size": Q.value,
1243
+ "show-size-changer": "",
1244
+ "show-quick-jumper": "",
1245
+ disabled: v.loading,
797
1246
  "page-size-options": [10, 12, 20, 50, 100],
798
- onChange: kt,
799
- onPageSizeChange: bt
800
- }, null, 8, ["page", "total", "page-size", "disabled"])
1247
+ onChange: Qt,
1248
+ "onUpdate:pageSize": Wt
1249
+ }, null, 8, ["page", "total", "page-size", "disabled"])) : h("", !0)
801
1250
  ])
802
- ], 16));
1251
+ ], 16, $a));
803
1252
  }
804
1253
  });
805
1254
  export {
806
- Rl as default
1255
+ Bl as default
807
1256
  };